Built motion from commit 9bcaf43a.|2.6.10
authorsupport <support@xcally.com>
Wed, 18 May 2022 11:07:16 +0000 (11:07 +0000)
committersupport <support@xcally.com>
Wed, 18 May 2022 11:07:16 +0000 (11:07 +0000)
1232 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/et.json
public/app/errors/500/i18n/et.json
public/app/footer/i18n/et.json
public/app/forgot/i18n/et.json
public/app/header/i18n/et.json
public/app/login/i18n/et.json
public/app/main/apps/analytics/i18n/et.json
public/app/main/apps/callysquare/i18n/et.json
public/app/main/apps/chat/i18n/et.json
public/app/main/apps/contactmanager/i18n/et.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/it.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/jscripty/i18n/et.json
public/app/main/apps/mail/i18n/et.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/openchannel/i18n/et.json
public/app/main/apps/plugins/i18n/et.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/sms/i18n/et.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/video/i18n/et.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/quick-panel/i18n/et.json
public/app/reset/i18n/et.json
public/index.html
public/scripts/app.e5cd50d7.js [moved from public/scripts/app.d44c05b7.js with 52% similarity]
public/styles/app.fabf8255.css [moved from public/styles/app.d45f5a7f.css with 97% 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 [new file with mode: 0644]
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/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/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/voiceQueueSummary.js [new file with mode: 0644]
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 [new file with mode: 0644]
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/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/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index d31f159..cba1399 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T15:15:24.358Z",
+    "time": "2022-05-18T10:59:40.945Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index a3f21ca..1f7ca4a 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T15:15:24.358Z",
+    "time": "2022-05-18T10:59:40.945Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index b061703..729f936 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
+    "SEARCH": "Otsi mida tahes",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index b218b70..eb1d0e2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Well, you broke the internet!",
-    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
-    "REPORT": "Report this problem",
-    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
-    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Nonii, oled interneti katki teinud!",
+    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
+    "REPORT": "Teata sellest probleemist",
+    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
+    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index 8a47415..ee6d003 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": "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>.",
     "ERRORS": {}
   }
 }
index be7b81a..dc70b81 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Recover your password",
-    "EMAIL_ADRESS": "Email address",
-    "SEND_RESET_LINK": "SEND RESET LINK",
-    "GO_BACK": "Go back to login",
-    "LINK_SENT": "Link Sent",
-    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Taasta oma parool",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
+    "GO_BACK": "Mine tagasi sisse logima",
+    "LINK_SENT": "Link saadetud",
+    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
+    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat"
     }
   }
 }
index f78785b..1f1d597 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
+    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
     "ERRORS": {}
   }
 }
index e371b06..4eb3084 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telephones",
-    "SELECT": "Select",
-    "CANCEL": "Cancel",
-    "TITLE": "Log in to your account",
-    "EMAIL": "Email",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "REMEMBER_ME": "Remember Me",
-    "FORGOT_PASSWORD": "Forgot Password?",
-    "LOG_IN": "LOG IN",
-    "OR": "OR",
-    "WITH_GOOGLE": "Log in with Google",
-    "WITH_FACEBOOK": "Log in with Facebook",
-    "DONT_HAVE_ACCOUNT": "No account?",
-    "CREATE_ACCOUNT": "Create an account",
+    "TELEPHONES": "Telefonid",
+    "SELECT": "Vali",
+    "CANCEL": "Tühista",
+    "TITLE": "Logi sisse oma kontole",
+    "EMAIL": "E-post",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "REMEMBER_ME": "Pea mind meeles",
+    "FORGOT_PASSWORD": "Unustasid Parooli?",
+    "LOG_IN": "LOGI SISSE",
+    "OR": "VÕI",
+    "WITH_GOOGLE": "Logi sisse Google kontoga",
+    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
+    "DONT_HAVE_ACCOUNT": "Konto puudub?",
+    "CREATE_ACCOUNT": "Loo konto",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli"
     },
-    "WITH_AD": "Logige sisse Active Directoryga"
+    "WITH_AD": "Logi sisse Active Directory kontoga"
   }
 }
index 6d01d84..8d3f3e2 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Send if empty",
-    "REPORTNAME": "Report Name",
-    "DELETE": "Delete",
-    "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrics",
-    "ID": "Id",
-    "TABLE": "Table",
-    "DESCRIPTION": "Description",
-    "SEARCH_FOR_ANYONE": "Search",
-    "METRIC": "Metric",
+    "SEND_IF_EMPTY": "Saada tühjana",
+    "REPORTNAME": "Aruande Nimi",
+    "DELETE": "Kustuta",
+    "NAME": "Nimi",
+    "ANALYTICS": "Analüüs",
+    "METRICS": "Mõõdik",
+    "ID": "ID",
+    "TABLE": "Tabel",
+    "DESCRIPTION": "Kirjeldus",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "METRIC": "Mõõdik",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "METRIC_REQUIRED": "Mandatory field",
-      "COLUMN_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "METRIC_REQUIRED": "Kohustuslik väli",
+      "COLUMN_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli"
     },
-    "NEW_METRIC": "New Metric",
-    "ADD_METRIC": "Add Metric",
-    "EDIT_METRIC": "Edit Metric",
-    "DELETE_METRIC": "Delete Metric",
-    "SAVE": "Save",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Extracted Reports",
-    "DATE_RANGE_FROM": "Date Range From",
-    "DATE_RANGE_TO": "Date Range To",
-    "GENERATED_AT": "Generated At",
-    "STATUS": "Status",
-    "OUTPUT": "Output",
-    "REPORTS": "Reports",
-    "SEARCH_FOR_FOLDER": "Search for folder",
-    "CREATED_AT": "Created At",
-    "NEW_REPORT": "New Report",
-    "ADD_REPORT": "Add Report",
-    "COPY_REPORT": "Copy Report",
-    "PREVIEW_REPORT": "Preview Report",
-    "RUN_REPORT": "Run Report",
-    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
-    "EDIT_REPORT": "Edit Report",
-    "DELETE_REPORT": "Delete Report",
-    "CREATE": "Create Folder",
-    "RENAME": "Rename Folder",
-    "REMOVE": "Remove Folder",
-    "SELECT_NODE": "Select Folder",
-    "ERROR": "Error",
-    "QUERY_ERROR": "Query Error",
-    "MESSAGE": "Message",
-    "CLOSE": "Close",
-    "FORMAT": "Format",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FIELDS": "Fields",
-    "CONDITION": "Condition",
-    "OPERATOR": "Operator",
-    "GROUP": "Group",
-    "COLUMN": "Column",
-    "VALUE": "Value",
-    "PREVIEW": "Preview",
-    "LIMITED_RESULT": "*Limited Results",
-    "NO_DATA": "No data results",
-    "CONDITIONS": "Conditions",
-    "ALIAS": "Alias",
-    "FUNCTION": "Function",
-    "GROUP_BY": "Group By",
-    "ORDER_BY": "Order By",
-    "ADD_REPORTFIELD": "Add Field",
-    "EDIT_REPORTFIELD": "Edit Field",
-    "DELETE_REPORTFIELD": "Delete Field",
-    "METRIC_NAME": "Metric",
-    "NO_METRIC_FOUND": "No metric found",
-    "NO_AVAILABLE_INFO": "No available info",
-    "CUSTOM_METRIC": "Custom Metric",
-    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
-    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NEW_METRIC": "Uus Mõõdik",
+    "ADD_METRIC": "Lisa Mõõdik",
+    "EDIT_METRIC": "Redigeeri Mõõdikut",
+    "DELETE_METRIC": "Kustuta Mõõdik",
+    "SAVE": "Salvesta",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "TYPE": "Tüüp",
+    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
+    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
+    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
+    "GENERATED_AT": "Loomisaeg",
+    "STATUS": "Staatus",
+    "OUTPUT": "Väljund",
+    "REPORTS": "Aruanded",
+    "SEARCH_FOR_FOLDER": "Otsi kausta",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_REPORT": "Uus Aruanne",
+    "ADD_REPORT": "Lisa Aruanne",
+    "COPY_REPORT": "Kopeeri Aruanne",
+    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
+    "RUN_REPORT": "Käivita Aruanne",
+    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
+    "EDIT_REPORT": "Redigeeri Aruannet",
+    "DELETE_REPORT": "Kustuta Aruanne",
+    "CREATE": "Loo Kaust",
+    "RENAME": "Nimeta Kaust ümber",
+    "REMOVE": "Eemalda Kaust",
+    "SELECT_NODE": "Vali Kaust",
+    "ERROR": "Viga",
+    "QUERY_ERROR": "Päringu Tõrge",
+    "MESSAGE": "Sõnum",
+    "CLOSE": "Sule",
+    "FORMAT": "Vorming",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FIELDS": "Väljad",
+    "CONDITION": "Tingimus",
+    "OPERATOR": "Operaator",
+    "GROUP": "Rühm",
+    "COLUMN": "Veerg",
+    "VALUE": "Väärtus",
+    "PREVIEW": "Eelvaade",
+    "LIMITED_RESULT": "*Piiratud Tulemused",
+    "NO_DATA": "Andmete tulemid puuduvad",
+    "CONDITIONS": "Tingimused",
+    "ALIAS": "Pseudonüüm",
+    "FUNCTION": "Funktsioon",
+    "GROUP_BY": "Rühmita Vastavalt",
+    "ORDER_BY": "Telli Vastavalt",
+    "ADD_REPORTFIELD": "Lisa Väli",
+    "EDIT_REPORTFIELD": "Redigeeri Välja",
+    "DELETE_REPORTFIELD": "Kustuta Väli",
+    "METRIC_NAME": "Mõõdik",
+    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "CUSTOM_METRIC": "Kohandatud Mõõdik",
+    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
+    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
+    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 8b74f11..2389db1 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
+    "ADD_ODBC": "Lisa ODBC",
+    "ADD_PROJECT": "Lisa Projekt",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "AGENTS": "Agendid",
     "AGI": "AGI",
-    "ALL_USERS": "All Users",
-    "ANSWER": "Answer",
-    "APIKEY": "ApiKey",
-    "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Secret",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Attachment Name",
-    "ATTACHMENT_PATH": "Attachment Path",
-    "ATTACHMENT_TYPE": "Attachment Type",
+    "ALL_USERS": "Kõik Kasutajad",
+    "ANSWER": "Vastus",
+    "APIKEY": "API võti",
+    "APPID": "Rakenduse ID",
+    "Rakendus": "Avaldus",
+    "APPSECRET": "Rakenduse Saladus",
+    "ARGS": "Argumendid",
+    "ATTACHMENT_NAME": "Manuse Nimi",
+    "ATTACHMENT_PATH": "Manuse Tee",
+    "ATTACHMENT_TYPE": "Manuse Tüüp",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Bot name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Voice",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
-    "AWS_TEXT_TYPE": "Text type",
-    "BACK": "Back",
+    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
+    "AWS_BOT_NAME": "Boti nimi",
+    "AWS_LEX_REGION": "Piirkond",
+    "AWS_POLLY_REGION": "Piirkond",
+    "AWS_POLLY_VOICE": "Hääl",
+    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
+    "AWS_TEXT_TYPE": "Teksti tüüp",
+    "BACK": "Tagasi",
     "BCC": "BCC",
-    "BEEP": "Beep",
+    "BEEP": "Piiks",
     "BODY": "Keha",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
+    "CALLBACK": "Tagasihelistamine",
+    "CALLBACK_PRIORITY": "Prioriteet",
     "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
+    "CC": "Koop",
+    "CHOOSE_ATTACHMENT": "Vali Manus",
+    "CLOSE": "Sule",
+    "COMMAND": "Käsk",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
+    "CONDITION": "Tingimus",
+    "CONTEXT": "Kontekst",
+    "COPY": "Koopia",
+    "COPY_PROJECT": "Kopeeri Projekt",
+    "CREATED_AT": "Loomisaeg",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Custom Application",
-    "DATABASE": "Database",
-    "DELAY": "delay [min]",
-    "DELETE": "Delete",
-    "DELETE_ODBC": "Delete ODBC",
-    "DELETE_PROJECT": "Delete Project",
-    "DELETE_SQUARERECORDING": "Delete Square Recording",
-    "DESCRIPTION": "Description",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
-    "DIALOGFLOW_LANGUAGE": "Language",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
-    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
+    "CUSTOM_APP": "Kohandatud Rakendus",
+    "DATABASE": "Andmebaas",
+    "DELAY": "viivitus [min]",
+    "DELETE": "Kustuta",
+    "DELETE_ODBC": "Kustuta ODBC",
+    "DELETE_PROJECT": "Kustuta Projekt",
+    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
+    "DESCRIPTION": "Kirjeldus",
+    "DIAL": "Helista",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DIALOGFLOW_LANGUAGE": "Keel",
+    "DIGIT": "Maks. Numbrimärke",
+    "DIGITS": "Number",
+    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
+    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
+    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Redigeeri",
+    "EDIT_ODBC": "Redigeeri ODBC",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
+    "EDIT_XML": "Redigeeri XMLi",
+    "END": "Lõpeta",
     "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
+      "DSN_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+
+    "ESCAPE_DIGITS": "Väldi numbrimärke",
     "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
+    "EXTENSION": "Laiendus",
+    "EXT_DIAL": "Väline Helistamine",
+    "FILE": "Faili nimi",
+    "FILENAME": "Faili nimi",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "FINDBY": "Otsitav",
+    "GETDIGITS": "Hangi Numbrimärgid",
+    "GETSECRETDIGITS": "Hangi Salanumbrid",
+    "GOAL": "Eesmärk",
+    "GOALNAME": "Eesmärgi Nimi",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
+    "GOOGLE_ASR_LANGUAGE": "Keel",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_TTS_LANGUAGE": "Keel",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
+    "GO_TO_PROJECTS": "Mine projektide juurde",
+    "GRAMMAR": "Grammatika",
+    "HANGUP": "Lõpeta kõne",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
+    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
+    "ID": "ID",
+    "IMPORT": "Impordi",
+    "IMPORT_XML": "Impordi XML",
+    "INTERVAL_ID": "Intervall",
+    "INTKEY": "Katkestusklahv",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
+    "ISPEECH_ASR_LANGUAGE": "Keel",
+    "ISPEECH_TTS_LANGUAGE": "Keel",
+    "KEY": "Võti",
+    "LABEL": "Sedel",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
+    "LASTNAME": "Perekonnanimi",
+    "LIST_ID": "Loend",
+    "LOGIN": "Logi sissse",
+    "LOGOUT": "Logi välja",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
+    "MACRO": "Makro",
+    "MAILBOX": "Postkast",
+    "MATH": "Matemaatika",
+    "MAXDIGIT": "Maks. numbrimärke",
+    "MENU": "Manüü",
     "METHOD": "Meetod",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
+    "MINDIGIT": "Min. numbrimärke",
+    "MODEL": "Mudel",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSünth",
-    "NAME": "Name",
+    "MRCPSYNTH": "MRCPSynth",
+    "NAME": "Nimi",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANT URL",
+    "NDASSISTANT_URL": "NDASSISTANTi URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
+    "NEW": "Uus",
+    "NEW_ODBC": "Uus ODBC ühendus",
+    "NEW_PROJECT": "Uus Projekt",
+    "NEW_VARIABLE": "Uus Muutuja",
     "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
+    "NOTES": "Märkmed",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Ühendus",
     "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
+    "OPEN": "Ava",
+    "OPEN_NEW_WINDOW": "Ava uues aknas",
+    "OPEN_PROJECT": "Ava Projekt",
+    "OPERATION": "Toiming",
+    "OPTIONS": "Suvandid",
+    "OPTS": "Suvandid",
+    "OUTPUT": "Väljund",
+    "PAGE": "Lehekülg",
     "PASSWORD": "Parool",
-    "PAUSE": "Pause",
-    "PAUSE_ID": "Pause type",
-    "PERMISSIONADD_PROJECTS": "Add Users to Project",
-    "PHONE": "Phone",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
-    "PROJECT": "Project",
-    "PROJECTS": "Projects",
-    "PROJECT_ID": "Project",
-    "QUERY": "Query",
-    "QUEUE": "Queue",
-    "QUEUE_ID": "Queue",
+    "PAUSE": "Paus",
+    "PAUSE_ID": "Pausi tüüp",
+    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
+    "PHONE": "Telefon",
+    "PLAYBACK": "Taasesita",
+    "POSITION": "Positsioon",
+    "PRIORITY": "Prioriteet",
+    "PROJECT": "Projekt",
+    "PROJECTS": "Projektid",
+    "PROJECT_ID": "Projekt",
+    "QUERY": "Päring",
+    "QUEUE": "Järjekord",
+    "QUEUE_ID": "Järjekord",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestuse formaat",
+    "RESPONSE": "Reaktsiooniaja Aegumine",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Retries",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECTED_USERS": "Selected Users",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "SENDFAX": "Send Fax",
-    "SENDMAIL": "Send Email",
-    "SENDSMS": "Send SMS",
+    "RETRY": "Korduskatsed",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "SAVE": "Salvesta",
+    "SAYDIGITS": "Ütle Numbrimärgid",
+    "SAYNUMBER": "Ütle Number",
+    "SAYPHONETIC": "Ütle Häälikud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "SENDFAX": "Saada Faks",
+    "SENDMAIL": "Saada E-kiri",
+    "SENDSMS": "Saada Sõnum",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
+    "SET": "Hulk",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
+    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_TEXT": "Tekst",
+    "SPEED": "Kiirus",
+    "SQUARERECORDINGS": "Salvestused",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
+    "SUBJECT": "Subjekt",
+    "SUBPROJECT": "Alamprojekt",
+    "SYSTEM": "Süsteem",
+    "TELEPHONES": "Telefonid",
+    "TEMPLATE_ID": "Mall",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
+    "TEXT": "Tekst",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
+    "TIMEOUT": "Aegumine",
+    "TO": "Kellele",
+    "TRUNK_NAME": "Magistraal",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
+    "UNIQUEID": "Unikaalne ID",
+    "UNPAUSE": "Lõpeta Paus",
+    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
+    "UPDATE_INFO": "Uuenda Infot",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "USERS": "Kasutajad",
+    "VARIABLE_ID": "Muutuja",
+    "VARIABLE_VALUE": "Väärtus",
+    "VOICEMAIL": "Kõnepost",
+    "VSWITCH": "Muutuja Vahetus",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "DialoogivoogV2",
+    "DIALOGFLOWV2": "Dialoogivoog V2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 2f3b48e..5dc84d3 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
+    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot Name",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "SYSTEMAVATAR": "System Avatar",
-    "SYSTEMALIAS": "System Alias",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "LANGUAGE": "Language",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow",
-    "DIALOGFLOW": "Dialogflow",
-    "BACKGROUNDCOLOR": "Background Color",
-    "MESSAGEFONTSIZE": "Message Font Size",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "CUSTOMERALIAS": "Customer Alias",
-    "SNIPPETSWIPEOUT": "Snippet swipe out",
-    "CUSTOMERAVATAR": "Customer Avatar",
-    "SHOWCUSTOMERAVATAR": "Show customer avatar",
-    "DEFAULTTITLE": "Default Title",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ALTERNATE": "Alternate",
-    "CENTERED": "Centered",
-    "POSITION": "Position",
-    "VERTICALPOSITION": "Vertical position",
-    "ALIGNMENT": "Alignment",
-    "VERTICALALIGNMENT": "Vertical alignment",
-    "BOTTOM_RIGHT": "Bottom right",
-    "RIGHT": "Right",
-    "LEFT": "Left",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "AGENTIDENTIFIER": "Identifier",
-    "WEBSITEALIAS": "Website Alias",
-    "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Fullname",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "HIDEWHENOFFLINE": "Hide",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "TEXTCOLOR": "Text Color",
-    "FONTSIZE": "Font Size",
-    "WEBSCRIPT": "Web Script",
-    "CANNEDANSWERS": "Canned Answers",
-    "CHATCANNEDANSWERS": "Canned Answers",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_CHATCANNEDANSWER": "New Canned Answer",
-    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit",
-    "DELETE_CHATCANNEDANSWER": "Delete",
-    "OFFLINEMESSAGESUBJECT": "Message subject",
-    "OFFLINEMESSAGEBODY": "Message body",
-    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
-    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
-    "PLACEHOLDERMESSAGE": "Message placeholder",
-    "NOTETITLE": "Note's title",
-    "CLOSINGQUESTION": "Closing question",
-    "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Show personal agent avatar",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "WRITING": "Writing",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
-    "FAX": "Fax",
-    "PAUSE": "Pause",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "UNPAUSE": "End Pause",
-    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NEW_CHATDISPOSITION": "New Chat Disposition",
-    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
-    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
-    "OFFLINESTATUS": "Offline Status",
-    "NAME": "Name",
-    "CHATQUEUES": "Chat Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "KEY": "Key",
+    "ACCESSKEYID": "Pääsuvõtme ID",
+    "SECRETACCESSKEY": "Salajane Pääsuvõti",
+    "LEXREGION": "Piirkond",
+    "BOTNAME": "Boti Nimi",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
+    "TRANSFER": "Edasta",
+    "QUEUETRANSFER": "Ooteaja Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
+    "SYSTEMAVATAR": "Süsteemi Avatar",
+    "SYSTEMALIAS": "Süsteemi Alias",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "LANGUAGE": "Keel",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
+    "DIALOGFLOW": "Dialoogivoog",
+    "BACKGROUNDCOLOR": "Taustavärv",
+    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "CUSTOMERALIAS": "Kliendi Alias",
+    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
+    "CUSTOMERAVATAR": "Kleindi Avatar",
+    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
+    "DEFAULTTITLE": "Vaiketiitel",
+    "MESSAGESALIGNMENT": "Sõnumite Joondus",
+    "ALTERNATE": "Alternatiiv",
+    "CENTERED": "Keskele",
+    "POSITION": "Paigutus",
+    "VERTICALPOSITION": "Vertikaalne Paigutus",
+    "ALIGNMENT": "Joondus",
+    "VERTICALALIGNMENT": "Vertikaalne Joondus",
+    "BOTTOM_RIGHT": "All paremal",
+    "RIGHT": "Paremal",
+    "LEFT": "Vasakul",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "AGENTIDENTIFIER": "Identifikaator",
+    "WEBSITEALIAS": "Veebileehe alias",
+    "AGENTALIAS": "Agendi Alias",
+    "AGENTFULLNAME": "Agendi Täisnimi",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "HIDEWHENOFFLINE": "Peida",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "TEXTCOLOR": "Teksti Värv",
+    "FONTSIZE": "Fondi Suurus",
+    "WEBSCRIPT": "Veebi skript",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "CHATCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
+    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri",
+    "DELETE_CHATCANNEDANSWER": "Kustuta",
+    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
+    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
+    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
+    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
+    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
+    "NOTETITLE": "Märkme pealkiri",
+    "CLOSINGQUESTION": "Lõpetav küsimus",
+    "TAGS": "Sildid",
+    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
+    "AGENTAVATAR": "Agendi Avatar",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "WRITING": "Ootel",
+    "CHAT": "Vestlus",
+    "MAIL": "E-kiri",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Avatud kanal",
+    "FAX": "Faks",
+    "PAUSE": "Ootele",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Olek",
+    "LOGOUT": "Logi välja",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
+    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
+    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
+    "OFFLINESTATUS": "Võrgust väljas staatus",
+    "NAME": "Nimi",
+    "CHATQUEUES": "Vestluse Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Ajalõpp",
+    "DESCRIPTION": "Kirjeldus",
+    "KEY": "Võti",
     "ALIAS": "Alias",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit Close",
-    "TIMEZONE": "Timezone",
-    "MESSAGE": "Message",
-    "ADVANCED": "Advanced",
-    "FORWARDTRANSCRIPT": "Forward Transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
-    "SKIPMESSAGEBUTTON": "Skip Message Button",
-    "EDIT_MESSAGE": "Edit Message",
-    "CONDITION_AGREEMENT": "Condition Agreement",
-    "NONE": "None",
-    "PRIORITY": "Priority",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Unmanaged Status",
-    "AUTOCLOSE": "Enable Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
-    "UNMANAGEDMESSAGE": "Message",
-    "SKIPUNMANAGED": "Skip Message",
-    "SENDUNMANAGED": "Send Message",
-    "WEBSITESCRIPT": "Website Script",
-    "DELETE_OFFLINEMESSAGE": "Delete",
-    "OFFLINEMESSAGES": "Offline Messages",
-    "FORWARD_OFFLINE": "Forward Offline",
-    "SHOW_OFFLINEMESSAGE": "Show",
-    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
-    "CLOSINGFORM": "Closing Form",
-    "ENABLERATING": "Enable Rating",
-    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
-    "ENABLEFEEDBACK": "Enable Feedback",
-    "RATINGTYPE": "Rating Type",
-    "CLOSINGMESSAGE": "Closing Message",
-    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
-    "RATINGSTARSNUMBER": "Rating Stars Number",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
+    "VARIABLE": "Muutuja",
+    "INTERVAL": "Intervall",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "TIMEZONE": "Ajavöönd",
+    "MESSAGE": "Sõnum",
+    "ADVANCED": "Täpsem",
+    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
+    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
+    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
+    "EDIT_MESSAGE": "Redigeeri Sõnumit",
+    "CONDITION_AGREEMENT": "Tingimusleping",
+    "NONE": "Pole",
+    "PRIORITY": "Prioriteet",
+    "ONLINESTATUS": "Võrgusolek",
+    "UNMANAGEDSTATUS": "Haldamata Olek",
+    "AUTOCLOSE": "Luba Automaatne Sulgemine",
+    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
+    "UNMANAGEDMESSAGE": "Sõnum",
+    "SKIPUNMANAGED": "Jäta vahele Sõnum",
+    "SENDUNMANAGED": "Saada Sõnum",
+    "WEBSITESCRIPT": "Veebilehe Skript",
+    "DELETE_OFFLINEMESSAGE": "Kustuta",
+    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
+    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
+    "SHOW_OFFLINEMESSAGE": "Näita",
+    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
+    "CLOSINGFORM": "Sulgemise Vorm",
+    "ENABLERATING": "Luba Hindamine",
+    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
+    "ENABLEFEEDBACK": "Luba Tagasiside",
+    "RATINGTYPE": "Hinnangu Tüüp",
+    "CLOSINGMESSAGE": "Sulgemise Vorm",
+    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
+    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
+    "EDIT_GOTOIF": "Redigeeri GotoIfi",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
-      "AGENTALIAS_REQUIRED": "Mandatory Field",
-      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "BOTNAME_REQUIRED": "Kohustuslik Väli",
+      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
+      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
+      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
+      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TAG_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "TEXT_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Wrong format",
-      "ADDRESS_REQUIRED": "Mandatory Field",
-      "ADDRESS_MUST_VALID_URL": "Wrong format",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
-      "WAITINGTITLE_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "EMAIL_MUST_BE_VALID": "Vale formaat",
+      "ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
+      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Contact Manager Field",
-    "CHATPROACTIVEACTIONS": "Proactive Actions",
-    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
-    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
-    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
-    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
-    "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Timeout",
-    "TYPE": "Type",
-    "SELECTOR": "Selector",
+    "CM_FIELD": "Kontakteeru Esindajaga väli",
+    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
+    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
+    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
+    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
+    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
+    "MOUSEOVER": "Kursor Peal",
+    "TIMEOUT": "Aegumine",
+    "TYPE": "Tüüp",
+    "SELECTOR": "Selektor",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_GOTOIf": "Edit GotoIf",
-    "EDIT_NOOP": "Edit Noop",
-    "ADD_CHATQUEUE": "Add Chat Queue",
-    "EDIT_CHATQUEUE": "Edit Chat Queue",
-    "DELETE_CHATQUEUE": "Delete Chat Queue",
-    "SETTINGS": "Settings",
-    "SAVE": "Save",
-    "SCRIPT": "Script",
-    "TOKEN": "Token",
-    "CREATED_AT": "Created At",
-    "CHATWEBSITES": "Chat Websites",
-    "MOTIONADDRESS": "Website Domain",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "ADD_CHATWEBSITE": "Add Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Delete Chat Website",
-    "LIST": "List",
-    "SNIPPET": "Snippet",
-    "FORMS": "Forms",
-    "UP": "Up",
-    "DOWN": "Down",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Proactive Actions",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "FIDELITY": "Fidelity",
-    "APPEARANCE": "Appearance",
-    "MAINCOLOR": "Main Color",
-    "FOCUSCOLOR": "Focus Color",
-    "BUTTONCOLOR": "Button Color",
-    "HEADERSHAPE": "Header Shape",
-    "ANIMATION": "Animation",
-    "DEFAULT": "Default",
-    "WHITELABEL": "White Label",
+    "QUEUE": "Järjekord Queue",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_GOTOIf": "Redigeeri GotoIf",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
+    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
+    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
+    "SETTINGS": "Sätted",
+    "SAVE": "Salvesta",
+    "SCRIPT": "Skript",
+    "TOKEN": "Luba",
+    "CREATED_AT": "Loodud",
+    "CHATWEBSITES": "Vestluse Veebisaidid",
+    "MOTIONADDRESS": "Veebisaididomeen",
+    "MOTIONPROXY": "Puhvri või Liikumise domeen",
+    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
+    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
+    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
+    "LIST": "Loend",
+    "SNIPPET": "Lõigend",
+    "FORMS": "Vormid",
+    "UP": "Üles",
+    "DOWN": "Alla",
+    "COLLAPSE": "Ahenda",
+    "PROACTIVEACTIONS": "Ennetavad Tegevused",
+    "DISPOSITIONS": "kasutaminesed",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "FIDELITY": "Kvaliteet",
+    "APPEARANCE": "Välimus",
+    "MAINCOLOR": "Põhivärv",
+    "FOCUSCOLOR": "Fookuse Värv",
+    "BUTTONCOLOR": "Nupu Värv",
+    "HEADERSHAPE": "Päise Kujund",
+    "ANIMATION": "Animatsioon",
+    "DEFAULT": "Vaikimisi",
+    "WHITELABEL": "Valge sedel",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcript",
-    "ENQUIRY_ENABLE": "Enquiry Enable",
-    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
-    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
-    "LABELS": "Labels",
-    "HEADER_ONLINE": "Online Header",
-    "ONLINE_MESSAGE": "Online Message",
-    "NAME_TITLE": "Name Input Label",
-    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
-    "START_CHAT_BUTTON": "'Start Chat' Button",
-    "AGENTS_BUSY": "Busy Agents Message",
-    "HEADER_OFFLINE": "Offline Header",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "MESSAGE_TITLE": "Message Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
-    "ENQUIRY_BUTTON": "Enquiry Button Text",
-    "RATING_MESSAGE": "Rating Message",
-    "RATING_SEND": "Rating Send Button Text",
-    "RATING_SKIP": "Rating Skip Button Text",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proactive",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "EMBEDDING": "Embedding",
-    "GENERAL": "General",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
+    "ENQUIRY_ENABLE": "Päringu Lubamine",
+    "ENQUIRY_FORWARDING": "Päringu Edastamine",
+    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
+    "LABELS": "Sildid",
+    "HEADER_ONLINE": "Võrguühendusega Päis",
+    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
+    "NAME_TITLE": "Nime Sisendi Sedel",
+    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
+    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
+    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
+    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
+    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
+    "HEADER_OFFLINE": "Võrguühenduseta Päis",
+    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
+    "MESSAGE_TITLE": "Sõnumi Sedel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
+    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
+    "RATING_MESSAGE": "Hinnangu Sõnum",
+    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
+    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
+    "ONLINE": "Võrguühendusega",
+    "OFFLINE": "Võrguühenduseta",
+    "PROACTIVE": "Ennetav",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka Tagasi",
+    "REJECTMETHOD": "Lükka Tagasi Meetod",
+    "REJECTURL": "Lükka Tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "EMBEDDING": "Manustamine",
+    "GENERAL": "Üldine",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "HELP": {
-      "VERTICALPOSITION": "Represents the distance in percentage from top",
-      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
-      "HIDEWHENOFFLINE": "Hides snippet when offline",
-      "KEY": "Website short name (5 char) shown on the Agent Tab",
-      "TOKEN": "Automatically generated token used in the Script",
-      "INTEVAL": "To be selected from the list of the available intervals",
-      "TIMEZONE": "Select one from the list (default=local timezone)",
-      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
-      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
-      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
-      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
-      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
-      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "The following Motion Contact Manager field:",
-      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
-      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
-      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate Contacts",
-      "INTERVAL": "Select one from the list",
-      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
+      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
+      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
+      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
+      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
+      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
+      "INTEVAL": "Valitav saadaolevate intervallide loendist",
+      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
+      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
+      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
+      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
+      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
+      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
+      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
+      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
+      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
+      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
+      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "INTERVAL": "Vali loendist üks",
+      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
     },
-    "ADDRESS": "Address",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Rating State",
-    "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat Dispositions",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
-    "ADD_CHATDISPOSITION": "Add Chat Disposition",
-    "DELETE": "Delete",
-    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
-    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
-    "ID": "Id",
-    "NEW_CHATQUEUE": "New Chat Queue",
-    "NEW_CHATWEBSITE": "New Chat Website",
-    "ROUNDED": "Rounded",
-    "SQUARED": "Squared",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "ADDRESS": "Aadress",
+    "ONLINESTATE": "Võrguühendusega Olek",
+    "OFFLINESTATE": "Võrguühenduseta Olek",
+    "RATINGSTATE": "Hindamise Staatus",
+    "ENQUIRY": "Päring",
+    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
+    "CHATDISPOSITIONS": "Vestluse Kasutused",
+    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
+    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
+    "DELETE": "Kustuta",
+    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
+    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
+    "ID": "ID",
+    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
+    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
+    "ROUNDED": "Ümargune",
+    "SQUARED": "Ruudukujuline",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "WEBSITE": "Website",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Alustamise aeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Avatud",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "WEBSITE": "Veebisait",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali Staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
-    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CREATEDAT": "Created At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECTED_WEBSITE": "Select a website",
+    "FILTERS": "Filtrid",
+    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
+    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSEDAT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutamine",
+    "CREATEDAT": "Loomise aeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
+    "SELECTED_WEBSITE": "Vali veebisait",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "SELECT_WEBSITE": "Select a website",
-    "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
-    "WAITINGTITLE": "Waiting Title",
-    "WAITINGMESSAGE": "Waiting Message",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "No Rating",
-    "DEFAULT_PAUSE": "Default pause",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "SELECT_WEBSITE": "Vali veebisait",
+    "INFO": "Teave",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
+    "WAITINGTITLE": "Ootamise Pealkiri",
+    "WAITINGMESSAGE": "Ootamise Sõnum",
+    "RATING": "Hindamine",
+    "NO_RATINGVALUE": "Hindamine puudub",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "UNKNOWN": "Tundmatu",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "NOTE": "Märge",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "NOTE": "Märkus",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muutke TVoxi",
+    "EDIT_TVOX": "Muuda TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP -aadress",
+    "TVOXIP": "TVoxi IP-aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP -aadress",
+    "TVOXURL": "TVoxi IP-aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 2592ba3..494d629 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Select tags",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "USERID": "Recall Agent ID",
-    "PRIORITY": "Priority",
-    "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Import Contacts",
-    "PREFIX": "Dial Prefix",
-    "VOICEQUEUEID": "VoiceQueue ID",
-    "CAMPAIGNID": "Campaign ID",
-    "STATE": "State",
-    "NAME": "Name",
-    "LISTS": "Lists",
-    "UNIQUEID": "Unique Id",
-    "STATUS": "Status",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MOTION_BULL": "Motion Bull",
+    "SELECT_TAG": "Vali sildid",
+    "CUSTOMER_JOURNEY": "Klienditeekond",
+    "USERID": "Kutsu tagasi Agendi ID",
+    "PRIORITY": "Prioriteet",
+    "MOTIONDIALER": "Liikumise Pull",
+    "IMPORT_CONTACTS": "Impordi Kontaktid",
+    "PREFIX": "Helistamise Eesliide",
+    "VOICEQUEUEID": "Hääljärjekorra ID",
+    "CAMPAIGNID": "Kampaania ID",
+    "STATE": "Olek",
+    "NAME": "Nimi",
+    "LISTS": "Loendid",
+    "UNIQUEID": "Unikaalne ID",
+    "STATUS": "Staatus",
+    "STARTTIME": "Algusaeg",
+    "ENDTIME": "Lõpuaeg",
+    "MOTION_BULL": "Liikumise Pull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper History",
-    "SCHEDULEDAT": "Scheduled At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_LIST": "Edit List",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Delete List",
-    "DELETE_HOPPER": "Delete Hopper",
-    "RELOAD": "Reload",
-    "NO_COMPANIES": "No Company",
-    "NO_AVAILABLE_ITEMS": "No Available Items",
-    "ADD": "Add",
+    "FINAL": "Hopperi Finaal",
+    "HISTORY": "Hopperi Ajalugu",
+    "SCHEDULEDAT": "Ajastatud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_LIST": "Redigeeri loendit",
+    "EDIT_HOPPER": "Redigeeri Hopperit",
+    "DELETE_LIST": "Kustuta Loend",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "RELOAD": "Laadi uuesti",
+    "NO_COMPANIES": "Ettevõte puudub",
+    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
+    "ADD": "Lisa",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Description",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice Dispositions",
-    "NEW_VOICEDISPOSITION": "New Voice Disposition",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "ADD_LIST": "Add List",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "COMPANIES": "Companies",
-    "EDIT_COMPANY": "Edit Company",
-    "DELETE_COMPANY": "Delete Company",
-    "PHONE": "Phone",
-    "EMAIL": "Email",
-    "ADD_COMPANY": "Add Company",
-    "CONTACTS": "Contacts",
-    "NEW_LIST": "New List",
-    "FIRSTNAME": "First Name",
-    "LASTNAME": "Last Name",
-    "LIST": "List",
-    "COMPANY": "Company",
-    "ADD_CONTACT": "Add Contact",
-    "EDIT_CONTACT": "Edit Contact",
-    "MERGE_CONTACT": "Merge Contact",
-    "DUPLICATE_CONTACT": "Duplicate Contact",
-    "DELETE_CONTACT": "Delete Contact",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Personal Info",
-    "MOBILE": "Mobile",
-    "FAX": "Fax",
-    "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Show all fields",
-    "FEWER_FIELDS": "Show less fields",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "DELETE": "Delete",
-    "DELETE_ALL": "Delete All",
-    "CONTACTMANAGER": "Contacts Manager",
-    "ID": "Id",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CUSTOMFIELDS": "Custom Fields",
-    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
-    "ADD_TAG": "Add Tag",
-    "NO_TAG": "No Tags",
+    "DESCRIPTION": "Kirjeldus",
+    "DISPOSITION": "Kasutus",
+    "DISPOSITIONS": "Kasutused",
+    "VOICEDISPOSITIONS": "Hääle Kasutused",
+    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "ADD_LIST": "Lisa Loendid",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "COMPANIES": "Ettevõtted",
+    "EDIT_COMPANY": "Redigeeri Ettevõtet",
+    "DELETE_COMPANY": "Kustuta Ettevõtted",
+    "PHONE": "Telefon",
+    "EMAIL": "E-post",
+    "ADD_COMPANY": "Lisa Ettevõte",
+    "CONTACTS": "Kontaktid",
+    "NEW_LIST": "Uus loend",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "LIST": "Loend",
+    "COMPANY": "Ettevõte",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "EDIT_CONTACT": "Muuda Kontakti",
+    "MERGE_CONTACT": "Koosta Kontakt",
+    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
+    "DELETE_CONTACT": "Kustuta Kontakt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "DETAIL": "Üksikasi",
+    "PERSONAL_INFO": "Isiklik teave",
+    "MOBILE": "Mobiil",
+    "FAX": "Faks",
+    "TAGS": "Sildid",
+    "SHOW_ALL_FIELDS": "Näita kõik väljad",
+    "FEWER_FIELDS": "Näita vähem välju",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "DELETE": "Kustuta",
+    "DELETE_ALL": "Kustuta Kõik",
+    "CONTACTMANAGER": "Kontaktide Haldur",
+    "ID": "ID",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CUSTOMFIELDS": "Kohandatud Väljad",
+    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
+    "ADD_TAG": "Lisa Silt",
+    "NO_TAG": "Sildid Puuduvad",
     "ALIAS": "Alias",
-    "TYPE": "Type",
-    "VALUE": "Value",
-    "ADD_CUSTOMFIELD": "Add Custom Field",
-    "EDIT_CUSTOMFIELD": "Edit Custom Field",
-    "DELETE_CUSTOMFIELD": "Delete Custom Field",
-    "NEW_COMPANY": "New Company",
-    "NEW_CONTACT": "New Contact",
-    "NEW_TAG": "New Tag",
-    "UPLOAD_CONTACTS": "Upload Contacts",
-    "FINISH": "Finish",
-    "SUCCESS": "Success",
-    "FAILURE": "Failure",
-    "ALL_CONTACTS": "All Contacts",
-    "NEW_CUSTOMFIELD": "New Custom Field",
-    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
-    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "VAT": "VAT",
-    "COMPANYID": "Company ID",
-    "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Email Domain",
-    "ADDRESS": "Address",
-    "POSTAL_CODE": "Postal Code",
-    "SHIPMENTADDRESS": "Shipment Address",
-    "COPY_CONTACT": "Copy Contact",
-    "GOTOCONTACTS_LIST": "Show Contacts",
-    "GOTOCONTACTS_COMPANY": "Show Contacts",
-    "ADD_AGENT_TO_LIST": "Add Agent to List",
-    "AGENTADD_LIST": "Add Agents to List",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NONE": "None",
-    "FULLNAME": "Full Name",
-    "CHECK_DUPLICATES": "Check Duplicates",
-    "DUPLICATES": "Duplicates",
-    "UPLOAD_CSV": "Upload CSV",
-    "TAG": "Tag",
-    "UPLOAD": "Upload",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "DATE_OF_BIRTH": "Birthdate",
-    "DATEOFBIRTH": "Birthdate",
-    "NOTES": "Notes",
-    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
-    "GOTO_LIST": "Show Contacts",
-    "GOTO_COMPANY": "Show Contacts",
-    "REQUIRED": "Required",
-    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
-    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
-    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
-    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
-    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
+    "TYPE": "Tüüp",
+    "VALUE": "Väärtus",
+    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "NEW_COMPANY": "Uus Ettevõte",
+    "NEW_CONTACT": "Uus Kontakt",
+    "NEW_TAG": "Uus Silt",
+    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
+    "FINISH": "Lõpp",
+    "SUCCESS": "Õnnestus",
+    "FAILURE": "Nurjus",
+    "ALL_CONTACTS": "Kõik Kontaktid",
+    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
+    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "VAT": "KM",
+    "COMPANYID": "Ettevõtte ID",
+    "WEBSITE": "Veebisait",
+    "EMAIL_DOMAIN": "E-posti Domeen",
+    "ADDRESS": "Aadress",
+    "POSTAL_CODE": "Postiindeks",
+    "SHIPMENTADDRESS": "Saadetise Aadress",
+    "COPY_CONTACT": "Kopeeri Kontakt",
+    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
+    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
+    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
+    "AGENTADD_LIST": "Lisa Agendid Loendisse",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NONE": "Ühtegi",
+    "FULLNAME": "Täisnimi",
+    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
+    "DUPLICATES": "Dublikaadid",
+    "UPLOAD_CSV": "Laadi üles CSV",
+    "TAG": "Silt",
+    "UPLOAD": "Laadi üles",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "DATEOFBIRTH": "Sünnikuupäev",
+    "NOTES": "Märkmed",
+    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
+    "GOTO_LIST": "Kuva Kontaktid",
+    "GOTO_COMPANY": "Kuva Kontaktid",
+    "REQUIRED": "Nõutud",
+    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
+    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
+    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Sessioonid",
     "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
+    "PROJECT": "Projekt",
+    "SELECT_LIST": "Vali loend",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_TAGS": "Vali üks või enam silte",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
-      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
+      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
+      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu leheküljel",
     "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
+    "SOCIAL": "Sotsiaalne",
+    "ROW": "Rida",
+    "EXPORT_ERRORS": "Ekspordi Vead",
+    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
+    "STOP": "Peata",
+    "SELECT_FILE": "Vali Fail",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
-    "ADDITIONAL_PHONES": "Täiendavad telefonid",
-    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd",
-    "MOVE_DOWN": "Liigu alla",
-    "MOVE_UP": "Üles liikuma"
+    "TIMEZONE": "Vali ajavöönd"
   }
 }
index 3169c3f..34b7937 100644 (file)
       "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
       "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
     },
-    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached"
+    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached",
+    "WAITING_CALLS": "Waiting Calls",
+    "WAITING_INTERACTIONS": "Waiting Interactions"
   }
 }
index 0a5b7eb..739750c 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Unmanaged Rate",
-    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
-    "VOICE_WAITING": "WAITING",
-    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
-    "VOICE_TALKING": "TALKING",
-    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
-    "VOICE_ANSWERED": "ANSWERED",
-    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
-    "VOICE_ABANDONED": "ABANDONED",
-    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
-    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
-    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
-    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
-    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
-    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
-    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
-    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
-    "VOICE_ANSWER_RATE": "ANSWER RATE",
-    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
-    "VOICE_ABANDON_RATE": "ABANDON RATE",
-    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
-    "VOICE_UNMANAGED": "UNMANAGED",
-    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
-    "ABANDONED": "Abandoned",
-    "ABANDONED_TEXT": "Abandoned Interactions",
-    "ABANDONED_RATE": "Abandoned Rate",
-    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
-    "TOTAL_OFFERED": "Total Offered",
-    "TOTAL_OFFERED_TEXT": "Offered Interactions",
-    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
-    "MANAGED_RATE": "Managed Rate",
-    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "No disposition set",
-    "AGENTS": "Agents",
-    "TRANSFER": "Transfer",
-    "NO_DATA_AVAILABLE": "No data available",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "ME": "Me",
-    "CURRENTLY_IN_USE_BY": "Currently in use by",
-    "NOTAVAILABLE": "Not available",
-    "CLICKRELOAD": "New abandoned calls! Reload please",
-    "ASSIGNTO": "Assign to",
-    "SELECT_CAMPAIGN": "Select a Queue",
-    "FREE": "Free",
-    "RESERVED": "Reserved",
-    "QUEUECALLEREXITREASON": "Reason",
-    "QUEUECALLEREXITAT": "Dropped",
-    "LASTASSIGNEDTO": "Last Assigned To",
-    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
-    "ABANDONAT": "Abandoned",
-    "QUEUE": "Queue",
-    "SELECT_SUBSTATUS": "Select Substatus",
-    "READ": "Read",
-    "UNREAD": "Unread",
-    "SELECT_READ_UNREAD": "Select Read/Unread",
-    "SELECT_AGENT": "Select Agent",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
-    "CHANNEL_QUEUE": "Queue",
-    "CHANNEL_FROM": "From",
-    "LOADING_INTERACTION": "We are loading the interaction...",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "DOWNLOAD": "Allalaadimine",
+    "UNMANAGED_RATE": "Haldamata Määr",
+    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
+    "VOICE_WAITING": "OOTEL",
+    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
+    "VOICE_TALKING": "RÄÄKIMINE",
+    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
+    "VOICE_ANSWERED": "VASTATUD",
+    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
+    "VOICE_ABANDONED": "TAGASILÜKATUD",
+    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
+    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
+    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
+    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
+    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
+    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
+    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
+    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
+    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
+    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
+    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
+    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
+    "VOICE_UNMANAGED": "HALDAMATA",
+    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
+    "OPENED_TEXT": "Avatud Suhtlused",
+    "MANAGED": "Hallatud",
+    "MANAGED_TEXT": "Hallatud Suhtlused",
+    "ABANDONED": "Tagasilükatud",
+    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
+    "ABANDONED_RATE": "Tagasilükatud Määr",
+    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
+    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
+    "MANAGED_RATE": "Hallatud Määr",
+    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
+    "AVG_MANAGED_TIME": "AVG Haldusaeg",
+    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
+    "NO_DISPOSITION_SET": "Kasutust pole määratud",
+    "AGENTS": "Agendid",
+    "TRANSFER": "Edastus",
+    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
+    "CUSTOMER_JOURNEY": "Kliendi Teekond",
+    "ME": "Mina",
+    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
+    "NOTAVAILABLE": "Pole saadaval",
+    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
+    "ASSIGNTO": "Määra",
+    "SELECT_CAMPAIGN": "Vali Järjekord",
+    "FREE": "Vaba",
+    "RESERVED": "Reserveeritud",
+    "QUEUECALLEREXITREASON": "Põhjus",
+    "QUEUECALLEREXITAT": "Katkestatud",
+    "LASTASSIGNEDTO": "Viimati määratud",
+    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
+    "ABANDONAT": "Tagasilükatud",
+    "QUEUE": "Järjekord",
+    "SELECT_SUBSTATUS": "Vali Alamstaatus",
+    "READ": "Loetud",
+    "UNREAD": "Lugemata",
+    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
+    "SELECT_AGENT": "Vali Agent",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
+    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
+    "CHANNEL_QUEUE": "Järjekord",
+    "CHANNEL_FROM": "Alates",
+    "LOADING_INTERACTION": "Laadime suhtlust...",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Mon",
-    "TUE": "Tue",
-    "WED": "Wed",
-    "THU": "Thu",
-    "FRI": "Fri",
-    "SAT": "Sat",
-    "SUN": "Sun",
-    "DELETE": "Delete",
-    "LAST_3_DAYS": "Last 3 Day",
-    "LAST_YEAR": "Last Year",
-    "THIS_YEAR": "This Year",
-    "LAST_MONTH": "Last Month",
-    "THIS_MONTH": "This Month",
-    "LAST_WEEK": "Last Week",
-    "THIS_WEEK": "This Week",
-    "YESTERDAY": "Yesterday",
-    "TODAY": "Today",
-    "SELECT_DATE": "Select Start Date",
-    "HOME": "Home",
-    "SET_AS": "Set As",
-    "PENDING": "Pending",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "TAGS": "Tags",
-    "SELECT_TAG": "Select Tag",
-    "TYPE": "Type",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "CALLERID": "Caller ID",
-    "END_AT": "End At",
-    "DURATION": "Duration",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "NOT_ASSIGNED": "Not Assigned",
-    "UNKNOWN": "Unknown",
-    "SELECT_USER": "Select User",
-    "LAST_MESSAGE": "Last message",
-    "USER": "User",
-    "RATING": "Rating",
-    "FEEDBACK": "Feedback",
-    "SUBJECT": "Subject",
-    "CUSTOMER_IP": "Customer IP",
-    "REFERER": "Referer",
-    "ACCOUNT": "Account",
-    "WEBSITE": "Website",
+    "DECEMBER": "Detsember",
+    "MON": "E",
+    "TUE": "T",
+    "WED": "K",
+    "THU": "N",
+    "FRI": "R",
+    "SAT": "L",
+    "SUN": "P",
+    "DELETE": "Kustuta",
+    "LAST_3_DAYS": "Viimased 3 Päeva",
+    "LAST_YEAR": "Viimane Aasta",
+    "THIS_YEAR": "See Aasta",
+    "LAST_MONTH": "Viimane Kuu",
+    "THIS_MONTH": "See Kuu",
+    "LAST_WEEK": "Viimane Nädal",
+    "THIS_WEEK": "See Nädal",
+    "YESTERDAY": "Eile",
+    "TODAY": "Täna",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "HOME": "Kodu",
+    "SET_AS": "Määra kui",
+    "PENDING": "Ootel",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
+    "TAGS": "Sildid",
+    "SELECT_TAG": "Vali Silt",
+    "TYPE": "Tüüp",
+    "SOURCE": "Lähtekoht",
+    "DESTINATION": "Sihtpunkt",
+    "CALLERID": "Helistaja ID",
+    "END_AT": "Lõpetamise aeg",
+    "DURATION": "Kestus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "FAX": "Faks",
+    "NOT_ASSIGNED": "Pole määratud",
+    "UNKNOWN": "Teadmata",
+    "SELECT_USER": "Vali Kasutaja",
+    "LAST_MESSAGE": "Viimane sõnum",
+    "USER": "Kasutaja",
+    "RATING": "Hinnang",
+    "FEEDBACK": "Tagasiside",
+    "SUBJECT": "Teema",
+    "CUSTOMER_IP": "Kliendi IP",
+    "REFERER": "Viitaja",
+    "ACCOUNT": "Konto",
+    "WEBSITE": "Veebisait",
     "AGENT": "Agent",
-    "CREATED_AT": "Created At",
-    "CLOSED_AT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CONTACT": "Contact",
-    "INTERACTION": "Interaction",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Operating System Name",
-    "OS_VERSION": "Operating System Version",
-    "DEVICE_MODEL": "Device Model",
-    "DEVICE_VENDOR": "Device Vendor",
-    "DEVICE_TYPE": "Device Type",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Drop Rate",
-    "DROPPED": "Dropped",
-    "DROPPED_TEXT": "Dropped Queue Calls",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
-    "LIMITED": "Limited",
-    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
-    "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Recordings",
-    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
-    "ORIGINATED": "Originated",
-    "ORIGINATED_TEXT": "Queue Calls Originated",
-    "UPDATE": "Update",
-    "MORE": "More",
-    "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Dispose",
-    "QUEUES": "Queues",
-    "DIALER_CALL": "Dialer Call",
-    "ELAPSED_TIME": "Elapsed Time",
-    "EDIT": "Edit",
-    "MERGE": "Merge",
-    "DUPLICATE": "Duplicate",
-    "UNIQUEID": "Uniqueid",
-    "CAMPAIGN": "Campaign",
-    "NONE": "None",
-    "NAME": "Name",
-    "ANSWER_MACHINE": "Answer Machine",
-    "INTERESTED": "Interested",
-    "NOT_INTERESTED": "Not Interested",
-    "PERSONAL_INFO": "Personal Info",
-    "SOLD": "Sold",
-    "SPECIAL": "Special",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reschedule",
-    "FIRSTNAME": "Firstname",
-    "LASTNAME": "Lastname",
-    "MOBILE": "Mobile",
-    "DATE_OF_BIRTH": "Birthdate",
-    "COMPANY": "Company",
-    "TAG": "Tag",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "GENERAL": "General",
-    "VOICE": "Voice",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
-    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
-    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "INBOUND_ANSWERED": "Answered",
-    "OUTBOUND_ANSWERED": "Answered",
-    "AVG_HOLD_TIME": "Average Hold Time",
-    "INBOUND_ANSWER_RATE": "Answer Rate",
-    "OUTBOUND_ANSWER_RATE": "Answer Rate",
-    "ABANDON_RATE": "Abandon Rate",
-    "UNMANAGED": "Unmanaged",
-    "TOTAL": "Total",
-    "TOT_DURATION": "Total Duration",
-    "AVG_DURATION": "Average Duration",
+    "CREATED_AT": "Loomisaeg",
+    "CLOSED_AT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutus",
+    "CONTACT": "Kontakt",
+    "INTERACTION": "Suhtlus",
+    "BROWSER_NAME": "Brauseri Nimi",
+    "BROWSER_VERSION": "Brauseri Versioon",
+    "OS_NAME": "Operatsioonisüsteemi Nimi",
+    "OS_VERSION": "Operatsioonisüsteemi Versioon",
+    "DEVICE_MODEL": "Seadme Mudel",
+    "DEVICE_VENDOR": "Seadme Tarnija",
+    "DEVICE_TYPE": "Seadme Tüüp",
+    "RECALLME": "Kutsu Mind tagasi",
+    "DROP_RATE": "Katkesta Määr",
+    "DROPPED": "Katkestatud",
+    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
+    "DETAIL": "Üksikasi",
+    "MOTION_BULL": "Liikumise Pull",
+    "LIMITED": "Piiratud",
+    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
+    "DASHBOARDS": "Töölauad",
+    "RECORDINGS": "Salvestused",
+    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
+    "ORIGINATED": "Päritolu",
+    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
+    "UPDATE": "Värskendamine",
+    "MORE": "Rohkem",
+    "MOTIONDIALER": "Liikumise Pull",
+    "DISPOSE": "Likvideeri",
+    "QUEUES": "Järjekorrad",
+    "DIALER_CALL": "Numbrivalija Kõne",
+    "ELAPSED_TIME": "Kulunud Aeg",
+    "EDIT": "Redigeeri",
+    "MERGE": "Ühenda",
+    "DUPLICATE": "Dubleeri",
+    "UNIQUEID": "Kordumatu ID",
+    "CAMPAIGN": "Kampaania",
+    "NONE": "Ühtegi",
+    "NAME": "Nimi",
+    "ANSWER_MACHINE": "Automaatvastaja",
+    "INTERESTED": "Huvitatud",
+    "NOT_INTERESTED": "Pole Huvitatud",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "SOLD": "Müüdud",
+    "SPECIAL": "Muud",
+    "BLACKLIST": "Must nimekiri",
+    "RESCHEDULE": "Planeeri uuesti",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "MOBILE": "Mobiil",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "COMPANY": "Ettevõte",
+    "TAG": "Silt",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "GENERAL": "Üldine",
+    "VOICE": "Hääl",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
+    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
+    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
+    "INBOUND_ANSWERED": "Vastatud",
+    "OUTBOUND_ANSWERED": "Vastatud",
+    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
+    "INBOUND_ANSWER_RATE": "Vastuse Määr",
+    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
+    "ABANDON_RATE": "Tagasilükkamise Määr",
+    "UNMANAGED": "Haldamata",
+    "TOTAL": "Kokku",
+    "TOT_DURATION": "Kestus Kokku",
+    "AVG_DURATION": "Keskmine Kestus",
     "HELP": {
-      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
-      "WAITING": "The total number of Waiting Interactions",
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "ABANDONED": "The total number of Abandoned Interactions",
-      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
-      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
-      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
-      "MANAGED_RATE": "The Managed Rate of all the Interactions",
-      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
-      "UNMANAGED": "The total number of Unmanaged Interactions",
-      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
-      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
-      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
-      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
-      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
-      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
-      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
-      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
-      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
-      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
-      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
-      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
-      "DROP_RATE": "The Drop Rate of all the Queue Calls",
-      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
-      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
-      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
-      "TOTAL": "The total number of Outbound Calls",
-      "TOT_DURATION": "The total duration of all the Outbound Calls",
-      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
+      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
+      "WAITING": "Ootel Suhtluste koguarv",
+      "OPENED": "Aktiivsete Suhtluste koguarv",
+      "MANAGED": "Lõpetatud Suhtluste koguarv",
+      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
+      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
+      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
+      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
+      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
+      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
+      "UNMANAGED": "Haldamata Suhtluste koguarv",
+      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
+      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
+      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
+      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
+      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
+      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
+      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
+      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
+      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
+      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
+      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
+      "TOTAL": "Väljuvate Kõnede koguarv",
+      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
+      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik väli",
+      "AGENT_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "No available info",
-    "WELCOME_TO_MOTION": "Welcome to Motion",
-    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
-    "ADD": "Add",
-    "CONTACTMANAGER": "Contact Manager",
-    "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Edit contact",
-    "EMAIL": "Email",
-    "FULLNAME": "Fullname",
-    "LIST": "List",
-    "NEW_CONTACT": "New Contact",
-    "PHONE": "Phone",
-    "SAVE": "Save",
-    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
-    "CONTACTS": "Contacts",
-    "MYCONTACTS": "My Contacts",
-    "ADD_CONTACT": "Add Contact",
-    "RELOAD": "Reload",
-    "WAITING_TEXT": "Waiting Interactions",
-    "TALKING_TEXT": "Active Queue Calls",
-    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
-    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
-    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
-    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
-    "UNMANAGED_TEXT": "Unmanaged Interactions",
-    "TOTAL_TEXT": "Total Outbound Calls",
-    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
-    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
-    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
+    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
+    "ADD": "Lisa",
+    "CONTACTMANAGER": "Kontakti Haldur",
+    "DASHBOARD": "Töölaud",
+    "EDIT_CONTACT": "Redigeeri kontakti",
+    "EMAIL": "E-post",
+    "FULLNAME": "Täisnimi",
+    "LIST": "Loend",
+    "NEW_CONTACT": "Uus Kontakt",
+    "PHONE": "Telefon",
+    "SAVE": "Salvesta",
+    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
+    "CONTACTS": "Kontaktid",
+    "MYCONTACTS": "Minu Kontaktid",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "RELOAD": "Laadi uuesti",
+    "WAITING_TEXT": "Ootel Suhtlused",
+    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
+    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
+    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
+    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
+    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
+    "UNMANAGED_TEXT": "Haldamata Suhtlused",
+    "TOTAL_TEXT": "Väljuvad Kõned kokku",
+    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
+    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
+    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridy lehekülje kohta",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
-    "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Close and dispose",
-    "DISPOSITIONS": "Dispositions",
-    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
-    "ACCEPT": "Accept",
-    "REJECT": "Reject",
-    "CLOSED": "Closed",
-    "INFO": "Info",
-    "NOTE": "Note",
-    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
-    "ATTENTION": "Attention",
-    "SOCIAL": "Social",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "SELECT_ACCOUNT": "Select Account",
-    "SELECT_WEBSITE": "Select Website",
-    "ALL": "All",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "OPEN": "Open",
-    "SHOW": "Show",
-    "SHOW_DETAILS": "Show Details",
-    "HIDE_DETAILS": "Hide Details",
-    "EXTERNAL_URL": "External Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-    "SELECT_DATE_RANGE": "Select Date Range",
-    "CLEAR": "Clear",
-    "CALL_NUMBER": "Call",
-    "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Call properly saved",
-    "CALL_DISPOSED": "Call properly disposed",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
+    "CONTACT_INFO": "Kontakti Teave",
+    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
+    "DISPOSITIONS": "Kasutused",
+    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
+    "ACCEPT": "Aktsepteeri",
+    "REJECT": "Hülga",
+    "CLOSED": "Suletud",
+    "INFO": "Teave",
+    "NOTE": "Märge",
+    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
+    "ATTENTION": "Tähelepanu",
+    "SOCIAL": "Sotsiaalne",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
+    "OPENED": "Avatud",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "SELECT_WEBSITE": "Vali Veebisait",
+    "ALL": "Kõik",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "OPEN": "Ava",
+    "SHOW": "Kuba",
+    "SHOW_DETAILS": "Kuva Üksikasjad",
+    "HIDE_DETAILS": "Peida Üksikasjad",
+    "EXTERNAL_URL": "Väline Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
+    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
+    "CLEAR": "Tühjenda",
+    "CALL_NUMBER": "Helista",
+    "TRANSFER_NUMBER": "Edasta",
+    "CALL_SAVED": "Kõne õigesti salvestatud",
+    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
+    "CHAT_INTERACTIONS": "Vestluse suhtlused",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi interaktsioonid",
+    "FAX_INTERACTIONS": "Faksi suhtlused",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "Id",
+    "ID": "ID",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
-    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
+    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
+    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Välja antud",
+    "INVOICEEMITED": "Väljastatud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On vähem kui",
+    "IS_LESS_THAN": "On väiksem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
+    "MAIL_INTERACTIONS": "E-posti suhtlused",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
+    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Üle kirjutada",
+    "OVERWRITE": "Kirjuta üle",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote märkus",
+    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Valige ettevõte",
-    "SELECT_FIELD": "Valige väli",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_FIELD": "Vali väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Valige vahemik",
-    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
-    "SELECT_PERIOD_START": "Valige kuupäev",
-    "SELECT_PRODUCT": "Valige toode",
-    "SELECT_PRODUCTTYPE": "Valige tüüp",
-    "SELECT_QUEUE": "Valige järjekord",
-    "SELECT_WORKFLOW": "Valige Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
-    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
+    "SELECT_PERIOD": "Vali vahemik",
+    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
+    "SELECT_PERIOD_START": "Vali kuupäev",
+    "SELECT_PRODUCT": "Vali toode",
+    "SELECT_PRODUCTTYPE": "Vali tüüp",
+    "SELECT_QUEUE": "Vali järjekord",
+    "SELECT_WORKFLOW": "Vali Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
+    "SMS_INTERACTIONS": "Sõnumi suhtlused",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastaid",
+    "YEARS": "Aastad",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Valige",
-    "SELECT_CONTACT": "Valige kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
+    "SELECT": "Vali",
+    "SELECT_CONTACT": "Vali kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Meeskond",
+    "SELECT_TEAM": "Valige Tiim",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnitage",
+    "CONFIRM": "Kinnita",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
-    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
-    "SETFILTERS": "Määrake filtrid",
+    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
+    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
+    "SETFILTERS": "Määra filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "SYSTEM_TIME": "Süsteemi aeg",
-    "CONTACT_NAME": "kontaktisiku nimi",
-    "CONTACT_PHONE": "Kontakt Telefon",
-    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
-    "SCHEDULED_TIME": "Planeeritud aeg",
-    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
+    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
+    "SCHEDULED_AT": "kavas kl",
+    "SYSTEM_TIME": "Süsteemi aeg"
   }
 }
index ceb8029..7478044 100644 (file)
     "CONTACT_PHONE": "Contatto telefonico",
     "RECALLME_CALL_REMINDER": "Ricordami di chiamare il promemoria",
     "SCHEDULED_TIME": "Orario pianificato",
-    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami"
+    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami",
+    "WAITING_CALLS": "Chiamate in attesa",
+    "WAITING_INTERACTIONS": "Interazioni in attesa"
   }
 }
index 7e03440..fd6d9b8 100644 (file)
 {
   "FAX": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "CANNEDANSWERS": "Canned Answers",
-    "FAXCANNEDANSWERS": "Canned Answers",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_FAXCANNEDANSWER": "New Canned Answer",
-    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "TAGS": "Tags",
-    "REPLY": "Reply",
-    "SEND": "Send",
-    "TO": "To",
-    "FROM": "From",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-    "EDIT_TRUNK": "Edit Trunk",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "EDIT_ACCOUNT": "Edit Fax Account",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
-    "ACCOUNTS": "Accounts",
-    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-    "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "DEFAULT_PAUSE": "Default pause",
-    "AGENTADD_QUEUE": "Add Agent to Fax queue",
-    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
-    "UNPAUSE": "End Pause",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "PRIORITY": "Priority",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "EDIT_FAXQUEUE": "Edit Fax Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOP": "Edit GotoP",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "EDIT_QUEUE": "Edit Fax Queue",
-    "EDIT_CLOSE": "Edit Close",
-    "QUEUE": "Queue",
+    "LOGIN_TIME": "Sisselogimise Aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "FAXCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
+    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SPYINTERACTION": "Spioon",
+    "TAGS": "Sildid",
+    "REPLY": "Vasta",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
+    "EDIT_TRUNK": "Redigeeri Magistraali",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "ACCOUNTS": "Kontod",
+    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "PAUSE": "Paus",
+    "INFO": "Teave",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "LOGOUT": "Logi välja",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "PRIORITY": "Prioriteet",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_CLOSE": "Redigeeri Sule",
+    "QUEUE": "Järjekord",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Notes",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "REALTIME": "Realtime",
-    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-    "NAME": "Name",
-    "FAXQUEUES": "Fax Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "NOTES": "Märkmed",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutamine",
+    "REALTIME": "Reaalaeg",
+    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
+    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
+    "NAME": "Nimi",
+    "FAXQUEUES": "Faksi Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
-      "MODEM_REQUIRED": "Mandatory Field",
-      "GATEWAY_REQUIRED": "Mandatory Field",
-      "FAXDETECT_REQUIRED": "Mandatory Field",
-      "T38TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "HEADERINFO_REQUIRED": "Mandatory Field",
-      "TRUNK_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
+      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
+      "MODEM_REQUIRED": "Kohustuslik Väli",
+      "GATEWAY_REQUIRED": "Kohustuslik Väli",
+      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
+      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
+      "TRUNK_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_FAXQUEUE": "Add Fax Queue",
-    "DELETE_FAXQUEUE": "Delete Fax Queue",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_FAXACCOUNT": "Add Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Delete Fax Account",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "TRUNK": "Trunk",
-    "LOCALSTATIONID": "Local Station Identifier",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
+    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FAXACCOUNTS": "Faksi Kontod",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
+    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
+    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "TRUNK": "Magistraal",
+    "LOCALSTATIONID": "Kohaliku Jaama ID",
     "HELP": {
-      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
-      "HEADERINFO": "Outbound Fax Header information",
-      "MODEM": "Modem Type (v17/v27/v29)",
-      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-      "ECM": "Error Connection Mode (ECM)",
-      "MINRATE": "Minimum transfer rate set before transmission",
-      "MAXRATE": "Maximum transfer rate set before transmission",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
+      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
+      "HEADERINFO": "Väljuva Faksi Päise teave",
+      "MODEM": "Modemi Tüüp (v17/v27/v29)",
+      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
+      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
+      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
+      "ECM": "Ühenduse Režiimi Viga (ECM)",
+      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
+      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
     },
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Täpsem",
     "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
+    "MINRATE": "Min Määr",
+    "MAXRATE": "Maks Määr",
     "MODEM": "Modem",
-    "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
-    "T38TIMEOUT": "T.38 Timeout",
-    "SIP": "Technology",
-    "HEADERINFO": "Header Info",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Dispositions",
-    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-    "NEW_FAXDISPOSITION": "New Fax Disposition",
-    "ADD_FAXDISPOSITION": "Add Fax Disposition",
-    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-    "NEW_FAXQUEUE": "New Fax Queue",
-    "NEW_FAXACCOUNT": "New Fax Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "GATEWAY": "Portaal",
+    "FAXDETECT": "Faksi Tuvastus",
+    "T38TIMEOUT": "T.38 Aegumine",
+    "SIP": "Tehnoloogia",
+    "HEADERINFO": "Päise Teave",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "FAX": "Faks",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "FAXDISPOSITIONS": "Faksi Kasutus",
+    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
+    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
+    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
+    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
+    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
+    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
+    "NEW_FAXACCOUNT": "Uus Faksi Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DELETE": "Delete",
-    "KEY": "Key",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "ALL": "All",
-    "CLOSED": "Closed",
-    "OPENED": "Opened",
-    "SELECT_ACCOUNT": "Select Account",
-    "INTERACTIONS": "Interactions",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "UNKNOWN": "Unknown",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DELETE": "Kustuta",
+    "KEY": "Võti",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "ALL": "Kõik",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "INTERACTIONS": "Suhtlused",
+    "CONTACT": "Kontact",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "UNKNOWN": "Teadmata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutuses",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index 4c1be43..b43fb9a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
-    "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "Kohta",
+    "CONTACT_US": "Võta meiega ühendust",
+    "HELP": "Abi",
+    "USEFUL_LINKS": "Kasulikud lingid"
   }
 }
index 0a98fe6..7444e6b 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
+    "ADVANCED": "Täpsem",
+    "MODULE_SEARCH": "Mooduli Otsing",
+    "MODULE_CREATE": "Mooduli Loomine",
+    "INTEGRATIONS": "Integreerimised",
+    "ZENDESKACCOUNTS": "Zendesk Kontod",
+    "ID": "ID",
+    "NAME": "Nimi",
+    "USERNAME": "Kasutajanimi",
     "URI": "URL",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
-    "AUTHTYPE": "Authentication Type",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-    "DESCRIPTION": "Description",
-    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
+    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
+    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
+    "AUTHTYPE": "Autentimise Tüüp",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TOKEN": "Luba",
+    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "URI_REQUIRED": "Mandatory field",
-      "URI_MUST_VALID_URL": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TOKEN_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-      "CLIENTID_REQUIRED": "Mandatory field",
-      "CLIENTSECRET_REQUIRED": "Mandatory field",
-      "SECURITYTOKEN_REQUIRED": "Mandatory field",
-      "APIKEY_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "VARIABLENAME_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "CONSUMERKEY_REQUIRED": "Mandatory field",
-      "CONSUMERSECRET_REQUIRED": "Mandatory field",
-      "TOKENSECRET_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "AUTHTOKEN_REQUIRED": "Mandatory field",
-      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-      "ACCESS_KEY_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "URI_REQUIRED": "Kohustuslik väli",
+      "URI_MUST_VALID_URL": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "TOKEN_REQUIRED": "Kohustuslik väli",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
+      "CLIENTID_REQUIRED": "Kohustuslik väli",
+      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
+      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
+      "APIKEY_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
+      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
+      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
+      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
+      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
-      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
     },
-    "ACCOUNT": "Account",
-    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-    "SALESFORCEACCOUNTS": "Salesforce Accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-    "CLIENTID": "Client ID",
-    "CLIENTSECRET": "Client Secret",
-    "SECURITYTOKEN": "Security Token",
-    "SEARCH_FOR_ANYONE": "Search",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-    "CONFIGURATIONS": "Configurations",
-    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-    "NEW_CONFIGURATION": "New Configuration",
-    "ADD_CONFIGURATION": "Add Configuration",
-    "EDIT_CONFIGURATION": "Edit Configuration",
-    "DELETE_CONFIGURATION": "Delete Configuration",
-    "SUBJECTS": "Subjects",
-    "DESCRIPTIONS": "Descriptions",
-    "FIELDS": "Fields",
-    "TAGS": "Tags",
-    "TYPE": "Type",
-    "CONTENT": "Content",
-    "EDIT_SUBJECT": "Edit Subject",
-    "DELETE_SUBJECT": "Delete Subject",
-    "NEW_SUBJECT": "New Subject",
-    "ADD_SUBJECT": "Add Subject",
-    "EDIT_DESCRIPTION": "Edit Description",
-    "DELETE_DESCRIPTION": "Delete Description",
-    "NEW_DESCRIPTION": "New Description",
-    "ADD_DESCRIPTION": "Add Description",
-    "EDIT_FIELD": "Edit Field",
-    "DELETE_FIELD": "Delete Field",
-    "NEW_FIELD": "New Field",
-    "ADD_FIELD": "Add Field",
-    "ADD": "Add",
-    "VOICE": "Voice",
-    "MAIL": "Email",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "INBOUND_IN_QUEUE": "Inbound in Queue",
-    "OUTBOUND_CALL": "Outbound Call",
-    "VALUE": "Value",
-    "FIELD": "Field",
-    "KEY": "Key",
-    "CHANNEL": "Channel",
-    "DELETE": "Delete",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
-    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
-    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
-    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
-    "INTEGRATION_TAB": "Integration Tab",
-    "NEW_TAB": "New Tab",
-    "DESKACCOUNTS": "Desk Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
-    "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Delete Desk Account",
-    "CONSUMERKEY": "Consumer Key",
-    "CONSUMERSECRET": "Consumer Secret",
-    "TOKENSECRET": "Token Secret",
-    "ADD_DESKACCOUNT": "Add Desk Account",
-    "NEW_DESKACCOUNT": "New Desk Account",
-    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
-    "NEW_DESKCONFIGURATION": "New Desk Configuration",
-    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-    "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-    "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-    "ADD_ZOHOACCOUNT": "Add Zoho Account",
-    "NEW_ZOHOACCOUNT": "New Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-    "AUTHTOKEN": "Authorization Token",
+    "ACCOUNT": "Konto",
+    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
+    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
+    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
+    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
+    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
+    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
+    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
+    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
+    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
+    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
+    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
+    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
+    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
+    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
+    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
+    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
+    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
+    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
+    "SALESFORCEACCOUNTS": "Salesforce Kontod",
+    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
+    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
+    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
+    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
+    "CLIENTID": "Kliendi ID",
+    "CLIENTSECRET": "Kliendi Saladus",
+    "SECURITYTOKEN": "Turvalisuse Luba",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "APIKEY": "Api Võti",
+    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
+    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
+    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
+    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
+    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
+    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
+    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
+    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
+    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
+    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
+    "CONFIGURATIONS": "Konfiguratsioonid",
+    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
+    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
+    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
+    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
+    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
+    "SUBJECTS": "Teemad",
+    "DESCRIPTIONS": "Kirjeldused",
+    "FIELDS": "Väljad",
+    "TAGS": "Sildid",
+    "TYPE": "Tüüp",
+    "CONTENT": "Sisu",
+    "EDIT_SUBJECT": "Redigeeri Teemat",
+    "DELETE_SUBJECT": "Kustuta Teema",
+    "NEW_SUBJECT": "Uus Teema",
+    "ADD_SUBJECT": "Lisa Teema",
+    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
+    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
+    "NEW_DESCRIPTION": "Uus Kirjeldus",
+    "ADD_DESCRIPTION": "Lisa Kirjeldus",
+    "EDIT_FIELD": "Redigeeri Väli",
+    "DELETE_FIELD": "Kustuta Väli",
+    "NEW_FIELD": "Uus Väli",
+    "ADD_FIELD": "Lisa Väli",
+    "ADD": "Lisa",
+    "VOICE": "Hääl",
+    "MAIL": "E-post",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
+    "OUTBOUND_CALL": "Väljuv Kõne",
+    "VALUE": "Väärtus",
+    "FIELD": "Väli",
+    "KEY": "Võti",
+    "CHANNEL": "Kanal",
+    "DELETE": "Kustuta",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
+    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
+    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
+    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
+    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
+    "NEW_TAB": "Uus Vahekaart",
+    "DESKACCOUNTS": "Desk Kontod",
+    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
+    "TEST_DESKACCOUNT": "Testi Desk Kontot",
+    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
+    "CONSUMERKEY": "Tarbija Võti",
+    "CONSUMERSECRET": "Tarbija Saladus",
+    "TOKENSECRET": "Loa Saladus",
+    "ADD_DESKACCOUNT": "Lisa Desk Konto",
+    "NEW_DESKACCOUNT": "Uus Desk Konto",
+    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
+    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
+    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
+    "ZOHOACCOUNTS": "Zoho Kontod",
+    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
+    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
+    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
+    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
+    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
+    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
+    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
+    "AUTHTOKEN": "Autoriseerimise Luba",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Accounts",
-    "VTIGER_USER_NAME": "vTiger User Name",
-    "MODULE_NAME": "vTiger Module Name",
-    "ACCESS_KEY": "vTiger Access Key",
-    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
-    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-    "TEST_VTIGERACCOUNT": "Test vTiger Account",
-    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-    "NEW_VTIGERACCOUNT": "New vTiger Account",
-    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Kontod",
+    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
+    "MODULE_NAME": "vTiger Mooduli Nimi",
+    "ACCESS_KEY": "vTiger Pääsuvõti",
+    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
+    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
+    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
+    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
+    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
+    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
+    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
+    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
+    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võtke ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võta ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
+    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Värske müügi kontod",
-    "LEADS": "Plii",
+    "FRESHSALESACCOUNTS": "Freshsales kontod",
+    "LEADS": "Vihjed",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba (loodud)",
+    "REFRESHTOKEN": "Värskenda luba",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Üürniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
+    "TENANTID": "Rentniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
+    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
-    "LEADID": "Plii ID",
-    "DYNAMIC365CONTACT": "Võtke ühendust",
-    "DYNAMIC365NOTHING": "Mitte midagi",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
-    "OPENNEWTAB": "Ava uus vaheleht"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
+    "LEADID": "Vihje ID"
   }
 }
index 054f558..0aa355b 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
+    "CLONE_PROJECT": "Klooni Projekti",
+    "NAME": "Nimi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "DESCRIPTION": "Kirjeldus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat"
     },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
+    "SAVE": "Salvesta",
+    "PROJECTS": "Projektid",
+    "ADD_PROJECT": "Lisa Projekt",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "DELETE_PROJECT": "Kustuta Projekt",
     "JSCRIPTY": "Jscripty",
-    "ID": "Id",
-    "PROJECT": "Project",
-    "CREATED_AT": "Created At",
-    "NEW_PROJECT": "New Project",
-    "EDIT": "Edit",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "OPEN_CONTACT": "Open Contact",
+    "ID": "ID",
+    "PROJECT": "Projekt",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_PROJECT": "Uus Projekt",
+    "EDIT": "Redigeeri",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "OPEN_CONTACT": "Ava Kontakt",
     "HELP": {
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Project Sessions",
-    "SESSIONS": "Sessions",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MEMBERNAME": "Member Name",
-    "CALLERIDNUM": "Caller Number",
-    "NO_SESSION_AVAILABLE": "No Sessions available",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
-    "ANSWERS": "Answers",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "TOTAL": "Total",
-    "ANSWER": "Answer",
-    "EXPORT_TO_CSV": "Export to CSV",
-    "NO_ANSWERS_AVAILABLE": "No answers available",
-    "DELETE_SESSION": "Delete Session",
-    "RESET_SESSION": "Reset Session",
-    "YES": "Yes",
-    "NO": "No",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-    "SUBMIT": "Submit",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-    "COMPLETE": "Complete",
-    "SESSIONS_PROJECT": "Go to Sessions",
-    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
+    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
+    "SESSIONS": "Sessioonid",
+    "STARTTIME": "Alguse Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "MEMBERNAME": "Liikme Nimi",
+    "CALLERIDNUM": "Helistaja Number",
+    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
+    "SESSION_RESULTS": "Sessiooni Tulemused",
+    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
+    "ANSWERS": "Vastused",
+    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
+    "TOTAL": "Kokku",
+    "ANSWER": "Vastus",
+    "EXPORT_TO_CSV": "Ekspordi CSVsse",
+    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
+    "DELETE_SESSION": "Kustuta Sessioon",
+    "RESET_SESSION": "Lähtesta Sessioon",
+    "YES": "Jah",
+    "NO": "Ei",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
+    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
+    "SUBMIT": "Esita",
+    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
+    "COMPLETE": "Vii lõpule",
+    "SESSIONS_PROJECT": "Mine Sessioonidesse",
+    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Pealkiri",
+      "name.placeholder": "Vormi pealkiri",
+      "description": "Kirjeldus"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "addPage": "Lisa lehekülg",
+      "moveDown": "Liigu alla",
+      "moveUp": "Liigu üles",
+      "removePage": "Eemalda lehekülg",
+      "remove": "Eemalda",
+      "addElement": "Lisa element",
+      "questionReady": "Valmis",
+      "next": "Järgmine",
+      "back": "Tagasi",
+      "submit": "Esita",
+      "begin": "Alusta",
+      "fold": "Voldi",
+      "unfold": "Voldi lahti",
+      "edit": "Redigeeri",
+      "clone": "Klooni",
+      "view": "Vaata"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tühi lehekülg"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "nimetatud",
+      "name": "Lehekülje nimi"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "Pärast lehekülge {{lehekülg}}:",
+      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
+      "goToPage": "Mine leheküljele {{lehekülje number}}",
+      "goToNextPage": "Jätke järgmisel leheküljel",
+      "submitForm": "Esita vorm"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Küsimus",
+      "image": "Pilt",
+      "paragraph": "Lõik"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Lühike tekst"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Pikk tekst"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Raadio"
         },
         "select": {
-          "name": "Select"
+          "name": "Vali"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Märkeruudud"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Ruudustik"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Prioriteet"
         },
         "division": {
-          "name": "Division"
+          "name": "Jaotus"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Date"
+          "name": "Kuupäev"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Kuupäev ja kellaaeg"
         },
         "time": {
-          "name": "Time"
+          "name": "Kellaaeg"
         },
         "email": {
-          "name": "Email"
+          "name": "E-post"
         },
         "range": {
-          "name": "Range"
+          "name": "Vahemik"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Küsimuse tekst",
+      "type": "Küsimuse tüüp",
+      "required": "Nõutud",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Lühivastuse tekst",
+        "textarea": "Pika vastuse tekst",
+        "otherAnswer": "Muu"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Kogus",
+        "unit": "Ühiku sedel",
+        "assignedSumLabel": "Määratud",
+        "fromRequiredLabel": "alates nõutavast"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sorditud",
+        "available": "Saadaval",
+        "clickToAddItem": "Kliki üksuse lisamiseks"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Lahtri sisendi tüüp",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
+          "radio": "Raadio",
+          "checkbox": "Märkeruut",
+          "text": "Tekst",
           "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "date": "Kuupäev",
+          "time": "Kellaaeg"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Rida {{rida}}",
+        "clickToAddRow": "Kliki rea lisamiseks",
+        "columnLabel": "Veerg {{veerg}}",
+        "clickToAddColumn": "Kliki veeru lisamiseks"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Vahemik alates",
+        "to": "kuni"
       },
       "number": {
         "min": "Min",
-        "max": "Max"
+        "max": "Maks"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "või ",
+      "otherLabel": "Muu: ",
+      "userAnswer": "Kasutaja vastus",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Kliki valiku lisamiseks",
+        "addOther": "Lisa 'Muu'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Vali pilt",
+      "caption": "Pildi pealdis"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Sisesta lõigu tekst"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
+      "title": "Kinnituse lehekülg",
+      "customMessage": "Kohandatud kinnitussõnum",
+      "defaultMessage": "Sinu vastus on salvestatud",
+      "errorMessage": "Viga! Sinu vastust ei salvestatud",
+      "pendingMessage": "Sinu vastust salvestatakse"
     }
   }
 }
index 6a860d9..9c16790 100644 (file)
 {
   "MAIL": {
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "ACCEPTED": "Accepted",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "ACCOUNTS": "Accounts",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
-    "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
-    "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
-    "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
+    "DOWNLOAD": "Laadi alla",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "SEND_AS": "Saada kui",
+    "NEW_MAILSUBSTATUS": "Uus Alamolek",
+    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
+    "MAILSUBSTATUSES": "E-posti Alamolekud",
+    "EDIT_MAILSUBSTATUS": "Redigeeri",
+    "DELETE_MAILSUBSTATUS": "Kustuta",
+    "FONT_FAMILY": "Fondipere",
+    "FONT_SIZE": "Fondi Suurus",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "ACCEPTED": "Aktsepteeritud",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "MAILCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
+    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
+    "PENDING": "Ootel",
+    "SEND_AS_PENDING": "Saada Ootel olekus",
+    "SEND_AND_CLOSE": "Saada ja Sule",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
+    "SPYINTERACTION": "Spioon",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
+    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "ACCOUNTS": "Kontod",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGGED_IN": "Sisse Logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "IMAP_STATUS": "IMAP Staatus",
+    "SMTP_STATUS": "SMTP Staatus",
+    "DISABLED": "Mitteaktiivne",
+    "CONNECTED": "Ühendatud",
+    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
+    "ERROR": "Viga",
+    "EDIT_ACCOUNT": "Redigeeri Kontot",
+    "VERIFY_SMTP": "Kinnita SMTP",
+    "VERIFIED": "Kinnitatud",
+    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "AUTOREPLY": "Automaatvastus",
+    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
+    "SHOW_DETAILS": "Kuva üksikasjad",
+    "HIDE_DETAILS": "Varja üksikasjad",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "DATE": "Kuupäev",
+    "CC": "Koopia",
+    "REPLY": "Vasta",
+    "REPLY_ALL": "Vasta Kõigile",
+    "FORWARD": "Saada edasi",
+    "SUBJECT": "Teema",
+    "BCC": "Salakoopia",
+    "SEND": "Saada",
+    "ATTACHMENT": "Manus",
+    "ATTACHMENTS": "Manused",
+    "NAME": "Nimi",
+    "MAILQUEUES": "E-maili Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
+      "HOST_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PORT_REQUIRED": "Kohustuslik Väli",
+      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "SERVICE_REQUIRED": "Kohustuslik Väli",
+      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
+      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
+      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
+      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Add Email Queue",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Add Email Account",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Accounts",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
+    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
+    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "SAVE": "Salvesta",
+    "MAILACCOUNTS": "E-maili Kontod",
+    "EMAIL_ADDRESS": "E-maili Aadress",
+    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
+    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
+    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaak",
+    "ACTIONS": "Tegevused",
+    "OTHERS": "Teised",
+    "LIST": "Loend",
+    "TEMPLATE": "Mall",
+    "FIDELITY": "Kvaliteet",
+    "SERVICE": "Teenus",
+    "CREATED_AT": "Loomisaeg",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetud",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "WHITELABEL": "Valge Sedel",
+    "SIGNATURE": "Allkiri",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
+    "USERNAME": "Kasutajanimi",
     "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "MAILBOX": "Postkast",
+    "FILTER": "Filtreerimine",
+    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
+    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
+    "DELETE": "Kustuta E-mail Serverist",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Küsitlemine",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Add Email Disposition",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "BACK": "Tagasi",
+    "MAIL": "E-mail",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "PASSWORD": "Parool",
+    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
+    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
+    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
+    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
+    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
+    "MAILDISPOSITIONS": "E-maili Kasutused",
+    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
+    "NEW_MAILACCOUNT": "Uus E-maili Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "FONT_FAMILY": "Vaikimisi Fondipere",
+      "FONT_SIZE": "Vaikimisi Fondi Suurus",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "USERNAME": "Kasutajanimi autentimise jaoks",
+      "PASSWORD": "Parool autentimise jaoks",
+      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
+      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "DISPOSITION": "Kasutamine",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Tõene Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "PRIORITY": "Prioriteet",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "ACTIVE": "Active",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "VALUE": "Väärtus",
+    "QUEUE": "Järjekord",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "CONTACT": "Kontakt",
+    "CLOSEDAT": "Sulgemisaeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "ACTIVE": "Aktiivne",
+    "SECURE": "Turvaline",
+    "AUTHENTICATION": "Autentimine",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "KEY": "Key",
-    "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
-    "ADVANCED": "Täpsemad",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SELECT_STATUS": "Vali Staatus",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "KEY": "Võti",
+    "SMTPSERVICE": "SMTP Teenus",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
+    "INFO": "Teave",
+    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
+    "ADVANCED": "Täpsem",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vasta tüüp",
+    "REPLY_TYPE": "Vastamise tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
+    "CUSTOM": "Kohandatud"
   }
 }
index e80fbe2..779913f 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "App Zone",
-    "PLUGINS": "Plugins",
-    "BACK": "Back",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "NAME": "Name",
-    "DESCRIPTION": "Description",
-    "ACTIVE": "Active",
-    "TYPE": "Type",
-    "ICON": "Icon",
-    "ADMINURL": "Admin url",
-    "AGENTURL": "Agent url",
-    "SCRIPTNAME": "Script name",
-    "SCRIPTPATH": "Script path",
-    "SIDEBAR": "Sidebar",
-    "VERSION": "Version",
-    "NO_AVAILABLE_INFO": "No available info",
-    "MORE": "More",
-    "INSTALL_PLUGIN": "Install plugin",
-    "EDIT_PLUGIN": "Edit plugin",
-    "STOP_PLUGIN": "Stop plugin",
-    "RESTART_PLUGIN": "Restart plugin",
-    "DOWNLOAD_PLUGIN": "Download plugin",
-    "UNINSTALL_PLUGIN": "Uninstall plugin",
-    "DELETE_PLUGIN": "Remove plugin",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DELETE": "Delete",
-    "SAVE": "Save",
-    "INSTALLING": "Installing",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
-    "UPLOAD_PLUGIN": "Upload plugin",
-    "UPLOADING": "Uploading",
-    "CREATED_AT": "Created at",
-    "GENERAL": "General",
-    "SETTINGS": "Settings",
-    "EDITOR": "Editor",
+    "MARKETPLACE": "Rakenduse Tsoon",
+    "PLUGINS": "Lisandmoodulid",
+    "BACK": "Tagasi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali kõik",
+    "SELECT_NONE": "Ära vali midagi",
+    "NAME": "Nimi",
+    "DESCRIPTION": "Kirjeldus",
+    "ACTIVE": "Aktiivne",
+    "TYPE": "Tüüp",
+    "ICON": "Ikoon",
+    "ADMINURL": "Admini url",
+    "AGENTURL": "Agendi url",
+    "SCRIPTNAME": "Skripti nimi",
+    "SCRIPTPATH": "Skripti tee",
+    "SIDEBAR": "Küljeriba",
+    "VERSION": "Versioon",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "MORE": "Rohkem",
+    "INSTALL_PLUGIN": "Installi lisandmoodul",
+    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
+    "STOP_PLUGIN": "Peata lisandmoodul",
+    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
+    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
+    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
+    "DELETE_PLUGIN": "Eemalda lisandmoodul",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DELETE": "Kustuta",
+    "SAVE": "Salvesta",
+    "INSTALLING": "Installimine",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
+    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
+    "UPLOADING": "Üleslaadimine",
+    "CREATED_AT": "Loomisaeg",
+    "GENERAL": "Üldine",
+    "SETTINGS": "Sätted",
+    "EDITOR": "Redaktor",
     "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
+      "URL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of"
   }
 }
index 96861de..db6abd5 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "CUTDIGIT": "Lõika Numbrid",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
+    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
+    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
+    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
+    "HOPPERWIDGET": "Kokkuvõte",
+    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
+    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
+    "RESET": "Lähtesta",
+    "RESETLIST": "Lähtesta Loendid",
+    "SELECTALL": "Vali Kõik",
+    "UNSELECTALL": "Ära Vali Kõiki",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TIMEOUT": "Aegumine",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
+    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
+    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "TIMER": "Taimer",
+    "MOVE_HOPPERFINAL": "Taasta kontakt",
+    "RESTORECONTACTS": "Taasta Kontaktid",
+    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
+    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "Kutsu tagasi Agent",
+    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
+    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
+    "RECALLME": "Kutsu tagasi Mind",
+    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
+    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
+    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
+    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
+    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "Esialgne Vaikus",
+    "AMDGREETING": "Tervitus",
+    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
+    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
+    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
+    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
+    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
+    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "LOGOUT": "Logi välja",
+    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
+    "LIMITED": "Piiratud",
+    "IVR_CAMPAIGNS": "IVR Kampaaniad",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
-    "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
-    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
+    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
+    "IVRCAMPAIGNS": "IVR Kampaaniad",
+    "MANAGED": "Hallatud",
+    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
+    "HISTORY": "Ajalugu",
+    "SCHEDULEDAT": "Planeeritud ajaks",
+    "HOPPERBLACKS": "Hopperi Must nimekiri",
+    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERFINALS": "Hopperi Finaal",
+    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERHISTORIES": "Kõneajalugu",
+    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
+    "DELETE_HOPPERHISTORY": "Kustuta",
+    "DELETE_HOPPERFINAL": "Kustuta",
+    "CONTACTID": "Kontakti ID",
+    "STARTTIME": "Algusaeg",
+    "RESPONSETIME": "Vastamise Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "STATUS": "Staatus",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
+    "EDIT_HOPPER": "Redigeeri Hopper",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "FINAL": "Finaal",
+    "BLACKLIST": "Must nimekiri",
+    "NAME": "Nimi",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
     "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
-    "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
-    "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "INTERVAL": "Aja Intervall",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
+    "ACTIVE": "Aktiivne",
+    "METHOD": "Meetod",
+    "POWERLEVEL": "Võimsuse Tase",
+    "DROPRATE": "Kukuta Määr",
+    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
+    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
+    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
+    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
+    "CAMPAIGN": "Kampaania",
+    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "ORIGINATE": "Päritolu",
+    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
+    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
+    "ORIGINATETIMEOUT": "Päritolu Aegumine",
+    "QUEUEOPTIONS": "Järjekorra Valikud",
+    "QUEUETIMEOUT": "Järjekorra Aegumine",
+    "CALLYSQUAREPROJECT": "Cally Square Projekt",
+    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
+    "GLOBAL": "Üldine",
+    "GLOBALMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTION": "Ummik",
+    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
+    "BUSYMAXRETRY": "Maks Uusi Katseid",
+    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
+    "NOANSWER": "Vastus puudub",
+    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
+    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "ORIGINATED": "Päritolu",
+    "MESSAGE": "Sõnum",
+    "DROPPED": "Kukutatud",
+    "CREATED_AT": "Loomisaeg",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
     },
     "ERRORS": {
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "INTERVAL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Parool ei ühti",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
+      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "AGENTTIMEOUT": "Agendi Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Uus Katse",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
+      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
+      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
+      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
+      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
+      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
+      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
+      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
+      "PRIORITY": "Prioriteet loendis",
+      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
+      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
+      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
+      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
+      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
+      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
+      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
+      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
+      "PREFIX": "Telefoni eesliide",
+      "ACTIVE": "Aktiivne",
+      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
+      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
+      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
+      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
+      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
+      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
+      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
+      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
+      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
+      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
+      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
+      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=areā€¯. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
+      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
+      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
+      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
+      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
+      "METHOD": "Väljuva valija meetod",
+      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
+      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
+      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
+      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
+      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
+      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
+      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
+      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
+      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
+      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
+      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
+      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
+      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
+      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
+      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
+      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
+      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Muusika Ootel",
+    "ANNOUNCETOAGENT": "Teavitus Agendile",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCEDPREVIEW": "Täpsem",
+    "ADVANCED": "Täpsem",
+    "ADVANCE": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
+    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'There are' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minutite Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Kõnejärgne Töö",
+    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
+    "RINGINUSE": "Kasutusel Helin",
+    "MEMBERDELAY": "Liikme Viivitus",
+    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
+    "MONITORFORMAT": "Salvestuse Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sisenevad Protsessid",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
+    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljuvad Protsessid",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
+    "CUTDIGITS": "Lõika Numbrimärke",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Protsessid",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepost",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-post",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Manusta",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-kirja Sisu",
+    "EMAILSUBJECT": "E-kirja Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kaust",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Suvandid",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonis",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Valimine",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Väline Valimine",
+    "RINGGROUP": "Helista Grupile",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Kõnepost",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Lõpeta kõne",
+    "CUSTOM": "Kohandatus",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast@Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljuv Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
+    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
+    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Häälestamist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Hangup",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise Aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muutunud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
+    "HANGUPCAUSE_38": "38 = Võrk vale",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Kättesaamatu",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Kättesaamatu",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Heliseb",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
+    "PAUSED": "Pausil",
+    "DISPOSITION": "Kasutamine",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Katkestatud",
+    "UNMANAGED": "Haldamata",
+    "REDIRECT_TO_NUMBER": "Suuna numbrile",
+    "REDIRECT_TO_AGENT": "Suuna agendile",
+    "CLOSING": "Sulgemine",
+    "AVG_HOLD_TIME": "Avg Ooteage",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Tagasi lükatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse Nimi",
+    "ARGUMENTS": "Argumendid",
+    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
+    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
+    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
+    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
+    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
+    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
+    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
+    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
+    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
+    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
+    "ENABLED": "Lubatud",
+    "READY": "Valmis",
+    "PAUSE": "Paus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
+    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_LISTS": "Kõik Nimekirjad",
+    "SELECTED_LISTS": "Valitud Nimekirjad",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "WAITING_FOR_AGENT": "Agendi Ootamine",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "RUNNING": "Jookseb",
+    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
+    "AGENTS_NOT_LOGGED": "Agent pole logitud",
+    "NOT_ACTIVE": "Pole Aktiivne",
+    "IS_DISACTIVED": "Deaktiveeritud",
+    "BACKUPTRUNK": "Varumagistraal",
+    "GLOBALINTERVAL": "Üldine Intervall",
+    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
+    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
+    "INTERVAL_IS_NULL": "Intervall on Null",
+    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
+    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
+    "TOTAL_MANAGED": "Kokku Hallatud",
+    "OPEN": "Avatud",
+    "FRESH": "Värske",
+    "CLOSED": "Suletud",
+    "ALWAYS": "Alati",
+    "NEVER": "Mitte kunagi",
+    "ONLY_IF_OPEN": "Ainult kui Avatud",
+    "CHECKDUPLICATE": "Kontrolli Duplikaati",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "SÕnum",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Valige kampaania",
-    "SELECT_DATE": "Valige kuupäev",
-    "SELECT_TYPE": "Valige Tüüp",
+    "SELECT_CAMPAIGN": "Vali kampaania",
+    "SELECT_DATE": "Vali kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Max proovib uuesti",
+    "ABANDONEDMAXRETRY": "Maks uued katsed",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agent Keeldu",
-    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
+    "AGENTREJECT": "Agendi Keeldumine",
+    "AGENTREJECTMAXRETRY": "Maks uued katsed",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Tilk",
-    "DROPMAXRETRY": "Max proovib uuesti",
+    "DROP": "Katkestamine",
+    "DROPMAXRETRY": "Maks uued katsed",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Masin",
-    "MACHINEMAXRETRY": "Max proovib uuesti",
+    "MACHINE": "Seade",
+    "MACHINEMAXRETRY": "Maks uued katsed",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
+    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "ADDITIONALPHONES": "Täiendavad telefonid",
-    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index 23ab65b..c07979f 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "ADVANCED": "Advanced",
-    "PROXY": "Proxy",
-    "TOKEN": "Token",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "DELETE": "Delete",
-    "CANNEDANSWERS": "Canned Answers",
-    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
-    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "REALTIME": "Realtime",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NAME": "Name",
-    "OPENCHANNELQUEUES": "Open Channel Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "ADVANCED": "Täpsem",
+    "PROXY": "Puhver",
+    "TOKEN": "Luba",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "DELETE": "Kustuta",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
+    "TAGS": "Sildid",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "REALTIME": "Reaalaeg",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NAME": "Nimi",
+    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsing",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "The field text is required",
-      "NAME_REQUIRED": "Mandatory field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "REPLYURI_REQUIRED": "Mandatory field",
-      "REPLYURI_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "CONDITION_REQUIRED": "Mandatory field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "REPLYURI_REQUIRED": "Kohustuslik Väli",
+      "REPLYURI_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strategy",
+    "STRATEGY": "Strateegia",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "PRIORITY": "Priority",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
-    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
-    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
-    "PENALTY": "Penalty",
-    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
-    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
-    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
-    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
+    "QUEUE": "Järjekord",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "PRIORITY": "Prioriteet",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
+    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
+    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
+    "PENALTY": "Trahv",
+    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
+    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "lvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
+    "MOTIONADDRESS": "Liikuv Aadress",
+    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
+    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
+    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "OPENCHANNEL": "Open Channel",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
-    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
-    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
-    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
-    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
-    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
-    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "REPLYURI": "Reply URL",
-    "RECEIVEURI": "Receive URL",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka tagasi",
+    "REJECTMETHOD": "Lükka tagasi Meetod",
+    "REJECTURL": "Lükka tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "OPENCHANNEL": "Ava Kanal",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
+    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
+    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
+    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
+    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
+    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
+    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "REPLYURI": "Vastuse URL",
+    "RECEIVEURI": "Vastuvõtu URL",
     "HELP": {
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
+      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
+      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Ava",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
+    "FILTERS": "Filtrid",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "SELECT_ACCOUNT": "Vali konto",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sule",
     "INFO": "Info",
-    "KEY": "Key",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
-    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
-    "SEND": "Send",
-    "TO": "To",
-    "MAPKEY": "Map Key",
+    "KEY": "Võti",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Pausile",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "Sõnum",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MAPKEY": "Kaardi Võti",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index be8be0f..90c89fb 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Plugins",
+    "PLUGINS": "Lisandmoodul",
     "ERRORS": {},
     "HELP": {}
   }
index 054b0d7..3fc4dff 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
-    "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
+    "MOTIONBARREMEMBERME": "Pea mind meeles",
+    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
+    "VIRTUAL": "Vestlus",
+    "VOICE": "Hääl",
+    "SESSIONS": "Sessioonid",
+    "ADDONS": "Lisandmoodul",
+    "REPORT": "Raport",
+    "SPLIT": "Poolita raportit",
+    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
+    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
+    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
+    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBAR": "Liikumisriba",
+    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
+    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
+    "TURNADDR": "TURN Aadress",
+    "TURN_USERNAME": "TURN Kasutajanimi",
+    "TURN_PASSWORD": "TURN Parool",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
-    "MOUNT_POINT": "Mount",
+    "ENABLED": "Lubatud",
+    "DISABLED": "Keelatud",
+    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
+    "RELOAD": "Laadi uuesti",
+    "VERIFY": "Kinnita",
+    "INTERFACE": "Liides",
+    "UPDATING": "Värskendamine",
+    "REMOTE_VERSION": "Kaugversioon",
+    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
+    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
+    "SYSTEM": "Süsteem",
+    "FILE_SYSTEM": "Faili Süsteem",
+    "PROCESSES": "Protsess",
+    "MOUNT_POINT": "Ühenda",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "FAX": "Fax",
-    "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "TOTAL": "Totaalne",
+    "USED": "Kasutatud",
+    "FREE": "Vaba",
+    "NAME": "Nimi",
+    "STATE": "Olek",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "MESSAGING": "Sõnum",
+    "FAX": "Faks",
+    "OPENCHANNEL": "Avatud Kanal",
+    "AGENTS": "Agendid",
+    "USERS": "Kasutajad",
+    "TELEPHONES": "Telefonid",
+    "STAFF": "Personal",
+    "CHANNELS": "Kanalis",
+    "MODULES": "Moodulid",
+    "CM": "Kontaktide Haldur",
+    "DIALER": "Valija",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "CUSTOM": "Kohandamine",
+    "UPDATE": "Värskenda",
+    "OTHERS": "Teised",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
+    "NETWORKS": "Võrgud",
+    "UPDATES": "Värskendused",
+    "LICENSE": "Litsents",
+    "ID": "ID",
+    "MIN_INTERNAL": "Minm Sisemine",
+    "MIN_MAILBOX": "Min Postkast",
+    "INSTALLED_AT": "Installimise aeg",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_GENERAL": "Redigeeri Üldine",
+    "SECURE_PASSWORD": "Kindlusta Parool",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
-    "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
+    "DEFAULT_LOGO": "Vaikimisi Logo",
+    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
+    "WHITELABEL": "Valge Sedel",
+    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
+    "HEADER_WHITELABEL": "Päis Valge Silt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMTP_SERVICE": "Teenus",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Kasutajanimi",
+    "DESCRIPTION": "Kirjeldus",
+    "SMTP_PASSWORD": "Parool",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Turvaline",
+    "TYPE": "Tüüp",
+    "ADDRESS": "Aadress",
+    "NEW_NETWORK": "Uus Võrk",
+    "ADD_NETWORK": "Lisa Võrk",
     "HELP": {
-      "ADDRESS": "External (public) ip address",
-      "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "ADDRESS": "Väline (avalik) IP-aadress",
+      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
+      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
+      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
+      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
+      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
+      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
+      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
+      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
+      "ADDRESS_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
+      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PLAN_REQUIRED": "Kohustuslik väli",
+      "LICENSE_REQUIRED": "Kohustuslik väli",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
+      "WRONG_FORMAT": "Vale formaat"
     },
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
-    "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
-    "STUNADDR": "STUN Address",
+    "EDIT_NETWORK": "Redigeeri Võrku",
+    "DELETE_NETWORK": "Kustuta Võrk",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Ühtegi",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "REQUEST_LICENSE": "Päri Litsentsi",
+    "EMAIL": "E-mail",
+    "SEND": "Saada",
+    "PLAN": "Plaan",
+    "MONTH_TO_MONTH": "Kuust kuusse",
+    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
+    "USEFUL_COMMANDS": "Kasulikud Käsud",
+    "COMMAND": "Käsk",
+    "PM2_LIST": "Loenda kõik protsessid",
+    "PM2_START": "Alusta protsessi ID või nime järgi",
+    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
+    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
+    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
+    "PASSWORD": "Parool",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "STUNADDR": "STUN Aadress",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
-    "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
-    "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CURRENT_VERSION": "Jooksev versioon",
+    "CUSTOMIZATIONS": "Kohandamised",
+    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
+    "NEW_VERSION": "Uus Versioon",
+    "TRIAL_VERSION": "Prooviversioon",
+    "TOKEN": "Luba",
+    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NEW_TOKEN": "Uus Luba",
+    "PRICES": "Hinnad",
+    "UPDATE_LICENSE": "Värskenda Litsentsid",
+    "LOGOLOGIN": "Logini Logo",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "GLOBAL": "Üldine",
+    "SMTP_AUTHENTICATION": "Autentimine",
+    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
+    "ACCOUNTNAME": "Konto Nimi",
+    "EMAILADDRESS": "E-posti Aadress",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
+    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-kiri kellele",
+    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
+    "PAGE_TITLE": "Lehekülje Pealkiri",
+    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
+    "PERPETUAL": "Lõpmatu",
+    "SECURITY_SUITE": "Turvapakett",
+    "ANNUALLY": "Iga-aastaselt",
+    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
+    "MESSAGESALIGNMENT": "Sõnumi Joondus",
+    "ENTER_LICENSE": "Sisesta oma litsents",
+    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Ämber",
+    "BUCKET": "Salv",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp-pistik",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp ühendus",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 9d0b322..2645fe3 100644 (file)
 {
   "SMS": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "AUTHID": "Autentimise ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "SMSCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_SMSCANNEDANSWER": "Redigeeri",
+    "DELETE_SMSCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
+    "DELETE": "Kustuta",
+    "SENDERSTRING": "Saatja String",
+    "DELIVERYREPORT": "Kohaletoimetamise Raport",
+    "METHOD": "Meetod",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "SPYINTERACTION": "Spioon",
+    "AUTOREPLY": "Automaatvastus",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "TIMES": "Kordade arv suhtluse korda",
+    "TEXT": "Tekst",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MESSAGE": "Sõnum",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "PROXY": "Puhver",
+    "ADVANCED": "Täpsem",
+    "MOTIONPROXY": "Puhver või Liikumise Domeen",
+    "REALTIME": "Reaalaeg",
+    "KEY": "Võti",
+    "NAME": "Nimi",
+    "SMSQUEUES": "SMS Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "AUTHID_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
+      "METHOD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "PHONE_REQUIRED": "Kohustuslik Väli",
+      "SID_REQUIRED": "Kohustuslik Väli",
+      "TOKEN_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "TYPE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
+    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
+    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMSACCOUNTS": "SMS Kontod",
+    "TYPE": "Tüüp",
+    "PHONE": "Telefon",
     "SID": "SID",
-    "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
+    "TOKEN": "Luba",
+    "SMSTYPE": "SMS Tüüp",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_SMSACCOUNT": "Lisa SMS Konto",
+    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
+    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Method",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "SMS": "SMS",
-    "ID": "Id",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "ID": "ID",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SMSDISPOSITIONS": "SMS Kasutused",
+    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
+    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
+    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
+    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
+    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
+    "NEW_SMSQUEUE": "Uus SMS Järjekord",
+    "NEW_SMSACCOUNT": "Uus SMS Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "HELP": {
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
       "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu Lehekülje kohta",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
+    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
+    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "RECEIVEURL": "URL vastuvõtmine",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
     "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
+    "QUEUE": "Järjekord",
+    "TIMEOUT": "Aegumine",
+    "VALUE": "Väärtus",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "PRIORITY": "Prioriteet",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali staatus",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "INFO": "Teave",
+    "ACCOUNTSID": "Konto SID",
+    "AUTHTOKEN": "Autentimisluba",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agentdid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
+    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 0d93402..75fb8d9 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Enable Video Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "HOTDESK": "Hostseade",
+    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
+    "OLD_PASSWORD": "Vana Parool",
+    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
+    "SECURITY_SUITE": "Turvapakett",
+    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Sätted",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
-    "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
-    "A_TO_Z": "(A to Z)",
-    "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "DELETE",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
+    "DTLSCERTFILE": "TLS sertifikaat",
+    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
+    "CONTEXT": "Kontekst",
+    "RINGINUSE": "Helistamine Kasutusel",
+    "USERS": "Kasutajad",
+    "AGENTS": "Agendid",
+    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "SELECTED": "Valitud",
+    "DELETE_SELECTED": "Kustuta valitud",
+    "EXPORT_SELECTED": "Ekspordi valitud",
+    "ALL_USERS": "Kõik kasutajad",
+    "ALL_AGENTS": "Kõik agendid",
+    "SORT": "sordi",
+    "NAME": "Nimi",
+    "FULLNAME": "Täisnimi",
+    "A_TO_Z": "(A-st Z-ni)",
+    "Z_TO_A": "(Z-st to A-ni)",
+    "MORE": "Rohkem",
+    "DELETE_USER": "Kustuta Kasutaja",
+    "EDIT_USER": "Redigeeri Kasutajat",
+    "DELETE_AGENT": "Kustuta Agent",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "DELETE": "KUSTUTA",
+    "SAVE": "SALVESTA",
+    "ADD_USER": "LISA KASUTAJA",
+    "ADD_AGENT": "LISA AGENT",
+    "NO_RESULTS": "Tulemused puuduvad..",
+    "CLOSE_DIALOG": "Sule dialoog",
+    "NAME_REQUIRED": "Nimi (nõutav)",
+    "USERNAME": "Kasutajanimi",
+    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
+    "PHONE_NUMBER": "Telefoninumber",
+    "EMAIL": "E-mail",
+    "PASSWORD": "Parool",
     "ERRORS": {
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
+      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
+      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
+      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
+      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
+      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
+      "SIPPORT_REQUIRED": "Kohustuslik väli",
+      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
+      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
+      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
+      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
+      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
+      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
+    "ACCOUNT": "Konto",
+    "VOICE": "Hääl",
+    "CREATED_AT": "Loomisaeg",
+    "ROLE": "Roll",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "DESCRIPTION": "Kirjeldus",
+    "CHANGE_AVATAR": "Muuda Avatari",
+    "GENERAL": "Üldine",
+    "INTERNAL": "Sisemine",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
+    "ALLOWCODECS": "Lubatud Koodeks",
     "HELP": {
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
-      "SIPPORT": "Default: 5060",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
+      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
+      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
+      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
+      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
+      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
+      "SIPEXPIRES": "Vaikimisi: 160",
+      "SIPPORT": "Vaikimisi: 5060",
+      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
+      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
+      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "CALLGROUP": "Agendi kõnegrupp",
+      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
+      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldurā€¯",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "Uus Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "CHANGE_PASSWORD": "Muuda Parooli",
+    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
+    "CHANGEPASSWORD_USER": "Muuda Parooli",
+    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
+    "LOGININPAUSE": "Sisselogimine Pausis",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
-    "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
+    "OTHER_CHANNELS": "Teised Kanalid",
+    "CHATCAPACITY": "Vestluse Võimsus",
+    "MAILCAPACITY": "E-posti Maht",
+    "FAXCAPACITY": "Faksi Maht",
+    "SMSCAPACITY": "SMSi Maht",
+    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
+    "MOTIONBAR": "Liikumisriba",
+    "SETTINGS": "Sätted",
+    "AUTOANSWER": "Automaatvastus",
+    "ENABLESETTINGS": "Luba Sätted",
+    "CALL_FORWARDING": "Kõne Suunamine",
+    "UNCONDITIONAL": "Tingimusteta",
+    "UNCONDITIONALNUMBER": "Tingimusteta Number",
+    "NOREPLY": "Vastamine puudub",
+    "NOREPLYNUMBER": "Number, millele ei saa vastata",
+    "BUSY": "Hõivatud",
+    "BUSYNUMBER": "Hõivatud Number",
+    "REMOTE_CONTROL": "Kaugjuhtimine",
+    "REMOTECONTROL": "Kaugjuhtimine",
+    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP aegub [sek]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PENALTY": "Trahv",
+    "ACCOUNTNAME": "Konto Nimi",
+    "ADD_TELEPHONE": "Lisa Telefon",
+    "EDIT_TELEPHONE": "Redigeeri Telefoni",
+    "DELETE_TELEPHONE": "Kustuta Telefon",
+    "TEAMS": "Tiimid",
+    "DELETE_TEAM": "Kustuta Tiim",
+    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
+    "EDIT_TEAM": "Redigeeri Tiimi",
+    "TYPE": "Tüüp",
+    "TELEPHONES": "Telefonid",
+    "CALLERID": "Helistaja ID",
+    "ENABLERECORDING": "Luba Salvestamine",
+    "STAFF": "Personal",
+    "ID": "ID",
+    "NEW_USER": "Uus Kasutaja",
+    "NEW_AGENT": "Uus Agent",
+    "NEW_TELEPHONE": "Uus Telefon",
+    "NEW_TEAM": "Uus Tiim",
+    "ADD_TEAM": "Lisa Tiim",
+    "JOIN_QUEUE": "Liitu Järjekorraga",
+    "CAPACITY": "Maht",
+    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
+    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
+    "TEAMADD_AGENT": "Lisa Agent Tiimi",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "PERMISSIONS": "Load",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
+    "CALLGROUP": "Helistamise Grupp",
+    "PICKUPGROUP": "Vastuvõtu Grupp",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
+    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
+    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
+    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
+    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
+    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
+    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
+    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
+    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
+    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
+    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
+    "VOICEMAIL": "Kõnepost",
+    "SHOWWEBCONTROL": "Tüpoloogia",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READANDEDIT": "Read, Edit",
-    "READANDEDITANDDELETE": "Read, Edit, Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
-    "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
-    "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "ADD_USERPROFILE": "Lisage kasutaja profiil",
-    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
+    "CALLFORWARDING": "Kõne Suunamine",
+    "DND": "Ära tülita pausi jooksul",
+    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
+    "ENABLEDTMFTONE": "Luba Dtmf toonid",
+    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
+    "ENCRYPTION": "Krüptimine",
+    "CHANNELS": "Kanalid",
+    "CHAT": "Vestlus",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
+    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
+    "EDITPERMISSIONS": "Redigeerimise Luba",
+    "READANDEDIT": "Loe, Redigeeri",
+    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
+    "GENERAL_PERMISSIONS": "Üldine",
+    "ENABLEMESSENGER": "Luba Sisemine Messenger",
+    "OUTBOUNDPROXY": "Väljuv Puhver",
+    "PHONE": "Telefon",
+    "MOBILE": "Mobiil",
+    "PREFIXREQUIRED": "Eesliide Nõutav",
+    "MANAGE_PERMISSIONS": "Halda Lubasid",
+    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
+    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
+    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
+    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
+    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
+    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
+    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
+    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
+    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
+    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
+    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
+    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
+    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
+    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
+    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
+    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
+    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
+    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
+    "ALL_PROJECTS": "Kõik Cally Square Projektid",
+    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
+    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
+    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
+    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
+    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
+    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
+    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
+    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
+    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
+    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
+    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
+    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
+    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
+    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
+    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
+    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
+    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
+    "ADD_USERPROFILE": "Lisa kasutaja profiil",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sulge",
-    "CONFIRM": "Kinnitage",
+    "CLOSE": "Sule",
+    "CONFIRM": "Kinnita",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereerima",
+    "GENERATE": "Genereeri",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereerige",
+    "REGENERATE": "Regenereeri",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
+    "TEAMS_ASSOCIATION": "Tiimidee liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
-    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
+    "WHATSAPP": "WhatsApp ühendus",
+    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
+    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
+    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
-    "AUTO_ANSWER": "Automaatne vastus",
-    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
-    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
-    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
-    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
-    "FAX_AUTOANSWER": "Faksi automaatne vastus",
-    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
-    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
-    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
   }
 }
index 48b85d3..e2ccdbf 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+    "BOT": "Häälbot",
+    "CLONE_TRUNK": "Magistraali Kloonimine",
+    "DISPOSITIONS": "Kasutused",
+    "NEW_DISPOSITION": "Uud Kasutus",
+    "ADD_DISPOSITION": "Lisa Kasutus",
+    "EDIT_DISPOSITION": "Redigeeri Kasutust",
+    "DELETE_DISPOSITION": "Kustuta Kasutus",
+    "RUN_SCHEDULE": "Käivita graafik",
+    "SENDIFEMPTY": "Saada, kui on tühi",
+    "NEXTCONTACT": "Järgmine",
+    "OUTBOUND_ROUTE": "Väljuv Teekond",
+    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
+    "FONTSIZE": "Fonsi Suurus",
+    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
-    "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
-    "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "BACKGROUND": "Taust",
+    "FOREGROUND": "Esiplaan",
+    "NONE": "Pole ühtegi",
+    "TOTAL": "Kokku",
+    "ABANDONED": "Tagasilükatud",
+    "WAITING": "Ootel",
+    "TALKING": "Rääkimine",
+    "ANSWERED": "Vastatud",
+    "UNMANAGED": "Haldamata",
+    "CUSTOMTYPE": "Kohandatud [tee]",
+    "WEBREPORT": "Veebi Raport",
+    "PIECHART": "Sektordiagramm",
+    "MULTIBARCHART": "Tulpdiagramm",
+    "MOVE_WIDGET": "Liiguta Vidinat",
+    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "METRIC": "Mõõdik",
+    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
+    "SERIE1": "Seeria 1",
+    "SERIE2": "Seeria 2",
+    "SERIE3": "Seeria 3",
+    "REFRESH": "Värskenda [s]",
+    "FORMAT": "Formaat",
+    "PATH": "Absoluutne tee",
+    "ALL_USERS": "Kõik Kasutajad",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "ADD_WIDGET": "Lisa Vidin",
+    "COLOR": "Värv",
+    "FAX": "Faks",
+    "INTERACTION": "Suhtlus",
+    "MESSAGE": "Sõnum",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
+    "CALL": "Kõne",
+    "NAME": "Nimi",
+    "TRUNKS": "Magistraalid",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
+      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "REFRESH_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "PATH_REQUIRED": "Kohustuslik väli",
+      "FORMAT_REQUIRED": "Kohustuslik väli",
+      "REPORT_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "ACCOUNT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
+      "CALLERID_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
+      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
+      "MONTHDAY_REQUIRED": "Kohustuslik väli",
+      "HOUR_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "URL_REQUIRED": "Kohustuslik väli",
+      "URL_MUST_VALID_URL": "Vale formaat",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
+      "TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
+      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
+      "INTEGRATION_REQUIRED": "Kohustuslik väli",
+      "LIST_REQUIRED": "Kohustuslik väli",
+      "TEMPLATE_REQUIRED": "Kohustuslik väli",
+      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
+      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_TO_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_FROM_INVALID": "Vale formaat",
+      "TIME_RANGE_TO_INVALID": "Vale formaat",
+      "ACTION_REQUIRED": "Kohustuslik väli",
+      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "LOCATION_REQUIRED": "Kohustuslik väli",
+      "OUTPUT_REQUIRED": "Kohustuslik väli",
+      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
+      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
+      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Saladus",
+    "DEFAULTUSER": "Vaikimisi Kasutaja",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_TRUNK": "Lisa Magistraal",
     "HELP": {
-      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "BODY": "If not filled out, the default value will be sent",
+      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
+      "SECRET": "Autentimise parool",
+      "HOST": "Domeen või hosti nimi",
+      "DEFAULTUSER": "Autentimise kasutajanimi",
+      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
+      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
+      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
+      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
+      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
+      "PORT": "SIP pordi number",
+      "CONTEXT": "Kontekst magistraali jaoks",
+      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
+      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
+      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
+      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
+      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
+      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
+      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
+      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
+      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
+      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
+      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
+      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
+      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
+      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
+      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
+      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisestage pealkiri",
-      "SCRIPT": "Sisestage skript",
-      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
+      "INFO": "Sisesta pealkiri",
+      "SCRIPT": "Sisesta skript",
+      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1ā€“10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
-    "DTMFMODE": "DTMF Mode",
+    "EDIT_TRUNK": "Muuda Magistraali",
+    "DELETE_TRUNK": "Kustuta Magistraal",
+    "CREATED_AT": "Loomisaeg",
+    "SETTINGS": "Sätted",
+    "ADVANCED": "Täpsem",
+    "OTHER": "Muu",
+    "ACTIVE": "Aktiivne",
+    "CONTEXT": "Kontekst",
+    "CALLERID": "Helistaja ID",
+    "TYPE": "Tüüp",
+    "DTMFMODE": "DTMF Režiim",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
-    "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
+    "QUALIFY": "Kvalifitseerima",
+    "ALLOWCODECS": "Lubatud Koodeks",
+    "INSECURE": "Ebaturvaline",
+    "REGISTRY": "Register",
+    "DIRECTMEDIA": "Otsene Meedium",
+    "CALLCOUNTER": "Kõnede Loendur",
+    "FROMDOMAIN": "Domeenilt",
+    "FROMUSER": "Kasutajalt",
+    "OUTBOUNDPROXY": "Väljaminev Puhver",
+    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
+    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
+    "ENCRYPTION": "Krüpteerimine",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
+    "SAVE": "Salvesta",
+    "VARIABLES": "Muutujad",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "EDIT_VARIABLE": "Redigeeri Muutuja",
+    "DELETE_VARIABLE": "Kustuta Muutuja",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "TAGS": "Sildid",
+    "ADD_TAG": "Lisa Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "DELETE_TAG": "Kustuta Silt",
+    "PAUSES": "Pausile",
+    "ADD_PAUSE": "Lisa Paus",
+    "EDIT_PAUSE": "Redigeeri Pausi",
+    "DELETE_PAUSE": "Kustuta Paus",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
+    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "KEY": "Võti",
+    "VALUE": "Väärtus",
+    "SOUNDS": "Helid",
+    "EDIT_SOUND": "Redigeeri Heli",
+    "DELETE_SOUND": "Kustuta Heli",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "UPLOADING": "Üleslaadimine",
+    "TRIGGERS": "Käivitamised",
+    "EDIT_TRIGGER": "Redigeeri Käivitust",
+    "DELETE_TRIGGER": "Kustuta Käivitus",
+    "ADD_TRIGGER": "Lisa Käivitus",
+    "DELETE": "Kustuta",
+    "AUTOMATIONS": "Automaatika",
+    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
+    "DELETE_AUTOMATION": "Kustuta Automaatika",
+    "ADD_AUTOMATION": "Lisa Automaatika",
+    "INTERVALS": "Intervallid",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_INTERVAL": "Kustuta Intervall",
+    "ADD_INTERVAL": "Lisa Intervall",
+    "TOOLS": "Tööriistad",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
-    "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
+    "DOWNLOAD_SOUND": "Laadi alla Heli",
+    "UPLOAD_SOUND": "Tööriistad",
+    "CHANNEL": "Kanal",
+    "NEW_TRIGGER": "Uus Käivitus",
+    "GENERAL": "Üldine",
+    "STATUS": "Staatus",
+    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
+    "ALLCONDITIONS": "Täida kõik need tingimused:",
+    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
+    "ACTIONS": "Tegevused:",
+    "NEW_AUTOMATION": "Uus Automaatika",
+    "TIMEOUT": "Aegumine",
+    "PEERSTATUS": "Partneri Staatus",
+    "CALL_LIMIT": "Kõnede Limiit",
+    "OTHERFIELDS": "Muud Väljad",
+    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW_TAG": "Uus Silt",
+    "NEW_PAUSE": "Uus Paus",
+    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "NEW_TRUNK": "Uus Magistraal",
+    "FROM": "Kellelt",
+    "TO": "Kellele",
+    "WEEKDAY": "Nädalapäev",
+    "MONTHDAY": "Kuupäev",
+    "MONTH": "Kuu",
+    "ALWAYS": "Alati",
+    "MON": "Esmaspäev",
+    "TUE": "Teisipäev",
+    "WED": "Kolmapäev",
+    "THU": "Neljapäev",
+    "FRI": "Reede",
+    "SAT": "Laupäev",
+    "SUN": "Pühapäev",
+    "JAN": "Jaanuar",
+    "FEB": "Veebruar",
+    "MAR": "Märts",
+    "APR": "Aprill",
+    "MAY": "Mai",
+    "JUN": "Juuni",
+    "JUL": "Juuli",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "October",
+    "OCT": "Oktober",
     "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
-    "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
+    "DEC": "Detsember",
+    "PASSWORD": "Parool",
+    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
+    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
+    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
+    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
+    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
+    "SCHEDULER": "Plaanija",
+    "NEW_SCHEDULE": "Uus Plaanija",
+    "ADD_SCHEDULE": "Lisa Plaanija",
+    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
+    "DELETE_SCHEDULE": "Kustuta Plaanija",
+    "SENDMAIL": "Saada E-mail",
+    "CONFIGURATION": "Konfiguratsioon",
+    "MAIL": "E-mail",
+    "REPORTTYPE": "Rapordi Tüüp",
+    "REPORT": "Raport",
+    "OUTPUT": "Väljund",
+    "EXECUTEON": "Käivita",
+    "REPORTRANGE": "Rapordi Vahemik",
+    "VALIDITYSTART": "Alguse Aeg",
+    "VALIDITYEND": "Lõpu Aeg",
+    "EXECUTEEVERY": "Täida iga",
+    "ACCOUNT": "Konto",
+    "EMAILADDRESS": "E-maili aadress",
+    "EMAILCCADDRESS": "Koopia",
+    "EMAILBCCADDRESS": "Salakoopia",
+    "CURRENTDAY": "Jooksev Päev",
+    "DAILY": "Igapäevane",
+    "WEEKLY": "Iganädalane",
+    "MONTHLY": "Igakuine",
+    "PREVIOUS_DAY": "Eemine päev",
+    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
+    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
+    "LAST_MONTH": "Viimane Kuu",
+    "WEEKDAYS": "Nädalapäevad",
+    "HOUR": "Tund",
+    "DEFAULT": "Vaikimisi",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 minutit",
+    "30MIN": "30 minutit",
+    "1H": "1 tund",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
+    "OPENCHANNEL": "Ava Kanal",
+    "TEMPLATES": "Mallid",
+    "EDIT_TEMPLATE": "Redigeeri Malli",
+    "DELETE_TEMPLATE": "Kustuta Mall",
+    "NEW_TEMPLATE": "Uus Mall",
+    "ADD_TEMPLATE": "Lisa Mall",
+    "CONTENT": "Sisu",
+    "FIELD": "Väli",
+    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
+    "ACTION": "Tegevus",
+    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
+    "DELETE_ANYCONDITION": "Kustuta Tingimus",
+    "NEW_ANYCONDITION": "Uus Tingimus",
+    "ADD_ANYCONDITION": "Lisa Tingimus",
+    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
+    "DELETE_ALLCONDITION": "Kustuta Tingimus",
+    "NEW_ALLCONDITION": "Uus Tingimus",
+    "ADD_ALLCONDITION": "Lisa Tingimus",
+    "EDIT_ACTION": "Redigeeri Tegevust",
+    "DELETE_ACTION": "Kustuta Tegevus",
+    "NEW_ACTION": "Uus Tegevus",
+    "ADD_ACTION": "Lisa Tegevus",
+    "QUEUE": "Järjekord",
+    "CALL_STATUS": "Kõne Staatus",
+    "OUTBOUNDROUTE": "Väljaminev Tee",
+    "EQUALS": "Võrduvad",
+    "NOT_EQUALS": "Ei Võrdu",
+    "CONTACT_MANAGER": "Kontaktide Haldur",
+    "INTEGRATIONS": "Integratsioonid",
+    "MOTIONBAR": "Liikumisriba",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL Edastamine",
+    "WEB_POPUP": "Veebi Hüpik",
+    "LIST": "Loend",
+    "INTEGRATION": "Integratsioon",
+    "TEMPLATE": "Mall",
     "URL": "URL",
-    "APPLICATION": "Application",
+    "APPLICATION": "Rakendus",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "NEW_INTERVAL": "Uus Intervall",
+    "OPERATOR": "Operaator",
+    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
+    "YES": "Jah",
+    "NO": "Ei",
+    "SUBJECT": "Teema",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "BROWSER": "Brauser",
+    "INTERVAL": "Intervall",
     "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "TIME_RANGE": "Ajavahemik",
+    "WEEK_DAYS": "Nädalapäevad",
+    "MONTH_DAYS": "Kuupäevad",
+    "MONTHS": "Kuud",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
+    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
+    "DASHBOARD": "Töölaud",
+    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
+    "COUNTER": "Loendur",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "Kell",
+    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
+    "EDIT_WIDGET": "Redigeeri Vidinat",
+    "DELETE_WIDGET": "Kustuta Vidin",
+    "FLIP_WIDGET": "Pööra Vidinat",
+    "TITLE": "Pealkiri",
+    "UPDATE": "Uuenda",
+    "LAYOUT": "Paigutus",
+    "BACKGROUND_COLOR": "Taustavärv",
+    "FOREGROUND_COLOR": "Esiplaani Värv",
+    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
+    "THEME": "Teema",
+    "LIGHT": "Hele",
+    "DARK": "Tume",
+    "TIMEZONE": "Ajavöönd",
+    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
+    "TOOLS_QUERY": "Päring",
+    "SELECT": "Vali",
+    "WHERE": "Kus",
+    "BACK": "Tagasi",
+    "PROJECT": "Projekt",
+    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
+    "GOTO_TRUNK": "Mine Magistraali",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
+    "MINUTES": "Minutid",
+    "HOURLY": "Igatunnine",
+    "YEARLY": "Iga-aastane",
+    "EVERY": "Iga",
+    "MINUTE": "Minut",
+    "ON_SECOND": "Teisel",
+    "HOUR_ON_MINUTE": "Tund minutil",
+    "AND_SECOND": "Ja teine",
     "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
+    "START_TIME": "Algusaeg",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
+    "LAST": "Eelmine",
+    "LASTUNIT": "Üksus",
+    "MAILACCOUNT": "E-maili Konto",
     "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
+    "PAST_THE_HOUR": "Üle täistunni",
+    "DAY": "Päev",
+    "WEEK": "Nädal",
+    "YEAR": "Aasta",
     "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
+    "PAI": "P-Tõendatud-Identiteet",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "EVENTVARIABLES": "Sündmuse Muutujad",
+    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
+    "LOCATION": "Asukoht",
+    "NEW_TAB": "Uus Vahekaart",
+    "NEW_WINDOW": "Uus Aken",
+    "WINDOWWIDTH": "Akna Laius(px)",
+    "WINDOWHEIGHT": "kna Kõrgus(px)",
+    "BODY": "Sisu",
+    "REPORTFOLDER": "Rapordi Kaust",
+    "REPORTSUBFOLDER": "Rapordi Alamkaust",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP": "WhatsApp-ühendus",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Globaalid",
+    "GLOBALS": "Üldised",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Motion Bar",
+    "MOTION_BAR": "Liikumisriba",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
+    "ALL_DISPOSITIONS": "Kõik kasutused",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
-    "ADD_CONTACTITEMTYPE": "Lisama",
-    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
-    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
-    "ORDER_BY": "Telli",
-    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
-    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
-    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
-    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
   }
 }
index 116fbad..3b220a5 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "Id",
-    "INTERACTIONID": "Koostoime ID",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "ID": "ID",
+    "INTERACTIONID": "Suhtluse ID",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NO_RATING": "Hinnang puudub",
-    "OF": "kohta",
-    "PAGE": "Leht",
+    "OF": "of",
+    "PAGE": "Lehekülg",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Omadused",
+    "PROPERTIES": "Atribuudid",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvestage lõpuaeg",
-    "RECORDSTARTTIME": "Salvestage algusaeg",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECORDENDTIME": "Salvesta lõpuaeg",
+    "RECORDSTARTTIME": "Salvesta algusaeg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvestage algusaeg",
+    "STARTEDAT": "Salvesta algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index e8fc04a..fe28adb 100644 (file)
 {
   "VOICE": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
+    "WAITING_FOR_AGENTS": "Agendi ootel",
+    "ACTIVE": "Aktiivne",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "STATUS": "Staatus",
+    "TIMER": "Taimer",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "EDIT_TRUNK": "Redigeeri Magistraal",
+    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
+    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
+    "NAME": "Nimi",
+    "LOGOUT": "Logi välja",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "MOHSOUNDS": "Moh Helid",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
+    "APPLICATIONS_LIST": "Rakenduste Loend",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
     },
     "ERRORS": {
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
+      "TRUNK_REQUIRED": "Kohustuslik väli",
+      "VARIABLE_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
+      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
     },
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "TIMEOUT": "Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Proovi uuesti",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
+      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
+      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
+      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
+      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
+      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
+      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
+      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
+      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
+      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
+      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
+      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
+      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaegā€¯. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimeneā€¯. Määramata=teavitust pole.",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere areā€¯. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootelā€¯. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg onā€¯. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekunditā€¯. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eestā€¯. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
+      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
+      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
+      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
+      "NAME": "ja erimärgid (._) on toetatud",
+      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Muusika Ooteajal",
+    "ANNOUNCETOAGENT": "Teavita Agenti",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCED": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
+    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'Seal on' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minuti Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Tööjärgne Kõne",
+    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
+    "RINGINUSE": "Helin Kasutusel",
+    "MEMBERDELAY": "Osalise Viivitus",
+    "TIMEOUTRESTART": "Aegumise Lähtestamine",
+    "MONITORFORMAT": "Salvestamise Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "VARIABLE": "Muutuja",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sissetulevad Teed",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
+    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljaminevad Teed",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
+    "CUTDIGITS": "Eemalda Numbrid",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Teed",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepostid",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-mail",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Lisa",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-maili Sisu",
+    "EMAILSUBJECT": "E-maili Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kataloog",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Valikud",
+    "AUTH": "Autentimine",
+    "ADD_CHANSPY": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonid",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Valimine",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Välimine Valimine",
+    "RINGGROUP": "Helistamise Grupp",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Häälkõne",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Katkestamine",
+    "CUSTOM": "Kohandatud",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljaminev Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
+    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
+    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Määramist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Katkestamist",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muudetud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
+    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Pole kättesaadav",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole Kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Pole kättesaadav",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Helista",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
+    "PAUSED": "Pausil",
+    "WAITING": "OOtel",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Tagasi lükatud",
+    "UNMANAGED": "Haldamata",
+    "AVG_HOLD_TIME": "Avg Ooteaeg",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Katkestatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse nimi",
+    "ARGUMENTS": "Argumendid",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
+    "PAUSE": "Pausile",
+    "UNPAUSE": "Lõpeta Paus",
+    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
+    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
+    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "APPLICATION": "Rakendus",
+    "FILES": "Failid",
+    "FORMAT": "Formaat",
+    "MODE": "Režiim",
+    "RECORD": "Kirje",
+    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "NEW_MOHSOUND": "Uus Ootemuusika heli",
+    "DOWNLOAD_MESSAGE": "Allalaadimine",
+    "DELETE_MESSAGE": "Kustuta",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "READY": "Valmis",
+    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSING": "Sulgemine",
+    "TAGS": "Sildid",
+    "WAITING_FOR_AGENT": "Agentide Ootamine",
+    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
+    "ACCOUNTNAME": "Konto Nimi",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "DISPOSITION": "Kasutus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "CLEAR": "Puhasta",
+    "CALLS": "Kõned",
+    "STARTEDAT": "Algusaeg",
+    "ENDEDAT": "Lõpu aeg",
+    "TAG": "Silt",
+    "DETAILS": "Üksikasjad",
+    "BILLABLESECONDS": "Tasustatavad sekundid",
+    "ANSWEREDAT": "Vastamise aeg",
+    "NOTE": "Märge",
+    "CLOSE": "Sule",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
+    "VOICEPREFIXES": "Välised Eesliited",
+    "NEW_VOICEPREFIX": "Uus Eesliide",
+    "ADD_VOICEPREFIX": "Lisa Eesliide",
+    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
+    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
+    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
+    "OUTBOUNDROUTE": "Väljuv Tee",
+    "CALLERIDALL": "Helistaja ID",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Tunne",
-    "SENTIMENTANALYSIS": "Sentimentide analüüs",
-    "SENTIMENT_MIXED": "Segatud",
+    "SENTIMENT": "Arvamus",
+    "SENTIMENTANALYSIS": "Arvamuste analüüs",
+    "SENTIMENT_MIXED": "Kombineeritud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "iimide liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeerida",
+    "TRANSCRIBE": "Transkribeeri",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
+    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Ärakiri",
-    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
+    "TRANSCRIPT": "Transkriptsioon",
+    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega",
-    "MAXCAPACITY": "Maksimaalne mahutavus",
-    "WORKING": "Töötab"
+    "ALIAS": "Teise nimega"
   }
 }
index 7c8316a..e8c6282 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "BASEURL_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisada märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisama",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
+    "ADD_NOTE": "Lisa märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisa",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
+    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTS": "Agentid",
-    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "AGENT_TIMEOUT": "Agent aegumine",
+    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTS": "Agendid",
+    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "AGENT_TIMEOUT": "Agendi aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik võistkonnad",
+    "ALL_TEAMS": "Kõik tiimid",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimismärk",
+    "AUTHTOKEN": "Autentimisluba",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Konserveeritud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
+    "CANNEDANSWERS": "Salvestatud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sulge",
+    "CLOSE": "Sule",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Sulge URL",
+    "CLOSEURL": "Suge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loodud kell",
+    "CREATED_AT": "Loomisaeg",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta interaktsioon",
+    "DELETE_INTERACTION": "Kustuta suhtlus",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
+    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
+    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Dispositsioon",
-    "DISPOSITIONS": "Dispositsioonid",
-    "DOWNLOAD_INTERACTION": "Lae alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
-    "EDIT_AGENT": "Redigeeri esindajat",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DISPOSITION": "Kasutused",
+    "DISPOSITIONS": "Kasutused",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_AGENT": "Redigeeri agenti",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulge",
-    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoifi",
+    "EDIT_CLOSE": "Redigeerimine Sulgemine",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noopi",
+    "EDIT_NOOP": "Redigeeri Noop",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
-    "ID": "Id",
-    "IDLE": "Tühikäik",
-    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
-    "INTERACTIONS": "Koostoimed",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
+    "ID": "ID",
+    "IDLE": "Jõude",
+    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
+    "INTERACTIONS": "Suhtlused",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
-    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
+    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputama",
+    "NOTIFICATIONSHAKE": "Raputus",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
-    "OF": "kohta",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
+    "OF": "of",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra ülekandmine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
+    "QUEUETRANSFER": "Järjekorra edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "Saate URL-i",
-    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
-    "REMOTE": "Kaugjuhtimispult",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECEIVEURL": "URL-i vastuvõtmine",
+    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
+    "REMOTE": "Kaugjuhtimine",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud esindajad",
-    "SELECTED_TEAMS": "Valitud meeskonnad",
+    "SELECTED_AGENTS": "Valitud agendid",
+    "SELECTED_TEAMS": "Valitud tiimid",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Valige ükski",
+    "SELECT_NONE": "Ärge valige ühtegi",
     "SEND": "Saada",
-    "SETTINGS": "Seadistused",
-    "SPYINTERACTION": "Spioonide interaktsioon",
-    "STARTEDAT": "Alustati kell",
+    "SETTINGS": "Sätted",
+    "SPYINTERACTION": "Spiooni suhtlus",
+    "STARTEDAT": "Alustatud kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Et",
+    "TO": "Kellele",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõeline prioriteet",
+    "TRUEPRIORITY": "Tõene prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuv",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
-    "WAITING": "Ootan",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPACCOUNTS": "WhatsApi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
-    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-post",
+    "VARIABLE": "Muutuja",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
+    "WAITING": "Ootamine",
+    "WELCOMEMESSAGE": "Tervitussõµnum",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
+    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-mail",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID",
-    "BASEURL": "Baas-URL",
-    "DELIVERYREPORTURL": "Edastamisaruande URL"
+    "PROJECTID": "Projekti ID"
   }
 }
index fd2a755..f98da63 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
+    "SAVE": "Salvesta",
     "INFO": "Info",
-    "NEW_CHATGROUP": "New Group",
-    "NAME": "Name",
-    "MEMBERS": "Members",
-    "ENABLE_WRITING": "Enable Writing",
-    "GROUPS": "Groups",
-    "YOU": "You + {{participants}}",
-    "NEW_INTERNAL_MESSAGE": "New internal message",
-    "DELETE": "Delete",
-    "SEARCH": "Search",
-    "USERS": "Users",
-    "TODAY": "TODAY",
-    "MONDAY": "Monday",
-    "TUESDAY": "Tuesday",
-    "WEDNESDAY": "Wednesday",
-    "THURSDAY": "Thursday",
-    "FRIDAY": "Friday",
-    "SATURDAY": "Saturday",
-    "SUNDAY": "Sunday",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "NEW_CHATGROUP": "Uus Grupp",
+    "NAME": "Nimi",
+    "MEMBERS": "Liikmed",
+    "ENABLE_WRITING": "Luba Kirjutamine",
+    "GROUPS": "Gruppid",
+    "YOU": "Teie + {{osalejad}}",
+    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
+    "DELETE": "Kustuta",
+    "SEARCH": "Otsi",
+    "USERS": "Kasutajad",
+    "TODAY": "TÄNA",
+    "MONDAY": "Esmaspäev",
+    "TUESDAY": "Teisipäev",
+    "WEDNESDAY": "Kolmapäev",
+    "THURSDAY": "Neljapäev",
+    "FRIDAY": "Reede",
+    "SATURDAY": "Laupäev",
+    "SUNDAY": "Pühapäev",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "CHAT": "CHAT",
-    "ACTIVITY": "ACTIVITY",
-    "FRIENDS": "Friends",
-    "APP_SERVERS": "Application Servers",
-    "USER_STATS": "User Stats",
-    "EVENTS": "Events",
-    "NOTES": "Notes",
-    "QUICK_SETTINGS": "Quick Settings",
-    "NOTIFICATIONS": "Notifications",
-    "CLOUD_SYNC": "Cloud Sync",
+    "DECEMBER": "Detsember",
+    "CHAT": "VESTLUS",
+    "ACTIVITY": "TEGEVUS",
+    "FRIENDS": "Sõbrad",
+    "APP_SERVERS": "Rakenduse Serverid",
+    "USER_STATS": "Kasutaja Stat",
+    "EVENTS": "Sündmused",
+    "NOTES": "Märkmed",
+    "QUICK_SETTINGS": "Kiirsätted",
+    "NOTIFICATIONS": "Teatised",
+    "CLOUD_SYNC": "Pilve Sünk",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Recent",
-    "START_NEW_CHAT": "Start New Chat",
-    "BACK": "Back",
-    "CALL": "Call",
-    "MORE": "More",
-    "SEND_MESSAGE": "Send message",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
-    "EXPIRATION_DATE": "Expiration Date",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "LICENSE": "License",
-    "NEW_TOKEN": "New Token",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email To",
-    "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
-    "WARNING": "Warning",
+    "RECENT": "Hiljutine",
+    "START_NEW_CHAT": "Alusta Uut Vestlust",
+    "BACK": "Tagasi",
+    "CALL": "Helista",
+    "MORE": "Rohkem",
+    "SEND_MESSAGE": "Saada sõnum",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "LICENSE": "Litsents",
+    "NEW_TOKEN": "Uus Luba",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-mail Kellele",
+    "TOKEN": "Luba",
+    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
+    "WARNING": "Hoiatus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
+      "NAME_REQUIRED": "Kohustuslik Väli"
     }
   }
 }
index c3cf8da..c0ce982 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Reset your password",
-    "EMAIL_ADRESS": "Email address",
-    "PASSWORD": "Password",
-    "PASSWORD_CONFIRM": "Password (Confirm)",
-    "UPDATE_PASSWORD": "RESET MY PASSWORD",
-    "GO_BACK": "Go back to login",
-    "PASSWORD_RESET": "Password Reset",
-    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Uuendage oma parooli",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "PASSWORD": "Parool",
+    "PASSWORD_CONFIRM": "Parool (Kinnita)",
+    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
+    "GO_BACK": "Mine tagasi sisselogimise lehele",
+    "PASSWORD_RESET": "Parooli Uuendamine",
+    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
+    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Email field is required",
-      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
-      "PASSWORD_REQUIRED": "Password field is required",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
+      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
+      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index d04a4ab..aa8cd4e 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.d45f5a7f.css">
+  <link rel="stylesheet" href="styles/app.fabf8255.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -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.d44c05b7.js"></script>
+  <script src="scripts/app.e5cd50d7.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.d44c05b7.js
rename to public/scripts/app.e5cd50d7.js
index 6089086..71d1d28 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,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,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$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,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){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",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,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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",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",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",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",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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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)})})}};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(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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&&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")})}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,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(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()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(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,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(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"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}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"},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,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,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:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"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,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,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,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,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){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=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){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=y,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=b,g.getFinals=A,g.getHistories=E,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)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}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,e,t){var a=this;function i(e,n){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}n&&function(e){switch(e){case"first":a.call.secondDisposition&&(a.secondLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.secondDisposition}),a.secondLevelDisposition&&i("second",!0));break;case"second":a.call.thirdDisposition&&(a.thirdLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.thirdDisposition}),a.thirdLevelDisposition&&i("third",!0))}}(e)}a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=i,a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()},a.call.disposition&&(a.firstLevelDisposition=_.find(a.dispositions,function(e){return e.name===a.call.disposition}),a.firstLevelDisposition&&i("first",!0))}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(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=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.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.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||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,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,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,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(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,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;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).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:[]},!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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,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.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){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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},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"},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(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(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})}},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"}):D(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){if(P()){I.autoanswerNotifications;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}})}else 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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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("userAutoanswerNotification:send"),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="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","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-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()" 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-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="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 track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header 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="CONTACTMANAGER.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="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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              <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!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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              <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.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools 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.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <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.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.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 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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="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 class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <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 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="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <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 class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <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.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        </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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="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="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{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>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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  <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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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,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,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,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$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,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",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,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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",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",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",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",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",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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",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",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,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:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,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",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";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)})})}};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(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";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&&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")})}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,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(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()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></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,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(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(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","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 a(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 i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(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],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(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"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},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)},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"}}}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"},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,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,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:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"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,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,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=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){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=y,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=b,g.getFinals=A,g.getHistories=E,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)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}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",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(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=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.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.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||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,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,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,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_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,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,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},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,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,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(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","realtimeManager","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",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,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,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=[],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:[]},!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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.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,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","realtimeManager","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.STATUS_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?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","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:"-updatedAt",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,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,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.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){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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},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"},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(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,$)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(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 P(){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 L(e){return R(),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 k(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 M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),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 U(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 F(){I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"}function $(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,F())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,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=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();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(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(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})}},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"}):D(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){P()?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.onInternalMessageSave=function(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++},I.onInternalMessageUpdate=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--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),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)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,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="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","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-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()" 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-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="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 track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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="CONTACTMANAGER.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="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="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-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex 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              <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!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\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              <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.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/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>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/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              <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.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <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.getAgents\" md-page-select></md-table-pagination>"),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 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+ queue.message | translate) : \'--\'}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\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 ng-init="vm.onInit()">\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 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="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 class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <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 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="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <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 class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <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.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        </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_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="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="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{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>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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              <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  <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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\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
similarity index 97%
rename from public/styles/app.d45f5a7f.css
rename to public/styles/app.fabf8255.css
index aa6b231..5729d23 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index cabef1b..1863d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36a6=['sequelize','exports','VIRTUAL','STRING','contactManager','motionbar','jscripty','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]'];(function(_0x3b76d5,_0x464ae6){var _0x1a6511=function(_0x14587a){while(--_0x14587a){_0x3b76d5['push'](_0x3b76d5['shift']());}};_0x1a6511(++_0x464ae6);}(_0x36a6,0x1a2));var _0x636a=function(_0x2df982,_0x380bb8){_0x2df982=_0x2df982-0x0;var _0x208c55=_0x36a6[_0x2df982];return _0x208c55;};'use strict';var Sequelize=require(_0x636a('0x0'));module[_0x636a('0x1')]={'name':{'type':Sequelize[_0x636a('0x2')],'get':function(_0x286905){return this['getDataValue']('action');}},'action':{'type':Sequelize[_0x636a('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x636a('0x4'),'integration',_0x636a('0x5'),_0x636a('0x6'),'urlForward',_0x636a('0x7'),_0x636a('0x8'),_0x636a('0x9')]],'msg':_0x636a('0xa')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x636a('0xb')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x636a('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x636a('0xd')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0x636a('0xe')},'data5':{'type':Sequelize[_0x636a('0x3')](0x1000),'comments':_0x636a('0xf')},'data6':{'type':Sequelize[_0x636a('0x3')],'comments':_0x636a('0x10')},'data7':{'type':Sequelize[_0x636a('0x11')],'comments':_0x636a('0x12')}};
\ No newline at end of file
+var _0x9297=['urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING','contactManager','integration','motionbar','jscripty','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'];(function(_0x2c7430,_0x2ea1f4){var _0x5f3e19=function(_0x1860ed){while(--_0x1860ed){_0x2c7430['push'](_0x2c7430['shift']());}};_0x5f3e19(++_0x2ea1f4);}(_0x9297,0x6c));var _0x7929=function(_0x110b5f,_0x1da39d){_0x110b5f=_0x110b5f-0x0;var _0x499b66=_0x9297[_0x110b5f];return _0x499b66;};'use strict';var Sequelize=require(_0x7929('0x0'));module[_0x7929('0x1')]={'name':{'type':Sequelize[_0x7929('0x2')],'get':function(_0x5bbc7e){return this[_0x7929('0x3')]('action');}},'action':{'type':Sequelize[_0x7929('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x7929('0x5'),_0x7929('0x6'),_0x7929('0x7'),_0x7929('0x8'),'urlForward',_0x7929('0x9'),_0x7929('0xa'),_0x7929('0xb')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x7929('0xc')},'data1':{'type':Sequelize[_0x7929('0x4')](0x1000),'comment':_0x7929('0xd')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x7929('0xe')},'data3':{'type':Sequelize[_0x7929('0x4')](0x1000),'comment':_0x7929('0xf')},'data4':{'type':Sequelize[_0x7929('0x4')](0x1000),'comments':_0x7929('0x10')},'data5':{'type':Sequelize[_0x7929('0x4')](0x1000),'comments':_0x7929('0x11')},'data6':{'type':Sequelize[_0x7929('0x4')],'comments':_0x7929('0x12')},'data7':{'type':Sequelize[_0x7929('0x13')],'comments':_0x7929('0x14')}};
\ No newline at end of file
index 49c8d85..6b8cada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b76=['sendStatus','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x9b76,0x65));var _0x69b7=function(_0x47c98d,_0x5c1cce){_0x47c98d=_0x47c98d-0x0;var _0x5a243e=_0x9b76[_0x47c98d];return _0x5a243e;};'use strict';var emlformat=require(_0x69b7('0x0'));var rimraf=require(_0x69b7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x69b7('0x2'));var moment=require(_0x69b7('0x3'));var BPromise=require(_0x69b7('0x4'));var Mustache=require(_0x69b7('0x5'));var util=require('util');var path=require(_0x69b7('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x69b7('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x69b7('0x8'));var squel=require(_0x69b7('0x9'));var crypto=require(_0x69b7('0xa'));var jsforce=require(_0x69b7('0xb'));var deskjs=require(_0x69b7('0xc'));var toCsv=require(_0x69b7('0xd'));var querystring=require(_0x69b7('0xe'));var Papa=require(_0x69b7('0xf'));var Redis=require(_0x69b7('0x10'));var authService=require(_0x69b7('0x11'));var qs=require(_0x69b7('0x12'));var as=require(_0x69b7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x69b7('0x14'));var config=require(_0x69b7('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x69b7('0x16'))['db'];function respondWithStatusCode(_0x109e9d,_0x3a6ceb){_0x3a6ceb=_0x3a6ceb||0xcc;return function(_0x403664){if(_0x403664){return _0x109e9d['sendStatus'](_0x3a6ceb);}return _0x109e9d[_0x69b7('0x17')](_0x3a6ceb)[_0x69b7('0x18')]();};}function respondWithResult(_0x46c0c4,_0x2d874d){_0x2d874d=_0x2d874d||0xc8;return function(_0x17c0d){if(_0x17c0d){return _0x46c0c4['status'](_0x2d874d)[_0x69b7('0x19')](_0x17c0d);}};}function respondWithFilteredResult(_0x28442e,_0x3de357){return function(_0x1b6ad8){if(_0x1b6ad8){var _0x16866a=typeof _0x3de357[_0x69b7('0x1a')]===_0x69b7('0x1b')&&typeof _0x3de357[_0x69b7('0x1c')]===_0x69b7('0x1b');var _0x254e24=_0x1b6ad8['count'];var _0x4d05f7=_0x16866a?0x0:_0x3de357['offset'];var _0x56e049=_0x16866a?_0x1b6ad8[_0x69b7('0x1d')]:_0x3de357['offset']+_0x3de357[_0x69b7('0x1c')];var _0x38cd1e;if(_0x56e049>=_0x254e24){_0x56e049=_0x254e24;_0x38cd1e=0xc8;}else{_0x38cd1e=0xce;}_0x28442e['status'](_0x38cd1e);return _0x28442e[_0x69b7('0x1e')](_0x69b7('0x1f'),_0x4d05f7+'-'+_0x56e049+'/'+_0x254e24)['json'](_0x1b6ad8);}return null;};}function patchUpdates(_0x2a4cfa){return function(_0x2c2b69){try{jsonpatch[_0x69b7('0x20')](_0x2c2b69,_0x2a4cfa,!![]);}catch(_0x56c1f9){return BPromise['reject'](_0x56c1f9);}return _0x2c2b69[_0x69b7('0x21')]();};}function saveUpdates(_0x451273,_0x13ac33){return function(_0x234b40){if(_0x234b40){return _0x234b40[_0x69b7('0x22')](_0x451273)[_0x69b7('0x23')](function(_0x2518a1){return _0x2518a1;});}return null;};}function removeEntity(_0x4b07a1,_0x11a20a){return function(_0x2894c3){if(_0x2894c3){return _0x2894c3[_0x69b7('0x24')]()['then'](function(){_0x4b07a1[_0x69b7('0x17')](0xcc)[_0x69b7('0x18')]();});}};}function handleEntityNotFound(_0x2682ce,_0x1bf130){return function(_0x3ce399){if(!_0x3ce399){_0x2682ce[_0x69b7('0x25')](0x194);}return _0x3ce399;};}function handleError(_0x547ad4,_0x424bb0){_0x424bb0=_0x424bb0||0x1f4;return function(_0x2ee87d){logger['error'](_0x2ee87d[_0x69b7('0x26')]);if(_0x2ee87d[_0x69b7('0x27')]){delete _0x2ee87d[_0x69b7('0x27')];}_0x547ad4[_0x69b7('0x17')](_0x424bb0)[_0x69b7('0x28')](_0x2ee87d);};}exports['update']=function(_0x198cb6,_0x24128d){if(_0x198cb6['body']['id']){delete _0x198cb6[_0x69b7('0x29')]['id'];}return db[_0x69b7('0x2a')][_0x69b7('0x2b')]({'where':{'id':_0x198cb6[_0x69b7('0x2c')]['id']}})['then'](handleEntityNotFound(_0x24128d,null))[_0x69b7('0x23')](saveUpdates(_0x198cb6[_0x69b7('0x29')],null))[_0x69b7('0x23')](respondWithResult(_0x24128d,null))[_0x69b7('0x2d')](handleError(_0x24128d,null));};exports['destroy']=function(_0x56cefd,_0x39e627){return db['Action'][_0x69b7('0x2b')]({'where':{'id':_0x56cefd['params']['id']}})[_0x69b7('0x23')](handleEntityNotFound(_0x39e627,null))[_0x69b7('0x23')](removeEntity(_0x39e627,null))[_0x69b7('0x2d')](handleError(_0x39e627,null));};
\ No newline at end of file
+var _0xebf1=['find','params','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','end','json','offset','undefined','limit','count','status','set','apply','reject','then','error','name','send','update','body','catch','destroy','Action'];(function(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0xebf1,0x15a));var _0x1ebf=function(_0x31a938,_0x4daec6){_0x31a938=_0x31a938-0x0;var _0x1bf341=_0xebf1[_0x31a938];return _0x1bf341;};'use strict';var emlformat=require(_0x1ebf('0x0'));var rimraf=require(_0x1ebf('0x1'));var zipdir=require(_0x1ebf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1ebf('0x3'));var moment=require('moment');var BPromise=require(_0x1ebf('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1ebf('0x5'));var sox=require(_0x1ebf('0x6'));var csv=require(_0x1ebf('0x7'));var ejs=require(_0x1ebf('0x8'));var fs=require('fs');var fs_extra=require(_0x1ebf('0x9'));var _=require(_0x1ebf('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1ebf('0xb'));var deskjs=require(_0x1ebf('0xc'));var toCsv=require(_0x1ebf('0x7'));var querystring=require('querystring');var Papa=require(_0x1ebf('0xd'));var Redis=require(_0x1ebf('0xe'));var authService=require(_0x1ebf('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1ebf('0x10'));var hardwareService=require(_0x1ebf('0x11'));var logger=require(_0x1ebf('0x12'))(_0x1ebf('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1ebf('0x14'));var db=require(_0x1ebf('0x15'))['db'];function respondWithStatusCode(_0x38b55c,_0x1e2bd7){_0x1e2bd7=_0x1e2bd7||0xcc;return function(_0x4974bb){if(_0x4974bb){return _0x38b55c['sendStatus'](_0x1e2bd7);}return _0x38b55c['status'](_0x1e2bd7)[_0x1ebf('0x16')]();};}function respondWithResult(_0x906701,_0x55e87d){_0x55e87d=_0x55e87d||0xc8;return function(_0x362209){if(_0x362209){return _0x906701['status'](_0x55e87d)[_0x1ebf('0x17')](_0x362209);}};}function respondWithFilteredResult(_0x1685d7,_0x36355d){return function(_0x35187a){if(_0x35187a){var _0x13c604=typeof _0x36355d[_0x1ebf('0x18')]===_0x1ebf('0x19')&&typeof _0x36355d[_0x1ebf('0x1a')]===_0x1ebf('0x19');var _0x1e2760=_0x35187a[_0x1ebf('0x1b')];var _0x3f3fac=_0x13c604?0x0:_0x36355d['offset'];var _0x1152d1=_0x13c604?_0x35187a[_0x1ebf('0x1b')]:_0x36355d[_0x1ebf('0x18')]+_0x36355d['limit'];var _0x33d9cc;if(_0x1152d1>=_0x1e2760){_0x1152d1=_0x1e2760;_0x33d9cc=0xc8;}else{_0x33d9cc=0xce;}_0x1685d7[_0x1ebf('0x1c')](_0x33d9cc);return _0x1685d7[_0x1ebf('0x1d')]('Content-Range',_0x3f3fac+'-'+_0x1152d1+'/'+_0x1e2760)[_0x1ebf('0x17')](_0x35187a);}return null;};}function patchUpdates(_0x8df44c){return function(_0x16eee1){try{jsonpatch[_0x1ebf('0x1e')](_0x16eee1,_0x8df44c,!![]);}catch(_0x44bc95){return BPromise[_0x1ebf('0x1f')](_0x44bc95);}return _0x16eee1['save']();};}function saveUpdates(_0xeeef1c,_0x13db18){return function(_0xcefcc5){if(_0xcefcc5){return _0xcefcc5['update'](_0xeeef1c)[_0x1ebf('0x20')](function(_0x4698b3){return _0x4698b3;});}return null;};}function removeEntity(_0x44225,_0x589a3d){return function(_0x34e249){if(_0x34e249){return _0x34e249['destroy']()[_0x1ebf('0x20')](function(){_0x44225[_0x1ebf('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ebc51,_0x1d9359){return function(_0x183795){if(!_0x183795){_0x4ebc51['sendStatus'](0x194);}return _0x183795;};}function handleError(_0x402539,_0x1f1e63){_0x1f1e63=_0x1f1e63||0x1f4;return function(_0x273cfb){logger[_0x1ebf('0x21')](_0x273cfb['stack']);if(_0x273cfb[_0x1ebf('0x22')]){delete _0x273cfb[_0x1ebf('0x22')];}_0x402539[_0x1ebf('0x1c')](_0x1f1e63)[_0x1ebf('0x23')](_0x273cfb);};}exports[_0x1ebf('0x24')]=function(_0x23320d,_0x435a59){if(_0x23320d[_0x1ebf('0x25')]['id']){delete _0x23320d[_0x1ebf('0x25')]['id'];}return db['Action']['find']({'where':{'id':_0x23320d['params']['id']}})[_0x1ebf('0x20')](handleEntityNotFound(_0x435a59,null))[_0x1ebf('0x20')](saveUpdates(_0x23320d[_0x1ebf('0x25')],null))[_0x1ebf('0x20')](respondWithResult(_0x435a59,null))[_0x1ebf('0x26')](handleError(_0x435a59,null));};exports[_0x1ebf('0x27')]=function(_0x6ecc8c,_0x34f92d){return db[_0x1ebf('0x28')][_0x1ebf('0x29')]({'where':{'id':_0x6ecc8c[_0x1ebf('0x2a')]['id']}})['then'](handleEntityNotFound(_0x34f92d,null))[_0x1ebf('0x20')](removeEntity(_0x34f92d,null))[_0x1ebf('0x26')](handleError(_0x34f92d,null));};
\ No newline at end of file
index e53a137..0e9eaa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc584=['path','rimraf','../../config/environment','exports','define','Action','util','../../config/logger','bluebird'];(function(_0x345e27,_0x5773dd){var _0x1559fb=function(_0x5ad7c6){while(--_0x5ad7c6){_0x345e27['push'](_0x345e27['shift']());}};_0x1559fb(++_0x5773dd);}(_0xc584,0xa8));var _0x4c58=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0xc584[_0x2e3dfc];return _0x4b1245;};'use strict';var _=require('lodash');var util=require(_0x4c58('0x0'));var logger=require(_0x4c58('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4c58('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c58('0x3'));var rimraf=require(_0x4c58('0x4'));var config=require(_0x4c58('0x5'));var attributes=require('./action.attributes');module[_0x4c58('0x6')]=function(_0x1a6d4c,_0x3e94f0){return _0x1a6d4c[_0x4c58('0x7')](_0x4c58('0x8'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb0cf=['define','Action','tools_actions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xc4e6fd,_0x23f96e){var _0x1794cb=function(_0x4b9319){while(--_0x4b9319){_0xc4e6fd['push'](_0xc4e6fd['shift']());}};_0x1794cb(++_0x23f96e);}(_0xb0cf,0xc3));var _0xfb0c=function(_0x21b362,_0x340fc6){_0x21b362=_0x21b362-0x0;var _0x2afe43=_0xb0cf[_0x21b362];return _0x2afe43;};'use strict';var _=require(_0xfb0c('0x0'));var util=require(_0xfb0c('0x1'));var logger=require(_0xfb0c('0x2'))(_0xfb0c('0x3'));var moment=require(_0xfb0c('0x4'));var BPromise=require(_0xfb0c('0x5'));var rp=require(_0xfb0c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfb0c('0x7'));var config=require(_0xfb0c('0x8'));var attributes=require('./action.attributes');module['exports']=function(_0x28aded,_0x53f161){return _0x28aded[_0xfb0c('0x9')](_0xfb0c('0xa'),attributes,{'tableName':_0xfb0c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b401815..488cafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x4975,0x86));var _0x5497=function(_0x2589a5,_0x2f1a19){_0x2589a5=_0x2589a5-0x0;var _0x8a2e82=_0x4975[_0x2589a5];return _0x8a2e82;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('Action,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
+var _0x1261=['then','info','Action,\x20%s,\x20%s','request\x20sent','Action,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x34aad5,_0x534f2f){var _0x14018e=function(_0x463fd4){while(--_0x463fd4){_0x34aad5['push'](_0x34aad5['shift']());}};_0x14018e(++_0x534f2f);}(_0x1261,0x144));var _0x1126=function(_0x2c4d22,_0x4ca120){_0x2c4d22=_0x2c4d22-0x0;var _0x1f0537=_0x1261[_0x2c4d22];return _0x1f0537;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('Action,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index 79dee97..9009652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x845d=['put','isAuthenticated','/:id','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller'];(function(_0x1b7a61,_0x555779){var _0x6c0126=function(_0x4b546b){while(--_0x4b546b){_0x1b7a61['push'](_0x1b7a61['shift']());}};_0x6c0126(++_0x555779);}(_0x845d,0x108));var _0xd845=function(_0x588faa,_0x33d3df){_0x588faa=_0x588faa-0x0;var _0x14c477=_0x845d[_0x588faa];return _0x14c477;};'use strict';var multer=require('multer');var util=require(_0xd845('0x0'));var path=require(_0xd845('0x1'));var timeout=require(_0xd845('0x2'));var express=require(_0xd845('0x3'));var router=express[_0xd845('0x4')]();var fs_extra=require(_0xd845('0x5'));var auth=require(_0xd845('0x6'));var interaction=require(_0xd845('0x7'));var config=require('../../config/environment');var controller=require(_0xd845('0x8'));router[_0xd845('0x9')]('/:id',auth[_0xd845('0xa')](),controller['update']);router['delete'](_0xd845('0xb'),auth[_0xd845('0xa')](),controller['destroy']);module[_0xd845('0xc')]=router;
\ No newline at end of file
+var _0x8603=['Router','fs-extra','../../components/auth/service','../../config/environment','./action.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x36988b,_0x4fd583){var _0xd6bd=function(_0x15588e){while(--_0x15588e){_0x36988b['push'](_0x36988b['shift']());}};_0xd6bd(++_0x4fd583);}(_0x8603,0xb0));var _0x3860=function(_0xf7dd0f,_0x396c3b){_0xf7dd0f=_0xf7dd0f-0x0;var _0x3fc64b=_0x8603[_0xf7dd0f];return _0x3fc64b;};'use strict';var multer=require(_0x3860('0x0'));var util=require('util');var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require(_0x3860('0x3'));var router=express[_0x3860('0x4')]();var fs_extra=require(_0x3860('0x5'));var auth=require(_0x3860('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3860('0x7'));var controller=require(_0x3860('0x8'));router['put'](_0x3860('0x9'),auth[_0x3860('0xa')](),controller[_0x3860('0xb')]);router[_0x3860('0xc')](_0x3860('0x9'),auth[_0x3860('0xa')](),controller[_0x3860('0xd')]);module[_0x3860('0xe')]=router;
\ No newline at end of file
index 7426aa3..a98968e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['TEXT','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x199745,_0x2fc2bf){_0x199745=_0x199745-0x0;var _0x5401a3=_0x1cb9[_0x199745];return _0x5401a3;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x91cb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x91cb('0x1')]},'parent':{'type':Sequelize[_0x91cb('0x1')]},'table':{'type':Sequelize[_0x91cb('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x91cb('0x2')]}};
\ No newline at end of file
+var _0x71ab=['TEXT','exports','STRING'];(function(_0x45874e,_0x579055){var _0x39e7d6=function(_0x5e6325){while(--_0x5e6325){_0x45874e['push'](_0x45874e['shift']());}};_0x39e7d6(++_0x579055);}(_0x71ab,0x64));var _0xb71a=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x71ab[_0x2b4411];return _0x8e41ef;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb71a('0x1')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0xb71a('0x1')]},'conditions':{'type':Sequelize[_0xb71a('0x2')]},'joins':{'type':Sequelize[_0xb71a('0x2')]}};
\ No newline at end of file
index c7e355c..cbbe30e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ae=['IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','length','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','debug','toString','sequelize','QueryTypes','SELECT','cross_join','HOUR(%s)','IS\x20NOT\x20NULL','findAll','%s.%s\x20=\x20%s.%s','output','web','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','right_join','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','save','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','query','intersection','model','attributes','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','catch','params','keys','fields','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','join','left_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL'];(function(_0x38c0b2,_0x4be4d0){var _0x299da6=function(_0x381b16){while(--_0x381b16){_0x38c0b2['push'](_0x38c0b2['shift']());}};_0x299da6(++_0x4be4d0);}(_0x84ae,0xe1));var _0xe84a=function(_0x22658d,_0x328f29){_0x22658d=_0x22658d-0x0;var _0x49a56b=_0x84ae[_0x22658d];return _0x49a56b;};'use strict';var emlformat=require(_0xe84a('0x0'));var rimraf=require(_0xe84a('0x1'));var zipdir=require(_0xe84a('0x2'));var jsonpatch=require(_0xe84a('0x3'));var rp=require('request-promise');var moment=require(_0xe84a('0x4'));var BPromise=require(_0xe84a('0x5'));var Mustache=require(_0xe84a('0x6'));var util=require(_0xe84a('0x7'));var path=require(_0xe84a('0x8'));var sox=require(_0xe84a('0x9'));var csv=require(_0xe84a('0xa'));var ejs=require(_0xe84a('0xb'));var fs=require('fs');var fs_extra=require(_0xe84a('0xc'));var _=require('lodash');var squel=require(_0xe84a('0xd'));var crypto=require(_0xe84a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe84a('0xf'));var toCsv=require(_0xe84a('0xa'));var querystring=require(_0xe84a('0x10'));var Papa=require(_0xe84a('0x11'));var Redis=require(_0xe84a('0x12'));var authService=require(_0xe84a('0x13'));var qs=require(_0xe84a('0x14'));var as=require(_0xe84a('0x15'));var hardwareService=require(_0xe84a('0x16'));var logger=require(_0xe84a('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe84a('0x18'));var db=require(_0xe84a('0x19'))['db'];var dbH=require(_0xe84a('0x19'))[_0xe84a('0x1a')];function respondWithStatusCode(_0x288d7a,_0x125ea1){_0x125ea1=_0x125ea1||0xcc;return function(_0xc2e3f){if(_0xc2e3f){return _0x288d7a[_0xe84a('0x1b')](_0x125ea1);}return _0x288d7a[_0xe84a('0x1c')](_0x125ea1)[_0xe84a('0x1d')]();};}function respondWithResult(_0x556ca9,_0x21c11d){_0x21c11d=_0x21c11d||0xc8;return function(_0x1fb921){if(_0x1fb921){return _0x556ca9[_0xe84a('0x1c')](_0x21c11d)[_0xe84a('0x1e')](_0x1fb921);}};}function respondWithFilteredResult(_0x2e2906,_0xf49740){return function(_0x19e067){if(_0x19e067){var _0x111301=typeof _0xf49740['offset']===_0xe84a('0x1f')&&typeof _0xf49740[_0xe84a('0x20')]==='undefined';var _0xdf68fc=_0x19e067['count'];var _0x420265=_0x111301?0x0:_0xf49740[_0xe84a('0x21')];var _0x184414=_0x111301?_0x19e067[_0xe84a('0x22')]:_0xf49740[_0xe84a('0x21')]+_0xf49740[_0xe84a('0x20')];var _0x2ca3c0;if(_0x184414>=_0xdf68fc){_0x184414=_0xdf68fc;_0x2ca3c0=0xc8;}else{_0x2ca3c0=0xce;}_0x2e2906[_0xe84a('0x1c')](_0x2ca3c0);return _0x2e2906[_0xe84a('0x23')](_0xe84a('0x24'),_0x420265+'-'+_0x184414+'/'+_0xdf68fc)[_0xe84a('0x1e')](_0x19e067);}return null;};}function patchUpdates(_0x627706){return function(_0x1a0db7){try{jsonpatch[_0xe84a('0x25')](_0x1a0db7,_0x627706,!![]);}catch(_0x9d0079){return BPromise['reject'](_0x9d0079);}return _0x1a0db7[_0xe84a('0x26')]();};}function saveUpdates(_0x1daa0b,_0x687a7f){return function(_0x29c9bf){if(_0x29c9bf){return _0x29c9bf['update'](_0x1daa0b)[_0xe84a('0x27')](function(_0x299896){return _0x299896;});}return null;};}function removeEntity(_0x12983c,_0x17c800){return function(_0x5cdef1){if(_0x5cdef1){return _0x5cdef1[_0xe84a('0x28')]()['then'](function(){var _0x33036d=_0x5cdef1[_0xe84a('0x29')]({'plain':!![]});var _0x312f58='CustomReports';return db[_0xe84a('0x2a')]['destroy']({'where':{'type':_0x312f58,'resourceId':_0x33036d['id']}})[_0xe84a('0x27')](function(){return _0x5cdef1;});})['then'](function(){_0x12983c[_0xe84a('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2efd8a,_0x47427f){return function(_0x5499bb){if(!_0x5499bb){_0x2efd8a[_0xe84a('0x1b')](0x194);}return _0x5499bb;};}function handleError(_0x45a7fa,_0x458fd7){_0x458fd7=_0x458fd7||0x1f4;return function(_0x2a8136){logger[_0xe84a('0x2b')](_0x2a8136[_0xe84a('0x2c')]);if(_0x2a8136['name']){delete _0x2a8136[_0xe84a('0x2d')];}_0x45a7fa[_0xe84a('0x1c')](_0x458fd7)[_0xe84a('0x2e')](_0x2a8136);};}exports[_0xe84a('0x2f')]=function(_0x398a3d,_0x1e5865){var _0x2f1c68={},_0x4f45c1={},_0x15eabb={'count':0x0,'rows':[]};var _0x4a1297=_[_0xe84a('0x30')](db[_0xe84a('0x31')][_0xe84a('0x32')],function(_0x3a1e13){return{'name':_0x3a1e13[_0xe84a('0x33')],'type':_0x3a1e13[_0xe84a('0x34')][_0xe84a('0x35')]};});_0x4f45c1['model']=_[_0xe84a('0x30')](_0x4a1297,_0xe84a('0x2d'));_0x4f45c1[_0xe84a('0x36')]=_['keys'](_0x398a3d['query']);_0x4f45c1['filters']=_[_0xe84a('0x37')](_0x4f45c1[_0xe84a('0x38')],_0x4f45c1[_0xe84a('0x36')]);_0x2f1c68[_0xe84a('0x39')]=_[_0xe84a('0x37')](_0x4f45c1['model'],qs['fields'](_0x398a3d[_0xe84a('0x36')]['fields']));_0x2f1c68[_0xe84a('0x39')]=_0x2f1c68[_0xe84a('0x39')]['length']?_0x2f1c68[_0xe84a('0x39')]:_0x4f45c1[_0xe84a('0x38')];if(!_0x398a3d['query']['hasOwnProperty']('nolimit')){_0x2f1c68[_0xe84a('0x20')]=qs[_0xe84a('0x20')](_0x398a3d['query']['limit']);_0x2f1c68['offset']=qs[_0xe84a('0x21')](_0x398a3d[_0xe84a('0x36')][_0xe84a('0x21')]);}_0x2f1c68[_0xe84a('0x3a')]=qs[_0xe84a('0x3b')](_0x398a3d[_0xe84a('0x36')][_0xe84a('0x3b')]);_0x2f1c68[_0xe84a('0x3c')]=qs[_0xe84a('0x3d')](_['pick'](_0x398a3d[_0xe84a('0x36')],_0x4f45c1[_0xe84a('0x3d')]),_0x4a1297);if(_0x398a3d[_0xe84a('0x36')][_0xe84a('0x3e')]){_0x2f1c68[_0xe84a('0x3c')]=_['merge'](_0x2f1c68[_0xe84a('0x3c')],{'$or':_[_0xe84a('0x30')](_0x4a1297,function(_0x51bf37){if(_0x51bf37[_0xe84a('0x34')]!==_0xe84a('0x3f')){var _0x5768db={};_0x5768db[_0x51bf37[_0xe84a('0x2d')]]={'$like':'%'+_0x398a3d['query']['filter']+'%'};return _0x5768db;}})});}_0x2f1c68=_[_0xe84a('0x40')]({},_0x2f1c68,_0x398a3d[_0xe84a('0x41')]);var _0xe459a9={'where':_0x2f1c68[_0xe84a('0x3c')]};return db[_0xe84a('0x31')][_0xe84a('0x22')](_0xe459a9)['then'](function(_0x22008f){_0x15eabb[_0xe84a('0x22')]=_0x22008f;if(_0x398a3d['query'][_0xe84a('0x42')]){_0x2f1c68[_0xe84a('0x43')]=[{'all':!![]}];}return db[_0xe84a('0x31')]['findAll'](_0x2f1c68);})[_0xe84a('0x27')](function(_0x4e4913){_0x15eabb['rows']=_0x4e4913;return _0x15eabb;})[_0xe84a('0x27')](respondWithFilteredResult(_0x1e5865,_0x2f1c68))[_0xe84a('0x44')](handleError(_0x1e5865,null));};exports['show']=function(_0x4a190c,_0x480760){var _0x126b73={'raw':![],'where':{'id':_0x4a190c[_0xe84a('0x45')]['id']}},_0x53acf5={};_0x53acf5[_0xe84a('0x38')]=_[_0xe84a('0x46')](db[_0xe84a('0x31')]['rawAttributes']);_0x53acf5[_0xe84a('0x36')]=_[_0xe84a('0x46')](_0x4a190c['query']);_0x53acf5[_0xe84a('0x3d')]=_[_0xe84a('0x37')](_0x53acf5[_0xe84a('0x38')],_0x53acf5[_0xe84a('0x36')]);_0x126b73[_0xe84a('0x39')]=_['intersection'](_0x53acf5[_0xe84a('0x38')],qs[_0xe84a('0x47')](_0x4a190c['query']['fields']));_0x126b73['attributes']=_0x126b73[_0xe84a('0x39')]['length']?_0x126b73['attributes']:_0x53acf5[_0xe84a('0x38')];if(_0x4a190c['query'][_0xe84a('0x42')]){_0x126b73[_0xe84a('0x43')]=[{'all':!![]}];}_0x126b73=_[_0xe84a('0x40')]({},_0x126b73,_0x4a190c[_0xe84a('0x41')]);return db[_0xe84a('0x31')][_0xe84a('0x48')](_0x126b73)[_0xe84a('0x27')](handleEntityNotFound(_0x480760,null))[_0xe84a('0x27')](respondWithResult(_0x480760,null))[_0xe84a('0x44')](handleError(_0x480760,null));};exports[_0xe84a('0x49')]=function(_0x2de074,_0x3695d3){return db[_0xe84a('0x31')]['create'](_0x2de074[_0xe84a('0x4a')],{})['then'](function(_0x26f772){var _0x2e97b5=_0x2de074['user'][_0xe84a('0x29')]({'plain':!![]});if(!_0x2e97b5)throw new Error(_0xe84a('0x4b'));if(_0x2e97b5[_0xe84a('0x4c')]===_0xe84a('0x4d')){var _0x2eb827=_0x26f772[_0xe84a('0x29')]({'plain':!![]});var _0x5b8f3e=_0xe84a('0x4e');return db[_0xe84a('0x4f')][_0xe84a('0x48')]({'where':{'name':_0x5b8f3e,'userProfileId':_0x2e97b5[_0xe84a('0x50')]},'raw':!![]})[_0xe84a('0x27')](function(_0x4468b2){if(_0x4468b2&&_0x4468b2['autoAssociation']===0x0){return db['UserProfileResource'][_0xe84a('0x49')]({'name':_0x2eb827[_0xe84a('0x2d')],'resourceId':_0x2eb827['id'],'type':'CustomReports','sectionId':_0x4468b2['id']},{})['then'](function(){return _0x26f772;});}else{return _0x26f772;}})[_0xe84a('0x44')](function(_0x532fb9){logger[_0xe84a('0x2b')](_0xe84a('0x51'),_0x532fb9);throw _0x532fb9;});}return _0x26f772;})['then'](respondWithResult(_0x3695d3,0xc9))[_0xe84a('0x44')](handleError(_0x3695d3,null));};exports[_0xe84a('0x52')]=function(_0x1f68a2,_0x11a9c0){if(_0x1f68a2[_0xe84a('0x4a')]['id']){delete _0x1f68a2[_0xe84a('0x4a')]['id'];}return db['AnalyticCustomReport'][_0xe84a('0x48')]({'where':{'id':_0x1f68a2[_0xe84a('0x45')]['id']}})['then'](handleEntityNotFound(_0x11a9c0,null))[_0xe84a('0x27')](saveUpdates(_0x1f68a2[_0xe84a('0x4a')],null))[_0xe84a('0x27')](respondWithResult(_0x11a9c0,null))[_0xe84a('0x44')](handleError(_0x11a9c0,null));};exports['destroy']=function(_0x42b6c1,_0x4975eb){return db[_0xe84a('0x31')][_0xe84a('0x48')]({'where':{'id':_0x42b6c1[_0xe84a('0x45')]['id']}})['then'](handleEntityNotFound(_0x4975eb,null))['then'](removeEntity(_0x4975eb,null))[_0xe84a('0x44')](handleError(_0x4975eb,null));};exports['preview']=function(_0x2c096b,_0x5bd2d5){var _0x208588=0xa;var _0x4b5056=[_0xe84a('0x53'),_0xe84a('0x54'),'right_join','cross_join'];var _0xb38ecf={'SUM':_0xe84a('0x55'),'COUNT':_0xe84a('0x56'),'COUNT DISTINCT':_0xe84a('0x57'),'MAX':_0xe84a('0x58'),'MIN':_0xe84a('0x59'),'AVG':_0xe84a('0x5a'),'GROUP_CONCAT':_0xe84a('0x5b'),'GROUP_CONCAT ASC':_0xe84a('0x5c'),'GROUP_CONCAT DESC':_0xe84a('0x5d')};var _0x2c6818={'SEC_TO_TIME':_0xe84a('0x5e'),'DATE':_0xe84a('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xe84a('0x60'),'UNIX_TIMESTAMP':_0xe84a('0x61')};var _0x31e806=function(_0x249e64){return!_['includes']([_0xe84a('0x62'),'IS\x20NOT\x20NULL',_0xe84a('0x63'),_0xe84a('0x64')],_0x249e64);};var _0x5aace4=function(_0x5df979){if(!_0x5df979||!_0x5df979[_0xe84a('0x65')][_0xe84a('0x66')]){return'';}for(var _0xdc38fd='(',_0x5984e1=0x0;_0x5984e1<_0x5df979[_0xe84a('0x65')][_0xe84a('0x66')];_0x5984e1+=0x1){_0x5984e1>0x0&&(_0xdc38fd+='\x20'+_0x5df979[_0xe84a('0x67')]+'\x20');_0xdc38fd+=_0x5df979['rules'][_0x5984e1][_0xe84a('0x68')]?_0x5aace4(_0x5df979['rules'][_0x5984e1]['group']):_0x5df979[_0xe84a('0x65')][_0x5984e1][_0xe84a('0x69')]+'\x20'+_0x5df979[_0xe84a('0x65')][_0x5984e1]['condition']+(_0x31e806(_0x5df979[_0xe84a('0x65')][_0x5984e1][_0xe84a('0x6a')])?'\x20'+_0x5df979['rules'][_0x5984e1][_0xe84a('0x6b')]:'');}return _0xdc38fd+')';};var _0x165b73={'where':{'id':_0x2c096b[_0xe84a('0x45')]['id']}},_0x5d280e,_0x2d8eca,_0x562a60,_0xb716bf,_0x3d22ca;_0x165b73=_[_0xe84a('0x40')]({},_0x165b73,_0x2c096b['options']);return db[_0xe84a('0x31')]['find'](_0x165b73)[_0xe84a('0x27')](function(_0x410085){if(_0x410085){_0x5d280e=_0x410085;return _0x410085[_0xe84a('0x6c')]();}return null;})[_0xe84a('0x27')](function(_0x5835b3){if(_0x5835b3){if(!_0x5835b3[_0xe84a('0x66')]){throw new db[(_0xe84a('0x6d'))][(_0xe84a('0x6e'))](_0xe84a('0x6f'),0x193);}_0x2d8eca=_0x5835b3;return db[_0xe84a('0x70')]['findAll']({'raw':!![]});}return null;})[_0xe84a('0x27')](function(_0x21608f){if(_0x21608f){_0x562a60=_[_0xe84a('0x71')](_0x21608f,'id');var _0x3a6a27;var _0x17e330=squel[_0xe84a('0x72')]();_0x17e330[_0xe84a('0x73')](_0x5d280e[_0xe84a('0x74')]);for(var _0x7c4bcf=0x0;_0x7c4bcf<_0x2d8eca[_0xe84a('0x66')];_0x7c4bcf+=0x1){_0x3a6a27=_0x2d8eca[_0x7c4bcf]['MetricId']?_0x562a60[_0x2d8eca[_0x7c4bcf][_0xe84a('0x75')]][_0xe84a('0x76')]:_0x2d8eca[_0x7c4bcf][_0xe84a('0x69')];_0x3a6a27=_0x2d8eca[_0x7c4bcf][_0xe84a('0x77')]?_[_0xe84a('0x78')](_0xb38ecf[_0x2d8eca[_0x7c4bcf][_0xe84a('0x77')]],'%s',_0x3a6a27):_0x3a6a27;_0x3a6a27=_0x2d8eca[_0x7c4bcf][_0xe84a('0x79')]?_['replace'](_0x2c6818[_0x2d8eca[_0x7c4bcf][_0xe84a('0x79')]],'%s',_0x3a6a27):_0x3a6a27;if(_0x2d8eca[_0x7c4bcf][_0xe84a('0x7a')]){_0x17e330[_0xe84a('0x68')](_0x3a6a27);}_0x2d8eca[_0x7c4bcf][_0xe84a('0x7b')]&&_0x17e330['order'](_0x3a6a27,_0x2d8eca[_0x7c4bcf]['orderBy']===_0xe84a('0x7c')?![]:!![]);_0x17e330[_0xe84a('0x69')](_0x3a6a27,_0x2d8eca[_0x7c4bcf][_0xe84a('0x7d')]||_0x3a6a27);}if(_0x5d280e['joins']){_0x5d280e[_0xe84a('0x7e')]=JSON[_0xe84a('0x7f')](_0x5d280e['joins']);for(var _0x4ae1cd=0x0;_0x4ae1cd<_0x5d280e[_0xe84a('0x7e')][_0xe84a('0x66')];_0x4ae1cd+=0x1){if(_0x5d280e['joins'][_0x4ae1cd]['type']&&_[_0xe84a('0x80')](_0x4b5056,_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x34')])&&_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x81')]&&_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x82')]&&_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x83')]){_0x17e330[_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x34')]](_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x82')],null,util[_0xe84a('0x79')]('%s.%s\x20=\x20%s.%s',_0x5d280e[_0xe84a('0x74')],_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x81')],_0x5d280e['joins'][_0x4ae1cd][_0xe84a('0x82')],_0x5d280e[_0xe84a('0x7e')][_0x4ae1cd][_0xe84a('0x83')]));}}}if(_0x5d280e[_0xe84a('0x84')]){_0x5d280e[_0xe84a('0x84')]=JSON[_0xe84a('0x7f')](_0x5d280e[_0xe84a('0x84')]);_0x17e330[_0xe84a('0x3c')](_0x5aace4(_0x5d280e[_0xe84a('0x84')][_0xe84a('0x68')]));}_0x3d22ca=_0x17e330[_0xe84a('0x85')]();_0x17e330[_0xe84a('0x20')](_0x208588);_0x17e330['offset'](0x0);logger[_0xe84a('0x86')]('Limited\x20Query:',_0x17e330[_0xe84a('0x87')]());return dbH[_0xe84a('0x88')][_0xe84a('0x36')](_0x17e330[_0xe84a('0x87')](),{'type':dbH[_0xe84a('0x88')][_0xe84a('0x89')][_0xe84a('0x8a')]});}})[_0xe84a('0x27')](respondWithResult(_0x5bd2d5,null))[_0xe84a('0x44')](handleError(_0x5bd2d5,null));};function runReport(_0x1aad42,_0x47e3bf,_0x435f2f){var _0x528bb0=_0x47e3bf[_0xe84a('0x2d')];var _0x5ecb84=0xa;var _0x296297=['join',_0xe84a('0x54'),'right_join',_0xe84a('0x8b')];var _0xa2b992={'SUM':_0xe84a('0x55'),'COUNT':_0xe84a('0x56'),'COUNT DISTINCT':_0xe84a('0x57'),'MAX':'MAX(%s)','MIN':_0xe84a('0x59'),'AVG':_0xe84a('0x5a'),'GROUP_CONCAT':_0xe84a('0x5b'),'GROUP_CONCAT ASC':_0xe84a('0x5c'),'GROUP_CONCAT DESC':_0xe84a('0x5d')};var _0x39921b={'SEC_TO_TIME':_0xe84a('0x5e'),'DATE':'DATE(%s)','HOUR':_0xe84a('0x8c'),'ROUND':_0xe84a('0x60'),'UNIX_TIMESTAMP':_0xe84a('0x61')};var _0x41c3b0=function(_0x2191bb){return!_[_0xe84a('0x80')]([_0xe84a('0x62'),_0xe84a('0x8d'),_0xe84a('0x63'),'IS\x20NOT\x20EMPTY'],_0x2191bb);};var _0x5189de=function(_0x482a1c){if(!_0x482a1c||!_0x482a1c[_0xe84a('0x65')][_0xe84a('0x66')]){return'';}for(var _0x22361b='(',_0x535cd5=0x0;_0x535cd5<_0x482a1c[_0xe84a('0x65')][_0xe84a('0x66')];_0x535cd5+=0x1){_0x535cd5>0x0&&(_0x22361b+='\x20'+_0x482a1c['operator']+'\x20');_0x22361b+=_0x482a1c[_0xe84a('0x65')][_0x535cd5][_0xe84a('0x68')]?_0x5189de(_0x482a1c[_0xe84a('0x65')][_0x535cd5][_0xe84a('0x68')]):_0x482a1c[_0xe84a('0x65')][_0x535cd5]['field']+'\x20'+_0x482a1c[_0xe84a('0x65')][_0x535cd5]['condition']+(_0x41c3b0(_0x482a1c[_0xe84a('0x65')][_0x535cd5]['condition'])?'\x20'+_0x482a1c[_0xe84a('0x65')][_0x535cd5]['value']:'');}return _0x22361b+')';};var _0xa3a602={'where':{'id':_0x1aad42['id']}},_0x287c11,_0x5193d9,_0x47ee32,_0x426dee,_0x474316;_0xa3a602=_[_0xe84a('0x40')]({},_0xa3a602,_0x435f2f);return db[_0xe84a('0x31')][_0xe84a('0x48')](_0xa3a602)[_0xe84a('0x27')](function(_0x5d342a){if(_0x5d342a){_0x287c11=_0x5d342a;return _0x5d342a[_0xe84a('0x6c')]();}return null;})['then'](function(_0x14cd80){if(_0x14cd80){if(!_0x14cd80[_0xe84a('0x66')]){throw new db[(_0xe84a('0x6d'))][(_0xe84a('0x6e'))](_0xe84a('0x6f'),0x193);}_0x5193d9=_0x14cd80;return db['AnalyticMetric'][_0xe84a('0x8e')]({'raw':!![]});}return null;})[_0xe84a('0x27')](function(_0x3cfe0f){if(_0x3cfe0f){_0x47ee32=_[_0xe84a('0x71')](_0x3cfe0f,'id');var _0x51cf8c;var _0x13f24e=squel[_0xe84a('0x72')]();_0x13f24e['from'](_0x287c11['table']);for(var _0x57d8a3=0x0;_0x57d8a3<_0x5193d9['length'];_0x57d8a3+=0x1){_0x51cf8c=_0x5193d9[_0x57d8a3][_0xe84a('0x75')]?_0x47ee32[_0x5193d9[_0x57d8a3][_0xe84a('0x75')]]['metric']:_0x5193d9[_0x57d8a3][_0xe84a('0x69')];_0x51cf8c=_0x5193d9[_0x57d8a3][_0xe84a('0x77')]?_['replace'](_0xa2b992[_0x5193d9[_0x57d8a3]['function']],'%s',_0x51cf8c):_0x51cf8c;_0x51cf8c=_0x5193d9[_0x57d8a3][_0xe84a('0x79')]?_[_0xe84a('0x78')](_0x39921b[_0x5193d9[_0x57d8a3]['format']],'%s',_0x51cf8c):_0x51cf8c;if(_0x5193d9[_0x57d8a3][_0xe84a('0x7a')]){_0x13f24e[_0xe84a('0x68')](_0x51cf8c);}_0x5193d9[_0x57d8a3]['orderBy']&&_0x13f24e[_0xe84a('0x3a')](_0x51cf8c,_0x5193d9[_0x57d8a3][_0xe84a('0x7b')]===_0xe84a('0x7c')?![]:!![]);_0x13f24e['field'](_0x51cf8c,_0x5193d9[_0x57d8a3]['alias']||_0x51cf8c);}if(_0x287c11[_0xe84a('0x7e')]){_0x287c11[_0xe84a('0x7e')]=JSON[_0xe84a('0x7f')](_0x287c11['joins']);for(var _0x2b0259=0x0;_0x2b0259<_0x287c11[_0xe84a('0x7e')][_0xe84a('0x66')];_0x2b0259+=0x1){if(_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x34')]&&_['includes'](_0x296297,_0x287c11['joins'][_0x2b0259][_0xe84a('0x34')])&&_0x287c11[_0xe84a('0x7e')][_0x2b0259]['parentKey']&&_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x82')]&&_0x287c11[_0xe84a('0x7e')][_0x2b0259]['foreignKey']){_0x13f24e[_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x34')]](_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x82')],null,util[_0xe84a('0x79')](_0xe84a('0x8f'),_0x287c11['table'],_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x81')],_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x82')],_0x287c11[_0xe84a('0x7e')][_0x2b0259][_0xe84a('0x83')]));}}}if(_0x287c11[_0xe84a('0x84')]){_0x287c11['conditions']=JSON[_0xe84a('0x7f')](_0x287c11[_0xe84a('0x84')]);_0x13f24e[_0xe84a('0x3c')](_0x5189de(_0x287c11[_0xe84a('0x84')]['group']));}_0x474316=_0x13f24e[_0xe84a('0x85')]();_0x13f24e['limit'](_0x5ecb84);_0x13f24e[_0xe84a('0x21')](0x0);return;}})[_0xe84a('0x27')](function(){if(_0x47e3bf[_0xe84a('0x90')]===_0xe84a('0x91')){return null;}var _0x33691c=_[_0xe84a('0x40')](_0x47e3bf,{'name':_0x47e3bf['fullPath']||_0x47e3bf['name']||_0x287c11[_0xe84a('0x2d')],'basename':_0x528bb0,'savename':util[_0xe84a('0x79')]('%s-%s.%s',_0x47e3bf['name']||_0x287c11[_0xe84a('0x2d')],require(_0xe84a('0x92'))[_0xe84a('0x93')](0x4),_0x47e3bf[_0xe84a('0x90')]||_0xe84a('0x94')),'reportId':_0x287c11['id'],'reportType':'custom'});return db[_0xe84a('0x95')][_0xe84a('0x49')](_0x33691c,{'raw':!![]});})['then'](function(_0x4d36f3){if(_0x287c11[_0xe84a('0x74')]===_0xe84a('0x96')){_0x474316[_0xe84a('0x3c')](_0x287c11[_0xe84a('0x74')]+_0xe84a('0x97'),_0x47e3bf[_0xe84a('0x98')],_0x47e3bf[_0xe84a('0x99')]);}else{_0x474316[_0xe84a('0x3c')](_0x287c11['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x47e3bf[_0xe84a('0x98')],_0x47e3bf['endDate']);}if(_0x4d36f3){logger['info']('Run\x20Query:',_0x474316[_0xe84a('0x87')]());require('child_process')['fork'](path[_0xe84a('0x53')](__dirname,_0xe84a('0x9a'),_0x4d36f3[_0xe84a('0x90')]),[_0x4d36f3['id'],_0x474316['toString'](),path[_0xe84a('0x53')](__dirname,_0xe84a('0x9b'),_0x4d36f3[_0xe84a('0x9c')]),_0x528bb0]);return _0x4d36f3;}else{var _0x3c5baa=squel[_0xe84a('0x72')]();_0x3c5baa[_0xe84a('0x73')]('('+_0x474316[_0xe84a('0x87')]()+')',_0xe84a('0x9d'));_0x3c5baa[_0xe84a('0x69')](_0xe84a('0x9e'),_0xe84a('0x22'));_0x474316[_0xe84a('0x20')](_0x47e3bf[_0xe84a('0x20')]||_0x5ecb84);_0x474316['offset'](_0x47e3bf['offset']||0x0);return dbH[_0xe84a('0x88')]['query'](_0x3c5baa[_0xe84a('0x87')](),{'type':dbH[_0xe84a('0x88')][_0xe84a('0x89')]['SELECT']})[_0xe84a('0x27')](function(_0x58420b){if(!_0x58420b['length']){_0x426dee=0x0;}else{_0x426dee=_0x58420b[0x0][_0xe84a('0x22')]||0x0;}return dbH[_0xe84a('0x88')][_0xe84a('0x36')](_0x474316[_0xe84a('0x87')](),{'type':dbH['sequelize'][_0xe84a('0x89')][_0xe84a('0x8a')]});})[_0xe84a('0x27')](function(_0x27b3b4){return{'rows':_0x27b3b4||[],'count':_0x426dee};});}});}exports[_0xe84a('0x9f')]=function(_0x538e04,_0x19f196){return runReport(_0x538e04[_0xe84a('0x45')],_0x538e04[_0xe84a('0x36')],_0x538e04[_0xe84a('0x41')])[_0xe84a('0x27')](respondWithResult(_0x19f196,null))[_0xe84a('0x44')](handleError(_0x19f196,null));};exports['runReport']=runReport;exports[_0xe84a('0x36')]=function(_0x1a84f4,_0x18bcf9){var _0x55eb4b=0xa;var _0xfacc52=[_0xe84a('0x53'),'left_join',_0xe84a('0xa0'),'cross_join'];var _0x3d26cd={'SUM':_0xe84a('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xe84a('0x57'),'MAX':'MAX(%s)','MIN':_0xe84a('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xe84a('0x5c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2fed10={'SEC_TO_TIME':_0xe84a('0x5e'),'DATE':_0xe84a('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xe84a('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x382f87=function(_0x47d11a){return!_[_0xe84a('0x80')](['IS\x20NULL',_0xe84a('0x8d'),_0xe84a('0x63'),'IS\x20NOT\x20EMPTY'],_0x47d11a);};var _0x35fc77=function(_0x32d348){if(!_0x32d348||!_0x32d348[_0xe84a('0x65')]['length']){return'';}for(var _0x257052='(',_0x2f5582=0x0;_0x2f5582<_0x32d348[_0xe84a('0x65')][_0xe84a('0x66')];_0x2f5582+=0x1){_0x2f5582>0x0&&(_0x257052+='\x20'+_0x32d348[_0xe84a('0x67')]+'\x20');_0x257052+=_0x32d348[_0xe84a('0x65')][_0x2f5582][_0xe84a('0x68')]?_0x35fc77(_0x32d348[_0xe84a('0x65')][_0x2f5582]['group']):_0x32d348['rules'][_0x2f5582]['field']+'\x20'+_0x32d348[_0xe84a('0x65')][_0x2f5582][_0xe84a('0x6a')]+(_0x382f87(_0x32d348[_0xe84a('0x65')][_0x2f5582][_0xe84a('0x6a')])?'\x20'+_0x32d348[_0xe84a('0x65')][_0x2f5582][_0xe84a('0x6b')]:'');}return _0x257052+')';};var _0x1769f0={'where':{'id':_0x1a84f4[_0xe84a('0x45')]['id']}},_0x436d5b,_0x3ea61e,_0x3e4364,_0x403e0a,_0x9d9736;_0x1769f0=_['merge']({},_0x1769f0,_0x1a84f4['options']);return db[_0xe84a('0x31')][_0xe84a('0x48')](_0x1769f0)['then'](function(_0xf8957){if(_0xf8957){_0x436d5b=_0xf8957;return _0xf8957['getFields']();}return null;})[_0xe84a('0x27')](function(_0x517faf){if(_0x517faf){if(!_0x517faf['length']){throw new db[(_0xe84a('0x6d'))][(_0xe84a('0x6e'))](_0xe84a('0x6f'),0x193);}_0x3ea61e=_0x517faf;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xe84a('0x27')](function(_0x2fb6cd){if(_0x2fb6cd){_0x3e4364=_[_0xe84a('0x71')](_0x2fb6cd,'id');var _0x40721c;var _0x7a680=squel[_0xe84a('0x72')]();_0x7a680[_0xe84a('0x73')](_0x436d5b[_0xe84a('0x74')]);for(var _0x1314f4=0x0;_0x1314f4<_0x3ea61e[_0xe84a('0x66')];_0x1314f4+=0x1){_0x40721c=_0x3ea61e[_0x1314f4]['MetricId']?_0x3e4364[_0x3ea61e[_0x1314f4][_0xe84a('0x75')]][_0xe84a('0x76')]:_0x3ea61e[_0x1314f4]['field'];_0x40721c=_0x3ea61e[_0x1314f4][_0xe84a('0x77')]?_['replace'](_0x3d26cd[_0x3ea61e[_0x1314f4]['function']],'%s',_0x40721c):_0x40721c;_0x40721c=_0x3ea61e[_0x1314f4][_0xe84a('0x79')]?_[_0xe84a('0x78')](_0x2fed10[_0x3ea61e[_0x1314f4]['format']],'%s',_0x40721c):_0x40721c;if(_0x3ea61e[_0x1314f4][_0xe84a('0x7a')]){_0x7a680[_0xe84a('0x68')](_0x40721c);}_0x3ea61e[_0x1314f4][_0xe84a('0x7b')]&&_0x7a680['order'](_0x40721c,_0x3ea61e[_0x1314f4][_0xe84a('0x7b')]===_0xe84a('0x7c')?![]:!![]);_0x7a680[_0xe84a('0x69')](_0x40721c,_0x3ea61e[_0x1314f4][_0xe84a('0x7d')]||_0x40721c);}if(_0x436d5b[_0xe84a('0x7e')]){_0x436d5b[_0xe84a('0x7e')]=JSON['parse'](_0x436d5b[_0xe84a('0x7e')]);for(var _0x3716b0=0x0;_0x3716b0<_0x436d5b[_0xe84a('0x7e')][_0xe84a('0x66')];_0x3716b0+=0x1){if(_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x34')]&&_[_0xe84a('0x80')](_0xfacc52,_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x34')])&&_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x81')]&&_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x82')]&&_0x436d5b['joins'][_0x3716b0][_0xe84a('0x83')]){_0x7a680[_0x436d5b['joins'][_0x3716b0][_0xe84a('0x34')]](_0x436d5b['joins'][_0x3716b0]['foreignTable'],null,util['format']('%s.%s\x20=\x20%s.%s',_0x436d5b[_0xe84a('0x74')],_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x81')],_0x436d5b['joins'][_0x3716b0][_0xe84a('0x82')],_0x436d5b[_0xe84a('0x7e')][_0x3716b0][_0xe84a('0x83')]));}}}if(_0x436d5b[_0xe84a('0x84')]){_0x436d5b[_0xe84a('0x84')]=JSON[_0xe84a('0x7f')](_0x436d5b[_0xe84a('0x84')]);_0x7a680[_0xe84a('0x3c')](_0x35fc77(_0x436d5b['conditions']['group']));}_0x9d9736=_0x7a680['clone']();_0x7a680['limit'](_0x55eb4b);_0x7a680[_0xe84a('0x21')](0x0);logger[_0xe84a('0x86')](_0xe84a('0xa1'),_0x7a680[_0xe84a('0x87')]());return dbH[_0xe84a('0x88')][_0xe84a('0x36')](_0x7a680[_0xe84a('0x87')](),{'type':dbH['sequelize']['QueryTypes'][_0xe84a('0x8a')]});}})[_0xe84a('0x27')](function(){return{'sql':_0x9d9736[_0xe84a('0x87')]()};})[_0xe84a('0x27')](respondWithResult(_0x18bcf9,null))[_0xe84a('0x44')](handleError(_0x18bcf9,null));};
\ No newline at end of file
+var _0x8eba=['AVG(%s)','GROUP_CONCAT(%s)','getFields','keyBy','select','metric','output','web','fullPath','%s-%s.%s','randomstring','csv','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','cross_join','MAX(%s)','IS\x20NULL','debug','Limited\x20Query:','eml-format','rimraf','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','AnalyticCustomReport','includeAll','include','rows','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','left_join','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','length','operator','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','from','table','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','%s.%s\x20=\x20%s.%s','foreignTable','foreignKey','conditions','clone','toString','sequelize','QueryTypes','SELECT','COUNT(%s)'];(function(_0x14deaf,_0x14cb60){var _0x10e520=function(_0x49d2ac){while(--_0x49d2ac){_0x14deaf['push'](_0x14deaf['shift']());}};_0x10e520(++_0x14cb60);}(_0x8eba,0xc3));var _0xa8eb=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x8eba[_0x273c39];return _0x46d6b5;};'use strict';var emlformat=require(_0xa8eb('0x0'));var rimraf=require(_0xa8eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa8eb('0x2'));var BPromise=require(_0xa8eb('0x3'));var Mustache=require(_0xa8eb('0x4'));var util=require(_0xa8eb('0x5'));var path=require('path');var sox=require(_0xa8eb('0x6'));var csv=require(_0xa8eb('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa8eb('0x8'));var _=require('lodash');var squel=require(_0xa8eb('0x9'));var crypto=require(_0xa8eb('0xa'));var jsforce=require(_0xa8eb('0xb'));var deskjs=require(_0xa8eb('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa8eb('0xd'));var Papa=require(_0xa8eb('0xe'));var Redis=require('ioredis');var authService=require(_0xa8eb('0xf'));var qs=require(_0xa8eb('0x10'));var as=require(_0xa8eb('0x11'));var hardwareService=require(_0xa8eb('0x12'));var logger=require('../../config/logger')(_0xa8eb('0x13'));var utils=require('../../config/utils');var config=require(_0xa8eb('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8eb('0x15'))['db'];var dbH=require(_0xa8eb('0x15'))['dbH'];function respondWithStatusCode(_0x2c7cff,_0x490c4f){_0x490c4f=_0x490c4f||0xcc;return function(_0x289ed3){if(_0x289ed3){return _0x2c7cff[_0xa8eb('0x16')](_0x490c4f);}return _0x2c7cff[_0xa8eb('0x17')](_0x490c4f)[_0xa8eb('0x18')]();};}function respondWithResult(_0x557bb0,_0x2d35c7){_0x2d35c7=_0x2d35c7||0xc8;return function(_0x4a9b77){if(_0x4a9b77){return _0x557bb0[_0xa8eb('0x17')](_0x2d35c7)[_0xa8eb('0x19')](_0x4a9b77);}};}function respondWithFilteredResult(_0x40ec36,_0x102a81){return function(_0x538313){if(_0x538313){var _0x115017=typeof _0x102a81[_0xa8eb('0x1a')]===_0xa8eb('0x1b')&&typeof _0x102a81[_0xa8eb('0x1c')]===_0xa8eb('0x1b');var _0x57a6c6=_0x538313[_0xa8eb('0x1d')];var _0x1cb4f1=_0x115017?0x0:_0x102a81[_0xa8eb('0x1a')];var _0x445cc6=_0x115017?_0x538313[_0xa8eb('0x1d')]:_0x102a81[_0xa8eb('0x1a')]+_0x102a81[_0xa8eb('0x1c')];var _0x12284e;if(_0x445cc6>=_0x57a6c6){_0x445cc6=_0x57a6c6;_0x12284e=0xc8;}else{_0x12284e=0xce;}_0x40ec36['status'](_0x12284e);return _0x40ec36['set']('Content-Range',_0x1cb4f1+'-'+_0x445cc6+'/'+_0x57a6c6)[_0xa8eb('0x19')](_0x538313);}return null;};}function patchUpdates(_0x3f3e49){return function(_0x153e53){try{jsonpatch['apply'](_0x153e53,_0x3f3e49,!![]);}catch(_0xf9d099){return BPromise[_0xa8eb('0x1e')](_0xf9d099);}return _0x153e53[_0xa8eb('0x1f')]();};}function saveUpdates(_0x453b69,_0xd0ecf){return function(_0xdd67ed){if(_0xdd67ed){return _0xdd67ed[_0xa8eb('0x20')](_0x453b69)[_0xa8eb('0x21')](function(_0x4557fc){return _0x4557fc;});}return null;};}function removeEntity(_0x387d49,_0xf55fd4){return function(_0x13194b){if(_0x13194b){return _0x13194b[_0xa8eb('0x22')]()['then'](function(){var _0x15b149=_0x13194b[_0xa8eb('0x23')]({'plain':!![]});var _0x130a51=_0xa8eb('0x24');return db[_0xa8eb('0x25')]['destroy']({'where':{'type':_0x130a51,'resourceId':_0x15b149['id']}})[_0xa8eb('0x21')](function(){return _0x13194b;});})[_0xa8eb('0x21')](function(){_0x387d49[_0xa8eb('0x17')](0xcc)[_0xa8eb('0x18')]();});}};}function handleEntityNotFound(_0xdf010b,_0x54792a){return function(_0x52e54a){if(!_0x52e54a){_0xdf010b[_0xa8eb('0x16')](0x194);}return _0x52e54a;};}function handleError(_0x3cfcf0,_0x167f29){_0x167f29=_0x167f29||0x1f4;return function(_0x186eb5){logger[_0xa8eb('0x26')](_0x186eb5['stack']);if(_0x186eb5[_0xa8eb('0x27')]){delete _0x186eb5[_0xa8eb('0x27')];}_0x3cfcf0[_0xa8eb('0x17')](_0x167f29)[_0xa8eb('0x28')](_0x186eb5);};}exports[_0xa8eb('0x29')]=function(_0x17ddcf,_0xc1d74d){var _0x5a3cec={},_0x6bfa07={},_0x51ecfb={'count':0x0,'rows':[]};var _0xa08a7c=_[_0xa8eb('0x2a')](db['AnalyticCustomReport'][_0xa8eb('0x2b')],function(_0x48c984){return{'name':_0x48c984[_0xa8eb('0x2c')],'type':_0x48c984[_0xa8eb('0x2d')][_0xa8eb('0x2e')]};});_0x6bfa07[_0xa8eb('0x2f')]=_['map'](_0xa08a7c,_0xa8eb('0x27'));_0x6bfa07[_0xa8eb('0x30')]=_[_0xa8eb('0x31')](_0x17ddcf[_0xa8eb('0x30')]);_0x6bfa07[_0xa8eb('0x32')]=_[_0xa8eb('0x33')](_0x6bfa07['model'],_0x6bfa07[_0xa8eb('0x30')]);_0x5a3cec['attributes']=_['intersection'](_0x6bfa07['model'],qs[_0xa8eb('0x34')](_0x17ddcf[_0xa8eb('0x30')][_0xa8eb('0x34')]));_0x5a3cec[_0xa8eb('0x35')]=_0x5a3cec[_0xa8eb('0x35')]['length']?_0x5a3cec['attributes']:_0x6bfa07[_0xa8eb('0x2f')];if(!_0x17ddcf[_0xa8eb('0x30')][_0xa8eb('0x36')](_0xa8eb('0x37'))){_0x5a3cec[_0xa8eb('0x1c')]=qs['limit'](_0x17ddcf[_0xa8eb('0x30')]['limit']);_0x5a3cec[_0xa8eb('0x1a')]=qs['offset'](_0x17ddcf[_0xa8eb('0x30')][_0xa8eb('0x1a')]);}_0x5a3cec[_0xa8eb('0x38')]=qs[_0xa8eb('0x39')](_0x17ddcf['query'][_0xa8eb('0x39')]);_0x5a3cec['where']=qs[_0xa8eb('0x32')](_[_0xa8eb('0x3a')](_0x17ddcf[_0xa8eb('0x30')],_0x6bfa07[_0xa8eb('0x32')]),_0xa08a7c);if(_0x17ddcf['query'][_0xa8eb('0x3b')]){_0x5a3cec[_0xa8eb('0x3c')]=_['merge'](_0x5a3cec[_0xa8eb('0x3c')],{'$or':_['map'](_0xa08a7c,function(_0x2a12f0){if(_0x2a12f0[_0xa8eb('0x2d')]!==_0xa8eb('0x3d')){var _0x4dc487={};_0x4dc487[_0x2a12f0[_0xa8eb('0x27')]]={'$like':'%'+_0x17ddcf['query']['filter']+'%'};return _0x4dc487;}})});}_0x5a3cec=_[_0xa8eb('0x3e')]({},_0x5a3cec,_0x17ddcf[_0xa8eb('0x3f')]);var _0x4e030e={'where':_0x5a3cec[_0xa8eb('0x3c')]};return db[_0xa8eb('0x40')][_0xa8eb('0x1d')](_0x4e030e)[_0xa8eb('0x21')](function(_0x41162c){_0x51ecfb[_0xa8eb('0x1d')]=_0x41162c;if(_0x17ddcf[_0xa8eb('0x30')][_0xa8eb('0x41')]){_0x5a3cec[_0xa8eb('0x42')]=[{'all':!![]}];}return db[_0xa8eb('0x40')]['findAll'](_0x5a3cec);})['then'](function(_0x2315c2){_0x51ecfb[_0xa8eb('0x43')]=_0x2315c2;return _0x51ecfb;})[_0xa8eb('0x21')](respondWithFilteredResult(_0xc1d74d,_0x5a3cec))[_0xa8eb('0x44')](handleError(_0xc1d74d,null));};exports[_0xa8eb('0x45')]=function(_0x10a118,_0x23094a){var _0x470e68={'raw':![],'where':{'id':_0x10a118['params']['id']}},_0x57c774={};_0x57c774[_0xa8eb('0x2f')]=_[_0xa8eb('0x31')](db[_0xa8eb('0x40')]['rawAttributes']);_0x57c774[_0xa8eb('0x30')]=_[_0xa8eb('0x31')](_0x10a118[_0xa8eb('0x30')]);_0x57c774[_0xa8eb('0x32')]=_[_0xa8eb('0x33')](_0x57c774[_0xa8eb('0x2f')],_0x57c774[_0xa8eb('0x30')]);_0x470e68[_0xa8eb('0x35')]=_[_0xa8eb('0x33')](_0x57c774['model'],qs[_0xa8eb('0x34')](_0x10a118['query'][_0xa8eb('0x34')]));_0x470e68[_0xa8eb('0x35')]=_0x470e68[_0xa8eb('0x35')]['length']?_0x470e68[_0xa8eb('0x35')]:_0x57c774[_0xa8eb('0x2f')];if(_0x10a118[_0xa8eb('0x30')][_0xa8eb('0x41')]){_0x470e68[_0xa8eb('0x42')]=[{'all':!![]}];}_0x470e68=_[_0xa8eb('0x3e')]({},_0x470e68,_0x10a118[_0xa8eb('0x3f')]);return db[_0xa8eb('0x40')][_0xa8eb('0x46')](_0x470e68)['then'](handleEntityNotFound(_0x23094a,null))['then'](respondWithResult(_0x23094a,null))[_0xa8eb('0x44')](handleError(_0x23094a,null));};exports[_0xa8eb('0x47')]=function(_0x2c8f1b,_0x1b2bb8){return db['AnalyticCustomReport']['create'](_0x2c8f1b['body'],{})[_0xa8eb('0x21')](function(_0x4cbe81){var _0x33e22e=_0x2c8f1b[_0xa8eb('0x48')][_0xa8eb('0x23')]({'plain':!![]});if(!_0x33e22e)throw new Error(_0xa8eb('0x49'));if(_0x33e22e[_0xa8eb('0x4a')]===_0xa8eb('0x48')){var _0x4268d6=_0x4cbe81[_0xa8eb('0x23')]({'plain':!![]});var _0xd8790a=_0xa8eb('0x4b');return db[_0xa8eb('0x4c')][_0xa8eb('0x46')]({'where':{'name':_0xd8790a,'userProfileId':_0x33e22e[_0xa8eb('0x4d')]},'raw':!![]})[_0xa8eb('0x21')](function(_0x7fa03e){if(_0x7fa03e&&_0x7fa03e[_0xa8eb('0x4e')]===0x0){return db[_0xa8eb('0x25')]['create']({'name':_0x4268d6['name'],'resourceId':_0x4268d6['id'],'type':_0xa8eb('0x24'),'sectionId':_0x7fa03e['id']},{})['then'](function(){return _0x4cbe81;});}else{return _0x4cbe81;}})[_0xa8eb('0x44')](function(_0x5ca274){logger[_0xa8eb('0x26')](_0xa8eb('0x4f'),_0x5ca274);throw _0x5ca274;});}return _0x4cbe81;})['then'](respondWithResult(_0x1b2bb8,0xc9))['catch'](handleError(_0x1b2bb8,null));};exports[_0xa8eb('0x20')]=function(_0x2623bf,_0x1251cd){if(_0x2623bf[_0xa8eb('0x50')]['id']){delete _0x2623bf[_0xa8eb('0x50')]['id'];}return db[_0xa8eb('0x40')][_0xa8eb('0x46')]({'where':{'id':_0x2623bf[_0xa8eb('0x51')]['id']}})[_0xa8eb('0x21')](handleEntityNotFound(_0x1251cd,null))[_0xa8eb('0x21')](saveUpdates(_0x2623bf[_0xa8eb('0x50')],null))[_0xa8eb('0x21')](respondWithResult(_0x1251cd,null))[_0xa8eb('0x44')](handleError(_0x1251cd,null));};exports[_0xa8eb('0x22')]=function(_0x4b6c64,_0x57896d){return db[_0xa8eb('0x40')][_0xa8eb('0x46')]({'where':{'id':_0x4b6c64[_0xa8eb('0x51')]['id']}})[_0xa8eb('0x21')](handleEntityNotFound(_0x57896d,null))[_0xa8eb('0x21')](removeEntity(_0x57896d,null))[_0xa8eb('0x44')](handleError(_0x57896d,null));};exports['preview']=function(_0x27be08,_0xc4022c){var _0x57c09a=0xa;var _0x292a15=['join',_0xa8eb('0x52'),_0xa8eb('0x53'),'cross_join'];var _0x479730={'SUM':_0xa8eb('0x54'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xa8eb('0x55'),'MAX':'MAX(%s)','MIN':_0xa8eb('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xa8eb('0x57'),'GROUP_CONCAT DESC':_0xa8eb('0x58')};var _0xa7f54f={'SEC_TO_TIME':_0xa8eb('0x59'),'DATE':_0xa8eb('0x5a'),'HOUR':_0xa8eb('0x5b'),'ROUND':_0xa8eb('0x5c'),'UNIX_TIMESTAMP':_0xa8eb('0x5d')};var _0x5c1a18=function(_0x30fd68){return!_[_0xa8eb('0x5e')](['IS\x20NULL',_0xa8eb('0x5f'),_0xa8eb('0x60'),_0xa8eb('0x61')],_0x30fd68);};var _0x2a68ed=function(_0x3786c4){if(!_0x3786c4||!_0x3786c4[_0xa8eb('0x62')][_0xa8eb('0x63')]){return'';}for(var _0x1438c6='(',_0xaa6313=0x0;_0xaa6313<_0x3786c4[_0xa8eb('0x62')][_0xa8eb('0x63')];_0xaa6313+=0x1){_0xaa6313>0x0&&(_0x1438c6+='\x20'+_0x3786c4[_0xa8eb('0x64')]+'\x20');_0x1438c6+=_0x3786c4[_0xa8eb('0x62')][_0xaa6313]['group']?_0x2a68ed(_0x3786c4[_0xa8eb('0x62')][_0xaa6313][_0xa8eb('0x65')]):_0x3786c4[_0xa8eb('0x62')][_0xaa6313][_0xa8eb('0x66')]+'\x20'+_0x3786c4['rules'][_0xaa6313][_0xa8eb('0x67')]+(_0x5c1a18(_0x3786c4[_0xa8eb('0x62')][_0xaa6313]['condition'])?'\x20'+_0x3786c4[_0xa8eb('0x62')][_0xaa6313][_0xa8eb('0x68')]:'');}return _0x1438c6+')';};var _0x24a714={'where':{'id':_0x27be08['params']['id']}},_0x3d7a25,_0x94c934,_0x4f6685,_0x3f49b1,_0x6d2b9c;_0x24a714=_[_0xa8eb('0x3e')]({},_0x24a714,_0x27be08['options']);return db[_0xa8eb('0x40')][_0xa8eb('0x46')](_0x24a714)[_0xa8eb('0x21')](function(_0x5cd4dc){if(_0x5cd4dc){_0x3d7a25=_0x5cd4dc;return _0x5cd4dc['getFields']();}return null;})[_0xa8eb('0x21')](function(_0x5d99bf){if(_0x5d99bf){if(!_0x5d99bf[_0xa8eb('0x63')]){throw new db[(_0xa8eb('0x69'))][(_0xa8eb('0x6a'))](_0xa8eb('0x6b'),0x193);}_0x94c934=_0x5d99bf;return db[_0xa8eb('0x6c')][_0xa8eb('0x6d')]({'raw':!![]});}return null;})[_0xa8eb('0x21')](function(_0x300ac5){if(_0x300ac5){_0x4f6685=_['keyBy'](_0x300ac5,'id');var _0x3dd310;var _0xe087d=squel['select']();_0xe087d[_0xa8eb('0x6e')](_0x3d7a25[_0xa8eb('0x6f')]);for(var _0x2d77c4=0x0;_0x2d77c4<_0x94c934[_0xa8eb('0x63')];_0x2d77c4+=0x1){_0x3dd310=_0x94c934[_0x2d77c4]['MetricId']?_0x4f6685[_0x94c934[_0x2d77c4][_0xa8eb('0x70')]]['metric']:_0x94c934[_0x2d77c4]['field'];_0x3dd310=_0x94c934[_0x2d77c4][_0xa8eb('0x71')]?_[_0xa8eb('0x72')](_0x479730[_0x94c934[_0x2d77c4][_0xa8eb('0x71')]],'%s',_0x3dd310):_0x3dd310;_0x3dd310=_0x94c934[_0x2d77c4]['format']?_[_0xa8eb('0x72')](_0xa7f54f[_0x94c934[_0x2d77c4][_0xa8eb('0x73')]],'%s',_0x3dd310):_0x3dd310;if(_0x94c934[_0x2d77c4][_0xa8eb('0x74')]){_0xe087d['group'](_0x3dd310);}_0x94c934[_0x2d77c4][_0xa8eb('0x75')]&&_0xe087d[_0xa8eb('0x38')](_0x3dd310,_0x94c934[_0x2d77c4][_0xa8eb('0x75')]===_0xa8eb('0x76')?![]:!![]);_0xe087d['field'](_0x3dd310,_0x94c934[_0x2d77c4][_0xa8eb('0x77')]||_0x3dd310);}if(_0x3d7a25[_0xa8eb('0x78')]){_0x3d7a25['joins']=JSON[_0xa8eb('0x79')](_0x3d7a25['joins']);for(var _0x5c7f14=0x0;_0x5c7f14<_0x3d7a25[_0xa8eb('0x78')][_0xa8eb('0x63')];_0x5c7f14+=0x1){if(_0x3d7a25['joins'][_0x5c7f14][_0xa8eb('0x2d')]&&_['includes'](_0x292a15,_0x3d7a25['joins'][_0x5c7f14][_0xa8eb('0x2d')])&&_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14][_0xa8eb('0x7a')]&&_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14]['foreignTable']&&_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14]['foreignKey']){_0xe087d[_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14][_0xa8eb('0x2d')]](_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14]['foreignTable'],null,util[_0xa8eb('0x73')](_0xa8eb('0x7b'),_0x3d7a25['table'],_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14][_0xa8eb('0x7a')],_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14][_0xa8eb('0x7c')],_0x3d7a25[_0xa8eb('0x78')][_0x5c7f14][_0xa8eb('0x7d')]));}}}if(_0x3d7a25[_0xa8eb('0x7e')]){_0x3d7a25[_0xa8eb('0x7e')]=JSON[_0xa8eb('0x79')](_0x3d7a25[_0xa8eb('0x7e')]);_0xe087d[_0xa8eb('0x3c')](_0x2a68ed(_0x3d7a25[_0xa8eb('0x7e')][_0xa8eb('0x65')]));}_0x6d2b9c=_0xe087d[_0xa8eb('0x7f')]();_0xe087d[_0xa8eb('0x1c')](_0x57c09a);_0xe087d['offset'](0x0);logger['debug']('Limited\x20Query:',_0xe087d[_0xa8eb('0x80')]());return dbH[_0xa8eb('0x81')][_0xa8eb('0x30')](_0xe087d[_0xa8eb('0x80')](),{'type':dbH[_0xa8eb('0x81')][_0xa8eb('0x82')][_0xa8eb('0x83')]});}})['then'](respondWithResult(_0xc4022c,null))[_0xa8eb('0x44')](handleError(_0xc4022c,null));};function runReport(_0x3aa164,_0xb74232,_0x157618){var _0x185c7b=_0xb74232[_0xa8eb('0x27')];var _0x2dbf70=0xa;var _0x391e9a=['join','left_join','right_join','cross_join'];var _0x26671d={'SUM':'SUM(%s)','COUNT':_0xa8eb('0x84'),'COUNT DISTINCT':_0xa8eb('0x55'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xa8eb('0x85'),'GROUP_CONCAT':_0xa8eb('0x86'),'GROUP_CONCAT ASC':_0xa8eb('0x57'),'GROUP_CONCAT DESC':_0xa8eb('0x58')};var _0x33af92={'SEC_TO_TIME':_0xa8eb('0x59'),'DATE':_0xa8eb('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0xa8eb('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1559a5=function(_0x179b76){return!_[_0xa8eb('0x5e')](['IS\x20NULL',_0xa8eb('0x5f'),_0xa8eb('0x60'),_0xa8eb('0x61')],_0x179b76);};var _0x435fa0=function(_0x5181db){if(!_0x5181db||!_0x5181db[_0xa8eb('0x62')][_0xa8eb('0x63')]){return'';}for(var _0x5531de='(',_0x18292c=0x0;_0x18292c<_0x5181db[_0xa8eb('0x62')][_0xa8eb('0x63')];_0x18292c+=0x1){_0x18292c>0x0&&(_0x5531de+='\x20'+_0x5181db[_0xa8eb('0x64')]+'\x20');_0x5531de+=_0x5181db[_0xa8eb('0x62')][_0x18292c][_0xa8eb('0x65')]?_0x435fa0(_0x5181db[_0xa8eb('0x62')][_0x18292c][_0xa8eb('0x65')]):_0x5181db[_0xa8eb('0x62')][_0x18292c]['field']+'\x20'+_0x5181db['rules'][_0x18292c][_0xa8eb('0x67')]+(_0x1559a5(_0x5181db[_0xa8eb('0x62')][_0x18292c][_0xa8eb('0x67')])?'\x20'+_0x5181db['rules'][_0x18292c]['value']:'');}return _0x5531de+')';};var _0x375509={'where':{'id':_0x3aa164['id']}},_0x323341,_0xaf6918,_0x540b0d,_0x5acb79,_0x42902d;_0x375509=_[_0xa8eb('0x3e')]({},_0x375509,_0x157618);return db[_0xa8eb('0x40')]['find'](_0x375509)[_0xa8eb('0x21')](function(_0xd6a745){if(_0xd6a745){_0x323341=_0xd6a745;return _0xd6a745[_0xa8eb('0x87')]();}return null;})[_0xa8eb('0x21')](function(_0x3f33a0){if(_0x3f33a0){if(!_0x3f33a0[_0xa8eb('0x63')]){throw new db[(_0xa8eb('0x69'))][(_0xa8eb('0x6a'))](_0xa8eb('0x6b'),0x193);}_0xaf6918=_0x3f33a0;return db[_0xa8eb('0x6c')][_0xa8eb('0x6d')]({'raw':!![]});}return null;})[_0xa8eb('0x21')](function(_0x36b9ab){if(_0x36b9ab){_0x540b0d=_[_0xa8eb('0x88')](_0x36b9ab,'id');var _0x16265b;var _0x4a9965=squel[_0xa8eb('0x89')]();_0x4a9965[_0xa8eb('0x6e')](_0x323341['table']);for(var _0x109266=0x0;_0x109266<_0xaf6918['length'];_0x109266+=0x1){_0x16265b=_0xaf6918[_0x109266][_0xa8eb('0x70')]?_0x540b0d[_0xaf6918[_0x109266][_0xa8eb('0x70')]][_0xa8eb('0x8a')]:_0xaf6918[_0x109266][_0xa8eb('0x66')];_0x16265b=_0xaf6918[_0x109266][_0xa8eb('0x71')]?_[_0xa8eb('0x72')](_0x26671d[_0xaf6918[_0x109266][_0xa8eb('0x71')]],'%s',_0x16265b):_0x16265b;_0x16265b=_0xaf6918[_0x109266][_0xa8eb('0x73')]?_[_0xa8eb('0x72')](_0x33af92[_0xaf6918[_0x109266][_0xa8eb('0x73')]],'%s',_0x16265b):_0x16265b;if(_0xaf6918[_0x109266]['groupBy']){_0x4a9965[_0xa8eb('0x65')](_0x16265b);}_0xaf6918[_0x109266]['orderBy']&&_0x4a9965[_0xa8eb('0x38')](_0x16265b,_0xaf6918[_0x109266][_0xa8eb('0x75')]==='DESC'?![]:!![]);_0x4a9965[_0xa8eb('0x66')](_0x16265b,_0xaf6918[_0x109266]['alias']||_0x16265b);}if(_0x323341[_0xa8eb('0x78')]){_0x323341[_0xa8eb('0x78')]=JSON['parse'](_0x323341[_0xa8eb('0x78')]);for(var _0x5cd43b=0x0;_0x5cd43b<_0x323341[_0xa8eb('0x78')]['length'];_0x5cd43b+=0x1){if(_0x323341[_0xa8eb('0x78')][_0x5cd43b][_0xa8eb('0x2d')]&&_[_0xa8eb('0x5e')](_0x391e9a,_0x323341['joins'][_0x5cd43b][_0xa8eb('0x2d')])&&_0x323341['joins'][_0x5cd43b][_0xa8eb('0x7a')]&&_0x323341[_0xa8eb('0x78')][_0x5cd43b][_0xa8eb('0x7c')]&&_0x323341['joins'][_0x5cd43b][_0xa8eb('0x7d')]){_0x4a9965[_0x323341[_0xa8eb('0x78')][_0x5cd43b][_0xa8eb('0x2d')]](_0x323341[_0xa8eb('0x78')][_0x5cd43b][_0xa8eb('0x7c')],null,util['format'](_0xa8eb('0x7b'),_0x323341[_0xa8eb('0x6f')],_0x323341[_0xa8eb('0x78')][_0x5cd43b]['parentKey'],_0x323341['joins'][_0x5cd43b][_0xa8eb('0x7c')],_0x323341[_0xa8eb('0x78')][_0x5cd43b][_0xa8eb('0x7d')]));}}}if(_0x323341[_0xa8eb('0x7e')]){_0x323341[_0xa8eb('0x7e')]=JSON[_0xa8eb('0x79')](_0x323341[_0xa8eb('0x7e')]);_0x4a9965['where'](_0x435fa0(_0x323341[_0xa8eb('0x7e')][_0xa8eb('0x65')]));}_0x42902d=_0x4a9965[_0xa8eb('0x7f')]();_0x4a9965[_0xa8eb('0x1c')](_0x2dbf70);_0x4a9965[_0xa8eb('0x1a')](0x0);return;}})['then'](function(){if(_0xb74232[_0xa8eb('0x8b')]===_0xa8eb('0x8c')){return null;}var _0x479a93=_[_0xa8eb('0x3e')](_0xb74232,{'name':_0xb74232[_0xa8eb('0x8d')]||_0xb74232[_0xa8eb('0x27')]||_0x323341['name'],'basename':_0x185c7b,'savename':util['format'](_0xa8eb('0x8e'),_0xb74232[_0xa8eb('0x27')]||_0x323341[_0xa8eb('0x27')],require(_0xa8eb('0x8f'))['generate'](0x4),_0xb74232[_0xa8eb('0x8b')]||_0xa8eb('0x90')),'reportId':_0x323341['id'],'reportType':_0xa8eb('0x91')});return db[_0xa8eb('0x92')]['create'](_0x479a93,{'raw':!![]});})['then'](function(_0x3b1a2b){if(_0x323341[_0xa8eb('0x6f')]==='cdr'){_0x42902d[_0xa8eb('0x3c')](_0x323341[_0xa8eb('0x6f')]+_0xa8eb('0x93'),_0xb74232['startDate'],_0xb74232[_0xa8eb('0x94')]);}else{_0x42902d[_0xa8eb('0x3c')](_0x323341['table']+_0xa8eb('0x95'),_0xb74232[_0xa8eb('0x96')],_0xb74232[_0xa8eb('0x94')]);}if(_0x3b1a2b){logger[_0xa8eb('0x97')]('Run\x20Query:',_0x42902d[_0xa8eb('0x80')]());require(_0xa8eb('0x98'))['fork'](path['join'](__dirname,_0xa8eb('0x99'),_0x3b1a2b['output']),[_0x3b1a2b['id'],_0x42902d[_0xa8eb('0x80')](),path['join'](__dirname,_0xa8eb('0x9a'),_0x3b1a2b[_0xa8eb('0x9b')]),_0x185c7b]);return _0x3b1a2b;}else{var _0x85bc9=squel[_0xa8eb('0x89')]();_0x85bc9[_0xa8eb('0x6e')]('('+_0x42902d[_0xa8eb('0x80')]()+')',_0xa8eb('0x9c'));_0x85bc9[_0xa8eb('0x66')](_0xa8eb('0x9d'),'count');_0x42902d[_0xa8eb('0x1c')](_0xb74232['limit']||_0x2dbf70);_0x42902d['offset'](_0xb74232['offset']||0x0);return dbH[_0xa8eb('0x81')][_0xa8eb('0x30')](_0x85bc9[_0xa8eb('0x80')](),{'type':dbH[_0xa8eb('0x81')][_0xa8eb('0x82')][_0xa8eb('0x83')]})[_0xa8eb('0x21')](function(_0xd1e555){if(!_0xd1e555['length']){_0x5acb79=0x0;}else{_0x5acb79=_0xd1e555[0x0][_0xa8eb('0x1d')]||0x0;}return dbH[_0xa8eb('0x81')][_0xa8eb('0x30')](_0x42902d[_0xa8eb('0x80')](),{'type':dbH[_0xa8eb('0x81')][_0xa8eb('0x82')][_0xa8eb('0x83')]});})[_0xa8eb('0x21')](function(_0x4027b8){return{'rows':_0x4027b8||[],'count':_0x5acb79};});}});}exports[_0xa8eb('0x9e')]=function(_0x3215af,_0x47993d){return runReport(_0x3215af[_0xa8eb('0x51')],_0x3215af['query'],_0x3215af[_0xa8eb('0x3f')])[_0xa8eb('0x21')](respondWithResult(_0x47993d,null))['catch'](handleError(_0x47993d,null));};exports['runReport']=runReport;exports[_0xa8eb('0x30')]=function(_0x31d519,_0xbdb0c3){var _0x10ae71=0xa;var _0x40803c=['join','left_join','right_join',_0xa8eb('0x9f')];var _0x42ad37={'SUM':_0xa8eb('0x54'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xa8eb('0xa0'),'MIN':_0xa8eb('0x56'),'AVG':_0xa8eb('0x85'),'GROUP_CONCAT':_0xa8eb('0x86'),'GROUP_CONCAT ASC':_0xa8eb('0x57'),'GROUP_CONCAT DESC':_0xa8eb('0x58')};var _0x308285={'SEC_TO_TIME':_0xa8eb('0x59'),'DATE':_0xa8eb('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0xa8eb('0x5c'),'UNIX_TIMESTAMP':_0xa8eb('0x5d')};var _0x1edd3d=function(_0x426edc){return!_[_0xa8eb('0x5e')]([_0xa8eb('0xa1'),_0xa8eb('0x5f'),_0xa8eb('0x60'),_0xa8eb('0x61')],_0x426edc);};var _0x226919=function(_0x227292){if(!_0x227292||!_0x227292['rules'][_0xa8eb('0x63')]){return'';}for(var _0x5f189a='(',_0x3fdb40=0x0;_0x3fdb40<_0x227292[_0xa8eb('0x62')][_0xa8eb('0x63')];_0x3fdb40+=0x1){_0x3fdb40>0x0&&(_0x5f189a+='\x20'+_0x227292[_0xa8eb('0x64')]+'\x20');_0x5f189a+=_0x227292[_0xa8eb('0x62')][_0x3fdb40][_0xa8eb('0x65')]?_0x226919(_0x227292[_0xa8eb('0x62')][_0x3fdb40][_0xa8eb('0x65')]):_0x227292[_0xa8eb('0x62')][_0x3fdb40]['field']+'\x20'+_0x227292['rules'][_0x3fdb40]['condition']+(_0x1edd3d(_0x227292['rules'][_0x3fdb40][_0xa8eb('0x67')])?'\x20'+_0x227292[_0xa8eb('0x62')][_0x3fdb40][_0xa8eb('0x68')]:'');}return _0x5f189a+')';};var _0x5e6549={'where':{'id':_0x31d519[_0xa8eb('0x51')]['id']}},_0x4a3b83,_0x14d88a,_0x2e4ab1,_0x562b85,_0x22f157;_0x5e6549=_[_0xa8eb('0x3e')]({},_0x5e6549,_0x31d519[_0xa8eb('0x3f')]);return db[_0xa8eb('0x40')][_0xa8eb('0x46')](_0x5e6549)[_0xa8eb('0x21')](function(_0x34a12c){if(_0x34a12c){_0x4a3b83=_0x34a12c;return _0x34a12c[_0xa8eb('0x87')]();}return null;})[_0xa8eb('0x21')](function(_0x5405e4){if(_0x5405e4){if(!_0x5405e4['length']){throw new db[(_0xa8eb('0x69'))][(_0xa8eb('0x6a'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x14d88a=_0x5405e4;return db['AnalyticMetric'][_0xa8eb('0x6d')]({'raw':!![]});}return null;})[_0xa8eb('0x21')](function(_0x221497){if(_0x221497){_0x2e4ab1=_[_0xa8eb('0x88')](_0x221497,'id');var _0x1c557e;var _0x5f42a3=squel[_0xa8eb('0x89')]();_0x5f42a3[_0xa8eb('0x6e')](_0x4a3b83[_0xa8eb('0x6f')]);for(var _0x1f8cf3=0x0;_0x1f8cf3<_0x14d88a[_0xa8eb('0x63')];_0x1f8cf3+=0x1){_0x1c557e=_0x14d88a[_0x1f8cf3]['MetricId']?_0x2e4ab1[_0x14d88a[_0x1f8cf3][_0xa8eb('0x70')]][_0xa8eb('0x8a')]:_0x14d88a[_0x1f8cf3]['field'];_0x1c557e=_0x14d88a[_0x1f8cf3][_0xa8eb('0x71')]?_[_0xa8eb('0x72')](_0x42ad37[_0x14d88a[_0x1f8cf3][_0xa8eb('0x71')]],'%s',_0x1c557e):_0x1c557e;_0x1c557e=_0x14d88a[_0x1f8cf3][_0xa8eb('0x73')]?_[_0xa8eb('0x72')](_0x308285[_0x14d88a[_0x1f8cf3][_0xa8eb('0x73')]],'%s',_0x1c557e):_0x1c557e;if(_0x14d88a[_0x1f8cf3]['groupBy']){_0x5f42a3[_0xa8eb('0x65')](_0x1c557e);}_0x14d88a[_0x1f8cf3][_0xa8eb('0x75')]&&_0x5f42a3['order'](_0x1c557e,_0x14d88a[_0x1f8cf3][_0xa8eb('0x75')]===_0xa8eb('0x76')?![]:!![]);_0x5f42a3[_0xa8eb('0x66')](_0x1c557e,_0x14d88a[_0x1f8cf3][_0xa8eb('0x77')]||_0x1c557e);}if(_0x4a3b83[_0xa8eb('0x78')]){_0x4a3b83[_0xa8eb('0x78')]=JSON[_0xa8eb('0x79')](_0x4a3b83[_0xa8eb('0x78')]);for(var _0x32f8ab=0x0;_0x32f8ab<_0x4a3b83[_0xa8eb('0x78')][_0xa8eb('0x63')];_0x32f8ab+=0x1){if(_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x2d')]&&_[_0xa8eb('0x5e')](_0x40803c,_0x4a3b83['joins'][_0x32f8ab][_0xa8eb('0x2d')])&&_0x4a3b83['joins'][_0x32f8ab][_0xa8eb('0x7a')]&&_0x4a3b83['joins'][_0x32f8ab][_0xa8eb('0x7c')]&&_0x4a3b83['joins'][_0x32f8ab][_0xa8eb('0x7d')]){_0x5f42a3[_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x2d')]](_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x7c')],null,util['format'](_0xa8eb('0x7b'),_0x4a3b83['table'],_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x7a')],_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x7c')],_0x4a3b83[_0xa8eb('0x78')][_0x32f8ab][_0xa8eb('0x7d')]));}}}if(_0x4a3b83[_0xa8eb('0x7e')]){_0x4a3b83[_0xa8eb('0x7e')]=JSON['parse'](_0x4a3b83['conditions']);_0x5f42a3[_0xa8eb('0x3c')](_0x226919(_0x4a3b83[_0xa8eb('0x7e')][_0xa8eb('0x65')]));}_0x22f157=_0x5f42a3['clone']();_0x5f42a3['limit'](_0x10ae71);_0x5f42a3[_0xa8eb('0x1a')](0x0);logger[_0xa8eb('0xa2')](_0xa8eb('0xa3'),_0x5f42a3[_0xa8eb('0x80')]());return dbH[_0xa8eb('0x81')]['query'](_0x5f42a3['toString'](),{'type':dbH[_0xa8eb('0x81')][_0xa8eb('0x82')]['SELECT']});}})[_0xa8eb('0x21')](function(){return{'sql':_0x22f157[_0xa8eb('0x80')]()};})[_0xa8eb('0x21')](respondWithResult(_0xbdb0c3,null))[_0xa8eb('0x44')](handleError(_0xbdb0c3,null));};
\ No newline at end of file
index 92a61bf..77d1e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14c8=['./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x59b521,_0xa3b157){var _0x33e544=function(_0x5a3702){while(--_0x5a3702){_0x59b521['push'](_0x59b521['shift']());}};_0x33e544(++_0xa3b157);}(_0x14c8,0x184));var _0x814c=function(_0x37811b,_0x32bce1){_0x37811b=_0x37811b-0x0;var _0x588d47=_0x14c8[_0x37811b];return _0x588d47;};'use strict';var _=require(_0x814c('0x0'));var util=require(_0x814c('0x1'));var logger=require(_0x814c('0x2'))(_0x814c('0x3'));var moment=require('moment');var BPromise=require(_0x814c('0x4'));var rp=require(_0x814c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x814c('0x6'));var config=require(_0x814c('0x7'));var attributes=require(_0x814c('0x8'));module[_0x814c('0x9')]=function(_0x24de3d,_0x404130){return _0x24de3d[_0x814c('0xa')](_0x814c('0xb'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x249a=['request-promise','rimraf','../../config/environment','define','AnalyticCustomReport','analytics_custom_reports','util','../../config/logger','api','moment','bluebird'];(function(_0x33d87b,_0x3d7963){var _0x4d832e=function(_0x22f227){while(--_0x22f227){_0x33d87b['push'](_0x33d87b['shift']());}};_0x4d832e(++_0x3d7963);}(_0x249a,0x69));var _0xa249=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x249a[_0x45f951];return _0x24756c;};'use strict';var _=require('lodash');var util=require(_0xa249('0x0'));var logger=require(_0xa249('0x1'))(_0xa249('0x2'));var moment=require(_0xa249('0x3'));var BPromise=require(_0xa249('0x4'));var rp=require(_0xa249('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa249('0x6'));var config=require(_0xa249('0x7'));var attributes=require('./analyticCustomReport.attributes');module['exports']=function(_0x256e0a,_0x2dd127){return _0x256e0a[_0xa249('0x8')](_0xa249('0x9'),attributes,{'tableName':_0xa249('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2dc62f..8ea4517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f0=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xf7767a,_0x5d2d91){var _0x25109d=function(_0x5b1430){while(--_0x5b1430){_0xf7767a['push'](_0xf7767a['shift']());}};_0x25109d(++_0x5d2d91);}(_0xa3f0,0x177));var _0x0a3f=function(_0x323708,_0x4bebf2){_0x323708=_0x323708-0x0;var _0x3da3d7=_0xa3f0[_0x323708];return _0x3da3d7;};'use strict';var _=require('lodash');var util=require(_0x0a3f('0x0'));var moment=require(_0x0a3f('0x1'));var BPromise=require(_0x0a3f('0x2'));var rs=require(_0x0a3f('0x3'));var fs=require('fs');var Redis=require(_0x0a3f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a3f('0x5'));var logger=require(_0x0a3f('0x6'))(_0x0a3f('0x7'));var config=require(_0x0a3f('0x8'));var jayson=require(_0x0a3f('0x9'));var client=jayson[_0x0a3f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27e03d,_0x46e59f,_0x3b5908){return new BPromise(function(_0x423c07,_0x2e10d0){return client[_0x0a3f('0xb')](_0x27e03d,_0x3b5908)[_0x0a3f('0xc')](function(_0x11f609){logger['info'](_0x0a3f('0xd'),_0x46e59f,_0x0a3f('0xe'));logger[_0x0a3f('0xf')](_0x0a3f('0x10'),_0x46e59f,_0x0a3f('0xe'),JSON[_0x0a3f('0x11')](_0x11f609));if(_0x11f609[_0x0a3f('0x12')]){if(_0x11f609['error'][_0x0a3f('0x13')]===0x1f4){logger[_0x0a3f('0x12')](_0x0a3f('0xd'),_0x46e59f,_0x11f609[_0x0a3f('0x12')][_0x0a3f('0x14')]);return _0x2e10d0(_0x11f609[_0x0a3f('0x12')][_0x0a3f('0x14')]);}logger[_0x0a3f('0x12')](_0x0a3f('0xd'),_0x46e59f,_0x11f609['error'][_0x0a3f('0x14')]);return _0x423c07(_0x11f609[_0x0a3f('0x12')][_0x0a3f('0x14')]);}else{logger['info'](_0x0a3f('0xd'),_0x46e59f,_0x0a3f('0xe'));_0x423c07(_0x11f609[_0x0a3f('0x15')][_0x0a3f('0x14')]);}})[_0x0a3f('0x16')](function(_0x170487){logger[_0x0a3f('0x12')](_0x0a3f('0xd'),_0x46e59f,_0x170487);_0x2e10d0(_0x170487);});});}
\ No newline at end of file
+var _0xb20c=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x15685a,_0x237967){var _0xbd3ef6=function(_0x478be3){while(--_0x478be3){_0x15685a['push'](_0x15685a['shift']());}};_0xbd3ef6(++_0x237967);}(_0xb20c,0x144));var _0xcb20=function(_0xb5c010,_0x38deb4){_0xb5c010=_0xb5c010-0x0;var _0x28aec2=_0xb20c[_0xb5c010];return _0x28aec2;};'use strict';var _=require(_0xcb20('0x0'));var util=require(_0xcb20('0x1'));var moment=require('moment');var BPromise=require(_0xcb20('0x2'));var rs=require(_0xcb20('0x3'));var fs=require('fs');var Redis=require(_0xcb20('0x4'));var db=require(_0xcb20('0x5'))['db'];var utils=require(_0xcb20('0x6'));var logger=require(_0xcb20('0x7'))(_0xcb20('0x8'));var config=require(_0xcb20('0x9'));var jayson=require(_0xcb20('0xa'));var client=jayson[_0xcb20('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3bde21,_0x250d93,_0x1a40d3){return new BPromise(function(_0x1ca1ed,_0x5351e4){return client['request'](_0x3bde21,_0x1a40d3)[_0xcb20('0xc')](function(_0x48380f){logger[_0xcb20('0xd')](_0xcb20('0xe'),_0x250d93,_0xcb20('0xf'));logger['debug'](_0xcb20('0x10'),_0x250d93,_0xcb20('0xf'),JSON[_0xcb20('0x11')](_0x48380f));if(_0x48380f[_0xcb20('0x12')]){if(_0x48380f[_0xcb20('0x12')][_0xcb20('0x13')]===0x1f4){logger[_0xcb20('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x250d93,_0x48380f['error']['message']);return _0x5351e4(_0x48380f[_0xcb20('0x12')][_0xcb20('0x14')]);}logger[_0xcb20('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x250d93,_0x48380f[_0xcb20('0x12')]['message']);return _0x1ca1ed(_0x48380f['error'][_0xcb20('0x14')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x250d93,_0xcb20('0xf'));_0x1ca1ed(_0x48380f[_0xcb20('0x15')]['message']);}})[_0xcb20('0x16')](function(_0x8f58ef){logger['error'](_0xcb20('0xe'),_0x250d93,_0x8f58ef);_0x5351e4(_0x8f58ef);});});}
\ No newline at end of file
index d37a890..0db47ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d47=['/:id','/:id/preview','/:id/run','/:id/query','query','create','put','delete','destroy','exports','multer','util','path','connect-timeout','get','isAuthenticated','index'];(function(_0x3e9bcb,_0x2b430f){var _0x22f215=function(_0x9b4421){while(--_0x9b4421){_0x3e9bcb['push'](_0x3e9bcb['shift']());}};_0x22f215(++_0x2b430f);}(_0x0d47,0xd6));var _0x70d4=function(_0x270294,_0x5c0cdd){_0x270294=_0x270294-0x0;var _0x198017=_0x0d47[_0x270294];return _0x198017;};'use strict';var multer=require(_0x70d4('0x0'));var util=require(_0x70d4('0x1'));var path=require(_0x70d4('0x2'));var timeout=require(_0x70d4('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./analyticCustomReport.controller');router[_0x70d4('0x4')]('/',auth[_0x70d4('0x5')](),controller[_0x70d4('0x6')]);router[_0x70d4('0x4')](_0x70d4('0x7'),auth[_0x70d4('0x5')](),controller['show']);router[_0x70d4('0x4')](_0x70d4('0x8'),auth[_0x70d4('0x5')](),controller['preview']);router[_0x70d4('0x4')](_0x70d4('0x9'),auth[_0x70d4('0x5')](),controller['run']);router[_0x70d4('0x4')](_0x70d4('0xa'),auth[_0x70d4('0x5')](),controller[_0x70d4('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x70d4('0xc')]);router[_0x70d4('0xd')](_0x70d4('0x7'),auth[_0x70d4('0x5')](),controller['update']);router[_0x70d4('0xe')](_0x70d4('0x7'),auth[_0x70d4('0x5')](),controller[_0x70d4('0xf')]);module[_0x70d4('0x10')]=router;
\ No newline at end of file
+var _0x4791=['/:id/run','/:id/query','post','create','put','update','delete','destroy','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','index','/:id','isAuthenticated','show','get','/:id/preview','preview'];(function(_0x13c339,_0x4b98f7){var _0x2aba0a=function(_0x5aa8a2){while(--_0x5aa8a2){_0x13c339['push'](_0x13c339['shift']());}};_0x2aba0a(++_0x4b98f7);}(_0x4791,0xee));var _0x1479=function(_0x48326a,_0x8cfa0c){_0x48326a=_0x48326a-0x0;var _0x466709=_0x4791[_0x48326a];return _0x466709;};'use strict';var multer=require(_0x1479('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1479('0x1'));var router=express[_0x1479('0x2')]();var fs_extra=require(_0x1479('0x3'));var auth=require(_0x1479('0x4'));var interaction=require(_0x1479('0x5'));var config=require(_0x1479('0x6'));var controller=require(_0x1479('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x1479('0x8')]);router['get'](_0x1479('0x9'),auth[_0x1479('0xa')](),controller[_0x1479('0xb')]);router[_0x1479('0xc')](_0x1479('0xd'),auth[_0x1479('0xa')](),controller[_0x1479('0xe')]);router['get'](_0x1479('0xf'),auth['isAuthenticated'](),controller['run']);router[_0x1479('0xc')](_0x1479('0x10'),auth[_0x1479('0xa')](),controller['query']);router[_0x1479('0x11')]('/',auth[_0x1479('0xa')](),controller[_0x1479('0x12')]);router[_0x1479('0x13')](_0x1479('0x9'),auth[_0x1479('0xa')](),controller[_0x1479('0x14')]);router[_0x1479('0x15')](_0x1479('0x9'),auth['isAuthenticated'](),controller[_0x1479('0x16')]);module['exports']=router;
\ No newline at end of file
index 45c8cdd..21013a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae24=['sequelize','STRING'];(function(_0x12b0d0,_0x5491e8){var _0x651ce1=function(_0x2f3153){while(--_0x2f3153){_0x12b0d0['push'](_0x12b0d0['shift']());}};_0x651ce1(++_0x5491e8);}(_0xae24,0x182));var _0x4ae2=function(_0x3024a0,_0x12ef93){_0x3024a0=_0x3024a0-0x0;var _0x36eca6=_0xae24[_0x3024a0];return _0x36eca6;};'use strict';var Sequelize=require(_0x4ae2('0x0'));module['exports']={'name':{'type':Sequelize[_0x4ae2('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4ae2('0x1')]},'table':{'type':Sequelize[_0x4ae2('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x1cb9=['TEXT','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x456f60,_0x289ccd){_0x456f60=_0x456f60-0x0;var _0xa510c0=_0x1cb9[_0x456f60];return _0xa510c0;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'name':{'type':Sequelize[_0x91cb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x91cb('0x1')]},'parent':{'type':Sequelize[_0x91cb('0x1')]},'table':{'type':Sequelize[_0x91cb('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x91cb('0x2')]}};
\ No newline at end of file
index d09c5fa..667b930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','fork','../../files/reports','COUNT(*)','SELECT','run','runReport','MAX(%s)','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','UserProfileResource','destroy','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','autoAssociation','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','field','condition','value','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','group','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','IS\x20EMPTY','operator','getFields','findAll','select','replace','output','web','%s-%s.%s','randomstring','generate','csv'];(function(_0x4136af,_0x35277b){var _0x29677d=function(_0x46014e){while(--_0x46014e){_0x4136af['push'](_0x4136af['shift']());}};_0x29677d(++_0x35277b);}(_0x0295,0x1f0));var _0x5029=function(_0x56608c,_0x29eb74){_0x56608c=_0x56608c-0x0;var _0x3c7fb0=_0x0295[_0x56608c];return _0x3c7fb0;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];var dbH=require(_0x5029('0x14'))['dbH'];function respondWithStatusCode(_0x4fa22d,_0x49f836){_0x49f836=_0x49f836||0xcc;return function(_0x4aebb6){if(_0x4aebb6){return _0x4fa22d[_0x5029('0x15')](_0x49f836);}return _0x4fa22d[_0x5029('0x16')](_0x49f836)[_0x5029('0x17')]();};}function respondWithResult(_0x434630,_0x2c0b33){_0x2c0b33=_0x2c0b33||0xc8;return function(_0x11c24b){if(_0x11c24b){return _0x434630[_0x5029('0x16')](_0x2c0b33)[_0x5029('0x18')](_0x11c24b);}};}function respondWithFilteredResult(_0x10bf55,_0x326923){return function(_0x457c73){if(_0x457c73){var _0x353cba=typeof _0x326923[_0x5029('0x19')]===_0x5029('0x1a')&&typeof _0x326923[_0x5029('0x1b')]==='undefined';var _0x1ed567=_0x457c73[_0x5029('0x1c')];var _0x35de81=_0x353cba?0x0:_0x326923[_0x5029('0x19')];var _0x8cea01=_0x353cba?_0x457c73[_0x5029('0x1c')]:_0x326923[_0x5029('0x19')]+_0x326923['limit'];var _0x226a5c;if(_0x8cea01>=_0x1ed567){_0x8cea01=_0x1ed567;_0x226a5c=0xc8;}else{_0x226a5c=0xce;}_0x10bf55['status'](_0x226a5c);return _0x10bf55[_0x5029('0x1d')](_0x5029('0x1e'),_0x35de81+'-'+_0x8cea01+'/'+_0x1ed567)[_0x5029('0x18')](_0x457c73);}return null;};}function patchUpdates(_0x3cf0fb){return function(_0x4b5854){try{jsonpatch['apply'](_0x4b5854,_0x3cf0fb,!![]);}catch(_0x4c9184){return BPromise['reject'](_0x4c9184);}return _0x4b5854[_0x5029('0x1f')]();};}function saveUpdates(_0x853a34,_0x1eb228){return function(_0x2bbbcb){if(_0x2bbbcb){return _0x2bbbcb[_0x5029('0x20')](_0x853a34)[_0x5029('0x21')](function(_0x125c26){return _0x125c26;});}return null;};}function removeEntity(_0x356dac,_0x3e857d){return function(_0x4ceaae){if(_0x4ceaae){return _0x4ceaae['destroy']()['then'](function(){var _0x588d90=_0x4ceaae[_0x5029('0x22')]({'plain':!![]});var _0x51093c='DefaultReports';return db[_0x5029('0x23')][_0x5029('0x24')]({'where':{'type':_0x51093c,'resourceId':_0x588d90['id']}})[_0x5029('0x21')](function(){return _0x4ceaae;});})['then'](function(){_0x356dac[_0x5029('0x16')](0xcc)[_0x5029('0x17')]();});}};}function handleEntityNotFound(_0x5e45c4,_0x2b6d99){return function(_0x31f0a0){if(!_0x31f0a0){_0x5e45c4[_0x5029('0x15')](0x194);}return _0x31f0a0;};}function handleError(_0x4a24b9,_0x32da06){_0x32da06=_0x32da06||0x1f4;return function(_0x251f99){logger[_0x5029('0x25')](_0x251f99['stack']);if(_0x251f99[_0x5029('0x26')]){delete _0x251f99[_0x5029('0x26')];}_0x4a24b9['status'](_0x32da06)[_0x5029('0x27')](_0x251f99);};}exports[_0x5029('0x28')]=function(_0x4434ff,_0x1c3dd9){var _0x196830={},_0x2a1ed6={},_0x44255a={'count':0x0,'rows':[]};var _0x465153=_[_0x5029('0x29')](db[_0x5029('0x2a')][_0x5029('0x2b')],function(_0x4519c8){return{'name':_0x4519c8['fieldName'],'type':_0x4519c8[_0x5029('0x2c')]['key']};});_0x2a1ed6[_0x5029('0x2d')]=_['map'](_0x465153,'name');_0x2a1ed6[_0x5029('0x2e')]=_[_0x5029('0x2f')](_0x4434ff[_0x5029('0x2e')]);_0x2a1ed6['filters']=_[_0x5029('0x30')](_0x2a1ed6[_0x5029('0x2d')],_0x2a1ed6[_0x5029('0x2e')]);_0x196830[_0x5029('0x31')]=_[_0x5029('0x30')](_0x2a1ed6[_0x5029('0x2d')],qs[_0x5029('0x32')](_0x4434ff[_0x5029('0x2e')][_0x5029('0x32')]));_0x196830['attributes']=_0x196830[_0x5029('0x31')][_0x5029('0x33')]?_0x196830[_0x5029('0x31')]:_0x2a1ed6[_0x5029('0x2d')];if(!_0x4434ff['query'][_0x5029('0x34')](_0x5029('0x35'))){_0x196830[_0x5029('0x1b')]=qs['limit'](_0x4434ff['query'][_0x5029('0x1b')]);_0x196830[_0x5029('0x19')]=qs['offset'](_0x4434ff['query'][_0x5029('0x19')]);}_0x196830[_0x5029('0x36')]=qs[_0x5029('0x37')](_0x4434ff[_0x5029('0x2e')][_0x5029('0x37')]);_0x196830[_0x5029('0x38')]=qs[_0x5029('0x39')](_[_0x5029('0x3a')](_0x4434ff[_0x5029('0x2e')],_0x2a1ed6[_0x5029('0x39')]),_0x465153);if(_0x4434ff[_0x5029('0x2e')][_0x5029('0x3b')]){_0x196830[_0x5029('0x38')]=_[_0x5029('0x3c')](_0x196830['where'],{'$or':_['map'](_0x465153,function(_0x73797c){if(_0x73797c[_0x5029('0x2c')]!==_0x5029('0x3d')){var _0x48c9eb={};_0x48c9eb[_0x73797c[_0x5029('0x26')]]={'$like':'%'+_0x4434ff[_0x5029('0x2e')]['filter']+'%'};return _0x48c9eb;}})});}_0x196830=_[_0x5029('0x3c')]({},_0x196830,_0x4434ff['options']);var _0x506f0d={'where':_0x196830['where']};return db[_0x5029('0x2a')][_0x5029('0x1c')](_0x506f0d)[_0x5029('0x21')](function(_0x78768){_0x44255a[_0x5029('0x1c')]=_0x78768;if(_0x4434ff[_0x5029('0x2e')][_0x5029('0x3e')]){_0x196830[_0x5029('0x3f')]=[{'all':!![]}];}return db[_0x5029('0x2a')]['findAll'](_0x196830);})[_0x5029('0x21')](function(_0x236455){_0x44255a[_0x5029('0x40')]=_0x236455;return _0x44255a;})[_0x5029('0x21')](respondWithFilteredResult(_0x1c3dd9,_0x196830))[_0x5029('0x41')](handleError(_0x1c3dd9,null));};exports[_0x5029('0x42')]=function(_0x5658a7,_0x259db8){var _0xa1580a={'raw':!![],'where':{'id':_0x5658a7[_0x5029('0x43')]['id']}},_0x9434ed={};_0x9434ed[_0x5029('0x2d')]=_['keys'](db[_0x5029('0x2a')][_0x5029('0x2b')]);_0x9434ed[_0x5029('0x2e')]=_[_0x5029('0x2f')](_0x5658a7[_0x5029('0x2e')]);_0x9434ed[_0x5029('0x39')]=_[_0x5029('0x30')](_0x9434ed[_0x5029('0x2d')],_0x9434ed[_0x5029('0x2e')]);_0xa1580a['attributes']=_[_0x5029('0x30')](_0x9434ed[_0x5029('0x2d')],qs[_0x5029('0x32')](_0x5658a7[_0x5029('0x2e')]['fields']));_0xa1580a['attributes']=_0xa1580a[_0x5029('0x31')][_0x5029('0x33')]?_0xa1580a[_0x5029('0x31')]:_0x9434ed[_0x5029('0x2d')];if(_0x5658a7[_0x5029('0x2e')][_0x5029('0x3e')]){_0xa1580a[_0x5029('0x3f')]=[{'all':!![]}];}_0xa1580a=_[_0x5029('0x3c')]({},_0xa1580a,_0x5658a7[_0x5029('0x44')]);return db[_0x5029('0x2a')][_0x5029('0x45')](_0xa1580a)[_0x5029('0x21')](handleEntityNotFound(_0x259db8,null))[_0x5029('0x21')](respondWithResult(_0x259db8,null))[_0x5029('0x41')](handleError(_0x259db8,null));};exports[_0x5029('0x46')]=function(_0x175cc0,_0x10fc07){return db[_0x5029('0x2a')][_0x5029('0x46')](_0x175cc0[_0x5029('0x47')],{})[_0x5029('0x21')](function(_0x489457){var _0x1069c4=_0x175cc0['user'][_0x5029('0x22')]({'plain':!![]});if(!_0x1069c4)throw new Error(_0x5029('0x48'));if(_0x1069c4['role']==='user'){var _0x319bff=_0x489457['get']({'plain':!![]});var _0x4aaa43=_0x5029('0x49');return db[_0x5029('0x4a')][_0x5029('0x45')]({'where':{'name':_0x4aaa43,'userProfileId':_0x1069c4['userProfileId']},'raw':!![]})['then'](function(_0x1510bb){if(_0x1510bb&&_0x1510bb[_0x5029('0x4b')]===0x0){return db['UserProfileResource'][_0x5029('0x46')]({'name':_0x319bff['name'],'resourceId':_0x319bff['id'],'type':_0x5029('0x4c'),'sectionId':_0x1510bb['id']},{})['then'](function(){return _0x489457;});}else{return _0x489457;}})[_0x5029('0x41')](function(_0x27e1c0){logger[_0x5029('0x25')](_0x5029('0x4d'),_0x27e1c0);throw _0x27e1c0;});}return _0x489457;})[_0x5029('0x21')](respondWithResult(_0x10fc07,0xc9))[_0x5029('0x41')](handleError(_0x10fc07,null));};exports[_0x5029('0x20')]=function(_0xa25013,_0x586936){if(_0xa25013[_0x5029('0x47')]['id']){delete _0xa25013['body']['id'];}return db[_0x5029('0x2a')][_0x5029('0x45')]({'where':{'id':_0xa25013['params']['id']}})[_0x5029('0x21')](handleEntityNotFound(_0x586936,null))['then'](saveUpdates(_0xa25013['body'],null))['then'](respondWithResult(_0x586936,null))[_0x5029('0x41')](handleError(_0x586936,null));};exports['destroy']=function(_0x49d1db,_0x353ae4){return db[_0x5029('0x2a')]['find']({'where':{'id':_0x49d1db[_0x5029('0x43')]['id']}})['then'](handleEntityNotFound(_0x353ae4,null))['then'](removeEntity(_0x353ae4,null))[_0x5029('0x41')](handleError(_0x353ae4,null));};exports[_0x5029('0x4e')]=function(_0x81e39c,_0x448273){var _0x164179=0xa;var _0x4e8d9f=[_0x5029('0x4f'),_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x4dca54={'SUM':_0x5029('0x53'),'COUNT':_0x5029('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':_0x5029('0x57'),'GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x4208ab={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':_0x5029('0x5c'),'UNIX_TIMESTAMP':_0x5029('0x5d')};var _0x59a718=function(_0x560324){return!_[_0x5029('0x5e')]([_0x5029('0x5f'),_0x5029('0x60'),'IS\x20EMPTY',_0x5029('0x61')],_0x560324);};var _0x2d439a=function(_0x105638){if(!_0x105638||!_0x105638[_0x5029('0x62')][_0x5029('0x33')]){return'';}for(var _0x5264c6='(',_0x2ec5d0=0x0;_0x2ec5d0<_0x105638[_0x5029('0x62')][_0x5029('0x33')];_0x2ec5d0+=0x1){_0x2ec5d0>0x0&&(_0x5264c6+='\x20'+_0x105638['operator']+'\x20');_0x5264c6+=_0x105638[_0x5029('0x62')][_0x2ec5d0]['group']?_0x2d439a(_0x105638[_0x5029('0x62')][_0x2ec5d0]['group']):_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x63')]+'\x20'+_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x64')]+(_0x59a718(_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x64')])?'\x20'+_0x105638['rules'][_0x2ec5d0][_0x5029('0x65')]:'');}return _0x5264c6+')';};var _0x19220d={'where':{'id':_0x81e39c['params']['id']}},_0x1ff8df,_0x151562,_0x389700,_0x506f74,_0x13ca47;_0x19220d=_[_0x5029('0x3c')]({},_0x19220d,_0x81e39c['options']);return db[_0x5029('0x2a')]['find'](_0x19220d)[_0x5029('0x21')](function(_0x54daf9){if(_0x54daf9){_0x1ff8df=_0x54daf9;return _0x54daf9['getFields']();}return null;})[_0x5029('0x21')](function(_0x575f09){if(_0x575f09){if(!_0x575f09[_0x5029('0x33')]){throw new db[(_0x5029('0x66'))][(_0x5029('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x151562=_0x575f09;return db[_0x5029('0x68')]['findAll']({'raw':!![]});}return null;})[_0x5029('0x21')](function(_0x255dfb){if(_0x255dfb){_0x389700=_[_0x5029('0x69')](_0x255dfb,'id');var _0x1cca02;var _0x1deed7=squel['select']();_0x1deed7[_0x5029('0x6a')](_0x1ff8df[_0x5029('0x6b')]);for(var _0x5890ac=0x0;_0x5890ac<_0x151562[_0x5029('0x33')];_0x5890ac+=0x1){_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6c')]?_0x389700[_0x151562[_0x5890ac][_0x5029('0x6c')]][_0x5029('0x6d')]:_0x151562[_0x5890ac][_0x5029('0x63')];_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6e')]?_['replace'](_0x4dca54[_0x151562[_0x5890ac]['function']],'%s',_0x1cca02):_0x1cca02;_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6f')]?_['replace'](_0x4208ab[_0x151562[_0x5890ac][_0x5029('0x6f')]],'%s',_0x1cca02):_0x1cca02;if(_0x151562[_0x5890ac][_0x5029('0x70')]){_0x1deed7['group'](_0x1cca02);}_0x151562[_0x5890ac][_0x5029('0x71')]&&_0x1deed7['order'](_0x1cca02,_0x151562[_0x5890ac]['orderBy']===_0x5029('0x72')?![]:!![]);_0x1deed7[_0x5029('0x63')](_0x1cca02,_0x151562[_0x5890ac][_0x5029('0x73')]||_0x1cca02);}if(_0x1ff8df[_0x5029('0x74')]){_0x1ff8df['joins']=JSON[_0x5029('0x75')](_0x1ff8df[_0x5029('0x74')]);for(var _0x4a2ce8=0x0;_0x4a2ce8<_0x1ff8df[_0x5029('0x74')][_0x5029('0x33')];_0x4a2ce8+=0x1){if(_0x1ff8df['joins'][_0x4a2ce8]['type']&&_['includes'](_0x4e8d9f,_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x2c')])&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x76')]&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x77')]&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x78')]){_0x1deed7[_0x1ff8df[_0x5029('0x74')][_0x4a2ce8]['type']](_0x1ff8df['joins'][_0x4a2ce8][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x1ff8df[_0x5029('0x6b')],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x76')],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8]['foreignTable'],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x78')]));}}}if(_0x1ff8df[_0x5029('0x7a')]){_0x1ff8df['conditions']=JSON[_0x5029('0x75')](_0x1ff8df[_0x5029('0x7a')]);_0x1deed7[_0x5029('0x38')](_0x2d439a(_0x1ff8df['conditions'][_0x5029('0x7b')]));}_0x13ca47=_0x1deed7[_0x5029('0x7c')]();_0x1deed7[_0x5029('0x1b')](_0x164179);_0x1deed7['offset'](0x0);logger[_0x5029('0x7d')](_0x5029('0x7e'),_0x1deed7['toString']());return dbH[_0x5029('0x7f')][_0x5029('0x2e')](_0x1deed7[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')][_0x5029('0x81')]['SELECT']});}})[_0x5029('0x21')](respondWithResult(_0x448273,null))[_0x5029('0x41')](handleError(_0x448273,null));};function runReport(_0x426d70,_0xe6ac28,_0x153cdc){var _0x5e7f50=_0xe6ac28[_0x5029('0x26')];var _0x202c51=0xa;var _0x344203=['join',_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x3e47bd={'SUM':_0x5029('0x53'),'COUNT':_0x5029('0x54'),'COUNT DISTINCT':_0x5029('0x82'),'MAX':'MAX(%s)','MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':_0x5029('0x57'),'GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':_0x5029('0x83')};var _0x4c40d1={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5029('0x5d')};var _0x41e2d8=function(_0x51098a){return!_['includes'](['IS\x20NULL',_0x5029('0x60'),_0x5029('0x84'),_0x5029('0x61')],_0x51098a);};var _0x4007c8=function(_0x3dc05a){if(!_0x3dc05a||!_0x3dc05a['rules'][_0x5029('0x33')]){return'';}for(var _0x2e4782='(',_0x2c0540=0x0;_0x2c0540<_0x3dc05a['rules']['length'];_0x2c0540+=0x1){_0x2c0540>0x0&&(_0x2e4782+='\x20'+_0x3dc05a[_0x5029('0x85')]+'\x20');_0x2e4782+=_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x7b')]?_0x4007c8(_0x3dc05a[_0x5029('0x62')][_0x2c0540]['group']):_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x63')]+'\x20'+_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x64')]+(_0x41e2d8(_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x64')])?'\x20'+_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x65')]:'');}return _0x2e4782+')';};var _0x5aecc2={'where':{'id':_0x426d70['id']}},_0x159450,_0x556c7a,_0x48bbe2,_0x3e3150,_0x533ee2;_0x5aecc2=_[_0x5029('0x3c')]({},_0x5aecc2,_0x153cdc);return db[_0x5029('0x2a')][_0x5029('0x45')](_0x5aecc2)[_0x5029('0x21')](function(_0x1b6f4c){if(_0x1b6f4c){_0x159450=_0x1b6f4c;return _0x1b6f4c[_0x5029('0x86')]();}return null;})[_0x5029('0x21')](function(_0x1d6092){if(_0x1d6092){if(!_0x1d6092['length']){throw new db['Sequelize'][(_0x5029('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x556c7a=_0x1d6092;return db['AnalyticMetric'][_0x5029('0x87')]({'raw':!![]});}return null;})['then'](function(_0x4b25ed){if(_0x4b25ed){_0x48bbe2=_[_0x5029('0x69')](_0x4b25ed,'id');var _0xb8da0b;var _0x13e07e=squel[_0x5029('0x88')]();_0x13e07e[_0x5029('0x6a')](_0x159450['table']);for(var _0x38c02a=0x0;_0x38c02a<_0x556c7a[_0x5029('0x33')];_0x38c02a+=0x1){_0xb8da0b=_0x556c7a[_0x38c02a][_0x5029('0x6c')]?_0x48bbe2[_0x556c7a[_0x38c02a]['MetricId']][_0x5029('0x6d')]:_0x556c7a[_0x38c02a][_0x5029('0x63')];_0xb8da0b=_0x556c7a[_0x38c02a][_0x5029('0x6e')]?_[_0x5029('0x89')](_0x3e47bd[_0x556c7a[_0x38c02a][_0x5029('0x6e')]],'%s',_0xb8da0b):_0xb8da0b;_0xb8da0b=_0x556c7a[_0x38c02a]['format']?_['replace'](_0x4c40d1[_0x556c7a[_0x38c02a][_0x5029('0x6f')]],'%s',_0xb8da0b):_0xb8da0b;if(_0x556c7a[_0x38c02a][_0x5029('0x70')]){_0x13e07e['group'](_0xb8da0b);}_0x556c7a[_0x38c02a][_0x5029('0x71')]&&_0x13e07e[_0x5029('0x36')](_0xb8da0b,_0x556c7a[_0x38c02a][_0x5029('0x71')]===_0x5029('0x72')?![]:!![]);_0x13e07e[_0x5029('0x63')](_0xb8da0b,_0x556c7a[_0x38c02a][_0x5029('0x73')]||_0xb8da0b);}if(_0x159450[_0x5029('0x74')]){_0x159450[_0x5029('0x74')]=JSON['parse'](_0x159450['joins']);for(var _0x4243c3=0x0;_0x4243c3<_0x159450['joins'][_0x5029('0x33')];_0x4243c3+=0x1){if(_0x159450['joins'][_0x4243c3][_0x5029('0x2c')]&&_[_0x5029('0x5e')](_0x344203,_0x159450[_0x5029('0x74')][_0x4243c3]['type'])&&_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x76')]&&_0x159450[_0x5029('0x74')][_0x4243c3]['foreignTable']&&_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x78')]){_0x13e07e[_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x2c')]](_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x159450[_0x5029('0x6b')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x76')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x77')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x78')]));}}}if(_0x159450[_0x5029('0x7a')]){_0x159450[_0x5029('0x7a')]=JSON[_0x5029('0x75')](_0x159450['conditions']);_0x13e07e[_0x5029('0x38')](_0x4007c8(_0x159450[_0x5029('0x7a')][_0x5029('0x7b')]));}_0x533ee2=_0x13e07e[_0x5029('0x7c')]();_0x13e07e[_0x5029('0x1b')](_0x202c51);_0x13e07e['offset'](0x0);return;}})[_0x5029('0x21')](function(){if(_0xe6ac28[_0x5029('0x8a')]===_0x5029('0x8b')){return null;}var _0xf7729c=_[_0x5029('0x3c')](_0xe6ac28,{'name':_0xe6ac28['fullPath']||_0xe6ac28[_0x5029('0x26')]||_0x159450[_0x5029('0x26')],'basename':_0x5e7f50,'savename':util[_0x5029('0x6f')](_0x5029('0x8c'),_0xe6ac28[_0x5029('0x26')]||_0x159450['name'],require(_0x5029('0x8d'))[_0x5029('0x8e')](0x4),_0xe6ac28[_0x5029('0x8a')]||_0x5029('0x8f')),'reportId':_0x159450['id'],'reportType':_0x5029('0x90')});return db[_0x5029('0x91')][_0x5029('0x46')](_0xf7729c,{'raw':!![]});})[_0x5029('0x21')](function(_0x4a7535){if(_0x159450['table']===_0x5029('0x92')){_0x533ee2[_0x5029('0x38')](_0x159450[_0x5029('0x6b')]+_0x5029('0x93'),_0xe6ac28[_0x5029('0x94')],_0xe6ac28['endDate']);}else{_0x533ee2[_0x5029('0x38')](_0x159450['table']+_0x5029('0x95'),_0xe6ac28[_0x5029('0x94')],_0xe6ac28[_0x5029('0x96')]);}if(_0x4a7535){logger[_0x5029('0x97')](_0x5029('0x98'),_0x533ee2[_0x5029('0x80')]());require('child_process')[_0x5029('0x99')](path[_0x5029('0x4f')](__dirname,'../../components/export/',_0x4a7535[_0x5029('0x8a')]),[_0x4a7535['id'],_0x533ee2[_0x5029('0x80')](),path['join'](__dirname,_0x5029('0x9a'),_0x4a7535['savename']),_0x5e7f50]);return _0x4a7535;}else{var _0x54c0f3=squel['select']();_0x54c0f3['from']('('+_0x533ee2[_0x5029('0x80')]()+')','countTable');_0x54c0f3[_0x5029('0x63')](_0x5029('0x9b'),'count');_0x533ee2[_0x5029('0x1b')](_0xe6ac28[_0x5029('0x1b')]||_0x202c51);_0x533ee2['offset'](_0xe6ac28[_0x5029('0x19')]||0x0);return dbH[_0x5029('0x7f')]['query'](_0x54c0f3[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')]['QueryTypes'][_0x5029('0x9c')]})[_0x5029('0x21')](function(_0x17c755){if(!_0x17c755[_0x5029('0x33')]){_0x3e3150=0x0;}else{_0x3e3150=_0x17c755[0x0][_0x5029('0x1c')]||0x0;}return dbH[_0x5029('0x7f')]['query'](_0x533ee2[_0x5029('0x80')](),{'type':dbH['sequelize'][_0x5029('0x81')][_0x5029('0x9c')]});})[_0x5029('0x21')](function(_0x3ebe00){return{'rows':_0x3ebe00||[],'count':_0x3e3150};});}});}exports[_0x5029('0x9d')]=function(_0x2138cc,_0x331af8){return runReport(_0x2138cc[_0x5029('0x43')],_0x2138cc[_0x5029('0x2e')],_0x2138cc[_0x5029('0x44')])[_0x5029('0x21')](respondWithResult(_0x331af8,null))[_0x5029('0x41')](handleError(_0x331af8,null));};exports[_0x5029('0x9e')]=runReport;exports[_0x5029('0x2e')]=function(_0x9de076,_0x2ac88e){var _0x55ee4f=0xa;var _0x1fa9eb=[_0x5029('0x4f'),_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x405d47={'SUM':'SUM(%s)','COUNT':_0x5029('0x54'),'COUNT DISTINCT':_0x5029('0x82'),'MAX':_0x5029('0x9f'),'MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':_0x5029('0x83')};var _0x29c3a2={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':_0x5029('0x5c'),'UNIX_TIMESTAMP':_0x5029('0x5d')};var _0xb39e9d=function(_0x124c5e){return!_['includes']([_0x5029('0x5f'),'IS\x20NOT\x20NULL',_0x5029('0x84'),_0x5029('0x61')],_0x124c5e);};var _0x120acc=function(_0x21bb22){if(!_0x21bb22||!_0x21bb22['rules'][_0x5029('0x33')]){return'';}for(var _0x339112='(',_0x5d7c1a=0x0;_0x5d7c1a<_0x21bb22[_0x5029('0x62')][_0x5029('0x33')];_0x5d7c1a+=0x1){_0x5d7c1a>0x0&&(_0x339112+='\x20'+_0x21bb22['operator']+'\x20');_0x339112+=_0x21bb22[_0x5029('0x62')][_0x5d7c1a][_0x5029('0x7b')]?_0x120acc(_0x21bb22['rules'][_0x5d7c1a]['group']):_0x21bb22[_0x5029('0x62')][_0x5d7c1a]['field']+'\x20'+_0x21bb22['rules'][_0x5d7c1a][_0x5029('0x64')]+(_0xb39e9d(_0x21bb22['rules'][_0x5d7c1a][_0x5029('0x64')])?'\x20'+_0x21bb22[_0x5029('0x62')][_0x5d7c1a]['value']:'');}return _0x339112+')';};var _0x327299={'where':{'id':_0x9de076['params']['id']}},_0x3463cc,_0x590cc2,_0x3ac39a,_0x37c47b,_0x62e4af;_0x327299=_[_0x5029('0x3c')]({},_0x327299,_0x9de076['options']);return db[_0x5029('0x2a')][_0x5029('0x45')](_0x327299)[_0x5029('0x21')](function(_0x5e7ec8){if(_0x5e7ec8){_0x3463cc=_0x5e7ec8;return _0x5e7ec8[_0x5029('0x86')]();}return null;})[_0x5029('0x21')](function(_0x5aa480){if(_0x5aa480){if(!_0x5aa480[_0x5029('0x33')]){throw new db[(_0x5029('0x66'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x590cc2=_0x5aa480;return db[_0x5029('0x68')][_0x5029('0x87')]({'raw':!![]});}return null;})['then'](function(_0x5842a5){if(_0x5842a5){_0x3ac39a=_['keyBy'](_0x5842a5,'id');var _0x313bdb;var _0x1d38e0=squel[_0x5029('0x88')]();_0x1d38e0['from'](_0x3463cc[_0x5029('0x6b')]);for(var _0x581237=0x0;_0x581237<_0x590cc2[_0x5029('0x33')];_0x581237+=0x1){_0x313bdb=_0x590cc2[_0x581237]['MetricId']?_0x3ac39a[_0x590cc2[_0x581237]['MetricId']]['metric']:_0x590cc2[_0x581237]['field'];_0x313bdb=_0x590cc2[_0x581237][_0x5029('0x6e')]?_[_0x5029('0x89')](_0x405d47[_0x590cc2[_0x581237][_0x5029('0x6e')]],'%s',_0x313bdb):_0x313bdb;_0x313bdb=_0x590cc2[_0x581237][_0x5029('0x6f')]?_[_0x5029('0x89')](_0x29c3a2[_0x590cc2[_0x581237]['format']],'%s',_0x313bdb):_0x313bdb;if(_0x590cc2[_0x581237][_0x5029('0x70')]){_0x1d38e0[_0x5029('0x7b')](_0x313bdb);}_0x590cc2[_0x581237][_0x5029('0x71')]&&_0x1d38e0[_0x5029('0x36')](_0x313bdb,_0x590cc2[_0x581237][_0x5029('0x71')]===_0x5029('0x72')?![]:!![]);_0x1d38e0['field'](_0x313bdb,_0x590cc2[_0x581237][_0x5029('0x73')]||_0x313bdb);}if(_0x3463cc[_0x5029('0x74')]){_0x3463cc[_0x5029('0x74')]=JSON['parse'](_0x3463cc['joins']);for(var _0xd05bc9=0x0;_0xd05bc9<_0x3463cc[_0x5029('0x74')][_0x5029('0x33')];_0xd05bc9+=0x1){if(_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x2c')]&&_[_0x5029('0x5e')](_0x1fa9eb,_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x2c')])&&_0x3463cc['joins'][_0xd05bc9][_0x5029('0x76')]&&_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x77')]&&_0x3463cc['joins'][_0xd05bc9][_0x5029('0x78')]){_0x1d38e0[_0x3463cc['joins'][_0xd05bc9][_0x5029('0x2c')]](_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x3463cc[_0x5029('0x6b')],_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x76')],_0x3463cc['joins'][_0xd05bc9]['foreignTable'],_0x3463cc['joins'][_0xd05bc9][_0x5029('0x78')]));}}}if(_0x3463cc[_0x5029('0x7a')]){_0x3463cc[_0x5029('0x7a')]=JSON[_0x5029('0x75')](_0x3463cc[_0x5029('0x7a')]);_0x1d38e0['where'](_0x120acc(_0x3463cc[_0x5029('0x7a')][_0x5029('0x7b')]));}_0x62e4af=_0x1d38e0[_0x5029('0x7c')]();_0x1d38e0[_0x5029('0x1b')](_0x55ee4f);_0x1d38e0[_0x5029('0x19')](0x0);logger['debug'](_0x5029('0x7e'),_0x1d38e0[_0x5029('0x80')]());return dbH[_0x5029('0x7f')][_0x5029('0x2e')](_0x1d38e0[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')][_0x5029('0x81')][_0x5029('0x9c')]});}})[_0x5029('0x21')](function(){return{'sql':_0x62e4af[_0x5029('0x80')]()};})[_0x5029('0x21')](respondWithResult(_0x2ac88e,null))[_0x5029('0x41')](handleError(_0x2ac88e,null));};
\ No newline at end of file
+var _0x2675=['AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','find','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','select','table','MetricId','metric','field','function','replace','format','groupBy','order','orderBy','DESC','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20EMPTY','Sequelize','keyBy','from','alias','output','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','COUNT(*)','SELECT','run','runReport','MIN(%s)','debug','eml-format','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','DefaultReports','name','map'];(function(_0x4a30b7,_0x3dabc8){var _0xe48f3c=function(_0x391568){while(--_0x391568){_0x4a30b7['push'](_0x4a30b7['shift']());}};_0xe48f3c(++_0x3dabc8);}(_0x2675,0x75));var _0x5267=function(_0x2e2b5a,_0x16325a){_0x2e2b5a=_0x2e2b5a-0x0;var _0x4d8141=_0x2675[_0x2e2b5a];return _0x4d8141;};'use strict';var emlformat=require(_0x5267('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5267('0x1'));var moment=require(_0x5267('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x5267('0x3'));var util=require(_0x5267('0x4'));var path=require('path');var sox=require(_0x5267('0x5'));var csv=require(_0x5267('0x6'));var ejs=require(_0x5267('0x7'));var fs=require('fs');var fs_extra=require(_0x5267('0x8'));var _=require(_0x5267('0x9'));var squel=require(_0x5267('0xa'));var crypto=require('crypto');var jsforce=require(_0x5267('0xb'));var deskjs=require(_0x5267('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5267('0xd'));var Papa=require('papaparse');var Redis=require(_0x5267('0xe'));var authService=require(_0x5267('0xf'));var qs=require(_0x5267('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5267('0x11'));var logger=require('../../config/logger')(_0x5267('0x12'));var utils=require('../../config/utils');var config=require(_0x5267('0x13'));var licenseUtil=require(_0x5267('0x14'));var db=require(_0x5267('0x15'))['db'];var dbH=require(_0x5267('0x15'))[_0x5267('0x16')];function respondWithStatusCode(_0x1171b9,_0x20785c){_0x20785c=_0x20785c||0xcc;return function(_0x36dc17){if(_0x36dc17){return _0x1171b9[_0x5267('0x17')](_0x20785c);}return _0x1171b9[_0x5267('0x18')](_0x20785c)[_0x5267('0x19')]();};}function respondWithResult(_0x29349a,_0x3e2bab){_0x3e2bab=_0x3e2bab||0xc8;return function(_0x548040){if(_0x548040){return _0x29349a['status'](_0x3e2bab)[_0x5267('0x1a')](_0x548040);}};}function respondWithFilteredResult(_0x40d897,_0x38a147){return function(_0x3f5344){if(_0x3f5344){var _0x46b2c2=typeof _0x38a147[_0x5267('0x1b')]===_0x5267('0x1c')&&typeof _0x38a147[_0x5267('0x1d')]===_0x5267('0x1c');var _0xb1c97a=_0x3f5344[_0x5267('0x1e')];var _0x1ab03=_0x46b2c2?0x0:_0x38a147['offset'];var _0x18f32e=_0x46b2c2?_0x3f5344[_0x5267('0x1e')]:_0x38a147['offset']+_0x38a147[_0x5267('0x1d')];var _0x56733e;if(_0x18f32e>=_0xb1c97a){_0x18f32e=_0xb1c97a;_0x56733e=0xc8;}else{_0x56733e=0xce;}_0x40d897[_0x5267('0x18')](_0x56733e);return _0x40d897[_0x5267('0x1f')](_0x5267('0x20'),_0x1ab03+'-'+_0x18f32e+'/'+_0xb1c97a)[_0x5267('0x1a')](_0x3f5344);}return null;};}function patchUpdates(_0x5ca9c6){return function(_0x4dd637){try{jsonpatch[_0x5267('0x21')](_0x4dd637,_0x5ca9c6,!![]);}catch(_0x5aebdd){return BPromise[_0x5267('0x22')](_0x5aebdd);}return _0x4dd637[_0x5267('0x23')]();};}function saveUpdates(_0x3b53ac,_0x56dd95){return function(_0x499f19){if(_0x499f19){return _0x499f19['update'](_0x3b53ac)['then'](function(_0x5ea6a6){return _0x5ea6a6;});}return null;};}function removeEntity(_0x26c7f8,_0x399e64){return function(_0x2d761d){if(_0x2d761d){return _0x2d761d[_0x5267('0x24')]()[_0x5267('0x25')](function(){var _0x40d1be=_0x2d761d[_0x5267('0x26')]({'plain':!![]});var _0x220e03=_0x5267('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x220e03,'resourceId':_0x40d1be['id']}})[_0x5267('0x25')](function(){return _0x2d761d;});})[_0x5267('0x25')](function(){_0x26c7f8['status'](0xcc)[_0x5267('0x19')]();});}};}function handleEntityNotFound(_0x52504e,_0x4d7c2a){return function(_0x43e7e7){if(!_0x43e7e7){_0x52504e[_0x5267('0x17')](0x194);}return _0x43e7e7;};}function handleError(_0x1f33b7,_0x2d2ace){_0x2d2ace=_0x2d2ace||0x1f4;return function(_0x33c431){logger['error'](_0x33c431['stack']);if(_0x33c431[_0x5267('0x28')]){delete _0x33c431[_0x5267('0x28')];}_0x1f33b7[_0x5267('0x18')](_0x2d2ace)['send'](_0x33c431);};}exports['index']=function(_0xbe7922,_0x3ef2a8){var _0x1fa725={},_0x5bec7e={},_0x59b091={'count':0x0,'rows':[]};var _0x2249a1=_[_0x5267('0x29')](db[_0x5267('0x2a')][_0x5267('0x2b')],function(_0x5bbb83){return{'name':_0x5bbb83[_0x5267('0x2c')],'type':_0x5bbb83[_0x5267('0x2d')][_0x5267('0x2e')]};});_0x5bec7e[_0x5267('0x2f')]=_[_0x5267('0x29')](_0x2249a1,_0x5267('0x28'));_0x5bec7e[_0x5267('0x30')]=_[_0x5267('0x31')](_0xbe7922['query']);_0x5bec7e['filters']=_[_0x5267('0x32')](_0x5bec7e['model'],_0x5bec7e[_0x5267('0x30')]);_0x1fa725[_0x5267('0x33')]=_[_0x5267('0x32')](_0x5bec7e[_0x5267('0x2f')],qs['fields'](_0xbe7922[_0x5267('0x30')][_0x5267('0x34')]));_0x1fa725[_0x5267('0x33')]=_0x1fa725[_0x5267('0x33')][_0x5267('0x35')]?_0x1fa725[_0x5267('0x33')]:_0x5bec7e[_0x5267('0x2f')];if(!_0xbe7922[_0x5267('0x30')]['hasOwnProperty'](_0x5267('0x36'))){_0x1fa725['limit']=qs[_0x5267('0x1d')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1d')]);_0x1fa725[_0x5267('0x1b')]=qs[_0x5267('0x1b')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1b')]);}_0x1fa725['order']=qs[_0x5267('0x37')](_0xbe7922[_0x5267('0x30')][_0x5267('0x37')]);_0x1fa725[_0x5267('0x38')]=qs[_0x5267('0x39')](_[_0x5267('0x3a')](_0xbe7922[_0x5267('0x30')],_0x5bec7e['filters']),_0x2249a1);if(_0xbe7922[_0x5267('0x30')]['filter']){_0x1fa725[_0x5267('0x38')]=_['merge'](_0x1fa725['where'],{'$or':_['map'](_0x2249a1,function(_0x46bfcc){if(_0x46bfcc['type']!==_0x5267('0x3b')){var _0x146476={};_0x146476[_0x46bfcc[_0x5267('0x28')]]={'$like':'%'+_0xbe7922[_0x5267('0x30')]['filter']+'%'};return _0x146476;}})});}_0x1fa725=_[_0x5267('0x3c')]({},_0x1fa725,_0xbe7922[_0x5267('0x3d')]);var _0x588edf={'where':_0x1fa725['where']};return db[_0x5267('0x2a')]['count'](_0x588edf)[_0x5267('0x25')](function(_0x1cf94a){_0x59b091[_0x5267('0x1e')]=_0x1cf94a;if(_0xbe7922[_0x5267('0x30')][_0x5267('0x3e')]){_0x1fa725[_0x5267('0x3f')]=[{'all':!![]}];}return db[_0x5267('0x2a')]['findAll'](_0x1fa725);})['then'](function(_0x28ea4a){_0x59b091['rows']=_0x28ea4a;return _0x59b091;})[_0x5267('0x25')](respondWithFilteredResult(_0x3ef2a8,_0x1fa725))[_0x5267('0x40')](handleError(_0x3ef2a8,null));};exports['show']=function(_0x1fa925,_0xc764cd){var _0x299a13={'raw':!![],'where':{'id':_0x1fa925[_0x5267('0x41')]['id']}},_0x161fed={};_0x161fed[_0x5267('0x2f')]=_[_0x5267('0x31')](db[_0x5267('0x2a')][_0x5267('0x2b')]);_0x161fed['query']=_[_0x5267('0x31')](_0x1fa925[_0x5267('0x30')]);_0x161fed[_0x5267('0x39')]=_[_0x5267('0x32')](_0x161fed[_0x5267('0x2f')],_0x161fed['query']);_0x299a13[_0x5267('0x33')]=_['intersection'](_0x161fed[_0x5267('0x2f')],qs['fields'](_0x1fa925['query'][_0x5267('0x34')]));_0x299a13['attributes']=_0x299a13[_0x5267('0x33')][_0x5267('0x35')]?_0x299a13[_0x5267('0x33')]:_0x161fed[_0x5267('0x2f')];if(_0x1fa925['query'][_0x5267('0x3e')]){_0x299a13['include']=[{'all':!![]}];}_0x299a13=_['merge']({},_0x299a13,_0x1fa925[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x299a13)['then'](handleEntityNotFound(_0xc764cd,null))[_0x5267('0x25')](respondWithResult(_0xc764cd,null))[_0x5267('0x40')](handleError(_0xc764cd,null));};exports[_0x5267('0x42')]=function(_0x1b5a7e,_0x1c2803){return db[_0x5267('0x2a')][_0x5267('0x42')](_0x1b5a7e[_0x5267('0x43')],{})[_0x5267('0x25')](function(_0x2cfe09){var _0x21b040=_0x1b5a7e[_0x5267('0x44')][_0x5267('0x26')]({'plain':!![]});if(!_0x21b040)throw new Error(_0x5267('0x45'));if(_0x21b040['role']===_0x5267('0x44')){var _0x466d46=_0x2cfe09[_0x5267('0x26')]({'plain':!![]});var _0x4f0148=_0x5267('0x46');return db[_0x5267('0x47')][_0x5267('0x48')]({'where':{'name':_0x4f0148,'userProfileId':_0x21b040[_0x5267('0x49')]},'raw':!![]})[_0x5267('0x25')](function(_0x1457cf){if(_0x1457cf&&_0x1457cf['autoAssociation']===0x0){return db[_0x5267('0x4a')]['create']({'name':_0x466d46[_0x5267('0x28')],'resourceId':_0x466d46['id'],'type':_0x5267('0x27'),'sectionId':_0x1457cf['id']},{})[_0x5267('0x25')](function(){return _0x2cfe09;});}else{return _0x2cfe09;}})[_0x5267('0x40')](function(_0x91b932){logger[_0x5267('0x4b')](_0x5267('0x4c'),_0x91b932);throw _0x91b932;});}return _0x2cfe09;})['then'](respondWithResult(_0x1c2803,0xc9))['catch'](handleError(_0x1c2803,null));};exports[_0x5267('0x4d')]=function(_0x15b5c9,_0x566b6f){if(_0x15b5c9[_0x5267('0x43')]['id']){delete _0x15b5c9['body']['id'];}return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0x15b5c9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x566b6f,null))[_0x5267('0x25')](saveUpdates(_0x15b5c9[_0x5267('0x43')],null))[_0x5267('0x25')](respondWithResult(_0x566b6f,null))[_0x5267('0x40')](handleError(_0x566b6f,null));};exports[_0x5267('0x24')]=function(_0xf0b5a9,_0x43d254){return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0xf0b5a9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x43d254,null))[_0x5267('0x25')](removeEntity(_0x43d254,null))[_0x5267('0x40')](handleError(_0x43d254,null));};exports[_0x5267('0x4e')]=function(_0x552211,_0x195575){var _0x5ad1ce=0xa;var _0x1522d6=[_0x5267('0x4f'),_0x5267('0x50'),'right_join',_0x5267('0x51')];var _0x161dab={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x51220c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x4e3771=function(_0x489780){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),'IS\x20EMPTY',_0x5267('0x60')],_0x489780);};var _0xc88193=function(_0x293e61){if(!_0x293e61||!_0x293e61[_0x5267('0x61')]['length']){return'';}for(var _0x5a87b5='(',_0x540ab8=0x0;_0x540ab8<_0x293e61[_0x5267('0x61')][_0x5267('0x35')];_0x540ab8+=0x1){_0x540ab8>0x0&&(_0x5a87b5+='\x20'+_0x293e61[_0x5267('0x62')]+'\x20');_0x5a87b5+=_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]?_0xc88193(_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]):_0x293e61[_0x5267('0x61')][_0x540ab8]['field']+'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x64')]+(_0x4e3771(_0x293e61['rules'][_0x540ab8][_0x5267('0x64')])?'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x65')]:'');}return _0x5a87b5+')';};var _0x1b6dd7={'where':{'id':_0x552211[_0x5267('0x41')]['id']}},_0x19adf5,_0xde1ecd,_0x4915f4,_0x2ca259,_0x726410;_0x1b6dd7=_[_0x5267('0x3c')]({},_0x1b6dd7,_0x552211[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x1b6dd7)[_0x5267('0x25')](function(_0x87465){if(_0x87465){_0x19adf5=_0x87465;return _0x87465[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x1a4016){if(_0x1a4016){if(!_0x1a4016[_0x5267('0x35')]){throw new db['Sequelize'][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0xde1ecd=_0x1a4016;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x516e6e){if(_0x516e6e){_0x4915f4=_['keyBy'](_0x516e6e,'id');var _0x910f97;var _0x5cca85=squel[_0x5267('0x6b')]();_0x5cca85['from'](_0x19adf5[_0x5267('0x6c')]);for(var _0x1150ba=0x0;_0x1150ba<_0xde1ecd[_0x5267('0x35')];_0x1150ba+=0x1){_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x6d')]?_0x4915f4[_0xde1ecd[_0x1150ba][_0x5267('0x6d')]][_0x5267('0x6e')]:_0xde1ecd[_0x1150ba][_0x5267('0x6f')];_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x70')]?_['replace'](_0x161dab[_0xde1ecd[_0x1150ba]['function']],'%s',_0x910f97):_0x910f97;_0x910f97=_0xde1ecd[_0x1150ba]['format']?_[_0x5267('0x71')](_0x51220c[_0xde1ecd[_0x1150ba][_0x5267('0x72')]],'%s',_0x910f97):_0x910f97;if(_0xde1ecd[_0x1150ba][_0x5267('0x73')]){_0x5cca85[_0x5267('0x63')](_0x910f97);}_0xde1ecd[_0x1150ba]['orderBy']&&_0x5cca85[_0x5267('0x74')](_0x910f97,_0xde1ecd[_0x1150ba][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x5cca85[_0x5267('0x6f')](_0x910f97,_0xde1ecd[_0x1150ba]['alias']||_0x910f97);}if(_0x19adf5[_0x5267('0x77')]){_0x19adf5[_0x5267('0x77')]=JSON['parse'](_0x19adf5[_0x5267('0x77')]);for(var _0x268805=0x0;_0x268805<_0x19adf5['joins']['length'];_0x268805+=0x1){if(_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x2d')]&&_['includes'](_0x1522d6,_0x19adf5['joins'][_0x268805][_0x5267('0x2d')])&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')]&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')]&&_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]){_0x5cca85[_0x19adf5[_0x5267('0x77')][_0x268805]['type']](_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x19adf5[_0x5267('0x6c')],_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')],_0x19adf5[_0x5267('0x77')][_0x268805]['foreignTable'],_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]));}}}if(_0x19adf5[_0x5267('0x7c')]){_0x19adf5[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x19adf5['conditions']);_0x5cca85[_0x5267('0x38')](_0xc88193(_0x19adf5['conditions'][_0x5267('0x63')]));}_0x726410=_0x5cca85[_0x5267('0x7e')]();_0x5cca85[_0x5267('0x1d')](_0x5ad1ce);_0x5cca85[_0x5267('0x1b')](0x0);logger['debug']('Limited\x20Query:',_0x5cca85[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x5cca85[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')]['SELECT']});}})[_0x5267('0x25')](respondWithResult(_0x195575,null))['catch'](handleError(_0x195575,null));};function runReport(_0x418a03,_0x5b8026,_0x2c2b95){var _0x20888d=_0x5b8026[_0x5267('0x28')];var _0x87aa90=0xa;var _0x164cc1=[_0x5267('0x4f'),_0x5267('0x50'),_0x5267('0x82'),_0x5267('0x51')];var _0x28e4b6={'SUM':_0x5267('0x52'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0xd18795={'SEC_TO_TIME':_0x5267('0x83'),'DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x2543a4=function(_0x2feea8){return!_[_0x5267('0x5d')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5267('0x84'),_0x5267('0x60')],_0x2feea8);};var _0x199ff6=function(_0xbf36fb){if(!_0xbf36fb||!_0xbf36fb['rules'][_0x5267('0x35')]){return'';}for(var _0x3cc775='(',_0x2630f2=0x0;_0x2630f2<_0xbf36fb[_0x5267('0x61')][_0x5267('0x35')];_0x2630f2+=0x1){_0x2630f2>0x0&&(_0x3cc775+='\x20'+_0xbf36fb[_0x5267('0x62')]+'\x20');_0x3cc775+=_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]?_0x199ff6(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]):_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x6f')]+'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2]['condition']+(_0x2543a4(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x64')])?'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x65')]:'');}return _0x3cc775+')';};var _0x447b5f={'where':{'id':_0x418a03['id']}},_0x25ce90,_0x257c69,_0x160c9c,_0x42694a,_0x11a2f4;_0x447b5f=_[_0x5267('0x3c')]({},_0x447b5f,_0x2c2b95);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x447b5f)[_0x5267('0x25')](function(_0x35c3b7){if(_0x35c3b7){_0x25ce90=_0x35c3b7;return _0x35c3b7[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x35a4a3){if(_0x35a4a3){if(!_0x35a4a3[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0x257c69=_0x35a4a3;return db[_0x5267('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x318393){if(_0x318393){_0x160c9c=_[_0x5267('0x86')](_0x318393,'id');var _0x405eb4;var _0x38f5b7=squel['select']();_0x38f5b7[_0x5267('0x87')](_0x25ce90[_0x5267('0x6c')]);for(var _0x4c68cd=0x0;_0x4c68cd<_0x257c69['length'];_0x4c68cd+=0x1){_0x405eb4=_0x257c69[_0x4c68cd]['MetricId']?_0x160c9c[_0x257c69[_0x4c68cd][_0x5267('0x6d')]]['metric']:_0x257c69[_0x4c68cd][_0x5267('0x6f')];_0x405eb4=_0x257c69[_0x4c68cd]['function']?_['replace'](_0x28e4b6[_0x257c69[_0x4c68cd][_0x5267('0x70')]],'%s',_0x405eb4):_0x405eb4;_0x405eb4=_0x257c69[_0x4c68cd][_0x5267('0x72')]?_[_0x5267('0x71')](_0xd18795[_0x257c69[_0x4c68cd][_0x5267('0x72')]],'%s',_0x405eb4):_0x405eb4;if(_0x257c69[_0x4c68cd][_0x5267('0x73')]){_0x38f5b7['group'](_0x405eb4);}_0x257c69[_0x4c68cd]['orderBy']&&_0x38f5b7[_0x5267('0x74')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x38f5b7[_0x5267('0x6f')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x88')]||_0x405eb4);}if(_0x25ce90['joins']){_0x25ce90[_0x5267('0x77')]=JSON['parse'](_0x25ce90['joins']);for(var _0x3dfd8d=0x0;_0x3dfd8d<_0x25ce90['joins']['length'];_0x3dfd8d+=0x1){if(_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x2d')]&&_['includes'](_0x164cc1,_0x25ce90['joins'][_0x3dfd8d]['type'])&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['parentKey']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x7a')]){_0x38f5b7[_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x2d')]](_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x25ce90[_0x5267('0x6c')],_0x25ce90['joins'][_0x3dfd8d]['parentKey'],_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable'],_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x7a')]));}}}if(_0x25ce90['conditions']){_0x25ce90[_0x5267('0x7c')]=JSON['parse'](_0x25ce90[_0x5267('0x7c')]);_0x38f5b7['where'](_0x199ff6(_0x25ce90[_0x5267('0x7c')][_0x5267('0x63')]));}_0x11a2f4=_0x38f5b7[_0x5267('0x7e')]();_0x38f5b7[_0x5267('0x1d')](_0x87aa90);_0x38f5b7[_0x5267('0x1b')](0x0);return;}})[_0x5267('0x25')](function(){if(_0x5b8026[_0x5267('0x89')]==='web'){return null;}var _0x4df99f=_[_0x5267('0x3c')](_0x5b8026,{'name':_0x5b8026['fullPath']||_0x5b8026['name']||_0x25ce90['name'],'basename':_0x20888d,'savename':util['format']('%s-%s.%s',_0x5b8026['name']||_0x25ce90[_0x5267('0x28')],require(_0x5267('0x8a'))[_0x5267('0x8b')](0x4),_0x5b8026[_0x5267('0x89')]||_0x5267('0x8c')),'reportId':_0x25ce90['id'],'reportType':_0x5267('0x8d')});return db[_0x5267('0x8e')][_0x5267('0x42')](_0x4df99f,{'raw':!![]});})['then'](function(_0x5df23d){if(_0x25ce90['table']===_0x5267('0x8f')){_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+_0x5267('0x90'),_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}else{_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}if(_0x5df23d){logger[_0x5267('0x93')](_0x5267('0x94'),_0x11a2f4[_0x5267('0x7f')]());require(_0x5267('0x95'))[_0x5267('0x96')](path['join'](__dirname,'../../components/export/',_0x5df23d['output']),[_0x5df23d['id'],_0x11a2f4[_0x5267('0x7f')](),path[_0x5267('0x4f')](__dirname,_0x5267('0x97'),_0x5df23d[_0x5267('0x98')]),_0x20888d]);return _0x5df23d;}else{var _0x190ef4=squel[_0x5267('0x6b')]();_0x190ef4['from']('('+_0x11a2f4[_0x5267('0x7f')]()+')','countTable');_0x190ef4[_0x5267('0x6f')](_0x5267('0x99'),_0x5267('0x1e'));_0x11a2f4[_0x5267('0x1d')](_0x5b8026[_0x5267('0x1d')]||_0x87aa90);_0x11a2f4['offset'](_0x5b8026[_0x5267('0x1b')]||0x0);return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x190ef4['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5267('0x9a')]})[_0x5267('0x25')](function(_0x1be763){if(!_0x1be763[_0x5267('0x35')]){_0x42694a=0x0;}else{_0x42694a=_0x1be763[0x0]['count']||0x0;}return dbH['sequelize'][_0x5267('0x30')](_0x11a2f4[_0x5267('0x7f')](),{'type':dbH['sequelize'][_0x5267('0x81')][_0x5267('0x9a')]});})['then'](function(_0x5005b3){return{'rows':_0x5005b3||[],'count':_0x42694a};});}});}exports[_0x5267('0x9b')]=function(_0x11a6f4,_0x5a16ee){return runReport(_0x11a6f4[_0x5267('0x41')],_0x11a6f4[_0x5267('0x30')],_0x11a6f4[_0x5267('0x3d')])[_0x5267('0x25')](respondWithResult(_0x5a16ee,null))[_0x5267('0x40')](handleError(_0x5a16ee,null));};exports[_0x5267('0x9c')]=runReport;exports[_0x5267('0x30')]=function(_0x1e9651,_0x66da7a){var _0x54b582=0xa;var _0x4e4724=[_0x5267('0x4f'),'left_join',_0x5267('0x82'),_0x5267('0x51')];var _0x2722f9={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':_0x5267('0x9d'),'AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x5909b3={'SEC_TO_TIME':_0x5267('0x83'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x1d7987=function(_0x59efe1){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),_0x5267('0x84'),_0x5267('0x60')],_0x59efe1);};var _0x46c79e=function(_0xcfba51){if(!_0xcfba51||!_0xcfba51[_0x5267('0x61')][_0x5267('0x35')]){return'';}for(var _0x3c5516='(',_0x1e8367=0x0;_0x1e8367<_0xcfba51[_0x5267('0x61')]['length'];_0x1e8367+=0x1){_0x1e8367>0x0&&(_0x3c5516+='\x20'+_0xcfba51[_0x5267('0x62')]+'\x20');_0x3c5516+=_0xcfba51[_0x5267('0x61')][_0x1e8367]['group']?_0x46c79e(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x63')]):_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x6f')]+'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x64')]+(_0x1d7987(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x64')])?'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x65')]:'');}return _0x3c5516+')';};var _0x19935d={'where':{'id':_0x1e9651[_0x5267('0x41')]['id']}},_0x3102e0,_0x2d215e,_0xc0af94,_0x178080,_0x3485ab;_0x19935d=_[_0x5267('0x3c')]({},_0x19935d,_0x1e9651['options']);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x19935d)['then'](function(_0x17d2d4){if(_0x17d2d4){_0x3102e0=_0x17d2d4;return _0x17d2d4['getFields']();}return null;})[_0x5267('0x25')](function(_0x4c5a26){if(_0x4c5a26){if(!_0x4c5a26[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d215e=_0x4c5a26;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x1a0883){if(_0x1a0883){_0xc0af94=_[_0x5267('0x86')](_0x1a0883,'id');var _0x501da6;var _0x3dcf73=squel['select']();_0x3dcf73['from'](_0x3102e0['table']);for(var _0x1ded05=0x0;_0x1ded05<_0x2d215e[_0x5267('0x35')];_0x1ded05+=0x1){_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x6d')]?_0xc0af94[_0x2d215e[_0x1ded05][_0x5267('0x6d')]][_0x5267('0x6e')]:_0x2d215e[_0x1ded05][_0x5267('0x6f')];_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x70')]?_['replace'](_0x2722f9[_0x2d215e[_0x1ded05]['function']],'%s',_0x501da6):_0x501da6;_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x72')]?_[_0x5267('0x71')](_0x5909b3[_0x2d215e[_0x1ded05][_0x5267('0x72')]],'%s',_0x501da6):_0x501da6;if(_0x2d215e[_0x1ded05][_0x5267('0x73')]){_0x3dcf73[_0x5267('0x63')](_0x501da6);}_0x2d215e[_0x1ded05]['orderBy']&&_0x3dcf73[_0x5267('0x74')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x3dcf73[_0x5267('0x6f')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x88')]||_0x501da6);}if(_0x3102e0['joins']){_0x3102e0[_0x5267('0x77')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x77')]);for(var _0x4bfafd=0x0;_0x4bfafd<_0x3102e0[_0x5267('0x77')]['length'];_0x4bfafd+=0x1){if(_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]&&_['includes'](_0x4e4724,_0x3102e0[_0x5267('0x77')][_0x4bfafd]['type'])&&_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')]&&_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')]&&_0x3102e0[_0x5267('0x77')][_0x4bfafd]['foreignKey']){_0x3dcf73[_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]](_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x79')],null,util[_0x5267('0x72')]('%s.%s\x20=\x20%s.%s',_0x3102e0['table'],_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x7a')]));}}}if(_0x3102e0[_0x5267('0x7c')]){_0x3102e0[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x7c')]);_0x3dcf73[_0x5267('0x38')](_0x46c79e(_0x3102e0[_0x5267('0x7c')][_0x5267('0x63')]));}_0x3485ab=_0x3dcf73[_0x5267('0x7e')]();_0x3dcf73[_0x5267('0x1d')](_0x54b582);_0x3dcf73[_0x5267('0x1b')](0x0);logger[_0x5267('0x9e')]('Limited\x20Query:',_0x3dcf73[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x3dcf73[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')][_0x5267('0x9a')]});}})[_0x5267('0x25')](function(){return{'sql':_0x3485ab[_0x5267('0x7f')]()};})[_0x5267('0x25')](respondWithResult(_0x66da7a,null))[_0x5267('0x40')](handleError(_0x66da7a,null));};
\ No newline at end of file
index b9ae9b7..ee69933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe41=['path','../../config/environment','exports','define','AnalyticDefaultReport','analytics_default_reports','../../config/logger','api','moment','bluebird'];(function(_0xae2e85,_0x235faf){var _0x5379f6=function(_0x4754c6){while(--_0x4754c6){_0xae2e85['push'](_0xae2e85['shift']());}};_0x5379f6(++_0x235faf);}(_0xfe41,0x1aa));var _0x1fe4=function(_0x2a0f1a,_0x4e7206){_0x2a0f1a=_0x2a0f1a-0x0;var _0x2721bc=_0xfe41[_0x2a0f1a];return _0x2721bc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1fe4('0x0'))(_0x1fe4('0x1'));var moment=require(_0x1fe4('0x2'));var BPromise=require(_0x1fe4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1fe4('0x4'));var rimraf=require('rimraf');var config=require(_0x1fe4('0x5'));var attributes=require('./analyticDefaultReport.attributes');module[_0x1fe4('0x6')]=function(_0x58d792,_0x35fde9){return _0x58d792[_0x1fe4('0x7')](_0x1fe4('0x8'),attributes,{'tableName':_0x1fe4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdec2=['analytics_default_reports','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0xdec2,0x1c4));var _0x2dec=function(_0x139a75,_0x5d8bab){_0x139a75=_0x139a75-0x0;var _0x4598a4=_0xdec2[_0x139a75];return _0x4598a4;};'use strict';var _=require(_0x2dec('0x0'));var util=require(_0x2dec('0x1'));var logger=require('../../config/logger')(_0x2dec('0x2'));var moment=require(_0x2dec('0x3'));var BPromise=require(_0x2dec('0x4'));var rp=require(_0x2dec('0x5'));var fs=require('fs');var path=require(_0x2dec('0x6'));var rimraf=require(_0x2dec('0x7'));var config=require(_0x2dec('0x8'));var attributes=require(_0x2dec('0x9'));module['exports']=function(_0x430d04,_0x1feb21){return _0x430d04['define']('AnalyticDefaultReport',attributes,{'tableName':_0x2dec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c15b58..453a57b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ed=['lodash','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x22fdf0,_0x40e1f6){var _0x49387c=function(_0x3fed4d){while(--_0x3fed4d){_0x22fdf0['push'](_0x22fdf0['shift']());}};_0x49387c(++_0x40e1f6);}(_0xa3ed,0xa0));var _0xda3e=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xa3ed[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xda3e('0x0'));var util=require(_0xda3e('0x1'));var moment=require(_0xda3e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xda3e('0x3'));var db=require(_0xda3e('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xda3e('0x5'));var config=require(_0xda3e('0x6'));var jayson=require(_0xda3e('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x315c72,_0x2df3a4,_0x25aeee){return new BPromise(function(_0x50eb7f,_0x3ae171){return client[_0xda3e('0x8')](_0x315c72,_0x25aeee)[_0xda3e('0x9')](function(_0x1582b4){logger[_0xda3e('0xa')](_0xda3e('0xb'),_0x2df3a4,_0xda3e('0xc'));logger['debug'](_0xda3e('0xd'),_0x2df3a4,_0xda3e('0xc'),JSON[_0xda3e('0xe')](_0x1582b4));if(_0x1582b4[_0xda3e('0xf')]){if(_0x1582b4['error'][_0xda3e('0x10')]===0x1f4){logger['error'](_0xda3e('0xb'),_0x2df3a4,_0x1582b4[_0xda3e('0xf')]['message']);return _0x3ae171(_0x1582b4[_0xda3e('0xf')][_0xda3e('0x11')]);}logger[_0xda3e('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2df3a4,_0x1582b4[_0xda3e('0xf')][_0xda3e('0x11')]);return _0x50eb7f(_0x1582b4[_0xda3e('0xf')][_0xda3e('0x11')]);}else{logger['info'](_0xda3e('0xb'),_0x2df3a4,_0xda3e('0xc'));_0x50eb7f(_0x1582b4[_0xda3e('0x12')]['message']);}})[_0xda3e('0x13')](function(_0x29962e){logger['error'](_0xda3e('0xb'),_0x2df3a4,_0x29962e);_0x3ae171(_0x29962e);});});}
\ No newline at end of file
+var _0x8836=['client','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0xc4966b,_0x6cd5e0){var _0x1802bb=function(_0x12f623){while(--_0x12f623){_0xc4966b['push'](_0xc4966b['shift']());}};_0x1802bb(++_0x6cd5e0);}(_0x8836,0x8c));var _0x6883=function(_0x1d3166,_0x2f9180){_0x1d3166=_0x1d3166-0x0;var _0x2126ed=_0x8836[_0x1d3166];return _0x2126ed;};'use strict';var _=require(_0x6883('0x0'));var util=require('util');var moment=require(_0x6883('0x1'));var BPromise=require(_0x6883('0x2'));var rs=require(_0x6883('0x3'));var fs=require('fs');var Redis=require(_0x6883('0x4'));var db=require(_0x6883('0x5'))['db'];var utils=require(_0x6883('0x6'));var logger=require(_0x6883('0x7'))(_0x6883('0x8'));var config=require('../../config/environment');var jayson=require(_0x6883('0x9'));var client=jayson[_0x6883('0xa')][_0x6883('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27e427,_0x4c7e00,_0x121bde){return new BPromise(function(_0x5e1812,_0xeb1850){return client[_0x6883('0xc')](_0x27e427,_0x121bde)[_0x6883('0xd')](function(_0x3ebc56){logger['info'](_0x6883('0xe'),_0x4c7e00,_0x6883('0xf'));logger[_0x6883('0x10')](_0x6883('0x11'),_0x4c7e00,_0x6883('0xf'),JSON[_0x6883('0x12')](_0x3ebc56));if(_0x3ebc56[_0x6883('0x13')]){if(_0x3ebc56[_0x6883('0x13')][_0x6883('0x14')]===0x1f4){logger[_0x6883('0x13')](_0x6883('0xe'),_0x4c7e00,_0x3ebc56[_0x6883('0x13')]['message']);return _0xeb1850(_0x3ebc56['error']['message']);}logger[_0x6883('0x13')](_0x6883('0xe'),_0x4c7e00,_0x3ebc56[_0x6883('0x13')][_0x6883('0x15')]);return _0x5e1812(_0x3ebc56[_0x6883('0x13')][_0x6883('0x15')]);}else{logger[_0x6883('0x16')](_0x6883('0xe'),_0x4c7e00,_0x6883('0xf'));_0x5e1812(_0x3ebc56[_0x6883('0x17')][_0x6883('0x15')]);}})[_0x6883('0x18')](function(_0x2d4fc1){logger[_0x6883('0x13')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x4c7e00,_0x2d4fc1);_0xeb1850(_0x2d4fc1);});});}
\ No newline at end of file
index 915b214..d919726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d6=['multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','get','/:id','show','/:id/preview','run','query','post','create','exports'];(function(_0x322522,_0x4db288){var _0x293bcf=function(_0xf108b8){while(--_0xf108b8){_0x322522['push'](_0x322522['shift']());}};_0x293bcf(++_0x4db288);}(_0x20d6,0x140));var _0x620d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x20d6[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x620d('0x0'));var util=require(_0x620d('0x1'));var path=require('path');var timeout=require(_0x620d('0x2'));var express=require('express');var router=express[_0x620d('0x3')]();var fs_extra=require(_0x620d('0x4'));var auth=require(_0x620d('0x5'));var interaction=require(_0x620d('0x6'));var config=require(_0x620d('0x7'));var controller=require(_0x620d('0x8'));router['get']('/',auth[_0x620d('0x9')](),controller[_0x620d('0xa')]);router[_0x620d('0xb')](_0x620d('0xc'),auth[_0x620d('0x9')](),controller[_0x620d('0xd')]);router[_0x620d('0xb')](_0x620d('0xe'),auth['isAuthenticated'](),controller['preview']);router[_0x620d('0xb')]('/:id/run',auth[_0x620d('0x9')](),controller[_0x620d('0xf')]);router[_0x620d('0xb')]('/:id/query',auth[_0x620d('0x9')](),controller[_0x620d('0x10')]);router[_0x620d('0x11')]('/',auth[_0x620d('0x9')](),controller[_0x620d('0x12')]);router['put'](_0x620d('0xc'),auth[_0x620d('0x9')](),controller['update']);router['delete'](_0x620d('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x620d('0x13')]=router;
\ No newline at end of file
+var _0x150b=['get','/:id','show','preview','/:id/run','/:id/query','post','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','isAuthenticated'];(function(_0x15fc7a,_0xd21741){var _0x3aa9f4=function(_0x313108){while(--_0x313108){_0x15fc7a['push'](_0x15fc7a['shift']());}};_0x3aa9f4(++_0xd21741);}(_0x150b,0x1c3));var _0xb150=function(_0x481bdf,_0x231538){_0x481bdf=_0x481bdf-0x0;var _0x281a12=_0x150b[_0x481bdf];return _0x281a12;};'use strict';var multer=require(_0xb150('0x0'));var util=require(_0xb150('0x1'));var path=require(_0xb150('0x2'));var timeout=require(_0xb150('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb150('0x4'));var auth=require(_0xb150('0x5'));var interaction=require(_0xb150('0x6'));var config=require('../../config/environment');var controller=require(_0xb150('0x7'));router['get']('/',auth[_0xb150('0x8')](),controller['index']);router[_0xb150('0x9')](_0xb150('0xa'),auth[_0xb150('0x8')](),controller[_0xb150('0xb')]);router[_0xb150('0x9')]('/:id/preview',auth[_0xb150('0x8')](),controller[_0xb150('0xc')]);router[_0xb150('0x9')](_0xb150('0xd'),auth['isAuthenticated'](),controller['run']);router[_0xb150('0x9')](_0xb150('0xe'),auth['isAuthenticated'](),controller['query']);router[_0xb150('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb150('0x10')]('/:id',auth[_0xb150('0x8')](),controller['update']);router[_0xb150('0x11')]('/:id',auth[_0xb150('0x8')](),controller[_0xb150('0x12')]);module[_0xb150('0x13')]=router;
\ No newline at end of file
index 71f1a5e..0717a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1a8=['pdf','xlsx','DATE','manual','UNSIGNED','sequelize','exports','STRING','ENUM','csv'];(function(_0x1849db,_0xcb8bac){var _0x139f04=function(_0x49f0bf){while(--_0x49f0bf){_0x1849db['push'](_0x1849db['shift']());}};_0x139f04(++_0xcb8bac);}(_0xd1a8,0x1b3));var _0x8d1a=function(_0x459461,_0x372ee3){_0x459461=_0x459461-0x0;var _0x20295a=_0xd1a8[_0x459461];return _0x20295a;};'use strict';var Sequelize=require(_0x8d1a('0x0'));var moment=require('moment');module[_0x8d1a('0x1')]={'name':{'type':Sequelize[_0x8d1a('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0x8d1a('0x3')](_0x8d1a('0x4'),_0x8d1a('0x5'),_0x8d1a('0x6')),'allowNull':![],'defaultValue':_0x8d1a('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0x8d1a('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x8d1a('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x8d1a('0x3')](_0x8d1a('0x8'),'scheduled'),'allowNull':![],'defaultValue':_0x8d1a('0x8')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x8d1a('0x9')]},'reportType':{'type':Sequelize[_0x8d1a('0x2')]}};
\ No newline at end of file
+var _0xeaf3=['INTEGER','sequelize','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','scheduled'];(function(_0x2f8530,_0x5cbd67){var _0x5e814e=function(_0x490b29){while(--_0x490b29){_0x2f8530['push'](_0x2f8530['shift']());}};_0x5e814e(++_0x5cbd67);}(_0xeaf3,0x12d));var _0x3eaf=function(_0x285d5d,_0x5be89c){_0x285d5d=_0x285d5d-0x0;var _0x48be14=_0xeaf3[_0x285d5d];return _0x48be14;};'use strict';var Sequelize=require(_0x3eaf('0x0'));var moment=require(_0x3eaf('0x1'));module[_0x3eaf('0x2')]={'name':{'type':Sequelize[_0x3eaf('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0x3eaf('0x4')](_0x3eaf('0x5'),_0x3eaf('0x6'),_0x3eaf('0x7')),'allowNull':![],'defaultValue':_0x3eaf('0x5')},'savename':{'type':Sequelize[_0x3eaf('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3eaf('0x8')]},'endDate':{'type':Sequelize[_0x3eaf('0x8')]},'status':{'type':Sequelize[_0x3eaf('0x3')],'defaultValue':_0x3eaf('0x9')},'type':{'type':Sequelize[_0x3eaf('0x4')]('manual',_0x3eaf('0xa')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x3eaf('0xb')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x3eaf('0x3')]}};
\ No newline at end of file
index 2eba6d5..e103dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb033=['includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','existsSync','root','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','format','%s.%s','output','toLowerCase','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','filters','merge','where','type','VIRTUAL','filter','options'];(function(_0x1cddea,_0x3d928c){var _0x1ee38f=function(_0x4a7032){while(--_0x4a7032){_0x1cddea['push'](_0x1cddea['shift']());}};_0x1ee38f(++_0x3d928c);}(_0xb033,0x137));var _0x3b03=function(_0x51c44a,_0x25064b){_0x51c44a=_0x51c44a-0x0;var _0x30bb5f=_0xb033[_0x51c44a];return _0x30bb5f;};'use strict';var emlformat=require(_0x3b03('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3b03('0x1'));var jsonpatch=require(_0x3b03('0x2'));var rp=require('request-promise');var moment=require(_0x3b03('0x3'));var BPromise=require(_0x3b03('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3b03('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3b03('0x6'));var fs=require('fs');var fs_extra=require(_0x3b03('0x7'));var _=require(_0x3b03('0x8'));var squel=require(_0x3b03('0x9'));var crypto=require(_0x3b03('0xa'));var jsforce=require(_0x3b03('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3b03('0xc'));var querystring=require('querystring');var Papa=require(_0x3b03('0xd'));var Redis=require(_0x3b03('0xe'));var authService=require(_0x3b03('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x3b03('0x10'));var hardwareService=require(_0x3b03('0x11'));var logger=require(_0x3b03('0x12'))('api');var utils=require(_0x3b03('0x13'));var config=require(_0x3b03('0x14'));var licenseUtil=require(_0x3b03('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2040fb,_0x1fa275){_0x1fa275=_0x1fa275||0xcc;return function(_0x42dcc4){if(_0x42dcc4){return _0x2040fb[_0x3b03('0x16')](_0x1fa275);}return _0x2040fb[_0x3b03('0x17')](_0x1fa275)[_0x3b03('0x18')]();};}function respondWithResult(_0x379705,_0x37fb1f){_0x37fb1f=_0x37fb1f||0xc8;return function(_0x3f94e7){if(_0x3f94e7){return _0x379705[_0x3b03('0x17')](_0x37fb1f)['json'](_0x3f94e7);}};}function respondWithFilteredResult(_0x1ace05,_0x656369){return function(_0x9d1f47){if(_0x9d1f47){var _0x216590=typeof _0x656369[_0x3b03('0x19')]===_0x3b03('0x1a')&&typeof _0x656369['limit']==='undefined';var _0x42060c=_0x9d1f47[_0x3b03('0x1b')];var _0x34e5cf=_0x216590?0x0:_0x656369[_0x3b03('0x19')];var _0x35ceb9=_0x216590?_0x9d1f47['count']:_0x656369['offset']+_0x656369[_0x3b03('0x1c')];var _0x296991;if(_0x35ceb9>=_0x42060c){_0x35ceb9=_0x42060c;_0x296991=0xc8;}else{_0x296991=0xce;}_0x1ace05['status'](_0x296991);return _0x1ace05[_0x3b03('0x1d')](_0x3b03('0x1e'),_0x34e5cf+'-'+_0x35ceb9+'/'+_0x42060c)[_0x3b03('0x1f')](_0x9d1f47);}return null;};}function patchUpdates(_0x4e5e4c){return function(_0x307e96){try{jsonpatch['apply'](_0x307e96,_0x4e5e4c,!![]);}catch(_0x4a8036){return BPromise[_0x3b03('0x20')](_0x4a8036);}return _0x307e96[_0x3b03('0x21')]();};}function saveUpdates(_0x31b18d,_0x317ff8){return function(_0x344d37){if(_0x344d37){return _0x344d37[_0x3b03('0x22')](_0x31b18d)[_0x3b03('0x23')](function(_0xf7b5ca){return _0xf7b5ca;});}return null;};}function removeEntity(_0x41d743,_0x5856aa){return function(_0x32751f){if(_0x32751f){return _0x32751f['destroy']()['then'](function(){var _0x5af16a=_0x32751f[_0x3b03('0x24')]({'plain':!![]});var _0x33668e=_0x3b03('0x25');return db[_0x3b03('0x26')][_0x3b03('0x27')]({'where':{'type':_0x33668e,'resourceId':_0x5af16a['id']}})[_0x3b03('0x23')](function(){return _0x32751f;});})[_0x3b03('0x23')](function(){_0x41d743[_0x3b03('0x17')](0xcc)[_0x3b03('0x18')]();});}};}function handleEntityNotFound(_0x4dda7a,_0x2ca970){return function(_0x4aa496){if(!_0x4aa496){_0x4dda7a[_0x3b03('0x16')](0x194);}return _0x4aa496;};}function handleError(_0x2556f7,_0x1db7c5){_0x1db7c5=_0x1db7c5||0x1f4;return function(_0x1deee2){logger[_0x3b03('0x28')](_0x1deee2[_0x3b03('0x29')]);if(_0x1deee2['name']){delete _0x1deee2[_0x3b03('0x2a')];}_0x2556f7[_0x3b03('0x17')](_0x1db7c5)[_0x3b03('0x2b')](_0x1deee2);};}exports[_0x3b03('0x2c')]=function(_0x17189c,_0xec0be6){var _0x147897={},_0x3be911={},_0x2869a6={'count':0x0,'rows':[]};var _0x1de693=_[_0x3b03('0x2d')](db[_0x3b03('0x2e')][_0x3b03('0x2f')],function(_0x530850){return{'name':_0x530850['fieldName'],'type':_0x530850['type']['key']};});_0x3be911[_0x3b03('0x30')]=_[_0x3b03('0x2d')](_0x1de693,_0x3b03('0x2a'));_0x3be911[_0x3b03('0x31')]=_[_0x3b03('0x32')](_0x17189c[_0x3b03('0x31')]);_0x3be911['filters']=_[_0x3b03('0x33')](_0x3be911[_0x3b03('0x30')],_0x3be911[_0x3b03('0x31')]);_0x147897['attributes']=_[_0x3b03('0x33')](_0x3be911[_0x3b03('0x30')],qs[_0x3b03('0x34')](_0x17189c[_0x3b03('0x31')][_0x3b03('0x34')]));_0x147897['attributes']=_0x147897[_0x3b03('0x35')][_0x3b03('0x36')]?_0x147897[_0x3b03('0x35')]:_0x3be911[_0x3b03('0x30')];if(!_0x17189c[_0x3b03('0x31')]['hasOwnProperty'](_0x3b03('0x37'))){_0x147897[_0x3b03('0x1c')]=qs[_0x3b03('0x1c')](_0x17189c[_0x3b03('0x31')][_0x3b03('0x1c')]);_0x147897[_0x3b03('0x19')]=qs['offset'](_0x17189c[_0x3b03('0x31')][_0x3b03('0x19')]);}_0x147897[_0x3b03('0x38')]=qs[_0x3b03('0x39')](_0x17189c['query'][_0x3b03('0x39')]);_0x147897['where']=qs[_0x3b03('0x3a')](_['pick'](_0x17189c[_0x3b03('0x31')],_0x3be911['filters']),_0x1de693);if(_0x17189c['query']['filter']){_0x147897['where']=_[_0x3b03('0x3b')](_0x147897[_0x3b03('0x3c')],{'$or':_[_0x3b03('0x2d')](_0x1de693,function(_0x2aea03){if(_0x2aea03[_0x3b03('0x3d')]!==_0x3b03('0x3e')){var _0x39b0da={};_0x39b0da[_0x2aea03[_0x3b03('0x2a')]]={'$like':'%'+_0x17189c[_0x3b03('0x31')][_0x3b03('0x3f')]+'%'};return _0x39b0da;}})});}_0x147897=_[_0x3b03('0x3b')]({},_0x147897,_0x17189c[_0x3b03('0x40')]);var _0x164677={'where':_0x147897[_0x3b03('0x3c')]};return db[_0x3b03('0x2e')]['count'](_0x164677)[_0x3b03('0x23')](function(_0x35ac74){_0x2869a6[_0x3b03('0x1b')]=_0x35ac74;if(_0x17189c['query'][_0x3b03('0x41')]){_0x147897[_0x3b03('0x42')]=[{'all':!![]}];}return db[_0x3b03('0x2e')][_0x3b03('0x43')](_0x147897);})[_0x3b03('0x23')](function(_0x8eb07c){_0x2869a6[_0x3b03('0x44')]=_0x8eb07c;return _0x2869a6;})[_0x3b03('0x23')](respondWithFilteredResult(_0xec0be6,_0x147897))[_0x3b03('0x45')](handleError(_0xec0be6,null));};exports[_0x3b03('0x46')]=function(_0x5421b1,_0x18a132){var _0x65d439={'raw':!![],'where':{'id':_0x5421b1[_0x3b03('0x47')]['id']}},_0x491db6={};_0x491db6['model']=_[_0x3b03('0x32')](db[_0x3b03('0x2e')][_0x3b03('0x2f')]);_0x491db6['query']=_[_0x3b03('0x32')](_0x5421b1[_0x3b03('0x31')]);_0x491db6[_0x3b03('0x3a')]=_[_0x3b03('0x33')](_0x491db6[_0x3b03('0x30')],_0x491db6[_0x3b03('0x31')]);_0x65d439['attributes']=_[_0x3b03('0x33')](_0x491db6[_0x3b03('0x30')],qs[_0x3b03('0x34')](_0x5421b1[_0x3b03('0x31')][_0x3b03('0x34')]));_0x65d439[_0x3b03('0x35')]=_0x65d439[_0x3b03('0x35')][_0x3b03('0x36')]?_0x65d439[_0x3b03('0x35')]:_0x491db6[_0x3b03('0x30')];if(_0x5421b1[_0x3b03('0x31')][_0x3b03('0x41')]){_0x65d439['include']=[{'all':!![]}];}_0x65d439=_[_0x3b03('0x3b')]({},_0x65d439,_0x5421b1['options']);return db['AnalyticExtractedReport']['find'](_0x65d439)['then'](handleEntityNotFound(_0x18a132,null))[_0x3b03('0x23')](respondWithResult(_0x18a132,null))['catch'](handleError(_0x18a132,null));};exports[_0x3b03('0x48')]=function(_0x20e596,_0x389f63){return db['AnalyticExtractedReport'][_0x3b03('0x48')](_0x20e596[_0x3b03('0x49')],{})[_0x3b03('0x23')](function(_0x1689df){var _0x124869=_0x20e596[_0x3b03('0x4a')][_0x3b03('0x24')]({'plain':!![]});if(!_0x124869)throw new Error(_0x3b03('0x4b'));if(_0x124869[_0x3b03('0x4c')]==='user'){var _0x4ba956=_0x1689df[_0x3b03('0x24')]({'plain':!![]});var _0x5890d5='ExtractedReports';return db['UserProfileSection'][_0x3b03('0x4d')]({'where':{'name':_0x5890d5,'userProfileId':_0x124869[_0x3b03('0x4e')]},'raw':!![]})['then'](function(_0x5bef54){if(_0x5bef54&&_0x5bef54[_0x3b03('0x4f')]===0x0){return db[_0x3b03('0x26')][_0x3b03('0x48')]({'name':_0x4ba956[_0x3b03('0x2a')],'resourceId':_0x4ba956['id'],'type':_0x5bef54['name'],'sectionId':_0x5bef54['id']},{})[_0x3b03('0x23')](function(){return _0x1689df;});}else{return _0x1689df;}})[_0x3b03('0x45')](function(_0x301c7c){logger[_0x3b03('0x28')](_0x3b03('0x50'),_0x301c7c);throw _0x301c7c;});}return _0x1689df;})[_0x3b03('0x23')](respondWithResult(_0x389f63,0xc9))['catch'](handleError(_0x389f63,null));};exports[_0x3b03('0x22')]=function(_0x19fb8a,_0x3ba3a2){if(_0x19fb8a[_0x3b03('0x49')]['id']){delete _0x19fb8a[_0x3b03('0x49')]['id'];}return db[_0x3b03('0x2e')]['find']({'where':{'id':_0x19fb8a[_0x3b03('0x47')]['id']}})[_0x3b03('0x23')](handleEntityNotFound(_0x3ba3a2,null))[_0x3b03('0x23')](saveUpdates(_0x19fb8a[_0x3b03('0x49')],null))['then'](respondWithResult(_0x3ba3a2,null))[_0x3b03('0x45')](handleError(_0x3ba3a2,null));};exports[_0x3b03('0x27')]=function(_0x30495b,_0x3d7b83){return db[_0x3b03('0x2e')][_0x3b03('0x4d')]({'where':{'id':_0x30495b[_0x3b03('0x47')]['id']}})[_0x3b03('0x23')](handleEntityNotFound(_0x3d7b83,null))[_0x3b03('0x23')](removeEntity(_0x3d7b83,null))[_0x3b03('0x45')](handleError(_0x3d7b83,null));};exports[_0x3b03('0x51')]=function(_0x320323,_0x370568,_0x2ae9c8){return db[_0x3b03('0x2e')]['find']({'where':{'id':_0x320323[_0x3b03('0x47')]['id']},'attributes':['name',_0x3b03('0x52'),_0x3b03('0x53'),'output'],'raw':!![]})['then'](handleEntityNotFound(_0x370568,null))[_0x3b03('0x23')](function(_0x5a1dac){if(_0x5a1dac){if(!fs[_0x3b03('0x54')](path['join'](config[_0x3b03('0x55')],'server/files/reports',_0x5a1dac[_0x3b03('0x53')]))){throw new db['Sequelize'][(_0x3b03('0x56'))](_0x3b03('0x57'));}if(_0x320323[_0x3b03('0x31')][_0x3b03('0x58')]){return _0x370568[_0x3b03('0x16')](0xc8);}return _0x370568['download'](path[_0x3b03('0x59')](config[_0x3b03('0x55')],'server/files/reports',_0x5a1dac[_0x3b03('0x53')]),util[_0x3b03('0x5a')](_0x3b03('0x5b'),_0x5a1dac[_0x3b03('0x52')]||_0x5a1dac[_0x3b03('0x2a')],_0x5a1dac[_0x3b03('0x5c')][_0x3b03('0x5d')]()));}})[_0x3b03('0x45')](handleError(_0x370568,null));};
\ No newline at end of file
+var _0x79e0=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','save','update','then','UserProfileResource','destroy','error','stack','name','map','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','AnalyticExtractedReport','rows','catch','params','keys','find','create','body','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','output','existsSync','root','savename','ValidationError','exists','join','format','basename','toLowerCase','eml-format','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','ioredis'];(function(_0x13f11c,_0x12b8fa){var _0x4a8152=function(_0x44cd5e){while(--_0x44cd5e){_0x13f11c['push'](_0x13f11c['shift']());}};_0x4a8152(++_0x12b8fa);}(_0x79e0,0x13f));var _0x079e=function(_0x5f6a8a,_0x45f474){_0x5f6a8a=_0x5f6a8a-0x0;var _0x2cce4d=_0x79e0[_0x5f6a8a];return _0x2cce4d;};'use strict';var emlformat=require(_0x079e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x079e('0x1'));var Mustache=require(_0x079e('0x2'));var util=require(_0x079e('0x3'));var path=require(_0x079e('0x4'));var sox=require(_0x079e('0x5'));var csv=require(_0x079e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x079e('0x7'));var _=require('lodash');var squel=require(_0x079e('0x8'));var crypto=require(_0x079e('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x079e('0xa'));var toCsv=require(_0x079e('0x6'));var querystring=require(_0x079e('0xb'));var Papa=require('papaparse');var Redis=require(_0x079e('0xc'));var authService=require(_0x079e('0xd'));var qs=require(_0x079e('0xe'));var as=require(_0x079e('0xf'));var hardwareService=require(_0x079e('0x10'));var logger=require('../../config/logger')(_0x079e('0x11'));var utils=require(_0x079e('0x12'));var config=require(_0x079e('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x164355,_0x2bd4f5){_0x2bd4f5=_0x2bd4f5||0xcc;return function(_0x57d57a){if(_0x57d57a){return _0x164355[_0x079e('0x14')](_0x2bd4f5);}return _0x164355[_0x079e('0x15')](_0x2bd4f5)[_0x079e('0x16')]();};}function respondWithResult(_0x21efe8,_0x9dae53){_0x9dae53=_0x9dae53||0xc8;return function(_0x159b6f){if(_0x159b6f){return _0x21efe8[_0x079e('0x15')](_0x9dae53)[_0x079e('0x17')](_0x159b6f);}};}function respondWithFilteredResult(_0x1add6f,_0x1eaf84){return function(_0x9acaae){if(_0x9acaae){var _0x48eca1=typeof _0x1eaf84[_0x079e('0x18')]==='undefined'&&typeof _0x1eaf84[_0x079e('0x19')]===_0x079e('0x1a');var _0x32e35d=_0x9acaae[_0x079e('0x1b')];var _0x1565ef=_0x48eca1?0x0:_0x1eaf84[_0x079e('0x18')];var _0xb97ea3=_0x48eca1?_0x9acaae[_0x079e('0x1b')]:_0x1eaf84[_0x079e('0x18')]+_0x1eaf84[_0x079e('0x19')];var _0x5aaca1;if(_0xb97ea3>=_0x32e35d){_0xb97ea3=_0x32e35d;_0x5aaca1=0xc8;}else{_0x5aaca1=0xce;}_0x1add6f['status'](_0x5aaca1);return _0x1add6f['set'](_0x079e('0x1c'),_0x1565ef+'-'+_0xb97ea3+'/'+_0x32e35d)['json'](_0x9acaae);}return null;};}function patchUpdates(_0x144be4){return function(_0x499bca){try{jsonpatch['apply'](_0x499bca,_0x144be4,!![]);}catch(_0x5d7859){return BPromise['reject'](_0x5d7859);}return _0x499bca[_0x079e('0x1d')]();};}function saveUpdates(_0x4ba654,_0x2c2c19){return function(_0x2816ec){if(_0x2816ec){return _0x2816ec[_0x079e('0x1e')](_0x4ba654)[_0x079e('0x1f')](function(_0xc844a4){return _0xc844a4;});}return null;};}function removeEntity(_0x25723e,_0x428453){return function(_0x2f5279){if(_0x2f5279){return _0x2f5279['destroy']()[_0x079e('0x1f')](function(){var _0x51281b=_0x2f5279['get']({'plain':!![]});var _0x2e5ed1='ExtractedReports';return db[_0x079e('0x20')][_0x079e('0x21')]({'where':{'type':_0x2e5ed1,'resourceId':_0x51281b['id']}})[_0x079e('0x1f')](function(){return _0x2f5279;});})[_0x079e('0x1f')](function(){_0x25723e[_0x079e('0x15')](0xcc)[_0x079e('0x16')]();});}};}function handleEntityNotFound(_0x2ac15a,_0x5cd615){return function(_0x156efd){if(!_0x156efd){_0x2ac15a[_0x079e('0x14')](0x194);}return _0x156efd;};}function handleError(_0x2c050f,_0x3461d9){_0x3461d9=_0x3461d9||0x1f4;return function(_0x334e75){logger[_0x079e('0x22')](_0x334e75[_0x079e('0x23')]);if(_0x334e75[_0x079e('0x24')]){delete _0x334e75['name'];}_0x2c050f[_0x079e('0x15')](_0x3461d9)['send'](_0x334e75);};}exports['index']=function(_0x126b86,_0x1bb3a8){var _0x327d35={},_0x38da8b={},_0x3e5712={'count':0x0,'rows':[]};var _0x116e00=_[_0x079e('0x25')](db['AnalyticExtractedReport'][_0x079e('0x26')],function(_0x5f1423){return{'name':_0x5f1423['fieldName'],'type':_0x5f1423[_0x079e('0x27')][_0x079e('0x28')]};});_0x38da8b[_0x079e('0x29')]=_[_0x079e('0x25')](_0x116e00,_0x079e('0x24'));_0x38da8b[_0x079e('0x2a')]=_['keys'](_0x126b86['query']);_0x38da8b['filters']=_[_0x079e('0x2b')](_0x38da8b[_0x079e('0x29')],_0x38da8b[_0x079e('0x2a')]);_0x327d35[_0x079e('0x2c')]=_[_0x079e('0x2b')](_0x38da8b[_0x079e('0x29')],qs['fields'](_0x126b86['query'][_0x079e('0x2d')]));_0x327d35[_0x079e('0x2c')]=_0x327d35[_0x079e('0x2c')][_0x079e('0x2e')]?_0x327d35[_0x079e('0x2c')]:_0x38da8b[_0x079e('0x29')];if(!_0x126b86[_0x079e('0x2a')][_0x079e('0x2f')]('nolimit')){_0x327d35['limit']=qs[_0x079e('0x19')](_0x126b86['query']['limit']);_0x327d35['offset']=qs['offset'](_0x126b86['query'][_0x079e('0x18')]);}_0x327d35[_0x079e('0x30')]=qs[_0x079e('0x31')](_0x126b86[_0x079e('0x2a')][_0x079e('0x31')]);_0x327d35[_0x079e('0x32')]=qs[_0x079e('0x33')](_['pick'](_0x126b86['query'],_0x38da8b['filters']),_0x116e00);if(_0x126b86[_0x079e('0x2a')][_0x079e('0x34')]){_0x327d35[_0x079e('0x32')]=_[_0x079e('0x35')](_0x327d35[_0x079e('0x32')],{'$or':_[_0x079e('0x25')](_0x116e00,function(_0x2a7cd1){if(_0x2a7cd1['type']!==_0x079e('0x36')){var _0x26b943={};_0x26b943[_0x2a7cd1[_0x079e('0x24')]]={'$like':'%'+_0x126b86[_0x079e('0x2a')][_0x079e('0x34')]+'%'};return _0x26b943;}})});}_0x327d35=_['merge']({},_0x327d35,_0x126b86[_0x079e('0x37')]);var _0x2078d4={'where':_0x327d35['where']};return db['AnalyticExtractedReport'][_0x079e('0x1b')](_0x2078d4)[_0x079e('0x1f')](function(_0x1698c8){_0x3e5712[_0x079e('0x1b')]=_0x1698c8;if(_0x126b86[_0x079e('0x2a')][_0x079e('0x38')]){_0x327d35[_0x079e('0x39')]=[{'all':!![]}];}return db[_0x079e('0x3a')]['findAll'](_0x327d35);})[_0x079e('0x1f')](function(_0x1f25d4){_0x3e5712[_0x079e('0x3b')]=_0x1f25d4;return _0x3e5712;})[_0x079e('0x1f')](respondWithFilteredResult(_0x1bb3a8,_0x327d35))[_0x079e('0x3c')](handleError(_0x1bb3a8,null));};exports['show']=function(_0x493246,_0x73fe0b){var _0x17c0c8={'raw':!![],'where':{'id':_0x493246[_0x079e('0x3d')]['id']}},_0x77280b={};_0x77280b[_0x079e('0x29')]=_[_0x079e('0x3e')](db['AnalyticExtractedReport']['rawAttributes']);_0x77280b[_0x079e('0x2a')]=_['keys'](_0x493246['query']);_0x77280b['filters']=_[_0x079e('0x2b')](_0x77280b['model'],_0x77280b[_0x079e('0x2a')]);_0x17c0c8['attributes']=_[_0x079e('0x2b')](_0x77280b['model'],qs[_0x079e('0x2d')](_0x493246['query']['fields']));_0x17c0c8[_0x079e('0x2c')]=_0x17c0c8[_0x079e('0x2c')][_0x079e('0x2e')]?_0x17c0c8[_0x079e('0x2c')]:_0x77280b[_0x079e('0x29')];if(_0x493246[_0x079e('0x2a')][_0x079e('0x38')]){_0x17c0c8[_0x079e('0x39')]=[{'all':!![]}];}_0x17c0c8=_[_0x079e('0x35')]({},_0x17c0c8,_0x493246[_0x079e('0x37')]);return db['AnalyticExtractedReport'][_0x079e('0x3f')](_0x17c0c8)[_0x079e('0x1f')](handleEntityNotFound(_0x73fe0b,null))[_0x079e('0x1f')](respondWithResult(_0x73fe0b,null))[_0x079e('0x3c')](handleError(_0x73fe0b,null));};exports[_0x079e('0x40')]=function(_0xeefa09,_0x5684d6){return db[_0x079e('0x3a')][_0x079e('0x40')](_0xeefa09[_0x079e('0x41')],{})['then'](function(_0x35e9e1){var _0x52cb79=_0xeefa09[_0x079e('0x42')][_0x079e('0x43')]({'plain':!![]});if(!_0x52cb79)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52cb79[_0x079e('0x44')]==='user'){var _0x32810f=_0x35e9e1[_0x079e('0x43')]({'plain':!![]});var _0x585142='ExtractedReports';return db[_0x079e('0x45')][_0x079e('0x3f')]({'where':{'name':_0x585142,'userProfileId':_0x52cb79[_0x079e('0x46')]},'raw':!![]})['then'](function(_0xca4570){if(_0xca4570&&_0xca4570['autoAssociation']===0x0){return db[_0x079e('0x20')][_0x079e('0x40')]({'name':_0x32810f[_0x079e('0x24')],'resourceId':_0x32810f['id'],'type':_0xca4570[_0x079e('0x24')],'sectionId':_0xca4570['id']},{})['then'](function(){return _0x35e9e1;});}else{return _0x35e9e1;}})['catch'](function(_0x3e28f0){logger[_0x079e('0x22')](_0x079e('0x47'),_0x3e28f0);throw _0x3e28f0;});}return _0x35e9e1;})[_0x079e('0x1f')](respondWithResult(_0x5684d6,0xc9))[_0x079e('0x3c')](handleError(_0x5684d6,null));};exports[_0x079e('0x1e')]=function(_0x55f257,_0x2011da){if(_0x55f257[_0x079e('0x41')]['id']){delete _0x55f257[_0x079e('0x41')]['id'];}return db[_0x079e('0x3a')]['find']({'where':{'id':_0x55f257[_0x079e('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2011da,null))['then'](saveUpdates(_0x55f257[_0x079e('0x41')],null))[_0x079e('0x1f')](respondWithResult(_0x2011da,null))[_0x079e('0x3c')](handleError(_0x2011da,null));};exports[_0x079e('0x21')]=function(_0x51971b,_0x1d3f9a){return db['AnalyticExtractedReport'][_0x079e('0x3f')]({'where':{'id':_0x51971b[_0x079e('0x3d')]['id']}})['then'](handleEntityNotFound(_0x1d3f9a,null))['then'](removeEntity(_0x1d3f9a,null))['catch'](handleError(_0x1d3f9a,null));};exports[_0x079e('0x48')]=function(_0x5d8e5d,_0x44e599,_0x5d0f63){return db[_0x079e('0x3a')][_0x079e('0x3f')]({'where':{'id':_0x5d8e5d[_0x079e('0x3d')]['id']},'attributes':['name','basename','savename',_0x079e('0x49')],'raw':!![]})[_0x079e('0x1f')](handleEntityNotFound(_0x44e599,null))[_0x079e('0x1f')](function(_0x35f718){if(_0x35f718){if(!fs[_0x079e('0x4a')](path['join'](config[_0x079e('0x4b')],'server/files/reports',_0x35f718[_0x079e('0x4c')]))){throw new db['Sequelize'][(_0x079e('0x4d'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x5d8e5d[_0x079e('0x2a')][_0x079e('0x4e')]){return _0x44e599['sendStatus'](0xc8);}return _0x44e599[_0x079e('0x48')](path[_0x079e('0x4f')](config[_0x079e('0x4b')],'server/files/reports',_0x35f718[_0x079e('0x4c')]),util[_0x079e('0x50')]('%s.%s',_0x35f718[_0x079e('0x51')]||_0x35f718[_0x079e('0x24')],_0x35f718['output'][_0x079e('0x52')]()));}})[_0x079e('0x3c')](handleError(_0x44e599,null));};
\ No newline at end of file
index 1c8663e..4514c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab3a=['exports','define','analytics_extracted_reports','util','../../config/logger','api','moment','request-promise','path','rimraf','./analyticExtractedReport.attributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xab3a,0xd4));var _0xaab3=function(_0x305b12,_0x5ecd09){_0x305b12=_0x305b12-0x0;var _0x4141de=_0xab3a[_0x305b12];return _0x4141de;};'use strict';var _=require('lodash');var util=require(_0xaab3('0x0'));var logger=require(_0xaab3('0x1'))(_0xaab3('0x2'));var moment=require(_0xaab3('0x3'));var BPromise=require('bluebird');var rp=require(_0xaab3('0x4'));var fs=require('fs');var path=require(_0xaab3('0x5'));var rimraf=require(_0xaab3('0x6'));var config=require('../../config/environment');var attributes=require(_0xaab3('0x7'));module[_0xaab3('0x8')]=function(_0xd9b142,_0x396bee){return _0xd9b142[_0xaab3('0x9')]('AnalyticExtractedReport',attributes,{'tableName':_0xaab3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x981e=['lodash','api','moment','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','analytics_extracted_reports'];(function(_0x4c5227,_0x5da181){var _0x3f03fa=function(_0x55e910){while(--_0x55e910){_0x4c5227['push'](_0x4c5227['shift']());}};_0x3f03fa(++_0x5da181);}(_0x981e,0xfd));var _0xe981=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x981e[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xe981('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe981('0x1'));var moment=require(_0xe981('0x2'));var BPromise=require('bluebird');var rp=require(_0xe981('0x3'));var fs=require('fs');var path=require(_0xe981('0x4'));var rimraf=require(_0xe981('0x5'));var config=require(_0xe981('0x6'));var attributes=require(_0xe981('0x7'));module[_0xe981('0x8')]=function(_0xd533c9,_0x85eeb9){return _0xd533c9[_0xe981('0x9')]('AnalyticExtractedReport',attributes,{'tableName':_0xe981('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 312aa1d..95f0dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb171=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1b6a9f,_0x222fb1){var _0x1fe2e7=function(_0x341c28){while(--_0x341c28){_0x1b6a9f['push'](_0x1b6a9f['shift']());}};_0x1fe2e7(++_0x222fb1);}(_0xb171,0x69));var _0x1b17=function(_0x8aa324,_0x478d54){_0x8aa324=_0x8aa324-0x0;var _0xd955ba=_0xb171[_0x8aa324];return _0xd955ba;};'use strict';var _=require(_0x1b17('0x0'));var util=require(_0x1b17('0x1'));var moment=require(_0x1b17('0x2'));var BPromise=require(_0x1b17('0x3'));var rs=require(_0x1b17('0x4'));var fs=require('fs');var Redis=require(_0x1b17('0x5'));var db=require(_0x1b17('0x6'))['db'];var utils=require(_0x1b17('0x7'));var logger=require(_0x1b17('0x8'))(_0x1b17('0x9'));var config=require(_0x1b17('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x1b17('0xb')][_0x1b17('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18950f,_0x9759fe,_0x37a83d){return new BPromise(function(_0x3b8599,_0x1c043e){return client[_0x1b17('0xd')](_0x18950f,_0x37a83d)[_0x1b17('0xe')](function(_0x512cb1){logger[_0x1b17('0xf')](_0x1b17('0x10'),_0x9759fe,_0x1b17('0x11'));logger[_0x1b17('0x12')](_0x1b17('0x13'),_0x9759fe,_0x1b17('0x11'),JSON[_0x1b17('0x14')](_0x512cb1));if(_0x512cb1[_0x1b17('0x15')]){if(_0x512cb1[_0x1b17('0x15')][_0x1b17('0x16')]===0x1f4){logger[_0x1b17('0x15')](_0x1b17('0x10'),_0x9759fe,_0x512cb1[_0x1b17('0x15')]['message']);return _0x1c043e(_0x512cb1['error']['message']);}logger[_0x1b17('0x15')](_0x1b17('0x10'),_0x9759fe,_0x512cb1[_0x1b17('0x15')][_0x1b17('0x17')]);return _0x3b8599(_0x512cb1[_0x1b17('0x15')][_0x1b17('0x17')]);}else{logger[_0x1b17('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x9759fe,'request\x20sent');_0x3b8599(_0x512cb1[_0x1b17('0x18')][_0x1b17('0x17')]);}})[_0x1b17('0x19')](function(_0x1acdcc){logger[_0x1b17('0x15')](_0x1b17('0x10'),_0x9759fe,_0x1acdcc);_0x1c043e(_0x1acdcc);});});}
\ No newline at end of file
+var _0xc98e=['request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x33a432,_0x1acced){var _0x45bd47=function(_0x215360){while(--_0x215360){_0x33a432['push'](_0x33a432['shift']());}};_0x45bd47(++_0x1acced);}(_0xc98e,0x1eb));var _0xec98=function(_0x3573f7,_0x24030f){_0x3573f7=_0x3573f7-0x0;var _0x1ad16f=_0xc98e[_0x3573f7];return _0x1ad16f;};'use strict';var _=require(_0xec98('0x0'));var util=require('util');var moment=require(_0xec98('0x1'));var BPromise=require(_0xec98('0x2'));var rs=require(_0xec98('0x3'));var fs=require('fs');var Redis=require(_0xec98('0x4'));var db=require(_0xec98('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xec98('0x6'));var config=require(_0xec98('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xec98('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17180c,_0x25d6f1,_0xb06fa0){return new BPromise(function(_0x2e330d,_0x1d4914){return client[_0xec98('0x9')](_0x17180c,_0xb06fa0)[_0xec98('0xa')](function(_0x7c3c34){logger[_0xec98('0xb')](_0xec98('0xc'),_0x25d6f1,_0xec98('0xd'));logger[_0xec98('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x25d6f1,_0xec98('0xd'),JSON[_0xec98('0xf')](_0x7c3c34));if(_0x7c3c34[_0xec98('0x10')]){if(_0x7c3c34[_0xec98('0x10')][_0xec98('0x11')]===0x1f4){logger[_0xec98('0x10')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x25d6f1,_0x7c3c34[_0xec98('0x10')][_0xec98('0x12')]);return _0x1d4914(_0x7c3c34['error'][_0xec98('0x12')]);}logger[_0xec98('0x10')](_0xec98('0xc'),_0x25d6f1,_0x7c3c34[_0xec98('0x10')][_0xec98('0x12')]);return _0x2e330d(_0x7c3c34[_0xec98('0x10')]['message']);}else{logger[_0xec98('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x25d6f1,_0xec98('0xd'));_0x2e330d(_0x7c3c34[_0xec98('0x13')][_0xec98('0x12')]);}})[_0xec98('0x14')](function(_0x19534a){logger[_0xec98('0x10')](_0xec98('0xc'),_0x25d6f1,_0x19534a);_0x1d4914(_0x19534a);});});}
\ No newline at end of file
index 3d80e63..0003c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba9=['isAuthenticated','index','/:id','/:id/download','download','create','put','update','destroy','util','path','connect-timeout','express','fs-extra','../../config/environment','./analyticExtractedReport.controller','get'];(function(_0x299c46,_0x535de5){var _0x1f0adc=function(_0x56b91b){while(--_0x56b91b){_0x299c46['push'](_0x299c46['shift']());}};_0x1f0adc(++_0x535de5);}(_0x7ba9,0x1c3));var _0x97ba=function(_0x38854e,_0x23cbc9){_0x38854e=_0x38854e-0x0;var _0x3f8415=_0x7ba9[_0x38854e];return _0x3f8415;};'use strict';var multer=require('multer');var util=require(_0x97ba('0x0'));var path=require(_0x97ba('0x1'));var timeout=require(_0x97ba('0x2'));var express=require(_0x97ba('0x3'));var router=express['Router']();var fs_extra=require(_0x97ba('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x97ba('0x5'));var controller=require(_0x97ba('0x6'));router[_0x97ba('0x7')]('/',auth[_0x97ba('0x8')](),controller[_0x97ba('0x9')]);router[_0x97ba('0x7')](_0x97ba('0xa'),auth[_0x97ba('0x8')](),controller['show']);router[_0x97ba('0x7')](_0x97ba('0xb'),auth[_0x97ba('0x8')](),controller[_0x97ba('0xc')]);router['post']('/',auth[_0x97ba('0x8')](),controller[_0x97ba('0xd')]);router[_0x97ba('0xe')](_0x97ba('0xa'),auth[_0x97ba('0x8')](),controller[_0x97ba('0xf')]);router['delete'](_0x97ba('0xa'),auth[_0x97ba('0x8')](),controller[_0x97ba('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x0c78=['../../components/interaction/service','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4686f4,_0x48733c){var _0xf686f9=function(_0x4461b4){while(--_0x4461b4){_0x4686f4['push'](_0x4686f4['shift']());}};_0xf686f9(++_0x48733c);}(_0x0c78,0x1b1));var _0x80c7=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x0c78[_0x4154a6];return _0x3b2786;};'use strict';var multer=require('multer');var util=require(_0x80c7('0x0'));var path=require(_0x80c7('0x1'));var timeout=require(_0x80c7('0x2'));var express=require(_0x80c7('0x3'));var router=express[_0x80c7('0x4')]();var fs_extra=require(_0x80c7('0x5'));var auth=require(_0x80c7('0x6'));var interaction=require(_0x80c7('0x7'));var config=require('../../config/environment');var controller=require('./analyticExtractedReport.controller');router[_0x80c7('0x8')]('/',auth['isAuthenticated'](),controller[_0x80c7('0x9')]);router[_0x80c7('0x8')](_0x80c7('0xa'),auth[_0x80c7('0xb')](),controller[_0x80c7('0xc')]);router[_0x80c7('0x8')](_0x80c7('0xd'),auth[_0x80c7('0xb')](),controller[_0x80c7('0xe')]);router[_0x80c7('0xf')]('/',auth[_0x80c7('0xb')](),controller[_0x80c7('0x10')]);router[_0x80c7('0x11')](_0x80c7('0xa'),auth[_0x80c7('0xb')](),controller[_0x80c7('0x12')]);router[_0x80c7('0x13')](_0x80c7('0xa'),auth[_0x80c7('0xb')](),controller[_0x80c7('0x14')]);module[_0x80c7('0x15')]=router;
\ No newline at end of file
index f73299f..10e2019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25c=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x40a6b5,_0x2ef12f){var _0x4bab77=function(_0x303e52){while(--_0x303e52){_0x40a6b5['push'](_0x40a6b5['shift']());}};_0x4bab77(++_0x2ef12f);}(_0xd25c,0x191));var _0xcd25=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xd25c[_0x54d4fe];return _0x1ab5bb;};'use strict';var Sequelize=require(_0xcd25('0x0'));module[_0xcd25('0x1')]={'field':{'type':Sequelize[_0xcd25('0x2')]},'alias':{'type':Sequelize[_0xcd25('0x3')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xcd25('0x3')]},'groupBy':{'type':Sequelize[_0xcd25('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xcd25('0x3')]},'custom':{'type':Sequelize[_0xcd25('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xaed3=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x39c63c,_0x462a15){var _0x45dcac=function(_0x4cb387){while(--_0x4cb387){_0x39c63c['push'](_0x39c63c['shift']());}};_0x45dcac(++_0x462a15);}(_0xaed3,0x1bd));var _0x3aed=function(_0x99ff94,_0x47a1b1){_0x99ff94=_0x99ff94-0x0;var _0x1b5bc0=_0xaed3[_0x99ff94];return _0x1b5bc0;};'use strict';var Sequelize=require(_0x3aed('0x0'));module[_0x3aed('0x1')]={'field':{'type':Sequelize[_0x3aed('0x2')]},'alias':{'type':Sequelize[_0x3aed('0x3')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x3aed('0x3')]},'groupBy':{'type':Sequelize[_0x3aed('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x3aed('0x3')]},'custom':{'type':Sequelize[_0x3aed('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 81902a0..52ca0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc086=['error','stack','name','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','keys','find','create','bulkCreate','body','params','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','transaction','destroy','CustomReportId','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0xc086,0x7f));var _0x6c08=function(_0x1c1ee7,_0x5a3408){_0x1c1ee7=_0x1c1ee7-0x0;var _0x332335=_0xc086[_0x1c1ee7];return _0x332335;};'use strict';var emlformat=require(_0x6c08('0x0'));var rimraf=require(_0x6c08('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6c08('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6c08('0x3'));var Mustache=require('mustache');var util=require(_0x6c08('0x4'));var path=require(_0x6c08('0x5'));var sox=require(_0x6c08('0x6'));var csv=require(_0x6c08('0x7'));var ejs=require(_0x6c08('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6c08('0x9'));var squel=require('squel');var crypto=require(_0x6c08('0xa'));var jsforce=require(_0x6c08('0xb'));var deskjs=require(_0x6c08('0xc'));var toCsv=require(_0x6c08('0x7'));var querystring=require(_0x6c08('0xd'));var Papa=require('papaparse');var Redis=require(_0x6c08('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6c08('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6c08('0x10'));var logger=require(_0x6c08('0x11'))(_0x6c08('0x12'));var utils=require(_0x6c08('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6c08('0x14'));var db=require(_0x6c08('0x15'))['db'];function respondWithStatusCode(_0x469a4c,_0xc022fc){_0xc022fc=_0xc022fc||0xcc;return function(_0x1433f9){if(_0x1433f9){return _0x469a4c[_0x6c08('0x16')](_0xc022fc);}return _0x469a4c['status'](_0xc022fc)[_0x6c08('0x17')]();};}function respondWithResult(_0x562f37,_0x11de08){_0x11de08=_0x11de08||0xc8;return function(_0xeb104d){if(_0xeb104d){return _0x562f37[_0x6c08('0x18')](_0x11de08)['json'](_0xeb104d);}};}function respondWithFilteredResult(_0x58e1f7,_0x599178){return function(_0x225761){if(_0x225761){var _0x3bab82=typeof _0x599178['offset']===_0x6c08('0x19')&&typeof _0x599178[_0x6c08('0x1a')]===_0x6c08('0x19');var _0x348f2e=_0x225761[_0x6c08('0x1b')];var _0x37aaed=_0x3bab82?0x0:_0x599178[_0x6c08('0x1c')];var _0x2f63bc=_0x3bab82?_0x225761[_0x6c08('0x1b')]:_0x599178[_0x6c08('0x1c')]+_0x599178[_0x6c08('0x1a')];var _0x521e1c;if(_0x2f63bc>=_0x348f2e){_0x2f63bc=_0x348f2e;_0x521e1c=0xc8;}else{_0x521e1c=0xce;}_0x58e1f7[_0x6c08('0x18')](_0x521e1c);return _0x58e1f7[_0x6c08('0x1d')](_0x6c08('0x1e'),_0x37aaed+'-'+_0x2f63bc+'/'+_0x348f2e)[_0x6c08('0x1f')](_0x225761);}return null;};}function patchUpdates(_0xe969d){return function(_0x2d9d65){try{jsonpatch[_0x6c08('0x20')](_0x2d9d65,_0xe969d,!![]);}catch(_0x4ded63){return BPromise[_0x6c08('0x21')](_0x4ded63);}return _0x2d9d65[_0x6c08('0x22')]();};}function saveUpdates(_0x4230c0,_0x55b2d3){return function(_0x5356ad){if(_0x5356ad){return _0x5356ad[_0x6c08('0x23')](_0x4230c0)[_0x6c08('0x24')](function(_0x2eb0cd){return _0x2eb0cd;});}return null;};}function removeEntity(_0x1caccf,_0x16c488){return function(_0x205382){if(_0x205382){return _0x205382['destroy']()[_0x6c08('0x24')](function(){_0x1caccf[_0x6c08('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cddc8,_0x363e0){return function(_0x506a8){if(!_0x506a8){_0x1cddc8[_0x6c08('0x16')](0x194);}return _0x506a8;};}function handleError(_0x38dea7,_0x45b7d7){_0x45b7d7=_0x45b7d7||0x1f4;return function(_0x17e21f){logger[_0x6c08('0x25')](_0x17e21f[_0x6c08('0x26')]);if(_0x17e21f[_0x6c08('0x27')]){delete _0x17e21f[_0x6c08('0x27')];}_0x38dea7[_0x6c08('0x18')](_0x45b7d7)['send'](_0x17e21f);};}exports[_0x6c08('0x28')]=function(_0x37e534,_0x19011f){var _0x3c935f={},_0x3401a2={},_0x4f56f9={'count':0x0,'rows':[]};var _0x402e57=_[_0x6c08('0x29')](db[_0x6c08('0x2a')][_0x6c08('0x2b')],function(_0xf53222){return{'name':_0xf53222[_0x6c08('0x2c')],'type':_0xf53222[_0x6c08('0x2d')]['key']};});_0x3401a2[_0x6c08('0x2e')]=_[_0x6c08('0x29')](_0x402e57,_0x6c08('0x27'));_0x3401a2[_0x6c08('0x2f')]=_['keys'](_0x37e534['query']);_0x3401a2[_0x6c08('0x30')]=_[_0x6c08('0x31')](_0x3401a2['model'],_0x3401a2[_0x6c08('0x2f')]);_0x3c935f[_0x6c08('0x32')]=_['intersection'](_0x3401a2['model'],qs[_0x6c08('0x33')](_0x37e534[_0x6c08('0x2f')]['fields']));_0x3c935f['attributes']=_0x3c935f['attributes'][_0x6c08('0x34')]?_0x3c935f['attributes']:_0x3401a2[_0x6c08('0x2e')];if(!_0x37e534[_0x6c08('0x2f')][_0x6c08('0x35')]('nolimit')){_0x3c935f['limit']=qs[_0x6c08('0x1a')](_0x37e534[_0x6c08('0x2f')][_0x6c08('0x1a')]);_0x3c935f[_0x6c08('0x1c')]=qs['offset'](_0x37e534['query'][_0x6c08('0x1c')]);}_0x3c935f[_0x6c08('0x36')]=qs[_0x6c08('0x37')](_0x37e534['query']['sort']);_0x3c935f[_0x6c08('0x38')]=qs['filters'](_[_0x6c08('0x39')](_0x37e534[_0x6c08('0x2f')],_0x3401a2['filters']),_0x402e57);if(_0x37e534[_0x6c08('0x2f')]['filter']){_0x3c935f[_0x6c08('0x38')]=_[_0x6c08('0x3a')](_0x3c935f[_0x6c08('0x38')],{'$or':_[_0x6c08('0x29')](_0x402e57,function(_0x25a14c){if(_0x25a14c['type']!==_0x6c08('0x3b')){var _0x244e8f={};_0x244e8f[_0x25a14c[_0x6c08('0x27')]]={'$like':'%'+_0x37e534[_0x6c08('0x2f')][_0x6c08('0x3c')]+'%'};return _0x244e8f;}})});}_0x3c935f=_[_0x6c08('0x3a')]({},_0x3c935f,_0x37e534[_0x6c08('0x3d')]);var _0x5d58f6={'where':_0x3c935f[_0x6c08('0x38')]};return db[_0x6c08('0x2a')][_0x6c08('0x1b')](_0x5d58f6)[_0x6c08('0x24')](function(_0x5f19c8){_0x4f56f9[_0x6c08('0x1b')]=_0x5f19c8;if(_0x37e534[_0x6c08('0x2f')][_0x6c08('0x3e')]){_0x3c935f[_0x6c08('0x3f')]=[{'all':!![]}];}return db[_0x6c08('0x2a')][_0x6c08('0x40')](_0x3c935f);})[_0x6c08('0x24')](function(_0x5e8a55){_0x4f56f9[_0x6c08('0x41')]=_0x5e8a55;return _0x4f56f9;})[_0x6c08('0x24')](respondWithFilteredResult(_0x19011f,_0x3c935f))[_0x6c08('0x42')](handleError(_0x19011f,null));};exports[_0x6c08('0x43')]=function(_0x641514,_0x59ad6a){var _0x54eccc={'raw':![],'where':{'id':_0x641514['params']['id']}},_0x2f0cdd={};_0x2f0cdd[_0x6c08('0x2e')]=_['keys'](db['AnalyticFieldReport'][_0x6c08('0x2b')]);_0x2f0cdd[_0x6c08('0x2f')]=_[_0x6c08('0x44')](_0x641514['query']);_0x2f0cdd['filters']=_[_0x6c08('0x31')](_0x2f0cdd[_0x6c08('0x2e')],_0x2f0cdd[_0x6c08('0x2f')]);_0x54eccc[_0x6c08('0x32')]=_[_0x6c08('0x31')](_0x2f0cdd[_0x6c08('0x2e')],qs[_0x6c08('0x33')](_0x641514['query']['fields']));_0x54eccc['attributes']=_0x54eccc[_0x6c08('0x32')][_0x6c08('0x34')]?_0x54eccc[_0x6c08('0x32')]:_0x2f0cdd['model'];if(_0x641514['query']['includeAll']){_0x54eccc[_0x6c08('0x3f')]=[{'all':!![]}];}_0x54eccc=_['merge']({},_0x54eccc,_0x641514[_0x6c08('0x3d')]);return db[_0x6c08('0x2a')][_0x6c08('0x45')](_0x54eccc)['then'](handleEntityNotFound(_0x59ad6a,null))[_0x6c08('0x24')](respondWithResult(_0x59ad6a,null))[_0x6c08('0x42')](handleError(_0x59ad6a,null));};exports[_0x6c08('0x46')]=function(_0x46860c,_0x2001d2){return db['AnalyticFieldReport'][_0x6c08('0x46')](_0x46860c['body'],{})[_0x6c08('0x24')](respondWithResult(_0x2001d2,0xc9))[_0x6c08('0x42')](handleError(_0x2001d2,null));};exports[_0x6c08('0x47')]=function(_0xd50c06,_0x89e345){return db[_0x6c08('0x2a')][_0x6c08('0x47')](_0xd50c06[_0x6c08('0x48')],{'raw':![],'individualHooks':!![]})[_0x6c08('0x24')](respondWithResult(_0x89e345,0xc9))[_0x6c08('0x42')](handleError(_0x89e345,null));};exports[_0x6c08('0x23')]=function(_0x16599e,_0x184fa6){if(_0x16599e[_0x6c08('0x48')]['id']){delete _0x16599e[_0x6c08('0x48')]['id'];}return db[_0x6c08('0x2a')][_0x6c08('0x45')]({'where':{'id':_0x16599e['params']['id']}})[_0x6c08('0x24')](handleEntityNotFound(_0x184fa6,null))['then'](saveUpdates(_0x16599e[_0x6c08('0x48')],null))[_0x6c08('0x24')](respondWithResult(_0x184fa6,null))['catch'](handleError(_0x184fa6,null));};exports['destroy']=function(_0x38e2b8,_0x1765a4){return db['AnalyticFieldReport'][_0x6c08('0x45')]({'where':{'id':_0x38e2b8[_0x6c08('0x49')]['id']}})[_0x6c08('0x24')](handleEntityNotFound(_0x1765a4,null))[_0x6c08('0x24')](removeEntity(_0x1765a4,null))['catch'](handleError(_0x1765a4,null));};exports[_0x6c08('0x4a')]=function(_0x3caee5,_0x1d4a8d){return db['AnalyticFieldReport']['destroy']({'where':{'id':_0x3caee5[_0x6c08('0x2f')][_0x6c08('0x4b')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1d4a8d,0xcc))[_0x6c08('0x42')](handleError(_0x1d4a8d,null));};exports[_0x6c08('0x4c')]=function(_0x2c5459,_0x5fc95e,_0x171ad4){return db[_0x6c08('0x4d')][_0x6c08('0x4e')]({'where':{'id':_0x2c5459['params']['id']}})['then'](handleEntityNotFound(_0x5fc95e,null))[_0x6c08('0x24')](function(_0xf9eff6){if(_0xf9eff6){return db['sequelize'][_0x6c08('0x4f')](function(_0x248087){return db[_0x6c08('0x2a')][_0x6c08('0x50')]({'where':{'CustomReportId':_0x2c5459[_0x6c08('0x49')]['id']},'transaction':_0x248087})[_0x6c08('0x24')](function(_0x507a8a){var _0xd72446=_[_0x6c08('0x29')](_0x2c5459[_0x6c08('0x48')],function(_0x5d2fb3){delete _0x5d2fb3['id'];_0x5d2fb3[_0x6c08('0x51')]=_0x2c5459['params']['id'];return _0x5d2fb3;});return db[_0x6c08('0x2a')][_0x6c08('0x47')](_0xd72446,{'transaction':_0x248087});});})[_0x6c08('0x24')](function(){return db[_0x6c08('0x2a')][_0x6c08('0x40')]({'where':{'CustomReportId':_0x2c5459[_0x6c08('0x49')]['id']}});});}})[_0x6c08('0x24')](respondWithResult(_0x5fc95e,null))[_0x6c08('0x42')](handleError(_0x5fc95e,null));};
\ No newline at end of file
+var _0x2c8c=['VIRTUAL','options','includeAll','rows','catch','show','params','include','merge','find','create','body','ids','addFields','findOne','sequelize','transaction','CustomReportId','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','error','stack','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type'];(function(_0x3f68a1,_0x464667){var _0x2d60be=function(_0x5cf064){while(--_0x5cf064){_0x3f68a1['push'](_0x3f68a1['shift']());}};_0x2d60be(++_0x464667);}(_0x2c8c,0x10d));var _0xc2c8=function(_0x56cab5,_0x5e0181){_0x56cab5=_0x56cab5-0x0;var _0x4d11fe=_0x2c8c[_0x56cab5];return _0x4d11fe;};'use strict';var emlformat=require(_0xc2c8('0x0'));var rimraf=require(_0xc2c8('0x1'));var zipdir=require(_0xc2c8('0x2'));var jsonpatch=require(_0xc2c8('0x3'));var rp=require(_0xc2c8('0x4'));var moment=require(_0xc2c8('0x5'));var BPromise=require(_0xc2c8('0x6'));var Mustache=require('mustache');var util=require(_0xc2c8('0x7'));var path=require(_0xc2c8('0x8'));var sox=require(_0xc2c8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc2c8('0xa'));var _=require(_0xc2c8('0xb'));var squel=require('squel');var crypto=require(_0xc2c8('0xc'));var jsforce=require(_0xc2c8('0xd'));var deskjs=require(_0xc2c8('0xe'));var toCsv=require(_0xc2c8('0xf'));var querystring=require(_0xc2c8('0x10'));var Papa=require(_0xc2c8('0x11'));var Redis=require(_0xc2c8('0x12'));var authService=require(_0xc2c8('0x13'));var qs=require(_0xc2c8('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc2c8('0x15'));var logger=require(_0xc2c8('0x16'))(_0xc2c8('0x17'));var utils=require(_0xc2c8('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc2c8('0x19'));var db=require(_0xc2c8('0x1a'))['db'];function respondWithStatusCode(_0x3d76e8,_0x2f7663){_0x2f7663=_0x2f7663||0xcc;return function(_0x25fb9f){if(_0x25fb9f){return _0x3d76e8[_0xc2c8('0x1b')](_0x2f7663);}return _0x3d76e8['status'](_0x2f7663)[_0xc2c8('0x1c')]();};}function respondWithResult(_0x2cc479,_0x230a93){_0x230a93=_0x230a93||0xc8;return function(_0x244c4c){if(_0x244c4c){return _0x2cc479[_0xc2c8('0x1d')](_0x230a93)[_0xc2c8('0x1e')](_0x244c4c);}};}function respondWithFilteredResult(_0x31e065,_0x4d0595){return function(_0x260172){if(_0x260172){var _0x4cdd6d=typeof _0x4d0595[_0xc2c8('0x1f')]==='undefined'&&typeof _0x4d0595['limit']===_0xc2c8('0x20');var _0x486bf0=_0x260172['count'];var _0x1d3dfb=_0x4cdd6d?0x0:_0x4d0595['offset'];var _0x1492b9=_0x4cdd6d?_0x260172[_0xc2c8('0x21')]:_0x4d0595[_0xc2c8('0x1f')]+_0x4d0595[_0xc2c8('0x22')];var _0x36eae9;if(_0x1492b9>=_0x486bf0){_0x1492b9=_0x486bf0;_0x36eae9=0xc8;}else{_0x36eae9=0xce;}_0x31e065[_0xc2c8('0x1d')](_0x36eae9);return _0x31e065[_0xc2c8('0x23')](_0xc2c8('0x24'),_0x1d3dfb+'-'+_0x1492b9+'/'+_0x486bf0)[_0xc2c8('0x1e')](_0x260172);}return null;};}function patchUpdates(_0x413966){return function(_0x4da0fc){try{jsonpatch['apply'](_0x4da0fc,_0x413966,!![]);}catch(_0x2cfa83){return BPromise['reject'](_0x2cfa83);}return _0x4da0fc['save']();};}function saveUpdates(_0x1ca5bc,_0x4e0af7){return function(_0x47c1a0){if(_0x47c1a0){return _0x47c1a0[_0xc2c8('0x25')](_0x1ca5bc)[_0xc2c8('0x26')](function(_0x20bf2b){return _0x20bf2b;});}return null;};}function removeEntity(_0x2b4baf,_0x827360){return function(_0x4dd825){if(_0x4dd825){return _0x4dd825[_0xc2c8('0x27')]()['then'](function(){_0x2b4baf[_0xc2c8('0x1d')](0xcc)[_0xc2c8('0x1c')]();});}};}function handleEntityNotFound(_0x42b85b,_0x3ace92){return function(_0x3eecdb){if(!_0x3eecdb){_0x42b85b[_0xc2c8('0x1b')](0x194);}return _0x3eecdb;};}function handleError(_0x2eeba7,_0x3c7ff2){_0x3c7ff2=_0x3c7ff2||0x1f4;return function(_0x230c40){logger[_0xc2c8('0x28')](_0x230c40[_0xc2c8('0x29')]);if(_0x230c40[_0xc2c8('0x2a')]){delete _0x230c40[_0xc2c8('0x2a')];}_0x2eeba7[_0xc2c8('0x1d')](_0x3c7ff2)[_0xc2c8('0x2b')](_0x230c40);};}exports['index']=function(_0x5d1e9a,_0x452979){var _0x5553d6={},_0x44590c={},_0x28188c={'count':0x0,'rows':[]};var _0x177d49=_[_0xc2c8('0x2c')](db[_0xc2c8('0x2d')][_0xc2c8('0x2e')],function(_0x187fef){return{'name':_0x187fef[_0xc2c8('0x2f')],'type':_0x187fef['type'][_0xc2c8('0x30')]};});_0x44590c[_0xc2c8('0x31')]=_[_0xc2c8('0x2c')](_0x177d49,_0xc2c8('0x2a'));_0x44590c[_0xc2c8('0x32')]=_[_0xc2c8('0x33')](_0x5d1e9a[_0xc2c8('0x32')]);_0x44590c[_0xc2c8('0x34')]=_['intersection'](_0x44590c['model'],_0x44590c['query']);_0x5553d6[_0xc2c8('0x35')]=_['intersection'](_0x44590c[_0xc2c8('0x31')],qs[_0xc2c8('0x36')](_0x5d1e9a[_0xc2c8('0x32')]['fields']));_0x5553d6[_0xc2c8('0x35')]=_0x5553d6[_0xc2c8('0x35')][_0xc2c8('0x37')]?_0x5553d6[_0xc2c8('0x35')]:_0x44590c[_0xc2c8('0x31')];if(!_0x5d1e9a[_0xc2c8('0x32')][_0xc2c8('0x38')](_0xc2c8('0x39'))){_0x5553d6['limit']=qs[_0xc2c8('0x22')](_0x5d1e9a[_0xc2c8('0x32')]['limit']);_0x5553d6[_0xc2c8('0x1f')]=qs[_0xc2c8('0x1f')](_0x5d1e9a[_0xc2c8('0x32')][_0xc2c8('0x1f')]);}_0x5553d6[_0xc2c8('0x3a')]=qs[_0xc2c8('0x3b')](_0x5d1e9a[_0xc2c8('0x32')][_0xc2c8('0x3b')]);_0x5553d6[_0xc2c8('0x3c')]=qs[_0xc2c8('0x34')](_['pick'](_0x5d1e9a[_0xc2c8('0x32')],_0x44590c[_0xc2c8('0x34')]),_0x177d49);if(_0x5d1e9a['query'][_0xc2c8('0x3d')]){_0x5553d6[_0xc2c8('0x3c')]=_['merge'](_0x5553d6[_0xc2c8('0x3c')],{'$or':_[_0xc2c8('0x2c')](_0x177d49,function(_0x24c1a8){if(_0x24c1a8[_0xc2c8('0x3e')]!==_0xc2c8('0x3f')){var _0x108c64={};_0x108c64[_0x24c1a8['name']]={'$like':'%'+_0x5d1e9a['query'][_0xc2c8('0x3d')]+'%'};return _0x108c64;}})});}_0x5553d6=_['merge']({},_0x5553d6,_0x5d1e9a[_0xc2c8('0x40')]);var _0x5b9d00={'where':_0x5553d6['where']};return db[_0xc2c8('0x2d')][_0xc2c8('0x21')](_0x5b9d00)[_0xc2c8('0x26')](function(_0x3b0c4e){_0x28188c[_0xc2c8('0x21')]=_0x3b0c4e;if(_0x5d1e9a[_0xc2c8('0x32')][_0xc2c8('0x41')]){_0x5553d6['include']=[{'all':!![]}];}return db[_0xc2c8('0x2d')]['findAll'](_0x5553d6);})[_0xc2c8('0x26')](function(_0x138340){_0x28188c[_0xc2c8('0x42')]=_0x138340;return _0x28188c;})['then'](respondWithFilteredResult(_0x452979,_0x5553d6))[_0xc2c8('0x43')](handleError(_0x452979,null));};exports[_0xc2c8('0x44')]=function(_0x16b088,_0x51fca3){var _0x1de52c={'raw':![],'where':{'id':_0x16b088[_0xc2c8('0x45')]['id']}},_0xaf1602={};_0xaf1602[_0xc2c8('0x31')]=_[_0xc2c8('0x33')](db['AnalyticFieldReport'][_0xc2c8('0x2e')]);_0xaf1602['query']=_['keys'](_0x16b088[_0xc2c8('0x32')]);_0xaf1602[_0xc2c8('0x34')]=_['intersection'](_0xaf1602[_0xc2c8('0x31')],_0xaf1602[_0xc2c8('0x32')]);_0x1de52c[_0xc2c8('0x35')]=_['intersection'](_0xaf1602[_0xc2c8('0x31')],qs[_0xc2c8('0x36')](_0x16b088['query'][_0xc2c8('0x36')]));_0x1de52c[_0xc2c8('0x35')]=_0x1de52c[_0xc2c8('0x35')][_0xc2c8('0x37')]?_0x1de52c['attributes']:_0xaf1602[_0xc2c8('0x31')];if(_0x16b088['query'][_0xc2c8('0x41')]){_0x1de52c[_0xc2c8('0x46')]=[{'all':!![]}];}_0x1de52c=_[_0xc2c8('0x47')]({},_0x1de52c,_0x16b088[_0xc2c8('0x40')]);return db[_0xc2c8('0x2d')][_0xc2c8('0x48')](_0x1de52c)[_0xc2c8('0x26')](handleEntityNotFound(_0x51fca3,null))['then'](respondWithResult(_0x51fca3,null))['catch'](handleError(_0x51fca3,null));};exports[_0xc2c8('0x49')]=function(_0x6d34c2,_0x46dbe0){return db[_0xc2c8('0x2d')][_0xc2c8('0x49')](_0x6d34c2[_0xc2c8('0x4a')],{})['then'](respondWithResult(_0x46dbe0,0xc9))[_0xc2c8('0x43')](handleError(_0x46dbe0,null));};exports['bulkCreate']=function(_0x5fb2ac,_0x5759ef){return db[_0xc2c8('0x2d')]['bulkCreate'](_0x5fb2ac[_0xc2c8('0x4a')],{'raw':![],'individualHooks':!![]})[_0xc2c8('0x26')](respondWithResult(_0x5759ef,0xc9))[_0xc2c8('0x43')](handleError(_0x5759ef,null));};exports[_0xc2c8('0x25')]=function(_0x45fd6e,_0x5bd7db){if(_0x45fd6e[_0xc2c8('0x4a')]['id']){delete _0x45fd6e['body']['id'];}return db[_0xc2c8('0x2d')]['find']({'where':{'id':_0x45fd6e[_0xc2c8('0x45')]['id']}})[_0xc2c8('0x26')](handleEntityNotFound(_0x5bd7db,null))[_0xc2c8('0x26')](saveUpdates(_0x45fd6e[_0xc2c8('0x4a')],null))[_0xc2c8('0x26')](respondWithResult(_0x5bd7db,null))[_0xc2c8('0x43')](handleError(_0x5bd7db,null));};exports[_0xc2c8('0x27')]=function(_0x354c85,_0x2f0754){return db[_0xc2c8('0x2d')][_0xc2c8('0x48')]({'where':{'id':_0x354c85[_0xc2c8('0x45')]['id']}})['then'](handleEntityNotFound(_0x2f0754,null))['then'](removeEntity(_0x2f0754,null))[_0xc2c8('0x43')](handleError(_0x2f0754,null));};exports['bulkDestroy']=function(_0x1d4127,_0x5bc256){return db[_0xc2c8('0x2d')][_0xc2c8('0x27')]({'where':{'id':_0x1d4127[_0xc2c8('0x32')][_0xc2c8('0x4b')]||[]},'raw':![],'individualHooks':!![]})[_0xc2c8('0x26')](respondWithResult(_0x5bc256,0xcc))[_0xc2c8('0x43')](handleError(_0x5bc256,null));};exports[_0xc2c8('0x4c')]=function(_0x3532ee,_0x318965,_0x387d37){return db['AnalyticCustomReport'][_0xc2c8('0x4d')]({'where':{'id':_0x3532ee['params']['id']}})[_0xc2c8('0x26')](handleEntityNotFound(_0x318965,null))[_0xc2c8('0x26')](function(_0x12e656){if(_0x12e656){return db[_0xc2c8('0x4e')][_0xc2c8('0x4f')](function(_0x2b2f21){return db[_0xc2c8('0x2d')][_0xc2c8('0x27')]({'where':{'CustomReportId':_0x3532ee[_0xc2c8('0x45')]['id']},'transaction':_0x2b2f21})[_0xc2c8('0x26')](function(_0xdfba23){var _0x15b7a0=_[_0xc2c8('0x2c')](_0x3532ee[_0xc2c8('0x4a')],function(_0x55d4fb){delete _0x55d4fb['id'];_0x55d4fb[_0xc2c8('0x50')]=_0x3532ee[_0xc2c8('0x45')]['id'];return _0x55d4fb;});return db[_0xc2c8('0x2d')][_0xc2c8('0x51')](_0x15b7a0,{'transaction':_0x2b2f21});});})[_0xc2c8('0x26')](function(){return db[_0xc2c8('0x2d')][_0xc2c8('0x52')]({'where':{'CustomReportId':_0x3532ee[_0xc2c8('0x45')]['id']}});});}})['then'](respondWithResult(_0x318965,null))[_0xc2c8('0x43')](handleError(_0x318965,null));};
\ No newline at end of file
index fef4949..a7ec37b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f06=['rimraf','../../config/environment','./analyticFieldReport.attributes','exports','analytics_report_fields','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7f06,0xad));var _0x67f0=function(_0xe6e539,_0xa2b4f2){_0xe6e539=_0xe6e539-0x0;var _0x19deac=_0x7f06[_0xe6e539];return _0x19deac;};'use strict';var _=require(_0x67f0('0x0'));var util=require(_0x67f0('0x1'));var logger=require('../../config/logger')(_0x67f0('0x2'));var moment=require(_0x67f0('0x3'));var BPromise=require(_0x67f0('0x4'));var rp=require(_0x67f0('0x5'));var fs=require('fs');var path=require(_0x67f0('0x6'));var rimraf=require(_0x67f0('0x7'));var config=require(_0x67f0('0x8'));var attributes=require(_0x67f0('0x9'));module[_0x67f0('0xa')]=function(_0xf18cfb,_0xa79e32){return _0xf18cfb['define']('AnalyticFieldReport',attributes,{'tableName':_0x67f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbccd=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','analytics_report_fields','util'];(function(_0x47c0a2,_0xbe9144){var _0x11daea=function(_0x126054){while(--_0x126054){_0x47c0a2['push'](_0x47c0a2['shift']());}};_0x11daea(++_0xbe9144);}(_0xbccd,0xdb));var _0xdbcc=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xbccd[_0x411add];return _0x238242;};'use strict';var _=require('lodash');var util=require(_0xdbcc('0x0'));var logger=require(_0xdbcc('0x1'))('api');var moment=require(_0xdbcc('0x2'));var BPromise=require(_0xdbcc('0x3'));var rp=require(_0xdbcc('0x4'));var fs=require('fs');var path=require(_0xdbcc('0x5'));var rimraf=require(_0xdbcc('0x6'));var config=require(_0xdbcc('0x7'));var attributes=require(_0xdbcc('0x8'));module['exports']=function(_0x18de23,_0x1208e0){return _0x18de23[_0xdbcc('0x9')]('AnalyticFieldReport',attributes,{'tableName':_0xdbcc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 28e432e..ce2f08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../config/logger','../../config/environment','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils'];(function(_0x469b7d,_0x4760f8){var _0xc78a4b=function(_0xd48e6c){while(--_0xd48e6c){_0x469b7d['push'](_0x469b7d['shift']());}};_0xc78a4b(++_0x4760f8);}(_0x70e0,0xe5));var _0x070e=function(_0x3daa4d,_0x22ae94){_0x3daa4d=_0x3daa4d-0x0;var _0x15117d=_0x70e0[_0x3daa4d];return _0x15117d;};'use strict';var _=require(_0x070e('0x0'));var util=require('util');var moment=require(_0x070e('0x1'));var BPromise=require(_0x070e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x070e('0x4'));var logger=require(_0x070e('0x5'))('rpc');var config=require(_0x070e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x7')][_0x070e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f6c29,_0x4d99a9,_0x32582e){return new BPromise(function(_0x39ae78,_0x5532c4){return client[_0x070e('0x9')](_0x4f6c29,_0x32582e)['then'](function(_0x79b211){logger[_0x070e('0xa')](_0x070e('0xb'),_0x4d99a9,_0x070e('0xc'));logger[_0x070e('0xd')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x4d99a9,_0x070e('0xc'),JSON['stringify'](_0x79b211));if(_0x79b211[_0x070e('0xe')]){if(_0x79b211[_0x070e('0xe')][_0x070e('0xf')]===0x1f4){logger[_0x070e('0xe')](_0x070e('0xb'),_0x4d99a9,_0x79b211['error'][_0x070e('0x10')]);return _0x5532c4(_0x79b211[_0x070e('0xe')][_0x070e('0x10')]);}logger[_0x070e('0xe')](_0x070e('0xb'),_0x4d99a9,_0x79b211['error'][_0x070e('0x10')]);return _0x39ae78(_0x79b211[_0x070e('0xe')][_0x070e('0x10')]);}else{logger[_0x070e('0xa')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4d99a9,_0x070e('0xc'));_0x39ae78(_0x79b211['result']['message']);}})[_0x070e('0x11')](function(_0x307a97){logger[_0x070e('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4d99a9,_0x307a97);_0x5532c4(_0x307a97);});});}
\ No newline at end of file
+var _0xf176=['util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x2ef9d5,_0x33c9b3){var _0x40b3d7=function(_0x30e2fa){while(--_0x30e2fa){_0x2ef9d5['push'](_0x2ef9d5['shift']());}};_0x40b3d7(++_0x33c9b3);}(_0xf176,0xd1));var _0x6f17=function(_0x4bb677,_0x236d3b){_0x4bb677=_0x4bb677-0x0;var _0x5c8b3e=_0xf176[_0x4bb677];return _0x5c8b3e;};'use strict';var _=require(_0x6f17('0x0'));var util=require(_0x6f17('0x1'));var moment=require('moment');var BPromise=require(_0x6f17('0x2'));var rs=require(_0x6f17('0x3'));var fs=require('fs');var Redis=require(_0x6f17('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6f17('0x5'))('rpc');var config=require(_0x6f17('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6f17('0x7')][_0x6f17('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x119321,_0x33c344,_0x2f2cbe){return new BPromise(function(_0x4f49f9,_0x2d063c){return client[_0x6f17('0x9')](_0x119321,_0x2f2cbe)[_0x6f17('0xa')](function(_0x304b73){logger[_0x6f17('0xb')](_0x6f17('0xc'),_0x33c344,_0x6f17('0xd'));logger[_0x6f17('0xe')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x33c344,_0x6f17('0xd'),JSON[_0x6f17('0xf')](_0x304b73));if(_0x304b73[_0x6f17('0x10')]){if(_0x304b73['error'][_0x6f17('0x11')]===0x1f4){logger[_0x6f17('0x10')](_0x6f17('0xc'),_0x33c344,_0x304b73[_0x6f17('0x10')]['message']);return _0x2d063c(_0x304b73[_0x6f17('0x10')]['message']);}logger[_0x6f17('0x10')](_0x6f17('0xc'),_0x33c344,_0x304b73[_0x6f17('0x10')][_0x6f17('0x12')]);return _0x4f49f9(_0x304b73[_0x6f17('0x10')][_0x6f17('0x12')]);}else{logger[_0x6f17('0xb')](_0x6f17('0xc'),_0x33c344,'request\x20sent');_0x4f49f9(_0x304b73[_0x6f17('0x13')][_0x6f17('0x12')]);}})[_0x6f17('0x14')](function(_0x498c28){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x33c344,_0x498c28);_0x2d063c(_0x498c28);});});}
\ No newline at end of file
index 9b600b2..2a7004d 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(_0x6ba2ac,_0x3f505b){var _0x212fa0=function(_0x1a76e1){while(--_0x1a76e1){_0x6ba2ac['push'](_0x6ba2ac['shift']());}};_0x212fa0(++_0x3f505b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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(_0x3217dc,_0x3a23d6){var _0x55d4a7=function(_0x45003e){while(--_0x45003e){_0x3217dc['push'](_0x3217dc['shift']());}};_0x55d4a7(++_0x3a23d6);}(_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['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 8c96b9a..85b47a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab3a=['name','TEXT','sequelize','exports','STRING'];(function(_0xd03adb,_0x441f64){var _0x202bb3=function(_0x4a10f3){while(--_0x4a10f3){_0xd03adb['push'](_0xd03adb['shift']());}};_0x202bb3(++_0x441f64);}(_0xab3a,0x1d3));var _0xaab3=function(_0x353313,_0x5c3686){_0x353313=_0x353313-0x0;var _0x4cb750=_0xab3a[_0x353313];return _0x4cb750;};'use strict';var Sequelize=require(_0xaab3('0x0'));module[_0xaab3('0x1')]={'name':{'type':Sequelize[_0xaab3('0x2')],'allowNull':![],'unique':_0xaab3('0x3')},'table':{'type':Sequelize[_0xaab3('0x2')]},'metric':{'type':Sequelize[_0xaab3('0x4')]},'description':{'type':Sequelize[_0xaab3('0x2')]}};
\ No newline at end of file
+var _0x1339=['TEXT','STRING','name'];(function(_0xdeefbd,_0x9e1b3d){var _0x4ff63f=function(_0x4b51f9){while(--_0x4b51f9){_0xdeefbd['push'](_0xdeefbd['shift']());}};_0x4ff63f(++_0x9e1b3d);}(_0x1339,0x1ed));var _0x9133=function(_0x46883d,_0x49af46){_0x46883d=_0x46883d-0x0;var _0x2fdf2d=_0x1339[_0x46883d];return _0x2fdf2d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9133('0x0')],'allowNull':![],'unique':_0x9133('0x1')},'table':{'type':Sequelize[_0x9133('0x0')]},'metric':{'type':Sequelize[_0x9133('0x2')]},'description':{'type':Sequelize[_0x9133('0x0')]}};
\ No newline at end of file
index 34d272a..9670f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','keys','length','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','params','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring'];(function(_0x5b109d,_0x597212){var _0x54b0af=function(_0x80da62){while(--_0x80da62){_0x5b109d['push'](_0x5b109d['shift']());}};_0x54b0af(++_0x597212);}(_0xe14b,0x93));var _0xbe14=function(_0x3006a6,_0x46e382){_0x3006a6=_0x3006a6-0x0;var _0x1f63f8=_0xe14b[_0x3006a6];return _0x1f63f8;};'use strict';var emlformat=require(_0xbe14('0x0'));var rimraf=require(_0xbe14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbe14('0x2'));var moment=require(_0xbe14('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbe14('0x4'));var util=require('util');var path=require('path');var sox=require(_0xbe14('0x5'));var csv=require(_0xbe14('0x6'));var ejs=require(_0xbe14('0x7'));var fs=require('fs');var fs_extra=require(_0xbe14('0x8'));var _=require(_0xbe14('0x9'));var squel=require(_0xbe14('0xa'));var crypto=require(_0xbe14('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbe14('0xc'));var Papa=require(_0xbe14('0xd'));var Redis=require(_0xbe14('0xe'));var authService=require(_0xbe14('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe14('0x10'));var logger=require(_0xbe14('0x11'))('api');var utils=require(_0xbe14('0x12'));var config=require(_0xbe14('0x13'));var licenseUtil=require(_0xbe14('0x14'));var db=require(_0xbe14('0x15'))['db'];function respondWithStatusCode(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xcc;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0x16')](_0x3b898d);}return _0x27792f[_0xbe14('0x17')](_0x3b898d)[_0xbe14('0x18')]();};}function respondWithResult(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0xc8;return function(_0x813399){if(_0x813399){return _0x1e4826['status'](_0x33fd54)['json'](_0x813399);}};}function respondWithFilteredResult(_0x3f58f5,_0x3dc4a9){return function(_0xf4ac9){if(_0xf4ac9){var _0x37ce4e=typeof _0x3dc4a9['offset']===_0xbe14('0x19')&&typeof _0x3dc4a9[_0xbe14('0x1a')]===_0xbe14('0x19');var _0x123ede=_0xf4ac9[_0xbe14('0x1b')];var _0x29ab73=_0x37ce4e?0x0:_0x3dc4a9[_0xbe14('0x1c')];var _0x5ea1f8=_0x37ce4e?_0xf4ac9[_0xbe14('0x1b')]:_0x3dc4a9[_0xbe14('0x1c')]+_0x3dc4a9[_0xbe14('0x1a')];var _0x433459;if(_0x5ea1f8>=_0x123ede){_0x5ea1f8=_0x123ede;_0x433459=0xc8;}else{_0x433459=0xce;}_0x3f58f5[_0xbe14('0x17')](_0x433459);return _0x3f58f5[_0xbe14('0x1d')]('Content-Range',_0x29ab73+'-'+_0x5ea1f8+'/'+_0x123ede)[_0xbe14('0x1e')](_0xf4ac9);}return null;};}function patchUpdates(_0x4a1bbd){return function(_0x417c8d){try{jsonpatch[_0xbe14('0x1f')](_0x417c8d,_0x4a1bbd,!![]);}catch(_0x188ec4){return BPromise['reject'](_0x188ec4);}return _0x417c8d[_0xbe14('0x20')]();};}function saveUpdates(_0x56d845,_0x3c1c85){return function(_0x56e80c){if(_0x56e80c){return _0x56e80c[_0xbe14('0x21')](_0x56d845)['then'](function(_0x274018){return _0x274018;});}return null;};}function removeEntity(_0x3d3608,_0x505dbd){return function(_0x2da350){if(_0x2da350){return _0x2da350['destroy']()[_0xbe14('0x22')](function(){var _0x4851f8=_0x2da350[_0xbe14('0x23')]({'plain':!![]});var _0x5fa043=_0xbe14('0x24');return db[_0xbe14('0x25')][_0xbe14('0x26')]({'where':{'type':_0x5fa043,'resourceId':_0x4851f8['id']}})[_0xbe14('0x22')](function(){return _0x2da350;});})['then'](function(){_0x3d3608[_0xbe14('0x17')](0xcc)[_0xbe14('0x18')]();});}};}function handleEntityNotFound(_0x391556,_0x169369){return function(_0x5dd475){if(!_0x5dd475){_0x391556[_0xbe14('0x16')](0x194);}return _0x5dd475;};}function handleError(_0x29fc64,_0x59bf34){_0x59bf34=_0x59bf34||0x1f4;return function(_0x3c3613){logger[_0xbe14('0x27')](_0x3c3613[_0xbe14('0x28')]);if(_0x3c3613[_0xbe14('0x29')]){delete _0x3c3613[_0xbe14('0x29')];}_0x29fc64[_0xbe14('0x17')](_0x59bf34)[_0xbe14('0x2a')](_0x3c3613);};}exports[_0xbe14('0x2b')]=function(_0x4168c8,_0x16a159){var _0x40538f={},_0x3bf43c={},_0x39dc0a={'count':0x0,'rows':[]};var _0x10ae36=_[_0xbe14('0x2c')](db[_0xbe14('0x2d')][_0xbe14('0x2e')],function(_0x2ff48e){return{'name':_0x2ff48e[_0xbe14('0x2f')],'type':_0x2ff48e[_0xbe14('0x30')]['key']};});_0x3bf43c[_0xbe14('0x31')]=_['map'](_0x10ae36,'name');_0x3bf43c[_0xbe14('0x32')]=_['keys'](_0x4168c8[_0xbe14('0x32')]);_0x3bf43c[_0xbe14('0x33')]=_['intersection'](_0x3bf43c['model'],_0x3bf43c['query']);_0x40538f[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x3bf43c['model'],qs[_0xbe14('0x36')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x36')]));_0x40538f[_0xbe14('0x34')]=_0x40538f[_0xbe14('0x34')]['length']?_0x40538f['attributes']:_0x3bf43c[_0xbe14('0x31')];if(!_0x4168c8['query']['hasOwnProperty']('nolimit')){_0x40538f[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1a')]);_0x40538f[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x1c')]);}_0x40538f[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x4168c8[_0xbe14('0x32')][_0xbe14('0x38')]);_0x40538f['where']=qs['filters'](_[_0xbe14('0x39')](_0x4168c8[_0xbe14('0x32')],_0x3bf43c[_0xbe14('0x33')]),_0x10ae36);if(_0x4168c8['query'][_0xbe14('0x3a')]){_0x40538f[_0xbe14('0x3b')]=_[_0xbe14('0x3c')](_0x40538f[_0xbe14('0x3b')],{'$or':_[_0xbe14('0x2c')](_0x10ae36,function(_0x25ee1f){if(_0x25ee1f[_0xbe14('0x30')]!==_0xbe14('0x3d')){var _0x1b2608={};_0x1b2608[_0x25ee1f['name']]={'$like':'%'+_0x4168c8[_0xbe14('0x32')][_0xbe14('0x3a')]+'%'};return _0x1b2608;}})});}_0x40538f=_[_0xbe14('0x3c')]({},_0x40538f,_0x4168c8[_0xbe14('0x3e')]);var _0x3287b9={'where':_0x40538f[_0xbe14('0x3b')]};return db['AnalyticMetric'][_0xbe14('0x1b')](_0x3287b9)[_0xbe14('0x22')](function(_0x1220c9){_0x39dc0a[_0xbe14('0x1b')]=_0x1220c9;if(_0x4168c8['query']['includeAll']){_0x40538f[_0xbe14('0x3f')]=[{'all':!![]}];}return db[_0xbe14('0x2d')][_0xbe14('0x40')](_0x40538f);})['then'](function(_0x5d5318){_0x39dc0a[_0xbe14('0x41')]=_0x5d5318;return _0x39dc0a;})['then'](respondWithFilteredResult(_0x16a159,_0x40538f))['catch'](handleError(_0x16a159,null));};exports[_0xbe14('0x42')]=function(_0x1f0355,_0x8216c3){var _0x5051e4={'raw':!![],'where':{'id':_0x1f0355['params']['id']}},_0x558525={};_0x558525[_0xbe14('0x31')]=_[_0xbe14('0x43')](db[_0xbe14('0x2d')]['rawAttributes']);_0x558525[_0xbe14('0x32')]=_[_0xbe14('0x43')](_0x1f0355[_0xbe14('0x32')]);_0x558525[_0xbe14('0x33')]=_['intersection'](_0x558525['model'],_0x558525[_0xbe14('0x32')]);_0x5051e4[_0xbe14('0x34')]=_[_0xbe14('0x35')](_0x558525[_0xbe14('0x31')],qs[_0xbe14('0x36')](_0x1f0355['query']['fields']));_0x5051e4[_0xbe14('0x34')]=_0x5051e4[_0xbe14('0x34')][_0xbe14('0x44')]?_0x5051e4[_0xbe14('0x34')]:_0x558525['model'];if(_0x1f0355[_0xbe14('0x32')][_0xbe14('0x45')]){_0x5051e4['include']=[{'all':!![]}];}_0x5051e4=_[_0xbe14('0x3c')]({},_0x5051e4,_0x1f0355[_0xbe14('0x3e')]);return db[_0xbe14('0x2d')][_0xbe14('0x46')](_0x5051e4)['then'](handleEntityNotFound(_0x8216c3,null))['then'](respondWithResult(_0x8216c3,null))[_0xbe14('0x47')](handleError(_0x8216c3,null));};exports[_0xbe14('0x48')]=function(_0x4a1a37,_0x5acf90){return db[_0xbe14('0x2d')][_0xbe14('0x48')](_0x4a1a37[_0xbe14('0x49')],{})[_0xbe14('0x22')](function(_0xdbc6e1){var _0xd04fd5=_0x4a1a37[_0xbe14('0x4a')]['get']({'plain':!![]});if(!_0xd04fd5)throw new Error(_0xbe14('0x4b'));if(_0xd04fd5[_0xbe14('0x4c')]===_0xbe14('0x4a')){var _0x22b1f8=_0xdbc6e1[_0xbe14('0x23')]({'plain':!![]});var _0x494c32=_0xbe14('0x24');return db[_0xbe14('0x4d')][_0xbe14('0x46')]({'where':{'name':_0x494c32,'userProfileId':_0xd04fd5[_0xbe14('0x4e')]},'raw':!![]})[_0xbe14('0x22')](function(_0x2dbeb1){if(_0x2dbeb1&&_0x2dbeb1['autoAssociation']===0x0){return db['UserProfileResource'][_0xbe14('0x48')]({'name':_0x22b1f8[_0xbe14('0x29')],'resourceId':_0x22b1f8['id'],'type':_0x2dbeb1[_0xbe14('0x29')],'sectionId':_0x2dbeb1['id']},{})['then'](function(){return _0xdbc6e1;});}else{return _0xdbc6e1;}})['catch'](function(_0x44fe0d){logger[_0xbe14('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44fe0d);throw _0x44fe0d;});}return _0xdbc6e1;})[_0xbe14('0x22')](respondWithResult(_0x5acf90,0xc9))[_0xbe14('0x47')](handleError(_0x5acf90,null));};exports['update']=function(_0x28f995,_0x4a40d2){if(_0x28f995[_0xbe14('0x49')]['id']){delete _0x28f995[_0xbe14('0x49')]['id'];}return db[_0xbe14('0x2d')]['find']({'where':{'id':_0x28f995[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4a40d2,null))['then'](saveUpdates(_0x28f995[_0xbe14('0x49')],null))[_0xbe14('0x22')](respondWithResult(_0x4a40d2,null))[_0xbe14('0x47')](handleError(_0x4a40d2,null));};exports[_0xbe14('0x26')]=function(_0x49322f,_0x4f06a3){return db[_0xbe14('0x2d')][_0xbe14('0x46')]({'where':{'id':_0x49322f[_0xbe14('0x4f')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4f06a3,null))[_0xbe14('0x22')](removeEntity(_0x4f06a3,null))[_0xbe14('0x47')](handleError(_0x4f06a3,null));};
\ No newline at end of file
+var _0x3e74=['status','set','Content-Range','apply','save','update','then','destroy','get','Metrics','sendStatus','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','params','rawAttributes','length','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count'];(function(_0x74612,_0x430ca8){var _0xfb3bc3=function(_0xeb487e){while(--_0xeb487e){_0x74612['push'](_0x74612['shift']());}};_0xfb3bc3(++_0x430ca8);}(_0x3e74,0x175));var _0x43e7=function(_0x24a869,_0x2e7548){_0x24a869=_0x24a869-0x0;var _0x5218d0=_0x3e74[_0x24a869];return _0x5218d0;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){var _0x4b2b9f=_0x4c9df3[_0x43e7('0x23')]({'plain':!![]});var _0x4ca5cf=_0x43e7('0x24');return db['UserProfileResource'][_0x43e7('0x22')]({'where':{'type':_0x4ca5cf,'resourceId':_0x4b2b9f['id']}})[_0x43e7('0x21')](function(){return _0x4c9df3;});})[_0x43e7('0x21')](function(){_0x454359[_0x43e7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b7b3,_0x805b54){return function(_0x501551){if(!_0x501551){_0x52b7b3[_0x43e7('0x25')](0x194);}return _0x501551;};}function handleError(_0x40dc8f,_0x3565cf){_0x3565cf=_0x3565cf||0x1f4;return function(_0xb1fc63){logger['error'](_0xb1fc63[_0x43e7('0x26')]);if(_0xb1fc63[_0x43e7('0x27')]){delete _0xb1fc63[_0x43e7('0x27')];}_0x40dc8f[_0x43e7('0x1b')](_0x3565cf)[_0x43e7('0x28')](_0xb1fc63);};}exports[_0x43e7('0x29')]=function(_0x2b85a5,_0x31b2a6){var _0x3bf475={},_0x35dbcd={},_0x17df44={'count':0x0,'rows':[]};var _0x19725a=_[_0x43e7('0x2a')](db[_0x43e7('0x2b')]['rawAttributes'],function(_0x238321){return{'name':_0x238321[_0x43e7('0x2c')],'type':_0x238321[_0x43e7('0x2d')][_0x43e7('0x2e')]};});_0x35dbcd[_0x43e7('0x2f')]=_['map'](_0x19725a,_0x43e7('0x27'));_0x35dbcd[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x2b85a5[_0x43e7('0x30')]);_0x35dbcd['filters']=_['intersection'](_0x35dbcd['model'],_0x35dbcd[_0x43e7('0x30')]);_0x3bf475[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0x35dbcd[_0x43e7('0x2f')],qs[_0x43e7('0x34')](_0x2b85a5[_0x43e7('0x30')]['fields']));_0x3bf475['attributes']=_0x3bf475['attributes']['length']?_0x3bf475['attributes']:_0x35dbcd['model'];if(!_0x2b85a5['query'][_0x43e7('0x35')]('nolimit')){_0x3bf475[_0x43e7('0x18')]=qs[_0x43e7('0x18')](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x18')]);_0x3bf475[_0x43e7('0x19')]=qs[_0x43e7('0x19')](_0x2b85a5[_0x43e7('0x30')]['offset']);}_0x3bf475['order']=qs['sort'](_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x36')]);_0x3bf475[_0x43e7('0x37')]=qs[_0x43e7('0x38')](_[_0x43e7('0x39')](_0x2b85a5[_0x43e7('0x30')],_0x35dbcd[_0x43e7('0x38')]),_0x19725a);if(_0x2b85a5[_0x43e7('0x30')]['filter']){_0x3bf475[_0x43e7('0x37')]=_[_0x43e7('0x3a')](_0x3bf475['where'],{'$or':_[_0x43e7('0x2a')](_0x19725a,function(_0x4c0c7a){if(_0x4c0c7a[_0x43e7('0x2d')]!==_0x43e7('0x3b')){var _0x1c6f45={};_0x1c6f45[_0x4c0c7a[_0x43e7('0x27')]]={'$like':'%'+_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x3c')]+'%'};return _0x1c6f45;}})});}_0x3bf475=_['merge']({},_0x3bf475,_0x2b85a5['options']);var _0x30dfa9={'where':_0x3bf475[_0x43e7('0x37')]};return db[_0x43e7('0x2b')][_0x43e7('0x1a')](_0x30dfa9)[_0x43e7('0x21')](function(_0x4a4a85){_0x17df44[_0x43e7('0x1a')]=_0x4a4a85;if(_0x2b85a5[_0x43e7('0x30')]['includeAll']){_0x3bf475[_0x43e7('0x3d')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x43e7('0x3e')](_0x3bf475);})['then'](function(_0x3d81ae){_0x17df44[_0x43e7('0x3f')]=_0x3d81ae;return _0x17df44;})[_0x43e7('0x21')](respondWithFilteredResult(_0x31b2a6,_0x3bf475))[_0x43e7('0x40')](handleError(_0x31b2a6,null));};exports['show']=function(_0x47d6a1,_0x103393){var _0x40c509={'raw':!![],'where':{'id':_0x47d6a1[_0x43e7('0x41')]['id']}},_0xe979b5={};_0xe979b5['model']=_['keys'](db['AnalyticMetric'][_0x43e7('0x42')]);_0xe979b5['query']=_[_0x43e7('0x31')](_0x47d6a1['query']);_0xe979b5['filters']=_[_0x43e7('0x33')](_0xe979b5['model'],_0xe979b5[_0x43e7('0x30')]);_0x40c509[_0x43e7('0x32')]=_[_0x43e7('0x33')](_0xe979b5[_0x43e7('0x2f')],qs['fields'](_0x47d6a1[_0x43e7('0x30')][_0x43e7('0x34')]));_0x40c509[_0x43e7('0x32')]=_0x40c509[_0x43e7('0x32')][_0x43e7('0x43')]?_0x40c509[_0x43e7('0x32')]:_0xe979b5['model'];if(_0x47d6a1['query'][_0x43e7('0x44')]){_0x40c509[_0x43e7('0x3d')]=[{'all':!![]}];}_0x40c509=_[_0x43e7('0x3a')]({},_0x40c509,_0x47d6a1['options']);return db['AnalyticMetric']['find'](_0x40c509)[_0x43e7('0x21')](handleEntityNotFound(_0x103393,null))[_0x43e7('0x21')](respondWithResult(_0x103393,null))['catch'](handleError(_0x103393,null));};exports[_0x43e7('0x45')]=function(_0x47686e,_0x3c96fe){return db['AnalyticMetric']['create'](_0x47686e['body'],{})['then'](function(_0x214e7e){var _0xe955fc=_0x47686e['user'][_0x43e7('0x23')]({'plain':!![]});if(!_0xe955fc)throw new Error(_0x43e7('0x46'));if(_0xe955fc[_0x43e7('0x47')]===_0x43e7('0x48')){var _0x4a0ce5=_0x214e7e[_0x43e7('0x23')]({'plain':!![]});var _0x483f20='Metrics';return db[_0x43e7('0x49')][_0x43e7('0x4a')]({'where':{'name':_0x483f20,'userProfileId':_0xe955fc[_0x43e7('0x4b')]},'raw':!![]})[_0x43e7('0x21')](function(_0x13503c){if(_0x13503c&&_0x13503c[_0x43e7('0x4c')]===0x0){return db[_0x43e7('0x4d')][_0x43e7('0x45')]({'name':_0x4a0ce5[_0x43e7('0x27')],'resourceId':_0x4a0ce5['id'],'type':_0x13503c[_0x43e7('0x27')],'sectionId':_0x13503c['id']},{})['then'](function(){return _0x214e7e;});}else{return _0x214e7e;}})[_0x43e7('0x40')](function(_0x46c910){logger['error'](_0x43e7('0x4e'),_0x46c910);throw _0x46c910;});}return _0x214e7e;})['then'](respondWithResult(_0x3c96fe,0xc9))[_0x43e7('0x40')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x20')]=function(_0x34e2ec,_0x1f561f){if(_0x34e2ec[_0x43e7('0x4f')]['id']){delete _0x34e2ec['body']['id'];}return db['AnalyticMetric'][_0x43e7('0x4a')]({'where':{'id':_0x34e2ec[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x1f561f,null))[_0x43e7('0x21')](saveUpdates(_0x34e2ec[_0x43e7('0x4f')],null))[_0x43e7('0x21')](respondWithResult(_0x1f561f,null))[_0x43e7('0x40')](handleError(_0x1f561f,null));};exports[_0x43e7('0x22')]=function(_0x26d86c,_0x24e758){return db[_0x43e7('0x2b')]['find']({'where':{'id':_0x26d86c[_0x43e7('0x41')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x24e758,null))['then'](removeEntity(_0x24e758,null))[_0x43e7('0x40')](handleError(_0x24e758,null));};
\ No newline at end of file
index 144f9e9..1c4d824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102b=['AnalyticMetric','analytics_metrics','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','define'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x102b,0x1be));var _0xb102=function(_0x2a2cce,_0x2bfdf2){_0x2a2cce=_0x2a2cce-0x0;var _0x4f8783=_0x102b[_0x2a2cce];return _0x4f8783;};'use strict';var _=require('lodash');var util=require(_0xb102('0x0'));var logger=require('../../config/logger')(_0xb102('0x1'));var moment=require(_0xb102('0x2'));var BPromise=require(_0xb102('0x3'));var rp=require(_0xb102('0x4'));var fs=require('fs');var path=require(_0xb102('0x5'));var rimraf=require(_0xb102('0x6'));var config=require(_0xb102('0x7'));var attributes=require(_0xb102('0x8'));module['exports']=function(_0x3325b7,_0x370baa){return _0x3325b7[_0xb102('0x9')](_0xb102('0xa'),attributes,{'tableName':_0xb102('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96f1=['./analyticMetric.attributes','exports','define','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5d3541,_0x12c104){var _0x2af028=function(_0x27002d){while(--_0x27002d){_0x5d3541['push'](_0x5d3541['shift']());}};_0x2af028(++_0x12c104);}(_0x96f1,0x19c));var _0x196f=function(_0x4e96a4,_0x207e09){_0x4e96a4=_0x4e96a4-0x0;var _0x1beafa=_0x96f1[_0x4e96a4];return _0x1beafa;};'use strict';var _=require(_0x196f('0x0'));var util=require(_0x196f('0x1'));var logger=require(_0x196f('0x2'))(_0x196f('0x3'));var moment=require(_0x196f('0x4'));var BPromise=require(_0x196f('0x5'));var rp=require(_0x196f('0x6'));var fs=require('fs');var path=require(_0x196f('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x196f('0x8'));module[_0x196f('0x9')]=function(_0x267906,_0x1f401c){return _0x267906[_0x196f('0xa')]('AnalyticMetric',attributes,{'tableName':_0x196f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 964c57f..25b2630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x451f=['error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s'];(function(_0x75ce5b,_0x3b582f){var _0x22195e=function(_0x166668){while(--_0x166668){_0x75ce5b['push'](_0x75ce5b['shift']());}};_0x22195e(++_0x3b582f);}(_0x451f,0x1cc));var _0xf451=function(_0x2c4027,_0x4043c9){_0x2c4027=_0x2c4027-0x0;var _0x4cf424=_0x451f[_0x2c4027];return _0x4cf424;};'use strict';var _=require(_0xf451('0x0'));var util=require('util');var moment=require(_0xf451('0x1'));var BPromise=require(_0xf451('0x2'));var rs=require(_0xf451('0x3'));var fs=require('fs');var Redis=require(_0xf451('0x4'));var db=require(_0xf451('0x5'))['db'];var utils=require(_0xf451('0x6'));var logger=require(_0xf451('0x7'))(_0xf451('0x8'));var config=require(_0xf451('0x9'));var jayson=require(_0xf451('0xa'));var client=jayson[_0xf451('0xb')][_0xf451('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x52c23,_0x3b5f4e,_0x1e27ef){return new BPromise(function(_0x22a866,_0x4335e7){return client[_0xf451('0xd')](_0x52c23,_0x1e27ef)[_0xf451('0xe')](function(_0x587c69){logger[_0xf451('0xf')](_0xf451('0x10'),_0x3b5f4e,_0xf451('0x11'));logger[_0xf451('0x12')](_0xf451('0x13'),_0x3b5f4e,_0xf451('0x11'),JSON['stringify'](_0x587c69));if(_0x587c69[_0xf451('0x14')]){if(_0x587c69[_0xf451('0x14')][_0xf451('0x15')]===0x1f4){logger[_0xf451('0x14')](_0xf451('0x10'),_0x3b5f4e,_0x587c69['error'][_0xf451('0x16')]);return _0x4335e7(_0x587c69[_0xf451('0x14')]['message']);}logger[_0xf451('0x14')]('AnalyticMetric,\x20%s,\x20%s',_0x3b5f4e,_0x587c69['error'][_0xf451('0x16')]);return _0x22a866(_0x587c69['error']['message']);}else{logger[_0xf451('0xf')](_0xf451('0x10'),_0x3b5f4e,_0xf451('0x11'));_0x22a866(_0x587c69[_0xf451('0x17')][_0xf451('0x16')]);}})['catch'](function(_0x282a97){logger[_0xf451('0x14')](_0xf451('0x10'),_0x3b5f4e,_0x282a97);_0x4335e7(_0x282a97);});});}
\ No newline at end of file
+var _0x1c92=['catch','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','request','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3fd4b3,_0x17d3ef){var _0x2979a3=function(_0x4fa13c){while(--_0x4fa13c){_0x3fd4b3['push'](_0x3fd4b3['shift']());}};_0x2979a3(++_0x17d3ef);}(_0x1c92,0xac));var _0x21c9=function(_0x22a81b,_0x51edff){_0x22a81b=_0x22a81b-0x0;var _0x4540aa=_0x1c92[_0x22a81b];return _0x4540aa;};'use strict';var _=require('lodash');var util=require(_0x21c9('0x0'));var moment=require('moment');var BPromise=require(_0x21c9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x21c9('0x2'));var db=require(_0x21c9('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x21c9('0x4'))(_0x21c9('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x21c9('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2925ef,_0x2b4003,_0x11b044){return new BPromise(function(_0xcb4df7,_0x358ef3){return client[_0x21c9('0x7')](_0x2925ef,_0x11b044)['then'](function(_0x2e92f2){logger[_0x21c9('0x8')](_0x21c9('0x9'),_0x2b4003,_0x21c9('0xa'));logger[_0x21c9('0xb')](_0x21c9('0xc'),_0x2b4003,_0x21c9('0xa'),JSON[_0x21c9('0xd')](_0x2e92f2));if(_0x2e92f2[_0x21c9('0xe')]){if(_0x2e92f2[_0x21c9('0xe')][_0x21c9('0xf')]===0x1f4){logger[_0x21c9('0xe')](_0x21c9('0x9'),_0x2b4003,_0x2e92f2[_0x21c9('0xe')]['message']);return _0x358ef3(_0x2e92f2['error'][_0x21c9('0x10')]);}logger['error'](_0x21c9('0x9'),_0x2b4003,_0x2e92f2['error'][_0x21c9('0x10')]);return _0xcb4df7(_0x2e92f2[_0x21c9('0xe')][_0x21c9('0x10')]);}else{logger['info'](_0x21c9('0x9'),_0x2b4003,'request\x20sent');_0xcb4df7(_0x2e92f2[_0x21c9('0x11')]['message']);}})[_0x21c9('0x12')](function(_0x51b72b){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x2b4003,_0x51b72b);_0x358ef3(_0x51b72b);});});}
\ No newline at end of file
index 12d63d4..470dcc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3079=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','./analyticMetric.controller','get','isAuthenticated','index','show','create','/:id','update','destroy','exports'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x3079,0x110));var _0x9307=function(_0x10677f,_0x188ba1){_0x10677f=_0x10677f-0x0;var _0x5cb8b9=_0x3079[_0x10677f];return _0x5cb8b9;};'use strict';var multer=require('multer');var util=require(_0x9307('0x0'));var path=require(_0x9307('0x1'));var timeout=require(_0x9307('0x2'));var express=require(_0x9307('0x3'));var router=express['Router']();var fs_extra=require(_0x9307('0x4'));var auth=require(_0x9307('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9307('0x6'));router[_0x9307('0x7')]('/',auth[_0x9307('0x8')](),controller[_0x9307('0x9')]);router[_0x9307('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x9307('0xa')]);router['post']('/',auth[_0x9307('0x8')](),controller[_0x9307('0xb')]);router['put'](_0x9307('0xc'),auth[_0x9307('0x8')](),controller[_0x9307('0xd')]);router['delete']('/:id',auth[_0x9307('0x8')](),controller[_0x9307('0xe')]);module[_0x9307('0xf')]=router;
\ No newline at end of file
+var _0xa6bb=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','/:id','isAuthenticated','create','put','delete','exports'];(function(_0x9f7990,_0x2d1a1b){var _0x1afd75=function(_0x44cd10){while(--_0x44cd10){_0x9f7990['push'](_0x9f7990['shift']());}};_0x1afd75(++_0x2d1a1b);}(_0xa6bb,0x12c));var _0xba6b=function(_0x2a0a8b,_0x41950a){_0x2a0a8b=_0x2a0a8b-0x0;var _0xf8389c=_0xa6bb[_0x2a0a8b];return _0xf8389c;};'use strict';var multer=require('multer');var util=require(_0xba6b('0x0'));var path=require(_0xba6b('0x1'));var timeout=require(_0xba6b('0x2'));var express=require(_0xba6b('0x3'));var router=express[_0xba6b('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xba6b('0x5'));var config=require(_0xba6b('0x6'));var controller=require(_0xba6b('0x7'));router[_0xba6b('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xba6b('0x8')](_0xba6b('0x9'),auth[_0xba6b('0xa')](),controller['show']);router['post']('/',auth[_0xba6b('0xa')](),controller[_0xba6b('0xb')]);router[_0xba6b('0xc')](_0xba6b('0x9'),auth[_0xba6b('0xa')](),controller['update']);router[_0xba6b('0xd')](_0xba6b('0x9'),auth[_0xba6b('0xa')](),controller['destroy']);module[_0xba6b('0xe')]=router;
\ No newline at end of file
index 73600f4..eae2948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c58=['TEXT','sequelize'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x4c58,0xed));var _0x84c5=function(_0x1aa277,_0x1edd4f){_0x1aa277=_0x1aa277-0x0;var _0x2f21e5=_0x4c58[_0x1aa277];return _0x2f21e5;};'use strict';var Sequelize=require(_0x84c5('0x0'));module['exports']={'tree':{'type':Sequelize[_0x84c5('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb121=['TEXT'];(function(_0x4edc12,_0x244c5f){var _0x3564a7=function(_0x161218){while(--_0x161218){_0x4edc12['push'](_0x4edc12['shift']());}};_0x3564a7(++_0x244c5f);}(_0xb121,0xd7));var _0x1b12=function(_0xca9de6,_0x4c8c14){_0xca9de6=_0xca9de6-0x0;var _0x59ac5a=_0xb121[_0xca9de6];return _0x59ac5a;};'use strict';var Sequelize=require('sequelize');module['exports']={'tree':{'type':Sequelize[_0x1b12('0x0')],'allowNull':![]}};
\ No newline at end of file
index 0811b1d..74fe7df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3488=['destroy','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then'];(function(_0x152363,_0x59654a){var _0x3092e5=function(_0x406359){while(--_0x406359){_0x152363['push'](_0x152363['shift']());}};_0x3092e5(++_0x59654a);}(_0x3488,0x73));var _0x8348=function(_0x166301,_0x5798af){_0x166301=_0x166301-0x0;var _0x492147=_0x3488[_0x166301];return _0x492147;};'use strict';var emlformat=require(_0x8348('0x0'));var rimraf=require(_0x8348('0x1'));var zipdir=require(_0x8348('0x2'));var jsonpatch=require(_0x8348('0x3'));var rp=require(_0x8348('0x4'));var moment=require(_0x8348('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8348('0x6'));var util=require(_0x8348('0x7'));var path=require('path');var sox=require(_0x8348('0x8'));var csv=require(_0x8348('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8348('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8348('0xb'));var jsforce=require(_0x8348('0xc'));var deskjs=require(_0x8348('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8348('0xe'));var Papa=require(_0x8348('0xf'));var Redis=require(_0x8348('0x10'));var authService=require(_0x8348('0x11'));var qs=require(_0x8348('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8348('0x13'));var logger=require(_0x8348('0x14'))(_0x8348('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8348('0x16'))['db'];function respondWithStatusCode(_0x261a68,_0x57c206){_0x57c206=_0x57c206||0xcc;return function(_0x38edde){if(_0x38edde){return _0x261a68[_0x8348('0x17')](_0x57c206);}return _0x261a68['status'](_0x57c206)[_0x8348('0x18')]();};}function respondWithResult(_0x325668,_0x50e73f){_0x50e73f=_0x50e73f||0xc8;return function(_0x521169){if(_0x521169){return _0x325668[_0x8348('0x19')](_0x50e73f)[_0x8348('0x1a')](_0x521169);}};}function respondWithFilteredResult(_0x53b4ca,_0x2b503a){return function(_0x4d2c50){if(_0x4d2c50){var _0x213432=typeof _0x2b503a[_0x8348('0x1b')]==='undefined'&&typeof _0x2b503a[_0x8348('0x1c')]==='undefined';var _0x43be2f=_0x4d2c50[_0x8348('0x1d')];var _0x2c5640=_0x213432?0x0:_0x2b503a['offset'];var _0x1843ac=_0x213432?_0x4d2c50[_0x8348('0x1d')]:_0x2b503a[_0x8348('0x1b')]+_0x2b503a[_0x8348('0x1c')];var _0x119e6e;if(_0x1843ac>=_0x43be2f){_0x1843ac=_0x43be2f;_0x119e6e=0xc8;}else{_0x119e6e=0xce;}_0x53b4ca['status'](_0x119e6e);return _0x53b4ca[_0x8348('0x1e')](_0x8348('0x1f'),_0x2c5640+'-'+_0x1843ac+'/'+_0x43be2f)[_0x8348('0x1a')](_0x4d2c50);}return null;};}function patchUpdates(_0x319375){return function(_0x58d5c7){try{jsonpatch[_0x8348('0x20')](_0x58d5c7,_0x319375,!![]);}catch(_0x249ac6){return BPromise[_0x8348('0x21')](_0x249ac6);}return _0x58d5c7[_0x8348('0x22')]();};}function saveUpdates(_0x26a210,_0x392d60){return function(_0x15edde){if(_0x15edde){return _0x15edde[_0x8348('0x23')](_0x26a210)[_0x8348('0x24')](function(_0x29d727){return _0x29d727;});}return null;};}function removeEntity(_0x48716d,_0x3436b9){return function(_0x3ae14e){if(_0x3ae14e){return _0x3ae14e[_0x8348('0x25')]()[_0x8348('0x24')](function(){_0x48716d[_0x8348('0x19')](0xcc)[_0x8348('0x18')]();});}};}function handleEntityNotFound(_0x214e3e,_0x263a3b){return function(_0xe1b0e5){if(!_0xe1b0e5){_0x214e3e[_0x8348('0x17')](0x194);}return _0xe1b0e5;};}function handleError(_0x284513,_0x3d7567){_0x3d7567=_0x3d7567||0x1f4;return function(_0x1924fe){logger[_0x8348('0x26')](_0x1924fe[_0x8348('0x27')]);if(_0x1924fe[_0x8348('0x28')]){delete _0x1924fe[_0x8348('0x28')];}_0x284513[_0x8348('0x19')](_0x3d7567)[_0x8348('0x29')](_0x1924fe);};}exports[_0x8348('0x2a')]=function(_0x1a0003,_0x2b2af3){var _0x3bf113={},_0x56deee={},_0xcfd1c0={'count':0x0,'rows':[]};var _0x1447f5=_[_0x8348('0x2b')](db[_0x8348('0x2c')][_0x8348('0x2d')],function(_0x2c6d77){return{'name':_0x2c6d77[_0x8348('0x2e')],'type':_0x2c6d77[_0x8348('0x2f')]['key']};});_0x56deee[_0x8348('0x30')]=_[_0x8348('0x2b')](_0x1447f5,_0x8348('0x28'));_0x56deee[_0x8348('0x31')]=_[_0x8348('0x32')](_0x1a0003['query']);_0x56deee[_0x8348('0x33')]=_['intersection'](_0x56deee[_0x8348('0x30')],_0x56deee['query']);_0x3bf113['attributes']=_[_0x8348('0x34')](_0x56deee['model'],qs[_0x8348('0x35')](_0x1a0003[_0x8348('0x31')][_0x8348('0x35')]));_0x3bf113[_0x8348('0x36')]=_0x3bf113['attributes'][_0x8348('0x37')]?_0x3bf113[_0x8348('0x36')]:_0x56deee[_0x8348('0x30')];if(!_0x1a0003[_0x8348('0x31')][_0x8348('0x38')](_0x8348('0x39'))){_0x3bf113[_0x8348('0x1c')]=qs['limit'](_0x1a0003['query']['limit']);_0x3bf113[_0x8348('0x1b')]=qs[_0x8348('0x1b')](_0x1a0003[_0x8348('0x31')][_0x8348('0x1b')]);}_0x3bf113[_0x8348('0x3a')]=qs['sort'](_0x1a0003[_0x8348('0x31')][_0x8348('0x3b')]);_0x3bf113['where']=qs[_0x8348('0x33')](_[_0x8348('0x3c')](_0x1a0003[_0x8348('0x31')],_0x56deee[_0x8348('0x33')]),_0x1447f5);if(_0x1a0003[_0x8348('0x31')][_0x8348('0x3d')]){_0x3bf113['where']=_[_0x8348('0x3e')](_0x3bf113[_0x8348('0x3f')],{'$or':_[_0x8348('0x2b')](_0x1447f5,function(_0x2844a7){if(_0x2844a7['type']!==_0x8348('0x40')){var _0x6dbe4e={};_0x6dbe4e[_0x2844a7[_0x8348('0x28')]]={'$like':'%'+_0x1a0003['query']['filter']+'%'};return _0x6dbe4e;}})});}_0x3bf113=_[_0x8348('0x3e')]({},_0x3bf113,_0x1a0003[_0x8348('0x41')]);var _0x442334={'where':_0x3bf113['where']};return db[_0x8348('0x2c')][_0x8348('0x1d')](_0x442334)[_0x8348('0x24')](function(_0x183933){_0xcfd1c0[_0x8348('0x1d')]=_0x183933;if(_0x1a0003[_0x8348('0x31')][_0x8348('0x42')]){_0x3bf113[_0x8348('0x43')]=[{'all':!![]}];}return db[_0x8348('0x2c')][_0x8348('0x44')](_0x3bf113);})[_0x8348('0x24')](function(_0xd0cb67){_0xcfd1c0[_0x8348('0x45')]=_0xd0cb67;return _0xcfd1c0;})[_0x8348('0x24')](respondWithFilteredResult(_0x2b2af3,_0x3bf113))['catch'](handleError(_0x2b2af3,null));};exports[_0x8348('0x46')]=function(_0x587c1c,_0x52ec74){var _0x40f754={'raw':!![],'where':{'id':_0x587c1c['params']['id']}},_0x51e76b={};_0x51e76b[_0x8348('0x30')]=_[_0x8348('0x32')](db[_0x8348('0x2c')][_0x8348('0x2d')]);_0x51e76b[_0x8348('0x31')]=_[_0x8348('0x32')](_0x587c1c['query']);_0x51e76b[_0x8348('0x33')]=_[_0x8348('0x34')](_0x51e76b[_0x8348('0x30')],_0x51e76b['query']);_0x40f754[_0x8348('0x36')]=_[_0x8348('0x34')](_0x51e76b[_0x8348('0x30')],qs[_0x8348('0x35')](_0x587c1c[_0x8348('0x31')]['fields']));_0x40f754[_0x8348('0x36')]=_0x40f754[_0x8348('0x36')][_0x8348('0x37')]?_0x40f754['attributes']:_0x51e76b[_0x8348('0x30')];if(_0x587c1c[_0x8348('0x31')][_0x8348('0x42')]){_0x40f754['include']=[{'all':!![]}];}_0x40f754=_['merge']({},_0x40f754,_0x587c1c['options']);return db[_0x8348('0x2c')][_0x8348('0x47')](_0x40f754)[_0x8348('0x24')](handleEntityNotFound(_0x52ec74,null))[_0x8348('0x24')](respondWithResult(_0x52ec74,null))[_0x8348('0x48')](handleError(_0x52ec74,null));};exports[_0x8348('0x49')]=function(_0x109e6d,_0x2987bd){return db[_0x8348('0x2c')][_0x8348('0x49')](_0x109e6d['body'],{})[_0x8348('0x24')](respondWithResult(_0x2987bd,0xc9))[_0x8348('0x48')](handleError(_0x2987bd,null));};exports[_0x8348('0x23')]=function(_0xb1dcf2,_0x51d502){if(_0xb1dcf2[_0x8348('0x4a')]['id']){delete _0xb1dcf2[_0x8348('0x4a')]['id'];}return db['AnalyticTreeReport'][_0x8348('0x47')]({'where':{'id':_0xb1dcf2[_0x8348('0x4b')]['id']}})[_0x8348('0x24')](handleEntityNotFound(_0x51d502,null))['then'](saveUpdates(_0xb1dcf2['body'],null))[_0x8348('0x24')](respondWithResult(_0x51d502,null))['catch'](handleError(_0x51d502,null));};exports[_0x8348('0x25')]=function(_0x1516ec,_0x90bd59){return db[_0x8348('0x2c')][_0x8348('0x47')]({'where':{'id':_0x1516ec[_0x8348('0x4b')]['id']}})[_0x8348('0x24')](handleEntityNotFound(_0x90bd59,null))['then'](removeEntity(_0x90bd59,null))[_0x8348('0x48')](handleError(_0x90bd59,null));};
\ No newline at end of file
+var _0xfa9f=['crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','AnalyticTreeReport','include','findAll','catch','show','params','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel'];(function(_0x54ea3c,_0x1b5d55){var _0x41df8c=function(_0xb4e2c3){while(--_0xb4e2c3){_0x54ea3c['push'](_0x54ea3c['shift']());}};_0x41df8c(++_0x1b5d55);}(_0xfa9f,0x8a));var _0xffa9=function(_0x49ca6b,_0x3ba842){_0x49ca6b=_0x49ca6b-0x0;var _0x1d957f=_0xfa9f[_0x49ca6b];return _0x1d957f;};'use strict';var emlformat=require(_0xffa9('0x0'));var rimraf=require(_0xffa9('0x1'));var zipdir=require(_0xffa9('0x2'));var jsonpatch=require(_0xffa9('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xffa9('0x4'));var Mustache=require(_0xffa9('0x5'));var util=require(_0xffa9('0x6'));var path=require('path');var sox=require(_0xffa9('0x7'));var csv=require('to-csv');var ejs=require(_0xffa9('0x8'));var fs=require('fs');var fs_extra=require(_0xffa9('0x9'));var _=require(_0xffa9('0xa'));var squel=require(_0xffa9('0xb'));var crypto=require(_0xffa9('0xc'));var jsforce=require(_0xffa9('0xd'));var deskjs=require(_0xffa9('0xe'));var toCsv=require(_0xffa9('0xf'));var querystring=require(_0xffa9('0x10'));var Papa=require(_0xffa9('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xffa9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xffa9('0x13'));var logger=require(_0xffa9('0x14'))(_0xffa9('0x15'));var utils=require(_0xffa9('0x16'));var config=require(_0xffa9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xffa9('0x18'))['db'];function respondWithStatusCode(_0x472008,_0x3c8f55){_0x3c8f55=_0x3c8f55||0xcc;return function(_0x47cbea){if(_0x47cbea){return _0x472008[_0xffa9('0x19')](_0x3c8f55);}return _0x472008[_0xffa9('0x1a')](_0x3c8f55)[_0xffa9('0x1b')]();};}function respondWithResult(_0x67c226,_0x43d9d7){_0x43d9d7=_0x43d9d7||0xc8;return function(_0x59bed6){if(_0x59bed6){return _0x67c226[_0xffa9('0x1a')](_0x43d9d7)[_0xffa9('0x1c')](_0x59bed6);}};}function respondWithFilteredResult(_0x162d52,_0x12f1ea){return function(_0x258558){if(_0x258558){var _0x2ffc4a=typeof _0x12f1ea[_0xffa9('0x1d')]===_0xffa9('0x1e')&&typeof _0x12f1ea['limit']===_0xffa9('0x1e');var _0x4626b4=_0x258558[_0xffa9('0x1f')];var _0xc37f05=_0x2ffc4a?0x0:_0x12f1ea[_0xffa9('0x1d')];var _0x31618b=_0x2ffc4a?_0x258558[_0xffa9('0x1f')]:_0x12f1ea['offset']+_0x12f1ea[_0xffa9('0x20')];var _0x524a28;if(_0x31618b>=_0x4626b4){_0x31618b=_0x4626b4;_0x524a28=0xc8;}else{_0x524a28=0xce;}_0x162d52[_0xffa9('0x1a')](_0x524a28);return _0x162d52[_0xffa9('0x21')](_0xffa9('0x22'),_0xc37f05+'-'+_0x31618b+'/'+_0x4626b4)[_0xffa9('0x1c')](_0x258558);}return null;};}function patchUpdates(_0x14b0b9){return function(_0x5c1f10){try{jsonpatch[_0xffa9('0x23')](_0x5c1f10,_0x14b0b9,!![]);}catch(_0x460bd3){return BPromise[_0xffa9('0x24')](_0x460bd3);}return _0x5c1f10[_0xffa9('0x25')]();};}function saveUpdates(_0x16d89c,_0x19bb22){return function(_0x1b720c){if(_0x1b720c){return _0x1b720c[_0xffa9('0x26')](_0x16d89c)[_0xffa9('0x27')](function(_0x27174d){return _0x27174d;});}return null;};}function removeEntity(_0x1724ca,_0x42d126){return function(_0x5a64e3){if(_0x5a64e3){return _0x5a64e3[_0xffa9('0x28')]()['then'](function(){_0x1724ca['status'](0xcc)[_0xffa9('0x1b')]();});}};}function handleEntityNotFound(_0x47266c,_0x488a1a){return function(_0x440197){if(!_0x440197){_0x47266c['sendStatus'](0x194);}return _0x440197;};}function handleError(_0x90d01b,_0x58512a){_0x58512a=_0x58512a||0x1f4;return function(_0x4ffec5){logger['error'](_0x4ffec5[_0xffa9('0x29')]);if(_0x4ffec5[_0xffa9('0x2a')]){delete _0x4ffec5[_0xffa9('0x2a')];}_0x90d01b[_0xffa9('0x1a')](_0x58512a)[_0xffa9('0x2b')](_0x4ffec5);};}exports[_0xffa9('0x2c')]=function(_0x3e1193,_0x4c34dd){var _0x533738={},_0x317c4a={},_0x2da7fb={'count':0x0,'rows':[]};var _0x50e786=_[_0xffa9('0x2d')](db['AnalyticTreeReport'][_0xffa9('0x2e')],function(_0x59f0e3){return{'name':_0x59f0e3[_0xffa9('0x2f')],'type':_0x59f0e3[_0xffa9('0x30')]['key']};});_0x317c4a['model']=_[_0xffa9('0x2d')](_0x50e786,'name');_0x317c4a[_0xffa9('0x31')]=_[_0xffa9('0x32')](_0x3e1193[_0xffa9('0x31')]);_0x317c4a[_0xffa9('0x33')]=_[_0xffa9('0x34')](_0x317c4a[_0xffa9('0x35')],_0x317c4a['query']);_0x533738[_0xffa9('0x36')]=_['intersection'](_0x317c4a[_0xffa9('0x35')],qs[_0xffa9('0x37')](_0x3e1193[_0xffa9('0x31')][_0xffa9('0x37')]));_0x533738['attributes']=_0x533738['attributes'][_0xffa9('0x38')]?_0x533738[_0xffa9('0x36')]:_0x317c4a[_0xffa9('0x35')];if(!_0x3e1193[_0xffa9('0x31')][_0xffa9('0x39')]('nolimit')){_0x533738[_0xffa9('0x20')]=qs['limit'](_0x3e1193[_0xffa9('0x31')][_0xffa9('0x20')]);_0x533738['offset']=qs[_0xffa9('0x1d')](_0x3e1193[_0xffa9('0x31')]['offset']);}_0x533738[_0xffa9('0x3a')]=qs[_0xffa9('0x3b')](_0x3e1193[_0xffa9('0x31')][_0xffa9('0x3b')]);_0x533738[_0xffa9('0x3c')]=qs[_0xffa9('0x33')](_[_0xffa9('0x3d')](_0x3e1193[_0xffa9('0x31')],_0x317c4a[_0xffa9('0x33')]),_0x50e786);if(_0x3e1193[_0xffa9('0x31')][_0xffa9('0x3e')]){_0x533738[_0xffa9('0x3c')]=_[_0xffa9('0x3f')](_0x533738['where'],{'$or':_[_0xffa9('0x2d')](_0x50e786,function(_0x24e5a2){if(_0x24e5a2[_0xffa9('0x30')]!=='VIRTUAL'){var _0x334e0e={};_0x334e0e[_0x24e5a2[_0xffa9('0x2a')]]={'$like':'%'+_0x3e1193['query'][_0xffa9('0x3e')]+'%'};return _0x334e0e;}})});}_0x533738=_[_0xffa9('0x3f')]({},_0x533738,_0x3e1193[_0xffa9('0x40')]);var _0x4aa083={'where':_0x533738[_0xffa9('0x3c')]};return db[_0xffa9('0x41')][_0xffa9('0x1f')](_0x4aa083)['then'](function(_0x1d6585){_0x2da7fb[_0xffa9('0x1f')]=_0x1d6585;if(_0x3e1193[_0xffa9('0x31')]['includeAll']){_0x533738[_0xffa9('0x42')]=[{'all':!![]}];}return db[_0xffa9('0x41')][_0xffa9('0x43')](_0x533738);})[_0xffa9('0x27')](function(_0xb8f0f4){_0x2da7fb['rows']=_0xb8f0f4;return _0x2da7fb;})['then'](respondWithFilteredResult(_0x4c34dd,_0x533738))[_0xffa9('0x44')](handleError(_0x4c34dd,null));};exports[_0xffa9('0x45')]=function(_0x39dd76,_0xf6fa4b){var _0x15237b={'raw':!![],'where':{'id':_0x39dd76[_0xffa9('0x46')]['id']}},_0x9b3c13={};_0x9b3c13[_0xffa9('0x35')]=_['keys'](db['AnalyticTreeReport']['rawAttributes']);_0x9b3c13[_0xffa9('0x31')]=_['keys'](_0x39dd76[_0xffa9('0x31')]);_0x9b3c13[_0xffa9('0x33')]=_['intersection'](_0x9b3c13[_0xffa9('0x35')],_0x9b3c13['query']);_0x15237b['attributes']=_['intersection'](_0x9b3c13[_0xffa9('0x35')],qs['fields'](_0x39dd76[_0xffa9('0x31')][_0xffa9('0x37')]));_0x15237b[_0xffa9('0x36')]=_0x15237b[_0xffa9('0x36')][_0xffa9('0x38')]?_0x15237b[_0xffa9('0x36')]:_0x9b3c13[_0xffa9('0x35')];if(_0x39dd76[_0xffa9('0x31')][_0xffa9('0x47')]){_0x15237b[_0xffa9('0x42')]=[{'all':!![]}];}_0x15237b=_[_0xffa9('0x3f')]({},_0x15237b,_0x39dd76[_0xffa9('0x40')]);return db[_0xffa9('0x41')][_0xffa9('0x48')](_0x15237b)['then'](handleEntityNotFound(_0xf6fa4b,null))[_0xffa9('0x27')](respondWithResult(_0xf6fa4b,null))['catch'](handleError(_0xf6fa4b,null));};exports[_0xffa9('0x49')]=function(_0x4566da,_0x5cc73a){return db[_0xffa9('0x41')][_0xffa9('0x49')](_0x4566da[_0xffa9('0x4a')],{})[_0xffa9('0x27')](respondWithResult(_0x5cc73a,0xc9))['catch'](handleError(_0x5cc73a,null));};exports[_0xffa9('0x26')]=function(_0xf95e7,_0x27f9f7){if(_0xf95e7[_0xffa9('0x4a')]['id']){delete _0xf95e7[_0xffa9('0x4a')]['id'];}return db[_0xffa9('0x41')][_0xffa9('0x48')]({'where':{'id':_0xf95e7[_0xffa9('0x46')]['id']}})[_0xffa9('0x27')](handleEntityNotFound(_0x27f9f7,null))[_0xffa9('0x27')](saveUpdates(_0xf95e7[_0xffa9('0x4a')],null))[_0xffa9('0x27')](respondWithResult(_0x27f9f7,null))[_0xffa9('0x44')](handleError(_0x27f9f7,null));};exports[_0xffa9('0x28')]=function(_0x5dc8c0,_0x35d31c){return db[_0xffa9('0x41')][_0xffa9('0x48')]({'where':{'id':_0x5dc8c0[_0xffa9('0x46')]['id']}})[_0xffa9('0x27')](handleEntityNotFound(_0x35d31c,null))['then'](removeEntity(_0x35d31c,null))[_0xffa9('0x44')](handleError(_0x35d31c,null));};
\ No newline at end of file
index e758030..9b4aa58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe966=['analytics_report_trees','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe966,0xf1));var _0x6e96=function(_0x25599a,_0x4024a5){_0x25599a=_0x25599a-0x0;var _0x5b8d3d=_0xe966[_0x25599a];return _0x5b8d3d;};'use strict';var _=require(_0x6e96('0x0'));var util=require(_0x6e96('0x1'));var logger=require('../../config/logger')(_0x6e96('0x2'));var moment=require('moment');var BPromise=require(_0x6e96('0x3'));var rp=require(_0x6e96('0x4'));var fs=require('fs');var path=require(_0x6e96('0x5'));var rimraf=require(_0x6e96('0x6'));var config=require(_0x6e96('0x7'));var attributes=require(_0x6e96('0x8'));module[_0x6e96('0x9')]=function(_0x1f8d91,_0x48bf30){return _0x1f8d91[_0x6e96('0xa')]('AnalyticTreeReport',attributes,{'tableName':_0x6e96('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53b6=['analytics_report_trees','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','AnalyticTreeReport'];(function(_0x504c65,_0x49e05b){var _0x5dab2d=function(_0x3e5d22){while(--_0x3e5d22){_0x504c65['push'](_0x504c65['shift']());}};_0x5dab2d(++_0x49e05b);}(_0x53b6,0xd9));var _0x653b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x53b6[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x653b('0x0'));var util=require(_0x653b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x653b('0x2'));var BPromise=require(_0x653b('0x3'));var rp=require(_0x653b('0x4'));var fs=require('fs');var path=require(_0x653b('0x5'));var rimraf=require(_0x653b('0x6'));var config=require(_0x653b('0x7'));var attributes=require(_0x653b('0x8'));module[_0x653b('0x9')]=function(_0x12c18d,_0x4cedb0){return _0x12c18d['define'](_0x653b('0xa'),attributes,{'tableName':_0x653b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f8de6df..3f53215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x132a9a,_0x4da489){var _0x9dd201=function(_0x20435d){while(--_0x20435d){_0x132a9a['push'](_0x132a9a['shift']());}};_0x9dd201(++_0x4da489);}(_0xadb5,0xad));var _0x5adb=function(_0x27dcd0,_0x2d3b51){_0x27dcd0=_0x27dcd0-0x0;var _0x48fecc=_0xadb5[_0x27dcd0];return _0x48fecc;};'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
+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(_0x5cc71f,_0x4f6f52){var _0x4e1b52=function(_0x1bea3b){while(--_0x1bea3b){_0x5cc71f['push'](_0x5cc71f['shift']());}};_0x4e1b52(++_0x4f6f52);}(_0xadb5,0xad));var _0x5adb=function(_0x176ba4,_0x429cf4){_0x176ba4=_0x176ba4-0x0;var _0x49bf47=_0xadb5[_0x176ba4];return _0x49bf47;};'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 28cdf3f..403bbf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7066=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','show','post','create','put','update','delete','exports'];(function(_0x12acaa,_0x5ed722){var _0xe2b239=function(_0x3cc144){while(--_0x3cc144){_0x12acaa['push'](_0x12acaa['shift']());}};_0xe2b239(++_0x5ed722);}(_0x7066,0x1cb));var _0x6706=function(_0x2c1b8b,_0x3d5268){_0x2c1b8b=_0x2c1b8b-0x0;var _0x4e6585=_0x7066[_0x2c1b8b];return _0x4e6585;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6706('0x0'));var timeout=require('connect-timeout');var express=require(_0x6706('0x1'));var router=express[_0x6706('0x2')]();var fs_extra=require(_0x6706('0x3'));var auth=require(_0x6706('0x4'));var interaction=require(_0x6706('0x5'));var config=require(_0x6706('0x6'));var controller=require(_0x6706('0x7'));router[_0x6706('0x8')]('/',auth[_0x6706('0x9')](),controller['index']);router[_0x6706('0x8')]('/:id',auth[_0x6706('0x9')](),controller[_0x6706('0xa')]);router[_0x6706('0xb')]('/',auth[_0x6706('0x9')](),controller[_0x6706('0xc')]);router[_0x6706('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x6706('0xe')]);router[_0x6706('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x6706('0x10')]=router;
\ No newline at end of file
+var _0x1a7f=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','exports','multer','path'];(function(_0x2690d8,_0x3f3f72){var _0x48f1ca=function(_0x52c015){while(--_0x52c015){_0x2690d8['push'](_0x2690d8['shift']());}};_0x48f1ca(++_0x3f3f72);}(_0x1a7f,0x154));var _0xf1a7=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x1a7f[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0xf1a7('0x0'));var util=require('util');var path=require(_0xf1a7('0x1'));var timeout=require(_0xf1a7('0x2'));var express=require(_0xf1a7('0x3'));var router=express['Router']();var fs_extra=require(_0xf1a7('0x4'));var auth=require(_0xf1a7('0x5'));var interaction=require(_0xf1a7('0x6'));var config=require(_0xf1a7('0x7'));var controller=require(_0xf1a7('0x8'));router[_0xf1a7('0x9')]('/',auth[_0xf1a7('0xa')](),controller[_0xf1a7('0xb')]);router[_0xf1a7('0x9')](_0xf1a7('0xc'),auth[_0xf1a7('0xa')](),controller[_0xf1a7('0xd')]);router[_0xf1a7('0xe')]('/',auth[_0xf1a7('0xa')](),controller[_0xf1a7('0xf')]);router['put'](_0xf1a7('0xc'),auth['isAuthenticated'](),controller[_0xf1a7('0x10')]);router[_0xf1a7('0x11')](_0xf1a7('0xc'),auth[_0xf1a7('0xa')](),controller['destroy']);module[_0xf1a7('0x12')]=router;
\ No newline at end of file
index 2312e49..f7ce4c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6ce=['STRING','sequelize','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd6ce,0x127));var _0xed6c=function(_0x1aaf0b,_0x46149c){_0x1aaf0b=_0x1aaf0b-0x0;var _0x6b51d9=_0xd6ce[_0x1aaf0b];return _0x6b51d9;};'use strict';var Sequelize=require(_0xed6c('0x0'));module[_0xed6c('0x1')]={'name':{'type':Sequelize[_0xed6c('0x2')]},'basename':{'type':Sequelize[_0xed6c('0x2')]},'type':{'type':Sequelize[_0xed6c('0x2')]}};
\ No newline at end of file
+var _0x62c8=['STRING'];(function(_0x2c1dcd,_0x350452){var _0x158ce5=function(_0x5c1c57){while(--_0x5c1c57){_0x2c1dcd['push'](_0x2c1dcd['shift']());}};_0x158ce5(++_0x350452);}(_0x62c8,0x1ad));var _0x862c=function(_0x124c5b,_0x380041){_0x124c5b=_0x124c5b-0x0;var _0x10efa7=_0x62c8[_0x124c5b];return _0x10efa7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x862c('0x0')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 73ae1ab..f34939a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb3=['offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','Attachment','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','findAll','rows','catch','params','find','clone','options','get','updatedAt','body','createdAt','create','file','originalname','basename','filename','mimetype','download','ChatOfflineMessageId','root','server/files/attachments/','join','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x2d62f3,_0x368d1a){var _0x433499=function(_0x5b323f){while(--_0x5b323f){_0x2d62f3['push'](_0x2d62f3['shift']());}};_0x433499(++_0x368d1a);}(_0xabb3,0x196));var _0x3abb=function(_0x247f36,_0x333e5b){_0x247f36=_0x247f36-0x0;var _0x4e5abd=_0xabb3[_0x247f36];return _0x4e5abd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3abb('0x0'));var rp=require('request-promise');var moment=require(_0x3abb('0x1'));var BPromise=require(_0x3abb('0x2'));var Mustache=require(_0x3abb('0x3'));var util=require(_0x3abb('0x4'));var path=require(_0x3abb('0x5'));var sox=require('sox');var csv=require(_0x3abb('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3abb('0x7'));var squel=require(_0x3abb('0x8'));var crypto=require('crypto');var jsforce=require(_0x3abb('0x9'));var deskjs=require(_0x3abb('0xa'));var toCsv=require('to-csv');var querystring=require(_0x3abb('0xb'));var Papa=require(_0x3abb('0xc'));var Redis=require(_0x3abb('0xd'));var authService=require(_0x3abb('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x3abb('0xf'));var hardwareService=require(_0x3abb('0x10'));var logger=require(_0x3abb('0x11'))('api');var utils=require(_0x3abb('0x12'));var config=require(_0x3abb('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3abb('0x14'))['db'];function respondWithStatusCode(_0x33802c,_0x58719c){_0x58719c=_0x58719c||0xcc;return function(_0x1861dc){if(_0x1861dc){return _0x33802c[_0x3abb('0x15')](_0x58719c);}return _0x33802c[_0x3abb('0x16')](_0x58719c)[_0x3abb('0x17')]();};}function respondWithResult(_0x522c5b,_0x199585){_0x199585=_0x199585||0xc8;return function(_0x7ba1e8){if(_0x7ba1e8){return _0x522c5b['status'](_0x199585)['json'](_0x7ba1e8);}};}function respondWithFilteredResult(_0x496458,_0x221dda){return function(_0x162bf2){if(_0x162bf2){var _0x31eccb=typeof _0x221dda[_0x3abb('0x18')]===_0x3abb('0x19')&&typeof _0x221dda[_0x3abb('0x1a')]===_0x3abb('0x19');var _0x355367=_0x162bf2[_0x3abb('0x1b')];var _0x2f3d38=_0x31eccb?0x0:_0x221dda['offset'];var _0x372528=_0x31eccb?_0x162bf2[_0x3abb('0x1b')]:_0x221dda[_0x3abb('0x18')]+_0x221dda['limit'];var _0x4ea628;if(_0x372528>=_0x355367){_0x372528=_0x355367;_0x4ea628=0xc8;}else{_0x4ea628=0xce;}_0x496458['status'](_0x4ea628);return _0x496458[_0x3abb('0x1c')](_0x3abb('0x1d'),_0x2f3d38+'-'+_0x372528+'/'+_0x355367)[_0x3abb('0x1e')](_0x162bf2);}return null;};}function patchUpdates(_0x39ad12){return function(_0x28a29f){try{jsonpatch[_0x3abb('0x1f')](_0x28a29f,_0x39ad12,!![]);}catch(_0x21583e){return BPromise[_0x3abb('0x20')](_0x21583e);}return _0x28a29f[_0x3abb('0x21')]();};}function saveUpdates(_0xd43824,_0x17055f){return function(_0x17511f){if(_0x17511f){return _0x17511f[_0x3abb('0x22')](_0xd43824)[_0x3abb('0x23')](function(_0x593972){return _0x593972;});}return null;};}function removeEntity(_0x24927d,_0x5796fe){return function(_0x5e56f6){if(_0x5e56f6){return _0x5e56f6[_0x3abb('0x24')]()[_0x3abb('0x23')](function(){_0x24927d['status'](0xcc)[_0x3abb('0x17')]();});}};}function handleEntityNotFound(_0x404361,_0x814a7){return function(_0x376fa8){if(!_0x376fa8){_0x404361[_0x3abb('0x15')](0x194);}return _0x376fa8;};}function handleError(_0x30b19e,_0x2ad390){_0x2ad390=_0x2ad390||0x1f4;return function(_0x343355){logger[_0x3abb('0x25')](_0x343355[_0x3abb('0x26')]);if(_0x343355[_0x3abb('0x27')]){delete _0x343355[_0x3abb('0x27')];}_0x30b19e[_0x3abb('0x16')](_0x2ad390)['send'](_0x343355);};}exports[_0x3abb('0x28')]=function(_0x28ea3a,_0x3b74ae){var _0x1607c7={},_0x55ef89={},_0x5917c4={'count':0x0,'rows':[]};var _0x4c3d35=_[_0x3abb('0x29')](db[_0x3abb('0x2a')][_0x3abb('0x2b')],function(_0x515672){return{'name':_0x515672[_0x3abb('0x2c')],'type':_0x515672[_0x3abb('0x2d')]['key']};});_0x55ef89['model']=_[_0x3abb('0x29')](_0x4c3d35,_0x3abb('0x27'));_0x55ef89[_0x3abb('0x2e')]=_[_0x3abb('0x2f')](_0x28ea3a[_0x3abb('0x2e')]);_0x55ef89[_0x3abb('0x30')]=_[_0x3abb('0x31')](_0x55ef89['model'],_0x55ef89[_0x3abb('0x2e')]);_0x1607c7[_0x3abb('0x32')]=_[_0x3abb('0x31')](_0x55ef89['model'],qs[_0x3abb('0x33')](_0x28ea3a[_0x3abb('0x2e')][_0x3abb('0x33')]));_0x1607c7['attributes']=_0x1607c7[_0x3abb('0x32')][_0x3abb('0x34')]?_0x1607c7[_0x3abb('0x32')]:_0x55ef89[_0x3abb('0x35')];if(!_0x28ea3a[_0x3abb('0x2e')][_0x3abb('0x36')](_0x3abb('0x37'))){_0x1607c7['limit']=qs[_0x3abb('0x1a')](_0x28ea3a['query'][_0x3abb('0x1a')]);_0x1607c7[_0x3abb('0x18')]=qs[_0x3abb('0x18')](_0x28ea3a['query']['offset']);}_0x1607c7[_0x3abb('0x38')]=qs[_0x3abb('0x39')](_0x28ea3a['query'][_0x3abb('0x39')]);_0x1607c7['where']=qs[_0x3abb('0x30')](_[_0x3abb('0x3a')](_0x28ea3a[_0x3abb('0x2e')],_0x55ef89[_0x3abb('0x30')]),_0x4c3d35);if(_0x28ea3a[_0x3abb('0x2e')][_0x3abb('0x3b')]){_0x1607c7[_0x3abb('0x3c')]=_[_0x3abb('0x3d')](_0x1607c7[_0x3abb('0x3c')],{'$or':_[_0x3abb('0x29')](_0x4c3d35,function(_0x4da829){if(_0x4da829[_0x3abb('0x2d')]!=='VIRTUAL'){var _0x35595d={};_0x35595d[_0x4da829[_0x3abb('0x27')]]={'$like':'%'+_0x28ea3a[_0x3abb('0x2e')][_0x3abb('0x3b')]+'%'};return _0x35595d;}})});}_0x1607c7=_[_0x3abb('0x3d')]({},_0x1607c7,_0x28ea3a['options']);var _0x36ecfd={'where':_0x1607c7['where']};return db[_0x3abb('0x2a')][_0x3abb('0x1b')](_0x36ecfd)[_0x3abb('0x23')](function(_0x16df96){_0x5917c4[_0x3abb('0x1b')]=_0x16df96;if(_0x28ea3a['query'][_0x3abb('0x3e')]){_0x1607c7[_0x3abb('0x3f')]=[{'all':!![]}];}return db[_0x3abb('0x2a')][_0x3abb('0x40')](_0x1607c7);})[_0x3abb('0x23')](function(_0x3eff05){_0x5917c4[_0x3abb('0x41')]=_0x3eff05;return _0x5917c4;})['then'](respondWithFilteredResult(_0x3b74ae,_0x1607c7))[_0x3abb('0x42')](handleError(_0x3b74ae,null));};exports['show']=function(_0xe03bfe,_0x5ec310){var _0x48f7f3={'raw':!![],'where':{'id':_0xe03bfe[_0x3abb('0x43')]['id']}},_0x48adc4={};_0x48adc4['model']=_[_0x3abb('0x2f')](db[_0x3abb('0x2a')][_0x3abb('0x2b')]);_0x48adc4[_0x3abb('0x2e')]=_['keys'](_0xe03bfe['query']);_0x48adc4['filters']=_[_0x3abb('0x31')](_0x48adc4[_0x3abb('0x35')],_0x48adc4[_0x3abb('0x2e')]);_0x48f7f3[_0x3abb('0x32')]=_['intersection'](_0x48adc4[_0x3abb('0x35')],qs[_0x3abb('0x33')](_0xe03bfe[_0x3abb('0x2e')]['fields']));_0x48f7f3['attributes']=_0x48f7f3[_0x3abb('0x32')][_0x3abb('0x34')]?_0x48f7f3['attributes']:_0x48adc4[_0x3abb('0x35')];if(_0xe03bfe['query']['includeAll']){_0x48f7f3[_0x3abb('0x3f')]=[{'all':!![]}];}_0x48f7f3=_[_0x3abb('0x3d')]({},_0x48f7f3,_0xe03bfe['options']);return db[_0x3abb('0x2a')][_0x3abb('0x44')](_0x48f7f3)[_0x3abb('0x23')](handleEntityNotFound(_0x5ec310,null))['then'](respondWithResult(_0x5ec310,null))[_0x3abb('0x42')](handleError(_0x5ec310,null));};exports[_0x3abb('0x45')]=function(_0x4aa55d,_0x21c028){var _0x5b7f95={'where':{'id':_0x4aa55d['params']['id']}},_0x2beda7={};_0x2beda7[_0x3abb('0x35')]=_[_0x3abb('0x2f')](db['Attachment'][_0x3abb('0x2b')]);_0x5b7f95['attributes']=_[_0x3abb('0x31')](_0x2beda7['model'],qs[_0x3abb('0x33')](_0x4aa55d[_0x3abb('0x2e')]['fields']));_0x5b7f95[_0x3abb('0x32')]=_0x5b7f95['attributes'][_0x3abb('0x34')]?_0x5b7f95['attributes']:_0x2beda7[_0x3abb('0x35')];if(_0x4aa55d[_0x3abb('0x2e')][_0x3abb('0x3e')]){_0x5b7f95[_0x3abb('0x3f')]=[{'all':!![]}];}_0x5b7f95=_[_0x3abb('0x3d')]({},_0x5b7f95,_0x4aa55d[_0x3abb('0x46')]);return db[_0x3abb('0x2a')][_0x3abb('0x44')](_0x5b7f95)[_0x3abb('0x23')](handleEntityNotFound(_0x21c028,null))[_0x3abb('0x23')](function(_0x9ea20a){if(_0x9ea20a){var _0x4d6cea=_0x9ea20a[_0x3abb('0x47')]({'plain':!![]});_0x4d6cea=qs['omit'](_0x4d6cea,['id','createdAt',_0x3abb('0x48')]);_0x4aa55d[_0x3abb('0x49')]=_['omit'](_0x4aa55d[_0x3abb('0x49')],['id',_0x3abb('0x4a'),_0x3abb('0x48')]);return db[_0x3abb('0x2a')][_0x3abb('0x4b')](_[_0x3abb('0x3d')](_0x4d6cea,_0x4aa55d['body']),{'include':_0x4aa55d[_0x3abb('0x2e')][_0x3abb('0x3e')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x21c028,0xc9))['catch'](handleError(_0x21c028,null));};exports[_0x3abb('0x22')]=function(_0x4bc8bf,_0x29c4eb){if(_0x4bc8bf[_0x3abb('0x49')]['id']){delete _0x4bc8bf[_0x3abb('0x49')]['id'];}return db['Attachment'][_0x3abb('0x44')]({'where':{'id':_0x4bc8bf[_0x3abb('0x43')]['id']}})[_0x3abb('0x23')](handleEntityNotFound(_0x29c4eb,null))[_0x3abb('0x23')](saveUpdates(_0x4bc8bf[_0x3abb('0x49')],null))['then'](respondWithResult(_0x29c4eb,null))['catch'](handleError(_0x29c4eb,null));};exports[_0x3abb('0x24')]=function(_0x36ef54,_0x4e82b7){return db[_0x3abb('0x2a')][_0x3abb('0x44')]({'where':{'id':_0x36ef54[_0x3abb('0x43')]['id']}})['then'](handleEntityNotFound(_0x4e82b7,null))[_0x3abb('0x23')](removeEntity(_0x4e82b7,null))[_0x3abb('0x42')](handleError(_0x4e82b7,null));};exports[_0x3abb('0x4b')]=function(_0x2cdef6,_0x4dc10f,_0x12a909){_0x2cdef6[_0x3abb('0x49')][_0x3abb('0x27')]=_0x2cdef6[_0x3abb('0x4c')][_0x3abb('0x4d')];_0x2cdef6[_0x3abb('0x49')][_0x3abb('0x4e')]=_0x2cdef6['file'][_0x3abb('0x4f')];_0x2cdef6[_0x3abb('0x49')][_0x3abb('0x2d')]=_0x2cdef6[_0x3abb('0x4c')][_0x3abb('0x50')];return db[_0x3abb('0x2a')]['create'](_0x2cdef6[_0x3abb('0x49')])[_0x3abb('0x23')](respondWithResult(_0x4dc10f,0xc9))[_0x3abb('0x42')](handleError(_0x4dc10f,null));};exports[_0x3abb('0x51')]=function(_0x54a7c4,_0x391d6f,_0x1bce63){return db['Attachment']['findOne']({'where':{'id':_0x54a7c4[_0x3abb('0x43')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x391d6f,null))[_0x3abb('0x23')](function(_0x3a3d91){if(_0x3a3d91){var _0x47617c=_0x3a3d91[_0x3abb('0x52')]!==null;var _0x3f39a6=path['join'](config[_0x3abb('0x53')],_0x3abb('0x54'));if(_0x47617c){_0x3f39a6=path[_0x3abb('0x55')](_0x3f39a6,'offline-chat/');}var _0x4d58ed=path['join'](_0x3f39a6,_0x3a3d91[_0x3abb('0x4e')]);return _0x391d6f[_0x3abb('0x51')](_0x4d58ed);}})['catch'](handleError(_0x391d6f,null));};
\ No newline at end of file
+var _0x55f2=['Attachment','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','catch','find','params','omit','createdAt','updatedAt','create','body','file','originalname','basename','filename','download','findOne','join','server/files/attachments/','offline-chat/','rimraf','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','count','set','Content-Range','json','update','sendStatus','error','stack','name','send','index','map'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x55f2,0x170));var _0x255f=function(_0x504028,_0x1e2ee0){_0x504028=_0x504028-0x0;var _0x502374=_0x55f2[_0x504028];return _0x502374;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x255f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x255f('0x1'));var rp=require(_0x255f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x255f('0x3'));var path=require('path');var sox=require(_0x255f('0x4'));var csv=require(_0x255f('0x5'));var ejs=require(_0x255f('0x6'));var fs=require('fs');var fs_extra=require(_0x255f('0x7'));var _=require(_0x255f('0x8'));var squel=require(_0x255f('0x9'));var crypto=require(_0x255f('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x255f('0x5'));var querystring=require(_0x255f('0xb'));var Papa=require(_0x255f('0xc'));var Redis=require('ioredis');var authService=require(_0x255f('0xd'));var qs=require(_0x255f('0xe'));var as=require(_0x255f('0xf'));var hardwareService=require(_0x255f('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x255f('0x11'));var config=require(_0x255f('0x12'));var licenseUtil=require(_0x255f('0x13'));var db=require(_0x255f('0x14'))['db'];function respondWithStatusCode(_0x4cd249,_0x5ee428){_0x5ee428=_0x5ee428||0xcc;return function(_0x437dd1){if(_0x437dd1){return _0x4cd249['sendStatus'](_0x5ee428);}return _0x4cd249[_0x255f('0x15')](_0x5ee428)[_0x255f('0x16')]();};}function respondWithResult(_0x127f91,_0x13107e){_0x13107e=_0x13107e||0xc8;return function(_0x60a180){if(_0x60a180){return _0x127f91['status'](_0x13107e)['json'](_0x60a180);}};}function respondWithFilteredResult(_0x7d7bea,_0xf1a4f4){return function(_0x4063f6){if(_0x4063f6){var _0x47413f=typeof _0xf1a4f4[_0x255f('0x17')]==='undefined'&&typeof _0xf1a4f4[_0x255f('0x18')]==='undefined';var _0x4b0692=_0x4063f6[_0x255f('0x19')];var _0x1f30c5=_0x47413f?0x0:_0xf1a4f4['offset'];var _0x67d731=_0x47413f?_0x4063f6[_0x255f('0x19')]:_0xf1a4f4[_0x255f('0x17')]+_0xf1a4f4[_0x255f('0x18')];var _0x4fc294;if(_0x67d731>=_0x4b0692){_0x67d731=_0x4b0692;_0x4fc294=0xc8;}else{_0x4fc294=0xce;}_0x7d7bea[_0x255f('0x15')](_0x4fc294);return _0x7d7bea[_0x255f('0x1a')](_0x255f('0x1b'),_0x1f30c5+'-'+_0x67d731+'/'+_0x4b0692)[_0x255f('0x1c')](_0x4063f6);}return null;};}function patchUpdates(_0x49e6c3){return function(_0x2e9431){try{jsonpatch['apply'](_0x2e9431,_0x49e6c3,!![]);}catch(_0x4cdc08){return BPromise['reject'](_0x4cdc08);}return _0x2e9431['save']();};}function saveUpdates(_0x45f726,_0x5eb18b){return function(_0x1d0c8d){if(_0x1d0c8d){return _0x1d0c8d[_0x255f('0x1d')](_0x45f726)['then'](function(_0xac9300){return _0xac9300;});}return null;};}function removeEntity(_0x2c9ac9,_0x456a7b){return function(_0x521400){if(_0x521400){return _0x521400['destroy']()['then'](function(){_0x2c9ac9[_0x255f('0x15')](0xcc)[_0x255f('0x16')]();});}};}function handleEntityNotFound(_0x1d1c28,_0x3588e5){return function(_0x696d6e){if(!_0x696d6e){_0x1d1c28[_0x255f('0x1e')](0x194);}return _0x696d6e;};}function handleError(_0x42cc76,_0x53285d){_0x53285d=_0x53285d||0x1f4;return function(_0x96a097){logger[_0x255f('0x1f')](_0x96a097[_0x255f('0x20')]);if(_0x96a097[_0x255f('0x21')]){delete _0x96a097[_0x255f('0x21')];}_0x42cc76[_0x255f('0x15')](_0x53285d)[_0x255f('0x22')](_0x96a097);};}exports[_0x255f('0x23')]=function(_0x432902,_0x3a199e){var _0x3df4fc={},_0x29c555={},_0x29debb={'count':0x0,'rows':[]};var _0x124c33=_[_0x255f('0x24')](db[_0x255f('0x25')][_0x255f('0x26')],function(_0x718a4){return{'name':_0x718a4[_0x255f('0x27')],'type':_0x718a4['type'][_0x255f('0x28')]};});_0x29c555['model']=_[_0x255f('0x24')](_0x124c33,_0x255f('0x21'));_0x29c555['query']=_[_0x255f('0x29')](_0x432902[_0x255f('0x2a')]);_0x29c555[_0x255f('0x2b')]=_[_0x255f('0x2c')](_0x29c555[_0x255f('0x2d')],_0x29c555[_0x255f('0x2a')]);_0x3df4fc[_0x255f('0x2e')]=_[_0x255f('0x2c')](_0x29c555[_0x255f('0x2d')],qs[_0x255f('0x2f')](_0x432902[_0x255f('0x2a')][_0x255f('0x2f')]));_0x3df4fc['attributes']=_0x3df4fc[_0x255f('0x2e')][_0x255f('0x30')]?_0x3df4fc[_0x255f('0x2e')]:_0x29c555['model'];if(!_0x432902[_0x255f('0x2a')]['hasOwnProperty'](_0x255f('0x31'))){_0x3df4fc['limit']=qs['limit'](_0x432902['query']['limit']);_0x3df4fc[_0x255f('0x17')]=qs[_0x255f('0x17')](_0x432902['query'][_0x255f('0x17')]);}_0x3df4fc[_0x255f('0x32')]=qs['sort'](_0x432902[_0x255f('0x2a')][_0x255f('0x33')]);_0x3df4fc[_0x255f('0x34')]=qs['filters'](_[_0x255f('0x35')](_0x432902[_0x255f('0x2a')],_0x29c555[_0x255f('0x2b')]),_0x124c33);if(_0x432902[_0x255f('0x2a')]['filter']){_0x3df4fc[_0x255f('0x34')]=_[_0x255f('0x36')](_0x3df4fc[_0x255f('0x34')],{'$or':_[_0x255f('0x24')](_0x124c33,function(_0x1c23f6){if(_0x1c23f6[_0x255f('0x37')]!==_0x255f('0x38')){var _0x1b8190={};_0x1b8190[_0x1c23f6[_0x255f('0x21')]]={'$like':'%'+_0x432902[_0x255f('0x2a')][_0x255f('0x39')]+'%'};return _0x1b8190;}})});}_0x3df4fc=_['merge']({},_0x3df4fc,_0x432902[_0x255f('0x3a')]);var _0x84be2b={'where':_0x3df4fc[_0x255f('0x34')]};return db[_0x255f('0x25')][_0x255f('0x19')](_0x84be2b)[_0x255f('0x3b')](function(_0x190371){_0x29debb[_0x255f('0x19')]=_0x190371;if(_0x432902[_0x255f('0x2a')][_0x255f('0x3c')]){_0x3df4fc[_0x255f('0x3d')]=[{'all':!![]}];}return db['Attachment'][_0x255f('0x3e')](_0x3df4fc);})[_0x255f('0x3b')](function(_0x1c599a){_0x29debb[_0x255f('0x3f')]=_0x1c599a;return _0x29debb;})['then'](respondWithFilteredResult(_0x3a199e,_0x3df4fc))[_0x255f('0x40')](handleError(_0x3a199e,null));};exports['show']=function(_0x15dbec,_0x9a13fe){var _0x2d8275={'raw':!![],'where':{'id':_0x15dbec['params']['id']}},_0x25d36d={};_0x25d36d[_0x255f('0x2d')]=_[_0x255f('0x29')](db['Attachment']['rawAttributes']);_0x25d36d['query']=_[_0x255f('0x29')](_0x15dbec['query']);_0x25d36d[_0x255f('0x2b')]=_[_0x255f('0x2c')](_0x25d36d['model'],_0x25d36d[_0x255f('0x2a')]);_0x2d8275['attributes']=_[_0x255f('0x2c')](_0x25d36d[_0x255f('0x2d')],qs[_0x255f('0x2f')](_0x15dbec['query'][_0x255f('0x2f')]));_0x2d8275[_0x255f('0x2e')]=_0x2d8275[_0x255f('0x2e')][_0x255f('0x30')]?_0x2d8275[_0x255f('0x2e')]:_0x25d36d['model'];if(_0x15dbec[_0x255f('0x2a')][_0x255f('0x3c')]){_0x2d8275[_0x255f('0x3d')]=[{'all':!![]}];}_0x2d8275=_[_0x255f('0x36')]({},_0x2d8275,_0x15dbec[_0x255f('0x3a')]);return db['Attachment'][_0x255f('0x41')](_0x2d8275)[_0x255f('0x3b')](handleEntityNotFound(_0x9a13fe,null))[_0x255f('0x3b')](respondWithResult(_0x9a13fe,null))[_0x255f('0x40')](handleError(_0x9a13fe,null));};exports['clone']=function(_0x251eb2,_0xe62279){var _0x4a9e33={'where':{'id':_0x251eb2[_0x255f('0x42')]['id']}},_0x152b38={};_0x152b38['model']=_[_0x255f('0x29')](db[_0x255f('0x25')][_0x255f('0x26')]);_0x4a9e33[_0x255f('0x2e')]=_['intersection'](_0x152b38[_0x255f('0x2d')],qs[_0x255f('0x2f')](_0x251eb2[_0x255f('0x2a')][_0x255f('0x2f')]));_0x4a9e33[_0x255f('0x2e')]=_0x4a9e33[_0x255f('0x2e')][_0x255f('0x30')]?_0x4a9e33[_0x255f('0x2e')]:_0x152b38[_0x255f('0x2d')];if(_0x251eb2[_0x255f('0x2a')][_0x255f('0x3c')]){_0x4a9e33[_0x255f('0x3d')]=[{'all':!![]}];}_0x4a9e33=_['merge']({},_0x4a9e33,_0x251eb2['options']);return db['Attachment'][_0x255f('0x41')](_0x4a9e33)[_0x255f('0x3b')](handleEntityNotFound(_0xe62279,null))[_0x255f('0x3b')](function(_0x4303f1){if(_0x4303f1){var _0x4572ff=_0x4303f1['get']({'plain':!![]});_0x4572ff=qs[_0x255f('0x43')](_0x4572ff,['id',_0x255f('0x44'),_0x255f('0x45')]);_0x251eb2['body']=_[_0x255f('0x43')](_0x251eb2['body'],['id','createdAt',_0x255f('0x45')]);return db[_0x255f('0x25')][_0x255f('0x46')](_[_0x255f('0x36')](_0x4572ff,_0x251eb2['body']),{'include':_0x251eb2[_0x255f('0x2a')][_0x255f('0x3c')]?[{'all':!![]}]:undefined});}})[_0x255f('0x3b')](respondWithResult(_0xe62279,0xc9))['catch'](handleError(_0xe62279,null));};exports['update']=function(_0xef242c,_0x5aca01){if(_0xef242c['body']['id']){delete _0xef242c[_0x255f('0x47')]['id'];}return db['Attachment'][_0x255f('0x41')]({'where':{'id':_0xef242c[_0x255f('0x42')]['id']}})[_0x255f('0x3b')](handleEntityNotFound(_0x5aca01,null))[_0x255f('0x3b')](saveUpdates(_0xef242c[_0x255f('0x47')],null))[_0x255f('0x3b')](respondWithResult(_0x5aca01,null))[_0x255f('0x40')](handleError(_0x5aca01,null));};exports['destroy']=function(_0x5bd69a,_0x54ad35){return db['Attachment'][_0x255f('0x41')]({'where':{'id':_0x5bd69a['params']['id']}})[_0x255f('0x3b')](handleEntityNotFound(_0x54ad35,null))['then'](removeEntity(_0x54ad35,null))[_0x255f('0x40')](handleError(_0x54ad35,null));};exports[_0x255f('0x46')]=function(_0x4a6f08,_0x1b0cdf,_0x9648f4){_0x4a6f08[_0x255f('0x47')][_0x255f('0x21')]=_0x4a6f08[_0x255f('0x48')][_0x255f('0x49')];_0x4a6f08[_0x255f('0x47')][_0x255f('0x4a')]=_0x4a6f08[_0x255f('0x48')][_0x255f('0x4b')];_0x4a6f08['body'][_0x255f('0x37')]=_0x4a6f08['file']['mimetype'];return db[_0x255f('0x25')]['create'](_0x4a6f08[_0x255f('0x47')])['then'](respondWithResult(_0x1b0cdf,0xc9))[_0x255f('0x40')](handleError(_0x1b0cdf,null));};exports[_0x255f('0x4c')]=function(_0xdfe9b1,_0x3d121b,_0x12bd08){return db[_0x255f('0x25')][_0x255f('0x4d')]({'where':{'id':_0xdfe9b1['params']['id']},'raw':!![]})[_0x255f('0x3b')](handleEntityNotFound(_0x3d121b,null))[_0x255f('0x3b')](function(_0x4eef81){if(_0x4eef81){var _0x18dca3=_0x4eef81['ChatOfflineMessageId']!==null;var _0x2512c8=path[_0x255f('0x4e')](config['root'],_0x255f('0x4f'));if(_0x18dca3){_0x2512c8=path[_0x255f('0x4e')](_0x2512c8,_0x255f('0x50'));}var _0x41b7c7=path[_0x255f('0x4e')](_0x2512c8,_0x4eef81[_0x255f('0x4a')]);return _0x3d121b[_0x255f('0x4c')](_0x41b7c7);}})[_0x255f('0x40')](handleError(_0x3d121b,null));};
\ No newline at end of file
index fd81fb7..2d2ef1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd2=['path','rimraf','../../config/environment','./attachment.attributes','define','Attachment','../../config/logger','api','moment','bluebird'];(function(_0x4dcc2d,_0x422839){var _0x1bbd79=function(_0x173341){while(--_0x173341){_0x4dcc2d['push'](_0x4dcc2d['shift']());}};_0x1bbd79(++_0x422839);}(_0x6dd2,0xce));var _0x26dd=function(_0x14cf42,_0x496bb3){_0x14cf42=_0x14cf42-0x0;var _0x31671a=_0x6dd2[_0x14cf42];return _0x31671a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x26dd('0x0'))(_0x26dd('0x1'));var moment=require(_0x26dd('0x2'));var BPromise=require(_0x26dd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x26dd('0x4'));var rimraf=require(_0x26dd('0x5'));var config=require(_0x26dd('0x6'));var attributes=require(_0x26dd('0x7'));module['exports']=function(_0x22572e,_0x5ec41a){return _0x22572e[_0x26dd('0x8')](_0x26dd('0x9'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc72=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xbc72,0x187));var _0x2bc7=function(_0xe9ee8e,_0x52e184){_0xe9ee8e=_0xe9ee8e-0x0;var _0x414a95=_0xbc72[_0xe9ee8e];return _0x414a95;};'use strict';var _=require(_0x2bc7('0x0'));var util=require(_0x2bc7('0x1'));var logger=require('../../config/logger')(_0x2bc7('0x2'));var moment=require(_0x2bc7('0x3'));var BPromise=require(_0x2bc7('0x4'));var rp=require(_0x2bc7('0x5'));var fs=require('fs');var path=require(_0x2bc7('0x6'));var rimraf=require(_0x2bc7('0x7'));var config=require(_0x2bc7('0x8'));var attributes=require(_0x2bc7('0x9'));module[_0x2bc7('0xa')]=function(_0x2b80c3,_0x2b5b07){return _0x2b80c3[_0x2bc7('0xb')](_0x2bc7('0xc'),attributes,{'tableName':_0x2bc7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32d2a5c..18cce7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x255f=['error','code','message','info','result','catch','CreateAttachment','Attachment','create','body','options','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','Attachment,\x20%s,\x20%s','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3daff9,_0x1be9b9){var _0x1a8dd4=function(_0x5e78b0){while(--_0x5e78b0){_0x3daff9['push'](_0x3daff9['shift']());}};_0x1a8dd4(++_0x1be9b9);}(_0x255f,0x185));var _0xf255=function(_0x4293b5,_0x45689a){_0x4293b5=_0x4293b5-0x0;var _0xf27aee=_0x255f[_0x4293b5];return _0xf27aee;};'use strict';var _=require(_0xf255('0x0'));var util=require('util');var moment=require(_0xf255('0x1'));var BPromise=require(_0xf255('0x2'));var rs=require(_0xf255('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf255('0x4'))['db'];var utils=require(_0xf255('0x5'));var logger=require(_0xf255('0x6'))(_0xf255('0x7'));var config=require(_0xf255('0x8'));var jayson=require(_0xf255('0x9'));var client=jayson[_0xf255('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1236fb,_0x4b98fa,_0x481d8c){return new BPromise(function(_0x4a533f,_0x3cc3fc){return client['request'](_0x1236fb,_0x481d8c)[_0xf255('0xb')](function(_0x2f6020){logger['info'](_0xf255('0xc'),_0x4b98fa,'request\x20sent');logger[_0xf255('0xd')](_0xf255('0xe'),_0x4b98fa,_0xf255('0xf'),JSON[_0xf255('0x10')](_0x2f6020));if(_0x2f6020[_0xf255('0x11')]){if(_0x2f6020['error'][_0xf255('0x12')]===0x1f4){logger[_0xf255('0x11')](_0xf255('0xc'),_0x4b98fa,_0x2f6020['error'][_0xf255('0x13')]);return _0x3cc3fc(_0x2f6020[_0xf255('0x11')]['message']);}logger[_0xf255('0x11')](_0xf255('0xc'),_0x4b98fa,_0x2f6020[_0xf255('0x11')]['message']);return _0x4a533f(_0x2f6020[_0xf255('0x11')][_0xf255('0x13')]);}else{logger[_0xf255('0x14')](_0xf255('0xc'),_0x4b98fa,_0xf255('0xf'));_0x4a533f(_0x2f6020[_0xf255('0x15')]['message']);}})[_0xf255('0x16')](function(_0x4ed7c0){logger[_0xf255('0x11')]('Attachment,\x20%s,\x20%s',_0x4b98fa,_0x4ed7c0);_0x3cc3fc(_0x4ed7c0);});});}exports[_0xf255('0x17')]=function(_0x426286){var _0x45b51b=this;return new Promise(function(_0x43902c,_0x186558){return db[_0xf255('0x18')][_0xf255('0x19')](_0x426286[_0xf255('0x1a')],{'raw':_0x426286[_0xf255('0x1b')]?_0x426286[_0xf255('0x1b')][_0xf255('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x2fe87d){logger[_0xf255('0x14')](_0xf255('0x17'),_0x426286);logger[_0xf255('0xd')](_0xf255('0x17'),_0x426286,JSON[_0xf255('0x10')](_0x2fe87d));_0x43902c(_0x2fe87d);})[_0xf255('0x16')](function(_0x5b9b5f){logger[_0xf255('0x11')](_0xf255('0x17'),_0x5b9b5f[_0xf255('0x13')],_0x426286);_0x186558(_0x45b51b[_0xf255('0x11')](0x1f4,_0x5b9b5f[_0xf255('0x13')]));});});};
\ No newline at end of file
+var _0xda65=['info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateAttachment','Attachment','create','body','options','raw','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x1657c3,_0x36b3bd){var _0x464d89=function(_0x433f9b){while(--_0x433f9b){_0x1657c3['push'](_0x1657c3['shift']());}};_0x464d89(++_0x36b3bd);}(_0xda65,0x1d0));var _0x5da6=function(_0x195bca,_0x433c3d){_0x195bca=_0x195bca-0x0;var _0x4a0417=_0xda65[_0x195bca];return _0x4a0417;};'use strict';var _=require(_0x5da6('0x0'));var util=require(_0x5da6('0x1'));var moment=require(_0x5da6('0x2'));var BPromise=require('bluebird');var rs=require(_0x5da6('0x3'));var fs=require('fs');var Redis=require(_0x5da6('0x4'));var db=require(_0x5da6('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5da6('0x6'));var config=require(_0x5da6('0x7'));var jayson=require(_0x5da6('0x8'));var client=jayson[_0x5da6('0x9')][_0x5da6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51924c,_0x35aff9,_0x4a7040){return new BPromise(function(_0x55108e,_0x40722c){return client['request'](_0x51924c,_0x4a7040)[_0x5da6('0xb')](function(_0x20cb14){logger[_0x5da6('0xc')](_0x5da6('0xd'),_0x35aff9,_0x5da6('0xe'));logger[_0x5da6('0xf')](_0x5da6('0x10'),_0x35aff9,_0x5da6('0xe'),JSON['stringify'](_0x20cb14));if(_0x20cb14[_0x5da6('0x11')]){if(_0x20cb14[_0x5da6('0x11')][_0x5da6('0x12')]===0x1f4){logger[_0x5da6('0x11')](_0x5da6('0xd'),_0x35aff9,_0x20cb14[_0x5da6('0x11')][_0x5da6('0x13')]);return _0x40722c(_0x20cb14[_0x5da6('0x11')][_0x5da6('0x13')]);}logger['error'](_0x5da6('0xd'),_0x35aff9,_0x20cb14[_0x5da6('0x11')][_0x5da6('0x13')]);return _0x55108e(_0x20cb14[_0x5da6('0x11')][_0x5da6('0x13')]);}else{logger[_0x5da6('0xc')](_0x5da6('0xd'),_0x35aff9,_0x5da6('0xe'));_0x55108e(_0x20cb14[_0x5da6('0x14')][_0x5da6('0x13')]);}})['catch'](function(_0x5207e5){logger[_0x5da6('0x11')](_0x5da6('0xd'),_0x35aff9,_0x5207e5);_0x40722c(_0x5207e5);});});}exports[_0x5da6('0x15')]=function(_0x4c3b2d){var _0x4bc49a=this;return new Promise(function(_0x4b42e4,_0x394c63){return db[_0x5da6('0x16')][_0x5da6('0x17')](_0x4c3b2d[_0x5da6('0x18')],{'raw':_0x4c3b2d['options']?_0x4c3b2d[_0x5da6('0x19')][_0x5da6('0x1a')]===undefined?!![]:![]:!![]})[_0x5da6('0xb')](function(_0x24500d){logger[_0x5da6('0xc')](_0x5da6('0x15'),_0x4c3b2d);logger[_0x5da6('0xf')](_0x5da6('0x15'),_0x4c3b2d,JSON['stringify'](_0x24500d));_0x4b42e4(_0x24500d);})[_0x5da6('0x1b')](function(_0x5ad81b){logger[_0x5da6('0x11')](_0x5da6('0x15'),_0x5ad81b[_0x5da6('0x13')],_0x4c3b2d);_0x394c63(_0x4bc49a[_0x5da6('0x11')](0x1f4,_0x5ad81b[_0x5da6('0x13')]));});});};
\ No newline at end of file
index 212874b..11e99f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x4ff960,_0x276049){var _0x4c90dd=function(_0x231069){while(--_0x231069){_0x4ff960['push'](_0x4ff960['shift']());}};_0x4c90dd(++_0x276049);}(_0xb10b,0x12a));var _0xbb10=function(_0x3a0585,_0x12062b){_0x3a0585=_0x3a0585-0x0;var _0xbdc3fc=_0xb10b[_0x3a0585];return _0xbdc3fc;};'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('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
+var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0xa57e89,_0x131c21){var _0x2b5f43=function(_0x49e888){while(--_0x49e888){_0xa57e89['push'](_0xa57e89['shift']());}};_0x2b5f43(++_0x131c21);}(_0xb10b,0x12a));var _0xbb10=function(_0xf56197,_0x3da8f3){_0xf56197=_0xf56197-0x0;var _0x3dd377=_0xb10b[_0xf56197];return _0x3dd377;};'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('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
index 0d2bb6a..f76e76d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d3=['passport','passport-local','Strategy','moment','activedirectory2','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','activedirectory','url','domain','authenticate','error','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','role','disabled','online','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','add','getLicense','catch','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','use','password'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc9d3,0xe1));var _0x3c9d=function(_0x333c10,_0x519ae7){_0x333c10=_0x333c10-0x0;var _0x592378=_0xc9d3[_0x333c10];return _0x592378;};'use strict';var passport=require(_0x3c9d('0x0'));var LocalStrategy=require(_0x3c9d('0x1'))[_0x3c9d('0x2')];var moment=require(_0x3c9d('0x3'));var ActiveDirectory=require(_0x3c9d('0x4'));var BPromise=require('bluebird');var util=require(_0x3c9d('0x5'));var db=require(_0x3c9d('0x6'))['db'];var authService=require(_0x3c9d('0x7'));var utils=require(_0x3c9d('0x8'));var config=require(_0x3c9d('0x9'));var logger=require(_0x3c9d('0xa'))('api');function isActiveDirectoryConfigured(_0x2dc65e){var _0x58bb8c=![];if(typeof _0x2dc65e[_0x3c9d('0xb')]!=='undefined'){_0x58bb8c=_0x2dc65e[_0x3c9d('0xb')]['baseDN']&&_0x2dc65e['activedirectory'][_0x3c9d('0xc')]&&_0x2dc65e[_0x3c9d('0xb')][_0x3c9d('0xd')];}return _0x58bb8c;}function adAuthenticate(_0x6592e2,_0x3b4973,_0x396dfd){return new BPromise(function(_0x41bb35,_0x4acee6){try{var _0x5f4be0=new ActiveDirectory(_0x6592e2);_0x5f4be0[_0x3c9d('0xe')](_0x3b4973,_0x396dfd,function(_0x482d79,_0x3a30a3){if(_0x482d79){logger[_0x3c9d('0xf')]('Error\x20authenticate\x20%s:\x20%s',_0x3b4973,util[_0x3c9d('0x10')](_0x482d79,{'showHidden':![],'depth':null}));_0x4acee6('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x3a30a3){logger[_0x3c9d('0xf')](_0x3c9d('0x11'),_0x3b4973);_0x4acee6('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x41bb35(_0x3a30a3);}});}catch(_0x1f8ae2){_0x4acee6(_0x1f8ae2);}});}function ActiveDirectoryAuthenticate(_0x341d6e,_0x4ddcd8,_0x1f049f,_0x2eff0c){var _0x4364d8,_0x1b9844;if(!isActiveDirectoryConfigured(config)){logger['error'](_0x3c9d('0x12'),_0x4ddcd8);return _0x2eff0c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting'][_0x3c9d('0x13')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0x3c9d('0x14')],'raw':!![]})[_0x3c9d('0x15')](function(_0x2c59e8){_0x4364d8=_0x2c59e8;if(!_0x4364d8[_0x3c9d('0x16')]){logger[_0x3c9d('0xf')](_0x3c9d('0x17'),_0x4ddcd8);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x341d6e[_0x3c9d('0x13')]({'attributes':['id',_0x3c9d('0x18'),'password','salt',_0x3c9d('0x19'),_0x3c9d('0x1a'),'blocked','blockedAt',_0x3c9d('0x1b')],'where':{'name':_0x4ddcd8,'role':{'$or':[_0x3c9d('0x1c'),_0x3c9d('0x1d'),_0x3c9d('0x1e')]},'adSsoEnabled':!![]}});})['then'](function(_0x2d8651){if(!_0x2d8651||_0x2d8651&&_0x2d8651[_0x3c9d('0x18')]!==_0x4ddcd8){throw new Error(_0x3c9d('0x1f'));}_0x1b9844=_0x2d8651;var _0x5cb4b2=_0x1b9844[_0x3c9d('0x18')]+'@'+config[_0x3c9d('0xb')][_0x3c9d('0xd')];return adAuthenticate(config['activedirectory'],_0x5cb4b2,_0x1f049f);})[_0x3c9d('0x15')](function(_0x53c5ac){if(_0x1b9844['disabled']){throw new Error(_0x3c9d('0x1f'));}if(_0x4364d8[_0x3c9d('0x14')]>0x0){if(_0x1b9844[_0x3c9d('0x20')]){if(moment(_0x1b9844['blockedAt'])[_0x3c9d('0x21')](_0x4364d8['blockDuration'],'minutes')>moment()){throw new Error(_0x3c9d('0x1f'));}return utils['clearBlockUser'](_0x1b9844,0x0,![],null)[_0x3c9d('0x15')](function(){return utils[_0x3c9d('0x22')](_0x1b9844);})['then'](function(){return _0x2eff0c(null,_0x1b9844);});}else{return utils[_0x3c9d('0x22')](_0x1b9844)[_0x3c9d('0x15')](function(){return _0x2eff0c(null,_0x1b9844);});}}else{return utils[_0x3c9d('0x22')](_0x1b9844)[_0x3c9d('0x15')](function(){return _0x2eff0c(null,_0x1b9844);});}})[_0x3c9d('0x23')](function(_0x337052){return _0x2eff0c(null,![],_0x337052);});}function handleError(_0x5727eb,_0x33dee1,_0xc38f63){return _0x5727eb[_0x3c9d('0x24')](_0x33dee1||0x1f4)[_0x3c9d('0x25')]({'message':_0xc38f63?_0xc38f63[_0x3c9d('0x26')]||_0xc38f63:''});}exports[_0x3c9d('0x27')]=function(_0x1eb545,_0x45d90d,_0x4c25b8){passport[_0x3c9d('0xe')](_0x3c9d('0x28'),function(_0x2873db,_0x2a06b4,_0xec394){var _0x265b6c=_0x2873db||_0xec394;if(_0x265b6c){return handleError(_0x45d90d,0x191,_0x265b6c);}if(!_0x2a06b4){return handleError(_0x45d90d,0x194,{'message':_0x3c9d('0x29')});}else{var _0x3ae73d={'payload':{'id':_0x2a06b4['id'],'role':_0x2a06b4[_0x3c9d('0x19')]},'options':{'expiresIn':0x15180}};return authService[_0x3c9d('0x2a')](_0x3ae73d)['then'](function(_0x93f556){_0x45d90d['json']({'id':_0x2a06b4['id'],'token':_0x93f556,'statusCall':'','isAlreadyLogged':_0x2a06b4[_0x3c9d('0x1b')]});});}})(_0x1eb545,_0x45d90d,_0x4c25b8);};passport[_0x3c9d('0x2b')](_0x3c9d('0x28'),new LocalStrategy({'usernameField':_0x3c9d('0x18'),'passwordField':_0x3c9d('0x2c')},function(_0x1bff33,_0xe0d052,_0x3038a6){return ActiveDirectoryAuthenticate(db['User'],_0x1bff33,_0xe0d052,_0x3038a6);}));
\ No newline at end of file
+var _0xa71f=['blockedAt','online','admin','user','agent','add','clearBlockUser','getLicense','catch','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','api','activedirectory','undefined','baseDN','url','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','disabled','blocked'];(function(_0x1f56fb,_0x156199){var _0x9fffdf=function(_0x4e03fe){while(--_0x4e03fe){_0x1f56fb['push'](_0x1f56fb['shift']());}};_0x9fffdf(++_0x156199);}(_0xa71f,0xab));var _0xfa71=function(_0x56d8a7,_0x332742){_0x56d8a7=_0x56d8a7-0x0;var _0x4fd26e=_0xa71f[_0x56d8a7];return _0x4fd26e;};'use strict';var passport=require(_0xfa71('0x0'));var LocalStrategy=require(_0xfa71('0x1'))[_0xfa71('0x2')];var moment=require(_0xfa71('0x3'));var ActiveDirectory=require(_0xfa71('0x4'));var BPromise=require(_0xfa71('0x5'));var util=require(_0xfa71('0x6'));var db=require(_0xfa71('0x7'))['db'];var authService=require(_0xfa71('0x8'));var utils=require(_0xfa71('0x9'));var config=require(_0xfa71('0xa'));var logger=require('../../config/logger')(_0xfa71('0xb'));function isActiveDirectoryConfigured(_0x41c694){var _0x55e47c=![];if(typeof _0x41c694[_0xfa71('0xc')]!==_0xfa71('0xd')){_0x55e47c=_0x41c694[_0xfa71('0xc')][_0xfa71('0xe')]&&_0x41c694[_0xfa71('0xc')][_0xfa71('0xf')]&&_0x41c694[_0xfa71('0xc')][_0xfa71('0x10')];}return _0x55e47c;}function adAuthenticate(_0x2d3858,_0x531b03,_0xe17edd){return new BPromise(function(_0x532145,_0x120e01){try{var _0xc513f5=new ActiveDirectory(_0x2d3858);_0xc513f5[_0xfa71('0x11')](_0x531b03,_0xe17edd,function(_0x1dee6e,_0x5afbb2){if(_0x1dee6e){logger['error'](_0xfa71('0x12'),_0x531b03,util['inspect'](_0x1dee6e,{'showHidden':![],'depth':null}));_0x120e01('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x5afbb2){logger[_0xfa71('0x13')](_0xfa71('0x14'),_0x531b03);_0x120e01(_0xfa71('0x15'));}else{_0x532145(_0x5afbb2);}});}catch(_0x51f005){_0x120e01(_0x51f005);}});}function ActiveDirectoryAuthenticate(_0x47e463,_0x375742,_0x58cb04,_0x50cbf3){var _0x421fa3,_0x4c7d4f;if(!isActiveDirectoryConfigured(config)){logger[_0xfa71('0x13')](_0xfa71('0x16'),_0x375742);return _0x50cbf3(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xfa71('0x17')][_0xfa71('0x18')]({'where':{'id':0x1},'attributes':[_0xfa71('0x19'),_0xfa71('0x1a')],'raw':!![]})[_0xfa71('0x1b')](function(_0x2461b0){_0x421fa3=_0x2461b0;if(!_0x421fa3[_0xfa71('0x19')]){logger[_0xfa71('0x13')](_0xfa71('0x1c'),_0x375742);throw new Error(_0xfa71('0x15'));}return _0x47e463[_0xfa71('0x18')]({'attributes':['id',_0xfa71('0x1d'),_0xfa71('0x1e'),'salt','role',_0xfa71('0x1f'),_0xfa71('0x20'),_0xfa71('0x21'),_0xfa71('0x22')],'where':{'name':_0x375742,'role':{'$or':[_0xfa71('0x23'),_0xfa71('0x24'),_0xfa71('0x25')]},'adSsoEnabled':!![]}});})['then'](function(_0x1fcf46){if(!_0x1fcf46||_0x1fcf46&&_0x1fcf46[_0xfa71('0x1d')]!==_0x375742){throw new Error(_0xfa71('0x15'));}_0x4c7d4f=_0x1fcf46;var _0x19553e=_0x4c7d4f[_0xfa71('0x1d')]+'@'+config[_0xfa71('0xc')][_0xfa71('0x10')];return adAuthenticate(config[_0xfa71('0xc')],_0x19553e,_0x58cb04);})['then'](function(_0x6b8c20){if(_0x4c7d4f[_0xfa71('0x1f')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x421fa3[_0xfa71('0x1a')]>0x0){if(_0x4c7d4f[_0xfa71('0x20')]){if(moment(_0x4c7d4f[_0xfa71('0x21')])[_0xfa71('0x26')](_0x421fa3[_0xfa71('0x1a')],'minutes')>moment()){throw new Error(_0xfa71('0x15'));}return utils[_0xfa71('0x27')](_0x4c7d4f,0x0,![],null)[_0xfa71('0x1b')](function(){return utils[_0xfa71('0x28')](_0x4c7d4f);})[_0xfa71('0x1b')](function(){return _0x50cbf3(null,_0x4c7d4f);});}else{return utils['getLicense'](_0x4c7d4f)[_0xfa71('0x1b')](function(){return _0x50cbf3(null,_0x4c7d4f);});}}else{return utils[_0xfa71('0x28')](_0x4c7d4f)[_0xfa71('0x1b')](function(){return _0x50cbf3(null,_0x4c7d4f);});}})[_0xfa71('0x29')](function(_0x3cfa79){return _0x50cbf3(null,![],_0x3cfa79);});}function handleError(_0x214945,_0x4edc10,_0x595ac4){return _0x214945['status'](_0x4edc10||0x1f4)[_0xfa71('0x2a')]({'message':_0x595ac4?_0x595ac4[_0xfa71('0x2b')]||_0x595ac4:''});}exports[_0xfa71('0x2c')]=function(_0x12d7a2,_0x10ad36,_0x59d799){passport['authenticate'](_0xfa71('0x2d'),function(_0x552ec1,_0xb38b2,_0x17b44d){var _0x4985ea=_0x552ec1||_0x17b44d;if(_0x4985ea){return handleError(_0x10ad36,0x191,_0x4985ea);}if(!_0xb38b2){return handleError(_0x10ad36,0x194,{'message':_0xfa71('0x2e')});}else{var _0x17d57c={'payload':{'id':_0xb38b2['id'],'role':_0xb38b2['role']},'options':{'expiresIn':0x15180}};return authService[_0xfa71('0x2f')](_0x17d57c)['then'](function(_0x426e1e){_0x10ad36[_0xfa71('0x30')]({'id':_0xb38b2['id'],'token':_0x426e1e,'statusCall':'','isAlreadyLogged':_0xb38b2[_0xfa71('0x22')]});});}})(_0x12d7a2,_0x10ad36,_0x59d799);};passport[_0xfa71('0x31')](_0xfa71('0x2d'),new LocalStrategy({'usernameField':_0xfa71('0x1d'),'passwordField':_0xfa71('0x1e')},function(_0x84e22f,_0x550baf,_0x2ca443){return ActiveDirectoryAuthenticate(db[_0xfa71('0x32')],_0x84e22f,_0x550baf,_0x2ca443);}));
\ No newline at end of file
index ed74722..55b79fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['exports','./authActiveDirectory.controller','post','login'];(function(_0x49805c,_0x25258b){var _0x881f59=function(_0x5e1ad9){while(--_0x5e1ad9){_0x49805c['push'](_0x49805c['shift']());}};_0x881f59(++_0x25258b);}(_0x2542,0x181));var _0x2254=function(_0x3a0b12,_0x4179d4){_0x3a0b12=_0x3a0b12-0x0;var _0x3c2efe=_0x2542[_0x3a0b12];return _0x3c2efe;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x2254('0x0'));router[_0x2254('0x1')]('/',controller[_0x2254('0x2')]);module[_0x2254('0x3')]=router;
\ No newline at end of file
+var _0x23a3=['exports','express','post','login'];(function(_0x5108c0,_0x5c0e9f){var _0x5d35ed=function(_0x14ee1d){while(--_0x14ee1d){_0x5108c0['push'](_0x5108c0['shift']());}};_0x5d35ed(++_0x5c0e9f);}(_0x23a3,0x1c9));var _0x323a=function(_0x11dd13,_0x45d34d){_0x11dd13=_0x11dd13-0x0;var _0x58e5d8=_0x23a3[_0x11dd13];return _0x58e5d8;};'use strict';var express=require(_0x323a('0x0'));var router=express['Router']();var controller=require('./authActiveDirectory.controller');router[_0x323a('0x1')]('/',controller[_0x323a('0x2')]);module[_0x323a('0x3')]=router;
\ No newline at end of file
index 9a515b6..bb5fe22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3d773f,_0x3462b3){var _0x22bf3a=function(_0x2d295e){while(--_0x2d295e){_0x3d773f['push'](_0x3d773f['shift']());}};_0x22bf3a(++_0x3462b3);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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
+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(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x7a54,0x106));var _0x47a5=function(_0x52de66,_0x23bf44){_0x52de66=_0x52de66-0x0;var _0x58ba8d=_0x7a54[_0x52de66];return _0x58ba8d;};'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
index e448c5e..98af682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fad=['login','/callback','callback','isMiddleware','exports','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get'];(function(_0x369dac,_0x8261c1){var _0x2be5b2=function(_0x331384){while(--_0x331384){_0x369dac['push'](_0x369dac['shift']());}};_0x2be5b2(++_0x8261c1);}(_0x7fad,0x1db));var _0xd7fa=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x7fad[_0x4eafed];return _0x159c85;};'use strict';var express=require('express');var passport=require(_0xd7fa('0x0'));var router=express['Router']();var controller=require(_0xd7fa('0x1'));var userController=require(_0xd7fa('0x2'));var authService=require(_0xd7fa('0x3'));router[_0xd7fa('0x4')]('/',controller[_0xd7fa('0x5')]);router[_0xd7fa('0x4')](_0xd7fa('0x6'),controller[_0xd7fa('0x7')],authService[_0xd7fa('0x8')],userController[_0xd7fa('0x5')],authService['setTokenCookie']);module[_0xd7fa('0x9')]=router;
\ No newline at end of file
+var _0xb547=['/callback','isMiddleware','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get'];(function(_0x13a79e,_0x224017){var _0x263288=function(_0x5012fc){while(--_0x5012fc){_0x13a79e['push'](_0x13a79e['shift']());}};_0x263288(++_0x224017);}(_0xb547,0x143));var _0x7b54=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0xb547[_0x1deb03];return _0x189fe7;};'use strict';var express=require(_0x7b54('0x0'));var passport=require(_0x7b54('0x1'));var router=express[_0x7b54('0x2')]();var controller=require(_0x7b54('0x3'));var userController=require(_0x7b54('0x4'));var authService=require(_0x7b54('0x5'));router[_0x7b54('0x6')]('/',controller['login']);router[_0x7b54('0x6')](_0x7b54('0x7'),controller['callback'],authService[_0x7b54('0x8')],userController['login'],authService['setTokenCookie']);module[_0x7b54('0x9')]=router;
\ No newline at end of file
index acac6e7..a7970cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0f=['local-login','signToken','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','Setting','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','host','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordToken','Password\x20reset!','use','passport','passport-local','Strategy','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','http','findOne','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','allowedLoginAttempts','minutes','clearBlockUser','add','getLicense','catch','MailAccount','find','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','email','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','send','message'];(function(_0x4534e3,_0x56de6e){var _0x50c3a3=function(_0xb4117f){while(--_0xb4117f){_0x4534e3['push'](_0x4534e3['shift']());}};_0x50c3a3(++_0x56de6e);}(_0x1a0f,0x1c8));var _0xf1a0=function(_0x25ff4a,_0x423dd3){_0x25ff4a=_0x25ff4a-0x0;var _0x5a689b=_0x1a0f[_0x25ff4a];return _0x5a689b;};'use strict';var util=require('util');var passport=require(_0xf1a0('0x0'));var LocalStrategy=require(_0xf1a0('0x1'))[_0xf1a0('0x2')];var jayson=require(_0xf1a0('0x3'));var _=require(_0xf1a0('0x4'));var rs=require('randomstring');var moment=require(_0xf1a0('0x5'));var db=require(_0xf1a0('0x6'))['db'];var authService=require(_0xf1a0('0x7'));var utils=require(_0xf1a0('0x8'));var client=jayson['client'][_0xf1a0('0x9')]({'port':0x232b});function localAuthenticate(_0x4069ca,_0x160224,_0x4c95e7,_0x41b5e2){var _0x19dc1c,_0x515959;return db['Setting'][_0xf1a0('0xa')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xf1a0('0xb')],'raw':!![]})[_0xf1a0('0xc')](function(_0x445699){_0x19dc1c=_0x445699;return _0x4069ca['findOne']({'attributes':['id',_0xf1a0('0xd'),_0xf1a0('0xe'),_0xf1a0('0xf'),_0xf1a0('0x10'),_0xf1a0('0x11'),_0xf1a0('0x12'),_0xf1a0('0x13'),_0xf1a0('0x14')],'where':{'name':_0x160224,'role':{'$or':[_0xf1a0('0x15'),_0xf1a0('0x16'),_0xf1a0('0x17')]}}});})['then'](function(_0x27627b){if(!_0x27627b||_0x27627b&&_0x27627b[_0xf1a0('0xd')]!==_0x160224){throw new Error(_0xf1a0('0x18'));}else{_0x515959=_0x27627b;return _0x515959;}})['then'](function(){_0x515959[_0xf1a0('0x19')](_0x4c95e7,function(_0x19b5dc,_0x4213ae){var _0x217908=_0x515959[_0xf1a0('0x14')]+0x1;if(_0x19b5dc){return _0x41b5e2(_0x19b5dc);}else if(!_0x4213ae){if(_0x515959[_0xf1a0('0x11')]){return _0x41b5e2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x19dc1c[_0xf1a0('0x1a')]>0x0){if(_0x515959[_0xf1a0('0x12')]){if(_0x19dc1c[_0xf1a0('0xb')]>0x0){if(moment(_0x515959['blockedAt'])['add'](_0x19dc1c[_0xf1a0('0xb')],_0xf1a0('0x1b'))>moment()){return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}else{return utils['clearBlockUser'](_0x515959,_0x217908,![],null)[_0xf1a0('0xc')](function(){return _0x41b5e2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}}else{if(_0x217908>=_0x19dc1c[_0xf1a0('0x1a')]){return utils[_0xf1a0('0x1c')](_0x515959,0x0,!![],moment())[_0xf1a0('0xc')](function(){return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});});}else{return utils[_0xf1a0('0x1c')](_0x515959,_0x217908,![],null)[_0xf1a0('0xc')](function(){return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});});}}}else{return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}}else{if(_0x515959['disabled']){return _0x41b5e2(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x19dc1c['allowedLoginAttempts']>0x0){if(_0x515959['blocked']){if(_0x19dc1c[_0xf1a0('0xb')]>0x0){if(moment(_0x515959['blockedAt'])[_0xf1a0('0x1d')](_0x19dc1c[_0xf1a0('0xb')],'minutes')>moment()){return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}else{return utils[_0xf1a0('0x1c')](_0x515959,0x0,![],null)['then'](function(){return utils[_0xf1a0('0x1e')](_0x515959);})[_0xf1a0('0xc')](function(){return _0x41b5e2(null,_0x515959);});}}else{return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}}else{return utils[_0xf1a0('0x1c')](_0x515959,0x0,![],null)[_0xf1a0('0xc')](function(){return utils[_0xf1a0('0x1e')](_0x515959);})[_0xf1a0('0xc')](function(){return _0x41b5e2(null,_0x515959);})[_0xf1a0('0x1f')](function(_0x18377c){return _0x41b5e2(null,![],_0x18377c);});}}else{if(_0x515959[_0xf1a0('0x12')]){return _0x41b5e2(null,![],{'message':_0xf1a0('0x18')});}else{return utils['getLicense'](_0x515959)[_0xf1a0('0xc')](function(){return _0x41b5e2(null,_0x515959);});}}}});})[_0xf1a0('0x1f')](function(_0x6e5251){return _0x41b5e2(null,![],_0x6e5251);});}function sendServiceMail(_0x5d60c2){return db[_0xf1a0('0x20')][_0xf1a0('0x21')]({'where':{'service':!![]},'attributes':['id','name','email'],'include':[{'model':db[_0xf1a0('0x22')],'as':_0xf1a0('0x23'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})[_0xf1a0('0xc')](function(_0x3b1a45){if(!_0x3b1a45){throw new Error(_0xf1a0('0x24'));}var _0x38d88e=_0x3b1a45[_0xf1a0('0x25')]();var _0x385324={'account':_0x38d88e,'message':_[_0xf1a0('0x26')]({'from':util[_0xf1a0('0x27')](_0xf1a0('0x28'),_0x3b1a45[_0xf1a0('0xd')],_0x3b1a45[_0xf1a0('0x29')]||_0x3b1a45['Smtp'][_0xf1a0('0x16')])},_0x5d60c2)};return client[_0xf1a0('0x2a')]('SendMail',_0x385324);})[_0xf1a0('0xc')](function(_0x1f798b){if(_0x1f798b[_0xf1a0('0x2b')]){throw new Error(util[_0xf1a0('0x27')](_0xf1a0('0x2c'),_0x1f798b['error']['message']||JSON[_0xf1a0('0x2d')](_0x1f798b[_0xf1a0('0x2b')])));}return!![];});}function handleError(_0x56cf4a,_0x557558,_0x123a7d){return _0x56cf4a['status'](_0x557558||0x1f4)[_0xf1a0('0x2e')]({'message':_0x123a7d?_0x123a7d[_0xf1a0('0x2f')]||_0x123a7d:''});}exports['login']=function(_0x41e8f7,_0x474819,_0x1b9b71){passport[_0xf1a0('0x19')](_0xf1a0('0x30'),function(_0x1f8abf,_0xdb99f8,_0x8f2097){var _0x497cb9=_0x1f8abf||_0x8f2097;if(_0x497cb9){return handleError(_0x474819,0x191,_0x497cb9);}if(!_0xdb99f8){return handleError(_0x474819,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x4d1d53={'payload':{'id':_0xdb99f8['id'],'role':_0xdb99f8[_0xf1a0('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0xf1a0('0x31')](_0x4d1d53)[_0xf1a0('0xc')](function(_0x3edceb){_0x474819['json']({'id':_0xdb99f8['id'],'token':_0x3edceb,'statusCall':'','isAlreadyLogged':_0xdb99f8[_0xf1a0('0x32')]});});}})(_0x41e8f7,_0x474819,_0x1b9b71);};exports['forgot']=function(_0x524ab8,_0x85ea84){if(!_0x524ab8[_0xf1a0('0x33')]['email']){return handleError(_0x85ea84,0x1f4,{'message':_0xf1a0('0x34')});}var _0x27a78b=rs[_0xf1a0('0x35')]();_0x524ab8[_0xf1a0('0x33')][_0xf1a0('0x29')]=_0x524ab8['body'][_0xf1a0('0x29')][_0xf1a0('0x36')]()[_0xf1a0('0x37')]();var _0x181c2f;return db[_0xf1a0('0x38')][_0xf1a0('0xa')]({'where':{'id':0x1},'attributes':[_0xf1a0('0x1a'),_0xf1a0('0xb')],'raw':!![]})[_0xf1a0('0xc')](function(_0x280692){_0x181c2f=_0x280692;return db[_0xf1a0('0x39')]['find']({'where':{'email':_0x524ab8[_0xf1a0('0x33')][_0xf1a0('0x29')]}});})[_0xf1a0('0xc')](function(_0xf39a36){if(!_0xf39a36){throw new Error(_0xf1a0('0x3a'));}if(_0xf39a36['disabled']){throw new Error(_0xf1a0('0x3b'));}if(_0xf39a36[_0xf1a0('0x12')]){if(moment(_0xf39a36[_0xf1a0('0x13')])[_0xf1a0('0x1d')](_0x181c2f['blockDuration'],'minutes')>moment()){throw new Error(_0xf1a0('0x3c'));}else{_0xf39a36['blocked']=![];_0xf39a36['blockedAt']=null;}}_0xf39a36['resetPasswordToken']=_0x27a78b;_0xf39a36[_0xf1a0('0x3d')]=Date[_0xf1a0('0x3e')]()+0x36ee80;return _0xf39a36[_0xf1a0('0x3f')]();})['then'](function(){return sendServiceMail({'to':_0x524ab8[_0xf1a0('0x33')][_0xf1a0('0x29')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0xf1a0('0x40')+_0xf1a0('0x41')+'https://'+_0x524ab8[_0xf1a0('0x42')][_0xf1a0('0x43')]+'/reset/'+_0x27a78b+'\x0a\x0a'+_0xf1a0('0x44')});})[_0xf1a0('0xc')](function(){_0x85ea84[_0xf1a0('0x45')](0xc8)[_0xf1a0('0x2e')]({'message':_0xf1a0('0x46')});})[_0xf1a0('0x1f')](function(_0x297e30){return handleError(_0x85ea84,0x1f4,_0x297e30);});};exports[_0xf1a0('0x47')]=function(_0x4cba04,_0x4461eb){return db[_0xf1a0('0x39')]['find']({'where':{'resetPasswordToken':_0x4cba04[_0xf1a0('0x48')][_0xf1a0('0x49')],'resetPasswordExpires':{'$gt':Date[_0xf1a0('0x3e')]()}}})[_0xf1a0('0xc')](function(_0x4e5e26){if(!_0x4e5e26){throw new Error(_0xf1a0('0x4a'));}return db[_0xf1a0('0x38')][_0xf1a0('0xa')]({'attributes':['id',_0xf1a0('0x4b'),_0xf1a0('0x4c'),_0xf1a0('0x4d')]})[_0xf1a0('0xc')](function(_0x1a94db){if(_0x1a94db[_0xf1a0('0x4b')])authService[_0xf1a0('0x4e')](_0x4cba04[_0xf1a0('0x33')][_0xf1a0('0xe')]);if(!_0x1a94db['enforcePasswordHistory']||!_0x4e5e26[_0xf1a0('0x4f')])return _0x4e5e26;authService[_0xf1a0('0x50')](_0x4cba04[_0xf1a0('0x33')]['password'],_0x4e5e26['previousPasswords'],_0x1a94db[_0xf1a0('0x4d')]);return _0x4e5e26;})[_0xf1a0('0xc')](function(){_0x4e5e26[_0xf1a0('0xe')]=_0x4cba04[_0xf1a0('0x33')][_0xf1a0('0xe')];_0x4e5e26[_0xf1a0('0x51')]=null;_0x4e5e26[_0xf1a0('0x3d')]=null;return _0x4e5e26[_0xf1a0('0x3f')]();});})[_0xf1a0('0xc')](function(){_0x4461eb[_0xf1a0('0x45')](0xc8)[_0xf1a0('0x2e')]({'message':_0xf1a0('0x52')});})[_0xf1a0('0x1f')](function(_0x166840){return handleError(_0x4461eb,0x1f4,_0x166840);});};passport[_0xf1a0('0x53')]('local-login',new LocalStrategy({'usernameField':_0xf1a0('0xd'),'passwordField':_0xf1a0('0xe')},function(_0x7fb2c5,_0x5a11ab,_0x557a75){return localAuthenticate(db['User'],_0x7fb2c5,_0x5a11ab,_0x557a75);}));
\ No newline at end of file
+var _0x9bcd=['role','disabled','blocked','loginAttempts','user','agent','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockedAt','minutes','clearBlockUser','add','getLicense','catch','MailAccount','find','MailServerOut','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','merge','format','\x22%s\x22\x20<%s>','email','Smtp','request','error','message','status','send','login','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','securePassword','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','password','resetPasswordExpires','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../config/utils','client','http','Setting','allowedLoginAttempts','blockDuration','then','findOne','name','salt'];(function(_0x5c480f,_0x1d342a){var _0x277b29=function(_0xff2a2c){while(--_0xff2a2c){_0x5c480f['push'](_0x5c480f['shift']());}};_0x277b29(++_0x1d342a);}(_0x9bcd,0xe7));var _0xd9bc=function(_0x14883e,_0x11e18d){_0x14883e=_0x14883e-0x0;var _0x57dd74=_0x9bcd[_0x14883e];return _0x57dd74;};'use strict';var util=require(_0xd9bc('0x0'));var passport=require(_0xd9bc('0x1'));var LocalStrategy=require(_0xd9bc('0x2'))[_0xd9bc('0x3')];var jayson=require(_0xd9bc('0x4'));var _=require(_0xd9bc('0x5'));var rs=require(_0xd9bc('0x6'));var moment=require(_0xd9bc('0x7'));var db=require('../../mysqldb')['db'];var authService=require('../../components/auth/service');var utils=require(_0xd9bc('0x8'));var client=jayson[_0xd9bc('0x9')][_0xd9bc('0xa')]({'port':0x232b});function localAuthenticate(_0x5a2342,_0x3992fa,_0xcca428,_0x2b94e8){var _0x3459cc,_0x212992;return db[_0xd9bc('0xb')]['findOne']({'where':{'id':0x1},'attributes':[_0xd9bc('0xc'),_0xd9bc('0xd')],'raw':!![]})[_0xd9bc('0xe')](function(_0x463312){_0x3459cc=_0x463312;return _0x5a2342[_0xd9bc('0xf')]({'attributes':['id',_0xd9bc('0x10'),'password',_0xd9bc('0x11'),_0xd9bc('0x12'),_0xd9bc('0x13'),_0xd9bc('0x14'),'blockedAt',_0xd9bc('0x15')],'where':{'name':_0x3992fa,'role':{'$or':['admin',_0xd9bc('0x16'),_0xd9bc('0x17')]}}});})[_0xd9bc('0xe')](function(_0x473b6c){if(!_0x473b6c||_0x473b6c&&_0x473b6c['name']!==_0x3992fa){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x212992=_0x473b6c;return _0x212992;}})[_0xd9bc('0xe')](function(){_0x212992[_0xd9bc('0x18')](_0xcca428,function(_0x16113a,_0xc97d1b){var _0x17c47e=_0x212992['loginAttempts']+0x1;if(_0x16113a){return _0x2b94e8(_0x16113a);}else if(!_0xc97d1b){if(_0x212992[_0xd9bc('0x13')]){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}else if(_0x3459cc[_0xd9bc('0xc')]>0x0){if(_0x212992[_0xd9bc('0x14')]){if(_0x3459cc[_0xd9bc('0xd')]>0x0){if(moment(_0x212992[_0xd9bc('0x1a')])['add'](_0x3459cc['blockDuration'],_0xd9bc('0x1b'))>moment()){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}else{return utils['clearBlockUser'](_0x212992,_0x17c47e,![],null)[_0xd9bc('0xe')](function(){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});});}}else{return _0x2b94e8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x17c47e>=_0x3459cc['allowedLoginAttempts']){return utils['clearBlockUser'](_0x212992,0x0,!![],moment())[_0xd9bc('0xe')](function(){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});});}else{return utils[_0xd9bc('0x1c')](_0x212992,_0x17c47e,![],null)[_0xd9bc('0xe')](function(){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});});}}}else{return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}}else{if(_0x212992['disabled']){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}else if(_0x3459cc[_0xd9bc('0xc')]>0x0){if(_0x212992[_0xd9bc('0x14')]){if(_0x3459cc[_0xd9bc('0xd')]>0x0){if(moment(_0x212992[_0xd9bc('0x1a')])[_0xd9bc('0x1d')](_0x3459cc[_0xd9bc('0xd')],_0xd9bc('0x1b'))>moment()){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}else{return utils[_0xd9bc('0x1c')](_0x212992,0x0,![],null)[_0xd9bc('0xe')](function(){return utils[_0xd9bc('0x1e')](_0x212992);})['then'](function(){return _0x2b94e8(null,_0x212992);});}}else{return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}}else{return utils['clearBlockUser'](_0x212992,0x0,![],null)['then'](function(){return utils[_0xd9bc('0x1e')](_0x212992);})['then'](function(){return _0x2b94e8(null,_0x212992);})['catch'](function(_0x73a6e6){return _0x2b94e8(null,![],_0x73a6e6);});}}else{if(_0x212992[_0xd9bc('0x14')]){return _0x2b94e8(null,![],{'message':_0xd9bc('0x19')});}else{return utils['getLicense'](_0x212992)[_0xd9bc('0xe')](function(){return _0x2b94e8(null,_0x212992);});}}}});})[_0xd9bc('0x1f')](function(_0x2f0e87){return _0x2b94e8(null,![],_0x2f0e87);});}function sendServiceMail(_0x498280){return db[_0xd9bc('0x20')][_0xd9bc('0x21')]({'where':{'service':!![]},'attributes':['id',_0xd9bc('0x10'),'email'],'include':[{'model':db[_0xd9bc('0x22')],'as':'Smtp','include':[{'model':db[_0xd9bc('0x23')],'as':_0xd9bc('0x23')}]}]})[_0xd9bc('0xe')](function(_0x2654a5){if(!_0x2654a5){throw new Error(_0xd9bc('0x24'));}var _0x48987d=_0x2654a5['getSmtpOptions']();var _0x5f7314={'account':_0x48987d,'message':_[_0xd9bc('0x25')]({'from':util[_0xd9bc('0x26')](_0xd9bc('0x27'),_0x2654a5['name'],_0x2654a5[_0xd9bc('0x28')]||_0x2654a5[_0xd9bc('0x29')]['user'])},_0x498280)};return client[_0xd9bc('0x2a')]('SendMail',_0x5f7314);})[_0xd9bc('0xe')](function(_0x24b7f9){if(_0x24b7f9[_0xd9bc('0x2b')]){throw new Error(util[_0xd9bc('0x26')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x24b7f9[_0xd9bc('0x2b')][_0xd9bc('0x2c')]||JSON['stringify'](_0x24b7f9[_0xd9bc('0x2b')])));}return!![];});}function handleError(_0x3df4ac,_0x512f00,_0x4e7174){return _0x3df4ac[_0xd9bc('0x2d')](_0x512f00||0x1f4)[_0xd9bc('0x2e')]({'message':_0x4e7174?_0x4e7174[_0xd9bc('0x2c')]||_0x4e7174:''});}exports[_0xd9bc('0x2f')]=function(_0x4cf381,_0x313a91,_0x446d23){passport[_0xd9bc('0x18')](_0xd9bc('0x30'),function(_0x326794,_0x1b8ffc,_0x9f09f3){var _0xf54c70=_0x326794||_0x9f09f3;if(_0xf54c70){return handleError(_0x313a91,0x191,_0xf54c70);}if(!_0x1b8ffc){return handleError(_0x313a91,0x194,{'message':_0xd9bc('0x31')});}else{var _0xeaa716={'payload':{'id':_0x1b8ffc['id'],'role':_0x1b8ffc[_0xd9bc('0x12')]},'options':{'expiresIn':0x15180}};return authService[_0xd9bc('0x32')](_0xeaa716)[_0xd9bc('0xe')](function(_0x15a47d){_0x313a91[_0xd9bc('0x33')]({'id':_0x1b8ffc['id'],'token':_0x15a47d,'statusCall':'','isAlreadyLogged':_0x1b8ffc[_0xd9bc('0x34')]});});}})(_0x4cf381,_0x313a91,_0x446d23);};exports[_0xd9bc('0x35')]=function(_0xa682a,_0x205233){if(!_0xa682a[_0xd9bc('0x36')][_0xd9bc('0x28')]){return handleError(_0x205233,0x1f4,{'message':_0xd9bc('0x37')});}var _0x4c7e54=rs[_0xd9bc('0x38')]();_0xa682a[_0xd9bc('0x36')]['email']=_0xa682a[_0xd9bc('0x36')][_0xd9bc('0x28')]['trim']()[_0xd9bc('0x39')]();var _0x27e2b2;return db[_0xd9bc('0xb')][_0xd9bc('0xf')]({'where':{'id':0x1},'attributes':[_0xd9bc('0xc'),'blockDuration'],'raw':!![]})[_0xd9bc('0xe')](function(_0x299db8){_0x27e2b2=_0x299db8;return db[_0xd9bc('0x3a')][_0xd9bc('0x21')]({'where':{'email':_0xa682a[_0xd9bc('0x36')][_0xd9bc('0x28')]}});})[_0xd9bc('0xe')](function(_0x111560){if(!_0x111560){throw new Error(_0xd9bc('0x3b'));}if(_0x111560['disabled']){throw new Error(_0xd9bc('0x3c'));}if(_0x111560[_0xd9bc('0x14')]){if(moment(_0x111560[_0xd9bc('0x1a')])['add'](_0x27e2b2['blockDuration'],'minutes')>moment()){throw new Error(_0xd9bc('0x3d'));}else{_0x111560[_0xd9bc('0x14')]=![];_0x111560['blockedAt']=null;}}_0x111560[_0xd9bc('0x3e')]=_0x4c7e54;_0x111560['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x111560[_0xd9bc('0x3f')]();})[_0xd9bc('0xe')](function(){return sendServiceMail({'to':_0xa682a[_0xd9bc('0x36')][_0xd9bc('0x28')],'subject':_0xd9bc('0x40'),'text':_0xd9bc('0x41')+_0xd9bc('0x42')+_0xd9bc('0x43')+_0xa682a[_0xd9bc('0x44')]['host']+_0xd9bc('0x45')+_0x4c7e54+'\x0a\x0a'+_0xd9bc('0x46')});})[_0xd9bc('0xe')](function(){_0x205233[_0xd9bc('0x2d')](0xc8)[_0xd9bc('0x2e')]({'message':_0xd9bc('0x47')});})['catch'](function(_0x38bdce){return handleError(_0x205233,0x1f4,_0x38bdce);});};exports[_0xd9bc('0x48')]=function(_0x267de1,_0x384958){return db['User']['find']({'where':{'resetPasswordToken':_0x267de1[_0xd9bc('0x49')][_0xd9bc('0x4a')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xd9bc('0xe')](function(_0x137a7a){if(!_0x137a7a){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xd9bc('0xb')]['findOne']({'attributes':['id',_0xd9bc('0x4b'),_0xd9bc('0x4c'),'passwordHistoryLimit']})[_0xd9bc('0xe')](function(_0x3c9afb){if(_0x3c9afb[_0xd9bc('0x4b')])authService[_0xd9bc('0x4d')](_0x267de1['body']['password']);if(!_0x3c9afb[_0xd9bc('0x4c')]||!_0x137a7a[_0xd9bc('0x4e')])return _0x137a7a;authService[_0xd9bc('0x4f')](_0x267de1[_0xd9bc('0x36')]['password'],_0x137a7a[_0xd9bc('0x4e')],_0x3c9afb['passwordHistoryLimit']);return _0x137a7a;})[_0xd9bc('0xe')](function(){_0x137a7a[_0xd9bc('0x50')]=_0x267de1[_0xd9bc('0x36')][_0xd9bc('0x50')];_0x137a7a['resetPasswordToken']=null;_0x137a7a[_0xd9bc('0x51')]=null;return _0x137a7a['save']();});})[_0xd9bc('0xe')](function(){_0x384958['status'](0xc8)[_0xd9bc('0x2e')]({'message':'Password\x20reset!'});})[_0xd9bc('0x1f')](function(_0x45b844){return handleError(_0x384958,0x1f4,_0x45b844);});};passport[_0xd9bc('0x52')]('local-login',new LocalStrategy({'usernameField':_0xd9bc('0x10'),'passwordField':_0xd9bc('0x50')},function(_0x8598c1,_0x15bd3a,_0x140bca){return localAuthenticate(db['User'],_0x8598c1,_0x15bd3a,_0x140bca);}));
\ No newline at end of file
index 951d072..0d946cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c0=['Router','./authLocal.controller','post','login','/forgot','/reset/:token','reset','exports','express'];(function(_0x11b5b3,_0xf955f0){var _0x2fb60e=function(_0x377f3b){while(--_0x377f3b){_0x11b5b3['push'](_0x11b5b3['shift']());}};_0x2fb60e(++_0xf955f0);}(_0xc6c0,0x179));var _0x0c6c=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0xc6c0[_0x5e36d1];return _0x950b9e;};'use strict';var express=require(_0x0c6c('0x0'));var router=express[_0x0c6c('0x1')]();var controller=require(_0x0c6c('0x2'));router[_0x0c6c('0x3')]('/',controller[_0x0c6c('0x4')]);router[_0x0c6c('0x3')](_0x0c6c('0x5'),controller['forgot']);router[_0x0c6c('0x3')](_0x0c6c('0x6'),controller[_0x0c6c('0x7')]);module[_0x0c6c('0x8')]=router;
\ No newline at end of file
+var _0x538c=['reset','exports','express','./authLocal.controller','post','/forgot','forgot'];(function(_0x17bf38,_0x2935a2){var _0x3d7b40=function(_0x4f2c43){while(--_0x4f2c43){_0x17bf38['push'](_0x17bf38['shift']());}};_0x3d7b40(++_0x2935a2);}(_0x538c,0x95));var _0xc538=function(_0x2750b2,_0x4b3788){_0x2750b2=_0x2750b2-0x0;var _0x1393bc=_0x538c[_0x2750b2];return _0x1393bc;};'use strict';var express=require(_0xc538('0x0'));var router=express['Router']();var controller=require(_0xc538('0x1'));router[_0xc538('0x2')]('/',controller['login']);router[_0xc538('0x2')](_0xc538('0x3'),controller[_0xc538('0x4')]);router[_0xc538('0x2')]('/reset/:token',controller[_0xc538('0x5')]);module[_0xc538('0x6')]=router;
\ No newline at end of file
index 0ffee0d..c759c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe801=['sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0x16e77a,_0x653888){var _0x2944d4=function(_0x3fdf45){while(--_0x3fdf45){_0x16e77a['push'](_0x16e77a['shift']());}};_0x2944d4(++_0x653888);}(_0xe801,0x1e0));var _0x1e80=function(_0x28c4e5,_0x461ece){_0x28c4e5=_0x28c4e5-0x0;var _0x4afb8c=_0xe801[_0x28c4e5];return _0x4afb8c;};'use strict';var Sequelize=require(_0x1e80('0x0'));module[_0x1e80('0x1')]={'name':{'type':Sequelize[_0x1e80('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x1e80('0x2')]},'description':{'type':Sequelize[_0x1e80('0x2')]},'status':{'type':Sequelize[_0x1e80('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1e80('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x4475=['INTEGER','exports','STRING'];(function(_0x2f6d16,_0x516c0c){var _0xf706a=function(_0x43dd25){while(--_0x43dd25){_0x2f6d16['push'](_0x2f6d16['shift']());}};_0xf706a(++_0x516c0c);}(_0x4475,0x190));var _0x5447=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x4475[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0x5447('0x0')]={'name':{'type':Sequelize[_0x5447('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x5447('0x1')]},'description':{'type':Sequelize[_0x5447('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x5447('0x2')],'defaultValue':0xa}};
\ No newline at end of file
index 9fc8d5a..d2f710f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d12=['order','addActions','ids','getActions','Action','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','name','map','Automation','rawAttributes','type','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','length','create','body','update','find','addConditions','omit','getConditions','findOne','Condition'];(function(_0x1d679f,_0x34dd77){var _0x7bfb96=function(_0x45b190){while(--_0x45b190){_0x1d679f['push'](_0x1d679f['shift']());}};_0x7bfb96(++_0x34dd77);}(_0x7d12,0x9d));var _0x27d1=function(_0x27671f,_0x449b6a){_0x27671f=_0x27671f-0x0;var _0x523bbf=_0x7d12[_0x27671f];return _0x523bbf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27d1('0x0'));var zipdir=require(_0x27d1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x27d1('0x2'));var moment=require(_0x27d1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x27d1('0x4'));var util=require(_0x27d1('0x5'));var path=require(_0x27d1('0x6'));var sox=require(_0x27d1('0x7'));var csv=require(_0x27d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x27d1('0x9'));var squel=require(_0x27d1('0xa'));var crypto=require('crypto');var jsforce=require(_0x27d1('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x27d1('0x8'));var querystring=require(_0x27d1('0xc'));var Papa=require(_0x27d1('0xd'));var Redis=require(_0x27d1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x27d1('0xf'));var as=require(_0x27d1('0x10'));var hardwareService=require(_0x27d1('0x11'));var logger=require(_0x27d1('0x12'))('api');var utils=require(_0x27d1('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x27d1('0x14'))['db'];function respondWithStatusCode(_0xd6dc96,_0x3e428f){_0x3e428f=_0x3e428f||0xcc;return function(_0x26c2cd){if(_0x26c2cd){return _0xd6dc96[_0x27d1('0x15')](_0x3e428f);}return _0xd6dc96[_0x27d1('0x16')](_0x3e428f)['end']();};}function respondWithResult(_0x417eec,_0x375a46){_0x375a46=_0x375a46||0xc8;return function(_0xba2c4f){if(_0xba2c4f){return _0x417eec[_0x27d1('0x16')](_0x375a46)[_0x27d1('0x17')](_0xba2c4f);}};}function respondWithFilteredResult(_0x2d769c,_0x3c6a97){return function(_0x272695){if(_0x272695){var _0x2b4ea0=typeof _0x3c6a97[_0x27d1('0x18')]===_0x27d1('0x19')&&typeof _0x3c6a97[_0x27d1('0x1a')]===_0x27d1('0x19');var _0x560b22=_0x272695[_0x27d1('0x1b')];var _0x3f1e9a=_0x2b4ea0?0x0:_0x3c6a97[_0x27d1('0x18')];var _0x325ed9=_0x2b4ea0?_0x272695[_0x27d1('0x1b')]:_0x3c6a97[_0x27d1('0x18')]+_0x3c6a97[_0x27d1('0x1a')];var _0x285787;if(_0x325ed9>=_0x560b22){_0x325ed9=_0x560b22;_0x285787=0xc8;}else{_0x285787=0xce;}_0x2d769c[_0x27d1('0x16')](_0x285787);return _0x2d769c[_0x27d1('0x1c')](_0x27d1('0x1d'),_0x3f1e9a+'-'+_0x325ed9+'/'+_0x560b22)[_0x27d1('0x17')](_0x272695);}return null;};}function patchUpdates(_0x1cb3a8){return function(_0x5417b8){try{jsonpatch[_0x27d1('0x1e')](_0x5417b8,_0x1cb3a8,!![]);}catch(_0x4f8459){return BPromise[_0x27d1('0x1f')](_0x4f8459);}return _0x5417b8[_0x27d1('0x20')]();};}function saveUpdates(_0xc56484,_0x471918){return function(_0x54df10){if(_0x54df10){return _0x54df10['update'](_0xc56484)[_0x27d1('0x21')](function(_0x2d798f){return _0x2d798f;});}return null;};}function removeEntity(_0x25d6b7,_0x54cb77){return function(_0xd37c61){if(_0xd37c61){return _0xd37c61[_0x27d1('0x22')]()[_0x27d1('0x21')](function(){_0x25d6b7[_0x27d1('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x496dce,_0x18c880){return function(_0x3fdc98){if(!_0x3fdc98){_0x496dce[_0x27d1('0x15')](0x194);}return _0x3fdc98;};}function handleError(_0x2556a8,_0x2cb20b){_0x2cb20b=_0x2cb20b||0x1f4;return function(_0x23e7bd){logger['error'](_0x23e7bd['stack']);if(_0x23e7bd[_0x27d1('0x23')]){delete _0x23e7bd['name'];}_0x2556a8[_0x27d1('0x16')](_0x2cb20b)['send'](_0x23e7bd);};}exports['index']=function(_0x42bb4c,_0x158a51){var _0x2d49aa={},_0x54d19c={},_0x3a8488={'count':0x0,'rows':[]};var _0x4a6598=_[_0x27d1('0x24')](db[_0x27d1('0x25')][_0x27d1('0x26')],function(_0x59f4d7){return{'name':_0x59f4d7['fieldName'],'type':_0x59f4d7[_0x27d1('0x27')]['key']};});_0x54d19c['model']=_[_0x27d1('0x24')](_0x4a6598,_0x27d1('0x23'));_0x54d19c['query']=_[_0x27d1('0x28')](_0x42bb4c[_0x27d1('0x29')]);_0x54d19c[_0x27d1('0x2a')]=_[_0x27d1('0x2b')](_0x54d19c['model'],_0x54d19c[_0x27d1('0x29')]);_0x2d49aa[_0x27d1('0x2c')]=_[_0x27d1('0x2b')](_0x54d19c[_0x27d1('0x2d')],qs[_0x27d1('0x2e')](_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x2e')]));_0x2d49aa['attributes']=_0x2d49aa[_0x27d1('0x2c')]['length']?_0x2d49aa[_0x27d1('0x2c')]:_0x54d19c[_0x27d1('0x2d')];if(!_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x2f')](_0x27d1('0x30'))){_0x2d49aa[_0x27d1('0x1a')]=qs['limit'](_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x1a')]);_0x2d49aa['offset']=qs[_0x27d1('0x18')](_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x18')]);}_0x2d49aa['order']=qs[_0x27d1('0x31')](_0x42bb4c['query'][_0x27d1('0x31')]);_0x2d49aa['where']=qs['filters'](_[_0x27d1('0x32')](_0x42bb4c[_0x27d1('0x29')],_0x54d19c[_0x27d1('0x2a')]),_0x4a6598);if(_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x33')]){_0x2d49aa[_0x27d1('0x34')]=_[_0x27d1('0x35')](_0x2d49aa[_0x27d1('0x34')],{'$or':_[_0x27d1('0x24')](_0x4a6598,function(_0x42f793){if(_0x42f793['type']!==_0x27d1('0x36')){var _0xaca47={};_0xaca47[_0x42f793['name']]={'$like':'%'+_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x33')]+'%'};return _0xaca47;}})});}_0x2d49aa=_[_0x27d1('0x35')]({},_0x2d49aa,_0x42bb4c[_0x27d1('0x37')]);var _0x452b4c={'where':_0x2d49aa[_0x27d1('0x34')]};return db[_0x27d1('0x25')][_0x27d1('0x1b')](_0x452b4c)[_0x27d1('0x21')](function(_0x4cff60){_0x3a8488[_0x27d1('0x1b')]=_0x4cff60;if(_0x42bb4c[_0x27d1('0x29')][_0x27d1('0x38')]){_0x2d49aa[_0x27d1('0x39')]=[{'all':!![]}];}return db['Automation']['findAll'](_0x2d49aa);})[_0x27d1('0x21')](function(_0x229601){_0x3a8488['rows']=_0x229601;return _0x3a8488;})[_0x27d1('0x21')](respondWithFilteredResult(_0x158a51,_0x2d49aa))[_0x27d1('0x3a')](handleError(_0x158a51,null));};exports[_0x27d1('0x3b')]=function(_0x4c3112,_0x446d79){var _0x5166b3={'raw':![],'where':{'id':_0x4c3112[_0x27d1('0x3c')]['id']}},_0x3876c0={};_0x3876c0[_0x27d1('0x2d')]=_[_0x27d1('0x28')](db[_0x27d1('0x25')][_0x27d1('0x26')]);_0x3876c0[_0x27d1('0x29')]=_[_0x27d1('0x28')](_0x4c3112[_0x27d1('0x29')]);_0x3876c0[_0x27d1('0x2a')]=_[_0x27d1('0x2b')](_0x3876c0['model'],_0x3876c0['query']);_0x5166b3[_0x27d1('0x2c')]=_[_0x27d1('0x2b')](_0x3876c0[_0x27d1('0x2d')],qs[_0x27d1('0x2e')](_0x4c3112['query']['fields']));_0x5166b3[_0x27d1('0x2c')]=_0x5166b3['attributes'][_0x27d1('0x3d')]?_0x5166b3[_0x27d1('0x2c')]:_0x3876c0['model'];if(_0x4c3112[_0x27d1('0x29')]['includeAll']){_0x5166b3[_0x27d1('0x39')]=[{'all':!![]}];}_0x5166b3=_['merge']({},_0x5166b3,_0x4c3112[_0x27d1('0x37')]);return db['Automation']['find'](_0x5166b3)['then'](handleEntityNotFound(_0x446d79,null))[_0x27d1('0x21')](respondWithResult(_0x446d79,null))[_0x27d1('0x3a')](handleError(_0x446d79,null));};exports[_0x27d1('0x3e')]=function(_0x5e431f,_0x2bd58b){return db[_0x27d1('0x25')][_0x27d1('0x3e')](_0x5e431f[_0x27d1('0x3f')],{})['then'](respondWithResult(_0x2bd58b,0xc9))[_0x27d1('0x3a')](handleError(_0x2bd58b,null));};exports[_0x27d1('0x40')]=function(_0x3e60b4,_0x428a04){if(_0x3e60b4[_0x27d1('0x3f')]['id']){delete _0x3e60b4['body']['id'];}return db[_0x27d1('0x25')][_0x27d1('0x41')]({'where':{'id':_0x3e60b4[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x428a04,null))[_0x27d1('0x21')](saveUpdates(_0x3e60b4[_0x27d1('0x3f')],null))[_0x27d1('0x21')](respondWithResult(_0x428a04,null))['catch'](handleError(_0x428a04,null));};exports[_0x27d1('0x22')]=function(_0x14a212,_0x322438){return db[_0x27d1('0x25')][_0x27d1('0x41')]({'where':{'id':_0x14a212[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x322438,null))[_0x27d1('0x21')](removeEntity(_0x322438,null))[_0x27d1('0x3a')](handleError(_0x322438,null));};exports[_0x27d1('0x42')]=function(_0x375a44,_0x290af9,_0x3f189d){return db['Condition'][_0x27d1('0x41')]({'where':{'id':_0x375a44[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x290af9,null))[_0x27d1('0x21')](function(_0x4ea431){if(_0x4ea431){return _0x4ea431[_0x27d1('0x42')](_0x375a44[_0x27d1('0x3f')]['ids'],_[_0x27d1('0x43')](_0x375a44[_0x27d1('0x3f')],['ids','id'])||{});}})[_0x27d1('0x21')](respondWithResult(_0x290af9,null))['catch'](handleError(_0x290af9,null));};exports[_0x27d1('0x44')]=function(_0x42309e,_0x221262,_0x10fdd4){var _0x28aebe={};var _0x2cb194={};var _0x2cb1d8;var _0x4d7d2b;return db[_0x27d1('0x25')][_0x27d1('0x45')]({'where':{'id':_0x42309e[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x221262,null))[_0x27d1('0x21')](function(_0x51f98a){if(_0x51f98a){_0x2cb1d8=_0x51f98a;_0x2cb194['model']=_['keys'](db[_0x27d1('0x46')][_0x27d1('0x26')]);_0x2cb194[_0x27d1('0x29')]=_['keys'](_0x42309e[_0x27d1('0x29')]);_0x2cb194[_0x27d1('0x2a')]=_['intersection'](_0x2cb194[_0x27d1('0x2d')],_0x2cb194[_0x27d1('0x29')]);_0x28aebe[_0x27d1('0x2c')]=_['intersection'](_0x2cb194[_0x27d1('0x2d')],qs['fields'](_0x42309e['query'][_0x27d1('0x2e')]));_0x28aebe[_0x27d1('0x2c')]=_0x28aebe[_0x27d1('0x2c')][_0x27d1('0x3d')]?_0x28aebe[_0x27d1('0x2c')]:_0x2cb194[_0x27d1('0x2d')];_0x28aebe[_0x27d1('0x47')]=qs[_0x27d1('0x31')](_0x42309e[_0x27d1('0x29')][_0x27d1('0x31')]);_0x28aebe[_0x27d1('0x34')]=qs[_0x27d1('0x2a')](_[_0x27d1('0x32')](_0x42309e['query'],_0x2cb194[_0x27d1('0x2a')]));if(_0x42309e[_0x27d1('0x29')][_0x27d1('0x33')]){_0x28aebe[_0x27d1('0x34')]=_[_0x27d1('0x35')](_0x28aebe[_0x27d1('0x34')],{'$or':_['map'](_0x28aebe[_0x27d1('0x2c')],function(_0x403927){var _0x172684={};_0x172684[_0x403927]={'$like':'%'+_0x42309e[_0x27d1('0x29')][_0x27d1('0x33')]+'%'};return _0x172684;})});}_0x28aebe=_[_0x27d1('0x35')]({},_0x28aebe,_0x42309e[_0x27d1('0x37')]);return _0x2cb1d8[_0x27d1('0x44')](_0x28aebe);}})['then'](function(_0x11d1eb){if(_0x11d1eb){_0x4d7d2b=_0x11d1eb[_0x27d1('0x3d')];if(!_0x42309e[_0x27d1('0x29')]['hasOwnProperty']('nolimit')){_0x28aebe[_0x27d1('0x1a')]=qs[_0x27d1('0x1a')](_0x42309e[_0x27d1('0x29')][_0x27d1('0x1a')]);_0x28aebe[_0x27d1('0x18')]=qs[_0x27d1('0x18')](_0x42309e[_0x27d1('0x29')][_0x27d1('0x18')]);}return _0x2cb1d8[_0x27d1('0x44')](_0x28aebe);}})[_0x27d1('0x21')](function(_0xdb5118){if(_0xdb5118){return _0xdb5118?{'count':_0x4d7d2b,'rows':_0xdb5118}:null;}})[_0x27d1('0x21')](respondWithResult(_0x221262,null))['catch'](handleError(_0x221262,null));};exports[_0x27d1('0x48')]=function(_0x513256,_0x22349e,_0x420b96){return db['Action'][_0x27d1('0x41')]({'where':{'id':_0x513256[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x22349e,null))[_0x27d1('0x21')](function(_0x1f756a){if(_0x1f756a){return _0x1f756a['addActions'](_0x513256['body'][_0x27d1('0x49')],_['omit'](_0x513256[_0x27d1('0x3f')],[_0x27d1('0x49'),'id'])||{});}})[_0x27d1('0x21')](respondWithResult(_0x22349e,null))[_0x27d1('0x3a')](handleError(_0x22349e,null));};exports[_0x27d1('0x4a')]=function(_0x3ea53c,_0x465839,_0x2d6fee){var _0x1c24ab={};var _0x433e98={};var _0x42338c;var _0x4d984d;return db[_0x27d1('0x25')][_0x27d1('0x45')]({'where':{'id':_0x3ea53c[_0x27d1('0x3c')]['id']}})[_0x27d1('0x21')](handleEntityNotFound(_0x465839,null))['then'](function(_0xf2c64){if(_0xf2c64){_0x42338c=_0xf2c64;_0x433e98[_0x27d1('0x2d')]=_[_0x27d1('0x28')](db[_0x27d1('0x4b')][_0x27d1('0x26')]);_0x433e98[_0x27d1('0x29')]=_[_0x27d1('0x28')](_0x3ea53c['query']);_0x433e98['filters']=_[_0x27d1('0x2b')](_0x433e98['model'],_0x433e98[_0x27d1('0x29')]);_0x1c24ab[_0x27d1('0x2c')]=_[_0x27d1('0x2b')](_0x433e98[_0x27d1('0x2d')],qs[_0x27d1('0x2e')](_0x3ea53c[_0x27d1('0x29')]['fields']));_0x1c24ab[_0x27d1('0x2c')]=_0x1c24ab['attributes'][_0x27d1('0x3d')]?_0x1c24ab[_0x27d1('0x2c')]:_0x433e98[_0x27d1('0x2d')];_0x1c24ab[_0x27d1('0x47')]=qs['sort'](_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x31')]);_0x1c24ab[_0x27d1('0x34')]=qs[_0x27d1('0x2a')](_[_0x27d1('0x32')](_0x3ea53c[_0x27d1('0x29')],_0x433e98['filters']));if(_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x33')]){_0x1c24ab['where']=_[_0x27d1('0x35')](_0x1c24ab['where'],{'$or':_[_0x27d1('0x24')](_0x1c24ab[_0x27d1('0x2c')],function(_0x2d9e90){var _0x399c22={};_0x399c22[_0x2d9e90]={'$like':'%'+_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x33')]+'%'};return _0x399c22;})});}_0x1c24ab=_[_0x27d1('0x35')]({},_0x1c24ab,_0x3ea53c[_0x27d1('0x37')]);return _0x42338c['getActions'](_0x1c24ab);}})[_0x27d1('0x21')](function(_0x3ca48c){if(_0x3ca48c){_0x4d984d=_0x3ca48c[_0x27d1('0x3d')];if(!_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x2f')]('nolimit')){_0x1c24ab[_0x27d1('0x1a')]=qs[_0x27d1('0x1a')](_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x1a')]);_0x1c24ab[_0x27d1('0x18')]=qs['offset'](_0x3ea53c[_0x27d1('0x29')][_0x27d1('0x18')]);}return _0x42338c[_0x27d1('0x4a')](_0x1c24ab);}})[_0x27d1('0x21')](function(_0x3c0af2){if(_0x3c0af2){return _0x3c0af2?{'count':_0x4d984d,'rows':_0x3c0af2}:null;}})[_0x27d1('0x21')](respondWithResult(_0x465839,null))['catch'](handleError(_0x465839,null));};
\ No newline at end of file
+var _0xac2a=['request-promise','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','Automation','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','find','create','body','params','addConditions','ids','omit','findOne','Condition','getConditions','addActions','Action','getActions','pick','eml-format','zip-dir','fast-json-patch'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xac2a,0x1a1));var _0xaac2=function(_0x50233f,_0x463f10){_0x50233f=_0x50233f-0x0;var _0x2ff4d5=_0xac2a[_0x50233f];return _0x2ff4d5;};'use strict';var emlformat=require(_0xaac2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaac2('0x1'));var jsonpatch=require(_0xaac2('0x2'));var rp=require(_0xaac2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xaac2('0x4'));var util=require('util');var path=require('path');var sox=require(_0xaac2('0x5'));var csv=require(_0xaac2('0x6'));var ejs=require(_0xaac2('0x7'));var fs=require('fs');var fs_extra=require(_0xaac2('0x8'));var _=require(_0xaac2('0x9'));var squel=require(_0xaac2('0xa'));var crypto=require(_0xaac2('0xb'));var jsforce=require(_0xaac2('0xc'));var deskjs=require(_0xaac2('0xd'));var toCsv=require(_0xaac2('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xaac2('0xe'));var qs=require(_0xaac2('0xf'));var as=require(_0xaac2('0x10'));var hardwareService=require(_0xaac2('0x11'));var logger=require(_0xaac2('0x12'))(_0xaac2('0x13'));var utils=require(_0xaac2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xaac2('0x15'));var db=require(_0xaac2('0x16'))['db'];function respondWithStatusCode(_0xf7215c,_0x49befe){_0x49befe=_0x49befe||0xcc;return function(_0x552bf2){if(_0x552bf2){return _0xf7215c[_0xaac2('0x17')](_0x49befe);}return _0xf7215c[_0xaac2('0x18')](_0x49befe)[_0xaac2('0x19')]();};}function respondWithResult(_0x4da7a5,_0x56770d){_0x56770d=_0x56770d||0xc8;return function(_0x24bbc3){if(_0x24bbc3){return _0x4da7a5[_0xaac2('0x18')](_0x56770d)[_0xaac2('0x1a')](_0x24bbc3);}};}function respondWithFilteredResult(_0x48d3ee,_0x3688ef){return function(_0x2d228b){if(_0x2d228b){var _0x36738b=typeof _0x3688ef[_0xaac2('0x1b')]===_0xaac2('0x1c')&&typeof _0x3688ef[_0xaac2('0x1d')]===_0xaac2('0x1c');var _0x4e3c66=_0x2d228b['count'];var _0x32e0bb=_0x36738b?0x0:_0x3688ef[_0xaac2('0x1b')];var _0x59ad2b=_0x36738b?_0x2d228b[_0xaac2('0x1e')]:_0x3688ef[_0xaac2('0x1b')]+_0x3688ef[_0xaac2('0x1d')];var _0x5b09b8;if(_0x59ad2b>=_0x4e3c66){_0x59ad2b=_0x4e3c66;_0x5b09b8=0xc8;}else{_0x5b09b8=0xce;}_0x48d3ee[_0xaac2('0x18')](_0x5b09b8);return _0x48d3ee[_0xaac2('0x1f')](_0xaac2('0x20'),_0x32e0bb+'-'+_0x59ad2b+'/'+_0x4e3c66)[_0xaac2('0x1a')](_0x2d228b);}return null;};}function patchUpdates(_0x41712a){return function(_0x12d0d6){try{jsonpatch[_0xaac2('0x21')](_0x12d0d6,_0x41712a,!![]);}catch(_0x327e7c){return BPromise[_0xaac2('0x22')](_0x327e7c);}return _0x12d0d6[_0xaac2('0x23')]();};}function saveUpdates(_0x15efa9,_0x389de4){return function(_0x2b676b){if(_0x2b676b){return _0x2b676b[_0xaac2('0x24')](_0x15efa9)[_0xaac2('0x25')](function(_0x21a3f3){return _0x21a3f3;});}return null;};}function removeEntity(_0x363615,_0x399b2d){return function(_0x4e6723){if(_0x4e6723){return _0x4e6723[_0xaac2('0x26')]()[_0xaac2('0x25')](function(){_0x363615[_0xaac2('0x18')](0xcc)[_0xaac2('0x19')]();});}};}function handleEntityNotFound(_0x3dc83a,_0x365597){return function(_0x3c5cdd){if(!_0x3c5cdd){_0x3dc83a[_0xaac2('0x17')](0x194);}return _0x3c5cdd;};}function handleError(_0x42e0da,_0x4b9fd4){_0x4b9fd4=_0x4b9fd4||0x1f4;return function(_0x2a2b5e){logger[_0xaac2('0x27')](_0x2a2b5e[_0xaac2('0x28')]);if(_0x2a2b5e[_0xaac2('0x29')]){delete _0x2a2b5e['name'];}_0x42e0da['status'](_0x4b9fd4)['send'](_0x2a2b5e);};}exports[_0xaac2('0x2a')]=function(_0x11e6d9,_0x4daf53){var _0x32d155={},_0x3b2683={},_0xeb6c7b={'count':0x0,'rows':[]};var _0x11ed90=_[_0xaac2('0x2b')](db[_0xaac2('0x2c')][_0xaac2('0x2d')],function(_0x35c333){return{'name':_0x35c333[_0xaac2('0x2e')],'type':_0x35c333[_0xaac2('0x2f')][_0xaac2('0x30')]};});_0x3b2683[_0xaac2('0x31')]=_[_0xaac2('0x2b')](_0x11ed90,'name');_0x3b2683[_0xaac2('0x32')]=_[_0xaac2('0x33')](_0x11e6d9[_0xaac2('0x32')]);_0x3b2683[_0xaac2('0x34')]=_[_0xaac2('0x35')](_0x3b2683['model'],_0x3b2683[_0xaac2('0x32')]);_0x32d155['attributes']=_[_0xaac2('0x35')](_0x3b2683[_0xaac2('0x31')],qs[_0xaac2('0x36')](_0x11e6d9[_0xaac2('0x32')]['fields']));_0x32d155[_0xaac2('0x37')]=_0x32d155[_0xaac2('0x37')][_0xaac2('0x38')]?_0x32d155[_0xaac2('0x37')]:_0x3b2683[_0xaac2('0x31')];if(!_0x11e6d9[_0xaac2('0x32')][_0xaac2('0x39')](_0xaac2('0x3a'))){_0x32d155[_0xaac2('0x1d')]=qs[_0xaac2('0x1d')](_0x11e6d9[_0xaac2('0x32')]['limit']);_0x32d155['offset']=qs['offset'](_0x11e6d9['query'][_0xaac2('0x1b')]);}_0x32d155[_0xaac2('0x3b')]=qs[_0xaac2('0x3c')](_0x11e6d9[_0xaac2('0x32')][_0xaac2('0x3c')]);_0x32d155[_0xaac2('0x3d')]=qs[_0xaac2('0x34')](_['pick'](_0x11e6d9[_0xaac2('0x32')],_0x3b2683[_0xaac2('0x34')]),_0x11ed90);if(_0x11e6d9['query'][_0xaac2('0x3e')]){_0x32d155[_0xaac2('0x3d')]=_[_0xaac2('0x3f')](_0x32d155['where'],{'$or':_[_0xaac2('0x2b')](_0x11ed90,function(_0xe83562){if(_0xe83562['type']!==_0xaac2('0x40')){var _0x21f2aa={};_0x21f2aa[_0xe83562[_0xaac2('0x29')]]={'$like':'%'+_0x11e6d9[_0xaac2('0x32')][_0xaac2('0x3e')]+'%'};return _0x21f2aa;}})});}_0x32d155=_['merge']({},_0x32d155,_0x11e6d9[_0xaac2('0x41')]);var _0x1ed62b={'where':_0x32d155[_0xaac2('0x3d')]};return db['Automation'][_0xaac2('0x1e')](_0x1ed62b)['then'](function(_0x386cc1){_0xeb6c7b[_0xaac2('0x1e')]=_0x386cc1;if(_0x11e6d9[_0xaac2('0x32')][_0xaac2('0x42')]){_0x32d155[_0xaac2('0x43')]=[{'all':!![]}];}return db[_0xaac2('0x2c')]['findAll'](_0x32d155);})[_0xaac2('0x25')](function(_0x617110){_0xeb6c7b[_0xaac2('0x44')]=_0x617110;return _0xeb6c7b;})[_0xaac2('0x25')](respondWithFilteredResult(_0x4daf53,_0x32d155))[_0xaac2('0x45')](handleError(_0x4daf53,null));};exports['show']=function(_0x5bbc52,_0x339d34){var _0x60fc0b={'raw':![],'where':{'id':_0x5bbc52['params']['id']}},_0x126423={};_0x126423[_0xaac2('0x31')]=_[_0xaac2('0x33')](db[_0xaac2('0x2c')][_0xaac2('0x2d')]);_0x126423[_0xaac2('0x32')]=_['keys'](_0x5bbc52[_0xaac2('0x32')]);_0x126423[_0xaac2('0x34')]=_[_0xaac2('0x35')](_0x126423[_0xaac2('0x31')],_0x126423[_0xaac2('0x32')]);_0x60fc0b[_0xaac2('0x37')]=_[_0xaac2('0x35')](_0x126423[_0xaac2('0x31')],qs['fields'](_0x5bbc52[_0xaac2('0x32')]['fields']));_0x60fc0b['attributes']=_0x60fc0b[_0xaac2('0x37')][_0xaac2('0x38')]?_0x60fc0b['attributes']:_0x126423[_0xaac2('0x31')];if(_0x5bbc52['query']['includeAll']){_0x60fc0b[_0xaac2('0x43')]=[{'all':!![]}];}_0x60fc0b=_[_0xaac2('0x3f')]({},_0x60fc0b,_0x5bbc52[_0xaac2('0x41')]);return db['Automation'][_0xaac2('0x46')](_0x60fc0b)[_0xaac2('0x25')](handleEntityNotFound(_0x339d34,null))[_0xaac2('0x25')](respondWithResult(_0x339d34,null))[_0xaac2('0x45')](handleError(_0x339d34,null));};exports[_0xaac2('0x47')]=function(_0x5314b4,_0x3f54b8){return db['Automation']['create'](_0x5314b4['body'],{})[_0xaac2('0x25')](respondWithResult(_0x3f54b8,0xc9))[_0xaac2('0x45')](handleError(_0x3f54b8,null));};exports['update']=function(_0x56e9ec,_0x461907){if(_0x56e9ec['body']['id']){delete _0x56e9ec[_0xaac2('0x48')]['id'];}return db[_0xaac2('0x2c')][_0xaac2('0x46')]({'where':{'id':_0x56e9ec[_0xaac2('0x49')]['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x461907,null))['then'](saveUpdates(_0x56e9ec[_0xaac2('0x48')],null))[_0xaac2('0x25')](respondWithResult(_0x461907,null))[_0xaac2('0x45')](handleError(_0x461907,null));};exports['destroy']=function(_0x5860e7,_0x2a6527){return db[_0xaac2('0x2c')][_0xaac2('0x46')]({'where':{'id':_0x5860e7['params']['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x2a6527,null))[_0xaac2('0x25')](removeEntity(_0x2a6527,null))[_0xaac2('0x45')](handleError(_0x2a6527,null));};exports[_0xaac2('0x4a')]=function(_0xaa7501,_0x258e59,_0x7e24a2){return db['Condition'][_0xaac2('0x46')]({'where':{'id':_0xaa7501['params']['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x258e59,null))[_0xaac2('0x25')](function(_0x2b3312){if(_0x2b3312){return _0x2b3312['addConditions'](_0xaa7501[_0xaac2('0x48')][_0xaac2('0x4b')],_[_0xaac2('0x4c')](_0xaa7501[_0xaac2('0x48')],[_0xaac2('0x4b'),'id'])||{});}})['then'](respondWithResult(_0x258e59,null))['catch'](handleError(_0x258e59,null));};exports['getConditions']=function(_0x55627a,_0x5cb266,_0x42e2af){var _0x23bec5={};var _0x5b99bd={};var _0xe1fef7;var _0x351a79;return db['Automation'][_0xaac2('0x4d')]({'where':{'id':_0x55627a[_0xaac2('0x49')]['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x5cb266,null))[_0xaac2('0x25')](function(_0x3f4e38){if(_0x3f4e38){_0xe1fef7=_0x3f4e38;_0x5b99bd[_0xaac2('0x31')]=_['keys'](db[_0xaac2('0x4e')][_0xaac2('0x2d')]);_0x5b99bd[_0xaac2('0x32')]=_[_0xaac2('0x33')](_0x55627a['query']);_0x5b99bd['filters']=_[_0xaac2('0x35')](_0x5b99bd['model'],_0x5b99bd[_0xaac2('0x32')]);_0x23bec5[_0xaac2('0x37')]=_[_0xaac2('0x35')](_0x5b99bd[_0xaac2('0x31')],qs[_0xaac2('0x36')](_0x55627a[_0xaac2('0x32')][_0xaac2('0x36')]));_0x23bec5[_0xaac2('0x37')]=_0x23bec5['attributes'][_0xaac2('0x38')]?_0x23bec5[_0xaac2('0x37')]:_0x5b99bd[_0xaac2('0x31')];_0x23bec5['order']=qs[_0xaac2('0x3c')](_0x55627a[_0xaac2('0x32')][_0xaac2('0x3c')]);_0x23bec5[_0xaac2('0x3d')]=qs[_0xaac2('0x34')](_['pick'](_0x55627a[_0xaac2('0x32')],_0x5b99bd['filters']));if(_0x55627a[_0xaac2('0x32')][_0xaac2('0x3e')]){_0x23bec5[_0xaac2('0x3d')]=_[_0xaac2('0x3f')](_0x23bec5[_0xaac2('0x3d')],{'$or':_[_0xaac2('0x2b')](_0x23bec5[_0xaac2('0x37')],function(_0x1e465f){var _0x316df9={};_0x316df9[_0x1e465f]={'$like':'%'+_0x55627a[_0xaac2('0x32')][_0xaac2('0x3e')]+'%'};return _0x316df9;})});}_0x23bec5=_['merge']({},_0x23bec5,_0x55627a['options']);return _0xe1fef7[_0xaac2('0x4f')](_0x23bec5);}})['then'](function(_0x46320a){if(_0x46320a){_0x351a79=_0x46320a[_0xaac2('0x38')];if(!_0x55627a['query'][_0xaac2('0x39')](_0xaac2('0x3a'))){_0x23bec5[_0xaac2('0x1d')]=qs[_0xaac2('0x1d')](_0x55627a[_0xaac2('0x32')][_0xaac2('0x1d')]);_0x23bec5[_0xaac2('0x1b')]=qs[_0xaac2('0x1b')](_0x55627a[_0xaac2('0x32')]['offset']);}return _0xe1fef7[_0xaac2('0x4f')](_0x23bec5);}})[_0xaac2('0x25')](function(_0x501532){if(_0x501532){return _0x501532?{'count':_0x351a79,'rows':_0x501532}:null;}})[_0xaac2('0x25')](respondWithResult(_0x5cb266,null))[_0xaac2('0x45')](handleError(_0x5cb266,null));};exports[_0xaac2('0x50')]=function(_0x838e37,_0x2a5574,_0x35a8a5){return db[_0xaac2('0x51')][_0xaac2('0x46')]({'where':{'id':_0x838e37[_0xaac2('0x49')]['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x2a5574,null))[_0xaac2('0x25')](function(_0x52457b){if(_0x52457b){return _0x52457b[_0xaac2('0x50')](_0x838e37[_0xaac2('0x48')][_0xaac2('0x4b')],_[_0xaac2('0x4c')](_0x838e37[_0xaac2('0x48')],[_0xaac2('0x4b'),'id'])||{});}})[_0xaac2('0x25')](respondWithResult(_0x2a5574,null))[_0xaac2('0x45')](handleError(_0x2a5574,null));};exports[_0xaac2('0x52')]=function(_0x56de4f,_0x22d973,_0x583f64){var _0x23cf88={};var _0x3d7aa7={};var _0x478dfe;var _0x4b30bb;return db['Automation'][_0xaac2('0x4d')]({'where':{'id':_0x56de4f[_0xaac2('0x49')]['id']}})[_0xaac2('0x25')](handleEntityNotFound(_0x22d973,null))[_0xaac2('0x25')](function(_0x164d7c){if(_0x164d7c){_0x478dfe=_0x164d7c;_0x3d7aa7[_0xaac2('0x31')]=_[_0xaac2('0x33')](db[_0xaac2('0x51')][_0xaac2('0x2d')]);_0x3d7aa7[_0xaac2('0x32')]=_[_0xaac2('0x33')](_0x56de4f[_0xaac2('0x32')]);_0x3d7aa7[_0xaac2('0x34')]=_[_0xaac2('0x35')](_0x3d7aa7[_0xaac2('0x31')],_0x3d7aa7[_0xaac2('0x32')]);_0x23cf88['attributes']=_[_0xaac2('0x35')](_0x3d7aa7['model'],qs[_0xaac2('0x36')](_0x56de4f['query'][_0xaac2('0x36')]));_0x23cf88[_0xaac2('0x37')]=_0x23cf88['attributes'][_0xaac2('0x38')]?_0x23cf88[_0xaac2('0x37')]:_0x3d7aa7['model'];_0x23cf88[_0xaac2('0x3b')]=qs[_0xaac2('0x3c')](_0x56de4f[_0xaac2('0x32')][_0xaac2('0x3c')]);_0x23cf88[_0xaac2('0x3d')]=qs[_0xaac2('0x34')](_[_0xaac2('0x53')](_0x56de4f[_0xaac2('0x32')],_0x3d7aa7[_0xaac2('0x34')]));if(_0x56de4f[_0xaac2('0x32')][_0xaac2('0x3e')]){_0x23cf88[_0xaac2('0x3d')]=_['merge'](_0x23cf88[_0xaac2('0x3d')],{'$or':_[_0xaac2('0x2b')](_0x23cf88[_0xaac2('0x37')],function(_0x16b369){var _0x3588a8={};_0x3588a8[_0x16b369]={'$like':'%'+_0x56de4f['query'][_0xaac2('0x3e')]+'%'};return _0x3588a8;})});}_0x23cf88=_[_0xaac2('0x3f')]({},_0x23cf88,_0x56de4f[_0xaac2('0x41')]);return _0x478dfe[_0xaac2('0x52')](_0x23cf88);}})['then'](function(_0x31f745){if(_0x31f745){_0x4b30bb=_0x31f745[_0xaac2('0x38')];if(!_0x56de4f[_0xaac2('0x32')][_0xaac2('0x39')](_0xaac2('0x3a'))){_0x23cf88[_0xaac2('0x1d')]=qs['limit'](_0x56de4f[_0xaac2('0x32')][_0xaac2('0x1d')]);_0x23cf88[_0xaac2('0x1b')]=qs[_0xaac2('0x1b')](_0x56de4f[_0xaac2('0x32')][_0xaac2('0x1b')]);}return _0x478dfe['getActions'](_0x23cf88);}})[_0xaac2('0x25')](function(_0x51cf1a){if(_0x51cf1a){return _0x51cf1a?{'count':_0x4b30bb,'rows':_0x51cf1a}:null;}})[_0xaac2('0x25')](respondWithResult(_0x22d973,null))[_0xaac2('0x45')](handleError(_0x22d973,null));};
\ No newline at end of file
index 356ffcd..52fce92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0b=['../../config/logger','api','moment','bluebird','request-promise','rimraf','define','Automation','tools_automations','lodash'];(function(_0x83555e,_0x502ed1){var _0x42f2cf=function(_0x54d198){while(--_0x54d198){_0x83555e['push'](_0x83555e['shift']());}};_0x42f2cf(++_0x502ed1);}(_0x1c0b,0x1a3));var _0xb1c0=function(_0x26a72b,_0x4df8d8){_0x26a72b=_0x26a72b-0x0;var _0x5aa4af=_0x1c0b[_0x26a72b];return _0x5aa4af;};'use strict';var _=require(_0xb1c0('0x0'));var util=require('util');var logger=require(_0xb1c0('0x1'))(_0xb1c0('0x2'));var moment=require(_0xb1c0('0x3'));var BPromise=require(_0xb1c0('0x4'));var rp=require(_0xb1c0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb1c0('0x6'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module['exports']=function(_0x52b13c,_0x466047){return _0x52b13c[_0xb1c0('0x7')](_0xb1c0('0x8'),attributes,{'tableName':_0xb1c0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fb8=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','Automation','tools_automations','lodash','util'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x4fb8,0xbe));var _0x84fb=function(_0x18d723,_0x567c58){_0x18d723=_0x18d723-0x0;var _0x59414c=_0x4fb8[_0x18d723];return _0x59414c;};'use strict';var _=require(_0x84fb('0x0'));var util=require(_0x84fb('0x1'));var logger=require(_0x84fb('0x2'))(_0x84fb('0x3'));var moment=require(_0x84fb('0x4'));var BPromise=require('bluebird');var rp=require(_0x84fb('0x5'));var fs=require('fs');var path=require(_0x84fb('0x6'));var rimraf=require(_0x84fb('0x7'));var config=require(_0x84fb('0x8'));var attributes=require('./automation.attributes');module[_0x84fb('0x9')]=function(_0x473c02,_0x437be3){return _0x473c02['define'](_0x84fb('0xa'),attributes,{'tableName':_0x84fb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e0084a..b9ba0d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['http','request','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x1c9a,0x98));var _0xa1c9=function(_0x44d293,_0x511c7f){_0x44d293=_0x44d293-0x0;var _0x2315b1=_0x1c9a[_0x44d293];return _0x2315b1;};'use strict';var _=require(_0xa1c9('0x0'));var util=require('util');var moment=require(_0xa1c9('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1c9('0x2'));var fs=require('fs');var Redis=require(_0xa1c9('0x3'));var db=require(_0xa1c9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa1c9('0x5'))(_0xa1c9('0x6'));var config=require(_0xa1c9('0x7'));var jayson=require(_0xa1c9('0x8'));var client=jayson['client'][_0xa1c9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5448f2,_0x222624,_0x463c9c){return new BPromise(function(_0x3f07c2,_0x5059df){return client[_0xa1c9('0xa')](_0x5448f2,_0x463c9c)[_0xa1c9('0xb')](function(_0x24136d){logger[_0xa1c9('0xc')]('Automation,\x20%s,\x20%s',_0x222624,_0xa1c9('0xd'));logger[_0xa1c9('0xe')](_0xa1c9('0xf'),_0x222624,_0xa1c9('0xd'),JSON[_0xa1c9('0x10')](_0x24136d));if(_0x24136d[_0xa1c9('0x11')]){if(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x12')]===0x1f4){logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x5059df(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x3f07c2(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}else{logger[_0xa1c9('0xc')](_0xa1c9('0x13'),_0x222624,_0xa1c9('0xd'));_0x3f07c2(_0x24136d[_0xa1c9('0x15')][_0xa1c9('0x14')]);}})[_0xa1c9('0x16')](function(_0x373f5d){logger['error'](_0xa1c9('0x13'),_0x222624,_0x373f5d);_0x5059df(_0x373f5d);});});}
\ No newline at end of file
+var _0x2515=['http','request','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0xd30eed,_0xe86524){var _0x597349=function(_0x3aabd8){while(--_0x3aabd8){_0xd30eed['push'](_0xd30eed['shift']());}};_0x597349(++_0xe86524);}(_0x2515,0x1c2));var _0x5251=function(_0xab326c,_0x4c0bd8){_0xab326c=_0xab326c-0x0;var _0x3a4648=_0x2515[_0xab326c];return _0x3a4648;};'use strict';var _=require(_0x5251('0x0'));var util=require(_0x5251('0x1'));var moment=require('moment');var BPromise=require(_0x5251('0x2'));var rs=require(_0x5251('0x3'));var fs=require('fs');var Redis=require(_0x5251('0x4'));var db=require(_0x5251('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5251('0x6'))(_0x5251('0x7'));var config=require('../../config/environment');var jayson=require(_0x5251('0x8'));var client=jayson[_0x5251('0x9')][_0x5251('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f4749,_0x107910,_0x213cf2){return new BPromise(function(_0x245d3b,_0x3ca93a){return client[_0x5251('0xb')](_0x3f4749,_0x213cf2)[_0x5251('0xc')](function(_0x2bec99){logger[_0x5251('0xd')]('Automation,\x20%s,\x20%s',_0x107910,_0x5251('0xe'));logger[_0x5251('0xf')](_0x5251('0x10'),_0x107910,'request\x20sent',JSON[_0x5251('0x11')](_0x2bec99));if(_0x2bec99[_0x5251('0x12')]){if(_0x2bec99[_0x5251('0x12')][_0x5251('0x13')]===0x1f4){logger[_0x5251('0x12')](_0x5251('0x14'),_0x107910,_0x2bec99[_0x5251('0x12')][_0x5251('0x15')]);return _0x3ca93a(_0x2bec99[_0x5251('0x12')][_0x5251('0x15')]);}logger[_0x5251('0x12')](_0x5251('0x14'),_0x107910,_0x2bec99[_0x5251('0x12')][_0x5251('0x15')]);return _0x245d3b(_0x2bec99[_0x5251('0x12')][_0x5251('0x15')]);}else{logger[_0x5251('0xd')](_0x5251('0x14'),_0x107910,_0x5251('0xe'));_0x245d3b(_0x2bec99['result'][_0x5251('0x15')]);}})[_0x5251('0x16')](function(_0xc28aae){logger[_0x5251('0x12')](_0x5251('0x14'),_0x107910,_0xc28aae);_0x3ca93a(_0xc28aae);});});}
\ No newline at end of file
index d566c6d..1c9598f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x255f=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','show','getConditions','/:id/actions','getActions','post','create','addConditions','addActions','/:id','update','destroy','exports','multer','path'];(function(_0x52223e,_0x30a024){var _0x31d2ce=function(_0x14250a){while(--_0x14250a){_0x52223e['push'](_0x52223e['shift']());}};_0x31d2ce(++_0x30a024);}(_0x255f,0x185));var _0xf255=function(_0x2d5a8e,_0x5b80e7){_0x2d5a8e=_0x2d5a8e-0x0;var _0x36e155=_0x255f[_0x2d5a8e];return _0x36e155;};'use strict';var multer=require(_0xf255('0x0'));var util=require('util');var path=require(_0xf255('0x1'));var timeout=require(_0xf255('0x2'));var express=require(_0xf255('0x3'));var router=express['Router']();var fs_extra=require(_0xf255('0x4'));var auth=require(_0xf255('0x5'));var interaction=require(_0xf255('0x6'));var config=require(_0xf255('0x7'));var controller=require(_0xf255('0x8'));router[_0xf255('0x9')]('/',auth[_0xf255('0xa')](),controller['index']);router[_0xf255('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xf255('0xb')]);router[_0xf255('0x9')]('/:id/conditions',auth[_0xf255('0xa')](),controller[_0xf255('0xc')]);router['get'](_0xf255('0xd'),auth['isAuthenticated'](),controller[_0xf255('0xe')]);router[_0xf255('0xf')]('/',auth[_0xf255('0xa')](),controller[_0xf255('0x10')]);router[_0xf255('0xf')]('/:id/conditions',auth[_0xf255('0xa')](),controller[_0xf255('0x11')]);router[_0xf255('0xf')]('/:id/actions',auth[_0xf255('0xa')](),controller[_0xf255('0x12')]);router['put'](_0xf255('0x13'),auth[_0xf255('0xa')](),controller[_0xf255('0x14')]);router['delete'](_0xf255('0x13'),auth[_0xf255('0xa')](),controller[_0xf255('0x15')]);module[_0xf255('0x16')]=router;
\ No newline at end of file
+var _0xc0aa=['Router','fs-extra','../../config/environment','./automation.controller','get','isAuthenticated','/:id','show','/:id/conditions','/:id/actions','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x57ba9c,_0x15e511){var _0x54fc62=function(_0x135991){while(--_0x135991){_0x57ba9c['push'](_0x57ba9c['shift']());}};_0x54fc62(++_0x15e511);}(_0xc0aa,0x64));var _0xac0a=function(_0x20a1c0,_0x368927){_0x20a1c0=_0x20a1c0-0x0;var _0x35075a=_0xc0aa[_0x20a1c0];return _0x35075a;};'use strict';var multer=require(_0xac0a('0x0'));var util=require(_0xac0a('0x1'));var path=require(_0xac0a('0x2'));var timeout=require(_0xac0a('0x3'));var express=require(_0xac0a('0x4'));var router=express[_0xac0a('0x5')]();var fs_extra=require(_0xac0a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac0a('0x7'));var controller=require(_0xac0a('0x8'));router[_0xac0a('0x9')]('/',auth[_0xac0a('0xa')](),controller['index']);router['get'](_0xac0a('0xb'),auth[_0xac0a('0xa')](),controller[_0xac0a('0xc')]);router[_0xac0a('0x9')](_0xac0a('0xd'),auth[_0xac0a('0xa')](),controller['getConditions']);router[_0xac0a('0x9')](_0xac0a('0xe'),auth[_0xac0a('0xa')](),controller['getActions']);router['post']('/',auth[_0xac0a('0xa')](),controller['create']);router[_0xac0a('0xf')](_0xac0a('0xd'),auth[_0xac0a('0xa')](),controller['addConditions']);router['post'](_0xac0a('0xe'),auth[_0xac0a('0xa')](),controller['addActions']);router[_0xac0a('0x10')](_0xac0a('0xb'),auth[_0xac0a('0xa')](),controller[_0xac0a('0x11')]);router[_0xac0a('0x12')]('/:id',auth[_0xac0a('0xa')](),controller[_0xac0a('0x13')]);module[_0xac0a('0x14')]=router;
\ No newline at end of file
index 9af56e3..8808401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbc6=['UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#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)','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#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)','STRING','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign'];(function(_0x35de8f,_0x25d742){var _0x335249=function(_0x39a4c8){while(--_0x39a4c8){_0x35de8f['push'](_0x35de8f['shift']());}};_0x335249(++_0x25d742);}(_0xdbc6,0x13b));var _0x6dbc=function(_0xa8cac4,_0x3c5c05){_0xa8cac4=_0xa8cac4-0x0;var _0x25b83f=_0xdbc6[_0xa8cac4];return _0x25b83f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6dbc('0x0')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x6dbc('0x1')](_0x6dbc('0x2')),'allowNull':![],'defaultValue':_0x6dbc('0x2')},'description':{'type':Sequelize[_0x6dbc('0x0')]},'active':{'type':Sequelize[_0x6dbc('0x3')],'defaultValue':0x0,'comment':_0x6dbc('0x4')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x6dbc('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x6dbc('0x6')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x6dbc('0x0')]},'dialOriginateTimeout':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x8')},'dialCongestionMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x6dbc('0xe')},'dialTimezone':{'type':Sequelize[_0x6dbc('0x0')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x6dbc('0x0')],'defaultValue':_0x6dbc('0xf')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x6dbc('0x10'),_0x6dbc('0x11'),_0x6dbc('0x12')),'defaultValue':_0x6dbc('0x10')},'dialAMDActive':{'type':Sequelize[_0x6dbc('0x3')],'defaultValue':0x0,'comment':_0x6dbc('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6dbc('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x6dbc('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x6dbc('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x6dbc('0x16')},'dialAMDMinWordLength':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x6dbc('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x6dbc('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x6dbc('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x6dbc('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x6dbc('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x6dbc('0x7')](0x9)[_0x6dbc('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x6dbc('0x1')]('DESC',_0x6dbc('0x1b')),'defaultValue':_0x6dbc('0x1c')},'dialPrefix':{'type':Sequelize[_0x6dbc('0x0')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x6dbc('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6dbc('0x1d')},'dialCutDigit':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6dbc('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0x20')},'dialDropMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6dbc('0x25')},'dialMachineRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x6dbc('0x7')](0x3)[_0x6dbc('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x6dbc('0x7')](0x5)[_0x6dbc('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6dbc('0x27')}};
\ No newline at end of file
+var _0xebfc=['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','ENUM','ivr','STRING','Active/Disactive\x20Campaign','INTEGER','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','#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)'];(function(_0x5236a8,_0x1248c6){var _0x38f942=function(_0xa6126c){while(--_0xa6126c){_0x5236a8['push'](_0x5236a8['shift']());}};_0x38f942(++_0x1248c6);}(_0xebfc,0x12b));var _0xcebf=function(_0xbb14db,_0x3ee8c6){_0xbb14db=_0xbb14db-0x0;var _0x36bed7=_0xebfc[_0xbb14db];return _0x36bed7;};'use strict';var Sequelize=require(_0xcebf('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xcebf('0x1')](_0xcebf('0x2')),'allowNull':![],'defaultValue':_0xcebf('0x2')},'description':{'type':Sequelize[_0xcebf('0x3')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xcebf('0x4')},'limitCalls':{'type':Sequelize[_0xcebf('0x5')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xcebf('0x6')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xcebf('0x3')]},'dialOriginateTimeout':{'type':Sequelize[_0xcebf('0x5')](0x3)[_0xcebf('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x8')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0xcebf('0x5')](0x3)[_0xcebf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xcebf('0x5')](0x3)[_0xcebf('0x7')],'defaultValue':0x3,'comment':_0xcebf('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xcebf('0x3')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xcebf('0x3')],'defaultValue':_0xcebf('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xcebf('0x1')]('always',_0xcebf('0x10'),_0xcebf('0x11')),'defaultValue':_0xcebf('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xcebf('0x13')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xcebf('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xcebf('0x14')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xcebf('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xcebf('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xcebf('0x5')](0x9)[_0xcebf('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xcebf('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xcebf('0x5')](0x9)[_0xcebf('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xcebf('0x5')](0x9)[_0xcebf('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xcebf('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xcebf('0x5')](0x9)[_0xcebf('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xcebf('0x5')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xcebf('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xcebf('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xcebf('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xcebf('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xcebf('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0xcebf('0x1')](_0xcebf('0x1b'),'ASC'),'defaultValue':_0xcebf('0x1b')},'dialPrefix':{'type':Sequelize[_0xcebf('0x3')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xcebf('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xcebf('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xcebf('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xcebf('0x5')](0x3)[_0xcebf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xcebf('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x1d')},'dialDropRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xcebf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x1f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0x20')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xcebf('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x21')},'dialMachineRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xcebf('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xcebf('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xcebf('0x5')](0x5)[_0xcebf('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xcebf('0x24')}};
\ No newline at end of file
index 4431660..453d82d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd139=['spread','dialCheckDuplicateType','insert','into','fromQuery','phone','scheduledAt','ListId','select','field','NOW()','ContactId','CmListId','toString','from','cm_contacts','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','deletedAt\x20IS\x20NULL','cm_hopper','phone\x20IS\x20NOT\x20NULL','cm_hopper_additional_phones','cmHopperId','OrderBy','ci.item','ci.OrderBY','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','push','sequelize','all','removeLists','getBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','IvrCampaigns','UserProfileResource','end','error','stack','name','send','index','Campaign','rawAttributes','key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','keys','create','body','get','role','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','UserProfileSection','getHoppers','findOne','CmHopper','pick','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','nolimit','getHopperBlacks','CmHopperBlack','CmList','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids'];(function(_0x207e92,_0x4c6711){var _0x40d323=function(_0x511ad7){while(--_0x511ad7){_0x207e92['push'](_0x207e92['shift']());}};_0x40d323(++_0x4c6711);}(_0xd139,0x14e));var _0x9d13=function(_0x373453,_0x5c41ea){_0x373453=_0x373453-0x0;var _0x233a00=_0xd139[_0x373453];return _0x233a00;};'use strict';var emlformat=require(_0x9d13('0x0'));var rimraf=require(_0x9d13('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9d13('0x2'));var moment=require(_0x9d13('0x3'));var BPromise=require(_0x9d13('0x4'));var Mustache=require(_0x9d13('0x5'));var util=require(_0x9d13('0x6'));var path=require(_0x9d13('0x7'));var sox=require(_0x9d13('0x8'));var csv=require('to-csv');var ejs=require(_0x9d13('0x9'));var fs=require('fs');var fs_extra=require(_0x9d13('0xa'));var _=require('lodash');var squel=require(_0x9d13('0xb'));var crypto=require('crypto');var jsforce=require(_0x9d13('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9d13('0xd'));var Redis=require(_0x9d13('0xe'));var authService=require(_0x9d13('0xf'));var qs=require(_0x9d13('0x10'));var as=require(_0x9d13('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d13('0x12'))(_0x9d13('0x13'));var utils=require(_0x9d13('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9d13('0x15'))['db'];function respondWithStatusCode(_0x3933d1,_0x39020){_0x39020=_0x39020||0xcc;return function(_0x331fea){if(_0x331fea){return _0x3933d1[_0x9d13('0x16')](_0x39020);}return _0x3933d1['status'](_0x39020)['end']();};}function respondWithResult(_0x37607a,_0x43bf27){_0x43bf27=_0x43bf27||0xc8;return function(_0x2f5442){if(_0x2f5442){return _0x37607a[_0x9d13('0x17')](_0x43bf27)[_0x9d13('0x18')](_0x2f5442);}};}function respondWithFilteredResult(_0x1a2b65,_0x38f368){return function(_0x47bcd3){if(_0x47bcd3){var _0x3acfc1=typeof _0x38f368[_0x9d13('0x19')]===_0x9d13('0x1a')&&typeof _0x38f368[_0x9d13('0x1b')]===_0x9d13('0x1a');var _0x42d5a5=_0x47bcd3[_0x9d13('0x1c')];var _0x10aa89=_0x3acfc1?0x0:_0x38f368[_0x9d13('0x19')];var _0x2acb0b=_0x3acfc1?_0x47bcd3[_0x9d13('0x1c')]:_0x38f368[_0x9d13('0x19')]+_0x38f368[_0x9d13('0x1b')];var _0x4d6b9d;if(_0x2acb0b>=_0x42d5a5){_0x2acb0b=_0x42d5a5;_0x4d6b9d=0xc8;}else{_0x4d6b9d=0xce;}_0x1a2b65[_0x9d13('0x17')](_0x4d6b9d);return _0x1a2b65[_0x9d13('0x1d')](_0x9d13('0x1e'),_0x10aa89+'-'+_0x2acb0b+'/'+_0x42d5a5)[_0x9d13('0x18')](_0x47bcd3);}return null;};}function patchUpdates(_0x4e1425){return function(_0x48ce3d){try{jsonpatch['apply'](_0x48ce3d,_0x4e1425,!![]);}catch(_0x223ea5){return BPromise[_0x9d13('0x1f')](_0x223ea5);}return _0x48ce3d[_0x9d13('0x20')]();};}function saveUpdates(_0x1fefe4,_0x3971e0){return function(_0x3040e7){if(_0x3040e7){return _0x3040e7[_0x9d13('0x21')](_0x1fefe4)[_0x9d13('0x22')](function(_0x5d14c8){return _0x5d14c8;});}return null;};}function removeEntity(_0xb34817,_0xd5a981){return function(_0x22963f){if(_0x22963f){return _0x22963f[_0x9d13('0x23')]()['then'](function(){var _0xe02b36=_0x22963f['get']({'plain':!![]});var _0x40c673=_0x9d13('0x24');return db[_0x9d13('0x25')][_0x9d13('0x23')]({'where':{'type':_0x40c673,'resourceId':_0xe02b36['id']}})[_0x9d13('0x22')](function(){return _0x22963f;});})[_0x9d13('0x22')](function(){_0xb34817[_0x9d13('0x17')](0xcc)[_0x9d13('0x26')]();});}};}function handleEntityNotFound(_0x5d854e,_0x2e7fa1){return function(_0x4edc05){if(!_0x4edc05){_0x5d854e[_0x9d13('0x16')](0x194);}return _0x4edc05;};}function handleError(_0x420926,_0x2f314b){_0x2f314b=_0x2f314b||0x1f4;return function(_0x1d9f56){logger[_0x9d13('0x27')](_0x1d9f56[_0x9d13('0x28')]);if(_0x1d9f56[_0x9d13('0x29')]){delete _0x1d9f56[_0x9d13('0x29')];}_0x420926[_0x9d13('0x17')](_0x2f314b)[_0x9d13('0x2a')](_0x1d9f56);};}exports[_0x9d13('0x2b')]=function(_0x21e35a,_0x523e5e){var _0x7c953f={},_0x580aa4={},_0x2295bc={'count':0x0,'rows':[]};var _0x581ccf=_['map'](db[_0x9d13('0x2c')][_0x9d13('0x2d')],function(_0x5dcdf1){return{'name':_0x5dcdf1['fieldName'],'type':_0x5dcdf1['type'][_0x9d13('0x2e')]};});_0x580aa4['model']=_[_0x9d13('0x2f')](_0x581ccf,_0x9d13('0x29'));_0x580aa4[_0x9d13('0x30')]=_['keys'](_0x21e35a[_0x9d13('0x30')]);_0x580aa4[_0x9d13('0x31')]=_[_0x9d13('0x32')](_0x580aa4[_0x9d13('0x33')],_0x580aa4['query']);_0x7c953f['attributes']=_[_0x9d13('0x32')](_0x580aa4[_0x9d13('0x33')],qs['fields'](_0x21e35a[_0x9d13('0x30')][_0x9d13('0x34')]));_0x7c953f[_0x9d13('0x35')]=_0x7c953f[_0x9d13('0x35')][_0x9d13('0x36')]?_0x7c953f[_0x9d13('0x35')]:_0x580aa4[_0x9d13('0x33')];if(!_0x21e35a['query'][_0x9d13('0x37')]('nolimit')){_0x7c953f['limit']=qs['limit'](_0x21e35a[_0x9d13('0x30')][_0x9d13('0x1b')]);_0x7c953f[_0x9d13('0x19')]=qs[_0x9d13('0x19')](_0x21e35a[_0x9d13('0x30')]['offset']);}_0x7c953f[_0x9d13('0x38')]=qs[_0x9d13('0x39')](_0x21e35a[_0x9d13('0x30')][_0x9d13('0x39')]);_0x7c953f[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_['pick'](_0x21e35a[_0x9d13('0x30')],_0x580aa4[_0x9d13('0x31')]),_0x581ccf);if(_0x21e35a[_0x9d13('0x30')]['filter']){_0x7c953f['where']=_[_0x9d13('0x3b')](_0x7c953f[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x581ccf,function(_0x4a36ea){if(_0x4a36ea[_0x9d13('0x3c')]!==_0x9d13('0x3d')){var _0x4cff31={};_0x4cff31[_0x4a36ea[_0x9d13('0x29')]]={'$like':'%'+_0x21e35a[_0x9d13('0x30')][_0x9d13('0x3e')]+'%'};return _0x4cff31;}})});}_0x7c953f=_[_0x9d13('0x3b')]({},_0x7c953f,_0x21e35a[_0x9d13('0x3f')]);var _0x28a68c={'where':_0x7c953f[_0x9d13('0x3a')]};return db[_0x9d13('0x2c')][_0x9d13('0x1c')](_0x28a68c)['then'](function(_0x56943){_0x2295bc[_0x9d13('0x1c')]=_0x56943;if(_0x21e35a[_0x9d13('0x30')][_0x9d13('0x40')]){_0x7c953f[_0x9d13('0x41')]=[{'all':!![]}];}return db[_0x9d13('0x2c')][_0x9d13('0x42')](_0x7c953f);})['then'](function(_0x30114a){_0x2295bc[_0x9d13('0x43')]=_0x30114a;return _0x2295bc;})[_0x9d13('0x22')](respondWithFilteredResult(_0x523e5e,_0x7c953f))[_0x9d13('0x44')](handleError(_0x523e5e,null));};exports[_0x9d13('0x45')]=function(_0x427ed0,_0x5a644f){var _0x5d69b9={'raw':![],'where':{'id':_0x427ed0['params']['id']}},_0x3b9d35={};_0x3b9d35[_0x9d13('0x33')]=_['keys'](db[_0x9d13('0x2c')][_0x9d13('0x2d')]);_0x3b9d35[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x427ed0[_0x9d13('0x30')]);_0x3b9d35['filters']=_[_0x9d13('0x32')](_0x3b9d35[_0x9d13('0x33')],_0x3b9d35[_0x9d13('0x30')]);_0x5d69b9[_0x9d13('0x35')]=_[_0x9d13('0x32')](_0x3b9d35[_0x9d13('0x33')],qs[_0x9d13('0x34')](_0x427ed0[_0x9d13('0x30')][_0x9d13('0x34')]));_0x5d69b9[_0x9d13('0x35')]=_0x5d69b9['attributes']['length']?_0x5d69b9[_0x9d13('0x35')]:_0x3b9d35[_0x9d13('0x33')];if(_0x427ed0['query'][_0x9d13('0x40')]){_0x5d69b9['include']=[{'all':!![]}];}_0x5d69b9=_[_0x9d13('0x3b')]({},_0x5d69b9,_0x427ed0[_0x9d13('0x3f')]);return db['Campaign']['find'](_0x5d69b9)[_0x9d13('0x22')](handleEntityNotFound(_0x5a644f,null))[_0x9d13('0x22')](respondWithResult(_0x5a644f,null))[_0x9d13('0x44')](handleError(_0x5a644f,null));};exports[_0x9d13('0x47')]=function(_0x35865e,_0x70514d){return db[_0x9d13('0x2c')][_0x9d13('0x47')](_0x35865e[_0x9d13('0x48')],{})['then'](function(_0x3a2177){var _0x5b0c6e=_0x35865e['user'][_0x9d13('0x49')]({'plain':!![]});if(!_0x5b0c6e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5b0c6e[_0x9d13('0x4a')]===_0x9d13('0x4b')){var _0x3457e5=_0x3a2177[_0x9d13('0x49')]({'plain':!![]});var _0x1aca60=_0x9d13('0x24');return db['UserProfileSection'][_0x9d13('0x4c')]({'where':{'name':_0x1aca60,'userProfileId':_0x5b0c6e[_0x9d13('0x4d')]},'raw':!![]})[_0x9d13('0x22')](function(_0x3967e6){if(_0x3967e6&&_0x3967e6[_0x9d13('0x4e')]===0x0){return db[_0x9d13('0x25')][_0x9d13('0x47')]({'name':_0x3457e5['name'],'resourceId':_0x3457e5['id'],'type':_0x3967e6[_0x9d13('0x29')],'sectionId':_0x3967e6['id']},{})[_0x9d13('0x22')](function(){return _0x3a2177;});}else{return _0x3a2177;}})[_0x9d13('0x44')](function(_0x259628){logger[_0x9d13('0x27')](_0x9d13('0x4f'),_0x259628);throw _0x259628;});}return _0x3a2177;})[_0x9d13('0x22')](respondWithResult(_0x70514d,0xc9))[_0x9d13('0x44')](handleError(_0x70514d,null));};exports[_0x9d13('0x50')]=function(_0x415629,_0x4a9fb7){var _0x3633e4={'where':{'id':_0x415629[_0x9d13('0x51')]['id']}},_0x16401b={};_0x16401b['model']=_[_0x9d13('0x46')](db['Campaign']['rawAttributes']);_0x3633e4[_0x9d13('0x35')]=_['intersection'](_0x16401b[_0x9d13('0x33')],qs[_0x9d13('0x34')](_0x415629[_0x9d13('0x30')][_0x9d13('0x34')]));_0x3633e4[_0x9d13('0x35')]=_0x3633e4[_0x9d13('0x35')][_0x9d13('0x36')]?_0x3633e4[_0x9d13('0x35')]:_0x16401b[_0x9d13('0x33')];if(_0x415629['query'][_0x9d13('0x40')]){_0x3633e4['include']=[{'all':!![]}];}_0x3633e4=_['merge']({},_0x3633e4,_0x415629[_0x9d13('0x3f')]);return db[_0x9d13('0x2c')][_0x9d13('0x4c')](_0x3633e4)[_0x9d13('0x22')](handleEntityNotFound(_0x4a9fb7,null))[_0x9d13('0x22')](function(_0x10de1b){if(_0x10de1b){var _0x743580=_0x10de1b[_0x9d13('0x49')]({'plain':!![]});_0x743580=qs[_0x9d13('0x52')](_0x743580,['id',_0x9d13('0x53'),_0x9d13('0x54')]);_0x415629[_0x9d13('0x48')]=_[_0x9d13('0x52')](_0x415629[_0x9d13('0x48')],['id',_0x9d13('0x53'),_0x9d13('0x54')]);return db[_0x9d13('0x2c')][_0x9d13('0x47')](_['merge'](_0x743580,_0x415629['body']),{'include':_0x415629[_0x9d13('0x30')]['includeAll']?[{'all':!![]}]:undefined})[_0x9d13('0x22')](function(_0x14055b){var _0x467b93=_0x415629[_0x9d13('0x4b')][_0x9d13('0x49')]({'plain':!![]});if(!_0x467b93)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x467b93[_0x9d13('0x4a')]==='user'){var _0x4672aa=_0x14055b['get']({'plain':!![]});var _0x2d04fd=_0x9d13('0x24');return db[_0x9d13('0x55')][_0x9d13('0x4c')]({'where':{'name':_0x2d04fd,'userProfileId':_0x467b93[_0x9d13('0x4d')]},'raw':!![]})[_0x9d13('0x22')](function(_0x241728){if(_0x241728&&_0x241728[_0x9d13('0x4e')]===0x0){return db['UserProfileResource'][_0x9d13('0x47')]({'name':_0x4672aa[_0x9d13('0x29')],'resourceId':_0x4672aa['id'],'type':_0x241728['name'],'sectionId':_0x241728['id']},{})['then'](function(){return _0x14055b;});}else{return _0x14055b;}})[_0x9d13('0x44')](function(_0x45ada3){logger['error'](_0x9d13('0x4f'),_0x45ada3);throw _0x45ada3;});}return _0x14055b;});}})[_0x9d13('0x22')](respondWithResult(_0x4a9fb7,0xc9))['catch'](handleError(_0x4a9fb7,null));};exports[_0x9d13('0x21')]=function(_0x5099f8,_0x2945d6){if(_0x5099f8['body']['id']){delete _0x5099f8[_0x9d13('0x48')]['id'];}return db[_0x9d13('0x2c')][_0x9d13('0x4c')]({'where':{'id':_0x5099f8[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x2945d6,null))[_0x9d13('0x22')](saveUpdates(_0x5099f8['body'],null))[_0x9d13('0x22')](respondWithResult(_0x2945d6,null))['catch'](handleError(_0x2945d6,null));};exports[_0x9d13('0x23')]=function(_0x5d1872,_0x300d4a){return db[_0x9d13('0x2c')][_0x9d13('0x4c')]({'where':{'id':_0x5d1872[_0x9d13('0x51')]['id']}})['then'](handleEntityNotFound(_0x300d4a,null))['then'](removeEntity(_0x300d4a,null))[_0x9d13('0x44')](handleError(_0x300d4a,null));};exports[_0x9d13('0x56')]=function(_0x2ff389,_0x38a388,_0x2239c3){var _0x48c02b={'raw':!![],'where':{}};var _0x595bce={};var _0x50c412={'count':0x0,'rows':[]};return db['Campaign'][_0x9d13('0x57')]({'where':{'id':_0x2ff389[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x38a388,null))[_0x9d13('0x22')](function(_0x273c76){if(_0x273c76){_0x595bce['model']=_[_0x9d13('0x46')](db[_0x9d13('0x58')][_0x9d13('0x2d')]);_0x595bce[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x2ff389[_0x9d13('0x30')]);_0x595bce[_0x9d13('0x31')]=_[_0x9d13('0x32')](_0x595bce[_0x9d13('0x33')],_0x595bce[_0x9d13('0x30')]);_0x48c02b[_0x9d13('0x35')]=_[_0x9d13('0x32')](_0x595bce[_0x9d13('0x33')],qs['fields'](_0x2ff389['query'][_0x9d13('0x34')]));_0x48c02b[_0x9d13('0x35')]=_0x48c02b[_0x9d13('0x35')][_0x9d13('0x36')]?_0x48c02b[_0x9d13('0x35')]:_0x595bce[_0x9d13('0x33')];if(!_0x2ff389[_0x9d13('0x30')][_0x9d13('0x37')]('nolimit')){_0x48c02b[_0x9d13('0x1b')]=qs[_0x9d13('0x1b')](_0x2ff389['query']['limit']);_0x48c02b[_0x9d13('0x19')]=qs[_0x9d13('0x19')](_0x2ff389[_0x9d13('0x30')][_0x9d13('0x19')]);}_0x48c02b[_0x9d13('0x38')]=qs[_0x9d13('0x39')](_0x2ff389[_0x9d13('0x30')][_0x9d13('0x39')]);_0x48c02b[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_[_0x9d13('0x59')](_0x2ff389[_0x9d13('0x30')],_0x595bce[_0x9d13('0x31')]));_0x48c02b[_0x9d13('0x3a')][_0x9d13('0x5a')]=_0x273c76['id'];if(_0x2ff389['query']['filter']){_0x48c02b[_0x9d13('0x3a')]=_[_0x9d13('0x3b')](_0x48c02b[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x48c02b[_0x9d13('0x35')],function(_0x510f5c){var _0x77506c={};_0x77506c[_0x510f5c]={'$like':'%'+_0x2ff389[_0x9d13('0x30')][_0x9d13('0x3e')]+'%'};return _0x77506c;})});}_0x48c02b=_[_0x9d13('0x3b')]({},_0x48c02b,_0x2ff389[_0x9d13('0x3f')]);return db['CmHopper'][_0x9d13('0x1c')]({'where':_0x48c02b['where']})[_0x9d13('0x22')](function(_0x395185){_0x50c412[_0x9d13('0x1c')]=_0x395185;if(_0x2ff389[_0x9d13('0x30')][_0x9d13('0x40')]){_0x48c02b[_0x9d13('0x41')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x48c02b);})[_0x9d13('0x22')](function(_0x5aac3c){_0x50c412[_0x9d13('0x43')]=_0x5aac3c;return _0x50c412;});}})[_0x9d13('0x22')](respondWithFilteredResult(_0x38a388,_0x48c02b))['catch'](handleError(_0x38a388,null));};exports[_0x9d13('0x5b')]=function(_0x19ba54,_0x197016,_0x45e785){var _0x598baf={'raw':!![],'where':{}};var _0x26b0d9={};var _0x12c8af={'count':0x0,'rows':[]};return db['Campaign'][_0x9d13('0x57')]({'where':{'id':_0x19ba54[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x197016,null))[_0x9d13('0x22')](function(_0x5e1ffd){if(_0x5e1ffd){_0x26b0d9[_0x9d13('0x33')]=_[_0x9d13('0x46')](db[_0x9d13('0x5c')][_0x9d13('0x2d')]);_0x26b0d9[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x19ba54[_0x9d13('0x30')]);_0x26b0d9['filters']=_['intersection'](_0x26b0d9[_0x9d13('0x33')],_0x26b0d9[_0x9d13('0x30')]);_0x598baf[_0x9d13('0x35')]=_['intersection'](_0x26b0d9[_0x9d13('0x33')],qs[_0x9d13('0x34')](_0x19ba54[_0x9d13('0x30')][_0x9d13('0x34')]));_0x598baf[_0x9d13('0x35')]=_0x598baf[_0x9d13('0x35')]['length']?_0x598baf[_0x9d13('0x35')]:_0x26b0d9[_0x9d13('0x33')];if(!_0x19ba54[_0x9d13('0x30')]['hasOwnProperty']('nolimit')){_0x598baf[_0x9d13('0x1b')]=qs[_0x9d13('0x1b')](_0x19ba54[_0x9d13('0x30')][_0x9d13('0x1b')]);_0x598baf['offset']=qs[_0x9d13('0x19')](_0x19ba54['query'][_0x9d13('0x19')]);}_0x598baf[_0x9d13('0x38')]=qs[_0x9d13('0x39')](_0x19ba54[_0x9d13('0x30')][_0x9d13('0x39')]);_0x598baf[_0x9d13('0x3a')]=qs['filters'](_[_0x9d13('0x59')](_0x19ba54[_0x9d13('0x30')],_0x26b0d9[_0x9d13('0x31')]));_0x598baf[_0x9d13('0x3a')][_0x9d13('0x5a')]=_0x5e1ffd['id'];if(_0x19ba54['query']['filter']){_0x598baf['where']=_['merge'](_0x598baf[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x598baf['attributes'],function(_0x4124f5){var _0x20b20c={};_0x20b20c[_0x4124f5]={'$like':'%'+_0x19ba54[_0x9d13('0x30')][_0x9d13('0x3e')]+'%'};return _0x20b20c;})});}_0x598baf=_[_0x9d13('0x3b')]({},_0x598baf,_0x19ba54[_0x9d13('0x3f')]);return db[_0x9d13('0x5c')]['count']({'where':_0x598baf[_0x9d13('0x3a')]})[_0x9d13('0x22')](function(_0x46470c){_0x12c8af[_0x9d13('0x1c')]=_0x46470c;if(_0x19ba54[_0x9d13('0x30')][_0x9d13('0x40')]){_0x598baf[_0x9d13('0x41')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x9d13('0x42')](_0x598baf);})[_0x9d13('0x22')](function(_0x1e192a){_0x12c8af['rows']=_0x1e192a;return _0x12c8af;});}})['then'](respondWithFilteredResult(_0x197016,_0x598baf))[_0x9d13('0x44')](handleError(_0x197016,null));};exports[_0x9d13('0x5d')]=function(_0x5732ef,_0x352810,_0x1ad817){var _0x57ab46={'raw':!![],'where':{}};var _0x28df53={};var _0x1d5bab={'count':0x0,'rows':[]};return db[_0x9d13('0x2c')][_0x9d13('0x57')]({'where':{'id':_0x5732ef[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x352810,null))['then'](function(_0x38dcd4){if(_0x38dcd4){_0x28df53[_0x9d13('0x33')]=_[_0x9d13('0x46')](db[_0x9d13('0x5e')]['rawAttributes']);_0x28df53[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x5732ef['query']);_0x28df53[_0x9d13('0x31')]=_[_0x9d13('0x32')](_0x28df53[_0x9d13('0x33')],_0x28df53[_0x9d13('0x30')]);_0x57ab46[_0x9d13('0x35')]=_[_0x9d13('0x32')](_0x28df53[_0x9d13('0x33')],qs['fields'](_0x5732ef[_0x9d13('0x30')]['fields']));_0x57ab46[_0x9d13('0x35')]=_0x57ab46[_0x9d13('0x35')][_0x9d13('0x36')]?_0x57ab46[_0x9d13('0x35')]:_0x28df53[_0x9d13('0x33')];if(!_0x5732ef[_0x9d13('0x30')][_0x9d13('0x37')](_0x9d13('0x5f'))){_0x57ab46['limit']=qs['limit'](_0x5732ef['query']['limit']);_0x57ab46[_0x9d13('0x19')]=qs[_0x9d13('0x19')](_0x5732ef[_0x9d13('0x30')]['offset']);}_0x57ab46[_0x9d13('0x38')]=qs[_0x9d13('0x39')](_0x5732ef[_0x9d13('0x30')][_0x9d13('0x39')]);_0x57ab46[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_[_0x9d13('0x59')](_0x5732ef['query'],_0x28df53[_0x9d13('0x31')]));_0x57ab46[_0x9d13('0x3a')][_0x9d13('0x5a')]=_0x38dcd4['id'];if(_0x5732ef[_0x9d13('0x30')][_0x9d13('0x3e')]){_0x57ab46['where']=_['merge'](_0x57ab46[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x57ab46['attributes'],function(_0x47a30d){var _0x115149={};_0x115149[_0x47a30d]={'$like':'%'+_0x5732ef[_0x9d13('0x30')][_0x9d13('0x3e')]+'%'};return _0x115149;})});}_0x57ab46=_['merge']({},_0x57ab46,_0x5732ef[_0x9d13('0x3f')]);return db[_0x9d13('0x5e')][_0x9d13('0x1c')]({'where':_0x57ab46['where']})['then'](function(_0x49c0cb){_0x1d5bab[_0x9d13('0x1c')]=_0x49c0cb;if(_0x5732ef[_0x9d13('0x30')]['includeAll']){_0x57ab46[_0x9d13('0x41')]=[{'all':!![]}];}return db[_0x9d13('0x5e')][_0x9d13('0x42')](_0x57ab46);})[_0x9d13('0x22')](function(_0x42b00c){_0x1d5bab[_0x9d13('0x43')]=_0x42b00c;return _0x1d5bab;});}})[_0x9d13('0x22')](respondWithFilteredResult(_0x352810,_0x57ab46))['catch'](handleError(_0x352810,null));};exports[_0x9d13('0x60')]=function(_0x27dd16,_0x31dcc0,_0x2047e2){var _0x2ddb9e={'raw':!![],'where':{}};var _0xb12e35={};var _0x26a956={'count':0x0,'rows':[]};return db[_0x9d13('0x2c')][_0x9d13('0x57')]({'where':{'id':_0x27dd16[_0x9d13('0x51')]['id']}})['then'](handleEntityNotFound(_0x31dcc0,null))['then'](function(_0x408a42){if(_0x408a42){_0xb12e35[_0x9d13('0x33')]=_[_0x9d13('0x46')](db[_0x9d13('0x61')][_0x9d13('0x2d')]);_0xb12e35[_0x9d13('0x30')]=_['keys'](_0x27dd16[_0x9d13('0x30')]);_0xb12e35[_0x9d13('0x31')]=_['intersection'](_0xb12e35[_0x9d13('0x33')],_0xb12e35['query']);_0x2ddb9e[_0x9d13('0x35')]=_['intersection'](_0xb12e35[_0x9d13('0x33')],qs[_0x9d13('0x34')](_0x27dd16[_0x9d13('0x30')][_0x9d13('0x34')]));_0x2ddb9e[_0x9d13('0x35')]=_0x2ddb9e[_0x9d13('0x35')][_0x9d13('0x36')]?_0x2ddb9e[_0x9d13('0x35')]:_0xb12e35[_0x9d13('0x33')];if(!_0x27dd16['query'][_0x9d13('0x37')]('nolimit')){_0x2ddb9e[_0x9d13('0x1b')]=qs['limit'](_0x27dd16['query'][_0x9d13('0x1b')]);_0x2ddb9e[_0x9d13('0x19')]=qs[_0x9d13('0x19')](_0x27dd16[_0x9d13('0x30')]['offset']);}_0x2ddb9e[_0x9d13('0x38')]=qs[_0x9d13('0x39')](_0x27dd16[_0x9d13('0x30')]['sort']);_0x2ddb9e[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_[_0x9d13('0x59')](_0x27dd16['query'],_0xb12e35[_0x9d13('0x31')]));_0x2ddb9e[_0x9d13('0x3a')][_0x9d13('0x5a')]=_0x408a42['id'];if(_0x27dd16[_0x9d13('0x30')]['filter']){_0x2ddb9e[_0x9d13('0x3a')]=_[_0x9d13('0x3b')](_0x2ddb9e[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x2ddb9e[_0x9d13('0x35')],function(_0x4dbfc8){var _0x19f8ac={};_0x19f8ac[_0x4dbfc8]={'$like':'%'+_0x27dd16[_0x9d13('0x30')]['filter']+'%'};return _0x19f8ac;})});}_0x2ddb9e=_[_0x9d13('0x3b')]({},_0x2ddb9e,_0x27dd16[_0x9d13('0x3f')]);return db['CmHopperBlack']['count']({'where':_0x2ddb9e['where']})[_0x9d13('0x22')](function(_0x511b23){_0x26a956[_0x9d13('0x1c')]=_0x511b23;if(_0x27dd16['query'][_0x9d13('0x40')]){_0x2ddb9e['include']=[{'all':!![]}];}return db[_0x9d13('0x61')]['findAll'](_0x2ddb9e);})[_0x9d13('0x22')](function(_0x3c8077){_0x26a956['rows']=_0x3c8077;return _0x26a956;});}})[_0x9d13('0x22')](respondWithFilteredResult(_0x31dcc0,_0x2ddb9e))[_0x9d13('0x44')](handleError(_0x31dcc0,null));};exports['getLists']=function(_0x2e5733,_0x4d6f37,_0x23f0ab){var _0x1ca492={};var _0x32b532={};var _0x5da603;var _0x537ef7;return db[_0x9d13('0x2c')][_0x9d13('0x57')]({'where':{'id':_0x2e5733['params']['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x4d6f37,null))['then'](function(_0x835f24){if(_0x835f24){_0x5da603=_0x835f24;_0x32b532[_0x9d13('0x33')]=_[_0x9d13('0x46')](db[_0x9d13('0x62')][_0x9d13('0x2d')]);_0x32b532[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x2e5733[_0x9d13('0x30')]);_0x32b532[_0x9d13('0x31')]=_[_0x9d13('0x32')](_0x32b532[_0x9d13('0x33')],_0x32b532[_0x9d13('0x30')]);_0x1ca492[_0x9d13('0x35')]=_[_0x9d13('0x32')](_0x32b532['model'],qs[_0x9d13('0x34')](_0x2e5733[_0x9d13('0x30')][_0x9d13('0x34')]));_0x1ca492['attributes']=_0x1ca492[_0x9d13('0x35')]['length']?_0x1ca492[_0x9d13('0x35')]:_0x32b532[_0x9d13('0x33')];_0x1ca492['order']=qs[_0x9d13('0x39')](_0x2e5733[_0x9d13('0x30')][_0x9d13('0x39')]);_0x1ca492[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_[_0x9d13('0x59')](_0x2e5733[_0x9d13('0x30')],_0x32b532[_0x9d13('0x31')]));if(_0x2e5733['query'][_0x9d13('0x3e')]){_0x1ca492[_0x9d13('0x3a')]=_[_0x9d13('0x3b')](_0x1ca492[_0x9d13('0x3a')],{'$or':_[_0x9d13('0x2f')](_0x1ca492[_0x9d13('0x35')],function(_0x3a7f37){var _0xcd8a7a={};_0xcd8a7a[_0x3a7f37]={'$like':'%'+_0x2e5733[_0x9d13('0x30')]['filter']+'%'};return _0xcd8a7a;})});}_0x1ca492=_['merge']({},_0x1ca492,_0x2e5733['options']);return _0x5da603['getLists'](_0x1ca492);}})['then'](function(_0x20560c){if(_0x20560c){_0x537ef7=_0x20560c[_0x9d13('0x36')];if(!_0x2e5733[_0x9d13('0x30')][_0x9d13('0x37')](_0x9d13('0x5f'))){_0x1ca492['limit']=qs[_0x9d13('0x1b')](_0x2e5733['query'][_0x9d13('0x1b')]);_0x1ca492[_0x9d13('0x19')]=qs[_0x9d13('0x19')](_0x2e5733[_0x9d13('0x30')][_0x9d13('0x19')]);}return _0x5da603[_0x9d13('0x63')](_0x1ca492);}})[_0x9d13('0x22')](function(_0x10c5ee){if(_0x10c5ee){return _0x10c5ee?{'count':_0x537ef7,'rows':_0x10c5ee}:null;}})[_0x9d13('0x22')](respondWithResult(_0x4d6f37,null))[_0x9d13('0x44')](handleError(_0x4d6f37,null));};exports[_0x9d13('0x64')]=function(_0x544eaa,_0xa8443e,_0x3eab85){var _0x4b040a,_0x571a18;var _0x124578=[];var _0x47a2a3=moment()[_0x9d13('0x65')](_0x9d13('0x66'));return db[_0x9d13('0x2c')][_0x9d13('0x4c')]({'where':{'id':_0x544eaa[_0x9d13('0x51')]['id']}})['then'](handleEntityNotFound(_0xa8443e,null))['then'](function(_0x56ae22){if(_0x56ae22){_0x571a18=_0x56ae22;return _0x56ae22[_0x9d13('0x64')](_0x544eaa[_0x9d13('0x48')][_0x9d13('0x67')],_[_0x9d13('0x52')](_0x544eaa[_0x9d13('0x48')],[_0x9d13('0x67'),'id'])||{});}return null;})[_0x9d13('0x68')](function(_0x14667b){var _0x7317c8;var _0x4d3035;_0x4b040a=_0x14667b||[];var _0x302a58=[];if(_0x14667b){for(var _0x32c85d=0x0;_0x32c85d<_0x14667b[_0x9d13('0x36')];_0x32c85d+=0x1){var _0x5d27ca=_0x14667b[_0x32c85d][_0x9d13('0x49')]({'plain':!![]});_0x571a18['dialCheckDuplicateType']=_0x544eaa[_0x9d13('0x48')]['dialCheckDuplicateType']?_0x544eaa[_0x9d13('0x48')]['dialCheckDuplicateType']:_0x571a18['dialCheckDuplicateType'];switch(_0x571a18[_0x9d13('0x69')]){case'always':_0x7317c8=squel[_0x9d13('0x6a')]()[_0x9d13('0x6b')]('cm_hopper')[_0x9d13('0x6c')]([_0x9d13('0x6d'),_0x9d13('0x6e'),'ContactId',_0x9d13('0x6f'),_0x9d13('0x5a'),'createdAt','updatedAt'],squel[_0x9d13('0x70')]()['field'](_0x9d13('0x6d'),_0x9d13('0x6d'))[_0x9d13('0x71')](_0x9d13('0x72'),_0x9d13('0x6e'))[_0x9d13('0x71')]('id',_0x9d13('0x73'))[_0x9d13('0x71')](_0x5d27ca[_0x9d13('0x74')][_0x9d13('0x75')](),'ListId')[_0x9d13('0x71')](_0x544eaa['params']['id']['toString'](),_0x9d13('0x5a'))[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27',_0x9d13('0x53'))['field']('\x27'+_0x47a2a3+'\x27',_0x9d13('0x54'))[_0x9d13('0x76')](_0x9d13('0x77'))['where']('deletedAt\x20IS\x20NULL')[_0x9d13('0x3a')](_0x9d13('0x78'),_0x5d27ca[_0x9d13('0x74')]['toString']())[_0x9d13('0x3a')]('phone\x20IS\x20NOT\x20NULL')[_0x9d13('0x3a')](_0x9d13('0x79'),squel[_0x9d13('0x70')]()[_0x9d13('0x71')](_0x9d13('0x7a'))['from']('cm_hopper_final')[_0x9d13('0x3a')](_0x9d13('0x7b'),_0x544eaa['params']['id'][_0x9d13('0x75')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0x9d13('0x7c'))[_0x9d13('0x76')]('cm_hopper')[_0x9d13('0x3a')](_0x9d13('0x7b'),_0x544eaa[_0x9d13('0x51')]['id'][_0x9d13('0x75')]())))[_0x9d13('0x75')]();break;case _0x9d13('0x7d'):_0x7317c8=squel[_0x9d13('0x6a')]()['into']('cm_hopper')['fromQuery']([_0x9d13('0x6d'),_0x9d13('0x6e'),_0x9d13('0x73'),_0x9d13('0x6f'),'CampaignId','createdAt',_0x9d13('0x54')],squel['select']()['field'](_0x9d13('0x6d'),_0x9d13('0x6d'))[_0x9d13('0x71')](_0x9d13('0x72'),_0x9d13('0x6e'))[_0x9d13('0x71')]('id',_0x9d13('0x73'))['field'](_0x5d27ca[_0x9d13('0x74')]['toString'](),_0x9d13('0x6f'))[_0x9d13('0x71')](_0x544eaa['params']['id'][_0x9d13('0x75')](),'CampaignId')[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27',_0x9d13('0x53'))[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27','updatedAt')[_0x9d13('0x76')](_0x9d13('0x77'))[_0x9d13('0x3a')](_0x9d13('0x7e'))['where'](_0x9d13('0x78'),_0x5d27ca[_0x9d13('0x74')][_0x9d13('0x75')]())['where']('phone\x20IS\x20NOT\x20NULL')['where'](_0x9d13('0x79'),squel[_0x9d13('0x70')]()[_0x9d13('0x71')](_0x9d13('0x7c'))[_0x9d13('0x76')](_0x9d13('0x7f'))[_0x9d13('0x3a')](_0x9d13('0x7b'),_0x544eaa[_0x9d13('0x51')]['id'][_0x9d13('0x75')]())))['toString']();break;default:_0x7317c8=squel['insert']()[_0x9d13('0x6b')](_0x9d13('0x7f'))[_0x9d13('0x6c')]([_0x9d13('0x6d'),_0x9d13('0x6e'),_0x9d13('0x73'),'ListId','CampaignId',_0x9d13('0x53'),'updatedAt'],squel[_0x9d13('0x70')]()[_0x9d13('0x71')]('phone','phone')[_0x9d13('0x71')](_0x9d13('0x72'),'scheduledAt')[_0x9d13('0x71')]('id',_0x9d13('0x73'))[_0x9d13('0x71')](_0x5d27ca[_0x9d13('0x74')][_0x9d13('0x75')](),_0x9d13('0x6f'))[_0x9d13('0x71')](_0x544eaa[_0x9d13('0x51')]['id'][_0x9d13('0x75')](),_0x9d13('0x5a'))[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27','createdAt')[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27',_0x9d13('0x54'))[_0x9d13('0x76')](_0x9d13('0x77'))[_0x9d13('0x3a')](_0x9d13('0x7e'))[_0x9d13('0x3a')](_0x9d13('0x78'),_0x5d27ca['CmListId'][_0x9d13('0x75')]())[_0x9d13('0x3a')](_0x9d13('0x80')))[_0x9d13('0x75')]();}_0x4d3035=squel[_0x9d13('0x6a')]()[_0x9d13('0x6b')](_0x9d13('0x81'))['fromQuery']([_0x9d13('0x82'),_0x9d13('0x6e'),_0x9d13('0x6d'),_0x9d13('0x83'),_0x9d13('0x53'),_0x9d13('0x54')],squel[_0x9d13('0x70')]()[_0x9d13('0x71')]('h.id','id')[_0x9d13('0x71')](_0x9d13('0x72'),_0x9d13('0x6e'))[_0x9d13('0x71')](_0x9d13('0x84'),_0x9d13('0x6d'))[_0x9d13('0x71')](_0x9d13('0x85'),'OrderBy')[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27',_0x9d13('0x53'))[_0x9d13('0x71')]('\x27'+_0x47a2a3+'\x27',_0x9d13('0x54'))[_0x9d13('0x76')](_0x9d13('0x86'),'ci')[_0x9d13('0x87')]('cm_hopper','h',_0x9d13('0x88'))[_0x9d13('0x3a')](_0x9d13('0x89'),_0x5d27ca[_0x9d13('0x74')][_0x9d13('0x75')]())[_0x9d13('0x3a')](_0x9d13('0x8a'),_0x544eaa[_0x9d13('0x51')]['id']['toString']())[_0x9d13('0x3a')]('h.createdAt\x20=\x20?',_0x47a2a3))[_0x9d13('0x75')]();_0x302a58[_0x9d13('0x8b')](db[_0x9d13('0x8c')]['query'](_0x7317c8));_0x124578[_0x9d13('0x8b')](db[_0x9d13('0x8c')][_0x9d13('0x30')](_0x4d3035));}return BPromise[_0x9d13('0x8d')](_0x302a58);}})['then'](function(){return BPromise[_0x9d13('0x8d')](_0x124578);})['then'](function(){return _0x4b040a;})[_0x9d13('0x22')](respondWithResult(_0xa8443e,null))[_0x9d13('0x44')](handleError(_0xa8443e,null));};exports[_0x9d13('0x8e')]=function(_0x5ce426,_0x4d6501,_0x16fed2){return db[_0x9d13('0x2c')][_0x9d13('0x4c')]({'where':{'id':_0x5ce426['params']['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x4d6501,null))['then'](function(_0x3a1741){if(_0x3a1741){return _0x3a1741[_0x9d13('0x8e')](_0x5ce426[_0x9d13('0x30')][_0x9d13('0x67')]);}})[_0x9d13('0x22')](function(_0xa28ad4){if(_0xa28ad4){return db[_0x9d13('0x58')]['destroy']({'where':{'ListId':_0x5ce426[_0x9d13('0x30')][_0x9d13('0x67')],'CampaignId':_0x5ce426[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](function(){return _0xa28ad4;});}})[_0x9d13('0x22')](respondWithStatusCode(_0x4d6501,null))[_0x9d13('0x44')](handleError(_0x4d6501,null));};exports['getBlackLists']=function(_0x368305,_0x52de2f,_0x43df61){var _0x265c7e={};var _0x32a901={};var _0x4c2eab;var _0x478d4d;return db[_0x9d13('0x2c')][_0x9d13('0x57')]({'where':{'id':_0x368305[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x52de2f,null))[_0x9d13('0x22')](function(_0x3a3945){if(_0x3a3945){_0x4c2eab=_0x3a3945;_0x32a901['model']=_['keys'](db[_0x9d13('0x62')][_0x9d13('0x2d')]);_0x32a901[_0x9d13('0x30')]=_[_0x9d13('0x46')](_0x368305[_0x9d13('0x30')]);_0x32a901[_0x9d13('0x31')]=_[_0x9d13('0x32')](_0x32a901[_0x9d13('0x33')],_0x32a901[_0x9d13('0x30')]);_0x265c7e[_0x9d13('0x35')]=_[_0x9d13('0x32')](_0x32a901[_0x9d13('0x33')],qs[_0x9d13('0x34')](_0x368305[_0x9d13('0x30')][_0x9d13('0x34')]));_0x265c7e['attributes']=_0x265c7e[_0x9d13('0x35')][_0x9d13('0x36')]?_0x265c7e[_0x9d13('0x35')]:_0x32a901['model'];_0x265c7e[_0x9d13('0x38')]=qs['sort'](_0x368305[_0x9d13('0x30')][_0x9d13('0x39')]);_0x265c7e[_0x9d13('0x3a')]=qs[_0x9d13('0x31')](_[_0x9d13('0x59')](_0x368305[_0x9d13('0x30')],_0x32a901['filters']));if(_0x368305[_0x9d13('0x30')][_0x9d13('0x3e')]){_0x265c7e[_0x9d13('0x3a')]=_[_0x9d13('0x3b')](_0x265c7e['where'],{'$or':_[_0x9d13('0x2f')](_0x265c7e['attributes'],function(_0x425c9a){var _0xdf83cc={};_0xdf83cc[_0x425c9a]={'$like':'%'+_0x368305[_0x9d13('0x30')][_0x9d13('0x3e')]+'%'};return _0xdf83cc;})});}_0x265c7e=_['merge']({},_0x265c7e,_0x368305['options']);return _0x4c2eab[_0x9d13('0x8f')](_0x265c7e);}})[_0x9d13('0x22')](function(_0x3697af){if(_0x3697af){_0x478d4d=_0x3697af[_0x9d13('0x36')];if(!_0x368305['query']['hasOwnProperty'](_0x9d13('0x5f'))){_0x265c7e[_0x9d13('0x1b')]=qs[_0x9d13('0x1b')](_0x368305[_0x9d13('0x30')]['limit']);_0x265c7e[_0x9d13('0x19')]=qs['offset'](_0x368305['query'][_0x9d13('0x19')]);}return _0x4c2eab[_0x9d13('0x8f')](_0x265c7e);}})[_0x9d13('0x22')](function(_0x22b8d3){if(_0x22b8d3){return _0x22b8d3?{'count':_0x478d4d,'rows':_0x22b8d3}:null;}})[_0x9d13('0x22')](respondWithResult(_0x52de2f,null))[_0x9d13('0x44')](handleError(_0x52de2f,null));};exports['addBlackLists']=function(_0x3da927,_0x113c2e,_0x2749dd){var _0x239f16,_0x594bc9;var _0xabdd4f=[];var _0x467cda=moment()[_0x9d13('0x65')](_0x9d13('0x66'));return db['Campaign'][_0x9d13('0x4c')]({'where':{'id':_0x3da927[_0x9d13('0x51')]['id']}})[_0x9d13('0x22')](handleEntityNotFound(_0x113c2e,null))[_0x9d13('0x22')](function(_0x2fc27d){if(_0x2fc27d){_0x594bc9=_0x2fc27d;return _0x2fc27d['addBlackLists'](_0x3da927[_0x9d13('0x48')][_0x9d13('0x67')],_[_0x9d13('0x52')](_0x3da927[_0x9d13('0x48')],[_0x9d13('0x67'),'id'])||{});}return null;})['spread'](function(_0x3de94e){var _0x53e061;var _0x4f9bc4;_0x239f16=_0x3de94e||[];var _0x5370c9=[];if(_0x3de94e){for(var _0x575ff3=0x0;_0x575ff3<_0x3de94e[_0x9d13('0x36')];_0x575ff3+=0x1){var _0x4ec691=_0x3de94e[_0x575ff3]['get']({'plain':!![]});_0x53e061=squel['insert']()[_0x9d13('0x6b')](_0x9d13('0x90'))[_0x9d13('0x6c')]([_0x9d13('0x6d'),_0x9d13('0x73'),_0x9d13('0x6f'),_0x9d13('0x5a'),_0x9d13('0x53'),_0x9d13('0x54')],squel[_0x9d13('0x70')]()[_0x9d13('0x71')](_0x9d13('0x6d'),'phone')[_0x9d13('0x71')]('id','ContactId')[_0x9d13('0x71')](_0x4ec691[_0x9d13('0x74')][_0x9d13('0x75')](),_0x9d13('0x6f'))[_0x9d13('0x71')](_0x3da927[_0x9d13('0x51')]['id'][_0x9d13('0x75')](),_0x9d13('0x5a'))[_0x9d13('0x71')]('NOW()',_0x9d13('0x53'))[_0x9d13('0x71')](_0x9d13('0x72'),_0x9d13('0x54'))[_0x9d13('0x76')](_0x9d13('0x77'))[_0x9d13('0x3a')](_0x9d13('0x7e'))['where']('ListId\x20=\x20?',_0x4ec691['CmListId'][_0x9d13('0x75')]())['where'](_0x9d13('0x80')))[_0x9d13('0x75')]();_0x5370c9[_0x9d13('0x8b')](db[_0x9d13('0x8c')][_0x9d13('0x30')](_0x53e061));}return BPromise[_0x9d13('0x8d')](_0x5370c9);}})[_0x9d13('0x22')](function(){return _0x239f16;})['then'](respondWithResult(_0x113c2e,null))['catch'](handleError(_0x113c2e,null));};exports[_0x9d13('0x91')]=function(_0x30d0a6,_0x18e95a,_0x3082b1){return db[_0x9d13('0x2c')][_0x9d13('0x4c')]({'where':{'id':_0x30d0a6[_0x9d13('0x51')]['id']}})['then'](handleEntityNotFound(_0x18e95a,null))[_0x9d13('0x22')](function(_0x4e35c9){if(_0x4e35c9){return _0x4e35c9[_0x9d13('0x91')](_0x30d0a6[_0x9d13('0x30')][_0x9d13('0x67')]);}})[_0x9d13('0x22')](function(_0x18fbab){if(_0x18fbab){return db[_0x9d13('0x61')][_0x9d13('0x23')]({'where':{'ListId':_0x30d0a6['query'][_0x9d13('0x67')],'CampaignId':_0x30d0a6['params']['id']}})[_0x9d13('0x22')](function(){return _0x18fbab;});}})['then'](respondWithStatusCode(_0x18e95a,null))[_0x9d13('0x44')](handleError(_0x18e95a,null));};
\ No newline at end of file
+var _0x854f=['format','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','select','phone','field','NOW()','CmListId','toString','from','cm_contacts','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','cm_hopper_additional_phones','OrderBy','h.id','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','update','destroy','IvrCampaigns','UserProfileResource','then','error','stack','name','send','index','map','Campaign','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','find','omit','updatedAt','body','createdAt','getHoppers','CmHopper','order','CampaignId','rows','getHopperHistories','findOne','CmHopperHistory','nolimit','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x854f,0xc1));var _0xf854=function(_0x3ca877,_0x1882c0){_0x3ca877=_0x3ca877-0x0;var _0x5d3f3b=_0x854f[_0x3ca877];return _0x5d3f3b;};'use strict';var emlformat=require(_0xf854('0x0'));var rimraf=require(_0xf854('0x1'));var zipdir=require(_0xf854('0x2'));var jsonpatch=require(_0xf854('0x3'));var rp=require(_0xf854('0x4'));var moment=require(_0xf854('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf854('0x6'));var util=require('util');var path=require(_0xf854('0x7'));var sox=require(_0xf854('0x8'));var csv=require(_0xf854('0x9'));var ejs=require(_0xf854('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf854('0xb'));var squel=require(_0xf854('0xc'));var crypto=require(_0xf854('0xd'));var jsforce=require(_0xf854('0xe'));var deskjs=require(_0xf854('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf854('0x10'));var Papa=require(_0xf854('0x11'));var Redis=require('ioredis');var authService=require(_0xf854('0x12'));var qs=require(_0xf854('0x13'));var as=require(_0xf854('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf854('0x15'))(_0xf854('0x16'));var utils=require(_0xf854('0x17'));var config=require(_0xf854('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf854('0x19'))['db'];function respondWithStatusCode(_0x19d849,_0xdaa0a5){_0xdaa0a5=_0xdaa0a5||0xcc;return function(_0x3239b4){if(_0x3239b4){return _0x19d849[_0xf854('0x1a')](_0xdaa0a5);}return _0x19d849[_0xf854('0x1b')](_0xdaa0a5)[_0xf854('0x1c')]();};}function respondWithResult(_0x4eb4dc,_0x241c50){_0x241c50=_0x241c50||0xc8;return function(_0x46753e){if(_0x46753e){return _0x4eb4dc['status'](_0x241c50)[_0xf854('0x1d')](_0x46753e);}};}function respondWithFilteredResult(_0x15b60a,_0x2db042){return function(_0x5a65c1){if(_0x5a65c1){var _0x196ed8=typeof _0x2db042[_0xf854('0x1e')]==='undefined'&&typeof _0x2db042['limit']===_0xf854('0x1f');var _0x376113=_0x5a65c1[_0xf854('0x20')];var _0x2d5b05=_0x196ed8?0x0:_0x2db042[_0xf854('0x1e')];var _0x47717d=_0x196ed8?_0x5a65c1['count']:_0x2db042[_0xf854('0x1e')]+_0x2db042[_0xf854('0x21')];var _0x56b135;if(_0x47717d>=_0x376113){_0x47717d=_0x376113;_0x56b135=0xc8;}else{_0x56b135=0xce;}_0x15b60a[_0xf854('0x1b')](_0x56b135);return _0x15b60a['set'](_0xf854('0x22'),_0x2d5b05+'-'+_0x47717d+'/'+_0x376113)[_0xf854('0x1d')](_0x5a65c1);}return null;};}function patchUpdates(_0xbcd39f){return function(_0xf01993){try{jsonpatch['apply'](_0xf01993,_0xbcd39f,!![]);}catch(_0x54a4df){return BPromise['reject'](_0x54a4df);}return _0xf01993['save']();};}function saveUpdates(_0xf3ab01,_0x57a7fe){return function(_0x28c2e8){if(_0x28c2e8){return _0x28c2e8[_0xf854('0x23')](_0xf3ab01)['then'](function(_0x3edd49){return _0x3edd49;});}return null;};}function removeEntity(_0x59fe26,_0x1ee9d9){return function(_0x29bcdf){if(_0x29bcdf){return _0x29bcdf[_0xf854('0x24')]()['then'](function(){var _0x4bf3b2=_0x29bcdf['get']({'plain':!![]});var _0x4152a9=_0xf854('0x25');return db[_0xf854('0x26')][_0xf854('0x24')]({'where':{'type':_0x4152a9,'resourceId':_0x4bf3b2['id']}})[_0xf854('0x27')](function(){return _0x29bcdf;});})[_0xf854('0x27')](function(){_0x59fe26[_0xf854('0x1b')](0xcc)[_0xf854('0x1c')]();});}};}function handleEntityNotFound(_0x26da4b,_0x539b5a){return function(_0x4b6b60){if(!_0x4b6b60){_0x26da4b['sendStatus'](0x194);}return _0x4b6b60;};}function handleError(_0x23da50,_0x534369){_0x534369=_0x534369||0x1f4;return function(_0x489c37){logger[_0xf854('0x28')](_0x489c37[_0xf854('0x29')]);if(_0x489c37[_0xf854('0x2a')]){delete _0x489c37[_0xf854('0x2a')];}_0x23da50[_0xf854('0x1b')](_0x534369)[_0xf854('0x2b')](_0x489c37);};}exports[_0xf854('0x2c')]=function(_0x3a4676,_0x26af22){var _0x34170b={},_0x489b5f={},_0x21b020={'count':0x0,'rows':[]};var _0x239bd0=_[_0xf854('0x2d')](db[_0xf854('0x2e')]['rawAttributes'],function(_0xf43358){return{'name':_0xf43358['fieldName'],'type':_0xf43358['type']['key']};});_0x489b5f[_0xf854('0x2f')]=_[_0xf854('0x2d')](_0x239bd0,'name');_0x489b5f[_0xf854('0x30')]=_[_0xf854('0x31')](_0x3a4676[_0xf854('0x30')]);_0x489b5f[_0xf854('0x32')]=_['intersection'](_0x489b5f[_0xf854('0x2f')],_0x489b5f[_0xf854('0x30')]);_0x34170b['attributes']=_[_0xf854('0x33')](_0x489b5f[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x3a4676[_0xf854('0x30')][_0xf854('0x34')]));_0x34170b['attributes']=_0x34170b['attributes'][_0xf854('0x35')]?_0x34170b[_0xf854('0x36')]:_0x489b5f['model'];if(!_0x3a4676[_0xf854('0x30')][_0xf854('0x37')]('nolimit')){_0x34170b[_0xf854('0x21')]=qs[_0xf854('0x21')](_0x3a4676[_0xf854('0x30')][_0xf854('0x21')]);_0x34170b[_0xf854('0x1e')]=qs[_0xf854('0x1e')](_0x3a4676[_0xf854('0x30')][_0xf854('0x1e')]);}_0x34170b['order']=qs[_0xf854('0x38')](_0x3a4676[_0xf854('0x30')][_0xf854('0x38')]);_0x34170b['where']=qs[_0xf854('0x32')](_[_0xf854('0x39')](_0x3a4676['query'],_0x489b5f[_0xf854('0x32')]),_0x239bd0);if(_0x3a4676[_0xf854('0x30')][_0xf854('0x3a')]){_0x34170b[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0x34170b[_0xf854('0x3b')],{'$or':_[_0xf854('0x2d')](_0x239bd0,function(_0x3fb753){if(_0x3fb753[_0xf854('0x3d')]!==_0xf854('0x3e')){var _0x173bdc={};_0x173bdc[_0x3fb753[_0xf854('0x2a')]]={'$like':'%'+_0x3a4676['query'][_0xf854('0x3a')]+'%'};return _0x173bdc;}})});}_0x34170b=_[_0xf854('0x3c')]({},_0x34170b,_0x3a4676[_0xf854('0x3f')]);var _0x499063={'where':_0x34170b[_0xf854('0x3b')]};return db[_0xf854('0x2e')][_0xf854('0x20')](_0x499063)[_0xf854('0x27')](function(_0x22e87e){_0x21b020[_0xf854('0x20')]=_0x22e87e;if(_0x3a4676[_0xf854('0x30')][_0xf854('0x40')]){_0x34170b[_0xf854('0x41')]=[{'all':!![]}];}return db[_0xf854('0x2e')][_0xf854('0x42')](_0x34170b);})[_0xf854('0x27')](function(_0x2fae8c){_0x21b020['rows']=_0x2fae8c;return _0x21b020;})[_0xf854('0x27')](respondWithFilteredResult(_0x26af22,_0x34170b))[_0xf854('0x43')](handleError(_0x26af22,null));};exports[_0xf854('0x44')]=function(_0x47dbd3,_0x568fef){var _0x27e767={'raw':![],'where':{'id':_0x47dbd3[_0xf854('0x45')]['id']}},_0x34d48c={};_0x34d48c[_0xf854('0x2f')]=_[_0xf854('0x31')](db[_0xf854('0x2e')]['rawAttributes']);_0x34d48c['query']=_[_0xf854('0x31')](_0x47dbd3[_0xf854('0x30')]);_0x34d48c[_0xf854('0x32')]=_[_0xf854('0x33')](_0x34d48c['model'],_0x34d48c[_0xf854('0x30')]);_0x27e767[_0xf854('0x36')]=_[_0xf854('0x33')](_0x34d48c[_0xf854('0x2f')],qs['fields'](_0x47dbd3[_0xf854('0x30')][_0xf854('0x34')]));_0x27e767[_0xf854('0x36')]=_0x27e767[_0xf854('0x36')]['length']?_0x27e767[_0xf854('0x36')]:_0x34d48c[_0xf854('0x2f')];if(_0x47dbd3['query'][_0xf854('0x40')]){_0x27e767[_0xf854('0x41')]=[{'all':!![]}];}_0x27e767=_[_0xf854('0x3c')]({},_0x27e767,_0x47dbd3[_0xf854('0x3f')]);return db[_0xf854('0x2e')]['find'](_0x27e767)[_0xf854('0x27')](handleEntityNotFound(_0x568fef,null))[_0xf854('0x27')](respondWithResult(_0x568fef,null))['catch'](handleError(_0x568fef,null));};exports[_0xf854('0x46')]=function(_0x5286fb,_0xd304e8){return db[_0xf854('0x2e')][_0xf854('0x46')](_0x5286fb['body'],{})['then'](function(_0x767c2){var _0xe749dd=_0x5286fb[_0xf854('0x47')][_0xf854('0x48')]({'plain':!![]});if(!_0xe749dd)throw new Error(_0xf854('0x49'));if(_0xe749dd[_0xf854('0x4a')]===_0xf854('0x47')){var _0x59831e=_0x767c2[_0xf854('0x48')]({'plain':!![]});var _0x505031=_0xf854('0x25');return db[_0xf854('0x4b')]['find']({'where':{'name':_0x505031,'userProfileId':_0xe749dd[_0xf854('0x4c')]},'raw':!![]})['then'](function(_0x589126){if(_0x589126&&_0x589126[_0xf854('0x4d')]===0x0){return db[_0xf854('0x26')]['create']({'name':_0x59831e[_0xf854('0x2a')],'resourceId':_0x59831e['id'],'type':_0x589126[_0xf854('0x2a')],'sectionId':_0x589126['id']},{})[_0xf854('0x27')](function(){return _0x767c2;});}else{return _0x767c2;}})[_0xf854('0x43')](function(_0x44c94b){logger['error'](_0xf854('0x4e'),_0x44c94b);throw _0x44c94b;});}return _0x767c2;})[_0xf854('0x27')](respondWithResult(_0xd304e8,0xc9))[_0xf854('0x43')](handleError(_0xd304e8,null));};exports[_0xf854('0x4f')]=function(_0x5b2f36,_0x4451ed){var _0x5570ca={'where':{'id':_0x5b2f36[_0xf854('0x45')]['id']}},_0x6e3d3b={};_0x6e3d3b[_0xf854('0x2f')]=_['keys'](db[_0xf854('0x2e')][_0xf854('0x50')]);_0x5570ca[_0xf854('0x36')]=_[_0xf854('0x33')](_0x6e3d3b[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x5b2f36[_0xf854('0x30')][_0xf854('0x34')]));_0x5570ca['attributes']=_0x5570ca[_0xf854('0x36')]['length']?_0x5570ca[_0xf854('0x36')]:_0x6e3d3b[_0xf854('0x2f')];if(_0x5b2f36[_0xf854('0x30')][_0xf854('0x40')]){_0x5570ca[_0xf854('0x41')]=[{'all':!![]}];}_0x5570ca=_[_0xf854('0x3c')]({},_0x5570ca,_0x5b2f36[_0xf854('0x3f')]);return db['Campaign'][_0xf854('0x51')](_0x5570ca)[_0xf854('0x27')](handleEntityNotFound(_0x4451ed,null))[_0xf854('0x27')](function(_0x31b47f){if(_0x31b47f){var _0x30e486=_0x31b47f['get']({'plain':!![]});_0x30e486=qs[_0xf854('0x52')](_0x30e486,['id','createdAt',_0xf854('0x53')]);_0x5b2f36[_0xf854('0x54')]=_[_0xf854('0x52')](_0x5b2f36[_0xf854('0x54')],['id',_0xf854('0x55'),_0xf854('0x53')]);return db[_0xf854('0x2e')]['create'](_[_0xf854('0x3c')](_0x30e486,_0x5b2f36[_0xf854('0x54')]),{'include':_0x5b2f36[_0xf854('0x30')][_0xf854('0x40')]?[{'all':!![]}]:undefined})[_0xf854('0x27')](function(_0x4fa875){var _0x145df5=_0x5b2f36[_0xf854('0x47')][_0xf854('0x48')]({'plain':!![]});if(!_0x145df5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x145df5['role']===_0xf854('0x47')){var _0x46264c=_0x4fa875['get']({'plain':!![]});var _0x58e81c=_0xf854('0x25');return db['UserProfileSection'][_0xf854('0x51')]({'where':{'name':_0x58e81c,'userProfileId':_0x145df5[_0xf854('0x4c')]},'raw':!![]})[_0xf854('0x27')](function(_0x55c860){if(_0x55c860&&_0x55c860[_0xf854('0x4d')]===0x0){return db[_0xf854('0x26')][_0xf854('0x46')]({'name':_0x46264c[_0xf854('0x2a')],'resourceId':_0x46264c['id'],'type':_0x55c860['name'],'sectionId':_0x55c860['id']},{})[_0xf854('0x27')](function(){return _0x4fa875;});}else{return _0x4fa875;}})['catch'](function(_0x3df0e4){logger[_0xf854('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3df0e4);throw _0x3df0e4;});}return _0x4fa875;});}})['then'](respondWithResult(_0x4451ed,0xc9))[_0xf854('0x43')](handleError(_0x4451ed,null));};exports[_0xf854('0x23')]=function(_0x43580b,_0x4af6ca){if(_0x43580b[_0xf854('0x54')]['id']){delete _0x43580b[_0xf854('0x54')]['id'];}return db['Campaign'][_0xf854('0x51')]({'where':{'id':_0x43580b['params']['id']}})['then'](handleEntityNotFound(_0x4af6ca,null))['then'](saveUpdates(_0x43580b['body'],null))[_0xf854('0x27')](respondWithResult(_0x4af6ca,null))[_0xf854('0x43')](handleError(_0x4af6ca,null));};exports['destroy']=function(_0x2dbd5e,_0x187d36){return db[_0xf854('0x2e')]['find']({'where':{'id':_0x2dbd5e[_0xf854('0x45')]['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x187d36,null))[_0xf854('0x27')](removeEntity(_0x187d36,null))[_0xf854('0x43')](handleError(_0x187d36,null));};exports[_0xf854('0x56')]=function(_0x170060,_0x27c9ab,_0x411595){var _0x360ac4={'raw':!![],'where':{}};var _0x41c533={};var _0x110403={'count':0x0,'rows':[]};return db[_0xf854('0x2e')]['findOne']({'where':{'id':_0x170060[_0xf854('0x45')]['id']}})['then'](handleEntityNotFound(_0x27c9ab,null))[_0xf854('0x27')](function(_0x469ccb){if(_0x469ccb){_0x41c533[_0xf854('0x2f')]=_['keys'](db[_0xf854('0x57')][_0xf854('0x50')]);_0x41c533[_0xf854('0x30')]=_['keys'](_0x170060['query']);_0x41c533[_0xf854('0x32')]=_['intersection'](_0x41c533[_0xf854('0x2f')],_0x41c533[_0xf854('0x30')]);_0x360ac4[_0xf854('0x36')]=_['intersection'](_0x41c533[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x170060[_0xf854('0x30')][_0xf854('0x34')]));_0x360ac4[_0xf854('0x36')]=_0x360ac4[_0xf854('0x36')][_0xf854('0x35')]?_0x360ac4[_0xf854('0x36')]:_0x41c533[_0xf854('0x2f')];if(!_0x170060['query'][_0xf854('0x37')]('nolimit')){_0x360ac4[_0xf854('0x21')]=qs[_0xf854('0x21')](_0x170060['query'][_0xf854('0x21')]);_0x360ac4[_0xf854('0x1e')]=qs[_0xf854('0x1e')](_0x170060[_0xf854('0x30')]['offset']);}_0x360ac4[_0xf854('0x58')]=qs[_0xf854('0x38')](_0x170060[_0xf854('0x30')][_0xf854('0x38')]);_0x360ac4[_0xf854('0x3b')]=qs[_0xf854('0x32')](_[_0xf854('0x39')](_0x170060[_0xf854('0x30')],_0x41c533[_0xf854('0x32')]));_0x360ac4[_0xf854('0x3b')][_0xf854('0x59')]=_0x469ccb['id'];if(_0x170060['query'][_0xf854('0x3a')]){_0x360ac4[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0x360ac4['where'],{'$or':_[_0xf854('0x2d')](_0x360ac4[_0xf854('0x36')],function(_0x3f8557){var _0x3677f7={};_0x3677f7[_0x3f8557]={'$like':'%'+_0x170060[_0xf854('0x30')][_0xf854('0x3a')]+'%'};return _0x3677f7;})});}_0x360ac4=_['merge']({},_0x360ac4,_0x170060[_0xf854('0x3f')]);return db[_0xf854('0x57')][_0xf854('0x20')]({'where':_0x360ac4[_0xf854('0x3b')]})['then'](function(_0x394477){_0x110403[_0xf854('0x20')]=_0x394477;if(_0x170060[_0xf854('0x30')][_0xf854('0x40')]){_0x360ac4[_0xf854('0x41')]=[{'all':!![]}];}return db[_0xf854('0x57')][_0xf854('0x42')](_0x360ac4);})[_0xf854('0x27')](function(_0x35a565){_0x110403[_0xf854('0x5a')]=_0x35a565;return _0x110403;});}})[_0xf854('0x27')](respondWithFilteredResult(_0x27c9ab,_0x360ac4))[_0xf854('0x43')](handleError(_0x27c9ab,null));};exports[_0xf854('0x5b')]=function(_0x3490ac,_0x1a9271,_0x354952){var _0x2e1f68={'raw':!![],'where':{}};var _0x46f8d2={};var _0x784cfc={'count':0x0,'rows':[]};return db[_0xf854('0x2e')][_0xf854('0x5c')]({'where':{'id':_0x3490ac['params']['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x1a9271,null))[_0xf854('0x27')](function(_0x24d2d8){if(_0x24d2d8){_0x46f8d2['model']=_['keys'](db[_0xf854('0x5d')][_0xf854('0x50')]);_0x46f8d2[_0xf854('0x30')]=_[_0xf854('0x31')](_0x3490ac['query']);_0x46f8d2['filters']=_[_0xf854('0x33')](_0x46f8d2[_0xf854('0x2f')],_0x46f8d2[_0xf854('0x30')]);_0x2e1f68[_0xf854('0x36')]=_['intersection'](_0x46f8d2[_0xf854('0x2f')],qs['fields'](_0x3490ac[_0xf854('0x30')]['fields']));_0x2e1f68['attributes']=_0x2e1f68['attributes']['length']?_0x2e1f68[_0xf854('0x36')]:_0x46f8d2[_0xf854('0x2f')];if(!_0x3490ac[_0xf854('0x30')][_0xf854('0x37')](_0xf854('0x5e'))){_0x2e1f68[_0xf854('0x21')]=qs[_0xf854('0x21')](_0x3490ac['query'][_0xf854('0x21')]);_0x2e1f68[_0xf854('0x1e')]=qs[_0xf854('0x1e')](_0x3490ac[_0xf854('0x30')][_0xf854('0x1e')]);}_0x2e1f68[_0xf854('0x58')]=qs[_0xf854('0x38')](_0x3490ac[_0xf854('0x30')][_0xf854('0x38')]);_0x2e1f68[_0xf854('0x3b')]=qs[_0xf854('0x32')](_[_0xf854('0x39')](_0x3490ac[_0xf854('0x30')],_0x46f8d2[_0xf854('0x32')]));_0x2e1f68['where']['CampaignId']=_0x24d2d8['id'];if(_0x3490ac[_0xf854('0x30')]['filter']){_0x2e1f68[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0x2e1f68[_0xf854('0x3b')],{'$or':_[_0xf854('0x2d')](_0x2e1f68[_0xf854('0x36')],function(_0x38eda9){var _0x139326={};_0x139326[_0x38eda9]={'$like':'%'+_0x3490ac[_0xf854('0x30')]['filter']+'%'};return _0x139326;})});}_0x2e1f68=_[_0xf854('0x3c')]({},_0x2e1f68,_0x3490ac[_0xf854('0x3f')]);return db['CmHopperHistory'][_0xf854('0x20')]({'where':_0x2e1f68[_0xf854('0x3b')]})[_0xf854('0x27')](function(_0x434c8e){_0x784cfc[_0xf854('0x20')]=_0x434c8e;if(_0x3490ac['query'][_0xf854('0x40')]){_0x2e1f68[_0xf854('0x41')]=[{'all':!![]}];}return db[_0xf854('0x5d')][_0xf854('0x42')](_0x2e1f68);})['then'](function(_0x9507f3){_0x784cfc['rows']=_0x9507f3;return _0x784cfc;});}})[_0xf854('0x27')](respondWithFilteredResult(_0x1a9271,_0x2e1f68))[_0xf854('0x43')](handleError(_0x1a9271,null));};exports['getHopperFinals']=function(_0x31baf1,_0x41fb70,_0x6b36ee){var _0x50a01e={'raw':!![],'where':{}};var _0x392594={};var _0x26696c={'count':0x0,'rows':[]};return db[_0xf854('0x2e')]['findOne']({'where':{'id':_0x31baf1[_0xf854('0x45')]['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x41fb70,null))[_0xf854('0x27')](function(_0x344898){if(_0x344898){_0x392594[_0xf854('0x2f')]=_['keys'](db[_0xf854('0x5f')][_0xf854('0x50')]);_0x392594[_0xf854('0x30')]=_['keys'](_0x31baf1['query']);_0x392594[_0xf854('0x32')]=_[_0xf854('0x33')](_0x392594[_0xf854('0x2f')],_0x392594[_0xf854('0x30')]);_0x50a01e['attributes']=_[_0xf854('0x33')](_0x392594['model'],qs[_0xf854('0x34')](_0x31baf1[_0xf854('0x30')][_0xf854('0x34')]));_0x50a01e[_0xf854('0x36')]=_0x50a01e['attributes'][_0xf854('0x35')]?_0x50a01e[_0xf854('0x36')]:_0x392594[_0xf854('0x2f')];if(!_0x31baf1['query'][_0xf854('0x37')]('nolimit')){_0x50a01e[_0xf854('0x21')]=qs['limit'](_0x31baf1[_0xf854('0x30')][_0xf854('0x21')]);_0x50a01e[_0xf854('0x1e')]=qs['offset'](_0x31baf1['query']['offset']);}_0x50a01e['order']=qs[_0xf854('0x38')](_0x31baf1[_0xf854('0x30')][_0xf854('0x38')]);_0x50a01e[_0xf854('0x3b')]=qs[_0xf854('0x32')](_['pick'](_0x31baf1[_0xf854('0x30')],_0x392594[_0xf854('0x32')]));_0x50a01e['where']['CampaignId']=_0x344898['id'];if(_0x31baf1[_0xf854('0x30')]['filter']){_0x50a01e[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0x50a01e['where'],{'$or':_[_0xf854('0x2d')](_0x50a01e[_0xf854('0x36')],function(_0x24ec6f){var _0x26f696={};_0x26f696[_0x24ec6f]={'$like':'%'+_0x31baf1[_0xf854('0x30')]['filter']+'%'};return _0x26f696;})});}_0x50a01e=_[_0xf854('0x3c')]({},_0x50a01e,_0x31baf1[_0xf854('0x3f')]);return db[_0xf854('0x5f')][_0xf854('0x20')]({'where':_0x50a01e[_0xf854('0x3b')]})['then'](function(_0xb3ebf1){_0x26696c[_0xf854('0x20')]=_0xb3ebf1;if(_0x31baf1[_0xf854('0x30')]['includeAll']){_0x50a01e[_0xf854('0x41')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xf854('0x42')](_0x50a01e);})[_0xf854('0x27')](function(_0x42aa0e){_0x26696c[_0xf854('0x5a')]=_0x42aa0e;return _0x26696c;});}})[_0xf854('0x27')](respondWithFilteredResult(_0x41fb70,_0x50a01e))[_0xf854('0x43')](handleError(_0x41fb70,null));};exports[_0xf854('0x60')]=function(_0x1a0512,_0x7324c4,_0x56cd66){var _0xbbbdc={'raw':!![],'where':{}};var _0xe71f5f={};var _0x5424a4={'count':0x0,'rows':[]};return db[_0xf854('0x2e')]['findOne']({'where':{'id':_0x1a0512[_0xf854('0x45')]['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x7324c4,null))[_0xf854('0x27')](function(_0x1feb72){if(_0x1feb72){_0xe71f5f[_0xf854('0x2f')]=_['keys'](db[_0xf854('0x61')]['rawAttributes']);_0xe71f5f[_0xf854('0x30')]=_[_0xf854('0x31')](_0x1a0512[_0xf854('0x30')]);_0xe71f5f[_0xf854('0x32')]=_[_0xf854('0x33')](_0xe71f5f[_0xf854('0x2f')],_0xe71f5f[_0xf854('0x30')]);_0xbbbdc[_0xf854('0x36')]=_[_0xf854('0x33')](_0xe71f5f[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x1a0512[_0xf854('0x30')]['fields']));_0xbbbdc[_0xf854('0x36')]=_0xbbbdc[_0xf854('0x36')]['length']?_0xbbbdc[_0xf854('0x36')]:_0xe71f5f[_0xf854('0x2f')];if(!_0x1a0512['query']['hasOwnProperty']('nolimit')){_0xbbbdc[_0xf854('0x21')]=qs[_0xf854('0x21')](_0x1a0512['query'][_0xf854('0x21')]);_0xbbbdc[_0xf854('0x1e')]=qs[_0xf854('0x1e')](_0x1a0512[_0xf854('0x30')][_0xf854('0x1e')]);}_0xbbbdc[_0xf854('0x58')]=qs[_0xf854('0x38')](_0x1a0512[_0xf854('0x30')][_0xf854('0x38')]);_0xbbbdc[_0xf854('0x3b')]=qs['filters'](_['pick'](_0x1a0512[_0xf854('0x30')],_0xe71f5f[_0xf854('0x32')]));_0xbbbdc[_0xf854('0x3b')][_0xf854('0x59')]=_0x1feb72['id'];if(_0x1a0512[_0xf854('0x30')]['filter']){_0xbbbdc[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0xbbbdc[_0xf854('0x3b')],{'$or':_['map'](_0xbbbdc[_0xf854('0x36')],function(_0x907f2d){var _0x289504={};_0x289504[_0x907f2d]={'$like':'%'+_0x1a0512[_0xf854('0x30')][_0xf854('0x3a')]+'%'};return _0x289504;})});}_0xbbbdc=_[_0xf854('0x3c')]({},_0xbbbdc,_0x1a0512[_0xf854('0x3f')]);return db[_0xf854('0x61')][_0xf854('0x20')]({'where':_0xbbbdc[_0xf854('0x3b')]})['then'](function(_0x2ef728){_0x5424a4['count']=_0x2ef728;if(_0x1a0512[_0xf854('0x30')][_0xf854('0x40')]){_0xbbbdc[_0xf854('0x41')]=[{'all':!![]}];}return db[_0xf854('0x61')][_0xf854('0x42')](_0xbbbdc);})[_0xf854('0x27')](function(_0x1ed4db){_0x5424a4[_0xf854('0x5a')]=_0x1ed4db;return _0x5424a4;});}})[_0xf854('0x27')](respondWithFilteredResult(_0x7324c4,_0xbbbdc))[_0xf854('0x43')](handleError(_0x7324c4,null));};exports[_0xf854('0x62')]=function(_0x37e36c,_0x45a664,_0x11bcea){var _0x4423a6={};var _0x562b94={};var _0x3092e0;var _0x4c1ed5;return db[_0xf854('0x2e')][_0xf854('0x5c')]({'where':{'id':_0x37e36c['params']['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x45a664,null))[_0xf854('0x27')](function(_0x89100d){if(_0x89100d){_0x3092e0=_0x89100d;_0x562b94[_0xf854('0x2f')]=_[_0xf854('0x31')](db[_0xf854('0x63')][_0xf854('0x50')]);_0x562b94[_0xf854('0x30')]=_[_0xf854('0x31')](_0x37e36c[_0xf854('0x30')]);_0x562b94[_0xf854('0x32')]=_[_0xf854('0x33')](_0x562b94[_0xf854('0x2f')],_0x562b94[_0xf854('0x30')]);_0x4423a6[_0xf854('0x36')]=_['intersection'](_0x562b94[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x37e36c[_0xf854('0x30')]['fields']));_0x4423a6[_0xf854('0x36')]=_0x4423a6[_0xf854('0x36')][_0xf854('0x35')]?_0x4423a6[_0xf854('0x36')]:_0x562b94[_0xf854('0x2f')];_0x4423a6['order']=qs[_0xf854('0x38')](_0x37e36c[_0xf854('0x30')][_0xf854('0x38')]);_0x4423a6['where']=qs['filters'](_['pick'](_0x37e36c[_0xf854('0x30')],_0x562b94[_0xf854('0x32')]));if(_0x37e36c[_0xf854('0x30')][_0xf854('0x3a')]){_0x4423a6[_0xf854('0x3b')]=_['merge'](_0x4423a6[_0xf854('0x3b')],{'$or':_[_0xf854('0x2d')](_0x4423a6[_0xf854('0x36')],function(_0x3f9f71){var _0x5a3521={};_0x5a3521[_0x3f9f71]={'$like':'%'+_0x37e36c[_0xf854('0x30')][_0xf854('0x3a')]+'%'};return _0x5a3521;})});}_0x4423a6=_[_0xf854('0x3c')]({},_0x4423a6,_0x37e36c[_0xf854('0x3f')]);return _0x3092e0[_0xf854('0x62')](_0x4423a6);}})['then'](function(_0x4792ef){if(_0x4792ef){_0x4c1ed5=_0x4792ef['length'];if(!_0x37e36c[_0xf854('0x30')][_0xf854('0x37')]('nolimit')){_0x4423a6[_0xf854('0x21')]=qs[_0xf854('0x21')](_0x37e36c[_0xf854('0x30')]['limit']);_0x4423a6[_0xf854('0x1e')]=qs[_0xf854('0x1e')](_0x37e36c[_0xf854('0x30')][_0xf854('0x1e')]);}return _0x3092e0[_0xf854('0x62')](_0x4423a6);}})['then'](function(_0x3adcc3){if(_0x3adcc3){return _0x3adcc3?{'count':_0x4c1ed5,'rows':_0x3adcc3}:null;}})[_0xf854('0x27')](respondWithResult(_0x45a664,null))[_0xf854('0x43')](handleError(_0x45a664,null));};exports[_0xf854('0x64')]=function(_0x3aa0fc,_0x4ac5ec,_0x3b3f79){var _0x50dca6,_0x15d836;var _0x3186ad=[];var _0x2de6b5=moment()[_0xf854('0x65')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0xf854('0x2e')][_0xf854('0x51')]({'where':{'id':_0x3aa0fc['params']['id']}})['then'](handleEntityNotFound(_0x4ac5ec,null))['then'](function(_0x519ebe){if(_0x519ebe){_0x15d836=_0x519ebe;return _0x519ebe[_0xf854('0x64')](_0x3aa0fc[_0xf854('0x54')][_0xf854('0x66')],_[_0xf854('0x52')](_0x3aa0fc[_0xf854('0x54')],[_0xf854('0x66'),'id'])||{});}return null;})[_0xf854('0x67')](function(_0x203624){var _0x5cb00c;var _0x45867a;_0x50dca6=_0x203624||[];var _0x396ce7=[];if(_0x203624){for(var _0x26f09c=0x0;_0x26f09c<_0x203624[_0xf854('0x35')];_0x26f09c+=0x1){var _0x3e26d5=_0x203624[_0x26f09c][_0xf854('0x48')]({'plain':!![]});_0x15d836[_0xf854('0x68')]=_0x3aa0fc[_0xf854('0x54')][_0xf854('0x68')]?_0x3aa0fc[_0xf854('0x54')][_0xf854('0x68')]:_0x15d836[_0xf854('0x68')];switch(_0x15d836['dialCheckDuplicateType']){case _0xf854('0x69'):_0x5cb00c=squel[_0xf854('0x6a')]()[_0xf854('0x6b')](_0xf854('0x6c'))[_0xf854('0x6d')](['phone',_0xf854('0x6e'),_0xf854('0x6f'),_0xf854('0x70'),_0xf854('0x59'),_0xf854('0x55'),_0xf854('0x53')],squel[_0xf854('0x71')]()['field'](_0xf854('0x72'),_0xf854('0x72'))[_0xf854('0x73')](_0xf854('0x74'),_0xf854('0x6e'))[_0xf854('0x73')]('id',_0xf854('0x6f'))[_0xf854('0x73')](_0x3e26d5[_0xf854('0x75')][_0xf854('0x76')](),_0xf854('0x70'))[_0xf854('0x73')](_0x3aa0fc[_0xf854('0x45')]['id'][_0xf854('0x76')](),_0xf854('0x59'))[_0xf854('0x73')]('\x27'+_0x2de6b5+'\x27',_0xf854('0x55'))[_0xf854('0x73')]('\x27'+_0x2de6b5+'\x27',_0xf854('0x53'))[_0xf854('0x77')](_0xf854('0x78'))['where']('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x3e26d5[_0xf854('0x75')][_0xf854('0x76')]())[_0xf854('0x3b')](_0xf854('0x79'))['where'](_0xf854('0x7a'),squel[_0xf854('0x71')]()[_0xf854('0x73')](_0xf854('0x7b'))['from'](_0xf854('0x7c'))[_0xf854('0x3b')](_0xf854('0x7d'),_0x3aa0fc['params']['id'][_0xf854('0x76')]()))[_0xf854('0x3b')](_0xf854('0x7a'),squel[_0xf854('0x71')]()[_0xf854('0x73')](_0xf854('0x7e'))[_0xf854('0x77')]('cm_hopper')[_0xf854('0x3b')]('CampaignId\x20=\x20?',_0x3aa0fc[_0xf854('0x45')]['id']['toString']())))['toString']();break;case _0xf854('0x7f'):_0x5cb00c=squel['insert']()[_0xf854('0x6b')](_0xf854('0x6c'))[_0xf854('0x6d')]([_0xf854('0x72'),_0xf854('0x6e'),'ContactId',_0xf854('0x70'),_0xf854('0x59'),_0xf854('0x55'),_0xf854('0x53')],squel[_0xf854('0x71')]()['field'](_0xf854('0x72'),_0xf854('0x72'))[_0xf854('0x73')]('NOW()',_0xf854('0x6e'))[_0xf854('0x73')]('id','ContactId')['field'](_0x3e26d5['CmListId'][_0xf854('0x76')](),_0xf854('0x70'))[_0xf854('0x73')](_0x3aa0fc[_0xf854('0x45')]['id'][_0xf854('0x76')](),'CampaignId')['field']('\x27'+_0x2de6b5+'\x27',_0xf854('0x55'))['field']('\x27'+_0x2de6b5+'\x27',_0xf854('0x53'))[_0xf854('0x77')](_0xf854('0x78'))[_0xf854('0x3b')](_0xf854('0x80'))['where'](_0xf854('0x81'),_0x3e26d5[_0xf854('0x75')]['toString']())[_0xf854('0x3b')]('phone\x20IS\x20NOT\x20NULL')[_0xf854('0x3b')](_0xf854('0x7a'),squel[_0xf854('0x71')]()['field']('COALESCE(phone,\x27\x27)')[_0xf854('0x77')](_0xf854('0x6c'))[_0xf854('0x3b')](_0xf854('0x7d'),_0x3aa0fc['params']['id']['toString']())))[_0xf854('0x76')]();break;default:_0x5cb00c=squel[_0xf854('0x6a')]()['into'](_0xf854('0x6c'))[_0xf854('0x6d')]([_0xf854('0x72'),_0xf854('0x6e'),'ContactId','ListId',_0xf854('0x59'),_0xf854('0x55'),_0xf854('0x53')],squel[_0xf854('0x71')]()[_0xf854('0x73')](_0xf854('0x72'),_0xf854('0x72'))[_0xf854('0x73')](_0xf854('0x74'),'scheduledAt')[_0xf854('0x73')]('id',_0xf854('0x6f'))['field'](_0x3e26d5[_0xf854('0x75')][_0xf854('0x76')](),_0xf854('0x70'))['field'](_0x3aa0fc[_0xf854('0x45')]['id'][_0xf854('0x76')](),_0xf854('0x59'))['field']('\x27'+_0x2de6b5+'\x27','createdAt')['field']('\x27'+_0x2de6b5+'\x27',_0xf854('0x53'))[_0xf854('0x77')]('cm_contacts')['where'](_0xf854('0x80'))['where'](_0xf854('0x81'),_0x3e26d5[_0xf854('0x75')][_0xf854('0x76')]())[_0xf854('0x3b')](_0xf854('0x79')))[_0xf854('0x76')]();}_0x45867a=squel[_0xf854('0x6a')]()[_0xf854('0x6b')](_0xf854('0x82'))['fromQuery'](['cmHopperId',_0xf854('0x6e'),_0xf854('0x72'),_0xf854('0x83'),_0xf854('0x55'),_0xf854('0x53')],squel[_0xf854('0x71')]()[_0xf854('0x73')](_0xf854('0x84'),'id')[_0xf854('0x73')](_0xf854('0x74'),_0xf854('0x6e'))[_0xf854('0x73')]('ci.item','phone')[_0xf854('0x73')]('ci.OrderBY',_0xf854('0x83'))[_0xf854('0x73')]('\x27'+_0x2de6b5+'\x27',_0xf854('0x55'))[_0xf854('0x73')]('\x27'+_0x2de6b5+'\x27',_0xf854('0x53'))[_0xf854('0x77')](_0xf854('0x85'),'ci')[_0xf854('0x86')](_0xf854('0x6c'),'h',_0xf854('0x87'))[_0xf854('0x3b')]('h.ListId\x20=\x20?',_0x3e26d5[_0xf854('0x75')][_0xf854('0x76')]())[_0xf854('0x3b')](_0xf854('0x88'),_0x3aa0fc[_0xf854('0x45')]['id'][_0xf854('0x76')]())[_0xf854('0x3b')](_0xf854('0x89'),_0x2de6b5))['toString']();_0x396ce7[_0xf854('0x8a')](db[_0xf854('0x8b')]['query'](_0x5cb00c));_0x3186ad[_0xf854('0x8a')](db[_0xf854('0x8b')][_0xf854('0x30')](_0x45867a));}return BPromise[_0xf854('0x8c')](_0x396ce7);}})[_0xf854('0x27')](function(){return BPromise[_0xf854('0x8c')](_0x3186ad);})[_0xf854('0x27')](function(){return _0x50dca6;})[_0xf854('0x27')](respondWithResult(_0x4ac5ec,null))[_0xf854('0x43')](handleError(_0x4ac5ec,null));};exports['removeLists']=function(_0x3b9d63,_0x5e9ede,_0x650441){return db[_0xf854('0x2e')][_0xf854('0x51')]({'where':{'id':_0x3b9d63[_0xf854('0x45')]['id']}})['then'](handleEntityNotFound(_0x5e9ede,null))[_0xf854('0x27')](function(_0x47c3a8){if(_0x47c3a8){return _0x47c3a8[_0xf854('0x8d')](_0x3b9d63[_0xf854('0x30')][_0xf854('0x66')]);}})[_0xf854('0x27')](function(_0xf1460b){if(_0xf1460b){return db['CmHopper'][_0xf854('0x24')]({'where':{'ListId':_0x3b9d63[_0xf854('0x30')][_0xf854('0x66')],'CampaignId':_0x3b9d63[_0xf854('0x45')]['id']}})['then'](function(){return _0xf1460b;});}})[_0xf854('0x27')](respondWithStatusCode(_0x5e9ede,null))['catch'](handleError(_0x5e9ede,null));};exports[_0xf854('0x8e')]=function(_0x5dc634,_0x3c8974,_0x5190e9){var _0x3f28f4={};var _0x47a835={};var _0x313c65;var _0x50e012;return db['Campaign'][_0xf854('0x5c')]({'where':{'id':_0x5dc634[_0xf854('0x45')]['id']}})['then'](handleEntityNotFound(_0x3c8974,null))[_0xf854('0x27')](function(_0x5023e9){if(_0x5023e9){_0x313c65=_0x5023e9;_0x47a835[_0xf854('0x2f')]=_[_0xf854('0x31')](db[_0xf854('0x63')][_0xf854('0x50')]);_0x47a835['query']=_[_0xf854('0x31')](_0x5dc634[_0xf854('0x30')]);_0x47a835[_0xf854('0x32')]=_[_0xf854('0x33')](_0x47a835['model'],_0x47a835[_0xf854('0x30')]);_0x3f28f4['attributes']=_[_0xf854('0x33')](_0x47a835[_0xf854('0x2f')],qs[_0xf854('0x34')](_0x5dc634[_0xf854('0x30')][_0xf854('0x34')]));_0x3f28f4[_0xf854('0x36')]=_0x3f28f4[_0xf854('0x36')]['length']?_0x3f28f4['attributes']:_0x47a835[_0xf854('0x2f')];_0x3f28f4[_0xf854('0x58')]=qs['sort'](_0x5dc634['query'][_0xf854('0x38')]);_0x3f28f4[_0xf854('0x3b')]=qs[_0xf854('0x32')](_[_0xf854('0x39')](_0x5dc634[_0xf854('0x30')],_0x47a835['filters']));if(_0x5dc634[_0xf854('0x30')]['filter']){_0x3f28f4[_0xf854('0x3b')]=_[_0xf854('0x3c')](_0x3f28f4[_0xf854('0x3b')],{'$or':_[_0xf854('0x2d')](_0x3f28f4[_0xf854('0x36')],function(_0x5a2d6f){var _0x6dd77f={};_0x6dd77f[_0x5a2d6f]={'$like':'%'+_0x5dc634[_0xf854('0x30')][_0xf854('0x3a')]+'%'};return _0x6dd77f;})});}_0x3f28f4=_['merge']({},_0x3f28f4,_0x5dc634[_0xf854('0x3f')]);return _0x313c65[_0xf854('0x8e')](_0x3f28f4);}})['then'](function(_0x31d988){if(_0x31d988){_0x50e012=_0x31d988[_0xf854('0x35')];if(!_0x5dc634[_0xf854('0x30')][_0xf854('0x37')](_0xf854('0x5e'))){_0x3f28f4[_0xf854('0x21')]=qs['limit'](_0x5dc634[_0xf854('0x30')][_0xf854('0x21')]);_0x3f28f4['offset']=qs['offset'](_0x5dc634[_0xf854('0x30')][_0xf854('0x1e')]);}return _0x313c65[_0xf854('0x8e')](_0x3f28f4);}})[_0xf854('0x27')](function(_0x46c07d){if(_0x46c07d){return _0x46c07d?{'count':_0x50e012,'rows':_0x46c07d}:null;}})[_0xf854('0x27')](respondWithResult(_0x3c8974,null))[_0xf854('0x43')](handleError(_0x3c8974,null));};exports[_0xf854('0x8f')]=function(_0x305897,_0x319032,_0xb39e2c){var _0x5d7d04,_0x1bcc73;var _0x28702f=[];var _0x15533c=moment()['format'](_0xf854('0x90'));return db[_0xf854('0x2e')][_0xf854('0x51')]({'where':{'id':_0x305897['params']['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x319032,null))[_0xf854('0x27')](function(_0x560177){if(_0x560177){_0x1bcc73=_0x560177;return _0x560177['addBlackLists'](_0x305897['body'][_0xf854('0x66')],_[_0xf854('0x52')](_0x305897[_0xf854('0x54')],[_0xf854('0x66'),'id'])||{});}return null;})['spread'](function(_0x15416a){var _0x10700d;var _0x16ccb9;_0x5d7d04=_0x15416a||[];var _0x5cdf35=[];if(_0x15416a){for(var _0x1f8d8e=0x0;_0x1f8d8e<_0x15416a[_0xf854('0x35')];_0x1f8d8e+=0x1){var _0x33188f=_0x15416a[_0x1f8d8e][_0xf854('0x48')]({'plain':!![]});_0x10700d=squel[_0xf854('0x6a')]()['into'](_0xf854('0x91'))['fromQuery'](['phone',_0xf854('0x6f'),_0xf854('0x70'),'CampaignId',_0xf854('0x55'),_0xf854('0x53')],squel[_0xf854('0x71')]()['field'](_0xf854('0x72'),'phone')[_0xf854('0x73')]('id',_0xf854('0x6f'))['field'](_0x33188f[_0xf854('0x75')]['toString'](),'ListId')[_0xf854('0x73')](_0x305897[_0xf854('0x45')]['id'][_0xf854('0x76')](),_0xf854('0x59'))[_0xf854('0x73')](_0xf854('0x74'),_0xf854('0x55'))[_0xf854('0x73')]('NOW()',_0xf854('0x53'))[_0xf854('0x77')]('cm_contacts')[_0xf854('0x3b')]('deletedAt\x20IS\x20NULL')[_0xf854('0x3b')](_0xf854('0x81'),_0x33188f['CmListId'][_0xf854('0x76')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xf854('0x76')]();_0x5cdf35[_0xf854('0x8a')](db['sequelize'][_0xf854('0x30')](_0x10700d));}return BPromise['all'](_0x5cdf35);}})[_0xf854('0x27')](function(){return _0x5d7d04;})[_0xf854('0x27')](respondWithResult(_0x319032,null))[_0xf854('0x43')](handleError(_0x319032,null));};exports[_0xf854('0x92')]=function(_0x1e41c9,_0x9f375d,_0x26f752){return db[_0xf854('0x2e')][_0xf854('0x51')]({'where':{'id':_0x1e41c9['params']['id']}})[_0xf854('0x27')](handleEntityNotFound(_0x9f375d,null))[_0xf854('0x27')](function(_0x15299a){if(_0x15299a){return _0x15299a[_0xf854('0x92')](_0x1e41c9[_0xf854('0x30')][_0xf854('0x66')]);}})['then'](function(_0xab3f1f){if(_0xab3f1f){return db['CmHopperBlack'][_0xf854('0x24')]({'where':{'ListId':_0x1e41c9[_0xf854('0x30')][_0xf854('0x66')],'CampaignId':_0x1e41c9[_0xf854('0x45')]['id']}})[_0xf854('0x27')](function(){return _0xab3f1f;});}})[_0xf854('0x27')](respondWithStatusCode(_0x9f375d,null))[_0xf854('0x43')](handleError(_0x9f375d,null));};
\ No newline at end of file
index 50d9aed..ee2b073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x4063a4,_0x19d730){var _0x17908d=function(_0x3ce714){while(--_0x3ce714){_0x4063a4['push'](_0x4063a4['shift']());}};_0x17908d(++_0x19d730);}(_0x7a54,0x106));var _0x47a5=function(_0x58c8af,_0x5758d6){_0x58c8af=_0x58c8af-0x0;var _0x14603b=_0x7a54[_0x58c8af];return _0x14603b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5f3c49,_0x2c9716){var _0x5259ac=function(_0x54eb42){while(--_0x54eb42){_0x5f3c49['push'](_0x5f3c49['shift']());}};_0x5259ac(++_0x2c9716);}(_0x7a54,0x106));var _0x47a5=function(_0x9319a7,_0x55b9b8){_0x9319a7=_0x9319a7-0x0;var _0x2d025a=_0x7a54[_0x9319a7];return _0x2d025a;};'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 206581e..c646f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342b=['map','model','lodash','moment','bluebird','randomstring','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign','Campaign','findAll','raw','options','where','attributes','include'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0x342b,0xbc));var _0xb342=function(_0xfde960,_0x146ba0){_0xfde960=_0xfde960-0x0;var _0x26e514=_0x342b[_0xfde960];return _0x26e514;};'use strict';var _=require(_0xb342('0x0'));var util=require('util');var moment=require(_0xb342('0x1'));var BPromise=require(_0xb342('0x2'));var rs=require(_0xb342('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb342('0x4'));var config=require(_0xb342('0x5'));var jayson=require(_0xb342('0x6'));var client=jayson[_0xb342('0x7')][_0xb342('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f6281,_0x30106f,_0x3c7ac7){return new BPromise(function(_0x54175e,_0x54c788){return client[_0xb342('0x9')](_0x2f6281,_0x3c7ac7)[_0xb342('0xa')](function(_0x4e8f65){logger[_0xb342('0xb')](_0xb342('0xc'),_0x30106f,_0xb342('0xd'));logger[_0xb342('0xe')](_0xb342('0xf'),_0x30106f,_0xb342('0xd'),JSON[_0xb342('0x10')](_0x4e8f65));if(_0x4e8f65[_0xb342('0x11')]){if(_0x4e8f65[_0xb342('0x11')][_0xb342('0x12')]===0x1f4){logger[_0xb342('0x11')]('Campaign,\x20%s,\x20%s',_0x30106f,_0x4e8f65[_0xb342('0x11')]['message']);return _0x54c788(_0x4e8f65['error']['message']);}logger[_0xb342('0x11')](_0xb342('0xc'),_0x30106f,_0x4e8f65[_0xb342('0x11')][_0xb342('0x13')]);return _0x54175e(_0x4e8f65[_0xb342('0x11')][_0xb342('0x13')]);}else{logger[_0xb342('0xb')](_0xb342('0xc'),_0x30106f,'request\x20sent');_0x54175e(_0x4e8f65[_0xb342('0x14')][_0xb342('0x13')]);}})['catch'](function(_0x5ee646){logger['error'](_0xb342('0xc'),_0x30106f,_0x5ee646);_0x54c788(_0x5ee646);});});}exports[_0xb342('0x15')]=function(_0x52b3b6){var _0x26583c=this;return new Promise(function(_0x2fa7cd,_0x1694c7){return db[_0xb342('0x16')][_0xb342('0x17')]({'raw':_0x52b3b6['options']?_0x52b3b6['options'][_0xb342('0x18')]===undefined?!![]:![]:!![],'where':_0x52b3b6['options']?_0x52b3b6[_0xb342('0x19')][_0xb342('0x1a')]||null:null,'attributes':_0x52b3b6[_0xb342('0x19')]?_0x52b3b6[_0xb342('0x19')][_0xb342('0x1b')]||null:null,'limit':_0x52b3b6['options']?_0x52b3b6[_0xb342('0x19')]['limit']||null:null,'include':_0x52b3b6[_0xb342('0x19')]?_0x52b3b6['options'][_0xb342('0x1c')]?_[_0xb342('0x1d')](_0x52b3b6[_0xb342('0x19')][_0xb342('0x1c')],function(_0x4eda3a){return{'model':db[_0x4eda3a[_0xb342('0x1e')]],'as':_0x4eda3a['as'],'attributes':_0x4eda3a['attributes'],'include':_0x4eda3a['include']?_[_0xb342('0x1d')](_0x4eda3a['include'],function(_0x31aa2b){return{'model':db[_0x31aa2b[_0xb342('0x1e')]],'as':_0x31aa2b['as'],'attributes':_0x31aa2b[_0xb342('0x1b')],'include':_0x31aa2b[_0xb342('0x1c')]?_['map'](_0x31aa2b[_0xb342('0x1c')],function(_0x31469f){return{'model':db[_0x31469f[_0xb342('0x1e')]],'as':_0x31469f['as'],'attributes':_0x31469f[_0xb342('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb342('0xa')](function(_0x27005b){logger[_0xb342('0xb')]('GetCampaign',_0x52b3b6);logger[_0xb342('0xe')](_0xb342('0x15'),_0x52b3b6,JSON[_0xb342('0x10')](_0x27005b));_0x2fa7cd(_0x27005b);})['catch'](function(_0x54cc70){logger['error'](_0xb342('0x15'),_0x54cc70['message'],_0x52b3b6);_0x1694c7(_0x26583c[_0xb342('0x11')](0x1f4,_0x54cc70['message']));});});};
\ No newline at end of file
+var _0xc36d=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','Campaign,\x20%s,\x20%s','message','GetCampaign','Campaign','options','where','attributes','include','map','model','then'];(function(_0x58a655,_0x4dbdeb){var _0x4c995d=function(_0x135bba){while(--_0x135bba){_0x58a655['push'](_0x58a655['shift']());}};_0x4c995d(++_0x4dbdeb);}(_0xc36d,0x7d));var _0xdc36=function(_0x3816c2,_0xb221e1){_0x3816c2=_0x3816c2-0x0;var _0x144669=_0xc36d[_0x3816c2];return _0x144669;};'use strict';var _=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var moment=require(_0xdc36('0x2'));var BPromise=require(_0xdc36('0x3'));var rs=require(_0xdc36('0x4'));var fs=require('fs');var Redis=require(_0xdc36('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdc36('0x6'));var logger=require(_0xdc36('0x7'))('rpc');var config=require(_0xdc36('0x8'));var jayson=require(_0xdc36('0x9'));var client=jayson[_0xdc36('0xa')][_0xdc36('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6e4753,_0x571311,_0x20ba02){return new BPromise(function(_0x456897,_0x2a0087){return client[_0xdc36('0xc')](_0x6e4753,_0x20ba02)['then'](function(_0x20d00a){logger[_0xdc36('0xd')]('Campaign,\x20%s,\x20%s',_0x571311,_0xdc36('0xe'));logger[_0xdc36('0xf')](_0xdc36('0x10'),_0x571311,'request\x20sent',JSON[_0xdc36('0x11')](_0x20d00a));if(_0x20d00a[_0xdc36('0x12')]){if(_0x20d00a['error']['code']===0x1f4){logger[_0xdc36('0x12')](_0xdc36('0x13'),_0x571311,_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);return _0x2a0087(_0x20d00a['error'][_0xdc36('0x14')]);}logger[_0xdc36('0x12')](_0xdc36('0x13'),_0x571311,_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);return _0x456897(_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);}else{logger[_0xdc36('0xd')]('Campaign,\x20%s,\x20%s',_0x571311,_0xdc36('0xe'));_0x456897(_0x20d00a['result']['message']);}})['catch'](function(_0x64f61e){logger[_0xdc36('0x12')]('Campaign,\x20%s,\x20%s',_0x571311,_0x64f61e);_0x2a0087(_0x64f61e);});});}exports[_0xdc36('0x15')]=function(_0x219a73){var _0x160d70=this;return new Promise(function(_0x225878,_0x183c91){return db[_0xdc36('0x16')]['findAll']({'raw':_0x219a73[_0xdc36('0x17')]?_0x219a73[_0xdc36('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x219a73[_0xdc36('0x17')]?_0x219a73[_0xdc36('0x17')][_0xdc36('0x18')]||null:null,'attributes':_0x219a73['options']?_0x219a73[_0xdc36('0x17')][_0xdc36('0x19')]||null:null,'limit':_0x219a73['options']?_0x219a73[_0xdc36('0x17')]['limit']||null:null,'include':_0x219a73['options']?_0x219a73[_0xdc36('0x17')][_0xdc36('0x1a')]?_[_0xdc36('0x1b')](_0x219a73[_0xdc36('0x17')][_0xdc36('0x1a')],function(_0x34d261){return{'model':db[_0x34d261[_0xdc36('0x1c')]],'as':_0x34d261['as'],'attributes':_0x34d261[_0xdc36('0x19')],'include':_0x34d261['include']?_[_0xdc36('0x1b')](_0x34d261['include'],function(_0x2338d7){return{'model':db[_0x2338d7[_0xdc36('0x1c')]],'as':_0x2338d7['as'],'attributes':_0x2338d7[_0xdc36('0x19')],'include':_0x2338d7['include']?_[_0xdc36('0x1b')](_0x2338d7[_0xdc36('0x1a')],function(_0x337091){return{'model':db[_0x337091['model']],'as':_0x337091['as'],'attributes':_0x337091[_0xdc36('0x19')]};}):[]};}):[]};}):[]:[]})[_0xdc36('0x1d')](function(_0x2a596d){logger['info'](_0xdc36('0x15'),_0x219a73);logger[_0xdc36('0xf')]('GetCampaign',_0x219a73,JSON[_0xdc36('0x11')](_0x2a596d));_0x225878(_0x2a596d);})[_0xdc36('0x1e')](function(_0x4ea2ad){logger[_0xdc36('0x12')]('GetCampaign',_0x4ea2ad['message'],_0x219a73);_0x183c91(_0x160d70['error'](0x1f4,_0x4ea2ad[_0xdc36('0x14')]));});});};
\ No newline at end of file
index f8f227d..b6c395b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a70=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','post','create','/:id/clone','clone','addLists','put','delete','/:id/blacklists','removeBlackLists','exports'];(function(_0x26253d,_0x5dfc80){var _0x318a82=function(_0x22ae6a){while(--_0x22ae6a){_0x26253d['push'](_0x26253d['shift']());}};_0x318a82(++_0x5dfc80);}(_0x0a70,0x1c2));var _0x00a7=function(_0x8f239e,_0x5d4d21){_0x8f239e=_0x8f239e-0x0;var _0x12bef7=_0x0a70[_0x8f239e];return _0x12bef7;};'use strict';var multer=require(_0x00a7('0x0'));var util=require(_0x00a7('0x1'));var path=require('path');var timeout=require(_0x00a7('0x2'));var express=require(_0x00a7('0x3'));var router=express[_0x00a7('0x4')]();var fs_extra=require(_0x00a7('0x5'));var auth=require(_0x00a7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x00a7('0x7'));router[_0x00a7('0x8')]('/',auth[_0x00a7('0x9')](),controller[_0x00a7('0xa')]);router[_0x00a7('0x8')](_0x00a7('0xb'),auth[_0x00a7('0x9')](),controller[_0x00a7('0xc')]);router[_0x00a7('0x8')](_0x00a7('0xd'),auth[_0x00a7('0x9')](),controller[_0x00a7('0xe')]);router[_0x00a7('0x8')](_0x00a7('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router['get']('/:id/hopper_finals',auth[_0x00a7('0x9')](),controller[_0x00a7('0x10')]);router[_0x00a7('0x8')](_0x00a7('0x11'),auth[_0x00a7('0x9')](),controller[_0x00a7('0x12')]);router['get'](_0x00a7('0x13'),auth[_0x00a7('0x9')](),controller['getLists']);router['get']('/:id/blacklists',auth[_0x00a7('0x9')](),controller['getBlackLists']);router[_0x00a7('0x14')]('/',auth[_0x00a7('0x9')](),controller[_0x00a7('0x15')]);router[_0x00a7('0x14')](_0x00a7('0x16'),auth[_0x00a7('0x9')](),controller[_0x00a7('0x17')]);router[_0x00a7('0x14')](_0x00a7('0x13'),auth[_0x00a7('0x9')](),controller[_0x00a7('0x18')]);router['post']('/:id/blacklists',auth[_0x00a7('0x9')](),controller['addBlackLists']);router[_0x00a7('0x19')](_0x00a7('0xb'),auth[_0x00a7('0x9')](),controller['update']);router[_0x00a7('0x1a')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x00a7('0x1a')](_0x00a7('0x13'),auth[_0x00a7('0x9')](),controller['removeLists']);router[_0x00a7('0x1a')](_0x00a7('0x1b'),auth[_0x00a7('0x9')](),controller[_0x00a7('0x1c')]);module[_0x00a7('0x1d')]=router;
\ No newline at end of file
+var _0xff32=['getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getBlackLists','post','create','/:id/clone','clone','addLists','/:id/blacklists','addBlackLists','put','delete','removeBlackLists','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories'];(function(_0x9acf6d,_0x3e7b93){var _0x3ffc23=function(_0x16f440){while(--_0x16f440){_0x9acf6d['push'](_0x9acf6d['shift']());}};_0x3ffc23(++_0x3e7b93);}(_0xff32,0x15a));var _0x2ff3=function(_0x39cc09,_0x500de7){_0x39cc09=_0x39cc09-0x0;var _0x10eadd=_0xff32[_0x39cc09];return _0x10eadd;};'use strict';var multer=require('multer');var util=require(_0x2ff3('0x0'));var path=require(_0x2ff3('0x1'));var timeout=require(_0x2ff3('0x2'));var express=require(_0x2ff3('0x3'));var router=express['Router']();var fs_extra=require(_0x2ff3('0x4'));var auth=require(_0x2ff3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2ff3('0x6'));var controller=require(_0x2ff3('0x7'));router[_0x2ff3('0x8')]('/',auth[_0x2ff3('0x9')](),controller[_0x2ff3('0xa')]);router[_0x2ff3('0x8')](_0x2ff3('0xb'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0xc')]);router[_0x2ff3('0x8')](_0x2ff3('0xd'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0xe')]);router[_0x2ff3('0x8')](_0x2ff3('0xf'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x10')]);router['get']('/:id/hopper_finals',auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x11')]);router['get'](_0x2ff3('0x12'),auth['isAuthenticated'](),controller[_0x2ff3('0x13')]);router[_0x2ff3('0x8')](_0x2ff3('0x14'),auth[_0x2ff3('0x9')](),controller['getLists']);router[_0x2ff3('0x8')]('/:id/blacklists',auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x15')]);router[_0x2ff3('0x16')]('/',auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x17')]);router[_0x2ff3('0x16')](_0x2ff3('0x18'),auth['isAuthenticated'](),controller[_0x2ff3('0x19')]);router['post'](_0x2ff3('0x14'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x1a')]);router[_0x2ff3('0x16')](_0x2ff3('0x1b'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x1c')]);router[_0x2ff3('0x1d')](_0x2ff3('0xb'),auth[_0x2ff3('0x9')](),controller['update']);router['delete'](_0x2ff3('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x2ff3('0x1e')](_0x2ff3('0x14'),auth[_0x2ff3('0x9')](),controller['removeLists']);router[_0x2ff3('0x1e')](_0x2ff3('0x1b'),auth[_0x2ff3('0x9')](),controller[_0x2ff3('0x1f')]);module[_0x2ff3('0x20')]=router;
\ No newline at end of file
index 2de8489..fc05dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a7d=['key','sequelize','STRING','VIRTUAL','getDataValue'];(function(_0x4ca55f,_0xf27e7f){var _0x1435c0=function(_0x25e733){while(--_0x25e733){_0x4ca55f['push'](_0x4ca55f['shift']());}};_0x1435c0(++_0xf27e7f);}(_0x0a7d,0x105));var _0xd0a7=function(_0x5a2d3f,_0x27b04e){_0x5a2d3f=_0x5a2d3f-0x0;var _0x5c65d8=_0x0a7d[_0x5a2d3f];return _0x5c65d8;};'use strict';var Sequelize=require(_0xd0a7('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0xd0a7('0x1')]},'name':{'type':Sequelize[_0xd0a7('0x2')],'get':function(){return this[_0xd0a7('0x3')](_0xd0a7('0x4'));}}};
\ No newline at end of file
+var _0x522d=['key','sequelize','exports','STRING','TEXT','VIRTUAL','getDataValue'];(function(_0x2b1f23,_0x20cb63){var _0x52ba5a=function(_0x2c2779){while(--_0x2c2779){_0x2b1f23['push'](_0x2b1f23['shift']());}};_0x52ba5a(++_0x20cb63);}(_0x522d,0xe8));var _0xd522=function(_0x50f09f,_0x404dd7){_0x50f09f=_0x50f09f-0x0;var _0x5ee3d8=_0x522d[_0x50f09f];return _0x5ee3d8;};'use strict';var Sequelize=require(_0xd522('0x0'));module[_0xd522('0x1')]={'key':{'type':Sequelize[_0xd522('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0xd522('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0xd522('0x2')]},'name':{'type':Sequelize[_0xd522('0x4')],'get':function(){return this[_0xd522('0x5')](_0xd522('0x6'));}}};
\ No newline at end of file
index 8ecaaad..20ae0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dea=['SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','get','CannedAnswers','UserProfileResource','destroy','stack','name','send','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CannedAnswer','include','findAll','rows','catch','show','params','find','body','create','MailAccountId'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x3dea,0x16b));var _0xa3de=function(_0x5b11ae,_0x5ef9e3){_0x5b11ae=_0x5b11ae-0x0;var _0x3ef5f9=_0x3dea[_0x5b11ae];return _0x3ef5f9;};'use strict';var emlformat=require(_0xa3de('0x0'));var rimraf=require(_0xa3de('0x1'));var zipdir=require(_0xa3de('0x2'));var jsonpatch=require(_0xa3de('0x3'));var rp=require(_0xa3de('0x4'));var moment=require(_0xa3de('0x5'));var BPromise=require(_0xa3de('0x6'));var Mustache=require(_0xa3de('0x7'));var util=require(_0xa3de('0x8'));var path=require(_0xa3de('0x9'));var sox=require(_0xa3de('0xa'));var csv=require(_0xa3de('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa3de('0xc'));var _=require(_0xa3de('0xd'));var squel=require(_0xa3de('0xe'));var crypto=require(_0xa3de('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa3de('0xb'));var querystring=require(_0xa3de('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa3de('0x11'));var qs=require(_0xa3de('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa3de('0x13'));var logger=require(_0xa3de('0x14'))(_0xa3de('0x15'));var utils=require(_0xa3de('0x16'));var config=require(_0xa3de('0x17'));var licenseUtil=require(_0xa3de('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f5e0e,_0x11c11c){_0x11c11c=_0x11c11c||0xcc;return function(_0x1137ab){if(_0x1137ab){return _0x2f5e0e[_0xa3de('0x19')](_0x11c11c);}return _0x2f5e0e[_0xa3de('0x1a')](_0x11c11c)[_0xa3de('0x1b')]();};}function respondWithResult(_0x6f82a5,_0x50c51d){_0x50c51d=_0x50c51d||0xc8;return function(_0x281b80){if(_0x281b80){return _0x6f82a5[_0xa3de('0x1a')](_0x50c51d)[_0xa3de('0x1c')](_0x281b80);}};}function respondWithFilteredResult(_0x43d136,_0x3be866){return function(_0x4a4d17){if(_0x4a4d17){var _0xe8aba9=typeof _0x3be866[_0xa3de('0x1d')]===_0xa3de('0x1e')&&typeof _0x3be866[_0xa3de('0x1f')]===_0xa3de('0x1e');var _0x373951=_0x4a4d17['count'];var _0x13c7aa=_0xe8aba9?0x0:_0x3be866[_0xa3de('0x1d')];var _0x3fb473=_0xe8aba9?_0x4a4d17[_0xa3de('0x20')]:_0x3be866[_0xa3de('0x1d')]+_0x3be866[_0xa3de('0x1f')];var _0x1e4e76;if(_0x3fb473>=_0x373951){_0x3fb473=_0x373951;_0x1e4e76=0xc8;}else{_0x1e4e76=0xce;}_0x43d136['status'](_0x1e4e76);return _0x43d136[_0xa3de('0x21')](_0xa3de('0x22'),_0x13c7aa+'-'+_0x3fb473+'/'+_0x373951)[_0xa3de('0x1c')](_0x4a4d17);}return null;};}function patchUpdates(_0x1e228d){return function(_0x309efc){try{jsonpatch[_0xa3de('0x23')](_0x309efc,_0x1e228d,!![]);}catch(_0x4c530e){return BPromise['reject'](_0x4c530e);}return _0x309efc['save']();};}function saveUpdates(_0x2aa033,_0x534444){return function(_0x13b415){if(_0x13b415){return _0x13b415[_0xa3de('0x24')](_0x2aa033)[_0xa3de('0x25')](function(_0x1dc7d4){return _0x1dc7d4;});}return null;};}function removeEntity(_0x49e3e2,_0x2679d5){return function(_0x1998e0){if(_0x1998e0){return _0x1998e0['destroy']()[_0xa3de('0x25')](function(){var _0x5125a7=_0x1998e0[_0xa3de('0x26')]({'plain':!![]});var _0x19c830=_0xa3de('0x27');return db[_0xa3de('0x28')][_0xa3de('0x29')]({'where':{'type':_0x19c830,'resourceId':_0x5125a7['id']}})[_0xa3de('0x25')](function(){return _0x1998e0;});})[_0xa3de('0x25')](function(){_0x49e3e2[_0xa3de('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b1577,_0x43050c){return function(_0x439786){if(!_0x439786){_0x2b1577[_0xa3de('0x19')](0x194);}return _0x439786;};}function handleError(_0x716846,_0x5a0d0f){_0x5a0d0f=_0x5a0d0f||0x1f4;return function(_0x1f2d29){logger['error'](_0x1f2d29[_0xa3de('0x2a')]);if(_0x1f2d29[_0xa3de('0x2b')]){delete _0x1f2d29[_0xa3de('0x2b')];}_0x716846[_0xa3de('0x1a')](_0x5a0d0f)[_0xa3de('0x2c')](_0x1f2d29);};}exports['index']=function(_0x331e90,_0x3e5150){var _0x11bae7={},_0x419e52={},_0x17b6c2={'count':0x0,'rows':[]};var _0x392f7e=_['map'](db['CannedAnswer'][_0xa3de('0x2d')],function(_0x3a74fa){return{'name':_0x3a74fa[_0xa3de('0x2e')],'type':_0x3a74fa[_0xa3de('0x2f')][_0xa3de('0x30')]};});_0x419e52[_0xa3de('0x31')]=_[_0xa3de('0x32')](_0x392f7e,'name');_0x419e52['query']=_[_0xa3de('0x33')](_0x331e90[_0xa3de('0x34')]);_0x419e52[_0xa3de('0x35')]=_[_0xa3de('0x36')](_0x419e52[_0xa3de('0x31')],_0x419e52['query']);_0x11bae7[_0xa3de('0x37')]=_[_0xa3de('0x36')](_0x419e52[_0xa3de('0x31')],qs[_0xa3de('0x38')](_0x331e90[_0xa3de('0x34')][_0xa3de('0x38')]));_0x11bae7['attributes']=_0x11bae7[_0xa3de('0x37')][_0xa3de('0x39')]?_0x11bae7[_0xa3de('0x37')]:_0x419e52[_0xa3de('0x31')];if(!_0x331e90[_0xa3de('0x34')][_0xa3de('0x3a')]('nolimit')){_0x11bae7[_0xa3de('0x1f')]=qs[_0xa3de('0x1f')](_0x331e90[_0xa3de('0x34')]['limit']);_0x11bae7[_0xa3de('0x1d')]=qs['offset'](_0x331e90['query'][_0xa3de('0x1d')]);}_0x11bae7[_0xa3de('0x3b')]=qs[_0xa3de('0x3c')](_0x331e90[_0xa3de('0x34')][_0xa3de('0x3c')]);_0x11bae7[_0xa3de('0x3d')]=qs['filters'](_[_0xa3de('0x3e')](_0x331e90['query'],_0x419e52[_0xa3de('0x35')]),_0x392f7e);if(_0x331e90[_0xa3de('0x34')][_0xa3de('0x3f')]){_0x11bae7[_0xa3de('0x3d')]=_[_0xa3de('0x40')](_0x11bae7[_0xa3de('0x3d')],{'$or':[{'key':{'$like':'%'+_0x331e90['query']['filter']+'%'}},{'value':{'$like':'%'+_0x331e90[_0xa3de('0x34')][_0xa3de('0x3f')]+'%'}}]});}_0x11bae7=_['merge']({},_0x11bae7,_0x331e90[_0xa3de('0x41')]);var _0x5421bc={'where':_0x11bae7[_0xa3de('0x3d')]};return db[_0xa3de('0x42')]['count'](_0x5421bc)['then'](function(_0x1632fe){_0x17b6c2[_0xa3de('0x20')]=_0x1632fe;if(_0x331e90[_0xa3de('0x34')]['includeAll']){_0x11bae7[_0xa3de('0x43')]=[{'all':!![]}];}return db[_0xa3de('0x42')][_0xa3de('0x44')](_0x11bae7);})[_0xa3de('0x25')](function(_0x15b230){_0x17b6c2[_0xa3de('0x45')]=_0x15b230;return _0x17b6c2;})[_0xa3de('0x25')](respondWithFilteredResult(_0x3e5150,_0x11bae7))[_0xa3de('0x46')](handleError(_0x3e5150,null));};exports[_0xa3de('0x47')]=function(_0x57dbd7,_0x4a405c){var _0xe9422a={'raw':!![],'where':{'id':_0x57dbd7[_0xa3de('0x48')]['id']}},_0xc07381={};_0xc07381[_0xa3de('0x31')]=_[_0xa3de('0x33')](db['CannedAnswer'][_0xa3de('0x2d')]);_0xc07381[_0xa3de('0x34')]=_[_0xa3de('0x33')](_0x57dbd7[_0xa3de('0x34')]);_0xc07381['filters']=_['intersection'](_0xc07381[_0xa3de('0x31')],_0xc07381[_0xa3de('0x34')]);_0xe9422a[_0xa3de('0x37')]=_[_0xa3de('0x36')](_0xc07381[_0xa3de('0x31')],qs[_0xa3de('0x38')](_0x57dbd7[_0xa3de('0x34')][_0xa3de('0x38')]));_0xe9422a[_0xa3de('0x37')]=_0xe9422a[_0xa3de('0x37')][_0xa3de('0x39')]?_0xe9422a[_0xa3de('0x37')]:_0xc07381[_0xa3de('0x31')];if(_0x57dbd7['query']['includeAll']){_0xe9422a['include']=[{'all':!![]}];}_0xe9422a=_['merge']({},_0xe9422a,_0x57dbd7[_0xa3de('0x41')]);return db[_0xa3de('0x42')][_0xa3de('0x49')](_0xe9422a)[_0xa3de('0x25')](handleEntityNotFound(_0x4a405c,null))[_0xa3de('0x25')](respondWithResult(_0x4a405c,null))[_0xa3de('0x46')](handleError(_0x4a405c,null));};exports[_0xa3de('0x24')]=function(_0x593299,_0xdccc9e){if(_0x593299['body']['id']){delete _0x593299[_0xa3de('0x4a')]['id'];}return db['CannedAnswer'][_0xa3de('0x49')]({'where':{'id':_0x593299[_0xa3de('0x48')]['id']}})[_0xa3de('0x25')](handleEntityNotFound(_0xdccc9e,null))[_0xa3de('0x25')](saveUpdates(_0x593299[_0xa3de('0x4a')],null))['then'](respondWithResult(_0xdccc9e,null))[_0xa3de('0x46')](handleError(_0xdccc9e,null));};exports[_0xa3de('0x29')]=function(_0x12d966,_0x27d257){return db[_0xa3de('0x42')][_0xa3de('0x49')]({'where':{'id':_0x12d966[_0xa3de('0x48')]['id']}})[_0xa3de('0x25')](handleEntityNotFound(_0x27d257,null))[_0xa3de('0x25')](removeEntity(_0x27d257,null))[_0xa3de('0x46')](handleError(_0x27d257,null));};exports[_0xa3de('0x4b')]=function(_0x2aadfa,_0x305d9f){var _0x5ae001={'key':_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x30')]};if(_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x4c')]){_0x5ae001['MailAccountId']=_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x4c')];}else if(_0x2aadfa[_0xa3de('0x4a')]['SmsAccountId']){_0x5ae001[_0xa3de('0x4d')]=_0x2aadfa[_0xa3de('0x4a')]['SmsAccountId'];}else if(_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x4e')]){_0x5ae001[_0xa3de('0x4e')]=_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x4e')];}else if(_0x2aadfa[_0xa3de('0x4a')][_0xa3de('0x4f')]){_0x5ae001[_0xa3de('0x4f')]=_0x2aadfa['body'][_0xa3de('0x4f')];}return db['CannedAnswer']['find']({'where':_0x5ae001})[_0xa3de('0x25')](function(_0x909434){if(_0x909434){throw new db[(_0xa3de('0x50'))][(_0xa3de('0x51'))](_0xa3de('0x52'));}return db['CannedAnswer'][_0xa3de('0x4b')](_0x2aadfa[_0xa3de('0x4a')]);})[_0xa3de('0x25')](function(_0xf61e4d){var _0x4969a1=_0x2aadfa['user']['get']({'plain':!![]});if(!_0x4969a1)throw new Error(_0xa3de('0x53'));if(_0x4969a1['role']===_0xa3de('0x54')){var _0x3e1273=_0xf61e4d['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xa3de('0x27'),'userProfileId':_0x4969a1[_0xa3de('0x55')]},'raw':!![]})['then'](function(_0x2d346c){if(_0x2d346c&&_0x2d346c[_0xa3de('0x56')]===0x0){return db[_0xa3de('0x28')]['create']({'name':_0x3e1273[_0xa3de('0x2b')],'resourceId':_0x3e1273['id'],'type':_0x2d346c[_0xa3de('0x2b')],'sectionId':_0x2d346c['id']},{})[_0xa3de('0x25')](function(){return _0xf61e4d;});}else{return _0xf61e4d;}})[_0xa3de('0x46')](function(_0x27c372){logger[_0xa3de('0x57')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x27c372);throw _0x27c372;});}return _0xf61e4d;})[_0xa3de('0x25')](respondWithResult(_0x305d9f,0xc9))[_0xa3de('0x46')](handleError(_0x305d9f,null));};
\ No newline at end of file
+var _0xd3d6=['query','filters','intersection','attributes','length','nolimit','order','sort','pick','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','fields','find','body','params','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','CannedAnswers','error','stack','name','send','index','map','CannedAnswer','rawAttributes','type','model','keys'];(function(_0x5dc9e0,_0x2e5462){var _0x563395=function(_0x5472a6){while(--_0x5472a6){_0x5dc9e0['push'](_0x5dc9e0['shift']());}};_0x563395(++_0x2e5462);}(_0xd3d6,0x1f4));var _0x6d3d=function(_0x3e50aa,_0x44a206){_0x3e50aa=_0x3e50aa-0x0;var _0x5ac785=_0xd3d6[_0x3e50aa];return _0x5ac785;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d3d('0x0'));var zipdir=require(_0x6d3d('0x1'));var jsonpatch=require(_0x6d3d('0x2'));var rp=require(_0x6d3d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6d3d('0x4'));var util=require(_0x6d3d('0x5'));var path=require(_0x6d3d('0x6'));var sox=require(_0x6d3d('0x7'));var csv=require(_0x6d3d('0x8'));var ejs=require(_0x6d3d('0x9'));var fs=require('fs');var fs_extra=require(_0x6d3d('0xa'));var _=require(_0x6d3d('0xb'));var squel=require(_0x6d3d('0xc'));var crypto=require(_0x6d3d('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d3d('0x8'));var querystring=require('querystring');var Papa=require(_0x6d3d('0xe'));var Redis=require(_0x6d3d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6d3d('0x10'));var as=require(_0x6d3d('0x11'));var hardwareService=require(_0x6d3d('0x12'));var logger=require(_0x6d3d('0x13'))(_0x6d3d('0x14'));var utils=require(_0x6d3d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6d3d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2e23ca,_0x41f659){_0x41f659=_0x41f659||0xcc;return function(_0x2a90a1){if(_0x2a90a1){return _0x2e23ca[_0x6d3d('0x17')](_0x41f659);}return _0x2e23ca['status'](_0x41f659)[_0x6d3d('0x18')]();};}function respondWithResult(_0x4779d3,_0x43ee){_0x43ee=_0x43ee||0xc8;return function(_0x4a8ffe){if(_0x4a8ffe){return _0x4779d3[_0x6d3d('0x19')](_0x43ee)[_0x6d3d('0x1a')](_0x4a8ffe);}};}function respondWithFilteredResult(_0x2ee655,_0x5187be){return function(_0x83da59){if(_0x83da59){var _0x11e679=typeof _0x5187be['offset']===_0x6d3d('0x1b')&&typeof _0x5187be[_0x6d3d('0x1c')]===_0x6d3d('0x1b');var _0x4edc6c=_0x83da59[_0x6d3d('0x1d')];var _0xc932a8=_0x11e679?0x0:_0x5187be[_0x6d3d('0x1e')];var _0x3bf6d4=_0x11e679?_0x83da59[_0x6d3d('0x1d')]:_0x5187be[_0x6d3d('0x1e')]+_0x5187be[_0x6d3d('0x1c')];var _0x11840e;if(_0x3bf6d4>=_0x4edc6c){_0x3bf6d4=_0x4edc6c;_0x11840e=0xc8;}else{_0x11840e=0xce;}_0x2ee655[_0x6d3d('0x19')](_0x11840e);return _0x2ee655[_0x6d3d('0x1f')](_0x6d3d('0x20'),_0xc932a8+'-'+_0x3bf6d4+'/'+_0x4edc6c)[_0x6d3d('0x1a')](_0x83da59);}return null;};}function patchUpdates(_0x3e0fcc){return function(_0x2c1bf8){try{jsonpatch[_0x6d3d('0x21')](_0x2c1bf8,_0x3e0fcc,!![]);}catch(_0xdbd677){return BPromise[_0x6d3d('0x22')](_0xdbd677);}return _0x2c1bf8[_0x6d3d('0x23')]();};}function saveUpdates(_0x4091f0,_0x6fda59){return function(_0x559276){if(_0x559276){return _0x559276[_0x6d3d('0x24')](_0x4091f0)[_0x6d3d('0x25')](function(_0x169f78){return _0x169f78;});}return null;};}function removeEntity(_0x10070e,_0x204a71){return function(_0x27ae02){if(_0x27ae02){return _0x27ae02[_0x6d3d('0x26')]()[_0x6d3d('0x25')](function(){var _0x1d1cbc=_0x27ae02[_0x6d3d('0x27')]({'plain':!![]});var _0x5e3fee=_0x6d3d('0x28');return db['UserProfileResource'][_0x6d3d('0x26')]({'where':{'type':_0x5e3fee,'resourceId':_0x1d1cbc['id']}})['then'](function(){return _0x27ae02;});})[_0x6d3d('0x25')](function(){_0x10070e['status'](0xcc)[_0x6d3d('0x18')]();});}};}function handleEntityNotFound(_0x53ab70,_0x2d3133){return function(_0x5413bc){if(!_0x5413bc){_0x53ab70['sendStatus'](0x194);}return _0x5413bc;};}function handleError(_0x2765e2,_0x54be7b){_0x54be7b=_0x54be7b||0x1f4;return function(_0x56be12){logger[_0x6d3d('0x29')](_0x56be12[_0x6d3d('0x2a')]);if(_0x56be12[_0x6d3d('0x2b')]){delete _0x56be12[_0x6d3d('0x2b')];}_0x2765e2['status'](_0x54be7b)[_0x6d3d('0x2c')](_0x56be12);};}exports[_0x6d3d('0x2d')]=function(_0x1e8998,_0x3933c8){var _0xec4b57={},_0x2ba9a3={},_0x209e38={'count':0x0,'rows':[]};var _0x1c2e64=_[_0x6d3d('0x2e')](db[_0x6d3d('0x2f')][_0x6d3d('0x30')],function(_0x414d11){return{'name':_0x414d11['fieldName'],'type':_0x414d11[_0x6d3d('0x31')]['key']};});_0x2ba9a3[_0x6d3d('0x32')]=_[_0x6d3d('0x2e')](_0x1c2e64,_0x6d3d('0x2b'));_0x2ba9a3['query']=_[_0x6d3d('0x33')](_0x1e8998[_0x6d3d('0x34')]);_0x2ba9a3[_0x6d3d('0x35')]=_[_0x6d3d('0x36')](_0x2ba9a3['model'],_0x2ba9a3[_0x6d3d('0x34')]);_0xec4b57[_0x6d3d('0x37')]=_[_0x6d3d('0x36')](_0x2ba9a3['model'],qs['fields'](_0x1e8998[_0x6d3d('0x34')]['fields']));_0xec4b57[_0x6d3d('0x37')]=_0xec4b57[_0x6d3d('0x37')][_0x6d3d('0x38')]?_0xec4b57[_0x6d3d('0x37')]:_0x2ba9a3['model'];if(!_0x1e8998[_0x6d3d('0x34')]['hasOwnProperty'](_0x6d3d('0x39'))){_0xec4b57['limit']=qs[_0x6d3d('0x1c')](_0x1e8998[_0x6d3d('0x34')]['limit']);_0xec4b57[_0x6d3d('0x1e')]=qs['offset'](_0x1e8998[_0x6d3d('0x34')][_0x6d3d('0x1e')]);}_0xec4b57[_0x6d3d('0x3a')]=qs[_0x6d3d('0x3b')](_0x1e8998[_0x6d3d('0x34')][_0x6d3d('0x3b')]);_0xec4b57['where']=qs[_0x6d3d('0x35')](_[_0x6d3d('0x3c')](_0x1e8998[_0x6d3d('0x34')],_0x2ba9a3[_0x6d3d('0x35')]),_0x1c2e64);if(_0x1e8998['query']['filter']){_0xec4b57[_0x6d3d('0x3d')]=_['merge'](_0xec4b57['where'],{'$or':[{'key':{'$like':'%'+_0x1e8998[_0x6d3d('0x34')][_0x6d3d('0x3e')]+'%'}},{'value':{'$like':'%'+_0x1e8998[_0x6d3d('0x34')][_0x6d3d('0x3e')]+'%'}}]});}_0xec4b57=_[_0x6d3d('0x3f')]({},_0xec4b57,_0x1e8998[_0x6d3d('0x40')]);var _0x43aa98={'where':_0xec4b57['where']};return db[_0x6d3d('0x2f')][_0x6d3d('0x1d')](_0x43aa98)[_0x6d3d('0x25')](function(_0x86b19b){_0x209e38[_0x6d3d('0x1d')]=_0x86b19b;if(_0x1e8998[_0x6d3d('0x34')][_0x6d3d('0x41')]){_0xec4b57[_0x6d3d('0x42')]=[{'all':!![]}];}return db['CannedAnswer'][_0x6d3d('0x43')](_0xec4b57);})[_0x6d3d('0x25')](function(_0x46a51f){_0x209e38[_0x6d3d('0x44')]=_0x46a51f;return _0x209e38;})[_0x6d3d('0x25')](respondWithFilteredResult(_0x3933c8,_0xec4b57))[_0x6d3d('0x45')](handleError(_0x3933c8,null));};exports[_0x6d3d('0x46')]=function(_0x39f7a3,_0x2d39d4){var _0x125719={'raw':!![],'where':{'id':_0x39f7a3['params']['id']}},_0x52126d={};_0x52126d[_0x6d3d('0x32')]=_[_0x6d3d('0x33')](db[_0x6d3d('0x2f')][_0x6d3d('0x30')]);_0x52126d[_0x6d3d('0x34')]=_[_0x6d3d('0x33')](_0x39f7a3[_0x6d3d('0x34')]);_0x52126d[_0x6d3d('0x35')]=_[_0x6d3d('0x36')](_0x52126d['model'],_0x52126d[_0x6d3d('0x34')]);_0x125719[_0x6d3d('0x37')]=_[_0x6d3d('0x36')](_0x52126d['model'],qs[_0x6d3d('0x47')](_0x39f7a3[_0x6d3d('0x34')][_0x6d3d('0x47')]));_0x125719['attributes']=_0x125719[_0x6d3d('0x37')][_0x6d3d('0x38')]?_0x125719[_0x6d3d('0x37')]:_0x52126d[_0x6d3d('0x32')];if(_0x39f7a3['query'][_0x6d3d('0x41')]){_0x125719[_0x6d3d('0x42')]=[{'all':!![]}];}_0x125719=_[_0x6d3d('0x3f')]({},_0x125719,_0x39f7a3[_0x6d3d('0x40')]);return db[_0x6d3d('0x2f')][_0x6d3d('0x48')](_0x125719)[_0x6d3d('0x25')](handleEntityNotFound(_0x2d39d4,null))[_0x6d3d('0x25')](respondWithResult(_0x2d39d4,null))[_0x6d3d('0x45')](handleError(_0x2d39d4,null));};exports[_0x6d3d('0x24')]=function(_0x5980db,_0x2f1501){if(_0x5980db[_0x6d3d('0x49')]['id']){delete _0x5980db['body']['id'];}return db[_0x6d3d('0x2f')][_0x6d3d('0x48')]({'where':{'id':_0x5980db[_0x6d3d('0x4a')]['id']}})[_0x6d3d('0x25')](handleEntityNotFound(_0x2f1501,null))[_0x6d3d('0x25')](saveUpdates(_0x5980db[_0x6d3d('0x49')],null))[_0x6d3d('0x25')](respondWithResult(_0x2f1501,null))[_0x6d3d('0x45')](handleError(_0x2f1501,null));};exports[_0x6d3d('0x26')]=function(_0x8e1583,_0x4bce5d){return db[_0x6d3d('0x2f')][_0x6d3d('0x48')]({'where':{'id':_0x8e1583[_0x6d3d('0x4a')]['id']}})[_0x6d3d('0x25')](handleEntityNotFound(_0x4bce5d,null))[_0x6d3d('0x25')](removeEntity(_0x4bce5d,null))[_0x6d3d('0x45')](handleError(_0x4bce5d,null));};exports['create']=function(_0x279800,_0x4b6f94){var _0x1b8080={'key':_0x279800[_0x6d3d('0x49')][_0x6d3d('0x4b')]};if(_0x279800[_0x6d3d('0x49')]['MailAccountId']){_0x1b8080[_0x6d3d('0x4c')]=_0x279800['body']['MailAccountId'];}else if(_0x279800['body'][_0x6d3d('0x4d')]){_0x1b8080['SmsAccountId']=_0x279800[_0x6d3d('0x49')][_0x6d3d('0x4d')];}else if(_0x279800[_0x6d3d('0x49')][_0x6d3d('0x4e')]){_0x1b8080['OpenchannelAccountId']=_0x279800['body'][_0x6d3d('0x4e')];}else if(_0x279800['body']['ChatWebsiteId']){_0x1b8080[_0x6d3d('0x4f')]=_0x279800[_0x6d3d('0x49')][_0x6d3d('0x4f')];}return db['CannedAnswer']['find']({'where':_0x1b8080})['then'](function(_0x2b373c){if(_0x2b373c){throw new db[(_0x6d3d('0x50'))][(_0x6d3d('0x51'))](_0x6d3d('0x52'));}return db['CannedAnswer'][_0x6d3d('0x53')](_0x279800['body']);})[_0x6d3d('0x25')](function(_0x299fce){var _0x3bc73e=_0x279800[_0x6d3d('0x54')][_0x6d3d('0x27')]({'plain':!![]});if(!_0x3bc73e)throw new Error(_0x6d3d('0x55'));if(_0x3bc73e[_0x6d3d('0x56')]===_0x6d3d('0x54')){var _0x1abdd9=_0x299fce[_0x6d3d('0x27')]({'plain':!![]});return db[_0x6d3d('0x57')][_0x6d3d('0x48')]({'where':{'name':'CannedAnswers','userProfileId':_0x3bc73e[_0x6d3d('0x58')]},'raw':!![]})['then'](function(_0x3e987b){if(_0x3e987b&&_0x3e987b[_0x6d3d('0x59')]===0x0){return db[_0x6d3d('0x5a')][_0x6d3d('0x53')]({'name':_0x1abdd9[_0x6d3d('0x2b')],'resourceId':_0x1abdd9['id'],'type':_0x3e987b[_0x6d3d('0x2b')],'sectionId':_0x3e987b['id']},{})[_0x6d3d('0x25')](function(){return _0x299fce;});}else{return _0x299fce;}})['catch'](function(_0x3c9a22){logger[_0x6d3d('0x29')](_0x6d3d('0x5b'),_0x3c9a22);throw _0x3c9a22;});}return _0x299fce;})[_0x6d3d('0x25')](respondWithResult(_0x4b6f94,0xc9))['catch'](handleError(_0x4b6f94,null));};
\ No newline at end of file
index e2e45fa..664afe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7653=['api','moment','request-promise','path','rimraf','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','lodash','util'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0x7653,0x102));var _0x3765=function(_0x6adec3,_0x3d264a){_0x6adec3=_0x6adec3-0x0;var _0xf68ec2=_0x7653[_0x6adec3];return _0xf68ec2;};'use strict';var _=require(_0x3765('0x0'));var util=require(_0x3765('0x1'));var logger=require('../../config/logger')(_0x3765('0x2'));var moment=require(_0x3765('0x3'));var BPromise=require('bluebird');var rp=require(_0x3765('0x4'));var fs=require('fs');var path=require(_0x3765('0x5'));var rimraf=require(_0x3765('0x6'));var config=require('../../config/environment');var attributes=require(_0x3765('0x7'));module[_0x3765('0x8')]=function(_0x627087,_0x35ff41){return _0x627087[_0x3765('0x9')](_0x3765('0xa'),attributes,{'tableName':_0x3765('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3765('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe24a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe24a,0x87));var _0xae24=function(_0x404529,_0x589e17){_0x404529=_0x404529-0x0;var _0x595d1e=_0xe24a[_0x404529];return _0x595d1e;};'use strict';var _=require('lodash');var util=require(_0xae24('0x0'));var logger=require(_0xae24('0x1'))(_0xae24('0x2'));var moment=require(_0xae24('0x3'));var BPromise=require(_0xae24('0x4'));var rp=require(_0xae24('0x5'));var fs=require('fs');var path=require(_0xae24('0x6'));var rimraf=require(_0xae24('0x7'));var config=require(_0xae24('0x8'));var attributes=require(_0xae24('0x9'));module['exports']=function(_0x190c68,_0x111a4d){return _0x190c68[_0xae24('0xa')](_0xae24('0xb'),attributes,{'tableName':_0xae24('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xae24('0xd'),'collate':_0xae24('0xe')});};
\ No newline at end of file
index ed7774e..c71d850 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(_0x1bf373,_0x2bf3cf){var _0x3fd90a=function(_0x4b2f6d){while(--_0x4b2f6d){_0x1bf373['push'](_0x1bf373['shift']());}};_0x3fd90a(++_0x2bf3cf);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x22ee7f,_0x17b7dc){var _0x5c4033=function(_0x347d0a){while(--_0x347d0a){_0x22ee7f['push'](_0x22ee7f['shift']());}};_0x5c4033(++_0x17b7dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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 bfdc52b..64045be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde07=['get','isAuthenticated','/:id','show','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./cannedAnswer.controller'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0xde07,0x1b9));var _0x7de0=function(_0x526d2e,_0x23de5b){_0x526d2e=_0x526d2e-0x0;var _0x554567=_0xde07[_0x526d2e];return _0x554567;};'use strict';var multer=require(_0x7de0('0x0'));var util=require(_0x7de0('0x1'));var path=require(_0x7de0('0x2'));var timeout=require(_0x7de0('0x3'));var express=require(_0x7de0('0x4'));var router=express[_0x7de0('0x5')]();var fs_extra=require(_0x7de0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7de0('0x7'));var config=require('../../config/environment');var controller=require(_0x7de0('0x8'));router[_0x7de0('0x9')]('/',auth[_0x7de0('0xa')](),controller['index']);router[_0x7de0('0x9')](_0x7de0('0xb'),auth['isAuthenticated'](),controller[_0x7de0('0xc')]);router[_0x7de0('0xd')]('/',auth['isAuthenticated'](),controller[_0x7de0('0xe')]);router[_0x7de0('0xf')](_0x7de0('0xb'),auth[_0x7de0('0xa')](),controller['update']);router['delete'](_0x7de0('0xb'),auth['isAuthenticated'](),controller[_0x7de0('0x10')]);module[_0x7de0('0x11')]=router;
\ No newline at end of file
+var _0xc2f5=['delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','index','get','/:id','isAuthenticated','post','create','put','update'];(function(_0x1ba3f0,_0x3b220d){var _0x53064d=function(_0x4ac6e3){while(--_0x4ac6e3){_0x1ba3f0['push'](_0x1ba3f0['shift']());}};_0x53064d(++_0x3b220d);}(_0xc2f5,0x11b));var _0x5c2f=function(_0x34a3b6,_0x40995f){_0x34a3b6=_0x34a3b6-0x0;var _0x413cd4=_0xc2f5[_0x34a3b6];return _0x413cd4;};'use strict';var multer=require(_0x5c2f('0x0'));var util=require(_0x5c2f('0x1'));var path=require(_0x5c2f('0x2'));var timeout=require(_0x5c2f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5c2f('0x4'));var auth=require(_0x5c2f('0x5'));var interaction=require(_0x5c2f('0x6'));var config=require(_0x5c2f('0x7'));var controller=require(_0x5c2f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x5c2f('0x9')]);router[_0x5c2f('0xa')](_0x5c2f('0xb'),auth[_0x5c2f('0xc')](),controller['show']);router[_0x5c2f('0xd')]('/',auth[_0x5c2f('0xc')](),controller[_0x5c2f('0xe')]);router[_0x5c2f('0xf')](_0x5c2f('0xb'),auth[_0x5c2f('0xc')](),controller[_0x5c2f('0x10')]);router[_0x5c2f('0x11')]('/:id',auth[_0x5c2f('0xc')](),controller[_0x5c2f('0x12')]);module[_0x5c2f('0x13')]=router;
\ No newline at end of file
index aca2d2a..3c51393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x636f=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x31575f,_0xac0687){var _0x27353d=function(_0x1751cb){while(--_0x1751cb){_0x31575f['push'](_0x31575f['shift']());}};_0x27353d(++_0xac0687);}(_0x636f,0x188));var _0xf636=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x636f[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xf636('0x0')],'allowNull':![],'defaultValue':_0xf636('0x1')},'clid':{'type':Sequelize[_0xf636('0x2')]},'src':{'type':Sequelize[_0xf636('0x2')]},'dst':{'type':Sequelize[_0xf636('0x2')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf636('0x2')]},'dstchannel':{'type':Sequelize[_0xf636('0x2')]},'lastapp':{'type':Sequelize[_0xf636('0x2')]},'lastdata':{'type':Sequelize[_0xf636('0x2')]},'duration':{'type':Sequelize[_0xf636('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xf636('0x2')]},'amaflags':{'type':Sequelize[_0xf636('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xf636('0x2')]},'userfield':{'type':Sequelize[_0xf636('0x2')]},'uniqueid':{'type':Sequelize[_0xf636('0x2')]},'linkedid':{'type':Sequelize[_0xf636('0x2')]},'sequence':{'type':Sequelize[_0xf636('0x2')]},'peeraccount':{'type':Sequelize[_0xf636('0x2')]},'type':{'type':Sequelize[_0xf636('0x2')]},'tag':{'type':Sequelize[_0xf636('0x2')]}};
\ No newline at end of file
+var _0x9010=['INTEGER','sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x9010,0xdf));var _0x0901=function(_0x4b246e,_0x57270c){_0x4b246e=_0x4b246e-0x0;var _0x418f2b=_0x9010[_0x4b246e];return _0x418f2b;};'use strict';var Sequelize=require(_0x0901('0x0'));module[_0x0901('0x1')]={'calldate':{'type':Sequelize[_0x0901('0x2')],'allowNull':![],'defaultValue':_0x0901('0x3')},'clid':{'type':Sequelize[_0x0901('0x4')]},'src':{'type':Sequelize[_0x0901('0x4')]},'dst':{'type':Sequelize[_0x0901('0x4')]},'dcontext':{'type':Sequelize[_0x0901('0x4')]},'channel':{'type':Sequelize[_0x0901('0x4')]},'dstchannel':{'type':Sequelize[_0x0901('0x4')]},'lastapp':{'type':Sequelize[_0x0901('0x4')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x0901('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x0901('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x0901('0x4')]},'amaflags':{'type':Sequelize[_0x0901('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x0901('0x4')]},'userfield':{'type':Sequelize[_0x0901('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x0901('0x4')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x0901('0x4')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x0901('0x4')]}};
\ No newline at end of file
index 88e5e0e..5dfc0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4873=['lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','name','send','index','rawAttributes','type','key','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','Cdr','catch','show','model','fields','includeAll','find','create','body','destroy','params','describe','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x4873,0x1df));var _0x3487=function(_0x28053c,_0x282867){_0x28053c=_0x28053c-0x0;var _0x481887=_0x4873[_0x28053c];return _0x481887;};'use strict';var emlformat=require(_0x3487('0x0'));var rimraf=require(_0x3487('0x1'));var zipdir=require(_0x3487('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3487('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3487('0x4'));var util=require(_0x3487('0x5'));var path=require(_0x3487('0x6'));var sox=require(_0x3487('0x7'));var csv=require(_0x3487('0x8'));var ejs=require(_0x3487('0x9'));var fs=require('fs');var fs_extra=require(_0x3487('0xa'));var _=require(_0x3487('0xb'));var squel=require('squel');var crypto=require(_0x3487('0xc'));var jsforce=require(_0x3487('0xd'));var deskjs=require(_0x3487('0xe'));var toCsv=require(_0x3487('0x8'));var querystring=require(_0x3487('0xf'));var Papa=require('papaparse');var Redis=require(_0x3487('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3487('0x11'));var as=require(_0x3487('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3487('0x13'));var utils=require(_0x3487('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3487('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x557d64,_0x395774){_0x395774=_0x395774||0xcc;return function(_0x1be2e0){if(_0x1be2e0){return _0x557d64[_0x3487('0x16')](_0x395774);}return _0x557d64[_0x3487('0x17')](_0x395774)[_0x3487('0x18')]();};}function respondWithResult(_0x1e468b,_0x4fbd63){_0x4fbd63=_0x4fbd63||0xc8;return function(_0x23ce3b){if(_0x23ce3b){return _0x1e468b[_0x3487('0x17')](_0x4fbd63)[_0x3487('0x19')](_0x23ce3b);}};}function respondWithFilteredResult(_0x4f79f0,_0x156e80){return function(_0x1b19c4){if(_0x1b19c4){var _0x38c0c1=typeof _0x156e80[_0x3487('0x1a')]===_0x3487('0x1b')&&typeof _0x156e80[_0x3487('0x1c')]===_0x3487('0x1b');var _0x32ecde=_0x1b19c4[_0x3487('0x1d')];var _0x2fa630=_0x38c0c1?0x0:_0x156e80[_0x3487('0x1a')];var _0x41795b=_0x38c0c1?_0x1b19c4[_0x3487('0x1d')]:_0x156e80[_0x3487('0x1a')]+_0x156e80['limit'];var _0x320349;if(_0x41795b>=_0x32ecde){_0x41795b=_0x32ecde;_0x320349=0xc8;}else{_0x320349=0xce;}_0x4f79f0['status'](_0x320349);return _0x4f79f0[_0x3487('0x1e')](_0x3487('0x1f'),_0x2fa630+'-'+_0x41795b+'/'+_0x32ecde)[_0x3487('0x19')](_0x1b19c4);}return null;};}function patchUpdates(_0x29546f){return function(_0xd788f8){try{jsonpatch[_0x3487('0x20')](_0xd788f8,_0x29546f,!![]);}catch(_0x479354){return BPromise[_0x3487('0x21')](_0x479354);}return _0xd788f8[_0x3487('0x22')]();};}function saveUpdates(_0x28f8f7,_0x97013d){return function(_0x11437c){if(_0x11437c){return _0x11437c[_0x3487('0x23')](_0x28f8f7)['then'](function(_0x384792){return _0x384792;});}return null;};}function removeEntity(_0x3e63e8,_0x25ed9f){return function(_0x482551){if(_0x482551){return _0x482551['destroy']()[_0x3487('0x24')](function(){_0x3e63e8[_0x3487('0x17')](0xcc)[_0x3487('0x18')]();});}};}function handleEntityNotFound(_0x3a9d76,_0x4c6882){return function(_0x79a183){if(!_0x79a183){_0x3a9d76[_0x3487('0x16')](0x194);}return _0x79a183;};}function handleError(_0x5484f6,_0x1e7126){_0x1e7126=_0x1e7126||0x1f4;return function(_0x3fb245){logger['error'](_0x3fb245['stack']);if(_0x3fb245[_0x3487('0x25')]){delete _0x3fb245[_0x3487('0x25')];}_0x5484f6[_0x3487('0x17')](_0x1e7126)[_0x3487('0x26')](_0x3fb245);};}exports[_0x3487('0x27')]=function(_0x1a02d6,_0x1c5bd6){var _0x38af4a={},_0x25e123={},_0x4dada9={'count':0x0,'rows':[]};var _0x24532a=_['map'](db['Cdr'][_0x3487('0x28')],function(_0x56ee54){return{'name':_0x56ee54['fieldName'],'type':_0x56ee54[_0x3487('0x29')][_0x3487('0x2a')]};});_0x25e123['model']=_['map'](_0x24532a,_0x3487('0x25'));_0x25e123[_0x3487('0x2b')]=_[_0x3487('0x2c')](_0x1a02d6['query']);_0x25e123[_0x3487('0x2d')]=_['intersection'](_0x25e123['model'],_0x25e123['query']);_0x38af4a[_0x3487('0x2e')]=_[_0x3487('0x2f')](_0x25e123['model'],qs['fields'](_0x1a02d6[_0x3487('0x2b')]['fields']));_0x38af4a['attributes']=_0x38af4a[_0x3487('0x2e')][_0x3487('0x30')]?_0x38af4a[_0x3487('0x2e')]:_0x25e123['model'];if(!_0x1a02d6[_0x3487('0x2b')][_0x3487('0x31')](_0x3487('0x32'))){_0x38af4a[_0x3487('0x1c')]=qs['limit'](_0x1a02d6[_0x3487('0x2b')][_0x3487('0x1c')]);_0x38af4a['offset']=qs[_0x3487('0x1a')](_0x1a02d6[_0x3487('0x2b')][_0x3487('0x1a')]);}_0x38af4a[_0x3487('0x33')]=qs[_0x3487('0x34')](_0x1a02d6[_0x3487('0x2b')][_0x3487('0x34')]);_0x38af4a[_0x3487('0x35')]=qs[_0x3487('0x2d')](_['pick'](_0x1a02d6[_0x3487('0x2b')],_0x25e123[_0x3487('0x2d')]),_0x24532a);if(_0x1a02d6['query']['filter']){_0x38af4a[_0x3487('0x35')]=_[_0x3487('0x36')](_0x38af4a[_0x3487('0x35')],{'$or':_['map'](_0x24532a,function(_0x58006c){if(_0x58006c['type']!==_0x3487('0x37')){var _0x268674={};_0x268674[_0x58006c['name']]={'$like':'%'+_0x1a02d6[_0x3487('0x2b')][_0x3487('0x38')]+'%'};return _0x268674;}})});}_0x38af4a=_[_0x3487('0x36')]({},_0x38af4a,_0x1a02d6[_0x3487('0x39')]);var _0x106393={'where':_0x38af4a[_0x3487('0x35')]};return db[_0x3487('0x3a')][_0x3487('0x1d')](_0x106393)[_0x3487('0x24')](function(_0x565cb2){_0x4dada9[_0x3487('0x1d')]=_0x565cb2;if(_0x1a02d6[_0x3487('0x2b')]['includeAll']){_0x38af4a['include']=[{'all':!![]}];}return db[_0x3487('0x3a')]['findAll'](_0x38af4a);})['then'](function(_0x3eb68c){_0x4dada9['rows']=_0x3eb68c;return _0x4dada9;})['then'](respondWithFilteredResult(_0x1c5bd6,_0x38af4a))[_0x3487('0x3b')](handleError(_0x1c5bd6,null));};exports[_0x3487('0x3c')]=function(_0x58a4c8,_0x51b69c){var _0xc04317={'raw':!![],'where':{'id':_0x58a4c8['params']['id']}},_0x8cd06f={};_0x8cd06f[_0x3487('0x3d')]=_[_0x3487('0x2c')](db['Cdr'][_0x3487('0x28')]);_0x8cd06f[_0x3487('0x2b')]=_[_0x3487('0x2c')](_0x58a4c8['query']);_0x8cd06f[_0x3487('0x2d')]=_[_0x3487('0x2f')](_0x8cd06f[_0x3487('0x3d')],_0x8cd06f[_0x3487('0x2b')]);_0xc04317[_0x3487('0x2e')]=_[_0x3487('0x2f')](_0x8cd06f[_0x3487('0x3d')],qs[_0x3487('0x3e')](_0x58a4c8['query'][_0x3487('0x3e')]));_0xc04317[_0x3487('0x2e')]=_0xc04317[_0x3487('0x2e')][_0x3487('0x30')]?_0xc04317[_0x3487('0x2e')]:_0x8cd06f[_0x3487('0x3d')];if(_0x58a4c8[_0x3487('0x2b')][_0x3487('0x3f')]){_0xc04317['include']=[{'all':!![]}];}_0xc04317=_['merge']({},_0xc04317,_0x58a4c8[_0x3487('0x39')]);return db[_0x3487('0x3a')][_0x3487('0x40')](_0xc04317)[_0x3487('0x24')](handleEntityNotFound(_0x51b69c,null))['then'](respondWithResult(_0x51b69c,null))['catch'](handleError(_0x51b69c,null));};exports[_0x3487('0x41')]=function(_0x122456,_0x3fe91f){return db[_0x3487('0x3a')][_0x3487('0x41')](_0x122456[_0x3487('0x42')],{})[_0x3487('0x24')](respondWithResult(_0x3fe91f,0xc9))[_0x3487('0x3b')](handleError(_0x3fe91f,null));};exports['update']=function(_0x585a44,_0x320351){if(_0x585a44[_0x3487('0x42')]['id']){delete _0x585a44['body']['id'];}return db[_0x3487('0x3a')]['find']({'where':{'id':_0x585a44['params']['id']}})[_0x3487('0x24')](handleEntityNotFound(_0x320351,null))[_0x3487('0x24')](saveUpdates(_0x585a44['body'],null))[_0x3487('0x24')](respondWithResult(_0x320351,null))[_0x3487('0x3b')](handleError(_0x320351,null));};exports[_0x3487('0x43')]=function(_0x4ab5f8,_0x761f95){return db[_0x3487('0x3a')][_0x3487('0x40')]({'where':{'id':_0x4ab5f8[_0x3487('0x44')]['id']}})['then'](handleEntityNotFound(_0x761f95,null))[_0x3487('0x24')](removeEntity(_0x761f95,null))[_0x3487('0x3b')](handleError(_0x761f95,null));};exports[_0x3487('0x45')]=function(_0x33e826,_0x11125d){return db[_0x3487('0x3a')][_0x3487('0x45')]()['then'](respondWithResult(_0x11125d,null))[_0x3487('0x3b')](handleError(_0x11125d,null));};
\ No newline at end of file
+var _0x6363=['destroy','describe','eml-format','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','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','error','stack','name','index','map','Cdr','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6363,0x13a));var _0x3636=function(_0x1a68ec,_0x55808c){_0x1a68ec=_0x1a68ec-0x0;var _0x15032d=_0x6363[_0x1a68ec];return _0x15032d;};'use strict';var emlformat=require(_0x3636('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3636('0x1'));var jsonpatch=require(_0x3636('0x2'));var rp=require(_0x3636('0x3'));var moment=require(_0x3636('0x4'));var BPromise=require(_0x3636('0x5'));var Mustache=require(_0x3636('0x6'));var util=require(_0x3636('0x7'));var path=require(_0x3636('0x8'));var sox=require(_0x3636('0x9'));var csv=require(_0x3636('0xa'));var ejs=require(_0x3636('0xb'));var fs=require('fs');var fs_extra=require(_0x3636('0xc'));var _=require(_0x3636('0xd'));var squel=require(_0x3636('0xe'));var crypto=require('crypto');var jsforce=require(_0x3636('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x3636('0xa'));var querystring=require(_0x3636('0x10'));var Papa=require(_0x3636('0x11'));var Redis=require(_0x3636('0x12'));var authService=require(_0x3636('0x13'));var qs=require(_0x3636('0x14'));var as=require(_0x3636('0x15'));var hardwareService=require(_0x3636('0x16'));var logger=require(_0x3636('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x3636('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x3636('0x19'))['db'];function respondWithStatusCode(_0x41ddae,_0x62d6f9){_0x62d6f9=_0x62d6f9||0xcc;return function(_0x13ca35){if(_0x13ca35){return _0x41ddae[_0x3636('0x1a')](_0x62d6f9);}return _0x41ddae[_0x3636('0x1b')](_0x62d6f9)[_0x3636('0x1c')]();};}function respondWithResult(_0x12dfa9,_0x3295ab){_0x3295ab=_0x3295ab||0xc8;return function(_0x7b4b16){if(_0x7b4b16){return _0x12dfa9[_0x3636('0x1b')](_0x3295ab)[_0x3636('0x1d')](_0x7b4b16);}};}function respondWithFilteredResult(_0xcb2aa3,_0x3fc712){return function(_0x23cc34){if(_0x23cc34){var _0x3cbd0d=typeof _0x3fc712[_0x3636('0x1e')]==='undefined'&&typeof _0x3fc712[_0x3636('0x1f')]===_0x3636('0x20');var _0x4aa7fc=_0x23cc34[_0x3636('0x21')];var _0x5aa0ff=_0x3cbd0d?0x0:_0x3fc712['offset'];var _0xae6469=_0x3cbd0d?_0x23cc34[_0x3636('0x21')]:_0x3fc712[_0x3636('0x1e')]+_0x3fc712[_0x3636('0x1f')];var _0xe0e633;if(_0xae6469>=_0x4aa7fc){_0xae6469=_0x4aa7fc;_0xe0e633=0xc8;}else{_0xe0e633=0xce;}_0xcb2aa3[_0x3636('0x1b')](_0xe0e633);return _0xcb2aa3[_0x3636('0x22')](_0x3636('0x23'),_0x5aa0ff+'-'+_0xae6469+'/'+_0x4aa7fc)['json'](_0x23cc34);}return null;};}function patchUpdates(_0x48f598){return function(_0x316930){try{jsonpatch[_0x3636('0x24')](_0x316930,_0x48f598,!![]);}catch(_0x42b271){return BPromise['reject'](_0x42b271);}return _0x316930[_0x3636('0x25')]();};}function saveUpdates(_0xa46471,_0x15a0b3){return function(_0xe34cd9){if(_0xe34cd9){return _0xe34cd9[_0x3636('0x26')](_0xa46471)[_0x3636('0x27')](function(_0x4f5b0e){return _0x4f5b0e;});}return null;};}function removeEntity(_0x517fda,_0x368356){return function(_0x4ee098){if(_0x4ee098){return _0x4ee098['destroy']()[_0x3636('0x27')](function(){_0x517fda['status'](0xcc)[_0x3636('0x1c')]();});}};}function handleEntityNotFound(_0x4c24cf,_0x36f4c5){return function(_0x477c34){if(!_0x477c34){_0x4c24cf[_0x3636('0x1a')](0x194);}return _0x477c34;};}function handleError(_0x201ea1,_0x112b96){_0x112b96=_0x112b96||0x1f4;return function(_0x20ca8b){logger[_0x3636('0x28')](_0x20ca8b[_0x3636('0x29')]);if(_0x20ca8b[_0x3636('0x2a')]){delete _0x20ca8b[_0x3636('0x2a')];}_0x201ea1[_0x3636('0x1b')](_0x112b96)['send'](_0x20ca8b);};}exports[_0x3636('0x2b')]=function(_0x236f54,_0x2d644c){var _0x22b12f={},_0xd37c62={},_0x17e062={'count':0x0,'rows':[]};var _0x52ad91=_[_0x3636('0x2c')](db[_0x3636('0x2d')]['rawAttributes'],function(_0x8fffb0){return{'name':_0x8fffb0[_0x3636('0x2e')],'type':_0x8fffb0[_0x3636('0x2f')][_0x3636('0x30')]};});_0xd37c62[_0x3636('0x31')]=_['map'](_0x52ad91,_0x3636('0x2a'));_0xd37c62[_0x3636('0x32')]=_[_0x3636('0x33')](_0x236f54[_0x3636('0x32')]);_0xd37c62[_0x3636('0x34')]=_[_0x3636('0x35')](_0xd37c62[_0x3636('0x31')],_0xd37c62[_0x3636('0x32')]);_0x22b12f[_0x3636('0x36')]=_['intersection'](_0xd37c62['model'],qs[_0x3636('0x37')](_0x236f54['query']['fields']));_0x22b12f[_0x3636('0x36')]=_0x22b12f[_0x3636('0x36')][_0x3636('0x38')]?_0x22b12f['attributes']:_0xd37c62[_0x3636('0x31')];if(!_0x236f54[_0x3636('0x32')][_0x3636('0x39')](_0x3636('0x3a'))){_0x22b12f[_0x3636('0x1f')]=qs[_0x3636('0x1f')](_0x236f54[_0x3636('0x32')][_0x3636('0x1f')]);_0x22b12f[_0x3636('0x1e')]=qs[_0x3636('0x1e')](_0x236f54[_0x3636('0x32')][_0x3636('0x1e')]);}_0x22b12f[_0x3636('0x3b')]=qs['sort'](_0x236f54[_0x3636('0x32')][_0x3636('0x3c')]);_0x22b12f[_0x3636('0x3d')]=qs[_0x3636('0x34')](_['pick'](_0x236f54['query'],_0xd37c62[_0x3636('0x34')]),_0x52ad91);if(_0x236f54[_0x3636('0x32')][_0x3636('0x3e')]){_0x22b12f['where']=_[_0x3636('0x3f')](_0x22b12f[_0x3636('0x3d')],{'$or':_['map'](_0x52ad91,function(_0x58f03d){if(_0x58f03d[_0x3636('0x2f')]!=='VIRTUAL'){var _0x8c04cf={};_0x8c04cf[_0x58f03d[_0x3636('0x2a')]]={'$like':'%'+_0x236f54[_0x3636('0x32')][_0x3636('0x3e')]+'%'};return _0x8c04cf;}})});}_0x22b12f=_[_0x3636('0x3f')]({},_0x22b12f,_0x236f54[_0x3636('0x40')]);var _0x448397={'where':_0x22b12f[_0x3636('0x3d')]};return db[_0x3636('0x2d')]['count'](_0x448397)[_0x3636('0x27')](function(_0x44cb9c){_0x17e062[_0x3636('0x21')]=_0x44cb9c;if(_0x236f54[_0x3636('0x32')][_0x3636('0x41')]){_0x22b12f[_0x3636('0x42')]=[{'all':!![]}];}return db[_0x3636('0x2d')][_0x3636('0x43')](_0x22b12f);})[_0x3636('0x27')](function(_0x4df331){_0x17e062[_0x3636('0x44')]=_0x4df331;return _0x17e062;})[_0x3636('0x27')](respondWithFilteredResult(_0x2d644c,_0x22b12f))[_0x3636('0x45')](handleError(_0x2d644c,null));};exports[_0x3636('0x46')]=function(_0x9c59e0,_0x122cb2){var _0x201e2c={'raw':!![],'where':{'id':_0x9c59e0[_0x3636('0x47')]['id']}},_0x401281={};_0x401281[_0x3636('0x31')]=_[_0x3636('0x33')](db[_0x3636('0x2d')][_0x3636('0x48')]);_0x401281[_0x3636('0x32')]=_[_0x3636('0x33')](_0x9c59e0['query']);_0x401281[_0x3636('0x34')]=_[_0x3636('0x35')](_0x401281[_0x3636('0x31')],_0x401281[_0x3636('0x32')]);_0x201e2c[_0x3636('0x36')]=_[_0x3636('0x35')](_0x401281[_0x3636('0x31')],qs[_0x3636('0x37')](_0x9c59e0[_0x3636('0x32')][_0x3636('0x37')]));_0x201e2c[_0x3636('0x36')]=_0x201e2c[_0x3636('0x36')][_0x3636('0x38')]?_0x201e2c['attributes']:_0x401281['model'];if(_0x9c59e0['query'][_0x3636('0x41')]){_0x201e2c['include']=[{'all':!![]}];}_0x201e2c=_['merge']({},_0x201e2c,_0x9c59e0[_0x3636('0x40')]);return db[_0x3636('0x2d')][_0x3636('0x49')](_0x201e2c)['then'](handleEntityNotFound(_0x122cb2,null))[_0x3636('0x27')](respondWithResult(_0x122cb2,null))[_0x3636('0x45')](handleError(_0x122cb2,null));};exports[_0x3636('0x4a')]=function(_0x179410,_0x37a33e){return db[_0x3636('0x2d')][_0x3636('0x4a')](_0x179410[_0x3636('0x4b')],{})[_0x3636('0x27')](respondWithResult(_0x37a33e,0xc9))['catch'](handleError(_0x37a33e,null));};exports[_0x3636('0x26')]=function(_0x33c140,_0x16b65a){if(_0x33c140[_0x3636('0x4b')]['id']){delete _0x33c140[_0x3636('0x4b')]['id'];}return db[_0x3636('0x2d')]['find']({'where':{'id':_0x33c140[_0x3636('0x47')]['id']}})[_0x3636('0x27')](handleEntityNotFound(_0x16b65a,null))[_0x3636('0x27')](saveUpdates(_0x33c140[_0x3636('0x4b')],null))[_0x3636('0x27')](respondWithResult(_0x16b65a,null))['catch'](handleError(_0x16b65a,null));};exports[_0x3636('0x4c')]=function(_0x285ff1,_0xa61651){return db[_0x3636('0x2d')][_0x3636('0x49')]({'where':{'id':_0x285ff1['params']['id']}})[_0x3636('0x27')](handleEntityNotFound(_0xa61651,null))['then'](removeEntity(_0xa61651,null))['catch'](handleError(_0xa61651,null));};exports[_0x3636('0x4d')]=function(_0x1c1ec0,_0x2575ba){return db[_0x3636('0x2d')]['describe']()['then'](respondWithResult(_0x2575ba,null))[_0x3636('0x45')](handleError(_0x2575ba,null));};
\ No newline at end of file
index 5fce631..7522316 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(_0x4cf794,_0x182a8a){var _0x289096=function(_0x215fe5){while(--_0x215fe5){_0x4cf794['push'](_0x4cf794['shift']());}};_0x289096(++_0x182a8a);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var 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 _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x3a1474,_0x523536){var _0x597f89=function(_0x2b6074){while(--_0x2b6074){_0x3a1474['push'](_0x3a1474['shift']());}};_0x597f89(++_0x523536);}(_0x7a54,0x106));var _0x47a5=function(_0x4a8856,_0xa0e51e){_0x4a8856=_0x4a8856-0x0;var _0x260035=_0x7a54[_0x4a8856];return _0x260035;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 21abe5e..4fc123b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a4=['request','then','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x5a0d9f,_0x3c5b09){var _0x333b83=function(_0x17fd88){while(--_0x17fd88){_0x5a0d9f['push'](_0x5a0d9f['shift']());}};_0x333b83(++_0x3c5b09);}(_0x60a4,0x123));var _0x460a=function(_0x393bf5,_0x225cac){_0x393bf5=_0x393bf5-0x0;var _0xcb023=_0x60a4[_0x393bf5];return _0xcb023;};'use strict';var _=require('lodash');var util=require(_0x460a('0x0'));var moment=require('moment');var BPromise=require(_0x460a('0x1'));var rs=require(_0x460a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x460a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x460a('0x4'))(_0x460a('0x5'));var config=require(_0x460a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x460a('0x7')][_0x460a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x669b68,_0x382936,_0x467681){return new BPromise(function(_0x2f097c,_0x7c1d4b){return client[_0x460a('0x9')](_0x669b68,_0x467681)[_0x460a('0xa')](function(_0x4c5212){logger[_0x460a('0xb')](_0x460a('0xc'),_0x382936,'request\x20sent');logger[_0x460a('0xd')](_0x460a('0xe'),_0x382936,_0x460a('0xf'),JSON[_0x460a('0x10')](_0x4c5212));if(_0x4c5212[_0x460a('0x11')]){if(_0x4c5212['error']['code']===0x1f4){logger[_0x460a('0x11')](_0x460a('0xc'),_0x382936,_0x4c5212[_0x460a('0x11')][_0x460a('0x12')]);return _0x7c1d4b(_0x4c5212[_0x460a('0x11')][_0x460a('0x12')]);}logger['error'](_0x460a('0xc'),_0x382936,_0x4c5212[_0x460a('0x11')][_0x460a('0x12')]);return _0x2f097c(_0x4c5212[_0x460a('0x11')]['message']);}else{logger['info']('Cdr,\x20%s,\x20%s',_0x382936,'request\x20sent');_0x2f097c(_0x4c5212['result'][_0x460a('0x12')]);}})[_0x460a('0x13')](function(_0x3817a7){logger[_0x460a('0x11')](_0x460a('0xc'),_0x382936,_0x3817a7);_0x7c1d4b(_0x3817a7);});});}
\ No newline at end of file
+var _0x651e=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','Cdr,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent','result','catch'];(function(_0x872d45,_0x1d3d84){var _0x1384b8=function(_0x71611f){while(--_0x71611f){_0x872d45['push'](_0x872d45['shift']());}};_0x1384b8(++_0x1d3d84);}(_0x651e,0x8a));var _0xe651=function(_0x25024e,_0x167474){_0x25024e=_0x25024e-0x0;var _0x319fa5=_0x651e[_0x25024e];return _0x319fa5;};'use strict';var _=require(_0xe651('0x0'));var util=require(_0xe651('0x1'));var moment=require(_0xe651('0x2'));var BPromise=require(_0xe651('0x3'));var rs=require(_0xe651('0x4'));var fs=require('fs');var Redis=require(_0xe651('0x5'));var db=require(_0xe651('0x6'))['db'];var utils=require(_0xe651('0x7'));var logger=require(_0xe651('0x8'))(_0xe651('0x9'));var config=require('../../config/environment');var jayson=require(_0xe651('0xa'));var client=jayson[_0xe651('0xb')][_0xe651('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3a3fd7,_0x3b5f5f,_0x4a4199){return new BPromise(function(_0x4bb80a,_0x6acd91){return client['request'](_0x3a3fd7,_0x4a4199)['then'](function(_0x2c65aa){logger['info'](_0xe651('0xd'),_0x3b5f5f,'request\x20sent');logger[_0xe651('0xe')]('Cdr,\x20%s,\x20%s,\x20%s',_0x3b5f5f,'request\x20sent',JSON[_0xe651('0xf')](_0x2c65aa));if(_0x2c65aa[_0xe651('0x10')]){if(_0x2c65aa[_0xe651('0x10')][_0xe651('0x11')]===0x1f4){logger[_0xe651('0x10')](_0xe651('0xd'),_0x3b5f5f,_0x2c65aa[_0xe651('0x10')][_0xe651('0x12')]);return _0x6acd91(_0x2c65aa[_0xe651('0x10')][_0xe651('0x12')]);}logger[_0xe651('0x10')](_0xe651('0xd'),_0x3b5f5f,_0x2c65aa['error'][_0xe651('0x12')]);return _0x4bb80a(_0x2c65aa[_0xe651('0x10')][_0xe651('0x12')]);}else{logger[_0xe651('0x13')]('Cdr,\x20%s,\x20%s',_0x3b5f5f,_0xe651('0x14'));_0x4bb80a(_0x2c65aa[_0xe651('0x15')][_0xe651('0x12')]);}})[_0xe651('0x16')](function(_0x591cc1){logger['error'](_0xe651('0xd'),_0x3b5f5f,_0x591cc1);_0x6acd91(_0x591cc1);});});}
\ No newline at end of file
index 73a6f90..7489313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0xeee53b,_0x448722){var _0x1067c6=function(_0x40801b){while(--_0x40801b){_0xeee53b['push'](_0xeee53b['shift']());}};_0x1067c6(++_0x448722);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x3a1075,_0x3d71a3){var _0x56e41f=function(_0x27def9){while(--_0x27def9){_0x3a1075['push'](_0x3a1075['shift']());}};_0x56e41f(++_0x3d71a3);}(_0xb10b,0x12a));var _0xbb10=function(_0x2b58f8,_0x14f865){_0x2b58f8=_0x2b58f8-0x0;var _0x2af05b=_0xb10b[_0x2b58f8];return _0x2af05b;};'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
index 6e68da4..bf2dd92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea16=['INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x424501,_0x42096d){var _0xb719af=function(_0x37adcf){while(--_0x37adcf){_0x424501['push'](_0x424501['shift']());}};_0xb719af(++_0x42096d);}(_0xea16,0x1b7));var _0x6ea1=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xea16[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x6ea1('0x0'));module['exports']={'priority':{'type':Sequelize[_0x6ea1('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x6ea1('0x2')],'allowNull':![],'defaultValue':_0x6ea1('0x3')},'appdata':{'type':Sequelize[_0x6ea1('0x4')]()},'description':{'type':Sequelize[_0x6ea1('0x2')]},'interval':{'type':Sequelize[_0x6ea1('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xcf41=['STRING','TEXT','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcf41,0x1ce));var _0x1cf4=function(_0x18a748,_0x401672){_0x18a748=_0x18a748-0x0;var _0x30c146=_0xcf41[_0x18a748];return _0x30c146;};'use strict';var Sequelize=require('sequelize');module[_0x1cf4('0x0')]={'priority':{'type':Sequelize[_0x1cf4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x1cf4('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x1cf4('0x3')]()},'description':{'type':Sequelize[_0x1cf4('0x2')]},'interval':{'type':Sequelize[_0x1cf4('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 4e0df0f..7a09ad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd136=['undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','show','params','model','keys','ChatApplication','rawAttributes','query','filters','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x5ba549,_0x425afd){var _0x36e3a1=function(_0x464308){while(--_0x464308){_0x5ba549['push'](_0x5ba549['shift']());}};_0x36e3a1(++_0x425afd);}(_0xd136,0x94));var _0x6d13=function(_0x50d143,_0xd62c6){_0x50d143=_0x50d143-0x0;var _0x5ce60d=_0xd136[_0x50d143];return _0x5ce60d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d13('0x0'));var zipdir=require(_0x6d13('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d13('0x2'));var moment=require(_0x6d13('0x3'));var BPromise=require(_0x6d13('0x4'));var Mustache=require(_0x6d13('0x5'));var util=require(_0x6d13('0x6'));var path=require(_0x6d13('0x7'));var sox=require(_0x6d13('0x8'));var csv=require(_0x6d13('0x9'));var ejs=require(_0x6d13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d13('0xb'));var squel=require(_0x6d13('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6d13('0xd'));var toCsv=require(_0x6d13('0x9'));var querystring=require(_0x6d13('0xe'));var Papa=require(_0x6d13('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d13('0x10'));var as=require(_0x6d13('0x11'));var hardwareService=require(_0x6d13('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x6d13('0x13'));var config=require(_0x6d13('0x14'));var licenseUtil=require(_0x6d13('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4cc3,_0x5ef7e6){_0x5ef7e6=_0x5ef7e6||0xcc;return function(_0x37d3c1){if(_0x37d3c1){return _0x1b4cc3[_0x6d13('0x16')](_0x5ef7e6);}return _0x1b4cc3['status'](_0x5ef7e6)['end']();};}function respondWithResult(_0x4ca95d,_0x37efd8){_0x37efd8=_0x37efd8||0xc8;return function(_0x10709d){if(_0x10709d){return _0x4ca95d[_0x6d13('0x17')](_0x37efd8)[_0x6d13('0x18')](_0x10709d);}};}function respondWithFilteredResult(_0x2f4c2b,_0x4f1bdf){return function(_0xf27049){if(_0xf27049){var _0x405368=typeof _0x4f1bdf[_0x6d13('0x19')]===_0x6d13('0x1a')&&typeof _0x4f1bdf[_0x6d13('0x1b')]===_0x6d13('0x1a');var _0xb17857=_0xf27049[_0x6d13('0x1c')];var _0xc6c2b=_0x405368?0x0:_0x4f1bdf['offset'];var _0x276fdd=_0x405368?_0xf27049[_0x6d13('0x1c')]:_0x4f1bdf[_0x6d13('0x19')]+_0x4f1bdf[_0x6d13('0x1b')];var _0x1f3603;if(_0x276fdd>=_0xb17857){_0x276fdd=_0xb17857;_0x1f3603=0xc8;}else{_0x1f3603=0xce;}_0x2f4c2b[_0x6d13('0x17')](_0x1f3603);return _0x2f4c2b[_0x6d13('0x1d')](_0x6d13('0x1e'),_0xc6c2b+'-'+_0x276fdd+'/'+_0xb17857)[_0x6d13('0x18')](_0xf27049);}return null;};}function patchUpdates(_0x427bb8){return function(_0x40f629){try{jsonpatch[_0x6d13('0x1f')](_0x40f629,_0x427bb8,!![]);}catch(_0x18889d){return BPromise[_0x6d13('0x20')](_0x18889d);}return _0x40f629[_0x6d13('0x21')]();};}function saveUpdates(_0x208876,_0x5619fc){return function(_0x387de2){if(_0x387de2){return _0x387de2['update'](_0x208876)[_0x6d13('0x22')](function(_0x204438){return _0x204438;});}return null;};}function removeEntity(_0x151aa4,_0x5bbc9d){return function(_0x1b0f94){if(_0x1b0f94){return _0x1b0f94[_0x6d13('0x23')]()[_0x6d13('0x22')](function(){_0x151aa4[_0x6d13('0x17')](0xcc)[_0x6d13('0x24')]();});}};}function handleEntityNotFound(_0x361432,_0x66e464){return function(_0x821eea){if(!_0x821eea){_0x361432['sendStatus'](0x194);}return _0x821eea;};}function handleError(_0xacf472,_0x4f70e2){_0x4f70e2=_0x4f70e2||0x1f4;return function(_0x4c8526){logger[_0x6d13('0x25')](_0x4c8526['stack']);if(_0x4c8526[_0x6d13('0x26')]){delete _0x4c8526[_0x6d13('0x26')];}_0xacf472[_0x6d13('0x17')](_0x4f70e2)['send'](_0x4c8526);};}exports[_0x6d13('0x27')]=function(_0xd469b6,_0x573080){var _0x2fcdfd={'raw':!![],'where':{'id':_0xd469b6[_0x6d13('0x28')]['id']}},_0x1eda96={};_0x1eda96[_0x6d13('0x29')]=_[_0x6d13('0x2a')](db[_0x6d13('0x2b')][_0x6d13('0x2c')]);_0x1eda96[_0x6d13('0x2d')]=_['keys'](_0xd469b6[_0x6d13('0x2d')]);_0x1eda96[_0x6d13('0x2e')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],_0x1eda96[_0x6d13('0x2d')]);_0x2fcdfd[_0x6d13('0x2f')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],qs[_0x6d13('0x30')](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x30')]));_0x2fcdfd[_0x6d13('0x2f')]=_0x2fcdfd[_0x6d13('0x2f')][_0x6d13('0x31')]?_0x2fcdfd['attributes']:_0x1eda96[_0x6d13('0x29')];if(_0xd469b6['query'][_0x6d13('0x32')]){_0x2fcdfd[_0x6d13('0x33')]=[{'all':!![]}];}_0x2fcdfd=_[_0x6d13('0x34')]({},_0x2fcdfd,_0xd469b6[_0x6d13('0x35')]);return db[_0x6d13('0x2b')][_0x6d13('0x36')](_0x2fcdfd)['then'](handleEntityNotFound(_0x573080,null))['then'](respondWithResult(_0x573080,null))[_0x6d13('0x37')](handleError(_0x573080,null));};exports[_0x6d13('0x38')]=function(_0xa922ff,_0x29aa5a){if(_0xa922ff[_0x6d13('0x39')]['id']){delete _0xa922ff[_0x6d13('0x39')]['id'];}return db['ChatApplication'][_0x6d13('0x36')]({'where':{'id':_0xa922ff[_0x6d13('0x28')]['id']}})[_0x6d13('0x22')](handleEntityNotFound(_0x29aa5a,null))[_0x6d13('0x22')](saveUpdates(_0xa922ff[_0x6d13('0x39')],null))[_0x6d13('0x22')](respondWithResult(_0x29aa5a,null))[_0x6d13('0x37')](handleError(_0x29aa5a,null));};exports[_0x6d13('0x23')]=function(_0x3cdff2,_0x3bffe6){return db['ChatApplication']['find']({'where':{'id':_0x3cdff2[_0x6d13('0x28')]['id']}})['then'](handleEntityNotFound(_0x3bffe6,null))['then'](removeEntity(_0x3bffe6,null))[_0x6d13('0x37')](handleError(_0x3bffe6,null));};
\ No newline at end of file
+var _0x4b6c=['Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','rawAttributes','keys','query','filters','intersection','fields','attributes','includeAll','include','merge','options','ChatApplication','find','body','catch','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','undefined','count','offset'];(function(_0xa56b53,_0x53dbb7){var _0x19849f=function(_0x503946){while(--_0x503946){_0xa56b53['push'](_0xa56b53['shift']());}};_0x19849f(++_0x53dbb7);}(_0x4b6c,0x14a));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc4b6('0x0'));var rimraf=require(_0xc4b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc4b6('0x2'));var rp=require(_0xc4b6('0x3'));var moment=require(_0xc4b6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc4b6('0x5'));var util=require(_0xc4b6('0x6'));var path=require(_0xc4b6('0x7'));var sox=require('sox');var csv=require(_0xc4b6('0x8'));var ejs=require(_0xc4b6('0x9'));var fs=require('fs');var fs_extra=require(_0xc4b6('0xa'));var _=require(_0xc4b6('0xb'));var squel=require('squel');var crypto=require(_0xc4b6('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc4b6('0x8'));var querystring=require(_0xc4b6('0xd'));var Papa=require(_0xc4b6('0xe'));var Redis=require(_0xc4b6('0xf'));var authService=require(_0xc4b6('0x10'));var qs=require(_0xc4b6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc4b6('0x12'));var logger=require(_0xc4b6('0x13'))('api');var utils=require(_0xc4b6('0x14'));var config=require(_0xc4b6('0x15'));var licenseUtil=require(_0xc4b6('0x16'));var db=require(_0xc4b6('0x17'))['db'];function respondWithStatusCode(_0x286a5a,_0xd6208e){_0xd6208e=_0xd6208e||0xcc;return function(_0xf2a30e){if(_0xf2a30e){return _0x286a5a[_0xc4b6('0x18')](_0xd6208e);}return _0x286a5a[_0xc4b6('0x19')](_0xd6208e)['end']();};}function respondWithResult(_0x21ee35,_0x2b7aab){_0x2b7aab=_0x2b7aab||0xc8;return function(_0x5d9008){if(_0x5d9008){return _0x21ee35[_0xc4b6('0x19')](_0x2b7aab)['json'](_0x5d9008);}};}function respondWithFilteredResult(_0x41be8d,_0x408652){return function(_0x20c517){if(_0x20c517){var _0x23144b=typeof _0x408652['offset']==='undefined'&&typeof _0x408652[_0xc4b6('0x1a')]===_0xc4b6('0x1b');var _0x403f94=_0x20c517[_0xc4b6('0x1c')];var _0x220dfd=_0x23144b?0x0:_0x408652[_0xc4b6('0x1d')];var _0x471bf8=_0x23144b?_0x20c517[_0xc4b6('0x1c')]:_0x408652[_0xc4b6('0x1d')]+_0x408652[_0xc4b6('0x1a')];var _0x5c1f92;if(_0x471bf8>=_0x403f94){_0x471bf8=_0x403f94;_0x5c1f92=0xc8;}else{_0x5c1f92=0xce;}_0x41be8d[_0xc4b6('0x19')](_0x5c1f92);return _0x41be8d['set'](_0xc4b6('0x1e'),_0x220dfd+'-'+_0x471bf8+'/'+_0x403f94)[_0xc4b6('0x1f')](_0x20c517);}return null;};}function patchUpdates(_0x44618b){return function(_0x15a3de){try{jsonpatch[_0xc4b6('0x20')](_0x15a3de,_0x44618b,!![]);}catch(_0x2f207d){return BPromise[_0xc4b6('0x21')](_0x2f207d);}return _0x15a3de[_0xc4b6('0x22')]();};}function saveUpdates(_0x51090f,_0x8fcdde){return function(_0x41fedf){if(_0x41fedf){return _0x41fedf[_0xc4b6('0x23')](_0x51090f)[_0xc4b6('0x24')](function(_0x24592a){return _0x24592a;});}return null;};}function removeEntity(_0x214801,_0x2c2d35){return function(_0x81b146){if(_0x81b146){return _0x81b146[_0xc4b6('0x25')]()['then'](function(){_0x214801['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x392b0f,_0x31a69f){return function(_0x4f5949){if(!_0x4f5949){_0x392b0f[_0xc4b6('0x18')](0x194);}return _0x4f5949;};}function handleError(_0x2e3468,_0x50b946){_0x50b946=_0x50b946||0x1f4;return function(_0x1209db){logger[_0xc4b6('0x26')](_0x1209db[_0xc4b6('0x27')]);if(_0x1209db[_0xc4b6('0x28')]){delete _0x1209db[_0xc4b6('0x28')];}_0x2e3468[_0xc4b6('0x19')](_0x50b946)[_0xc4b6('0x29')](_0x1209db);};}exports[_0xc4b6('0x2a')]=function(_0x31a9de,_0x473e8d){var _0x4a7b99={'raw':!![],'where':{'id':_0x31a9de[_0xc4b6('0x2b')]['id']}},_0x317924={};_0x317924[_0xc4b6('0x2c')]=_['keys'](db['ChatApplication'][_0xc4b6('0x2d')]);_0x317924['query']=_[_0xc4b6('0x2e')](_0x31a9de[_0xc4b6('0x2f')]);_0x317924[_0xc4b6('0x30')]=_['intersection'](_0x317924[_0xc4b6('0x2c')],_0x317924[_0xc4b6('0x2f')]);_0x4a7b99['attributes']=_[_0xc4b6('0x31')](_0x317924[_0xc4b6('0x2c')],qs[_0xc4b6('0x32')](_0x31a9de['query']['fields']));_0x4a7b99[_0xc4b6('0x33')]=_0x4a7b99[_0xc4b6('0x33')]['length']?_0x4a7b99[_0xc4b6('0x33')]:_0x317924['model'];if(_0x31a9de[_0xc4b6('0x2f')][_0xc4b6('0x34')]){_0x4a7b99[_0xc4b6('0x35')]=[{'all':!![]}];}_0x4a7b99=_[_0xc4b6('0x36')]({},_0x4a7b99,_0x31a9de[_0xc4b6('0x37')]);return db[_0xc4b6('0x38')][_0xc4b6('0x39')](_0x4a7b99)['then'](handleEntityNotFound(_0x473e8d,null))['then'](respondWithResult(_0x473e8d,null))['catch'](handleError(_0x473e8d,null));};exports[_0xc4b6('0x23')]=function(_0xdbcb5d,_0x154f2f){if(_0xdbcb5d[_0xc4b6('0x3a')]['id']){delete _0xdbcb5d['body']['id'];}return db['ChatApplication'][_0xc4b6('0x39')]({'where':{'id':_0xdbcb5d[_0xc4b6('0x2b')]['id']}})[_0xc4b6('0x24')](handleEntityNotFound(_0x154f2f,null))[_0xc4b6('0x24')](saveUpdates(_0xdbcb5d[_0xc4b6('0x3a')],null))[_0xc4b6('0x24')](respondWithResult(_0x154f2f,null))[_0xc4b6('0x3b')](handleError(_0x154f2f,null));};exports['destroy']=function(_0x16e925,_0x246644){return db['ChatApplication'][_0xc4b6('0x39')]({'where':{'id':_0x16e925[_0xc4b6('0x2b')]['id']}})[_0xc4b6('0x24')](handleEntityNotFound(_0x246644,null))[_0xc4b6('0x24')](removeEntity(_0x246644,null))[_0xc4b6('0x3b')](handleError(_0x246644,null));};
\ No newline at end of file
index 2a6bf0f..e1568d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba47=['path','../../config/environment','./chatApplication.attributes','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x35e683,_0x128119){var _0x580795=function(_0x1facd4){while(--_0x1facd4){_0x35e683['push'](_0x35e683['shift']());}};_0x580795(++_0x128119);}(_0xba47,0x1ac));var _0x7ba4=function(_0x2aa795,_0x2652df){_0x2aa795=_0x2aa795-0x0;var _0x5bf515=_0xba47[_0x2aa795];return _0x5bf515;};'use strict';var _=require(_0x7ba4('0x0'));var util=require(_0x7ba4('0x1'));var logger=require(_0x7ba4('0x2'))('api');var moment=require(_0x7ba4('0x3'));var BPromise=require(_0x7ba4('0x4'));var rp=require(_0x7ba4('0x5'));var fs=require('fs');var path=require(_0x7ba4('0x6'));var rimraf=require('rimraf');var config=require(_0x7ba4('0x7'));var attributes=require(_0x7ba4('0x8'));module['exports']=function(_0x4f8c2d,_0x565107){return _0x4f8c2d[_0x7ba4('0x9')](_0x7ba4('0xa'),attributes,{'tableName':_0x7ba4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7ba4('0xc'),'collate':_0x7ba4('0xd')});};
\ No newline at end of file
+var _0x552e=['exports','define','ChatApplication','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x552e,0x138));var _0xe552=function(_0x59ba65,_0x577a6b){_0x59ba65=_0x59ba65-0x0;var _0x55e0af=_0x552e[_0x59ba65];return _0x55e0af;};'use strict';var _=require(_0xe552('0x0'));var util=require(_0xe552('0x1'));var logger=require(_0xe552('0x2'))(_0xe552('0x3'));var moment=require(_0xe552('0x4'));var BPromise=require(_0xe552('0x5'));var rp=require(_0xe552('0x6'));var fs=require('fs');var path=require(_0xe552('0x7'));var rimraf=require(_0xe552('0x8'));var config=require(_0xe552('0x9'));var attributes=require('./chatApplication.attributes');module[_0xe552('0xa')]=function(_0x1d6d74,_0x12b18b){return _0x1d6d74[_0xe552('0xb')](_0xe552('0xc'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe552('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 027c0ea..a91b956 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5e0=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0xfa98fb,_0x2cebf6){var _0x1e6a1b=function(_0x114610){while(--_0x114610){_0xfa98fb['push'](_0xfa98fb['shift']());}};_0x1e6a1b(++_0x2cebf6);}(_0xb5e0,0x1e3));var _0x0b5e=function(_0x16f20e,_0x321898){_0x16f20e=_0x16f20e-0x0;var _0x32d8c0=_0xb5e0[_0x16f20e];return _0x32d8c0;};'use strict';var _=require(_0x0b5e('0x0'));var util=require(_0x0b5e('0x1'));var moment=require(_0x0b5e('0x2'));var BPromise=require(_0x0b5e('0x3'));var rs=require(_0x0b5e('0x4'));var fs=require('fs');var Redis=require(_0x0b5e('0x5'));var db=require(_0x0b5e('0x6'))['db'];var utils=require(_0x0b5e('0x7'));var logger=require(_0x0b5e('0x8'))(_0x0b5e('0x9'));var config=require(_0x0b5e('0xa'));var jayson=require(_0x0b5e('0xb'));var client=jayson['client'][_0x0b5e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e2d1d,_0x57794b,_0x424baa){return new BPromise(function(_0x480566,_0x1d5a11){return client[_0x0b5e('0xd')](_0x3e2d1d,_0x424baa)[_0x0b5e('0xe')](function(_0x572871){logger['info'](_0x0b5e('0xf'),_0x57794b,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x57794b,_0x0b5e('0x10'),JSON[_0x0b5e('0x11')](_0x572871));if(_0x572871['error']){if(_0x572871[_0x0b5e('0x12')]['code']===0x1f4){logger[_0x0b5e('0x12')](_0x0b5e('0xf'),_0x57794b,_0x572871['error'][_0x0b5e('0x13')]);return _0x1d5a11(_0x572871[_0x0b5e('0x12')][_0x0b5e('0x13')]);}logger[_0x0b5e('0x12')](_0x0b5e('0xf'),_0x57794b,_0x572871[_0x0b5e('0x12')][_0x0b5e('0x13')]);return _0x480566(_0x572871[_0x0b5e('0x12')][_0x0b5e('0x13')]);}else{logger[_0x0b5e('0x14')](_0x0b5e('0xf'),_0x57794b,'request\x20sent');_0x480566(_0x572871[_0x0b5e('0x15')]['message']);}})[_0x0b5e('0x16')](function(_0x59e8cb){logger[_0x0b5e('0x12')](_0x0b5e('0xf'),_0x57794b,_0x59e8cb);_0x1d5a11(_0x59e8cb);});});}
\ No newline at end of file
+var _0xfeca=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','../../mysqldb'];(function(_0x5e2ebe,_0x5a0d63){var _0x10ae82=function(_0x482ccf){while(--_0x482ccf){_0x5e2ebe['push'](_0x5e2ebe['shift']());}};_0x10ae82(++_0x5a0d63);}(_0xfeca,0x134));var _0xafec=function(_0x4f5828,_0x1446d5){_0x4f5828=_0x4f5828-0x0;var _0x5d896a=_0xfeca[_0x4f5828];return _0x5d896a;};'use strict';var _=require(_0xafec('0x0'));var util=require(_0xafec('0x1'));var moment=require(_0xafec('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xafec('0x3'))['db'];var utils=require(_0xafec('0x4'));var logger=require(_0xafec('0x5'))(_0xafec('0x6'));var config=require(_0xafec('0x7'));var jayson=require(_0xafec('0x8'));var client=jayson[_0xafec('0x9')][_0xafec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48806e,_0x4769c7,_0x5061ee){return new BPromise(function(_0x5a66fc,_0x1cc52c){return client[_0xafec('0xb')](_0x48806e,_0x5061ee)[_0xafec('0xc')](function(_0x975f48){logger[_0xafec('0xd')]('ChatApplication,\x20%s,\x20%s',_0x4769c7,_0xafec('0xe'));logger[_0xafec('0xf')](_0xafec('0x10'),_0x4769c7,_0xafec('0xe'),JSON[_0xafec('0x11')](_0x975f48));if(_0x975f48[_0xafec('0x12')]){if(_0x975f48[_0xafec('0x12')][_0xafec('0x13')]===0x1f4){logger[_0xafec('0x12')](_0xafec('0x14'),_0x4769c7,_0x975f48[_0xafec('0x12')][_0xafec('0x15')]);return _0x1cc52c(_0x975f48[_0xafec('0x12')]['message']);}logger[_0xafec('0x12')](_0xafec('0x14'),_0x4769c7,_0x975f48[_0xafec('0x12')][_0xafec('0x15')]);return _0x5a66fc(_0x975f48['error'][_0xafec('0x15')]);}else{logger[_0xafec('0xd')](_0xafec('0x14'),_0x4769c7,_0xafec('0xe'));_0x5a66fc(_0x975f48[_0xafec('0x16')][_0xafec('0x15')]);}})[_0xafec('0x17')](function(_0x2e4d81){logger[_0xafec('0x12')]('ChatApplication,\x20%s,\x20%s',_0x4769c7,_0x2e4d81);_0x1cc52c(_0x2e4d81);});});}
\ No newline at end of file
index af24237..62bd34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac1=['delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatApplication.controller','get','/:id','isAuthenticated','put'];(function(_0x101a17,_0x5d047a){var _0x3b76ee=function(_0x89be1b){while(--_0x89be1b){_0x101a17['push'](_0x101a17['shift']());}};_0x3b76ee(++_0x5d047a);}(_0x6ac1,0x7a));var _0x16ac=function(_0x24563c,_0x49d7cd){_0x24563c=_0x24563c-0x0;var _0x14796e=_0x6ac1[_0x24563c];return _0x14796e;};'use strict';var multer=require(_0x16ac('0x0'));var util=require(_0x16ac('0x1'));var path=require(_0x16ac('0x2'));var timeout=require(_0x16ac('0x3'));var express=require(_0x16ac('0x4'));var router=express[_0x16ac('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x16ac('0x6'));var interaction=require(_0x16ac('0x7'));var config=require('../../config/environment');var controller=require(_0x16ac('0x8'));router[_0x16ac('0x9')](_0x16ac('0xa'),auth[_0x16ac('0xb')](),controller['show']);router[_0x16ac('0xc')](_0x16ac('0xa'),auth[_0x16ac('0xb')](),controller['update']);router[_0x16ac('0xd')](_0x16ac('0xa'),auth[_0x16ac('0xb')](),controller['destroy']);module[_0x16ac('0xe')]=router;
\ No newline at end of file
+var _0xc593=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','delete','destroy','exports','multer','util'];(function(_0xb47ccc,_0x1d86aa){var _0x69686b=function(_0x22b885){while(--_0x22b885){_0xb47ccc['push'](_0xb47ccc['shift']());}};_0x69686b(++_0x1d86aa);}(_0xc593,0x1c9));var _0x3c59=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc593[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3c59('0x0'));var util=require(_0x3c59('0x1'));var path=require(_0x3c59('0x2'));var timeout=require(_0x3c59('0x3'));var express=require('express');var router=express[_0x3c59('0x4')]();var fs_extra=require(_0x3c59('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3c59('0x6'));var config=require(_0x3c59('0x7'));var controller=require(_0x3c59('0x8'));router[_0x3c59('0x9')](_0x3c59('0xa'),auth[_0x3c59('0xb')](),controller[_0x3c59('0xc')]);router[_0x3c59('0xd')](_0x3c59('0xa'),auth[_0x3c59('0xb')](),controller['update']);router[_0x3c59('0xe')](_0x3c59('0xa'),auth[_0x3c59('0xb')](),controller[_0x3c59('0xf')]);module[_0x3c59('0x10')]=router;
\ No newline at end of file
index 1ad56bc..08b8ca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e5=['sequelize','exports','STRING','BOOLEAN'];(function(_0x810e4d,_0x909ef4){var _0x13f01c=function(_0x12fd89){while(--_0x12fd89){_0x810e4d['push'](_0x810e4d['shift']());}};_0x13f01c(++_0x909ef4);}(_0xe9e5,0x138));var _0x5e9e=function(_0xca2652,_0x1042e3){_0xca2652=_0xca2652-0x0;var _0x4eef3f=_0xe9e5[_0xca2652];return _0x4eef3f;};'use strict';var Sequelize=require(_0x5e9e('0x0'));module[_0x5e9e('0x1')]={'name':{'type':Sequelize[_0x5e9e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5e9e('0x2')]},'write':{'type':Sequelize[_0x5e9e('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xcb2c=['BOOLEAN','exports','STRING'];(function(_0x490302,_0x2384e8){var _0x112cf8=function(_0x55dde8){while(--_0x55dde8){_0x490302['push'](_0x490302['shift']());}};_0x112cf8(++_0x2384e8);}(_0xcb2c,0x1c9));var _0xccb2=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xcb2c[_0x5bd426];return _0x23a7eb;};'use strict';var Sequelize=require('sequelize');module[_0xccb2('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xccb2('0x1')]},'write':{'type':Sequelize[_0xccb2('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 65ee8ae..ad724b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0a7=['find','catch','create','body','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','ids','getMembers','User','removeMembers','addMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','../../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','./chatGroup.socket','register','status','end','undefined','offset','count','limit','Content-Range','json','reject','save','then','sendStatus','error','stack','name','send','index','map','ChatGroup','fieldName','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes'];(function(_0x24ab67,_0x1cdca5){var _0x1d75d1=function(_0x2b49dd){while(--_0x2b49dd){_0x24ab67['push'](_0x24ab67['shift']());}};_0x1d75d1(++_0x1cdca5);}(_0xd0a7,0x137));var _0x7d0a=function(_0x2919bc,_0x4a6cd8){_0x2919bc=_0x2919bc-0x0;var _0x5ae95e=_0xd0a7[_0x2919bc];return _0x5ae95e;};'use strict';var emlformat=require(_0x7d0a('0x0'));var rimraf=require(_0x7d0a('0x1'));var zipdir=require(_0x7d0a('0x2'));var jsonpatch=require(_0x7d0a('0x3'));var rp=require('request-promise');var moment=require(_0x7d0a('0x4'));var BPromise=require(_0x7d0a('0x5'));var Mustache=require(_0x7d0a('0x6'));var util=require(_0x7d0a('0x7'));var path=require(_0x7d0a('0x8'));var sox=require(_0x7d0a('0x9'));var csv=require(_0x7d0a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d0a('0xb'));var _=require(_0x7d0a('0xc'));var squel=require(_0x7d0a('0xd'));var crypto=require(_0x7d0a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7d0a('0xf'));var toCsv=require(_0x7d0a('0xa'));var querystring=require(_0x7d0a('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7d0a('0x11'));var qs=require(_0x7d0a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d0a('0x13'));var logger=require(_0x7d0a('0x14'))(_0x7d0a('0x15'));var utils=require(_0x7d0a('0x16'));var config=require(_0x7d0a('0x17'));var licenseUtil=require(_0x7d0a('0x18'));var db=require(_0x7d0a('0x19'))['db'];config['redis']=_['defaults'](config[_0x7d0a('0x1a')],{'host':_0x7d0a('0x1b'),'port':0x18eb});var socket=require(_0x7d0a('0x1c'))(new Redis(config['redis']));require(_0x7d0a('0x1d'))[_0x7d0a('0x1e')](socket);function respondWithStatusCode(_0x9f77ca,_0x5bb797){_0x5bb797=_0x5bb797||0xcc;return function(_0x30d4a4){if(_0x30d4a4){return _0x9f77ca['sendStatus'](_0x5bb797);}return _0x9f77ca[_0x7d0a('0x1f')](_0x5bb797)[_0x7d0a('0x20')]();};}function respondWithResult(_0x48e8bf,_0x5eb5c1){_0x5eb5c1=_0x5eb5c1||0xc8;return function(_0x66b8f6){if(_0x66b8f6){return _0x48e8bf[_0x7d0a('0x1f')](_0x5eb5c1)['json'](_0x66b8f6);}};}function respondWithFilteredResult(_0x65d2f0,_0x13f286){return function(_0x4e467e){if(_0x4e467e){var _0x41585a=typeof _0x13f286['offset']==='undefined'&&typeof _0x13f286['limit']===_0x7d0a('0x21');var _0x45e983=_0x4e467e['count'];var _0x446f9f=_0x41585a?0x0:_0x13f286[_0x7d0a('0x22')];var _0x30b468=_0x41585a?_0x4e467e[_0x7d0a('0x23')]:_0x13f286[_0x7d0a('0x22')]+_0x13f286[_0x7d0a('0x24')];var _0x9a70ba;if(_0x30b468>=_0x45e983){_0x30b468=_0x45e983;_0x9a70ba=0xc8;}else{_0x9a70ba=0xce;}_0x65d2f0[_0x7d0a('0x1f')](_0x9a70ba);return _0x65d2f0['set'](_0x7d0a('0x25'),_0x446f9f+'-'+_0x30b468+'/'+_0x45e983)[_0x7d0a('0x26')](_0x4e467e);}return null;};}function patchUpdates(_0x514a8c){return function(_0x97af82){try{jsonpatch['apply'](_0x97af82,_0x514a8c,!![]);}catch(_0x4e67f6){return BPromise[_0x7d0a('0x27')](_0x4e67f6);}return _0x97af82[_0x7d0a('0x28')]();};}function saveUpdates(_0x47a5bb,_0x3b9d4c){return function(_0x90939a){if(_0x90939a){return _0x90939a['update'](_0x47a5bb)[_0x7d0a('0x29')](function(_0x5a9a0d){return _0x5a9a0d;});}return null;};}function removeEntity(_0x1488df,_0x575a9a){return function(_0x5d9d5b){if(_0x5d9d5b){return _0x5d9d5b['destroy']()[_0x7d0a('0x29')](function(){_0x1488df[_0x7d0a('0x1f')](0xcc)[_0x7d0a('0x20')]();});}};}function handleEntityNotFound(_0x4391a4,_0x1214c6){return function(_0x2bd1c8){if(!_0x2bd1c8){_0x4391a4[_0x7d0a('0x2a')](0x194);}return _0x2bd1c8;};}function handleError(_0x276fd8,_0x430842){_0x430842=_0x430842||0x1f4;return function(_0x2aabe6){logger[_0x7d0a('0x2b')](_0x2aabe6[_0x7d0a('0x2c')]);if(_0x2aabe6[_0x7d0a('0x2d')]){delete _0x2aabe6[_0x7d0a('0x2d')];}_0x276fd8['status'](_0x430842)[_0x7d0a('0x2e')](_0x2aabe6);};}exports[_0x7d0a('0x2f')]=function(_0x49aa8b,_0x1019f6){var _0x236d4a={},_0x347867={},_0x26e902={'count':0x0,'rows':[]};var _0x238208=_[_0x7d0a('0x30')](db[_0x7d0a('0x31')]['rawAttributes'],function(_0x2f9153){return{'name':_0x2f9153[_0x7d0a('0x32')],'type':_0x2f9153['type'][_0x7d0a('0x33')]};});_0x347867['model']=_[_0x7d0a('0x30')](_0x238208,_0x7d0a('0x2d'));_0x347867[_0x7d0a('0x34')]=_['keys'](_0x49aa8b[_0x7d0a('0x34')]);_0x347867['filters']=_[_0x7d0a('0x35')](_0x347867[_0x7d0a('0x36')],_0x347867[_0x7d0a('0x34')]);_0x236d4a['attributes']=_['intersection'](_0x347867['model'],qs[_0x7d0a('0x37')](_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x37')]));_0x236d4a[_0x7d0a('0x38')]=_0x236d4a['attributes'][_0x7d0a('0x39')]?_0x236d4a['attributes']:_0x347867[_0x7d0a('0x36')];if(!_0x49aa8b['query'][_0x7d0a('0x3a')](_0x7d0a('0x3b'))){_0x236d4a['limit']=qs['limit'](_0x49aa8b[_0x7d0a('0x34')]['limit']);_0x236d4a['offset']=qs[_0x7d0a('0x22')](_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x22')]);}_0x236d4a[_0x7d0a('0x3c')]=qs[_0x7d0a('0x3d')](_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x3d')]);_0x236d4a[_0x7d0a('0x3e')]=qs[_0x7d0a('0x3f')](_[_0x7d0a('0x40')](_0x49aa8b[_0x7d0a('0x34')],_0x347867[_0x7d0a('0x3f')]),_0x238208);if(_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x41')]){_0x236d4a[_0x7d0a('0x3e')]=_[_0x7d0a('0x42')](_0x236d4a[_0x7d0a('0x3e')],{'$or':_[_0x7d0a('0x30')](_0x238208,function(_0x3e3e5f){if(_0x3e3e5f['type']!==_0x7d0a('0x43')){var _0x4e3159={};_0x4e3159[_0x3e3e5f[_0x7d0a('0x2d')]]={'$like':'%'+_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x41')]+'%'};return _0x4e3159;}})});}_0x236d4a=_['merge']({},_0x236d4a,_0x49aa8b[_0x7d0a('0x44')]);var _0x514218={'where':_0x236d4a[_0x7d0a('0x3e')]};return db[_0x7d0a('0x31')][_0x7d0a('0x23')](_0x514218)['then'](function(_0x4c1f85){_0x26e902[_0x7d0a('0x23')]=_0x4c1f85;if(_0x49aa8b[_0x7d0a('0x34')][_0x7d0a('0x45')]){_0x236d4a[_0x7d0a('0x46')]=[{'all':!![]}];}return db['ChatGroup'][_0x7d0a('0x47')](_0x236d4a);})[_0x7d0a('0x29')](function(_0x2986dc){_0x26e902[_0x7d0a('0x48')]=_0x2986dc;return _0x26e902;})[_0x7d0a('0x29')](respondWithFilteredResult(_0x1019f6,_0x236d4a))['catch'](handleError(_0x1019f6,null));};exports[_0x7d0a('0x49')]=function(_0xf6cf12,_0x29f31d){var _0x289cc3={'raw':!![],'where':{'id':_0xf6cf12[_0x7d0a('0x4a')]['id']}},_0x470bd5={};_0x470bd5['model']=_[_0x7d0a('0x4b')](db[_0x7d0a('0x31')][_0x7d0a('0x4c')]);_0x470bd5[_0x7d0a('0x34')]=_[_0x7d0a('0x4b')](_0xf6cf12[_0x7d0a('0x34')]);_0x470bd5[_0x7d0a('0x3f')]=_[_0x7d0a('0x35')](_0x470bd5[_0x7d0a('0x36')],_0x470bd5[_0x7d0a('0x34')]);_0x289cc3[_0x7d0a('0x38')]=_[_0x7d0a('0x35')](_0x470bd5[_0x7d0a('0x36')],qs[_0x7d0a('0x37')](_0xf6cf12[_0x7d0a('0x34')][_0x7d0a('0x37')]));_0x289cc3['attributes']=_0x289cc3[_0x7d0a('0x38')]['length']?_0x289cc3[_0x7d0a('0x38')]:_0x470bd5[_0x7d0a('0x36')];if(_0xf6cf12[_0x7d0a('0x34')][_0x7d0a('0x45')]){_0x289cc3['include']=[{'all':!![]}];}_0x289cc3=_[_0x7d0a('0x42')]({},_0x289cc3,_0xf6cf12[_0x7d0a('0x44')]);return db[_0x7d0a('0x31')][_0x7d0a('0x4d')](_0x289cc3)[_0x7d0a('0x29')](handleEntityNotFound(_0x29f31d,null))[_0x7d0a('0x29')](respondWithResult(_0x29f31d,null))[_0x7d0a('0x4e')](handleError(_0x29f31d,null));};exports[_0x7d0a('0x4f')]=function(_0x112a14,_0x121189){return db[_0x7d0a('0x31')][_0x7d0a('0x4f')](_0x112a14[_0x7d0a('0x50')],{})['then'](respondWithResult(_0x121189,0xc9))[_0x7d0a('0x4e')](handleError(_0x121189,null));};exports['update']=function(_0x11b93f,_0x131bc8){if(_0x11b93f[_0x7d0a('0x50')]['id']){delete _0x11b93f[_0x7d0a('0x50')]['id'];}return db[_0x7d0a('0x31')][_0x7d0a('0x4d')]({'where':{'id':_0x11b93f[_0x7d0a('0x4a')]['id']}})[_0x7d0a('0x29')](handleEntityNotFound(_0x131bc8,null))[_0x7d0a('0x29')](saveUpdates(_0x11b93f[_0x7d0a('0x50')],null))['then'](respondWithResult(_0x131bc8,null))['catch'](handleError(_0x131bc8,null));};exports[_0x7d0a('0x51')]=function(_0x3227c7,_0x51d465){return db[_0x7d0a('0x31')][_0x7d0a('0x4d')]({'where':{'id':_0x3227c7[_0x7d0a('0x4a')]['id']}})[_0x7d0a('0x29')](handleEntityNotFound(_0x51d465,null))[_0x7d0a('0x29')](removeEntity(_0x51d465,null))['catch'](handleError(_0x51d465,null));};exports['describe']=function(_0xb473eb,_0x4032d8){return db['ChatGroup'][_0x7d0a('0x52')]()[_0x7d0a('0x29')](respondWithResult(_0x4032d8,null))[_0x7d0a('0x4e')](handleError(_0x4032d8,null));};exports[_0x7d0a('0x53')]=function(_0x3bff18,_0x14c7b3,_0x119e94){return db[_0x7d0a('0x54')]['count']({'where':{'ChatGroupId':_0x3bff18[_0x7d0a('0x4a')]['id'],'ToId':_0x3bff18[_0x7d0a('0x55')]['id'],'read':![]}})[_0x7d0a('0x29')](function(_0x25be5b){return{'id':_[_0x7d0a('0x56')](_0x3bff18[_0x7d0a('0x4a')]['id']),'count':_0x25be5b};})[_0x7d0a('0x29')](respondWithResult(_0x14c7b3,null))[_0x7d0a('0x4e')](handleError(_0x14c7b3,null));};exports['addMembers']=function(_0x3f70ad,_0xe89741,_0x2df2c5){return db[_0x7d0a('0x31')][_0x7d0a('0x4d')]({'where':{'id':_0x3f70ad['params']['id']}})['then'](handleEntityNotFound(_0xe89741,null))[_0x7d0a('0x29')](function(_0x56d684){if(_0x56d684){return _0x56d684['addMembers'](_0x3f70ad[_0x7d0a('0x50')][_0x7d0a('0x57')],_['omit'](_0x3f70ad[_0x7d0a('0x50')],[_0x7d0a('0x57'),'id'])||{});}})[_0x7d0a('0x29')](respondWithResult(_0xe89741,null))[_0x7d0a('0x4e')](handleError(_0xe89741,null));};exports[_0x7d0a('0x58')]=function(_0x19ac41,_0x32e2f6,_0x134db8){var _0x255e3b={};var _0x5ca438={};var _0xc23ed0;var _0x500255;return db['ChatGroup']['findOne']({'where':{'id':_0x19ac41[_0x7d0a('0x4a')]['id']}})[_0x7d0a('0x29')](handleEntityNotFound(_0x32e2f6,null))['then'](function(_0x389793){if(_0x389793){_0xc23ed0=_0x389793;_0x5ca438[_0x7d0a('0x36')]=_[_0x7d0a('0x4b')](db[_0x7d0a('0x59')]['rawAttributes']);_0x5ca438['query']=_[_0x7d0a('0x4b')](_0x19ac41[_0x7d0a('0x34')]);_0x5ca438['filters']=_[_0x7d0a('0x35')](_0x5ca438[_0x7d0a('0x36')],_0x5ca438[_0x7d0a('0x34')]);_0x255e3b[_0x7d0a('0x38')]=_[_0x7d0a('0x35')](_0x5ca438['model'],qs[_0x7d0a('0x37')](_0x19ac41[_0x7d0a('0x34')]['fields']));_0x255e3b[_0x7d0a('0x38')]=_0x255e3b[_0x7d0a('0x38')]['length']?_0x255e3b[_0x7d0a('0x38')]:_0x5ca438[_0x7d0a('0x36')];_0x255e3b[_0x7d0a('0x3c')]=qs[_0x7d0a('0x3d')](_0x19ac41[_0x7d0a('0x34')][_0x7d0a('0x3d')]);_0x255e3b[_0x7d0a('0x3e')]=qs['filters'](_['pick'](_0x19ac41[_0x7d0a('0x34')],_0x5ca438[_0x7d0a('0x3f')]));if(_0x19ac41[_0x7d0a('0x34')][_0x7d0a('0x41')]){_0x255e3b[_0x7d0a('0x3e')]=_[_0x7d0a('0x42')](_0x255e3b['where'],{'$or':_[_0x7d0a('0x30')](_0x255e3b[_0x7d0a('0x38')],function(_0x5729d4){var _0xbee54b={};_0xbee54b[_0x5729d4]={'$like':'%'+_0x19ac41[_0x7d0a('0x34')][_0x7d0a('0x41')]+'%'};return _0xbee54b;})});}_0x255e3b=_['merge']({},_0x255e3b,_0x19ac41['options']);return _0xc23ed0[_0x7d0a('0x58')](_0x255e3b);}})[_0x7d0a('0x29')](function(_0x3e9b8a){if(_0x3e9b8a){_0x500255=_0x3e9b8a[_0x7d0a('0x39')];if(!_0x19ac41[_0x7d0a('0x34')]['hasOwnProperty'](_0x7d0a('0x3b'))){_0x255e3b[_0x7d0a('0x24')]=qs[_0x7d0a('0x24')](_0x19ac41[_0x7d0a('0x34')][_0x7d0a('0x24')]);_0x255e3b[_0x7d0a('0x22')]=qs[_0x7d0a('0x22')](_0x19ac41[_0x7d0a('0x34')][_0x7d0a('0x22')]);}return _0xc23ed0['getMembers'](_0x255e3b);}})[_0x7d0a('0x29')](function(_0x86db3e){if(_0x86db3e){return _0x86db3e?{'count':_0x500255,'rows':_0x86db3e}:null;}})[_0x7d0a('0x29')](respondWithResult(_0x32e2f6,null))[_0x7d0a('0x4e')](handleError(_0x32e2f6,null));};exports[_0x7d0a('0x5a')]=function(_0x3dd0d0,_0x485296,_0x327cd8){return db[_0x7d0a('0x31')][_0x7d0a('0x4d')]({'where':{'id':_0x3dd0d0[_0x7d0a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x485296,null))[_0x7d0a('0x29')](function(_0xa07b02){if(_0xa07b02){return _0xa07b02[_0x7d0a('0x5a')](_0x3dd0d0[_0x7d0a('0x34')][_0x7d0a('0x57')]);}})['then'](respondWithStatusCode(_0x485296,null))[_0x7d0a('0x4e')](handleError(_0x485296,null));};exports[_0x7d0a('0x5b')]=function(_0x4635cc,_0xb32d66,_0x1fc974){if(_0x4635cc[_0x7d0a('0x50')]['id']){delete _0x4635cc[_0x7d0a('0x50')]['id'];}return db['ChatGroup'][_0x7d0a('0x4d')]({'where':{'id':_0x4635cc[_0x7d0a('0x4a')]['id']}})[_0x7d0a('0x29')](handleEntityNotFound(_0xb32d66,null))[_0x7d0a('0x29')](function(_0x1d63c6){if(_0x1d63c6){_0x4635cc['body']['ChatGroupId']=_0x1d63c6['id'];return db['ChatInternalMessage'][_0x7d0a('0x4f')](_0x4635cc['body']);}})[_0x7d0a('0x29')](respondWithResult(_0xb32d66,null))[_0x7d0a('0x4e')](handleError(_0xb32d66,null));};exports[_0x7d0a('0x5c')]=function(_0x20355d,_0x1696e1,_0x4c7148){var _0xe17b89={};var _0x5c2df1={};var _0x110ce2;var _0x4022a3;return db[_0x7d0a('0x31')]['findOne']({'where':{'id':_0x20355d['params']['id']}})[_0x7d0a('0x29')](handleEntityNotFound(_0x1696e1,null))[_0x7d0a('0x29')](function(_0x4cff25){if(_0x4cff25){_0x110ce2=_0x4cff25;_0x5c2df1[_0x7d0a('0x36')]=_[_0x7d0a('0x4b')](db[_0x7d0a('0x54')][_0x7d0a('0x4c')]);_0x5c2df1[_0x7d0a('0x34')]=_[_0x7d0a('0x4b')](_0x20355d[_0x7d0a('0x34')]);_0x5c2df1[_0x7d0a('0x3f')]=_[_0x7d0a('0x35')](_0x5c2df1['model'],_0x5c2df1[_0x7d0a('0x34')]);_0xe17b89[_0x7d0a('0x38')]=_[_0x7d0a('0x35')](_0x5c2df1[_0x7d0a('0x36')],qs[_0x7d0a('0x37')](_0x20355d[_0x7d0a('0x34')][_0x7d0a('0x37')]));_0xe17b89['attributes']=_0xe17b89[_0x7d0a('0x38')]['length']?_0xe17b89['attributes']:_0x5c2df1['model'];_0xe17b89[_0x7d0a('0x3c')]=qs['sort'](_0x20355d[_0x7d0a('0x34')]['sort']);_0xe17b89['where']=qs[_0x7d0a('0x3f')](_[_0x7d0a('0x40')](_0x20355d[_0x7d0a('0x34')],_0x5c2df1['filters']));if(_0x20355d[_0x7d0a('0x34')][_0x7d0a('0x41')]){_0xe17b89[_0x7d0a('0x3e')]=_[_0x7d0a('0x42')](_0xe17b89[_0x7d0a('0x3e')],{'$or':_[_0x7d0a('0x30')](_0xe17b89[_0x7d0a('0x38')],function(_0x51dd2f){var _0x366ce4={};_0x366ce4[_0x51dd2f]={'$like':'%'+_0x20355d['query'][_0x7d0a('0x41')]+'%'};return _0x366ce4;})});}if(_0x20355d['query']['$gte']){var _0x4a62da=_0x20355d[_0x7d0a('0x34')][_0x7d0a('0x5d')][_0x7d0a('0x5e')](',');var _0x12bd1e={};_0x12bd1e[_0x4a62da[0x0]]={'$gte':moment(_0x4a62da[0x1])[_0x7d0a('0x5f')](_0x7d0a('0x60'))};_0xe17b89['where']=_[_0x7d0a('0x42')](_0xe17b89['where'],_0x12bd1e);}_0xe17b89=_['merge']({},_0xe17b89,_0x20355d['options']);return _0x110ce2['getMessages'](_0xe17b89);}})[_0x7d0a('0x29')](function(_0x42f6a2){if(_0x42f6a2){_0x4022a3=_0x42f6a2['length'];if(!_0x20355d[_0x7d0a('0x34')][_0x7d0a('0x3a')](_0x7d0a('0x3b'))){_0xe17b89[_0x7d0a('0x24')]=qs[_0x7d0a('0x24')](_0x20355d[_0x7d0a('0x34')][_0x7d0a('0x24')]);_0xe17b89[_0x7d0a('0x22')]=qs[_0x7d0a('0x22')](_0x20355d['query']['offset']);}return _0x110ce2[_0x7d0a('0x5c')](_0xe17b89);}})[_0x7d0a('0x29')](function(_0x227782){if(_0x227782){return _0x227782?{'count':_0x4022a3,'rows':_0x227782}:null;}})[_0x7d0a('0x29')](respondWithResult(_0x1696e1,null))[_0x7d0a('0x4e')](handleError(_0x1696e1,null));};
\ No newline at end of file
+var _0xad7d=['../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','then','destroy','end','error','stack','name','send','map','ChatGroup','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','rows','params','rawAttributes','keys','catch','create','update','body','find','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','User','removeMembers','addMessage','getMessages','findOne','pick','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x5e8c32,_0x1b1f3f){var _0x595f7b=function(_0x38840e){while(--_0x38840e){_0x5e8c32['push'](_0x5e8c32['shift']());}};_0x595f7b(++_0x1b1f3f);}(_0xad7d,0x100));var _0xdad7=function(_0x3e96dc,_0x1663f7){_0x3e96dc=_0x3e96dc-0x0;var _0x18dead=_0xad7d[_0x3e96dc];return _0x18dead;};'use strict';var emlformat=require(_0xdad7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdad7('0x1'));var rp=require(_0xdad7('0x2'));var moment=require(_0xdad7('0x3'));var BPromise=require(_0xdad7('0x4'));var Mustache=require(_0xdad7('0x5'));var util=require(_0xdad7('0x6'));var path=require(_0xdad7('0x7'));var sox=require(_0xdad7('0x8'));var csv=require(_0xdad7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdad7('0xa'));var _=require(_0xdad7('0xb'));var squel=require(_0xdad7('0xc'));var crypto=require(_0xdad7('0xd'));var jsforce=require(_0xdad7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdad7('0x9'));var querystring=require(_0xdad7('0xf'));var Papa=require(_0xdad7('0x10'));var Redis=require(_0xdad7('0x11'));var authService=require(_0xdad7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdad7('0x13'));var hardwareService=require(_0xdad7('0x14'));var logger=require(_0xdad7('0x15'))('api');var utils=require(_0xdad7('0x16'));var config=require(_0xdad7('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xdad7('0x18')]=_[_0xdad7('0x19')](config[_0xdad7('0x18')],{'host':_0xdad7('0x1a'),'port':0x18eb});var socket=require(_0xdad7('0x1b'))(new Redis(config[_0xdad7('0x18')]));require(_0xdad7('0x1c'))['register'](socket);function respondWithStatusCode(_0x3c6765,_0x19ddd4){_0x19ddd4=_0x19ddd4||0xcc;return function(_0x54b74a){if(_0x54b74a){return _0x3c6765[_0xdad7('0x1d')](_0x19ddd4);}return _0x3c6765[_0xdad7('0x1e')](_0x19ddd4)['end']();};}function respondWithResult(_0x23d347,_0x46882c){_0x46882c=_0x46882c||0xc8;return function(_0x104647){if(_0x104647){return _0x23d347['status'](_0x46882c)[_0xdad7('0x1f')](_0x104647);}};}function respondWithFilteredResult(_0x12da8c,_0x814b1){return function(_0x1fd60e){if(_0x1fd60e){var _0x8a005e=typeof _0x814b1[_0xdad7('0x20')]==='undefined'&&typeof _0x814b1[_0xdad7('0x21')]===_0xdad7('0x22');var _0xf62212=_0x1fd60e[_0xdad7('0x23')];var _0x33413e=_0x8a005e?0x0:_0x814b1['offset'];var _0x397b71=_0x8a005e?_0x1fd60e['count']:_0x814b1[_0xdad7('0x20')]+_0x814b1['limit'];var _0x588e6a;if(_0x397b71>=_0xf62212){_0x397b71=_0xf62212;_0x588e6a=0xc8;}else{_0x588e6a=0xce;}_0x12da8c[_0xdad7('0x1e')](_0x588e6a);return _0x12da8c[_0xdad7('0x24')](_0xdad7('0x25'),_0x33413e+'-'+_0x397b71+'/'+_0xf62212)[_0xdad7('0x1f')](_0x1fd60e);}return null;};}function patchUpdates(_0x245a44){return function(_0x13899c){try{jsonpatch[_0xdad7('0x26')](_0x13899c,_0x245a44,!![]);}catch(_0x4e723c){return BPromise['reject'](_0x4e723c);}return _0x13899c['save']();};}function saveUpdates(_0x84a54b,_0x59ebca){return function(_0x35b23b){if(_0x35b23b){return _0x35b23b['update'](_0x84a54b)[_0xdad7('0x27')](function(_0x5bedd9){return _0x5bedd9;});}return null;};}function removeEntity(_0x45bf02,_0x2649e9){return function(_0xaae0c3){if(_0xaae0c3){return _0xaae0c3[_0xdad7('0x28')]()['then'](function(){_0x45bf02[_0xdad7('0x1e')](0xcc)[_0xdad7('0x29')]();});}};}function handleEntityNotFound(_0x2e8cef,_0x3d8959){return function(_0x43b490){if(!_0x43b490){_0x2e8cef[_0xdad7('0x1d')](0x194);}return _0x43b490;};}function handleError(_0x16943f,_0x2f4379){_0x2f4379=_0x2f4379||0x1f4;return function(_0x18a6be){logger[_0xdad7('0x2a')](_0x18a6be[_0xdad7('0x2b')]);if(_0x18a6be['name']){delete _0x18a6be[_0xdad7('0x2c')];}_0x16943f[_0xdad7('0x1e')](_0x2f4379)[_0xdad7('0x2d')](_0x18a6be);};}exports['index']=function(_0x1374bb,_0x330736){var _0xf1fe76={},_0x32c323={},_0x2849b0={'count':0x0,'rows':[]};var _0x9ac3cb=_[_0xdad7('0x2e')](db[_0xdad7('0x2f')]['rawAttributes'],function(_0x213669){return{'name':_0x213669['fieldName'],'type':_0x213669[_0xdad7('0x30')][_0xdad7('0x31')]};});_0x32c323[_0xdad7('0x32')]=_[_0xdad7('0x2e')](_0x9ac3cb,_0xdad7('0x2c'));_0x32c323['query']=_['keys'](_0x1374bb[_0xdad7('0x33')]);_0x32c323[_0xdad7('0x34')]=_[_0xdad7('0x35')](_0x32c323[_0xdad7('0x32')],_0x32c323[_0xdad7('0x33')]);_0xf1fe76[_0xdad7('0x36')]=_['intersection'](_0x32c323[_0xdad7('0x32')],qs[_0xdad7('0x37')](_0x1374bb[_0xdad7('0x33')][_0xdad7('0x37')]));_0xf1fe76[_0xdad7('0x36')]=_0xf1fe76[_0xdad7('0x36')][_0xdad7('0x38')]?_0xf1fe76['attributes']:_0x32c323['model'];if(!_0x1374bb[_0xdad7('0x33')][_0xdad7('0x39')]('nolimit')){_0xf1fe76[_0xdad7('0x21')]=qs[_0xdad7('0x21')](_0x1374bb[_0xdad7('0x33')][_0xdad7('0x21')]);_0xf1fe76['offset']=qs[_0xdad7('0x20')](_0x1374bb[_0xdad7('0x33')]['offset']);}_0xf1fe76[_0xdad7('0x3a')]=qs[_0xdad7('0x3b')](_0x1374bb[_0xdad7('0x33')][_0xdad7('0x3b')]);_0xf1fe76[_0xdad7('0x3c')]=qs['filters'](_['pick'](_0x1374bb[_0xdad7('0x33')],_0x32c323[_0xdad7('0x34')]),_0x9ac3cb);if(_0x1374bb[_0xdad7('0x33')][_0xdad7('0x3d')]){_0xf1fe76[_0xdad7('0x3c')]=_[_0xdad7('0x3e')](_0xf1fe76[_0xdad7('0x3c')],{'$or':_[_0xdad7('0x2e')](_0x9ac3cb,function(_0x208aa4){if(_0x208aa4['type']!=='VIRTUAL'){var _0x3d4f88={};_0x3d4f88[_0x208aa4[_0xdad7('0x2c')]]={'$like':'%'+_0x1374bb['query']['filter']+'%'};return _0x3d4f88;}})});}_0xf1fe76=_['merge']({},_0xf1fe76,_0x1374bb[_0xdad7('0x3f')]);var _0x4f27e7={'where':_0xf1fe76[_0xdad7('0x3c')]};return db[_0xdad7('0x2f')][_0xdad7('0x23')](_0x4f27e7)[_0xdad7('0x27')](function(_0x368f91){_0x2849b0['count']=_0x368f91;if(_0x1374bb[_0xdad7('0x33')][_0xdad7('0x40')]){_0xf1fe76[_0xdad7('0x41')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0xf1fe76);})['then'](function(_0x1be7ec){_0x2849b0[_0xdad7('0x42')]=_0x1be7ec;return _0x2849b0;})['then'](respondWithFilteredResult(_0x330736,_0xf1fe76))['catch'](handleError(_0x330736,null));};exports['show']=function(_0x5d96c1,_0x1fa465){var _0x1eec56={'raw':!![],'where':{'id':_0x5d96c1[_0xdad7('0x43')]['id']}},_0xdb1a01={};_0xdb1a01[_0xdad7('0x32')]=_['keys'](db[_0xdad7('0x2f')][_0xdad7('0x44')]);_0xdb1a01[_0xdad7('0x33')]=_[_0xdad7('0x45')](_0x5d96c1[_0xdad7('0x33')]);_0xdb1a01[_0xdad7('0x34')]=_[_0xdad7('0x35')](_0xdb1a01[_0xdad7('0x32')],_0xdb1a01['query']);_0x1eec56['attributes']=_[_0xdad7('0x35')](_0xdb1a01[_0xdad7('0x32')],qs['fields'](_0x5d96c1['query']['fields']));_0x1eec56[_0xdad7('0x36')]=_0x1eec56[_0xdad7('0x36')][_0xdad7('0x38')]?_0x1eec56[_0xdad7('0x36')]:_0xdb1a01[_0xdad7('0x32')];if(_0x5d96c1['query']['includeAll']){_0x1eec56[_0xdad7('0x41')]=[{'all':!![]}];}_0x1eec56=_['merge']({},_0x1eec56,_0x5d96c1[_0xdad7('0x3f')]);return db[_0xdad7('0x2f')]['find'](_0x1eec56)[_0xdad7('0x27')](handleEntityNotFound(_0x1fa465,null))['then'](respondWithResult(_0x1fa465,null))[_0xdad7('0x46')](handleError(_0x1fa465,null));};exports['create']=function(_0x27c83f,_0x2334ca){return db[_0xdad7('0x2f')][_0xdad7('0x47')](_0x27c83f['body'],{})[_0xdad7('0x27')](respondWithResult(_0x2334ca,0xc9))[_0xdad7('0x46')](handleError(_0x2334ca,null));};exports[_0xdad7('0x48')]=function(_0xf28bb3,_0x26bee0){if(_0xf28bb3[_0xdad7('0x49')]['id']){delete _0xf28bb3[_0xdad7('0x49')]['id'];}return db[_0xdad7('0x2f')][_0xdad7('0x4a')]({'where':{'id':_0xf28bb3[_0xdad7('0x43')]['id']}})['then'](handleEntityNotFound(_0x26bee0,null))[_0xdad7('0x27')](saveUpdates(_0xf28bb3[_0xdad7('0x49')],null))[_0xdad7('0x27')](respondWithResult(_0x26bee0,null))['catch'](handleError(_0x26bee0,null));};exports['destroy']=function(_0x31c72c,_0x3b0d2d){return db['ChatGroup'][_0xdad7('0x4a')]({'where':{'id':_0x31c72c[_0xdad7('0x43')]['id']}})[_0xdad7('0x27')](handleEntityNotFound(_0x3b0d2d,null))[_0xdad7('0x27')](removeEntity(_0x3b0d2d,null))[_0xdad7('0x46')](handleError(_0x3b0d2d,null));};exports['describe']=function(_0x3b9473,_0x27e468){return db['ChatGroup'][_0xdad7('0x4b')]()[_0xdad7('0x27')](respondWithResult(_0x27e468,null))[_0xdad7('0x46')](handleError(_0x27e468,null));};exports[_0xdad7('0x4c')]=function(_0x2a28fb,_0x400a5f,_0x19dcb9){return db[_0xdad7('0x4d')]['count']({'where':{'ChatGroupId':_0x2a28fb['params']['id'],'ToId':_0x2a28fb[_0xdad7('0x4e')]['id'],'read':![]}})[_0xdad7('0x27')](function(_0x59ff35){return{'id':_[_0xdad7('0x4f')](_0x2a28fb['params']['id']),'count':_0x59ff35};})[_0xdad7('0x27')](respondWithResult(_0x400a5f,null))[_0xdad7('0x46')](handleError(_0x400a5f,null));};exports[_0xdad7('0x50')]=function(_0x2c2ed5,_0x31ad04,_0x1ea826){return db[_0xdad7('0x2f')][_0xdad7('0x4a')]({'where':{'id':_0x2c2ed5[_0xdad7('0x43')]['id']}})['then'](handleEntityNotFound(_0x31ad04,null))['then'](function(_0x46b864){if(_0x46b864){return _0x46b864[_0xdad7('0x50')](_0x2c2ed5['body'][_0xdad7('0x51')],_[_0xdad7('0x52')](_0x2c2ed5[_0xdad7('0x49')],[_0xdad7('0x51'),'id'])||{});}})[_0xdad7('0x27')](respondWithResult(_0x31ad04,null))[_0xdad7('0x46')](handleError(_0x31ad04,null));};exports[_0xdad7('0x53')]=function(_0x2ab1f2,_0x44739f,_0xd1ed84){var _0x1a76e6={};var _0x15c1a7={};var _0x3272a1;var _0x50091b;return db['ChatGroup']['findOne']({'where':{'id':_0x2ab1f2[_0xdad7('0x43')]['id']}})['then'](handleEntityNotFound(_0x44739f,null))[_0xdad7('0x27')](function(_0x2937ee){if(_0x2937ee){_0x3272a1=_0x2937ee;_0x15c1a7[_0xdad7('0x32')]=_[_0xdad7('0x45')](db[_0xdad7('0x54')][_0xdad7('0x44')]);_0x15c1a7[_0xdad7('0x33')]=_[_0xdad7('0x45')](_0x2ab1f2[_0xdad7('0x33')]);_0x15c1a7[_0xdad7('0x34')]=_[_0xdad7('0x35')](_0x15c1a7[_0xdad7('0x32')],_0x15c1a7[_0xdad7('0x33')]);_0x1a76e6[_0xdad7('0x36')]=_[_0xdad7('0x35')](_0x15c1a7[_0xdad7('0x32')],qs[_0xdad7('0x37')](_0x2ab1f2[_0xdad7('0x33')]['fields']));_0x1a76e6[_0xdad7('0x36')]=_0x1a76e6['attributes'][_0xdad7('0x38')]?_0x1a76e6['attributes']:_0x15c1a7[_0xdad7('0x32')];_0x1a76e6[_0xdad7('0x3a')]=qs[_0xdad7('0x3b')](_0x2ab1f2[_0xdad7('0x33')][_0xdad7('0x3b')]);_0x1a76e6[_0xdad7('0x3c')]=qs['filters'](_['pick'](_0x2ab1f2['query'],_0x15c1a7[_0xdad7('0x34')]));if(_0x2ab1f2[_0xdad7('0x33')][_0xdad7('0x3d')]){_0x1a76e6[_0xdad7('0x3c')]=_['merge'](_0x1a76e6[_0xdad7('0x3c')],{'$or':_[_0xdad7('0x2e')](_0x1a76e6['attributes'],function(_0x1c77d0){var _0x47eafb={};_0x47eafb[_0x1c77d0]={'$like':'%'+_0x2ab1f2[_0xdad7('0x33')][_0xdad7('0x3d')]+'%'};return _0x47eafb;})});}_0x1a76e6=_[_0xdad7('0x3e')]({},_0x1a76e6,_0x2ab1f2[_0xdad7('0x3f')]);return _0x3272a1[_0xdad7('0x53')](_0x1a76e6);}})[_0xdad7('0x27')](function(_0x580edb){if(_0x580edb){_0x50091b=_0x580edb[_0xdad7('0x38')];if(!_0x2ab1f2['query'][_0xdad7('0x39')]('nolimit')){_0x1a76e6[_0xdad7('0x21')]=qs[_0xdad7('0x21')](_0x2ab1f2[_0xdad7('0x33')]['limit']);_0x1a76e6['offset']=qs[_0xdad7('0x20')](_0x2ab1f2[_0xdad7('0x33')][_0xdad7('0x20')]);}return _0x3272a1[_0xdad7('0x53')](_0x1a76e6);}})['then'](function(_0x2049d8){if(_0x2049d8){return _0x2049d8?{'count':_0x50091b,'rows':_0x2049d8}:null;}})[_0xdad7('0x27')](respondWithResult(_0x44739f,null))[_0xdad7('0x46')](handleError(_0x44739f,null));};exports[_0xdad7('0x55')]=function(_0x4a498c,_0x4e1e3d,_0x2e50f1){return db[_0xdad7('0x2f')][_0xdad7('0x4a')]({'where':{'id':_0x4a498c[_0xdad7('0x43')]['id']}})['then'](handleEntityNotFound(_0x4e1e3d,null))[_0xdad7('0x27')](function(_0x243935){if(_0x243935){return _0x243935['removeMembers'](_0x4a498c['query'][_0xdad7('0x51')]);}})[_0xdad7('0x27')](respondWithStatusCode(_0x4e1e3d,null))[_0xdad7('0x46')](handleError(_0x4e1e3d,null));};exports[_0xdad7('0x56')]=function(_0x1e7116,_0x121602,_0x20a25d){if(_0x1e7116[_0xdad7('0x49')]['id']){delete _0x1e7116[_0xdad7('0x49')]['id'];}return db['ChatGroup'][_0xdad7('0x4a')]({'where':{'id':_0x1e7116[_0xdad7('0x43')]['id']}})['then'](handleEntityNotFound(_0x121602,null))['then'](function(_0x264e5d){if(_0x264e5d){_0x1e7116[_0xdad7('0x49')]['ChatGroupId']=_0x264e5d['id'];return db[_0xdad7('0x4d')][_0xdad7('0x47')](_0x1e7116[_0xdad7('0x49')]);}})['then'](respondWithResult(_0x121602,null))['catch'](handleError(_0x121602,null));};exports[_0xdad7('0x57')]=function(_0x313570,_0x2fd75c,_0x3c981d){var _0x4a001d={};var _0x2d3f44={};var _0x2aafad;var _0x5cc815;return db[_0xdad7('0x2f')][_0xdad7('0x58')]({'where':{'id':_0x313570[_0xdad7('0x43')]['id']}})[_0xdad7('0x27')](handleEntityNotFound(_0x2fd75c,null))[_0xdad7('0x27')](function(_0x29eded){if(_0x29eded){_0x2aafad=_0x29eded;_0x2d3f44['model']=_[_0xdad7('0x45')](db[_0xdad7('0x4d')][_0xdad7('0x44')]);_0x2d3f44[_0xdad7('0x33')]=_[_0xdad7('0x45')](_0x313570[_0xdad7('0x33')]);_0x2d3f44[_0xdad7('0x34')]=_['intersection'](_0x2d3f44[_0xdad7('0x32')],_0x2d3f44[_0xdad7('0x33')]);_0x4a001d['attributes']=_['intersection'](_0x2d3f44[_0xdad7('0x32')],qs['fields'](_0x313570[_0xdad7('0x33')][_0xdad7('0x37')]));_0x4a001d[_0xdad7('0x36')]=_0x4a001d[_0xdad7('0x36')][_0xdad7('0x38')]?_0x4a001d['attributes']:_0x2d3f44[_0xdad7('0x32')];_0x4a001d[_0xdad7('0x3a')]=qs[_0xdad7('0x3b')](_0x313570[_0xdad7('0x33')][_0xdad7('0x3b')]);_0x4a001d[_0xdad7('0x3c')]=qs[_0xdad7('0x34')](_[_0xdad7('0x59')](_0x313570[_0xdad7('0x33')],_0x2d3f44[_0xdad7('0x34')]));if(_0x313570[_0xdad7('0x33')]['filter']){_0x4a001d['where']=_['merge'](_0x4a001d[_0xdad7('0x3c')],{'$or':_[_0xdad7('0x2e')](_0x4a001d[_0xdad7('0x36')],function(_0x371eb7){var _0x22ffaf={};_0x22ffaf[_0x371eb7]={'$like':'%'+_0x313570[_0xdad7('0x33')]['filter']+'%'};return _0x22ffaf;})});}if(_0x313570[_0xdad7('0x33')]['$gte']){var _0x4e9ea1=_0x313570[_0xdad7('0x33')]['$gte'][_0xdad7('0x5a')](',');var _0x2e9da5={};_0x2e9da5[_0x4e9ea1[0x0]]={'$gte':moment(_0x4e9ea1[0x1])[_0xdad7('0x5b')](_0xdad7('0x5c'))};_0x4a001d['where']=_[_0xdad7('0x3e')](_0x4a001d[_0xdad7('0x3c')],_0x2e9da5);}_0x4a001d=_[_0xdad7('0x3e')]({},_0x4a001d,_0x313570['options']);return _0x2aafad[_0xdad7('0x57')](_0x4a001d);}})['then'](function(_0x254dac){if(_0x254dac){_0x5cc815=_0x254dac[_0xdad7('0x38')];if(!_0x313570['query'][_0xdad7('0x39')]('nolimit')){_0x4a001d[_0xdad7('0x21')]=qs[_0xdad7('0x21')](_0x313570[_0xdad7('0x33')]['limit']);_0x4a001d[_0xdad7('0x20')]=qs[_0xdad7('0x20')](_0x313570[_0xdad7('0x33')][_0xdad7('0x20')]);}return _0x2aafad['getMessages'](_0x4a001d);}})['then'](function(_0x48843b){if(_0x48843b){return _0x48843b?{'count':_0x5cc815,'rows':_0x48843b}:null;}})[_0xdad7('0x27')](respondWithResult(_0x2fd75c,null))['catch'](handleError(_0x2fd75c,null));};
\ No newline at end of file
index 9d4b6e1..510ad70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b33=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x1cb13c,_0x58a1b5){var _0x230242=function(_0x5030ea){while(--_0x5030ea){_0x1cb13c['push'](_0x1cb13c['shift']());}};_0x230242(++_0x58a1b5);}(_0x9b33,0xdb));var _0x39b3=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x9b33[_0x4d8ed9];return _0x1e2140;};'use strict';var EventEmitter=require(_0x39b3('0x0'));var ChatGroup=require(_0x39b3('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x39b3('0x2')](0x0);var events={'afterCreate':_0x39b3('0x3'),'afterUpdate':_0x39b3('0x4'),'afterDestroy':_0x39b3('0x5')};function emitEvent(_0x549117){return function(_0x5e68d8,_0x3dddb7,_0x2523c0){ChatGroupEvents[_0x39b3('0x6')](_0x549117+':'+_0x5e68d8['id'],_0x5e68d8);ChatGroupEvents[_0x39b3('0x6')](_0x549117,_0x5e68d8);_0x2523c0(null);};}for(var e in events){if(events[_0x39b3('0x7')](e)){var event=events[e];ChatGroup[_0x39b3('0x8')](e,emitEvent(event));}}module[_0x39b3('0x9')]=ChatGroupEvents;
\ No newline at end of file
+var _0x96d8=['hasOwnProperty','exports','events','../../mysqldb','ChatGroup','setMaxListeners','save','update','remove','emit'];(function(_0x5205a9,_0x816293){var _0xda9a24=function(_0x57b0ad){while(--_0x57b0ad){_0x5205a9['push'](_0x5205a9['shift']());}};_0xda9a24(++_0x816293);}(_0x96d8,0x1e2));var _0x896d=function(_0x217ff8,_0x5990c2){_0x217ff8=_0x217ff8-0x0;var _0x1a1373=_0x96d8[_0x217ff8];return _0x1a1373;};'use strict';var EventEmitter=require(_0x896d('0x0'));var ChatGroup=require(_0x896d('0x1'))['db'][_0x896d('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x896d('0x3')](0x0);var events={'afterCreate':_0x896d('0x4'),'afterUpdate':_0x896d('0x5'),'afterDestroy':_0x896d('0x6')};function emitEvent(_0x38a13c){return function(_0x25d933,_0x384037,_0x239960){ChatGroupEvents[_0x896d('0x7')](_0x38a13c+':'+_0x25d933['id'],_0x25d933);ChatGroupEvents[_0x896d('0x7')](_0x38a13c,_0x25d933);_0x239960(null);};}for(var e in events){if(events[_0x896d('0x8')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0x896d('0x9')]=ChatGroupEvents;
\ No newline at end of file
index 58ffb59..950c9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb268=['rimraf','ChatGroup','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x51bd8e,_0x2cc5c6){var _0x33be4b=function(_0xbc27b5){while(--_0xbc27b5){_0x51bd8e['push'](_0x51bd8e['shift']());}};_0x33be4b(++_0x2cc5c6);}(_0xb268,0xbf));var _0x8b26=function(_0x17e765,_0x46b1a7){_0x17e765=_0x17e765-0x0;var _0x48216a=_0xb268[_0x17e765];return _0x48216a;};'use strict';var _=require(_0x8b26('0x0'));var util=require(_0x8b26('0x1'));var logger=require(_0x8b26('0x2'))('api');var moment=require(_0x8b26('0x3'));var BPromise=require(_0x8b26('0x4'));var rp=require(_0x8b26('0x5'));var fs=require('fs');var path=require(_0x8b26('0x6'));var rimraf=require(_0x8b26('0x7'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module['exports']=function(_0x47292e,_0x587a28){return _0x47292e['define'](_0x8b26('0x8'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c9a=['ChatGroup','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define'];(function(_0x14a513,_0x3239f){var _0x47236c=function(_0x394191){while(--_0x394191){_0x14a513['push'](_0x14a513['shift']());}};_0x47236c(++_0x3239f);}(_0x1c9a,0x9d));var _0xa1c9=function(_0x4af703,_0x2f3840){_0x4af703=_0x4af703-0x0;var _0x330740=_0x1c9a[_0x4af703];return _0x330740;};'use strict';var _=require('lodash');var util=require(_0xa1c9('0x0'));var logger=require(_0xa1c9('0x1'))(_0xa1c9('0x2'));var moment=require(_0xa1c9('0x3'));var BPromise=require(_0xa1c9('0x4'));var rp=require(_0xa1c9('0x5'));var fs=require('fs');var path=require(_0xa1c9('0x6'));var rimraf=require(_0xa1c9('0x7'));var config=require(_0xa1c9('0x8'));var attributes=require(_0xa1c9('0x9'));module[_0xa1c9('0xa')]=function(_0x1f969a,_0x253d90){return _0x1f969a[_0xa1c9('0xb')](_0xa1c9('0xc'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de81c91..7991473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6bb=['ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info'];(function(_0x3397c0,_0xd3a82e){var _0x399945=function(_0x5a2c66){while(--_0x5a2c66){_0x3397c0['push'](_0x3397c0['shift']());}};_0x399945(++_0xd3a82e);}(_0xd6bb,0x1cc));var _0xbd6b=function(_0x1d1d09,_0x504d77){_0x1d1d09=_0x1d1d09-0x0;var _0x8827e=_0xd6bb[_0x1d1d09];return _0x8827e;};'use strict';var _=require(_0xbd6b('0x0'));var util=require('util');var moment=require(_0xbd6b('0x1'));var BPromise=require(_0xbd6b('0x2'));var rs=require(_0xbd6b('0x3'));var fs=require('fs');var Redis=require(_0xbd6b('0x4'));var db=require(_0xbd6b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbd6b('0x6'))(_0xbd6b('0x7'));var config=require(_0xbd6b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbd6b('0x9')][_0xbd6b('0xa')]({'port':0x232a});config[_0xbd6b('0xb')]=_[_0xbd6b('0xc')](config[_0xbd6b('0xb')],{'host':_0xbd6b('0xd'),'port':0x18eb});var socket=require(_0xbd6b('0xe'))(new Redis(config[_0xbd6b('0xb')]));require(_0xbd6b('0xf'))[_0xbd6b('0x10')](socket);function respondWithRpcPromise(_0x66952a,_0x5a810b,_0x3c24e5){return new BPromise(function(_0x42c30e,_0x47c02d){return client[_0xbd6b('0x11')](_0x66952a,_0x3c24e5)[_0xbd6b('0x12')](function(_0x531a2a){logger[_0xbd6b('0x13')](_0xbd6b('0x14'),_0x5a810b,_0xbd6b('0x15'));logger[_0xbd6b('0x16')](_0xbd6b('0x17'),_0x5a810b,'request\x20sent',JSON[_0xbd6b('0x18')](_0x531a2a));if(_0x531a2a[_0xbd6b('0x19')]){if(_0x531a2a[_0xbd6b('0x19')][_0xbd6b('0x1a')]===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0x5a810b,_0x531a2a[_0xbd6b('0x19')][_0xbd6b('0x1b')]);return _0x47c02d(_0x531a2a[_0xbd6b('0x19')][_0xbd6b('0x1b')]);}logger[_0xbd6b('0x19')](_0xbd6b('0x14'),_0x5a810b,_0x531a2a['error'][_0xbd6b('0x1b')]);return _0x42c30e(_0x531a2a['error']['message']);}else{logger['info'](_0xbd6b('0x14'),_0x5a810b,_0xbd6b('0x15'));_0x42c30e(_0x531a2a[_0xbd6b('0x1c')]['message']);}})[_0xbd6b('0x1d')](function(_0x27ff92){logger['error'](_0xbd6b('0x14'),_0x5a810b,_0x27ff92);_0x47c02d(_0x27ff92);});});}
\ No newline at end of file
+var _0xccdc=['redis','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults'];(function(_0x1a5de7,_0x5cbc72){var _0x5e8914=function(_0x4e8833){while(--_0x4e8833){_0x1a5de7['push'](_0x1a5de7['shift']());}};_0x5e8914(++_0x5cbc72);}(_0xccdc,0x1c4));var _0xcccd=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0xccdc[_0x456fb1];return _0x4083d6;};'use strict';var _=require(_0xcccd('0x0'));var util=require(_0xcccd('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcccd('0x2'));var fs=require('fs');var Redis=require(_0xcccd('0x3'));var db=require(_0xcccd('0x4'))['db'];var utils=require(_0xcccd('0x5'));var logger=require(_0xcccd('0x6'))(_0xcccd('0x7'));var config=require(_0xcccd('0x8'));var jayson=require(_0xcccd('0x9'));var client=jayson[_0xcccd('0xa')][_0xcccd('0xb')]({'port':0x232a});config['redis']=_[_0xcccd('0xc')](config[_0xcccd('0xd')],{'host':_0xcccd('0xe'),'port':0x18eb});var socket=require(_0xcccd('0xf'))(new Redis(config[_0xcccd('0xd')]));require(_0xcccd('0x10'))[_0xcccd('0x11')](socket);function respondWithRpcPromise(_0x21924b,_0x490551,_0x1413db){return new BPromise(function(_0xe3a013,_0x3687df){return client[_0xcccd('0x12')](_0x21924b,_0x1413db)[_0xcccd('0x13')](function(_0x2cba03){logger[_0xcccd('0x14')](_0xcccd('0x15'),_0x490551,_0xcccd('0x16'));logger[_0xcccd('0x17')](_0xcccd('0x18'),_0x490551,_0xcccd('0x16'),JSON[_0xcccd('0x19')](_0x2cba03));if(_0x2cba03[_0xcccd('0x1a')]){if(_0x2cba03[_0xcccd('0x1a')][_0xcccd('0x1b')]===0x1f4){logger[_0xcccd('0x1a')](_0xcccd('0x15'),_0x490551,_0x2cba03['error']['message']);return _0x3687df(_0x2cba03[_0xcccd('0x1a')][_0xcccd('0x1c')]);}logger[_0xcccd('0x1a')]('ChatGroup,\x20%s,\x20%s',_0x490551,_0x2cba03[_0xcccd('0x1a')][_0xcccd('0x1c')]);return _0xe3a013(_0x2cba03[_0xcccd('0x1a')]['message']);}else{logger[_0xcccd('0x14')]('ChatGroup,\x20%s,\x20%s',_0x490551,'request\x20sent');_0xe3a013(_0x2cba03[_0xcccd('0x1d')][_0xcccd('0x1c')]);}})[_0xcccd('0x1e')](function(_0xa5a57f){logger[_0xcccd('0x1a')](_0xcccd('0x15'),_0x490551,_0xa5a57f);_0x3687df(_0xa5a57f);});});}
\ No newline at end of file
index 0efbcfc..d8060d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd6=['removeListener','register','length','chatGroup:','save','remove','update','emit'];(function(_0x10a19a,_0x1a45ec){var _0x3f7183=function(_0x33ef0c){while(--_0x33ef0c){_0x10a19a['push'](_0x10a19a['shift']());}};_0x3f7183(++_0x1a45ec);}(_0x5fd6,0xac));var _0x65fd=function(_0x4da158,_0x4ba875){_0x4da158=_0x4da158-0x0;var _0x31133e=_0x5fd6[_0x4da158];return _0x31133e;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x65fd('0x0'),_0x65fd('0x1'),_0x65fd('0x2')];function createListener(_0x25efa3,_0x2600ce){return function(_0x3fbe32){_0x2600ce[_0x65fd('0x3')](_0x25efa3,_0x3fbe32);};}function removeListener(_0x81f0f0,_0x5a4863){return function(){ChatGroupEvents[_0x65fd('0x4')](_0x81f0f0,_0x5a4863);};}exports[_0x65fd('0x5')]=function(_0x3ab80b){for(var _0x4750e3=0x0,_0x585855=events[_0x65fd('0x6')];_0x4750e3<_0x585855;_0x4750e3++){var _0x4f29f7=events[_0x4750e3];var _0x13b90a=createListener(_0x65fd('0x7')+_0x4f29f7,_0x3ab80b);ChatGroupEvents['on'](_0x4f29f7,_0x13b90a);}};
\ No newline at end of file
+var _0x171d=['update','removeListener','register','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0x97d4b6,_0x1b8eab){var _0x364238=function(_0x496705){while(--_0x496705){_0x97d4b6['push'](_0x97d4b6['shift']());}};_0x364238(++_0x1b8eab);}(_0x171d,0xb5));var _0xd171=function(_0x328534,_0x33b41e){_0x328534=_0x328534-0x0;var _0x2796c0=_0x171d[_0x328534];return _0x2796c0;};'use strict';var ChatGroupEvents=require(_0xd171('0x0'));var events=[_0xd171('0x1'),_0xd171('0x2'),_0xd171('0x3')];function createListener(_0x21e8bf,_0x1b440d){return function(_0x32fadb){_0x1b440d['emit'](_0x21e8bf,_0x32fadb);};}function removeListener(_0x50ff54,_0x56ad70){return function(){ChatGroupEvents[_0xd171('0x4')](_0x50ff54,_0x56ad70);};}exports[_0xd171('0x5')]=function(_0x44ea20){for(var _0x1e9e9c=0x0,_0x3f00e2=events[_0xd171('0x6')];_0x1e9e9c<_0x3f00e2;_0x1e9e9c++){var _0x381e3a=events[_0x1e9e9c];var _0x5bac2f=createListener(_0xd171('0x7')+_0x381e3a,_0x44ea20);ChatGroupEvents['on'](_0x381e3a,_0x5bac2f);}};
\ No newline at end of file
index 49d53e5..b82db7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a8=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','describe','/:id/unread','getUnread','/:id/members','/:id/messages','post','create','addMembers','addMessage','put','/:id','update','delete','destroy','removeMembers','exports','multer','util','path','connect-timeout'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x68a8,0xce));var _0x868a=function(_0x397dde,_0x4b2324){_0x397dde=_0x397dde-0x0;var _0x222c6f=_0x68a8[_0x397dde];return _0x222c6f;};'use strict';var multer=require(_0x868a('0x0'));var util=require(_0x868a('0x1'));var path=require(_0x868a('0x2'));var timeout=require(_0x868a('0x3'));var express=require(_0x868a('0x4'));var router=express[_0x868a('0x5')]();var fs_extra=require(_0x868a('0x6'));var auth=require(_0x868a('0x7'));var interaction=require(_0x868a('0x8'));var config=require(_0x868a('0x9'));var controller=require(_0x868a('0xa'));router[_0x868a('0xb')]('/',auth[_0x868a('0xc')](),controller[_0x868a('0xd')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x868a('0xe')]);router[_0x868a('0xb')]('/:id',auth[_0x868a('0xc')](),controller['show']);router[_0x868a('0xb')](_0x868a('0xf'),auth[_0x868a('0xc')](),controller[_0x868a('0x10')]);router[_0x868a('0xb')](_0x868a('0x11'),auth[_0x868a('0xc')](),controller['getMembers']);router[_0x868a('0xb')](_0x868a('0x12'),auth[_0x868a('0xc')](),controller['getMessages']);router[_0x868a('0x13')]('/',auth[_0x868a('0xc')](),controller[_0x868a('0x14')]);router[_0x868a('0x13')](_0x868a('0x11'),auth[_0x868a('0xc')](),controller[_0x868a('0x15')]);router[_0x868a('0x13')](_0x868a('0x12'),auth['isAuthenticated'](),controller[_0x868a('0x16')]);router[_0x868a('0x17')](_0x868a('0x18'),auth['isAuthenticated'](),controller[_0x868a('0x19')]);router[_0x868a('0x1a')](_0x868a('0x18'),auth[_0x868a('0xc')](),controller[_0x868a('0x1b')]);router['delete'](_0x868a('0x11'),auth[_0x868a('0xc')](),controller[_0x868a('0x1c')]);module[_0x868a('0x1d')]=router;
\ No newline at end of file
+var _0xfad8=['getMessages','post','create','put','update','delete','destroy','removeMembers','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages'];(function(_0x42c297,_0x5a7ab2){var _0x4e29e9=function(_0x138033){while(--_0x138033){_0x42c297['push'](_0x42c297['shift']());}};_0x4e29e9(++_0x5a7ab2);}(_0xfad8,0xf9));var _0x8fad=function(_0x2b3ddc,_0x19a52d){_0x2b3ddc=_0x2b3ddc-0x0;var _0x5a71ec=_0xfad8[_0x2b3ddc];return _0x5a71ec;};'use strict';var multer=require(_0x8fad('0x0'));var util=require(_0x8fad('0x1'));var path=require('path');var timeout=require(_0x8fad('0x2'));var express=require(_0x8fad('0x3'));var router=express[_0x8fad('0x4')]();var fs_extra=require(_0x8fad('0x5'));var auth=require(_0x8fad('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8fad('0x7'));var controller=require(_0x8fad('0x8'));router[_0x8fad('0x9')]('/',auth[_0x8fad('0xa')](),controller[_0x8fad('0xb')]);router[_0x8fad('0x9')](_0x8fad('0xc'),auth[_0x8fad('0xa')](),controller[_0x8fad('0xd')]);router[_0x8fad('0x9')](_0x8fad('0xe'),auth[_0x8fad('0xa')](),controller[_0x8fad('0xf')]);router[_0x8fad('0x9')](_0x8fad('0x10'),auth['isAuthenticated'](),controller[_0x8fad('0x11')]);router[_0x8fad('0x9')](_0x8fad('0x12'),auth[_0x8fad('0xa')](),controller[_0x8fad('0x13')]);router[_0x8fad('0x9')](_0x8fad('0x14'),auth[_0x8fad('0xa')](),controller[_0x8fad('0x15')]);router[_0x8fad('0x16')]('/',auth['isAuthenticated'](),controller[_0x8fad('0x17')]);router[_0x8fad('0x16')](_0x8fad('0x12'),auth[_0x8fad('0xa')](),controller['addMembers']);router[_0x8fad('0x16')](_0x8fad('0x14'),auth[_0x8fad('0xa')](),controller['addMessage']);router[_0x8fad('0x18')]('/:id',auth[_0x8fad('0xa')](),controller[_0x8fad('0x19')]);router[_0x8fad('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x8fad('0x1b')]);router[_0x8fad('0x1a')](_0x8fad('0x12'),auth[_0x8fad('0xa')](),controller[_0x8fad('0x1c')]);module[_0x8fad('0x1d')]=router;
\ No newline at end of file
index 2ef7634..e80053a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['BOOLEAN','ENUM','star','thumb','TEXT','STRING','DATE','long','out'];(function(_0x5d344a,_0x41d02c){var _0xb8c23=function(_0x4be34e){while(--_0x4be34e){_0x5d344a['push'](_0x5d344a['shift']());}};_0xb8c23(++_0x41d02c);}(_0x705f,0x75));var _0xf705=function(_0x209603,_0x351b88){_0x209603=_0x209603-0x0;var _0x3e06d4=_0x705f[_0x209603];return _0x3e06d4;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xf705('0x0')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xf705('0x1')](_0xf705('0x2'),_0xf705('0x3')),'defaultValue':_0xf705('0x2')},'ratingMessage':{'type':Sequelize[_0xf705('0x4')]},'pathTranscript':{'type':Sequelize[_0xf705('0x4')]},'mailTranscript':{'type':Sequelize[_0xf705('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xf705('0x6')]},'disposition':{'type':Sequelize[_0xf705('0x5')]},'secondDisposition':{'type':Sequelize[_0xf705('0x5')]},'thirdDisposition':{'type':Sequelize[_0xf705('0x5')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0xf705('0x5')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0xf705('0x5')]},'deviceModel':{'type':Sequelize[_0xf705('0x5')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0xf705('0x4')]},'customerIp':{'type':Sequelize[_0xf705('0x5')]},'formData':{'type':Sequelize[_0xf705('0x4')](_0xf705('0x7'))},'read1stAt':{'type':Sequelize[_0xf705('0x6')]},'lastMsgAt':{'type':Sequelize[_0xf705('0x6')]},'lastMsgDirection':{'type':Sequelize[_0xf705('0x1')]('in',_0xf705('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0xf705('0x5')]},'vidaooSessionId':{'type':Sequelize[_0xf705('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0xf705('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2e21=['thumb','star','TEXT','STRING','DATE','out','sequelize','exports','BOOLEAN','ENUM'];(function(_0x4cbf2f,_0x60ca13){var _0x483d8a=function(_0x40cad8){while(--_0x40cad8){_0x4cbf2f['push'](_0x4cbf2f['shift']());}};_0x483d8a(++_0x60ca13);}(_0x2e21,0xba));var _0x12e2=function(_0x21de1d,_0x579195){_0x21de1d=_0x21de1d-0x0;var _0x50b67e=_0x2e21[_0x21de1d];return _0x50b67e;};'use strict';var Sequelize=require(_0x12e2('0x0'));module[_0x12e2('0x1')]={'closed':{'type':Sequelize[_0x12e2('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x12e2('0x3')]('star',_0x12e2('0x4')),'defaultValue':_0x12e2('0x5')},'ratingMessage':{'type':Sequelize[_0x12e2('0x6')]},'pathTranscript':{'type':Sequelize[_0x12e2('0x6')]},'mailTranscript':{'type':Sequelize[_0x12e2('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x12e2('0x8')]},'disposition':{'type':Sequelize[_0x12e2('0x7')]},'secondDisposition':{'type':Sequelize[_0x12e2('0x7')]},'thirdDisposition':{'type':Sequelize[_0x12e2('0x7')]},'note':{'type':Sequelize[_0x12e2('0x7')]},'browserName':{'type':Sequelize[_0x12e2('0x7')]},'browserVersion':{'type':Sequelize[_0x12e2('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x12e2('0x7')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x12e2('0x7')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x12e2('0x6')]},'customerIp':{'type':Sequelize[_0x12e2('0x7')]},'formData':{'type':Sequelize[_0x12e2('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x12e2('0x8')]},'lastMsgAt':{'type':Sequelize[_0x12e2('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x12e2('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x12e2('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x12e2('0x2')],'defaultValue':![]}};
\ No newline at end of file
index ac5d92f..4f9453a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6182=['stack','name','send','render','body','contact','agent','account','index','map','ChatInteraction','rawAttributes','fieldName','type','getOptions','findAll','query','user','show','params','model','keys','filters','intersection','fields','attributes','length','includeAll','include','merge','options','find','create','describe','createVidaooSession','ChatWebsite','findOne','ChatWebsiteId','vidaooApiKey','vidaooNote','vidaooMetadata','vidaooEscalation','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','vidaooTopic','isNull','follow','parse','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','disposition','AbandonInteraction','file','originalname','basename','mimetype','Attachment','attachmentDownload','closed','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','download','close','mailTranscript','server/files/chat/upload/','format','pathTranscript','Messages','User','ContactId','%s%d','agentAlias','System','Visitor','agentIdentifier','agent_alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','\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','hasOwnProperty','order','sort','where','pick','ChatInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','nolimit','includeAgent','push','addTags','setTags','spread','Tag','color','emit','removeTags','unix','files','tmp','attachments','transcript-%d-%s.zip','Contact','firstName','read','Account','mkdirSync','Chat','Owner','N.A.','toString','closedAt','osName','referer','customerIp','customerPort','createReadStream','pipe','out','lastName','value','renderFile','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','moment','bluebird','mustache','util','path','lodash','../../components/export/pdf','../../config/environment','redis','localhost','socket.io-emitter','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','update','destroy','end'];(function(_0x3eff21,_0x5bf36c){var _0x1945bb=function(_0x319a9e){while(--_0x319a9e){_0x3eff21['push'](_0x3eff21['shift']());}};_0x1945bb(++_0x5bf36c);}(_0x6182,0x171));var _0x2618=function(_0x45146c,_0xc5be9c){_0x45146c=_0x45146c-0x0;var _0x2d2c89=_0x6182[_0x45146c];return _0x2d2c89;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x2618('0x0'));var rp=require(_0x2618('0x1'));var moment=require(_0x2618('0x2'));var BPromise=require(_0x2618('0x3'));var Mustache=require(_0x2618('0x4'));var util=require(_0x2618('0x5'));var path=require(_0x2618('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x2618('0x7'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x2618('0x8'));var logger=require('../../config/logger')('api');var config=require(_0x2618('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x2618('0xa')],{'host':_0x2618('0xb'),'port':0x18eb});var socket=require(_0x2618('0xc'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0x2618('0xd')](socket);var jayson=require(_0x2618('0xe'));var client=jayson['client'][_0x2618('0xf')]({'port':0x232b});var client9004=jayson[_0x2618('0x10')][_0x2618('0xf')]({'port':0x232c});function respondWithRpcPromise(_0x548919,_0x5f4a26,_0x48c856,_0x786bd){return new BPromise(function(_0x40a79e,_0x5a351d){var _0xdb3e98=_0x786bd||client;return _0xdb3e98[_0x2618('0x11')](_0x548919,_0x48c856)[_0x2618('0x12')](function(_0x5b527d){logger[_0x2618('0x13')](_0x2618('0x14'),_0x5f4a26,_0x2618('0x15'));logger[_0x2618('0x16')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x5f4a26,_0x2618('0x15'),JSON[_0x2618('0x17')](_0x5b527d));if(_0x5b527d[_0x2618('0x18')]){if(_0x5b527d[_0x2618('0x18')][_0x2618('0x19')]===0x1f4){logger[_0x2618('0x18')](_0x2618('0x14'),_0x5f4a26,_0x5b527d[_0x2618('0x18')][_0x2618('0x1a')]);return _0x5a351d(_0x5b527d[_0x2618('0x18')][_0x2618('0x1a')]);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x5f4a26,_0x5b527d[_0x2618('0x18')][_0x2618('0x1a')]);return _0x40a79e(_0x5b527d[_0x2618('0x18')]['message']);}else{logger[_0x2618('0x13')](_0x2618('0x14'),_0x5f4a26,_0x2618('0x15'));_0x40a79e(_0x5b527d[_0x2618('0x1b')]['message']);}})[_0x2618('0x1c')](function(_0x868f6f){logger[_0x2618('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x5f4a26,_0x868f6f);_0x5a351d(_0x868f6f);});});}function respondWithStatusCode(_0xe848ec,_0x503079){_0x503079=_0x503079||0xcc;return function(_0x43ad9d){if(_0x43ad9d){return _0xe848ec[_0x2618('0x1d')](_0x503079);}return _0xe848ec[_0x2618('0x1e')](_0x503079)['end']();};}function respondWithResult(_0x334403,_0x1d297b){_0x1d297b=_0x1d297b||0xc8;return function(_0x58dd32){if(_0x58dd32){return _0x334403[_0x2618('0x1e')](_0x1d297b)[_0x2618('0x1f')](_0x58dd32);}};}function respondWithFilteredResult(_0x37a26e,_0x151c02){return function(_0x5c6a40){if(_0x5c6a40){var _0x1d9790=typeof _0x151c02[_0x2618('0x20')]===_0x2618('0x21')&&typeof _0x151c02[_0x2618('0x22')]==='undefined';var _0x574575=_0x5c6a40[_0x2618('0x23')];var _0x476b12=_0x1d9790?0x0:_0x151c02[_0x2618('0x20')];var _0x3b6c6a=_0x1d9790?_0x5c6a40[_0x2618('0x23')]:_0x151c02[_0x2618('0x20')]+_0x151c02['limit'];var _0x4f3933;if(_0x3b6c6a>=_0x574575){_0x3b6c6a=_0x574575;_0x4f3933=0xc8;}else{_0x4f3933=0xce;}_0x37a26e['status'](_0x4f3933);return _0x37a26e['set']('Content-Range',_0x476b12+'-'+_0x3b6c6a+'/'+_0x574575)[_0x2618('0x1f')](_0x5c6a40);}return null;};}function saveUpdates(_0x47cb39){return function(_0x27b43d){if(_0x27b43d){return _0x27b43d[_0x2618('0x24')](_0x47cb39)[_0x2618('0x12')](function(_0x348e36){return _0x348e36;});}return null;};}function removeEntity(_0x541692){return function(_0x5976d2){if(_0x5976d2){return _0x5976d2[_0x2618('0x25')]()['then'](function(){_0x541692['status'](0xcc)[_0x2618('0x26')]();});}};}function handleEntityNotFound(_0x259ba4){return function(_0x417d0c){if(!_0x417d0c){_0x259ba4[_0x2618('0x1d')](0x194);}return _0x417d0c;};}function handleError(_0x1e5138,_0x1d4341){_0x1d4341=_0x1d4341||0x1f4;return function(_0x43c010){logger[_0x2618('0x18')](_0x43c010[_0x2618('0x27')]);if(_0x43c010[_0x2618('0x28')]){delete _0x43c010[_0x2618('0x28')];}_0x1e5138[_0x2618('0x1e')](_0x1d4341)[_0x2618('0x29')](_0x43c010);};}function getMustacheRender(_0x4acb1a,_0x5a18f8){return Mustache[_0x2618('0x2a')](_0x4acb1a,_['merge'](_0x5a18f8[_0x2618('0x2b')],{'contact':_0x5a18f8[_0x2618('0x2c')],'message':_0x5a18f8[_0x2618('0x1a')],'agent':_0x5a18f8[_0x2618('0x2d')],'interaction':_0x5a18f8['interaction'],'account':_0x5a18f8[_0x2618('0x2e')]}))||'';}exports[_0x2618('0x2f')]=function(_0x512a19,_0x3c47d0){var _0x247182={};var _0x51a534=_[_0x2618('0x30')](db[_0x2618('0x31')][_0x2618('0x32')],function(_0x17b6ea){return{'name':_0x17b6ea[_0x2618('0x33')],'type':_0x17b6ea[_0x2618('0x34')]['key']};});_0x247182=qs[_0x2618('0x35')](_0x51a534,_0x512a19);return interaction[_0x2618('0x36')]('chat',_0x512a19[_0x2618('0x37')],_0x512a19[_0x2618('0x38')],_0x247182,_0x51a534)[_0x2618('0x12')](respondWithFilteredResult(_0x3c47d0,_0x247182))['catch'](handleError(_0x3c47d0,null));};exports[_0x2618('0x39')]=function(_0x39067e,_0x4b61ce){var _0x16cc80={'raw':![],'where':{'id':_0x39067e[_0x2618('0x3a')]['id']}},_0xad01d1={};_0xad01d1[_0x2618('0x3b')]=_[_0x2618('0x3c')](db[_0x2618('0x31')]['rawAttributes']);_0xad01d1['query']=_[_0x2618('0x3c')](_0x39067e[_0x2618('0x37')]);_0xad01d1[_0x2618('0x3d')]=_[_0x2618('0x3e')](_0xad01d1['model'],_0xad01d1[_0x2618('0x37')]);_0x16cc80['attributes']=_['intersection'](_0xad01d1['model'],qs['fields'](_0x39067e['query'][_0x2618('0x3f')]));_0x16cc80[_0x2618('0x40')]=_0x16cc80[_0x2618('0x40')][_0x2618('0x41')]?_0x16cc80['attributes']:_0xad01d1[_0x2618('0x3b')];if(_0x39067e[_0x2618('0x37')][_0x2618('0x42')]){_0x16cc80[_0x2618('0x43')]=[{'all':!![]}];}_0x16cc80=_[_0x2618('0x44')]({},_0x16cc80,_0x39067e[_0x2618('0x45')]);return db[_0x2618('0x31')][_0x2618('0x46')](_0x16cc80)[_0x2618('0x12')](handleEntityNotFound(_0x4b61ce,null))['then'](respondWithResult(_0x4b61ce,null))[_0x2618('0x1c')](handleError(_0x4b61ce,null));};exports[_0x2618('0x47')]=function(_0x34faba,_0x58134a){return db[_0x2618('0x31')][_0x2618('0x47')](_0x34faba[_0x2618('0x2b')],{})[_0x2618('0x12')](respondWithResult(_0x58134a,0xc9))[_0x2618('0x1c')](handleError(_0x58134a,null));};exports[_0x2618('0x24')]=function(_0xe6b85d,_0x1cf0a4){if(_0xe6b85d[_0x2618('0x2b')]['id']){delete _0xe6b85d['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0xe6b85d['params']['id']}})['then'](handleEntityNotFound(_0x1cf0a4,null))['then'](saveUpdates(_0xe6b85d[_0x2618('0x2b')],null))[_0x2618('0x12')](respondWithResult(_0x1cf0a4,null))[_0x2618('0x1c')](handleError(_0x1cf0a4,null));};exports[_0x2618('0x25')]=function(_0x531130,_0x2b722c){return db[_0x2618('0x31')][_0x2618('0x46')]({'where':{'id':_0x531130['params']['id']}})[_0x2618('0x12')](handleEntityNotFound(_0x2b722c,null))['then'](removeEntity(_0x2b722c,null))['catch'](handleError(_0x2b722c,null));};exports[_0x2618('0x48')]=function(_0x1faf27,_0x4a7c30){return db[_0x2618('0x31')][_0x2618('0x48')]()[_0x2618('0x12')](respondWithResult(_0x4a7c30,null))[_0x2618('0x1c')](handleError(_0x4a7c30,null));};exports[_0x2618('0x49')]=function(_0x4910fd,_0xc93fcb){var _0xebbda=_0x4910fd[_0x2618('0x3a')]['id'];var _0x1aacc4;var _0x288dab;var _0x5611c9;return db[_0x2618('0x31')]['findOne']({'where':{'id':_0xebbda}})[_0x2618('0x12')](function(_0x7422cb){_0x1aacc4=_0x7422cb;return db[_0x2618('0x4a')][_0x2618('0x4b')]({'where':{'id':_0x7422cb[_0x2618('0x4c')]},'attributes':['id',_0x2618('0x4d'),'vidaooEscalation','vidaooTopic',_0x2618('0x4e'),_0x2618('0x4f')],'raw':!![]});})[_0x2618('0x12')](function(_0x17a948){if(_0x17a948&&_0x17a948['vidaooApiKey']&&_0x17a948[_0x2618('0x50')]){_0x288dab=_0x17a948;var _0x2c1ba8={'interaction':{'id':_0xebbda},'agent':{'id':_0x4910fd['user']['id'],'name':_0x4910fd[_0x2618('0x38')][_0x2618('0x28')],'fullname':_0x4910fd['user']['fullname'],'email':_0x4910fd[_0x2618('0x38')]['email']},'contact':_0x4910fd['body'][_0x2618('0x2c')],'account':_0x4910fd[_0x2618('0x2b')][_0x2618('0x2e')]};var _0x8a650c={'rejectUnauthorized':![],'method':_0x2618('0x51'),'url':_0x2618('0x52'),'headers':{'X-APIKEY':_0x17a948[_0x2618('0x4d')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4910fd[_0x2618('0x38')][_0x2618('0x53')]],'buttons':null,'topic':_0x288dab[_0x2618('0x54')],'note':_[_0x2618('0x55')](_0x288dab['vidaooNote'])?null:getMustacheRender(_0x288dab['vidaooNote'],_0x2c1ba8),'metadata':null},'redirect':_0x2618('0x56'),'json':!![]};try{if(!_[_0x2618('0x55')](_0x288dab[_0x2618('0x4f')])){var _0x2397c2=getMustacheRender(_0x288dab[_0x2618('0x4f')],_0x2c1ba8);var _0x506a84=JSON[_0x2618('0x57')](_0x2397c2);_0x8a650c[_0x2618('0x2b')]['metadata']=_0x506a84;}}catch(_0xfb12fd){throw new db['Sequelize'][(_0x2618('0x58'))](_0x2618('0x59'));}return rp(_0x8a650c);}else{throw new db[(_0x2618('0x5a'))][(_0x2618('0x58'))](_0x2618('0x5b'));}})[_0x2618('0x12')](function(_0x226d8d){_0x5611c9=_0x226d8d;if(_0x5611c9['id']){var _0x27a1db={'body':_0x5611c9[_0x2618('0x5c')],'ChatWebsiteId':_0x288dab['id'],'ChatInteractionId':_0x1aacc4['id'],'direction':'out','UserId':_0x4910fd[_0x2618('0x38')]['id']};return db[_0x2618('0x5d')][_0x2618('0x47')](_0x27a1db,{});}else{throw new db[(_0x2618('0x5a'))]['ValidationError'](_0x2618('0x5e'));}})['then'](function(){return _0x1aacc4[_0x2618('0x5f')]({'vidaooSessionId':_0x5611c9['id']});})[_0x2618('0x12')](respondWithResult(_0xc93fcb,null))[_0x2618('0x1c')](handleError(_0xc93fcb,null));};exports['customUpdate']=function(_0x525d8c,_0x56addc){if(_0x525d8c[_0x2618('0x2b')]['id']){delete _0x525d8c[_0x2618('0x2b')]['id'];}return db[_0x2618('0x31')][_0x2618('0x46')]({'where':{'id':_0x525d8c[_0x2618('0x3a')]['id']},'include':[{'model':db[_0x2618('0x60')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x56addc,null))[_0x2618('0x12')](saveUpdates(_0x525d8c[_0x2618('0x2b')],null))[_0x2618('0x12')](respondWithResult(_0x56addc,null))[_0x2618('0x1c')](handleError(_0x56addc,null));};exports[_0x2618('0x61')]=function(_0xea921b,_0x3399f0){if(_0xea921b[_0x2618('0x2b')]['id']){delete _0xea921b[_0x2618('0x2b')]['id'];}return db[_0x2618('0x31')][_0x2618('0x46')]({'where':{'id':_0xea921b[_0x2618('0x3a')]['id']}})['then'](function(_0x4bf23d){if(!_0x4bf23d){logger[_0x2618('0x18')](_0x2618('0x62'),'abandon',0x194,_0x2618('0x63'));_0x3399f0['sendStatus'](0x194);}else{if(_0x4bf23d[_0x2618('0x64')]){throw new db[(_0x2618('0x5a'))][(_0x2618('0x58'))](_0x2618('0x65'));}}return _0x4bf23d;})[_0x2618('0x12')](function(_0x9ba87c){if(_0x9ba87c){return _0x9ba87c[_0x2618('0x24')]({'closed':_0xea921b[_0x2618('0x2b')]['closed'],'disposition':_0xea921b[_0x2618('0x2b')][_0x2618('0x66')]})[_0x2618('0x12')](function(_0x1df8a4){return _0x1df8a4;});}})['then'](function(){return respondWithRpcPromise(_0x2618('0x67'),'abandon',_0xea921b['body'],client9004);})[_0x2618('0x12')](respondWithResult(_0x3399f0,null))[_0x2618('0x1c')](handleError(_0x3399f0,null));};exports['attachmentUpload']=function(_0x3e736f,_0x2f408e){_0x3e736f['body'][_0x2618('0x28')]=_0x3e736f[_0x2618('0x68')][_0x2618('0x69')];_0x3e736f['body'][_0x2618('0x6a')]=_0x3e736f[_0x2618('0x68')]['filename'];_0x3e736f[_0x2618('0x2b')]['type']=_0x3e736f[_0x2618('0x68')][_0x2618('0x6b')];return db[_0x2618('0x6c')]['create'](_0x3e736f[_0x2618('0x2b')])[_0x2618('0x12')](respondWithResult(_0x2f408e,0xc9))[_0x2618('0x1c')](handleError(_0x2f408e,null));};exports[_0x2618('0x6d')]=function(_0x5e6d45,_0x492768){return db['ChatInteraction'][_0x2618('0x4b')]({'where':{'id':_0x5e6d45['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x492768,null))[_0x2618('0x12')](function(_0x3a0013){if(_0x3a0013){if(_0x3a0013[_0x2618('0x6e')]){return _0x492768['status'](0x193)[_0x2618('0x1f')]({'status':0x193,'message':_0x2618('0x6f')});}return db['Attachment'][_0x2618('0x4b')]({'where':{'id':_0x5e6d45[_0x2618('0x37')][_0x2618('0x70')]},'raw':!![]})[_0x2618('0x12')](handleEntityNotFound(_0x492768,null));}})['then'](function(_0x196388){if(_0x196388){var _0x392951=_0x196388[_0x2618('0x71')]!==null;var _0x395366=path[_0x2618('0x72')](config[_0x2618('0x73')],_0x2618('0x74'));if(_0x392951){_0x395366=path[_0x2618('0x72')](_0x395366,'offline-chat/');}var _0x500eda=path['join'](_0x395366,_0x196388[_0x2618('0x6a')]);return _0x492768[_0x2618('0x75')](_0x500eda);}})[_0x2618('0x1c')](handleError(_0x492768,null));};exports[_0x2618('0x76')]=function(_0x3c1f4b,_0xe33569){var _0x4f2c4c=null;var _0x481477=null;var _0x54c25f=null;if(_0x3c1f4b[_0x2618('0x2b')]['id']){delete _0x3c1f4b[_0x2618('0x2b')]['id'];}if(_0x3c1f4b['body'][_0x2618('0x77')]){_0x54c25f=path[_0x2618('0x72')](config[_0x2618('0x73')],_0x2618('0x78'),util[_0x2618('0x79')]('transcript-%s.txt',Date['now']()));_0x3c1f4b[_0x2618('0x2b')][_0x2618('0x7a')]=_0x54c25f;}return db[_0x2618('0x31')][_0x2618('0x46')]({'where':{'id':_0x3c1f4b['params']['id']},'include':[{'model':db[_0x2618('0x5d')],'as':_0x2618('0x7b'),'include':[{'model':db[_0x2618('0x7c')],'as':_0x2618('0x7c')}]}]})['then'](handleEntityNotFound(_0xe33569,null))[_0x2618('0x12')](saveUpdates(_0x3c1f4b[_0x2618('0x2b')],null))[_0x2618('0x12')](function(_0x3921ec){if(_0x3921ec){_0x4f2c4c=_0x3921ec;return db[_0x2618('0x4a')][_0x2618('0x46')]({'where':{'id':_0x4f2c4c['ChatWebsiteId']}});}})[_0x2618('0x12')](function(_0x1b9707){if(_0x1b9707){_0x481477=_0x1b9707;return db[_0x2618('0x60')][_0x2618('0x46')]({'where':{'id':_0x4f2c4c[_0x2618('0x7d')]}});}})[_0x2618('0x12')](function(_0x4d69d6){if(_0x4d69d6){if(_0x54c25f){var _0x542187=null;for(var _0x53179e=0x1;_0x53179e<_0x4f2c4c[_0x2618('0x7b')]['length'];++_0x53179e){_0x542187=_0x4f2c4c[_0x2618('0x7b')][_0x53179e];var _0x5c72a5=_0x542187[_0x2618('0x64')]?util['format'](_0x2618('0x7e'),_0x481477[_0x2618('0x7f')],_0x542187[_0x2618('0x64')]):_0x2618('0x80');var _0x2e3e1e=_0x3c1f4b[_0x2618('0x2b')]['customer']||util[_0x2618('0x79')]('%s%d',_0x2618('0x81'),_0x542187['ContactId']);switch(_0x481477[_0x2618('0x82')]){case'website_alias':_0x5c72a5=_0x542187[_0x2618('0x64')]?util[_0x2618('0x79')](_0x2618('0x7e'),_0x481477[_0x2618('0x7f')],_0x542187['UserId']):_0x2618('0x80');break;case _0x2618('0x83'):_0x5c72a5=_0x542187[_0x2618('0x64')]?_0x542187['User']['alias']||_0x542187[_0x2618('0x7c')][_0x2618('0x84')]:_0x2618('0x80');break;case _0x2618('0x85'):_0x5c72a5=_0x542187[_0x2618('0x64')]?_0x542187[_0x2618('0x7c')]['fullname']:_0x2618('0x80');break;default:_0x5c72a5=_0x542187[_0x2618('0x64')]?util[_0x2618('0x79')](_0x2618('0x7e'),_0x481477[_0x2618('0x7f')],_0x542187[_0x2618('0x64')]):_0x2618('0x80');}var _0x1a7a9e=util['format'](_0x2618('0x86'),moment(_0x542187[_0x2618('0x87')])[_0x2618('0x79')](_0x2618('0x88')),_0x542187[_0x2618('0x89')]==='in'?_0x2e3e1e:_0x5c72a5,_0x542187[_0x2618('0x2b')]);if(!_0x542187[_0x2618('0x8a')]){fs[_0x2618('0x8b')](_0x54c25f,_0x1a7a9e);}}return db[_0x2618('0x8c')][_0x2618('0x4b')]({'where':{'service':!![]},'include':[{'model':db[_0x2618('0x8d')],'as':_0x2618('0x8e'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x2618('0x8f'),'raw':!![]}]}]});}}})[_0x2618('0x12')](function(_0xa9399){if(!_0xa9399||!_0xa9399['Smtp']||!_0x3c1f4b['body'])return _0x4f2c4c;var _0x28b33c=_0xa9399['getSmtpOptions']();return respondWithRpcPromise('SendMail','sendMail',{'account':_0x28b33c,'message':{'from':util[_0x2618('0x79')](_0x2618('0x90'),_0xa9399[_0x2618('0x28')],_0xa9399[_0x2618('0x53')]||_0xa9399['Smtp'][_0x2618('0x38')]),'to':_0x3c1f4b[_0x2618('0x2b')]['mailTranscript'],'subject':_0x2618('0x91'),'text':util[_0x2618('0x79')](_0x2618('0x92'),_0x3c1f4b['body'][_0x2618('0x77')]),'attachments':[{'path':_0x54c25f}]}})['then'](function(){return _0x4f2c4c;})[_0x2618('0x1c')](function(_0x5e2efd){logger['error'](_0x5e2efd);});})[_0x2618('0x12')](respondWithStatusCode(_0xe33569,0xc8))[_0x2618('0x1c')](handleError(_0xe33569,null));};exports[_0x2618('0x93')]=function(_0x1cd150,_0x10fe4f){return db[_0x2618('0x5d')][_0x2618('0x46')]({'where':{'id':_0x1cd150['params']['id']}})[_0x2618('0x12')](handleEntityNotFound(_0x10fe4f,null))['then'](function(_0x131eb7){if(_0x131eb7){return _0x131eb7[_0x2618('0x93')](_0x1cd150['body'][_0x2618('0x94')],_[_0x2618('0x95')](_0x1cd150[_0x2618('0x2b')],[_0x2618('0x94'),'id'])||{});}})[_0x2618('0x12')](respondWithResult(_0x10fe4f,null))['catch'](handleError(_0x10fe4f,null));};exports['getMessages']=function(_0x3256fe,_0x2588a5){var _0x34753f={'raw':![],'where':{}};var _0x27fd64={};var _0x581269={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x2618('0x4b')]({'where':{'id':_0x3256fe['params']['id']}})['then'](handleEntityNotFound(_0x2588a5,null))['then'](function(_0x5c83e8){if(_0x5c83e8){_0x27fd64['model']=_[_0x2618('0x3c')](db[_0x2618('0x5d')][_0x2618('0x32')]);_0x27fd64[_0x2618('0x37')]=_[_0x2618('0x3c')](_0x3256fe[_0x2618('0x37')]);_0x27fd64[_0x2618('0x3d')]=_[_0x2618('0x3e')](_0x27fd64[_0x2618('0x3b')],_0x27fd64[_0x2618('0x37')]);_0x34753f['attributes']=_['intersection'](_0x27fd64[_0x2618('0x3b')],qs[_0x2618('0x3f')](_0x3256fe[_0x2618('0x37')][_0x2618('0x3f')]));_0x34753f['attributes']=_0x34753f[_0x2618('0x40')][_0x2618('0x41')]?_0x34753f[_0x2618('0x40')]:_0x27fd64[_0x2618('0x3b')];if(!_0x3256fe[_0x2618('0x37')][_0x2618('0x96')]('nolimit')){_0x34753f[_0x2618('0x22')]=qs[_0x2618('0x22')](_0x3256fe[_0x2618('0x37')]['limit']);_0x34753f[_0x2618('0x20')]=qs[_0x2618('0x20')](_0x3256fe['query'][_0x2618('0x20')]);}_0x34753f[_0x2618('0x97')]=qs[_0x2618('0x98')](_0x3256fe['query'][_0x2618('0x98')]);_0x34753f[_0x2618('0x99')]=qs[_0x2618('0x3d')](_[_0x2618('0x9a')](_0x3256fe[_0x2618('0x37')],_0x27fd64[_0x2618('0x3d')]));_0x34753f[_0x2618('0x99')][_0x2618('0x9b')]=_0x5c83e8['id'];if(_0x3256fe[_0x2618('0x37')][_0x2618('0x9c')]){_0x34753f[_0x2618('0x99')]=_[_0x2618('0x44')](_0x34753f[_0x2618('0x99')],{'$or':_[_0x2618('0x30')](_0x34753f[_0x2618('0x40')],function(_0x3a3336){var _0x2563b0={};_0x2563b0[_0x3a3336]={'$like':'%'+_0x3256fe[_0x2618('0x37')][_0x2618('0x9c')]+'%'};return _0x2563b0;})});}if(_0x3256fe[_0x2618('0x37')][_0x2618('0x9d')]){var _0x3de746=_0x3256fe[_0x2618('0x37')][_0x2618('0x9d')]['split'](',');var _0x34d1c8={};_0x34d1c8[_0x3de746[0x0]]={'$gte':moment(_0x3de746[0x1])['format'](_0x2618('0x9e'))};_0x34753f[_0x2618('0x99')]=_[_0x2618('0x44')](_0x34753f[_0x2618('0x99')],_0x34d1c8);}_0x34753f=_[_0x2618('0x44')]({},_0x34753f,_0x3256fe[_0x2618('0x45')]);return db['ChatMessage'][_0x2618('0x23')]({'where':_0x34753f['where']})[_0x2618('0x12')](function(_0x3de999){_0x581269[_0x2618('0x23')]=_0x3de999;if(_0x3256fe['query'][_0x2618('0x42')]){_0x34753f['include']=[{'all':!![]}];}return db[_0x2618('0x5d')][_0x2618('0x36')](_0x34753f);})[_0x2618('0x12')](function(_0x88299a){_0x581269[_0x2618('0x9f')]=_0x88299a;return _0x581269;});}})[_0x2618('0x12')](respondWithFilteredResult(_0x2588a5,_0x34753f))[_0x2618('0x1c')](handleError(_0x2588a5,null));};exports[_0x2618('0xa0')]=function(_0x228ff0,_0x53e595){var _0x1775bc={'where':{}},_0xdf2e82={},_0x332d8e={'count':0x0,'rows':[]};return db[_0x2618('0x31')]['findOne']({'where':{'id':_0x228ff0[_0x2618('0x3a')]['id']}})[_0x2618('0x12')](handleEntityNotFound(_0x53e595,null))[_0x2618('0x12')](function(_0xe47b6a){if(_0xe47b6a){_0xdf2e82['model']=_[_0x2618('0x3c')](db['ChatMessage'][_0x2618('0x32')]);_0xdf2e82[_0x2618('0x37')]=_[_0x2618('0x3c')](_0x228ff0[_0x2618('0x37')]);_0xdf2e82['filters']=_[_0x2618('0x3e')](_0xdf2e82['model'],_0xdf2e82[_0x2618('0x37')]);_0x1775bc[_0x2618('0x40')]=_[_0x2618('0x3e')](_0xdf2e82[_0x2618('0x3b')],qs[_0x2618('0x3f')](_0x228ff0[_0x2618('0x37')]['fields']));_0x1775bc['attributes']=_0x1775bc[_0x2618('0x40')]['length']?_0x1775bc['attributes']:_0xdf2e82[_0x2618('0x3b')];if(!_0x228ff0[_0x2618('0x37')][_0x2618('0x96')](_0x2618('0xa1'))){_0x1775bc['limit']=qs[_0x2618('0x22')](_0x228ff0[_0x2618('0x37')][_0x2618('0x22')]);_0x1775bc[_0x2618('0x20')]=qs[_0x2618('0x20')](_0x228ff0[_0x2618('0x37')][_0x2618('0x20')]);}_0x1775bc[_0x2618('0x97')]=qs[_0x2618('0x98')](_0x228ff0['query']['sort']);_0x1775bc['where']=qs[_0x2618('0x3d')](_[_0x2618('0x9a')](_0x228ff0[_0x2618('0x37')],_0xdf2e82[_0x2618('0x3d')]));_0x1775bc[_0x2618('0x99')][_0x2618('0x9b')]=_0xe47b6a['id'];if(_0x228ff0[_0x2618('0x37')][_0x2618('0x9c')]){_0x1775bc['where']=_['merge'](_0x1775bc['where'],{'$or':_[_0x2618('0x30')](_0x1775bc[_0x2618('0x40')],function(_0x11c903){var _0x95e8b={};_0x95e8b[_0x11c903]={'$like':'%'+_0x228ff0['query']['filter']+'%'};return _0x95e8b;})});}_0x1775bc[_0x2618('0x99')]['secret']=![];if(_0x228ff0[_0x2618('0x37')]['id']){_0x1775bc[_0x2618('0x99')]['id']={'$gt':_0x228ff0['query']['id']};}_0x1775bc=_[_0x2618('0x44')]({},_0x1775bc,_0x228ff0['options']);return db['ChatMessage']['count']({'where':_0x1775bc[_0x2618('0x99')]})[_0x2618('0x12')](function(_0x2383d6){_0x332d8e[_0x2618('0x23')]=_0x2383d6;_0x1775bc[_0x2618('0x43')]=[];if(_0x228ff0[_0x2618('0x37')][_0x2618('0xa2')]){_0x1775bc['include'][_0x2618('0xa3')]({'model':db[_0x2618('0x7c')],'as':_0x2618('0x7c'),'attributes':['id','fullname','alias']});}if(_0x228ff0['query'][_0x2618('0x42')]){_0x1775bc['include']=[{'all':!![]}];}return db[_0x2618('0x5d')]['findAll'](_0x1775bc);})[_0x2618('0x12')](function(_0x213c84){_0x332d8e['rows']=_0x213c84;return _0x332d8e;});}})[_0x2618('0x12')](respondWithFilteredResult(_0x53e595,_0x1775bc))['catch'](handleError(_0x53e595,null));};exports[_0x2618('0xa4')]=function(_0x2550b1,_0x561f8a){return db['ChatInteraction'][_0x2618('0x46')]({'where':{'id':_0x2550b1[_0x2618('0x3a')]['id']}})[_0x2618('0x12')](handleEntityNotFound(_0x561f8a,null))[_0x2618('0x12')](function(_0x4cecf5){if(_0x4cecf5){return _0x4cecf5[_0x2618('0xa5')](_0x2550b1[_0x2618('0x2b')][_0x2618('0x94')],_[_0x2618('0x95')](_0x2550b1[_0x2618('0x2b')],['ids','id'])||{})[_0x2618('0xa6')](function(){return db[_0x2618('0xa7')][_0x2618('0x36')]({'attributes':['id',_0x2618('0x28'),_0x2618('0xa8')],'where':{'id':_0x2550b1[_0x2618('0x2b')]['ids']}});})['then'](function(_0x108f39){socket[_0x2618('0xa9')]('chatInteractionTags:save',{'id':Number(_0x2550b1['params']['id']),'tags':_0x108f39||[]});return{'id':Number(_0x2550b1[_0x2618('0x3a')]['id']),'tags':_0x108f39||[]};});}})['then'](respondWithResult(_0x561f8a,null))['catch'](handleError(_0x561f8a,null));};exports[_0x2618('0xaa')]=function(_0x423d4b,_0x52b175){return db[_0x2618('0x31')]['find']({'where':{'id':_0x423d4b[_0x2618('0x3a')]['id']}})[_0x2618('0x12')](handleEntityNotFound(_0x52b175,null))[_0x2618('0x12')](function(_0x3657e7){if(_0x3657e7){return _0x3657e7[_0x2618('0xaa')](_0x423d4b['query']['ids']);}})[_0x2618('0x12')](respondWithStatusCode(_0x52b175,null))[_0x2618('0x1c')](handleError(_0x52b175,null));};exports[_0x2618('0x75')]=function(_0x33d681,_0x4996a2){var _0x241407=moment()[_0x2618('0xab')]()['toString']();var _0x55bbc6=path[_0x2618('0x72')](config['root'],'server',_0x2618('0xac'),_0x2618('0xad'));var _0x4fa6ea=path[_0x2618('0x72')](config[_0x2618('0x73')],'server',_0x2618('0xac'),_0x2618('0xae'));var _0x159044=path[_0x2618('0x72')](_0x55bbc6,_0x241407);var _0x5b8cb5=util[_0x2618('0x79')](_0x2618('0xaf'),_0x33d681[_0x2618('0x3a')]['id'],_0x241407);var _0xb57dc8=path['join'](_0x55bbc6,_0x5b8cb5);var _0x132b75=[];_0x132b75[_0x2618('0xa3')]({'model':db[_0x2618('0x7c')],'as':_0x2618('0x7c'),'attributes':['id',_0x2618('0x84')],'raw':!![]});_0x132b75[_0x2618('0xa3')]({'model':db[_0x2618('0x60')],'as':_0x2618('0xb0'),'attributes':['id',_0x2618('0xb1'),'lastName'],'raw':!![]});if(_0x33d681[_0x2618('0x37')]['attachments']){_0x132b75['push']({'model':db['Attachment'],'as':_0x2618('0x6c'),'raw':!![]});}var _0x2b4fe6=[{'model':db[_0x2618('0x5d')],'as':_0x2618('0x7b'),'attributes':['id','body',_0x2618('0x87'),_0x2618('0x89'),_0x2618('0x8a'),_0x2618('0xb2')],'include':_0x132b75}];_0x2b4fe6[_0x2618('0xa3')]({'model':db['ChatWebsite'],'as':_0x2618('0xb3'),'attributes':['id',_0x2618('0x28')]});_0x2b4fe6[_0x2618('0xa3')]({'model':db['User'],'as':'Owner','attributes':['id',_0x2618('0x84')]});return db[_0x2618('0x31')][_0x2618('0x46')]({'where':{'id':_0x33d681[_0x2618('0x3a')]['id']},'include':_0x2b4fe6})[_0x2618('0x12')](handleEntityNotFound(_0x4996a2,null))[_0x2618('0x12')](function(_0x21086c){if(_0x21086c){var _0x2e9dac=_0x21086c['get']({'plain':!![]});fs[_0x2618('0xb4')](_0x159044);var _0x5d27e7={'channel':_0x2618('0xb5'),'account':_0x2e9dac[_0x2618('0xb3')][_0x2618('0x28')],'agent':_0x2e9dac[_0x2618('0xb6')]?_0x2e9dac[_0x2618('0xb6')]['fullname']:_0x2618('0xb7'),'createdAt':moment(_0x2e9dac[_0x2618('0x87')])[_0x2618('0x79')](_0x2618('0x9e'))[_0x2618('0xb8')](),'closedAt':_0x2e9dac[_0x2618('0x6e')]?moment(_0x2e9dac[_0x2618('0xb9')])[_0x2618('0x79')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2618('0xb8')]():'','disposition':_0x2e9dac[_0x2618('0x66')],'chatInfo':{'browser':_0x2e9dac['browserName'],'os':_0x2e9dac[_0x2618('0xba')],'referer':_0x2e9dac[_0x2618('0xbb')],'customerIp':_0x2e9dac[_0x2618('0xbc')],'customerPort':_0x2e9dac[_0x2618('0xbd')]?_0x2e9dac['customerPort']:_0x2618('0xb7')},'messages':_(_0x2e9dac[_0x2618('0x7b')])['tail']()['filter']({'secret':![]})['map'](function(_0x21f739){if(_0x21f739[_0x2618('0x6c')]){var _0x354a83=path[_0x2618('0x72')](_0x4fa6ea,_0x21f739[_0x2618('0x6c')][_0x2618('0x6a')]);if(fs['existsSync'](_0x354a83)){fs[_0x2618('0xbe')](_0x354a83)[_0x2618('0xbf')](fs['createWriteStream'](path[_0x2618('0x72')](_0x159044,_0x21f739[_0x2618('0x6c')][_0x2618('0x6a')])));}}return{'date':moment(_0x21f739[_0x2618('0x87')])['format'](_0x2618('0x9e'))[_0x2618('0xb8')](),'sender':_0x21f739['direction']===_0x2618('0xc0')?_0x21f739['User']?_0x21f739[_0x2618('0x7c')]['fullname']:'System':_0x21f739['Contact'][_0x2618('0xb1')]+(_0x21f739[_0x2618('0xb0')]['lastName']?'\x20'+_0x21f739[_0x2618('0xb0')][_0x2618('0xc1')]:''),'body':_0x21f739[_0x2618('0x6c')]?_0x21f739['Attachment'][_0x2618('0x6a')]:_0x21f739[_0x2618('0x2b')],'direction':_0x21f739[_0x2618('0x89')]==='out'?'A':'C','secret':_0x21f739['secret'],'read':_0x21f739[_0x2618('0xb2')],'attachment':_0x21f739[_0x2618('0x6c')]};})[_0x2618('0xc2')]()};return ejs[_0x2618('0xc3')](path[_0x2618('0x72')](config['root'],_0x2618('0xc4'),_0x2618('0xc5'),_0x2618('0xc6')),{'interaction':_0x5d27e7})['then'](function(_0x126445){var _0x5900e9=path[_0x2618('0x72')](_0x159044,_0x2618('0xc7')+_0x2e9dac['id']+'-'+_0x241407+_0x2618('0xc8'));var _0x35f756={'path':_0x5900e9,'channel':'Chat','interactionId':_0x2e9dac['id']};return pdf[_0x2618('0xc9')](_0x126445,_0x35f756);})['then'](function(){return new Promise(function(_0xb411d0,_0x1b05ac){zipdir(_0x159044,{'saveTo':_0xb57dc8},function(_0x3d8040,_0x3e122c){if(_0x3d8040)return _0x1b05ac(_0x3d8040);return _0xb411d0(_0x3e122c);});})[_0x2618('0x12')](function(){return new BPromise(function(_0x5be0a4,_0x1a65f8){rimraf(_0x159044,function(_0x2262bf){if(_0x2262bf)_0x1a65f8(_0x2262bf);return _0x5be0a4();});});})['then'](function(){return _0x4996a2['download'](_0xb57dc8,_0x5b8cb5,function(_0x1446bb){if(_0x1446bb){logger['error'](_0x2618('0xca'),_0x1446bb);}else{fs[_0x2618('0xcb')](_0xb57dc8);}});});});}else{return _0x4996a2['sendStatus'](0xc8);}})['catch'](handleError(_0x4996a2,null));};
\ No newline at end of file
+var _0x961b=['YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','getMyMessages','secret','options','includeAgent','push','addTags','spread','Tag','color','emit','chatInteractionTags:save','removeTags','unix','server','files','attachments','firstName','lastName','read','Account','Owner','get','mkdirSync','toString','osName','referer','customerIp','customerPort','tail','createReadStream','pipe','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Chat','err','rimraf','zip-dir','request-promise','moment','mustache','util','ejs','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','destroy','name','send','merge','contact','agent','account','index','map','fieldName','type','getOptions','findAll','chat','query','user','catch','show','params','model','keys','rawAttributes','intersection','fields','attributes','length','include','find','create','body','ChatInteraction','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','parse','metadata','ValidationError','Sequelize','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','originalname','basename','file','filename','mimetype','Attachment','attachmentDownload','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','download','close','server/files/chat/upload/','format','now','pathTranscript','Messages','User','ChatWebsite','ChatWebsiteId','ContactId','%s%d','agentAlias','System','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','mailTranscript','Mail\x20Transcript','addMessage','ids','omit','filters','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','split'];(function(_0x252013,_0x4ad942){var _0x35a3a1=function(_0x4284ec){while(--_0x4284ec){_0x252013['push'](_0x252013['shift']());}};_0x35a3a1(++_0x4ad942);}(_0x961b,0x1bc));var _0xb961=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x961b[_0x580576];return _0x3f55a0;};'use strict';var rimraf=require(_0xb961('0x0'));var zipdir=require(_0xb961('0x1'));var rp=require(_0xb961('0x2'));var moment=require(_0xb961('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb961('0x4'));var util=require(_0xb961('0x5'));var path=require('path');var ejs=require(_0xb961('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xb961('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0xb961('0x8'));var pdf=require(_0xb961('0x9'));var logger=require(_0xb961('0xa'))(_0xb961('0xb'));var config=require('../../config/environment');var db=require(_0xb961('0xc'))['db'];config[_0xb961('0xd')]=_[_0xb961('0xe')](config[_0xb961('0xd')],{'host':_0xb961('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb961('0xd')]));require(_0xb961('0x10'))[_0xb961('0x11')](socket);var jayson=require(_0xb961('0x12'));var client=jayson[_0xb961('0x13')]['http']({'port':0x232b});var client9004=jayson[_0xb961('0x13')][_0xb961('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x53457a,_0x500d4a,_0x553154,_0x1189ad){return new BPromise(function(_0x5c7c2b,_0x4d7a11){var _0x307a79=_0x1189ad||client;return _0x307a79['request'](_0x53457a,_0x553154)[_0xb961('0x15')](function(_0x111bbc){logger[_0xb961('0x16')](_0xb961('0x17'),_0x500d4a,_0xb961('0x18'));logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x500d4a,_0xb961('0x18'),JSON[_0xb961('0x19')](_0x111bbc));if(_0x111bbc[_0xb961('0x1a')]){if(_0x111bbc['error']['code']===0x1f4){logger[_0xb961('0x1a')](_0xb961('0x17'),_0x500d4a,_0x111bbc[_0xb961('0x1a')]['message']);return _0x4d7a11(_0x111bbc[_0xb961('0x1a')][_0xb961('0x1b')]);}logger[_0xb961('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x500d4a,_0x111bbc[_0xb961('0x1a')][_0xb961('0x1b')]);return _0x5c7c2b(_0x111bbc[_0xb961('0x1a')]['message']);}else{logger[_0xb961('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x500d4a,'request\x20sent');_0x5c7c2b(_0x111bbc[_0xb961('0x1c')][_0xb961('0x1b')]);}})['catch'](function(_0x3f3b80){logger[_0xb961('0x1a')](_0xb961('0x17'),_0x500d4a,_0x3f3b80);_0x4d7a11(_0x3f3b80);});});}function respondWithStatusCode(_0xb2b849,_0xa17e2b){_0xa17e2b=_0xa17e2b||0xcc;return function(_0x1a18e1){if(_0x1a18e1){return _0xb2b849[_0xb961('0x1d')](_0xa17e2b);}return _0xb2b849[_0xb961('0x1e')](_0xa17e2b)[_0xb961('0x1f')]();};}function respondWithResult(_0x2c7a32,_0x12b54f){_0x12b54f=_0x12b54f||0xc8;return function(_0x5afe8a){if(_0x5afe8a){return _0x2c7a32['status'](_0x12b54f)[_0xb961('0x20')](_0x5afe8a);}};}function respondWithFilteredResult(_0x3592ac,_0x373074){return function(_0xee5aa3){if(_0xee5aa3){var _0x163002=typeof _0x373074[_0xb961('0x21')]==='undefined'&&typeof _0x373074['limit']===_0xb961('0x22');var _0x55928e=_0xee5aa3[_0xb961('0x23')];var _0x2fb2c9=_0x163002?0x0:_0x373074[_0xb961('0x21')];var _0x153591=_0x163002?_0xee5aa3[_0xb961('0x23')]:_0x373074['offset']+_0x373074[_0xb961('0x24')];var _0x4c3075;if(_0x153591>=_0x55928e){_0x153591=_0x55928e;_0x4c3075=0xc8;}else{_0x4c3075=0xce;}_0x3592ac[_0xb961('0x1e')](_0x4c3075);return _0x3592ac[_0xb961('0x25')](_0xb961('0x26'),_0x2fb2c9+'-'+_0x153591+'/'+_0x55928e)[_0xb961('0x20')](_0xee5aa3);}return null;};}function saveUpdates(_0x34da23){return function(_0x82ae4b){if(_0x82ae4b){return _0x82ae4b[_0xb961('0x27')](_0x34da23)[_0xb961('0x15')](function(_0x5aeb39){return _0x5aeb39;});}return null;};}function removeEntity(_0xddb95e){return function(_0x52c5d1){if(_0x52c5d1){return _0x52c5d1[_0xb961('0x28')]()[_0xb961('0x15')](function(){_0xddb95e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x351f31){return function(_0xf908f){if(!_0xf908f){_0x351f31[_0xb961('0x1d')](0x194);}return _0xf908f;};}function handleError(_0x5d81c6,_0x1bc7b9){_0x1bc7b9=_0x1bc7b9||0x1f4;return function(_0x59b765){logger[_0xb961('0x1a')](_0x59b765['stack']);if(_0x59b765[_0xb961('0x29')]){delete _0x59b765[_0xb961('0x29')];}_0x5d81c6[_0xb961('0x1e')](_0x1bc7b9)[_0xb961('0x2a')](_0x59b765);};}function getMustacheRender(_0x3bf3f1,_0x4660f2){return Mustache['render'](_0x3bf3f1,_[_0xb961('0x2b')](_0x4660f2['body'],{'contact':_0x4660f2[_0xb961('0x2c')],'message':_0x4660f2[_0xb961('0x1b')],'agent':_0x4660f2[_0xb961('0x2d')],'interaction':_0x4660f2['interaction'],'account':_0x4660f2[_0xb961('0x2e')]}))||'';}exports[_0xb961('0x2f')]=function(_0x15b8b1,_0x52edbc){var _0x4d141f={};var _0x3de679=_[_0xb961('0x30')](db['ChatInteraction']['rawAttributes'],function(_0x51798c){return{'name':_0x51798c[_0xb961('0x31')],'type':_0x51798c[_0xb961('0x32')]['key']};});_0x4d141f=qs[_0xb961('0x33')](_0x3de679,_0x15b8b1);return interaction[_0xb961('0x34')](_0xb961('0x35'),_0x15b8b1[_0xb961('0x36')],_0x15b8b1[_0xb961('0x37')],_0x4d141f,_0x3de679)['then'](respondWithFilteredResult(_0x52edbc,_0x4d141f))[_0xb961('0x38')](handleError(_0x52edbc,null));};exports[_0xb961('0x39')]=function(_0x4a89e3,_0xaa2e71){var _0xd981d5={'raw':![],'where':{'id':_0x4a89e3[_0xb961('0x3a')]['id']}},_0x4be20c={};_0x4be20c[_0xb961('0x3b')]=_[_0xb961('0x3c')](db['ChatInteraction'][_0xb961('0x3d')]);_0x4be20c[_0xb961('0x36')]=_[_0xb961('0x3c')](_0x4a89e3[_0xb961('0x36')]);_0x4be20c['filters']=_[_0xb961('0x3e')](_0x4be20c['model'],_0x4be20c[_0xb961('0x36')]);_0xd981d5['attributes']=_['intersection'](_0x4be20c['model'],qs[_0xb961('0x3f')](_0x4a89e3[_0xb961('0x36')][_0xb961('0x3f')]));_0xd981d5[_0xb961('0x40')]=_0xd981d5['attributes'][_0xb961('0x41')]?_0xd981d5[_0xb961('0x40')]:_0x4be20c[_0xb961('0x3b')];if(_0x4a89e3['query']['includeAll']){_0xd981d5[_0xb961('0x42')]=[{'all':!![]}];}_0xd981d5=_['merge']({},_0xd981d5,_0x4a89e3['options']);return db['ChatInteraction'][_0xb961('0x43')](_0xd981d5)[_0xb961('0x15')](handleEntityNotFound(_0xaa2e71,null))[_0xb961('0x15')](respondWithResult(_0xaa2e71,null))[_0xb961('0x38')](handleError(_0xaa2e71,null));};exports[_0xb961('0x44')]=function(_0x32295b,_0x473da5){return db['ChatInteraction'][_0xb961('0x44')](_0x32295b[_0xb961('0x45')],{})[_0xb961('0x15')](respondWithResult(_0x473da5,0xc9))['catch'](handleError(_0x473da5,null));};exports['update']=function(_0xc98fe4,_0x5bf41d){if(_0xc98fe4[_0xb961('0x45')]['id']){delete _0xc98fe4[_0xb961('0x45')]['id'];}return db['ChatInteraction'][_0xb961('0x43')]({'where':{'id':_0xc98fe4['params']['id']}})[_0xb961('0x15')](handleEntityNotFound(_0x5bf41d,null))[_0xb961('0x15')](saveUpdates(_0xc98fe4[_0xb961('0x45')],null))[_0xb961('0x15')](respondWithResult(_0x5bf41d,null))[_0xb961('0x38')](handleError(_0x5bf41d,null));};exports[_0xb961('0x28')]=function(_0x4619e0,_0x563b5a){return db[_0xb961('0x46')]['find']({'where':{'id':_0x4619e0[_0xb961('0x3a')]['id']}})['then'](handleEntityNotFound(_0x563b5a,null))[_0xb961('0x15')](removeEntity(_0x563b5a,null))[_0xb961('0x38')](handleError(_0x563b5a,null));};exports['describe']=function(_0x4eba58,_0x4c8673){return db[_0xb961('0x46')]['describe']()[_0xb961('0x15')](respondWithResult(_0x4c8673,null))[_0xb961('0x38')](handleError(_0x4c8673,null));};exports[_0xb961('0x47')]=function(_0x384e49,_0x3a2e82){var _0x5a93f9=_0x384e49[_0xb961('0x3a')]['id'];var _0x480106;var _0x5056c4;var _0x4e8b7c;return db[_0xb961('0x46')][_0xb961('0x48')]({'where':{'id':_0x5a93f9}})[_0xb961('0x15')](function(_0x38ffe2){_0x480106=_0x38ffe2;return db['ChatWebsite'][_0xb961('0x48')]({'where':{'id':_0x38ffe2['ChatWebsiteId']},'attributes':['id',_0xb961('0x49'),_0xb961('0x4a'),_0xb961('0x4b'),_0xb961('0x4c'),_0xb961('0x4d')],'raw':!![]});})[_0xb961('0x15')](function(_0xcec759){if(_0xcec759&&_0xcec759[_0xb961('0x49')]&&_0xcec759[_0xb961('0x4a')]){_0x5056c4=_0xcec759;var _0xec0ca9={'interaction':{'id':_0x5a93f9},'agent':{'id':_0x384e49[_0xb961('0x37')]['id'],'name':_0x384e49[_0xb961('0x37')][_0xb961('0x29')],'fullname':_0x384e49[_0xb961('0x37')][_0xb961('0x4e')],'email':_0x384e49[_0xb961('0x37')]['email']},'contact':_0x384e49[_0xb961('0x45')][_0xb961('0x2c')],'account':_0x384e49[_0xb961('0x45')][_0xb961('0x2e')]};var _0x522a1f={'rejectUnauthorized':![],'method':_0xb961('0x4f'),'url':_0xb961('0x50'),'headers':{'X-APIKEY':_0xcec759[_0xb961('0x49')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x384e49['user']['email']],'buttons':null,'topic':_0x5056c4['vidaooTopic'],'note':_[_0xb961('0x51')](_0x5056c4[_0xb961('0x4c')])?null:getMustacheRender(_0x5056c4['vidaooNote'],_0xec0ca9),'metadata':null},'redirect':_0xb961('0x52'),'json':!![]};try{if(!_[_0xb961('0x51')](_0x5056c4[_0xb961('0x4d')])){var _0x34502d=getMustacheRender(_0x5056c4[_0xb961('0x4d')],_0xec0ca9);var _0x4ab427=JSON[_0xb961('0x53')](_0x34502d);_0x522a1f[_0xb961('0x45')][_0xb961('0x54')]=_0x4ab427;}}catch(_0x54ded1){throw new db['Sequelize'][(_0xb961('0x55'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x522a1f);}else{throw new db[(_0xb961('0x56'))][(_0xb961('0x55'))]('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x508cb6){_0x4e8b7c=_0x508cb6;if(_0x4e8b7c['id']){var _0x287783={'body':_0x4e8b7c['join_url'],'ChatWebsiteId':_0x5056c4['id'],'ChatInteractionId':_0x480106['id'],'direction':'out','UserId':_0x384e49['user']['id']};return db[_0xb961('0x57')][_0xb961('0x44')](_0x287783,{});}else{throw new db[(_0xb961('0x56'))]['ValidationError'](_0xb961('0x58'));}})[_0xb961('0x15')](function(){return _0x480106[_0xb961('0x59')]({'vidaooSessionId':_0x4e8b7c['id']});})[_0xb961('0x15')](respondWithResult(_0x3a2e82,null))[_0xb961('0x38')](handleError(_0x3a2e82,null));};exports[_0xb961('0x5a')]=function(_0x33a745,_0x22996c){if(_0x33a745[_0xb961('0x45')]['id']){delete _0x33a745[_0xb961('0x45')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x33a745[_0xb961('0x3a')]['id']},'include':[{'model':db[_0xb961('0x5b')],'as':_0xb961('0x5c')}]})[_0xb961('0x15')](handleEntityNotFound(_0x22996c,null))[_0xb961('0x15')](saveUpdates(_0x33a745[_0xb961('0x45')],null))[_0xb961('0x15')](respondWithResult(_0x22996c,null))[_0xb961('0x38')](handleError(_0x22996c,null));};exports[_0xb961('0x5d')]=function(_0x1c1e1c,_0x578508){if(_0x1c1e1c['body']['id']){delete _0x1c1e1c[_0xb961('0x45')]['id'];}return db['ChatInteraction'][_0xb961('0x43')]({'where':{'id':_0x1c1e1c[_0xb961('0x3a')]['id']}})[_0xb961('0x15')](function(_0x1fa54f){if(!_0x1fa54f){logger[_0xb961('0x1a')](_0xb961('0x5e'),'abandon',0x194,_0xb961('0x5f'));_0x578508[_0xb961('0x1d')](0x194);}else{if(_0x1fa54f[_0xb961('0x60')]){throw new db[(_0xb961('0x56'))][(_0xb961('0x55'))](_0xb961('0x61'));}}return _0x1fa54f;})[_0xb961('0x15')](function(_0xb11ca5){if(_0xb11ca5){return _0xb11ca5[_0xb961('0x27')]({'closed':_0x1c1e1c[_0xb961('0x45')][_0xb961('0x62')],'disposition':_0x1c1e1c[_0xb961('0x45')][_0xb961('0x63')]})[_0xb961('0x15')](function(_0x4ba942){return _0x4ba942;});}})['then'](function(){return respondWithRpcPromise(_0xb961('0x64'),'abandon',_0x1c1e1c[_0xb961('0x45')],client9004);})[_0xb961('0x15')](respondWithResult(_0x578508,null))[_0xb961('0x38')](handleError(_0x578508,null));};exports[_0xb961('0x65')]=function(_0x3963dd,_0x13b5e2){_0x3963dd[_0xb961('0x45')][_0xb961('0x29')]=_0x3963dd['file'][_0xb961('0x66')];_0x3963dd[_0xb961('0x45')][_0xb961('0x67')]=_0x3963dd[_0xb961('0x68')][_0xb961('0x69')];_0x3963dd[_0xb961('0x45')]['type']=_0x3963dd['file'][_0xb961('0x6a')];return db[_0xb961('0x6b')][_0xb961('0x44')](_0x3963dd[_0xb961('0x45')])[_0xb961('0x15')](respondWithResult(_0x13b5e2,0xc9))[_0xb961('0x38')](handleError(_0x13b5e2,null));};exports[_0xb961('0x6c')]=function(_0x18d9ce,_0x5249aa){return db[_0xb961('0x46')][_0xb961('0x48')]({'where':{'id':_0x18d9ce['params']['id']},'raw':!![]})[_0xb961('0x15')](handleEntityNotFound(_0x5249aa,null))[_0xb961('0x15')](function(_0x127114){if(_0x127114){if(_0x127114[_0xb961('0x62')]){return _0x5249aa[_0xb961('0x1e')](0x193)[_0xb961('0x20')]({'status':0x193,'message':'Unauthorized'});}return db[_0xb961('0x6b')][_0xb961('0x48')]({'where':{'id':_0x18d9ce['query']['attachId']},'raw':!![]})[_0xb961('0x15')](handleEntityNotFound(_0x5249aa,null));}})[_0xb961('0x15')](function(_0x198b95){if(_0x198b95){var _0x51b005=_0x198b95[_0xb961('0x6d')]!==null;var _0xe3b59c=path['join'](config[_0xb961('0x6e')],_0xb961('0x6f'));if(_0x51b005){_0xe3b59c=path[_0xb961('0x70')](_0xe3b59c,_0xb961('0x71'));}var _0x4cd339=path[_0xb961('0x70')](_0xe3b59c,_0x198b95[_0xb961('0x67')]);return _0x5249aa[_0xb961('0x72')](_0x4cd339);}})['catch'](handleError(_0x5249aa,null));};exports[_0xb961('0x73')]=function(_0x49022f,_0x11ea33){var _0x5c5af8=null;var _0x91784d=null;var _0x6b2e11=null;if(_0x49022f[_0xb961('0x45')]['id']){delete _0x49022f['body']['id'];}if(_0x49022f[_0xb961('0x45')]['mailTranscript']){_0x6b2e11=path[_0xb961('0x70')](config['root'],_0xb961('0x74'),util[_0xb961('0x75')]('transcript-%s.txt',Date[_0xb961('0x76')]()));_0x49022f[_0xb961('0x45')][_0xb961('0x77')]=_0x6b2e11;}return db[_0xb961('0x46')][_0xb961('0x43')]({'where':{'id':_0x49022f['params']['id']},'include':[{'model':db[_0xb961('0x57')],'as':_0xb961('0x78'),'include':[{'model':db[_0xb961('0x79')],'as':_0xb961('0x79')}]}]})['then'](handleEntityNotFound(_0x11ea33,null))[_0xb961('0x15')](saveUpdates(_0x49022f[_0xb961('0x45')],null))[_0xb961('0x15')](function(_0x497802){if(_0x497802){_0x5c5af8=_0x497802;return db[_0xb961('0x7a')][_0xb961('0x43')]({'where':{'id':_0x5c5af8[_0xb961('0x7b')]}});}})['then'](function(_0x5a2505){if(_0x5a2505){_0x91784d=_0x5a2505;return db[_0xb961('0x5b')][_0xb961('0x43')]({'where':{'id':_0x5c5af8[_0xb961('0x7c')]}});}})['then'](function(_0x3a5404){if(_0x3a5404){if(_0x6b2e11){var _0x1f2eb4=null;for(var _0x196c54=0x1;_0x196c54<_0x5c5af8['Messages'][_0xb961('0x41')];++_0x196c54){_0x1f2eb4=_0x5c5af8[_0xb961('0x78')][_0x196c54];var _0x42a957=_0x1f2eb4[_0xb961('0x60')]?util[_0xb961('0x75')](_0xb961('0x7d'),_0x91784d[_0xb961('0x7e')],_0x1f2eb4['UserId']):_0xb961('0x7f');var _0x2a8c3d=_0x49022f[_0xb961('0x45')]['customer']||util[_0xb961('0x75')](_0xb961('0x7d'),'Visitor',_0x1f2eb4['ContactId']);switch(_0x91784d['agentIdentifier']){case _0xb961('0x80'):_0x42a957=_0x1f2eb4[_0xb961('0x60')]?util[_0xb961('0x75')]('%s%d',_0x91784d['agentAlias'],_0x1f2eb4[_0xb961('0x60')]):'System';break;case _0xb961('0x81'):_0x42a957=_0x1f2eb4['UserId']?_0x1f2eb4['User'][_0xb961('0x82')]||_0x1f2eb4[_0xb961('0x79')][_0xb961('0x4e')]:_0xb961('0x7f');break;case _0xb961('0x83'):_0x42a957=_0x1f2eb4[_0xb961('0x60')]?_0x1f2eb4['User'][_0xb961('0x4e')]:'System';break;default:_0x42a957=_0x1f2eb4[_0xb961('0x60')]?util[_0xb961('0x75')](_0xb961('0x7d'),_0x91784d['agentAlias'],_0x1f2eb4[_0xb961('0x60')]):_0xb961('0x7f');}var _0x4af0da=util[_0xb961('0x75')](_0xb961('0x84'),moment(_0x1f2eb4[_0xb961('0x85')])[_0xb961('0x75')](_0xb961('0x86')),_0x1f2eb4[_0xb961('0x87')]==='in'?_0x2a8c3d:_0x42a957,_0x1f2eb4[_0xb961('0x45')]);if(!_0x1f2eb4['secret']){fs[_0xb961('0x88')](_0x6b2e11,_0x4af0da);}}return db['MailAccount'][_0xb961('0x48')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xb961('0x89'),'raw':!![],'include':[{'model':db[_0xb961('0x8a')],'as':_0xb961('0x8a'),'raw':!![]}]}]});}}})['then'](function(_0xc885d0){if(!_0xc885d0||!_0xc885d0[_0xb961('0x89')]||!_0x49022f[_0xb961('0x45')])return _0x5c5af8;var _0x59cf93=_0xc885d0[_0xb961('0x8b')]();return respondWithRpcPromise(_0xb961('0x8c'),_0xb961('0x8d'),{'account':_0x59cf93,'message':{'from':util[_0xb961('0x75')](_0xb961('0x8e'),_0xc885d0['name'],_0xc885d0['email']||_0xc885d0[_0xb961('0x89')][_0xb961('0x37')]),'to':_0x49022f['body'][_0xb961('0x8f')],'subject':_0xb961('0x90'),'text':util[_0xb961('0x75')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x49022f[_0xb961('0x45')][_0xb961('0x8f')]),'attachments':[{'path':_0x6b2e11}]}})[_0xb961('0x15')](function(){return _0x5c5af8;})[_0xb961('0x38')](function(_0x82c7ca){logger[_0xb961('0x1a')](_0x82c7ca);});})['then'](respondWithStatusCode(_0x11ea33,0xc8))[_0xb961('0x38')](handleError(_0x11ea33,null));};exports[_0xb961('0x91')]=function(_0x5b50fe,_0x4cc160){return db['ChatMessage'][_0xb961('0x43')]({'where':{'id':_0x5b50fe[_0xb961('0x3a')]['id']}})['then'](handleEntityNotFound(_0x4cc160,null))[_0xb961('0x15')](function(_0x14f91){if(_0x14f91){return _0x14f91['addMessage'](_0x5b50fe['body'][_0xb961('0x92')],_[_0xb961('0x93')](_0x5b50fe[_0xb961('0x45')],[_0xb961('0x92'),'id'])||{});}})[_0xb961('0x15')](respondWithResult(_0x4cc160,null))[_0xb961('0x38')](handleError(_0x4cc160,null));};exports['getMessages']=function(_0x4c8863,_0x10acfe){var _0x510570={'raw':![],'where':{}};var _0x184b9d={};var _0xcebd83={'count':0x0,'rows':[]};return db[_0xb961('0x46')][_0xb961('0x48')]({'where':{'id':_0x4c8863[_0xb961('0x3a')]['id']}})[_0xb961('0x15')](handleEntityNotFound(_0x10acfe,null))[_0xb961('0x15')](function(_0xd2dd83){if(_0xd2dd83){_0x184b9d[_0xb961('0x3b')]=_[_0xb961('0x3c')](db[_0xb961('0x57')][_0xb961('0x3d')]);_0x184b9d['query']=_[_0xb961('0x3c')](_0x4c8863[_0xb961('0x36')]);_0x184b9d[_0xb961('0x94')]=_[_0xb961('0x3e')](_0x184b9d[_0xb961('0x3b')],_0x184b9d[_0xb961('0x36')]);_0x510570['attributes']=_[_0xb961('0x3e')](_0x184b9d[_0xb961('0x3b')],qs[_0xb961('0x3f')](_0x4c8863['query'][_0xb961('0x3f')]));_0x510570['attributes']=_0x510570['attributes'][_0xb961('0x41')]?_0x510570[_0xb961('0x40')]:_0x184b9d[_0xb961('0x3b')];if(!_0x4c8863[_0xb961('0x36')][_0xb961('0x95')](_0xb961('0x96'))){_0x510570[_0xb961('0x24')]=qs[_0xb961('0x24')](_0x4c8863[_0xb961('0x36')][_0xb961('0x24')]);_0x510570[_0xb961('0x21')]=qs[_0xb961('0x21')](_0x4c8863[_0xb961('0x36')][_0xb961('0x21')]);}_0x510570[_0xb961('0x97')]=qs[_0xb961('0x98')](_0x4c8863['query'][_0xb961('0x98')]);_0x510570[_0xb961('0x99')]=qs[_0xb961('0x94')](_[_0xb961('0x9a')](_0x4c8863[_0xb961('0x36')],_0x184b9d[_0xb961('0x94')]));_0x510570['where'][_0xb961('0x9b')]=_0xd2dd83['id'];if(_0x4c8863['query'][_0xb961('0x9c')]){_0x510570[_0xb961('0x99')]=_['merge'](_0x510570[_0xb961('0x99')],{'$or':_[_0xb961('0x30')](_0x510570[_0xb961('0x40')],function(_0x3d0438){var _0x46b023={};_0x46b023[_0x3d0438]={'$like':'%'+_0x4c8863[_0xb961('0x36')][_0xb961('0x9c')]+'%'};return _0x46b023;})});}if(_0x4c8863[_0xb961('0x36')][_0xb961('0x9d')]){var _0x54c793=_0x4c8863[_0xb961('0x36')][_0xb961('0x9d')][_0xb961('0x9e')](',');var _0x28a64f={};_0x28a64f[_0x54c793[0x0]]={'$gte':moment(_0x54c793[0x1])[_0xb961('0x75')](_0xb961('0x9f'))};_0x510570['where']=_[_0xb961('0x2b')](_0x510570[_0xb961('0x99')],_0x28a64f);}_0x510570=_[_0xb961('0x2b')]({},_0x510570,_0x4c8863['options']);return db[_0xb961('0x57')][_0xb961('0x23')]({'where':_0x510570['where']})[_0xb961('0x15')](function(_0x5399df){_0xcebd83[_0xb961('0x23')]=_0x5399df;if(_0x4c8863[_0xb961('0x36')][_0xb961('0xa0')]){_0x510570['include']=[{'all':!![]}];}return db[_0xb961('0x57')][_0xb961('0x34')](_0x510570);})['then'](function(_0x53ed3e){_0xcebd83[_0xb961('0xa1')]=_0x53ed3e;return _0xcebd83;});}})['then'](respondWithFilteredResult(_0x10acfe,_0x510570))[_0xb961('0x38')](handleError(_0x10acfe,null));};exports[_0xb961('0xa2')]=function(_0x228443,_0xc73af3){var _0x33acb6={'where':{}},_0x274f8b={},_0xda9495={'count':0x0,'rows':[]};return db[_0xb961('0x46')][_0xb961('0x48')]({'where':{'id':_0x228443['params']['id']}})[_0xb961('0x15')](handleEntityNotFound(_0xc73af3,null))[_0xb961('0x15')](function(_0x4a1ed6){if(_0x4a1ed6){_0x274f8b['model']=_[_0xb961('0x3c')](db[_0xb961('0x57')][_0xb961('0x3d')]);_0x274f8b[_0xb961('0x36')]=_[_0xb961('0x3c')](_0x228443[_0xb961('0x36')]);_0x274f8b[_0xb961('0x94')]=_[_0xb961('0x3e')](_0x274f8b[_0xb961('0x3b')],_0x274f8b[_0xb961('0x36')]);_0x33acb6[_0xb961('0x40')]=_['intersection'](_0x274f8b[_0xb961('0x3b')],qs['fields'](_0x228443[_0xb961('0x36')][_0xb961('0x3f')]));_0x33acb6[_0xb961('0x40')]=_0x33acb6['attributes']['length']?_0x33acb6[_0xb961('0x40')]:_0x274f8b[_0xb961('0x3b')];if(!_0x228443[_0xb961('0x36')]['hasOwnProperty'](_0xb961('0x96'))){_0x33acb6[_0xb961('0x24')]=qs['limit'](_0x228443[_0xb961('0x36')][_0xb961('0x24')]);_0x33acb6['offset']=qs['offset'](_0x228443[_0xb961('0x36')][_0xb961('0x21')]);}_0x33acb6[_0xb961('0x97')]=qs['sort'](_0x228443[_0xb961('0x36')][_0xb961('0x98')]);_0x33acb6[_0xb961('0x99')]=qs[_0xb961('0x94')](_[_0xb961('0x9a')](_0x228443[_0xb961('0x36')],_0x274f8b['filters']));_0x33acb6['where'][_0xb961('0x9b')]=_0x4a1ed6['id'];if(_0x228443[_0xb961('0x36')][_0xb961('0x9c')]){_0x33acb6[_0xb961('0x99')]=_[_0xb961('0x2b')](_0x33acb6[_0xb961('0x99')],{'$or':_[_0xb961('0x30')](_0x33acb6[_0xb961('0x40')],function(_0x33d5e7){var _0x1c195a={};_0x1c195a[_0x33d5e7]={'$like':'%'+_0x228443[_0xb961('0x36')][_0xb961('0x9c')]+'%'};return _0x1c195a;})});}_0x33acb6[_0xb961('0x99')][_0xb961('0xa3')]=![];if(_0x228443[_0xb961('0x36')]['id']){_0x33acb6[_0xb961('0x99')]['id']={'$gt':_0x228443[_0xb961('0x36')]['id']};}_0x33acb6=_[_0xb961('0x2b')]({},_0x33acb6,_0x228443[_0xb961('0xa4')]);return db[_0xb961('0x57')][_0xb961('0x23')]({'where':_0x33acb6[_0xb961('0x99')]})[_0xb961('0x15')](function(_0x4ea3ca){_0xda9495[_0xb961('0x23')]=_0x4ea3ca;_0x33acb6['include']=[];if(_0x228443[_0xb961('0x36')][_0xb961('0xa5')]){_0x33acb6[_0xb961('0x42')][_0xb961('0xa6')]({'model':db[_0xb961('0x79')],'as':_0xb961('0x79'),'attributes':['id',_0xb961('0x4e'),_0xb961('0x82')]});}if(_0x228443[_0xb961('0x36')]['includeAll']){_0x33acb6[_0xb961('0x42')]=[{'all':!![]}];}return db[_0xb961('0x57')][_0xb961('0x34')](_0x33acb6);})[_0xb961('0x15')](function(_0x1e6303){_0xda9495[_0xb961('0xa1')]=_0x1e6303;return _0xda9495;});}})[_0xb961('0x15')](respondWithFilteredResult(_0xc73af3,_0x33acb6))[_0xb961('0x38')](handleError(_0xc73af3,null));};exports[_0xb961('0xa7')]=function(_0x417783,_0x15a19f){return db[_0xb961('0x46')][_0xb961('0x43')]({'where':{'id':_0x417783[_0xb961('0x3a')]['id']}})[_0xb961('0x15')](handleEntityNotFound(_0x15a19f,null))[_0xb961('0x15')](function(_0xc51b8e){if(_0xc51b8e){return _0xc51b8e['setTags'](_0x417783[_0xb961('0x45')]['ids'],_[_0xb961('0x93')](_0x417783[_0xb961('0x45')],[_0xb961('0x92'),'id'])||{})[_0xb961('0xa8')](function(){return db[_0xb961('0xa9')][_0xb961('0x34')]({'attributes':['id',_0xb961('0x29'),_0xb961('0xaa')],'where':{'id':_0x417783[_0xb961('0x45')][_0xb961('0x92')]}});})[_0xb961('0x15')](function(_0x14be07){socket[_0xb961('0xab')](_0xb961('0xac'),{'id':Number(_0x417783[_0xb961('0x3a')]['id']),'tags':_0x14be07||[]});return{'id':Number(_0x417783[_0xb961('0x3a')]['id']),'tags':_0x14be07||[]};});}})[_0xb961('0x15')](respondWithResult(_0x15a19f,null))[_0xb961('0x38')](handleError(_0x15a19f,null));};exports[_0xb961('0xad')]=function(_0x3e3a49,_0x7625b9){return db['ChatInteraction']['find']({'where':{'id':_0x3e3a49[_0xb961('0x3a')]['id']}})[_0xb961('0x15')](handleEntityNotFound(_0x7625b9,null))[_0xb961('0x15')](function(_0x5df5b9){if(_0x5df5b9){return _0x5df5b9[_0xb961('0xad')](_0x3e3a49['query'][_0xb961('0x92')]);}})[_0xb961('0x15')](respondWithStatusCode(_0x7625b9,null))[_0xb961('0x38')](handleError(_0x7625b9,null));};exports[_0xb961('0x72')]=function(_0x40ee9b,_0x60e7bc){var _0x4cc77b=moment()[_0xb961('0xae')]()['toString']();var _0x217d5f=path[_0xb961('0x70')](config[_0xb961('0x6e')],_0xb961('0xaf'),_0xb961('0xb0'),'tmp');var _0xeac112=path[_0xb961('0x70')](config['root'],_0xb961('0xaf'),_0xb961('0xb0'),_0xb961('0xb1'));var _0x4b8fa1=path[_0xb961('0x70')](_0x217d5f,_0x4cc77b);var _0x1574b7=util[_0xb961('0x75')]('transcript-%d-%s.zip',_0x40ee9b[_0xb961('0x3a')]['id'],_0x4cc77b);var _0x35b6cf=path['join'](_0x217d5f,_0x1574b7);var _0x5444af=[];_0x5444af[_0xb961('0xa6')]({'model':db[_0xb961('0x79')],'as':_0xb961('0x79'),'attributes':['id',_0xb961('0x4e')],'raw':!![]});_0x5444af[_0xb961('0xa6')]({'model':db[_0xb961('0x5b')],'as':'Contact','attributes':['id',_0xb961('0xb2'),_0xb961('0xb3')],'raw':!![]});if(_0x40ee9b['query']['attachments']){_0x5444af[_0xb961('0xa6')]({'model':db['Attachment'],'as':_0xb961('0x6b'),'raw':!![]});}var _0x5f3d82=[{'model':db[_0xb961('0x57')],'as':_0xb961('0x78'),'attributes':['id','body',_0xb961('0x85'),_0xb961('0x87'),_0xb961('0xa3'),_0xb961('0xb4')],'include':_0x5444af}];_0x5f3d82[_0xb961('0xa6')]({'model':db['ChatWebsite'],'as':_0xb961('0xb5'),'attributes':['id',_0xb961('0x29')]});_0x5f3d82[_0xb961('0xa6')]({'model':db['User'],'as':_0xb961('0xb6'),'attributes':['id','fullname']});return db[_0xb961('0x46')]['find']({'where':{'id':_0x40ee9b['params']['id']},'include':_0x5f3d82})[_0xb961('0x15')](handleEntityNotFound(_0x60e7bc,null))[_0xb961('0x15')](function(_0x12af51){if(_0x12af51){var _0x3bfefd=_0x12af51[_0xb961('0xb7')]({'plain':!![]});fs[_0xb961('0xb8')](_0x4b8fa1);var _0x1dc24a={'channel':'Chat','account':_0x3bfefd[_0xb961('0xb5')][_0xb961('0x29')],'agent':_0x3bfefd[_0xb961('0xb6')]?_0x3bfefd[_0xb961('0xb6')][_0xb961('0x4e')]:'N.A.','createdAt':moment(_0x3bfefd[_0xb961('0x85')])[_0xb961('0x75')](_0xb961('0x9f'))['toString'](),'closedAt':_0x3bfefd[_0xb961('0x62')]?moment(_0x3bfefd['closedAt'])[_0xb961('0x75')](_0xb961('0x9f'))[_0xb961('0xb9')]():'','disposition':_0x3bfefd['disposition'],'chatInfo':{'browser':_0x3bfefd['browserName'],'os':_0x3bfefd[_0xb961('0xba')],'referer':_0x3bfefd[_0xb961('0xbb')],'customerIp':_0x3bfefd[_0xb961('0xbc')],'customerPort':_0x3bfefd['customerPort']?_0x3bfefd[_0xb961('0xbd')]:'N.A.'},'messages':_(_0x3bfefd[_0xb961('0x78')])[_0xb961('0xbe')]()[_0xb961('0x9c')]({'secret':![]})[_0xb961('0x30')](function(_0x1d9f53){if(_0x1d9f53[_0xb961('0x6b')]){var _0x42c586=path['join'](_0xeac112,_0x1d9f53[_0xb961('0x6b')][_0xb961('0x67')]);if(fs['existsSync'](_0x42c586)){fs[_0xb961('0xbf')](_0x42c586)[_0xb961('0xc0')](fs['createWriteStream'](path[_0xb961('0x70')](_0x4b8fa1,_0x1d9f53[_0xb961('0x6b')][_0xb961('0x67')])));}}return{'date':moment(_0x1d9f53['createdAt'])['format'](_0xb961('0x9f'))['toString'](),'sender':_0x1d9f53[_0xb961('0x87')]==='out'?_0x1d9f53[_0xb961('0x79')]?_0x1d9f53[_0xb961('0x79')]['fullname']:_0xb961('0x7f'):_0x1d9f53[_0xb961('0x5c')][_0xb961('0xb2')]+(_0x1d9f53[_0xb961('0x5c')][_0xb961('0xb3')]?'\x20'+_0x1d9f53['Contact'][_0xb961('0xb3')]:''),'body':_0x1d9f53[_0xb961('0x6b')]?_0x1d9f53[_0xb961('0x6b')][_0xb961('0x67')]:_0x1d9f53['body'],'direction':_0x1d9f53['direction']===_0xb961('0xc1')?'A':'C','secret':_0x1d9f53[_0xb961('0xa3')],'read':_0x1d9f53[_0xb961('0xb4')],'attachment':_0x1d9f53['Attachment']};})['value']()};return ejs[_0xb961('0xc2')](path[_0xb961('0x70')](config[_0xb961('0x6e')],_0xb961('0xaf'),_0xb961('0xc3'),_0xb961('0xc4')),{'interaction':_0x1dc24a})['then'](function(_0x1389c3){var _0x2b187a=path[_0xb961('0x70')](_0x4b8fa1,_0xb961('0xc5')+_0x3bfefd['id']+'-'+_0x4cc77b+_0xb961('0xc6'));var _0xa9e13a={'path':_0x2b187a,'channel':_0xb961('0xc7'),'interactionId':_0x3bfefd['id']};return pdf['createPdfFromHTML'](_0x1389c3,_0xa9e13a);})[_0xb961('0x15')](function(){return new Promise(function(_0x2df7b8,_0x19208a){zipdir(_0x4b8fa1,{'saveTo':_0x35b6cf},function(_0x22db8f,_0x437fef){if(_0x22db8f)return _0x19208a(_0x22db8f);return _0x2df7b8(_0x437fef);});})[_0xb961('0x15')](function(){return new BPromise(function(_0x3d5d55,_0x1283fc){rimraf(_0x4b8fa1,function(_0x53638e){if(_0x53638e)_0x1283fc(_0x53638e);return _0x3d5d55();});});})[_0xb961('0x15')](function(){return _0x60e7bc[_0xb961('0x72')](_0x35b6cf,_0x1574b7,function(_0x217eb7){if(_0x217eb7){logger[_0xb961('0x1a')](_0xb961('0xc8'),_0x217eb7);}else{fs['unlinkSync'](_0x35b6cf);}});});});}else{return _0x60e7bc['sendStatus'](0xc8);}})[_0xb961('0x38')](handleError(_0x60e7bc,null));};
\ No newline at end of file
index 39b4d23..721f056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2921=['emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length'];(function(_0x1472de,_0x400763){var _0x486627=function(_0x3910d1){while(--_0x3910d1){_0x1472de['push'](_0x1472de['shift']());}};_0x486627(++_0x400763);}(_0x2921,0xcd));var _0x1292=function(_0x54d96a,_0x1fdf52){_0x54d96a=_0x54d96a-0x0;var _0x5e3113=_0x2921[_0x54d96a];return _0x5e3113;};'use strict';var EventEmitter=require(_0x1292('0x0'));var ChatInteraction=require(_0x1292('0x1'))['db'][_0x1292('0x2')];var ChatMessage=require(_0x1292('0x1'))['db'][_0x1292('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x1292('0x4')](0x0);var events={'afterCreate':_0x1292('0x5'),'afterUpdate':_0x1292('0x6'),'afterDestroy':_0x1292('0x7')};function emitEvent(_0x164d59){return function(_0x4ee739,_0xa3ae27,_0x1d310e){_0x4ee739['getUsers']({'attributes':['id'],'raw':!![]})[_0x1292('0x8')](function(_0x4d3723){_0x4ee739[_0x1292('0x9')](_0x1292('0xa'),_0x4d3723[_0x1292('0xb')](function(_0x400f9f){return{'id':_0x400f9f['id']};}));return ChatMessage[_0x1292('0xc')]({'where':{'ChatInteractionId':_0x4ee739['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1292('0x8')](function(_0x3ab4a4){_0x4ee739[_0x1292('0x9')](_0x1292('0xd'),_0x3ab4a4[_0x1292('0xe')]);ChatInteractionEvents[_0x1292('0xf')](_0x164d59+':'+_0x4ee739['id'],_0x4ee739);ChatInteractionEvents[_0x1292('0xf')](_0x164d59,_0x4ee739);_0x1d310e(null);})[_0x1292('0x10')](_0x1d310e(null));};}for(var e in events){if(events[_0x1292('0x11')](e)){var event=events[e];ChatInteraction[_0x1292('0x12')](e,emitEvent(event));}}module[_0x1292('0x13')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xa32b=['map','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','remove','getUsers','then'];(function(_0x3a0604,_0x117005){var _0x15c7d7=function(_0x241e30){while(--_0x241e30){_0x3a0604['push'](_0x3a0604['shift']());}};_0x15c7d7(++_0x117005);}(_0xa32b,0x14d));var _0xba32=function(_0x13f2ec,_0x407206){_0x13f2ec=_0x13f2ec-0x0;var _0x389ca9=_0xa32b[_0x13f2ec];return _0x389ca9;};'use strict';var EventEmitter=require(_0xba32('0x0'));var ChatInteraction=require(_0xba32('0x1'))['db'][_0xba32('0x2')];var ChatMessage=require(_0xba32('0x1'))['db'][_0xba32('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xba32('0x4')](0x0);var events={'afterCreate':_0xba32('0x5'),'afterUpdate':'update','afterDestroy':_0xba32('0x6')};function emitEvent(_0x2a645f){return function(_0x5eca93,_0x16fa1a,_0x34d66c){_0x5eca93[_0xba32('0x7')]({'attributes':['id'],'raw':!![]})[_0xba32('0x8')](function(_0x2069e3){_0x5eca93['setDataValue']('Users',_0x2069e3[_0xba32('0x9')](function(_0x19f653){return{'id':_0x19f653['id']};}));return ChatMessage[_0xba32('0xa')]({'where':{'ChatInteractionId':_0x5eca93['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2b5fd0){_0x5eca93[_0xba32('0xb')](_0xba32('0xc'),_0x2b5fd0[_0xba32('0xd')]);ChatInteractionEvents[_0xba32('0xe')](_0x2a645f+':'+_0x5eca93['id'],_0x5eca93);ChatInteractionEvents[_0xba32('0xe')](_0x2a645f,_0x5eca93);_0x34d66c(null);})[_0xba32('0xf')](_0x34d66c(null));};}for(var e in events){if(events[_0xba32('0x10')](e)){var event=events[e];ChatInteraction[_0xba32('0x11')](e,emitEvent(event));}}module[_0xba32('0x12')]=ChatInteractionEvents;
\ No newline at end of file
index 8668cba..951e0db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8902=['closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','util','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','changed'];(function(_0x5351d5,_0x24ba83){var _0x29597e=function(_0xac444c){while(--_0xac444c){_0x5351d5['push'](_0x5351d5['shift']());}};_0x29597e(++_0x24ba83);}(_0x8902,0x79));var _0x2890=function(_0x463020,_0x5c2963){_0x463020=_0x463020-0x0;var _0x34cb36=_0x8902[_0x463020];return _0x34cb36;};'use strict';var _=require('lodash');var util=require(_0x2890('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2890('0x1'));var fs=require('fs');var path=require(_0x2890('0x2'));var rimraf=require('rimraf');var config=require(_0x2890('0x3'));var attributes=require(_0x2890('0x4'));module[_0x2890('0x5')]=function(_0x355989,_0x369804){return _0x355989[_0x2890('0x6')]('ChatInteraction',attributes,{'tableName':_0x2890('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2b1a35,_0x2cb8f7,_0x3f9290){if(_0x2b1a35[_0x2890('0x8')](_0x2890('0x9'))){_0x2b1a35[_0x2890('0xa')]=moment()['format'](_0x2890('0xb'));}_0x3f9290(null,_0x2b1a35);}},'charset':'utf8mb4','collate':_0x2890('0xc')});};
\ No newline at end of file
+var _0x79f8=['bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','ChatInteraction','chat_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','api'];(function(_0x2482fa,_0x159e22){var _0x49b048=function(_0x106b34){while(--_0x106b34){_0x2482fa['push'](_0x2482fa['shift']());}};_0x49b048(++_0x159e22);}(_0x79f8,0x1c0));var _0x879f=function(_0x33d15b,_0x26a9cf){_0x33d15b=_0x33d15b-0x0;var _0x4a50e5=_0x79f8[_0x33d15b];return _0x4a50e5;};'use strict';var _=require('lodash');var util=require(_0x879f('0x0'));var logger=require('../../config/logger')(_0x879f('0x1'));var moment=require('moment');var BPromise=require(_0x879f('0x2'));var rp=require(_0x879f('0x3'));var fs=require('fs');var path=require(_0x879f('0x4'));var rimraf=require('rimraf');var config=require(_0x879f('0x5'));var attributes=require(_0x879f('0x6'));module['exports']=function(_0x1d3173,_0x129547){return _0x1d3173['define'](_0x879f('0x7'),attributes,{'tableName':_0x879f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x20230b,_0x34675a,_0x5c030a){if(_0x20230b[_0x879f('0x9')](_0x879f('0xa'))){_0x20230b['closedAt']=moment()[_0x879f('0xb')](_0x879f('0xc'));}_0x5c030a(null,_0x20230b);}},'charset':_0x879f('0xd'),'collate':_0x879f('0xe')});};
\ No newline at end of file
index 6fef4d2..2fbf337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x060e=['then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','message','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','limit','stringify','catch','AddTagsToChatInteraction','where','addTags','ids','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request'];(function(_0x3551eb,_0x1e46d8){var _0x4264c5=function(_0x4e8259){while(--_0x4e8259){_0x3551eb['push'](_0x3551eb['shift']());}};_0x4264c5(++_0x1e46d8);}(_0x060e,0x70));var _0xe060=function(_0x429c0c,_0x560f5b){_0x429c0c=_0x429c0c-0x0;var _0x45c8a5=_0x060e[_0x429c0c];return _0x45c8a5;};'use strict';var _=require(_0xe060('0x0'));var util=require(_0xe060('0x1'));var moment=require(_0xe060('0x2'));var BPromise=require(_0xe060('0x3'));var rs=require(_0xe060('0x4'));var fs=require('fs');var Redis=require(_0xe060('0x5'));var db=require(_0xe060('0x6'))['db'];var utils=require(_0xe060('0x7'));var logger=require(_0xe060('0x8'))('rpc');var config=require(_0xe060('0x9'));var jayson=require(_0xe060('0xa'));var client=jayson[_0xe060('0xb')][_0xe060('0xc')]({'port':0x232a});config[_0xe060('0xd')]=_[_0xe060('0xe')](config['redis'],{'host':_0xe060('0xf'),'port':0x18eb});var socket=require(_0xe060('0x10'))(new Redis(config[_0xe060('0xd')]));require(_0xe060('0x11'))[_0xe060('0x12')](socket);function respondWithRpcPromise(_0x638079,_0x424bed,_0x10e3e8){return new BPromise(function(_0x469ce7,_0x258623){return client[_0xe060('0x13')](_0x638079,_0x10e3e8)[_0xe060('0x14')](function(_0x230312){logger[_0xe060('0x15')](_0xe060('0x16'),_0x424bed,_0xe060('0x17'));logger[_0xe060('0x18')](_0xe060('0x19'),_0x424bed,'request\x20sent',JSON['stringify'](_0x230312));if(_0x230312[_0xe060('0x1a')]){if(_0x230312[_0xe060('0x1a')]['code']===0x1f4){logger[_0xe060('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x424bed,_0x230312['error'][_0xe060('0x1b')]);return _0x258623(_0x230312[_0xe060('0x1a')]['message']);}logger[_0xe060('0x1a')](_0xe060('0x16'),_0x424bed,_0x230312[_0xe060('0x1a')][_0xe060('0x1b')]);return _0x469ce7(_0x230312['error']['message']);}else{logger[_0xe060('0x15')](_0xe060('0x16'),_0x424bed,'request\x20sent');_0x469ce7(_0x230312[_0xe060('0x1c')][_0xe060('0x1b')]);}})['catch'](function(_0x1615ae){logger[_0xe060('0x1a')](_0xe060('0x16'),_0x424bed,_0x1615ae);_0x258623(_0x1615ae);});});}exports[_0xe060('0x1d')]=function(_0x56387a){var _0x670b75=this;return new Promise(function(_0x417f56,_0x43fb36){return db[_0xe060('0x1e')][_0xe060('0x1f')](_0x56387a[_0xe060('0x20')],{'raw':_0x56387a[_0xe060('0x21')]?_0x56387a[_0xe060('0x21')][_0xe060('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56387a[_0xe060('0x21')]?_0x56387a[_0xe060('0x21')]['where']||null:null,'attributes':_0x56387a[_0xe060('0x21')]?_0x56387a[_0xe060('0x21')][_0xe060('0x23')]||null:null,'limit':_0x56387a[_0xe060('0x21')]?_0x56387a[_0xe060('0x21')][_0xe060('0x24')]||null:null})[_0xe060('0x14')](function(_0x378d30){logger[_0xe060('0x15')](_0xe060('0x1d'),_0x56387a);logger[_0xe060('0x18')](_0xe060('0x1d'),_0x56387a,JSON[_0xe060('0x25')](_0x378d30));_0x417f56(_0x378d30);})[_0xe060('0x26')](function(_0x956f17){logger[_0xe060('0x1a')](_0xe060('0x1d'),_0x956f17[_0xe060('0x1b')],_0x56387a);_0x43fb36(_0x670b75[_0xe060('0x1a')](0x1f4,_0x956f17[_0xe060('0x1b')]));});});};exports[_0xe060('0x27')]=function(_0x386d77){return new Promise(function(_0x5928da,_0x161554){return db['ChatInteraction']['find']({'where':_0x386d77['options']?_0x386d77[_0xe060('0x21')][_0xe060('0x28')]||null:null})['then'](function(_0x3a53e9){if(_0x3a53e9){return _0x3a53e9[_0xe060('0x29')](_0x386d77[_0xe060('0x20')]['ids'],_['omit'](_0x386d77[_0xe060('0x20')],[_0xe060('0x2a'),'id'])||{});}})['spread'](function(_0x59c027){logger['info']('AddTags',_0x386d77);logger[_0xe060('0x18')](_0xe060('0x2b'),_0x386d77,JSON[_0xe060('0x25')](_0x59c027));_0x5928da(_0x59c027);})[_0xe060('0x26')](function(_0x4b0eb9){logger[_0xe060('0x1a')]('AddTags',_0x4b0eb9[_0xe060('0x1b')],_0x386d77);_0x161554(_this[_0xe060('0x1a')](0x1f4,_0x4b0eb9[_0xe060('0x1b')]));});});};
\ No newline at end of file
+var _0x3fba=['../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','./chatInteraction.socket','register','then','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','info','catch','UpdateChatInteraction','update','body','options','attributes','limit','ChatInteraction','find','where','addTags','ids','omit','spread','debug','AddTags','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3fba,0xc2));var _0xa3fb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3fba[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xa3fb('0x0'));var util=require('util');var moment=require(_0xa3fb('0x1'));var BPromise=require(_0xa3fb('0x2'));var rs=require(_0xa3fb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa3fb('0x4'))['db'];var utils=require(_0xa3fb('0x5'));var logger=require(_0xa3fb('0x6'))(_0xa3fb('0x7'));var config=require(_0xa3fb('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa3fb('0x9')]({'port':0x232a});config['redis']=_[_0xa3fb('0xa')](config[_0xa3fb('0xb')],{'host':_0xa3fb('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa3fb('0xb')]));require(_0xa3fb('0xd'))[_0xa3fb('0xe')](socket);function respondWithRpcPromise(_0x1e625b,_0xfc0396,_0x417e28){return new BPromise(function(_0x36c8af,_0x46f3dc){return client['request'](_0x1e625b,_0x417e28)[_0xa3fb('0xf')](function(_0xfdf2e3){logger['info']('ChatInteraction,\x20%s,\x20%s',_0xfc0396,_0xa3fb('0x10'));logger['debug'](_0xa3fb('0x11'),_0xfc0396,_0xa3fb('0x10'),JSON[_0xa3fb('0x12')](_0xfdf2e3));if(_0xfdf2e3['error']){if(_0xfdf2e3[_0xa3fb('0x13')][_0xa3fb('0x14')]===0x1f4){logger[_0xa3fb('0x13')](_0xa3fb('0x15'),_0xfc0396,_0xfdf2e3[_0xa3fb('0x13')][_0xa3fb('0x16')]);return _0x46f3dc(_0xfdf2e3['error'][_0xa3fb('0x16')]);}logger[_0xa3fb('0x13')]('ChatInteraction,\x20%s,\x20%s',_0xfc0396,_0xfdf2e3[_0xa3fb('0x13')][_0xa3fb('0x16')]);return _0x36c8af(_0xfdf2e3[_0xa3fb('0x13')][_0xa3fb('0x16')]);}else{logger[_0xa3fb('0x17')](_0xa3fb('0x15'),_0xfc0396,_0xa3fb('0x10'));_0x36c8af(_0xfdf2e3['result']['message']);}})[_0xa3fb('0x18')](function(_0x107bbd){logger[_0xa3fb('0x13')](_0xa3fb('0x15'),_0xfc0396,_0x107bbd);_0x46f3dc(_0x107bbd);});});}exports[_0xa3fb('0x19')]=function(_0x1af92e){var _0x44805d=this;return new Promise(function(_0x15c6c4,_0x44f21f){return db['ChatInteraction'][_0xa3fb('0x1a')](_0x1af92e[_0xa3fb('0x1b')],{'raw':_0x1af92e[_0xa3fb('0x1c')]?_0x1af92e[_0xa3fb('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1af92e[_0xa3fb('0x1c')]?_0x1af92e[_0xa3fb('0x1c')]['where']||null:null,'attributes':_0x1af92e[_0xa3fb('0x1c')]?_0x1af92e[_0xa3fb('0x1c')][_0xa3fb('0x1d')]||null:null,'limit':_0x1af92e[_0xa3fb('0x1c')]?_0x1af92e[_0xa3fb('0x1c')][_0xa3fb('0x1e')]||null:null})[_0xa3fb('0xf')](function(_0x14e33f){logger['info'](_0xa3fb('0x19'),_0x1af92e);logger['debug'](_0xa3fb('0x19'),_0x1af92e,JSON['stringify'](_0x14e33f));_0x15c6c4(_0x14e33f);})[_0xa3fb('0x18')](function(_0x11974a){logger['error'](_0xa3fb('0x19'),_0x11974a[_0xa3fb('0x16')],_0x1af92e);_0x44f21f(_0x44805d[_0xa3fb('0x13')](0x1f4,_0x11974a['message']));});});};exports['AddTagsToChatInteraction']=function(_0x1dd28f){return new Promise(function(_0x211200,_0x266c18){return db[_0xa3fb('0x1f')][_0xa3fb('0x20')]({'where':_0x1dd28f[_0xa3fb('0x1c')]?_0x1dd28f[_0xa3fb('0x1c')][_0xa3fb('0x21')]||null:null})['then'](function(_0x2f4320){if(_0x2f4320){return _0x2f4320[_0xa3fb('0x22')](_0x1dd28f[_0xa3fb('0x1b')][_0xa3fb('0x23')],_[_0xa3fb('0x24')](_0x1dd28f[_0xa3fb('0x1b')],[_0xa3fb('0x23'),'id'])||{});}})[_0xa3fb('0x25')](function(_0x622ed8){logger[_0xa3fb('0x17')]('AddTags',_0x1dd28f);logger[_0xa3fb('0x26')](_0xa3fb('0x27'),_0x1dd28f,JSON[_0xa3fb('0x12')](_0x622ed8));_0x211200(_0x622ed8);})['catch'](function(_0x36dd20){logger[_0xa3fb('0x13')](_0xa3fb('0x27'),_0x36dd20['message'],_0x1dd28f);_0x266c18(_this['error'](0x1f4,_0x36dd20['message']));});});};
\ No newline at end of file
index c985586..950e727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ad=['remove','emit','removeListener','register','length','chatInteraction:','save'];(function(_0x4fc1de,_0x3b30d8){var _0x5e274b=function(_0x2f52a1){while(--_0x2f52a1){_0x4fc1de['push'](_0x4fc1de['shift']());}};_0x5e274b(++_0x3b30d8);}(_0xc4ad,0xf4));var _0xdc4a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4ad[_0x3dd15e];return _0x231fd0;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xdc4a('0x0'),_0xdc4a('0x1'),'update'];function createListener(_0xffe665,_0x2ff0d7){return function(_0x2749ee){_0x2ff0d7[_0xdc4a('0x2')](_0xffe665,_0x2749ee);};}function removeListener(_0x41fdab,_0x4d7b08){return function(){ChatInteractionEvents[_0xdc4a('0x3')](_0x41fdab,_0x4d7b08);};}exports[_0xdc4a('0x4')]=function(_0x44afd7){for(var _0x544afd=0x0,_0xedf739=events[_0xdc4a('0x5')];_0x544afd<_0xedf739;_0x544afd++){var _0x2da6c6=events[_0x544afd];var _0x5763c4=createListener(_0xdc4a('0x6')+_0x2da6c6,_0x44afd7);ChatInteractionEvents['on'](_0x2da6c6,_0x5763c4);}};
\ No newline at end of file
+var _0xdc12=['remove','update','emit','removeListener','length','./chatInteraction.events','save'];(function(_0x313df3,_0x4fca45){var _0x241d59=function(_0x452786){while(--_0x452786){_0x313df3['push'](_0x313df3['shift']());}};_0x241d59(++_0x4fca45);}(_0xdc12,0x10f));var _0x2dc1=function(_0x4b05cd,_0x55888a){_0x4b05cd=_0x4b05cd-0x0;var _0x132d12=_0xdc12[_0x4b05cd];return _0x132d12;};'use strict';var ChatInteractionEvents=require(_0x2dc1('0x0'));var events=[_0x2dc1('0x1'),_0x2dc1('0x2'),_0x2dc1('0x3')];function createListener(_0x2c15fd,_0x1e22a8){return function(_0x4f1ca5){_0x1e22a8[_0x2dc1('0x4')](_0x2c15fd,_0x4f1ca5);};}function removeListener(_0x4caa07,_0x5c4b4e){return function(){ChatInteractionEvents[_0x2dc1('0x5')](_0x4caa07,_0x5c4b4e);};}exports['register']=function(_0x526f5c){for(var _0x2296a4=0x0,_0x36751e=events[_0x2dc1('0x6')];_0x2296a4<_0x36751e;_0x2296a4++){var _0x1c2b83=events[_0x2296a4];var _0x1aeb2b=createListener('chatInteraction:'+_0x1c2b83,_0x526f5c);ChatInteractionEvents['on'](_0x1c2b83,_0x1aeb2b);}};
\ No newline at end of file
index 5a53e40..2365db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5512=['now','originalname','replace','file','addMessage','chat','chatinteraction:addtags','addTags','tracked','chatinteraction:update','update','put','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','close','delete','destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','/:id/my_messages','getMyMessages','/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','%s-%s'];(function(_0x4eac0d,_0x58d7d7){var _0x62d441=function(_0x5e65f0){while(--_0x5e65f0){_0x4eac0d['push'](_0x4eac0d['shift']());}};_0x62d441(++_0x58d7d7);}(_0x5512,0x79));var _0x2551=function(_0x506e5a,_0x1114fe){_0x506e5a=_0x506e5a-0x0;var _0x1ed706=_0x5512[_0x506e5a];return _0x1ed706;};'use strict';var multer=require(_0x2551('0x0'));var util=require(_0x2551('0x1'));var path=require(_0x2551('0x2'));var timeout=require(_0x2551('0x3'));var express=require(_0x2551('0x4'));var router=express[_0x2551('0x5')]();var fs_extra=require(_0x2551('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2551('0x7'));var config=require(_0x2551('0x8'));var controller=require('./chatInteraction.controller');router[_0x2551('0x9')]('/',auth[_0x2551('0xa')](),controller['index']);router[_0x2551('0x9')]('/describe',auth[_0x2551('0xa')](),controller['describe']);router[_0x2551('0x9')](_0x2551('0xb'),auth[_0x2551('0xc')](),controller[_0x2551('0xd')]);router[_0x2551('0x9')](_0x2551('0xe'),auth['isChatInteractionAuthorized'](),controller[_0x2551('0xf')]);router[_0x2551('0x9')](_0x2551('0x10'),auth[_0x2551('0xa')](),controller['getMessages']);router[_0x2551('0x9')](_0x2551('0x11'),auth[_0x2551('0xc')](),controller[_0x2551('0x12')]);router[_0x2551('0x9')](_0x2551('0x13'),auth[_0x2551('0xa')](),controller[_0x2551('0x14')]);router[_0x2551('0x15')]('/',auth[_0x2551('0xa')](),controller['create']);router[_0x2551('0x15')](_0x2551('0x16'),auth[_0x2551('0xa')](),controller[_0x2551('0x17')]);var upload=multer({'storage':multer[_0x2551('0x18')]({'destination':function(_0x2202ca,_0x4f74cb,_0x39bfbd){_0x39bfbd(null,path[_0x2551('0x19')](config[_0x2551('0x1a')],_0x2551('0x1b')));},'filename':function(_0xe41d40,_0x1697cb,_0x2111ba){_0x2111ba(null,util['format'](_0x2551('0x1c'),Date[_0x2551('0x1d')](),_0x1697cb[_0x2551('0x1e')][_0x2551('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/:id/attachment_upload',upload['single'](_0x2551('0x20')),controller['attachmentUpload']);router['post']('/:id/messages',auth[_0x2551('0xc')](),controller[_0x2551('0x21')]);router[_0x2551('0x15')]('/:id/tags',auth[_0x2551('0xa')](),interaction['tracked'](_0x2551('0x22'),_0x2551('0x23')),controller[_0x2551('0x24')]);router['put'](_0x2551('0xb'),auth[_0x2551('0xa')](),interaction[_0x2551('0x25')](_0x2551('0x22'),_0x2551('0x26')),controller[_0x2551('0x27')]);router[_0x2551('0x28')](_0x2551('0x29'),controller[_0x2551('0x2a')]);router['put'](_0x2551('0x2b'),auth[_0x2551('0xc')](),controller['abandon']);router[_0x2551('0x28')](_0x2551('0x2c'),controller[_0x2551('0x2d')]);router[_0x2551('0x2e')]('/:id',auth[_0x2551('0xa')](),interaction[_0x2551('0x25')](_0x2551('0x22'),'chatinteraction:destroy'),controller[_0x2551('0x2f')]);router[_0x2551('0x2e')](_0x2551('0x30'),auth[_0x2551('0xa')](),controller[_0x2551('0x31')]);module['exports']=router;
\ No newline at end of file
+var _0x96db=['create','/:id/vidaoo','diskStorage','join','root','server/files/attachments/','%s-%s','originalname','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','chat','chatinteraction:addtags','tracked','chatinteraction:update','update','put','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','/:id/my_messages','getMyMessages','/:id/download','post'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0x96db,0xbe));var _0xb96d=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x96db[_0x504df1];return _0x1063b5;};'use strict';var multer=require(_0xb96d('0x0'));var util=require(_0xb96d('0x1'));var path=require(_0xb96d('0x2'));var timeout=require(_0xb96d('0x3'));var express=require(_0xb96d('0x4'));var router=express['Router']();var fs_extra=require(_0xb96d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb96d('0x6'));var controller=require(_0xb96d('0x7'));router[_0xb96d('0x8')]('/',auth[_0xb96d('0x9')](),controller['index']);router[_0xb96d('0x8')](_0xb96d('0xa'),auth['isAuthenticated'](),controller[_0xb96d('0xb')]);router[_0xb96d('0x8')](_0xb96d('0xc'),auth['isChatInteractionAuthorized'](),controller[_0xb96d('0xd')]);router[_0xb96d('0x8')](_0xb96d('0xe'),auth[_0xb96d('0xf')](),controller[_0xb96d('0x10')]);router[_0xb96d('0x8')](_0xb96d('0x11'),auth[_0xb96d('0x9')](),controller['getMessages']);router['get'](_0xb96d('0x12'),auth[_0xb96d('0xf')](),controller[_0xb96d('0x13')]);router[_0xb96d('0x8')](_0xb96d('0x14'),auth[_0xb96d('0x9')](),controller['download']);router[_0xb96d('0x15')]('/',auth['isAuthenticated'](),controller[_0xb96d('0x16')]);router[_0xb96d('0x15')](_0xb96d('0x17'),auth[_0xb96d('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xb96d('0x18')]({'destination':function(_0x3e7d7f,_0x27b1ce,_0x1623b2){_0x1623b2(null,path[_0xb96d('0x19')](config[_0xb96d('0x1a')],_0xb96d('0x1b')));},'filename':function(_0x113d60,_0x10edd9,_0x3e4747){_0x3e4747(null,util['format'](_0xb96d('0x1c'),Date['now'](),_0x10edd9[_0xb96d('0x1d')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xb96d('0x15')](_0xb96d('0x1e'),upload[_0xb96d('0x1f')](_0xb96d('0x20')),controller[_0xb96d('0x21')]);router[_0xb96d('0x15')]('/:id/messages',auth[_0xb96d('0xf')](),controller[_0xb96d('0x22')]);router[_0xb96d('0x15')](_0xb96d('0x23'),auth[_0xb96d('0x9')](),interaction['tracked'](_0xb96d('0x24'),_0xb96d('0x25')),controller['addTags']);router['put']('/:id',auth[_0xb96d('0x9')](),interaction[_0xb96d('0x26')]('chat',_0xb96d('0x27')),controller[_0xb96d('0x28')]);router[_0xb96d('0x29')](_0xb96d('0x2a'),controller[_0xb96d('0x2b')]);router[_0xb96d('0x29')](_0xb96d('0x2c'),auth[_0xb96d('0xf')](),controller[_0xb96d('0x2d')]);router[_0xb96d('0x29')](_0xb96d('0x2e'),controller[_0xb96d('0x2f')]);router[_0xb96d('0x30')](_0xb96d('0xc'),auth[_0xb96d('0x9')](),interaction[_0xb96d('0x26')](_0xb96d('0x24'),_0xb96d('0x31')),controller[_0xb96d('0x32')]);router['delete'](_0xb96d('0x23'),auth[_0xb96d('0x9')](),controller[_0xb96d('0x33')]);module[_0xb96d('0x34')]=router;
\ No newline at end of file
index 36dc6dd..2699240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5fc=['BOOLEAN','INTEGER','sequelize','exports'];(function(_0x1a3917,_0x4f02ea){var _0x49172a=function(_0xda2725){while(--_0xda2725){_0x1a3917['push'](_0x1a3917['shift']());}};_0x49172a(++_0x4f02ea);}(_0xc5fc,0xf6));var _0xcc5f=function(_0x2c4530,_0x1da779){_0x2c4530=_0x2c4530-0x0;var _0x41a69a=_0xc5fc[_0x2c4530];return _0x41a69a;};'use strict';var Sequelize=require(_0xcc5f('0x0'));module[_0xcc5f('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xcc5f('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xcc5f('0x3')]}};
\ No newline at end of file
+var _0xff83=['medium','INTEGER','exports','TEXT'];(function(_0x3779eb,_0xc19002){var _0x50423a=function(_0x16e841){while(--_0x16e841){_0x3779eb['push'](_0x3779eb['shift']());}};_0x50423a(++_0xc19002);}(_0xff83,0xb6));var _0x3ff8=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xff83[_0x3054be];return _0x3df150;};'use strict';var Sequelize=require('sequelize');module[_0x3ff8('0x0')]={'body':{'type':Sequelize[_0x3ff8('0x1')](_0x3ff8('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x3ff8('0x3')]}};
\ No newline at end of file
index 718144b..e08ef84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4338=['zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','update','then','stack','name','send','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','create','body','destroy','find','describe','get','messages','lastMessageAt','createdAt','YYYY-MM-DD\x20HH:mm:ss','lastMessage','User','agent','admin','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','resourceId','push','FromId','ToId','read','-createdAt','eml-format','rimraf'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x4338,0x13c));var _0x8433=function(_0xa61faa,_0x16ee53){_0xa61faa=_0xa61faa-0x0;var _0x56cf36=_0x4338[_0xa61faa];return _0x56cf36;};'use strict';var emlformat=require(_0x8433('0x0'));var rimraf=require(_0x8433('0x1'));var zipdir=require(_0x8433('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8433('0x3'));var moment=require(_0x8433('0x4'));var BPromise=require(_0x8433('0x5'));var Mustache=require(_0x8433('0x6'));var util=require(_0x8433('0x7'));var path=require(_0x8433('0x8'));var sox=require('sox');var csv=require(_0x8433('0x9'));var ejs=require(_0x8433('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8433('0xb'));var crypto=require(_0x8433('0xc'));var jsforce=require(_0x8433('0xd'));var deskjs=require(_0x8433('0xe'));var toCsv=require(_0x8433('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8433('0xf'));var as=require(_0x8433('0x10'));var hardwareService=require(_0x8433('0x11'));var logger=require(_0x8433('0x12'))(_0x8433('0x13'));var utils=require(_0x8433('0x14'));var config=require(_0x8433('0x15'));var licenseUtil=require(_0x8433('0x16'));var db=require(_0x8433('0x17'))['db'];config['redis']=_[_0x8433('0x18')](config[_0x8433('0x19')],{'host':_0x8433('0x1a'),'port':0x18eb});var socket=require(_0x8433('0x1b'))(new Redis(config[_0x8433('0x19')]));require(_0x8433('0x1c'))[_0x8433('0x1d')](socket);function respondWithStatusCode(_0x34889e,_0x4f0cc1){_0x4f0cc1=_0x4f0cc1||0xcc;return function(_0x156e92){if(_0x156e92){return _0x34889e[_0x8433('0x1e')](_0x4f0cc1);}return _0x34889e[_0x8433('0x1f')](_0x4f0cc1)[_0x8433('0x20')]();};}function respondWithResult(_0x6bb0e4,_0xfd34d9){_0xfd34d9=_0xfd34d9||0xc8;return function(_0x193a87){if(_0x193a87){return _0x6bb0e4[_0x8433('0x1f')](_0xfd34d9)[_0x8433('0x21')](_0x193a87);}};}function respondWithFilteredResult(_0x4ae6b2,_0x5fdefe){return function(_0x1c5386){if(_0x1c5386){var _0x5ed7d5=typeof _0x5fdefe['offset']===_0x8433('0x22')&&typeof _0x5fdefe[_0x8433('0x23')]===_0x8433('0x22');var _0x40f19b=_0x1c5386[_0x8433('0x24')];var _0xd838b6=_0x5ed7d5?0x0:_0x5fdefe[_0x8433('0x25')];var _0x36c816=_0x5ed7d5?_0x1c5386['count']:_0x5fdefe[_0x8433('0x25')]+_0x5fdefe[_0x8433('0x23')];var _0xb85f1b;if(_0x36c816>=_0x40f19b){_0x36c816=_0x40f19b;_0xb85f1b=0xc8;}else{_0xb85f1b=0xce;}_0x4ae6b2[_0x8433('0x1f')](_0xb85f1b);return _0x4ae6b2['set']('Content-Range',_0xd838b6+'-'+_0x36c816+'/'+_0x40f19b)[_0x8433('0x21')](_0x1c5386);}return null;};}function patchUpdates(_0x4cdf95){return function(_0x145708){try{jsonpatch[_0x8433('0x26')](_0x145708,_0x4cdf95,!![]);}catch(_0x1c9381){return BPromise[_0x8433('0x27')](_0x1c9381);}return _0x145708[_0x8433('0x28')]();};}function saveUpdates(_0x291f9e,_0x5e372a){return function(_0x36a4cc){if(_0x36a4cc){return _0x36a4cc[_0x8433('0x29')](_0x291f9e)[_0x8433('0x2a')](function(_0x1ee55a){return _0x1ee55a;});}return null;};}function removeEntity(_0x2eeece,_0x4aea66){return function(_0xd96673){if(_0xd96673){return _0xd96673['destroy']()['then'](function(){_0x2eeece[_0x8433('0x1f')](0xcc)[_0x8433('0x20')]();});}};}function handleEntityNotFound(_0x58ef86,_0x4dd3c0){return function(_0x22a544){if(!_0x22a544){_0x58ef86['sendStatus'](0x194);}return _0x22a544;};}function handleError(_0x2d9755,_0x21d0ae){_0x21d0ae=_0x21d0ae||0x1f4;return function(_0xf13885){logger['error'](_0xf13885[_0x8433('0x2b')]);if(_0xf13885[_0x8433('0x2c')]){delete _0xf13885[_0x8433('0x2c')];}_0x2d9755[_0x8433('0x1f')](_0x21d0ae)[_0x8433('0x2d')](_0xf13885);};}exports['index']=function(_0x22e27f,_0x21dbfd){var _0x22d60a={},_0x12b3cd={},_0x3e0d35={'count':0x0,'rows':[]};var _0x56d573=_[_0x8433('0x2e')](db[_0x8433('0x2f')][_0x8433('0x30')],function(_0x306c67){return{'name':_0x306c67[_0x8433('0x31')],'type':_0x306c67[_0x8433('0x32')][_0x8433('0x33')]};});_0x12b3cd[_0x8433('0x34')]=_[_0x8433('0x2e')](_0x56d573,_0x8433('0x2c'));_0x12b3cd['query']=_[_0x8433('0x35')](_0x22e27f[_0x8433('0x36')]);_0x12b3cd[_0x8433('0x37')]=_['intersection'](_0x12b3cd[_0x8433('0x34')],_0x12b3cd[_0x8433('0x36')]);_0x22d60a['attributes']=_[_0x8433('0x38')](_0x12b3cd['model'],qs[_0x8433('0x39')](_0x22e27f['query']['fields']));_0x22d60a[_0x8433('0x3a')]=_0x22d60a[_0x8433('0x3a')][_0x8433('0x3b')]?_0x22d60a[_0x8433('0x3a')]:_0x12b3cd[_0x8433('0x34')];if(!_0x22e27f['query']['hasOwnProperty'](_0x8433('0x3c'))){_0x22d60a[_0x8433('0x23')]=qs[_0x8433('0x23')](_0x22e27f['query']['limit']);_0x22d60a[_0x8433('0x25')]=qs[_0x8433('0x25')](_0x22e27f[_0x8433('0x36')][_0x8433('0x25')]);}_0x22d60a['order']=qs[_0x8433('0x3d')](_0x22e27f[_0x8433('0x36')][_0x8433('0x3d')]);_0x22d60a[_0x8433('0x3e')]=qs['filters'](_['pick'](_0x22e27f[_0x8433('0x36')],_0x12b3cd[_0x8433('0x37')]),_0x56d573);if(_0x22e27f['query'][_0x8433('0x3f')]){_0x22d60a[_0x8433('0x3e')]=_['merge'](_0x22d60a[_0x8433('0x3e')],{'$or':_[_0x8433('0x2e')](_0x56d573,function(_0x2c694d){if(_0x2c694d['type']!==_0x8433('0x40')){var _0x15bc6e={};_0x15bc6e[_0x2c694d[_0x8433('0x2c')]]={'$like':'%'+_0x22e27f['query'][_0x8433('0x3f')]+'%'};return _0x15bc6e;}})});}_0x22d60a=_[_0x8433('0x41')]({},_0x22d60a,_0x22e27f[_0x8433('0x42')]);var _0x591cba={'where':_0x22d60a[_0x8433('0x3e')]};return db[_0x8433('0x2f')][_0x8433('0x24')](_0x591cba)['then'](function(_0x4d7143){_0x3e0d35[_0x8433('0x24')]=_0x4d7143;if(_0x22e27f['query'][_0x8433('0x43')]){_0x22d60a['include']=[{'all':!![]}];}return db[_0x8433('0x2f')][_0x8433('0x44')](_0x22d60a);})[_0x8433('0x2a')](function(_0x2010e2){_0x3e0d35[_0x8433('0x45')]=_0x2010e2;return _0x3e0d35;})[_0x8433('0x2a')](respondWithFilteredResult(_0x21dbfd,_0x22d60a))[_0x8433('0x46')](handleError(_0x21dbfd,null));};exports[_0x8433('0x47')]=function(_0x5ab806,_0x3f1632){var _0xae18bf={'raw':!![],'where':{'id':_0x5ab806[_0x8433('0x48')]['id']}},_0x213120={};_0x213120[_0x8433('0x34')]=_['keys'](db[_0x8433('0x2f')]['rawAttributes']);_0x213120[_0x8433('0x36')]=_[_0x8433('0x35')](_0x5ab806[_0x8433('0x36')]);_0x213120[_0x8433('0x37')]=_[_0x8433('0x38')](_0x213120[_0x8433('0x34')],_0x213120[_0x8433('0x36')]);_0xae18bf['attributes']=_['intersection'](_0x213120[_0x8433('0x34')],qs[_0x8433('0x39')](_0x5ab806['query']['fields']));_0xae18bf[_0x8433('0x3a')]=_0xae18bf['attributes']['length']?_0xae18bf[_0x8433('0x3a')]:_0x213120['model'];if(_0x5ab806[_0x8433('0x36')][_0x8433('0x43')]){_0xae18bf['include']=[{'all':!![]}];}_0xae18bf=_['merge']({},_0xae18bf,_0x5ab806[_0x8433('0x42')]);return db[_0x8433('0x2f')]['find'](_0xae18bf)[_0x8433('0x2a')](handleEntityNotFound(_0x3f1632,null))['then'](respondWithResult(_0x3f1632,null))[_0x8433('0x46')](handleError(_0x3f1632,null));};exports[_0x8433('0x49')]=function(_0x22e37e,_0x5bc9c2){return db[_0x8433('0x2f')]['create'](_0x22e37e[_0x8433('0x4a')],{})[_0x8433('0x2a')](respondWithResult(_0x5bc9c2,0xc9))[_0x8433('0x46')](handleError(_0x5bc9c2,null));};exports['update']=function(_0x1f3aa3,_0x3505b2){if(_0x1f3aa3[_0x8433('0x4a')]['id']){delete _0x1f3aa3[_0x8433('0x4a')]['id'];}return db[_0x8433('0x2f')]['find']({'where':{'id':_0x1f3aa3[_0x8433('0x48')]['id']}})[_0x8433('0x2a')](handleEntityNotFound(_0x3505b2,null))['then'](saveUpdates(_0x1f3aa3['body'],null))[_0x8433('0x2a')](respondWithResult(_0x3505b2,null))[_0x8433('0x46')](handleError(_0x3505b2,null));};exports[_0x8433('0x4b')]=function(_0x260430,_0x459a61){return db[_0x8433('0x2f')][_0x8433('0x4c')]({'where':{'id':_0x260430[_0x8433('0x48')]['id']}})[_0x8433('0x2a')](handleEntityNotFound(_0x459a61,null))['then'](removeEntity(_0x459a61,null))[_0x8433('0x46')](handleError(_0x459a61,null));};exports[_0x8433('0x4d')]=function(_0x55c489,_0x1a03f8){return db[_0x8433('0x2f')]['describe']()['then'](respondWithResult(_0x1a03f8,null))['catch'](handleError(_0x1a03f8,null));};function wrapUser(_0xc407a8){return function(_0x99e41d){var _0x5e0102=_0xc407a8[_0x8433('0x4e')]({'plain':!![]});_0x5e0102[_0x8433('0x4f')]=[];if(_0x99e41d){_0x5e0102[_0x8433('0x50')]=_0x99e41d[_0x8433('0x51')];_0x5e0102['lastMessage']=_0x99e41d;}else{_0x5e0102[_0x8433('0x50')]=moment(0x0)['format'](_0x8433('0x52'));_0x5e0102[_0x8433('0x53')]={};}return _0x5e0102;};}exports['getUsers']=function(_0xb0b642,_0x1cd0fb,_0x14320c){var _0x3e1c5d=[];return db[_0x8433('0x54')][_0x8433('0x44')]({'where':{'role':[_0x8433('0x55'),_0x8433('0x56'),'user']},'attributes':['id',_0x8433('0x57'),_0x8433('0x2c'),_0x8433('0x58'),_0x8433('0x59'),_0x8433('0x5a'),'online',_0x8433('0x5b'),_0x8433('0x5c'),_0x8433('0x5d')],'order':qs['sort'](_0x8433('0x5e')),'include':[{'model':db[_0x8433('0x5f')],'as':'VoiceQueues','attributes':['id',_0x8433('0x2c'),_0x8433('0x32')],'through':{'attributes':[]}}]})['then'](function(_0xd7e5e4){if(_0xd7e5e4){var _0x16f794=_0xb0b642[_0x8433('0x60')][_0x8433('0x4e')]({'plain':!![]});if(!_0x16f794)throw new Error(_0x8433('0x61'));if(_0x16f794[_0x8433('0x58')]===_0x8433('0x60')){return db[_0x8433('0x62')][_0x8433('0x4c')]({'where':{'name':'Agents','userProfileId':_0x16f794['userProfileId']},'raw':!![]})[_0x8433('0x2a')](function(_0x2327e0){if(_0x2327e0){if(_0x2327e0[_0x8433('0x63')]===0x0){return db['UserProfileResource'][_0x8433('0x44')]({'where':{'sectionId':_0x2327e0['id']},'raw':!![]})[_0x8433('0x2a')](function(_0x969033){var _0x7818b4=[];if(_['isEmpty'](_0x969033)){_0x7818b4=_['filter'](_0xd7e5e4,function(_0x7f03d2){if(_0x7f03d2[_0x8433('0x58')]!==_0x8433('0x55')){return _0x7f03d2;}});return _0x7818b4;}else{for(var _0x22e173=0x0;_0x22e173<_0xd7e5e4['length'];_0x22e173++){var _0x298997=_0xd7e5e4[_0x22e173];if(_0x298997['role']===_0x8433('0x55')){var _0x61dea5=_[_0x8433('0x4c')](_0x969033,function(_0x1c1cc2){return _0x1c1cc2[_0x8433('0x64')]===_0x298997['id'];});if(_0x61dea5)_0x7818b4[_0x8433('0x65')](_0x298997);}else{_0x7818b4['push'](_0x298997);}}return _0x7818b4;}});}else{return _0xd7e5e4;}}else{var _0x291be4=_[_0x8433('0x3f')](_0xd7e5e4,function(_0x4fc3df){if(_0x4fc3df['role']!==_0x8433('0x55')){return _0x4fc3df;}});return _0x291be4;}});}else{return _0xd7e5e4;}}})[_0x8433('0x2a')](function(_0x41500a){var _0x260dc4=[];if(_0x41500a){_0x3e1c5d=_0x41500a;for(var _0x2894ed=0x0;_0x2894ed<_0x41500a['length'];_0x2894ed+=0x1){_0x3e1c5d[_0x2894ed][_0x8433('0x4f')]=[];_0x260dc4[_0x8433('0x65')](db[_0x8433('0x2f')]['find']({'where':{'FromId':[_0xb0b642[_0x8433('0x60')]['id'],_0x41500a[_0x2894ed]['id']],'ToId':[_0xb0b642[_0x8433('0x60')]['id'],_0x41500a[_0x2894ed]['id']],'ChatGroupId':null},'attributes':['id',_0x8433('0x51'),_0x8433('0x66'),_0x8433('0x67'),_0x8433('0x68'),_0x8433('0x4a')],'order':qs[_0x8433('0x3d')](_0x8433('0x69')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x8433('0x2a')](wrapUser(_0x41500a[_0x2894ed])));}return BPromise['all'](_0x260dc4);}return[];})[_0x8433('0x2a')](function(_0x10438d){return{'rows':_0x10438d,'count':_0x10438d[_0x8433('0x3b')]};})[_0x8433('0x2a')](respondWithResult(_0x1cd0fb,null))[_0x8433('0x46')](handleError(_0x1cd0fb,null));};
\ No newline at end of file
+var _0x7579=['agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','filter','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','options','ChatInternalMessage','includeAll','findAll','rows','show','params','keys','include','find','catch','create','update','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','User'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x7579,0x182));var _0x9757=function(_0x4d9db3,_0x2ea95f){_0x4d9db3=_0x4d9db3-0x0;var _0x29fde6=_0x7579[_0x4d9db3];return _0x29fde6;};'use strict';var emlformat=require(_0x9757('0x0'));var rimraf=require(_0x9757('0x1'));var zipdir=require(_0x9757('0x2'));var jsonpatch=require(_0x9757('0x3'));var rp=require(_0x9757('0x4'));var moment=require('moment');var BPromise=require(_0x9757('0x5'));var Mustache=require(_0x9757('0x6'));var util=require(_0x9757('0x7'));var path=require('path');var sox=require(_0x9757('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9757('0x9'));var _=require('lodash');var squel=require(_0x9757('0xa'));var crypto=require(_0x9757('0xb'));var jsforce=require(_0x9757('0xc'));var deskjs=require(_0x9757('0xd'));var toCsv=require(_0x9757('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9757('0xf'));var qs=require(_0x9757('0x10'));var as=require(_0x9757('0x11'));var hardwareService=require(_0x9757('0x12'));var logger=require(_0x9757('0x13'))('api');var utils=require(_0x9757('0x14'));var config=require(_0x9757('0x15'));var licenseUtil=require(_0x9757('0x16'));var db=require(_0x9757('0x17'))['db'];config[_0x9757('0x18')]=_[_0x9757('0x19')](config[_0x9757('0x18')],{'host':_0x9757('0x1a'),'port':0x18eb});var socket=require(_0x9757('0x1b'))(new Redis(config[_0x9757('0x18')]));require(_0x9757('0x1c'))[_0x9757('0x1d')](socket);function respondWithStatusCode(_0x5b6a17,_0x1ff008){_0x1ff008=_0x1ff008||0xcc;return function(_0x4d7111){if(_0x4d7111){return _0x5b6a17[_0x9757('0x1e')](_0x1ff008);}return _0x5b6a17[_0x9757('0x1f')](_0x1ff008)[_0x9757('0x20')]();};}function respondWithResult(_0x4e19bd,_0x5f03a8){_0x5f03a8=_0x5f03a8||0xc8;return function(_0x9de264){if(_0x9de264){return _0x4e19bd[_0x9757('0x1f')](_0x5f03a8)[_0x9757('0x21')](_0x9de264);}};}function respondWithFilteredResult(_0xa2c3b1,_0x5d4caa){return function(_0x4088ce){if(_0x4088ce){var _0x2bddf0=typeof _0x5d4caa[_0x9757('0x22')]==='undefined'&&typeof _0x5d4caa[_0x9757('0x23')]===_0x9757('0x24');var _0x245848=_0x4088ce[_0x9757('0x25')];var _0x4ee58f=_0x2bddf0?0x0:_0x5d4caa[_0x9757('0x22')];var _0x35694b=_0x2bddf0?_0x4088ce['count']:_0x5d4caa[_0x9757('0x22')]+_0x5d4caa[_0x9757('0x23')];var _0x28417f;if(_0x35694b>=_0x245848){_0x35694b=_0x245848;_0x28417f=0xc8;}else{_0x28417f=0xce;}_0xa2c3b1[_0x9757('0x1f')](_0x28417f);return _0xa2c3b1[_0x9757('0x26')](_0x9757('0x27'),_0x4ee58f+'-'+_0x35694b+'/'+_0x245848)[_0x9757('0x21')](_0x4088ce);}return null;};}function patchUpdates(_0x4f4d0a){return function(_0x4f98e8){try{jsonpatch['apply'](_0x4f98e8,_0x4f4d0a,!![]);}catch(_0x3da44e){return BPromise[_0x9757('0x28')](_0x3da44e);}return _0x4f98e8[_0x9757('0x29')]();};}function saveUpdates(_0x59c8bc,_0x57b5ec){return function(_0xecfdb){if(_0xecfdb){return _0xecfdb['update'](_0x59c8bc)['then'](function(_0x486a05){return _0x486a05;});}return null;};}function removeEntity(_0x4a1b73,_0x55dd71){return function(_0x1b3ab0){if(_0x1b3ab0){return _0x1b3ab0[_0x9757('0x2a')]()[_0x9757('0x2b')](function(){_0x4a1b73['status'](0xcc)[_0x9757('0x20')]();});}};}function handleEntityNotFound(_0x13e7a9,_0x3360dc){return function(_0x22deed){if(!_0x22deed){_0x13e7a9[_0x9757('0x1e')](0x194);}return _0x22deed;};}function handleError(_0x2a50c9,_0x4e53ed){_0x4e53ed=_0x4e53ed||0x1f4;return function(_0x2f846b){logger[_0x9757('0x2c')](_0x2f846b[_0x9757('0x2d')]);if(_0x2f846b[_0x9757('0x2e')]){delete _0x2f846b[_0x9757('0x2e')];}_0x2a50c9[_0x9757('0x1f')](_0x4e53ed)[_0x9757('0x2f')](_0x2f846b);};}exports[_0x9757('0x30')]=function(_0x4820bb,_0x50a0de){var _0x39a4c8={},_0x2dcd6e={},_0x20d651={'count':0x0,'rows':[]};var _0x360199=_[_0x9757('0x31')](db['ChatInternalMessage'][_0x9757('0x32')],function(_0x428dde){return{'name':_0x428dde[_0x9757('0x33')],'type':_0x428dde['type'][_0x9757('0x34')]};});_0x2dcd6e[_0x9757('0x35')]=_[_0x9757('0x31')](_0x360199,_0x9757('0x2e'));_0x2dcd6e[_0x9757('0x36')]=_['keys'](_0x4820bb[_0x9757('0x36')]);_0x2dcd6e[_0x9757('0x37')]=_[_0x9757('0x38')](_0x2dcd6e[_0x9757('0x35')],_0x2dcd6e['query']);_0x39a4c8[_0x9757('0x39')]=_[_0x9757('0x38')](_0x2dcd6e[_0x9757('0x35')],qs[_0x9757('0x3a')](_0x4820bb[_0x9757('0x36')][_0x9757('0x3a')]));_0x39a4c8[_0x9757('0x39')]=_0x39a4c8[_0x9757('0x39')][_0x9757('0x3b')]?_0x39a4c8[_0x9757('0x39')]:_0x2dcd6e[_0x9757('0x35')];if(!_0x4820bb[_0x9757('0x36')]['hasOwnProperty'](_0x9757('0x3c'))){_0x39a4c8['limit']=qs[_0x9757('0x23')](_0x4820bb[_0x9757('0x36')][_0x9757('0x23')]);_0x39a4c8[_0x9757('0x22')]=qs['offset'](_0x4820bb[_0x9757('0x36')]['offset']);}_0x39a4c8['order']=qs[_0x9757('0x3d')](_0x4820bb[_0x9757('0x36')][_0x9757('0x3d')]);_0x39a4c8[_0x9757('0x3e')]=qs[_0x9757('0x37')](_[_0x9757('0x3f')](_0x4820bb[_0x9757('0x36')],_0x2dcd6e['filters']),_0x360199);if(_0x4820bb[_0x9757('0x36')]['filter']){_0x39a4c8['where']=_[_0x9757('0x40')](_0x39a4c8['where'],{'$or':_[_0x9757('0x31')](_0x360199,function(_0x3696cc){if(_0x3696cc[_0x9757('0x41')]!==_0x9757('0x42')){var _0x1edb2b={};_0x1edb2b[_0x3696cc[_0x9757('0x2e')]]={'$like':'%'+_0x4820bb[_0x9757('0x36')]['filter']+'%'};return _0x1edb2b;}})});}_0x39a4c8=_[_0x9757('0x40')]({},_0x39a4c8,_0x4820bb[_0x9757('0x43')]);var _0x35a084={'where':_0x39a4c8[_0x9757('0x3e')]};return db[_0x9757('0x44')][_0x9757('0x25')](_0x35a084)['then'](function(_0x201ccc){_0x20d651['count']=_0x201ccc;if(_0x4820bb[_0x9757('0x36')][_0x9757('0x45')]){_0x39a4c8['include']=[{'all':!![]}];}return db[_0x9757('0x44')][_0x9757('0x46')](_0x39a4c8);})[_0x9757('0x2b')](function(_0x150c69){_0x20d651[_0x9757('0x47')]=_0x150c69;return _0x20d651;})[_0x9757('0x2b')](respondWithFilteredResult(_0x50a0de,_0x39a4c8))['catch'](handleError(_0x50a0de,null));};exports[_0x9757('0x48')]=function(_0x129156,_0x301517){var _0xf8f069={'raw':!![],'where':{'id':_0x129156[_0x9757('0x49')]['id']}},_0x192cdf={};_0x192cdf[_0x9757('0x35')]=_[_0x9757('0x4a')](db['ChatInternalMessage'][_0x9757('0x32')]);_0x192cdf[_0x9757('0x36')]=_[_0x9757('0x4a')](_0x129156['query']);_0x192cdf[_0x9757('0x37')]=_['intersection'](_0x192cdf[_0x9757('0x35')],_0x192cdf[_0x9757('0x36')]);_0xf8f069[_0x9757('0x39')]=_[_0x9757('0x38')](_0x192cdf[_0x9757('0x35')],qs[_0x9757('0x3a')](_0x129156[_0x9757('0x36')][_0x9757('0x3a')]));_0xf8f069[_0x9757('0x39')]=_0xf8f069[_0x9757('0x39')][_0x9757('0x3b')]?_0xf8f069[_0x9757('0x39')]:_0x192cdf[_0x9757('0x35')];if(_0x129156[_0x9757('0x36')][_0x9757('0x45')]){_0xf8f069[_0x9757('0x4b')]=[{'all':!![]}];}_0xf8f069=_[_0x9757('0x40')]({},_0xf8f069,_0x129156[_0x9757('0x43')]);return db[_0x9757('0x44')][_0x9757('0x4c')](_0xf8f069)[_0x9757('0x2b')](handleEntityNotFound(_0x301517,null))[_0x9757('0x2b')](respondWithResult(_0x301517,null))[_0x9757('0x4d')](handleError(_0x301517,null));};exports[_0x9757('0x4e')]=function(_0x595476,_0x2c37c1){return db[_0x9757('0x44')][_0x9757('0x4e')](_0x595476['body'],{})[_0x9757('0x2b')](respondWithResult(_0x2c37c1,0xc9))['catch'](handleError(_0x2c37c1,null));};exports[_0x9757('0x4f')]=function(_0x3df949,_0x3bf780){if(_0x3df949[_0x9757('0x50')]['id']){delete _0x3df949[_0x9757('0x50')]['id'];}return db[_0x9757('0x44')][_0x9757('0x4c')]({'where':{'id':_0x3df949[_0x9757('0x49')]['id']}})[_0x9757('0x2b')](handleEntityNotFound(_0x3bf780,null))[_0x9757('0x2b')](saveUpdates(_0x3df949[_0x9757('0x50')],null))['then'](respondWithResult(_0x3bf780,null))['catch'](handleError(_0x3bf780,null));};exports[_0x9757('0x2a')]=function(_0x109861,_0x386fa3){return db[_0x9757('0x44')][_0x9757('0x4c')]({'where':{'id':_0x109861[_0x9757('0x49')]['id']}})[_0x9757('0x2b')](handleEntityNotFound(_0x386fa3,null))[_0x9757('0x2b')](removeEntity(_0x386fa3,null))[_0x9757('0x4d')](handleError(_0x386fa3,null));};exports[_0x9757('0x51')]=function(_0x273336,_0x229c88){return db[_0x9757('0x44')][_0x9757('0x51')]()[_0x9757('0x2b')](respondWithResult(_0x229c88,null))[_0x9757('0x4d')](handleError(_0x229c88,null));};function wrapUser(_0x4d4afe){return function(_0x3fc86d){var _0x496793=_0x4d4afe[_0x9757('0x52')]({'plain':!![]});_0x496793[_0x9757('0x53')]=[];if(_0x3fc86d){_0x496793[_0x9757('0x54')]=_0x3fc86d[_0x9757('0x55')];_0x496793[_0x9757('0x56')]=_0x3fc86d;}else{_0x496793['lastMessageAt']=moment(0x0)['format'](_0x9757('0x57'));_0x496793[_0x9757('0x56')]={};}return _0x496793;};}exports[_0x9757('0x58')]=function(_0x400a95,_0x35108a,_0xf6fbd3){var _0xccbd5d=[];return db[_0x9757('0x59')][_0x9757('0x46')]({'where':{'role':[_0x9757('0x5a'),_0x9757('0x5b'),_0x9757('0x5c')]},'attributes':['id',_0x9757('0x5d'),_0x9757('0x2e'),_0x9757('0x5e'),_0x9757('0x5f'),_0x9757('0x60'),_0x9757('0x61'),_0x9757('0x62'),_0x9757('0x63'),_0x9757('0x64')],'order':qs['sort'](_0x9757('0x65')),'include':[{'model':db[_0x9757('0x66')],'as':_0x9757('0x67'),'attributes':['id',_0x9757('0x2e'),_0x9757('0x41')],'through':{'attributes':[]}}]})[_0x9757('0x2b')](function(_0x2102a6){if(_0x2102a6){var _0x2de3a9=_0x400a95[_0x9757('0x5c')][_0x9757('0x52')]({'plain':!![]});if(!_0x2de3a9)throw new Error(_0x9757('0x68'));if(_0x2de3a9[_0x9757('0x5e')]===_0x9757('0x5c')){return db[_0x9757('0x69')][_0x9757('0x4c')]({'where':{'name':_0x9757('0x6a'),'userProfileId':_0x2de3a9[_0x9757('0x6b')]},'raw':!![]})[_0x9757('0x2b')](function(_0x37aec6){if(_0x37aec6){if(_0x37aec6[_0x9757('0x6c')]===0x0){return db[_0x9757('0x6d')]['findAll']({'where':{'sectionId':_0x37aec6['id']},'raw':!![]})[_0x9757('0x2b')](function(_0x41d2d7){var _0x5727e1=[];if(_[_0x9757('0x6e')](_0x41d2d7)){_0x5727e1=_[_0x9757('0x6f')](_0x2102a6,function(_0x3f20f4){if(_0x3f20f4[_0x9757('0x5e')]!==_0x9757('0x5a')){return _0x3f20f4;}});return _0x5727e1;}else{for(var _0x4a999f=0x0;_0x4a999f<_0x2102a6[_0x9757('0x3b')];_0x4a999f++){var _0x29e8ab=_0x2102a6[_0x4a999f];if(_0x29e8ab['role']===_0x9757('0x5a')){var _0x11ebb3=_[_0x9757('0x4c')](_0x41d2d7,function(_0x516c88){return _0x516c88[_0x9757('0x70')]===_0x29e8ab['id'];});if(_0x11ebb3)_0x5727e1['push'](_0x29e8ab);}else{_0x5727e1[_0x9757('0x71')](_0x29e8ab);}}return _0x5727e1;}});}else{return _0x2102a6;}}else{var _0x22b294=_['filter'](_0x2102a6,function(_0x3ac559){if(_0x3ac559[_0x9757('0x5e')]!=='agent'){return _0x3ac559;}});return _0x22b294;}});}else{return _0x2102a6;}}})[_0x9757('0x2b')](function(_0x46ca5a){var _0x40b665=[];if(_0x46ca5a){_0xccbd5d=_0x46ca5a;for(var _0xd6282a=0x0;_0xd6282a<_0x46ca5a['length'];_0xd6282a+=0x1){_0xccbd5d[_0xd6282a]['messages']=[];_0x40b665[_0x9757('0x71')](db['ChatInternalMessage']['find']({'where':{'FromId':[_0x400a95[_0x9757('0x5c')]['id'],_0x46ca5a[_0xd6282a]['id']],'ToId':[_0x400a95[_0x9757('0x5c')]['id'],_0x46ca5a[_0xd6282a]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x9757('0x72'),_0x9757('0x73'),_0x9757('0x74'),_0x9757('0x50')],'order':qs['sort'](_0x9757('0x75')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x9757('0x2b')](wrapUser(_0x46ca5a[_0xd6282a])));}return BPromise[_0x9757('0x76')](_0x40b665);}return[];})[_0x9757('0x2b')](function(_0xebbd7a){return{'rows':_0xebbd7a,'count':_0xebbd7a['length']};})[_0x9757('0x2b')](respondWithResult(_0x35108a,null))['catch'](handleError(_0x35108a,null));};
\ No newline at end of file
index 07e9929..0d25bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1475=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','update','remove'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1475,0x144));var _0x5147=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0x1475[_0x2a7b8e];return _0x29b5c8;};'use strict';var EventEmitter=require(_0x5147('0x0'));var ChatInternalMessage=require(_0x5147('0x1'))['db'][_0x5147('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x5147('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5147('0x4'),'afterDestroy':_0x5147('0x5')};function emitEvent(_0x4dac3e){return function(_0x4fcf2c,_0x2ba165,_0x113b91){ChatInternalMessageEvents[_0x5147('0x6')](_0x4dac3e+':'+_0x4fcf2c['id'],_0x4fcf2c);ChatInternalMessageEvents[_0x5147('0x6')](_0x4dac3e,_0x4fcf2c);_0x113b91(null);};}for(var e in events){if(events[_0x5147('0x7')](e)){var event=events[e];ChatInternalMessage[_0x5147('0x8')](e,emitEvent(event));}}module[_0x5147('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x4f11=['hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','update','remove','emit'];(function(_0x543832,_0x2cfdfe){var _0x457c93=function(_0xd6d3ed){while(--_0xd6d3ed){_0x543832['push'](_0x543832['shift']());}};_0x457c93(++_0x2cfdfe);}(_0x4f11,0x107));var _0x14f1=function(_0xcd55f7,_0x310ac8){_0xcd55f7=_0xcd55f7-0x0;var _0xf8bf76=_0x4f11[_0xcd55f7];return _0xf8bf76;};'use strict';var EventEmitter=require(_0x14f1('0x0'));var ChatInternalMessage=require(_0x14f1('0x1'))['db'][_0x14f1('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x14f1('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x14f1('0x4'),'afterDestroy':_0x14f1('0x5')};function emitEvent(_0x15bf54){return function(_0x52098d,_0x35d56b,_0x1b60d0){ChatInternalMessageEvents[_0x14f1('0x6')](_0x15bf54+':'+_0x52098d['id'],_0x52098d);ChatInternalMessageEvents['emit'](_0x15bf54,_0x52098d);_0x1b60d0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x14f1('0x7')](e,emitEvent(event));}}module[_0x14f1('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index badf7c8..e60b2e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c09=['utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','define','utf8mb4'];(function(_0x1282a0,_0x58b2f9){var _0x18af0c=function(_0x5ac73f){while(--_0x5ac73f){_0x1282a0['push'](_0x1282a0['shift']());}};_0x18af0c(++_0x58b2f9);}(_0x6c09,0x1ae));var _0x96c0=function(_0x29c8fe,_0x2210bb){_0x29c8fe=_0x29c8fe-0x0;var _0x44a2bc=_0x6c09[_0x29c8fe];return _0x44a2bc;};'use strict';var _=require(_0x96c0('0x0'));var util=require('util');var logger=require(_0x96c0('0x1'))(_0x96c0('0x2'));var moment=require(_0x96c0('0x3'));var BPromise=require(_0x96c0('0x4'));var rp=require(_0x96c0('0x5'));var fs=require('fs');var path=require(_0x96c0('0x6'));var rimraf=require(_0x96c0('0x7'));var config=require('../../config/environment');var attributes=require(_0x96c0('0x8'));module[_0x96c0('0x9')]=function(_0x3db888,_0x4a930c){return _0x3db888[_0x96c0('0xa')]('ChatInternalMessage',attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x96c0('0xb'),'collate':_0x96c0('0xc')});};
\ No newline at end of file
+var _0xf79f=['chat_internal_messages','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','../../config/environment','exports','define','ChatInternalMessage'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xf79f,0x1ba));var _0xff79=function(_0x2c6805,_0x46f0c5){_0x2c6805=_0x2c6805-0x0;var _0x523793=_0xf79f[_0x2c6805];return _0x523793;};'use strict';var _=require(_0xff79('0x0'));var util=require(_0xff79('0x1'));var logger=require(_0xff79('0x2'))('api');var moment=require(_0xff79('0x3'));var BPromise=require(_0xff79('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xff79('0x5'));var attributes=require('./chatInternalMessage.attributes');module[_0xff79('0x6')]=function(_0x2a9493,_0x210a57){return _0x2a9493[_0xff79('0x7')](_0xff79('0x8'),attributes,{'tableName':_0xff79('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xff79('0xa')});};
\ No newline at end of file
index b04368c..6fc7b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ec0=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0xa3b39f,_0x1f6984){var _0x2337b7=function(_0x5de041){while(--_0x5de041){_0xa3b39f['push'](_0xa3b39f['shift']());}};_0x2337b7(++_0x1f6984);}(_0x7ec0,0x129));var _0x07ec=function(_0x13da0b,_0x31c1c6){_0x13da0b=_0x13da0b-0x0;var _0x5c9ea9=_0x7ec0[_0x13da0b];return _0x5c9ea9;};'use strict';var _=require(_0x07ec('0x0'));var util=require(_0x07ec('0x1'));var moment=require(_0x07ec('0x2'));var BPromise=require('bluebird');var rs=require(_0x07ec('0x3'));var fs=require('fs');var Redis=require(_0x07ec('0x4'));var db=require(_0x07ec('0x5'))['db'];var utils=require(_0x07ec('0x6'));var logger=require(_0x07ec('0x7'))('rpc');var config=require(_0x07ec('0x8'));var jayson=require(_0x07ec('0x9'));var client=jayson['client'][_0x07ec('0xa')]({'port':0x232a});config[_0x07ec('0xb')]=_[_0x07ec('0xc')](config[_0x07ec('0xb')],{'host':_0x07ec('0xd'),'port':0x18eb});var socket=require(_0x07ec('0xe'))(new Redis(config['redis']));require(_0x07ec('0xf'))[_0x07ec('0x10')](socket);function respondWithRpcPromise(_0x238ae3,_0x41b76e,_0x2054c9){return new BPromise(function(_0x26157d,_0x30ba35){return client[_0x07ec('0x11')](_0x238ae3,_0x2054c9)[_0x07ec('0x12')](function(_0x1b1416){logger[_0x07ec('0x13')](_0x07ec('0x14'),_0x41b76e,_0x07ec('0x15'));logger[_0x07ec('0x16')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x41b76e,_0x07ec('0x15'),JSON[_0x07ec('0x17')](_0x1b1416));if(_0x1b1416['error']){if(_0x1b1416[_0x07ec('0x18')][_0x07ec('0x19')]===0x1f4){logger[_0x07ec('0x18')](_0x07ec('0x14'),_0x41b76e,_0x1b1416[_0x07ec('0x18')]['message']);return _0x30ba35(_0x1b1416[_0x07ec('0x18')]['message']);}logger[_0x07ec('0x18')](_0x07ec('0x14'),_0x41b76e,_0x1b1416['error'][_0x07ec('0x1a')]);return _0x26157d(_0x1b1416[_0x07ec('0x18')]['message']);}else{logger['info'](_0x07ec('0x14'),_0x41b76e,_0x07ec('0x15'));_0x26157d(_0x1b1416['result'][_0x07ec('0x1a')]);}})['catch'](function(_0x2a9eeb){logger[_0x07ec('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x41b76e,_0x2a9eeb);_0x30ba35(_0x2a9eeb);});});}
\ No newline at end of file
+var _0x5d19=['./chatInternalMessage.socket','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter'];(function(_0xc0bcd8,_0x5ee85b){var _0x2da3cd=function(_0x2d6d60){while(--_0x2d6d60){_0xc0bcd8['push'](_0xc0bcd8['shift']());}};_0x2da3cd(++_0x5ee85b);}(_0x5d19,0x1a9));var _0x95d1=function(_0x3124f8,_0x1a8b23){_0x3124f8=_0x3124f8-0x0;var _0x5bab5f=_0x5d19[_0x3124f8];return _0x5bab5f;};'use strict';var _=require(_0x95d1('0x0'));var util=require(_0x95d1('0x1'));var moment=require(_0x95d1('0x2'));var BPromise=require(_0x95d1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x95d1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x95d1('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x95d1('0x6'));var client=jayson[_0x95d1('0x7')][_0x95d1('0x8')]({'port':0x232a});config[_0x95d1('0x9')]=_['defaults'](config[_0x95d1('0x9')],{'host':_0x95d1('0xa'),'port':0x18eb});var socket=require(_0x95d1('0xb'))(new Redis(config['redis']));require(_0x95d1('0xc'))['register'](socket);function respondWithRpcPromise(_0x201a0f,_0x4a8585,_0x17a089){return new BPromise(function(_0x1d8fca,_0x4a2525){return client['request'](_0x201a0f,_0x17a089)[_0x95d1('0xd')](function(_0x44acf8){logger[_0x95d1('0xe')](_0x95d1('0xf'),_0x4a8585,_0x95d1('0x10'));logger[_0x95d1('0x11')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x4a8585,'request\x20sent',JSON[_0x95d1('0x12')](_0x44acf8));if(_0x44acf8['error']){if(_0x44acf8[_0x95d1('0x13')][_0x95d1('0x14')]===0x1f4){logger[_0x95d1('0x13')](_0x95d1('0xf'),_0x4a8585,_0x44acf8[_0x95d1('0x13')][_0x95d1('0x15')]);return _0x4a2525(_0x44acf8[_0x95d1('0x13')][_0x95d1('0x15')]);}logger[_0x95d1('0x13')]('ChatInternalMessage,\x20%s,\x20%s',_0x4a8585,_0x44acf8['error'][_0x95d1('0x15')]);return _0x1d8fca(_0x44acf8['error']['message']);}else{logger[_0x95d1('0xe')](_0x95d1('0xf'),_0x4a8585,_0x95d1('0x10'));_0x1d8fca(_0x44acf8[_0x95d1('0x16')]['message']);}})['catch'](function(_0x16c0a7){logger[_0x95d1('0x13')](_0x95d1('0xf'),_0x4a8585,_0x16c0a7);_0x4a2525(_0x16c0a7);});});}
\ No newline at end of file
index 2100d9f..9240db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ddb=['chatInternalMessage:','./chatInternalMessage.events','save','remove','update','emit','removeListener'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0x0ddb,0xb7));var _0xb0dd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0ddb[_0x321bb2];return _0x9c12ed;};'use strict';var ChatInternalMessageEvents=require(_0xb0dd('0x0'));var events=[_0xb0dd('0x1'),_0xb0dd('0x2'),_0xb0dd('0x3')];function createListener(_0x2852e1,_0x20b7aa){return function(_0x1706de){_0x20b7aa[_0xb0dd('0x4')](_0x2852e1,_0x1706de);};}function removeListener(_0x3bb346,_0x147a1d){return function(){ChatInternalMessageEvents[_0xb0dd('0x5')](_0x3bb346,_0x147a1d);};}exports['register']=function(_0x1977b3){for(var _0x1112ad=0x0,_0x15a80b=events['length'];_0x1112ad<_0x15a80b;_0x1112ad++){var _0x4bf742=events[_0x1112ad];var _0x5100c7=createListener(_0xb0dd('0x6')+_0x4bf742,_0x1977b3);ChatInternalMessageEvents['on'](_0x4bf742,_0x5100c7);}};
\ No newline at end of file
+var _0x69cd=['remove','emit','removeListener','register','length','./chatInternalMessage.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x69cd,0x1cc));var _0xd69c=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x69cd[_0x4a9fb1];return _0x348672;};'use strict';var ChatInternalMessageEvents=require(_0xd69c('0x0'));var events=[_0xd69c('0x1'),_0xd69c('0x2'),'update'];function createListener(_0x5ca430,_0x404708){return function(_0x1bcff1){_0x404708[_0xd69c('0x3')](_0x5ca430,_0x1bcff1);};}function removeListener(_0x31eaa8,_0x3e7a69){return function(){ChatInternalMessageEvents[_0xd69c('0x4')](_0x31eaa8,_0x3e7a69);};}exports[_0xd69c('0x5')]=function(_0x5dbebd){for(var _0x497ee3=0x0,_0xac66f1=events[_0xd69c('0x6')];_0x497ee3<_0xac66f1;_0x497ee3++){var _0x191cd2=events[_0x497ee3];var _0xffbae0=createListener('chatInternalMessage:'+_0x191cd2,_0x5dbebd);ChatInternalMessageEvents['on'](_0x191cd2,_0xffbae0);}};
\ No newline at end of file
index 3a4c273..55c6b6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2dc=['destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','/:id','show','post','put','update','delete'];(function(_0x23678e,_0x450fea){var _0x49b025=function(_0x4bba73){while(--_0x4bba73){_0x23678e['push'](_0x23678e['shift']());}};_0x49b025(++_0x450fea);}(_0xd2dc,0x18e));var _0xcd2d=function(_0xcef86f,_0x24dc09){_0xcef86f=_0xcef86f-0x0;var _0xd61e3=_0xd2dc[_0xcef86f];return _0xd61e3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcd2d('0x0'));var timeout=require(_0xcd2d('0x1'));var express=require(_0xcd2d('0x2'));var router=express['Router']();var fs_extra=require(_0xcd2d('0x3'));var auth=require(_0xcd2d('0x4'));var interaction=require(_0xcd2d('0x5'));var config=require(_0xcd2d('0x6'));var controller=require(_0xcd2d('0x7'));router[_0xcd2d('0x8')]('/',auth[_0xcd2d('0x9')](),controller[_0xcd2d('0xa')]);router[_0xcd2d('0x8')](_0xcd2d('0xb'),auth['isAuthenticated'](),controller[_0xcd2d('0xc')]);router[_0xcd2d('0x8')](_0xcd2d('0xd'),auth[_0xcd2d('0x9')](),controller['getUsers']);router[_0xcd2d('0x8')](_0xcd2d('0xe'),auth[_0xcd2d('0x9')](),controller[_0xcd2d('0xf')]);router[_0xcd2d('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xcd2d('0x11')](_0xcd2d('0xe'),controller[_0xcd2d('0x12')]);router[_0xcd2d('0x13')](_0xcd2d('0xe'),auth[_0xcd2d('0x9')](),controller[_0xcd2d('0x14')]);module[_0xcd2d('0x15')]=router;
\ No newline at end of file
+var _0xfad6=['../../config/environment','get','isAuthenticated','index','/describe','describe','/users','/:id','post','create','update','destroy','exports','multer','util','path','express','../../components/auth/service'];(function(_0x26b6f3,_0x44f01c){var _0xcbdfe0=function(_0x53f7ce){while(--_0x53f7ce){_0x26b6f3['push'](_0x26b6f3['shift']());}};_0xcbdfe0(++_0x44f01c);}(_0xfad6,0xd3));var _0x6fad=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfad6[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x6fad('0x0'));var util=require(_0x6fad('0x1'));var path=require(_0x6fad('0x2'));var timeout=require('connect-timeout');var express=require(_0x6fad('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6fad('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6fad('0x5'));var controller=require('./chatInternalMessage.controller');router[_0x6fad('0x6')]('/',auth[_0x6fad('0x7')](),controller[_0x6fad('0x8')]);router[_0x6fad('0x6')](_0x6fad('0x9'),auth[_0x6fad('0x7')](),controller[_0x6fad('0xa')]);router[_0x6fad('0x6')](_0x6fad('0xb'),auth[_0x6fad('0x7')](),controller['getUsers']);router['get'](_0x6fad('0xc'),auth[_0x6fad('0x7')](),controller['show']);router[_0x6fad('0xd')]('/',auth[_0x6fad('0x7')](),controller[_0x6fad('0xe')]);router['put'](_0x6fad('0xc'),controller[_0x6fad('0xf')]);router['delete'](_0x6fad('0xc'),auth['isAuthenticated'](),controller[_0x6fad('0x10')]);module[_0x6fad('0x11')]=router;
\ No newline at end of file
index d194fad..3f58f00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e1=['BOOLEAN','out','DATE','sequelize','exports','medium'];(function(_0x4e79d6,_0x152a4f){var _0x530183=function(_0x591ef0){while(--_0x591ef0){_0x4e79d6['push'](_0x4e79d6['shift']());}};_0x530183(++_0x152a4f);}(_0x83e1,0x1ad));var _0x183e=function(_0x145eb2,_0x396cab){_0x145eb2=_0x145eb2-0x0;var _0x447d25=_0x83e1[_0x145eb2];return _0x447d25;};'use strict';var Sequelize=require(_0x183e('0x0'));module[_0x183e('0x1')]={'body':{'type':Sequelize['TEXT'](_0x183e('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x183e('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x183e('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x183e('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x23a3=['out','DATE','STRING','TEXT','medium','BOOLEAN','ENUM'];(function(_0x41b078,_0xbc60fc){var _0x3eaaec=function(_0x43b976){while(--_0x43b976){_0x41b078['push'](_0x41b078['shift']());}};_0x3eaaec(++_0xbc60fc);}(_0x23a3,0x131));var _0x323a=function(_0x2bbd6c,_0x4430c0){_0x2bbd6c=_0x2bbd6c-0x0;var _0x22d0a9=_0x23a3[_0x2bbd6c];return _0x22d0a9;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x323a('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x323a('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x323a('0x2')]('in',_0x323a('0x3')),'defaultValue':_0x323a('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x323a('0x4')]},'providerName':{'type':Sequelize[_0x323a('0x5')]},'providerResponse':{'type':Sequelize[_0x323a('0x6')]}};
\ No newline at end of file
index 9fc18e8..16eb349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd030=['isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','SELECT','contact','internal','rejectmessage','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','ChatMessage,\x20%s,\x20%s','message','result','status','end','json','limit','undefined','offset','count','set','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','ChatMessage','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','chat-interactions','chat','read','readAt','format','UserId','user','agent','get','ChatInteraction','ChatInteractionId'];(function(_0xe78ebd,_0x3a52e5){var _0x8cb3e5=function(_0x4dc01f){while(--_0x4dc01f){_0xe78ebd['push'](_0xe78ebd['shift']());}};_0x8cb3e5(++_0x3a52e5);}(_0xd030,0x1a7));var _0x0d03=function(_0x3e49dc,_0x44186a){_0x3e49dc=_0x3e49dc-0x0;var _0x3853ab=_0xd030[_0x3e49dc];return _0x3853ab;};'use strict';var emlformat=require(_0x0d03('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0d03('0x1'));var rp=require(_0x0d03('0x2'));var moment=require(_0x0d03('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0d03('0x4'));var util=require(_0x0d03('0x5'));var path=require('path');var sox=require(_0x0d03('0x6'));var csv=require('to-csv');var ejs=require(_0x0d03('0x7'));var fs=require('fs');var fs_extra=require(_0x0d03('0x8'));var _=require(_0x0d03('0x9'));var squel=require('squel');var crypto=require(_0x0d03('0xa'));var jsforce=require(_0x0d03('0xb'));var deskjs=require(_0x0d03('0xc'));var toCsv=require(_0x0d03('0xd'));var querystring=require(_0x0d03('0xe'));var Papa=require(_0x0d03('0xf'));var Redis=require(_0x0d03('0x10'));var authService=require(_0x0d03('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0d03('0x12'));var hardwareService=require(_0x0d03('0x13'));var logger=require('../../config/logger')(_0x0d03('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0d03('0x15'));var db=require(_0x0d03('0x16'))['db'];config[_0x0d03('0x17')]=_['defaults'](config[_0x0d03('0x17')],{'host':_0x0d03('0x18'),'port':0x18eb});var socket=require(_0x0d03('0x19'))(new Redis(config['redis']));require(_0x0d03('0x1a'))[_0x0d03('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0d03('0x1c')][_0x0d03('0x1d')]({'port':0x232c});var client9002=jayson[_0x0d03('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1502fb,_0x1a934f,_0xddbd12,_0x109130){return new BPromise(function(_0x3277e4,_0xb812f5){var _0x1fa0d0=_0x109130||client;return _0x1fa0d0[_0x0d03('0x1e')](_0x1502fb,_0xddbd12)['then'](function(_0x248a0f){logger[_0x0d03('0x1f')]('ChatMessage,\x20%s,\x20%s',_0x1a934f,_0x0d03('0x20'));logger[_0x0d03('0x21')](_0x0d03('0x22'),_0x1a934f,_0x0d03('0x20'),JSON[_0x0d03('0x23')](_0x248a0f));if(_0x248a0f[_0x0d03('0x24')]){if(_0x248a0f['error']['code']===0x1f4){logger[_0x0d03('0x24')](_0x0d03('0x25'),_0x1a934f,_0x248a0f[_0x0d03('0x24')][_0x0d03('0x26')]);return _0xb812f5(_0x248a0f['error'][_0x0d03('0x26')]);}logger['error'](_0x0d03('0x25'),_0x1a934f,_0x248a0f[_0x0d03('0x24')][_0x0d03('0x26')]);return _0x3277e4(_0x248a0f[_0x0d03('0x24')]['message']);}else{logger[_0x0d03('0x1f')](_0x0d03('0x25'),_0x1a934f,_0x0d03('0x20'));_0x3277e4(_0x248a0f[_0x0d03('0x27')][_0x0d03('0x26')]);}})['catch'](function(_0x1b81e1){logger[_0x0d03('0x24')](_0x0d03('0x25'),_0x1a934f,_0x1b81e1);_0xb812f5(_0x1b81e1);});});}function respondWithStatusCode(_0x4e14eb,_0x33cb13){_0x33cb13=_0x33cb13||0xcc;return function(_0x25efd0){if(_0x25efd0){return _0x4e14eb['sendStatus'](_0x33cb13);}return _0x4e14eb[_0x0d03('0x28')](_0x33cb13)[_0x0d03('0x29')]();};}function respondWithResult(_0x144851,_0x283f4f){_0x283f4f=_0x283f4f||0xc8;return function(_0x382eb1){if(_0x382eb1){return _0x144851[_0x0d03('0x28')](_0x283f4f)[_0x0d03('0x2a')](_0x382eb1);}};}function respondWithFilteredResult(_0x277016,_0x4c6e33){return function(_0x179bf6){if(_0x179bf6){var _0x11fd91=typeof _0x4c6e33['offset']==='undefined'&&typeof _0x4c6e33[_0x0d03('0x2b')]===_0x0d03('0x2c');var _0x1944ad=_0x179bf6['count'];var _0x74d6ab=_0x11fd91?0x0:_0x4c6e33[_0x0d03('0x2d')];var _0x4df251=_0x11fd91?_0x179bf6[_0x0d03('0x2e')]:_0x4c6e33['offset']+_0x4c6e33[_0x0d03('0x2b')];var _0x30f76e;if(_0x4df251>=_0x1944ad){_0x4df251=_0x1944ad;_0x30f76e=0xc8;}else{_0x30f76e=0xce;}_0x277016[_0x0d03('0x28')](_0x30f76e);return _0x277016[_0x0d03('0x2f')]('Content-Range',_0x74d6ab+'-'+_0x4df251+'/'+_0x1944ad)[_0x0d03('0x2a')](_0x179bf6);}return null;};}function patchUpdates(_0x320041){return function(_0x3c7f42){try{jsonpatch[_0x0d03('0x30')](_0x3c7f42,_0x320041,!![]);}catch(_0x38557c){return BPromise[_0x0d03('0x31')](_0x38557c);}return _0x3c7f42[_0x0d03('0x32')]();};}function saveUpdates(_0x2159c9,_0x3be44d){return function(_0x24aa3c){if(_0x24aa3c){return _0x24aa3c[_0x0d03('0x33')](_0x2159c9)[_0x0d03('0x34')](function(_0x20ce06){return _0x20ce06;});}return null;};}function removeEntity(_0x3a4f0a,_0x3e08e3){return function(_0x1fe937){if(_0x1fe937){return _0x1fe937[_0x0d03('0x35')]()['then'](function(){_0x3a4f0a[_0x0d03('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4abd3b,_0x5f390e){return function(_0x3870e9){if(!_0x3870e9){_0x4abd3b[_0x0d03('0x36')](0x194);}return _0x3870e9;};}function handleError(_0xc03a40,_0x598d61){_0x598d61=_0x598d61||0x1f4;return function(_0x40f34d){logger[_0x0d03('0x24')](_0x40f34d[_0x0d03('0x37')]);if(_0x40f34d[_0x0d03('0x38')]){delete _0x40f34d['name'];}_0xc03a40['status'](_0x598d61)[_0x0d03('0x39')](_0x40f34d);};}exports[_0x0d03('0x3a')]=function(_0x29006e,_0x3a18a6){var _0x88fd45={},_0x2004e0={},_0x2ffdec={'count':0x0,'rows':[]};var _0x43337a=_['map'](db[_0x0d03('0x3b')][_0x0d03('0x3c')],function(_0x3d61e8){return{'name':_0x3d61e8[_0x0d03('0x3d')],'type':_0x3d61e8['type'][_0x0d03('0x3e')]};});_0x2004e0[_0x0d03('0x3f')]=_[_0x0d03('0x40')](_0x43337a,_0x0d03('0x38'));_0x2004e0[_0x0d03('0x41')]=_[_0x0d03('0x42')](_0x29006e['query']);_0x2004e0[_0x0d03('0x43')]=_[_0x0d03('0x44')](_0x2004e0[_0x0d03('0x3f')],_0x2004e0[_0x0d03('0x41')]);_0x88fd45[_0x0d03('0x45')]=_[_0x0d03('0x44')](_0x2004e0[_0x0d03('0x3f')],qs[_0x0d03('0x46')](_0x29006e['query'][_0x0d03('0x46')]));_0x88fd45[_0x0d03('0x45')]=_0x88fd45[_0x0d03('0x45')][_0x0d03('0x47')]?_0x88fd45[_0x0d03('0x45')]:_0x2004e0[_0x0d03('0x3f')];if(!_0x29006e['query']['hasOwnProperty']('nolimit')){_0x88fd45[_0x0d03('0x2b')]=qs[_0x0d03('0x2b')](_0x29006e[_0x0d03('0x41')]['limit']);_0x88fd45['offset']=qs[_0x0d03('0x2d')](_0x29006e[_0x0d03('0x41')][_0x0d03('0x2d')]);}_0x88fd45[_0x0d03('0x48')]=qs[_0x0d03('0x49')](_0x29006e['query'][_0x0d03('0x49')]);_0x88fd45['where']=qs[_0x0d03('0x43')](_['pick'](_0x29006e[_0x0d03('0x41')],_0x2004e0[_0x0d03('0x43')]),_0x43337a);if(_0x29006e[_0x0d03('0x41')][_0x0d03('0x4a')]){_0x88fd45[_0x0d03('0x4b')]=_['merge'](_0x88fd45[_0x0d03('0x4b')],{'$or':_[_0x0d03('0x40')](_0x43337a,function(_0x538098){if(_0x538098['type']!==_0x0d03('0x4c')){var _0xbfc66={};_0xbfc66[_0x538098['name']]={'$like':'%'+_0x29006e['query'][_0x0d03('0x4a')]+'%'};return _0xbfc66;}})});}_0x88fd45=_[_0x0d03('0x4d')]({},_0x88fd45,_0x29006e[_0x0d03('0x4e')]);var _0x3ea040={'where':_0x88fd45['where']};return db[_0x0d03('0x3b')][_0x0d03('0x2e')](_0x3ea040)[_0x0d03('0x34')](function(_0x28f28e){_0x2ffdec[_0x0d03('0x2e')]=_0x28f28e;if(_0x29006e[_0x0d03('0x41')][_0x0d03('0x4f')]){_0x88fd45[_0x0d03('0x50')]=[{'all':!![]}];}return db[_0x0d03('0x3b')][_0x0d03('0x51')](_0x88fd45);})[_0x0d03('0x34')](function(_0x39619e){_0x2ffdec[_0x0d03('0x52')]=_0x39619e;return _0x2ffdec;})[_0x0d03('0x34')](respondWithFilteredResult(_0x3a18a6,_0x88fd45))[_0x0d03('0x53')](handleError(_0x3a18a6,null));};exports[_0x0d03('0x54')]=function(_0x1e37a6,_0xc3ec66){var _0x31f996={'raw':!![],'where':{'id':_0x1e37a6['params']['id']}},_0x587761={};_0x587761[_0x0d03('0x3f')]=_[_0x0d03('0x42')](db[_0x0d03('0x3b')][_0x0d03('0x3c')]);_0x587761[_0x0d03('0x41')]=_[_0x0d03('0x42')](_0x1e37a6[_0x0d03('0x41')]);_0x587761[_0x0d03('0x43')]=_[_0x0d03('0x44')](_0x587761[_0x0d03('0x3f')],_0x587761[_0x0d03('0x41')]);_0x31f996['attributes']=_[_0x0d03('0x44')](_0x587761[_0x0d03('0x3f')],qs[_0x0d03('0x46')](_0x1e37a6[_0x0d03('0x41')][_0x0d03('0x46')]));_0x31f996[_0x0d03('0x45')]=_0x31f996[_0x0d03('0x45')][_0x0d03('0x47')]?_0x31f996['attributes']:_0x587761[_0x0d03('0x3f')];if(_0x1e37a6['query']['includeAll']){_0x31f996['include']=[{'all':!![]}];}_0x31f996=_[_0x0d03('0x4d')]({},_0x31f996,_0x1e37a6[_0x0d03('0x4e')]);return db[_0x0d03('0x3b')][_0x0d03('0x55')](_0x31f996)[_0x0d03('0x34')](handleEntityNotFound(_0xc3ec66,null))[_0x0d03('0x34')](respondWithResult(_0xc3ec66,null))['catch'](handleError(_0xc3ec66,null));};exports[_0x0d03('0x56')]=function(_0x166ef5,_0x1184e8){return db[_0x0d03('0x3b')][_0x0d03('0x56')](_0x166ef5[_0x0d03('0x57')],{})[_0x0d03('0x34')](respondWithResult(_0x1184e8,0xc9))[_0x0d03('0x53')](handleError(_0x1184e8,null));};exports[_0x0d03('0x33')]=function(_0x273e98,_0x1e0212){if(_0x273e98[_0x0d03('0x57')]['id']){delete _0x273e98['body']['id'];}return db[_0x0d03('0x3b')][_0x0d03('0x55')]({'where':{'id':_0x273e98[_0x0d03('0x58')]['id']}})[_0x0d03('0x34')](handleEntityNotFound(_0x1e0212,null))['then'](saveUpdates(_0x273e98[_0x0d03('0x57')],null))[_0x0d03('0x34')](respondWithResult(_0x1e0212,null))[_0x0d03('0x53')](handleError(_0x1e0212,null));};exports[_0x0d03('0x35')]=function(_0xbfd3f9,_0x3d36a9){return db[_0x0d03('0x3b')][_0x0d03('0x55')]({'where':{'id':_0xbfd3f9[_0x0d03('0x58')]['id']}})[_0x0d03('0x34')](handleEntityNotFound(_0x3d36a9,null))[_0x0d03('0x34')](removeEntity(_0x3d36a9,null))['catch'](handleError(_0x3d36a9,null));};exports[_0x0d03('0x59')]=function(_0x2c6c83,_0x2a88e4){return db[_0x0d03('0x3b')][_0x0d03('0x59')]()['then'](respondWithResult(_0x2a88e4,null))[_0x0d03('0x53')](handleError(_0x2a88e4,null));};var interaction_log=require('../../config/logger')(_0x0d03('0x5a'));exports['accept']=function(_0xcdfc2c,_0x5df7bb,_0x9a2966){var _0x113a93={'agent':{},'channel':_0x0d03('0x5b')};if(_0xcdfc2c[_0x0d03('0x57')]['id']){delete _0xcdfc2c[_0x0d03('0x57')]['id'];}_0xcdfc2c[_0x0d03('0x57')][_0x0d03('0x5c')]=!![];_0xcdfc2c['body'][_0x0d03('0x5d')]=moment()[_0x0d03('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0xcdfc2c['body']['UserId']=_0xcdfc2c['body'][_0x0d03('0x5f')]||_0xcdfc2c[_0x0d03('0x60')]['id'];_0x113a93[_0x0d03('0x61')]['id']=_0xcdfc2c[_0x0d03('0x57')][_0x0d03('0x5f')];return db[_0x0d03('0x3b')][_0x0d03('0x55')]({'where':{'id':_0xcdfc2c[_0x0d03('0x58')]['id'],'UserId':null}})[_0x0d03('0x34')](handleEntityNotFound(_0x5df7bb,null))[_0x0d03('0x34')](saveUpdates(_0xcdfc2c[_0x0d03('0x57')],null))['then'](function(_0x7ca2dc){if(_0x7ca2dc){_0x113a93[_0x0d03('0x26')]=_0x7ca2dc[_0x0d03('0x62')]({'plain':!![]});return db[_0x0d03('0x63')]['find']({'where':{'id':_0x7ca2dc[_0x0d03('0x64')]}});}return null;})[_0x0d03('0x34')](handleEntityNotFound(_0x5df7bb,null))[_0x0d03('0x34')](function(_0x7c05c0){if(_0x7c05c0){return _0x7c05c0[_0x0d03('0x33')]({'UserId':_0xcdfc2c[_0x0d03('0x57')]['UserId'],'read1stAt':_[_0x0d03('0x65')](_0x7c05c0['read1stAt'])?moment()[_0x0d03('0x5e')](_0x0d03('0x66')):undefined});}return null;})['then'](function(_0x25ce91){if(_0x25ce91){_0x113a93[_0x0d03('0x67')]=_0x25ce91['get']({'plain':!![]});interaction_log[_0x0d03('0x1f')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xcdfc2c[_0x0d03('0x60')]['id'],_0xcdfc2c[_0x0d03('0x60')][_0x0d03('0x38')],_0xcdfc2c[_0x0d03('0x60')][_0x0d03('0x68')],_0x113a93['interaction']['id'],_0xcdfc2c[_0x0d03('0x57')]?JSON[_0x0d03('0x23')](_0xcdfc2c['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x0d03('0x69'),_0x113a93);}return null;})[_0x0d03('0x34')](function(_0x5c77fc){var _0x2909b4=_0x0d03('0x6a')+_0x5c77fc[_0x0d03('0x26')][_0x0d03('0x6b')];return db[_0x0d03('0x6c')][_0x0d03('0x41')](_0x2909b4,{'type':db[_0x0d03('0x6d')][_0x0d03('0x6e')]['SELECT'],'raw':!![]})[_0x0d03('0x34')](function(_0x113830){return _0x113830;});})['then'](function(_0xd818b5){if(_0xd818b5){_0x113a93[_0x0d03('0x26')]['contact']=_0xd818b5[0x0];if(!_0xcdfc2c['body'][_0x0d03('0x5f')])return;return db[_0x0d03('0x6f')][_0x0d03('0x55')]({'where':{'id':_0xcdfc2c[_0x0d03('0x57')][_0x0d03('0x5f')],'role':_0x0d03('0x61')},'attributes':['id',_0x0d03('0x38'),_0x0d03('0x70'),_0x0d03('0x71'),'internal'],'raw':!![]});}return null;})[_0x0d03('0x34')](function(_0x1fcf04){if(!_0x1fcf04)return null;_0x113a93[_0x0d03('0x26')][_0x0d03('0x61')]=_0x1fcf04;return _0x113a93;})[_0x0d03('0x34')](function(_0x103f78){if(_0x103f78){if(_0xcdfc2c[_0x0d03('0x57')]['manual']){_0x113a93[_0x0d03('0x26')][_0x0d03('0x72')]=util['format'](_0x0d03('0x73'),_0xcdfc2c[_0x0d03('0x60')]['name']);_0x113a93['message'][_0x0d03('0x74')]=_0x113a93[_0x0d03('0x74')];_0x113a93[_0x0d03('0x26')]['motionChannel']=_0x113a93['channel'];_0x113a93[_0x0d03('0x26')][_0x0d03('0x75')]=_0x0d03('0x76');return respondWithRpcPromise(_0x0d03('0x77'),'EventManager',{'event':_0x0d03('0x78'),'message':_[_0x0d03('0x4d')](_0x113a93[_0x0d03('0x26')],JSON[_0x0d03('0x79')](_0x113a93[_0x0d03('0x67')][_0x0d03('0x7a')]))},client9002)[_0x0d03('0x34')](function(){return _0x113a93;});}return _0x113a93;}return null;})[_0x0d03('0x34')](respondWithResult(_0x5df7bb,null))['catch'](handleError(_0x5df7bb,null));};var interaction_log=require('../../config/logger')(_0x0d03('0x5a'));exports[_0x0d03('0x31')]=function(_0x1d58c2,_0x4138fe,_0x4ed01c){var _0x1c20a8={'agent':{},'channel':_0x0d03('0x5b')};if(_0x1d58c2[_0x0d03('0x57')]['id']){delete _0x1d58c2['body']['id'];}_0x1d58c2[_0x0d03('0x57')][_0x0d03('0x5f')]=_0x1d58c2[_0x0d03('0x57')][_0x0d03('0x5f')]||_0x1d58c2[_0x0d03('0x60')]['id'];_0x1c20a8[_0x0d03('0x61')]['id']=_0x1d58c2[_0x0d03('0x57')]['UserId'];return db[_0x0d03('0x3b')][_0x0d03('0x55')]({'where':{'id':_0x1d58c2[_0x0d03('0x58')]['id'],'UserId':null}})[_0x0d03('0x34')](handleEntityNotFound(_0x4138fe,null))['then'](function(_0x3df250){if(_0x3df250){_0x1c20a8[_0x0d03('0x26')]=_0x3df250[_0x0d03('0x62')]({'plain':!![]});return db[_0x0d03('0x63')][_0x0d03('0x55')]({'where':{'id':_0x3df250[_0x0d03('0x64')]}});}return null;})[_0x0d03('0x34')](handleEntityNotFound(_0x4138fe,null))[_0x0d03('0x34')](function(_0xaf792a){if(_0xaf792a){_0x1c20a8[_0x0d03('0x67')]=_0xaf792a[_0x0d03('0x62')]({'plain':!![]});interaction_log[_0x0d03('0x1f')](_0x0d03('0x7b'),_0x1d58c2[_0x0d03('0x60')]['id'],_0x1d58c2[_0x0d03('0x60')][_0x0d03('0x38')],_0x1d58c2[_0x0d03('0x60')][_0x0d03('0x68')],_0x1c20a8['interaction']['id'],_0x1d58c2[_0x0d03('0x57')]?JSON[_0x0d03('0x23')](_0x1d58c2[_0x0d03('0x57')]):_0x0d03('0x7c'));return respondWithRpcPromise(_0x0d03('0x7d'),_0x0d03('0x7e'),_0x1c20a8);}return null;})['then'](function(_0x9ccf71){var _0x5a4215=_0x0d03('0x6a')+_0x9ccf71['message'][_0x0d03('0x6b')];return db[_0x0d03('0x6c')][_0x0d03('0x41')](_0x5a4215,{'type':db[_0x0d03('0x6d')]['QueryTypes'][_0x0d03('0x7f')],'raw':!![]})['then'](function(_0x586e90){return _0x586e90;});})['then'](function(_0x507048){if(_0x507048){_0x1c20a8[_0x0d03('0x26')][_0x0d03('0x80')]=_0x507048[0x0];if(!_0x1d58c2[_0x0d03('0x57')][_0x0d03('0x5f')])return;return db['User'][_0x0d03('0x55')]({'where':{'id':_0x1d58c2[_0x0d03('0x57')][_0x0d03('0x5f')],'role':_0x0d03('0x61')},'attributes':['id',_0x0d03('0x38'),_0x0d03('0x70'),_0x0d03('0x71'),_0x0d03('0x81')],'raw':!![]});}return null;})['then'](function(_0x5aac53){if(!_0x5aac53)return null;_0x1c20a8[_0x0d03('0x26')]['agent']=_0x5aac53;return _0x1c20a8;})[_0x0d03('0x34')](function(_0x20171d){if(_0x20171d){_0x20171d[_0x0d03('0x26')][_0x0d03('0x72')]=util[_0x0d03('0x5e')](_0x0d03('0x73'),_0x1d58c2[_0x0d03('0x60')]['name']);_0x20171d[_0x0d03('0x26')][_0x0d03('0x74')]=_0x1c20a8[_0x0d03('0x74')];_0x20171d['message']['motionChannel']=_0x1c20a8['channel'];_0x20171d[_0x0d03('0x26')]['event']=_0x0d03('0x31');respondWithRpcPromise(_0x0d03('0x77'),_0x0d03('0x77'),{'event':_0x0d03('0x82'),'message':_['merge'](_0x1c20a8[_0x0d03('0x26')],JSON[_0x0d03('0x79')](_0x1c20a8[_0x0d03('0x67')][_0x0d03('0x7a')]))},client9002);return _0x1c20a8;}return null;})[_0x0d03('0x34')](respondWithResult(_0x4138fe,null))[_0x0d03('0x53')](handleError(_0x4138fe,null));};
\ No newline at end of file
+var _0xd7ed=['include','rows','params','includeAll','create','body','update','destroy','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','find','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','manual','interface','SIP/%s','channel','EventManager','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','User','fullname','motionChannel','rejectmessage','parse','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','info','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','catch','sendStatus','offset','limit','undefined','count','set','json','apply','reject','save','end','stack','name','status','send','map','ChatMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options'];(function(_0x5efbe5,_0x38471e){var _0x52956d=function(_0x2e7bc0){while(--_0x2e7bc0){_0x5efbe5['push'](_0x5efbe5['shift']());}};_0x52956d(++_0x38471e);}(_0xd7ed,0xb4));var _0xdd7e=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0xd7ed[_0x211632];return _0x5a1da1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdd7e('0x0'));var rp=require(_0xdd7e('0x1'));var moment=require(_0xdd7e('0x2'));var BPromise=require(_0xdd7e('0x3'));var Mustache=require(_0xdd7e('0x4'));var util=require(_0xdd7e('0x5'));var path=require(_0xdd7e('0x6'));var sox=require(_0xdd7e('0x7'));var csv=require(_0xdd7e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd7e('0x9'));var squel=require(_0xdd7e('0xa'));var crypto=require(_0xdd7e('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdd7e('0xc'));var toCsv=require(_0xdd7e('0x8'));var querystring=require(_0xdd7e('0xd'));var Papa=require('papaparse');var Redis=require(_0xdd7e('0xe'));var authService=require(_0xdd7e('0xf'));var qs=require(_0xdd7e('0x10'));var as=require(_0xdd7e('0x11'));var hardwareService=require(_0xdd7e('0x12'));var logger=require(_0xdd7e('0x13'))('api');var utils=require(_0xdd7e('0x14'));var config=require(_0xdd7e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdd7e('0x16'))['db'];config[_0xdd7e('0x17')]=_[_0xdd7e('0x18')](config[_0xdd7e('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xdd7e('0x19'))(new Redis(config[_0xdd7e('0x17')]));require(_0xdd7e('0x1a'))[_0xdd7e('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0xdd7e('0x1c')][_0xdd7e('0x1d')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1989e9,_0x4ee09a,_0x31e940,_0x20c94b){return new BPromise(function(_0x16b0ff,_0x50d78a){var _0x21ad64=_0x20c94b||client;return _0x21ad64[_0xdd7e('0x1e')](_0x1989e9,_0x31e940)[_0xdd7e('0x1f')](function(_0xc79f15){logger[_0xdd7e('0x20')]('ChatMessage,\x20%s,\x20%s',_0x4ee09a,_0xdd7e('0x21'));logger['debug'](_0xdd7e('0x22'),_0x4ee09a,'request\x20sent',JSON[_0xdd7e('0x23')](_0xc79f15));if(_0xc79f15[_0xdd7e('0x24')]){if(_0xc79f15[_0xdd7e('0x24')][_0xdd7e('0x25')]===0x1f4){logger[_0xdd7e('0x24')](_0xdd7e('0x26'),_0x4ee09a,_0xc79f15[_0xdd7e('0x24')][_0xdd7e('0x27')]);return _0x50d78a(_0xc79f15['error'][_0xdd7e('0x27')]);}logger['error'](_0xdd7e('0x26'),_0x4ee09a,_0xc79f15[_0xdd7e('0x24')][_0xdd7e('0x27')]);return _0x16b0ff(_0xc79f15['error'][_0xdd7e('0x27')]);}else{logger['info'](_0xdd7e('0x26'),_0x4ee09a,_0xdd7e('0x21'));_0x16b0ff(_0xc79f15[_0xdd7e('0x28')][_0xdd7e('0x27')]);}})[_0xdd7e('0x29')](function(_0x747017){logger[_0xdd7e('0x24')](_0xdd7e('0x26'),_0x4ee09a,_0x747017);_0x50d78a(_0x747017);});});}function respondWithStatusCode(_0x35102c,_0x42f2bd){_0x42f2bd=_0x42f2bd||0xcc;return function(_0x409dc5){if(_0x409dc5){return _0x35102c[_0xdd7e('0x2a')](_0x42f2bd);}return _0x35102c['status'](_0x42f2bd)['end']();};}function respondWithResult(_0x38ca13,_0x5b4869){_0x5b4869=_0x5b4869||0xc8;return function(_0x427f6e){if(_0x427f6e){return _0x38ca13['status'](_0x5b4869)['json'](_0x427f6e);}};}function respondWithFilteredResult(_0x41dad6,_0x18d3d3){return function(_0x59abb5){if(_0x59abb5){var _0x576ca0=typeof _0x18d3d3[_0xdd7e('0x2b')]==='undefined'&&typeof _0x18d3d3[_0xdd7e('0x2c')]===_0xdd7e('0x2d');var _0x50a0e2=_0x59abb5[_0xdd7e('0x2e')];var _0x5a7657=_0x576ca0?0x0:_0x18d3d3['offset'];var _0x3aeb77=_0x576ca0?_0x59abb5['count']:_0x18d3d3[_0xdd7e('0x2b')]+_0x18d3d3['limit'];var _0x3dab41;if(_0x3aeb77>=_0x50a0e2){_0x3aeb77=_0x50a0e2;_0x3dab41=0xc8;}else{_0x3dab41=0xce;}_0x41dad6['status'](_0x3dab41);return _0x41dad6[_0xdd7e('0x2f')]('Content-Range',_0x5a7657+'-'+_0x3aeb77+'/'+_0x50a0e2)[_0xdd7e('0x30')](_0x59abb5);}return null;};}function patchUpdates(_0x5f54cb){return function(_0x1c1713){try{jsonpatch[_0xdd7e('0x31')](_0x1c1713,_0x5f54cb,!![]);}catch(_0x1ad0ec){return BPromise[_0xdd7e('0x32')](_0x1ad0ec);}return _0x1c1713[_0xdd7e('0x33')]();};}function saveUpdates(_0x214ce6,_0x4619ea){return function(_0x2e71f6){if(_0x2e71f6){return _0x2e71f6['update'](_0x214ce6)['then'](function(_0x2c12a2){return _0x2c12a2;});}return null;};}function removeEntity(_0x5c79ee,_0x53cdd3){return function(_0x2cecb4){if(_0x2cecb4){return _0x2cecb4['destroy']()['then'](function(){_0x5c79ee['status'](0xcc)[_0xdd7e('0x34')]();});}};}function handleEntityNotFound(_0x950545,_0x5b8dff){return function(_0xb85d9f){if(!_0xb85d9f){_0x950545[_0xdd7e('0x2a')](0x194);}return _0xb85d9f;};}function handleError(_0x1da8f2,_0x23f1e6){_0x23f1e6=_0x23f1e6||0x1f4;return function(_0x58070c){logger[_0xdd7e('0x24')](_0x58070c[_0xdd7e('0x35')]);if(_0x58070c[_0xdd7e('0x36')]){delete _0x58070c[_0xdd7e('0x36')];}_0x1da8f2[_0xdd7e('0x37')](_0x23f1e6)[_0xdd7e('0x38')](_0x58070c);};}exports['index']=function(_0x8feb11,_0x2a1b53){var _0x2f7fdd={},_0x160eec={},_0x621d39={'count':0x0,'rows':[]};var _0x2d8172=_[_0xdd7e('0x39')](db[_0xdd7e('0x3a')][_0xdd7e('0x3b')],function(_0x32cc00){return{'name':_0x32cc00[_0xdd7e('0x3c')],'type':_0x32cc00[_0xdd7e('0x3d')][_0xdd7e('0x3e')]};});_0x160eec[_0xdd7e('0x3f')]=_[_0xdd7e('0x39')](_0x2d8172,'name');_0x160eec['query']=_[_0xdd7e('0x40')](_0x8feb11[_0xdd7e('0x41')]);_0x160eec[_0xdd7e('0x42')]=_[_0xdd7e('0x43')](_0x160eec[_0xdd7e('0x3f')],_0x160eec[_0xdd7e('0x41')]);_0x2f7fdd[_0xdd7e('0x44')]=_[_0xdd7e('0x43')](_0x160eec['model'],qs[_0xdd7e('0x45')](_0x8feb11[_0xdd7e('0x41')]['fields']));_0x2f7fdd['attributes']=_0x2f7fdd[_0xdd7e('0x44')]['length']?_0x2f7fdd[_0xdd7e('0x44')]:_0x160eec[_0xdd7e('0x3f')];if(!_0x8feb11[_0xdd7e('0x41')][_0xdd7e('0x46')](_0xdd7e('0x47'))){_0x2f7fdd[_0xdd7e('0x2c')]=qs[_0xdd7e('0x2c')](_0x8feb11['query'][_0xdd7e('0x2c')]);_0x2f7fdd[_0xdd7e('0x2b')]=qs[_0xdd7e('0x2b')](_0x8feb11[_0xdd7e('0x41')][_0xdd7e('0x2b')]);}_0x2f7fdd[_0xdd7e('0x48')]=qs[_0xdd7e('0x49')](_0x8feb11[_0xdd7e('0x41')][_0xdd7e('0x49')]);_0x2f7fdd['where']=qs[_0xdd7e('0x42')](_[_0xdd7e('0x4a')](_0x8feb11[_0xdd7e('0x41')],_0x160eec[_0xdd7e('0x42')]),_0x2d8172);if(_0x8feb11['query'][_0xdd7e('0x4b')]){_0x2f7fdd[_0xdd7e('0x4c')]=_[_0xdd7e('0x4d')](_0x2f7fdd[_0xdd7e('0x4c')],{'$or':_[_0xdd7e('0x39')](_0x2d8172,function(_0x449ef4){if(_0x449ef4[_0xdd7e('0x3d')]!==_0xdd7e('0x4e')){var _0x1c0e88={};_0x1c0e88[_0x449ef4[_0xdd7e('0x36')]]={'$like':'%'+_0x8feb11['query'][_0xdd7e('0x4b')]+'%'};return _0x1c0e88;}})});}_0x2f7fdd=_[_0xdd7e('0x4d')]({},_0x2f7fdd,_0x8feb11[_0xdd7e('0x4f')]);var _0x6ba4f6={'where':_0x2f7fdd['where']};return db[_0xdd7e('0x3a')][_0xdd7e('0x2e')](_0x6ba4f6)[_0xdd7e('0x1f')](function(_0x196624){_0x621d39[_0xdd7e('0x2e')]=_0x196624;if(_0x8feb11[_0xdd7e('0x41')]['includeAll']){_0x2f7fdd[_0xdd7e('0x50')]=[{'all':!![]}];}return db[_0xdd7e('0x3a')]['findAll'](_0x2f7fdd);})[_0xdd7e('0x1f')](function(_0x397d2a){_0x621d39[_0xdd7e('0x51')]=_0x397d2a;return _0x621d39;})[_0xdd7e('0x1f')](respondWithFilteredResult(_0x2a1b53,_0x2f7fdd))['catch'](handleError(_0x2a1b53,null));};exports['show']=function(_0x5a6cfd,_0x239ff2){var _0x2b76d8={'raw':!![],'where':{'id':_0x5a6cfd[_0xdd7e('0x52')]['id']}},_0x1ce40a={};_0x1ce40a[_0xdd7e('0x3f')]=_[_0xdd7e('0x40')](db[_0xdd7e('0x3a')][_0xdd7e('0x3b')]);_0x1ce40a[_0xdd7e('0x41')]=_[_0xdd7e('0x40')](_0x5a6cfd[_0xdd7e('0x41')]);_0x1ce40a['filters']=_[_0xdd7e('0x43')](_0x1ce40a['model'],_0x1ce40a[_0xdd7e('0x41')]);_0x2b76d8[_0xdd7e('0x44')]=_[_0xdd7e('0x43')](_0x1ce40a[_0xdd7e('0x3f')],qs['fields'](_0x5a6cfd[_0xdd7e('0x41')][_0xdd7e('0x45')]));_0x2b76d8[_0xdd7e('0x44')]=_0x2b76d8['attributes']['length']?_0x2b76d8['attributes']:_0x1ce40a[_0xdd7e('0x3f')];if(_0x5a6cfd[_0xdd7e('0x41')][_0xdd7e('0x53')]){_0x2b76d8[_0xdd7e('0x50')]=[{'all':!![]}];}_0x2b76d8=_[_0xdd7e('0x4d')]({},_0x2b76d8,_0x5a6cfd[_0xdd7e('0x4f')]);return db['ChatMessage']['find'](_0x2b76d8)[_0xdd7e('0x1f')](handleEntityNotFound(_0x239ff2,null))[_0xdd7e('0x1f')](respondWithResult(_0x239ff2,null))[_0xdd7e('0x29')](handleError(_0x239ff2,null));};exports[_0xdd7e('0x54')]=function(_0x443c5b,_0x299561){return db['ChatMessage']['create'](_0x443c5b[_0xdd7e('0x55')],{})[_0xdd7e('0x1f')](respondWithResult(_0x299561,0xc9))[_0xdd7e('0x29')](handleError(_0x299561,null));};exports[_0xdd7e('0x56')]=function(_0xc7445e,_0x7f42f8){if(_0xc7445e[_0xdd7e('0x55')]['id']){delete _0xc7445e['body']['id'];}return db['ChatMessage']['find']({'where':{'id':_0xc7445e[_0xdd7e('0x52')]['id']}})[_0xdd7e('0x1f')](handleEntityNotFound(_0x7f42f8,null))['then'](saveUpdates(_0xc7445e[_0xdd7e('0x55')],null))[_0xdd7e('0x1f')](respondWithResult(_0x7f42f8,null))['catch'](handleError(_0x7f42f8,null));};exports[_0xdd7e('0x57')]=function(_0x34e847,_0x226d1a){return db['ChatMessage']['find']({'where':{'id':_0x34e847[_0xdd7e('0x52')]['id']}})[_0xdd7e('0x1f')](handleEntityNotFound(_0x226d1a,null))[_0xdd7e('0x1f')](removeEntity(_0x226d1a,null))['catch'](handleError(_0x226d1a,null));};exports['describe']=function(_0x417c91,_0x15bd29){return db[_0xdd7e('0x3a')]['describe']()[_0xdd7e('0x1f')](respondWithResult(_0x15bd29,null))[_0xdd7e('0x29')](handleError(_0x15bd29,null));};var interaction_log=require(_0xdd7e('0x13'))(_0xdd7e('0x58'));exports[_0xdd7e('0x59')]=function(_0x139e05,_0x2f4821,_0x2aa2ef){var _0x4b9822={'agent':{},'channel':_0xdd7e('0x5a')};if(_0x139e05['body']['id']){delete _0x139e05['body']['id'];}_0x139e05[_0xdd7e('0x55')][_0xdd7e('0x5b')]=!![];_0x139e05['body'][_0xdd7e('0x5c')]=moment()[_0xdd7e('0x5d')](_0xdd7e('0x5e'));_0x139e05[_0xdd7e('0x55')]['UserId']=_0x139e05['body'][_0xdd7e('0x5f')]||_0x139e05['user']['id'];_0x4b9822[_0xdd7e('0x60')]['id']=_0x139e05['body'][_0xdd7e('0x5f')];return db[_0xdd7e('0x3a')]['find']({'where':{'id':_0x139e05[_0xdd7e('0x52')]['id'],'UserId':null}})[_0xdd7e('0x1f')](handleEntityNotFound(_0x2f4821,null))['then'](saveUpdates(_0x139e05[_0xdd7e('0x55')],null))['then'](function(_0x3dbaaa){if(_0x3dbaaa){_0x4b9822[_0xdd7e('0x27')]=_0x3dbaaa[_0xdd7e('0x61')]({'plain':!![]});return db[_0xdd7e('0x62')][_0xdd7e('0x63')]({'where':{'id':_0x3dbaaa['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2f4821,null))[_0xdd7e('0x1f')](function(_0x557991){if(_0x557991){return _0x557991['update']({'UserId':_0x139e05[_0xdd7e('0x55')][_0xdd7e('0x5f')],'read1stAt':_[_0xdd7e('0x64')](_0x557991[_0xdd7e('0x65')])?moment()[_0xdd7e('0x5d')](_0xdd7e('0x5e')):undefined});}return null;})['then'](function(_0x46f453){if(_0x46f453){_0x4b9822[_0xdd7e('0x66')]=_0x46f453['get']({'plain':!![]});interaction_log[_0xdd7e('0x20')](_0xdd7e('0x67'),_0x139e05[_0xdd7e('0x68')]['id'],_0x139e05[_0xdd7e('0x68')][_0xdd7e('0x36')],_0x139e05[_0xdd7e('0x68')][_0xdd7e('0x69')],_0x4b9822[_0xdd7e('0x66')]['id'],_0x139e05['body']?JSON[_0xdd7e('0x23')](_0x139e05['body']):_0xdd7e('0x6a'));return respondWithRpcPromise('AcceptMessage',_0xdd7e('0x6b'),_0x4b9822);}return null;})['then'](function(_0x5427df){var _0x1580b5=_0xdd7e('0x6c')+_0x5427df[_0xdd7e('0x27')][_0xdd7e('0x6d')];return db[_0xdd7e('0x6e')][_0xdd7e('0x41')](_0x1580b5,{'type':db[_0xdd7e('0x6f')][_0xdd7e('0x70')][_0xdd7e('0x71')],'raw':!![]})['then'](function(_0x2209fe){return _0x2209fe;});})['then'](function(_0x209dee){if(_0x209dee){_0x4b9822[_0xdd7e('0x27')][_0xdd7e('0x72')]=_0x209dee[0x0];if(!_0x139e05[_0xdd7e('0x55')][_0xdd7e('0x5f')])return;return db['User'][_0xdd7e('0x63')]({'where':{'id':_0x139e05[_0xdd7e('0x55')][_0xdd7e('0x5f')],'role':_0xdd7e('0x60')},'attributes':['id',_0xdd7e('0x36'),'fullname',_0xdd7e('0x73'),_0xdd7e('0x74')],'raw':!![]});}return null;})[_0xdd7e('0x1f')](function(_0x47b4e3){if(!_0x47b4e3)return null;_0x4b9822[_0xdd7e('0x27')][_0xdd7e('0x60')]=_0x47b4e3;return _0x4b9822;})[_0xdd7e('0x1f')](function(_0x285723){if(_0x285723){if(_0x139e05[_0xdd7e('0x55')][_0xdd7e('0x75')]){_0x4b9822[_0xdd7e('0x27')][_0xdd7e('0x76')]=util[_0xdd7e('0x5d')](_0xdd7e('0x77'),_0x139e05[_0xdd7e('0x68')][_0xdd7e('0x36')]);_0x4b9822['message'][_0xdd7e('0x78')]=_0x4b9822['channel'];_0x4b9822['message']['motionChannel']=_0x4b9822['channel'];_0x4b9822[_0xdd7e('0x27')]['event']=_0xdd7e('0x59');return respondWithRpcPromise(_0xdd7e('0x79'),_0xdd7e('0x79'),{'event':'acceptmessage','message':_[_0xdd7e('0x4d')](_0x4b9822['message'],JSON['parse'](_0x4b9822[_0xdd7e('0x66')][_0xdd7e('0x7a')]))},client9002)[_0xdd7e('0x1f')](function(){return _0x4b9822;});}return _0x4b9822;}return null;})[_0xdd7e('0x1f')](respondWithResult(_0x2f4821,null))[_0xdd7e('0x29')](handleError(_0x2f4821,null));};var interaction_log=require(_0xdd7e('0x13'))('chat-interactions');exports[_0xdd7e('0x32')]=function(_0x1ddf7e,_0x351d6c,_0xe1911){var _0x540027={'agent':{},'channel':_0xdd7e('0x5a')};if(_0x1ddf7e[_0xdd7e('0x55')]['id']){delete _0x1ddf7e[_0xdd7e('0x55')]['id'];}_0x1ddf7e[_0xdd7e('0x55')]['UserId']=_0x1ddf7e[_0xdd7e('0x55')][_0xdd7e('0x5f')]||_0x1ddf7e[_0xdd7e('0x68')]['id'];_0x540027['agent']['id']=_0x1ddf7e['body']['UserId'];return db[_0xdd7e('0x3a')][_0xdd7e('0x63')]({'where':{'id':_0x1ddf7e[_0xdd7e('0x52')]['id'],'UserId':null}})[_0xdd7e('0x1f')](handleEntityNotFound(_0x351d6c,null))[_0xdd7e('0x1f')](function(_0x28e470){if(_0x28e470){_0x540027[_0xdd7e('0x27')]=_0x28e470[_0xdd7e('0x61')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x28e470['ChatInteractionId']}});}return null;})[_0xdd7e('0x1f')](handleEntityNotFound(_0x351d6c,null))[_0xdd7e('0x1f')](function(_0x22093b){if(_0x22093b){_0x540027['interaction']=_0x22093b[_0xdd7e('0x61')]({'plain':!![]});interaction_log['info'](_0xdd7e('0x7b'),_0x1ddf7e[_0xdd7e('0x68')]['id'],_0x1ddf7e[_0xdd7e('0x68')][_0xdd7e('0x36')],_0x1ddf7e[_0xdd7e('0x68')][_0xdd7e('0x69')],_0x540027[_0xdd7e('0x66')]['id'],_0x1ddf7e[_0xdd7e('0x55')]?JSON[_0xdd7e('0x23')](_0x1ddf7e[_0xdd7e('0x55')]):_0xdd7e('0x6a'));return respondWithRpcPromise(_0xdd7e('0x7c'),'rejectMessage',_0x540027);}return null;})[_0xdd7e('0x1f')](function(_0x46c4d1){var _0x1b4e40=_0xdd7e('0x6c')+_0x46c4d1[_0xdd7e('0x27')][_0xdd7e('0x6d')];return db['sequelize'][_0xdd7e('0x41')](_0x1b4e40,{'type':db[_0xdd7e('0x6f')][_0xdd7e('0x70')][_0xdd7e('0x71')],'raw':!![]})[_0xdd7e('0x1f')](function(_0x559233){return _0x559233;});})[_0xdd7e('0x1f')](function(_0x5ebdb5){if(_0x5ebdb5){_0x540027['message']['contact']=_0x5ebdb5[0x0];if(!_0x1ddf7e[_0xdd7e('0x55')][_0xdd7e('0x5f')])return;return db[_0xdd7e('0x7d')][_0xdd7e('0x63')]({'where':{'id':_0x1ddf7e['body'][_0xdd7e('0x5f')],'role':_0xdd7e('0x60')},'attributes':['id',_0xdd7e('0x36'),_0xdd7e('0x7e'),'email',_0xdd7e('0x74')],'raw':!![]});}return null;})[_0xdd7e('0x1f')](function(_0x5f2d71){if(!_0x5f2d71)return null;_0x540027['message']['agent']=_0x5f2d71;return _0x540027;})[_0xdd7e('0x1f')](function(_0x3ab353){if(_0x3ab353){_0x3ab353['message'][_0xdd7e('0x76')]=util[_0xdd7e('0x5d')](_0xdd7e('0x77'),_0x1ddf7e['user'][_0xdd7e('0x36')]);_0x3ab353[_0xdd7e('0x27')]['channel']=_0x540027[_0xdd7e('0x78')];_0x3ab353[_0xdd7e('0x27')][_0xdd7e('0x7f')]=_0x540027['channel'];_0x3ab353[_0xdd7e('0x27')]['event']='reject';respondWithRpcPromise('EventManager',_0xdd7e('0x79'),{'event':_0xdd7e('0x80'),'message':_[_0xdd7e('0x4d')](_0x540027[_0xdd7e('0x27')],JSON[_0xdd7e('0x81')](_0x540027[_0xdd7e('0x66')][_0xdd7e('0x7a')]))},client9002);return _0x540027;}return null;})['then'](respondWithResult(_0x351d6c,null))[_0xdd7e('0x29')](handleError(_0x351d6c,null));};
\ No newline at end of file
index 908c09c..6c7e6d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd92=['ChatMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xcd92,0x6c));var _0x2cd9=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xcd92[_0x46698a];return _0x356db0;};'use strict';var EventEmitter=require(_0x2cd9('0x0'));var ChatMessage=require(_0x2cd9('0x1'))['db'][_0x2cd9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x2cd9('0x3')](0x0);var events={'afterCreate':_0x2cd9('0x4'),'afterUpdate':_0x2cd9('0x5'),'afterDestroy':_0x2cd9('0x6')};function emitEvent(_0x191a7b){return function(_0x52bc1e,_0x557ad5,_0x1390dc){ChatMessageEvents[_0x2cd9('0x7')](_0x191a7b+':'+_0x52bc1e['id'],_0x52bc1e);ChatMessageEvents[_0x2cd9('0x7')](_0x191a7b,_0x52bc1e);_0x1390dc(null);};}for(var e in events){if(events[_0x2cd9('0x8')](e)){var event=events[e];ChatMessage[_0x2cd9('0x9')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x2b97=['ChatMessage','setMaxListeners','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x133042,_0x51cde7){var _0x3ea264=function(_0x403eb3){while(--_0x403eb3){_0x133042['push'](_0x133042['shift']());}};_0x3ea264(++_0x51cde7);}(_0x2b97,0x116));var _0x72b9=function(_0x4b9aae,_0x345466){_0x4b9aae=_0x4b9aae-0x0;var _0x213738=_0x2b97[_0x4b9aae];return _0x213738;};'use strict';var EventEmitter=require(_0x72b9('0x0'));var ChatMessage=require(_0x72b9('0x1'))['db'][_0x72b9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x72b9('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x72b9('0x4'),'afterDestroy':_0x72b9('0x5')};function emitEvent(_0x38d245){return function(_0x11ae51,_0x234456,_0x5b2624){ChatMessageEvents[_0x72b9('0x6')](_0x38d245+':'+_0x11ae51['id'],_0x11ae51);ChatMessageEvents[_0x72b9('0x6')](_0x38d245,_0x11ae51);_0x5b2624(null);};}for(var e in events){if(events[_0x72b9('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index ed5fd0b..2967e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9dc=['exports','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes'];(function(_0x52ea08,_0x15d935){var _0x28d546=function(_0x4a3aa7){while(--_0x4a3aa7){_0x52ea08['push'](_0x52ea08['shift']());}};_0x28d546(++_0x15d935);}(_0xa9dc,0xb0));var _0xca9d=function(_0xffd8b0,_0x12c51f){_0xffd8b0=_0xffd8b0-0x0;var _0x301ba0=_0xa9dc[_0xffd8b0];return _0x301ba0;};'use strict';var _=require(_0xca9d('0x0'));var util=require(_0xca9d('0x1'));var logger=require(_0xca9d('0x2'))(_0xca9d('0x3'));var moment=require(_0xca9d('0x4'));var BPromise=require('bluebird');var rp=require(_0xca9d('0x5'));var fs=require('fs');var path=require(_0xca9d('0x6'));var rimraf=require(_0xca9d('0x7'));var config=require(_0xca9d('0x8'));var attributes=require(_0xca9d('0x9'));module[_0xca9d('0xa')]=function(_0x5f3ac1,_0x64c921){return _0x5f3ac1['define'](_0xca9d('0xb'),attributes,{'tableName':_0xca9d('0xc'),'paranoid':![],'indexes':[{'name':_0xca9d('0xd'),'fields':[_0xca9d('0xe')],'type':_0xca9d('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4a1b18,_0x3ea9fa,_0x20877e){var _0xfc4830=_0x5f3ac1[_0xca9d('0x10')];var _0x1450b8=_0x4a1b18[_0xca9d('0x11')]({'plain':!![]});if(_0x1450b8[_0xca9d('0x12')][_0xca9d('0x13')]()==='in'||_0x1450b8['direction'][_0xca9d('0x13')]()===_0xca9d('0x14')&&!_0x1450b8[_0xca9d('0x15')]&&!_[_0xca9d('0x16')](_0x1450b8[_0xca9d('0x17')])){_0xfc4830[_0xca9d('0x18')][_0xca9d('0x19')]({'where':{'id':_0x1450b8[_0xca9d('0x1a')]}})[_0xca9d('0x1b')](function(_0x10d920){if(_0x10d920){_0x10d920['update']({'lastMsgAt':_0x1450b8['createdAt'],'lastMsgDirection':_0x1450b8[_0xca9d('0x12')][_0xca9d('0x13')]()});}})[_0xca9d('0x1c')](function(_0xb546da){console['error'](_0xb546da);});}_0x20877e();}},'charset':_0xca9d('0x1d'),'collate':_0xca9d('0x1e')});};
\ No newline at end of file
+var _0x764d=['exports','define','ChatMessage','chat_messages','fti_chat_messages','models','get','direction','toLowerCase','secret','isNil','findOne','then','createdAt','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./chatMessage.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x764d,0xde));var _0xd764=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0x764d[_0x3aaf0a];return _0x33e6bc;};'use strict';var _=require(_0xd764('0x0'));var util=require(_0xd764('0x1'));var logger=require(_0xd764('0x2'))(_0xd764('0x3'));var moment=require(_0xd764('0x4'));var BPromise=require('bluebird');var rp=require(_0xd764('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd764('0x6'));var config=require('../../config/environment');var attributes=require(_0xd764('0x7'));module[_0xd764('0x8')]=function(_0x5ec3fd,_0x454c97){return _0x5ec3fd[_0xd764('0x9')](_0xd764('0xa'),attributes,{'tableName':_0xd764('0xb'),'paranoid':![],'indexes':[{'name':_0xd764('0xc'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3a30f6,_0x131005,_0x44703a){var _0x426aeb=_0x5ec3fd[_0xd764('0xd')];var _0x467673=_0x3a30f6[_0xd764('0xe')]({'plain':!![]});if(_0x467673[_0xd764('0xf')]['toLowerCase']()==='in'||_0x467673['direction'][_0xd764('0x10')]()==='out'&&!_0x467673[_0xd764('0x11')]&&!_[_0xd764('0x12')](_0x467673['UserId'])){_0x426aeb['ChatInteraction'][_0xd764('0x13')]({'where':{'id':_0x467673['ChatInteractionId']}})[_0xd764('0x14')](function(_0xa9a948){if(_0xa9a948){_0xa9a948['update']({'lastMsgAt':_0x467673[_0xd764('0x15')],'lastMsgDirection':_0x467673[_0xd764('0xf')][_0xd764('0x10')]()});}})['catch'](function(_0x4d8cab){console['error'](_0x4d8cab);});}_0x44703a();}},'charset':_0xd764('0x16'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8bbbba6..1315f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741f=['client','http','redis','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','create','options','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2bd57b,_0x11fdf8){var _0xd32252=function(_0x1c7dd6){while(--_0x1c7dd6){_0x2bd57b['push'](_0x2bd57b['shift']());}};_0xd32252(++_0x11fdf8);}(_0x741f,0x76));var _0xf741=function(_0xc7a26,_0x52a575){_0xc7a26=_0xc7a26-0x0;var _0x37eeaa=_0x741f[_0xc7a26];return _0x37eeaa;};'use strict';var _=require(_0xf741('0x0'));var util=require(_0xf741('0x1'));var moment=require('moment');var BPromise=require(_0xf741('0x2'));var rs=require(_0xf741('0x3'));var fs=require('fs');var Redis=require(_0xf741('0x4'));var db=require(_0xf741('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf741('0x6'))(_0xf741('0x7'));var config=require(_0xf741('0x8'));var jayson=require(_0xf741('0x9'));var client=jayson[_0xf741('0xa')][_0xf741('0xb')]({'port':0x232a});config[_0xf741('0xc')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf741('0xd'))(new Redis(config[_0xf741('0xc')]));require(_0xf741('0xe'))[_0xf741('0xf')](socket);function respondWithRpcPromise(_0x37ef9b,_0x4a8e22,_0x5b238d){return new BPromise(function(_0x4fd2e1,_0x5c96f9){return client[_0xf741('0x10')](_0x37ef9b,_0x5b238d)[_0xf741('0x11')](function(_0x3bed8f){logger[_0xf741('0x12')](_0xf741('0x13'),_0x4a8e22,_0xf741('0x14'));logger['debug'](_0xf741('0x15'),_0x4a8e22,_0xf741('0x14'),JSON[_0xf741('0x16')](_0x3bed8f));if(_0x3bed8f[_0xf741('0x17')]){if(_0x3bed8f[_0xf741('0x17')][_0xf741('0x18')]===0x1f4){logger[_0xf741('0x17')](_0xf741('0x13'),_0x4a8e22,_0x3bed8f[_0xf741('0x17')][_0xf741('0x19')]);return _0x5c96f9(_0x3bed8f['error'][_0xf741('0x19')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x4a8e22,_0x3bed8f[_0xf741('0x17')][_0xf741('0x19')]);return _0x4fd2e1(_0x3bed8f[_0xf741('0x17')][_0xf741('0x19')]);}else{logger[_0xf741('0x12')](_0xf741('0x13'),_0x4a8e22,_0xf741('0x14'));_0x4fd2e1(_0x3bed8f[_0xf741('0x1a')][_0xf741('0x19')]);}})[_0xf741('0x1b')](function(_0x164a92){logger[_0xf741('0x17')](_0xf741('0x13'),_0x4a8e22,_0x164a92);_0x5c96f9(_0x164a92);});});}exports[_0xf741('0x1c')]=function(_0x2a2b39){var _0x48e19e=this;return new Promise(function(_0x1eb5c4,_0x3362ec){return db['ChatMessage'][_0xf741('0x1d')](_0x2a2b39['body'],{'raw':_0x2a2b39[_0xf741('0x1e')]?_0x2a2b39[_0xf741('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xf741('0x11')](function(_0x432d70){logger[_0xf741('0x12')]('CreateChatMessage',_0x2a2b39);logger[_0xf741('0x1f')]('CreateChatMessage',_0x2a2b39,JSON['stringify'](_0x432d70));_0x1eb5c4(_0x432d70);})['catch'](function(_0x56a395){logger[_0xf741('0x17')](_0xf741('0x1c'),_0x56a395['message'],_0x2a2b39);_0x3362ec(_0x48e19e[_0xf741('0x17')](0x1f4,_0x56a395['message']));});});};
\ No newline at end of file
+var _0xd02a=['moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','ChatMessage','create','body','raw','CreateChatMessage','stringify','catch','lodash'];(function(_0x152f1b,_0x2504ad){var _0x166c45=function(_0x1493aa){while(--_0x1493aa){_0x152f1b['push'](_0x152f1b['shift']());}};_0x166c45(++_0x2504ad);}(_0xd02a,0xb9));var _0xad02=function(_0x502279,_0x58b16e){_0x502279=_0x502279-0x0;var _0x516e7b=_0xd02a[_0x502279];return _0x516e7b;};'use strict';var _=require(_0xad02('0x0'));var util=require('util');var moment=require(_0xad02('0x1'));var BPromise=require('bluebird');var rs=require(_0xad02('0x2'));var fs=require('fs');var Redis=require(_0xad02('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xad02('0x4'));var logger=require('../../config/logger')(_0xad02('0x5'));var config=require(_0xad02('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xad02('0x7')][_0xad02('0x8')]({'port':0x232a});config[_0xad02('0x9')]=_[_0xad02('0xa')](config[_0xad02('0x9')],{'host':_0xad02('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad02('0x9')]));require(_0xad02('0xc'))[_0xad02('0xd')](socket);function respondWithRpcPromise(_0x572e1,_0x48a083,_0x32df61){return new BPromise(function(_0x33f365,_0x315c82){return client[_0xad02('0xe')](_0x572e1,_0x32df61)[_0xad02('0xf')](function(_0x365993){logger[_0xad02('0x10')](_0xad02('0x11'),_0x48a083,_0xad02('0x12'));logger[_0xad02('0x13')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x48a083,'request\x20sent',JSON['stringify'](_0x365993));if(_0x365993[_0xad02('0x14')]){if(_0x365993[_0xad02('0x14')][_0xad02('0x15')]===0x1f4){logger[_0xad02('0x14')](_0xad02('0x11'),_0x48a083,_0x365993[_0xad02('0x14')][_0xad02('0x16')]);return _0x315c82(_0x365993['error'][_0xad02('0x16')]);}logger[_0xad02('0x14')](_0xad02('0x11'),_0x48a083,_0x365993[_0xad02('0x14')][_0xad02('0x16')]);return _0x33f365(_0x365993['error'][_0xad02('0x16')]);}else{logger[_0xad02('0x10')](_0xad02('0x11'),_0x48a083,_0xad02('0x12'));_0x33f365(_0x365993[_0xad02('0x17')][_0xad02('0x16')]);}})['catch'](function(_0x2af7cc){logger[_0xad02('0x14')](_0xad02('0x11'),_0x48a083,_0x2af7cc);_0x315c82(_0x2af7cc);});});}exports['CreateChatMessage']=function(_0x55dce8){var _0x3f2e2a=this;return new Promise(function(_0x3971d5,_0x4b98f7){return db[_0xad02('0x18')][_0xad02('0x19')](_0x55dce8[_0xad02('0x1a')],{'raw':_0x55dce8['options']?_0x55dce8['options'][_0xad02('0x1b')]===undefined?!![]:![]:!![]})[_0xad02('0xf')](function(_0x3f8233){logger['info'](_0xad02('0x1c'),_0x55dce8);logger['debug']('CreateChatMessage',_0x55dce8,JSON[_0xad02('0x1d')](_0x3f8233));_0x3971d5(_0x3f8233);})[_0xad02('0x1e')](function(_0x1ddd56){logger[_0xad02('0x14')](_0xad02('0x1c'),_0x1ddd56[_0xad02('0x16')],_0x55dce8);_0x4b98f7(_0x3f2e2a['error'](0x1f4,_0x1ddd56[_0xad02('0x16')]));});});};
\ No newline at end of file
index e8f3909..62b8544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089f=['remove','update','emit','register','length','save'];(function(_0x1b1ed8,_0x2b0f38){var _0x33e1d6=function(_0x545491){while(--_0x545491){_0x1b1ed8['push'](_0x1b1ed8['shift']());}};_0x33e1d6(++_0x2b0f38);}(_0x089f,0x1c7));var _0xf089=function(_0x1c4079,_0x5514c1){_0x1c4079=_0x1c4079-0x0;var _0x203723=_0x089f[_0x1c4079];return _0x203723;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0xf089('0x0'),_0xf089('0x1'),_0xf089('0x2')];function createListener(_0x3c38bf,_0x196df6){return function(_0x4a5f5f){_0x196df6[_0xf089('0x3')](_0x3c38bf,_0x4a5f5f);};}function removeListener(_0x3195ed,_0x250428){return function(){ChatMessageEvents['removeListener'](_0x3195ed,_0x250428);};}exports[_0xf089('0x4')]=function(_0x126d3d){for(var _0x21bce2=0x0,_0x49b977=events[_0xf089('0x5')];_0x21bce2<_0x49b977;_0x21bce2++){var _0x1987d9=events[_0x21bce2];var _0x115de6=createListener('chatMessage:'+_0x1987d9,_0x126d3d);ChatMessageEvents['on'](_0x1987d9,_0x115de6);}};
\ No newline at end of file
+var _0xd2bb=['save','update','emit','removeListener','register','length','chatMessage:'];(function(_0x191485,_0x18a5ec){var _0x4e9c7a=function(_0x15ba22){while(--_0x15ba22){_0x191485['push'](_0x191485['shift']());}};_0x4e9c7a(++_0x18a5ec);}(_0xd2bb,0x9a));var _0xbd2b=function(_0x3eb212,_0x55964a){_0x3eb212=_0x3eb212-0x0;var _0x4d289b=_0xd2bb[_0x3eb212];return _0x4d289b;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0xbd2b('0x0'),'remove',_0xbd2b('0x1')];function createListener(_0x1b0c46,_0x29f98f){return function(_0x334128){_0x29f98f[_0xbd2b('0x2')](_0x1b0c46,_0x334128);};}function removeListener(_0x3c67c1,_0x5c41c7){return function(){ChatMessageEvents[_0xbd2b('0x3')](_0x3c67c1,_0x5c41c7);};}exports[_0xbd2b('0x4')]=function(_0xdcd8bd){for(var _0x2f64a8=0x0,_0x296d68=events[_0xbd2b('0x5')];_0x2f64a8<_0x296d68;_0x2f64a8++){var _0x42fee1=events[_0x2f64a8];var _0x30cd3f=createListener(_0xbd2b('0x6')+_0x42fee1,_0xdcd8bd);ChatMessageEvents['on'](_0x42fee1,_0x30cd3f);}};
\ No newline at end of file
index 5a38300..78f90e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','tracked','chat','chatmessage:create','create','put','update','/:id/accept'];(function(_0x508dcc,_0x2914fa){var _0x4ea643=function(_0x56a778){while(--_0x56a778){_0x508dcc['push'](_0x508dcc['shift']());}};_0x4ea643(++_0x2914fa);}(_0xb4c7,0x117));var _0x7b4c=function(_0x4d791a,_0x4945d2){_0x4d791a=_0x4d791a-0x0;var _0x4b41b6=_0xb4c7[_0x4d791a];return _0x4b41b6;};'use strict';var multer=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var path=require(_0x7b4c('0x2'));var timeout=require(_0x7b4c('0x3'));var express=require('express');var router=express[_0x7b4c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7b4c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7b4c('0x6'));var controller=require('./chatMessage.controller');router[_0x7b4c('0x7')]('/',auth['isAuthenticated'](),controller[_0x7b4c('0x8')]);router[_0x7b4c('0x7')](_0x7b4c('0x9'),auth[_0x7b4c('0xa')](),controller[_0x7b4c('0xb')]);router[_0x7b4c('0x7')](_0x7b4c('0xc'),auth[_0x7b4c('0xa')](),controller[_0x7b4c('0xd')]);router['post']('/',auth[_0x7b4c('0xa')](),interaction[_0x7b4c('0xe')](_0x7b4c('0xf'),_0x7b4c('0x10')),controller[_0x7b4c('0x11')]);router[_0x7b4c('0x12')](_0x7b4c('0xc'),controller[_0x7b4c('0x13')]);router[_0x7b4c('0x12')](_0x7b4c('0x14'),auth['isAuthenticated'](),controller['accept']);router['put'](_0x7b4c('0x15'),auth['isAuthenticated'](),controller[_0x7b4c('0x16')]);router[_0x7b4c('0x17')](_0x7b4c('0xc'),auth['isAuthenticated'](),controller[_0x7b4c('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xc05d=['chat','create','put','update','/:id/accept','accept','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked'];(function(_0xfeb1e7,_0x3c4ca9){var _0x1c74f7=function(_0x193aab){while(--_0x193aab){_0xfeb1e7['push'](_0xfeb1e7['shift']());}};_0x1c74f7(++_0x3c4ca9);}(_0xc05d,0x174));var _0xdc05=function(_0x3c5e6b,_0x1885e9){_0x3c5e6b=_0x3c5e6b-0x0;var _0x12025b=_0xc05d[_0x3c5e6b];return _0x12025b;};'use strict';var multer=require(_0xdc05('0x0'));var util=require('util');var path=require(_0xdc05('0x1'));var timeout=require(_0xdc05('0x2'));var express=require(_0xdc05('0x3'));var router=express[_0xdc05('0x4')]();var fs_extra=require(_0xdc05('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdc05('0x6'));var config=require(_0xdc05('0x7'));var controller=require(_0xdc05('0x8'));router[_0xdc05('0x9')]('/',auth[_0xdc05('0xa')](),controller[_0xdc05('0xb')]);router[_0xdc05('0x9')](_0xdc05('0xc'),auth['isAuthenticated'](),controller[_0xdc05('0xd')]);router[_0xdc05('0x9')](_0xdc05('0xe'),auth[_0xdc05('0xa')](),controller[_0xdc05('0xf')]);router[_0xdc05('0x10')]('/',auth[_0xdc05('0xa')](),interaction[_0xdc05('0x11')](_0xdc05('0x12'),'chatmessage:create'),controller[_0xdc05('0x13')]);router[_0xdc05('0x14')]('/:id',controller[_0xdc05('0x15')]);router[_0xdc05('0x14')](_0xdc05('0x16'),auth[_0xdc05('0xa')](),controller[_0xdc05('0x17')]);router[_0xdc05('0x14')]('/:id/reject',auth['isAuthenticated'](),controller['reject']);router[_0xdc05('0x18')](_0xdc05('0xe'),auth[_0xdc05('0xa')](),controller['destroy']);module[_0xdc05('0x19')]=router;
\ No newline at end of file
index dcb0e66..adbe8e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x0b0e,0x187));var _0xe0b0=function(_0x6eb02d,_0x20bdf5){_0x6eb02d=_0x6eb02d-0x0;var _0xb756de=_0x0b0e[_0x6eb02d];return _0xb756de;};'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
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x3fd3b2,_0x35de82){var _0x31e1dc=function(_0x598492){while(--_0x598492){_0x3fd3b2['push'](_0x3fd3b2['shift']());}};_0x31e1dc(++_0x35de82);}(_0xdb28,0x106));var _0x8db2=function(_0x3e2455,_0x10b393){_0x3e2455=_0x3e2455-0x0;var _0x379301=_0xdb28[_0x3e2455];return _0x379301;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index a866e74..4a50647 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(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x7a54,0x106));var _0x47a5=function(_0x1b068c,_0x1a6803){_0x1b068c=_0x1b068c-0x0;var _0x5519cf=_0x7a54[_0x1b068c];return _0x5519cf;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x2ed880,_0x3afa6e){var _0x4ca377=function(_0x4a7694){while(--_0x4a7694){_0x2ed880['push'](_0x2ed880['shift']());}};_0x4ca377(++_0x3afa6e);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 4bc643f..de72421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c46=['update','remove','emit','hook','exports','../../mysqldb','ChatOfflineMessage','save'];(function(_0x44db60,_0x4ec8ca){var _0x3fa929=function(_0x5800a6){while(--_0x5800a6){_0x44db60['push'](_0x44db60['shift']());}};_0x3fa929(++_0x4ec8ca);}(_0x9c46,0xa5));var _0x69c4=function(_0x6b7376,_0x346d64){_0x6b7376=_0x6b7376-0x0;var _0x573aab=_0x9c46[_0x6b7376];return _0x573aab;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x69c4('0x0'))['db'][_0x69c4('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x69c4('0x2'),'afterUpdate':_0x69c4('0x3'),'afterDestroy':_0x69c4('0x4')};function emitEvent(_0x12df3f){return function(_0x45c96e,_0x23e2d5,_0x14fa0b){ChatOfflineMessageEvents['emit'](_0x12df3f+':'+_0x45c96e['id'],_0x45c96e);ChatOfflineMessageEvents[_0x69c4('0x5')](_0x12df3f,_0x45c96e);_0x14fa0b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x69c4('0x6')](e,emitEvent(event));}}module[_0x69c4('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x7804=['hasOwnProperty','hook','exports','events','ChatOfflineMessage','setMaxListeners','save','remove'];(function(_0x57999a,_0x201c7e){var _0x5ae463=function(_0x39e1cf){while(--_0x39e1cf){_0x57999a['push'](_0x57999a['shift']());}};_0x5ae463(++_0x201c7e);}(_0x7804,0xc3));var _0x4780=function(_0xe11104,_0x11a079){_0xe11104=_0xe11104-0x0;var _0x1daf26=_0x7804[_0xe11104];return _0x1daf26;};'use strict';var EventEmitter=require(_0x4780('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x4780('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x4780('0x2')](0x0);var events={'afterCreate':_0x4780('0x3'),'afterUpdate':'update','afterDestroy':_0x4780('0x4')};function emitEvent(_0xf88f45){return function(_0x5bf1d7,_0x50f186,_0x20f86d){ChatOfflineMessageEvents['emit'](_0xf88f45+':'+_0x5bf1d7['id'],_0x5bf1d7);ChatOfflineMessageEvents['emit'](_0xf88f45,_0x5bf1d7);_0x20f86d(null);};}for(var e in events){if(events[_0x4780('0x5')](e)){var event=events[e];ChatOfflineMessage[_0x4780('0x6')](e,emitEvent(event));}}module[_0x4780('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
index f041aeb..3216e55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbce7=['utf8mb4_unicode_ci','exports','ChatOfflineMessage','chat_offline_messages','utf8mb4'];(function(_0x5d44ef,_0x2aa635){var _0x1f054a=function(_0x314bbc){while(--_0x314bbc){_0x5d44ef['push'](_0x5d44ef['shift']());}};_0x1f054a(++_0x2aa635);}(_0xbce7,0xf6));var _0x7bce=function(_0x5b2767,_0xc983df){_0x5b2767=_0x5b2767-0x0;var _0x482816=_0xbce7[_0x5b2767];return _0x482816;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module[_0x7bce('0x0')]=function(_0x5f3010){return _0x5f3010['define'](_0x7bce('0x1'),attributes,{'tableName':_0x7bce('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7bce('0x3'),'collate':_0x7bce('0x4')});};
\ No newline at end of file
+var _0x7fda=['utf8mb4_unicode_ci','./chatOfflineMessage.attributes','define','ChatOfflineMessage','chat_offline_messages','utf8mb4'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x7fda,0x17b));var _0xa7fd=function(_0x6b379a,_0x2328e2){_0x6b379a=_0x6b379a-0x0;var _0x4de3fa=_0x7fda[_0x6b379a];return _0x4de3fa;};'use strict';var attributes=require(_0xa7fd('0x0'));module['exports']=function(_0x1d7660){return _0x1d7660[_0xa7fd('0x1')](_0xa7fd('0x2'),attributes,{'tableName':_0xa7fd('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa7fd('0x4'),'collate':_0xa7fd('0x5')});};
\ No newline at end of file
index 6c73419..99187eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeda=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','bluebird','randomstring','ioredis'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xaeda,0x1b4));var _0xaaed=function(_0x2cb4c9,_0x12f8a1){_0x2cb4c9=_0x2cb4c9-0x0;var _0x4ac9d8=_0xaeda[_0x2cb4c9];return _0x4ac9d8;};'use strict';var _=require(_0xaaed('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xaaed('0x1'));var rs=require(_0xaaed('0x2'));var fs=require('fs');var Redis=require(_0xaaed('0x3'));var db=require(_0xaaed('0x4'))['db'];var utils=require(_0xaaed('0x5'));var logger=require('../../config/logger')(_0xaaed('0x6'));var config=require(_0xaaed('0x7'));var jayson=require(_0xaaed('0x8'));var client=jayson[_0xaaed('0x9')][_0xaaed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40c228,_0xdd0bcf,_0x44648a){return new BPromise(function(_0x803226,_0x29e870){return client[_0xaaed('0xb')](_0x40c228,_0x44648a)['then'](function(_0x176aa6){logger[_0xaaed('0xc')](_0xaaed('0xd'),_0xdd0bcf,_0xaaed('0xe'));logger[_0xaaed('0xf')](_0xaaed('0x10'),_0xdd0bcf,'request\x20sent',JSON[_0xaaed('0x11')](_0x176aa6));if(_0x176aa6[_0xaaed('0x12')]){if(_0x176aa6[_0xaaed('0x12')][_0xaaed('0x13')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0xdd0bcf,_0x176aa6[_0xaaed('0x12')][_0xaaed('0x14')]);return _0x29e870(_0x176aa6[_0xaaed('0x12')][_0xaaed('0x14')]);}logger[_0xaaed('0x12')](_0xaaed('0xd'),_0xdd0bcf,_0x176aa6[_0xaaed('0x12')][_0xaaed('0x14')]);return _0x803226(_0x176aa6[_0xaaed('0x12')]['message']);}else{logger[_0xaaed('0xc')](_0xaaed('0xd'),_0xdd0bcf,_0xaaed('0xe'));_0x803226(_0x176aa6['result'][_0xaaed('0x14')]);}})[_0xaaed('0x15')](function(_0x16afc4){logger['error'](_0xaaed('0xd'),_0xdd0bcf,_0x16afc4);_0x29e870(_0x16afc4);});});}
\ No newline at end of file
+var _0x474d=['then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0xe9d768,_0x26c80d){var _0x327f64=function(_0x3df916){while(--_0x3df916){_0xe9d768['push'](_0xe9d768['shift']());}};_0x327f64(++_0x26c80d);}(_0x474d,0x13a));var _0xd474=function(_0x40c647,_0x1cd062){_0x40c647=_0x40c647-0x0;var _0x44bcae=_0x474d[_0x40c647];return _0x44bcae;};'use strict';var _=require(_0xd474('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd474('0x1'));var rs=require(_0xd474('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd474('0x3'))(_0xd474('0x4'));var config=require(_0xd474('0x5'));var jayson=require(_0xd474('0x6'));var client=jayson['client'][_0xd474('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x18424d,_0x513bd4,_0x4635ee){return new BPromise(function(_0x1b966b,_0x8058c6){return client[_0xd474('0x8')](_0x18424d,_0x4635ee)[_0xd474('0x9')](function(_0x3219a9){logger[_0xd474('0xa')](_0xd474('0xb'),_0x513bd4,_0xd474('0xc'));logger[_0xd474('0xd')](_0xd474('0xe'),_0x513bd4,_0xd474('0xc'),JSON['stringify'](_0x3219a9));if(_0x3219a9['error']){if(_0x3219a9[_0xd474('0xf')][_0xd474('0x10')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x513bd4,_0x3219a9['error'][_0xd474('0x11')]);return _0x8058c6(_0x3219a9[_0xd474('0xf')][_0xd474('0x11')]);}logger[_0xd474('0xf')](_0xd474('0xb'),_0x513bd4,_0x3219a9[_0xd474('0xf')][_0xd474('0x11')]);return _0x1b966b(_0x3219a9[_0xd474('0xf')][_0xd474('0x11')]);}else{logger[_0xd474('0xa')]('ChatOfflineMessage,\x20%s,\x20%s',_0x513bd4,_0xd474('0xc'));_0x1b966b(_0x3219a9['result'][_0xd474('0x11')]);}})[_0xd474('0x12')](function(_0x24511d){logger[_0xd474('0xf')](_0xd474('0xb'),_0x513bd4,_0x24511d);_0x8058c6(_0x24511d);});});}
\ No newline at end of file
index e6f30d3..c4eba5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31b0=['describe','/:id','create','delete','destroy','util','path','connect-timeout','../../components/auth/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe'];(function(_0xfc30ab,_0x9c311d){var _0x1180dc=function(_0x5745aa){while(--_0x5745aa){_0xfc30ab['push'](_0xfc30ab['shift']());}};_0x1180dc(++_0x9c311d);}(_0x31b0,0xd7));var _0x031b=function(_0x1bcd5b,_0x1d8aca){_0x1bcd5b=_0x1bcd5b-0x0;var _0x27d479=_0x31b0[_0x1bcd5b];return _0x27d479;};'use strict';var multer=require('multer');var util=require(_0x031b('0x0'));var path=require(_0x031b('0x1'));var timeout=require(_0x031b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x031b('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x031b('0x4'));var controller=require(_0x031b('0x5'));router[_0x031b('0x6')]('/',auth[_0x031b('0x7')](),controller[_0x031b('0x8')]);router[_0x031b('0x6')](_0x031b('0x9'),auth[_0x031b('0x7')](),controller[_0x031b('0xa')]);router['get'](_0x031b('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x031b('0x7')](),controller[_0x031b('0xc')]);router['put'](_0x031b('0xb'),auth[_0x031b('0x7')](),controller['update']);router[_0x031b('0xd')]('/:id',auth[_0x031b('0x7')](),controller[_0x031b('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x0f19=['index','/describe','describe','/:id','create','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x7c5239,_0x3c0537){var _0x5e3817=function(_0x1e8a7c){while(--_0x1e8a7c){_0x7c5239['push'](_0x7c5239['shift']());}};_0x5e3817(++_0x3c0537);}(_0x0f19,0x15f));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x90f1('0x0'));var timeout=require(_0x90f1('0x1'));var express=require(_0x90f1('0x2'));var router=express[_0x90f1('0x3')]();var fs_extra=require(_0x90f1('0x4'));var auth=require(_0x90f1('0x5'));var interaction=require(_0x90f1('0x6'));var config=require(_0x90f1('0x7'));var controller=require('./chatOfflineMessage.controller');router[_0x90f1('0x8')]('/',auth[_0x90f1('0x9')](),controller[_0x90f1('0xa')]);router[_0x90f1('0x8')](_0x90f1('0xb'),auth[_0x90f1('0x9')](),controller[_0x90f1('0xc')]);router[_0x90f1('0x8')](_0x90f1('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x90f1('0x9')](),controller[_0x90f1('0xe')]);router['put'](_0x90f1('0xd'),auth[_0x90f1('0x9')](),controller[_0x90f1('0xf')]);router[_0x90f1('0x10')](_0x90f1('0xd'),auth[_0x90f1('0x9')](),controller[_0x90f1('0x11')]);module[_0x90f1('0x12')]=router;
\ No newline at end of file
index 7596e5b..9ba210f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['timeout','STRING','INTEGER','sequelize','exports','ENUM','mouseOver'];(function(_0x2d2ca2,_0x51873f){var _0x48489d=function(_0x1a2cf7){while(--_0x1a2cf7){_0x2d2ca2['push'](_0x2d2ca2['shift']());}};_0x48489d(++_0x51873f);}(_0x34b7,0x73));var _0x734b=function(_0x44d487,_0x13ba53){_0x44d487=_0x44d487-0x0;var _0x2a01ee=_0x34b7[_0x44d487];return _0x2a01ee;};'use strict';var Sequelize=require(_0x734b('0x0'));module[_0x734b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x734b('0x2')](_0x734b('0x3'),_0x734b('0x4')),'defaultValue':_0x734b('0x3')},'selector':{'type':Sequelize[_0x734b('0x5')]},'timeout':{'type':Sequelize[_0x734b('0x6')]}};
\ No newline at end of file
+var _0xeeca=['mouseOver','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0x33e67e,_0x174d8c){var _0x1338e2=function(_0x3db778){while(--_0x3db778){_0x33e67e['push'](_0x33e67e['shift']());}};_0x1338e2(++_0x174d8c);}(_0xeeca,0x1ca));var _0xaeec=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0xeeca[_0x474bc0];return _0x4b24cf;};'use strict';var Sequelize=require(_0xaeec('0x0'));module[_0xaeec('0x1')]={'name':{'type':Sequelize[_0xaeec('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xaeec('0x3')](_0xaeec('0x4'),'timeout'),'defaultValue':'mouseOver'},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xaeec('0x5')]}};
\ No newline at end of file
index a406dda..e5e37bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a2=['find','catch','create','body','update','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','reject','save','then','sendStatus','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','options'];(function(_0x3a61c2,_0x1c80ee){var _0x2b9093=function(_0xde11fa){while(--_0xde11fa){_0x3a61c2['push'](_0x3a61c2['shift']());}};_0x2b9093(++_0x1c80ee);}(_0x75a2,0x187));var _0x275a=function(_0x36aebb,_0x286ca8){_0x36aebb=_0x36aebb-0x0;var _0x1a5020=_0x75a2[_0x36aebb];return _0x1a5020;};'use strict';var emlformat=require(_0x275a('0x0'));var rimraf=require(_0x275a('0x1'));var zipdir=require(_0x275a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x275a('0x3'));var moment=require(_0x275a('0x4'));var BPromise=require(_0x275a('0x5'));var Mustache=require(_0x275a('0x6'));var util=require('util');var path=require(_0x275a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x275a('0x8'));var squel=require(_0x275a('0x9'));var crypto=require(_0x275a('0xa'));var jsforce=require(_0x275a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x275a('0xc'));var Papa=require(_0x275a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x275a('0xe'));var hardwareService=require(_0x275a('0xf'));var logger=require(_0x275a('0x10'))(_0x275a('0x11'));var utils=require(_0x275a('0x12'));var config=require(_0x275a('0x13'));var licenseUtil=require(_0x275a('0x14'));var db=require(_0x275a('0x15'))['db'];function respondWithStatusCode(_0x2b5204,_0x991cd0){_0x991cd0=_0x991cd0||0xcc;return function(_0x263f8f){if(_0x263f8f){return _0x2b5204['sendStatus'](_0x991cd0);}return _0x2b5204[_0x275a('0x16')](_0x991cd0)[_0x275a('0x17')]();};}function respondWithResult(_0x480be0,_0x541c80){_0x541c80=_0x541c80||0xc8;return function(_0x2baa83){if(_0x2baa83){return _0x480be0[_0x275a('0x16')](_0x541c80)[_0x275a('0x18')](_0x2baa83);}};}function respondWithFilteredResult(_0x2560ae,_0x227cee){return function(_0x125348){if(_0x125348){var _0x283865=typeof _0x227cee[_0x275a('0x19')]===_0x275a('0x1a')&&typeof _0x227cee['limit']==='undefined';var _0x21cf70=_0x125348[_0x275a('0x1b')];var _0x50374a=_0x283865?0x0:_0x227cee[_0x275a('0x19')];var _0x59d755=_0x283865?_0x125348[_0x275a('0x1b')]:_0x227cee[_0x275a('0x19')]+_0x227cee['limit'];var _0xe59012;if(_0x59d755>=_0x21cf70){_0x59d755=_0x21cf70;_0xe59012=0xc8;}else{_0xe59012=0xce;}_0x2560ae[_0x275a('0x16')](_0xe59012);return _0x2560ae['set']('Content-Range',_0x50374a+'-'+_0x59d755+'/'+_0x21cf70)[_0x275a('0x18')](_0x125348);}return null;};}function patchUpdates(_0x456c61){return function(_0x4864c2){try{jsonpatch['apply'](_0x4864c2,_0x456c61,!![]);}catch(_0x4afb5e){return BPromise[_0x275a('0x1c')](_0x4afb5e);}return _0x4864c2[_0x275a('0x1d')]();};}function saveUpdates(_0x453bab,_0x7d58d2){return function(_0xbb91e7){if(_0xbb91e7){return _0xbb91e7['update'](_0x453bab)[_0x275a('0x1e')](function(_0x19ef1f){return _0x19ef1f;});}return null;};}function removeEntity(_0x2f9232,_0x21a0ee){return function(_0x32eb4b){if(_0x32eb4b){return _0x32eb4b['destroy']()[_0x275a('0x1e')](function(){_0x2f9232[_0x275a('0x16')](0xcc)[_0x275a('0x17')]();});}};}function handleEntityNotFound(_0x1441c3,_0x263fde){return function(_0x2bfe4d){if(!_0x2bfe4d){_0x1441c3[_0x275a('0x1f')](0x194);}return _0x2bfe4d;};}function handleError(_0x366002,_0x204f05){_0x204f05=_0x204f05||0x1f4;return function(_0x3ad063){logger['error'](_0x3ad063[_0x275a('0x20')]);if(_0x3ad063[_0x275a('0x21')]){delete _0x3ad063['name'];}_0x366002[_0x275a('0x16')](_0x204f05)[_0x275a('0x22')](_0x3ad063);};}exports[_0x275a('0x23')]=function(_0xa5048b,_0x5be632){var _0x265b1f={'raw':!![],'where':{'id':_0xa5048b[_0x275a('0x24')]['id']}},_0x440157={};_0x440157[_0x275a('0x25')]=_[_0x275a('0x26')](db[_0x275a('0x27')][_0x275a('0x28')]);_0x440157[_0x275a('0x29')]=_[_0x275a('0x26')](_0xa5048b[_0x275a('0x29')]);_0x440157['filters']=_[_0x275a('0x2a')](_0x440157[_0x275a('0x25')],_0x440157['query']);_0x265b1f[_0x275a('0x2b')]=_[_0x275a('0x2a')](_0x440157[_0x275a('0x25')],qs[_0x275a('0x2c')](_0xa5048b['query'][_0x275a('0x2c')]));_0x265b1f[_0x275a('0x2b')]=_0x265b1f[_0x275a('0x2b')][_0x275a('0x2d')]?_0x265b1f[_0x275a('0x2b')]:_0x440157['model'];if(_0xa5048b[_0x275a('0x29')][_0x275a('0x2e')]){_0x265b1f[_0x275a('0x2f')]=[{'all':!![]}];}_0x265b1f=_['merge']({},_0x265b1f,_0xa5048b[_0x275a('0x30')]);return db['ChatProactiveAction'][_0x275a('0x31')](_0x265b1f)['then'](handleEntityNotFound(_0x5be632,null))['then'](respondWithResult(_0x5be632,null))[_0x275a('0x32')](handleError(_0x5be632,null));};exports[_0x275a('0x33')]=function(_0x946a67,_0x4c098a){return db[_0x275a('0x27')][_0x275a('0x33')](_0x946a67[_0x275a('0x34')],{})[_0x275a('0x1e')](respondWithResult(_0x4c098a,0xc9))[_0x275a('0x32')](handleError(_0x4c098a,null));};exports[_0x275a('0x35')]=function(_0x232e32,_0x18a03f){if(_0x232e32['body']['id']){delete _0x232e32[_0x275a('0x34')]['id'];}return db[_0x275a('0x27')][_0x275a('0x31')]({'where':{'id':_0x232e32['params']['id']}})[_0x275a('0x1e')](handleEntityNotFound(_0x18a03f,null))[_0x275a('0x1e')](saveUpdates(_0x232e32[_0x275a('0x34')],null))['then'](respondWithResult(_0x18a03f,null))[_0x275a('0x32')](handleError(_0x18a03f,null));};exports[_0x275a('0x36')]=function(_0x593b3d,_0x315e7d){return db[_0x275a('0x27')]['find']({'where':{'id':_0x593b3d[_0x275a('0x24')]['id']}})['then'](handleEntityNotFound(_0x315e7d,null))[_0x275a('0x1e')](removeEntity(_0x315e7d,null))[_0x275a('0x32')](handleError(_0x315e7d,null));};
\ No newline at end of file
+var _0x35aa=['body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','end','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','options','find','then','catch','create'];(function(_0x3ea2bd,_0x964b84){var _0x585fa1=function(_0x70600c){while(--_0x70600c){_0x3ea2bd['push'](_0x3ea2bd['shift']());}};_0x585fa1(++_0x964b84);}(_0x35aa,0xbe));var _0xa35a=function(_0x3c8c80,_0x4d47cc){_0x3c8c80=_0x3c8c80-0x0;var _0x479a99=_0x35aa[_0x3c8c80];return _0x479a99;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa35a('0x0'));var zipdir=require(_0xa35a('0x1'));var jsonpatch=require(_0xa35a('0x2'));var rp=require(_0xa35a('0x3'));var moment=require('moment');var BPromise=require(_0xa35a('0x4'));var Mustache=require(_0xa35a('0x5'));var util=require(_0xa35a('0x6'));var path=require(_0xa35a('0x7'));var sox=require(_0xa35a('0x8'));var csv=require(_0xa35a('0x9'));var ejs=require(_0xa35a('0xa'));var fs=require('fs');var fs_extra=require(_0xa35a('0xb'));var _=require('lodash');var squel=require(_0xa35a('0xc'));var crypto=require('crypto');var jsforce=require(_0xa35a('0xd'));var deskjs=require(_0xa35a('0xe'));var toCsv=require(_0xa35a('0x9'));var querystring=require(_0xa35a('0xf'));var Papa=require(_0xa35a('0x10'));var Redis=require(_0xa35a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa35a('0x12'));var as=require(_0xa35a('0x13'));var hardwareService=require(_0xa35a('0x14'));var logger=require(_0xa35a('0x15'))('api');var utils=require(_0xa35a('0x16'));var config=require(_0xa35a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa35a('0x18'))['db'];function respondWithStatusCode(_0x3b9669,_0x21709c){_0x21709c=_0x21709c||0xcc;return function(_0xcaa467){if(_0xcaa467){return _0x3b9669[_0xa35a('0x19')](_0x21709c);}return _0x3b9669[_0xa35a('0x1a')](_0x21709c)['end']();};}function respondWithResult(_0x5d1591,_0x2dfa94){_0x2dfa94=_0x2dfa94||0xc8;return function(_0x4a4e06){if(_0x4a4e06){return _0x5d1591[_0xa35a('0x1a')](_0x2dfa94)[_0xa35a('0x1b')](_0x4a4e06);}};}function respondWithFilteredResult(_0x5160e8,_0x3f04b1){return function(_0x121a06){if(_0x121a06){var _0x5557da=typeof _0x3f04b1['offset']===_0xa35a('0x1c')&&typeof _0x3f04b1[_0xa35a('0x1d')]===_0xa35a('0x1c');var _0x1c2ef0=_0x121a06[_0xa35a('0x1e')];var _0x223b82=_0x5557da?0x0:_0x3f04b1[_0xa35a('0x1f')];var _0x4fd3e3=_0x5557da?_0x121a06[_0xa35a('0x1e')]:_0x3f04b1[_0xa35a('0x1f')]+_0x3f04b1[_0xa35a('0x1d')];var _0x95a504;if(_0x4fd3e3>=_0x1c2ef0){_0x4fd3e3=_0x1c2ef0;_0x95a504=0xc8;}else{_0x95a504=0xce;}_0x5160e8[_0xa35a('0x1a')](_0x95a504);return _0x5160e8[_0xa35a('0x20')](_0xa35a('0x21'),_0x223b82+'-'+_0x4fd3e3+'/'+_0x1c2ef0)[_0xa35a('0x1b')](_0x121a06);}return null;};}function patchUpdates(_0x8c8b91){return function(_0xbb6da8){try{jsonpatch[_0xa35a('0x22')](_0xbb6da8,_0x8c8b91,!![]);}catch(_0x42343d){return BPromise['reject'](_0x42343d);}return _0xbb6da8[_0xa35a('0x23')]();};}function saveUpdates(_0x4489fc,_0x5269e9){return function(_0x569836){if(_0x569836){return _0x569836[_0xa35a('0x24')](_0x4489fc)['then'](function(_0x125612){return _0x125612;});}return null;};}function removeEntity(_0x5a36f9,_0x302592){return function(_0x31610f){if(_0x31610f){return _0x31610f[_0xa35a('0x25')]()['then'](function(){_0x5a36f9[_0xa35a('0x1a')](0xcc)[_0xa35a('0x26')]();});}};}function handleEntityNotFound(_0x211993,_0x103bb2){return function(_0x4d4755){if(!_0x4d4755){_0x211993['sendStatus'](0x194);}return _0x4d4755;};}function handleError(_0x866457,_0x15f617){_0x15f617=_0x15f617||0x1f4;return function(_0x1d3381){logger[_0xa35a('0x27')](_0x1d3381[_0xa35a('0x28')]);if(_0x1d3381[_0xa35a('0x29')]){delete _0x1d3381[_0xa35a('0x29')];}_0x866457['status'](_0x15f617)[_0xa35a('0x2a')](_0x1d3381);};}exports[_0xa35a('0x2b')]=function(_0x3b127c,_0x3e8a68){var _0x47dd9a={'raw':!![],'where':{'id':_0x3b127c[_0xa35a('0x2c')]['id']}},_0x539d67={};_0x539d67[_0xa35a('0x2d')]=_[_0xa35a('0x2e')](db[_0xa35a('0x2f')][_0xa35a('0x30')]);_0x539d67[_0xa35a('0x31')]=_[_0xa35a('0x2e')](_0x3b127c[_0xa35a('0x31')]);_0x539d67[_0xa35a('0x32')]=_[_0xa35a('0x33')](_0x539d67['model'],_0x539d67[_0xa35a('0x31')]);_0x47dd9a[_0xa35a('0x34')]=_[_0xa35a('0x33')](_0x539d67['model'],qs[_0xa35a('0x35')](_0x3b127c[_0xa35a('0x31')][_0xa35a('0x35')]));_0x47dd9a[_0xa35a('0x34')]=_0x47dd9a[_0xa35a('0x34')][_0xa35a('0x36')]?_0x47dd9a[_0xa35a('0x34')]:_0x539d67[_0xa35a('0x2d')];if(_0x3b127c[_0xa35a('0x31')][_0xa35a('0x37')]){_0x47dd9a[_0xa35a('0x38')]=[{'all':!![]}];}_0x47dd9a=_['merge']({},_0x47dd9a,_0x3b127c[_0xa35a('0x39')]);return db['ChatProactiveAction'][_0xa35a('0x3a')](_0x47dd9a)[_0xa35a('0x3b')](handleEntityNotFound(_0x3e8a68,null))[_0xa35a('0x3b')](respondWithResult(_0x3e8a68,null))[_0xa35a('0x3c')](handleError(_0x3e8a68,null));};exports[_0xa35a('0x3d')]=function(_0x3c4ba5,_0x4f825f){return db['ChatProactiveAction'][_0xa35a('0x3d')](_0x3c4ba5[_0xa35a('0x3e')],{})[_0xa35a('0x3b')](respondWithResult(_0x4f825f,0xc9))[_0xa35a('0x3c')](handleError(_0x4f825f,null));};exports[_0xa35a('0x24')]=function(_0x1d4237,_0xbbc8ea){if(_0x1d4237[_0xa35a('0x3e')]['id']){delete _0x1d4237[_0xa35a('0x3e')]['id'];}return db[_0xa35a('0x2f')][_0xa35a('0x3a')]({'where':{'id':_0x1d4237[_0xa35a('0x2c')]['id']}})['then'](handleEntityNotFound(_0xbbc8ea,null))['then'](saveUpdates(_0x1d4237[_0xa35a('0x3e')],null))[_0xa35a('0x3b')](respondWithResult(_0xbbc8ea,null))[_0xa35a('0x3c')](handleError(_0xbbc8ea,null));};exports[_0xa35a('0x25')]=function(_0xf1aa87,_0x124a6b){return db['ChatProactiveAction'][_0xa35a('0x3a')]({'where':{'id':_0xf1aa87[_0xa35a('0x2c')]['id']}})[_0xa35a('0x3b')](handleEntityNotFound(_0x124a6b,null))['then'](removeEntity(_0x124a6b,null))[_0xa35a('0x3c')](handleError(_0x124a6b,null));};
\ No newline at end of file
index 2629edf..c33fc74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb732=['ChatProactiveAction','chat_proactive_actions','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./chatProactiveAction.attributes','define'];(function(_0x589002,_0x1c9c42){var _0x1ebe5a=function(_0x7f9547){while(--_0x7f9547){_0x589002['push'](_0x589002['shift']());}};_0x1ebe5a(++_0x1c9c42);}(_0xb732,0xa7));var _0x2b73=function(_0x2aae70,_0x1b8557){_0x2aae70=_0x2aae70-0x0;var _0x53c0bf=_0xb732[_0x2aae70];return _0x53c0bf;};'use strict';var _=require(_0x2b73('0x0'));var util=require('util');var logger=require(_0x2b73('0x1'))(_0x2b73('0x2'));var moment=require(_0x2b73('0x3'));var BPromise=require(_0x2b73('0x4'));var rp=require(_0x2b73('0x5'));var fs=require('fs');var path=require(_0x2b73('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2b73('0x7'));module['exports']=function(_0x5157a8,_0x218837){return _0x5157a8[_0x2b73('0x8')](_0x2b73('0x9'),attributes,{'tableName':_0x2b73('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x548e=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatProactiveAction','chat_proactive_actions'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x548e,0x1ad));var _0xe548=function(_0x112cfb,_0x376af2){_0x112cfb=_0x112cfb-0x0;var _0x345295=_0x548e[_0x112cfb];return _0x345295;};'use strict';var _=require(_0xe548('0x0'));var util=require(_0xe548('0x1'));var logger=require(_0xe548('0x2'))('api');var moment=require(_0xe548('0x3'));var BPromise=require(_0xe548('0x4'));var rp=require(_0xe548('0x5'));var fs=require('fs');var path=require(_0xe548('0x6'));var rimraf=require(_0xe548('0x7'));var config=require(_0xe548('0x8'));var attributes=require('./chatProactiveAction.attributes');module[_0xe548('0x9')]=function(_0x2afe02,_0x12fa34){return _0x2afe02[_0xe548('0xa')](_0xe548('0xb'),attributes,{'tableName':_0xe548('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59618d6..c56b7e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5c8=['info','ChatProactiveAction,\x20%s,\x20%s','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x51dd28,_0x29cf8e){var _0x1fc66e=function(_0x2abf54){while(--_0x2abf54){_0x51dd28['push'](_0x51dd28['shift']());}};_0x1fc66e(++_0x29cf8e);}(_0xe5c8,0x135));var _0x8e5c=function(_0x4a1775,_0x3b1e3e){_0x4a1775=_0x4a1775-0x0;var _0x30a179=_0xe5c8[_0x4a1775];return _0x30a179;};'use strict';var _=require('lodash');var util=require(_0x8e5c('0x0'));var moment=require(_0x8e5c('0x1'));var BPromise=require('bluebird');var rs=require(_0x8e5c('0x2'));var fs=require('fs');var Redis=require(_0x8e5c('0x3'));var db=require(_0x8e5c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e5c('0x5'))(_0x8e5c('0x6'));var config=require(_0x8e5c('0x7'));var jayson=require(_0x8e5c('0x8'));var client=jayson[_0x8e5c('0x9')][_0x8e5c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46fb28,_0x3f7fdb,_0x555b40){return new BPromise(function(_0x24b15f,_0x1894ed){return client[_0x8e5c('0xb')](_0x46fb28,_0x555b40)[_0x8e5c('0xc')](function(_0x18c81f){logger[_0x8e5c('0xd')](_0x8e5c('0xe'),_0x3f7fdb,'request\x20sent');logger[_0x8e5c('0xf')](_0x8e5c('0x10'),_0x3f7fdb,_0x8e5c('0x11'),JSON[_0x8e5c('0x12')](_0x18c81f));if(_0x18c81f[_0x8e5c('0x13')]){if(_0x18c81f[_0x8e5c('0x13')][_0x8e5c('0x14')]===0x1f4){logger['error'](_0x8e5c('0xe'),_0x3f7fdb,_0x18c81f[_0x8e5c('0x13')][_0x8e5c('0x15')]);return _0x1894ed(_0x18c81f[_0x8e5c('0x13')][_0x8e5c('0x15')]);}logger['error'](_0x8e5c('0xe'),_0x3f7fdb,_0x18c81f[_0x8e5c('0x13')][_0x8e5c('0x15')]);return _0x24b15f(_0x18c81f[_0x8e5c('0x13')][_0x8e5c('0x15')]);}else{logger[_0x8e5c('0xd')](_0x8e5c('0xe'),_0x3f7fdb,'request\x20sent');_0x24b15f(_0x18c81f[_0x8e5c('0x16')][_0x8e5c('0x15')]);}})['catch'](function(_0x44155e){logger[_0x8e5c('0x13')](_0x8e5c('0xe'),_0x3f7fdb,_0x44155e);_0x1894ed(_0x44155e);});});}
\ No newline at end of file
+var _0x791b=['moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','stringify','error','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0x2715ac,_0x24e151){var _0x2010fa=function(_0x441f79){while(--_0x441f79){_0x2715ac['push'](_0x2715ac['shift']());}};_0x2010fa(++_0x24e151);}(_0x791b,0xcb));var _0xb791=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x791b[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xb791('0x0'));var util=require('util');var moment=require(_0xb791('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb791('0x2'));var logger=require(_0xb791('0x3'))(_0xb791('0x4'));var config=require(_0xb791('0x5'));var jayson=require(_0xb791('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3cdf13,_0x4bdd9f,_0xe716b){return new BPromise(function(_0x559f4d,_0x5d0cd7){return client[_0xb791('0x7')](_0x3cdf13,_0xe716b)[_0xb791('0x8')](function(_0xda96e4){logger[_0xb791('0x9')]('ChatProactiveAction,\x20%s,\x20%s',_0x4bdd9f,_0xb791('0xa'));logger['debug']('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x4bdd9f,_0xb791('0xa'),JSON[_0xb791('0xb')](_0xda96e4));if(_0xda96e4[_0xb791('0xc')]){if(_0xda96e4[_0xb791('0xc')]['code']===0x1f4){logger[_0xb791('0xc')](_0xb791('0xd'),_0x4bdd9f,_0xda96e4[_0xb791('0xc')]['message']);return _0x5d0cd7(_0xda96e4['error']['message']);}logger[_0xb791('0xc')](_0xb791('0xd'),_0x4bdd9f,_0xda96e4['error'][_0xb791('0xe')]);return _0x559f4d(_0xda96e4['error'][_0xb791('0xe')]);}else{logger[_0xb791('0x9')](_0xb791('0xd'),_0x4bdd9f,_0xb791('0xa'));_0x559f4d(_0xda96e4[_0xb791('0xf')][_0xb791('0xe')]);}})[_0xb791('0x10')](function(_0x2b5290){logger[_0xb791('0xc')](_0xb791('0xd'),_0x4bdd9f,_0x2b5290);_0x5d0cd7(_0x2b5290);});});}
\ No newline at end of file
index 03cee4a..15fe483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','put','update','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x16f287,_0x20a1f8){var _0x1f74ad=function(_0x5daa28){while(--_0x5daa28){_0x16f287['push'](_0x16f287['shift']());}};_0x1f74ad(++_0x20a1f8);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd7df('0x0'));var util=require(_0xd7df('0x1'));var path=require(_0xd7df('0x2'));var timeout=require(_0xd7df('0x3'));var express=require(_0xd7df('0x4'));var router=express[_0xd7df('0x5')]();var fs_extra=require(_0xd7df('0x6'));var auth=require(_0xd7df('0x7'));var interaction=require(_0xd7df('0x8'));var config=require(_0xd7df('0x9'));var controller=require(_0xd7df('0xa'));router[_0xd7df('0xb')](_0xd7df('0xc'),auth[_0xd7df('0xd')](),controller[_0xd7df('0xe')]);router[_0xd7df('0xf')]('/',auth[_0xd7df('0xd')](),controller['create']);router[_0xd7df('0x10')](_0xd7df('0xc'),auth[_0xd7df('0xd')](),controller[_0xd7df('0x11')]);router['delete'](_0xd7df('0xc'),auth['isAuthenticated'](),controller[_0xd7df('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xeda8=['get','/:id','isAuthenticated','show','create','put','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller'];(function(_0x2ee447,_0x24858c){var _0x5cacf7=function(_0x422793){while(--_0x422793){_0x2ee447['push'](_0x2ee447['shift']());}};_0x5cacf7(++_0x24858c);}(_0xeda8,0x104));var _0x8eda=function(_0x36d4b7,_0x4591bc){_0x36d4b7=_0x36d4b7-0x0;var _0xedac39=_0xeda8[_0x36d4b7];return _0xedac39;};'use strict';var multer=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var path=require('path');var timeout=require(_0x8eda('0x2'));var express=require(_0x8eda('0x3'));var router=express[_0x8eda('0x4')]();var fs_extra=require(_0x8eda('0x5'));var auth=require(_0x8eda('0x6'));var interaction=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var controller=require(_0x8eda('0x9'));router[_0x8eda('0xa')](_0x8eda('0xb'),auth[_0x8eda('0xc')](),controller[_0x8eda('0xd')]);router['post']('/',auth[_0x8eda('0xc')](),controller[_0x8eda('0xe')]);router[_0x8eda('0xf')](_0x8eda('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x8eda('0xc')](),controller[_0x8eda('0x10')]);module[_0x8eda('0x11')]=router;
\ No newline at end of file
index 493db1b..3e04a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58c6=['rrmemory','roundrobin','sequelize','exports','STRING','name','ENUM'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x58c6,0x167));var _0x658c=function(_0x2c8b7a,_0x483fe0){_0x2c8b7a=_0x2c8b7a-0x0;var _0x1c1cf9=_0x58c6[_0x2c8b7a];return _0x1c1cf9;};'use strict';var Sequelize=require(_0x658c('0x0'));module[_0x658c('0x1')]={'name':{'type':Sequelize[_0x658c('0x2')],'unique':_0x658c('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x658c('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x658c('0x4')](_0x658c('0x5'),'beepall',_0x658c('0x6'))}};
\ No newline at end of file
+var _0x17ca=['INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','STRING','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x17ca,0x6c));var _0xa17c=function(_0x159ab5,_0x1a3e1d){_0x159ab5=_0x159ab5-0x0;var _0x25feb7=_0x17ca[_0x159ab5];return _0x25feb7;};'use strict';var Sequelize=require(_0xa17c('0x0'));module[_0xa17c('0x1')]={'name':{'type':Sequelize[_0xa17c('0x2')],'unique':_0xa17c('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa17c('0x2')]},'timeout':{'type':Sequelize[_0xa17c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa17c('0x5')](_0xa17c('0x6'),'beepall',_0xa17c('0x7'))}};
\ No newline at end of file
index c376868..5a64496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33ca=['rows','%s/%s','SIP','getTeams','Team','addTeams','online','voicePause','interface','flatMap','Agents','each','forEach','emit','removeTeams','ids','field','team_has_chat_queues','join','user_has_teams','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','compact','value','removeAgents','userChatQueue:remove','addAgents','omit','userChatQueue:save','isArray','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','squel','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','destroy','get','ChatQueues','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','order','sort','where','filter','merge','options','includeAll','include','ChatQueue','findAll','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','describe','getMembers','findOne','hasOwnProperty','nolimit','pick','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x33ca,0x1da));var _0xa33c=function(_0x21fe98,_0x429019){_0x21fe98=_0x21fe98-0x0;var _0x49e2eb=_0x33ca[_0x21fe98];return _0x49e2eb;};'use strict';var emlformat=require(_0xa33c('0x0'));var rimraf=require(_0xa33c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa33c('0x2'));var rp=require('request-promise');var moment=require(_0xa33c('0x3'));var BPromise=require(_0xa33c('0x4'));var Mustache=require(_0xa33c('0x5'));var util=require('util');var path=require(_0xa33c('0x6'));var sox=require(_0xa33c('0x7'));var csv=require('to-csv');var ejs=require(_0xa33c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa33c('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa33c('0xa'));var toCsv=require(_0xa33c('0xb'));var querystring=require('querystring');var Papa=require(_0xa33c('0xc'));var Redis=require(_0xa33c('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa33c('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa33c('0xf'));var config=require('../../config/environment');var licenseUtil=require(_0xa33c('0x10'));var db=require(_0xa33c('0x11'))['db'];config[_0xa33c('0x12')]=_[_0xa33c('0x13')](config['redis'],{'host':_0xa33c('0x14'),'port':0x18eb});var socket=require(_0xa33c('0x15'))(new Redis(config['redis']));require(_0xa33c('0x16'))[_0xa33c('0x17')](socket);var jayson=require(_0xa33c('0x18'));var client=jayson[_0xa33c('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb32700,_0x4e4ec7,_0x1ef121,_0x2120ed){return new BPromise(function(_0x2a9fa6,_0xc9371d){var _0x1a0313=_0x2120ed||client;return _0x1a0313[_0xa33c('0x1a')](_0xb32700,_0x1ef121)[_0xa33c('0x1b')](function(_0x2ca48b){logger['info'](_0xa33c('0x1c'),_0x4e4ec7,_0xa33c('0x1d'));logger[_0xa33c('0x1e')](_0xa33c('0x1f'),_0x4e4ec7,_0xa33c('0x1d'),JSON[_0xa33c('0x20')](_0x2ca48b));if(_0x2ca48b[_0xa33c('0x21')]){if(_0x2ca48b[_0xa33c('0x21')][_0xa33c('0x22')]===0x1f4){logger[_0xa33c('0x21')](_0xa33c('0x1c'),_0x4e4ec7,_0x2ca48b[_0xa33c('0x21')][_0xa33c('0x23')]);return _0xc9371d(_0x2ca48b[_0xa33c('0x21')][_0xa33c('0x23')]);}logger[_0xa33c('0x21')](_0xa33c('0x1c'),_0x4e4ec7,_0x2ca48b[_0xa33c('0x21')][_0xa33c('0x23')]);return _0x2a9fa6(_0x2ca48b[_0xa33c('0x21')][_0xa33c('0x23')]);}else{logger[_0xa33c('0x24')](_0xa33c('0x1c'),_0x4e4ec7,_0xa33c('0x1d'));_0x2a9fa6(_0x2ca48b['result']['message']);}})[_0xa33c('0x25')](function(_0x4d45c4){logger[_0xa33c('0x21')]('ChatQueue,\x20%s,\x20%s',_0x4e4ec7,_0x4d45c4);_0xc9371d(_0x4d45c4);});});}function respondWithStatusCode(_0x2f50a1,_0x5d3560){_0x5d3560=_0x5d3560||0xcc;return function(_0x4a9d96){if(_0x4a9d96){return _0x2f50a1[_0xa33c('0x26')](_0x5d3560);}return _0x2f50a1['status'](_0x5d3560)[_0xa33c('0x27')]();};}function respondWithResult(_0x2ee26b,_0x34ebf4){_0x34ebf4=_0x34ebf4||0xc8;return function(_0x213833){if(_0x213833){return _0x2ee26b['status'](_0x34ebf4)[_0xa33c('0x28')](_0x213833);}};}function respondWithFilteredResult(_0x22ad54,_0x542ffd){return function(_0x3369e8){if(_0x3369e8){var _0x7b60fb=typeof _0x542ffd[_0xa33c('0x29')]===_0xa33c('0x2a')&&typeof _0x542ffd[_0xa33c('0x2b')]===_0xa33c('0x2a');var _0x2d1601=_0x3369e8[_0xa33c('0x2c')];var _0x3de634=_0x7b60fb?0x0:_0x542ffd[_0xa33c('0x29')];var _0x126b5d=_0x7b60fb?_0x3369e8[_0xa33c('0x2c')]:_0x542ffd[_0xa33c('0x29')]+_0x542ffd[_0xa33c('0x2b')];var _0xc41c32;if(_0x126b5d>=_0x2d1601){_0x126b5d=_0x2d1601;_0xc41c32=0xc8;}else{_0xc41c32=0xce;}_0x22ad54[_0xa33c('0x2d')](_0xc41c32);return _0x22ad54[_0xa33c('0x2e')](_0xa33c('0x2f'),_0x3de634+'-'+_0x126b5d+'/'+_0x2d1601)[_0xa33c('0x28')](_0x3369e8);}return null;};}function patchUpdates(_0x2e4463){return function(_0x3b805a){try{jsonpatch['apply'](_0x3b805a,_0x2e4463,!![]);}catch(_0x31e4e5){return BPromise[_0xa33c('0x30')](_0x31e4e5);}return _0x3b805a[_0xa33c('0x31')]();};}function saveUpdates(_0x45e55c,_0x435d40){return function(_0x3070fc){if(_0x3070fc){return _0x3070fc[_0xa33c('0x32')](_0x45e55c)[_0xa33c('0x1b')](function(_0x46f658){return _0x46f658;});}return null;};}function removeEntity(_0x3bf9d6,_0x53b799){return function(_0x4b844c){if(_0x4b844c){return _0x4b844c[_0xa33c('0x33')]()[_0xa33c('0x1b')](function(){var _0xc0ee50=_0x4b844c[_0xa33c('0x34')]({'plain':!![]});var _0x3c9f2b=_0xa33c('0x35');return db[_0xa33c('0x36')][_0xa33c('0x33')]({'where':{'type':_0x3c9f2b,'resourceId':_0xc0ee50['id']}})['then'](function(){return _0x4b844c;});})[_0xa33c('0x1b')](function(){_0x3bf9d6[_0xa33c('0x2d')](0xcc)[_0xa33c('0x27')]();});}};}function handleEntityNotFound(_0x289be6,_0x13574f){return function(_0x3b3513){if(!_0x3b3513){_0x289be6[_0xa33c('0x26')](0x194);}return _0x3b3513;};}function handleError(_0x25a886,_0x3e082b){_0x3e082b=_0x3e082b||0x1f4;return function(_0x3218d5){logger[_0xa33c('0x21')](_0x3218d5[_0xa33c('0x37')]);if(_0x3218d5[_0xa33c('0x38')]){delete _0x3218d5[_0xa33c('0x38')];}_0x25a886[_0xa33c('0x2d')](_0x3e082b)[_0xa33c('0x39')](_0x3218d5);};}exports[_0xa33c('0x3a')]=function(_0x5d05a9,_0x3b9c2a){var _0x31e30c={},_0x544276={},_0x3c6b96={'count':0x0,'rows':[]};var _0x59b943=_[_0xa33c('0x3b')](db['ChatQueue'][_0xa33c('0x3c')],function(_0xfde6a9){return{'name':_0xfde6a9[_0xa33c('0x3d')],'type':_0xfde6a9[_0xa33c('0x3e')][_0xa33c('0x3f')]};});_0x544276['model']=_['map'](_0x59b943,_0xa33c('0x38'));_0x544276['query']=_['keys'](_0x5d05a9[_0xa33c('0x40')]);_0x544276[_0xa33c('0x41')]=_[_0xa33c('0x42')](_0x544276[_0xa33c('0x43')],_0x544276[_0xa33c('0x40')]);_0x31e30c[_0xa33c('0x44')]=_['intersection'](_0x544276[_0xa33c('0x43')],qs[_0xa33c('0x45')](_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x45')]));_0x31e30c[_0xa33c('0x44')]=_0x31e30c[_0xa33c('0x44')][_0xa33c('0x46')]?_0x31e30c[_0xa33c('0x44')]:_0x544276[_0xa33c('0x43')];if(!_0x5d05a9[_0xa33c('0x40')]['hasOwnProperty']('nolimit')){_0x31e30c[_0xa33c('0x2b')]=qs[_0xa33c('0x2b')](_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x2b')]);_0x31e30c[_0xa33c('0x29')]=qs[_0xa33c('0x29')](_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x29')]);}_0x31e30c[_0xa33c('0x47')]=qs['sort'](_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x48')]);_0x31e30c[_0xa33c('0x49')]=qs[_0xa33c('0x41')](_['pick'](_0x5d05a9['query'],_0x544276[_0xa33c('0x41')]),_0x59b943);if(_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x4a')]){_0x31e30c[_0xa33c('0x49')]=_['merge'](_0x31e30c[_0xa33c('0x49')],{'$or':_['map'](_0x59b943,function(_0x1a7785){if(_0x1a7785['type']!=='VIRTUAL'){var _0x451e37={};_0x451e37[_0x1a7785[_0xa33c('0x38')]]={'$like':'%'+_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x4a')]+'%'};return _0x451e37;}})});}_0x31e30c=_[_0xa33c('0x4b')]({},_0x31e30c,_0x5d05a9[_0xa33c('0x4c')]);var _0x2cf4ae={'where':_0x31e30c[_0xa33c('0x49')]};return db['ChatQueue'][_0xa33c('0x2c')](_0x2cf4ae)[_0xa33c('0x1b')](function(_0x3da99c){_0x3c6b96[_0xa33c('0x2c')]=_0x3da99c;if(_0x5d05a9[_0xa33c('0x40')][_0xa33c('0x4d')]){_0x31e30c[_0xa33c('0x4e')]=[{'all':!![]}];}return db[_0xa33c('0x4f')][_0xa33c('0x50')](_0x31e30c);})[_0xa33c('0x1b')](function(_0x3162a5){_0x3c6b96['rows']=_0x3162a5;return _0x3c6b96;})[_0xa33c('0x1b')](respondWithFilteredResult(_0x3b9c2a,_0x31e30c))['catch'](handleError(_0x3b9c2a,null));};exports[_0xa33c('0x51')]=function(_0x808cfb,_0x1886c1){var _0x595647={'raw':!![],'where':{'id':_0x808cfb[_0xa33c('0x52')]['id']}},_0x186063={};_0x186063[_0xa33c('0x43')]=_[_0xa33c('0x53')](db[_0xa33c('0x4f')][_0xa33c('0x3c')]);_0x186063['query']=_['keys'](_0x808cfb[_0xa33c('0x40')]);_0x186063[_0xa33c('0x41')]=_[_0xa33c('0x42')](_0x186063[_0xa33c('0x43')],_0x186063[_0xa33c('0x40')]);_0x595647['attributes']=_[_0xa33c('0x42')](_0x186063['model'],qs['fields'](_0x808cfb[_0xa33c('0x40')][_0xa33c('0x45')]));_0x595647['attributes']=_0x595647[_0xa33c('0x44')][_0xa33c('0x46')]?_0x595647['attributes']:_0x186063['model'];if(_0x808cfb[_0xa33c('0x40')][_0xa33c('0x4d')]){_0x595647[_0xa33c('0x4e')]=[{'all':!![]}];}_0x595647=_[_0xa33c('0x4b')]({},_0x595647,_0x808cfb['options']);return db[_0xa33c('0x4f')][_0xa33c('0x54')](_0x595647)[_0xa33c('0x1b')](handleEntityNotFound(_0x1886c1,null))[_0xa33c('0x1b')](respondWithResult(_0x1886c1,null))[_0xa33c('0x25')](handleError(_0x1886c1,null));};exports[_0xa33c('0x55')]=function(_0x237dd3,_0x35b8b8){return db[_0xa33c('0x4f')][_0xa33c('0x55')](_0x237dd3[_0xa33c('0x56')],{})[_0xa33c('0x1b')](function(_0x3643f0){var _0x13abc5=_0x237dd3[_0xa33c('0x57')][_0xa33c('0x34')]({'plain':!![]});if(!_0x13abc5)throw new Error(_0xa33c('0x58'));if(_0x13abc5[_0xa33c('0x59')]===_0xa33c('0x57')){var _0x3fbe4f=_0x3643f0['get']({'plain':!![]});var _0x34b1e5=_0xa33c('0x35');return db[_0xa33c('0x5a')][_0xa33c('0x54')]({'where':{'name':_0x34b1e5,'userProfileId':_0x13abc5[_0xa33c('0x5b')]},'raw':!![]})[_0xa33c('0x1b')](function(_0x17ce73){if(_0x17ce73&&_0x17ce73['autoAssociation']===0x0){return db[_0xa33c('0x36')]['create']({'name':_0x3fbe4f[_0xa33c('0x38')],'resourceId':_0x3fbe4f['id'],'type':_0x17ce73[_0xa33c('0x38')],'sectionId':_0x17ce73['id']},{})[_0xa33c('0x1b')](function(){return _0x3643f0;});}else{return _0x3643f0;}})[_0xa33c('0x25')](function(_0x462680){logger[_0xa33c('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x462680);throw _0x462680;});}return _0x3643f0;})[_0xa33c('0x1b')](respondWithResult(_0x35b8b8,0xc9))[_0xa33c('0x25')](handleError(_0x35b8b8,null));};exports[_0xa33c('0x32')]=function(_0x87599b,_0x51dfe3){if(_0x87599b['body']['id']){delete _0x87599b[_0xa33c('0x56')]['id'];}return db[_0xa33c('0x4f')][_0xa33c('0x54')]({'where':{'id':_0x87599b[_0xa33c('0x52')]['id']}})['then'](handleEntityNotFound(_0x51dfe3,null))['then'](saveUpdates(_0x87599b[_0xa33c('0x56')],null))[_0xa33c('0x1b')](respondWithResult(_0x51dfe3,null))[_0xa33c('0x25')](handleError(_0x51dfe3,null));};exports[_0xa33c('0x33')]=function(_0x338fe9,_0x5d6ce1){return db[_0xa33c('0x4f')]['find']({'where':{'id':_0x338fe9['params']['id']}})['then'](handleEntityNotFound(_0x5d6ce1,null))['then'](removeEntity(_0x5d6ce1,null))[_0xa33c('0x25')](handleError(_0x5d6ce1,null));};exports[_0xa33c('0x5c')]=function(_0xacace0,_0xdaca6a){return db[_0xa33c('0x4f')][_0xa33c('0x5c')]()['then'](respondWithResult(_0xdaca6a,null))[_0xa33c('0x25')](handleError(_0xdaca6a,null));};exports[_0xa33c('0x5d')]=function(_0x51ead2,_0x24867f,_0x5327d7){var _0x13634f={'raw':!![],'where':{}},_0xb8631c={},_0x1b7633;return db['ChatQueue'][_0xa33c('0x5e')]({'where':{'id':_0x51ead2['params']['id']}})[_0xa33c('0x1b')](handleEntityNotFound(_0x24867f,null))[_0xa33c('0x1b')](function(_0x5961b0){if(_0x5961b0){_0x1b7633=_0x5961b0[_0xa33c('0x34')]({'plain':!![]});_0xb8631c[_0xa33c('0x43')]=_['keys'](db['UserChatQueue'][_0xa33c('0x3c')]);_0xb8631c[_0xa33c('0x40')]=_[_0xa33c('0x53')](_0x51ead2['query']);_0xb8631c['filters']=_[_0xa33c('0x42')](_0xb8631c[_0xa33c('0x43')],_0xb8631c[_0xa33c('0x40')]);_0x13634f['attributes']=_[_0xa33c('0x42')](_0xb8631c[_0xa33c('0x43')],qs['fields'](_0x51ead2[_0xa33c('0x40')]['fields']));_0x13634f[_0xa33c('0x44')]=_0x13634f[_0xa33c('0x44')]['length']?_0x13634f[_0xa33c('0x44')]:_0xb8631c['model'];if(!_0x51ead2[_0xa33c('0x40')][_0xa33c('0x5f')](_0xa33c('0x60'))){_0x13634f[_0xa33c('0x2b')]=qs['limit'](_0x51ead2[_0xa33c('0x40')]['limit']);_0x13634f['offset']=qs[_0xa33c('0x29')](_0x51ead2[_0xa33c('0x40')][_0xa33c('0x29')]);}_0x13634f[_0xa33c('0x47')]=qs[_0xa33c('0x48')](_0x51ead2[_0xa33c('0x40')][_0xa33c('0x48')]);_0x13634f[_0xa33c('0x49')]=qs[_0xa33c('0x41')](_[_0xa33c('0x61')](_0x51ead2[_0xa33c('0x40')],_0xb8631c[_0xa33c('0x41')]));_0x13634f[_0xa33c('0x49')][_0xa33c('0x62')]=_0x5961b0['id'];if(_0x51ead2[_0xa33c('0x40')][_0xa33c('0x4a')]){_0x13634f[_0xa33c('0x49')]=_['merge'](_0x13634f[_0xa33c('0x49')],{'$or':_[_0xa33c('0x3b')](_0x13634f[_0xa33c('0x44')],function(_0x2410e8){var _0x2900a3={};_0x2900a3[_0x2410e8]={'$like':'%'+_0x51ead2[_0xa33c('0x40')][_0xa33c('0x4a')]+'%'};return _0x2900a3;})});}_0x13634f=_[_0xa33c('0x4b')]({},_0x13634f,_0x51ead2[_0xa33c('0x4c')]);return db['UserChatQueue'][_0xa33c('0x50')](_0x13634f);}})['then'](function(_0x39584c){if(_0x39584c){return db[_0xa33c('0x63')][_0xa33c('0x64')]({'where':{'id':_[_0xa33c('0x3b')](_0x39584c,_0xa33c('0x65')),'role':_0xa33c('0x66')},'attributes':['id',_0xa33c('0x38'),_0xa33c('0x67'),_0xa33c('0x68'),_0xa33c('0x69')]});}})['then'](function(_0x52ba05){if(_0x52ba05){return{'count':_0x52ba05[_0xa33c('0x2c')],'rows':_[_0xa33c('0x3b')](_0x52ba05[_0xa33c('0x6a')],function(_0x154652){return{'membername':_0x154652[_0xa33c('0x38')],'UserId':_0x154652['id'],'queue_name':_0x1b7633[_0xa33c('0x38')],'ChatQueueId':_0x1b7633['id'],'interface':util['format'](_0xa33c('0x6b'),_0xa33c('0x6c'),_0x154652[_0xa33c('0x38')]),'penalty':0x0,'paused':_0x154652['chatPause'],'createdAt':_0x154652['createdAt'],'updatedAt':_0x154652['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x24867f,_0x13634f))['catch'](handleError(_0x24867f,null));};exports[_0xa33c('0x6d')]=function(_0xf5d6c8,_0x289642,_0x442bf2){var _0x4ac5aa={};var _0x289519={};var _0x15b2c1;var _0x5e7ba0;return db[_0xa33c('0x4f')][_0xa33c('0x5e')]({'where':{'id':_0xf5d6c8[_0xa33c('0x52')]['id']}})[_0xa33c('0x1b')](handleEntityNotFound(_0x289642,null))[_0xa33c('0x1b')](function(_0x12b695){if(_0x12b695){_0x15b2c1=_0x12b695;_0x289519['model']=_[_0xa33c('0x53')](db[_0xa33c('0x6e')]['rawAttributes']);_0x289519[_0xa33c('0x40')]=_['keys'](_0xf5d6c8[_0xa33c('0x40')]);_0x289519[_0xa33c('0x41')]=_['intersection'](_0x289519[_0xa33c('0x43')],_0x289519[_0xa33c('0x40')]);_0x4ac5aa[_0xa33c('0x44')]=_['intersection'](_0x289519[_0xa33c('0x43')],qs[_0xa33c('0x45')](_0xf5d6c8['query'][_0xa33c('0x45')]));_0x4ac5aa[_0xa33c('0x44')]=_0x4ac5aa[_0xa33c('0x44')][_0xa33c('0x46')]?_0x4ac5aa[_0xa33c('0x44')]:_0x289519[_0xa33c('0x43')];_0x4ac5aa['order']=qs[_0xa33c('0x48')](_0xf5d6c8[_0xa33c('0x40')][_0xa33c('0x48')]);_0x4ac5aa[_0xa33c('0x49')]=qs[_0xa33c('0x41')](_[_0xa33c('0x61')](_0xf5d6c8[_0xa33c('0x40')],_0x289519['filters']));if(_0xf5d6c8[_0xa33c('0x40')]['filter']){_0x4ac5aa[_0xa33c('0x49')]=_['merge'](_0x4ac5aa['where'],{'$or':_['map'](_0x4ac5aa[_0xa33c('0x44')],function(_0x3e26f5){var _0x5c05db={};_0x5c05db[_0x3e26f5]={'$like':'%'+_0xf5d6c8['query']['filter']+'%'};return _0x5c05db;})});}_0x4ac5aa=_[_0xa33c('0x4b')]({},_0x4ac5aa,_0xf5d6c8['options']);return _0x15b2c1[_0xa33c('0x6d')](_0x4ac5aa);}})[_0xa33c('0x1b')](function(_0x1ea5b0){if(_0x1ea5b0){_0x5e7ba0=_0x1ea5b0[_0xa33c('0x46')];if(!_0xf5d6c8[_0xa33c('0x40')][_0xa33c('0x5f')](_0xa33c('0x60'))){_0x4ac5aa['limit']=qs[_0xa33c('0x2b')](_0xf5d6c8[_0xa33c('0x40')][_0xa33c('0x2b')]);_0x4ac5aa['offset']=qs[_0xa33c('0x29')](_0xf5d6c8['query'][_0xa33c('0x29')]);}return _0x15b2c1[_0xa33c('0x6d')](_0x4ac5aa);}})['then'](function(_0xf366e3){if(_0xf366e3){return _0xf366e3?{'count':_0x5e7ba0,'rows':_0xf366e3}:null;}})[_0xa33c('0x1b')](respondWithResult(_0x289642,null))[_0xa33c('0x25')](handleError(_0x289642,null));};exports[_0xa33c('0x6f')]=function(_0x9b0951,_0x5c71fb,_0x481e3d){var _0x49f387=_0x9b0951[_0xa33c('0x56')]['ids'];return db['Team'][_0xa33c('0x50')]({'where':{'id':_0x49f387},'attributes':['id'],'include':[{'model':db[_0xa33c('0x63')],'as':'Agents','attributes':['id','name',_0xa33c('0x70'),_0xa33c('0x71'),_0xa33c('0x72')],'raw':!![]}]})['then'](function(_0x2daaaf){if(_0x2daaaf){var _0x24c435=_[_0xa33c('0x73')](_0x2daaaf,function(_0x46b0cc){var _0x31b929=_0x46b0cc[_0xa33c('0x34')]({'plain':!![]});return _0x31b929[_0xa33c('0x74')];});return db['ChatQueue'][_0xa33c('0x54')]({'where':{'id':_0x9b0951['params']['id']}})['then'](function(_0x4070e8){return db['sequelize']['transaction'](function(_0x5653ba){return _0x4070e8[_0xa33c('0x6f')](_0x49f387,{'transaction':_0x5653ba})['then'](function(){return BPromise[_0xa33c('0x75')](_0x24c435,function(_0xcaa2bd){return db['UserChatQueue']['findOrCreate']({'where':{'UserId':_0xcaa2bd['id'],'ChatQueueId':_0x9b0951[_0xa33c('0x52')]['id']},'transaction':_0x5653ba});});})[_0xa33c('0x1b')](function(){_0x24c435[_0xa33c('0x76')](function(_0x4250a0){socket[_0xa33c('0x77')]('userChatQueue:save',{'UserId':_0x4250a0['id'],'ChatQueueId':_0x4070e8['id']});});});});});}})[_0xa33c('0x1b')](respondWithStatusCode(_0x5c71fb,null))['catch'](handleError(_0x5c71fb,null));};exports[_0xa33c('0x78')]=function(_0xb30779,_0x549dcb,_0x1636f0){return db[_0xa33c('0x6e')][_0xa33c('0x50')]({'where':{'id':_0xb30779[_0xa33c('0x40')][_0xa33c('0x79')]},'attributes':['id'],'include':[{'model':db[_0xa33c('0x63')],'as':_0xa33c('0x74'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x549dcb,null))['then'](function(_0xf4802b){var _0x7de84b=_[_0xa33c('0x3b')](_0xf4802b,'id');var _0x2a7f6a=[];var _0x5a348c=[];var _0x1725ad=squel['select']();_0x1725ad[_0xa33c('0x7a')]('tq.TeamId')['from'](_0xa33c('0x7b'),'tq')[_0xa33c('0x7c')](_0xa33c('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa33c('0x49')]('ChatQueueId\x20=\x20?',_0xb30779[_0xa33c('0x52')]['id']);for(var _0x2311fe=0x0;_0x2311fe<_0xf4802b[_0xa33c('0x46')];_0x2311fe+=0x1){let _0x2c428a=_0xf4802b[_0x2311fe];for(var _0x1c27b5=0x0;_0x1c27b5<_0x2c428a[_0xa33c('0x74')][_0xa33c('0x46')];_0x1c27b5+=0x1){let _0x3ee5df=_0x2c428a[_0xa33c('0x74')][_0x1c27b5];var _0x32fafc=_0x1725ad[_0xa33c('0x7e')]();_0x32fafc['where'](_0xa33c('0x7f'),_0x3ee5df['id']);_0x5a348c[_0xa33c('0x80')](db[_0xa33c('0x81')][_0xa33c('0x40')](_0x32fafc[_0xa33c('0x82')](),{'type':db[_0xa33c('0x81')][_0xa33c('0x83')][_0xa33c('0x84')]})[_0xa33c('0x1b')](function(_0x360043){if(_0x360043[_0xa33c('0x46')]===0x1){return _0x3ee5df['id'];}else{var _0x347f37=_['every'](_[_0xa33c('0x3b')](_0x360043,_0xa33c('0x85')),function(_0x3fb7b1){return _[_0xa33c('0x86')](_0x7de84b,_0x3fb7b1);});if(_0x347f37){return _0x3ee5df['id'];}}}));}}return BPromise[_0xa33c('0x87')](_0x5a348c)[_0xa33c('0x1b')](function(_0x3435df){_0x2a7f6a=_(_0x2a7f6a)['union'](_0x3435df)[_0xa33c('0x88')]()[_0xa33c('0x89')]();return db['ChatQueue'][_0xa33c('0x54')]({'where':{'id':_0xb30779[_0xa33c('0x52')]['id']}})[_0xa33c('0x1b')](function(_0x14575c){return db[_0xa33c('0x81')]['transaction'](function(_0x6029ad){return _0x14575c['removeTeams'](_0xb30779[_0xa33c('0x40')]['ids'],{'transaction':_0x6029ad})['then'](function(){if(!_['isEmpty'](_0x2a7f6a)){return _0x14575c[_0xa33c('0x8a')](_0x2a7f6a,{'transaction':_0x6029ad});}})[_0xa33c('0x1b')](function(){_0x2a7f6a[_0xa33c('0x76')](function(_0x5b98c0){socket[_0xa33c('0x77')](_0xa33c('0x8b'),{'UserId':_0x5b98c0,'ChatQueueId':_0x14575c['id']});});});});});});})[_0xa33c('0x1b')](respondWithStatusCode(_0x549dcb,null))[_0xa33c('0x25')](handleError(_0x549dcb,null));};exports['addAgents']=function(_0x4df6ca,_0x51a707,_0x2c315b){return db[_0xa33c('0x4f')][_0xa33c('0x54')]({'where':{'id':_0x4df6ca[_0xa33c('0x52')]['id']}})[_0xa33c('0x1b')](handleEntityNotFound(_0x51a707,null))[_0xa33c('0x1b')](function(_0x15f00b){if(_0x15f00b){return _0x15f00b[_0xa33c('0x8c')](_0x4df6ca[_0xa33c('0x56')]['ids'],_[_0xa33c('0x8d')](_0x4df6ca['body'],['ids','id'])||{})['spread'](function(_0xfd300a){for(var _0x34631a=0x0;_0x34631a<_0x4df6ca[_0xa33c('0x56')][_0xa33c('0x79')]['length'];_0x34631a+=0x1){socket[_0xa33c('0x77')](_0xa33c('0x8e'),{'UserId':Number(_0x4df6ca[_0xa33c('0x56')][_0xa33c('0x79')][_0x34631a]),'ChatQueueId':Number(_0x4df6ca['params']['id'])});}return _0xfd300a;});}})['then'](respondWithResult(_0x51a707,null))[_0xa33c('0x25')](handleError(_0x51a707,null));};exports[_0xa33c('0x8a')]=function(_0x4cff4c,_0x4fd316,_0x2541b4){return db[_0xa33c('0x4f')][_0xa33c('0x54')]({'where':{'id':_0x4cff4c['params']['id']}})[_0xa33c('0x1b')](handleEntityNotFound(_0x4fd316,null))[_0xa33c('0x1b')](function(_0x2c9c31){if(_0x2c9c31){return _0x2c9c31[_0xa33c('0x8a')](_0x4cff4c[_0xa33c('0x40')][_0xa33c('0x79')])[_0xa33c('0x1b')](function(){if(_[_0xa33c('0x8f')](_0x4cff4c['query']['ids'])){for(var _0x1b5dc1=0x0;_0x1b5dc1<_0x4cff4c[_0xa33c('0x40')][_0xa33c('0x79')]['length'];_0x1b5dc1+=0x1){socket[_0xa33c('0x77')](_0xa33c('0x8b'),{'UserId':Number(_0x4cff4c[_0xa33c('0x40')][_0xa33c('0x79')][_0x1b5dc1]),'ChatQueueId':Number(_0x4cff4c[_0xa33c('0x52')]['id'])});}}else{socket[_0xa33c('0x77')](_0xa33c('0x8b'),{'UserId':Number(_0x4cff4c[_0xa33c('0x40')][_0xa33c('0x79')]),'ChatQueueId':Number(_0x4cff4c[_0xa33c('0x52')]['id'])});}});}})[_0xa33c('0x1b')](respondWithStatusCode(_0x4fd316,null))[_0xa33c('0x25')](handleError(_0x4fd316,null));};exports[_0xa33c('0x90')]=function(_0x3c4d5f,_0x21bbc6,_0x58d316){var _0x32f6f5={};var _0x283f28={};var _0xf19fcd;var _0x412d0d;return db['ChatQueue'][_0xa33c('0x5e')]({'where':{'id':_0x3c4d5f[_0xa33c('0x52')]['id']}})[_0xa33c('0x1b')](handleEntityNotFound(_0x21bbc6,null))[_0xa33c('0x1b')](function(_0x49de3a){if(_0x49de3a){_0xf19fcd=_0x49de3a;_0x283f28['model']=_[_0xa33c('0x53')](db[_0xa33c('0x63')][_0xa33c('0x3c')]);_0x283f28[_0xa33c('0x40')]=_[_0xa33c('0x53')](_0x3c4d5f[_0xa33c('0x40')]);_0x283f28['filters']=_[_0xa33c('0x42')](_0x283f28[_0xa33c('0x43')],_0x283f28[_0xa33c('0x40')]);_0x32f6f5[_0xa33c('0x44')]=_[_0xa33c('0x42')](_0x283f28[_0xa33c('0x43')],qs[_0xa33c('0x45')](_0x3c4d5f[_0xa33c('0x40')]['fields']));_0x32f6f5[_0xa33c('0x44')]=_0x32f6f5[_0xa33c('0x44')][_0xa33c('0x46')]?_0x32f6f5[_0xa33c('0x44')]:_0x283f28['model'];_0x32f6f5[_0xa33c('0x47')]=qs[_0xa33c('0x48')](_0x3c4d5f['query'][_0xa33c('0x48')]);_0x32f6f5[_0xa33c('0x49')]=qs[_0xa33c('0x41')](_[_0xa33c('0x61')](_0x3c4d5f[_0xa33c('0x40')],_0x283f28[_0xa33c('0x41')]));if(_0x3c4d5f['query'][_0xa33c('0x4a')]){_0x32f6f5[_0xa33c('0x49')]=_[_0xa33c('0x4b')](_0x32f6f5[_0xa33c('0x49')],{'$or':_[_0xa33c('0x3b')](_0x32f6f5[_0xa33c('0x44')],function(_0xcae3ca){var _0x205f57={};_0x205f57[_0xcae3ca]={'$like':'%'+_0x3c4d5f[_0xa33c('0x40')]['filter']+'%'};return _0x205f57;})});}_0x32f6f5=_['merge']({},_0x32f6f5,_0x3c4d5f[_0xa33c('0x4c')]);return _0xf19fcd['getAgents'](_0x32f6f5);}})[_0xa33c('0x1b')](function(_0x1c2ad9){if(_0x1c2ad9){_0x412d0d=_0x1c2ad9[_0xa33c('0x46')];if(!_0x3c4d5f[_0xa33c('0x40')][_0xa33c('0x5f')](_0xa33c('0x60'))){_0x32f6f5['limit']=qs[_0xa33c('0x2b')](_0x3c4d5f[_0xa33c('0x40')][_0xa33c('0x2b')]);_0x32f6f5['offset']=qs[_0xa33c('0x29')](_0x3c4d5f[_0xa33c('0x40')][_0xa33c('0x29')]);}return _0xf19fcd['getAgents'](_0x32f6f5);}})['then'](function(_0x37a9d0){if(_0x37a9d0){return _0x37a9d0?{'count':_0x412d0d,'rows':_0x37a9d0}:null;}})[_0xa33c('0x1b')](respondWithResult(_0x21bbc6,null))[_0xa33c('0x25')](handleError(_0x21bbc6,null));};
\ No newline at end of file
+var _0xc772=['jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','get','ChatQueues','name','send','index','ChatQueue','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserChatQueue','length','nolimit','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','findOne','Team','order','ids','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','field','from','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','every','TeamId','all','compact','removeAgents','userChatQueue:remove','addAgents','spread','getAgents','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket'];(function(_0x2caf3a,_0x1d65d6){var _0x34f044=function(_0x31410c){while(--_0x31410c){_0x2caf3a['push'](_0x2caf3a['shift']());}};_0x34f044(++_0x1d65d6);}(_0xc772,0x191));var _0x2c77=function(_0x4e6941,_0x1e1c19){_0x4e6941=_0x4e6941-0x0;var _0x4fdd4c=_0xc772[_0x4e6941];return _0x4fdd4c;};'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(_0x2c77('0x0'));var moment=require(_0x2c77('0x1'));var BPromise=require(_0x2c77('0x2'));var Mustache=require(_0x2c77('0x3'));var util=require(_0x2c77('0x4'));var path=require(_0x2c77('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2c77('0x6'));var fs=require('fs');var fs_extra=require(_0x2c77('0x7'));var _=require('lodash');var squel=require(_0x2c77('0x8'));var crypto=require('crypto');var jsforce=require(_0x2c77('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x2c77('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2c77('0xb'));var authService=require(_0x2c77('0xc'));var qs=require(_0x2c77('0xd'));var as=require(_0x2c77('0xe'));var hardwareService=require(_0x2c77('0xf'));var logger=require(_0x2c77('0x10'))('api');var utils=require(_0x2c77('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x2c77('0x12'));var db=require(_0x2c77('0x13'))['db'];config[_0x2c77('0x14')]=_[_0x2c77('0x15')](config[_0x2c77('0x14')],{'host':_0x2c77('0x16'),'port':0x18eb});var socket=require(_0x2c77('0x17'))(new Redis(config[_0x2c77('0x14')]));require(_0x2c77('0x18'))['register'](socket);var jayson=require(_0x2c77('0x19'));var client=jayson[_0x2c77('0x1a')][_0x2c77('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xc258b9,_0x24f75a,_0x632df,_0x217e70){return new BPromise(function(_0x180a81,_0x48ce39){var _0x5b4040=_0x217e70||client;return _0x5b4040[_0x2c77('0x1c')](_0xc258b9,_0x632df)[_0x2c77('0x1d')](function(_0x430609){logger['info'](_0x2c77('0x1e'),_0x24f75a,_0x2c77('0x1f'));logger[_0x2c77('0x20')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x24f75a,_0x2c77('0x1f'),JSON['stringify'](_0x430609));if(_0x430609[_0x2c77('0x21')]){if(_0x430609[_0x2c77('0x21')][_0x2c77('0x22')]===0x1f4){logger[_0x2c77('0x21')]('ChatQueue,\x20%s,\x20%s',_0x24f75a,_0x430609[_0x2c77('0x21')]['message']);return _0x48ce39(_0x430609[_0x2c77('0x21')][_0x2c77('0x23')]);}logger[_0x2c77('0x21')](_0x2c77('0x1e'),_0x24f75a,_0x430609[_0x2c77('0x21')][_0x2c77('0x23')]);return _0x180a81(_0x430609[_0x2c77('0x21')][_0x2c77('0x23')]);}else{logger['info'](_0x2c77('0x1e'),_0x24f75a,_0x2c77('0x1f'));_0x180a81(_0x430609[_0x2c77('0x24')]['message']);}})[_0x2c77('0x25')](function(_0x576956){logger['error'](_0x2c77('0x1e'),_0x24f75a,_0x576956);_0x48ce39(_0x576956);});});}function respondWithStatusCode(_0x30c3f7,_0x46037d){_0x46037d=_0x46037d||0xcc;return function(_0x23c222){if(_0x23c222){return _0x30c3f7[_0x2c77('0x26')](_0x46037d);}return _0x30c3f7['status'](_0x46037d)['end']();};}function respondWithResult(_0x169602,_0x5a7ec2){_0x5a7ec2=_0x5a7ec2||0xc8;return function(_0x3ef644){if(_0x3ef644){return _0x169602[_0x2c77('0x27')](_0x5a7ec2)[_0x2c77('0x28')](_0x3ef644);}};}function respondWithFilteredResult(_0x2ee6dd,_0x7c09b2){return function(_0x484841){if(_0x484841){var _0x5eb266=typeof _0x7c09b2[_0x2c77('0x29')]==='undefined'&&typeof _0x7c09b2[_0x2c77('0x2a')]===_0x2c77('0x2b');var _0x1922a5=_0x484841[_0x2c77('0x2c')];var _0x9f3e2a=_0x5eb266?0x0:_0x7c09b2[_0x2c77('0x29')];var _0x36fa42=_0x5eb266?_0x484841[_0x2c77('0x2c')]:_0x7c09b2['offset']+_0x7c09b2[_0x2c77('0x2a')];var _0xa1b5ba;if(_0x36fa42>=_0x1922a5){_0x36fa42=_0x1922a5;_0xa1b5ba=0xc8;}else{_0xa1b5ba=0xce;}_0x2ee6dd['status'](_0xa1b5ba);return _0x2ee6dd[_0x2c77('0x2d')](_0x2c77('0x2e'),_0x9f3e2a+'-'+_0x36fa42+'/'+_0x1922a5)[_0x2c77('0x28')](_0x484841);}return null;};}function patchUpdates(_0x48c779){return function(_0x5de9a6){try{jsonpatch[_0x2c77('0x2f')](_0x5de9a6,_0x48c779,!![]);}catch(_0x4c6ec6){return BPromise['reject'](_0x4c6ec6);}return _0x5de9a6['save']();};}function saveUpdates(_0x33ae27,_0x233544){return function(_0x59767a){if(_0x59767a){return _0x59767a[_0x2c77('0x30')](_0x33ae27)[_0x2c77('0x1d')](function(_0x56034d){return _0x56034d;});}return null;};}function removeEntity(_0x3849a8,_0x3efe33){return function(_0x2910ba){if(_0x2910ba){return _0x2910ba[_0x2c77('0x31')]()[_0x2c77('0x1d')](function(){var _0x387a38=_0x2910ba[_0x2c77('0x32')]({'plain':!![]});var _0x309917=_0x2c77('0x33');return db['UserProfileResource']['destroy']({'where':{'type':_0x309917,'resourceId':_0x387a38['id']}})['then'](function(){return _0x2910ba;});})['then'](function(){_0x3849a8[_0x2c77('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f10d8,_0x4f14a9){return function(_0x535e8e){if(!_0x535e8e){_0x2f10d8[_0x2c77('0x26')](0x194);}return _0x535e8e;};}function handleError(_0x4bbb91,_0x56f3ac){_0x56f3ac=_0x56f3ac||0x1f4;return function(_0x52963c){logger[_0x2c77('0x21')](_0x52963c['stack']);if(_0x52963c[_0x2c77('0x34')]){delete _0x52963c[_0x2c77('0x34')];}_0x4bbb91[_0x2c77('0x27')](_0x56f3ac)[_0x2c77('0x35')](_0x52963c);};}exports[_0x2c77('0x36')]=function(_0x12664f,_0x19c64c){var _0x5e3e16={},_0x39f042={},_0x3f9d39={'count':0x0,'rows':[]};var _0x2d6826=_['map'](db[_0x2c77('0x37')][_0x2c77('0x38')],function(_0x2961ad){return{'name':_0x2961ad[_0x2c77('0x39')],'type':_0x2961ad[_0x2c77('0x3a')]['key']};});_0x39f042['model']=_[_0x2c77('0x3b')](_0x2d6826,'name');_0x39f042['query']=_['keys'](_0x12664f[_0x2c77('0x3c')]);_0x39f042[_0x2c77('0x3d')]=_[_0x2c77('0x3e')](_0x39f042[_0x2c77('0x3f')],_0x39f042[_0x2c77('0x3c')]);_0x5e3e16[_0x2c77('0x40')]=_[_0x2c77('0x3e')](_0x39f042[_0x2c77('0x3f')],qs[_0x2c77('0x41')](_0x12664f[_0x2c77('0x3c')][_0x2c77('0x41')]));_0x5e3e16[_0x2c77('0x40')]=_0x5e3e16['attributes']['length']?_0x5e3e16[_0x2c77('0x40')]:_0x39f042['model'];if(!_0x12664f[_0x2c77('0x3c')][_0x2c77('0x42')]('nolimit')){_0x5e3e16[_0x2c77('0x2a')]=qs[_0x2c77('0x2a')](_0x12664f[_0x2c77('0x3c')][_0x2c77('0x2a')]);_0x5e3e16[_0x2c77('0x29')]=qs['offset'](_0x12664f[_0x2c77('0x3c')][_0x2c77('0x29')]);}_0x5e3e16['order']=qs[_0x2c77('0x43')](_0x12664f['query'][_0x2c77('0x43')]);_0x5e3e16[_0x2c77('0x44')]=qs['filters'](_[_0x2c77('0x45')](_0x12664f[_0x2c77('0x3c')],_0x39f042[_0x2c77('0x3d')]),_0x2d6826);if(_0x12664f[_0x2c77('0x3c')]['filter']){_0x5e3e16[_0x2c77('0x44')]=_[_0x2c77('0x46')](_0x5e3e16[_0x2c77('0x44')],{'$or':_[_0x2c77('0x3b')](_0x2d6826,function(_0x43135b){if(_0x43135b[_0x2c77('0x3a')]!==_0x2c77('0x47')){var _0x40f933={};_0x40f933[_0x43135b['name']]={'$like':'%'+_0x12664f[_0x2c77('0x3c')][_0x2c77('0x48')]+'%'};return _0x40f933;}})});}_0x5e3e16=_[_0x2c77('0x46')]({},_0x5e3e16,_0x12664f[_0x2c77('0x49')]);var _0x436e0d={'where':_0x5e3e16[_0x2c77('0x44')]};return db[_0x2c77('0x37')][_0x2c77('0x2c')](_0x436e0d)[_0x2c77('0x1d')](function(_0xed2b89){_0x3f9d39[_0x2c77('0x2c')]=_0xed2b89;if(_0x12664f['query'][_0x2c77('0x4a')]){_0x5e3e16[_0x2c77('0x4b')]=[{'all':!![]}];}return db[_0x2c77('0x37')][_0x2c77('0x4c')](_0x5e3e16);})[_0x2c77('0x1d')](function(_0xea94e0){_0x3f9d39[_0x2c77('0x4d')]=_0xea94e0;return _0x3f9d39;})['then'](respondWithFilteredResult(_0x19c64c,_0x5e3e16))[_0x2c77('0x25')](handleError(_0x19c64c,null));};exports[_0x2c77('0x4e')]=function(_0x1b95f3,_0x163e8e){var _0x4e4506={'raw':!![],'where':{'id':_0x1b95f3[_0x2c77('0x4f')]['id']}},_0x45e8c9={};_0x45e8c9[_0x2c77('0x3f')]=_[_0x2c77('0x50')](db['ChatQueue']['rawAttributes']);_0x45e8c9['query']=_[_0x2c77('0x50')](_0x1b95f3[_0x2c77('0x3c')]);_0x45e8c9[_0x2c77('0x3d')]=_['intersection'](_0x45e8c9[_0x2c77('0x3f')],_0x45e8c9[_0x2c77('0x3c')]);_0x4e4506[_0x2c77('0x40')]=_[_0x2c77('0x3e')](_0x45e8c9[_0x2c77('0x3f')],qs[_0x2c77('0x41')](_0x1b95f3[_0x2c77('0x3c')][_0x2c77('0x41')]));_0x4e4506[_0x2c77('0x40')]=_0x4e4506[_0x2c77('0x40')]['length']?_0x4e4506[_0x2c77('0x40')]:_0x45e8c9['model'];if(_0x1b95f3[_0x2c77('0x3c')]['includeAll']){_0x4e4506[_0x2c77('0x4b')]=[{'all':!![]}];}_0x4e4506=_[_0x2c77('0x46')]({},_0x4e4506,_0x1b95f3[_0x2c77('0x49')]);return db[_0x2c77('0x37')][_0x2c77('0x51')](_0x4e4506)[_0x2c77('0x1d')](handleEntityNotFound(_0x163e8e,null))[_0x2c77('0x1d')](respondWithResult(_0x163e8e,null))[_0x2c77('0x25')](handleError(_0x163e8e,null));};exports[_0x2c77('0x52')]=function(_0x3500a1,_0x21cbe5){return db[_0x2c77('0x37')][_0x2c77('0x52')](_0x3500a1[_0x2c77('0x53')],{})['then'](function(_0x59a287){var _0x3e7131=_0x3500a1[_0x2c77('0x54')][_0x2c77('0x32')]({'plain':!![]});if(!_0x3e7131)throw new Error(_0x2c77('0x55'));if(_0x3e7131[_0x2c77('0x56')]===_0x2c77('0x54')){var _0x2edaab=_0x59a287['get']({'plain':!![]});var _0xcdf17=_0x2c77('0x33');return db[_0x2c77('0x57')]['find']({'where':{'name':_0xcdf17,'userProfileId':_0x3e7131[_0x2c77('0x58')]},'raw':!![]})[_0x2c77('0x1d')](function(_0x2d9f53){if(_0x2d9f53&&_0x2d9f53['autoAssociation']===0x0){return db[_0x2c77('0x59')]['create']({'name':_0x2edaab['name'],'resourceId':_0x2edaab['id'],'type':_0x2d9f53[_0x2c77('0x34')],'sectionId':_0x2d9f53['id']},{})['then'](function(){return _0x59a287;});}else{return _0x59a287;}})['catch'](function(_0x2e81ac){logger[_0x2c77('0x21')](_0x2c77('0x5a'),_0x2e81ac);throw _0x2e81ac;});}return _0x59a287;})['then'](respondWithResult(_0x21cbe5,0xc9))[_0x2c77('0x25')](handleError(_0x21cbe5,null));};exports[_0x2c77('0x30')]=function(_0x2eb919,_0x2d6f37){if(_0x2eb919[_0x2c77('0x53')]['id']){delete _0x2eb919[_0x2c77('0x53')]['id'];}return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x2eb919['params']['id']}})[_0x2c77('0x1d')](handleEntityNotFound(_0x2d6f37,null))[_0x2c77('0x1d')](saveUpdates(_0x2eb919[_0x2c77('0x53')],null))[_0x2c77('0x1d')](respondWithResult(_0x2d6f37,null))[_0x2c77('0x25')](handleError(_0x2d6f37,null));};exports[_0x2c77('0x31')]=function(_0x5daaa1,_0x30049a){return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x5daaa1['params']['id']}})['then'](handleEntityNotFound(_0x30049a,null))['then'](removeEntity(_0x30049a,null))['catch'](handleError(_0x30049a,null));};exports[_0x2c77('0x5b')]=function(_0xadb519,_0x4fed0e){return db[_0x2c77('0x37')][_0x2c77('0x5b')]()['then'](respondWithResult(_0x4fed0e,null))[_0x2c77('0x25')](handleError(_0x4fed0e,null));};exports['getMembers']=function(_0x87af97,_0x369090,_0xe0a65d){var _0x5019a1={'raw':!![],'where':{}},_0x42a958={},_0x46677b;return db['ChatQueue']['findOne']({'where':{'id':_0x87af97['params']['id']}})[_0x2c77('0x1d')](handleEntityNotFound(_0x369090,null))[_0x2c77('0x1d')](function(_0x30f10d){if(_0x30f10d){_0x46677b=_0x30f10d['get']({'plain':!![]});_0x42a958[_0x2c77('0x3f')]=_[_0x2c77('0x50')](db[_0x2c77('0x5c')]['rawAttributes']);_0x42a958[_0x2c77('0x3c')]=_[_0x2c77('0x50')](_0x87af97[_0x2c77('0x3c')]);_0x42a958[_0x2c77('0x3d')]=_[_0x2c77('0x3e')](_0x42a958[_0x2c77('0x3f')],_0x42a958[_0x2c77('0x3c')]);_0x5019a1['attributes']=_[_0x2c77('0x3e')](_0x42a958[_0x2c77('0x3f')],qs[_0x2c77('0x41')](_0x87af97['query'][_0x2c77('0x41')]));_0x5019a1['attributes']=_0x5019a1[_0x2c77('0x40')][_0x2c77('0x5d')]?_0x5019a1['attributes']:_0x42a958[_0x2c77('0x3f')];if(!_0x87af97[_0x2c77('0x3c')][_0x2c77('0x42')](_0x2c77('0x5e'))){_0x5019a1[_0x2c77('0x2a')]=qs[_0x2c77('0x2a')](_0x87af97[_0x2c77('0x3c')][_0x2c77('0x2a')]);_0x5019a1[_0x2c77('0x29')]=qs[_0x2c77('0x29')](_0x87af97[_0x2c77('0x3c')][_0x2c77('0x29')]);}_0x5019a1['order']=qs['sort'](_0x87af97['query'][_0x2c77('0x43')]);_0x5019a1[_0x2c77('0x44')]=qs['filters'](_[_0x2c77('0x45')](_0x87af97[_0x2c77('0x3c')],_0x42a958['filters']));_0x5019a1[_0x2c77('0x44')][_0x2c77('0x5f')]=_0x30f10d['id'];if(_0x87af97[_0x2c77('0x3c')][_0x2c77('0x48')]){_0x5019a1[_0x2c77('0x44')]=_[_0x2c77('0x46')](_0x5019a1[_0x2c77('0x44')],{'$or':_['map'](_0x5019a1['attributes'],function(_0x4fd0f2){var _0x34b7cb={};_0x34b7cb[_0x4fd0f2]={'$like':'%'+_0x87af97[_0x2c77('0x3c')]['filter']+'%'};return _0x34b7cb;})});}_0x5019a1=_[_0x2c77('0x46')]({},_0x5019a1,_0x87af97[_0x2c77('0x49')]);return db[_0x2c77('0x5c')][_0x2c77('0x4c')](_0x5019a1);}})['then'](function(_0x55684f){if(_0x55684f){return db[_0x2c77('0x60')][_0x2c77('0x61')]({'where':{'id':_[_0x2c77('0x3b')](_0x55684f,_0x2c77('0x62')),'role':_0x2c77('0x63')},'attributes':['id','name',_0x2c77('0x64'),_0x2c77('0x65'),'createdAt']});}})['then'](function(_0x470dfb){if(_0x470dfb){return{'count':_0x470dfb[_0x2c77('0x2c')],'rows':_[_0x2c77('0x3b')](_0x470dfb[_0x2c77('0x4d')],function(_0x3305d8){return{'membername':_0x3305d8[_0x2c77('0x34')],'UserId':_0x3305d8['id'],'queue_name':_0x46677b[_0x2c77('0x34')],'ChatQueueId':_0x46677b['id'],'interface':util[_0x2c77('0x66')](_0x2c77('0x67'),_0x2c77('0x68'),_0x3305d8[_0x2c77('0x34')]),'penalty':0x0,'paused':_0x3305d8[_0x2c77('0x64')],'createdAt':_0x3305d8[_0x2c77('0x69')],'updatedAt':_0x3305d8[_0x2c77('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x369090,_0x5019a1))[_0x2c77('0x25')](handleError(_0x369090,null));};exports[_0x2c77('0x6a')]=function(_0x42740d,_0x5b5794,_0x1292fb){var _0x2ef375={};var _0x4d641b={};var _0x7a4ca9;var _0x1dc62f;return db['ChatQueue'][_0x2c77('0x6b')]({'where':{'id':_0x42740d[_0x2c77('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5b5794,null))[_0x2c77('0x1d')](function(_0x11f1f9){if(_0x11f1f9){_0x7a4ca9=_0x11f1f9;_0x4d641b[_0x2c77('0x3f')]=_['keys'](db[_0x2c77('0x6c')][_0x2c77('0x38')]);_0x4d641b[_0x2c77('0x3c')]=_[_0x2c77('0x50')](_0x42740d[_0x2c77('0x3c')]);_0x4d641b[_0x2c77('0x3d')]=_[_0x2c77('0x3e')](_0x4d641b[_0x2c77('0x3f')],_0x4d641b[_0x2c77('0x3c')]);_0x2ef375[_0x2c77('0x40')]=_[_0x2c77('0x3e')](_0x4d641b[_0x2c77('0x3f')],qs[_0x2c77('0x41')](_0x42740d[_0x2c77('0x3c')]['fields']));_0x2ef375['attributes']=_0x2ef375[_0x2c77('0x40')][_0x2c77('0x5d')]?_0x2ef375[_0x2c77('0x40')]:_0x4d641b[_0x2c77('0x3f')];_0x2ef375[_0x2c77('0x6d')]=qs[_0x2c77('0x43')](_0x42740d[_0x2c77('0x3c')][_0x2c77('0x43')]);_0x2ef375[_0x2c77('0x44')]=qs['filters'](_[_0x2c77('0x45')](_0x42740d[_0x2c77('0x3c')],_0x4d641b['filters']));if(_0x42740d[_0x2c77('0x3c')][_0x2c77('0x48')]){_0x2ef375[_0x2c77('0x44')]=_[_0x2c77('0x46')](_0x2ef375[_0x2c77('0x44')],{'$or':_['map'](_0x2ef375[_0x2c77('0x40')],function(_0x476b8b){var _0x785e19={};_0x785e19[_0x476b8b]={'$like':'%'+_0x42740d[_0x2c77('0x3c')]['filter']+'%'};return _0x785e19;})});}_0x2ef375=_[_0x2c77('0x46')]({},_0x2ef375,_0x42740d[_0x2c77('0x49')]);return _0x7a4ca9[_0x2c77('0x6a')](_0x2ef375);}})['then'](function(_0x4b88d7){if(_0x4b88d7){_0x1dc62f=_0x4b88d7[_0x2c77('0x5d')];if(!_0x42740d[_0x2c77('0x3c')][_0x2c77('0x42')]('nolimit')){_0x2ef375[_0x2c77('0x2a')]=qs[_0x2c77('0x2a')](_0x42740d[_0x2c77('0x3c')][_0x2c77('0x2a')]);_0x2ef375[_0x2c77('0x29')]=qs[_0x2c77('0x29')](_0x42740d[_0x2c77('0x3c')][_0x2c77('0x29')]);}return _0x7a4ca9[_0x2c77('0x6a')](_0x2ef375);}})[_0x2c77('0x1d')](function(_0x12ce2f){if(_0x12ce2f){return _0x12ce2f?{'count':_0x1dc62f,'rows':_0x12ce2f}:null;}})['then'](respondWithResult(_0x5b5794,null))['catch'](handleError(_0x5b5794,null));};exports['addTeams']=function(_0x120d05,_0x4668fd,_0x1eccb4){var _0x24c35a=_0x120d05[_0x2c77('0x53')][_0x2c77('0x6e')];return db[_0x2c77('0x6c')][_0x2c77('0x4c')]({'where':{'id':_0x24c35a},'attributes':['id'],'include':[{'model':db[_0x2c77('0x60')],'as':_0x2c77('0x6f'),'attributes':['id',_0x2c77('0x34'),_0x2c77('0x70'),_0x2c77('0x71'),_0x2c77('0x72')],'raw':!![]}]})['then'](function(_0xf09618){if(_0xf09618){var _0xe50b4=_[_0x2c77('0x73')](_0xf09618,function(_0x1d3a47){var _0x16295f=_0x1d3a47[_0x2c77('0x32')]({'plain':!![]});return _0x16295f[_0x2c77('0x6f')];});return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x120d05[_0x2c77('0x4f')]['id']}})[_0x2c77('0x1d')](function(_0x63452c){return db['sequelize'][_0x2c77('0x74')](function(_0xca09dd){return _0x63452c['addTeams'](_0x24c35a,{'transaction':_0xca09dd})[_0x2c77('0x1d')](function(){return BPromise[_0x2c77('0x75')](_0xe50b4,function(_0x1a69de){return db[_0x2c77('0x5c')][_0x2c77('0x76')]({'where':{'UserId':_0x1a69de['id'],'ChatQueueId':_0x120d05[_0x2c77('0x4f')]['id']},'transaction':_0xca09dd});});})['then'](function(){_0xe50b4[_0x2c77('0x77')](function(_0x4111e0){socket[_0x2c77('0x78')](_0x2c77('0x79'),{'UserId':_0x4111e0['id'],'ChatQueueId':_0x63452c['id']});});});});});}})[_0x2c77('0x1d')](respondWithStatusCode(_0x4668fd,null))[_0x2c77('0x25')](handleError(_0x4668fd,null));};exports[_0x2c77('0x7a')]=function(_0x2d2e85,_0x53fe3a,_0x2583c7){return db[_0x2c77('0x6c')]['findAll']({'where':{'id':_0x2d2e85[_0x2c77('0x3c')][_0x2c77('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x2c77('0x60')],'as':_0x2c77('0x6f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x53fe3a,null))['then'](function(_0x4e9ee2){var _0x5c6bec=_[_0x2c77('0x3b')](_0x4e9ee2,'id');var _0x2beb6e=[];var _0x56aa05=[];var _0x2ace52=squel[_0x2c77('0x7b')]();_0x2ace52[_0x2c77('0x7c')]('tq.TeamId')[_0x2c77('0x7d')]('team_has_chat_queues','tq')[_0x2c77('0x7e')]('user_has_teams','ut',_0x2c77('0x7f'))[_0x2c77('0x44')](_0x2c77('0x80'),_0x2d2e85[_0x2c77('0x4f')]['id']);for(var _0x57deeb=0x0;_0x57deeb<_0x4e9ee2[_0x2c77('0x5d')];_0x57deeb+=0x1){let _0x1acbeb=_0x4e9ee2[_0x57deeb];for(var _0x220b7d=0x0;_0x220b7d<_0x1acbeb[_0x2c77('0x6f')][_0x2c77('0x5d')];_0x220b7d+=0x1){let _0x4f0a07=_0x1acbeb[_0x2c77('0x6f')][_0x220b7d];var _0x59e4ed=_0x2ace52['clone']();_0x59e4ed[_0x2c77('0x44')](_0x2c77('0x81'),_0x4f0a07['id']);_0x56aa05[_0x2c77('0x82')](db[_0x2c77('0x83')][_0x2c77('0x3c')](_0x59e4ed['toString'](),{'type':db['sequelize'][_0x2c77('0x84')]['SELECT']})['then'](function(_0x3d9a6d){if(_0x3d9a6d[_0x2c77('0x5d')]===0x1){return _0x4f0a07['id'];}else{var _0x390f5f=_[_0x2c77('0x85')](_['map'](_0x3d9a6d,_0x2c77('0x86')),function(_0x2a663e){return _['includes'](_0x5c6bec,_0x2a663e);});if(_0x390f5f){return _0x4f0a07['id'];}}}));}}return BPromise[_0x2c77('0x87')](_0x56aa05)[_0x2c77('0x1d')](function(_0x416e9e){_0x2beb6e=_(_0x2beb6e)['union'](_0x416e9e)[_0x2c77('0x88')]()['value']();return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x2d2e85[_0x2c77('0x4f')]['id']}})[_0x2c77('0x1d')](function(_0x1455da){return db[_0x2c77('0x83')][_0x2c77('0x74')](function(_0x465593){return _0x1455da[_0x2c77('0x7a')](_0x2d2e85[_0x2c77('0x3c')][_0x2c77('0x6e')],{'transaction':_0x465593})['then'](function(){if(!_['isEmpty'](_0x2beb6e)){return _0x1455da[_0x2c77('0x89')](_0x2beb6e,{'transaction':_0x465593});}})[_0x2c77('0x1d')](function(){_0x2beb6e[_0x2c77('0x77')](function(_0x3a6a04){socket[_0x2c77('0x78')](_0x2c77('0x8a'),{'UserId':_0x3a6a04,'ChatQueueId':_0x1455da['id']});});});});});});})['then'](respondWithStatusCode(_0x53fe3a,null))['catch'](handleError(_0x53fe3a,null));};exports[_0x2c77('0x8b')]=function(_0x825a48,_0x2242d3,_0x445d31){return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x825a48[_0x2c77('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2242d3,null))[_0x2c77('0x1d')](function(_0x5917c8){if(_0x5917c8){return _0x5917c8['addAgents'](_0x825a48[_0x2c77('0x53')][_0x2c77('0x6e')],_['omit'](_0x825a48[_0x2c77('0x53')],['ids','id'])||{})[_0x2c77('0x8c')](function(_0x482a22){for(var _0x307157=0x0;_0x307157<_0x825a48[_0x2c77('0x53')]['ids']['length'];_0x307157+=0x1){socket['emit'](_0x2c77('0x79'),{'UserId':Number(_0x825a48[_0x2c77('0x53')][_0x2c77('0x6e')][_0x307157]),'ChatQueueId':Number(_0x825a48[_0x2c77('0x4f')]['id'])});}return _0x482a22;});}})[_0x2c77('0x1d')](respondWithResult(_0x2242d3,null))['catch'](handleError(_0x2242d3,null));};exports['removeAgents']=function(_0x30b408,_0x5c3cdb,_0x342c05){return db[_0x2c77('0x37')][_0x2c77('0x51')]({'where':{'id':_0x30b408[_0x2c77('0x4f')]['id']}})[_0x2c77('0x1d')](handleEntityNotFound(_0x5c3cdb,null))[_0x2c77('0x1d')](function(_0x19310a){if(_0x19310a){return _0x19310a[_0x2c77('0x89')](_0x30b408[_0x2c77('0x3c')]['ids'])['then'](function(){if(_['isArray'](_0x30b408[_0x2c77('0x3c')][_0x2c77('0x6e')])){for(var _0x5b0514=0x0;_0x5b0514<_0x30b408[_0x2c77('0x3c')][_0x2c77('0x6e')]['length'];_0x5b0514+=0x1){socket[_0x2c77('0x78')](_0x2c77('0x8a'),{'UserId':Number(_0x30b408[_0x2c77('0x3c')][_0x2c77('0x6e')][_0x5b0514]),'ChatQueueId':Number(_0x30b408['params']['id'])});}}else{socket[_0x2c77('0x78')](_0x2c77('0x8a'),{'UserId':Number(_0x30b408['query']['ids']),'ChatQueueId':Number(_0x30b408['params']['id'])});}});}})[_0x2c77('0x1d')](respondWithStatusCode(_0x5c3cdb,null))[_0x2c77('0x25')](handleError(_0x5c3cdb,null));};exports[_0x2c77('0x8d')]=function(_0x4d815a,_0x462729,_0x28acda){var _0x1ef155={};var _0x2ea827={};var _0x29f026;var _0x13bee2;return db[_0x2c77('0x37')][_0x2c77('0x6b')]({'where':{'id':_0x4d815a[_0x2c77('0x4f')]['id']}})[_0x2c77('0x1d')](handleEntityNotFound(_0x462729,null))['then'](function(_0x53ee80){if(_0x53ee80){_0x29f026=_0x53ee80;_0x2ea827[_0x2c77('0x3f')]=_[_0x2c77('0x50')](db[_0x2c77('0x60')]['rawAttributes']);_0x2ea827[_0x2c77('0x3c')]=_[_0x2c77('0x50')](_0x4d815a['query']);_0x2ea827[_0x2c77('0x3d')]=_['intersection'](_0x2ea827[_0x2c77('0x3f')],_0x2ea827[_0x2c77('0x3c')]);_0x1ef155[_0x2c77('0x40')]=_[_0x2c77('0x3e')](_0x2ea827[_0x2c77('0x3f')],qs['fields'](_0x4d815a[_0x2c77('0x3c')]['fields']));_0x1ef155[_0x2c77('0x40')]=_0x1ef155[_0x2c77('0x40')][_0x2c77('0x5d')]?_0x1ef155[_0x2c77('0x40')]:_0x2ea827[_0x2c77('0x3f')];_0x1ef155[_0x2c77('0x6d')]=qs[_0x2c77('0x43')](_0x4d815a[_0x2c77('0x3c')][_0x2c77('0x43')]);_0x1ef155[_0x2c77('0x44')]=qs[_0x2c77('0x3d')](_[_0x2c77('0x45')](_0x4d815a[_0x2c77('0x3c')],_0x2ea827['filters']));if(_0x4d815a[_0x2c77('0x3c')][_0x2c77('0x48')]){_0x1ef155[_0x2c77('0x44')]=_[_0x2c77('0x46')](_0x1ef155[_0x2c77('0x44')],{'$or':_[_0x2c77('0x3b')](_0x1ef155[_0x2c77('0x40')],function(_0x97f9ce){var _0x4c342d={};_0x4c342d[_0x97f9ce]={'$like':'%'+_0x4d815a[_0x2c77('0x3c')]['filter']+'%'};return _0x4c342d;})});}_0x1ef155=_['merge']({},_0x1ef155,_0x4d815a[_0x2c77('0x49')]);return _0x29f026['getAgents'](_0x1ef155);}})['then'](function(_0x43216f){if(_0x43216f){_0x13bee2=_0x43216f[_0x2c77('0x5d')];if(!_0x4d815a['query']['hasOwnProperty']('nolimit')){_0x1ef155[_0x2c77('0x2a')]=qs[_0x2c77('0x2a')](_0x4d815a['query']['limit']);_0x1ef155[_0x2c77('0x29')]=qs[_0x2c77('0x29')](_0x4d815a[_0x2c77('0x3c')][_0x2c77('0x29')]);}return _0x29f026['getAgents'](_0x1ef155);}})[_0x2c77('0x1d')](function(_0x1650a3){if(_0x1650a3){return _0x1650a3?{'count':_0x13bee2,'rows':_0x1650a3}:null;}})[_0x2c77('0x1d')](respondWithResult(_0x462729,null))[_0x2c77('0x25')](handleError(_0x462729,null));};
\ No newline at end of file
index 47f99f3..5a2b2e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dc1=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatQueue'];(function(_0x5ca784,_0x28bea2){var _0x5aa579=function(_0x531234){while(--_0x531234){_0x5ca784['push'](_0x5ca784['shift']());}};_0x5aa579(++_0x28bea2);}(_0x0dc1,0x198));var _0x10dc=function(_0x35c094,_0x3bb7d3){_0x35c094=_0x35c094-0x0;var _0x2aa0bb=_0x0dc1[_0x35c094];return _0x2aa0bb;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x10dc('0x0'))['db'][_0x10dc('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x10dc('0x2')](0x0);var events={'afterCreate':_0x10dc('0x3'),'afterUpdate':_0x10dc('0x4'),'afterDestroy':_0x10dc('0x5')};function emitEvent(_0x403a78){return function(_0x2a4c4c,_0xc7fae1,_0x5d4cbd){ChatQueueEvents['emit'](_0x403a78+':'+_0x2a4c4c['id'],_0x2a4c4c);ChatQueueEvents[_0x10dc('0x6')](_0x403a78,_0x2a4c4c);_0x5d4cbd(null);};}for(var e in events){if(events[_0x10dc('0x7')](e)){var event=events[e];ChatQueue[_0x10dc('0x8')](e,emitEvent(event));}}module[_0x10dc('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0x7900=['exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x1453bf,_0x2d4508){var _0x450d9c=function(_0x1f76fe){while(--_0x1f76fe){_0x1453bf['push'](_0x1453bf['shift']());}};_0x450d9c(++_0x2d4508);}(_0x7900,0x7f));var _0x0790=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7900[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x0790('0x0'));var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x0790('0x1')](0x0);var events={'afterCreate':_0x0790('0x2'),'afterUpdate':_0x0790('0x3'),'afterDestroy':_0x0790('0x4')};function emitEvent(_0x26b360){return function(_0x486e2e,_0x4b41d4,_0x56d814){ChatQueueEvents[_0x0790('0x5')](_0x26b360+':'+_0x486e2e['id'],_0x486e2e);ChatQueueEvents[_0x0790('0x5')](_0x26b360,_0x486e2e);_0x56d814(null);};}for(var e in events){if(events[_0x0790('0x6')](e)){var event=events[e];ChatQueue[_0x0790('0x7')](e,emitEvent(event));}}module[_0x0790('0x8')]=ChatQueueEvents;
\ No newline at end of file
index 9d70ecb..8cf0784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0604=['path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','moment','bluebird','request-promise'];(function(_0x337a13,_0x39554e){var _0x21fbd8=function(_0x30e5cf){while(--_0x30e5cf){_0x337a13['push'](_0x337a13['shift']());}};_0x21fbd8(++_0x39554e);}(_0x0604,0xd8));var _0x4060=function(_0xaf8756,_0x3bf6b6){_0xaf8756=_0xaf8756-0x0;var _0x122c5f=_0x0604[_0xaf8756];return _0x122c5f;};'use strict';var _=require(_0x4060('0x0'));var util=require(_0x4060('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4060('0x2'));var BPromise=require(_0x4060('0x3'));var rp=require(_0x4060('0x4'));var fs=require('fs');var path=require(_0x4060('0x5'));var rimraf=require(_0x4060('0x6'));var config=require(_0x4060('0x7'));var attributes=require(_0x4060('0x8'));module[_0x4060('0x9')]=function(_0x4193fe,_0x3863a2){return _0x4193fe[_0x4060('0xa')](_0x4060('0xb'),attributes,{'tableName':_0x4060('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd928=['moment','./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','../../config/logger','api'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd928,0x1a5));var _0x8d92=function(_0x2445b2,_0x40084d){_0x2445b2=_0x2445b2-0x0;var _0x50f9c4=_0xd928[_0x2445b2];return _0x50f9c4;};'use strict';var _=require(_0x8d92('0x0'));var util=require('util');var logger=require(_0x8d92('0x1'))(_0x8d92('0x2'));var moment=require(_0x8d92('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8d92('0x4'));module['exports']=function(_0x224745,_0x4a8903){return _0x224745[_0x8d92('0x5')](_0x8d92('0x6'),attributes,{'tableName':_0x8d92('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f0ac49..bf09abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf77=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','request','then','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','lodash','util','moment','bluebird'];(function(_0x35daf8,_0x43dd82){var _0x56fd37=function(_0x51bf23){while(--_0x51bf23){_0x35daf8['push'](_0x35daf8['shift']());}};_0x56fd37(++_0x43dd82);}(_0xbf77,0xec));var _0x7bf7=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xbf77[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0x7bf7('0x0'));var util=require(_0x7bf7('0x1'));var moment=require(_0x7bf7('0x2'));var BPromise=require(_0x7bf7('0x3'));var rs=require(_0x7bf7('0x4'));var fs=require('fs');var Redis=require(_0x7bf7('0x5'));var db=require(_0x7bf7('0x6'))['db'];var utils=require(_0x7bf7('0x7'));var logger=require('../../config/logger')(_0x7bf7('0x8'));var config=require(_0x7bf7('0x9'));var jayson=require(_0x7bf7('0xa'));var client=jayson['client'][_0x7bf7('0xb')]({'port':0x232a});config[_0x7bf7('0xc')]=_['defaults'](config[_0x7bf7('0xc')],{'host':_0x7bf7('0xd'),'port':0x18eb});var socket=require(_0x7bf7('0xe'))(new Redis(config[_0x7bf7('0xc')]));require('./chatQueue.socket')[_0x7bf7('0xf')](socket);function respondWithRpcPromise(_0x233c04,_0x310d53,_0x2cd7da){return new BPromise(function(_0x25571e,_0xb1c8b3){return client[_0x7bf7('0x10')](_0x233c04,_0x2cd7da)[_0x7bf7('0x11')](function(_0x35ff14){logger['info'](_0x7bf7('0x12'),_0x310d53,'request\x20sent');logger[_0x7bf7('0x13')](_0x7bf7('0x14'),_0x310d53,'request\x20sent',JSON[_0x7bf7('0x15')](_0x35ff14));if(_0x35ff14[_0x7bf7('0x16')]){if(_0x35ff14[_0x7bf7('0x16')][_0x7bf7('0x17')]===0x1f4){logger[_0x7bf7('0x16')](_0x7bf7('0x12'),_0x310d53,_0x35ff14[_0x7bf7('0x16')][_0x7bf7('0x18')]);return _0xb1c8b3(_0x35ff14[_0x7bf7('0x16')]['message']);}logger[_0x7bf7('0x16')](_0x7bf7('0x12'),_0x310d53,_0x35ff14['error'][_0x7bf7('0x18')]);return _0x25571e(_0x35ff14[_0x7bf7('0x16')][_0x7bf7('0x18')]);}else{logger[_0x7bf7('0x19')](_0x7bf7('0x12'),_0x310d53,_0x7bf7('0x1a'));_0x25571e(_0x35ff14['result'][_0x7bf7('0x18')]);}})[_0x7bf7('0x1b')](function(_0x41fd41){logger[_0x7bf7('0x16')](_0x7bf7('0x12'),_0x310d53,_0x41fd41);_0xb1c8b3(_0x41fd41);});});}exports[_0x7bf7('0x1c')]=function(_0x47057a){var _0x1f75eb=this;return new Promise(function(_0x222b39,_0x4b164a){return db[_0x7bf7('0x1d')][_0x7bf7('0x1e')]({'raw':_0x47057a[_0x7bf7('0x1f')]?_0x47057a[_0x7bf7('0x1f')][_0x7bf7('0x20')]===undefined?!![]:![]:!![],'where':_0x47057a[_0x7bf7('0x1f')]?_0x47057a[_0x7bf7('0x1f')][_0x7bf7('0x21')]||null:null,'attributes':_0x47057a[_0x7bf7('0x1f')]?_0x47057a[_0x7bf7('0x1f')][_0x7bf7('0x22')]||null:null,'limit':_0x47057a[_0x7bf7('0x1f')]?_0x47057a['options'][_0x7bf7('0x23')]||null:null,'include':_0x47057a[_0x7bf7('0x1f')]?_0x47057a[_0x7bf7('0x1f')][_0x7bf7('0x24')]?_[_0x7bf7('0x25')](_0x47057a[_0x7bf7('0x1f')][_0x7bf7('0x24')],function(_0x289282){return{'model':db[_0x289282['model']],'as':_0x289282['as'],'attributes':_0x289282['attributes'],'include':_0x289282[_0x7bf7('0x24')]?_[_0x7bf7('0x25')](_0x289282['include'],function(_0x303d84){return{'model':db[_0x303d84[_0x7bf7('0x26')]],'as':_0x303d84['as'],'attributes':_0x303d84[_0x7bf7('0x22')],'include':_0x303d84[_0x7bf7('0x24')]?_[_0x7bf7('0x25')](_0x303d84['include'],function(_0x4be063){return{'model':db[_0x4be063[_0x7bf7('0x26')]],'as':_0x4be063['as'],'attributes':_0x4be063[_0x7bf7('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7bf7('0x11')](function(_0x288d51){logger[_0x7bf7('0x19')](_0x7bf7('0x1c'),_0x47057a);logger[_0x7bf7('0x13')](_0x7bf7('0x1c'),_0x47057a,JSON[_0x7bf7('0x15')](_0x288d51));_0x222b39(_0x288d51);})[_0x7bf7('0x1b')](function(_0xa332ce){logger[_0x7bf7('0x16')](_0x7bf7('0x1c'),_0xa332ce[_0x7bf7('0x18')],_0x47057a);_0x4b164a(_0x1f75eb['error'](0x1f4,_0xa332ce[_0x7bf7('0x18')]));});});};exports[_0x7bf7('0x27')]=function(_0x59ea7a){var _0x122c8c=this;return new Promise(function(_0x5b10a7,_0x454718){return db['ChatQueue']['find']({'raw':_0x59ea7a[_0x7bf7('0x1f')]?_0x59ea7a[_0x7bf7('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x59ea7a['options']?_0x59ea7a[_0x7bf7('0x1f')][_0x7bf7('0x21')]||null:null,'attributes':_0x59ea7a[_0x7bf7('0x1f')]?_0x59ea7a['options'][_0x7bf7('0x22')]||null:null,'include':_0x59ea7a['options']?_0x59ea7a[_0x7bf7('0x1f')]['include']?_[_0x7bf7('0x25')](_0x59ea7a[_0x7bf7('0x1f')]['include'],function(_0x52c09b){return{'model':db[_0x52c09b['model']],'as':_0x52c09b['as'],'attributes':_0x52c09b[_0x7bf7('0x22')],'include':_0x52c09b[_0x7bf7('0x24')]?_[_0x7bf7('0x25')](_0x52c09b['include'],function(_0x441b0c){return{'model':db[_0x441b0c[_0x7bf7('0x26')]],'as':_0x441b0c['as'],'attributes':_0x441b0c[_0x7bf7('0x22')],'include':_0x441b0c[_0x7bf7('0x24')]?_[_0x7bf7('0x25')](_0x441b0c[_0x7bf7('0x24')],function(_0x258f18){return{'model':db[_0x258f18['model']],'as':_0x258f18['as'],'attributes':_0x258f18['attributes']};}):[]};}):[]};}):[]:[]})[_0x7bf7('0x11')](function(_0x116f8a){logger[_0x7bf7('0x19')](_0x7bf7('0x27'),_0x59ea7a);logger[_0x7bf7('0x13')](_0x7bf7('0x27'),_0x59ea7a,JSON[_0x7bf7('0x15')](_0x116f8a));_0x5b10a7(_0x116f8a);})[_0x7bf7('0x1b')](function(_0x5b1e30){logger[_0x7bf7('0x16')](_0x7bf7('0x27'),_0x5b1e30['message'],_0x59ea7a);_0x454718(_0x122c8c['error'](0x1f4,_0x5b1e30[_0x7bf7('0x18')]));});});};
\ No newline at end of file
+var _0x553e=['../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','request','then','info','debug','error','code','ChatQueue,\x20%s,\x20%s','message','request\x20sent','catch','findAll','options','raw','where','attributes','limit','include','model','map','GetChatQueue','stringify','ShowChatQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x9fcf2b,_0x5ab939){var _0x4b3a07=function(_0x47b034){while(--_0x47b034){_0x9fcf2b['push'](_0x9fcf2b['shift']());}};_0x4b3a07(++_0x5ab939);}(_0x553e,0x10f));var _0xe553=function(_0x28dbb5,_0x117c9f){_0x28dbb5=_0x28dbb5-0x0;var _0x2dd01a=_0x553e[_0x28dbb5];return _0x2dd01a;};'use strict';var _=require(_0xe553('0x0'));var util=require(_0xe553('0x1'));var moment=require(_0xe553('0x2'));var BPromise=require(_0xe553('0x3'));var rs=require(_0xe553('0x4'));var fs=require('fs');var Redis=require(_0xe553('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe553('0x6'));var logger=require(_0xe553('0x7'))(_0xe553('0x8'));var config=require(_0xe553('0x9'));var jayson=require(_0xe553('0xa'));var client=jayson[_0xe553('0xb')][_0xe553('0xc')]({'port':0x232a});config['redis']=_[_0xe553('0xd')](config[_0xe553('0xe')],{'host':_0xe553('0xf'),'port':0x18eb});var socket=require(_0xe553('0x10'))(new Redis(config[_0xe553('0xe')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x5bdf58,_0x4dbe84,_0xffc39){return new BPromise(function(_0xac75c5,_0x211007){return client[_0xe553('0x11')](_0x5bdf58,_0xffc39)[_0xe553('0x12')](function(_0x504854){logger[_0xe553('0x13')]('ChatQueue,\x20%s,\x20%s',_0x4dbe84,'request\x20sent');logger[_0xe553('0x14')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x4dbe84,'request\x20sent',JSON['stringify'](_0x504854));if(_0x504854['error']){if(_0x504854[_0xe553('0x15')][_0xe553('0x16')]===0x1f4){logger[_0xe553('0x15')](_0xe553('0x17'),_0x4dbe84,_0x504854[_0xe553('0x15')][_0xe553('0x18')]);return _0x211007(_0x504854[_0xe553('0x15')][_0xe553('0x18')]);}logger[_0xe553('0x15')]('ChatQueue,\x20%s,\x20%s',_0x4dbe84,_0x504854['error'][_0xe553('0x18')]);return _0xac75c5(_0x504854['error'][_0xe553('0x18')]);}else{logger[_0xe553('0x13')](_0xe553('0x17'),_0x4dbe84,_0xe553('0x19'));_0xac75c5(_0x504854['result'][_0xe553('0x18')]);}})[_0xe553('0x1a')](function(_0x5ba218){logger[_0xe553('0x15')](_0xe553('0x17'),_0x4dbe84,_0x5ba218);_0x211007(_0x5ba218);});});}exports['GetChatQueue']=function(_0x294bdf){var _0x166e9f=this;return new Promise(function(_0xc3a29e,_0x4aa596){return db['ChatQueue'][_0xe553('0x1b')]({'raw':_0x294bdf[_0xe553('0x1c')]?_0x294bdf[_0xe553('0x1c')][_0xe553('0x1d')]===undefined?!![]:![]:!![],'where':_0x294bdf[_0xe553('0x1c')]?_0x294bdf[_0xe553('0x1c')][_0xe553('0x1e')]||null:null,'attributes':_0x294bdf['options']?_0x294bdf[_0xe553('0x1c')][_0xe553('0x1f')]||null:null,'limit':_0x294bdf['options']?_0x294bdf[_0xe553('0x1c')][_0xe553('0x20')]||null:null,'include':_0x294bdf[_0xe553('0x1c')]?_0x294bdf[_0xe553('0x1c')][_0xe553('0x21')]?_['map'](_0x294bdf[_0xe553('0x1c')][_0xe553('0x21')],function(_0x5dc12f){return{'model':db[_0x5dc12f[_0xe553('0x22')]],'as':_0x5dc12f['as'],'attributes':_0x5dc12f[_0xe553('0x1f')],'include':_0x5dc12f[_0xe553('0x21')]?_[_0xe553('0x23')](_0x5dc12f[_0xe553('0x21')],function(_0x3a1dcf){return{'model':db[_0x3a1dcf[_0xe553('0x22')]],'as':_0x3a1dcf['as'],'attributes':_0x3a1dcf[_0xe553('0x1f')],'include':_0x3a1dcf[_0xe553('0x21')]?_['map'](_0x3a1dcf['include'],function(_0x4b45be){return{'model':db[_0x4b45be[_0xe553('0x22')]],'as':_0x4b45be['as'],'attributes':_0x4b45be['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a1c53){logger[_0xe553('0x13')](_0xe553('0x24'),_0x294bdf);logger[_0xe553('0x14')](_0xe553('0x24'),_0x294bdf,JSON[_0xe553('0x25')](_0x2a1c53));_0xc3a29e(_0x2a1c53);})[_0xe553('0x1a')](function(_0x2602dc){logger['error']('GetChatQueue',_0x2602dc['message'],_0x294bdf);_0x4aa596(_0x166e9f['error'](0x1f4,_0x2602dc[_0xe553('0x18')]));});});};exports[_0xe553('0x26')]=function(_0x2144b7){var _0x2e4ddb=this;return new Promise(function(_0x1db4fa,_0x272009){return db['ChatQueue'][_0xe553('0x27')]({'raw':_0x2144b7[_0xe553('0x1c')]?_0x2144b7[_0xe553('0x1c')][_0xe553('0x1d')]===undefined?!![]:![]:!![],'where':_0x2144b7['options']?_0x2144b7['options'][_0xe553('0x1e')]||null:null,'attributes':_0x2144b7['options']?_0x2144b7[_0xe553('0x1c')][_0xe553('0x1f')]||null:null,'include':_0x2144b7[_0xe553('0x1c')]?_0x2144b7[_0xe553('0x1c')]['include']?_[_0xe553('0x23')](_0x2144b7[_0xe553('0x1c')]['include'],function(_0x98b039){return{'model':db[_0x98b039['model']],'as':_0x98b039['as'],'attributes':_0x98b039['attributes'],'include':_0x98b039['include']?_[_0xe553('0x23')](_0x98b039[_0xe553('0x21')],function(_0x483e6a){return{'model':db[_0x483e6a[_0xe553('0x22')]],'as':_0x483e6a['as'],'attributes':_0x483e6a[_0xe553('0x1f')],'include':_0x483e6a[_0xe553('0x21')]?_['map'](_0x483e6a[_0xe553('0x21')],function(_0x16c342){return{'model':db[_0x16c342[_0xe553('0x22')]],'as':_0x16c342['as'],'attributes':_0x16c342[_0xe553('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe553('0x12')](function(_0xe6114b){logger['info'](_0xe553('0x26'),_0x2144b7);logger[_0xe553('0x14')](_0xe553('0x26'),_0x2144b7,JSON['stringify'](_0xe6114b));_0x1db4fa(_0xe6114b);})['catch'](function(_0xedde21){logger['error'](_0xe553('0x26'),_0xedde21[_0xe553('0x18')],_0x2144b7);_0x272009(_0x2e4ddb[_0xe553('0x15')](0x1f4,_0xedde21[_0xe553('0x18')]));});});};
\ No newline at end of file
index 1b8c2a7..47e4b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['remove','removeListener','register','length','chatQueue:','save'];(function(_0x3f2f28,_0x3eb88c){var _0xabef6b=function(_0x132e2d){while(--_0x132e2d){_0x3f2f28['push'](_0x3f2f28['shift']());}};_0xabef6b(++_0x3eb88c);}(_0xb821,0xa7));var _0x1b82=function(_0x27aa52,_0x8bba1e){_0x27aa52=_0x27aa52-0x0;var _0x1b5758=_0xb821[_0x27aa52];return _0x1b5758;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x1b82('0x0'),_0x1b82('0x1'),'update'];function createListener(_0x4a4f81,_0xbab478){return function(_0x578a10){_0xbab478['emit'](_0x4a4f81,_0x578a10);};}function removeListener(_0x3b1d14,_0x1403ab){return function(){ChatQueueEvents[_0x1b82('0x2')](_0x3b1d14,_0x1403ab);};}exports[_0x1b82('0x3')]=function(_0x597ca7){for(var _0x3e27c4=0x0,_0x192434=events[_0x1b82('0x4')];_0x3e27c4<_0x192434;_0x3e27c4++){var _0x3632dd=events[_0x3e27c4];var _0x18f45f=createListener(_0x1b82('0x5')+_0x3632dd,_0x597ca7);ChatQueueEvents['on'](_0x3632dd,_0x18f45f);}};
\ No newline at end of file
+var _0x6334=['length','chatQueue:','./chatQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x5b4e44,_0x32ff59){var _0x2e3ba1=function(_0x32313e){while(--_0x32313e){_0x5b4e44['push'](_0x5b4e44['shift']());}};_0x2e3ba1(++_0x32ff59);}(_0x6334,0x119));var _0x4633=function(_0x5d3903,_0x3d6c3e){_0x5d3903=_0x5d3903-0x0;var _0x4b8bc9=_0x6334[_0x5d3903];return _0x4b8bc9;};'use strict';var ChatQueueEvents=require(_0x4633('0x0'));var events=[_0x4633('0x1'),_0x4633('0x2'),_0x4633('0x3')];function createListener(_0x1e53a0,_0x47254b){return function(_0x5109db){_0x47254b[_0x4633('0x4')](_0x1e53a0,_0x5109db);};}function removeListener(_0x205442,_0x2a2b3c){return function(){ChatQueueEvents[_0x4633('0x5')](_0x205442,_0x2a2b3c);};}exports[_0x4633('0x6')]=function(_0x6493dc){for(var _0x175e14=0x0,_0x4a8997=events[_0x4633('0x7')];_0x175e14<_0x4a8997;_0x175e14++){var _0x56891d=events[_0x175e14];var _0x21af74=createListener(_0x4633('0x8')+_0x56891d,_0x6493dc);ChatQueueEvents['on'](_0x56891d,_0x21af74);}};
\ No newline at end of file
index 39c792f..247db6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x3e74,0x175));var _0x43e7=function(_0x5afcd2,_0x144e3e){_0x5afcd2=_0x5afcd2-0x0;var _0xae54cb=_0x3e74[_0x5afcd2];return _0xae54cb;};'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/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x3bf28e,_0x296152){var _0x1a53a5=function(_0x151973){while(--_0x151973){_0x3bf28e['push'](_0x3bf28e['shift']());}};_0x1a53a5(++_0x296152);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index eaebab5..a8371dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8342=['sequelize','exports','STRING','DATE','moment'];(function(_0x27f909,_0x5bc69c){var _0x23c0d4=function(_0x2439fa){while(--_0x2439fa){_0x27f909['push'](_0x27f909['shift']());}};_0x23c0d4(++_0x5bc69c);}(_0x8342,0x121));var _0x2834=function(_0x209581,_0x11f596){_0x209581=_0x209581-0x0;var _0x2fed45=_0x8342[_0x209581];return _0x2fed45;};'use strict';var moment=require(_0x2834('0x0'));var Sequelize=require(_0x2834('0x1'));module[_0x2834('0x2')]={'uniqueid':{'type':Sequelize[_0x2834('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x2834('0x4')]},'leaveAt':{'type':Sequelize[_0x2834('0x4')]},'acceptAt':{'type':Sequelize[_0x2834('0x4')]},'exitAt':{'type':Sequelize[_0x2834('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x036b=['moment','sequelize','exports','STRING','DATE'];(function(_0x3f39ab,_0x16c981){var _0x170952=function(_0x45e049){while(--_0x45e049){_0x3f39ab['push'](_0x3f39ab['shift']());}};_0x170952(++_0x16c981);}(_0x036b,0x145));var _0xb036=function(_0x1d4be2,_0x12c7ec){_0x1d4be2=_0x1d4be2-0x0;var _0x3df399=_0x036b[_0x1d4be2];return _0x3df399;};'use strict';var moment=require(_0xb036('0x0'));var Sequelize=require(_0xb036('0x1'));module[_0xb036('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xb036('0x3')]},'joinAt':{'type':Sequelize[_0xb036('0x4')]},'leaveAt':{'type':Sequelize[_0xb036('0x4')]},'acceptAt':{'type':Sequelize[_0xb036('0x4')]},'exitAt':{'type':Sequelize[_0xb036('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 42c87eb..8b5ab83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc0=['undefined','limit','count','offset','Content-Range','apply','reject','save','then','name','send','index','map','ChatQueueReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','type','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x3e38ca,_0x5dfde2){var _0x5ab127=function(_0x6a7cd1){while(--_0x6a7cd1){_0x3e38ca['push'](_0x3e38ca['shift']());}};_0x5ab127(++_0x5dfde2);}(_0x6dc0,0xb6));var _0x06dc=function(_0x27b77f,_0x381ac8){_0x27b77f=_0x27b77f-0x0;var _0xd790d6=_0x6dc0[_0x27b77f];return _0xd790d6;};'use strict';var emlformat=require(_0x06dc('0x0'));var rimraf=require(_0x06dc('0x1'));var zipdir=require(_0x06dc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x06dc('0x3'));var moment=require(_0x06dc('0x4'));var BPromise=require(_0x06dc('0x5'));var Mustache=require(_0x06dc('0x6'));var util=require('util');var path=require(_0x06dc('0x7'));var sox=require(_0x06dc('0x8'));var csv=require('to-csv');var ejs=require(_0x06dc('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x06dc('0xa'));var squel=require(_0x06dc('0xb'));var crypto=require(_0x06dc('0xc'));var jsforce=require(_0x06dc('0xd'));var deskjs=require(_0x06dc('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x06dc('0xf'));var authService=require(_0x06dc('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x06dc('0x11'));var hardwareService=require(_0x06dc('0x12'));var logger=require(_0x06dc('0x13'))(_0x06dc('0x14'));var utils=require('../../config/utils');var config=require(_0x06dc('0x15'));var licenseUtil=require(_0x06dc('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x527806,_0x534c07){_0x534c07=_0x534c07||0xcc;return function(_0x4f086f){if(_0x4f086f){return _0x527806[_0x06dc('0x17')](_0x534c07);}return _0x527806['status'](_0x534c07)['end']();};}function respondWithResult(_0x4874ce,_0x196cfd){_0x196cfd=_0x196cfd||0xc8;return function(_0x47753d){if(_0x47753d){return _0x4874ce[_0x06dc('0x18')](_0x196cfd)['json'](_0x47753d);}};}function respondWithFilteredResult(_0x183302,_0x1d92c2){return function(_0x145a07){if(_0x145a07){var _0x3da2c5=typeof _0x1d92c2['offset']===_0x06dc('0x19')&&typeof _0x1d92c2[_0x06dc('0x1a')]===_0x06dc('0x19');var _0x2478b9=_0x145a07[_0x06dc('0x1b')];var _0x51df31=_0x3da2c5?0x0:_0x1d92c2[_0x06dc('0x1c')];var _0x1d6ec8=_0x3da2c5?_0x145a07[_0x06dc('0x1b')]:_0x1d92c2[_0x06dc('0x1c')]+_0x1d92c2[_0x06dc('0x1a')];var _0x152ed2;if(_0x1d6ec8>=_0x2478b9){_0x1d6ec8=_0x2478b9;_0x152ed2=0xc8;}else{_0x152ed2=0xce;}_0x183302['status'](_0x152ed2);return _0x183302['set'](_0x06dc('0x1d'),_0x51df31+'-'+_0x1d6ec8+'/'+_0x2478b9)['json'](_0x145a07);}return null;};}function patchUpdates(_0x21c8c3){return function(_0x5088f3){try{jsonpatch[_0x06dc('0x1e')](_0x5088f3,_0x21c8c3,!![]);}catch(_0x369c60){return BPromise[_0x06dc('0x1f')](_0x369c60);}return _0x5088f3[_0x06dc('0x20')]();};}function saveUpdates(_0x8aaf2,_0x427f39){return function(_0x577284){if(_0x577284){return _0x577284['update'](_0x8aaf2)[_0x06dc('0x21')](function(_0x426260){return _0x426260;});}return null;};}function removeEntity(_0x56c345,_0x95dab2){return function(_0x5eab9b){if(_0x5eab9b){return _0x5eab9b['destroy']()['then'](function(){_0x56c345['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd3e42b,_0x5edc7b){return function(_0xfa043e){if(!_0xfa043e){_0xd3e42b['sendStatus'](0x194);}return _0xfa043e;};}function handleError(_0x52afcf,_0xa85ffc){_0xa85ffc=_0xa85ffc||0x1f4;return function(_0x26bbfe){logger['error'](_0x26bbfe['stack']);if(_0x26bbfe[_0x06dc('0x22')]){delete _0x26bbfe['name'];}_0x52afcf[_0x06dc('0x18')](_0xa85ffc)[_0x06dc('0x23')](_0x26bbfe);};}exports[_0x06dc('0x24')]=function(_0xfd5611,_0x1d98b8){var _0x31f5cd={},_0x164554={},_0x33ff4c={'count':0x0,'rows':[]};var _0x3f0e2d=_[_0x06dc('0x25')](db[_0x06dc('0x26')][_0x06dc('0x27')],function(_0x43e689){return{'name':_0x43e689['fieldName'],'type':_0x43e689['type'][_0x06dc('0x28')]};});_0x164554[_0x06dc('0x29')]=_[_0x06dc('0x25')](_0x3f0e2d,_0x06dc('0x22'));_0x164554[_0x06dc('0x2a')]=_[_0x06dc('0x2b')](_0xfd5611[_0x06dc('0x2a')]);_0x164554[_0x06dc('0x2c')]=_[_0x06dc('0x2d')](_0x164554[_0x06dc('0x29')],_0x164554['query']);_0x31f5cd[_0x06dc('0x2e')]=_[_0x06dc('0x2d')](_0x164554[_0x06dc('0x29')],qs[_0x06dc('0x2f')](_0xfd5611[_0x06dc('0x2a')]['fields']));_0x31f5cd[_0x06dc('0x2e')]=_0x31f5cd[_0x06dc('0x2e')][_0x06dc('0x30')]?_0x31f5cd['attributes']:_0x164554[_0x06dc('0x29')];if(!_0xfd5611[_0x06dc('0x2a')]['hasOwnProperty'](_0x06dc('0x31'))){_0x31f5cd[_0x06dc('0x1a')]=qs['limit'](_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x1a')]);_0x31f5cd[_0x06dc('0x1c')]=qs[_0x06dc('0x1c')](_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x1c')]);}_0x31f5cd[_0x06dc('0x32')]=qs[_0x06dc('0x33')](_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x33')]);_0x31f5cd['where']=qs['filters'](_['pick'](_0xfd5611[_0x06dc('0x2a')],_0x164554[_0x06dc('0x2c')]),_0x3f0e2d);if(_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x34')]){_0x31f5cd['where']=_['merge'](_0x31f5cd[_0x06dc('0x35')],{'$or':_[_0x06dc('0x25')](_0x3f0e2d,function(_0xdc718a){if(_0xdc718a[_0x06dc('0x36')]!==_0x06dc('0x37')){var _0xe65d69={};_0xe65d69[_0xdc718a[_0x06dc('0x22')]]={'$like':'%'+_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x34')]+'%'};return _0xe65d69;}})});}_0x31f5cd=_[_0x06dc('0x38')]({},_0x31f5cd,_0xfd5611[_0x06dc('0x39')]);var _0x11e2f6={'where':_0x31f5cd[_0x06dc('0x35')]};return db[_0x06dc('0x26')][_0x06dc('0x1b')](_0x11e2f6)[_0x06dc('0x21')](function(_0x3e9434){_0x33ff4c[_0x06dc('0x1b')]=_0x3e9434;if(_0xfd5611[_0x06dc('0x2a')][_0x06dc('0x3a')]){_0x31f5cd['include']=[{'all':!![]}];}return db['ChatQueueReport'][_0x06dc('0x3b')](_0x31f5cd);})[_0x06dc('0x21')](function(_0x4250fd){_0x33ff4c[_0x06dc('0x3c')]=_0x4250fd;return _0x33ff4c;})[_0x06dc('0x21')](respondWithFilteredResult(_0x1d98b8,_0x31f5cd))['catch'](handleError(_0x1d98b8,null));};exports[_0x06dc('0x3d')]=function(_0x37ec58,_0x64f6f3){var _0x59d4a0={'raw':!![],'where':{'id':_0x37ec58[_0x06dc('0x3e')]['id']}},_0x164684={};_0x164684['model']=_[_0x06dc('0x2b')](db[_0x06dc('0x26')][_0x06dc('0x27')]);_0x164684[_0x06dc('0x2a')]=_['keys'](_0x37ec58['query']);_0x164684[_0x06dc('0x2c')]=_[_0x06dc('0x2d')](_0x164684[_0x06dc('0x29')],_0x164684['query']);_0x59d4a0[_0x06dc('0x2e')]=_[_0x06dc('0x2d')](_0x164684[_0x06dc('0x29')],qs[_0x06dc('0x2f')](_0x37ec58[_0x06dc('0x2a')]['fields']));_0x59d4a0[_0x06dc('0x2e')]=_0x59d4a0['attributes']['length']?_0x59d4a0[_0x06dc('0x2e')]:_0x164684[_0x06dc('0x29')];if(_0x37ec58[_0x06dc('0x2a')][_0x06dc('0x3a')]){_0x59d4a0[_0x06dc('0x3f')]=[{'all':!![]}];}_0x59d4a0=_['merge']({},_0x59d4a0,_0x37ec58[_0x06dc('0x39')]);return db[_0x06dc('0x26')][_0x06dc('0x40')](_0x59d4a0)[_0x06dc('0x21')](handleEntityNotFound(_0x64f6f3,null))[_0x06dc('0x21')](respondWithResult(_0x64f6f3,null))[_0x06dc('0x41')](handleError(_0x64f6f3,null));};exports[_0x06dc('0x42')]=function(_0x6a5800,_0x1081a9){return db[_0x06dc('0x26')][_0x06dc('0x42')](_0x6a5800['body'],{})[_0x06dc('0x21')](respondWithResult(_0x1081a9,0xc9))[_0x06dc('0x41')](handleError(_0x1081a9,null));};exports['update']=function(_0xb9c6a2,_0x39e42a){if(_0xb9c6a2[_0x06dc('0x43')]['id']){delete _0xb9c6a2['body']['id'];}return db[_0x06dc('0x26')][_0x06dc('0x40')]({'where':{'id':_0xb9c6a2['params']['id']}})['then'](handleEntityNotFound(_0x39e42a,null))['then'](saveUpdates(_0xb9c6a2[_0x06dc('0x43')],null))[_0x06dc('0x21')](respondWithResult(_0x39e42a,null))[_0x06dc('0x41')](handleError(_0x39e42a,null));};exports['destroy']=function(_0x5dd2c2,_0x1d759b){return db[_0x06dc('0x26')][_0x06dc('0x40')]({'where':{'id':_0x5dd2c2[_0x06dc('0x3e')]['id']}})[_0x06dc('0x21')](handleEntityNotFound(_0x1d759b,null))['then'](removeEntity(_0x1d759b,null))[_0x06dc('0x41')](handleError(_0x1d759b,null));};exports[_0x06dc('0x44')]=function(_0x445aae,_0x5c911f){return db[_0x06dc('0x26')][_0x06dc('0x44')]()[_0x06dc('0x21')](respondWithResult(_0x5c911f,null))[_0x06dc('0x41')](handleError(_0x5c911f,null));};
\ No newline at end of file
+var _0xbccd=['eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','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/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','sort','filters','pick','filter','where','merge','options','includeAll','include','ChatQueueReport','findAll','params','keys','length','find','create','catch','body','describe'];(function(_0x19d267,_0x4aece0){var _0x5a9623=function(_0x29d1c1){while(--_0x29d1c1){_0x19d267['push'](_0x19d267['shift']());}};_0x5a9623(++_0x4aece0);}(_0xbccd,0x1b0));var _0xdbcc=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xbccd[_0x160c73];return _0xd9302;};'use strict';var emlformat=require(_0xdbcc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdbcc('0x1'));var rp=require(_0xdbcc('0x2'));var moment=require(_0xdbcc('0x3'));var BPromise=require(_0xdbcc('0x4'));var Mustache=require(_0xdbcc('0x5'));var util=require(_0xdbcc('0x6'));var path=require('path');var sox=require(_0xdbcc('0x7'));var csv=require(_0xdbcc('0x8'));var ejs=require(_0xdbcc('0x9'));var fs=require('fs');var fs_extra=require(_0xdbcc('0xa'));var _=require(_0xdbcc('0xb'));var squel=require(_0xdbcc('0xc'));var crypto=require(_0xdbcc('0xd'));var jsforce=require(_0xdbcc('0xe'));var deskjs=require(_0xdbcc('0xf'));var toCsv=require(_0xdbcc('0x8'));var querystring=require(_0xdbcc('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbcc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdbcc('0x12'));var hardwareService=require(_0xdbcc('0x13'));var logger=require(_0xdbcc('0x14'))(_0xdbcc('0x15'));var utils=require(_0xdbcc('0x16'));var config=require(_0xdbcc('0x17'));var licenseUtil=require(_0xdbcc('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2fbd02,_0x4c8384){_0x4c8384=_0x4c8384||0xcc;return function(_0x52b3bf){if(_0x52b3bf){return _0x2fbd02['sendStatus'](_0x4c8384);}return _0x2fbd02[_0xdbcc('0x19')](_0x4c8384)[_0xdbcc('0x1a')]();};}function respondWithResult(_0x290b93,_0xa799eb){_0xa799eb=_0xa799eb||0xc8;return function(_0x381f22){if(_0x381f22){return _0x290b93[_0xdbcc('0x19')](_0xa799eb)[_0xdbcc('0x1b')](_0x381f22);}};}function respondWithFilteredResult(_0x4649d2,_0x5c53a1){return function(_0x5688ce){if(_0x5688ce){var _0x2b189a=typeof _0x5c53a1[_0xdbcc('0x1c')]===_0xdbcc('0x1d')&&typeof _0x5c53a1[_0xdbcc('0x1e')]===_0xdbcc('0x1d');var _0x2df00c=_0x5688ce[_0xdbcc('0x1f')];var _0x3bfeb0=_0x2b189a?0x0:_0x5c53a1[_0xdbcc('0x1c')];var _0x3d9bda=_0x2b189a?_0x5688ce[_0xdbcc('0x1f')]:_0x5c53a1[_0xdbcc('0x1c')]+_0x5c53a1[_0xdbcc('0x1e')];var _0x4dd404;if(_0x3d9bda>=_0x2df00c){_0x3d9bda=_0x2df00c;_0x4dd404=0xc8;}else{_0x4dd404=0xce;}_0x4649d2['status'](_0x4dd404);return _0x4649d2[_0xdbcc('0x20')](_0xdbcc('0x21'),_0x3bfeb0+'-'+_0x3d9bda+'/'+_0x2df00c)['json'](_0x5688ce);}return null;};}function patchUpdates(_0x447f70){return function(_0x47990b){try{jsonpatch[_0xdbcc('0x22')](_0x47990b,_0x447f70,!![]);}catch(_0x500ec4){return BPromise['reject'](_0x500ec4);}return _0x47990b[_0xdbcc('0x23')]();};}function saveUpdates(_0x3c321f,_0x40d7d0){return function(_0x6eee38){if(_0x6eee38){return _0x6eee38[_0xdbcc('0x24')](_0x3c321f)[_0xdbcc('0x25')](function(_0x2d797a){return _0x2d797a;});}return null;};}function removeEntity(_0x18d47f,_0x591962){return function(_0x343523){if(_0x343523){return _0x343523['destroy']()[_0xdbcc('0x25')](function(){_0x18d47f[_0xdbcc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18d76d,_0xb2a8b4){return function(_0x2df594){if(!_0x2df594){_0x18d76d['sendStatus'](0x194);}return _0x2df594;};}function handleError(_0x50e23c,_0xbe9ba3){_0xbe9ba3=_0xbe9ba3||0x1f4;return function(_0x17e223){logger[_0xdbcc('0x26')](_0x17e223['stack']);if(_0x17e223[_0xdbcc('0x27')]){delete _0x17e223[_0xdbcc('0x27')];}_0x50e23c['status'](_0xbe9ba3)[_0xdbcc('0x28')](_0x17e223);};}exports[_0xdbcc('0x29')]=function(_0x26cf3a,_0x59b175){var _0x31412c={},_0x548047={},_0x1b4425={'count':0x0,'rows':[]};var _0x57d722=_[_0xdbcc('0x2a')](db['ChatQueueReport'][_0xdbcc('0x2b')],function(_0x38b9ac){return{'name':_0x38b9ac[_0xdbcc('0x2c')],'type':_0x38b9ac[_0xdbcc('0x2d')][_0xdbcc('0x2e')]};});_0x548047[_0xdbcc('0x2f')]=_[_0xdbcc('0x2a')](_0x57d722,'name');_0x548047[_0xdbcc('0x30')]=_['keys'](_0x26cf3a[_0xdbcc('0x30')]);_0x548047['filters']=_['intersection'](_0x548047[_0xdbcc('0x2f')],_0x548047[_0xdbcc('0x30')]);_0x31412c['attributes']=_[_0xdbcc('0x31')](_0x548047['model'],qs[_0xdbcc('0x32')](_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x32')]));_0x31412c[_0xdbcc('0x33')]=_0x31412c[_0xdbcc('0x33')]['length']?_0x31412c[_0xdbcc('0x33')]:_0x548047[_0xdbcc('0x2f')];if(!_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x34')]('nolimit')){_0x31412c['limit']=qs[_0xdbcc('0x1e')](_0x26cf3a['query']['limit']);_0x31412c[_0xdbcc('0x1c')]=qs[_0xdbcc('0x1c')](_0x26cf3a[_0xdbcc('0x30')]['offset']);}_0x31412c['order']=qs[_0xdbcc('0x35')](_0x26cf3a[_0xdbcc('0x30')]['sort']);_0x31412c['where']=qs[_0xdbcc('0x36')](_[_0xdbcc('0x37')](_0x26cf3a[_0xdbcc('0x30')],_0x548047[_0xdbcc('0x36')]),_0x57d722);if(_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x38')]){_0x31412c[_0xdbcc('0x39')]=_['merge'](_0x31412c[_0xdbcc('0x39')],{'$or':_['map'](_0x57d722,function(_0x2826d5){if(_0x2826d5[_0xdbcc('0x2d')]!=='VIRTUAL'){var _0xfc5684={};_0xfc5684[_0x2826d5[_0xdbcc('0x27')]]={'$like':'%'+_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x38')]+'%'};return _0xfc5684;}})});}_0x31412c=_[_0xdbcc('0x3a')]({},_0x31412c,_0x26cf3a[_0xdbcc('0x3b')]);var _0x193651={'where':_0x31412c[_0xdbcc('0x39')]};return db['ChatQueueReport'][_0xdbcc('0x1f')](_0x193651)[_0xdbcc('0x25')](function(_0x298e63){_0x1b4425[_0xdbcc('0x1f')]=_0x298e63;if(_0x26cf3a['query'][_0xdbcc('0x3c')]){_0x31412c[_0xdbcc('0x3d')]=[{'all':!![]}];}return db[_0xdbcc('0x3e')][_0xdbcc('0x3f')](_0x31412c);})[_0xdbcc('0x25')](function(_0x24b4d5){_0x1b4425['rows']=_0x24b4d5;return _0x1b4425;})[_0xdbcc('0x25')](respondWithFilteredResult(_0x59b175,_0x31412c))['catch'](handleError(_0x59b175,null));};exports['show']=function(_0x3d4371,_0x3de65f){var _0x1c1ea8={'raw':!![],'where':{'id':_0x3d4371[_0xdbcc('0x40')]['id']}},_0x5c32db={};_0x5c32db['model']=_[_0xdbcc('0x41')](db[_0xdbcc('0x3e')][_0xdbcc('0x2b')]);_0x5c32db['query']=_[_0xdbcc('0x41')](_0x3d4371[_0xdbcc('0x30')]);_0x5c32db[_0xdbcc('0x36')]=_['intersection'](_0x5c32db[_0xdbcc('0x2f')],_0x5c32db[_0xdbcc('0x30')]);_0x1c1ea8['attributes']=_[_0xdbcc('0x31')](_0x5c32db[_0xdbcc('0x2f')],qs[_0xdbcc('0x32')](_0x3d4371['query'][_0xdbcc('0x32')]));_0x1c1ea8[_0xdbcc('0x33')]=_0x1c1ea8[_0xdbcc('0x33')][_0xdbcc('0x42')]?_0x1c1ea8['attributes']:_0x5c32db[_0xdbcc('0x2f')];if(_0x3d4371[_0xdbcc('0x30')]['includeAll']){_0x1c1ea8[_0xdbcc('0x3d')]=[{'all':!![]}];}_0x1c1ea8=_[_0xdbcc('0x3a')]({},_0x1c1ea8,_0x3d4371[_0xdbcc('0x3b')]);return db['ChatQueueReport'][_0xdbcc('0x43')](_0x1c1ea8)[_0xdbcc('0x25')](handleEntityNotFound(_0x3de65f,null))[_0xdbcc('0x25')](respondWithResult(_0x3de65f,null))['catch'](handleError(_0x3de65f,null));};exports[_0xdbcc('0x44')]=function(_0x301f00,_0x2b2172){return db[_0xdbcc('0x3e')]['create'](_0x301f00['body'],{})[_0xdbcc('0x25')](respondWithResult(_0x2b2172,0xc9))[_0xdbcc('0x45')](handleError(_0x2b2172,null));};exports[_0xdbcc('0x24')]=function(_0x5da133,_0x16f783){if(_0x5da133[_0xdbcc('0x46')]['id']){delete _0x5da133[_0xdbcc('0x46')]['id'];}return db[_0xdbcc('0x3e')]['find']({'where':{'id':_0x5da133[_0xdbcc('0x40')]['id']}})[_0xdbcc('0x25')](handleEntityNotFound(_0x16f783,null))[_0xdbcc('0x25')](saveUpdates(_0x5da133[_0xdbcc('0x46')],null))[_0xdbcc('0x25')](respondWithResult(_0x16f783,null))[_0xdbcc('0x45')](handleError(_0x16f783,null));};exports['destroy']=function(_0x534063,_0x1470e9){return db['ChatQueueReport'][_0xdbcc('0x43')]({'where':{'id':_0x534063['params']['id']}})['then'](handleEntityNotFound(_0x1470e9,null))[_0xdbcc('0x25')](removeEntity(_0x1470e9,null))['catch'](handleError(_0x1470e9,null));};exports[_0xdbcc('0x47')]=function(_0xe005aa,_0x5e2656){return db[_0xdbcc('0x3e')][_0xdbcc('0x47')]()['then'](respondWithResult(_0x5e2656,null))[_0xdbcc('0x45')](handleError(_0x5e2656,null));};
\ No newline at end of file
index 643cd44..c4ced37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x296809,_0x1c9665){var _0x18c0d3=function(_0x249156){while(--_0x249156){_0x296809['push'](_0x296809['shift']());}};_0x18c0d3(++_0x1c9665);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x399113,_0x5f3d53){var _0x466bcb=function(_0xd8104b){while(--_0xd8104b){_0x399113['push'](_0x399113['shift']());}};_0x466bcb(++_0x5f3d53);}(_0x757a,0xde));var _0xa757=function(_0x62987,_0x1294eb){_0x62987=_0x62987-0x0;var _0x554e66=_0x757a[_0x62987];return _0x554e66;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 57a9613..6d48a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88e2=['message','CreateChatQueueReport','ChatQueueReport','create','options','raw','debug','stringify','catch','UpdateChatQueueReport','update','body','where','attributes','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','code','error'];(function(_0x49c057,_0xc808ed){var _0xd8f0e6=function(_0x5b9042){while(--_0x5b9042){_0x49c057['push'](_0x49c057['shift']());}};_0xd8f0e6(++_0xc808ed);}(_0x88e2,0x96));var _0x288e=function(_0x408f13,_0x188203){_0x408f13=_0x408f13-0x0;var _0x4f3e25=_0x88e2[_0x408f13];return _0x4f3e25;};'use strict';var _=require(_0x288e('0x0'));var util=require(_0x288e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x288e('0x2'));var fs=require('fs');var Redis=require(_0x288e('0x3'));var db=require(_0x288e('0x4'))['db'];var utils=require(_0x288e('0x5'));var logger=require(_0x288e('0x6'))(_0x288e('0x7'));var config=require(_0x288e('0x8'));var jayson=require(_0x288e('0x9'));var client=jayson[_0x288e('0xa')][_0x288e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c93ae,_0x51a724,_0x4d0c23){return new BPromise(function(_0x2b3934,_0x3c7fce){return client[_0x288e('0xc')](_0x5c93ae,_0x4d0c23)[_0x288e('0xd')](function(_0x5ddae2){logger[_0x288e('0xe')](_0x288e('0xf'),_0x51a724,_0x288e('0x10'));logger['debug'](_0x288e('0x11'),_0x51a724,_0x288e('0x10'),JSON['stringify'](_0x5ddae2));if(_0x5ddae2['error']){if(_0x5ddae2['error'][_0x288e('0x12')]===0x1f4){logger[_0x288e('0x13')](_0x288e('0xf'),_0x51a724,_0x5ddae2['error']['message']);return _0x3c7fce(_0x5ddae2[_0x288e('0x13')][_0x288e('0x14')]);}logger['error'](_0x288e('0xf'),_0x51a724,_0x5ddae2[_0x288e('0x13')][_0x288e('0x14')]);return _0x2b3934(_0x5ddae2['error'][_0x288e('0x14')]);}else{logger[_0x288e('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x51a724,_0x288e('0x10'));_0x2b3934(_0x5ddae2['result'][_0x288e('0x14')]);}})['catch'](function(_0x486d13){logger[_0x288e('0x13')](_0x288e('0xf'),_0x51a724,_0x486d13);_0x3c7fce(_0x486d13);});});}exports[_0x288e('0x15')]=function(_0x1ab21d){var _0x36272c=this;return new Promise(function(_0xe2c70,_0x58a4f4){return db[_0x288e('0x16')][_0x288e('0x17')](_0x1ab21d['body'],{'raw':_0x1ab21d['options']?_0x1ab21d[_0x288e('0x18')][_0x288e('0x19')]===undefined?!![]:![]:!![]})[_0x288e('0xd')](function(_0x30f9db){logger[_0x288e('0xe')](_0x288e('0x15'),_0x1ab21d);logger[_0x288e('0x1a')](_0x288e('0x15'),_0x1ab21d,JSON[_0x288e('0x1b')](_0x30f9db));_0xe2c70(_0x30f9db);})[_0x288e('0x1c')](function(_0x4ddc50){logger[_0x288e('0x13')](_0x288e('0x15'),_0x4ddc50[_0x288e('0x14')],_0x1ab21d);_0x58a4f4(_0x36272c[_0x288e('0x13')](0x1f4,_0x4ddc50[_0x288e('0x14')]));});});};exports[_0x288e('0x1d')]=function(_0x4cf79e){var _0x20f87b=this;return new Promise(function(_0x5f9c23,_0x516804){return db['ChatQueueReport'][_0x288e('0x1e')](_0x4cf79e[_0x288e('0x1f')],{'raw':_0x4cf79e[_0x288e('0x18')]?_0x4cf79e[_0x288e('0x18')][_0x288e('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4cf79e[_0x288e('0x18')]?_0x4cf79e[_0x288e('0x18')][_0x288e('0x20')]||null:null,'attributes':_0x4cf79e['options']?_0x4cf79e[_0x288e('0x18')][_0x288e('0x21')]||null:null,'limit':_0x4cf79e['options']?_0x4cf79e[_0x288e('0x18')]['limit']||null:null})[_0x288e('0xd')](function(_0x32fa8e){logger[_0x288e('0xe')](_0x288e('0x1d'),_0x4cf79e);logger[_0x288e('0x1a')](_0x288e('0x1d'),_0x4cf79e,JSON[_0x288e('0x1b')](_0x32fa8e));_0x5f9c23(_0x32fa8e);})['catch'](function(_0x502aa1){logger['error']('UpdateChatQueueReport',_0x502aa1[_0x288e('0x14')],_0x4cf79e);_0x516804(_0x20f87b[_0x288e('0x13')](0x1f4,_0x502aa1[_0x288e('0x14')]));});});};
\ No newline at end of file
+var _0xf8c8=['ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','raw','then','debug','stringify','UpdateChatQueueReport','options','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info'];(function(_0x274689,_0x340d7f){var _0x3693b5=function(_0x46c3ae){while(--_0x46c3ae){_0x274689['push'](_0x274689['shift']());}};_0x3693b5(++_0x340d7f);}(_0xf8c8,0x1cf));var _0x8f8c=function(_0x5d83b9,_0x359e96){_0x5d83b9=_0x5d83b9-0x0;var _0x31428f=_0xf8c8[_0x5d83b9];return _0x31428f;};'use strict';var _=require(_0x8f8c('0x0'));var util=require('util');var moment=require(_0x8f8c('0x1'));var BPromise=require(_0x8f8c('0x2'));var rs=require(_0x8f8c('0x3'));var fs=require('fs');var Redis=require(_0x8f8c('0x4'));var db=require(_0x8f8c('0x5'))['db'];var utils=require(_0x8f8c('0x6'));var logger=require(_0x8f8c('0x7'))(_0x8f8c('0x8'));var config=require(_0x8f8c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8f8c('0xa')][_0x8f8c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x346ae6,_0x189f7c,_0x140786){return new BPromise(function(_0x2cdf9c,_0x7b1a51){return client['request'](_0x346ae6,_0x140786)['then'](function(_0x108284){logger[_0x8f8c('0xc')](_0x8f8c('0xd'),_0x189f7c,_0x8f8c('0xe'));logger['debug'](_0x8f8c('0xf'),_0x189f7c,_0x8f8c('0xe'),JSON['stringify'](_0x108284));if(_0x108284[_0x8f8c('0x10')]){if(_0x108284[_0x8f8c('0x10')][_0x8f8c('0x11')]===0x1f4){logger[_0x8f8c('0x10')](_0x8f8c('0xd'),_0x189f7c,_0x108284[_0x8f8c('0x10')][_0x8f8c('0x12')]);return _0x7b1a51(_0x108284[_0x8f8c('0x10')][_0x8f8c('0x12')]);}logger[_0x8f8c('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x189f7c,_0x108284['error'][_0x8f8c('0x12')]);return _0x2cdf9c(_0x108284[_0x8f8c('0x10')][_0x8f8c('0x12')]);}else{logger[_0x8f8c('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x189f7c,_0x8f8c('0xe'));_0x2cdf9c(_0x108284[_0x8f8c('0x13')][_0x8f8c('0x12')]);}})[_0x8f8c('0x14')](function(_0x258083){logger[_0x8f8c('0x10')](_0x8f8c('0xd'),_0x189f7c,_0x258083);_0x7b1a51(_0x258083);});});}exports[_0x8f8c('0x15')]=function(_0x200d7f){var _0x31cb24=this;return new Promise(function(_0x14d8b6,_0x1f59c7){return db[_0x8f8c('0x16')][_0x8f8c('0x17')](_0x200d7f[_0x8f8c('0x18')],{'raw':_0x200d7f['options']?_0x200d7f['options'][_0x8f8c('0x19')]===undefined?!![]:![]:!![]})[_0x8f8c('0x1a')](function(_0x5e646b){logger[_0x8f8c('0xc')](_0x8f8c('0x15'),_0x200d7f);logger[_0x8f8c('0x1b')](_0x8f8c('0x15'),_0x200d7f,JSON[_0x8f8c('0x1c')](_0x5e646b));_0x14d8b6(_0x5e646b);})[_0x8f8c('0x14')](function(_0x559456){logger['error'](_0x8f8c('0x15'),_0x559456[_0x8f8c('0x12')],_0x200d7f);_0x1f59c7(_0x31cb24[_0x8f8c('0x10')](0x1f4,_0x559456[_0x8f8c('0x12')]));});});};exports[_0x8f8c('0x1d')]=function(_0x504f42){var _0x4c7749=this;return new Promise(function(_0x17ca42,_0x130b2e){return db[_0x8f8c('0x16')]['update'](_0x504f42[_0x8f8c('0x18')],{'raw':_0x504f42[_0x8f8c('0x1e')]?_0x504f42['options'][_0x8f8c('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x504f42[_0x8f8c('0x1e')]?_0x504f42['options'][_0x8f8c('0x1f')]||null:null,'attributes':_0x504f42[_0x8f8c('0x1e')]?_0x504f42[_0x8f8c('0x1e')][_0x8f8c('0x20')]||null:null,'limit':_0x504f42[_0x8f8c('0x1e')]?_0x504f42[_0x8f8c('0x1e')][_0x8f8c('0x21')]||null:null})[_0x8f8c('0x1a')](function(_0x358cb6){logger[_0x8f8c('0xc')](_0x8f8c('0x1d'),_0x504f42);logger[_0x8f8c('0x1b')](_0x8f8c('0x1d'),_0x504f42,JSON[_0x8f8c('0x1c')](_0x358cb6));_0x17ca42(_0x358cb6);})[_0x8f8c('0x14')](function(_0x217b64){logger[_0x8f8c('0x10')]('UpdateChatQueueReport',_0x217b64[_0x8f8c('0x12')],_0x504f42);_0x130b2e(_0x4c7749[_0x8f8c('0x10')](0x1f4,_0x217b64[_0x8f8c('0x12')]));});});};
\ No newline at end of file
index e3a870e..fe0c0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x794d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','delete','destroy','multer','util','express'];(function(_0x445b45,_0x752d9c){var _0x2b319b=function(_0x45d6a3){while(--_0x45d6a3){_0x445b45['push'](_0x445b45['shift']());}};_0x2b319b(++_0x752d9c);}(_0x794d,0xb1));var _0xd794=function(_0x31b4aa,_0x9a6429){_0x31b4aa=_0x31b4aa-0x0;var _0x1bb3dd=_0x794d[_0x31b4aa];return _0x1bb3dd;};'use strict';var multer=require(_0xd794('0x0'));var util=require(_0xd794('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd794('0x2'));var router=express[_0xd794('0x3')]();var fs_extra=require(_0xd794('0x4'));var auth=require(_0xd794('0x5'));var interaction=require(_0xd794('0x6'));var config=require(_0xd794('0x7'));var controller=require(_0xd794('0x8'));router[_0xd794('0x9')]('/',auth[_0xd794('0xa')](),controller[_0xd794('0xb')]);router['get'](_0xd794('0xc'),auth[_0xd794('0xa')](),controller[_0xd794('0xd')]);router['get'](_0xd794('0xe'),auth[_0xd794('0xa')](),controller[_0xd794('0xf')]);router[_0xd794('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xd794('0xe'),auth[_0xd794('0xa')](),controller[_0xd794('0x11')]);router[_0xd794('0x12')](_0xd794('0xe'),auth[_0xd794('0xa')](),controller[_0xd794('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x922f=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete','exports','multer','util','connect-timeout'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0x922f,0x9d));var _0xf922=function(_0x58588f,_0x47296b){_0x58588f=_0x58588f-0x0;var _0x2682ca=_0x922f[_0x58588f];return _0x2682ca;};'use strict';var multer=require(_0xf922('0x0'));var util=require(_0xf922('0x1'));var path=require('path');var timeout=require(_0xf922('0x2'));var express=require('express');var router=express[_0xf922('0x3')]();var fs_extra=require(_0xf922('0x4'));var auth=require(_0xf922('0x5'));var interaction=require(_0xf922('0x6'));var config=require(_0xf922('0x7'));var controller=require(_0xf922('0x8'));router[_0xf922('0x9')]('/',auth[_0xf922('0xa')](),controller[_0xf922('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xf922('0xc')]);router[_0xf922('0x9')](_0xf922('0xd'),auth[_0xf922('0xa')](),controller['show']);router[_0xf922('0xe')]('/',auth[_0xf922('0xa')](),controller[_0xf922('0xf')]);router[_0xf922('0x10')](_0xf922('0xd'),auth[_0xf922('0xa')](),controller[_0xf922('0x11')]);router[_0xf922('0x12')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xf922('0x13')]=router;
\ No newline at end of file
index 4bee484..dd6ad58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x17d3d0,_0x6ecac3){var _0x3a4144=function(_0x258783){while(--_0x258783){_0x17d3d0['push'](_0x17d3d0['shift']());}};_0x3a4144(++_0x6ecac3);}(_0xf4eb,0xec));var _0xbf4e=function(_0x92a015,_0x3494d1){_0x92a015=_0x92a015-0x0;var _0x25323b=_0xf4eb[_0x92a015];return _0x25323b;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x23055f,_0x22a833){var _0x31bd9d=function(_0x4dc9df){while(--_0x4dc9df){_0x23055f['push'](_0x23055f['shift']());}};_0x31bd9d(++_0x22a833);}(_0x54ef,0x112));var _0xf54e=function(_0x4fa39d,_0x953613){_0x4fa39d=_0x4fa39d-0x0;var _0x518476=_0x54ef[_0x4fa39d];return _0x518476;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index 66894ad..474578e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e68=['keys','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatTransferReport','includeAll','findAll','rows','catch','show','params'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x5e68,0x1da));var _0x85e6=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x5e68[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x85e6('0x0'));var rimraf=require(_0x85e6('0x1'));var zipdir=require(_0x85e6('0x2'));var jsonpatch=require(_0x85e6('0x3'));var rp=require(_0x85e6('0x4'));var moment=require(_0x85e6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x85e6('0x6'));var util=require('util');var path=require(_0x85e6('0x7'));var sox=require(_0x85e6('0x8'));var csv=require(_0x85e6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x85e6('0xa'));var _=require(_0x85e6('0xb'));var squel=require('squel');var crypto=require(_0x85e6('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x85e6('0xd'));var toCsv=require('to-csv');var querystring=require(_0x85e6('0xe'));var Papa=require(_0x85e6('0xf'));var Redis=require(_0x85e6('0x10'));var authService=require(_0x85e6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x85e6('0x12'));var hardwareService=require(_0x85e6('0x13'));var logger=require(_0x85e6('0x14'))(_0x85e6('0x15'));var utils=require(_0x85e6('0x16'));var config=require(_0x85e6('0x17'));var licenseUtil=require(_0x85e6('0x18'));var db=require(_0x85e6('0x19'))['db'];function respondWithStatusCode(_0x426e6d,_0x13aa52){_0x13aa52=_0x13aa52||0xcc;return function(_0x2eda72){if(_0x2eda72){return _0x426e6d[_0x85e6('0x1a')](_0x13aa52);}return _0x426e6d[_0x85e6('0x1b')](_0x13aa52)['end']();};}function respondWithResult(_0x24715d,_0x1c3380){_0x1c3380=_0x1c3380||0xc8;return function(_0x4a4406){if(_0x4a4406){return _0x24715d[_0x85e6('0x1b')](_0x1c3380)['json'](_0x4a4406);}};}function respondWithFilteredResult(_0x51fd09,_0xac1e35){return function(_0x25851e){if(_0x25851e){var _0x2ab7cb=typeof _0xac1e35[_0x85e6('0x1c')]===_0x85e6('0x1d')&&typeof _0xac1e35[_0x85e6('0x1e')]===_0x85e6('0x1d');var _0x171804=_0x25851e[_0x85e6('0x1f')];var _0x4e4dc2=_0x2ab7cb?0x0:_0xac1e35['offset'];var _0x499688=_0x2ab7cb?_0x25851e['count']:_0xac1e35['offset']+_0xac1e35['limit'];var _0x2bd921;if(_0x499688>=_0x171804){_0x499688=_0x171804;_0x2bd921=0xc8;}else{_0x2bd921=0xce;}_0x51fd09[_0x85e6('0x1b')](_0x2bd921);return _0x51fd09[_0x85e6('0x20')]('Content-Range',_0x4e4dc2+'-'+_0x499688+'/'+_0x171804)[_0x85e6('0x21')](_0x25851e);}return null;};}function patchUpdates(_0x4fcc82){return function(_0x32da59){try{jsonpatch['apply'](_0x32da59,_0x4fcc82,!![]);}catch(_0x46a4f8){return BPromise[_0x85e6('0x22')](_0x46a4f8);}return _0x32da59[_0x85e6('0x23')]();};}function saveUpdates(_0x5b7a18,_0x4cbd2d){return function(_0x47bc99){if(_0x47bc99){return _0x47bc99[_0x85e6('0x24')](_0x5b7a18)[_0x85e6('0x25')](function(_0xe91b3e){return _0xe91b3e;});}return null;};}function removeEntity(_0xe0b5be,_0x3c6d09){return function(_0x18a182){if(_0x18a182){return _0x18a182[_0x85e6('0x26')]()[_0x85e6('0x25')](function(){_0xe0b5be[_0x85e6('0x1b')](0xcc)[_0x85e6('0x27')]();});}};}function handleEntityNotFound(_0x324043,_0x4921b5){return function(_0x2fdbc0){if(!_0x2fdbc0){_0x324043[_0x85e6('0x1a')](0x194);}return _0x2fdbc0;};}function handleError(_0x57b8f1,_0x1f3db1){_0x1f3db1=_0x1f3db1||0x1f4;return function(_0x6c0a4e){logger[_0x85e6('0x28')](_0x6c0a4e[_0x85e6('0x29')]);if(_0x6c0a4e[_0x85e6('0x2a')]){delete _0x6c0a4e[_0x85e6('0x2a')];}_0x57b8f1['status'](_0x1f3db1)[_0x85e6('0x2b')](_0x6c0a4e);};}exports[_0x85e6('0x2c')]=function(_0x5c4274,_0x2314e8){var _0x43a614={},_0x7f3d2={},_0x12d161={'count':0x0,'rows':[]};var _0x3a2fe4=_[_0x85e6('0x2d')](db['ChatTransferReport'][_0x85e6('0x2e')],function(_0x26f763){return{'name':_0x26f763[_0x85e6('0x2f')],'type':_0x26f763[_0x85e6('0x30')]['key']};});_0x7f3d2[_0x85e6('0x31')]=_[_0x85e6('0x2d')](_0x3a2fe4,_0x85e6('0x2a'));_0x7f3d2[_0x85e6('0x32')]=_['keys'](_0x5c4274['query']);_0x7f3d2[_0x85e6('0x33')]=_['intersection'](_0x7f3d2['model'],_0x7f3d2[_0x85e6('0x32')]);_0x43a614[_0x85e6('0x34')]=_[_0x85e6('0x35')](_0x7f3d2[_0x85e6('0x31')],qs['fields'](_0x5c4274[_0x85e6('0x32')][_0x85e6('0x36')]));_0x43a614[_0x85e6('0x34')]=_0x43a614['attributes'][_0x85e6('0x37')]?_0x43a614[_0x85e6('0x34')]:_0x7f3d2[_0x85e6('0x31')];if(!_0x5c4274[_0x85e6('0x32')]['hasOwnProperty'](_0x85e6('0x38'))){_0x43a614[_0x85e6('0x1e')]=qs[_0x85e6('0x1e')](_0x5c4274[_0x85e6('0x32')][_0x85e6('0x1e')]);_0x43a614[_0x85e6('0x1c')]=qs[_0x85e6('0x1c')](_0x5c4274[_0x85e6('0x32')][_0x85e6('0x1c')]);}_0x43a614[_0x85e6('0x39')]=qs[_0x85e6('0x3a')](_0x5c4274['query']['sort']);_0x43a614[_0x85e6('0x3b')]=qs[_0x85e6('0x33')](_[_0x85e6('0x3c')](_0x5c4274[_0x85e6('0x32')],_0x7f3d2[_0x85e6('0x33')]),_0x3a2fe4);if(_0x5c4274[_0x85e6('0x32')][_0x85e6('0x3d')]){_0x43a614[_0x85e6('0x3b')]=_[_0x85e6('0x3e')](_0x43a614[_0x85e6('0x3b')],{'$or':_['map'](_0x3a2fe4,function(_0x5e27b6){if(_0x5e27b6[_0x85e6('0x30')]!==_0x85e6('0x3f')){var _0x2d5d8a={};_0x2d5d8a[_0x5e27b6[_0x85e6('0x2a')]]={'$like':'%'+_0x5c4274[_0x85e6('0x32')][_0x85e6('0x3d')]+'%'};return _0x2d5d8a;}})});}_0x43a614=_[_0x85e6('0x3e')]({},_0x43a614,_0x5c4274[_0x85e6('0x40')]);var _0x30f930={'where':_0x43a614[_0x85e6('0x3b')]};return db[_0x85e6('0x41')][_0x85e6('0x1f')](_0x30f930)[_0x85e6('0x25')](function(_0xc675c2){_0x12d161[_0x85e6('0x1f')]=_0xc675c2;if(_0x5c4274[_0x85e6('0x32')][_0x85e6('0x42')]){_0x43a614['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0x85e6('0x43')](_0x43a614);})[_0x85e6('0x25')](function(_0x517290){_0x12d161[_0x85e6('0x44')]=_0x517290;return _0x12d161;})[_0x85e6('0x25')](respondWithFilteredResult(_0x2314e8,_0x43a614))[_0x85e6('0x45')](handleError(_0x2314e8,null));};exports[_0x85e6('0x46')]=function(_0x2a16e2,_0x336e91){var _0x4d553c={'raw':!![],'where':{'id':_0x2a16e2[_0x85e6('0x47')]['id']}},_0x13b6e8={};_0x13b6e8['model']=_[_0x85e6('0x48')](db[_0x85e6('0x41')][_0x85e6('0x2e')]);_0x13b6e8[_0x85e6('0x32')]=_[_0x85e6('0x48')](_0x2a16e2[_0x85e6('0x32')]);_0x13b6e8[_0x85e6('0x33')]=_[_0x85e6('0x35')](_0x13b6e8['model'],_0x13b6e8[_0x85e6('0x32')]);_0x4d553c[_0x85e6('0x34')]=_[_0x85e6('0x35')](_0x13b6e8['model'],qs[_0x85e6('0x36')](_0x2a16e2[_0x85e6('0x32')][_0x85e6('0x36')]));_0x4d553c['attributes']=_0x4d553c['attributes']['length']?_0x4d553c[_0x85e6('0x34')]:_0x13b6e8[_0x85e6('0x31')];if(_0x2a16e2[_0x85e6('0x32')]['includeAll']){_0x4d553c[_0x85e6('0x49')]=[{'all':!![]}];}_0x4d553c=_[_0x85e6('0x3e')]({},_0x4d553c,_0x2a16e2[_0x85e6('0x40')]);return db[_0x85e6('0x41')]['find'](_0x4d553c)[_0x85e6('0x25')](handleEntityNotFound(_0x336e91,null))[_0x85e6('0x25')](respondWithResult(_0x336e91,null))[_0x85e6('0x45')](handleError(_0x336e91,null));};exports[_0x85e6('0x4a')]=function(_0x324010,_0x156e3b){return db['ChatTransferReport'][_0x85e6('0x4a')](_0x324010[_0x85e6('0x4b')],{})['then'](respondWithResult(_0x156e3b,0xc9))['catch'](handleError(_0x156e3b,null));};exports[_0x85e6('0x24')]=function(_0x4a2899,_0x5bbdb6){if(_0x4a2899[_0x85e6('0x4b')]['id']){delete _0x4a2899[_0x85e6('0x4b')]['id'];}return db[_0x85e6('0x41')]['find']({'where':{'id':_0x4a2899[_0x85e6('0x47')]['id']}})[_0x85e6('0x25')](handleEntityNotFound(_0x5bbdb6,null))[_0x85e6('0x25')](saveUpdates(_0x4a2899[_0x85e6('0x4b')],null))[_0x85e6('0x25')](respondWithResult(_0x5bbdb6,null))[_0x85e6('0x45')](handleError(_0x5bbdb6,null));};exports[_0x85e6('0x26')]=function(_0x4e54ab,_0x321efc){return db[_0x85e6('0x41')][_0x85e6('0x4c')]({'where':{'id':_0x4e54ab['params']['id']}})[_0x85e6('0x25')](handleEntityNotFound(_0x321efc,null))['then'](removeEntity(_0x321efc,null))[_0x85e6('0x45')](handleError(_0x321efc,null));};exports[_0x85e6('0x4d')]=function(_0x101424,_0xe2e5c2){return db[_0x85e6('0x41')]['describe']()[_0x85e6('0x25')](respondWithResult(_0xe2e5c2,null))[_0x85e6('0x45')](handleError(_0xe2e5c2,null));};
\ No newline at end of file
+var _0x4a21=['moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','type','VIRTUAL','filter','merge','options','includeAll','findAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x257495,_0x18269b){var _0x3849aa=function(_0x1ca94e){while(--_0x1ca94e){_0x257495['push'](_0x257495['shift']());}};_0x3849aa(++_0x18269b);}(_0x4a21,0xef));var _0x14a2=function(_0x277fa3,_0x3b2dde){_0x277fa3=_0x277fa3-0x0;var _0x2e4520=_0x4a21[_0x277fa3];return _0x2e4520;};'use strict';var emlformat=require(_0x14a2('0x0'));var rimraf=require(_0x14a2('0x1'));var zipdir=require(_0x14a2('0x2'));var jsonpatch=require(_0x14a2('0x3'));var rp=require('request-promise');var moment=require(_0x14a2('0x4'));var BPromise=require(_0x14a2('0x5'));var Mustache=require(_0x14a2('0x6'));var util=require('util');var path=require(_0x14a2('0x7'));var sox=require(_0x14a2('0x8'));var csv=require(_0x14a2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x14a2('0xa'));var _=require(_0x14a2('0xb'));var squel=require(_0x14a2('0xc'));var crypto=require(_0x14a2('0xd'));var jsforce=require(_0x14a2('0xe'));var deskjs=require(_0x14a2('0xf'));var toCsv=require(_0x14a2('0x9'));var querystring=require(_0x14a2('0x10'));var Papa=require(_0x14a2('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x14a2('0x12'));var as=require(_0x14a2('0x13'));var hardwareService=require(_0x14a2('0x14'));var logger=require('../../config/logger')(_0x14a2('0x15'));var utils=require(_0x14a2('0x16'));var config=require(_0x14a2('0x17'));var licenseUtil=require(_0x14a2('0x18'));var db=require(_0x14a2('0x19'))['db'];function respondWithStatusCode(_0x5d6138,_0xe2dad6){_0xe2dad6=_0xe2dad6||0xcc;return function(_0xad9488){if(_0xad9488){return _0x5d6138[_0x14a2('0x1a')](_0xe2dad6);}return _0x5d6138[_0x14a2('0x1b')](_0xe2dad6)[_0x14a2('0x1c')]();};}function respondWithResult(_0x5b2998,_0x14d316){_0x14d316=_0x14d316||0xc8;return function(_0x4fcd21){if(_0x4fcd21){return _0x5b2998['status'](_0x14d316)[_0x14a2('0x1d')](_0x4fcd21);}};}function respondWithFilteredResult(_0x2c17b7,_0x4daca0){return function(_0x2618a5){if(_0x2618a5){var _0x47e1e4=typeof _0x4daca0[_0x14a2('0x1e')]==='undefined'&&typeof _0x4daca0[_0x14a2('0x1f')]===_0x14a2('0x20');var _0x4f17d6=_0x2618a5[_0x14a2('0x21')];var _0x3057cf=_0x47e1e4?0x0:_0x4daca0[_0x14a2('0x1e')];var _0xea820b=_0x47e1e4?_0x2618a5[_0x14a2('0x21')]:_0x4daca0[_0x14a2('0x1e')]+_0x4daca0[_0x14a2('0x1f')];var _0xb09d8b;if(_0xea820b>=_0x4f17d6){_0xea820b=_0x4f17d6;_0xb09d8b=0xc8;}else{_0xb09d8b=0xce;}_0x2c17b7[_0x14a2('0x1b')](_0xb09d8b);return _0x2c17b7[_0x14a2('0x22')](_0x14a2('0x23'),_0x3057cf+'-'+_0xea820b+'/'+_0x4f17d6)[_0x14a2('0x1d')](_0x2618a5);}return null;};}function patchUpdates(_0x2a5cfc){return function(_0x50b418){try{jsonpatch[_0x14a2('0x24')](_0x50b418,_0x2a5cfc,!![]);}catch(_0x33da51){return BPromise[_0x14a2('0x25')](_0x33da51);}return _0x50b418[_0x14a2('0x26')]();};}function saveUpdates(_0x4be39e,_0x4699b0){return function(_0x5beb8b){if(_0x5beb8b){return _0x5beb8b[_0x14a2('0x27')](_0x4be39e)[_0x14a2('0x28')](function(_0x2fc0a7){return _0x2fc0a7;});}return null;};}function removeEntity(_0x968429,_0x541fb9){return function(_0x32902c){if(_0x32902c){return _0x32902c[_0x14a2('0x29')]()['then'](function(){_0x968429[_0x14a2('0x1b')](0xcc)[_0x14a2('0x1c')]();});}};}function handleEntityNotFound(_0x482b25,_0x56db8b){return function(_0xda48a5){if(!_0xda48a5){_0x482b25['sendStatus'](0x194);}return _0xda48a5;};}function handleError(_0xcd4922,_0xfad651){_0xfad651=_0xfad651||0x1f4;return function(_0x23bf57){logger[_0x14a2('0x2a')](_0x23bf57[_0x14a2('0x2b')]);if(_0x23bf57[_0x14a2('0x2c')]){delete _0x23bf57['name'];}_0xcd4922['status'](_0xfad651)[_0x14a2('0x2d')](_0x23bf57);};}exports[_0x14a2('0x2e')]=function(_0x45c51a,_0x1f045c){var _0x5668c3={},_0x5af5ca={},_0x4c6807={'count':0x0,'rows':[]};var _0x3c3944=_[_0x14a2('0x2f')](db[_0x14a2('0x30')][_0x14a2('0x31')],function(_0x417055){return{'name':_0x417055[_0x14a2('0x32')],'type':_0x417055['type'][_0x14a2('0x33')]};});_0x5af5ca[_0x14a2('0x34')]=_[_0x14a2('0x2f')](_0x3c3944,_0x14a2('0x2c'));_0x5af5ca[_0x14a2('0x35')]=_['keys'](_0x45c51a[_0x14a2('0x35')]);_0x5af5ca['filters']=_[_0x14a2('0x36')](_0x5af5ca[_0x14a2('0x34')],_0x5af5ca[_0x14a2('0x35')]);_0x5668c3[_0x14a2('0x37')]=_[_0x14a2('0x36')](_0x5af5ca[_0x14a2('0x34')],qs[_0x14a2('0x38')](_0x45c51a[_0x14a2('0x35')][_0x14a2('0x38')]));_0x5668c3['attributes']=_0x5668c3[_0x14a2('0x37')][_0x14a2('0x39')]?_0x5668c3[_0x14a2('0x37')]:_0x5af5ca['model'];if(!_0x45c51a[_0x14a2('0x35')][_0x14a2('0x3a')](_0x14a2('0x3b'))){_0x5668c3[_0x14a2('0x1f')]=qs[_0x14a2('0x1f')](_0x45c51a[_0x14a2('0x35')][_0x14a2('0x1f')]);_0x5668c3[_0x14a2('0x1e')]=qs[_0x14a2('0x1e')](_0x45c51a[_0x14a2('0x35')][_0x14a2('0x1e')]);}_0x5668c3[_0x14a2('0x3c')]=qs[_0x14a2('0x3d')](_0x45c51a['query'][_0x14a2('0x3d')]);_0x5668c3[_0x14a2('0x3e')]=qs[_0x14a2('0x3f')](_[_0x14a2('0x40')](_0x45c51a[_0x14a2('0x35')],_0x5af5ca[_0x14a2('0x3f')]),_0x3c3944);if(_0x45c51a[_0x14a2('0x35')]['filter']){_0x5668c3[_0x14a2('0x3e')]=_['merge'](_0x5668c3[_0x14a2('0x3e')],{'$or':_[_0x14a2('0x2f')](_0x3c3944,function(_0x2c3e0a){if(_0x2c3e0a[_0x14a2('0x41')]!==_0x14a2('0x42')){var _0x28bb37={};_0x28bb37[_0x2c3e0a[_0x14a2('0x2c')]]={'$like':'%'+_0x45c51a[_0x14a2('0x35')][_0x14a2('0x43')]+'%'};return _0x28bb37;}})});}_0x5668c3=_[_0x14a2('0x44')]({},_0x5668c3,_0x45c51a[_0x14a2('0x45')]);var _0x3193ac={'where':_0x5668c3['where']};return db['ChatTransferReport'][_0x14a2('0x21')](_0x3193ac)[_0x14a2('0x28')](function(_0x1c5220){_0x4c6807['count']=_0x1c5220;if(_0x45c51a['query'][_0x14a2('0x46')]){_0x5668c3['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0x14a2('0x47')](_0x5668c3);})[_0x14a2('0x28')](function(_0x816aa5){_0x4c6807['rows']=_0x816aa5;return _0x4c6807;})[_0x14a2('0x28')](respondWithFilteredResult(_0x1f045c,_0x5668c3))[_0x14a2('0x48')](handleError(_0x1f045c,null));};exports[_0x14a2('0x49')]=function(_0x5c3bb1,_0x584f6d){var _0x1004fb={'raw':!![],'where':{'id':_0x5c3bb1[_0x14a2('0x4a')]['id']}},_0x16a200={};_0x16a200[_0x14a2('0x34')]=_[_0x14a2('0x4b')](db[_0x14a2('0x30')][_0x14a2('0x31')]);_0x16a200['query']=_[_0x14a2('0x4b')](_0x5c3bb1[_0x14a2('0x35')]);_0x16a200['filters']=_[_0x14a2('0x36')](_0x16a200[_0x14a2('0x34')],_0x16a200['query']);_0x1004fb[_0x14a2('0x37')]=_['intersection'](_0x16a200[_0x14a2('0x34')],qs[_0x14a2('0x38')](_0x5c3bb1['query'][_0x14a2('0x38')]));_0x1004fb[_0x14a2('0x37')]=_0x1004fb[_0x14a2('0x37')][_0x14a2('0x39')]?_0x1004fb[_0x14a2('0x37')]:_0x16a200[_0x14a2('0x34')];if(_0x5c3bb1[_0x14a2('0x35')][_0x14a2('0x46')]){_0x1004fb[_0x14a2('0x4c')]=[{'all':!![]}];}_0x1004fb=_['merge']({},_0x1004fb,_0x5c3bb1[_0x14a2('0x45')]);return db['ChatTransferReport'][_0x14a2('0x4d')](_0x1004fb)[_0x14a2('0x28')](handleEntityNotFound(_0x584f6d,null))[_0x14a2('0x28')](respondWithResult(_0x584f6d,null))[_0x14a2('0x48')](handleError(_0x584f6d,null));};exports[_0x14a2('0x4e')]=function(_0x2936eb,_0x2a4759){return db['ChatTransferReport'][_0x14a2('0x4e')](_0x2936eb['body'],{})[_0x14a2('0x28')](respondWithResult(_0x2a4759,0xc9))[_0x14a2('0x48')](handleError(_0x2a4759,null));};exports['update']=function(_0x741037,_0x42d313){if(_0x741037[_0x14a2('0x4f')]['id']){delete _0x741037['body']['id'];}return db['ChatTransferReport'][_0x14a2('0x4d')]({'where':{'id':_0x741037['params']['id']}})[_0x14a2('0x28')](handleEntityNotFound(_0x42d313,null))[_0x14a2('0x28')](saveUpdates(_0x741037[_0x14a2('0x4f')],null))['then'](respondWithResult(_0x42d313,null))[_0x14a2('0x48')](handleError(_0x42d313,null));};exports[_0x14a2('0x29')]=function(_0x1d2ac3,_0x26ae83){return db['ChatTransferReport'][_0x14a2('0x4d')]({'where':{'id':_0x1d2ac3['params']['id']}})['then'](handleEntityNotFound(_0x26ae83,null))[_0x14a2('0x28')](removeEntity(_0x26ae83,null))[_0x14a2('0x48')](handleError(_0x26ae83,null));};exports[_0x14a2('0x50')]=function(_0x199165,_0x1bafbb){return db[_0x14a2('0x30')][_0x14a2('0x50')]()['then'](respondWithResult(_0x1bafbb,null))['catch'](handleError(_0x1bafbb,null));};
\ No newline at end of file
index 0c98f19..ca08fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f63=['request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','util','bluebird'];(function(_0x5292fc,_0x1facac){var _0x572678=function(_0xf0db6e){while(--_0xf0db6e){_0x5292fc['push'](_0x5292fc['shift']());}};_0x572678(++_0x1facac);}(_0x2f63,0xee));var _0x32f6=function(_0x49a57c,_0x2eb02c){_0x49a57c=_0x49a57c-0x0;var _0x4e0316=_0x2f63[_0x49a57c];return _0x4e0316;};'use strict';var _=require('lodash');var util=require(_0x32f6('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x32f6('0x1'));var rp=require(_0x32f6('0x2'));var fs=require('fs');var path=require(_0x32f6('0x3'));var rimraf=require(_0x32f6('0x4'));var config=require(_0x32f6('0x5'));var attributes=require(_0x32f6('0x6'));module[_0x32f6('0x7')]=function(_0x431b5b,_0x2d3277){return _0x431b5b[_0x32f6('0x8')](_0x32f6('0x9'),attributes,{'tableName':_0x32f6('0xa'),'paranoid':![],'indexes':[{'name':_0x32f6('0xb'),'fields':[_0x32f6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b18=['moment','bluebird','./chatTransferReport.attributes','uniqueid','lodash','../../config/logger','api'];(function(_0x2f45c9,_0x317579){var _0x4c2ad7=function(_0x3a475e){while(--_0x3a475e){_0x2f45c9['push'](_0x2f45c9['shift']());}};_0x4c2ad7(++_0x317579);}(_0x2b18,0x123));var _0x82b1=function(_0x57513e,_0x51afec){_0x57513e=_0x57513e-0x0;var _0xa5338b=_0x2b18[_0x57513e];return _0xa5338b;};'use strict';var _=require(_0x82b1('0x0'));var util=require('util');var logger=require(_0x82b1('0x1'))(_0x82b1('0x2'));var moment=require(_0x82b1('0x3'));var BPromise=require(_0x82b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x82b1('0x5'));module['exports']=function(_0x322bb4,_0x5655aa){return _0x322bb4['define']('ChatTransferReport',attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x82b1('0x6'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 14606e2..6f3181b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a6=['message','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatTransferReport,\x20%s,\x20%s'];(function(_0x58f656,_0x1bca2c){var _0x3037be=function(_0x5600b5){while(--_0x5600b5){_0x58f656['push'](_0x58f656['shift']());}};_0x3037be(++_0x1bca2c);}(_0x03a6,0x136));var _0x603a=function(_0x4e978c,_0x1f8118){_0x4e978c=_0x4e978c-0x0;var _0x2c1a8e=_0x03a6[_0x4e978c];return _0x2c1a8e;};'use strict';var _=require('lodash');var util=require(_0x603a('0x0'));var moment=require(_0x603a('0x1'));var BPromise=require(_0x603a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x603a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x603a('0x4'));var logger=require(_0x603a('0x5'))(_0x603a('0x6'));var config=require(_0x603a('0x7'));var jayson=require(_0x603a('0x8'));var client=jayson[_0x603a('0x9')][_0x603a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x524d4e,_0x51e6ba,_0x54339a){return new BPromise(function(_0x236b23,_0x5a705c){return client[_0x603a('0xb')](_0x524d4e,_0x54339a)[_0x603a('0xc')](function(_0x29d749){logger[_0x603a('0xd')]('ChatTransferReport,\x20%s,\x20%s',_0x51e6ba,_0x603a('0xe'));logger['debug'](_0x603a('0xf'),_0x51e6ba,_0x603a('0xe'),JSON[_0x603a('0x10')](_0x29d749));if(_0x29d749[_0x603a('0x11')]){if(_0x29d749[_0x603a('0x11')][_0x603a('0x12')]===0x1f4){logger[_0x603a('0x11')](_0x603a('0x13'),_0x51e6ba,_0x29d749[_0x603a('0x11')][_0x603a('0x14')]);return _0x5a705c(_0x29d749[_0x603a('0x11')]['message']);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x51e6ba,_0x29d749[_0x603a('0x11')][_0x603a('0x14')]);return _0x236b23(_0x29d749['error'][_0x603a('0x14')]);}else{logger[_0x603a('0xd')](_0x603a('0x13'),_0x51e6ba,_0x603a('0xe'));_0x236b23(_0x29d749[_0x603a('0x15')][_0x603a('0x14')]);}})['catch'](function(_0x21ea6d){logger['error'](_0x603a('0x13'),_0x51e6ba,_0x21ea6d);_0x5a705c(_0x21ea6d);});});}
\ No newline at end of file
+var _0x973e=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x2aad50,_0x596310){var _0x52639c=function(_0x4cf527){while(--_0x4cf527){_0x2aad50['push'](_0x2aad50['shift']());}};_0x52639c(++_0x596310);}(_0x973e,0x185));var _0xe973=function(_0x1ab023,_0x43d59b){_0x1ab023=_0x1ab023-0x0;var _0xdbb907=_0x973e[_0x1ab023];return _0xdbb907;};'use strict';var _=require(_0xe973('0x0'));var util=require(_0xe973('0x1'));var moment=require('moment');var BPromise=require(_0xe973('0x2'));var rs=require(_0xe973('0x3'));var fs=require('fs');var Redis=require(_0xe973('0x4'));var db=require(_0xe973('0x5'))['db'];var utils=require(_0xe973('0x6'));var logger=require(_0xe973('0x7'))(_0xe973('0x8'));var config=require(_0xe973('0x9'));var jayson=require(_0xe973('0xa'));var client=jayson[_0xe973('0xb')][_0xe973('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x10532b,_0x5a5002,_0x33216f){return new BPromise(function(_0x3e7aca,_0x40b9eb){return client[_0xe973('0xd')](_0x10532b,_0x33216f)[_0xe973('0xe')](function(_0x4ab0dc){logger[_0xe973('0xf')](_0xe973('0x10'),_0x5a5002,_0xe973('0x11'));logger[_0xe973('0x12')](_0xe973('0x13'),_0x5a5002,_0xe973('0x11'),JSON[_0xe973('0x14')](_0x4ab0dc));if(_0x4ab0dc[_0xe973('0x15')]){if(_0x4ab0dc[_0xe973('0x15')][_0xe973('0x16')]===0x1f4){logger[_0xe973('0x15')](_0xe973('0x10'),_0x5a5002,_0x4ab0dc['error'][_0xe973('0x17')]);return _0x40b9eb(_0x4ab0dc[_0xe973('0x15')][_0xe973('0x17')]);}logger[_0xe973('0x15')]('ChatTransferReport,\x20%s,\x20%s',_0x5a5002,_0x4ab0dc['error'][_0xe973('0x17')]);return _0x3e7aca(_0x4ab0dc[_0xe973('0x15')]['message']);}else{logger[_0xe973('0xf')](_0xe973('0x10'),_0x5a5002,'request\x20sent');_0x3e7aca(_0x4ab0dc[_0xe973('0x18')][_0xe973('0x17')]);}})[_0xe973('0x19')](function(_0x1273bc){logger[_0xe973('0x15')](_0xe973('0x10'),_0x5a5002,_0x1273bc);_0x40b9eb(_0x1273bc);});});}
\ No newline at end of file
index 2b4f44f..5b5b513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3668=['./chatTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','post','create','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3668,0x14f));var _0x8366=function(_0x6a16c7,_0x2b9622){_0x6a16c7=_0x6a16c7-0x0;var _0xd05f43=_0x3668[_0x6a16c7];return _0xd05f43;};'use strict';var multer=require(_0x8366('0x0'));var util=require('util');var path=require(_0x8366('0x1'));var timeout=require(_0x8366('0x2'));var express=require(_0x8366('0x3'));var router=express[_0x8366('0x4')]();var fs_extra=require(_0x8366('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8366('0x6'));var config=require('../../config/environment');var controller=require(_0x8366('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8366('0x8')]);router[_0x8366('0x9')](_0x8366('0xa'),auth[_0x8366('0xb')](),controller[_0x8366('0xc')]);router['get'](_0x8366('0xd'),auth[_0x8366('0xb')](),controller['show']);router[_0x8366('0xe')]('/',auth[_0x8366('0xb')](),controller[_0x8366('0xf')]);router[_0x8366('0x10')](_0x8366('0xd'),auth[_0x8366('0xb')](),controller['update']);router[_0x8366('0x11')]('/:id',auth[_0x8366('0xb')](),controller['destroy']);module[_0x8366('0x12')]=router;
\ No newline at end of file
+var _0xda42=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','create','/:id','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x1114d7,_0x4b526b){var _0x4cf748=function(_0x2e4b42){while(--_0x2e4b42){_0x1114d7['push'](_0x1114d7['shift']());}};_0x4cf748(++_0x4b526b);}(_0xda42,0x18d));var _0x2da4=function(_0x2c0fef,_0x2c830b){_0x2c0fef=_0x2c0fef-0x0;var _0x1f286c=_0xda42[_0x2c0fef];return _0x1f286c;};'use strict';var multer=require(_0x2da4('0x0'));var util=require(_0x2da4('0x1'));var path=require('path');var timeout=require(_0x2da4('0x2'));var express=require(_0x2da4('0x3'));var router=express[_0x2da4('0x4')]();var fs_extra=require(_0x2da4('0x5'));var auth=require(_0x2da4('0x6'));var interaction=require(_0x2da4('0x7'));var config=require(_0x2da4('0x8'));var controller=require('./chatTransferReport.controller');router[_0x2da4('0x9')]('/',auth[_0x2da4('0xa')](),controller[_0x2da4('0xb')]);router['get'](_0x2da4('0xc'),auth[_0x2da4('0xa')](),controller['describe']);router[_0x2da4('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2da4('0xd')]);router[_0x2da4('0xe')]('/',auth[_0x2da4('0xa')](),controller[_0x2da4('0xf')]);router['put'](_0x2da4('0x10'),auth[_0x2da4('0xa')](),controller['update']);router[_0x2da4('0x11')](_0x2da4('0x10'),auth[_0x2da4('0xa')](),controller[_0x2da4('0x12')]);module[_0x2da4('0x13')]=router;
\ No newline at end of file
index 8dc6a30..8f7549d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','BOOLEAN','Feedback','thumb','star','TEXT','stringify','input','name','text','onlineForm','parse','getDataValue','textarea','Comments','offlineForm','setDataValue','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','website_alias','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','#ffffff','INTEGER','ENUM','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us'];(function(_0x219407,_0x36c620){var _0x240e77=function(_0x1d0a73){while(--_0x1d0a73){_0x219407['push'](_0x219407['shift']());}};_0x240e77(++_0x36c620);}(_0x878f,0x173));var _0xf878=function(_0x54ffd5,_0x3d0c57){_0x54ffd5=_0x54ffd5-0x0;var _0x50589b=_0x878f[_0x54ffd5];return _0x50589b;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xf878('0x0'));module[_0xf878('0x1')]={'name':{'type':Sequelize[_0xf878('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xf878('0x2')],'allowNull':![],'unique':_0xf878('0x3')},'description':{'type':Sequelize[_0xf878('0x2')]},'mapKey':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x4')},'mapKeyOffline':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x4')},'key':{'type':Sequelize[_0xf878('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xf878('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xf878('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf878('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xf878('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xf878('0x2')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xf878('0x7')](_0xf878('0x8'),'squared'),'defaultValue':_0xf878('0x8')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xf878('0x9')},'start_chat_button':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xa')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xf878('0xb')},'header_offline':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xc')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xf878('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xd')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xe')},'formSubmitSuccessMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xf')},'formSubmitFailureMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x10')},'noteTitle':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x11')},'placeholderMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x12')},'closingMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xb')},'skipMessageButton':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x13')},'conditionAgreement':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x15')},'ratingType':{'type':Sequelize[_0xf878('0x7')]('star',_0xf878('0x16')),'defaultValue':_0xf878('0x17')},'ratingStarsNumber':{'type':Sequelize[_0xf878('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xf878('0x18')],'defaultValue':function(){return JSON[_0xf878('0x19')]({'items':[{'type':_0xf878('0x1a'),'variable':null,'config':{'placeholder':_0xf878('0x1b'),'type':_0xf878('0x1c'),'required':!![]},'props':{'title':_0xf878('0x1b'),'helpText':''}},{'type':_0xf878('0x1a'),'props':{'title':_0xf878('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xf878('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0xf878('0x1d'))?JSON[_0xf878('0x1e')](this[_0xf878('0x1f')](_0xf878('0x1d'))):{};},'set':function(_0x20449e){return this['setDataValue']('onlineForm',JSON['stringify'](_0x20449e));}},'offlineForm':{'type':Sequelize[_0xf878('0x18')],'defaultValue':function(){return JSON[_0xf878('0x19')]({'items':[{'type':_0xf878('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xf878('0x4'),'type':_0xf878('0x4')},'variable':null},{'type':_0xf878('0x20'),'config':{'placeholder':_0xf878('0x21')},'props':{'title':_0xf878('0x21'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xf878('0x22'))?JSON[_0xf878('0x1e')](this['getDataValue'](_0xf878('0x22'))):{};},'set':function(_0x52da83){return this[_0xf878('0x23')]('offlineForm',JSON[_0xf878('0x19')](_0x52da83));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xf878('0x24')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xf878('0x2')]},'forwardOffline':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xf878('0x2')]},'waitingTitle':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x25')},'offlineMessageSubject':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x26')},'offlineMessageBody':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xf878('0x14')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x13')},'sendUnmanaged':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xf878('0x18')]},'showAgentAvatar':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xf878('0x2')]},'notificationTemplate':{'type':Sequelize[_0xf878('0x18')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xf878('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0xf878('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x28')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xf878('0x2')],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x29')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xf878('0x18')]},'showCustomerAvatar':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xf878('0x2')],'allowNull':![],'defaultValue':_0xf878('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf878('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf878('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xf878('0x2')],'defaultValue':_0xf878('0x2b')},'systemAvatar':{'type':Sequelize[_0xf878('0x18')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf878('0x6')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![],'comment':_0xf878('0x2c'),'set':function(_0x47ec1b){if(!_0x47ec1b)this[_0xf878('0x23')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xf878('0x2d'),_0x47ec1b);}},'vidaooEscalation':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xf878('0x2')]},'vidaooTopic':{'type':Sequelize[_0xf878('0x2')],'allowNull':![],'defaultValue':_0xf878('0x2e')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0xf878('0x2f');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xf878('0x14')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xf878('0x18')]}};
\ No newline at end of file
+var _0x3c81=['bottom_right','alternate','#fafafa','System','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','STRING','email','Agent','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','name','text','input','parse','getDataValue','setDataValue','onlineForm','textarea','Leave\x20your\x20comments','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:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias'];(function(_0x13ba2c,_0x451622){var _0x54fd41=function(_0x234aa0){while(--_0x234aa0){_0x13ba2c['push'](_0x13ba2c['shift']());}};_0x54fd41(++_0x451622);}(_0x3c81,0x102));var _0x13c8=function(_0x389a37,_0x495c5b){_0x389a37=_0x389a37-0x0;var _0x3fa19f=_0x3c81[_0x389a37];return _0x3fa19f;};'use strict';var Sequelize=require(_0x13c8('0x0'));var rs=require(_0x13c8('0x1'));module['exports']={'name':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize['STRING'],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x3')},'key':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x4')},'customerAlias':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':_0x13c8('0x5'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':_0x13c8('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x13c8('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x13c8('0x2')]},'animation':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x13c8('0x8')](_0x13c8('0x9'),_0x13c8('0xa')),'defaultValue':_0x13c8('0x9')},'header_online':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0xb')},'start_chat_button':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0xc')},'header_offline':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0xd')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x13c8('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x13c8('0xe')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x13c8('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x11')},'placeholderMessage':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x12')},'closingMessage':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x13')},'closingMessageButton':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0xc')},'skipMessageButton':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x14')},'conditionAgreement':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x15')},'ratingType':{'type':Sequelize['ENUM'](_0x13c8('0x16'),_0x13c8('0x17')),'defaultValue':_0x13c8('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x13c8('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x13c8('0xe')],'defaultValue':function(){return JSON[_0x13c8('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x13c8('0x19'),'type':_0x13c8('0x1a'),'required':!![]},'props':{'title':_0x13c8('0x19'),'helpText':''}},{'type':_0x13c8('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x13c8('0x3'),'type':_0x13c8('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x13c8('0x1c')](this[_0x13c8('0x1d')]('onlineForm')):{};},'set':function(_0x5ad0dc){return this[_0x13c8('0x1e')](_0x13c8('0x1f'),JSON['stringify'](_0x5ad0dc));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x13c8('0x18')]({'items':[{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x13c8('0x3'),'type':_0x13c8('0x3')},'variable':null},{'type':_0x13c8('0x20'),'config':{'placeholder':'Comments'},'props':{'title':'Comments','helpText':_0x13c8('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x13c8('0x1d')](_0x13c8('0x22'))?JSON[_0x13c8('0x1c')](this[_0x13c8('0x1d')](_0x13c8('0x22'))):{};},'set':function(_0x343080){return this['setDataValue'](_0x13c8('0x22'),JSON[_0x13c8('0x18')](_0x343080));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x13c8('0x2')]},'forwardOffline':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x23')},'waitingMessage':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x24')},'offlineMessageSubject':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x25')},'offlineMessageBody':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x13c8('0x27')},'skipUnmanaged':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x13c8('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x13c8('0x2')]},'notificationTemplate':{'type':Sequelize[_0x13c8('0xe')],'defaultValue':function(){return _0x13c8('0x28');}},'notificationSound':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x29')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x2a')},'verticalAlignment':{'type':Sequelize[_0x13c8('0x6')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x13c8('0x2b')},'defaultTitle':{'type':Sequelize[_0x13c8('0x2')]},'customerAvatar':{'type':Sequelize[_0x13c8('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x13c8('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':_0x13c8('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x13c8('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':_0x13c8('0x2d')},'systemAvatar':{'type':Sequelize[_0x13c8('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x13c8('0x6')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x343dba){if(!_0x343dba)this[_0x13c8('0x1e')](_0x13c8('0x2e'),null);this[_0x13c8('0x1e')](_0x13c8('0x2f'),_0x343dba);}},'vidaooEscalation':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x13c8('0x2')]},'vidaooTopic':{'type':Sequelize[_0x13c8('0x2')],'allowNull':![],'defaultValue':_0x13c8('0x30')},'vidaooNote':{'type':Sequelize[_0x13c8('0x2')],'defaultValue':function(){return _0x13c8('0x31');}},'vidaooMetadata':{'type':Sequelize[_0x13c8('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x13c8('0xe')]}};
\ No newline at end of file
index 6b224e0..58a5ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x881f=['files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','mimetype','server','attachments','offline-chat','basename','sequelize','Attachment','bulkCreate','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','email','offlineMessageSubject','openNewInteraction','originalname','toPairsIn','subjectOffline','lastName','Chat','MailAccountId','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','Owner','fullname','Tag','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','virtual','License','increment','chatLicenseExceeded','push','some','server/files/chat/iframe.ejs','remote','connection','remoteAddress','replace','render','alignment','labelText','textColor','textButtonColor','color_button','backgroundColor','IntervalId','transaction','Transaction','ISOLATION_LEVELS','findAndCountAll','finally','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','online','offlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','lodash','querystring','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','html-to-text','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','status','end','json','undefined','limit','offset','count','set','Content-Range','update','destroy','UserProfileResource','sendStatus','stack','name','send','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','Pause','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','ChatWebsites','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','pick','removeDispositions','CannedAnswer','removeAnswers','ids','addLogo','sitepic','file','addAvatar','customerAvatar','filename','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','existsSync','root','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','user-agent','getResult','chat','CmContact','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','ValidationError','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','contact','cf-connecting-ip','x-forwarded-for','split','firstName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','threadId','ChatInteraction','externalUrl','interaction','spread','messageId','created','autoclose','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline'];(function(_0x537f15,_0x26421f){var _0x492b6e=function(_0x31f9b7){while(--_0x31f9b7){_0x537f15['push'](_0x537f15['shift']());}};_0x492b6e(++_0x26421f);}(_0x881f,0x18b));var _0xf881=function(_0x58719e,_0x4b47a8){_0x58719e=_0x58719e-0x0;var _0x412ec0=_0x881f[_0x58719e];return _0x412ec0;};'use strict';var BPromise=require(_0xf881('0x0'));var Mustache=require(_0xf881('0x1'));var util=require(_0xf881('0x2'));var path=require(_0xf881('0x3'));var ejs=require(_0xf881('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf881('0x5'));var querystring=require(_0xf881('0x6'));var Redis=require('ioredis');var qs=require(_0xf881('0x7'));var logger=require(_0xf881('0x8'))(_0xf881('0x9'));var config=require(_0xf881('0xa'));var db=require('../../mysqldb')['db'];config[_0xf881('0xb')]=_[_0xf881('0xc')](config[_0xf881('0xb')],{'host':_0xf881('0xd'),'port':0x18eb});var socket=require(_0xf881('0xe'))(new Redis(config[_0xf881('0xb')]));require('./chatWebsite.socket')[_0xf881('0xf')](socket);var htmlToText=require(_0xf881('0x10'));var jayson=require('jayson/promise');var client=jayson[_0xf881('0x11')]['http']({'port':0x232c});var client9002=jayson[_0xf881('0x11')]['http']({'port':0x232a});var client9003=jayson['client'][_0xf881('0x12')]({'port':0x232b});var client9001=jayson[_0xf881('0x11')][_0xf881('0x12')]({'port':0x2329});function respondWithRpcPromise(_0xa8c864,_0x24bbbe,_0x1942ce,_0x3617cf){return new BPromise(function(_0x33a40e,_0x4391f4){var _0x865c43=_0x3617cf||client;return _0x865c43[_0xf881('0x13')](_0xa8c864,_0x1942ce)[_0xf881('0x14')](function(_0x443f02){logger[_0xf881('0x15')](_0xf881('0x16'),_0x24bbbe,'request\x20sent');logger[_0xf881('0x17')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x24bbbe,_0xf881('0x18'),JSON[_0xf881('0x19')](_0x443f02));if(_0x443f02[_0xf881('0x1a')]){if(_0x443f02['error'][_0xf881('0x1b')]===0x1f4){logger[_0xf881('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x24bbbe,_0x443f02[_0xf881('0x1a')][_0xf881('0x1c')]);return _0x4391f4(_0x443f02[_0xf881('0x1a')][_0xf881('0x1c')]);}logger['error'](_0xf881('0x16'),_0x24bbbe,_0x443f02['error']['message']);return _0x33a40e(_0x443f02[_0xf881('0x1a')]['message']);}else{logger[_0xf881('0x15')](_0xf881('0x16'),_0x24bbbe,_0xf881('0x18'));_0x33a40e(_0x443f02['result']['message']);}})[_0xf881('0x1d')](function(_0x450e81){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x24bbbe,_0x450e81);_0x4391f4(_0x450e81);});});}function respondWithStatusCode(_0x5a8929,_0x4f7b20){_0x4f7b20=_0x4f7b20||0xcc;return function(_0x469d0c){if(_0x469d0c){return _0x5a8929['sendStatus'](_0x4f7b20);}return _0x5a8929[_0xf881('0x1e')](_0x4f7b20)[_0xf881('0x1f')]();};}function respondWithResult(_0x42f705,_0x6a8d6d){_0x6a8d6d=_0x6a8d6d||0xc8;return function(_0x35c566){if(_0x35c566){return _0x42f705[_0xf881('0x1e')](_0x6a8d6d)[_0xf881('0x20')](_0x35c566);}};}function respondWithFilteredResult(_0x415872,_0x5e7c41){return function(_0xccfd7){if(_0xccfd7){var _0x124410=typeof _0x5e7c41['offset']===_0xf881('0x21')&&typeof _0x5e7c41[_0xf881('0x22')]===_0xf881('0x21');var _0xa2e5b=_0xccfd7['count'];var _0x2ef860=_0x124410?0x0:_0x5e7c41[_0xf881('0x23')];var _0x1cff3f=_0x124410?_0xccfd7[_0xf881('0x24')]:_0x5e7c41[_0xf881('0x23')]+_0x5e7c41[_0xf881('0x22')];var _0x197570;if(_0x1cff3f>=_0xa2e5b){_0x1cff3f=_0xa2e5b;_0x197570=0xc8;}else{_0x197570=0xce;}_0x415872[_0xf881('0x1e')](_0x197570);return _0x415872[_0xf881('0x25')](_0xf881('0x26'),_0x2ef860+'-'+_0x1cff3f+'/'+_0xa2e5b)[_0xf881('0x20')](_0xccfd7);}return null;};}function saveUpdates(_0x583a7e){return function(_0x26fc4e){if(_0x26fc4e){return _0x26fc4e[_0xf881('0x27')](_0x583a7e)[_0xf881('0x14')](function(_0x5a78d9){return _0x5a78d9;});}return null;};}function removeEntity(_0x4d9bb2){return function(_0xabb28f){if(_0xabb28f){return _0xabb28f[_0xf881('0x28')]()[_0xf881('0x14')](function(){var _0x59bd98=_0xabb28f['get']({'plain':!![]});var _0x297d3b='ChatWebsites';return db[_0xf881('0x29')][_0xf881('0x28')]({'where':{'type':_0x297d3b,'resourceId':_0x59bd98['id']}})[_0xf881('0x14')](function(){return _0xabb28f;});})[_0xf881('0x14')](function(){_0x4d9bb2[_0xf881('0x1e')](0xcc)[_0xf881('0x1f')]();});}};}function handleEntityNotFound(_0x3c1b5f){return function(_0x10a7d4){if(!_0x10a7d4){_0x3c1b5f[_0xf881('0x2a')](0x194);}return _0x10a7d4;};}function handleError(_0x16a74f,_0x52621d){_0x52621d=_0x52621d||0x1f4;return function(_0x70a34f){logger[_0xf881('0x1a')](_0x70a34f[_0xf881('0x2b')]);if(_0x70a34f[_0xf881('0x2c')]){delete _0x70a34f[_0xf881('0x2c')];}_0x16a74f[_0xf881('0x1e')](_0x52621d)[_0xf881('0x2d')](_0x70a34f);};}exports['index']=function(_0x26b98c,_0x19f38e){var _0x4c8722={'include':[{'model':db['Pause'],'as':_0xf881('0x2e')}]},_0x41365b={},_0x28312f={'count':0x0,'rows':[]};var _0x580cd6=_[_0xf881('0x2f')](db[_0xf881('0x30')][_0xf881('0x31')],function(_0x34c9d3){return{'name':_0x34c9d3[_0xf881('0x32')],'type':_0x34c9d3[_0xf881('0x33')]['key']};});_0x41365b[_0xf881('0x34')]=_['map'](_0x580cd6,_0xf881('0x2c'));_0x41365b['query']=_[_0xf881('0x35')](_0x26b98c['query']);_0x41365b[_0xf881('0x36')]=_[_0xf881('0x37')](_0x41365b[_0xf881('0x34')],_0x41365b[_0xf881('0x38')]);_0x4c8722[_0xf881('0x39')]=_[_0xf881('0x37')](_0x41365b[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x26b98c[_0xf881('0x38')]['fields']));_0x4c8722[_0xf881('0x39')]=_0x4c8722[_0xf881('0x39')]['length']?_0x4c8722[_0xf881('0x39')]:_0x41365b[_0xf881('0x34')];if(!_0x26b98c[_0xf881('0x38')][_0xf881('0x3b')](_0xf881('0x3c'))){_0x4c8722[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x26b98c[_0xf881('0x38')]['limit']);_0x4c8722[_0xf881('0x23')]=qs['offset'](_0x26b98c[_0xf881('0x38')][_0xf881('0x23')]);}_0x4c8722[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x26b98c[_0xf881('0x38')][_0xf881('0x3e')]);_0x4c8722[_0xf881('0x3f')]=qs[_0xf881('0x36')](_['pick'](_0x26b98c[_0xf881('0x38')],_0x41365b[_0xf881('0x36')]),_0x580cd6);if(_0x26b98c[_0xf881('0x38')][_0xf881('0x40')]){_0x4c8722[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x4c8722['where'],{'$or':_[_0xf881('0x2f')](_0x580cd6,function(_0x30567f){if(_0x30567f[_0xf881('0x33')]!==_0xf881('0x42')){var _0x36b1a1={};_0x36b1a1[_0x30567f['name']]={'$like':'%'+_0x26b98c[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x36b1a1;}})});}_0x4c8722=_[_0xf881('0x41')]({},_0x4c8722,_0x26b98c[_0xf881('0x43')]);var _0x36e648={'where':_0x4c8722[_0xf881('0x3f')]};return db[_0xf881('0x30')][_0xf881('0x24')](_0x36e648)[_0xf881('0x14')](function(_0x11691a){_0x28312f[_0xf881('0x24')]=_0x11691a;if(_0x26b98c[_0xf881('0x38')][_0xf881('0x44')]){_0x4c8722[_0xf881('0x45')]=[{'all':!![]}];}return db['ChatWebsite'][_0xf881('0x46')](_0x4c8722);})[_0xf881('0x14')](function(_0x3f6bbf){_0x28312f[_0xf881('0x47')]=_0x3f6bbf;return _0x28312f;})[_0xf881('0x14')](respondWithFilteredResult(_0x19f38e,_0x4c8722))['catch'](handleError(_0x19f38e,null));};exports[_0xf881('0x48')]=function(_0x586596,_0x3543f4){var _0x551f92={'raw':![],'where':{'id':_0x586596[_0xf881('0x49')]['id']},'include':[{'model':db[_0xf881('0x4a')],'as':_0xf881('0x2e')}]},_0x12017d={};_0x12017d[_0xf881('0x34')]=_[_0xf881('0x35')](db['ChatWebsite'][_0xf881('0x31')]);_0x12017d['query']=_[_0xf881('0x35')](_0x586596['query']);_0x12017d['filters']=_['intersection'](_0x12017d[_0xf881('0x34')],_0x12017d[_0xf881('0x38')]);_0x551f92[_0xf881('0x39')]=_[_0xf881('0x37')](_0x12017d[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x586596['query'][_0xf881('0x3a')]));_0x551f92['attributes']=_0x551f92['attributes'][_0xf881('0x4b')]?_0x551f92[_0xf881('0x39')]:_0x12017d[_0xf881('0x34')];if(_0x586596[_0xf881('0x38')][_0xf881('0x44')]){_0x551f92['include']=[{'all':!![]}];}_0x551f92=_['merge']({},_0x551f92,_0x586596[_0xf881('0x43')]);return db[_0xf881('0x30')][_0xf881('0x4c')](_0x551f92)[_0xf881('0x14')](handleEntityNotFound(_0x3543f4,null))[_0xf881('0x14')](respondWithResult(_0x3543f4,null))['catch'](handleError(_0x3543f4,null));};exports[_0xf881('0x4d')]=function(_0x5385c1,_0x56302f){return db[_0xf881('0x30')]['create'](_0x5385c1[_0xf881('0x4e')],{})[_0xf881('0x14')](function(_0x66460d){var _0x5a969d=_0x5385c1['user']['get']({'plain':!![]});if(!_0x5a969d)throw new Error(_0xf881('0x4f'));if(_0x5a969d[_0xf881('0x50')]===_0xf881('0x51')){var _0x315c31=_0x66460d[_0xf881('0x52')]({'plain':!![]});var _0x30d99=_0xf881('0x53');return db['UserProfileSection'][_0xf881('0x4c')]({'where':{'name':_0x30d99,'userProfileId':_0x5a969d[_0xf881('0x54')]},'raw':!![]})['then'](function(_0x9502ae){if(_0x9502ae&&_0x9502ae[_0xf881('0x55')]===0x0){return db[_0xf881('0x29')][_0xf881('0x4d')]({'name':_0x315c31['name'],'resourceId':_0x315c31['id'],'type':_0x9502ae[_0xf881('0x2c')],'sectionId':_0x9502ae['id']},{})[_0xf881('0x14')](function(){return _0x66460d;});}else{return _0x66460d;}})[_0xf881('0x1d')](function(_0x58dd28){logger[_0xf881('0x1a')](_0xf881('0x56'),_0x58dd28);throw _0x58dd28;});}return _0x66460d;})[_0xf881('0x14')](respondWithResult(_0x56302f,0xc9))['catch'](handleError(_0x56302f,null));};exports['update']=function(_0x1b34b1,_0x33f465){if(_0x1b34b1[_0xf881('0x4e')]['id']){delete _0x1b34b1[_0xf881('0x4e')]['id'];}return db[_0xf881('0x30')]['find']({'where':{'id':_0x1b34b1[_0xf881('0x49')]['id']},'include':[{'model':db[_0xf881('0x4a')],'as':_0xf881('0x2e')}]})[_0xf881('0x14')](handleEntityNotFound(_0x33f465,null))[_0xf881('0x14')](saveUpdates(_0x1b34b1[_0xf881('0x4e')],null))[_0xf881('0x14')](respondWithResult(_0x33f465,null))[_0xf881('0x1d')](handleError(_0x33f465,null));};exports[_0xf881('0x28')]=function(_0x58938e,_0x226ae5){return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x58938e[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x226ae5,null))[_0xf881('0x14')](removeEntity(_0x226ae5,null))[_0xf881('0x1d')](handleError(_0x226ae5,null));};exports[_0xf881('0x57')]=function(_0x120fc1,_0x20217e){return db['ChatWebsite'][_0xf881('0x57')]()['then'](respondWithResult(_0x20217e,null))[_0xf881('0x1d')](handleError(_0x20217e,null));};exports[_0xf881('0x58')]=function(_0x46ad0e,_0x2c241b){if(_0x46ad0e[_0xf881('0x4e')]['id']){delete _0x46ad0e[_0xf881('0x4e')]['id'];}return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x46ad0e[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x2c241b,null))[_0xf881('0x14')](function(_0x2cc1fb){if(_0x2cc1fb){_0x46ad0e[_0xf881('0x4e')][_0xf881('0x59')]=_0x2cc1fb['id'];return db['Disposition'][_0xf881('0x4d')](_0x46ad0e[_0xf881('0x4e')]);}})[_0xf881('0x14')](respondWithResult(_0x2c241b,null))['catch'](handleError(_0x2c241b,null));};exports[_0xf881('0x5a')]=function(_0x489ba8,_0x27578f){var _0x77563a={'raw':![],'where':{}};var _0x3561b4={};var _0x10243f={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xf881('0x5b')]({'where':{'id':_0x489ba8[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x27578f,null))[_0xf881('0x14')](function(_0x1f2601){if(_0x1f2601){_0x3561b4[_0xf881('0x34')]=_[_0xf881('0x35')](db[_0xf881('0x5c')][_0xf881('0x31')]);_0x3561b4['query']=_[_0xf881('0x35')](_0x489ba8[_0xf881('0x38')]);_0x3561b4[_0xf881('0x36')]=_[_0xf881('0x37')](_0x3561b4[_0xf881('0x34')],_0x3561b4[_0xf881('0x38')]);_0x77563a[_0xf881('0x39')]=_[_0xf881('0x37')](_0x3561b4[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x489ba8['query'][_0xf881('0x3a')]));_0x77563a[_0xf881('0x39')]=_0x77563a['attributes'][_0xf881('0x4b')]?_0x77563a[_0xf881('0x39')]:_0x3561b4[_0xf881('0x34')];if(!_0x489ba8[_0xf881('0x38')][_0xf881('0x3b')](_0xf881('0x3c'))){_0x77563a['limit']=qs[_0xf881('0x22')](_0x489ba8[_0xf881('0x38')][_0xf881('0x22')]);_0x77563a[_0xf881('0x23')]=qs[_0xf881('0x23')](_0x489ba8[_0xf881('0x38')][_0xf881('0x23')]);}_0x77563a[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x489ba8[_0xf881('0x38')][_0xf881('0x3e')]);_0x77563a[_0xf881('0x3f')]=qs[_0xf881('0x36')](_[_0xf881('0x5d')](_0x489ba8['query'],_0x3561b4['filters']));_0x77563a[_0xf881('0x3f')]['ChatWebsiteId']=_0x1f2601['id'];if(_0x489ba8[_0xf881('0x38')][_0xf881('0x40')]){_0x77563a[_0xf881('0x3f')]=_['merge'](_0x77563a[_0xf881('0x3f')],{'$or':_[_0xf881('0x2f')](_0x77563a[_0xf881('0x39')],function(_0x1d2aea){var _0x437564={};_0x437564[_0x1d2aea]={'$like':'%'+_0x489ba8[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x437564;})});}_0x77563a=_[_0xf881('0x41')]({},_0x77563a,_0x489ba8[_0xf881('0x43')]);return db['Disposition'][_0xf881('0x24')]({'where':_0x77563a[_0xf881('0x3f')]})[_0xf881('0x14')](function(_0x25def6){_0x10243f[_0xf881('0x24')]=_0x25def6;if(_0x489ba8[_0xf881('0x38')][_0xf881('0x44')]){_0x77563a[_0xf881('0x45')]=[{'all':!![]}];}return db['Disposition'][_0xf881('0x46')](_0x77563a);})[_0xf881('0x14')](function(_0x1bf931){_0x10243f[_0xf881('0x47')]=_0x1bf931;return _0x10243f;});}})[_0xf881('0x14')](respondWithFilteredResult(_0x27578f,_0x77563a))[_0xf881('0x1d')](handleError(_0x27578f,null));};exports[_0xf881('0x5e')]=function(_0x17407a,_0x2cc3d5){return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x17407a['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x2cc3d5,null))[_0xf881('0x14')](function(_0x28a889){if(_0x28a889){return _0x28a889[_0xf881('0x5e')](_0x17407a[_0xf881('0x38')]['ids']);}})[_0xf881('0x14')](respondWithStatusCode(_0x2cc3d5,null))['catch'](handleError(_0x2cc3d5,null));};exports['addAnswer']=function(_0x14f918,_0x5b3d7f){if(_0x14f918[_0xf881('0x4e')]['id']){delete _0x14f918[_0xf881('0x4e')]['id'];}return db['ChatWebsite'][_0xf881('0x4c')]({'where':{'id':_0x14f918[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x5b3d7f,null))[_0xf881('0x14')](function(_0x453298){if(_0x453298){_0x14f918[_0xf881('0x4e')]['ChatWebsiteId']=_0x453298['id'];return db[_0xf881('0x5f')]['create'](_0x14f918[_0xf881('0x4e')]);}})[_0xf881('0x14')](respondWithResult(_0x5b3d7f,null))[_0xf881('0x1d')](handleError(_0x5b3d7f,null));};exports['getAnswers']=function(_0x1a6aaa,_0x26142f){var _0x5cb0af={'raw':![],'where':{}};var _0xf61965={};var _0x4f04de={'count':0x0,'rows':[]};return db[_0xf881('0x30')]['findOne']({'where':{'id':_0x1a6aaa[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x26142f,null))['then'](function(_0x14dc19){if(_0x14dc19){_0xf61965[_0xf881('0x34')]=_[_0xf881('0x35')](db[_0xf881('0x5f')][_0xf881('0x31')]);_0xf61965[_0xf881('0x38')]=_[_0xf881('0x35')](_0x1a6aaa['query']);_0xf61965['filters']=_['intersection'](_0xf61965['model'],_0xf61965[_0xf881('0x38')]);_0x5cb0af['attributes']=_['intersection'](_0xf61965['model'],qs[_0xf881('0x3a')](_0x1a6aaa[_0xf881('0x38')][_0xf881('0x3a')]));_0x5cb0af[_0xf881('0x39')]=_0x5cb0af[_0xf881('0x39')]['length']?_0x5cb0af['attributes']:_0xf61965['model'];if(!_0x1a6aaa[_0xf881('0x38')][_0xf881('0x3b')](_0xf881('0x3c'))){_0x5cb0af[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x1a6aaa[_0xf881('0x38')][_0xf881('0x22')]);_0x5cb0af[_0xf881('0x23')]=qs['offset'](_0x1a6aaa['query'][_0xf881('0x23')]);}_0x5cb0af[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x1a6aaa[_0xf881('0x38')][_0xf881('0x3e')]);_0x5cb0af[_0xf881('0x3f')]=qs[_0xf881('0x36')](_[_0xf881('0x5d')](_0x1a6aaa['query'],_0xf61965[_0xf881('0x36')]));_0x5cb0af['where'][_0xf881('0x59')]=_0x14dc19['id'];if(_0x1a6aaa['query']['filter']){_0x5cb0af[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x5cb0af['where'],{'$or':_[_0xf881('0x2f')](_0x5cb0af[_0xf881('0x39')],function(_0x455338){var _0x238373={};_0x238373[_0x455338]={'$like':'%'+_0x1a6aaa[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x238373;})});}_0x5cb0af=_[_0xf881('0x41')]({},_0x5cb0af,_0x1a6aaa[_0xf881('0x43')]);return db[_0xf881('0x5f')][_0xf881('0x24')]({'where':_0x5cb0af[_0xf881('0x3f')]})[_0xf881('0x14')](function(_0x28d746){_0x4f04de[_0xf881('0x24')]=_0x28d746;if(_0x1a6aaa[_0xf881('0x38')]['includeAll']){_0x5cb0af['include']=[{'all':!![]}];}return db[_0xf881('0x5f')][_0xf881('0x46')](_0x5cb0af);})[_0xf881('0x14')](function(_0x698b0c){_0x4f04de['rows']=_0x698b0c;return _0x4f04de;});}})[_0xf881('0x14')](respondWithFilteredResult(_0x26142f,_0x5cb0af))[_0xf881('0x1d')](handleError(_0x26142f,null));};exports['removeAnswers']=function(_0x35e4da,_0x147fd){return db['ChatWebsite'][_0xf881('0x4c')]({'where':{'id':_0x35e4da['params']['id']}})['then'](handleEntityNotFound(_0x147fd,null))['then'](function(_0x359ccd){if(_0x359ccd){return _0x359ccd[_0xf881('0x60')](_0x35e4da[_0xf881('0x38')][_0xf881('0x61')]);}})[_0xf881('0x14')](respondWithStatusCode(_0x147fd,null))[_0xf881('0x1d')](handleError(_0x147fd,null));};exports[_0xf881('0x62')]=function(_0x256b4d,_0x2b9f2c){_0x256b4d['body'][_0xf881('0x63')]=_0x256b4d[_0xf881('0x64')]['filename'];return db['ChatWebsite'][_0xf881('0x4c')]({'where':{'id':_0x256b4d['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x2b9f2c,null))[_0xf881('0x14')](saveUpdates(_0x256b4d['body'],null))[_0xf881('0x14')](respondWithResult(_0x2b9f2c,null))[_0xf881('0x1d')](handleError(_0x2b9f2c,null));};exports[_0xf881('0x65')]=function(_0x1c69dc,_0x760175){_0x1c69dc[_0xf881('0x4e')]['agentAvatar']=_0x1c69dc[_0xf881('0x64')]['filename'];return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x1c69dc['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x760175,null))[_0xf881('0x14')](saveUpdates(_0x1c69dc[_0xf881('0x4e')],null))[_0xf881('0x14')](respondWithResult(_0x760175,null))[_0xf881('0x1d')](handleError(_0x760175,null));};exports['addCustomerAvatar']=function(_0x303607,_0x33f1ee){_0x303607[_0xf881('0x4e')][_0xf881('0x66')]=_0x303607[_0xf881('0x64')][_0xf881('0x67')];return db[_0xf881('0x30')]['find']({'where':{'id':_0x303607[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x33f1ee,null))[_0xf881('0x14')](saveUpdates(_0x303607['body'],null))['then'](respondWithResult(_0x33f1ee,null))[_0xf881('0x1d')](handleError(_0x33f1ee,null));};exports[_0xf881('0x68')]=function(_0x5a901c,_0x823ee){_0x5a901c[_0xf881('0x4e')][_0xf881('0x69')]=_0x5a901c[_0xf881('0x64')][_0xf881('0x67')];return db[_0xf881('0x30')]['find']({'where':{'id':_0x5a901c[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x823ee,null))['then'](saveUpdates(_0x5a901c[_0xf881('0x4e')],null))[_0xf881('0x14')](respondWithResult(_0x823ee,null))[_0xf881('0x1d')](handleError(_0x823ee,null));};exports[_0xf881('0x6a')]=function(_0x5e01c7,_0x2ef406){var _0x4e681d=path[_0xf881('0x6b')](config['root'],_0xf881('0x6c'));var _0x144fc1={'where':{'id':_0x5e01c7[_0xf881('0x49')]['id']},'attributes':['id',_0xf881('0x63')],'raw':!![]};var _0x423f6a=![];return require(_0xf881('0x6d'))[_0xf881('0x6e')]()[_0xf881('0x14')](function(_0x5ebe6c){if(_0x5ebe6c){_0x423f6a=_0x5ebe6c[_0xf881('0x6f')];}})[_0xf881('0x14')](function(){return db[_0xf881('0x30')][_0xf881('0x4c')](_0x144fc1);})['then'](handleEntityNotFound(_0x2ef406,null))['then'](function(_0x24da84){if(_0x24da84){if(!_[_0xf881('0x70')](_0x24da84[_0xf881('0x63')])){if(fs[_0xf881('0x71')](path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x73'),_0x24da84[_0xf881('0x63')]))&&_0x423f6a){_0x4e681d=path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x73'),_0x24da84[_0xf881('0x63')]);}}return _0x2ef406['download'](_0x4e681d);}})[_0xf881('0x1d')](handleError(_0x2ef406,null));};exports[_0xf881('0x74')]=function(_0x1ede2f,_0x173ca7){var _0x241a0c=path[_0xf881('0x6b')](config['root'],_0xf881('0x75'));var _0x2ad3be={'where':{'id':_0x1ede2f['params']['id']},'attributes':['id',_0xf881('0x76')],'raw':!![]};return db[_0xf881('0x30')][_0xf881('0x4c')](_0x2ad3be)[_0xf881('0x14')](handleEntityNotFound(_0x173ca7,null))['then'](function(_0x598c58){if(_0x598c58){if(!_[_0xf881('0x70')](_0x598c58[_0xf881('0x76')])){if(fs[_0xf881('0x71')](path[_0xf881('0x6b')](config['root'],'server/files/images/avatars/',_0x598c58['agentAvatar']))){_0x241a0c=path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x77'),_0x598c58[_0xf881('0x76')]);}}return _0x173ca7[_0xf881('0x78')](_0x241a0c);}})[_0xf881('0x1d')](handleError(_0x173ca7,null));};exports[_0xf881('0x79')]=function(_0x474391,_0x4d3947){var _0x1c3412=path['join'](config[_0xf881('0x72')],_0xf881('0x7a'));var _0x22e469={'where':{'id':_0x474391[_0xf881('0x49')]['id']},'attributes':['id',_0xf881('0x66'),'showCustomerAvatar'],'raw':!![]};return db[_0xf881('0x30')][_0xf881('0x4c')](_0x22e469)['then'](handleEntityNotFound(_0x4d3947,null))[_0xf881('0x14')](function(_0x248135){if(_0x248135){if(!_['isNil'](_0x248135['customerAvatar'])){if(fs[_0xf881('0x71')](path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x77'),_0x248135[_0xf881('0x66')]))&&_0x248135[_0xf881('0x7b')]){_0x1c3412=path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x77'),_0x248135[_0xf881('0x66')]);}}return _0x4d3947[_0xf881('0x78')](_0x1c3412);}})[_0xf881('0x1d')](handleError(_0x4d3947,null));};exports[_0xf881('0x7c')]=function(_0x158188,_0x558f19){var _0x5d2591=path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0x7d'));var _0x1b732c={'where':{'id':_0x158188[_0xf881('0x49')]['id']},'attributes':['id',_0xf881('0x69')],'raw':!![]};return db['ChatWebsite'][_0xf881('0x4c')](_0x1b732c)[_0xf881('0x14')](handleEntityNotFound(_0x558f19,null))['then'](function(_0x2d0dab){if(_0x2d0dab){if(!_['isNil'](_0x2d0dab[_0xf881('0x69')])){if(fs[_0xf881('0x71')](path['join'](config[_0xf881('0x72')],_0xf881('0x77'),_0x2d0dab['systemAvatar']))){_0x5d2591=path[_0xf881('0x6b')](config['root'],_0xf881('0x77'),_0x2d0dab[_0xf881('0x69')]);}}return _0x558f19[_0xf881('0x78')](_0x5d2591);}})[_0xf881('0x1d')](handleError(_0x558f19,null));};exports[_0xf881('0x7e')]=function(_0x205212,_0x231e39){var _0x4d0824=require(_0xf881('0x7f'));var _0x46472c=new _0x4d0824();var _0x29c17c=_0x46472c['setUA'](_0x205212[_0xf881('0x80')][_0xf881('0x81')])[_0xf881('0x82')]();var _0x3249ef={'body':_0x205212[_0xf881('0x4e')],'channel':_0xf881('0x83')};var _0x41b054=[];var _0x946667=[];var _0x1fe12c={};var _0xfa28d1=![];return db[_0xf881('0x84')]['describe']()['then'](function(_0x47727a){if(!_0x47727a){throw new db['Sequelize']['ValidationError'](_0xf881('0x85'));}_0x41b054=_[_0xf881('0x86')](_[_0xf881('0x35')](_0x47727a),['createdAt',_0xf881('0x87')]);_0x946667=_[_0xf881('0x86')](_[_0xf881('0x35')](_0x47727a),[_0xf881('0x88'),_0xf881('0x87'),_0xf881('0x89'),_0xf881('0x8a')]);if(_0x205212[_0xf881('0x4e')]['id']){delete _0x205212[_0xf881('0x4e')]['id'];}if(_['isNil'](_0x205212[_0xf881('0x4e')][_0xf881('0x8b')])){throw new db[(_0xf881('0x8c'))]['ValidationError'](_0xf881('0x8d'));}if(_[_0xf881('0x70')](_0x205212['body']['body'])||_0x205212[_0xf881('0x4e')][_0xf881('0x4e')]===''){throw new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xf881('0x70')](_0x205212['body'][_0xf881('0x8f')])){throw new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x946667);}if(!_[_0xf881('0x90')](_0x946667,_0x205212[_0xf881('0x4e')]['mapKey'])){throw new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))](_0xf881('0x91')+_0x946667);}_0x1fe12c[_0x205212['body']['mapKey']]=_0x205212[_0xf881('0x4e')][_0xf881('0x8b')];})['then'](function(){return db[_0xf881('0x30')]['find']({'where':{'id':_0x205212[_0xf881('0x49')]['id']},'include':[{'model':db['CmList'],'as':_0xf881('0x92'),'include':[{'model':db['CmContact'],'as':_0xf881('0x93'),'where':_0x1fe12c,'limit':0x1,'order':[[_0xf881('0x87'),_0xf881('0x94')]]}]},{'model':db[_0xf881('0x95')],'as':_0xf881('0x96')}]});})['then'](handleEntityNotFound(_0x231e39,null))[_0xf881('0x14')](function(_0x1bca04){if(_0x1bca04&&_0x1bca04[_0xf881('0x92')]){_0x3249ef[_0xf881('0x97')]=_0x1bca04;_0x3249ef[_0xf881('0x98')]=_0x1bca04[_0xf881('0x96')];_0x3249ef[_0xf881('0x99')]=_0x1bca04[_0xf881('0x92')];_0x3249ef[_0xf881('0x98')]=_[_0xf881('0x9a')](_0x3249ef[_0xf881('0x98')],[_0xf881('0x9b')],['asc']);if(_0x3249ef[_0xf881('0x97')][_0xf881('0x96')]){delete _0x3249ef[_0xf881('0x97')][_0xf881('0x96')];}if(_0x3249ef['account'][_0xf881('0x92')]&&_0x3249ef[_0xf881('0x97')]['List'][_0xf881('0x93')][_0xf881('0x4b')]){return _0x3249ef[_0xf881('0x97')][_0xf881('0x92')][_0xf881('0x93')][0x0];}var _0x2cf04b=_[_0xf881('0xc')](_0x205212[_0xf881('0x4e')],{'firstName':_0x205212[_0xf881('0x4e')]['from'],'ListId':_0x1bca04[_0xf881('0x8a')]});_0x2cf04b[_0x205212[_0xf881('0x4e')][_0xf881('0x8f')]]=_0x205212[_0xf881('0x4e')]['from'];return db[_0xf881('0x84')][_0xf881('0x4d')](_0x2cf04b,{'fields':_0x41b054,'raw':!![]});}})[_0xf881('0x14')](handleEntityNotFound(_0x231e39,null))['then'](function(_0x44b677){_0x3249ef[_0xf881('0x9c')]=_0x44b677;var _0x145bc8=_0x205212[_0xf881('0x4e')]['customerIp'];if(_0x205212['headers'][_0xf881('0x9d')]){_0x145bc8=_0x205212[_0xf881('0x80')][_0xf881('0x9d')];}else if(_0x205212[_0xf881('0x80')][_0xf881('0x9e')]){_0x145bc8=_['first'](_0x205212[_0xf881('0x80')]['x-forwarded-for'][_0xf881('0x9f')](','));}if(_0x44b677){var _0x2131c4={'ContactId':_0x44b677['id'],'ChatWebsiteId':_0x205212[_0xf881('0x49')]['id'],'from':(_0x44b677[_0xf881('0xa0')]||'')+'\x20'+(_0x44b677['lastName']||''),'customerIp':_0x145bc8,'customerPort':_0x205212[_0xf881('0x80')][_0xf881('0xa1')]?_0x205212['headers'][_0xf881('0xa1')]:null,'referer':_0x205212[_0xf881('0x4e')][_0xf881('0xa2')],'browserName':_0x29c17c[_0xf881('0xa3')]['name']&&_0x29c17c[_0xf881('0xa3')][_0xf881('0xa4')]?util[_0xf881('0xa5')](_0xf881('0xa6'),_0x29c17c['browser'][_0xf881('0x2c')],_0x29c17c[_0xf881('0xa3')][_0xf881('0xa4')]):_0xf881('0xa7'),'browserVersion':_0x29c17c['browser'][_0xf881('0xa4')]||_0xf881('0xa7'),'osName':util['format'](_0xf881('0xa6'),_0x29c17c['os'][_0xf881('0x2c')],_0x29c17c['os']['version']),'osVersion':_0x29c17c['os']['version'],'deviceModel':_0x29c17c[_0xf881('0xa8')]['model']&&_0x29c17c[_0xf881('0xa8')][_0xf881('0xa9')]?util[_0xf881('0xa5')]('%s\x20%s\x20%s',_0x29c17c[_0xf881('0xa8')][_0xf881('0x34')],_0x29c17c[_0xf881('0xa8')]['vendor'],_0x29c17c['device']['type']):null,'deviceVendor':_0x29c17c['device'][_0xf881('0xa9')],'deviceType':_0x29c17c[_0xf881('0xa8')]['type'],'formData':JSON[_0xf881('0x19')](_0x205212[_0xf881('0x4e')])};var _0x1b6cc1={'ChatWebsiteId':_0x205212['params']['id'],'closed':![]};if(_0x205212['body'][_0xf881('0xaa')]){_0x1b6cc1['threadId']=_0x205212[_0xf881('0x4e')]['threadId'];return db[_0xf881('0xab')][_0xf881('0x4c')]({'where':_0x1b6cc1})[_0xf881('0x14')](function(_0x32604a){if(_0x32604a){return[_0x32604a,![]];}_0x2131c4[_0xf881('0xaa')]=_0x205212[_0xf881('0x4e')]['threadId'];_0x2131c4[_0xf881('0xac')]=_0x205212[_0xf881('0x4e')][_0xf881('0xac')];return db[_0xf881('0xab')]['create'](_0x2131c4)[_0xf881('0x14')](function(_0x32e946){return[_0x32e946,!![]];});});}_0x1b6cc1['ContactId']=_0x44b677['id'];if(_0x205212['body']['interaction']&&_0x205212[_0xf881('0x4e')][_0xf881('0xad')]['id']){_0x1b6cc1['id']=_0x205212['body'][_0xf881('0xad')]['id'];return db[_0xf881('0xab')][_0xf881('0x4c')]({'where':_0x1b6cc1})[_0xf881('0x14')](function(_0x37acc3){if(_0x37acc3){return[_0x37acc3,![]];}return db['ChatInteraction'][_0xf881('0x4d')](_0x2131c4)[_0xf881('0x14')](function(_0x5ca7be){return[_0x5ca7be,!![]];});});}return db[_0xf881('0xab')]['create'](_0x2131c4)['then'](function(_0x4272ab){return[_0x4272ab,!![]];});}})[_0xf881('0xae')](function(_0x35a711,_0x5d79f6){if(_0x35a711){_0xfa28d1=_0x5d79f6;if(!_0x5d79f6){var _0x34de51={'from':(_0x3249ef[_0xf881('0x9c')]['firstName']||'')+'\x20'+(_0x3249ef[_0xf881('0x9c')]['lastName']||'')};if(_0x205212[_0xf881('0x4e')]['threadId']&&_0x205212[_0xf881('0x4e')][_0xf881('0xaf')]&&_0x205212[_0xf881('0x4e')][_0xf881('0xaa')]!=_0x205212[_0xf881('0x4e')][_0xf881('0xaf')]){_0x34de51[_0xf881('0xaa')]=_0x205212[_0xf881('0x4e')][_0xf881('0xaf')];}return _0x35a711[_0xf881('0x27')](_0x34de51);}else{return _0x35a711;}}})[_0xf881('0x14')](function(_0x652f62){_0x3249ef[_0xf881('0xad')]=_0x652f62[_0xf881('0x52')]({'plain':!![]});_0x3249ef['interaction'][_0xf881('0xb0')]=_0xfa28d1;if(_0x3249ef['interaction'][_0xf881('0xb0')]){if(_0x3249ef[_0xf881('0x97')][_0xf881('0xb1')]){_0x3249ef[_0xf881('0x98')]['push']({'id':0x0,'priority':_0x3249ef[_0xf881('0x98')][_0xf881('0x4b')]+0x1,'app':'close','appdata':_0xf881('0xb2'),'interval':_0xf881('0xb3')});}}return db[_0xf881('0xb4')][_0xf881('0x4d')]({'body':_0x205212['body'][_0xf881('0x4e')],'ChatWebsiteId':_0x205212['params']['id'],'ChatInteractionId':_0x652f62['id'],'direction':'in','ContactId':_0x3249ef[_0xf881('0x9c')]['id'],'AttachmentId':_0x205212[_0xf881('0x4e')][_0xf881('0xb5')]});})['then'](function(_0xbb70e2){_0x3249ef[_0xf881('0x1c')]=_0xbb70e2;if(_0x3249ef[_0xf881('0xad')][_0xf881('0xb6')]){return db[_0xf881('0xb7')][_0xf881('0x4c')]({'attributes':['id','name'],'where':{'id':_0x3249ef[_0xf881('0xad')][_0xf881('0xb6')]}})[_0xf881('0x14')](function(_0x4c1d4f){if(_0x4c1d4f){_0x3249ef[_0xf881('0x98')]['unshift']({'id':0x0,'priority':0x0,'app':_0xf881('0xb8'),'appdata':_0x4c1d4f['name']+','+(_0x3249ef['account'][_0xf881('0xb9')]||0xa),'interval':_0xf881('0xb3')});_0x3249ef[_0xf881('0xba')]=!![];}return respondWithRpcPromise(_0xf881('0xbb'),_0xf881('0xbc'),_0x3249ef);});}return respondWithRpcPromise(_0xf881('0xbb'),'startRouting',_0x3249ef);})[_0xf881('0x14')](function(_0x2ef669){respondWithRpcPromise(_0xf881('0xbd'),_0xf881('0xbd'),{'event':'notify','message':_0x2ef669},client9002);return _0x2ef669;})[_0xf881('0x14')](respondWithResult(_0x231e39,null))['catch'](handleError(_0x231e39,null));};exports[_0xf881('0xbe')]=function(_0x464364,_0x784010){var _0x3cbd61,_0x1c7548,_0x24e968;var _0x35fdf4=[];var _0x1fb340={};var _0x1a7680=_0x464364[_0xf881('0xbf')]||[];var _0x5bb8b6=[];var _0x5abf78;return db[_0xf881('0x84')]['describe']()[_0xf881('0x14')](function(_0x3342fc){if(!_0x3342fc){throw new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))](_0xf881('0x85'));}_0x35fdf4=_[_0xf881('0x86')](_['keys'](_0x3342fc),[_0xf881('0x88'),_0xf881('0x87'),_0xf881('0x89'),_0xf881('0x8a')]);if(_0x464364[_0xf881('0x4e')]['id']){delete _0x464364[_0xf881('0x4e')]['id'];}if(_[_0xf881('0x70')](_0x464364[_0xf881('0x4e')][_0xf881('0x8b')])){throw _0x784010[_0xf881('0x1e')](0x1f4)[_0xf881('0x2d')](new db['Sequelize'][(_0xf881('0x8e'))]('from\x20is\x20mandatory'));}if(_[_0xf881('0x70')](_0x464364[_0xf881('0x4e')][_0xf881('0x4e')])||_0x464364[_0xf881('0x4e')]['body']===''){throw _0x784010['status'](0x1f4)['send'](new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xf881('0x70')](_0x464364[_0xf881('0x4e')][_0xf881('0xc0')])){throw _0x784010['status'](0x1f4)[_0xf881('0x2d')](new db['Sequelize']['ValidationError'](_0xf881('0xc1')+_0x35fdf4));}if(!_[_0xf881('0x90')](_0x35fdf4,_0x464364[_0xf881('0x4e')][_0xf881('0xc0')])){throw _0x784010[_0xf881('0x1e')](0x1f4)[_0xf881('0x2d')](new db[(_0xf881('0x8c'))][(_0xf881('0x8e'))](_0xf881('0xc2')+_0x35fdf4));}_0x1fb340[_0x464364['body'][_0xf881('0xc0')]]=_0x464364['body'][_0xf881('0x8b')];})['then'](function(){return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x464364[_0xf881('0x49')]['id']},'include':[{'model':db[_0xf881('0xc3')],'as':_0xf881('0x92')},{'model':db['MailAccount'],'as':_0xf881('0xc4')}]});})[_0xf881('0x14')](handleEntityNotFound(_0x784010,null))[_0xf881('0x14')](function(_0x2a33a7){if(_0x2a33a7&&_0x2a33a7[_0xf881('0x92')]){_0x1c7548=_0x2a33a7;var _0x107574=_[_0xf881('0xc')](_0x464364[_0xf881('0x4e')],{'firstName':_0x464364[_0xf881('0x4e')][_0xf881('0x8b')],'phone':_0x464364[_0xf881('0x4e')]['from'],'ListId':_0x2a33a7[_0xf881('0x8a')]});_0x107574[_0x464364[_0xf881('0x4e')][_0xf881('0xc0')]]=_0x464364[_0xf881('0x4e')][_0xf881('0x8b')];return db[_0xf881('0x84')][_0xf881('0xc5')]({'where':_0x1fb340,'defaults':_0x107574});}})[_0xf881('0xae')](function(_0x53252f){if(_0x53252f){_0x24e968=_0x53252f;var _0x46d77e=fs['readFileSync'](path[_0xf881('0x6b')](config['root'],_0xf881('0xc6')),_0xf881('0xc7'));var _0x5af1c8=ejs['render'](_0x46d77e,{'body':_[_0xf881('0xc8')](_0x464364[_0xf881('0x4e')][_0xf881('0x4e')]),'bodyTitle':_0x1c7548[_0xf881('0xc9')]});return db[_0xf881('0xca')][_0xf881('0x4d')]({'body':_0x5af1c8,'plainBody':htmlToText[_0xf881('0xcb')](_0x5af1c8),'ContactId':_0x53252f['id'],'ChatWebsiteId':_0x1c7548['id']});}})[_0xf881('0x14')](function(_0x174911){_0x5abf78=_0x174911;if(_0x1a7680['length']){var _0x5f30e0=_0x1a7680['map'](function(_0x438415){return{'name':_0x438415['originalname'],'basename':_0x438415[_0xf881('0x67')],'type':_0x438415[_0xf881('0xcc')],'ChatOfflineMessageId':_0x174911['id']};});_0x5bb8b6=_0x5f30e0['map'](_0xd4d94d=>{var _0x116f48={'filename':_0xd4d94d[_0xf881('0x2c')],'path':path[_0xf881('0x6b')](config['root'],_0xf881('0xcd'),'files',_0xf881('0xce'),_0xf881('0xcf'),_0xd4d94d[_0xf881('0xd0')])};return _0x116f48;});if(!_0x1c7548['openNewInteraction']){return db[_0xf881('0xd1')]['transaction'](function(_0xd7706f){return db[_0xf881('0xd2')][_0xf881('0xd3')](_0x5f30e0,{'transaction':_0xd7706f});});}}})[_0xf881('0x14')](function(){if(_0x5abf78){_0x3cbd61=_0x5abf78;return db[_0xf881('0xc4')][_0xf881('0x5b')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xf881('0xd4'),'raw':!![],'include':[{'model':db[_0xf881('0xd5')],'as':_0xf881('0xd5'),'raw':!![]}]}]});}})[_0xf881('0x14')](function(_0x5813bc){if(_0x5813bc&&_0x5813bc[_0xf881('0xd4')]&&_0x1c7548[_0xf881('0xd6')]&&_0x1c7548[_0xf881('0xd7')]){var _0x25d587=_0x5813bc['getSmtpOptions']();return respondWithRpcPromise('SendMail','sendMail',{'account':_0x25d587,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x5813bc[_0xf881('0x2c')],_0x5813bc[_0xf881('0xd8')]||_0x5813bc['Smtp'][_0xf881('0x51')]),'to':_0x1c7548[_0xf881('0xd7')],'subject':_0x1c7548[_0xf881('0xd9')],'html':_0x3cbd61[_0xf881('0x4e')],'attachments':_0x5bb8b6}},client9003)[_0xf881('0x14')](function(){return _0x3cbd61;})[_0xf881('0x1d')](function(_0x43d9eb){logger[_0xf881('0x1a')](_0x43d9eb);});}})['then'](function(){if(_0x1c7548&&_0x1c7548[_0xf881('0xda')]&&_0x1c7548['MailAccountId']){var _0x12b985=[];if(_0x1a7680[_0xf881('0x4b')]){_0x12b985=_0x1a7680[_0xf881('0x2f')](function(_0x5bbc2a){return{'name':_0x5bbc2a[_0xf881('0xdb')],'basename':_0x5bbc2a[_0xf881('0x67')],'type':_0x5bbc2a[_0xf881('0xcc')],'ChatOfflineMessageId':_0x5abf78['id']};});}var _0x15ee31;if(!_['isNil'](_0x1c7548['subjectOffline'])){var _0x58bbb4=_[_0xf881('0x2f')](_0x464364['body'],function(_0x14ed0c){return _0x14ed0c;});var _0x57c155=_[_0xf881('0xdc')](_0x58bbb4)[0x0];var _0x462fcb=_['mapValues'](_0x57c155,function(_0xc94a8b){return _0xc94a8b;});_0x15ee31=_0x462fcb[0x1][_0x1c7548[_0xf881('0xdd')]];}var _0x7a300={'from':_0x24e968['email'],'firstName':_0x24e968['firstName'],'lastName':_0x24e968[_0xf881('0xde')],'mapKey':'email','message':{'from':_0x24e968['email'],'to':_0x1c7548[_0xf881('0xc4')][_0xf881('0xd8')],'cc':'','subject':_[_0xf881('0x70')](_0x15ee31)?_0x1c7548[_0xf881('0xd9')]:_0x15ee31,'messageId':'','sentAt':new Date(),'attach':_0x12b985[_0xf881('0x4b')],'attachments':_0x12b985,'originChannel':_0xf881('0xdf'),'ChatWebsiteId':_0x1c7548['id'],'ChatOfflineMessageId':_0x3cbd61['id'],'originTo':_0x1c7548['MailAccount'][_0xf881('0xd8')]},'body':_0x3cbd61['body']};var _0x490065={'account':{'id':_0x1c7548[_0xf881('0xe0')]},'body':_0x7a300,'log':_0xf881('0xe1')};return respondWithRpcPromise(_0xf881('0xe1'),_0xf881('0xe2'),_0x490065,client9001)[_0xf881('0x14')](function(){return _0x3cbd61;})['catch'](function(_0x17f12c){logger[_0xf881('0x1a')](_0x17f12c);});}return;})[_0xf881('0x14')](function(){if(_0x3cbd61){return _0x3cbd61;}})[_0xf881('0x14')](respondWithResult(_0x784010,null))[_0xf881('0x1d')](function(_0x4f634b){logger[_0xf881('0x1a')]('catch',_0x4f634b);for(var _0x8f2337 of _0x1a7680){var _0x1f2a19=path[_0xf881('0x6b')](config[_0xf881('0x72')],_0xf881('0xcd'),_0xf881('0xbf'),_0xf881('0xce'),_0xf881('0xcf'),_0x8f2337[_0xf881('0x67')]);fs_extra[_0xf881('0xe3')](_0x1f2a19)[_0xf881('0x1d')](function(_0x2fe295){logger[_0xf881('0x1a')](_0xf881('0xe4'),_0x1f2a19,_0x2fe295);});}});};exports[_0xf881('0xe5')]=function(_0x2ce46b,_0x123140){return db[_0xf881('0xab')][_0xf881('0x4c')]({'where':{'id':_0x2ce46b[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x123140,null))['then'](function(_0x2b4ebb){if(_0x2b4ebb){return _0x2b4ebb[_0xf881('0xe5')](_0x2ce46b['body'][_0xf881('0x61')],_[_0xf881('0xe6')](_0x2ce46b[_0xf881('0x4e')],[_0xf881('0x61'),'id'])||{});}})[_0xf881('0x14')](respondWithResult(_0x123140,null))['catch'](handleError(_0x123140,null));};exports['getInteractions']=function(_0x311b31,_0x1d5d2c){var _0x19f9d2={'raw':![],'where':{}};var _0x1edaf3={};var _0x3dcfc2={'count':0x0,'rows':[]};return db[_0xf881('0x30')][_0xf881('0x5b')]({'where':{'id':_0x311b31['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x1d5d2c,null))[_0xf881('0x14')](function(_0x55edf2){if(_0x55edf2){_0x1edaf3['model']=_[_0xf881('0x35')](db['ChatInteraction']['rawAttributes']);_0x1edaf3[_0xf881('0x38')]=_[_0xf881('0x35')](_0x311b31[_0xf881('0x38')]);_0x1edaf3[_0xf881('0x36')]=_[_0xf881('0x37')](_0x1edaf3[_0xf881('0x34')],_0x1edaf3[_0xf881('0x38')]);_0x19f9d2[_0xf881('0x39')]=_[_0xf881('0x37')](_0x1edaf3[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x311b31[_0xf881('0x38')]['fields']));_0x19f9d2['attributes']=_0x19f9d2[_0xf881('0x39')]['length']?_0x19f9d2['attributes']:_0x1edaf3[_0xf881('0x34')];if(!_0x311b31[_0xf881('0x38')][_0xf881('0x3b')]('nolimit')){_0x19f9d2[_0xf881('0x22')]=qs['limit'](_0x311b31[_0xf881('0x38')][_0xf881('0x22')]);_0x19f9d2[_0xf881('0x23')]=qs['offset'](_0x311b31[_0xf881('0x38')][_0xf881('0x23')]);}_0x19f9d2[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x311b31[_0xf881('0x38')][_0xf881('0x3e')]);_0x19f9d2[_0xf881('0x3f')]=qs['filters'](_[_0xf881('0x5d')](_0x311b31[_0xf881('0x38')],_0x1edaf3[_0xf881('0x36')]));_0x19f9d2[_0xf881('0x3f')][_0xf881('0x59')]=_0x55edf2['id'];if(_0x311b31['query']['filter']){_0x19f9d2[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x19f9d2[_0xf881('0x3f')],{'$or':_['map'](_0x19f9d2[_0xf881('0x39')],function(_0xccd5df){var _0x5e84fe={};_0x5e84fe[_0xccd5df]={'$like':'%'+_0x311b31[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x5e84fe;})});}_0x19f9d2=_['merge']({},_0x19f9d2,_0x311b31[_0xf881('0x43')]);return db[_0xf881('0xab')][_0xf881('0x24')]({'where':_0x19f9d2['where']})['then'](function(_0x5007f5){_0x3dcfc2[_0xf881('0x24')]=_0x5007f5;if(_0x311b31[_0xf881('0x38')][_0xf881('0x44')]){_0x19f9d2[_0xf881('0x45')]=[{'model':db[_0xf881('0x84')],'as':_0xf881('0xe7'),'required':![]},{'model':db[_0xf881('0xb7')],'as':_0xf881('0xe8'),'attributes':[_0xf881('0x2c'),_0xf881('0xe9'),'internal'],'required':![]},{'model':db[_0xf881('0xea')],'as':'Tags','attributes':['id',_0xf881('0x2c'),_0xf881('0xeb')],'where':_0x311b31[_0xf881('0x38')][_0xf881('0xec')]?{'id':_0x311b31[_0xf881('0x38')][_0xf881('0xec')]}:undefined,'required':_0x311b31[_0xf881('0x38')][_0xf881('0xec')]?!![]:![]}];}return db['ChatInteraction'][_0xf881('0x46')](_0x19f9d2);})[_0xf881('0x14')](function(_0x15b0fd){_0x3dcfc2['rows']=_0x15b0fd;return _0x3dcfc2;});}})[_0xf881('0x14')](respondWithFilteredResult(_0x1d5d2c,_0x19f9d2))['catch'](handleError(_0x1d5d2c,null));};function iftimePromise(_0x426ad4,_0x3b1b0c){return respondWithRpcPromise(_0xf881('0xed'),_0xf881('0xee'),{'command':_0x3b1b0c[_0xf881('0xef')]?util[_0xf881('0xa5')](_0xf881('0xf0'),_0x426ad4[_0xf881('0xf1')],_0x3b1b0c[_0xf881('0xef')]):util[_0xf881('0xa5')](_0xf881('0xf2'),_0x426ad4[_0xf881('0xf1')])},client9002)[_0xf881('0x14')](function(_0x23b5a0){var _0x5077fa=_0x23b5a0&&_0x23b5a0[_0xf881('0xf3')](_0xf881('0xf4'))>=0x0?!![]:![];logger[_0xf881('0x15')](_0xf881('0xf5'),_0x3b1b0c['id'],_0x426ad4['id'],_0x426ad4[_0xf881('0xf1')],_0x5077fa?_0xf881('0xf6'):_0xf881('0xf7'),_0x3b1b0c[_0xf881('0xef')]?_0x3b1b0c[_0xf881('0xef')]:_0xf881('0xf8'));return _0x5077fa;})[_0xf881('0x1d')](function(_0x509ad2){logger[_0xf881('0x1a')](_0xf881('0xf5'),_0x3b1b0c['id'],_0x426ad4['id'],_0x426ad4[_0xf881('0xf1')],util[_0xf881('0xf9')](_0x509ad2,{'showHidden':![],'depth':null}),_0x3b1b0c[_0xf881('0xef')]?_0x3b1b0c[_0xf881('0xef')]:_0xf881('0xf8'));return![];});}exports[_0xf881('0xee')]=function(_0x54d6dc,_0x92e8b8){var _0x48fed0=0x0;var _0x830939=0x0;var _0x39a49a=![];var _0x2a18b3;var _0x56ce73;return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x54d6dc[_0xf881('0x49')]['id']},'include':[{'model':db['Interval'],'as':_0xf881('0xfa'),'include':[{'model':db[_0xf881('0xfa')],'as':_0xf881('0xfb'),'attributes':['id','interval'],'raw':!![]}]}]})[_0xf881('0x14')](handleEntityNotFound(_0x92e8b8,null))[_0xf881('0x14')](function(_0x18e08a){if(_0x18e08a){_0x2a18b3=_0x18e08a;return _0x18e08a['getProactiveActions']({'raw':!![]});}})['then'](function(_0x310944){if(_0x2a18b3){if(_0x310944){_0x56ce73=_0x310944;}}return require(_0xf881('0x6d'))[_0xf881('0x6e')]();})[_0xf881('0x14')](function(_0x1e489a){if(_0x1e489a){_0x830939=_0x1e489a[_0xf881('0xfc')];_0x39a49a=_0x1e489a['custom'];}})[_0xf881('0x14')](function(){return db['ChatInteraction'][_0xf881('0x24')]({'where':{'closed':![]}});})[_0xf881('0x14')](function(_0x281063){_0x48fed0=_0x281063;if(_0x830939&&_0x281063>_0x830939){return db[_0xf881('0xfd')][_0xf881('0x5b')]({'where':{'id':0x1}})[_0xf881('0x14')](function(_0x19ce47){if(_0x19ce47){_0x19ce47[_0xf881('0xfe')](_0xf881('0xff'));}});}})[_0xf881('0x14')](function(){if(_0x2a18b3['Interval']&&_0x2a18b3[_0xf881('0xfa')][_0xf881('0xfb')]){var _0x8c5b11=[];for(var _0x4ba66d=0x0;_0x4ba66d<_0x2a18b3[_0xf881('0xfa')]['Intervals']['length'];_0x4ba66d++){var _0x3be103=_0x2a18b3[_0xf881('0xfa')][_0xf881('0xfb')][_0x4ba66d][_0xf881('0x52')]({'plain':!![]});_0x8c5b11[_0xf881('0x100')](iftimePromise(_0x3be103,_0x2a18b3));}return BPromise['all'](_0x8c5b11)[_0xf881('0x14')](function(_0x4cf6fc){return _[_0xf881('0x101')](_0x4cf6fc);});}else{return!![];}})[_0xf881('0x14')](function(_0x11c850){var _0x315c19=fs['readFileSync'](path['join'](config[_0xf881('0x72')],_0xf881('0x102')),'utf8');var _0x49b7f2={'remote':_0x2a18b3[_0xf881('0x103')],'query':querystring['stringify'](_[_0xf881('0x41')](_0x2a18b3['get']({'plain':!![]}),{'customerIp':_0x54d6dc['headers'][_0xf881('0x9e')]||_0x54d6dc['headers']['x-real-ip']||_0x54d6dc[_0xf881('0x104')][_0xf881('0x105')]||_0x54d6dc['ip'],'referer':_0x54d6dc[_0xf881('0x80')][_0xf881('0xa2')],'openedInteractions':_0x48fed0,'maxInteractions':_0x830939,'virtual':_0x39a49a[_0xf881('0xfc')],'online':_0x11c850,'custom':_0x39a49a}))[_0xf881('0x106')](/'/g,'\x5c\x27')};_0x92e8b8['send'](ejs['render'](Mustache[_0xf881('0x107')](_0x315c19,_0x49b7f2),{'proactiveActions':_0x56ce73,'alignment':_0x2a18b3[_0xf881('0x108')],'verticalAlignment':_0x2a18b3['verticalAlignment'],'div_color':_0x2a18b3['color'],'labelText':_0x2a18b3[_0xf881('0x109')],'text_color':_0x2a18b3[_0xf881('0x10a')],'text_button_color':_0x2a18b3[_0xf881('0x10b')],'button_color':_0x2a18b3[_0xf881('0x10c')],'background_color':_0x2a18b3[_0xf881('0x10d')],'hideWhenOffline':_0x2a18b3['hideWhenOffline'],'interval':_0x2a18b3[_0xf881('0x10e')]}));})[_0xf881('0x1d')](handleError(_0x92e8b8,null));};exports['addApplications']=function(_0x401253,_0x1a5a3f){var _0x229705=_0x401253[_0xf881('0x49')]['id'];var _0x3f3f80=_0x401253['body'];var _0x4fa6f5=0xc8;var _0x4971c7=null;return db[_0xf881('0xd1')][_0xf881('0x10f')]({'isolationLevel':db[_0xf881('0xd1')][_0xf881('0x110')][_0xf881('0x111')]['READ_COMMITTED']},function(_0x18cd3b){return db['ChatWebsite'][_0xf881('0x5b')]({'where':{'id':_0x229705},'transaction':_0x18cd3b})['then'](function(_0x145c62){if(_0x145c62){return db[_0xf881('0x95')][_0xf881('0x28')]({'where':{'ChatWebsiteId':_0x229705},'transaction':_0x18cd3b})[_0xf881('0x14')](function(){var _0x5f792b=_[_0xf881('0x2f')](_0x3f3f80,function(_0x4fad32){_0x4fad32[_0xf881('0x59')]=_0x229705;return _0x4fad32;});return db[_0xf881('0x95')][_0xf881('0xd3')](_0x5f792b,{'transaction':_0x18cd3b});});}else{_0x4fa6f5=0x194;_0x4971c7=[];}});})[_0xf881('0x14')](function(){if(_0x4fa6f5!==0x194){return db['ChatApplication'][_0xf881('0x112')]({'where':{'ChatWebsiteId':_0x229705},'order':_0xf881('0x9b')})[_0xf881('0x14')](function(_0xd68c5f){_0x4971c7=_0xd68c5f;});}})[_0xf881('0x1d')](function(_0x9bac9d){_0x4fa6f5=0x1f4;logger['error'](_0x9bac9d[_0xf881('0x2b')]);if(_0x9bac9d[_0xf881('0x2c')]){delete _0x9bac9d[_0xf881('0x2c')];}_0x4971c7=_0x9bac9d;})[_0xf881('0x113')](function(){if(_0x4971c7===null){_0x1a5a3f['sendStatus'](_0x4fa6f5);}else{if(_0x4fa6f5===0x1f4){_0x1a5a3f[_0xf881('0x1e')](_0x4fa6f5)[_0xf881('0x2d')](_0x4971c7);}else{_0x1a5a3f[_0xf881('0x1e')](_0x4fa6f5)[_0xf881('0x20')](_0x4971c7);}}});};exports[_0xf881('0x114')]=function(_0x5e0809,_0x57f149){var _0x108b38={};var _0x126acc={};var _0x3e3959;var _0x1a2573;return db[_0xf881('0x30')]['findOne']({'where':{'id':_0x5e0809[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x57f149,null))[_0xf881('0x14')](function(_0x36cf10){if(_0x36cf10){_0x3e3959=_0x36cf10;_0x126acc[_0xf881('0x34')]=_['keys'](db['ChatApplication'][_0xf881('0x31')]);_0x126acc[_0xf881('0x38')]=_[_0xf881('0x35')](_0x5e0809['query']);_0x126acc[_0xf881('0x36')]=_[_0xf881('0x37')](_0x126acc[_0xf881('0x34')],_0x126acc['query']);_0x108b38[_0xf881('0x39')]=_[_0xf881('0x37')](_0x126acc[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x5e0809[_0xf881('0x38')][_0xf881('0x3a')]));_0x108b38['attributes']=_0x108b38[_0xf881('0x39')][_0xf881('0x4b')]?_0x108b38[_0xf881('0x39')]:_0x126acc[_0xf881('0x34')];_0x108b38[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x5e0809['query'][_0xf881('0x3e')]);_0x108b38[_0xf881('0x3f')]=qs['filters'](_['pick'](_0x5e0809['query'],_0x126acc[_0xf881('0x36')]));if(_0x5e0809[_0xf881('0x38')][_0xf881('0x40')]){_0x108b38[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x108b38[_0xf881('0x3f')],{'$or':_[_0xf881('0x2f')](_0x108b38['attributes'],function(_0x3d2d4a){var _0x3a807d={};_0x3a807d[_0x3d2d4a]={'$like':'%'+_0x5e0809[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x3a807d;})});}_0x108b38=_[_0xf881('0x41')]({},_0x108b38,_0x5e0809[_0xf881('0x43')]);return _0x3e3959['getApplications'](_0x108b38);}})['then'](function(_0x17d206){if(_0x17d206){_0x1a2573=_0x17d206['length'];if(!_0x5e0809[_0xf881('0x38')]['hasOwnProperty']('nolimit')){_0x108b38[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x5e0809[_0xf881('0x38')]['limit']);_0x108b38[_0xf881('0x23')]=qs[_0xf881('0x23')](_0x5e0809[_0xf881('0x38')][_0xf881('0x23')]);}return _0x3e3959[_0xf881('0x114')](_0x108b38);}})[_0xf881('0x14')](function(_0x1a32e8){if(_0x1a32e8){return _0x1a32e8?{'count':_0x1a2573,'rows':_0x1a32e8}:null;}})['then'](respondWithResult(_0x57f149,null))[_0xf881('0x1d')](handleError(_0x57f149,null));};exports['addProactiveActions']=function(_0x320b50,_0xb4919a){return db['chatProactiveAction'][_0xf881('0x4c')]({'where':{'id':_0x320b50['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0xb4919a,null))['then'](function(_0x2c296a){if(_0x2c296a){return _0x2c296a[_0xf881('0x115')](_0x320b50['body'][_0xf881('0x61')],_[_0xf881('0xe6')](_0x320b50[_0xf881('0x4e')],['ids','id'])||{});}})['then'](respondWithResult(_0xb4919a,null))[_0xf881('0x1d')](handleError(_0xb4919a,null));};exports[_0xf881('0x116')]=function(_0x367523,_0x286dc8){var _0x4a5d66={};var _0x5381a2={};var _0x3c0ef6;var _0x2e8c3f;return db['ChatWebsite'][_0xf881('0x5b')]({'where':{'id':_0x367523[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x286dc8,null))[_0xf881('0x14')](function(_0x5cbd8a){if(_0x5cbd8a){_0x3c0ef6=_0x5cbd8a;_0x5381a2['model']=_[_0xf881('0x35')](db[_0xf881('0x117')][_0xf881('0x31')]);_0x5381a2[_0xf881('0x38')]=_[_0xf881('0x35')](_0x367523[_0xf881('0x38')]);_0x5381a2['filters']=_[_0xf881('0x37')](_0x5381a2[_0xf881('0x34')],_0x5381a2[_0xf881('0x38')]);_0x4a5d66[_0xf881('0x39')]=_[_0xf881('0x37')](_0x5381a2[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x367523[_0xf881('0x38')]['fields']));_0x4a5d66[_0xf881('0x39')]=_0x4a5d66[_0xf881('0x39')][_0xf881('0x4b')]?_0x4a5d66['attributes']:_0x5381a2[_0xf881('0x34')];_0x4a5d66[_0xf881('0x3d')]=qs['sort'](_0x367523[_0xf881('0x38')][_0xf881('0x3e')]);_0x4a5d66[_0xf881('0x3f')]=qs['filters'](_[_0xf881('0x5d')](_0x367523[_0xf881('0x38')],_0x5381a2['filters']));if(_0x367523['query']['filter']){_0x4a5d66[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x4a5d66[_0xf881('0x3f')],{'$or':_['map'](_0x4a5d66[_0xf881('0x39')],function(_0x3f69ff){var _0x20051f={};_0x20051f[_0x3f69ff]={'$like':'%'+_0x367523[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x20051f;})});}_0x4a5d66=_['merge']({},_0x4a5d66,_0x367523['options']);return _0x3c0ef6['getProactiveActions'](_0x4a5d66);}})[_0xf881('0x14')](function(_0x30890f){if(_0x30890f){_0x2e8c3f=_0x30890f['length'];if(!_0x367523['query'][_0xf881('0x3b')](_0xf881('0x3c'))){_0x4a5d66[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x367523[_0xf881('0x38')]['limit']);_0x4a5d66[_0xf881('0x23')]=qs['offset'](_0x367523['query'][_0xf881('0x23')]);}return _0x3c0ef6[_0xf881('0x116')](_0x4a5d66);}})[_0xf881('0x14')](function(_0x111b1c){if(_0x111b1c){return _0x111b1c?{'count':_0x2e8c3f,'rows':_0x111b1c}:null;}})['then'](respondWithResult(_0x286dc8,null))[_0xf881('0x1d')](handleError(_0x286dc8,null));};exports[_0xf881('0x118')]=function(_0x2411a9,_0x1198cb){var _0x579dec=_0x2411a9[_0xf881('0x38')][_0xf881('0x119')]==='false'?_0xf881('0x11a'):'onlineForm';return db['ChatWebsite'][_0xf881('0x4c')]({'attributes':['id',_0x579dec],'where':{'id':_0x2411a9[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x1198cb,null))[_0xf881('0x14')](function(_0x2636ed){if(_0x2636ed){var _0x20f52d=_0x2636ed[_0x579dec];var _0x4edebe=_0x20f52d&&_0x20f52d[_0xf881('0x11b')]?_0x20f52d[_0xf881('0x11b')]:[];_0x1198cb[_0xf881('0x2d')]({'fromKey':_[_0xf881('0x70')](_0x20f52d[_0xf881('0x11c')])?undefined:_0x20f52d[_0xf881('0x11c')],'count':_0x4edebe[_0xf881('0x4b')],'rows':_0x4edebe});}})[_0xf881('0x1d')](handleError(_0x1198cb,null));};exports[_0xf881('0x11d')]=function(_0x430f27,_0x58095f){var _0x576a88={'raw':![],'where':{}};var _0x2d4d08={};var _0x31bc14={'count':0x0,'rows':[]};return db[_0xf881('0x30')][_0xf881('0x5b')]({'where':{'id':_0x430f27[_0xf881('0x49')]['id']}})['then'](handleEntityNotFound(_0x58095f,null))[_0xf881('0x14')](function(_0x5dafe9){if(_0x5dafe9){_0x2d4d08[_0xf881('0x34')]=_[_0xf881('0x35')](db[_0xf881('0xca')]['rawAttributes']);_0x2d4d08['query']=_['keys'](_0x430f27[_0xf881('0x38')]);_0x2d4d08[_0xf881('0x36')]=_[_0xf881('0x37')](_0x2d4d08['model'],_0x2d4d08[_0xf881('0x38')]);_0x576a88[_0xf881('0x39')]=_[_0xf881('0x37')](_0x2d4d08[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x430f27[_0xf881('0x38')]['fields']));_0x576a88[_0xf881('0x39')]=_0x576a88[_0xf881('0x39')][_0xf881('0x4b')]?_0x576a88[_0xf881('0x39')]:_0x2d4d08[_0xf881('0x34')];if(!_0x430f27[_0xf881('0x38')][_0xf881('0x3b')](_0xf881('0x3c'))){_0x576a88[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x430f27[_0xf881('0x38')]['limit']);_0x576a88[_0xf881('0x23')]=qs[_0xf881('0x23')](_0x430f27[_0xf881('0x38')][_0xf881('0x23')]);}_0x576a88[_0xf881('0x3d')]=qs[_0xf881('0x3e')](_0x430f27[_0xf881('0x38')][_0xf881('0x3e')]);_0x576a88['where']=qs[_0xf881('0x36')](_[_0xf881('0x5d')](_0x430f27[_0xf881('0x38')],_0x2d4d08[_0xf881('0x36')]));_0x576a88[_0xf881('0x3f')][_0xf881('0x59')]=_0x5dafe9['id'];if(_0x430f27['query']['filter']){_0x576a88[_0xf881('0x3f')]=_[_0xf881('0x41')](_0x576a88[_0xf881('0x3f')],{'$or':_[_0xf881('0x2f')](_0x576a88[_0xf881('0x39')],function(_0x530e8b){var _0x1e54c2={};_0x1e54c2[_0x530e8b]={'$like':'%'+_0x430f27[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0x1e54c2;})});}_0x576a88=_['merge']({},_0x576a88,_0x430f27[_0xf881('0x43')]);return db['ChatOfflineMessage']['count']({'where':_0x576a88[_0xf881('0x3f')]})[_0xf881('0x14')](function(_0x1b8247){_0x31bc14[_0xf881('0x24')]=_0x1b8247;if(_0x430f27[_0xf881('0x38')][_0xf881('0x44')]){_0x576a88[_0xf881('0x45')]=[{'all':!![]}];}else{_0x576a88[_0xf881('0x45')]=[{'model':db[_0xf881('0x84')],'as':_0xf881('0xe7'),'required':![]},{'model':db['Attachment'],'as':_0xf881('0x11e'),'required':![]}];}return db[_0xf881('0xca')]['findAll'](_0x576a88);})[_0xf881('0x14')](function(_0x3eb313){_0x31bc14[_0xf881('0x47')]=_0x3eb313;return _0x31bc14;});}})[_0xf881('0x14')](respondWithFilteredResult(_0x58095f,_0x576a88))[_0xf881('0x1d')](handleError(_0x58095f,null));};exports[_0xf881('0x11f')]=function(_0x87295c,_0x9ab01c){return db[_0xf881('0x30')][_0xf881('0x4c')]({'where':{'id':_0x87295c['params']['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x9ab01c,null))['then'](function(_0x39a149){if(_0x39a149){return _0x39a149[_0xf881('0x11f')](_0x87295c[_0xf881('0x4e')][_0xf881('0x61')],_[_0xf881('0xe6')](_0x87295c[_0xf881('0x4e')],['ids','id'])||{})[_0xf881('0xae')](function(_0x4e7731){for(var _0x22947a=0x0;_0x22947a<_0x87295c[_0xf881('0x4e')][_0xf881('0x61')]['length'];_0x22947a+=0x1){socket[_0xf881('0x120')]('userChatWebsite:save',{'UserId':Number(_0x87295c[_0xf881('0x4e')][_0xf881('0x61')][_0x22947a]),'ChatWebsiteId':Number(_0x87295c[_0xf881('0x49')]['id'])});}return _0x4e7731;});}})[_0xf881('0x14')](respondWithResult(_0x9ab01c,null))[_0xf881('0x1d')](handleError(_0x9ab01c,null));};exports['removeAgents']=function(_0x5741a7,_0x187d66){return db[_0xf881('0x30')]['find']({'where':{'id':_0x5741a7[_0xf881('0x49')]['id']}})['then'](handleEntityNotFound(_0x187d66,null))[_0xf881('0x14')](function(_0x64384d){if(_0x64384d){return _0x64384d[_0xf881('0x121')](_0x5741a7['query']['ids'])[_0xf881('0x14')](function(){if(_[_0xf881('0x122')](_0x5741a7['query']['ids'])){for(var _0x48c31f=0x0;_0x48c31f<_0x5741a7['query'][_0xf881('0x61')]['length'];_0x48c31f+=0x1){socket['emit'](_0xf881('0x123'),{'UserId':Number(_0x5741a7[_0xf881('0x38')]['ids'][_0x48c31f]),'ChatWebsiteId':Number(_0x5741a7[_0xf881('0x49')]['id'])});}}else{socket['emit'](_0xf881('0x123'),{'UserId':Number(_0x5741a7[_0xf881('0x38')][_0xf881('0x61')]),'ChatWebsiteId':Number(_0x5741a7['params']['id'])});}});}})['then'](respondWithStatusCode(_0x187d66,null))[_0xf881('0x1d')](handleError(_0x187d66,null));};exports['getAgents']=function(_0x513bed,_0x15d623){var _0x250d9d={};var _0x47172d={};var _0x3c00bf;var _0x533541;return db[_0xf881('0x30')][_0xf881('0x5b')]({'where':{'id':_0x513bed[_0xf881('0x49')]['id']}})[_0xf881('0x14')](handleEntityNotFound(_0x15d623,null))['then'](function(_0x5e3180){if(_0x5e3180){_0x3c00bf=_0x5e3180;_0x47172d['model']=_[_0xf881('0x35')](db['User'][_0xf881('0x31')]);_0x47172d['query']=_[_0xf881('0x35')](_0x513bed['query']);_0x47172d['filters']=_[_0xf881('0x37')](_0x47172d[_0xf881('0x34')],_0x47172d['query']);_0x250d9d[_0xf881('0x39')]=_[_0xf881('0x37')](_0x47172d[_0xf881('0x34')],qs[_0xf881('0x3a')](_0x513bed[_0xf881('0x38')]['fields']));_0x250d9d[_0xf881('0x39')]=_0x250d9d['attributes'][_0xf881('0x4b')]?_0x250d9d[_0xf881('0x39')]:_0x47172d[_0xf881('0x34')];_0x250d9d[_0xf881('0x3d')]=qs['sort'](_0x513bed['query']['sort']);_0x250d9d[_0xf881('0x3f')]=qs['filters'](_[_0xf881('0x5d')](_0x513bed[_0xf881('0x38')],_0x47172d[_0xf881('0x36')]));if(_0x513bed[_0xf881('0x38')]['filter']){_0x250d9d['where']=_['merge'](_0x250d9d[_0xf881('0x3f')],{'$or':_[_0xf881('0x2f')](_0x250d9d[_0xf881('0x39')],function(_0x4fa95e){var _0xd967f5={};_0xd967f5[_0x4fa95e]={'$like':'%'+_0x513bed[_0xf881('0x38')][_0xf881('0x40')]+'%'};return _0xd967f5;})});}_0x250d9d=_[_0xf881('0x41')]({},_0x250d9d,_0x513bed[_0xf881('0x43')]);return _0x3c00bf[_0xf881('0x124')](_0x250d9d);}})['then'](function(_0x38ff4e){if(_0x38ff4e){_0x533541=_0x38ff4e[_0xf881('0x4b')];if(!_0x513bed[_0xf881('0x38')]['hasOwnProperty'](_0xf881('0x3c'))){_0x250d9d[_0xf881('0x22')]=qs[_0xf881('0x22')](_0x513bed['query'][_0xf881('0x22')]);_0x250d9d[_0xf881('0x23')]=qs['offset'](_0x513bed['query']['offset']);}return _0x3c00bf['getAgents'](_0x250d9d);}})['then'](function(_0x451280){if(_0x451280){return _0x451280?{'count':_0x533541,'rows':_0x451280}:null;}})['then'](respondWithResult(_0x15d623,null))[_0xf881('0x1d')](handleError(_0x15d623,null));};
\ No newline at end of file
+var _0x7b97=['User','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','offline','files','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','basename','openNewInteraction','sequelize','Attachment','MailServerOut','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','email','lastName','Chat','NotifyMailAccount','notifyMail','offline-chat','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','Interval','Intervals','getProactiveActions','../../config/license/util','License','some','remote','x-forwarded-for','x-real-ip','connection','virtual','alignment','verticalAlignment','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','transaction','Transaction','ISOLATION_LEVELS','bulkCreate','finally','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','util','path','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','ChatWebsites','UserProfileResource','end','stack','name','send','index','Pause','map','ChatWebsite','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','include','rows','catch','mandatoryDispositionPause','keys','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','params','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','pick','options','findAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','filename','addAvatar','agentAvatar','file','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','download','getSystemAvatar','existsSync','notify','headers','user-agent','getResult','CmContact','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','Sequelize','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','defaults','customerIp','cf-connecting-ip','first','x-real-port','referer','version','format','browser','unknown','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','contact','firstName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId'];(function(_0x37ef38,_0x2cfe4e){var _0x499daa=function(_0x18d0f5){while(--_0x18d0f5){_0x37ef38['push'](_0x37ef38['shift']());}};_0x499daa(++_0x2cfe4e);}(_0x7b97,0x19a));var _0x77b9=function(_0x262417,_0x9b9f85){_0x262417=_0x262417-0x0;var _0x4404f7=_0x7b97[_0x262417];return _0x4404f7;};'use strict';var BPromise=require(_0x77b9('0x0'));var Mustache=require('mustache');var util=require(_0x77b9('0x1'));var path=require(_0x77b9('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x77b9('0x3'));var _=require(_0x77b9('0x4'));var querystring=require(_0x77b9('0x5'));var Redis=require(_0x77b9('0x6'));var qs=require(_0x77b9('0x7'));var logger=require(_0x77b9('0x8'))(_0x77b9('0x9'));var config=require(_0x77b9('0xa'));var db=require('../../mysqldb')['db'];config[_0x77b9('0xb')]=_['defaults'](config['redis'],{'host':_0x77b9('0xc'),'port':0x18eb});var socket=require(_0x77b9('0xd'))(new Redis(config[_0x77b9('0xb')]));require(_0x77b9('0xe'))[_0x77b9('0xf')](socket);var htmlToText=require(_0x77b9('0x10'));var jayson=require(_0x77b9('0x11'));var client=jayson[_0x77b9('0x12')]['http']({'port':0x232c});var client9002=jayson[_0x77b9('0x12')][_0x77b9('0x13')]({'port':0x232a});var client9003=jayson[_0x77b9('0x12')]['http']({'port':0x232b});var client9001=jayson[_0x77b9('0x12')][_0x77b9('0x13')]({'port':0x2329});function respondWithRpcPromise(_0x1a5a48,_0x735be4,_0x2b2b10,_0x5698b0){return new BPromise(function(_0x5c6247,_0x4e08d7){var _0x2870ed=_0x5698b0||client;return _0x2870ed[_0x77b9('0x14')](_0x1a5a48,_0x2b2b10)[_0x77b9('0x15')](function(_0x1db7e6){logger[_0x77b9('0x16')](_0x77b9('0x17'),_0x735be4,_0x77b9('0x18'));logger['debug'](_0x77b9('0x19'),_0x735be4,_0x77b9('0x18'),JSON[_0x77b9('0x1a')](_0x1db7e6));if(_0x1db7e6[_0x77b9('0x1b')]){if(_0x1db7e6[_0x77b9('0x1b')]['code']===0x1f4){logger['error'](_0x77b9('0x17'),_0x735be4,_0x1db7e6['error'][_0x77b9('0x1c')]);return _0x4e08d7(_0x1db7e6['error']['message']);}logger[_0x77b9('0x1b')](_0x77b9('0x17'),_0x735be4,_0x1db7e6[_0x77b9('0x1b')][_0x77b9('0x1c')]);return _0x5c6247(_0x1db7e6[_0x77b9('0x1b')][_0x77b9('0x1c')]);}else{logger[_0x77b9('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x735be4,_0x77b9('0x18'));_0x5c6247(_0x1db7e6[_0x77b9('0x1d')][_0x77b9('0x1c')]);}})['catch'](function(_0x20d562){logger[_0x77b9('0x1b')](_0x77b9('0x17'),_0x735be4,_0x20d562);_0x4e08d7(_0x20d562);});});}function respondWithStatusCode(_0x3a1437,_0xf86b3a){_0xf86b3a=_0xf86b3a||0xcc;return function(_0x6a41db){if(_0x6a41db){return _0x3a1437[_0x77b9('0x1e')](_0xf86b3a);}return _0x3a1437[_0x77b9('0x1f')](_0xf86b3a)['end']();};}function respondWithResult(_0x13c998,_0x44e224){_0x44e224=_0x44e224||0xc8;return function(_0x248ef8){if(_0x248ef8){return _0x13c998[_0x77b9('0x1f')](_0x44e224)[_0x77b9('0x20')](_0x248ef8);}};}function respondWithFilteredResult(_0x2913ef,_0x3c43f7){return function(_0x8e6a39){if(_0x8e6a39){var _0x50c883=typeof _0x3c43f7[_0x77b9('0x21')]===_0x77b9('0x22')&&typeof _0x3c43f7[_0x77b9('0x23')]===_0x77b9('0x22');var _0x86d74e=_0x8e6a39[_0x77b9('0x24')];var _0x72fe08=_0x50c883?0x0:_0x3c43f7['offset'];var _0x18c3b8=_0x50c883?_0x8e6a39['count']:_0x3c43f7['offset']+_0x3c43f7[_0x77b9('0x23')];var _0x506332;if(_0x18c3b8>=_0x86d74e){_0x18c3b8=_0x86d74e;_0x506332=0xc8;}else{_0x506332=0xce;}_0x2913ef[_0x77b9('0x1f')](_0x506332);return _0x2913ef[_0x77b9('0x25')](_0x77b9('0x26'),_0x72fe08+'-'+_0x18c3b8+'/'+_0x86d74e)['json'](_0x8e6a39);}return null;};}function saveUpdates(_0x40a8d0){return function(_0x38f74b){if(_0x38f74b){return _0x38f74b[_0x77b9('0x27')](_0x40a8d0)['then'](function(_0x5ad34e){return _0x5ad34e;});}return null;};}function removeEntity(_0x3dad14){return function(_0x17f014){if(_0x17f014){return _0x17f014[_0x77b9('0x28')]()['then'](function(){var _0x302c7a=_0x17f014[_0x77b9('0x29')]({'plain':!![]});var _0x967dd1=_0x77b9('0x2a');return db[_0x77b9('0x2b')][_0x77b9('0x28')]({'where':{'type':_0x967dd1,'resourceId':_0x302c7a['id']}})[_0x77b9('0x15')](function(){return _0x17f014;});})['then'](function(){_0x3dad14[_0x77b9('0x1f')](0xcc)[_0x77b9('0x2c')]();});}};}function handleEntityNotFound(_0x1d0e53){return function(_0x208092){if(!_0x208092){_0x1d0e53[_0x77b9('0x1e')](0x194);}return _0x208092;};}function handleError(_0x212088,_0x60c588){_0x60c588=_0x60c588||0x1f4;return function(_0x180614){logger[_0x77b9('0x1b')](_0x180614[_0x77b9('0x2d')]);if(_0x180614[_0x77b9('0x2e')]){delete _0x180614[_0x77b9('0x2e')];}_0x212088[_0x77b9('0x1f')](_0x60c588)[_0x77b9('0x2f')](_0x180614);};}exports[_0x77b9('0x30')]=function(_0x3ad0da,_0x352810){var _0x22996f={'include':[{'model':db[_0x77b9('0x31')],'as':'mandatoryDispositionPause'}]},_0x4226a5={},_0x467f68={'count':0x0,'rows':[]};var _0x5e5dc9=_[_0x77b9('0x32')](db[_0x77b9('0x33')][_0x77b9('0x34')],function(_0x39a275){return{'name':_0x39a275[_0x77b9('0x35')],'type':_0x39a275['type'][_0x77b9('0x36')]};});_0x4226a5[_0x77b9('0x37')]=_[_0x77b9('0x32')](_0x5e5dc9,_0x77b9('0x2e'));_0x4226a5[_0x77b9('0x38')]=_['keys'](_0x3ad0da['query']);_0x4226a5[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x4226a5[_0x77b9('0x37')],_0x4226a5['query']);_0x22996f[_0x77b9('0x3b')]=_[_0x77b9('0x3a')](_0x4226a5['model'],qs[_0x77b9('0x3c')](_0x3ad0da[_0x77b9('0x38')][_0x77b9('0x3c')]));_0x22996f['attributes']=_0x22996f['attributes'][_0x77b9('0x3d')]?_0x22996f[_0x77b9('0x3b')]:_0x4226a5['model'];if(!_0x3ad0da[_0x77b9('0x38')]['hasOwnProperty'](_0x77b9('0x3e'))){_0x22996f[_0x77b9('0x23')]=qs[_0x77b9('0x23')](_0x3ad0da[_0x77b9('0x38')]['limit']);_0x22996f['offset']=qs[_0x77b9('0x21')](_0x3ad0da[_0x77b9('0x38')][_0x77b9('0x21')]);}_0x22996f[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x3ad0da[_0x77b9('0x38')]['sort']);_0x22996f[_0x77b9('0x41')]=qs[_0x77b9('0x39')](_['pick'](_0x3ad0da['query'],_0x4226a5[_0x77b9('0x39')]),_0x5e5dc9);if(_0x3ad0da['query'][_0x77b9('0x42')]){_0x22996f['where']=_[_0x77b9('0x43')](_0x22996f[_0x77b9('0x41')],{'$or':_['map'](_0x5e5dc9,function(_0x457cf1){if(_0x457cf1[_0x77b9('0x44')]!==_0x77b9('0x45')){var _0xce1517={};_0xce1517[_0x457cf1[_0x77b9('0x2e')]]={'$like':'%'+_0x3ad0da[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0xce1517;}})});}_0x22996f=_['merge']({},_0x22996f,_0x3ad0da['options']);var _0x3a6af2={'where':_0x22996f[_0x77b9('0x41')]};return db['ChatWebsite'][_0x77b9('0x24')](_0x3a6af2)[_0x77b9('0x15')](function(_0x1c1fd4){_0x467f68[_0x77b9('0x24')]=_0x1c1fd4;if(_0x3ad0da['query'][_0x77b9('0x46')]){_0x22996f[_0x77b9('0x47')]=[{'all':!![]}];}return db[_0x77b9('0x33')]['findAll'](_0x22996f);})[_0x77b9('0x15')](function(_0x21640c){_0x467f68[_0x77b9('0x48')]=_0x21640c;return _0x467f68;})[_0x77b9('0x15')](respondWithFilteredResult(_0x352810,_0x22996f))[_0x77b9('0x49')](handleError(_0x352810,null));};exports['show']=function(_0x168817,_0x2de8f1){var _0x4c7baa={'raw':![],'where':{'id':_0x168817['params']['id']},'include':[{'model':db[_0x77b9('0x31')],'as':_0x77b9('0x4a')}]},_0x5d3ad5={};_0x5d3ad5[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0x33')][_0x77b9('0x34')]);_0x5d3ad5[_0x77b9('0x38')]=_[_0x77b9('0x4b')](_0x168817[_0x77b9('0x38')]);_0x5d3ad5[_0x77b9('0x39')]=_['intersection'](_0x5d3ad5[_0x77b9('0x37')],_0x5d3ad5[_0x77b9('0x38')]);_0x4c7baa['attributes']=_['intersection'](_0x5d3ad5['model'],qs['fields'](_0x168817[_0x77b9('0x38')]['fields']));_0x4c7baa[_0x77b9('0x3b')]=_0x4c7baa[_0x77b9('0x3b')][_0x77b9('0x3d')]?_0x4c7baa['attributes']:_0x5d3ad5[_0x77b9('0x37')];if(_0x168817[_0x77b9('0x38')][_0x77b9('0x46')]){_0x4c7baa['include']=[{'all':!![]}];}_0x4c7baa=_['merge']({},_0x4c7baa,_0x168817['options']);return db['ChatWebsite'][_0x77b9('0x4c')](_0x4c7baa)['then'](handleEntityNotFound(_0x2de8f1,null))['then'](respondWithResult(_0x2de8f1,null))[_0x77b9('0x49')](handleError(_0x2de8f1,null));};exports[_0x77b9('0x4d')]=function(_0x4a01bc,_0x85a979){return db[_0x77b9('0x33')][_0x77b9('0x4d')](_0x4a01bc[_0x77b9('0x4e')],{})[_0x77b9('0x15')](function(_0x561688){var _0x4e1766=_0x4a01bc[_0x77b9('0x4f')][_0x77b9('0x29')]({'plain':!![]});if(!_0x4e1766)throw new Error(_0x77b9('0x50'));if(_0x4e1766[_0x77b9('0x51')]===_0x77b9('0x4f')){var _0x39afe0=_0x561688[_0x77b9('0x29')]({'plain':!![]});var _0xa8a89=_0x77b9('0x2a');return db[_0x77b9('0x52')]['find']({'where':{'name':_0xa8a89,'userProfileId':_0x4e1766[_0x77b9('0x53')]},'raw':!![]})[_0x77b9('0x15')](function(_0x4a8544){if(_0x4a8544&&_0x4a8544[_0x77b9('0x54')]===0x0){return db[_0x77b9('0x2b')][_0x77b9('0x4d')]({'name':_0x39afe0['name'],'resourceId':_0x39afe0['id'],'type':_0x4a8544[_0x77b9('0x2e')],'sectionId':_0x4a8544['id']},{})['then'](function(){return _0x561688;});}else{return _0x561688;}})['catch'](function(_0x374849){logger[_0x77b9('0x1b')](_0x77b9('0x55'),_0x374849);throw _0x374849;});}return _0x561688;})[_0x77b9('0x15')](respondWithResult(_0x85a979,0xc9))[_0x77b9('0x49')](handleError(_0x85a979,null));};exports[_0x77b9('0x27')]=function(_0x5099f9,_0x58c431){if(_0x5099f9[_0x77b9('0x4e')]['id']){delete _0x5099f9['body']['id'];}return db['ChatWebsite'][_0x77b9('0x4c')]({'where':{'id':_0x5099f9[_0x77b9('0x56')]['id']},'include':[{'model':db[_0x77b9('0x31')],'as':_0x77b9('0x4a')}]})[_0x77b9('0x15')](handleEntityNotFound(_0x58c431,null))[_0x77b9('0x15')](saveUpdates(_0x5099f9['body'],null))[_0x77b9('0x15')](respondWithResult(_0x58c431,null))['catch'](handleError(_0x58c431,null));};exports['destroy']=function(_0x5f3cbb,_0x5891c6){return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x5f3cbb[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x5891c6,null))['then'](removeEntity(_0x5891c6,null))[_0x77b9('0x49')](handleError(_0x5891c6,null));};exports[_0x77b9('0x57')]=function(_0x5bf475,_0xef94de){return db[_0x77b9('0x33')][_0x77b9('0x57')]()['then'](respondWithResult(_0xef94de,null))['catch'](handleError(_0xef94de,null));};exports[_0x77b9('0x58')]=function(_0x453c29,_0x1837f5){if(_0x453c29[_0x77b9('0x4e')]['id']){delete _0x453c29[_0x77b9('0x4e')]['id'];}return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x453c29[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x1837f5,null))[_0x77b9('0x15')](function(_0x375199){if(_0x375199){_0x453c29[_0x77b9('0x4e')][_0x77b9('0x59')]=_0x375199['id'];return db[_0x77b9('0x5a')][_0x77b9('0x4d')](_0x453c29[_0x77b9('0x4e')]);}})[_0x77b9('0x15')](respondWithResult(_0x1837f5,null))[_0x77b9('0x49')](handleError(_0x1837f5,null));};exports[_0x77b9('0x5b')]=function(_0x5b56e9,_0x1521e2){var _0x337588={'raw':![],'where':{}};var _0x452a07={};var _0x524e35={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x77b9('0x5c')]({'where':{'id':_0x5b56e9[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x1521e2,null))[_0x77b9('0x15')](function(_0x2af28e){if(_0x2af28e){_0x452a07[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0x5a')][_0x77b9('0x34')]);_0x452a07[_0x77b9('0x38')]=_['keys'](_0x5b56e9[_0x77b9('0x38')]);_0x452a07[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x452a07[_0x77b9('0x37')],_0x452a07['query']);_0x337588['attributes']=_['intersection'](_0x452a07['model'],qs['fields'](_0x5b56e9[_0x77b9('0x38')][_0x77b9('0x3c')]));_0x337588['attributes']=_0x337588[_0x77b9('0x3b')][_0x77b9('0x3d')]?_0x337588[_0x77b9('0x3b')]:_0x452a07['model'];if(!_0x5b56e9[_0x77b9('0x38')][_0x77b9('0x5d')](_0x77b9('0x3e'))){_0x337588[_0x77b9('0x23')]=qs[_0x77b9('0x23')](_0x5b56e9[_0x77b9('0x38')]['limit']);_0x337588['offset']=qs[_0x77b9('0x21')](_0x5b56e9[_0x77b9('0x38')][_0x77b9('0x21')]);}_0x337588[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x5b56e9['query'][_0x77b9('0x40')]);_0x337588['where']=qs[_0x77b9('0x39')](_[_0x77b9('0x5e')](_0x5b56e9[_0x77b9('0x38')],_0x452a07[_0x77b9('0x39')]));_0x337588[_0x77b9('0x41')]['ChatWebsiteId']=_0x2af28e['id'];if(_0x5b56e9['query'][_0x77b9('0x42')]){_0x337588[_0x77b9('0x41')]=_[_0x77b9('0x43')](_0x337588['where'],{'$or':_[_0x77b9('0x32')](_0x337588['attributes'],function(_0x34f13a){var _0x4f9c01={};_0x4f9c01[_0x34f13a]={'$like':'%'+_0x5b56e9['query']['filter']+'%'};return _0x4f9c01;})});}_0x337588=_['merge']({},_0x337588,_0x5b56e9[_0x77b9('0x5f')]);return db[_0x77b9('0x5a')]['count']({'where':_0x337588[_0x77b9('0x41')]})[_0x77b9('0x15')](function(_0x1fca8f){_0x524e35[_0x77b9('0x24')]=_0x1fca8f;if(_0x5b56e9[_0x77b9('0x38')]['includeAll']){_0x337588[_0x77b9('0x47')]=[{'all':!![]}];}return db[_0x77b9('0x5a')][_0x77b9('0x60')](_0x337588);})[_0x77b9('0x15')](function(_0x4bdfd5){_0x524e35[_0x77b9('0x48')]=_0x4bdfd5;return _0x524e35;});}})[_0x77b9('0x15')](respondWithFilteredResult(_0x1521e2,_0x337588))[_0x77b9('0x49')](handleError(_0x1521e2,null));};exports[_0x77b9('0x61')]=function(_0x30c9dd,_0x2ca2ff){return db['ChatWebsite'][_0x77b9('0x4c')]({'where':{'id':_0x30c9dd[_0x77b9('0x56')]['id']}})['then'](handleEntityNotFound(_0x2ca2ff,null))[_0x77b9('0x15')](function(_0x531611){if(_0x531611){return _0x531611['removeDispositions'](_0x30c9dd[_0x77b9('0x38')][_0x77b9('0x62')]);}})[_0x77b9('0x15')](respondWithStatusCode(_0x2ca2ff,null))[_0x77b9('0x49')](handleError(_0x2ca2ff,null));};exports[_0x77b9('0x63')]=function(_0x3624bc,_0x5f6d6b){if(_0x3624bc[_0x77b9('0x4e')]['id']){delete _0x3624bc[_0x77b9('0x4e')]['id'];}return db[_0x77b9('0x33')]['find']({'where':{'id':_0x3624bc[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x5f6d6b,null))[_0x77b9('0x15')](function(_0x37e4e4){if(_0x37e4e4){_0x3624bc['body'][_0x77b9('0x59')]=_0x37e4e4['id'];return db['CannedAnswer'][_0x77b9('0x4d')](_0x3624bc['body']);}})[_0x77b9('0x15')](respondWithResult(_0x5f6d6b,null))[_0x77b9('0x49')](handleError(_0x5f6d6b,null));};exports[_0x77b9('0x64')]=function(_0x163008,_0x20523b){var _0x1aa364={'raw':![],'where':{}};var _0x5a1527={};var _0x438ebb={'count':0x0,'rows':[]};return db[_0x77b9('0x33')][_0x77b9('0x5c')]({'where':{'id':_0x163008[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x20523b,null))[_0x77b9('0x15')](function(_0x523c8e){if(_0x523c8e){_0x5a1527[_0x77b9('0x37')]=_['keys'](db['CannedAnswer'][_0x77b9('0x34')]);_0x5a1527[_0x77b9('0x38')]=_['keys'](_0x163008[_0x77b9('0x38')]);_0x5a1527[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x5a1527['model'],_0x5a1527['query']);_0x1aa364['attributes']=_['intersection'](_0x5a1527[_0x77b9('0x37')],qs[_0x77b9('0x3c')](_0x163008['query']['fields']));_0x1aa364['attributes']=_0x1aa364[_0x77b9('0x3b')]['length']?_0x1aa364['attributes']:_0x5a1527[_0x77b9('0x37')];if(!_0x163008[_0x77b9('0x38')][_0x77b9('0x5d')]('nolimit')){_0x1aa364[_0x77b9('0x23')]=qs[_0x77b9('0x23')](_0x163008['query'][_0x77b9('0x23')]);_0x1aa364['offset']=qs['offset'](_0x163008[_0x77b9('0x38')][_0x77b9('0x21')]);}_0x1aa364[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x163008[_0x77b9('0x38')][_0x77b9('0x40')]);_0x1aa364[_0x77b9('0x41')]=qs[_0x77b9('0x39')](_['pick'](_0x163008[_0x77b9('0x38')],_0x5a1527[_0x77b9('0x39')]));_0x1aa364['where'][_0x77b9('0x59')]=_0x523c8e['id'];if(_0x163008[_0x77b9('0x38')]['filter']){_0x1aa364[_0x77b9('0x41')]=_[_0x77b9('0x43')](_0x1aa364[_0x77b9('0x41')],{'$or':_[_0x77b9('0x32')](_0x1aa364[_0x77b9('0x3b')],function(_0x370ebf){var _0x5b8b63={};_0x5b8b63[_0x370ebf]={'$like':'%'+_0x163008[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0x5b8b63;})});}_0x1aa364=_[_0x77b9('0x43')]({},_0x1aa364,_0x163008[_0x77b9('0x5f')]);return db[_0x77b9('0x65')]['count']({'where':_0x1aa364[_0x77b9('0x41')]})['then'](function(_0x1d5c07){_0x438ebb[_0x77b9('0x24')]=_0x1d5c07;if(_0x163008[_0x77b9('0x38')]['includeAll']){_0x1aa364['include']=[{'all':!![]}];}return db[_0x77b9('0x65')]['findAll'](_0x1aa364);})[_0x77b9('0x15')](function(_0x1ae794){_0x438ebb['rows']=_0x1ae794;return _0x438ebb;});}})[_0x77b9('0x15')](respondWithFilteredResult(_0x20523b,_0x1aa364))[_0x77b9('0x49')](handleError(_0x20523b,null));};exports[_0x77b9('0x66')]=function(_0xc4e489,_0x4295bc){return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0xc4e489[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x4295bc,null))[_0x77b9('0x15')](function(_0x9bb6c8){if(_0x9bb6c8){return _0x9bb6c8[_0x77b9('0x66')](_0xc4e489['query'][_0x77b9('0x62')]);}})[_0x77b9('0x15')](respondWithStatusCode(_0x4295bc,null))[_0x77b9('0x49')](handleError(_0x4295bc,null));};exports['addLogo']=function(_0xebf5da,_0x85e84e){_0xebf5da[_0x77b9('0x4e')]['sitepic']=_0xebf5da['file'][_0x77b9('0x67')];return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0xebf5da[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x85e84e,null))[_0x77b9('0x15')](saveUpdates(_0xebf5da['body'],null))[_0x77b9('0x15')](respondWithResult(_0x85e84e,null))[_0x77b9('0x49')](handleError(_0x85e84e,null));};exports[_0x77b9('0x68')]=function(_0x1d80e1,_0x279dea){_0x1d80e1[_0x77b9('0x4e')][_0x77b9('0x69')]=_0x1d80e1[_0x77b9('0x6a')][_0x77b9('0x67')];return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x1d80e1[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x279dea,null))[_0x77b9('0x15')](saveUpdates(_0x1d80e1[_0x77b9('0x4e')],null))[_0x77b9('0x15')](respondWithResult(_0x279dea,null))[_0x77b9('0x49')](handleError(_0x279dea,null));};exports[_0x77b9('0x6b')]=function(_0x11e402,_0x18142c){_0x11e402['body'][_0x77b9('0x6c')]=_0x11e402[_0x77b9('0x6a')][_0x77b9('0x67')];return db['ChatWebsite'][_0x77b9('0x4c')]({'where':{'id':_0x11e402[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x18142c,null))[_0x77b9('0x15')](saveUpdates(_0x11e402['body'],null))[_0x77b9('0x15')](respondWithResult(_0x18142c,null))['catch'](handleError(_0x18142c,null));};exports['addSystemAvatar']=function(_0x300b72,_0x497d97){_0x300b72[_0x77b9('0x4e')][_0x77b9('0x6d')]=_0x300b72[_0x77b9('0x6a')][_0x77b9('0x67')];return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x300b72[_0x77b9('0x56')]['id']}})['then'](handleEntityNotFound(_0x497d97,null))[_0x77b9('0x15')](saveUpdates(_0x300b72[_0x77b9('0x4e')],null))['then'](respondWithResult(_0x497d97,null))['catch'](handleError(_0x497d97,null));};exports[_0x77b9('0x6e')]=function(_0x1c5778,_0x55a676){var _0x24f2e3=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0x71'));var _0x41e6ae={'where':{'id':_0x1c5778[_0x77b9('0x56')]['id']},'attributes':['id',_0x77b9('0x72')],'raw':!![]};var _0x218435=![];return require('../../config/license/util')[_0x77b9('0x73')]()['then'](function(_0xe414f6){if(_0xe414f6){_0x218435=_0xe414f6[_0x77b9('0x74')];}})[_0x77b9('0x15')](function(){return db[_0x77b9('0x33')][_0x77b9('0x4c')](_0x41e6ae);})[_0x77b9('0x15')](handleEntityNotFound(_0x55a676,null))['then'](function(_0x183229){if(_0x183229){if(!_[_0x77b9('0x75')](_0x183229[_0x77b9('0x72')])){if(fs['existsSync'](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],'server/files/images/logos/',_0x183229[_0x77b9('0x72')]))&&_0x218435){_0x24f2e3=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],'server/files/images/logos/',_0x183229['sitepic']);}}return _0x55a676['download'](_0x24f2e3);}})[_0x77b9('0x49')](handleError(_0x55a676,null));};exports[_0x77b9('0x76')]=function(_0x1539c9,_0x5347e6){var _0x47f841=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0x77'));var _0x8974bc={'where':{'id':_0x1539c9[_0x77b9('0x56')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x77b9('0x33')][_0x77b9('0x4c')](_0x8974bc)[_0x77b9('0x15')](handleEntityNotFound(_0x5347e6,null))[_0x77b9('0x15')](function(_0xf395b4){if(_0xf395b4){if(!_['isNil'](_0xf395b4['agentAvatar'])){if(fs['existsSync'](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0x78'),_0xf395b4[_0x77b9('0x69')]))){_0x47f841=path['join'](config[_0x77b9('0x70')],_0x77b9('0x78'),_0xf395b4[_0x77b9('0x69')]);}}return _0x5347e6['download'](_0x47f841);}})[_0x77b9('0x49')](handleError(_0x5347e6,null));};exports[_0x77b9('0x79')]=function(_0xa3843e,_0x3a666c){var _0xeab48=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],'server/files/images/avatars/customer_avatar.png');var _0xb24bbb={'where':{'id':_0xa3843e['params']['id']},'attributes':['id',_0x77b9('0x6c'),'showCustomerAvatar'],'raw':!![]};return db[_0x77b9('0x33')][_0x77b9('0x4c')](_0xb24bbb)['then'](handleEntityNotFound(_0x3a666c,null))[_0x77b9('0x15')](function(_0x586cd6){if(_0x586cd6){if(!_[_0x77b9('0x75')](_0x586cd6[_0x77b9('0x6c')])){if(fs['existsSync'](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],'server/files/images/avatars/',_0x586cd6[_0x77b9('0x6c')]))&&_0x586cd6[_0x77b9('0x7a')]){_0xeab48=path['join'](config[_0x77b9('0x70')],_0x77b9('0x78'),_0x586cd6[_0x77b9('0x6c')]);}}return _0x3a666c[_0x77b9('0x7b')](_0xeab48);}})[_0x77b9('0x49')](handleError(_0x3a666c,null));};exports[_0x77b9('0x7c')]=function(_0x48fff8,_0x7f61c9){var _0x3705b9=path[_0x77b9('0x6f')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x218dc4={'where':{'id':_0x48fff8[_0x77b9('0x56')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x77b9('0x33')][_0x77b9('0x4c')](_0x218dc4)[_0x77b9('0x15')](handleEntityNotFound(_0x7f61c9,null))['then'](function(_0x6dda9b){if(_0x6dda9b){if(!_['isNil'](_0x6dda9b[_0x77b9('0x6d')])){if(fs[_0x77b9('0x7d')](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0x78'),_0x6dda9b[_0x77b9('0x6d')]))){_0x3705b9=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0x78'),_0x6dda9b['systemAvatar']);}}return _0x7f61c9[_0x77b9('0x7b')](_0x3705b9);}})[_0x77b9('0x49')](handleError(_0x7f61c9,null));};exports[_0x77b9('0x7e')]=function(_0x12bfa9,_0x5e64da){var _0x29c057=require('user-agent-parser');var _0x5da2e0=new _0x29c057();var _0x9baa4a=_0x5da2e0['setUA'](_0x12bfa9[_0x77b9('0x7f')][_0x77b9('0x80')])[_0x77b9('0x81')]();var _0xa58eaf={'body':_0x12bfa9[_0x77b9('0x4e')],'channel':'chat'};var _0x5578fa=[];var _0x5d8a9d=[];var _0x5df8d8={};var _0x3347e6=![];return db[_0x77b9('0x82')]['describe']()[_0x77b9('0x15')](function(_0x5dc2b4){if(!_0x5dc2b4){throw new db['Sequelize']['ValidationError'](_0x77b9('0x83'));}_0x5578fa=_[_0x77b9('0x84')](_[_0x77b9('0x4b')](_0x5dc2b4),[_0x77b9('0x85'),_0x77b9('0x86')]);_0x5d8a9d=_[_0x77b9('0x84')](_['keys'](_0x5dc2b4),[_0x77b9('0x85'),_0x77b9('0x86'),_0x77b9('0x87'),_0x77b9('0x88')]);if(_0x12bfa9['body']['id']){delete _0x12bfa9[_0x77b9('0x4e')]['id'];}if(_[_0x77b9('0x75')](_0x12bfa9[_0x77b9('0x4e')]['from'])){throw new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))]('from\x20is\x20mandatory');}if(_[_0x77b9('0x75')](_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x4e')])||_0x12bfa9['body'][_0x77b9('0x4e')]===''){throw new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))](_0x77b9('0x8b'));}if(_['isNil'](_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x8c')])){throw new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))](_0x77b9('0x8d')+_0x5d8a9d);}if(!_[_0x77b9('0x8e')](_0x5d8a9d,_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x8c')])){throw new db['Sequelize'][(_0x77b9('0x8a'))](_0x77b9('0x8f')+_0x5d8a9d);}_0x5df8d8[_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x8c')]]=_0x12bfa9['body'][_0x77b9('0x90')];})[_0x77b9('0x15')](function(){return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x12bfa9[_0x77b9('0x56')]['id']},'include':[{'model':db[_0x77b9('0x91')],'as':_0x77b9('0x92'),'include':[{'model':db[_0x77b9('0x82')],'as':_0x77b9('0x93'),'where':_0x5df8d8,'limit':0x1,'order':[[_0x77b9('0x86'),_0x77b9('0x94')]]}]},{'model':db[_0x77b9('0x95')],'as':_0x77b9('0x96')}]});})[_0x77b9('0x15')](handleEntityNotFound(_0x5e64da,null))['then'](function(_0xc807d){if(_0xc807d&&_0xc807d[_0x77b9('0x92')]){_0xa58eaf[_0x77b9('0x97')]=_0xc807d;_0xa58eaf[_0x77b9('0x98')]=_0xc807d[_0x77b9('0x96')];_0xa58eaf[_0x77b9('0x99')]=_0xc807d[_0x77b9('0x92')];_0xa58eaf[_0x77b9('0x98')]=_[_0x77b9('0x9a')](_0xa58eaf[_0x77b9('0x98')],[_0x77b9('0x9b')],[_0x77b9('0x9c')]);if(_0xa58eaf[_0x77b9('0x97')][_0x77b9('0x96')]){delete _0xa58eaf[_0x77b9('0x97')][_0x77b9('0x96')];}if(_0xa58eaf[_0x77b9('0x97')][_0x77b9('0x92')]&&_0xa58eaf[_0x77b9('0x97')][_0x77b9('0x92')][_0x77b9('0x93')][_0x77b9('0x3d')]){return _0xa58eaf['account']['List'][_0x77b9('0x93')][0x0];}var _0x38077f=_[_0x77b9('0x9d')](_0x12bfa9[_0x77b9('0x4e')],{'firstName':_0x12bfa9['body']['from'],'ListId':_0xc807d[_0x77b9('0x88')]});_0x38077f[_0x12bfa9['body'][_0x77b9('0x8c')]]=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x90')];return db['CmContact'][_0x77b9('0x4d')](_0x38077f,{'fields':_0x5578fa,'raw':!![]});}})[_0x77b9('0x15')](handleEntityNotFound(_0x5e64da,null))[_0x77b9('0x15')](function(_0x46e89b){_0xa58eaf['contact']=_0x46e89b;var _0x382aab=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0x9e')];if(_0x12bfa9['headers']['cf-connecting-ip']){_0x382aab=_0x12bfa9[_0x77b9('0x7f')][_0x77b9('0x9f')];}else if(_0x12bfa9[_0x77b9('0x7f')]['x-forwarded-for']){_0x382aab=_[_0x77b9('0xa0')](_0x12bfa9[_0x77b9('0x7f')]['x-forwarded-for']['split'](','));}if(_0x46e89b){var _0x7277a3={'ContactId':_0x46e89b['id'],'ChatWebsiteId':_0x12bfa9[_0x77b9('0x56')]['id'],'from':(_0x46e89b['firstName']||'')+'\x20'+(_0x46e89b['lastName']||''),'customerIp':_0x382aab,'customerPort':_0x12bfa9[_0x77b9('0x7f')][_0x77b9('0xa1')]?_0x12bfa9[_0x77b9('0x7f')]['x-real-port']:null,'referer':_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xa2')],'browserName':_0x9baa4a['browser']['name']&&_0x9baa4a['browser'][_0x77b9('0xa3')]?util[_0x77b9('0xa4')]('%s\x20%s',_0x9baa4a[_0x77b9('0xa5')]['name'],_0x9baa4a[_0x77b9('0xa5')]['version']):_0x77b9('0xa6'),'browserVersion':_0x9baa4a[_0x77b9('0xa5')][_0x77b9('0xa3')]||_0x77b9('0xa6'),'osName':util[_0x77b9('0xa4')](_0x77b9('0xa7'),_0x9baa4a['os']['name'],_0x9baa4a['os']['version']),'osVersion':_0x9baa4a['os']['version'],'deviceModel':_0x9baa4a[_0x77b9('0xa8')][_0x77b9('0x37')]&&_0x9baa4a['device'][_0x77b9('0xa9')]?util[_0x77b9('0xa4')](_0x77b9('0xaa'),_0x9baa4a['device'][_0x77b9('0x37')],_0x9baa4a[_0x77b9('0xa8')][_0x77b9('0xa9')],_0x9baa4a['device'][_0x77b9('0x44')]):null,'deviceVendor':_0x9baa4a['device'][_0x77b9('0xa9')],'deviceType':_0x9baa4a[_0x77b9('0xa8')][_0x77b9('0x44')],'formData':JSON['stringify'](_0x12bfa9['body'])};var _0x452b19={'ChatWebsiteId':_0x12bfa9[_0x77b9('0x56')]['id'],'closed':![]};if(_0x12bfa9[_0x77b9('0x4e')]['threadId']){_0x452b19[_0x77b9('0xab')]=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xab')];return db[_0x77b9('0xac')][_0x77b9('0x4c')]({'where':_0x452b19})['then'](function(_0x45ae07){if(_0x45ae07){return[_0x45ae07,![]];}_0x7277a3[_0x77b9('0xab')]=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xab')];_0x7277a3[_0x77b9('0xad')]=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xad')];return db[_0x77b9('0xac')][_0x77b9('0x4d')](_0x7277a3)[_0x77b9('0x15')](function(_0x3fd6ea){return[_0x3fd6ea,!![]];});});}_0x452b19[_0x77b9('0xae')]=_0x46e89b['id'];if(_0x12bfa9['body'][_0x77b9('0xaf')]&&_0x12bfa9['body']['interaction']['id']){_0x452b19['id']=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xaf')]['id'];return db[_0x77b9('0xac')]['find']({'where':_0x452b19})[_0x77b9('0x15')](function(_0x6533f7){if(_0x6533f7){return[_0x6533f7,![]];}return db[_0x77b9('0xac')][_0x77b9('0x4d')](_0x7277a3)['then'](function(_0xcb9a78){return[_0xcb9a78,!![]];});});}return db['ChatInteraction'][_0x77b9('0x4d')](_0x7277a3)[_0x77b9('0x15')](function(_0xc090e5){return[_0xc090e5,!![]];});}})[_0x77b9('0xb0')](function(_0x4ace5f,_0x1e7dd6){if(_0x4ace5f){_0x3347e6=_0x1e7dd6;if(!_0x1e7dd6){var _0x45b2ab={'from':(_0xa58eaf[_0x77b9('0xb1')][_0x77b9('0xb2')]||'')+'\x20'+(_0xa58eaf[_0x77b9('0xb1')]['lastName']||'')};if(_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xab')]&&_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xb3')]&&_0x12bfa9['body']['threadId']!=_0x12bfa9['body'][_0x77b9('0xb3')]){_0x45b2ab[_0x77b9('0xab')]=_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xb3')];}return _0x4ace5f['update'](_0x45b2ab);}else{return _0x4ace5f;}}})['then'](function(_0x40f980){_0xa58eaf['interaction']=_0x40f980[_0x77b9('0x29')]({'plain':!![]});_0xa58eaf[_0x77b9('0xaf')][_0x77b9('0xb4')]=_0x3347e6;if(_0xa58eaf['interaction'][_0x77b9('0xb4')]){if(_0xa58eaf['account'][_0x77b9('0xb5')]){_0xa58eaf[_0x77b9('0x98')][_0x77b9('0xb6')]({'id':0x0,'priority':_0xa58eaf[_0x77b9('0x98')][_0x77b9('0x3d')]+0x1,'app':_0x77b9('0xb7'),'appdata':_0x77b9('0xb8'),'interval':_0x77b9('0xb9')});}}return db[_0x77b9('0xba')]['create']({'body':_0x12bfa9[_0x77b9('0x4e')]['body'],'ChatWebsiteId':_0x12bfa9[_0x77b9('0x56')]['id'],'ChatInteractionId':_0x40f980['id'],'direction':'in','ContactId':_0xa58eaf['contact']['id'],'AttachmentId':_0x12bfa9[_0x77b9('0x4e')][_0x77b9('0xbb')]});})[_0x77b9('0x15')](function(_0x36b2d0){_0xa58eaf[_0x77b9('0x1c')]=_0x36b2d0;if(_0xa58eaf[_0x77b9('0xaf')]['UserId']){return db[_0x77b9('0xbc')]['find']({'attributes':['id',_0x77b9('0x2e')],'where':{'id':_0xa58eaf['interaction'][_0x77b9('0xbd')]}})[_0x77b9('0x15')](function(_0x3b2782){if(_0x3b2782){_0xa58eaf['applications'][_0x77b9('0xbe')]({'id':0x0,'priority':0x0,'app':_0x77b9('0xbf'),'appdata':_0x3b2782['name']+','+(_0xa58eaf[_0x77b9('0x97')][_0x77b9('0xc0')]||0xa),'interval':_0x77b9('0xb9')});_0xa58eaf[_0x77b9('0xc1')]=!![];}return respondWithRpcPromise('Start',_0x77b9('0xc2'),_0xa58eaf);});}return respondWithRpcPromise(_0x77b9('0xc3'),_0x77b9('0xc2'),_0xa58eaf);})['then'](function(_0x2989eb){respondWithRpcPromise(_0x77b9('0xc4'),_0x77b9('0xc4'),{'event':'notify','message':_0x2989eb},client9002);return _0x2989eb;})[_0x77b9('0x15')](respondWithResult(_0x5e64da,null))['catch'](handleError(_0x5e64da,null));};exports[_0x77b9('0xc5')]=function(_0x11e33d,_0x223d13){var _0x3019be,_0x5007ba,_0x26594f;var _0xf9d164=[];var _0x4cfd95={};var _0x1e0837=_0x11e33d[_0x77b9('0xc6')]||[];var _0xdb0549=[];var _0x11f42a;return db[_0x77b9('0x82')]['describe']()[_0x77b9('0x15')](function(_0xe253b3){if(!_0xe253b3){throw new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))]('no\x20available\x20attributes');}_0xf9d164=_['difference'](_[_0x77b9('0x4b')](_0xe253b3),[_0x77b9('0x85'),_0x77b9('0x86'),'CompanyId',_0x77b9('0x88')]);if(_0x11e33d[_0x77b9('0x4e')]['id']){delete _0x11e33d[_0x77b9('0x4e')]['id'];}if(_[_0x77b9('0x75')](_0x11e33d['body'][_0x77b9('0x90')])){throw _0x223d13['status'](0x1f4)[_0x77b9('0x2f')](new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))](_0x77b9('0xc7')));}if(_['isNil'](_0x11e33d[_0x77b9('0x4e')][_0x77b9('0x4e')])||_0x11e33d[_0x77b9('0x4e')][_0x77b9('0x4e')]===''){throw _0x223d13[_0x77b9('0x1f')](0x1f4)[_0x77b9('0x2f')](new db[(_0x77b9('0x89'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x11e33d['body'][_0x77b9('0xc8')])){throw _0x223d13[_0x77b9('0x1f')](0x1f4)[_0x77b9('0x2f')](new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))](_0x77b9('0xc9')+_0xf9d164));}if(!_['includes'](_0xf9d164,_0x11e33d['body'][_0x77b9('0xc8')])){throw _0x223d13[_0x77b9('0x1f')](0x1f4)['send'](new db[(_0x77b9('0x89'))][(_0x77b9('0x8a'))](_0x77b9('0xca')+_0xf9d164));}_0x4cfd95[_0x11e33d['body'][_0x77b9('0xc8')]]=_0x11e33d['body'][_0x77b9('0x90')];})['then'](function(){return db['ChatWebsite'][_0x77b9('0x4c')]({'where':{'id':_0x11e33d[_0x77b9('0x56')]['id']},'include':[{'model':db['CmList'],'as':_0x77b9('0x92')},{'model':db['MailAccount'],'as':_0x77b9('0xcb')}]});})[_0x77b9('0x15')](handleEntityNotFound(_0x223d13,null))[_0x77b9('0x15')](function(_0x5088a3){if(_0x5088a3&&_0x5088a3['List']){_0x5007ba=_0x5088a3;var _0x18efc3=_[_0x77b9('0x9d')](_0x11e33d[_0x77b9('0x4e')],{'firstName':_0x11e33d['body'][_0x77b9('0x90')],'phone':_0x11e33d[_0x77b9('0x4e')]['from'],'ListId':_0x5088a3[_0x77b9('0x88')]});_0x18efc3[_0x11e33d[_0x77b9('0x4e')][_0x77b9('0xc8')]]=_0x11e33d['body']['from'];return db[_0x77b9('0x82')]['findOrCreate']({'where':_0x4cfd95,'defaults':_0x18efc3});}})[_0x77b9('0xb0')](function(_0x485286){if(_0x485286){_0x26594f=_0x485286;var _0x23b1f8=fs[_0x77b9('0xcc')](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0xcd')),_0x77b9('0xce'));var _0x5e6787=ejs[_0x77b9('0xcf')](_0x23b1f8,{'body':_[_0x77b9('0xd0')](_0x11e33d[_0x77b9('0x4e')][_0x77b9('0x4e')]),'bodyTitle':_0x5007ba[_0x77b9('0xd1')]});return db[_0x77b9('0xd2')]['create']({'body':_0x5e6787,'plainBody':htmlToText[_0x77b9('0xd3')](_0x5e6787),'ContactId':_0x485286['id'],'ChatWebsiteId':_0x5007ba['id']});}})[_0x77b9('0x15')](function(_0x355cc9){_0x11f42a=_0x355cc9;if(_0x1e0837[_0x77b9('0x3d')]){var _0x42e52a=_0x1e0837[_0x77b9('0x32')](function(_0x4a2c41){return{'name':_0x4a2c41[_0x77b9('0xd4')],'basename':_0x4a2c41[_0x77b9('0x67')],'type':_0x4a2c41[_0x77b9('0xd5')],'ChatOfflineMessageId':_0x355cc9['id']};});_0xdb0549=_0x42e52a[_0x77b9('0x32')](_0x4a639d=>{var _0x572cdf={'filename':_0x4a639d[_0x77b9('0x2e')],'path':path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0xd6'),'files',_0x77b9('0xd7'),'offline-chat',_0x4a639d[_0x77b9('0xd8')])};return _0x572cdf;});if(!_0x5007ba[_0x77b9('0xd9')]){return db[_0x77b9('0xda')]['transaction'](function(_0x216945){return db[_0x77b9('0xdb')]['bulkCreate'](_0x42e52a,{'transaction':_0x216945});});}}})['then'](function(){if(_0x11f42a){_0x3019be=_0x11f42a;return db[_0x77b9('0xcb')][_0x77b9('0x5c')]({'where':{'service':!![]},'include':[{'model':db[_0x77b9('0xdc')],'as':_0x77b9('0xdd'),'raw':!![],'include':[{'model':db[_0x77b9('0xde')],'as':_0x77b9('0xde'),'raw':!![]}]}]});}})[_0x77b9('0x15')](function(_0x574c84){if(_0x574c84&&_0x574c84[_0x77b9('0xdd')]&&_0x5007ba['forwardOffline']&&_0x5007ba[_0x77b9('0xdf')]){var _0x41a0eb=_0x574c84[_0x77b9('0xe0')]();return respondWithRpcPromise(_0x77b9('0xe1'),'sendMail',{'account':_0x41a0eb,'message':{'from':util[_0x77b9('0xa4')](_0x77b9('0xe2'),_0x574c84[_0x77b9('0x2e')],_0x574c84['email']||_0x574c84['Smtp'][_0x77b9('0x4f')]),'to':_0x5007ba[_0x77b9('0xdf')],'subject':_0x5007ba[_0x77b9('0xe3')],'html':_0x3019be[_0x77b9('0x4e')],'attachments':_0xdb0549}},client9003)[_0x77b9('0x15')](function(){return _0x3019be;})['catch'](function(_0x477ff3){logger['error'](_0x477ff3);});}})['then'](function(){if(_0x5007ba&&_0x5007ba[_0x77b9('0xd9')]&&_0x5007ba['MailAccountId']){var _0x5d0170=[];if(_0x1e0837[_0x77b9('0x3d')]){_0x5d0170=_0x1e0837[_0x77b9('0x32')](function(_0x2235eb){return{'name':_0x2235eb[_0x77b9('0xd4')],'basename':_0x2235eb[_0x77b9('0x67')],'type':_0x2235eb['mimetype'],'ChatOfflineMessageId':_0x11f42a['id']};});}var _0x5372d0;if(!_['isNil'](_0x5007ba[_0x77b9('0xe4')])){var _0x57ac15=_[_0x77b9('0x32')](_0x11e33d[_0x77b9('0x4e')],function(_0x403e6e){return _0x403e6e;});var _0x3ed5af=_[_0x77b9('0xe5')](_0x57ac15)[0x0];var _0x4c1b16=_[_0x77b9('0xe6')](_0x3ed5af,function(_0x90e9b){return _0x90e9b;});_0x5372d0=_0x4c1b16[0x1][_0x5007ba['subjectOffline']];}var _0x158937={'from':_0x26594f[_0x77b9('0xe7')],'firstName':_0x26594f[_0x77b9('0xb2')],'lastName':_0x26594f[_0x77b9('0xe8')],'mapKey':_0x77b9('0xe7'),'message':{'from':_0x26594f[_0x77b9('0xe7')],'to':_0x5007ba[_0x77b9('0xcb')][_0x77b9('0xe7')],'cc':'','subject':_[_0x77b9('0x75')](_0x5372d0)?_0x5007ba['offlineMessageSubject']:_0x5372d0,'messageId':'','sentAt':new Date(),'attach':_0x5d0170[_0x77b9('0x3d')],'attachments':_0x5d0170,'originChannel':_0x77b9('0xe9'),'ChatWebsiteId':_0x5007ba['id'],'ChatOfflineMessageId':_0x3019be['id'],'originTo':_0x5007ba[_0x77b9('0xcb')][_0x77b9('0xe7')]},'body':_0x3019be[_0x77b9('0x4e')]};var _0x3ea74f={'account':{'id':_0x5007ba['MailAccountId']},'body':_0x158937,'log':_0x77b9('0xea')};return respondWithRpcPromise('NotifyMailAccount',_0x77b9('0xeb'),_0x3ea74f,client9001)[_0x77b9('0x15')](function(){return _0x3019be;})[_0x77b9('0x49')](function(_0x2a4c16){logger['error'](_0x2a4c16);});}return;})[_0x77b9('0x15')](function(){if(_0x3019be){return _0x3019be;}})[_0x77b9('0x15')](respondWithResult(_0x223d13,null))[_0x77b9('0x49')](function(_0x5a6acb){logger['error']('catch',_0x5a6acb);for(var _0x1a523c of _0x1e0837){var _0x2aeb16=path[_0x77b9('0x6f')](config[_0x77b9('0x70')],_0x77b9('0xd6'),'files','attachments',_0x77b9('0xec'),_0x1a523c['filename']);fs_extra['remove'](_0x2aeb16)[_0x77b9('0x49')](function(_0x21c2e0){logger[_0x77b9('0x1b')](_0x77b9('0xed'),_0x2aeb16,_0x21c2e0);});}});};exports[_0x77b9('0xee')]=function(_0x2d354e,_0x5751c1){return db['ChatInteraction'][_0x77b9('0x4c')]({'where':{'id':_0x2d354e[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x5751c1,null))[_0x77b9('0x15')](function(_0x3431b6){if(_0x3431b6){return _0x3431b6[_0x77b9('0xee')](_0x2d354e[_0x77b9('0x4e')][_0x77b9('0x62')],_['omit'](_0x2d354e['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x5751c1,null))['catch'](handleError(_0x5751c1,null));};exports[_0x77b9('0xef')]=function(_0x3fc3c5,_0x5a1172){var _0x3dcc89={'raw':![],'where':{}};var _0x5a9272={};var _0x17e3f8={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x77b9('0x5c')]({'where':{'id':_0x3fc3c5[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x5a1172,null))[_0x77b9('0x15')](function(_0x37c65d){if(_0x37c65d){_0x5a9272[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0xac')][_0x77b9('0x34')]);_0x5a9272[_0x77b9('0x38')]=_[_0x77b9('0x4b')](_0x3fc3c5['query']);_0x5a9272[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x5a9272['model'],_0x5a9272[_0x77b9('0x38')]);_0x3dcc89[_0x77b9('0x3b')]=_['intersection'](_0x5a9272[_0x77b9('0x37')],qs['fields'](_0x3fc3c5[_0x77b9('0x38')]['fields']));_0x3dcc89['attributes']=_0x3dcc89[_0x77b9('0x3b')]['length']?_0x3dcc89['attributes']:_0x5a9272['model'];if(!_0x3fc3c5[_0x77b9('0x38')]['hasOwnProperty'](_0x77b9('0x3e'))){_0x3dcc89['limit']=qs['limit'](_0x3fc3c5[_0x77b9('0x38')][_0x77b9('0x23')]);_0x3dcc89[_0x77b9('0x21')]=qs[_0x77b9('0x21')](_0x3fc3c5[_0x77b9('0x38')][_0x77b9('0x21')]);}_0x3dcc89[_0x77b9('0x3f')]=qs['sort'](_0x3fc3c5[_0x77b9('0x38')][_0x77b9('0x40')]);_0x3dcc89[_0x77b9('0x41')]=qs[_0x77b9('0x39')](_[_0x77b9('0x5e')](_0x3fc3c5['query'],_0x5a9272[_0x77b9('0x39')]));_0x3dcc89[_0x77b9('0x41')]['ChatWebsiteId']=_0x37c65d['id'];if(_0x3fc3c5['query']['filter']){_0x3dcc89[_0x77b9('0x41')]=_['merge'](_0x3dcc89['where'],{'$or':_[_0x77b9('0x32')](_0x3dcc89['attributes'],function(_0x25fa1f){var _0x9506ca={};_0x9506ca[_0x25fa1f]={'$like':'%'+_0x3fc3c5[_0x77b9('0x38')]['filter']+'%'};return _0x9506ca;})});}_0x3dcc89=_[_0x77b9('0x43')]({},_0x3dcc89,_0x3fc3c5['options']);return db[_0x77b9('0xac')][_0x77b9('0x24')]({'where':_0x3dcc89['where']})[_0x77b9('0x15')](function(_0x3837c6){_0x17e3f8['count']=_0x3837c6;if(_0x3fc3c5[_0x77b9('0x38')]['includeAll']){_0x3dcc89[_0x77b9('0x47')]=[{'model':db['CmContact'],'as':_0x77b9('0xf0'),'required':![]},{'model':db[_0x77b9('0xbc')],'as':_0x77b9('0xf1'),'attributes':[_0x77b9('0x2e'),_0x77b9('0xf2'),_0x77b9('0xf3')],'required':![]},{'model':db[_0x77b9('0xf4')],'as':_0x77b9('0xf5'),'attributes':['id',_0x77b9('0x2e'),_0x77b9('0xf6')],'where':_0x3fc3c5[_0x77b9('0x38')]['tag']?{'id':_0x3fc3c5[_0x77b9('0x38')]['tag']}:undefined,'required':_0x3fc3c5[_0x77b9('0x38')]['tag']?!![]:![]}];}return db[_0x77b9('0xac')][_0x77b9('0x60')](_0x3dcc89);})[_0x77b9('0x15')](function(_0x460806){_0x17e3f8[_0x77b9('0x48')]=_0x460806;return _0x17e3f8;});}})[_0x77b9('0x15')](respondWithFilteredResult(_0x5a1172,_0x3dcc89))[_0x77b9('0x49')](handleError(_0x5a1172,null));};function iftimePromise(_0xe49cb1,_0x39f5d9){return respondWithRpcPromise('Command',_0x77b9('0xf7'),{'command':_0x39f5d9[_0x77b9('0xf8')]?util[_0x77b9('0xa4')](_0x77b9('0xf9'),_0xe49cb1[_0x77b9('0xfa')],_0x39f5d9[_0x77b9('0xf8')]):util[_0x77b9('0xa4')](_0x77b9('0xfb'),_0xe49cb1[_0x77b9('0xfa')])},client9002)[_0x77b9('0x15')](function(_0x1dbe2c){var _0x5c3bd4=_0x1dbe2c&&_0x1dbe2c['indexOf'](_0x77b9('0xfc'))>=0x0?!![]:![];logger[_0x77b9('0x16')](_0x77b9('0xfd'),_0x39f5d9['id'],_0xe49cb1['id'],_0xe49cb1[_0x77b9('0xfa')],_0x5c3bd4?_0x77b9('0xfe'):_0x77b9('0xff'),_0x39f5d9[_0x77b9('0xf8')]?_0x39f5d9['timezone']:'No\x20timezone');return _0x5c3bd4;})[_0x77b9('0x49')](function(_0x3aca27){logger[_0x77b9('0x1b')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x39f5d9['id'],_0xe49cb1['id'],_0xe49cb1[_0x77b9('0xfa')],util[_0x77b9('0x100')](_0x3aca27,{'showHidden':![],'depth':null}),_0x39f5d9[_0x77b9('0xf8')]?_0x39f5d9[_0x77b9('0xf8')]:'No\x20timezone');return![];});}exports[_0x77b9('0xf7')]=function(_0x57fc9b,_0x116620){var _0x1fcbd7=0x0;var _0xc80bd=0x0;var _0x40ec20=![];var _0x89a550;var _0x2c6811;return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x57fc9b[_0x77b9('0x56')]['id']},'include':[{'model':db[_0x77b9('0x101')],'as':_0x77b9('0x101'),'include':[{'model':db['Interval'],'as':_0x77b9('0x102'),'attributes':['id',_0x77b9('0xfa')],'raw':!![]}]}]})[_0x77b9('0x15')](handleEntityNotFound(_0x116620,null))[_0x77b9('0x15')](function(_0xa37e4d){if(_0xa37e4d){_0x89a550=_0xa37e4d;return _0xa37e4d[_0x77b9('0x103')]({'raw':!![]});}})[_0x77b9('0x15')](function(_0x4ba471){if(_0x89a550){if(_0x4ba471){_0x2c6811=_0x4ba471;}}return require(_0x77b9('0x104'))['getLicense']();})[_0x77b9('0x15')](function(_0x43d6fe){if(_0x43d6fe){_0xc80bd=_0x43d6fe['virtual'];_0x40ec20=_0x43d6fe[_0x77b9('0x74')];}})['then'](function(){return db[_0x77b9('0xac')]['count']({'where':{'closed':![]}});})['then'](function(_0x2a8096){_0x1fcbd7=_0x2a8096;if(_0xc80bd&&_0x2a8096>_0xc80bd){return db[_0x77b9('0x105')][_0x77b9('0x5c')]({'where':{'id':0x1}})[_0x77b9('0x15')](function(_0x2a3f90){if(_0x2a3f90){_0x2a3f90['increment']('chatLicenseExceeded');}});}})['then'](function(){if(_0x89a550['Interval']&&_0x89a550['Interval'][_0x77b9('0x102')]){var _0x33ba98=[];for(var _0x49bb78=0x0;_0x49bb78<_0x89a550[_0x77b9('0x101')][_0x77b9('0x102')][_0x77b9('0x3d')];_0x49bb78++){var _0x167fe8=_0x89a550[_0x77b9('0x101')]['Intervals'][_0x49bb78][_0x77b9('0x29')]({'plain':!![]});_0x33ba98[_0x77b9('0xb6')](iftimePromise(_0x167fe8,_0x89a550));}return BPromise['all'](_0x33ba98)[_0x77b9('0x15')](function(_0x196b48){return _[_0x77b9('0x106')](_0x196b48);});}else{return!![];}})[_0x77b9('0x15')](function(_0x58fc85){var _0x17c006=fs[_0x77b9('0xcc')](path[_0x77b9('0x6f')](config[_0x77b9('0x70')],'server/files/chat/iframe.ejs'),_0x77b9('0xce'));var _0x3fa672={'remote':_0x89a550[_0x77b9('0x107')],'query':querystring[_0x77b9('0x1a')](_[_0x77b9('0x43')](_0x89a550['get']({'plain':!![]}),{'customerIp':_0x57fc9b['headers'][_0x77b9('0x108')]||_0x57fc9b[_0x77b9('0x7f')][_0x77b9('0x109')]||_0x57fc9b[_0x77b9('0x10a')]['remoteAddress']||_0x57fc9b['ip'],'referer':_0x57fc9b[_0x77b9('0x7f')][_0x77b9('0xa2')],'openedInteractions':_0x1fcbd7,'maxInteractions':_0xc80bd,'virtual':_0x40ec20[_0x77b9('0x10b')],'online':_0x58fc85,'custom':_0x40ec20}))['replace'](/'/g,'\x5c\x27')};_0x116620[_0x77b9('0x2f')](ejs[_0x77b9('0xcf')](Mustache[_0x77b9('0xcf')](_0x17c006,_0x3fa672),{'proactiveActions':_0x2c6811,'alignment':_0x89a550[_0x77b9('0x10c')],'verticalAlignment':_0x89a550[_0x77b9('0x10d')],'div_color':_0x89a550[_0x77b9('0xf6')],'labelText':_0x89a550['labelText'],'text_color':_0x89a550['textColor'],'text_button_color':_0x89a550['textButtonColor'],'button_color':_0x89a550[_0x77b9('0x10e')],'background_color':_0x89a550[_0x77b9('0x10f')],'hideWhenOffline':_0x89a550[_0x77b9('0x110')],'interval':_0x89a550[_0x77b9('0x111')]}));})[_0x77b9('0x49')](handleError(_0x116620,null));};exports[_0x77b9('0x112')]=function(_0x141c15,_0x47310a){var _0x103c4a=_0x141c15[_0x77b9('0x56')]['id'];var _0x1d2e19=_0x141c15[_0x77b9('0x4e')];var _0x37740c=0xc8;var _0x582ea5=null;return db[_0x77b9('0xda')][_0x77b9('0x113')]({'isolationLevel':db[_0x77b9('0xda')][_0x77b9('0x114')][_0x77b9('0x115')]['READ_COMMITTED']},function(_0x1a5392){return db[_0x77b9('0x33')][_0x77b9('0x5c')]({'where':{'id':_0x103c4a},'transaction':_0x1a5392})['then'](function(_0x117a39){if(_0x117a39){return db['ChatApplication'][_0x77b9('0x28')]({'where':{'ChatWebsiteId':_0x103c4a},'transaction':_0x1a5392})[_0x77b9('0x15')](function(){var _0x4b1e04=_[_0x77b9('0x32')](_0x1d2e19,function(_0x32519b){_0x32519b['ChatWebsiteId']=_0x103c4a;return _0x32519b;});return db[_0x77b9('0x95')][_0x77b9('0x116')](_0x4b1e04,{'transaction':_0x1a5392});});}else{_0x37740c=0x194;_0x582ea5=[];}});})[_0x77b9('0x15')](function(){if(_0x37740c!==0x194){return db[_0x77b9('0x95')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x103c4a},'order':_0x77b9('0x9b')})['then'](function(_0x4fab1d){_0x582ea5=_0x4fab1d;});}})[_0x77b9('0x49')](function(_0x343f27){_0x37740c=0x1f4;logger[_0x77b9('0x1b')](_0x343f27[_0x77b9('0x2d')]);if(_0x343f27[_0x77b9('0x2e')]){delete _0x343f27[_0x77b9('0x2e')];}_0x582ea5=_0x343f27;})[_0x77b9('0x117')](function(){if(_0x582ea5===null){_0x47310a[_0x77b9('0x1e')](_0x37740c);}else{if(_0x37740c===0x1f4){_0x47310a[_0x77b9('0x1f')](_0x37740c)['send'](_0x582ea5);}else{_0x47310a[_0x77b9('0x1f')](_0x37740c)['json'](_0x582ea5);}}});};exports[_0x77b9('0x118')]=function(_0x10f9f0,_0x542858){var _0x3fc0a5={};var _0x3ed907={};var _0x3360d2;var _0x442bae;return db[_0x77b9('0x33')][_0x77b9('0x5c')]({'where':{'id':_0x10f9f0['params']['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x542858,null))['then'](function(_0x2274b7){if(_0x2274b7){_0x3360d2=_0x2274b7;_0x3ed907[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0x95')][_0x77b9('0x34')]);_0x3ed907[_0x77b9('0x38')]=_[_0x77b9('0x4b')](_0x10f9f0[_0x77b9('0x38')]);_0x3ed907[_0x77b9('0x39')]=_['intersection'](_0x3ed907[_0x77b9('0x37')],_0x3ed907[_0x77b9('0x38')]);_0x3fc0a5[_0x77b9('0x3b')]=_[_0x77b9('0x3a')](_0x3ed907[_0x77b9('0x37')],qs[_0x77b9('0x3c')](_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x3c')]));_0x3fc0a5[_0x77b9('0x3b')]=_0x3fc0a5[_0x77b9('0x3b')]['length']?_0x3fc0a5[_0x77b9('0x3b')]:_0x3ed907['model'];_0x3fc0a5[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x40')]);_0x3fc0a5[_0x77b9('0x41')]=qs[_0x77b9('0x39')](_['pick'](_0x10f9f0[_0x77b9('0x38')],_0x3ed907[_0x77b9('0x39')]));if(_0x10f9f0[_0x77b9('0x38')]['filter']){_0x3fc0a5[_0x77b9('0x41')]=_[_0x77b9('0x43')](_0x3fc0a5[_0x77b9('0x41')],{'$or':_[_0x77b9('0x32')](_0x3fc0a5['attributes'],function(_0x21513d){var _0x48ce90={};_0x48ce90[_0x21513d]={'$like':'%'+_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0x48ce90;})});}_0x3fc0a5=_[_0x77b9('0x43')]({},_0x3fc0a5,_0x10f9f0[_0x77b9('0x5f')]);return _0x3360d2[_0x77b9('0x118')](_0x3fc0a5);}})[_0x77b9('0x15')](function(_0x2c4e9c){if(_0x2c4e9c){_0x442bae=_0x2c4e9c[_0x77b9('0x3d')];if(!_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x5d')](_0x77b9('0x3e'))){_0x3fc0a5['limit']=qs[_0x77b9('0x23')](_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x23')]);_0x3fc0a5[_0x77b9('0x21')]=qs['offset'](_0x10f9f0[_0x77b9('0x38')][_0x77b9('0x21')]);}return _0x3360d2['getApplications'](_0x3fc0a5);}})['then'](function(_0xbae88e){if(_0xbae88e){return _0xbae88e?{'count':_0x442bae,'rows':_0xbae88e}:null;}})[_0x77b9('0x15')](respondWithResult(_0x542858,null))[_0x77b9('0x49')](handleError(_0x542858,null));};exports[_0x77b9('0x119')]=function(_0x15e2a6,_0x14acab){return db[_0x77b9('0x11a')][_0x77b9('0x4c')]({'where':{'id':_0x15e2a6[_0x77b9('0x56')]['id']}})['then'](handleEntityNotFound(_0x14acab,null))[_0x77b9('0x15')](function(_0x1e3937){if(_0x1e3937){return _0x1e3937['addProactiveActions'](_0x15e2a6[_0x77b9('0x4e')][_0x77b9('0x62')],_['omit'](_0x15e2a6[_0x77b9('0x4e')],[_0x77b9('0x62'),'id'])||{});}})[_0x77b9('0x15')](respondWithResult(_0x14acab,null))[_0x77b9('0x49')](handleError(_0x14acab,null));};exports[_0x77b9('0x103')]=function(_0x294c17,_0x3055ac){var _0x4f6b8a={};var _0x50ce9d={};var _0x47a328;var _0x3938ce;return db['ChatWebsite'][_0x77b9('0x5c')]({'where':{'id':_0x294c17[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x3055ac,null))[_0x77b9('0x15')](function(_0x408a8b){if(_0x408a8b){_0x47a328=_0x408a8b;_0x50ce9d[_0x77b9('0x37')]=_['keys'](db[_0x77b9('0x11b')][_0x77b9('0x34')]);_0x50ce9d['query']=_['keys'](_0x294c17[_0x77b9('0x38')]);_0x50ce9d[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x50ce9d['model'],_0x50ce9d[_0x77b9('0x38')]);_0x4f6b8a[_0x77b9('0x3b')]=_[_0x77b9('0x3a')](_0x50ce9d[_0x77b9('0x37')],qs['fields'](_0x294c17[_0x77b9('0x38')][_0x77b9('0x3c')]));_0x4f6b8a[_0x77b9('0x3b')]=_0x4f6b8a['attributes'][_0x77b9('0x3d')]?_0x4f6b8a[_0x77b9('0x3b')]:_0x50ce9d['model'];_0x4f6b8a[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x294c17['query'][_0x77b9('0x40')]);_0x4f6b8a[_0x77b9('0x41')]=qs['filters'](_['pick'](_0x294c17[_0x77b9('0x38')],_0x50ce9d['filters']));if(_0x294c17[_0x77b9('0x38')][_0x77b9('0x42')]){_0x4f6b8a['where']=_['merge'](_0x4f6b8a['where'],{'$or':_['map'](_0x4f6b8a[_0x77b9('0x3b')],function(_0xd6f1cc){var _0x2ea7ef={};_0x2ea7ef[_0xd6f1cc]={'$like':'%'+_0x294c17[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0x2ea7ef;})});}_0x4f6b8a=_[_0x77b9('0x43')]({},_0x4f6b8a,_0x294c17[_0x77b9('0x5f')]);return _0x47a328['getProactiveActions'](_0x4f6b8a);}})[_0x77b9('0x15')](function(_0x317c30){if(_0x317c30){_0x3938ce=_0x317c30[_0x77b9('0x3d')];if(!_0x294c17[_0x77b9('0x38')][_0x77b9('0x5d')](_0x77b9('0x3e'))){_0x4f6b8a[_0x77b9('0x23')]=qs[_0x77b9('0x23')](_0x294c17['query'][_0x77b9('0x23')]);_0x4f6b8a[_0x77b9('0x21')]=qs[_0x77b9('0x21')](_0x294c17[_0x77b9('0x38')]['offset']);}return _0x47a328[_0x77b9('0x103')](_0x4f6b8a);}})[_0x77b9('0x15')](function(_0x31d580){if(_0x31d580){return _0x31d580?{'count':_0x3938ce,'rows':_0x31d580}:null;}})[_0x77b9('0x15')](respondWithResult(_0x3055ac,null))[_0x77b9('0x49')](handleError(_0x3055ac,null));};exports[_0x77b9('0x11c')]=function(_0x66595d,_0x3a59b1){var _0x2dc83a=_0x66595d[_0x77b9('0x38')][_0x77b9('0x11d')]==='false'?_0x77b9('0x11e'):_0x77b9('0x11f');return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'attributes':['id',_0x2dc83a],'where':{'id':_0x66595d[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x3a59b1,null))['then'](function(_0xfa2d80){if(_0xfa2d80){var _0x380f8a=_0xfa2d80[_0x2dc83a];var _0x23d3cd=_0x380f8a&&_0x380f8a[_0x77b9('0x120')]?_0x380f8a['items']:[];_0x3a59b1[_0x77b9('0x2f')]({'fromKey':_[_0x77b9('0x75')](_0x380f8a[_0x77b9('0x121')])?undefined:_0x380f8a[_0x77b9('0x121')],'count':_0x23d3cd[_0x77b9('0x3d')],'rows':_0x23d3cd});}})[_0x77b9('0x49')](handleError(_0x3a59b1,null));};exports[_0x77b9('0x122')]=function(_0x502a78,_0x3bff67){var _0x4aa1f6={'raw':![],'where':{}};var _0x3f41c5={};var _0xc5e6fe={'count':0x0,'rows':[]};return db[_0x77b9('0x33')][_0x77b9('0x5c')]({'where':{'id':_0x502a78[_0x77b9('0x56')]['id']}})['then'](handleEntityNotFound(_0x3bff67,null))[_0x77b9('0x15')](function(_0x4993c3){if(_0x4993c3){_0x3f41c5[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0xd2')][_0x77b9('0x34')]);_0x3f41c5[_0x77b9('0x38')]=_[_0x77b9('0x4b')](_0x502a78[_0x77b9('0x38')]);_0x3f41c5[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x3f41c5[_0x77b9('0x37')],_0x3f41c5[_0x77b9('0x38')]);_0x4aa1f6[_0x77b9('0x3b')]=_[_0x77b9('0x3a')](_0x3f41c5[_0x77b9('0x37')],qs[_0x77b9('0x3c')](_0x502a78['query'][_0x77b9('0x3c')]));_0x4aa1f6[_0x77b9('0x3b')]=_0x4aa1f6['attributes'][_0x77b9('0x3d')]?_0x4aa1f6['attributes']:_0x3f41c5[_0x77b9('0x37')];if(!_0x502a78[_0x77b9('0x38')]['hasOwnProperty'](_0x77b9('0x3e'))){_0x4aa1f6[_0x77b9('0x23')]=qs[_0x77b9('0x23')](_0x502a78['query'][_0x77b9('0x23')]);_0x4aa1f6[_0x77b9('0x21')]=qs['offset'](_0x502a78[_0x77b9('0x38')][_0x77b9('0x21')]);}_0x4aa1f6[_0x77b9('0x3f')]=qs['sort'](_0x502a78[_0x77b9('0x38')][_0x77b9('0x40')]);_0x4aa1f6[_0x77b9('0x41')]=qs[_0x77b9('0x39')](_[_0x77b9('0x5e')](_0x502a78['query'],_0x3f41c5['filters']));_0x4aa1f6[_0x77b9('0x41')][_0x77b9('0x59')]=_0x4993c3['id'];if(_0x502a78[_0x77b9('0x38')]['filter']){_0x4aa1f6[_0x77b9('0x41')]=_[_0x77b9('0x43')](_0x4aa1f6['where'],{'$or':_[_0x77b9('0x32')](_0x4aa1f6[_0x77b9('0x3b')],function(_0x2e945a){var _0x950d8e={};_0x950d8e[_0x2e945a]={'$like':'%'+_0x502a78[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0x950d8e;})});}_0x4aa1f6=_[_0x77b9('0x43')]({},_0x4aa1f6,_0x502a78[_0x77b9('0x5f')]);return db['ChatOfflineMessage'][_0x77b9('0x24')]({'where':_0x4aa1f6[_0x77b9('0x41')]})[_0x77b9('0x15')](function(_0x51a305){_0xc5e6fe['count']=_0x51a305;if(_0x502a78[_0x77b9('0x38')]['includeAll']){_0x4aa1f6['include']=[{'all':!![]}];}else{_0x4aa1f6[_0x77b9('0x47')]=[{'model':db['CmContact'],'as':_0x77b9('0xf0'),'required':![]},{'model':db[_0x77b9('0xdb')],'as':_0x77b9('0x123'),'required':![]}];}return db[_0x77b9('0xd2')]['findAll'](_0x4aa1f6);})[_0x77b9('0x15')](function(_0x597c74){_0xc5e6fe[_0x77b9('0x48')]=_0x597c74;return _0xc5e6fe;});}})[_0x77b9('0x15')](respondWithFilteredResult(_0x3bff67,_0x4aa1f6))[_0x77b9('0x49')](handleError(_0x3bff67,null));};exports[_0x77b9('0x124')]=function(_0x19e424,_0x5c8726){return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x19e424['params']['id']}})['then'](handleEntityNotFound(_0x5c8726,null))['then'](function(_0x3fd9b1){if(_0x3fd9b1){return _0x3fd9b1[_0x77b9('0x124')](_0x19e424[_0x77b9('0x4e')][_0x77b9('0x62')],_['omit'](_0x19e424[_0x77b9('0x4e')],[_0x77b9('0x62'),'id'])||{})[_0x77b9('0xb0')](function(_0x2620e9){for(var _0x34976d=0x0;_0x34976d<_0x19e424['body'][_0x77b9('0x62')]['length'];_0x34976d+=0x1){socket[_0x77b9('0x125')](_0x77b9('0x126'),{'UserId':Number(_0x19e424[_0x77b9('0x4e')]['ids'][_0x34976d]),'ChatWebsiteId':Number(_0x19e424['params']['id'])});}return _0x2620e9;});}})[_0x77b9('0x15')](respondWithResult(_0x5c8726,null))[_0x77b9('0x49')](handleError(_0x5c8726,null));};exports[_0x77b9('0x127')]=function(_0x27886c,_0x12f96f){return db[_0x77b9('0x33')][_0x77b9('0x4c')]({'where':{'id':_0x27886c[_0x77b9('0x56')]['id']}})['then'](handleEntityNotFound(_0x12f96f,null))[_0x77b9('0x15')](function(_0x3a0ae1){if(_0x3a0ae1){return _0x3a0ae1[_0x77b9('0x127')](_0x27886c[_0x77b9('0x38')][_0x77b9('0x62')])[_0x77b9('0x15')](function(){if(_[_0x77b9('0x128')](_0x27886c['query'][_0x77b9('0x62')])){for(var _0x2d6ef5=0x0;_0x2d6ef5<_0x27886c['query']['ids'][_0x77b9('0x3d')];_0x2d6ef5+=0x1){socket['emit'](_0x77b9('0x129'),{'UserId':Number(_0x27886c[_0x77b9('0x38')][_0x77b9('0x62')][_0x2d6ef5]),'ChatWebsiteId':Number(_0x27886c[_0x77b9('0x56')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x27886c['query'][_0x77b9('0x62')]),'ChatWebsiteId':Number(_0x27886c[_0x77b9('0x56')]['id'])});}});}})[_0x77b9('0x15')](respondWithStatusCode(_0x12f96f,null))[_0x77b9('0x49')](handleError(_0x12f96f,null));};exports[_0x77b9('0x12a')]=function(_0x2e2409,_0x248303){var _0x14e2f7={};var _0x4c1b3d={};var _0x322d0a;var _0x2085e0;return db[_0x77b9('0x33')][_0x77b9('0x5c')]({'where':{'id':_0x2e2409[_0x77b9('0x56')]['id']}})[_0x77b9('0x15')](handleEntityNotFound(_0x248303,null))[_0x77b9('0x15')](function(_0x257d92){if(_0x257d92){_0x322d0a=_0x257d92;_0x4c1b3d[_0x77b9('0x37')]=_[_0x77b9('0x4b')](db[_0x77b9('0xbc')]['rawAttributes']);_0x4c1b3d[_0x77b9('0x38')]=_['keys'](_0x2e2409[_0x77b9('0x38')]);_0x4c1b3d[_0x77b9('0x39')]=_[_0x77b9('0x3a')](_0x4c1b3d[_0x77b9('0x37')],_0x4c1b3d[_0x77b9('0x38')]);_0x14e2f7['attributes']=_[_0x77b9('0x3a')](_0x4c1b3d[_0x77b9('0x37')],qs[_0x77b9('0x3c')](_0x2e2409[_0x77b9('0x38')]['fields']));_0x14e2f7[_0x77b9('0x3b')]=_0x14e2f7[_0x77b9('0x3b')]['length']?_0x14e2f7['attributes']:_0x4c1b3d[_0x77b9('0x37')];_0x14e2f7[_0x77b9('0x3f')]=qs[_0x77b9('0x40')](_0x2e2409['query'][_0x77b9('0x40')]);_0x14e2f7[_0x77b9('0x41')]=qs['filters'](_['pick'](_0x2e2409[_0x77b9('0x38')],_0x4c1b3d[_0x77b9('0x39')]));if(_0x2e2409[_0x77b9('0x38')][_0x77b9('0x42')]){_0x14e2f7['where']=_[_0x77b9('0x43')](_0x14e2f7[_0x77b9('0x41')],{'$or':_[_0x77b9('0x32')](_0x14e2f7[_0x77b9('0x3b')],function(_0x61ed6b){var _0x8e3bd0={};_0x8e3bd0[_0x61ed6b]={'$like':'%'+_0x2e2409[_0x77b9('0x38')][_0x77b9('0x42')]+'%'};return _0x8e3bd0;})});}_0x14e2f7=_[_0x77b9('0x43')]({},_0x14e2f7,_0x2e2409['options']);return _0x322d0a['getAgents'](_0x14e2f7);}})[_0x77b9('0x15')](function(_0x305b69){if(_0x305b69){_0x2085e0=_0x305b69['length'];if(!_0x2e2409[_0x77b9('0x38')]['hasOwnProperty'](_0x77b9('0x3e'))){_0x14e2f7['limit']=qs[_0x77b9('0x23')](_0x2e2409[_0x77b9('0x38')][_0x77b9('0x23')]);_0x14e2f7['offset']=qs[_0x77b9('0x21')](_0x2e2409[_0x77b9('0x38')][_0x77b9('0x21')]);}return _0x322d0a[_0x77b9('0x12a')](_0x14e2f7);}})['then'](function(_0x30025a){if(_0x30025a){return _0x30025a?{'count':_0x2085e0,'rows':_0x30025a}:null;}})[_0x77b9('0x15')](respondWithResult(_0x248303,null))['catch'](handleError(_0x248303,null));};
\ No newline at end of file
index 6bf60bf..7cbfa2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be6=['hook','../../mysqldb','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4be6,0xb5));var _0x64be=function(_0x368cd6,_0x275b63){_0x368cd6=_0x368cd6-0x0;var _0x16161d=_0x4be6[_0x368cd6];return _0x16161d;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x64be('0x0'))['db'][_0x64be('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x64be('0x2')](0x0);var events={'afterCreate':_0x64be('0x3'),'afterUpdate':_0x64be('0x4'),'afterDestroy':_0x64be('0x5')};function emitEvent(_0xebbf1b){return function(_0x85d7a2,_0x217ce6,_0x311160){ChatWebsiteEvents['emit'](_0xebbf1b+':'+_0x85d7a2['id'],_0x85d7a2);ChatWebsiteEvents[_0x64be('0x6')](_0xebbf1b,_0x85d7a2);_0x311160(null);};}for(var e in events){if(events[_0x64be('0x7')](e)){var event=events[e];ChatWebsite[_0x64be('0x8')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x56e6=['../../mysqldb','ChatWebsite','setMaxListeners','save','update','emit','hasOwnProperty','exports','events'];(function(_0x36412b,_0x152aad){var _0x4a7095=function(_0x5aca44){while(--_0x5aca44){_0x36412b['push'](_0x36412b['shift']());}};_0x4a7095(++_0x152aad);}(_0x56e6,0x6b));var _0x656e=function(_0x4a6459,_0x34ee28){_0x4a6459=_0x4a6459-0x0;var _0x391544=_0x56e6[_0x4a6459];return _0x391544;};'use strict';var EventEmitter=require(_0x656e('0x0'));var ChatWebsite=require(_0x656e('0x1'))['db'][_0x656e('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x656e('0x3')](0x0);var events={'afterCreate':_0x656e('0x4'),'afterUpdate':_0x656e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x40a874){return function(_0x23c947,_0xe7d540,_0x162ffe){ChatWebsiteEvents[_0x656e('0x6')](_0x40a874+':'+_0x23c947['id'],_0x23c947);ChatWebsiteEvents[_0x656e('0x6')](_0x40a874,_0x23c947);_0x162ffe(null);};}for(var e in events){if(events[_0x656e('0x7')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0x656e('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index ed11823..a1bec1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa770=['../../config/environment','./chatWebsite.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x327b5f,_0x131c53){var _0x21879d=function(_0x2277c6){while(--_0x2277c6){_0x327b5f['push'](_0x327b5f['shift']());}};_0x21879d(++_0x131c53);}(_0xa770,0x10b));var _0x0a77=function(_0x30e2fa,_0x5aa8fa){_0x30e2fa=_0x30e2fa-0x0;var _0x187bca=_0xa770[_0x30e2fa];return _0x187bca;};'use strict';var _=require(_0x0a77('0x0'));var util=require(_0x0a77('0x1'));var logger=require(_0x0a77('0x2'))(_0x0a77('0x3'));var moment=require(_0x0a77('0x4'));var BPromise=require(_0x0a77('0x5'));var rp=require(_0x0a77('0x6'));var fs=require('fs');var path=require(_0x0a77('0x7'));var rimraf=require(_0x0a77('0x8'));var config=require(_0x0a77('0x9'));var attributes=require(_0x0a77('0xa'));module['exports']=function(_0x1335ca,_0x1db4a8){return _0x1335ca[_0x0a77('0xb')]('ChatWebsite',attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa2ef=['../../config/logger','api','moment','path','rimraf','exports','define','ChatWebsite','util'];(function(_0x5da27f,_0x504b76){var _0x54a3fb=function(_0x3b65a8){while(--_0x3b65a8){_0x5da27f['push'](_0x5da27f['shift']());}};_0x54a3fb(++_0x504b76);}(_0xa2ef,0x15e));var _0xfa2e=function(_0x4505da,_0x328eea){_0x4505da=_0x4505da-0x0;var _0x191417=_0xa2ef[_0x4505da];return _0x191417;};'use strict';var _=require('lodash');var util=require(_0xfa2e('0x0'));var logger=require(_0xfa2e('0x1'))(_0xfa2e('0x2'));var moment=require(_0xfa2e('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa2e('0x4'));var rimraf=require(_0xfa2e('0x5'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module[_0xfa2e('0x6')]=function(_0x588f59,_0x25c484){return _0x588f59[_0xfa2e('0x7')](_0xfa2e('0x8'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71059f3..9f612a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd682=['../../config/logger','rpc','../../config/environment','client','defaults','localhost','socket.io-emitter','redis','request','then','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','code','error','message','ChatWebsite,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0xd682,0xe4));var _0x2d68=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xd682[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x2d68('0x0'));var util=require(_0x2d68('0x1'));var moment=require(_0x2d68('0x2'));var BPromise=require('bluebird');var rs=require(_0x2d68('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d68('0x4'))['db'];var utils=require(_0x2d68('0x5'));var logger=require(_0x2d68('0x6'))(_0x2d68('0x7'));var config=require(_0x2d68('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2d68('0x9')]['http']({'port':0x232a});config['redis']=_[_0x2d68('0xa')](config['redis'],{'host':_0x2d68('0xb'),'port':0x18eb});var socket=require(_0x2d68('0xc'))(new Redis(config[_0x2d68('0xd')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x1f32fe,_0x5367af,_0x5e36e6){return new BPromise(function(_0x626021,_0x3c445f){return client[_0x2d68('0xe')](_0x1f32fe,_0x5e36e6)[_0x2d68('0xf')](function(_0x43233a){logger[_0x2d68('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x5367af,_0x2d68('0x11'));logger[_0x2d68('0x12')](_0x2d68('0x13'),_0x5367af,_0x2d68('0x11'),JSON['stringify'](_0x43233a));if(_0x43233a['error']){if(_0x43233a['error'][_0x2d68('0x14')]===0x1f4){logger[_0x2d68('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x5367af,_0x43233a[_0x2d68('0x15')][_0x2d68('0x16')]);return _0x3c445f(_0x43233a[_0x2d68('0x15')]['message']);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x5367af,_0x43233a[_0x2d68('0x15')][_0x2d68('0x16')]);return _0x626021(_0x43233a[_0x2d68('0x15')][_0x2d68('0x16')]);}else{logger[_0x2d68('0x10')](_0x2d68('0x17'),_0x5367af,_0x2d68('0x11'));_0x626021(_0x43233a[_0x2d68('0x18')]['message']);}})[_0x2d68('0x19')](function(_0x11b1d5){logger[_0x2d68('0x15')](_0x2d68('0x17'),_0x5367af,_0x11b1d5);_0x3c445f(_0x11b1d5);});});}
\ No newline at end of file
+var _0xb43e=['ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./chatWebsite.socket','register','then','info'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xb43e,0x78));var _0xeb43=function(_0x2769e8,_0x8a47e0){_0x2769e8=_0x2769e8-0x0;var _0x158d54=_0xb43e[_0x2769e8];return _0x158d54;};'use strict';var _=require(_0xeb43('0x0'));var util=require(_0xeb43('0x1'));var moment=require(_0xeb43('0x2'));var BPromise=require(_0xeb43('0x3'));var rs=require(_0xeb43('0x4'));var fs=require('fs');var Redis=require(_0xeb43('0x5'));var db=require(_0xeb43('0x6'))['db'];var utils=require(_0xeb43('0x7'));var logger=require('../../config/logger')(_0xeb43('0x8'));var config=require(_0xeb43('0x9'));var jayson=require(_0xeb43('0xa'));var client=jayson['client'][_0xeb43('0xb')]({'port':0x232a});config['redis']=_[_0xeb43('0xc')](config['redis'],{'host':_0xeb43('0xd'),'port':0x18eb});var socket=require(_0xeb43('0xe'))(new Redis(config[_0xeb43('0xf')]));require(_0xeb43('0x10'))[_0xeb43('0x11')](socket);function respondWithRpcPromise(_0x7ef440,_0x37181f,_0x41bcda){return new BPromise(function(_0x4a07d5,_0x5546c2){return client['request'](_0x7ef440,_0x41bcda)[_0xeb43('0x12')](function(_0x36f07c){logger[_0xeb43('0x13')](_0xeb43('0x14'),_0x37181f,_0xeb43('0x15'));logger[_0xeb43('0x16')](_0xeb43('0x17'),_0x37181f,_0xeb43('0x15'),JSON[_0xeb43('0x18')](_0x36f07c));if(_0x36f07c[_0xeb43('0x19')]){if(_0x36f07c[_0xeb43('0x19')]['code']===0x1f4){logger[_0xeb43('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x37181f,_0x36f07c[_0xeb43('0x19')]['message']);return _0x5546c2(_0x36f07c[_0xeb43('0x19')][_0xeb43('0x1a')]);}logger[_0xeb43('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x37181f,_0x36f07c[_0xeb43('0x19')]['message']);return _0x4a07d5(_0x36f07c[_0xeb43('0x19')][_0xeb43('0x1a')]);}else{logger['info'](_0xeb43('0x14'),_0x37181f,_0xeb43('0x15'));_0x4a07d5(_0x36f07c[_0xeb43('0x1b')]['message']);}})['catch'](function(_0x35884c){logger[_0xeb43('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x37181f,_0x35884c);_0x5546c2(_0x35884c);});});}
\ No newline at end of file
index a55e423..dea25c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a2c=['update','emit','register','length','chatWebsite:','save','remove'];(function(_0x5e6bc5,_0x33ddf9){var _0x131f40=function(_0x2c76b1){while(--_0x2c76b1){_0x5e6bc5['push'](_0x5e6bc5['shift']());}};_0x131f40(++_0x33ddf9);}(_0x6a2c,0x67));var _0xc6a2=function(_0x19f201,_0x20677b){_0x19f201=_0x19f201-0x0;var _0x586554=_0x6a2c[_0x19f201];return _0x586554;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0xc6a2('0x0'),_0xc6a2('0x1'),_0xc6a2('0x2')];function createListener(_0x9f69d6,_0x2eaba2){return function(_0x204345){_0x2eaba2[_0xc6a2('0x3')](_0x9f69d6,_0x204345);};}function removeListener(_0x2ac3d6,_0x478bf2){return function(){ChatWebsiteEvents['removeListener'](_0x2ac3d6,_0x478bf2);};}exports[_0xc6a2('0x4')]=function(_0x273b0a){for(var _0x1fa80b=0x0,_0xf293f6=events[_0xc6a2('0x5')];_0x1fa80b<_0xf293f6;_0x1fa80b++){var _0x4a7ae3=events[_0x1fa80b];var _0x6a76e6=createListener(_0xc6a2('0x6')+_0x4a7ae3,_0x273b0a);ChatWebsiteEvents['on'](_0x4a7ae3,_0x6a76e6);}};
\ No newline at end of file
+var _0x32bc=['chatWebsite:','update','emit','removeListener','register','length'];(function(_0x10c4eb,_0x20e1f8){var _0x33f27d=function(_0x2c622b){while(--_0x2c622b){_0x10c4eb['push'](_0x10c4eb['shift']());}};_0x33f27d(++_0x20e1f8);}(_0x32bc,0x9d));var _0xc32b=function(_0x17ed33,_0x4d5af8){_0x17ed33=_0x17ed33-0x0;var _0x54d293=_0x32bc[_0x17ed33];return _0x54d293;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=['save','remove',_0xc32b('0x0')];function createListener(_0x9bc28e,_0x23c546){return function(_0xaf682e){_0x23c546[_0xc32b('0x1')](_0x9bc28e,_0xaf682e);};}function removeListener(_0x1deab8,_0x521afe){return function(){ChatWebsiteEvents[_0xc32b('0x2')](_0x1deab8,_0x521afe);};}exports[_0xc32b('0x3')]=function(_0x255175){for(var _0x362594=0x0,_0x4eb7dc=events[_0xc32b('0x4')];_0x362594<_0x4eb7dc;_0x362594++){var _0x5032a7=events[_0x362594];var _0xd0530=createListener(_0xc32b('0x5')+_0x5032a7,_0x255175);ChatWebsiteEvents['on'](_0x5032a7,_0xd0530);}};
\ No newline at end of file
index 64207d3..c1fe29d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b05=['update','delete','removeDispositions','removeAnswers','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getAvatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getApplications','getProactiveActions','/:id/fields','getFields','/:id/users','getAgents','post','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','%s-%s','now','originalname','file','addLogo','format','addAvatar','server/files/images/avatars/','/:id/customer_avatar','addCustomerAvatar','single','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','offline','/:id/interactions','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','addAgents','put'];(function(_0x236b13,_0xd848df){var _0x4def23=function(_0x804f56){while(--_0x804f56){_0x236b13['push'](_0x236b13['shift']());}};_0x4def23(++_0xd848df);}(_0x5b05,0x91));var _0x55b0=function(_0x3c54f4,_0x52963a){_0x3c54f4=_0x3c54f4-0x0;var _0x3b4b94=_0x5b05[_0x3c54f4];return _0x3b4b94;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x55b0('0x0'));var timeout=require(_0x55b0('0x1'));var express=require(_0x55b0('0x2'));var router=express[_0x55b0('0x3')]();var fs_extra=require(_0x55b0('0x4'));var auth=require(_0x55b0('0x5'));var interaction=require(_0x55b0('0x6'));var config=require('../../config/environment');var controller=require(_0x55b0('0x7'));router[_0x55b0('0x8')]('/',auth[_0x55b0('0x9')](),controller[_0x55b0('0xa')]);router[_0x55b0('0x8')](_0x55b0('0xb'),auth[_0x55b0('0x9')](),controller[_0x55b0('0xc')]);router['get'](_0x55b0('0xd'),auth[_0x55b0('0x9')](),controller[_0x55b0('0xe')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x55b0('0xf')]);router[_0x55b0('0x8')](_0x55b0('0x10'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x11')]);router[_0x55b0('0x8')](_0x55b0('0x12'),controller['getLogo']);router[_0x55b0('0x8')]('/:id/avatar',controller[_0x55b0('0x13')]);router[_0x55b0('0x8')]('/:id/customer_avatar',controller[_0x55b0('0x14')]);router[_0x55b0('0x8')](_0x55b0('0x15'),controller[_0x55b0('0x16')]);router[_0x55b0('0x8')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x55b0('0x17')]);router[_0x55b0('0x8')](_0x55b0('0x18'),controller['getSnippet']);router[_0x55b0('0x8')]('/:id/applications',auth['isAuthenticated'](),controller[_0x55b0('0x19')]);router[_0x55b0('0x8')]('/:id/proactive_actions',auth['isAuthenticated'](),controller[_0x55b0('0x1a')]);router[_0x55b0('0x8')](_0x55b0('0x1b'),controller[_0x55b0('0x1c')]);router[_0x55b0('0x8')]('/:id/offline_messages',auth[_0x55b0('0x9')](),controller['getOfflineMessages']);router[_0x55b0('0x8')](_0x55b0('0x1d'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x1e')]);router[_0x55b0('0x1f')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x55b0('0x20'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x21')]);router['post'](_0x55b0('0x10'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x22')]);var upload=multer({'storage':multer[_0x55b0('0x23')]({'destination':function(_0x5b68c8,_0x20ec52,_0x23c345){_0x23c345(null,path[_0x55b0('0x24')](config[_0x55b0('0x25')],_0x55b0('0x26')));},'filename':function(_0x5c6374,_0x85f35f,_0x5d2315){_0x5d2315(null,util['format'](_0x55b0('0x27'),Date[_0x55b0('0x28')](),_0x85f35f[_0x55b0('0x29')]));}})});router['post'](_0x55b0('0x12'),upload['single'](_0x55b0('0x2a')),controller[_0x55b0('0x2b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfaccab,_0x1632a4,_0x16d501){_0x16d501(null,path['join'](config['root'],'server/files/images/avatars/'));},'filename':function(_0xd6800e,_0x54ba3c,_0x34f365){_0x34f365(null,util[_0x55b0('0x2c')]('%s-%s',Date[_0x55b0('0x28')](),_0x54ba3c[_0x55b0('0x29')]));}})});router['post']('/:id/avatar',upload['single'](_0x55b0('0x2a')),controller[_0x55b0('0x2d')]);var upload=multer({'storage':multer[_0x55b0('0x23')]({'destination':function(_0x2168c8,_0x2c2675,_0x53132e){_0x53132e(null,path[_0x55b0('0x24')](config['root'],_0x55b0('0x2e')));},'filename':function(_0x2df892,_0x579060,_0x490050){_0x490050(null,util[_0x55b0('0x2c')](_0x55b0('0x27'),Date[_0x55b0('0x28')](),_0x579060[_0x55b0('0x29')]));}})});router[_0x55b0('0x1f')](_0x55b0('0x2f'),upload['single'](_0x55b0('0x2a')),controller[_0x55b0('0x30')]);var upload=multer({'storage':multer[_0x55b0('0x23')]({'destination':function(_0xe8a0e5,_0x271233,_0x2624ab){_0x2624ab(null,path[_0x55b0('0x24')](config[_0x55b0('0x25')],_0x55b0('0x2e')));},'filename':function(_0x4b70a1,_0x30def4,_0x5d59e7){_0x5d59e7(null,util[_0x55b0('0x2c')](_0x55b0('0x27'),Date[_0x55b0('0x28')](),_0x30def4['originalname']));}})});router[_0x55b0('0x1f')](_0x55b0('0x15'),upload[_0x55b0('0x31')](_0x55b0('0x2a')),controller['addSystemAvatar']);router[_0x55b0('0x1f')](_0x55b0('0x32'),controller[_0x55b0('0x33')]);const offlineUploadMulter=multer({'storage':multer[_0x55b0('0x23')]({'destination':function(_0xdaa3f1,_0x591c33,_0x1a9857){const _0x268f60=path[_0x55b0('0x24')](config[_0x55b0('0x25')],_0x55b0('0x34'),_0x55b0('0x35'),_0x55b0('0x36'));fs_extra['ensureDir'](_0x268f60,function(){_0x1a9857(null,_0x268f60);});},'filename':function(_0x2b8474,_0x1f088c,_0x4aa435){const _0x24c5e7=_0x1f088c[_0x55b0('0x29')][_0x55b0('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x452dd7=path[_0x55b0('0x38')](_0x24c5e7);const _0x3b7e26=Date[_0x55b0('0x28')]()+'-'+_0x24c5e7['replace'](_0x452dd7,'')+_0x452dd7;_0x4aa435(null,_0x3b7e26);}})});router[_0x55b0('0x1f')]('/:id/offline',offlineUploadMulter['any'](),controller[_0x55b0('0x39')]);router[_0x55b0('0x1f')](_0x55b0('0x3a'),auth['isAuthenticated'](),controller[_0x55b0('0x3b')]);router[_0x55b0('0x1f')]('/:id/applications',auth[_0x55b0('0x9')](),controller[_0x55b0('0x3c')]);router[_0x55b0('0x1f')](_0x55b0('0x3d'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x3e')]);router[_0x55b0('0x1f')](_0x55b0('0x1d'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x3f')]);router[_0x55b0('0x40')](_0x55b0('0xd'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x41')]);router['delete'](_0x55b0('0xd'),auth[_0x55b0('0x9')](),controller['destroy']);router[_0x55b0('0x42')](_0x55b0('0x20'),auth[_0x55b0('0x9')](),controller[_0x55b0('0x43')]);router[_0x55b0('0x42')](_0x55b0('0x10'),auth['isAuthenticated'](),controller[_0x55b0('0x44')]);router[_0x55b0('0x42')](_0x55b0('0x1d'),auth[_0x55b0('0x9')](),controller['removeAgents']);module[_0x55b0('0x45')]=router;
\ No newline at end of file
+var _0xd721=['../../config/environment','get','isAuthenticated','index','/describe','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','/:id/avatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','/:id/applications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','join','format','now','originalname','single','file','addLogo','root','server/files/images/avatars/','%s-%s','addAvatar','addCustomerAvatar','/:id/notify','notify','server/files','offline-chat','ensureDir','replace','extname','/:id/offline','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x43b616,_0xb842c){var _0xc188db=function(_0x2faaf5){while(--_0x2faaf5){_0x43b616['push'](_0x43b616['shift']());}};_0xc188db(++_0xb842c);}(_0xd721,0xc9));var _0x1d72=function(_0x536aaf,_0x525f36){_0x536aaf=_0x536aaf-0x0;var _0x1a2857=_0xd721[_0x536aaf];return _0x1a2857;};'use strict';var multer=require('multer');var util=require(_0x1d72('0x0'));var path=require('path');var timeout=require(_0x1d72('0x1'));var express=require(_0x1d72('0x2'));var router=express[_0x1d72('0x3')]();var fs_extra=require(_0x1d72('0x4'));var auth=require(_0x1d72('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1d72('0x6'));var controller=require('./chatWebsite.controller');router[_0x1d72('0x7')]('/',auth[_0x1d72('0x8')](),controller[_0x1d72('0x9')]);router[_0x1d72('0x7')](_0x1d72('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x1d72('0x7')]('/:id',auth[_0x1d72('0x8')](),controller[_0x1d72('0xb')]);router[_0x1d72('0x7')](_0x1d72('0xc'),auth[_0x1d72('0x8')](),controller['getDispositions']);router['get'](_0x1d72('0xd'),auth['isAuthenticated'](),controller[_0x1d72('0xe')]);router[_0x1d72('0x7')](_0x1d72('0xf'),controller['getLogo']);router[_0x1d72('0x7')](_0x1d72('0x10'),controller['getAvatar']);router['get'](_0x1d72('0x11'),controller['getCustomerAvatar']);router['get'](_0x1d72('0x12'),controller[_0x1d72('0x13')]);router[_0x1d72('0x7')]('/:id/interactions',auth[_0x1d72('0x8')](),controller[_0x1d72('0x14')]);router[_0x1d72('0x7')](_0x1d72('0x15'),controller['getSnippet']);router[_0x1d72('0x7')](_0x1d72('0x16'),auth[_0x1d72('0x8')](),controller['getApplications']);router[_0x1d72('0x7')]('/:id/proactive_actions',auth['isAuthenticated'](),controller[_0x1d72('0x17')]);router[_0x1d72('0x7')](_0x1d72('0x18'),controller[_0x1d72('0x19')]);router[_0x1d72('0x7')](_0x1d72('0x1a'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x1b')]);router['get'](_0x1d72('0x1c'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x1d')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x1d72('0x1e')]('/:id/dispositions',auth[_0x1d72('0x8')](),controller[_0x1d72('0x1f')]);router[_0x1d72('0x1e')](_0x1d72('0xd'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x20')]);var upload=multer({'storage':multer[_0x1d72('0x21')]({'destination':function(_0x3aab18,_0x110ef1,_0x290804){_0x290804(null,path[_0x1d72('0x22')](config['root'],'server/files/images/logos/'));},'filename':function(_0x5b7775,_0x4feb7d,_0x278ce9){_0x278ce9(null,util[_0x1d72('0x23')]('%s-%s',Date[_0x1d72('0x24')](),_0x4feb7d[_0x1d72('0x25')]));}})});router[_0x1d72('0x1e')]('/:id/logo',upload[_0x1d72('0x26')](_0x1d72('0x27')),controller[_0x1d72('0x28')]);var upload=multer({'storage':multer[_0x1d72('0x21')]({'destination':function(_0x2bf683,_0x232ea4,_0xae0fe1){_0xae0fe1(null,path[_0x1d72('0x22')](config[_0x1d72('0x29')],_0x1d72('0x2a')));},'filename':function(_0x255e5a,_0x4d9835,_0x4f3abb){_0x4f3abb(null,util[_0x1d72('0x23')](_0x1d72('0x2b'),Date['now'](),_0x4d9835['originalname']));}})});router[_0x1d72('0x1e')]('/:id/avatar',upload[_0x1d72('0x26')](_0x1d72('0x27')),controller[_0x1d72('0x2c')]);var upload=multer({'storage':multer[_0x1d72('0x21')]({'destination':function(_0x21cc8f,_0x34038c,_0x332fed){_0x332fed(null,path[_0x1d72('0x22')](config[_0x1d72('0x29')],_0x1d72('0x2a')));},'filename':function(_0x26323f,_0x247313,_0x156486){_0x156486(null,util[_0x1d72('0x23')](_0x1d72('0x2b'),Date[_0x1d72('0x24')](),_0x247313['originalname']));}})});router['post']('/:id/customer_avatar',upload['single']('file'),controller[_0x1d72('0x2d')]);var upload=multer({'storage':multer[_0x1d72('0x21')]({'destination':function(_0x32abf3,_0x3a9d6d,_0x14bf6e){_0x14bf6e(null,path[_0x1d72('0x22')](config[_0x1d72('0x29')],_0x1d72('0x2a')));},'filename':function(_0x55eecc,_0x2ea5de,_0x5cba4b){_0x5cba4b(null,util['format'](_0x1d72('0x2b'),Date[_0x1d72('0x24')](),_0x2ea5de[_0x1d72('0x25')]));}})});router[_0x1d72('0x1e')](_0x1d72('0x12'),upload['single']('file'),controller['addSystemAvatar']);router[_0x1d72('0x1e')](_0x1d72('0x2e'),controller[_0x1d72('0x2f')]);const offlineUploadMulter=multer({'storage':multer[_0x1d72('0x21')]({'destination':function(_0xea29fd,_0x2a56c0,_0x48db3d){const _0x253f1d=path[_0x1d72('0x22')](config[_0x1d72('0x29')],_0x1d72('0x30'),'attachments',_0x1d72('0x31'));fs_extra[_0x1d72('0x32')](_0x253f1d,function(){_0x48db3d(null,_0x253f1d);});},'filename':function(_0x535c03,_0x46de00,_0x1c479e){const _0x4d6222=_0x46de00[_0x1d72('0x25')][_0x1d72('0x33')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x5ae222=path[_0x1d72('0x34')](_0x4d6222);const _0x5ee2bb=Date[_0x1d72('0x24')]()+'-'+_0x4d6222[_0x1d72('0x33')](_0x5ae222,'')+_0x5ae222;_0x1c479e(null,_0x5ee2bb);}})});router[_0x1d72('0x1e')](_0x1d72('0x35'),offlineUploadMulter[_0x1d72('0x36')](),controller[_0x1d72('0x37')]);router[_0x1d72('0x1e')]('/:id/interactions',auth[_0x1d72('0x8')](),controller[_0x1d72('0x38')]);router[_0x1d72('0x1e')](_0x1d72('0x16'),auth['isAuthenticated'](),controller[_0x1d72('0x39')]);router[_0x1d72('0x1e')]('/:id/proactive_actions',auth[_0x1d72('0x8')](),controller[_0x1d72('0x3a')]);router[_0x1d72('0x1e')](_0x1d72('0x1c'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x3b')]);router[_0x1d72('0x3c')]('/:id',auth[_0x1d72('0x8')](),controller[_0x1d72('0x3d')]);router[_0x1d72('0x3e')](_0x1d72('0x3f'),auth['isAuthenticated'](),controller[_0x1d72('0x40')]);router[_0x1d72('0x3e')](_0x1d72('0xc'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x41')]);router['delete'](_0x1d72('0xd'),auth[_0x1d72('0x8')](),controller[_0x1d72('0x42')]);router[_0x1d72('0x3e')](_0x1d72('0x1c'),auth['isAuthenticated'](),controller[_0x1d72('0x43')]);module[_0x1d72('0x44')]=router;
\ No newline at end of file
index b1a72eb..cdb77c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9738=['client-side-logger','expressEndpoint','/client-logs','isAuthenticated','exports','beaver-logger/server','express','../config/environment','env','get'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x9738,0x18b));var _0x8973=function(_0x2dfd36,_0x91520){_0x2dfd36=_0x2dfd36-0x0;var _0x4e4e2d=_0x9738[_0x2dfd36];return _0x4e4e2d;};var beaverLogger=require(_0x8973('0x0'));var express=require(_0x8973('0x1'));var auth=require('../components/auth/service');var config=require(_0x8973('0x2'));var router=express['Router']();var isProduction=config[_0x8973('0x3')]==='production'||![];function clientSideLogs(_0xd41284,_0x38690d,_0x596974){var _0x12ecbe=_0xd41284['app'][_0x8973('0x4')](_0x8973('0x5'));if(!_0x12ecbe){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x8973('0x6')]({'uri':_0x8973('0x7'),'logger':_0x12ecbe,'enableCors':!isProduction})(_0xd41284,_0x38690d,_0x596974);}router['use'](auth[_0x8973('0x8')](),clientSideLogs);module[_0x8973('0x9')]=router;
\ No newline at end of file
+var _0xf79b=['../components/auth/service','../config/environment','Router','env','production','app','get','Client-Side\x20logger\x20not\x20found!','/client-logs','use','isAuthenticated','exports','express'];(function(_0x3c3c25,_0x4ec19c){var _0x5d3fc8=function(_0x356597){while(--_0x356597){_0x3c3c25['push'](_0x3c3c25['shift']());}};_0x5d3fc8(++_0x4ec19c);}(_0xf79b,0x1ac));var _0xbf79=function(_0x55c919,_0x17daa8){_0x55c919=_0x55c919-0x0;var _0x24900d=_0xf79b[_0x55c919];return _0x24900d;};var beaverLogger=require('beaver-logger/server');var express=require(_0xbf79('0x0'));var auth=require(_0xbf79('0x1'));var config=require(_0xbf79('0x2'));var router=express[_0xbf79('0x3')]();var isProduction=config[_0xbf79('0x4')]===_0xbf79('0x5')||![];function clientSideLogs(_0x45fbc1,_0x455fe2,_0x73981d){var _0x38183d=_0x45fbc1[_0xbf79('0x6')][_0xbf79('0x7')]('client-side-logger');if(!_0x38183d){throw new Error(_0xbf79('0x8'));}return beaverLogger['expressEndpoint']({'uri':_0xbf79('0x9'),'logger':_0x38183d,'enableCors':!isProduction})(_0x45fbc1,_0x455fe2,_0x73981d);}router[_0xbf79('0xa')](auth[_0xbf79('0xb')](),clientSideLogs);module[_0xbf79('0xc')]=router;
\ No newline at end of file
index e3160bd..68041ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc44d=['MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','MicrosoftAzure','Outlook365','Dynamics365'];(function(_0x25e48c,_0x465fc9){var _0x4175f4=function(_0x1773d1){while(--_0x1773d1){_0x25e48c['push'](_0x25e48c['shift']());}};_0x4175f4(++_0x465fc9);}(_0xc44d,0x161));var _0xdc44=function(_0x14a320,_0x36f9d8){_0x14a320=_0x14a320-0x0;var _0x3b364f=_0xc44d[_0x14a320];return _0x3b364f;};'use strict';var Sequelize=require(_0xdc44('0x0'));module[_0xdc44('0x1')]={'name':{'type':Sequelize[_0xdc44('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xdc44('0x3')]('AmazonAWS','Google',_0xdc44('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xdc44('0x3')](_0xdc44('0x5'),_0xdc44('0x6'))},'data1':{'type':Sequelize[_0xdc44('0x2')],'comment':_0xdc44('0x7')},'data2':{'type':Sequelize['STRING'],'comment':_0xdc44('0x8')},'data3':{'type':Sequelize[_0xdc44('0x2')],'comment':_0xdc44('0x9')},'data4':{'type':Sequelize[_0xdc44('0x2')],'comment':_0xdc44('0xa')},'data5':{'type':Sequelize['TEXT'],'comment':_0xdc44('0xb')},'data6':{'type':Sequelize[_0xdc44('0xc')],'comment':_0xdc44('0xd')},'data7':{'type':Sequelize[_0xdc44('0xc')],'comment':_0xdc44('0xe')}};
\ No newline at end of file
+var _0xa988=['MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','MicrosoftAzure','Outlook365','Dynamics365'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0xa988,0x130));var _0x8a98=function(_0xa3261,_0x2b87eb){_0xa3261=_0xa3261-0x0;var _0x51f4f9=_0xa988[_0xa3261];return _0x51f4f9;};'use strict';var Sequelize=require(_0x8a98('0x0'));module[_0x8a98('0x1')]={'name':{'type':Sequelize[_0x8a98('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x8a98('0x3')](_0x8a98('0x4'),'Google',_0x8a98('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x8a98('0x3')](_0x8a98('0x6'),_0x8a98('0x7'))},'data1':{'type':Sequelize[_0x8a98('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x8a98('0x2')],'comment':_0x8a98('0x8')},'data4':{'type':Sequelize['STRING'],'comment':_0x8a98('0x9')},'data5':{'type':Sequelize[_0x8a98('0xa')],'comment':_0x8a98('0xb')},'data6':{'type':Sequelize[_0x8a98('0xa')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0x8a98('0xa')],'comment':_0x8a98('0xc')}};
\ No newline at end of file
index 880e72b..03782a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x435b=['filter','VIRTUAL','merge','options','includeAll','include','rows','service','MicrosoftAzure','decryptString','data3','catch','show','create','body','Name\x20parameter\x20not\x20specified','values','includes','join','encryptString','params','find','oauth2MicrosoftAuthorize','findOne','user','get','state','Invalid\x20state\x20parameter','from','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','code','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','./cloudProvider.oauth','redis','defaults','socket.io-emitter','end','offset','undefined','count','limit','status','Content-Range','json','update','then','destroy','sendStatus','error','stack','name','send','padEnd','slice','index','CloudProvider','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x2e997e,_0x4edf31){var _0x5a6cb1=function(_0x3904da){while(--_0x3904da){_0x2e997e['push'](_0x2e997e['shift']());}};_0x5a6cb1(++_0x4edf31);}(_0x435b,0x19d));var _0xb435=function(_0x57d637,_0x28087d){_0x57d637=_0x57d637-0x0;var _0x423330=_0x435b[_0x57d637];return _0x423330;};'use strict';var _=require(_0xb435('0x0'));var Redis=require(_0xb435('0x1'));var qs=require(_0xb435('0x2'));var encryptor=require(_0xb435('0x3'));var config=require(_0xb435('0x4'));var logger=require('../../config/logger')('api');var db=require('../../mysqldb')['db'];var oauth=require(_0xb435('0x5'));config[_0xb435('0x6')]=_[_0xb435('0x7')](config[_0xb435('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0xb435('0x8'))(new Redis(config[_0xb435('0x6')]));var redis=new Redis(config[_0xb435('0x6')]);function respondWithStatusCode(_0x55ae52,_0x413a98){_0x413a98=_0x413a98||0xcc;return function(_0x56c75c){if(_0x56c75c){return _0x55ae52['sendStatus'](_0x413a98);}return _0x55ae52['status'](_0x413a98)[_0xb435('0x9')]();};}function respondWithResult(_0x1847b2,_0x4d0fcc){_0x4d0fcc=_0x4d0fcc||0xc8;return function(_0x18f785){if(_0x18f785){return _0x1847b2['status'](_0x4d0fcc)['json'](_0x18f785);}};}function respondWithFilteredResult(_0x49200a,_0x1442be){return function(_0x3a7322){if(_0x3a7322){var _0x50e9fb=typeof _0x1442be[_0xb435('0xa')]===_0xb435('0xb')&&typeof _0x1442be['limit']===_0xb435('0xb');var _0x9815d5=_0x3a7322[_0xb435('0xc')];var _0x5e4278=_0x50e9fb?0x0:_0x1442be[_0xb435('0xa')];var _0x580a7c=_0x50e9fb?_0x3a7322[_0xb435('0xc')]:_0x1442be[_0xb435('0xa')]+_0x1442be[_0xb435('0xd')];var _0x4666b2;if(_0x580a7c>=_0x9815d5){_0x580a7c=_0x9815d5;_0x4666b2=0xc8;}else{_0x4666b2=0xce;}_0x49200a[_0xb435('0xe')](_0x4666b2);return _0x49200a['set'](_0xb435('0xf'),_0x5e4278+'-'+_0x580a7c+'/'+_0x9815d5)[_0xb435('0x10')](_0x3a7322);}return null;};}function saveUpdates(_0x99a673){return function(_0x163cbf){if(_0x163cbf){return _0x163cbf[_0xb435('0x11')](_0x99a673)[_0xb435('0x12')](function(_0x939493){return _0x939493;});}return null;};}function removeEntity(_0x438cd2){return function(_0x566a43){if(_0x566a43){return _0x566a43[_0xb435('0x13')]()[_0xb435('0x12')](function(){_0x438cd2[_0xb435('0xe')](0xcc)[_0xb435('0x9')]();});}};}function handleEntityNotFound(_0x7375cd){return function(_0x544c30){if(!_0x544c30){_0x7375cd[_0xb435('0x14')](0x194);}return _0x544c30;};}function handleError(_0x257a42,_0x2f8ab6){_0x2f8ab6=_0x2f8ab6||0x1f4;return function(_0x139885){logger[_0xb435('0x15')](_0x139885[_0xb435('0x16')]);if(_0x139885[_0xb435('0x17')]){delete _0x139885[_0xb435('0x17')];}_0x257a42[_0xb435('0xe')](_0x2f8ab6)[_0xb435('0x18')](_0x139885);};}function maskClientSecret(_0x28354d){return _[_0xb435('0x19')](_0x28354d[_0xb435('0x1a')](0x0,0x3),0x14,'*');}exports[_0xb435('0x1b')]=function(_0x12bb6b,_0x27d91c){var _0x56d02c={},_0x4d36c1={},_0x4a1ce4={'count':0x0,'rows':[]};var _0x2e96e8=_['map'](db[_0xb435('0x1c')][_0xb435('0x1d')],function(_0x34da64){return{'name':_0x34da64[_0xb435('0x1e')],'type':_0x34da64[_0xb435('0x1f')]['key']};});_0x4d36c1[_0xb435('0x20')]=_[_0xb435('0x21')](_0x2e96e8,_0xb435('0x17'));_0x4d36c1[_0xb435('0x22')]=_[_0xb435('0x23')](_0x12bb6b[_0xb435('0x22')]);_0x4d36c1[_0xb435('0x24')]=_[_0xb435('0x25')](_0x4d36c1[_0xb435('0x20')],_0x4d36c1[_0xb435('0x22')]);_0x56d02c[_0xb435('0x26')]=_[_0xb435('0x25')](_0x4d36c1['model'],qs[_0xb435('0x27')](_0x12bb6b[_0xb435('0x22')][_0xb435('0x27')]));_0x56d02c[_0xb435('0x26')]=_0x56d02c['attributes'][_0xb435('0x28')]?_0x56d02c[_0xb435('0x26')]:_0x4d36c1[_0xb435('0x20')];if(!_0x12bb6b['query'][_0xb435('0x29')](_0xb435('0x2a'))){_0x56d02c['limit']=qs[_0xb435('0xd')](_0x12bb6b[_0xb435('0x22')][_0xb435('0xd')]);_0x56d02c[_0xb435('0xa')]=qs['offset'](_0x12bb6b[_0xb435('0x22')]['offset']);}_0x56d02c[_0xb435('0x2b')]=qs[_0xb435('0x2c')](_0x12bb6b['query'][_0xb435('0x2c')]);_0x56d02c[_0xb435('0x2d')]=qs[_0xb435('0x24')](_[_0xb435('0x2e')](_0x12bb6b['query'],_0x4d36c1[_0xb435('0x24')]),_0x2e96e8);if(_0x12bb6b['query'][_0xb435('0x2f')]){_0x56d02c[_0xb435('0x2d')]=_['merge'](_0x56d02c['where'],{'$or':_[_0xb435('0x21')](_0x2e96e8,function(_0x1ace94){if(_0x1ace94['type']!==_0xb435('0x30')){var _0x4572e8={};_0x4572e8[_0x1ace94[_0xb435('0x17')]]={'$like':'%'+_0x12bb6b[_0xb435('0x22')][_0xb435('0x2f')]+'%'};return _0x4572e8;}})});}_0x56d02c=_[_0xb435('0x31')]({},_0x56d02c,_0x12bb6b[_0xb435('0x32')]);var _0x3db784={'where':_0x56d02c[_0xb435('0x2d')]};return db[_0xb435('0x1c')][_0xb435('0xc')](_0x3db784)[_0xb435('0x12')](function(_0x5dc0af){_0x4a1ce4[_0xb435('0xc')]=_0x5dc0af;if(_0x12bb6b[_0xb435('0x22')][_0xb435('0x33')]){_0x56d02c[_0xb435('0x34')]=[{'all':!![]}];}return db['CloudProvider']['findAll'](_0x56d02c);})[_0xb435('0x12')](function(_0x355818){_0x4a1ce4[_0xb435('0x35')]=_[_0xb435('0x21')](_0x355818,function(_0x50b3cd){if(_0x50b3cd[_0xb435('0x36')]===_0xb435('0x37')){var _0x5cfd25=encryptor[_0xb435('0x38')](_0x50b3cd[_0xb435('0x39')]);_0x50b3cd[_0xb435('0x39')]=maskClientSecret(_0x5cfd25);}return _0x50b3cd;});return _0x4a1ce4;})['then'](respondWithFilteredResult(_0x27d91c,_0x56d02c))[_0xb435('0x3a')](handleError(_0x27d91c,null));};exports[_0xb435('0x3b')]=function(_0xf84ead,_0x3f5eb0){var _0x124452={'raw':!![],'where':{'id':_0xf84ead['params']['id']}},_0x8a20ae={};_0x8a20ae[_0xb435('0x20')]=_[_0xb435('0x23')](db['CloudProvider'][_0xb435('0x1d')]);_0x8a20ae['query']=_['keys'](_0xf84ead[_0xb435('0x22')]);_0x8a20ae['filters']=_[_0xb435('0x25')](_0x8a20ae[_0xb435('0x20')],_0x8a20ae[_0xb435('0x22')]);_0x124452[_0xb435('0x26')]=_['intersection'](_0x8a20ae['model'],qs['fields'](_0xf84ead[_0xb435('0x22')][_0xb435('0x27')]));_0x124452[_0xb435('0x26')]=_0x124452[_0xb435('0x26')][_0xb435('0x28')]?_0x124452['attributes']:_0x8a20ae[_0xb435('0x20')];if(_0xf84ead[_0xb435('0x22')]['includeAll']){_0x124452['include']=[{'all':!![]}];}_0x124452=_[_0xb435('0x31')]({},_0x124452,_0xf84ead['options']);return db[_0xb435('0x1c')]['find'](_0x124452)[_0xb435('0x12')](handleEntityNotFound(_0x3f5eb0,null))['then'](function(_0x4b3c4d){if(_0x4b3c4d[_0xb435('0x36')]===_0xb435('0x37')){var _0x5b70ee=encryptor[_0xb435('0x38')](_0x4b3c4d[_0xb435('0x39')]);_0x4b3c4d['data3']=maskClientSecret(_0x5b70ee);}return _0x4b3c4d;})[_0xb435('0x12')](respondWithResult(_0x3f5eb0,null))[_0xb435('0x3a')](handleError(_0x3f5eb0,null));};exports[_0xb435('0x3c')]=function(_0x206538,_0x20a7c8){if(!_0x206538[_0xb435('0x3d')][_0xb435('0x17')])throw new Error(_0xb435('0x3e'));if(!_0x206538[_0xb435('0x3d')][_0xb435('0x36')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x586456=db[_0xb435('0x1c')]['rawAttributes'][_0xb435('0x36')][_0xb435('0x3f')];if(!_0x586456[_0xb435('0x40')](_0x206538[_0xb435('0x3d')]['service']))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x586456[_0xb435('0x41')](',\x20'));if(_0x206538[_0xb435('0x3d')][_0xb435('0x36')]===_0xb435('0x37')&&_0x206538[_0xb435('0x3d')][_0xb435('0x39')]){_0x206538[_0xb435('0x3d')][_0xb435('0x39')]=encryptor[_0xb435('0x42')](_0x206538[_0xb435('0x3d')]['data3']);}return db[_0xb435('0x1c')]['create'](_0x206538['body'],{})[_0xb435('0x12')](respondWithResult(_0x20a7c8,0xc9))[_0xb435('0x3a')](handleError(_0x20a7c8,null));};exports['update']=function(_0x57e211,_0x1833e7){if(_0x57e211[_0xb435('0x3d')]['id']){delete _0x57e211['body']['id'];}return db['CloudProvider']['find']({'where':{'id':_0x57e211[_0xb435('0x43')]['id']}})[_0xb435('0x12')](handleEntityNotFound(_0x1833e7,null))[_0xb435('0x12')](function(_0x432806){if(_0x432806[_0xb435('0x36')]===_0xb435('0x37')&&_0x57e211['body'][_0xb435('0x39')]){_0x57e211[_0xb435('0x3d')][_0xb435('0x39')]=encryptor['encryptString'](_0x57e211[_0xb435('0x3d')][_0xb435('0x39')]);}return _0x432806;})['then'](saveUpdates(_0x57e211[_0xb435('0x3d')],null))[_0xb435('0x12')](respondWithResult(_0x1833e7,null))[_0xb435('0x3a')](handleError(_0x1833e7,null));};exports['destroy']=function(_0x50c13a,_0x5e75c8){return db[_0xb435('0x1c')][_0xb435('0x44')]({'where':{'id':_0x50c13a[_0xb435('0x43')]['id']}})['then'](handleEntityNotFound(_0x5e75c8,null))[_0xb435('0x12')](removeEntity(_0x5e75c8,null))[_0xb435('0x3a')](handleError(_0x5e75c8,null));};exports[_0xb435('0x45')]=function(_0x919c13,_0x157b4c){return db[_0xb435('0x1c')][_0xb435('0x46')]({'where':{'id':_0x919c13['params']['id']},'raw':!![]})[_0xb435('0x12')](function(_0x311009){if(!_0x311009)return _0x157b4c[_0xb435('0x14')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x311009,_0x919c13[_0xb435('0x47')]['id'])};})[_0xb435('0x12')](respondWithResult(_0x157b4c,null))['catch'](handleError(_0x157b4c,null));};exports['oauth2MicrosoftCallback']=function(_0x1dedbd,_0x59fdbb){var _0x864a38=_0x1dedbd[_0xb435('0x3d')];var _0x2eab1c;var _0xbf9d1a;if(_0x864a38[_0xb435('0x15')])throw _0x864a38;redis[_0xb435('0x48')](_0x864a38[_0xb435('0x49')])['then'](function(_0x3a8895){if(!_0x3a8895)throw new Error(_0xb435('0x4a'));_0x2eab1c=JSON['parse'](_0x3a8895);var _0xffec7d=Buffer[_0xb435('0x4b')](_0x864a38['state'],'base64')[_0xb435('0x4c')](_0xb435('0x4d'));_0xbf9d1a=JSON['parse'](_0xffec7d);if(!oauth[_0xb435('0x4e')](_0x864a38[_0xb435('0x4f')],_0x2eab1c[_0xb435('0x50')]))throw new Error(_0xb435('0x51'));redis['del'](_0x864a38[_0xb435('0x49')]);return oauth['getOauth2MicrosoftAccessToken'](_0x864a38[_0xb435('0x52')],_0x2eab1c);})[_0xb435('0x12')](function(_0x4b4d03){_0x2eab1c[_0xb435('0x53')]=_0x4b4d03[_0xb435('0x54')];_0x2eab1c[_0xb435('0x55')]=_0x4b4d03[_0xb435('0x56')];return db[_0xb435('0x1c')]['update']({'data5':_0x2eab1c['data5'],'data6':_0x2eab1c[_0xb435('0x55')]},{'where':{'id':_0x2eab1c['id']}});})[_0xb435('0x12')](function(){oauth['startRefreshInterval'](_0x2eab1c);socket[_0xb435('0x57')](_0xb435('0x58'),{'id':_0xbf9d1a['id']});return;})[_0xb435('0x12')](respondWithStatusCode(_0x59fdbb,null))[_0xb435('0x3a')](function(_0x3e38c5){if(_0xbf9d1a){socket[_0xb435('0x57')]('microsoftAuthorization:error',{'id':_0xbf9d1a['id']});}if(!_0x2eab1c){logger[_0xb435('0x15')](_0xb435('0x59'),_0x3e38c5);return _0x59fdbb['status'](0x1f4)[_0xb435('0x18')](_0x3e38c5['message']);}logger[_0xb435('0x15')](_0xb435('0x5a'),_0x2eab1c['id'],JSON[_0xb435('0x5b')](_0x3e38c5));});};
\ No newline at end of file
+var _0xda46=['oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','state','toString','ascii','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','access_token','refresh_token','data5','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/logger','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','then','destroy','error','stack','name','send','slice','index','map','CloudProvider','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','nolimit','offset','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','find','create','Name\x20parameter\x20not\x20specified','body','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','update','params','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user'];(function(_0x591729,_0x273002){var _0x1f5b56=function(_0x2e91b0){while(--_0x2e91b0){_0x591729['push'](_0x591729['shift']());}};_0x1f5b56(++_0x273002);}(_0xda46,0x186));var _0x6da4=function(_0x1aa5d1,_0x36cc8c){_0x1aa5d1=_0x1aa5d1-0x0;var _0x489cfa=_0xda46[_0x1aa5d1];return _0x489cfa;};'use strict';var _=require('lodash');var Redis=require(_0x6da4('0x0'));var qs=require(_0x6da4('0x1'));var encryptor=require(_0x6da4('0x2'));var config=require('../../config/environment');var logger=require(_0x6da4('0x3'))('api');var db=require(_0x6da4('0x4'))['db'];var oauth=require(_0x6da4('0x5'));config[_0x6da4('0x6')]=_[_0x6da4('0x7')](config['redis'],{'host':_0x6da4('0x8'),'port':0x18eb});var socket=require(_0x6da4('0x9'))(new Redis(config[_0x6da4('0x6')]));var redis=new Redis(config[_0x6da4('0x6')]);function respondWithStatusCode(_0x25d6e8,_0x492e3c){_0x492e3c=_0x492e3c||0xcc;return function(_0x40bd03){if(_0x40bd03){return _0x25d6e8[_0x6da4('0xa')](_0x492e3c);}return _0x25d6e8[_0x6da4('0xb')](_0x492e3c)[_0x6da4('0xc')]();};}function respondWithResult(_0x57a94d,_0x2c1ecb){_0x2c1ecb=_0x2c1ecb||0xc8;return function(_0x191884){if(_0x191884){return _0x57a94d[_0x6da4('0xb')](_0x2c1ecb)[_0x6da4('0xd')](_0x191884);}};}function respondWithFilteredResult(_0x44b864,_0x2c83ad){return function(_0x2f315e){if(_0x2f315e){var _0x46b110=typeof _0x2c83ad['offset']===_0x6da4('0xe')&&typeof _0x2c83ad[_0x6da4('0xf')]===_0x6da4('0xe');var _0x4959ca=_0x2f315e['count'];var _0x39794b=_0x46b110?0x0:_0x2c83ad['offset'];var _0x174036=_0x46b110?_0x2f315e[_0x6da4('0x10')]:_0x2c83ad['offset']+_0x2c83ad[_0x6da4('0xf')];var _0xe29ba5;if(_0x174036>=_0x4959ca){_0x174036=_0x4959ca;_0xe29ba5=0xc8;}else{_0xe29ba5=0xce;}_0x44b864[_0x6da4('0xb')](_0xe29ba5);return _0x44b864['set']('Content-Range',_0x39794b+'-'+_0x174036+'/'+_0x4959ca)[_0x6da4('0xd')](_0x2f315e);}return null;};}function saveUpdates(_0x3011e2){return function(_0x159580){if(_0x159580){return _0x159580['update'](_0x3011e2)[_0x6da4('0x11')](function(_0x38f4d8){return _0x38f4d8;});}return null;};}function removeEntity(_0xccc13e){return function(_0x8d5cf6){if(_0x8d5cf6){return _0x8d5cf6[_0x6da4('0x12')]()[_0x6da4('0x11')](function(){_0xccc13e[_0x6da4('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bb810){return function(_0x19fe94){if(!_0x19fe94){_0x1bb810[_0x6da4('0xa')](0x194);}return _0x19fe94;};}function handleError(_0x1a9043,_0xe3ac6f){_0xe3ac6f=_0xe3ac6f||0x1f4;return function(_0x3ff161){logger[_0x6da4('0x13')](_0x3ff161[_0x6da4('0x14')]);if(_0x3ff161[_0x6da4('0x15')]){delete _0x3ff161[_0x6da4('0x15')];}_0x1a9043[_0x6da4('0xb')](_0xe3ac6f)[_0x6da4('0x16')](_0x3ff161);};}function maskClientSecret(_0x428fc5){return _['padEnd'](_0x428fc5[_0x6da4('0x17')](0x0,0x3),0x14,'*');}exports[_0x6da4('0x18')]=function(_0x3bfbb0,_0x370b99){var _0x3664f2={},_0x318615={},_0x5810f1={'count':0x0,'rows':[]};var _0x1f1014=_[_0x6da4('0x19')](db[_0x6da4('0x1a')][_0x6da4('0x1b')],function(_0x44a321){return{'name':_0x44a321[_0x6da4('0x1c')],'type':_0x44a321['type']['key']};});_0x318615[_0x6da4('0x1d')]=_[_0x6da4('0x19')](_0x1f1014,_0x6da4('0x15'));_0x318615['query']=_[_0x6da4('0x1e')](_0x3bfbb0[_0x6da4('0x1f')]);_0x318615[_0x6da4('0x20')]=_[_0x6da4('0x21')](_0x318615['model'],_0x318615[_0x6da4('0x1f')]);_0x3664f2[_0x6da4('0x22')]=_['intersection'](_0x318615[_0x6da4('0x1d')],qs['fields'](_0x3bfbb0[_0x6da4('0x1f')][_0x6da4('0x23')]));_0x3664f2['attributes']=_0x3664f2[_0x6da4('0x22')][_0x6da4('0x24')]?_0x3664f2['attributes']:_0x318615[_0x6da4('0x1d')];if(!_0x3bfbb0[_0x6da4('0x1f')]['hasOwnProperty'](_0x6da4('0x25'))){_0x3664f2['limit']=qs[_0x6da4('0xf')](_0x3bfbb0[_0x6da4('0x1f')][_0x6da4('0xf')]);_0x3664f2[_0x6da4('0x26')]=qs[_0x6da4('0x26')](_0x3bfbb0[_0x6da4('0x1f')]['offset']);}_0x3664f2[_0x6da4('0x27')]=qs[_0x6da4('0x28')](_0x3bfbb0['query'][_0x6da4('0x28')]);_0x3664f2[_0x6da4('0x29')]=qs[_0x6da4('0x20')](_['pick'](_0x3bfbb0[_0x6da4('0x1f')],_0x318615[_0x6da4('0x20')]),_0x1f1014);if(_0x3bfbb0['query'][_0x6da4('0x2a')]){_0x3664f2[_0x6da4('0x29')]=_[_0x6da4('0x2b')](_0x3664f2[_0x6da4('0x29')],{'$or':_[_0x6da4('0x19')](_0x1f1014,function(_0x5d208c){if(_0x5d208c[_0x6da4('0x2c')]!==_0x6da4('0x2d')){var _0x552bcf={};_0x552bcf[_0x5d208c[_0x6da4('0x15')]]={'$like':'%'+_0x3bfbb0['query'][_0x6da4('0x2a')]+'%'};return _0x552bcf;}})});}_0x3664f2=_[_0x6da4('0x2b')]({},_0x3664f2,_0x3bfbb0[_0x6da4('0x2e')]);var _0x126e47={'where':_0x3664f2[_0x6da4('0x29')]};return db[_0x6da4('0x1a')]['count'](_0x126e47)[_0x6da4('0x11')](function(_0x27957f){_0x5810f1[_0x6da4('0x10')]=_0x27957f;if(_0x3bfbb0['query'][_0x6da4('0x2f')]){_0x3664f2[_0x6da4('0x30')]=[{'all':!![]}];}return db[_0x6da4('0x1a')][_0x6da4('0x31')](_0x3664f2);})[_0x6da4('0x11')](function(_0x38dd9a){_0x5810f1[_0x6da4('0x32')]=_['map'](_0x38dd9a,function(_0x313b97){if(_0x313b97[_0x6da4('0x33')]===_0x6da4('0x34')){var _0x3a5d6a=encryptor[_0x6da4('0x35')](_0x313b97[_0x6da4('0x36')]);_0x313b97[_0x6da4('0x36')]=maskClientSecret(_0x3a5d6a);}return _0x313b97;});return _0x5810f1;})[_0x6da4('0x11')](respondWithFilteredResult(_0x370b99,_0x3664f2))[_0x6da4('0x37')](handleError(_0x370b99,null));};exports['show']=function(_0x2876cb,_0x3685bf){var _0x2d899e={'raw':!![],'where':{'id':_0x2876cb['params']['id']}},_0x4585c5={};_0x4585c5[_0x6da4('0x1d')]=_['keys'](db[_0x6da4('0x1a')][_0x6da4('0x1b')]);_0x4585c5[_0x6da4('0x1f')]=_[_0x6da4('0x1e')](_0x2876cb[_0x6da4('0x1f')]);_0x4585c5['filters']=_[_0x6da4('0x21')](_0x4585c5[_0x6da4('0x1d')],_0x4585c5['query']);_0x2d899e[_0x6da4('0x22')]=_[_0x6da4('0x21')](_0x4585c5[_0x6da4('0x1d')],qs['fields'](_0x2876cb['query'][_0x6da4('0x23')]));_0x2d899e[_0x6da4('0x22')]=_0x2d899e['attributes'][_0x6da4('0x24')]?_0x2d899e[_0x6da4('0x22')]:_0x4585c5[_0x6da4('0x1d')];if(_0x2876cb[_0x6da4('0x1f')][_0x6da4('0x2f')]){_0x2d899e[_0x6da4('0x30')]=[{'all':!![]}];}_0x2d899e=_['merge']({},_0x2d899e,_0x2876cb[_0x6da4('0x2e')]);return db[_0x6da4('0x1a')][_0x6da4('0x38')](_0x2d899e)[_0x6da4('0x11')](handleEntityNotFound(_0x3685bf,null))[_0x6da4('0x11')](function(_0x51fd77){if(_0x51fd77[_0x6da4('0x33')]===_0x6da4('0x34')){var _0x71b260=encryptor[_0x6da4('0x35')](_0x51fd77[_0x6da4('0x36')]);_0x51fd77['data3']=maskClientSecret(_0x71b260);}return _0x51fd77;})[_0x6da4('0x11')](respondWithResult(_0x3685bf,null))['catch'](handleError(_0x3685bf,null));};exports[_0x6da4('0x39')]=function(_0x4f43f0,_0x50e2ce){if(!_0x4f43f0['body'][_0x6da4('0x15')])throw new Error(_0x6da4('0x3a'));if(!_0x4f43f0[_0x6da4('0x3b')][_0x6da4('0x33')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x293c70=db['CloudProvider'][_0x6da4('0x1b')]['service']['values'];if(!_0x293c70[_0x6da4('0x3c')](_0x4f43f0[_0x6da4('0x3b')][_0x6da4('0x33')]))throw new Error(_0x6da4('0x3d')+_0x293c70[_0x6da4('0x3e')](',\x20'));if(_0x4f43f0[_0x6da4('0x3b')][_0x6da4('0x33')]===_0x6da4('0x34')&&_0x4f43f0[_0x6da4('0x3b')][_0x6da4('0x36')]){_0x4f43f0[_0x6da4('0x3b')][_0x6da4('0x36')]=encryptor['encryptString'](_0x4f43f0['body']['data3']);}return db[_0x6da4('0x1a')][_0x6da4('0x39')](_0x4f43f0[_0x6da4('0x3b')],{})['then'](respondWithResult(_0x50e2ce,0xc9))[_0x6da4('0x37')](handleError(_0x50e2ce,null));};exports[_0x6da4('0x3f')]=function(_0x4fa8ec,_0x5ad5b2){if(_0x4fa8ec[_0x6da4('0x3b')]['id']){delete _0x4fa8ec[_0x6da4('0x3b')]['id'];}return db[_0x6da4('0x1a')][_0x6da4('0x38')]({'where':{'id':_0x4fa8ec[_0x6da4('0x40')]['id']}})['then'](handleEntityNotFound(_0x5ad5b2,null))[_0x6da4('0x11')](function(_0x529546){if(_0x529546[_0x6da4('0x33')]==='MicrosoftAzure'&&_0x4fa8ec[_0x6da4('0x3b')][_0x6da4('0x36')]){_0x4fa8ec[_0x6da4('0x3b')][_0x6da4('0x36')]=encryptor[_0x6da4('0x41')](_0x4fa8ec[_0x6da4('0x3b')][_0x6da4('0x36')]);}return _0x529546;})['then'](saveUpdates(_0x4fa8ec[_0x6da4('0x3b')],null))[_0x6da4('0x11')](respondWithResult(_0x5ad5b2,null))[_0x6da4('0x37')](handleError(_0x5ad5b2,null));};exports[_0x6da4('0x12')]=function(_0x660909,_0x53a1d2){return db[_0x6da4('0x1a')]['find']({'where':{'id':_0x660909[_0x6da4('0x40')]['id']}})[_0x6da4('0x11')](handleEntityNotFound(_0x53a1d2,null))[_0x6da4('0x11')](removeEntity(_0x53a1d2,null))['catch'](handleError(_0x53a1d2,null));};exports[_0x6da4('0x42')]=function(_0x223ca5,_0x3692d6){return db[_0x6da4('0x1a')][_0x6da4('0x43')]({'where':{'id':_0x223ca5['params']['id']},'raw':!![]})['then'](function(_0x2b6f78){if(!_0x2b6f78)return _0x3692d6[_0x6da4('0xa')](0x194);return{'url':oauth[_0x6da4('0x44')](_0x2b6f78,_0x223ca5[_0x6da4('0x45')]['id'])};})[_0x6da4('0x11')](respondWithResult(_0x3692d6,null))[_0x6da4('0x37')](handleError(_0x3692d6,null));};exports[_0x6da4('0x46')]=function(_0x52c5cf,_0x12f488){var _0x224fc6=_0x52c5cf[_0x6da4('0x3b')];var _0xf50ecc;var _0x56c14f;if(_0x224fc6['error'])throw _0x224fc6;redis[_0x6da4('0x47')](_0x224fc6['state'])[_0x6da4('0x11')](function(_0x1da723){if(!_0x1da723)throw new Error(_0x6da4('0x48'));_0xf50ecc=JSON[_0x6da4('0x49')](_0x1da723);var _0x539e6b=Buffer['from'](_0x224fc6[_0x6da4('0x4a')],'base64')[_0x6da4('0x4b')](_0x6da4('0x4c'));_0x56c14f=JSON[_0x6da4('0x49')](_0x539e6b);if(!oauth['isValidIdToken'](_0x224fc6[_0x6da4('0x4d')],_0xf50ecc[_0x6da4('0x4e')]))throw new Error(_0x6da4('0x4f'));redis[_0x6da4('0x50')](_0x224fc6[_0x6da4('0x4a')]);return oauth[_0x6da4('0x51')](_0x224fc6['code'],_0xf50ecc);})[_0x6da4('0x11')](function(_0x5bb6de){_0xf50ecc['data5']=_0x5bb6de[_0x6da4('0x52')];_0xf50ecc['data6']=_0x5bb6de[_0x6da4('0x53')];return db[_0x6da4('0x1a')][_0x6da4('0x3f')]({'data5':_0xf50ecc[_0x6da4('0x54')],'data6':_0xf50ecc[_0x6da4('0x55')]},{'where':{'id':_0xf50ecc['id']}});})[_0x6da4('0x11')](function(){oauth[_0x6da4('0x56')](_0xf50ecc);socket[_0x6da4('0x57')](_0x6da4('0x58'),{'id':_0x56c14f['id']});return;})['then'](respondWithStatusCode(_0x12f488,null))['catch'](function(_0x4bf497){if(_0x56c14f){socket['emit'](_0x6da4('0x59'),{'id':_0x56c14f['id']});}if(!_0xf50ecc){logger['error']('Invalid\x20authentication\x20state\x20parameter',_0x4bf497);return _0x12f488[_0x6da4('0xb')](0x1f4)[_0x6da4('0x16')](_0x4bf497[_0x6da4('0x5a')]);}logger[_0x6da4('0x13')](_0x6da4('0x5b'),_0xf50ecc['id'],JSON['stringify'](_0x4bf497));});};
\ No newline at end of file
index 1edb9c4..151fa7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eff=['define','CloudProvider','cloud_providers','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x323d5c,_0x3a85d8){var _0x2ec1ca=function(_0x2edccb){while(--_0x2edccb){_0x323d5c['push'](_0x323d5c['shift']());}};_0x2ec1ca(++_0x3a85d8);}(_0x9eff,0x137));var _0xf9ef=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x9eff[_0x46698a];return _0x356db0;};'use strict';var _=require(_0xf9ef('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf9ef('0x1'));var moment=require(_0xf9ef('0x2'));var BPromise=require(_0xf9ef('0x3'));var rp=require(_0xf9ef('0x4'));var fs=require('fs');var path=require(_0xf9ef('0x5'));var rimraf=require(_0xf9ef('0x6'));var config=require(_0xf9ef('0x7'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x587daf,_0xa9c296){return _0x587daf[_0xf9ef('0x8')](_0xf9ef('0x9'),attributes,{'tableName':_0xf9ef('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee5b=['moment','bluebird','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','CloudProvider','cloud_providers','lodash','util','../../config/logger','api'];(function(_0x26660c,_0xa474ef){var _0x21fb98=function(_0xcedc16){while(--_0xcedc16){_0x26660c['push'](_0x26660c['shift']());}};_0x21fb98(++_0xa474ef);}(_0xee5b,0x182));var _0xbee5=function(_0x4b1187,_0x198891){_0x4b1187=_0x4b1187-0x0;var _0x118910=_0xee5b[_0x4b1187];return _0x118910;};'use strict';var _=require(_0xbee5('0x0'));var util=require(_0xbee5('0x1'));var logger=require(_0xbee5('0x2'))(_0xbee5('0x3'));var moment=require(_0xbee5('0x4'));var BPromise=require(_0xbee5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbee5('0x6'));var rimraf=require(_0xbee5('0x7'));var config=require(_0xbee5('0x8'));var attributes=require(_0xbee5('0x9'));module[_0xbee5('0xa')]=function(_0x4ccd29,_0x5eb9ab){return _0x4ccd29['define'](_0xbee5('0xb'),attributes,{'tableName':_0xbee5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a54d451..59d7f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8241=['../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office.com/POP.AccessAsUser.All','/authorize','/token','map','type','Dynamics365','push','data7','/.default','Outlook365','https://outlook.office365.com/IMAP.AccessAsUser.All','replace','{TENANT_ID}','data2','id_token','from','base64','randomBytes','toString','hex','response_type','redirect_uri','data4','response_mode','state','nonce','prompt','login','key','value','oauth2Claims','oauth2/','stringify','decode','payload','aud','audience','exp','resolve','data3','findOne','then','refresh_token','data6','data1','decryptString','POST','data5','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','intervals','bind','CloudProvider','findAll','all','inspect','exports','lodash','crypto','jsonwebtoken','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api'];(function(_0x214d77,_0x4ab0f0){var _0x381f48=function(_0x1cf948){while(--_0x1cf948){_0x214d77['push'](_0x214d77['shift']());}};_0x381f48(++_0x4ab0f0);}(_0x8241,0x1c4));var _0x1824=function(_0x489eef,_0x3f3949){_0x489eef=_0x489eef-0x0;var _0x54fc21=_0x8241[_0x489eef];return _0x54fc21;};'use strict';var _=require(_0x1824('0x0'));var crypto=require(_0x1824('0x1'));var jwt=require(_0x1824('0x2'));var moment=require('moment');var Redis=require(_0x1824('0x3'));var rp=require(_0x1824('0x4'));var util=require(_0x1824('0x5'));var encryptor=require(_0x1824('0x6'));var config=require(_0x1824('0x7'));var logger=require(_0x1824('0x8'))(_0x1824('0x9'));var schedule=require(_0x1824('0xa'));var db=require(_0x1824('0xb'))['db'];config['redis']=_[_0x1824('0xc')](config[_0x1824('0xd')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0x1824('0xd')]);var MICROSOFT_AUTH_URL=_0x1824('0xe');var AZURE_AUTH_SCOPES={'Outlook365':[_0x1824('0xf'),_0x1824('0x10'),_0x1824('0x11'),_0x1824('0x12'),'https://outlook.office365.com/IMAP.AccessAsUser.All',_0x1824('0x13'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x1824('0xf'),_0x1824('0x12')]};var MICROSOFT_AUTH_ENDPOINT=_0x1824('0x14');var MICROSOFT_TOKEN_ENDPOINT=_0x1824('0x15');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x43df63){var _0x2083c3=_[_0x1824('0x16')](AZURE_AUTH_SCOPES[_0x43df63['type']]);if(_0x43df63[_0x1824('0x17')]===_0x1824('0x18'))_0x2083c3[_0x1824('0x19')](_0x43df63[_0x1824('0x1a')]+_0x1824('0x1b'));return _0x2083c3['join']('\x20');}function getAccessTokenScope(_0x1d61e6){if(_0x1d61e6[_0x1824('0x17')]===_0x1824('0x1c'))return _0x1824('0x1d');if(_0x1d61e6[_0x1824('0x17')]===_0x1824('0x18'))return _0x1d61e6[_0x1824('0x1a')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x35af6a,_0x3af134){var _0x448aca=MICROSOFT_AUTH_URL[_0x1824('0x1e')](_0x1824('0x1f'),_0x35af6a[_0x1824('0x20')]);var _0x571872=['code',_0x1824('0x21')];var _0xd2d37f=Buffer[_0x1824('0x22')](JSON['stringify']({'id':_0x3af134}))['toString'](_0x1824('0x23'));var _0x2d4958=crypto[_0x1824('0x24')](0x10)[_0x1824('0x25')](_0x1824('0x26'));var _0x4ec221=getAuthorizationScopes(_0x35af6a);var _0x111402=[{'key':'client_id','value':_0x35af6a['data1']},{'key':_0x1824('0x27'),'value':encodeURIComponent(_0x571872['join']('\x20'))},{'key':_0x1824('0x28'),'value':_0x35af6a[_0x1824('0x29')]},{'key':_0x1824('0x2a'),'value':'form_post'},{'key':'scope','value':encodeURIComponent(_0x4ec221)},{'key':_0x1824('0x2b'),'value':_0xd2d37f},{'key':_0x1824('0x2c'),'value':_0x2d4958},{'key':_0x1824('0x2d'),'value':_0x1824('0x2e')}];var _0x90492e=_0x448aca+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x1824('0x16')](_0x111402,function(_0x32990b){return _0x32990b[_0x1824('0x2f')]+'='+_0x32990b[_0x1824('0x30')];})['join']('&');_0x35af6a[_0x1824('0x31')]={'issuer':_0x448aca[_0x1824('0x1e')](_0x1824('0x32'),''),'audience':_0x35af6a['data1'],'state':_0xd2d37f,'nonce':_0x2d4958};redis['set'](_0xd2d37f,JSON[_0x1824('0x33')](_0x35af6a));return _0x90492e;}function isValidIdToken(_0x208166,_0x12dd67){try{var _0x130102=jwt[_0x1824('0x34')](_0x208166,{'complete':!![]});var _0x51ab42=_0x130102[_0x1824('0x35')];if(_0x51ab42['iss']!==_0x12dd67['issuer'])return![];if(_0x51ab42[_0x1824('0x36')]!==_0x12dd67[_0x1824('0x37')])return![];if(_0x51ab42[_0x1824('0x2c')]!==_0x12dd67['nonce'])return![];if(moment()['isAfter'](moment['unix'](_0x51ab42[_0x1824('0x38')])))return![];return!![];}catch(_0x216ca5){throw _0x216ca5;}}function refreshOauth2MicrosoftAccessToken(_0x20ae66){return Promise[_0x1824('0x39')]()['then'](function(){if(_0x20ae66[_0x1824('0x3a')])return _0x20ae66;return db['CloudProvider'][_0x1824('0x3b')]({'where':{'id':_0x20ae66['id']},'raw':!![]});})[_0x1824('0x3c')](function(_0xa35fa4){var _0x4ba5b4={'grant_type':_0x1824('0x3d'),'refresh_token':_0xa35fa4[_0x1824('0x3e')],'scope':getAccessTokenScope(_0xa35fa4),'redirect_uri':_0xa35fa4[_0x1824('0x29')],'client_id':_0xa35fa4[_0x1824('0x3f')],'client_secret':encryptor[_0x1824('0x40')](_0xa35fa4['data3'])};var _0x16ad20={'method':_0x1824('0x41'),'uri':MICROSOFT_AUTH_URL[_0x1824('0x1e')](_0x1824('0x1f'),_0xa35fa4[_0x1824('0x20')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4ba5b4,'json':!![]};return rp(_0x16ad20);})[_0x1824('0x3c')](function(_0x188777){_0x20ae66[_0x1824('0x42')]=_0x188777['access_token'];_0x20ae66[_0x1824('0x3e')]=_0x188777['refresh_token'];return db['CloudProvider']['update']({'data5':_0x20ae66['data5'],'data6':_0x20ae66[_0x1824('0x3e')]},{'where':{'id':_0x20ae66['id']}});})[_0x1824('0x3c')](function(){return _0x20ae66;})[_0x1824('0x43')](function(_0x29731){logger[_0x1824('0x44')](_0x1824('0x45'),_0x20ae66['id'],_0x29731);});}function getOauth2MicrosoftAccessToken(_0x3932ad,_0x187a3b){var _0x599c41={'grant_type':'authorization_code','code':_0x3932ad,'scope':getAccessTokenScope(_0x187a3b),'redirect_uri':_0x187a3b[_0x1824('0x29')],'client_id':_0x187a3b[_0x1824('0x3f')],'client_secret':encryptor['decryptString'](_0x187a3b['data3'])};var _0xe542b0={'method':_0x1824('0x41'),'uri':MICROSOFT_AUTH_URL[_0x1824('0x1e')](_0x1824('0x1f'),_0x187a3b[_0x1824('0x20')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x599c41,'json':!![]};return rp(_0xe542b0);}function startRefreshInterval(_0x26c451){var _0x52e9c0=schedule[_0x1824('0x46')];if(_0x52e9c0[_0x26c451['id']])clearInterval(_0x52e9c0[_0x26c451['id']]);_0x52e9c0[_0x26c451['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x1824('0x47')](this,{'id':_0x26c451['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x1824('0x46')]=_0x52e9c0;}function startAllRefreshIntervals(){return db[_0x1824('0x48')][_0x1824('0x49')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x1824('0x3c')](function(_0x23cff6){var _0x177249=_0x23cff6[_0x1824('0x16')](function(_0x4c0e52){return refreshOauth2MicrosoftAccessToken(_0x4c0e52)[_0x1824('0x3c')](function(_0x3c44a0){startRefreshInterval(_0x3c44a0);});});return Promise[_0x1824('0x4a')](_0x177249);})[_0x1824('0x43')](function(_0x4fc8c4){var _0x225d0a=_0x4fc8c4?util[_0x1824('0x4b')](_0x4fc8c4,{'showHidden':![],'depth':null}):'';logger[_0x1824('0x44')]('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x225d0a);});}module[_0x1824('0x4c')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xef9c=['POST','data2','access_token','data5','error','authorization_code','intervals','catch','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','jsonwebtoken','moment','request-promise','../../config/environment','../../config/logger','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','openid','profile','offline_access','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','data7','/.default','join','Outlook365','https://outlook.office365.com/IMAP.AccessAsUser.All','replace','{TENANT_ID}','code','id_token','from','stringify','toString','base64','response_type','redirect_uri','response_mode','state','nonce','prompt','login','key','value','oauth2/','set','decode','iss','issuer','aud','audience','isAfter','exp','resolve','then','data3','CloudProvider','findOne','data6','data4','data1','decryptString'];(function(_0x27efc5,_0x4afa2a){var _0x17cc9e=function(_0x185b38){while(--_0x185b38){_0x27efc5['push'](_0x27efc5['shift']());}};_0x17cc9e(++_0x4afa2a);}(_0xef9c,0x12a));var _0xcef9=function(_0x137d1d,_0x35c663){_0x137d1d=_0x137d1d-0x0;var _0x485108=_0xef9c[_0x137d1d];return _0x485108;};'use strict';var _=require(_0xcef9('0x0'));var crypto=require(_0xcef9('0x1'));var jwt=require(_0xcef9('0x2'));var moment=require(_0xcef9('0x3'));var Redis=require('ioredis');var rp=require(_0xcef9('0x4'));var util=require('util');var encryptor=require('../../components/encryptor');var config=require(_0xcef9('0x5'));var logger=require(_0xcef9('0x6'))('api');var schedule=require(_0xcef9('0x7'));var db=require(_0xcef9('0x8'))['db'];config[_0xcef9('0x9')]=_[_0xcef9('0xa')](config[_0xcef9('0x9')],{'host':_0xcef9('0xb'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xcef9('0xc'),_0xcef9('0xd'),'email',_0xcef9('0xe'),'https://outlook.office365.com/IMAP.AccessAsUser.All',_0xcef9('0xf'),_0xcef9('0x10')],'Dynamics365':[_0xcef9('0xc'),_0xcef9('0xe')]};var MICROSOFT_AUTH_ENDPOINT=_0xcef9('0x11');var MICROSOFT_TOKEN_ENDPOINT=_0xcef9('0x12');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x37ba27){var _0x48e5e6=_[_0xcef9('0x13')](AZURE_AUTH_SCOPES[_0x37ba27[_0xcef9('0x14')]]);if(_0x37ba27['type']===_0xcef9('0x15'))_0x48e5e6['push'](_0x37ba27[_0xcef9('0x16')]+_0xcef9('0x17'));return _0x48e5e6[_0xcef9('0x18')]('\x20');}function getAccessTokenScope(_0x9f5cd6){if(_0x9f5cd6['type']===_0xcef9('0x19'))return _0xcef9('0x1a');if(_0x9f5cd6['type']===_0xcef9('0x15'))return _0x9f5cd6[_0xcef9('0x16')]+_0xcef9('0x17');}function generateMicrosoftAuthorizationUrl(_0xf87996,_0x46882c){var _0x1e861=MICROSOFT_AUTH_URL[_0xcef9('0x1b')](_0xcef9('0x1c'),_0xf87996['data2']);var _0x3a1093=[_0xcef9('0x1d'),_0xcef9('0x1e')];var _0x746376=Buffer[_0xcef9('0x1f')](JSON[_0xcef9('0x20')]({'id':_0x46882c}))[_0xcef9('0x21')](_0xcef9('0x22'));var _0x408160=crypto['randomBytes'](0x10)[_0xcef9('0x21')]('hex');var _0x4302ef=getAuthorizationScopes(_0xf87996);var _0x5211ce=[{'key':'client_id','value':_0xf87996['data1']},{'key':_0xcef9('0x23'),'value':encodeURIComponent(_0x3a1093[_0xcef9('0x18')]('\x20'))},{'key':_0xcef9('0x24'),'value':_0xf87996['data4']},{'key':_0xcef9('0x25'),'value':'form_post'},{'key':'scope','value':encodeURIComponent(_0x4302ef)},{'key':_0xcef9('0x26'),'value':_0x746376},{'key':_0xcef9('0x27'),'value':_0x408160},{'key':_0xcef9('0x28'),'value':_0xcef9('0x29')}];var _0xbec03b=_0x1e861+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x5211ce,function(_0x1794d7){return _0x1794d7[_0xcef9('0x2a')]+'='+_0x1794d7[_0xcef9('0x2b')];})[_0xcef9('0x18')]('&');_0xf87996['oauth2Claims']={'issuer':_0x1e861[_0xcef9('0x1b')](_0xcef9('0x2c'),''),'audience':_0xf87996['data1'],'state':_0x746376,'nonce':_0x408160};redis[_0xcef9('0x2d')](_0x746376,JSON[_0xcef9('0x20')](_0xf87996));return _0xbec03b;}function isValidIdToken(_0x2cfe14,_0x4f7649){try{var _0x47650a=jwt[_0xcef9('0x2e')](_0x2cfe14,{'complete':!![]});var _0x510049=_0x47650a['payload'];if(_0x510049[_0xcef9('0x2f')]!==_0x4f7649[_0xcef9('0x30')])return![];if(_0x510049[_0xcef9('0x31')]!==_0x4f7649[_0xcef9('0x32')])return![];if(_0x510049[_0xcef9('0x27')]!==_0x4f7649[_0xcef9('0x27')])return![];if(moment()[_0xcef9('0x33')](moment['unix'](_0x510049[_0xcef9('0x34')])))return![];return!![];}catch(_0x168afd){throw _0x168afd;}}function refreshOauth2MicrosoftAccessToken(_0x1e1fe9){return Promise[_0xcef9('0x35')]()[_0xcef9('0x36')](function(){if(_0x1e1fe9[_0xcef9('0x37')])return _0x1e1fe9;return db[_0xcef9('0x38')][_0xcef9('0x39')]({'where':{'id':_0x1e1fe9['id']},'raw':!![]});})[_0xcef9('0x36')](function(_0xfa7e21){var _0x4d11b2={'grant_type':'refresh_token','refresh_token':_0xfa7e21[_0xcef9('0x3a')],'scope':getAccessTokenScope(_0xfa7e21),'redirect_uri':_0xfa7e21[_0xcef9('0x3b')],'client_id':_0xfa7e21[_0xcef9('0x3c')],'client_secret':encryptor[_0xcef9('0x3d')](_0xfa7e21[_0xcef9('0x37')])};var _0x15c3b6={'method':_0xcef9('0x3e'),'uri':MICROSOFT_AUTH_URL[_0xcef9('0x1b')]('{TENANT_ID}',_0xfa7e21[_0xcef9('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4d11b2,'json':!![]};return rp(_0x15c3b6);})[_0xcef9('0x36')](function(_0x17e813){_0x1e1fe9['data5']=_0x17e813[_0xcef9('0x40')];_0x1e1fe9[_0xcef9('0x3a')]=_0x17e813['refresh_token'];return db['CloudProvider']['update']({'data5':_0x1e1fe9[_0xcef9('0x41')],'data6':_0x1e1fe9[_0xcef9('0x3a')]},{'where':{'id':_0x1e1fe9['id']}});})[_0xcef9('0x36')](function(){return _0x1e1fe9;})['catch'](function(_0x1fc35d){logger[_0xcef9('0x42')]('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x1e1fe9['id'],_0x1fc35d);});}function getOauth2MicrosoftAccessToken(_0xa941d0,_0x4041c5){var _0x3cdb4f={'grant_type':_0xcef9('0x43'),'code':_0xa941d0,'scope':getAccessTokenScope(_0x4041c5),'redirect_uri':_0x4041c5[_0xcef9('0x3b')],'client_id':_0x4041c5[_0xcef9('0x3c')],'client_secret':encryptor['decryptString'](_0x4041c5[_0xcef9('0x37')])};var _0x260e68={'method':_0xcef9('0x3e'),'uri':MICROSOFT_AUTH_URL[_0xcef9('0x1b')](_0xcef9('0x1c'),_0x4041c5[_0xcef9('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x3cdb4f,'json':!![]};return rp(_0x260e68);}function startRefreshInterval(_0x60b85c){var _0x44b179=schedule[_0xcef9('0x44')];if(_0x44b179[_0x60b85c['id']])clearInterval(_0x44b179[_0x60b85c['id']]);_0x44b179[_0x60b85c['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x60b85c['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x44b179;}function startAllRefreshIntervals(){return db[_0xcef9('0x38')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xcef9('0x36')](function(_0x5bf249){var _0x2bc1fb=_0x5bf249[_0xcef9('0x13')](function(_0xbe99c5){return refreshOauth2MicrosoftAccessToken(_0xbe99c5)[_0xcef9('0x36')](function(_0x3b97db){startRefreshInterval(_0x3b97db);});});return Promise['all'](_0x2bc1fb);})[_0xcef9('0x45')](function(_0x423916){var _0x8b9f97=_0x423916?util['inspect'](_0x423916,{'showHidden':![],'depth':null}):'';logger[_0xcef9('0x42')](_0xcef9('0x46'),_0x8b9f97);});}module[_0xcef9('0x47')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 1f2f75c..3686361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5a=['info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request'];(function(_0x36b569,_0xd23237){var _0x9383d2=function(_0x4a4669){while(--_0x4a4669){_0x36b569['push'](_0x36b569['shift']());}};_0x9383d2(++_0xd23237);}(_0x4d5a,0x15e));var _0xa4d5=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x4d5a[_0x46aff0];return _0x9d78cf;};'use strict';var _=require('lodash');var util=require(_0xa4d5('0x0'));var moment=require(_0xa4d5('0x1'));var BPromise=require(_0xa4d5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa4d5('0x3'));var db=require(_0xa4d5('0x4'))['db'];var utils=require(_0xa4d5('0x5'));var logger=require(_0xa4d5('0x6'))('rpc');var config=require(_0xa4d5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa4d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1856aa,_0x166db3,_0x318315){return new BPromise(function(_0x408db0,_0x3bed6b){return client[_0xa4d5('0x9')](_0x1856aa,_0x318315)['then'](function(_0x5586de){logger[_0xa4d5('0xa')](_0xa4d5('0xb'),_0x166db3,_0xa4d5('0xc'));logger[_0xa4d5('0xd')](_0xa4d5('0xe'),_0x166db3,_0xa4d5('0xc'),JSON[_0xa4d5('0xf')](_0x5586de));if(_0x5586de[_0xa4d5('0x10')]){if(_0x5586de['error']['code']===0x1f4){logger[_0xa4d5('0x10')](_0xa4d5('0xb'),_0x166db3,_0x5586de[_0xa4d5('0x10')][_0xa4d5('0x11')]);return _0x3bed6b(_0x5586de['error']['message']);}logger[_0xa4d5('0x10')](_0xa4d5('0xb'),_0x166db3,_0x5586de[_0xa4d5('0x10')][_0xa4d5('0x11')]);return _0x408db0(_0x5586de[_0xa4d5('0x10')][_0xa4d5('0x11')]);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x166db3,_0xa4d5('0xc'));_0x408db0(_0x5586de[_0xa4d5('0x12')]['message']);}})[_0xa4d5('0x13')](function(_0x31eed7){logger[_0xa4d5('0x10')](_0xa4d5('0xb'),_0x166db3,_0x31eed7);_0x3bed6b(_0x31eed7);});});}
\ No newline at end of file
+var _0x2c16=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','CloudProvider,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x46f21d,_0x2476b6){var _0x5762b0=function(_0x4181e3){while(--_0x4181e3){_0x46f21d['push'](_0x46f21d['shift']());}};_0x5762b0(++_0x2476b6);}(_0x2c16,0xf0));var _0x62c1=function(_0xbb96e8,_0xca5d9a){_0xbb96e8=_0xbb96e8-0x0;var _0x642e0f=_0x2c16[_0xbb96e8];return _0x642e0f;};'use strict';var _=require(_0x62c1('0x0'));var util=require(_0x62c1('0x1'));var moment=require(_0x62c1('0x2'));var BPromise=require('bluebird');var rs=require(_0x62c1('0x3'));var fs=require('fs');var Redis=require(_0x62c1('0x4'));var db=require(_0x62c1('0x5'))['db'];var utils=require(_0x62c1('0x6'));var logger=require(_0x62c1('0x7'))(_0x62c1('0x8'));var config=require(_0x62c1('0x9'));var jayson=require(_0x62c1('0xa'));var client=jayson[_0x62c1('0xb')][_0x62c1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x527671,_0x113a32,_0x4bcc7b){return new BPromise(function(_0x236518,_0x4af828){return client[_0x62c1('0xd')](_0x527671,_0x4bcc7b)['then'](function(_0x153420){logger[_0x62c1('0xe')]('CloudProvider,\x20%s,\x20%s',_0x113a32,_0x62c1('0xf'));logger['debug'](_0x62c1('0x10'),_0x113a32,_0x62c1('0xf'),JSON[_0x62c1('0x11')](_0x153420));if(_0x153420[_0x62c1('0x12')]){if(_0x153420[_0x62c1('0x12')]['code']===0x1f4){logger['error'](_0x62c1('0x13'),_0x113a32,_0x153420[_0x62c1('0x12')]['message']);return _0x4af828(_0x153420['error'][_0x62c1('0x14')]);}logger[_0x62c1('0x12')]('CloudProvider,\x20%s,\x20%s',_0x113a32,_0x153420[_0x62c1('0x12')][_0x62c1('0x14')]);return _0x236518(_0x153420[_0x62c1('0x12')][_0x62c1('0x14')]);}else{logger[_0x62c1('0xe')]('CloudProvider,\x20%s,\x20%s',_0x113a32,_0x62c1('0xf'));_0x236518(_0x153420['result'][_0x62c1('0x14')]);}})[_0x62c1('0x15')](function(_0x969e09){logger[_0x62c1('0x12')](_0x62c1('0x13'),_0x113a32,_0x969e09);_0x4af828(_0x969e09);});});}
\ No newline at end of file
index 248cfce..f283fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x7a54,0x106));var _0x47a5=function(_0x4788ec,_0xde789d){_0x4788ec=_0x4788ec-0x0;var _0x2282f1=_0x7a54[_0x4788ec];return _0x2282f1;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
+var _0x2ef3=['Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','/:id','show','post','put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','express'];(function(_0x1fec2c,_0x2f245d){var _0x44521c=function(_0x16ccba){while(--_0x16ccba){_0x1fec2c['push'](_0x1fec2c['shift']());}};_0x44521c(++_0x2f245d);}(_0x2ef3,0xba));var _0x32ef=function(_0x3b4070,_0x4a35b5){_0x3b4070=_0x3b4070-0x0;var _0x195018=_0x2ef3[_0x3b4070];return _0x195018;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['index']);router[_0x32ef('0x4')](_0x32ef('0x6'),auth['isAuthenticated'](),controller[_0x32ef('0x7')]);router[_0x32ef('0x8')]('/',auth['isAuthenticated'](),controller['create']);router[_0x32ef('0x9')](_0x32ef('0x6'),auth[_0x32ef('0x5')](),controller[_0x32ef('0xa')]);router[_0x32ef('0xb')](_0x32ef('0x6'),auth[_0x32ef('0x5')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x4')](_0x32ef('0xd'),auth['isAuthenticated'](),controller['oauth2MicrosoftAuthorize']);router[_0x32ef('0x8')](_0x32ef('0xe'),controller[_0x32ef('0xf')]);module[_0x32ef('0x10')]=router;
\ No newline at end of file
index bbe19fe..4b41c82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8373=['name','sequelize','exports','STRING'];(function(_0x387f0d,_0x31aca5){var _0x5336c6=function(_0x118f8f){while(--_0x118f8f){_0x387f0d['push'](_0x387f0d['shift']());}};_0x5336c6(++_0x31aca5);}(_0x8373,0x1c5));var _0x3837=function(_0xcfb203,_0x2cfcd6){_0xcfb203=_0xcfb203-0x0;var _0x318a37=_0x8373[_0xcfb203];return _0x318a37;};'use strict';var Sequelize=require(_0x3837('0x0'));module[_0x3837('0x1')]={'name':{'type':Sequelize[_0x3837('0x2')],'unique':_0x3837('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x3837('0x2')]},'companyId':{'type':Sequelize[_0x3837('0x2')]},'website':{'type':Sequelize[_0x3837('0x2')]},'phone':{'type':Sequelize[_0x3837('0x2')]},'fax':{'type':Sequelize[_0x3837('0x2')]},'type':{'type':Sequelize[_0x3837('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x3837('0x2')]},'city':{'type':Sequelize[_0x3837('0x2')]},'country':{'type':Sequelize[_0x3837('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x3837('0x2')]},'sStreet':{'type':Sequelize[_0x3837('0x2')]},'sPostalCode':{'type':Sequelize[_0x3837('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x3837('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x035e=['sequelize','exports','STRING','name'];(function(_0x2f10da,_0x21f467){var _0x76dc8b=function(_0x297878){while(--_0x297878){_0x2f10da['push'](_0x2f10da['shift']());}};_0x76dc8b(++_0x21f467);}(_0x035e,0x194));var _0xe035=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x035e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe035('0x0'));module[_0xe035('0x1')]={'name':{'type':Sequelize[_0xe035('0x2')],'unique':_0xe035('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xe035('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xe035('0x2')]},'phone':{'type':Sequelize[_0xe035('0x2')]},'fax':{'type':Sequelize[_0xe035('0x2')]},'type':{'type':Sequelize[_0xe035('0x2')]},'street':{'type':Sequelize[_0xe035('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xe035('0x2')]},'country':{'type':Sequelize[_0xe035('0x2')]},'email':{'type':Sequelize[_0xe035('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xe035('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0xe035('0x2')]},'sCity':{'type':Sequelize[_0xe035('0x2')]},'sCountry':{'type':Sequelize[_0xe035('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d729801..443ef78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d7=['update','then','destroy','UserProfileResource','end','sendStatus','stack','name','send','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','CmCompany','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','Companies','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','getContacts','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save'];(function(_0x552841,_0x383b1d){var _0x3c33f0=function(_0x4a4184){while(--_0x4a4184){_0x552841['push'](_0x552841['shift']());}};_0x3c33f0(++_0x383b1d);}(_0x77d7,0xd7));var _0x777d=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x77d7[_0x13d07a];return _0x5ee0ee;};'use strict';var emlformat=require(_0x777d('0x0'));var rimraf=require(_0x777d('0x1'));var zipdir=require(_0x777d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x777d('0x3'));var moment=require(_0x777d('0x4'));var BPromise=require(_0x777d('0x5'));var Mustache=require(_0x777d('0x6'));var util=require(_0x777d('0x7'));var path=require('path');var sox=require(_0x777d('0x8'));var csv=require(_0x777d('0x9'));var ejs=require(_0x777d('0xa'));var fs=require('fs');var fs_extra=require(_0x777d('0xb'));var _=require(_0x777d('0xc'));var squel=require(_0x777d('0xd'));var crypto=require(_0x777d('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x777d('0x9'));var querystring=require(_0x777d('0xf'));var Papa=require('papaparse');var Redis=require(_0x777d('0x10'));var authService=require(_0x777d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x777d('0x12'));var hardwareService=require(_0x777d('0x13'));var logger=require(_0x777d('0x14'))(_0x777d('0x15'));var utils=require(_0x777d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x777d('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bc692,_0x28bcc4){_0x28bcc4=_0x28bcc4||0xcc;return function(_0x3b537d){if(_0x3b537d){return _0x5bc692['sendStatus'](_0x28bcc4);}return _0x5bc692[_0x777d('0x18')](_0x28bcc4)['end']();};}function respondWithResult(_0x3c46d3,_0x9abfd0){_0x9abfd0=_0x9abfd0||0xc8;return function(_0x2c8d60){if(_0x2c8d60){return _0x3c46d3[_0x777d('0x18')](_0x9abfd0)[_0x777d('0x19')](_0x2c8d60);}};}function respondWithFilteredResult(_0x38871f,_0x3518de){return function(_0xa3d179){if(_0xa3d179){var _0x4acd78=typeof _0x3518de[_0x777d('0x1a')]===_0x777d('0x1b')&&typeof _0x3518de[_0x777d('0x1c')]===_0x777d('0x1b');var _0x20a463=_0xa3d179[_0x777d('0x1d')];var _0x447c98=_0x4acd78?0x0:_0x3518de[_0x777d('0x1a')];var _0x4cd664=_0x4acd78?_0xa3d179[_0x777d('0x1d')]:_0x3518de['offset']+_0x3518de[_0x777d('0x1c')];var _0x3db4e1;if(_0x4cd664>=_0x20a463){_0x4cd664=_0x20a463;_0x3db4e1=0xc8;}else{_0x3db4e1=0xce;}_0x38871f[_0x777d('0x18')](_0x3db4e1);return _0x38871f['set'](_0x777d('0x1e'),_0x447c98+'-'+_0x4cd664+'/'+_0x20a463)[_0x777d('0x19')](_0xa3d179);}return null;};}function patchUpdates(_0x7e6b1f){return function(_0x5da3fa){try{jsonpatch[_0x777d('0x1f')](_0x5da3fa,_0x7e6b1f,!![]);}catch(_0x489a9a){return BPromise[_0x777d('0x20')](_0x489a9a);}return _0x5da3fa[_0x777d('0x21')]();};}function saveUpdates(_0x3bb0f7,_0x283996){return function(_0x1ddaf2){if(_0x1ddaf2){return _0x1ddaf2[_0x777d('0x22')](_0x3bb0f7)[_0x777d('0x23')](function(_0x5e4d54){return _0x5e4d54;});}return null;};}function removeEntity(_0x5b04e7,_0xd02048){return function(_0x2afa7f){if(_0x2afa7f){return _0x2afa7f[_0x777d('0x24')]()['then'](function(){var _0x3e283f=_0x2afa7f['get']({'plain':!![]});var _0x21fc7d='Companies';return db[_0x777d('0x25')][_0x777d('0x24')]({'where':{'type':_0x21fc7d,'resourceId':_0x3e283f['id']}})[_0x777d('0x23')](function(){return _0x2afa7f;});})[_0x777d('0x23')](function(){_0x5b04e7[_0x777d('0x18')](0xcc)[_0x777d('0x26')]();});}};}function handleEntityNotFound(_0x36fabb,_0x415f2f){return function(_0xb7b4){if(!_0xb7b4){_0x36fabb[_0x777d('0x27')](0x194);}return _0xb7b4;};}function handleError(_0x2179f2,_0x38512f){_0x38512f=_0x38512f||0x1f4;return function(_0x46b905){logger['error'](_0x46b905[_0x777d('0x28')]);if(_0x46b905[_0x777d('0x29')]){delete _0x46b905[_0x777d('0x29')];}_0x2179f2[_0x777d('0x18')](_0x38512f)[_0x777d('0x2a')](_0x46b905);};}exports['index']=function(_0x208721,_0x27ab55){var _0x3f9a8d={},_0x2b925c={},_0x2f68d6={'count':0x0,'rows':[]};return db['CmCompany'][_0x777d('0x2b')]()[_0x777d('0x23')](function(_0xc365a5){_0x2b925c[_0x777d('0x2c')]=_[_0x777d('0x2d')](_0xc365a5);_0x2b925c['query']=_[_0x777d('0x2d')](_0x208721[_0x777d('0x2e')]);_0x2b925c[_0x777d('0x2f')]=_[_0x777d('0x30')](_0x2b925c[_0x777d('0x2c')],_0x2b925c[_0x777d('0x2e')]);_0x3f9a8d[_0x777d('0x31')]=_['intersection'](_0x2b925c[_0x777d('0x2c')],qs[_0x777d('0x32')](_0x208721[_0x777d('0x2e')][_0x777d('0x32')]));_0x3f9a8d[_0x777d('0x31')]=_0x3f9a8d[_0x777d('0x31')][_0x777d('0x33')]?_0x3f9a8d[_0x777d('0x31')]:_0x2b925c['model'];if(!_0x208721['query'][_0x777d('0x34')](_0x777d('0x35'))){_0x3f9a8d[_0x777d('0x1c')]=qs[_0x777d('0x1c')](_0x208721[_0x777d('0x2e')][_0x777d('0x1c')]);_0x3f9a8d[_0x777d('0x1a')]=qs[_0x777d('0x1a')](_0x208721['query'][_0x777d('0x1a')]);}_0x3f9a8d[_0x777d('0x36')]=qs['sort'](_0x208721[_0x777d('0x2e')][_0x777d('0x37')]);_0x3f9a8d[_0x777d('0x38')]=qs['filters'](_[_0x777d('0x39')](_0x208721[_0x777d('0x2e')],_0x2b925c[_0x777d('0x2f')]),_0xc365a5);if(_0x208721['query'][_0x777d('0x3a')]){_0x3f9a8d['where']=_[_0x777d('0x3b')](_0x3f9a8d[_0x777d('0x38')],{'$or':_[_0x777d('0x3c')](_0x3f9a8d['attributes'],function(_0x3027ad){var _0x9a91dd={};_0x9a91dd[_0x3027ad]={'$like':'%'+_0x208721[_0x777d('0x2e')][_0x777d('0x3a')]+'%'};return _0x9a91dd;})});}_0x3f9a8d=_['merge']({},_0x3f9a8d,_0x208721[_0x777d('0x3d')]);var _0x2085f6={'where':_0x3f9a8d['where']};return db[_0x777d('0x3e')][_0x777d('0x1d')](_0x2085f6)[_0x777d('0x23')](function(_0x419e86){_0x2f68d6[_0x777d('0x1d')]=_0x419e86;if(_0x208721[_0x777d('0x2e')][_0x777d('0x3f')]){_0x3f9a8d[_0x777d('0x40')]=[{'all':!![]}];}return db[_0x777d('0x3e')][_0x777d('0x41')](_0x3f9a8d);})['then'](function(_0x5094c1){_0x2f68d6[_0x777d('0x42')]=_0x5094c1;return _0x2f68d6;})['then'](respondWithFilteredResult(_0x27ab55,_0x3f9a8d))[_0x777d('0x43')](handleError(_0x27ab55,null));})[_0x777d('0x43')](handleError(_0x27ab55,null));};exports[_0x777d('0x44')]=function(_0x515003,_0x5c1180){var _0x5f1a0a={'raw':![],'where':{'id':_0x515003[_0x777d('0x45')]['id']}},_0x547230={};_0x547230[_0x777d('0x2c')]=_[_0x777d('0x2d')](db[_0x777d('0x3e')]['rawAttributes']);_0x547230['query']=_[_0x777d('0x2d')](_0x515003['query']);_0x547230['filters']=_[_0x777d('0x30')](_0x547230[_0x777d('0x2c')],_0x547230[_0x777d('0x2e')]);_0x5f1a0a[_0x777d('0x31')]=_['intersection'](_0x547230[_0x777d('0x2c')],qs[_0x777d('0x32')](_0x515003[_0x777d('0x2e')][_0x777d('0x32')]));_0x5f1a0a[_0x777d('0x31')]=_0x5f1a0a[_0x777d('0x31')][_0x777d('0x33')]?_0x5f1a0a[_0x777d('0x31')]:_0x547230[_0x777d('0x2c')];if(_0x515003['query'][_0x777d('0x3f')]){_0x5f1a0a[_0x777d('0x40')]=[{'all':!![]}];}_0x5f1a0a=_[_0x777d('0x3b')]({},_0x5f1a0a,_0x515003[_0x777d('0x3d')]);return db[_0x777d('0x3e')][_0x777d('0x46')](_0x5f1a0a)[_0x777d('0x23')](handleEntityNotFound(_0x5c1180,null))['then'](respondWithResult(_0x5c1180,null))[_0x777d('0x43')](handleError(_0x5c1180,null));};exports[_0x777d('0x47')]=function(_0x45fb32,_0x524a45){return db[_0x777d('0x3e')]['create'](_0x45fb32[_0x777d('0x48')],{})[_0x777d('0x23')](function(_0xb3eee9){var _0x2f6683=_0x45fb32[_0x777d('0x49')]['get']({'plain':!![]});if(!_0x2f6683)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f6683[_0x777d('0x4a')]===_0x777d('0x49')){var _0x449203=_0xb3eee9['get']({'plain':!![]});var _0x52d1dc=_0x777d('0x4b');return db[_0x777d('0x4c')][_0x777d('0x46')]({'where':{'name':_0x52d1dc,'userProfileId':_0x2f6683['userProfileId']},'raw':!![]})['then'](function(_0x31ebe2){if(_0x31ebe2&&_0x31ebe2[_0x777d('0x4d')]===0x0){return db[_0x777d('0x25')][_0x777d('0x47')]({'name':_0x449203[_0x777d('0x29')],'resourceId':_0x449203['id'],'type':_0x31ebe2[_0x777d('0x29')],'sectionId':_0x31ebe2['id']},{})[_0x777d('0x23')](function(){return _0xb3eee9;});}else{return _0xb3eee9;}})['catch'](function(_0x5fcb18){logger[_0x777d('0x4e')](_0x777d('0x4f'),_0x5fcb18);throw _0x5fcb18;});}return _0xb3eee9;})['then'](respondWithResult(_0x524a45,0xc9))[_0x777d('0x43')](handleError(_0x524a45,null));};exports[_0x777d('0x22')]=function(_0x3d2e66,_0xd78c3d){if(_0x3d2e66[_0x777d('0x48')]['id']){delete _0x3d2e66[_0x777d('0x48')]['id'];}return db['CmCompany'][_0x777d('0x46')]({'where':{'id':_0x3d2e66[_0x777d('0x45')]['id']}})[_0x777d('0x23')](handleEntityNotFound(_0xd78c3d,null))[_0x777d('0x23')](saveUpdates(_0x3d2e66[_0x777d('0x48')],null))['then'](respondWithResult(_0xd78c3d,null))[_0x777d('0x43')](handleError(_0xd78c3d,null));};exports[_0x777d('0x24')]=function(_0x282868,_0x3271a6){return db[_0x777d('0x3e')][_0x777d('0x46')]({'where':{'id':_0x282868[_0x777d('0x45')]['id']}})[_0x777d('0x23')](handleEntityNotFound(_0x3271a6,null))[_0x777d('0x23')](removeEntity(_0x3271a6,null))['catch'](handleError(_0x3271a6,null));};exports[_0x777d('0x2b')]=function(_0x32f56b,_0x493581){return db[_0x777d('0x3e')][_0x777d('0x2b')]()[_0x777d('0x23')](respondWithResult(_0x493581,null))['catch'](handleError(_0x493581,null));};exports[_0x777d('0x50')]=function(_0x563e3e,_0x24bd61,_0x1478e7){return db['CmContact'][_0x777d('0x46')]({'where':{'id':_0x563e3e[_0x777d('0x45')]['id']}})[_0x777d('0x23')](handleEntityNotFound(_0x24bd61,null))[_0x777d('0x23')](function(_0x1b877d){if(_0x1b877d){return _0x1b877d[_0x777d('0x50')](_0x563e3e[_0x777d('0x48')]['ids'],_['omit'](_0x563e3e[_0x777d('0x48')],['ids','id'])||{});}})[_0x777d('0x23')](respondWithResult(_0x24bd61,null))[_0x777d('0x43')](handleError(_0x24bd61,null));};exports['getContacts']=function(_0x54dbc7,_0x287959,_0x8a3778){var _0x2055bf={};var _0x3b6206={};var _0x3eaf4f;var _0x160a06;return db[_0x777d('0x3e')]['findOne']({'where':{'id':_0x54dbc7['params']['id']}})[_0x777d('0x23')](handleEntityNotFound(_0x287959,null))['then'](function(_0x365617){if(_0x365617){_0x3eaf4f=_0x365617;_0x3b6206[_0x777d('0x2c')]=_[_0x777d('0x2d')](db[_0x777d('0x51')]['rawAttributes']);_0x3b6206[_0x777d('0x2e')]=_[_0x777d('0x2d')](_0x54dbc7[_0x777d('0x2e')]);_0x3b6206[_0x777d('0x2f')]=_['intersection'](_0x3b6206[_0x777d('0x2c')],_0x3b6206[_0x777d('0x2e')]);_0x2055bf['attributes']=_[_0x777d('0x30')](_0x3b6206[_0x777d('0x2c')],qs[_0x777d('0x32')](_0x54dbc7[_0x777d('0x2e')][_0x777d('0x32')]));_0x2055bf[_0x777d('0x31')]=_0x2055bf[_0x777d('0x31')]['length']?_0x2055bf[_0x777d('0x31')]:_0x3b6206['model'];_0x2055bf[_0x777d('0x36')]=qs[_0x777d('0x37')](_0x54dbc7[_0x777d('0x2e')][_0x777d('0x37')]);_0x2055bf[_0x777d('0x38')]=qs[_0x777d('0x2f')](_['pick'](_0x54dbc7['query'],_0x3b6206[_0x777d('0x2f')]));if(_0x54dbc7[_0x777d('0x2e')]['filter']){_0x2055bf[_0x777d('0x38')]=_[_0x777d('0x3b')](_0x2055bf['where'],{'$or':_[_0x777d('0x3c')](_0x2055bf['attributes'],function(_0x78faba){var _0xf858a2={};_0xf858a2[_0x78faba]={'$like':'%'+_0x54dbc7[_0x777d('0x2e')][_0x777d('0x3a')]+'%'};return _0xf858a2;})});}_0x2055bf=_[_0x777d('0x3b')]({},_0x2055bf,_0x54dbc7[_0x777d('0x3d')]);return _0x3eaf4f['getContacts'](_0x2055bf);}})['then'](function(_0x15e39a){if(_0x15e39a){_0x160a06=_0x15e39a['length'];if(!_0x54dbc7[_0x777d('0x2e')]['hasOwnProperty'](_0x777d('0x35'))){_0x2055bf[_0x777d('0x1c')]=qs[_0x777d('0x1c')](_0x54dbc7[_0x777d('0x2e')][_0x777d('0x1c')]);_0x2055bf['offset']=qs[_0x777d('0x1a')](_0x54dbc7[_0x777d('0x2e')][_0x777d('0x1a')]);}return _0x3eaf4f[_0x777d('0x52')](_0x2055bf);}})[_0x777d('0x23')](function(_0x4e33ce){if(_0x4e33ce){return _0x4e33ce?{'count':_0x160a06,'rows':_0x4e33ce}:null;}})[_0x777d('0x23')](respondWithResult(_0x287959,null))[_0x777d('0x43')](handleError(_0x287959,null));};
\ No newline at end of file
+var _0xf6ae=['status','json','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','Companies','UserProfileResource','error','stack','name','index','CmCompany','describe','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','addContacts','ids','omit','getContacts','findOne','rawAttributes','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x56a7f4,_0x59857e){var _0x1b7e81=function(_0x36d413){while(--_0x36d413){_0x56a7f4['push'](_0x56a7f4['shift']());}};_0x1b7e81(++_0x59857e);}(_0xf6ae,0x1af));var _0xef6a=function(_0x244e37,_0x3a77e9){_0x244e37=_0x244e37-0x0;var _0x5daf62=_0xf6ae[_0x244e37];return _0x5daf62;};'use strict';var emlformat=require(_0xef6a('0x0'));var rimraf=require(_0xef6a('0x1'));var zipdir=require(_0xef6a('0x2'));var jsonpatch=require(_0xef6a('0x3'));var rp=require(_0xef6a('0x4'));var moment=require(_0xef6a('0x5'));var BPromise=require(_0xef6a('0x6'));var Mustache=require('mustache');var util=require(_0xef6a('0x7'));var path=require('path');var sox=require(_0xef6a('0x8'));var csv=require(_0xef6a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef6a('0xa'));var _=require(_0xef6a('0xb'));var squel=require(_0xef6a('0xc'));var crypto=require(_0xef6a('0xd'));var jsforce=require(_0xef6a('0xe'));var deskjs=require(_0xef6a('0xf'));var toCsv=require(_0xef6a('0x9'));var querystring=require(_0xef6a('0x10'));var Papa=require(_0xef6a('0x11'));var Redis=require(_0xef6a('0x12'));var authService=require(_0xef6a('0x13'));var qs=require(_0xef6a('0x14'));var as=require(_0xef6a('0x15'));var hardwareService=require(_0xef6a('0x16'));var logger=require(_0xef6a('0x17'))(_0xef6a('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xef6a('0x19'));var db=require(_0xef6a('0x1a'))['db'];function respondWithStatusCode(_0x59c234,_0x4b773e){_0x4b773e=_0x4b773e||0xcc;return function(_0x448fca){if(_0x448fca){return _0x59c234[_0xef6a('0x1b')](_0x4b773e);}return _0x59c234['status'](_0x4b773e)[_0xef6a('0x1c')]();};}function respondWithResult(_0x190fb4,_0x4598dc){_0x4598dc=_0x4598dc||0xc8;return function(_0x17311e){if(_0x17311e){return _0x190fb4[_0xef6a('0x1d')](_0x4598dc)[_0xef6a('0x1e')](_0x17311e);}};}function respondWithFilteredResult(_0x2b1a6a,_0x30b53d){return function(_0x7b1c53){if(_0x7b1c53){var _0x13760c=typeof _0x30b53d['offset']===_0xef6a('0x1f')&&typeof _0x30b53d[_0xef6a('0x20')]===_0xef6a('0x1f');var _0x282cc7=_0x7b1c53[_0xef6a('0x21')];var _0x252893=_0x13760c?0x0:_0x30b53d['offset'];var _0xd7cd20=_0x13760c?_0x7b1c53['count']:_0x30b53d['offset']+_0x30b53d[_0xef6a('0x20')];var _0x173482;if(_0xd7cd20>=_0x282cc7){_0xd7cd20=_0x282cc7;_0x173482=0xc8;}else{_0x173482=0xce;}_0x2b1a6a[_0xef6a('0x1d')](_0x173482);return _0x2b1a6a[_0xef6a('0x22')](_0xef6a('0x23'),_0x252893+'-'+_0xd7cd20+'/'+_0x282cc7)[_0xef6a('0x1e')](_0x7b1c53);}return null;};}function patchUpdates(_0x2fe528){return function(_0x3e356f){try{jsonpatch[_0xef6a('0x24')](_0x3e356f,_0x2fe528,!![]);}catch(_0x26d132){return BPromise[_0xef6a('0x25')](_0x26d132);}return _0x3e356f['save']();};}function saveUpdates(_0x5caf76,_0x18aca4){return function(_0x2666c4){if(_0x2666c4){return _0x2666c4['update'](_0x5caf76)[_0xef6a('0x26')](function(_0x66720){return _0x66720;});}return null;};}function removeEntity(_0x26f592,_0x3320c0){return function(_0x552f0a){if(_0x552f0a){return _0x552f0a[_0xef6a('0x27')]()[_0xef6a('0x26')](function(){var _0x1e9769=_0x552f0a[_0xef6a('0x28')]({'plain':!![]});var _0x35ed91=_0xef6a('0x29');return db[_0xef6a('0x2a')][_0xef6a('0x27')]({'where':{'type':_0x35ed91,'resourceId':_0x1e9769['id']}})[_0xef6a('0x26')](function(){return _0x552f0a;});})['then'](function(){_0x26f592['status'](0xcc)[_0xef6a('0x1c')]();});}};}function handleEntityNotFound(_0x5e27de,_0x3cb4dc){return function(_0x59b400){if(!_0x59b400){_0x5e27de[_0xef6a('0x1b')](0x194);}return _0x59b400;};}function handleError(_0x248a17,_0x3a7d58){_0x3a7d58=_0x3a7d58||0x1f4;return function(_0xc4c6e8){logger[_0xef6a('0x2b')](_0xc4c6e8[_0xef6a('0x2c')]);if(_0xc4c6e8['name']){delete _0xc4c6e8[_0xef6a('0x2d')];}_0x248a17['status'](_0x3a7d58)['send'](_0xc4c6e8);};}exports[_0xef6a('0x2e')]=function(_0x20b4d9,_0x2a9be8){var _0x351c5e={},_0x2207af={},_0x50d360={'count':0x0,'rows':[]};return db[_0xef6a('0x2f')][_0xef6a('0x30')]()[_0xef6a('0x26')](function(_0x54f072){_0x2207af['model']=_[_0xef6a('0x31')](_0x54f072);_0x2207af[_0xef6a('0x32')]=_[_0xef6a('0x31')](_0x20b4d9[_0xef6a('0x32')]);_0x2207af[_0xef6a('0x33')]=_['intersection'](_0x2207af[_0xef6a('0x34')],_0x2207af['query']);_0x351c5e[_0xef6a('0x35')]=_[_0xef6a('0x36')](_0x2207af[_0xef6a('0x34')],qs[_0xef6a('0x37')](_0x20b4d9['query'][_0xef6a('0x37')]));_0x351c5e[_0xef6a('0x35')]=_0x351c5e['attributes'][_0xef6a('0x38')]?_0x351c5e['attributes']:_0x2207af['model'];if(!_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x39')](_0xef6a('0x3a'))){_0x351c5e[_0xef6a('0x20')]=qs[_0xef6a('0x20')](_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x20')]);_0x351c5e['offset']=qs['offset'](_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x3b')]);}_0x351c5e[_0xef6a('0x3c')]=qs[_0xef6a('0x3d')](_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x3d')]);_0x351c5e[_0xef6a('0x3e')]=qs[_0xef6a('0x33')](_['pick'](_0x20b4d9['query'],_0x2207af['filters']),_0x54f072);if(_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x3f')]){_0x351c5e[_0xef6a('0x3e')]=_[_0xef6a('0x40')](_0x351c5e['where'],{'$or':_[_0xef6a('0x41')](_0x351c5e['attributes'],function(_0x244f7a){var _0x4ad64a={};_0x4ad64a[_0x244f7a]={'$like':'%'+_0x20b4d9[_0xef6a('0x32')][_0xef6a('0x3f')]+'%'};return _0x4ad64a;})});}_0x351c5e=_['merge']({},_0x351c5e,_0x20b4d9[_0xef6a('0x42')]);var _0x11a1ce={'where':_0x351c5e[_0xef6a('0x3e')]};return db[_0xef6a('0x2f')][_0xef6a('0x21')](_0x11a1ce)[_0xef6a('0x26')](function(_0x3c31fe){_0x50d360[_0xef6a('0x21')]=_0x3c31fe;if(_0x20b4d9['query'][_0xef6a('0x43')]){_0x351c5e[_0xef6a('0x44')]=[{'all':!![]}];}return db[_0xef6a('0x2f')][_0xef6a('0x45')](_0x351c5e);})[_0xef6a('0x26')](function(_0x1816ec){_0x50d360[_0xef6a('0x46')]=_0x1816ec;return _0x50d360;})['then'](respondWithFilteredResult(_0x2a9be8,_0x351c5e))['catch'](handleError(_0x2a9be8,null));})[_0xef6a('0x47')](handleError(_0x2a9be8,null));};exports[_0xef6a('0x48')]=function(_0x4fe43c,_0x942d92){var _0x100589={'raw':![],'where':{'id':_0x4fe43c['params']['id']}},_0x1b7d6d={};_0x1b7d6d[_0xef6a('0x34')]=_[_0xef6a('0x31')](db[_0xef6a('0x2f')]['rawAttributes']);_0x1b7d6d['query']=_[_0xef6a('0x31')](_0x4fe43c[_0xef6a('0x32')]);_0x1b7d6d[_0xef6a('0x33')]=_[_0xef6a('0x36')](_0x1b7d6d[_0xef6a('0x34')],_0x1b7d6d[_0xef6a('0x32')]);_0x100589[_0xef6a('0x35')]=_[_0xef6a('0x36')](_0x1b7d6d['model'],qs[_0xef6a('0x37')](_0x4fe43c['query']['fields']));_0x100589[_0xef6a('0x35')]=_0x100589[_0xef6a('0x35')][_0xef6a('0x38')]?_0x100589[_0xef6a('0x35')]:_0x1b7d6d[_0xef6a('0x34')];if(_0x4fe43c['query'][_0xef6a('0x43')]){_0x100589[_0xef6a('0x44')]=[{'all':!![]}];}_0x100589=_[_0xef6a('0x40')]({},_0x100589,_0x4fe43c[_0xef6a('0x42')]);return db['CmCompany'][_0xef6a('0x49')](_0x100589)[_0xef6a('0x26')](handleEntityNotFound(_0x942d92,null))[_0xef6a('0x26')](respondWithResult(_0x942d92,null))[_0xef6a('0x47')](handleError(_0x942d92,null));};exports[_0xef6a('0x4a')]=function(_0x1dce0e,_0x28db48){return db['CmCompany']['create'](_0x1dce0e[_0xef6a('0x4b')],{})[_0xef6a('0x26')](function(_0x190756){var _0x135fde=_0x1dce0e['user'][_0xef6a('0x28')]({'plain':!![]});if(!_0x135fde)throw new Error(_0xef6a('0x4c'));if(_0x135fde[_0xef6a('0x4d')]===_0xef6a('0x4e')){var _0x26b02c=_0x190756[_0xef6a('0x28')]({'plain':!![]});var _0x2801b2=_0xef6a('0x29');return db[_0xef6a('0x4f')][_0xef6a('0x49')]({'where':{'name':_0x2801b2,'userProfileId':_0x135fde[_0xef6a('0x50')]},'raw':!![]})['then'](function(_0xe3b2a4){if(_0xe3b2a4&&_0xe3b2a4[_0xef6a('0x51')]===0x0){return db[_0xef6a('0x2a')][_0xef6a('0x4a')]({'name':_0x26b02c[_0xef6a('0x2d')],'resourceId':_0x26b02c['id'],'type':_0xe3b2a4[_0xef6a('0x2d')],'sectionId':_0xe3b2a4['id']},{})[_0xef6a('0x26')](function(){return _0x190756;});}else{return _0x190756;}})[_0xef6a('0x47')](function(_0x193733){logger[_0xef6a('0x2b')](_0xef6a('0x52'),_0x193733);throw _0x193733;});}return _0x190756;})[_0xef6a('0x26')](respondWithResult(_0x28db48,0xc9))['catch'](handleError(_0x28db48,null));};exports[_0xef6a('0x53')]=function(_0x523ec4,_0x12b53f){if(_0x523ec4[_0xef6a('0x4b')]['id']){delete _0x523ec4['body']['id'];}return db[_0xef6a('0x2f')][_0xef6a('0x49')]({'where':{'id':_0x523ec4['params']['id']}})['then'](handleEntityNotFound(_0x12b53f,null))[_0xef6a('0x26')](saveUpdates(_0x523ec4[_0xef6a('0x4b')],null))[_0xef6a('0x26')](respondWithResult(_0x12b53f,null))[_0xef6a('0x47')](handleError(_0x12b53f,null));};exports[_0xef6a('0x27')]=function(_0x2525a4,_0x33dc4d){return db[_0xef6a('0x2f')]['find']({'where':{'id':_0x2525a4['params']['id']}})[_0xef6a('0x26')](handleEntityNotFound(_0x33dc4d,null))[_0xef6a('0x26')](removeEntity(_0x33dc4d,null))[_0xef6a('0x47')](handleError(_0x33dc4d,null));};exports[_0xef6a('0x30')]=function(_0x23668c,_0x632b4b){return db[_0xef6a('0x2f')]['describe']()[_0xef6a('0x26')](respondWithResult(_0x632b4b,null))['catch'](handleError(_0x632b4b,null));};exports['addContacts']=function(_0x48b09a,_0x351efa,_0x415335){return db['CmContact']['find']({'where':{'id':_0x48b09a[_0xef6a('0x54')]['id']}})[_0xef6a('0x26')](handleEntityNotFound(_0x351efa,null))['then'](function(_0x12d71e){if(_0x12d71e){return _0x12d71e[_0xef6a('0x55')](_0x48b09a[_0xef6a('0x4b')][_0xef6a('0x56')],_[_0xef6a('0x57')](_0x48b09a['body'],['ids','id'])||{});}})[_0xef6a('0x26')](respondWithResult(_0x351efa,null))[_0xef6a('0x47')](handleError(_0x351efa,null));};exports[_0xef6a('0x58')]=function(_0xf692df,_0x58412d,_0x1379e5){var _0x3669db={};var _0x2547bb={};var _0x1467ae;var _0x24ec80;return db[_0xef6a('0x2f')][_0xef6a('0x59')]({'where':{'id':_0xf692df[_0xef6a('0x54')]['id']}})[_0xef6a('0x26')](handleEntityNotFound(_0x58412d,null))[_0xef6a('0x26')](function(_0x39dc01){if(_0x39dc01){_0x1467ae=_0x39dc01;_0x2547bb[_0xef6a('0x34')]=_['keys'](db['CmContact'][_0xef6a('0x5a')]);_0x2547bb[_0xef6a('0x32')]=_[_0xef6a('0x31')](_0xf692df[_0xef6a('0x32')]);_0x2547bb['filters']=_[_0xef6a('0x36')](_0x2547bb[_0xef6a('0x34')],_0x2547bb[_0xef6a('0x32')]);_0x3669db['attributes']=_[_0xef6a('0x36')](_0x2547bb['model'],qs[_0xef6a('0x37')](_0xf692df[_0xef6a('0x32')]['fields']));_0x3669db[_0xef6a('0x35')]=_0x3669db[_0xef6a('0x35')][_0xef6a('0x38')]?_0x3669db[_0xef6a('0x35')]:_0x2547bb[_0xef6a('0x34')];_0x3669db[_0xef6a('0x3c')]=qs[_0xef6a('0x3d')](_0xf692df[_0xef6a('0x32')]['sort']);_0x3669db[_0xef6a('0x3e')]=qs[_0xef6a('0x33')](_[_0xef6a('0x5b')](_0xf692df[_0xef6a('0x32')],_0x2547bb['filters']));if(_0xf692df[_0xef6a('0x32')]['filter']){_0x3669db[_0xef6a('0x3e')]=_['merge'](_0x3669db[_0xef6a('0x3e')],{'$or':_[_0xef6a('0x41')](_0x3669db['attributes'],function(_0x2f681d){var _0x44ba83={};_0x44ba83[_0x2f681d]={'$like':'%'+_0xf692df['query']['filter']+'%'};return _0x44ba83;})});}_0x3669db=_['merge']({},_0x3669db,_0xf692df[_0xef6a('0x42')]);return _0x1467ae[_0xef6a('0x58')](_0x3669db);}})[_0xef6a('0x26')](function(_0x5f72c6){if(_0x5f72c6){_0x24ec80=_0x5f72c6[_0xef6a('0x38')];if(!_0xf692df[_0xef6a('0x32')][_0xef6a('0x39')]('nolimit')){_0x3669db[_0xef6a('0x20')]=qs['limit'](_0xf692df[_0xef6a('0x32')][_0xef6a('0x20')]);_0x3669db['offset']=qs[_0xef6a('0x3b')](_0xf692df[_0xef6a('0x32')][_0xef6a('0x3b')]);}return _0x1467ae['getContacts'](_0x3669db);}})[_0xef6a('0x26')](function(_0x2300bb){if(_0x2300bb){return _0x2300bb?{'count':_0x24ec80,'rows':_0x2300bb}:null;}})[_0xef6a('0x26')](respondWithResult(_0x58412d,null))[_0xef6a('0x47')](handleError(_0x58412d,null));};
\ No newline at end of file
index 670aa00..3217811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df1=['exports','define','cm_companies','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./cmCompany.attributes'];(function(_0x739d0b,_0x59c088){var _0x46dfd8=function(_0x51302f){while(--_0x51302f){_0x739d0b['push'](_0x739d0b['shift']());}};_0x46dfd8(++_0x59c088);}(_0x6df1,0xe7));var _0x16df=function(_0x1b97f3,_0xce63f3){_0x1b97f3=_0x1b97f3-0x0;var _0x32d818=_0x6df1[_0x1b97f3];return _0x32d818;};'use strict';var _=require(_0x16df('0x0'));var util=require(_0x16df('0x1'));var logger=require(_0x16df('0x2'))(_0x16df('0x3'));var moment=require(_0x16df('0x4'));var BPromise=require('bluebird');var rp=require(_0x16df('0x5'));var fs=require('fs');var path=require(_0x16df('0x6'));var rimraf=require(_0x16df('0x7'));var config=require('../../config/environment');var attributes=require(_0x16df('0x8'));module[_0x16df('0x9')]=function(_0x2a9aeb,_0x2a8ab8){return _0x2a9aeb[_0x16df('0xa')]('CmCompany',attributes,{'tableName':_0x16df('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b3c=['../../config/logger','api','bluebird','request-promise','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b3c,0x196));var _0xc3b3=function(_0x1f15e8,_0x456666){_0x1f15e8=_0x1f15e8-0x0;var _0x70662b=_0x3b3c[_0x1f15e8];return _0x70662b;};'use strict';var _=require(_0xc3b3('0x0'));var util=require(_0xc3b3('0x1'));var logger=require(_0xc3b3('0x2'))(_0xc3b3('0x3'));var moment=require('moment');var BPromise=require(_0xc3b3('0x4'));var rp=require(_0xc3b3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc3b3('0x6'));var attributes=require(_0xc3b3('0x7'));module[_0xc3b3('0x8')]=function(_0x5c7103,_0x59692d){return _0x5c7103[_0xc3b3('0x9')](_0xc3b3('0xa'),attributes,{'tableName':_0xc3b3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58d94f0..eae67cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd66a=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2f0ba3,_0x33c1c6){var _0x1c5633=function(_0x142c29){while(--_0x142c29){_0x2f0ba3['push'](_0x2f0ba3['shift']());}};_0x1c5633(++_0x33c1c6);}(_0xd66a,0x8a));var _0xad66=function(_0x28089e,_0x530f8a){_0x28089e=_0x28089e-0x0;var _0x46a73c=_0xd66a[_0x28089e];return _0x46a73c;};'use strict';var _=require(_0xad66('0x0'));var util=require(_0xad66('0x1'));var moment=require(_0xad66('0x2'));var BPromise=require(_0xad66('0x3'));var rs=require(_0xad66('0x4'));var fs=require('fs');var Redis=require(_0xad66('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xad66('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xad66('0x7'));var jayson=require(_0xad66('0x8'));var client=jayson[_0xad66('0x9')][_0xad66('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fd1fe,_0x407a0a,_0x3c2f4b){return new BPromise(function(_0x547c51,_0x1c34b6){return client['request'](_0x1fd1fe,_0x3c2f4b)[_0xad66('0xb')](function(_0x2d6ac4){logger[_0xad66('0xc')](_0xad66('0xd'),_0x407a0a,_0xad66('0xe'));logger[_0xad66('0xf')](_0xad66('0x10'),_0x407a0a,_0xad66('0xe'),JSON[_0xad66('0x11')](_0x2d6ac4));if(_0x2d6ac4[_0xad66('0x12')]){if(_0x2d6ac4[_0xad66('0x12')][_0xad66('0x13')]===0x1f4){logger[_0xad66('0x12')]('CmCompany,\x20%s,\x20%s',_0x407a0a,_0x2d6ac4[_0xad66('0x12')]['message']);return _0x1c34b6(_0x2d6ac4[_0xad66('0x12')][_0xad66('0x14')]);}logger['error'](_0xad66('0xd'),_0x407a0a,_0x2d6ac4[_0xad66('0x12')]['message']);return _0x547c51(_0x2d6ac4['error'][_0xad66('0x14')]);}else{logger[_0xad66('0xc')](_0xad66('0xd'),_0x407a0a,_0xad66('0xe'));_0x547c51(_0x2d6ac4[_0xad66('0x15')]['message']);}})[_0xad66('0x16')](function(_0x40cdb5){logger['error']('CmCompany,\x20%s,\x20%s',_0x407a0a,_0x40cdb5);_0x1c34b6(_0x40cdb5);});});}
\ No newline at end of file
+var _0x5720=['../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmCompany,\x20%s,\x20%s','catch','lodash','util'];(function(_0x35d59d,_0x306416){var _0x1c2947=function(_0x350bd6){while(--_0x350bd6){_0x35d59d['push'](_0x35d59d['shift']());}};_0x1c2947(++_0x306416);}(_0x5720,0x1a0));var _0x0572=function(_0x1404f5,_0x264c2c){_0x1404f5=_0x1404f5-0x0;var _0x45989b=_0x5720[_0x1404f5];return _0x45989b;};'use strict';var _=require(_0x0572('0x0'));var util=require(_0x0572('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0572('0x2'))['db'];var utils=require(_0x0572('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x0572('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x0572('0x5')][_0x0572('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x563724,_0x9c2350,_0x3594ac){return new BPromise(function(_0x118e25,_0x49033b){return client[_0x0572('0x7')](_0x563724,_0x3594ac)[_0x0572('0x8')](function(_0x2f4f75){logger[_0x0572('0x9')]('CmCompany,\x20%s,\x20%s',_0x9c2350,_0x0572('0xa'));logger[_0x0572('0xb')](_0x0572('0xc'),_0x9c2350,'request\x20sent',JSON[_0x0572('0xd')](_0x2f4f75));if(_0x2f4f75['error']){if(_0x2f4f75[_0x0572('0xe')][_0x0572('0xf')]===0x1f4){logger['error']('CmCompany,\x20%s,\x20%s',_0x9c2350,_0x2f4f75[_0x0572('0xe')][_0x0572('0x10')]);return _0x49033b(_0x2f4f75[_0x0572('0xe')][_0x0572('0x10')]);}logger[_0x0572('0xe')](_0x0572('0x11'),_0x9c2350,_0x2f4f75[_0x0572('0xe')][_0x0572('0x10')]);return _0x118e25(_0x2f4f75['error']['message']);}else{logger[_0x0572('0x9')]('CmCompany,\x20%s,\x20%s',_0x9c2350,'request\x20sent');_0x118e25(_0x2f4f75['result'][_0x0572('0x10')]);}})[_0x0572('0x12')](function(_0x4a8307){logger['error'](_0x0572('0x11'),_0x9c2350,_0x4a8307);_0x49033b(_0x4a8307);});});}
\ No newline at end of file
index 74c8c72..b0c8b58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe95b=['create','/:id/contacts','addContacts','put','update','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0xe95b,0xcf));var _0xbe95=function(_0x54d6b3,_0x27f781){_0x54d6b3=_0x54d6b3-0x0;var _0x361476=_0xe95b[_0x54d6b3];return _0x361476;};'use strict';var multer=require('multer');var util=require(_0xbe95('0x0'));var path=require(_0xbe95('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbe95('0x2')]();var fs_extra=require(_0xbe95('0x3'));var auth=require(_0xbe95('0x4'));var interaction=require(_0xbe95('0x5'));var config=require('../../config/environment');var controller=require(_0xbe95('0x6'));router[_0xbe95('0x7')]('/',auth[_0xbe95('0x8')](),controller['index']);router['get'](_0xbe95('0x9'),auth[_0xbe95('0x8')](),controller[_0xbe95('0xa')]);router[_0xbe95('0x7')](_0xbe95('0xb'),auth[_0xbe95('0x8')](),controller[_0xbe95('0xc')]);router[_0xbe95('0x7')]('/:id/contacts',auth['isAuthenticated'](),controller['getContacts']);router['post']('/',auth[_0xbe95('0x8')](),controller[_0xbe95('0xd')]);router['post'](_0xbe95('0xe'),auth['isAuthenticated'](),controller[_0xbe95('0xf')]);router[_0xbe95('0x10')](_0xbe95('0xb'),auth[_0xbe95('0x8')](),controller[_0xbe95('0x11')]);router['delete'](_0xbe95('0xb'),auth[_0xbe95('0x8')](),controller[_0xbe95('0x12')]);module[_0xbe95('0x13')]=router;
\ No newline at end of file
+var _0x57cc=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCompany.controller'];(function(_0x4d3b13,_0x543c1d){var _0x443051=function(_0x13922b){while(--_0x13922b){_0x4d3b13['push'](_0x4d3b13['shift']());}};_0x443051(++_0x543c1d);}(_0x57cc,0x15f));var _0xc57c=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x57cc[_0x710815];return _0x5b3b89;};'use strict';var multer=require(_0xc57c('0x0'));var util=require(_0xc57c('0x1'));var path=require(_0xc57c('0x2'));var timeout=require('connect-timeout');var express=require(_0xc57c('0x3'));var router=express[_0xc57c('0x4')]();var fs_extra=require(_0xc57c('0x5'));var auth=require(_0xc57c('0x6'));var interaction=require(_0xc57c('0x7'));var config=require('../../config/environment');var controller=require(_0xc57c('0x8'));router[_0xc57c('0x9')]('/',auth[_0xc57c('0xa')](),controller[_0xc57c('0xb')]);router[_0xc57c('0x9')](_0xc57c('0xc'),auth['isAuthenticated'](),controller[_0xc57c('0xd')]);router[_0xc57c('0x9')](_0xc57c('0xe'),auth['isAuthenticated'](),controller[_0xc57c('0xf')]);router['get'](_0xc57c('0x10'),auth[_0xc57c('0xa')](),controller[_0xc57c('0x11')]);router[_0xc57c('0x12')]('/',auth[_0xc57c('0xa')](),controller[_0xc57c('0x13')]);router[_0xc57c('0x12')](_0xc57c('0x10'),auth[_0xc57c('0xa')](),controller[_0xc57c('0x14')]);router['put']('/:id',auth[_0xc57c('0xa')](),controller[_0xc57c('0x15')]);router[_0xc57c('0x16')](_0xc57c('0xe'),auth[_0xc57c('0xa')](),controller['destroy']);module[_0xc57c('0x17')]=router;
\ No newline at end of file
index 45be0e7..737c223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb399=['UNSIGNED','DATE','NOW','lodash','sequelize','STRING','INTEGER'];(function(_0x4771f5,_0x127457){var _0x3e22ea=function(_0x46ca12){while(--_0x46ca12){_0x4771f5['push'](_0x4771f5['shift']());}};_0x3e22ea(++_0x127457);}(_0xb399,0x1d1));var _0x9b39=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xb399[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x9b39('0x0'));var Sequelize=require(_0x9b39('0x1'));module['exports']={'firstName':{'type':Sequelize[_0x9b39('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x9b39('0x2')]},'street':{'type':Sequelize[_0x9b39('0x2')]},'postalCode':{'type':Sequelize[_0x9b39('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x9b39('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x9b39('0x2')]},'mobile':{'type':Sequelize[_0x9b39('0x2')]},'fax':{'type':Sequelize[_0x9b39('0x2')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0x9b39('0x2')]},'facebook':{'type':Sequelize[_0x9b39('0x2')]},'fb_data':{'type':Sequelize[_0x9b39('0x2')]},'twitter':{'type':Sequelize[_0x9b39('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x9b39('0x2')]},'viber':{'type':Sequelize[_0x9b39('0x2')]},'line':{'type':Sequelize[_0x9b39('0x2')]},'wechat':{'type':Sequelize[_0x9b39('0x2')]},'telegram':{'type':Sequelize[_0x9b39('0x2')]},'UserId':{'type':Sequelize[_0x9b39('0x3')]},'AdditionalPhones':{'type':Sequelize[_0x9b39('0x2')]},'priority':{'type':Sequelize[_0x9b39('0x3')](0x2)[_0x9b39('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x9b39('0x5')],'defaultValue':Sequelize[_0x9b39('0x6')]},'dialTimezone':{'type':Sequelize[_0x9b39('0x2')]},'utcOffset':{'type':Sequelize[_0x9b39('0x3')]}};
\ No newline at end of file
+var _0x70b7=['sequelize','exports','STRING','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x15f054,_0x38a632){var _0x55200f=function(_0x2c9269){while(--_0x2c9269){_0x15f054['push'](_0x15f054['shift']());}};_0x55200f(++_0x38a632);}(_0x70b7,0x197));var _0x770b=function(_0x11f249,_0x4ca4a8){_0x11f249=_0x11f249-0x0;var _0x5c3656=_0x70b7[_0x11f249];return _0x5c3656;};'use strict';var _=require(_0x770b('0x0'));var Sequelize=require(_0x770b('0x1'));module[_0x770b('0x2')]={'firstName':{'type':Sequelize[_0x770b('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x770b('0x3')]},'street':{'type':Sequelize[_0x770b('0x3')]},'postalCode':{'type':Sequelize[_0x770b('0x3')]},'city':{'type':Sequelize[_0x770b('0x3')]},'country':{'type':Sequelize[_0x770b('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x770b('0x3')]},'mobile':{'type':Sequelize[_0x770b('0x3')]},'fax':{'type':Sequelize[_0x770b('0x3')]},'email':{'type':Sequelize[_0x770b('0x3')]},'url':{'type':Sequelize[_0x770b('0x3')]},'facebook':{'type':Sequelize[_0x770b('0x3')]},'fb_data':{'type':Sequelize[_0x770b('0x3')]},'twitter':{'type':Sequelize[_0x770b('0x3')]},'skype':{'type':Sequelize[_0x770b('0x3')]},'teams':{'type':Sequelize[_0x770b('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x770b('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x770b('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0x770b('0x3')]},'priority':{'type':Sequelize[_0x770b('0x4')](0x2)[_0x770b('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x770b('0x6')],'defaultValue':Sequelize[_0x770b('0x7')]},'dialTimezone':{'type':Sequelize[_0x770b('0x3')]},'utcOffset':{'type':Sequelize[_0x770b('0x4')]}};
\ No newline at end of file
index 9c80acb..4302ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x52e363,_0x48062a){var _0x3fc2b5=function(_0x1b0cf9){while(--_0x1b0cf9){_0x52e363['push'](_0x52e363['shift']());}};_0x3fc2b5(++_0x48062a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];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 respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 023e678..413d070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c8=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','save','update'];(function(_0x485cc1,_0xfcafa2){var _0x52eb0e=function(_0x4aea33){while(--_0x4aea33){_0x485cc1['push'](_0x485cc1['shift']());}};_0x52eb0e(++_0xfcafa2);}(_0xe6c8,0xd4));var _0x8e6c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xe6c8[_0x3bf83f];return _0x22c4a9;};'use strict';var EventEmitter=require(_0x8e6c('0x0'));var CmContact=require(_0x8e6c('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e6c('0x2'),'afterUpdate':_0x8e6c('0x3'),'afterDestroy':_0x8e6c('0x4')};function emitEvent(_0x5d96b5){return function(_0x54e45a,_0xc71d28,_0x1a6907){CmContactEvents[_0x8e6c('0x5')](_0x5d96b5+':'+_0x54e45a['id'],_0x54e45a);CmContactEvents[_0x8e6c('0x5')](_0x5d96b5,_0x54e45a);_0x1a6907(null);};}for(var e in events){if(events[_0x8e6c('0x6')](e)){var event=events[e];CmContact[_0x8e6c('0x7')](e,emitEvent(event));}}module[_0x8e6c('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x28b0=['update','remove','emit','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x1243f4,_0x5c3039){var _0x1c6ae6=function(_0x1121e6){while(--_0x1121e6){_0x1243f4['push'](_0x1243f4['shift']());}};_0x1c6ae6(++_0x5c3039);}(_0x28b0,0x6d));var _0x028b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28b0[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x028b('0x0'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x028b('0x1')](0x0);var events={'afterCreate':_0x028b('0x2'),'afterUpdate':_0x028b('0x3'),'afterDestroy':_0x028b('0x4')};function emitEvent(_0x5b5164){return function(_0x262467,_0x3c5afa,_0x37ede2){CmContactEvents[_0x028b('0x5')](_0x5b5164+':'+_0x262467['id'],_0x262467);CmContactEvents[_0x028b('0x5')](_0x5b5164,_0x262467);_0x37ede2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x028b('0x6')](e,emitEvent(event));}}module[_0x028b('0x7')]=CmContactEvents;
\ No newline at end of file
index 87f5ae2..715de2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa680=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','Campaign','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','CmHopperBlack','cmContact,\x20%s,\x20%s','message','findAll','always','BlackLists','List\x20not\x20found','isEmpty','destroy','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','then','timezones','utcOffset','add','minutes','ret','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x221dc4,_0x3dd87a){var _0x37e3a8=function(_0x5526b4){while(--_0x5526b4){_0x221dc4['push'](_0x221dc4['shift']());}};_0x37e3a8(++_0x3dd87a);}(_0xa680,0x14d));var _0x0a68=function(_0x1947f7,_0x246322){_0x1947f7=_0x1947f7-0x0;var _0x3f5d6c=_0xa680[_0x1947f7];return _0x3f5d6c;};'use strict';var _=require(_0x0a68('0x0'));var util=require('util');var logger=require(_0x0a68('0x1'))(_0x0a68('0x2'));var moment=require(_0x0a68('0x3'));var BPromise=require(_0x0a68('0x4'));var rp=require(_0x0a68('0x5'));var fs=require('fs');var path=require(_0x0a68('0x6'));var rimraf=require(_0x0a68('0x7'));var config=require(_0x0a68('0x8'));var shared=require('../../config/environment/shared');var attributes=require('./cmContact.attributes');module[_0x0a68('0x9')]=function(_0x18d28e,_0x14fdba){return _0x18d28e[_0x0a68('0xa')](_0x0a68('0xb'),attributes,{'tableName':_0x0a68('0xc'),'paranoid':!![],'indexes':[{'name':_0x0a68('0xd'),'fields':[_0x0a68('0xd')]},{'name':_0x0a68('0xe'),'fields':[_0x0a68('0xf'),_0x0a68('0x10'),_0x0a68('0xd'),_0x0a68('0x11'),_0x0a68('0x12'),'email'],'type':_0x0a68('0x13')}],'timestamps':!![],'charset':_0x0a68('0x14'),'collate':_0x0a68('0x15'),'hooks':{'afterCreate':function(_0x55a094,_0xdb7315,_0x16d2b8){var _0x1f03a4=_0x18d28e[_0x0a68('0x16')];var _0x5401d7=_0x55a094['get']({'plain':!![]});function _0x20bb1f(){return function(_0x412c6){logger[_0x0a68('0x17')]('cmContact','afterCreate',util[_0x0a68('0x18')](_0x412c6,{'showHidden':![],'depth':null}));};}function _0x48e272(_0x4f6ed0,_0x145b37){var _0x45ecb2=_0x145b37[_0x0a68('0x19')]?_0x145b37[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')](_0x0a68('0x1b'));return new BPromise(function(_0x25d748,_0x583ef9){if(_[_0x0a68('0x1c')](_0x145b37[_0x0a68('0x1d')])){_0x25d748({'ret':_0x45ecb2});}else{_0x1f03a4[_0x0a68('0x1e')]['findOne']({'where':{'id':_0x4f6ed0['id']}})[_0x0a68('0x1f')](function(_0x1a9f6b){if(!_[_0x0a68('0x1c')](_0x1a9f6b)){var _0x5969a9=_0x1a9f6b[_0x0a68('0x1d')];if(!_[_0x0a68('0x1c')](_0x5969a9)){var _0x2f4168=shared[_0x0a68('0x20')];var _0x2f4b64=_0x2f4168[_0x5969a9];var _0x767a09=_0x2f4168[_0x145b37[_0x0a68('0x1d')]];if(!_[_0x0a68('0x1c')](_0x2f4b64)&&!_['isNil'](_0x767a09)){var _0x51240d=_0x2f4b64['utcOffset']-_0x767a09[_0x0a68('0x21')];_0x45ecb2=_0x145b37[_0x0a68('0x19')]?_0x145b37[_0x0a68('0x19')]:moment();var _0x1e82dd=moment(_0x45ecb2)[_0x0a68('0x22')](_0x51240d,_0x0a68('0x23'));_0x25d748({'ret':_0x1e82dd[_0x0a68('0x1a')](_0x0a68('0x1b'))});}else _0x25d748({'ret':_0x45ecb2});}else _0x25d748({'ret':_0x45ecb2});}else{_0x25d748({'ret':_0x45ecb2});}});}});return 0xa;}var _0x464d8e=function(_0x21b775){return new BPromise(function(_0x447fba,_0x582f64){_0x48e272(_0x21b775,_0x5401d7)[_0x0a68('0x1f')](function(_0x2349ab){_0x5401d7[_0x0a68('0x19')]=_0x2349ab[_0x0a68('0x24')];_0x1f03a4['CmHopper'][_0x0a68('0x25')]({'where':{'phone':_0x5401d7['phone'],'VoiceQueueId':_0x21b775['id']}})['then'](function(_0x4184d2){if(!_[_0x0a68('0x1c')](_0x4184d2)){throw new Error(_0x0a68('0x26')+_0x5401d7[_0x0a68('0xd')]+_0x0a68('0x27')+_0x21b775['id']);}return _0x1f03a4[_0x0a68('0x28')][_0x0a68('0x29')]({'phone':_0x5401d7['phone'],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'priority':_0x5401d7[_0x0a68('0x2b')]?_0x5401d7[_0x0a68('0x2b')]:0x2,'scheduledat':_0x5401d7[_0x0a68('0x19')]?_0x5401d7[_0x0a68('0x19')]:moment()['format'](_0x0a68('0x1b')),'callback':_0x5401d7['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5401d7[_0x0a68('0x2c')]?_0x5401d7[_0x0a68('0x2c')]:undefined,'callbackat':_0x5401d7['callbackUniqueid']?moment()[_0x0a68('0x1a')](_0x0a68('0x1b')):undefined,'VoiceQueueId':_0x21b775['id']});})[_0x0a68('0x2d')](function(_0xd585ab){_0x582f64(_0xd585ab);});});});};var _0x31ab3f=function(_0x50ba0e){return new BPromise(function(_0x5b9dc0,_0x4576a1){_0x48e272(_0x50ba0e,_0x5401d7)[_0x0a68('0x1f')](function(_0xe55aab){_0x5401d7[_0x0a68('0x19')]=_0xe55aab['ret'];_0x1f03a4[_0x0a68('0x28')][_0x0a68('0x25')]({'where':{'phone':_0x5401d7[_0x0a68('0xd')],'VoiceQueueId':_0x50ba0e['id']}})[_0x0a68('0x1f')](function(_0x4d4d34){if(!_[_0x0a68('0x1c')](_0x4d4d34)){throw new Error(_0x0a68('0x26')+_0x5401d7[_0x0a68('0xd')]+_0x0a68('0x2e')+_0x50ba0e['id']);}return _0x1f03a4['CmHopperFinal'][_0x0a68('0x25')]({'where':{'calleridnum':_0x5401d7[_0x0a68('0xd')],'VoiceQueueId':_0x50ba0e['id']}});})[_0x0a68('0x1f')](function(_0x3bf63a){if(!_['isNil'](_0x3bf63a)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x5401d7['phone']+_0x0a68('0x2f')+_0x50ba0e['id']);}return _0x1f03a4[_0x0a68('0x28')]['create']({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7['ListId'],'priority':_0x5401d7['priority']?_0x5401d7[_0x0a68('0x2b')]:0x2,'scheduledat':_0x5401d7['scheduledat']?_0x5401d7[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')](_0x0a68('0x1b')),'callback':_0x5401d7[_0x0a68('0x2c')]?!![]:![],'callbackuniqueid':_0x5401d7[_0x0a68('0x2c')]?_0x5401d7[_0x0a68('0x2c')]:undefined,'callbackat':_0x5401d7[_0x0a68('0x2c')]?moment()[_0x0a68('0x1a')](_0x0a68('0x1b')):undefined,'VoiceQueueId':_0x50ba0e['id']});})[_0x0a68('0x2d')](function(_0x426818){_0x4576a1(_0x426818);});});});};function _0x1c8836(){return function(_0x3677e1){logger[_0x0a68('0x17')]('cmContact',_0x0a68('0x30'),util[_0x0a68('0x18')](_0x3677e1,{'showHidden':![],'depth':null}));};}function _0x5cbe82(_0xc2f6e5,_0x5155fa){var _0x3e42ca=_0x5155fa[_0x0a68('0x19')]?_0x5155fa[_0x0a68('0x19')]:moment()['format'](_0x0a68('0x1b'));return new BPromise(function(_0x4347a6,_0x5e9779){if(_[_0x0a68('0x1c')](_0x5155fa[_0x0a68('0x1d')])){_0x4347a6({'ret':_0x3e42ca});}else{_0x1f03a4[_0x0a68('0x31')]['findOne']({'where':{'id':_0xc2f6e5['id']}})[_0x0a68('0x1f')](function(_0x479504){if(!_['isNil'](_0x479504)){var _0x580f9d=_0x479504[_0x0a68('0x1d')];if(!_[_0x0a68('0x1c')](_0x580f9d)){var _0x5d1f6c=shared[_0x0a68('0x20')];var _0x5b1baa=_0x5d1f6c[_0x580f9d];var _0x324db5=_0x5d1f6c[_0x5155fa[_0x0a68('0x1d')]];if(!_[_0x0a68('0x1c')](_0x5b1baa)&&!_[_0x0a68('0x1c')](_0x324db5)){var _0x421f90=_0x5b1baa[_0x0a68('0x21')]-_0x324db5[_0x0a68('0x21')];_0x3e42ca=_0x5155fa['scheduledat']?_0x5155fa[_0x0a68('0x19')]:moment();var _0x1625ee=moment(_0x3e42ca)['add'](_0x421f90,_0x0a68('0x23'));_0x4347a6({'ret':_0x1625ee[_0x0a68('0x1a')](_0x0a68('0x1b'))});}else _0x4347a6({'ret':_0x3e42ca});}else _0x4347a6({'ret':_0x3e42ca});}else{_0x4347a6({'ret':_0x3e42ca});}});}});return 0xa;}var _0x303715=function(_0x396681){return new BPromise(function(_0x80f610,_0x36af87){_0x5cbe82(_0x396681,_0x5401d7)['then'](function(_0x2ca7ca){_0x5401d7[_0x0a68('0x19')]=_0x2ca7ca[_0x0a68('0x24')];_0x1f03a4[_0x0a68('0x28')][_0x0a68('0x25')]({'where':{'phone':_0x5401d7[_0x0a68('0xd')],'CampaignId':_0x396681['id']}})[_0x0a68('0x1f')](function(_0xaecd30){if(!_['isNil'](_0xaecd30)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5401d7['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x396681['id']);}return _0x1f03a4[_0x0a68('0x28')][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'priority':_0x5401d7['priority']?_0x5401d7[_0x0a68('0x2b')]:0x2,'scheduledat':_0x5401d7[_0x0a68('0x19')]?_0x5401d7[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5401d7['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5401d7[_0x0a68('0x2c')]?_0x5401d7[_0x0a68('0x2c')]:undefined,'callbackat':_0x5401d7[_0x0a68('0x2c')]?moment()['format'](_0x0a68('0x1b')):undefined,'CampaignId':_0x396681['id']});})['catch'](function(_0x738149){_0x36af87(_0x738149);});});});};var _0x50f7e2=function(_0x23ce17){return new BPromise(function(_0x58006b,_0x50f5d0){_0x5cbe82(_0x23ce17,_0x5401d7)[_0x0a68('0x1f')](function(_0xef995c){_0x5401d7['scheduledat']=_0xef995c[_0x0a68('0x24')];_0x1f03a4[_0x0a68('0x28')][_0x0a68('0x25')]({'where':{'phone':_0x5401d7[_0x0a68('0xd')],'CampaignId':_0x23ce17['id']}})['then'](function(_0x3034cd){if(!_['isNil'](_0x3034cd)){throw new Error(_0x0a68('0x26')+_0x5401d7[_0x0a68('0xd')]+_0x0a68('0x32')+_0x23ce17['id']);}return _0x1f03a4[_0x0a68('0x33')]['findOne']({'where':{'calleridnum':_0x5401d7[_0x0a68('0xd')],'CampaignId':_0x23ce17['id']}});})[_0x0a68('0x1f')](function(_0xf8e20a){if(!_['isNil'](_0xf8e20a)){throw new Error(_0x0a68('0x34')+_0x5401d7[_0x0a68('0xd')]+_0x0a68('0x35')+_0x23ce17['id']);}return _0x1f03a4[_0x0a68('0x28')][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'priority':_0x5401d7[_0x0a68('0x2b')]?_0x5401d7['priority']:0x2,'scheduledat':_0x5401d7['scheduledat']?_0x5401d7[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')](_0x0a68('0x1b')),'callback':_0x5401d7[_0x0a68('0x2c')]?!![]:![],'callbackuniqueid':_0x5401d7[_0x0a68('0x2c')]?_0x5401d7[_0x0a68('0x2c')]:undefined,'callbackat':_0x5401d7['callbackUniqueid']?moment()['format'](_0x0a68('0x1b')):undefined,'CampaignId':_0x23ce17['id']});})[_0x0a68('0x2d')](function(_0x481992){_0x50f5d0(_0x481992);});});});};if(_0x5401d7['ListId']){_0x1f03a4[_0x0a68('0x1e')]['findAll']({'where':{'type':'outbound'},'attributes':['id',_0x0a68('0x36'),'dialTimezone'],'include':[{'model':_0x1f03a4[_0x0a68('0x37')],'as':_0x0a68('0x38'),'where':{'id':_0x5401d7['ListId']}}]})[_0x0a68('0x1f')](function(_0x2361e9){if(_0x2361e9){var _0x43191e=[];for(var _0x4d183d=0x0,_0x337735;_0x4d183d<_0x2361e9[_0x0a68('0x39')];_0x4d183d+=0x1){_0x337735=_0x2361e9[_0x4d183d][_0x0a68('0x3a')]({'plain':!![]});switch(_0x337735[_0x0a68('0x36')]){case'always':_0x31ab3f(_0x337735)[_0x0a68('0x2d')](_0x20bb1f());break;case _0x0a68('0x3b'):_0x464d8e(_0x337735)['catch'](_0x20bb1f());break;default:_0x5cbe82(_0x337735,_0x5401d7)[_0x0a68('0x1f')](function(_0x312a9c){_0x5401d7['scheduledat']=_0x312a9c[_0x0a68('0x24')];_0x1f03a4[_0x0a68('0x28')][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'scheduledat':_0x5401d7['scheduledat']?_0x5401d7[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5401d7[_0x0a68('0x2b')]?_0x5401d7['priority']:0x2,'callback':_0x5401d7[_0x0a68('0x2c')]?!![]:![],'callbackuniqueid':_0x5401d7['callbackUniqueid']?_0x5401d7[_0x0a68('0x2c')]:undefined,'callbackat':_0x5401d7['callbackUniqueid']?moment()[_0x0a68('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x337735['id']})['catch'](_0x20bb1f());});}}}})[_0x0a68('0x1f')](function(){return _0x1f03a4[_0x0a68('0x1e')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x1f03a4[_0x0a68('0x37')],'as':'BlackLists','where':{'id':_0x5401d7['ListId']}}]})[_0x0a68('0x1f')](function(_0x3912f8){if(_0x3912f8){var _0x44533c=[];for(var _0x26365c=0x0,_0x3ea6b8;_0x26365c<_0x3912f8['length'];_0x26365c+=0x1){_0x3ea6b8=_0x3912f8[_0x26365c][_0x0a68('0x3a')]({'plain':!![]});_0x1f03a4[_0x0a68('0x3c')][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'VoiceQueueId':_0x3ea6b8['id']})[_0x0a68('0x2d')](function(_0x1026ee){logger['error'](_0x0a68('0x3d'),_0x0a68('0x30'),_0x1026ee[_0x0a68('0x3e')]);});}}});})[_0x0a68('0x1f')](function(){return _0x1f03a4[_0x0a68('0x31')][_0x0a68('0x3f')]({'attributes':['id',_0x0a68('0x36'),_0x0a68('0x1d')],'include':[{'model':_0x1f03a4[_0x0a68('0x37')],'as':_0x0a68('0x38'),'where':{'id':_0x5401d7[_0x0a68('0x2a')]}}]})[_0x0a68('0x1f')](function(_0x1ba624){if(_0x1ba624){var _0x49a7e7=[];for(var _0x4094ab=0x0,_0x415ab6;_0x4094ab<_0x1ba624[_0x0a68('0x39')];_0x4094ab+=0x1){_0x415ab6=_0x1ba624[_0x4094ab][_0x0a68('0x3a')]({'plain':!![]});switch(_0x415ab6[_0x0a68('0x36')]){case _0x0a68('0x40'):_0x50f7e2(_0x415ab6)[_0x0a68('0x2d')](_0x1c8836());break;case'onlyIfOpen':_0x303715(_0x415ab6)[_0x0a68('0x2d')](_0x1c8836());break;default:_0x1f03a4['CmHopper'][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'scheduledat':_0x5401d7[_0x0a68('0x19')]?_0x5401d7[_0x0a68('0x19')]:moment()[_0x0a68('0x1a')](_0x0a68('0x1b')),'priority':_0x5401d7[_0x0a68('0x2b')]?_0x5401d7[_0x0a68('0x2b')]:0x2,'callback':_0x5401d7[_0x0a68('0x2c')]?!![]:![],'callbackuniqueid':_0x5401d7[_0x0a68('0x2c')]?_0x5401d7['callbackUniqueid']:undefined,'callbackat':_0x5401d7[_0x0a68('0x2c')]?moment()[_0x0a68('0x1a')](_0x0a68('0x1b')):undefined,'CampaignId':_0x415ab6['id']})[_0x0a68('0x2d')](_0x1c8836());}}}});})['then'](function(){return _0x1f03a4[_0x0a68('0x31')][_0x0a68('0x3f')]({'attributes':['id'],'include':[{'model':_0x1f03a4[_0x0a68('0x37')],'as':_0x0a68('0x41'),'where':{'id':_0x5401d7['ListId']}}]})[_0x0a68('0x1f')](function(_0x1059fe){if(_0x1059fe){var _0x93d0cb=[];for(var _0xcfee82=0x0,_0x44cb0c;_0xcfee82<_0x1059fe[_0x0a68('0x39')];_0xcfee82+=0x1){_0x44cb0c=_0x1059fe[_0xcfee82][_0x0a68('0x3a')]({'plain':!![]});_0x1f03a4[_0x0a68('0x3c')][_0x0a68('0x29')]({'phone':_0x5401d7[_0x0a68('0xd')],'ContactId':_0x5401d7['id'],'ListId':_0x5401d7[_0x0a68('0x2a')],'CampaignId':_0x44cb0c['id']})[_0x0a68('0x2d')](function(_0x3992e3){logger[_0x0a68('0x17')](_0x0a68('0x3d'),_0x0a68('0x30'),_0x3992e3[_0x0a68('0x3e')]);});}}});})['then'](function(){_0x16d2b8();})[_0x0a68('0x2d')](function(_0x2bb3f5){logger['error'](_0x0a68('0x3d'),'afterCreate',_0x2bb3f5[_0x0a68('0x3e')]);_0x16d2b8(_0x2bb3f5);});}else{_0x16d2b8(new Error(_0x0a68('0x42')));}},'afterDestroy':function(_0x274840,_0x43b542,_0x5a06ae){var _0x48ebd6=_0x18d28e[_0x0a68('0x16')];var _0x3ede0f=_0x274840[_0x0a68('0x3a')]({'plain':!![]});return _0x48ebd6[_0x0a68('0x28')][_0x0a68('0x3f')]({'raw':!![],'where':{'ListId':_0x3ede0f[_0x0a68('0x2a')],'ContactId':_0x3ede0f['id']}})['then'](function(_0x2c6bd8){if(!_[_0x0a68('0x43')](_0x2c6bd8)){var _0x4d3e65=[];for(var _0x31f881=0x0;_0x31f881<_0x2c6bd8[_0x0a68('0x39')];_0x31f881+=0x1){var _0x5a4c67=_0x48ebd6[_0x0a68('0x28')][_0x0a68('0x44')]({'where':{'ListId':_0x2c6bd8[_0x31f881]['ListId'],'ContactId':_0x2c6bd8[_0x31f881]['ContactId'],'VoiceQueueId':_0x2c6bd8[_0x31f881][_0x0a68('0x45')],'CampaignId':_0x2c6bd8[_0x31f881][_0x0a68('0x46')]}});_0x4d3e65[_0x0a68('0x47')](_0x5a4c67);}return BPromise[_0x0a68('0x48')](_0x4d3e65);}})[_0x0a68('0x1f')](function(_0xc1364e){logger[_0x0a68('0x49')](_0x0a68('0x4a'),util[_0x0a68('0x18')](_0xc1364e,{'showHidden':![],'depth':null}));_0x5a06ae();})[_0x0a68('0x2d')](function(_0x49bdfb){logger[_0x0a68('0x17')](_0x0a68('0x4b'),util[_0x0a68('0x18')](_0x49bdfb,{'showHidden':![],'depth':null}));_0x5a06ae(_0x49bdfb);});}}});};
\ No newline at end of file
+var _0xdd45=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','always','onlyIfOpen','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','info','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','../../config/environment/shared','exports','define','CmContact','phone','firstName','fax','email','models','get','error','cmContact','afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','then','timezones','utcOffset','ret','CmHopper','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'];(function(_0x204911,_0x4d76d3){var _0x19c0eb=function(_0x587f2b){while(--_0x587f2b){_0x204911['push'](_0x204911['shift']());}};_0x19c0eb(++_0x4d76d3);}(_0xdd45,0x125));var _0x5dd4=function(_0x140545,_0xb66cf2){_0x140545=_0x140545-0x0;var _0x1629f7=_0xdd45[_0x140545];return _0x1629f7;};'use strict';var _=require(_0x5dd4('0x0'));var util=require(_0x5dd4('0x1'));var logger=require(_0x5dd4('0x2'))(_0x5dd4('0x3'));var moment=require(_0x5dd4('0x4'));var BPromise=require(_0x5dd4('0x5'));var rp=require(_0x5dd4('0x6'));var fs=require('fs');var path=require(_0x5dd4('0x7'));var rimraf=require('rimraf');var config=require(_0x5dd4('0x8'));var shared=require(_0x5dd4('0x9'));var attributes=require('./cmContact.attributes');module[_0x5dd4('0xa')]=function(_0x2f0b2a,_0x57a885){return _0x2f0b2a[_0x5dd4('0xb')](_0x5dd4('0xc'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x5dd4('0xd'),'fields':[_0x5dd4('0xd')]},{'name':'fti_cm_contacts','fields':[_0x5dd4('0xe'),'lastName','phone','mobile',_0x5dd4('0xf'),_0x5dd4('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x197a99,_0x3ff4e5,_0x4b2e30){var _0x593715=_0x2f0b2a[_0x5dd4('0x11')];var _0x7920e8=_0x197a99[_0x5dd4('0x12')]({'plain':!![]});function _0x5a6d1e(){return function(_0x51a5ad){logger[_0x5dd4('0x13')](_0x5dd4('0x14'),_0x5dd4('0x15'),util[_0x5dd4('0x16')](_0x51a5ad,{'showHidden':![],'depth':null}));};}function _0x38c725(_0x41e9e3,_0x69d1d1){var _0x33f305=_0x69d1d1[_0x5dd4('0x17')]?_0x69d1d1[_0x5dd4('0x17')]:moment()[_0x5dd4('0x18')](_0x5dd4('0x19'));return new BPromise(function(_0xecbb56,_0xb4f844){if(_[_0x5dd4('0x1a')](_0x69d1d1[_0x5dd4('0x1b')])){_0xecbb56({'ret':_0x33f305});}else{_0x593715[_0x5dd4('0x1c')]['findOne']({'where':{'id':_0x41e9e3['id']}})[_0x5dd4('0x1d')](function(_0x1abe7e){if(!_[_0x5dd4('0x1a')](_0x1abe7e)){var _0x17ce98=_0x1abe7e[_0x5dd4('0x1b')];if(!_[_0x5dd4('0x1a')](_0x17ce98)){var _0x3d1c51=shared[_0x5dd4('0x1e')];var _0x280939=_0x3d1c51[_0x17ce98];var _0xa41c90=_0x3d1c51[_0x69d1d1[_0x5dd4('0x1b')]];if(!_[_0x5dd4('0x1a')](_0x280939)&&!_['isNil'](_0xa41c90)){var _0x3b3644=_0x280939['utcOffset']-_0xa41c90[_0x5dd4('0x1f')];_0x33f305=_0x69d1d1['scheduledat']?_0x69d1d1[_0x5dd4('0x17')]:moment();var _0x48c161=moment(_0x33f305)['add'](_0x3b3644,'minutes');_0xecbb56({'ret':_0x48c161[_0x5dd4('0x18')](_0x5dd4('0x19'))});}else _0xecbb56({'ret':_0x33f305});}else _0xecbb56({'ret':_0x33f305});}else{_0xecbb56({'ret':_0x33f305});}});}});return 0xa;}var _0x12d533=function(_0x9a656b){return new BPromise(function(_0x4ec633,_0x19acb1){_0x38c725(_0x9a656b,_0x7920e8)[_0x5dd4('0x1d')](function(_0x35e6f3){_0x7920e8[_0x5dd4('0x17')]=_0x35e6f3[_0x5dd4('0x20')];_0x593715[_0x5dd4('0x21')][_0x5dd4('0x22')]({'where':{'phone':_0x7920e8[_0x5dd4('0xd')],'VoiceQueueId':_0x9a656b['id']}})['then'](function(_0x3705b2){if(!_[_0x5dd4('0x1a')](_0x3705b2)){throw new Error(_0x5dd4('0x23')+_0x7920e8[_0x5dd4('0xd')]+_0x5dd4('0x24')+_0x9a656b['id']);}return _0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8['phone'],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8[_0x5dd4('0x26')],'priority':_0x7920e8[_0x5dd4('0x27')]?_0x7920e8[_0x5dd4('0x27')]:0x2,'scheduledat':_0x7920e8[_0x5dd4('0x17')]?_0x7920e8[_0x5dd4('0x17')]:moment()[_0x5dd4('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x7920e8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x7920e8['callbackUniqueid']?_0x7920e8[_0x5dd4('0x28')]:undefined,'callbackat':_0x7920e8['callbackUniqueid']?moment()[_0x5dd4('0x18')](_0x5dd4('0x19')):undefined,'VoiceQueueId':_0x9a656b['id']});})[_0x5dd4('0x29')](function(_0x4d3b6a){_0x19acb1(_0x4d3b6a);});});});};var _0x21e6ef=function(_0x4145bc){return new BPromise(function(_0x3223da,_0xacfbfd){_0x38c725(_0x4145bc,_0x7920e8)[_0x5dd4('0x1d')](function(_0x18a024){_0x7920e8[_0x5dd4('0x17')]=_0x18a024['ret'];_0x593715[_0x5dd4('0x21')]['findOne']({'where':{'phone':_0x7920e8[_0x5dd4('0xd')],'VoiceQueueId':_0x4145bc['id']}})['then'](function(_0x101e5f){if(!_[_0x5dd4('0x1a')](_0x101e5f)){throw new Error(_0x5dd4('0x23')+_0x7920e8[_0x5dd4('0xd')]+_0x5dd4('0x2a')+_0x4145bc['id']);}return _0x593715[_0x5dd4('0x2b')][_0x5dd4('0x22')]({'where':{'calleridnum':_0x7920e8[_0x5dd4('0xd')],'VoiceQueueId':_0x4145bc['id']}});})[_0x5dd4('0x1d')](function(_0x8aca84){if(!_[_0x5dd4('0x1a')](_0x8aca84)){throw new Error(_0x5dd4('0x2c')+_0x7920e8[_0x5dd4('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x4145bc['id']);}return _0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8['phone'],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8[_0x5dd4('0x26')],'priority':_0x7920e8[_0x5dd4('0x27')]?_0x7920e8['priority']:0x2,'scheduledat':_0x7920e8[_0x5dd4('0x17')]?_0x7920e8['scheduledat']:moment()[_0x5dd4('0x18')](_0x5dd4('0x19')),'callback':_0x7920e8[_0x5dd4('0x28')]?!![]:![],'callbackuniqueid':_0x7920e8[_0x5dd4('0x28')]?_0x7920e8['callbackUniqueid']:undefined,'callbackat':_0x7920e8[_0x5dd4('0x28')]?moment()[_0x5dd4('0x18')](_0x5dd4('0x19')):undefined,'VoiceQueueId':_0x4145bc['id']});})[_0x5dd4('0x29')](function(_0x38729e){_0xacfbfd(_0x38729e);});});});};function _0x1bece3(){return function(_0x2f6f6b){logger['error']('cmContact',_0x5dd4('0x15'),util[_0x5dd4('0x16')](_0x2f6f6b,{'showHidden':![],'depth':null}));};}function _0x335b33(_0x3db157,_0x255e35){var _0x541b51=_0x255e35[_0x5dd4('0x17')]?_0x255e35['scheduledat']:moment()[_0x5dd4('0x18')](_0x5dd4('0x19'));return new BPromise(function(_0x11cc1f,_0x8a185){if(_[_0x5dd4('0x1a')](_0x255e35[_0x5dd4('0x1b')])){_0x11cc1f({'ret':_0x541b51});}else{_0x593715['Campaign'][_0x5dd4('0x22')]({'where':{'id':_0x3db157['id']}})['then'](function(_0x4efdcb){if(!_[_0x5dd4('0x1a')](_0x4efdcb)){var _0x3d6dac=_0x4efdcb[_0x5dd4('0x1b')];if(!_[_0x5dd4('0x1a')](_0x3d6dac)){var _0x308bd5=shared[_0x5dd4('0x1e')];var _0x46a0b7=_0x308bd5[_0x3d6dac];var _0x13e482=_0x308bd5[_0x255e35[_0x5dd4('0x1b')]];if(!_[_0x5dd4('0x1a')](_0x46a0b7)&&!_[_0x5dd4('0x1a')](_0x13e482)){var _0x2b4554=_0x46a0b7[_0x5dd4('0x1f')]-_0x13e482[_0x5dd4('0x1f')];_0x541b51=_0x255e35[_0x5dd4('0x17')]?_0x255e35[_0x5dd4('0x17')]:moment();var _0x4f33ee=moment(_0x541b51)['add'](_0x2b4554,_0x5dd4('0x2d'));_0x11cc1f({'ret':_0x4f33ee[_0x5dd4('0x18')](_0x5dd4('0x19'))});}else _0x11cc1f({'ret':_0x541b51});}else _0x11cc1f({'ret':_0x541b51});}else{_0x11cc1f({'ret':_0x541b51});}});}});return 0xa;}var _0x17010a=function(_0x1d9242){return new BPromise(function(_0x3d70cb,_0x278d4c){_0x335b33(_0x1d9242,_0x7920e8)[_0x5dd4('0x1d')](function(_0x1cbfe4){_0x7920e8[_0x5dd4('0x17')]=_0x1cbfe4[_0x5dd4('0x20')];_0x593715[_0x5dd4('0x21')][_0x5dd4('0x22')]({'where':{'phone':_0x7920e8[_0x5dd4('0xd')],'CampaignId':_0x1d9242['id']}})[_0x5dd4('0x1d')](function(_0x236494){if(!_[_0x5dd4('0x1a')](_0x236494)){throw new Error('cmContact,\x20afterCreate\x20'+_0x7920e8[_0x5dd4('0xd')]+_0x5dd4('0x2e')+_0x1d9242['id']);}return _0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8[_0x5dd4('0xd')],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8[_0x5dd4('0x26')],'priority':_0x7920e8[_0x5dd4('0x27')]?_0x7920e8['priority']:0x2,'scheduledat':_0x7920e8[_0x5dd4('0x17')]?_0x7920e8[_0x5dd4('0x17')]:moment()[_0x5dd4('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x7920e8[_0x5dd4('0x28')]?!![]:![],'callbackuniqueid':_0x7920e8[_0x5dd4('0x28')]?_0x7920e8[_0x5dd4('0x28')]:undefined,'callbackat':_0x7920e8[_0x5dd4('0x28')]?moment()[_0x5dd4('0x18')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1d9242['id']});})[_0x5dd4('0x29')](function(_0x4cdd03){_0x278d4c(_0x4cdd03);});});});};var _0x255118=function(_0x32b2bd){return new BPromise(function(_0x110bb9,_0x1912fe){_0x335b33(_0x32b2bd,_0x7920e8)[_0x5dd4('0x1d')](function(_0x50bf66){_0x7920e8[_0x5dd4('0x17')]=_0x50bf66[_0x5dd4('0x20')];_0x593715[_0x5dd4('0x21')][_0x5dd4('0x22')]({'where':{'phone':_0x7920e8['phone'],'CampaignId':_0x32b2bd['id']}})[_0x5dd4('0x1d')](function(_0x2b2588){if(!_['isNil'](_0x2b2588)){throw new Error(_0x5dd4('0x23')+_0x7920e8[_0x5dd4('0xd')]+_0x5dd4('0x2f')+_0x32b2bd['id']);}return _0x593715[_0x5dd4('0x2b')][_0x5dd4('0x22')]({'where':{'calleridnum':_0x7920e8[_0x5dd4('0xd')],'CampaignId':_0x32b2bd['id']}});})['then'](function(_0x2abab4){if(!_[_0x5dd4('0x1a')](_0x2abab4)){throw new Error(_0x5dd4('0x2c')+_0x7920e8['phone']+_0x5dd4('0x30')+_0x32b2bd['id']);}return _0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8[_0x5dd4('0xd')],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8[_0x5dd4('0x26')],'priority':_0x7920e8['priority']?_0x7920e8[_0x5dd4('0x27')]:0x2,'scheduledat':_0x7920e8['scheduledat']?_0x7920e8[_0x5dd4('0x17')]:moment()[_0x5dd4('0x18')](_0x5dd4('0x19')),'callback':_0x7920e8[_0x5dd4('0x28')]?!![]:![],'callbackuniqueid':_0x7920e8[_0x5dd4('0x28')]?_0x7920e8['callbackUniqueid']:undefined,'callbackat':_0x7920e8[_0x5dd4('0x28')]?moment()[_0x5dd4('0x18')](_0x5dd4('0x19')):undefined,'CampaignId':_0x32b2bd['id']});})[_0x5dd4('0x29')](function(_0xf44f92){_0x1912fe(_0xf44f92);});});});};if(_0x7920e8[_0x5dd4('0x26')]){_0x593715['VoiceQueue'][_0x5dd4('0x31')]({'where':{'type':_0x5dd4('0x32')},'attributes':['id',_0x5dd4('0x33'),_0x5dd4('0x1b')],'include':[{'model':_0x593715[_0x5dd4('0x34')],'as':_0x5dd4('0x35'),'where':{'id':_0x7920e8[_0x5dd4('0x26')]}}]})[_0x5dd4('0x1d')](function(_0x517e36){if(_0x517e36){var _0x27eef3=[];for(var _0x5e98dc=0x0,_0x556cc5;_0x5e98dc<_0x517e36['length'];_0x5e98dc+=0x1){_0x556cc5=_0x517e36[_0x5e98dc]['get']({'plain':!![]});switch(_0x556cc5[_0x5dd4('0x33')]){case _0x5dd4('0x36'):_0x21e6ef(_0x556cc5)['catch'](_0x5a6d1e());break;case _0x5dd4('0x37'):_0x12d533(_0x556cc5)['catch'](_0x5a6d1e());break;default:_0x335b33(_0x556cc5,_0x7920e8)['then'](function(_0x1b2c5c){_0x7920e8[_0x5dd4('0x17')]=_0x1b2c5c[_0x5dd4('0x20')];_0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8['phone'],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8['ListId'],'scheduledat':_0x7920e8[_0x5dd4('0x17')]?_0x7920e8['scheduledat']:moment()[_0x5dd4('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x7920e8[_0x5dd4('0x27')]?_0x7920e8[_0x5dd4('0x27')]:0x2,'callback':_0x7920e8[_0x5dd4('0x28')]?!![]:![],'callbackuniqueid':_0x7920e8[_0x5dd4('0x28')]?_0x7920e8[_0x5dd4('0x28')]:undefined,'callbackat':_0x7920e8[_0x5dd4('0x28')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x556cc5['id']})[_0x5dd4('0x29')](_0x5a6d1e());});}}}})['then'](function(){return _0x593715[_0x5dd4('0x1c')][_0x5dd4('0x31')]({'where':{'type':_0x5dd4('0x32')},'attributes':['id'],'include':[{'model':_0x593715[_0x5dd4('0x34')],'as':_0x5dd4('0x38'),'where':{'id':_0x7920e8[_0x5dd4('0x26')]}}]})[_0x5dd4('0x1d')](function(_0xdea5c9){if(_0xdea5c9){var _0x1239a9=[];for(var _0x2b0fbb=0x0,_0x135bac;_0x2b0fbb<_0xdea5c9[_0x5dd4('0x39')];_0x2b0fbb+=0x1){_0x135bac=_0xdea5c9[_0x2b0fbb][_0x5dd4('0x12')]({'plain':!![]});_0x593715[_0x5dd4('0x3a')][_0x5dd4('0x25')]({'phone':_0x7920e8[_0x5dd4('0xd')],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8['ListId'],'VoiceQueueId':_0x135bac['id']})[_0x5dd4('0x29')](function(_0x2f64e2){logger[_0x5dd4('0x13')](_0x5dd4('0x3b'),_0x5dd4('0x15'),_0x2f64e2[_0x5dd4('0x3c')]);});}}});})[_0x5dd4('0x1d')](function(){return _0x593715['Campaign'][_0x5dd4('0x31')]({'attributes':['id','dialCheckDuplicateType',_0x5dd4('0x1b')],'include':[{'model':_0x593715[_0x5dd4('0x34')],'as':_0x5dd4('0x35'),'where':{'id':_0x7920e8['ListId']}}]})[_0x5dd4('0x1d')](function(_0x340972){if(_0x340972){var _0x52c8ff=[];for(var _0x1fd0ea=0x0,_0x5359c0;_0x1fd0ea<_0x340972['length'];_0x1fd0ea+=0x1){_0x5359c0=_0x340972[_0x1fd0ea][_0x5dd4('0x12')]({'plain':!![]});switch(_0x5359c0[_0x5dd4('0x33')]){case _0x5dd4('0x36'):_0x255118(_0x5359c0)[_0x5dd4('0x29')](_0x1bece3());break;case _0x5dd4('0x37'):_0x17010a(_0x5359c0)['catch'](_0x1bece3());break;default:_0x593715[_0x5dd4('0x21')][_0x5dd4('0x25')]({'phone':_0x7920e8[_0x5dd4('0xd')],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8[_0x5dd4('0x26')],'scheduledat':_0x7920e8[_0x5dd4('0x17')]?_0x7920e8[_0x5dd4('0x17')]:moment()[_0x5dd4('0x18')](_0x5dd4('0x19')),'priority':_0x7920e8[_0x5dd4('0x27')]?_0x7920e8[_0x5dd4('0x27')]:0x2,'callback':_0x7920e8[_0x5dd4('0x28')]?!![]:![],'callbackuniqueid':_0x7920e8['callbackUniqueid']?_0x7920e8['callbackUniqueid']:undefined,'callbackat':_0x7920e8[_0x5dd4('0x28')]?moment()[_0x5dd4('0x18')](_0x5dd4('0x19')):undefined,'CampaignId':_0x5359c0['id']})[_0x5dd4('0x29')](_0x1bece3());}}}});})[_0x5dd4('0x1d')](function(){return _0x593715[_0x5dd4('0x3d')][_0x5dd4('0x31')]({'attributes':['id'],'include':[{'model':_0x593715[_0x5dd4('0x34')],'as':_0x5dd4('0x38'),'where':{'id':_0x7920e8['ListId']}}]})[_0x5dd4('0x1d')](function(_0x544bdc){if(_0x544bdc){var _0x37686d=[];for(var _0x53bec9=0x0,_0x612886;_0x53bec9<_0x544bdc[_0x5dd4('0x39')];_0x53bec9+=0x1){_0x612886=_0x544bdc[_0x53bec9][_0x5dd4('0x12')]({'plain':!![]});_0x593715['CmHopperBlack'][_0x5dd4('0x25')]({'phone':_0x7920e8[_0x5dd4('0xd')],'ContactId':_0x7920e8['id'],'ListId':_0x7920e8['ListId'],'CampaignId':_0x612886['id']})[_0x5dd4('0x29')](function(_0x340680){logger[_0x5dd4('0x13')](_0x5dd4('0x3b'),_0x5dd4('0x15'),_0x340680[_0x5dd4('0x3c')]);});}}});})[_0x5dd4('0x1d')](function(){_0x4b2e30();})[_0x5dd4('0x29')](function(_0x23b27b){logger[_0x5dd4('0x13')](_0x5dd4('0x3b'),'afterCreate',_0x23b27b[_0x5dd4('0x3c')]);_0x4b2e30(_0x23b27b);});}else{_0x4b2e30(new Error(_0x5dd4('0x3e')));}},'afterDestroy':function(_0x367938,_0x50a443,_0x453d4b){var _0x2d57b6=_0x2f0b2a[_0x5dd4('0x11')];var _0x1dd127=_0x367938[_0x5dd4('0x12')]({'plain':!![]});return _0x2d57b6[_0x5dd4('0x21')][_0x5dd4('0x31')]({'raw':!![],'where':{'ListId':_0x1dd127[_0x5dd4('0x26')],'ContactId':_0x1dd127['id']}})[_0x5dd4('0x1d')](function(_0x5d97b3){if(!_[_0x5dd4('0x3f')](_0x5d97b3)){var _0x181eab=[];for(var _0x1640fd=0x0;_0x1640fd<_0x5d97b3[_0x5dd4('0x39')];_0x1640fd+=0x1){var _0x59c9a2=_0x2d57b6['CmHopper']['destroy']({'where':{'ListId':_0x5d97b3[_0x1640fd][_0x5dd4('0x26')],'ContactId':_0x5d97b3[_0x1640fd][_0x5dd4('0x40')],'VoiceQueueId':_0x5d97b3[_0x1640fd][_0x5dd4('0x41')],'CampaignId':_0x5d97b3[_0x1640fd]['CampaignId']}});_0x181eab['push'](_0x59c9a2);}return BPromise['all'](_0x181eab);}})['then'](function(_0x5c0971){logger[_0x5dd4('0x42')]('[CmContact][afterDestroy][Succesfull]',util['inspect'](_0x5c0971,{'showHidden':![],'depth':null}));_0x453d4b();})[_0x5dd4('0x29')](function(_0x32a347){logger['error'](_0x5dd4('0x43'),util['inspect'](_0x32a347,{'showHidden':![],'depth':null}));_0x453d4b(_0x32a347);});}}});};
\ No newline at end of file
index 51d0d0d..62e8d94 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(_0x315153,_0x1e631d){var _0x325d33=function(_0x357311){while(--_0x357311){_0x315153['push'](_0x315153['shift']());}};_0x325d33(++_0x1e631d);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var 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(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 13ed081..67ef846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 d80091f..d92b4d3 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(_0x551597,_0x5205e5){var _0x5c5071=function(_0x59917e){while(--_0x59917e){_0x551597['push'](_0x551597['shift']());}};_0x5c5071(++_0x5205e5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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(_0x129ef8,_0x7a4218){var _0x1938ae=function(_0x423de9){while(--_0x423de9){_0x129ef8['push'](_0x129ef8['shift']());}};_0x1938ae(++_0x7a4218);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('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 536fabd..1328314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0851=['INTEGER','STRING','PHONE','sequelize','exports'];(function(_0x10e870,_0x4c4324){var _0x29b93d=function(_0x11943e){while(--_0x11943e){_0x10e870['push'](_0x10e870['shift']());}};_0x29b93d(++_0x4c4324);}(_0x0851,0x8a));var _0x1085=function(_0x41476c,_0x91403){_0x41476c=_0x41476c-0x0;var _0x367e81=_0x0851[_0x41476c];return _0x367e81;};'use strict';var Sequelize=require(_0x1085('0x0'));module[_0x1085('0x1')]={'CmContactId':{'type':Sequelize[_0x1085('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0x1085('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize['INTEGER'],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x1085('0x3')],'defaultValue':_0x1085('0x4')},'OrderBy':{'type':Sequelize[_0x1085('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x1085('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0x255f=['PHONE','sequelize','INTEGER','STRING'];(function(_0x3e02ed,_0x188644){var _0x36a339=function(_0x573677){while(--_0x573677){_0x3e02ed['push'](_0x3e02ed['shift']());}};_0x36a339(++_0x188644);}(_0x255f,0x185));var _0xf255=function(_0x59f1fc,_0x31db7e){_0x59f1fc=_0x59f1fc-0x0;var _0x468971=_0x255f[_0x59f1fc];return _0x468971;};'use strict';var Sequelize=require(_0xf255('0x0'));module['exports']={'CmContactId':{'type':Sequelize[_0xf255('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0xf255('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xf255('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':_0xf255('0x3')},'OrderBy':{'type':Sequelize[_0xf255('0x1')],'defaultValue':null},'description':{'type':Sequelize[_0xf255('0x2')],'defaultValue':null}};
\ No newline at end of file
index 88728bb..18eb548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0401=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','then','UserProfileResource','end','stack','name','send','map','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','VIRTUAL','filter','options','CmContactHasItem','includeAll','include','findAll','catch','show','params','rawAttributes','merge','create','get','role','user','CmContactHasItems','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2540db,_0x9b7318){var _0xbf6e9f=function(_0x5be1c6){while(--_0x5be1c6){_0x2540db['push'](_0x2540db['shift']());}};_0xbf6e9f(++_0x9b7318);}(_0x0401,0xeb));var _0x1040=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x0401[_0x31a371];return _0x2a5bd6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1040('0x0'));var zipdir=require(_0x1040('0x1'));var jsonpatch=require(_0x1040('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1040('0x3'));var Mustache=require(_0x1040('0x4'));var util=require(_0x1040('0x5'));var path=require(_0x1040('0x6'));var sox=require(_0x1040('0x7'));var csv=require(_0x1040('0x8'));var ejs=require(_0x1040('0x9'));var fs=require('fs');var fs_extra=require(_0x1040('0xa'));var _=require(_0x1040('0xb'));var squel=require(_0x1040('0xc'));var crypto=require(_0x1040('0xd'));var jsforce=require(_0x1040('0xe'));var deskjs=require(_0x1040('0xf'));var toCsv=require(_0x1040('0x8'));var querystring=require(_0x1040('0x10'));var Papa=require(_0x1040('0x11'));var Redis=require(_0x1040('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1040('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1040('0x14'));var logger=require(_0x1040('0x15'))(_0x1040('0x16'));var utils=require(_0x1040('0x17'));var config=require(_0x1040('0x18'));var licenseUtil=require(_0x1040('0x19'));var db=require(_0x1040('0x1a'))['db'];function respondWithStatusCode(_0x336480,_0x2ea8cf){_0x2ea8cf=_0x2ea8cf||0xcc;return function(_0x183976){if(_0x183976){return _0x336480[_0x1040('0x1b')](_0x2ea8cf);}return _0x336480[_0x1040('0x1c')](_0x2ea8cf)['end']();};}function respondWithResult(_0x51cb8b,_0x1babc8){_0x1babc8=_0x1babc8||0xc8;return function(_0x2fadb5){if(_0x2fadb5){return _0x51cb8b[_0x1040('0x1c')](_0x1babc8)[_0x1040('0x1d')](_0x2fadb5);}};}function respondWithFilteredResult(_0x25fd79,_0x371c88){return function(_0x455f87){if(_0x455f87){var _0x2e743a=typeof _0x371c88['offset']===_0x1040('0x1e')&&typeof _0x371c88[_0x1040('0x1f')]===_0x1040('0x1e');var _0x553ce9=_0x455f87[_0x1040('0x20')];var _0x1ff3bf=_0x2e743a?0x0:_0x371c88[_0x1040('0x21')];var _0x2fa01a=_0x2e743a?_0x455f87[_0x1040('0x20')]:_0x371c88[_0x1040('0x21')]+_0x371c88[_0x1040('0x1f')];var _0x5bfb34;if(_0x2fa01a>=_0x553ce9){_0x2fa01a=_0x553ce9;_0x5bfb34=0xc8;}else{_0x5bfb34=0xce;}_0x25fd79[_0x1040('0x1c')](_0x5bfb34);return _0x25fd79['set'](_0x1040('0x22'),_0x1ff3bf+'-'+_0x2fa01a+'/'+_0x553ce9)['json'](_0x455f87);}return null;};}function patchUpdates(_0x1ed96b){return function(_0x2a2848){try{jsonpatch[_0x1040('0x23')](_0x2a2848,_0x1ed96b,!![]);}catch(_0x1b16e2){return BPromise['reject'](_0x1b16e2);}return _0x2a2848[_0x1040('0x24')]();};}function saveUpdates(_0x4b031b,_0xbce0cc){return function(_0x5787cb){if(_0x5787cb){return _0x5787cb[_0x1040('0x25')](_0x4b031b)['then'](function(_0x30787e){return _0x30787e;});}return null;};}function removeEntity(_0x7e0458,_0x392e19){return function(_0x49773d){if(_0x49773d){return _0x49773d[_0x1040('0x26')]()[_0x1040('0x27')](function(){var _0x5d0b71=_0x49773d['get']({'plain':!![]});var _0x14423f='CmContactHasItems';return db[_0x1040('0x28')][_0x1040('0x26')]({'where':{'type':_0x14423f,'resourceId':_0x5d0b71['id']}})['then'](function(){return _0x49773d;});})[_0x1040('0x27')](function(){_0x7e0458[_0x1040('0x1c')](0xcc)[_0x1040('0x29')]();});}};}function handleEntityNotFound(_0x433e02,_0x4b4717){return function(_0x1158e8){if(!_0x1158e8){_0x433e02[_0x1040('0x1b')](0x194);}return _0x1158e8;};}function handleError(_0x2013d8,_0x5c5b1d){_0x5c5b1d=_0x5c5b1d||0x1f4;return function(_0x3724af){logger['error'](_0x3724af[_0x1040('0x2a')]);if(_0x3724af[_0x1040('0x2b')]){delete _0x3724af['name'];}_0x2013d8[_0x1040('0x1c')](_0x5c5b1d)[_0x1040('0x2c')](_0x3724af);};}exports['index']=function(_0x2da720,_0x209f66){var _0xc4494c={},_0x383e4a={},_0x56e77e={'count':0x0,'rows':[]};var _0x288c5a=_[_0x1040('0x2d')](db['CmContactHasItem']['rawAttributes'],function(_0x2c23ff){return{'name':_0x2c23ff[_0x1040('0x2e')],'type':_0x2c23ff[_0x1040('0x2f')][_0x1040('0x30')]};});_0x383e4a[_0x1040('0x31')]=_[_0x1040('0x2d')](_0x288c5a,_0x1040('0x2b'));_0x383e4a[_0x1040('0x32')]=_[_0x1040('0x33')](_0x2da720[_0x1040('0x32')]);_0x383e4a[_0x1040('0x34')]=_[_0x1040('0x35')](_0x383e4a[_0x1040('0x31')],_0x383e4a['query']);_0xc4494c['attributes']=_[_0x1040('0x35')](_0x383e4a['model'],qs[_0x1040('0x36')](_0x2da720['query'][_0x1040('0x36')]));_0xc4494c[_0x1040('0x37')]=_0xc4494c[_0x1040('0x37')][_0x1040('0x38')]?_0xc4494c['attributes']:_0x383e4a[_0x1040('0x31')];if(!_0x2da720[_0x1040('0x32')]['hasOwnProperty']('nolimit')){_0xc4494c['limit']=qs[_0x1040('0x1f')](_0x2da720[_0x1040('0x32')][_0x1040('0x1f')]);_0xc4494c['offset']=qs[_0x1040('0x21')](_0x2da720[_0x1040('0x32')][_0x1040('0x21')]);}_0xc4494c[_0x1040('0x39')]=qs[_0x1040('0x3a')](_0x2da720[_0x1040('0x32')][_0x1040('0x3a')]);_0xc4494c[_0x1040('0x3b')]=qs[_0x1040('0x34')](_['pick'](_0x2da720[_0x1040('0x32')],_0x383e4a['filters']),_0x288c5a);if(_0x2da720[_0x1040('0x32')]['filter']){_0xc4494c[_0x1040('0x3b')]=_['merge'](_0xc4494c['where'],{'$or':_['map'](_0x288c5a,function(_0x1314ca){if(_0x1314ca[_0x1040('0x2f')]!==_0x1040('0x3c')){var _0x114fe1={};_0x114fe1[_0x1314ca[_0x1040('0x2b')]]={'$like':'%'+_0x2da720[_0x1040('0x32')][_0x1040('0x3d')]+'%'};return _0x114fe1;}})});}_0xc4494c=_['merge']({},_0xc4494c,_0x2da720[_0x1040('0x3e')]);var _0x10650a={'where':_0xc4494c[_0x1040('0x3b')]};return db[_0x1040('0x3f')]['count'](_0x10650a)['then'](function(_0x1a8ec6){_0x56e77e[_0x1040('0x20')]=_0x1a8ec6;if(_0x2da720[_0x1040('0x32')][_0x1040('0x40')]){_0xc4494c[_0x1040('0x41')]=[{'all':!![]}];}return db[_0x1040('0x3f')][_0x1040('0x42')](_0xc4494c);})[_0x1040('0x27')](function(_0x51bcb6){_0x56e77e['rows']=_0x51bcb6;return _0x56e77e;})[_0x1040('0x27')](respondWithFilteredResult(_0x209f66,_0xc4494c))[_0x1040('0x43')](handleError(_0x209f66,null));};exports[_0x1040('0x44')]=function(_0x1767ec,_0x2513af){var _0x125b9e={'raw':!![],'where':{'id':_0x1767ec[_0x1040('0x45')]['id']}},_0x2b6d33={};_0x2b6d33[_0x1040('0x31')]=_['keys'](db[_0x1040('0x3f')][_0x1040('0x46')]);_0x2b6d33[_0x1040('0x32')]=_[_0x1040('0x33')](_0x1767ec[_0x1040('0x32')]);_0x2b6d33['filters']=_['intersection'](_0x2b6d33['model'],_0x2b6d33[_0x1040('0x32')]);_0x125b9e[_0x1040('0x37')]=_[_0x1040('0x35')](_0x2b6d33[_0x1040('0x31')],qs[_0x1040('0x36')](_0x1767ec[_0x1040('0x32')][_0x1040('0x36')]));_0x125b9e[_0x1040('0x37')]=_0x125b9e[_0x1040('0x37')][_0x1040('0x38')]?_0x125b9e[_0x1040('0x37')]:_0x2b6d33[_0x1040('0x31')];if(_0x1767ec['query'][_0x1040('0x40')]){_0x125b9e[_0x1040('0x41')]=[{'all':!![]}];}_0x125b9e=_[_0x1040('0x47')]({},_0x125b9e,_0x1767ec['options']);return db[_0x1040('0x3f')]['find'](_0x125b9e)['then'](handleEntityNotFound(_0x2513af,null))[_0x1040('0x27')](respondWithResult(_0x2513af,null))[_0x1040('0x43')](handleError(_0x2513af,null));};exports[_0x1040('0x48')]=function(_0x521fd9,_0x193a64){return db[_0x1040('0x3f')]['create'](_0x521fd9['body'],{})[_0x1040('0x27')](function(_0x59a9eb){var _0x3d3fb3=_0x521fd9['user'][_0x1040('0x49')]({'plain':!![]});if(!_0x3d3fb3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3d3fb3[_0x1040('0x4a')]===_0x1040('0x4b')){var _0x5d1cfb=_0x59a9eb[_0x1040('0x49')]({'plain':!![]});var _0x1cf180=_0x1040('0x4c');return db[_0x1040('0x4d')][_0x1040('0x4e')]({'where':{'name':_0x1cf180,'userProfileId':_0x3d3fb3[_0x1040('0x4f')]},'raw':!![]})[_0x1040('0x27')](function(_0x45e18a){if(_0x45e18a&&_0x45e18a[_0x1040('0x50')]===0x0){return db[_0x1040('0x28')][_0x1040('0x48')]({'name':_0x5d1cfb[_0x1040('0x2b')],'resourceId':_0x5d1cfb['id'],'type':_0x45e18a[_0x1040('0x2b')],'sectionId':_0x45e18a['id']},{})['then'](function(){return _0x59a9eb;});}else{return _0x59a9eb;}})['catch'](function(_0x2e96c1){logger['error'](_0x1040('0x51'),_0x2e96c1);throw _0x2e96c1;});}return _0x59a9eb;})['then'](respondWithResult(_0x193a64,0xc9))[_0x1040('0x43')](handleError(_0x193a64,null));};exports[_0x1040('0x25')]=function(_0x1cf5ad,_0x939444){if(_0x1cf5ad[_0x1040('0x52')]['id']){delete _0x1cf5ad[_0x1040('0x52')]['id'];}return db[_0x1040('0x3f')][_0x1040('0x4e')]({'where':{'id':_0x1cf5ad[_0x1040('0x45')]['id']}})[_0x1040('0x27')](handleEntityNotFound(_0x939444,null))['then'](saveUpdates(_0x1cf5ad[_0x1040('0x52')],null))[_0x1040('0x27')](respondWithResult(_0x939444,null))[_0x1040('0x43')](handleError(_0x939444,null));};exports[_0x1040('0x26')]=function(_0x15f78c,_0xbab59e){return db[_0x1040('0x3f')][_0x1040('0x4e')]({'where':{'id':_0x15f78c[_0x1040('0x45')]['id']}})[_0x1040('0x27')](handleEntityNotFound(_0xbab59e,null))[_0x1040('0x27')](removeEntity(_0xbab59e,null))[_0x1040('0x43')](handleError(_0xbab59e,null));};
\ No newline at end of file
+var _0x2af2=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','error','name','map','CmContactHasItem','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','includeAll','rows','catch','show','params','rawAttributes','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','CmContactHasItems','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0xf3fdd8,_0x4a6729){var _0x46df5f=function(_0x2bbfaf){while(--_0x2bbfaf){_0xf3fdd8['push'](_0xf3fdd8['shift']());}};_0x46df5f(++_0x4a6729);}(_0x2af2,0x1d9));var _0x22af=function(_0x33030f,_0x350d40){_0x33030f=_0x33030f-0x0;var _0x459d32=_0x2af2[_0x33030f];return _0x459d32;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x22af('0x0'));var zipdir=require(_0x22af('0x1'));var jsonpatch=require(_0x22af('0x2'));var rp=require(_0x22af('0x3'));var moment=require(_0x22af('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x22af('0x5'));var util=require(_0x22af('0x6'));var path=require(_0x22af('0x7'));var sox=require(_0x22af('0x8'));var csv=require(_0x22af('0x9'));var ejs=require(_0x22af('0xa'));var fs=require('fs');var fs_extra=require(_0x22af('0xb'));var _=require(_0x22af('0xc'));var squel=require(_0x22af('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x22af('0xe'));var toCsv=require(_0x22af('0x9'));var querystring=require(_0x22af('0xf'));var Papa=require(_0x22af('0x10'));var Redis=require(_0x22af('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x22af('0x12'));var as=require(_0x22af('0x13'));var hardwareService=require(_0x22af('0x14'));var logger=require(_0x22af('0x15'))('api');var utils=require(_0x22af('0x16'));var config=require(_0x22af('0x17'));var licenseUtil=require(_0x22af('0x18'));var db=require(_0x22af('0x19'))['db'];function respondWithStatusCode(_0x4ebd5a,_0x4fdbdf){_0x4fdbdf=_0x4fdbdf||0xcc;return function(_0x39f82b){if(_0x39f82b){return _0x4ebd5a[_0x22af('0x1a')](_0x4fdbdf);}return _0x4ebd5a[_0x22af('0x1b')](_0x4fdbdf)[_0x22af('0x1c')]();};}function respondWithResult(_0x48b853,_0x465f9c){_0x465f9c=_0x465f9c||0xc8;return function(_0x4c380c){if(_0x4c380c){return _0x48b853['status'](_0x465f9c)[_0x22af('0x1d')](_0x4c380c);}};}function respondWithFilteredResult(_0x1b6919,_0x4248cf){return function(_0x3d6416){if(_0x3d6416){var _0x3b2d91=typeof _0x4248cf[_0x22af('0x1e')]===_0x22af('0x1f')&&typeof _0x4248cf[_0x22af('0x20')]===_0x22af('0x1f');var _0x2b283f=_0x3d6416[_0x22af('0x21')];var _0x125ec1=_0x3b2d91?0x0:_0x4248cf['offset'];var _0x546168=_0x3b2d91?_0x3d6416['count']:_0x4248cf['offset']+_0x4248cf[_0x22af('0x20')];var _0x36099d;if(_0x546168>=_0x2b283f){_0x546168=_0x2b283f;_0x36099d=0xc8;}else{_0x36099d=0xce;}_0x1b6919['status'](_0x36099d);return _0x1b6919[_0x22af('0x22')]('Content-Range',_0x125ec1+'-'+_0x546168+'/'+_0x2b283f)[_0x22af('0x1d')](_0x3d6416);}return null;};}function patchUpdates(_0x3772e3){return function(_0x2bb667){try{jsonpatch[_0x22af('0x23')](_0x2bb667,_0x3772e3,!![]);}catch(_0x464640){return BPromise[_0x22af('0x24')](_0x464640);}return _0x2bb667[_0x22af('0x25')]();};}function saveUpdates(_0x35377c,_0x3c43b0){return function(_0x3779c5){if(_0x3779c5){return _0x3779c5[_0x22af('0x26')](_0x35377c)['then'](function(_0x23ba33){return _0x23ba33;});}return null;};}function removeEntity(_0x3d5008,_0x28bff4){return function(_0x3ac07b){if(_0x3ac07b){return _0x3ac07b[_0x22af('0x27')]()['then'](function(){var _0x29132b=_0x3ac07b['get']({'plain':!![]});var _0x51d0b4='CmContactHasItems';return db['UserProfileResource'][_0x22af('0x27')]({'where':{'type':_0x51d0b4,'resourceId':_0x29132b['id']}})[_0x22af('0x28')](function(){return _0x3ac07b;});})['then'](function(){_0x3d5008['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27df17,_0x4d985b){return function(_0x46cb46){if(!_0x46cb46){_0x27df17['sendStatus'](0x194);}return _0x46cb46;};}function handleError(_0x52108a,_0x3c32a2){_0x3c32a2=_0x3c32a2||0x1f4;return function(_0x6abcf9){logger[_0x22af('0x29')](_0x6abcf9['stack']);if(_0x6abcf9[_0x22af('0x2a')]){delete _0x6abcf9[_0x22af('0x2a')];}_0x52108a[_0x22af('0x1b')](_0x3c32a2)['send'](_0x6abcf9);};}exports['index']=function(_0x132033,_0x463d5b){var _0x4162b4={},_0x374e74={},_0x24c8be={'count':0x0,'rows':[]};var _0x2ee86f=_[_0x22af('0x2b')](db[_0x22af('0x2c')]['rawAttributes'],function(_0x356fdf){return{'name':_0x356fdf[_0x22af('0x2d')],'type':_0x356fdf['type']['key']};});_0x374e74['model']=_[_0x22af('0x2b')](_0x2ee86f,_0x22af('0x2a'));_0x374e74[_0x22af('0x2e')]=_[_0x22af('0x2f')](_0x132033['query']);_0x374e74[_0x22af('0x30')]=_[_0x22af('0x31')](_0x374e74[_0x22af('0x32')],_0x374e74[_0x22af('0x2e')]);_0x4162b4[_0x22af('0x33')]=_['intersection'](_0x374e74['model'],qs['fields'](_0x132033[_0x22af('0x2e')][_0x22af('0x34')]));_0x4162b4[_0x22af('0x33')]=_0x4162b4[_0x22af('0x33')]['length']?_0x4162b4[_0x22af('0x33')]:_0x374e74[_0x22af('0x32')];if(!_0x132033[_0x22af('0x2e')][_0x22af('0x35')](_0x22af('0x36'))){_0x4162b4[_0x22af('0x20')]=qs[_0x22af('0x20')](_0x132033['query'][_0x22af('0x20')]);_0x4162b4['offset']=qs[_0x22af('0x1e')](_0x132033['query'][_0x22af('0x1e')]);}_0x4162b4[_0x22af('0x37')]=qs['sort'](_0x132033[_0x22af('0x2e')][_0x22af('0x38')]);_0x4162b4[_0x22af('0x39')]=qs[_0x22af('0x30')](_['pick'](_0x132033[_0x22af('0x2e')],_0x374e74['filters']),_0x2ee86f);if(_0x132033[_0x22af('0x2e')]['filter']){_0x4162b4['where']=_[_0x22af('0x3a')](_0x4162b4['where'],{'$or':_['map'](_0x2ee86f,function(_0x4ef188){if(_0x4ef188[_0x22af('0x3b')]!=='VIRTUAL'){var _0x29d7ad={};_0x29d7ad[_0x4ef188['name']]={'$like':'%'+_0x132033[_0x22af('0x2e')][_0x22af('0x3c')]+'%'};return _0x29d7ad;}})});}_0x4162b4=_[_0x22af('0x3a')]({},_0x4162b4,_0x132033['options']);var _0x1e02f2={'where':_0x4162b4[_0x22af('0x39')]};return db[_0x22af('0x2c')][_0x22af('0x21')](_0x1e02f2)[_0x22af('0x28')](function(_0x482b1a){_0x24c8be[_0x22af('0x21')]=_0x482b1a;if(_0x132033['query'][_0x22af('0x3d')]){_0x4162b4['include']=[{'all':!![]}];}return db['CmContactHasItem']['findAll'](_0x4162b4);})['then'](function(_0x3d6173){_0x24c8be[_0x22af('0x3e')]=_0x3d6173;return _0x24c8be;})['then'](respondWithFilteredResult(_0x463d5b,_0x4162b4))[_0x22af('0x3f')](handleError(_0x463d5b,null));};exports[_0x22af('0x40')]=function(_0x13771a,_0x4875e1){var _0x14540b={'raw':!![],'where':{'id':_0x13771a[_0x22af('0x41')]['id']}},_0x405db5={};_0x405db5[_0x22af('0x32')]=_[_0x22af('0x2f')](db[_0x22af('0x2c')][_0x22af('0x42')]);_0x405db5[_0x22af('0x2e')]=_[_0x22af('0x2f')](_0x13771a[_0x22af('0x2e')]);_0x405db5['filters']=_['intersection'](_0x405db5[_0x22af('0x32')],_0x405db5[_0x22af('0x2e')]);_0x14540b[_0x22af('0x33')]=_[_0x22af('0x31')](_0x405db5[_0x22af('0x32')],qs['fields'](_0x13771a[_0x22af('0x2e')][_0x22af('0x34')]));_0x14540b[_0x22af('0x33')]=_0x14540b['attributes'][_0x22af('0x43')]?_0x14540b['attributes']:_0x405db5['model'];if(_0x13771a[_0x22af('0x2e')][_0x22af('0x3d')]){_0x14540b['include']=[{'all':!![]}];}_0x14540b=_['merge']({},_0x14540b,_0x13771a[_0x22af('0x44')]);return db[_0x22af('0x2c')][_0x22af('0x45')](_0x14540b)[_0x22af('0x28')](handleEntityNotFound(_0x4875e1,null))[_0x22af('0x28')](respondWithResult(_0x4875e1,null))['catch'](handleError(_0x4875e1,null));};exports['create']=function(_0x5b809a,_0x14e6fc){return db['CmContactHasItem'][_0x22af('0x46')](_0x5b809a[_0x22af('0x47')],{})[_0x22af('0x28')](function(_0x227697){var _0x2b5ff8=_0x5b809a[_0x22af('0x48')]['get']({'plain':!![]});if(!_0x2b5ff8)throw new Error(_0x22af('0x49'));if(_0x2b5ff8[_0x22af('0x4a')]===_0x22af('0x48')){var _0x282dc6=_0x227697[_0x22af('0x4b')]({'plain':!![]});var _0x48b409=_0x22af('0x4c');return db[_0x22af('0x4d')][_0x22af('0x45')]({'where':{'name':_0x48b409,'userProfileId':_0x2b5ff8[_0x22af('0x4e')]},'raw':!![]})[_0x22af('0x28')](function(_0x2762ac){if(_0x2762ac&&_0x2762ac[_0x22af('0x4f')]===0x0){return db[_0x22af('0x50')][_0x22af('0x46')]({'name':_0x282dc6[_0x22af('0x2a')],'resourceId':_0x282dc6['id'],'type':_0x2762ac['name'],'sectionId':_0x2762ac['id']},{})[_0x22af('0x28')](function(){return _0x227697;});}else{return _0x227697;}})[_0x22af('0x3f')](function(_0x393625){logger[_0x22af('0x29')](_0x22af('0x51'),_0x393625);throw _0x393625;});}return _0x227697;})[_0x22af('0x28')](respondWithResult(_0x14e6fc,0xc9))['catch'](handleError(_0x14e6fc,null));};exports[_0x22af('0x26')]=function(_0x2a6eac,_0x3173ae){if(_0x2a6eac['body']['id']){delete _0x2a6eac[_0x22af('0x47')]['id'];}return db[_0x22af('0x2c')][_0x22af('0x45')]({'where':{'id':_0x2a6eac[_0x22af('0x41')]['id']}})[_0x22af('0x28')](handleEntityNotFound(_0x3173ae,null))[_0x22af('0x28')](saveUpdates(_0x2a6eac[_0x22af('0x47')],null))[_0x22af('0x28')](respondWithResult(_0x3173ae,null))[_0x22af('0x3f')](handleError(_0x3173ae,null));};exports['destroy']=function(_0x236f14,_0x5120ea){return db[_0x22af('0x2c')][_0x22af('0x45')]({'where':{'id':_0x236f14[_0x22af('0x41')]['id']}})['then'](handleEntityNotFound(_0x5120ea,null))['then'](removeEntity(_0x5120ea,null))[_0x22af('0x3f')](handleError(_0x5120ea,null));};
\ No newline at end of file
index 88ff702..fb27d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87ee=['CmContactHasItem','cm_contact_has_items','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContactHasItem.attributes','exports','define'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x87ee,0x120));var _0xe87e=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x87ee[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require(_0xe87e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe87e('0x1'));var BPromise=require(_0xe87e('0x2'));var rp=require(_0xe87e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe87e('0x4'));var config=require(_0xe87e('0x5'));var attributes=require(_0xe87e('0x6'));module[_0xe87e('0x7')]=function(_0x182f26,_0x434657){return _0x182f26[_0xe87e('0x8')](_0xe87e('0x9'),attributes,{'tableName':_0xe87e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe958=['moment','bluebird','request-promise','../../config/environment','exports','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','api'];(function(_0x348860,_0x4531f6){var _0x2fc2ad=function(_0x3b449f){while(--_0x3b449f){_0x348860['push'](_0x348860['shift']());}};_0x2fc2ad(++_0x4531f6);}(_0xe958,0x80));var _0x8e95=function(_0x486a0b,_0x4f4e91){_0x486a0b=_0x486a0b-0x0;var _0x284ad2=_0xe958[_0x486a0b];return _0x284ad2;};'use strict';var _=require(_0x8e95('0x0'));var util=require(_0x8e95('0x1'));var logger=require(_0x8e95('0x2'))(_0x8e95('0x3'));var moment=require(_0x8e95('0x4'));var BPromise=require(_0x8e95('0x5'));var rp=require(_0x8e95('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8e95('0x7'));var attributes=require('./cmContactHasItem.attributes');module[_0x8e95('0x8')]=function(_0x178a61,_0x513d1f){return _0x178a61['define'](_0x8e95('0x9'),attributes,{'tableName':_0x8e95('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8fc18b..d769244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c59=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x3b0f37,_0x4d9eb6){var _0x479d5e=function(_0x35fbcb){while(--_0x35fbcb){_0x3b0f37['push'](_0x3b0f37['shift']());}};_0x479d5e(++_0x4d9eb6);}(_0x4c59,0x14c));var _0x94c5=function(_0x16bc92,_0x1b0935){_0x16bc92=_0x16bc92-0x0;var _0x27a2d2=_0x4c59[_0x16bc92];return _0x27a2d2;};'use strict';var _=require(_0x94c5('0x0'));var util=require(_0x94c5('0x1'));var moment=require(_0x94c5('0x2'));var BPromise=require(_0x94c5('0x3'));var rs=require(_0x94c5('0x4'));var fs=require('fs');var Redis=require(_0x94c5('0x5'));var db=require(_0x94c5('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x94c5('0x7'))(_0x94c5('0x8'));var config=require(_0x94c5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x94c5('0xa')][_0x94c5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x187b1a,_0xa348f2,_0xb68e80){return new BPromise(function(_0x30a483,_0x3b6441){return client['request'](_0x187b1a,_0xb68e80)['then'](function(_0x340f00){logger[_0x94c5('0xc')](_0x94c5('0xd'),_0xa348f2,_0x94c5('0xe'));logger[_0x94c5('0xf')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0xa348f2,_0x94c5('0xe'),JSON[_0x94c5('0x10')](_0x340f00));if(_0x340f00[_0x94c5('0x11')]){if(_0x340f00['error'][_0x94c5('0x12')]===0x1f4){logger[_0x94c5('0x11')](_0x94c5('0xd'),_0xa348f2,_0x340f00['error'][_0x94c5('0x13')]);return _0x3b6441(_0x340f00[_0x94c5('0x11')]['message']);}logger[_0x94c5('0x11')](_0x94c5('0xd'),_0xa348f2,_0x340f00[_0x94c5('0x11')]['message']);return _0x30a483(_0x340f00[_0x94c5('0x11')][_0x94c5('0x13')]);}else{logger[_0x94c5('0xc')]('CmContactHasItem,\x20%s,\x20%s',_0xa348f2,_0x94c5('0xe'));_0x30a483(_0x340f00[_0x94c5('0x14')][_0x94c5('0x13')]);}})[_0x94c5('0x15')](function(_0x49591f){logger[_0x94c5('0x11')](_0x94c5('0xd'),_0xa348f2,_0x49591f);_0x3b6441(_0x49591f);});});}
\ No newline at end of file
+var _0xa051=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','CmContactHasItem,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0xa051,0xee));var _0x1a05=function(_0x1862ae,_0x201194){_0x1862ae=_0x1862ae-0x0;var _0xc4ca80=_0xa051[_0x1862ae];return _0xc4ca80;};'use strict';var _=require(_0x1a05('0x0'));var util=require(_0x1a05('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1a05('0x2'));var fs=require('fs');var Redis=require(_0x1a05('0x3'));var db=require(_0x1a05('0x4'))['db'];var utils=require(_0x1a05('0x5'));var logger=require(_0x1a05('0x6'))(_0x1a05('0x7'));var config=require(_0x1a05('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1a05('0x9')][_0x1a05('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xaed5cd,_0x4cc9b9,_0x4c84ef){return new BPromise(function(_0x4fdbfa,_0x50265d){return client[_0x1a05('0xb')](_0xaed5cd,_0x4c84ef)[_0x1a05('0xc')](function(_0x558d46){logger['info'](_0x1a05('0xd'),_0x4cc9b9,'request\x20sent');logger[_0x1a05('0xe')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x4cc9b9,_0x1a05('0xf'),JSON[_0x1a05('0x10')](_0x558d46));if(_0x558d46[_0x1a05('0x11')]){if(_0x558d46[_0x1a05('0x11')][_0x1a05('0x12')]===0x1f4){logger['error'](_0x1a05('0xd'),_0x4cc9b9,_0x558d46[_0x1a05('0x11')][_0x1a05('0x13')]);return _0x50265d(_0x558d46[_0x1a05('0x11')]['message']);}logger['error'](_0x1a05('0xd'),_0x4cc9b9,_0x558d46[_0x1a05('0x11')]['message']);return _0x4fdbfa(_0x558d46[_0x1a05('0x11')][_0x1a05('0x13')]);}else{logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x4cc9b9,_0x1a05('0xf'));_0x4fdbfa(_0x558d46[_0x1a05('0x14')][_0x1a05('0x13')]);}})[_0x1a05('0x15')](function(_0x4cee2f){logger[_0x1a05('0x11')](_0x1a05('0xd'),_0x4cc9b9,_0x4cee2f);_0x50265d(_0x4cee2f);});});}
\ No newline at end of file
index 0c69591..a405929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8e2=['update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','create','put'];(function(_0x42058e,_0x1b8697){var _0x36e15a=function(_0x34bcb7){while(--_0x34bcb7){_0x42058e['push'](_0x42058e['shift']());}};_0x36e15a(++_0x1b8697);}(_0xa8e2,0xa6));var _0x2a8e=function(_0x908418,_0x2ef8d7){_0x908418=_0x908418-0x0;var _0x225095=_0xa8e2[_0x908418];return _0x225095;};'use strict';var multer=require('multer');var util=require(_0x2a8e('0x0'));var path=require(_0x2a8e('0x1'));var timeout=require(_0x2a8e('0x2'));var express=require(_0x2a8e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2a8e('0x4'));var interaction=require(_0x2a8e('0x5'));var config=require(_0x2a8e('0x6'));var controller=require(_0x2a8e('0x7'));router[_0x2a8e('0x8')]('/',auth[_0x2a8e('0x9')](),controller[_0x2a8e('0xa')]);router[_0x2a8e('0x8')](_0x2a8e('0xb'),auth[_0x2a8e('0x9')](),controller['show']);router['post']('/',auth[_0x2a8e('0x9')](),controller[_0x2a8e('0xc')]);router[_0x2a8e('0xd')](_0x2a8e('0xb'),auth['isAuthenticated'](),controller[_0x2a8e('0xe')]);router[_0x2a8e('0xf')]('/:id',auth[_0x2a8e('0x9')](),controller[_0x2a8e('0x10')]);module[_0x2a8e('0x11')]=router;
\ No newline at end of file
+var _0x919c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','index','/:id','isAuthenticated','show','post','create','update','delete','exports','connect-timeout'];(function(_0x1f00f5,_0x400936){var _0x353158=function(_0x2841e7){while(--_0x2841e7){_0x1f00f5['push'](_0x1f00f5['shift']());}};_0x353158(++_0x400936);}(_0x919c,0x7d));var _0xc919=function(_0x33391f,_0x54fca3){_0x33391f=_0x33391f-0x0;var _0x537f27=_0x919c[_0x33391f];return _0x537f27;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xc919('0x0'));var express=require(_0xc919('0x1'));var router=express[_0xc919('0x2')]();var fs_extra=require(_0xc919('0x3'));var auth=require(_0xc919('0x4'));var interaction=require(_0xc919('0x5'));var config=require(_0xc919('0x6'));var controller=require(_0xc919('0x7'));router[_0xc919('0x8')]('/',auth['isAuthenticated'](),controller[_0xc919('0x9')]);router['get'](_0xc919('0xa'),auth[_0xc919('0xb')](),controller[_0xc919('0xc')]);router[_0xc919('0xd')]('/',auth[_0xc919('0xb')](),controller[_0xc919('0xe')]);router['put']('/:id',auth[_0xc919('0xb')](),controller[_0xc919('0xf')]);router[_0xc919('0x10')](_0xc919('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xc919('0x11')]=router;
\ No newline at end of file
index 545616e..8b4f842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b98=['values','isArray','stringify','BOOLEAN','voice','exports','VIRTUAL','getDataValue','STRING','setDataValue','alias','TEXT','long','type','select','parse'];(function(_0x3f6c29,_0x370d86){var _0x4af959=function(_0x263612){while(--_0x263612){_0x3f6c29['push'](_0x3f6c29['shift']());}};_0x4af959(++_0x370d86);}(_0x1b98,0x95));var _0x81b9=function(_0x114586,_0x1f844b){_0x114586=_0x114586-0x0;var _0xe1cfd=_0x1b98[_0x114586];return _0xe1cfd;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x81b9('0x0')]={'name':{'type':Sequelize[_0x81b9('0x1')],'get':function(_0x1766a4){return this[_0x81b9('0x2')]('alias');}},'alias':{'type':Sequelize[_0x81b9('0x3')],'allowNull':![],'set':function(_0x11fc57){this[_0x81b9('0x4')](_0x81b9('0x5'),_0x11fc57?_0x11fc57:this[_0x81b9('0x2')]('name'));}},'type':{'type':Sequelize[_0x81b9('0x3')],'allowNull':![]},'values':{'type':Sequelize[_0x81b9('0x6')](_0x81b9('0x7')),'get':function(){if(this['getDataValue'](_0x81b9('0x8'))===_0x81b9('0x9')){return JSON[_0x81b9('0xa')](this['getDataValue'](_0x81b9('0xb')));}else{return this[_0x81b9('0x2')]('values');}},'set':function(_0x12bbc1){if(Array[_0x81b9('0xc')](_0x12bbc1)){this['setDataValue'](_0x81b9('0xb'),JSON[_0x81b9('0xd')](_0x12bbc1));}else{this['setDataValue']('values',_0x12bbc1);}}},'required':{'type':Sequelize[_0x81b9('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x81b9('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x81b9('0xf'))}};
\ No newline at end of file
+var _0xbb56=['sequelize','lodash','exports','getDataValue','alias','STRING','setDataValue','TEXT','long','type','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice'];(function(_0x436fac,_0xcf35e6){var _0x3dc266=function(_0x4a30a3){while(--_0x4a30a3){_0x436fac['push'](_0x436fac['shift']());}};_0x3dc266(++_0xcf35e6);}(_0xbb56,0xd8));var _0x6bb5=function(_0x46cd9a,_0x2a2630){_0x46cd9a=_0x46cd9a-0x0;var _0x3b2905=_0xbb56[_0x46cd9a];return _0x3b2905;};'use strict';var Sequelize=require(_0x6bb5('0x0'));var _=require(_0x6bb5('0x1'));module[_0x6bb5('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x332cdc){return this[_0x6bb5('0x3')](_0x6bb5('0x4'));}},'alias':{'type':Sequelize[_0x6bb5('0x5')],'allowNull':![],'set':function(_0x188e35){this[_0x6bb5('0x6')](_0x6bb5('0x4'),_0x188e35?_0x188e35:this['getDataValue']('name'));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x6bb5('0x7')](_0x6bb5('0x8')),'get':function(){if(this[_0x6bb5('0x3')](_0x6bb5('0x9'))===_0x6bb5('0xa')){return JSON[_0x6bb5('0xb')](this[_0x6bb5('0x3')](_0x6bb5('0xc')));}else{return this[_0x6bb5('0x3')](_0x6bb5('0xc'));}},'set':function(_0x4ea115){if(Array[_0x6bb5('0xd')](_0x4ea115)){this[_0x6bb5('0x6')](_0x6bb5('0xc'),JSON[_0x6bb5('0xe')](_0x4ea115));}else{this['setDataValue'](_0x6bb5('0xc'),_0x4ea115);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x6bb5('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x6bb5('0x10')](_0x6bb5('0x11'))}};
\ No newline at end of file
index 0b0afe3..f412b95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7bb=['hasOwnProperty','nolimit','order','where','VIRTUAL','merge','options','includeAll','rows','catch','show','params','rawAttributes','include','find','body','sequelize','transaction','create','Sequelize','TEXT','text','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%d','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','map','CmCustomField','fieldName','type','key','keys','filters','intersection','model','attributes','fields','length','query'];(function(_0x3d8240,_0x2663d4){var _0x3d0372=function(_0xc47c6b){while(--_0xc47c6b){_0x3d8240['push'](_0x3d8240['shift']());}};_0x3d0372(++_0x2663d4);}(_0xa7bb,0x70));var _0xba7b=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa7bb[_0x220dbb];return _0x2b77de;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xba7b('0x0'));var zipdir=require(_0xba7b('0x1'));var jsonpatch=require(_0xba7b('0x2'));var rp=require(_0xba7b('0x3'));var moment=require(_0xba7b('0x4'));var BPromise=require(_0xba7b('0x5'));var Mustache=require(_0xba7b('0x6'));var util=require('util');var path=require('path');var sox=require(_0xba7b('0x7'));var csv=require(_0xba7b('0x8'));var ejs=require(_0xba7b('0x9'));var fs=require('fs');var fs_extra=require(_0xba7b('0xa'));var _=require(_0xba7b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xba7b('0xc'));var deskjs=require(_0xba7b('0xd'));var toCsv=require(_0xba7b('0x8'));var querystring=require(_0xba7b('0xe'));var Papa=require(_0xba7b('0xf'));var Redis=require(_0xba7b('0x10'));var authService=require(_0xba7b('0x11'));var qs=require(_0xba7b('0x12'));var as=require(_0xba7b('0x13'));var hardwareService=require(_0xba7b('0x14'));var logger=require('../../config/logger')(_0xba7b('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xba7b('0x16'));var db=require(_0xba7b('0x17'))['db'];function respondWithStatusCode(_0x422665,_0x3685df){_0x3685df=_0x3685df||0xcc;return function(_0x69e7ee){if(_0x69e7ee){return _0x422665[_0xba7b('0x18')](_0x3685df);}return _0x422665['status'](_0x3685df)['end']();};}function respondWithResult(_0x32c413,_0x150ce2){_0x150ce2=_0x150ce2||0xc8;return function(_0x212879){if(_0x212879){return _0x32c413[_0xba7b('0x19')](_0x150ce2)[_0xba7b('0x1a')](_0x212879);}};}function respondWithFilteredResult(_0x48cd82,_0x5d45c0){return function(_0xb40813){if(_0xb40813){var _0x72b165=typeof _0x5d45c0[_0xba7b('0x1b')]===_0xba7b('0x1c')&&typeof _0x5d45c0[_0xba7b('0x1d')]===_0xba7b('0x1c');var _0x5b35eb=_0xb40813[_0xba7b('0x1e')];var _0x1ec15e=_0x72b165?0x0:_0x5d45c0[_0xba7b('0x1b')];var _0x3b2d94=_0x72b165?_0xb40813[_0xba7b('0x1e')]:_0x5d45c0['offset']+_0x5d45c0[_0xba7b('0x1d')];var _0x2fab05;if(_0x3b2d94>=_0x5b35eb){_0x3b2d94=_0x5b35eb;_0x2fab05=0xc8;}else{_0x2fab05=0xce;}_0x48cd82['status'](_0x2fab05);return _0x48cd82[_0xba7b('0x1f')](_0xba7b('0x20'),_0x1ec15e+'-'+_0x3b2d94+'/'+_0x5b35eb)[_0xba7b('0x1a')](_0xb40813);}return null;};}function patchUpdates(_0x213e94){return function(_0x5bbc78){try{jsonpatch[_0xba7b('0x21')](_0x5bbc78,_0x213e94,!![]);}catch(_0x11cf03){return BPromise['reject'](_0x11cf03);}return _0x5bbc78[_0xba7b('0x22')]();};}function saveUpdates(_0x4d3be1,_0x416ddb){return function(_0x340821){if(_0x340821){return _0x340821[_0xba7b('0x23')](_0x4d3be1)[_0xba7b('0x24')](function(_0x1429a3){return _0x1429a3;});}return null;};}function removeEntity(_0x2e0eef,_0x1a9825){return function(_0x2d2a18){if(_0x2d2a18){return _0x2d2a18[_0xba7b('0x25')]()[_0xba7b('0x24')](function(){_0x2e0eef[_0xba7b('0x19')](0xcc)[_0xba7b('0x26')]();});}};}function handleEntityNotFound(_0x1a214b,_0x250f28){return function(_0xf95d10){if(!_0xf95d10){_0x1a214b[_0xba7b('0x18')](0x194);}return _0xf95d10;};}function handleError(_0x329332,_0x2e83ae){_0x2e83ae=_0x2e83ae||0x1f4;return function(_0x418117){logger[_0xba7b('0x27')](_0x418117[_0xba7b('0x28')]);if(_0x418117['name']){delete _0x418117[_0xba7b('0x29')];}_0x329332[_0xba7b('0x19')](_0x2e83ae)[_0xba7b('0x2a')](_0x418117);};}exports['index']=function(_0x5ab5a1,_0x2e9184){var _0xd25861={},_0x3ac290={},_0x7c1aec={'count':0x0,'rows':[]};var _0x33f839=_[_0xba7b('0x2b')](db[_0xba7b('0x2c')]['rawAttributes'],function(_0x24e30e){return{'name':_0x24e30e[_0xba7b('0x2d')],'type':_0x24e30e[_0xba7b('0x2e')][_0xba7b('0x2f')]};});_0x3ac290['model']=_['differenceBy'](_[_0xba7b('0x2b')](_0x33f839,'name'),[_0xba7b('0x29')]);_0x3ac290['query']=_[_0xba7b('0x30')](_0x5ab5a1['query']);_0x3ac290[_0xba7b('0x31')]=_[_0xba7b('0x32')](_0x3ac290[_0xba7b('0x33')],_0x3ac290['query']);_0xd25861[_0xba7b('0x34')]=_[_0xba7b('0x32')](_0x3ac290[_0xba7b('0x33')],qs['fields'](_0x5ab5a1['query'][_0xba7b('0x35')]));_0xd25861[_0xba7b('0x34')]=_0xd25861[_0xba7b('0x34')][_0xba7b('0x36')]?_0xd25861[_0xba7b('0x34')]:_0x3ac290[_0xba7b('0x33')];if(!_0x5ab5a1[_0xba7b('0x37')][_0xba7b('0x38')](_0xba7b('0x39'))){_0xd25861[_0xba7b('0x1d')]=qs[_0xba7b('0x1d')](_0x5ab5a1[_0xba7b('0x37')]['limit']);_0xd25861[_0xba7b('0x1b')]=qs[_0xba7b('0x1b')](_0x5ab5a1[_0xba7b('0x37')][_0xba7b('0x1b')]);}_0xd25861[_0xba7b('0x3a')]=qs['sort'](_0x5ab5a1[_0xba7b('0x37')]['sort']);_0xd25861[_0xba7b('0x3b')]=qs[_0xba7b('0x31')](_['pick'](_0x5ab5a1[_0xba7b('0x37')],_0x3ac290[_0xba7b('0x31')]),_0x33f839);if(_0x5ab5a1[_0xba7b('0x37')]['filter']){_0xd25861['where']=_['merge'](_0xd25861[_0xba7b('0x3b')],{'$or':_[_0xba7b('0x2b')](_0x33f839,function(_0x29069c){if(_0x29069c[_0xba7b('0x2e')]!==_0xba7b('0x3c')){var _0x36c6b7={};_0x36c6b7[_0x29069c[_0xba7b('0x29')]]={'$like':'%'+_0x5ab5a1['query']['filter']+'%'};return _0x36c6b7;}})});}_0xd25861=_[_0xba7b('0x3d')]({},_0xd25861,_0x5ab5a1[_0xba7b('0x3e')]);var _0x4429e5={'where':_0xd25861['where']};return db[_0xba7b('0x2c')][_0xba7b('0x1e')](_0x4429e5)['then'](function(_0x802902){_0x7c1aec['count']=_0x802902;if(_0x5ab5a1[_0xba7b('0x37')][_0xba7b('0x3f')]){_0xd25861['include']=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0xd25861);})['then'](function(_0x62aade){_0x7c1aec[_0xba7b('0x40')]=_0x62aade;return _0x7c1aec;})['then'](respondWithFilteredResult(_0x2e9184,_0xd25861))[_0xba7b('0x41')](handleError(_0x2e9184,null));};exports[_0xba7b('0x42')]=function(_0xc04d6d,_0x47aedb){var _0x22d2fe={'raw':!![],'where':{'id':_0xc04d6d[_0xba7b('0x43')]['id']}},_0x12e0eb={};_0x12e0eb[_0xba7b('0x33')]=_[_0xba7b('0x30')](db[_0xba7b('0x2c')][_0xba7b('0x44')]);_0x12e0eb['query']=_['keys'](_0xc04d6d[_0xba7b('0x37')]);_0x12e0eb['filters']=_[_0xba7b('0x32')](_0x12e0eb[_0xba7b('0x33')],_0x12e0eb[_0xba7b('0x37')]);_0x22d2fe[_0xba7b('0x34')]=_[_0xba7b('0x32')](_0x12e0eb[_0xba7b('0x33')],qs[_0xba7b('0x35')](_0xc04d6d[_0xba7b('0x37')]['fields']));_0x22d2fe['attributes']=_0x22d2fe['attributes'][_0xba7b('0x36')]?_0x22d2fe[_0xba7b('0x34')]:_0x12e0eb[_0xba7b('0x33')];if(_0xc04d6d[_0xba7b('0x37')][_0xba7b('0x3f')]){_0x22d2fe[_0xba7b('0x45')]=[{'all':!![]}];}_0x22d2fe=_['merge']({},_0x22d2fe,_0xc04d6d['options']);return db[_0xba7b('0x2c')][_0xba7b('0x46')](_0x22d2fe)['then'](handleEntityNotFound(_0x47aedb,null))[_0xba7b('0x24')](respondWithResult(_0x47aedb,null))['catch'](handleError(_0x47aedb,null));};exports[_0xba7b('0x23')]=function(_0x24313a,_0x4ea13a){if(_0x24313a['body']['id']){delete _0x24313a[_0xba7b('0x47')]['id'];}return db[_0xba7b('0x2c')]['find']({'where':{'id':_0x24313a['params']['id']}})[_0xba7b('0x24')](handleEntityNotFound(_0x4ea13a,null))[_0xba7b('0x24')](saveUpdates(_0x24313a[_0xba7b('0x47')],null))['then'](respondWithResult(_0x4ea13a,null))[_0xba7b('0x41')](handleError(_0x4ea13a,null));};exports[_0xba7b('0x25')]=function(_0x34bc7e,_0x3a2e46){return db[_0xba7b('0x2c')][_0xba7b('0x46')]({'where':{'id':_0x34bc7e[_0xba7b('0x43')]['id']}})[_0xba7b('0x24')](handleEntityNotFound(_0x3a2e46,null))['then'](removeEntity(_0x3a2e46,null))[_0xba7b('0x41')](handleError(_0x3a2e46,null));};exports['create']=function(_0x146bde,_0x1be956){var _0x542900;return db[_0xba7b('0x48')][_0xba7b('0x49')](function(_0x37bf0e){return db[_0xba7b('0x2c')][_0xba7b('0x4a')](_0x146bde['body'],{'transaction':_0x37bf0e})[_0xba7b('0x24')](function(_0x46d17b){_0x542900=_0x46d17b;var _0x5b6ea6={'type':db[_0xba7b('0x4b')][_0xba7b('0x4c')],'transaction':_0x37bf0e};switch(_0x146bde['body']['type']){case _0xba7b('0x4d'):_0x5b6ea6[_0xba7b('0x2e')]=db[_0xba7b('0x4b')][_0xba7b('0x4c')];break;case'number':_0x5b6ea6[_0xba7b('0x2e')]=db[_0xba7b('0x4b')]['INTEGER'];break;case'switch':_0x5b6ea6[_0xba7b('0x2e')]=db[_0xba7b('0x4b')][_0xba7b('0x4e')];_0x5b6ea6[_0xba7b('0x4f')]=![];break;default:}return db[_0xba7b('0x48')][_0xba7b('0x50')][_0xba7b('0x51')](_0xba7b('0x52'),util['format'](_0xba7b('0x53'),_0x542900['id']),_0x5b6ea6);})[_0xba7b('0x24')](function(){return _0x542900;});})[_0xba7b('0x24')](respondWithResult(_0x1be956,0xc9))[_0xba7b('0x41')](handleError(_0x1be956,null));};
\ No newline at end of file
+var _0x0656=['include','findAll','rows','catch','show','params','find','body','create','sequelize','type','text','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','format','cf_%d','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x0656,0x72));var _0x6065=function(_0x5790ca,_0x506742){_0x5790ca=_0x5790ca-0x0;var _0x4be0ec=_0x0656[_0x5790ca];return _0x4be0ec;};'use strict';var emlformat=require(_0x6065('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6065('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6065('0x2'));var moment=require(_0x6065('0x3'));var BPromise=require(_0x6065('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6065('0x5'));var sox=require(_0x6065('0x6'));var csv=require(_0x6065('0x7'));var ejs=require(_0x6065('0x8'));var fs=require('fs');var fs_extra=require(_0x6065('0x9'));var _=require(_0x6065('0xa'));var squel=require(_0x6065('0xb'));var crypto=require(_0x6065('0xc'));var jsforce=require(_0x6065('0xd'));var deskjs=require(_0x6065('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6065('0xf'));var Papa=require('papaparse');var Redis=require(_0x6065('0x10'));var authService=require(_0x6065('0x11'));var qs=require(_0x6065('0x12'));var as=require(_0x6065('0x13'));var hardwareService=require(_0x6065('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6065('0x15'));var config=require(_0x6065('0x16'));var licenseUtil=require(_0x6065('0x17'));var db=require(_0x6065('0x18'))['db'];function respondWithStatusCode(_0x310857,_0x584083){_0x584083=_0x584083||0xcc;return function(_0x925d3e){if(_0x925d3e){return _0x310857[_0x6065('0x19')](_0x584083);}return _0x310857[_0x6065('0x1a')](_0x584083)[_0x6065('0x1b')]();};}function respondWithResult(_0x30d65e,_0x4b3280){_0x4b3280=_0x4b3280||0xc8;return function(_0x59f666){if(_0x59f666){return _0x30d65e[_0x6065('0x1a')](_0x4b3280)[_0x6065('0x1c')](_0x59f666);}};}function respondWithFilteredResult(_0x2f4b9f,_0x9068a){return function(_0x4bed8e){if(_0x4bed8e){var _0x38e281=typeof _0x9068a[_0x6065('0x1d')]==='undefined'&&typeof _0x9068a[_0x6065('0x1e')]===_0x6065('0x1f');var _0x16e9c1=_0x4bed8e['count'];var _0x279605=_0x38e281?0x0:_0x9068a[_0x6065('0x1d')];var _0x5efc4e=_0x38e281?_0x4bed8e[_0x6065('0x20')]:_0x9068a['offset']+_0x9068a[_0x6065('0x1e')];var _0x15cf8c;if(_0x5efc4e>=_0x16e9c1){_0x5efc4e=_0x16e9c1;_0x15cf8c=0xc8;}else{_0x15cf8c=0xce;}_0x2f4b9f['status'](_0x15cf8c);return _0x2f4b9f[_0x6065('0x21')](_0x6065('0x22'),_0x279605+'-'+_0x5efc4e+'/'+_0x16e9c1)['json'](_0x4bed8e);}return null;};}function patchUpdates(_0x476d35){return function(_0x48238a){try{jsonpatch['apply'](_0x48238a,_0x476d35,!![]);}catch(_0x4afb85){return BPromise[_0x6065('0x23')](_0x4afb85);}return _0x48238a['save']();};}function saveUpdates(_0x46b163,_0x4be43d){return function(_0x33c1ed){if(_0x33c1ed){return _0x33c1ed[_0x6065('0x24')](_0x46b163)[_0x6065('0x25')](function(_0x1dd332){return _0x1dd332;});}return null;};}function removeEntity(_0x13b10f,_0x99f0fa){return function(_0x2576ac){if(_0x2576ac){return _0x2576ac[_0x6065('0x26')]()[_0x6065('0x25')](function(){_0x13b10f[_0x6065('0x1a')](0xcc)[_0x6065('0x1b')]();});}};}function handleEntityNotFound(_0x9470b0,_0x27d8a7){return function(_0x50275b){if(!_0x50275b){_0x9470b0['sendStatus'](0x194);}return _0x50275b;};}function handleError(_0x5e2d7e,_0x36196c){_0x36196c=_0x36196c||0x1f4;return function(_0x2e1327){logger[_0x6065('0x27')](_0x2e1327[_0x6065('0x28')]);if(_0x2e1327[_0x6065('0x29')]){delete _0x2e1327[_0x6065('0x29')];}_0x5e2d7e['status'](_0x36196c)[_0x6065('0x2a')](_0x2e1327);};}exports[_0x6065('0x2b')]=function(_0x7e893,_0xc3a1d8){var _0x720d52={},_0x2ce9a4={},_0x40641e={'count':0x0,'rows':[]};var _0x2b389f=_[_0x6065('0x2c')](db[_0x6065('0x2d')][_0x6065('0x2e')],function(_0x4623c4){return{'name':_0x4623c4[_0x6065('0x2f')],'type':_0x4623c4['type'][_0x6065('0x30')]};});_0x2ce9a4[_0x6065('0x31')]=_[_0x6065('0x32')](_[_0x6065('0x2c')](_0x2b389f,_0x6065('0x29')),['name']);_0x2ce9a4['query']=_[_0x6065('0x33')](_0x7e893[_0x6065('0x34')]);_0x2ce9a4[_0x6065('0x35')]=_[_0x6065('0x36')](_0x2ce9a4[_0x6065('0x31')],_0x2ce9a4['query']);_0x720d52[_0x6065('0x37')]=_[_0x6065('0x36')](_0x2ce9a4[_0x6065('0x31')],qs[_0x6065('0x38')](_0x7e893[_0x6065('0x34')][_0x6065('0x38')]));_0x720d52[_0x6065('0x37')]=_0x720d52['attributes'][_0x6065('0x39')]?_0x720d52[_0x6065('0x37')]:_0x2ce9a4[_0x6065('0x31')];if(!_0x7e893[_0x6065('0x34')]['hasOwnProperty'](_0x6065('0x3a'))){_0x720d52[_0x6065('0x1e')]=qs[_0x6065('0x1e')](_0x7e893[_0x6065('0x34')]['limit']);_0x720d52[_0x6065('0x1d')]=qs[_0x6065('0x1d')](_0x7e893[_0x6065('0x34')]['offset']);}_0x720d52[_0x6065('0x3b')]=qs[_0x6065('0x3c')](_0x7e893[_0x6065('0x34')]['sort']);_0x720d52[_0x6065('0x3d')]=qs[_0x6065('0x35')](_[_0x6065('0x3e')](_0x7e893[_0x6065('0x34')],_0x2ce9a4[_0x6065('0x35')]),_0x2b389f);if(_0x7e893['query']['filter']){_0x720d52[_0x6065('0x3d')]=_[_0x6065('0x3f')](_0x720d52['where'],{'$or':_[_0x6065('0x2c')](_0x2b389f,function(_0x5641bb){if(_0x5641bb['type']!==_0x6065('0x40')){var _0x16f18e={};_0x16f18e[_0x5641bb[_0x6065('0x29')]]={'$like':'%'+_0x7e893[_0x6065('0x34')][_0x6065('0x41')]+'%'};return _0x16f18e;}})});}_0x720d52=_[_0x6065('0x3f')]({},_0x720d52,_0x7e893[_0x6065('0x42')]);var _0x2571a8={'where':_0x720d52[_0x6065('0x3d')]};return db['CmCustomField']['count'](_0x2571a8)['then'](function(_0x2f1c45){_0x40641e[_0x6065('0x20')]=_0x2f1c45;if(_0x7e893['query'][_0x6065('0x43')]){_0x720d52[_0x6065('0x44')]=[{'all':!![]}];}return db['CmCustomField'][_0x6065('0x45')](_0x720d52);})['then'](function(_0x40da76){_0x40641e[_0x6065('0x46')]=_0x40da76;return _0x40641e;})[_0x6065('0x25')](respondWithFilteredResult(_0xc3a1d8,_0x720d52))[_0x6065('0x47')](handleError(_0xc3a1d8,null));};exports[_0x6065('0x48')]=function(_0x148bb3,_0x45a6c5){var _0x20ea4c={'raw':!![],'where':{'id':_0x148bb3[_0x6065('0x49')]['id']}},_0x490d9d={};_0x490d9d['model']=_[_0x6065('0x33')](db[_0x6065('0x2d')]['rawAttributes']);_0x490d9d[_0x6065('0x34')]=_[_0x6065('0x33')](_0x148bb3[_0x6065('0x34')]);_0x490d9d['filters']=_[_0x6065('0x36')](_0x490d9d[_0x6065('0x31')],_0x490d9d[_0x6065('0x34')]);_0x20ea4c[_0x6065('0x37')]=_[_0x6065('0x36')](_0x490d9d[_0x6065('0x31')],qs[_0x6065('0x38')](_0x148bb3[_0x6065('0x34')][_0x6065('0x38')]));_0x20ea4c[_0x6065('0x37')]=_0x20ea4c[_0x6065('0x37')][_0x6065('0x39')]?_0x20ea4c['attributes']:_0x490d9d[_0x6065('0x31')];if(_0x148bb3[_0x6065('0x34')][_0x6065('0x43')]){_0x20ea4c[_0x6065('0x44')]=[{'all':!![]}];}_0x20ea4c=_['merge']({},_0x20ea4c,_0x148bb3['options']);return db['CmCustomField'][_0x6065('0x4a')](_0x20ea4c)['then'](handleEntityNotFound(_0x45a6c5,null))[_0x6065('0x25')](respondWithResult(_0x45a6c5,null))['catch'](handleError(_0x45a6c5,null));};exports['update']=function(_0x1b7d00,_0x2809ec){if(_0x1b7d00[_0x6065('0x4b')]['id']){delete _0x1b7d00[_0x6065('0x4b')]['id'];}return db[_0x6065('0x2d')]['find']({'where':{'id':_0x1b7d00[_0x6065('0x49')]['id']}})['then'](handleEntityNotFound(_0x2809ec,null))[_0x6065('0x25')](saveUpdates(_0x1b7d00[_0x6065('0x4b')],null))[_0x6065('0x25')](respondWithResult(_0x2809ec,null))['catch'](handleError(_0x2809ec,null));};exports[_0x6065('0x26')]=function(_0x126efc,_0x23806f){return db[_0x6065('0x2d')]['find']({'where':{'id':_0x126efc[_0x6065('0x49')]['id']}})[_0x6065('0x25')](handleEntityNotFound(_0x23806f,null))['then'](removeEntity(_0x23806f,null))[_0x6065('0x47')](handleError(_0x23806f,null));};exports[_0x6065('0x4c')]=function(_0x595f5f,_0x45810d){var _0x543683;return db[_0x6065('0x4d')]['transaction'](function(_0x30657b){return db[_0x6065('0x2d')]['create'](_0x595f5f[_0x6065('0x4b')],{'transaction':_0x30657b})[_0x6065('0x25')](function(_0x2d0404){_0x543683=_0x2d0404;var _0x2ed7c9={'type':db['Sequelize']['TEXT'],'transaction':_0x30657b};switch(_0x595f5f['body'][_0x6065('0x4e')]){case _0x6065('0x4f'):_0x2ed7c9['type']=db[_0x6065('0x50')][_0x6065('0x51')];break;case _0x6065('0x52'):_0x2ed7c9[_0x6065('0x4e')]=db[_0x6065('0x50')][_0x6065('0x53')];break;case _0x6065('0x54'):_0x2ed7c9[_0x6065('0x4e')]=db[_0x6065('0x50')][_0x6065('0x55')];_0x2ed7c9[_0x6065('0x56')]=![];break;default:}return db['sequelize'][_0x6065('0x57')][_0x6065('0x58')]('cm_contacts',util[_0x6065('0x59')](_0x6065('0x5a'),_0x543683['id']),_0x2ed7c9);})['then'](function(){return _0x543683;});})['then'](respondWithResult(_0x45810d,0xc9))['catch'](handleError(_0x45810d,null));};
\ No newline at end of file
index 1088bd7..1dc7302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb3=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','CmCustomField','lodash'];(function(_0x14cc30,_0xd574b){var _0x3ad39c=function(_0x58bc4f){while(--_0x58bc4f){_0x14cc30['push'](_0x14cc30['shift']());}};_0x3ad39c(++_0xd574b);}(_0x8bb3,0x133));var _0x38bb=function(_0x4fd8df,_0x246462){_0x4fd8df=_0x4fd8df-0x0;var _0x6aff37=_0x8bb3[_0x4fd8df];return _0x6aff37;};'use strict';var _=require(_0x38bb('0x0'));var util=require(_0x38bb('0x1'));var logger=require('../../config/logger')(_0x38bb('0x2'));var moment=require(_0x38bb('0x3'));var BPromise=require(_0x38bb('0x4'));var rp=require(_0x38bb('0x5'));var fs=require('fs');var path=require(_0x38bb('0x6'));var rimraf=require(_0x38bb('0x7'));var config=require(_0x38bb('0x8'));var attributes=require(_0x38bb('0x9'));module['exports']=function(_0x527745,_0x239119){return _0x527745['define'](_0x38bb('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd75=['cm_custom_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','define','CmCustomField'];(function(_0x39cefe,_0x57173b){var _0x45a3b8=function(_0x2770d5){while(--_0x2770d5){_0x39cefe['push'](_0x39cefe['shift']());}};_0x45a3b8(++_0x57173b);}(_0xbd75,0x143));var _0x5bd7=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xbd75[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x5bd7('0x0'));var util=require(_0x5bd7('0x1'));var logger=require(_0x5bd7('0x2'))(_0x5bd7('0x3'));var moment=require(_0x5bd7('0x4'));var BPromise=require(_0x5bd7('0x5'));var rp=require(_0x5bd7('0x6'));var fs=require('fs');var path=require(_0x5bd7('0x7'));var rimraf=require(_0x5bd7('0x8'));var config=require(_0x5bd7('0x9'));var attributes=require(_0x5bd7('0xa'));module['exports']=function(_0xa1bbaf,_0x15b60a){return _0xa1bbaf[_0x5bd7('0xb')](_0x5bd7('0xc'),attributes,{'tableName':_0x5bd7('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd9cf1b..c3beea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d50=['http','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x5b317b,_0x498413){var _0x1800b3=function(_0x428bd5){while(--_0x428bd5){_0x5b317b['push'](_0x5b317b['shift']());}};_0x1800b3(++_0x498413);}(_0x2d50,0x14f));var _0x02d5=function(_0x39fa50,_0x4f0f04){_0x39fa50=_0x39fa50-0x0;var _0x4d7f62=_0x2d50[_0x39fa50];return _0x4d7f62;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x02d5('0x0'));var rs=require(_0x02d5('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x02d5('0x2'))['db'];var utils=require(_0x02d5('0x3'));var logger=require(_0x02d5('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x02d5('0x5'));var client=jayson[_0x02d5('0x6')][_0x02d5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5a7fec,_0x4e318f,_0x58cd1f){return new BPromise(function(_0x3b0fce,_0x3ee4ce){return client['request'](_0x5a7fec,_0x58cd1f)[_0x02d5('0x8')](function(_0x24b717){logger['info'](_0x02d5('0x9'),_0x4e318f,_0x02d5('0xa'));logger[_0x02d5('0xb')](_0x02d5('0xc'),_0x4e318f,_0x02d5('0xa'),JSON[_0x02d5('0xd')](_0x24b717));if(_0x24b717[_0x02d5('0xe')]){if(_0x24b717[_0x02d5('0xe')][_0x02d5('0xf')]===0x1f4){logger[_0x02d5('0xe')](_0x02d5('0x9'),_0x4e318f,_0x24b717['error'][_0x02d5('0x10')]);return _0x3ee4ce(_0x24b717[_0x02d5('0xe')][_0x02d5('0x10')]);}logger[_0x02d5('0xe')](_0x02d5('0x9'),_0x4e318f,_0x24b717[_0x02d5('0xe')][_0x02d5('0x10')]);return _0x3b0fce(_0x24b717[_0x02d5('0xe')]['message']);}else{logger[_0x02d5('0x11')](_0x02d5('0x9'),_0x4e318f,'request\x20sent');_0x3b0fce(_0x24b717['result'][_0x02d5('0x10')]);}})['catch'](function(_0x4736bf){logger[_0x02d5('0xe')](_0x02d5('0x9'),_0x4e318f,_0x4736bf);_0x3ee4ce(_0x4736bf);});});}
\ No newline at end of file
+var _0x070e=['client','http','request','then','info','CmCustomField,\x20%s,\x20%s','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xba7ba9,_0x45437b){var _0x29db72=function(_0x3327da){while(--_0x3327da){_0xba7ba9['push'](_0xba7ba9['shift']());}};_0x29db72(++_0x45437b);}(_0x070e,0x177));var _0xe070=function(_0x8860ef,_0x3bff8c){_0x8860ef=_0x8860ef-0x0;var _0x293f72=_0x070e[_0x8860ef];return _0x293f72;};'use strict';var _=require(_0xe070('0x0'));var util=require(_0xe070('0x1'));var moment=require(_0xe070('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe070('0x3'));var db=require(_0xe070('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe070('0x5'))(_0xe070('0x6'));var config=require(_0xe070('0x7'));var jayson=require(_0xe070('0x8'));var client=jayson[_0xe070('0x9')][_0xe070('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3330a1,_0x1f6bea,_0x348b63){return new BPromise(function(_0x427c99,_0x1d20c3){return client[_0xe070('0xb')](_0x3330a1,_0x348b63)[_0xe070('0xc')](function(_0x10ca34){logger[_0xe070('0xd')](_0xe070('0xe'),_0x1f6bea,'request\x20sent');logger[_0xe070('0xf')](_0xe070('0x10'),_0x1f6bea,_0xe070('0x11'),JSON[_0xe070('0x12')](_0x10ca34));if(_0x10ca34[_0xe070('0x13')]){if(_0x10ca34[_0xe070('0x13')][_0xe070('0x14')]===0x1f4){logger[_0xe070('0x13')](_0xe070('0xe'),_0x1f6bea,_0x10ca34[_0xe070('0x13')][_0xe070('0x15')]);return _0x1d20c3(_0x10ca34['error'][_0xe070('0x15')]);}logger[_0xe070('0x13')](_0xe070('0xe'),_0x1f6bea,_0x10ca34['error'][_0xe070('0x15')]);return _0x427c99(_0x10ca34[_0xe070('0x13')][_0xe070('0x15')]);}else{logger['info'](_0xe070('0xe'),_0x1f6bea,_0xe070('0x11'));_0x427c99(_0x10ca34[_0xe070('0x16')]['message']);}})[_0xe070('0x17')](function(_0x35eabd){logger[_0xe070('0x13')](_0xe070('0xe'),_0x1f6bea,_0x35eabd);_0x1d20c3(_0x35eabd);});});}
\ No newline at end of file
index b37b72b..f97ff2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c3=['isAuthenticated','post','put','update','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','get','/:id'];(function(_0x4fc051,_0x116315){var _0x27a80a=function(_0x238082){while(--_0x238082){_0x4fc051['push'](_0x4fc051['shift']());}};_0x27a80a(++_0x116315);}(_0x80c3,0x18f));var _0x380c=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x80c3[_0x5e36d1];return _0x950b9e;};'use strict';var multer=require(_0x380c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x380c('0x1'));var express=require('express');var router=express[_0x380c('0x2')]();var fs_extra=require(_0x380c('0x3'));var auth=require(_0x380c('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmCustomField.controller');router[_0x380c('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x380c('0x5')](_0x380c('0x6'),auth[_0x380c('0x7')](),controller['show']);router[_0x380c('0x8')]('/',auth[_0x380c('0x7')](),controller['create']);router[_0x380c('0x9')](_0x380c('0x6'),auth['isAuthenticated'](),controller[_0x380c('0xa')]);router[_0x380c('0xb')](_0x380c('0x6'),auth['isAuthenticated'](),controller[_0x380c('0xc')]);module[_0x380c('0xd')]=router;
\ No newline at end of file
+var _0x7676=['put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../config/environment','./cmCustomField.controller','get','index','/:id','show','post','isAuthenticated','create'];(function(_0x121350,_0x361f4d){var _0x2e21c7=function(_0x3b6d51){while(--_0x3b6d51){_0x121350['push'](_0x121350['shift']());}};_0x2e21c7(++_0x361f4d);}(_0x7676,0xb8));var _0x6767=function(_0x367b05,_0x3b3952){_0x367b05=_0x367b05-0x0;var _0x533393=_0x7676[_0x367b05];return _0x533393;};'use strict';var multer=require(_0x6767('0x0'));var util=require(_0x6767('0x1'));var path=require(_0x6767('0x2'));var timeout=require('connect-timeout');var express=require(_0x6767('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6767('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6767('0x5'));var controller=require(_0x6767('0x6'));router[_0x6767('0x7')]('/',auth['isAuthenticated'](),controller[_0x6767('0x8')]);router[_0x6767('0x7')](_0x6767('0x9'),auth['isAuthenticated'](),controller[_0x6767('0xa')]);router[_0x6767('0xb')]('/',auth[_0x6767('0xc')](),controller[_0x6767('0xd')]);router[_0x6767('0xe')](_0x6767('0x9'),auth[_0x6767('0xc')](),controller[_0x6767('0xf')]);router[_0x6767('0x10')](_0x6767('0x9'),auth[_0x6767('0xc')](),controller[_0x6767('0x11')]);module['exports']=router;
\ No newline at end of file
index afc8a13..380fbf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a56=['DATE','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x3da63b,_0x4b6e37){var _0x361f3d=function(_0x1569e2){while(--_0x1569e2){_0x3da63b['push'](_0x3da63b['shift']());}};_0x361f3d(++_0x4b6e37);}(_0x6a56,0xb3));var _0x66a5=function(_0x4ea6af,_0x4aa32e){_0x4ea6af=_0x4ea6af-0x0;var _0x4cb1e6=_0x6a56[_0x4ea6af];return _0x4cb1e6;};'use strict';var moment=require(_0x66a5('0x0'));var Sequelize=require(_0x66a5('0x1'));module[_0x66a5('0x2')]={'phone':{'type':Sequelize[_0x66a5('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x66a5('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x66a5('0x5')](_0x66a5('0x6'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x66a5('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x66a5('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x66a5('0x8')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x66a5('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x66a5('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x66a5('0xa')},'ListId':{'type':Sequelize[_0x66a5('0x7')],'unique':_0x66a5('0xa')},'UserId':{'type':Sequelize[_0x66a5('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x66a5('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x66a5('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x66a5('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x66a5('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x66a5('0x8')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x83a6=['exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','sequelize'];(function(_0x39b039,_0x40c265){var _0x5d38a5=function(_0x3eabb1){while(--_0x3eabb1){_0x39b039['push'](_0x39b039['shift']());}};_0x5d38a5(++_0x40c265);}(_0x83a6,0x167));var _0x683a=function(_0x2e675f,_0x5589e3){_0x2e675f=_0x2e675f-0x0;var _0x410ede=_0x83a6[_0x2e675f];return _0x410ede;};'use strict';var moment=require('moment');var Sequelize=require(_0x683a('0x0'));module[_0x683a('0x1')]={'phone':{'type':Sequelize[_0x683a('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x683a('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x683a('0x4')],'defaultValue':moment()[_0x683a('0x5')](_0x683a('0x6'))},'countbusyretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x683a('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x683a('0x4')]},'priority':{'type':Sequelize[_0x683a('0x7')](0x2)[_0x683a('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x683a('0x9')},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x683a('0x7')],'unique':_0x683a('0x9')},'CampaignId':{'type':Sequelize[_0x683a('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x683a('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x683a('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x683a('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index d9d0735..f168a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['$ne','$eq','$not','$between','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$any','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','keys','CmHopper','find','create','body','params','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','createdAt','updatedAt','state','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','ivr','CmContact','firstName','calleridname','isNil','lastName','finally','CmHopperFinal','end','getVoiceQueues','preview','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','literal','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','ASC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','List','Queue','dialActive','recallme','CmCompany','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','status','limit','count','offset','set','Content-Range','json','update','then','sendStatus','error','stack','send','rawAttributes','type','key','model','map','name','query','filters','intersection','$and','$or','$gt','$gte','$lt'];(function(_0xc15f31,_0x3b513a){var _0x1fb9fd=function(_0x5e6e95){while(--_0x5e6e95){_0xc15f31['push'](_0xc15f31['shift']());}};_0x1fb9fd(++_0x3b513a);}(_0x6737,0xe2));var _0x7673=function(_0x54b40e,_0x231ab7){_0x54b40e=_0x54b40e-0x0;var _0x90dbe6=_0x6737[_0x54b40e];return _0x90dbe6;};'use strict';var moment=require('moment');var _=require(_0x7673('0x0'));var qs=require(_0x7673('0x1'));var logger=require('../../config/logger')(_0x7673('0x2'));var shared=require(_0x7673('0x3'));var db=require(_0x7673('0x4'))['db'];function respondWithResult(_0x12efff,_0x54002e){_0x54002e=_0x54002e||0xc8;return function(_0x32e6f2){if(_0x32e6f2){return _0x12efff[_0x7673('0x5')](_0x54002e)['json'](_0x32e6f2);}};}function respondWithFilteredResult(_0x2f5edc,_0x15230f){return function(_0x5af802){if(_0x5af802){var _0x4e4b24=typeof _0x15230f['offset']==='undefined'&&typeof _0x15230f[_0x7673('0x6')]==='undefined';var _0x3b3184=_0x5af802[_0x7673('0x7')];var _0x5bfae2=_0x4e4b24?0x0:_0x15230f[_0x7673('0x8')];var _0x331f57=_0x4e4b24?_0x5af802[_0x7673('0x7')]:_0x15230f['offset']+_0x15230f['limit'];var _0x3ca258;if(_0x331f57>=_0x3b3184){_0x331f57=_0x3b3184;_0x3ca258=0xc8;}else{_0x3ca258=0xce;}_0x2f5edc['status'](_0x3ca258);return _0x2f5edc[_0x7673('0x9')](_0x7673('0xa'),_0x5bfae2+'-'+_0x331f57+'/'+_0x3b3184)[_0x7673('0xb')](_0x5af802);}return null;};}function saveUpdates(_0x451c87,_0x41d6bd){return function(_0x119e42){if(_0x119e42){return _0x119e42[_0x7673('0xc')](_0x451c87)[_0x7673('0xd')](function(_0x1da115){return _0x1da115;});}return null;};}function handleEntityNotFound(_0x20a649,_0x5c8626){return function(_0x26f0c4){if(!_0x26f0c4){_0x20a649[_0x7673('0xe')](0x194);}return _0x26f0c4;};}function handleError(_0x408470,_0x2c83d){_0x2c83d=_0x2c83d||0x1f4;return function(_0x224cea){logger[_0x7673('0xf')](_0x224cea[_0x7673('0x10')]);if(_0x224cea['name']){delete _0x224cea['name'];}_0x408470[_0x7673('0x5')](_0x2c83d)[_0x7673('0x11')](_0x224cea);};}exports['index']=function(_0x3afbb3,_0x17699a){var _0x58a821={},_0x33ff7d={},_0x44704d={'count':0x0,'rows':[]};var _0x1015ba=_['map'](db['CmHopper'][_0x7673('0x12')],function(_0x267fa3){return{'name':_0x267fa3['fieldName'],'type':_0x267fa3[_0x7673('0x13')][_0x7673('0x14')]};});_0x33ff7d[_0x7673('0x15')]=_[_0x7673('0x16')](_0x1015ba,_0x7673('0x17'));_0x33ff7d[_0x7673('0x18')]=_['keys'](_0x3afbb3['query']);_0x33ff7d[_0x7673('0x19')]=_[_0x7673('0x1a')](_0x33ff7d[_0x7673('0x15')],_0x33ff7d[_0x7673('0x18')]);_0x33ff7d[_0x7673('0x19')]=_['concat'](_0x33ff7d[_0x7673('0x19')],[_0x7673('0x1b'),_0x7673('0x1c'),_0x7673('0x1d'),_0x7673('0x1e'),_0x7673('0x1f'),'$lte',_0x7673('0x20'),_0x7673('0x21'),_0x7673('0x22'),_0x7673('0x23'),'$notBetween','$in',_0x7673('0x24'),_0x7673('0x25'),_0x7673('0x26'),_0x7673('0x27'),_0x7673('0x28'),_0x7673('0x25'),_0x7673('0x29'),'$contains','$contained',_0x7673('0x2a')]);_0x58a821[_0x7673('0x2b')]=_[_0x7673('0x1a')](_0x33ff7d[_0x7673('0x15')],qs[_0x7673('0x2c')](_0x3afbb3[_0x7673('0x18')][_0x7673('0x2c')]));_0x58a821['attributes']=_0x58a821['attributes'][_0x7673('0x2d')]?_0x58a821[_0x7673('0x2b')]:_0x33ff7d[_0x7673('0x15')];if(!_0x3afbb3[_0x7673('0x18')]['hasOwnProperty'](_0x7673('0x2e'))){_0x58a821['limit']=qs[_0x7673('0x6')](_0x3afbb3[_0x7673('0x18')][_0x7673('0x6')]);_0x58a821[_0x7673('0x8')]=qs[_0x7673('0x8')](_0x3afbb3[_0x7673('0x18')][_0x7673('0x8')]);}_0x58a821[_0x7673('0x2f')]=qs[_0x7673('0x30')](_0x3afbb3[_0x7673('0x18')][_0x7673('0x30')]);_0x58a821[_0x7673('0x31')]=qs[_0x7673('0x19')](_['pick'](_0x3afbb3[_0x7673('0x18')],_0x33ff7d[_0x7673('0x19')]),_0x1015ba);if(_0x3afbb3[_0x7673('0x18')][_0x7673('0x32')]){_0x58a821[_0x7673('0x31')]=_[_0x7673('0x33')](_0x58a821[_0x7673('0x31')],{'$or':_['map'](_0x1015ba,function(_0x563e2d){if(_0x563e2d[_0x7673('0x13')]!==_0x7673('0x34')){var _0x2d34cb={};_0x2d34cb[_0x563e2d[_0x7673('0x17')]]={'$like':'%'+_0x3afbb3[_0x7673('0x18')][_0x7673('0x32')]+'%'};return _0x2d34cb;}})});}_0x58a821=_[_0x7673('0x33')]({},_0x58a821,_0x3afbb3['options']);var _0x2845f6={'where':_0x58a821[_0x7673('0x31')]};return db['CmHopper'][_0x7673('0x7')](_0x2845f6)[_0x7673('0xd')](function(_0x287eee){_0x44704d[_0x7673('0x7')]=_0x287eee;if(_0x3afbb3['query'][_0x7673('0x35')]){_0x58a821[_0x7673('0x36')]=[{'all':!![]}];}return db['CmHopper'][_0x7673('0x37')](_0x58a821);})[_0x7673('0xd')](function(_0x1be04a){_0x44704d['rows']=_0x1be04a;return _0x44704d;})[_0x7673('0xd')](respondWithFilteredResult(_0x17699a,_0x58a821))[_0x7673('0x38')](handleError(_0x17699a,null));};exports[_0x7673('0x39')]=function(_0x5dfb9a,_0x4c6106){var _0x13ce30={'raw':!![],'where':{'id':_0x5dfb9a['params']['id']}},_0x5efdf6={};_0x5efdf6[_0x7673('0x15')]=_[_0x7673('0x3a')](db['CmHopper'][_0x7673('0x12')]);_0x5efdf6[_0x7673('0x18')]=_[_0x7673('0x3a')](_0x5dfb9a[_0x7673('0x18')]);_0x5efdf6[_0x7673('0x19')]=_[_0x7673('0x1a')](_0x5efdf6['model'],_0x5efdf6[_0x7673('0x18')]);_0x13ce30['attributes']=_[_0x7673('0x1a')](_0x5efdf6['model'],qs[_0x7673('0x2c')](_0x5dfb9a[_0x7673('0x18')]['fields']));_0x13ce30['attributes']=_0x13ce30[_0x7673('0x2b')]['length']?_0x13ce30[_0x7673('0x2b')]:_0x5efdf6[_0x7673('0x15')];if(_0x5dfb9a[_0x7673('0x18')][_0x7673('0x35')]){_0x13ce30[_0x7673('0x36')]=[{'all':!![]}];}_0x13ce30=_['merge']({},_0x13ce30,_0x5dfb9a['options']);return db[_0x7673('0x3b')][_0x7673('0x3c')](_0x13ce30)['then'](handleEntityNotFound(_0x4c6106,null))[_0x7673('0xd')](respondWithResult(_0x4c6106,null))[_0x7673('0x38')](handleError(_0x4c6106,null));};exports[_0x7673('0x3d')]=function(_0x5991d7,_0x1a9017){return db[_0x7673('0x3b')][_0x7673('0x3d')](_0x5991d7[_0x7673('0x3e')],{})[_0x7673('0xd')](respondWithResult(_0x1a9017,0xc9))[_0x7673('0x38')](handleError(_0x1a9017,null));};exports[_0x7673('0xc')]=function(_0x232576,_0x58e17d){if(_0x232576['body']['id']){delete _0x232576[_0x7673('0x3e')]['id'];}return db[_0x7673('0x3b')][_0x7673('0x3c')]({'where':{'id':_0x232576[_0x7673('0x3f')]['id']}})[_0x7673('0xd')](handleEntityNotFound(_0x58e17d,null))[_0x7673('0xd')](saveUpdates(_0x232576[_0x7673('0x3e')],null))['then'](respondWithResult(_0x58e17d,null))[_0x7673('0x38')](handleError(_0x58e17d,null));};exports[_0x7673('0x40')]=function(_0x461ac3,_0x2de2e9){return db[_0x7673('0x3b')]['describe']()[_0x7673('0xd')](respondWithResult(_0x2de2e9,null))[_0x7673('0x38')](handleError(_0x2de2e9,null));};exports[_0x7673('0x41')]=function(_0x2397fb,_0x3f76a3){var _0x4c022d;var _0x56cd7a=_0x2397fb[_0x7673('0x3f')]['id'];return db[_0x7673('0x3b')]['find']({'where':{'id':_0x2397fb[_0x7673('0x3f')]['id']}})[_0x7673('0xd')](handleEntityNotFound(_0x3f76a3,null))[_0x7673('0xd')](function(_0x32a5e7){if(_0x32a5e7){return _0x32a5e7[_0x7673('0x41')]()['then'](function(_0x23789d){return _0x23789d;});}})[_0x7673('0xd')](function(_0x2a275b){_0x4c022d=_0x2a275b;if(_0x2a275b){if(_0x2a275b[_0x7673('0x42')]||_0x2a275b['CampaignId']){return db[_0x2a275b[_0x7673('0x42')]?_0x7673('0x43'):_0x7673('0x44')][_0x7673('0x3c')]({'where':{'id':_0x2a275b[_0x7673('0x42')]?_0x2a275b[_0x7673('0x42')]:_0x2a275b[_0x7673('0x45')]},'attributes':['id',_0x7673('0x17')],'raw':!![]});}}})[_0x7673('0xd')](function(_0x362409){var _0xcb9e0b={};if(_0x362409){_['merge'](_0xcb9e0b,_[_0x7673('0x46')](_0x4c022d['dataValues'],[_0x7673('0x47'),_0x7673('0x48'),'id']));_0xcb9e0b[_0x7673('0x49')]=0x15;_0xcb9e0b['statedesc']=_0x7673('0x4a');_0xcb9e0b[_0x7673('0x4b')]=_0x362409[_0x7673('0x17')];_0xcb9e0b[_0x7673('0x4c')]=_0x2397fb[_0x7673('0x4d')][_0x7673('0x17')];_0xcb9e0b[_0x7673('0x4e')]=_0x2397fb[_0x7673('0x4d')]['id'];_0xcb9e0b[_0x7673('0x4a')]=!![];_0xcb9e0b[_0x7673('0x4f')]=moment()[_0x7673('0x50')](_0x7673('0x51'));_0xcb9e0b[_0x7673('0x52')]=_0x4c022d[_0x7673('0x53')];_0xcb9e0b['campaigntype']=_0x4c022d[_0x7673('0x42')]?'queue':_0x7673('0x54');return db[_0x7673('0x55')][_0x7673('0x3c')]({'where':{'id':_0xcb9e0b['ContactId']},'attributes':[_0x7673('0x56'),'lastName']})['then'](function(_0x1804a4){if(!_['isNil'](_0x3f76a3)&&!_['isNil'](_0x1804a4[_0x7673('0x56')])){_0xcb9e0b[_0x7673('0x57')]=_0x1804a4[_0x7673('0x56')];if(!_[_0x7673('0x58')](_0x1804a4[_0x7673('0x59')])){_0xcb9e0b[_0x7673('0x57')]+='\x20'+_0x1804a4[_0x7673('0x59')];}}})[_0x7673('0x5a')](function(){return db[_0x7673('0x5b')][_0x7673('0x3d')](_0xcb9e0b);});}})[_0x7673('0xd')](function(_0x5e1985){return db['CmHopperAdditionalPhone'][_0x7673('0x41')]({'where':{'CmHopperId':_0x56cd7a}});})[_0x7673('0xd')](function(){return _0x3f76a3[_0x7673('0x5')](0xcc)[_0x7673('0x5c')]();})[_0x7673('0x38')](handleError(_0x3f76a3,null));};exports['getPreview']=function(_0x5caca9,_0x44fa26){var _0x7ac2d=[];return db[_0x7673('0x55')][_0x7673('0x40')]()[_0x7673('0xd')](function(_0x47b5b3){_0x7ac2d=_[_0x7673('0x3a')](_0x47b5b3);return _0x5caca9[_0x7673('0x4d')][_0x7673('0x5d')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x7673('0x5e')},'attributes':['id','dialOrderByScheduledAt',_0x7673('0x5f')],'raw':!![]});})[_0x7673('0xd')](function(_0x31be3a){if(_0x31be3a&&_0x31be3a['length']){return db[_0x7673('0x60')][_0x7673('0x61')](function(_0x562a20){var _0x53c638={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x7673('0x51'))},'VoiceQueueId':{'$in':_[_0x7673('0x16')](_0x31be3a,'id')},'$or':[{'UserId':null},{'UserId':_0x5caca9[_0x7673('0x4d')]['id']}]};var _0x40776d={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x31be3a)['filter']([_0x7673('0x5f'),0x0])['map']('id')[_0x7673('0x62')]()},'$or':[{'UserId':null},{'UserId':_0x5caca9[_0x7673('0x4d')]['id']}]};var _0x12cfe7={'$or':[_0x53c638,_0x40776d]};var _0x2a8feb=[];if(_0x5caca9['body'][_0x7673('0x63')]&&_0x5caca9[_0x7673('0x3e')][_0x7673('0x63')]==='prev'){if(!_['isEmpty'](_0x5caca9[_0x7673('0x3e')][_0x7673('0x64')])){_0x12cfe7['id']={'$in':_0x5caca9[_0x7673('0x3e')][_0x7673('0x64')]};}_0x2a8feb=[[_0x7673('0x65'),'ASC'],[_0x7673('0x66'),_0x31be3a[0x0][_0x7673('0x67')]==='ASC'?'DESC':'ASC'],db[_0x7673('0x60')][_0x7673('0x68')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x7673('0x69')]];}else{if(!_['isEmpty'](_0x5caca9['body'][_0x7673('0x64')])){_0x12cfe7['id']={'$notIn':_0x5caca9[_0x7673('0x3e')][_0x7673('0x64')]};}_0x2a8feb=[[_0x7673('0x65'),'DESC'],[_0x7673('0x66'),_0x31be3a[0x0]['dialOrderByScheduledAt']],db[_0x7673('0x60')][_0x7673('0x68')](_0x7673('0x6a')),['id',_0x7673('0x6b')]];}return db[_0x7673('0x3b')][_0x7673('0x6c')]({'attributes':['id',_0x7673('0x6d'),'phone','recallme'],'where':_0x12cfe7,'order':_0x2a8feb,'transaction':_0x562a20,'lock':_0x562a20[_0x7673('0x6e')][_0x7673('0x6f')],'include':[{'model':db[_0x7673('0x55')],'as':_0x7673('0x70'),'attributes':_0x7ac2d,'include':[{'model':db['CmCompany'],'as':_0x7673('0x71'),'attributes':['id',_0x7673('0x17')]}]},{'model':db[_0x7673('0x72')],'as':_0x7673('0x73'),'attributes':['id',_0x7673('0x17')]},{'model':db['VoiceQueue'],'as':_0x7673('0x74'),'attributes':['id',_0x7673('0x17'),_0x7673('0x75')]}]})['then'](function(_0x376f42){if(_0x376f42){return _0x376f42[_0x7673('0xc')]({'UserId':_0x5caca9[_0x7673('0x4d')]['id']},{'transaction':_0x562a20});}});});}})[_0x7673('0xd')](handleEntityNotFound(_0x44fa26,null))[_0x7673('0xd')](respondWithResult(_0x44fa26,null))[_0x7673('0x38')](handleError(_0x44fa26,null));};exports['getPreviewRecall']=function(_0xc74a16,_0x36a751,_0xc6660d){var _0x413d2a=[];var _0x1a32e3=_0xc74a16[_0x7673('0x3f')]['id'];var _0x533e5b=_0xc74a16[_0x7673('0x4d')]['id'];return db[_0x7673('0x55')][_0x7673('0x40')]()[_0x7673('0xd')](function(_0x52de39){_0x413d2a=_[_0x7673('0x3a')](_0x52de39);return db[_0x7673('0x60')][_0x7673('0x61')](function(_0xc4e03e){const _0xfed5e5={'id':_0x1a32e3};return db[_0x7673('0x3b')][_0x7673('0x6c')]({'attributes':['id',_0x7673('0x6d'),_0x7673('0x76')],'where':_0xfed5e5,'transaction':_0xc4e03e,'lock':_0xc4e03e[_0x7673('0x6e')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0x7673('0x70'),'attributes':_0x413d2a,'include':[{'model':db[_0x7673('0x77')],'as':_0x7673('0x71'),'attributes':['id','name']}]},{'model':db[_0x7673('0x72')],'as':_0x7673('0x73'),'attributes':['id',_0x7673('0x17')]},{'model':db['VoiceQueue'],'as':_0x7673('0x74'),'attributes':['id','name',_0x7673('0x75')]}]})[_0x7673('0xd')](function(_0x4c7b28){if(_0x4c7b28){return _0x4c7b28['update']({'UserId':_0x533e5b},{'transaction':_0xc4e03e});}});});})[_0x7673('0xd')](handleEntityNotFound(_0x36a751,null))[_0x7673('0xd')](respondWithResult(_0x36a751,null))['catch'](handleError(_0x36a751,null));};exports['getOpenContacts']=function(_0x384aac,_0x595493){return _0x384aac[_0x7673('0x4d')][_0x7673('0x5d')]({'where':{'type':_0x7673('0x78'),'dialActive':!![],'dialMethod':_0x7673('0x5e')},'attributes':['id'],'raw':!![]})[_0x7673('0xd')](function(_0x3c82d3){if(_0x3c82d3&&_0x3c82d3[_0x7673('0x2d')]){return db[_0x7673('0x3b')][_0x7673('0x7')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x7673('0x51'))},'VoiceQueueId':{'$in':_[_0x7673('0x16')](_0x3c82d3,'id')},'$or':[{'UserId':null},{'UserId':_0x384aac[_0x7673('0x4d')]['id']}]}});}return 0x0;})['then'](function(_0x1cc5c2){if(!_[_0x7673('0x58')](_0x1cc5c2)&&_[_0x7673('0x79')](_0x1cc5c2)){return _0x595493[_0x7673('0x5')](0xc8)[_0x7673('0xb')]({'contacts':_0x1cc5c2});}else{logger[_0x7673('0xf')](_0x7673('0x7a'),'getOpenContacts',0x194,_0x7673('0x7b'));_0x595493['sendStatus'](0x194);}})[_0x7673('0x38')](handleError(_0x595493,null));};exports[_0x7673('0x7c')]=function(_0x1c61f9,_0x3a7767){var _0x4ed050=shared[_0x7673('0x7d')];var _0x31e97c=[];_[_0x7673('0x16')](_0x4ed050,function(_0x541a8a){_0x31e97c[_0x7673('0x7e')]({'id':_0x541a8a[_0x7673('0x17')],'name':_0x541a8a[_0x7673('0x17')],'utcOffset':_0x541a8a[_0x7673('0x7f')]});});return _0x3a7767['status'](0xc8)[_0x7673('0xb')]({'tz':_0x31e97c});};exports[_0x7673('0x80')]=function(_0x493c4d,_0x2d3583){var _0x332c63=shared['timezones'];var _0x3ba1aa={};if(!_['isNil'](_0x332c63[_0x493c4d[_0x7673('0x3e')]['id']]))_0x3ba1aa=_0x332c63[_0x493c4d['body']['id']];return _0x2d3583[_0x7673('0x5')](0xc8)[_0x7673('0xb')](_0x3ba1aa);};
\ No newline at end of file
+var _0xcb81=['hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','then','includeAll','include','rows','rawAttributes','find','catch','create','body','params','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','omit','state','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialOrderByScheduledAt','sequelize','dialPreviewAutoRecallMe','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','phone','recallme','LOCK','Company','CmList','Queue','dialActive','getPreviewRecall','transaction','UPDATE','Contact','CmCompany','List','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','utcOffset','moment','lodash','../../config/logger','status','json','offset','undefined','limit','count','set','update','sendStatus','stack','name','send','index','map','CmHopper','fieldName','type','key','query','keys','filters','concat','$and','$or','$gt','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','attributes','intersection','model','fields','length'];(function(_0x372ce7,_0x556ad1){var _0xf3232a=function(_0x16d646){while(--_0x16d646){_0x372ce7['push'](_0x372ce7['shift']());}};_0xf3232a(++_0x556ad1);}(_0xcb81,0x154));var _0x1cb8=function(_0x1d7300,_0x17f109){_0x1d7300=_0x1d7300-0x0;var _0x46ee98=_0xcb81[_0x1d7300];return _0x46ee98;};'use strict';var moment=require(_0x1cb8('0x0'));var _=require(_0x1cb8('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x1cb8('0x2'))('api');var shared=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithResult(_0x38c3ea,_0x33a8f2){_0x33a8f2=_0x33a8f2||0xc8;return function(_0x237e94){if(_0x237e94){return _0x38c3ea[_0x1cb8('0x3')](_0x33a8f2)[_0x1cb8('0x4')](_0x237e94);}};}function respondWithFilteredResult(_0x4e5c19,_0x98d682){return function(_0x2ac2d6){if(_0x2ac2d6){var _0x584b16=typeof _0x98d682[_0x1cb8('0x5')]===_0x1cb8('0x6')&&typeof _0x98d682[_0x1cb8('0x7')]==='undefined';var _0x1ff267=_0x2ac2d6['count'];var _0x480823=_0x584b16?0x0:_0x98d682[_0x1cb8('0x5')];var _0x2158a9=_0x584b16?_0x2ac2d6[_0x1cb8('0x8')]:_0x98d682[_0x1cb8('0x5')]+_0x98d682[_0x1cb8('0x7')];var _0x32715a;if(_0x2158a9>=_0x1ff267){_0x2158a9=_0x1ff267;_0x32715a=0xc8;}else{_0x32715a=0xce;}_0x4e5c19[_0x1cb8('0x3')](_0x32715a);return _0x4e5c19[_0x1cb8('0x9')]('Content-Range',_0x480823+'-'+_0x2158a9+'/'+_0x1ff267)[_0x1cb8('0x4')](_0x2ac2d6);}return null;};}function saveUpdates(_0x1ffe94,_0x1938ee){return function(_0x299eea){if(_0x299eea){return _0x299eea[_0x1cb8('0xa')](_0x1ffe94)['then'](function(_0x389c12){return _0x389c12;});}return null;};}function handleEntityNotFound(_0x2c600,_0xcb6ad1){return function(_0x14d84d){if(!_0x14d84d){_0x2c600[_0x1cb8('0xb')](0x194);}return _0x14d84d;};}function handleError(_0xe5402a,_0x339ad0){_0x339ad0=_0x339ad0||0x1f4;return function(_0x243930){logger['error'](_0x243930[_0x1cb8('0xc')]);if(_0x243930['name']){delete _0x243930[_0x1cb8('0xd')];}_0xe5402a[_0x1cb8('0x3')](_0x339ad0)[_0x1cb8('0xe')](_0x243930);};}exports[_0x1cb8('0xf')]=function(_0x2635a8,_0x308088){var _0x3bfbcf={},_0x9f0adb={},_0x2631db={'count':0x0,'rows':[]};var _0x1f9fd7=_[_0x1cb8('0x10')](db[_0x1cb8('0x11')]['rawAttributes'],function(_0x429d10){return{'name':_0x429d10[_0x1cb8('0x12')],'type':_0x429d10[_0x1cb8('0x13')][_0x1cb8('0x14')]};});_0x9f0adb['model']=_[_0x1cb8('0x10')](_0x1f9fd7,'name');_0x9f0adb[_0x1cb8('0x15')]=_[_0x1cb8('0x16')](_0x2635a8[_0x1cb8('0x15')]);_0x9f0adb[_0x1cb8('0x17')]=_['intersection'](_0x9f0adb['model'],_0x9f0adb[_0x1cb8('0x15')]);_0x9f0adb[_0x1cb8('0x17')]=_[_0x1cb8('0x18')](_0x9f0adb[_0x1cb8('0x17')],[_0x1cb8('0x19'),_0x1cb8('0x1a'),_0x1cb8('0x1b'),'$gte',_0x1cb8('0x1c'),_0x1cb8('0x1d'),_0x1cb8('0x1e'),_0x1cb8('0x1f'),_0x1cb8('0x20'),_0x1cb8('0x21'),'$notBetween',_0x1cb8('0x22'),_0x1cb8('0x23'),_0x1cb8('0x24'),_0x1cb8('0x25'),_0x1cb8('0x26'),'$notILike',_0x1cb8('0x24'),_0x1cb8('0x27'),_0x1cb8('0x28'),_0x1cb8('0x29'),'$any']);_0x3bfbcf[_0x1cb8('0x2a')]=_[_0x1cb8('0x2b')](_0x9f0adb[_0x1cb8('0x2c')],qs['fields'](_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x2d')]));_0x3bfbcf[_0x1cb8('0x2a')]=_0x3bfbcf['attributes'][_0x1cb8('0x2e')]?_0x3bfbcf[_0x1cb8('0x2a')]:_0x9f0adb[_0x1cb8('0x2c')];if(!_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x2f')]('nolimit')){_0x3bfbcf[_0x1cb8('0x7')]=qs[_0x1cb8('0x7')](_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x7')]);_0x3bfbcf[_0x1cb8('0x5')]=qs[_0x1cb8('0x5')](_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x5')]);}_0x3bfbcf[_0x1cb8('0x30')]=qs['sort'](_0x2635a8['query'][_0x1cb8('0x31')]);_0x3bfbcf[_0x1cb8('0x32')]=qs[_0x1cb8('0x17')](_['pick'](_0x2635a8['query'],_0x9f0adb[_0x1cb8('0x17')]),_0x1f9fd7);if(_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x33')]){_0x3bfbcf[_0x1cb8('0x32')]=_[_0x1cb8('0x34')](_0x3bfbcf[_0x1cb8('0x32')],{'$or':_[_0x1cb8('0x10')](_0x1f9fd7,function(_0x43dce0){if(_0x43dce0['type']!==_0x1cb8('0x35')){var _0x1a6518={};_0x1a6518[_0x43dce0[_0x1cb8('0xd')]]={'$like':'%'+_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x33')]+'%'};return _0x1a6518;}})});}_0x3bfbcf=_[_0x1cb8('0x34')]({},_0x3bfbcf,_0x2635a8[_0x1cb8('0x36')]);var _0x2ad7f6={'where':_0x3bfbcf[_0x1cb8('0x32')]};return db['CmHopper'][_0x1cb8('0x8')](_0x2ad7f6)[_0x1cb8('0x37')](function(_0x5e9f5f){_0x2631db[_0x1cb8('0x8')]=_0x5e9f5f;if(_0x2635a8[_0x1cb8('0x15')][_0x1cb8('0x38')]){_0x3bfbcf[_0x1cb8('0x39')]=[{'all':!![]}];}return db[_0x1cb8('0x11')]['findAll'](_0x3bfbcf);})[_0x1cb8('0x37')](function(_0x4666bc){_0x2631db[_0x1cb8('0x3a')]=_0x4666bc;return _0x2631db;})['then'](respondWithFilteredResult(_0x308088,_0x3bfbcf))['catch'](handleError(_0x308088,null));};exports['show']=function(_0xca5f83,_0x35e713){var _0x328f7e={'raw':!![],'where':{'id':_0xca5f83['params']['id']}},_0x4783c8={};_0x4783c8['model']=_[_0x1cb8('0x16')](db[_0x1cb8('0x11')][_0x1cb8('0x3b')]);_0x4783c8[_0x1cb8('0x15')]=_[_0x1cb8('0x16')](_0xca5f83[_0x1cb8('0x15')]);_0x4783c8[_0x1cb8('0x17')]=_[_0x1cb8('0x2b')](_0x4783c8['model'],_0x4783c8[_0x1cb8('0x15')]);_0x328f7e[_0x1cb8('0x2a')]=_[_0x1cb8('0x2b')](_0x4783c8[_0x1cb8('0x2c')],qs['fields'](_0xca5f83[_0x1cb8('0x15')]['fields']));_0x328f7e[_0x1cb8('0x2a')]=_0x328f7e[_0x1cb8('0x2a')]['length']?_0x328f7e[_0x1cb8('0x2a')]:_0x4783c8[_0x1cb8('0x2c')];if(_0xca5f83[_0x1cb8('0x15')]['includeAll']){_0x328f7e['include']=[{'all':!![]}];}_0x328f7e=_[_0x1cb8('0x34')]({},_0x328f7e,_0xca5f83['options']);return db[_0x1cb8('0x11')][_0x1cb8('0x3c')](_0x328f7e)[_0x1cb8('0x37')](handleEntityNotFound(_0x35e713,null))[_0x1cb8('0x37')](respondWithResult(_0x35e713,null))[_0x1cb8('0x3d')](handleError(_0x35e713,null));};exports[_0x1cb8('0x3e')]=function(_0x15e960,_0x5cc9e1){return db[_0x1cb8('0x11')][_0x1cb8('0x3e')](_0x15e960[_0x1cb8('0x3f')],{})[_0x1cb8('0x37')](respondWithResult(_0x5cc9e1,0xc9))['catch'](handleError(_0x5cc9e1,null));};exports[_0x1cb8('0xa')]=function(_0x7f7a09,_0x1b83a6){if(_0x7f7a09[_0x1cb8('0x3f')]['id']){delete _0x7f7a09[_0x1cb8('0x3f')]['id'];}return db['CmHopper'][_0x1cb8('0x3c')]({'where':{'id':_0x7f7a09[_0x1cb8('0x40')]['id']}})[_0x1cb8('0x37')](handleEntityNotFound(_0x1b83a6,null))[_0x1cb8('0x37')](saveUpdates(_0x7f7a09[_0x1cb8('0x3f')],null))['then'](respondWithResult(_0x1b83a6,null))[_0x1cb8('0x3d')](handleError(_0x1b83a6,null));};exports[_0x1cb8('0x41')]=function(_0x5598b1,_0x423916){return db[_0x1cb8('0x11')][_0x1cb8('0x41')]()[_0x1cb8('0x37')](respondWithResult(_0x423916,null))[_0x1cb8('0x3d')](handleError(_0x423916,null));};exports[_0x1cb8('0x42')]=function(_0x3b063c,_0x219541){var _0xd530f8;var _0x713a43=_0x3b063c[_0x1cb8('0x40')]['id'];return db[_0x1cb8('0x11')][_0x1cb8('0x3c')]({'where':{'id':_0x3b063c[_0x1cb8('0x40')]['id']}})['then'](handleEntityNotFound(_0x219541,null))[_0x1cb8('0x37')](function(_0x1e1272){if(_0x1e1272){return _0x1e1272[_0x1cb8('0x42')]()[_0x1cb8('0x37')](function(_0x21aba7){return _0x21aba7;});}})[_0x1cb8('0x37')](function(_0x2f853d){_0xd530f8=_0x2f853d;if(_0x2f853d){if(_0x2f853d['VoiceQueueId']||_0x2f853d[_0x1cb8('0x43')]){return db[_0x2f853d[_0x1cb8('0x44')]?_0x1cb8('0x45'):'Campaign']['find']({'where':{'id':_0x2f853d[_0x1cb8('0x44')]?_0x2f853d[_0x1cb8('0x44')]:_0x2f853d[_0x1cb8('0x43')]},'attributes':['id',_0x1cb8('0xd')],'raw':!![]});}}})[_0x1cb8('0x37')](function(_0x4d59db){var _0xd89636={};if(_0x4d59db){_[_0x1cb8('0x34')](_0xd89636,_[_0x1cb8('0x46')](_0xd530f8['dataValues'],['createdAt','updatedAt','id']));_0xd89636[_0x1cb8('0x47')]=0x15;_0xd89636['statedesc']=_0x1cb8('0x48');_0xd89636[_0x1cb8('0x49')]=_0x4d59db[_0x1cb8('0xd')];_0xd89636[_0x1cb8('0x4a')]=_0x3b063c[_0x1cb8('0x4b')]['name'];_0xd89636[_0x1cb8('0x4c')]=_0x3b063c[_0x1cb8('0x4b')]['id'];_0xd89636[_0x1cb8('0x48')]=!![];_0xd89636[_0x1cb8('0x4d')]=moment()[_0x1cb8('0x4e')](_0x1cb8('0x4f'));_0xd89636[_0x1cb8('0x50')]=_0xd530f8['phone'];_0xd89636[_0x1cb8('0x51')]=_0xd530f8[_0x1cb8('0x44')]?_0x1cb8('0x52'):_0x1cb8('0x53');return db[_0x1cb8('0x54')][_0x1cb8('0x3c')]({'where':{'id':_0xd89636[_0x1cb8('0x55')]},'attributes':['firstName','lastName']})['then'](function(_0x17ade3){if(!_['isNil'](_0x219541)&&!_[_0x1cb8('0x56')](_0x17ade3[_0x1cb8('0x57')])){_0xd89636[_0x1cb8('0x58')]=_0x17ade3[_0x1cb8('0x57')];if(!_[_0x1cb8('0x56')](_0x17ade3['lastName'])){_0xd89636['calleridname']+='\x20'+_0x17ade3['lastName'];}}})[_0x1cb8('0x59')](function(){return db[_0x1cb8('0x5a')]['create'](_0xd89636);});}})[_0x1cb8('0x37')](function(_0x5306fb){return db[_0x1cb8('0x5b')][_0x1cb8('0x42')]({'where':{'CmHopperId':_0x713a43}});})['then'](function(){return _0x219541[_0x1cb8('0x3')](0xcc)[_0x1cb8('0x5c')]();})[_0x1cb8('0x3d')](handleError(_0x219541,null));};exports[_0x1cb8('0x5d')]=function(_0x1396fc,_0x16ec38){var _0x416817=[];return db[_0x1cb8('0x54')][_0x1cb8('0x41')]()[_0x1cb8('0x37')](function(_0x2fb1a7){_0x416817=_[_0x1cb8('0x16')](_0x2fb1a7);return _0x1396fc[_0x1cb8('0x4b')]['getVoiceQueues']({'where':{'type':_0x1cb8('0x5e'),'dialActive':!![],'dialMethod':_0x1cb8('0x5f')},'attributes':['id',_0x1cb8('0x60'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x1cb8('0x37')](function(_0x39de0b){if(_0x39de0b&&_0x39de0b[_0x1cb8('0x2e')]){return db[_0x1cb8('0x61')]['transaction'](function(_0x37f282){var _0x2b92f1={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x1cb8('0x4f'))},'VoiceQueueId':{'$in':_[_0x1cb8('0x10')](_0x39de0b,'id')},'$or':[{'UserId':null},{'UserId':_0x1396fc['user']['id']}]};var _0x41a5b2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x39de0b)[_0x1cb8('0x33')]([_0x1cb8('0x62'),0x0])[_0x1cb8('0x10')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x1396fc['user']['id']}]};var _0x4e6a41={'$or':[_0x2b92f1,_0x41a5b2]};var _0x7f7524=[];if(_0x1396fc[_0x1cb8('0x3f')][_0x1cb8('0x63')]&&_0x1396fc[_0x1cb8('0x3f')][_0x1cb8('0x63')]===_0x1cb8('0x64')){if(!_[_0x1cb8('0x65')](_0x1396fc['body'][_0x1cb8('0x66')])){_0x4e6a41['id']={'$in':_0x1396fc[_0x1cb8('0x3f')][_0x1cb8('0x66')]};}_0x7f7524=[['priority',_0x1cb8('0x67')],[_0x1cb8('0x68'),_0x39de0b[0x0][_0x1cb8('0x60')]===_0x1cb8('0x67')?_0x1cb8('0x69'):'ASC'],db[_0x1cb8('0x61')][_0x1cb8('0x6a')](_0x1cb8('0x6b')),['id','DESC']];}else{if(!_[_0x1cb8('0x65')](_0x1396fc[_0x1cb8('0x3f')]['hopperIds'])){_0x4e6a41['id']={'$notIn':_0x1396fc[_0x1cb8('0x3f')]['hopperIds']};}_0x7f7524=[['priority',_0x1cb8('0x69')],[_0x1cb8('0x68'),_0x39de0b[0x0][_0x1cb8('0x60')]],db['sequelize']['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x1cb8('0x67')]];}return db[_0x1cb8('0x11')][_0x1cb8('0x6c')]({'attributes':['id',_0x1cb8('0x6d'),_0x1cb8('0x6e'),_0x1cb8('0x6f')],'where':_0x4e6a41,'order':_0x7f7524,'transaction':_0x37f282,'lock':_0x37f282[_0x1cb8('0x70')]['UPDATE'],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x416817,'include':[{'model':db['CmCompany'],'as':_0x1cb8('0x71'),'attributes':['id','name']}]},{'model':db[_0x1cb8('0x72')],'as':'List','attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x1cb8('0x73'),'attributes':['id',_0x1cb8('0xd'),_0x1cb8('0x74')]}]})[_0x1cb8('0x37')](function(_0x26f661){if(_0x26f661){return _0x26f661[_0x1cb8('0xa')]({'UserId':_0x1396fc[_0x1cb8('0x4b')]['id']},{'transaction':_0x37f282});}});});}})[_0x1cb8('0x37')](handleEntityNotFound(_0x16ec38,null))[_0x1cb8('0x37')](respondWithResult(_0x16ec38,null))[_0x1cb8('0x3d')](handleError(_0x16ec38,null));};exports[_0x1cb8('0x75')]=function(_0x1f1bc9,_0x279a03,_0x1cc13f){var _0xafc24b=[];var _0x38aa03=_0x1f1bc9['params']['id'];var _0xd1ee6d=_0x1f1bc9[_0x1cb8('0x4b')]['id'];return db[_0x1cb8('0x54')][_0x1cb8('0x41')]()[_0x1cb8('0x37')](function(_0x284c46){_0xafc24b=_['keys'](_0x284c46);return db[_0x1cb8('0x61')][_0x1cb8('0x76')](function(_0x19c7ca){const _0xe2c1b8={'id':_0x38aa03};return db[_0x1cb8('0x11')]['findOne']({'attributes':['id',_0x1cb8('0x6d'),_0x1cb8('0x6f')],'where':_0xe2c1b8,'transaction':_0x19c7ca,'lock':_0x19c7ca['LOCK'][_0x1cb8('0x77')],'include':[{'model':db['CmContact'],'as':_0x1cb8('0x78'),'attributes':_0xafc24b,'include':[{'model':db[_0x1cb8('0x79')],'as':_0x1cb8('0x71'),'attributes':['id','name']}]},{'model':db[_0x1cb8('0x72')],'as':_0x1cb8('0x7a'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x1cb8('0x73'),'attributes':['id',_0x1cb8('0xd'),'dialActive']}]})[_0x1cb8('0x37')](function(_0x257156){if(_0x257156){return _0x257156[_0x1cb8('0xa')]({'UserId':_0xd1ee6d},{'transaction':_0x19c7ca});}});});})[_0x1cb8('0x37')](handleEntityNotFound(_0x279a03,null))[_0x1cb8('0x37')](respondWithResult(_0x279a03,null))[_0x1cb8('0x3d')](handleError(_0x279a03,null));};exports[_0x1cb8('0x7b')]=function(_0x4eb044,_0x438d49){return _0x4eb044['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x1cb8('0x5f')},'attributes':['id'],'raw':!![]})[_0x1cb8('0x37')](function(_0x4ab060){if(_0x4ab060&&_0x4ab060[_0x1cb8('0x2e')]){return db[_0x1cb8('0x11')][_0x1cb8('0x8')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x1cb8('0x10')](_0x4ab060,'id')},'$or':[{'UserId':null},{'UserId':_0x4eb044['user']['id']}]}});}return 0x0;})[_0x1cb8('0x37')](function(_0x3ec1ce){if(!_[_0x1cb8('0x56')](_0x3ec1ce)&&_['isNumber'](_0x3ec1ce)){return _0x438d49['status'](0xc8)[_0x1cb8('0x4')]({'contacts':_0x3ec1ce});}else{logger['error'](_0x1cb8('0x7c'),_0x1cb8('0x7b'),0x194,_0x1cb8('0x7d'));_0x438d49[_0x1cb8('0xb')](0x194);}})[_0x1cb8('0x3d')](handleError(_0x438d49,null));};exports[_0x1cb8('0x7e')]=function(_0x111011,_0x2f22cd){var _0x99de73=shared[_0x1cb8('0x7f')];var _0x255cec=[];_[_0x1cb8('0x10')](_0x99de73,function(_0xdb3ec3){_0x255cec['push']({'id':_0xdb3ec3['name'],'name':_0xdb3ec3[_0x1cb8('0xd')],'utcOffset':_0xdb3ec3[_0x1cb8('0x80')]});});return _0x2f22cd[_0x1cb8('0x3')](0xc8)[_0x1cb8('0x4')]({'tz':_0x255cec});};exports['getTimezone']=function(_0x745acb,_0x1e343c){var _0x4b48a6=shared[_0x1cb8('0x7f')];var _0x157290={};if(!_['isNil'](_0x4b48a6[_0x745acb[_0x1cb8('0x3f')]['id']]))_0x157290=_0x4b48a6[_0x745acb[_0x1cb8('0x3f')]['id']];return _0x1e343c[_0x1cb8('0x3')](0xc8)[_0x1cb8('0x4')](_0x157290);};
\ No newline at end of file
index 803db1e..c5b6e75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['api','moment','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger'];(function(_0x16d24f,_0x4686a5){var _0x3beec6=function(_0x552ae0){while(--_0x552ae0){_0x16d24f['push'](_0x16d24f['shift']());}};_0x3beec6(++_0x4686a5);}(_0x2a07,0x74));var _0x72a0=function(_0x438434,_0x36f21f){_0x438434=_0x438434-0x0;var _0x3b97c9=_0x2a07[_0x438434];return _0x3b97c9;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var logger=require(_0x72a0('0x2'))(_0x72a0('0x3'));var moment=require(_0x72a0('0x4'));var BPromise=require('bluebird');var rp=require(_0x72a0('0x5'));var fs=require('fs');var path=require(_0x72a0('0x6'));var rimraf=require(_0x72a0('0x7'));var config=require(_0x72a0('0x8'));var attributes=require(_0x72a0('0x9'));module[_0x72a0('0xa')]=function(_0x3ccf6d,_0x20dab9){return _0x3ccf6d[_0x72a0('0xb')](_0x72a0('0xc'),attributes,{'tableName':_0x72a0('0xd'),'paranoid':![],'indexes':[{'name':_0x72a0('0xe'),'fields':[_0x72a0('0xe')]},{'name':_0x72a0('0xf'),'fields':[_0x72a0('0xf')]},{'name':_0x72a0('0x10'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x524e=['define','CmHopper','scheduledat','phone','priority','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0xe4b502,_0x485bfe){var _0x40ea7e=function(_0x59716d){while(--_0x59716d){_0xe4b502['push'](_0xe4b502['shift']());}};_0x40ea7e(++_0x485bfe);}(_0x524e,0x15e));var _0xe524=function(_0x37a197,_0x1d331b){_0x37a197=_0x37a197-0x0;var _0xf03c55=_0x524e[_0x37a197];return _0xf03c55;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xc')]},{'name':_0xe524('0xd'),'fields':[_0xe524('0xd')]},{'name':_0xe524('0xe'),'fields':[_0xe524('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index ef5fc3f..30f7693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8f0=['includes','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','active','MoveContactManagedDialer','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','CmContact','all','GetCmHopperPreview','Contact','GetContactByPhone','findOne','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','literal','\x20MINUTE','User','Agent','List','NOW()','lodash','util','moment','bluebird','../../config/logger','rpc','GetCmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','catch','error','message','ShowCmHopper','CmHopper','info','create','body','CreateCmHopper','stringify','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','DestroyCmHopper','GetContactDialer','describe','sequelize','transaction','order','LOCK','UPDATE','keys','name','voicePause','length','UserId','push'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0xb8f0,0x112));var _0x0b8f=function(_0x3db039,_0x30c8dd){_0x3db039=_0x3db039-0x0;var _0x293a41=_0xb8f0[_0x3db039];return _0x293a41;};'use strict';var _=require(_0x0b8f('0x0'));var util=require(_0x0b8f('0x1'));var moment=require(_0x0b8f('0x2'));var BPromise=require(_0x0b8f('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x0b8f('0x4'))(_0x0b8f('0x5'));exports[_0x0b8f('0x6')]=function(_0x5ce80c){var _0x142593=this;return new Promise(function(_0x452208,_0x36b484){return db['CmHopper'][_0x0b8f('0x7')]({'raw':_0x5ce80c[_0x0b8f('0x8')]?_0x5ce80c[_0x0b8f('0x8')][_0x0b8f('0x9')]===undefined?!![]:![]:!![],'where':_0x5ce80c[_0x0b8f('0x8')]?_0x5ce80c[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'attributes':_0x5ce80c['options']?_0x5ce80c['options'][_0x0b8f('0xb')]||null:null,'limit':_0x5ce80c[_0x0b8f('0x8')]?_0x5ce80c[_0x0b8f('0x8')][_0x0b8f('0xc')]||null:null,'include':_0x5ce80c[_0x0b8f('0x8')]?_0x5ce80c[_0x0b8f('0x8')][_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0x5ce80c['options'][_0x0b8f('0xd')],function(_0x4255c0){return{'model':db[_0x4255c0[_0x0b8f('0xf')]],'as':_0x4255c0['as'],'attributes':_0x4255c0[_0x0b8f('0xb')],'include':_0x4255c0[_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0x4255c0[_0x0b8f('0xd')],function(_0xe28b92){return{'model':db[_0xe28b92[_0x0b8f('0xf')]],'as':_0xe28b92['as'],'attributes':_0xe28b92[_0x0b8f('0xb')],'include':_0xe28b92[_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0xe28b92[_0x0b8f('0xd')],function(_0x2fb8e0){return{'model':db[_0x2fb8e0['model']],'as':_0x2fb8e0['as'],'attributes':_0x2fb8e0['attributes']};}):[]};}):[]};}):[]:[]})[_0x0b8f('0x10')](function(_0x13aadb){logger['info'](_0x0b8f('0x6'),_0x5ce80c);logger[_0x0b8f('0x11')](_0x0b8f('0x6'),_0x5ce80c,JSON['stringify'](_0x13aadb));_0x452208(_0x13aadb);})[_0x0b8f('0x12')](function(_0x4017ae){logger[_0x0b8f('0x13')](_0x0b8f('0x6'),_0x4017ae[_0x0b8f('0x14')],_0x5ce80c);_0x36b484(_0x142593[_0x0b8f('0x13')](0x1f4,_0x4017ae[_0x0b8f('0x14')]));});});};exports[_0x0b8f('0x15')]=function(_0x29558e){var _0x255c42=this;return new Promise(function(_0x41a925,_0x51a239){return db[_0x0b8f('0x16')]['find']({'raw':_0x29558e['options']?_0x29558e[_0x0b8f('0x8')][_0x0b8f('0x9')]===undefined?!![]:![]:!![],'where':_0x29558e[_0x0b8f('0x8')]?_0x29558e['options'][_0x0b8f('0xa')]||null:null,'attributes':_0x29558e[_0x0b8f('0x8')]?_0x29558e[_0x0b8f('0x8')][_0x0b8f('0xb')]||null:null,'include':_0x29558e[_0x0b8f('0x8')]?_0x29558e[_0x0b8f('0x8')]['include']?_[_0x0b8f('0xe')](_0x29558e[_0x0b8f('0x8')][_0x0b8f('0xd')],function(_0x597966){return{'model':db[_0x597966[_0x0b8f('0xf')]],'as':_0x597966['as'],'attributes':_0x597966['attributes'],'include':_0x597966[_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0x597966[_0x0b8f('0xd')],function(_0xa5e2b6){return{'model':db[_0xa5e2b6['model']],'as':_0xa5e2b6['as'],'attributes':_0xa5e2b6[_0x0b8f('0xb')],'include':_0xa5e2b6[_0x0b8f('0xd')]?_['map'](_0xa5e2b6['include'],function(_0x266654){return{'model':db[_0x266654[_0x0b8f('0xf')]],'as':_0x266654['as'],'attributes':_0x266654[_0x0b8f('0xb')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xc55083){logger[_0x0b8f('0x17')]('ShowCmHopper',_0x29558e);logger[_0x0b8f('0x11')](_0x0b8f('0x15'),_0x29558e,JSON['stringify'](_0xc55083));_0x41a925(_0xc55083);})['catch'](function(_0x3c9824){logger[_0x0b8f('0x13')](_0x0b8f('0x15'),_0x3c9824['message'],_0x29558e);_0x51a239(_0x255c42['error'](0x1f4,_0x3c9824[_0x0b8f('0x14')]));});});};exports['CreateCmHopper']=function(_0x1ac2ff){var _0x43fc75=this;return new Promise(function(_0x54a5d3,_0x255727){return db[_0x0b8f('0x16')][_0x0b8f('0x18')](_0x1ac2ff[_0x0b8f('0x19')],{'raw':_0x1ac2ff[_0x0b8f('0x8')]?_0x1ac2ff['options'][_0x0b8f('0x9')]===undefined?!![]:![]:!![]})[_0x0b8f('0x10')](function(_0xf8dc70){logger[_0x0b8f('0x17')]('CreateCmHopper',_0x1ac2ff);logger['debug'](_0x0b8f('0x1a'),_0x1ac2ff,JSON[_0x0b8f('0x1b')](_0xf8dc70));_0x54a5d3(_0xf8dc70);})[_0x0b8f('0x12')](function(_0x49be41){logger[_0x0b8f('0x13')](_0x0b8f('0x1a'),_0x49be41['message'],_0x1ac2ff);_0x255727(_0x43fc75[_0x0b8f('0x13')](0x1f4,_0x49be41[_0x0b8f('0x14')]));});});};exports[_0x0b8f('0x1c')]=function(_0x47959a){var _0x19234b=this;return new Promise(function(_0x5d79f8,_0x1d26d1){return db[_0x0b8f('0x16')][_0x0b8f('0x1d')](_0x47959a[_0x0b8f('0x19')],{'raw':_0x47959a[_0x0b8f('0x8')]?_0x47959a[_0x0b8f('0x8')][_0x0b8f('0x9')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x47959a[_0x0b8f('0x8')]?_0x47959a[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'attributes':_0x47959a[_0x0b8f('0x8')]?_0x47959a[_0x0b8f('0x8')][_0x0b8f('0xb')]||null:null,'limit':_0x47959a[_0x0b8f('0x8')]?_0x47959a[_0x0b8f('0x8')][_0x0b8f('0xc')]||null:null})['then'](function(_0x24742a){logger['info'](_0x0b8f('0x1c'),_0x47959a);logger['info'](_0x0b8f('0x1e'),JSON[_0x0b8f('0x1b')](_0x47959a['options'][_0x0b8f('0xa')]),_0x47959a[_0x0b8f('0x19')]['active']);logger[_0x0b8f('0x11')]('UpdateCmHopper',_0x47959a,JSON[_0x0b8f('0x1b')](_0x24742a));_0x5d79f8(_0x24742a);})[_0x0b8f('0x12')](function(_0xc0a910){logger[_0x0b8f('0x13')](_0x0b8f('0x1c'),_0xc0a910[_0x0b8f('0x14')],_0x47959a);_0x1d26d1(_0x19234b[_0x0b8f('0x13')](0x1f4,_0xc0a910['message']));});});};exports['DestroyCmHopper']=function(_0x2ac09a){var _0x1fe390=this;return new Promise(function(_0x554aa7,_0x533103){return db['CmHopper'][_0x0b8f('0x1f')]({'where':_0x2ac09a['options']?_0x2ac09a['options']['where']||null:null})[_0x0b8f('0x10')](function(_0x51804e){logger[_0x0b8f('0x17')](_0x0b8f('0x20'),_0x2ac09a);logger['debug'](_0x0b8f('0x20'),_0x2ac09a,JSON[_0x0b8f('0x1b')](_0x51804e));_0x554aa7(_0x51804e);})[_0x0b8f('0x12')](function(_0x3e5a56){logger['error']('DestroyCmHopper',_0x3e5a56[_0x0b8f('0x14')],_0x2ac09a);_0x533103(_0x1fe390[_0x0b8f('0x13')](0x1f4,_0x3e5a56['message']));});});};exports[_0x0b8f('0x21')]=function(_0x185887){var _0x4926cb=this;return new Promise(function(_0x2501ec,_0x4c4983){return db['CmContact'][_0x0b8f('0x22')]()['then'](function(_0x144223){return db[_0x0b8f('0x23')][_0x0b8f('0x24')](function(_0x5a3939){return db[_0x0b8f('0x16')][_0x0b8f('0x7')]({'where':_0x185887[_0x0b8f('0x8')]?_0x185887[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'attributes':_0x185887['options']?_0x185887[_0x0b8f('0x8')][_0x0b8f('0xb')]||null:null,'limit':_0x185887[_0x0b8f('0x8')]?_0x185887['options'][_0x0b8f('0xc')]||null:null,'order':_0x185887[_0x0b8f('0x8')]?_0x185887[_0x0b8f('0x8')][_0x0b8f('0x25')]||null:null,'transaction':_0x5a3939,'lock':_0x5a3939[_0x0b8f('0x26')][_0x0b8f('0x27')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_[_0x0b8f('0x28')](_0x144223)},{'model':db['User'],'as':'Agent','attributes':['id',_0x0b8f('0x29'),_0x0b8f('0x2a')]}]})['then'](function(_0x4e72fa){var _0x490778=[];var _0x31b7ee=[];for(var _0x5c8054=0x0;_0x5c8054<_0x4e72fa[_0x0b8f('0x2b')];_0x5c8054+=0x1){var _0x5f5ac9=_0x4e72fa[_0x5c8054][_0x0b8f('0x2c')];if(_0x5f5ac9===null){_0x490778[_0x0b8f('0x2d')](_0x4e72fa[_0x5c8054][_0x0b8f('0x1d')](_0x185887[_0x0b8f('0x19')],{'transaction':_0x5a3939}));}else if(!_0x31b7ee[_0x0b8f('0x2e')](_0x5f5ac9)){_0x31b7ee['push'](_0x5f5ac9);_0x490778['push'](_0x4e72fa[_0x5c8054]['update'](_0x185887[_0x0b8f('0x19')],{'transaction':_0x5a3939}));}}return BPromise['all'](_0x490778);});})[_0x0b8f('0x10')](function(_0x1d5555){logger[_0x0b8f('0x17')]('GetContactDialer',_0x185887);if(_0x1d5555['length']>0x0){logger['info'](_0x0b8f('0x2f'),_0x1d5555[0x0]['dataValues']['id'],_0x1d5555[0x0][_0x0b8f('0x30')]['ContactId'],_0x1d5555[0x0][_0x0b8f('0x30')][_0x0b8f('0x31')]);}logger[_0x0b8f('0x11')](_0x0b8f('0x21'),_0x185887,JSON[_0x0b8f('0x1b')](_0x1d5555));_0x2501ec(_0x1d5555);})[_0x0b8f('0x12')](function(_0x5a6da9){logger[_0x0b8f('0x13')](_0x0b8f('0x21'),_0x5a6da9['message'],_0x185887);_0x4c4983(_0x4926cb[_0x0b8f('0x13')](0x1f4,_0x5a6da9[_0x0b8f('0x14')]));});});});};exports[_0x0b8f('0x32')]=function(_0x2cba54){var _0x3dc73b=this;return new Promise(function(_0x3df0ba,_0x394d58){return db['sequelize']['transaction'](function(_0x578091){return db['CmHopperFinal'][_0x0b8f('0x18')](_0x2cba54[_0x0b8f('0x19')],{'raw':_0x2cba54['options']?_0x2cba54[_0x0b8f('0x8')][_0x0b8f('0x9')]===undefined?!![]:![]:!![],'transaction':_0x578091})['then'](function(){logger[_0x0b8f('0x17')](_0x0b8f('0x33'),JSON['stringify'](_0x2cba54[_0x0b8f('0x8')][_0x0b8f('0xa')]),_0x2cba54[_0x0b8f('0x8')][_0x0b8f('0xa')][_0x0b8f('0x31')]);return db[_0x0b8f('0x16')]['destroy']({'where':_0x2cba54['options']?_0x2cba54[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'transaction':_0x578091});});})['then'](function(_0x3f355b){logger[_0x0b8f('0x17')](_0x0b8f('0x32'),_0x2cba54);logger[_0x0b8f('0x11')]('MoveContactManagedDialer',_0x2cba54,JSON[_0x0b8f('0x1b')](_0x3f355b));_0x3df0ba(_0x3f355b);})[_0x0b8f('0x12')](function(_0x598f0c){logger[_0x0b8f('0x13')]('MoveContactManagedDialer',_0x598f0c[_0x0b8f('0x14')],_0x2cba54);_0x394d58(_0x3dc73b['error'](0x1f4,_0x598f0c[_0x0b8f('0x14')]));});});};exports[_0x0b8f('0x34')]=function(_0x6080bf){var _0x769243=this;return new Promise(function(_0x5d3a5e,_0x32f450){return db[_0x0b8f('0x16')][_0x0b8f('0x7')]({'raw':_0x6080bf[_0x0b8f('0x8')]?_0x6080bf[_0x0b8f('0x8')][_0x0b8f('0x9')]===undefined?!![]:![]:!![],'where':_0x6080bf['options']?_0x6080bf[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'attributes':[[db[_0x0b8f('0x23')]['fn'](_0x0b8f('0x35'),db[_0x0b8f('0x23')]['fn']('IF',db[_0x0b8f('0x23')]['literal'](_0x0b8f('0x36')+util[_0x0b8f('0x37')](_0x0b8f('0x38'),moment()['format'](_0x0b8f('0x39')))+'\x20,\x201,\x20null'))),_0x0b8f('0x3a')]]})[_0x0b8f('0x10')](function(_0xfef99){logger[_0x0b8f('0x17')](_0x0b8f('0x34'),_0x6080bf);logger[_0x0b8f('0x11')](_0x0b8f('0x34'),_0x6080bf,JSON[_0x0b8f('0x1b')](_0xfef99));_0x5d3a5e(_0xfef99);})[_0x0b8f('0x12')](function(_0x3c8d3e){logger[_0x0b8f('0x13')]('CountReScheduled',_0x3c8d3e[_0x0b8f('0x14')],_0x6080bf);_0x32f450(_0x769243['error'](0x1f4,_0x3c8d3e['message']));});});};exports[_0x0b8f('0x3b')]=function(_0xcfc673){var _0x2f299b=this;return new Promise(function(_0x154f00,_0x569332){return db[_0x0b8f('0x3c')]['describe']()[_0x0b8f('0x10')](function(){return db[_0x0b8f('0x23')][_0x0b8f('0x24')](function(_0xcf7456){return db[_0x0b8f('0x16')][_0x0b8f('0x7')]({'where':_0xcfc673['options']?_0xcfc673[_0x0b8f('0x8')]['where']||null:null,'attributes':_0xcfc673[_0x0b8f('0x8')]?_0xcfc673[_0x0b8f('0x8')]['attributes']||null:null,'limit':0x1,'order':_0xcfc673[_0x0b8f('0x8')]?_0xcfc673['options'][_0x0b8f('0x25')]||null:null,'group':db[_0x0b8f('0x16')][_0x0b8f('0x2c')],'transaction':_0xcf7456,'lock':_0xcf7456['LOCK'][_0x0b8f('0x27')],'include':_0xcfc673[_0x0b8f('0x8')]?_0xcfc673[_0x0b8f('0x8')]['include']?_[_0x0b8f('0xe')](_0xcfc673['options']['include'],function(_0x40c1c0){return{'model':db[_0x40c1c0[_0x0b8f('0xf')]],'as':_0x40c1c0['as'],'attributes':_0x40c1c0[_0x0b8f('0xb')],'include':_0x40c1c0[_0x0b8f('0xd')]?_['map'](_0x40c1c0[_0x0b8f('0xd')],function(_0x523340){return{'model':db[_0x523340[_0x0b8f('0xf')]],'as':_0x523340['as'],'attributes':_0x523340[_0x0b8f('0xb')],'include':_0x523340[_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0x523340['include'],function(_0xc8ae2e){return{'model':db[_0xc8ae2e[_0x0b8f('0xf')]],'as':_0xc8ae2e['as'],'attributes':_0xc8ae2e[_0x0b8f('0xb')]};}):[]};}):[]};}):[]:[]})[_0x0b8f('0x10')](function(_0x36bfc3){var _0x5548dd=[];for(var _0x230c4c=0x0;_0x230c4c<_0x36bfc3[_0x0b8f('0x2b')];_0x230c4c+=0x1){_0x5548dd[_0x0b8f('0x2d')](_0x36bfc3[_0x230c4c][_0x0b8f('0x1d')](_0xcfc673['body'],{'transaction':_0xcf7456}));}return BPromise[_0x0b8f('0x3d')](_0x5548dd);});})[_0x0b8f('0x10')](function(_0x5af5c2){logger[_0x0b8f('0x17')](_0x0b8f('0x3b'),_0xcfc673);logger[_0x0b8f('0x11')](_0x0b8f('0x3b'),_0xcfc673,JSON[_0x0b8f('0x1b')](_0x5af5c2));_0x154f00(_0x5af5c2);})[_0x0b8f('0x12')](function(_0x372cf5){logger['error'](_0x0b8f('0x3b'),_0x372cf5[_0x0b8f('0x14')],_0xcfc673);_0x569332(_0x2f299b[_0x0b8f('0x13')](0x1f4,_0x372cf5[_0x0b8f('0x14')]));});});});};exports[_0x0b8f('0x3e')]=function(_0xfccca8){var _0x4499b4=this;return new Promise(function(_0x43dfc3,_0x26eaeb){db[_0x0b8f('0x3c')][_0x0b8f('0x22')]()[_0x0b8f('0x10')](function(_0x154bbc){return db[_0x0b8f('0x16')]['findAll']({'raw':_0xfccca8[_0x0b8f('0x8')]?_0xfccca8[_0x0b8f('0x8')]['raw']===undefined?!![]:![]:!![],'where':_0xfccca8[_0x0b8f('0x8')]?_0xfccca8[_0x0b8f('0x8')][_0x0b8f('0xa')]||null:null,'attributes':_0xfccca8[_0x0b8f('0x8')]?_0xfccca8[_0x0b8f('0x8')]['attributes']||null:null,'limit':_0xfccca8[_0x0b8f('0x8')]?_0xfccca8['options'][_0x0b8f('0xc')]||null:null,'include':_0xfccca8['options']?_0xfccca8[_0x0b8f('0x8')][_0x0b8f('0xd')]?_[_0x0b8f('0xe')](_0xfccca8[_0x0b8f('0x8')][_0x0b8f('0xd')],function(_0xfccd59){return{'model':db[_0xfccd59[_0x0b8f('0xf')]],'as':_0xfccd59['as'],'attributes':_0xfccd59['as']===_0x0b8f('0x3f')?_[_0x0b8f('0x28')](_0x154bbc):_0xfccd59[_0x0b8f('0xb')],'include':_0xfccd59[_0x0b8f('0xd')]?_['map'](_0xfccd59[_0x0b8f('0xd')],function(_0x32ac2b){return{'model':db[_0x32ac2b[_0x0b8f('0xf')]],'as':_0x32ac2b['as'],'attributes':_0x32ac2b[_0x0b8f('0xb')],'include':_0x32ac2b['include']?_[_0x0b8f('0xe')](_0x32ac2b[_0x0b8f('0xd')],function(_0x1797fa){return{'model':db[_0x1797fa[_0x0b8f('0xf')]],'as':_0x1797fa['as'],'attributes':_0x1797fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x0b8f('0x10')](function(_0x537477){logger['info'](_0x0b8f('0x6'),_0xfccca8);logger[_0x0b8f('0x11')](_0x0b8f('0x6'),_0xfccca8,JSON[_0x0b8f('0x1b')](_0x537477));_0x43dfc3(_0x537477);})[_0x0b8f('0x12')](function(_0x8f58da){logger[_0x0b8f('0x13')](_0x0b8f('0x6'),_0x8f58da[_0x0b8f('0x14')],_0xfccca8);_0x26eaeb(_0x4499b4['error'](0x1f4,_0x8f58da[_0x0b8f('0x14')]));});});});};exports[_0x0b8f('0x40')]=function(_0x27910d){var _0x8d3703=this;return new Promise(function(_0x1e2a30,_0x4abe3c){return db[_0x0b8f('0x3c')][_0x0b8f('0x41')]({'raw':!![],'where':{'phone':_0x27910d[_0x0b8f('0x8')]['where']['phone']},'attributes':['id',_0x0b8f('0x42')],'order':[['id',_0x0b8f('0x43')]]})[_0x0b8f('0x10')](function(_0x4a71bc){logger[_0x0b8f('0x17')](_0x0b8f('0x44'),_0x27910d);logger['debug']('getContactByPhone',_0x27910d,JSON[_0x0b8f('0x1b')](_0x4a71bc));_0x1e2a30(_0x4a71bc);})['catch'](function(_0x27b4ce){logger[_0x0b8f('0x13')](_0x0b8f('0x44'),_0x27b4ce[_0x0b8f('0x14')],_0x27910d);_0x4abe3c(_0x8d3703['error'](0x1f4,_0x27b4ce[_0x0b8f('0x14')]));});});};exports[_0x0b8f('0x45')]=function(_0x151542){var _0x1384c1=this;return new Promise(function(_0x3de5b3,_0x27a235){return db[_0x0b8f('0x23')][_0x0b8f('0x24')](function(_0x859fe0){var _0xcd618f=_0x151542[_0x0b8f('0x8')]&&_0x151542[_0x0b8f('0x8')][_0x0b8f('0xa')]?_0x151542[_0x0b8f('0x8')]['where']:{};return db[_0x0b8f('0x16')][_0x0b8f('0x1d')](_0x151542['body'],{'where':_0xcd618f,'transaction':_0x859fe0})['then'](function(_0xe16dd6){logger[_0x0b8f('0x17')](_0x0b8f('0x45'),_0x151542);logger[_0x0b8f('0x11')](_0x0b8f('0x45'),_0x151542,JSON[_0x0b8f('0x1b')](_0xe16dd6));_0x3de5b3(_0xe16dd6);})[_0x0b8f('0x12')](function(_0xa1fc62){logger[_0x0b8f('0x13')](_0x0b8f('0x45'),_0xa1fc62[_0x0b8f('0x14')],_0x151542);_0x27a235(_0x1384c1['error'](0x1f4,_0xa1fc62[_0x0b8f('0x14')]));});});});};exports[_0x0b8f('0x46')]=function(_0x14ea6d){var _0x4f67e0=this;var _0x444f8c=_0x14ea6d[_0x0b8f('0x19')][_0x0b8f('0xa')][_0x0b8f('0x47')];var _0xc32830=_0x14ea6d['body'][_0x0b8f('0xa')][_0x0b8f('0x48')];var _0x51ee4f=_0x14ea6d[_0x0b8f('0x19')][_0x0b8f('0xa')][_0x0b8f('0x49')];return new Promise(function(_0x358daa,_0x1ceb1b){return db[_0x0b8f('0x16')][_0x0b8f('0x7')]({'where':{'voiceQueueId':{'$in':_0x444f8c},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x0b8f('0x23')][_0x0b8f('0x4a')]('NOW()\x20+\x20INTERVAL\x20'+_0xc32830+_0x0b8f('0x4b')),'$gt':db[_0x0b8f('0x23')][_0x0b8f('0x4a')]('NOW()')}},'UserId':{'$in':_0x51ee4f}},'include':[{'model':db[_0x0b8f('0x3c')],'as':'Contact'},{'model':db[_0x0b8f('0x4c')],'as':_0x0b8f('0x4d'),'attributes':['id',_0x0b8f('0x29'),'voicePause']},{'model':db['CmList'],'as':_0x0b8f('0x4e')}]})['then'](function(_0x399b5f){if(_0x399b5f[_0x0b8f('0x2b')]>0x0){return db[_0x0b8f('0x23')]['transaction'](function(_0x8a1f4){return db[_0x0b8f('0x16')]['update']({'recallmeNotifiedDate':db[_0x0b8f('0x23')]['literal'](_0x0b8f('0x4f'))},{'where':{'id':{'$in':_['map'](_0x399b5f,'id')}},'transaction':_0x8a1f4})[_0x0b8f('0x10')](function(){_0x358daa(_0x399b5f);})[_0x0b8f('0x12')](function(_0x2102b4){logger[_0x0b8f('0x13')]('CmHopperHandlePreviewRecallNotifications',_0x2102b4[_0x0b8f('0x14')],_0x14ea6d);_0x1ceb1b(_0x4f67e0['error'](0x1f4,_0x2102b4[_0x0b8f('0x14')]));});})[_0x0b8f('0x12')](function(_0x47d3f1){logger[_0x0b8f('0x13')]('CmHopperHandlePreviewRecallNotifications',_0x47d3f1[_0x0b8f('0x14')],_0x14ea6d);_0x1ceb1b(_0x4f67e0['error'](0x1f4,_0x47d3f1[_0x0b8f('0x14')]));});}else{_0x358daa(_0x399b5f);}});});};
\ No newline at end of file
+var _0x4ede=['options','where','attributes','limit','map','include','model','then','info','debug','stringify','error','ShowCmHopper','CmHopper','find','raw','catch','message','CreateCmHopper','create','update','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','UpdateCmHopper','DestroyCmHopper','destroy','sequelize','transaction','LOCK','UPDATE','CmContact','Contact','keys','User','Agent','name','voicePause','UserId','push','includes','all','GetContactDialer','dataValues','ContactId','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','MoveContactManagedDialer','CountReScheduled','literal','`scheduledat`\x20>=\x20','\x22%s\x22','format','\x20,\x201,\x20null','describe','order','GetContactRecallMe','GetCmHopperPreview','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','CmList','List','NOW()','lodash','moment','GetCmHopper','findAll'];(function(_0x5ad0c6,_0x56ee17){var _0x167958=function(_0x32dd81){while(--_0x32dd81){_0x5ad0c6['push'](_0x5ad0c6['shift']());}};_0x167958(++_0x56ee17);}(_0x4ede,0xda));var _0xe4ed=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4ede[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xe4ed('0x0'));var util=require('util');var moment=require(_0xe4ed('0x1'));var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('rpc');exports[_0xe4ed('0x2')]=function(_0x15b452){var _0x1b9b53=this;return new Promise(function(_0x28c6cb,_0x43033a){return db['CmHopper'][_0xe4ed('0x3')]({'raw':_0x15b452[_0xe4ed('0x4')]?_0x15b452[_0xe4ed('0x4')]['raw']===undefined?!![]:![]:!![],'where':_0x15b452['options']?_0x15b452[_0xe4ed('0x4')][_0xe4ed('0x5')]||null:null,'attributes':_0x15b452[_0xe4ed('0x4')]?_0x15b452[_0xe4ed('0x4')][_0xe4ed('0x6')]||null:null,'limit':_0x15b452[_0xe4ed('0x4')]?_0x15b452[_0xe4ed('0x4')][_0xe4ed('0x7')]||null:null,'include':_0x15b452[_0xe4ed('0x4')]?_0x15b452[_0xe4ed('0x4')]['include']?_[_0xe4ed('0x8')](_0x15b452[_0xe4ed('0x4')][_0xe4ed('0x9')],function(_0x1b9193){return{'model':db[_0x1b9193[_0xe4ed('0xa')]],'as':_0x1b9193['as'],'attributes':_0x1b9193[_0xe4ed('0x6')],'include':_0x1b9193[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x1b9193[_0xe4ed('0x9')],function(_0x560272){return{'model':db[_0x560272['model']],'as':_0x560272['as'],'attributes':_0x560272['attributes'],'include':_0x560272[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x560272[_0xe4ed('0x9')],function(_0x3c95ba){return{'model':db[_0x3c95ba['model']],'as':_0x3c95ba['as'],'attributes':_0x3c95ba[_0xe4ed('0x6')]};}):[]};}):[]};}):[]:[]})[_0xe4ed('0xb')](function(_0x5982ef){logger[_0xe4ed('0xc')](_0xe4ed('0x2'),_0x15b452);logger[_0xe4ed('0xd')](_0xe4ed('0x2'),_0x15b452,JSON[_0xe4ed('0xe')](_0x5982ef));_0x28c6cb(_0x5982ef);})['catch'](function(_0x1fd680){logger['error']('GetCmHopper',_0x1fd680['message'],_0x15b452);_0x43033a(_0x1b9b53[_0xe4ed('0xf')](0x1f4,_0x1fd680['message']));});});};exports[_0xe4ed('0x10')]=function(_0x27f67e){var _0x3e7865=this;return new Promise(function(_0x22225a,_0x3ea1d9){return db[_0xe4ed('0x11')][_0xe4ed('0x12')]({'raw':_0x27f67e[_0xe4ed('0x4')]?_0x27f67e[_0xe4ed('0x4')][_0xe4ed('0x13')]===undefined?!![]:![]:!![],'where':_0x27f67e[_0xe4ed('0x4')]?_0x27f67e['options'][_0xe4ed('0x5')]||null:null,'attributes':_0x27f67e[_0xe4ed('0x4')]?_0x27f67e[_0xe4ed('0x4')][_0xe4ed('0x6')]||null:null,'include':_0x27f67e[_0xe4ed('0x4')]?_0x27f67e[_0xe4ed('0x4')][_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x27f67e[_0xe4ed('0x4')]['include'],function(_0x490fee){return{'model':db[_0x490fee[_0xe4ed('0xa')]],'as':_0x490fee['as'],'attributes':_0x490fee['attributes'],'include':_0x490fee[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x490fee['include'],function(_0x117a1b){return{'model':db[_0x117a1b[_0xe4ed('0xa')]],'as':_0x117a1b['as'],'attributes':_0x117a1b[_0xe4ed('0x6')],'include':_0x117a1b[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x117a1b['include'],function(_0x40edda){return{'model':db[_0x40edda['model']],'as':_0x40edda['as'],'attributes':_0x40edda[_0xe4ed('0x6')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x539ec8){logger[_0xe4ed('0xc')]('ShowCmHopper',_0x27f67e);logger[_0xe4ed('0xd')](_0xe4ed('0x10'),_0x27f67e,JSON[_0xe4ed('0xe')](_0x539ec8));_0x22225a(_0x539ec8);})[_0xe4ed('0x14')](function(_0x5069a2){logger[_0xe4ed('0xf')]('ShowCmHopper',_0x5069a2[_0xe4ed('0x15')],_0x27f67e);_0x3ea1d9(_0x3e7865[_0xe4ed('0xf')](0x1f4,_0x5069a2[_0xe4ed('0x15')]));});});};exports[_0xe4ed('0x16')]=function(_0x32c27f){var _0x697707=this;return new Promise(function(_0x202650,_0x23075c){return db[_0xe4ed('0x11')][_0xe4ed('0x17')](_0x32c27f['body'],{'raw':_0x32c27f[_0xe4ed('0x4')]?_0x32c27f[_0xe4ed('0x4')][_0xe4ed('0x13')]===undefined?!![]:![]:!![]})[_0xe4ed('0xb')](function(_0x5b5571){logger['info'](_0xe4ed('0x16'),_0x32c27f);logger[_0xe4ed('0xd')](_0xe4ed('0x16'),_0x32c27f,JSON['stringify'](_0x5b5571));_0x202650(_0x5b5571);})[_0xe4ed('0x14')](function(_0x2e2839){logger[_0xe4ed('0xf')]('CreateCmHopper',_0x2e2839[_0xe4ed('0x15')],_0x32c27f);_0x23075c(_0x697707['error'](0x1f4,_0x2e2839[_0xe4ed('0x15')]));});});};exports['UpdateCmHopper']=function(_0x5a2540){var _0x467e3f=this;return new Promise(function(_0x56b636,_0x1da938){return db[_0xe4ed('0x11')][_0xe4ed('0x18')](_0x5a2540[_0xe4ed('0x19')],{'raw':_0x5a2540['options']?_0x5a2540[_0xe4ed('0x4')][_0xe4ed('0x13')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a2540[_0xe4ed('0x4')]?_0x5a2540['options'][_0xe4ed('0x5')]||null:null,'attributes':_0x5a2540[_0xe4ed('0x4')]?_0x5a2540[_0xe4ed('0x4')][_0xe4ed('0x6')]||null:null,'limit':_0x5a2540[_0xe4ed('0x4')]?_0x5a2540[_0xe4ed('0x4')][_0xe4ed('0x7')]||null:null})[_0xe4ed('0xb')](function(_0x30148c){logger['info']('UpdateCmHopper',_0x5a2540);logger[_0xe4ed('0xc')](_0xe4ed('0x1a'),JSON[_0xe4ed('0xe')](_0x5a2540[_0xe4ed('0x4')][_0xe4ed('0x5')]),_0x5a2540[_0xe4ed('0x19')][_0xe4ed('0x1b')]);logger['debug'](_0xe4ed('0x1c'),_0x5a2540,JSON[_0xe4ed('0xe')](_0x30148c));_0x56b636(_0x30148c);})[_0xe4ed('0x14')](function(_0x5803f1){logger[_0xe4ed('0xf')](_0xe4ed('0x1c'),_0x5803f1[_0xe4ed('0x15')],_0x5a2540);_0x1da938(_0x467e3f[_0xe4ed('0xf')](0x1f4,_0x5803f1[_0xe4ed('0x15')]));});});};exports[_0xe4ed('0x1d')]=function(_0x18359a){var _0x22d36f=this;return new Promise(function(_0x21b3dd,_0x28853a){return db['CmHopper'][_0xe4ed('0x1e')]({'where':_0x18359a[_0xe4ed('0x4')]?_0x18359a[_0xe4ed('0x4')][_0xe4ed('0x5')]||null:null})[_0xe4ed('0xb')](function(_0x44b834){logger['info'](_0xe4ed('0x1d'),_0x18359a);logger[_0xe4ed('0xd')](_0xe4ed('0x1d'),_0x18359a,JSON['stringify'](_0x44b834));_0x21b3dd(_0x44b834);})['catch'](function(_0x214b98){logger[_0xe4ed('0xf')]('DestroyCmHopper',_0x214b98[_0xe4ed('0x15')],_0x18359a);_0x28853a(_0x22d36f[_0xe4ed('0xf')](0x1f4,_0x214b98[_0xe4ed('0x15')]));});});};exports['GetContactDialer']=function(_0x1f5100){var _0x22d249=this;return new Promise(function(_0x369b96,_0x4ad34b){return db['CmContact']['describe']()[_0xe4ed('0xb')](function(_0x29975b){return db[_0xe4ed('0x1f')][_0xe4ed('0x20')](function(_0x1f5a95){return db[_0xe4ed('0x11')][_0xe4ed('0x3')]({'where':_0x1f5100[_0xe4ed('0x4')]?_0x1f5100['options'][_0xe4ed('0x5')]||null:null,'attributes':_0x1f5100[_0xe4ed('0x4')]?_0x1f5100['options']['attributes']||null:null,'limit':_0x1f5100[_0xe4ed('0x4')]?_0x1f5100[_0xe4ed('0x4')][_0xe4ed('0x7')]||null:null,'order':_0x1f5100['options']?_0x1f5100[_0xe4ed('0x4')]['order']||null:null,'transaction':_0x1f5a95,'lock':_0x1f5a95[_0xe4ed('0x21')][_0xe4ed('0x22')],'include':[{'model':db[_0xe4ed('0x23')],'as':_0xe4ed('0x24'),'attributes':_[_0xe4ed('0x25')](_0x29975b)},{'model':db[_0xe4ed('0x26')],'as':_0xe4ed('0x27'),'attributes':['id',_0xe4ed('0x28'),_0xe4ed('0x29')]}]})[_0xe4ed('0xb')](function(_0x190ef7){var _0x1d5271=[];var _0x5d8144=[];for(var _0x400831=0x0;_0x400831<_0x190ef7['length'];_0x400831+=0x1){var _0x2f175c=_0x190ef7[_0x400831][_0xe4ed('0x2a')];if(_0x2f175c===null){_0x1d5271[_0xe4ed('0x2b')](_0x190ef7[_0x400831]['update'](_0x1f5100[_0xe4ed('0x19')],{'transaction':_0x1f5a95}));}else if(!_0x5d8144[_0xe4ed('0x2c')](_0x2f175c)){_0x5d8144['push'](_0x2f175c);_0x1d5271[_0xe4ed('0x2b')](_0x190ef7[_0x400831]['update'](_0x1f5100[_0xe4ed('0x19')],{'transaction':_0x1f5a95}));}}return BPromise[_0xe4ed('0x2d')](_0x1d5271);});})[_0xe4ed('0xb')](function(_0xfab05b){logger['info'](_0xe4ed('0x2e'),_0x1f5100);if(_0xfab05b['length']>0x0){logger['info']('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0xfab05b[0x0]['dataValues']['id'],_0xfab05b[0x0][_0xe4ed('0x2f')][_0xe4ed('0x30')],_0xfab05b[0x0][_0xe4ed('0x2f')][_0xe4ed('0x1b')]);}logger[_0xe4ed('0xd')]('GetContactDialer',_0x1f5100,JSON[_0xe4ed('0xe')](_0xfab05b));_0x369b96(_0xfab05b);})[_0xe4ed('0x14')](function(_0x139c3a){logger[_0xe4ed('0xf')](_0xe4ed('0x2e'),_0x139c3a[_0xe4ed('0x15')],_0x1f5100);_0x4ad34b(_0x22d249[_0xe4ed('0xf')](0x1f4,_0x139c3a['message']));});});});};exports['MoveContactManagedDialer']=function(_0x452dd2){var _0x5e82d6=this;return new Promise(function(_0x59536b,_0x528596){return db['sequelize'][_0xe4ed('0x20')](function(_0x4e91b1){return db[_0xe4ed('0x31')][_0xe4ed('0x17')](_0x452dd2[_0xe4ed('0x19')],{'raw':_0x452dd2['options']?_0x452dd2[_0xe4ed('0x4')]['raw']===undefined?!![]:![]:!![],'transaction':_0x4e91b1})[_0xe4ed('0xb')](function(){logger[_0xe4ed('0xc')](_0xe4ed('0x32'),JSON[_0xe4ed('0xe')](_0x452dd2['options']['where']),_0x452dd2[_0xe4ed('0x4')][_0xe4ed('0x5')][_0xe4ed('0x1b')]);return db['CmHopper'][_0xe4ed('0x1e')]({'where':_0x452dd2[_0xe4ed('0x4')]?_0x452dd2['options'][_0xe4ed('0x5')]||null:null,'transaction':_0x4e91b1});});})[_0xe4ed('0xb')](function(_0x3ddbc7){logger[_0xe4ed('0xc')](_0xe4ed('0x33'),_0x452dd2);logger[_0xe4ed('0xd')](_0xe4ed('0x33'),_0x452dd2,JSON[_0xe4ed('0xe')](_0x3ddbc7));_0x59536b(_0x3ddbc7);})[_0xe4ed('0x14')](function(_0x3e6e4c){logger[_0xe4ed('0xf')](_0xe4ed('0x33'),_0x3e6e4c[_0xe4ed('0x15')],_0x452dd2);_0x528596(_0x5e82d6[_0xe4ed('0xf')](0x1f4,_0x3e6e4c[_0xe4ed('0x15')]));});});};exports[_0xe4ed('0x34')]=function(_0xed8d43){var _0x300d80=this;return new Promise(function(_0x1b6320,_0x257380){return db['CmHopper'][_0xe4ed('0x3')]({'raw':_0xed8d43[_0xe4ed('0x4')]?_0xed8d43['options']['raw']===undefined?!![]:![]:!![],'where':_0xed8d43[_0xe4ed('0x4')]?_0xed8d43[_0xe4ed('0x4')]['where']||null:null,'attributes':[[db[_0xe4ed('0x1f')]['fn']('COUNT',db[_0xe4ed('0x1f')]['fn']('IF',db[_0xe4ed('0x1f')][_0xe4ed('0x35')](_0xe4ed('0x36')+util['format'](_0xe4ed('0x37'),moment()[_0xe4ed('0x38')]('YYYY-MM-DD\x20HH:mm:ss'))+_0xe4ed('0x39')))),'contactsRescheduled']]})['then'](function(_0x275186){logger[_0xe4ed('0xc')](_0xe4ed('0x34'),_0xed8d43);logger[_0xe4ed('0xd')](_0xe4ed('0x34'),_0xed8d43,JSON[_0xe4ed('0xe')](_0x275186));_0x1b6320(_0x275186);})[_0xe4ed('0x14')](function(_0x2926d2){logger[_0xe4ed('0xf')](_0xe4ed('0x34'),_0x2926d2['message'],_0xed8d43);_0x257380(_0x300d80[_0xe4ed('0xf')](0x1f4,_0x2926d2[_0xe4ed('0x15')]));});});};exports['GetContactRecallMe']=function(_0x554f1e){var _0x21a1e9=this;return new Promise(function(_0x3d613e,_0x2a19f8){return db[_0xe4ed('0x23')][_0xe4ed('0x3a')]()[_0xe4ed('0xb')](function(){return db[_0xe4ed('0x1f')][_0xe4ed('0x20')](function(_0x36c6b2){return db[_0xe4ed('0x11')][_0xe4ed('0x3')]({'where':_0x554f1e[_0xe4ed('0x4')]?_0x554f1e[_0xe4ed('0x4')][_0xe4ed('0x5')]||null:null,'attributes':_0x554f1e[_0xe4ed('0x4')]?_0x554f1e[_0xe4ed('0x4')][_0xe4ed('0x6')]||null:null,'limit':0x1,'order':_0x554f1e[_0xe4ed('0x4')]?_0x554f1e[_0xe4ed('0x4')][_0xe4ed('0x3b')]||null:null,'group':db[_0xe4ed('0x11')][_0xe4ed('0x2a')],'transaction':_0x36c6b2,'lock':_0x36c6b2[_0xe4ed('0x21')][_0xe4ed('0x22')],'include':_0x554f1e[_0xe4ed('0x4')]?_0x554f1e[_0xe4ed('0x4')][_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x554f1e['options'][_0xe4ed('0x9')],function(_0x41e474){return{'model':db[_0x41e474[_0xe4ed('0xa')]],'as':_0x41e474['as'],'attributes':_0x41e474[_0xe4ed('0x6')],'include':_0x41e474[_0xe4ed('0x9')]?_['map'](_0x41e474['include'],function(_0x2a55e2){return{'model':db[_0x2a55e2[_0xe4ed('0xa')]],'as':_0x2a55e2['as'],'attributes':_0x2a55e2[_0xe4ed('0x6')],'include':_0x2a55e2[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x2a55e2[_0xe4ed('0x9')],function(_0x1f1fac){return{'model':db[_0x1f1fac[_0xe4ed('0xa')]],'as':_0x1f1fac['as'],'attributes':_0x1f1fac[_0xe4ed('0x6')]};}):[]};}):[]};}):[]:[]})[_0xe4ed('0xb')](function(_0x2c2ed1){var _0x26bd0c=[];for(var _0x3900b2=0x0;_0x3900b2<_0x2c2ed1['length'];_0x3900b2+=0x1){_0x26bd0c[_0xe4ed('0x2b')](_0x2c2ed1[_0x3900b2][_0xe4ed('0x18')](_0x554f1e[_0xe4ed('0x19')],{'transaction':_0x36c6b2}));}return BPromise[_0xe4ed('0x2d')](_0x26bd0c);});})[_0xe4ed('0xb')](function(_0x217340){logger['info'](_0xe4ed('0x3c'),_0x554f1e);logger[_0xe4ed('0xd')](_0xe4ed('0x3c'),_0x554f1e,JSON[_0xe4ed('0xe')](_0x217340));_0x3d613e(_0x217340);})[_0xe4ed('0x14')](function(_0x393805){logger[_0xe4ed('0xf')](_0xe4ed('0x3c'),_0x393805['message'],_0x554f1e);_0x2a19f8(_0x21a1e9[_0xe4ed('0xf')](0x1f4,_0x393805[_0xe4ed('0x15')]));});});});};exports[_0xe4ed('0x3d')]=function(_0x14c1ac){var _0x50599e=this;return new Promise(function(_0xfbb5ef,_0x210d74){db[_0xe4ed('0x23')][_0xe4ed('0x3a')]()[_0xe4ed('0xb')](function(_0x3e169c){return db[_0xe4ed('0x11')][_0xe4ed('0x3')]({'raw':_0x14c1ac[_0xe4ed('0x4')]?_0x14c1ac[_0xe4ed('0x4')]['raw']===undefined?!![]:![]:!![],'where':_0x14c1ac[_0xe4ed('0x4')]?_0x14c1ac[_0xe4ed('0x4')]['where']||null:null,'attributes':_0x14c1ac[_0xe4ed('0x4')]?_0x14c1ac['options']['attributes']||null:null,'limit':_0x14c1ac[_0xe4ed('0x4')]?_0x14c1ac[_0xe4ed('0x4')][_0xe4ed('0x7')]||null:null,'include':_0x14c1ac[_0xe4ed('0x4')]?_0x14c1ac['options'][_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x14c1ac[_0xe4ed('0x4')][_0xe4ed('0x9')],function(_0x3719f7){return{'model':db[_0x3719f7[_0xe4ed('0xa')]],'as':_0x3719f7['as'],'attributes':_0x3719f7['as']===_0xe4ed('0x24')?_[_0xe4ed('0x25')](_0x3e169c):_0x3719f7[_0xe4ed('0x6')],'include':_0x3719f7[_0xe4ed('0x9')]?_['map'](_0x3719f7[_0xe4ed('0x9')],function(_0x491c32){return{'model':db[_0x491c32[_0xe4ed('0xa')]],'as':_0x491c32['as'],'attributes':_0x491c32[_0xe4ed('0x6')],'include':_0x491c32[_0xe4ed('0x9')]?_[_0xe4ed('0x8')](_0x491c32[_0xe4ed('0x9')],function(_0x3b02d8){return{'model':db[_0x3b02d8[_0xe4ed('0xa')]],'as':_0x3b02d8['as'],'attributes':_0x3b02d8['attributes']};}):[]};}):[]};}):[]:[]})[_0xe4ed('0xb')](function(_0x451998){logger[_0xe4ed('0xc')](_0xe4ed('0x2'),_0x14c1ac);logger[_0xe4ed('0xd')](_0xe4ed('0x2'),_0x14c1ac,JSON[_0xe4ed('0xe')](_0x451998));_0xfbb5ef(_0x451998);})['catch'](function(_0x1c33c6){logger['error'](_0xe4ed('0x2'),_0x1c33c6[_0xe4ed('0x15')],_0x14c1ac);_0x210d74(_0x50599e[_0xe4ed('0xf')](0x1f4,_0x1c33c6[_0xe4ed('0x15')]));});});});};exports['GetContactByPhone']=function(_0x5a9fdf){var _0x38d385=this;return new Promise(function(_0x1d3c0c,_0x100c96){return db[_0xe4ed('0x23')][_0xe4ed('0x3e')]({'raw':!![],'where':{'phone':_0x5a9fdf[_0xe4ed('0x4')][_0xe4ed('0x5')][_0xe4ed('0x3f')]},'attributes':['id',_0xe4ed('0x40')],'order':[['id',_0xe4ed('0x41')]]})[_0xe4ed('0xb')](function(_0x3a02e5){logger[_0xe4ed('0xc')](_0xe4ed('0x42'),_0x5a9fdf);logger[_0xe4ed('0xd')]('getContactByPhone',_0x5a9fdf,JSON[_0xe4ed('0xe')](_0x3a02e5));_0x1d3c0c(_0x3a02e5);})[_0xe4ed('0x14')](function(_0x3423f0){logger[_0xe4ed('0xf')]('getContactByPhone',_0x3423f0[_0xe4ed('0x15')],_0x5a9fdf);_0x100c96(_0x38d385[_0xe4ed('0xf')](0x1f4,_0x3423f0[_0xe4ed('0x15')]));});});};exports[_0xe4ed('0x43')]=function(_0x3b6dbd){var _0x52a52d=this;return new Promise(function(_0x2f5d64,_0x9a929e){return db[_0xe4ed('0x1f')][_0xe4ed('0x20')](function(_0x324898){var _0x530a7a=_0x3b6dbd[_0xe4ed('0x4')]&&_0x3b6dbd[_0xe4ed('0x4')][_0xe4ed('0x5')]?_0x3b6dbd['options'][_0xe4ed('0x5')]:{};return db['CmHopper'][_0xe4ed('0x18')](_0x3b6dbd[_0xe4ed('0x19')],{'where':_0x530a7a,'transaction':_0x324898})[_0xe4ed('0xb')](function(_0x228457){logger[_0xe4ed('0xc')](_0xe4ed('0x43'),_0x3b6dbd);logger[_0xe4ed('0xd')]('ResetActiveCalls',_0x3b6dbd,JSON[_0xe4ed('0xe')](_0x228457));_0x2f5d64(_0x228457);})['catch'](function(_0x582790){logger[_0xe4ed('0xf')](_0xe4ed('0x43'),_0x582790[_0xe4ed('0x15')],_0x3b6dbd);_0x9a929e(_0x52a52d['error'](0x1f4,_0x582790[_0xe4ed('0x15')]));});});});};exports[_0xe4ed('0x44')]=function(_0xfa09c6){var _0x114c36=this;var _0x2afe9=_0xfa09c6[_0xe4ed('0x19')]['where'][_0xe4ed('0x45')];var _0x2e0e64=_0xfa09c6[_0xe4ed('0x19')][_0xe4ed('0x5')][_0xe4ed('0x46')];var _0x52e181=_0xfa09c6['body'][_0xe4ed('0x5')]['availableAgentsIds'];return new Promise(function(_0x112591,_0x5c18d5){return db['CmHopper'][_0xe4ed('0x3')]({'where':{'voiceQueueId':{'$in':_0x2afe9},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xe4ed('0x1f')][_0xe4ed('0x35')]('NOW()\x20+\x20INTERVAL\x20'+_0x2e0e64+'\x20MINUTE'),'$gt':db[_0xe4ed('0x1f')]['literal']('NOW()')}},'UserId':{'$in':_0x52e181}},'include':[{'model':db[_0xe4ed('0x23')],'as':_0xe4ed('0x24')},{'model':db[_0xe4ed('0x26')],'as':_0xe4ed('0x27'),'attributes':['id','name',_0xe4ed('0x29')]},{'model':db[_0xe4ed('0x47')],'as':_0xe4ed('0x48')}]})[_0xe4ed('0xb')](function(_0x452da6){if(_0x452da6['length']>0x0){return db[_0xe4ed('0x1f')][_0xe4ed('0x20')](function(_0x1b4201){return db[_0xe4ed('0x11')]['update']({'recallmeNotifiedDate':db[_0xe4ed('0x1f')][_0xe4ed('0x35')](_0xe4ed('0x49'))},{'where':{'id':{'$in':_[_0xe4ed('0x8')](_0x452da6,'id')}},'transaction':_0x1b4201})[_0xe4ed('0xb')](function(){_0x112591(_0x452da6);})['catch'](function(_0x1ead0a){logger['error']('CmHopperHandlePreviewRecallNotifications',_0x1ead0a[_0xe4ed('0x15')],_0xfa09c6);_0x5c18d5(_0x114c36[_0xe4ed('0xf')](0x1f4,_0x1ead0a[_0xe4ed('0x15')]));});})[_0xe4ed('0x14')](function(_0x201df3){logger['error'](_0xe4ed('0x44'),_0x201df3['message'],_0xfa09c6);_0x5c18d5(_0x114c36['error'](0x1f4,_0x201df3['message']));});}else{_0x112591(_0x452da6);}});});};
\ No newline at end of file
index 3d0b0f6..669e429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ab6=['isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','/:id/previewrecall','post','getPreview','/timezone','getTimezone','update','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller','get'];(function(_0x55a777,_0x2c95f7){var _0x8ca6a1=function(_0x3cc973){while(--_0x3cc973){_0x55a777['push'](_0x55a777['shift']());}};_0x8ca6a1(++_0x2c95f7);}(_0x1ab6,0x73));var _0x61ab=function(_0x2ac7b9,_0x295272){_0x2ac7b9=_0x2ac7b9-0x0;var _0x51375d=_0x1ab6[_0x2ac7b9];return _0x51375d;};'use strict';var express=require(_0x61ab('0x0'));var router=express[_0x61ab('0x1')]();var auth=require(_0x61ab('0x2'));var controller=require(_0x61ab('0x3'));router[_0x61ab('0x4')]('/',auth[_0x61ab('0x5')](),controller[_0x61ab('0x6')]);router['get'](_0x61ab('0x7'),auth['isAuthenticated'](),controller[_0x61ab('0x8')]);router[_0x61ab('0x4')](_0x61ab('0x9'),auth['isAuthenticated'](),controller[_0x61ab('0xa')]);router[_0x61ab('0x4')]('/timezones',auth[_0x61ab('0x5')](),controller['getTimezones']);router['get'](_0x61ab('0xb'),auth[_0x61ab('0x5')](),controller['show']);router['get'](_0x61ab('0xc'),auth[_0x61ab('0x5')](),controller['getPreviewRecall']);router[_0x61ab('0xd')]('/',auth[_0x61ab('0x5')](),controller['create']);router[_0x61ab('0xd')]('/preview',auth[_0x61ab('0x5')](),controller[_0x61ab('0xe')]);router[_0x61ab('0xd')](_0x61ab('0xf'),auth[_0x61ab('0x5')](),controller[_0x61ab('0x10')]);router['put'](_0x61ab('0xb'),auth[_0x61ab('0x5')](),controller[_0x61ab('0x11')]);router['delete'](_0x61ab('0xb'),auth['isAuthenticated'](),controller[_0x61ab('0x12')]);module[_0x61ab('0x13')]=router;
\ No newline at end of file
+var _0x300d=['update','delete','express','Router','../../components/auth/service','get','/describe','isAuthenticated','describe','/opencontacts','/timezones','getTimezones','/:id','/:id/previewrecall','getPreviewRecall','post','create','/preview','getPreview','/timezone','getTimezone'];(function(_0x2e454d,_0x1a7df5){var _0x5b17e5=function(_0x1b6f0e){while(--_0x1b6f0e){_0x2e454d['push'](_0x2e454d['shift']());}};_0x5b17e5(++_0x1a7df5);}(_0x300d,0x80));var _0xd300=function(_0x435058,_0x4e4d67){_0x435058=_0x435058-0x0;var _0x1fb8b1=_0x300d[_0x435058];return _0x1fb8b1;};'use strict';var express=require(_0xd300('0x0'));var router=express[_0xd300('0x1')]();var auth=require(_0xd300('0x2'));var controller=require('./cmHopper.controller');router[_0xd300('0x3')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd300('0x4'),auth[_0xd300('0x5')](),controller[_0xd300('0x6')]);router[_0xd300('0x3')](_0xd300('0x7'),auth[_0xd300('0x5')](),controller['getOpenContacts']);router[_0xd300('0x3')](_0xd300('0x8'),auth[_0xd300('0x5')](),controller[_0xd300('0x9')]);router['get'](_0xd300('0xa'),auth[_0xd300('0x5')](),controller['show']);router[_0xd300('0x3')](_0xd300('0xb'),auth[_0xd300('0x5')](),controller[_0xd300('0xc')]);router[_0xd300('0xd')]('/',auth[_0xd300('0x5')](),controller[_0xd300('0xe')]);router['post'](_0xd300('0xf'),auth[_0xd300('0x5')](),controller[_0xd300('0x10')]);router[_0xd300('0xd')](_0xd300('0x11'),auth[_0xd300('0x5')](),controller[_0xd300('0x12')]);router['put'](_0xd300('0xa'),auth[_0xd300('0x5')](),controller[_0xd300('0x13')]);router[_0xd300('0x14')](_0xd300('0xa'),auth[_0xd300('0x5')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5aa88eb..09cc5f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86c=['exports','INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3b986a,_0x148398){var _0x386a50=function(_0x7f1879){while(--_0x7f1879){_0x3b986a['push'](_0x3b986a['shift']());}};_0x386a50(++_0x148398);}(_0xd86c,0x198));var _0xcd86=function(_0x1347f8,_0x233feb){_0x1347f8=_0x1347f8-0x0;var _0x218368=_0xd86c[_0x1347f8];return _0x218368;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xcd86('0x0')]={'CmHopperId':{'type':Sequelize[_0xcd86('0x1')]},'phone':{'type':Sequelize[_0xcd86('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xcd86('0x3')],'defaultValue':moment()[_0xcd86('0x4')](_0xcd86('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xcd86('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2baa=['STRING','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','moment','sequelize','exports'];(function(_0x260b48,_0x117977){var _0x3f730b=function(_0x7a1e53){while(--_0x7a1e53){_0x260b48['push'](_0x260b48['shift']());}};_0x3f730b(++_0x117977);}(_0x2baa,0xcf));var _0xa2ba=function(_0x47e772,_0x56873b){_0x47e772=_0x47e772-0x0;var _0x13678a=_0x2baa[_0x47e772];return _0x13678a;};'use strict';var moment=require(_0xa2ba('0x0'));var Sequelize=require(_0xa2ba('0x1'));module[_0xa2ba('0x2')]={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0xa2ba('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0xa2ba('0x4')](_0xa2ba('0x5'))},'countbusyretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa2ba('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 2f3780e..2737f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9750=['Content-Range','json','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','include','findAll','catch','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','mustache','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set'];(function(_0x1c8a27,_0x5e8d84){var _0x25d3a7=function(_0x7bb4e1){while(--_0x7bb4e1){_0x1c8a27['push'](_0x1c8a27['shift']());}};_0x25d3a7(++_0x5e8d84);}(_0x9750,0x125));var _0x0975=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x9750[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require(_0x0975('0x0'));var rimraf=require(_0x0975('0x1'));var zipdir=require(_0x0975('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0975('0x3'));var moment=require(_0x0975('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0975('0x5'));var util=require('util');var path=require(_0x0975('0x6'));var sox=require('sox');var csv=require(_0x0975('0x7'));var ejs=require(_0x0975('0x8'));var fs=require('fs');var fs_extra=require(_0x0975('0x9'));var _=require(_0x0975('0xa'));var squel=require(_0x0975('0xb'));var crypto=require(_0x0975('0xc'));var jsforce=require(_0x0975('0xd'));var deskjs=require(_0x0975('0xe'));var toCsv=require(_0x0975('0x7'));var querystring=require(_0x0975('0xf'));var Papa=require(_0x0975('0x10'));var Redis=require(_0x0975('0x11'));var authService=require(_0x0975('0x12'));var qs=require(_0x0975('0x13'));var as=require(_0x0975('0x14'));var hardwareService=require(_0x0975('0x15'));var logger=require(_0x0975('0x16'))('api');var utils=require(_0x0975('0x17'));var config=require(_0x0975('0x18'));var licenseUtil=require(_0x0975('0x19'));var db=require(_0x0975('0x1a'))['db'];function respondWithStatusCode(_0x2ad3c8,_0x5355b2){_0x5355b2=_0x5355b2||0xcc;return function(_0x3cc5fa){if(_0x3cc5fa){return _0x2ad3c8[_0x0975('0x1b')](_0x5355b2);}return _0x2ad3c8[_0x0975('0x1c')](_0x5355b2)[_0x0975('0x1d')]();};}function respondWithResult(_0x461c57,_0x17842d){_0x17842d=_0x17842d||0xc8;return function(_0xe223ac){if(_0xe223ac){return _0x461c57[_0x0975('0x1c')](_0x17842d)['json'](_0xe223ac);}};}function respondWithFilteredResult(_0x556950,_0xfc1322){return function(_0x4f91ed){if(_0x4f91ed){var _0x3fd870=typeof _0xfc1322[_0x0975('0x1e')]===_0x0975('0x1f')&&typeof _0xfc1322[_0x0975('0x20')]===_0x0975('0x1f');var _0x13b6ef=_0x4f91ed[_0x0975('0x21')];var _0x126ce6=_0x3fd870?0x0:_0xfc1322[_0x0975('0x1e')];var _0x1b1ff7=_0x3fd870?_0x4f91ed['count']:_0xfc1322[_0x0975('0x1e')]+_0xfc1322[_0x0975('0x20')];var _0x2852ae;if(_0x1b1ff7>=_0x13b6ef){_0x1b1ff7=_0x13b6ef;_0x2852ae=0xc8;}else{_0x2852ae=0xce;}_0x556950['status'](_0x2852ae);return _0x556950[_0x0975('0x22')](_0x0975('0x23'),_0x126ce6+'-'+_0x1b1ff7+'/'+_0x13b6ef)[_0x0975('0x24')](_0x4f91ed);}return null;};}function patchUpdates(_0x469fe0){return function(_0x5b69f5){try{jsonpatch[_0x0975('0x25')](_0x5b69f5,_0x469fe0,!![]);}catch(_0x237d2d){return BPromise[_0x0975('0x26')](_0x237d2d);}return _0x5b69f5['save']();};}function saveUpdates(_0x17e49b,_0xcf3210){return function(_0x34e167){if(_0x34e167){return _0x34e167[_0x0975('0x27')](_0x17e49b)[_0x0975('0x28')](function(_0x12d949){return _0x12d949;});}return null;};}function removeEntity(_0x44f806,_0x108b0f){return function(_0x46a619){if(_0x46a619){return _0x46a619[_0x0975('0x29')]()[_0x0975('0x28')](function(){var _0x3769ea=_0x46a619[_0x0975('0x2a')]({'plain':!![]});var _0x1cbbfc='CmHopperAdditionalPhones';return db[_0x0975('0x2b')][_0x0975('0x29')]({'where':{'type':_0x1cbbfc,'resourceId':_0x3769ea['id']}})['then'](function(){return _0x46a619;});})[_0x0975('0x28')](function(){_0x44f806['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x30c1ed,_0x4b25f8){return function(_0x1244d5){if(!_0x1244d5){_0x30c1ed[_0x0975('0x1b')](0x194);}return _0x1244d5;};}function handleError(_0x18d6a1,_0x4f9d59){_0x4f9d59=_0x4f9d59||0x1f4;return function(_0x19ce58){logger['error'](_0x19ce58[_0x0975('0x2c')]);if(_0x19ce58[_0x0975('0x2d')]){delete _0x19ce58[_0x0975('0x2d')];}_0x18d6a1['status'](_0x4f9d59)[_0x0975('0x2e')](_0x19ce58);};}exports[_0x0975('0x2f')]=function(_0x488cdc,_0x2f448e){var _0x57e116={},_0x26a33a={},_0x17f593={'count':0x0,'rows':[]};var _0x24d029=_[_0x0975('0x30')](db[_0x0975('0x31')][_0x0975('0x32')],function(_0x2b92db){return{'name':_0x2b92db[_0x0975('0x33')],'type':_0x2b92db[_0x0975('0x34')][_0x0975('0x35')]};});_0x26a33a[_0x0975('0x36')]=_[_0x0975('0x30')](_0x24d029,_0x0975('0x2d'));_0x26a33a[_0x0975('0x37')]=_[_0x0975('0x38')](_0x488cdc['query']);_0x26a33a[_0x0975('0x39')]=_[_0x0975('0x3a')](_0x26a33a[_0x0975('0x36')],_0x26a33a['query']);_0x57e116[_0x0975('0x3b')]=_[_0x0975('0x3a')](_0x26a33a[_0x0975('0x36')],qs[_0x0975('0x3c')](_0x488cdc['query'][_0x0975('0x3c')]));_0x57e116['attributes']=_0x57e116['attributes'][_0x0975('0x3d')]?_0x57e116[_0x0975('0x3b')]:_0x26a33a['model'];if(!_0x488cdc[_0x0975('0x37')][_0x0975('0x3e')](_0x0975('0x3f'))){_0x57e116[_0x0975('0x20')]=qs['limit'](_0x488cdc[_0x0975('0x37')][_0x0975('0x20')]);_0x57e116[_0x0975('0x1e')]=qs[_0x0975('0x1e')](_0x488cdc[_0x0975('0x37')][_0x0975('0x1e')]);}_0x57e116[_0x0975('0x40')]=qs[_0x0975('0x41')](_0x488cdc[_0x0975('0x37')][_0x0975('0x41')]);_0x57e116['where']=qs[_0x0975('0x39')](_['pick'](_0x488cdc[_0x0975('0x37')],_0x26a33a[_0x0975('0x39')]),_0x24d029);if(_0x488cdc[_0x0975('0x37')][_0x0975('0x42')]){_0x57e116[_0x0975('0x43')]=_[_0x0975('0x44')](_0x57e116['where'],{'$or':_[_0x0975('0x30')](_0x24d029,function(_0x2f5564){if(_0x2f5564[_0x0975('0x34')]!==_0x0975('0x45')){var _0x3a8a33={};_0x3a8a33[_0x2f5564[_0x0975('0x2d')]]={'$like':'%'+_0x488cdc['query']['filter']+'%'};return _0x3a8a33;}})});}_0x57e116=_[_0x0975('0x44')]({},_0x57e116,_0x488cdc['options']);var _0x37f777={'where':_0x57e116[_0x0975('0x43')]};return db[_0x0975('0x31')][_0x0975('0x21')](_0x37f777)[_0x0975('0x28')](function(_0x11b311){_0x17f593[_0x0975('0x21')]=_0x11b311;if(_0x488cdc[_0x0975('0x37')]['includeAll']){_0x57e116[_0x0975('0x46')]=[{'all':!![]}];}return db[_0x0975('0x31')][_0x0975('0x47')](_0x57e116);})[_0x0975('0x28')](function(_0x58cee9){_0x17f593['rows']=_0x58cee9;return _0x17f593;})['then'](respondWithFilteredResult(_0x2f448e,_0x57e116))[_0x0975('0x48')](handleError(_0x2f448e,null));};exports['show']=function(_0x54b45a,_0x408197){var _0xb4e478={'raw':!![],'where':{'id':_0x54b45a[_0x0975('0x49')]['id']}},_0x13433e={};_0x13433e['model']=_[_0x0975('0x38')](db[_0x0975('0x31')][_0x0975('0x32')]);_0x13433e[_0x0975('0x37')]=_[_0x0975('0x38')](_0x54b45a[_0x0975('0x37')]);_0x13433e[_0x0975('0x39')]=_['intersection'](_0x13433e[_0x0975('0x36')],_0x13433e[_0x0975('0x37')]);_0xb4e478[_0x0975('0x3b')]=_[_0x0975('0x3a')](_0x13433e[_0x0975('0x36')],qs[_0x0975('0x3c')](_0x54b45a[_0x0975('0x37')][_0x0975('0x3c')]));_0xb4e478[_0x0975('0x3b')]=_0xb4e478[_0x0975('0x3b')][_0x0975('0x3d')]?_0xb4e478[_0x0975('0x3b')]:_0x13433e[_0x0975('0x36')];if(_0x54b45a[_0x0975('0x37')]['includeAll']){_0xb4e478[_0x0975('0x46')]=[{'all':!![]}];}_0xb4e478=_[_0x0975('0x44')]({},_0xb4e478,_0x54b45a[_0x0975('0x4a')]);return db[_0x0975('0x31')][_0x0975('0x4b')](_0xb4e478)[_0x0975('0x28')](handleEntityNotFound(_0x408197,null))['then'](respondWithResult(_0x408197,null))[_0x0975('0x48')](handleError(_0x408197,null));};exports['create']=function(_0x2b27bb,_0x1724aa){return db[_0x0975('0x31')][_0x0975('0x4c')](_0x2b27bb[_0x0975('0x4d')],{})['then'](function(_0x2c43a4){var _0x33d43e=_0x2b27bb[_0x0975('0x4e')][_0x0975('0x2a')]({'plain':!![]});if(!_0x33d43e)throw new Error(_0x0975('0x4f'));if(_0x33d43e[_0x0975('0x50')]==='user'){var _0x1e339c=_0x2c43a4[_0x0975('0x2a')]({'plain':!![]});var _0x12e4c3='CmHopperAdditionalPhones';return db['UserProfileSection'][_0x0975('0x4b')]({'where':{'name':_0x12e4c3,'userProfileId':_0x33d43e['userProfileId']},'raw':!![]})[_0x0975('0x28')](function(_0x1899de){if(_0x1899de&&_0x1899de['autoAssociation']===0x0){return db['UserProfileResource'][_0x0975('0x4c')]({'name':_0x1e339c[_0x0975('0x2d')],'resourceId':_0x1e339c['id'],'type':_0x1899de[_0x0975('0x2d')],'sectionId':_0x1899de['id']},{})['then'](function(){return _0x2c43a4;});}else{return _0x2c43a4;}})[_0x0975('0x48')](function(_0x417041){logger['error'](_0x0975('0x51'),_0x417041);throw _0x417041;});}return _0x2c43a4;})['then'](respondWithResult(_0x1724aa,0xc9))['catch'](handleError(_0x1724aa,null));};exports[_0x0975('0x27')]=function(_0x3d6df0,_0x1f7f81){if(_0x3d6df0[_0x0975('0x4d')]['id']){delete _0x3d6df0['body']['id'];}return db['CmHopperAdditionalPhone'][_0x0975('0x4b')]({'where':{'id':_0x3d6df0['params']['id']}})['then'](handleEntityNotFound(_0x1f7f81,null))[_0x0975('0x28')](saveUpdates(_0x3d6df0[_0x0975('0x4d')],null))[_0x0975('0x28')](respondWithResult(_0x1f7f81,null))[_0x0975('0x48')](handleError(_0x1f7f81,null));};exports[_0x0975('0x29')]=function(_0x7e0002,_0x2ad673){return db[_0x0975('0x31')]['find']({'where':{'id':_0x7e0002[_0x0975('0x49')]['id']}})[_0x0975('0x28')](handleEntityNotFound(_0x2ad673,null))[_0x0975('0x28')](removeEntity(_0x2ad673,null))['catch'](handleError(_0x2ad673,null));};
\ No newline at end of file
+var _0x9785=['get','CmHopperAdditionalPhones','UserProfileResource','destroy','error','name','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','params','includeAll','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then'];(function(_0x536068,_0x3de52c){var _0x4a5db2=function(_0x1a8091){while(--_0x1a8091){_0x536068['push'](_0x536068['shift']());}};_0x4a5db2(++_0x3de52c);}(_0x9785,0xd5));var _0x5978=function(_0x18b5e8,_0x51e875){_0x18b5e8=_0x18b5e8-0x0;var _0x25baed=_0x9785[_0x18b5e8];return _0x25baed;};'use strict';var emlformat=require(_0x5978('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5978('0x1'));var jsonpatch=require(_0x5978('0x2'));var rp=require(_0x5978('0x3'));var moment=require(_0x5978('0x4'));var BPromise=require(_0x5978('0x5'));var Mustache=require('mustache');var util=require(_0x5978('0x6'));var path=require('path');var sox=require(_0x5978('0x7'));var csv=require(_0x5978('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5978('0x9'));var _=require(_0x5978('0xa'));var squel=require(_0x5978('0xb'));var crypto=require(_0x5978('0xc'));var jsforce=require(_0x5978('0xd'));var deskjs=require(_0x5978('0xe'));var toCsv=require(_0x5978('0x8'));var querystring=require('querystring');var Papa=require(_0x5978('0xf'));var Redis=require(_0x5978('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5978('0x11'));var as=require(_0x5978('0x12'));var hardwareService=require(_0x5978('0x13'));var logger=require(_0x5978('0x14'))('api');var utils=require(_0x5978('0x15'));var config=require(_0x5978('0x16'));var licenseUtil=require(_0x5978('0x17'));var db=require(_0x5978('0x18'))['db'];function respondWithStatusCode(_0x39a744,_0x3eec76){_0x3eec76=_0x3eec76||0xcc;return function(_0x34443c){if(_0x34443c){return _0x39a744[_0x5978('0x19')](_0x3eec76);}return _0x39a744[_0x5978('0x1a')](_0x3eec76)[_0x5978('0x1b')]();};}function respondWithResult(_0x12a054,_0x4a2daa){_0x4a2daa=_0x4a2daa||0xc8;return function(_0x281eef){if(_0x281eef){return _0x12a054[_0x5978('0x1a')](_0x4a2daa)[_0x5978('0x1c')](_0x281eef);}};}function respondWithFilteredResult(_0x1d87c2,_0x221bb2){return function(_0x54acfb){if(_0x54acfb){var _0x4b26c5=typeof _0x221bb2[_0x5978('0x1d')]===_0x5978('0x1e')&&typeof _0x221bb2[_0x5978('0x1f')]==='undefined';var _0x784b47=_0x54acfb[_0x5978('0x20')];var _0x37e226=_0x4b26c5?0x0:_0x221bb2[_0x5978('0x1d')];var _0x4ba735=_0x4b26c5?_0x54acfb[_0x5978('0x20')]:_0x221bb2['offset']+_0x221bb2[_0x5978('0x1f')];var _0x2d83ec;if(_0x4ba735>=_0x784b47){_0x4ba735=_0x784b47;_0x2d83ec=0xc8;}else{_0x2d83ec=0xce;}_0x1d87c2[_0x5978('0x1a')](_0x2d83ec);return _0x1d87c2['set'](_0x5978('0x21'),_0x37e226+'-'+_0x4ba735+'/'+_0x784b47)[_0x5978('0x1c')](_0x54acfb);}return null;};}function patchUpdates(_0x4960aa){return function(_0x351df5){try{jsonpatch[_0x5978('0x22')](_0x351df5,_0x4960aa,!![]);}catch(_0x206ba9){return BPromise[_0x5978('0x23')](_0x206ba9);}return _0x351df5[_0x5978('0x24')]();};}function saveUpdates(_0x2686b5,_0x9ab00a){return function(_0x4f5dd2){if(_0x4f5dd2){return _0x4f5dd2[_0x5978('0x25')](_0x2686b5)[_0x5978('0x26')](function(_0x42e50e){return _0x42e50e;});}return null;};}function removeEntity(_0x483206,_0x279071){return function(_0x529a92){if(_0x529a92){return _0x529a92['destroy']()[_0x5978('0x26')](function(){var _0x1c2896=_0x529a92[_0x5978('0x27')]({'plain':!![]});var _0x4b8771=_0x5978('0x28');return db[_0x5978('0x29')][_0x5978('0x2a')]({'where':{'type':_0x4b8771,'resourceId':_0x1c2896['id']}})[_0x5978('0x26')](function(){return _0x529a92;});})[_0x5978('0x26')](function(){_0x483206[_0x5978('0x1a')](0xcc)[_0x5978('0x1b')]();});}};}function handleEntityNotFound(_0x21cb3b,_0x523c45){return function(_0x56b7f5){if(!_0x56b7f5){_0x21cb3b[_0x5978('0x19')](0x194);}return _0x56b7f5;};}function handleError(_0x39f375,_0x1baa40){_0x1baa40=_0x1baa40||0x1f4;return function(_0x9ec82b){logger[_0x5978('0x2b')](_0x9ec82b['stack']);if(_0x9ec82b[_0x5978('0x2c')]){delete _0x9ec82b[_0x5978('0x2c')];}_0x39f375[_0x5978('0x1a')](_0x1baa40)['send'](_0x9ec82b);};}exports['index']=function(_0x359cec,_0x5a8a67){var _0x4f6d49={},_0x19f297={},_0x3e3f49={'count':0x0,'rows':[]};var _0x390500=_[_0x5978('0x2d')](db[_0x5978('0x2e')][_0x5978('0x2f')],function(_0x4929b9){return{'name':_0x4929b9[_0x5978('0x30')],'type':_0x4929b9[_0x5978('0x31')]['key']};});_0x19f297[_0x5978('0x32')]=_[_0x5978('0x2d')](_0x390500,_0x5978('0x2c'));_0x19f297[_0x5978('0x33')]=_[_0x5978('0x34')](_0x359cec[_0x5978('0x33')]);_0x19f297[_0x5978('0x35')]=_[_0x5978('0x36')](_0x19f297[_0x5978('0x32')],_0x19f297[_0x5978('0x33')]);_0x4f6d49['attributes']=_[_0x5978('0x36')](_0x19f297[_0x5978('0x32')],qs['fields'](_0x359cec[_0x5978('0x33')][_0x5978('0x37')]));_0x4f6d49[_0x5978('0x38')]=_0x4f6d49[_0x5978('0x38')][_0x5978('0x39')]?_0x4f6d49[_0x5978('0x38')]:_0x19f297['model'];if(!_0x359cec[_0x5978('0x33')][_0x5978('0x3a')](_0x5978('0x3b'))){_0x4f6d49[_0x5978('0x1f')]=qs['limit'](_0x359cec[_0x5978('0x33')][_0x5978('0x1f')]);_0x4f6d49[_0x5978('0x1d')]=qs[_0x5978('0x1d')](_0x359cec['query'][_0x5978('0x1d')]);}_0x4f6d49[_0x5978('0x3c')]=qs[_0x5978('0x3d')](_0x359cec['query'][_0x5978('0x3d')]);_0x4f6d49[_0x5978('0x3e')]=qs['filters'](_[_0x5978('0x3f')](_0x359cec[_0x5978('0x33')],_0x19f297['filters']),_0x390500);if(_0x359cec[_0x5978('0x33')]['filter']){_0x4f6d49[_0x5978('0x3e')]=_[_0x5978('0x40')](_0x4f6d49['where'],{'$or':_['map'](_0x390500,function(_0x3a2fa3){if(_0x3a2fa3[_0x5978('0x31')]!==_0x5978('0x41')){var _0x3702e6={};_0x3702e6[_0x3a2fa3[_0x5978('0x2c')]]={'$like':'%'+_0x359cec[_0x5978('0x33')][_0x5978('0x42')]+'%'};return _0x3702e6;}})});}_0x4f6d49=_[_0x5978('0x40')]({},_0x4f6d49,_0x359cec[_0x5978('0x43')]);var _0x170eb9={'where':_0x4f6d49[_0x5978('0x3e')]};return db[_0x5978('0x2e')][_0x5978('0x20')](_0x170eb9)[_0x5978('0x26')](function(_0x3a675c){_0x3e3f49['count']=_0x3a675c;if(_0x359cec['query']['includeAll']){_0x4f6d49[_0x5978('0x44')]=[{'all':!![]}];}return db[_0x5978('0x2e')][_0x5978('0x45')](_0x4f6d49);})[_0x5978('0x26')](function(_0x311fc1){_0x3e3f49[_0x5978('0x46')]=_0x311fc1;return _0x3e3f49;})[_0x5978('0x26')](respondWithFilteredResult(_0x5a8a67,_0x4f6d49))[_0x5978('0x47')](handleError(_0x5a8a67,null));};exports['show']=function(_0x63b961,_0x8c27f){var _0x4ca604={'raw':!![],'where':{'id':_0x63b961[_0x5978('0x48')]['id']}},_0x1cdf57={};_0x1cdf57['model']=_[_0x5978('0x34')](db['CmHopperAdditionalPhone'][_0x5978('0x2f')]);_0x1cdf57[_0x5978('0x33')]=_[_0x5978('0x34')](_0x63b961[_0x5978('0x33')]);_0x1cdf57[_0x5978('0x35')]=_[_0x5978('0x36')](_0x1cdf57[_0x5978('0x32')],_0x1cdf57['query']);_0x4ca604['attributes']=_[_0x5978('0x36')](_0x1cdf57['model'],qs[_0x5978('0x37')](_0x63b961[_0x5978('0x33')]['fields']));_0x4ca604[_0x5978('0x38')]=_0x4ca604[_0x5978('0x38')][_0x5978('0x39')]?_0x4ca604[_0x5978('0x38')]:_0x1cdf57[_0x5978('0x32')];if(_0x63b961[_0x5978('0x33')][_0x5978('0x49')]){_0x4ca604[_0x5978('0x44')]=[{'all':!![]}];}_0x4ca604=_['merge']({},_0x4ca604,_0x63b961[_0x5978('0x43')]);return db['CmHopperAdditionalPhone'][_0x5978('0x4a')](_0x4ca604)[_0x5978('0x26')](handleEntityNotFound(_0x8c27f,null))[_0x5978('0x26')](respondWithResult(_0x8c27f,null))['catch'](handleError(_0x8c27f,null));};exports['create']=function(_0x45a892,_0x4b4807){return db['CmHopperAdditionalPhone']['create'](_0x45a892[_0x5978('0x4b')],{})['then'](function(_0x259ca3){var _0x12fb28=_0x45a892[_0x5978('0x4c')][_0x5978('0x27')]({'plain':!![]});if(!_0x12fb28)throw new Error(_0x5978('0x4d'));if(_0x12fb28[_0x5978('0x4e')]===_0x5978('0x4c')){var _0xf41e36=_0x259ca3['get']({'plain':!![]});var _0x27fabe=_0x5978('0x28');return db[_0x5978('0x4f')][_0x5978('0x4a')]({'where':{'name':_0x27fabe,'userProfileId':_0x12fb28[_0x5978('0x50')]},'raw':!![]})['then'](function(_0x54706f){if(_0x54706f&&_0x54706f[_0x5978('0x51')]===0x0){return db[_0x5978('0x29')][_0x5978('0x52')]({'name':_0xf41e36[_0x5978('0x2c')],'resourceId':_0xf41e36['id'],'type':_0x54706f[_0x5978('0x2c')],'sectionId':_0x54706f['id']},{})['then'](function(){return _0x259ca3;});}else{return _0x259ca3;}})[_0x5978('0x47')](function(_0x400f29){logger[_0x5978('0x2b')](_0x5978('0x53'),_0x400f29);throw _0x400f29;});}return _0x259ca3;})[_0x5978('0x26')](respondWithResult(_0x4b4807,0xc9))['catch'](handleError(_0x4b4807,null));};exports[_0x5978('0x25')]=function(_0x1ffe5b,_0x54c62d){if(_0x1ffe5b[_0x5978('0x4b')]['id']){delete _0x1ffe5b[_0x5978('0x4b')]['id'];}return db[_0x5978('0x2e')][_0x5978('0x4a')]({'where':{'id':_0x1ffe5b['params']['id']}})[_0x5978('0x26')](handleEntityNotFound(_0x54c62d,null))[_0x5978('0x26')](saveUpdates(_0x1ffe5b[_0x5978('0x4b')],null))[_0x5978('0x26')](respondWithResult(_0x54c62d,null))[_0x5978('0x47')](handleError(_0x54c62d,null));};exports[_0x5978('0x2a')]=function(_0x4b9bb7,_0x1ec737){return db[_0x5978('0x2e')][_0x5978('0x4a')]({'where':{'id':_0x4b9bb7['params']['id']}})[_0x5978('0x26')](handleEntityNotFound(_0x1ec737,null))[_0x5978('0x26')](removeEntity(_0x1ec737,null))[_0x5978('0x47')](handleError(_0x1ec737,null));};
\ No newline at end of file
index 820eb2f..4fbf130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb28=['path','rimraf','../../config/environment','exports','CmHopperAdditionalPhone','../../config/logger','api','bluebird','request-promise'];(function(_0x95942,_0x85da80){var _0x6d7f81=function(_0x510549){while(--_0x510549){_0x95942['push'](_0x95942['shift']());}};_0x6d7f81(++_0x85da80);}(_0xeb28,0x1d0));var _0x8eb2=function(_0x3e27b4,_0x1d5dad){_0x3e27b4=_0x3e27b4-0x0;var _0x22ee2d=_0xeb28[_0x3e27b4];return _0x22ee2d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8eb2('0x0'))(_0x8eb2('0x1'));var moment=require('moment');var BPromise=require(_0x8eb2('0x2'));var rp=require(_0x8eb2('0x3'));var fs=require('fs');var path=require(_0x8eb2('0x4'));var rimraf=require(_0x8eb2('0x5'));var config=require(_0x8eb2('0x6'));var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0x8eb2('0x7')]=function(_0x215a1e,_0x58fd15){return _0x215a1e['define'](_0x8eb2('0x8'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9b9=['exports','CmHopperAdditionalPhone','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2469e9,_0xd2391b){var _0x2c2a11=function(_0x5e53d3){while(--_0x5e53d3){_0x2469e9['push'](_0x2469e9['shift']());}};_0x2c2a11(++_0xd2391b);}(_0xe9b9,0xd4));var _0x9e9b=function(_0x2a54df,_0x45ea17){_0x2a54df=_0x2a54df-0x0;var _0x1d5f05=_0xe9b9[_0x2a54df];return _0x1d5f05;};'use strict';var _=require(_0x9e9b('0x0'));var util=require(_0x9e9b('0x1'));var logger=require(_0x9e9b('0x2'))(_0x9e9b('0x3'));var moment=require(_0x9e9b('0x4'));var BPromise=require(_0x9e9b('0x5'));var rp=require(_0x9e9b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9e9b('0x7'));var config=require('../../config/environment');var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0x9e9b('0x8')]=function(_0x35e077,_0x49ac7c){return _0x35e077['define'](_0x9e9b('0x9'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1533c40..6dc530e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf24b=['field','IncrementPreviewCounters','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','error','message','CmHopperAdditionalPhone,\x20%s,\x20%s','result','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','CampaignId','OrderBy','ASC','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','CmHopperAdditionalPhone','countbusyretry','countcongestionretry','catch','SwapAdditionalPhones','ContactId','VoiceQueueId','duration','waitTime','isNil','scheduledat','minutes','add','phone','createdAt','updatedAt','sequelize','transaction','update','activateAdditionalPhone'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xf24b,0xad));var _0xbf24=function(_0x8cb2f9,_0x2b8706){_0x8cb2f9=_0x8cb2f9-0x0;var _0x164887=_0xf24b[_0x8cb2f9];return _0x164887;};'use strict';var _=require(_0xbf24('0x0'));var util=require(_0xbf24('0x1'));var moment=require(_0xbf24('0x2'));var BPromise=require('bluebird');var rs=require(_0xbf24('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf24('0x4'))['db'];var utils=require(_0xbf24('0x5'));var logger=require('../../config/logger')(_0xbf24('0x6'));var config=require(_0xbf24('0x7'));var jayson=require(_0xbf24('0x8'));var client=jayson[_0xbf24('0x9')][_0xbf24('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4dd757,_0x10ae5f,_0x3e983e){return new BPromise(function(_0x455e1e,_0x519ad7){return client['request'](_0x4dd757,_0x3e983e)[_0xbf24('0xb')](function(_0x3a94e7){logger[_0xbf24('0xc')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x10ae5f,_0xbf24('0xd'));logger['debug'](_0xbf24('0xe'),_0x10ae5f,'request\x20sent',JSON['stringify'](_0x3a94e7));if(_0x3a94e7[_0xbf24('0xf')]){if(_0x3a94e7[_0xbf24('0xf')]['code']===0x1f4){logger[_0xbf24('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x10ae5f,_0x3a94e7[_0xbf24('0xf')][_0xbf24('0x10')]);return _0x519ad7(_0x3a94e7[_0xbf24('0xf')][_0xbf24('0x10')]);}logger['error'](_0xbf24('0x11'),_0x10ae5f,_0x3a94e7[_0xbf24('0xf')]['message']);return _0x455e1e(_0x3a94e7['error'][_0xbf24('0x10')]);}else{logger[_0xbf24('0xc')](_0xbf24('0x11'),_0x10ae5f,_0xbf24('0xd'));_0x455e1e(_0x3a94e7[_0xbf24('0x12')][_0xbf24('0x10')]);}})['catch'](function(_0x188217){logger['error'](_0xbf24('0x11'),_0x10ae5f,_0x188217);_0x519ad7(_0x188217);});});}exports[_0xbf24('0x13')]=function(_0x1897fe){var _0x3b761a=this;return new Promise(function(_0x4907b9,_0x126976){return db[_0xbf24('0x14')][_0xbf24('0x15')]({'raw':!![],'where':{'ContactId':_0x1897fe[_0xbf24('0x16')]['ContactId'],'ListId':_0x1897fe[_0xbf24('0x16')][_0xbf24('0x17')],'VoiceQueueId':_0x1897fe['body']['VoiceQueueId']===undefined?null:_0x1897fe[_0xbf24('0x16')]['VoiceQueueId'],'CampaignId':_0x1897fe[_0xbf24('0x16')][_0xbf24('0x18')]===undefined?null:_0x1897fe['body'][_0xbf24('0x18')]}})[_0xbf24('0xb')](function(_0x23622a){if(_0x23622a!=null){return db['CmHopperAdditionalPhone'][_0xbf24('0x15')]({'raw':!![],'where':{'CmHopperId':_0x23622a['id'],'OrderBy':{'$gt':_0x23622a[_0xbf24('0x19')]}},'order':[[_0xbf24('0x19'),_0xbf24('0x1a')]]})[_0xbf24('0xb')](function(_0x48edae){var _0x1fe604=0x0;if(_0x48edae){if(_0x48edae['countbusyretry']+_0x48edae['countcongestionretry']+_0x48edae[_0xbf24('0x1b')]+_0x48edae[_0xbf24('0x1c')]+_0x48edae[_0xbf24('0x1d')]+_0x48edae[_0xbf24('0x1e')]+_0x48edae[_0xbf24('0x1f')]+_0x48edae[_0xbf24('0x20')]<_0x1897fe[_0xbf24('0x21')][_0xbf24('0x22')])_0x1fe604=0x1;_0x4907b9({'additional':_0x1fe604});}else{return db[_0xbf24('0x23')][_0xbf24('0x15')]({'raw':!![],'where':{'CmHopperId':_0x23622a['id']},'order':[[_0xbf24('0x19'),_0xbf24('0x1a')]]})[_0xbf24('0xb')](function(_0x238e35){var _0x235985=0x0;if(_0x238e35){if(_0x238e35[_0xbf24('0x24')]+_0x238e35[_0xbf24('0x25')]+_0x238e35[_0xbf24('0x1b')]+_0x238e35[_0xbf24('0x1c')]+_0x238e35['countdropretry']+_0x238e35[_0xbf24('0x1e')]+_0x238e35[_0xbf24('0x1f')]+_0x238e35[_0xbf24('0x20')]<_0x1897fe['entity'][_0xbf24('0x22')])_0x235985=0x1;_0x4907b9({'additional':_0x235985});}else{_0x4907b9({'additional':0x0});}})[_0xbf24('0x26')](function(_0x5449e8){logger['error'](_0xbf24('0x13'),_0x5449e8[_0xbf24('0x10')]);_0x126976(_0x3b761a['error'](0x1f4,_0x5449e8[_0xbf24('0x10')]));});}})[_0xbf24('0x26')](function(_0x4b295f){logger[_0xbf24('0xf')]('VerifyAdditionalPhones',_0x4b295f['message']);_0x126976(_0x3b761a[_0xbf24('0xf')](0x1f4,_0x4b295f[_0xbf24('0x10')]));});}else _0x4907b9({'additional':0x0});});});};exports[_0xbf24('0x27')]=function(_0x347858){var _0x2f14d9=this;return new Promise(function(_0x20d44c,_0x4e5b1e){return db[_0xbf24('0x14')][_0xbf24('0x15')]({'raw':!![],'where':{'ContactId':_0x347858[_0xbf24('0x16')][_0xbf24('0x28')],'ListId':_0x347858[_0xbf24('0x16')]['ListId'],'VoiceQueueId':_0x347858[_0xbf24('0x16')][_0xbf24('0x29')]===undefined?null:_0x347858[_0xbf24('0x16')][_0xbf24('0x29')],'CampaignId':_0x347858[_0xbf24('0x16')][_0xbf24('0x18')]===undefined?null:_0x347858['body'][_0xbf24('0x18')]}})['then'](function(_0x5c6e54){if(_0x5c6e54!=null){return db[_0xbf24('0x23')][_0xbf24('0x15')]({'raw':!![],'where':{'CmHopperId':_0x5c6e54['id'],'OrderBy':{'$gte':_0x5c6e54[_0xbf24('0x19')]}},'order':[[_0xbf24('0x19'),_0xbf24('0x1a')]]})[_0xbf24('0xb')](function(_0x59ee64){if(_0x59ee64)return activateAdditionalPhone(_0x5c6e54,_0x347858['body'],_0x59ee64,_0x347858[_0xbf24('0x2a')],_0x347858[_0xbf24('0x2b')])[_0xbf24('0xb')](function(_0x44b127){_0x20d44c(_0x44b127);});else{return db['CmHopperAdditionalPhone'][_0xbf24('0x15')]({'raw':!![],'where':{'CmHopperId':_0x5c6e54['id']},'order':[[_0xbf24('0x19'),_0xbf24('0x1a')]]})[_0xbf24('0xb')](function(_0x3a8b57){if(_0x3a8b57)return activateAdditionalPhone(_0x5c6e54,_0x347858[_0xbf24('0x16')],_0x3a8b57,_0x347858[_0xbf24('0x2a')],_0x347858[_0xbf24('0x2b')])[_0xbf24('0xb')](function(_0x1f46f6){_0x20d44c(_0x1f46f6);});else{_0x20d44c({'id':_0x5c6e54['id'],'phone':''});}})[_0xbf24('0x26')](function(_0x3adb1e){logger[_0xbf24('0xf')]('VerifyAdditionalPhones',_0x3adb1e[_0xbf24('0x10')]);_0x4e5b1e(_0x2f14d9[_0xbf24('0xf')](0x1f4,_0x3adb1e[_0xbf24('0x10')]));});}})[_0xbf24('0x26')](function(_0x3d2a7e){logger['error'](_0xbf24('0x13'),_0x3d2a7e[_0xbf24('0x10')]);_0x4e5b1e(_0x2f14d9[_0xbf24('0xf')](0x1f4,_0x3d2a7e[_0xbf24('0x10')]));});}else _0x20d44c(0x1);});});};function activateAdditionalPhone(_0x5e6b74,_0x1dd279,_0x131e16,_0x393ea1,_0x341bce){return new Promise(function(_0x19ebae,_0x1cfdd0){var _0x5d0fc0;if(_[_0xbf24('0x2c')](_0x131e16[_0xbf24('0x2d')])){_0x131e16[_0xbf24('0x2d')]=moment();}if(moment()>moment(_0x131e16[_0xbf24('0x2d')])){_0x5d0fc0=moment()['add'](_0x341bce||0x3,_0xbf24('0x2e'));}else{if(_0x131e16[_0xbf24('0x19')]==0x0){_0x5d0fc0=moment(_0x131e16[_0xbf24('0x2d')]);}else{_0x5d0fc0=moment()['add'](_0x341bce||0x3,_0xbf24('0x2e'));}}if(_[_0xbf24('0x2c')](_0x5d0fc0)){_0x5d0fc0=moment()[_0xbf24('0x2f')](_0x341bce||0x3,_0xbf24('0x2e'));}var _0x428ccc={'phone':_0x5e6b74[_0xbf24('0x30')],'active':0x0,'OrderBy':_[_0xbf24('0x2c')](_0x5e6b74[_0xbf24('0x19')])?0x0:_0x5e6b74[_0xbf24('0x19')],'scheduledat':moment()[_0xbf24('0x2f')](_0x393ea1||0x1,_0xbf24('0x2e')),'countbusyretry':_0x1dd279[_0xbf24('0x24')],'countcongestionretry':_0x1dd279[_0xbf24('0x25')],'countnoanswerretry':_0x1dd279[_0xbf24('0x1b')],'countnosuchnumberretry':_0x1dd279['countnosuchnumberretry'],'countdropretry':_0x1dd279['countdropretry'],'countabandonedretry':_0x1dd279[_0xbf24('0x1e')],'countmachineretry':_0x1dd279[_0xbf24('0x1f')],'countagentrejectretry':_0x1dd279[_0xbf24('0x20')],'createdAt':_0x1dd279[_0xbf24('0x31')],'updatedAt':_0x1dd279[_0xbf24('0x32')]};var _0x35ce74={'CmHopperId':_0x5e6b74['id'],'phone':_0x131e16[_0xbf24('0x30')],'active':0x0,'OrderBy':_['isNil'](_0x131e16['OrderBy'])?0x0:_0x131e16[_0xbf24('0x19')],'scheduledat':_0x5d0fc0,'countbusyretry':_0x131e16['countbusyretry'],'countcongestionretry':_0x131e16[_0xbf24('0x25')],'countnoanswerretry':_0x131e16['countnoanswerretry'],'countnosuchnumberretry':_0x131e16['countnosuchnumberretry'],'countdropretry':_0x131e16[_0xbf24('0x1d')],'countabandonedretry':_0x131e16['countabandonedretry'],'countmachineretry':_0x131e16[_0xbf24('0x1f')],'countagentrejectretry':_0x131e16[_0xbf24('0x20')],'createdAt':_0x131e16['createdAt'],'updatedAt':_0x131e16[_0xbf24('0x32')]};return db[_0xbf24('0x33')][_0xbf24('0x34')](function(_0x2d7362){return db[_0xbf24('0x23')]['update'](_0x428ccc,{'where':{'id':_0x131e16['id']}},{'transaction':_0x2d7362})[_0xbf24('0xb')](function(){return db[_0xbf24('0x14')][_0xbf24('0x35')](_0x35ce74,{'where':{'id':_0x5e6b74['id']}},{'transaction':_0x2d7362});});})[_0xbf24('0xb')](function(_0x22aaa4){_0x19ebae({'id':_0x5e6b74['id'],'phone':_0x131e16[_0xbf24('0x30')]});})['catch'](function(_0x2d89df){logger[_0xbf24('0xf')](_0xbf24('0x36'),_0x2d89df[_0xbf24('0x10')]);_0x1cfdd0({'error':_0x2d89df[_0xbf24('0x10')]});});});}exports['IncrementPreviewCounters']=function(_0x393cff){var _0x50aae7=this;return new Promise(function(_0x2b6bb6,_0x7db145){return db[_0xbf24('0x14')][_0xbf24('0x35')](_0x393cff['body'][_0xbf24('0x37')],{'where':{'id':_0x393cff[_0xbf24('0x16')]['id']}})[_0xbf24('0xb')](function(_0x1eaf60){_0x2b6bb6(_0x1eaf60);})[_0xbf24('0x26')](function(_0x956039){logger[_0xbf24('0xf')](_0xbf24('0x38'),_0x956039[_0xbf24('0x10')]);_0x7db145(_0x50aae7[_0xbf24('0xf')](0x1f4,_0x956039['message']));});});};
\ No newline at end of file
+var _0xe06f=['CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','error','code','message','CmHopperAdditionalPhone,\x20%s,\x20%s','catch','VerifyAdditionalPhones','CmHopper','ContactId','body','VoiceQueueId','CampaignId','findOne','ASC','countcongestionretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countbusyretry','countnoanswerretry','countnosuchnumberretry','SwapAdditionalPhones','ListId','CmHopperAdditionalPhone','OrderBy','duration','waitTime','isNil','scheduledat','add','minutes','createdAt','phone','updatedAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe06f,0x9d));var _0xfe06=function(_0x302cf8,_0x28c205){_0x302cf8=_0x302cf8-0x0;var _0x5999c6=_0xe06f[_0x302cf8];return _0x5999c6;};'use strict';var _=require(_0xfe06('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfe06('0x1'));var fs=require('fs');var Redis=require(_0xfe06('0x2'));var db=require(_0xfe06('0x3'))['db'];var utils=require(_0xfe06('0x4'));var logger=require(_0xfe06('0x5'))(_0xfe06('0x6'));var config=require(_0xfe06('0x7'));var jayson=require(_0xfe06('0x8'));var client=jayson[_0xfe06('0x9')][_0xfe06('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f0ca4,_0xe0bd2f,_0x35c604){return new BPromise(function(_0x3ea0b9,_0x29d6db){return client['request'](_0x5f0ca4,_0x35c604)[_0xfe06('0xb')](function(_0xa08813){logger['info']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xe0bd2f,_0xfe06('0xc'));logger[_0xfe06('0xd')](_0xfe06('0xe'),_0xe0bd2f,'request\x20sent',JSON['stringify'](_0xa08813));if(_0xa08813[_0xfe06('0xf')]){if(_0xa08813[_0xfe06('0xf')][_0xfe06('0x10')]===0x1f4){logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xe0bd2f,_0xa08813[_0xfe06('0xf')][_0xfe06('0x11')]);return _0x29d6db(_0xa08813[_0xfe06('0xf')][_0xfe06('0x11')]);}logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xe0bd2f,_0xa08813['error'][_0xfe06('0x11')]);return _0x3ea0b9(_0xa08813[_0xfe06('0xf')][_0xfe06('0x11')]);}else{logger['info'](_0xfe06('0x12'),_0xe0bd2f,_0xfe06('0xc'));_0x3ea0b9(_0xa08813['result'][_0xfe06('0x11')]);}})[_0xfe06('0x13')](function(_0x59930c){logger[_0xfe06('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0xe0bd2f,_0x59930c);_0x29d6db(_0x59930c);});});}exports[_0xfe06('0x14')]=function(_0x3bb6b0){var _0x331f1b=this;return new Promise(function(_0x41661b,_0x3f07e6){return db[_0xfe06('0x15')]['findOne']({'raw':!![],'where':{'ContactId':_0x3bb6b0['body'][_0xfe06('0x16')],'ListId':_0x3bb6b0[_0xfe06('0x17')]['ListId'],'VoiceQueueId':_0x3bb6b0[_0xfe06('0x17')][_0xfe06('0x18')]===undefined?null:_0x3bb6b0['body'][_0xfe06('0x18')],'CampaignId':_0x3bb6b0['body'][_0xfe06('0x19')]===undefined?null:_0x3bb6b0[_0xfe06('0x17')][_0xfe06('0x19')]}})['then'](function(_0x305e08){if(_0x305e08!=null){return db['CmHopperAdditionalPhone'][_0xfe06('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x305e08['id'],'OrderBy':{'$gt':_0x305e08['OrderBy']}},'order':[['OrderBy',_0xfe06('0x1b')]]})[_0xfe06('0xb')](function(_0x1f2b26){var _0x3fbec1=0x0;if(_0x1f2b26){if(_0x1f2b26['countbusyretry']+_0x1f2b26[_0xfe06('0x1c')]+_0x1f2b26['countnoanswerretry']+_0x1f2b26['countnosuchnumberretry']+_0x1f2b26[_0xfe06('0x1d')]+_0x1f2b26[_0xfe06('0x1e')]+_0x1f2b26[_0xfe06('0x1f')]+_0x1f2b26[_0xfe06('0x20')]<_0x3bb6b0[_0xfe06('0x21')][_0xfe06('0x22')])_0x3fbec1=0x1;_0x41661b({'additional':_0x3fbec1});}else{return db['CmHopperAdditionalPhone']['findOne']({'raw':!![],'where':{'CmHopperId':_0x305e08['id']},'order':[['OrderBy',_0xfe06('0x1b')]]})[_0xfe06('0xb')](function(_0xb2cbd2){var _0x2a2d09=0x0;if(_0xb2cbd2){if(_0xb2cbd2[_0xfe06('0x23')]+_0xb2cbd2[_0xfe06('0x1c')]+_0xb2cbd2[_0xfe06('0x24')]+_0xb2cbd2[_0xfe06('0x25')]+_0xb2cbd2[_0xfe06('0x1d')]+_0xb2cbd2[_0xfe06('0x1e')]+_0xb2cbd2[_0xfe06('0x1f')]+_0xb2cbd2[_0xfe06('0x20')]<_0x3bb6b0[_0xfe06('0x21')][_0xfe06('0x22')])_0x2a2d09=0x1;_0x41661b({'additional':_0x2a2d09});}else{_0x41661b({'additional':0x0});}})[_0xfe06('0x13')](function(_0x248d23){logger[_0xfe06('0xf')]('VerifyAdditionalPhones',_0x248d23['message']);_0x3f07e6(_0x331f1b[_0xfe06('0xf')](0x1f4,_0x248d23[_0xfe06('0x11')]));});}})['catch'](function(_0x2693f1){logger[_0xfe06('0xf')](_0xfe06('0x14'),_0x2693f1[_0xfe06('0x11')]);_0x3f07e6(_0x331f1b[_0xfe06('0xf')](0x1f4,_0x2693f1[_0xfe06('0x11')]));});}else _0x41661b({'additional':0x0});});});};exports[_0xfe06('0x26')]=function(_0x14658c){var _0x270b49=this;return new Promise(function(_0x3588df,_0x390a2e){return db[_0xfe06('0x15')][_0xfe06('0x1a')]({'raw':!![],'where':{'ContactId':_0x14658c[_0xfe06('0x17')][_0xfe06('0x16')],'ListId':_0x14658c['body'][_0xfe06('0x27')],'VoiceQueueId':_0x14658c[_0xfe06('0x17')][_0xfe06('0x18')]===undefined?null:_0x14658c[_0xfe06('0x17')][_0xfe06('0x18')],'CampaignId':_0x14658c[_0xfe06('0x17')][_0xfe06('0x19')]===undefined?null:_0x14658c['body'][_0xfe06('0x19')]}})[_0xfe06('0xb')](function(_0x2c0842){if(_0x2c0842!=null){return db[_0xfe06('0x28')][_0xfe06('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x2c0842['id'],'OrderBy':{'$gte':_0x2c0842[_0xfe06('0x29')]}},'order':[[_0xfe06('0x29'),_0xfe06('0x1b')]]})[_0xfe06('0xb')](function(_0x5a87cc){if(_0x5a87cc)return activateAdditionalPhone(_0x2c0842,_0x14658c[_0xfe06('0x17')],_0x5a87cc,_0x14658c[_0xfe06('0x2a')],_0x14658c[_0xfe06('0x2b')])['then'](function(_0x20d424){_0x3588df(_0x20d424);});else{return db[_0xfe06('0x28')][_0xfe06('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x2c0842['id']},'order':[['OrderBy',_0xfe06('0x1b')]]})[_0xfe06('0xb')](function(_0x3fe66f){if(_0x3fe66f)return activateAdditionalPhone(_0x2c0842,_0x14658c[_0xfe06('0x17')],_0x3fe66f,_0x14658c['duration'],_0x14658c[_0xfe06('0x2b')])[_0xfe06('0xb')](function(_0x559d76){_0x3588df(_0x559d76);});else{_0x3588df({'id':_0x2c0842['id'],'phone':''});}})['catch'](function(_0x405557){logger[_0xfe06('0xf')](_0xfe06('0x14'),_0x405557[_0xfe06('0x11')]);_0x390a2e(_0x270b49[_0xfe06('0xf')](0x1f4,_0x405557[_0xfe06('0x11')]));});}})[_0xfe06('0x13')](function(_0x21fe8c){logger[_0xfe06('0xf')](_0xfe06('0x14'),_0x21fe8c[_0xfe06('0x11')]);_0x390a2e(_0x270b49[_0xfe06('0xf')](0x1f4,_0x21fe8c[_0xfe06('0x11')]));});}else _0x3588df(0x1);});});};function activateAdditionalPhone(_0x4bddbe,_0x479e0f,_0x22227c,_0x57c869,_0x3a7c0f){return new Promise(function(_0x168244,_0x1270f6){var _0x570b85;if(_[_0xfe06('0x2c')](_0x22227c[_0xfe06('0x2d')])){_0x22227c[_0xfe06('0x2d')]=moment();}if(moment()>moment(_0x22227c['scheduledat'])){_0x570b85=moment()[_0xfe06('0x2e')](_0x3a7c0f||0x3,'minutes');}else{if(_0x22227c['OrderBy']==0x0){_0x570b85=moment(_0x22227c[_0xfe06('0x2d')]);}else{_0x570b85=moment()['add'](_0x3a7c0f||0x3,'minutes');}}if(_['isNil'](_0x570b85)){_0x570b85=moment()[_0xfe06('0x2e')](_0x3a7c0f||0x3,'minutes');}var _0x103435={'phone':_0x4bddbe['phone'],'active':0x0,'OrderBy':_[_0xfe06('0x2c')](_0x4bddbe['OrderBy'])?0x0:_0x4bddbe[_0xfe06('0x29')],'scheduledat':moment()[_0xfe06('0x2e')](_0x57c869||0x1,_0xfe06('0x2f')),'countbusyretry':_0x479e0f['countbusyretry'],'countcongestionretry':_0x479e0f[_0xfe06('0x1c')],'countnoanswerretry':_0x479e0f[_0xfe06('0x24')],'countnosuchnumberretry':_0x479e0f['countnosuchnumberretry'],'countdropretry':_0x479e0f[_0xfe06('0x1d')],'countabandonedretry':_0x479e0f[_0xfe06('0x1e')],'countmachineretry':_0x479e0f[_0xfe06('0x1f')],'countagentrejectretry':_0x479e0f[_0xfe06('0x20')],'createdAt':_0x479e0f[_0xfe06('0x30')],'updatedAt':_0x479e0f['updatedAt']};var _0x36b581={'CmHopperId':_0x4bddbe['id'],'phone':_0x22227c[_0xfe06('0x31')],'active':0x0,'OrderBy':_[_0xfe06('0x2c')](_0x22227c[_0xfe06('0x29')])?0x0:_0x22227c[_0xfe06('0x29')],'scheduledat':_0x570b85,'countbusyretry':_0x22227c[_0xfe06('0x23')],'countcongestionretry':_0x22227c[_0xfe06('0x1c')],'countnoanswerretry':_0x22227c['countnoanswerretry'],'countnosuchnumberretry':_0x22227c[_0xfe06('0x25')],'countdropretry':_0x22227c[_0xfe06('0x1d')],'countabandonedretry':_0x22227c[_0xfe06('0x1e')],'countmachineretry':_0x22227c[_0xfe06('0x1f')],'countagentrejectretry':_0x22227c[_0xfe06('0x20')],'createdAt':_0x22227c[_0xfe06('0x30')],'updatedAt':_0x22227c[_0xfe06('0x32')]};return db[_0xfe06('0x33')][_0xfe06('0x34')](function(_0x194452){return db[_0xfe06('0x28')][_0xfe06('0x35')](_0x103435,{'where':{'id':_0x22227c['id']}},{'transaction':_0x194452})[_0xfe06('0xb')](function(){return db[_0xfe06('0x15')][_0xfe06('0x35')](_0x36b581,{'where':{'id':_0x4bddbe['id']}},{'transaction':_0x194452});});})[_0xfe06('0xb')](function(_0x4fe248){_0x168244({'id':_0x4bddbe['id'],'phone':_0x22227c['phone']});})['catch'](function(_0x3b1b76){logger[_0xfe06('0xf')](_0xfe06('0x36'),_0x3b1b76[_0xfe06('0x11')]);_0x1270f6({'error':_0x3b1b76['message']});});});}exports[_0xfe06('0x37')]=function(_0x5cb6c3){var _0x4fdb62=this;return new Promise(function(_0x1f6c2a,_0xb508ca){return db['CmHopper'][_0xfe06('0x35')](_0x5cb6c3[_0xfe06('0x17')][_0xfe06('0x38')],{'where':{'id':_0x5cb6c3['body']['id']}})[_0xfe06('0xb')](function(_0x3c70af){_0x1f6c2a(_0x3c70af);})[_0xfe06('0x13')](function(_0x434091){logger[_0xfe06('0xf')]('IncrementPreviewCounters',_0x434091['message']);_0xb508ca(_0x4fdb62[_0xfe06('0xf')](0x1f4,_0x434091[_0xfe06('0x11')]));});});};
\ No newline at end of file
index 0e98c92..4b9bc48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x253d=['isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x2aa301,_0x5aac2b){var _0x36fa9f=function(_0x2ce360){while(--_0x2ce360){_0x2aa301['push'](_0x2aa301['shift']());}};_0x36fa9f(++_0x5aac2b);}(_0x253d,0x1b3));var _0xd253=function(_0x18a168,_0x32cfcd){_0x18a168=_0x18a168-0x0;var _0x26b846=_0x253d[_0x18a168];return _0x26b846;};'use strict';var multer=require(_0xd253('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd253('0x1')]();var fs_extra=require(_0xd253('0x2'));var auth=require(_0xd253('0x3'));var interaction=require(_0xd253('0x4'));var config=require(_0xd253('0x5'));var controller=require('./cmHopperAdditionalPhone.controller');router[_0xd253('0x6')]('/',auth[_0xd253('0x7')](),controller[_0xd253('0x8')]);router[_0xd253('0x6')](_0xd253('0x9'),auth['isAuthenticated'](),controller[_0xd253('0xa')]);router[_0xd253('0xb')]('/',auth[_0xd253('0x7')](),controller[_0xd253('0xc')]);router[_0xd253('0xd')](_0xd253('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xd253('0xe')]('/:id',auth[_0xd253('0x7')](),controller[_0xd253('0xf')]);module[_0xd253('0x10')]=router;
\ No newline at end of file
+var _0x53d1=['/:id','show','post','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x53d1,0xc6));var _0x153d=function(_0x28fa52,_0x254abc){_0x28fa52=_0x28fa52-0x0;var _0x427982=_0x53d1[_0x28fa52];return _0x427982;};'use strict';var multer=require(_0x153d('0x0'));var util=require(_0x153d('0x1'));var path=require(_0x153d('0x2'));var timeout=require(_0x153d('0x3'));var express=require(_0x153d('0x4'));var router=express['Router']();var fs_extra=require(_0x153d('0x5'));var auth=require(_0x153d('0x6'));var interaction=require(_0x153d('0x7'));var config=require(_0x153d('0x8'));var controller=require('./cmHopperAdditionalPhone.controller');router[_0x153d('0x9')]('/',auth['isAuthenticated'](),controller[_0x153d('0xa')]);router[_0x153d('0x9')](_0x153d('0xb'),auth['isAuthenticated'](),controller[_0x153d('0xc')]);router[_0x153d('0xd')]('/',auth[_0x153d('0xe')](),controller['create']);router['put']('/:id',auth[_0x153d('0xe')](),controller[_0x153d('0xf')]);router[_0x153d('0x10')](_0x153d('0xb'),auth['isAuthenticated'](),controller[_0x153d('0x11')]);module[_0x153d('0x12')]=router;
\ No newline at end of file
index 1276c20..0e2aa75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6462=['sequelize','exports','STRING','contactListQueue','INTEGER','moment'];(function(_0xb70f0c,_0xa3c6ca){var _0x48eb86=function(_0x32ea72){while(--_0x32ea72){_0xb70f0c['push'](_0xb70f0c['shift']());}};_0x48eb86(++_0xa3c6ca);}(_0x6462,0x11f));var _0x2646=function(_0x55ba28,_0x5379fe){_0x55ba28=_0x55ba28-0x0;var _0x5c6f70=_0x6462[_0x55ba28];return _0x5c6f70;};'use strict';var moment=require(_0x2646('0x0'));var Sequelize=require(_0x2646('0x1'));module[_0x2646('0x2')]={'phone':{'type':Sequelize[_0x2646('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x2646('0x4')},'ListId':{'type':Sequelize[_0x2646('0x5')],'unique':_0x2646('0x4')},'VoiceQueueId':{'type':Sequelize[_0x2646('0x5')],'unique':_0x2646('0x4')}};
\ No newline at end of file
+var _0x503a=['STRING','contactListQueue','INTEGER','moment','sequelize'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x503a,0x19d));var _0xa503=function(_0x305c31,_0x466b17){_0x305c31=_0x305c31-0x0;var _0x17f39f=_0x503a[_0x305c31];return _0x17f39f;};'use strict';var moment=require(_0xa503('0x0'));var Sequelize=require(_0xa503('0x1'));module['exports']={'phone':{'type':Sequelize[_0xa503('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xa503('0x3')},'ListId':{'type':Sequelize[_0xa503('0x4')],'unique':_0xa503('0x3')},'VoiceQueueId':{'type':Sequelize[_0xa503('0x4')],'unique':_0xa503('0x3')}};
\ No newline at end of file
index cc3f467..bd23545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1b9=['ejs','fs-extra','squel','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','Content-Range','then','destroy','end','error','stack','name','CmHopperBlack','type','key','model','map','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','show','params','rawAttributes','options','find','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox'];(function(_0x239795,_0x391f30){var _0x25c22b=function(_0x228619){while(--_0x228619){_0x239795['push'](_0x239795['shift']());}};_0x25c22b(++_0x391f30);}(_0xd1b9,0x1a1));var _0x9d1b=function(_0x207811,_0x3420a6){_0x207811=_0x207811-0x0;var _0x170d56=_0xd1b9[_0x207811];return _0x170d56;};'use strict';var emlformat=require(_0x9d1b('0x0'));var rimraf=require(_0x9d1b('0x1'));var zipdir=require(_0x9d1b('0x2'));var jsonpatch=require(_0x9d1b('0x3'));var rp=require(_0x9d1b('0x4'));var moment=require(_0x9d1b('0x5'));var BPromise=require(_0x9d1b('0x6'));var Mustache=require('mustache');var util=require(_0x9d1b('0x7'));var path=require('path');var sox=require(_0x9d1b('0x8'));var csv=require('to-csv');var ejs=require(_0x9d1b('0x9'));var fs=require('fs');var fs_extra=require(_0x9d1b('0xa'));var _=require('lodash');var squel=require(_0x9d1b('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9d1b('0xc'));var toCsv=require(_0x9d1b('0xd'));var querystring=require(_0x9d1b('0xe'));var Papa=require('papaparse');var Redis=require(_0x9d1b('0xf'));var authService=require(_0x9d1b('0x10'));var qs=require(_0x9d1b('0x11'));var as=require(_0x9d1b('0x12'));var hardwareService=require(_0x9d1b('0x13'));var logger=require('../../config/logger')(_0x9d1b('0x14'));var utils=require(_0x9d1b('0x15'));var config=require(_0x9d1b('0x16'));var licenseUtil=require(_0x9d1b('0x17'));var db=require(_0x9d1b('0x18'))['db'];function respondWithStatusCode(_0x2dd966,_0x28cba4){_0x28cba4=_0x28cba4||0xcc;return function(_0x426abf){if(_0x426abf){return _0x2dd966[_0x9d1b('0x19')](_0x28cba4);}return _0x2dd966['status'](_0x28cba4)['end']();};}function respondWithResult(_0x3aa691,_0x1ec601){_0x1ec601=_0x1ec601||0xc8;return function(_0x40c548){if(_0x40c548){return _0x3aa691['status'](_0x1ec601)[_0x9d1b('0x1a')](_0x40c548);}};}function respondWithFilteredResult(_0x153e7c,_0x46568c){return function(_0x5af51f){if(_0x5af51f){var _0x174969=typeof _0x46568c[_0x9d1b('0x1b')]==='undefined'&&typeof _0x46568c[_0x9d1b('0x1c')]===_0x9d1b('0x1d');var _0x466e4d=_0x5af51f[_0x9d1b('0x1e')];var _0x156a96=_0x174969?0x0:_0x46568c[_0x9d1b('0x1b')];var _0x744509=_0x174969?_0x5af51f[_0x9d1b('0x1e')]:_0x46568c[_0x9d1b('0x1b')]+_0x46568c[_0x9d1b('0x1c')];var _0x481675;if(_0x744509>=_0x466e4d){_0x744509=_0x466e4d;_0x481675=0xc8;}else{_0x481675=0xce;}_0x153e7c[_0x9d1b('0x1f')](_0x481675);return _0x153e7c['set'](_0x9d1b('0x20'),_0x156a96+'-'+_0x744509+'/'+_0x466e4d)[_0x9d1b('0x1a')](_0x5af51f);}return null;};}function patchUpdates(_0xb41c5e){return function(_0x540995){try{jsonpatch['apply'](_0x540995,_0xb41c5e,!![]);}catch(_0x4376a4){return BPromise['reject'](_0x4376a4);}return _0x540995['save']();};}function saveUpdates(_0x55ad10,_0x5343c9){return function(_0x1f4f83){if(_0x1f4f83){return _0x1f4f83['update'](_0x55ad10)[_0x9d1b('0x21')](function(_0x13150c){return _0x13150c;});}return null;};}function removeEntity(_0x35ff37,_0x55b791){return function(_0x1e1dd7){if(_0x1e1dd7){return _0x1e1dd7[_0x9d1b('0x22')]()[_0x9d1b('0x21')](function(){_0x35ff37[_0x9d1b('0x1f')](0xcc)[_0x9d1b('0x23')]();});}};}function handleEntityNotFound(_0x5edc78,_0x474180){return function(_0x378fff){if(!_0x378fff){_0x5edc78[_0x9d1b('0x19')](0x194);}return _0x378fff;};}function handleError(_0xf111a4,_0x13ec74){_0x13ec74=_0x13ec74||0x1f4;return function(_0x518edc){logger[_0x9d1b('0x24')](_0x518edc[_0x9d1b('0x25')]);if(_0x518edc[_0x9d1b('0x26')]){delete _0x518edc['name'];}_0xf111a4[_0x9d1b('0x1f')](_0x13ec74)['send'](_0x518edc);};}exports['index']=function(_0x1b47da,_0xd9fec3){var _0x3ddc90={},_0x17254d={},_0x1fd6fa={'count':0x0,'rows':[]};var _0xad9577=_['map'](db[_0x9d1b('0x27')]['rawAttributes'],function(_0x524dd7){return{'name':_0x524dd7['fieldName'],'type':_0x524dd7[_0x9d1b('0x28')][_0x9d1b('0x29')]};});_0x17254d[_0x9d1b('0x2a')]=_[_0x9d1b('0x2b')](_0xad9577,_0x9d1b('0x26'));_0x17254d['query']=_[_0x9d1b('0x2c')](_0x1b47da['query']);_0x17254d[_0x9d1b('0x2d')]=_[_0x9d1b('0x2e')](_0x17254d[_0x9d1b('0x2a')],_0x17254d['query']);_0x3ddc90[_0x9d1b('0x2f')]=_[_0x9d1b('0x2e')](_0x17254d[_0x9d1b('0x2a')],qs[_0x9d1b('0x30')](_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x30')]));_0x3ddc90[_0x9d1b('0x2f')]=_0x3ddc90[_0x9d1b('0x2f')][_0x9d1b('0x32')]?_0x3ddc90['attributes']:_0x17254d[_0x9d1b('0x2a')];if(!_0x1b47da['query'][_0x9d1b('0x33')]('nolimit')){_0x3ddc90[_0x9d1b('0x1c')]=qs['limit'](_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x1c')]);_0x3ddc90[_0x9d1b('0x1b')]=qs[_0x9d1b('0x1b')](_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x1b')]);}_0x3ddc90[_0x9d1b('0x34')]=qs['sort'](_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x35')]);_0x3ddc90['where']=qs[_0x9d1b('0x2d')](_[_0x9d1b('0x36')](_0x1b47da[_0x9d1b('0x31')],_0x17254d[_0x9d1b('0x2d')]),_0xad9577);if(_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x37')]){_0x3ddc90[_0x9d1b('0x38')]=_[_0x9d1b('0x39')](_0x3ddc90[_0x9d1b('0x38')],{'$or':_['map'](_0xad9577,function(_0x21f200){if(_0x21f200[_0x9d1b('0x28')]!==_0x9d1b('0x3a')){var _0xbb98ec={};_0xbb98ec[_0x21f200['name']]={'$like':'%'+_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x37')]+'%'};return _0xbb98ec;}})});}_0x3ddc90=_[_0x9d1b('0x39')]({},_0x3ddc90,_0x1b47da['options']);var _0x3975b5={'where':_0x3ddc90[_0x9d1b('0x38')]};return db[_0x9d1b('0x27')][_0x9d1b('0x1e')](_0x3975b5)[_0x9d1b('0x21')](function(_0xe18bcf){_0x1fd6fa['count']=_0xe18bcf;if(_0x1b47da[_0x9d1b('0x31')][_0x9d1b('0x3b')]){_0x3ddc90[_0x9d1b('0x3c')]=[{'all':!![]}];}return db[_0x9d1b('0x27')]['findAll'](_0x3ddc90);})['then'](function(_0x91f836){_0x1fd6fa[_0x9d1b('0x3d')]=_0x91f836;return _0x1fd6fa;})[_0x9d1b('0x21')](respondWithFilteredResult(_0xd9fec3,_0x3ddc90))[_0x9d1b('0x3e')](handleError(_0xd9fec3,null));};exports[_0x9d1b('0x3f')]=function(_0x1d3dfa,_0x136467){var _0x3c2fa4={'raw':!![],'where':{'id':_0x1d3dfa[_0x9d1b('0x40')]['id']}},_0x32c963={};_0x32c963[_0x9d1b('0x2a')]=_[_0x9d1b('0x2c')](db['CmHopperBlack'][_0x9d1b('0x41')]);_0x32c963[_0x9d1b('0x31')]=_[_0x9d1b('0x2c')](_0x1d3dfa[_0x9d1b('0x31')]);_0x32c963['filters']=_[_0x9d1b('0x2e')](_0x32c963[_0x9d1b('0x2a')],_0x32c963[_0x9d1b('0x31')]);_0x3c2fa4[_0x9d1b('0x2f')]=_[_0x9d1b('0x2e')](_0x32c963['model'],qs[_0x9d1b('0x30')](_0x1d3dfa['query']['fields']));_0x3c2fa4['attributes']=_0x3c2fa4[_0x9d1b('0x2f')][_0x9d1b('0x32')]?_0x3c2fa4[_0x9d1b('0x2f')]:_0x32c963[_0x9d1b('0x2a')];if(_0x1d3dfa[_0x9d1b('0x31')][_0x9d1b('0x3b')]){_0x3c2fa4[_0x9d1b('0x3c')]=[{'all':!![]}];}_0x3c2fa4=_[_0x9d1b('0x39')]({},_0x3c2fa4,_0x1d3dfa[_0x9d1b('0x42')]);return db[_0x9d1b('0x27')][_0x9d1b('0x43')](_0x3c2fa4)[_0x9d1b('0x21')](handleEntityNotFound(_0x136467,null))['then'](respondWithResult(_0x136467,null))['catch'](handleError(_0x136467,null));};exports[_0x9d1b('0x44')]=function(_0x4fb578,_0x167f75){if(_0x4fb578[_0x9d1b('0x45')]['id']){delete _0x4fb578[_0x9d1b('0x45')]['id'];}return db[_0x9d1b('0x27')][_0x9d1b('0x43')]({'where':{'id':_0x4fb578['params']['id']}})['then'](handleEntityNotFound(_0x167f75,null))[_0x9d1b('0x21')](saveUpdates(_0x4fb578[_0x9d1b('0x45')],null))[_0x9d1b('0x21')](respondWithResult(_0x167f75,null))[_0x9d1b('0x3e')](handleError(_0x167f75,null));};exports[_0x9d1b('0x22')]=function(_0x1efa47,_0xdd2589){return db[_0x9d1b('0x27')][_0x9d1b('0x43')]({'where':{'id':_0x1efa47[_0x9d1b('0x40')]['id']}})[_0x9d1b('0x21')](handleEntityNotFound(_0xdd2589,null))[_0x9d1b('0x21')](removeEntity(_0xdd2589,null))['catch'](handleError(_0xdd2589,null));};exports['describe']=function(_0x446392,_0x4c7c10){return db[_0x9d1b('0x27')][_0x9d1b('0x46')]()[_0x9d1b('0x21')](respondWithResult(_0x4c7c10,null))[_0x9d1b('0x3e')](handleError(_0x4c7c10,null));};
\ No newline at end of file
+var _0x04d0=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','then','sendStatus','stack','name','send','index','map','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','CmHopperBlack','includeAll','findAll','rows','show','rawAttributes','include','options','find','catch','body','params','destroy','describe','rimraf','moment','bluebird','mustache','util'];(function(_0x2cd7a1,_0x1a8628){var _0x2f6afd=function(_0x14ee03){while(--_0x14ee03){_0x2cd7a1['push'](_0x2cd7a1['shift']());}};_0x2f6afd(++_0x1a8628);}(_0x04d0,0x1ab));var _0x004d=function(_0xd638d0,_0x6888a3){_0xd638d0=_0xd638d0-0x0;var _0x50fd01=_0x04d0[_0xd638d0];return _0x50fd01;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x004d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x004d('0x1'));var BPromise=require(_0x004d('0x2'));var Mustache=require(_0x004d('0x3'));var util=require(_0x004d('0x4'));var path=require('path');var sox=require(_0x004d('0x5'));var csv=require(_0x004d('0x6'));var ejs=require(_0x004d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x004d('0x8'));var squel=require(_0x004d('0x9'));var crypto=require(_0x004d('0xa'));var jsforce=require(_0x004d('0xb'));var deskjs=require(_0x004d('0xc'));var toCsv=require(_0x004d('0x6'));var querystring=require(_0x004d('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x004d('0xe'));var qs=require(_0x004d('0xf'));var as=require(_0x004d('0x10'));var hardwareService=require(_0x004d('0x11'));var logger=require(_0x004d('0x12'))(_0x004d('0x13'));var utils=require(_0x004d('0x14'));var config=require(_0x004d('0x15'));var licenseUtil=require(_0x004d('0x16'));var db=require(_0x004d('0x17'))['db'];function respondWithStatusCode(_0xfcb1f8,_0x1b0691){_0x1b0691=_0x1b0691||0xcc;return function(_0x5cdd3e){if(_0x5cdd3e){return _0xfcb1f8['sendStatus'](_0x1b0691);}return _0xfcb1f8[_0x004d('0x18')](_0x1b0691)[_0x004d('0x19')]();};}function respondWithResult(_0x4bd56c,_0x50313f){_0x50313f=_0x50313f||0xc8;return function(_0x1d8475){if(_0x1d8475){return _0x4bd56c['status'](_0x50313f)['json'](_0x1d8475);}};}function respondWithFilteredResult(_0x37f692,_0x524a6d){return function(_0x2b5f7f){if(_0x2b5f7f){var _0x1f0359=typeof _0x524a6d[_0x004d('0x1a')]==='undefined'&&typeof _0x524a6d[_0x004d('0x1b')]===_0x004d('0x1c');var _0xde03d8=_0x2b5f7f[_0x004d('0x1d')];var _0xacfb98=_0x1f0359?0x0:_0x524a6d['offset'];var _0x125baa=_0x1f0359?_0x2b5f7f[_0x004d('0x1d')]:_0x524a6d[_0x004d('0x1a')]+_0x524a6d[_0x004d('0x1b')];var _0x5ed780;if(_0x125baa>=_0xde03d8){_0x125baa=_0xde03d8;_0x5ed780=0xc8;}else{_0x5ed780=0xce;}_0x37f692[_0x004d('0x18')](_0x5ed780);return _0x37f692[_0x004d('0x1e')](_0x004d('0x1f'),_0xacfb98+'-'+_0x125baa+'/'+_0xde03d8)['json'](_0x2b5f7f);}return null;};}function patchUpdates(_0x2402f5){return function(_0x589f6c){try{jsonpatch[_0x004d('0x20')](_0x589f6c,_0x2402f5,!![]);}catch(_0x22414d){return BPromise['reject'](_0x22414d);}return _0x589f6c[_0x004d('0x21')]();};}function saveUpdates(_0x274d21,_0x569fd7){return function(_0x1e9a00){if(_0x1e9a00){return _0x1e9a00['update'](_0x274d21)[_0x004d('0x22')](function(_0x1f0c16){return _0x1f0c16;});}return null;};}function removeEntity(_0x1f58dc,_0x3501a6){return function(_0x4490d4){if(_0x4490d4){return _0x4490d4['destroy']()[_0x004d('0x22')](function(){_0x1f58dc['status'](0xcc)[_0x004d('0x19')]();});}};}function handleEntityNotFound(_0x40032d,_0x180f4f){return function(_0xb63c89){if(!_0xb63c89){_0x40032d[_0x004d('0x23')](0x194);}return _0xb63c89;};}function handleError(_0x35ca3e,_0x2fc370){_0x2fc370=_0x2fc370||0x1f4;return function(_0x508482){logger['error'](_0x508482[_0x004d('0x24')]);if(_0x508482[_0x004d('0x25')]){delete _0x508482[_0x004d('0x25')];}_0x35ca3e[_0x004d('0x18')](_0x2fc370)[_0x004d('0x26')](_0x508482);};}exports[_0x004d('0x27')]=function(_0x280e28,_0x5f383a){var _0x5c03cf={},_0x1070c1={},_0x42f471={'count':0x0,'rows':[]};var _0x1ce786=_[_0x004d('0x28')](db['CmHopperBlack']['rawAttributes'],function(_0x267b70){return{'name':_0x267b70['fieldName'],'type':_0x267b70[_0x004d('0x29')]['key']};});_0x1070c1['model']=_[_0x004d('0x28')](_0x1ce786,_0x004d('0x25'));_0x1070c1[_0x004d('0x2a')]=_[_0x004d('0x2b')](_0x280e28[_0x004d('0x2a')]);_0x1070c1[_0x004d('0x2c')]=_[_0x004d('0x2d')](_0x1070c1[_0x004d('0x2e')],_0x1070c1[_0x004d('0x2a')]);_0x5c03cf[_0x004d('0x2f')]=_[_0x004d('0x2d')](_0x1070c1[_0x004d('0x2e')],qs[_0x004d('0x30')](_0x280e28[_0x004d('0x2a')][_0x004d('0x30')]));_0x5c03cf[_0x004d('0x2f')]=_0x5c03cf[_0x004d('0x2f')][_0x004d('0x31')]?_0x5c03cf[_0x004d('0x2f')]:_0x1070c1[_0x004d('0x2e')];if(!_0x280e28['query'][_0x004d('0x32')](_0x004d('0x33'))){_0x5c03cf[_0x004d('0x1b')]=qs[_0x004d('0x1b')](_0x280e28[_0x004d('0x2a')][_0x004d('0x1b')]);_0x5c03cf[_0x004d('0x1a')]=qs[_0x004d('0x1a')](_0x280e28[_0x004d('0x2a')][_0x004d('0x1a')]);}_0x5c03cf[_0x004d('0x34')]=qs[_0x004d('0x35')](_0x280e28[_0x004d('0x2a')][_0x004d('0x35')]);_0x5c03cf[_0x004d('0x36')]=qs[_0x004d('0x2c')](_['pick'](_0x280e28[_0x004d('0x2a')],_0x1070c1[_0x004d('0x2c')]),_0x1ce786);if(_0x280e28[_0x004d('0x2a')][_0x004d('0x37')]){_0x5c03cf['where']=_['merge'](_0x5c03cf['where'],{'$or':_['map'](_0x1ce786,function(_0x4c39ce){if(_0x4c39ce[_0x004d('0x29')]!==_0x004d('0x38')){var _0x57b8a2={};_0x57b8a2[_0x4c39ce[_0x004d('0x25')]]={'$like':'%'+_0x280e28['query'][_0x004d('0x37')]+'%'};return _0x57b8a2;}})});}_0x5c03cf=_[_0x004d('0x39')]({},_0x5c03cf,_0x280e28['options']);var _0x3e57e8={'where':_0x5c03cf[_0x004d('0x36')]};return db[_0x004d('0x3a')]['count'](_0x3e57e8)[_0x004d('0x22')](function(_0x1d1271){_0x42f471[_0x004d('0x1d')]=_0x1d1271;if(_0x280e28[_0x004d('0x2a')][_0x004d('0x3b')]){_0x5c03cf['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x004d('0x3c')](_0x5c03cf);})[_0x004d('0x22')](function(_0x1f0246){_0x42f471[_0x004d('0x3d')]=_0x1f0246;return _0x42f471;})[_0x004d('0x22')](respondWithFilteredResult(_0x5f383a,_0x5c03cf))['catch'](handleError(_0x5f383a,null));};exports[_0x004d('0x3e')]=function(_0x5813f8,_0x56e5b5){var _0x5e2ab5={'raw':!![],'where':{'id':_0x5813f8['params']['id']}},_0x202f08={};_0x202f08['model']=_[_0x004d('0x2b')](db['CmHopperBlack'][_0x004d('0x3f')]);_0x202f08[_0x004d('0x2a')]=_[_0x004d('0x2b')](_0x5813f8['query']);_0x202f08[_0x004d('0x2c')]=_['intersection'](_0x202f08[_0x004d('0x2e')],_0x202f08[_0x004d('0x2a')]);_0x5e2ab5[_0x004d('0x2f')]=_[_0x004d('0x2d')](_0x202f08[_0x004d('0x2e')],qs[_0x004d('0x30')](_0x5813f8['query']['fields']));_0x5e2ab5['attributes']=_0x5e2ab5[_0x004d('0x2f')][_0x004d('0x31')]?_0x5e2ab5['attributes']:_0x202f08[_0x004d('0x2e')];if(_0x5813f8[_0x004d('0x2a')]['includeAll']){_0x5e2ab5[_0x004d('0x40')]=[{'all':!![]}];}_0x5e2ab5=_[_0x004d('0x39')]({},_0x5e2ab5,_0x5813f8[_0x004d('0x41')]);return db['CmHopperBlack'][_0x004d('0x42')](_0x5e2ab5)[_0x004d('0x22')](handleEntityNotFound(_0x56e5b5,null))[_0x004d('0x22')](respondWithResult(_0x56e5b5,null))[_0x004d('0x43')](handleError(_0x56e5b5,null));};exports['update']=function(_0x5f5e0d,_0x3f1034){if(_0x5f5e0d[_0x004d('0x44')]['id']){delete _0x5f5e0d[_0x004d('0x44')]['id'];}return db[_0x004d('0x3a')][_0x004d('0x42')]({'where':{'id':_0x5f5e0d[_0x004d('0x45')]['id']}})[_0x004d('0x22')](handleEntityNotFound(_0x3f1034,null))[_0x004d('0x22')](saveUpdates(_0x5f5e0d[_0x004d('0x44')],null))[_0x004d('0x22')](respondWithResult(_0x3f1034,null))['catch'](handleError(_0x3f1034,null));};exports[_0x004d('0x46')]=function(_0x40fde3,_0x3d61ba){return db[_0x004d('0x3a')][_0x004d('0x42')]({'where':{'id':_0x40fde3[_0x004d('0x45')]['id']}})[_0x004d('0x22')](handleEntityNotFound(_0x3d61ba,null))[_0x004d('0x22')](removeEntity(_0x3d61ba,null))[_0x004d('0x43')](handleError(_0x3d61ba,null));};exports[_0x004d('0x47')]=function(_0x47e5aa,_0x18951c){return db[_0x004d('0x3a')][_0x004d('0x47')]()['then'](respondWithResult(_0x18951c,null))['catch'](handleError(_0x18951c,null));};
\ No newline at end of file
index 369c78e..c4c7082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7119=['define','CmHopperBlack','cm_hopper_black','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperBlack.attributes','exports'];(function(_0x2978fe,_0x12c111){var _0x1b63e8=function(_0x313eab){while(--_0x313eab){_0x2978fe['push'](_0x2978fe['shift']());}};_0x1b63e8(++_0x12c111);}(_0x7119,0x1cb));var _0x9711=function(_0x3dc089,_0x5ccb0d){_0x3dc089=_0x3dc089-0x0;var _0x34d9d3=_0x7119[_0x3dc089];return _0x34d9d3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9711('0x0'))(_0x9711('0x1'));var moment=require(_0x9711('0x2'));var BPromise=require(_0x9711('0x3'));var rp=require(_0x9711('0x4'));var fs=require('fs');var path=require(_0x9711('0x5'));var rimraf=require(_0x9711('0x6'));var config=require('../../config/environment');var attributes=require(_0x9711('0x7'));module[_0x9711('0x8')]=function(_0x18d6fc,_0x28f61b){return _0x18d6fc[_0x9711('0x9')](_0x9711('0xa'),attributes,{'tableName':_0x9711('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa45d=['request-promise','path','../../config/environment','./cmHopperBlack.attributes','define','cm_hopper_black','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2bc53f,_0x1bd14c){var _0x173601=function(_0x18a865){while(--_0x18a865){_0x2bc53f['push'](_0x2bc53f['shift']());}};_0x173601(++_0x1bd14c);}(_0xa45d,0x16e));var _0xda45=function(_0x46cb9f,_0x3384ed){_0x46cb9f=_0x46cb9f-0x0;var _0x51cbce=_0xa45d[_0x46cb9f];return _0x51cbce;};'use strict';var _=require(_0xda45('0x0'));var util=require(_0xda45('0x1'));var logger=require(_0xda45('0x2'))(_0xda45('0x3'));var moment=require(_0xda45('0x4'));var BPromise=require(_0xda45('0x5'));var rp=require(_0xda45('0x6'));var fs=require('fs');var path=require(_0xda45('0x7'));var rimraf=require('rimraf');var config=require(_0xda45('0x8'));var attributes=require(_0xda45('0x9'));module['exports']=function(_0xdb6ffc,_0x4a7f1d){return _0xdb6ffc[_0xda45('0xa')]('CmHopperBlack',attributes,{'tableName':_0xda45('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd9d113..09c9375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaef3=['stringify','error','code','message','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','debug','UpdateCmHopperBlack','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xaef3,0x15e));var _0x3aef=function(_0x510c60,_0x50247e){_0x510c60=_0x510c60-0x0;var _0x49c4aa=_0xaef3[_0x510c60];return _0x49c4aa;};'use strict';var _=require(_0x3aef('0x0'));var util=require(_0x3aef('0x1'));var moment=require(_0x3aef('0x2'));var BPromise=require(_0x3aef('0x3'));var rs=require(_0x3aef('0x4'));var fs=require('fs');var Redis=require(_0x3aef('0x5'));var db=require(_0x3aef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x3aef('0x7'))(_0x3aef('0x8'));var config=require(_0x3aef('0x9'));var jayson=require(_0x3aef('0xa'));var client=jayson[_0x3aef('0xb')][_0x3aef('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x309144,_0x1b1836,_0x4bcabd){return new BPromise(function(_0x411605,_0x16f897){return client[_0x3aef('0xd')](_0x309144,_0x4bcabd)[_0x3aef('0xe')](function(_0xa2d9bd){logger[_0x3aef('0xf')](_0x3aef('0x10'),_0x1b1836,_0x3aef('0x11'));logger['debug'](_0x3aef('0x12'),_0x1b1836,_0x3aef('0x11'),JSON[_0x3aef('0x13')](_0xa2d9bd));if(_0xa2d9bd['error']){if(_0xa2d9bd[_0x3aef('0x14')][_0x3aef('0x15')]===0x1f4){logger['error'](_0x3aef('0x10'),_0x1b1836,_0xa2d9bd[_0x3aef('0x14')][_0x3aef('0x16')]);return _0x16f897(_0xa2d9bd[_0x3aef('0x14')][_0x3aef('0x16')]);}logger[_0x3aef('0x14')](_0x3aef('0x10'),_0x1b1836,_0xa2d9bd[_0x3aef('0x14')]['message']);return _0x411605(_0xa2d9bd[_0x3aef('0x14')]['message']);}else{logger[_0x3aef('0xf')](_0x3aef('0x10'),_0x1b1836,_0x3aef('0x11'));_0x411605(_0xa2d9bd[_0x3aef('0x17')][_0x3aef('0x16')]);}})[_0x3aef('0x18')](function(_0x1138f8){logger[_0x3aef('0x14')](_0x3aef('0x10'),_0x1b1836,_0x1138f8);_0x16f897(_0x1138f8);});});}exports[_0x3aef('0x19')]=function(_0x5dfeb6){var _0x1ea476=this;return new Promise(function(_0x4f66d8,_0x5acad5){return db[_0x3aef('0x1a')][_0x3aef('0x1b')]({'raw':_0x5dfeb6['options']?_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x1d')]===undefined?!![]:![]:!![],'where':_0x5dfeb6[_0x3aef('0x1c')]?_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x1e')]||null:null,'attributes':_0x5dfeb6[_0x3aef('0x1c')]?_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x1f')]||null:null,'limit':_0x5dfeb6[_0x3aef('0x1c')]?_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x20')]||null:null,'include':_0x5dfeb6[_0x3aef('0x1c')]?_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x21')]?_[_0x3aef('0x22')](_0x5dfeb6[_0x3aef('0x1c')][_0x3aef('0x21')],function(_0x592cb8){return{'model':db[_0x592cb8[_0x3aef('0x23')]],'as':_0x592cb8['as'],'attributes':_0x592cb8['attributes'],'include':_0x592cb8[_0x3aef('0x21')]?_[_0x3aef('0x22')](_0x592cb8[_0x3aef('0x21')],function(_0x4fa6b0){return{'model':db[_0x4fa6b0[_0x3aef('0x23')]],'as':_0x4fa6b0['as'],'attributes':_0x4fa6b0[_0x3aef('0x1f')],'include':_0x4fa6b0[_0x3aef('0x21')]?_[_0x3aef('0x22')](_0x4fa6b0[_0x3aef('0x21')],function(_0x3cbfc1){return{'model':db[_0x3cbfc1['model']],'as':_0x3cbfc1['as'],'attributes':_0x3cbfc1[_0x3aef('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3aef('0xe')](function(_0x2ff5be){logger[_0x3aef('0xf')](_0x3aef('0x19'),_0x5dfeb6);logger[_0x3aef('0x24')](_0x3aef('0x19'),_0x5dfeb6,JSON[_0x3aef('0x13')](_0x2ff5be));_0x4f66d8(_0x2ff5be);})['catch'](function(_0x54b060){logger[_0x3aef('0x14')]('GetCmHopperBlack',_0x54b060['message'],_0x5dfeb6);_0x5acad5(_0x1ea476[_0x3aef('0x14')](0x1f4,_0x54b060['message']));});});};exports[_0x3aef('0x25')]=function(_0x4db4d){var _0x57a3db=this;return new Promise(function(_0x37b805,_0x496d05){return db['CmHopperBlack']['update'](_0x4db4d[_0x3aef('0x26')],{'raw':_0x4db4d[_0x3aef('0x1c')]?_0x4db4d[_0x3aef('0x1c')][_0x3aef('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db4d[_0x3aef('0x1c')]?_0x4db4d[_0x3aef('0x1c')][_0x3aef('0x1e')]||null:null,'attributes':_0x4db4d[_0x3aef('0x1c')]?_0x4db4d[_0x3aef('0x1c')]['attributes']||null:null,'limit':_0x4db4d[_0x3aef('0x1c')]?_0x4db4d[_0x3aef('0x1c')][_0x3aef('0x20')]||null:null})[_0x3aef('0xe')](function(_0x43c00a){logger[_0x3aef('0xf')](_0x3aef('0x25'),_0x4db4d);logger['debug'](_0x3aef('0x25'),_0x4db4d,JSON[_0x3aef('0x13')](_0x43c00a));_0x37b805(_0x43c00a);})[_0x3aef('0x18')](function(_0x1e99b){logger['error']('UpdateCmHopperBlack',_0x1e99b['message'],_0x4db4d);_0x496d05(_0x57a3db[_0x3aef('0x14')](0x1f4,_0x1e99b[_0x3aef('0x16')]));});});};exports[_0x3aef('0x27')]=function(_0x5b25d4){var _0x4e3cdc=this;return new Promise(function(_0x63a35a,_0x476d65){return db[_0x3aef('0x1a')][_0x3aef('0x28')]({'where':_0x5b25d4[_0x3aef('0x1c')]?_0x5b25d4['options'][_0x3aef('0x1e')]||null:null})[_0x3aef('0xe')](function(_0x1bf22f){logger['info'](_0x3aef('0x27'),_0x5b25d4);logger[_0x3aef('0x24')]('DestroyCmHopperBlack',_0x5b25d4,JSON[_0x3aef('0x13')](_0x1bf22f));_0x63a35a(_0x1bf22f);})['catch'](function(_0x4a8f5f){logger[_0x3aef('0x14')](_0x3aef('0x27'),_0x4a8f5f[_0x3aef('0x16')],_0x5b25d4);_0x476d65(_0x4e3cdc[_0x3aef('0x14')](0x1f4,_0x4a8f5f['message']));});});};
\ No newline at end of file
+var _0xb17b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CmHopperBlack','findAll','options','raw','attributes','limit','include','model','GetCmHopperBlack','UpdateCmHopperBlack','update','where','debug','DestroyCmHopperBlack','destroy','lodash','moment','bluebird','randomstring'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xb17b,0xba));var _0xbb17=function(_0x513ba8,_0x14303b){_0x513ba8=_0x513ba8-0x0;var _0x4bbd1b=_0xb17b[_0x513ba8];return _0x4bbd1b;};'use strict';var _=require(_0xbb17('0x0'));var util=require('util');var moment=require(_0xbb17('0x1'));var BPromise=require(_0xbb17('0x2'));var rs=require(_0xbb17('0x3'));var fs=require('fs');var Redis=require(_0xbb17('0x4'));var db=require(_0xbb17('0x5'))['db'];var utils=require(_0xbb17('0x6'));var logger=require(_0xbb17('0x7'))(_0xbb17('0x8'));var config=require(_0xbb17('0x9'));var jayson=require(_0xbb17('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x46d85d,_0x1ea69f,_0x18ee4f){return new BPromise(function(_0x5b41b1,_0x2da53d){return client[_0xbb17('0xb')](_0x46d85d,_0x18ee4f)[_0xbb17('0xc')](function(_0x30fa83){logger['info'](_0xbb17('0xd'),_0x1ea69f,_0xbb17('0xe'));logger['debug'](_0xbb17('0xf'),_0x1ea69f,_0xbb17('0xe'),JSON[_0xbb17('0x10')](_0x30fa83));if(_0x30fa83['error']){if(_0x30fa83[_0xbb17('0x11')][_0xbb17('0x12')]===0x1f4){logger[_0xbb17('0x11')](_0xbb17('0xd'),_0x1ea69f,_0x30fa83['error'][_0xbb17('0x13')]);return _0x2da53d(_0x30fa83[_0xbb17('0x11')][_0xbb17('0x13')]);}logger[_0xbb17('0x11')](_0xbb17('0xd'),_0x1ea69f,_0x30fa83[_0xbb17('0x11')][_0xbb17('0x13')]);return _0x5b41b1(_0x30fa83[_0xbb17('0x11')][_0xbb17('0x13')]);}else{logger[_0xbb17('0x14')](_0xbb17('0xd'),_0x1ea69f,'request\x20sent');_0x5b41b1(_0x30fa83[_0xbb17('0x15')][_0xbb17('0x13')]);}})[_0xbb17('0x16')](function(_0x334d85){logger[_0xbb17('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x1ea69f,_0x334d85);_0x2da53d(_0x334d85);});});}exports['GetCmHopperBlack']=function(_0x49fbf3){var _0x1ffc98=this;return new Promise(function(_0x162b4f,_0x5029f7){return db[_0xbb17('0x17')][_0xbb17('0x18')]({'raw':_0x49fbf3[_0xbb17('0x19')]?_0x49fbf3[_0xbb17('0x19')][_0xbb17('0x1a')]===undefined?!![]:![]:!![],'where':_0x49fbf3[_0xbb17('0x19')]?_0x49fbf3[_0xbb17('0x19')]['where']||null:null,'attributes':_0x49fbf3[_0xbb17('0x19')]?_0x49fbf3[_0xbb17('0x19')][_0xbb17('0x1b')]||null:null,'limit':_0x49fbf3[_0xbb17('0x19')]?_0x49fbf3['options'][_0xbb17('0x1c')]||null:null,'include':_0x49fbf3['options']?_0x49fbf3['options']['include']?_['map'](_0x49fbf3[_0xbb17('0x19')][_0xbb17('0x1d')],function(_0x910293){return{'model':db[_0x910293[_0xbb17('0x1e')]],'as':_0x910293['as'],'attributes':_0x910293[_0xbb17('0x1b')],'include':_0x910293[_0xbb17('0x1d')]?_['map'](_0x910293[_0xbb17('0x1d')],function(_0x56a0ba){return{'model':db[_0x56a0ba['model']],'as':_0x56a0ba['as'],'attributes':_0x56a0ba[_0xbb17('0x1b')],'include':_0x56a0ba[_0xbb17('0x1d')]?_['map'](_0x56a0ba['include'],function(_0x52ea65){return{'model':db[_0x52ea65[_0xbb17('0x1e')]],'as':_0x52ea65['as'],'attributes':_0x52ea65[_0xbb17('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbb17('0xc')](function(_0x17b62c){logger['info'](_0xbb17('0x1f'),_0x49fbf3);logger['debug'](_0xbb17('0x1f'),_0x49fbf3,JSON['stringify'](_0x17b62c));_0x162b4f(_0x17b62c);})[_0xbb17('0x16')](function(_0x3fd4d8){logger['error']('GetCmHopperBlack',_0x3fd4d8[_0xbb17('0x13')],_0x49fbf3);_0x5029f7(_0x1ffc98[_0xbb17('0x11')](0x1f4,_0x3fd4d8[_0xbb17('0x13')]));});});};exports[_0xbb17('0x20')]=function(_0x1c4604){var _0x4e2c0d=this;return new Promise(function(_0x497220,_0x339ef8){return db[_0xbb17('0x17')][_0xbb17('0x21')](_0x1c4604['body'],{'raw':_0x1c4604[_0xbb17('0x19')]?_0x1c4604[_0xbb17('0x19')][_0xbb17('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c4604[_0xbb17('0x19')]?_0x1c4604[_0xbb17('0x19')][_0xbb17('0x22')]||null:null,'attributes':_0x1c4604[_0xbb17('0x19')]?_0x1c4604['options'][_0xbb17('0x1b')]||null:null,'limit':_0x1c4604[_0xbb17('0x19')]?_0x1c4604[_0xbb17('0x19')]['limit']||null:null})[_0xbb17('0xc')](function(_0x4cb282){logger['info'](_0xbb17('0x20'),_0x1c4604);logger[_0xbb17('0x23')](_0xbb17('0x20'),_0x1c4604,JSON[_0xbb17('0x10')](_0x4cb282));_0x497220(_0x4cb282);})[_0xbb17('0x16')](function(_0x37f56e){logger[_0xbb17('0x11')](_0xbb17('0x20'),_0x37f56e[_0xbb17('0x13')],_0x1c4604);_0x339ef8(_0x4e2c0d['error'](0x1f4,_0x37f56e[_0xbb17('0x13')]));});});};exports[_0xbb17('0x24')]=function(_0x2a60a6){var _0x440873=this;return new Promise(function(_0x521d05,_0x4019af){return db['CmHopperBlack'][_0xbb17('0x25')]({'where':_0x2a60a6[_0xbb17('0x19')]?_0x2a60a6['options'][_0xbb17('0x22')]||null:null})['then'](function(_0x39f169){logger[_0xbb17('0x14')](_0xbb17('0x24'),_0x2a60a6);logger['debug']('DestroyCmHopperBlack',_0x2a60a6,JSON['stringify'](_0x39f169));_0x521d05(_0x39f169);})[_0xbb17('0x16')](function(_0x4ecc4d){logger['error']('DestroyCmHopperBlack',_0x4ecc4d[_0xbb17('0x13')],_0x2a60a6);_0x4019af(_0x440873[_0xbb17('0x11')](0x1f4,_0x4ecc4d[_0xbb17('0x13')]));});});};
\ No newline at end of file
index af175a0..e5ba97c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['show','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','describe','/:id'];(function(_0xac1d19,_0x447fa8){var _0x1133e0=function(_0x44a661){while(--_0x44a661){_0xac1d19['push'](_0xac1d19['shift']());}};_0x1133e0(++_0x447fa8);}(_0x3d04,0xbe));var _0x43d0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3d04[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var path=require(_0x43d0('0x2'));var timeout=require(_0x43d0('0x3'));var express=require(_0x43d0('0x4'));var router=express[_0x43d0('0x5')]();var fs_extra=require(_0x43d0('0x6'));var auth=require(_0x43d0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x43d0('0x8'));var controller=require(_0x43d0('0x9'));router[_0x43d0('0xa')]('/',auth[_0x43d0('0xb')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x43d0('0xc')]);router[_0x43d0('0xa')](_0x43d0('0xd'),auth[_0x43d0('0xb')](),controller[_0x43d0('0xe')]);router['put']('/:id',auth[_0x43d0('0xb')](),controller['update']);router['delete'](_0x43d0('0xd'),auth[_0x43d0('0xb')](),controller[_0x43d0('0xf')]);module[_0x43d0('0x10')]=router;
\ No newline at end of file
+var _0x27a0=['isAuthenticated','index','/describe','describe','/:id','show','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','./cmHopperBlack.controller','get'];(function(_0x3cb09b,_0x31c2a5){var _0x242048=function(_0x464aba){while(--_0x464aba){_0x3cb09b['push'](_0x3cb09b['shift']());}};_0x242048(++_0x31c2a5);}(_0x27a0,0xbf));var _0x027a=function(_0x5542f2,_0x520f7b){_0x5542f2=_0x5542f2-0x0;var _0x199670=_0x27a0[_0x5542f2];return _0x199670;};'use strict';var multer=require('multer');var util=require(_0x027a('0x0'));var path=require(_0x027a('0x1'));var timeout=require(_0x027a('0x2'));var express=require(_0x027a('0x3'));var router=express[_0x027a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x027a('0x5'));router[_0x027a('0x6')]('/',auth[_0x027a('0x7')](),controller[_0x027a('0x8')]);router[_0x027a('0x6')](_0x027a('0x9'),auth['isAuthenticated'](),controller[_0x027a('0xa')]);router[_0x027a('0x6')](_0x027a('0xb'),auth['isAuthenticated'](),controller[_0x027a('0xc')]);router[_0x027a('0xd')](_0x027a('0xb'),auth['isAuthenticated'](),controller[_0x027a('0xe')]);router[_0x027a('0xf')](_0x027a('0xb'),auth[_0x027a('0x7')](),controller[_0x027a('0x10')]);module[_0x027a('0x11')]=router;
\ No newline at end of file
index 36b07ed..e7b3823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6d3=['endtime','setDataValue','diff','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE'];(function(_0x1a5780,_0xcb2409){var _0x379b2e=function(_0x2d8d77){while(--_0x2d8d77){_0x1a5780['push'](_0x1a5780['shift']());}};_0x379b2e(++_0xcb2409);}(_0xb6d3,0x16c));var _0x3b6d=function(_0x13de3c,_0x3e06df){_0x13de3c=_0x13de3c-0x0;var _0x1b43b4=_0xb6d3[_0x13de3c];return _0x1b43b4;};'use strict';var Sequelize=require(_0x3b6d('0x0'));var moment=require(_0x3b6d('0x1'));module[_0x3b6d('0x2')]={'state':{'type':Sequelize[_0x3b6d('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x3b6d('0x4')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x3b6d('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x3b6d('0x4')]},'calleridnum':{'type':Sequelize[_0x3b6d('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x3b6d('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x3b6d('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x3b6d('0x4')]},'campaign':{'type':Sequelize[_0x3b6d('0x4')]},'campaigntype':{'type':Sequelize[_0x3b6d('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x3b6d('0x4')]},'secondDisposition':{'type':Sequelize[_0x3b6d('0x4')]},'thirdDisposition':{'type':Sequelize[_0x3b6d('0x4')]},'dispositionat':{'type':Sequelize[_0x3b6d('0x5')],'set':function(_0x38af35){var _0x35bf9b=this['getDataValue'](_0x3b6d('0x6'));if(_0x35bf9b&&_0x38af35){this[_0x3b6d('0x7')]('followuptime',moment(_0x38af35)[_0x3b6d('0x8')](moment(_0x35bf9b),'seconds'));}}},'amd':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x3b6d('0x5')]},'callback':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x3b6d('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x3b6d('0x5')]},'recallme':{'type':Sequelize[_0x3b6d('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3b6d('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x629b=['INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','diff','seconds','BOOLEAN','sequelize'];(function(_0x594ac4,_0x10e44a){var _0x2b8fde=function(_0x53b777){while(--_0x53b777){_0x594ac4['push'](_0x594ac4['shift']());}};_0x2b8fde(++_0x10e44a);}(_0x629b,0xd1));var _0xb629=function(_0xc63d9d,_0x5c7b11){_0xc63d9d=_0xc63d9d-0x0;var _0x39b3f5=_0x629b[_0xc63d9d];return _0x39b3f5;};'use strict';var Sequelize=require(_0xb629('0x0'));var moment=require('moment');module['exports']={'state':{'type':Sequelize[_0xb629('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xb629('0x2')]},'scheduledat':{'type':Sequelize[_0xb629('0x3')]},'countbusyretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xb629('0x2')]},'originatecalleridname':{'type':Sequelize[_0xb629('0x2')]},'calleridnum':{'type':Sequelize[_0xb629('0x2')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xb629('0x3')]},'answertime':{'type':Sequelize[_0xb629('0x3')]},'droptime':{'type':Sequelize[_0xb629('0x3')]},'endtime':{'type':Sequelize[_0xb629('0x3')]},'ringtime':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xb629('0x2')]},'campaign':{'type':Sequelize[_0xb629('0x2')]},'campaigntype':{'type':Sequelize[_0xb629('0x2')]},'membername':{'type':Sequelize[_0xb629('0x2')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xb629('0x2')]},'secondDisposition':{'type':Sequelize[_0xb629('0x2')]},'thirdDisposition':{'type':Sequelize[_0xb629('0x2')]},'dispositionat':{'type':Sequelize[_0xb629('0x3')],'set':function(_0x557e23){var _0x4845c6=this[_0xb629('0x4')](_0xb629('0x5'));if(_0x4845c6&&_0x557e23){this[_0xb629('0x6')]('followuptime',moment(_0x557e23)[_0xb629('0x7')](moment(_0x4845c6),_0xb629('0x8')));}}},'amd':{'type':Sequelize[_0xb629('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0xb629('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xb629('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xb629('0x3')]},'callback':{'type':Sequelize[_0xb629('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xb629('0x3')]},'deleted':{'type':Sequelize[_0xb629('0x2')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xb629('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xb629('0x3')]},'countnosuchnumberretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb629('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 07405a7..6880ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','Campaign','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','CmHopperFinal','includeAll','include','findAll','catch','params','find','describe','body','uniqueid','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','COUNT','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x814b,0x1a2));var _0xb814=function(_0x489b87,_0xd51c93){_0x489b87=_0x489b87-0x0;var _0x1823b6=_0x814b[_0x489b87];return _0x1823b6;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require(_0xb814('0x2'));var jsonpatch=require(_0xb814('0x3'));var rp=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb814('0x6'));var util=require(_0xb814('0x7'));var path=require(_0xb814('0x8'));var sox=require(_0xb814('0x9'));var csv=require(_0xb814('0xa'));var ejs=require(_0xb814('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb814('0xc'));var squel=require(_0xb814('0xd'));var crypto=require('crypto');var jsforce=require(_0xb814('0xe'));var deskjs=require(_0xb814('0xf'));var toCsv=require(_0xb814('0xa'));var querystring=require(_0xb814('0x10'));var Papa=require(_0xb814('0x11'));var Redis=require(_0xb814('0x12'));var authService=require(_0xb814('0x13'));var qs=require(_0xb814('0x14'));var as=require(_0xb814('0x15'));var hardwareService=require(_0xb814('0x16'));var logger=require(_0xb814('0x17'))('api');var utils=require(_0xb814('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb814('0x19'));var db=require(_0xb814('0x1a'))['db'];function respondWithStatusCode(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xcc;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0x1b')](_0x2cc46b);}return _0x35b10d[_0xb814('0x1c')](_0x2cc46b)[_0xb814('0x1d')]();};}function respondWithResult(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0xc8;return function(_0x3f4881){if(_0x3f4881){return _0xa0a2e5[_0xb814('0x1c')](_0x2ab627)[_0xb814('0x1e')](_0x3f4881);}};}function respondWithFilteredResult(_0x39bfcf,_0x303aca){return function(_0x3a71d6){if(_0x3a71d6){var _0x45e0d0=typeof _0x303aca[_0xb814('0x1f')]===_0xb814('0x20')&&typeof _0x303aca[_0xb814('0x21')]===_0xb814('0x20');var _0x48c9df=_0x3a71d6[_0xb814('0x22')];var _0x55ba16=_0x45e0d0?0x0:_0x303aca[_0xb814('0x1f')];var _0xfac75b=_0x45e0d0?_0x3a71d6['count']:_0x303aca['offset']+_0x303aca['limit'];var _0x399b43;if(_0xfac75b>=_0x48c9df){_0xfac75b=_0x48c9df;_0x399b43=0xc8;}else{_0x399b43=0xce;}_0x39bfcf['status'](_0x399b43);return _0x39bfcf['set'](_0xb814('0x23'),_0x55ba16+'-'+_0xfac75b+'/'+_0x48c9df)[_0xb814('0x1e')](_0x3a71d6);}return null;};}function patchUpdates(_0x25b6b6){return function(_0x4e139e){try{jsonpatch[_0xb814('0x24')](_0x4e139e,_0x25b6b6,!![]);}catch(_0x531032){return BPromise[_0xb814('0x25')](_0x531032);}return _0x4e139e[_0xb814('0x26')]();};}function saveUpdates(_0x3b267e,_0x470e81){return function(_0x27352e){if(_0x27352e){return _0x27352e[_0xb814('0x27')](_0x3b267e)[_0xb814('0x28')](function(_0x594470){return _0x594470;});}return null;};}function removeEntity(_0x2ead86,_0x52b7a3){return function(_0x3f81d0){if(_0x3f81d0){return _0x3f81d0[_0xb814('0x29')]()[_0xb814('0x28')](function(){_0x2ead86[_0xb814('0x1c')](0xcc)[_0xb814('0x1d')]();});}};}function handleEntityNotFound(_0xb9e57d,_0x3d836c){return function(_0x5755ea){if(!_0x5755ea){_0xb9e57d[_0xb814('0x1b')](0x194);}return _0x5755ea;};}function handleError(_0xc0ef66,_0x1c2625){_0x1c2625=_0x1c2625||0x1f4;return function(_0x349394){logger[_0xb814('0x2a')](_0x349394[_0xb814('0x2b')]);if(_0x349394[_0xb814('0x2c')]){delete _0x349394[_0xb814('0x2c')];}_0xc0ef66['status'](_0x1c2625)[_0xb814('0x2d')](_0x349394);};}exports[_0xb814('0x2e')]=function(_0x52ed64,_0x9008b2){var _0x37d24d={},_0x530744={},_0x499f22={'count':0x0,'rows':[]};var _0x20577b=_[_0xb814('0x2f')](db['CmHopperFinal'][_0xb814('0x30')],function(_0x526610){return{'name':_0x526610[_0xb814('0x31')],'type':_0x526610['type']['key']};});_0x530744[_0xb814('0x32')]=_['map'](_0x20577b,_0xb814('0x2c'));_0x530744[_0xb814('0x33')]=_[_0xb814('0x34')](_0x52ed64['query']);_0x530744['filters']=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],_0x530744['query']);_0x37d24d[_0xb814('0x36')]=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],qs[_0xb814('0x37')](_0x52ed64[_0xb814('0x33')][_0xb814('0x37')]));_0x37d24d[_0xb814('0x36')]=_0x37d24d['attributes'][_0xb814('0x38')]?_0x37d24d[_0xb814('0x36')]:_0x530744[_0xb814('0x32')];if(!_0x52ed64[_0xb814('0x33')][_0xb814('0x39')]('nolimit')){_0x37d24d[_0xb814('0x21')]=qs['limit'](_0x52ed64[_0xb814('0x33')][_0xb814('0x21')]);_0x37d24d[_0xb814('0x1f')]=qs['offset'](_0x52ed64[_0xb814('0x33')][_0xb814('0x1f')]);}_0x37d24d['order']=qs[_0xb814('0x3a')](_0x52ed64[_0xb814('0x33')][_0xb814('0x3a')]);_0x37d24d[_0xb814('0x3b')]=qs[_0xb814('0x3c')](_[_0xb814('0x3d')](_0x52ed64['query'],_0x530744[_0xb814('0x3c')]),_0x20577b);if(_0x52ed64['query'][_0xb814('0x3e')]){_0x37d24d['where']=_[_0xb814('0x3f')](_0x37d24d['where'],{'$or':_[_0xb814('0x2f')](_0x20577b,function(_0x26675a){if(_0x26675a['type']!=='VIRTUAL'){var _0x5dd6bc={};_0x5dd6bc[_0x26675a['name']]={'$like':'%'+_0x52ed64[_0xb814('0x33')][_0xb814('0x3e')]+'%'};return _0x5dd6bc;}})});}_0x37d24d=_[_0xb814('0x3f')]({},_0x37d24d,_0x52ed64[_0xb814('0x40')]);var _0x51cdba={'where':_0x37d24d['where']};return db[_0xb814('0x41')]['count'](_0x51cdba)[_0xb814('0x28')](function(_0x1098eb){_0x499f22[_0xb814('0x22')]=_0x1098eb;if(_0x52ed64[_0xb814('0x33')][_0xb814('0x42')]){_0x37d24d[_0xb814('0x43')]=[{'all':!![]}];}return db[_0xb814('0x41')][_0xb814('0x44')](_0x37d24d);})[_0xb814('0x28')](function(_0x4b6ff8){_0x499f22['rows']=_0x4b6ff8;return _0x499f22;})['then'](respondWithFilteredResult(_0x9008b2,_0x37d24d))[_0xb814('0x45')](handleError(_0x9008b2,null));};exports['show']=function(_0x29416a,_0x580171){var _0x411723={'raw':!![],'where':{'id':_0x29416a[_0xb814('0x46')]['id']}},_0x44ff56={};_0x44ff56[_0xb814('0x32')]=_['keys'](db[_0xb814('0x41')][_0xb814('0x30')]);_0x44ff56[_0xb814('0x33')]=_[_0xb814('0x34')](_0x29416a[_0xb814('0x33')]);_0x44ff56[_0xb814('0x3c')]=_['intersection'](_0x44ff56[_0xb814('0x32')],_0x44ff56[_0xb814('0x33')]);_0x411723[_0xb814('0x36')]=_[_0xb814('0x35')](_0x44ff56[_0xb814('0x32')],qs[_0xb814('0x37')](_0x29416a[_0xb814('0x33')]['fields']));_0x411723['attributes']=_0x411723[_0xb814('0x36')][_0xb814('0x38')]?_0x411723[_0xb814('0x36')]:_0x44ff56[_0xb814('0x32')];if(_0x29416a[_0xb814('0x33')][_0xb814('0x42')]){_0x411723[_0xb814('0x43')]=[{'all':!![]}];}_0x411723=_[_0xb814('0x3f')]({},_0x411723,_0x29416a[_0xb814('0x40')]);return db[_0xb814('0x41')][_0xb814('0x47')](_0x411723)['then'](handleEntityNotFound(_0x580171,null))[_0xb814('0x28')](respondWithResult(_0x580171,null))[_0xb814('0x45')](handleError(_0x580171,null));};exports['describe']=function(_0x338e80,_0x55234d){return db[_0xb814('0x41')][_0xb814('0x48')]()[_0xb814('0x28')](respondWithResult(_0x55234d,null))[_0xb814('0x45')](handleError(_0x55234d,null));};exports[_0xb814('0x27')]=function(_0x4096d4,_0x2cc806){if(_0x4096d4[_0xb814('0x49')][_0xb814('0x4a')]){delete _0x4096d4[_0xb814('0x49')]['uniqueid'];}return db['CmHopperFinal'][_0xb814('0x47')]({'where':{'uniqueid':_0x4096d4[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x2cc806,null))[_0xb814('0x28')](saveUpdates(_0x4096d4[_0xb814('0x49')],null))[_0xb814('0x28')](respondWithResult(_0x2cc806,null))[_0xb814('0x45')](handleError(_0x2cc806,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26fd0b,_0x388324,_0xf27a6e){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x26fd0b['params']['id']},'attributes':[[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),_0xb814('0x4d')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x4f')))),'noAnswerContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),'busyContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x51')))),'congestionContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x53')))),_0xb814('0x54')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x55')))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0xb814('0x57')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x388324,null))[_0xb814('0x28')](respondWithResult(_0x388324,null))[_0xb814('0x45')](handleError(_0x388324,null));};exports[_0xb814('0x5a')]=function(_0x2e5f99,_0x113350,_0x46014f){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'CampaignId':_0x2e5f99[_0xb814('0x46')]['id']},'attributes':[[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),'noSuchContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x203,\x201,\x20null'))),_0xb814('0x5b')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),_0xb814('0x5c')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x51')))),_0xb814('0x5d')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x53')))),'dropContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x5e')))),_0xb814('0x57')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x113350,null))['then'](respondWithResult(_0x113350,null))[_0xb814('0x45')](handleError(_0x113350,null));};exports[_0xb814('0x5f')]=function(_0xee204,_0x5aabbe,_0x30f717){return db[_0xb814('0x60')][_0xb814('0x47')]({'where':{'id':_0xee204[_0xb814('0x46')]['id']}})['then'](handleEntityNotFound(_0x5aabbe,null))['then'](function(_0x28eaf8){var _0x295488;if(_0x28eaf8){_0x295488=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))[_0xb814('0x64')]([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),_0xb814('0x69'),_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('ANY_VALUE(calleridnum)',_0xb814('0x65'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x66'))[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))[_0xb814('0x6d')](_0xb814('0x70'),_0xb814('0x69'))[_0xb814('0x6d')]('NOW()','createdAt')[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6b'))[_0xb814('0x71')]('cm_hopper_final')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())['where']('state\x20=\x20?',_0xee204[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('phone')[_0xb814('0x71')]('cm_hopper')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]()))['where'](_0xb814('0x74'),squel['select']()[_0xb814('0x6d')](_0xb814('0x75'))['from']('cm_hopper_final')[_0xb814('0x3b')](_0xb814('0x76'),_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x77')))[_0xb814('0x78')](_0xb814('0x67')))[_0xb814('0x72')]();return db[_0xb814('0x4b')]['query'](_0x295488);}return[];})['then'](respondWithResult(_0x5aabbe,null))['catch'](handleError(_0x5aabbe,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x52b6da,_0x45a202,_0x75a33){return db[_0xb814('0x79')]['find']({'where':{'id':_0x52b6da[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x45a202,null))[_0xb814('0x28')](function(_0x26ce5b){var _0x161658;if(_0x26ce5b){_0x161658=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))['fromQuery']([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),'CampaignId',_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x7a'),'phone')['field'](_0xb814('0x6e'),'scheduledAt')[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))['field'](_0xb814('0x7b'),_0xb814('0x7c'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6a'))[_0xb814('0x6d')](_0xb814('0x6e'),'updatedAt')['from'](_0xb814('0x7d'))['where']('CampaignId\x20=\x20?',_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x20?',_0x52b6da[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x65'))['from'](_0xb814('0x63'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da['params']['id'][_0xb814('0x72')]()))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x75'))[_0xb814('0x71')](_0xb814('0x7d'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x204'))['group'](_0xb814('0x67')))['toString']();return db[_0xb814('0x4b')][_0xb814('0x33')](_0x161658);}return[];})[_0xb814('0x28')](respondWithResult(_0x45a202,null))[_0xb814('0x45')](handleError(_0x45a202,null));};exports[_0xb814('0x7f')]=function(_0x2f1674,_0xf0610f,_0x5db5d0){return db['CmHopper'][_0xb814('0x80')]({'where':{'VoiceQueueId':_0x2f1674['body'][_0xb814('0x69')],'CampaignId':_0x2f1674[_0xb814('0x49')][_0xb814('0x7c')],'ContactId':_0x2f1674['body'][_0xb814('0x67')]}})[_0xb814('0x28')](handleEntityNotFound(_0xf0610f,null))[_0xb814('0x28')](function(_0x38c6da){if(_0x38c6da){return _0x38c6da;}return null;})[_0xb814('0x28')](respondWithResult(_0xf0610f,null))['catch'](handleError(_0xf0610f,null));};
\ No newline at end of file
+var _0x5d58=['calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','fromQuery','CampaignId','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../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','CmHopperFinal','include','findAll','rows','show','params','rawAttributes','keys','length','includeAll','merge','describe','catch','body','find','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)'];(function(_0x418549,_0x11b13d){var _0x288826=function(_0x3c0411){while(--_0x3c0411){_0x418549['push'](_0x418549['shift']());}};_0x288826(++_0x11b13d);}(_0x5d58,0x187));var _0x85d5=function(_0x2287b8,_0x2d1173){_0x2287b8=_0x2287b8-0x0;var _0x4f39f3=_0x5d58[_0x2287b8];return _0x4f39f3;};'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['CmHopperFinal']['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['CmHopperFinal'][_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')]()['then'](respondWithResult(_0x12a03,null))[_0x85d5('0x40')](handleError(_0x12a03,null));};exports['update']=function(_0x1f2ef9,_0xd8db57){if(_0x1f2ef9[_0x85d5('0x41')]['uniqueid']){delete _0x1f2ef9['body']['uniqueid'];}return db[_0x85d5('0x34')][_0x85d5('0x42')]({'where':{'uniqueid':_0x1f2ef9[_0x85d5('0x39')]['id']}})['then'](handleEntityNotFound(_0xd8db57,null))['then'](saveUpdates(_0x1f2ef9[_0x85d5('0x41')],null))[_0x85d5('0x1c')](respondWithResult(_0xd8db57,null))[_0x85d5('0x40')](handleError(_0xd8db57,null));};exports[_0x85d5('0x43')]=function(_0x4b2dce,_0x3f69ea,_0x29442a){return db[_0x85d5('0x34')][_0x85d5('0x36')]({'raw':![],'where':{'VoiceQueueId':_0x4b2dce[_0x85d5('0x39')]['id']},'attributes':[[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x47')))),_0x85d5('0x48')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x49')))),_0x85d5('0x4a')],[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x4b')))),_0x85d5('0x4c')],[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x85d5('0x4d')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x85d5('0x4e')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x4f')))),_0x85d5('0x50')],[db['sequelize']['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')]('`state`\x20=\x2022,\x201,\x20null'))),_0x85d5('0x51')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x52')))),_0x85d5('0x53')]]})['then'](handleEntityNotFound(_0x3f69ea,null))[_0x85d5('0x1c')](respondWithResult(_0x3f69ea,null))[_0x85d5('0x40')](handleError(_0x3f69ea,null));};exports[_0x85d5('0x54')]=function(_0x561bde,_0x34aa42,_0x1c3e2c){return db['CmHopperFinal'][_0x85d5('0x36')]({'raw':![],'where':{'CampaignId':_0x561bde['params']['id']},'attributes':[[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x47')))),'noSuchContacts'],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x49')))),_0x85d5('0x4a')],[db[_0x85d5('0x44')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x85d5('0x44')]['literal'](_0x85d5('0x4b')))),_0x85d5('0x4c')],[db['sequelize']['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')]('`state`\x20=\x208,\x201,\x20null'))),_0x85d5('0x4d')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize']['literal'](_0x85d5('0x55')))),'dropContacts'],[db['sequelize']['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x85d5('0x50')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db['sequelize']['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x56')))),_0x85d5('0x51')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2019,\x201,\x20null'))),_0x85d5('0x53')]]})[_0x85d5('0x1c')](handleEntityNotFound(_0x34aa42,null))[_0x85d5('0x1c')](respondWithResult(_0x34aa42,null))['catch'](handleError(_0x34aa42,null));};exports[_0x85d5('0x57')]=function(_0x1fdefb,_0x496586,_0x2dbd18){return db[_0x85d5('0x58')][_0x85d5('0x42')]({'where':{'id':_0x1fdefb[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x496586,null))['then'](function(_0x35ba15){var _0x1b96eb;if(_0x35ba15){_0x1b96eb=squel[_0x85d5('0x59')]()[_0x85d5('0x5a')](_0x85d5('0x5b'))['fromQuery']([_0x85d5('0x5c'),_0x85d5('0x5d'),_0x85d5('0x5e'),_0x85d5('0x5f'),_0x85d5('0x60'),_0x85d5('0x61'),_0x85d5('0x62')],squel[_0x85d5('0x63')]()[_0x85d5('0x64')](_0x85d5('0x65'),'phone')[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x5d'))[_0x85d5('0x64')](_0x85d5('0x67'),_0x85d5('0x5e'))['field'](_0x85d5('0x68'),'ListId')['field'](_0x85d5('0x69'),_0x85d5('0x60'))[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x61'))[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x62'))[_0x85d5('0x6a')]('cm_hopper_final')[_0x85d5('0x30')](_0x85d5('0x6b'),_0x1fdefb[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6d'),_0x1fdefb[_0x85d5('0x41')][_0x85d5('0x6e')][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6f'))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')]('phone')['from'](_0x85d5('0x5b'))['where'](_0x85d5('0x6b'),_0x1fdefb[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]()))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')](_0x85d5('0x71'))[_0x85d5('0x6a')]('cm_hopper_final')[_0x85d5('0x30')](_0x85d5('0x6b'),_0x1fdefb['params']['id'][_0x85d5('0x6c')]())['where'](_0x85d5('0x72')))[_0x85d5('0x73')](_0x85d5('0x5e')))[_0x85d5('0x6c')]();return db['sequelize'][_0x85d5('0x27')](_0x1b96eb);}return[];})[_0x85d5('0x1c')](respondWithResult(_0x496586,null))['catch'](handleError(_0x496586,null));};exports[_0x85d5('0x74')]=function(_0x14e4e8,_0x57f26b,_0x45b1e2){return db[_0x85d5('0x75')][_0x85d5('0x42')]({'where':{'id':_0x14e4e8['params']['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x57f26b,null))[_0x85d5('0x1c')](function(_0x2dacf7){var _0x387a3b;if(_0x2dacf7){_0x387a3b=squel[_0x85d5('0x59')]()[_0x85d5('0x5a')]('cm_hopper')[_0x85d5('0x76')]([_0x85d5('0x5c'),'scheduledAt',_0x85d5('0x5e'),'ListId',_0x85d5('0x77'),_0x85d5('0x61'),_0x85d5('0x62')],squel['select']()[_0x85d5('0x64')](_0x85d5('0x65'),_0x85d5('0x5c'))[_0x85d5('0x64')](_0x85d5('0x66'),'scheduledAt')[_0x85d5('0x64')](_0x85d5('0x67'),_0x85d5('0x5e'))[_0x85d5('0x64')]('ANY_VALUE(ListId)',_0x85d5('0x5f'))[_0x85d5('0x64')](_0x85d5('0x78'),'CampaignId')[_0x85d5('0x64')]('NOW()',_0x85d5('0x61'))[_0x85d5('0x64')]('NOW()','updatedAt')[_0x85d5('0x6a')](_0x85d5('0x79'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6d'),_0x14e4e8['body'][_0x85d5('0x6e')][_0x85d5('0x6c')]())[_0x85d5('0x30')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x85d5('0x30')](_0x85d5('0x70'),squel['select']()[_0x85d5('0x64')](_0x85d5('0x5c'))[_0x85d5('0x6a')](_0x85d5('0x5b'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id']['toString']()))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')]('calleridnum')[_0x85d5('0x6a')](_0x85d5('0x79'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id']['toString']())['where'](_0x85d5('0x72')))['group'](_0x85d5('0x5e')))[_0x85d5('0x6c')]();return db[_0x85d5('0x44')][_0x85d5('0x27')](_0x387a3b);}return[];})[_0x85d5('0x1c')](respondWithResult(_0x57f26b,null))[_0x85d5('0x40')](handleError(_0x57f26b,null));};exports[_0x85d5('0x7b')]=function(_0x48553d,_0xedb32d,_0x5366bc){return db[_0x85d5('0x7c')][_0x85d5('0x7d')]({'where':{'VoiceQueueId':_0x48553d[_0x85d5('0x41')]['VoiceQueueId'],'CampaignId':_0x48553d[_0x85d5('0x41')][_0x85d5('0x77')],'ContactId':_0x48553d[_0x85d5('0x41')]['ContactId']}})['then'](handleEntityNotFound(_0xedb32d,null))[_0x85d5('0x1c')](function(_0x428fd4){if(_0x428fd4){return _0x428fd4;}return null;})['then'](respondWithResult(_0xedb32d,null))[_0x85d5('0x40')](handleError(_0xedb32d,null));};
\ No newline at end of file
index c22555f..be5636e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d3=['rimraf','../../config/environment','exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','util','../../config/logger','api','moment','request-promise','path'];(function(_0x13d7d8,_0x47db44){var _0x23e72d=function(_0x53735a){while(--_0x53735a){_0x13d7d8['push'](_0x13d7d8['shift']());}};_0x23e72d(++_0x47db44);}(_0x82d3,0x180));var _0x382d=function(_0x5441e0,_0x40cd95){_0x5441e0=_0x5441e0-0x0;var _0x23d4bf=_0x82d3[_0x5441e0];return _0x23d4bf;};'use strict';var _=require('lodash');var util=require(_0x382d('0x0'));var logger=require(_0x382d('0x1'))(_0x382d('0x2'));var moment=require(_0x382d('0x3'));var BPromise=require('bluebird');var rp=require(_0x382d('0x4'));var fs=require('fs');var path=require(_0x382d('0x5'));var rimraf=require(_0x382d('0x6'));var config=require(_0x382d('0x7'));var attributes=require('./cmHopperFinal.attributes');module[_0x382d('0x8')]=function(_0xd51822,_0x511658){return _0xd51822['define'](_0x382d('0x9'),attributes,{'tableName':_0x382d('0xa'),'paranoid':![],'indexes':[{'name':_0x382d('0xb'),'fields':[_0x382d('0xb')]},{'name':'uniqueid','fields':[_0x382d('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f33=['calleridnum','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./cmHopperFinal.attributes','exports','CmHopperFinal'];(function(_0x77b7f2,_0x3ce2a1){var _0x1712dc=function(_0x3d55fd){while(--_0x3d55fd){_0x77b7f2['push'](_0x77b7f2['shift']());}};_0x1712dc(++_0x3ce2a1);}(_0x1f33,0x182));var _0x31f3=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x1f33[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x31f3('0x0'));var util=require('util');var logger=require(_0x31f3('0x1'))(_0x31f3('0x2'));var moment=require(_0x31f3('0x3'));var BPromise=require(_0x31f3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x31f3('0x5'));var rimraf=require('rimraf');var config=require(_0x31f3('0x6'));var attributes=require(_0x31f3('0x7'));module[_0x31f3('0x8')]=function(_0x10cac2,_0x116e8e){return _0x10cac2['define'](_0x31f3('0x9'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x31f3('0xa')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 3df22f2..4386d12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x57ae26,_0x28be51){var _0x2f6d54=function(_0x2e59ce){while(--_0x2e59ce){_0x57ae26['push'](_0x57ae26['shift']());}};_0x2f6d54(++_0x28be51);}(_0x7a54,0x106));var _0x47a5=function(_0x1b7ae1,_0x22485a){_0x1b7ae1=_0x1b7ae1-0x0;var _0x3ebe6d=_0x7a54[_0x1b7ae1];return _0x3ebe6d;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _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(_0x35a6ff,_0x1d10ad){var _0x398777=function(_0x2e3df0){while(--_0x2e3df0){_0x35a6ff['push'](_0x35a6ff['shift']());}};_0x398777(++_0x1d10ad);}(_0x7a54,0x106));var _0x47a5=function(_0x315efb,_0x14f96d){_0x315efb=_0x315efb-0x0;var _0x3f73aa=_0x7a54[_0x315efb];return _0x3f73aa;};'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 9e43d0c..00d06d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb3=['path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','get','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/checkContactHopper','put','update','exports','util'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xdeb3,0xb7));var _0x3deb=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xdeb3[_0x19950b];return _0x3c6b41;};'use strict';var multer=require('multer');var util=require(_0x3deb('0x0'));var path=require(_0x3deb('0x1'));var timeout=require(_0x3deb('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3deb('0x3'));var auth=require(_0x3deb('0x4'));var interaction=require(_0x3deb('0x5'));var config=require(_0x3deb('0x6'));var controller=require(_0x3deb('0x7'));router['get']('/',auth[_0x3deb('0x8')](),controller['index']);router[_0x3deb('0x9')]('/describe',auth[_0x3deb('0x8')](),controller[_0x3deb('0xa')]);router[_0x3deb('0x9')](_0x3deb('0xb'),auth[_0x3deb('0x8')](),controller[_0x3deb('0xc')]);router[_0x3deb('0x9')](_0x3deb('0xd'),auth[_0x3deb('0x8')](),controller['countContactsQueueCampaignHopperFinal']);router['get'](_0x3deb('0xe'),auth[_0x3deb('0x8')](),controller[_0x3deb('0xf')]);router['post'](_0x3deb('0x10'),auth[_0x3deb('0x8')](),controller[_0x3deb('0x11')]);router[_0x3deb('0x12')]('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x3deb('0x12')](_0x3deb('0x13'),auth[_0x3deb('0x8')](),controller['checkContactHopper']);router[_0x3deb('0x14')](_0x3deb('0xb'),auth['isAuthenticated'](),controller[_0x3deb('0x15')]);module[_0x3deb('0x16')]=router;
\ No newline at end of file
+var _0x78c9=['isAuthenticated','index','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','express','fs-extra','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get'];(function(_0x5723f0,_0x41e41f){var _0x4ffd7f=function(_0x2548a9){while(--_0x2548a9){_0x5723f0['push'](_0x5723f0['shift']());}};_0x4ffd7f(++_0x41e41f);}(_0x78c9,0x68));var _0x978c=function(_0x2bffd9,_0x111ccf){_0x2bffd9=_0x2bffd9-0x0;var _0x1f4447=_0x78c9[_0x2bffd9];return _0x1f4447;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x978c('0x0'));var router=express['Router']();var fs_extra=require(_0x978c('0x1'));var auth=require(_0x978c('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x978c('0x3'));var controller=require(_0x978c('0x4'));router[_0x978c('0x5')]('/',auth[_0x978c('0x6')](),controller[_0x978c('0x7')]);router[_0x978c('0x5')]('/describe',auth[_0x978c('0x6')](),controller['describe']);router[_0x978c('0x5')](_0x978c('0x8'),auth['isAuthenticated'](),controller[_0x978c('0x9')]);router[_0x978c('0x5')](_0x978c('0xa'),auth[_0x978c('0x6')](),controller[_0x978c('0xb')]);router[_0x978c('0x5')](_0x978c('0xc'),auth[_0x978c('0x6')](),controller[_0x978c('0xd')]);router[_0x978c('0xe')]('/voice/queue/moveContacts/:id',auth[_0x978c('0x6')](),controller[_0x978c('0xf')]);router[_0x978c('0xe')](_0x978c('0x10'),auth[_0x978c('0x6')](),controller[_0x978c('0x11')]);router[_0x978c('0xe')]('/checkContactHopper',auth['isAuthenticated'](),controller[_0x978c('0x12')]);router[_0x978c('0x13')]('/:id',auth[_0x978c('0x6')](),controller[_0x978c('0x14')]);module[_0x978c('0x15')]=router;
\ No newline at end of file
index d851056..0e384da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb0=['BOOLEAN','sequelize','INTEGER','STRING','DATE'];(function(_0x82140,_0x3a9d87){var _0x2b15a6=function(_0x2b565e){while(--_0x2b565e){_0x82140['push'](_0x82140['shift']());}};_0x2b15a6(++_0x3a9d87);}(_0x0bb0,0x11e));var _0x00bb=function(_0x1449ab,_0x5ad863){_0x1449ab=_0x1449ab-0x0;var _0x441f66=_0x0bb0[_0x1449ab];return _0x441f66;};'use strict';var Sequelize=require(_0x00bb('0x0'));module['exports']={'state':{'type':Sequelize[_0x00bb('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x00bb('0x2')]},'scheduledat':{'type':Sequelize[_0x00bb('0x3')]},'countbusyretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x00bb('0x2')]},'calleridnum':{'type':Sequelize[_0x00bb('0x2')]},'calleridname':{'type':Sequelize[_0x00bb('0x2')]},'starttime':{'type':Sequelize[_0x00bb('0x3')]},'responsetime':{'type':Sequelize[_0x00bb('0x3')]},'answertime':{'type':Sequelize[_0x00bb('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x00bb('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x00bb('0x2')]},'campaign':{'type':Sequelize[_0x00bb('0x2')]},'campaigntype':{'type':Sequelize[_0x00bb('0x2')]},'membername':{'type':Sequelize[_0x00bb('0x2')]},'reason':{'type':Sequelize[_0x00bb('0x2')]},'amd':{'type':Sequelize[_0x00bb('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x00bb('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x00bb('0x3')]},'recallme':{'type':Sequelize[_0x00bb('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x00bb('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x00bb('0x1')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x00bb('0x2')]}};
\ No newline at end of file
+var _0xc738=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x5509d1,_0x270393){var _0xd6eab4=function(_0x20c7a2){while(--_0x20c7a2){_0x5509d1['push'](_0x5509d1['shift']());}};_0xd6eab4(++_0x270393);}(_0xc738,0x135));var _0x8c73=function(_0x5751e6,_0x125e5e){_0x5751e6=_0x5751e6-0x0;var _0x4199e4=_0xc738[_0x5751e6];return _0x4199e4;};'use strict';var Sequelize=require(_0x8c73('0x0'));module[_0x8c73('0x1')]={'state':{'type':Sequelize[_0x8c73('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x8c73('0x3')]},'scheduledat':{'type':Sequelize[_0x8c73('0x4')]},'countbusyretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x8c73('0x3')]},'originatecalleridname':{'type':Sequelize[_0x8c73('0x3')]},'calleridnum':{'type':Sequelize[_0x8c73('0x3')]},'calleridname':{'type':Sequelize[_0x8c73('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x8c73('0x4')]},'answertime':{'type':Sequelize[_0x8c73('0x4')]},'droptime':{'type':Sequelize[_0x8c73('0x4')]},'endtime':{'type':Sequelize[_0x8c73('0x4')]},'ringtime':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x8c73('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x8c73('0x3')]},'membername':{'type':Sequelize[_0x8c73('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x8c73('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x8c73('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x8c73('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x8c73('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x8c73('0x4')]},'edited':{'type':Sequelize[_0x8c73('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8c73('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x8c73('0x3')]}};
\ No newline at end of file
index 1a48dff..a39afff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21dd=['type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','length','include','find','create','body','catch','describe','uniqueid','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName'];(function(_0xb4f8ef,_0x44ca8e){var _0x3dc801=function(_0x37b9b8){while(--_0x37b9b8){_0xb4f8ef['push'](_0xb4f8ef['shift']());}};_0x3dc801(++_0x44ca8e);}(_0x21dd,0x109));var _0xd21d=function(_0x421058,_0x42310d){_0x421058=_0x421058-0x0;var _0x5a9213=_0x21dd[_0x421058];return _0x5a9213;};'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(_0xd21d('0x0'));var moment=require('moment');var BPromise=require(_0xd21d('0x1'));var Mustache=require(_0xd21d('0x2'));var util=require(_0xd21d('0x3'));var path=require(_0xd21d('0x4'));var sox=require(_0xd21d('0x5'));var csv=require(_0xd21d('0x6'));var ejs=require(_0xd21d('0x7'));var fs=require('fs');var fs_extra=require(_0xd21d('0x8'));var _=require('lodash');var squel=require(_0xd21d('0x9'));var crypto=require(_0xd21d('0xa'));var jsforce=require(_0xd21d('0xb'));var deskjs=require(_0xd21d('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd21d('0xd'));var Papa=require('papaparse');var Redis=require(_0xd21d('0xe'));var authService=require(_0xd21d('0xf'));var qs=require(_0xd21d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd21d('0x11'));var logger=require(_0xd21d('0x12'))(_0xd21d('0x13'));var utils=require(_0xd21d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd21d('0x15'));var db=require(_0xd21d('0x16'))['db'];function respondWithStatusCode(_0x253852,_0x289b26){_0x289b26=_0x289b26||0xcc;return function(_0x93801e){if(_0x93801e){return _0x253852[_0xd21d('0x17')](_0x289b26);}return _0x253852[_0xd21d('0x18')](_0x289b26)['end']();};}function respondWithResult(_0x2f8397,_0x4825ff){_0x4825ff=_0x4825ff||0xc8;return function(_0x5230fe){if(_0x5230fe){return _0x2f8397[_0xd21d('0x18')](_0x4825ff)['json'](_0x5230fe);}};}function respondWithFilteredResult(_0x5a19c9,_0x142701){return function(_0x23cfcd){if(_0x23cfcd){var _0x375c66=typeof _0x142701[_0xd21d('0x19')]==='undefined'&&typeof _0x142701[_0xd21d('0x1a')]===_0xd21d('0x1b');var _0x450643=_0x23cfcd[_0xd21d('0x1c')];var _0x8ec5ca=_0x375c66?0x0:_0x142701[_0xd21d('0x19')];var _0x1b2962=_0x375c66?_0x23cfcd['count']:_0x142701[_0xd21d('0x19')]+_0x142701[_0xd21d('0x1a')];var _0x471f35;if(_0x1b2962>=_0x450643){_0x1b2962=_0x450643;_0x471f35=0xc8;}else{_0x471f35=0xce;}_0x5a19c9[_0xd21d('0x18')](_0x471f35);return _0x5a19c9[_0xd21d('0x1d')](_0xd21d('0x1e'),_0x8ec5ca+'-'+_0x1b2962+'/'+_0x450643)[_0xd21d('0x1f')](_0x23cfcd);}return null;};}function patchUpdates(_0x38055a){return function(_0x14f4a6){try{jsonpatch[_0xd21d('0x20')](_0x14f4a6,_0x38055a,!![]);}catch(_0x10a963){return BPromise[_0xd21d('0x21')](_0x10a963);}return _0x14f4a6[_0xd21d('0x22')]();};}function saveUpdates(_0x3205b0,_0x1ec8dc){return function(_0x5587e0){if(_0x5587e0){return _0x5587e0[_0xd21d('0x23')](_0x3205b0)[_0xd21d('0x24')](function(_0x384a69){return _0x384a69;});}return null;};}function removeEntity(_0x5d3c9c,_0x42996b){return function(_0x446746){if(_0x446746){return _0x446746[_0xd21d('0x25')]()['then'](function(){_0x5d3c9c[_0xd21d('0x18')](0xcc)[_0xd21d('0x26')]();});}};}function handleEntityNotFound(_0x418699,_0x3cafde){return function(_0x18e4b9){if(!_0x18e4b9){_0x418699[_0xd21d('0x17')](0x194);}return _0x18e4b9;};}function handleError(_0x12fd1b,_0x4c910d){_0x4c910d=_0x4c910d||0x1f4;return function(_0x33d0fa){logger[_0xd21d('0x27')](_0x33d0fa[_0xd21d('0x28')]);if(_0x33d0fa[_0xd21d('0x29')]){delete _0x33d0fa[_0xd21d('0x29')];}_0x12fd1b['status'](_0x4c910d)['send'](_0x33d0fa);};}exports[_0xd21d('0x2a')]=function(_0x45afcb,_0xc61751){var _0x472f70={},_0x2b4a4e={},_0x16b774={'count':0x0,'rows':[]};var _0x2c5356=_[_0xd21d('0x2b')](db[_0xd21d('0x2c')][_0xd21d('0x2d')],function(_0x40585c){return{'name':_0x40585c[_0xd21d('0x2e')],'type':_0x40585c[_0xd21d('0x2f')]['key']};});_0x2b4a4e['model']=_[_0xd21d('0x2b')](_0x2c5356,_0xd21d('0x29'));_0x2b4a4e[_0xd21d('0x30')]=_[_0xd21d('0x31')](_0x45afcb['query']);_0x2b4a4e[_0xd21d('0x32')]=_[_0xd21d('0x33')](_0x2b4a4e[_0xd21d('0x34')],_0x2b4a4e[_0xd21d('0x30')]);_0x472f70[_0xd21d('0x35')]=_['intersection'](_0x2b4a4e[_0xd21d('0x34')],qs['fields'](_0x45afcb['query'][_0xd21d('0x36')]));_0x472f70[_0xd21d('0x35')]=_0x472f70['attributes']['length']?_0x472f70[_0xd21d('0x35')]:_0x2b4a4e[_0xd21d('0x34')];if(!_0x45afcb[_0xd21d('0x30')][_0xd21d('0x37')](_0xd21d('0x38'))){_0x472f70[_0xd21d('0x1a')]=qs[_0xd21d('0x1a')](_0x45afcb[_0xd21d('0x30')][_0xd21d('0x1a')]);_0x472f70['offset']=qs['offset'](_0x45afcb[_0xd21d('0x30')][_0xd21d('0x19')]);}_0x472f70[_0xd21d('0x39')]=qs[_0xd21d('0x3a')](_0x45afcb[_0xd21d('0x30')]['sort']);_0x472f70['where']=qs[_0xd21d('0x32')](_[_0xd21d('0x3b')](_0x45afcb[_0xd21d('0x30')],_0x2b4a4e[_0xd21d('0x32')]),_0x2c5356);if(_0x45afcb[_0xd21d('0x30')]['filter']){_0x472f70[_0xd21d('0x3c')]=_[_0xd21d('0x3d')](_0x472f70[_0xd21d('0x3c')],{'$or':_[_0xd21d('0x2b')](_0x2c5356,function(_0x1e7064){if(_0x1e7064[_0xd21d('0x2f')]!==_0xd21d('0x3e')){var _0x16ccf6={};_0x16ccf6[_0x1e7064[_0xd21d('0x29')]]={'$like':'%'+_0x45afcb[_0xd21d('0x30')][_0xd21d('0x3f')]+'%'};return _0x16ccf6;}})});}_0x472f70=_[_0xd21d('0x3d')]({},_0x472f70,_0x45afcb[_0xd21d('0x40')]);var _0x111f14={'where':_0x472f70[_0xd21d('0x3c')]};return db[_0xd21d('0x2c')][_0xd21d('0x1c')](_0x111f14)[_0xd21d('0x24')](function(_0x51db30){_0x16b774[_0xd21d('0x1c')]=_0x51db30;if(_0x45afcb[_0xd21d('0x30')][_0xd21d('0x41')]){_0x472f70['include']=[{'all':!![]}];}return db[_0xd21d('0x2c')][_0xd21d('0x42')](_0x472f70);})['then'](function(_0x410df2){_0x16b774[_0xd21d('0x43')]=_0x410df2;return _0x16b774;})[_0xd21d('0x24')](respondWithFilteredResult(_0xc61751,_0x472f70))['catch'](handleError(_0xc61751,null));};exports[_0xd21d('0x44')]=function(_0x2b71b5,_0x30443a){var _0x53d491={'raw':!![],'where':{'id':_0x2b71b5[_0xd21d('0x45')]['id']}},_0x11550b={};_0x11550b[_0xd21d('0x34')]=_['keys'](db[_0xd21d('0x2c')]['rawAttributes']);_0x11550b[_0xd21d('0x30')]=_['keys'](_0x2b71b5[_0xd21d('0x30')]);_0x11550b[_0xd21d('0x32')]=_['intersection'](_0x11550b[_0xd21d('0x34')],_0x11550b['query']);_0x53d491['attributes']=_[_0xd21d('0x33')](_0x11550b[_0xd21d('0x34')],qs['fields'](_0x2b71b5[_0xd21d('0x30')][_0xd21d('0x36')]));_0x53d491[_0xd21d('0x35')]=_0x53d491[_0xd21d('0x35')][_0xd21d('0x46')]?_0x53d491['attributes']:_0x11550b['model'];if(_0x2b71b5['query'][_0xd21d('0x41')]){_0x53d491[_0xd21d('0x47')]=[{'all':!![]}];}_0x53d491=_['merge']({},_0x53d491,_0x2b71b5['options']);return db['CmHopperHistory'][_0xd21d('0x48')](_0x53d491)[_0xd21d('0x24')](handleEntityNotFound(_0x30443a,null))[_0xd21d('0x24')](respondWithResult(_0x30443a,null))['catch'](handleError(_0x30443a,null));};exports[_0xd21d('0x49')]=function(_0x420755,_0x5d6b7f){return db[_0xd21d('0x2c')][_0xd21d('0x49')](_0x420755[_0xd21d('0x4a')],{})['then'](respondWithResult(_0x5d6b7f,0xc9))[_0xd21d('0x4b')](handleError(_0x5d6b7f,null));};exports['describe']=function(_0x2c2651,_0x5c1f26){return db['CmHopperHistory'][_0xd21d('0x4c')]()[_0xd21d('0x24')](respondWithResult(_0x5c1f26,null))[_0xd21d('0x4b')](handleError(_0x5c1f26,null));};exports[_0xd21d('0x23')]=function(_0x2dd7d8,_0x132542){if(_0x2dd7d8[_0xd21d('0x4a')]['uniqueid']){delete _0x2dd7d8['body'][_0xd21d('0x4d')];}return db[_0xd21d('0x2c')]['find']({'where':{'uniqueid':_0x2dd7d8[_0xd21d('0x45')]['id']}})['then'](handleEntityNotFound(_0x132542,null))['then'](saveUpdates(_0x2dd7d8['body'],null))['then'](respondWithResult(_0x132542,null))[_0xd21d('0x4b')](handleError(_0x132542,null));};
\ No newline at end of file
+var _0x7ef3=['moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','CmHopperHistory','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','uniqueid','find','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x4169ff,_0x546a37){var _0x4f8185=function(_0x346823){while(--_0x346823){_0x4169ff['push'](_0x4169ff['shift']());}};_0x4f8185(++_0x546a37);}(_0x7ef3,0x94));var _0x37ef=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x7ef3[_0x1a0daa];return _0x1dbe15;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37ef('0x0'));var zipdir=require(_0x37ef('0x1'));var jsonpatch=require(_0x37ef('0x2'));var rp=require(_0x37ef('0x3'));var moment=require(_0x37ef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x37ef('0x5'));var util=require('util');var path=require(_0x37ef('0x6'));var sox=require(_0x37ef('0x7'));var csv=require(_0x37ef('0x8'));var ejs=require(_0x37ef('0x9'));var fs=require('fs');var fs_extra=require(_0x37ef('0xa'));var _=require(_0x37ef('0xb'));var squel=require('squel');var crypto=require(_0x37ef('0xc'));var jsforce=require(_0x37ef('0xd'));var deskjs=require(_0x37ef('0xe'));var toCsv=require('to-csv');var querystring=require(_0x37ef('0xf'));var Papa=require(_0x37ef('0x10'));var Redis=require(_0x37ef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x37ef('0x12'));var as=require(_0x37ef('0x13'));var hardwareService=require(_0x37ef('0x14'));var logger=require(_0x37ef('0x15'))(_0x37ef('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x37ef('0x17'));var db=require(_0x37ef('0x18'))['db'];function respondWithStatusCode(_0x2d2d36,_0x55acdd){_0x55acdd=_0x55acdd||0xcc;return function(_0x3c14dd){if(_0x3c14dd){return _0x2d2d36[_0x37ef('0x19')](_0x55acdd);}return _0x2d2d36[_0x37ef('0x1a')](_0x55acdd)[_0x37ef('0x1b')]();};}function respondWithResult(_0x40a0c3,_0x35b3f9){_0x35b3f9=_0x35b3f9||0xc8;return function(_0x19d6a7){if(_0x19d6a7){return _0x40a0c3[_0x37ef('0x1a')](_0x35b3f9)[_0x37ef('0x1c')](_0x19d6a7);}};}function respondWithFilteredResult(_0x3aa014,_0x531b16){return function(_0x28c3fa){if(_0x28c3fa){var _0x48db2d=typeof _0x531b16[_0x37ef('0x1d')]===_0x37ef('0x1e')&&typeof _0x531b16[_0x37ef('0x1f')]===_0x37ef('0x1e');var _0x5c9f28=_0x28c3fa[_0x37ef('0x20')];var _0x5668f1=_0x48db2d?0x0:_0x531b16[_0x37ef('0x1d')];var _0x822a02=_0x48db2d?_0x28c3fa['count']:_0x531b16[_0x37ef('0x1d')]+_0x531b16[_0x37ef('0x1f')];var _0x1232ca;if(_0x822a02>=_0x5c9f28){_0x822a02=_0x5c9f28;_0x1232ca=0xc8;}else{_0x1232ca=0xce;}_0x3aa014[_0x37ef('0x1a')](_0x1232ca);return _0x3aa014[_0x37ef('0x21')](_0x37ef('0x22'),_0x5668f1+'-'+_0x822a02+'/'+_0x5c9f28)[_0x37ef('0x1c')](_0x28c3fa);}return null;};}function patchUpdates(_0x6c91){return function(_0x3aeaac){try{jsonpatch[_0x37ef('0x23')](_0x3aeaac,_0x6c91,!![]);}catch(_0x3aec2d){return BPromise[_0x37ef('0x24')](_0x3aec2d);}return _0x3aeaac[_0x37ef('0x25')]();};}function saveUpdates(_0x5d3675,_0x158d46){return function(_0x3991f4){if(_0x3991f4){return _0x3991f4[_0x37ef('0x26')](_0x5d3675)[_0x37ef('0x27')](function(_0x4b03ac){return _0x4b03ac;});}return null;};}function removeEntity(_0x54f2ac,_0x18cb42){return function(_0x52b777){if(_0x52b777){return _0x52b777[_0x37ef('0x28')]()[_0x37ef('0x27')](function(){_0x54f2ac[_0x37ef('0x1a')](0xcc)[_0x37ef('0x1b')]();});}};}function handleEntityNotFound(_0x3d7924,_0x47c195){return function(_0x2b7fab){if(!_0x2b7fab){_0x3d7924[_0x37ef('0x19')](0x194);}return _0x2b7fab;};}function handleError(_0x49d6f3,_0x3dd808){_0x3dd808=_0x3dd808||0x1f4;return function(_0x3d947a){logger[_0x37ef('0x29')](_0x3d947a[_0x37ef('0x2a')]);if(_0x3d947a[_0x37ef('0x2b')]){delete _0x3d947a['name'];}_0x49d6f3[_0x37ef('0x1a')](_0x3dd808)[_0x37ef('0x2c')](_0x3d947a);};}exports['index']=function(_0x298668,_0x59c143){var _0x1b7f38={},_0xcdd242={},_0x455dab={'count':0x0,'rows':[]};var _0x1d8260=_[_0x37ef('0x2d')](db[_0x37ef('0x2e')][_0x37ef('0x2f')],function(_0x5104e1){return{'name':_0x5104e1[_0x37ef('0x30')],'type':_0x5104e1[_0x37ef('0x31')]['key']};});_0xcdd242[_0x37ef('0x32')]=_[_0x37ef('0x2d')](_0x1d8260,_0x37ef('0x2b'));_0xcdd242['query']=_['keys'](_0x298668[_0x37ef('0x33')]);_0xcdd242[_0x37ef('0x34')]=_['intersection'](_0xcdd242[_0x37ef('0x32')],_0xcdd242[_0x37ef('0x33')]);_0x1b7f38['attributes']=_[_0x37ef('0x35')](_0xcdd242[_0x37ef('0x32')],qs[_0x37ef('0x36')](_0x298668[_0x37ef('0x33')][_0x37ef('0x36')]));_0x1b7f38[_0x37ef('0x37')]=_0x1b7f38['attributes']['length']?_0x1b7f38[_0x37ef('0x37')]:_0xcdd242['model'];if(!_0x298668[_0x37ef('0x33')][_0x37ef('0x38')]('nolimit')){_0x1b7f38[_0x37ef('0x1f')]=qs[_0x37ef('0x1f')](_0x298668[_0x37ef('0x33')]['limit']);_0x1b7f38[_0x37ef('0x1d')]=qs[_0x37ef('0x1d')](_0x298668[_0x37ef('0x33')][_0x37ef('0x1d')]);}_0x1b7f38['order']=qs[_0x37ef('0x39')](_0x298668[_0x37ef('0x33')][_0x37ef('0x39')]);_0x1b7f38[_0x37ef('0x3a')]=qs[_0x37ef('0x34')](_['pick'](_0x298668['query'],_0xcdd242[_0x37ef('0x34')]),_0x1d8260);if(_0x298668['query'][_0x37ef('0x3b')]){_0x1b7f38[_0x37ef('0x3a')]=_[_0x37ef('0x3c')](_0x1b7f38[_0x37ef('0x3a')],{'$or':_[_0x37ef('0x2d')](_0x1d8260,function(_0x309a98){if(_0x309a98[_0x37ef('0x31')]!==_0x37ef('0x3d')){var _0x5a46cd={};_0x5a46cd[_0x309a98[_0x37ef('0x2b')]]={'$like':'%'+_0x298668[_0x37ef('0x33')][_0x37ef('0x3b')]+'%'};return _0x5a46cd;}})});}_0x1b7f38=_[_0x37ef('0x3c')]({},_0x1b7f38,_0x298668[_0x37ef('0x3e')]);var _0x451181={'where':_0x1b7f38[_0x37ef('0x3a')]};return db[_0x37ef('0x2e')][_0x37ef('0x20')](_0x451181)['then'](function(_0x9a993c){_0x455dab['count']=_0x9a993c;if(_0x298668[_0x37ef('0x33')][_0x37ef('0x3f')]){_0x1b7f38[_0x37ef('0x40')]=[{'all':!![]}];}return db[_0x37ef('0x2e')][_0x37ef('0x41')](_0x1b7f38);})[_0x37ef('0x27')](function(_0x4a7b6d){_0x455dab[_0x37ef('0x42')]=_0x4a7b6d;return _0x455dab;})[_0x37ef('0x27')](respondWithFilteredResult(_0x59c143,_0x1b7f38))[_0x37ef('0x43')](handleError(_0x59c143,null));};exports[_0x37ef('0x44')]=function(_0x5387fb,_0x16ac56){var _0xd294dc={'raw':!![],'where':{'id':_0x5387fb[_0x37ef('0x45')]['id']}},_0x231ced={};_0x231ced[_0x37ef('0x32')]=_[_0x37ef('0x46')](db[_0x37ef('0x2e')]['rawAttributes']);_0x231ced[_0x37ef('0x33')]=_[_0x37ef('0x46')](_0x5387fb[_0x37ef('0x33')]);_0x231ced[_0x37ef('0x34')]=_[_0x37ef('0x35')](_0x231ced[_0x37ef('0x32')],_0x231ced['query']);_0xd294dc[_0x37ef('0x37')]=_[_0x37ef('0x35')](_0x231ced[_0x37ef('0x32')],qs[_0x37ef('0x36')](_0x5387fb[_0x37ef('0x33')][_0x37ef('0x36')]));_0xd294dc[_0x37ef('0x37')]=_0xd294dc[_0x37ef('0x37')][_0x37ef('0x47')]?_0xd294dc[_0x37ef('0x37')]:_0x231ced['model'];if(_0x5387fb[_0x37ef('0x33')]['includeAll']){_0xd294dc[_0x37ef('0x40')]=[{'all':!![]}];}_0xd294dc=_[_0x37ef('0x3c')]({},_0xd294dc,_0x5387fb[_0x37ef('0x3e')]);return db[_0x37ef('0x2e')]['find'](_0xd294dc)['then'](handleEntityNotFound(_0x16ac56,null))['then'](respondWithResult(_0x16ac56,null))[_0x37ef('0x43')](handleError(_0x16ac56,null));};exports[_0x37ef('0x48')]=function(_0x5d3c89,_0x23c264){return db[_0x37ef('0x2e')][_0x37ef('0x48')](_0x5d3c89[_0x37ef('0x49')],{})[_0x37ef('0x27')](respondWithResult(_0x23c264,0xc9))[_0x37ef('0x43')](handleError(_0x23c264,null));};exports['describe']=function(_0x43b0f4,_0x53ab0){return db[_0x37ef('0x2e')]['describe']()['then'](respondWithResult(_0x53ab0,null))[_0x37ef('0x43')](handleError(_0x53ab0,null));};exports[_0x37ef('0x26')]=function(_0x5d5aa7,_0x51097b){if(_0x5d5aa7[_0x37ef('0x49')][_0x37ef('0x4a')]){delete _0x5d5aa7[_0x37ef('0x49')][_0x37ef('0x4a')];}return db['CmHopperHistory'][_0x37ef('0x4b')]({'where':{'uniqueid':_0x5d5aa7['params']['id']}})[_0x37ef('0x27')](handleEntityNotFound(_0x51097b,null))[_0x37ef('0x27')](saveUpdates(_0x5d5aa7[_0x37ef('0x49')],null))[_0x37ef('0x27')](respondWithResult(_0x51097b,null))[_0x37ef('0x43')](handleError(_0x51097b,null));};
\ No newline at end of file
index 74fec93..b0e878d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b1=['uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory','endtime'];(function(_0x911353,_0x1648ed){var _0x2f05fa=function(_0x4a00a4){while(--_0x4a00a4){_0x911353['push'](_0x911353['shift']());}};_0x2f05fa(++_0x1648ed);}(_0x29b1,0x16d));var _0x129b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x29b1[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x129b('0x0'));var util=require(_0x129b('0x1'));var logger=require(_0x129b('0x2'))(_0x129b('0x3'));var moment=require(_0x129b('0x4'));var BPromise=require('bluebird');var rp=require(_0x129b('0x5'));var fs=require('fs');var path=require(_0x129b('0x6'));var rimraf=require(_0x129b('0x7'));var config=require(_0x129b('0x8'));var attributes=require(_0x129b('0x9'));module[_0x129b('0xa')]=function(_0x31e428,_0xe27ed4){return _0x31e428['define'](_0x129b('0xb'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x129b('0xc'),'fields':[_0x129b('0xc')]},{'name':'uniqueid','fields':[_0x129b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb8cb=['moment','bluebird','request-promise','rimraf','../../config/environment','define','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xb8cb,0xd9));var _0xbb8c=function(_0x2d9355,_0x43661e){_0x2d9355=_0x2d9355-0x0;var _0x5ed6e5=_0xb8cb[_0x2d9355];return _0x5ed6e5;};'use strict';var _=require(_0xbb8c('0x0'));var util=require(_0xbb8c('0x1'));var logger=require(_0xbb8c('0x2'))(_0xbb8c('0x3'));var moment=require(_0xbb8c('0x4'));var BPromise=require(_0xbb8c('0x5'));var rp=require(_0xbb8c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb8c('0x7'));var config=require(_0xbb8c('0x8'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0x3b2ad2,_0x27c59e){return _0x3b2ad2[_0xbb8c('0x9')]('CmHopperHistory',attributes,{'tableName':_0xbb8c('0xa'),'paranoid':![],'indexes':[{'name':_0xbb8c('0xb'),'fields':[_0xbb8c('0xb')]},{'name':_0xbb8c('0xc'),'fields':[_0xbb8c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 5b9e85f..50f1438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc3d=['`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=\x2020,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','create','options','CreateCmHopperHistory','CmHopperHistory','findAll','raw','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','AvgHandleTime','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`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'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xdc3d,0x1ad));var _0xddc3=function(_0x312fc4,_0x4e0c27){_0x312fc4=_0x312fc4-0x0;var _0x128d23=_0xdc3d[_0x312fc4];return _0x128d23;};'use strict';var _=require(_0xddc3('0x0'));var util=require(_0xddc3('0x1'));var moment=require(_0xddc3('0x2'));var BPromise=require(_0xddc3('0x3'));var rs=require(_0xddc3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xddc3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xddc3('0x6'))('rpc');var config=require(_0xddc3('0x7'));var jayson=require(_0xddc3('0x8'));var client=jayson['client'][_0xddc3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6167cd,_0x15ddd9,_0x451e28){return new BPromise(function(_0x5aaef3,_0x52f7e7){return client[_0xddc3('0xa')](_0x6167cd,_0x451e28)[_0xddc3('0xb')](function(_0x511fe3){logger[_0xddc3('0xc')]('CmHopperHistory,\x20%s,\x20%s',_0x15ddd9,_0xddc3('0xd'));logger[_0xddc3('0xe')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x15ddd9,'request\x20sent',JSON[_0xddc3('0xf')](_0x511fe3));if(_0x511fe3[_0xddc3('0x10')]){if(_0x511fe3[_0xddc3('0x10')][_0xddc3('0x11')]===0x1f4){logger[_0xddc3('0x10')](_0xddc3('0x12'),_0x15ddd9,_0x511fe3[_0xddc3('0x10')]['message']);return _0x52f7e7(_0x511fe3['error'][_0xddc3('0x13')]);}logger[_0xddc3('0x10')](_0xddc3('0x12'),_0x15ddd9,_0x511fe3['error'][_0xddc3('0x13')]);return _0x5aaef3(_0x511fe3[_0xddc3('0x10')][_0xddc3('0x13')]);}else{logger[_0xddc3('0xc')](_0xddc3('0x12'),_0x15ddd9,_0xddc3('0xd'));_0x5aaef3(_0x511fe3[_0xddc3('0x14')]['message']);}})['catch'](function(_0x197e61){logger[_0xddc3('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x15ddd9,_0x197e61);_0x52f7e7(_0x197e61);});});}exports['CreateCmHopperHistory']=function(_0x535e93){var _0x3ff5fb=this;return new Promise(function(_0x5eb3bf,_0x2b202c){return db['CmHopperHistory'][_0xddc3('0x15')](_0x535e93['body'],{'raw':_0x535e93[_0xddc3('0x16')]?_0x535e93['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x18ee31){logger[_0xddc3('0xc')](_0xddc3('0x17'),_0x535e93);logger[_0xddc3('0xe')](_0xddc3('0x17'),_0x535e93,JSON[_0xddc3('0xf')](_0x18ee31));_0x5eb3bf(_0x18ee31);})['catch'](function(_0x375c43){logger[_0xddc3('0x10')]('CreateCmHopperHistory',_0x375c43[_0xddc3('0x13')],_0x535e93);_0x2b202c(_0x3ff5fb[_0xddc3('0x10')](0x1f4,_0x375c43['message']));});});};exports['AvgHandleTime']=function(_0x11d60a){var _0x33c78c=this;return new Promise(function(_0x4a1d29,_0xd1bba7){return db[_0xddc3('0x18')][_0xddc3('0x19')]({'raw':_0x11d60a[_0xddc3('0x16')]?_0x11d60a['options'][_0xddc3('0x1a')]===undefined?!![]:![]:!![],'where':_0x11d60a[_0xddc3('0x16')]?_0x11d60a[_0xddc3('0x16')][_0xddc3('0x1b')]||null:null,'attributes':[[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')][_0xddc3('0x1e')]('id')),_0xddc3('0x1f')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0xddc3('0x21')],[db[_0xddc3('0x1c')]['fn']('COUNT',db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x22')))),_0xddc3('0x23')],[db['sequelize']['fn']('COUNT',db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x24')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x25'),db['sequelize']['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xddc3('0x26')],[db['sequelize']['fn'](_0xddc3('0x25'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xddc3('0x27')]]})[_0xddc3('0xb')](function(_0x34e212){logger[_0xddc3('0xc')](_0xddc3('0x28'),_0x11d60a);logger[_0xddc3('0xe')](_0xddc3('0x28'),_0x11d60a,JSON[_0xddc3('0xf')](_0x34e212));_0x4a1d29(_0x34e212);})['catch'](function(_0x37432e){logger[_0xddc3('0x10')]('AvgHandleTime',_0x37432e[_0xddc3('0x13')],_0x11d60a);_0xd1bba7(_0x33c78c[_0xddc3('0x10')](0x1f4,_0x37432e[_0xddc3('0x13')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x27edad){var _0x5e30a9=this;return new Promise(function(_0x564629,_0x32f46a){return db[_0xddc3('0x18')][_0xddc3('0x19')]({'raw':_0x27edad['options']?_0x27edad[_0xddc3('0x16')][_0xddc3('0x1a')]===undefined?!![]:![]:!![],'where':_0x27edad['options']?_0x27edad['options'][_0xddc3('0x1b')]||null:null,'attributes':[[_0xddc3('0x29'),_0xddc3('0x2a')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x2b')))),'outboundNoSuchCallsDay'],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')]('`state`\x20=\x203,\x201,\x20null'))),_0xddc3('0x2c')],[db['sequelize']['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db['sequelize'][_0xddc3('0x20')](_0xddc3('0x2d')))),_0xddc3('0x2e')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xddc3('0x1c')]['literal'](_0xddc3('0x2f')))),_0xddc3('0x30')],[db['sequelize']['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x31')))),'outboundCongestionCallsDay'],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db['sequelize']['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x32')))),_0xddc3('0x33')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x34')))),_0xddc3('0x35')],[db[_0xddc3('0x1c')]['fn']('COUNT',db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')]['literal'](_0xddc3('0x36')))),_0xddc3('0x37')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')]['literal'](_0xddc3('0x38')))),_0xddc3('0x39')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x3a')))),_0xddc3('0x3b')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')](_0xddc3('0x3c')))),_0xddc3('0x3d')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')]['literal']('`state`\x20=\x2016,\x201,\x20null'))),'outboundAnswerAgiCallsDay'],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')]['literal'](_0xddc3('0x3e')))),_0xddc3('0x3d')],[db[_0xddc3('0x1c')]['fn']('COUNT',db[_0xddc3('0x1c')]['fn']('IF',db[_0xddc3('0x1c')][_0xddc3('0x20')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xddc3('0x3f')]],'group':[_0xddc3('0x29')]})[_0xddc3('0xb')](function(_0x18dcde){logger[_0xddc3('0xc')](_0xddc3('0x40'),_0x27edad);logger[_0xddc3('0xe')](_0xddc3('0x40'),_0x27edad,JSON['stringify'](_0x18dcde));_0x564629(_0x18dcde);})['catch'](function(_0x1a641b){logger[_0xddc3('0x10')]('GetVoiceQueueHopperHistory',_0x1a641b[_0xddc3('0x13')],_0x27edad);_0x32f46a(_0x5e30a9['error'](0x1f4,_0x1a641b[_0xddc3('0x13')]));});});};exports[_0xddc3('0x41')]=function(_0x144450){var _0x48a1ba=this;return new Promise(function(_0x3c37d5,_0x560723){return db[_0xddc3('0x18')][_0xddc3('0x19')]({'raw':_0x144450[_0xddc3('0x16')]?_0x144450[_0xddc3('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x144450[_0xddc3('0x16')]?_0x144450[_0xddc3('0x16')][_0xddc3('0x1b')]||null:null,'attributes':[[_0xddc3('0x29'),_0xddc3('0x2a')],[db[_0xddc3('0x1c')]['fn'](_0xddc3('0x1d'),db['sequelize']['col']('id')),_0xddc3('0x42')],[db[_0xddc3('0x1c')]['fn']('COUNT',db[_0xddc3('0x1c')]['fn']('IF',db['sequelize'][_0xddc3('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0xddc3('0x43')]],'group':[_0xddc3('0x29')]})[_0xddc3('0xb')](function(_0x19ea31){logger['info'](_0xddc3('0x41'),_0x144450);logger['debug']('GetCampaignHopperHistory',_0x144450,JSON['stringify'](_0x19ea31));_0x3c37d5(_0x19ea31);})[_0xddc3('0x44')](function(_0x3e4c9d){logger[_0xddc3('0x10')](_0xddc3('0x41'),_0x3e4c9d['message'],_0x144450);_0x560723(_0x48a1ba['error'](0x1f4,_0x3e4c9d['message']));});});};
\ No newline at end of file
+var _0x90c7=['`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','name','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CreateCmHopperHistory','CmHopperHistory','body','options','raw','debug','catch','AvgHandleTime','findAll','where','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','COUNT','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x90c7,0x9c));var _0x790c=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x90c7[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x790c('0x0'));var util=require(_0x790c('0x1'));var moment=require(_0x790c('0x2'));var BPromise=require(_0x790c('0x3'));var rs=require(_0x790c('0x4'));var fs=require('fs');var Redis=require(_0x790c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x790c('0x6'));var logger=require(_0x790c('0x7'))('rpc');var config=require(_0x790c('0x8'));var jayson=require(_0x790c('0x9'));var client=jayson[_0x790c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f5e96,_0x245625,_0x8e8cca){return new BPromise(function(_0x10b607,_0x2d5ffa){return client[_0x790c('0xb')](_0x2f5e96,_0x8e8cca)[_0x790c('0xc')](function(_0x521fef){logger[_0x790c('0xd')](_0x790c('0xe'),_0x245625,'request\x20sent');logger['debug']('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x245625,_0x790c('0xf'),JSON[_0x790c('0x10')](_0x521fef));if(_0x521fef[_0x790c('0x11')]){if(_0x521fef[_0x790c('0x11')][_0x790c('0x12')]===0x1f4){logger[_0x790c('0x11')](_0x790c('0xe'),_0x245625,_0x521fef['error']['message']);return _0x2d5ffa(_0x521fef['error'][_0x790c('0x13')]);}logger[_0x790c('0x11')](_0x790c('0xe'),_0x245625,_0x521fef[_0x790c('0x11')][_0x790c('0x13')]);return _0x10b607(_0x521fef[_0x790c('0x11')][_0x790c('0x13')]);}else{logger[_0x790c('0xd')](_0x790c('0xe'),_0x245625,'request\x20sent');_0x10b607(_0x521fef['result'][_0x790c('0x13')]);}})['catch'](function(_0x102235){logger['error'](_0x790c('0xe'),_0x245625,_0x102235);_0x2d5ffa(_0x102235);});});}exports[_0x790c('0x14')]=function(_0x131a7a){var _0x36baf0=this;return new Promise(function(_0x336650,_0x15812d){return db[_0x790c('0x15')]['create'](_0x131a7a[_0x790c('0x16')],{'raw':_0x131a7a[_0x790c('0x17')]?_0x131a7a[_0x790c('0x17')][_0x790c('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x197384){logger[_0x790c('0xd')](_0x790c('0x14'),_0x131a7a);logger[_0x790c('0x19')](_0x790c('0x14'),_0x131a7a,JSON['stringify'](_0x197384));_0x336650(_0x197384);})[_0x790c('0x1a')](function(_0x3ce7a9){logger[_0x790c('0x11')](_0x790c('0x14'),_0x3ce7a9[_0x790c('0x13')],_0x131a7a);_0x15812d(_0x36baf0[_0x790c('0x11')](0x1f4,_0x3ce7a9['message']));});});};exports[_0x790c('0x1b')]=function(_0x3697be){var _0x50c943=this;return new Promise(function(_0x3c7cf6,_0x470135){return db[_0x790c('0x15')][_0x790c('0x1c')]({'raw':_0x3697be[_0x790c('0x17')]?_0x3697be[_0x790c('0x17')][_0x790c('0x18')]===undefined?!![]:![]:!![],'where':_0x3697be[_0x790c('0x17')]?_0x3697be[_0x790c('0x17')][_0x790c('0x1d')]||null:null,'attributes':[[db[_0x790c('0x1e')]['fn']('COUNT',db[_0x790c('0x1e')][_0x790c('0x1f')]('id')),_0x790c('0x20')],[db[_0x790c('0x1e')]['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db['sequelize'][_0x790c('0x21')](_0x790c('0x22')))),_0x790c('0x23')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x2010,\x201,\x20null'))),_0x790c('0x25')],[db['sequelize']['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db['sequelize'][_0x790c('0x21')](_0x790c('0x26')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x790c('0x1e')]['fn'](_0x790c('0x27'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x790c('0x28')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x27'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x29')))),_0x790c('0x2a')]]})['then'](function(_0x43b1bb){logger[_0x790c('0xd')]('AvgHandleTime',_0x3697be);logger[_0x790c('0x19')](_0x790c('0x1b'),_0x3697be,JSON[_0x790c('0x10')](_0x43b1bb));_0x3c7cf6(_0x43b1bb);})[_0x790c('0x1a')](function(_0x4c3921){logger[_0x790c('0x11')](_0x790c('0x1b'),_0x4c3921['message'],_0x3697be);_0x470135(_0x50c943[_0x790c('0x11')](0x1f4,_0x4c3921[_0x790c('0x13')]));});});};exports[_0x790c('0x2b')]=function(_0x46c872){var _0x33eaef=this;return new Promise(function(_0x20e3a0,_0x523aad){return db[_0x790c('0x15')][_0x790c('0x1c')]({'raw':_0x46c872[_0x790c('0x17')]?_0x46c872[_0x790c('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x46c872['options']?_0x46c872['options'][_0x790c('0x1d')]||null:null,'attributes':[[_0x790c('0x2c'),'name'],[db[_0x790c('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x790c('0x1e')]['literal'](_0x790c('0x2d')))),'outboundNoSuchCallsDay'],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db['sequelize'][_0x790c('0x21')](_0x790c('0x2e')))),_0x790c('0x2f')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x22')))),'outboundAnswerCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x30')))),_0x790c('0x31')],[db[_0x790c('0x1e')]['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x32')))),_0x790c('0x33')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db['sequelize'][_0x790c('0x21')](_0x790c('0x34')))),_0x790c('0x35')],[db[_0x790c('0x1e')]['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x790c('0x36')],[db[_0x790c('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')]['literal']('`state`\x20=\x2013,\x201,\x20null'))),_0x790c('0x37')],[db['sequelize']['fn']('COUNT',db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')]['literal']('`state`\x20=\x2014,\x201,\x20null'))),_0x790c('0x38')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x39')))),_0x790c('0x3a')],[db['sequelize']['fn'](_0x790c('0x24'),db['sequelize']['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x3b')))),_0x790c('0x3c')],[db['sequelize']['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x2020,\x201,\x20null'))),'outboundRejectCallsDay'],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')](_0x790c('0x3d')))),_0x790c('0x3e')]],'group':[_0x790c('0x2c')]})[_0x790c('0xc')](function(_0x976a94){logger[_0x790c('0xd')](_0x790c('0x2b'),_0x46c872);logger[_0x790c('0x19')](_0x790c('0x2b'),_0x46c872,JSON[_0x790c('0x10')](_0x976a94));_0x20e3a0(_0x976a94);})[_0x790c('0x1a')](function(_0xd68c45){logger['error'](_0x790c('0x2b'),_0xd68c45[_0x790c('0x13')],_0x46c872);_0x523aad(_0x33eaef[_0x790c('0x11')](0x1f4,_0xd68c45[_0x790c('0x13')]));});});};exports[_0x790c('0x3f')]=function(_0x84d38b){var _0x23d8dd=this;return new Promise(function(_0x5894c1,_0x4ea3e1){return db['CmHopperHistory'][_0x790c('0x1c')]({'raw':_0x84d38b[_0x790c('0x17')]?_0x84d38b[_0x790c('0x17')][_0x790c('0x18')]===undefined?!![]:![]:!![],'where':_0x84d38b[_0x790c('0x17')]?_0x84d38b['options']['where']||null:null,'attributes':[[_0x790c('0x2c'),_0x790c('0x40')],[db['sequelize']['fn']('COUNT',db[_0x790c('0x1e')][_0x790c('0x1f')]('id')),_0x790c('0x41')],[db[_0x790c('0x1e')]['fn'](_0x790c('0x24'),db[_0x790c('0x1e')]['fn']('IF',db[_0x790c('0x1e')][_0x790c('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0x790c('0x42')]],'group':[_0x790c('0x2c')]})[_0x790c('0xc')](function(_0x11a477){logger[_0x790c('0xd')](_0x790c('0x3f'),_0x84d38b);logger['debug'](_0x790c('0x3f'),_0x84d38b,JSON['stringify'](_0x11a477));_0x5894c1(_0x11a477);})[_0x790c('0x1a')](function(_0x23115d){logger[_0x790c('0x11')](_0x790c('0x3f'),_0x23115d[_0x790c('0x13')],_0x84d38b);_0x4ea3e1(_0x23d8dd[_0x790c('0x11')](0x1f4,_0x23115d[_0x790c('0x13')]));});});};
\ No newline at end of file
index 9b6ac08..b27e67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e71=['../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','describe','/:id','isAuthenticated','post','create','put','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x216687,_0x22dc4c){var _0xd1a759=function(_0x47fa38){while(--_0x47fa38){_0x216687['push'](_0x216687['shift']());}};_0xd1a759(++_0x22dc4c);}(_0x3e71,0x1ed));var _0x13e7=function(_0x5dc8a5,_0x3a97c6){_0x5dc8a5=_0x5dc8a5-0x0;var _0x4d1301=_0x3e71[_0x5dc8a5];return _0x4d1301;};'use strict';var multer=require(_0x13e7('0x0'));var util=require('util');var path=require(_0x13e7('0x1'));var timeout=require(_0x13e7('0x2'));var express=require(_0x13e7('0x3'));var router=express[_0x13e7('0x4')]();var fs_extra=require(_0x13e7('0x5'));var auth=require(_0x13e7('0x6'));var interaction=require(_0x13e7('0x7'));var config=require(_0x13e7('0x8'));var controller=require(_0x13e7('0x9'));router[_0x13e7('0xa')]('/',auth['isAuthenticated'](),controller[_0x13e7('0xb')]);router[_0x13e7('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x13e7('0xc')]);router[_0x13e7('0xa')](_0x13e7('0xd'),auth[_0x13e7('0xe')](),controller['show']);router[_0x13e7('0xf')]('/',auth[_0x13e7('0xe')](),controller[_0x13e7('0x10')]);router[_0x13e7('0x11')](_0x13e7('0xd'),auth[_0x13e7('0xe')](),controller[_0x13e7('0x12')]);module[_0x13e7('0x13')]=router;
\ No newline at end of file
+var _0xb89e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','get','describe','/:id','show','post','create','put','update','exports','multer','util','path','Router','fs-extra'];(function(_0x1bd3e4,_0x14cb7d){var _0x33baef=function(_0x195fc5){while(--_0x195fc5){_0x1bd3e4['push'](_0x1bd3e4['shift']());}};_0x33baef(++_0x14cb7d);}(_0xb89e,0x19d));var _0xeb89=function(_0x1ca9eb,_0x99a10b){_0x1ca9eb=_0x1ca9eb-0x0;var _0x2e284e=_0xb89e[_0x1ca9eb];return _0x2e284e;};'use strict';var multer=require(_0xeb89('0x0'));var util=require(_0xeb89('0x1'));var path=require(_0xeb89('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xeb89('0x3')]();var fs_extra=require(_0xeb89('0x4'));var auth=require(_0xeb89('0x5'));var interaction=require(_0xeb89('0x6'));var config=require(_0xeb89('0x7'));var controller=require(_0xeb89('0x8'));router['get']('/',auth[_0xeb89('0x9')](),controller['index']);router[_0xeb89('0xa')]('/describe',auth[_0xeb89('0x9')](),controller[_0xeb89('0xb')]);router[_0xeb89('0xa')](_0xeb89('0xc'),auth[_0xeb89('0x9')](),controller[_0xeb89('0xd')]);router[_0xeb89('0xe')]('/',auth[_0xeb89('0x9')](),controller[_0xeb89('0xf')]);router[_0xeb89('0x10')](_0xeb89('0xc'),auth['isAuthenticated'](),controller[_0xeb89('0x11')]);module[_0xeb89('0x12')]=router;
\ No newline at end of file
index 6d038e5..8c1f680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3685=['STRING','name','sequelize'];(function(_0x5c7053,_0x38ed2c){var _0x7893a=function(_0xfa6ce0){while(--_0xfa6ce0){_0x5c7053['push'](_0x5c7053['shift']());}};_0x7893a(++_0x38ed2c);}(_0x3685,0xf8));var _0x5368=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3685[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x5368('0x0'));module['exports']={'name':{'type':Sequelize[_0x5368('0x1')],'unique':_0x5368('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5368('0x1')]},'dialPrefix':{'type':Sequelize[_0x5368('0x1')]}};
\ No newline at end of file
+var _0xafdd=['STRING','name','sequelize','exports'];(function(_0x9bb5a4,_0x9a6fa8){var _0x4ff9d7=function(_0x302ae5){while(--_0x302ae5){_0x9bb5a4['push'](_0x9bb5a4['shift']());}};_0x4ff9d7(++_0x9a6fa8);}(_0xafdd,0x19a));var _0xdafd=function(_0x119733,_0x174703){_0x119733=_0x119733-0x0;var _0x3fd768=_0xafdd[_0x119733];return _0x3fd768;};'use strict';var Sequelize=require(_0xdafd('0x0'));module[_0xdafd('0x1')]={'name':{'type':Sequelize[_0xdafd('0x2')],'unique':_0xdafd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xdafd('0x2')]},'dialPrefix':{'type':Sequelize[_0xdafd('0x2')]}};
\ No newline at end of file
index 0cbcfa6..a6f6e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06c3=['role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','addDisposition','ListId','Disposition','getDispositions','findOne','removeDispositions','ids','addContacts','CmContact','isArray','tags','push','each','success','dataValues','errors','message','getContacts','concat','hasOwnProperty','raw','getContactsCsv','OrderBy','alias','select','from','cm_contacts','c.ListId\x20=\x20?','field','c.cf_','customField_','item','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','description','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','format','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','addCustomField','transaction','CmCustomField','addCustomFields','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','spread','eml-format','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./cmList.socket','register','status','offset','count','limit','set','Content-Range','json','apply','reject','save','update','then','get','Lists','UserProfileResource','sendStatus','name','send','index','map','CmList','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x342a3e,_0x82ee7b){var _0x2d8605=function(_0x256141){while(--_0x256141){_0x342a3e['push'](_0x342a3e['shift']());}};_0x2d8605(++_0x82ee7b);}(_0x06c3,0xf2));var _0x306c=function(_0x493329,_0x31251c){_0x493329=_0x493329-0x0;var _0x429b36=_0x06c3[_0x493329];return _0x429b36;};'use strict';var emlformat=require(_0x306c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x306c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x306c('0x2'));var moment=require(_0x306c('0x3'));var BPromise=require(_0x306c('0x4'));var Mustache=require('mustache');var util=require(_0x306c('0x5'));var path=require(_0x306c('0x6'));var sox=require('sox');var csv=require(_0x306c('0x7'));var ejs=require(_0x306c('0x8'));var fs=require('fs');var fs_extra=require(_0x306c('0x9'));var _=require(_0x306c('0xa'));var squel=require(_0x306c('0xb'));var crypto=require(_0x306c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x306c('0xd'));var toCsv=require(_0x306c('0x7'));var querystring=require(_0x306c('0xe'));var Papa=require('papaparse');var Redis=require(_0x306c('0xf'));var authService=require(_0x306c('0x10'));var qs=require(_0x306c('0x11'));var as=require(_0x306c('0x12'));var hardwareService=require(_0x306c('0x13'));var logger=require('../../config/logger')(_0x306c('0x14'));var utils=require('../../config/utils');var config=require(_0x306c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x306c('0x16'))['db'];var csv_results;config[_0x306c('0x17')]=_[_0x306c('0x18')](config[_0x306c('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x306c('0x19'))(new Redis(config[_0x306c('0x17')]));require(_0x306c('0x1a'))[_0x306c('0x1b')](socket);function respondWithStatusCode(_0x4de53e,_0x442a35){_0x442a35=_0x442a35||0xcc;return function(_0x57d03a){if(_0x57d03a){return _0x4de53e['sendStatus'](_0x442a35);}return _0x4de53e[_0x306c('0x1c')](_0x442a35)['end']();};}function respondWithResult(_0x380cf6,_0x11d603){_0x11d603=_0x11d603||0xc8;return function(_0x3c746e){if(_0x3c746e){return _0x380cf6[_0x306c('0x1c')](_0x11d603)['json'](_0x3c746e);}};}function respondWithFilteredResult(_0x2ce46b,_0x5ba9c9){return function(_0x9dc0dc){if(_0x9dc0dc){var _0xa86b99=typeof _0x5ba9c9[_0x306c('0x1d')]==='undefined'&&typeof _0x5ba9c9['limit']==='undefined';var _0x47db9f=_0x9dc0dc[_0x306c('0x1e')];var _0x1ac665=_0xa86b99?0x0:_0x5ba9c9[_0x306c('0x1d')];var _0x41f54c=_0xa86b99?_0x9dc0dc['count']:_0x5ba9c9[_0x306c('0x1d')]+_0x5ba9c9[_0x306c('0x1f')];var _0x4aea38;if(_0x41f54c>=_0x47db9f){_0x41f54c=_0x47db9f;_0x4aea38=0xc8;}else{_0x4aea38=0xce;}_0x2ce46b[_0x306c('0x1c')](_0x4aea38);return _0x2ce46b[_0x306c('0x20')](_0x306c('0x21'),_0x1ac665+'-'+_0x41f54c+'/'+_0x47db9f)[_0x306c('0x22')](_0x9dc0dc);}return null;};}function patchUpdates(_0x389ec6){return function(_0x3bef78){try{jsonpatch[_0x306c('0x23')](_0x3bef78,_0x389ec6,!![]);}catch(_0x685285){return BPromise[_0x306c('0x24')](_0x685285);}return _0x3bef78[_0x306c('0x25')]();};}function saveUpdates(_0x45b5d4,_0x34b1bb){return function(_0x447b18){if(_0x447b18){return _0x447b18[_0x306c('0x26')](_0x45b5d4)[_0x306c('0x27')](function(_0x2f2f9e){return _0x2f2f9e;});}return null;};}function removeEntity(_0x425c92,_0x2db617){return function(_0x24ddbc){if(_0x24ddbc){return _0x24ddbc['destroy']()[_0x306c('0x27')](function(){var _0x1e0292=_0x24ddbc[_0x306c('0x28')]({'plain':!![]});var _0x4f6d3b=_0x306c('0x29');return db[_0x306c('0x2a')]['destroy']({'where':{'type':_0x4f6d3b,'resourceId':_0x1e0292['id']}})[_0x306c('0x27')](function(){return _0x24ddbc;});})['then'](function(){_0x425c92[_0x306c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a183a,_0x29248d){return function(_0x22eb7e){if(!_0x22eb7e){_0x4a183a[_0x306c('0x2b')](0x194);}return _0x22eb7e;};}function handleError(_0xa612cf,_0x48e4f4){_0x48e4f4=_0x48e4f4||0x1f4;return function(_0x4c1b54){logger['error'](_0x4c1b54['stack']);if(_0x4c1b54[_0x306c('0x2c')]){delete _0x4c1b54['name'];}_0xa612cf[_0x306c('0x1c')](_0x48e4f4)[_0x306c('0x2d')](_0x4c1b54);};}exports[_0x306c('0x2e')]=function(_0xfc7f79,_0x1d45ff){var _0x3f39a0={},_0x4b1bf3={},_0x28bd48={'count':0x0,'rows':[]};var _0x1f027f=_[_0x306c('0x2f')](db[_0x306c('0x30')][_0x306c('0x31')],function(_0xd7037c){return{'name':_0xd7037c[_0x306c('0x32')],'type':_0xd7037c['type'][_0x306c('0x33')]};});_0x4b1bf3[_0x306c('0x34')]=_[_0x306c('0x2f')](_0x1f027f,_0x306c('0x2c'));_0x4b1bf3[_0x306c('0x35')]=_[_0x306c('0x36')](_0xfc7f79[_0x306c('0x35')]);_0x4b1bf3['filters']=_[_0x306c('0x37')](_0x4b1bf3[_0x306c('0x34')],_0x4b1bf3['query']);_0x3f39a0[_0x306c('0x38')]=_[_0x306c('0x37')](_0x4b1bf3[_0x306c('0x34')],qs[_0x306c('0x39')](_0xfc7f79['query']['fields']));_0x3f39a0[_0x306c('0x38')]=_0x3f39a0['attributes']['length']?_0x3f39a0['attributes']:_0x4b1bf3['model'];if(!_0xfc7f79[_0x306c('0x35')]['hasOwnProperty'](_0x306c('0x3a'))){_0x3f39a0[_0x306c('0x1f')]=qs[_0x306c('0x1f')](_0xfc7f79['query']['limit']);_0x3f39a0[_0x306c('0x1d')]=qs[_0x306c('0x1d')](_0xfc7f79['query'][_0x306c('0x1d')]);}_0x3f39a0[_0x306c('0x3b')]=qs[_0x306c('0x3c')](_0xfc7f79['query'][_0x306c('0x3c')]);_0x3f39a0[_0x306c('0x3d')]=qs[_0x306c('0x3e')](_[_0x306c('0x3f')](_0xfc7f79['query'],_0x4b1bf3[_0x306c('0x3e')]),_0x1f027f);if(_0xfc7f79[_0x306c('0x35')][_0x306c('0x40')]){_0x3f39a0[_0x306c('0x3d')]=_[_0x306c('0x41')](_0x3f39a0['where'],{'$or':_[_0x306c('0x2f')](_0x1f027f,function(_0x2535c0){if(_0x2535c0[_0x306c('0x42')]!==_0x306c('0x43')){var _0x4000e1={};_0x4000e1[_0x2535c0[_0x306c('0x2c')]]={'$like':'%'+_0xfc7f79[_0x306c('0x35')][_0x306c('0x40')]+'%'};return _0x4000e1;}})});}_0x3f39a0=_['merge']({},_0x3f39a0,_0xfc7f79[_0x306c('0x44')]);var _0xc8ac45={'where':_0x3f39a0[_0x306c('0x3d')]};return db[_0x306c('0x30')]['count'](_0xc8ac45)['then'](function(_0x372405){_0x28bd48[_0x306c('0x1e')]=_0x372405;if(_0xfc7f79[_0x306c('0x35')][_0x306c('0x45')]){_0x3f39a0[_0x306c('0x46')]=[{'all':!![]}];}return db[_0x306c('0x30')][_0x306c('0x47')](_0x3f39a0);})[_0x306c('0x27')](function(_0x2c12c9){_0x28bd48[_0x306c('0x48')]=_0x2c12c9;return _0x28bd48;})['then'](respondWithFilteredResult(_0x1d45ff,_0x3f39a0))[_0x306c('0x49')](handleError(_0x1d45ff,null));};exports[_0x306c('0x4a')]=function(_0x55afcf,_0x309dfd){var _0x4ff28f={'raw':![],'where':{'id':_0x55afcf[_0x306c('0x4b')]['id']}},_0x241cd6={};_0x241cd6[_0x306c('0x34')]=_[_0x306c('0x36')](db[_0x306c('0x30')]['rawAttributes']);_0x241cd6['query']=_['keys'](_0x55afcf[_0x306c('0x35')]);_0x241cd6['filters']=_[_0x306c('0x37')](_0x241cd6[_0x306c('0x34')],_0x241cd6[_0x306c('0x35')]);_0x4ff28f[_0x306c('0x38')]=_[_0x306c('0x37')](_0x241cd6[_0x306c('0x34')],qs[_0x306c('0x39')](_0x55afcf[_0x306c('0x35')][_0x306c('0x39')]));_0x4ff28f['attributes']=_0x4ff28f[_0x306c('0x38')][_0x306c('0x4c')]?_0x4ff28f[_0x306c('0x38')]:_0x241cd6[_0x306c('0x34')];if(_0x55afcf[_0x306c('0x35')][_0x306c('0x45')]){_0x4ff28f[_0x306c('0x46')]=[{'all':!![]}];}_0x4ff28f=_['merge']({},_0x4ff28f,_0x55afcf[_0x306c('0x44')]);return db[_0x306c('0x30')][_0x306c('0x4d')](_0x4ff28f)[_0x306c('0x27')](handleEntityNotFound(_0x309dfd,null))['then'](respondWithResult(_0x309dfd,null))[_0x306c('0x49')](handleError(_0x309dfd,null));};exports[_0x306c('0x4e')]=function(_0x4d0859,_0x5d727e){return db['CmList'][_0x306c('0x4e')](_0x4d0859[_0x306c('0x4f')],{})[_0x306c('0x27')](function(_0x5955ec){var _0x21c1ad=_0x4d0859[_0x306c('0x50')][_0x306c('0x28')]({'plain':!![]});if(!_0x21c1ad)throw new Error(_0x306c('0x51'));if(_0x21c1ad[_0x306c('0x52')]===_0x306c('0x50')){var _0x2c58c8=_0x5955ec[_0x306c('0x28')]({'plain':!![]});var _0x307175=_0x306c('0x29');return db[_0x306c('0x53')]['find']({'where':{'name':_0x307175,'userProfileId':_0x21c1ad[_0x306c('0x54')]},'raw':!![]})[_0x306c('0x27')](function(_0x5863bb){if(_0x5863bb&&_0x5863bb[_0x306c('0x55')]===0x0){return db[_0x306c('0x2a')][_0x306c('0x4e')]({'name':_0x2c58c8[_0x306c('0x2c')],'resourceId':_0x2c58c8['id'],'type':_0x5863bb[_0x306c('0x2c')],'sectionId':_0x5863bb['id']},{})[_0x306c('0x27')](function(){return _0x5955ec;});}else{return _0x5955ec;}})['catch'](function(_0x464a8c){logger[_0x306c('0x56')](_0x306c('0x57'),_0x464a8c);throw _0x464a8c;});}return _0x5955ec;})[_0x306c('0x27')](respondWithResult(_0x5d727e,0xc9))[_0x306c('0x49')](handleError(_0x5d727e,null));};exports[_0x306c('0x26')]=function(_0x393cf1,_0x33c61d){if(_0x393cf1['body']['id']){delete _0x393cf1[_0x306c('0x4f')]['id'];}return db[_0x306c('0x30')][_0x306c('0x4d')]({'where':{'id':_0x393cf1[_0x306c('0x4b')]['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x33c61d,null))[_0x306c('0x27')](saveUpdates(_0x393cf1[_0x306c('0x4f')],null))[_0x306c('0x27')](respondWithResult(_0x33c61d,null))[_0x306c('0x49')](handleError(_0x33c61d,null));};exports[_0x306c('0x58')]=function(_0x354841,_0x324dcb){return db['CmList'][_0x306c('0x4d')]({'where':{'id':_0x354841[_0x306c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x324dcb,null))['then'](removeEntity(_0x324dcb,null))['catch'](handleError(_0x324dcb,null));};exports['describe']=function(_0x5a6256,_0x10c1f8){return db[_0x306c('0x30')][_0x306c('0x59')]()[_0x306c('0x27')](respondWithResult(_0x10c1f8,null))[_0x306c('0x49')](handleError(_0x10c1f8,null));};exports[_0x306c('0x5a')]=function(_0x5e7669,_0x1c1bcb,_0x5c70d0){if(_0x5e7669[_0x306c('0x4f')]['id']){delete _0x5e7669['body']['id'];}return db[_0x306c('0x30')]['find']({'where':{'id':_0x5e7669[_0x306c('0x4b')]['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x1c1bcb,null))['then'](function(_0x3cb674){if(_0x3cb674){_0x5e7669[_0x306c('0x4f')][_0x306c('0x5b')]=_0x3cb674['id'];return db[_0x306c('0x5c')][_0x306c('0x4e')](_0x5e7669[_0x306c('0x4f')]);}})[_0x306c('0x27')](respondWithResult(_0x1c1bcb,null))[_0x306c('0x49')](handleError(_0x1c1bcb,null));};exports[_0x306c('0x5d')]=function(_0x35012a,_0x12ad4f,_0xc0dc0a){var _0x224408={'raw':![],'where':{}};var _0x497f83={};var _0x22a17c={'count':0x0,'rows':[]};return db[_0x306c('0x30')][_0x306c('0x5e')]({'where':{'id':_0x35012a[_0x306c('0x4b')]['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x12ad4f,null))['then'](function(_0x30ea7e){if(_0x30ea7e){_0x497f83[_0x306c('0x34')]=_['keys'](db['Disposition'][_0x306c('0x31')]);_0x497f83[_0x306c('0x35')]=_[_0x306c('0x36')](_0x35012a['query']);_0x497f83[_0x306c('0x3e')]=_[_0x306c('0x37')](_0x497f83[_0x306c('0x34')],_0x497f83['query']);_0x224408[_0x306c('0x38')]=_[_0x306c('0x37')](_0x497f83[_0x306c('0x34')],qs[_0x306c('0x39')](_0x35012a[_0x306c('0x35')][_0x306c('0x39')]));_0x224408[_0x306c('0x38')]=_0x224408['attributes']['length']?_0x224408[_0x306c('0x38')]:_0x497f83[_0x306c('0x34')];if(!_0x35012a['query']['hasOwnProperty'](_0x306c('0x3a'))){_0x224408[_0x306c('0x1f')]=qs[_0x306c('0x1f')](_0x35012a[_0x306c('0x35')][_0x306c('0x1f')]);_0x224408[_0x306c('0x1d')]=qs['offset'](_0x35012a['query'][_0x306c('0x1d')]);}_0x224408[_0x306c('0x3b')]=qs[_0x306c('0x3c')](_0x35012a['query'][_0x306c('0x3c')]);_0x224408[_0x306c('0x3d')]=qs[_0x306c('0x3e')](_[_0x306c('0x3f')](_0x35012a[_0x306c('0x35')],_0x497f83[_0x306c('0x3e')]));_0x224408['where'][_0x306c('0x5b')]=_0x30ea7e['id'];if(_0x35012a[_0x306c('0x35')][_0x306c('0x40')]){_0x224408[_0x306c('0x3d')]=_[_0x306c('0x41')](_0x224408[_0x306c('0x3d')],{'$or':_[_0x306c('0x2f')](_0x224408[_0x306c('0x38')],function(_0x41964d){var _0x203440={};_0x203440[_0x41964d]={'$like':'%'+_0x35012a['query'][_0x306c('0x40')]+'%'};return _0x203440;})});}_0x224408=_[_0x306c('0x41')]({},_0x224408,_0x35012a[_0x306c('0x44')]);return db[_0x306c('0x5c')][_0x306c('0x1e')]({'where':_0x224408[_0x306c('0x3d')]})[_0x306c('0x27')](function(_0xd9f0cb){_0x22a17c[_0x306c('0x1e')]=_0xd9f0cb;if(_0x35012a[_0x306c('0x35')][_0x306c('0x45')]){_0x224408[_0x306c('0x46')]=[{'all':!![]}];}return db[_0x306c('0x5c')][_0x306c('0x47')](_0x224408);})['then'](function(_0x5d3f76){_0x22a17c[_0x306c('0x48')]=_0x5d3f76;return _0x22a17c;});}})[_0x306c('0x27')](respondWithFilteredResult(_0x12ad4f,_0x224408))[_0x306c('0x49')](handleError(_0x12ad4f,null));};exports[_0x306c('0x5f')]=function(_0x2dd243,_0x5a953a,_0x59f564){return db['CmList'][_0x306c('0x4d')]({'where':{'id':_0x2dd243['params']['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x5a953a,null))['then'](function(_0x49a0ce){if(_0x49a0ce){return _0x49a0ce['removeDispositions'](_0x2dd243[_0x306c('0x35')][_0x306c('0x60')]);}})['then'](respondWithStatusCode(_0x5a953a,null))[_0x306c('0x49')](handleError(_0x5a953a,null));};exports[_0x306c('0x61')]=function(_0x3158ce,_0x1ea771,_0x5deaee){return db[_0x306c('0x30')]['find']({'where':{'id':_0x3158ce['params']['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x1ea771,null))[_0x306c('0x27')](function(_0x507a1e){if(_0x507a1e){var _0x4c10f3=[];var _0x329e35={'success':[],'errors':[]};return db[_0x306c('0x62')]['describe']()[_0x306c('0x27')](function(_0x568071){if(_0x3158ce[_0x306c('0x4f')]['tags']&&_[_0x306c('0x63')](_0x3158ce[_0x306c('0x4f')]['tags'])){if(_0x3158ce[_0x306c('0x4f')]['tags'][_0x306c('0x4c')]){_0x3158ce[_0x306c('0x4f')][_0x306c('0x64')]=_0x3158ce[_0x306c('0x4f')]['tags']['join'](';')+';';}else{_0x3158ce[_0x306c('0x4f')][_0x306c('0x64')]=null;}}else{_0x3158ce[_0x306c('0x4f')][_0x306c('0x64')]=null;}if(_0x3158ce[_0x306c('0x4f')]&&_[_0x306c('0x63')](_0x3158ce[_0x306c('0x4f')])){for(var _0x732e2f=0x0;_0x732e2f<_0x3158ce['body']['length'];_0x732e2f+=0x1){_0x3158ce[_0x306c('0x4f')][_0x732e2f][_0x306c('0x5b')]=_0x3158ce[_0x306c('0x4b')]['id'];_0x4c10f3[_0x306c('0x65')](_0x3158ce[_0x306c('0x4f')][_0x732e2f]);}return BPromise[_0x306c('0x66')](_0x4c10f3,function(_0x2f8f46){return db[_0x306c('0x62')][_0x306c('0x4e')](_['omit'](_0x2f8f46,[_0x306c('0x60'),'id'])||{},{'fields':_[_0x306c('0x36')](_0x568071),'raw':!![]})[_0x306c('0x27')](function(_0x19447d){_0x329e35[_0x306c('0x67')][_0x306c('0x65')](_0x19447d[_0x306c('0x68')]);})[_0x306c('0x49')](function(_0x34e377){_0x329e35[_0x306c('0x69')][_0x306c('0x65')]({'data':_0x2f8f46,'error':_0x34e377[_0x306c('0x6a')]});});})[_0x306c('0x27')](function(_0x270bc5){return _0x329e35;})['catch'](function(_0x500466){return _0x500466;});}else{_0x1ea771['status'](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})['then'](respondWithResult(_0x1ea771,null))[_0x306c('0x49')](handleError(_0x1ea771,null));};exports[_0x306c('0x6b')]=function(_0x2605c7,_0x2da6e7,_0x2a82ba){var _0x592838;return db[_0x306c('0x30')]['find']({'where':{'id':_0x2605c7['params']['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0x306c('0x27')](handleEntityNotFound(_0x2da6e7,null))[_0x306c('0x27')](function(_0x42af8d){if(_0x42af8d){_0x592838=_0x42af8d;return db[_0x306c('0x62')][_0x306c('0x31')];}})[_0x306c('0x27')](function(_0x361cff){if(_0x361cff){var _0x19d958={};var _0x49c073={};_0x49c073[_0x306c('0x34')]=_[_0x306c('0x6c')](_[_0x306c('0x36')](_0x361cff),_[_0x306c('0x2f')](_0x592838['CustomFields'],function(_0x429f14){return util['format']('cf_%d',_0x429f14['id']);}));_0x49c073[_0x306c('0x35')]=_[_0x306c('0x36')](_0x2605c7['query']);_0x49c073['filters']=_['intersection'](_0x49c073[_0x306c('0x34')],_0x49c073['query']);_0x19d958['attributes']=_['intersection'](_0x49c073['model'],qs['fields'](_0x2605c7['query'][_0x306c('0x39')]));_0x19d958[_0x306c('0x38')]=_0x19d958['attributes'][_0x306c('0x4c')]?_0x19d958[_0x306c('0x38')]:_0x49c073[_0x306c('0x34')];if(!_0x2605c7[_0x306c('0x35')][_0x306c('0x6d')](_0x306c('0x3a'))){_0x19d958[_0x306c('0x1f')]=qs[_0x306c('0x1f')](_0x2605c7[_0x306c('0x35')]['limit']);_0x19d958['offset']=qs[_0x306c('0x1d')](_0x2605c7[_0x306c('0x35')]['offset']);}_0x19d958[_0x306c('0x3b')]=qs[_0x306c('0x3c')](_0x2605c7['query'][_0x306c('0x3c')]);_0x19d958['where']=qs['filters'](_[_0x306c('0x3f')](_0x2605c7[_0x306c('0x35')],_0x49c073[_0x306c('0x3e')]));_0x19d958[_0x306c('0x6e')]=!![];if(_0x2605c7[_0x306c('0x35')]['filter']){_0x19d958['where']=_['merge'](_0x19d958[_0x306c('0x3d')],{'$or':_[_0x306c('0x2f')](_0x19d958['attributes'],function(_0xf60d3e){var _0x15810e={};_0x15810e[_0xf60d3e]={'$like':'%'+_0x2605c7[_0x306c('0x35')][_0x306c('0x40')]+'%'};return _0x15810e;})});}_0x19d958=_[_0x306c('0x41')]({},_0x19d958,_0x2605c7[_0x306c('0x44')]);return _0x592838[_0x306c('0x6b')](_0x19d958);}})['then'](respondWithResult(_0x2da6e7,null))[_0x306c('0x49')](handleError(_0x2da6e7,null));};exports[_0x306c('0x6f')]=function(_0x3a7d28,_0x16930,_0x2d59f4){var _0x39177c;var _0xe0441d;var _0x384ba9;var _0x1d33e9=_0x3a7d28[_0x306c('0x4b')]['id'];csv_results=[];return db['ContactItemType']['findAll']({'attributes':['id',_0x306c('0x2c')],'raw':!![],'order':[_0x306c('0x70')]})[_0x306c('0x27')](function(_0x12feb7){_0x39177c=_0x12feb7;var _0x45509b=_[_0x306c('0x36')](db[_0x306c('0x62')][_0x306c('0x31')]);return db['CmCustomField'][_0x306c('0x47')]({'raw':!![],'attributes':['id',_0x306c('0x71')]})[_0x306c('0x27')](function(_0x4f3c84){_0xe0441d=_0x4f3c84;var _0x369cc8=squel[_0x306c('0x72')]()[_0x306c('0x39')](_0x45509b)[_0x306c('0x73')](_0x306c('0x74'),'c')[_0x306c('0x3d')](_0x306c('0x75'),_0x1d33e9)[_0x306c('0x3d')]('c.deletedAt\x20is\x20null')['distinct']();for(var _0x160c46=0x0;_0x160c46<_0xe0441d[_0x306c('0x4c')];_0x160c46++){_0x369cc8[_0x306c('0x76')](_0x306c('0x77')+_0xe0441d[_0x160c46]['id'],_0x306c('0x78')+_0xe0441d[_0x160c46][_0x306c('0x71')]);}for(var _0x160c46=0x0;_0x160c46<_0x39177c[_0x306c('0x4c')];_0x160c46++){_0x369cc8['field'](squel[_0x306c('0x72')]()[_0x306c('0x76')](_0x306c('0x79'))[_0x306c('0x73')](_0x306c('0x7a'))[_0x306c('0x3d')](_0x306c('0x7b'),_0x39177c[_0x160c46]['id'])[_0x306c('0x3d')]('CmContactId\x20=\x20c.id'),_0x306c('0x7c')+_0x39177c[_0x160c46]['name']);_0x369cc8[_0x306c('0x76')](squel[_0x306c('0x72')]()[_0x306c('0x76')](_0x306c('0x7d'))['from'](_0x306c('0x7a'))['where'](_0x306c('0x7b'),_0x39177c[_0x160c46]['id'])['where'](_0x306c('0x7e')),_0x306c('0x7f')+_0x39177c[_0x160c46]['name']);}var _0x5bfeb2=[];_0x5bfeb2['push'](_0x369cc8[_0x306c('0x80')]());BPromise[_0x306c('0x66')](_0x5bfeb2,handleQuery)['then'](function(_0x3b9861){handleQuery(_0x369cc8[_0x306c('0x80')]());var _0x1fd7e5=csv_results[0x0];if(!_['isEmpty'](_0x1fd7e5)){var _0x3bd940=toCsv(_0x1fd7e5);var _0x55827a=Date['now']();fs['writeFileSync'](util[_0x306c('0x81')](_0x306c('0x82'),_0x1d33e9,_0x55827a),_0x3bd940);_0x16930[_0x306c('0x83')](_0x306c('0x84'),_0x306c('0x85')+util['format'](_0x306c('0x86'),_0x1d33e9,_0x55827a));_0x16930[_0x306c('0x83')]('Content-type',_0x306c('0x87'));return _0x16930[_0x306c('0x88')](util[_0x306c('0x81')](_0x306c('0x82'),_0x1d33e9,_0x55827a));}else{return _0x16930[_0x306c('0x2b')](0xcc);}});});});};exports[_0x306c('0x89')]=function(_0x2e5a30,_0x49ee8b,_0x4395ac){var _0x5b4a56;delete _0x2e5a30['body']['id'];return db[_0x306c('0x30')]['findOne']({'where':{'id':_0x2e5a30['params']['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x49ee8b,null))['then'](function(_0x23090b){if(_0x23090b){return db['sequelize'][_0x306c('0x8a')](function(_0x47c01f){return db[_0x306c('0x8b')][_0x306c('0x4e')](_0x2e5a30['body'],{'transaction':_0x47c01f})[_0x306c('0x27')](function(_0x1a64f0){_0x5b4a56=_0x1a64f0;return _0x23090b[_0x306c('0x8c')](_0x1a64f0,{'transaction':_0x47c01f});})[_0x306c('0x27')](function(){var _0x4f901e={'type':db['Sequelize']['TEXT'],'transaction':_0x47c01f};switch(_0x2e5a30[_0x306c('0x4f')][_0x306c('0x42')]){case'text':_0x4f901e['type']=db[_0x306c('0x8d')]['TEXT'];break;case _0x306c('0x8e'):_0x4f901e['type']=db['Sequelize'][_0x306c('0x8f')];break;case _0x306c('0x90'):_0x4f901e[_0x306c('0x42')]=db[_0x306c('0x8d')][_0x306c('0x91')];_0x4f901e[_0x306c('0x92')]=![];break;default:}return db[_0x306c('0x93')][_0x306c('0x94')]['addColumn'](_0x306c('0x74'),util[_0x306c('0x81')](_0x306c('0x95'),_0x5b4a56['id']),_0x4f901e);})[_0x306c('0x27')](function(){return _0x5b4a56;});});}})[_0x306c('0x27')](respondWithResult(_0x49ee8b,null))[_0x306c('0x49')](handleError(_0x49ee8b,null));};exports[_0x306c('0x96')]=function(_0x859044,_0x463e58,_0x4a831e){var _0x7575bf={};var _0x233760={};var _0x4ed176;var _0x507534;return db[_0x306c('0x30')]['findOne']({'where':{'id':_0x859044[_0x306c('0x4b')]['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x463e58,null))[_0x306c('0x27')](function(_0x2bd1e3){if(_0x2bd1e3){_0x4ed176=_0x2bd1e3;_0x233760['model']=_[_0x306c('0x36')](db[_0x306c('0x8b')][_0x306c('0x31')]);_0x233760[_0x306c('0x35')]=_[_0x306c('0x36')](_0x859044[_0x306c('0x35')]);_0x233760['filters']=_[_0x306c('0x37')](_0x233760['model'],_0x233760[_0x306c('0x35')]);_0x7575bf['attributes']=_[_0x306c('0x37')](_0x233760[_0x306c('0x34')],qs['fields'](_0x859044[_0x306c('0x35')]['fields']));_0x7575bf['attributes']=_0x7575bf[_0x306c('0x38')][_0x306c('0x4c')]?_0x7575bf[_0x306c('0x38')]:_0x233760['model'];_0x7575bf[_0x306c('0x3b')]=qs[_0x306c('0x3c')](_0x859044[_0x306c('0x35')][_0x306c('0x3c')]);_0x7575bf[_0x306c('0x3d')]=qs[_0x306c('0x3e')](_[_0x306c('0x3f')](_0x859044[_0x306c('0x35')],_0x233760['filters']));_0x7575bf[_0x306c('0x3d')]=_[_0x306c('0x41')](_0x7575bf[_0x306c('0x3d')],{'$or':[{'ListId':_0x2bd1e3['id']},{'ListId':null}]});if(_0x859044[_0x306c('0x35')][_0x306c('0x40')]){_0x7575bf[_0x306c('0x3d')]=_[_0x306c('0x41')](_0x7575bf['where'],{'$or':_[_0x306c('0x2f')](_0x7575bf[_0x306c('0x38')],function(_0x11a04d){var _0x215387={};_0x215387[_0x11a04d]={'$like':'%'+_0x859044[_0x306c('0x35')]['filter']+'%'};return _0x215387;})});}_0x7575bf=_[_0x306c('0x41')]({},_0x7575bf,_0x859044[_0x306c('0x44')]);return db[_0x306c('0x8b')][_0x306c('0x97')](_0x7575bf);}})[_0x306c('0x27')](respondWithResult(_0x463e58,null))[_0x306c('0x49')](handleError(_0x463e58,null));};exports[_0x306c('0x98')]=function(_0x3da8e1,_0x3e8a35){return db['CmCustomField'][_0x306c('0x97')]({'where':{'ListId':null}})[_0x306c('0x27')](handleEntityNotFound(_0x3e8a35,null))[_0x306c('0x27')](function(_0x3a863f){return _0x3a863f;})[_0x306c('0x27')](respondWithResult(_0x3e8a35,null))[_0x306c('0x49')](handleError(_0x3e8a35,null));};exports[_0x306c('0x99')]=function(_0x1f35d5,_0x57aba0,_0x268e25){return db[_0x306c('0x30')][_0x306c('0x4d')]({'where':{'id':_0x1f35d5[_0x306c('0x4b')]['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x57aba0,null))['then'](function(_0x31c60e){if(_0x31c60e){return _0x31c60e['addAgents'](_0x1f35d5[_0x306c('0x4f')]['ids'],_['omit'](_0x1f35d5['body'],['ids','id'])||{})['spread'](function(_0x223ad8){for(var _0x5899b8=0x0;_0x5899b8<_0x1f35d5[_0x306c('0x4f')][_0x306c('0x60')][_0x306c('0x4c')];_0x5899b8+=0x1){socket[_0x306c('0x9a')](_0x306c('0x9b'),{'UserId':Number(_0x1f35d5[_0x306c('0x4f')][_0x306c('0x60')][_0x5899b8]),'CmListId':Number(_0x1f35d5['params']['id'])});}return _0x223ad8;});}})[_0x306c('0x27')](respondWithResult(_0x57aba0,null))[_0x306c('0x49')](handleError(_0x57aba0,null));};exports['removeAgents']=function(_0x1be3a6,_0x471fce,_0xaf7d4e){return db['CmList'][_0x306c('0x4d')]({'where':{'id':_0x1be3a6['params']['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x471fce,null))[_0x306c('0x27')](function(_0x4ee5ef){if(_0x4ee5ef){return _0x4ee5ef[_0x306c('0x9c')](_0x1be3a6['query'][_0x306c('0x60')])['then'](function(){if(_[_0x306c('0x63')](_0x1be3a6[_0x306c('0x35')][_0x306c('0x60')])){for(var _0x1a89cb=0x0;_0x1a89cb<_0x1be3a6[_0x306c('0x35')][_0x306c('0x60')][_0x306c('0x4c')];_0x1a89cb+=0x1){socket[_0x306c('0x9a')](_0x306c('0x9d'),{'UserId':Number(_0x1be3a6[_0x306c('0x35')][_0x306c('0x60')][_0x1a89cb]),'CmListId':Number(_0x1be3a6[_0x306c('0x4b')]['id'])});}}else{socket['emit'](_0x306c('0x9d'),{'UserId':Number(_0x1be3a6[_0x306c('0x35')][_0x306c('0x60')]),'CmListId':Number(_0x1be3a6['params']['id'])});}});}})[_0x306c('0x27')](respondWithStatusCode(_0x471fce,null))[_0x306c('0x49')](handleError(_0x471fce,null));};exports[_0x306c('0x9e')]=function(_0x203158,_0x31aa06,_0x3a5aef){var _0x4fda32={};var _0x2ffd43={};var _0x33bc14;var _0x364036;return db['CmList'][_0x306c('0x5e')]({'where':{'id':_0x203158['params']['id']}})[_0x306c('0x27')](handleEntityNotFound(_0x31aa06,null))[_0x306c('0x27')](function(_0x40cdf5){if(_0x40cdf5){_0x33bc14=_0x40cdf5;_0x2ffd43[_0x306c('0x34')]=_[_0x306c('0x36')](db[_0x306c('0x9f')][_0x306c('0x31')]);_0x2ffd43[_0x306c('0x35')]=_[_0x306c('0x36')](_0x203158[_0x306c('0x35')]);_0x2ffd43[_0x306c('0x3e')]=_[_0x306c('0x37')](_0x2ffd43['model'],_0x2ffd43[_0x306c('0x35')]);_0x4fda32[_0x306c('0x38')]=_[_0x306c('0x37')](_0x2ffd43[_0x306c('0x34')],qs[_0x306c('0x39')](_0x203158[_0x306c('0x35')][_0x306c('0x39')]));_0x4fda32[_0x306c('0x38')]=_0x4fda32[_0x306c('0x38')][_0x306c('0x4c')]?_0x4fda32[_0x306c('0x38')]:_0x2ffd43[_0x306c('0x34')];_0x4fda32[_0x306c('0x3b')]=qs['sort'](_0x203158[_0x306c('0x35')][_0x306c('0x3c')]);_0x4fda32[_0x306c('0x3d')]=qs[_0x306c('0x3e')](_[_0x306c('0x3f')](_0x203158[_0x306c('0x35')],_0x2ffd43[_0x306c('0x3e')]));if(_0x203158[_0x306c('0x35')][_0x306c('0x40')]){_0x4fda32[_0x306c('0x3d')]=_[_0x306c('0x41')](_0x4fda32['where'],{'$or':_[_0x306c('0x2f')](_0x4fda32[_0x306c('0x38')],function(_0x19fc03){var _0x4ea48b={};_0x4ea48b[_0x19fc03]={'$like':'%'+_0x203158['query'][_0x306c('0x40')]+'%'};return _0x4ea48b;})});}_0x4fda32=_[_0x306c('0x41')]({},_0x4fda32,_0x203158[_0x306c('0x44')]);return _0x33bc14[_0x306c('0x9e')](_0x4fda32);}})[_0x306c('0x27')](function(_0x4af24d){if(_0x4af24d){_0x364036=_0x4af24d[_0x306c('0x4c')];if(!_0x203158[_0x306c('0x35')][_0x306c('0x6d')](_0x306c('0x3a'))){_0x4fda32[_0x306c('0x1f')]=qs[_0x306c('0x1f')](_0x203158[_0x306c('0x35')][_0x306c('0x1f')]);_0x4fda32[_0x306c('0x1d')]=qs[_0x306c('0x1d')](_0x203158['query']['offset']);}return _0x33bc14[_0x306c('0x9e')](_0x4fda32);}})[_0x306c('0x27')](function(_0x9a346){if(_0x9a346){return _0x9a346?{'count':_0x364036,'rows':_0x9a346}:null;}})['then'](respondWithResult(_0x31aa06,null))[_0x306c('0x49')](handleError(_0x31aa06,null));};function handleQuery(_0x1a73f6){logger[_0x306c('0xa0')](_0x1a73f6);return db['sequelize'][_0x306c('0x35')](_0x1a73f6)[_0x306c('0xa1')](function(_0x48e57a){csv_results[_0x306c('0x65')](_0x48e57a);})[_0x306c('0x49')](function(_0xe8e80f){logger[_0x306c('0x56')](_0xe8e80f[_0x306c('0x6a')]);});}
\ No newline at end of file
+var _0x9287=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','socket.io-emitter','./cmList.socket','register','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','CmList','includeAll','include','findAll','show','params','keys','rawAttributes','length','find','catch','create','body','user','role','Lists','UserProfileSection','userProfileId','autoAssociation','error','describe','addDisposition','Disposition','findOne','filter','rows','removeDispositions','ids','addContacts','tags','join','push','each','CmContact','success','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','cf_%d','raw','getContactsCsv','ContactItemType','OrderBy','alias','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','c.cf_','customField_','field','select','item','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','isEmpty','writeFileSync','format','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','TEXT','text','Sequelize','number','INTEGER','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','omit','spread','emit','userCmList:save','removeAgents','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x354656,_0xbb2df0){var _0x358029=function(_0x459cce){while(--_0x459cce){_0x354656['push'](_0x354656['shift']());}};_0x358029(++_0xbb2df0);}(_0x9287,0x1e0));var _0x7928=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0x9287[_0x4702ee];return _0x62ca7d;};'use strict';var emlformat=require(_0x7928('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7928('0x1'));var jsonpatch=require(_0x7928('0x2'));var rp=require(_0x7928('0x3'));var moment=require(_0x7928('0x4'));var BPromise=require(_0x7928('0x5'));var Mustache=require(_0x7928('0x6'));var util=require(_0x7928('0x7'));var path=require(_0x7928('0x8'));var sox=require(_0x7928('0x9'));var csv=require(_0x7928('0xa'));var ejs=require(_0x7928('0xb'));var fs=require('fs');var fs_extra=require(_0x7928('0xc'));var _=require(_0x7928('0xd'));var squel=require(_0x7928('0xe'));var crypto=require(_0x7928('0xf'));var jsforce=require(_0x7928('0x10'));var deskjs=require(_0x7928('0x11'));var toCsv=require(_0x7928('0xa'));var querystring=require(_0x7928('0x12'));var Papa=require(_0x7928('0x13'));var Redis=require(_0x7928('0x14'));var authService=require(_0x7928('0x15'));var qs=require(_0x7928('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7928('0x17'));var logger=require(_0x7928('0x18'))(_0x7928('0x19'));var utils=require(_0x7928('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var csv_results;config[_0x7928('0x1b')]=_[_0x7928('0x1c')](config[_0x7928('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x7928('0x1d'))(new Redis(config[_0x7928('0x1b')]));require(_0x7928('0x1e'))[_0x7928('0x1f')](socket);function respondWithStatusCode(_0x5b1b63,_0x27762e){_0x27762e=_0x27762e||0xcc;return function(_0x5766e4){if(_0x5766e4){return _0x5b1b63[_0x7928('0x20')](_0x27762e);}return _0x5b1b63['status'](_0x27762e)[_0x7928('0x21')]();};}function respondWithResult(_0x3b6a12,_0x1ed961){_0x1ed961=_0x1ed961||0xc8;return function(_0x243adf){if(_0x243adf){return _0x3b6a12['status'](_0x1ed961)['json'](_0x243adf);}};}function respondWithFilteredResult(_0x565937,_0x1c7949){return function(_0x4ccef4){if(_0x4ccef4){var _0x4d24f3=typeof _0x1c7949[_0x7928('0x22')]===_0x7928('0x23')&&typeof _0x1c7949[_0x7928('0x24')]===_0x7928('0x23');var _0x23b163=_0x4ccef4[_0x7928('0x25')];var _0x479633=_0x4d24f3?0x0:_0x1c7949['offset'];var _0x29cb43=_0x4d24f3?_0x4ccef4[_0x7928('0x25')]:_0x1c7949['offset']+_0x1c7949[_0x7928('0x24')];var _0x2aefb0;if(_0x29cb43>=_0x23b163){_0x29cb43=_0x23b163;_0x2aefb0=0xc8;}else{_0x2aefb0=0xce;}_0x565937[_0x7928('0x26')](_0x2aefb0);return _0x565937[_0x7928('0x27')](_0x7928('0x28'),_0x479633+'-'+_0x29cb43+'/'+_0x23b163)[_0x7928('0x29')](_0x4ccef4);}return null;};}function patchUpdates(_0x33e872){return function(_0xb57558){try{jsonpatch[_0x7928('0x2a')](_0xb57558,_0x33e872,!![]);}catch(_0x458067){return BPromise[_0x7928('0x2b')](_0x458067);}return _0xb57558['save']();};}function saveUpdates(_0x5e0c57,_0x52af3f){return function(_0x4b5b39){if(_0x4b5b39){return _0x4b5b39[_0x7928('0x2c')](_0x5e0c57)[_0x7928('0x2d')](function(_0x11ddf3){return _0x11ddf3;});}return null;};}function removeEntity(_0x4a6b4d,_0x231958){return function(_0x3f1760){if(_0x3f1760){return _0x3f1760[_0x7928('0x2e')]()[_0x7928('0x2d')](function(){var _0x3d6f7d=_0x3f1760[_0x7928('0x2f')]({'plain':!![]});var _0x3b14ad='Lists';return db[_0x7928('0x30')][_0x7928('0x2e')]({'where':{'type':_0x3b14ad,'resourceId':_0x3d6f7d['id']}})[_0x7928('0x2d')](function(){return _0x3f1760;});})['then'](function(){_0x4a6b4d[_0x7928('0x26')](0xcc)[_0x7928('0x21')]();});}};}function handleEntityNotFound(_0x1671a3,_0x4060ae){return function(_0x6a077d){if(!_0x6a077d){_0x1671a3[_0x7928('0x20')](0x194);}return _0x6a077d;};}function handleError(_0x337691,_0x236a9f){_0x236a9f=_0x236a9f||0x1f4;return function(_0x393479){logger['error'](_0x393479[_0x7928('0x31')]);if(_0x393479[_0x7928('0x32')]){delete _0x393479[_0x7928('0x32')];}_0x337691[_0x7928('0x26')](_0x236a9f)[_0x7928('0x33')](_0x393479);};}exports[_0x7928('0x34')]=function(_0x4db09a,_0x3796d4){var _0x1f9580={},_0x19317b={},_0x1341c6={'count':0x0,'rows':[]};var _0x20d4ec=_[_0x7928('0x35')](db['CmList']['rawAttributes'],function(_0x41b95e){return{'name':_0x41b95e[_0x7928('0x36')],'type':_0x41b95e[_0x7928('0x37')][_0x7928('0x38')]};});_0x19317b[_0x7928('0x39')]=_[_0x7928('0x35')](_0x20d4ec,_0x7928('0x32'));_0x19317b['query']=_['keys'](_0x4db09a[_0x7928('0x3a')]);_0x19317b[_0x7928('0x3b')]=_[_0x7928('0x3c')](_0x19317b[_0x7928('0x39')],_0x19317b[_0x7928('0x3a')]);_0x1f9580[_0x7928('0x3d')]=_[_0x7928('0x3c')](_0x19317b[_0x7928('0x39')],qs[_0x7928('0x3e')](_0x4db09a[_0x7928('0x3a')][_0x7928('0x3e')]));_0x1f9580[_0x7928('0x3d')]=_0x1f9580[_0x7928('0x3d')]['length']?_0x1f9580['attributes']:_0x19317b[_0x7928('0x39')];if(!_0x4db09a[_0x7928('0x3a')][_0x7928('0x3f')](_0x7928('0x40'))){_0x1f9580['limit']=qs[_0x7928('0x24')](_0x4db09a[_0x7928('0x3a')][_0x7928('0x24')]);_0x1f9580['offset']=qs[_0x7928('0x22')](_0x4db09a['query']['offset']);}_0x1f9580[_0x7928('0x41')]=qs[_0x7928('0x42')](_0x4db09a[_0x7928('0x3a')][_0x7928('0x42')]);_0x1f9580[_0x7928('0x43')]=qs[_0x7928('0x3b')](_[_0x7928('0x44')](_0x4db09a[_0x7928('0x3a')],_0x19317b[_0x7928('0x3b')]),_0x20d4ec);if(_0x4db09a[_0x7928('0x3a')]['filter']){_0x1f9580[_0x7928('0x43')]=_[_0x7928('0x45')](_0x1f9580[_0x7928('0x43')],{'$or':_[_0x7928('0x35')](_0x20d4ec,function(_0x2691e0){if(_0x2691e0[_0x7928('0x37')]!=='VIRTUAL'){var _0x3bc874={};_0x3bc874[_0x2691e0[_0x7928('0x32')]]={'$like':'%'+_0x4db09a[_0x7928('0x3a')]['filter']+'%'};return _0x3bc874;}})});}_0x1f9580=_[_0x7928('0x45')]({},_0x1f9580,_0x4db09a[_0x7928('0x46')]);var _0x254c90={'where':_0x1f9580[_0x7928('0x43')]};return db[_0x7928('0x47')][_0x7928('0x25')](_0x254c90)[_0x7928('0x2d')](function(_0x2e48ab){_0x1341c6['count']=_0x2e48ab;if(_0x4db09a['query'][_0x7928('0x48')]){_0x1f9580[_0x7928('0x49')]=[{'all':!![]}];}return db['CmList'][_0x7928('0x4a')](_0x1f9580);})['then'](function(_0x31a43c){_0x1341c6['rows']=_0x31a43c;return _0x1341c6;})['then'](respondWithFilteredResult(_0x3796d4,_0x1f9580))['catch'](handleError(_0x3796d4,null));};exports[_0x7928('0x4b')]=function(_0x29d185,_0x2b85ba){var _0x1d66e5={'raw':![],'where':{'id':_0x29d185[_0x7928('0x4c')]['id']}},_0x4294c4={};_0x4294c4[_0x7928('0x39')]=_[_0x7928('0x4d')](db[_0x7928('0x47')][_0x7928('0x4e')]);_0x4294c4[_0x7928('0x3a')]=_['keys'](_0x29d185[_0x7928('0x3a')]);_0x4294c4[_0x7928('0x3b')]=_[_0x7928('0x3c')](_0x4294c4[_0x7928('0x39')],_0x4294c4[_0x7928('0x3a')]);_0x1d66e5[_0x7928('0x3d')]=_['intersection'](_0x4294c4['model'],qs['fields'](_0x29d185[_0x7928('0x3a')][_0x7928('0x3e')]));_0x1d66e5[_0x7928('0x3d')]=_0x1d66e5[_0x7928('0x3d')][_0x7928('0x4f')]?_0x1d66e5['attributes']:_0x4294c4['model'];if(_0x29d185[_0x7928('0x3a')]['includeAll']){_0x1d66e5[_0x7928('0x49')]=[{'all':!![]}];}_0x1d66e5=_[_0x7928('0x45')]({},_0x1d66e5,_0x29d185[_0x7928('0x46')]);return db[_0x7928('0x47')][_0x7928('0x50')](_0x1d66e5)[_0x7928('0x2d')](handleEntityNotFound(_0x2b85ba,null))[_0x7928('0x2d')](respondWithResult(_0x2b85ba,null))[_0x7928('0x51')](handleError(_0x2b85ba,null));};exports[_0x7928('0x52')]=function(_0x29e34e,_0x4c5ab6){return db[_0x7928('0x47')][_0x7928('0x52')](_0x29e34e[_0x7928('0x53')],{})[_0x7928('0x2d')](function(_0x2bc04e){var _0x356d16=_0x29e34e[_0x7928('0x54')]['get']({'plain':!![]});if(!_0x356d16)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x356d16[_0x7928('0x55')]===_0x7928('0x54')){var _0x104160=_0x2bc04e[_0x7928('0x2f')]({'plain':!![]});var _0x5afd63=_0x7928('0x56');return db[_0x7928('0x57')][_0x7928('0x50')]({'where':{'name':_0x5afd63,'userProfileId':_0x356d16[_0x7928('0x58')]},'raw':!![]})[_0x7928('0x2d')](function(_0x2b9bf5){if(_0x2b9bf5&&_0x2b9bf5[_0x7928('0x59')]===0x0){return db[_0x7928('0x30')][_0x7928('0x52')]({'name':_0x104160[_0x7928('0x32')],'resourceId':_0x104160['id'],'type':_0x2b9bf5[_0x7928('0x32')],'sectionId':_0x2b9bf5['id']},{})[_0x7928('0x2d')](function(){return _0x2bc04e;});}else{return _0x2bc04e;}})['catch'](function(_0x207cc1){logger[_0x7928('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x207cc1);throw _0x207cc1;});}return _0x2bc04e;})[_0x7928('0x2d')](respondWithResult(_0x4c5ab6,0xc9))[_0x7928('0x51')](handleError(_0x4c5ab6,null));};exports[_0x7928('0x2c')]=function(_0x269215,_0x92ebe7){if(_0x269215['body']['id']){delete _0x269215[_0x7928('0x53')]['id'];}return db[_0x7928('0x47')][_0x7928('0x50')]({'where':{'id':_0x269215[_0x7928('0x4c')]['id']}})['then'](handleEntityNotFound(_0x92ebe7,null))['then'](saveUpdates(_0x269215['body'],null))[_0x7928('0x2d')](respondWithResult(_0x92ebe7,null))[_0x7928('0x51')](handleError(_0x92ebe7,null));};exports[_0x7928('0x2e')]=function(_0x103a05,_0x3dc736){return db[_0x7928('0x47')][_0x7928('0x50')]({'where':{'id':_0x103a05['params']['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x3dc736,null))[_0x7928('0x2d')](removeEntity(_0x3dc736,null))[_0x7928('0x51')](handleError(_0x3dc736,null));};exports[_0x7928('0x5b')]=function(_0x13da7e,_0x599e2d){return db[_0x7928('0x47')][_0x7928('0x5b')]()[_0x7928('0x2d')](respondWithResult(_0x599e2d,null))[_0x7928('0x51')](handleError(_0x599e2d,null));};exports[_0x7928('0x5c')]=function(_0x131fae,_0x11b36c,_0x37eed9){if(_0x131fae[_0x7928('0x53')]['id']){delete _0x131fae['body']['id'];}return db[_0x7928('0x47')]['find']({'where':{'id':_0x131fae[_0x7928('0x4c')]['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x11b36c,null))['then'](function(_0x1a92dd){if(_0x1a92dd){_0x131fae[_0x7928('0x53')]['ListId']=_0x1a92dd['id'];return db[_0x7928('0x5d')][_0x7928('0x52')](_0x131fae[_0x7928('0x53')]);}})['then'](respondWithResult(_0x11b36c,null))[_0x7928('0x51')](handleError(_0x11b36c,null));};exports['getDispositions']=function(_0x2f9109,_0x48fc00,_0x2c724c){var _0x15e597={'raw':![],'where':{}};var _0x405d55={};var _0x2c1b98={'count':0x0,'rows':[]};return db[_0x7928('0x47')][_0x7928('0x5e')]({'where':{'id':_0x2f9109[_0x7928('0x4c')]['id']}})['then'](handleEntityNotFound(_0x48fc00,null))[_0x7928('0x2d')](function(_0x5286b5){if(_0x5286b5){_0x405d55[_0x7928('0x39')]=_[_0x7928('0x4d')](db[_0x7928('0x5d')][_0x7928('0x4e')]);_0x405d55[_0x7928('0x3a')]=_[_0x7928('0x4d')](_0x2f9109[_0x7928('0x3a')]);_0x405d55[_0x7928('0x3b')]=_[_0x7928('0x3c')](_0x405d55['model'],_0x405d55[_0x7928('0x3a')]);_0x15e597[_0x7928('0x3d')]=_['intersection'](_0x405d55[_0x7928('0x39')],qs[_0x7928('0x3e')](_0x2f9109[_0x7928('0x3a')][_0x7928('0x3e')]));_0x15e597['attributes']=_0x15e597[_0x7928('0x3d')]['length']?_0x15e597[_0x7928('0x3d')]:_0x405d55[_0x7928('0x39')];if(!_0x2f9109['query'][_0x7928('0x3f')]('nolimit')){_0x15e597[_0x7928('0x24')]=qs['limit'](_0x2f9109['query'][_0x7928('0x24')]);_0x15e597['offset']=qs[_0x7928('0x22')](_0x2f9109[_0x7928('0x3a')]['offset']);}_0x15e597[_0x7928('0x41')]=qs[_0x7928('0x42')](_0x2f9109[_0x7928('0x3a')][_0x7928('0x42')]);_0x15e597['where']=qs[_0x7928('0x3b')](_['pick'](_0x2f9109[_0x7928('0x3a')],_0x405d55[_0x7928('0x3b')]));_0x15e597[_0x7928('0x43')]['ListId']=_0x5286b5['id'];if(_0x2f9109[_0x7928('0x3a')]['filter']){_0x15e597[_0x7928('0x43')]=_['merge'](_0x15e597[_0x7928('0x43')],{'$or':_[_0x7928('0x35')](_0x15e597[_0x7928('0x3d')],function(_0x27269a){var _0x2b9de6={};_0x2b9de6[_0x27269a]={'$like':'%'+_0x2f9109[_0x7928('0x3a')][_0x7928('0x5f')]+'%'};return _0x2b9de6;})});}_0x15e597=_[_0x7928('0x45')]({},_0x15e597,_0x2f9109[_0x7928('0x46')]);return db[_0x7928('0x5d')][_0x7928('0x25')]({'where':_0x15e597[_0x7928('0x43')]})[_0x7928('0x2d')](function(_0xe6ad9c){_0x2c1b98[_0x7928('0x25')]=_0xe6ad9c;if(_0x2f9109[_0x7928('0x3a')][_0x7928('0x48')]){_0x15e597['include']=[{'all':!![]}];}return db[_0x7928('0x5d')][_0x7928('0x4a')](_0x15e597);})['then'](function(_0x28f3ec){_0x2c1b98[_0x7928('0x60')]=_0x28f3ec;return _0x2c1b98;});}})[_0x7928('0x2d')](respondWithFilteredResult(_0x48fc00,_0x15e597))[_0x7928('0x51')](handleError(_0x48fc00,null));};exports[_0x7928('0x61')]=function(_0x3063c6,_0x561a29,_0x5748c7){return db['CmList']['find']({'where':{'id':_0x3063c6['params']['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x561a29,null))[_0x7928('0x2d')](function(_0x29b747){if(_0x29b747){return _0x29b747[_0x7928('0x61')](_0x3063c6['query'][_0x7928('0x62')]);}})[_0x7928('0x2d')](respondWithStatusCode(_0x561a29,null))[_0x7928('0x51')](handleError(_0x561a29,null));};exports[_0x7928('0x63')]=function(_0x356373,_0x24e5e6,_0x380626){return db['CmList'][_0x7928('0x50')]({'where':{'id':_0x356373[_0x7928('0x4c')]['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x24e5e6,null))['then'](function(_0x539d5c){if(_0x539d5c){var _0x485c98=[];var _0x2cb4f5={'success':[],'errors':[]};return db['CmContact'][_0x7928('0x5b')]()['then'](function(_0x5d9d07){if(_0x356373[_0x7928('0x53')][_0x7928('0x64')]&&_['isArray'](_0x356373['body']['tags'])){if(_0x356373[_0x7928('0x53')][_0x7928('0x64')][_0x7928('0x4f')]){_0x356373[_0x7928('0x53')][_0x7928('0x64')]=_0x356373[_0x7928('0x53')][_0x7928('0x64')][_0x7928('0x65')](';')+';';}else{_0x356373['body'][_0x7928('0x64')]=null;}}else{_0x356373[_0x7928('0x53')][_0x7928('0x64')]=null;}if(_0x356373['body']&&_['isArray'](_0x356373[_0x7928('0x53')])){for(var _0x581747=0x0;_0x581747<_0x356373[_0x7928('0x53')]['length'];_0x581747+=0x1){_0x356373['body'][_0x581747]['ListId']=_0x356373[_0x7928('0x4c')]['id'];_0x485c98[_0x7928('0x66')](_0x356373[_0x7928('0x53')][_0x581747]);}return BPromise[_0x7928('0x67')](_0x485c98,function(_0x4dbc18){return db[_0x7928('0x68')][_0x7928('0x52')](_['omit'](_0x4dbc18,[_0x7928('0x62'),'id'])||{},{'fields':_[_0x7928('0x4d')](_0x5d9d07),'raw':!![]})[_0x7928('0x2d')](function(_0x1db287){_0x2cb4f5[_0x7928('0x69')][_0x7928('0x66')](_0x1db287['dataValues']);})[_0x7928('0x51')](function(_0x28f367){_0x2cb4f5[_0x7928('0x6a')]['push']({'data':_0x4dbc18,'error':_0x28f367[_0x7928('0x6b')]});});})[_0x7928('0x2d')](function(_0x47a288){return _0x2cb4f5;})[_0x7928('0x51')](function(_0x5289b1){return _0x5289b1;});}else{_0x24e5e6[_0x7928('0x26')](0x190)[_0x7928('0x29')]({'message':_0x7928('0x6c')});}});}})['then'](respondWithResult(_0x24e5e6,null))[_0x7928('0x51')](handleError(_0x24e5e6,null));};exports[_0x7928('0x6d')]=function(_0x16ef32,_0x3a6e6d,_0xcf5bb5){var _0x5beb39;return db[_0x7928('0x47')]['find']({'where':{'id':_0x16ef32[_0x7928('0x4c')]['id']},'include':[{'model':db[_0x7928('0x6e')],'as':_0x7928('0x6f')}]})['then'](handleEntityNotFound(_0x3a6e6d,null))[_0x7928('0x2d')](function(_0x3ad672){if(_0x3ad672){_0x5beb39=_0x3ad672;return db[_0x7928('0x68')][_0x7928('0x4e')];}})[_0x7928('0x2d')](function(_0x457aec){if(_0x457aec){var _0x224483={};var _0x4cb712={};_0x4cb712['model']=_[_0x7928('0x70')](_[_0x7928('0x4d')](_0x457aec),_['map'](_0x5beb39[_0x7928('0x6f')],function(_0x511fbc){return util['format'](_0x7928('0x71'),_0x511fbc['id']);}));_0x4cb712[_0x7928('0x3a')]=_[_0x7928('0x4d')](_0x16ef32[_0x7928('0x3a')]);_0x4cb712['filters']=_[_0x7928('0x3c')](_0x4cb712[_0x7928('0x39')],_0x4cb712[_0x7928('0x3a')]);_0x224483['attributes']=_[_0x7928('0x3c')](_0x4cb712[_0x7928('0x39')],qs['fields'](_0x16ef32[_0x7928('0x3a')]['fields']));_0x224483['attributes']=_0x224483[_0x7928('0x3d')][_0x7928('0x4f')]?_0x224483[_0x7928('0x3d')]:_0x4cb712[_0x7928('0x39')];if(!_0x16ef32['query'][_0x7928('0x3f')]('nolimit')){_0x224483['limit']=qs[_0x7928('0x24')](_0x16ef32[_0x7928('0x3a')][_0x7928('0x24')]);_0x224483['offset']=qs['offset'](_0x16ef32['query'][_0x7928('0x22')]);}_0x224483['order']=qs[_0x7928('0x42')](_0x16ef32[_0x7928('0x3a')]['sort']);_0x224483[_0x7928('0x43')]=qs[_0x7928('0x3b')](_[_0x7928('0x44')](_0x16ef32['query'],_0x4cb712[_0x7928('0x3b')]));_0x224483[_0x7928('0x72')]=!![];if(_0x16ef32[_0x7928('0x3a')][_0x7928('0x5f')]){_0x224483[_0x7928('0x43')]=_[_0x7928('0x45')](_0x224483[_0x7928('0x43')],{'$or':_[_0x7928('0x35')](_0x224483[_0x7928('0x3d')],function(_0x164afc){var _0xd4ceeb={};_0xd4ceeb[_0x164afc]={'$like':'%'+_0x16ef32[_0x7928('0x3a')][_0x7928('0x5f')]+'%'};return _0xd4ceeb;})});}_0x224483=_['merge']({},_0x224483,_0x16ef32[_0x7928('0x46')]);return _0x5beb39[_0x7928('0x6d')](_0x224483);}})[_0x7928('0x2d')](respondWithResult(_0x3a6e6d,null))['catch'](handleError(_0x3a6e6d,null));};exports[_0x7928('0x73')]=function(_0xd10c52,_0x271d63,_0x1b0a96){var _0x5b6130;var _0x526a85;var _0x38425d;var _0x34d99e=_0xd10c52['params']['id'];csv_results=[];return db[_0x7928('0x74')][_0x7928('0x4a')]({'attributes':['id',_0x7928('0x32')],'raw':!![],'order':[_0x7928('0x75')]})['then'](function(_0x4a1b62){_0x5b6130=_0x4a1b62;var _0x121f7f=_[_0x7928('0x4d')](db['CmContact']['rawAttributes']);return db[_0x7928('0x6e')][_0x7928('0x4a')]({'raw':!![],'attributes':['id',_0x7928('0x76')]})[_0x7928('0x2d')](function(_0x1571b1){_0x526a85=_0x1571b1;var _0xdfa786=squel['select']()[_0x7928('0x3e')](_0x121f7f)[_0x7928('0x77')](_0x7928('0x78'),'c')[_0x7928('0x43')](_0x7928('0x79'),_0x34d99e)['where'](_0x7928('0x7a'))[_0x7928('0x7b')]();for(var _0x3389e0=0x0;_0x3389e0<_0x526a85['length'];_0x3389e0++){_0xdfa786['field'](_0x7928('0x7c')+_0x526a85[_0x3389e0]['id'],_0x7928('0x7d')+_0x526a85[_0x3389e0][_0x7928('0x76')]);}for(var _0x3389e0=0x0;_0x3389e0<_0x5b6130[_0x7928('0x4f')];_0x3389e0++){_0xdfa786[_0x7928('0x7e')](squel[_0x7928('0x7f')]()['field'](_0x7928('0x80'))[_0x7928('0x77')](_0x7928('0x81'))[_0x7928('0x43')](_0x7928('0x82'),_0x5b6130[_0x3389e0]['id'])[_0x7928('0x43')]('CmContactId\x20=\x20c.id'),'additionalPhone_'+_0x5b6130[_0x3389e0][_0x7928('0x32')]);_0xdfa786[_0x7928('0x7e')](squel['select']()[_0x7928('0x7e')]('description')[_0x7928('0x77')](_0x7928('0x81'))[_0x7928('0x43')]('ItemTypeId\x20=\x20?',_0x5b6130[_0x3389e0]['id'])[_0x7928('0x43')](_0x7928('0x83')),_0x7928('0x84')+_0x5b6130[_0x3389e0][_0x7928('0x32')]);}var _0x591418=[];_0x591418[_0x7928('0x66')](_0xdfa786[_0x7928('0x85')]());BPromise[_0x7928('0x67')](_0x591418,handleQuery)[_0x7928('0x2d')](function(_0x24ed58){handleQuery(_0xdfa786['toString']());var _0x5ad23c=csv_results[0x0];if(!_[_0x7928('0x86')](_0x5ad23c)){var _0x177127=toCsv(_0x5ad23c);var _0x4f2628=Date['now']();fs[_0x7928('0x87')](util[_0x7928('0x88')](_0x7928('0x89'),_0x34d99e,_0x4f2628),_0x177127);_0x271d63[_0x7928('0x8a')]('Content-disposition',_0x7928('0x8b')+util[_0x7928('0x88')](_0x7928('0x8c'),_0x34d99e,_0x4f2628));_0x271d63[_0x7928('0x8a')](_0x7928('0x8d'),_0x7928('0x8e'));return _0x271d63[_0x7928('0x8f')](util[_0x7928('0x88')]('/tmp/list_%d_%s.csv',_0x34d99e,_0x4f2628));}else{return _0x271d63[_0x7928('0x20')](0xcc);}});});});};exports[_0x7928('0x90')]=function(_0x311ce0,_0x255282,_0x48c5db){var _0x5e3dab;delete _0x311ce0[_0x7928('0x53')]['id'];return db['CmList'][_0x7928('0x5e')]({'where':{'id':_0x311ce0[_0x7928('0x4c')]['id']}})['then'](handleEntityNotFound(_0x255282,null))[_0x7928('0x2d')](function(_0x47ca64){if(_0x47ca64){return db[_0x7928('0x91')][_0x7928('0x92')](function(_0x371f99){return db[_0x7928('0x6e')][_0x7928('0x52')](_0x311ce0['body'],{'transaction':_0x371f99})[_0x7928('0x2d')](function(_0x37e7ff){_0x5e3dab=_0x37e7ff;return _0x47ca64[_0x7928('0x93')](_0x37e7ff,{'transaction':_0x371f99});})[_0x7928('0x2d')](function(){var _0x4fe921={'type':db['Sequelize'][_0x7928('0x94')],'transaction':_0x371f99};switch(_0x311ce0[_0x7928('0x53')][_0x7928('0x37')]){case _0x7928('0x95'):_0x4fe921[_0x7928('0x37')]=db[_0x7928('0x96')][_0x7928('0x94')];break;case _0x7928('0x97'):_0x4fe921[_0x7928('0x37')]=db[_0x7928('0x96')][_0x7928('0x98')];break;case'switch':_0x4fe921[_0x7928('0x37')]=db[_0x7928('0x96')]['BOOLEAN'];_0x4fe921['defaultValue']=![];break;default:}return db[_0x7928('0x91')]['queryInterface'][_0x7928('0x99')](_0x7928('0x78'),util['format'](_0x7928('0x9a'),_0x5e3dab['id']),_0x4fe921);})[_0x7928('0x2d')](function(){return _0x5e3dab;});});}})[_0x7928('0x2d')](respondWithResult(_0x255282,null))['catch'](handleError(_0x255282,null));};exports[_0x7928('0x9b')]=function(_0xde63,_0x551c3,_0x51da49){var _0x125666={};var _0x235f43={};var _0x5280c2;var _0x2fcd8c;return db[_0x7928('0x47')][_0x7928('0x5e')]({'where':{'id':_0xde63[_0x7928('0x4c')]['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x551c3,null))[_0x7928('0x2d')](function(_0x50ab0e){if(_0x50ab0e){_0x5280c2=_0x50ab0e;_0x235f43[_0x7928('0x39')]=_['keys'](db[_0x7928('0x6e')]['rawAttributes']);_0x235f43[_0x7928('0x3a')]=_['keys'](_0xde63[_0x7928('0x3a')]);_0x235f43[_0x7928('0x3b')]=_[_0x7928('0x3c')](_0x235f43[_0x7928('0x39')],_0x235f43[_0x7928('0x3a')]);_0x125666[_0x7928('0x3d')]=_[_0x7928('0x3c')](_0x235f43[_0x7928('0x39')],qs[_0x7928('0x3e')](_0xde63[_0x7928('0x3a')][_0x7928('0x3e')]));_0x125666[_0x7928('0x3d')]=_0x125666[_0x7928('0x3d')][_0x7928('0x4f')]?_0x125666[_0x7928('0x3d')]:_0x235f43[_0x7928('0x39')];_0x125666[_0x7928('0x41')]=qs[_0x7928('0x42')](_0xde63[_0x7928('0x3a')][_0x7928('0x42')]);_0x125666[_0x7928('0x43')]=qs[_0x7928('0x3b')](_[_0x7928('0x44')](_0xde63[_0x7928('0x3a')],_0x235f43[_0x7928('0x3b')]));_0x125666['where']=_[_0x7928('0x45')](_0x125666[_0x7928('0x43')],{'$or':[{'ListId':_0x50ab0e['id']},{'ListId':null}]});if(_0xde63[_0x7928('0x3a')][_0x7928('0x5f')]){_0x125666[_0x7928('0x43')]=_[_0x7928('0x45')](_0x125666['where'],{'$or':_[_0x7928('0x35')](_0x125666[_0x7928('0x3d')],function(_0x25793c){var _0x2ec37f={};_0x2ec37f[_0x25793c]={'$like':'%'+_0xde63[_0x7928('0x3a')]['filter']+'%'};return _0x2ec37f;})});}_0x125666=_['merge']({},_0x125666,_0xde63[_0x7928('0x46')]);return db[_0x7928('0x6e')][_0x7928('0x9c')](_0x125666);}})[_0x7928('0x2d')](respondWithResult(_0x551c3,null))[_0x7928('0x51')](handleError(_0x551c3,null));};exports[_0x7928('0x9d')]=function(_0x24d346,_0x1a05fe){return db[_0x7928('0x6e')][_0x7928('0x9c')]({'where':{'ListId':null}})[_0x7928('0x2d')](handleEntityNotFound(_0x1a05fe,null))[_0x7928('0x2d')](function(_0x14af23){return _0x14af23;})['then'](respondWithResult(_0x1a05fe,null))['catch'](handleError(_0x1a05fe,null));};exports['addAgents']=function(_0xbe2b52,_0x446c9c,_0x34e589){return db['CmList']['find']({'where':{'id':_0xbe2b52[_0x7928('0x4c')]['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x446c9c,null))[_0x7928('0x2d')](function(_0x4b22b1){if(_0x4b22b1){return _0x4b22b1[_0x7928('0x9e')](_0xbe2b52['body'][_0x7928('0x62')],_[_0x7928('0x9f')](_0xbe2b52['body'],[_0x7928('0x62'),'id'])||{})[_0x7928('0xa0')](function(_0x49966e){for(var _0x7311aa=0x0;_0x7311aa<_0xbe2b52[_0x7928('0x53')][_0x7928('0x62')][_0x7928('0x4f')];_0x7311aa+=0x1){socket[_0x7928('0xa1')](_0x7928('0xa2'),{'UserId':Number(_0xbe2b52[_0x7928('0x53')][_0x7928('0x62')][_0x7311aa]),'CmListId':Number(_0xbe2b52[_0x7928('0x4c')]['id'])});}return _0x49966e;});}})[_0x7928('0x2d')](respondWithResult(_0x446c9c,null))[_0x7928('0x51')](handleError(_0x446c9c,null));};exports['removeAgents']=function(_0x82ad7f,_0x3e8c7a,_0x5ba11b){return db[_0x7928('0x47')][_0x7928('0x50')]({'where':{'id':_0x82ad7f[_0x7928('0x4c')]['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x3e8c7a,null))[_0x7928('0x2d')](function(_0x251ce1){if(_0x251ce1){return _0x251ce1[_0x7928('0xa3')](_0x82ad7f['query'][_0x7928('0x62')])[_0x7928('0x2d')](function(){if(_['isArray'](_0x82ad7f[_0x7928('0x3a')][_0x7928('0x62')])){for(var _0x19b9f=0x0;_0x19b9f<_0x82ad7f['query'][_0x7928('0x62')][_0x7928('0x4f')];_0x19b9f+=0x1){socket[_0x7928('0xa1')]('userCmList:remove',{'UserId':Number(_0x82ad7f[_0x7928('0x3a')][_0x7928('0x62')][_0x19b9f]),'CmListId':Number(_0x82ad7f[_0x7928('0x4c')]['id'])});}}else{socket[_0x7928('0xa1')]('userCmList:remove',{'UserId':Number(_0x82ad7f[_0x7928('0x3a')][_0x7928('0x62')]),'CmListId':Number(_0x82ad7f['params']['id'])});}});}})[_0x7928('0x2d')](respondWithStatusCode(_0x3e8c7a,null))[_0x7928('0x51')](handleError(_0x3e8c7a,null));};exports['getAgents']=function(_0x3b2f40,_0x3f31fc,_0x8c586a){var _0x340bdc={};var _0x51e72a={};var _0x1fc96d;var _0x2e4e4c;return db[_0x7928('0x47')][_0x7928('0x5e')]({'where':{'id':_0x3b2f40['params']['id']}})[_0x7928('0x2d')](handleEntityNotFound(_0x3f31fc,null))[_0x7928('0x2d')](function(_0x1960a9){if(_0x1960a9){_0x1fc96d=_0x1960a9;_0x51e72a[_0x7928('0x39')]=_[_0x7928('0x4d')](db['User'][_0x7928('0x4e')]);_0x51e72a[_0x7928('0x3a')]=_['keys'](_0x3b2f40['query']);_0x51e72a[_0x7928('0x3b')]=_[_0x7928('0x3c')](_0x51e72a[_0x7928('0x39')],_0x51e72a[_0x7928('0x3a')]);_0x340bdc['attributes']=_[_0x7928('0x3c')](_0x51e72a[_0x7928('0x39')],qs[_0x7928('0x3e')](_0x3b2f40['query'][_0x7928('0x3e')]));_0x340bdc[_0x7928('0x3d')]=_0x340bdc['attributes']['length']?_0x340bdc['attributes']:_0x51e72a[_0x7928('0x39')];_0x340bdc[_0x7928('0x41')]=qs['sort'](_0x3b2f40[_0x7928('0x3a')][_0x7928('0x42')]);_0x340bdc[_0x7928('0x43')]=qs['filters'](_['pick'](_0x3b2f40[_0x7928('0x3a')],_0x51e72a[_0x7928('0x3b')]));if(_0x3b2f40['query']['filter']){_0x340bdc[_0x7928('0x43')]=_[_0x7928('0x45')](_0x340bdc['where'],{'$or':_['map'](_0x340bdc[_0x7928('0x3d')],function(_0x12bae7){var _0x4fb757={};_0x4fb757[_0x12bae7]={'$like':'%'+_0x3b2f40[_0x7928('0x3a')][_0x7928('0x5f')]+'%'};return _0x4fb757;})});}_0x340bdc=_[_0x7928('0x45')]({},_0x340bdc,_0x3b2f40['options']);return _0x1fc96d['getAgents'](_0x340bdc);}})[_0x7928('0x2d')](function(_0x498abc){if(_0x498abc){_0x2e4e4c=_0x498abc[_0x7928('0x4f')];if(!_0x3b2f40[_0x7928('0x3a')][_0x7928('0x3f')]('nolimit')){_0x340bdc['limit']=qs[_0x7928('0x24')](_0x3b2f40[_0x7928('0x3a')][_0x7928('0x24')]);_0x340bdc[_0x7928('0x22')]=qs[_0x7928('0x22')](_0x3b2f40[_0x7928('0x3a')][_0x7928('0x22')]);}return _0x1fc96d[_0x7928('0xa4')](_0x340bdc);}})['then'](function(_0x3c11ca){if(_0x3c11ca){return _0x3c11ca?{'count':_0x2e4e4c,'rows':_0x3c11ca}:null;}})[_0x7928('0x2d')](respondWithResult(_0x3f31fc,null))[_0x7928('0x51')](handleError(_0x3f31fc,null));};function handleQuery(_0x4dd586){logger['info'](_0x4dd586);return db[_0x7928('0x91')][_0x7928('0x3a')](_0x4dd586)['spread'](function(_0x3a14b6){csv_results['push'](_0x3a14b6);})[_0x7928('0x51')](function(_0x59f678){logger[_0x7928('0x5a')](_0x59f678[_0x7928('0x6b')]);});}
\ No newline at end of file
index 80dda33..3e44de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x5d1d6c,_0x8c94ff){var _0x3f4b02=function(_0x12a703){while(--_0x12a703){_0x5d1d6c['push'](_0x5d1d6c['shift']());}};_0x3f4b02(++_0x8c94ff);}(_0x814b,0x1a2));var _0xb814=function(_0x3b395a,_0xb9a82d){_0x3b395a=_0x3b395a-0x0;var _0x4aeef2=_0x814b[_0x3b395a];return _0x4aeef2;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x133e8d,_0x4648f1){var _0x10ce55=function(_0x13e8bd){while(--_0x13e8bd){_0x133e8d['push'](_0x133e8d['shift']());}};_0x10ce55(++_0x4648f1);}(_0x7217,0x19e));var _0x7721=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x7217[_0x19e35c];return _0x3e1fe8;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index 3287322..71e0cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['rimraf','../../config/environment','./cmList.attributes','exports','cm_lists','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x180237,_0xfd4959){var _0x56fa74=function(_0x520793){while(--_0x520793){_0x180237['push'](_0x180237['shift']());}};_0x56fa74(++_0xfd4959);}(_0xb903,0x185));var _0x3b90=function(_0x5cf176,_0xc29eef){_0x5cf176=_0x5cf176-0x0;var _0x5d5254=_0xb903[_0x5cf176];return _0x5d5254;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('CmList',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x99e9=['util','../../config/logger','api','moment','request-promise','path','rimraf','./cmList.attributes','define','CmList'];(function(_0x4bb192,_0x3cae7b){var _0x1948e9=function(_0x1eb249){while(--_0x1eb249){_0x4bb192['push'](_0x4bb192['shift']());}};_0x1948e9(++_0x3cae7b);}(_0x99e9,0xb4));var _0x999e=function(_0x108831,_0x5e4f70){_0x108831=_0x108831-0x0;var _0x4da77a=_0x99e9[_0x108831];return _0x4da77a;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var logger=require(_0x999e('0x1'))(_0x999e('0x2'));var moment=require(_0x999e('0x3'));var BPromise=require('bluebird');var rp=require(_0x999e('0x4'));var fs=require('fs');var path=require(_0x999e('0x5'));var rimraf=require(_0x999e('0x6'));var config=require('../../config/environment');var attributes=require(_0x999e('0x7'));module['exports']=function(_0x25421f,_0x1bda0a){return _0x25421f[_0x999e('0x8')](_0x999e('0x9'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1ecad2..fd92267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd91=['debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','redis','localhost','./cmList.socket','request','then','info','CmList,\x20%s,\x20%s'];(function(_0x59b2a1,_0x1f631f){var _0x4908d1=function(_0x14c9b8){while(--_0x14c9b8){_0x59b2a1['push'](_0x59b2a1['shift']());}};_0x4908d1(++_0x1f631f);}(_0xbd91,0xea));var _0x1bd9=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0xbd91[_0x4a7631];return _0x1a5a6f;};'use strict';var _=require(_0x1bd9('0x0'));var util=require(_0x1bd9('0x1'));var moment=require('moment');var BPromise=require(_0x1bd9('0x2'));var rs=require(_0x1bd9('0x3'));var fs=require('fs');var Redis=require(_0x1bd9('0x4'));var db=require(_0x1bd9('0x5'))['db'];var utils=require(_0x1bd9('0x6'));var logger=require('../../config/logger')(_0x1bd9('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1bd9('0x8')]['http']({'port':0x232a});config[_0x1bd9('0x9')]=_['defaults'](config[_0x1bd9('0x9')],{'host':_0x1bd9('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1bd9('0x9')]));require(_0x1bd9('0xb'))['register'](socket);function respondWithRpcPromise(_0x27b890,_0x162761,_0x233be7){return new BPromise(function(_0x3a3810,_0x2f07b6){return client[_0x1bd9('0xc')](_0x27b890,_0x233be7)[_0x1bd9('0xd')](function(_0x5813f5){logger[_0x1bd9('0xe')](_0x1bd9('0xf'),_0x162761,'request\x20sent');logger[_0x1bd9('0x10')](_0x1bd9('0x11'),_0x162761,'request\x20sent',JSON[_0x1bd9('0x12')](_0x5813f5));if(_0x5813f5[_0x1bd9('0x13')]){if(_0x5813f5[_0x1bd9('0x13')][_0x1bd9('0x14')]===0x1f4){logger[_0x1bd9('0x13')](_0x1bd9('0xf'),_0x162761,_0x5813f5['error'][_0x1bd9('0x15')]);return _0x2f07b6(_0x5813f5['error']['message']);}logger[_0x1bd9('0x13')](_0x1bd9('0xf'),_0x162761,_0x5813f5[_0x1bd9('0x13')][_0x1bd9('0x15')]);return _0x3a3810(_0x5813f5[_0x1bd9('0x13')][_0x1bd9('0x15')]);}else{logger[_0x1bd9('0xe')]('CmList,\x20%s,\x20%s',_0x162761,_0x1bd9('0x16'));_0x3a3810(_0x5813f5[_0x1bd9('0x17')][_0x1bd9('0x15')]);}})[_0x1bd9('0x18')](function(_0x255ed9){logger[_0x1bd9('0x13')]('CmList,\x20%s,\x20%s',_0x162761,_0x255ed9);_0x2f07b6(_0x255ed9);});});}
\ No newline at end of file
+var _0x91ba=['debug','stringify','code','error','CmList,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent'];(function(_0x4603a9,_0x2186ae){var _0x12aed0=function(_0x5857f4){while(--_0x5857f4){_0x4603a9['push'](_0x4603a9['shift']());}};_0x12aed0(++_0x2186ae);}(_0x91ba,0x1ed));var _0xa91b=function(_0x2b9a4a,_0x229fbf){_0x2b9a4a=_0x2b9a4a-0x0;var _0x5312fd=_0x91ba[_0x2b9a4a];return _0x5312fd;};'use strict';var _=require(_0xa91b('0x0'));var util=require(_0xa91b('0x1'));var moment=require(_0xa91b('0x2'));var BPromise=require('bluebird');var rs=require(_0xa91b('0x3'));var fs=require('fs');var Redis=require(_0xa91b('0x4'));var db=require(_0xa91b('0x5'))['db'];var utils=require(_0xa91b('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xa91b('0x7'));var jayson=require(_0xa91b('0x8'));var client=jayson[_0xa91b('0x9')][_0xa91b('0xa')]({'port':0x232a});config['redis']=_[_0xa91b('0xb')](config[_0xa91b('0xc')],{'host':_0xa91b('0xd'),'port':0x18eb});var socket=require(_0xa91b('0xe'))(new Redis(config[_0xa91b('0xc')]));require('./cmList.socket')[_0xa91b('0xf')](socket);function respondWithRpcPromise(_0x3b654f,_0x4e165b,_0x2777a9){return new BPromise(function(_0x4ad4ba,_0x36bd89){return client[_0xa91b('0x10')](_0x3b654f,_0x2777a9)[_0xa91b('0x11')](function(_0x38fc3a){logger[_0xa91b('0x12')]('CmList,\x20%s,\x20%s',_0x4e165b,_0xa91b('0x13'));logger[_0xa91b('0x14')]('CmList,\x20%s,\x20%s,\x20%s',_0x4e165b,_0xa91b('0x13'),JSON[_0xa91b('0x15')](_0x38fc3a));if(_0x38fc3a['error']){if(_0x38fc3a['error'][_0xa91b('0x16')]===0x1f4){logger[_0xa91b('0x17')]('CmList,\x20%s,\x20%s',_0x4e165b,_0x38fc3a[_0xa91b('0x17')]['message']);return _0x36bd89(_0x38fc3a['error']['message']);}logger[_0xa91b('0x17')](_0xa91b('0x18'),_0x4e165b,_0x38fc3a[_0xa91b('0x17')][_0xa91b('0x19')]);return _0x4ad4ba(_0x38fc3a[_0xa91b('0x17')][_0xa91b('0x19')]);}else{logger[_0xa91b('0x12')](_0xa91b('0x18'),_0x4e165b,'request\x20sent');_0x4ad4ba(_0x38fc3a[_0xa91b('0x1a')]['message']);}})['catch'](function(_0x50d4ab){logger[_0xa91b('0x17')](_0xa91b('0x18'),_0x4e165b,_0x50d4ab);_0x36bd89(_0x50d4ab);});});}
\ No newline at end of file
index 3874211..8c98003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb801=['./cmList.events','remove','update','emit','length','cmList:'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xb801,0x126));var _0x1b80=function(_0xbd8310,_0x3df6c9){_0xbd8310=_0xbd8310-0x0;var _0x1d1435=_0xb801[_0xbd8310];return _0x1d1435;};'use strict';var CmListEvents=require(_0x1b80('0x0'));var events=['save',_0x1b80('0x1'),_0x1b80('0x2')];function createListener(_0x1b69d0,_0x167b60){return function(_0x4d7b76){_0x167b60[_0x1b80('0x3')](_0x1b69d0,_0x4d7b76);};}function removeListener(_0x36cb52,_0x7c30f3){return function(){CmListEvents['removeListener'](_0x36cb52,_0x7c30f3);};}exports['register']=function(_0x59093d){for(var _0x308cee=0x0,_0x3f4365=events[_0x1b80('0x4')];_0x308cee<_0x3f4365;_0x308cee++){var _0x28333a=events[_0x308cee];var _0x5b8983=createListener(_0x1b80('0x5')+_0x28333a,_0x59093d);CmListEvents['on'](_0x28333a,_0x5b8983);}};
\ No newline at end of file
+var _0xe0dd=['removeListener','length','remove','update'];(function(_0x1acf4b,_0x5a750c){var _0x4eca09=function(_0xedef3a){while(--_0xedef3a){_0x1acf4b['push'](_0x1acf4b['shift']());}};_0x4eca09(++_0x5a750c);}(_0xe0dd,0x1b2));var _0xde0d=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0xe0dd[_0x37a7c6];return _0x539905;};'use strict';var CmListEvents=require('./cmList.events');var events=['save',_0xde0d('0x0'),_0xde0d('0x1')];function createListener(_0x310571,_0x3ee6f4){return function(_0x33001d){_0x3ee6f4['emit'](_0x310571,_0x33001d);};}function removeListener(_0x5028ea,_0x5e95da){return function(){CmListEvents[_0xde0d('0x2')](_0x5028ea,_0x5e95da);};}exports['register']=function(_0x7e6167){for(var _0x465b1c=0x0,_0x35f7a6=events[_0xde0d('0x3')];_0x465b1c<_0x35f7a6;_0x465b1c++){var _0x445363=events[_0x465b1c];var _0x2cb223=createListener('cmList:'+_0x445363,_0x7e6167);CmListEvents['on'](_0x445363,_0x2cb223);}};
\ No newline at end of file
index 1d41aa9..4849cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9245=['delete','destroy','removeDispositions','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get','/describe','/global_fields','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addCustomField','addAgents','update'];(function(_0x565baf,_0x188fd8){var _0x5ce59f=function(_0x1cf936){while(--_0x1cf936){_0x565baf['push'](_0x565baf['shift']());}};_0x5ce59f(++_0x188fd8);}(_0x9245,0x164));var _0x5924=function(_0x5384dc,_0x386657){_0x5384dc=_0x5384dc-0x0;var _0x2a21d5=_0x9245[_0x5384dc];return _0x2a21d5;};'use strict';var multer=require(_0x5924('0x0'));var util=require(_0x5924('0x1'));var path=require(_0x5924('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5924('0x3')]();var fs_extra=require(_0x5924('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5924('0x5'));var config=require(_0x5924('0x6'));var controller=require('./cmList.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x5924('0x7')]);router[_0x5924('0x8')](_0x5924('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x5924('0x8')](_0x5924('0xa'),auth[_0x5924('0xb')](),controller['getGlobalCustomFields']);router[_0x5924('0x8')](_0x5924('0xc'),auth['isAuthenticated'](),controller[_0x5924('0xd')]);router['get'](_0x5924('0xe'),auth[_0x5924('0xb')](),controller[_0x5924('0xf')]);router[_0x5924('0x8')](_0x5924('0x10'),auth[_0x5924('0xb')](),controller['getContacts']);router['get']('/:id/contacts/csv',auth[_0x5924('0xb')](),controller[_0x5924('0x11')]);router[_0x5924('0x8')](_0x5924('0x12'),auth[_0x5924('0xb')](),controller[_0x5924('0x13')]);router[_0x5924('0x8')](_0x5924('0x14'),auth[_0x5924('0xb')](),controller[_0x5924('0x15')]);router[_0x5924('0x16')]('/',auth[_0x5924('0xb')](),controller[_0x5924('0x17')]);router[_0x5924('0x16')](_0x5924('0xe'),auth[_0x5924('0xb')](),controller[_0x5924('0x18')]);router[_0x5924('0x16')](_0x5924('0x10'),auth[_0x5924('0xb')](),controller['addContacts']);router[_0x5924('0x16')](_0x5924('0x12'),auth['isAuthenticated'](),controller[_0x5924('0x19')]);router[_0x5924('0x16')](_0x5924('0x14'),auth[_0x5924('0xb')](),controller[_0x5924('0x1a')]);router['put'](_0x5924('0xc'),auth[_0x5924('0xb')](),controller[_0x5924('0x1b')]);router[_0x5924('0x1c')](_0x5924('0xc'),auth[_0x5924('0xb')](),controller[_0x5924('0x1d')]);router[_0x5924('0x1c')](_0x5924('0xe'),auth[_0x5924('0xb')](),controller[_0x5924('0x1e')]);router[_0x5924('0x1c')]('/:id/users',auth[_0x5924('0xb')](),controller['removeAgents']);module[_0x5924('0x1f')]=router;
\ No newline at end of file
+var _0xb731=['/:id/dispositions','addDisposition','addContacts','addCustomField','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/global_fields','/:id','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/users','getAgents','post','create'];(function(_0x50fe4c,_0x50b146){var _0x98faff=function(_0x343d52){while(--_0x343d52){_0x50fe4c['push'](_0x50fe4c['shift']());}};_0x98faff(++_0x50b146);}(_0xb731,0x15e));var _0x1b73=function(_0x138836,_0x229129){_0x138836=_0x138836-0x0;var _0x322688=_0xb731[_0x138836];return _0x322688;};'use strict';var multer=require(_0x1b73('0x0'));var util=require(_0x1b73('0x1'));var path=require(_0x1b73('0x2'));var timeout=require(_0x1b73('0x3'));var express=require(_0x1b73('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1b73('0x5'));var interaction=require(_0x1b73('0x6'));var config=require(_0x1b73('0x7'));var controller=require(_0x1b73('0x8'));router[_0x1b73('0x9')]('/',auth[_0x1b73('0xa')](),controller[_0x1b73('0xb')]);router[_0x1b73('0x9')](_0x1b73('0xc'),auth[_0x1b73('0xa')](),controller[_0x1b73('0xd')]);router[_0x1b73('0x9')](_0x1b73('0xe'),auth[_0x1b73('0xa')](),controller['getGlobalCustomFields']);router[_0x1b73('0x9')](_0x1b73('0xf'),auth[_0x1b73('0xa')](),controller['show']);router[_0x1b73('0x9')]('/:id/dispositions',auth[_0x1b73('0xa')](),controller[_0x1b73('0x10')]);router[_0x1b73('0x9')](_0x1b73('0x11'),auth[_0x1b73('0xa')](),controller[_0x1b73('0x12')]);router[_0x1b73('0x9')]('/:id/contacts/csv',auth['isAuthenticated'](),controller[_0x1b73('0x13')]);router['get']('/:id/fields',auth[_0x1b73('0xa')](),controller['getCustomFields']);router[_0x1b73('0x9')](_0x1b73('0x14'),auth[_0x1b73('0xa')](),controller[_0x1b73('0x15')]);router[_0x1b73('0x16')]('/',auth[_0x1b73('0xa')](),controller[_0x1b73('0x17')]);router[_0x1b73('0x16')](_0x1b73('0x18'),auth[_0x1b73('0xa')](),controller[_0x1b73('0x19')]);router[_0x1b73('0x16')](_0x1b73('0x11'),auth['isAuthenticated'](),controller[_0x1b73('0x1a')]);router[_0x1b73('0x16')]('/:id/fields',auth['isAuthenticated'](),controller[_0x1b73('0x1b')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x1b73('0xf'),auth['isAuthenticated'](),controller[_0x1b73('0x1c')]);router[_0x1b73('0x1d')]('/:id',auth[_0x1b73('0xa')](),controller[_0x1b73('0x1e')]);router[_0x1b73('0x1d')](_0x1b73('0x18'),auth[_0x1b73('0xa')](),controller[_0x1b73('0x1f')]);router[_0x1b73('0x1d')](_0x1b73('0x14'),auth[_0x1b73('0xa')](),controller[_0x1b73('0x20')]);module[_0x1b73('0x21')]=router;
\ No newline at end of file
index 5e14cf9..dc1ade0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad1a=['STRING','sequelize','VIRTUAL','getDataValue','field'];(function(_0x49365d,_0x227a7c){var _0x508eaa=function(_0x4c4464){while(--_0x4c4464){_0x49365d['push'](_0x49365d['shift']());}};_0x508eaa(++_0x227a7c);}(_0xad1a,0x1e1));var _0xaad1=function(_0x2bb153,_0x304a74){_0x2bb153=_0x2bb153-0x0;var _0x1b8cd9=_0xad1a[_0x2bb153];return _0x1b8cd9;};'use strict';var Sequelize=require(_0xaad1('0x0'));module['exports']={'name':{'type':Sequelize[_0xaad1('0x1')],'get':function(_0x288890){return this[_0xaad1('0x2')](_0xaad1('0x3'));}},'field':{'type':Sequelize[_0xaad1('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0xaad1('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0xaad1('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0xc2bc=['field','STRING','VIRTUAL','getDataValue'];(function(_0x1b4ca6,_0x37f5d0){var _0x189463=function(_0x24567b){while(--_0x24567b){_0x1b4ca6['push'](_0x1b4ca6['shift']());}};_0x189463(++_0x37f5d0);}(_0xc2bc,0x66));var _0xcc2b=function(_0xdb3813,_0x3af352){_0xdb3813=_0xdb3813-0x0;var _0x47e29f=_0xc2bc[_0xdb3813];return _0x47e29f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xcc2b('0x0')],'get':function(_0x1cae59){return this[_0xcc2b('0x1')](_0xcc2b('0x2'));}},'field':{'type':Sequelize[_0xcc2b('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xcc2b('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 7c8e9aa..dfddeac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x348a46,_0x5e4061){var _0x45d19a=function(_0x480b02){while(--_0x480b02){_0x348a46['push'](_0x348a46['shift']());}};_0x45d19a(++_0x5e4061);}(_0x7a54,0x106));var _0x47a5=function(_0x6ce3fb,_0x4a0633){_0x6ce3fb=_0x6ce3fb-0x0;var _0x2a2ff2=_0x7a54[_0x6ce3fb];return _0x2a2ff2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x5e7ffd,_0x253349){var _0x5165ab=function(_0xf01b6e){while(--_0xf01b6e){_0x5e7ffd['push'](_0x5e7ffd['shift']());}};_0x5165ab(++_0x253349);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 9d4121c..f276b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70b1=['Condition','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define'];(function(_0x313243,_0x11b852){var _0x38309e=function(_0x5a8641){while(--_0x5a8641){_0x313243['push'](_0x313243['shift']());}};_0x38309e(++_0x11b852);}(_0x70b1,0x17a));var _0x170b=function(_0x2caaef,_0x3c19ed){_0x2caaef=_0x2caaef-0x0;var _0xd011f8=_0x70b1[_0x2caaef];return _0xd011f8;};'use strict';var _=require(_0x170b('0x0'));var util=require(_0x170b('0x1'));var logger=require(_0x170b('0x2'))('api');var moment=require(_0x170b('0x3'));var BPromise=require(_0x170b('0x4'));var rp=require(_0x170b('0x5'));var fs=require('fs');var path=require(_0x170b('0x6'));var rimraf=require(_0x170b('0x7'));var config=require(_0x170b('0x8'));var attributes=require(_0x170b('0x9'));module[_0x170b('0xa')]=function(_0x212627,_0x32a4d7){return _0x212627[_0x170b('0xb')](_0x170b('0xc'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2014=['Condition','tools_conditions','util','../../config/logger','api','request-promise','path','rimraf','./condition.attributes','exports','define'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x2014,0x136));var _0x4201=function(_0x2154fc,_0x5c2a89){_0x2154fc=_0x2154fc-0x0;var _0xb2bd87=_0x2014[_0x2154fc];return _0xb2bd87;};'use strict';var _=require('lodash');var util=require(_0x4201('0x0'));var logger=require(_0x4201('0x1'))(_0x4201('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4201('0x3'));var fs=require('fs');var path=require(_0x4201('0x4'));var rimraf=require(_0x4201('0x5'));var config=require('../../config/environment');var attributes=require(_0x4201('0x6'));module[_0x4201('0x7')]=function(_0x3ca89d,_0xe2837d){return _0x3ca89d[_0x4201('0x8')](_0x4201('0x9'),attributes,{'tableName':_0x4201('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ff42b3..6217f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa94e=['../../config/environment','jayson/promise','request','info','debug','request\x20sent','error','Condition,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x254f07,_0x50b496){var _0x69712e=function(_0x47e23e){while(--_0x47e23e){_0x254f07['push'](_0x254f07['shift']());}};_0x69712e(++_0x50b496);}(_0xa94e,0x76));var _0xea94=function(_0x28b722,_0x1ab398){_0x28b722=_0x28b722-0x0;var _0x3c0f46=_0xa94e[_0x28b722];return _0x3c0f46;};'use strict';var _=require(_0xea94('0x0'));var util=require(_0xea94('0x1'));var moment=require(_0xea94('0x2'));var BPromise=require('bluebird');var rs=require(_0xea94('0x3'));var fs=require('fs');var Redis=require(_0xea94('0x4'));var db=require(_0xea94('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xea94('0x6'))(_0xea94('0x7'));var config=require(_0xea94('0x8'));var jayson=require(_0xea94('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4098bd,_0x107d80,_0x42e6b4){return new BPromise(function(_0x4dc372,_0x266be1){return client[_0xea94('0xa')](_0x4098bd,_0x42e6b4)['then'](function(_0x17cfe0){logger[_0xea94('0xb')]('Condition,\x20%s,\x20%s',_0x107d80,'request\x20sent');logger[_0xea94('0xc')]('Condition,\x20%s,\x20%s,\x20%s',_0x107d80,_0xea94('0xd'),JSON['stringify'](_0x17cfe0));if(_0x17cfe0[_0xea94('0xe')]){if(_0x17cfe0['error']['code']===0x1f4){logger[_0xea94('0xe')](_0xea94('0xf'),_0x107d80,_0x17cfe0[_0xea94('0xe')][_0xea94('0x10')]);return _0x266be1(_0x17cfe0['error'][_0xea94('0x10')]);}logger[_0xea94('0xe')](_0xea94('0xf'),_0x107d80,_0x17cfe0[_0xea94('0xe')][_0xea94('0x10')]);return _0x4dc372(_0x17cfe0[_0xea94('0xe')][_0xea94('0x10')]);}else{logger[_0xea94('0xb')](_0xea94('0xf'),_0x107d80,_0xea94('0xd'));_0x4dc372(_0x17cfe0[_0xea94('0x11')][_0xea94('0x10')]);}})['catch'](function(_0x3e1b63){logger['error'](_0xea94('0xf'),_0x107d80,_0x3e1b63);_0x266be1(_0x3e1b63);});});}
\ No newline at end of file
+var _0xbcd9=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','then','info','Condition,\x20%s,\x20%s','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x4cc280,_0x3b77f3){var _0x16ed24=function(_0x473e10){while(--_0x473e10){_0x4cc280['push'](_0x4cc280['shift']());}};_0x16ed24(++_0x3b77f3);}(_0xbcd9,0x93));var _0x9bcd=function(_0x34dc6c,_0x1db72b){_0x34dc6c=_0x34dc6c-0x0;var _0x9ce3b=_0xbcd9[_0x34dc6c];return _0x9ce3b;};'use strict';var _=require(_0x9bcd('0x0'));var util=require('util');var moment=require(_0x9bcd('0x1'));var BPromise=require(_0x9bcd('0x2'));var rs=require(_0x9bcd('0x3'));var fs=require('fs');var Redis=require(_0x9bcd('0x4'));var db=require(_0x9bcd('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9bcd('0x6'))('rpc');var config=require(_0x9bcd('0x7'));var jayson=require(_0x9bcd('0x8'));var client=jayson['client'][_0x9bcd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x12866b,_0x3349dd,_0x1a7c90){return new BPromise(function(_0x3abaec,_0x9c25f4){return client['request'](_0x12866b,_0x1a7c90)[_0x9bcd('0xa')](function(_0x41b1eb){logger[_0x9bcd('0xb')](_0x9bcd('0xc'),_0x3349dd,_0x9bcd('0xd'));logger['debug'](_0x9bcd('0xe'),_0x3349dd,_0x9bcd('0xd'),JSON['stringify'](_0x41b1eb));if(_0x41b1eb['error']){if(_0x41b1eb['error']['code']===0x1f4){logger['error'](_0x9bcd('0xc'),_0x3349dd,_0x41b1eb[_0x9bcd('0xf')][_0x9bcd('0x10')]);return _0x9c25f4(_0x41b1eb[_0x9bcd('0xf')][_0x9bcd('0x10')]);}logger[_0x9bcd('0xf')](_0x9bcd('0xc'),_0x3349dd,_0x41b1eb[_0x9bcd('0xf')]['message']);return _0x3abaec(_0x41b1eb[_0x9bcd('0xf')][_0x9bcd('0x10')]);}else{logger[_0x9bcd('0xb')]('Condition,\x20%s,\x20%s',_0x3349dd,_0x9bcd('0xd'));_0x3abaec(_0x41b1eb[_0x9bcd('0x11')]['message']);}})[_0x9bcd('0x12')](function(_0x552861){logger['error']('Condition,\x20%s,\x20%s',_0x3349dd,_0x552861);_0x9c25f4(_0x552861);});});}
\ No newline at end of file
index 7e2f359..dde4569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21af=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','/:id','isAuthenticated','update'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0x21af,0xf2));var _0xf21a=function(_0x3c619c,_0x1f56e8){_0x3c619c=_0x3c619c-0x0;var _0x27b820=_0x21af[_0x3c619c];return _0x27b820;};'use strict';var multer=require(_0xf21a('0x0'));var util=require(_0xf21a('0x1'));var path=require(_0xf21a('0x2'));var timeout=require('connect-timeout');var express=require(_0xf21a('0x3'));var router=express[_0xf21a('0x4')]();var fs_extra=require(_0xf21a('0x5'));var auth=require(_0xf21a('0x6'));var interaction=require(_0xf21a('0x7'));var config=require(_0xf21a('0x8'));var controller=require(_0xf21a('0x9'));router['put'](_0xf21a('0xa'),auth[_0xf21a('0xb')](),controller[_0xf21a('0xc')]);router['delete'](_0xf21a('0xa'),auth[_0xf21a('0xb')](),controller[_0xf21a('0xd')]);module[_0xf21a('0xe')]=router;
\ No newline at end of file
+var _0x2c6c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./condition.controller','put','isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x1d2000,_0x1e7d57){var _0x34332a=function(_0x27cbe1){while(--_0x27cbe1){_0x1d2000['push'](_0x1d2000['shift']());}};_0x34332a(++_0x1e7d57);}(_0x2c6c,0x1cc));var _0xc2c6=function(_0x181353,_0x24aca3){_0x181353=_0x181353-0x0;var _0x1932aa=_0x2c6c[_0x181353];return _0x1932aa;};'use strict';var multer=require(_0xc2c6('0x0'));var util=require(_0xc2c6('0x1'));var path=require(_0xc2c6('0x2'));var timeout=require(_0xc2c6('0x3'));var express=require(_0xc2c6('0x4'));var router=express[_0xc2c6('0x5')]();var fs_extra=require(_0xc2c6('0x6'));var auth=require(_0xc2c6('0x7'));var interaction=require(_0xc2c6('0x8'));var config=require('../../config/environment');var controller=require(_0xc2c6('0x9'));router[_0xc2c6('0xa')]('/:id',auth[_0xc2c6('0xb')](),controller[_0xc2c6('0xc')]);router[_0xc2c6('0xd')]('/:id',auth[_0xc2c6('0xb')](),controller[_0xc2c6('0xe')]);module['exports']=router;
\ No newline at end of file
index d79e4ec..7f59ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4021=['INTEGER','sequelize','exports','STRING','name'];(function(_0x1d17a5,_0x133cc9){var _0x25f3d1=function(_0x20118c){while(--_0x20118c){_0x1d17a5['push'](_0x1d17a5['shift']());}};_0x25f3d1(++_0x133cc9);}(_0x4021,0xb5));var _0x1402=function(_0x377f50,_0x5589ba){_0x377f50=_0x377f50-0x0;var _0x14a9d2=_0x4021[_0x377f50];return _0x14a9d2;};'use strict';var Sequelize=require(_0x1402('0x0'));module[_0x1402('0x1')]={'name':{'type':Sequelize[_0x1402('0x2')],'allowNull':![],'unique':_0x1402('0x3')},'OrderBy':{'type':Sequelize[_0x1402('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x1402('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xc860=['exports','STRING','name','sequelize'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xc860,0xdb));var _0x0c86=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xc860[_0x38a7ac];return _0x53061a;};'use strict';var Sequelize=require(_0x0c86('0x0'));module[_0x0c86('0x1')]={'name':{'type':Sequelize[_0x0c86('0x2')],'allowNull':![],'unique':_0x0c86('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x0c86('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 2be4038..6d6b6f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','filter','merge','options','includeAll','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ContactItemTypes','UserProfileSection','userProfileId','autoAssociation','body','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xed3c,0x1a6));var _0xced3=function(_0x1f5143,_0x5e31e6){_0x1f5143=_0x1f5143-0x0;var _0x383a38=_0xed3c[_0x1f5143];return _0x383a38;};'use strict';var emlformat=require(_0xced3('0x0'));var rimraf=require(_0xced3('0x1'));var zipdir=require(_0xced3('0x2'));var jsonpatch=require(_0xced3('0x3'));var rp=require('request-promise');var moment=require(_0xced3('0x4'));var BPromise=require(_0xced3('0x5'));var Mustache=require(_0xced3('0x6'));var util=require('util');var path=require('path');var sox=require(_0xced3('0x7'));var csv=require(_0xced3('0x8'));var ejs=require(_0xced3('0x9'));var fs=require('fs');var fs_extra=require(_0xced3('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xced3('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xced3('0xc'));var Redis=require(_0xced3('0xd'));var authService=require(_0xced3('0xe'));var qs=require(_0xced3('0xf'));var as=require(_0xced3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xced3('0x11'))(_0xced3('0x12'));var utils=require(_0xced3('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xced3('0x14'));var db=require(_0xced3('0x15'))['db'];function respondWithStatusCode(_0x42d879,_0x3b2ac4){_0x3b2ac4=_0x3b2ac4||0xcc;return function(_0x457caf){if(_0x457caf){return _0x42d879[_0xced3('0x16')](_0x3b2ac4);}return _0x42d879[_0xced3('0x17')](_0x3b2ac4)['end']();};}function respondWithResult(_0x65bb58,_0x5e186e){_0x5e186e=_0x5e186e||0xc8;return function(_0xf2db6f){if(_0xf2db6f){return _0x65bb58[_0xced3('0x17')](_0x5e186e)[_0xced3('0x18')](_0xf2db6f);}};}function respondWithFilteredResult(_0x39e4aa,_0x4dd4c3){return function(_0x146a21){if(_0x146a21){var _0x322c2d=typeof _0x4dd4c3['offset']===_0xced3('0x19')&&typeof _0x4dd4c3[_0xced3('0x1a')]===_0xced3('0x19');var _0x17f611=_0x146a21['count'];var _0x4569af=_0x322c2d?0x0:_0x4dd4c3['offset'];var _0x353580=_0x322c2d?_0x146a21[_0xced3('0x1b')]:_0x4dd4c3[_0xced3('0x1c')]+_0x4dd4c3[_0xced3('0x1a')];var _0x44143f;if(_0x353580>=_0x17f611){_0x353580=_0x17f611;_0x44143f=0xc8;}else{_0x44143f=0xce;}_0x39e4aa[_0xced3('0x17')](_0x44143f);return _0x39e4aa[_0xced3('0x1d')](_0xced3('0x1e'),_0x4569af+'-'+_0x353580+'/'+_0x17f611)[_0xced3('0x18')](_0x146a21);}return null;};}function patchUpdates(_0x17c011){return function(_0x2008f2){try{jsonpatch['apply'](_0x2008f2,_0x17c011,!![]);}catch(_0x5b8b1f){return BPromise['reject'](_0x5b8b1f);}return _0x2008f2[_0xced3('0x1f')]();};}function saveUpdates(_0x342b9e,_0x21e074){return function(_0x4bf915){if(_0x4bf915){return _0x4bf915[_0xced3('0x20')](_0x342b9e)[_0xced3('0x21')](function(_0x526854){return _0x526854;});}return null;};}function removeEntity(_0x559fa2,_0x3adf14){return function(_0x101708){if(_0x101708){return _0x101708[_0xced3('0x22')]()[_0xced3('0x21')](function(){var _0x50f7c1=_0x101708[_0xced3('0x23')]({'plain':!![]});var _0x23f92b='ContactItemTypes';return db[_0xced3('0x24')]['destroy']({'where':{'type':_0x23f92b,'resourceId':_0x50f7c1['id']}})[_0xced3('0x21')](function(){return _0x101708;});})[_0xced3('0x21')](function(){_0x559fa2[_0xced3('0x17')](0xcc)[_0xced3('0x25')]();});}};}function handleEntityNotFound(_0x2ec2c4,_0x502cf1){return function(_0x5454c0){if(!_0x5454c0){_0x2ec2c4[_0xced3('0x16')](0x194);}return _0x5454c0;};}function handleError(_0x5bb425,_0x2ab8a8){_0x2ab8a8=_0x2ab8a8||0x1f4;return function(_0x1e6923){logger['error'](_0x1e6923[_0xced3('0x26')]);if(_0x1e6923[_0xced3('0x27')]){delete _0x1e6923[_0xced3('0x27')];}_0x5bb425[_0xced3('0x17')](_0x2ab8a8)[_0xced3('0x28')](_0x1e6923);};}exports[_0xced3('0x29')]=function(_0x895a32,_0x41d003){var _0x116cc7={},_0x559b8e={},_0xa78899={'count':0x0,'rows':[]};var _0x1b8baa=_[_0xced3('0x2a')](db[_0xced3('0x2b')][_0xced3('0x2c')],function(_0x21e4a2){return{'name':_0x21e4a2[_0xced3('0x2d')],'type':_0x21e4a2[_0xced3('0x2e')][_0xced3('0x2f')]};});_0x559b8e[_0xced3('0x30')]=_[_0xced3('0x2a')](_0x1b8baa,_0xced3('0x27'));_0x559b8e[_0xced3('0x31')]=_[_0xced3('0x32')](_0x895a32[_0xced3('0x31')]);_0x559b8e[_0xced3('0x33')]=_[_0xced3('0x34')](_0x559b8e[_0xced3('0x30')],_0x559b8e[_0xced3('0x31')]);_0x116cc7[_0xced3('0x35')]=_[_0xced3('0x34')](_0x559b8e['model'],qs[_0xced3('0x36')](_0x895a32['query'][_0xced3('0x36')]));_0x116cc7[_0xced3('0x35')]=_0x116cc7[_0xced3('0x35')][_0xced3('0x37')]?_0x116cc7[_0xced3('0x35')]:_0x559b8e[_0xced3('0x30')];if(!_0x895a32[_0xced3('0x31')][_0xced3('0x38')](_0xced3('0x39'))){_0x116cc7[_0xced3('0x1a')]=qs['limit'](_0x895a32[_0xced3('0x31')][_0xced3('0x1a')]);_0x116cc7['offset']=qs[_0xced3('0x1c')](_0x895a32[_0xced3('0x31')][_0xced3('0x1c')]);}_0x116cc7['order']=qs['sort'](_0x895a32[_0xced3('0x31')]['sort']);_0x116cc7[_0xced3('0x3a')]=qs[_0xced3('0x33')](_['pick'](_0x895a32[_0xced3('0x31')],_0x559b8e[_0xced3('0x33')]),_0x1b8baa);if(_0x895a32[_0xced3('0x31')]['filter']){_0x116cc7[_0xced3('0x3a')]=_['merge'](_0x116cc7['where'],{'$or':_[_0xced3('0x2a')](_0x1b8baa,function(_0x31e281){if(_0x31e281[_0xced3('0x2e')]!=='VIRTUAL'){var _0xb2cf20={};_0xb2cf20[_0x31e281[_0xced3('0x27')]]={'$like':'%'+_0x895a32[_0xced3('0x31')][_0xced3('0x3b')]+'%'};return _0xb2cf20;}})});}_0x116cc7=_[_0xced3('0x3c')]({},_0x116cc7,_0x895a32[_0xced3('0x3d')]);var _0x30e890={'where':_0x116cc7[_0xced3('0x3a')]};return db[_0xced3('0x2b')][_0xced3('0x1b')](_0x30e890)[_0xced3('0x21')](function(_0x38855f){_0xa78899[_0xced3('0x1b')]=_0x38855f;if(_0x895a32[_0xced3('0x31')][_0xced3('0x3e')]){_0x116cc7['include']=[{'all':!![]}];}return db[_0xced3('0x2b')][_0xced3('0x3f')](_0x116cc7);})[_0xced3('0x21')](function(_0x1a6c1f){_0xa78899[_0xced3('0x40')]=_0x1a6c1f;return _0xa78899;})[_0xced3('0x21')](respondWithFilteredResult(_0x41d003,_0x116cc7))[_0xced3('0x41')](handleError(_0x41d003,null));};exports[_0xced3('0x42')]=function(_0x1ab7e0,_0x4cea5c){var _0x6c0238={'raw':!![],'where':{'id':_0x1ab7e0[_0xced3('0x43')]['id']}},_0x47ab23={};_0x47ab23[_0xced3('0x30')]=_[_0xced3('0x32')](db['ContactItemType'][_0xced3('0x2c')]);_0x47ab23[_0xced3('0x31')]=_[_0xced3('0x32')](_0x1ab7e0[_0xced3('0x31')]);_0x47ab23['filters']=_[_0xced3('0x34')](_0x47ab23[_0xced3('0x30')],_0x47ab23[_0xced3('0x31')]);_0x6c0238[_0xced3('0x35')]=_[_0xced3('0x34')](_0x47ab23['model'],qs[_0xced3('0x36')](_0x1ab7e0[_0xced3('0x31')][_0xced3('0x36')]));_0x6c0238[_0xced3('0x35')]=_0x6c0238[_0xced3('0x35')][_0xced3('0x37')]?_0x6c0238[_0xced3('0x35')]:_0x47ab23['model'];if(_0x1ab7e0[_0xced3('0x31')][_0xced3('0x3e')]){_0x6c0238['include']=[{'all':!![]}];}_0x6c0238=_['merge']({},_0x6c0238,_0x1ab7e0[_0xced3('0x3d')]);return db['ContactItemType'][_0xced3('0x44')](_0x6c0238)[_0xced3('0x21')](handleEntityNotFound(_0x4cea5c,null))[_0xced3('0x21')](respondWithResult(_0x4cea5c,null))[_0xced3('0x41')](handleError(_0x4cea5c,null));};exports[_0xced3('0x45')]=function(_0x1b3396,_0x3700ed){return db[_0xced3('0x2b')][_0xced3('0x45')](_0x1b3396['body'],{})[_0xced3('0x21')](function(_0x8df206){var _0x2aa876=_0x1b3396[_0xced3('0x46')][_0xced3('0x23')]({'plain':!![]});if(!_0x2aa876)throw new Error(_0xced3('0x47'));if(_0x2aa876['role']===_0xced3('0x46')){var _0x629ecf=_0x8df206[_0xced3('0x23')]({'plain':!![]});var _0x409da0=_0xced3('0x48');return db[_0xced3('0x49')][_0xced3('0x44')]({'where':{'name':_0x409da0,'userProfileId':_0x2aa876[_0xced3('0x4a')]},'raw':!![]})[_0xced3('0x21')](function(_0x44d779){if(_0x44d779&&_0x44d779[_0xced3('0x4b')]===0x0){return db[_0xced3('0x24')]['create']({'name':_0x629ecf[_0xced3('0x27')],'resourceId':_0x629ecf['id'],'type':_0x44d779['name'],'sectionId':_0x44d779['id']},{})[_0xced3('0x21')](function(){return _0x8df206;});}else{return _0x8df206;}})[_0xced3('0x41')](function(_0xc93e05){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xc93e05);throw _0xc93e05;});}return _0x8df206;})[_0xced3('0x21')](respondWithResult(_0x3700ed,0xc9))[_0xced3('0x41')](handleError(_0x3700ed,null));};exports['update']=function(_0x3f41cc,_0x4ae67d){if(_0x3f41cc[_0xced3('0x4c')]['id']){delete _0x3f41cc[_0xced3('0x4c')]['id'];}return db['ContactItemType'][_0xced3('0x44')]({'where':{'id':_0x3f41cc[_0xced3('0x43')]['id']}})[_0xced3('0x21')](handleEntityNotFound(_0x4ae67d,null))['then'](saveUpdates(_0x3f41cc[_0xced3('0x4c')],null))['then'](respondWithResult(_0x4ae67d,null))[_0xced3('0x41')](handleError(_0x4ae67d,null));};exports[_0xced3('0x22')]=function(_0x4694b8,_0x168c36){return db[_0xced3('0x2b')][_0xced3('0x44')]({'where':{'id':_0x4694b8[_0xced3('0x43')]['id']}})[_0xced3('0x21')](handleEntityNotFound(_0x168c36,null))[_0xced3('0x21')](db[_0xced3('0x4d')][_0xced3('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x4694b8['params']['id']}}))[_0xced3('0x21')](removeEntity(_0x168c36,null))[_0xced3('0x41')](handleError(_0x168c36,null));};
\ No newline at end of file
+var _0xe5af=['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','get','ContactItemTypes','UserProfileResource','stack','name','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','catch','error','CmContactHasItem'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe5af,0x9c));var _0xfe5a=function(_0x88d9b6,_0x119e82){_0x88d9b6=_0x88d9b6-0x0;var _0x41b3f7=_0xe5af[_0x88d9b6];return _0x41b3f7;};'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(){var _0x578d3e=_0x494df3[_0xfe5a('0x23')]({'plain':!![]});var _0x3a4f3c=_0xfe5a('0x24');return db[_0xfe5a('0x25')]['destroy']({'where':{'type':_0x3a4f3c,'resourceId':_0x578d3e['id']}})[_0xfe5a('0x22')](function(){return _0x494df3;});})[_0xfe5a('0x22')](function(){_0x247be4[_0xfe5a('0x17')](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x36bf20,_0x222490){return function(_0xdbf1e0){if(!_0xdbf1e0){_0x36bf20[_0xfe5a('0x15')](0x194);}return _0xdbf1e0;};}function handleError(_0x55d89e,_0x4df546){_0x4df546=_0x4df546||0x1f4;return function(_0x712b44){logger['error'](_0x712b44[_0xfe5a('0x26')]);if(_0x712b44[_0xfe5a('0x27')]){delete _0x712b44[_0xfe5a('0x27')];}_0x55d89e['status'](_0x4df546)['send'](_0x712b44);};}exports['index']=function(_0x32d31e,_0x582f2d){var _0x51d1f4={},_0x498b64={},_0x3b6e4d={'count':0x0,'rows':[]};var _0x14c66d=_[_0xfe5a('0x28')](db[_0xfe5a('0x29')][_0xfe5a('0x2a')],function(_0x286f27){return{'name':_0x286f27[_0xfe5a('0x2b')],'type':_0x286f27[_0xfe5a('0x2c')][_0xfe5a('0x2d')]};});_0x498b64[_0xfe5a('0x2e')]=_[_0xfe5a('0x28')](_0x14c66d,'name');_0x498b64[_0xfe5a('0x2f')]=_[_0xfe5a('0x30')](_0x32d31e['query']);_0x498b64[_0xfe5a('0x31')]=_[_0xfe5a('0x32')](_0x498b64[_0xfe5a('0x2e')],_0x498b64[_0xfe5a('0x2f')]);_0x51d1f4[_0xfe5a('0x33')]=_['intersection'](_0x498b64['model'],qs[_0xfe5a('0x34')](_0x32d31e['query'][_0xfe5a('0x34')]));_0x51d1f4[_0xfe5a('0x33')]=_0x51d1f4[_0xfe5a('0x33')][_0xfe5a('0x35')]?_0x51d1f4['attributes']:_0x498b64[_0xfe5a('0x2e')];if(!_0x32d31e[_0xfe5a('0x2f')][_0xfe5a('0x36')]('nolimit')){_0x51d1f4[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x32d31e[_0xfe5a('0x2f')][_0xfe5a('0x1b')]);_0x51d1f4['offset']=qs[_0xfe5a('0x19')](_0x32d31e['query'][_0xfe5a('0x19')]);}_0x51d1f4[_0xfe5a('0x37')]=qs['sort'](_0x32d31e[_0xfe5a('0x2f')][_0xfe5a('0x38')]);_0x51d1f4[_0xfe5a('0x39')]=qs[_0xfe5a('0x31')](_['pick'](_0x32d31e[_0xfe5a('0x2f')],_0x498b64[_0xfe5a('0x31')]),_0x14c66d);if(_0x32d31e[_0xfe5a('0x2f')]['filter']){_0x51d1f4[_0xfe5a('0x39')]=_[_0xfe5a('0x3a')](_0x51d1f4[_0xfe5a('0x39')],{'$or':_[_0xfe5a('0x28')](_0x14c66d,function(_0xec56ad){if(_0xec56ad[_0xfe5a('0x2c')]!==_0xfe5a('0x3b')){var _0x243271={};_0x243271[_0xec56ad[_0xfe5a('0x27')]]={'$like':'%'+_0x32d31e[_0xfe5a('0x2f')][_0xfe5a('0x3c')]+'%'};return _0x243271;}})});}_0x51d1f4=_['merge']({},_0x51d1f4,_0x32d31e[_0xfe5a('0x3d')]);var _0x315396={'where':_0x51d1f4[_0xfe5a('0x39')]};return db[_0xfe5a('0x29')][_0xfe5a('0x1c')](_0x315396)[_0xfe5a('0x22')](function(_0x3475fb){_0x3b6e4d['count']=_0x3475fb;if(_0x32d31e[_0xfe5a('0x2f')][_0xfe5a('0x3e')]){_0x51d1f4['include']=[{'all':!![]}];}return db['ContactItemType'][_0xfe5a('0x3f')](_0x51d1f4);})['then'](function(_0x54096d){_0x3b6e4d[_0xfe5a('0x40')]=_0x54096d;return _0x3b6e4d;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x582f2d,_0x51d1f4))['catch'](handleError(_0x582f2d,null));};exports[_0xfe5a('0x41')]=function(_0x5a9c92,_0x5112a9){var _0x1dbb2c={'raw':!![],'where':{'id':_0x5a9c92[_0xfe5a('0x42')]['id']}},_0x1a92ef={};_0x1a92ef[_0xfe5a('0x2e')]=_[_0xfe5a('0x30')](db['ContactItemType'][_0xfe5a('0x2a')]);_0x1a92ef[_0xfe5a('0x2f')]=_[_0xfe5a('0x30')](_0x5a9c92[_0xfe5a('0x2f')]);_0x1a92ef[_0xfe5a('0x31')]=_[_0xfe5a('0x32')](_0x1a92ef[_0xfe5a('0x2e')],_0x1a92ef[_0xfe5a('0x2f')]);_0x1dbb2c[_0xfe5a('0x33')]=_[_0xfe5a('0x32')](_0x1a92ef[_0xfe5a('0x2e')],qs[_0xfe5a('0x34')](_0x5a9c92[_0xfe5a('0x2f')][_0xfe5a('0x34')]));_0x1dbb2c['attributes']=_0x1dbb2c[_0xfe5a('0x33')][_0xfe5a('0x35')]?_0x1dbb2c['attributes']:_0x1a92ef['model'];if(_0x5a9c92[_0xfe5a('0x2f')][_0xfe5a('0x3e')]){_0x1dbb2c[_0xfe5a('0x43')]=[{'all':!![]}];}_0x1dbb2c=_[_0xfe5a('0x3a')]({},_0x1dbb2c,_0x5a9c92[_0xfe5a('0x3d')]);return db[_0xfe5a('0x29')][_0xfe5a('0x44')](_0x1dbb2c)['then'](handleEntityNotFound(_0x5112a9,null))[_0xfe5a('0x22')](respondWithResult(_0x5112a9,null))['catch'](handleError(_0x5112a9,null));};exports[_0xfe5a('0x45')]=function(_0x5a807e,_0x433562){return db[_0xfe5a('0x29')][_0xfe5a('0x45')](_0x5a807e[_0xfe5a('0x46')],{})['then'](function(_0x394073){var _0x3f8447=_0x5a807e['user'][_0xfe5a('0x23')]({'plain':!![]});if(!_0x3f8447)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f8447['role']===_0xfe5a('0x47')){var _0x4e02c9=_0x394073[_0xfe5a('0x23')]({'plain':!![]});var _0x4536ba=_0xfe5a('0x24');return db[_0xfe5a('0x48')]['find']({'where':{'name':_0x4536ba,'userProfileId':_0x3f8447[_0xfe5a('0x49')]},'raw':!![]})['then'](function(_0x34247f){if(_0x34247f&&_0x34247f[_0xfe5a('0x4a')]===0x0){return db[_0xfe5a('0x25')]['create']({'name':_0x4e02c9[_0xfe5a('0x27')],'resourceId':_0x4e02c9['id'],'type':_0x34247f[_0xfe5a('0x27')],'sectionId':_0x34247f['id']},{})['then'](function(){return _0x394073;});}else{return _0x394073;}})[_0xfe5a('0x4b')](function(_0x42f2e2){logger[_0xfe5a('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x42f2e2);throw _0x42f2e2;});}return _0x394073;})[_0xfe5a('0x22')](respondWithResult(_0x433562,0xc9))[_0xfe5a('0x4b')](handleError(_0x433562,null));};exports[_0xfe5a('0x20')]=function(_0x4d3bd8,_0x36395a){if(_0x4d3bd8[_0xfe5a('0x46')]['id']){delete _0x4d3bd8['body']['id'];}return db[_0xfe5a('0x29')]['find']({'where':{'id':_0x4d3bd8[_0xfe5a('0x42')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x36395a,null))[_0xfe5a('0x22')](saveUpdates(_0x4d3bd8[_0xfe5a('0x46')],null))[_0xfe5a('0x22')](respondWithResult(_0x36395a,null))[_0xfe5a('0x4b')](handleError(_0x36395a,null));};exports[_0xfe5a('0x21')]=function(_0x3432d1,_0x127a9f){return db[_0xfe5a('0x29')][_0xfe5a('0x44')]({'where':{'id':_0x3432d1[_0xfe5a('0x42')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x127a9f,null))[_0xfe5a('0x22')](db[_0xfe5a('0x4d')][_0xfe5a('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x3432d1['params']['id']}}))[_0xfe5a('0x22')](removeEntity(_0x127a9f,null))[_0xfe5a('0x4b')](handleError(_0x127a9f,null));};
\ No newline at end of file
index 4e40f5e..542d9a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f7=['rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types','util','../../config/logger','api','bluebird','request-promise'];(function(_0x3cff0b,_0x139618){var _0x6a22a=function(_0x13cd99){while(--_0x13cd99){_0x3cff0b['push'](_0x3cff0b['shift']());}};_0x6a22a(++_0x139618);}(_0x79f7,0xbb));var _0x779f=function(_0x28a2be,_0x5f6b50){_0x28a2be=_0x28a2be-0x0;var _0x3925f2=_0x79f7[_0x28a2be];return _0x3925f2;};'use strict';var _=require('lodash');var util=require(_0x779f('0x0'));var logger=require(_0x779f('0x1'))(_0x779f('0x2'));var moment=require('moment');var BPromise=require(_0x779f('0x3'));var rp=require(_0x779f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x779f('0x5'));var config=require(_0x779f('0x6'));var attributes=require(_0x779f('0x7'));module[_0x779f('0x8')]=function(_0x4e672b,_0x22a512){return _0x4e672b[_0x779f('0x9')](_0x779f('0xa'),attributes,{'tableName':_0x779f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c99=['rimraf','./contactItemType.attributes','define','ContactItemType','tools_contact_item_types','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x3675bf,_0x3d570e){var _0x57152e=function(_0x20d27e){while(--_0x20d27e){_0x3675bf['push'](_0x3675bf['shift']());}};_0x57152e(++_0x3d570e);}(_0x9c99,0x179));var _0x99c9=function(_0x2050f7,_0x3833c6){_0x2050f7=_0x2050f7-0x0;var _0x219da1=_0x9c99[_0x2050f7];return _0x219da1;};'use strict';var _=require(_0x99c9('0x0'));var util=require(_0x99c9('0x1'));var logger=require(_0x99c9('0x2'))(_0x99c9('0x3'));var moment=require(_0x99c9('0x4'));var BPromise=require(_0x99c9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99c9('0x6'));var rimraf=require(_0x99c9('0x7'));var config=require('../../config/environment');var attributes=require(_0x99c9('0x8'));module['exports']=function(_0x306070,_0x2bc097){return _0x306070[_0x99c9('0x9')](_0x99c9('0xa'),attributes,{'tableName':_0x99c9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df22503..e10ecf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112a=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','ContactItemType,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x323cd8,_0x21bbac){var _0x2c757f=function(_0xafd810){while(--_0xafd810){_0x323cd8['push'](_0x323cd8['shift']());}};_0x2c757f(++_0x21bbac);}(_0x112a,0x115));var _0xa112=function(_0x491bee,_0x1a689e){_0x491bee=_0x491bee-0x0;var _0x53e540=_0x112a[_0x491bee];return _0x53e540;};'use strict';var _=require(_0xa112('0x0'));var util=require(_0xa112('0x1'));var moment=require(_0xa112('0x2'));var BPromise=require(_0xa112('0x3'));var rs=require(_0xa112('0x4'));var fs=require('fs');var Redis=require(_0xa112('0x5'));var db=require(_0xa112('0x6'))['db'];var utils=require(_0xa112('0x7'));var logger=require(_0xa112('0x8'))(_0xa112('0x9'));var config=require(_0xa112('0xa'));var jayson=require(_0xa112('0xb'));var client=jayson[_0xa112('0xc')][_0xa112('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x676aa8,_0x11331d,_0x3aaae7){return new BPromise(function(_0x7f5ede,_0x377238){return client[_0xa112('0xe')](_0x676aa8,_0x3aaae7)[_0xa112('0xf')](function(_0xb6dcd){logger[_0xa112('0x10')]('ContactItemType,\x20%s,\x20%s',_0x11331d,_0xa112('0x11'));logger['debug'](_0xa112('0x12'),_0x11331d,_0xa112('0x11'),JSON[_0xa112('0x13')](_0xb6dcd));if(_0xb6dcd[_0xa112('0x14')]){if(_0xb6dcd[_0xa112('0x14')][_0xa112('0x15')]===0x1f4){logger[_0xa112('0x14')](_0xa112('0x16'),_0x11331d,_0xb6dcd[_0xa112('0x14')][_0xa112('0x17')]);return _0x377238(_0xb6dcd[_0xa112('0x14')][_0xa112('0x17')]);}logger[_0xa112('0x14')](_0xa112('0x16'),_0x11331d,_0xb6dcd['error'][_0xa112('0x17')]);return _0x7f5ede(_0xb6dcd[_0xa112('0x14')][_0xa112('0x17')]);}else{logger[_0xa112('0x10')](_0xa112('0x16'),_0x11331d,_0xa112('0x11'));_0x7f5ede(_0xb6dcd[_0xa112('0x18')][_0xa112('0x17')]);}})[_0xa112('0x19')](function(_0x2a0959){logger[_0xa112('0x14')](_0xa112('0x16'),_0x11331d,_0x2a0959);_0x377238(_0x2a0959);});});}
\ No newline at end of file
+var _0x7b85=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment'];(function(_0xbd8138,_0x519e0d){var _0x27cec0=function(_0x4fd8c6){while(--_0x4fd8c6){_0xbd8138['push'](_0xbd8138['shift']());}};_0x27cec0(++_0x519e0d);}(_0x7b85,0x1b2));var _0x57b8=function(_0x1635fe,_0x5f1d9f){_0x1635fe=_0x1635fe-0x0;var _0x3c512a=_0x7b85[_0x1635fe];return _0x3c512a;};'use strict';var _=require(_0x57b8('0x0'));var util=require(_0x57b8('0x1'));var moment=require(_0x57b8('0x2'));var BPromise=require(_0x57b8('0x3'));var rs=require(_0x57b8('0x4'));var fs=require('fs');var Redis=require(_0x57b8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x57b8('0x6'));var logger=require(_0x57b8('0x7'))('rpc');var config=require(_0x57b8('0x8'));var jayson=require(_0x57b8('0x9'));var client=jayson[_0x57b8('0xa')][_0x57b8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4bd462,_0x44509f,_0x2c834d){return new BPromise(function(_0x24628b,_0x3b7830){return client[_0x57b8('0xc')](_0x4bd462,_0x2c834d)[_0x57b8('0xd')](function(_0x2bd07a){logger[_0x57b8('0xe')](_0x57b8('0xf'),_0x44509f,_0x57b8('0x10'));logger[_0x57b8('0x11')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x44509f,_0x57b8('0x10'),JSON[_0x57b8('0x12')](_0x2bd07a));if(_0x2bd07a[_0x57b8('0x13')]){if(_0x2bd07a['error'][_0x57b8('0x14')]===0x1f4){logger[_0x57b8('0x13')](_0x57b8('0xf'),_0x44509f,_0x2bd07a[_0x57b8('0x13')]['message']);return _0x3b7830(_0x2bd07a[_0x57b8('0x13')][_0x57b8('0x15')]);}logger[_0x57b8('0x13')](_0x57b8('0xf'),_0x44509f,_0x2bd07a[_0x57b8('0x13')]['message']);return _0x24628b(_0x2bd07a[_0x57b8('0x13')][_0x57b8('0x15')]);}else{logger[_0x57b8('0xe')](_0x57b8('0xf'),_0x44509f,_0x57b8('0x10'));_0x24628b(_0x2bd07a['result'][_0x57b8('0x15')]);}})[_0x57b8('0x16')](function(_0x501c02){logger[_0x57b8('0x13')](_0x57b8('0xf'),_0x44509f,_0x501c02);_0x3b7830(_0x501c02);});});}
\ No newline at end of file
index 89d9333..7a1a9f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea53=['./contactItemType.controller','get','isAuthenticated','index','post','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x16f7c3,_0x7cc6bd){var _0x259a52=function(_0x5d494a){while(--_0x5d494a){_0x16f7c3['push'](_0x16f7c3['shift']());}};_0x259a52(++_0x7cc6bd);}(_0xea53,0x1ea));var _0x3ea5=function(_0x1a624d,_0x314d2c){_0x1a624d=_0x1a624d-0x0;var _0x3703b3=_0xea53[_0x1a624d];return _0x3703b3;};'use strict';var multer=require(_0x3ea5('0x0'));var util=require(_0x3ea5('0x1'));var path=require(_0x3ea5('0x2'));var timeout=require(_0x3ea5('0x3'));var express=require(_0x3ea5('0x4'));var router=express[_0x3ea5('0x5')]();var fs_extra=require(_0x3ea5('0x6'));var auth=require(_0x3ea5('0x7'));var interaction=require(_0x3ea5('0x8'));var config=require(_0x3ea5('0x9'));var controller=require(_0x3ea5('0xa'));router[_0x3ea5('0xb')]('/',auth[_0x3ea5('0xc')](),controller[_0x3ea5('0xd')]);router['get']('/:id',auth[_0x3ea5('0xc')](),controller['show']);router[_0x3ea5('0xe')]('/',auth[_0x3ea5('0xc')](),controller[_0x3ea5('0xf')]);router['put'](_0x3ea5('0x10'),auth['isAuthenticated'](),controller[_0x3ea5('0x11')]);router[_0x3ea5('0x12')](_0x3ea5('0x10'),auth[_0x3ea5('0xc')](),controller['destroy']);module[_0x3ea5('0x13')]=router;
\ No newline at end of file
+var _0x12c6=['create','put','update','destroy','util','path','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','post'];(function(_0x81d8b5,_0x37d7cc){var _0x45b8ba=function(_0x35eaf6){while(--_0x35eaf6){_0x81d8b5['push'](_0x81d8b5['shift']());}};_0x45b8ba(++_0x37d7cc);}(_0x12c6,0x112));var _0x612c=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x12c6[_0x2112d4];return _0x434972;};'use strict';var multer=require('multer');var util=require(_0x612c('0x0'));var path=require(_0x612c('0x1'));var timeout=require('connect-timeout');var express=require(_0x612c('0x2'));var router=express[_0x612c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x612c('0x4'));var interaction=require(_0x612c('0x5'));var config=require('../../config/environment');var controller=require('./contactItemType.controller');router[_0x612c('0x6')]('/',auth[_0x612c('0x7')](),controller[_0x612c('0x8')]);router['get'](_0x612c('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x612c('0xa')]('/',auth['isAuthenticated'](),controller[_0x612c('0xb')]);router[_0x612c('0xc')](_0x612c('0x9'),auth['isAuthenticated'](),controller[_0x612c('0xd')]);router['delete'](_0x612c('0x9'),auth[_0x612c('0x7')](),controller[_0x612c('0xe')]);module['exports']=router;
\ No newline at end of file
index 76836ed..9b8ec72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x24fbf1,_0x4a8e90){var _0x2e8593=function(_0x3689e0){while(--_0x3689e0){_0x24fbf1['push'](_0x24fbf1['shift']());}};_0x2e8593(++_0x4a8e90);}(_0xb10b,0x12a));var _0xbb10=function(_0x2aab8e,_0x440d3b){_0x2aab8e=_0x2aab8e-0x0;var _0x2a67=_0xb10b[_0x2aab8e];return _0x2a67;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x65e216,_0x568bd5){var _0x4e3e06=function(_0x351fc0){while(--_0x351fc0){_0x65e216['push'](_0x65e216['shift']());}};_0x4e3e06(++_0x568bd5);}(_0x2032,0xd9));var _0x2203=function(_0x4cbf4c,_0x5fc378){_0x4cbf4c=_0x4cbf4c-0x0;var _0x2b8696=_0x2032[_0x4cbf4c];return _0x2b8696;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index eae6ae8..5570051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf337=['status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','get','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','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','userProfileId','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','attrVoiceQueues','voice','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','attrChannel','attrEmailAccounts','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','getItems','DashboardItem','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register'];(function(_0x2bd602,_0x2bdd18){var _0x32fac9=function(_0x17be3e){while(--_0x17be3e){_0x2bd602['push'](_0x2bd602['shift']());}};_0x32fac9(++_0x2bdd18);}(_0xf337,0x175));var _0x7f33=function(_0xcfdd0c,_0x1de2ba){_0xcfdd0c=_0xcfdd0c-0x0;var _0x40e44f=_0xf337[_0xcfdd0c];return _0x40e44f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7f33('0x0'));var zipdir=require(_0x7f33('0x1'));var jsonpatch=require(_0x7f33('0x2'));var rp=require(_0x7f33('0x3'));var moment=require(_0x7f33('0x4'));var BPromise=require(_0x7f33('0x5'));var Mustache=require(_0x7f33('0x6'));var util=require(_0x7f33('0x7'));var path=require(_0x7f33('0x8'));var sox=require(_0x7f33('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f33('0xa'));var _=require(_0x7f33('0xb'));var squel=require(_0x7f33('0xc'));var crypto=require('crypto');var jsforce=require(_0x7f33('0xd'));var deskjs=require(_0x7f33('0xe'));var toCsv=require(_0x7f33('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7f33('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7f33('0x11'));var hardwareService=require(_0x7f33('0x12'));var logger=require(_0x7f33('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x7f33('0x14'));var licenseUtil=require(_0x7f33('0x15'));var db=require(_0x7f33('0x16'))['db'];config[_0x7f33('0x17')]=_[_0x7f33('0x18')](config[_0x7f33('0x17')],{'host':_0x7f33('0x19'),'port':0x18eb});var socket=require(_0x7f33('0x1a'))(new Redis(config[_0x7f33('0x17')]));require(_0x7f33('0x1b'))[_0x7f33('0x1c')](socket);function respondWithStatusCode(_0x1e54fa,_0xe5ff6){_0xe5ff6=_0xe5ff6||0xcc;return function(_0x462e50){if(_0x462e50){return _0x1e54fa['sendStatus'](_0xe5ff6);}return _0x1e54fa[_0x7f33('0x1d')](_0xe5ff6)[_0x7f33('0x1e')]();};}function respondWithResult(_0x4fa32f,_0x417ff4){_0x417ff4=_0x417ff4||0xc8;return function(_0x73ed6a){if(_0x73ed6a){return _0x4fa32f[_0x7f33('0x1d')](_0x417ff4)['json'](_0x73ed6a);}};}function respondWithFilteredResult(_0x548063,_0x1f39a2){return function(_0x200866){if(_0x200866){var _0x52ab42=typeof _0x1f39a2[_0x7f33('0x1f')]===_0x7f33('0x20')&&typeof _0x1f39a2[_0x7f33('0x21')]===_0x7f33('0x20');var _0x51cb34=_0x200866['count'];var _0x32ca7a=_0x52ab42?0x0:_0x1f39a2[_0x7f33('0x1f')];var _0x4b4d4b=_0x52ab42?_0x200866[_0x7f33('0x22')]:_0x1f39a2[_0x7f33('0x1f')]+_0x1f39a2[_0x7f33('0x21')];var _0x248960;if(_0x4b4d4b>=_0x51cb34){_0x4b4d4b=_0x51cb34;_0x248960=0xc8;}else{_0x248960=0xce;}_0x548063['status'](_0x248960);return _0x548063[_0x7f33('0x23')](_0x7f33('0x24'),_0x32ca7a+'-'+_0x4b4d4b+'/'+_0x51cb34)[_0x7f33('0x25')](_0x200866);}return null;};}function patchUpdates(_0x1b69b9){return function(_0x784bb7){try{jsonpatch[_0x7f33('0x26')](_0x784bb7,_0x1b69b9,!![]);}catch(_0x562ce6){return BPromise[_0x7f33('0x27')](_0x562ce6);}return _0x784bb7[_0x7f33('0x28')]();};}function saveUpdates(_0x24ce39,_0x32a216){return function(_0x450b84){if(_0x450b84){return _0x450b84[_0x7f33('0x29')](_0x24ce39)[_0x7f33('0x2a')](function(_0xac05b7){return _0xac05b7;});}return null;};}function removeEntity(_0x43a8f9,_0xb2dc4){return function(_0xb1daf9){if(_0xb1daf9){return _0xb1daf9['destroy']()['then'](function(){var _0x1e8cfb=_0xb1daf9[_0x7f33('0x2b')]({'plain':!![]});var _0x1a2b31='CustomDashboards';return db[_0x7f33('0x2c')][_0x7f33('0x2d')]({'where':{'type':_0x1a2b31,'resourceId':_0x1e8cfb['id']}})[_0x7f33('0x2a')](function(){return _0xb1daf9;});})[_0x7f33('0x2a')](function(){_0x43a8f9[_0x7f33('0x1d')](0xcc)[_0x7f33('0x1e')]();});}};}function handleEntityNotFound(_0x497319,_0x12ecc6){return function(_0x4505a7){if(!_0x4505a7){_0x497319[_0x7f33('0x2e')](0x194);}return _0x4505a7;};}function handleError(_0xfeec82,_0x1f31c7){_0x1f31c7=_0x1f31c7||0x1f4;return function(_0x21d1b0){logger[_0x7f33('0x2f')](_0x21d1b0[_0x7f33('0x30')]);if(_0x21d1b0[_0x7f33('0x31')]){delete _0x21d1b0['name'];}_0xfeec82[_0x7f33('0x1d')](_0x1f31c7)[_0x7f33('0x32')](_0x21d1b0);};}exports[_0x7f33('0x33')]=function(_0x5384d2,_0x478a4a){var _0x87b3d={},_0x5b4e42={},_0x16af70={'count':0x0,'rows':[]};var _0x28781a=_[_0x7f33('0x34')](db[_0x7f33('0x35')][_0x7f33('0x36')],function(_0x18f30e){return{'name':_0x18f30e[_0x7f33('0x37')],'type':_0x18f30e[_0x7f33('0x38')][_0x7f33('0x39')]};});_0x5b4e42[_0x7f33('0x3a')]=_[_0x7f33('0x34')](_0x28781a,_0x7f33('0x31'));_0x5b4e42['query']=_[_0x7f33('0x3b')](_0x5384d2[_0x7f33('0x3c')]);_0x5b4e42['filters']=_['intersection'](_0x5b4e42[_0x7f33('0x3a')],_0x5b4e42[_0x7f33('0x3c')]);_0x87b3d[_0x7f33('0x3d')]=_[_0x7f33('0x3e')](_0x5b4e42[_0x7f33('0x3a')],qs[_0x7f33('0x3f')](_0x5384d2[_0x7f33('0x3c')][_0x7f33('0x3f')]));_0x87b3d[_0x7f33('0x3d')]=_0x87b3d[_0x7f33('0x3d')][_0x7f33('0x40')]?_0x87b3d[_0x7f33('0x3d')]:_0x5b4e42[_0x7f33('0x3a')];if(!_0x5384d2[_0x7f33('0x3c')][_0x7f33('0x41')](_0x7f33('0x42'))){_0x87b3d['limit']=qs[_0x7f33('0x21')](_0x5384d2['query']['limit']);_0x87b3d['offset']=qs[_0x7f33('0x1f')](_0x5384d2[_0x7f33('0x3c')][_0x7f33('0x1f')]);}_0x87b3d[_0x7f33('0x43')]=qs[_0x7f33('0x44')](_0x5384d2['query'][_0x7f33('0x44')]);_0x87b3d['where']=qs[_0x7f33('0x45')](_[_0x7f33('0x46')](_0x5384d2[_0x7f33('0x3c')],_0x5b4e42['filters']),_0x28781a);if(_0x5384d2[_0x7f33('0x3c')][_0x7f33('0x47')]){_0x87b3d['where']=_['merge'](_0x87b3d[_0x7f33('0x48')],{'$or':_['map'](_0x28781a,function(_0x513f92){if(_0x513f92['type']!==_0x7f33('0x49')){var _0x504b55={};_0x504b55[_0x513f92['name']]={'$like':'%'+_0x5384d2['query'][_0x7f33('0x47')]+'%'};return _0x504b55;}})});}_0x87b3d=_[_0x7f33('0x4a')]({},_0x87b3d,_0x5384d2[_0x7f33('0x4b')]);var _0xfcab50={'where':_0x87b3d[_0x7f33('0x48')]};return db[_0x7f33('0x35')][_0x7f33('0x22')](_0xfcab50)[_0x7f33('0x2a')](function(_0x33df99){_0x16af70[_0x7f33('0x22')]=_0x33df99;if(_0x5384d2['query'][_0x7f33('0x4c')]){_0x87b3d[_0x7f33('0x4d')]=[{'all':!![]}];}return db[_0x7f33('0x35')][_0x7f33('0x4e')](_0x87b3d);})[_0x7f33('0x2a')](function(_0xf1e1f6){_0x16af70[_0x7f33('0x4f')]=_0xf1e1f6;return _0x16af70;})[_0x7f33('0x2a')](respondWithFilteredResult(_0x478a4a,_0x87b3d))[_0x7f33('0x50')](handleError(_0x478a4a,null));};exports[_0x7f33('0x51')]=function(_0x1942fd,_0xbb13b2){var _0xe5209={'raw':![],'where':{'id':_0x1942fd[_0x7f33('0x52')]['id']}},_0x124911={};_0x124911[_0x7f33('0x3a')]=_[_0x7f33('0x3b')](db[_0x7f33('0x35')]['rawAttributes']);_0x124911[_0x7f33('0x3c')]=_[_0x7f33('0x3b')](_0x1942fd[_0x7f33('0x3c')]);_0x124911[_0x7f33('0x45')]=_[_0x7f33('0x3e')](_0x124911[_0x7f33('0x3a')],_0x124911[_0x7f33('0x3c')]);_0xe5209[_0x7f33('0x3d')]=_[_0x7f33('0x3e')](_0x124911[_0x7f33('0x3a')],qs[_0x7f33('0x3f')](_0x1942fd['query'][_0x7f33('0x3f')]));_0xe5209[_0x7f33('0x3d')]=_0xe5209['attributes']['length']?_0xe5209[_0x7f33('0x3d')]:_0x124911[_0x7f33('0x3a')];if(_0x1942fd[_0x7f33('0x3c')][_0x7f33('0x4c')]){_0xe5209[_0x7f33('0x4d')]=[{'all':!![]}];}_0xe5209=_[_0x7f33('0x4a')]({},_0xe5209,_0x1942fd[_0x7f33('0x4b')]);return db[_0x7f33('0x35')][_0x7f33('0x53')](_0xe5209)[_0x7f33('0x2a')](handleEntityNotFound(_0xbb13b2,null))[_0x7f33('0x2a')](respondWithResult(_0xbb13b2,null))[_0x7f33('0x50')](handleError(_0xbb13b2,null));};exports['create']=function(_0x138b65,_0xde6471){return db[_0x7f33('0x35')][_0x7f33('0x54')](_0x138b65[_0x7f33('0x55')],{})[_0x7f33('0x2a')](function(_0x224f2c){var _0x4d76ef=_0x138b65[_0x7f33('0x56')][_0x7f33('0x2b')]({'plain':!![]});if(!_0x4d76ef)throw new Error(_0x7f33('0x57'));if(_0x4d76ef['role']==='user'){var _0x3ac370=_0x224f2c[_0x7f33('0x2b')]({'plain':!![]});var _0x18383f=_0x7f33('0x58');return db['UserProfileSection'][_0x7f33('0x53')]({'where':{'name':_0x18383f,'userProfileId':_0x4d76ef['userProfileId']},'raw':!![]})[_0x7f33('0x2a')](function(_0x28490a){if(_0x28490a&&_0x28490a[_0x7f33('0x59')]===0x0){return db[_0x7f33('0x2c')]['create']({'name':_0x3ac370[_0x7f33('0x31')],'resourceId':_0x3ac370['id'],'type':_0x28490a[_0x7f33('0x31')],'sectionId':_0x28490a['id']},{})['then'](function(){return _0x224f2c;});}else{return _0x224f2c;}})[_0x7f33('0x50')](function(_0x45e4dd){logger[_0x7f33('0x2f')](_0x7f33('0x5a'),_0x45e4dd);throw _0x45e4dd;});}return _0x224f2c;})[_0x7f33('0x2a')](respondWithResult(_0xde6471,0xc9))['catch'](handleError(_0xde6471,null));};exports[_0x7f33('0x5b')]=function(_0x2868d5,_0x37d2c4){var _0x5034e3={'where':{'id':_0x2868d5[_0x7f33('0x52')]['id']}},_0x591be7={};_0x591be7[_0x7f33('0x3a')]=_[_0x7f33('0x3b')](db[_0x7f33('0x35')][_0x7f33('0x36')]);_0x5034e3[_0x7f33('0x3d')]=_[_0x7f33('0x3e')](_0x591be7[_0x7f33('0x3a')],qs[_0x7f33('0x3f')](_0x2868d5[_0x7f33('0x3c')]['fields']));_0x5034e3[_0x7f33('0x3d')]=_0x5034e3['attributes'][_0x7f33('0x40')]?_0x5034e3[_0x7f33('0x3d')]:_0x591be7[_0x7f33('0x3a')];if(_0x2868d5['query'][_0x7f33('0x4c')]){_0x5034e3[_0x7f33('0x4d')]=[{'all':!![]}];}_0x5034e3=_[_0x7f33('0x4a')]({},_0x5034e3,_0x2868d5[_0x7f33('0x4b')]);return db[_0x7f33('0x35')][_0x7f33('0x53')](_0x5034e3)[_0x7f33('0x2a')](handleEntityNotFound(_0x37d2c4,null))[_0x7f33('0x2a')](function(_0x5ea55c){if(_0x5ea55c){var _0x466aac=_0x5ea55c[_0x7f33('0x2b')]({'plain':!![]});_0x466aac=qs[_0x7f33('0x5c')](_0x466aac,['id',_0x7f33('0x5d'),_0x7f33('0x5e')]);_0x2868d5[_0x7f33('0x55')]=_[_0x7f33('0x5c')](_0x2868d5[_0x7f33('0x55')],['id',_0x7f33('0x5d'),_0x7f33('0x5e')]);return db[_0x7f33('0x35')][_0x7f33('0x54')](_[_0x7f33('0x4a')](_0x466aac,_0x2868d5['body']),{'include':_0x2868d5[_0x7f33('0x3c')][_0x7f33('0x4c')]?[{'all':!![]}]:undefined})[_0x7f33('0x2a')](function(_0x3c50e7){var _0x180a6e=_0x2868d5[_0x7f33('0x56')][_0x7f33('0x2b')]({'plain':!![]});if(!_0x180a6e)throw new Error(_0x7f33('0x57'));if(_0x180a6e[_0x7f33('0x5f')]===_0x7f33('0x56')){var _0x296a38=_0x3c50e7[_0x7f33('0x2b')]({'plain':!![]});var _0x106bfa='CustomDashboards';return db[_0x7f33('0x60')][_0x7f33('0x53')]({'where':{'name':_0x106bfa,'userProfileId':_0x180a6e[_0x7f33('0x61')]},'raw':!![]})[_0x7f33('0x2a')](function(_0xe9706){if(_0xe9706&&_0xe9706[_0x7f33('0x59')]===0x0){return db[_0x7f33('0x2c')][_0x7f33('0x54')]({'name':_0x296a38[_0x7f33('0x31')],'resourceId':_0x296a38['id'],'type':_0xe9706[_0x7f33('0x31')],'sectionId':_0xe9706['id']},{})['then'](function(){return _0x3c50e7;});}else{return _0x3c50e7;}})[_0x7f33('0x50')](function(_0x4c10b4){logger[_0x7f33('0x2f')](_0x7f33('0x5a'),_0x4c10b4);throw _0x4c10b4;});}return _0x3c50e7;});}})['then'](respondWithResult(_0x37d2c4,0xc9))[_0x7f33('0x50')](handleError(_0x37d2c4,null));};exports[_0x7f33('0x29')]=function(_0x4fce57,_0x1e034f){if(_0x4fce57['body']['id']){delete _0x4fce57[_0x7f33('0x55')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x4fce57[_0x7f33('0x52')]['id']}})['then'](handleEntityNotFound(_0x1e034f,null))[_0x7f33('0x2a')](saveUpdates(_0x4fce57[_0x7f33('0x55')],null))[_0x7f33('0x2a')](respondWithResult(_0x1e034f,null))[_0x7f33('0x50')](handleError(_0x1e034f,null));};exports[_0x7f33('0x2d')]=function(_0x1900aa,_0x3f2d89){return db[_0x7f33('0x35')][_0x7f33('0x53')]({'where':{'id':_0x1900aa[_0x7f33('0x52')]['id']}})[_0x7f33('0x2a')](handleEntityNotFound(_0x3f2d89,null))[_0x7f33('0x2a')](removeEntity(_0x3f2d89,null))[_0x7f33('0x50')](handleError(_0x3f2d89,null));};function widgetAttributes(_0x3c5d79){try{switch(_0x3c5d79['type']){case _0x7f33('0x62'):return[{'name':'attrUrl','value':_0x3c5d79[_0x7f33('0x63')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79['attrs'][0x0][_0x7f33('0x65')]:undefined)||'https://'}];case _0x7f33('0x66'):return[{'name':_0x7f33('0x67'),'value':_0x3c5d79[_0x7f33('0x67')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0][_0x7f33('0x65')]:undefined)||''}];case _0x7f33('0x68'):return[{'name':_0x7f33('0x69'),'value':_0x3c5d79[_0x7f33('0x69')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0][_0x7f33('0x65')]:undefined)||_0x7f33('0x6a')},{'name':_0x7f33('0x6b'),'value':_0x3c5d79[_0x7f33('0x6b')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x1]?_0x3c5d79[_0x7f33('0x64')][0x1]['value']:undefined)||_0x7f33('0x6c')},{'name':_0x7f33('0x6d'),'value':_0x3c5d79[_0x7f33('0x6d')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x2]?_0x3c5d79[_0x7f33('0x64')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x7f33('0x6e'),'value':_0x3c5d79[_0x7f33('0x6e')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0][_0x7f33('0x65')]:undefined)||'total'},{'name':_0x7f33('0x6f'),'value':_0x3c5d79[_0x7f33('0x6f')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x1]?_0x3c5d79[_0x7f33('0x64')][0x1][_0x7f33('0x65')]:undefined)||[]},{'name':'attrFontSize','value':_0x3c5d79[_0x7f33('0x6d')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x2]?_0x3c5d79['attrs'][0x2]['value']:undefined)||0x14},{'name':'attrChannel','value':_0x3c5d79['attrChannel']||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x3]?_0x3c5d79[_0x7f33('0x64')][0x3]['value']:undefined)||_0x7f33('0x70')},{'name':'attrEmailAccounts','value':_0x3c5d79['attrEmailAccounts']||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x4]?_0x3c5d79[_0x7f33('0x64')][0x4]['value']:undefined)||''},{'name':_0x7f33('0x71'),'value':_0x3c5d79['attrFaxAccounts']||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x5]?_0x3c5d79[_0x7f33('0x64')][0x5][_0x7f33('0x65')]:undefined)||''},{'name':_0x7f33('0x72'),'value':_0x3c5d79[_0x7f33('0x72')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x6]?_0x3c5d79[_0x7f33('0x64')][0x6][_0x7f33('0x65')]:undefined)||''},{'name':_0x7f33('0x73'),'value':_0x3c5d79[_0x7f33('0x73')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x7]?_0x3c5d79[_0x7f33('0x64')][0x7][_0x7f33('0x65')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3c5d79[_0x7f33('0x74')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x8]?_0x3c5d79[_0x7f33('0x64')][0x8][_0x7f33('0x65')]:undefined)||''},{'name':'attrChatWebsites','value':_0x3c5d79[_0x7f33('0x75')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x9]?_0x3c5d79[_0x7f33('0x64')][0x9]['value']:undefined)||''}];case _0x7f33('0x76'):case _0x7f33('0x77'):return[{'name':_0x7f33('0x78'),'value':_0x3c5d79[_0x7f33('0x78')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0][_0x7f33('0x65')]:undefined)||_0x7f33('0x79')},{'name':_0x7f33('0x7a'),'value':_0x3c5d79[_0x7f33('0x7a')]||(_0x3c5d79['attrs']&&_0x3c5d79['attrs'][0x1]?_0x3c5d79['attrs'][0x1][_0x7f33('0x65')]:undefined)||null},{'name':_0x7f33('0x7b'),'value':_0x3c5d79[_0x7f33('0x7b')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x2]?_0x3c5d79['attrs'][0x2][_0x7f33('0x65')]:undefined)||null},{'name':_0x7f33('0x6f'),'value':_0x3c5d79[_0x7f33('0x6f')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79['attrs'][0x3]?_0x3c5d79[_0x7f33('0x64')][0x3][_0x7f33('0x65')]:undefined)||[]},{'name':_0x7f33('0x7c'),'value':_0x3c5d79[_0x7f33('0x7c')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x4]?_0x3c5d79[_0x7f33('0x64')][0x4][_0x7f33('0x65')]:undefined)||_0x7f33('0x70')},{'name':_0x7f33('0x7d'),'value':_0x3c5d79['attrEmailAccounts']||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x5]?_0x3c5d79[_0x7f33('0x64')][0x5][_0x7f33('0x65')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x3c5d79[_0x7f33('0x71')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x6]?_0x3c5d79['attrs'][0x6][_0x7f33('0x65')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x3c5d79[_0x7f33('0x72')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x7]?_0x3c5d79[_0x7f33('0x64')][0x7][_0x7f33('0x65')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3c5d79[_0x7f33('0x73')]||(_0x3c5d79['attrs']&&_0x3c5d79[_0x7f33('0x64')][0x8]?_0x3c5d79[_0x7f33('0x64')][0x8][_0x7f33('0x65')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3c5d79[_0x7f33('0x74')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x9]?_0x3c5d79['attrs'][0x9]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x3c5d79[_0x7f33('0x75')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0xa]?_0x3c5d79['attrs'][0xa][_0x7f33('0x65')]:undefined)||''}];case'web-report':return[{'name':'attrReport','type':_0x3c5d79[_0x7f33('0x7e')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0]['type']:undefined)||null,'value':_0x3c5d79[_0x7f33('0x7f')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79[_0x7f33('0x64')][0x0]?_0x3c5d79[_0x7f33('0x64')][0x0]['value']:undefined)||null},{'name':_0x7f33('0x80'),'value':_0x3c5d79[_0x7f33('0x80')]||(_0x3c5d79[_0x7f33('0x64')]&&_0x3c5d79['attrs'][0x1]?_0x3c5d79['attrs'][0x1][_0x7f33('0x65')]:undefined)||0x0}];default:return[];}}catch(_0x5eada8){logger['error'](_0x7f33('0x81'),JSON[_0x7f33('0x82')](_0x5eada8));return[];}}exports[_0x7f33('0x83')]=function(_0x11714b,_0x310aca,_0x1b3565){if(_0x11714b[_0x7f33('0x55')]['id']){delete _0x11714b[_0x7f33('0x55')]['id'];}return db[_0x7f33('0x35')][_0x7f33('0x53')]({'where':{'id':_0x11714b['params']['id']}})['then'](handleEntityNotFound(_0x310aca,null))[_0x7f33('0x2a')](function(_0x414bd5){if(_0x414bd5){_0x11714b['body']['DashboardId']=_0x414bd5['id'];_0x11714b[_0x7f33('0x55')]['attrs']=widgetAttributes(_0x11714b[_0x7f33('0x55')]);return db['DashboardItem'][_0x7f33('0x54')](_0x11714b[_0x7f33('0x55')]);}})[_0x7f33('0x2a')](respondWithResult(_0x310aca,null))[_0x7f33('0x50')](handleError(_0x310aca,null));};exports[_0x7f33('0x84')]=function(_0x631850,_0x42d58c,_0xcead8b){var _0x532bfa={};var _0x301638={};var _0x47c6bb;var _0x33b463;return db['Dashboard']['findOne']({'where':{'id':_0x631850[_0x7f33('0x52')]['id']}})[_0x7f33('0x2a')](handleEntityNotFound(_0x42d58c,null))[_0x7f33('0x2a')](function(_0x530798){if(_0x530798){_0x47c6bb=_0x530798;_0x301638[_0x7f33('0x3a')]=_['keys'](db[_0x7f33('0x85')][_0x7f33('0x36')]);_0x301638[_0x7f33('0x3c')]=_[_0x7f33('0x3b')](_0x631850[_0x7f33('0x3c')]);_0x301638['filters']=_[_0x7f33('0x3e')](_0x301638[_0x7f33('0x3a')],_0x301638['query']);_0x532bfa[_0x7f33('0x3d')]=_[_0x7f33('0x3e')](_0x301638[_0x7f33('0x3a')],qs['fields'](_0x631850['query'][_0x7f33('0x3f')]));_0x532bfa[_0x7f33('0x3d')]=_0x532bfa['attributes'][_0x7f33('0x40')]?_0x532bfa['attributes']:_0x301638[_0x7f33('0x3a')];_0x532bfa[_0x7f33('0x43')]=qs[_0x7f33('0x44')](_0x631850['query'][_0x7f33('0x44')]);_0x532bfa[_0x7f33('0x48')]=qs[_0x7f33('0x45')](_['pick'](_0x631850[_0x7f33('0x3c')],_0x301638[_0x7f33('0x45')]));if(_0x631850['query'][_0x7f33('0x47')]){_0x532bfa['where']=_[_0x7f33('0x4a')](_0x532bfa[_0x7f33('0x48')],{'$or':_[_0x7f33('0x34')](_0x532bfa[_0x7f33('0x3d')],function(_0x17d359){var _0xfa2b11={};_0xfa2b11[_0x17d359]={'$like':'%'+_0x631850[_0x7f33('0x3c')][_0x7f33('0x47')]+'%'};return _0xfa2b11;})});}_0x532bfa=_[_0x7f33('0x4a')]({},_0x532bfa,_0x631850[_0x7f33('0x4b')]);return _0x47c6bb['getItems'](_0x532bfa);}})[_0x7f33('0x2a')](function(_0x1d8308){if(_0x1d8308){_0x33b463=_0x1d8308[_0x7f33('0x40')];if(!_0x631850[_0x7f33('0x3c')][_0x7f33('0x41')](_0x7f33('0x42'))){_0x532bfa[_0x7f33('0x21')]=qs[_0x7f33('0x21')](_0x631850[_0x7f33('0x3c')][_0x7f33('0x21')]);_0x532bfa[_0x7f33('0x1f')]=qs[_0x7f33('0x1f')](_0x631850['query'][_0x7f33('0x1f')]);}return _0x47c6bb[_0x7f33('0x84')](_0x532bfa);}})[_0x7f33('0x2a')](function(_0xd2bf93){if(_0xd2bf93){return _0xd2bf93?{'count':_0x33b463,'rows':_0xd2bf93}:null;}})[_0x7f33('0x2a')](respondWithResult(_0x42d58c,null))[_0x7f33('0x50')](handleError(_0x42d58c,null));};
\ No newline at end of file
+var _0x68af=['redis','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','count','set','reject','save','then','destroy','get','CustomDashboards','stack','name','send','index','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','Dashboard','include','findAll','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','update','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','voice','web-report','attrReport','attrRefresh','error','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','pick','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x3357e6,_0x1a2560){var _0x4ff5d9=function(_0x59db68){while(--_0x59db68){_0x3357e6['push'](_0x3357e6['shift']());}};_0x4ff5d9(++_0x1a2560);}(_0x68af,0xf4));var _0xf68a=function(_0x229031,_0x1fee27){_0x229031=_0x229031-0x0;var _0x5c4f63=_0x68af[_0x229031];return _0x5c4f63;};'use strict';var emlformat=require(_0xf68a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf68a('0x1'));var jsonpatch=require(_0xf68a('0x2'));var rp=require(_0xf68a('0x3'));var moment=require(_0xf68a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf68a('0x5'));var util=require(_0xf68a('0x6'));var path=require(_0xf68a('0x7'));var sox=require(_0xf68a('0x8'));var csv=require('to-csv');var ejs=require(_0xf68a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf68a('0xa'));var squel=require(_0xf68a('0xb'));var crypto=require(_0xf68a('0xc'));var jsforce=require(_0xf68a('0xd'));var deskjs=require(_0xf68a('0xe'));var toCsv=require(_0xf68a('0xf'));var querystring=require(_0xf68a('0x10'));var Papa=require(_0xf68a('0x11'));var Redis=require('ioredis');var authService=require(_0xf68a('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf68a('0x13'));var hardwareService=require(_0xf68a('0x14'));var logger=require(_0xf68a('0x15'))(_0xf68a('0x16'));var utils=require(_0xf68a('0x17'));var config=require(_0xf68a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf68a('0x19'))['db'];config['redis']=_['defaults'](config[_0xf68a('0x1a')],{'host':_0xf68a('0x1b'),'port':0x18eb});var socket=require(_0xf68a('0x1c'))(new Redis(config[_0xf68a('0x1a')]));require(_0xf68a('0x1d'))[_0xf68a('0x1e')](socket);function respondWithStatusCode(_0x53ea9a,_0x206e47){_0x206e47=_0x206e47||0xcc;return function(_0x4fe243){if(_0x4fe243){return _0x53ea9a[_0xf68a('0x1f')](_0x206e47);}return _0x53ea9a[_0xf68a('0x20')](_0x206e47)[_0xf68a('0x21')]();};}function respondWithResult(_0x1b6033,_0x22fa53){_0x22fa53=_0x22fa53||0xc8;return function(_0x423a3b){if(_0x423a3b){return _0x1b6033[_0xf68a('0x20')](_0x22fa53)[_0xf68a('0x22')](_0x423a3b);}};}function respondWithFilteredResult(_0x25fd7c,_0x3ba87f){return function(_0x42b925){if(_0x42b925){var _0x1617a5=typeof _0x3ba87f[_0xf68a('0x23')]===_0xf68a('0x24')&&typeof _0x3ba87f['limit']===_0xf68a('0x24');var _0x1bb799=_0x42b925[_0xf68a('0x25')];var _0x48e5b8=_0x1617a5?0x0:_0x3ba87f[_0xf68a('0x23')];var _0x3bea1a=_0x1617a5?_0x42b925[_0xf68a('0x25')]:_0x3ba87f['offset']+_0x3ba87f['limit'];var _0x40bf31;if(_0x3bea1a>=_0x1bb799){_0x3bea1a=_0x1bb799;_0x40bf31=0xc8;}else{_0x40bf31=0xce;}_0x25fd7c['status'](_0x40bf31);return _0x25fd7c[_0xf68a('0x26')]('Content-Range',_0x48e5b8+'-'+_0x3bea1a+'/'+_0x1bb799)['json'](_0x42b925);}return null;};}function patchUpdates(_0x2b027a){return function(_0x5f22a9){try{jsonpatch['apply'](_0x5f22a9,_0x2b027a,!![]);}catch(_0x5e70ca){return BPromise[_0xf68a('0x27')](_0x5e70ca);}return _0x5f22a9[_0xf68a('0x28')]();};}function saveUpdates(_0x4b1847,_0x3ad7aa){return function(_0x50c98c){if(_0x50c98c){return _0x50c98c['update'](_0x4b1847)[_0xf68a('0x29')](function(_0x4d3b05){return _0x4d3b05;});}return null;};}function removeEntity(_0x14b8b9,_0x2390f3){return function(_0x102653){if(_0x102653){return _0x102653[_0xf68a('0x2a')]()['then'](function(){var _0x23f1dc=_0x102653[_0xf68a('0x2b')]({'plain':!![]});var _0x503b28=_0xf68a('0x2c');return db['UserProfileResource'][_0xf68a('0x2a')]({'where':{'type':_0x503b28,'resourceId':_0x23f1dc['id']}})[_0xf68a('0x29')](function(){return _0x102653;});})['then'](function(){_0x14b8b9[_0xf68a('0x20')](0xcc)[_0xf68a('0x21')]();});}};}function handleEntityNotFound(_0x386cfd,_0x4276ed){return function(_0x5d503f){if(!_0x5d503f){_0x386cfd[_0xf68a('0x1f')](0x194);}return _0x5d503f;};}function handleError(_0x1e2e6f,_0xe7cdf7){_0xe7cdf7=_0xe7cdf7||0x1f4;return function(_0x1430c4){logger['error'](_0x1430c4[_0xf68a('0x2d')]);if(_0x1430c4['name']){delete _0x1430c4[_0xf68a('0x2e')];}_0x1e2e6f[_0xf68a('0x20')](_0xe7cdf7)[_0xf68a('0x2f')](_0x1430c4);};}exports[_0xf68a('0x30')]=function(_0xb6973e,_0x59781b){var _0x53f786={},_0x4053b2={},_0x18723b={'count':0x0,'rows':[]};var _0xb31837=_['map'](db['Dashboard'][_0xf68a('0x31')],function(_0x3d2003){return{'name':_0x3d2003[_0xf68a('0x32')],'type':_0x3d2003[_0xf68a('0x33')]['key']};});_0x4053b2['model']=_[_0xf68a('0x34')](_0xb31837,_0xf68a('0x2e'));_0x4053b2[_0xf68a('0x35')]=_[_0xf68a('0x36')](_0xb6973e['query']);_0x4053b2[_0xf68a('0x37')]=_[_0xf68a('0x38')](_0x4053b2[_0xf68a('0x39')],_0x4053b2[_0xf68a('0x35')]);_0x53f786['attributes']=_[_0xf68a('0x38')](_0x4053b2[_0xf68a('0x39')],qs[_0xf68a('0x3a')](_0xb6973e[_0xf68a('0x35')][_0xf68a('0x3a')]));_0x53f786[_0xf68a('0x3b')]=_0x53f786[_0xf68a('0x3b')][_0xf68a('0x3c')]?_0x53f786['attributes']:_0x4053b2[_0xf68a('0x39')];if(!_0xb6973e[_0xf68a('0x35')][_0xf68a('0x3d')](_0xf68a('0x3e'))){_0x53f786[_0xf68a('0x3f')]=qs[_0xf68a('0x3f')](_0xb6973e['query'][_0xf68a('0x3f')]);_0x53f786[_0xf68a('0x23')]=qs['offset'](_0xb6973e[_0xf68a('0x35')]['offset']);}_0x53f786[_0xf68a('0x40')]=qs[_0xf68a('0x41')](_0xb6973e[_0xf68a('0x35')][_0xf68a('0x41')]);_0x53f786[_0xf68a('0x42')]=qs[_0xf68a('0x37')](_['pick'](_0xb6973e[_0xf68a('0x35')],_0x4053b2[_0xf68a('0x37')]),_0xb31837);if(_0xb6973e['query'][_0xf68a('0x43')]){_0x53f786[_0xf68a('0x42')]=_[_0xf68a('0x44')](_0x53f786[_0xf68a('0x42')],{'$or':_['map'](_0xb31837,function(_0x419057){if(_0x419057[_0xf68a('0x33')]!==_0xf68a('0x45')){var _0x564edc={};_0x564edc[_0x419057[_0xf68a('0x2e')]]={'$like':'%'+_0xb6973e['query'][_0xf68a('0x43')]+'%'};return _0x564edc;}})});}_0x53f786=_['merge']({},_0x53f786,_0xb6973e[_0xf68a('0x46')]);var _0x18f9ad={'where':_0x53f786[_0xf68a('0x42')]};return db[_0xf68a('0x47')][_0xf68a('0x25')](_0x18f9ad)[_0xf68a('0x29')](function(_0x2bb923){_0x18723b[_0xf68a('0x25')]=_0x2bb923;if(_0xb6973e['query']['includeAll']){_0x53f786[_0xf68a('0x48')]=[{'all':!![]}];}return db[_0xf68a('0x47')][_0xf68a('0x49')](_0x53f786);})[_0xf68a('0x29')](function(_0x2f081f){_0x18723b['rows']=_0x2f081f;return _0x18723b;})['then'](respondWithFilteredResult(_0x59781b,_0x53f786))[_0xf68a('0x4a')](handleError(_0x59781b,null));};exports[_0xf68a('0x4b')]=function(_0x4a1d4a,_0x19e701){var _0x1d0612={'raw':![],'where':{'id':_0x4a1d4a[_0xf68a('0x4c')]['id']}},_0x1247b6={};_0x1247b6[_0xf68a('0x39')]=_['keys'](db[_0xf68a('0x47')][_0xf68a('0x31')]);_0x1247b6[_0xf68a('0x35')]=_[_0xf68a('0x36')](_0x4a1d4a[_0xf68a('0x35')]);_0x1247b6[_0xf68a('0x37')]=_[_0xf68a('0x38')](_0x1247b6['model'],_0x1247b6[_0xf68a('0x35')]);_0x1d0612['attributes']=_[_0xf68a('0x38')](_0x1247b6[_0xf68a('0x39')],qs[_0xf68a('0x3a')](_0x4a1d4a[_0xf68a('0x35')][_0xf68a('0x3a')]));_0x1d0612[_0xf68a('0x3b')]=_0x1d0612[_0xf68a('0x3b')]['length']?_0x1d0612[_0xf68a('0x3b')]:_0x1247b6[_0xf68a('0x39')];if(_0x4a1d4a[_0xf68a('0x35')][_0xf68a('0x4d')]){_0x1d0612[_0xf68a('0x48')]=[{'all':!![]}];}_0x1d0612=_[_0xf68a('0x44')]({},_0x1d0612,_0x4a1d4a[_0xf68a('0x46')]);return db[_0xf68a('0x47')][_0xf68a('0x4e')](_0x1d0612)['then'](handleEntityNotFound(_0x19e701,null))[_0xf68a('0x29')](respondWithResult(_0x19e701,null))[_0xf68a('0x4a')](handleError(_0x19e701,null));};exports['create']=function(_0x54b0f4,_0x52ea76){return db[_0xf68a('0x47')][_0xf68a('0x4f')](_0x54b0f4[_0xf68a('0x50')],{})[_0xf68a('0x29')](function(_0xf7d71e){var _0x436e70=_0x54b0f4[_0xf68a('0x51')]['get']({'plain':!![]});if(!_0x436e70)throw new Error(_0xf68a('0x52'));if(_0x436e70[_0xf68a('0x53')]===_0xf68a('0x51')){var _0x5e5e07=_0xf7d71e[_0xf68a('0x2b')]({'plain':!![]});var _0x5d213a='CustomDashboards';return db[_0xf68a('0x54')][_0xf68a('0x4e')]({'where':{'name':_0x5d213a,'userProfileId':_0x436e70[_0xf68a('0x55')]},'raw':!![]})[_0xf68a('0x29')](function(_0x34e5cd){if(_0x34e5cd&&_0x34e5cd[_0xf68a('0x56')]===0x0){return db[_0xf68a('0x57')][_0xf68a('0x4f')]({'name':_0x5e5e07[_0xf68a('0x2e')],'resourceId':_0x5e5e07['id'],'type':_0x34e5cd['name'],'sectionId':_0x34e5cd['id']},{})[_0xf68a('0x29')](function(){return _0xf7d71e;});}else{return _0xf7d71e;}})[_0xf68a('0x4a')](function(_0x1b4853){logger['error'](_0xf68a('0x58'),_0x1b4853);throw _0x1b4853;});}return _0xf7d71e;})[_0xf68a('0x29')](respondWithResult(_0x52ea76,0xc9))['catch'](handleError(_0x52ea76,null));};exports[_0xf68a('0x59')]=function(_0x2d61e8,_0x8ca9a5){var _0x3296db={'where':{'id':_0x2d61e8[_0xf68a('0x4c')]['id']}},_0x4899fc={};_0x4899fc[_0xf68a('0x39')]=_[_0xf68a('0x36')](db[_0xf68a('0x47')]['rawAttributes']);_0x3296db[_0xf68a('0x3b')]=_[_0xf68a('0x38')](_0x4899fc[_0xf68a('0x39')],qs[_0xf68a('0x3a')](_0x2d61e8['query']['fields']));_0x3296db[_0xf68a('0x3b')]=_0x3296db['attributes'][_0xf68a('0x3c')]?_0x3296db[_0xf68a('0x3b')]:_0x4899fc['model'];if(_0x2d61e8[_0xf68a('0x35')][_0xf68a('0x4d')]){_0x3296db[_0xf68a('0x48')]=[{'all':!![]}];}_0x3296db=_[_0xf68a('0x44')]({},_0x3296db,_0x2d61e8[_0xf68a('0x46')]);return db[_0xf68a('0x47')][_0xf68a('0x4e')](_0x3296db)[_0xf68a('0x29')](handleEntityNotFound(_0x8ca9a5,null))['then'](function(_0x4d3ae6){if(_0x4d3ae6){var _0x508b62=_0x4d3ae6[_0xf68a('0x2b')]({'plain':!![]});_0x508b62=qs[_0xf68a('0x5a')](_0x508b62,['id',_0xf68a('0x5b'),'updatedAt']);_0x2d61e8[_0xf68a('0x50')]=_[_0xf68a('0x5a')](_0x2d61e8['body'],['id',_0xf68a('0x5b'),_0xf68a('0x5c')]);return db[_0xf68a('0x47')][_0xf68a('0x4f')](_['merge'](_0x508b62,_0x2d61e8[_0xf68a('0x50')]),{'include':_0x2d61e8[_0xf68a('0x35')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x4e12be){var _0x540bb6=_0x2d61e8[_0xf68a('0x51')][_0xf68a('0x2b')]({'plain':!![]});if(!_0x540bb6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x540bb6[_0xf68a('0x53')]===_0xf68a('0x51')){var _0x274bc0=_0x4e12be['get']({'plain':!![]});var _0x459cb0='CustomDashboards';return db['UserProfileSection']['find']({'where':{'name':_0x459cb0,'userProfileId':_0x540bb6[_0xf68a('0x55')]},'raw':!![]})['then'](function(_0x18c4aa){if(_0x18c4aa&&_0x18c4aa[_0xf68a('0x56')]===0x0){return db[_0xf68a('0x57')][_0xf68a('0x4f')]({'name':_0x274bc0[_0xf68a('0x2e')],'resourceId':_0x274bc0['id'],'type':_0x18c4aa['name'],'sectionId':_0x18c4aa['id']},{})[_0xf68a('0x29')](function(){return _0x4e12be;});}else{return _0x4e12be;}})[_0xf68a('0x4a')](function(_0x536074){logger['error'](_0xf68a('0x58'),_0x536074);throw _0x536074;});}return _0x4e12be;});}})['then'](respondWithResult(_0x8ca9a5,0xc9))[_0xf68a('0x4a')](handleError(_0x8ca9a5,null));};exports[_0xf68a('0x5d')]=function(_0x4a3329,_0x4138fb){if(_0x4a3329[_0xf68a('0x50')]['id']){delete _0x4a3329[_0xf68a('0x50')]['id'];}return db[_0xf68a('0x47')][_0xf68a('0x4e')]({'where':{'id':_0x4a3329[_0xf68a('0x4c')]['id']}})[_0xf68a('0x29')](handleEntityNotFound(_0x4138fb,null))[_0xf68a('0x29')](saveUpdates(_0x4a3329[_0xf68a('0x50')],null))[_0xf68a('0x29')](respondWithResult(_0x4138fb,null))[_0xf68a('0x4a')](handleError(_0x4138fb,null));};exports['destroy']=function(_0xbcf705,_0x3ee041){return db[_0xf68a('0x47')][_0xf68a('0x4e')]({'where':{'id':_0xbcf705[_0xf68a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3ee041,null))[_0xf68a('0x29')](removeEntity(_0x3ee041,null))[_0xf68a('0x4a')](handleError(_0x3ee041,null));};function widgetAttributes(_0x2a1032){try{switch(_0x2a1032['type']){case'iframe':return[{'name':_0xf68a('0x5e'),'value':_0x2a1032[_0xf68a('0x5e')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032['attrs'][0x0][_0xf68a('0x60')]:undefined)||_0xf68a('0x61')}];case _0xf68a('0x62'):return[{'name':_0xf68a('0x63'),'value':_0x2a1032[_0xf68a('0x63')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0][_0xf68a('0x60')]:undefined)||''}];case _0xf68a('0x64'):return[{'name':_0xf68a('0x65'),'value':_0x2a1032['attrHourFormat']||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0][_0xf68a('0x60')]:undefined)||_0xf68a('0x66')},{'name':_0xf68a('0x67'),'value':_0x2a1032[_0xf68a('0x67')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032['attrs'][0x1]?_0x2a1032['attrs'][0x1][_0xf68a('0x60')]:undefined)||_0xf68a('0x68')},{'name':_0xf68a('0x69'),'value':_0x2a1032['attrFontSize']||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x2]?_0x2a1032['attrs'][0x2][_0xf68a('0x60')]:undefined)||0xc}];case _0xf68a('0x6a'):return[{'name':_0xf68a('0x6b'),'value':_0x2a1032[_0xf68a('0x6b')]||(_0x2a1032['attrs']&&_0x2a1032['attrs'][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0][_0xf68a('0x60')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x2a1032[_0xf68a('0x6c')]||(_0x2a1032['attrs']&&_0x2a1032[_0xf68a('0x5f')][0x1]?_0x2a1032['attrs'][0x1][_0xf68a('0x60')]:undefined)||[]},{'name':_0xf68a('0x69'),'value':_0x2a1032[_0xf68a('0x69')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x2]?_0x2a1032[_0xf68a('0x5f')][0x2][_0xf68a('0x60')]:undefined)||0x14},{'name':'attrChannel','value':_0x2a1032[_0xf68a('0x6d')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x3]?_0x2a1032[_0xf68a('0x5f')][0x3][_0xf68a('0x60')]:undefined)||'voice'},{'name':_0xf68a('0x6e'),'value':_0x2a1032[_0xf68a('0x6e')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x4]?_0x2a1032[_0xf68a('0x5f')][0x4][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x6f'),'value':_0x2a1032[_0xf68a('0x6f')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x5]?_0x2a1032[_0xf68a('0x5f')][0x5][_0xf68a('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x2a1032[_0xf68a('0x70')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x6]?_0x2a1032[_0xf68a('0x5f')][0x6][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x71'),'value':_0x2a1032[_0xf68a('0x71')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032['attrs'][0x7]?_0x2a1032[_0xf68a('0x5f')][0x7]['value']:undefined)||''},{'name':_0xf68a('0x72'),'value':_0x2a1032[_0xf68a('0x72')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x8]?_0x2a1032[_0xf68a('0x5f')][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x2a1032[_0xf68a('0x73')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x9]?_0x2a1032[_0xf68a('0x5f')][0x9][_0xf68a('0x60')]:undefined)||''}];case _0xf68a('0x74'):case _0xf68a('0x75'):return[{'name':_0xf68a('0x76'),'value':_0x2a1032[_0xf68a('0x76')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0]['value']:undefined)||_0xf68a('0x77')},{'name':_0xf68a('0x78'),'value':_0x2a1032[_0xf68a('0x78')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x1]?_0x2a1032[_0xf68a('0x5f')][0x1][_0xf68a('0x60')]:undefined)||null},{'name':_0xf68a('0x79'),'value':_0x2a1032['attrSerie3']||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x2]?_0x2a1032[_0xf68a('0x5f')][0x2][_0xf68a('0x60')]:undefined)||null},{'name':_0xf68a('0x6c'),'value':_0x2a1032[_0xf68a('0x6c')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x3]?_0x2a1032['attrs'][0x3]['value']:undefined)||[]},{'name':_0xf68a('0x6d'),'value':_0x2a1032[_0xf68a('0x6d')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x4]?_0x2a1032[_0xf68a('0x5f')][0x4][_0xf68a('0x60')]:undefined)||_0xf68a('0x7a')},{'name':_0xf68a('0x6e'),'value':_0x2a1032[_0xf68a('0x6e')]||(_0x2a1032['attrs']&&_0x2a1032[_0xf68a('0x5f')][0x5]?_0x2a1032[_0xf68a('0x5f')][0x5][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x6f'),'value':_0x2a1032['attrFaxAccounts']||(_0x2a1032['attrs']&&_0x2a1032[_0xf68a('0x5f')][0x6]?_0x2a1032[_0xf68a('0x5f')][0x6]['value']:undefined)||''},{'name':_0xf68a('0x70'),'value':_0x2a1032[_0xf68a('0x70')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x7]?_0x2a1032[_0xf68a('0x5f')][0x7][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x71'),'value':_0x2a1032[_0xf68a('0x71')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x8]?_0x2a1032[_0xf68a('0x5f')][0x8][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x72'),'value':_0x2a1032[_0xf68a('0x72')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x9]?_0x2a1032[_0xf68a('0x5f')][0x9][_0xf68a('0x60')]:undefined)||''},{'name':_0xf68a('0x73'),'value':_0x2a1032['attrChatWebsites']||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0xa]?_0x2a1032[_0xf68a('0x5f')][0xa][_0xf68a('0x60')]:undefined)||''}];case _0xf68a('0x7b'):return[{'name':'attrReport','type':_0x2a1032['reportType']||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0][_0xf68a('0x33')]:undefined)||null,'value':_0x2a1032[_0xf68a('0x7c')]||(_0x2a1032[_0xf68a('0x5f')]&&_0x2a1032[_0xf68a('0x5f')][0x0]?_0x2a1032[_0xf68a('0x5f')][0x0][_0xf68a('0x60')]:undefined)||null},{'name':_0xf68a('0x7d'),'value':_0x2a1032[_0xf68a('0x7d')]||(_0x2a1032['attrs']&&_0x2a1032[_0xf68a('0x5f')][0x1]?_0x2a1032['attrs'][0x1][_0xf68a('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x42851b){logger[_0xf68a('0x7e')](_0xf68a('0x7f'),JSON[_0xf68a('0x80')](_0x42851b));return[];}}exports[_0xf68a('0x81')]=function(_0x4a42d0,_0x2a2ecc,_0x2fca70){if(_0x4a42d0['body']['id']){delete _0x4a42d0[_0xf68a('0x50')]['id'];}return db[_0xf68a('0x47')][_0xf68a('0x4e')]({'where':{'id':_0x4a42d0[_0xf68a('0x4c')]['id']}})[_0xf68a('0x29')](handleEntityNotFound(_0x2a2ecc,null))[_0xf68a('0x29')](function(_0x6ed0f3){if(_0x6ed0f3){_0x4a42d0[_0xf68a('0x50')][_0xf68a('0x82')]=_0x6ed0f3['id'];_0x4a42d0['body'][_0xf68a('0x5f')]=widgetAttributes(_0x4a42d0[_0xf68a('0x50')]);return db[_0xf68a('0x83')]['create'](_0x4a42d0[_0xf68a('0x50')]);}})['then'](respondWithResult(_0x2a2ecc,null))[_0xf68a('0x4a')](handleError(_0x2a2ecc,null));};exports[_0xf68a('0x84')]=function(_0xc0241a,_0x21c4a8,_0x332804){var _0x39ec1d={};var _0x2f6835={};var _0x932368;var _0x479511;return db[_0xf68a('0x47')][_0xf68a('0x85')]({'where':{'id':_0xc0241a[_0xf68a('0x4c')]['id']}})[_0xf68a('0x29')](handleEntityNotFound(_0x21c4a8,null))[_0xf68a('0x29')](function(_0x143b7e){if(_0x143b7e){_0x932368=_0x143b7e;_0x2f6835[_0xf68a('0x39')]=_[_0xf68a('0x36')](db[_0xf68a('0x83')][_0xf68a('0x31')]);_0x2f6835['query']=_[_0xf68a('0x36')](_0xc0241a['query']);_0x2f6835['filters']=_[_0xf68a('0x38')](_0x2f6835[_0xf68a('0x39')],_0x2f6835[_0xf68a('0x35')]);_0x39ec1d[_0xf68a('0x3b')]=_['intersection'](_0x2f6835[_0xf68a('0x39')],qs['fields'](_0xc0241a[_0xf68a('0x35')][_0xf68a('0x3a')]));_0x39ec1d[_0xf68a('0x3b')]=_0x39ec1d['attributes'][_0xf68a('0x3c')]?_0x39ec1d[_0xf68a('0x3b')]:_0x2f6835[_0xf68a('0x39')];_0x39ec1d['order']=qs[_0xf68a('0x41')](_0xc0241a[_0xf68a('0x35')]['sort']);_0x39ec1d[_0xf68a('0x42')]=qs['filters'](_[_0xf68a('0x86')](_0xc0241a[_0xf68a('0x35')],_0x2f6835[_0xf68a('0x37')]));if(_0xc0241a[_0xf68a('0x35')]['filter']){_0x39ec1d['where']=_[_0xf68a('0x44')](_0x39ec1d[_0xf68a('0x42')],{'$or':_['map'](_0x39ec1d[_0xf68a('0x3b')],function(_0x2f4274){var _0x5e09b3={};_0x5e09b3[_0x2f4274]={'$like':'%'+_0xc0241a['query'][_0xf68a('0x43')]+'%'};return _0x5e09b3;})});}_0x39ec1d=_['merge']({},_0x39ec1d,_0xc0241a[_0xf68a('0x46')]);return _0x932368[_0xf68a('0x84')](_0x39ec1d);}})[_0xf68a('0x29')](function(_0x4b2dc4){if(_0x4b2dc4){_0x479511=_0x4b2dc4[_0xf68a('0x3c')];if(!_0xc0241a[_0xf68a('0x35')][_0xf68a('0x3d')](_0xf68a('0x3e'))){_0x39ec1d[_0xf68a('0x3f')]=qs[_0xf68a('0x3f')](_0xc0241a[_0xf68a('0x35')]['limit']);_0x39ec1d[_0xf68a('0x23')]=qs[_0xf68a('0x23')](_0xc0241a['query'][_0xf68a('0x23')]);}return _0x932368[_0xf68a('0x84')](_0x39ec1d);}})[_0xf68a('0x29')](function(_0x7fc356){if(_0x7fc356){return _0x7fc356?{'count':_0x479511,'rows':_0x7fc356}:null;}})[_0xf68a('0x29')](respondWithResult(_0x21c4a8,null))['catch'](handleError(_0x21c4a8,null));};
\ No newline at end of file
index 65bf320..e551009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeef=['save','update','remove','emit','hook','exports','events','Dashboard','setMaxListeners'];(function(_0x2bc7bc,_0x827ea){var _0xbae862=function(_0xdde795){while(--_0xdde795){_0x2bc7bc['push'](_0x2bc7bc['shift']());}};_0xbae862(++_0x827ea);}(_0xfeef,0x10b));var _0xffee=function(_0x88642e,_0x5a7cfc){_0x88642e=_0x88642e-0x0;var _0x1adf98=_0xfeef[_0x88642e];return _0x1adf98;};'use strict';var EventEmitter=require(_0xffee('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xffee('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xffee('0x2')](0x0);var events={'afterCreate':_0xffee('0x3'),'afterUpdate':_0xffee('0x4'),'afterDestroy':_0xffee('0x5')};function emitEvent(_0x35cf46){return function(_0x1ad432,_0x19e939,_0x2c399a){DashboardEvents[_0xffee('0x6')](_0x35cf46+':'+_0x1ad432['id'],_0x1ad432);DashboardEvents[_0xffee('0x6')](_0x35cf46,_0x1ad432);_0x2c399a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xffee('0x7')](e,emitEvent(event));}}module[_0xffee('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0x131a=['../../mysqldb','Dashboard','setMaxListeners','remove','emit','hasOwnProperty','events'];(function(_0x3af74d,_0x1e7e2d){var _0x3811a7=function(_0x546cb2){while(--_0x546cb2){_0x3af74d['push'](_0x3af74d['shift']());}};_0x3811a7(++_0x1e7e2d);}(_0x131a,0x12c));var _0xa131=function(_0x8bf615,_0xe6091d){_0x8bf615=_0x8bf615-0x0;var _0x40643c=_0x131a[_0x8bf615];return _0x40643c;};'use strict';var EventEmitter=require(_0xa131('0x0'));var Dashboard=require(_0xa131('0x1'))['db'][_0xa131('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa131('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa131('0x4')};function emitEvent(_0x321e73){return function(_0x21e434,_0x57b021,_0x500447){DashboardEvents[_0xa131('0x5')](_0x321e73+':'+_0x21e434['id'],_0x21e434);DashboardEvents['emit'](_0x321e73,_0x21e434);_0x500447(null);};}for(var e in events){if(events[_0xa131('0x6')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index 0ff01c8..5b4e16f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f6=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','Dashboard'];(function(_0x31d999,_0xe8f241){var _0x171f68=function(_0x47288e){while(--_0x47288e){_0x31d999['push'](_0x31d999['shift']());}};_0x171f68(++_0xe8f241);}(_0x01f6,0xea));var _0x601f=function(_0x4853fc,_0x52cd55){_0x4853fc=_0x4853fc-0x0;var _0x23be73=_0x01f6[_0x4853fc];return _0x23be73;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x601f('0x0'))(_0x601f('0x1'));var moment=require('moment');var BPromise=require(_0x601f('0x2'));var rp=require(_0x601f('0x3'));var fs=require('fs');var path=require(_0x601f('0x4'));var rimraf=require(_0x601f('0x5'));var config=require(_0x601f('0x6'));var attributes=require('./dashboard.attributes');module[_0x601f('0x7')]=function(_0x5724a2,_0x824bec){return _0x5724a2['define'](_0x601f('0x8'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b50=['../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','dashboards','lodash'];(function(_0xb1a9cd,_0x1df46c){var _0xa9eedf=function(_0x59e69d){while(--_0x59e69d){_0xb1a9cd['push'](_0xb1a9cd['shift']());}};_0xa9eedf(++_0x1df46c);}(_0x7b50,0x1df));var _0x07b5=function(_0x21782d,_0x2c93ed){_0x21782d=_0x21782d-0x0;var _0x5a0728=_0x7b50[_0x21782d];return _0x5a0728;};'use strict';var _=require(_0x07b5('0x0'));var util=require('util');var logger=require(_0x07b5('0x1'))(_0x07b5('0x2'));var moment=require(_0x07b5('0x3'));var BPromise=require(_0x07b5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x07b5('0x5'));var rimraf=require('rimraf');var config=require(_0x07b5('0x6'));var attributes=require('./dashboard.attributes');module[_0x07b5('0x7')]=function(_0x24d12d,_0x1929ad){return _0x24d12d[_0x07b5('0x8')]('Dashboard',attributes,{'tableName':_0x07b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4956ace..01ec4a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a6=['client','http','redis','localhost','socket.io-emitter','./dashboard.socket','register','info','request\x20sent','debug','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x24ce0f,_0x371a56){var _0x2a2954=function(_0x118052){while(--_0x118052){_0x24ce0f['push'](_0x24ce0f['shift']());}};_0x2a2954(++_0x371a56);}(_0x99a6,0x7d));var _0x699a=function(_0x411b14,_0x3f9e36){_0x411b14=_0x411b14-0x0;var _0x402736=_0x99a6[_0x411b14];return _0x402736;};'use strict';var _=require(_0x699a('0x0'));var util=require(_0x699a('0x1'));var moment=require(_0x699a('0x2'));var BPromise=require(_0x699a('0x3'));var rs=require(_0x699a('0x4'));var fs=require('fs');var Redis=require(_0x699a('0x5'));var db=require(_0x699a('0x6'))['db'];var utils=require(_0x699a('0x7'));var logger=require(_0x699a('0x8'))(_0x699a('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x699a('0xa')][_0x699a('0xb')]({'port':0x232a});config[_0x699a('0xc')]=_['defaults'](config[_0x699a('0xc')],{'host':_0x699a('0xd'),'port':0x18eb});var socket=require(_0x699a('0xe'))(new Redis(config[_0x699a('0xc')]));require(_0x699a('0xf'))[_0x699a('0x10')](socket);function respondWithRpcPromise(_0x2fbe93,_0x5eedb0,_0x5de563){return new BPromise(function(_0x583bc2,_0x158782){return client['request'](_0x2fbe93,_0x5de563)['then'](function(_0x168a1c){logger[_0x699a('0x11')]('Dashboard,\x20%s,\x20%s',_0x5eedb0,_0x699a('0x12'));logger[_0x699a('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x5eedb0,_0x699a('0x12'),JSON[_0x699a('0x14')](_0x168a1c));if(_0x168a1c[_0x699a('0x15')]){if(_0x168a1c[_0x699a('0x15')][_0x699a('0x16')]===0x1f4){logger[_0x699a('0x15')](_0x699a('0x17'),_0x5eedb0,_0x168a1c['error'][_0x699a('0x18')]);return _0x158782(_0x168a1c[_0x699a('0x15')][_0x699a('0x18')]);}logger[_0x699a('0x15')](_0x699a('0x17'),_0x5eedb0,_0x168a1c[_0x699a('0x15')][_0x699a('0x18')]);return _0x583bc2(_0x168a1c[_0x699a('0x15')][_0x699a('0x18')]);}else{logger[_0x699a('0x11')](_0x699a('0x17'),_0x5eedb0,_0x699a('0x12'));_0x583bc2(_0x168a1c[_0x699a('0x19')]['message']);}})[_0x699a('0x1a')](function(_0x1b14ed){logger[_0x699a('0x15')](_0x699a('0x17'),_0x5eedb0,_0x1b14ed);_0x158782(_0x1b14ed);});});}
\ No newline at end of file
+var _0x4a05=['register','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','Dashboard,\x20%s,\x20%s','request\x20sent','result','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboard.socket'];(function(_0xf9526b,_0x11110a){var _0x146d65=function(_0x555575){while(--_0x555575){_0xf9526b['push'](_0xf9526b['shift']());}};_0x146d65(++_0x11110a);}(_0x4a05,0x192));var _0x54a0=function(_0x3599fc,_0x5455e8){_0x3599fc=_0x3599fc-0x0;var _0x5991c7=_0x4a05[_0x3599fc];return _0x5991c7;};'use strict';var _=require('lodash');var util=require(_0x54a0('0x0'));var moment=require(_0x54a0('0x1'));var BPromise=require(_0x54a0('0x2'));var rs=require(_0x54a0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54a0('0x4'))['db'];var utils=require(_0x54a0('0x5'));var logger=require('../../config/logger')(_0x54a0('0x6'));var config=require('../../config/environment');var jayson=require(_0x54a0('0x7'));var client=jayson[_0x54a0('0x8')][_0x54a0('0x9')]({'port':0x232a});config['redis']=_[_0x54a0('0xa')](config[_0x54a0('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x54a0('0xc'))(new Redis(config['redis']));require(_0x54a0('0xd'))[_0x54a0('0xe')](socket);function respondWithRpcPromise(_0x45adcc,_0xe0a80,_0x5e4ba6){return new BPromise(function(_0x412da7,_0x3d57fd){return client[_0x54a0('0xf')](_0x45adcc,_0x5e4ba6)[_0x54a0('0x10')](function(_0xc25812){logger[_0x54a0('0x11')]('Dashboard,\x20%s,\x20%s',_0xe0a80,'request\x20sent');logger[_0x54a0('0x12')](_0x54a0('0x13'),_0xe0a80,'request\x20sent',JSON[_0x54a0('0x14')](_0xc25812));if(_0xc25812[_0x54a0('0x15')]){if(_0xc25812[_0x54a0('0x15')]['code']===0x1f4){logger[_0x54a0('0x15')]('Dashboard,\x20%s,\x20%s',_0xe0a80,_0xc25812[_0x54a0('0x15')][_0x54a0('0x16')]);return _0x3d57fd(_0xc25812[_0x54a0('0x15')][_0x54a0('0x16')]);}logger[_0x54a0('0x15')](_0x54a0('0x17'),_0xe0a80,_0xc25812['error']['message']);return _0x412da7(_0xc25812['error']['message']);}else{logger['info'](_0x54a0('0x17'),_0xe0a80,_0x54a0('0x18'));_0x412da7(_0xc25812[_0x54a0('0x19')]['message']);}})['catch'](function(_0x5bc499){logger[_0x54a0('0x15')]('Dashboard,\x20%s,\x20%s',_0xe0a80,_0x5bc499);_0x3d57fd(_0x5bc499);});});}
\ No newline at end of file
index 97d2393..c1a41d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ea=['register','dashboard:','./dashboard.events','save','remove','update','emit','removeListener'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x14ea,0xd2));var _0xa14e=function(_0x4e6845,_0x5001f6){_0x4e6845=_0x4e6845-0x0;var _0x3703e2=_0x14ea[_0x4e6845];return _0x3703e2;};'use strict';var DashboardEvents=require(_0xa14e('0x0'));var events=[_0xa14e('0x1'),_0xa14e('0x2'),_0xa14e('0x3')];function createListener(_0x153ee2,_0x2f870f){return function(_0x31441b){_0x2f870f[_0xa14e('0x4')](_0x153ee2,_0x31441b);};}function removeListener(_0x26e986,_0x568d41){return function(){DashboardEvents[_0xa14e('0x5')](_0x26e986,_0x568d41);};}exports[_0xa14e('0x6')]=function(_0x159d1f){for(var _0x5a5631=0x0,_0x290e9c=events['length'];_0x5a5631<_0x290e9c;_0x5a5631++){var _0x19e0a9=events[_0x5a5631];var _0x366428=createListener(_0xa14e('0x7')+_0x19e0a9,_0x159d1f);DashboardEvents['on'](_0x19e0a9,_0x366428);}};
\ No newline at end of file
+var _0x7fff=['./dashboard.events','save','remove','update','emit','removeListener','length','dashboard:'];(function(_0x5c3de7,_0x5eb770){var _0x39fdb7=function(_0x8eb75){while(--_0x8eb75){_0x5c3de7['push'](_0x5c3de7['shift']());}};_0x39fdb7(++_0x5eb770);}(_0x7fff,0x148));var _0xf7ff=function(_0x40f1fe,_0x5e3e67){_0x40f1fe=_0x40f1fe-0x0;var _0x195522=_0x7fff[_0x40f1fe];return _0x195522;};'use strict';var DashboardEvents=require(_0xf7ff('0x0'));var events=[_0xf7ff('0x1'),_0xf7ff('0x2'),_0xf7ff('0x3')];function createListener(_0x4505c5,_0x1ea6ff){return function(_0x383706){_0x1ea6ff[_0xf7ff('0x4')](_0x4505c5,_0x383706);};}function removeListener(_0xb8c87c,_0xb55350){return function(){DashboardEvents[_0xf7ff('0x5')](_0xb8c87c,_0xb55350);};}exports['register']=function(_0x2a48ba){for(var _0x4bbdda=0x0,_0x5a68a5=events[_0xf7ff('0x6')];_0x4bbdda<_0x5a68a5;_0x4bbdda++){var _0x5c7522=events[_0x4bbdda];var _0x183b5f=createListener(_0xf7ff('0x7')+_0x5c7522,_0x2a48ba);DashboardEvents['on'](_0x5c7522,_0x183b5f);}};
\ No newline at end of file
index b7480c7..8764a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea1b=['../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','show','getItems','post','create','/:id/clone','clone','addItem','update','destroy','multer','util','path','express','fs-extra','../../components/auth/service'];(function(_0x454ea3,_0xc74a1c){var _0x5ad18a=function(_0x347b91){while(--_0x347b91){_0x454ea3['push'](_0x454ea3['shift']());}};_0x5ad18a(++_0xc74a1c);}(_0xea1b,0x7e));var _0xbea1=function(_0x250375,_0x568052){_0x250375=_0x250375-0x0;var _0x6f08f5=_0xea1b[_0x250375];return _0x6f08f5;};'use strict';var multer=require(_0xbea1('0x0'));var util=require(_0xbea1('0x1'));var path=require(_0xbea1('0x2'));var timeout=require('connect-timeout');var express=require(_0xbea1('0x3'));var router=express['Router']();var fs_extra=require(_0xbea1('0x4'));var auth=require(_0xbea1('0x5'));var interaction=require(_0xbea1('0x6'));var config=require(_0xbea1('0x7'));var controller=require(_0xbea1('0x8'));router[_0xbea1('0x9')]('/',auth[_0xbea1('0xa')](),controller[_0xbea1('0xb')]);router[_0xbea1('0x9')](_0xbea1('0xc'),auth['isAuthenticated'](),controller[_0xbea1('0xd')]);router[_0xbea1('0x9')]('/:id/items',auth[_0xbea1('0xa')](),controller[_0xbea1('0xe')]);router[_0xbea1('0xf')]('/',auth[_0xbea1('0xa')](),controller[_0xbea1('0x10')]);router[_0xbea1('0xf')](_0xbea1('0x11'),auth[_0xbea1('0xa')](),controller[_0xbea1('0x12')]);router[_0xbea1('0xf')]('/:id/items',auth['isAuthenticated'](),controller[_0xbea1('0x13')]);router['put'](_0xbea1('0xc'),auth[_0xbea1('0xa')](),controller[_0xbea1('0x14')]);router['delete'](_0xbea1('0xc'),auth[_0xbea1('0xa')](),controller[_0xbea1('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xa0b7=['./dashboard.controller','get','isAuthenticated','index','show','/:id/items','post','/:id/clone','clone','addItem','put','/:id','update','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x20f254,_0x5b4c69){var _0x4c28a3=function(_0x5a6094){while(--_0x5a6094){_0x20f254['push'](_0x20f254['shift']());}};_0x4c28a3(++_0x5b4c69);}(_0xa0b7,0x12d));var _0x7a0b=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xa0b7[_0x1e4360];return _0x31e6b4;};'use strict';var multer=require(_0x7a0b('0x0'));var util=require(_0x7a0b('0x1'));var path=require(_0x7a0b('0x2'));var timeout=require('connect-timeout');var express=require(_0x7a0b('0x3'));var router=express['Router']();var fs_extra=require(_0x7a0b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7a0b('0x5'));var config=require(_0x7a0b('0x6'));var controller=require(_0x7a0b('0x7'));router[_0x7a0b('0x8')]('/',auth[_0x7a0b('0x9')](),controller[_0x7a0b('0xa')]);router[_0x7a0b('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x7a0b('0xb')]);router[_0x7a0b('0x8')](_0x7a0b('0xc'),auth[_0x7a0b('0x9')](),controller['getItems']);router[_0x7a0b('0xd')]('/',auth[_0x7a0b('0x9')](),controller['create']);router[_0x7a0b('0xd')](_0x7a0b('0xe'),auth[_0x7a0b('0x9')](),controller[_0x7a0b('0xf')]);router['post'](_0x7a0b('0xc'),auth[_0x7a0b('0x9')](),controller[_0x7a0b('0x10')]);router[_0x7a0b('0x11')](_0x7a0b('0x12'),auth[_0x7a0b('0x9')](),controller[_0x7a0b('0x13')]);router['delete'](_0x7a0b('0x12'),auth[_0x7a0b('0x9')](),controller[_0x7a0b('0x14')]);module[_0x7a0b('0x15')]=router;
\ No newline at end of file
index fc1e736..2aeaaf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['setDataValue','INTEGER','#ffffff','#2196f3','sequelize','lodash','exports','STRING','attrs','stringify'];(function(_0x312f92,_0x3aa0d0){var _0x14c7e=function(_0x2474cb){while(--_0x2474cb){_0x312f92['push'](_0x312f92['shift']());}};_0x14c7e(++_0x3aa0d0);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x53a21f,_0x536f9a){_0x53a21f=_0x53a21f-0x0;var _0x50815d=_0xbd51[_0x53a21f];return _0x50815d;};'use strict';var Sequelize=require(_0x1bd5('0x0'));var squel=require('squel');var _=require(_0x1bd5('0x1'));module[_0x1bd5('0x2')]={'title':{'type':Sequelize[_0x1bd5('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x1bd5('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON['parse'](this['getDataValue'](_0x1bd5('0x4')));}catch(_0x362b24){return[];}},'set':function(_0x43e6b6){try{this['setDataValue'](_0x1bd5('0x4'),JSON[_0x1bd5('0x5')](_0x43e6b6));}catch(_0x19077c){this[_0x1bd5('0x6')](_0x1bd5('0x4'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x1bd5('0x7')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x1bd5('0x7')]},'col':{'type':Sequelize[_0x1bd5('0x7')]},'background':{'type':Sequelize[_0x1bd5('0x3')],'allowNull':![],'defaultValue':_0x1bd5('0x8'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x1bd5('0x3')],'allowNull':![],'defaultValue':_0x1bd5('0x9'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x1bd5('0x7')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x01d9=['INTEGER','#ffffff','#2196f3','sequelize','squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x901d('0x0'));var squel=require(_0x901d('0x1'));var _=require(_0x901d('0x2'));module[_0x901d('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x901d('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x901d('0x5')](_0x901d('0x6')),'get':function(){try{return JSON[_0x901d('0x7')](this[_0x901d('0x8')](_0x901d('0x9')));}catch(_0xb96b86){return[];}},'set':function(_0x4e7842){try{this[_0x901d('0xa')](_0x901d('0x9'),JSON[_0x901d('0xb')](_0x4e7842));}catch(_0x12c39f){this[_0x901d('0xa')](_0x901d('0x9'),JSON[_0x901d('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0x901d('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x901d('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x901d('0xc')]},'col':{'type':Sequelize[_0x901d('0xc')]},'background':{'type':Sequelize[_0x901d('0x4')],'allowNull':![],'defaultValue':_0x901d('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x901d('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x901d('0xc')],'defaultValue':0xc}};
\ No newline at end of file
index bc5fe26..b21a21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd4=['defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','stack','name','send','show','model','DashboardItem','rawAttributes','query','intersection','attributes','fields','includeAll','include','options','find','catch','type','iframe','attrUrl','attrs','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','value','0.00','attrFontSize','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x323d87,_0x4ef3f9){var _0x5e8f74=function(_0x185735){while(--_0x185735){_0x323d87['push'](_0x323d87['shift']());}};_0x5e8f74(++_0x4ef3f9);}(_0x9fd4,0x16c));var _0x49fd=function(_0x57140b,_0xec482d){_0x57140b=_0x57140b-0x0;var _0x31cf97=_0x9fd4[_0x57140b];return _0x31cf97;};'use strict';var emlformat=require(_0x49fd('0x0'));var rimraf=require(_0x49fd('0x1'));var zipdir=require(_0x49fd('0x2'));var jsonpatch=require(_0x49fd('0x3'));var rp=require(_0x49fd('0x4'));var moment=require(_0x49fd('0x5'));var BPromise=require(_0x49fd('0x6'));var Mustache=require(_0x49fd('0x7'));var util=require(_0x49fd('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x49fd('0x9'));var ejs=require(_0x49fd('0xa'));var fs=require('fs');var fs_extra=require(_0x49fd('0xb'));var _=require(_0x49fd('0xc'));var squel=require('squel');var crypto=require(_0x49fd('0xd'));var jsforce=require(_0x49fd('0xe'));var deskjs=require(_0x49fd('0xf'));var toCsv=require(_0x49fd('0x9'));var querystring=require(_0x49fd('0x10'));var Papa=require('papaparse');var Redis=require(_0x49fd('0x11'));var authService=require(_0x49fd('0x12'));var qs=require(_0x49fd('0x13'));var as=require(_0x49fd('0x14'));var hardwareService=require(_0x49fd('0x15'));var logger=require(_0x49fd('0x16'))(_0x49fd('0x17'));var utils=require('../../config/utils');var config=require(_0x49fd('0x18'));var licenseUtil=require(_0x49fd('0x19'));var db=require(_0x49fd('0x1a'))['db'];config[_0x49fd('0x1b')]=_[_0x49fd('0x1c')](config[_0x49fd('0x1b')],{'host':_0x49fd('0x1d'),'port':0x18eb});var socket=require(_0x49fd('0x1e'))(new Redis(config[_0x49fd('0x1b')]));require(_0x49fd('0x1f'))[_0x49fd('0x20')](socket);function respondWithStatusCode(_0x44c18c,_0x46760f){_0x46760f=_0x46760f||0xcc;return function(_0x1a9063){if(_0x1a9063){return _0x44c18c[_0x49fd('0x21')](_0x46760f);}return _0x44c18c[_0x49fd('0x22')](_0x46760f)[_0x49fd('0x23')]();};}function respondWithResult(_0x3ca675,_0x2f8d68){_0x2f8d68=_0x2f8d68||0xc8;return function(_0x12ae8f){if(_0x12ae8f){return _0x3ca675[_0x49fd('0x22')](_0x2f8d68)[_0x49fd('0x24')](_0x12ae8f);}};}function respondWithFilteredResult(_0x320fe5,_0x475eee){return function(_0xb55d24){if(_0xb55d24){var _0x5d568d=typeof _0x475eee['offset']===_0x49fd('0x25')&&typeof _0x475eee[_0x49fd('0x26')]==='undefined';var _0x5c323a=_0xb55d24[_0x49fd('0x27')];var _0x53cbd1=_0x5d568d?0x0:_0x475eee[_0x49fd('0x28')];var _0xbb113b=_0x5d568d?_0xb55d24['count']:_0x475eee[_0x49fd('0x28')]+_0x475eee[_0x49fd('0x26')];var _0x5ae3bc;if(_0xbb113b>=_0x5c323a){_0xbb113b=_0x5c323a;_0x5ae3bc=0xc8;}else{_0x5ae3bc=0xce;}_0x320fe5[_0x49fd('0x22')](_0x5ae3bc);return _0x320fe5[_0x49fd('0x29')](_0x49fd('0x2a'),_0x53cbd1+'-'+_0xbb113b+'/'+_0x5c323a)[_0x49fd('0x24')](_0xb55d24);}return null;};}function patchUpdates(_0x20fa0d){return function(_0x156221){try{jsonpatch['apply'](_0x156221,_0x20fa0d,!![]);}catch(_0x46019d){return BPromise[_0x49fd('0x2b')](_0x46019d);}return _0x156221[_0x49fd('0x2c')]();};}function saveUpdates(_0x4bf811,_0x3fa0c){return function(_0x10de13){if(_0x10de13){return _0x10de13[_0x49fd('0x2d')](_0x4bf811)['then'](function(_0x597161){return _0x597161;});}return null;};}function removeEntity(_0x497469,_0x13c5a8){return function(_0x1c9a0e){if(_0x1c9a0e){return _0x1c9a0e[_0x49fd('0x2e')]()[_0x49fd('0x2f')](function(){_0x497469[_0x49fd('0x22')](0xcc)[_0x49fd('0x23')]();});}};}function handleEntityNotFound(_0x20873e,_0x9afc1c){return function(_0x54c8bb){if(!_0x54c8bb){_0x20873e[_0x49fd('0x21')](0x194);}return _0x54c8bb;};}function handleError(_0x52b35d,_0x32fc19){_0x32fc19=_0x32fc19||0x1f4;return function(_0x89badc){logger['error'](_0x89badc[_0x49fd('0x30')]);if(_0x89badc[_0x49fd('0x31')]){delete _0x89badc[_0x49fd('0x31')];}_0x52b35d[_0x49fd('0x22')](_0x32fc19)[_0x49fd('0x32')](_0x89badc);};}exports[_0x49fd('0x33')]=function(_0x23dcc0,_0x242203){var _0x4ae11b={'raw':![],'where':{'id':_0x23dcc0['params']['id']}},_0x42181b={};_0x42181b[_0x49fd('0x34')]=_['keys'](db[_0x49fd('0x35')][_0x49fd('0x36')]);_0x42181b[_0x49fd('0x37')]=_['keys'](_0x23dcc0['query']);_0x42181b['filters']=_[_0x49fd('0x38')](_0x42181b[_0x49fd('0x34')],_0x42181b['query']);_0x4ae11b[_0x49fd('0x39')]=_['intersection'](_0x42181b['model'],qs[_0x49fd('0x3a')](_0x23dcc0[_0x49fd('0x37')][_0x49fd('0x3a')]));_0x4ae11b[_0x49fd('0x39')]=_0x4ae11b[_0x49fd('0x39')]['length']?_0x4ae11b['attributes']:_0x42181b[_0x49fd('0x34')];if(_0x23dcc0[_0x49fd('0x37')][_0x49fd('0x3b')]){_0x4ae11b[_0x49fd('0x3c')]=[{'all':!![]}];}_0x4ae11b=_['merge']({},_0x4ae11b,_0x23dcc0[_0x49fd('0x3d')]);return db[_0x49fd('0x35')][_0x49fd('0x3e')](_0x4ae11b)[_0x49fd('0x2f')](handleEntityNotFound(_0x242203,null))[_0x49fd('0x2f')](respondWithResult(_0x242203,null))[_0x49fd('0x3f')](handleError(_0x242203,null));};exports[_0x49fd('0x2e')]=function(_0x25b9c2,_0x98571b){return db[_0x49fd('0x35')][_0x49fd('0x3e')]({'where':{'id':_0x25b9c2['params']['id']}})[_0x49fd('0x2f')](handleEntityNotFound(_0x98571b,null))[_0x49fd('0x2f')](removeEntity(_0x98571b,null))[_0x49fd('0x3f')](handleError(_0x98571b,null));};function widgetAttributes(_0xfea54d){try{switch(_0xfea54d[_0x49fd('0x40')]){case _0x49fd('0x41'):return[{'name':_0x49fd('0x42'),'value':_0xfea54d[_0x49fd('0x42')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x0]?_0xfea54d[_0x49fd('0x43')][0x0]['value']:undefined)||_0x49fd('0x44')}];case _0x49fd('0x45'):return[{'name':'attrPath','value':_0xfea54d[_0x49fd('0x46')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x0]?_0xfea54d[_0x49fd('0x43')][0x0]['value']:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0xfea54d[_0x49fd('0x47')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x0]?_0xfea54d[_0x49fd('0x43')][0x0]['value']:undefined)||_0x49fd('0x48')},{'name':_0x49fd('0x49'),'value':_0xfea54d[_0x49fd('0x49')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x1]?_0xfea54d[_0x49fd('0x43')][0x1][_0x49fd('0x4a')]:undefined)||_0x49fd('0x4b')},{'name':'attrFontSize','value':_0xfea54d[_0x49fd('0x4c')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x2]?_0xfea54d[_0x49fd('0x43')][0x2][_0x49fd('0x4a')]:undefined)||0xc}];case'counter':return[{'name':_0x49fd('0x4d'),'value':_0xfea54d['attrMetric']||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x0]?_0xfea54d[_0x49fd('0x43')][0x0][_0x49fd('0x4a')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0xfea54d[_0x49fd('0x4e')]||(_0xfea54d['attrs']&&_0xfea54d[_0x49fd('0x43')][0x1]?_0xfea54d[_0x49fd('0x43')][0x1][_0x49fd('0x4a')]:undefined)||[]},{'name':_0x49fd('0x4c'),'value':_0xfea54d['attrFontSize']||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x2]?_0xfea54d[_0x49fd('0x43')][0x2][_0x49fd('0x4a')]:undefined)||0x14},{'name':_0x49fd('0x4f'),'value':_0xfea54d[_0x49fd('0x4f')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x3]?_0xfea54d[_0x49fd('0x43')][0x3][_0x49fd('0x4a')]:undefined)||_0x49fd('0x50')},{'name':_0x49fd('0x51'),'value':_0xfea54d[_0x49fd('0x51')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x4]?_0xfea54d['attrs'][0x4][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x52'),'value':_0xfea54d[_0x49fd('0x52')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x5]?_0xfea54d[_0x49fd('0x43')][0x5][_0x49fd('0x4a')]:undefined)||''},{'name':'attrSmsAccounts','value':_0xfea54d[_0x49fd('0x53')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x6]?_0xfea54d[_0x49fd('0x43')][0x6][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x54'),'value':_0xfea54d[_0x49fd('0x54')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x7]?_0xfea54d[_0x49fd('0x43')][0x7][_0x49fd('0x4a')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0xfea54d[_0x49fd('0x55')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x8]?_0xfea54d[_0x49fd('0x43')][0x8][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x56'),'value':_0xfea54d['attrChatWebsites']||(_0xfea54d['attrs']&&_0xfea54d[_0x49fd('0x43')][0x9]?_0xfea54d[_0x49fd('0x43')][0x9][_0x49fd('0x4a')]:undefined)||''}];case'multibar-chart':case _0x49fd('0x57'):return[{'name':_0x49fd('0x58'),'value':_0xfea54d['attrSerie1']||(_0xfea54d['attrs']&&_0xfea54d['attrs'][0x0]?_0xfea54d[_0x49fd('0x43')][0x0]['value']:undefined)||'total'},{'name':'attrSerie2','value':_0xfea54d[_0x49fd('0x59')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x1]?_0xfea54d[_0x49fd('0x43')][0x1][_0x49fd('0x4a')]:undefined)||null},{'name':_0x49fd('0x5a'),'value':_0xfea54d[_0x49fd('0x5a')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x2]?_0xfea54d[_0x49fd('0x43')][0x2]['value']:undefined)||null},{'name':_0x49fd('0x4e'),'value':_0xfea54d[_0x49fd('0x4e')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x3]?_0xfea54d[_0x49fd('0x43')][0x3][_0x49fd('0x4a')]:undefined)||[]},{'name':'attrChannel','value':_0xfea54d[_0x49fd('0x4f')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x4]?_0xfea54d['attrs'][0x4][_0x49fd('0x4a')]:undefined)||'voice'},{'name':_0x49fd('0x51'),'value':_0xfea54d['attrEmailAccounts']||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x5]?_0xfea54d[_0x49fd('0x43')][0x5][_0x49fd('0x4a')]:undefined)||''},{'name':'attrFaxAccounts','value':_0xfea54d[_0x49fd('0x52')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x6]?_0xfea54d[_0x49fd('0x43')][0x6][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x53'),'value':_0xfea54d[_0x49fd('0x53')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x7]?_0xfea54d[_0x49fd('0x43')][0x7][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x54'),'value':_0xfea54d['attrOpenchannelAccounts']||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x8]?_0xfea54d[_0x49fd('0x43')][0x8][_0x49fd('0x4a')]:undefined)||''},{'name':_0x49fd('0x55'),'value':_0xfea54d[_0x49fd('0x55')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x9]?_0xfea54d[_0x49fd('0x43')][0x9]['value']:undefined)||''},{'name':_0x49fd('0x56'),'value':_0xfea54d[_0x49fd('0x56')]||(_0xfea54d['attrs']&&_0xfea54d[_0x49fd('0x43')][0xa]?_0xfea54d[_0x49fd('0x43')][0xa]['value']:undefined)||''}];case'web-report':return[{'name':'attrReport','type':_0xfea54d[_0x49fd('0x5b')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x0]?_0xfea54d[_0x49fd('0x43')][0x0][_0x49fd('0x40')]:undefined)||null,'value':_0xfea54d['attrReport']||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d['attrs'][0x0]?_0xfea54d[_0x49fd('0x43')][0x0]['value']:undefined)||null},{'name':_0x49fd('0x5c'),'value':_0xfea54d[_0x49fd('0x5c')]||(_0xfea54d[_0x49fd('0x43')]&&_0xfea54d[_0x49fd('0x43')][0x1]?_0xfea54d['attrs'][0x1][_0x49fd('0x4a')]:undefined)||0x0}];default:return[];}}catch(_0x4feef4){logger['error'](_0x49fd('0x5d'),JSON[_0x49fd('0x5e')](_0x4feef4));return[];}}exports[_0x49fd('0x5f')]=function(_0x58215b,_0x264fe9){if(_0x58215b[_0x49fd('0x60')]){_0x58215b[_0x49fd('0x60')][_0x49fd('0x43')]=widgetAttributes(_0x58215b[_0x49fd('0x60')]);}return db[_0x49fd('0x35')]['create'](_0x58215b['body'],{})[_0x49fd('0x2f')](respondWithResult(_0x264fe9,0xc9))[_0x49fd('0x3f')](handleError(_0x264fe9,null));};exports[_0x49fd('0x2d')]=function(_0x388aee,_0x27806a){if(_0x388aee[_0x49fd('0x60')]['id']){delete _0x388aee[_0x49fd('0x60')]['id'];}_0x388aee[_0x49fd('0x60')][_0x49fd('0x43')]=widgetAttributes(_0x388aee[_0x49fd('0x60')]);return db[_0x49fd('0x35')][_0x49fd('0x3e')]({'where':{'id':_0x388aee[_0x49fd('0x61')]['id']}})['then'](handleEntityNotFound(_0x27806a,null))[_0x49fd('0x2f')](saveUpdates(_0x388aee[_0x49fd('0x60')],null))[_0x49fd('0x2f')](respondWithResult(_0x27806a,null))['catch'](handleError(_0x27806a,null));};
\ No newline at end of file
+var _0xfd87=['attrs','https://','custom','attrPath','attrHourFormat','value','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrWhatsappAccounts','web-report','attrReport','reportType','attrRefresh','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','destroy','error','stack','show','model','keys','DashboardItem','rawAttributes','query','intersection','attributes','fields','length','merge','options','find','then','catch','params','type','attrUrl'];(function(_0x457845,_0x4310a8){var _0x40e5a0=function(_0x14acf2){while(--_0x14acf2){_0x457845['push'](_0x457845['shift']());}};_0x40e5a0(++_0x4310a8);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7fd8('0x0'));var rimraf=require(_0x7fd8('0x1'));var zipdir=require(_0x7fd8('0x2'));var jsonpatch=require(_0x7fd8('0x3'));var rp=require(_0x7fd8('0x4'));var moment=require(_0x7fd8('0x5'));var BPromise=require(_0x7fd8('0x6'));var Mustache=require(_0x7fd8('0x7'));var util=require(_0x7fd8('0x8'));var path=require(_0x7fd8('0x9'));var sox=require(_0x7fd8('0xa'));var csv=require('to-csv');var ejs=require(_0x7fd8('0xb'));var fs=require('fs');var fs_extra=require(_0x7fd8('0xc'));var _=require('lodash');var squel=require(_0x7fd8('0xd'));var crypto=require(_0x7fd8('0xe'));var jsforce=require(_0x7fd8('0xf'));var deskjs=require(_0x7fd8('0x10'));var toCsv=require(_0x7fd8('0x11'));var querystring=require('querystring');var Papa=require(_0x7fd8('0x12'));var Redis=require(_0x7fd8('0x13'));var authService=require(_0x7fd8('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7fd8('0x15'))('api');var utils=require(_0x7fd8('0x16'));var config=require(_0x7fd8('0x17'));var licenseUtil=require(_0x7fd8('0x18'));var db=require('../../mysqldb')['db'];config[_0x7fd8('0x19')]=_[_0x7fd8('0x1a')](config[_0x7fd8('0x19')],{'host':_0x7fd8('0x1b'),'port':0x18eb});var socket=require(_0x7fd8('0x1c'))(new Redis(config['redis']));require(_0x7fd8('0x1d'))[_0x7fd8('0x1e')](socket);function respondWithStatusCode(_0x1d481a,_0x1131ef){_0x1131ef=_0x1131ef||0xcc;return function(_0x250a02){if(_0x250a02){return _0x1d481a[_0x7fd8('0x1f')](_0x1131ef);}return _0x1d481a[_0x7fd8('0x20')](_0x1131ef)[_0x7fd8('0x21')]();};}function respondWithResult(_0x2a8818,_0x1461ed){_0x1461ed=_0x1461ed||0xc8;return function(_0x416158){if(_0x416158){return _0x2a8818['status'](_0x1461ed)['json'](_0x416158);}};}function respondWithFilteredResult(_0x5ca7f6,_0xab57f7){return function(_0xce23dc){if(_0xce23dc){var _0x48734c=typeof _0xab57f7[_0x7fd8('0x22')]===_0x7fd8('0x23')&&typeof _0xab57f7[_0x7fd8('0x24')]===_0x7fd8('0x23');var _0x3ab724=_0xce23dc[_0x7fd8('0x25')];var _0x2edf31=_0x48734c?0x0:_0xab57f7[_0x7fd8('0x22')];var _0x4b5d0a=_0x48734c?_0xce23dc[_0x7fd8('0x25')]:_0xab57f7[_0x7fd8('0x22')]+_0xab57f7[_0x7fd8('0x24')];var _0x13417d;if(_0x4b5d0a>=_0x3ab724){_0x4b5d0a=_0x3ab724;_0x13417d=0xc8;}else{_0x13417d=0xce;}_0x5ca7f6[_0x7fd8('0x20')](_0x13417d);return _0x5ca7f6[_0x7fd8('0x26')]('Content-Range',_0x2edf31+'-'+_0x4b5d0a+'/'+_0x3ab724)[_0x7fd8('0x27')](_0xce23dc);}return null;};}function patchUpdates(_0x1d26d4){return function(_0x34dadf){try{jsonpatch[_0x7fd8('0x28')](_0x34dadf,_0x1d26d4,!![]);}catch(_0x52b71a){return BPromise[_0x7fd8('0x29')](_0x52b71a);}return _0x34dadf[_0x7fd8('0x2a')]();};}function saveUpdates(_0x2e7520,_0x33ab3d){return function(_0x561dd1){if(_0x561dd1){return _0x561dd1['update'](_0x2e7520)['then'](function(_0x3650cb){return _0x3650cb;});}return null;};}function removeEntity(_0x6cccad,_0xa273a7){return function(_0xd8168f){if(_0xd8168f){return _0xd8168f[_0x7fd8('0x2b')]()['then'](function(){_0x6cccad[_0x7fd8('0x20')](0xcc)[_0x7fd8('0x21')]();});}};}function handleEntityNotFound(_0xda5f2a,_0x40b79b){return function(_0xa7da6b){if(!_0xa7da6b){_0xda5f2a['sendStatus'](0x194);}return _0xa7da6b;};}function handleError(_0x544179,_0x22a845){_0x22a845=_0x22a845||0x1f4;return function(_0x2bd721){logger[_0x7fd8('0x2c')](_0x2bd721[_0x7fd8('0x2d')]);if(_0x2bd721['name']){delete _0x2bd721['name'];}_0x544179[_0x7fd8('0x20')](_0x22a845)['send'](_0x2bd721);};}exports[_0x7fd8('0x2e')]=function(_0x235394,_0x3df0a2){var _0x57c434={'raw':![],'where':{'id':_0x235394['params']['id']}},_0x28e28e={};_0x28e28e[_0x7fd8('0x2f')]=_[_0x7fd8('0x30')](db[_0x7fd8('0x31')][_0x7fd8('0x32')]);_0x28e28e[_0x7fd8('0x33')]=_[_0x7fd8('0x30')](_0x235394[_0x7fd8('0x33')]);_0x28e28e['filters']=_[_0x7fd8('0x34')](_0x28e28e[_0x7fd8('0x2f')],_0x28e28e[_0x7fd8('0x33')]);_0x57c434[_0x7fd8('0x35')]=_[_0x7fd8('0x34')](_0x28e28e[_0x7fd8('0x2f')],qs[_0x7fd8('0x36')](_0x235394[_0x7fd8('0x33')]['fields']));_0x57c434['attributes']=_0x57c434[_0x7fd8('0x35')][_0x7fd8('0x37')]?_0x57c434[_0x7fd8('0x35')]:_0x28e28e['model'];if(_0x235394[_0x7fd8('0x33')]['includeAll']){_0x57c434['include']=[{'all':!![]}];}_0x57c434=_[_0x7fd8('0x38')]({},_0x57c434,_0x235394[_0x7fd8('0x39')]);return db[_0x7fd8('0x31')][_0x7fd8('0x3a')](_0x57c434)[_0x7fd8('0x3b')](handleEntityNotFound(_0x3df0a2,null))[_0x7fd8('0x3b')](respondWithResult(_0x3df0a2,null))[_0x7fd8('0x3c')](handleError(_0x3df0a2,null));};exports[_0x7fd8('0x2b')]=function(_0x514dff,_0x3766a0){return db['DashboardItem']['find']({'where':{'id':_0x514dff[_0x7fd8('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3766a0,null))['then'](removeEntity(_0x3766a0,null))['catch'](handleError(_0x3766a0,null));};function widgetAttributes(_0x6c5e52){try{switch(_0x6c5e52[_0x7fd8('0x3e')]){case'iframe':return[{'name':_0x7fd8('0x3f'),'value':_0x6c5e52[_0x7fd8('0x3f')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52['attrs'][0x0]?_0x6c5e52['attrs'][0x0]['value']:undefined)||_0x7fd8('0x41')}];case _0x7fd8('0x42'):return[{'name':_0x7fd8('0x43'),'value':_0x6c5e52[_0x7fd8('0x43')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x0]?_0x6c5e52[_0x7fd8('0x40')][0x0]['value']:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x6c5e52[_0x7fd8('0x44')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x0]?_0x6c5e52['attrs'][0x0][_0x7fd8('0x45')]:undefined)||_0x7fd8('0x46')},{'name':_0x7fd8('0x47'),'value':_0x6c5e52[_0x7fd8('0x47')]||(_0x6c5e52['attrs']&&_0x6c5e52[_0x7fd8('0x40')][0x1]?_0x6c5e52[_0x7fd8('0x40')][0x1]['value']:undefined)||_0x7fd8('0x48')},{'name':'attrFontSize','value':_0x6c5e52[_0x7fd8('0x49')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x2]?_0x6c5e52[_0x7fd8('0x40')][0x2]['value']:undefined)||0xc}];case _0x7fd8('0x4a'):return[{'name':_0x7fd8('0x4b'),'value':_0x6c5e52[_0x7fd8('0x4b')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x0]?_0x6c5e52[_0x7fd8('0x40')][0x0]['value']:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x6c5e52[_0x7fd8('0x4c')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52['attrs'][0x1]?_0x6c5e52['attrs'][0x1][_0x7fd8('0x45')]:undefined)||[]},{'name':_0x7fd8('0x49'),'value':_0x6c5e52['attrFontSize']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x2]?_0x6c5e52[_0x7fd8('0x40')][0x2]['value']:undefined)||0x14},{'name':_0x7fd8('0x4d'),'value':_0x6c5e52[_0x7fd8('0x4d')]||(_0x6c5e52['attrs']&&_0x6c5e52[_0x7fd8('0x40')][0x3]?_0x6c5e52['attrs'][0x3][_0x7fd8('0x45')]:undefined)||_0x7fd8('0x4e')},{'name':_0x7fd8('0x4f'),'value':_0x6c5e52[_0x7fd8('0x4f')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x4]?_0x6c5e52[_0x7fd8('0x40')][0x4][_0x7fd8('0x45')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x6c5e52[_0x7fd8('0x50')]||(_0x6c5e52['attrs']&&_0x6c5e52[_0x7fd8('0x40')][0x5]?_0x6c5e52[_0x7fd8('0x40')][0x5]['value']:undefined)||''},{'name':_0x7fd8('0x51'),'value':_0x6c5e52[_0x7fd8('0x51')]||(_0x6c5e52['attrs']&&_0x6c5e52['attrs'][0x6]?_0x6c5e52['attrs'][0x6][_0x7fd8('0x45')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x6c5e52[_0x7fd8('0x52')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x7]?_0x6c5e52[_0x7fd8('0x40')][0x7][_0x7fd8('0x45')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x6c5e52['attrWhatsappAccounts']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x8]?_0x6c5e52[_0x7fd8('0x40')][0x8][_0x7fd8('0x45')]:undefined)||''},{'name':'attrChatWebsites','value':_0x6c5e52[_0x7fd8('0x53')]||(_0x6c5e52['attrs']&&_0x6c5e52[_0x7fd8('0x40')][0x9]?_0x6c5e52[_0x7fd8('0x40')][0x9][_0x7fd8('0x45')]:undefined)||''}];case _0x7fd8('0x54'):case _0x7fd8('0x55'):return[{'name':_0x7fd8('0x56'),'value':_0x6c5e52[_0x7fd8('0x56')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x0]?_0x6c5e52[_0x7fd8('0x40')][0x0][_0x7fd8('0x45')]:undefined)||'total'},{'name':_0x7fd8('0x57'),'value':_0x6c5e52[_0x7fd8('0x57')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x1]?_0x6c5e52[_0x7fd8('0x40')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x6c5e52['attrSerie3']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x2]?_0x6c5e52[_0x7fd8('0x40')][0x2][_0x7fd8('0x45')]:undefined)||null},{'name':_0x7fd8('0x4c'),'value':_0x6c5e52[_0x7fd8('0x4c')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52['attrs'][0x3]?_0x6c5e52['attrs'][0x3][_0x7fd8('0x45')]:undefined)||[]},{'name':'attrChannel','value':_0x6c5e52[_0x7fd8('0x4d')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52['attrs'][0x4]?_0x6c5e52[_0x7fd8('0x40')][0x4][_0x7fd8('0x45')]:undefined)||'voice'},{'name':_0x7fd8('0x4f'),'value':_0x6c5e52[_0x7fd8('0x4f')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x5]?_0x6c5e52[_0x7fd8('0x40')][0x5][_0x7fd8('0x45')]:undefined)||''},{'name':_0x7fd8('0x50'),'value':_0x6c5e52['attrFaxAccounts']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x6]?_0x6c5e52[_0x7fd8('0x40')][0x6][_0x7fd8('0x45')]:undefined)||''},{'name':_0x7fd8('0x51'),'value':_0x6c5e52['attrSmsAccounts']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x7]?_0x6c5e52[_0x7fd8('0x40')][0x7]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x6c5e52[_0x7fd8('0x52')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x8]?_0x6c5e52[_0x7fd8('0x40')][0x8][_0x7fd8('0x45')]:undefined)||''},{'name':_0x7fd8('0x58'),'value':_0x6c5e52['attrWhatsappAccounts']||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x9]?_0x6c5e52[_0x7fd8('0x40')][0x9][_0x7fd8('0x45')]:undefined)||''},{'name':'attrChatWebsites','value':_0x6c5e52[_0x7fd8('0x53')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0xa]?_0x6c5e52[_0x7fd8('0x40')][0xa][_0x7fd8('0x45')]:undefined)||''}];case _0x7fd8('0x59'):return[{'name':_0x7fd8('0x5a'),'type':_0x6c5e52[_0x7fd8('0x5b')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x0]?_0x6c5e52[_0x7fd8('0x40')][0x0][_0x7fd8('0x3e')]:undefined)||null,'value':_0x6c5e52[_0x7fd8('0x5a')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52['attrs'][0x0]?_0x6c5e52['attrs'][0x0][_0x7fd8('0x45')]:undefined)||null},{'name':_0x7fd8('0x5c'),'value':_0x6c5e52[_0x7fd8('0x5c')]||(_0x6c5e52[_0x7fd8('0x40')]&&_0x6c5e52[_0x7fd8('0x40')][0x1]?_0x6c5e52['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x16614a){logger[_0x7fd8('0x2c')]('widgetAttributes:\x20%s',JSON['stringify'](_0x16614a));return[];}}exports[_0x7fd8('0x5d')]=function(_0x124b53,_0xbabad2){if(_0x124b53[_0x7fd8('0x5e')]){_0x124b53[_0x7fd8('0x5e')][_0x7fd8('0x40')]=widgetAttributes(_0x124b53['body']);}return db['DashboardItem'][_0x7fd8('0x5d')](_0x124b53[_0x7fd8('0x5e')],{})['then'](respondWithResult(_0xbabad2,0xc9))[_0x7fd8('0x3c')](handleError(_0xbabad2,null));};exports[_0x7fd8('0x5f')]=function(_0x49d283,_0x163038){if(_0x49d283['body']['id']){delete _0x49d283[_0x7fd8('0x5e')]['id'];}_0x49d283['body'][_0x7fd8('0x40')]=widgetAttributes(_0x49d283['body']);return db['DashboardItem'][_0x7fd8('0x3a')]({'where':{'id':_0x49d283[_0x7fd8('0x3d')]['id']}})['then'](handleEntityNotFound(_0x163038,null))[_0x7fd8('0x3b')](saveUpdates(_0x49d283['body'],null))[_0x7fd8('0x3b')](respondWithResult(_0x163038,null))[_0x7fd8('0x3c')](handleError(_0x163038,null));};
\ No newline at end of file
index 4ccc994..365fbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3a4=['DashboardItem','setMaxListeners','update','remove','emit','hook','events','../../mysqldb'];(function(_0x118e16,_0x2a6f97){var _0x9f7b89=function(_0xd8909a){while(--_0xd8909a){_0x118e16['push'](_0x118e16['shift']());}};_0x9f7b89(++_0x2a6f97);}(_0xa3a4,0x6e));var _0x4a3a=function(_0x8efd06,_0x58b5c4){_0x8efd06=_0x8efd06-0x0;var _0x5cdb5f=_0xa3a4[_0x8efd06];return _0x5cdb5f;};'use strict';var EventEmitter=require(_0x4a3a('0x0'));var DashboardItem=require(_0x4a3a('0x1'))['db'][_0x4a3a('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x4a3a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4a3a('0x4'),'afterDestroy':_0x4a3a('0x5')};function emitEvent(_0x465d18){return function(_0x27b07f,_0x5446e7,_0xcce8e0){DashboardItemEvents[_0x4a3a('0x6')](_0x465d18+':'+_0x27b07f['id'],_0x27b07f);DashboardItemEvents['emit'](_0x465d18,_0x27b07f);_0xcce8e0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x4a3a('0x7')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0x5215=['update','emit','save'];(function(_0x5deb0a,_0xc192bb){var _0x33d0ce=function(_0x3f1aa8){while(--_0x3f1aa8){_0x5deb0a['push'](_0x5deb0a['shift']());}};_0x33d0ce(++_0xc192bb);}(_0x5215,0x1c7));var _0x5521=function(_0x3c520e,_0x21d876){_0x3c520e=_0x3c520e-0x0;var _0x221a6d=_0x5215[_0x3c520e];return _0x221a6d;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5521('0x0'),'afterUpdate':_0x5521('0x1'),'afterDestroy':'remove'};function emitEvent(_0x4073a2){return function(_0x453038,_0x35be9f,_0x569282){DashboardItemEvents[_0x5521('0x2')](_0x4073a2+':'+_0x453038['id'],_0x453038);DashboardItemEvents[_0x5521('0x2')](_0x4073a2,_0x453038);_0x569282(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index b8aa86c..186bb17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf83f=['bluebird','request-promise','path','../../config/environment','exports','define','DashboardItem','dashboard_items','lodash','util','api','moment'];(function(_0x3e478c,_0x152670){var _0x29ef89=function(_0x3d0d77){while(--_0x3d0d77){_0x3e478c['push'](_0x3e478c['shift']());}};_0x29ef89(++_0x152670);}(_0xf83f,0xf8));var _0xff83=function(_0x1fbac9,_0x125a34){_0x1fbac9=_0x1fbac9-0x0;var _0x11858f=_0xf83f[_0x1fbac9];return _0x11858f;};'use strict';var _=require(_0xff83('0x0'));var util=require(_0xff83('0x1'));var logger=require('../../config/logger')(_0xff83('0x2'));var moment=require(_0xff83('0x3'));var BPromise=require(_0xff83('0x4'));var rp=require(_0xff83('0x5'));var fs=require('fs');var path=require(_0xff83('0x6'));var rimraf=require('rimraf');var config=require(_0xff83('0x7'));var attributes=require('./dashboardItem.attributes');module[_0xff83('0x8')]=function(_0x5a24ba,_0x22a1b6){return _0x5a24ba[_0xff83('0x9')](_0xff83('0xa'),attributes,{'tableName':_0xff83('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc556=['exports','define','dashboard_items','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes'];(function(_0x488112,_0x326482){var _0x40925c=function(_0x96b8f2){while(--_0x96b8f2){_0x488112['push'](_0x488112['shift']());}};_0x40925c(++_0x326482);}(_0xc556,0xc3));var _0x6c55=function(_0x55749e,_0x19995c){_0x55749e=_0x55749e-0x0;var _0x17b6f9=_0xc556[_0x55749e];return _0x17b6f9;};'use strict';var _=require(_0x6c55('0x0'));var util=require('util');var logger=require(_0x6c55('0x1'))(_0x6c55('0x2'));var moment=require(_0x6c55('0x3'));var BPromise=require('bluebird');var rp=require(_0x6c55('0x4'));var fs=require('fs');var path=require(_0x6c55('0x5'));var rimraf=require(_0x6c55('0x6'));var config=require(_0x6c55('0x7'));var attributes=require(_0x6c55('0x8'));module[_0x6c55('0x9')]=function(_0x2a7e8e,_0x4c7ac4){return _0x2a7e8e[_0x6c55('0xa')]('DashboardItem',attributes,{'tableName':_0x6c55('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd38df0..d02a04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24cd=['localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','DashboardItem,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','defaults','redis'];(function(_0x4c4762,_0x403415){var _0x16ea8e=function(_0x31c3cb){while(--_0x31c3cb){_0x4c4762['push'](_0x4c4762['shift']());}};_0x16ea8e(++_0x403415);}(_0x24cd,0x13a));var _0xd24c=function(_0xda3338,_0x58d4e0){_0xda3338=_0xda3338-0x0;var _0x10f45c=_0x24cd[_0xda3338];return _0x10f45c;};'use strict';var _=require(_0xd24c('0x0'));var util=require('util');var moment=require(_0xd24c('0x1'));var BPromise=require('bluebird');var rs=require(_0xd24c('0x2'));var fs=require('fs');var Redis=require(_0xd24c('0x3'));var db=require(_0xd24c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd24c('0x5'))(_0xd24c('0x6'));var config=require(_0xd24c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd24c('0x8')]['http']({'port':0x232a});config['redis']=_[_0xd24c('0x9')](config[_0xd24c('0xa')],{'host':_0xd24c('0xb'),'port':0x18eb});var socket=require(_0xd24c('0xc'))(new Redis(config[_0xd24c('0xa')]));require('./dashboardItem.socket')[_0xd24c('0xd')](socket);function respondWithRpcPromise(_0x5ea673,_0x45a054,_0x4419c7){return new BPromise(function(_0x2c9e59,_0x3391d8){return client[_0xd24c('0xe')](_0x5ea673,_0x4419c7)[_0xd24c('0xf')](function(_0xf5b30d){logger[_0xd24c('0x10')]('DashboardItem,\x20%s,\x20%s',_0x45a054,_0xd24c('0x11'));logger[_0xd24c('0x12')](_0xd24c('0x13'),_0x45a054,_0xd24c('0x11'),JSON[_0xd24c('0x14')](_0xf5b30d));if(_0xf5b30d[_0xd24c('0x15')]){if(_0xf5b30d[_0xd24c('0x15')]['code']===0x1f4){logger[_0xd24c('0x15')](_0xd24c('0x16'),_0x45a054,_0xf5b30d['error'][_0xd24c('0x17')]);return _0x3391d8(_0xf5b30d[_0xd24c('0x15')][_0xd24c('0x17')]);}logger[_0xd24c('0x15')]('DashboardItem,\x20%s,\x20%s',_0x45a054,_0xf5b30d['error'][_0xd24c('0x17')]);return _0x2c9e59(_0xf5b30d[_0xd24c('0x15')]['message']);}else{logger[_0xd24c('0x10')](_0xd24c('0x16'),_0x45a054,_0xd24c('0x11'));_0x2c9e59(_0xf5b30d[_0xd24c('0x18')][_0xd24c('0x17')]);}})['catch'](function(_0x5ea2da){logger[_0xd24c('0x15')](_0xd24c('0x16'),_0x45a054,_0x5ea2da);_0x3391d8(_0x5ea2da);});});}
\ No newline at end of file
+var _0x6609=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment'];(function(_0x568cf0,_0x1a44cb){var _0x360f81=function(_0x414953){while(--_0x414953){_0x568cf0['push'](_0x568cf0['shift']());}};_0x360f81(++_0x1a44cb);}(_0x6609,0xa6));var _0x9660=function(_0x4496d0,_0x5bf4dc){_0x4496d0=_0x4496d0-0x0;var _0x42a53f=_0x6609[_0x4496d0];return _0x42a53f;};'use strict';var _=require(_0x9660('0x0'));var util=require('util');var moment=require(_0x9660('0x1'));var BPromise=require(_0x9660('0x2'));var rs=require(_0x9660('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9660('0x4'));var logger=require(_0x9660('0x5'))(_0x9660('0x6'));var config=require(_0x9660('0x7'));var jayson=require(_0x9660('0x8'));var client=jayson[_0x9660('0x9')]['http']({'port':0x232a});config[_0x9660('0xa')]=_[_0x9660('0xb')](config[_0x9660('0xa')],{'host':_0x9660('0xc'),'port':0x18eb});var socket=require(_0x9660('0xd'))(new Redis(config[_0x9660('0xa')]));require('./dashboardItem.socket')[_0x9660('0xe')](socket);function respondWithRpcPromise(_0x3f50f5,_0x26b525,_0x4eceb8){return new BPromise(function(_0x37bf40,_0x43aa8c){return client[_0x9660('0xf')](_0x3f50f5,_0x4eceb8)[_0x9660('0x10')](function(_0x2f3ba1){logger[_0x9660('0x11')](_0x9660('0x12'),_0x26b525,_0x9660('0x13'));logger[_0x9660('0x14')](_0x9660('0x15'),_0x26b525,'request\x20sent',JSON[_0x9660('0x16')](_0x2f3ba1));if(_0x2f3ba1['error']){if(_0x2f3ba1['error'][_0x9660('0x17')]===0x1f4){logger[_0x9660('0x18')]('DashboardItem,\x20%s,\x20%s',_0x26b525,_0x2f3ba1[_0x9660('0x18')]['message']);return _0x43aa8c(_0x2f3ba1['error']['message']);}logger[_0x9660('0x18')]('DashboardItem,\x20%s,\x20%s',_0x26b525,_0x2f3ba1[_0x9660('0x18')]['message']);return _0x37bf40(_0x2f3ba1['error'][_0x9660('0x19')]);}else{logger[_0x9660('0x11')]('DashboardItem,\x20%s,\x20%s',_0x26b525,_0x9660('0x13'));_0x37bf40(_0x2f3ba1[_0x9660('0x1a')][_0x9660('0x19')]);}})[_0x9660('0x1b')](function(_0x58afd8){logger[_0x9660('0x18')]('DashboardItem,\x20%s,\x20%s',_0x26b525,_0x58afd8);_0x43aa8c(_0x58afd8);});});}
\ No newline at end of file
index e7ddf23..b33942e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['emit','removeListener','length','dashboardItem:','./dashboardItem.events','save','remove'];(function(_0xea6018,_0x4cf082){var _0x57b54d=function(_0x49099a){while(--_0x49099a){_0xea6018['push'](_0xea6018['shift']());}};_0x57b54d(++_0x4cf082);}(_0x919e,0x1d2));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var DashboardItemEvents=require(_0xe919('0x0'));var events=[_0xe919('0x1'),_0xe919('0x2'),'update'];function createListener(_0xc5756e,_0x5c3b4e){return function(_0x4d6ab5){_0x5c3b4e[_0xe919('0x3')](_0xc5756e,_0x4d6ab5);};}function removeListener(_0x1e77e1,_0x336711){return function(){DashboardItemEvents[_0xe919('0x4')](_0x1e77e1,_0x336711);};}exports['register']=function(_0x4b8b6a){for(var _0x3c4d1e=0x0,_0x4963f=events[_0xe919('0x5')];_0x3c4d1e<_0x4963f;_0x3c4d1e++){var _0x285b13=events[_0x3c4d1e];var _0x8e987d=createListener(_0xe919('0x6')+_0x285b13,_0x4b8b6a);DashboardItemEvents['on'](_0x285b13,_0x8e987d);}};
\ No newline at end of file
+var _0xf131=['update','removeListener','length','dashboardItem:','./dashboardItem.events','save','remove'];(function(_0x4af9c7,_0x22a455){var _0x3805ee=function(_0xfd7416){while(--_0xfd7416){_0x4af9c7['push'](_0x4af9c7['shift']());}};_0x3805ee(++_0x22a455);}(_0xf131,0xa5));var _0x1f13=function(_0x127204,_0xbd5e04){_0x127204=_0x127204-0x0;var _0x5d4d3a=_0xf131[_0x127204];return _0x5d4d3a;};'use strict';var DashboardItemEvents=require(_0x1f13('0x0'));var events=[_0x1f13('0x1'),_0x1f13('0x2'),_0x1f13('0x3')];function createListener(_0x2a849f,_0x47c8ab){return function(_0x5c367d){_0x47c8ab['emit'](_0x2a849f,_0x5c367d);};}function removeListener(_0x19efc8,_0x20563e){return function(){DashboardItemEvents[_0x1f13('0x4')](_0x19efc8,_0x20563e);};}exports['register']=function(_0x4a2779){for(var _0x4f39b0=0x0,_0x2608c=events[_0x1f13('0x5')];_0x4f39b0<_0x2608c;_0x4f39b0++){var _0x29b68d=events[_0x4f39b0];var _0x1c5afd=createListener(_0x1f13('0x6')+_0x29b68d,_0x4a2779);DashboardItemEvents['on'](_0x29b68d,_0x1c5afd);}};
\ No newline at end of file
index 2f9a3f8..f5ce759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0df=['isAuthenticated','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','show','post'];(function(_0x49b446,_0x2e7a57){var _0x41875c=function(_0x548626){while(--_0x548626){_0x49b446['push'](_0x49b446['shift']());}};_0x41875c(++_0x2e7a57);}(_0xa0df,0xcf));var _0xfa0d=function(_0x1a6923,_0x42fe04){_0x1a6923=_0x1a6923-0x0;var _0x5ee1a3=_0xa0df[_0x1a6923];return _0x5ee1a3;};'use strict';var multer=require('multer');var util=require(_0xfa0d('0x0'));var path=require('path');var timeout=require(_0xfa0d('0x1'));var express=require(_0xfa0d('0x2'));var router=express[_0xfa0d('0x3')]();var fs_extra=require(_0xfa0d('0x4'));var auth=require(_0xfa0d('0x5'));var interaction=require(_0xfa0d('0x6'));var config=require(_0xfa0d('0x7'));var controller=require(_0xfa0d('0x8'));router[_0xfa0d('0x9')](_0xfa0d('0xa'),auth['isAuthenticated'](),controller[_0xfa0d('0xb')]);router[_0xfa0d('0xc')]('/',auth[_0xfa0d('0xd')](),controller[_0xfa0d('0xe')]);router[_0xfa0d('0xf')](_0xfa0d('0xa'),auth[_0xfa0d('0xd')](),controller[_0xfa0d('0x10')]);router[_0xfa0d('0x11')](_0xfa0d('0xa'),auth[_0xfa0d('0xd')](),controller[_0xfa0d('0x12')]);module[_0xfa0d('0x13')]=router;
\ No newline at end of file
+var _0xb6db=['util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','update','delete','destroy','multer'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0xb6db,0x1c1));var _0xbb6d=function(_0x379061,_0x336d96){_0x379061=_0x379061-0x0;var _0x526d66=_0xb6db[_0x379061];return _0x526d66;};'use strict';var multer=require(_0xbb6d('0x0'));var util=require(_0xbb6d('0x1'));var path=require(_0xbb6d('0x2'));var timeout=require(_0xbb6d('0x3'));var express=require(_0xbb6d('0x4'));var router=express['Router']();var fs_extra=require(_0xbb6d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbb6d('0x6'));var config=require(_0xbb6d('0x7'));var controller=require('./dashboardItem.controller');router[_0xbb6d('0x8')](_0xbb6d('0x9'),auth[_0xbb6d('0xa')](),controller['show']);router[_0xbb6d('0xb')]('/',auth[_0xbb6d('0xa')](),controller['create']);router['put'](_0xbb6d('0x9'),auth['isAuthenticated'](),controller[_0xbb6d('0xc')]);router[_0xbb6d('0xd')](_0xbb6d('0x9'),auth['isAuthenticated'](),controller[_0xbb6d('0xe')]);module['exports']=router;
\ No newline at end of file
index f0a235d..84d53a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487a=['ENUM','first','third','sequelize','STRING'];(function(_0x39a9e7,_0x504acb){var _0x118386=function(_0x519793){while(--_0x519793){_0x39a9e7['push'](_0x39a9e7['shift']());}};_0x118386(++_0x504acb);}(_0x487a,0x193));var _0xa487=function(_0x5471ec,_0x1ce81a){_0x5471ec=_0x5471ec-0x0;var _0x121d4c=_0x487a[_0x5471ec];return _0x121d4c;};'use strict';var Sequelize=require(_0xa487('0x0'));module['exports']={'name':{'type':Sequelize[_0xa487('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0xa487('0x2')](_0xa487('0x3'),'second',_0xa487('0x4')),'allowNull':![],'defaultValue':_0xa487('0x3')},'description':{'type':Sequelize[_0xa487('0x1')]}};
\ No newline at end of file
+var _0x0985=['third','STRING','ENUM','first'];(function(_0xac3304,_0x536720){var _0x220903=function(_0x3ecdf5){while(--_0x3ecdf5){_0xac3304['push'](_0xac3304['shift']());}};_0x220903(++_0x536720);}(_0x0985,0xda));var _0x5098=function(_0x27058c,_0x34ab05){_0x27058c=_0x27058c-0x0;var _0x1ba403=_0x0985[_0x27058c];return _0x1ba403;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x5098('0x0')](_0x5098('0x1'),'second',_0x5098('0x2')),'allowNull':![],'defaultValue':_0x5098('0x1')},'description':{'type':Sequelize[_0x5098('0x3')]}};
\ No newline at end of file
index 687f51a..2b44603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8786=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','rows','catch','show','params','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','stack','name','index','map','Disposition','rawAttributes','fieldName','key'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8786,0x7a));var _0x6878=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x8786[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require(_0x6878('0x0'));var rimraf=require(_0x6878('0x1'));var zipdir=require(_0x6878('0x2'));var jsonpatch=require(_0x6878('0x3'));var rp=require(_0x6878('0x4'));var moment=require(_0x6878('0x5'));var BPromise=require(_0x6878('0x6'));var Mustache=require(_0x6878('0x7'));var util=require(_0x6878('0x8'));var path=require(_0x6878('0x9'));var sox=require(_0x6878('0xa'));var csv=require(_0x6878('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6878('0xc'));var _=require(_0x6878('0xd'));var squel=require('squel');var crypto=require(_0x6878('0xe'));var jsforce=require(_0x6878('0xf'));var deskjs=require(_0x6878('0x10'));var toCsv=require('to-csv');var querystring=require(_0x6878('0x11'));var Papa=require(_0x6878('0x12'));var Redis=require(_0x6878('0x13'));var authService=require(_0x6878('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x6878('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6878('0x16'))(_0x6878('0x17'));var utils=require(_0x6878('0x18'));var config=require(_0x6878('0x19'));var licenseUtil=require(_0x6878('0x1a'));var db=require(_0x6878('0x1b'))['db'];function respondWithStatusCode(_0x44d56d,_0x545586){_0x545586=_0x545586||0xcc;return function(_0x2429dc){if(_0x2429dc){return _0x44d56d[_0x6878('0x1c')](_0x545586);}return _0x44d56d[_0x6878('0x1d')](_0x545586)[_0x6878('0x1e')]();};}function respondWithResult(_0xcc6864,_0x16f3a3){_0x16f3a3=_0x16f3a3||0xc8;return function(_0x4ad0f6){if(_0x4ad0f6){return _0xcc6864[_0x6878('0x1d')](_0x16f3a3)[_0x6878('0x1f')](_0x4ad0f6);}};}function respondWithFilteredResult(_0x24483f,_0x47f270){return function(_0x427035){if(_0x427035){var _0x4adabf=typeof _0x47f270['offset']===_0x6878('0x20')&&typeof _0x47f270[_0x6878('0x21')]===_0x6878('0x20');var _0xc7fa48=_0x427035[_0x6878('0x22')];var _0x13c551=_0x4adabf?0x0:_0x47f270[_0x6878('0x23')];var _0x1bbb84=_0x4adabf?_0x427035['count']:_0x47f270['offset']+_0x47f270[_0x6878('0x21')];var _0x4faa99;if(_0x1bbb84>=_0xc7fa48){_0x1bbb84=_0xc7fa48;_0x4faa99=0xc8;}else{_0x4faa99=0xce;}_0x24483f['status'](_0x4faa99);return _0x24483f['set']('Content-Range',_0x13c551+'-'+_0x1bbb84+'/'+_0xc7fa48)['json'](_0x427035);}return null;};}function patchUpdates(_0x483ea4){return function(_0xee56df){try{jsonpatch['apply'](_0xee56df,_0x483ea4,!![]);}catch(_0x438e94){return BPromise[_0x6878('0x24')](_0x438e94);}return _0xee56df[_0x6878('0x25')]();};}function saveUpdates(_0x28fee8,_0xed07b7){return function(_0x4527c2){if(_0x4527c2){return _0x4527c2[_0x6878('0x26')](_0x28fee8)[_0x6878('0x27')](function(_0x7eac9f){return _0x7eac9f;});}return null;};}function removeEntity(_0x4fbb89,_0x3a4c4e){return function(_0x385abb){if(_0x385abb){return _0x385abb[_0x6878('0x28')]()[_0x6878('0x27')](function(){var _0x32be4d=_0x385abb[_0x6878('0x29')]({'plain':!![]});var _0x5cdfd1=_0x6878('0x2a');return db[_0x6878('0x2b')]['destroy']({'where':{'type':_0x5cdfd1,'resourceId':_0x32be4d['id']}})[_0x6878('0x27')](function(){return _0x385abb;});})['then'](function(){_0x4fbb89[_0x6878('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x167f3d,_0x5d19d9){return function(_0xd26154){if(!_0xd26154){_0x167f3d[_0x6878('0x1c')](0x194);}return _0xd26154;};}function handleError(_0x552d13,_0x4456c0){_0x4456c0=_0x4456c0||0x1f4;return function(_0x35968e){logger['error'](_0x35968e[_0x6878('0x2c')]);if(_0x35968e['name']){delete _0x35968e[_0x6878('0x2d')];}_0x552d13['status'](_0x4456c0)['send'](_0x35968e);};}exports[_0x6878('0x2e')]=function(_0x5c81d2,_0x537023){var _0x33e738={},_0x2f6032={},_0xf56440={'count':0x0,'rows':[]};var _0x25fdbe=_[_0x6878('0x2f')](db[_0x6878('0x30')][_0x6878('0x31')],function(_0x184428){return{'name':_0x184428[_0x6878('0x32')],'type':_0x184428['type'][_0x6878('0x33')]};});_0x2f6032[_0x6878('0x34')]=_[_0x6878('0x2f')](_0x25fdbe,_0x6878('0x2d'));_0x2f6032[_0x6878('0x35')]=_[_0x6878('0x36')](_0x5c81d2[_0x6878('0x35')]);_0x2f6032[_0x6878('0x37')]=_[_0x6878('0x38')](_0x2f6032[_0x6878('0x34')],_0x2f6032['query']);_0x33e738[_0x6878('0x39')]=_['intersection'](_0x2f6032[_0x6878('0x34')],qs['fields'](_0x5c81d2[_0x6878('0x35')][_0x6878('0x3a')]));_0x33e738['attributes']=_0x33e738['attributes'][_0x6878('0x3b')]?_0x33e738['attributes']:_0x2f6032['model'];if(!_0x5c81d2[_0x6878('0x35')][_0x6878('0x3c')](_0x6878('0x3d'))){_0x33e738[_0x6878('0x21')]=qs[_0x6878('0x21')](_0x5c81d2[_0x6878('0x35')][_0x6878('0x21')]);_0x33e738[_0x6878('0x23')]=qs[_0x6878('0x23')](_0x5c81d2[_0x6878('0x35')]['offset']);}_0x33e738[_0x6878('0x3e')]=qs[_0x6878('0x3f')](_0x5c81d2[_0x6878('0x35')][_0x6878('0x3f')]);_0x33e738[_0x6878('0x40')]=qs[_0x6878('0x37')](_[_0x6878('0x41')](_0x5c81d2[_0x6878('0x35')],_0x2f6032[_0x6878('0x37')]),_0x25fdbe);if(_0x5c81d2['query'][_0x6878('0x42')]){_0x33e738[_0x6878('0x40')]=_[_0x6878('0x43')](_0x33e738[_0x6878('0x40')],{'$or':_[_0x6878('0x2f')](_0x25fdbe,function(_0x151eab){if(_0x151eab[_0x6878('0x44')]!==_0x6878('0x45')){var _0x57ea7f={};_0x57ea7f[_0x151eab[_0x6878('0x2d')]]={'$like':'%'+_0x5c81d2[_0x6878('0x35')][_0x6878('0x42')]+'%'};return _0x57ea7f;}})});}_0x33e738=_[_0x6878('0x43')]({},_0x33e738,_0x5c81d2['options']);var _0x52be0b={'where':_0x33e738[_0x6878('0x40')]};return db[_0x6878('0x30')][_0x6878('0x22')](_0x52be0b)[_0x6878('0x27')](function(_0x191d53){_0xf56440[_0x6878('0x22')]=_0x191d53;if(_0x5c81d2['query'][_0x6878('0x46')]){_0x33e738['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x33e738);})[_0x6878('0x27')](function(_0x368996){_0xf56440[_0x6878('0x47')]=_0x368996;return _0xf56440;})[_0x6878('0x27')](respondWithFilteredResult(_0x537023,_0x33e738))[_0x6878('0x48')](handleError(_0x537023,null));};exports[_0x6878('0x49')]=function(_0x2fffca,_0x121bc5){var _0x3a2b08={'raw':!![],'where':{'id':_0x2fffca[_0x6878('0x4a')]['id']}},_0x500f67={};_0x500f67[_0x6878('0x34')]=_[_0x6878('0x36')](db[_0x6878('0x30')][_0x6878('0x31')]);_0x500f67[_0x6878('0x35')]=_[_0x6878('0x36')](_0x2fffca[_0x6878('0x35')]);_0x500f67[_0x6878('0x37')]=_[_0x6878('0x38')](_0x500f67[_0x6878('0x34')],_0x500f67['query']);_0x3a2b08['attributes']=_[_0x6878('0x38')](_0x500f67[_0x6878('0x34')],qs[_0x6878('0x3a')](_0x2fffca[_0x6878('0x35')][_0x6878('0x3a')]));_0x3a2b08[_0x6878('0x39')]=_0x3a2b08[_0x6878('0x39')][_0x6878('0x3b')]?_0x3a2b08[_0x6878('0x39')]:_0x500f67[_0x6878('0x34')];if(_0x2fffca[_0x6878('0x35')][_0x6878('0x46')]){_0x3a2b08[_0x6878('0x4b')]=[{'all':!![]}];}_0x3a2b08=_[_0x6878('0x43')]({},_0x3a2b08,_0x2fffca[_0x6878('0x4c')]);return db['Disposition'][_0x6878('0x4d')](_0x3a2b08)[_0x6878('0x27')](handleEntityNotFound(_0x121bc5,null))['then'](respondWithResult(_0x121bc5,null))['catch'](handleError(_0x121bc5,null));};exports[_0x6878('0x4e')]=function(_0x298b42,_0x480d5){return db[_0x6878('0x30')][_0x6878('0x4e')](_0x298b42['body'],{})[_0x6878('0x27')](function(_0xefeec){var _0x4fb47f=_0x298b42[_0x6878('0x4f')][_0x6878('0x29')]({'plain':!![]});if(!_0x4fb47f)throw new Error(_0x6878('0x50'));if(_0x4fb47f[_0x6878('0x51')]===_0x6878('0x4f')){var _0x1ecff5=_0xefeec[_0x6878('0x29')]({'plain':!![]});var _0x3e35da=_0x6878('0x2a');return db[_0x6878('0x52')][_0x6878('0x4d')]({'where':{'name':_0x3e35da,'userProfileId':_0x4fb47f[_0x6878('0x53')]},'raw':!![]})['then'](function(_0xd87f44){if(_0xd87f44&&_0xd87f44[_0x6878('0x54')]===0x0){return db[_0x6878('0x2b')]['create']({'name':_0x1ecff5[_0x6878('0x2d')],'resourceId':_0x1ecff5['id'],'type':_0xd87f44['name'],'sectionId':_0xd87f44['id']},{})[_0x6878('0x27')](function(){return _0xefeec;});}else{return _0xefeec;}})[_0x6878('0x48')](function(_0x62f954){logger[_0x6878('0x55')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x62f954);throw _0x62f954;});}return _0xefeec;})[_0x6878('0x27')](respondWithResult(_0x480d5,0xc9))[_0x6878('0x48')](handleError(_0x480d5,null));};exports['update']=function(_0x254404,_0x6c406b){if(_0x254404[_0x6878('0x56')]['id']){delete _0x254404[_0x6878('0x56')]['id'];}return db[_0x6878('0x30')][_0x6878('0x4d')]({'where':{'id':_0x254404[_0x6878('0x4a')]['id']}})[_0x6878('0x27')](handleEntityNotFound(_0x6c406b,null))['then'](saveUpdates(_0x254404[_0x6878('0x56')],null))[_0x6878('0x27')](respondWithResult(_0x6c406b,null))[_0x6878('0x48')](handleError(_0x6c406b,null));};exports[_0x6878('0x28')]=function(_0x3b9020,_0x5d6d9a){return db[_0x6878('0x30')][_0x6878('0x4d')]({'where':{'id':_0x3b9020[_0x6878('0x4a')]['id']}})[_0x6878('0x27')](handleEntityNotFound(_0x5d6d9a,null))[_0x6878('0x27')](removeEntity(_0x5d6d9a,null))[_0x6878('0x48')](handleError(_0x5d6d9a,null));};
\ No newline at end of file
+var _0x177e=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','count','limit','status','set','save','then','destroy','get','Dispositions','UserProfileResource','name','index','map','Disposition','fieldName','keys','query','filters','intersection','model','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','params','rawAttributes','fields','includeAll','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x38c1fe,_0x3f2e6f){var _0x24d5f5=function(_0x150ca9){while(--_0x150ca9){_0x38c1fe['push'](_0x38c1fe['shift']());}};_0x24d5f5(++_0x3f2e6f);}(_0x177e,0xd0));var _0xe177=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x177e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe177('0x0'));var util=require(_0xe177('0x1'));var path=require(_0xe177('0x2'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe177('0x3'));var fs=require('fs');var fs_extra=require(_0xe177('0x4'));var _=require(_0xe177('0x5'));var squel=require('squel');var crypto=require(_0xe177('0x6'));var jsforce=require(_0xe177('0x7'));var deskjs=require('desk.js');var toCsv=require(_0xe177('0x8'));var querystring=require(_0xe177('0x9'));var Papa=require(_0xe177('0xa'));var Redis=require(_0xe177('0xb'));var authService=require(_0xe177('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0xe177('0xd'));var hardwareService=require(_0xe177('0xe'));var logger=require(_0xe177('0xf'))(_0xe177('0x10'));var utils=require('../../config/utils');var config=require(_0xe177('0x11'));var licenseUtil=require(_0xe177('0x12'));var db=require(_0xe177('0x13'))['db'];function respondWithStatusCode(_0x1b73e8,_0x41117a){_0x41117a=_0x41117a||0xcc;return function(_0x12c669){if(_0x12c669){return _0x1b73e8[_0xe177('0x14')](_0x41117a);}return _0x1b73e8['status'](_0x41117a)['end']();};}function respondWithResult(_0x1ced00,_0x460a93){_0x460a93=_0x460a93||0xc8;return function(_0x2fa50e){if(_0x2fa50e){return _0x1ced00['status'](_0x460a93)[_0xe177('0x15')](_0x2fa50e);}};}function respondWithFilteredResult(_0x22c4bc,_0xf3ed3b){return function(_0x38d4b5){if(_0x38d4b5){var _0x61eb22=typeof _0xf3ed3b[_0xe177('0x16')]==='undefined'&&typeof _0xf3ed3b['limit']===_0xe177('0x17');var _0x590996=_0x38d4b5['count'];var _0x5c3cb6=_0x61eb22?0x0:_0xf3ed3b[_0xe177('0x16')];var _0x59cf0a=_0x61eb22?_0x38d4b5[_0xe177('0x18')]:_0xf3ed3b['offset']+_0xf3ed3b[_0xe177('0x19')];var _0x5a3c8b;if(_0x59cf0a>=_0x590996){_0x59cf0a=_0x590996;_0x5a3c8b=0xc8;}else{_0x5a3c8b=0xce;}_0x22c4bc[_0xe177('0x1a')](_0x5a3c8b);return _0x22c4bc[_0xe177('0x1b')]('Content-Range',_0x5c3cb6+'-'+_0x59cf0a+'/'+_0x590996)[_0xe177('0x15')](_0x38d4b5);}return null;};}function patchUpdates(_0x501cb7){return function(_0x13ee03){try{jsonpatch['apply'](_0x13ee03,_0x501cb7,!![]);}catch(_0x3bf72b){return BPromise['reject'](_0x3bf72b);}return _0x13ee03[_0xe177('0x1c')]();};}function saveUpdates(_0x8fa793,_0x390e45){return function(_0x53c458){if(_0x53c458){return _0x53c458['update'](_0x8fa793)[_0xe177('0x1d')](function(_0x155027){return _0x155027;});}return null;};}function removeEntity(_0x2c124d,_0xdbf075){return function(_0xf82a62){if(_0xf82a62){return _0xf82a62[_0xe177('0x1e')]()[_0xe177('0x1d')](function(){var _0x2d81d2=_0xf82a62[_0xe177('0x1f')]({'plain':!![]});var _0x1125e4=_0xe177('0x20');return db[_0xe177('0x21')][_0xe177('0x1e')]({'where':{'type':_0x1125e4,'resourceId':_0x2d81d2['id']}})[_0xe177('0x1d')](function(){return _0xf82a62;});})['then'](function(){_0x2c124d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2879ba,_0x291331){return function(_0x5883d6){if(!_0x5883d6){_0x2879ba['sendStatus'](0x194);}return _0x5883d6;};}function handleError(_0x377838,_0x449bee){_0x449bee=_0x449bee||0x1f4;return function(_0x1c519b){logger['error'](_0x1c519b['stack']);if(_0x1c519b[_0xe177('0x22')]){delete _0x1c519b[_0xe177('0x22')];}_0x377838[_0xe177('0x1a')](_0x449bee)['send'](_0x1c519b);};}exports[_0xe177('0x23')]=function(_0xd9ae11,_0x582d1b){var _0x16e864={},_0x50e592={},_0x37e895={'count':0x0,'rows':[]};var _0x428167=_[_0xe177('0x24')](db[_0xe177('0x25')]['rawAttributes'],function(_0x16a3d0){return{'name':_0x16a3d0[_0xe177('0x26')],'type':_0x16a3d0['type']['key']};});_0x50e592['model']=_['map'](_0x428167,_0xe177('0x22'));_0x50e592['query']=_[_0xe177('0x27')](_0xd9ae11[_0xe177('0x28')]);_0x50e592[_0xe177('0x29')]=_[_0xe177('0x2a')](_0x50e592[_0xe177('0x2b')],_0x50e592['query']);_0x16e864['attributes']=_[_0xe177('0x2a')](_0x50e592[_0xe177('0x2b')],qs['fields'](_0xd9ae11[_0xe177('0x28')]['fields']));_0x16e864[_0xe177('0x2c')]=_0x16e864['attributes'][_0xe177('0x2d')]?_0x16e864['attributes']:_0x50e592[_0xe177('0x2b')];if(!_0xd9ae11[_0xe177('0x28')]['hasOwnProperty'](_0xe177('0x2e'))){_0x16e864[_0xe177('0x19')]=qs[_0xe177('0x19')](_0xd9ae11[_0xe177('0x28')][_0xe177('0x19')]);_0x16e864[_0xe177('0x16')]=qs[_0xe177('0x16')](_0xd9ae11[_0xe177('0x28')]['offset']);}_0x16e864[_0xe177('0x2f')]=qs['sort'](_0xd9ae11[_0xe177('0x28')]['sort']);_0x16e864[_0xe177('0x30')]=qs[_0xe177('0x29')](_[_0xe177('0x31')](_0xd9ae11[_0xe177('0x28')],_0x50e592['filters']),_0x428167);if(_0xd9ae11[_0xe177('0x28')][_0xe177('0x32')]){_0x16e864[_0xe177('0x30')]=_[_0xe177('0x33')](_0x16e864[_0xe177('0x30')],{'$or':_['map'](_0x428167,function(_0x433439){if(_0x433439['type']!==_0xe177('0x34')){var _0x1fa454={};_0x1fa454[_0x433439[_0xe177('0x22')]]={'$like':'%'+_0xd9ae11[_0xe177('0x28')][_0xe177('0x32')]+'%'};return _0x1fa454;}})});}_0x16e864=_[_0xe177('0x33')]({},_0x16e864,_0xd9ae11['options']);var _0x26dcae={'where':_0x16e864['where']};return db[_0xe177('0x25')][_0xe177('0x18')](_0x26dcae)[_0xe177('0x1d')](function(_0x58a004){_0x37e895[_0xe177('0x18')]=_0x58a004;if(_0xd9ae11[_0xe177('0x28')]['includeAll']){_0x16e864[_0xe177('0x35')]=[{'all':!![]}];}return db[_0xe177('0x25')][_0xe177('0x36')](_0x16e864);})[_0xe177('0x1d')](function(_0x2e4adf){_0x37e895[_0xe177('0x37')]=_0x2e4adf;return _0x37e895;})[_0xe177('0x1d')](respondWithFilteredResult(_0x582d1b,_0x16e864))[_0xe177('0x38')](handleError(_0x582d1b,null));};exports['show']=function(_0x65dace,_0x398cbd){var _0x558f21={'raw':!![],'where':{'id':_0x65dace[_0xe177('0x39')]['id']}},_0x2a1647={};_0x2a1647[_0xe177('0x2b')]=_[_0xe177('0x27')](db[_0xe177('0x25')][_0xe177('0x3a')]);_0x2a1647[_0xe177('0x28')]=_[_0xe177('0x27')](_0x65dace[_0xe177('0x28')]);_0x2a1647[_0xe177('0x29')]=_[_0xe177('0x2a')](_0x2a1647[_0xe177('0x2b')],_0x2a1647['query']);_0x558f21[_0xe177('0x2c')]=_[_0xe177('0x2a')](_0x2a1647['model'],qs[_0xe177('0x3b')](_0x65dace[_0xe177('0x28')][_0xe177('0x3b')]));_0x558f21['attributes']=_0x558f21[_0xe177('0x2c')][_0xe177('0x2d')]?_0x558f21['attributes']:_0x2a1647['model'];if(_0x65dace['query'][_0xe177('0x3c')]){_0x558f21[_0xe177('0x35')]=[{'all':!![]}];}_0x558f21=_[_0xe177('0x33')]({},_0x558f21,_0x65dace['options']);return db['Disposition'][_0xe177('0x3d')](_0x558f21)[_0xe177('0x1d')](handleEntityNotFound(_0x398cbd,null))[_0xe177('0x1d')](respondWithResult(_0x398cbd,null))[_0xe177('0x38')](handleError(_0x398cbd,null));};exports['create']=function(_0x4d6eb2,_0x5ddf05){return db[_0xe177('0x25')]['create'](_0x4d6eb2[_0xe177('0x3e')],{})['then'](function(_0x525ac9){var _0x5c2b56=_0x4d6eb2[_0xe177('0x3f')]['get']({'plain':!![]});if(!_0x5c2b56)throw new Error(_0xe177('0x40'));if(_0x5c2b56[_0xe177('0x41')]===_0xe177('0x3f')){var _0x45645b=_0x525ac9[_0xe177('0x1f')]({'plain':!![]});var _0x2872c4=_0xe177('0x20');return db[_0xe177('0x42')][_0xe177('0x3d')]({'where':{'name':_0x2872c4,'userProfileId':_0x5c2b56[_0xe177('0x43')]},'raw':!![]})[_0xe177('0x1d')](function(_0x4800cb){if(_0x4800cb&&_0x4800cb['autoAssociation']===0x0){return db[_0xe177('0x21')][_0xe177('0x44')]({'name':_0x45645b[_0xe177('0x22')],'resourceId':_0x45645b['id'],'type':_0x4800cb[_0xe177('0x22')],'sectionId':_0x4800cb['id']},{})['then'](function(){return _0x525ac9;});}else{return _0x525ac9;}})[_0xe177('0x38')](function(_0x51b545){logger[_0xe177('0x45')](_0xe177('0x46'),_0x51b545);throw _0x51b545;});}return _0x525ac9;})[_0xe177('0x1d')](respondWithResult(_0x5ddf05,0xc9))['catch'](handleError(_0x5ddf05,null));};exports[_0xe177('0x47')]=function(_0x217940,_0x3a27ee){if(_0x217940[_0xe177('0x3e')]['id']){delete _0x217940[_0xe177('0x3e')]['id'];}return db[_0xe177('0x25')][_0xe177('0x3d')]({'where':{'id':_0x217940[_0xe177('0x39')]['id']}})[_0xe177('0x1d')](handleEntityNotFound(_0x3a27ee,null))[_0xe177('0x1d')](saveUpdates(_0x217940[_0xe177('0x3e')],null))[_0xe177('0x1d')](respondWithResult(_0x3a27ee,null))[_0xe177('0x38')](handleError(_0x3a27ee,null));};exports[_0xe177('0x1e')]=function(_0x1eb8ff,_0x4642d5){return db[_0xe177('0x25')][_0xe177('0x3d')]({'where':{'id':_0x1eb8ff[_0xe177('0x39')]['id']}})['then'](handleEntityNotFound(_0x4642d5,null))[_0xe177('0x1d')](removeEntity(_0x4642d5,null))[_0xe177('0x38')](handleError(_0x4642d5,null));};
\ No newline at end of file
index 32e8197..0ba3b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe41=['FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name','ChatWebsiteId','name_mail','name_sms','SmsAccountId','name_fax'];(function(_0x19a342,_0x707413){var _0x1438ad=function(_0x5e6225){while(--_0x5e6225){_0x19a342['push'](_0x19a342['shift']());}};_0x1438ad(++_0x707413);}(_0xbe41,0x1b9));var _0x1be4=function(_0x49fe3d,_0x1f7fa1){_0x49fe3d=_0x49fe3d-0x0;var _0x2100f6=_0xbe41[_0x49fe3d];return _0x2100f6;};'use strict';var _=require(_0x1be4('0x0'));var util=require(_0x1be4('0x1'));var logger=require(_0x1be4('0x2'))(_0x1be4('0x3'));var moment=require(_0x1be4('0x4'));var BPromise=require(_0x1be4('0x5'));var rp=require(_0x1be4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1be4('0x7'));var config=require(_0x1be4('0x8'));var attributes=require(_0x1be4('0x9'));module['exports']=function(_0x2f6063,_0x47489e){return _0x2f6063[_0x1be4('0xa')](_0x1be4('0xb'),attributes,{'tableName':_0x1be4('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':['name','ListId']},{'unique':!![],'name':'name_chat','fields':[_0x1be4('0xd'),_0x1be4('0xe')]},{'unique':!![],'name':_0x1be4('0xf'),'fields':[_0x1be4('0xd'),'MailAccountId']},{'unique':!![],'name':_0x1be4('0x10'),'fields':[_0x1be4('0xd'),_0x1be4('0x11')]},{'unique':!![],'name':_0x1be4('0x12'),'fields':[_0x1be4('0xd'),_0x1be4('0x13')]},{'unique':!![],'name':_0x1be4('0x14'),'fields':[_0x1be4('0xd'),_0x1be4('0x15')]},{'unique':!![],'name':_0x1be4('0x16'),'fields':[_0x1be4('0xd'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x74da=['../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name','ListId','name_chat','ChatWebsiteId','SmsAccountId','name_fax','FaxAccountId','name_openchannel','WhatsappAccountId','lodash','util','bluebird','path','rimraf'];(function(_0x35dea7,_0x1f7e22){var _0x3ddd9f=function(_0x1cdffd){while(--_0x1cdffd){_0x35dea7['push'](_0x35dea7['shift']());}};_0x3ddd9f(++_0x1f7e22);}(_0x74da,0x177));var _0xa74d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x74da[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa74d('0x0'));var util=require(_0xa74d('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa74d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa74d('0x3'));var rimraf=require(_0xa74d('0x4'));var config=require(_0xa74d('0x5'));var attributes=require(_0xa74d('0x6'));module[_0xa74d('0x7')]=function(_0x57ccaf,_0x4aaf69){return _0x57ccaf[_0xa74d('0x8')](_0xa74d('0x9'),attributes,{'tableName':_0xa74d('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xa74d('0xb'),_0xa74d('0xc')]},{'unique':!![],'name':_0xa74d('0xd'),'fields':[_0xa74d('0xb'),_0xa74d('0xe')]},{'unique':!![],'name':'name_mail','fields':[_0xa74d('0xb'),'MailAccountId']},{'unique':!![],'name':'name_sms','fields':[_0xa74d('0xb'),_0xa74d('0xf')]},{'unique':!![],'name':_0xa74d('0x10'),'fields':[_0xa74d('0xb'),_0xa74d('0x11')]},{'unique':!![],'name':_0xa74d('0x12'),'fields':[_0xa74d('0xb'),'OpenchannelAccountId']},{'unique':!![],'name':'name_whatsapp','fields':['name',_0xa74d('0x13')]}],'timestamps':!![]});};
\ No newline at end of file
index d88d135..a9a88e6 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(_0x5aed49,_0x5b71f8){var _0x3efc4b=function(_0x234aa3){while(--_0x234aa3){_0x5aed49['push'](_0x5aed49['shift']());}};_0x3efc4b(++_0x5b71f8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'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(_0x63848f,_0x52f784){var _0xab6b6c=function(_0x2d64c7){while(--_0x2d64c7){_0x63848f['push'](_0x63848f['shift']());}};_0xab6b6c(++_0x52f784);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 e987ed1..d638dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ed=['delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','put','update'];(function(_0x35837f,_0x15a5e1){var _0x21d3ce=function(_0x2e30a1){while(--_0x2e30a1){_0x35837f['push'](_0x35837f['shift']());}};_0x21d3ce(++_0x15a5e1);}(_0xa9ed,0xb3));var _0xda9e=function(_0x5d860f,_0x467498){_0x5d860f=_0x5d860f-0x0;var _0x236490=_0xa9ed[_0x5d860f];return _0x236490;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xda9e('0x0'));var timeout=require(_0xda9e('0x1'));var express=require(_0xda9e('0x2'));var router=express[_0xda9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xda9e('0x4'));var interaction=require(_0xda9e('0x5'));var config=require(_0xda9e('0x6'));var controller=require('./disposition.controller');router[_0xda9e('0x7')]('/',auth[_0xda9e('0x8')](),controller[_0xda9e('0x9')]);router[_0xda9e('0x7')](_0xda9e('0xa'),auth[_0xda9e('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xda9e('0xb')](_0xda9e('0xa'),auth[_0xda9e('0x8')](),controller[_0xda9e('0xc')]);router[_0xda9e('0xd')](_0xda9e('0xa'),auth[_0xda9e('0x8')](),controller[_0xda9e('0xe')]);module[_0xda9e('0xf')]=router;
\ No newline at end of file
+var _0x6d92=['index','/:id','post','create','put','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated'];(function(_0x50088a,_0x496997){var _0x23c6bf=function(_0x3bc5b3){while(--_0x3bc5b3){_0x50088a['push'](_0x50088a['shift']());}};_0x23c6bf(++_0x496997);}(_0x6d92,0x9e));var _0x26d9=function(_0x2ebce5,_0x4d089a){_0x2ebce5=_0x2ebce5-0x0;var _0x2173cf=_0x6d92[_0x2ebce5];return _0x2173cf;};'use strict';var multer=require(_0x26d9('0x0'));var util=require('util');var path=require(_0x26d9('0x1'));var timeout=require(_0x26d9('0x2'));var express=require(_0x26d9('0x3'));var router=express[_0x26d9('0x4')]();var fs_extra=require(_0x26d9('0x5'));var auth=require(_0x26d9('0x6'));var interaction=require(_0x26d9('0x7'));var config=require(_0x26d9('0x8'));var controller=require(_0x26d9('0x9'));router[_0x26d9('0xa')]('/',auth[_0x26d9('0xb')](),controller[_0x26d9('0xc')]);router[_0x26d9('0xa')](_0x26d9('0xd'),auth[_0x26d9('0xb')](),controller['show']);router[_0x26d9('0xe')]('/',auth[_0x26d9('0xb')](),controller[_0x26d9('0xf')]);router[_0x26d9('0x10')](_0x26d9('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x26d9('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6b952ff..8395806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe712=['STRING','ENUM','yes','localstationid','2400','4800','9600','12000','14400','7200','v17,v27,v29','INTEGER','SIP','IAX','KHOMP','TEXT','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe712,0x1cc));var _0x2e71=function(_0x1881fe,_0x38b56e){_0x1881fe=_0x1881fe-0x0;var _0x5ad2ef=_0xe712[_0x1881fe];return _0x5ad2ef;};'use strict';var Sequelize=require(_0x2e71('0x0'));module[_0x2e71('0x1')]={'name':{'type':Sequelize[_0x2e71('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2e71('0x2')]},'ecm':{'type':Sequelize[_0x2e71('0x3')](_0x2e71('0x4'),'no'),'defaultValue':_0x2e71('0x4')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x2e71('0x2')],'unique':_0x2e71('0x5')},'minrate':{'type':Sequelize[_0x2e71('0x3')](_0x2e71('0x6'),_0x2e71('0x7'),'7200',_0x2e71('0x8'),_0x2e71('0x9'),_0x2e71('0xa')),'defaultValue':_0x2e71('0x7')},'maxrate':{'type':Sequelize[_0x2e71('0x3')](_0x2e71('0x6'),_0x2e71('0x7'),_0x2e71('0xb'),'9600',_0x2e71('0x9'),_0x2e71('0xa')),'defaultValue':_0x2e71('0xa')},'modem':{'type':Sequelize[_0x2e71('0x2')],'defaultValue':_0x2e71('0xc')},'gateway':{'type':Sequelize[_0x2e71('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x2e71('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x2e71('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x2e71('0x3')](_0x2e71('0xe'),_0x2e71('0xf'),'DADHI',_0x2e71('0x10')),'defaultValue':_0x2e71('0xe')},'key':{'type':Sequelize[_0x2e71('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2e71('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x2e71('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2e71('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2e71('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2e71('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2e71('0xd')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x2e71('0x12')],'defaultValue':![],'comment':_0x2e71('0x13'),'set':function(_0xad9f4b){if(!_0xad9f4b)this[_0x2e71('0x14')](_0x2e71('0x15'),null);this['setDataValue']('mandatoryDisposition',_0xad9f4b);}}};
\ No newline at end of file
+var _0x1ebd=['yes','localstationid','2400','4800','7200','12000','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','TEXT','BOOLEAN','mandatoryDispositionPauseId','sequelize','STRING','ENUM'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x1ebd,0xf9));var _0xd1eb=function(_0x241034,_0x1545f4){_0x241034=_0x241034-0x0;var _0x267a63=_0x1ebd[_0x241034];return _0x267a63;};'use strict';var Sequelize=require(_0xd1eb('0x0'));module['exports']={'name':{'type':Sequelize[_0xd1eb('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd1eb('0x1')]},'ecm':{'type':Sequelize[_0xd1eb('0x2')](_0xd1eb('0x3'),'no'),'defaultValue':_0xd1eb('0x3')},'headerinfo':{'type':Sequelize[_0xd1eb('0x1')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0xd1eb('0x1')],'unique':_0xd1eb('0x4')},'minrate':{'type':Sequelize[_0xd1eb('0x2')](_0xd1eb('0x5'),_0xd1eb('0x6'),_0xd1eb('0x7'),'9600',_0xd1eb('0x8'),_0xd1eb('0x9')),'defaultValue':_0xd1eb('0x6')},'maxrate':{'type':Sequelize[_0xd1eb('0x2')](_0xd1eb('0x5'),_0xd1eb('0x6'),_0xd1eb('0x7'),'9600','12000',_0xd1eb('0x9')),'defaultValue':_0xd1eb('0x9')},'modem':{'type':Sequelize[_0xd1eb('0x1')],'defaultValue':_0xd1eb('0xa')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xd1eb('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xd1eb('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0xd1eb('0xc'),_0xd1eb('0xd'),_0xd1eb('0xe'),'KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xd1eb('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd1eb('0xf')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xd1eb('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd1eb('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd1eb('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd1eb('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd1eb('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xd1eb('0x10')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4e5293){if(!_0x4e5293)this['setDataValue'](_0xd1eb('0x11'),null);this['setDataValue']('mandatoryDisposition',_0x4e5293);}}};
\ No newline at end of file
index 56bf452..21aa514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e2=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','destroy','get','FaxAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','include','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','FaxAccountId','Disposition','findOne','options','findAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','Owner','fullname','internal','Tag','Tags','color','tag','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','getApplications','context','from-voip-provider','system','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','localstationid','faxdetect','maxrate','minrate','modem','t38timeout','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','TrunkId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','updatedAt','DESC','attachments','join','root','server/files/attachments','basename','isNil','path','from','format','\x22%s\x22\x20<%s>','fax','defaults','ListId','List\x20not\x20found','filename','Messages','Contact\x20not\x20found','spread','out','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x86c6cb,_0x30bb53){var _0x1b1592=function(_0x19e1c9){while(--_0x19e1c9){_0x86c6cb['push'](_0x86c6cb['shift']());}};_0x1b1592(++_0x30bb53);}(_0xf4e2,0x17d));var _0x2f4e=function(_0x124728,_0x463dca){_0x124728=_0x124728-0x0;var _0x8eb20f=_0xf4e2[_0x124728];return _0x8eb20f;};'use strict';var emlformat=require(_0x2f4e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2f4e('0x1'));var jsonpatch=require(_0x2f4e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2f4e('0x3'));var Mustache=require(_0x2f4e('0x4'));var util=require(_0x2f4e('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x2f4e('0x6'));var ejs=require(_0x2f4e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2f4e('0x8'));var squel=require(_0x2f4e('0x9'));var crypto=require(_0x2f4e('0xa'));var jsforce=require(_0x2f4e('0xb'));var deskjs=require(_0x2f4e('0xc'));var toCsv=require(_0x2f4e('0x6'));var querystring=require(_0x2f4e('0xd'));var Papa=require(_0x2f4e('0xe'));var Redis=require(_0x2f4e('0xf'));var authService=require(_0x2f4e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2f4e('0x11'));var hardwareService=require(_0x2f4e('0x12'));var logger=require(_0x2f4e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x2f4e('0x14'));var licenseUtil=require(_0x2f4e('0x15'));var db=require(_0x2f4e('0x16'))['db'];config[_0x2f4e('0x17')]=_['defaults'](config[_0x2f4e('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2f4e('0x17')]));require('./faxAccount.socket')[_0x2f4e('0x18')](socket);var jayson=require(_0x2f4e('0x19'));var client=jayson[_0x2f4e('0x1a')][_0x2f4e('0x1b')]({'port':0x232c});var client9002=jayson[_0x2f4e('0x1a')][_0x2f4e('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xe1c997,_0x1302f1,_0x13142c,_0x24434c){return new BPromise(function(_0x28c5ec,_0x5e97dc){var _0x48ce2b=_0x24434c||client;return _0x48ce2b[_0x2f4e('0x1c')](_0xe1c997,_0x13142c)[_0x2f4e('0x1d')](function(_0x5664fc){logger[_0x2f4e('0x1e')](_0x2f4e('0x1f'),_0x1302f1,'request\x20sent');logger[_0x2f4e('0x20')](_0x2f4e('0x21'),_0x1302f1,_0x2f4e('0x22'),JSON[_0x2f4e('0x23')](_0x5664fc));if(_0x5664fc[_0x2f4e('0x24')]){if(_0x5664fc[_0x2f4e('0x24')][_0x2f4e('0x25')]===0x1f4){logger['error'](_0x2f4e('0x1f'),_0x1302f1,_0x5664fc[_0x2f4e('0x24')][_0x2f4e('0x26')]);return _0x5e97dc(_0x5664fc['error'][_0x2f4e('0x26')]);}logger[_0x2f4e('0x24')](_0x2f4e('0x1f'),_0x1302f1,_0x5664fc['error']['message']);return _0x28c5ec(_0x5664fc[_0x2f4e('0x24')][_0x2f4e('0x26')]);}else{logger[_0x2f4e('0x1e')](_0x2f4e('0x1f'),_0x1302f1,_0x2f4e('0x22'));_0x28c5ec(_0x5664fc[_0x2f4e('0x27')]['message']);}})['catch'](function(_0xfab624){logger[_0x2f4e('0x24')](_0x2f4e('0x1f'),_0x1302f1,_0xfab624);_0x5e97dc(_0xfab624);});});}function respondWithStatusCode(_0x2c713c,_0x1e49e9){_0x1e49e9=_0x1e49e9||0xcc;return function(_0x3554ac){if(_0x3554ac){return _0x2c713c[_0x2f4e('0x28')](_0x1e49e9);}return _0x2c713c['status'](_0x1e49e9)[_0x2f4e('0x29')]();};}function respondWithResult(_0x3bbcfa,_0x2723d9){_0x2723d9=_0x2723d9||0xc8;return function(_0x22c5a2){if(_0x22c5a2){return _0x3bbcfa[_0x2f4e('0x2a')](_0x2723d9)['json'](_0x22c5a2);}};}function respondWithFilteredResult(_0x57cee9,_0x58e547){return function(_0x53abd6){if(_0x53abd6){var _0x412989=typeof _0x58e547[_0x2f4e('0x2b')]==='undefined'&&typeof _0x58e547['limit']===_0x2f4e('0x2c');var _0x1b8937=_0x53abd6[_0x2f4e('0x2d')];var _0x62c671=_0x412989?0x0:_0x58e547[_0x2f4e('0x2b')];var _0x545e4f=_0x412989?_0x53abd6[_0x2f4e('0x2d')]:_0x58e547[_0x2f4e('0x2b')]+_0x58e547[_0x2f4e('0x2e')];var _0x37438d;if(_0x545e4f>=_0x1b8937){_0x545e4f=_0x1b8937;_0x37438d=0xc8;}else{_0x37438d=0xce;}_0x57cee9[_0x2f4e('0x2a')](_0x37438d);return _0x57cee9[_0x2f4e('0x2f')](_0x2f4e('0x30'),_0x62c671+'-'+_0x545e4f+'/'+_0x1b8937)[_0x2f4e('0x31')](_0x53abd6);}return null;};}function patchUpdates(_0x245343){return function(_0x2b380d){try{jsonpatch[_0x2f4e('0x32')](_0x2b380d,_0x245343,!![]);}catch(_0xc0db4a){return BPromise[_0x2f4e('0x33')](_0xc0db4a);}return _0x2b380d[_0x2f4e('0x34')]();};}function saveUpdates(_0x55013d,_0x248bc2){return function(_0x37b14e){if(_0x37b14e){return _0x37b14e['update'](_0x55013d)[_0x2f4e('0x1d')](function(_0x5ce3b8){return _0x5ce3b8;});}return null;};}function removeEntity(_0x5ab2ef,_0x8a7bc9){return function(_0x2e3281){if(_0x2e3281){return _0x2e3281[_0x2f4e('0x35')]()[_0x2f4e('0x1d')](function(){var _0x1b6c70=_0x2e3281[_0x2f4e('0x36')]({'plain':!![]});var _0x52de36=_0x2f4e('0x37');return db[_0x2f4e('0x38')]['destroy']({'where':{'type':_0x52de36,'resourceId':_0x1b6c70['id']}})[_0x2f4e('0x1d')](function(){return _0x2e3281;});})[_0x2f4e('0x1d')](function(){_0x5ab2ef[_0x2f4e('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1812b3,_0x195f10){return function(_0x42273a){if(!_0x42273a){_0x1812b3[_0x2f4e('0x28')](0x194);}return _0x42273a;};}function handleError(_0x30920a,_0x104459){_0x104459=_0x104459||0x1f4;return function(_0x2605a6){logger[_0x2f4e('0x24')](_0x2605a6['stack']);if(_0x2605a6[_0x2f4e('0x39')]){delete _0x2605a6[_0x2f4e('0x39')];}_0x30920a[_0x2f4e('0x2a')](_0x104459)[_0x2f4e('0x3a')](_0x2605a6);};}exports[_0x2f4e('0x3b')]=function(_0x3f236b,_0x4e3811){var _0x507e06={'include':[{'model':db[_0x2f4e('0x3c')],'as':_0x2f4e('0x3d')}]},_0x2bfe67={},_0x238ec8={'count':0x0,'rows':[]};var _0x32eee6=_[_0x2f4e('0x3e')](db[_0x2f4e('0x3f')][_0x2f4e('0x40')],function(_0x108c8f){return{'name':_0x108c8f[_0x2f4e('0x41')],'type':_0x108c8f[_0x2f4e('0x42')][_0x2f4e('0x43')]};});_0x2bfe67[_0x2f4e('0x44')]=_[_0x2f4e('0x3e')](_0x32eee6,_0x2f4e('0x39'));_0x2bfe67[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x3f236b[_0x2f4e('0x45')]);_0x2bfe67['filters']=_[_0x2f4e('0x47')](_0x2bfe67[_0x2f4e('0x44')],_0x2bfe67[_0x2f4e('0x45')]);_0x507e06[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x2bfe67['model'],qs[_0x2f4e('0x49')](_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x49')]));_0x507e06[_0x2f4e('0x48')]=_0x507e06[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0x507e06['attributes']:_0x2bfe67['model'];if(!_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x4b')](_0x2f4e('0x4c'))){_0x507e06[_0x2f4e('0x2e')]=qs['limit'](_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x2e')]);_0x507e06[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x2b')]);}_0x507e06[_0x2f4e('0x4d')]=qs[_0x2f4e('0x4e')](_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x4e')]);_0x507e06[_0x2f4e('0x4f')]=qs[_0x2f4e('0x50')](_[_0x2f4e('0x51')](_0x3f236b['query'],_0x2bfe67[_0x2f4e('0x50')]),_0x32eee6);if(_0x3f236b['query']['filter']){_0x507e06[_0x2f4e('0x4f')]=_[_0x2f4e('0x52')](_0x507e06[_0x2f4e('0x4f')],{'$or':_[_0x2f4e('0x3e')](_0x32eee6,function(_0x42fde4){if(_0x42fde4[_0x2f4e('0x42')]!=='VIRTUAL'){var _0xae97b8={};_0xae97b8[_0x42fde4['name']]={'$like':'%'+_0x3f236b[_0x2f4e('0x45')][_0x2f4e('0x53')]+'%'};return _0xae97b8;}})});}_0x507e06=_[_0x2f4e('0x52')]({},_0x507e06,_0x3f236b['options']);var _0x4894e4={'where':_0x507e06['where']};return db[_0x2f4e('0x3f')]['count'](_0x4894e4)[_0x2f4e('0x1d')](function(_0x4866a5){_0x238ec8[_0x2f4e('0x2d')]=_0x4866a5;if(_0x3f236b[_0x2f4e('0x45')]['includeAll']){_0x507e06[_0x2f4e('0x54')]=[{'all':!![]}];}return db[_0x2f4e('0x3f')]['findAll'](_0x507e06);})[_0x2f4e('0x1d')](function(_0x2abfa8){_0x238ec8[_0x2f4e('0x55')]=_0x2abfa8;return _0x238ec8;})[_0x2f4e('0x1d')](respondWithFilteredResult(_0x4e3811,_0x507e06))[_0x2f4e('0x56')](handleError(_0x4e3811,null));};exports[_0x2f4e('0x57')]=function(_0x4d7444,_0x12a6f0){var _0x586d7d={'raw':![],'where':{'id':_0x4d7444[_0x2f4e('0x58')]['id']},'include':[{'model':db[_0x2f4e('0x3c')],'as':_0x2f4e('0x3d')}]},_0x5c3bcc={};_0x5c3bcc[_0x2f4e('0x44')]=_[_0x2f4e('0x46')](db['FaxAccount'][_0x2f4e('0x40')]);_0x5c3bcc[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x4d7444[_0x2f4e('0x45')]);_0x5c3bcc[_0x2f4e('0x50')]=_['intersection'](_0x5c3bcc[_0x2f4e('0x44')],_0x5c3bcc[_0x2f4e('0x45')]);_0x586d7d[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x5c3bcc['model'],qs[_0x2f4e('0x49')](_0x4d7444['query'][_0x2f4e('0x49')]));_0x586d7d[_0x2f4e('0x48')]=_0x586d7d[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0x586d7d[_0x2f4e('0x48')]:_0x5c3bcc[_0x2f4e('0x44')];if(_0x4d7444[_0x2f4e('0x45')][_0x2f4e('0x59')]){_0x586d7d[_0x2f4e('0x54')]=[{'all':!![]}];}_0x586d7d=_['merge']({},_0x586d7d,_0x4d7444['options']);return db['FaxAccount'][_0x2f4e('0x5a')](_0x586d7d)['then'](handleEntityNotFound(_0x12a6f0,null))['then'](respondWithResult(_0x12a6f0,null))['catch'](handleError(_0x12a6f0,null));};exports['create']=function(_0x40e9e3,_0x30c216){return db['FaxAccount'][_0x2f4e('0x5b')](_0x40e9e3[_0x2f4e('0x5c')],{})[_0x2f4e('0x1d')](function(_0x56ea3a){var _0x56e1ac=_0x40e9e3[_0x2f4e('0x5d')][_0x2f4e('0x36')]({'plain':!![]});if(!_0x56e1ac)throw new Error(_0x2f4e('0x5e'));if(_0x56e1ac[_0x2f4e('0x5f')]===_0x2f4e('0x5d')){var _0x47208b=_0x56ea3a[_0x2f4e('0x36')]({'plain':!![]});var _0x907c79=_0x2f4e('0x37');return db['UserProfileSection'][_0x2f4e('0x5a')]({'where':{'name':_0x907c79,'userProfileId':_0x56e1ac[_0x2f4e('0x60')]},'raw':!![]})[_0x2f4e('0x1d')](function(_0xa872e0){if(_0xa872e0&&_0xa872e0[_0x2f4e('0x61')]===0x0){return db[_0x2f4e('0x38')][_0x2f4e('0x5b')]({'name':_0x47208b['name'],'resourceId':_0x47208b['id'],'type':_0xa872e0[_0x2f4e('0x39')],'sectionId':_0xa872e0['id']},{})[_0x2f4e('0x1d')](function(){return _0x56ea3a;});}else{return _0x56ea3a;}})['catch'](function(_0xb9dd20){logger['error'](_0x2f4e('0x62'),_0xb9dd20);throw _0xb9dd20;});}return _0x56ea3a;})[_0x2f4e('0x1d')](respondWithResult(_0x30c216,0xc9))[_0x2f4e('0x56')](handleError(_0x30c216,null));};exports[_0x2f4e('0x63')]=function(_0x7ceea0,_0x467d9c){if(_0x7ceea0['body']['id']){delete _0x7ceea0[_0x2f4e('0x5c')]['id'];}return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0x7ceea0['params']['id']},'include':[{'model':db[_0x2f4e('0x3c')],'as':'mandatoryDispositionPause'}]})[_0x2f4e('0x1d')](handleEntityNotFound(_0x467d9c,null))[_0x2f4e('0x1d')](saveUpdates(_0x7ceea0['body'],null))[_0x2f4e('0x1d')](respondWithResult(_0x467d9c,null))[_0x2f4e('0x56')](handleError(_0x467d9c,null));};exports[_0x2f4e('0x35')]=function(_0xc5b631,_0x4a671c){return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0xc5b631['params']['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x4a671c,null))[_0x2f4e('0x1d')](removeEntity(_0x4a671c,null))[_0x2f4e('0x56')](handleError(_0x4a671c,null));};exports[_0x2f4e('0x64')]=function(_0x426446,_0x10d75c){return db['FaxAccount'][_0x2f4e('0x64')]()[_0x2f4e('0x1d')](respondWithResult(_0x10d75c,null))[_0x2f4e('0x56')](handleError(_0x10d75c,null));};exports[_0x2f4e('0x65')]=function(_0xd2535,_0x541f9a,_0x919e4b){if(_0xd2535[_0x2f4e('0x5c')]['id']){delete _0xd2535[_0x2f4e('0x5c')]['id'];}return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0xd2535[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x541f9a,null))[_0x2f4e('0x1d')](function(_0x267946){if(_0x267946){_0xd2535[_0x2f4e('0x5c')][_0x2f4e('0x66')]=_0x267946['id'];return db[_0x2f4e('0x67')][_0x2f4e('0x5b')](_0xd2535['body']);}})[_0x2f4e('0x1d')](respondWithResult(_0x541f9a,null))[_0x2f4e('0x56')](handleError(_0x541f9a,null));};exports['getDispositions']=function(_0x184d42,_0x3d9898,_0x9842ff){var _0x47d12b={'raw':![],'where':{}};var _0x46316f={};var _0x574956={'count':0x0,'rows':[]};return db[_0x2f4e('0x3f')][_0x2f4e('0x68')]({'where':{'id':_0x184d42[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x3d9898,null))['then'](function(_0x18478d){if(_0x18478d){_0x46316f['model']=_[_0x2f4e('0x46')](db[_0x2f4e('0x67')][_0x2f4e('0x40')]);_0x46316f[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x184d42[_0x2f4e('0x45')]);_0x46316f[_0x2f4e('0x50')]=_[_0x2f4e('0x47')](_0x46316f[_0x2f4e('0x44')],_0x46316f['query']);_0x47d12b[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x46316f[_0x2f4e('0x44')],qs[_0x2f4e('0x49')](_0x184d42['query'][_0x2f4e('0x49')]));_0x47d12b[_0x2f4e('0x48')]=_0x47d12b[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0x47d12b[_0x2f4e('0x48')]:_0x46316f[_0x2f4e('0x44')];if(!_0x184d42[_0x2f4e('0x45')][_0x2f4e('0x4b')](_0x2f4e('0x4c'))){_0x47d12b[_0x2f4e('0x2e')]=qs[_0x2f4e('0x2e')](_0x184d42['query'][_0x2f4e('0x2e')]);_0x47d12b[_0x2f4e('0x2b')]=qs['offset'](_0x184d42[_0x2f4e('0x45')]['offset']);}_0x47d12b['order']=qs['sort'](_0x184d42[_0x2f4e('0x45')][_0x2f4e('0x4e')]);_0x47d12b['where']=qs[_0x2f4e('0x50')](_[_0x2f4e('0x51')](_0x184d42['query'],_0x46316f[_0x2f4e('0x50')]));_0x47d12b[_0x2f4e('0x4f')]['FaxAccountId']=_0x18478d['id'];if(_0x184d42[_0x2f4e('0x45')][_0x2f4e('0x53')]){_0x47d12b[_0x2f4e('0x4f')]=_['merge'](_0x47d12b[_0x2f4e('0x4f')],{'$or':_[_0x2f4e('0x3e')](_0x47d12b['attributes'],function(_0x11a164){var _0x20cd38={};_0x20cd38[_0x11a164]={'$like':'%'+_0x184d42[_0x2f4e('0x45')][_0x2f4e('0x53')]+'%'};return _0x20cd38;})});}_0x47d12b=_[_0x2f4e('0x52')]({},_0x47d12b,_0x184d42[_0x2f4e('0x69')]);return db[_0x2f4e('0x67')]['count']({'where':_0x47d12b[_0x2f4e('0x4f')]})[_0x2f4e('0x1d')](function(_0x4f883c){_0x574956[_0x2f4e('0x2d')]=_0x4f883c;if(_0x184d42[_0x2f4e('0x45')][_0x2f4e('0x59')]){_0x47d12b[_0x2f4e('0x54')]=[{'all':!![]}];}return db['Disposition'][_0x2f4e('0x6a')](_0x47d12b);})[_0x2f4e('0x1d')](function(_0x54998a){_0x574956[_0x2f4e('0x55')]=_0x54998a;return _0x574956;});}})[_0x2f4e('0x1d')](respondWithFilteredResult(_0x3d9898,_0x47d12b))[_0x2f4e('0x56')](handleError(_0x3d9898,null));};exports[_0x2f4e('0x6b')]=function(_0x285a63,_0x2d043f,_0x3e8f3f){return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0x285a63[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x2d043f,null))[_0x2f4e('0x1d')](function(_0x32ce00){if(_0x32ce00){return _0x32ce00[_0x2f4e('0x6b')](_0x285a63[_0x2f4e('0x45')][_0x2f4e('0x6c')]);}})[_0x2f4e('0x1d')](respondWithStatusCode(_0x2d043f,null))['catch'](handleError(_0x2d043f,null));};exports[_0x2f4e('0x6d')]=function(_0x4d7eab,_0x3e4570,_0xa25ff5){if(_0x4d7eab[_0x2f4e('0x5c')]['id']){delete _0x4d7eab['body']['id'];}return db['FaxAccount'][_0x2f4e('0x5a')]({'where':{'id':_0x4d7eab[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x3e4570,null))[_0x2f4e('0x1d')](function(_0x48ec70){if(_0x48ec70){_0x4d7eab['body'][_0x2f4e('0x66')]=_0x48ec70['id'];return db['CannedAnswer'][_0x2f4e('0x5b')](_0x4d7eab[_0x2f4e('0x5c')]);}})['then'](respondWithResult(_0x3e4570,null))[_0x2f4e('0x56')](handleError(_0x3e4570,null));};exports[_0x2f4e('0x6e')]=function(_0xb4225e,_0x24b715,_0x553a31){var _0x2aafe3={'raw':![],'where':{}};var _0x3a902f={};var _0x51f477={'count':0x0,'rows':[]};return db[_0x2f4e('0x3f')][_0x2f4e('0x68')]({'where':{'id':_0xb4225e[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x24b715,null))[_0x2f4e('0x1d')](function(_0x53b3c1){if(_0x53b3c1){_0x3a902f[_0x2f4e('0x44')]=_['keys'](db[_0x2f4e('0x6f')][_0x2f4e('0x40')]);_0x3a902f[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0xb4225e[_0x2f4e('0x45')]);_0x3a902f['filters']=_[_0x2f4e('0x47')](_0x3a902f['model'],_0x3a902f[_0x2f4e('0x45')]);_0x2aafe3['attributes']=_['intersection'](_0x3a902f[_0x2f4e('0x44')],qs['fields'](_0xb4225e[_0x2f4e('0x45')]['fields']));_0x2aafe3['attributes']=_0x2aafe3[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0x2aafe3[_0x2f4e('0x48')]:_0x3a902f['model'];if(!_0xb4225e[_0x2f4e('0x45')][_0x2f4e('0x4b')]('nolimit')){_0x2aafe3['limit']=qs['limit'](_0xb4225e[_0x2f4e('0x45')]['limit']);_0x2aafe3[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0xb4225e[_0x2f4e('0x45')]['offset']);}_0x2aafe3[_0x2f4e('0x4d')]=qs[_0x2f4e('0x4e')](_0xb4225e['query'][_0x2f4e('0x4e')]);_0x2aafe3[_0x2f4e('0x4f')]=qs[_0x2f4e('0x50')](_[_0x2f4e('0x51')](_0xb4225e[_0x2f4e('0x45')],_0x3a902f[_0x2f4e('0x50')]));_0x2aafe3['where']['FaxAccountId']=_0x53b3c1['id'];if(_0xb4225e[_0x2f4e('0x45')]['filter']){_0x2aafe3[_0x2f4e('0x4f')]=_[_0x2f4e('0x52')](_0x2aafe3[_0x2f4e('0x4f')],{'$or':_['map'](_0x2aafe3[_0x2f4e('0x48')],function(_0x17a873){var _0xc63249={};_0xc63249[_0x17a873]={'$like':'%'+_0xb4225e['query'][_0x2f4e('0x53')]+'%'};return _0xc63249;})});}_0x2aafe3=_[_0x2f4e('0x52')]({},_0x2aafe3,_0xb4225e[_0x2f4e('0x69')]);return db[_0x2f4e('0x6f')][_0x2f4e('0x2d')]({'where':_0x2aafe3[_0x2f4e('0x4f')]})[_0x2f4e('0x1d')](function(_0x519dce){_0x51f477[_0x2f4e('0x2d')]=_0x519dce;if(_0xb4225e[_0x2f4e('0x45')][_0x2f4e('0x59')]){_0x2aafe3[_0x2f4e('0x54')]=[{'all':!![]}];}return db[_0x2f4e('0x6f')][_0x2f4e('0x6a')](_0x2aafe3);})[_0x2f4e('0x1d')](function(_0x19ce7b){_0x51f477[_0x2f4e('0x55')]=_0x19ce7b;return _0x51f477;});}})['then'](respondWithFilteredResult(_0x24b715,_0x2aafe3))[_0x2f4e('0x56')](handleError(_0x24b715,null));};exports[_0x2f4e('0x70')]=function(_0x10571b,_0x1cb37a,_0x32f5e3){return db['FaxAccount'][_0x2f4e('0x5a')]({'where':{'id':_0x10571b[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x1cb37a,null))['then'](function(_0x5d5fd3){if(_0x5d5fd3){return _0x5d5fd3['removeAnswers'](_0x10571b[_0x2f4e('0x45')][_0x2f4e('0x6c')]);}})[_0x2f4e('0x1d')](respondWithStatusCode(_0x1cb37a,null))[_0x2f4e('0x56')](handleError(_0x1cb37a,null));};exports[_0x2f4e('0x71')]=function(_0x42e5cc,_0x5ae937,_0x332d2f){return db[_0x2f4e('0x72')]['find']({'where':{'id':_0x42e5cc[_0x2f4e('0x58')]['id']}})['then'](handleEntityNotFound(_0x5ae937,null))[_0x2f4e('0x1d')](function(_0xb25f){if(_0xb25f){return _0xb25f[_0x2f4e('0x71')](_0x42e5cc[_0x2f4e('0x5c')][_0x2f4e('0x6c')],_[_0x2f4e('0x73')](_0x42e5cc['body'],[_0x2f4e('0x6c'),'id'])||{});}})[_0x2f4e('0x1d')](respondWithResult(_0x5ae937,null))[_0x2f4e('0x56')](handleError(_0x5ae937,null));};exports['getInteractions']=function(_0x550ac2,_0x24755a,_0x1b6cf8){var _0x134046={'raw':![],'where':{}};var _0x4d3289={};var _0x3f57cd={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x550ac2[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x24755a,null))[_0x2f4e('0x1d')](function(_0x6eef3d){if(_0x6eef3d){_0x4d3289[_0x2f4e('0x44')]=_['keys'](db[_0x2f4e('0x72')][_0x2f4e('0x40')]);_0x4d3289[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x550ac2[_0x2f4e('0x45')]);_0x4d3289['filters']=_[_0x2f4e('0x47')](_0x4d3289[_0x2f4e('0x44')],_0x4d3289['query']);_0x134046[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x4d3289['model'],qs['fields'](_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x49')]));_0x134046['attributes']=_0x134046[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0x134046[_0x2f4e('0x48')]:_0x4d3289[_0x2f4e('0x44')];if(!_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x4b')](_0x2f4e('0x4c'))){_0x134046[_0x2f4e('0x2e')]=qs[_0x2f4e('0x2e')](_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x2e')]);_0x134046[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0x550ac2[_0x2f4e('0x45')]['offset']);}_0x134046[_0x2f4e('0x4d')]=qs['sort'](_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x4e')]);_0x134046[_0x2f4e('0x4f')]=qs['filters'](_[_0x2f4e('0x51')](_0x550ac2[_0x2f4e('0x45')],_0x4d3289[_0x2f4e('0x50')]));_0x134046[_0x2f4e('0x4f')]['FaxAccountId']=_0x6eef3d['id'];if(_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x53')]){_0x134046['where']=_['merge'](_0x134046['where'],{'$or':_['map'](_0x134046[_0x2f4e('0x48')],function(_0x23464d){var _0x1dc6b3={};_0x1dc6b3[_0x23464d]={'$like':'%'+_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x53')]+'%'};return _0x1dc6b3;})});}_0x134046=_['merge']({},_0x134046,_0x550ac2[_0x2f4e('0x69')]);return db[_0x2f4e('0x72')][_0x2f4e('0x2d')]({'where':_0x134046[_0x2f4e('0x4f')]})[_0x2f4e('0x1d')](function(_0x17b491){_0x3f57cd[_0x2f4e('0x2d')]=_0x17b491;if(_0x550ac2['query'][_0x2f4e('0x59')]){_0x134046[_0x2f4e('0x54')]=[{'model':db[_0x2f4e('0x74')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x2f4e('0x75'),'attributes':[_0x2f4e('0x39'),_0x2f4e('0x76'),_0x2f4e('0x77')],'required':![]},{'model':db[_0x2f4e('0x78')],'as':_0x2f4e('0x79'),'attributes':['id','name',_0x2f4e('0x7a')],'where':_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x7b')]?{'id':_0x550ac2['query'][_0x2f4e('0x7b')]}:undefined,'required':_0x550ac2[_0x2f4e('0x45')][_0x2f4e('0x7b')]?!![]:![]}];}return db['FaxInteraction'][_0x2f4e('0x6a')](_0x134046);})[_0x2f4e('0x1d')](function(_0x436ae7){_0x3f57cd['rows']=_0x436ae7;return _0x3f57cd;});}})['then'](respondWithFilteredResult(_0x24755a,_0x134046))[_0x2f4e('0x56')](handleError(_0x24755a,null));};exports['addApplications']=function(_0x2045c8,_0x26ade8){var _0x344715=_0x2045c8[_0x2f4e('0x58')]['id'];var _0x1996f0=_0x2045c8['body'];var _0x34e22e=0xc8;var _0x37de5f=null;return db[_0x2f4e('0x7c')][_0x2f4e('0x7d')]({'isolationLevel':db['sequelize'][_0x2f4e('0x7e')][_0x2f4e('0x7f')][_0x2f4e('0x80')]},function(_0xd6d3c5){return db[_0x2f4e('0x3f')]['findOne']({'where':{'id':_0x344715},'transaction':_0xd6d3c5})[_0x2f4e('0x1d')](function(_0x95ac4e){if(_0x95ac4e){return db[_0x2f4e('0x81')][_0x2f4e('0x35')]({'where':{'FaxAccountId':_0x344715},'transaction':_0xd6d3c5})['then'](function(){var _0x40976f=_[_0x2f4e('0x3e')](_0x1996f0,function(_0x430389){_0x430389[_0x2f4e('0x66')]=_0x344715;return _0x430389;});return db[_0x2f4e('0x81')]['bulkCreate'](_0x40976f,{'transaction':_0xd6d3c5});});}else{_0x34e22e=0x194;_0x37de5f=[];}});})[_0x2f4e('0x1d')](function(){if(_0x34e22e!==0x194){return db[_0x2f4e('0x81')][_0x2f4e('0x82')]({'where':{'FaxAccountId':_0x344715},'order':_0x2f4e('0x83')})[_0x2f4e('0x1d')](function(_0x3a1303){_0x37de5f=_0x3a1303;});}})[_0x2f4e('0x56')](function(_0x701ca2){_0x34e22e=0x1f4;logger[_0x2f4e('0x24')](_0x701ca2['stack']);if(_0x701ca2[_0x2f4e('0x39')]){delete _0x701ca2[_0x2f4e('0x39')];}_0x37de5f=_0x701ca2;})['finally'](function(){if(_0x37de5f===null){_0x26ade8[_0x2f4e('0x28')](_0x34e22e);}else{if(_0x34e22e===0x1f4){_0x26ade8[_0x2f4e('0x2a')](_0x34e22e)[_0x2f4e('0x3a')](_0x37de5f);}else{_0x26ade8[_0x2f4e('0x2a')](_0x34e22e)[_0x2f4e('0x31')](_0x37de5f);}}});};exports[_0x2f4e('0x84')]=function(_0x109a49,_0x5c2b4d,_0x447097){var _0x1ca32c={};var _0x187637={};var _0x2804fc;var _0x4b23ea;return db[_0x2f4e('0x3f')]['findOne']({'where':{'id':_0x109a49[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x5c2b4d,null))[_0x2f4e('0x1d')](function(_0x56444e){if(_0x56444e){_0x2804fc=_0x56444e;_0x187637[_0x2f4e('0x44')]=_['keys'](db[_0x2f4e('0x81')][_0x2f4e('0x40')]);_0x187637[_0x2f4e('0x45')]=_['keys'](_0x109a49['query']);_0x187637[_0x2f4e('0x50')]=_[_0x2f4e('0x47')](_0x187637['model'],_0x187637[_0x2f4e('0x45')]);_0x1ca32c[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x187637[_0x2f4e('0x44')],qs[_0x2f4e('0x49')](_0x109a49[_0x2f4e('0x45')][_0x2f4e('0x49')]));_0x1ca32c[_0x2f4e('0x48')]=_0x1ca32c[_0x2f4e('0x48')]['length']?_0x1ca32c[_0x2f4e('0x48')]:_0x187637[_0x2f4e('0x44')];_0x1ca32c['order']=qs[_0x2f4e('0x4e')](_0x109a49[_0x2f4e('0x45')][_0x2f4e('0x4e')]);_0x1ca32c[_0x2f4e('0x4f')]=qs['filters'](_[_0x2f4e('0x51')](_0x109a49['query'],_0x187637[_0x2f4e('0x50')]));if(_0x109a49['query']['filter']){_0x1ca32c[_0x2f4e('0x4f')]=_[_0x2f4e('0x52')](_0x1ca32c[_0x2f4e('0x4f')],{'$or':_[_0x2f4e('0x3e')](_0x1ca32c[_0x2f4e('0x48')],function(_0x183b95){var _0xb11de5={};_0xb11de5[_0x183b95]={'$like':'%'+_0x109a49[_0x2f4e('0x45')][_0x2f4e('0x53')]+'%'};return _0xb11de5;})});}_0x1ca32c=_[_0x2f4e('0x52')]({},_0x1ca32c,_0x109a49[_0x2f4e('0x69')]);return _0x2804fc[_0x2f4e('0x84')](_0x1ca32c);}})[_0x2f4e('0x1d')](function(_0x52f301){if(_0x52f301){_0x4b23ea=_0x52f301[_0x2f4e('0x4a')];if(!_0x109a49[_0x2f4e('0x45')][_0x2f4e('0x4b')]('nolimit')){_0x1ca32c[_0x2f4e('0x2e')]=qs[_0x2f4e('0x2e')](_0x109a49[_0x2f4e('0x45')][_0x2f4e('0x2e')]);_0x1ca32c[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0x109a49[_0x2f4e('0x45')]['offset']);}return _0x2804fc[_0x2f4e('0x84')](_0x1ca32c);}})[_0x2f4e('0x1d')](function(_0x3ac547){if(_0x3ac547){return _0x3ac547?{'count':_0x4b23ea,'rows':_0x3ac547}:null;}})[_0x2f4e('0x1d')](respondWithResult(_0x5c2b4d,null))[_0x2f4e('0x56')](handleError(_0x5c2b4d,null));};function Extension(_0x5d64a1,_0x359583,_0x292c0c,_0x3da39a){this[_0x2f4e('0x85')]=_0x2f4e('0x86');this['exten']=_0x5d64a1['localstationid'];this['app']=_0x3da39a;this[_0x2f4e('0x42')]=_0x2f4e('0x87');this[_0x2f4e('0x88')]='Fax\x20Extension';this[_0x2f4e('0x66')]=_0x5d64a1['id'];this[_0x2f4e('0x83')]=_0x359583;this[_0x2f4e('0x89')]=_0x292c0c;}function createExtensionsReciveFax(_0x25e770){var _0x2281d7=0x1;var _0x4aff71=[];_0x4aff71[_0x2f4e('0x8a')](new Extension(_0x25e770,_0x2281d7,'',_0x2f4e('0x8b')));_0x2281d7+=0x1;_0x4aff71['push'](new Extension(_0x25e770,_0x2281d7,_0x2f4e('0x8c'),_0x2f4e('0x8d')));_0x2281d7+=0x1;for(var _0x2dfd35 in _0x25e770){if(_0x25e770[_0x2f4e('0x4b')](_0x2dfd35)&&(_0x2dfd35===_0x2f4e('0x8e')||_0x2dfd35===_0x2f4e('0x8f')||_0x2dfd35==='gateway'||_0x2dfd35===_0x2f4e('0x90')||_0x2dfd35==='headerinfo'||_0x2dfd35===_0x2f4e('0x91')||_0x2dfd35===_0x2f4e('0x92')||_0x2dfd35===_0x2f4e('0x93')||_0x2dfd35===_0x2f4e('0x94'))){_0x4aff71['push'](new Extension(_0x25e770,_0x2281d7,'FAXOPT('+_0x2dfd35+')='+_0x25e770[_0x2dfd35],_0x2f4e('0x8d')));_0x2281d7+=0x1;}}_0x4aff71[_0x2f4e('0x8a')](new Extension(_0x25e770,_0x2281d7,'6',_0x2f4e('0x95')));_0x2281d7+=0x1;_0x4aff71[_0x2f4e('0x8a')](new Extension(_0x25e770,_0x2281d7,'/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',_0x2f4e('0x96')));_0x2281d7=0x0;return _0x4aff71;}exports[_0x2f4e('0x97')]=function(_0x5574db,_0x33b407,_0x454906){var _0x5c70b4;return db[_0x2f4e('0x7c')][_0x2f4e('0x7d')](function(_0x15f5ce){return db[_0x2f4e('0x3f')][_0x2f4e('0x5b')](_0x5574db['body'],{'transaction':_0x15f5ce})[_0x2f4e('0x1d')](function(_0x3e1feb){_0x5c70b4=_0x3e1feb['get']({'plain':!![]});return db['VoiceExtension'][_0x2f4e('0x98')](createExtensionsReciveFax(_0x5c70b4),{'transaction':_0x15f5ce});});})['then'](function(){return _0x5c70b4;})[_0x2f4e('0x1d')](respondWithResult(_0x33b407,null))[_0x2f4e('0x56')](handleError(_0x33b407,null));};exports[_0x2f4e('0x99')]=function(_0x3a70f7,_0x685d23,_0x10ba85){var _0x47901d;return db['sequelize'][_0x2f4e('0x7d')](function(_0x53aafa){return db[_0x2f4e('0x3f')][_0x2f4e('0x63')](_0x3a70f7[_0x2f4e('0x5c')],{'where':{'id':_0x3a70f7[_0x2f4e('0x5c')]['id']},'transaction':_0x53aafa})[_0x2f4e('0x1d')](function(_0x29d6e8){return db[_0x2f4e('0x9a')][_0x2f4e('0x35')]({'where':{'FaxAccountId':_0x3a70f7[_0x2f4e('0x5c')]['id']},'transaction':_0x53aafa})['then'](function(_0x21db71){return db[_0x2f4e('0x9a')][_0x2f4e('0x98')](createExtensionsReciveFax(_[_0x2f4e('0x73')](_0x3a70f7[_0x2f4e('0x5c')],[_0x2f4e('0x9b'),'key','createdAt','updatedAt',_0x2f4e('0x9c'),'ListId'])),{'transaction':_0x53aafa});});});})[_0x2f4e('0x1d')](function(){return db[_0x2f4e('0x3f')]['findById'](_0x3a70f7[_0x2f4e('0x5c')]['id']);})['then'](respondWithResult(_0x685d23,null))['catch'](handleError(_0x685d23,null));};exports[_0x2f4e('0x9d')]=function(_0x41e4ab,_0x5662c8,_0x42f3c4){var _0xe3b7db={'raw':!![],'where':{}};var _0x1937f6={};var _0x784f0e={'count':0x0,'rows':[]};return db[_0x2f4e('0x3f')][_0x2f4e('0x68')]({'where':{'id':_0x41e4ab[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x5662c8,null))['then'](function(_0xbe433){if(_0xbe433){_0x1937f6[_0x2f4e('0x44')]=_[_0x2f4e('0x46')](db['FaxMessage']['rawAttributes']);_0x1937f6[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x41e4ab[_0x2f4e('0x45')]);_0x1937f6[_0x2f4e('0x50')]=_[_0x2f4e('0x47')](_0x1937f6[_0x2f4e('0x44')],_0x1937f6[_0x2f4e('0x45')]);_0xe3b7db['attributes']=_[_0x2f4e('0x47')](_0x1937f6[_0x2f4e('0x44')],qs[_0x2f4e('0x49')](_0x41e4ab[_0x2f4e('0x45')]['fields']));_0xe3b7db[_0x2f4e('0x48')]=_0xe3b7db[_0x2f4e('0x48')][_0x2f4e('0x4a')]?_0xe3b7db[_0x2f4e('0x48')]:_0x1937f6['model'];if(!_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x4b')](_0x2f4e('0x4c'))){_0xe3b7db['limit']=qs[_0x2f4e('0x2e')](_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x2e')]);_0xe3b7db[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0x41e4ab[_0x2f4e('0x45')]['offset']);}_0xe3b7db[_0x2f4e('0x4d')]=qs[_0x2f4e('0x4e')](_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x4e')]);_0xe3b7db[_0x2f4e('0x4f')]=qs[_0x2f4e('0x50')](_[_0x2f4e('0x51')](_0x41e4ab[_0x2f4e('0x45')],_0x1937f6[_0x2f4e('0x50')]));_0xe3b7db[_0x2f4e('0x4f')][_0x2f4e('0x66')]=_0xbe433['id'];if(_0x41e4ab['query']['filter']){_0xe3b7db[_0x2f4e('0x4f')]=_['merge'](_0xe3b7db['where'],{'$or':_['map'](_0xe3b7db[_0x2f4e('0x48')],function(_0x49c7c8){var _0x35eb1c={};_0x35eb1c[_0x49c7c8]={'$like':'%'+_0x41e4ab[_0x2f4e('0x45')]['filter']+'%'};return _0x35eb1c;})});}if(_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x9e')]){var _0x5c236e=_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x9e')][_0x2f4e('0x9f')](',');var _0x579904={};_0x579904[_0x5c236e[0x0]]={'$gte':moment(_0x5c236e[0x1])['format'](_0x2f4e('0xa0'))};_0xe3b7db[_0x2f4e('0x4f')]=_['merge'](_0xe3b7db[_0x2f4e('0x4f')],_0x579904);}_0xe3b7db=_[_0x2f4e('0x52')]({},_0xe3b7db,_0x41e4ab[_0x2f4e('0x69')]);return db[_0x2f4e('0xa1')][_0x2f4e('0x2d')]({'where':_0xe3b7db['where']})[_0x2f4e('0x1d')](function(_0x1d69e6){_0x784f0e[_0x2f4e('0x2d')]=_0x1d69e6;if(_0x41e4ab[_0x2f4e('0x45')][_0x2f4e('0x59')]){_0xe3b7db[_0x2f4e('0x54')]=[{'all':!![]}];}return db[_0x2f4e('0xa1')]['findAll'](_0xe3b7db);})['then'](function(_0x14c68e){_0x784f0e[_0x2f4e('0x55')]=_0x14c68e;return _0x784f0e;});}})['then'](respondWithFilteredResult(_0x5662c8,_0xe3b7db))[_0x2f4e('0x56')](handleError(_0x5662c8,null));};exports[_0x2f4e('0x3a')]=function(_0x46af56,_0x40d369,_0x228da8){var _0x1a3794,_0x51a1c9={},_0x1ae1fb;if(_0x46af56['body']['to']){_0x1ae1fb=_0x46af56[_0x2f4e('0x5c')]['to'][0x0];}return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0x46af56[_0x2f4e('0x58')]['id']},'include':[{'model':db[_0x2f4e('0xa2')],'as':_0x2f4e('0xa3'),'include':[{'model':db[_0x2f4e('0x74')],'as':_0x2f4e('0xa4'),'where':{'fax':_0x1ae1fb},'limit':0x1,'order':[[_0x2f4e('0xa5'),_0x2f4e('0xa6')]]}]}]})[_0x2f4e('0x1d')](handleEntityNotFound(_0x40d369,null))[_0x2f4e('0x1d')](function(_0x433380){_0x1a3794=_0x433380;if(_0x46af56[_0x2f4e('0x5c')][_0x2f4e('0xa7')]&&_0x46af56[_0x2f4e('0x5c')]['attachments'][_0x2f4e('0x4a')]){for(var _0x9c921d=0x0;_0x9c921d<_0x46af56['body'][_0x2f4e('0xa7')][_0x2f4e('0x4a')];_0x9c921d+=0x1){_0x46af56[_0x2f4e('0x5c')]['attachments'][_0x9c921d]={'filename':_0x46af56[_0x2f4e('0x5c')][_0x2f4e('0xa7')][_0x9c921d]['name'],'id':_0x46af56[_0x2f4e('0x5c')][_0x2f4e('0xa7')][_0x9c921d]['id'],'path':path[_0x2f4e('0xa8')](config[_0x2f4e('0xa9')],_0x2f4e('0xaa'),_0x46af56[_0x2f4e('0x5c')][_0x2f4e('0xa7')][_0x9c921d][_0x2f4e('0xab')])};}}return respondWithRpcPromise('CheckAfterSend','CheckAfterSend',{'FaxAccountId':_['isNil'](_0x46af56[_0x2f4e('0x58')]['id'])?undefined:_0x46af56[_0x2f4e('0x58')]['id'],'path':_[_0x2f4e('0xac')](_0x46af56['body'][_0x2f4e('0xa7')][0x0][_0x2f4e('0xad')])?undefined:_0x46af56['body'][_0x2f4e('0xa7')][0x0][_0x2f4e('0xad')],'fax':_[_0x2f4e('0xac')](_0x46af56[_0x2f4e('0x5c')]['to'][0x0])?undefined:_0x46af56['body']['to'][0x0]},client9002);})[_0x2f4e('0x1d')](function(){if(_0x1a3794){if(_[_0x2f4e('0xac')](_0x46af56[_0x2f4e('0x5c')]['from'])){_0x46af56[_0x2f4e('0x5c')][_0x2f4e('0xae')]=util[_0x2f4e('0xaf')](_0x2f4e('0xb0'),_0x1a3794[_0x2f4e('0x39')],_0x1a3794[_0x2f4e('0xb1')]);}if(_0x1a3794[_0x2f4e('0xa3')]){if(_0x1a3794[_0x2f4e('0xa3')][_0x2f4e('0xa4')][_0x2f4e('0x4a')]){return _0x1a3794['List']['Contacts'][0x0];}else{return db['CmContact']['create'](_[_0x2f4e('0xb2')](_0x46af56[_0x2f4e('0x5c')],{'firstName':_0x46af56['body']['to'][0x0],'phone':_0x46af56[_0x2f4e('0x5c')]['to'][0x0],'fax':_0x46af56['body']['to'][0x0],'ListId':_0x1a3794[_0x2f4e('0xb3')]}));}}else{throw new Error(_0x2f4e('0xb4'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x2f4e('0x1d')](function(_0x113db2){if(_0x113db2){return db[_0x2f4e('0x72')][_0x2f4e('0x5a')]({'where':{'ContactId':_0x113db2['id'],'closed':![],'FaxAccountId':_0x1a3794['id']}})[_0x2f4e('0x1d')](function(_0x2238f3){if(_0x2238f3){return[_0x2238f3,![]];}return db['FaxInteraction']['create']({'UserId':_0x46af56[_0x2f4e('0x5d')]['id'],'ContactId':_0x113db2['id'],'FaxAccountId':_0x1a3794['id'],'fax':_0x46af56[_0x2f4e('0x5c')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x2f4e('0x52')](_0x46af56[_0x2f4e('0x5c')],{'read':![],'body':_0x46af56[_0x2f4e('0x5c')]['attachments'][0x0][_0x2f4e('0xb5')],'FaxAccountId':_0x1a3794['id'],'UserId':_0x46af56[_0x2f4e('0x5d')]['id'],'ContactId':_0x113db2['id'],'AttachmentId':_0x46af56['body']['attachments'][0x0]['id']})]},{'include':[{'model':db[_0x2f4e('0xa1')],'as':_0x2f4e('0xb6')}]})['then'](function(_0x215000){return[_0x215000,!![]];});});}else{throw new Error(_0x2f4e('0xb7'));}})[_0x2f4e('0xb8')](function(_0x5e42fb,_0x5f10bb){if(_0x5f10bb){return _0x5e42fb;}return db[_0x2f4e('0xa1')][_0x2f4e('0x5b')]({'direction':_0x2f4e('0xb9'),'read':![],'body':_0x46af56['body'][_0x2f4e('0xa7')][0x0][_0x2f4e('0xb5')],'FaxAccountId':_0x1a3794['id'],'FaxInteractionId':_0x5e42fb['id'],'UserId':_0x46af56[_0x2f4e('0x5d')]['id'],'ContactId':_0x5e42fb['ContactId'],'AttachmentId':_0x46af56[_0x2f4e('0x5c')]['attachments'][0x0]['id']})[_0x2f4e('0x1d')](function(_0x2aac2b){_0x5e42fb[_0x2f4e('0xba')][_0x2f4e('0xb6')]=[];_0x5e42fb[_0x2f4e('0xba')][_0x2f4e('0xb6')][_0x2f4e('0x8a')](_0x2aac2b['dataValues']);return _0x5e42fb;});})[_0x2f4e('0x1d')](function(_0xae59d8){respondWithRpcPromise(_0x2f4e('0xbb'),_0x2f4e('0xbb'),{'FaxAccountId':_[_0x2f4e('0xac')](_0x46af56['params']['id'])?undefined:_0x46af56[_0x2f4e('0x58')]['id'],'path':_[_0x2f4e('0xac')](_0x46af56['body'][_0x2f4e('0xa7')][0x0][_0x2f4e('0xad')])?undefined:_0x46af56['body'][_0x2f4e('0xa7')][0x0][_0x2f4e('0xad')],'fax':_['isNil'](_0x46af56[_0x2f4e('0x5c')]['to'][0x0])?undefined:_0x46af56[_0x2f4e('0x5c')]['to'][0x0],'AttachmentId':_0x46af56['body'][_0x2f4e('0xa7')][0x0]['id']},client9002)[_0x2f4e('0x1d')](function(_0x4d9b19){logger[_0x2f4e('0x1e')]('SendFaxRpc,\x20%s',_0x4d9b19);})['catch'](function(_0x167543){logger[_0x2f4e('0x1e')](_0x2f4e('0xbc'),_0x167543);});return _0xae59d8;})['then'](respondWithResult(_0x40d369,null))[_0x2f4e('0x56')](handleError(_0x40d369,null));};exports['addAgents']=function(_0x1cbc95,_0x28dec2,_0x3154f3){return db['FaxAccount'][_0x2f4e('0x5a')]({'where':{'id':_0x1cbc95[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x28dec2,null))[_0x2f4e('0x1d')](function(_0x5269de){if(_0x5269de){return _0x5269de[_0x2f4e('0xbd')](_0x1cbc95[_0x2f4e('0x5c')][_0x2f4e('0x6c')],_[_0x2f4e('0x73')](_0x1cbc95[_0x2f4e('0x5c')],['ids','id'])||{})[_0x2f4e('0xb8')](function(_0x562929){for(var _0x400333=0x0;_0x400333<_0x1cbc95[_0x2f4e('0x5c')][_0x2f4e('0x6c')][_0x2f4e('0x4a')];_0x400333+=0x1){socket[_0x2f4e('0xbe')](_0x2f4e('0xbf'),{'UserId':Number(_0x1cbc95['body'][_0x2f4e('0x6c')][_0x400333]),'FaxAccountId':Number(_0x1cbc95[_0x2f4e('0x58')]['id'])});}return _0x562929;});}})[_0x2f4e('0x1d')](respondWithResult(_0x28dec2,null))['catch'](handleError(_0x28dec2,null));};exports['removeAgents']=function(_0x5b6b78,_0x290f19,_0x56fe80){return db[_0x2f4e('0x3f')][_0x2f4e('0x5a')]({'where':{'id':_0x5b6b78[_0x2f4e('0x58')]['id']}})['then'](handleEntityNotFound(_0x290f19,null))[_0x2f4e('0x1d')](function(_0x3b38fa){if(_0x3b38fa){return _0x3b38fa[_0x2f4e('0xc0')](_0x5b6b78[_0x2f4e('0x45')]['ids'])[_0x2f4e('0x1d')](function(){if(_[_0x2f4e('0xc1')](_0x5b6b78['query'][_0x2f4e('0x6c')])){for(var _0x475960=0x0;_0x475960<_0x5b6b78['query'][_0x2f4e('0x6c')][_0x2f4e('0x4a')];_0x475960+=0x1){socket[_0x2f4e('0xbe')](_0x2f4e('0xc2'),{'UserId':Number(_0x5b6b78[_0x2f4e('0x45')][_0x2f4e('0x6c')][_0x475960]),'FaxAccountId':Number(_0x5b6b78[_0x2f4e('0x58')]['id'])});}}else{socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x5b6b78['query'][_0x2f4e('0x6c')]),'FaxAccountId':Number(_0x5b6b78[_0x2f4e('0x58')]['id'])});}});}})[_0x2f4e('0x1d')](respondWithStatusCode(_0x290f19,null))[_0x2f4e('0x56')](handleError(_0x290f19,null));};exports[_0x2f4e('0xc3')]=function(_0x2fa0d9,_0x8a6549,_0xf9cf16){var _0x31fab1={};var _0x1b8f19={};var _0x1d0cbf;var _0x19aab8;return db[_0x2f4e('0x3f')][_0x2f4e('0x68')]({'where':{'id':_0x2fa0d9[_0x2f4e('0x58')]['id']}})[_0x2f4e('0x1d')](handleEntityNotFound(_0x8a6549,null))[_0x2f4e('0x1d')](function(_0x14cbbf){if(_0x14cbbf){_0x1d0cbf=_0x14cbbf;_0x1b8f19[_0x2f4e('0x44')]=_[_0x2f4e('0x46')](db[_0x2f4e('0xc4')][_0x2f4e('0x40')]);_0x1b8f19[_0x2f4e('0x45')]=_[_0x2f4e('0x46')](_0x2fa0d9[_0x2f4e('0x45')]);_0x1b8f19[_0x2f4e('0x50')]=_[_0x2f4e('0x47')](_0x1b8f19[_0x2f4e('0x44')],_0x1b8f19[_0x2f4e('0x45')]);_0x31fab1[_0x2f4e('0x48')]=_[_0x2f4e('0x47')](_0x1b8f19[_0x2f4e('0x44')],qs['fields'](_0x2fa0d9[_0x2f4e('0x45')]['fields']));_0x31fab1['attributes']=_0x31fab1['attributes'][_0x2f4e('0x4a')]?_0x31fab1[_0x2f4e('0x48')]:_0x1b8f19[_0x2f4e('0x44')];_0x31fab1[_0x2f4e('0x4d')]=qs[_0x2f4e('0x4e')](_0x2fa0d9['query']['sort']);_0x31fab1['where']=qs[_0x2f4e('0x50')](_['pick'](_0x2fa0d9['query'],_0x1b8f19['filters']));if(_0x2fa0d9[_0x2f4e('0x45')][_0x2f4e('0x53')]){_0x31fab1[_0x2f4e('0x4f')]=_[_0x2f4e('0x52')](_0x31fab1[_0x2f4e('0x4f')],{'$or':_[_0x2f4e('0x3e')](_0x31fab1['attributes'],function(_0xa1063c){var _0x3ac6f3={};_0x3ac6f3[_0xa1063c]={'$like':'%'+_0x2fa0d9[_0x2f4e('0x45')]['filter']+'%'};return _0x3ac6f3;})});}_0x31fab1=_[_0x2f4e('0x52')]({},_0x31fab1,_0x2fa0d9[_0x2f4e('0x69')]);return _0x1d0cbf[_0x2f4e('0xc3')](_0x31fab1);}})[_0x2f4e('0x1d')](function(_0xf2b604){if(_0xf2b604){_0x19aab8=_0xf2b604['length'];if(!_0x2fa0d9[_0x2f4e('0x45')][_0x2f4e('0x4b')](_0x2f4e('0x4c'))){_0x31fab1[_0x2f4e('0x2e')]=qs[_0x2f4e('0x2e')](_0x2fa0d9[_0x2f4e('0x45')][_0x2f4e('0x2e')]);_0x31fab1[_0x2f4e('0x2b')]=qs[_0x2f4e('0x2b')](_0x2fa0d9[_0x2f4e('0x45')][_0x2f4e('0x2b')]);}return _0x1d0cbf[_0x2f4e('0xc3')](_0x31fab1);}})['then'](function(_0xcf0ca0){if(_0xcf0ca0){return _0xcf0ca0?{'count':_0x19aab8,'rows':_0xcf0ca0}:null;}})[_0x2f4e('0x1d')](respondWithResult(_0x8a6549,null))['catch'](handleError(_0x8a6549,null));};
\ No newline at end of file
+var _0xeecb=['format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','Contacts','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','fax','List','defaults','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','catch','sendStatus','status','end','json','undefined','limit','count','set','apply','reject','save','destroy','stack','name','send','index','Pause','FaxAccount','rawAttributes','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','filters','pick','merge','map','type','VIRTUAL','filter','options','includeAll','findAll','rows','params','mandatoryDispositionPause','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','FaxAccountId','getDispositions','findOne','Disposition','include','ids','addAnswer','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','Owner','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','getApplications','from-voip-provider','exten','localstationid','app','system','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','Set','ecm','gateway','headerinfo','maxrate','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','createdAt','updatedAt','getMessages','$gte','split'];(function(_0x28226e,_0xc42706){var _0xbc690=function(_0x44ad27){while(--_0x44ad27){_0x28226e['push'](_0x28226e['shift']());}};_0xbc690(++_0xc42706);}(_0xeecb,0xe8));var _0xbeec=function(_0x5681e5,_0x4a17a4){_0x5681e5=_0x5681e5-0x0;var _0x5c343a=_0xeecb[_0x5681e5];return _0x5c343a;};'use strict';var emlformat=require(_0xbeec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbeec('0x1'));var jsonpatch=require(_0xbeec('0x2'));var rp=require(_0xbeec('0x3'));var moment=require(_0xbeec('0x4'));var BPromise=require(_0xbeec('0x5'));var Mustache=require(_0xbeec('0x6'));var util=require('util');var path=require('path');var sox=require(_0xbeec('0x7'));var csv=require('to-csv');var ejs=require(_0xbeec('0x8'));var fs=require('fs');var fs_extra=require(_0xbeec('0x9'));var _=require(_0xbeec('0xa'));var squel=require('squel');var crypto=require(_0xbeec('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbeec('0xc'));var querystring=require(_0xbeec('0xd'));var Papa=require(_0xbeec('0xe'));var Redis=require(_0xbeec('0xf'));var authService=require(_0xbeec('0x10'));var qs=require(_0xbeec('0x11'));var as=require(_0xbeec('0x12'));var hardwareService=require(_0xbeec('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbeec('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xbeec('0x15'));var db=require(_0xbeec('0x16'))['db'];config['redis']=_['defaults'](config[_0xbeec('0x17')],{'host':_0xbeec('0x18'),'port':0x18eb});var socket=require(_0xbeec('0x19'))(new Redis(config[_0xbeec('0x17')]));require(_0xbeec('0x1a'))[_0xbeec('0x1b')](socket);var jayson=require(_0xbeec('0x1c'));var client=jayson[_0xbeec('0x1d')][_0xbeec('0x1e')]({'port':0x232c});var client9002=jayson[_0xbeec('0x1d')][_0xbeec('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x395e8b,_0x362280,_0xb7a637,_0x48e663){return new BPromise(function(_0x17c836,_0x2195a7){var _0x4964dd=_0x48e663||client;return _0x4964dd['request'](_0x395e8b,_0xb7a637)[_0xbeec('0x1f')](function(_0x262d25){logger['info'](_0xbeec('0x20'),_0x362280,'request\x20sent');logger[_0xbeec('0x21')](_0xbeec('0x22'),_0x362280,'request\x20sent',JSON[_0xbeec('0x23')](_0x262d25));if(_0x262d25[_0xbeec('0x24')]){if(_0x262d25[_0xbeec('0x24')][_0xbeec('0x25')]===0x1f4){logger[_0xbeec('0x24')]('FaxAccount,\x20%s,\x20%s',_0x362280,_0x262d25[_0xbeec('0x24')]['message']);return _0x2195a7(_0x262d25['error'][_0xbeec('0x26')]);}logger[_0xbeec('0x24')](_0xbeec('0x20'),_0x362280,_0x262d25[_0xbeec('0x24')][_0xbeec('0x26')]);return _0x17c836(_0x262d25['error'][_0xbeec('0x26')]);}else{logger[_0xbeec('0x27')]('FaxAccount,\x20%s,\x20%s',_0x362280,_0xbeec('0x28'));_0x17c836(_0x262d25['result'][_0xbeec('0x26')]);}})[_0xbeec('0x29')](function(_0x4c1c3d){logger[_0xbeec('0x24')](_0xbeec('0x20'),_0x362280,_0x4c1c3d);_0x2195a7(_0x4c1c3d);});});}function respondWithStatusCode(_0x3b5efb,_0x236065){_0x236065=_0x236065||0xcc;return function(_0xcb6ec2){if(_0xcb6ec2){return _0x3b5efb[_0xbeec('0x2a')](_0x236065);}return _0x3b5efb[_0xbeec('0x2b')](_0x236065)[_0xbeec('0x2c')]();};}function respondWithResult(_0x5243e,_0x2a1893){_0x2a1893=_0x2a1893||0xc8;return function(_0x18a7c6){if(_0x18a7c6){return _0x5243e[_0xbeec('0x2b')](_0x2a1893)[_0xbeec('0x2d')](_0x18a7c6);}};}function respondWithFilteredResult(_0x27542e,_0x3b478b){return function(_0x2cfc79){if(_0x2cfc79){var _0x5928cb=typeof _0x3b478b['offset']===_0xbeec('0x2e')&&typeof _0x3b478b[_0xbeec('0x2f')]===_0xbeec('0x2e');var _0x2f8f49=_0x2cfc79[_0xbeec('0x30')];var _0x1187c0=_0x5928cb?0x0:_0x3b478b['offset'];var _0x109319=_0x5928cb?_0x2cfc79['count']:_0x3b478b['offset']+_0x3b478b[_0xbeec('0x2f')];var _0x1d7041;if(_0x109319>=_0x2f8f49){_0x109319=_0x2f8f49;_0x1d7041=0xc8;}else{_0x1d7041=0xce;}_0x27542e[_0xbeec('0x2b')](_0x1d7041);return _0x27542e[_0xbeec('0x31')]('Content-Range',_0x1187c0+'-'+_0x109319+'/'+_0x2f8f49)[_0xbeec('0x2d')](_0x2cfc79);}return null;};}function patchUpdates(_0x18d390){return function(_0x150acf){try{jsonpatch[_0xbeec('0x32')](_0x150acf,_0x18d390,!![]);}catch(_0x43f4d6){return BPromise[_0xbeec('0x33')](_0x43f4d6);}return _0x150acf[_0xbeec('0x34')]();};}function saveUpdates(_0x1c1711,_0x114f80){return function(_0xdec031){if(_0xdec031){return _0xdec031['update'](_0x1c1711)[_0xbeec('0x1f')](function(_0x335d29){return _0x335d29;});}return null;};}function removeEntity(_0xb4d2da,_0x1cec9b){return function(_0x41fa38){if(_0x41fa38){return _0x41fa38[_0xbeec('0x35')]()[_0xbeec('0x1f')](function(){var _0x2576f3=_0x41fa38['get']({'plain':!![]});var _0x3183ea='FaxAccounts';return db['UserProfileResource'][_0xbeec('0x35')]({'where':{'type':_0x3183ea,'resourceId':_0x2576f3['id']}})['then'](function(){return _0x41fa38;});})[_0xbeec('0x1f')](function(){_0xb4d2da[_0xbeec('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f7453,_0x22f0ba){return function(_0x576516){if(!_0x576516){_0x1f7453[_0xbeec('0x2a')](0x194);}return _0x576516;};}function handleError(_0x24a80c,_0x465512){_0x465512=_0x465512||0x1f4;return function(_0x4b87c0){logger[_0xbeec('0x24')](_0x4b87c0[_0xbeec('0x36')]);if(_0x4b87c0[_0xbeec('0x37')]){delete _0x4b87c0['name'];}_0x24a80c[_0xbeec('0x2b')](_0x465512)[_0xbeec('0x38')](_0x4b87c0);};}exports[_0xbeec('0x39')]=function(_0x4aaa18,_0x2d1917){var _0x573e4b={'include':[{'model':db[_0xbeec('0x3a')],'as':'mandatoryDispositionPause'}]},_0x4093c5={},_0xe98124={'count':0x0,'rows':[]};var _0x6b73e8=_['map'](db[_0xbeec('0x3b')][_0xbeec('0x3c')],function(_0x4d886d){return{'name':_0x4d886d['fieldName'],'type':_0x4d886d['type'][_0xbeec('0x3d')]};});_0x4093c5[_0xbeec('0x3e')]=_['map'](_0x6b73e8,_0xbeec('0x37'));_0x4093c5[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x4aaa18[_0xbeec('0x3f')]);_0x4093c5['filters']=_[_0xbeec('0x41')](_0x4093c5[_0xbeec('0x3e')],_0x4093c5[_0xbeec('0x3f')]);_0x573e4b[_0xbeec('0x42')]=_['intersection'](_0x4093c5[_0xbeec('0x3e')],qs[_0xbeec('0x43')](_0x4aaa18['query'][_0xbeec('0x43')]));_0x573e4b[_0xbeec('0x42')]=_0x573e4b['attributes'][_0xbeec('0x44')]?_0x573e4b[_0xbeec('0x42')]:_0x4093c5[_0xbeec('0x3e')];if(!_0x4aaa18[_0xbeec('0x3f')][_0xbeec('0x45')](_0xbeec('0x46'))){_0x573e4b['limit']=qs['limit'](_0x4aaa18[_0xbeec('0x3f')]['limit']);_0x573e4b['offset']=qs[_0xbeec('0x47')](_0x4aaa18[_0xbeec('0x3f')][_0xbeec('0x47')]);}_0x573e4b[_0xbeec('0x48')]=qs['sort'](_0x4aaa18[_0xbeec('0x3f')][_0xbeec('0x49')]);_0x573e4b[_0xbeec('0x4a')]=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x4aaa18[_0xbeec('0x3f')],_0x4093c5[_0xbeec('0x4b')]),_0x6b73e8);if(_0x4aaa18[_0xbeec('0x3f')]['filter']){_0x573e4b[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0x573e4b[_0xbeec('0x4a')],{'$or':_[_0xbeec('0x4e')](_0x6b73e8,function(_0x203cc2){if(_0x203cc2[_0xbeec('0x4f')]!==_0xbeec('0x50')){var _0x5b9cde={};_0x5b9cde[_0x203cc2[_0xbeec('0x37')]]={'$like':'%'+_0x4aaa18[_0xbeec('0x3f')][_0xbeec('0x51')]+'%'};return _0x5b9cde;}})});}_0x573e4b=_[_0xbeec('0x4d')]({},_0x573e4b,_0x4aaa18[_0xbeec('0x52')]);var _0x141e14={'where':_0x573e4b['where']};return db[_0xbeec('0x3b')][_0xbeec('0x30')](_0x141e14)[_0xbeec('0x1f')](function(_0x4e54c7){_0xe98124[_0xbeec('0x30')]=_0x4e54c7;if(_0x4aaa18[_0xbeec('0x3f')][_0xbeec('0x53')]){_0x573e4b['include']=[{'all':!![]}];}return db[_0xbeec('0x3b')][_0xbeec('0x54')](_0x573e4b);})[_0xbeec('0x1f')](function(_0x51e413){_0xe98124[_0xbeec('0x55')]=_0x51e413;return _0xe98124;})['then'](respondWithFilteredResult(_0x2d1917,_0x573e4b))['catch'](handleError(_0x2d1917,null));};exports['show']=function(_0x9f37f0,_0x26d478){var _0x2113f6={'raw':![],'where':{'id':_0x9f37f0[_0xbeec('0x56')]['id']},'include':[{'model':db[_0xbeec('0x3a')],'as':_0xbeec('0x57')}]},_0x532e72={};_0x532e72[_0xbeec('0x3e')]=_[_0xbeec('0x40')](db[_0xbeec('0x3b')]['rawAttributes']);_0x532e72[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x9f37f0[_0xbeec('0x3f')]);_0x532e72['filters']=_[_0xbeec('0x41')](_0x532e72[_0xbeec('0x3e')],_0x532e72['query']);_0x2113f6[_0xbeec('0x42')]=_[_0xbeec('0x41')](_0x532e72[_0xbeec('0x3e')],qs[_0xbeec('0x43')](_0x9f37f0['query'][_0xbeec('0x43')]));_0x2113f6[_0xbeec('0x42')]=_0x2113f6['attributes'][_0xbeec('0x44')]?_0x2113f6[_0xbeec('0x42')]:_0x532e72[_0xbeec('0x3e')];if(_0x9f37f0['query']['includeAll']){_0x2113f6['include']=[{'all':!![]}];}_0x2113f6=_[_0xbeec('0x4d')]({},_0x2113f6,_0x9f37f0['options']);return db[_0xbeec('0x3b')][_0xbeec('0x58')](_0x2113f6)[_0xbeec('0x1f')](handleEntityNotFound(_0x26d478,null))[_0xbeec('0x1f')](respondWithResult(_0x26d478,null))[_0xbeec('0x29')](handleError(_0x26d478,null));};exports[_0xbeec('0x59')]=function(_0x462311,_0x58ff1b){return db[_0xbeec('0x3b')]['create'](_0x462311[_0xbeec('0x5a')],{})[_0xbeec('0x1f')](function(_0x16351d){var _0x37c9cb=_0x462311['user'][_0xbeec('0x5b')]({'plain':!![]});if(!_0x37c9cb)throw new Error(_0xbeec('0x5c'));if(_0x37c9cb[_0xbeec('0x5d')]===_0xbeec('0x5e')){var _0x3f52bd=_0x16351d['get']({'plain':!![]});var _0x2c5b3d=_0xbeec('0x5f');return db[_0xbeec('0x60')][_0xbeec('0x58')]({'where':{'name':_0x2c5b3d,'userProfileId':_0x37c9cb[_0xbeec('0x61')]},'raw':!![]})[_0xbeec('0x1f')](function(_0x270f1d){if(_0x270f1d&&_0x270f1d[_0xbeec('0x62')]===0x0){return db['UserProfileResource'][_0xbeec('0x59')]({'name':_0x3f52bd['name'],'resourceId':_0x3f52bd['id'],'type':_0x270f1d[_0xbeec('0x37')],'sectionId':_0x270f1d['id']},{})[_0xbeec('0x1f')](function(){return _0x16351d;});}else{return _0x16351d;}})[_0xbeec('0x29')](function(_0x30f70e){logger[_0xbeec('0x24')](_0xbeec('0x63'),_0x30f70e);throw _0x30f70e;});}return _0x16351d;})[_0xbeec('0x1f')](respondWithResult(_0x58ff1b,0xc9))[_0xbeec('0x29')](handleError(_0x58ff1b,null));};exports[_0xbeec('0x64')]=function(_0x3f1c65,_0x349327){if(_0x3f1c65[_0xbeec('0x5a')]['id']){delete _0x3f1c65[_0xbeec('0x5a')]['id'];}return db['FaxAccount'][_0xbeec('0x58')]({'where':{'id':_0x3f1c65[_0xbeec('0x56')]['id']},'include':[{'model':db[_0xbeec('0x3a')],'as':_0xbeec('0x57')}]})[_0xbeec('0x1f')](handleEntityNotFound(_0x349327,null))[_0xbeec('0x1f')](saveUpdates(_0x3f1c65[_0xbeec('0x5a')],null))[_0xbeec('0x1f')](respondWithResult(_0x349327,null))[_0xbeec('0x29')](handleError(_0x349327,null));};exports[_0xbeec('0x35')]=function(_0x539a1f,_0x30c81e){return db[_0xbeec('0x3b')][_0xbeec('0x58')]({'where':{'id':_0x539a1f['params']['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x30c81e,null))[_0xbeec('0x1f')](removeEntity(_0x30c81e,null))[_0xbeec('0x29')](handleError(_0x30c81e,null));};exports[_0xbeec('0x65')]=function(_0x5b6cc7,_0x31c249){return db[_0xbeec('0x3b')][_0xbeec('0x65')]()[_0xbeec('0x1f')](respondWithResult(_0x31c249,null))[_0xbeec('0x29')](handleError(_0x31c249,null));};exports[_0xbeec('0x66')]=function(_0x3a1765,_0x5431f6,_0xa845f4){if(_0x3a1765[_0xbeec('0x5a')]['id']){delete _0x3a1765[_0xbeec('0x5a')]['id'];}return db[_0xbeec('0x3b')]['find']({'where':{'id':_0x3a1765['params']['id']}})['then'](handleEntityNotFound(_0x5431f6,null))['then'](function(_0x39a347){if(_0x39a347){_0x3a1765[_0xbeec('0x5a')][_0xbeec('0x67')]=_0x39a347['id'];return db['Disposition'][_0xbeec('0x59')](_0x3a1765[_0xbeec('0x5a')]);}})[_0xbeec('0x1f')](respondWithResult(_0x5431f6,null))['catch'](handleError(_0x5431f6,null));};exports[_0xbeec('0x68')]=function(_0x107e59,_0x44e4a9,_0x18af44){var _0xe8376e={'raw':![],'where':{}};var _0x1c9ae1={};var _0x12aace={'count':0x0,'rows':[]};return db[_0xbeec('0x3b')][_0xbeec('0x69')]({'where':{'id':_0x107e59['params']['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x44e4a9,null))[_0xbeec('0x1f')](function(_0xdd1922){if(_0xdd1922){_0x1c9ae1[_0xbeec('0x3e')]=_[_0xbeec('0x40')](db[_0xbeec('0x6a')][_0xbeec('0x3c')]);_0x1c9ae1['query']=_['keys'](_0x107e59[_0xbeec('0x3f')]);_0x1c9ae1[_0xbeec('0x4b')]=_[_0xbeec('0x41')](_0x1c9ae1['model'],_0x1c9ae1['query']);_0xe8376e[_0xbeec('0x42')]=_['intersection'](_0x1c9ae1[_0xbeec('0x3e')],qs[_0xbeec('0x43')](_0x107e59['query'][_0xbeec('0x43')]));_0xe8376e[_0xbeec('0x42')]=_0xe8376e['attributes'][_0xbeec('0x44')]?_0xe8376e[_0xbeec('0x42')]:_0x1c9ae1[_0xbeec('0x3e')];if(!_0x107e59[_0xbeec('0x3f')][_0xbeec('0x45')](_0xbeec('0x46'))){_0xe8376e[_0xbeec('0x2f')]=qs[_0xbeec('0x2f')](_0x107e59[_0xbeec('0x3f')][_0xbeec('0x2f')]);_0xe8376e[_0xbeec('0x47')]=qs['offset'](_0x107e59['query'][_0xbeec('0x47')]);}_0xe8376e['order']=qs[_0xbeec('0x49')](_0x107e59[_0xbeec('0x3f')][_0xbeec('0x49')]);_0xe8376e[_0xbeec('0x4a')]=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x107e59[_0xbeec('0x3f')],_0x1c9ae1['filters']));_0xe8376e[_0xbeec('0x4a')]['FaxAccountId']=_0xdd1922['id'];if(_0x107e59[_0xbeec('0x3f')][_0xbeec('0x51')]){_0xe8376e[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0xe8376e['where'],{'$or':_['map'](_0xe8376e['attributes'],function(_0x17f20f){var _0x301e92={};_0x301e92[_0x17f20f]={'$like':'%'+_0x107e59['query']['filter']+'%'};return _0x301e92;})});}_0xe8376e=_['merge']({},_0xe8376e,_0x107e59[_0xbeec('0x52')]);return db[_0xbeec('0x6a')][_0xbeec('0x30')]({'where':_0xe8376e['where']})[_0xbeec('0x1f')](function(_0x3b821c){_0x12aace[_0xbeec('0x30')]=_0x3b821c;if(_0x107e59[_0xbeec('0x3f')][_0xbeec('0x53')]){_0xe8376e[_0xbeec('0x6b')]=[{'all':!![]}];}return db[_0xbeec('0x6a')][_0xbeec('0x54')](_0xe8376e);})[_0xbeec('0x1f')](function(_0x239504){_0x12aace[_0xbeec('0x55')]=_0x239504;return _0x12aace;});}})[_0xbeec('0x1f')](respondWithFilteredResult(_0x44e4a9,_0xe8376e))['catch'](handleError(_0x44e4a9,null));};exports['removeDispositions']=function(_0x4649ba,_0x1926c0,_0x28832d){return db[_0xbeec('0x3b')]['find']({'where':{'id':_0x4649ba[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x1926c0,null))[_0xbeec('0x1f')](function(_0x2b9a96){if(_0x2b9a96){return _0x2b9a96['removeDispositions'](_0x4649ba[_0xbeec('0x3f')][_0xbeec('0x6c')]);}})[_0xbeec('0x1f')](respondWithStatusCode(_0x1926c0,null))['catch'](handleError(_0x1926c0,null));};exports[_0xbeec('0x6d')]=function(_0x566659,_0x50e218,_0x4e1b40){if(_0x566659[_0xbeec('0x5a')]['id']){delete _0x566659[_0xbeec('0x5a')]['id'];}return db[_0xbeec('0x3b')][_0xbeec('0x58')]({'where':{'id':_0x566659[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x50e218,null))[_0xbeec('0x1f')](function(_0x50c1b2){if(_0x50c1b2){_0x566659['body']['FaxAccountId']=_0x50c1b2['id'];return db[_0xbeec('0x6e')][_0xbeec('0x59')](_0x566659[_0xbeec('0x5a')]);}})['then'](respondWithResult(_0x50e218,null))['catch'](handleError(_0x50e218,null));};exports['getAnswers']=function(_0x519191,_0xa810a4,_0x37d910){var _0x5440c5={'raw':![],'where':{}};var _0x3310fa={};var _0x2a2eb2={'count':0x0,'rows':[]};return db[_0xbeec('0x3b')][_0xbeec('0x69')]({'where':{'id':_0x519191[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0xa810a4,null))[_0xbeec('0x1f')](function(_0x204fe8){if(_0x204fe8){_0x3310fa[_0xbeec('0x3e')]=_['keys'](db[_0xbeec('0x6e')][_0xbeec('0x3c')]);_0x3310fa[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x519191[_0xbeec('0x3f')]);_0x3310fa[_0xbeec('0x4b')]=_[_0xbeec('0x41')](_0x3310fa[_0xbeec('0x3e')],_0x3310fa[_0xbeec('0x3f')]);_0x5440c5[_0xbeec('0x42')]=_[_0xbeec('0x41')](_0x3310fa[_0xbeec('0x3e')],qs[_0xbeec('0x43')](_0x519191[_0xbeec('0x3f')]['fields']));_0x5440c5['attributes']=_0x5440c5[_0xbeec('0x42')][_0xbeec('0x44')]?_0x5440c5[_0xbeec('0x42')]:_0x3310fa[_0xbeec('0x3e')];if(!_0x519191[_0xbeec('0x3f')][_0xbeec('0x45')](_0xbeec('0x46'))){_0x5440c5[_0xbeec('0x2f')]=qs[_0xbeec('0x2f')](_0x519191[_0xbeec('0x3f')][_0xbeec('0x2f')]);_0x5440c5[_0xbeec('0x47')]=qs[_0xbeec('0x47')](_0x519191[_0xbeec('0x3f')][_0xbeec('0x47')]);}_0x5440c5[_0xbeec('0x48')]=qs[_0xbeec('0x49')](_0x519191[_0xbeec('0x3f')][_0xbeec('0x49')]);_0x5440c5['where']=qs['filters'](_[_0xbeec('0x4c')](_0x519191[_0xbeec('0x3f')],_0x3310fa['filters']));_0x5440c5['where'][_0xbeec('0x67')]=_0x204fe8['id'];if(_0x519191[_0xbeec('0x3f')][_0xbeec('0x51')]){_0x5440c5[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0x5440c5[_0xbeec('0x4a')],{'$or':_[_0xbeec('0x4e')](_0x5440c5[_0xbeec('0x42')],function(_0x46531f){var _0x4fb368={};_0x4fb368[_0x46531f]={'$like':'%'+_0x519191[_0xbeec('0x3f')][_0xbeec('0x51')]+'%'};return _0x4fb368;})});}_0x5440c5=_[_0xbeec('0x4d')]({},_0x5440c5,_0x519191[_0xbeec('0x52')]);return db[_0xbeec('0x6e')][_0xbeec('0x30')]({'where':_0x5440c5[_0xbeec('0x4a')]})[_0xbeec('0x1f')](function(_0x574874){_0x2a2eb2['count']=_0x574874;if(_0x519191[_0xbeec('0x3f')][_0xbeec('0x53')]){_0x5440c5[_0xbeec('0x6b')]=[{'all':!![]}];}return db[_0xbeec('0x6e')]['findAll'](_0x5440c5);})['then'](function(_0x2c7efa){_0x2a2eb2[_0xbeec('0x55')]=_0x2c7efa;return _0x2a2eb2;});}})[_0xbeec('0x1f')](respondWithFilteredResult(_0xa810a4,_0x5440c5))['catch'](handleError(_0xa810a4,null));};exports[_0xbeec('0x6f')]=function(_0x551438,_0x5de2ae,_0x43ea5e){return db[_0xbeec('0x3b')][_0xbeec('0x58')]({'where':{'id':_0x551438[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x5de2ae,null))[_0xbeec('0x1f')](function(_0x119e4a){if(_0x119e4a){return _0x119e4a['removeAnswers'](_0x551438[_0xbeec('0x3f')][_0xbeec('0x6c')]);}})[_0xbeec('0x1f')](respondWithStatusCode(_0x5de2ae,null))[_0xbeec('0x29')](handleError(_0x5de2ae,null));};exports[_0xbeec('0x70')]=function(_0xb90ede,_0x3c58e6,_0x35c448){return db[_0xbeec('0x71')][_0xbeec('0x58')]({'where':{'id':_0xb90ede[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x3c58e6,null))[_0xbeec('0x1f')](function(_0x15f755){if(_0x15f755){return _0x15f755['addInteraction'](_0xb90ede['body'][_0xbeec('0x6c')],_[_0xbeec('0x72')](_0xb90ede[_0xbeec('0x5a')],[_0xbeec('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x3c58e6,null))[_0xbeec('0x29')](handleError(_0x3c58e6,null));};exports[_0xbeec('0x73')]=function(_0x5793b9,_0x51fe32,_0xafb094){var _0x31bd88={'raw':![],'where':{}};var _0x4f1631={};var _0x711ea={'count':0x0,'rows':[]};return db[_0xbeec('0x3b')][_0xbeec('0x69')]({'where':{'id':_0x5793b9[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x51fe32,null))[_0xbeec('0x1f')](function(_0x56e3dd){if(_0x56e3dd){_0x4f1631[_0xbeec('0x3e')]=_['keys'](db[_0xbeec('0x71')][_0xbeec('0x3c')]);_0x4f1631[_0xbeec('0x3f')]=_['keys'](_0x5793b9[_0xbeec('0x3f')]);_0x4f1631['filters']=_[_0xbeec('0x41')](_0x4f1631['model'],_0x4f1631[_0xbeec('0x3f')]);_0x31bd88[_0xbeec('0x42')]=_[_0xbeec('0x41')](_0x4f1631[_0xbeec('0x3e')],qs['fields'](_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x43')]));_0x31bd88[_0xbeec('0x42')]=_0x31bd88[_0xbeec('0x42')][_0xbeec('0x44')]?_0x31bd88[_0xbeec('0x42')]:_0x4f1631[_0xbeec('0x3e')];if(!_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x45')](_0xbeec('0x46'))){_0x31bd88['limit']=qs['limit'](_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x2f')]);_0x31bd88[_0xbeec('0x47')]=qs['offset'](_0x5793b9[_0xbeec('0x3f')]['offset']);}_0x31bd88[_0xbeec('0x48')]=qs['sort'](_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x49')]);_0x31bd88[_0xbeec('0x4a')]=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x5793b9[_0xbeec('0x3f')],_0x4f1631[_0xbeec('0x4b')]));_0x31bd88['where'][_0xbeec('0x67')]=_0x56e3dd['id'];if(_0x5793b9['query'][_0xbeec('0x51')]){_0x31bd88[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0x31bd88['where'],{'$or':_[_0xbeec('0x4e')](_0x31bd88['attributes'],function(_0x2acdc5){var _0x5acaaf={};_0x5acaaf[_0x2acdc5]={'$like':'%'+_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x51')]+'%'};return _0x5acaaf;})});}_0x31bd88=_[_0xbeec('0x4d')]({},_0x31bd88,_0x5793b9[_0xbeec('0x52')]);return db[_0xbeec('0x71')][_0xbeec('0x30')]({'where':_0x31bd88[_0xbeec('0x4a')]})[_0xbeec('0x1f')](function(_0x42b120){_0x711ea[_0xbeec('0x30')]=_0x42b120;if(_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x53')]){_0x31bd88[_0xbeec('0x6b')]=[{'model':db[_0xbeec('0x74')],'as':_0xbeec('0x75'),'required':![]},{'model':db['User'],'as':_0xbeec('0x76'),'attributes':['name',_0xbeec('0x77'),'internal'],'required':![]},{'model':db[_0xbeec('0x78')],'as':_0xbeec('0x79'),'attributes':['id',_0xbeec('0x37'),_0xbeec('0x7a')],'where':_0x5793b9[_0xbeec('0x3f')][_0xbeec('0x7b')]?{'id':_0x5793b9[_0xbeec('0x3f')]['tag']}:undefined,'required':_0x5793b9['query'][_0xbeec('0x7b')]?!![]:![]}];}return db[_0xbeec('0x71')][_0xbeec('0x54')](_0x31bd88);})[_0xbeec('0x1f')](function(_0x1a892e){_0x711ea[_0xbeec('0x55')]=_0x1a892e;return _0x711ea;});}})[_0xbeec('0x1f')](respondWithFilteredResult(_0x51fe32,_0x31bd88))[_0xbeec('0x29')](handleError(_0x51fe32,null));};exports[_0xbeec('0x7c')]=function(_0x31478b,_0x31ced0){var _0x3bcf78=_0x31478b[_0xbeec('0x56')]['id'];var _0x143ef5=_0x31478b[_0xbeec('0x5a')];var _0x6835af=0xc8;var _0x4b557b=null;return db[_0xbeec('0x7d')][_0xbeec('0x7e')]({'isolationLevel':db[_0xbeec('0x7d')][_0xbeec('0x7f')][_0xbeec('0x80')][_0xbeec('0x81')]},function(_0x15d4e3){return db[_0xbeec('0x3b')]['findOne']({'where':{'id':_0x3bcf78},'transaction':_0x15d4e3})[_0xbeec('0x1f')](function(_0x4ecaa8){if(_0x4ecaa8){return db[_0xbeec('0x82')][_0xbeec('0x35')]({'where':{'FaxAccountId':_0x3bcf78},'transaction':_0x15d4e3})[_0xbeec('0x1f')](function(){var _0x46b93c=_[_0xbeec('0x4e')](_0x143ef5,function(_0x2aa34c){_0x2aa34c[_0xbeec('0x67')]=_0x3bcf78;return _0x2aa34c;});return db[_0xbeec('0x82')]['bulkCreate'](_0x46b93c,{'transaction':_0x15d4e3});});}else{_0x6835af=0x194;_0x4b557b=[];}});})[_0xbeec('0x1f')](function(){if(_0x6835af!==0x194){return db[_0xbeec('0x82')][_0xbeec('0x83')]({'where':{'FaxAccountId':_0x3bcf78},'order':_0xbeec('0x84')})['then'](function(_0x186a94){_0x4b557b=_0x186a94;});}})[_0xbeec('0x29')](function(_0x42761f){_0x6835af=0x1f4;logger[_0xbeec('0x24')](_0x42761f[_0xbeec('0x36')]);if(_0x42761f[_0xbeec('0x37')]){delete _0x42761f[_0xbeec('0x37')];}_0x4b557b=_0x42761f;})[_0xbeec('0x85')](function(){if(_0x4b557b===null){_0x31ced0['sendStatus'](_0x6835af);}else{if(_0x6835af===0x1f4){_0x31ced0[_0xbeec('0x2b')](_0x6835af)['send'](_0x4b557b);}else{_0x31ced0[_0xbeec('0x2b')](_0x6835af)[_0xbeec('0x2d')](_0x4b557b);}}});};exports[_0xbeec('0x86')]=function(_0x40b66a,_0x1122fb,_0x20f84d){var _0x40b339={};var _0x3730b7={};var _0x4393a1;var _0x398392;return db[_0xbeec('0x3b')][_0xbeec('0x69')]({'where':{'id':_0x40b66a[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x1122fb,null))[_0xbeec('0x1f')](function(_0x572a8e){if(_0x572a8e){_0x4393a1=_0x572a8e;_0x3730b7[_0xbeec('0x3e')]=_[_0xbeec('0x40')](db[_0xbeec('0x82')][_0xbeec('0x3c')]);_0x3730b7[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x40b66a[_0xbeec('0x3f')]);_0x3730b7[_0xbeec('0x4b')]=_[_0xbeec('0x41')](_0x3730b7[_0xbeec('0x3e')],_0x3730b7[_0xbeec('0x3f')]);_0x40b339[_0xbeec('0x42')]=_['intersection'](_0x3730b7['model'],qs['fields'](_0x40b66a['query'][_0xbeec('0x43')]));_0x40b339[_0xbeec('0x42')]=_0x40b339['attributes'][_0xbeec('0x44')]?_0x40b339[_0xbeec('0x42')]:_0x3730b7[_0xbeec('0x3e')];_0x40b339[_0xbeec('0x48')]=qs['sort'](_0x40b66a[_0xbeec('0x3f')][_0xbeec('0x49')]);_0x40b339[_0xbeec('0x4a')]=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x40b66a['query'],_0x3730b7['filters']));if(_0x40b66a[_0xbeec('0x3f')][_0xbeec('0x51')]){_0x40b339['where']=_[_0xbeec('0x4d')](_0x40b339['where'],{'$or':_[_0xbeec('0x4e')](_0x40b339[_0xbeec('0x42')],function(_0x47f5a7){var _0x1421f4={};_0x1421f4[_0x47f5a7]={'$like':'%'+_0x40b66a['query'][_0xbeec('0x51')]+'%'};return _0x1421f4;})});}_0x40b339=_[_0xbeec('0x4d')]({},_0x40b339,_0x40b66a[_0xbeec('0x52')]);return _0x4393a1[_0xbeec('0x86')](_0x40b339);}})['then'](function(_0x5cabcc){if(_0x5cabcc){_0x398392=_0x5cabcc[_0xbeec('0x44')];if(!_0x40b66a['query'][_0xbeec('0x45')](_0xbeec('0x46'))){_0x40b339['limit']=qs[_0xbeec('0x2f')](_0x40b66a['query']['limit']);_0x40b339['offset']=qs[_0xbeec('0x47')](_0x40b66a[_0xbeec('0x3f')][_0xbeec('0x47')]);}return _0x4393a1['getApplications'](_0x40b339);}})[_0xbeec('0x1f')](function(_0x44dfda){if(_0x44dfda){return _0x44dfda?{'count':_0x398392,'rows':_0x44dfda}:null;}})['then'](respondWithResult(_0x1122fb,null))['catch'](handleError(_0x1122fb,null));};function Extension(_0x195f81,_0x4e59c6,_0x5cd4c2,_0x27e8bb){this['context']=_0xbeec('0x87');this[_0xbeec('0x88')]=_0x195f81[_0xbeec('0x89')];this[_0xbeec('0x8a')]=_0x27e8bb;this[_0xbeec('0x4f')]=_0xbeec('0x8b');this['description']=_0xbeec('0x8c');this[_0xbeec('0x67')]=_0x195f81['id'];this[_0xbeec('0x84')]=_0x4e59c6;this[_0xbeec('0x8d')]=_0x5cd4c2;}function createExtensionsReciveFax(_0x28feba){var _0x1ffe7d=0x1;var _0x7127f3=[];_0x7127f3['push'](new Extension(_0x28feba,_0x1ffe7d,'',_0xbeec('0x8e')));_0x1ffe7d+=0x1;_0x7127f3[_0xbeec('0x8f')](new Extension(_0x28feba,_0x1ffe7d,_0xbeec('0x90'),_0xbeec('0x91')));_0x1ffe7d+=0x1;for(var _0x3b7ef1 in _0x28feba){if(_0x28feba['hasOwnProperty'](_0x3b7ef1)&&(_0x3b7ef1===_0xbeec('0x92')||_0x3b7ef1===_0xbeec('0x89')||_0x3b7ef1===_0xbeec('0x93')||_0x3b7ef1==='faxdetect'||_0x3b7ef1===_0xbeec('0x94')||_0x3b7ef1===_0xbeec('0x95')||_0x3b7ef1==='minrate'||_0x3b7ef1==='modem'||_0x3b7ef1==='t38timeout')){_0x7127f3['push'](new Extension(_0x28feba,_0x1ffe7d,_0xbeec('0x96')+_0x3b7ef1+')='+_0x28feba[_0x3b7ef1],_0xbeec('0x91')));_0x1ffe7d+=0x1;}}_0x7127f3[_0xbeec('0x8f')](new Extension(_0x28feba,_0x1ffe7d,'6',_0xbeec('0x97')));_0x1ffe7d+=0x1;_0x7127f3[_0xbeec('0x8f')](new Extension(_0x28feba,_0x1ffe7d,_0xbeec('0x98'),'ReceiveFax'));_0x1ffe7d=0x0;return _0x7127f3;}exports[_0xbeec('0x99')]=function(_0x76b824,_0x5832fd,_0x3d8433){var _0x391f08;return db[_0xbeec('0x7d')][_0xbeec('0x7e')](function(_0x4d8203){return db['FaxAccount'][_0xbeec('0x59')](_0x76b824[_0xbeec('0x5a')],{'transaction':_0x4d8203})['then'](function(_0x3889ac){_0x391f08=_0x3889ac['get']({'plain':!![]});return db[_0xbeec('0x9a')][_0xbeec('0x9b')](createExtensionsReciveFax(_0x391f08),{'transaction':_0x4d8203});});})[_0xbeec('0x1f')](function(){return _0x391f08;})['then'](respondWithResult(_0x5832fd,null))[_0xbeec('0x29')](handleError(_0x5832fd,null));};exports[_0xbeec('0x9c')]=function(_0x3f35e1,_0x142498,_0xcee51e){var _0x249cde;return db[_0xbeec('0x7d')]['transaction'](function(_0x3a1c35){return db['FaxAccount'][_0xbeec('0x64')](_0x3f35e1[_0xbeec('0x5a')],{'where':{'id':_0x3f35e1[_0xbeec('0x5a')]['id']},'transaction':_0x3a1c35})[_0xbeec('0x1f')](function(_0x217e89){return db[_0xbeec('0x9a')][_0xbeec('0x35')]({'where':{'FaxAccountId':_0x3f35e1[_0xbeec('0x5a')]['id']},'transaction':_0x3a1c35})[_0xbeec('0x1f')](function(_0x1b773c){return db[_0xbeec('0x9a')][_0xbeec('0x9b')](createExtensionsReciveFax(_[_0xbeec('0x72')](_0x3f35e1[_0xbeec('0x5a')],['tech',_0xbeec('0x3d'),_0xbeec('0x9d'),_0xbeec('0x9e'),'TrunkId','ListId'])),{'transaction':_0x3a1c35});});});})[_0xbeec('0x1f')](function(){return db['FaxAccount']['findById'](_0x3f35e1[_0xbeec('0x5a')]['id']);})[_0xbeec('0x1f')](respondWithResult(_0x142498,null))[_0xbeec('0x29')](handleError(_0x142498,null));};exports[_0xbeec('0x9f')]=function(_0x50e096,_0x24564e,_0x2de955){var _0xbb1858={'raw':!![],'where':{}};var _0x21fffd={};var _0x57dcb1={'count':0x0,'rows':[]};return db['FaxAccount'][_0xbeec('0x69')]({'where':{'id':_0x50e096[_0xbeec('0x56')]['id']}})['then'](handleEntityNotFound(_0x24564e,null))['then'](function(_0x3d1da9){if(_0x3d1da9){_0x21fffd[_0xbeec('0x3e')]=_[_0xbeec('0x40')](db['FaxMessage']['rawAttributes']);_0x21fffd[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x50e096[_0xbeec('0x3f')]);_0x21fffd[_0xbeec('0x4b')]=_[_0xbeec('0x41')](_0x21fffd['model'],_0x21fffd['query']);_0xbb1858[_0xbeec('0x42')]=_[_0xbeec('0x41')](_0x21fffd[_0xbeec('0x3e')],qs['fields'](_0x50e096[_0xbeec('0x3f')][_0xbeec('0x43')]));_0xbb1858[_0xbeec('0x42')]=_0xbb1858[_0xbeec('0x42')][_0xbeec('0x44')]?_0xbb1858[_0xbeec('0x42')]:_0x21fffd[_0xbeec('0x3e')];if(!_0x50e096['query'][_0xbeec('0x45')](_0xbeec('0x46'))){_0xbb1858['limit']=qs[_0xbeec('0x2f')](_0x50e096[_0xbeec('0x3f')][_0xbeec('0x2f')]);_0xbb1858[_0xbeec('0x47')]=qs['offset'](_0x50e096[_0xbeec('0x3f')][_0xbeec('0x47')]);}_0xbb1858[_0xbeec('0x48')]=qs[_0xbeec('0x49')](_0x50e096['query']['sort']);_0xbb1858['where']=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x50e096[_0xbeec('0x3f')],_0x21fffd[_0xbeec('0x4b')]));_0xbb1858[_0xbeec('0x4a')][_0xbeec('0x67')]=_0x3d1da9['id'];if(_0x50e096[_0xbeec('0x3f')][_0xbeec('0x51')]){_0xbb1858[_0xbeec('0x4a')]=_['merge'](_0xbb1858[_0xbeec('0x4a')],{'$or':_[_0xbeec('0x4e')](_0xbb1858['attributes'],function(_0x4d2080){var _0x57c213={};_0x57c213[_0x4d2080]={'$like':'%'+_0x50e096[_0xbeec('0x3f')][_0xbeec('0x51')]+'%'};return _0x57c213;})});}if(_0x50e096[_0xbeec('0x3f')][_0xbeec('0xa0')]){var _0x5ca0fc=_0x50e096['query']['$gte'][_0xbeec('0xa1')](',');var _0x896090={};_0x896090[_0x5ca0fc[0x0]]={'$gte':moment(_0x5ca0fc[0x1])[_0xbeec('0xa2')](_0xbeec('0xa3'))};_0xbb1858[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0xbb1858[_0xbeec('0x4a')],_0x896090);}_0xbb1858=_[_0xbeec('0x4d')]({},_0xbb1858,_0x50e096[_0xbeec('0x52')]);return db[_0xbeec('0xa4')][_0xbeec('0x30')]({'where':_0xbb1858[_0xbeec('0x4a')]})[_0xbeec('0x1f')](function(_0x55706d){_0x57dcb1[_0xbeec('0x30')]=_0x55706d;if(_0x50e096[_0xbeec('0x3f')][_0xbeec('0x53')]){_0xbb1858[_0xbeec('0x6b')]=[{'all':!![]}];}return db[_0xbeec('0xa4')][_0xbeec('0x54')](_0xbb1858);})[_0xbeec('0x1f')](function(_0x8778f6){_0x57dcb1[_0xbeec('0x55')]=_0x8778f6;return _0x57dcb1;});}})['then'](respondWithFilteredResult(_0x24564e,_0xbb1858))['catch'](handleError(_0x24564e,null));};exports[_0xbeec('0x38')]=function(_0x284102,_0x19be32,_0x11294b){var _0x2e62d3,_0x126735={},_0x32fe4a;if(_0x284102[_0xbeec('0x5a')]['to']){_0x32fe4a=_0x284102[_0xbeec('0x5a')]['to'][0x0];}return db[_0xbeec('0x3b')][_0xbeec('0x58')]({'where':{'id':_0x284102[_0xbeec('0x56')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xbeec('0x74')],'as':_0xbeec('0xa5'),'where':{'fax':_0x32fe4a},'limit':0x1,'order':[[_0xbeec('0x9e'),'DESC']]}]}]})[_0xbeec('0x1f')](handleEntityNotFound(_0x19be32,null))[_0xbeec('0x1f')](function(_0x259cac){_0x2e62d3=_0x259cac;if(_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')]&&_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][_0xbeec('0x44')]){for(var _0x4d3c5e=0x0;_0x4d3c5e<_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')]['length'];_0x4d3c5e+=0x1){_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][_0x4d3c5e]={'filename':_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][_0x4d3c5e][_0xbeec('0x37')],'id':_0x284102['body']['attachments'][_0x4d3c5e]['id'],'path':path[_0xbeec('0xa7')](config[_0xbeec('0xa8')],_0xbeec('0xa9'),_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][_0x4d3c5e][_0xbeec('0xaa')])};}}return respondWithRpcPromise(_0xbeec('0xab'),_0xbeec('0xab'),{'FaxAccountId':_['isNil'](_0x284102[_0xbeec('0x56')]['id'])?undefined:_0x284102[_0xbeec('0x56')]['id'],'path':_[_0xbeec('0xac')](_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][0x0][_0xbeec('0xad')])?undefined:_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][0x0]['path'],'fax':_['isNil'](_0x284102[_0xbeec('0x5a')]['to'][0x0])?undefined:_0x284102[_0xbeec('0x5a')]['to'][0x0]},client9002);})[_0xbeec('0x1f')](function(){if(_0x2e62d3){if(_[_0xbeec('0xac')](_0x284102[_0xbeec('0x5a')][_0xbeec('0xae')])){_0x284102[_0xbeec('0x5a')][_0xbeec('0xae')]=util[_0xbeec('0xa2')]('\x22%s\x22\x20<%s>',_0x2e62d3['name'],_0x2e62d3[_0xbeec('0xaf')]);}if(_0x2e62d3[_0xbeec('0xb0')]){if(_0x2e62d3[_0xbeec('0xb0')][_0xbeec('0xa5')][_0xbeec('0x44')]){return _0x2e62d3[_0xbeec('0xb0')][_0xbeec('0xa5')][0x0];}else{return db[_0xbeec('0x74')][_0xbeec('0x59')](_[_0xbeec('0xb1')](_0x284102[_0xbeec('0x5a')],{'firstName':_0x284102[_0xbeec('0x5a')]['to'][0x0],'phone':_0x284102['body']['to'][0x0],'fax':_0x284102[_0xbeec('0x5a')]['to'][0x0],'ListId':_0x2e62d3[_0xbeec('0xb2')]}));}}else{throw new Error(_0xbeec('0xb3'));}}else{throw new Error(_0xbeec('0xb4'));}})['then'](function(_0x371362){if(_0x371362){return db[_0xbeec('0x71')][_0xbeec('0x58')]({'where':{'ContactId':_0x371362['id'],'closed':![],'FaxAccountId':_0x2e62d3['id']}})[_0xbeec('0x1f')](function(_0x2dea0c){if(_0x2dea0c){return[_0x2dea0c,![]];}return db[_0xbeec('0x71')][_0xbeec('0x59')]({'UserId':_0x284102[_0xbeec('0x5e')]['id'],'ContactId':_0x371362['id'],'FaxAccountId':_0x2e62d3['id'],'fax':_0x284102[_0xbeec('0x5a')]['to'][0x0],'firstMsgDirection':_0xbeec('0xb5'),'Messages':[_[_0xbeec('0x4d')](_0x284102[_0xbeec('0x5a')],{'read':![],'body':_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][0x0][_0xbeec('0xb6')],'FaxAccountId':_0x2e62d3['id'],'UserId':_0x284102[_0xbeec('0x5e')]['id'],'ContactId':_0x371362['id'],'AttachmentId':_0x284102['body'][_0xbeec('0xa6')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0xbeec('0xb7')}]})[_0xbeec('0x1f')](function(_0x23b177){return[_0x23b177,!![]];});});}else{throw new Error(_0xbeec('0xb8'));}})[_0xbeec('0xb9')](function(_0x464775,_0x38f690){if(_0x38f690){return _0x464775;}return db['FaxMessage'][_0xbeec('0x59')]({'direction':_0xbeec('0xb5'),'read':![],'body':_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][0x0][_0xbeec('0xb6')],'FaxAccountId':_0x2e62d3['id'],'FaxInteractionId':_0x464775['id'],'UserId':_0x284102[_0xbeec('0x5e')]['id'],'ContactId':_0x464775[_0xbeec('0xba')],'AttachmentId':_0x284102['body'][_0xbeec('0xa6')][0x0]['id']})[_0xbeec('0x1f')](function(_0x10a8e4){_0x464775[_0xbeec('0xbb')]['Messages']=[];_0x464775[_0xbeec('0xbb')][_0xbeec('0xb7')]['push'](_0x10a8e4[_0xbeec('0xbb')]);return _0x464775;});})[_0xbeec('0x1f')](function(_0x1a0157){respondWithRpcPromise(_0xbeec('0xbc'),_0xbeec('0xbc'),{'FaxAccountId':_[_0xbeec('0xac')](_0x284102[_0xbeec('0x56')]['id'])?undefined:_0x284102['params']['id'],'path':_[_0xbeec('0xac')](_0x284102[_0xbeec('0x5a')]['attachments'][0x0][_0xbeec('0xad')])?undefined:_0x284102[_0xbeec('0x5a')][_0xbeec('0xa6')][0x0][_0xbeec('0xad')],'fax':_[_0xbeec('0xac')](_0x284102['body']['to'][0x0])?undefined:_0x284102['body']['to'][0x0],'AttachmentId':_0x284102['body'][_0xbeec('0xa6')][0x0]['id']},client9002)[_0xbeec('0x1f')](function(_0x16d746){logger[_0xbeec('0x27')](_0xbeec('0xbd'),_0x16d746);})[_0xbeec('0x29')](function(_0x27e0ed){logger[_0xbeec('0x27')](_0xbeec('0xbd'),_0x27e0ed);});return _0x1a0157;})[_0xbeec('0x1f')](respondWithResult(_0x19be32,null))[_0xbeec('0x29')](handleError(_0x19be32,null));};exports['addAgents']=function(_0x3c4a81,_0x13afdf,_0x492724){return db[_0xbeec('0x3b')][_0xbeec('0x58')]({'where':{'id':_0x3c4a81[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x13afdf,null))[_0xbeec('0x1f')](function(_0xd3d9cf){if(_0xd3d9cf){return _0xd3d9cf[_0xbeec('0xbe')](_0x3c4a81[_0xbeec('0x5a')]['ids'],_['omit'](_0x3c4a81[_0xbeec('0x5a')],[_0xbeec('0x6c'),'id'])||{})[_0xbeec('0xb9')](function(_0x2d2bab){for(var _0x31b23e=0x0;_0x31b23e<_0x3c4a81['body'][_0xbeec('0x6c')][_0xbeec('0x44')];_0x31b23e+=0x1){socket[_0xbeec('0xbf')](_0xbeec('0xc0'),{'UserId':Number(_0x3c4a81[_0xbeec('0x5a')]['ids'][_0x31b23e]),'FaxAccountId':Number(_0x3c4a81['params']['id'])});}return _0x2d2bab;});}})[_0xbeec('0x1f')](respondWithResult(_0x13afdf,null))[_0xbeec('0x29')](handleError(_0x13afdf,null));};exports[_0xbeec('0xc1')]=function(_0x4bd2de,_0x1cce27,_0x520f17){return db['FaxAccount']['find']({'where':{'id':_0x4bd2de[_0xbeec('0x56')]['id']}})['then'](handleEntityNotFound(_0x1cce27,null))[_0xbeec('0x1f')](function(_0x1709a7){if(_0x1709a7){return _0x1709a7[_0xbeec('0xc1')](_0x4bd2de['query']['ids'])['then'](function(){if(_[_0xbeec('0xc2')](_0x4bd2de[_0xbeec('0x3f')][_0xbeec('0x6c')])){for(var _0x580acf=0x0;_0x580acf<_0x4bd2de[_0xbeec('0x3f')][_0xbeec('0x6c')][_0xbeec('0x44')];_0x580acf+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x4bd2de[_0xbeec('0x3f')]['ids'][_0x580acf]),'FaxAccountId':Number(_0x4bd2de[_0xbeec('0x56')]['id'])});}}else{socket[_0xbeec('0xbf')](_0xbeec('0xc3'),{'UserId':Number(_0x4bd2de[_0xbeec('0x3f')][_0xbeec('0x6c')]),'FaxAccountId':Number(_0x4bd2de[_0xbeec('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x1cce27,null))[_0xbeec('0x29')](handleError(_0x1cce27,null));};exports[_0xbeec('0xc4')]=function(_0x2d2b77,_0x1e2aeb,_0x230f49){var _0x2d8f36={};var _0x29da63={};var _0x41210a;var _0x1f8991;return db[_0xbeec('0x3b')][_0xbeec('0x69')]({'where':{'id':_0x2d2b77[_0xbeec('0x56')]['id']}})[_0xbeec('0x1f')](handleEntityNotFound(_0x1e2aeb,null))['then'](function(_0x24b02b){if(_0x24b02b){_0x41210a=_0x24b02b;_0x29da63[_0xbeec('0x3e')]=_[_0xbeec('0x40')](db['User'][_0xbeec('0x3c')]);_0x29da63[_0xbeec('0x3f')]=_[_0xbeec('0x40')](_0x2d2b77[_0xbeec('0x3f')]);_0x29da63[_0xbeec('0x4b')]=_[_0xbeec('0x41')](_0x29da63['model'],_0x29da63[_0xbeec('0x3f')]);_0x2d8f36[_0xbeec('0x42')]=_['intersection'](_0x29da63[_0xbeec('0x3e')],qs['fields'](_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x43')]));_0x2d8f36[_0xbeec('0x42')]=_0x2d8f36[_0xbeec('0x42')][_0xbeec('0x44')]?_0x2d8f36[_0xbeec('0x42')]:_0x29da63[_0xbeec('0x3e')];_0x2d8f36[_0xbeec('0x48')]=qs[_0xbeec('0x49')](_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x49')]);_0x2d8f36[_0xbeec('0x4a')]=qs[_0xbeec('0x4b')](_[_0xbeec('0x4c')](_0x2d2b77[_0xbeec('0x3f')],_0x29da63[_0xbeec('0x4b')]));if(_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x51')]){_0x2d8f36[_0xbeec('0x4a')]=_[_0xbeec('0x4d')](_0x2d8f36[_0xbeec('0x4a')],{'$or':_[_0xbeec('0x4e')](_0x2d8f36[_0xbeec('0x42')],function(_0x4a8827){var _0xb3fbb0={};_0xb3fbb0[_0x4a8827]={'$like':'%'+_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x51')]+'%'};return _0xb3fbb0;})});}_0x2d8f36=_[_0xbeec('0x4d')]({},_0x2d8f36,_0x2d2b77['options']);return _0x41210a[_0xbeec('0xc4')](_0x2d8f36);}})[_0xbeec('0x1f')](function(_0xcf500){if(_0xcf500){_0x1f8991=_0xcf500['length'];if(!_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x45')](_0xbeec('0x46'))){_0x2d8f36['limit']=qs[_0xbeec('0x2f')](_0x2d2b77[_0xbeec('0x3f')][_0xbeec('0x2f')]);_0x2d8f36[_0xbeec('0x47')]=qs['offset'](_0x2d2b77['query'][_0xbeec('0x47')]);}return _0x41210a[_0xbeec('0xc4')](_0x2d8f36);}})[_0xbeec('0x1f')](function(_0xae17b){if(_0xae17b){return _0xae17b?{'count':_0x1f8991,'rows':_0xae17b}:null;}})['then'](respondWithResult(_0x1e2aeb,null))[_0xbeec('0x29')](handleError(_0x1e2aeb,null));};
\ No newline at end of file
index 4f79e33..6fb68bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b4=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save'];(function(_0x10a55a,_0x171fa0){var _0x58accd=function(_0x3e5a06){while(--_0x3e5a06){_0x10a55a['push'](_0x10a55a['shift']());}};_0x58accd(++_0x171fa0);}(_0x68b4,0xff));var _0x468b=function(_0x110d06,_0x400891){_0x110d06=_0x110d06-0x0;var _0x55fecb=_0x68b4[_0x110d06];return _0x55fecb;};'use strict';var EventEmitter=require(_0x468b('0x0'));var FaxAccount=require(_0x468b('0x1'))['db'][_0x468b('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x468b('0x3')](0x0);var events={'afterCreate':_0x468b('0x4'),'afterUpdate':_0x468b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3e9295){return function(_0x92bd08,_0x37b3b4,_0x19300e){FaxAccountEvents[_0x468b('0x6')](_0x3e9295+':'+_0x92bd08['id'],_0x92bd08);FaxAccountEvents[_0x468b('0x6')](_0x3e9295,_0x92bd08);_0x19300e(null);};}for(var e in events){if(events[_0x468b('0x7')](e)){var event=events[e];FaxAccount[_0x468b('0x8')](e,emitEvent(event));}}module[_0x468b('0x9')]=FaxAccountEvents;
\ No newline at end of file
+var _0x0d84=['FaxAccount','setMaxListeners','save','update','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x78d885,_0x19dec7){var _0x317585=function(_0x3da287){while(--_0x3da287){_0x78d885['push'](_0x78d885['shift']());}};_0x317585(++_0x19dec7);}(_0x0d84,0x115));var _0x40d8=function(_0x457256,_0x5224bb){_0x457256=_0x457256-0x0;var _0xc7cea6=_0x0d84[_0x457256];return _0xc7cea6;};'use strict';var EventEmitter=require(_0x40d8('0x0'));var FaxAccount=require(_0x40d8('0x1'))['db'][_0x40d8('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x40d8('0x3')](0x0);var events={'afterCreate':_0x40d8('0x4'),'afterUpdate':_0x40d8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4c1148){return function(_0x4b823c,_0x3714ee,_0x485694){FaxAccountEvents['emit'](_0x4c1148+':'+_0x4b823c['id'],_0x4b823c);FaxAccountEvents[_0x40d8('0x6')](_0x4c1148,_0x4b823c);_0x485694(null);};}for(var e in events){if(events[_0x40d8('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x40d8('0x8')]=FaxAccountEvents;
\ No newline at end of file
index 9da1cc3..6ae0bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e2=['define','FaxAccount','fax_accounts','../../config/logger','api','path','rimraf','../../config/environment','./faxAccount.attributes','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x06e2,0x1c5));var _0x206e=function(_0x196736,_0x2d674a){_0x196736=_0x196736-0x0;var _0x1713c2=_0x06e2[_0x196736];return _0x1713c2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x206e('0x0'))(_0x206e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x206e('0x2'));var rimraf=require(_0x206e('0x3'));var config=require(_0x206e('0x4'));var attributes=require(_0x206e('0x5'));module[_0x206e('0x6')]=function(_0x8b8d56,_0x2af067){return _0x8b8d56[_0x206e('0x7')](_0x206e('0x8'),attributes,{'tableName':_0x206e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x37cb=['fax_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','FaxAccount'];(function(_0x3fd6ac,_0x8c841f){var _0x1a4790=function(_0x26f42f){while(--_0x26f42f){_0x3fd6ac['push'](_0x3fd6ac['shift']());}};_0x1a4790(++_0x8c841f);}(_0x37cb,0x90));var _0xb37c=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x37cb[_0x819464];return _0x49dcc0;};'use strict';var _=require(_0xb37c('0x0'));var util=require(_0xb37c('0x1'));var logger=require(_0xb37c('0x2'))(_0xb37c('0x3'));var moment=require(_0xb37c('0x4'));var BPromise=require('bluebird');var rp=require(_0xb37c('0x5'));var fs=require('fs');var path=require(_0xb37c('0x6'));var rimraf=require(_0xb37c('0x7'));var config=require(_0xb37c('0x8'));var attributes=require('./faxAccount.attributes');module[_0xb37c('0x9')]=function(_0x1e6db6,_0x288a13){return _0x1e6db6[_0xb37c('0xa')](_0xb37c('0xb'),attributes,{'tableName':_0xb37c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f3b0a7..9e75483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4daf=['NotifyFaxAccount','body','fax','CmContact','ValidationError','no\x20available\x20attributes','keys','createdAt','difference','updatedAt','CompanyId','ListId','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','from','account','CmList','List','Contacts','FaxApplication','Applications','list','applications','orderBy','priority','asc','length','create','contact','find','FaxInteraction','Contact\x20not\x20found','spread','get','autoclose','push','unmanaged','*,*,*,*','created','interaction','FaxMessage','AttachmentId','name','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','then','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','options','raw','where','attributes','limit','include','map','model','catch'];(function(_0x4f616b,_0x4cb423){var _0x1ef1c0=function(_0x5c59f8){while(--_0x5c59f8){_0x4f616b['push'](_0x4f616b['shift']());}};_0x1ef1c0(++_0x4cb423);}(_0x4daf,0x13c));var _0xf4da=function(_0x4512ee,_0x43e5aa){_0x4512ee=_0x4512ee-0x0;var _0x23510c=_0x4daf[_0x4512ee];return _0x23510c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf4da('0x0'));var BPromise=require(_0xf4da('0x1'));var rs=require(_0xf4da('0x2'));var fs=require('fs');var Redis=require(_0xf4da('0x3'));var db=require(_0xf4da('0x4'))['db'];var utils=require(_0xf4da('0x5'));var logger=require(_0xf4da('0x6'))(_0xf4da('0x7'));var config=require(_0xf4da('0x8'));var jayson=require(_0xf4da('0x9'));var client=jayson[_0xf4da('0xa')][_0xf4da('0xb')]({'port':0x232c});config[_0xf4da('0xc')]=_[_0xf4da('0xd')](config[_0xf4da('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf4da('0xe'))(new Redis(config['redis']));require(_0xf4da('0xf'))[_0xf4da('0x10')](socket);function respondWithRpcPromise(_0x4f888b,_0xc320d2,_0x3bc9d4){return new BPromise(function(_0x3e874a,_0x4287ba){return client[_0xf4da('0x11')](_0x4f888b,_0x3bc9d4)[_0xf4da('0x12')](function(_0x1dd7b0){logger['info'](_0xf4da('0x13'),_0xc320d2,'request\x20sent');logger[_0xf4da('0x14')](_0xf4da('0x15'),_0xc320d2,'request\x20sent',JSON[_0xf4da('0x16')](_0x1dd7b0));if(_0x1dd7b0['error']){if(_0x1dd7b0[_0xf4da('0x17')][_0xf4da('0x18')]===0x1f4){logger[_0xf4da('0x17')](_0xf4da('0x13'),_0xc320d2,_0x1dd7b0[_0xf4da('0x17')][_0xf4da('0x19')]);return _0x4287ba(_0x1dd7b0[_0xf4da('0x17')][_0xf4da('0x19')]);}logger[_0xf4da('0x17')]('FaxAccount,\x20%s,\x20%s',_0xc320d2,_0x1dd7b0['error'][_0xf4da('0x19')]);return _0x3e874a(_0x1dd7b0['error'][_0xf4da('0x19')]);}else{logger[_0xf4da('0x1a')](_0xf4da('0x13'),_0xc320d2,'request\x20sent');_0x3e874a(_0x1dd7b0['result'][_0xf4da('0x19')]);}})['catch'](function(_0x3c18a7){logger[_0xf4da('0x17')](_0xf4da('0x13'),_0xc320d2,_0x3c18a7);_0x4287ba(_0x3c18a7);});});}exports['GetFaxAccount']=function(_0xe541af){var _0x97e2a8=this;return new Promise(function(_0x3a7aae,_0x546e36){return db['FaxAccount']['findAll']({'raw':_0xe541af[_0xf4da('0x1b')]?_0xe541af['options'][_0xf4da('0x1c')]===undefined?!![]:![]:!![],'where':_0xe541af['options']?_0xe541af[_0xf4da('0x1b')][_0xf4da('0x1d')]||null:null,'attributes':_0xe541af[_0xf4da('0x1b')]?_0xe541af[_0xf4da('0x1b')][_0xf4da('0x1e')]||null:null,'limit':_0xe541af['options']?_0xe541af[_0xf4da('0x1b')][_0xf4da('0x1f')]||null:null,'include':_0xe541af[_0xf4da('0x1b')]?_0xe541af['options'][_0xf4da('0x20')]?_[_0xf4da('0x21')](_0xe541af[_0xf4da('0x1b')][_0xf4da('0x20')],function(_0x2d284f){return{'model':db[_0x2d284f[_0xf4da('0x22')]],'as':_0x2d284f['as'],'attributes':_0x2d284f[_0xf4da('0x1e')],'include':_0x2d284f[_0xf4da('0x20')]?_[_0xf4da('0x21')](_0x2d284f[_0xf4da('0x20')],function(_0x279031){return{'model':db[_0x279031[_0xf4da('0x22')]],'as':_0x279031['as'],'attributes':_0x279031[_0xf4da('0x1e')],'include':_0x279031[_0xf4da('0x20')]?_['map'](_0x279031['include'],function(_0x4c46a0){return{'model':db[_0x4c46a0[_0xf4da('0x22')]],'as':_0x4c46a0['as'],'attributes':_0x4c46a0['attributes']};}):[]};}):[]};}):[]:[]})[_0xf4da('0x12')](function(_0xb00479){logger[_0xf4da('0x1a')]('GetFaxAccount',_0xe541af);logger['debug']('GetFaxAccount',_0xe541af,JSON[_0xf4da('0x16')](_0xb00479));_0x3a7aae(_0xb00479);})[_0xf4da('0x23')](function(_0xb58bc8){logger['error']('GetFaxAccount',_0xb58bc8[_0xf4da('0x19')],_0xe541af);_0x546e36(_0x97e2a8[_0xf4da('0x17')](0x1f4,_0xb58bc8[_0xf4da('0x19')]));});});};exports[_0xf4da('0x24')]=function(_0x1e4cae,_0x427751,_0x4465e5){var _0x44fb7b=this;return new Promise(function(_0x3170df,_0x56d154){var _0xf72f74={'body':_0x1e4cae[_0xf4da('0x25')],'channel':_0xf4da('0x26')};var _0x473c55=[];var _0x55826f=[];var _0x4748bc={};return db[_0xf4da('0x27')]['describe']()[_0xf4da('0x12')](function(_0x329ebb){if(!_0x329ebb){throw new db['Sequelize'][(_0xf4da('0x28'))](_0xf4da('0x29'));}_0x473c55=_['difference'](_[_0xf4da('0x2a')](_0x329ebb),[_0xf4da('0x2b'),'updatedAt']);_0x55826f=_[_0xf4da('0x2c')](_[_0xf4da('0x2a')](_0x329ebb),['createdAt',_0xf4da('0x2d'),_0xf4da('0x2e'),_0xf4da('0x2f')]);if(_0x1e4cae[_0xf4da('0x25')]['id']){delete _0x1e4cae['body']['id'];}if(_[_0xf4da('0x30')](_0x1e4cae[_0xf4da('0x25')]['from'])){throw new db[(_0xf4da('0x31'))]['ValidationError'](_0xf4da('0x32'));}if(_[_0xf4da('0x30')](_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x25')])||_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x25')]===''){throw new db[(_0xf4da('0x31'))][(_0xf4da('0x28'))](_0xf4da('0x33'));}if(_[_0xf4da('0x30')](_0x1e4cae[_0xf4da('0x25')]['mapKey'])){throw new db[(_0xf4da('0x31'))][(_0xf4da('0x28'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55826f);}if(!_[_0xf4da('0x34')](_0x55826f,_0x1e4cae['body']['mapKey'])){throw new db[(_0xf4da('0x31'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55826f);}_0x4748bc[_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x35')]]=_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x36')];})[_0xf4da('0x12')](function(){return db['FaxAccount']['find']({'where':{'id':_0x1e4cae[_0xf4da('0x37')]['id']},'include':[{'model':db[_0xf4da('0x38')],'as':_0xf4da('0x39'),'include':[{'model':db[_0xf4da('0x27')],'as':_0xf4da('0x3a'),'where':_0x4748bc,'limit':0x1,'order':[[_0xf4da('0x2d'),'DESC']]}]},{'model':db[_0xf4da('0x3b')],'as':_0xf4da('0x3c')}]});})[_0xf4da('0x12')](function(_0x16dbd7){if(_0x16dbd7&&_0x16dbd7[_0xf4da('0x39')]){var _0x302a32=_0x16dbd7['get']({'plain':!![]});_0xf72f74[_0xf4da('0x37')]=_0x302a32;_0xf72f74['applications']=_0x302a32[_0xf4da('0x3c')];_0xf72f74[_0xf4da('0x3d')]=_0x302a32['List'];_0xf72f74[_0xf4da('0x3e')]=_[_0xf4da('0x3f')](_0xf72f74[_0xf4da('0x3e')],[_0xf4da('0x40')],[_0xf4da('0x41')]);if(_0xf72f74[_0xf4da('0x37')]['Applications']){delete _0xf72f74['account'][_0xf4da('0x3c')];}if(_0xf72f74[_0xf4da('0x37')][_0xf4da('0x39')]&&_0xf72f74[_0xf4da('0x37')][_0xf4da('0x39')][_0xf4da('0x3a')][_0xf4da('0x42')]){return _0xf72f74['account']['List']['Contacts'][0x0];}var _0x2f489e=_['defaults'](_0x1e4cae[_0xf4da('0x25')],{'firstName':_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x36')],'ListId':_0x302a32[_0xf4da('0x2f')]});_0x2f489e[_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x35')]]=_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x36')];return db[_0xf4da('0x27')][_0xf4da('0x43')](_0x2f489e,{'fields':_0x473c55,'raw':!![]});}})['then'](function(_0x2e1865){_0xf72f74[_0xf4da('0x44')]=_0x2e1865;if(_0x2e1865){var _0x5418c8={'ContactId':_0x2e1865['id'],'FaxAccountId':_0x1e4cae['account']['id'],'fax':_0x2e1865[_0xf4da('0x26')]};return db['FaxInteraction'][_0xf4da('0x45')]({'where':{'ContactId':_0x2e1865['id'],'closed':![],'FaxAccountId':_0x1e4cae[_0xf4da('0x37')]['id']}})[_0xf4da('0x12')](function(_0x43cee4){if(_0x43cee4){return[_0x43cee4,![]];}return db[_0xf4da('0x46')][_0xf4da('0x43')](_0x5418c8)[_0xf4da('0x12')](function(_0x1ffd3c){return[_0x1ffd3c,!![]];});});}else{throw new Error(_0xf4da('0x47'));}})[_0xf4da('0x48')](function(_0x465299,_0x3f07e7){var _0x4aedc1=_0x465299[_0xf4da('0x49')]({'plain':!![]});if(_0x3f07e7){if(_0xf72f74[_0xf4da('0x37')][_0xf4da('0x4a')]){_0xf72f74['applications'][_0xf4da('0x4b')]({'id':0x0,'priority':_0xf72f74[_0xf4da('0x3e')]['length']+0x1,'app':'close','appdata':_0xf4da('0x4c'),'interval':_0xf4da('0x4d')});}_0x4aedc1[_0xf4da('0x4e')]=!![];}else{_0x4aedc1['created']=![];}_0xf72f74[_0xf4da('0x4f')]=_0x4aedc1;return db[_0xf4da('0x50')][_0xf4da('0x43')]({'body':_0x1e4cae[_0xf4da('0x25')]['body'],'FaxAccountId':_0x1e4cae['account']['id'],'FaxInteractionId':_0x465299['id'],'direction':'in','ContactId':_0x465299['ContactId'],'AttachmentId':_0x1e4cae[_0xf4da('0x25')][_0xf4da('0x51')]});})['then'](function(_0x44ffe8){_0xf72f74['message']=_0x44ffe8;if(_0xf72f74[_0xf4da('0x4f')]['UserId']){return db['User'][_0xf4da('0x45')]({'attributes':['id',_0xf4da('0x52')],'where':{'id':_0xf72f74[_0xf4da('0x4f')][_0xf4da('0x53')]}})[_0xf4da('0x12')](function(_0x19397d){if(_0x19397d){_0xf72f74[_0xf4da('0x3e')][_0xf4da('0x54')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x19397d[_0xf4da('0x52')]+','+(_0xf72f74[_0xf4da('0x37')][_0xf4da('0x55')]||0xa),'interval':_0xf4da('0x4d')});}return respondWithRpcPromise(_0xf4da('0x56'),_0xf4da('0x57'),_0xf72f74);});}return respondWithRpcPromise(_0xf4da('0x56'),_0xf4da('0x57'),_0xf72f74);})[_0xf4da('0x12')](function(_0x2328c8){_0x3170df(_0x2328c8);})[_0xf4da('0x23')](function(_0x50ae6){_0x56d154(_0x44fb7b[_0xf4da('0x17')](0x1f4,_0x50ae6[_0xf4da('0x19')]));});});};
\ No newline at end of file
+var _0x6428=['mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','CmContact','Contacts','DESC','FaxApplication','applications','Applications','list','orderBy','length','mapKey','create','contact','FaxInteraction','Contact\x20not\x20found','spread','get','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','AttachmentId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','catch','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','FaxAccount,\x20%s,\x20%s','result','FaxAccount','options','raw','attributes','limit','include','map','model','GetFaxAccount','NotifyFaxAccount','body','fax','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty'];(function(_0x5f0049,_0x19334c){var _0x13b5b8=function(_0x3c390b){while(--_0x3c390b){_0x5f0049['push'](_0x5f0049['shift']());}};_0x13b5b8(++_0x19334c);}(_0x6428,0x12f));var _0x8642=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x6428[_0x491a7f];return _0x3d8f44;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8642('0x0'));var BPromise=require(_0x8642('0x1'));var rs=require(_0x8642('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8642('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8642('0x4'));var config=require('../../config/environment');var jayson=require(_0x8642('0x5'));var client=jayson[_0x8642('0x6')][_0x8642('0x7')]({'port':0x232c});config[_0x8642('0x8')]=_[_0x8642('0x9')](config[_0x8642('0x8')],{'host':_0x8642('0xa'),'port':0x18eb});var socket=require(_0x8642('0xb'))(new Redis(config[_0x8642('0x8')]));require('./faxAccount.socket')[_0x8642('0xc')](socket);function respondWithRpcPromise(_0xded23e,_0x589c84,_0x28ca82){return new BPromise(function(_0x32e2e3,_0x5d8f2b){return client[_0x8642('0xd')](_0xded23e,_0x28ca82)[_0x8642('0xe')](function(_0x2177b8){logger[_0x8642('0xf')]('FaxAccount,\x20%s,\x20%s',_0x589c84,_0x8642('0x10'));logger[_0x8642('0x11')](_0x8642('0x12'),_0x589c84,_0x8642('0x10'),JSON['stringify'](_0x2177b8));if(_0x2177b8[_0x8642('0x13')]){if(_0x2177b8['error'][_0x8642('0x14')]===0x1f4){logger[_0x8642('0x13')]('FaxAccount,\x20%s,\x20%s',_0x589c84,_0x2177b8[_0x8642('0x13')][_0x8642('0x15')]);return _0x5d8f2b(_0x2177b8[_0x8642('0x13')][_0x8642('0x15')]);}logger['error'](_0x8642('0x16'),_0x589c84,_0x2177b8[_0x8642('0x13')][_0x8642('0x15')]);return _0x32e2e3(_0x2177b8[_0x8642('0x13')][_0x8642('0x15')]);}else{logger[_0x8642('0xf')](_0x8642('0x16'),_0x589c84,'request\x20sent');_0x32e2e3(_0x2177b8[_0x8642('0x17')]['message']);}})['catch'](function(_0x49fb29){logger[_0x8642('0x13')](_0x8642('0x16'),_0x589c84,_0x49fb29);_0x5d8f2b(_0x49fb29);});});}exports['GetFaxAccount']=function(_0x4f4082){var _0x41364e=this;return new Promise(function(_0x21be90,_0x4b6c55){return db[_0x8642('0x18')]['findAll']({'raw':_0x4f4082[_0x8642('0x19')]?_0x4f4082[_0x8642('0x19')][_0x8642('0x1a')]===undefined?!![]:![]:!![],'where':_0x4f4082['options']?_0x4f4082[_0x8642('0x19')]['where']||null:null,'attributes':_0x4f4082[_0x8642('0x19')]?_0x4f4082[_0x8642('0x19')][_0x8642('0x1b')]||null:null,'limit':_0x4f4082[_0x8642('0x19')]?_0x4f4082[_0x8642('0x19')][_0x8642('0x1c')]||null:null,'include':_0x4f4082[_0x8642('0x19')]?_0x4f4082[_0x8642('0x19')][_0x8642('0x1d')]?_[_0x8642('0x1e')](_0x4f4082[_0x8642('0x19')]['include'],function(_0x3a6dc0){return{'model':db[_0x3a6dc0[_0x8642('0x1f')]],'as':_0x3a6dc0['as'],'attributes':_0x3a6dc0[_0x8642('0x1b')],'include':_0x3a6dc0[_0x8642('0x1d')]?_['map'](_0x3a6dc0[_0x8642('0x1d')],function(_0x5f5026){return{'model':db[_0x5f5026[_0x8642('0x1f')]],'as':_0x5f5026['as'],'attributes':_0x5f5026[_0x8642('0x1b')],'include':_0x5f5026['include']?_[_0x8642('0x1e')](_0x5f5026[_0x8642('0x1d')],function(_0xd15ee7){return{'model':db[_0xd15ee7[_0x8642('0x1f')]],'as':_0xd15ee7['as'],'attributes':_0xd15ee7[_0x8642('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x8642('0xe')](function(_0x411be1){logger['info'](_0x8642('0x20'),_0x4f4082);logger[_0x8642('0x11')]('GetFaxAccount',_0x4f4082,JSON['stringify'](_0x411be1));_0x21be90(_0x411be1);})['catch'](function(_0xc01efb){logger[_0x8642('0x13')](_0x8642('0x20'),_0xc01efb[_0x8642('0x15')],_0x4f4082);_0x4b6c55(_0x41364e[_0x8642('0x13')](0x1f4,_0xc01efb[_0x8642('0x15')]));});});};exports[_0x8642('0x21')]=function(_0x2228a3,_0x551930,_0x1c6572){var _0xbdf51c=this;return new Promise(function(_0x129923,_0x31a72b){var _0x33ad78={'body':_0x2228a3[_0x8642('0x22')],'channel':_0x8642('0x23')};var _0x35ebfb=[];var _0x3e8afb=[];var _0x3da623={};return db['CmContact']['describe']()[_0x8642('0xe')](function(_0x4cb330){if(!_0x4cb330){throw new db[(_0x8642('0x24'))][(_0x8642('0x25'))](_0x8642('0x26'));}_0x35ebfb=_[_0x8642('0x27')](_[_0x8642('0x28')](_0x4cb330),['createdAt',_0x8642('0x29')]);_0x3e8afb=_[_0x8642('0x27')](_[_0x8642('0x28')](_0x4cb330),[_0x8642('0x2a'),_0x8642('0x29'),_0x8642('0x2b'),_0x8642('0x2c')]);if(_0x2228a3[_0x8642('0x22')]['id']){delete _0x2228a3[_0x8642('0x22')]['id'];}if(_['isNil'](_0x2228a3[_0x8642('0x22')][_0x8642('0x2d')])){throw new db[(_0x8642('0x24'))][(_0x8642('0x25'))](_0x8642('0x2e'));}if(_[_0x8642('0x2f')](_0x2228a3[_0x8642('0x22')][_0x8642('0x22')])||_0x2228a3['body'][_0x8642('0x22')]===''){throw new db[(_0x8642('0x24'))][(_0x8642('0x25'))](_0x8642('0x30'));}if(_['isNil'](_0x2228a3[_0x8642('0x22')]['mapKey'])){throw new db[(_0x8642('0x24'))][(_0x8642('0x25'))](_0x8642('0x31')+_0x3e8afb);}if(!_['includes'](_0x3e8afb,_0x2228a3[_0x8642('0x22')]['mapKey'])){throw new db['Sequelize'][(_0x8642('0x25'))](_0x8642('0x32')+_0x3e8afb);}_0x3da623[_0x2228a3[_0x8642('0x22')]['mapKey']]=_0x2228a3[_0x8642('0x22')]['from'];})[_0x8642('0xe')](function(){return db[_0x8642('0x18')][_0x8642('0x33')]({'where':{'id':_0x2228a3[_0x8642('0x34')]['id']},'include':[{'model':db[_0x8642('0x35')],'as':_0x8642('0x36'),'include':[{'model':db[_0x8642('0x37')],'as':_0x8642('0x38'),'where':_0x3da623,'limit':0x1,'order':[[_0x8642('0x29'),_0x8642('0x39')]]}]},{'model':db[_0x8642('0x3a')],'as':'Applications'}]});})[_0x8642('0xe')](function(_0x4ee804){if(_0x4ee804&&_0x4ee804[_0x8642('0x36')]){var _0x462294=_0x4ee804['get']({'plain':!![]});_0x33ad78['account']=_0x462294;_0x33ad78[_0x8642('0x3b')]=_0x462294[_0x8642('0x3c')];_0x33ad78[_0x8642('0x3d')]=_0x462294[_0x8642('0x36')];_0x33ad78['applications']=_[_0x8642('0x3e')](_0x33ad78[_0x8642('0x3b')],['priority'],['asc']);if(_0x33ad78[_0x8642('0x34')][_0x8642('0x3c')]){delete _0x33ad78[_0x8642('0x34')][_0x8642('0x3c')];}if(_0x33ad78[_0x8642('0x34')]['List']&&_0x33ad78[_0x8642('0x34')][_0x8642('0x36')]['Contacts'][_0x8642('0x3f')]){return _0x33ad78[_0x8642('0x34')][_0x8642('0x36')][_0x8642('0x38')][0x0];}var _0xfa9ead=_[_0x8642('0x9')](_0x2228a3[_0x8642('0x22')],{'firstName':_0x2228a3[_0x8642('0x22')][_0x8642('0x2d')],'ListId':_0x462294[_0x8642('0x2c')]});_0xfa9ead[_0x2228a3[_0x8642('0x22')][_0x8642('0x40')]]=_0x2228a3[_0x8642('0x22')]['from'];return db['CmContact'][_0x8642('0x41')](_0xfa9ead,{'fields':_0x35ebfb,'raw':!![]});}})[_0x8642('0xe')](function(_0x276723){_0x33ad78[_0x8642('0x42')]=_0x276723;if(_0x276723){var _0x58e459={'ContactId':_0x276723['id'],'FaxAccountId':_0x2228a3[_0x8642('0x34')]['id'],'fax':_0x276723[_0x8642('0x23')]};return db[_0x8642('0x43')][_0x8642('0x33')]({'where':{'ContactId':_0x276723['id'],'closed':![],'FaxAccountId':_0x2228a3[_0x8642('0x34')]['id']}})[_0x8642('0xe')](function(_0x42a52e){if(_0x42a52e){return[_0x42a52e,![]];}return db[_0x8642('0x43')]['create'](_0x58e459)[_0x8642('0xe')](function(_0x430ac7){return[_0x430ac7,!![]];});});}else{throw new Error(_0x8642('0x44'));}})[_0x8642('0x45')](function(_0x34e353,_0x37005d){var _0x575e76=_0x34e353[_0x8642('0x46')]({'plain':!![]});if(_0x37005d){if(_0x33ad78[_0x8642('0x34')][_0x8642('0x47')]){_0x33ad78[_0x8642('0x3b')][_0x8642('0x48')]({'id':0x0,'priority':_0x33ad78[_0x8642('0x3b')][_0x8642('0x3f')]+0x1,'app':_0x8642('0x49'),'appdata':_0x8642('0x4a'),'interval':_0x8642('0x4b')});}_0x575e76[_0x8642('0x4c')]=!![];}else{_0x575e76['created']=![];}_0x33ad78[_0x8642('0x4d')]=_0x575e76;return db[_0x8642('0x4e')][_0x8642('0x41')]({'body':_0x2228a3[_0x8642('0x22')]['body'],'FaxAccountId':_0x2228a3[_0x8642('0x34')]['id'],'FaxInteractionId':_0x34e353['id'],'direction':'in','ContactId':_0x34e353['ContactId'],'AttachmentId':_0x2228a3[_0x8642('0x22')][_0x8642('0x4f')]});})[_0x8642('0xe')](function(_0x504360){_0x33ad78[_0x8642('0x15')]=_0x504360;if(_0x33ad78[_0x8642('0x4d')][_0x8642('0x50')]){return db[_0x8642('0x51')][_0x8642('0x33')]({'attributes':['id',_0x8642('0x52')],'where':{'id':_0x33ad78[_0x8642('0x4d')][_0x8642('0x50')]}})[_0x8642('0xe')](function(_0xe6b6ed){if(_0xe6b6ed){_0x33ad78[_0x8642('0x3b')][_0x8642('0x53')]({'id':0x0,'priority':0x0,'app':_0x8642('0x54'),'appdata':_0xe6b6ed[_0x8642('0x52')]+','+(_0x33ad78[_0x8642('0x34')][_0x8642('0x55')]||0xa),'interval':_0x8642('0x4b')});}return respondWithRpcPromise(_0x8642('0x56'),'startRouting',_0x33ad78);});}return respondWithRpcPromise(_0x8642('0x56'),'startRouting',_0x33ad78);})[_0x8642('0xe')](function(_0x3fc888){_0x129923(_0x3fc888);})[_0x8642('0x57')](function(_0x212ed0){_0x31a72b(_0xbdf51c[_0x8642('0x13')](0x1f4,_0x212ed0[_0x8642('0x15')]));});});};
\ No newline at end of file
index da4967e..b59ea8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00af=['./faxAccount.events','update','register','length','faxAccount:'];(function(_0x52ed5e,_0x57fe53){var _0x438782=function(_0x3b0e6b){while(--_0x3b0e6b){_0x52ed5e['push'](_0x52ed5e['shift']());}};_0x438782(++_0x57fe53);}(_0x00af,0x172));var _0xf00a=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x00af[_0x4cf98e];return _0x1623ac;};'use strict';var FaxAccountEvents=require(_0xf00a('0x0'));var events=['save','remove',_0xf00a('0x1')];function createListener(_0x3c104d,_0x2f3bb7){return function(_0x27473d){_0x2f3bb7['emit'](_0x3c104d,_0x27473d);};}function removeListener(_0x1faebd,_0x4f9cce){return function(){FaxAccountEvents['removeListener'](_0x1faebd,_0x4f9cce);};}exports[_0xf00a('0x2')]=function(_0x5f34e6){for(var _0x24eeeb=0x0,_0xd11747=events[_0xf00a('0x3')];_0x24eeeb<_0xd11747;_0x24eeeb++){var _0x58bd62=events[_0x24eeeb];var _0x2511ad=createListener(_0xf00a('0x4')+_0x58bd62,_0x5f34e6);FaxAccountEvents['on'](_0x58bd62,_0x2511ad);}};
\ No newline at end of file
+var _0x0d9e=['update','emit','removeListener','register','length','faxAccount:','./faxAccount.events'];(function(_0x8ce5c,_0x54ec2a){var _0x2ba6c3=function(_0x5373f4){while(--_0x5373f4){_0x8ce5c['push'](_0x8ce5c['shift']());}};_0x2ba6c3(++_0x54ec2a);}(_0x0d9e,0xfb));var _0xe0d9=function(_0x5ea4c0,_0x142b37){_0x5ea4c0=_0x5ea4c0-0x0;var _0x473d79=_0x0d9e[_0x5ea4c0];return _0x473d79;};'use strict';var FaxAccountEvents=require(_0xe0d9('0x0'));var events=['save','remove',_0xe0d9('0x1')];function createListener(_0x2675af,_0x13ff01){return function(_0x3cecdf){_0x13ff01[_0xe0d9('0x2')](_0x2675af,_0x3cecdf);};}function removeListener(_0x2bb0bc,_0x2145dc){return function(){FaxAccountEvents[_0xe0d9('0x3')](_0x2bb0bc,_0x2145dc);};}exports[_0xe0d9('0x4')]=function(_0x4fed13){for(var _0x3855e6=0x0,_0x124c9a=events[_0xe0d9('0x5')];_0x3855e6<_0x124c9a;_0x3855e6++){var _0x23f7f0=events[_0x3855e6];var _0xa5bb3a=createListener(_0xe0d9('0x6')+_0x23f7f0,_0x4fed13);FaxAccountEvents['on'](_0x23f7f0,_0xa5bb3a);}};
\ No newline at end of file
index f7e2d2e..322aea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x17bec1,_0x5927a6){var _0x1502c8=function(_0x16ac6b){while(--_0x16ac6b){_0x17bec1['push'](_0x17bec1['shift']());}};_0x1502c8(++_0x5927a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x531a73,_0x5478b2){var _0x44d03d=function(_0x12cfe1){while(--_0x12cfe1){_0x531a73['push'](_0x531a73['shift']());}};_0x44d03d(++_0x5478b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 4b0734f..db46f86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4665=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x16feac,_0x4cb36f){var _0x42b6d7=function(_0x3dc2d2){while(--_0x3dc2d2){_0x16feac['push'](_0x16feac['shift']());}};_0x42b6d7(++_0x4cb36f);}(_0x4665,0xe5));var _0x5466=function(_0x5882ee,_0x583eea){_0x5882ee=_0x5882ee-0x0;var _0x5bae6d=_0x4665[_0x5882ee];return _0x5bae6d;};'use strict';var Sequelize=require('sequelize');module[_0x5466('0x0')]={'priority':{'type':Sequelize[_0x5466('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x5466('0x2')],'allowNull':![],'defaultValue':_0x5466('0x3')},'appdata':{'type':Sequelize[_0x5466('0x4')]()},'description':{'type':Sequelize[_0x5466('0x2')]},'interval':{'type':Sequelize[_0x5466('0x2')],'defaultValue':_0x5466('0x5')}};
\ No newline at end of file
+var _0x9524=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x4bc89f,_0x41a5b8){var _0x452c65=function(_0xd70c21){while(--_0xd70c21){_0x4bc89f['push'](_0x4bc89f['shift']());}};_0x452c65(++_0x41a5b8);}(_0x9524,0x1e6));var _0x4952=function(_0x271917,_0x1c2442){_0x271917=_0x271917-0x0;var _0x2bd9d4=_0x9524[_0x271917];return _0x2bd9d4;};'use strict';var Sequelize=require(_0x4952('0x0'));module[_0x4952('0x1')]={'priority':{'type':Sequelize[_0x4952('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4952('0x3')],'allowNull':![],'defaultValue':_0x4952('0x4')},'appdata':{'type':Sequelize[_0x4952('0x5')]()},'description':{'type':Sequelize[_0x4952('0x3')]},'interval':{'type':Sequelize[_0x4952('0x3')],'defaultValue':_0x4952('0x6')}};
\ No newline at end of file
index 7b13d25..d04d76b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa385=['request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','FaxApplication','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','catch','show','params','options','find','create','body','zip-dir','fast-json-patch'];(function(_0x1fca05,_0x2fcdbb){var _0x229b23=function(_0x4815a1){while(--_0x4815a1){_0x1fca05['push'](_0x1fca05['shift']());}};_0x229b23(++_0x2fcdbb);}(_0xa385,0x8c));var _0x5a38=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xa385[_0x51020b];return _0x371e47;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5a38('0x0'));var jsonpatch=require(_0x5a38('0x1'));var rp=require(_0x5a38('0x2'));var moment=require(_0x5a38('0x3'));var BPromise=require(_0x5a38('0x4'));var Mustache=require('mustache');var util=require(_0x5a38('0x5'));var path=require('path');var sox=require(_0x5a38('0x6'));var csv=require(_0x5a38('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5a38('0x8'));var squel=require(_0x5a38('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5a38('0x7'));var querystring=require('querystring');var Papa=require(_0x5a38('0xa'));var Redis=require(_0x5a38('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x5a38('0xc'));var as=require(_0x5a38('0xd'));var hardwareService=require(_0x5a38('0xe'));var logger=require(_0x5a38('0xf'))('api');var utils=require(_0x5a38('0x10'));var config=require(_0x5a38('0x11'));var licenseUtil=require(_0x5a38('0x12'));var db=require(_0x5a38('0x13'))['db'];function respondWithStatusCode(_0x340f91,_0x4e2716){_0x4e2716=_0x4e2716||0xcc;return function(_0x34d75c){if(_0x34d75c){return _0x340f91[_0x5a38('0x14')](_0x4e2716);}return _0x340f91[_0x5a38('0x15')](_0x4e2716)[_0x5a38('0x16')]();};}function respondWithResult(_0x14e791,_0x59c5b2){_0x59c5b2=_0x59c5b2||0xc8;return function(_0x2e2550){if(_0x2e2550){return _0x14e791[_0x5a38('0x15')](_0x59c5b2)['json'](_0x2e2550);}};}function respondWithFilteredResult(_0x484915,_0x5910af){return function(_0x13b37c){if(_0x13b37c){var _0x584b9f=typeof _0x5910af[_0x5a38('0x17')]===_0x5a38('0x18')&&typeof _0x5910af[_0x5a38('0x19')]===_0x5a38('0x18');var _0x1610ea=_0x13b37c[_0x5a38('0x1a')];var _0x1f3ed5=_0x584b9f?0x0:_0x5910af[_0x5a38('0x17')];var _0x47dc2d=_0x584b9f?_0x13b37c[_0x5a38('0x1a')]:_0x5910af[_0x5a38('0x17')]+_0x5910af['limit'];var _0x300720;if(_0x47dc2d>=_0x1610ea){_0x47dc2d=_0x1610ea;_0x300720=0xc8;}else{_0x300720=0xce;}_0x484915['status'](_0x300720);return _0x484915[_0x5a38('0x1b')](_0x5a38('0x1c'),_0x1f3ed5+'-'+_0x47dc2d+'/'+_0x1610ea)[_0x5a38('0x1d')](_0x13b37c);}return null;};}function patchUpdates(_0x2a8ede){return function(_0x459b9d){try{jsonpatch[_0x5a38('0x1e')](_0x459b9d,_0x2a8ede,!![]);}catch(_0x26fdfd){return BPromise[_0x5a38('0x1f')](_0x26fdfd);}return _0x459b9d[_0x5a38('0x20')]();};}function saveUpdates(_0x1b733e,_0x363f57){return function(_0x1e2f73){if(_0x1e2f73){return _0x1e2f73[_0x5a38('0x21')](_0x1b733e)[_0x5a38('0x22')](function(_0x3c0049){return _0x3c0049;});}return null;};}function removeEntity(_0x393a74,_0x32cddc){return function(_0x52529a){if(_0x52529a){return _0x52529a['destroy']()['then'](function(){_0x393a74[_0x5a38('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x322273,_0xe71ec2){return function(_0x28095d){if(!_0x28095d){_0x322273['sendStatus'](0x194);}return _0x28095d;};}function handleError(_0x567cfe,_0x29df60){_0x29df60=_0x29df60||0x1f4;return function(_0x2c0feb){logger[_0x5a38('0x23')](_0x2c0feb[_0x5a38('0x24')]);if(_0x2c0feb[_0x5a38('0x25')]){delete _0x2c0feb['name'];}_0x567cfe[_0x5a38('0x15')](_0x29df60)[_0x5a38('0x26')](_0x2c0feb);};}exports['index']=function(_0x79e24d,_0x22c089){var _0x41df1a={},_0x1ab778={},_0x29edea={'count':0x0,'rows':[]};var _0x36a52a=_['map'](db[_0x5a38('0x27')][_0x5a38('0x28')],function(_0x548dff){return{'name':_0x548dff[_0x5a38('0x29')],'type':_0x548dff[_0x5a38('0x2a')][_0x5a38('0x2b')]};});_0x1ab778[_0x5a38('0x2c')]=_[_0x5a38('0x2d')](_0x36a52a,_0x5a38('0x25'));_0x1ab778['query']=_[_0x5a38('0x2e')](_0x79e24d[_0x5a38('0x2f')]);_0x1ab778[_0x5a38('0x30')]=_[_0x5a38('0x31')](_0x1ab778['model'],_0x1ab778[_0x5a38('0x2f')]);_0x41df1a[_0x5a38('0x32')]=_['intersection'](_0x1ab778['model'],qs[_0x5a38('0x33')](_0x79e24d[_0x5a38('0x2f')]['fields']));_0x41df1a[_0x5a38('0x32')]=_0x41df1a[_0x5a38('0x32')][_0x5a38('0x34')]?_0x41df1a['attributes']:_0x1ab778[_0x5a38('0x2c')];if(!_0x79e24d['query'][_0x5a38('0x35')](_0x5a38('0x36'))){_0x41df1a['limit']=qs[_0x5a38('0x19')](_0x79e24d[_0x5a38('0x2f')]['limit']);_0x41df1a[_0x5a38('0x17')]=qs['offset'](_0x79e24d['query'][_0x5a38('0x17')]);}_0x41df1a[_0x5a38('0x37')]=qs['sort'](_0x79e24d[_0x5a38('0x2f')][_0x5a38('0x38')]);_0x41df1a['where']=qs[_0x5a38('0x30')](_[_0x5a38('0x39')](_0x79e24d['query'],_0x1ab778[_0x5a38('0x30')]),_0x36a52a);if(_0x79e24d['query'][_0x5a38('0x3a')]){_0x41df1a[_0x5a38('0x3b')]=_[_0x5a38('0x3c')](_0x41df1a[_0x5a38('0x3b')],{'$or':_[_0x5a38('0x2d')](_0x36a52a,function(_0x24cca5){if(_0x24cca5[_0x5a38('0x2a')]!==_0x5a38('0x3d')){var _0x340dcf={};_0x340dcf[_0x24cca5[_0x5a38('0x25')]]={'$like':'%'+_0x79e24d['query'][_0x5a38('0x3a')]+'%'};return _0x340dcf;}})});}_0x41df1a=_[_0x5a38('0x3c')]({},_0x41df1a,_0x79e24d['options']);var _0x5c0a4c={'where':_0x41df1a[_0x5a38('0x3b')]};return db[_0x5a38('0x27')][_0x5a38('0x1a')](_0x5c0a4c)['then'](function(_0x2b5bc2){_0x29edea[_0x5a38('0x1a')]=_0x2b5bc2;if(_0x79e24d['query'][_0x5a38('0x3e')]){_0x41df1a[_0x5a38('0x3f')]=[{'all':!![]}];}return db[_0x5a38('0x27')]['findAll'](_0x41df1a);})[_0x5a38('0x22')](function(_0x5a85a6){_0x29edea['rows']=_0x5a85a6;return _0x29edea;})[_0x5a38('0x22')](respondWithFilteredResult(_0x22c089,_0x41df1a))[_0x5a38('0x40')](handleError(_0x22c089,null));};exports[_0x5a38('0x41')]=function(_0x2807fe,_0x1d7468){var _0x49dea9={'raw':!![],'where':{'id':_0x2807fe[_0x5a38('0x42')]['id']}},_0x2da7c5={};_0x2da7c5[_0x5a38('0x2c')]=_[_0x5a38('0x2e')](db[_0x5a38('0x27')][_0x5a38('0x28')]);_0x2da7c5['query']=_[_0x5a38('0x2e')](_0x2807fe[_0x5a38('0x2f')]);_0x2da7c5[_0x5a38('0x30')]=_[_0x5a38('0x31')](_0x2da7c5[_0x5a38('0x2c')],_0x2da7c5[_0x5a38('0x2f')]);_0x49dea9['attributes']=_[_0x5a38('0x31')](_0x2da7c5[_0x5a38('0x2c')],qs[_0x5a38('0x33')](_0x2807fe[_0x5a38('0x2f')][_0x5a38('0x33')]));_0x49dea9[_0x5a38('0x32')]=_0x49dea9['attributes'][_0x5a38('0x34')]?_0x49dea9[_0x5a38('0x32')]:_0x2da7c5['model'];if(_0x2807fe[_0x5a38('0x2f')]['includeAll']){_0x49dea9[_0x5a38('0x3f')]=[{'all':!![]}];}_0x49dea9=_[_0x5a38('0x3c')]({},_0x49dea9,_0x2807fe[_0x5a38('0x43')]);return db[_0x5a38('0x27')][_0x5a38('0x44')](_0x49dea9)[_0x5a38('0x22')](handleEntityNotFound(_0x1d7468,null))[_0x5a38('0x22')](respondWithResult(_0x1d7468,null))['catch'](handleError(_0x1d7468,null));};exports[_0x5a38('0x45')]=function(_0x2bd745,_0x11ab98){return db[_0x5a38('0x27')][_0x5a38('0x45')](_0x2bd745['body'],{})['then'](respondWithResult(_0x11ab98,0xc9))[_0x5a38('0x40')](handleError(_0x11ab98,null));};exports[_0x5a38('0x21')]=function(_0x4aa34e,_0x48b83a){if(_0x4aa34e['body']['id']){delete _0x4aa34e[_0x5a38('0x46')]['id'];}return db[_0x5a38('0x27')]['find']({'where':{'id':_0x4aa34e[_0x5a38('0x42')]['id']}})[_0x5a38('0x22')](handleEntityNotFound(_0x48b83a,null))[_0x5a38('0x22')](saveUpdates(_0x4aa34e['body'],null))[_0x5a38('0x22')](respondWithResult(_0x48b83a,null))[_0x5a38('0x40')](handleError(_0x48b83a,null));};exports['destroy']=function(_0x2bfed8,_0x13be62){return db[_0x5a38('0x27')][_0x5a38('0x44')]({'where':{'id':_0x2bfed8[_0x5a38('0x42')]['id']}})[_0x5a38('0x22')](handleEntityNotFound(_0x13be62,null))['then'](removeEntity(_0x13be62,null))[_0x5a38('0x40')](handleError(_0x13be62,null));};
\ No newline at end of file
+var _0x6997=['undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','fieldName','key','model','query','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','rows','catch','params','rawAttributes','intersection','length','includeAll','find','create','FaxApplication','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','json','offset'];(function(_0x4b4902,_0xc8607a){var _0x54e166=function(_0x19ede6){while(--_0x19ede6){_0x4b4902['push'](_0x4b4902['shift']());}};_0x54e166(++_0xc8607a);}(_0x6997,0xfc));var _0x7699=function(_0x51ce65,_0x2a8363){_0x51ce65=_0x51ce65-0x0;var _0x57fe34=_0x6997[_0x51ce65];return _0x57fe34;};'use strict';var emlformat=require(_0x7699('0x0'));var rimraf=require(_0x7699('0x1'));var zipdir=require(_0x7699('0x2'));var jsonpatch=require(_0x7699('0x3'));var rp=require('request-promise');var moment=require(_0x7699('0x4'));var BPromise=require(_0x7699('0x5'));var Mustache=require('mustache');var util=require(_0x7699('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x7699('0x7'));var ejs=require(_0x7699('0x8'));var fs=require('fs');var fs_extra=require(_0x7699('0x9'));var _=require(_0x7699('0xa'));var squel=require('squel');var crypto=require(_0x7699('0xb'));var jsforce=require(_0x7699('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7699('0x7'));var querystring=require(_0x7699('0xd'));var Papa=require('papaparse');var Redis=require(_0x7699('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x7699('0xf'));var as=require(_0x7699('0x10'));var hardwareService=require(_0x7699('0x11'));var logger=require(_0x7699('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x7699('0x13'));var licenseUtil=require(_0x7699('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25448a,_0x48c1fc){_0x48c1fc=_0x48c1fc||0xcc;return function(_0x52285c){if(_0x52285c){return _0x25448a['sendStatus'](_0x48c1fc);}return _0x25448a[_0x7699('0x15')](_0x48c1fc)['end']();};}function respondWithResult(_0xdf4f84,_0x436db1){_0x436db1=_0x436db1||0xc8;return function(_0x323e93){if(_0x323e93){return _0xdf4f84[_0x7699('0x15')](_0x436db1)[_0x7699('0x16')](_0x323e93);}};}function respondWithFilteredResult(_0x40e3a1,_0xcf266){return function(_0x3b59ba){if(_0x3b59ba){var _0x2293f4=typeof _0xcf266[_0x7699('0x17')]===_0x7699('0x18')&&typeof _0xcf266[_0x7699('0x19')]==='undefined';var _0x346317=_0x3b59ba[_0x7699('0x1a')];var _0x4fe4c4=_0x2293f4?0x0:_0xcf266['offset'];var _0x1b132a=_0x2293f4?_0x3b59ba[_0x7699('0x1a')]:_0xcf266[_0x7699('0x17')]+_0xcf266[_0x7699('0x19')];var _0x9d8913;if(_0x1b132a>=_0x346317){_0x1b132a=_0x346317;_0x9d8913=0xc8;}else{_0x9d8913=0xce;}_0x40e3a1['status'](_0x9d8913);return _0x40e3a1[_0x7699('0x1b')](_0x7699('0x1c'),_0x4fe4c4+'-'+_0x1b132a+'/'+_0x346317)[_0x7699('0x16')](_0x3b59ba);}return null;};}function patchUpdates(_0x4318f4){return function(_0x20783f){try{jsonpatch[_0x7699('0x1d')](_0x20783f,_0x4318f4,!![]);}catch(_0x4c5cd2){return BPromise[_0x7699('0x1e')](_0x4c5cd2);}return _0x20783f[_0x7699('0x1f')]();};}function saveUpdates(_0x129c57,_0x3bbb6d){return function(_0x3eff07){if(_0x3eff07){return _0x3eff07[_0x7699('0x20')](_0x129c57)[_0x7699('0x21')](function(_0x890c7a){return _0x890c7a;});}return null;};}function removeEntity(_0x323d1b,_0x4f9b53){return function(_0x422dbc){if(_0x422dbc){return _0x422dbc[_0x7699('0x22')]()[_0x7699('0x21')](function(){_0x323d1b['status'](0xcc)[_0x7699('0x23')]();});}};}function handleEntityNotFound(_0x3ebe79,_0x4b8989){return function(_0x4bfc06){if(!_0x4bfc06){_0x3ebe79['sendStatus'](0x194);}return _0x4bfc06;};}function handleError(_0x4dc363,_0x2ce5a9){_0x2ce5a9=_0x2ce5a9||0x1f4;return function(_0x2feecf){logger[_0x7699('0x24')](_0x2feecf[_0x7699('0x25')]);if(_0x2feecf[_0x7699('0x26')]){delete _0x2feecf[_0x7699('0x26')];}_0x4dc363[_0x7699('0x15')](_0x2ce5a9)[_0x7699('0x27')](_0x2feecf);};}exports[_0x7699('0x28')]=function(_0x1b0afe,_0x2b70d9){var _0x46ad6c={},_0x529c48={},_0x1dcefa={'count':0x0,'rows':[]};var _0x466a2f=_[_0x7699('0x29')](db['FaxApplication']['rawAttributes'],function(_0x32c97a){return{'name':_0x32c97a[_0x7699('0x2a')],'type':_0x32c97a['type'][_0x7699('0x2b')]};});_0x529c48[_0x7699('0x2c')]=_[_0x7699('0x29')](_0x466a2f,_0x7699('0x26'));_0x529c48[_0x7699('0x2d')]=_['keys'](_0x1b0afe[_0x7699('0x2d')]);_0x529c48[_0x7699('0x2e')]=_['intersection'](_0x529c48[_0x7699('0x2c')],_0x529c48[_0x7699('0x2d')]);_0x46ad6c['attributes']=_['intersection'](_0x529c48[_0x7699('0x2c')],qs[_0x7699('0x2f')](_0x1b0afe['query'][_0x7699('0x2f')]));_0x46ad6c[_0x7699('0x30')]=_0x46ad6c[_0x7699('0x30')]['length']?_0x46ad6c['attributes']:_0x529c48[_0x7699('0x2c')];if(!_0x1b0afe['query'][_0x7699('0x31')](_0x7699('0x32'))){_0x46ad6c['limit']=qs[_0x7699('0x19')](_0x1b0afe[_0x7699('0x2d')][_0x7699('0x19')]);_0x46ad6c[_0x7699('0x17')]=qs[_0x7699('0x17')](_0x1b0afe['query'][_0x7699('0x17')]);}_0x46ad6c[_0x7699('0x33')]=qs[_0x7699('0x34')](_0x1b0afe['query'][_0x7699('0x34')]);_0x46ad6c['where']=qs[_0x7699('0x2e')](_[_0x7699('0x35')](_0x1b0afe[_0x7699('0x2d')],_0x529c48[_0x7699('0x2e')]),_0x466a2f);if(_0x1b0afe[_0x7699('0x2d')][_0x7699('0x36')]){_0x46ad6c[_0x7699('0x37')]=_[_0x7699('0x38')](_0x46ad6c['where'],{'$or':_[_0x7699('0x29')](_0x466a2f,function(_0x33012b){if(_0x33012b[_0x7699('0x39')]!=='VIRTUAL'){var _0x3338d5={};_0x3338d5[_0x33012b[_0x7699('0x26')]]={'$like':'%'+_0x1b0afe[_0x7699('0x2d')][_0x7699('0x36')]+'%'};return _0x3338d5;}})});}_0x46ad6c=_[_0x7699('0x38')]({},_0x46ad6c,_0x1b0afe['options']);var _0x43d46c={'where':_0x46ad6c[_0x7699('0x37')]};return db['FaxApplication'][_0x7699('0x1a')](_0x43d46c)[_0x7699('0x21')](function(_0x1323f1){_0x1dcefa[_0x7699('0x1a')]=_0x1323f1;if(_0x1b0afe[_0x7699('0x2d')]['includeAll']){_0x46ad6c['include']=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x46ad6c);})[_0x7699('0x21')](function(_0x4c5147){_0x1dcefa[_0x7699('0x3a')]=_0x4c5147;return _0x1dcefa;})['then'](respondWithFilteredResult(_0x2b70d9,_0x46ad6c))[_0x7699('0x3b')](handleError(_0x2b70d9,null));};exports['show']=function(_0x52e1ef,_0x159dd8){var _0x3d4b0d={'raw':!![],'where':{'id':_0x52e1ef[_0x7699('0x3c')]['id']}},_0x1558fc={};_0x1558fc[_0x7699('0x2c')]=_['keys'](db['FaxApplication'][_0x7699('0x3d')]);_0x1558fc[_0x7699('0x2d')]=_['keys'](_0x52e1ef[_0x7699('0x2d')]);_0x1558fc[_0x7699('0x2e')]=_['intersection'](_0x1558fc[_0x7699('0x2c')],_0x1558fc[_0x7699('0x2d')]);_0x3d4b0d[_0x7699('0x30')]=_[_0x7699('0x3e')](_0x1558fc[_0x7699('0x2c')],qs[_0x7699('0x2f')](_0x52e1ef[_0x7699('0x2d')]['fields']));_0x3d4b0d[_0x7699('0x30')]=_0x3d4b0d[_0x7699('0x30')][_0x7699('0x3f')]?_0x3d4b0d[_0x7699('0x30')]:_0x1558fc[_0x7699('0x2c')];if(_0x52e1ef['query'][_0x7699('0x40')]){_0x3d4b0d['include']=[{'all':!![]}];}_0x3d4b0d=_[_0x7699('0x38')]({},_0x3d4b0d,_0x52e1ef['options']);return db['FaxApplication'][_0x7699('0x41')](_0x3d4b0d)['then'](handleEntityNotFound(_0x159dd8,null))[_0x7699('0x21')](respondWithResult(_0x159dd8,null))[_0x7699('0x3b')](handleError(_0x159dd8,null));};exports[_0x7699('0x42')]=function(_0x19d893,_0x5cb3f4){return db[_0x7699('0x43')][_0x7699('0x42')](_0x19d893[_0x7699('0x44')],{})[_0x7699('0x21')](respondWithResult(_0x5cb3f4,0xc9))[_0x7699('0x3b')](handleError(_0x5cb3f4,null));};exports['update']=function(_0x48a026,_0x4fcbb0){if(_0x48a026['body']['id']){delete _0x48a026[_0x7699('0x44')]['id'];}return db[_0x7699('0x43')]['find']({'where':{'id':_0x48a026['params']['id']}})[_0x7699('0x21')](handleEntityNotFound(_0x4fcbb0,null))[_0x7699('0x21')](saveUpdates(_0x48a026[_0x7699('0x44')],null))[_0x7699('0x21')](respondWithResult(_0x4fcbb0,null))[_0x7699('0x3b')](handleError(_0x4fcbb0,null));};exports['destroy']=function(_0x3707d1,_0x232a55){return db[_0x7699('0x43')][_0x7699('0x41')]({'where':{'id':_0x3707d1[_0x7699('0x3c')]['id']}})[_0x7699('0x21')](handleEntityNotFound(_0x232a55,null))[_0x7699('0x21')](removeEntity(_0x232a55,null))[_0x7699('0x3b')](handleError(_0x232a55,null));};
\ No newline at end of file
index d3e9073..41a16c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50cd=['exports','define','fax_applications','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxApplication.attributes'];(function(_0xe538ca,_0x4b2735){var _0xe37a83=function(_0x5d59d5){while(--_0x5d59d5){_0xe538ca['push'](_0xe538ca['shift']());}};_0xe37a83(++_0x4b2735);}(_0x50cd,0x93));var _0xd50c=function(_0x106466,_0xe55a0){_0x106466=_0x106466-0x0;var _0x4ae2aa=_0x50cd[_0x106466];return _0x4ae2aa;};'use strict';var _=require('lodash');var util=require(_0xd50c('0x0'));var logger=require(_0xd50c('0x1'))(_0xd50c('0x2'));var moment=require(_0xd50c('0x3'));var BPromise=require(_0xd50c('0x4'));var rp=require(_0xd50c('0x5'));var fs=require('fs');var path=require(_0xd50c('0x6'));var rimraf=require(_0xd50c('0x7'));var config=require('../../config/environment');var attributes=require(_0xd50c('0x8'));module[_0xd50c('0x9')]=function(_0x1dac7c,_0x8ccca){return _0x1dac7c[_0xd50c('0xa')]('FaxApplication',attributes,{'tableName':_0xd50c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd50c('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9275=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9275,0xd1));var _0x5927=function(_0x3f6565,_0x12a8bb){_0x3f6565=_0x3f6565-0x0;var _0x4abd23=_0x9275[_0x3f6565];return _0x4abd23;};'use strict';var _=require(_0x5927('0x0'));var util=require('util');var logger=require(_0x5927('0x1'))('api');var moment=require(_0x5927('0x2'));var BPromise=require(_0x5927('0x3'));var rp=require(_0x5927('0x4'));var fs=require('fs');var path=require(_0x5927('0x5'));var rimraf=require(_0x5927('0x6'));var config=require(_0x5927('0x7'));var attributes=require(_0x5927('0x8'));module['exports']=function(_0x50b693,_0x4bd9ee){return _0x50b693[_0x5927('0x9')](_0x5927('0xa'),attributes,{'tableName':_0x5927('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5927('0xc'),'collate':_0x5927('0xd')});};
\ No newline at end of file
index 9e01e7b..ebc5955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1737=['FaxApplication','update','options','raw','where','attributes','limit','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','FaxApplication,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','UpdateFaxApplication'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x1737,0x147));var _0x7173=function(_0x176ca0,_0x31a832){_0x176ca0=_0x176ca0-0x0;var _0x78019a=_0x1737[_0x176ca0];return _0x78019a;};'use strict';var _=require(_0x7173('0x0'));var util=require(_0x7173('0x1'));var moment=require('moment');var BPromise=require(_0x7173('0x2'));var rs=require(_0x7173('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7173('0x4'))['db'];var utils=require(_0x7173('0x5'));var logger=require('../../config/logger')(_0x7173('0x6'));var config=require('../../config/environment');var jayson=require(_0x7173('0x7'));var client=jayson[_0x7173('0x8')][_0x7173('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3029ee,_0x2e3a78,_0x3e1f34){return new BPromise(function(_0x3c97f9,_0x2e9520){return client['request'](_0x3029ee,_0x3e1f34)[_0x7173('0xa')](function(_0x104bfa){logger[_0x7173('0xb')](_0x7173('0xc'),_0x2e3a78,'request\x20sent');logger[_0x7173('0xd')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x2e3a78,_0x7173('0xe'),JSON[_0x7173('0xf')](_0x104bfa));if(_0x104bfa[_0x7173('0x10')]){if(_0x104bfa['error'][_0x7173('0x11')]===0x1f4){logger[_0x7173('0x10')](_0x7173('0xc'),_0x2e3a78,_0x104bfa['error'][_0x7173('0x12')]);return _0x2e9520(_0x104bfa[_0x7173('0x10')][_0x7173('0x12')]);}logger[_0x7173('0x10')](_0x7173('0xc'),_0x2e3a78,_0x104bfa['error']['message']);return _0x3c97f9(_0x104bfa['error'][_0x7173('0x12')]);}else{logger[_0x7173('0xb')](_0x7173('0xc'),_0x2e3a78,_0x7173('0xe'));_0x3c97f9(_0x104bfa[_0x7173('0x13')][_0x7173('0x12')]);}})['catch'](function(_0x351eb6){logger['error'](_0x7173('0xc'),_0x2e3a78,_0x351eb6);_0x2e9520(_0x351eb6);});});}exports[_0x7173('0x14')]=function(_0x8fbc82){var _0x39a7ae=this;return new Promise(function(_0x460d81,_0x1ea347){return db[_0x7173('0x15')][_0x7173('0x16')](_0x8fbc82['body'],{'raw':_0x8fbc82[_0x7173('0x17')]?_0x8fbc82[_0x7173('0x17')][_0x7173('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8fbc82[_0x7173('0x17')]?_0x8fbc82[_0x7173('0x17')][_0x7173('0x19')]||null:null,'attributes':_0x8fbc82[_0x7173('0x17')]?_0x8fbc82[_0x7173('0x17')][_0x7173('0x1a')]||null:null,'limit':_0x8fbc82[_0x7173('0x17')]?_0x8fbc82[_0x7173('0x17')][_0x7173('0x1b')]||null:null})['then'](function(_0x5e6373){logger['info']('UpdateFaxApplication',_0x8fbc82);logger[_0x7173('0xd')](_0x7173('0x14'),_0x8fbc82,JSON[_0x7173('0xf')](_0x5e6373));_0x460d81(_0x5e6373);})[_0x7173('0x1c')](function(_0x4cd687){logger[_0x7173('0x10')]('UpdateFaxApplication',_0x4cd687[_0x7173('0x12')],_0x8fbc82);_0x1ea347(_0x39a7ae['error'](0x1f4,_0x4cd687['message']));});});};
\ No newline at end of file
+var _0xe3fa=['FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','result','UpdateFaxApplication','body','options','raw','where','attributes','limit','stringify','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe3fa,0x19a));var _0xae3f=function(_0x5e3e02,_0x197125){_0x5e3e02=_0x5e3e02-0x0;var _0x5c0f2f=_0xe3fa[_0x5e3e02];return _0x5c0f2f;};'use strict';var _=require('lodash');var util=require(_0xae3f('0x0'));var moment=require(_0xae3f('0x1'));var BPromise=require('bluebird');var rs=require(_0xae3f('0x2'));var fs=require('fs');var Redis=require(_0xae3f('0x3'));var db=require(_0xae3f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xae3f('0x5'))(_0xae3f('0x6'));var config=require('../../config/environment');var jayson=require(_0xae3f('0x7'));var client=jayson[_0xae3f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4bcc6f,_0x6d1c21,_0x5b8678){return new BPromise(function(_0x32e2ba,_0x4cef01){return client[_0xae3f('0x9')](_0x4bcc6f,_0x5b8678)['then'](function(_0x128d43){logger['info'](_0xae3f('0xa'),_0x6d1c21,_0xae3f('0xb'));logger[_0xae3f('0xc')](_0xae3f('0xd'),_0x6d1c21,_0xae3f('0xb'),JSON['stringify'](_0x128d43));if(_0x128d43[_0xae3f('0xe')]){if(_0x128d43[_0xae3f('0xe')][_0xae3f('0xf')]===0x1f4){logger[_0xae3f('0xe')](_0xae3f('0xa'),_0x6d1c21,_0x128d43[_0xae3f('0xe')][_0xae3f('0x10')]);return _0x4cef01(_0x128d43[_0xae3f('0xe')][_0xae3f('0x10')]);}logger[_0xae3f('0xe')](_0xae3f('0xa'),_0x6d1c21,_0x128d43[_0xae3f('0xe')][_0xae3f('0x10')]);return _0x32e2ba(_0x128d43[_0xae3f('0xe')][_0xae3f('0x10')]);}else{logger[_0xae3f('0x11')](_0xae3f('0xa'),_0x6d1c21,_0xae3f('0xb'));_0x32e2ba(_0x128d43[_0xae3f('0x12')][_0xae3f('0x10')]);}})['catch'](function(_0xc65bcd){logger['error'](_0xae3f('0xa'),_0x6d1c21,_0xc65bcd);_0x4cef01(_0xc65bcd);});});}exports[_0xae3f('0x13')]=function(_0x141812){var _0x1914cc=this;return new Promise(function(_0x2aac03,_0x33b922){return db['FaxApplication']['update'](_0x141812[_0xae3f('0x14')],{'raw':_0x141812[_0xae3f('0x15')]?_0x141812[_0xae3f('0x15')][_0xae3f('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x141812[_0xae3f('0x15')]?_0x141812[_0xae3f('0x15')][_0xae3f('0x17')]||null:null,'attributes':_0x141812['options']?_0x141812[_0xae3f('0x15')][_0xae3f('0x18')]||null:null,'limit':_0x141812[_0xae3f('0x15')]?_0x141812[_0xae3f('0x15')][_0xae3f('0x19')]||null:null})['then'](function(_0x27f8bb){logger[_0xae3f('0x11')](_0xae3f('0x13'),_0x141812);logger['debug'](_0xae3f('0x13'),_0x141812,JSON[_0xae3f('0x1a')](_0x27f8bb));_0x2aac03(_0x27f8bb);})[_0xae3f('0x1b')](function(_0x69dbf5){logger[_0xae3f('0xe')](_0xae3f('0x13'),_0x69dbf5[_0xae3f('0x10')],_0x141812);_0x33b922(_0x1914cc[_0xae3f('0xe')](0x1f4,_0x69dbf5[_0xae3f('0x10')]));});});};
\ No newline at end of file
index d083e28..e0495fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x5e64bb,_0x1abf81){var _0x32cd6c=function(_0x22e596){while(--_0x22e596){_0x5e64bb['push'](_0x5e64bb['shift']());}};_0x32cd6c(++_0x1abf81);}(_0x2032,0xd9));var _0x2203=function(_0x4d0b56,_0x2f10a1){_0x4d0b56=_0x4d0b56-0x0;var _0x146c48=_0x2032[_0x4d0b56];return _0x146c48;};'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('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+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(_0x5ebee2,_0x340611){var _0x49b7ea=function(_0x1a1b8c){while(--_0x1a1b8c){_0x5ebee2['push'](_0x5ebee2['shift']());}};_0x49b7ea(++_0x340611);}(_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
index ce495d4..df3bfc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb0a=['out','sequelize','BOOLEAN','DATE','STRING','ENUM'];(function(_0x22da20,_0x3a63c4){var _0x306203=function(_0x117e4b){while(--_0x117e4b){_0x22da20['push'](_0x22da20['shift']());}};_0x306203(++_0x3a63c4);}(_0xfb0a,0x7f));var _0xafb0=function(_0x5cb97e,_0x132a39){_0x5cb97e=_0x5cb97e-0x0;var _0x1714b4=_0xfb0a[_0x5cb97e];return _0x1714b4;};'use strict';var Sequelize=require(_0xafb0('0x0'));module['exports']={'closed':{'type':Sequelize[_0xafb0('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xafb0('0x2')]},'disposition':{'type':Sequelize[_0xafb0('0x3')]},'secondDisposition':{'type':Sequelize[_0xafb0('0x3')]},'thirdDisposition':{'type':Sequelize[_0xafb0('0x3')]},'note':{'type':Sequelize[_0xafb0('0x3')]},'read1stAt':{'type':Sequelize[_0xafb0('0x2')]},'fax':{'type':Sequelize[_0xafb0('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xafb0('0x4')]('in',_0xafb0('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xf70e=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x4a6293,_0x5e357e){var _0x5bb842=function(_0x52de25){while(--_0x52de25){_0x4a6293['push'](_0x4a6293['shift']());}};_0x5bb842(++_0x5e357e);}(_0xf70e,0x1ae));var _0xef70=function(_0x209803,_0x205d7e){_0x209803=_0x209803-0x0;var _0x53ef29=_0xf70e[_0x209803];return _0x53ef29;};'use strict';var Sequelize=require(_0xef70('0x0'));module[_0xef70('0x1')]={'closed':{'type':Sequelize[_0xef70('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xef70('0x3')]},'disposition':{'type':Sequelize[_0xef70('0x4')]},'secondDisposition':{'type':Sequelize[_0xef70('0x4')]},'thirdDisposition':{'type':Sequelize[_0xef70('0x4')]},'note':{'type':Sequelize[_0xef70('0x4')]},'read1stAt':{'type':Sequelize[_0xef70('0x3')]},'fax':{'type':Sequelize[_0xef70('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xef70('0x5')]('in',_0xef70('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xef70('0x5')]('in',_0xef70('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 655cb08..9ab1884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x106c=['setTags','Tag','color','emit','removeTags','download','unix','toString','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','pipe','createWriteStream','resolve','unlinkSync','rimraf','zip-dir','bluebird','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','update','then','error','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','user','catch','show','params','model','keys','filters','intersection','attributes','length','includeAll','include','merge','options','find','create','body','destroy','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','nolimit','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags'];(function(_0xd1f021,_0x5856c7){var _0x5ef4a4=function(_0x101973){while(--_0x101973){_0xd1f021['push'](_0xd1f021['shift']());}};_0x5ef4a4(++_0x5856c7);}(_0x106c,0x151));var _0xc106=function(_0x33a86f,_0x3e0e7f){_0x33a86f=_0x33a86f-0x0;var _0x70610c=_0x106c[_0x33a86f];return _0x70610c;};'use strict';var rimraf=require(_0xc106('0x0'));var zipdir=require(_0xc106('0x1'));var moment=require('moment');var BPromise=require(_0xc106('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xc106('0x3'));var Redis=require(_0xc106('0x4'));var interaction=require(_0xc106('0x5'));var qs=require(_0xc106('0x6'));var logger=require(_0xc106('0x7'))(_0xc106('0x8'));var config=require(_0xc106('0x9'));var db=require(_0xc106('0xa'))['db'];config[_0xc106('0xb')]=_[_0xc106('0xc')](config[_0xc106('0xb')],{'host':_0xc106('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc106('0xb')]));require(_0xc106('0xe'))[_0xc106('0xf')](socket);function respondWithStatusCode(_0x5fe5bd,_0x47251c){_0x47251c=_0x47251c||0xcc;return function(_0x47d10b){if(_0x47d10b){return _0x5fe5bd[_0xc106('0x10')](_0x47251c);}return _0x5fe5bd['status'](_0x47251c)[_0xc106('0x11')]();};}function respondWithResult(_0x55861a,_0x2430f8){_0x2430f8=_0x2430f8||0xc8;return function(_0x56160b){if(_0x56160b){return _0x55861a[_0xc106('0x12')](_0x2430f8)['json'](_0x56160b);}};}function respondWithFilteredResult(_0x2104f7,_0x4d7f7d){return function(_0x36873b){if(_0x36873b){var _0x3e3be8=typeof _0x4d7f7d[_0xc106('0x13')]===_0xc106('0x14')&&typeof _0x4d7f7d[_0xc106('0x15')]===_0xc106('0x14');var _0x532136=_0x36873b[_0xc106('0x16')];var _0x4b2c43=_0x3e3be8?0x0:_0x4d7f7d[_0xc106('0x13')];var _0x2e6921=_0x3e3be8?_0x36873b[_0xc106('0x16')]:_0x4d7f7d['offset']+_0x4d7f7d[_0xc106('0x15')];var _0x50b4fe;if(_0x2e6921>=_0x532136){_0x2e6921=_0x532136;_0x50b4fe=0xc8;}else{_0x50b4fe=0xce;}_0x2104f7[_0xc106('0x12')](_0x50b4fe);return _0x2104f7[_0xc106('0x17')](_0xc106('0x18'),_0x4b2c43+'-'+_0x2e6921+'/'+_0x532136)[_0xc106('0x19')](_0x36873b);}return null;};}function saveUpdates(_0x2ac0b2){return function(_0x16fab0){if(_0x16fab0){return _0x16fab0[_0xc106('0x1a')](_0x2ac0b2)[_0xc106('0x1b')](function(_0x4ee17a){return _0x4ee17a;});}return null;};}function removeEntity(_0x21dc63){return function(_0x2b585a){if(_0x2b585a){return _0x2b585a['destroy']()[_0xc106('0x1b')](function(){_0x21dc63[_0xc106('0x12')](0xcc)[_0xc106('0x11')]();});}};}function handleEntityNotFound(_0x464238){return function(_0x1c0db2){if(!_0x1c0db2){_0x464238[_0xc106('0x10')](0x194);}return _0x1c0db2;};}function handleError(_0x522eaa,_0x551109){_0x551109=_0x551109||0x1f4;return function(_0x7cdc47){logger[_0xc106('0x1c')](_0x7cdc47[_0xc106('0x1d')]);if(_0x7cdc47[_0xc106('0x1e')]){delete _0x7cdc47[_0xc106('0x1e')];}_0x522eaa['status'](_0x551109)[_0xc106('0x1f')](_0x7cdc47);};}exports[_0xc106('0x20')]=function(_0x2005fd,_0x32ea9e){var _0x3c4603={};var _0x5bb200=_[_0xc106('0x21')](db[_0xc106('0x22')][_0xc106('0x23')],function(_0x453799){return{'name':_0x453799[_0xc106('0x24')],'type':_0x453799[_0xc106('0x25')][_0xc106('0x26')]};});_0x3c4603=qs[_0xc106('0x27')](_0x5bb200,_0x2005fd);return interaction[_0xc106('0x28')](_0xc106('0x29'),_0x2005fd[_0xc106('0x2a')],_0x2005fd[_0xc106('0x2b')],_0x3c4603,_0x5bb200)[_0xc106('0x1b')](respondWithFilteredResult(_0x32ea9e,_0x3c4603))[_0xc106('0x2c')](handleError(_0x32ea9e,null));};exports[_0xc106('0x2d')]=function(_0x1eb534,_0x2e418c){var _0x2ee79f={'raw':![],'where':{'id':_0x1eb534[_0xc106('0x2e')]['id']}},_0x3861a2={};_0x3861a2[_0xc106('0x2f')]=_['keys'](db[_0xc106('0x22')]['rawAttributes']);_0x3861a2[_0xc106('0x2a')]=_[_0xc106('0x30')](_0x1eb534[_0xc106('0x2a')]);_0x3861a2[_0xc106('0x31')]=_[_0xc106('0x32')](_0x3861a2['model'],_0x3861a2[_0xc106('0x2a')]);_0x2ee79f[_0xc106('0x33')]=_[_0xc106('0x32')](_0x3861a2[_0xc106('0x2f')],qs['fields'](_0x1eb534[_0xc106('0x2a')]['fields']));_0x2ee79f[_0xc106('0x33')]=_0x2ee79f[_0xc106('0x33')][_0xc106('0x34')]?_0x2ee79f[_0xc106('0x33')]:_0x3861a2[_0xc106('0x2f')];if(_0x1eb534['query'][_0xc106('0x35')]){_0x2ee79f[_0xc106('0x36')]=[{'all':!![]}];}_0x2ee79f=_[_0xc106('0x37')]({},_0x2ee79f,_0x1eb534[_0xc106('0x38')]);return db['FaxInteraction'][_0xc106('0x39')](_0x2ee79f)['then'](handleEntityNotFound(_0x2e418c,null))[_0xc106('0x1b')](respondWithResult(_0x2e418c,null))['catch'](handleError(_0x2e418c,null));};exports[_0xc106('0x3a')]=function(_0x2bb7e5,_0x438a59){return db[_0xc106('0x22')][_0xc106('0x3a')](_0x2bb7e5[_0xc106('0x3b')],{})['then'](respondWithResult(_0x438a59,0xc9))[_0xc106('0x2c')](handleError(_0x438a59,null));};exports[_0xc106('0x1a')]=function(_0x1e99b8,_0x3ed5d0){if(_0x1e99b8[_0xc106('0x3b')]['id']){delete _0x1e99b8[_0xc106('0x3b')]['id'];}return db[_0xc106('0x22')][_0xc106('0x39')]({'where':{'id':_0x1e99b8[_0xc106('0x2e')]['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0x3ed5d0,null))[_0xc106('0x1b')](saveUpdates(_0x1e99b8[_0xc106('0x3b')],null))[_0xc106('0x1b')](respondWithResult(_0x3ed5d0,null))[_0xc106('0x2c')](handleError(_0x3ed5d0,null));};exports[_0xc106('0x3c')]=function(_0x40c8f8,_0x89839b){return db[_0xc106('0x22')][_0xc106('0x39')]({'where':{'id':_0x40c8f8[_0xc106('0x2e')]['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0x89839b,null))['then'](removeEntity(_0x89839b,null))[_0xc106('0x2c')](handleError(_0x89839b,null));};exports[_0xc106('0x3d')]=function(_0xdf333f,_0x28ad54){return db[_0xc106('0x22')][_0xc106('0x3d')]()[_0xc106('0x1b')](respondWithResult(_0x28ad54,null))[_0xc106('0x2c')](handleError(_0x28ad54,null));};exports[_0xc106('0x3e')]=function(_0x296fe7,_0x562e1f){return db[_0xc106('0x3f')]['find']({'where':{'id':_0x296fe7['params']['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0x562e1f,null))[_0xc106('0x1b')](function(_0x2e0c4c){if(_0x2e0c4c){return _0x2e0c4c['addMessage'](_0x296fe7[_0xc106('0x3b')][_0xc106('0x40')],_[_0xc106('0x41')](_0x296fe7[_0xc106('0x3b')],[_0xc106('0x40'),'id'])||{});}})['then'](respondWithResult(_0x562e1f,null))['catch'](handleError(_0x562e1f,null));};exports[_0xc106('0x42')]=function(_0xbc3f40,_0x2f5b6f){var _0x1f54d3={'raw':![],'where':{}};var _0x1f916b={};var _0x375e09={'count':0x0,'rows':[]};return db[_0xc106('0x22')][_0xc106('0x43')]({'where':{'id':_0xbc3f40[_0xc106('0x2e')]['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0x2f5b6f,null))[_0xc106('0x1b')](function(_0x5444bf){if(_0x5444bf){_0x1f916b[_0xc106('0x2f')]=_[_0xc106('0x30')](db['FaxMessage']['rawAttributes']);_0x1f916b[_0xc106('0x2a')]=_[_0xc106('0x30')](_0xbc3f40['query']);_0x1f916b[_0xc106('0x31')]=_['intersection'](_0x1f916b[_0xc106('0x2f')],_0x1f916b[_0xc106('0x2a')]);_0x1f54d3[_0xc106('0x33')]=_[_0xc106('0x32')](_0x1f916b[_0xc106('0x2f')],qs['fields'](_0xbc3f40[_0xc106('0x2a')]['fields']));_0x1f54d3[_0xc106('0x33')]=_0x1f54d3[_0xc106('0x33')]['length']?_0x1f54d3[_0xc106('0x33')]:_0x1f916b[_0xc106('0x2f')];if(!_0xbc3f40['query']['hasOwnProperty'](_0xc106('0x44'))){_0x1f54d3['limit']=qs[_0xc106('0x15')](_0xbc3f40['query'][_0xc106('0x15')]);_0x1f54d3['offset']=qs[_0xc106('0x13')](_0xbc3f40[_0xc106('0x2a')][_0xc106('0x13')]);}_0x1f54d3['order']=qs[_0xc106('0x45')](_0xbc3f40['query']['sort']);_0x1f54d3[_0xc106('0x46')]=qs['filters'](_[_0xc106('0x47')](_0xbc3f40['query'],_0x1f916b['filters']));_0x1f54d3['where'][_0xc106('0x48')]=_0x5444bf['id'];if(_0xbc3f40['query'][_0xc106('0x49')]){_0x1f54d3[_0xc106('0x46')]=_[_0xc106('0x37')](_0x1f54d3[_0xc106('0x46')],{'$or':_['map'](_0x1f54d3['attributes'],function(_0x213ccd){var _0x5f2fa2={};_0x5f2fa2[_0x213ccd]={'$like':'%'+_0xbc3f40[_0xc106('0x2a')]['filter']+'%'};return _0x5f2fa2;})});}if(_0xbc3f40['query'][_0xc106('0x4a')]){var _0xecf664=_0xbc3f40[_0xc106('0x2a')]['$gte'][_0xc106('0x4b')](',');var _0x52b54a={};_0x52b54a[_0xecf664[0x0]]={'$gte':moment(_0xecf664[0x1])[_0xc106('0x4c')](_0xc106('0x4d'))};_0x1f54d3[_0xc106('0x46')]=_[_0xc106('0x37')](_0x1f54d3[_0xc106('0x46')],_0x52b54a);}_0x1f54d3=_[_0xc106('0x37')]({},_0x1f54d3,_0xbc3f40[_0xc106('0x38')]);return db['FaxMessage'][_0xc106('0x16')]({'where':_0x1f54d3[_0xc106('0x46')]})[_0xc106('0x1b')](function(_0x33934e){_0x375e09[_0xc106('0x16')]=_0x33934e;if(_0xbc3f40[_0xc106('0x2a')][_0xc106('0x35')]){_0x1f54d3[_0xc106('0x36')]=[{'all':!![]}];}return db[_0xc106('0x3f')][_0xc106('0x28')](_0x1f54d3);})[_0xc106('0x1b')](function(_0x14e9ef){_0x375e09['rows']=_0x14e9ef;return _0x375e09;});}})[_0xc106('0x1b')](respondWithFilteredResult(_0x2f5b6f,_0x1f54d3))['catch'](handleError(_0x2f5b6f,null));};exports[_0xc106('0x4e')]=function(_0x4f194d,_0xd69456){return db[_0xc106('0x22')][_0xc106('0x39')]({'where':{'id':_0x4f194d[_0xc106('0x2e')]['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0xd69456,null))[_0xc106('0x1b')](function(_0x34ac19){if(_0x34ac19){return _0x34ac19[_0xc106('0x4f')](_0x4f194d['body'][_0xc106('0x40')],_[_0xc106('0x41')](_0x4f194d[_0xc106('0x3b')],[_0xc106('0x40'),'id'])||{})['spread'](function(){return db[_0xc106('0x50')][_0xc106('0x28')]({'attributes':['id',_0xc106('0x1e'),_0xc106('0x51')],'where':{'id':_0x4f194d[_0xc106('0x3b')][_0xc106('0x40')]}});})[_0xc106('0x1b')](function(_0x153aae){socket[_0xc106('0x52')]('faxInteractionTags:save',{'id':Number(_0x4f194d[_0xc106('0x2e')]['id']),'tags':_0x153aae||[]});return{'id':Number(_0x4f194d[_0xc106('0x2e')]['id']),'tags':_0x153aae||[]};});}})[_0xc106('0x1b')](respondWithResult(_0xd69456,null))[_0xc106('0x2c')](handleError(_0xd69456,null));};exports[_0xc106('0x53')]=function(_0x4c1739,_0x1c5f3e){return db[_0xc106('0x22')]['find']({'where':{'id':_0x4c1739[_0xc106('0x2e')]['id']}})[_0xc106('0x1b')](handleEntityNotFound(_0x1c5f3e,null))[_0xc106('0x1b')](function(_0x335113){if(_0x335113){return _0x335113[_0xc106('0x53')](_0x4c1739['query'][_0xc106('0x40')]);}})[_0xc106('0x1b')](respondWithStatusCode(_0x1c5f3e,null))[_0xc106('0x2c')](handleError(_0x1c5f3e,null));};exports[_0xc106('0x54')]=function(_0x139199,_0xc0f64e){var _0x2e7002=moment()[_0xc106('0x55')]()[_0xc106('0x56')]();var _0x5d6989=path['join'](config[_0xc106('0x57')],_0xc106('0x58'),_0xc106('0x59'),_0xc106('0x5a'));var _0x3d5e81=path[_0xc106('0x5b')](config[_0xc106('0x57')],_0xc106('0x58'),'files',_0xc106('0x5c'));var _0x2b273e=path[_0xc106('0x5b')](_0x5d6989,_0x2e7002);var _0x2ac617=util[_0xc106('0x4c')](_0xc106('0x5d'),_0x139199[_0xc106('0x2e')]['id'],_0x2e7002);var _0xd0bc6d=path[_0xc106('0x5b')](_0x5d6989,_0x2ac617);var _0xa30f5=[];_0xa30f5[_0xc106('0x5e')]({'model':db['Attachment'],'as':_0xc106('0x5f'),'raw':!![]});var _0x24620a=[{'model':db[_0xc106('0x3f')],'as':_0xc106('0x60'),'attributes':['id',_0xc106('0x3b'),_0xc106('0x61')],'include':_0xa30f5}];return db['FaxInteraction'][_0xc106('0x39')]({'where':{'id':_0x139199[_0xc106('0x2e')]['id']},'include':_0x24620a})[_0xc106('0x1b')](handleEntityNotFound(_0xc0f64e,null))[_0xc106('0x1b')](function(_0x5098be){if(_0x5098be&&_0x5098be[_0xc106('0x60')]){var _0x36ef0e=_0x5098be[_0xc106('0x62')]({'plain':!![]});fs['mkdirSync'](_0x2b273e);for(var _0x1a13a6=0x0;_0x1a13a6<_0x36ef0e[_0xc106('0x60')][_0xc106('0x34')];_0x1a13a6++){var _0x20089d=_0x36ef0e['Messages'][_0x1a13a6][_0xc106('0x5f')];if(_0x20089d){var _0x5b3ed1=path['join'](_0x3d5e81,_0x20089d[_0xc106('0x63')]);if(fs['existsSync'](_0x5b3ed1)){fs['createReadStream'](_0x5b3ed1)[_0xc106('0x64')](fs[_0xc106('0x65')](path[_0xc106('0x5b')](_0x2b273e,_0x20089d['basename'])));}}}return BPromise[_0xc106('0x66')]()[_0xc106('0x1b')](function(){return new BPromise(function(_0x1bdfdd,_0x207fcb){zipdir(_0x2b273e,{'saveTo':_0xd0bc6d},function(_0x457e4f,_0x110619){if(_0x457e4f)return _0x207fcb(_0x457e4f);return _0x1bdfdd(_0x110619);});})[_0xc106('0x1b')](function(){return new BPromise(function(_0x1ee2b3,_0x4ab595){rimraf(_0x2b273e,function(_0x308537){if(_0x308537)_0x4ab595(_0x308537);return _0x1ee2b3();});});})[_0xc106('0x1b')](function(){return _0xc0f64e[_0xc106('0x54')](_0xd0bc6d,_0x2ac617,function(_0x7e5a58){if(_0x7e5a58){console['log']('err',_0x7e5a58);}else{fs[_0xc106('0x67')](_0xd0bc6d);}});});});}else{return _0xc0f64e[_0xc106('0x10')](0xc8);}})[_0xc106('0x2c')](handleError(_0xc0f64e,null));};
\ No newline at end of file
+var _0x0364=['transcript-%d-%s.zip','push','Attachment','Messages','createdAt','mkdirSync','basename','pipe','resolve','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','json','undefined','count','offset','limit','status','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','catch','show','params','model','keys','query','fields','attributes','includeAll','include','options','find','create','body','describe','addMessage','FaxMessage','ids','filters','intersection','length','hasOwnProperty','order','sort','where','pick','filter','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','setTags','omit','spread','Tag','removeTags','download','unix','toString','join','server','files','tmp','format'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x0364,0xd4));var _0x4036=function(_0x374d8a,_0x9f0029){_0x374d8a=_0x374d8a-0x0;var _0x48fa6d=_0x0364[_0x374d8a];return _0x48fa6d;};'use strict';var rimraf=require(_0x4036('0x0'));var zipdir=require(_0x4036('0x1'));var moment=require(_0x4036('0x2'));var BPromise=require(_0x4036('0x3'));var util=require(_0x4036('0x4'));var path=require(_0x4036('0x5'));var fs=require('fs');var _=require(_0x4036('0x6'));var Redis=require(_0x4036('0x7'));var interaction=require(_0x4036('0x8'));var qs=require(_0x4036('0x9'));var logger=require('../../config/logger')(_0x4036('0xa'));var config=require(_0x4036('0xb'));var db=require(_0x4036('0xc'))['db'];config[_0x4036('0xd')]=_[_0x4036('0xe')](config[_0x4036('0xd')],{'host':_0x4036('0xf'),'port':0x18eb});var socket=require(_0x4036('0x10'))(new Redis(config[_0x4036('0xd')]));require(_0x4036('0x11'))['register'](socket);function respondWithStatusCode(_0x4641f5,_0x572ad5){_0x572ad5=_0x572ad5||0xcc;return function(_0x3f4378){if(_0x3f4378){return _0x4641f5['sendStatus'](_0x572ad5);}return _0x4641f5['status'](_0x572ad5)['end']();};}function respondWithResult(_0x45c9c3,_0x1523de){_0x1523de=_0x1523de||0xc8;return function(_0x352fb3){if(_0x352fb3){return _0x45c9c3['status'](_0x1523de)[_0x4036('0x12')](_0x352fb3);}};}function respondWithFilteredResult(_0x3d8f06,_0x42041d){return function(_0x48830b){if(_0x48830b){var _0x35bee0=typeof _0x42041d['offset']==='undefined'&&typeof _0x42041d['limit']===_0x4036('0x13');var _0x5a8ed5=_0x48830b[_0x4036('0x14')];var _0x2b7bfc=_0x35bee0?0x0:_0x42041d[_0x4036('0x15')];var _0x48e24e=_0x35bee0?_0x48830b[_0x4036('0x14')]:_0x42041d[_0x4036('0x15')]+_0x42041d[_0x4036('0x16')];var _0x4c37f4;if(_0x48e24e>=_0x5a8ed5){_0x48e24e=_0x5a8ed5;_0x4c37f4=0xc8;}else{_0x4c37f4=0xce;}_0x3d8f06[_0x4036('0x17')](_0x4c37f4);return _0x3d8f06[_0x4036('0x18')](_0x4036('0x19'),_0x2b7bfc+'-'+_0x48e24e+'/'+_0x5a8ed5)['json'](_0x48830b);}return null;};}function saveUpdates(_0x2c7707){return function(_0x15ab0f){if(_0x15ab0f){return _0x15ab0f[_0x4036('0x1a')](_0x2c7707)[_0x4036('0x1b')](function(_0x15c11a){return _0x15c11a;});}return null;};}function removeEntity(_0x245f10){return function(_0x16e571){if(_0x16e571){return _0x16e571[_0x4036('0x1c')]()[_0x4036('0x1b')](function(){_0x245f10[_0x4036('0x17')](0xcc)[_0x4036('0x1d')]();});}};}function handleEntityNotFound(_0x49d601){return function(_0x16ee3d){if(!_0x16ee3d){_0x49d601[_0x4036('0x1e')](0x194);}return _0x16ee3d;};}function handleError(_0x494331,_0x798fa6){_0x798fa6=_0x798fa6||0x1f4;return function(_0x4ed4e1){logger[_0x4036('0x1f')](_0x4ed4e1[_0x4036('0x20')]);if(_0x4ed4e1[_0x4036('0x21')]){delete _0x4ed4e1['name'];}_0x494331[_0x4036('0x17')](_0x798fa6)[_0x4036('0x22')](_0x4ed4e1);};}exports[_0x4036('0x23')]=function(_0x1afc81,_0x1e9fa0){var _0x4a7e64={};var _0x3ebac6=_[_0x4036('0x24')](db[_0x4036('0x25')][_0x4036('0x26')],function(_0x24d08b){return{'name':_0x24d08b[_0x4036('0x27')],'type':_0x24d08b[_0x4036('0x28')]['key']};});_0x4a7e64=qs[_0x4036('0x29')](_0x3ebac6,_0x1afc81);return interaction[_0x4036('0x2a')](_0x4036('0x2b'),_0x1afc81['query'],_0x1afc81['user'],_0x4a7e64,_0x3ebac6)[_0x4036('0x1b')](respondWithFilteredResult(_0x1e9fa0,_0x4a7e64))[_0x4036('0x2c')](handleError(_0x1e9fa0,null));};exports[_0x4036('0x2d')]=function(_0x3b9ae4,_0x354f51){var _0x27a4c7={'raw':![],'where':{'id':_0x3b9ae4[_0x4036('0x2e')]['id']}},_0x5dedca={};_0x5dedca[_0x4036('0x2f')]=_[_0x4036('0x30')](db[_0x4036('0x25')][_0x4036('0x26')]);_0x5dedca[_0x4036('0x31')]=_[_0x4036('0x30')](_0x3b9ae4[_0x4036('0x31')]);_0x5dedca['filters']=_['intersection'](_0x5dedca['model'],_0x5dedca[_0x4036('0x31')]);_0x27a4c7['attributes']=_['intersection'](_0x5dedca[_0x4036('0x2f')],qs[_0x4036('0x32')](_0x3b9ae4[_0x4036('0x31')][_0x4036('0x32')]));_0x27a4c7[_0x4036('0x33')]=_0x27a4c7['attributes']['length']?_0x27a4c7[_0x4036('0x33')]:_0x5dedca[_0x4036('0x2f')];if(_0x3b9ae4[_0x4036('0x31')][_0x4036('0x34')]){_0x27a4c7[_0x4036('0x35')]=[{'all':!![]}];}_0x27a4c7=_['merge']({},_0x27a4c7,_0x3b9ae4[_0x4036('0x36')]);return db[_0x4036('0x25')][_0x4036('0x37')](_0x27a4c7)[_0x4036('0x1b')](handleEntityNotFound(_0x354f51,null))[_0x4036('0x1b')](respondWithResult(_0x354f51,null))[_0x4036('0x2c')](handleError(_0x354f51,null));};exports[_0x4036('0x38')]=function(_0x2ddef0,_0xf188c6){return db['FaxInteraction'][_0x4036('0x38')](_0x2ddef0[_0x4036('0x39')],{})[_0x4036('0x1b')](respondWithResult(_0xf188c6,0xc9))[_0x4036('0x2c')](handleError(_0xf188c6,null));};exports[_0x4036('0x1a')]=function(_0x9f3287,_0x675e3e){if(_0x9f3287[_0x4036('0x39')]['id']){delete _0x9f3287[_0x4036('0x39')]['id'];}return db[_0x4036('0x25')][_0x4036('0x37')]({'where':{'id':_0x9f3287['params']['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0x675e3e,null))['then'](saveUpdates(_0x9f3287['body'],null))[_0x4036('0x1b')](respondWithResult(_0x675e3e,null))[_0x4036('0x2c')](handleError(_0x675e3e,null));};exports[_0x4036('0x1c')]=function(_0x20ee85,_0x4e5913){return db[_0x4036('0x25')][_0x4036('0x37')]({'where':{'id':_0x20ee85[_0x4036('0x2e')]['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0x4e5913,null))[_0x4036('0x1b')](removeEntity(_0x4e5913,null))[_0x4036('0x2c')](handleError(_0x4e5913,null));};exports[_0x4036('0x3a')]=function(_0x20275b,_0xa22222){return db[_0x4036('0x25')][_0x4036('0x3a')]()[_0x4036('0x1b')](respondWithResult(_0xa22222,null))[_0x4036('0x2c')](handleError(_0xa22222,null));};exports[_0x4036('0x3b')]=function(_0x4a84c6,_0x47eca1){return db[_0x4036('0x3c')][_0x4036('0x37')]({'where':{'id':_0x4a84c6[_0x4036('0x2e')]['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0x47eca1,null))[_0x4036('0x1b')](function(_0x1ab282){if(_0x1ab282){return _0x1ab282[_0x4036('0x3b')](_0x4a84c6['body'][_0x4036('0x3d')],_['omit'](_0x4a84c6[_0x4036('0x39')],[_0x4036('0x3d'),'id'])||{});}})[_0x4036('0x1b')](respondWithResult(_0x47eca1,null))['catch'](handleError(_0x47eca1,null));};exports['getMessages']=function(_0x3c701b,_0x4a1cea){var _0x2a2d21={'raw':![],'where':{}};var _0x5cf31f={};var _0x2f0aa3={'count':0x0,'rows':[]};return db[_0x4036('0x25')]['findOne']({'where':{'id':_0x3c701b[_0x4036('0x2e')]['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0x4a1cea,null))[_0x4036('0x1b')](function(_0x39151e){if(_0x39151e){_0x5cf31f[_0x4036('0x2f')]=_[_0x4036('0x30')](db[_0x4036('0x3c')]['rawAttributes']);_0x5cf31f['query']=_['keys'](_0x3c701b[_0x4036('0x31')]);_0x5cf31f[_0x4036('0x3e')]=_['intersection'](_0x5cf31f[_0x4036('0x2f')],_0x5cf31f[_0x4036('0x31')]);_0x2a2d21[_0x4036('0x33')]=_[_0x4036('0x3f')](_0x5cf31f[_0x4036('0x2f')],qs[_0x4036('0x32')](_0x3c701b[_0x4036('0x31')][_0x4036('0x32')]));_0x2a2d21['attributes']=_0x2a2d21[_0x4036('0x33')][_0x4036('0x40')]?_0x2a2d21[_0x4036('0x33')]:_0x5cf31f[_0x4036('0x2f')];if(!_0x3c701b['query'][_0x4036('0x41')]('nolimit')){_0x2a2d21[_0x4036('0x16')]=qs[_0x4036('0x16')](_0x3c701b[_0x4036('0x31')][_0x4036('0x16')]);_0x2a2d21[_0x4036('0x15')]=qs['offset'](_0x3c701b[_0x4036('0x31')][_0x4036('0x15')]);}_0x2a2d21[_0x4036('0x42')]=qs['sort'](_0x3c701b['query'][_0x4036('0x43')]);_0x2a2d21[_0x4036('0x44')]=qs['filters'](_[_0x4036('0x45')](_0x3c701b[_0x4036('0x31')],_0x5cf31f[_0x4036('0x3e')]));_0x2a2d21[_0x4036('0x44')]['FaxInteractionId']=_0x39151e['id'];if(_0x3c701b[_0x4036('0x31')][_0x4036('0x46')]){_0x2a2d21[_0x4036('0x44')]=_['merge'](_0x2a2d21[_0x4036('0x44')],{'$or':_[_0x4036('0x24')](_0x2a2d21['attributes'],function(_0x482491){var _0x44c27c={};_0x44c27c[_0x482491]={'$like':'%'+_0x3c701b['query'][_0x4036('0x46')]+'%'};return _0x44c27c;})});}if(_0x3c701b[_0x4036('0x31')]['$gte']){var _0x4ae54f=_0x3c701b[_0x4036('0x31')]['$gte']['split'](',');var _0x21a491={};_0x21a491[_0x4ae54f[0x0]]={'$gte':moment(_0x4ae54f[0x1])['format'](_0x4036('0x47'))};_0x2a2d21['where']=_[_0x4036('0x48')](_0x2a2d21[_0x4036('0x44')],_0x21a491);}_0x2a2d21=_[_0x4036('0x48')]({},_0x2a2d21,_0x3c701b[_0x4036('0x36')]);return db['FaxMessage'][_0x4036('0x14')]({'where':_0x2a2d21[_0x4036('0x44')]})[_0x4036('0x1b')](function(_0x15ead5){_0x2f0aa3[_0x4036('0x14')]=_0x15ead5;if(_0x3c701b[_0x4036('0x31')][_0x4036('0x34')]){_0x2a2d21[_0x4036('0x35')]=[{'all':!![]}];}return db[_0x4036('0x3c')][_0x4036('0x2a')](_0x2a2d21);})['then'](function(_0x4858fc){_0x2f0aa3[_0x4036('0x49')]=_0x4858fc;return _0x2f0aa3;});}})[_0x4036('0x1b')](respondWithFilteredResult(_0x4a1cea,_0x2a2d21))[_0x4036('0x2c')](handleError(_0x4a1cea,null));};exports[_0x4036('0x4a')]=function(_0x30fb78,_0xde0fb8){return db[_0x4036('0x25')][_0x4036('0x37')]({'where':{'id':_0x30fb78['params']['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0xde0fb8,null))['then'](function(_0x42eaf5){if(_0x42eaf5){return _0x42eaf5[_0x4036('0x4b')](_0x30fb78[_0x4036('0x39')][_0x4036('0x3d')],_[_0x4036('0x4c')](_0x30fb78[_0x4036('0x39')],['ids','id'])||{})[_0x4036('0x4d')](function(){return db[_0x4036('0x4e')][_0x4036('0x2a')]({'attributes':['id',_0x4036('0x21'),'color'],'where':{'id':_0x30fb78[_0x4036('0x39')][_0x4036('0x3d')]}});})[_0x4036('0x1b')](function(_0x1b23c6){socket['emit']('faxInteractionTags:save',{'id':Number(_0x30fb78[_0x4036('0x2e')]['id']),'tags':_0x1b23c6||[]});return{'id':Number(_0x30fb78['params']['id']),'tags':_0x1b23c6||[]};});}})['then'](respondWithResult(_0xde0fb8,null))[_0x4036('0x2c')](handleError(_0xde0fb8,null));};exports[_0x4036('0x4f')]=function(_0x5af1c7,_0x3b0ebd){return db[_0x4036('0x25')][_0x4036('0x37')]({'where':{'id':_0x5af1c7[_0x4036('0x2e')]['id']}})[_0x4036('0x1b')](handleEntityNotFound(_0x3b0ebd,null))[_0x4036('0x1b')](function(_0x339b1d){if(_0x339b1d){return _0x339b1d[_0x4036('0x4f')](_0x5af1c7[_0x4036('0x31')]['ids']);}})['then'](respondWithStatusCode(_0x3b0ebd,null))[_0x4036('0x2c')](handleError(_0x3b0ebd,null));};exports[_0x4036('0x50')]=function(_0x5e9da0,_0x537501){var _0x1d1eab=moment()[_0x4036('0x51')]()[_0x4036('0x52')]();var _0x30fc8c=path[_0x4036('0x53')](config['root'],_0x4036('0x54'),_0x4036('0x55'),_0x4036('0x56'));var _0x1071ec=path[_0x4036('0x53')](config['root'],'server','files','attachments');var _0xde2f3e=path['join'](_0x30fc8c,_0x1d1eab);var _0x2aa867=util[_0x4036('0x57')](_0x4036('0x58'),_0x5e9da0['params']['id'],_0x1d1eab);var _0x5c7ebe=path[_0x4036('0x53')](_0x30fc8c,_0x2aa867);var _0x2f3ee9=[];_0x2f3ee9[_0x4036('0x59')]({'model':db[_0x4036('0x5a')],'as':_0x4036('0x5a'),'raw':!![]});var _0x3e2d89=[{'model':db[_0x4036('0x3c')],'as':_0x4036('0x5b'),'attributes':['id',_0x4036('0x39'),_0x4036('0x5c')],'include':_0x2f3ee9}];return db['FaxInteraction']['find']({'where':{'id':_0x5e9da0[_0x4036('0x2e')]['id']},'include':_0x3e2d89})['then'](handleEntityNotFound(_0x537501,null))['then'](function(_0x1e1be0){if(_0x1e1be0&&_0x1e1be0[_0x4036('0x5b')]){var _0x25aaae=_0x1e1be0['get']({'plain':!![]});fs[_0x4036('0x5d')](_0xde2f3e);for(var _0x2b8959=0x0;_0x2b8959<_0x25aaae[_0x4036('0x5b')][_0x4036('0x40')];_0x2b8959++){var _0x5251c1=_0x25aaae[_0x4036('0x5b')][_0x2b8959][_0x4036('0x5a')];if(_0x5251c1){var _0x48c09a=path[_0x4036('0x53')](_0x1071ec,_0x5251c1[_0x4036('0x5e')]);if(fs['existsSync'](_0x48c09a)){fs['createReadStream'](_0x48c09a)[_0x4036('0x5f')](fs['createWriteStream'](path[_0x4036('0x53')](_0xde2f3e,_0x5251c1[_0x4036('0x5e')])));}}}return BPromise[_0x4036('0x60')]()[_0x4036('0x1b')](function(){return new BPromise(function(_0x4f36f8,_0x32d083){zipdir(_0xde2f3e,{'saveTo':_0x5c7ebe},function(_0x5d557c,_0xe00200){if(_0x5d557c)return _0x32d083(_0x5d557c);return _0x4f36f8(_0xe00200);});})[_0x4036('0x1b')](function(){return new BPromise(function(_0x152ab7,_0x33fef4){rimraf(_0xde2f3e,function(_0xb95907){if(_0xb95907)_0x33fef4(_0xb95907);return _0x152ab7();});});})['then'](function(){return _0x537501[_0x4036('0x50')](_0x5c7ebe,_0x2aa867,function(_0x10b9a0){if(_0x10b9a0){console[_0x4036('0x61')](_0x4036('0x62'),_0x10b9a0);}else{fs[_0x4036('0x63')](_0x5c7ebe);}});});});}else{return _0x537501[_0x4036('0x1e')](0xc8);}})['catch'](handleError(_0x537501,null));};
\ No newline at end of file
index 1bf70bc..e619d79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42d4=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x10509b,_0x2a89fc){var _0x4db814=function(_0x2049e1){while(--_0x2049e1){_0x10509b['push'](_0x10509b['shift']());}};_0x4db814(++_0x2a89fc);}(_0x42d4,0x19f));var _0x442d=function(_0x1021f8,_0x58f94d){_0x1021f8=_0x1021f8-0x0;var _0x29edce=_0x42d4[_0x1021f8];return _0x29edce;};'use strict';var EventEmitter=require(_0x442d('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0x442d('0x1'))['db'][_0x442d('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x442d('0x3')](0x0);var events={'afterCreate':_0x442d('0x4'),'afterUpdate':_0x442d('0x5'),'afterDestroy':'remove'};function emitEvent(_0xcf3a78){return function(_0x1a52a2,_0x50dfea,_0x47131a){_0x1a52a2[_0x442d('0x6')]({'attributes':['id'],'raw':!![]})[_0x442d('0x7')](function(_0x367541){_0x1a52a2[_0x442d('0x8')](_0x442d('0x9'),_0x367541['map'](function(_0x32313a){return{'id':_0x32313a['id']};}));return FaxMessage[_0x442d('0xa')]({'where':{'FaxInteractionId':_0x1a52a2['id'],'direction':'in','read':![]},'raw':!![]});})[_0x442d('0x7')](function(_0x107c70){_0x1a52a2[_0x442d('0x8')](_0x442d('0xb'),_0x107c70[_0x442d('0xc')]);FaxInteractionEvents['emit'](_0xcf3a78+':'+_0x1a52a2['id'],_0x1a52a2);FaxInteractionEvents[_0x442d('0xd')](_0xcf3a78,_0x1a52a2);_0x47131a(null);})[_0x442d('0xe')](_0x47131a(null));};}for(var e in events){if(events[_0x442d('0xf')](e)){var event=events[e];FaxInteraction[_0x442d('0x10')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0x9a39=['FaxMessage','setMaxListeners','update','getUsers','setDataValue','map','findAll','then','unreadMessages','length','emit','catch','exports','events','../../mysqldb'];(function(_0x5dc937,_0x2c5565){var _0x44dce3=function(_0x2155e4){while(--_0x2155e4){_0x5dc937['push'](_0x5dc937['shift']());}};_0x44dce3(++_0x2c5565);}(_0x9a39,0xdf));var _0x99a3=function(_0xc78274,_0x5c91f6){_0xc78274=_0xc78274-0x0;var _0x52a86e=_0x9a39[_0xc78274];return _0x52a86e;};'use strict';var EventEmitter=require(_0x99a3('0x0'));var FaxInteraction=require('../../mysqldb')['db']['FaxInteraction'];var FaxMessage=require(_0x99a3('0x1'))['db'][_0x99a3('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x99a3('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x99a3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1094de){return function(_0x511f40,_0x283254,_0x1f3304){_0x511f40[_0x99a3('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x53b2d9){_0x511f40[_0x99a3('0x6')]('Users',_0x53b2d9[_0x99a3('0x7')](function(_0x3bfd6b){return{'id':_0x3bfd6b['id']};}));return FaxMessage[_0x99a3('0x8')]({'where':{'FaxInteractionId':_0x511f40['id'],'direction':'in','read':![]},'raw':!![]});})[_0x99a3('0x9')](function(_0x93a893){_0x511f40[_0x99a3('0x6')](_0x99a3('0xa'),_0x93a893[_0x99a3('0xb')]);FaxInteractionEvents[_0x99a3('0xc')](_0x1094de+':'+_0x511f40['id'],_0x511f40);FaxInteractionEvents[_0x99a3('0xc')](_0x1094de,_0x511f40);_0x1f3304(null);})[_0x99a3('0xd')](_0x1f3304(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x99a3('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index 8364d83..a690865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d78=['api','bluebird','request-promise','path','rimraf','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x175989,_0x309275){var _0x1408f9=function(_0xbbfedb){while(--_0xbbfedb){_0x175989['push'](_0x175989['shift']());}};_0x1408f9(++_0x309275);}(_0x0d78,0x134));var _0x80d7=function(_0x27463e,_0x157d81){_0x27463e=_0x27463e-0x0;var _0x16952a=_0x0d78[_0x27463e];return _0x16952a;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x80d7('0x0'));var moment=require('moment');var BPromise=require(_0x80d7('0x1'));var rp=require(_0x80d7('0x2'));var fs=require('fs');var path=require(_0x80d7('0x3'));var rimraf=require(_0x80d7('0x4'));var config=require('../../config/environment');var attributes=require(_0x80d7('0x5'));module['exports']=function(_0x3b22d0,_0xfcc3ba){return _0x3b22d0[_0x80d7('0x6')](_0x80d7('0x7'),attributes,{'tableName':_0x80d7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x527b16,_0x579994,_0x2d92d4){if(_0x527b16[_0x80d7('0x9')](_0x80d7('0xa'))){_0x527b16[_0x80d7('0xb')]=moment()[_0x80d7('0xc')](_0x80d7('0xd'));}_0x2d92d4(null,_0x527b16);}}});};
\ No newline at end of file
+var _0x2420=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','path','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closedAt'];(function(_0x247e05,_0x377a98){var _0x1b0f5a=function(_0x150449){while(--_0x150449){_0x247e05['push'](_0x247e05['shift']());}};_0x1b0f5a(++_0x377a98);}(_0x2420,0xfd));var _0x0242=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x2420[_0x3054be];return _0x3df150;};'use strict';var _=require(_0x0242('0x0'));var util=require(_0x0242('0x1'));var logger=require(_0x0242('0x2'))(_0x0242('0x3'));var moment=require('moment');var BPromise=require(_0x0242('0x4'));var rp=require(_0x0242('0x5'));var fs=require('fs');var path=require(_0x0242('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0242('0x7'));module['exports']=function(_0x58d160,_0x1f0946){return _0x58d160[_0x0242('0x8')](_0x0242('0x9'),attributes,{'tableName':_0x0242('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x127d49,_0x305d81,_0xf965da){if(_0x127d49[_0x0242('0xb')]('closed')){_0x127d49[_0x0242('0xc')]=moment()['format'](_0x0242('0xd'));}_0xf965da(null,_0x127d49);}}});};
\ No newline at end of file
index e18cc6b..06520d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x093a=['limit','UpdateFaxInteraction','AddTagsToFaxInteraction','addTags','body','omit','ids','spread','AddTags','debug','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','FaxInteraction','update','options','raw','where','attributes'];(function(_0x528c9a,_0x4205df){var _0x35db6f=function(_0xb4a0b9){while(--_0xb4a0b9){_0x528c9a['push'](_0x528c9a['shift']());}};_0x35db6f(++_0x4205df);}(_0x093a,0x106));var _0xa093=function(_0x5e2751,_0x518a55){_0x5e2751=_0x5e2751-0x0;var _0x139a39=_0x093a[_0x5e2751];return _0x139a39;};'use strict';var _=require('lodash');var util=require(_0xa093('0x0'));var moment=require('moment');var BPromise=require(_0xa093('0x1'));var rs=require(_0xa093('0x2'));var fs=require('fs');var Redis=require(_0xa093('0x3'));var db=require(_0xa093('0x4'))['db'];var utils=require(_0xa093('0x5'));var logger=require(_0xa093('0x6'))(_0xa093('0x7'));var config=require('../../config/environment');var jayson=require(_0xa093('0x8'));var client=jayson[_0xa093('0x9')][_0xa093('0xa')]({'port':0x232a});config[_0xa093('0xb')]=_['defaults'](config[_0xa093('0xb')],{'host':_0xa093('0xc'),'port':0x18eb});var socket=require(_0xa093('0xd'))(new Redis(config[_0xa093('0xb')]));require(_0xa093('0xe'))[_0xa093('0xf')](socket);function respondWithRpcPromise(_0xddb65a,_0x53a02a,_0x356f9e){return new BPromise(function(_0x21745a,_0x2a1e94){return client[_0xa093('0x10')](_0xddb65a,_0x356f9e)[_0xa093('0x11')](function(_0x5d93dc){logger[_0xa093('0x12')](_0xa093('0x13'),_0x53a02a,_0xa093('0x14'));logger['debug'](_0xa093('0x15'),_0x53a02a,_0xa093('0x14'),JSON[_0xa093('0x16')](_0x5d93dc));if(_0x5d93dc['error']){if(_0x5d93dc[_0xa093('0x17')]['code']===0x1f4){logger[_0xa093('0x17')](_0xa093('0x13'),_0x53a02a,_0x5d93dc['error']['message']);return _0x2a1e94(_0x5d93dc[_0xa093('0x17')][_0xa093('0x18')]);}logger[_0xa093('0x17')](_0xa093('0x13'),_0x53a02a,_0x5d93dc[_0xa093('0x17')][_0xa093('0x18')]);return _0x21745a(_0x5d93dc[_0xa093('0x17')]['message']);}else{logger['info'](_0xa093('0x13'),_0x53a02a,_0xa093('0x14'));_0x21745a(_0x5d93dc['result'][_0xa093('0x18')]);}})[_0xa093('0x19')](function(_0x20b09f){logger['error'](_0xa093('0x13'),_0x53a02a,_0x20b09f);_0x2a1e94(_0x20b09f);});});}exports['UpdateFaxInteraction']=function(_0x429a1d){var _0x57961e=this;return new Promise(function(_0x16bda9,_0xe75c05){return db[_0xa093('0x1a')][_0xa093('0x1b')](_0x429a1d['body'],{'raw':_0x429a1d[_0xa093('0x1c')]?_0x429a1d['options'][_0xa093('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x429a1d[_0xa093('0x1c')]?_0x429a1d[_0xa093('0x1c')][_0xa093('0x1e')]||null:null,'attributes':_0x429a1d[_0xa093('0x1c')]?_0x429a1d[_0xa093('0x1c')][_0xa093('0x1f')]||null:null,'limit':_0x429a1d[_0xa093('0x1c')]?_0x429a1d[_0xa093('0x1c')][_0xa093('0x20')]||null:null})[_0xa093('0x11')](function(_0x5ac905){logger['info']('UpdateFaxInteraction',_0x429a1d);logger['debug'](_0xa093('0x21'),_0x429a1d,JSON[_0xa093('0x16')](_0x5ac905));_0x16bda9(_0x5ac905);})[_0xa093('0x19')](function(_0x864862){logger[_0xa093('0x17')](_0xa093('0x21'),_0x864862[_0xa093('0x18')],_0x429a1d);_0xe75c05(_0x57961e[_0xa093('0x17')](0x1f4,_0x864862['message']));});});};exports[_0xa093('0x22')]=function(_0x2c2f39){return new Promise(function(_0x434a35,_0x222c69){return db[_0xa093('0x1a')]['find']({'where':_0x2c2f39[_0xa093('0x1c')]?_0x2c2f39['options'][_0xa093('0x1e')]||null:null})[_0xa093('0x11')](function(_0x13f56d){if(_0x13f56d){return _0x13f56d[_0xa093('0x23')](_0x2c2f39[_0xa093('0x24')]['ids'],_[_0xa093('0x25')](_0x2c2f39['body'],[_0xa093('0x26'),'id'])||{});}})[_0xa093('0x27')](function(_0x43cac2){logger[_0xa093('0x12')](_0xa093('0x28'),_0x2c2f39);logger[_0xa093('0x29')](_0xa093('0x28'),_0x2c2f39,JSON[_0xa093('0x16')](_0x43cac2));_0x434a35(_0x43cac2);})['catch'](function(_0x25368c){logger[_0xa093('0x17')](_0xa093('0x28'),_0x25368c[_0xa093('0x18')],_0x2c2f39);_0x222c69(_this[_0xa093('0x17')](0x1f4,_0x25368c[_0xa093('0x18')]));});});};
\ No newline at end of file
+var _0xe27c=['request\x20sent','stringify','error','code','message','result','catch','FaxInteraction','body','options','raw','where','attributes','UpdateFaxInteraction','AddTagsToFaxInteraction','find','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x5f4001,_0x3c98b7){var _0x198851=function(_0x529e13){while(--_0x529e13){_0x5f4001['push'](_0x5f4001['shift']());}};_0x198851(++_0x3c98b7);}(_0xe27c,0xc8));var _0xce27=function(_0x2469b3,_0x3583d3){_0x2469b3=_0x2469b3-0x0;var _0x196027=_0xe27c[_0x2469b3];return _0x196027;};'use strict';var _=require(_0xce27('0x0'));var util=require(_0xce27('0x1'));var moment=require(_0xce27('0x2'));var BPromise=require('bluebird');var rs=require(_0xce27('0x3'));var fs=require('fs');var Redis=require(_0xce27('0x4'));var db=require(_0xce27('0x5'))['db'];var utils=require(_0xce27('0x6'));var logger=require(_0xce27('0x7'))(_0xce27('0x8'));var config=require(_0xce27('0x9'));var jayson=require(_0xce27('0xa'));var client=jayson[_0xce27('0xb')][_0xce27('0xc')]({'port':0x232a});config[_0xce27('0xd')]=_[_0xce27('0xe')](config[_0xce27('0xd')],{'host':_0xce27('0xf'),'port':0x18eb});var socket=require(_0xce27('0x10'))(new Redis(config[_0xce27('0xd')]));require(_0xce27('0x11'))[_0xce27('0x12')](socket);function respondWithRpcPromise(_0x1f5605,_0x447113,_0x589744){return new BPromise(function(_0x46794b,_0x72b847){return client[_0xce27('0x13')](_0x1f5605,_0x589744)[_0xce27('0x14')](function(_0x2a362f){logger[_0xce27('0x15')](_0xce27('0x16'),_0x447113,'request\x20sent');logger[_0xce27('0x17')](_0xce27('0x18'),_0x447113,_0xce27('0x19'),JSON[_0xce27('0x1a')](_0x2a362f));if(_0x2a362f[_0xce27('0x1b')]){if(_0x2a362f['error'][_0xce27('0x1c')]===0x1f4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x447113,_0x2a362f[_0xce27('0x1b')][_0xce27('0x1d')]);return _0x72b847(_0x2a362f[_0xce27('0x1b')]['message']);}logger[_0xce27('0x1b')](_0xce27('0x16'),_0x447113,_0x2a362f[_0xce27('0x1b')]['message']);return _0x46794b(_0x2a362f[_0xce27('0x1b')][_0xce27('0x1d')]);}else{logger['info']('FaxInteraction,\x20%s,\x20%s',_0x447113,_0xce27('0x19'));_0x46794b(_0x2a362f[_0xce27('0x1e')][_0xce27('0x1d')]);}})[_0xce27('0x1f')](function(_0x1407dc){logger[_0xce27('0x1b')](_0xce27('0x16'),_0x447113,_0x1407dc);_0x72b847(_0x1407dc);});});}exports['UpdateFaxInteraction']=function(_0x464c23){var _0x1d3660=this;return new Promise(function(_0x4674f2,_0x23ca88){return db[_0xce27('0x20')]['update'](_0x464c23[_0xce27('0x21')],{'raw':_0x464c23[_0xce27('0x22')]?_0x464c23[_0xce27('0x22')][_0xce27('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x464c23['options']?_0x464c23['options'][_0xce27('0x24')]||null:null,'attributes':_0x464c23['options']?_0x464c23[_0xce27('0x22')][_0xce27('0x25')]||null:null,'limit':_0x464c23['options']?_0x464c23['options']['limit']||null:null})[_0xce27('0x14')](function(_0x47d448){logger[_0xce27('0x15')](_0xce27('0x26'),_0x464c23);logger[_0xce27('0x17')](_0xce27('0x26'),_0x464c23,JSON[_0xce27('0x1a')](_0x47d448));_0x4674f2(_0x47d448);})[_0xce27('0x1f')](function(_0x6e712e){logger[_0xce27('0x1b')]('UpdateFaxInteraction',_0x6e712e[_0xce27('0x1d')],_0x464c23);_0x23ca88(_0x1d3660['error'](0x1f4,_0x6e712e[_0xce27('0x1d')]));});});};exports[_0xce27('0x27')]=function(_0x37132a){return new Promise(function(_0x54c452,_0x56c5c0){return db[_0xce27('0x20')][_0xce27('0x28')]({'where':_0x37132a[_0xce27('0x22')]?_0x37132a['options'][_0xce27('0x24')]||null:null})['then'](function(_0x2b334a){if(_0x2b334a){return _0x2b334a['addTags'](_0x37132a[_0xce27('0x21')][_0xce27('0x29')],_[_0xce27('0x2a')](_0x37132a['body'],[_0xce27('0x29'),'id'])||{});}})[_0xce27('0x2b')](function(_0x74d74c){logger[_0xce27('0x15')]('AddTags',_0x37132a);logger[_0xce27('0x17')](_0xce27('0x2c'),_0x37132a,JSON['stringify'](_0x74d74c));_0x54c452(_0x74d74c);})[_0xce27('0x1f')](function(_0x1c21f3){logger[_0xce27('0x1b')](_0xce27('0x2c'),_0x1c21f3[_0xce27('0x1d')],_0x37132a);_0x56c5c0(_this[_0xce27('0x1b')](0x1f4,_0x1c21f3[_0xce27('0x1d')]));});});};
\ No newline at end of file
index 0be3fb9..e87685c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x920f=['removeListener','register','length','./faxInteraction.events','update','emit'];(function(_0x192826,_0x4112ba){var _0x31b0f4=function(_0x469745){while(--_0x469745){_0x192826['push'](_0x192826['shift']());}};_0x31b0f4(++_0x4112ba);}(_0x920f,0x1ad));var _0xf920=function(_0x2beb23,_0x1456a4){_0x2beb23=_0x2beb23-0x0;var _0x3757a3=_0x920f[_0x2beb23];return _0x3757a3;};'use strict';var FaxInteractionEvents=require(_0xf920('0x0'));var events=['save','remove',_0xf920('0x1')];function createListener(_0x4fd50f,_0x3d9321){return function(_0x3c9149){_0x3d9321[_0xf920('0x2')](_0x4fd50f,_0x3c9149);};}function removeListener(_0x2bb14c,_0xe2b121){return function(){FaxInteractionEvents[_0xf920('0x3')](_0x2bb14c,_0xe2b121);};}exports[_0xf920('0x4')]=function(_0x53473d){for(var _0x454c10=0x0,_0x452eb8=events[_0xf920('0x5')];_0x454c10<_0x452eb8;_0x454c10++){var _0x1fbc01=events[_0x454c10];var _0x59bc93=createListener('faxInteraction:'+_0x1fbc01,_0x53473d);FaxInteractionEvents['on'](_0x1fbc01,_0x59bc93);}};
\ No newline at end of file
+var _0xf1f7=['length','faxInteraction:','./faxInteraction.events','save','remove','update','removeListener','register'];(function(_0x49eed8,_0x9aa73c){var _0x1b2667=function(_0x385530){while(--_0x385530){_0x49eed8['push'](_0x49eed8['shift']());}};_0x1b2667(++_0x9aa73c);}(_0xf1f7,0xb2));var _0x7f1f=function(_0x2c1ac1,_0x3dfb07){_0x2c1ac1=_0x2c1ac1-0x0;var _0x240e2d=_0xf1f7[_0x2c1ac1];return _0x240e2d;};'use strict';var FaxInteractionEvents=require(_0x7f1f('0x0'));var events=[_0x7f1f('0x1'),_0x7f1f('0x2'),_0x7f1f('0x3')];function createListener(_0x1b29f3,_0x20a0f1){return function(_0x18f605){_0x20a0f1['emit'](_0x1b29f3,_0x18f605);};}function removeListener(_0x29160d,_0x429d41){return function(){FaxInteractionEvents[_0x7f1f('0x4')](_0x29160d,_0x429d41);};}exports[_0x7f1f('0x5')]=function(_0x133f0c){for(var _0x2aa90d=0x0,_0x5f4e8f=events[_0x7f1f('0x6')];_0x2aa90d<_0x5f4e8f;_0x2aa90d++){var _0x5d2177=events[_0x2aa90d];var _0x595bb8=createListener(_0x7f1f('0x7')+_0x5d2177,_0x133f0c);FaxInteractionEvents['on'](_0x5d2177,_0x595bb8);}};
\ No newline at end of file
index 123236c..bf4c72a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x890e=['/describe','describe','get','/:id','show','/:id/messages','download','create','post','addMessage','fax','addTags','put','tracked','faxinteraction:update','update','destroy','delete','removeTags','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxInteraction.controller','isAuthenticated','index'];(function(_0x482e30,_0x11c205){var _0x59bf70=function(_0x564a33){while(--_0x564a33){_0x482e30['push'](_0x482e30['shift']());}};_0x59bf70(++_0x11c205);}(_0x890e,0xce));var _0xe890=function(_0x4814a5,_0x1f4ba4){_0x4814a5=_0x4814a5-0x0;var _0x1103aa=_0x890e[_0x4814a5];return _0x1103aa;};'use strict';var multer=require(_0xe890('0x0'));var util=require(_0xe890('0x1'));var path=require(_0xe890('0x2'));var timeout=require('connect-timeout');var express=require(_0xe890('0x3'));var router=express[_0xe890('0x4')]();var fs_extra=require(_0xe890('0x5'));var auth=require(_0xe890('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe890('0x7'));var controller=require(_0xe890('0x8'));router['get']('/',auth[_0xe890('0x9')](),controller[_0xe890('0xa')]);router['get'](_0xe890('0xb'),auth['isAuthenticated'](),controller[_0xe890('0xc')]);router[_0xe890('0xd')](_0xe890('0xe'),auth[_0xe890('0x9')](),controller[_0xe890('0xf')]);router[_0xe890('0xd')](_0xe890('0x10'),auth[_0xe890('0x9')](),controller['getMessages']);router[_0xe890('0xd')]('/:id/download',auth[_0xe890('0x9')](),controller[_0xe890('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe890('0x12')]);router[_0xe890('0x13')](_0xe890('0x10'),auth['isAuthenticated'](),controller[_0xe890('0x14')]);router[_0xe890('0x13')]('/:id/tags',auth[_0xe890('0x9')](),interaction['tracked'](_0xe890('0x15'),'faxinteraction:addtags'),controller[_0xe890('0x16')]);router[_0xe890('0x17')]('/:id',auth['isAuthenticated'](),interaction[_0xe890('0x18')](_0xe890('0x15'),_0xe890('0x19')),controller[_0xe890('0x1a')]);router['delete'](_0xe890('0xe'),auth[_0xe890('0x9')](),interaction[_0xe890('0x18')]('fax','faxinteraction:destroy'),controller[_0xe890('0x1b')]);router[_0xe890('0x1c')]('/:id/tags',auth[_0xe890('0x9')](),controller[_0xe890('0x1d')]);module[_0xe890('0x1e')]=router;
\ No newline at end of file
+var _0x5c11=['/:id/messages','getMessages','post','create','/:id/tags','tracked','fax','faxinteraction:addtags','put','faxinteraction:update','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x288d17,_0xb1bf09){var _0x5936a9=function(_0x2e6fb9){while(--_0x2e6fb9){_0x288d17['push'](_0x288d17['shift']());}};_0x5936a9(++_0xb1bf09);}(_0x5c11,0xa4));var _0x15c1=function(_0x5a18c3,_0x5c6928){_0x5a18c3=_0x5a18c3-0x0;var _0x3e22e7=_0x5c11[_0x5a18c3];return _0x3e22e7;};'use strict';var multer=require(_0x15c1('0x0'));var util=require(_0x15c1('0x1'));var path=require(_0x15c1('0x2'));var timeout=require(_0x15c1('0x3'));var express=require('express');var router=express[_0x15c1('0x4')]();var fs_extra=require(_0x15c1('0x5'));var auth=require(_0x15c1('0x6'));var interaction=require(_0x15c1('0x7'));var config=require(_0x15c1('0x8'));var controller=require(_0x15c1('0x9'));router[_0x15c1('0xa')]('/',auth['isAuthenticated'](),controller[_0x15c1('0xb')]);router[_0x15c1('0xa')](_0x15c1('0xc'),auth[_0x15c1('0xd')](),controller[_0x15c1('0xe')]);router[_0x15c1('0xa')](_0x15c1('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x15c1('0xa')](_0x15c1('0x10'),auth[_0x15c1('0xd')](),controller[_0x15c1('0x11')]);router['get']('/:id/download',auth[_0x15c1('0xd')](),controller['download']);router[_0x15c1('0x12')]('/',auth[_0x15c1('0xd')](),controller[_0x15c1('0x13')]);router[_0x15c1('0x12')](_0x15c1('0x10'),auth[_0x15c1('0xd')](),controller['addMessage']);router[_0x15c1('0x12')](_0x15c1('0x14'),auth[_0x15c1('0xd')](),interaction[_0x15c1('0x15')](_0x15c1('0x16'),_0x15c1('0x17')),controller['addTags']);router[_0x15c1('0x18')](_0x15c1('0xf'),auth[_0x15c1('0xd')](),interaction[_0x15c1('0x15')](_0x15c1('0x16'),_0x15c1('0x19')),controller['update']);router[_0x15c1('0x1a')](_0x15c1('0xf'),auth['isAuthenticated'](),interaction[_0x15c1('0x15')](_0x15c1('0x16'),'faxinteraction:destroy'),controller[_0x15c1('0x1b')]);router[_0x15c1('0x1a')]('/:id/tags',auth[_0x15c1('0xd')](),controller[_0x15c1('0x1c')]);module[_0x15c1('0x1d')]=router;
\ No newline at end of file
index f0fe18e..ebb9329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaba6=['out','DATE','sequelize','exports'];(function(_0x137e87,_0xe9dda6){var _0x5a4110=function(_0x351d12){while(--_0x351d12){_0x137e87['push'](_0x137e87['shift']());}};_0x5a4110(++_0xe9dda6);}(_0xaba6,0xe2));var _0x6aba=function(_0x51ab33,_0x71a8a8){_0x51ab33=_0x51ab33-0x0;var _0x5e1298=_0xaba6[_0x51ab33];return _0x5e1298;};'use strict';var Sequelize=require(_0x6aba('0x0'));module[_0x6aba('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x6aba('0x2')),'defaultValue':_0x6aba('0x2'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x6aba('0x3')]}};
\ No newline at end of file
+var _0xd66c=['ENUM','out','DATE','sequelize','TEXT','medium','BOOLEAN'];(function(_0xb30257,_0x3a860a){var _0x2bd3f2=function(_0x13590a){while(--_0x13590a){_0xb30257['push'](_0xb30257['shift']());}};_0x2bd3f2(++_0x3a860a);}(_0xd66c,0x106));var _0xcd66=function(_0x8a01da,_0x1625cb){_0x8a01da=_0x8a01da-0x0;var _0x41a90f=_0xd66c[_0x8a01da];return _0x41a90f;};'use strict';var Sequelize=require(_0xcd66('0x0'));module['exports']={'body':{'type':Sequelize[_0xcd66('0x1')](_0xcd66('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xcd66('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcd66('0x4')]('in','out'),'defaultValue':_0xcd66('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xcd66('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xcd66('0x6')]}};
\ No newline at end of file
index 9eb2a1b..46ffa41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4898=['include','merge','find','body','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','fullname','email','internal','manual','SIP/%s','channel','event','fax-interactions','FaxInteraction','FaxInteractionId','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','User','interface','motionChannel','EventManager','rejectmessage','create','CmContact','findOne','fax','Attachment','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','files','attachments','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxMessage.socket','register','client','http','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','code','FaxMessage,\x20%s,\x20%s','error','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','update','destroy','stack','name','send','index','map','FaxMessage','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','show','params','rawAttributes'];(function(_0x3207aa,_0xe86a72){var _0x51758f=function(_0x9ff790){while(--_0x9ff790){_0x3207aa['push'](_0x3207aa['shift']());}};_0x51758f(++_0xe86a72);}(_0x4898,0x1e7));var _0x8489=function(_0x1254c5,_0x5ebe61){_0x1254c5=_0x1254c5-0x0;var _0x29cd22=_0x4898[_0x1254c5];return _0x29cd22;};'use strict';var emlformat=require(_0x8489('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8489('0x1'));var jsonpatch=require(_0x8489('0x2'));var rp=require(_0x8489('0x3'));var moment=require(_0x8489('0x4'));var BPromise=require(_0x8489('0x5'));var Mustache=require('mustache');var util=require(_0x8489('0x6'));var path=require(_0x8489('0x7'));var sox=require(_0x8489('0x8'));var csv=require('to-csv');var ejs=require(_0x8489('0x9'));var fs=require('fs');var fs_extra=require(_0x8489('0xa'));var _=require('lodash');var squel=require(_0x8489('0xb'));var crypto=require(_0x8489('0xc'));var jsforce=require(_0x8489('0xd'));var deskjs=require(_0x8489('0xe'));var toCsv=require(_0x8489('0xf'));var querystring=require(_0x8489('0x10'));var Papa=require(_0x8489('0x11'));var Redis=require(_0x8489('0x12'));var authService=require(_0x8489('0x13'));var qs=require(_0x8489('0x14'));var as=require(_0x8489('0x15'));var hardwareService=require(_0x8489('0x16'));var logger=require(_0x8489('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x8489('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8489('0x19'))['db'];config[_0x8489('0x1a')]=_[_0x8489('0x1b')](config[_0x8489('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x8489('0x1c'))(new Redis(config[_0x8489('0x1a')]));require(_0x8489('0x1d'))[_0x8489('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x8489('0x1f')][_0x8489('0x20')]({'port':0x232c});var client9002=jayson[_0x8489('0x1f')][_0x8489('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x36438d,_0x43ba6b,_0x2902c9,_0xdad845){return new BPromise(function(_0x12cfa1,_0x3ec89b){var _0x34ebc7=_0xdad845||client;return _0x34ebc7['request'](_0x36438d,_0x2902c9)[_0x8489('0x21')](function(_0x16ce5b){logger[_0x8489('0x22')]('FaxMessage,\x20%s,\x20%s',_0x43ba6b,_0x8489('0x23'));logger[_0x8489('0x24')](_0x8489('0x25'),_0x43ba6b,_0x8489('0x23'),JSON[_0x8489('0x26')](_0x16ce5b));if(_0x16ce5b['error']){if(_0x16ce5b['error'][_0x8489('0x27')]===0x1f4){logger['error'](_0x8489('0x28'),_0x43ba6b,_0x16ce5b[_0x8489('0x29')][_0x8489('0x2a')]);return _0x3ec89b(_0x16ce5b[_0x8489('0x29')]['message']);}logger['error'](_0x8489('0x28'),_0x43ba6b,_0x16ce5b[_0x8489('0x29')][_0x8489('0x2a')]);return _0x12cfa1(_0x16ce5b['error']['message']);}else{logger[_0x8489('0x22')](_0x8489('0x28'),_0x43ba6b,_0x8489('0x23'));_0x12cfa1(_0x16ce5b[_0x8489('0x2b')][_0x8489('0x2a')]);}})[_0x8489('0x2c')](function(_0x752f44){logger['error'](_0x8489('0x28'),_0x43ba6b,_0x752f44);_0x3ec89b(_0x752f44);});});}function respondWithStatusCode(_0xc15883,_0x3bce06){_0x3bce06=_0x3bce06||0xcc;return function(_0x2aa03b){if(_0x2aa03b){return _0xc15883[_0x8489('0x2d')](_0x3bce06);}return _0xc15883['status'](_0x3bce06)[_0x8489('0x2e')]();};}function respondWithResult(_0x568c64,_0x4290b6){_0x4290b6=_0x4290b6||0xc8;return function(_0x35bd6c){if(_0x35bd6c){return _0x568c64[_0x8489('0x2f')](_0x4290b6)[_0x8489('0x30')](_0x35bd6c);}};}function respondWithFilteredResult(_0x581511,_0x17285a){return function(_0x7d8395){if(_0x7d8395){var _0x5799ec=typeof _0x17285a[_0x8489('0x31')]===_0x8489('0x32')&&typeof _0x17285a[_0x8489('0x33')]===_0x8489('0x32');var _0x207586=_0x7d8395['count'];var _0xe81582=_0x5799ec?0x0:_0x17285a[_0x8489('0x31')];var _0x19932a=_0x5799ec?_0x7d8395[_0x8489('0x34')]:_0x17285a[_0x8489('0x31')]+_0x17285a[_0x8489('0x33')];var _0x219d08;if(_0x19932a>=_0x207586){_0x19932a=_0x207586;_0x219d08=0xc8;}else{_0x219d08=0xce;}_0x581511[_0x8489('0x2f')](_0x219d08);return _0x581511[_0x8489('0x35')]('Content-Range',_0xe81582+'-'+_0x19932a+'/'+_0x207586)[_0x8489('0x30')](_0x7d8395);}return null;};}function patchUpdates(_0x46ba49){return function(_0x2ff684){try{jsonpatch['apply'](_0x2ff684,_0x46ba49,!![]);}catch(_0x156c63){return BPromise[_0x8489('0x36')](_0x156c63);}return _0x2ff684['save']();};}function saveUpdates(_0x324633,_0x3b6ce6){return function(_0xc5149c){if(_0xc5149c){return _0xc5149c[_0x8489('0x37')](_0x324633)[_0x8489('0x21')](function(_0x19918d){return _0x19918d;});}return null;};}function removeEntity(_0xb11d2f,_0xdd473d){return function(_0x320dca){if(_0x320dca){return _0x320dca[_0x8489('0x38')]()[_0x8489('0x21')](function(){_0xb11d2f[_0x8489('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x150462,_0x35fcc0){return function(_0x55d48f){if(!_0x55d48f){_0x150462['sendStatus'](0x194);}return _0x55d48f;};}function handleError(_0x22b38f,_0x5739fd){_0x5739fd=_0x5739fd||0x1f4;return function(_0x29cd3a){logger['error'](_0x29cd3a[_0x8489('0x39')]);if(_0x29cd3a[_0x8489('0x3a')]){delete _0x29cd3a['name'];}_0x22b38f[_0x8489('0x2f')](_0x5739fd)[_0x8489('0x3b')](_0x29cd3a);};}exports[_0x8489('0x3c')]=function(_0x17525f,_0x5a25a1){var _0xfd0a7e={},_0x28933f={},_0x57eefb={'count':0x0,'rows':[]};var _0x4a2ef3=_[_0x8489('0x3d')](db[_0x8489('0x3e')]['rawAttributes'],function(_0x4998a9){return{'name':_0x4998a9[_0x8489('0x3f')],'type':_0x4998a9[_0x8489('0x40')]['key']};});_0x28933f[_0x8489('0x41')]=_[_0x8489('0x3d')](_0x4a2ef3,_0x8489('0x3a'));_0x28933f[_0x8489('0x42')]=_[_0x8489('0x43')](_0x17525f[_0x8489('0x42')]);_0x28933f[_0x8489('0x44')]=_['intersection'](_0x28933f[_0x8489('0x41')],_0x28933f['query']);_0xfd0a7e[_0x8489('0x45')]=_[_0x8489('0x46')](_0x28933f[_0x8489('0x41')],qs[_0x8489('0x47')](_0x17525f[_0x8489('0x42')][_0x8489('0x47')]));_0xfd0a7e[_0x8489('0x45')]=_0xfd0a7e[_0x8489('0x45')][_0x8489('0x48')]?_0xfd0a7e['attributes']:_0x28933f['model'];if(!_0x17525f[_0x8489('0x42')]['hasOwnProperty'](_0x8489('0x49'))){_0xfd0a7e[_0x8489('0x33')]=qs[_0x8489('0x33')](_0x17525f[_0x8489('0x42')][_0x8489('0x33')]);_0xfd0a7e[_0x8489('0x31')]=qs[_0x8489('0x31')](_0x17525f[_0x8489('0x42')][_0x8489('0x31')]);}_0xfd0a7e[_0x8489('0x4a')]=qs[_0x8489('0x4b')](_0x17525f[_0x8489('0x42')]['sort']);_0xfd0a7e[_0x8489('0x4c')]=qs[_0x8489('0x44')](_[_0x8489('0x4d')](_0x17525f['query'],_0x28933f[_0x8489('0x44')]),_0x4a2ef3);if(_0x17525f[_0x8489('0x42')][_0x8489('0x4e')]){_0xfd0a7e[_0x8489('0x4c')]=_['merge'](_0xfd0a7e[_0x8489('0x4c')],{'$or':_[_0x8489('0x3d')](_0x4a2ef3,function(_0x5b9ba5){if(_0x5b9ba5[_0x8489('0x40')]!==_0x8489('0x4f')){var _0x3c2e55={};_0x3c2e55[_0x5b9ba5[_0x8489('0x3a')]]={'$like':'%'+_0x17525f[_0x8489('0x42')]['filter']+'%'};return _0x3c2e55;}})});}_0xfd0a7e=_['merge']({},_0xfd0a7e,_0x17525f[_0x8489('0x50')]);var _0x30a2df={'where':_0xfd0a7e[_0x8489('0x4c')]};return db[_0x8489('0x3e')]['count'](_0x30a2df)['then'](function(_0x19fb70){_0x57eefb[_0x8489('0x34')]=_0x19fb70;if(_0x17525f['query'][_0x8489('0x51')]){_0xfd0a7e['include']=[{'all':!![]}];}return db[_0x8489('0x3e')]['findAll'](_0xfd0a7e);})[_0x8489('0x21')](function(_0x3a343f){_0x57eefb['rows']=_0x3a343f;return _0x57eefb;})[_0x8489('0x21')](respondWithFilteredResult(_0x5a25a1,_0xfd0a7e))[_0x8489('0x2c')](handleError(_0x5a25a1,null));};exports[_0x8489('0x52')]=function(_0x41b5f2,_0x55dfa2){var _0x378c7f={'raw':!![],'where':{'id':_0x41b5f2[_0x8489('0x53')]['id']}},_0x5a4dce={};_0x5a4dce[_0x8489('0x41')]=_[_0x8489('0x43')](db[_0x8489('0x3e')][_0x8489('0x54')]);_0x5a4dce[_0x8489('0x42')]=_[_0x8489('0x43')](_0x41b5f2[_0x8489('0x42')]);_0x5a4dce[_0x8489('0x44')]=_[_0x8489('0x46')](_0x5a4dce['model'],_0x5a4dce['query']);_0x378c7f[_0x8489('0x45')]=_[_0x8489('0x46')](_0x5a4dce[_0x8489('0x41')],qs[_0x8489('0x47')](_0x41b5f2[_0x8489('0x42')][_0x8489('0x47')]));_0x378c7f['attributes']=_0x378c7f['attributes'][_0x8489('0x48')]?_0x378c7f[_0x8489('0x45')]:_0x5a4dce['model'];if(_0x41b5f2['query'][_0x8489('0x51')]){_0x378c7f[_0x8489('0x55')]=[{'all':!![]}];}_0x378c7f=_[_0x8489('0x56')]({},_0x378c7f,_0x41b5f2['options']);return db[_0x8489('0x3e')][_0x8489('0x57')](_0x378c7f)[_0x8489('0x21')](handleEntityNotFound(_0x55dfa2,null))[_0x8489('0x21')](respondWithResult(_0x55dfa2,null))[_0x8489('0x2c')](handleError(_0x55dfa2,null));};exports[_0x8489('0x37')]=function(_0x4ca96d,_0x266801){if(_0x4ca96d[_0x8489('0x58')]['id']){delete _0x4ca96d['body']['id'];}return db[_0x8489('0x3e')][_0x8489('0x57')]({'where':{'id':_0x4ca96d[_0x8489('0x53')]['id']}})[_0x8489('0x21')](handleEntityNotFound(_0x266801,null))[_0x8489('0x21')](saveUpdates(_0x4ca96d['body'],null))['then'](respondWithResult(_0x266801,null))[_0x8489('0x2c')](handleError(_0x266801,null));};exports['destroy']=function(_0x5dc0ec,_0x31c14c){return db[_0x8489('0x3e')][_0x8489('0x57')]({'where':{'id':_0x5dc0ec[_0x8489('0x53')]['id']}})[_0x8489('0x21')](handleEntityNotFound(_0x31c14c,null))[_0x8489('0x21')](removeEntity(_0x31c14c,null))['catch'](handleError(_0x31c14c,null));};exports[_0x8489('0x59')]=function(_0x2d8621,_0x35da04){return db[_0x8489('0x3e')][_0x8489('0x59')]()[_0x8489('0x21')](respondWithResult(_0x35da04,null))[_0x8489('0x2c')](handleError(_0x35da04,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x8489('0x5a')]=function(_0x558d34,_0x4476d7,_0x5f5472){var _0xde2698={'agent':{},'channel':'fax'};if(_0x558d34[_0x8489('0x58')]['id']){delete _0x558d34[_0x8489('0x58')]['id'];}_0x558d34[_0x8489('0x58')][_0x8489('0x5b')]=!![];_0x558d34[_0x8489('0x58')][_0x8489('0x5c')]=moment()[_0x8489('0x5d')](_0x8489('0x5e'));_0x558d34['body'][_0x8489('0x5f')]=_0x558d34[_0x8489('0x58')][_0x8489('0x5f')]||_0x558d34['user']['id'];_0xde2698[_0x8489('0x60')]['id']=_0x558d34[_0x8489('0x58')]['UserId'];return db[_0x8489('0x3e')][_0x8489('0x57')]({'where':{'id':_0x558d34[_0x8489('0x53')]['id'],'UserId':null}})[_0x8489('0x21')](handleEntityNotFound(_0x4476d7,null))[_0x8489('0x21')](saveUpdates(_0x558d34['body'],null))['then'](function(_0x1f15b1){if(_0x1f15b1){_0xde2698[_0x8489('0x2a')]=_0x1f15b1[_0x8489('0x61')]({'plain':!![]});return db['FaxInteraction'][_0x8489('0x57')]({'where':{'id':_0x1f15b1['FaxInteractionId']}});}return null;})[_0x8489('0x21')](handleEntityNotFound(_0x4476d7,null))['then'](function(_0xf01dc6){if(_0xf01dc6){return _0xf01dc6['update']({'UserId':_0x558d34['body'][_0x8489('0x5f')],'read1stAt':_[_0x8489('0x62')](_0xf01dc6[_0x8489('0x63')])?moment()[_0x8489('0x5d')](_0x8489('0x5e')):undefined});}return null;})['then'](function(_0x4342a1){if(_0x4342a1){_0xde2698[_0x8489('0x64')]=_0x4342a1[_0x8489('0x61')]({'plain':!![]});interaction_log[_0x8489('0x22')](_0x8489('0x65'),_0x558d34[_0x8489('0x66')]['id'],_0x558d34[_0x8489('0x66')][_0x8489('0x3a')],_0x558d34[_0x8489('0x66')][_0x8489('0x67')],_0xde2698['interaction']['id'],_0x558d34[_0x8489('0x58')]?JSON[_0x8489('0x26')](_0x558d34[_0x8489('0x58')]):_0x8489('0x68'));return respondWithRpcPromise(_0x8489('0x69'),_0x8489('0x6a'),_0xde2698);}return null;})[_0x8489('0x21')](function(_0x55487e){var _0x362290='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x55487e[_0x8489('0x2a')][_0x8489('0x6b')];return db[_0x8489('0x6c')][_0x8489('0x42')](_0x362290,{'type':db[_0x8489('0x6d')][_0x8489('0x6e')][_0x8489('0x6f')],'raw':!![]})[_0x8489('0x21')](function(_0x3e759d){return _0x3e759d;});})['then'](function(_0x444baf){if(_0x444baf){_0xde2698['message']['contact']=_0x444baf[0x0];if(!_0x558d34[_0x8489('0x58')][_0x8489('0x5f')])return;return db['User'][_0x8489('0x57')]({'where':{'id':_0x558d34[_0x8489('0x58')]['UserId'],'role':_0x8489('0x60')},'attributes':['id',_0x8489('0x3a'),_0x8489('0x70'),_0x8489('0x71'),_0x8489('0x72')],'raw':!![]});}return null;})[_0x8489('0x21')](function(_0x57e959){if(!_0x57e959)return null;_0xde2698['message'][_0x8489('0x60')]=_0x57e959;return _0xde2698;})[_0x8489('0x21')](function(_0x1ddf4d){if(_0x1ddf4d){if(_0x558d34[_0x8489('0x58')][_0x8489('0x73')]){_0xde2698['message']['interface']=util[_0x8489('0x5d')](_0x8489('0x74'),_0x558d34['user'][_0x8489('0x3a')]);_0xde2698[_0x8489('0x2a')][_0x8489('0x75')]=_0xde2698['channel'];_0xde2698['message']['motionChannel']=_0xde2698[_0x8489('0x75')];_0xde2698[_0x8489('0x2a')][_0x8489('0x76')]=_0x8489('0x5a');return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_0xde2698['message']},client9002)[_0x8489('0x21')](function(){return _0xde2698;});}return _0xde2698;}return null;})[_0x8489('0x21')](respondWithResult(_0x4476d7,null))['catch'](handleError(_0x4476d7,null));};var interaction_log=require(_0x8489('0x17'))(_0x8489('0x77'));exports[_0x8489('0x36')]=function(_0x5cc9cc,_0x5b0028,_0x46fe76){var _0x4ac379={'agent':{},'channel':'fax'};if(_0x5cc9cc[_0x8489('0x58')]['id']){delete _0x5cc9cc['body']['id'];}_0x5cc9cc[_0x8489('0x58')]['UserId']=_0x5cc9cc[_0x8489('0x58')]['UserId']||_0x5cc9cc[_0x8489('0x66')]['id'];_0x4ac379[_0x8489('0x60')]['id']=_0x5cc9cc[_0x8489('0x58')][_0x8489('0x5f')];return db['FaxMessage']['find']({'where':{'id':_0x5cc9cc[_0x8489('0x53')]['id'],'UserId':null}})[_0x8489('0x21')](handleEntityNotFound(_0x5b0028,null))[_0x8489('0x21')](function(_0x55a993){if(_0x55a993){_0x4ac379['message']=_0x55a993[_0x8489('0x61')]({'plain':!![]});return db[_0x8489('0x78')]['find']({'where':{'id':_0x55a993[_0x8489('0x79')]}});}return null;})[_0x8489('0x21')](handleEntityNotFound(_0x5b0028,null))[_0x8489('0x21')](function(_0x20e301){if(_0x20e301){_0x4ac379[_0x8489('0x64')]=_0x20e301[_0x8489('0x61')]({'plain':!![]});interaction_log[_0x8489('0x22')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5cc9cc[_0x8489('0x66')]['id'],_0x5cc9cc[_0x8489('0x66')][_0x8489('0x3a')],_0x5cc9cc[_0x8489('0x66')][_0x8489('0x67')],_0x4ac379[_0x8489('0x64')]['id'],_0x5cc9cc[_0x8489('0x58')]?JSON[_0x8489('0x26')](_0x5cc9cc[_0x8489('0x58')]):'null');return respondWithRpcPromise(_0x8489('0x7a'),_0x8489('0x7b'),_0x4ac379);}return null;})['then'](function(_0x3c437e){var _0x149ac4=_0x8489('0x7c')+_0x3c437e['message'][_0x8489('0x6b')];return db[_0x8489('0x6c')][_0x8489('0x42')](_0x149ac4,{'type':db[_0x8489('0x6d')][_0x8489('0x6e')][_0x8489('0x6f')],'raw':!![]})[_0x8489('0x21')](function(_0x1a394d){return _0x1a394d;});})[_0x8489('0x21')](function(_0x28bb06){if(_0x28bb06){_0x4ac379[_0x8489('0x2a')]['contact']=_0x28bb06[0x0];if(!_0x5cc9cc['body'][_0x8489('0x5f')])return;return db[_0x8489('0x7d')][_0x8489('0x57')]({'where':{'id':_0x5cc9cc[_0x8489('0x58')][_0x8489('0x5f')],'role':'agent'},'attributes':['id',_0x8489('0x3a'),_0x8489('0x70'),_0x8489('0x71'),_0x8489('0x72')],'raw':!![]});}return null;})[_0x8489('0x21')](function(_0x47bb5d){if(!_0x47bb5d)return null;_0x4ac379['message'][_0x8489('0x60')]=_0x47bb5d;return _0x4ac379;})[_0x8489('0x21')](function(_0x2db95d){if(_0x2db95d){_0x2db95d['message'][_0x8489('0x7e')]=util[_0x8489('0x5d')]('SIP/%s',_0x5cc9cc[_0x8489('0x66')][_0x8489('0x3a')]);_0x2db95d['message'][_0x8489('0x75')]=_0x4ac379[_0x8489('0x75')];_0x2db95d[_0x8489('0x2a')][_0x8489('0x7f')]=_0x4ac379[_0x8489('0x75')];_0x2db95d[_0x8489('0x2a')][_0x8489('0x76')]='reject';respondWithRpcPromise(_0x8489('0x80'),_0x8489('0x80'),{'event':_0x8489('0x81'),'message':_0x2db95d[_0x8489('0x2a')]},client9002);return _0x4ac379;}return null;})[_0x8489('0x21')](respondWithResult(_0x5b0028,null))[_0x8489('0x2c')](handleError(_0x5b0028,null));};exports['create']=function(_0x2c3e22,_0x1f9446){var _0x2e5d0f;return db['FaxMessage'][_0x8489('0x82')](_0x2c3e22[_0x8489('0x58')],{})['then'](function(_0x307861){_0x2e5d0f=_0x307861;return db[_0x8489('0x83')][_0x8489('0x84')]({'where':{'id':_0x2e5d0f[_0x8489('0x6b')]}});})['then'](function(_0x245ae5){if(_[_0x8489('0x62')](_0x245ae5)){return;}else{_0x2e5d0f[_0x8489('0x85')]=_0x245ae5[_0x8489('0x85')];return db[_0x8489('0x86')][_0x8489('0x84')]({'where':{'id':_0x2e5d0f['AttachmentId']}});}})[_0x8489('0x21')](function(_0x26f448){return respondWithRpcPromise(_0x8489('0x87'),_0x8489('0x87'),{'FaxAccountId':_['isNil'](_0x2c3e22[_0x8489('0x58')])?undefined:_0x2c3e22['body'][_0x8489('0x88')],'path':_[_0x8489('0x62')](_0x26f448)?undefined:util[_0x8489('0x5d')](_0x8489('0x89'),_0x26f448[_0x8489('0x8a')]),'fax':_[_0x8489('0x62')](_0x2e5d0f[_0x8489('0x85')])?undefined:_0x2e5d0f['fax'],'AttachmentId':_0x2e5d0f['AttachmentId']},client9002);})[_0x8489('0x21')](respondWithResult(_0x1f9446,0xc9))[_0x8489('0x2c')](handleError(_0x1f9446,null));};exports['download']=function(_0x127603,_0x560e26){var _0x1a7364=path[_0x8489('0x8b')](config['root'],'server',_0x8489('0x8c'),_0x8489('0x8d'));return db[_0x8489('0x3e')][_0x8489('0x57')]({'where':{'id':_0x127603[_0x8489('0x53')]['id']},'include':[{'model':db[_0x8489('0x86')],'as':_0x8489('0x86')}]})['then'](handleEntityNotFound(_0x560e26,null))[_0x8489('0x21')](function(_0x3201ea){if(_0x3201ea){return _0x560e26[_0x8489('0x8e')](path[_0x8489('0x8b')](_0x1a7364,_0x3201ea[_0x8489('0x86')][_0x8489('0x8a')]));}})[_0x8489('0x2c')](handleError(_0x560e26,null));};
\ No newline at end of file
+var _0x839e=['end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','stack','name','map','FaxMessage','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','merge','options','include','findAll','rows','show','keys','length','includeAll','find','body','params','describe','accept','read','readAt','format','UserId','user','agent','get','FaxInteraction','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE: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','contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','fax-interactions','reject','fax','RejectMessage','rejectMessage','ContactId','SELECT','email','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','isNil','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','sendStatus','status'];(function(_0x430524,_0x23b611){var _0x3a726d=function(_0x5cc39d){while(--_0x5cc39d){_0x430524['push'](_0x430524['shift']());}};_0x3a726d(++_0x23b611);}(_0x839e,0x19e));var _0xe839=function(_0x55c8e3,_0x4addd4){_0x55c8e3=_0x55c8e3-0x0;var _0x7e6c2c=_0x839e[_0x55c8e3];return _0x7e6c2c;};'use strict';var emlformat=require(_0xe839('0x0'));var rimraf=require(_0xe839('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe839('0x2'));var rp=require(_0xe839('0x3'));var moment=require(_0xe839('0x4'));var BPromise=require(_0xe839('0x5'));var Mustache=require(_0xe839('0x6'));var util=require(_0xe839('0x7'));var path=require(_0xe839('0x8'));var sox=require(_0xe839('0x9'));var csv=require('to-csv');var ejs=require(_0xe839('0xa'));var fs=require('fs');var fs_extra=require(_0xe839('0xb'));var _=require(_0xe839('0xc'));var squel=require(_0xe839('0xd'));var crypto=require(_0xe839('0xe'));var jsforce=require(_0xe839('0xf'));var deskjs=require(_0xe839('0x10'));var toCsv=require(_0xe839('0x11'));var querystring=require(_0xe839('0x12'));var Papa=require(_0xe839('0x13'));var Redis=require(_0xe839('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xe839('0x15'));var as=require(_0xe839('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe839('0x17'))(_0xe839('0x18'));var utils=require(_0xe839('0x19'));var config=require(_0xe839('0x1a'));var licenseUtil=require(_0xe839('0x1b'));var db=require(_0xe839('0x1c'))['db'];config[_0xe839('0x1d')]=_[_0xe839('0x1e')](config[_0xe839('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xe839('0x1f'))(new Redis(config[_0xe839('0x1d')]));require(_0xe839('0x20'))[_0xe839('0x21')](socket);var jayson=require(_0xe839('0x22'));var client=jayson[_0xe839('0x23')]['http']({'port':0x232c});var client9002=jayson[_0xe839('0x23')][_0xe839('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x292785,_0x4e09cc,_0x27c4ba,_0x5e23ec){return new BPromise(function(_0x1bc9d9,_0x4cd22d){var _0x7b90a=_0x5e23ec||client;return _0x7b90a[_0xe839('0x25')](_0x292785,_0x27c4ba)['then'](function(_0x13761e){logger[_0xe839('0x26')](_0xe839('0x27'),_0x4e09cc,'request\x20sent');logger[_0xe839('0x28')](_0xe839('0x29'),_0x4e09cc,_0xe839('0x2a'),JSON[_0xe839('0x2b')](_0x13761e));if(_0x13761e['error']){if(_0x13761e['error'][_0xe839('0x2c')]===0x1f4){logger[_0xe839('0x2d')](_0xe839('0x27'),_0x4e09cc,_0x13761e['error'][_0xe839('0x2e')]);return _0x4cd22d(_0x13761e[_0xe839('0x2d')][_0xe839('0x2e')]);}logger[_0xe839('0x2d')]('FaxMessage,\x20%s,\x20%s',_0x4e09cc,_0x13761e['error'][_0xe839('0x2e')]);return _0x1bc9d9(_0x13761e[_0xe839('0x2d')][_0xe839('0x2e')]);}else{logger[_0xe839('0x26')]('FaxMessage,\x20%s,\x20%s',_0x4e09cc,_0xe839('0x2a'));_0x1bc9d9(_0x13761e[_0xe839('0x2f')][_0xe839('0x2e')]);}})[_0xe839('0x30')](function(_0x51942c){logger[_0xe839('0x2d')](_0xe839('0x27'),_0x4e09cc,_0x51942c);_0x4cd22d(_0x51942c);});});}function respondWithStatusCode(_0x30c834,_0x2b83d1){_0x2b83d1=_0x2b83d1||0xcc;return function(_0x201233){if(_0x201233){return _0x30c834[_0xe839('0x31')](_0x2b83d1);}return _0x30c834[_0xe839('0x32')](_0x2b83d1)[_0xe839('0x33')]();};}function respondWithResult(_0x4890bf,_0x27d7e1){_0x27d7e1=_0x27d7e1||0xc8;return function(_0x32e62d){if(_0x32e62d){return _0x4890bf[_0xe839('0x32')](_0x27d7e1)[_0xe839('0x34')](_0x32e62d);}};}function respondWithFilteredResult(_0x5e073b,_0x36e6ef){return function(_0x30cc79){if(_0x30cc79){var _0x4a1cae=typeof _0x36e6ef[_0xe839('0x35')]===_0xe839('0x36')&&typeof _0x36e6ef[_0xe839('0x37')]===_0xe839('0x36');var _0x5e124b=_0x30cc79[_0xe839('0x38')];var _0x281f8d=_0x4a1cae?0x0:_0x36e6ef[_0xe839('0x35')];var _0x4cb10f=_0x4a1cae?_0x30cc79['count']:_0x36e6ef[_0xe839('0x35')]+_0x36e6ef[_0xe839('0x37')];var _0x19ccee;if(_0x4cb10f>=_0x5e124b){_0x4cb10f=_0x5e124b;_0x19ccee=0xc8;}else{_0x19ccee=0xce;}_0x5e073b[_0xe839('0x32')](_0x19ccee);return _0x5e073b[_0xe839('0x39')](_0xe839('0x3a'),_0x281f8d+'-'+_0x4cb10f+'/'+_0x5e124b)[_0xe839('0x34')](_0x30cc79);}return null;};}function patchUpdates(_0x224170){return function(_0x5affef){try{jsonpatch[_0xe839('0x3b')](_0x5affef,_0x224170,!![]);}catch(_0x20439d){return BPromise['reject'](_0x20439d);}return _0x5affef[_0xe839('0x3c')]();};}function saveUpdates(_0x1c70f1,_0x4fb134){return function(_0x28f433){if(_0x28f433){return _0x28f433[_0xe839('0x3d')](_0x1c70f1)[_0xe839('0x3e')](function(_0x526486){return _0x526486;});}return null;};}function removeEntity(_0x314aef,_0x341cb3){return function(_0x2bc16c){if(_0x2bc16c){return _0x2bc16c[_0xe839('0x3f')]()[_0xe839('0x3e')](function(){_0x314aef['status'](0xcc)[_0xe839('0x33')]();});}};}function handleEntityNotFound(_0x200c45,_0x50683a){return function(_0x3121cb){if(!_0x3121cb){_0x200c45[_0xe839('0x31')](0x194);}return _0x3121cb;};}function handleError(_0x40f028,_0x2ce966){_0x2ce966=_0x2ce966||0x1f4;return function(_0x4dfadf){logger[_0xe839('0x2d')](_0x4dfadf[_0xe839('0x40')]);if(_0x4dfadf[_0xe839('0x41')]){delete _0x4dfadf[_0xe839('0x41')];}_0x40f028['status'](_0x2ce966)['send'](_0x4dfadf);};}exports['index']=function(_0x4e6b12,_0x10f745){var _0x3c9f3a={},_0x2998ce={},_0x100485={'count':0x0,'rows':[]};var _0x2cd679=_[_0xe839('0x42')](db[_0xe839('0x43')][_0xe839('0x44')],function(_0x2e50d2){return{'name':_0x2e50d2[_0xe839('0x45')],'type':_0x2e50d2['type'][_0xe839('0x46')]};});_0x2998ce[_0xe839('0x47')]=_[_0xe839('0x42')](_0x2cd679,_0xe839('0x41'));_0x2998ce['query']=_['keys'](_0x4e6b12[_0xe839('0x48')]);_0x2998ce[_0xe839('0x49')]=_[_0xe839('0x4a')](_0x2998ce[_0xe839('0x47')],_0x2998ce[_0xe839('0x48')]);_0x3c9f3a[_0xe839('0x4b')]=_[_0xe839('0x4a')](_0x2998ce[_0xe839('0x47')],qs[_0xe839('0x4c')](_0x4e6b12[_0xe839('0x48')][_0xe839('0x4c')]));_0x3c9f3a[_0xe839('0x4b')]=_0x3c9f3a[_0xe839('0x4b')]['length']?_0x3c9f3a[_0xe839('0x4b')]:_0x2998ce[_0xe839('0x47')];if(!_0x4e6b12[_0xe839('0x48')][_0xe839('0x4d')](_0xe839('0x4e'))){_0x3c9f3a[_0xe839('0x37')]=qs['limit'](_0x4e6b12[_0xe839('0x48')]['limit']);_0x3c9f3a[_0xe839('0x35')]=qs[_0xe839('0x35')](_0x4e6b12[_0xe839('0x48')][_0xe839('0x35')]);}_0x3c9f3a[_0xe839('0x4f')]=qs[_0xe839('0x50')](_0x4e6b12[_0xe839('0x48')]['sort']);_0x3c9f3a[_0xe839('0x51')]=qs[_0xe839('0x49')](_[_0xe839('0x52')](_0x4e6b12[_0xe839('0x48')],_0x2998ce['filters']),_0x2cd679);if(_0x4e6b12[_0xe839('0x48')]['filter']){_0x3c9f3a[_0xe839('0x51')]=_['merge'](_0x3c9f3a[_0xe839('0x51')],{'$or':_[_0xe839('0x42')](_0x2cd679,function(_0x49e65f){if(_0x49e65f[_0xe839('0x53')]!==_0xe839('0x54')){var _0x15d2f1={};_0x15d2f1[_0x49e65f[_0xe839('0x41')]]={'$like':'%'+_0x4e6b12[_0xe839('0x48')]['filter']+'%'};return _0x15d2f1;}})});}_0x3c9f3a=_[_0xe839('0x55')]({},_0x3c9f3a,_0x4e6b12[_0xe839('0x56')]);var _0x433deb={'where':_0x3c9f3a[_0xe839('0x51')]};return db[_0xe839('0x43')][_0xe839('0x38')](_0x433deb)[_0xe839('0x3e')](function(_0x5cbbca){_0x100485[_0xe839('0x38')]=_0x5cbbca;if(_0x4e6b12['query']['includeAll']){_0x3c9f3a[_0xe839('0x57')]=[{'all':!![]}];}return db[_0xe839('0x43')][_0xe839('0x58')](_0x3c9f3a);})[_0xe839('0x3e')](function(_0x2eaed8){_0x100485[_0xe839('0x59')]=_0x2eaed8;return _0x100485;})[_0xe839('0x3e')](respondWithFilteredResult(_0x10f745,_0x3c9f3a))[_0xe839('0x30')](handleError(_0x10f745,null));};exports[_0xe839('0x5a')]=function(_0x57a18a,_0x3af151){var _0x5205a8={'raw':!![],'where':{'id':_0x57a18a['params']['id']}},_0x553d44={};_0x553d44[_0xe839('0x47')]=_[_0xe839('0x5b')](db[_0xe839('0x43')][_0xe839('0x44')]);_0x553d44[_0xe839('0x48')]=_[_0xe839('0x5b')](_0x57a18a['query']);_0x553d44[_0xe839('0x49')]=_['intersection'](_0x553d44[_0xe839('0x47')],_0x553d44[_0xe839('0x48')]);_0x5205a8[_0xe839('0x4b')]=_[_0xe839('0x4a')](_0x553d44[_0xe839('0x47')],qs[_0xe839('0x4c')](_0x57a18a['query'][_0xe839('0x4c')]));_0x5205a8[_0xe839('0x4b')]=_0x5205a8['attributes'][_0xe839('0x5c')]?_0x5205a8[_0xe839('0x4b')]:_0x553d44[_0xe839('0x47')];if(_0x57a18a[_0xe839('0x48')][_0xe839('0x5d')]){_0x5205a8[_0xe839('0x57')]=[{'all':!![]}];}_0x5205a8=_['merge']({},_0x5205a8,_0x57a18a[_0xe839('0x56')]);return db[_0xe839('0x43')][_0xe839('0x5e')](_0x5205a8)[_0xe839('0x3e')](handleEntityNotFound(_0x3af151,null))[_0xe839('0x3e')](respondWithResult(_0x3af151,null))['catch'](handleError(_0x3af151,null));};exports['update']=function(_0x535bb2,_0x47a88a){if(_0x535bb2['body']['id']){delete _0x535bb2[_0xe839('0x5f')]['id'];}return db[_0xe839('0x43')][_0xe839('0x5e')]({'where':{'id':_0x535bb2[_0xe839('0x60')]['id']}})[_0xe839('0x3e')](handleEntityNotFound(_0x47a88a,null))['then'](saveUpdates(_0x535bb2['body'],null))[_0xe839('0x3e')](respondWithResult(_0x47a88a,null))[_0xe839('0x30')](handleError(_0x47a88a,null));};exports[_0xe839('0x3f')]=function(_0x205573,_0x2a0f54){return db[_0xe839('0x43')]['find']({'where':{'id':_0x205573[_0xe839('0x60')]['id']}})[_0xe839('0x3e')](handleEntityNotFound(_0x2a0f54,null))[_0xe839('0x3e')](removeEntity(_0x2a0f54,null))[_0xe839('0x30')](handleError(_0x2a0f54,null));};exports[_0xe839('0x61')]=function(_0x22cc17,_0x581bdf){return db[_0xe839('0x43')]['describe']()[_0xe839('0x3e')](respondWithResult(_0x581bdf,null))[_0xe839('0x30')](handleError(_0x581bdf,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0xe839('0x62')]=function(_0x2cd88a,_0x18b94a,_0x22d261){var _0x5f17fd={'agent':{},'channel':'fax'};if(_0x2cd88a[_0xe839('0x5f')]['id']){delete _0x2cd88a[_0xe839('0x5f')]['id'];}_0x2cd88a[_0xe839('0x5f')][_0xe839('0x63')]=!![];_0x2cd88a[_0xe839('0x5f')][_0xe839('0x64')]=moment()[_0xe839('0x65')]('YYYY-MM-DD\x20HH:mm:ss');_0x2cd88a['body'][_0xe839('0x66')]=_0x2cd88a[_0xe839('0x5f')][_0xe839('0x66')]||_0x2cd88a[_0xe839('0x67')]['id'];_0x5f17fd[_0xe839('0x68')]['id']=_0x2cd88a[_0xe839('0x5f')][_0xe839('0x66')];return db[_0xe839('0x43')][_0xe839('0x5e')]({'where':{'id':_0x2cd88a['params']['id'],'UserId':null}})[_0xe839('0x3e')](handleEntityNotFound(_0x18b94a,null))[_0xe839('0x3e')](saveUpdates(_0x2cd88a[_0xe839('0x5f')],null))[_0xe839('0x3e')](function(_0x2feee5){if(_0x2feee5){_0x5f17fd['message']=_0x2feee5[_0xe839('0x69')]({'plain':!![]});return db[_0xe839('0x6a')][_0xe839('0x5e')]({'where':{'id':_0x2feee5[_0xe839('0x6b')]}});}return null;})[_0xe839('0x3e')](handleEntityNotFound(_0x18b94a,null))[_0xe839('0x3e')](function(_0x262086){if(_0x262086){return _0x262086['update']({'UserId':_0x2cd88a[_0xe839('0x5f')]['UserId'],'read1stAt':_['isNil'](_0x262086[_0xe839('0x6c')])?moment()[_0xe839('0x65')](_0xe839('0x6d')):undefined});}return null;})[_0xe839('0x3e')](function(_0x37c998){if(_0x37c998){_0x5f17fd[_0xe839('0x6e')]=_0x37c998[_0xe839('0x69')]({'plain':!![]});interaction_log[_0xe839('0x26')](_0xe839('0x6f'),_0x2cd88a[_0xe839('0x67')]['id'],_0x2cd88a[_0xe839('0x67')]['name'],_0x2cd88a[_0xe839('0x67')][_0xe839('0x70')],_0x5f17fd['interaction']['id'],_0x2cd88a[_0xe839('0x5f')]?JSON[_0xe839('0x2b')](_0x2cd88a[_0xe839('0x5f')]):_0xe839('0x71'));return respondWithRpcPromise('AcceptMessage',_0xe839('0x72'),_0x5f17fd);}return null;})['then'](function(_0x58c2fe){var _0x4c24c8=_0xe839('0x73')+_0x58c2fe[_0xe839('0x2e')]['ContactId'];return db[_0xe839('0x74')][_0xe839('0x48')](_0x4c24c8,{'type':db[_0xe839('0x75')][_0xe839('0x76')]['SELECT'],'raw':!![]})['then'](function(_0x2e9d75){return _0x2e9d75;});})[_0xe839('0x3e')](function(_0x495ac9){if(_0x495ac9){_0x5f17fd[_0xe839('0x2e')][_0xe839('0x77')]=_0x495ac9[0x0];if(!_0x2cd88a['body'][_0xe839('0x66')])return;return db[_0xe839('0x78')]['find']({'where':{'id':_0x2cd88a[_0xe839('0x5f')]['UserId'],'role':_0xe839('0x68')},'attributes':['id',_0xe839('0x41'),_0xe839('0x79'),'email',_0xe839('0x7a')],'raw':!![]});}return null;})[_0xe839('0x3e')](function(_0x116b99){if(!_0x116b99)return null;_0x5f17fd[_0xe839('0x2e')][_0xe839('0x68')]=_0x116b99;return _0x5f17fd;})[_0xe839('0x3e')](function(_0x5eab22){if(_0x5eab22){if(_0x2cd88a['body'][_0xe839('0x7b')]){_0x5f17fd[_0xe839('0x2e')][_0xe839('0x7c')]=util[_0xe839('0x65')](_0xe839('0x7d'),_0x2cd88a['user'][_0xe839('0x41')]);_0x5f17fd[_0xe839('0x2e')]['channel']=_0x5f17fd[_0xe839('0x7e')];_0x5f17fd[_0xe839('0x2e')][_0xe839('0x7f')]=_0x5f17fd[_0xe839('0x7e')];_0x5f17fd[_0xe839('0x2e')][_0xe839('0x80')]=_0xe839('0x62');return respondWithRpcPromise(_0xe839('0x81'),'EventManager',{'event':'acceptmessage','message':_0x5f17fd['message']},client9002)['then'](function(){return _0x5f17fd;});}return _0x5f17fd;}return null;})['then'](respondWithResult(_0x18b94a,null))[_0xe839('0x30')](handleError(_0x18b94a,null));};var interaction_log=require(_0xe839('0x17'))(_0xe839('0x82'));exports[_0xe839('0x83')]=function(_0xf5b53b,_0x4d08e3,_0x574f71){var _0x5bc2c3={'agent':{},'channel':_0xe839('0x84')};if(_0xf5b53b[_0xe839('0x5f')]['id']){delete _0xf5b53b[_0xe839('0x5f')]['id'];}_0xf5b53b[_0xe839('0x5f')][_0xe839('0x66')]=_0xf5b53b['body'][_0xe839('0x66')]||_0xf5b53b['user']['id'];_0x5bc2c3[_0xe839('0x68')]['id']=_0xf5b53b[_0xe839('0x5f')]['UserId'];return db[_0xe839('0x43')][_0xe839('0x5e')]({'where':{'id':_0xf5b53b['params']['id'],'UserId':null}})[_0xe839('0x3e')](handleEntityNotFound(_0x4d08e3,null))['then'](function(_0xbd2f0a){if(_0xbd2f0a){_0x5bc2c3['message']=_0xbd2f0a['get']({'plain':!![]});return db['FaxInteraction'][_0xe839('0x5e')]({'where':{'id':_0xbd2f0a['FaxInteractionId']}});}return null;})[_0xe839('0x3e')](handleEntityNotFound(_0x4d08e3,null))[_0xe839('0x3e')](function(_0x1aa316){if(_0x1aa316){_0x5bc2c3['interaction']=_0x1aa316[_0xe839('0x69')]({'plain':!![]});interaction_log[_0xe839('0x26')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xf5b53b['user']['id'],_0xf5b53b[_0xe839('0x67')][_0xe839('0x41')],_0xf5b53b[_0xe839('0x67')][_0xe839('0x70')],_0x5bc2c3[_0xe839('0x6e')]['id'],_0xf5b53b[_0xe839('0x5f')]?JSON[_0xe839('0x2b')](_0xf5b53b[_0xe839('0x5f')]):_0xe839('0x71'));return respondWithRpcPromise(_0xe839('0x85'),_0xe839('0x86'),_0x5bc2c3);}return null;})[_0xe839('0x3e')](function(_0x4e771b){var _0x217b55=_0xe839('0x73')+_0x4e771b['message'][_0xe839('0x87')];return db['sequelize'][_0xe839('0x48')](_0x217b55,{'type':db[_0xe839('0x75')][_0xe839('0x76')][_0xe839('0x88')],'raw':!![]})[_0xe839('0x3e')](function(_0x5082d1){return _0x5082d1;});})[_0xe839('0x3e')](function(_0x539958){if(_0x539958){_0x5bc2c3[_0xe839('0x2e')][_0xe839('0x77')]=_0x539958[0x0];if(!_0xf5b53b[_0xe839('0x5f')][_0xe839('0x66')])return;return db['User']['find']({'where':{'id':_0xf5b53b[_0xe839('0x5f')][_0xe839('0x66')],'role':'agent'},'attributes':['id',_0xe839('0x41'),_0xe839('0x79'),_0xe839('0x89'),_0xe839('0x7a')],'raw':!![]});}return null;})[_0xe839('0x3e')](function(_0x3a709f){if(!_0x3a709f)return null;_0x5bc2c3['message'][_0xe839('0x68')]=_0x3a709f;return _0x5bc2c3;})['then'](function(_0x523aa6){if(_0x523aa6){_0x523aa6[_0xe839('0x2e')]['interface']=util[_0xe839('0x65')](_0xe839('0x7d'),_0xf5b53b[_0xe839('0x67')][_0xe839('0x41')]);_0x523aa6[_0xe839('0x2e')][_0xe839('0x7e')]=_0x5bc2c3[_0xe839('0x7e')];_0x523aa6['message'][_0xe839('0x7f')]=_0x5bc2c3[_0xe839('0x7e')];_0x523aa6[_0xe839('0x2e')][_0xe839('0x80')]='reject';respondWithRpcPromise(_0xe839('0x81'),'EventManager',{'event':_0xe839('0x8a'),'message':_0x523aa6[_0xe839('0x2e')]},client9002);return _0x5bc2c3;}return null;})[_0xe839('0x3e')](respondWithResult(_0x4d08e3,null))[_0xe839('0x30')](handleError(_0x4d08e3,null));};exports[_0xe839('0x8b')]=function(_0x45a3cb,_0x32cd92){var _0x4dce00;return db['FaxMessage']['create'](_0x45a3cb[_0xe839('0x5f')],{})[_0xe839('0x3e')](function(_0x24c195){_0x4dce00=_0x24c195;return db[_0xe839('0x8c')][_0xe839('0x8d')]({'where':{'id':_0x4dce00[_0xe839('0x87')]}});})[_0xe839('0x3e')](function(_0x44268b){if(_['isNil'](_0x44268b)){return;}else{_0x4dce00[_0xe839('0x84')]=_0x44268b[_0xe839('0x84')];return db[_0xe839('0x8e')][_0xe839('0x8d')]({'where':{'id':_0x4dce00[_0xe839('0x8f')]}});}})[_0xe839('0x3e')](function(_0x18ce8a){return respondWithRpcPromise('SendFax',_0xe839('0x90'),{'FaxAccountId':_[_0xe839('0x91')](_0x45a3cb[_0xe839('0x5f')])?undefined:_0x45a3cb[_0xe839('0x5f')][_0xe839('0x92')],'path':_[_0xe839('0x91')](_0x18ce8a)?undefined:util[_0xe839('0x65')](_0xe839('0x93'),_0x18ce8a[_0xe839('0x94')]),'fax':_[_0xe839('0x91')](_0x4dce00['fax'])?undefined:_0x4dce00[_0xe839('0x84')],'AttachmentId':_0x4dce00[_0xe839('0x8f')]},client9002);})[_0xe839('0x3e')](respondWithResult(_0x32cd92,0xc9))[_0xe839('0x30')](handleError(_0x32cd92,null));};exports[_0xe839('0x95')]=function(_0x1baa63,_0x1d7844){var _0x2e683a=path[_0xe839('0x96')](config[_0xe839('0x97')],_0xe839('0x98'),_0xe839('0x99'),_0xe839('0x9a'));return db['FaxMessage'][_0xe839('0x5e')]({'where':{'id':_0x1baa63[_0xe839('0x60')]['id']},'include':[{'model':db[_0xe839('0x8e')],'as':_0xe839('0x8e')}]})[_0xe839('0x3e')](handleEntityNotFound(_0x1d7844,null))[_0xe839('0x3e')](function(_0x3f0268){if(_0x3f0268){return _0x1d7844['download'](path[_0xe839('0x96')](_0x2e683a,_0x3f0268[_0xe839('0x8e')][_0xe839('0x94')]));}})[_0xe839('0x30')](handleError(_0x1d7844,null));};
\ No newline at end of file
index 2030b80..aa55120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a1=['events','setMaxListeners','update','remove','emit','hook','exports'];(function(_0x541c9e,_0x47f1a7){var _0x50dc53=function(_0x259431){while(--_0x259431){_0x541c9e['push'](_0x541c9e['shift']());}};_0x50dc53(++_0x47f1a7);}(_0x47a1,0xbd));var _0x147a=function(_0x56ec3b,_0x7899fa){_0x56ec3b=_0x56ec3b-0x0;var _0x4dfa9d=_0x47a1[_0x56ec3b];return _0x4dfa9d;};'use strict';var EventEmitter=require(_0x147a('0x0'));var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x147a('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x147a('0x2'),'afterDestroy':_0x147a('0x3')};function emitEvent(_0x5e69bc){return function(_0xd80e93,_0x66a8e2,_0xc2071d){FaxMessageEvents[_0x147a('0x4')](_0x5e69bc+':'+_0xd80e93['id'],_0xd80e93);FaxMessageEvents[_0x147a('0x4')](_0x5e69bc,_0xd80e93);_0xc2071d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x147a('0x5')](e,emitEvent(event));}}module[_0x147a('0x6')]=FaxMessageEvents;
\ No newline at end of file
+var _0x9bb8=['exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x19af51,_0x3834ac){var _0x997581=function(_0x4ba64c){while(--_0x4ba64c){_0x19af51['push'](_0x19af51['shift']());}};_0x997581(++_0x3834ac);}(_0x9bb8,0x1ae));var _0x89bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9bb8[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x89bb('0x0'));var FaxMessage=require(_0x89bb('0x1'))['db'][_0x89bb('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x89bb('0x3')](0x0);var events={'afterCreate':_0x89bb('0x4'),'afterUpdate':_0x89bb('0x5'),'afterDestroy':_0x89bb('0x6')};function emitEvent(_0x1af2d3){return function(_0xaa37b7,_0x26ecc2,_0x436902){FaxMessageEvents[_0x89bb('0x7')](_0x1af2d3+':'+_0xaa37b7['id'],_0xaa37b7);FaxMessageEvents['emit'](_0x1af2d3,_0xaa37b7);_0x436902(null);};}for(var e in events){if(events[_0x89bb('0x8')](e)){var event=events[e];FaxMessage[_0x89bb('0x9')](e,emitEvent(event));}}module[_0x89bb('0xa')]=FaxMessageEvents;
\ No newline at end of file
index a493035..50944f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5597=['createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','fti_fax_messages','models','get','toLowerCase','direction','out','isNil','FaxInteraction','then','update'];(function(_0x548f86,_0x50a063){var _0xd76591=function(_0x4be134){while(--_0x4be134){_0x548f86['push'](_0x548f86['shift']());}};_0xd76591(++_0x50a063);}(_0x5597,0x122));var _0x7559=function(_0x47e3a0,_0x3ec1cc){_0x47e3a0=_0x47e3a0-0x0;var _0x2e66e5=_0x5597[_0x47e3a0];return _0x2e66e5;};'use strict';var _=require(_0x7559('0x0'));var util=require(_0x7559('0x1'));var logger=require(_0x7559('0x2'))('api');var moment=require(_0x7559('0x3'));var BPromise=require(_0x7559('0x4'));var rp=require(_0x7559('0x5'));var fs=require('fs');var path=require(_0x7559('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7559('0x7'));module[_0x7559('0x8')]=function(_0x550a65,_0x29045b){return _0x550a65[_0x7559('0x9')](_0x7559('0xa'),attributes,{'tableName':_0x7559('0xb'),'paranoid':![],'indexes':[{'name':_0x7559('0xc'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1814c9,_0x50bded,_0x524c55){var _0x49a274=_0x550a65[_0x7559('0xd')];var _0x51e3c9=_0x1814c9[_0x7559('0xe')]({'plain':!![]});if(_0x51e3c9['direction'][_0x7559('0xf')]()==='in'||_0x51e3c9[_0x7559('0x10')][_0x7559('0xf')]()===_0x7559('0x11')&&!_0x51e3c9['secret']&&!_[_0x7559('0x12')](_0x51e3c9['UserId'])){_0x49a274[_0x7559('0x13')]['findOne']({'where':{'id':_0x51e3c9['FaxInteractionId']}})[_0x7559('0x14')](function(_0x2056ce){if(_0x2056ce){_0x2056ce[_0x7559('0x15')]({'lastMsgAt':_0x51e3c9[_0x7559('0x16')],'lastMsgDirection':_0x51e3c9[_0x7559('0x10')]['toLowerCase']()});}})[_0x7559('0x17')](function(_0xbef00b){console[_0x7559('0x18')](_0xbef00b);});}_0x524c55();}},'charset':_0x7559('0x19'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3a68=['then','update','createdAt','direction','catch','lodash','util','api','moment','bluebird','path','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','toLowerCase','secret','UserId','FaxInteraction','findOne'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x3a68,0x1d0));var _0x83a6=function(_0x4d9d03,_0x371dab){_0x4d9d03=_0x4d9d03-0x0;var _0x3269b4=_0x3a68[_0x4d9d03];return _0x3269b4;};'use strict';var _=require(_0x83a6('0x0'));var util=require(_0x83a6('0x1'));var logger=require('../../config/logger')(_0x83a6('0x2'));var moment=require(_0x83a6('0x3'));var BPromise=require(_0x83a6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x83a6('0x5'));var rimraf=require('rimraf');var config=require(_0x83a6('0x6'));var attributes=require(_0x83a6('0x7'));module[_0x83a6('0x8')]=function(_0xcd99c7,_0x1c7796){return _0xcd99c7[_0x83a6('0x9')](_0x83a6('0xa'),attributes,{'tableName':_0x83a6('0xb'),'paranoid':![],'indexes':[{'name':_0x83a6('0xc'),'fields':[_0x83a6('0xd')],'type':_0x83a6('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x40b99e,_0x5d7490,_0x16366d){var _0x4278e9=_0xcd99c7[_0x83a6('0xf')];var _0x5ba0e3=_0x40b99e[_0x83a6('0x10')]({'plain':!![]});if(_0x5ba0e3['direction'][_0x83a6('0x11')]()==='in'||_0x5ba0e3['direction'][_0x83a6('0x11')]()==='out'&&!_0x5ba0e3[_0x83a6('0x12')]&&!_['isNil'](_0x5ba0e3[_0x83a6('0x13')])){_0x4278e9[_0x83a6('0x14')][_0x83a6('0x15')]({'where':{'id':_0x5ba0e3['FaxInteractionId']}})[_0x83a6('0x16')](function(_0x488a0b){if(_0x488a0b){_0x488a0b[_0x83a6('0x17')]({'lastMsgAt':_0x5ba0e3[_0x83a6('0x18')],'lastMsgDirection':_0x5ba0e3[_0x83a6('0x19')]['toLowerCase']()});}})[_0x83a6('0x1a')](function(_0x25c449){console['error'](_0x25c449);});}_0x16366d();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0cdf100..a236295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','CreateFaxMessage','FaxMessage','create','body','raw','catch','UpdateFaxMessage','options','where','attributes','limit','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fd1,0x155));var _0x15fd=function(_0x5cf3dd,_0x5cdebb){_0x5cf3dd=_0x5cf3dd-0x0;var _0x3c5bea=_0x5fd1[_0x5cf3dd];return _0x3c5bea;};'use strict';var _=require(_0x15fd('0x0'));var util=require('util');var moment=require(_0x15fd('0x1'));var BPromise=require(_0x15fd('0x2'));var rs=require(_0x15fd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x15fd('0x4'));var logger=require(_0x15fd('0x5'))(_0x15fd('0x6'));var config=require('../../config/environment');var jayson=require(_0x15fd('0x7'));var client=jayson[_0x15fd('0x8')][_0x15fd('0x9')]({'port':0x232a});config[_0x15fd('0xa')]=_[_0x15fd('0xb')](config['redis'],{'host':_0x15fd('0xc'),'port':0x18eb});var socket=require(_0x15fd('0xd'))(new Redis(config[_0x15fd('0xa')]));require('./faxMessage.socket')[_0x15fd('0xe')](socket);function respondWithRpcPromise(_0x5c9c63,_0x3dfdbb,_0x250457){return new BPromise(function(_0x4c226a,_0x4883fd){return client['request'](_0x5c9c63,_0x250457)[_0x15fd('0xf')](function(_0x2a4d55){logger[_0x15fd('0x10')](_0x15fd('0x11'),_0x3dfdbb,_0x15fd('0x12'));logger[_0x15fd('0x13')](_0x15fd('0x14'),_0x3dfdbb,_0x15fd('0x12'),JSON[_0x15fd('0x15')](_0x2a4d55));if(_0x2a4d55['error']){if(_0x2a4d55['error']['code']===0x1f4){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);return _0x4883fd(_0x2a4d55[_0x15fd('0x16')][_0x15fd('0x17')]);}logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x2a4d55['error']['message']);return _0x4c226a(_0x2a4d55[_0x15fd('0x16')]['message']);}else{logger[_0x15fd('0x10')]('FaxMessage,\x20%s,\x20%s',_0x3dfdbb,_0x15fd('0x12'));_0x4c226a(_0x2a4d55[_0x15fd('0x18')][_0x15fd('0x17')]);}})['catch'](function(_0x367c36){logger[_0x15fd('0x16')](_0x15fd('0x11'),_0x3dfdbb,_0x367c36);_0x4883fd(_0x367c36);});});}exports[_0x15fd('0x19')]=function(_0x2fb919){var _0x36a90e=this;return new Promise(function(_0x3761db,_0x2f46f1){return db[_0x15fd('0x1a')][_0x15fd('0x1b')](_0x2fb919[_0x15fd('0x1c')],{'raw':_0x2fb919['options']?_0x2fb919['options'][_0x15fd('0x1d')]===undefined?!![]:![]:!![]})[_0x15fd('0xf')](function(_0x252a1c){logger[_0x15fd('0x10')](_0x15fd('0x19'),_0x2fb919);logger[_0x15fd('0x13')](_0x15fd('0x19'),_0x2fb919,JSON['stringify'](_0x252a1c));_0x3761db(_0x252a1c);})[_0x15fd('0x1e')](function(_0x2d19ac){logger[_0x15fd('0x16')]('CreateFaxMessage',_0x2d19ac[_0x15fd('0x17')],_0x2fb919);_0x2f46f1(_0x36a90e['error'](0x1f4,_0x2d19ac[_0x15fd('0x17')]));});});};exports[_0x15fd('0x1f')]=function(_0x21601d){var _0x4c9708=this;return new Promise(function(_0x16b87c,_0x1cbf2c){return db[_0x15fd('0x1a')]['update'](_0x21601d[_0x15fd('0x1c')],{'raw':_0x21601d['options']?_0x21601d[_0x15fd('0x20')][_0x15fd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x21')]||null:null,'attributes':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x22')]||null:null,'limit':_0x21601d[_0x15fd('0x20')]?_0x21601d[_0x15fd('0x20')][_0x15fd('0x23')]||null:null})['then'](function(_0x47c22c){logger[_0x15fd('0x10')]('UpdateFaxMessage',_0x21601d);logger[_0x15fd('0x13')](_0x15fd('0x1f'),_0x21601d,JSON['stringify'](_0x47c22c));_0x16b87c(_0x47c22c);})[_0x15fd('0x1e')](function(_0x197d15){logger['error'](_0x15fd('0x1f'),_0x197d15[_0x15fd('0x17')],_0x21601d);_0x1cbf2c(_0x4c9708[_0x15fd('0x16')](0x1f4,_0x197d15[_0x15fd('0x17')]));});});};
\ No newline at end of file
+var _0xd2ea=['../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','FaxMessage','create','body','options','raw','CreateFaxMessage','stringify','catch','UpdateFaxMessage','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5e19c6,_0x215180){var _0xdcf702=function(_0x5b5f5c){while(--_0x5b5f5c){_0x5e19c6['push'](_0x5e19c6['shift']());}};_0xdcf702(++_0x215180);}(_0xd2ea,0x15f));var _0xad2e=function(_0x22c71b,_0x30a205){_0x22c71b=_0x22c71b-0x0;var _0x2576d8=_0xd2ea[_0x22c71b];return _0x2576d8;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var moment=require(_0xad2e('0x2'));var BPromise=require(_0xad2e('0x3'));var rs=require(_0xad2e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad2e('0x5'))['db'];var utils=require(_0xad2e('0x6'));var logger=require(_0xad2e('0x7'))(_0xad2e('0x8'));var config=require(_0xad2e('0x9'));var jayson=require(_0xad2e('0xa'));var client=jayson[_0xad2e('0xb')]['http']({'port':0x232a});config[_0xad2e('0xc')]=_[_0xad2e('0xd')](config[_0xad2e('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xad2e('0xe'))(new Redis(config[_0xad2e('0xc')]));require('./faxMessage.socket')[_0xad2e('0xf')](socket);function respondWithRpcPromise(_0x51f575,_0x430443,_0x415a41){return new BPromise(function(_0x9879f2,_0x24c5da){return client['request'](_0x51f575,_0x415a41)[_0xad2e('0x10')](function(_0x5707a5){logger[_0xad2e('0x11')](_0xad2e('0x12'),_0x430443,_0xad2e('0x13'));logger[_0xad2e('0x14')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x430443,_0xad2e('0x13'),JSON['stringify'](_0x5707a5));if(_0x5707a5[_0xad2e('0x15')]){if(_0x5707a5['error']['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x430443,_0x5707a5[_0xad2e('0x15')][_0xad2e('0x16')]);return _0x24c5da(_0x5707a5[_0xad2e('0x15')][_0xad2e('0x16')]);}logger[_0xad2e('0x15')](_0xad2e('0x12'),_0x430443,_0x5707a5[_0xad2e('0x15')][_0xad2e('0x16')]);return _0x9879f2(_0x5707a5[_0xad2e('0x15')][_0xad2e('0x16')]);}else{logger[_0xad2e('0x11')](_0xad2e('0x12'),_0x430443,_0xad2e('0x13'));_0x9879f2(_0x5707a5[_0xad2e('0x17')][_0xad2e('0x16')]);}})['catch'](function(_0x245617){logger[_0xad2e('0x15')]('FaxMessage,\x20%s,\x20%s',_0x430443,_0x245617);_0x24c5da(_0x245617);});});}exports['CreateFaxMessage']=function(_0x48d8b5){var _0x4a4b2d=this;return new Promise(function(_0x18c38d,_0x293adc){return db[_0xad2e('0x18')][_0xad2e('0x19')](_0x48d8b5[_0xad2e('0x1a')],{'raw':_0x48d8b5[_0xad2e('0x1b')]?_0x48d8b5[_0xad2e('0x1b')][_0xad2e('0x1c')]===undefined?!![]:![]:!![]})[_0xad2e('0x10')](function(_0x154d54){logger[_0xad2e('0x11')](_0xad2e('0x1d'),_0x48d8b5);logger[_0xad2e('0x14')](_0xad2e('0x1d'),_0x48d8b5,JSON[_0xad2e('0x1e')](_0x154d54));_0x18c38d(_0x154d54);})[_0xad2e('0x1f')](function(_0x59630b){logger[_0xad2e('0x15')](_0xad2e('0x1d'),_0x59630b[_0xad2e('0x16')],_0x48d8b5);_0x293adc(_0x4a4b2d[_0xad2e('0x15')](0x1f4,_0x59630b[_0xad2e('0x16')]));});});};exports[_0xad2e('0x20')]=function(_0x1161d5){var _0x175055=this;return new Promise(function(_0xfd90a4,_0x50d446){return db[_0xad2e('0x18')]['update'](_0x1161d5[_0xad2e('0x1a')],{'raw':_0x1161d5[_0xad2e('0x1b')]?_0x1161d5[_0xad2e('0x1b')][_0xad2e('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1161d5[_0xad2e('0x1b')]?_0x1161d5[_0xad2e('0x1b')][_0xad2e('0x21')]||null:null,'attributes':_0x1161d5[_0xad2e('0x1b')]?_0x1161d5[_0xad2e('0x1b')][_0xad2e('0x22')]||null:null,'limit':_0x1161d5['options']?_0x1161d5[_0xad2e('0x1b')][_0xad2e('0x23')]||null:null})[_0xad2e('0x10')](function(_0x4379f4){logger[_0xad2e('0x11')](_0xad2e('0x20'),_0x1161d5);logger[_0xad2e('0x14')](_0xad2e('0x20'),_0x1161d5,JSON[_0xad2e('0x1e')](_0x4379f4));_0xfd90a4(_0x4379f4);})[_0xad2e('0x1f')](function(_0xcc4c66){logger['error'](_0xad2e('0x20'),_0xcc4c66['message'],_0x1161d5);_0x50d446(_0x175055[_0xad2e('0x15')](0x1f4,_0xcc4c66[_0xad2e('0x16')]));});});};
\ No newline at end of file
index 48698d4..a4b75ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e97=['remove','update','emit','register','length','faxMessage:','save'];(function(_0x48543d,_0x1c27b6){var _0x1384cb=function(_0x4fbd06){while(--_0x4fbd06){_0x48543d['push'](_0x48543d['shift']());}};_0x1384cb(++_0x1c27b6);}(_0x6e97,0x84));var _0x76e9=function(_0x29fd05,_0x28fe54){_0x29fd05=_0x29fd05-0x0;var _0x3bb02b=_0x6e97[_0x29fd05];return _0x3bb02b;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x76e9('0x0'),_0x76e9('0x1'),_0x76e9('0x2')];function createListener(_0x717006,_0x122043){return function(_0x60af51){_0x122043[_0x76e9('0x3')](_0x717006,_0x60af51);};}function removeListener(_0x5b06fc,_0x3ecf0c){return function(){FaxMessageEvents['removeListener'](_0x5b06fc,_0x3ecf0c);};}exports[_0x76e9('0x4')]=function(_0x3c0548){for(var _0x3bf07c=0x0,_0x5bb885=events[_0x76e9('0x5')];_0x3bf07c<_0x5bb885;_0x3bf07c++){var _0x2419b1=events[_0x3bf07c];var _0xac5512=createListener(_0x76e9('0x6')+_0x2419b1,_0x3c0548);FaxMessageEvents['on'](_0x2419b1,_0xac5512);}};
\ No newline at end of file
+var _0xe7a6=['removeListener','register','length','./faxMessage.events','update'];(function(_0x3c04db,_0x29cd5f){var _0x58459d=function(_0x3841f0){while(--_0x3841f0){_0x3c04db['push'](_0x3c04db['shift']());}};_0x58459d(++_0x29cd5f);}(_0xe7a6,0x1c0));var _0x6e7a=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xe7a6[_0x4565bf];return _0x5610ba;};'use strict';var FaxMessageEvents=require(_0x6e7a('0x0'));var events=['save','remove',_0x6e7a('0x1')];function createListener(_0x3556be,_0xbdb3f6){return function(_0x28926a){_0xbdb3f6['emit'](_0x3556be,_0x28926a);};}function removeListener(_0x2d5a28,_0x957d0d){return function(){FaxMessageEvents[_0x6e7a('0x2')](_0x2d5a28,_0x957d0d);};}exports[_0x6e7a('0x3')]=function(_0x2498dd){for(var _0x591024=0x0,_0x195950=events[_0x6e7a('0x4')];_0x591024<_0x195950;_0x591024++){var _0x38969f=events[_0x591024];var _0xb7df1f=createListener('faxMessage:'+_0x38969f,_0x2498dd);FaxMessageEvents['on'](_0x38969f,_0xb7df1f);}};
\ No newline at end of file
index 524c083..896cfed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49a=['put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','show','download','post','tracked','fax','create'];(function(_0xbcc806,_0x3c8f99){var _0x408099=function(_0x2757c1){while(--_0x2757c1){_0xbcc806['push'](_0xbcc806['shift']());}};_0x408099(++_0x3c8f99);}(_0xb49a,0xfb));var _0xab49=function(_0x89cb3a,_0x385fd1){_0x89cb3a=_0x89cb3a-0x0;var _0x407cf1=_0xb49a[_0x89cb3a];return _0x407cf1;};'use strict';var multer=require(_0xab49('0x0'));var util=require(_0xab49('0x1'));var path=require(_0xab49('0x2'));var timeout=require(_0xab49('0x3'));var express=require(_0xab49('0x4'));var router=express['Router']();var fs_extra=require(_0xab49('0x5'));var auth=require(_0xab49('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xab49('0x7'));router[_0xab49('0x8')]('/',auth[_0xab49('0x9')](),controller[_0xab49('0xa')]);router[_0xab49('0x8')](_0xab49('0xb'),auth[_0xab49('0x9')](),controller['describe']);router[_0xab49('0x8')](_0xab49('0xc'),auth[_0xab49('0x9')](),controller[_0xab49('0xd')]);router[_0xab49('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0xab49('0xe')]);router[_0xab49('0xf')]('/',auth[_0xab49('0x9')](),interaction[_0xab49('0x10')](_0xab49('0x11'),'faxmessage:create'),controller[_0xab49('0x12')]);router[_0xab49('0x13')](_0xab49('0xc'),auth[_0xab49('0x9')](),controller[_0xab49('0x14')]);router[_0xab49('0x13')](_0xab49('0x15'),auth[_0xab49('0x9')](),controller[_0xab49('0x16')]);router[_0xab49('0x13')](_0xab49('0x17'),auth['isAuthenticated'](),controller[_0xab49('0x18')]);router[_0xab49('0x19')](_0xab49('0xc'),auth[_0xab49('0x9')](),controller[_0xab49('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x39cb=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','index','/describe','isAuthenticated','/:id','show','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','path','express'];(function(_0x1df7b8,_0x2fe5e5){var _0x29d911=function(_0x340121){while(--_0x340121){_0x1df7b8['push'](_0x1df7b8['shift']());}};_0x29d911(++_0x2fe5e5);}(_0x39cb,0x1bd));var _0xb39c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x39cb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xb39c('0x0'));var path=require(_0xb39c('0x1'));var timeout=require('connect-timeout');var express=require(_0xb39c('0x2'));var router=express[_0xb39c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb39c('0x4'));var interaction=require(_0xb39c('0x5'));var config=require(_0xb39c('0x6'));var controller=require(_0xb39c('0x7'));router[_0xb39c('0x8')]('/',auth['isAuthenticated'](),controller[_0xb39c('0x9')]);router[_0xb39c('0x8')](_0xb39c('0xa'),auth[_0xb39c('0xb')](),controller['describe']);router['get'](_0xb39c('0xc'),auth[_0xb39c('0xb')](),controller[_0xb39c('0xd')]);router[_0xb39c('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xb39c('0xe')]('/',auth[_0xb39c('0xb')](),interaction[_0xb39c('0xf')](_0xb39c('0x10'),_0xb39c('0x11')),controller[_0xb39c('0x12')]);router[_0xb39c('0x13')](_0xb39c('0xc'),auth['isAuthenticated'](),controller[_0xb39c('0x14')]);router[_0xb39c('0x13')](_0xb39c('0x15'),auth['isAuthenticated'](),controller[_0xb39c('0x16')]);router[_0xb39c('0x13')](_0xb39c('0x17'),auth[_0xb39c('0xb')](),controller[_0xb39c('0x18')]);router[_0xb39c('0x19')](_0xb39c('0xc'),auth['isAuthenticated'](),controller[_0xb39c('0x1a')]);module[_0xb39c('0x1b')]=router;
\ No newline at end of file
index 9fee88d..42e562b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d37=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x45a36a,_0x5e4c3d){var _0x5b448c=function(_0x5945ab){while(--_0x5945ab){_0x45a36a['push'](_0x45a36a['shift']());}};_0x5b448c(++_0x5e4c3d);}(_0x6d37,0x18e));var _0x76d3=function(_0x5ae7f9,_0x48640b){_0x5ae7f9=_0x5ae7f9-0x0;var _0x5c77c9=_0x6d37[_0x5ae7f9];return _0x5c77c9;};'use strict';var Sequelize=require(_0x76d3('0x0'));module[_0x76d3('0x1')]={'name':{'type':Sequelize[_0x76d3('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x76d3('0x2')]},'timeout':{'type':Sequelize[_0x76d3('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x76d3('0x4')](_0x76d3('0x5'),_0x76d3('0x6'),_0x76d3('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x76d3('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x80a3=['rrmemory','beepall','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0x26617c,_0x40a991){var _0x11d61c=function(_0x32b8f0){while(--_0x32b8f0){_0x26617c['push'](_0x26617c['shift']());}};_0x11d61c(++_0x40a991);}(_0x80a3,0x1e6));var _0x380a=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0x80a3[_0x4bfac3];return _0x15f0f2;};'use strict';var Sequelize=require(_0x380a('0x0'));module[_0x380a('0x1')]={'name':{'type':Sequelize[_0x380a('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x380a('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x380a('0x3')](_0x380a('0x4'),_0x380a('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x380a('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 84d258f..096ce1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9616=['register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','FaxQueues','UserProfileResource','error','name','send','map','FaxQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','rows','catch','show','params','include','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','body','describe','getMembers','findOne','get','UserFaxQueue','FaxQueueId','findAll','User','UserId','faxPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','ids','Agents','online','voicePause','flatMap','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','every','TeamId','includes','union','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket'];(function(_0x496738,_0x3f1a9f){var _0xee1381=function(_0x4dc50c){while(--_0x4dc50c){_0x496738['push'](_0x496738['shift']());}};_0xee1381(++_0x3f1a9f);}(_0x9616,0x71));var _0x6961=function(_0x5dcb2f,_0x402ca3){_0x5dcb2f=_0x5dcb2f-0x0;var _0x2cf625=_0x9616[_0x5dcb2f];return _0x2cf625;};'use strict';var emlformat=require(_0x6961('0x0'));var rimraf=require(_0x6961('0x1'));var zipdir=require(_0x6961('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6961('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6961('0x4'));var util=require(_0x6961('0x5'));var path=require(_0x6961('0x6'));var sox=require(_0x6961('0x7'));var csv=require(_0x6961('0x8'));var ejs=require(_0x6961('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6961('0xa'));var squel=require(_0x6961('0xb'));var crypto=require(_0x6961('0xc'));var jsforce=require(_0x6961('0xd'));var deskjs=require(_0x6961('0xe'));var toCsv=require(_0x6961('0x8'));var querystring=require(_0x6961('0xf'));var Papa=require(_0x6961('0x10'));var Redis=require('ioredis');var authService=require(_0x6961('0x11'));var qs=require(_0x6961('0x12'));var as=require(_0x6961('0x13'));var hardwareService=require(_0x6961('0x14'));var logger=require(_0x6961('0x15'))(_0x6961('0x16'));var utils=require(_0x6961('0x17'));var config=require(_0x6961('0x18'));var licenseUtil=require(_0x6961('0x19'));var db=require(_0x6961('0x1a'))['db'];config[_0x6961('0x1b')]=_[_0x6961('0x1c')](config[_0x6961('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x6961('0x1d'))(new Redis(config['redis']));require(_0x6961('0x1e'))[_0x6961('0x1f')](socket);function respondWithStatusCode(_0x542ee0,_0x3b6bd9){_0x3b6bd9=_0x3b6bd9||0xcc;return function(_0x2d183f){if(_0x2d183f){return _0x542ee0[_0x6961('0x20')](_0x3b6bd9);}return _0x542ee0['status'](_0x3b6bd9)['end']();};}function respondWithResult(_0x2c7828,_0x3ac8d8){_0x3ac8d8=_0x3ac8d8||0xc8;return function(_0x7875e7){if(_0x7875e7){return _0x2c7828[_0x6961('0x21')](_0x3ac8d8)[_0x6961('0x22')](_0x7875e7);}};}function respondWithFilteredResult(_0x22f88b,_0x7d0821){return function(_0x51553e){if(_0x51553e){var _0x2f7ab2=typeof _0x7d0821[_0x6961('0x23')]===_0x6961('0x24')&&typeof _0x7d0821[_0x6961('0x25')]===_0x6961('0x24');var _0x35e0d8=_0x51553e[_0x6961('0x26')];var _0x14ca80=_0x2f7ab2?0x0:_0x7d0821[_0x6961('0x23')];var _0x1b74f9=_0x2f7ab2?_0x51553e[_0x6961('0x26')]:_0x7d0821[_0x6961('0x23')]+_0x7d0821['limit'];var _0x33d416;if(_0x1b74f9>=_0x35e0d8){_0x1b74f9=_0x35e0d8;_0x33d416=0xc8;}else{_0x33d416=0xce;}_0x22f88b[_0x6961('0x21')](_0x33d416);return _0x22f88b[_0x6961('0x27')](_0x6961('0x28'),_0x14ca80+'-'+_0x1b74f9+'/'+_0x35e0d8)['json'](_0x51553e);}return null;};}function patchUpdates(_0x43c0da){return function(_0x3248f6){try{jsonpatch[_0x6961('0x29')](_0x3248f6,_0x43c0da,!![]);}catch(_0xc9e3c1){return BPromise[_0x6961('0x2a')](_0xc9e3c1);}return _0x3248f6[_0x6961('0x2b')]();};}function saveUpdates(_0x20e7e1,_0x33a5aa){return function(_0x371036){if(_0x371036){return _0x371036[_0x6961('0x2c')](_0x20e7e1)[_0x6961('0x2d')](function(_0x5092b2){return _0x5092b2;});}return null;};}function removeEntity(_0x3c7922,_0x1dcdb5){return function(_0x1b5c83){if(_0x1b5c83){return _0x1b5c83[_0x6961('0x2e')]()[_0x6961('0x2d')](function(){var _0x202501=_0x1b5c83['get']({'plain':!![]});var _0x2ca18a=_0x6961('0x2f');return db[_0x6961('0x30')]['destroy']({'where':{'type':_0x2ca18a,'resourceId':_0x202501['id']}})['then'](function(){return _0x1b5c83;});})[_0x6961('0x2d')](function(){_0x3c7922[_0x6961('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x707dcd,_0x104845){return function(_0x5bbfc0){if(!_0x5bbfc0){_0x707dcd['sendStatus'](0x194);}return _0x5bbfc0;};}function handleError(_0x3ad4e3,_0x41ffbb){_0x41ffbb=_0x41ffbb||0x1f4;return function(_0x63d244){logger[_0x6961('0x31')](_0x63d244['stack']);if(_0x63d244[_0x6961('0x32')]){delete _0x63d244[_0x6961('0x32')];}_0x3ad4e3[_0x6961('0x21')](_0x41ffbb)[_0x6961('0x33')](_0x63d244);};}exports['index']=function(_0x3d1f43,_0xd200b5){var _0x284c54={},_0x16f1c6={},_0x598c4f={'count':0x0,'rows':[]};var _0x18680c=_[_0x6961('0x34')](db[_0x6961('0x35')][_0x6961('0x36')],function(_0x3aaca5){return{'name':_0x3aaca5[_0x6961('0x37')],'type':_0x3aaca5['type'][_0x6961('0x38')]};});_0x16f1c6[_0x6961('0x39')]=_[_0x6961('0x34')](_0x18680c,_0x6961('0x32'));_0x16f1c6[_0x6961('0x3a')]=_[_0x6961('0x3b')](_0x3d1f43[_0x6961('0x3a')]);_0x16f1c6[_0x6961('0x3c')]=_[_0x6961('0x3d')](_0x16f1c6[_0x6961('0x39')],_0x16f1c6['query']);_0x284c54[_0x6961('0x3e')]=_[_0x6961('0x3d')](_0x16f1c6['model'],qs['fields'](_0x3d1f43['query'][_0x6961('0x3f')]));_0x284c54[_0x6961('0x3e')]=_0x284c54[_0x6961('0x3e')][_0x6961('0x40')]?_0x284c54[_0x6961('0x3e')]:_0x16f1c6['model'];if(!_0x3d1f43[_0x6961('0x3a')][_0x6961('0x41')](_0x6961('0x42'))){_0x284c54[_0x6961('0x25')]=qs[_0x6961('0x25')](_0x3d1f43['query'][_0x6961('0x25')]);_0x284c54[_0x6961('0x23')]=qs['offset'](_0x3d1f43[_0x6961('0x3a')][_0x6961('0x23')]);}_0x284c54[_0x6961('0x43')]=qs['sort'](_0x3d1f43[_0x6961('0x3a')][_0x6961('0x44')]);_0x284c54[_0x6961('0x45')]=qs[_0x6961('0x3c')](_[_0x6961('0x46')](_0x3d1f43[_0x6961('0x3a')],_0x16f1c6['filters']),_0x18680c);if(_0x3d1f43[_0x6961('0x3a')]['filter']){_0x284c54['where']=_[_0x6961('0x47')](_0x284c54[_0x6961('0x45')],{'$or':_[_0x6961('0x34')](_0x18680c,function(_0x2f2016){if(_0x2f2016['type']!==_0x6961('0x48')){var _0x428fb8={};_0x428fb8[_0x2f2016[_0x6961('0x32')]]={'$like':'%'+_0x3d1f43[_0x6961('0x3a')][_0x6961('0x49')]+'%'};return _0x428fb8;}})});}_0x284c54=_['merge']({},_0x284c54,_0x3d1f43['options']);var _0x15e571={'where':_0x284c54[_0x6961('0x45')]};return db[_0x6961('0x35')]['count'](_0x15e571)[_0x6961('0x2d')](function(_0x31957f){_0x598c4f[_0x6961('0x26')]=_0x31957f;if(_0x3d1f43[_0x6961('0x3a')][_0x6961('0x4a')]){_0x284c54['include']=[{'all':!![]}];}return db['FaxQueue']['findAll'](_0x284c54);})[_0x6961('0x2d')](function(_0x2ab194){_0x598c4f[_0x6961('0x4b')]=_0x2ab194;return _0x598c4f;})[_0x6961('0x2d')](respondWithFilteredResult(_0xd200b5,_0x284c54))[_0x6961('0x4c')](handleError(_0xd200b5,null));};exports[_0x6961('0x4d')]=function(_0xaf32c0,_0x1800f6){var _0x507dd8={'raw':!![],'where':{'id':_0xaf32c0[_0x6961('0x4e')]['id']}},_0x13b505={};_0x13b505['model']=_[_0x6961('0x3b')](db[_0x6961('0x35')]['rawAttributes']);_0x13b505[_0x6961('0x3a')]=_[_0x6961('0x3b')](_0xaf32c0[_0x6961('0x3a')]);_0x13b505[_0x6961('0x3c')]=_[_0x6961('0x3d')](_0x13b505[_0x6961('0x39')],_0x13b505['query']);_0x507dd8[_0x6961('0x3e')]=_[_0x6961('0x3d')](_0x13b505[_0x6961('0x39')],qs[_0x6961('0x3f')](_0xaf32c0[_0x6961('0x3a')][_0x6961('0x3f')]));_0x507dd8[_0x6961('0x3e')]=_0x507dd8[_0x6961('0x3e')][_0x6961('0x40')]?_0x507dd8['attributes']:_0x13b505['model'];if(_0xaf32c0[_0x6961('0x3a')]['includeAll']){_0x507dd8[_0x6961('0x4f')]=[{'all':!![]}];}_0x507dd8=_['merge']({},_0x507dd8,_0xaf32c0[_0x6961('0x50')]);return db['FaxQueue']['find'](_0x507dd8)['then'](handleEntityNotFound(_0x1800f6,null))[_0x6961('0x2d')](respondWithResult(_0x1800f6,null))[_0x6961('0x4c')](handleError(_0x1800f6,null));};exports[_0x6961('0x51')]=function(_0x3f2b65,_0x4c5e20){return db['FaxQueue']['create'](_0x3f2b65['body'],{})[_0x6961('0x2d')](function(_0x213ddf){var _0xb57d6c=_0x3f2b65['user']['get']({'plain':!![]});if(!_0xb57d6c)throw new Error(_0x6961('0x52'));if(_0xb57d6c[_0x6961('0x53')]===_0x6961('0x54')){var _0x5d271c=_0x213ddf['get']({'plain':!![]});var _0x109144=_0x6961('0x2f');return db[_0x6961('0x55')][_0x6961('0x56')]({'where':{'name':_0x109144,'userProfileId':_0xb57d6c['userProfileId']},'raw':!![]})[_0x6961('0x2d')](function(_0x522b81){if(_0x522b81&&_0x522b81[_0x6961('0x57')]===0x0){return db[_0x6961('0x30')][_0x6961('0x51')]({'name':_0x5d271c[_0x6961('0x32')],'resourceId':_0x5d271c['id'],'type':_0x522b81[_0x6961('0x32')],'sectionId':_0x522b81['id']},{})[_0x6961('0x2d')](function(){return _0x213ddf;});}else{return _0x213ddf;}})['catch'](function(_0x2e68aa){logger[_0x6961('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e68aa);throw _0x2e68aa;});}return _0x213ddf;})[_0x6961('0x2d')](respondWithResult(_0x4c5e20,0xc9))[_0x6961('0x4c')](handleError(_0x4c5e20,null));};exports[_0x6961('0x2c')]=function(_0x120358,_0x2e3410){if(_0x120358[_0x6961('0x58')]['id']){delete _0x120358[_0x6961('0x58')]['id'];}return db[_0x6961('0x35')]['find']({'where':{'id':_0x120358['params']['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0x2e3410,null))[_0x6961('0x2d')](saveUpdates(_0x120358[_0x6961('0x58')],null))[_0x6961('0x2d')](respondWithResult(_0x2e3410,null))[_0x6961('0x4c')](handleError(_0x2e3410,null));};exports['destroy']=function(_0x4ae5a0,_0x5337f5){return db[_0x6961('0x35')]['find']({'where':{'id':_0x4ae5a0[_0x6961('0x4e')]['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0x5337f5,null))[_0x6961('0x2d')](removeEntity(_0x5337f5,null))[_0x6961('0x4c')](handleError(_0x5337f5,null));};exports['describe']=function(_0xde2e03,_0x1234b8){return db[_0x6961('0x35')][_0x6961('0x59')]()[_0x6961('0x2d')](respondWithResult(_0x1234b8,null))[_0x6961('0x4c')](handleError(_0x1234b8,null));};exports[_0x6961('0x5a')]=function(_0x21a4f9,_0x10dd21,_0x2e6b5c){var _0x1d29a9={'raw':!![],'where':{}},_0x29d8f0={},_0x37fbfb;return db[_0x6961('0x35')][_0x6961('0x5b')]({'where':{'id':_0x21a4f9[_0x6961('0x4e')]['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0x10dd21,null))[_0x6961('0x2d')](function(_0x20f969){if(_0x20f969){_0x37fbfb=_0x20f969[_0x6961('0x5c')]({'plain':!![]});_0x29d8f0[_0x6961('0x39')]=_[_0x6961('0x3b')](db[_0x6961('0x5d')][_0x6961('0x36')]);_0x29d8f0[_0x6961('0x3a')]=_[_0x6961('0x3b')](_0x21a4f9[_0x6961('0x3a')]);_0x29d8f0[_0x6961('0x3c')]=_['intersection'](_0x29d8f0[_0x6961('0x39')],_0x29d8f0[_0x6961('0x3a')]);_0x1d29a9['attributes']=_[_0x6961('0x3d')](_0x29d8f0['model'],qs[_0x6961('0x3f')](_0x21a4f9[_0x6961('0x3a')][_0x6961('0x3f')]));_0x1d29a9[_0x6961('0x3e')]=_0x1d29a9[_0x6961('0x3e')][_0x6961('0x40')]?_0x1d29a9[_0x6961('0x3e')]:_0x29d8f0[_0x6961('0x39')];if(!_0x21a4f9['query'][_0x6961('0x41')](_0x6961('0x42'))){_0x1d29a9[_0x6961('0x25')]=qs['limit'](_0x21a4f9[_0x6961('0x3a')][_0x6961('0x25')]);_0x1d29a9[_0x6961('0x23')]=qs[_0x6961('0x23')](_0x21a4f9[_0x6961('0x3a')]['offset']);}_0x1d29a9['order']=qs[_0x6961('0x44')](_0x21a4f9[_0x6961('0x3a')]['sort']);_0x1d29a9['where']=qs[_0x6961('0x3c')](_['pick'](_0x21a4f9[_0x6961('0x3a')],_0x29d8f0[_0x6961('0x3c')]));_0x1d29a9[_0x6961('0x45')][_0x6961('0x5e')]=_0x20f969['id'];if(_0x21a4f9['query']['filter']){_0x1d29a9['where']=_[_0x6961('0x47')](_0x1d29a9[_0x6961('0x45')],{'$or':_['map'](_0x1d29a9[_0x6961('0x3e')],function(_0x4b1553){var _0x10288f={};_0x10288f[_0x4b1553]={'$like':'%'+_0x21a4f9[_0x6961('0x3a')][_0x6961('0x49')]+'%'};return _0x10288f;})});}_0x1d29a9=_[_0x6961('0x47')]({},_0x1d29a9,_0x21a4f9[_0x6961('0x50')]);return db[_0x6961('0x5d')][_0x6961('0x5f')](_0x1d29a9);}})[_0x6961('0x2d')](function(_0x43d444){if(_0x43d444){return db[_0x6961('0x60')]['findAndCountAll']({'where':{'id':_['map'](_0x43d444,_0x6961('0x61')),'role':'agent'},'attributes':['id',_0x6961('0x32'),_0x6961('0x62'),'updatedAt',_0x6961('0x63')]});}})[_0x6961('0x2d')](function(_0x1e8997){if(_0x1e8997){return{'count':_0x1e8997[_0x6961('0x26')],'rows':_['map'](_0x1e8997[_0x6961('0x4b')],function(_0x2e8b5d){return{'membername':_0x2e8b5d[_0x6961('0x32')],'UserId':_0x2e8b5d['id'],'queue_name':_0x37fbfb[_0x6961('0x32')],'FaxQueueId':_0x37fbfb['id'],'interface':util[_0x6961('0x64')](_0x6961('0x65'),_0x6961('0x66'),_0x2e8b5d[_0x6961('0x32')]),'penalty':0x0,'paused':_0x2e8b5d[_0x6961('0x62')],'createdAt':_0x2e8b5d['createdAt'],'updatedAt':_0x2e8b5d[_0x6961('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6961('0x2d')](respondWithFilteredResult(_0x10dd21,_0x1d29a9))[_0x6961('0x4c')](handleError(_0x10dd21,null));};exports[_0x6961('0x68')]=function(_0x2fa222,_0xa49f1f,_0x432f4c){var _0x16c4f8={};var _0x2eaab5={};var _0x5d7526;var _0x5c554b;return db['FaxQueue'][_0x6961('0x5b')]({'where':{'id':_0x2fa222[_0x6961('0x4e')]['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0xa49f1f,null))[_0x6961('0x2d')](function(_0x21b00c){if(_0x21b00c){_0x5d7526=_0x21b00c;_0x2eaab5['model']=_['keys'](db[_0x6961('0x69')][_0x6961('0x36')]);_0x2eaab5[_0x6961('0x3a')]=_['keys'](_0x2fa222[_0x6961('0x3a')]);_0x2eaab5[_0x6961('0x3c')]=_[_0x6961('0x3d')](_0x2eaab5[_0x6961('0x39')],_0x2eaab5[_0x6961('0x3a')]);_0x16c4f8[_0x6961('0x3e')]=_[_0x6961('0x3d')](_0x2eaab5[_0x6961('0x39')],qs[_0x6961('0x3f')](_0x2fa222[_0x6961('0x3a')][_0x6961('0x3f')]));_0x16c4f8[_0x6961('0x3e')]=_0x16c4f8[_0x6961('0x3e')][_0x6961('0x40')]?_0x16c4f8[_0x6961('0x3e')]:_0x2eaab5[_0x6961('0x39')];_0x16c4f8['order']=qs['sort'](_0x2fa222[_0x6961('0x3a')][_0x6961('0x44')]);_0x16c4f8[_0x6961('0x45')]=qs['filters'](_['pick'](_0x2fa222[_0x6961('0x3a')],_0x2eaab5[_0x6961('0x3c')]));if(_0x2fa222[_0x6961('0x3a')][_0x6961('0x49')]){_0x16c4f8[_0x6961('0x45')]=_[_0x6961('0x47')](_0x16c4f8['where'],{'$or':_[_0x6961('0x34')](_0x16c4f8[_0x6961('0x3e')],function(_0x34d124){var _0x16d541={};_0x16d541[_0x34d124]={'$like':'%'+_0x2fa222[_0x6961('0x3a')][_0x6961('0x49')]+'%'};return _0x16d541;})});}_0x16c4f8=_['merge']({},_0x16c4f8,_0x2fa222[_0x6961('0x50')]);return _0x5d7526['getTeams'](_0x16c4f8);}})[_0x6961('0x2d')](function(_0x1ecee1){if(_0x1ecee1){_0x5c554b=_0x1ecee1['length'];if(!_0x2fa222[_0x6961('0x3a')][_0x6961('0x41')](_0x6961('0x42'))){_0x16c4f8[_0x6961('0x25')]=qs['limit'](_0x2fa222[_0x6961('0x3a')]['limit']);_0x16c4f8[_0x6961('0x23')]=qs[_0x6961('0x23')](_0x2fa222[_0x6961('0x3a')][_0x6961('0x23')]);}return _0x5d7526[_0x6961('0x68')](_0x16c4f8);}})[_0x6961('0x2d')](function(_0x23c6ea){if(_0x23c6ea){return _0x23c6ea?{'count':_0x5c554b,'rows':_0x23c6ea}:null;}})[_0x6961('0x2d')](respondWithResult(_0xa49f1f,null))[_0x6961('0x4c')](handleError(_0xa49f1f,null));};exports['addTeams']=function(_0x450f1d,_0x4e3203,_0x385b63){var _0x2f8994=_0x450f1d['body'][_0x6961('0x6a')];return db[_0x6961('0x69')]['findAll']({'where':{'id':_0x2f8994},'attributes':['id'],'include':[{'model':db['User'],'as':_0x6961('0x6b'),'attributes':['id','name',_0x6961('0x6c'),_0x6961('0x6d'),'interface'],'raw':!![]}]})[_0x6961('0x2d')](function(_0xb7236a){if(_0xb7236a){var _0x41318f=_[_0x6961('0x6e')](_0xb7236a,function(_0xf214d2){var _0x9098bc=_0xf214d2[_0x6961('0x5c')]({'plain':!![]});return _0x9098bc[_0x6961('0x6b')];});return db['FaxQueue'][_0x6961('0x56')]({'where':{'id':_0x450f1d['params']['id']}})[_0x6961('0x2d')](function(_0x3ea340){return db[_0x6961('0x6f')][_0x6961('0x70')](function(_0xd487c5){return _0x3ea340[_0x6961('0x71')](_0x2f8994,{'transaction':_0xd487c5})[_0x6961('0x2d')](function(){return BPromise[_0x6961('0x72')](_0x41318f,function(_0x5b178c){return db[_0x6961('0x5d')][_0x6961('0x73')]({'where':{'UserId':_0x5b178c['id'],'FaxQueueId':_0x450f1d[_0x6961('0x4e')]['id']},'transaction':_0xd487c5});});})['then'](function(){_0x41318f[_0x6961('0x74')](function(_0x22374c){socket[_0x6961('0x75')]('userFaxQueue:save',{'UserId':_0x22374c['id'],'FaxQueueId':_0x3ea340['id']});});});});});}})[_0x6961('0x2d')](respondWithStatusCode(_0x4e3203,null))[_0x6961('0x4c')](handleError(_0x4e3203,null));};exports[_0x6961('0x76')]=function(_0xcc4454,_0x196296,_0x774c64){return db[_0x6961('0x69')][_0x6961('0x5f')]({'where':{'id':_0xcc4454[_0x6961('0x3a')][_0x6961('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x6961('0x60')],'as':_0x6961('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x6961('0x2d')](handleEntityNotFound(_0x196296,null))[_0x6961('0x2d')](function(_0x54c591){var _0x22ec37=_[_0x6961('0x34')](_0x54c591,'id');var _0x91e414=[];var _0x5ade46=[];var _0x2ad49f=squel[_0x6961('0x77')]();_0x2ad49f[_0x6961('0x78')](_0x6961('0x79'))[_0x6961('0x7a')](_0x6961('0x7b'),'tq')[_0x6961('0x7c')](_0x6961('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x6961('0x45')](_0x6961('0x7e'),_0xcc4454['params']['id']);for(var _0x317d46=0x0;_0x317d46<_0x54c591[_0x6961('0x40')];_0x317d46+=0x1){let _0x82c89f=_0x54c591[_0x317d46];for(var _0x3a877f=0x0;_0x3a877f<_0x82c89f['Agents']['length'];_0x3a877f+=0x1){let _0x2cb8d5=_0x82c89f[_0x6961('0x6b')][_0x3a877f];var _0x147c15=_0x2ad49f[_0x6961('0x7f')]();_0x147c15[_0x6961('0x45')](_0x6961('0x80'),_0x2cb8d5['id']);_0x5ade46['push'](db[_0x6961('0x6f')][_0x6961('0x3a')](_0x147c15[_0x6961('0x81')](),{'type':db[_0x6961('0x6f')]['QueryTypes']['SELECT']})[_0x6961('0x2d')](function(_0x42dab5){if(_0x42dab5['length']===0x1){return _0x2cb8d5['id'];}else{var _0x385124=_[_0x6961('0x82')](_[_0x6961('0x34')](_0x42dab5,_0x6961('0x83')),function(_0x14f156){return _[_0x6961('0x84')](_0x22ec37,_0x14f156);});if(_0x385124){return _0x2cb8d5['id'];}}}));}}return BPromise['all'](_0x5ade46)[_0x6961('0x2d')](function(_0x5bc4ad){_0x91e414=_(_0x91e414)[_0x6961('0x85')](_0x5bc4ad)['compact']()[_0x6961('0x86')]();return db['FaxQueue'][_0x6961('0x56')]({'where':{'id':_0xcc4454['params']['id']}})['then'](function(_0x2bbd78){return db[_0x6961('0x6f')][_0x6961('0x70')](function(_0x55818f){return _0x2bbd78[_0x6961('0x76')](_0xcc4454[_0x6961('0x3a')][_0x6961('0x6a')],{'transaction':_0x55818f})[_0x6961('0x2d')](function(){if(!_[_0x6961('0x87')](_0x91e414)){return _0x2bbd78[_0x6961('0x88')](_0x91e414,{'transaction':_0x55818f});}})[_0x6961('0x2d')](function(){_0x91e414[_0x6961('0x74')](function(_0x3bb04e){socket[_0x6961('0x75')](_0x6961('0x89'),{'UserId':_0x3bb04e,'FaxQueueId':_0x2bbd78['id']});});});});});});})[_0x6961('0x2d')](respondWithStatusCode(_0x196296,null))[_0x6961('0x4c')](handleError(_0x196296,null));};exports[_0x6961('0x8a')]=function(_0x3ca4fb,_0x54a5f4,_0x28b879){return db[_0x6961('0x35')][_0x6961('0x56')]({'where':{'id':_0x3ca4fb['params']['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0x54a5f4,null))['then'](function(_0x2c887c){if(_0x2c887c){return _0x2c887c[_0x6961('0x8a')](_0x3ca4fb['body']['ids'],_[_0x6961('0x8b')](_0x3ca4fb[_0x6961('0x58')],[_0x6961('0x6a'),'id'])||{})[_0x6961('0x8c')](function(_0x53338a){for(var _0x1b74fe=0x0;_0x1b74fe<_0x3ca4fb[_0x6961('0x58')]['ids'][_0x6961('0x40')];_0x1b74fe+=0x1){socket['emit'](_0x6961('0x8d'),{'UserId':Number(_0x3ca4fb[_0x6961('0x58')][_0x6961('0x6a')][_0x1b74fe]),'FaxQueueId':Number(_0x3ca4fb[_0x6961('0x4e')]['id'])});}return _0x53338a;});}})['then'](respondWithResult(_0x54a5f4,null))[_0x6961('0x4c')](handleError(_0x54a5f4,null));};exports[_0x6961('0x88')]=function(_0x44cd3a,_0x304e9b,_0x49d5c3){return db[_0x6961('0x35')][_0x6961('0x56')]({'where':{'id':_0x44cd3a[_0x6961('0x4e')]['id']}})[_0x6961('0x2d')](handleEntityNotFound(_0x304e9b,null))['then'](function(_0x22f3a4){if(_0x22f3a4){return _0x22f3a4[_0x6961('0x88')](_0x44cd3a[_0x6961('0x3a')]['ids'])[_0x6961('0x2d')](function(){if(_[_0x6961('0x8e')](_0x44cd3a[_0x6961('0x3a')][_0x6961('0x6a')])){for(var _0x3d118c=0x0;_0x3d118c<_0x44cd3a[_0x6961('0x3a')]['ids'][_0x6961('0x40')];_0x3d118c+=0x1){socket['emit'](_0x6961('0x89'),{'UserId':Number(_0x44cd3a[_0x6961('0x3a')][_0x6961('0x6a')][_0x3d118c]),'FaxQueueId':Number(_0x44cd3a[_0x6961('0x4e')]['id'])});}}else{socket[_0x6961('0x75')](_0x6961('0x89'),{'UserId':Number(_0x44cd3a['query'][_0x6961('0x6a')]),'FaxQueueId':Number(_0x44cd3a[_0x6961('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x304e9b,null))['catch'](handleError(_0x304e9b,null));};exports[_0x6961('0x8f')]=function(_0x1b6e1f,_0x15ea42,_0x2153ed){var _0x442863={};var _0x5717e4={};var _0x392073;var _0x2a6a78;return db[_0x6961('0x35')][_0x6961('0x5b')]({'where':{'id':_0x1b6e1f[_0x6961('0x4e')]['id']}})['then'](handleEntityNotFound(_0x15ea42,null))[_0x6961('0x2d')](function(_0x38e359){if(_0x38e359){_0x392073=_0x38e359;_0x5717e4[_0x6961('0x39')]=_['keys'](db['User'][_0x6961('0x36')]);_0x5717e4[_0x6961('0x3a')]=_['keys'](_0x1b6e1f[_0x6961('0x3a')]);_0x5717e4[_0x6961('0x3c')]=_['intersection'](_0x5717e4['model'],_0x5717e4[_0x6961('0x3a')]);_0x442863[_0x6961('0x3e')]=_[_0x6961('0x3d')](_0x5717e4[_0x6961('0x39')],qs[_0x6961('0x3f')](_0x1b6e1f['query'][_0x6961('0x3f')]));_0x442863['attributes']=_0x442863[_0x6961('0x3e')][_0x6961('0x40')]?_0x442863['attributes']:_0x5717e4[_0x6961('0x39')];_0x442863[_0x6961('0x43')]=qs[_0x6961('0x44')](_0x1b6e1f['query'][_0x6961('0x44')]);_0x442863[_0x6961('0x45')]=qs[_0x6961('0x3c')](_[_0x6961('0x46')](_0x1b6e1f[_0x6961('0x3a')],_0x5717e4[_0x6961('0x3c')]));if(_0x1b6e1f[_0x6961('0x3a')]['filter']){_0x442863[_0x6961('0x45')]=_['merge'](_0x442863[_0x6961('0x45')],{'$or':_[_0x6961('0x34')](_0x442863[_0x6961('0x3e')],function(_0x54fd10){var _0x15bde3={};_0x15bde3[_0x54fd10]={'$like':'%'+_0x1b6e1f['query'][_0x6961('0x49')]+'%'};return _0x15bde3;})});}_0x442863=_[_0x6961('0x47')]({},_0x442863,_0x1b6e1f[_0x6961('0x50')]);return _0x392073['getAgents'](_0x442863);}})['then'](function(_0x1b4964){if(_0x1b4964){_0x2a6a78=_0x1b4964[_0x6961('0x40')];if(!_0x1b6e1f[_0x6961('0x3a')][_0x6961('0x41')](_0x6961('0x42'))){_0x442863['limit']=qs[_0x6961('0x25')](_0x1b6e1f[_0x6961('0x3a')][_0x6961('0x25')]);_0x442863[_0x6961('0x23')]=qs[_0x6961('0x23')](_0x1b6e1f['query']['offset']);}return _0x392073[_0x6961('0x8f')](_0x442863);}})[_0x6961('0x2d')](function(_0xb9e1fd){if(_0xb9e1fd){return _0xb9e1fd?{'count':_0x2a6a78,'rows':_0xb9e1fd}:null;}})[_0x6961('0x2d')](respondWithResult(_0x15ea42,null))['catch'](handleError(_0x15ea42,null));};
\ No newline at end of file
+var _0x6ace=['hasOwnProperty','FaxQueueId','User','findAndCountAll','UserId','faxPause','updatedAt','createdAt','format','SIP','Team','getTeams','addTeams','ids','Agents','voicePause','interface','sequelize','transaction','each','forEach','emit','userFaxQueue:save','removeTeams','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','every','all','union','compact','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','end','status','undefined','limit','offset','set','Content-Range','apply','save','destroy','then','get','FaxQueues','UserProfileResource','stack','name','send','map','FaxQueue','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserFaxQueue'];(function(_0x597009,_0x254949){var _0x4e88bd=function(_0x33832e){while(--_0x33832e){_0x597009['push'](_0x597009['shift']());}};_0x4e88bd(++_0x254949);}(_0x6ace,0x13b));var _0xe6ac=function(_0x1d7fab,_0x3dfa49){_0x1d7fab=_0x1d7fab-0x0;var _0x1d27f0=_0x6ace[_0x1d7fab];return _0x1d27f0;};'use strict';var emlformat=require(_0xe6ac('0x0'));var rimraf=require(_0xe6ac('0x1'));var zipdir=require(_0xe6ac('0x2'));var jsonpatch=require(_0xe6ac('0x3'));var rp=require('request-promise');var moment=require(_0xe6ac('0x4'));var BPromise=require(_0xe6ac('0x5'));var Mustache=require(_0xe6ac('0x6'));var util=require(_0xe6ac('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe6ac('0x8'));var fs=require('fs');var fs_extra=require(_0xe6ac('0x9'));var _=require(_0xe6ac('0xa'));var squel=require(_0xe6ac('0xb'));var crypto=require(_0xe6ac('0xc'));var jsforce=require(_0xe6ac('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe6ac('0xe'));var Papa=require(_0xe6ac('0xf'));var Redis=require(_0xe6ac('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe6ac('0x11'));var as=require(_0xe6ac('0x12'));var hardwareService=require(_0xe6ac('0x13'));var logger=require(_0xe6ac('0x14'))('api');var utils=require(_0xe6ac('0x15'));var config=require(_0xe6ac('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe6ac('0x17')]=_['defaults'](config[_0xe6ac('0x17')],{'host':_0xe6ac('0x18'),'port':0x18eb});var socket=require(_0xe6ac('0x19'))(new Redis(config[_0xe6ac('0x17')]));require(_0xe6ac('0x1a'))[_0xe6ac('0x1b')](socket);function respondWithStatusCode(_0x495b32,_0x274edc){_0x274edc=_0x274edc||0xcc;return function(_0xe15e18){if(_0xe15e18){return _0x495b32[_0xe6ac('0x1c')](_0x274edc);}return _0x495b32['status'](_0x274edc)[_0xe6ac('0x1d')]();};}function respondWithResult(_0x2f6c65,_0x31fbd5){_0x31fbd5=_0x31fbd5||0xc8;return function(_0x3a95d3){if(_0x3a95d3){return _0x2f6c65[_0xe6ac('0x1e')](_0x31fbd5)['json'](_0x3a95d3);}};}function respondWithFilteredResult(_0x420531,_0x33764e){return function(_0x45f67b){if(_0x45f67b){var _0x55f640=typeof _0x33764e['offset']===_0xe6ac('0x1f')&&typeof _0x33764e[_0xe6ac('0x20')]==='undefined';var _0x183dd4=_0x45f67b['count'];var _0xb4877f=_0x55f640?0x0:_0x33764e[_0xe6ac('0x21')];var _0x34874b=_0x55f640?_0x45f67b['count']:_0x33764e[_0xe6ac('0x21')]+_0x33764e[_0xe6ac('0x20')];var _0x2e84c;if(_0x34874b>=_0x183dd4){_0x34874b=_0x183dd4;_0x2e84c=0xc8;}else{_0x2e84c=0xce;}_0x420531[_0xe6ac('0x1e')](_0x2e84c);return _0x420531[_0xe6ac('0x22')](_0xe6ac('0x23'),_0xb4877f+'-'+_0x34874b+'/'+_0x183dd4)['json'](_0x45f67b);}return null;};}function patchUpdates(_0x439ef0){return function(_0x38c829){try{jsonpatch[_0xe6ac('0x24')](_0x38c829,_0x439ef0,!![]);}catch(_0x302f5a){return BPromise['reject'](_0x302f5a);}return _0x38c829[_0xe6ac('0x25')]();};}function saveUpdates(_0x2d8cd0,_0x16b457){return function(_0x163fc4){if(_0x163fc4){return _0x163fc4['update'](_0x2d8cd0)['then'](function(_0x146615){return _0x146615;});}return null;};}function removeEntity(_0x7d3412,_0x594986){return function(_0x1f8c79){if(_0x1f8c79){return _0x1f8c79[_0xe6ac('0x26')]()[_0xe6ac('0x27')](function(){var _0x41a5c1=_0x1f8c79[_0xe6ac('0x28')]({'plain':!![]});var _0x398196=_0xe6ac('0x29');return db[_0xe6ac('0x2a')][_0xe6ac('0x26')]({'where':{'type':_0x398196,'resourceId':_0x41a5c1['id']}})['then'](function(){return _0x1f8c79;});})[_0xe6ac('0x27')](function(){_0x7d3412[_0xe6ac('0x1e')](0xcc)[_0xe6ac('0x1d')]();});}};}function handleEntityNotFound(_0x44b0ea,_0x58f01b){return function(_0xb252a2){if(!_0xb252a2){_0x44b0ea[_0xe6ac('0x1c')](0x194);}return _0xb252a2;};}function handleError(_0x256dda,_0x54611c){_0x54611c=_0x54611c||0x1f4;return function(_0x265149){logger['error'](_0x265149[_0xe6ac('0x2b')]);if(_0x265149[_0xe6ac('0x2c')]){delete _0x265149['name'];}_0x256dda[_0xe6ac('0x1e')](_0x54611c)[_0xe6ac('0x2d')](_0x265149);};}exports['index']=function(_0x1390bb,_0x383240){var _0x4c6f44={},_0x3e8b0f={},_0x1a87ca={'count':0x0,'rows':[]};var _0x110e83=_[_0xe6ac('0x2e')](db[_0xe6ac('0x2f')][_0xe6ac('0x30')],function(_0x41e461){return{'name':_0x41e461[_0xe6ac('0x31')],'type':_0x41e461[_0xe6ac('0x32')]['key']};});_0x3e8b0f[_0xe6ac('0x33')]=_[_0xe6ac('0x2e')](_0x110e83,_0xe6ac('0x2c'));_0x3e8b0f[_0xe6ac('0x34')]=_['keys'](_0x1390bb[_0xe6ac('0x34')]);_0x3e8b0f[_0xe6ac('0x35')]=_[_0xe6ac('0x36')](_0x3e8b0f[_0xe6ac('0x33')],_0x3e8b0f['query']);_0x4c6f44[_0xe6ac('0x37')]=_[_0xe6ac('0x36')](_0x3e8b0f['model'],qs['fields'](_0x1390bb['query'][_0xe6ac('0x38')]));_0x4c6f44[_0xe6ac('0x37')]=_0x4c6f44[_0xe6ac('0x37')][_0xe6ac('0x39')]?_0x4c6f44[_0xe6ac('0x37')]:_0x3e8b0f['model'];if(!_0x1390bb['query']['hasOwnProperty'](_0xe6ac('0x3a'))){_0x4c6f44[_0xe6ac('0x20')]=qs[_0xe6ac('0x20')](_0x1390bb[_0xe6ac('0x34')][_0xe6ac('0x20')]);_0x4c6f44[_0xe6ac('0x21')]=qs['offset'](_0x1390bb[_0xe6ac('0x34')][_0xe6ac('0x21')]);}_0x4c6f44[_0xe6ac('0x3b')]=qs['sort'](_0x1390bb[_0xe6ac('0x34')][_0xe6ac('0x3c')]);_0x4c6f44[_0xe6ac('0x3d')]=qs[_0xe6ac('0x35')](_[_0xe6ac('0x3e')](_0x1390bb['query'],_0x3e8b0f['filters']),_0x110e83);if(_0x1390bb['query'][_0xe6ac('0x3f')]){_0x4c6f44[_0xe6ac('0x3d')]=_[_0xe6ac('0x40')](_0x4c6f44[_0xe6ac('0x3d')],{'$or':_[_0xe6ac('0x2e')](_0x110e83,function(_0x3957f0){if(_0x3957f0['type']!==_0xe6ac('0x41')){var _0x1dafcd={};_0x1dafcd[_0x3957f0[_0xe6ac('0x2c')]]={'$like':'%'+_0x1390bb['query'][_0xe6ac('0x3f')]+'%'};return _0x1dafcd;}})});}_0x4c6f44=_['merge']({},_0x4c6f44,_0x1390bb[_0xe6ac('0x42')]);var _0x531482={'where':_0x4c6f44[_0xe6ac('0x3d')]};return db[_0xe6ac('0x2f')][_0xe6ac('0x43')](_0x531482)[_0xe6ac('0x27')](function(_0xea6e14){_0x1a87ca['count']=_0xea6e14;if(_0x1390bb[_0xe6ac('0x34')][_0xe6ac('0x44')]){_0x4c6f44['include']=[{'all':!![]}];}return db[_0xe6ac('0x2f')][_0xe6ac('0x45')](_0x4c6f44);})[_0xe6ac('0x27')](function(_0x5dad5e){_0x1a87ca[_0xe6ac('0x46')]=_0x5dad5e;return _0x1a87ca;})['then'](respondWithFilteredResult(_0x383240,_0x4c6f44))['catch'](handleError(_0x383240,null));};exports[_0xe6ac('0x47')]=function(_0x26936c,_0x2461c9){var _0x5dc9ce={'raw':!![],'where':{'id':_0x26936c[_0xe6ac('0x48')]['id']}},_0x268f76={};_0x268f76[_0xe6ac('0x33')]=_['keys'](db[_0xe6ac('0x2f')][_0xe6ac('0x30')]);_0x268f76[_0xe6ac('0x34')]=_[_0xe6ac('0x49')](_0x26936c[_0xe6ac('0x34')]);_0x268f76['filters']=_[_0xe6ac('0x36')](_0x268f76[_0xe6ac('0x33')],_0x268f76[_0xe6ac('0x34')]);_0x5dc9ce[_0xe6ac('0x37')]=_[_0xe6ac('0x36')](_0x268f76['model'],qs[_0xe6ac('0x38')](_0x26936c[_0xe6ac('0x34')][_0xe6ac('0x38')]));_0x5dc9ce[_0xe6ac('0x37')]=_0x5dc9ce[_0xe6ac('0x37')][_0xe6ac('0x39')]?_0x5dc9ce[_0xe6ac('0x37')]:_0x268f76['model'];if(_0x26936c['query'][_0xe6ac('0x44')]){_0x5dc9ce['include']=[{'all':!![]}];}_0x5dc9ce=_['merge']({},_0x5dc9ce,_0x26936c[_0xe6ac('0x42')]);return db[_0xe6ac('0x2f')][_0xe6ac('0x4a')](_0x5dc9ce)['then'](handleEntityNotFound(_0x2461c9,null))[_0xe6ac('0x27')](respondWithResult(_0x2461c9,null))['catch'](handleError(_0x2461c9,null));};exports[_0xe6ac('0x4b')]=function(_0x19c326,_0x2cdfd2){return db['FaxQueue']['create'](_0x19c326[_0xe6ac('0x4c')],{})[_0xe6ac('0x27')](function(_0x463441){var _0xf0c029=_0x19c326[_0xe6ac('0x4d')][_0xe6ac('0x28')]({'plain':!![]});if(!_0xf0c029)throw new Error(_0xe6ac('0x4e'));if(_0xf0c029[_0xe6ac('0x4f')]==='user'){var _0x8bb9f6=_0x463441[_0xe6ac('0x28')]({'plain':!![]});var _0x2cd2c8=_0xe6ac('0x29');return db[_0xe6ac('0x50')][_0xe6ac('0x4a')]({'where':{'name':_0x2cd2c8,'userProfileId':_0xf0c029[_0xe6ac('0x51')]},'raw':!![]})[_0xe6ac('0x27')](function(_0x37f74d){if(_0x37f74d&&_0x37f74d[_0xe6ac('0x52')]===0x0){return db[_0xe6ac('0x2a')][_0xe6ac('0x4b')]({'name':_0x8bb9f6[_0xe6ac('0x2c')],'resourceId':_0x8bb9f6['id'],'type':_0x37f74d[_0xe6ac('0x2c')],'sectionId':_0x37f74d['id']},{})[_0xe6ac('0x27')](function(){return _0x463441;});}else{return _0x463441;}})[_0xe6ac('0x53')](function(_0x2f53a5){logger['error'](_0xe6ac('0x54'),_0x2f53a5);throw _0x2f53a5;});}return _0x463441;})[_0xe6ac('0x27')](respondWithResult(_0x2cdfd2,0xc9))['catch'](handleError(_0x2cdfd2,null));};exports[_0xe6ac('0x55')]=function(_0x33f315,_0x5025bb){if(_0x33f315[_0xe6ac('0x4c')]['id']){delete _0x33f315[_0xe6ac('0x4c')]['id'];}return db[_0xe6ac('0x2f')][_0xe6ac('0x4a')]({'where':{'id':_0x33f315[_0xe6ac('0x48')]['id']}})[_0xe6ac('0x27')](handleEntityNotFound(_0x5025bb,null))[_0xe6ac('0x27')](saveUpdates(_0x33f315[_0xe6ac('0x4c')],null))[_0xe6ac('0x27')](respondWithResult(_0x5025bb,null))['catch'](handleError(_0x5025bb,null));};exports[_0xe6ac('0x26')]=function(_0x214aa0,_0x1378b6){return db[_0xe6ac('0x2f')][_0xe6ac('0x4a')]({'where':{'id':_0x214aa0['params']['id']}})[_0xe6ac('0x27')](handleEntityNotFound(_0x1378b6,null))[_0xe6ac('0x27')](removeEntity(_0x1378b6,null))[_0xe6ac('0x53')](handleError(_0x1378b6,null));};exports[_0xe6ac('0x56')]=function(_0x155011,_0x23a87e){return db[_0xe6ac('0x2f')][_0xe6ac('0x56')]()['then'](respondWithResult(_0x23a87e,null))['catch'](handleError(_0x23a87e,null));};exports[_0xe6ac('0x57')]=function(_0x1292ef,_0x4f51f5,_0x5407f3){var _0x5a386f={'raw':!![],'where':{}},_0x37f71f={},_0x1ad831;return db[_0xe6ac('0x2f')][_0xe6ac('0x58')]({'where':{'id':_0x1292ef[_0xe6ac('0x48')]['id']}})['then'](handleEntityNotFound(_0x4f51f5,null))[_0xe6ac('0x27')](function(_0x4e77a4){if(_0x4e77a4){_0x1ad831=_0x4e77a4[_0xe6ac('0x28')]({'plain':!![]});_0x37f71f[_0xe6ac('0x33')]=_[_0xe6ac('0x49')](db[_0xe6ac('0x59')][_0xe6ac('0x30')]);_0x37f71f[_0xe6ac('0x34')]=_[_0xe6ac('0x49')](_0x1292ef[_0xe6ac('0x34')]);_0x37f71f[_0xe6ac('0x35')]=_[_0xe6ac('0x36')](_0x37f71f[_0xe6ac('0x33')],_0x37f71f['query']);_0x5a386f[_0xe6ac('0x37')]=_[_0xe6ac('0x36')](_0x37f71f[_0xe6ac('0x33')],qs[_0xe6ac('0x38')](_0x1292ef['query'][_0xe6ac('0x38')]));_0x5a386f[_0xe6ac('0x37')]=_0x5a386f['attributes'][_0xe6ac('0x39')]?_0x5a386f['attributes']:_0x37f71f[_0xe6ac('0x33')];if(!_0x1292ef['query'][_0xe6ac('0x5a')](_0xe6ac('0x3a'))){_0x5a386f[_0xe6ac('0x20')]=qs[_0xe6ac('0x20')](_0x1292ef[_0xe6ac('0x34')][_0xe6ac('0x20')]);_0x5a386f[_0xe6ac('0x21')]=qs['offset'](_0x1292ef[_0xe6ac('0x34')]['offset']);}_0x5a386f[_0xe6ac('0x3b')]=qs['sort'](_0x1292ef[_0xe6ac('0x34')][_0xe6ac('0x3c')]);_0x5a386f[_0xe6ac('0x3d')]=qs[_0xe6ac('0x35')](_[_0xe6ac('0x3e')](_0x1292ef[_0xe6ac('0x34')],_0x37f71f[_0xe6ac('0x35')]));_0x5a386f[_0xe6ac('0x3d')][_0xe6ac('0x5b')]=_0x4e77a4['id'];if(_0x1292ef[_0xe6ac('0x34')][_0xe6ac('0x3f')]){_0x5a386f['where']=_[_0xe6ac('0x40')](_0x5a386f['where'],{'$or':_['map'](_0x5a386f[_0xe6ac('0x37')],function(_0x5e0a32){var _0x1de56f={};_0x1de56f[_0x5e0a32]={'$like':'%'+_0x1292ef[_0xe6ac('0x34')][_0xe6ac('0x3f')]+'%'};return _0x1de56f;})});}_0x5a386f=_[_0xe6ac('0x40')]({},_0x5a386f,_0x1292ef[_0xe6ac('0x42')]);return db[_0xe6ac('0x59')][_0xe6ac('0x45')](_0x5a386f);}})[_0xe6ac('0x27')](function(_0xfb9fd7){if(_0xfb9fd7){return db[_0xe6ac('0x5c')][_0xe6ac('0x5d')]({'where':{'id':_[_0xe6ac('0x2e')](_0xfb9fd7,_0xe6ac('0x5e')),'role':'agent'},'attributes':['id',_0xe6ac('0x2c'),_0xe6ac('0x5f'),_0xe6ac('0x60'),_0xe6ac('0x61')]});}})['then'](function(_0x3709c8){if(_0x3709c8){return{'count':_0x3709c8[_0xe6ac('0x43')],'rows':_['map'](_0x3709c8[_0xe6ac('0x46')],function(_0x57a13f){return{'membername':_0x57a13f[_0xe6ac('0x2c')],'UserId':_0x57a13f['id'],'queue_name':_0x1ad831['name'],'FaxQueueId':_0x1ad831['id'],'interface':util[_0xe6ac('0x62')]('%s/%s',_0xe6ac('0x63'),_0x57a13f[_0xe6ac('0x2c')]),'penalty':0x0,'paused':_0x57a13f[_0xe6ac('0x5f')],'createdAt':_0x57a13f[_0xe6ac('0x61')],'updatedAt':_0x57a13f[_0xe6ac('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe6ac('0x27')](respondWithFilteredResult(_0x4f51f5,_0x5a386f))['catch'](handleError(_0x4f51f5,null));};exports['getTeams']=function(_0xc3b3f4,_0x764256,_0x70446){var _0x54ba26={};var _0x214980={};var _0x16318d;var _0x1b1d8b;return db[_0xe6ac('0x2f')][_0xe6ac('0x58')]({'where':{'id':_0xc3b3f4[_0xe6ac('0x48')]['id']}})[_0xe6ac('0x27')](handleEntityNotFound(_0x764256,null))[_0xe6ac('0x27')](function(_0x487d76){if(_0x487d76){_0x16318d=_0x487d76;_0x214980['model']=_['keys'](db[_0xe6ac('0x64')][_0xe6ac('0x30')]);_0x214980[_0xe6ac('0x34')]=_[_0xe6ac('0x49')](_0xc3b3f4[_0xe6ac('0x34')]);_0x214980[_0xe6ac('0x35')]=_[_0xe6ac('0x36')](_0x214980['model'],_0x214980[_0xe6ac('0x34')]);_0x54ba26[_0xe6ac('0x37')]=_['intersection'](_0x214980['model'],qs[_0xe6ac('0x38')](_0xc3b3f4['query']['fields']));_0x54ba26[_0xe6ac('0x37')]=_0x54ba26[_0xe6ac('0x37')][_0xe6ac('0x39')]?_0x54ba26['attributes']:_0x214980[_0xe6ac('0x33')];_0x54ba26[_0xe6ac('0x3b')]=qs[_0xe6ac('0x3c')](_0xc3b3f4[_0xe6ac('0x34')]['sort']);_0x54ba26[_0xe6ac('0x3d')]=qs[_0xe6ac('0x35')](_['pick'](_0xc3b3f4[_0xe6ac('0x34')],_0x214980[_0xe6ac('0x35')]));if(_0xc3b3f4['query']['filter']){_0x54ba26[_0xe6ac('0x3d')]=_[_0xe6ac('0x40')](_0x54ba26[_0xe6ac('0x3d')],{'$or':_[_0xe6ac('0x2e')](_0x54ba26[_0xe6ac('0x37')],function(_0x4c6bb2){var _0x48db55={};_0x48db55[_0x4c6bb2]={'$like':'%'+_0xc3b3f4['query']['filter']+'%'};return _0x48db55;})});}_0x54ba26=_[_0xe6ac('0x40')]({},_0x54ba26,_0xc3b3f4[_0xe6ac('0x42')]);return _0x16318d[_0xe6ac('0x65')](_0x54ba26);}})[_0xe6ac('0x27')](function(_0x1d13e4){if(_0x1d13e4){_0x1b1d8b=_0x1d13e4[_0xe6ac('0x39')];if(!_0xc3b3f4[_0xe6ac('0x34')]['hasOwnProperty'](_0xe6ac('0x3a'))){_0x54ba26[_0xe6ac('0x20')]=qs['limit'](_0xc3b3f4['query'][_0xe6ac('0x20')]);_0x54ba26[_0xe6ac('0x21')]=qs[_0xe6ac('0x21')](_0xc3b3f4[_0xe6ac('0x34')][_0xe6ac('0x21')]);}return _0x16318d['getTeams'](_0x54ba26);}})[_0xe6ac('0x27')](function(_0x3eda55){if(_0x3eda55){return _0x3eda55?{'count':_0x1b1d8b,'rows':_0x3eda55}:null;}})[_0xe6ac('0x27')](respondWithResult(_0x764256,null))[_0xe6ac('0x53')](handleError(_0x764256,null));};exports[_0xe6ac('0x66')]=function(_0x455244,_0x34a346,_0x79f6ea){var _0x1b20f5=_0x455244['body'][_0xe6ac('0x67')];return db[_0xe6ac('0x64')][_0xe6ac('0x45')]({'where':{'id':_0x1b20f5},'attributes':['id'],'include':[{'model':db[_0xe6ac('0x5c')],'as':_0xe6ac('0x68'),'attributes':['id','name','online',_0xe6ac('0x69'),_0xe6ac('0x6a')],'raw':!![]}]})['then'](function(_0x34adf9){if(_0x34adf9){var _0x1f7ef1=_['flatMap'](_0x34adf9,function(_0x197876){var _0x2041b2=_0x197876[_0xe6ac('0x28')]({'plain':!![]});return _0x2041b2[_0xe6ac('0x68')];});return db[_0xe6ac('0x2f')][_0xe6ac('0x4a')]({'where':{'id':_0x455244[_0xe6ac('0x48')]['id']}})[_0xe6ac('0x27')](function(_0x3ce759){return db[_0xe6ac('0x6b')][_0xe6ac('0x6c')](function(_0x48930a){return _0x3ce759[_0xe6ac('0x66')](_0x1b20f5,{'transaction':_0x48930a})[_0xe6ac('0x27')](function(){return BPromise[_0xe6ac('0x6d')](_0x1f7ef1,function(_0x94f6e1){return db[_0xe6ac('0x59')]['findOrCreate']({'where':{'UserId':_0x94f6e1['id'],'FaxQueueId':_0x455244['params']['id']},'transaction':_0x48930a});});})[_0xe6ac('0x27')](function(){_0x1f7ef1[_0xe6ac('0x6e')](function(_0x262ac0){socket[_0xe6ac('0x6f')](_0xe6ac('0x70'),{'UserId':_0x262ac0['id'],'FaxQueueId':_0x3ce759['id']});});});});});}})['then'](respondWithStatusCode(_0x34a346,null))[_0xe6ac('0x53')](handleError(_0x34a346,null));};exports[_0xe6ac('0x71')]=function(_0x3cb239,_0x793189,_0x56a890){return db['Team']['findAll']({'where':{'id':_0x3cb239[_0xe6ac('0x34')][_0xe6ac('0x67')]},'attributes':['id'],'include':[{'model':db[_0xe6ac('0x5c')],'as':_0xe6ac('0x68'),'attributes':['id'],'raw':!![]}]})[_0xe6ac('0x27')](handleEntityNotFound(_0x793189,null))[_0xe6ac('0x27')](function(_0x2c4d00){var _0x4b9bd9=_[_0xe6ac('0x2e')](_0x2c4d00,'id');var _0xe32cbc=[];var _0x58c3f7=[];var _0x1dabe1=squel['select']();_0x1dabe1['field'](_0xe6ac('0x72'))[_0xe6ac('0x73')]('team_has_fax_queues','tq')['join'](_0xe6ac('0x74'),'ut',_0xe6ac('0x75'))['where'](_0xe6ac('0x76'),_0x3cb239[_0xe6ac('0x48')]['id']);for(var _0x56bd4b=0x0;_0x56bd4b<_0x2c4d00[_0xe6ac('0x39')];_0x56bd4b+=0x1){let _0x332ecc=_0x2c4d00[_0x56bd4b];for(var _0x90bc6c=0x0;_0x90bc6c<_0x332ecc[_0xe6ac('0x68')][_0xe6ac('0x39')];_0x90bc6c+=0x1){let _0x10ce8a=_0x332ecc[_0xe6ac('0x68')][_0x90bc6c];var _0x5248d9=_0x1dabe1['clone']();_0x5248d9['where']('ut.UserId\x20=\x20?',_0x10ce8a['id']);_0x58c3f7[_0xe6ac('0x77')](db[_0xe6ac('0x6b')][_0xe6ac('0x34')](_0x5248d9[_0xe6ac('0x78')](),{'type':db[_0xe6ac('0x6b')][_0xe6ac('0x79')][_0xe6ac('0x7a')]})[_0xe6ac('0x27')](function(_0x358fb0){if(_0x358fb0['length']===0x1){return _0x10ce8a['id'];}else{var _0x5421e5=_[_0xe6ac('0x7b')](_[_0xe6ac('0x2e')](_0x358fb0,'TeamId'),function(_0x4422c9){return _['includes'](_0x4b9bd9,_0x4422c9);});if(_0x5421e5){return _0x10ce8a['id'];}}}));}}return BPromise[_0xe6ac('0x7c')](_0x58c3f7)[_0xe6ac('0x27')](function(_0x41ed2a){_0xe32cbc=_(_0xe32cbc)[_0xe6ac('0x7d')](_0x41ed2a)[_0xe6ac('0x7e')]()['value']();return db['FaxQueue'][_0xe6ac('0x4a')]({'where':{'id':_0x3cb239[_0xe6ac('0x48')]['id']}})[_0xe6ac('0x27')](function(_0x4b9c4a){return db['sequelize']['transaction'](function(_0x582100){return _0x4b9c4a[_0xe6ac('0x71')](_0x3cb239[_0xe6ac('0x34')][_0xe6ac('0x67')],{'transaction':_0x582100})[_0xe6ac('0x27')](function(){if(!_[_0xe6ac('0x7f')](_0xe32cbc)){return _0x4b9c4a[_0xe6ac('0x80')](_0xe32cbc,{'transaction':_0x582100});}})['then'](function(){_0xe32cbc[_0xe6ac('0x6e')](function(_0x4412ae){socket['emit'](_0xe6ac('0x81'),{'UserId':_0x4412ae,'FaxQueueId':_0x4b9c4a['id']});});});});});});})['then'](respondWithStatusCode(_0x793189,null))[_0xe6ac('0x53')](handleError(_0x793189,null));};exports[_0xe6ac('0x82')]=function(_0x4fd750,_0x5b34d4,_0x5c5c41){return db[_0xe6ac('0x2f')]['find']({'where':{'id':_0x4fd750[_0xe6ac('0x48')]['id']}})['then'](handleEntityNotFound(_0x5b34d4,null))[_0xe6ac('0x27')](function(_0x54c4b5){if(_0x54c4b5){return _0x54c4b5[_0xe6ac('0x82')](_0x4fd750[_0xe6ac('0x4c')]['ids'],_[_0xe6ac('0x83')](_0x4fd750['body'],[_0xe6ac('0x67'),'id'])||{})[_0xe6ac('0x84')](function(_0x4cc623){for(var _0x564e64=0x0;_0x564e64<_0x4fd750[_0xe6ac('0x4c')][_0xe6ac('0x67')][_0xe6ac('0x39')];_0x564e64+=0x1){socket[_0xe6ac('0x6f')](_0xe6ac('0x70'),{'UserId':Number(_0x4fd750[_0xe6ac('0x4c')]['ids'][_0x564e64]),'FaxQueueId':Number(_0x4fd750[_0xe6ac('0x48')]['id'])});}return _0x4cc623;});}})['then'](respondWithResult(_0x5b34d4,null))['catch'](handleError(_0x5b34d4,null));};exports[_0xe6ac('0x80')]=function(_0x178336,_0x5d9bf3,_0x568c60){return db[_0xe6ac('0x2f')][_0xe6ac('0x4a')]({'where':{'id':_0x178336[_0xe6ac('0x48')]['id']}})[_0xe6ac('0x27')](handleEntityNotFound(_0x5d9bf3,null))[_0xe6ac('0x27')](function(_0x4105cb){if(_0x4105cb){return _0x4105cb[_0xe6ac('0x80')](_0x178336['query'][_0xe6ac('0x67')])[_0xe6ac('0x27')](function(){if(_[_0xe6ac('0x85')](_0x178336['query'][_0xe6ac('0x67')])){for(var _0x2c54c0=0x0;_0x2c54c0<_0x178336[_0xe6ac('0x34')][_0xe6ac('0x67')]['length'];_0x2c54c0+=0x1){socket[_0xe6ac('0x6f')](_0xe6ac('0x81'),{'UserId':Number(_0x178336[_0xe6ac('0x34')][_0xe6ac('0x67')][_0x2c54c0]),'FaxQueueId':Number(_0x178336[_0xe6ac('0x48')]['id'])});}}else{socket[_0xe6ac('0x6f')](_0xe6ac('0x81'),{'UserId':Number(_0x178336['query'][_0xe6ac('0x67')]),'FaxQueueId':Number(_0x178336[_0xe6ac('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x5d9bf3,null))[_0xe6ac('0x53')](handleError(_0x5d9bf3,null));};exports['getAgents']=function(_0x16f4c3,_0x24d77a,_0x4590be){var _0x292445={};var _0x306f4a={};var _0x15533d;var _0x506d64;return db[_0xe6ac('0x2f')][_0xe6ac('0x58')]({'where':{'id':_0x16f4c3[_0xe6ac('0x48')]['id']}})['then'](handleEntityNotFound(_0x24d77a,null))[_0xe6ac('0x27')](function(_0x3ecd46){if(_0x3ecd46){_0x15533d=_0x3ecd46;_0x306f4a[_0xe6ac('0x33')]=_[_0xe6ac('0x49')](db[_0xe6ac('0x5c')][_0xe6ac('0x30')]);_0x306f4a[_0xe6ac('0x34')]=_[_0xe6ac('0x49')](_0x16f4c3[_0xe6ac('0x34')]);_0x306f4a['filters']=_[_0xe6ac('0x36')](_0x306f4a['model'],_0x306f4a['query']);_0x292445['attributes']=_[_0xe6ac('0x36')](_0x306f4a[_0xe6ac('0x33')],qs[_0xe6ac('0x38')](_0x16f4c3[_0xe6ac('0x34')]['fields']));_0x292445[_0xe6ac('0x37')]=_0x292445[_0xe6ac('0x37')][_0xe6ac('0x39')]?_0x292445['attributes']:_0x306f4a['model'];_0x292445[_0xe6ac('0x3b')]=qs[_0xe6ac('0x3c')](_0x16f4c3[_0xe6ac('0x34')]['sort']);_0x292445['where']=qs[_0xe6ac('0x35')](_['pick'](_0x16f4c3['query'],_0x306f4a[_0xe6ac('0x35')]));if(_0x16f4c3[_0xe6ac('0x34')][_0xe6ac('0x3f')]){_0x292445[_0xe6ac('0x3d')]=_['merge'](_0x292445['where'],{'$or':_[_0xe6ac('0x2e')](_0x292445['attributes'],function(_0x58ec4d){var _0x2cb065={};_0x2cb065[_0x58ec4d]={'$like':'%'+_0x16f4c3[_0xe6ac('0x34')][_0xe6ac('0x3f')]+'%'};return _0x2cb065;})});}_0x292445=_[_0xe6ac('0x40')]({},_0x292445,_0x16f4c3['options']);return _0x15533d[_0xe6ac('0x86')](_0x292445);}})['then'](function(_0x46a375){if(_0x46a375){_0x506d64=_0x46a375[_0xe6ac('0x39')];if(!_0x16f4c3[_0xe6ac('0x34')][_0xe6ac('0x5a')](_0xe6ac('0x3a'))){_0x292445[_0xe6ac('0x20')]=qs[_0xe6ac('0x20')](_0x16f4c3[_0xe6ac('0x34')][_0xe6ac('0x20')]);_0x292445['offset']=qs[_0xe6ac('0x21')](_0x16f4c3['query'][_0xe6ac('0x21')]);}return _0x15533d[_0xe6ac('0x86')](_0x292445);}})[_0xe6ac('0x27')](function(_0x49eeb8){if(_0x49eeb8){return _0x49eeb8?{'count':_0x506d64,'rows':_0x49eeb8}:null;}})['then'](respondWithResult(_0x24d77a,null))[_0xe6ac('0x53')](handleError(_0x24d77a,null));};
\ No newline at end of file
index d88c4cd..eeac50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x296a=['../../mysqldb','setMaxListeners','emit','hasOwnProperty','hook','exports','events'];(function(_0x2f89c0,_0x455702){var _0x164223=function(_0x11a234){while(--_0x11a234){_0x2f89c0['push'](_0x2f89c0['shift']());}};_0x164223(++_0x455702);}(_0x296a,0x16b));var _0xa296=function(_0x483a1a,_0x4d1757){_0x483a1a=_0x483a1a-0x0;var _0x3cc225=_0x296a[_0x483a1a];return _0x3cc225;};'use strict';var EventEmitter=require(_0xa296('0x0'));var FaxQueue=require(_0xa296('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xa296('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x353ac9){return function(_0x448326,_0x1222f9,_0x36ac10){FaxQueueEvents[_0xa296('0x3')](_0x353ac9+':'+_0x448326['id'],_0x448326);FaxQueueEvents[_0xa296('0x3')](_0x353ac9,_0x448326);_0x36ac10(null);};}for(var e in events){if(events[_0xa296('0x4')](e)){var event=events[e];FaxQueue[_0xa296('0x5')](e,emitEvent(event));}}module[_0xa296('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0x123b=['events','../../mysqldb','FaxQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4a8ba9,_0x2b1660){var _0x3a7ed2=function(_0x213faf){while(--_0x213faf){_0x4a8ba9['push'](_0x4a8ba9['shift']());}};_0x3a7ed2(++_0x2b1660);}(_0x123b,0x186));var _0xb123=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x123b[_0x42cae2];return _0x5f256f;};'use strict';var EventEmitter=require(_0xb123('0x0'));var FaxQueue=require(_0xb123('0x1'))['db'][_0xb123('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xb123('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb123('0x4'),'afterDestroy':_0xb123('0x5')};function emitEvent(_0x42e3a7){return function(_0x49a22a,_0x2c378b,_0x1d400f){FaxQueueEvents[_0xb123('0x6')](_0x42e3a7+':'+_0x49a22a['id'],_0x49a22a);FaxQueueEvents['emit'](_0x42e3a7,_0x49a22a);_0x1d400f(null);};}for(var e in events){if(events[_0xb123('0x7')](e)){var event=events[e];FaxQueue[_0xb123('0x8')](e,emitEvent(event));}}module[_0xb123('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 45b8e2b..3af8a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa31=['util','api','moment','path','../../config/environment','./faxQueue.attributes','exports','fax_queues'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa31,0x190));var _0x1aa3=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xaa31[_0xef8146];return _0x5a6cb0;};'use strict';var _=require('lodash');var util=require(_0x1aa3('0x0'));var logger=require('../../config/logger')(_0x1aa3('0x1'));var moment=require(_0x1aa3('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1aa3('0x3'));var rimraf=require('rimraf');var config=require(_0x1aa3('0x4'));var attributes=require(_0x1aa3('0x5'));module[_0x1aa3('0x6')]=function(_0x1500eb,_0x2e3635){return _0x1500eb['define']('FaxQueue',attributes,{'tableName':_0x1aa3('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x50bb=['../../config/logger','api','moment','bluebird','../../config/environment','exports','define','FaxQueue'];(function(_0x4cb9aa,_0x19ddfd){var _0xd24c7=function(_0x8b8fe5){while(--_0x8b8fe5){_0x4cb9aa['push'](_0x4cb9aa['shift']());}};_0xd24c7(++_0x19ddfd);}(_0x50bb,0x80));var _0xb50b=function(_0x383cd4,_0x2da9c6){_0x383cd4=_0x383cd4-0x0;var _0x33bd6c=_0x50bb[_0x383cd4];return _0x33bd6c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb50b('0x0'))(_0xb50b('0x1'));var moment=require(_0xb50b('0x2'));var BPromise=require(_0xb50b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb50b('0x4'));var attributes=require('./faxQueue.attributes');module[_0xb50b('0x5')]=function(_0x108345,_0x457f04){return _0x108345[_0xb50b('0x6')](_0xb50b('0x7'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 915b8fb..2279ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb2b=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','info','FaxQueue,\x20%s,\x20%s','debug','FaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','where','attributes','limit','include','map','model','then','ShowFaxQueue','find','raw','lodash','util','moment','bluebird','ioredis'];(function(_0x3c5f40,_0xb82ced){var _0x5b610e=function(_0x2e3193){while(--_0x2e3193){_0x3c5f40['push'](_0x3c5f40['shift']());}};_0x5b610e(++_0xb82ced);}(_0xbb2b,0x163));var _0xbbb2=function(_0x28f6ee,_0x12342d){_0x28f6ee=_0x28f6ee-0x0;var _0x5c511b=_0xbb2b[_0x28f6ee];return _0x5c511b;};'use strict';var _=require(_0xbbb2('0x0'));var util=require(_0xbbb2('0x1'));var moment=require(_0xbbb2('0x2'));var BPromise=require(_0xbbb2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbbb2('0x4'));var db=require(_0xbbb2('0x5'))['db'];var utils=require(_0xbbb2('0x6'));var logger=require('../../config/logger')(_0xbbb2('0x7'));var config=require(_0xbbb2('0x8'));var jayson=require(_0xbbb2('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xbbb2('0xa')]=_[_0xbbb2('0xb')](config[_0xbbb2('0xa')],{'host':_0xbbb2('0xc'),'port':0x18eb});var socket=require(_0xbbb2('0xd'))(new Redis(config['redis']));require(_0xbbb2('0xe'))['register'](socket);function respondWithRpcPromise(_0x50d2bd,_0xa2b0ca,_0x385686){return new BPromise(function(_0x4e7fe4,_0x173310){return client[_0xbbb2('0xf')](_0x50d2bd,_0x385686)['then'](function(_0x49ac41){logger[_0xbbb2('0x10')](_0xbbb2('0x11'),_0xa2b0ca,'request\x20sent');logger[_0xbbb2('0x12')](_0xbbb2('0x13'),_0xa2b0ca,_0xbbb2('0x14'),JSON[_0xbbb2('0x15')](_0x49ac41));if(_0x49ac41[_0xbbb2('0x16')]){if(_0x49ac41[_0xbbb2('0x16')]['code']===0x1f4){logger[_0xbbb2('0x16')](_0xbbb2('0x11'),_0xa2b0ca,_0x49ac41[_0xbbb2('0x16')][_0xbbb2('0x17')]);return _0x173310(_0x49ac41['error'][_0xbbb2('0x17')]);}logger[_0xbbb2('0x16')]('FaxQueue,\x20%s,\x20%s',_0xa2b0ca,_0x49ac41[_0xbbb2('0x16')][_0xbbb2('0x17')]);return _0x4e7fe4(_0x49ac41[_0xbbb2('0x16')]['message']);}else{logger[_0xbbb2('0x10')]('FaxQueue,\x20%s,\x20%s',_0xa2b0ca,_0xbbb2('0x14'));_0x4e7fe4(_0x49ac41[_0xbbb2('0x18')]['message']);}})[_0xbbb2('0x19')](function(_0x4ddc17){logger[_0xbbb2('0x16')]('FaxQueue,\x20%s,\x20%s',_0xa2b0ca,_0x4ddc17);_0x173310(_0x4ddc17);});});}exports[_0xbbb2('0x1a')]=function(_0x2d168a){var _0x793d11=this;return new Promise(function(_0x1b79c1,_0x31eed3){return db[_0xbbb2('0x1b')][_0xbbb2('0x1c')]({'raw':_0x2d168a[_0xbbb2('0x1d')]?_0x2d168a['options']['raw']===undefined?!![]:![]:!![],'where':_0x2d168a[_0xbbb2('0x1d')]?_0x2d168a[_0xbbb2('0x1d')][_0xbbb2('0x1e')]||null:null,'attributes':_0x2d168a[_0xbbb2('0x1d')]?_0x2d168a[_0xbbb2('0x1d')][_0xbbb2('0x1f')]||null:null,'limit':_0x2d168a[_0xbbb2('0x1d')]?_0x2d168a['options'][_0xbbb2('0x20')]||null:null,'include':_0x2d168a[_0xbbb2('0x1d')]?_0x2d168a['options'][_0xbbb2('0x21')]?_[_0xbbb2('0x22')](_0x2d168a[_0xbbb2('0x1d')][_0xbbb2('0x21')],function(_0x2335e3){return{'model':db[_0x2335e3[_0xbbb2('0x23')]],'as':_0x2335e3['as'],'attributes':_0x2335e3[_0xbbb2('0x1f')],'include':_0x2335e3['include']?_[_0xbbb2('0x22')](_0x2335e3['include'],function(_0x557087){return{'model':db[_0x557087[_0xbbb2('0x23')]],'as':_0x557087['as'],'attributes':_0x557087[_0xbbb2('0x1f')],'include':_0x557087[_0xbbb2('0x21')]?_[_0xbbb2('0x22')](_0x557087[_0xbbb2('0x21')],function(_0x2f8a9f){return{'model':db[_0x2f8a9f[_0xbbb2('0x23')]],'as':_0x2f8a9f['as'],'attributes':_0x2f8a9f[_0xbbb2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xbbb2('0x24')](function(_0x4ce0dd){logger[_0xbbb2('0x10')](_0xbbb2('0x1a'),_0x2d168a);logger['debug']('GetFaxQueue',_0x2d168a,JSON[_0xbbb2('0x15')](_0x4ce0dd));_0x1b79c1(_0x4ce0dd);})[_0xbbb2('0x19')](function(_0x2628d3){logger[_0xbbb2('0x16')](_0xbbb2('0x1a'),_0x2628d3['message'],_0x2d168a);_0x31eed3(_0x793d11['error'](0x1f4,_0x2628d3[_0xbbb2('0x17')]));});});};exports[_0xbbb2('0x25')]=function(_0x50d6d3){var _0x321374=this;return new Promise(function(_0x349394,_0x453e8d){return db[_0xbbb2('0x1b')][_0xbbb2('0x26')]({'raw':_0x50d6d3['options']?_0x50d6d3[_0xbbb2('0x1d')][_0xbbb2('0x27')]===undefined?!![]:![]:!![],'where':_0x50d6d3[_0xbbb2('0x1d')]?_0x50d6d3['options'][_0xbbb2('0x1e')]||null:null,'attributes':_0x50d6d3[_0xbbb2('0x1d')]?_0x50d6d3[_0xbbb2('0x1d')][_0xbbb2('0x1f')]||null:null,'include':_0x50d6d3[_0xbbb2('0x1d')]?_0x50d6d3[_0xbbb2('0x1d')][_0xbbb2('0x21')]?_[_0xbbb2('0x22')](_0x50d6d3[_0xbbb2('0x1d')][_0xbbb2('0x21')],function(_0x5f2ddf){return{'model':db[_0x5f2ddf[_0xbbb2('0x23')]],'as':_0x5f2ddf['as'],'attributes':_0x5f2ddf['attributes'],'include':_0x5f2ddf[_0xbbb2('0x21')]?_[_0xbbb2('0x22')](_0x5f2ddf[_0xbbb2('0x21')],function(_0x1b61b2){return{'model':db[_0x1b61b2[_0xbbb2('0x23')]],'as':_0x1b61b2['as'],'attributes':_0x1b61b2['attributes'],'include':_0x1b61b2[_0xbbb2('0x21')]?_[_0xbbb2('0x22')](_0x1b61b2['include'],function(_0x426ad0){return{'model':db[_0x426ad0[_0xbbb2('0x23')]],'as':_0x426ad0['as'],'attributes':_0x426ad0[_0xbbb2('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3373d3){logger[_0xbbb2('0x10')](_0xbbb2('0x25'),_0x50d6d3);logger['debug'](_0xbbb2('0x25'),_0x50d6d3,JSON['stringify'](_0x3373d3));_0x349394(_0x3373d3);})[_0xbbb2('0x19')](function(_0x1dedb0){logger['error'](_0xbbb2('0x25'),_0x1dedb0[_0xbbb2('0x17')],_0x50d6d3);_0x453e8d(_0x321374[_0xbbb2('0x16')](0x1f4,_0x1dedb0['message']));});});};
\ No newline at end of file
+var _0x9b7b=['jayson/promise','client','http','redis','defaults','localhost','./faxQueue.socket','register','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','attributes','limit','map','include','model','then','GetFaxQueue','find','raw','where','ShowFaxQueue','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0xf2efae,_0x307737){var _0x241311=function(_0x5ba928){while(--_0x5ba928){_0xf2efae['push'](_0xf2efae['shift']());}};_0x241311(++_0x307737);}(_0x9b7b,0x72));var _0xb9b7=function(_0x12b6cc,_0x2d6370){_0x12b6cc=_0x12b6cc-0x0;var _0x2967e1=_0x9b7b[_0x12b6cc];return _0x2967e1;};'use strict';var _=require(_0xb9b7('0x0'));var util=require(_0xb9b7('0x1'));var moment=require('moment');var BPromise=require(_0xb9b7('0x2'));var rs=require(_0xb9b7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb9b7('0x4'))['db'];var utils=require(_0xb9b7('0x5'));var logger=require(_0xb9b7('0x6'))(_0xb9b7('0x7'));var config=require(_0xb9b7('0x8'));var jayson=require(_0xb9b7('0x9'));var client=jayson[_0xb9b7('0xa')][_0xb9b7('0xb')]({'port':0x232a});config[_0xb9b7('0xc')]=_[_0xb9b7('0xd')](config[_0xb9b7('0xc')],{'host':_0xb9b7('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb9b7('0xc')]));require(_0xb9b7('0xf'))[_0xb9b7('0x10')](socket);function respondWithRpcPromise(_0x4a23ec,_0x5462fb,_0x4a8c96){return new BPromise(function(_0x583c43,_0x1aa422){return client['request'](_0x4a23ec,_0x4a8c96)['then'](function(_0x18f20b){logger[_0xb9b7('0x11')](_0xb9b7('0x12'),_0x5462fb,_0xb9b7('0x13'));logger[_0xb9b7('0x14')](_0xb9b7('0x15'),_0x5462fb,'request\x20sent',JSON[_0xb9b7('0x16')](_0x18f20b));if(_0x18f20b['error']){if(_0x18f20b[_0xb9b7('0x17')][_0xb9b7('0x18')]===0x1f4){logger[_0xb9b7('0x17')](_0xb9b7('0x12'),_0x5462fb,_0x18f20b[_0xb9b7('0x17')][_0xb9b7('0x19')]);return _0x1aa422(_0x18f20b[_0xb9b7('0x17')]['message']);}logger[_0xb9b7('0x17')]('FaxQueue,\x20%s,\x20%s',_0x5462fb,_0x18f20b['error'][_0xb9b7('0x19')]);return _0x583c43(_0x18f20b['error'][_0xb9b7('0x19')]);}else{logger[_0xb9b7('0x11')](_0xb9b7('0x12'),_0x5462fb,_0xb9b7('0x13'));_0x583c43(_0x18f20b[_0xb9b7('0x1a')][_0xb9b7('0x19')]);}})[_0xb9b7('0x1b')](function(_0x3ed1ed){logger[_0xb9b7('0x17')]('FaxQueue,\x20%s,\x20%s',_0x5462fb,_0x3ed1ed);_0x1aa422(_0x3ed1ed);});});}exports['GetFaxQueue']=function(_0xcc8d0){var _0x333d1d=this;return new Promise(function(_0x3fa821,_0x108a8f){return db['FaxQueue'][_0xb9b7('0x1c')]({'raw':_0xcc8d0[_0xb9b7('0x1d')]?_0xcc8d0[_0xb9b7('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xcc8d0[_0xb9b7('0x1d')]?_0xcc8d0[_0xb9b7('0x1d')]['where']||null:null,'attributes':_0xcc8d0['options']?_0xcc8d0[_0xb9b7('0x1d')][_0xb9b7('0x1e')]||null:null,'limit':_0xcc8d0[_0xb9b7('0x1d')]?_0xcc8d0[_0xb9b7('0x1d')][_0xb9b7('0x1f')]||null:null,'include':_0xcc8d0[_0xb9b7('0x1d')]?_0xcc8d0['options']['include']?_[_0xb9b7('0x20')](_0xcc8d0[_0xb9b7('0x1d')][_0xb9b7('0x21')],function(_0xb933fc){return{'model':db[_0xb933fc['model']],'as':_0xb933fc['as'],'attributes':_0xb933fc['attributes'],'include':_0xb933fc[_0xb9b7('0x21')]?_[_0xb9b7('0x20')](_0xb933fc[_0xb9b7('0x21')],function(_0x2ce6be){return{'model':db[_0x2ce6be[_0xb9b7('0x22')]],'as':_0x2ce6be['as'],'attributes':_0x2ce6be[_0xb9b7('0x1e')],'include':_0x2ce6be[_0xb9b7('0x21')]?_[_0xb9b7('0x20')](_0x2ce6be[_0xb9b7('0x21')],function(_0x28ebd4){return{'model':db[_0x28ebd4[_0xb9b7('0x22')]],'as':_0x28ebd4['as'],'attributes':_0x28ebd4['attributes']};}):[]};}):[]};}):[]:[]})[_0xb9b7('0x23')](function(_0x453c97){logger[_0xb9b7('0x11')](_0xb9b7('0x24'),_0xcc8d0);logger['debug'](_0xb9b7('0x24'),_0xcc8d0,JSON[_0xb9b7('0x16')](_0x453c97));_0x3fa821(_0x453c97);})[_0xb9b7('0x1b')](function(_0x2bd95a){logger[_0xb9b7('0x17')]('GetFaxQueue',_0x2bd95a[_0xb9b7('0x19')],_0xcc8d0);_0x108a8f(_0x333d1d[_0xb9b7('0x17')](0x1f4,_0x2bd95a['message']));});});};exports['ShowFaxQueue']=function(_0x1004a1){var _0xb6dfa4=this;return new Promise(function(_0x3d5ce9,_0x5233ee){return db['FaxQueue'][_0xb9b7('0x25')]({'raw':_0x1004a1[_0xb9b7('0x1d')]?_0x1004a1[_0xb9b7('0x1d')][_0xb9b7('0x26')]===undefined?!![]:![]:!![],'where':_0x1004a1[_0xb9b7('0x1d')]?_0x1004a1[_0xb9b7('0x1d')][_0xb9b7('0x27')]||null:null,'attributes':_0x1004a1[_0xb9b7('0x1d')]?_0x1004a1[_0xb9b7('0x1d')][_0xb9b7('0x1e')]||null:null,'include':_0x1004a1[_0xb9b7('0x1d')]?_0x1004a1[_0xb9b7('0x1d')][_0xb9b7('0x21')]?_[_0xb9b7('0x20')](_0x1004a1[_0xb9b7('0x1d')]['include'],function(_0x24a191){return{'model':db[_0x24a191[_0xb9b7('0x22')]],'as':_0x24a191['as'],'attributes':_0x24a191[_0xb9b7('0x1e')],'include':_0x24a191[_0xb9b7('0x21')]?_[_0xb9b7('0x20')](_0x24a191[_0xb9b7('0x21')],function(_0x5419c8){return{'model':db[_0x5419c8['model']],'as':_0x5419c8['as'],'attributes':_0x5419c8[_0xb9b7('0x1e')],'include':_0x5419c8['include']?_[_0xb9b7('0x20')](_0x5419c8[_0xb9b7('0x21')],function(_0x3491ed){return{'model':db[_0x3491ed[_0xb9b7('0x22')]],'as':_0x3491ed['as'],'attributes':_0x3491ed[_0xb9b7('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x421b8e){logger[_0xb9b7('0x11')]('ShowFaxQueue',_0x1004a1);logger[_0xb9b7('0x14')](_0xb9b7('0x28'),_0x1004a1,JSON[_0xb9b7('0x16')](_0x421b8e));_0x3d5ce9(_0x421b8e);})[_0xb9b7('0x1b')](function(_0x5ba1c8){logger[_0xb9b7('0x17')]('ShowFaxQueue',_0x5ba1c8[_0xb9b7('0x19')],_0x1004a1);_0x5233ee(_0xb6dfa4[_0xb9b7('0x17')](0x1f4,_0x5ba1c8['message']));});});};
\ No newline at end of file
index a956657..151605f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf97f=['faxQueue:','./faxQueue.events','save','removeListener','register','length'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xf97f,0xc7));var _0xff97=function(_0x54857a,_0x2a3e8e){_0x54857a=_0x54857a-0x0;var _0x1f06e3=_0xf97f[_0x54857a];return _0x1f06e3;};'use strict';var FaxQueueEvents=require(_0xff97('0x0'));var events=[_0xff97('0x1'),'remove','update'];function createListener(_0x59e18f,_0xa25c47){return function(_0x150c25){_0xa25c47['emit'](_0x59e18f,_0x150c25);};}function removeListener(_0x3439cd,_0x299b24){return function(){FaxQueueEvents[_0xff97('0x2')](_0x3439cd,_0x299b24);};}exports[_0xff97('0x3')]=function(_0x2d19a6){for(var _0x5a6aaa=0x0,_0x2ce0bc=events[_0xff97('0x4')];_0x5a6aaa<_0x2ce0bc;_0x5a6aaa++){var _0x4c302d=events[_0x5a6aaa];var _0x5141fa=createListener(_0xff97('0x5')+_0x4c302d,_0x2d19a6);FaxQueueEvents['on'](_0x4c302d,_0x5141fa);}};
\ No newline at end of file
+var _0x24ea=['emit','removeListener','register','length','faxQueue:','./faxQueue.events','remove','update'];(function(_0x333577,_0x4f7ead){var _0x94fb06=function(_0x5359ae){while(--_0x5359ae){_0x333577['push'](_0x333577['shift']());}};_0x94fb06(++_0x4f7ead);}(_0x24ea,0x195));var _0xa24e=function(_0x4af3b7,_0x30c116){_0x4af3b7=_0x4af3b7-0x0;var _0x24727c=_0x24ea[_0x4af3b7];return _0x24727c;};'use strict';var FaxQueueEvents=require(_0xa24e('0x0'));var events=['save',_0xa24e('0x1'),_0xa24e('0x2')];function createListener(_0x1ba660,_0x375f64){return function(_0x2a14b6){_0x375f64[_0xa24e('0x3')](_0x1ba660,_0x2a14b6);};}function removeListener(_0x2e4e91,_0x4a69cc){return function(){FaxQueueEvents[_0xa24e('0x4')](_0x2e4e91,_0x4a69cc);};}exports[_0xa24e('0x5')]=function(_0x279663){for(var _0x57a25c=0x0,_0xed18a6=events[_0xa24e('0x6')];_0x57a25c<_0xed18a6;_0x57a25c++){var _0x1061ea=events[_0x57a25c];var _0x1af133=createListener(_0xa24e('0x7')+_0x1061ea,_0x279663);FaxQueueEvents['on'](_0x1061ea,_0x1af133);}};
\ No newline at end of file
index 91b1380..7f556ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['delete','destroy','removeAgents','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./faxQueue.controller','isAuthenticated','index','/describe','describe','get','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1623,0xab));var _0x3162=function(_0xd0fdd8,_0x162e22){_0xd0fdd8=_0xd0fdd8-0x0;var _0xdbf707=_0x1623[_0xd0fdd8];return _0xdbf707;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xb')]('/:id/members',auth['isAuthenticated'](),controller[_0x3162('0xe')]);router[_0x3162('0xb')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller[_0x3162('0x10')]);router[_0x3162('0xb')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x12')]);router['post']('/',auth[_0x3162('0x7')](),controller['create']);router[_0x3162('0x13')](_0x3162('0xf'),auth['isAuthenticated'](),controller['addTeams']);router[_0x3162('0x13')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller['addAgents']);router[_0x3162('0x14')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller['update']);router[_0x3162('0x15')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0x16')]);router[_0x3162('0x15')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller['removeTeams']);router[_0x3162('0x15')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xb46f=['addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams'];(function(_0x5d99ba,_0x53a730){var _0x19051e=function(_0x3b9eb1){while(--_0x3b9eb1){_0x5d99ba['push'](_0x5d99ba['shift']());}};_0x19051e(++_0x53a730);}(_0xb46f,0xb6));var _0xfb46=function(_0x26bf5f,_0xb92605){_0x26bf5f=_0x26bf5f-0x0;var _0x171a0a=_0xb46f[_0x26bf5f];return _0x171a0a;};'use strict';var multer=require(_0xfb46('0x0'));var util=require(_0xfb46('0x1'));var path=require('path');var timeout=require(_0xfb46('0x2'));var express=require(_0xfb46('0x3'));var router=express[_0xfb46('0x4')]();var fs_extra=require(_0xfb46('0x5'));var auth=require(_0xfb46('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xfb46('0x7'));var controller=require('./faxQueue.controller');router[_0xfb46('0x8')]('/',auth[_0xfb46('0x9')](),controller[_0xfb46('0xa')]);router[_0xfb46('0x8')](_0xfb46('0xb'),auth['isAuthenticated'](),controller[_0xfb46('0xc')]);router[_0xfb46('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0xfb46('0xd'),auth['isAuthenticated'](),controller[_0xfb46('0xe')]);router[_0xfb46('0x8')](_0xfb46('0xf'),auth[_0xfb46('0x9')](),controller[_0xfb46('0x10')]);router[_0xfb46('0x8')](_0xfb46('0x11'),auth[_0xfb46('0x9')](),controller[_0xfb46('0x12')]);router[_0xfb46('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfb46('0x13')]('/:id/teams',auth[_0xfb46('0x9')](),controller[_0xfb46('0x14')]);router['post'](_0xfb46('0x11'),auth[_0xfb46('0x9')](),controller[_0xfb46('0x15')]);router[_0xfb46('0x16')]('/:id',auth[_0xfb46('0x9')](),controller[_0xfb46('0x17')]);router[_0xfb46('0x18')]('/:id',auth[_0xfb46('0x9')](),controller[_0xfb46('0x19')]);router['delete']('/:id/teams',auth[_0xfb46('0x9')](),controller[_0xfb46('0x1a')]);router[_0xfb46('0x18')](_0xfb46('0x11'),auth[_0xfb46('0x9')](),controller[_0xfb46('0x1b')]);module[_0xfb46('0x1c')]=router;
\ No newline at end of file
index d61e093..886b437 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e3=['moment','sequelize','exports','STRING','DATE'];(function(_0x923df3,_0x5b02c2){var _0x26a4e9=function(_0x504d88){while(--_0x504d88){_0x923df3['push'](_0x923df3['shift']());}};_0x26a4e9(++_0x5b02c2);}(_0x01e3,0x122));var _0x301e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x01e3[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x301e('0x0'));var Sequelize=require(_0x301e('0x1'));module[_0x301e('0x2')]={'uniqueid':{'type':Sequelize[_0x301e('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x301e('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x301e('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x301e('0x3')]}};
\ No newline at end of file
+var _0x90e3=['sequelize','exports','STRING','DATE','moment'];(function(_0x149ca0,_0x2ac7f5){var _0x56b6b9=function(_0x486ac3){while(--_0x486ac3){_0x149ca0['push'](_0x149ca0['shift']());}};_0x56b6b9(++_0x2ac7f5);}(_0x90e3,0x9a));var _0x390e=function(_0x15624a,_0x62a80b){_0x15624a=_0x15624a-0x0;var _0x42b811=_0x90e3[_0x15624a];return _0x42b811;};'use strict';var moment=require(_0x390e('0x0'));var Sequelize=require(_0x390e('0x1'));module[_0x390e('0x2')]={'uniqueid':{'type':Sequelize[_0x390e('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x390e('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x390e('0x4')]},'exitAt':{'type':Sequelize[_0x390e('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c8c590f..0867564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf958=['order','sort','where','pick','filter','merge','type','options','count','include','findAll','rows','catch','params','includeAll','find','create','body','destroy','describe','eml-format','zip-dir','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','offset','Content-Range','reject','save','then','error','name','send','map','FaxQueueReport','rawAttributes','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x298949,_0x449add){var _0xecbfe1=function(_0x3fd157){while(--_0x3fd157){_0x298949['push'](_0x298949['shift']());}};_0xecbfe1(++_0x449add);}(_0xf958,0xe6));var _0x8f95=function(_0x1a6638,_0x4dc8e3){_0x1a6638=_0x1a6638-0x0;var _0x58ec60=_0xf958[_0x1a6638];return _0x58ec60;};'use strict';var emlformat=require(_0x8f95('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8f95('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f95('0x2'));var moment=require('moment');var BPromise=require(_0x8f95('0x3'));var Mustache=require(_0x8f95('0x4'));var util=require(_0x8f95('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x8f95('0x6'));var ejs=require(_0x8f95('0x7'));var fs=require('fs');var fs_extra=require(_0x8f95('0x8'));var _=require(_0x8f95('0x9'));var squel=require('squel');var crypto=require(_0x8f95('0xa'));var jsforce=require(_0x8f95('0xb'));var deskjs=require(_0x8f95('0xc'));var toCsv=require(_0x8f95('0x6'));var querystring=require(_0x8f95('0xd'));var Papa=require('papaparse');var Redis=require(_0x8f95('0xe'));var authService=require(_0x8f95('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8f95('0x10'));var hardwareService=require(_0x8f95('0x11'));var logger=require(_0x8f95('0x12'))('api');var utils=require(_0x8f95('0x13'));var config=require(_0x8f95('0x14'));var licenseUtil=require(_0x8f95('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x464cff,_0x158a35){_0x158a35=_0x158a35||0xcc;return function(_0x7fc65f){if(_0x7fc65f){return _0x464cff['sendStatus'](_0x158a35);}return _0x464cff[_0x8f95('0x16')](_0x158a35)[_0x8f95('0x17')]();};}function respondWithResult(_0x230d97,_0x13f9e8){_0x13f9e8=_0x13f9e8||0xc8;return function(_0x12f4d3){if(_0x12f4d3){return _0x230d97[_0x8f95('0x16')](_0x13f9e8)[_0x8f95('0x18')](_0x12f4d3);}};}function respondWithFilteredResult(_0x572747,_0x517c3e){return function(_0x4da5f0){if(_0x4da5f0){var _0x56e816=typeof _0x517c3e['offset']===_0x8f95('0x19')&&typeof _0x517c3e[_0x8f95('0x1a')]===_0x8f95('0x19');var _0x907633=_0x4da5f0['count'];var _0x5da758=_0x56e816?0x0:_0x517c3e[_0x8f95('0x1b')];var _0x17b85b=_0x56e816?_0x4da5f0['count']:_0x517c3e[_0x8f95('0x1b')]+_0x517c3e[_0x8f95('0x1a')];var _0x400849;if(_0x17b85b>=_0x907633){_0x17b85b=_0x907633;_0x400849=0xc8;}else{_0x400849=0xce;}_0x572747[_0x8f95('0x16')](_0x400849);return _0x572747['set'](_0x8f95('0x1c'),_0x5da758+'-'+_0x17b85b+'/'+_0x907633)[_0x8f95('0x18')](_0x4da5f0);}return null;};}function patchUpdates(_0x2b90bf){return function(_0x406da2){try{jsonpatch['apply'](_0x406da2,_0x2b90bf,!![]);}catch(_0x53f819){return BPromise[_0x8f95('0x1d')](_0x53f819);}return _0x406da2[_0x8f95('0x1e')]();};}function saveUpdates(_0x13e7c5,_0x1c7a29){return function(_0x166c3c){if(_0x166c3c){return _0x166c3c['update'](_0x13e7c5)[_0x8f95('0x1f')](function(_0xa3b182){return _0xa3b182;});}return null;};}function removeEntity(_0x4ea420,_0x205c3e){return function(_0x284eb7){if(_0x284eb7){return _0x284eb7['destroy']()[_0x8f95('0x1f')](function(){_0x4ea420[_0x8f95('0x16')](0xcc)[_0x8f95('0x17')]();});}};}function handleEntityNotFound(_0xb00b6f,_0x48d79f){return function(_0x2ef192){if(!_0x2ef192){_0xb00b6f['sendStatus'](0x194);}return _0x2ef192;};}function handleError(_0x4d09c4,_0x3382d8){_0x3382d8=_0x3382d8||0x1f4;return function(_0x5dabb6){logger[_0x8f95('0x20')](_0x5dabb6['stack']);if(_0x5dabb6['name']){delete _0x5dabb6[_0x8f95('0x21')];}_0x4d09c4['status'](_0x3382d8)[_0x8f95('0x22')](_0x5dabb6);};}exports['index']=function(_0x43c843,_0x3fc1d9){var _0x470bf4={},_0x2bb4ea={},_0x467956={'count':0x0,'rows':[]};var _0x28a270=_[_0x8f95('0x23')](db[_0x8f95('0x24')][_0x8f95('0x25')],function(_0x430d53){return{'name':_0x430d53[_0x8f95('0x26')],'type':_0x430d53['type'][_0x8f95('0x27')]};});_0x2bb4ea[_0x8f95('0x28')]=_['map'](_0x28a270,'name');_0x2bb4ea['query']=_[_0x8f95('0x29')](_0x43c843['query']);_0x2bb4ea[_0x8f95('0x2a')]=_['intersection'](_0x2bb4ea['model'],_0x2bb4ea[_0x8f95('0x2b')]);_0x470bf4[_0x8f95('0x2c')]=_[_0x8f95('0x2d')](_0x2bb4ea[_0x8f95('0x28')],qs[_0x8f95('0x2e')](_0x43c843[_0x8f95('0x2b')][_0x8f95('0x2e')]));_0x470bf4[_0x8f95('0x2c')]=_0x470bf4[_0x8f95('0x2c')][_0x8f95('0x2f')]?_0x470bf4['attributes']:_0x2bb4ea[_0x8f95('0x28')];if(!_0x43c843['query'][_0x8f95('0x30')](_0x8f95('0x31'))){_0x470bf4[_0x8f95('0x1a')]=qs[_0x8f95('0x1a')](_0x43c843['query'][_0x8f95('0x1a')]);_0x470bf4[_0x8f95('0x1b')]=qs[_0x8f95('0x1b')](_0x43c843['query']['offset']);}_0x470bf4[_0x8f95('0x32')]=qs[_0x8f95('0x33')](_0x43c843['query'][_0x8f95('0x33')]);_0x470bf4[_0x8f95('0x34')]=qs[_0x8f95('0x2a')](_[_0x8f95('0x35')](_0x43c843[_0x8f95('0x2b')],_0x2bb4ea[_0x8f95('0x2a')]),_0x28a270);if(_0x43c843[_0x8f95('0x2b')][_0x8f95('0x36')]){_0x470bf4[_0x8f95('0x34')]=_[_0x8f95('0x37')](_0x470bf4[_0x8f95('0x34')],{'$or':_[_0x8f95('0x23')](_0x28a270,function(_0x1bf4c3){if(_0x1bf4c3[_0x8f95('0x38')]!=='VIRTUAL'){var _0x9c12d2={};_0x9c12d2[_0x1bf4c3[_0x8f95('0x21')]]={'$like':'%'+_0x43c843[_0x8f95('0x2b')][_0x8f95('0x36')]+'%'};return _0x9c12d2;}})});}_0x470bf4=_[_0x8f95('0x37')]({},_0x470bf4,_0x43c843[_0x8f95('0x39')]);var _0x220e47={'where':_0x470bf4[_0x8f95('0x34')]};return db[_0x8f95('0x24')][_0x8f95('0x3a')](_0x220e47)[_0x8f95('0x1f')](function(_0x5a3ad6){_0x467956[_0x8f95('0x3a')]=_0x5a3ad6;if(_0x43c843[_0x8f95('0x2b')]['includeAll']){_0x470bf4[_0x8f95('0x3b')]=[{'all':!![]}];}return db[_0x8f95('0x24')][_0x8f95('0x3c')](_0x470bf4);})[_0x8f95('0x1f')](function(_0x3a1097){_0x467956[_0x8f95('0x3d')]=_0x3a1097;return _0x467956;})[_0x8f95('0x1f')](respondWithFilteredResult(_0x3fc1d9,_0x470bf4))[_0x8f95('0x3e')](handleError(_0x3fc1d9,null));};exports['show']=function(_0x21e82c,_0x160fcf){var _0x203fa6={'raw':!![],'where':{'id':_0x21e82c[_0x8f95('0x3f')]['id']}},_0x328a72={};_0x328a72[_0x8f95('0x28')]=_['keys'](db[_0x8f95('0x24')][_0x8f95('0x25')]);_0x328a72[_0x8f95('0x2b')]=_[_0x8f95('0x29')](_0x21e82c['query']);_0x328a72['filters']=_['intersection'](_0x328a72[_0x8f95('0x28')],_0x328a72[_0x8f95('0x2b')]);_0x203fa6['attributes']=_[_0x8f95('0x2d')](_0x328a72['model'],qs[_0x8f95('0x2e')](_0x21e82c[_0x8f95('0x2b')]['fields']));_0x203fa6[_0x8f95('0x2c')]=_0x203fa6[_0x8f95('0x2c')][_0x8f95('0x2f')]?_0x203fa6[_0x8f95('0x2c')]:_0x328a72[_0x8f95('0x28')];if(_0x21e82c[_0x8f95('0x2b')][_0x8f95('0x40')]){_0x203fa6[_0x8f95('0x3b')]=[{'all':!![]}];}_0x203fa6=_[_0x8f95('0x37')]({},_0x203fa6,_0x21e82c[_0x8f95('0x39')]);return db['FaxQueueReport'][_0x8f95('0x41')](_0x203fa6)[_0x8f95('0x1f')](handleEntityNotFound(_0x160fcf,null))[_0x8f95('0x1f')](respondWithResult(_0x160fcf,null))[_0x8f95('0x3e')](handleError(_0x160fcf,null));};exports[_0x8f95('0x42')]=function(_0x2c094a,_0x4c21ab){return db[_0x8f95('0x24')][_0x8f95('0x42')](_0x2c094a[_0x8f95('0x43')],{})[_0x8f95('0x1f')](respondWithResult(_0x4c21ab,0xc9))[_0x8f95('0x3e')](handleError(_0x4c21ab,null));};exports['update']=function(_0x335201,_0x301384){if(_0x335201[_0x8f95('0x43')]['id']){delete _0x335201[_0x8f95('0x43')]['id'];}return db[_0x8f95('0x24')][_0x8f95('0x41')]({'where':{'id':_0x335201[_0x8f95('0x3f')]['id']}})['then'](handleEntityNotFound(_0x301384,null))[_0x8f95('0x1f')](saveUpdates(_0x335201[_0x8f95('0x43')],null))[_0x8f95('0x1f')](respondWithResult(_0x301384,null))[_0x8f95('0x3e')](handleError(_0x301384,null));};exports[_0x8f95('0x44')]=function(_0x489813,_0x18464a){return db[_0x8f95('0x24')][_0x8f95('0x41')]({'where':{'id':_0x489813[_0x8f95('0x3f')]['id']}})['then'](handleEntityNotFound(_0x18464a,null))[_0x8f95('0x1f')](removeEntity(_0x18464a,null))[_0x8f95('0x3e')](handleError(_0x18464a,null));};exports[_0x8f95('0x45')]=function(_0xe902de,_0x5aa278){return db[_0x8f95('0x24')][_0x8f95('0x45')]()[_0x8f95('0x1f')](respondWithResult(_0x5aa278,null))[_0x8f95('0x3e')](handleError(_0x5aa278,null));};
\ No newline at end of file
+var _0x559a=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','FaxQueueReport','then','includeAll','include','findAll','catch','show','params','keys','length','options','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','apply','reject','save','update','destroy','end','error','stack','name','index','map'];(function(_0x3be3b7,_0x39ee05){var _0x3605d6=function(_0x392b3e){while(--_0x392b3e){_0x3be3b7['push'](_0x3be3b7['shift']());}};_0x3605d6(++_0x39ee05);}(_0x559a,0xb3));var _0xa559=function(_0x4fbdc6,_0x7f0e47){_0x4fbdc6=_0x4fbdc6-0x0;var _0x61482=_0x559a[_0x4fbdc6];return _0x61482;};'use strict';var emlformat=require(_0xa559('0x0'));var rimraf=require(_0xa559('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa559('0x2'));var rp=require(_0xa559('0x3'));var moment=require(_0xa559('0x4'));var BPromise=require(_0xa559('0x5'));var Mustache=require(_0xa559('0x6'));var util=require(_0xa559('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa559('0x8'));var ejs=require(_0xa559('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa559('0xa'));var squel=require(_0xa559('0xb'));var crypto=require('crypto');var jsforce=require(_0xa559('0xc'));var deskjs=require(_0xa559('0xd'));var toCsv=require(_0xa559('0x8'));var querystring=require(_0xa559('0xe'));var Papa=require('papaparse');var Redis=require(_0xa559('0xf'));var authService=require(_0xa559('0x10'));var qs=require(_0xa559('0x11'));var as=require(_0xa559('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa559('0x13'));var utils=require(_0xa559('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa559('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x442e26,_0x5f0463){_0x5f0463=_0x5f0463||0xcc;return function(_0x2a646e){if(_0x2a646e){return _0x442e26[_0xa559('0x16')](_0x5f0463);}return _0x442e26[_0xa559('0x17')](_0x5f0463)['end']();};}function respondWithResult(_0xe93c61,_0x3853fd){_0x3853fd=_0x3853fd||0xc8;return function(_0x5ed915){if(_0x5ed915){return _0xe93c61[_0xa559('0x17')](_0x3853fd)[_0xa559('0x18')](_0x5ed915);}};}function respondWithFilteredResult(_0x369d26,_0x1e48b3){return function(_0x539a4b){if(_0x539a4b){var _0x309c27=typeof _0x1e48b3['offset']===_0xa559('0x19')&&typeof _0x1e48b3[_0xa559('0x1a')]==='undefined';var _0x2c6993=_0x539a4b[_0xa559('0x1b')];var _0x163405=_0x309c27?0x0:_0x1e48b3[_0xa559('0x1c')];var _0x1a4c42=_0x309c27?_0x539a4b[_0xa559('0x1b')]:_0x1e48b3[_0xa559('0x1c')]+_0x1e48b3[_0xa559('0x1a')];var _0x329d59;if(_0x1a4c42>=_0x2c6993){_0x1a4c42=_0x2c6993;_0x329d59=0xc8;}else{_0x329d59=0xce;}_0x369d26[_0xa559('0x17')](_0x329d59);return _0x369d26['set']('Content-Range',_0x163405+'-'+_0x1a4c42+'/'+_0x2c6993)[_0xa559('0x18')](_0x539a4b);}return null;};}function patchUpdates(_0x3aa532){return function(_0x47cb65){try{jsonpatch[_0xa559('0x1d')](_0x47cb65,_0x3aa532,!![]);}catch(_0x190a9e){return BPromise[_0xa559('0x1e')](_0x190a9e);}return _0x47cb65[_0xa559('0x1f')]();};}function saveUpdates(_0x1812ef,_0x2dd8cf){return function(_0x572046){if(_0x572046){return _0x572046[_0xa559('0x20')](_0x1812ef)['then'](function(_0x1d4370){return _0x1d4370;});}return null;};}function removeEntity(_0x396fe9,_0x314fef){return function(_0x487a60){if(_0x487a60){return _0x487a60[_0xa559('0x21')]()['then'](function(){_0x396fe9[_0xa559('0x17')](0xcc)[_0xa559('0x22')]();});}};}function handleEntityNotFound(_0x5834c6,_0x2a5181){return function(_0x552c2c){if(!_0x552c2c){_0x5834c6['sendStatus'](0x194);}return _0x552c2c;};}function handleError(_0x1581b9,_0x1914e7){_0x1914e7=_0x1914e7||0x1f4;return function(_0x3fcf7f){logger[_0xa559('0x23')](_0x3fcf7f[_0xa559('0x24')]);if(_0x3fcf7f[_0xa559('0x25')]){delete _0x3fcf7f[_0xa559('0x25')];}_0x1581b9[_0xa559('0x17')](_0x1914e7)['send'](_0x3fcf7f);};}exports[_0xa559('0x26')]=function(_0x30a781,_0x21c8a0){var _0x1c92b9={},_0x5f3fbb={},_0x1fb70f={'count':0x0,'rows':[]};var _0x32db9d=_[_0xa559('0x27')](db['FaxQueueReport'][_0xa559('0x28')],function(_0x224a3a){return{'name':_0x224a3a[_0xa559('0x29')],'type':_0x224a3a[_0xa559('0x2a')][_0xa559('0x2b')]};});_0x5f3fbb[_0xa559('0x2c')]=_[_0xa559('0x27')](_0x32db9d,_0xa559('0x25'));_0x5f3fbb[_0xa559('0x2d')]=_['keys'](_0x30a781[_0xa559('0x2d')]);_0x5f3fbb[_0xa559('0x2e')]=_[_0xa559('0x2f')](_0x5f3fbb[_0xa559('0x2c')],_0x5f3fbb['query']);_0x1c92b9[_0xa559('0x30')]=_['intersection'](_0x5f3fbb[_0xa559('0x2c')],qs[_0xa559('0x31')](_0x30a781[_0xa559('0x2d')][_0xa559('0x31')]));_0x1c92b9[_0xa559('0x30')]=_0x1c92b9[_0xa559('0x30')]['length']?_0x1c92b9[_0xa559('0x30')]:_0x5f3fbb[_0xa559('0x2c')];if(!_0x30a781[_0xa559('0x2d')][_0xa559('0x32')](_0xa559('0x33'))){_0x1c92b9[_0xa559('0x1a')]=qs[_0xa559('0x1a')](_0x30a781[_0xa559('0x2d')]['limit']);_0x1c92b9[_0xa559('0x1c')]=qs[_0xa559('0x1c')](_0x30a781[_0xa559('0x2d')][_0xa559('0x1c')]);}_0x1c92b9[_0xa559('0x34')]=qs[_0xa559('0x35')](_0x30a781[_0xa559('0x2d')]['sort']);_0x1c92b9[_0xa559('0x36')]=qs[_0xa559('0x2e')](_[_0xa559('0x37')](_0x30a781[_0xa559('0x2d')],_0x5f3fbb[_0xa559('0x2e')]),_0x32db9d);if(_0x30a781[_0xa559('0x2d')][_0xa559('0x38')]){_0x1c92b9[_0xa559('0x36')]=_[_0xa559('0x39')](_0x1c92b9[_0xa559('0x36')],{'$or':_[_0xa559('0x27')](_0x32db9d,function(_0x2e9351){if(_0x2e9351[_0xa559('0x2a')]!=='VIRTUAL'){var _0x3e58e3={};_0x3e58e3[_0x2e9351['name']]={'$like':'%'+_0x30a781[_0xa559('0x2d')]['filter']+'%'};return _0x3e58e3;}})});}_0x1c92b9=_[_0xa559('0x39')]({},_0x1c92b9,_0x30a781['options']);var _0x3873c9={'where':_0x1c92b9[_0xa559('0x36')]};return db[_0xa559('0x3a')][_0xa559('0x1b')](_0x3873c9)[_0xa559('0x3b')](function(_0x2efc09){_0x1fb70f[_0xa559('0x1b')]=_0x2efc09;if(_0x30a781['query'][_0xa559('0x3c')]){_0x1c92b9[_0xa559('0x3d')]=[{'all':!![]}];}return db[_0xa559('0x3a')][_0xa559('0x3e')](_0x1c92b9);})[_0xa559('0x3b')](function(_0x278f31){_0x1fb70f['rows']=_0x278f31;return _0x1fb70f;})[_0xa559('0x3b')](respondWithFilteredResult(_0x21c8a0,_0x1c92b9))[_0xa559('0x3f')](handleError(_0x21c8a0,null));};exports[_0xa559('0x40')]=function(_0x429249,_0x5d6325){var _0x6340d3={'raw':!![],'where':{'id':_0x429249[_0xa559('0x41')]['id']}},_0x2af622={};_0x2af622[_0xa559('0x2c')]=_[_0xa559('0x42')](db['FaxQueueReport'][_0xa559('0x28')]);_0x2af622[_0xa559('0x2d')]=_[_0xa559('0x42')](_0x429249[_0xa559('0x2d')]);_0x2af622[_0xa559('0x2e')]=_[_0xa559('0x2f')](_0x2af622[_0xa559('0x2c')],_0x2af622['query']);_0x6340d3[_0xa559('0x30')]=_[_0xa559('0x2f')](_0x2af622[_0xa559('0x2c')],qs[_0xa559('0x31')](_0x429249[_0xa559('0x2d')][_0xa559('0x31')]));_0x6340d3[_0xa559('0x30')]=_0x6340d3[_0xa559('0x30')][_0xa559('0x43')]?_0x6340d3['attributes']:_0x2af622[_0xa559('0x2c')];if(_0x429249[_0xa559('0x2d')][_0xa559('0x3c')]){_0x6340d3[_0xa559('0x3d')]=[{'all':!![]}];}_0x6340d3=_[_0xa559('0x39')]({},_0x6340d3,_0x429249[_0xa559('0x44')]);return db[_0xa559('0x3a')]['find'](_0x6340d3)[_0xa559('0x3b')](handleEntityNotFound(_0x5d6325,null))[_0xa559('0x3b')](respondWithResult(_0x5d6325,null))[_0xa559('0x3f')](handleError(_0x5d6325,null));};exports[_0xa559('0x45')]=function(_0x425dda,_0x482e46){return db[_0xa559('0x3a')][_0xa559('0x45')](_0x425dda['body'],{})[_0xa559('0x3b')](respondWithResult(_0x482e46,0xc9))[_0xa559('0x3f')](handleError(_0x482e46,null));};exports['update']=function(_0x56a722,_0x140490){if(_0x56a722[_0xa559('0x46')]['id']){delete _0x56a722[_0xa559('0x46')]['id'];}return db[_0xa559('0x3a')][_0xa559('0x47')]({'where':{'id':_0x56a722[_0xa559('0x41')]['id']}})['then'](handleEntityNotFound(_0x140490,null))[_0xa559('0x3b')](saveUpdates(_0x56a722['body'],null))['then'](respondWithResult(_0x140490,null))['catch'](handleError(_0x140490,null));};exports[_0xa559('0x21')]=function(_0x2c200e,_0x17453f){return db[_0xa559('0x3a')][_0xa559('0x47')]({'where':{'id':_0x2c200e[_0xa559('0x41')]['id']}})[_0xa559('0x3b')](handleEntityNotFound(_0x17453f,null))[_0xa559('0x3b')](removeEntity(_0x17453f,null))[_0xa559('0x3f')](handleError(_0x17453f,null));};exports[_0xa559('0x48')]=function(_0x3be912,_0x4abc17){return db[_0xa559('0x3a')][_0xa559('0x48')]()[_0xa559('0x3b')](respondWithResult(_0x4abc17,null))[_0xa559('0x3f')](handleError(_0x4abc17,null));};
\ No newline at end of file
index 6740f8e..11d3678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','../../config/logger','api','moment'];(function(_0x43fb86,_0xebd024){var _0x99fb7e=function(_0x5edf73){while(--_0x5edf73){_0x43fb86['push'](_0x43fb86['shift']());}};_0x99fb7e(++_0xebd024);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xc4aa[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','define','report_fax_queue','uniqueid','util'];(function(_0x91fb24,_0x289210){var _0xa30234=function(_0xba6a83){while(--_0xba6a83){_0x91fb24['push'](_0x91fb24['shift']());}};_0xa30234(++_0x289210);}(_0x1261,0x144));var _0x1126=function(_0x257280,_0x2921df){_0x257280=_0x257280-0x0;var _0xc4550e=_0x1261[_0x257280];return _0xc4550e;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('FaxQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 94b9bdb..52e9b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c2=['body','options','then','update','raw','where','limit','UpdateFaxQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','FaxQueueReport,\x20%s,\x20%s','catch','CreateFaxQueueReport','FaxQueueReport','create'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x22c2,0x168));var _0x222c=function(_0x4e19f8,_0x3173b6){_0x4e19f8=_0x4e19f8-0x0;var _0x2d2b3d=_0x22c2[_0x4e19f8];return _0x2d2b3d;};'use strict';var _=require(_0x222c('0x0'));var util=require('util');var moment=require(_0x222c('0x1'));var BPromise=require(_0x222c('0x2'));var rs=require(_0x222c('0x3'));var fs=require('fs');var Redis=require(_0x222c('0x4'));var db=require(_0x222c('0x5'))['db'];var utils=require(_0x222c('0x6'));var logger=require(_0x222c('0x7'))(_0x222c('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x222c('0x9')][_0x222c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2542d4,_0x3afc79,_0x72f8a6){return new BPromise(function(_0x1fc140,_0x1e6a18){return client[_0x222c('0xb')](_0x2542d4,_0x72f8a6)['then'](function(_0x48a6e9){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x3afc79,_0x222c('0xc'));logger[_0x222c('0xd')](_0x222c('0xe'),_0x3afc79,_0x222c('0xc'),JSON[_0x222c('0xf')](_0x48a6e9));if(_0x48a6e9['error']){if(_0x48a6e9[_0x222c('0x10')]['code']===0x1f4){logger[_0x222c('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x3afc79,_0x48a6e9[_0x222c('0x10')][_0x222c('0x11')]);return _0x1e6a18(_0x48a6e9[_0x222c('0x10')]['message']);}logger[_0x222c('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x3afc79,_0x48a6e9[_0x222c('0x10')]['message']);return _0x1fc140(_0x48a6e9[_0x222c('0x10')][_0x222c('0x11')]);}else{logger[_0x222c('0x12')](_0x222c('0x13'),_0x3afc79,_0x222c('0xc'));_0x1fc140(_0x48a6e9['result'][_0x222c('0x11')]);}})[_0x222c('0x14')](function(_0xb94c11){logger['error'](_0x222c('0x13'),_0x3afc79,_0xb94c11);_0x1e6a18(_0xb94c11);});});}exports[_0x222c('0x15')]=function(_0x4feb70){var _0x2e1157=this;return new Promise(function(_0x4f0294,_0x23c86){return db[_0x222c('0x16')][_0x222c('0x17')](_0x4feb70[_0x222c('0x18')],{'raw':_0x4feb70[_0x222c('0x19')]?_0x4feb70[_0x222c('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x222c('0x1a')](function(_0x3bc284){logger[_0x222c('0x12')](_0x222c('0x15'),_0x4feb70);logger['debug']('CreateFaxQueueReport',_0x4feb70,JSON[_0x222c('0xf')](_0x3bc284));_0x4f0294(_0x3bc284);})['catch'](function(_0x200125){logger[_0x222c('0x10')](_0x222c('0x15'),_0x200125[_0x222c('0x11')],_0x4feb70);_0x23c86(_0x2e1157[_0x222c('0x10')](0x1f4,_0x200125[_0x222c('0x11')]));});});};exports['UpdateFaxQueueReport']=function(_0x31212e){var _0x248d7c=this;return new Promise(function(_0x2b9973,_0x572111){return db['FaxQueueReport'][_0x222c('0x1b')](_0x31212e[_0x222c('0x18')],{'raw':_0x31212e[_0x222c('0x19')]?_0x31212e[_0x222c('0x19')][_0x222c('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31212e['options']?_0x31212e[_0x222c('0x19')][_0x222c('0x1d')]||null:null,'attributes':_0x31212e[_0x222c('0x19')]?_0x31212e[_0x222c('0x19')]['attributes']||null:null,'limit':_0x31212e[_0x222c('0x19')]?_0x31212e[_0x222c('0x19')][_0x222c('0x1e')]||null:null})['then'](function(_0x375fd3){logger['info'](_0x222c('0x1f'),_0x31212e);logger[_0x222c('0xd')](_0x222c('0x1f'),_0x31212e,JSON[_0x222c('0xf')](_0x375fd3));_0x2b9973(_0x375fd3);})[_0x222c('0x14')](function(_0x3c23a2){logger[_0x222c('0x10')](_0x222c('0x1f'),_0x3c23a2['message'],_0x31212e);_0x572111(_0x248d7c[_0x222c('0x10')](0x1f4,_0x3c23a2[_0x222c('0x11')]));});});};
\ No newline at end of file
+var _0x9a94=['code','message','catch','CreateFaxQueueReport','FaxQueueReport','body','options','raw','attributes','limit','UpdateFaxQueueReport','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4b465c,_0x4907fe){var _0x463f99=function(_0x425d49){while(--_0x425d49){_0x4b465c['push'](_0x4b465c['shift']());}};_0x463f99(++_0x4907fe);}(_0x9a94,0x16b));var _0x49a9=function(_0xf285c1,_0x420382){_0xf285c1=_0xf285c1-0x0;var _0x1598a0=_0x9a94[_0xf285c1];return _0x1598a0;};'use strict';var _=require(_0x49a9('0x0'));var util=require(_0x49a9('0x1'));var moment=require('moment');var BPromise=require(_0x49a9('0x2'));var rs=require(_0x49a9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x49a9('0x4'))['db'];var utils=require(_0x49a9('0x5'));var logger=require(_0x49a9('0x6'))(_0x49a9('0x7'));var config=require(_0x49a9('0x8'));var jayson=require(_0x49a9('0x9'));var client=jayson[_0x49a9('0xa')][_0x49a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e1457,_0x5027b9,_0x1dd4d6){return new BPromise(function(_0x234bae,_0x58b536){return client[_0x49a9('0xc')](_0x5e1457,_0x1dd4d6)[_0x49a9('0xd')](function(_0x5de9e6){logger[_0x49a9('0xe')](_0x49a9('0xf'),_0x5027b9,'request\x20sent');logger[_0x49a9('0x10')](_0x49a9('0x11'),_0x5027b9,_0x49a9('0x12'),JSON[_0x49a9('0x13')](_0x5de9e6));if(_0x5de9e6[_0x49a9('0x14')]){if(_0x5de9e6[_0x49a9('0x14')][_0x49a9('0x15')]===0x1f4){logger[_0x49a9('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x5027b9,_0x5de9e6[_0x49a9('0x14')][_0x49a9('0x16')]);return _0x58b536(_0x5de9e6['error']['message']);}logger[_0x49a9('0x14')](_0x49a9('0xf'),_0x5027b9,_0x5de9e6[_0x49a9('0x14')]['message']);return _0x234bae(_0x5de9e6['error']['message']);}else{logger[_0x49a9('0xe')](_0x49a9('0xf'),_0x5027b9,_0x49a9('0x12'));_0x234bae(_0x5de9e6['result']['message']);}})[_0x49a9('0x17')](function(_0x19f056){logger['error'](_0x49a9('0xf'),_0x5027b9,_0x19f056);_0x58b536(_0x19f056);});});}exports[_0x49a9('0x18')]=function(_0x19cf30){var _0x34f159=this;return new Promise(function(_0x22b68f,_0x5f029b){return db[_0x49a9('0x19')]['create'](_0x19cf30[_0x49a9('0x1a')],{'raw':_0x19cf30[_0x49a9('0x1b')]?_0x19cf30[_0x49a9('0x1b')][_0x49a9('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x59c272){logger['info'](_0x49a9('0x18'),_0x19cf30);logger[_0x49a9('0x10')](_0x49a9('0x18'),_0x19cf30,JSON['stringify'](_0x59c272));_0x22b68f(_0x59c272);})['catch'](function(_0x196ad9){logger[_0x49a9('0x14')](_0x49a9('0x18'),_0x196ad9[_0x49a9('0x16')],_0x19cf30);_0x5f029b(_0x34f159[_0x49a9('0x14')](0x1f4,_0x196ad9['message']));});});};exports['UpdateFaxQueueReport']=function(_0x11af93){var _0x4d8054=this;return new Promise(function(_0x3a3761,_0x40529b){return db[_0x49a9('0x19')]['update'](_0x11af93['body'],{'raw':_0x11af93[_0x49a9('0x1b')]?_0x11af93['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11af93['options']?_0x11af93[_0x49a9('0x1b')]['where']||null:null,'attributes':_0x11af93[_0x49a9('0x1b')]?_0x11af93[_0x49a9('0x1b')][_0x49a9('0x1d')]||null:null,'limit':_0x11af93[_0x49a9('0x1b')]?_0x11af93[_0x49a9('0x1b')][_0x49a9('0x1e')]||null:null})[_0x49a9('0xd')](function(_0x1eabf8){logger['info'](_0x49a9('0x1f'),_0x11af93);logger[_0x49a9('0x10')](_0x49a9('0x1f'),_0x11af93,JSON[_0x49a9('0x13')](_0x1eabf8));_0x3a3761(_0x1eabf8);})['catch'](function(_0x73f2e8){logger[_0x49a9('0x14')](_0x49a9('0x1f'),_0x73f2e8[_0x49a9('0x16')],_0x11af93);_0x40529b(_0x4d8054[_0x49a9('0x14')](0x1f4,_0x73f2e8[_0x49a9('0x16')]));});});};
\ No newline at end of file
index c56938e..39a6ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c5=['put','update','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0xb91420,_0x1ddde1){var _0x5b423=function(_0x118d06){while(--_0x118d06){_0xb91420['push'](_0xb91420['shift']());}};_0x5b423(++_0x1ddde1);}(_0x61c5,0xc1));var _0x561c=function(_0x4b288c,_0x4dea83){_0x4b288c=_0x4b288c-0x0;var _0x18e473=_0x61c5[_0x4b288c];return _0x18e473;};'use strict';var multer=require(_0x561c('0x0'));var util=require('util');var path=require(_0x561c('0x1'));var timeout=require(_0x561c('0x2'));var express=require(_0x561c('0x3'));var router=express[_0x561c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x561c('0x5'));var interaction=require(_0x561c('0x6'));var config=require(_0x561c('0x7'));var controller=require('./faxQueueReport.controller');router[_0x561c('0x8')]('/',auth[_0x561c('0x9')](),controller[_0x561c('0xa')]);router[_0x561c('0x8')](_0x561c('0xb'),auth[_0x561c('0x9')](),controller[_0x561c('0xc')]);router[_0x561c('0x8')](_0x561c('0xd'),auth[_0x561c('0x9')](),controller[_0x561c('0xe')]);router[_0x561c('0xf')]('/',auth[_0x561c('0x9')](),controller[_0x561c('0x10')]);router[_0x561c('0x11')](_0x561c('0xd'),auth[_0x561c('0x9')](),controller[_0x561c('0x12')]);router[_0x561c('0x13')](_0x561c('0xd'),auth[_0x561c('0x9')](),controller[_0x561c('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x678c=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','describe','show','post','create','put','/:id','update'];(function(_0x100fb5,_0x1eade7){var _0x3f8876=function(_0x501890){while(--_0x501890){_0x100fb5['push'](_0x100fb5['shift']());}};_0x3f8876(++_0x1eade7);}(_0x678c,0x17b));var _0xc678=function(_0x43c593,_0x3773b1){_0x43c593=_0x43c593-0x0;var _0x377235=_0x678c[_0x43c593];return _0x377235;};'use strict';var multer=require(_0xc678('0x0'));var util=require(_0xc678('0x1'));var path=require(_0xc678('0x2'));var timeout=require(_0xc678('0x3'));var express=require(_0xc678('0x4'));var router=express[_0xc678('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc678('0x6'));var interaction=require(_0xc678('0x7'));var config=require(_0xc678('0x8'));var controller=require(_0xc678('0x9'));router['get']('/',auth[_0xc678('0xa')](),controller[_0xc678('0xb')]);router[_0xc678('0xc')]('/describe',auth[_0xc678('0xa')](),controller[_0xc678('0xd')]);router[_0xc678('0xc')]('/:id',auth[_0xc678('0xa')](),controller[_0xc678('0xe')]);router[_0xc678('0xf')]('/',auth['isAuthenticated'](),controller[_0xc678('0x10')]);router[_0xc678('0x11')](_0xc678('0x12'),auth[_0xc678('0xa')](),controller[_0xc678('0x13')]);router['delete'](_0xc678('0x12'),auth[_0xc678('0xa')](),controller['destroy']);module[_0xc678('0x14')]=router;
\ No newline at end of file
index 3504e66..a6bd746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x3f41c7,_0x404b79){var _0x49cec5=function(_0x4000e9){while(--_0x4000e9){_0x3f41c7['push'](_0x3f41c7['shift']());}};_0x49cec5(++_0x404b79);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xcb91[_0x2aa0e7];return _0x1472c0;};'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 _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x3b82ea,_0x2f6278){var _0x147744=function(_0x56c245){while(--_0x56c245){_0x3b82ea['push'](_0x3b82ea['shift']());}};_0x147744(++_0x2f6278);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0xcb91[_0x2ff762];return _0x158b02;};'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 7b4c168..7b71faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf11e=['map','FaxTransferReport','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','params','rawAttributes','include','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','sendStatus','error','index'];(function(_0x402d0e,_0x5da4d7){var _0x34b9fa=function(_0x36a4d3){while(--_0x36a4d3){_0x402d0e['push'](_0x402d0e['shift']());}};_0x34b9fa(++_0x5da4d7);}(_0xf11e,0xba));var _0xef11=function(_0x3cbef2,_0x25abb4){_0x3cbef2=_0x3cbef2-0x0;var _0x1a89e8=_0xf11e[_0x3cbef2];return _0x1a89e8;};'use strict';var emlformat=require(_0xef11('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xef11('0x1'));var jsonpatch=require(_0xef11('0x2'));var rp=require(_0xef11('0x3'));var moment=require(_0xef11('0x4'));var BPromise=require(_0xef11('0x5'));var Mustache=require(_0xef11('0x6'));var util=require(_0xef11('0x7'));var path=require('path');var sox=require(_0xef11('0x8'));var csv=require(_0xef11('0x9'));var ejs=require(_0xef11('0xa'));var fs=require('fs');var fs_extra=require(_0xef11('0xb'));var _=require(_0xef11('0xc'));var squel=require(_0xef11('0xd'));var crypto=require(_0xef11('0xe'));var jsforce=require(_0xef11('0xf'));var deskjs=require(_0xef11('0x10'));var toCsv=require(_0xef11('0x9'));var querystring=require(_0xef11('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xef11('0x12'));var qs=require(_0xef11('0x13'));var as=require(_0xef11('0x14'));var hardwareService=require(_0xef11('0x15'));var logger=require(_0xef11('0x16'))(_0xef11('0x17'));var utils=require(_0xef11('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xef11('0x19'));var db=require(_0xef11('0x1a'))['db'];function respondWithStatusCode(_0x217187,_0x5321b0){_0x5321b0=_0x5321b0||0xcc;return function(_0x1c8014){if(_0x1c8014){return _0x217187['sendStatus'](_0x5321b0);}return _0x217187[_0xef11('0x1b')](_0x5321b0)[_0xef11('0x1c')]();};}function respondWithResult(_0x4e83aa,_0x130ca3){_0x130ca3=_0x130ca3||0xc8;return function(_0x52eb43){if(_0x52eb43){return _0x4e83aa[_0xef11('0x1b')](_0x130ca3)[_0xef11('0x1d')](_0x52eb43);}};}function respondWithFilteredResult(_0x50696b,_0x9845af){return function(_0x5e6591){if(_0x5e6591){var _0x584277=typeof _0x9845af[_0xef11('0x1e')]===_0xef11('0x1f')&&typeof _0x9845af['limit']===_0xef11('0x1f');var _0x1ce6ee=_0x5e6591[_0xef11('0x20')];var _0x471e54=_0x584277?0x0:_0x9845af[_0xef11('0x1e')];var _0x213acb=_0x584277?_0x5e6591[_0xef11('0x20')]:_0x9845af[_0xef11('0x1e')]+_0x9845af['limit'];var _0x228fd7;if(_0x213acb>=_0x1ce6ee){_0x213acb=_0x1ce6ee;_0x228fd7=0xc8;}else{_0x228fd7=0xce;}_0x50696b[_0xef11('0x1b')](_0x228fd7);return _0x50696b[_0xef11('0x21')](_0xef11('0x22'),_0x471e54+'-'+_0x213acb+'/'+_0x1ce6ee)[_0xef11('0x1d')](_0x5e6591);}return null;};}function patchUpdates(_0x320329){return function(_0x420760){try{jsonpatch['apply'](_0x420760,_0x320329,!![]);}catch(_0x1d9e84){return BPromise[_0xef11('0x23')](_0x1d9e84);}return _0x420760['save']();};}function saveUpdates(_0x5d2345,_0x3ca22c){return function(_0xe10abf){if(_0xe10abf){return _0xe10abf[_0xef11('0x24')](_0x5d2345)[_0xef11('0x25')](function(_0x144b5b){return _0x144b5b;});}return null;};}function removeEntity(_0x4a1c57,_0x371adb){return function(_0x2710bf){if(_0x2710bf){return _0x2710bf[_0xef11('0x26')]()['then'](function(){_0x4a1c57['status'](0xcc)[_0xef11('0x1c')]();});}};}function handleEntityNotFound(_0x4cc7e4,_0xb43733){return function(_0x11fbe0){if(!_0x11fbe0){_0x4cc7e4[_0xef11('0x27')](0x194);}return _0x11fbe0;};}function handleError(_0x1044b4,_0x2f8027){_0x2f8027=_0x2f8027||0x1f4;return function(_0x337858){logger[_0xef11('0x28')](_0x337858['stack']);if(_0x337858['name']){delete _0x337858['name'];}_0x1044b4[_0xef11('0x1b')](_0x2f8027)['send'](_0x337858);};}exports[_0xef11('0x29')]=function(_0x1db360,_0xf85d62){var _0x1b5318={},_0xf2d9ec={},_0x3b3555={'count':0x0,'rows':[]};var _0x58ab7c=_[_0xef11('0x2a')](db[_0xef11('0x2b')]['rawAttributes'],function(_0x850a8){return{'name':_0x850a8[_0xef11('0x2c')],'type':_0x850a8[_0xef11('0x2d')][_0xef11('0x2e')]};});_0xf2d9ec[_0xef11('0x2f')]=_[_0xef11('0x2a')](_0x58ab7c,_0xef11('0x30'));_0xf2d9ec[_0xef11('0x31')]=_[_0xef11('0x32')](_0x1db360[_0xef11('0x31')]);_0xf2d9ec[_0xef11('0x33')]=_[_0xef11('0x34')](_0xf2d9ec[_0xef11('0x2f')],_0xf2d9ec['query']);_0x1b5318[_0xef11('0x35')]=_[_0xef11('0x34')](_0xf2d9ec[_0xef11('0x2f')],qs[_0xef11('0x36')](_0x1db360[_0xef11('0x31')][_0xef11('0x36')]));_0x1b5318[_0xef11('0x35')]=_0x1b5318['attributes'][_0xef11('0x37')]?_0x1b5318[_0xef11('0x35')]:_0xf2d9ec[_0xef11('0x2f')];if(!_0x1db360[_0xef11('0x31')]['hasOwnProperty'](_0xef11('0x38'))){_0x1b5318[_0xef11('0x39')]=qs[_0xef11('0x39')](_0x1db360['query']['limit']);_0x1b5318[_0xef11('0x1e')]=qs[_0xef11('0x1e')](_0x1db360[_0xef11('0x31')][_0xef11('0x1e')]);}_0x1b5318[_0xef11('0x3a')]=qs[_0xef11('0x3b')](_0x1db360[_0xef11('0x31')][_0xef11('0x3b')]);_0x1b5318[_0xef11('0x3c')]=qs[_0xef11('0x33')](_[_0xef11('0x3d')](_0x1db360[_0xef11('0x31')],_0xf2d9ec[_0xef11('0x33')]),_0x58ab7c);if(_0x1db360[_0xef11('0x31')][_0xef11('0x3e')]){_0x1b5318['where']=_[_0xef11('0x3f')](_0x1b5318['where'],{'$or':_[_0xef11('0x2a')](_0x58ab7c,function(_0x219a01){if(_0x219a01[_0xef11('0x2d')]!==_0xef11('0x40')){var _0x2e7dea={};_0x2e7dea[_0x219a01[_0xef11('0x30')]]={'$like':'%'+_0x1db360[_0xef11('0x31')]['filter']+'%'};return _0x2e7dea;}})});}_0x1b5318=_[_0xef11('0x3f')]({},_0x1b5318,_0x1db360['options']);var _0x26aa1a={'where':_0x1b5318['where']};return db['FaxTransferReport'][_0xef11('0x20')](_0x26aa1a)[_0xef11('0x25')](function(_0x26a377){_0x3b3555[_0xef11('0x20')]=_0x26a377;if(_0x1db360[_0xef11('0x31')][_0xef11('0x41')]){_0x1b5318['include']=[{'all':!![]}];}return db[_0xef11('0x2b')]['findAll'](_0x1b5318);})[_0xef11('0x25')](function(_0x13b3af){_0x3b3555[_0xef11('0x42')]=_0x13b3af;return _0x3b3555;})[_0xef11('0x25')](respondWithFilteredResult(_0xf85d62,_0x1b5318))[_0xef11('0x43')](handleError(_0xf85d62,null));};exports['show']=function(_0x33ed97,_0x5b8fa1){var _0x32aa33={'raw':!![],'where':{'id':_0x33ed97[_0xef11('0x44')]['id']}},_0x5f2ccb={};_0x5f2ccb[_0xef11('0x2f')]=_[_0xef11('0x32')](db['FaxTransferReport'][_0xef11('0x45')]);_0x5f2ccb[_0xef11('0x31')]=_[_0xef11('0x32')](_0x33ed97[_0xef11('0x31')]);_0x5f2ccb[_0xef11('0x33')]=_[_0xef11('0x34')](_0x5f2ccb['model'],_0x5f2ccb[_0xef11('0x31')]);_0x32aa33[_0xef11('0x35')]=_[_0xef11('0x34')](_0x5f2ccb[_0xef11('0x2f')],qs[_0xef11('0x36')](_0x33ed97[_0xef11('0x31')][_0xef11('0x36')]));_0x32aa33['attributes']=_0x32aa33[_0xef11('0x35')][_0xef11('0x37')]?_0x32aa33[_0xef11('0x35')]:_0x5f2ccb[_0xef11('0x2f')];if(_0x33ed97[_0xef11('0x31')][_0xef11('0x41')]){_0x32aa33[_0xef11('0x46')]=[{'all':!![]}];}_0x32aa33=_[_0xef11('0x3f')]({},_0x32aa33,_0x33ed97[_0xef11('0x47')]);return db[_0xef11('0x2b')][_0xef11('0x48')](_0x32aa33)[_0xef11('0x25')](handleEntityNotFound(_0x5b8fa1,null))[_0xef11('0x25')](respondWithResult(_0x5b8fa1,null))['catch'](handleError(_0x5b8fa1,null));};exports[_0xef11('0x49')]=function(_0x3c472a,_0x507d78){return db[_0xef11('0x2b')]['create'](_0x3c472a[_0xef11('0x4a')],{})[_0xef11('0x25')](respondWithResult(_0x507d78,0xc9))[_0xef11('0x43')](handleError(_0x507d78,null));};exports[_0xef11('0x24')]=function(_0x2e0c93,_0x30e54d){if(_0x2e0c93['body']['id']){delete _0x2e0c93[_0xef11('0x4a')]['id'];}return db[_0xef11('0x2b')]['find']({'where':{'id':_0x2e0c93['params']['id']}})[_0xef11('0x25')](handleEntityNotFound(_0x30e54d,null))[_0xef11('0x25')](saveUpdates(_0x2e0c93[_0xef11('0x4a')],null))['then'](respondWithResult(_0x30e54d,null))[_0xef11('0x43')](handleError(_0x30e54d,null));};exports['destroy']=function(_0x5212b6,_0x2e4e6d){return db[_0xef11('0x2b')]['find']({'where':{'id':_0x5212b6[_0xef11('0x44')]['id']}})[_0xef11('0x25')](handleEntityNotFound(_0x2e4e6d,null))[_0xef11('0x25')](removeEntity(_0x2e4e6d,null))[_0xef11('0x43')](handleError(_0x2e4e6d,null));};exports[_0xef11('0x4b')]=function(_0x1acc1b,_0x5a73ae){return db['FaxTransferReport'][_0xef11('0x4b')]()[_0xef11('0x25')](respondWithResult(_0x5a73ae,null))[_0xef11('0x43')](handleError(_0x5a73ae,null));};
\ No newline at end of file
+var _0x4e29=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','then','error','name','send','index','map','FaxTransferReport','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','update','describe','eml-format'];(function(_0x34e56d,_0x4a5b68){var _0x5a79b0=function(_0x10cc25){while(--_0x10cc25){_0x34e56d['push'](_0x34e56d['shift']());}};_0x5a79b0(++_0x4a5b68);}(_0x4e29,0x93));var _0x94e2=function(_0x15bbf1,_0x40ef96){_0x15bbf1=_0x15bbf1-0x0;var _0x5c4b47=_0x4e29[_0x15bbf1];return _0x5c4b47;};'use strict';var emlformat=require(_0x94e2('0x0'));var rimraf=require(_0x94e2('0x1'));var zipdir=require(_0x94e2('0x2'));var jsonpatch=require(_0x94e2('0x3'));var rp=require(_0x94e2('0x4'));var moment=require('moment');var BPromise=require(_0x94e2('0x5'));var Mustache=require(_0x94e2('0x6'));var util=require('util');var path=require(_0x94e2('0x7'));var sox=require(_0x94e2('0x8'));var csv=require('to-csv');var ejs=require(_0x94e2('0x9'));var fs=require('fs');var fs_extra=require(_0x94e2('0xa'));var _=require('lodash');var squel=require(_0x94e2('0xb'));var crypto=require('crypto');var jsforce=require(_0x94e2('0xc'));var deskjs=require(_0x94e2('0xd'));var toCsv=require(_0x94e2('0xe'));var querystring=require(_0x94e2('0xf'));var Papa=require(_0x94e2('0x10'));var Redis=require('ioredis');var authService=require(_0x94e2('0x11'));var qs=require(_0x94e2('0x12'));var as=require(_0x94e2('0x13'));var hardwareService=require(_0x94e2('0x14'));var logger=require(_0x94e2('0x15'))(_0x94e2('0x16'));var utils=require('../../config/utils');var config=require(_0x94e2('0x17'));var licenseUtil=require(_0x94e2('0x18'));var db=require(_0x94e2('0x19'))['db'];function respondWithStatusCode(_0xfc72b7,_0x9423d1){_0x9423d1=_0x9423d1||0xcc;return function(_0x253b83){if(_0x253b83){return _0xfc72b7[_0x94e2('0x1a')](_0x9423d1);}return _0xfc72b7[_0x94e2('0x1b')](_0x9423d1)['end']();};}function respondWithResult(_0x489b24,_0x234482){_0x234482=_0x234482||0xc8;return function(_0x2855f0){if(_0x2855f0){return _0x489b24['status'](_0x234482)[_0x94e2('0x1c')](_0x2855f0);}};}function respondWithFilteredResult(_0x313f45,_0x367e19){return function(_0x2a1622){if(_0x2a1622){var _0x15f8ce=typeof _0x367e19[_0x94e2('0x1d')]===_0x94e2('0x1e')&&typeof _0x367e19[_0x94e2('0x1f')]==='undefined';var _0x55156a=_0x2a1622[_0x94e2('0x20')];var _0x4747bc=_0x15f8ce?0x0:_0x367e19['offset'];var _0x221f38=_0x15f8ce?_0x2a1622[_0x94e2('0x20')]:_0x367e19['offset']+_0x367e19[_0x94e2('0x1f')];var _0x1ae601;if(_0x221f38>=_0x55156a){_0x221f38=_0x55156a;_0x1ae601=0xc8;}else{_0x1ae601=0xce;}_0x313f45[_0x94e2('0x1b')](_0x1ae601);return _0x313f45[_0x94e2('0x21')]('Content-Range',_0x4747bc+'-'+_0x221f38+'/'+_0x55156a)[_0x94e2('0x1c')](_0x2a1622);}return null;};}function patchUpdates(_0x5f082b){return function(_0x1d30f4){try{jsonpatch['apply'](_0x1d30f4,_0x5f082b,!![]);}catch(_0x75141c){return BPromise[_0x94e2('0x22')](_0x75141c);}return _0x1d30f4[_0x94e2('0x23')]();};}function saveUpdates(_0x16f381,_0x7cc853){return function(_0x3feeac){if(_0x3feeac){return _0x3feeac['update'](_0x16f381)['then'](function(_0x3d1853){return _0x3d1853;});}return null;};}function removeEntity(_0x45f151,_0x3ed034){return function(_0x3e63ea){if(_0x3e63ea){return _0x3e63ea['destroy']()[_0x94e2('0x24')](function(){_0x45f151[_0x94e2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dc603,_0x1a6bb4){return function(_0x2e7802){if(!_0x2e7802){_0x5dc603[_0x94e2('0x1a')](0x194);}return _0x2e7802;};}function handleError(_0x4d227b,_0x1cc074){_0x1cc074=_0x1cc074||0x1f4;return function(_0x4de765){logger[_0x94e2('0x25')](_0x4de765['stack']);if(_0x4de765[_0x94e2('0x26')]){delete _0x4de765[_0x94e2('0x26')];}_0x4d227b['status'](_0x1cc074)[_0x94e2('0x27')](_0x4de765);};}exports[_0x94e2('0x28')]=function(_0x35394b,_0x5f10fa){var _0x9291df={},_0xaf2411={},_0x2e6c33={'count':0x0,'rows':[]};var _0x5326ce=_[_0x94e2('0x29')](db[_0x94e2('0x2a')]['rawAttributes'],function(_0x2e2058){return{'name':_0x2e2058['fieldName'],'type':_0x2e2058[_0x94e2('0x2b')][_0x94e2('0x2c')]};});_0xaf2411['model']=_[_0x94e2('0x29')](_0x5326ce,'name');_0xaf2411[_0x94e2('0x2d')]=_[_0x94e2('0x2e')](_0x35394b[_0x94e2('0x2d')]);_0xaf2411[_0x94e2('0x2f')]=_[_0x94e2('0x30')](_0xaf2411[_0x94e2('0x31')],_0xaf2411['query']);_0x9291df[_0x94e2('0x32')]=_[_0x94e2('0x30')](_0xaf2411[_0x94e2('0x31')],qs[_0x94e2('0x33')](_0x35394b[_0x94e2('0x2d')][_0x94e2('0x33')]));_0x9291df[_0x94e2('0x32')]=_0x9291df['attributes'][_0x94e2('0x34')]?_0x9291df[_0x94e2('0x32')]:_0xaf2411['model'];if(!_0x35394b[_0x94e2('0x2d')][_0x94e2('0x35')]('nolimit')){_0x9291df['limit']=qs[_0x94e2('0x1f')](_0x35394b[_0x94e2('0x2d')][_0x94e2('0x1f')]);_0x9291df[_0x94e2('0x1d')]=qs[_0x94e2('0x1d')](_0x35394b[_0x94e2('0x2d')][_0x94e2('0x1d')]);}_0x9291df[_0x94e2('0x36')]=qs[_0x94e2('0x37')](_0x35394b['query'][_0x94e2('0x37')]);_0x9291df['where']=qs['filters'](_[_0x94e2('0x38')](_0x35394b[_0x94e2('0x2d')],_0xaf2411['filters']),_0x5326ce);if(_0x35394b[_0x94e2('0x2d')][_0x94e2('0x39')]){_0x9291df[_0x94e2('0x3a')]=_[_0x94e2('0x3b')](_0x9291df['where'],{'$or':_[_0x94e2('0x29')](_0x5326ce,function(_0x5c5c1e){if(_0x5c5c1e[_0x94e2('0x2b')]!==_0x94e2('0x3c')){var _0x24ecea={};_0x24ecea[_0x5c5c1e[_0x94e2('0x26')]]={'$like':'%'+_0x35394b[_0x94e2('0x2d')]['filter']+'%'};return _0x24ecea;}})});}_0x9291df=_[_0x94e2('0x3b')]({},_0x9291df,_0x35394b[_0x94e2('0x3d')]);var _0x2a9a8e={'where':_0x9291df[_0x94e2('0x3a')]};return db['FaxTransferReport'][_0x94e2('0x20')](_0x2a9a8e)['then'](function(_0x165bb7){_0x2e6c33[_0x94e2('0x20')]=_0x165bb7;if(_0x35394b['query']['includeAll']){_0x9291df['include']=[{'all':!![]}];}return db[_0x94e2('0x2a')][_0x94e2('0x3e')](_0x9291df);})[_0x94e2('0x24')](function(_0x388d17){_0x2e6c33[_0x94e2('0x3f')]=_0x388d17;return _0x2e6c33;})[_0x94e2('0x24')](respondWithFilteredResult(_0x5f10fa,_0x9291df))[_0x94e2('0x40')](handleError(_0x5f10fa,null));};exports[_0x94e2('0x41')]=function(_0x1eaead,_0x56b631){var _0x31de44={'raw':!![],'where':{'id':_0x1eaead[_0x94e2('0x42')]['id']}},_0x1b0e55={};_0x1b0e55[_0x94e2('0x31')]=_['keys'](db['FaxTransferReport']['rawAttributes']);_0x1b0e55[_0x94e2('0x2d')]=_[_0x94e2('0x2e')](_0x1eaead[_0x94e2('0x2d')]);_0x1b0e55[_0x94e2('0x2f')]=_[_0x94e2('0x30')](_0x1b0e55[_0x94e2('0x31')],_0x1b0e55['query']);_0x31de44[_0x94e2('0x32')]=_[_0x94e2('0x30')](_0x1b0e55[_0x94e2('0x31')],qs[_0x94e2('0x33')](_0x1eaead[_0x94e2('0x2d')][_0x94e2('0x33')]));_0x31de44[_0x94e2('0x32')]=_0x31de44[_0x94e2('0x32')][_0x94e2('0x34')]?_0x31de44[_0x94e2('0x32')]:_0x1b0e55['model'];if(_0x1eaead['query'][_0x94e2('0x43')]){_0x31de44[_0x94e2('0x44')]=[{'all':!![]}];}_0x31de44=_[_0x94e2('0x3b')]({},_0x31de44,_0x1eaead[_0x94e2('0x3d')]);return db['FaxTransferReport'][_0x94e2('0x45')](_0x31de44)['then'](handleEntityNotFound(_0x56b631,null))['then'](respondWithResult(_0x56b631,null))[_0x94e2('0x40')](handleError(_0x56b631,null));};exports[_0x94e2('0x46')]=function(_0x277b44,_0x254816){return db[_0x94e2('0x2a')][_0x94e2('0x46')](_0x277b44[_0x94e2('0x47')],{})[_0x94e2('0x24')](respondWithResult(_0x254816,0xc9))['catch'](handleError(_0x254816,null));};exports[_0x94e2('0x48')]=function(_0x2dfa7f,_0x92759e){if(_0x2dfa7f['body']['id']){delete _0x2dfa7f[_0x94e2('0x47')]['id'];}return db[_0x94e2('0x2a')][_0x94e2('0x45')]({'where':{'id':_0x2dfa7f[_0x94e2('0x42')]['id']}})[_0x94e2('0x24')](handleEntityNotFound(_0x92759e,null))['then'](saveUpdates(_0x2dfa7f[_0x94e2('0x47')],null))[_0x94e2('0x24')](respondWithResult(_0x92759e,null))[_0x94e2('0x40')](handleError(_0x92759e,null));};exports['destroy']=function(_0x5216a9,_0x20e73d){return db['FaxTransferReport'][_0x94e2('0x45')]({'where':{'id':_0x5216a9[_0x94e2('0x42')]['id']}})['then'](handleEntityNotFound(_0x20e73d,null))[_0x94e2('0x24')](removeEntity(_0x20e73d,null))[_0x94e2('0x40')](handleError(_0x20e73d,null));};exports['describe']=function(_0x5b642e,_0x1d4379){return db['FaxTransferReport'][_0x94e2('0x49')]()[_0x94e2('0x24')](respondWithResult(_0x1d4379,null))[_0x94e2('0x40')](handleError(_0x1d4379,null));};
\ No newline at end of file
index 1eb3c44..2d4e20f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e38=['exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxTransferReport.attributes'];(function(_0x146aac,_0x378163){var _0x2c0c27=function(_0x4c211a){while(--_0x4c211a){_0x146aac['push'](_0x146aac['shift']());}};_0x2c0c27(++_0x378163);}(_0x9e38,0x155));var _0x89e3=function(_0x3158d2,_0x277d23){_0x3158d2=_0x3158d2-0x0;var _0x57c15a=_0x9e38[_0x3158d2];return _0x57c15a;};'use strict';var _=require(_0x89e3('0x0'));var util=require(_0x89e3('0x1'));var logger=require(_0x89e3('0x2'))(_0x89e3('0x3'));var moment=require(_0x89e3('0x4'));var BPromise=require(_0x89e3('0x5'));var rp=require(_0x89e3('0x6'));var fs=require('fs');var path=require(_0x89e3('0x7'));var rimraf=require(_0x89e3('0x8'));var config=require(_0x89e3('0x9'));var attributes=require(_0x89e3('0xa'));module[_0x89e3('0xb')]=function(_0x424668,_0x592c1f){return _0x424668[_0x89e3('0xc')](_0x89e3('0xd'),attributes,{'tableName':_0x89e3('0xe'),'paranoid':![],'indexes':[{'name':_0x89e3('0xf'),'fields':[_0x89e3('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x02b4=['rimraf','../../config/environment','FaxTransferReport','report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','path'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x02b4,0x144));var _0x402b=function(_0x48873b,_0x20aab8){_0x48873b=_0x48873b-0x0;var _0x100451=_0x02b4[_0x48873b];return _0x100451;};'use strict';var _=require('lodash');var util=require(_0x402b('0x0'));var logger=require(_0x402b('0x1'))(_0x402b('0x2'));var moment=require(_0x402b('0x3'));var BPromise=require(_0x402b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x402b('0x5'));var rimraf=require(_0x402b('0x6'));var config=require(_0x402b('0x7'));var attributes=require('./faxTransferReport.attributes');module['exports']=function(_0x37d5c7,_0x3e2b0e){return _0x37d5c7['define'](_0x402b('0x8'),attributes,{'tableName':_0x402b('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x402b('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 02d0185..f58e26e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c3c=['error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x57b6e6,_0x34212a){var _0x3189a4=function(_0x22733c){while(--_0x22733c){_0x57b6e6['push'](_0x57b6e6['shift']());}};_0x3189a4(++_0x34212a);}(_0x4c3c,0x119));var _0xc4c3=function(_0x117649,_0x51deae){_0x117649=_0x117649-0x0;var _0x492fcb=_0x4c3c[_0x117649];return _0x492fcb;};'use strict';var _=require(_0xc4c3('0x0'));var util=require('util');var moment=require(_0xc4c3('0x1'));var BPromise=require(_0xc4c3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc4c3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc4c3('0x4'));var logger=require(_0xc4c3('0x5'))(_0xc4c3('0x6'));var config=require(_0xc4c3('0x7'));var jayson=require(_0xc4c3('0x8'));var client=jayson[_0xc4c3('0x9')][_0xc4c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x381227,_0x47d441,_0x51c4bc){return new BPromise(function(_0x23b36b,_0x118a7f){return client['request'](_0x381227,_0x51c4bc)[_0xc4c3('0xb')](function(_0x592848){logger[_0xc4c3('0xc')](_0xc4c3('0xd'),_0x47d441,_0xc4c3('0xe'));logger[_0xc4c3('0xf')](_0xc4c3('0x10'),_0x47d441,_0xc4c3('0xe'),JSON[_0xc4c3('0x11')](_0x592848));if(_0x592848[_0xc4c3('0x12')]){if(_0x592848['error'][_0xc4c3('0x13')]===0x1f4){logger[_0xc4c3('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x47d441,_0x592848['error'][_0xc4c3('0x14')]);return _0x118a7f(_0x592848['error'][_0xc4c3('0x14')]);}logger['error'](_0xc4c3('0xd'),_0x47d441,_0x592848[_0xc4c3('0x12')][_0xc4c3('0x14')]);return _0x23b36b(_0x592848[_0xc4c3('0x12')][_0xc4c3('0x14')]);}else{logger[_0xc4c3('0xc')](_0xc4c3('0xd'),_0x47d441,_0xc4c3('0xe'));_0x23b36b(_0x592848[_0xc4c3('0x15')][_0xc4c3('0x14')]);}})[_0xc4c3('0x16')](function(_0x4e6de3){logger[_0xc4c3('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x47d441,_0x4e6de3);_0x118a7f(_0x4e6de3);});});}
\ No newline at end of file
+var _0x0d41=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxTransferReport,\x20%s,\x20%s','result','catch','util','../../mysqldb'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x0d41,0x141));var _0x10d4=function(_0x410e44,_0x175a5f){_0x410e44=_0x410e44-0x0;var _0x55cb32=_0x0d41[_0x410e44];return _0x55cb32;};'use strict';var _=require('lodash');var util=require(_0x10d4('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x10d4('0x1'))['db'];var utils=require(_0x10d4('0x2'));var logger=require(_0x10d4('0x3'))(_0x10d4('0x4'));var config=require(_0x10d4('0x5'));var jayson=require(_0x10d4('0x6'));var client=jayson['client'][_0x10d4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x39bb7a,_0x4d5965,_0x4c17de){return new BPromise(function(_0x2b293e,_0x295d03){return client['request'](_0x39bb7a,_0x4c17de)[_0x10d4('0x8')](function(_0x299af9){logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x4d5965,_0x10d4('0x9'));logger[_0x10d4('0xa')](_0x10d4('0xb'),_0x4d5965,_0x10d4('0x9'),JSON[_0x10d4('0xc')](_0x299af9));if(_0x299af9[_0x10d4('0xd')]){if(_0x299af9[_0x10d4('0xd')][_0x10d4('0xe')]===0x1f4){logger[_0x10d4('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x4d5965,_0x299af9[_0x10d4('0xd')][_0x10d4('0xf')]);return _0x295d03(_0x299af9[_0x10d4('0xd')][_0x10d4('0xf')]);}logger[_0x10d4('0xd')](_0x10d4('0x10'),_0x4d5965,_0x299af9[_0x10d4('0xd')]['message']);return _0x2b293e(_0x299af9['error'][_0x10d4('0xf')]);}else{logger['info'](_0x10d4('0x10'),_0x4d5965,_0x10d4('0x9'));_0x2b293e(_0x299af9[_0x10d4('0x11')][_0x10d4('0xf')]);}})[_0x10d4('0x12')](function(_0x4da7fb){logger[_0x10d4('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x4d5965,_0x4da7fb);_0x295d03(_0x4da7fb);});});}
\ No newline at end of file
index d07dfe9..ae418f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb600=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','destroy','exports','multer','path','connect-timeout'];(function(_0x155483,_0x3413e7){var _0x30a141=function(_0x53d5d8){while(--_0x53d5d8){_0x155483['push'](_0x155483['shift']());}};_0x30a141(++_0x3413e7);}(_0xb600,0x123));var _0x0b60=function(_0x493057,_0x44d38b){_0x493057=_0x493057-0x0;var _0x3c8f43=_0xb600[_0x493057];return _0x3c8f43;};'use strict';var multer=require(_0x0b60('0x0'));var util=require('util');var path=require(_0x0b60('0x1'));var timeout=require(_0x0b60('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0b60('0x3'));var auth=require(_0x0b60('0x4'));var interaction=require(_0x0b60('0x5'));var config=require(_0x0b60('0x6'));var controller=require(_0x0b60('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0b60('0x8')]);router[_0x0b60('0x9')](_0x0b60('0xa'),auth[_0x0b60('0xb')](),controller[_0x0b60('0xc')]);router[_0x0b60('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x0b60('0xd')]);router[_0x0b60('0xe')]('/',auth[_0x0b60('0xb')](),controller[_0x0b60('0xf')]);router[_0x0b60('0x10')](_0x0b60('0x11'),auth['isAuthenticated'](),controller[_0x0b60('0x12')]);router['delete']('/:id',auth[_0x0b60('0xb')](),controller[_0x0b60('0x13')]);module[_0x0b60('0x14')]=router;
\ No newline at end of file
+var _0xf52c=['exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','/describe','describe','post','create','put','/:id','update','delete'];(function(_0x1cad8c,_0x1f0b1d){var _0x463b5a=function(_0xc228bb){while(--_0xc228bb){_0x1cad8c['push'](_0x1cad8c['shift']());}};_0x463b5a(++_0x1f0b1d);}(_0xf52c,0x144));var _0xcf52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf52c[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xcf52('0x0'));var path=require(_0xcf52('0x1'));var timeout=require('connect-timeout');var express=require(_0xcf52('0x2'));var router=express[_0xcf52('0x3')]();var fs_extra=require(_0xcf52('0x4'));var auth=require(_0xcf52('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcf52('0x6'));var controller=require(_0xcf52('0x7'));router[_0xcf52('0x8')]('/',auth[_0xcf52('0x9')](),controller['index']);router[_0xcf52('0x8')](_0xcf52('0xa'),auth[_0xcf52('0x9')](),controller[_0xcf52('0xb')]);router[_0xcf52('0x8')]('/:id',auth[_0xcf52('0x9')](),controller['show']);router[_0xcf52('0xc')]('/',auth[_0xcf52('0x9')](),controller[_0xcf52('0xd')]);router[_0xcf52('0xe')](_0xcf52('0xf'),auth[_0xcf52('0x9')](),controller[_0xcf52('0x10')]);router[_0xcf52('0x11')]('/:id',auth[_0xcf52('0x9')](),controller['destroy']);module[_0xcf52('0x12')]=router;
\ No newline at end of file
index 7d62acd..e9d80cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4637=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/configurations','post','create','addConfiguration','put','/:id','update'];(function(_0x24259d,_0x64a194){var _0x5a701=function(_0x204516){while(--_0x204516){_0x24259d['push'](_0x24259d['shift']());}};_0x5a701(++_0x64a194);}(_0x4637,0xb3));var _0x7463=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x4637[_0x5c351c];return _0x26f3b3;};'use strict';var multer=require(_0x7463('0x0'));var util=require(_0x7463('0x1'));var path=require('path');var timeout=require(_0x7463('0x2'));var express=require(_0x7463('0x3'));var router=express[_0x7463('0x4')]();var fs_extra=require(_0x7463('0x5'));var auth=require(_0x7463('0x6'));var interaction=require(_0x7463('0x7'));var config=require(_0x7463('0x8'));var controller=require('./intDeskAccount.controller');router[_0x7463('0x9')]('/',auth[_0x7463('0xa')](),controller[_0x7463('0xb')]);router[_0x7463('0x9')]('/:id',auth[_0x7463('0xa')](),controller['show']);router[_0x7463('0x9')](_0x7463('0xc'),auth[_0x7463('0xa')](),controller['getConfigurations']);router[_0x7463('0x9')]('/:id/fields',auth[_0x7463('0xa')](),controller['getFields']);router[_0x7463('0xd')]('/',auth[_0x7463('0xa')](),controller[_0x7463('0xe')]);router['post']('/:id/configurations',auth[_0x7463('0xa')](),controller[_0x7463('0xf')]);router[_0x7463('0x10')](_0x7463('0x11'),auth['isAuthenticated'](),controller[_0x7463('0x12')]);router[_0x7463('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7463('0x14')]);module[_0x7463('0x15')]=router;
\ No newline at end of file
+var _0xff2f=['create','/:id/configurations','addConfiguration','put','update','delete','destroy','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','getConfigurations','getFields','post'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xff2f,0xe3));var _0xfff2=function(_0x525ef9,_0x12b1c2){_0x525ef9=_0x525ef9-0x0;var _0x5561fb=_0xff2f[_0x525ef9];return _0x5561fb;};'use strict';var multer=require('multer');var util=require(_0xfff2('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfff2('0x1'));var router=express['Router']();var fs_extra=require(_0xfff2('0x2'));var auth=require(_0xfff2('0x3'));var interaction=require(_0xfff2('0x4'));var config=require(_0xfff2('0x5'));var controller=require('./intDeskAccount.controller');router[_0xfff2('0x6')]('/',auth[_0xfff2('0x7')](),controller[_0xfff2('0x8')]);router[_0xfff2('0x6')](_0xfff2('0x9'),auth[_0xfff2('0x7')](),controller['show']);router['get']('/:id/configurations',auth[_0xfff2('0x7')](),controller[_0xfff2('0xa')]);router[_0xfff2('0x6')]('/:id/fields',auth[_0xfff2('0x7')](),controller[_0xfff2('0xb')]);router[_0xfff2('0xc')]('/',auth['isAuthenticated'](),controller[_0xfff2('0xd')]);router[_0xfff2('0xc')](_0xfff2('0xe'),auth['isAuthenticated'](),controller[_0xfff2('0xf')]);router[_0xfff2('0x10')](_0xfff2('0x9'),auth[_0xfff2('0x7')](),controller[_0xfff2('0x11')]);router[_0xfff2('0x12')](_0xfff2('0x9'),auth[_0xfff2('0x7')](),controller[_0xfff2('0x13')]);module['exports']=router;
\ No newline at end of file
index 33eb4ff..0452b91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c82=['ENUM','basic','integrationTab','newTab','sequelize','STRING'];(function(_0xad0226,_0x209816){var _0x358de1=function(_0x564763){while(--_0x564763){_0xad0226['push'](_0xad0226['shift']());}};_0x358de1(++_0x209816);}(_0x4c82,0xa6));var _0x24c8=function(_0x5c84a6,_0x321f95){_0x5c84a6=_0x5c84a6-0x0;var _0xb8c5f0=_0x4c82[_0x5c84a6];return _0xb8c5f0;};'use strict';var Sequelize=require(_0x24c8('0x0'));module['exports']={'name':{'type':Sequelize[_0x24c8('0x1')]},'description':{'type':Sequelize[_0x24c8('0x1')]},'username':{'type':Sequelize[_0x24c8('0x1')]},'remoteUri':{'type':Sequelize[_0x24c8('0x1')]},'authType':{'type':Sequelize[_0x24c8('0x2')](_0x24c8('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x24c8('0x1')]},'consumerKey':{'type':Sequelize[_0x24c8('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x24c8('0x1')]},'tokenSecret':{'type':Sequelize[_0x24c8('0x1')]},'serverUrl':{'type':Sequelize[_0x24c8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x24c8('0x2')](_0x24c8('0x4'),_0x24c8('0x5')),'defaultValue':_0x24c8('0x4')}};
\ No newline at end of file
+var _0xf826=['sequelize','exports','STRING','basic','ENUM','integrationTab'];(function(_0x291f8b,_0x3b5591){var _0x275171=function(_0xb33d67){while(--_0xb33d67){_0x291f8b['push'](_0x291f8b['shift']());}};_0x275171(++_0x3b5591);}(_0xf826,0xa8));var _0x6f82=function(_0x19e306,_0x249d54){_0x19e306=_0x19e306-0x0;var _0x5169cb=_0xf826[_0x19e306];return _0x5169cb;};'use strict';var Sequelize=require(_0x6f82('0x0'));module[_0x6f82('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6f82('0x2')]},'username':{'type':Sequelize[_0x6f82('0x2')]},'remoteUri':{'type':Sequelize[_0x6f82('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x6f82('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x6f82('0x2')]},'consumerSecret':{'type':Sequelize[_0x6f82('0x2')]},'token':{'type':Sequelize[_0x6f82('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6f82('0x4')](_0x6f82('0x5'),'newTab'),'defaultValue':_0x6f82('0x5')}};
\ No newline at end of file
index 423b0ea..e0a2162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd3=['query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','pick','filter','where','merge','options','includeAll','findAll','rows','show','include','create','body','catch','params','find','sort','nolimit','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','DeskField','Subjects','getFields','priority','username','consumerKey','consumerSecret','token','tokenSecret','remoteUri','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','count','set','reject','save','update','then','destroy','end','stack','name','send','index','DeskAccount','rawAttributes','fieldName','type','key','model','map','keys'];(function(_0x24764f,_0x408b9d){var _0x347a86=function(_0x56b3b8){while(--_0x56b3b8){_0x24764f['push'](_0x24764f['shift']());}};_0x347a86(++_0x408b9d);}(_0x1fd3,0x12f));var _0x31fd=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x1fd3[_0x3e112d];return _0x531c31;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x31fd('0x0'));var zipdir=require(_0x31fd('0x1'));var jsonpatch=require(_0x31fd('0x2'));var rp=require(_0x31fd('0x3'));var moment=require(_0x31fd('0x4'));var BPromise=require(_0x31fd('0x5'));var Mustache=require(_0x31fd('0x6'));var util=require(_0x31fd('0x7'));var path=require('path');var sox=require(_0x31fd('0x8'));var csv=require(_0x31fd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x31fd('0xa'));var _=require(_0x31fd('0xb'));var squel=require(_0x31fd('0xc'));var crypto=require(_0x31fd('0xd'));var jsforce=require(_0x31fd('0xe'));var deskjs=require(_0x31fd('0xf'));var toCsv=require(_0x31fd('0x9'));var querystring=require(_0x31fd('0x10'));var Papa=require(_0x31fd('0x11'));var Redis=require(_0x31fd('0x12'));var authService=require(_0x31fd('0x13'));var qs=require(_0x31fd('0x14'));var as=require(_0x31fd('0x15'));var hardwareService=require(_0x31fd('0x16'));var logger=require(_0x31fd('0x17'))(_0x31fd('0x18'));var utils=require(_0x31fd('0x19'));var config=require(_0x31fd('0x1a'));var licenseUtil=require(_0x31fd('0x1b'));var db=require(_0x31fd('0x1c'))['db'];var integrations=require(_0x31fd('0x1d'));function respondWithStatusCode(_0x396498,_0x14df53){_0x14df53=_0x14df53||0xcc;return function(_0x3dfcaa){if(_0x3dfcaa){return _0x396498[_0x31fd('0x1e')](_0x14df53);}return _0x396498[_0x31fd('0x1f')](_0x14df53)['end']();};}function respondWithResult(_0x4f40af,_0x348a8d){_0x348a8d=_0x348a8d||0xc8;return function(_0x2f8d23){if(_0x2f8d23){return _0x4f40af[_0x31fd('0x1f')](_0x348a8d)['json'](_0x2f8d23);}};}function respondWithFilteredResult(_0xe64c14,_0x145e70){return function(_0x5cffa3){if(_0x5cffa3){var _0x4bd0d8=typeof _0x145e70[_0x31fd('0x20')]===_0x31fd('0x21')&&typeof _0x145e70['limit']==='undefined';var _0x26e710=_0x5cffa3[_0x31fd('0x22')];var _0x1236c7=_0x4bd0d8?0x0:_0x145e70[_0x31fd('0x20')];var _0x764688=_0x4bd0d8?_0x5cffa3[_0x31fd('0x22')]:_0x145e70[_0x31fd('0x20')]+_0x145e70['limit'];var _0x206908;if(_0x764688>=_0x26e710){_0x764688=_0x26e710;_0x206908=0xc8;}else{_0x206908=0xce;}_0xe64c14['status'](_0x206908);return _0xe64c14[_0x31fd('0x23')]('Content-Range',_0x1236c7+'-'+_0x764688+'/'+_0x26e710)['json'](_0x5cffa3);}return null;};}function patchUpdates(_0x1a8772){return function(_0x1d0ad5){try{jsonpatch['apply'](_0x1d0ad5,_0x1a8772,!![]);}catch(_0x2039de){return BPromise[_0x31fd('0x24')](_0x2039de);}return _0x1d0ad5[_0x31fd('0x25')]();};}function saveUpdates(_0x11c92a,_0x14914b){return function(_0x2d96ff){if(_0x2d96ff){return _0x2d96ff[_0x31fd('0x26')](_0x11c92a)[_0x31fd('0x27')](function(_0x24742f){return _0x24742f;});}return null;};}function removeEntity(_0x5348c5,_0x1886d3){return function(_0x4a4ee0){if(_0x4a4ee0){return _0x4a4ee0[_0x31fd('0x28')]()[_0x31fd('0x27')](function(){_0x5348c5[_0x31fd('0x1f')](0xcc)[_0x31fd('0x29')]();});}};}function handleEntityNotFound(_0x3c27ba,_0x2fc642){return function(_0x20cfaa){if(!_0x20cfaa){_0x3c27ba[_0x31fd('0x1e')](0x194);}return _0x20cfaa;};}function handleError(_0x1c8c23,_0x238006){_0x238006=_0x238006||0x1f4;return function(_0x16268c){logger['error'](_0x16268c[_0x31fd('0x2a')]);if(_0x16268c[_0x31fd('0x2b')]){delete _0x16268c[_0x31fd('0x2b')];}_0x1c8c23['status'](_0x238006)[_0x31fd('0x2c')](_0x16268c);};}exports[_0x31fd('0x2d')]=function(_0x58cb4c,_0x567baa){var _0x35afe8={},_0x22d4d5={},_0x42f3c9={'count':0x0,'rows':[]};var _0x7bcf69=_['map'](db[_0x31fd('0x2e')][_0x31fd('0x2f')],function(_0x12cd0d){return{'name':_0x12cd0d[_0x31fd('0x30')],'type':_0x12cd0d[_0x31fd('0x31')][_0x31fd('0x32')]};});_0x22d4d5[_0x31fd('0x33')]=_[_0x31fd('0x34')](_0x7bcf69,_0x31fd('0x2b'));_0x22d4d5['query']=_[_0x31fd('0x35')](_0x58cb4c[_0x31fd('0x36')]);_0x22d4d5[_0x31fd('0x37')]=_[_0x31fd('0x38')](_0x22d4d5[_0x31fd('0x33')],_0x22d4d5[_0x31fd('0x36')]);_0x35afe8[_0x31fd('0x39')]=_['intersection'](_0x22d4d5[_0x31fd('0x33')],qs[_0x31fd('0x3a')](_0x58cb4c['query'][_0x31fd('0x3a')]));_0x35afe8[_0x31fd('0x39')]=_0x35afe8[_0x31fd('0x39')][_0x31fd('0x3b')]?_0x35afe8[_0x31fd('0x39')]:_0x22d4d5[_0x31fd('0x33')];if(!_0x58cb4c['query'][_0x31fd('0x3c')]('nolimit')){_0x35afe8[_0x31fd('0x3d')]=qs[_0x31fd('0x3d')](_0x58cb4c[_0x31fd('0x36')][_0x31fd('0x3d')]);_0x35afe8['offset']=qs['offset'](_0x58cb4c[_0x31fd('0x36')]['offset']);}_0x35afe8[_0x31fd('0x3e')]=qs['sort'](_0x58cb4c['query']['sort']);_0x35afe8['where']=qs[_0x31fd('0x37')](_[_0x31fd('0x3f')](_0x58cb4c[_0x31fd('0x36')],_0x22d4d5[_0x31fd('0x37')]),_0x7bcf69);if(_0x58cb4c[_0x31fd('0x36')][_0x31fd('0x40')]){_0x35afe8[_0x31fd('0x41')]=_[_0x31fd('0x42')](_0x35afe8[_0x31fd('0x41')],{'$or':_[_0x31fd('0x34')](_0x7bcf69,function(_0x1dda8f){if(_0x1dda8f['type']!=='VIRTUAL'){var _0x371f49={};_0x371f49[_0x1dda8f['name']]={'$like':'%'+_0x58cb4c[_0x31fd('0x36')]['filter']+'%'};return _0x371f49;}})});}_0x35afe8=_['merge']({},_0x35afe8,_0x58cb4c[_0x31fd('0x43')]);var _0x272551={'where':_0x35afe8['where']};return db['DeskAccount'][_0x31fd('0x22')](_0x272551)[_0x31fd('0x27')](function(_0x5e2f8d){_0x42f3c9[_0x31fd('0x22')]=_0x5e2f8d;if(_0x58cb4c['query'][_0x31fd('0x44')]){_0x35afe8['include']=[{'all':!![]}];}return db[_0x31fd('0x2e')][_0x31fd('0x45')](_0x35afe8);})[_0x31fd('0x27')](function(_0xad0f0c){_0x42f3c9[_0x31fd('0x46')]=_0xad0f0c;return _0x42f3c9;})['then'](respondWithFilteredResult(_0x567baa,_0x35afe8))['catch'](handleError(_0x567baa,null));};exports[_0x31fd('0x47')]=function(_0xa846fa,_0x2b5ad7){var _0x3c455f={'raw':![],'where':{'id':_0xa846fa['params']['id']}},_0x30ffb7={};_0x30ffb7['model']=_[_0x31fd('0x35')](db[_0x31fd('0x2e')]['rawAttributes']);_0x30ffb7[_0x31fd('0x36')]=_[_0x31fd('0x35')](_0xa846fa[_0x31fd('0x36')]);_0x30ffb7['filters']=_[_0x31fd('0x38')](_0x30ffb7[_0x31fd('0x33')],_0x30ffb7['query']);_0x3c455f[_0x31fd('0x39')]=_[_0x31fd('0x38')](_0x30ffb7[_0x31fd('0x33')],qs[_0x31fd('0x3a')](_0xa846fa['query']['fields']));_0x3c455f[_0x31fd('0x39')]=_0x3c455f[_0x31fd('0x39')][_0x31fd('0x3b')]?_0x3c455f[_0x31fd('0x39')]:_0x30ffb7['model'];if(_0xa846fa['query']['includeAll']){_0x3c455f[_0x31fd('0x48')]=[{'all':!![]}];}_0x3c455f=_['merge']({},_0x3c455f,_0xa846fa[_0x31fd('0x43')]);return db[_0x31fd('0x2e')]['find'](_0x3c455f)[_0x31fd('0x27')](handleEntityNotFound(_0x2b5ad7,null))['then'](respondWithResult(_0x2b5ad7,null))['catch'](handleError(_0x2b5ad7,null));};exports[_0x31fd('0x49')]=function(_0x569fd7,_0x2ae1d5){return db[_0x31fd('0x2e')][_0x31fd('0x49')](_0x569fd7[_0x31fd('0x4a')],{})[_0x31fd('0x27')](respondWithResult(_0x2ae1d5,0xc9))[_0x31fd('0x4b')](handleError(_0x2ae1d5,null));};exports[_0x31fd('0x26')]=function(_0x51c744,_0x4c00fd){if(_0x51c744[_0x31fd('0x4a')]['id']){delete _0x51c744[_0x31fd('0x4a')]['id'];}return db[_0x31fd('0x2e')]['find']({'where':{'id':_0x51c744[_0x31fd('0x4c')]['id']}})[_0x31fd('0x27')](handleEntityNotFound(_0x4c00fd,null))[_0x31fd('0x27')](saveUpdates(_0x51c744[_0x31fd('0x4a')],null))[_0x31fd('0x27')](respondWithResult(_0x4c00fd,null))[_0x31fd('0x4b')](handleError(_0x4c00fd,null));};exports[_0x31fd('0x28')]=function(_0x276826,_0xeb5dbc){return db[_0x31fd('0x2e')][_0x31fd('0x4d')]({'where':{'id':_0x276826[_0x31fd('0x4c')]['id']}})[_0x31fd('0x27')](handleEntityNotFound(_0xeb5dbc,null))[_0x31fd('0x27')](removeEntity(_0xeb5dbc,null))[_0x31fd('0x4b')](handleError(_0xeb5dbc,null));};exports['getConfigurations']=function(_0x4979ca,_0x1e57d3,_0x419c88){var _0x3f419e={};var _0x44b212={};var _0x75279c;var _0x3f3bb4;return db['DeskAccount']['findOne']({'where':{'id':_0x4979ca['params']['id']}})['then'](handleEntityNotFound(_0x1e57d3,null))[_0x31fd('0x27')](function(_0x47a0bc){if(_0x47a0bc){_0x75279c=_0x47a0bc;_0x44b212[_0x31fd('0x33')]=_['keys'](db['DeskConfiguration'][_0x31fd('0x2f')]);_0x44b212[_0x31fd('0x36')]=_[_0x31fd('0x35')](_0x4979ca[_0x31fd('0x36')]);_0x44b212[_0x31fd('0x37')]=_[_0x31fd('0x38')](_0x44b212['model'],_0x44b212[_0x31fd('0x36')]);_0x3f419e[_0x31fd('0x39')]=_[_0x31fd('0x38')](_0x44b212['model'],qs[_0x31fd('0x3a')](_0x4979ca[_0x31fd('0x36')]['fields']));_0x3f419e[_0x31fd('0x39')]=_0x3f419e[_0x31fd('0x39')][_0x31fd('0x3b')]?_0x3f419e['attributes']:_0x44b212[_0x31fd('0x33')];_0x3f419e[_0x31fd('0x3e')]=qs['sort'](_0x4979ca['query'][_0x31fd('0x4e')]);_0x3f419e[_0x31fd('0x41')]=qs[_0x31fd('0x37')](_[_0x31fd('0x3f')](_0x4979ca['query'],_0x44b212[_0x31fd('0x37')]));if(_0x4979ca[_0x31fd('0x36')][_0x31fd('0x40')]){_0x3f419e[_0x31fd('0x41')]=_['merge'](_0x3f419e[_0x31fd('0x41')],{'$or':_[_0x31fd('0x34')](_0x3f419e[_0x31fd('0x39')],function(_0x2b6eb6){var _0x4899d7={};_0x4899d7[_0x2b6eb6]={'$like':'%'+_0x4979ca[_0x31fd('0x36')][_0x31fd('0x40')]+'%'};return _0x4899d7;})});}_0x3f419e=_[_0x31fd('0x42')]({},_0x3f419e,_0x4979ca[_0x31fd('0x43')]);return _0x75279c['getConfigurations'](_0x3f419e);}})['then'](function(_0x30dca5){if(_0x30dca5){_0x3f3bb4=_0x30dca5[_0x31fd('0x3b')];if(!_0x4979ca[_0x31fd('0x36')]['hasOwnProperty'](_0x31fd('0x4f'))){_0x3f419e[_0x31fd('0x3d')]=qs[_0x31fd('0x3d')](_0x4979ca[_0x31fd('0x36')]['limit']);_0x3f419e[_0x31fd('0x20')]=qs[_0x31fd('0x20')](_0x4979ca[_0x31fd('0x36')][_0x31fd('0x20')]);}return _0x75279c[_0x31fd('0x50')](_0x3f419e);}})[_0x31fd('0x27')](function(_0x5afcd6){if(_0x5afcd6){return _0x5afcd6?{'count':_0x3f3bb4,'rows':_0x5afcd6}:null;}})[_0x31fd('0x27')](respondWithResult(_0x1e57d3,null))[_0x31fd('0x4b')](handleError(_0x1e57d3,null));};exports[_0x31fd('0x51')]=function(_0x2eaa2b,_0x12c9f2,_0x5e6404){if(_0x2eaa2b['body']['id']){delete _0x2eaa2b[_0x31fd('0x4a')]['id'];}return db[_0x31fd('0x2e')][_0x31fd('0x52')]({'where':{'id':_0x2eaa2b[_0x31fd('0x4c')]['id']}})[_0x31fd('0x27')](handleEntityNotFound(_0x12c9f2,null))[_0x31fd('0x27')](function(_0x4190d6){if(_0x4190d6){_0x2eaa2b['body'][_0x31fd('0x53')]=_0x4190d6['id'];_0x2eaa2b['body']['Subjects']=integrations[_0x31fd('0x54')](_0x2eaa2b['body'][_0x31fd('0x55')],_0x2eaa2b[_0x31fd('0x4a')][_0x31fd('0x31')]);_0x2eaa2b['body'][_0x31fd('0x56')]=integrations[_0x31fd('0x57')](_0x2eaa2b[_0x31fd('0x4a')]['channel'],_0x2eaa2b[_0x31fd('0x4a')]['type']);return db['DeskConfiguration'][_0x31fd('0x49')](_0x2eaa2b[_0x31fd('0x4a')],{'include':[{'model':db[_0x31fd('0x58')],'as':_0x31fd('0x59')},{'model':db['DeskField'],'as':_0x31fd('0x56')}]});}return null;})[_0x31fd('0x27')](respondWithResult(_0x12c9f2,null))[_0x31fd('0x4b')](handleError(_0x12c9f2,null));};exports[_0x31fd('0x5a')]=function(_0x5148ce,_0x1dc993,_0x26b9b9){var _0x449e30=[{'name':'priority','label':_0x31fd('0x5b'),'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 _0x2c60a5='';return db[_0x31fd('0x2e')]['findOne']({'where':{'id':_0x5148ce[_0x31fd('0x4c')]['id']},'attributes':['id','remoteUri','authType',_0x31fd('0x5c'),'password',_0x31fd('0x5d'),_0x31fd('0x5e'),_0x31fd('0x5f'),_0x31fd('0x60')]})[_0x31fd('0x27')](handleEntityNotFound(_0x1dc993,null))[_0x31fd('0x27')](function(_0x5c1104){if(_0x5c1104){_0x2c60a5=_0x5c1104[_0x31fd('0x61')];var _0xdd6cf1=_0x2c60a5['slice'](-0x1);if(_0xdd6cf1==='/'){_0x2c60a5=_0x2c60a5['substring'](0x0,_0x2c60a5[_0x31fd('0x62')](_0xdd6cf1));}var _0x30ac3b={'method':_0x31fd('0x63'),'uri':util[_0x31fd('0x64')](_0x31fd('0x65'),_0x2c60a5),'headers':{'Content-Type':_0x31fd('0x66'),'Accept':_0x31fd('0x66')},'json':!![]};if(_0x5c1104[_0x31fd('0x67')]==='basic'){_0x30ac3b[_0x31fd('0x68')][_0x31fd('0x69')]=util[_0x31fd('0x64')](_0x31fd('0x6a'),new Buffer(util['format'](_0x31fd('0x6b'),_0x5c1104['username'],_0x5c1104['password']))[_0x31fd('0x6c')](_0x31fd('0x6d')));}return rp(_0x30ac3b)[_0x31fd('0x27')](function(_0x4927a9){return _0x449e30[_0x31fd('0x6e')](_[_0x31fd('0x34')](_0x4927a9[_0x31fd('0x6f')][_0x31fd('0x70')],function(_0x1628d1){return{'id':_0x1628d1['name'],'name':_0x1628d1['name'],'type':_0x1628d1[_0x31fd('0x31')],'active':_0x1628d1['active'],'label':_0x1628d1[_0x31fd('0x71')],'custom':!![]};}));});}})[_0x31fd('0x27')](function(_0x116009){return{'count':_0x116009[_0x31fd('0x3b')],'rows':_0x116009};})[_0x31fd('0x27')](respondWithResult(_0x1dc993,null))[_0x31fd('0x4b')](function(_0x298d51){var _0x1cd3a2=_0x5148ce['query'][_0x31fd('0x72')]?0x1f4:_0x298d51[_0x31fd('0x73')]||0x1f4;logger['error'](_0x31fd('0x74'),_0x31fd('0x5a'),_0x1cd3a2,JSON[_0x31fd('0x75')](_0x298d51));delete _0x298d51[_0x31fd('0x2b')];if(_0x1cd3a2===0x191){_0x1cd3a2=0x190;}_0x1dc993['status'](_0x1cd3a2)[_0x31fd('0x2c')](_0x5148ce[_0x31fd('0x36')][_0x31fd('0x72')]?{'message':_0x31fd('0x76'),'statusCode':_0x298d51[_0x31fd('0x73')]}:_0x298d51);});};
\ No newline at end of file
+var _0x81d6=['apply','reject','save','update','then','destroy','error','stack','name','index','map','DeskAccount','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','show','find','create','body','params','findOne','getConfigurations','addConfiguration','Subjects','getSubjects','channel','Descriptions','DeskConfiguration','DeskField','getFields','priority','remoteUri','username','consumerKey','consumerSecret','tokenSecret','substring','GET','format','application/json','authType','basic','headers','Authorization','%s:%s','password','toString','base64','concat','_embedded','entries','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','statusCode','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range'];(function(_0x24e891,_0x1542fd){var _0xc3fe0=function(_0x1f75a3){while(--_0x1f75a3){_0x24e891['push'](_0x24e891['shift']());}};_0xc3fe0(++_0x1542fd);}(_0x81d6,0x12b));var _0x681d=function(_0x50b06f,_0x4b0bce){_0x50b06f=_0x50b06f-0x0;var _0x334ce4=_0x81d6[_0x50b06f];return _0x334ce4;};'use strict';var emlformat=require(_0x681d('0x0'));var rimraf=require(_0x681d('0x1'));var zipdir=require(_0x681d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x681d('0x3'));var BPromise=require(_0x681d('0x4'));var Mustache=require('mustache');var util=require(_0x681d('0x5'));var path=require(_0x681d('0x6'));var sox=require(_0x681d('0x7'));var csv=require(_0x681d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x681d('0x9'));var squel=require(_0x681d('0xa'));var crypto=require(_0x681d('0xb'));var jsforce=require(_0x681d('0xc'));var deskjs=require(_0x681d('0xd'));var toCsv=require(_0x681d('0x8'));var querystring=require(_0x681d('0xe'));var Papa=require(_0x681d('0xf'));var Redis=require('ioredis');var authService=require(_0x681d('0x10'));var qs=require(_0x681d('0x11'));var as=require(_0x681d('0x12'));var hardwareService=require(_0x681d('0x13'));var logger=require(_0x681d('0x14'))(_0x681d('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x681d('0x16'));var db=require(_0x681d('0x17'))['db'];var integrations=require(_0x681d('0x18'));function respondWithStatusCode(_0x4e7b65,_0x4edd46){_0x4edd46=_0x4edd46||0xcc;return function(_0x3e36c9){if(_0x3e36c9){return _0x4e7b65['sendStatus'](_0x4edd46);}return _0x4e7b65[_0x681d('0x19')](_0x4edd46)[_0x681d('0x1a')]();};}function respondWithResult(_0x4fc97a,_0x7176e2){_0x7176e2=_0x7176e2||0xc8;return function(_0x18a65b){if(_0x18a65b){return _0x4fc97a[_0x681d('0x19')](_0x7176e2)[_0x681d('0x1b')](_0x18a65b);}};}function respondWithFilteredResult(_0x3152b5,_0x454d21){return function(_0x1433c2){if(_0x1433c2){var _0x52de3e=typeof _0x454d21[_0x681d('0x1c')]==='undefined'&&typeof _0x454d21[_0x681d('0x1d')]===_0x681d('0x1e');var _0x362515=_0x1433c2[_0x681d('0x1f')];var _0x4bbefc=_0x52de3e?0x0:_0x454d21[_0x681d('0x1c')];var _0x5cbbcc=_0x52de3e?_0x1433c2['count']:_0x454d21[_0x681d('0x1c')]+_0x454d21[_0x681d('0x1d')];var _0x19f665;if(_0x5cbbcc>=_0x362515){_0x5cbbcc=_0x362515;_0x19f665=0xc8;}else{_0x19f665=0xce;}_0x3152b5[_0x681d('0x19')](_0x19f665);return _0x3152b5[_0x681d('0x20')](_0x681d('0x21'),_0x4bbefc+'-'+_0x5cbbcc+'/'+_0x362515)['json'](_0x1433c2);}return null;};}function patchUpdates(_0x16b2b9){return function(_0x391921){try{jsonpatch[_0x681d('0x22')](_0x391921,_0x16b2b9,!![]);}catch(_0x19a166){return BPromise[_0x681d('0x23')](_0x19a166);}return _0x391921[_0x681d('0x24')]();};}function saveUpdates(_0x1efd6d,_0x54110d){return function(_0x5e2450){if(_0x5e2450){return _0x5e2450[_0x681d('0x25')](_0x1efd6d)[_0x681d('0x26')](function(_0x3a9bbe){return _0x3a9bbe;});}return null;};}function removeEntity(_0x7c7ffb,_0x10b77f){return function(_0x3ae7ce){if(_0x3ae7ce){return _0x3ae7ce[_0x681d('0x27')]()[_0x681d('0x26')](function(){_0x7c7ffb['status'](0xcc)[_0x681d('0x1a')]();});}};}function handleEntityNotFound(_0xf62a5f,_0x1c65ba){return function(_0x266aa9){if(!_0x266aa9){_0xf62a5f['sendStatus'](0x194);}return _0x266aa9;};}function handleError(_0x37a1a7,_0x6d055b){_0x6d055b=_0x6d055b||0x1f4;return function(_0x561075){logger[_0x681d('0x28')](_0x561075[_0x681d('0x29')]);if(_0x561075[_0x681d('0x2a')]){delete _0x561075[_0x681d('0x2a')];}_0x37a1a7[_0x681d('0x19')](_0x6d055b)['send'](_0x561075);};}exports[_0x681d('0x2b')]=function(_0x27d396,_0x408984){var _0x500508={},_0x58dccc={},_0x1c6dcb={'count':0x0,'rows':[]};var _0x5cb8bf=_[_0x681d('0x2c')](db[_0x681d('0x2d')][_0x681d('0x2e')],function(_0x18e619){return{'name':_0x18e619[_0x681d('0x2f')],'type':_0x18e619['type'][_0x681d('0x30')]};});_0x58dccc['model']=_[_0x681d('0x2c')](_0x5cb8bf,_0x681d('0x2a'));_0x58dccc[_0x681d('0x31')]=_[_0x681d('0x32')](_0x27d396[_0x681d('0x31')]);_0x58dccc[_0x681d('0x33')]=_[_0x681d('0x34')](_0x58dccc[_0x681d('0x35')],_0x58dccc[_0x681d('0x31')]);_0x500508[_0x681d('0x36')]=_[_0x681d('0x34')](_0x58dccc['model'],qs[_0x681d('0x37')](_0x27d396[_0x681d('0x31')][_0x681d('0x37')]));_0x500508[_0x681d('0x36')]=_0x500508[_0x681d('0x36')][_0x681d('0x38')]?_0x500508[_0x681d('0x36')]:_0x58dccc[_0x681d('0x35')];if(!_0x27d396[_0x681d('0x31')][_0x681d('0x39')]('nolimit')){_0x500508['limit']=qs[_0x681d('0x1d')](_0x27d396[_0x681d('0x31')][_0x681d('0x1d')]);_0x500508[_0x681d('0x1c')]=qs[_0x681d('0x1c')](_0x27d396[_0x681d('0x31')][_0x681d('0x1c')]);}_0x500508[_0x681d('0x3a')]=qs[_0x681d('0x3b')](_0x27d396[_0x681d('0x31')][_0x681d('0x3b')]);_0x500508[_0x681d('0x3c')]=qs[_0x681d('0x33')](_[_0x681d('0x3d')](_0x27d396[_0x681d('0x31')],_0x58dccc[_0x681d('0x33')]),_0x5cb8bf);if(_0x27d396[_0x681d('0x31')][_0x681d('0x3e')]){_0x500508[_0x681d('0x3c')]=_[_0x681d('0x3f')](_0x500508[_0x681d('0x3c')],{'$or':_[_0x681d('0x2c')](_0x5cb8bf,function(_0x305ef4){if(_0x305ef4[_0x681d('0x40')]!=='VIRTUAL'){var _0x3f42b7={};_0x3f42b7[_0x305ef4[_0x681d('0x2a')]]={'$like':'%'+_0x27d396[_0x681d('0x31')][_0x681d('0x3e')]+'%'};return _0x3f42b7;}})});}_0x500508=_[_0x681d('0x3f')]({},_0x500508,_0x27d396[_0x681d('0x41')]);var _0x3b7bac={'where':_0x500508[_0x681d('0x3c')]};return db[_0x681d('0x2d')]['count'](_0x3b7bac)[_0x681d('0x26')](function(_0x31c695){_0x1c6dcb[_0x681d('0x1f')]=_0x31c695;if(_0x27d396[_0x681d('0x31')][_0x681d('0x42')]){_0x500508[_0x681d('0x43')]=[{'all':!![]}];}return db[_0x681d('0x2d')]['findAll'](_0x500508);})[_0x681d('0x26')](function(_0x148a66){_0x1c6dcb[_0x681d('0x44')]=_0x148a66;return _0x1c6dcb;})[_0x681d('0x26')](respondWithFilteredResult(_0x408984,_0x500508))[_0x681d('0x45')](handleError(_0x408984,null));};exports[_0x681d('0x46')]=function(_0x1be710,_0x1cba85){var _0x2065a4={'raw':![],'where':{'id':_0x1be710['params']['id']}},_0x3a5d87={};_0x3a5d87['model']=_[_0x681d('0x32')](db['DeskAccount'][_0x681d('0x2e')]);_0x3a5d87[_0x681d('0x31')]=_[_0x681d('0x32')](_0x1be710[_0x681d('0x31')]);_0x3a5d87['filters']=_['intersection'](_0x3a5d87[_0x681d('0x35')],_0x3a5d87['query']);_0x2065a4[_0x681d('0x36')]=_['intersection'](_0x3a5d87[_0x681d('0x35')],qs[_0x681d('0x37')](_0x1be710[_0x681d('0x31')][_0x681d('0x37')]));_0x2065a4['attributes']=_0x2065a4[_0x681d('0x36')]['length']?_0x2065a4[_0x681d('0x36')]:_0x3a5d87[_0x681d('0x35')];if(_0x1be710[_0x681d('0x31')]['includeAll']){_0x2065a4[_0x681d('0x43')]=[{'all':!![]}];}_0x2065a4=_[_0x681d('0x3f')]({},_0x2065a4,_0x1be710[_0x681d('0x41')]);return db[_0x681d('0x2d')][_0x681d('0x47')](_0x2065a4)['then'](handleEntityNotFound(_0x1cba85,null))['then'](respondWithResult(_0x1cba85,null))['catch'](handleError(_0x1cba85,null));};exports[_0x681d('0x48')]=function(_0x1dfd4c,_0x52a3aa){return db[_0x681d('0x2d')][_0x681d('0x48')](_0x1dfd4c[_0x681d('0x49')],{})['then'](respondWithResult(_0x52a3aa,0xc9))[_0x681d('0x45')](handleError(_0x52a3aa,null));};exports[_0x681d('0x25')]=function(_0x3a6d41,_0x1cfdb5){if(_0x3a6d41['body']['id']){delete _0x3a6d41[_0x681d('0x49')]['id'];}return db[_0x681d('0x2d')][_0x681d('0x47')]({'where':{'id':_0x3a6d41[_0x681d('0x4a')]['id']}})[_0x681d('0x26')](handleEntityNotFound(_0x1cfdb5,null))[_0x681d('0x26')](saveUpdates(_0x3a6d41['body'],null))[_0x681d('0x26')](respondWithResult(_0x1cfdb5,null))[_0x681d('0x45')](handleError(_0x1cfdb5,null));};exports[_0x681d('0x27')]=function(_0x5b8113,_0x110223){return db[_0x681d('0x2d')]['find']({'where':{'id':_0x5b8113[_0x681d('0x4a')]['id']}})[_0x681d('0x26')](handleEntityNotFound(_0x110223,null))[_0x681d('0x26')](removeEntity(_0x110223,null))[_0x681d('0x45')](handleError(_0x110223,null));};exports['getConfigurations']=function(_0x283dba,_0x56cd31,_0x1c5c9e){var _0xc15e03={};var _0x39af00={};var _0x475d80;var _0x1b7f8d;return db[_0x681d('0x2d')][_0x681d('0x4b')]({'where':{'id':_0x283dba[_0x681d('0x4a')]['id']}})[_0x681d('0x26')](handleEntityNotFound(_0x56cd31,null))[_0x681d('0x26')](function(_0x5dd674){if(_0x5dd674){_0x475d80=_0x5dd674;_0x39af00[_0x681d('0x35')]=_[_0x681d('0x32')](db['DeskConfiguration'][_0x681d('0x2e')]);_0x39af00[_0x681d('0x31')]=_[_0x681d('0x32')](_0x283dba[_0x681d('0x31')]);_0x39af00[_0x681d('0x33')]=_['intersection'](_0x39af00[_0x681d('0x35')],_0x39af00['query']);_0xc15e03[_0x681d('0x36')]=_[_0x681d('0x34')](_0x39af00['model'],qs[_0x681d('0x37')](_0x283dba['query'][_0x681d('0x37')]));_0xc15e03['attributes']=_0xc15e03[_0x681d('0x36')][_0x681d('0x38')]?_0xc15e03[_0x681d('0x36')]:_0x39af00['model'];_0xc15e03['order']=qs[_0x681d('0x3b')](_0x283dba[_0x681d('0x31')][_0x681d('0x3b')]);_0xc15e03['where']=qs[_0x681d('0x33')](_[_0x681d('0x3d')](_0x283dba[_0x681d('0x31')],_0x39af00[_0x681d('0x33')]));if(_0x283dba[_0x681d('0x31')][_0x681d('0x3e')]){_0xc15e03[_0x681d('0x3c')]=_[_0x681d('0x3f')](_0xc15e03[_0x681d('0x3c')],{'$or':_[_0x681d('0x2c')](_0xc15e03[_0x681d('0x36')],function(_0xd8fcd8){var _0x4f862a={};_0x4f862a[_0xd8fcd8]={'$like':'%'+_0x283dba['query']['filter']+'%'};return _0x4f862a;})});}_0xc15e03=_[_0x681d('0x3f')]({},_0xc15e03,_0x283dba[_0x681d('0x41')]);return _0x475d80[_0x681d('0x4c')](_0xc15e03);}})[_0x681d('0x26')](function(_0x32861f){if(_0x32861f){_0x1b7f8d=_0x32861f[_0x681d('0x38')];if(!_0x283dba[_0x681d('0x31')][_0x681d('0x39')]('nolimit')){_0xc15e03[_0x681d('0x1d')]=qs[_0x681d('0x1d')](_0x283dba[_0x681d('0x31')][_0x681d('0x1d')]);_0xc15e03['offset']=qs['offset'](_0x283dba[_0x681d('0x31')][_0x681d('0x1c')]);}return _0x475d80[_0x681d('0x4c')](_0xc15e03);}})[_0x681d('0x26')](function(_0x32671b){if(_0x32671b){return _0x32671b?{'count':_0x1b7f8d,'rows':_0x32671b}:null;}})[_0x681d('0x26')](respondWithResult(_0x56cd31,null))[_0x681d('0x45')](handleError(_0x56cd31,null));};exports[_0x681d('0x4d')]=function(_0x34de53,_0x5bbcb6,_0xde7337){if(_0x34de53[_0x681d('0x49')]['id']){delete _0x34de53[_0x681d('0x49')]['id'];}return db[_0x681d('0x2d')][_0x681d('0x4b')]({'where':{'id':_0x34de53[_0x681d('0x4a')]['id']}})[_0x681d('0x26')](handleEntityNotFound(_0x5bbcb6,null))[_0x681d('0x26')](function(_0x1c785e){if(_0x1c785e){_0x34de53['body']['AccountId']=_0x1c785e['id'];_0x34de53['body'][_0x681d('0x4e')]=integrations[_0x681d('0x4f')](_0x34de53[_0x681d('0x49')][_0x681d('0x50')],_0x34de53[_0x681d('0x49')][_0x681d('0x40')]);_0x34de53[_0x681d('0x49')][_0x681d('0x51')]=integrations['getDescriptions'](_0x34de53[_0x681d('0x49')]['channel'],_0x34de53[_0x681d('0x49')][_0x681d('0x40')]);return db[_0x681d('0x52')]['create'](_0x34de53[_0x681d('0x49')],{'include':[{'model':db[_0x681d('0x53')],'as':_0x681d('0x4e')},{'model':db[_0x681d('0x53')],'as':_0x681d('0x51')}]});}return null;})[_0x681d('0x26')](respondWithResult(_0x5bbcb6,null))['catch'](handleError(_0x5bbcb6,null));};exports[_0x681d('0x54')]=function(_0xb017ac,_0xbd7258,_0x205592){var _0x1e8677=[{'name':_0x681d('0x55'),'label':_0x681d('0x55'),'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 _0x55454f='';return db[_0x681d('0x2d')]['findOne']({'where':{'id':_0xb017ac['params']['id']},'attributes':['id',_0x681d('0x56'),'authType',_0x681d('0x57'),'password',_0x681d('0x58'),_0x681d('0x59'),'token',_0x681d('0x5a')]})[_0x681d('0x26')](handleEntityNotFound(_0xbd7258,null))[_0x681d('0x26')](function(_0x294b6a){if(_0x294b6a){_0x55454f=_0x294b6a[_0x681d('0x56')];var _0x126a9b=_0x55454f['slice'](-0x1);if(_0x126a9b==='/'){_0x55454f=_0x55454f[_0x681d('0x5b')](0x0,_0x55454f['lastIndexOf'](_0x126a9b));}var _0x5c37d0={'method':_0x681d('0x5c'),'uri':util[_0x681d('0x5d')]('%s/custom_fields',_0x55454f),'headers':{'Content-Type':_0x681d('0x5e'),'Accept':_0x681d('0x5e')},'json':!![]};if(_0x294b6a[_0x681d('0x5f')]===_0x681d('0x60')){_0x5c37d0[_0x681d('0x61')][_0x681d('0x62')]=util['format']('Basic\x20%s',new Buffer(util['format'](_0x681d('0x63'),_0x294b6a['username'],_0x294b6a[_0x681d('0x64')]))[_0x681d('0x65')](_0x681d('0x66')));}return rp(_0x5c37d0)[_0x681d('0x26')](function(_0x4e2289){return _0x1e8677[_0x681d('0x67')](_[_0x681d('0x2c')](_0x4e2289[_0x681d('0x68')][_0x681d('0x69')],function(_0x31d5de){return{'id':_0x31d5de['name'],'name':_0x31d5de[_0x681d('0x2a')],'type':_0x31d5de[_0x681d('0x40')],'active':_0x31d5de['active'],'label':_0x31d5de['label'],'custom':!![]};}));});}})[_0x681d('0x26')](function(_0x4d0066){return{'count':_0x4d0066[_0x681d('0x38')],'rows':_0x4d0066};})['then'](respondWithResult(_0xbd7258,null))[_0x681d('0x45')](function(_0x5ab4e8){var _0x3c47cd=_0xb017ac[_0x681d('0x31')][_0x681d('0x6a')]?0x1f4:_0x5ab4e8['statusCode']||0x1f4;logger['error'](_0x681d('0x6b'),_0x681d('0x54'),_0x3c47cd,JSON[_0x681d('0x6c')](_0x5ab4e8));delete _0x5ab4e8[_0x681d('0x2a')];if(_0x3c47cd===0x191){_0x3c47cd=0x190;}_0xbd7258[_0x681d('0x19')](_0x3c47cd)[_0x681d('0x6d')](_0xb017ac[_0x681d('0x31')][_0x681d('0x6a')]?{'message':'Wrong\x20credentials','statusCode':_0x5ab4e8[_0x681d('0x6e')]}:_0x5ab4e8);});};
\ No newline at end of file
index 380a975..e7af055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd6=['./intDeskAccount.attributes','exports','define','DeskAccount','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xecd6,0x19c));var _0x6ecd=function(_0x80c7da,_0x246729){_0x80c7da=_0x80c7da-0x0;var _0x42e4b6=_0xecd6[_0x80c7da];return _0x42e4b6;};'use strict';var _=require(_0x6ecd('0x0'));var util=require(_0x6ecd('0x1'));var logger=require(_0x6ecd('0x2'))(_0x6ecd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6ecd('0x4'));var fs=require('fs');var path=require(_0x6ecd('0x5'));var rimraf=require(_0x6ecd('0x6'));var config=require(_0x6ecd('0x7'));var attributes=require(_0x6ecd('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x6ecd('0x9')]=function(_0x3671e4,_0x198f1d){return _0x3671e4[_0x6ecd('0xa')](_0x6ecd('0xb'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5740=['bluebird','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','moment'];(function(_0x3dfd1e,_0x4bc8cf){var _0x11f2d2=function(_0x294b05){while(--_0x294b05){_0x3dfd1e['push'](_0x3dfd1e['shift']());}};_0x11f2d2(++_0x4bc8cf);}(_0x5740,0x1bc));var _0x0574=function(_0x336cde,_0xdeed9a){_0x336cde=_0x336cde-0x0;var _0x184d80=_0x5740[_0x336cde];return _0x184d80;};'use strict';var _=require(_0x0574('0x0'));var util=require(_0x0574('0x1'));var logger=require(_0x0574('0x2'))('api');var moment=require(_0x0574('0x3'));var BPromise=require(_0x0574('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0574('0x5'));var rimraf=require(_0x0574('0x6'));var config=require(_0x0574('0x7'));var attributes=require(_0x0574('0x8'));var integrations=require(_0x0574('0x9'));module[_0x0574('0xa')]=function(_0x1447ed,_0x2b8d1d){return _0x1447ed[_0x0574('0xb')](_0x0574('0xc'),attributes,{'tableName':_0x0574('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d50f12..d04f215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cef=['options','raw','limit','include','map','attributes','model','debug','stringify','ShowDeskAccount','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','error','code','message','DeskAccount,\x20%s,\x20%s','catch','GetDeskAccount','DeskAccount','findAll'];(function(_0x430ce1,_0x12449a){var _0x3c64e9=function(_0x496bce){while(--_0x496bce){_0x430ce1['push'](_0x430ce1['shift']());}};_0x3c64e9(++_0x12449a);}(_0x9cef,0xdd));var _0xf9ce=function(_0x3a2e4b,_0x1fc1f7){_0x3a2e4b=_0x3a2e4b-0x0;var _0x3697d9=_0x9cef[_0x3a2e4b];return _0x3697d9;};'use strict';var _=require(_0xf9ce('0x0'));var util=require('util');var moment=require(_0xf9ce('0x1'));var BPromise=require(_0xf9ce('0x2'));var rs=require(_0xf9ce('0x3'));var fs=require('fs');var Redis=require(_0xf9ce('0x4'));var db=require(_0xf9ce('0x5'))['db'];var utils=require(_0xf9ce('0x6'));var logger=require('../../config/logger')(_0xf9ce('0x7'));var config=require(_0xf9ce('0x8'));var jayson=require(_0xf9ce('0x9'));var client=jayson[_0xf9ce('0xa')][_0xf9ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a9462,_0x3c1adf,_0x5931d0){return new BPromise(function(_0x26b81e,_0x582af7){return client[_0xf9ce('0xc')](_0x5a9462,_0x5931d0)[_0xf9ce('0xd')](function(_0x46984a){logger[_0xf9ce('0xe')]('DeskAccount,\x20%s,\x20%s',_0x3c1adf,_0xf9ce('0xf'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x3c1adf,_0xf9ce('0xf'),JSON['stringify'](_0x46984a));if(_0x46984a['error']){if(_0x46984a[_0xf9ce('0x10')][_0xf9ce('0x11')]===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x3c1adf,_0x46984a[_0xf9ce('0x10')][_0xf9ce('0x12')]);return _0x582af7(_0x46984a[_0xf9ce('0x10')]['message']);}logger[_0xf9ce('0x10')](_0xf9ce('0x13'),_0x3c1adf,_0x46984a[_0xf9ce('0x10')][_0xf9ce('0x12')]);return _0x26b81e(_0x46984a[_0xf9ce('0x10')][_0xf9ce('0x12')]);}else{logger[_0xf9ce('0xe')](_0xf9ce('0x13'),_0x3c1adf,_0xf9ce('0xf'));_0x26b81e(_0x46984a['result']['message']);}})[_0xf9ce('0x14')](function(_0xfa68fd){logger[_0xf9ce('0x10')](_0xf9ce('0x13'),_0x3c1adf,_0xfa68fd);_0x582af7(_0xfa68fd);});});}exports[_0xf9ce('0x15')]=function(_0x424fdc){var _0x1af89d=this;return new Promise(function(_0x47eebe,_0xab3690){return db[_0xf9ce('0x16')][_0xf9ce('0x17')]({'raw':_0x424fdc[_0xf9ce('0x18')]?_0x424fdc[_0xf9ce('0x18')][_0xf9ce('0x19')]===undefined?!![]:![]:!![],'where':_0x424fdc[_0xf9ce('0x18')]?_0x424fdc[_0xf9ce('0x18')]['where']||null:null,'attributes':_0x424fdc[_0xf9ce('0x18')]?_0x424fdc[_0xf9ce('0x18')]['attributes']||null:null,'limit':_0x424fdc[_0xf9ce('0x18')]?_0x424fdc[_0xf9ce('0x18')][_0xf9ce('0x1a')]||null:null,'include':_0x424fdc[_0xf9ce('0x18')]?_0x424fdc[_0xf9ce('0x18')][_0xf9ce('0x1b')]?_[_0xf9ce('0x1c')](_0x424fdc['options'][_0xf9ce('0x1b')],function(_0x58c5da){return{'model':db[_0x58c5da['model']],'as':_0x58c5da['as'],'attributes':_0x58c5da[_0xf9ce('0x1d')],'include':_0x58c5da[_0xf9ce('0x1b')]?_['map'](_0x58c5da[_0xf9ce('0x1b')],function(_0x2e6c20){return{'model':db[_0x2e6c20[_0xf9ce('0x1e')]],'as':_0x2e6c20['as'],'attributes':_0x2e6c20['attributes'],'include':_0x2e6c20[_0xf9ce('0x1b')]?_['map'](_0x2e6c20['include'],function(_0x558008){return{'model':db[_0x558008[_0xf9ce('0x1e')]],'as':_0x558008['as'],'attributes':_0x558008['attributes']};}):[]};}):[]};}):[]:[]})[_0xf9ce('0xd')](function(_0x1cfed9){logger['info'](_0xf9ce('0x15'),_0x424fdc);logger[_0xf9ce('0x1f')](_0xf9ce('0x15'),_0x424fdc,JSON[_0xf9ce('0x20')](_0x1cfed9));_0x47eebe(_0x1cfed9);})[_0xf9ce('0x14')](function(_0x301982){logger['error'](_0xf9ce('0x15'),_0x301982['message'],_0x424fdc);_0xab3690(_0x1af89d['error'](0x1f4,_0x301982['message']));});});};exports[_0xf9ce('0x21')]=function(_0x3b6c0b){var _0x37dcac=this;return new Promise(function(_0x1b4885,_0x7c2326){return db[_0xf9ce('0x16')]['find']({'raw':_0x3b6c0b['options']?_0x3b6c0b['options'][_0xf9ce('0x19')]===undefined?!![]:![]:!![],'where':_0x3b6c0b[_0xf9ce('0x18')]?_0x3b6c0b['options'][_0xf9ce('0x22')]||null:null,'attributes':_0x3b6c0b[_0xf9ce('0x18')]?_0x3b6c0b['options'][_0xf9ce('0x1d')]||null:null,'include':_0x3b6c0b[_0xf9ce('0x18')]?_0x3b6c0b[_0xf9ce('0x18')][_0xf9ce('0x1b')]?_[_0xf9ce('0x1c')](_0x3b6c0b[_0xf9ce('0x18')]['include'],function(_0x339a59){return{'model':db[_0x339a59[_0xf9ce('0x1e')]],'as':_0x339a59['as'],'attributes':_0x339a59[_0xf9ce('0x1d')],'include':_0x339a59[_0xf9ce('0x1b')]?_[_0xf9ce('0x1c')](_0x339a59[_0xf9ce('0x1b')],function(_0x22988e){return{'model':db[_0x22988e[_0xf9ce('0x1e')]],'as':_0x22988e['as'],'attributes':_0x22988e['attributes'],'include':_0x22988e[_0xf9ce('0x1b')]?_[_0xf9ce('0x1c')](_0x22988e[_0xf9ce('0x1b')],function(_0x23646){return{'model':db[_0x23646[_0xf9ce('0x1e')]],'as':_0x23646['as'],'attributes':_0x23646['attributes']};}):[]};}):[]};}):[]:[]})[_0xf9ce('0xd')](function(_0x565885){logger[_0xf9ce('0xe')](_0xf9ce('0x21'),_0x3b6c0b);logger[_0xf9ce('0x1f')](_0xf9ce('0x21'),_0x3b6c0b,JSON['stringify'](_0x565885));_0x1b4885(_0x565885);})[_0xf9ce('0x14')](function(_0x5a292f){logger[_0xf9ce('0x10')]('ShowDeskAccount',_0x5a292f['message'],_0x3b6c0b);_0x7c2326(_0x37dcac[_0xf9ce('0x10')](0x1f4,_0x5a292f[_0xf9ce('0x12')]));});});};
\ No newline at end of file
+var _0xf71c=['where','attributes','map','model','include','GetDeskAccount','catch','ShowDeskAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','DeskAccount,\x20%s,\x20%s','message','result','findAll','options','raw'];(function(_0x2eebfa,_0x2b23fd){var _0xdb8044=function(_0x3f11e0){while(--_0x3f11e0){_0x2eebfa['push'](_0x2eebfa['shift']());}};_0xdb8044(++_0x2b23fd);}(_0xf71c,0x90));var _0xcf71=function(_0x49dfad,_0x30fe92){_0x49dfad=_0x49dfad-0x0;var _0x42d287=_0xf71c[_0x49dfad];return _0x42d287;};'use strict';var _=require(_0xcf71('0x0'));var util=require(_0xcf71('0x1'));var moment=require('moment');var BPromise=require(_0xcf71('0x2'));var rs=require(_0xcf71('0x3'));var fs=require('fs');var Redis=require(_0xcf71('0x4'));var db=require(_0xcf71('0x5'))['db'];var utils=require(_0xcf71('0x6'));var logger=require(_0xcf71('0x7'))('rpc');var config=require(_0xcf71('0x8'));var jayson=require(_0xcf71('0x9'));var client=jayson['client'][_0xcf71('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9d79c5,_0x367693,_0x5ede5a){return new BPromise(function(_0x4ddbd5,_0x1731b4){return client[_0xcf71('0xb')](_0x9d79c5,_0x5ede5a)[_0xcf71('0xc')](function(_0x1d2496){logger[_0xcf71('0xd')]('DeskAccount,\x20%s,\x20%s',_0x367693,_0xcf71('0xe'));logger[_0xcf71('0xf')](_0xcf71('0x10'),_0x367693,_0xcf71('0xe'),JSON[_0xcf71('0x11')](_0x1d2496));if(_0x1d2496['error']){if(_0x1d2496['error'][_0xcf71('0x12')]===0x1f4){logger[_0xcf71('0x13')](_0xcf71('0x14'),_0x367693,_0x1d2496[_0xcf71('0x13')][_0xcf71('0x15')]);return _0x1731b4(_0x1d2496['error'][_0xcf71('0x15')]);}logger[_0xcf71('0x13')](_0xcf71('0x14'),_0x367693,_0x1d2496['error'][_0xcf71('0x15')]);return _0x4ddbd5(_0x1d2496[_0xcf71('0x13')][_0xcf71('0x15')]);}else{logger[_0xcf71('0xd')](_0xcf71('0x14'),_0x367693,_0xcf71('0xe'));_0x4ddbd5(_0x1d2496[_0xcf71('0x16')][_0xcf71('0x15')]);}})['catch'](function(_0x246b0e){logger[_0xcf71('0x13')](_0xcf71('0x14'),_0x367693,_0x246b0e);_0x1731b4(_0x246b0e);});});}exports['GetDeskAccount']=function(_0x1deb9f){var _0x1ecdee=this;return new Promise(function(_0x4910af,_0x5498e8){return db['DeskAccount'][_0xcf71('0x17')]({'raw':_0x1deb9f[_0xcf71('0x18')]?_0x1deb9f[_0xcf71('0x18')][_0xcf71('0x19')]===undefined?!![]:![]:!![],'where':_0x1deb9f[_0xcf71('0x18')]?_0x1deb9f[_0xcf71('0x18')][_0xcf71('0x1a')]||null:null,'attributes':_0x1deb9f[_0xcf71('0x18')]?_0x1deb9f[_0xcf71('0x18')][_0xcf71('0x1b')]||null:null,'limit':_0x1deb9f[_0xcf71('0x18')]?_0x1deb9f[_0xcf71('0x18')]['limit']||null:null,'include':_0x1deb9f['options']?_0x1deb9f[_0xcf71('0x18')]['include']?_[_0xcf71('0x1c')](_0x1deb9f['options']['include'],function(_0x13d74a){return{'model':db[_0x13d74a[_0xcf71('0x1d')]],'as':_0x13d74a['as'],'attributes':_0x13d74a[_0xcf71('0x1b')],'include':_0x13d74a['include']?_[_0xcf71('0x1c')](_0x13d74a[_0xcf71('0x1e')],function(_0x200278){return{'model':db[_0x200278[_0xcf71('0x1d')]],'as':_0x200278['as'],'attributes':_0x200278[_0xcf71('0x1b')],'include':_0x200278[_0xcf71('0x1e')]?_[_0xcf71('0x1c')](_0x200278['include'],function(_0x16314a){return{'model':db[_0x16314a[_0xcf71('0x1d')]],'as':_0x16314a['as'],'attributes':_0x16314a[_0xcf71('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x544e3c){logger['info'](_0xcf71('0x1f'),_0x1deb9f);logger['debug']('GetDeskAccount',_0x1deb9f,JSON[_0xcf71('0x11')](_0x544e3c));_0x4910af(_0x544e3c);})[_0xcf71('0x20')](function(_0x461e93){logger[_0xcf71('0x13')](_0xcf71('0x1f'),_0x461e93[_0xcf71('0x15')],_0x1deb9f);_0x5498e8(_0x1ecdee[_0xcf71('0x13')](0x1f4,_0x461e93[_0xcf71('0x15')]));});});};exports[_0xcf71('0x21')]=function(_0x28346d){var _0x2a2b0a=this;return new Promise(function(_0x248164,_0xf20bb0){return db['DeskAccount']['find']({'raw':_0x28346d[_0xcf71('0x18')]?_0x28346d[_0xcf71('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x28346d['options']?_0x28346d['options'][_0xcf71('0x1a')]||null:null,'attributes':_0x28346d[_0xcf71('0x18')]?_0x28346d['options'][_0xcf71('0x1b')]||null:null,'include':_0x28346d[_0xcf71('0x18')]?_0x28346d[_0xcf71('0x18')]['include']?_[_0xcf71('0x1c')](_0x28346d[_0xcf71('0x18')]['include'],function(_0x96c127){return{'model':db[_0x96c127[_0xcf71('0x1d')]],'as':_0x96c127['as'],'attributes':_0x96c127['attributes'],'include':_0x96c127['include']?_[_0xcf71('0x1c')](_0x96c127[_0xcf71('0x1e')],function(_0x2f3344){return{'model':db[_0x2f3344['model']],'as':_0x2f3344['as'],'attributes':_0x2f3344[_0xcf71('0x1b')],'include':_0x2f3344[_0xcf71('0x1e')]?_[_0xcf71('0x1c')](_0x2f3344[_0xcf71('0x1e')],function(_0x3cfd14){return{'model':db[_0x3cfd14[_0xcf71('0x1d')]],'as':_0x3cfd14['as'],'attributes':_0x3cfd14['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x40137c){logger[_0xcf71('0xd')]('ShowDeskAccount',_0x28346d);logger['debug'](_0xcf71('0x21'),_0x28346d,JSON[_0xcf71('0x11')](_0x40137c));_0x248164(_0x40137c);})['catch'](function(_0xac7192){logger[_0xcf71('0x13')]('ShowDeskAccount',_0xac7192[_0xcf71('0x15')],_0x28346d);_0xf20bb0(_0x2a2b0a[_0xcf71('0x13')](0x1f4,_0xac7192['message']));});});};
\ No newline at end of file
index e125fd0..8c357c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5f2501,_0x3d8d47){var _0x417610=function(_0x220ebe){while(--_0x220ebe){_0x5f2501['push'](_0x5f2501['shift']());}};_0x417610(++_0x3d8d47);}(_0x008c,0x188));var _0xc008=function(_0x3fb150,_0x5e32ed){_0x3fb150=_0x3fb150-0x0;var _0x56f4a8=_0x008c[_0x3fb150];return _0x56f4a8;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x35e491,_0x2626e2){var _0x3e0934=function(_0x5807c3){while(--_0x5807c3){_0x35e491['push'](_0x35e491['shift']());}};_0x3e0934(++_0x2626e2);}(_0x008c,0x188));var _0xc008=function(_0x4b281a,_0x1733de){_0x4b281a=_0x4b281a-0x0;var _0x3149a7=_0x008c[_0x4b281a];return _0x3149a7;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
index 4f7d723..6a15b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb4=['sequelize','exports','STRING'];(function(_0x224ed8,_0x36363c){var _0x1c16c7=function(_0x48dcc7){while(--_0x48dcc7){_0x224ed8['push'](_0x224ed8['shift']());}};_0x1c16c7(++_0x36363c);}(_0x5fb4,0xab));var _0x45fb=function(_0x1c4c35,_0x2b6119){_0x1c4c35=_0x1c4c35-0x0;var _0x4439a3=_0x5fb4[_0x1c4c35];return _0x4439a3;};'use strict';var Sequelize=require(_0x45fb('0x0'));module[_0x45fb('0x1')]={'name':{'type':Sequelize[_0x45fb('0x2')]},'description':{'type':Sequelize[_0x45fb('0x2')]}};
\ No newline at end of file
+var _0x73ce=['sequelize','exports','STRING'];(function(_0x469879,_0x5a3125){var _0x22c0a9=function(_0xfcde79){while(--_0xfcde79){_0x469879['push'](_0x469879['shift']());}};_0x22c0a9(++_0x5a3125);}(_0x73ce,0x17a));var _0xe73c=function(_0x4648ea,_0x308a57){_0x4648ea=_0x4648ea-0x0;var _0x4ed815=_0x73ce[_0x4648ea];return _0x4ed815;};'use strict';var Sequelize=require(_0xe73c('0x0'));module[_0xe73c('0x1')]={'name':{'type':Sequelize[_0xe73c('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 872a642..438f223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf2d=['fast-json-patch','request-promise','bluebird','mustache','path','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','count','includeAll','include','findAll','rows','show','catch','create','body','find','params','getFields','findOne','DeskField','sort','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf'];(function(_0xab9958,_0x11023f){var _0x1f1cae=function(_0x5cf4dc){while(--_0x5cf4dc){_0xab9958['push'](_0xab9958['shift']());}};_0x1f1cae(++_0x11023f);}(_0xbf2d,0xfa));var _0xdbf2=function(_0x49d826,_0xdfaf0d){_0x49d826=_0x49d826-0x0;var _0x447db2=_0xbf2d[_0x49d826];return _0x447db2;};'use strict';var emlformat=require(_0xdbf2('0x0'));var rimraf=require(_0xdbf2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdbf2('0x2'));var rp=require(_0xdbf2('0x3'));var moment=require('moment');var BPromise=require(_0xdbf2('0x4'));var Mustache=require(_0xdbf2('0x5'));var util=require('util');var path=require(_0xdbf2('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdbf2('0x7'));var fs=require('fs');var fs_extra=require(_0xdbf2('0x8'));var _=require(_0xdbf2('0x9'));var squel=require(_0xdbf2('0xa'));var crypto=require(_0xdbf2('0xb'));var jsforce=require(_0xdbf2('0xc'));var deskjs=require(_0xdbf2('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdbf2('0xe'));var Papa=require(_0xdbf2('0xf'));var Redis=require(_0xdbf2('0x10'));var authService=require(_0xdbf2('0x11'));var qs=require(_0xdbf2('0x12'));var as=require(_0xdbf2('0x13'));var hardwareService=require(_0xdbf2('0x14'));var logger=require(_0xdbf2('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xdbf2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdbf2('0x17'))['db'];function respondWithStatusCode(_0x123bd2,_0x195f06){_0x195f06=_0x195f06||0xcc;return function(_0x39accd){if(_0x39accd){return _0x123bd2[_0xdbf2('0x18')](_0x195f06);}return _0x123bd2[_0xdbf2('0x19')](_0x195f06)[_0xdbf2('0x1a')]();};}function respondWithResult(_0x23f71f,_0x21b755){_0x21b755=_0x21b755||0xc8;return function(_0x2b1b4f){if(_0x2b1b4f){return _0x23f71f[_0xdbf2('0x19')](_0x21b755)[_0xdbf2('0x1b')](_0x2b1b4f);}};}function respondWithFilteredResult(_0xdbd468,_0x4f0495){return function(_0x5051cc){if(_0x5051cc){var _0x1b4e0a=typeof _0x4f0495[_0xdbf2('0x1c')]==='undefined'&&typeof _0x4f0495['limit']===_0xdbf2('0x1d');var _0x33a4b0=_0x5051cc['count'];var _0x50b5b4=_0x1b4e0a?0x0:_0x4f0495['offset'];var _0x4ede81=_0x1b4e0a?_0x5051cc['count']:_0x4f0495[_0xdbf2('0x1c')]+_0x4f0495[_0xdbf2('0x1e')];var _0x37e707;if(_0x4ede81>=_0x33a4b0){_0x4ede81=_0x33a4b0;_0x37e707=0xc8;}else{_0x37e707=0xce;}_0xdbd468[_0xdbf2('0x19')](_0x37e707);return _0xdbd468[_0xdbf2('0x1f')](_0xdbf2('0x20'),_0x50b5b4+'-'+_0x4ede81+'/'+_0x33a4b0)[_0xdbf2('0x1b')](_0x5051cc);}return null;};}function patchUpdates(_0x3cec76){return function(_0xac613c){try{jsonpatch[_0xdbf2('0x21')](_0xac613c,_0x3cec76,!![]);}catch(_0x583731){return BPromise[_0xdbf2('0x22')](_0x583731);}return _0xac613c[_0xdbf2('0x23')]();};}function saveUpdates(_0x2cf3ff,_0x31ab01){return function(_0x117e5d){if(_0x117e5d){return _0x117e5d[_0xdbf2('0x24')](_0x2cf3ff)[_0xdbf2('0x25')](function(_0x17a5bf){return _0x17a5bf;});}return null;};}function removeEntity(_0x3ccb69,_0x531927){return function(_0x373634){if(_0x373634){return _0x373634[_0xdbf2('0x26')]()[_0xdbf2('0x25')](function(){_0x3ccb69[_0xdbf2('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4cd0a4,_0x4f2e17){return function(_0x1e808a){if(!_0x1e808a){_0x4cd0a4['sendStatus'](0x194);}return _0x1e808a;};}function handleError(_0x1b4ab2,_0x3b6961){_0x3b6961=_0x3b6961||0x1f4;return function(_0x4f8053){logger['error'](_0x4f8053[_0xdbf2('0x27')]);if(_0x4f8053[_0xdbf2('0x28')]){delete _0x4f8053[_0xdbf2('0x28')];}_0x1b4ab2[_0xdbf2('0x19')](_0x3b6961)['send'](_0x4f8053);};}exports[_0xdbf2('0x29')]=function(_0x3cec43,_0x3c06ec){var _0x441f28={},_0x23f311={},_0x5042f1={'count':0x0,'rows':[]};var _0x2ff128=_[_0xdbf2('0x2a')](db[_0xdbf2('0x2b')][_0xdbf2('0x2c')],function(_0x2d12d6){return{'name':_0x2d12d6[_0xdbf2('0x2d')],'type':_0x2d12d6[_0xdbf2('0x2e')][_0xdbf2('0x2f')]};});_0x23f311[_0xdbf2('0x30')]=_[_0xdbf2('0x2a')](_0x2ff128,_0xdbf2('0x28'));_0x23f311[_0xdbf2('0x31')]=_[_0xdbf2('0x32')](_0x3cec43['query']);_0x23f311[_0xdbf2('0x33')]=_[_0xdbf2('0x34')](_0x23f311[_0xdbf2('0x30')],_0x23f311[_0xdbf2('0x31')]);_0x441f28[_0xdbf2('0x35')]=_['intersection'](_0x23f311[_0xdbf2('0x30')],qs[_0xdbf2('0x36')](_0x3cec43[_0xdbf2('0x31')]['fields']));_0x441f28[_0xdbf2('0x35')]=_0x441f28['attributes'][_0xdbf2('0x37')]?_0x441f28[_0xdbf2('0x35')]:_0x23f311[_0xdbf2('0x30')];if(!_0x3cec43[_0xdbf2('0x31')][_0xdbf2('0x38')](_0xdbf2('0x39'))){_0x441f28[_0xdbf2('0x1e')]=qs['limit'](_0x3cec43[_0xdbf2('0x31')][_0xdbf2('0x1e')]);_0x441f28[_0xdbf2('0x1c')]=qs['offset'](_0x3cec43[_0xdbf2('0x31')][_0xdbf2('0x1c')]);}_0x441f28[_0xdbf2('0x3a')]=qs['sort'](_0x3cec43[_0xdbf2('0x31')]['sort']);_0x441f28[_0xdbf2('0x3b')]=qs[_0xdbf2('0x33')](_[_0xdbf2('0x3c')](_0x3cec43[_0xdbf2('0x31')],_0x23f311['filters']),_0x2ff128);if(_0x3cec43[_0xdbf2('0x31')]['filter']){_0x441f28[_0xdbf2('0x3b')]=_['merge'](_0x441f28[_0xdbf2('0x3b')],{'$or':_['map'](_0x2ff128,function(_0x45c304){if(_0x45c304[_0xdbf2('0x2e')]!=='VIRTUAL'){var _0x554f80={};_0x554f80[_0x45c304[_0xdbf2('0x28')]]={'$like':'%'+_0x3cec43['query'][_0xdbf2('0x3d')]+'%'};return _0x554f80;}})});}_0x441f28=_[_0xdbf2('0x3e')]({},_0x441f28,_0x3cec43[_0xdbf2('0x3f')]);var _0x10f9cd={'where':_0x441f28[_0xdbf2('0x3b')]};return db[_0xdbf2('0x2b')][_0xdbf2('0x40')](_0x10f9cd)[_0xdbf2('0x25')](function(_0x4394e4){_0x5042f1['count']=_0x4394e4;if(_0x3cec43[_0xdbf2('0x31')][_0xdbf2('0x41')]){_0x441f28[_0xdbf2('0x42')]=[{'all':!![]}];}return db[_0xdbf2('0x2b')][_0xdbf2('0x43')](_0x441f28);})[_0xdbf2('0x25')](function(_0x9771cb){_0x5042f1[_0xdbf2('0x44')]=_0x9771cb;return _0x5042f1;})['then'](respondWithFilteredResult(_0x3c06ec,_0x441f28))['catch'](handleError(_0x3c06ec,null));};exports[_0xdbf2('0x45')]=function(_0xe24eee,_0x37c8fd){var _0x1bdc56={'raw':![],'where':{'id':_0xe24eee['params']['id']}},_0x5b9868={};_0x5b9868[_0xdbf2('0x30')]=_[_0xdbf2('0x32')](db[_0xdbf2('0x2b')][_0xdbf2('0x2c')]);_0x5b9868[_0xdbf2('0x31')]=_['keys'](_0xe24eee[_0xdbf2('0x31')]);_0x5b9868[_0xdbf2('0x33')]=_[_0xdbf2('0x34')](_0x5b9868[_0xdbf2('0x30')],_0x5b9868['query']);_0x1bdc56[_0xdbf2('0x35')]=_[_0xdbf2('0x34')](_0x5b9868[_0xdbf2('0x30')],qs[_0xdbf2('0x36')](_0xe24eee['query'][_0xdbf2('0x36')]));_0x1bdc56['attributes']=_0x1bdc56['attributes'][_0xdbf2('0x37')]?_0x1bdc56[_0xdbf2('0x35')]:_0x5b9868[_0xdbf2('0x30')];if(_0xe24eee[_0xdbf2('0x31')][_0xdbf2('0x41')]){_0x1bdc56[_0xdbf2('0x42')]=[{'all':!![]}];}_0x1bdc56=_[_0xdbf2('0x3e')]({},_0x1bdc56,_0xe24eee[_0xdbf2('0x3f')]);return db[_0xdbf2('0x2b')]['find'](_0x1bdc56)[_0xdbf2('0x25')](handleEntityNotFound(_0x37c8fd,null))[_0xdbf2('0x25')](respondWithResult(_0x37c8fd,null))[_0xdbf2('0x46')](handleError(_0x37c8fd,null));};exports[_0xdbf2('0x47')]=function(_0x30b595,_0x339fec){return db[_0xdbf2('0x2b')][_0xdbf2('0x47')](_0x30b595[_0xdbf2('0x48')],{})[_0xdbf2('0x25')](respondWithResult(_0x339fec,0xc9))[_0xdbf2('0x46')](handleError(_0x339fec,null));};exports['update']=function(_0x316b3b,_0x4cd281){if(_0x316b3b['body']['id']){delete _0x316b3b[_0xdbf2('0x48')]['id'];}return db[_0xdbf2('0x2b')][_0xdbf2('0x49')]({'where':{'id':_0x316b3b[_0xdbf2('0x4a')]['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x4cd281,null))[_0xdbf2('0x25')](saveUpdates(_0x316b3b['body'],null))[_0xdbf2('0x25')](respondWithResult(_0x4cd281,null))[_0xdbf2('0x46')](handleError(_0x4cd281,null));};exports[_0xdbf2('0x26')]=function(_0x2501ff,_0x37522f){return db[_0xdbf2('0x2b')][_0xdbf2('0x49')]({'where':{'id':_0x2501ff[_0xdbf2('0x4a')]['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x37522f,null))['then'](removeEntity(_0x37522f,null))[_0xdbf2('0x46')](handleError(_0x37522f,null));};exports[_0xdbf2('0x4b')]=function(_0x5ab187,_0x3478d8,_0x576ff9){var _0x184fd8={};var _0x3b6c2f={};var _0x316759;var _0x231bf;return db['DeskConfiguration'][_0xdbf2('0x4c')]({'where':{'id':_0x5ab187['params']['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x3478d8,null))[_0xdbf2('0x25')](function(_0x3c1c44){if(_0x3c1c44){_0x316759=_0x3c1c44;_0x3b6c2f[_0xdbf2('0x30')]=_[_0xdbf2('0x32')](db[_0xdbf2('0x4d')][_0xdbf2('0x2c')]);_0x3b6c2f[_0xdbf2('0x31')]=_[_0xdbf2('0x32')](_0x5ab187[_0xdbf2('0x31')]);_0x3b6c2f[_0xdbf2('0x33')]=_[_0xdbf2('0x34')](_0x3b6c2f[_0xdbf2('0x30')],_0x3b6c2f['query']);_0x184fd8['attributes']=_[_0xdbf2('0x34')](_0x3b6c2f[_0xdbf2('0x30')],qs[_0xdbf2('0x36')](_0x5ab187[_0xdbf2('0x31')][_0xdbf2('0x36')]));_0x184fd8[_0xdbf2('0x35')]=_0x184fd8[_0xdbf2('0x35')]['length']?_0x184fd8[_0xdbf2('0x35')]:_0x3b6c2f[_0xdbf2('0x30')];_0x184fd8['order']=qs[_0xdbf2('0x4e')](_0x5ab187['query'][_0xdbf2('0x4e')]);_0x184fd8[_0xdbf2('0x3b')]=qs[_0xdbf2('0x33')](_[_0xdbf2('0x3c')](_0x5ab187[_0xdbf2('0x31')],_0x3b6c2f['filters']));if(_0x5ab187[_0xdbf2('0x31')][_0xdbf2('0x3d')]){_0x184fd8['where']=_['merge'](_0x184fd8['where'],{'$or':_[_0xdbf2('0x2a')](_0x184fd8[_0xdbf2('0x35')],function(_0x55dd45){var _0x2d494e={};_0x2d494e[_0x55dd45]={'$like':'%'+_0x5ab187[_0xdbf2('0x31')]['filter']+'%'};return _0x2d494e;})});}_0x184fd8=_['merge']({},_0x184fd8,_0x5ab187[_0xdbf2('0x3f')]);return _0x316759['getFields'](_0x184fd8);}})['then'](function(_0x25a7d2){if(_0x25a7d2){_0x231bf=_0x25a7d2[_0xdbf2('0x37')];if(!_0x5ab187[_0xdbf2('0x31')][_0xdbf2('0x38')]('nolimit')){_0x184fd8[_0xdbf2('0x1e')]=qs[_0xdbf2('0x1e')](_0x5ab187[_0xdbf2('0x31')][_0xdbf2('0x1e')]);_0x184fd8[_0xdbf2('0x1c')]=qs['offset'](_0x5ab187[_0xdbf2('0x31')][_0xdbf2('0x1c')]);}return _0x316759[_0xdbf2('0x4b')](_0x184fd8);}})['then'](function(_0x2cdae2){if(_0x2cdae2){return _0x2cdae2?{'count':_0x231bf,'rows':_0x2cdae2}:null;}})['then'](respondWithResult(_0x3478d8,null))[_0xdbf2('0x46')](handleError(_0x3478d8,null));};exports[_0xdbf2('0x4f')]=function(_0x4204e7,_0x327a19,_0x15b190){var _0x48a251={};var _0x4c0e15={};var _0x10c9db;var _0xeff83e;return db[_0xdbf2('0x2b')][_0xdbf2('0x4c')]({'where':{'id':_0x4204e7['params']['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x327a19,null))['then'](function(_0x5efeb9){if(_0x5efeb9){_0x10c9db=_0x5efeb9;_0x4c0e15[_0xdbf2('0x30')]=_[_0xdbf2('0x32')](db['DeskField']['rawAttributes']);_0x4c0e15[_0xdbf2('0x31')]=_['keys'](_0x4204e7[_0xdbf2('0x31')]);_0x4c0e15[_0xdbf2('0x33')]=_[_0xdbf2('0x34')](_0x4c0e15['model'],_0x4c0e15[_0xdbf2('0x31')]);_0x48a251['attributes']=_['intersection'](_0x4c0e15[_0xdbf2('0x30')],qs[_0xdbf2('0x36')](_0x4204e7[_0xdbf2('0x31')][_0xdbf2('0x36')]));_0x48a251[_0xdbf2('0x35')]=_0x48a251[_0xdbf2('0x35')][_0xdbf2('0x37')]?_0x48a251[_0xdbf2('0x35')]:_0x4c0e15['model'];_0x48a251[_0xdbf2('0x3a')]=qs[_0xdbf2('0x4e')](_0x4204e7[_0xdbf2('0x31')][_0xdbf2('0x4e')]);_0x48a251[_0xdbf2('0x3b')]=qs['filters'](_[_0xdbf2('0x3c')](_0x4204e7[_0xdbf2('0x31')],_0x4c0e15[_0xdbf2('0x33')]));if(_0x4204e7[_0xdbf2('0x31')][_0xdbf2('0x3d')]){_0x48a251['where']=_[_0xdbf2('0x3e')](_0x48a251[_0xdbf2('0x3b')],{'$or':_['map'](_0x48a251[_0xdbf2('0x35')],function(_0x254314){var _0x402676={};_0x402676[_0x254314]={'$like':'%'+_0x4204e7['query'][_0xdbf2('0x3d')]+'%'};return _0x402676;})});}_0x48a251=_[_0xdbf2('0x3e')]({},_0x48a251,_0x4204e7[_0xdbf2('0x3f')]);return _0x10c9db[_0xdbf2('0x4f')](_0x48a251);}})[_0xdbf2('0x25')](function(_0x1125a8){if(_0x1125a8){_0xeff83e=_0x1125a8[_0xdbf2('0x37')];if(!_0x4204e7[_0xdbf2('0x31')][_0xdbf2('0x38')]('nolimit')){_0x48a251[_0xdbf2('0x1e')]=qs['limit'](_0x4204e7['query'][_0xdbf2('0x1e')]);_0x48a251['offset']=qs[_0xdbf2('0x1c')](_0x4204e7[_0xdbf2('0x31')][_0xdbf2('0x1c')]);}return _0x10c9db[_0xdbf2('0x4f')](_0x48a251);}})[_0xdbf2('0x25')](function(_0x3ef0f4){if(_0x3ef0f4){return _0x3ef0f4?{'count':_0xeff83e,'rows':_0x3ef0f4}:null;}})[_0xdbf2('0x25')](respondWithResult(_0x327a19,null))['catch'](handleError(_0x327a19,null));};exports[_0xdbf2('0x50')]=function(_0x3e7f77,_0x1f0114,_0xaa8971){var _0x3a46fc={};var _0x51290d={};var _0x587207;var _0x89237d;return db['DeskConfiguration']['findOne']({'where':{'id':_0x3e7f77[_0xdbf2('0x4a')]['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x1f0114,null))[_0xdbf2('0x25')](function(_0x14f1c0){if(_0x14f1c0){_0x587207=_0x14f1c0;_0x51290d[_0xdbf2('0x30')]=_[_0xdbf2('0x32')](db[_0xdbf2('0x4d')]['rawAttributes']);_0x51290d[_0xdbf2('0x31')]=_[_0xdbf2('0x32')](_0x3e7f77[_0xdbf2('0x31')]);_0x51290d[_0xdbf2('0x33')]=_['intersection'](_0x51290d[_0xdbf2('0x30')],_0x51290d[_0xdbf2('0x31')]);_0x3a46fc[_0xdbf2('0x35')]=_['intersection'](_0x51290d[_0xdbf2('0x30')],qs[_0xdbf2('0x36')](_0x3e7f77[_0xdbf2('0x31')]['fields']));_0x3a46fc[_0xdbf2('0x35')]=_0x3a46fc[_0xdbf2('0x35')][_0xdbf2('0x37')]?_0x3a46fc['attributes']:_0x51290d[_0xdbf2('0x30')];_0x3a46fc[_0xdbf2('0x3a')]=qs[_0xdbf2('0x4e')](_0x3e7f77[_0xdbf2('0x31')][_0xdbf2('0x4e')]);_0x3a46fc[_0xdbf2('0x3b')]=qs[_0xdbf2('0x33')](_['pick'](_0x3e7f77[_0xdbf2('0x31')],_0x51290d[_0xdbf2('0x33')]));if(_0x3e7f77[_0xdbf2('0x31')][_0xdbf2('0x3d')]){_0x3a46fc['where']=_[_0xdbf2('0x3e')](_0x3a46fc[_0xdbf2('0x3b')],{'$or':_[_0xdbf2('0x2a')](_0x3a46fc[_0xdbf2('0x35')],function(_0x13a362){var _0x54db00={};_0x54db00[_0x13a362]={'$like':'%'+_0x3e7f77[_0xdbf2('0x31')][_0xdbf2('0x3d')]+'%'};return _0x54db00;})});}_0x3a46fc=_['merge']({},_0x3a46fc,_0x3e7f77[_0xdbf2('0x3f')]);return _0x587207[_0xdbf2('0x50')](_0x3a46fc);}})[_0xdbf2('0x25')](function(_0x4f8828){if(_0x4f8828){_0x89237d=_0x4f8828['length'];if(!_0x3e7f77[_0xdbf2('0x31')][_0xdbf2('0x38')](_0xdbf2('0x39'))){_0x3a46fc[_0xdbf2('0x1e')]=qs['limit'](_0x3e7f77[_0xdbf2('0x31')][_0xdbf2('0x1e')]);_0x3a46fc[_0xdbf2('0x1c')]=qs[_0xdbf2('0x1c')](_0x3e7f77['query'][_0xdbf2('0x1c')]);}return _0x587207[_0xdbf2('0x50')](_0x3a46fc);}})[_0xdbf2('0x25')](function(_0x22708d){if(_0x22708d){return _0x22708d?{'count':_0x89237d,'rows':_0x22708d}:null;}})['then'](respondWithResult(_0x1f0114,null))[_0xdbf2('0x46')](handleError(_0x1f0114,null));};exports[_0xdbf2('0x51')]=function(_0x11346e,_0x47341d,_0x15dc9b){var _0x1e40e1={};var _0x53d545={};var _0x2e5b30;var _0x157afb;return db['DeskConfiguration'][_0xdbf2('0x4c')]({'where':{'id':_0x11346e[_0xdbf2('0x4a')]['id']}})[_0xdbf2('0x25')](handleEntityNotFound(_0x47341d,null))[_0xdbf2('0x25')](function(_0x2d329c){if(_0x2d329c){_0x2e5b30=_0x2d329c;_0x53d545['model']=_[_0xdbf2('0x32')](db[_0xdbf2('0x52')]['rawAttributes']);_0x53d545[_0xdbf2('0x31')]=_[_0xdbf2('0x32')](_0x11346e[_0xdbf2('0x31')]);_0x53d545[_0xdbf2('0x33')]=_[_0xdbf2('0x34')](_0x53d545[_0xdbf2('0x30')],_0x53d545[_0xdbf2('0x31')]);_0x1e40e1[_0xdbf2('0x35')]=_[_0xdbf2('0x34')](_0x53d545['model'],qs[_0xdbf2('0x36')](_0x11346e['query']['fields']));_0x1e40e1[_0xdbf2('0x35')]=_0x1e40e1[_0xdbf2('0x35')]['length']?_0x1e40e1[_0xdbf2('0x35')]:_0x53d545[_0xdbf2('0x30')];_0x1e40e1[_0xdbf2('0x3a')]=qs[_0xdbf2('0x4e')](_0x11346e['query'][_0xdbf2('0x4e')]);_0x1e40e1[_0xdbf2('0x3b')]=qs['filters'](_['pick'](_0x11346e[_0xdbf2('0x31')],_0x53d545['filters']));if(_0x11346e['query'][_0xdbf2('0x3d')]){_0x1e40e1[_0xdbf2('0x3b')]=_[_0xdbf2('0x3e')](_0x1e40e1[_0xdbf2('0x3b')],{'$or':_['map'](_0x1e40e1[_0xdbf2('0x35')],function(_0x3b77ab){var _0x219a39={};_0x219a39[_0x3b77ab]={'$like':'%'+_0x11346e[_0xdbf2('0x31')][_0xdbf2('0x3d')]+'%'};return _0x219a39;})});}_0x1e40e1=_[_0xdbf2('0x3e')]({},_0x1e40e1,_0x11346e[_0xdbf2('0x3f')]);return _0x2e5b30[_0xdbf2('0x51')](_0x1e40e1);}})[_0xdbf2('0x25')](function(_0x1dc20d){if(_0x1dc20d){_0x157afb=_0x1dc20d[_0xdbf2('0x37')];if(!_0x11346e['query'][_0xdbf2('0x38')](_0xdbf2('0x39'))){_0x1e40e1[_0xdbf2('0x1e')]=qs[_0xdbf2('0x1e')](_0x11346e['query']['limit']);_0x1e40e1[_0xdbf2('0x1c')]=qs[_0xdbf2('0x1c')](_0x11346e['query'][_0xdbf2('0x1c')]);}return _0x2e5b30['getTags'](_0x1e40e1);}})[_0xdbf2('0x25')](function(_0x590fb1){if(_0x590fb1){return _0x590fb1?{'count':_0x157afb,'rows':_0x590fb1}:null;}})[_0xdbf2('0x25')](respondWithResult(_0x47341d,null))[_0xdbf2('0x46')](handleError(_0x47341d,null));};exports[_0xdbf2('0x53')]=function(_0x4fbde5,_0x18ba31,_0x3617e1){if(_0x4fbde5[_0xdbf2('0x48')]['id']){delete _0x4fbde5[_0xdbf2('0x48')]['id'];}return db[_0xdbf2('0x2b')][_0xdbf2('0x4c')]({'where':{'id':_0x4fbde5[_0xdbf2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x18ba31,null))['then'](function(_0x2e9171){if(_0x2e9171){return _0x2e9171[_0xdbf2('0x53')](_0x4fbde5[_0xdbf2('0x48')]['ids']||[]);}return null;})[_0xdbf2('0x25')](respondWithResult(_0x18ba31,null))[_0xdbf2('0x46')](handleError(_0x18ba31,null));};
\ No newline at end of file
+var _0xad2c=['where','merge','name','options','includeAll','include','findAll','rows','show','params','fields','find','create','body','catch','getFields','findOne','DeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','DeskConfiguration','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter'];(function(_0x354881,_0xcebcfb){var _0x3e4cc1=function(_0x54a3ab){while(--_0x54a3ab){_0x354881['push'](_0x354881['shift']());}};_0x3e4cc1(++_0xcebcfb);}(_0xad2c,0x120));var _0xcad2=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xad2c[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xcad2('0x0'));var rimraf=require(_0xcad2('0x1'));var zipdir=require(_0xcad2('0x2'));var jsonpatch=require(_0xcad2('0x3'));var rp=require(_0xcad2('0x4'));var moment=require('moment');var BPromise=require(_0xcad2('0x5'));var Mustache=require('mustache');var util=require(_0xcad2('0x6'));var path=require(_0xcad2('0x7'));var sox=require(_0xcad2('0x8'));var csv=require(_0xcad2('0x9'));var ejs=require(_0xcad2('0xa'));var fs=require('fs');var fs_extra=require(_0xcad2('0xb'));var _=require(_0xcad2('0xc'));var squel=require(_0xcad2('0xd'));var crypto=require(_0xcad2('0xe'));var jsforce=require(_0xcad2('0xf'));var deskjs=require(_0xcad2('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcad2('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcad2('0x12'));var as=require(_0xcad2('0x13'));var hardwareService=require(_0xcad2('0x14'));var logger=require(_0xcad2('0x15'))(_0xcad2('0x16'));var utils=require('../../config/utils');var config=require(_0xcad2('0x17'));var licenseUtil=require(_0xcad2('0x18'));var db=require(_0xcad2('0x19'))['db'];function respondWithStatusCode(_0x3ea5b4,_0x347c9e){_0x347c9e=_0x347c9e||0xcc;return function(_0x5986){if(_0x5986){return _0x3ea5b4[_0xcad2('0x1a')](_0x347c9e);}return _0x3ea5b4[_0xcad2('0x1b')](_0x347c9e)[_0xcad2('0x1c')]();};}function respondWithResult(_0x54fdfe,_0x5dd5e0){_0x5dd5e0=_0x5dd5e0||0xc8;return function(_0x2fe673){if(_0x2fe673){return _0x54fdfe['status'](_0x5dd5e0)[_0xcad2('0x1d')](_0x2fe673);}};}function respondWithFilteredResult(_0x29d3c3,_0x3b49c6){return function(_0x2f87b1){if(_0x2f87b1){var _0x227c52=typeof _0x3b49c6[_0xcad2('0x1e')]===_0xcad2('0x1f')&&typeof _0x3b49c6['limit']==='undefined';var _0x1b8c24=_0x2f87b1['count'];var _0x1d04e5=_0x227c52?0x0:_0x3b49c6[_0xcad2('0x1e')];var _0x171d90=_0x227c52?_0x2f87b1[_0xcad2('0x20')]:_0x3b49c6[_0xcad2('0x1e')]+_0x3b49c6[_0xcad2('0x21')];var _0x366dd9;if(_0x171d90>=_0x1b8c24){_0x171d90=_0x1b8c24;_0x366dd9=0xc8;}else{_0x366dd9=0xce;}_0x29d3c3[_0xcad2('0x1b')](_0x366dd9);return _0x29d3c3[_0xcad2('0x22')](_0xcad2('0x23'),_0x1d04e5+'-'+_0x171d90+'/'+_0x1b8c24)[_0xcad2('0x1d')](_0x2f87b1);}return null;};}function patchUpdates(_0x2907f7){return function(_0x22de62){try{jsonpatch[_0xcad2('0x24')](_0x22de62,_0x2907f7,!![]);}catch(_0x5c1549){return BPromise[_0xcad2('0x25')](_0x5c1549);}return _0x22de62[_0xcad2('0x26')]();};}function saveUpdates(_0x3f4346,_0x5bf04d){return function(_0x12ea35){if(_0x12ea35){return _0x12ea35[_0xcad2('0x27')](_0x3f4346)[_0xcad2('0x28')](function(_0x3fdd1c){return _0x3fdd1c;});}return null;};}function removeEntity(_0x1883da,_0x3f7023){return function(_0x907e7){if(_0x907e7){return _0x907e7[_0xcad2('0x29')]()['then'](function(){_0x1883da[_0xcad2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x315ec1,_0xf8ef93){return function(_0x435bce){if(!_0x435bce){_0x315ec1[_0xcad2('0x1a')](0x194);}return _0x435bce;};}function handleError(_0x1f24a0,_0x152832){_0x152832=_0x152832||0x1f4;return function(_0x156912){logger[_0xcad2('0x2a')](_0x156912[_0xcad2('0x2b')]);if(_0x156912['name']){delete _0x156912['name'];}_0x1f24a0[_0xcad2('0x1b')](_0x152832)[_0xcad2('0x2c')](_0x156912);};}exports[_0xcad2('0x2d')]=function(_0x23ce85,_0x34267c){var _0x5db064={},_0x4b4a2a={},_0x591289={'count':0x0,'rows':[]};var _0x44f7d0=_[_0xcad2('0x2e')](db[_0xcad2('0x2f')][_0xcad2('0x30')],function(_0x2ecc2d){return{'name':_0x2ecc2d['fieldName'],'type':_0x2ecc2d[_0xcad2('0x31')][_0xcad2('0x32')]};});_0x4b4a2a['model']=_[_0xcad2('0x2e')](_0x44f7d0,'name');_0x4b4a2a[_0xcad2('0x33')]=_[_0xcad2('0x34')](_0x23ce85[_0xcad2('0x33')]);_0x4b4a2a[_0xcad2('0x35')]=_[_0xcad2('0x36')](_0x4b4a2a[_0xcad2('0x37')],_0x4b4a2a['query']);_0x5db064[_0xcad2('0x38')]=_[_0xcad2('0x36')](_0x4b4a2a[_0xcad2('0x37')],qs['fields'](_0x23ce85[_0xcad2('0x33')]['fields']));_0x5db064[_0xcad2('0x38')]=_0x5db064[_0xcad2('0x38')][_0xcad2('0x39')]?_0x5db064[_0xcad2('0x38')]:_0x4b4a2a[_0xcad2('0x37')];if(!_0x23ce85[_0xcad2('0x33')][_0xcad2('0x3a')](_0xcad2('0x3b'))){_0x5db064[_0xcad2('0x21')]=qs[_0xcad2('0x21')](_0x23ce85['query']['limit']);_0x5db064[_0xcad2('0x1e')]=qs['offset'](_0x23ce85[_0xcad2('0x33')][_0xcad2('0x1e')]);}_0x5db064[_0xcad2('0x3c')]=qs['sort'](_0x23ce85['query'][_0xcad2('0x3d')]);_0x5db064['where']=qs[_0xcad2('0x35')](_[_0xcad2('0x3e')](_0x23ce85[_0xcad2('0x33')],_0x4b4a2a[_0xcad2('0x35')]),_0x44f7d0);if(_0x23ce85[_0xcad2('0x33')][_0xcad2('0x3f')]){_0x5db064[_0xcad2('0x40')]=_[_0xcad2('0x41')](_0x5db064[_0xcad2('0x40')],{'$or':_['map'](_0x44f7d0,function(_0x2ee7ac){if(_0x2ee7ac[_0xcad2('0x31')]!=='VIRTUAL'){var _0xd65e9={};_0xd65e9[_0x2ee7ac[_0xcad2('0x42')]]={'$like':'%'+_0x23ce85[_0xcad2('0x33')][_0xcad2('0x3f')]+'%'};return _0xd65e9;}})});}_0x5db064=_[_0xcad2('0x41')]({},_0x5db064,_0x23ce85[_0xcad2('0x43')]);var _0xea965={'where':_0x5db064['where']};return db[_0xcad2('0x2f')][_0xcad2('0x20')](_0xea965)[_0xcad2('0x28')](function(_0x1760e0){_0x591289[_0xcad2('0x20')]=_0x1760e0;if(_0x23ce85['query'][_0xcad2('0x44')]){_0x5db064[_0xcad2('0x45')]=[{'all':!![]}];}return db[_0xcad2('0x2f')][_0xcad2('0x46')](_0x5db064);})[_0xcad2('0x28')](function(_0x1bd3ab){_0x591289[_0xcad2('0x47')]=_0x1bd3ab;return _0x591289;})['then'](respondWithFilteredResult(_0x34267c,_0x5db064))['catch'](handleError(_0x34267c,null));};exports[_0xcad2('0x48')]=function(_0xbc0dc4,_0x1211f9){var _0x14b915={'raw':![],'where':{'id':_0xbc0dc4[_0xcad2('0x49')]['id']}},_0x3be2d5={};_0x3be2d5[_0xcad2('0x37')]=_[_0xcad2('0x34')](db[_0xcad2('0x2f')]['rawAttributes']);_0x3be2d5[_0xcad2('0x33')]=_['keys'](_0xbc0dc4[_0xcad2('0x33')]);_0x3be2d5[_0xcad2('0x35')]=_[_0xcad2('0x36')](_0x3be2d5[_0xcad2('0x37')],_0x3be2d5[_0xcad2('0x33')]);_0x14b915[_0xcad2('0x38')]=_[_0xcad2('0x36')](_0x3be2d5[_0xcad2('0x37')],qs[_0xcad2('0x4a')](_0xbc0dc4['query'][_0xcad2('0x4a')]));_0x14b915[_0xcad2('0x38')]=_0x14b915[_0xcad2('0x38')][_0xcad2('0x39')]?_0x14b915[_0xcad2('0x38')]:_0x3be2d5[_0xcad2('0x37')];if(_0xbc0dc4['query'][_0xcad2('0x44')]){_0x14b915['include']=[{'all':!![]}];}_0x14b915=_[_0xcad2('0x41')]({},_0x14b915,_0xbc0dc4[_0xcad2('0x43')]);return db['DeskConfiguration'][_0xcad2('0x4b')](_0x14b915)[_0xcad2('0x28')](handleEntityNotFound(_0x1211f9,null))[_0xcad2('0x28')](respondWithResult(_0x1211f9,null))['catch'](handleError(_0x1211f9,null));};exports[_0xcad2('0x4c')]=function(_0x554272,_0x3aae01){return db[_0xcad2('0x2f')]['create'](_0x554272[_0xcad2('0x4d')],{})[_0xcad2('0x28')](respondWithResult(_0x3aae01,0xc9))['catch'](handleError(_0x3aae01,null));};exports[_0xcad2('0x27')]=function(_0x1562e3,_0x9c1829){if(_0x1562e3[_0xcad2('0x4d')]['id']){delete _0x1562e3['body']['id'];}return db['DeskConfiguration'][_0xcad2('0x4b')]({'where':{'id':_0x1562e3[_0xcad2('0x49')]['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x9c1829,null))[_0xcad2('0x28')](saveUpdates(_0x1562e3[_0xcad2('0x4d')],null))[_0xcad2('0x28')](respondWithResult(_0x9c1829,null))[_0xcad2('0x4e')](handleError(_0x9c1829,null));};exports[_0xcad2('0x29')]=function(_0x31aabf,_0x570cae){return db[_0xcad2('0x2f')][_0xcad2('0x4b')]({'where':{'id':_0x31aabf[_0xcad2('0x49')]['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x570cae,null))[_0xcad2('0x28')](removeEntity(_0x570cae,null))['catch'](handleError(_0x570cae,null));};exports[_0xcad2('0x4f')]=function(_0x285376,_0x3f5342,_0x4a5ff7){var _0x4f68a9={};var _0xc6eedc={};var _0x9f6b0f;var _0x21072e;return db[_0xcad2('0x2f')][_0xcad2('0x50')]({'where':{'id':_0x285376[_0xcad2('0x49')]['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x3f5342,null))['then'](function(_0x58215b){if(_0x58215b){_0x9f6b0f=_0x58215b;_0xc6eedc[_0xcad2('0x37')]=_[_0xcad2('0x34')](db[_0xcad2('0x51')][_0xcad2('0x30')]);_0xc6eedc[_0xcad2('0x33')]=_[_0xcad2('0x34')](_0x285376[_0xcad2('0x33')]);_0xc6eedc['filters']=_[_0xcad2('0x36')](_0xc6eedc['model'],_0xc6eedc[_0xcad2('0x33')]);_0x4f68a9[_0xcad2('0x38')]=_[_0xcad2('0x36')](_0xc6eedc[_0xcad2('0x37')],qs[_0xcad2('0x4a')](_0x285376['query']['fields']));_0x4f68a9[_0xcad2('0x38')]=_0x4f68a9[_0xcad2('0x38')][_0xcad2('0x39')]?_0x4f68a9['attributes']:_0xc6eedc[_0xcad2('0x37')];_0x4f68a9[_0xcad2('0x3c')]=qs[_0xcad2('0x3d')](_0x285376[_0xcad2('0x33')][_0xcad2('0x3d')]);_0x4f68a9[_0xcad2('0x40')]=qs[_0xcad2('0x35')](_[_0xcad2('0x3e')](_0x285376[_0xcad2('0x33')],_0xc6eedc[_0xcad2('0x35')]));if(_0x285376[_0xcad2('0x33')][_0xcad2('0x3f')]){_0x4f68a9[_0xcad2('0x40')]=_['merge'](_0x4f68a9['where'],{'$or':_['map'](_0x4f68a9[_0xcad2('0x38')],function(_0x1426dd){var _0x2d7d11={};_0x2d7d11[_0x1426dd]={'$like':'%'+_0x285376[_0xcad2('0x33')][_0xcad2('0x3f')]+'%'};return _0x2d7d11;})});}_0x4f68a9=_[_0xcad2('0x41')]({},_0x4f68a9,_0x285376['options']);return _0x9f6b0f[_0xcad2('0x4f')](_0x4f68a9);}})[_0xcad2('0x28')](function(_0x58bc71){if(_0x58bc71){_0x21072e=_0x58bc71['length'];if(!_0x285376[_0xcad2('0x33')]['hasOwnProperty']('nolimit')){_0x4f68a9[_0xcad2('0x21')]=qs[_0xcad2('0x21')](_0x285376[_0xcad2('0x33')][_0xcad2('0x21')]);_0x4f68a9['offset']=qs[_0xcad2('0x1e')](_0x285376['query']['offset']);}return _0x9f6b0f['getFields'](_0x4f68a9);}})[_0xcad2('0x28')](function(_0x4cad46){if(_0x4cad46){return _0x4cad46?{'count':_0x21072e,'rows':_0x4cad46}:null;}})[_0xcad2('0x28')](respondWithResult(_0x3f5342,null))['catch'](handleError(_0x3f5342,null));};exports[_0xcad2('0x52')]=function(_0x4e075c,_0x5a484a,_0x131e8c){var _0x279415={};var _0x4a16ba={};var _0x5ec7bb;var _0x2295e1;return db[_0xcad2('0x2f')][_0xcad2('0x50')]({'where':{'id':_0x4e075c['params']['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x5a484a,null))[_0xcad2('0x28')](function(_0x4734ed){if(_0x4734ed){_0x5ec7bb=_0x4734ed;_0x4a16ba[_0xcad2('0x37')]=_[_0xcad2('0x34')](db['DeskField']['rawAttributes']);_0x4a16ba['query']=_[_0xcad2('0x34')](_0x4e075c[_0xcad2('0x33')]);_0x4a16ba[_0xcad2('0x35')]=_[_0xcad2('0x36')](_0x4a16ba[_0xcad2('0x37')],_0x4a16ba[_0xcad2('0x33')]);_0x279415[_0xcad2('0x38')]=_[_0xcad2('0x36')](_0x4a16ba[_0xcad2('0x37')],qs[_0xcad2('0x4a')](_0x4e075c[_0xcad2('0x33')][_0xcad2('0x4a')]));_0x279415[_0xcad2('0x38')]=_0x279415[_0xcad2('0x38')][_0xcad2('0x39')]?_0x279415[_0xcad2('0x38')]:_0x4a16ba[_0xcad2('0x37')];_0x279415[_0xcad2('0x3c')]=qs[_0xcad2('0x3d')](_0x4e075c[_0xcad2('0x33')][_0xcad2('0x3d')]);_0x279415[_0xcad2('0x40')]=qs[_0xcad2('0x35')](_['pick'](_0x4e075c[_0xcad2('0x33')],_0x4a16ba['filters']));if(_0x4e075c['query']['filter']){_0x279415['where']=_['merge'](_0x279415[_0xcad2('0x40')],{'$or':_[_0xcad2('0x2e')](_0x279415[_0xcad2('0x38')],function(_0x28d0cf){var _0x42a2b5={};_0x42a2b5[_0x28d0cf]={'$like':'%'+_0x4e075c[_0xcad2('0x33')][_0xcad2('0x3f')]+'%'};return _0x42a2b5;})});}_0x279415=_[_0xcad2('0x41')]({},_0x279415,_0x4e075c[_0xcad2('0x43')]);return _0x5ec7bb[_0xcad2('0x52')](_0x279415);}})[_0xcad2('0x28')](function(_0x23c6f3){if(_0x23c6f3){_0x2295e1=_0x23c6f3[_0xcad2('0x39')];if(!_0x4e075c[_0xcad2('0x33')][_0xcad2('0x3a')]('nolimit')){_0x279415[_0xcad2('0x21')]=qs['limit'](_0x4e075c['query'][_0xcad2('0x21')]);_0x279415[_0xcad2('0x1e')]=qs['offset'](_0x4e075c['query']['offset']);}return _0x5ec7bb[_0xcad2('0x52')](_0x279415);}})[_0xcad2('0x28')](function(_0x1f8116){if(_0x1f8116){return _0x1f8116?{'count':_0x2295e1,'rows':_0x1f8116}:null;}})[_0xcad2('0x28')](respondWithResult(_0x5a484a,null))[_0xcad2('0x4e')](handleError(_0x5a484a,null));};exports[_0xcad2('0x53')]=function(_0xbd53a4,_0x523fe2,_0x133e6d){var _0x4b2f33={};var _0x12151a={};var _0x2ba39b;var _0x1a3249;return db[_0xcad2('0x2f')][_0xcad2('0x50')]({'where':{'id':_0xbd53a4['params']['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x523fe2,null))[_0xcad2('0x28')](function(_0x133340){if(_0x133340){_0x2ba39b=_0x133340;_0x12151a[_0xcad2('0x37')]=_[_0xcad2('0x34')](db[_0xcad2('0x51')][_0xcad2('0x30')]);_0x12151a[_0xcad2('0x33')]=_[_0xcad2('0x34')](_0xbd53a4[_0xcad2('0x33')]);_0x12151a[_0xcad2('0x35')]=_[_0xcad2('0x36')](_0x12151a[_0xcad2('0x37')],_0x12151a['query']);_0x4b2f33[_0xcad2('0x38')]=_[_0xcad2('0x36')](_0x12151a[_0xcad2('0x37')],qs[_0xcad2('0x4a')](_0xbd53a4['query'][_0xcad2('0x4a')]));_0x4b2f33[_0xcad2('0x38')]=_0x4b2f33['attributes'][_0xcad2('0x39')]?_0x4b2f33[_0xcad2('0x38')]:_0x12151a[_0xcad2('0x37')];_0x4b2f33[_0xcad2('0x3c')]=qs[_0xcad2('0x3d')](_0xbd53a4[_0xcad2('0x33')][_0xcad2('0x3d')]);_0x4b2f33[_0xcad2('0x40')]=qs[_0xcad2('0x35')](_[_0xcad2('0x3e')](_0xbd53a4[_0xcad2('0x33')],_0x12151a['filters']));if(_0xbd53a4['query'][_0xcad2('0x3f')]){_0x4b2f33['where']=_[_0xcad2('0x41')](_0x4b2f33[_0xcad2('0x40')],{'$or':_['map'](_0x4b2f33[_0xcad2('0x38')],function(_0x51750){var _0x54bba3={};_0x54bba3[_0x51750]={'$like':'%'+_0xbd53a4[_0xcad2('0x33')]['filter']+'%'};return _0x54bba3;})});}_0x4b2f33=_[_0xcad2('0x41')]({},_0x4b2f33,_0xbd53a4[_0xcad2('0x43')]);return _0x2ba39b[_0xcad2('0x53')](_0x4b2f33);}})[_0xcad2('0x28')](function(_0x1b33fc){if(_0x1b33fc){_0x1a3249=_0x1b33fc[_0xcad2('0x39')];if(!_0xbd53a4[_0xcad2('0x33')][_0xcad2('0x3a')](_0xcad2('0x3b'))){_0x4b2f33['limit']=qs['limit'](_0xbd53a4[_0xcad2('0x33')][_0xcad2('0x21')]);_0x4b2f33[_0xcad2('0x1e')]=qs[_0xcad2('0x1e')](_0xbd53a4['query']['offset']);}return _0x2ba39b[_0xcad2('0x53')](_0x4b2f33);}})['then'](function(_0x27072f){if(_0x27072f){return _0x27072f?{'count':_0x1a3249,'rows':_0x27072f}:null;}})[_0xcad2('0x28')](respondWithResult(_0x523fe2,null))[_0xcad2('0x4e')](handleError(_0x523fe2,null));};exports[_0xcad2('0x54')]=function(_0x4b1d10,_0x4af844,_0x248e65){var _0x1bf436={};var _0x23f104={};var _0x1378b8;var _0x1d612e;return db['DeskConfiguration'][_0xcad2('0x50')]({'where':{'id':_0x4b1d10['params']['id']}})['then'](handleEntityNotFound(_0x4af844,null))[_0xcad2('0x28')](function(_0x1d838f){if(_0x1d838f){_0x1378b8=_0x1d838f;_0x23f104[_0xcad2('0x37')]=_[_0xcad2('0x34')](db[_0xcad2('0x55')][_0xcad2('0x30')]);_0x23f104['query']=_[_0xcad2('0x34')](_0x4b1d10[_0xcad2('0x33')]);_0x23f104[_0xcad2('0x35')]=_[_0xcad2('0x36')](_0x23f104['model'],_0x23f104[_0xcad2('0x33')]);_0x1bf436['attributes']=_[_0xcad2('0x36')](_0x23f104[_0xcad2('0x37')],qs[_0xcad2('0x4a')](_0x4b1d10[_0xcad2('0x33')][_0xcad2('0x4a')]));_0x1bf436[_0xcad2('0x38')]=_0x1bf436[_0xcad2('0x38')]['length']?_0x1bf436[_0xcad2('0x38')]:_0x23f104[_0xcad2('0x37')];_0x1bf436[_0xcad2('0x3c')]=qs[_0xcad2('0x3d')](_0x4b1d10[_0xcad2('0x33')][_0xcad2('0x3d')]);_0x1bf436[_0xcad2('0x40')]=qs[_0xcad2('0x35')](_[_0xcad2('0x3e')](_0x4b1d10['query'],_0x23f104['filters']));if(_0x4b1d10[_0xcad2('0x33')]['filter']){_0x1bf436[_0xcad2('0x40')]=_[_0xcad2('0x41')](_0x1bf436[_0xcad2('0x40')],{'$or':_[_0xcad2('0x2e')](_0x1bf436[_0xcad2('0x38')],function(_0x4eae9a){var _0x2045bd={};_0x2045bd[_0x4eae9a]={'$like':'%'+_0x4b1d10[_0xcad2('0x33')][_0xcad2('0x3f')]+'%'};return _0x2045bd;})});}_0x1bf436=_[_0xcad2('0x41')]({},_0x1bf436,_0x4b1d10['options']);return _0x1378b8[_0xcad2('0x54')](_0x1bf436);}})[_0xcad2('0x28')](function(_0x359c3c){if(_0x359c3c){_0x1d612e=_0x359c3c[_0xcad2('0x39')];if(!_0x4b1d10[_0xcad2('0x33')]['hasOwnProperty']('nolimit')){_0x1bf436[_0xcad2('0x21')]=qs[_0xcad2('0x21')](_0x4b1d10[_0xcad2('0x33')][_0xcad2('0x21')]);_0x1bf436['offset']=qs[_0xcad2('0x1e')](_0x4b1d10[_0xcad2('0x33')]['offset']);}return _0x1378b8[_0xcad2('0x54')](_0x1bf436);}})[_0xcad2('0x28')](function(_0x5b373f){if(_0x5b373f){return _0x5b373f?{'count':_0x1d612e,'rows':_0x5b373f}:null;}})[_0xcad2('0x28')](respondWithResult(_0x4af844,null))['catch'](handleError(_0x4af844,null));};exports[_0xcad2('0x56')]=function(_0x6dc507,_0x2f7fff,_0x35d8ba){if(_0x6dc507[_0xcad2('0x4d')]['id']){delete _0x6dc507[_0xcad2('0x4d')]['id'];}return db[_0xcad2('0x2f')][_0xcad2('0x50')]({'where':{'id':_0x6dc507['params']['id']}})[_0xcad2('0x28')](handleEntityNotFound(_0x2f7fff,null))[_0xcad2('0x28')](function(_0x1ccada){if(_0x1ccada){return _0x1ccada[_0xcad2('0x56')](_0x6dc507[_0xcad2('0x4d')][_0xcad2('0x57')]||[]);}return null;})['then'](respondWithResult(_0x2f7fff,null))['catch'](handleError(_0x2f7fff,null));};
\ No newline at end of file
index 430fe98..14416a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9019=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations'];(function(_0x38d7f0,_0x9f9bd9){var _0x5b30b6=function(_0x441220){while(--_0x441220){_0x38d7f0['push'](_0x38d7f0['shift']());}};_0x5b30b6(++_0x9f9bd9);}(_0x9019,0x9c));var _0x9901=function(_0x430459,_0x58519c){_0x430459=_0x430459-0x0;var _0x3a2439=_0x9019[_0x430459];return _0x3a2439;};'use strict';var _=require(_0x9901('0x0'));var util=require(_0x9901('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9901('0x2'));var BPromise=require(_0x9901('0x3'));var rp=require(_0x9901('0x4'));var fs=require('fs');var path=require(_0x9901('0x5'));var rimraf=require(_0x9901('0x6'));var config=require(_0x9901('0x7'));var attributes=require(_0x9901('0x8'));module[_0x9901('0x9')]=function(_0x32131d,_0x2469d1){return _0x32131d[_0x9901('0xa')]('DeskConfiguration',attributes,{'tableName':_0x9901('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc09=['exports','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./intDeskConfiguration.attributes'];(function(_0x172c8d,_0x40ffe9){var _0x300fb8=function(_0x3bb397){while(--_0x3bb397){_0x172c8d['push'](_0x172c8d['shift']());}};_0x300fb8(++_0x40ffe9);}(_0xfc09,0x118));var _0x9fc0=function(_0x526ee9,_0xc04fb9){_0x526ee9=_0x526ee9-0x0;var _0x2f1e1c=_0xfc09[_0x526ee9];return _0x2f1e1c;};'use strict';var _=require(_0x9fc0('0x0'));var util=require(_0x9fc0('0x1'));var logger=require(_0x9fc0('0x2'))('api');var moment=require(_0x9fc0('0x3'));var BPromise=require(_0x9fc0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fc0('0x5'));var rimraf=require(_0x9fc0('0x6'));var config=require('../../config/environment');var attributes=require(_0x9fc0('0x7'));module[_0x9fc0('0x8')]=function(_0x5346e1,_0x48b9e5){return _0x5346e1[_0x9fc0('0x9')](_0x9fc0('0xa'),attributes,{'tableName':_0x9fc0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6af4422..a71a86b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86be=['../../config/utils','../../config/logger','rpc','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x95b44e,_0x4af5e1){var _0x4d33ea=function(_0x35acd6){while(--_0x35acd6){_0x95b44e['push'](_0x95b44e['shift']());}};_0x4d33ea(++_0x4af5e1);}(_0x86be,0x176));var _0xe86b=function(_0x14039a,_0x2510cb){_0x14039a=_0x14039a-0x0;var _0x12a3d0=_0x86be[_0x14039a];return _0x12a3d0;};'use strict';var _=require(_0xe86b('0x0'));var util=require('util');var moment=require(_0xe86b('0x1'));var BPromise=require(_0xe86b('0x2'));var rs=require(_0xe86b('0x3'));var fs=require('fs');var Redis=require(_0xe86b('0x4'));var db=require(_0xe86b('0x5'))['db'];var utils=require(_0xe86b('0x6'));var logger=require(_0xe86b('0x7'))(_0xe86b('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xe86b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa52177,_0x40aac9,_0x456af3){return new BPromise(function(_0x55daf1,_0x451793){return client[_0xe86b('0xa')](_0xa52177,_0x456af3)[_0xe86b('0xb')](function(_0x58715b){logger[_0xe86b('0xc')](_0xe86b('0xd'),_0x40aac9,_0xe86b('0xe'));logger['debug'](_0xe86b('0xf'),_0x40aac9,_0xe86b('0xe'),JSON[_0xe86b('0x10')](_0x58715b));if(_0x58715b[_0xe86b('0x11')]){if(_0x58715b[_0xe86b('0x11')][_0xe86b('0x12')]===0x1f4){logger[_0xe86b('0x11')](_0xe86b('0xd'),_0x40aac9,_0x58715b['error']['message']);return _0x451793(_0x58715b[_0xe86b('0x11')][_0xe86b('0x13')]);}logger[_0xe86b('0x11')](_0xe86b('0xd'),_0x40aac9,_0x58715b[_0xe86b('0x11')][_0xe86b('0x13')]);return _0x55daf1(_0x58715b[_0xe86b('0x11')][_0xe86b('0x13')]);}else{logger[_0xe86b('0xc')](_0xe86b('0xd'),_0x40aac9,_0xe86b('0xe'));_0x55daf1(_0x58715b['result'][_0xe86b('0x13')]);}})['catch'](function(_0x3c5ad6){logger[_0xe86b('0x11')](_0xe86b('0xd'),_0x40aac9,_0x3c5ad6);_0x451793(_0x3c5ad6);});});}
\ No newline at end of file
+var _0xc373=['../../config/environment','jayson/promise','request','then','info','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DeskConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x554a8c,_0x4d1b21){var _0x47c5d2=function(_0x2c73e8){while(--_0x2c73e8){_0x554a8c['push'](_0x554a8c['shift']());}};_0x47c5d2(++_0x4d1b21);}(_0xc373,0x1c7));var _0x3c37=function(_0x3712e2,_0x32d752){_0x3712e2=_0x3712e2-0x0;var _0x1faff4=_0xc373[_0x3712e2];return _0x1faff4;};'use strict';var _=require('lodash');var util=require(_0x3c37('0x0'));var moment=require(_0x3c37('0x1'));var BPromise=require(_0x3c37('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c37('0x3'))['db'];var utils=require(_0x3c37('0x4'));var logger=require(_0x3c37('0x5'))(_0x3c37('0x6'));var config=require(_0x3c37('0x7'));var jayson=require(_0x3c37('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e1941,_0x1244e6,_0x14b09d){return new BPromise(function(_0x10617,_0x465de6){return client[_0x3c37('0x9')](_0x2e1941,_0x14b09d)[_0x3c37('0xa')](function(_0x59d4f9){logger[_0x3c37('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x1244e6,'request\x20sent');logger[_0x3c37('0xc')](_0x3c37('0xd'),_0x1244e6,_0x3c37('0xe'),JSON[_0x3c37('0xf')](_0x59d4f9));if(_0x59d4f9[_0x3c37('0x10')]){if(_0x59d4f9[_0x3c37('0x10')][_0x3c37('0x11')]===0x1f4){logger['error'](_0x3c37('0x12'),_0x1244e6,_0x59d4f9[_0x3c37('0x10')][_0x3c37('0x13')]);return _0x465de6(_0x59d4f9['error']['message']);}logger[_0x3c37('0x10')]('DeskConfiguration,\x20%s,\x20%s',_0x1244e6,_0x59d4f9['error'][_0x3c37('0x13')]);return _0x10617(_0x59d4f9[_0x3c37('0x10')][_0x3c37('0x13')]);}else{logger[_0x3c37('0xb')](_0x3c37('0x12'),_0x1244e6,_0x3c37('0xe'));_0x10617(_0x59d4f9[_0x3c37('0x14')][_0x3c37('0x13')]);}})[_0x3c37('0x15')](function(_0x4e1560){logger[_0x3c37('0x10')](_0x3c37('0x12'),_0x1244e6,_0x4e1560);_0x465de6(_0x4e1560);});});}
\ No newline at end of file
index 55f544e..25559bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ed=['/:id','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index'];(function(_0x31c89b,_0x478fb8){var _0xbc488d=function(_0x31b913){while(--_0x31b913){_0x31c89b['push'](_0x31c89b['shift']());}};_0xbc488d(++_0x478fb8);}(_0x04ed,0x170));var _0xd04e=function(_0x5374eb,_0x4e5e18){_0x5374eb=_0x5374eb-0x0;var _0x406a25=_0x04ed[_0x5374eb];return _0x406a25;};'use strict';var multer=require(_0xd04e('0x0'));var util=require(_0xd04e('0x1'));var path=require('path');var timeout=require(_0xd04e('0x2'));var express=require(_0xd04e('0x3'));var router=express['Router']();var fs_extra=require(_0xd04e('0x4'));var auth=require(_0xd04e('0x5'));var interaction=require(_0xd04e('0x6'));var config=require(_0xd04e('0x7'));var controller=require(_0xd04e('0x8'));router[_0xd04e('0x9')]('/',auth[_0xd04e('0xa')](),controller[_0xd04e('0xb')]);router[_0xd04e('0x9')](_0xd04e('0xc'),auth[_0xd04e('0xa')](),controller['show']);router[_0xd04e('0xd')]('/',auth[_0xd04e('0xa')](),controller[_0xd04e('0xe')]);router[_0xd04e('0xf')](_0xd04e('0xc'),auth[_0xd04e('0xa')](),controller[_0xd04e('0x10')]);router['delete'](_0xd04e('0xc'),auth[_0xd04e('0xa')](),controller[_0xd04e('0x11')]);module[_0xd04e('0x12')]=router;
\ No newline at end of file
+var _0xe4f1=['show','post','create','put','/:id','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x4da448,_0x47ecd2){var _0x234978=function(_0x2b3912){while(--_0x2b3912){_0x4da448['push'](_0x4da448['shift']());}};_0x234978(++_0x47ecd2);}(_0xe4f1,0x1a6));var _0x1e4f=function(_0x3a157d,_0x45b50d){_0x3a157d=_0x3a157d-0x0;var _0x17ff26=_0xe4f1[_0x3a157d];return _0x17ff26;};'use strict';var multer=require(_0x1e4f('0x0'));var util=require(_0x1e4f('0x1'));var path=require(_0x1e4f('0x2'));var timeout=require('connect-timeout');var express=require(_0x1e4f('0x3'));var router=express['Router']();var fs_extra=require(_0x1e4f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1e4f('0x5'));var config=require(_0x1e4f('0x6'));var controller=require('./intDeskField.controller');router[_0x1e4f('0x7')]('/',auth[_0x1e4f('0x8')](),controller[_0x1e4f('0x9')]);router[_0x1e4f('0x7')]('/:id',auth[_0x1e4f('0x8')](),controller[_0x1e4f('0xa')]);router[_0x1e4f('0xb')]('/',auth[_0x1e4f('0x8')](),controller[_0x1e4f('0xc')]);router[_0x1e4f('0xd')](_0x1e4f('0xe'),auth[_0x1e4f('0x8')](),controller['update']);router['delete']('/:id',auth[_0x1e4f('0x8')](),controller['destroy']);module[_0x1e4f('0xf')]=router;
\ No newline at end of file
index ceb2887..2bea841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x294f=['customVariable','keyValue','picklist','STRING','ENUM','sequelize','string','variable'];(function(_0x500488,_0x34ad8b){var _0x2d2f48=function(_0x5dd271){while(--_0x5dd271){_0x500488['push'](_0x500488['shift']());}};_0x2d2f48(++_0x34ad8b);}(_0x294f,0xfd));var _0xf294=function(_0x15c808,_0x47863d){_0x15c808=_0x15c808-0x0;var _0x4e4498=_0x294f[_0x15c808];return _0x4e4498;};'use strict';var Sequelize=require(_0xf294('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xf294('0x1'),_0xf294('0x2'),_0xf294('0x3'),_0xf294('0x4'),_0xf294('0x5')),'defaultValue':_0xf294('0x1')},'content':{'type':Sequelize[_0xf294('0x6')]},'key':{'type':Sequelize[_0xf294('0x6')]},'keyType':{'type':Sequelize[_0xf294('0x7')](_0xf294('0x1'),_0xf294('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xf294('0x6')]},'idField':{'type':Sequelize[_0xf294('0x6')]},'nameField':{'type':Sequelize[_0xf294('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf294('0x6')]}};
\ No newline at end of file
+var _0xc227=['string','customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x2feb7c,_0x24053b){var _0x22b704=function(_0x53b68f){while(--_0x53b68f){_0x2feb7c['push'](_0x2feb7c['shift']());}};_0x22b704(++_0x24053b);}(_0xc227,0x1bd));var _0x7c22=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xc227[_0x8de54f];return _0x14cba4;};'use strict';var Sequelize=require(_0x7c22('0x0'));module[_0x7c22('0x1')]={'type':{'type':Sequelize[_0x7c22('0x2')](_0x7c22('0x3'),'variable',_0x7c22('0x4'),'keyValue',_0x7c22('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x7c22('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7c22('0x2')](_0x7c22('0x3'),'variable',_0x7c22('0x4'))},'keyContent':{'type':Sequelize[_0x7c22('0x6')]},'idField':{'type':Sequelize[_0x7c22('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7c22('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7c22('0x6')]}};
\ No newline at end of file
index e0c138f..fc7e3e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e3=['keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','name','options','includeAll','include','catch','show','params','find','create','body','rimraf','zip-dir','moment','mustache','util','sox','to-csv','fs-extra','squel','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','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','stack','send','index','map','DeskField','rawAttributes','fieldName','type','key','model','query'];(function(_0x1fdc2b,_0x175ee4){var _0x52682a=function(_0x13ae6e){while(--_0x13ae6e){_0x1fdc2b['push'](_0x1fdc2b['shift']());}};_0x52682a(++_0x175ee4);}(_0xe5e3,0x17a));var _0x3e5e=function(_0xfbaee,_0x51a770){_0xfbaee=_0xfbaee-0x0;var _0x35e69d=_0xe5e3[_0xfbaee];return _0x35e69d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3e5e('0x0'));var zipdir=require(_0x3e5e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3e5e('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3e5e('0x3'));var util=require(_0x3e5e('0x4'));var path=require('path');var sox=require(_0x3e5e('0x5'));var csv=require(_0x3e5e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e5e('0x7'));var _=require('lodash');var squel=require(_0x3e5e('0x8'));var crypto=require('crypto');var jsforce=require(_0x3e5e('0x9'));var deskjs=require(_0x3e5e('0xa'));var toCsv=require(_0x3e5e('0x6'));var querystring=require(_0x3e5e('0xb'));var Papa=require(_0x3e5e('0xc'));var Redis=require(_0x3e5e('0xd'));var authService=require(_0x3e5e('0xe'));var qs=require(_0x3e5e('0xf'));var as=require(_0x3e5e('0x10'));var hardwareService=require(_0x3e5e('0x11'));var logger=require(_0x3e5e('0x12'))('api');var utils=require(_0x3e5e('0x13'));var config=require(_0x3e5e('0x14'));var licenseUtil=require(_0x3e5e('0x15'));var db=require(_0x3e5e('0x16'))['db'];function respondWithStatusCode(_0xaf6c13,_0x45d170){_0x45d170=_0x45d170||0xcc;return function(_0xe8bafe){if(_0xe8bafe){return _0xaf6c13[_0x3e5e('0x17')](_0x45d170);}return _0xaf6c13[_0x3e5e('0x18')](_0x45d170)[_0x3e5e('0x19')]();};}function respondWithResult(_0x157cfb,_0x2bdcd1){_0x2bdcd1=_0x2bdcd1||0xc8;return function(_0x1949bc){if(_0x1949bc){return _0x157cfb[_0x3e5e('0x18')](_0x2bdcd1)['json'](_0x1949bc);}};}function respondWithFilteredResult(_0x2545f0,_0x751a5f){return function(_0x580aae){if(_0x580aae){var _0x5dea39=typeof _0x751a5f[_0x3e5e('0x1a')]===_0x3e5e('0x1b')&&typeof _0x751a5f[_0x3e5e('0x1c')]===_0x3e5e('0x1b');var _0x4d144e=_0x580aae[_0x3e5e('0x1d')];var _0xcba431=_0x5dea39?0x0:_0x751a5f['offset'];var _0x229977=_0x5dea39?_0x580aae[_0x3e5e('0x1d')]:_0x751a5f[_0x3e5e('0x1a')]+_0x751a5f[_0x3e5e('0x1c')];var _0xfc5acc;if(_0x229977>=_0x4d144e){_0x229977=_0x4d144e;_0xfc5acc=0xc8;}else{_0xfc5acc=0xce;}_0x2545f0[_0x3e5e('0x18')](_0xfc5acc);return _0x2545f0[_0x3e5e('0x1e')]('Content-Range',_0xcba431+'-'+_0x229977+'/'+_0x4d144e)['json'](_0x580aae);}return null;};}function patchUpdates(_0x4ea253){return function(_0x3bfcb0){try{jsonpatch[_0x3e5e('0x1f')](_0x3bfcb0,_0x4ea253,!![]);}catch(_0x522168){return BPromise['reject'](_0x522168);}return _0x3bfcb0[_0x3e5e('0x20')]();};}function saveUpdates(_0xd24e1d,_0x2e19d6){return function(_0x1d199a){if(_0x1d199a){return _0x1d199a[_0x3e5e('0x21')](_0xd24e1d)[_0x3e5e('0x22')](function(_0x3ee768){return _0x3ee768;});}return null;};}function removeEntity(_0x10aa90,_0x457db9){return function(_0x568de2){if(_0x568de2){return _0x568de2[_0x3e5e('0x23')]()[_0x3e5e('0x22')](function(){_0x10aa90[_0x3e5e('0x18')](0xcc)[_0x3e5e('0x19')]();});}};}function handleEntityNotFound(_0x4c4067,_0x389be4){return function(_0x441871){if(!_0x441871){_0x4c4067[_0x3e5e('0x17')](0x194);}return _0x441871;};}function handleError(_0x31b570,_0x28af5e){_0x28af5e=_0x28af5e||0x1f4;return function(_0x37a02c){logger[_0x3e5e('0x24')](_0x37a02c[_0x3e5e('0x25')]);if(_0x37a02c['name']){delete _0x37a02c['name'];}_0x31b570[_0x3e5e('0x18')](_0x28af5e)[_0x3e5e('0x26')](_0x37a02c);};}exports[_0x3e5e('0x27')]=function(_0x48cf5f,_0xa3f069){var _0x5c4f71={},_0x412b2c={},_0x215dae={'count':0x0,'rows':[]};var _0xfc31e0=_[_0x3e5e('0x28')](db[_0x3e5e('0x29')][_0x3e5e('0x2a')],function(_0x405a6f){return{'name':_0x405a6f[_0x3e5e('0x2b')],'type':_0x405a6f[_0x3e5e('0x2c')][_0x3e5e('0x2d')]};});_0x412b2c[_0x3e5e('0x2e')]=_[_0x3e5e('0x28')](_0xfc31e0,'name');_0x412b2c[_0x3e5e('0x2f')]=_[_0x3e5e('0x30')](_0x48cf5f[_0x3e5e('0x2f')]);_0x412b2c[_0x3e5e('0x31')]=_['intersection'](_0x412b2c[_0x3e5e('0x2e')],_0x412b2c[_0x3e5e('0x2f')]);_0x5c4f71['attributes']=_[_0x3e5e('0x32')](_0x412b2c[_0x3e5e('0x2e')],qs[_0x3e5e('0x33')](_0x48cf5f[_0x3e5e('0x2f')]['fields']));_0x5c4f71[_0x3e5e('0x34')]=_0x5c4f71[_0x3e5e('0x34')][_0x3e5e('0x35')]?_0x5c4f71[_0x3e5e('0x34')]:_0x412b2c[_0x3e5e('0x2e')];if(!_0x48cf5f['query']['hasOwnProperty'](_0x3e5e('0x36'))){_0x5c4f71[_0x3e5e('0x1c')]=qs[_0x3e5e('0x1c')](_0x48cf5f['query'][_0x3e5e('0x1c')]);_0x5c4f71[_0x3e5e('0x1a')]=qs[_0x3e5e('0x1a')](_0x48cf5f['query'][_0x3e5e('0x1a')]);}_0x5c4f71[_0x3e5e('0x37')]=qs['sort'](_0x48cf5f[_0x3e5e('0x2f')][_0x3e5e('0x38')]);_0x5c4f71[_0x3e5e('0x39')]=qs[_0x3e5e('0x31')](_[_0x3e5e('0x3a')](_0x48cf5f[_0x3e5e('0x2f')],_0x412b2c[_0x3e5e('0x31')]),_0xfc31e0);if(_0x48cf5f[_0x3e5e('0x2f')][_0x3e5e('0x3b')]){_0x5c4f71['where']=_[_0x3e5e('0x3c')](_0x5c4f71['where'],{'$or':_[_0x3e5e('0x28')](_0xfc31e0,function(_0x2f8edf){if(_0x2f8edf[_0x3e5e('0x2c')]!=='VIRTUAL'){var _0x4fc9fe={};_0x4fc9fe[_0x2f8edf[_0x3e5e('0x3d')]]={'$like':'%'+_0x48cf5f['query'][_0x3e5e('0x3b')]+'%'};return _0x4fc9fe;}})});}_0x5c4f71=_[_0x3e5e('0x3c')]({},_0x5c4f71,_0x48cf5f[_0x3e5e('0x3e')]);var _0x19f2fe={'where':_0x5c4f71['where']};return db[_0x3e5e('0x29')][_0x3e5e('0x1d')](_0x19f2fe)[_0x3e5e('0x22')](function(_0x506013){_0x215dae['count']=_0x506013;if(_0x48cf5f[_0x3e5e('0x2f')][_0x3e5e('0x3f')]){_0x5c4f71[_0x3e5e('0x40')]=[{'all':!![]}];}return db[_0x3e5e('0x29')]['findAll'](_0x5c4f71);})[_0x3e5e('0x22')](function(_0x57d265){_0x215dae['rows']=_0x57d265;return _0x215dae;})[_0x3e5e('0x22')](respondWithFilteredResult(_0xa3f069,_0x5c4f71))[_0x3e5e('0x41')](handleError(_0xa3f069,null));};exports[_0x3e5e('0x42')]=function(_0x460f45,_0x48464b){var _0x5a64cd={'raw':!![],'where':{'id':_0x460f45[_0x3e5e('0x43')]['id']}},_0x305758={};_0x305758[_0x3e5e('0x2e')]=_[_0x3e5e('0x30')](db['DeskField'][_0x3e5e('0x2a')]);_0x305758['query']=_['keys'](_0x460f45[_0x3e5e('0x2f')]);_0x305758[_0x3e5e('0x31')]=_[_0x3e5e('0x32')](_0x305758['model'],_0x305758[_0x3e5e('0x2f')]);_0x5a64cd[_0x3e5e('0x34')]=_['intersection'](_0x305758[_0x3e5e('0x2e')],qs['fields'](_0x460f45[_0x3e5e('0x2f')][_0x3e5e('0x33')]));_0x5a64cd[_0x3e5e('0x34')]=_0x5a64cd[_0x3e5e('0x34')]['length']?_0x5a64cd[_0x3e5e('0x34')]:_0x305758[_0x3e5e('0x2e')];if(_0x460f45[_0x3e5e('0x2f')][_0x3e5e('0x3f')]){_0x5a64cd['include']=[{'all':!![]}];}_0x5a64cd=_['merge']({},_0x5a64cd,_0x460f45[_0x3e5e('0x3e')]);return db[_0x3e5e('0x29')][_0x3e5e('0x44')](_0x5a64cd)['then'](handleEntityNotFound(_0x48464b,null))[_0x3e5e('0x22')](respondWithResult(_0x48464b,null))[_0x3e5e('0x41')](handleError(_0x48464b,null));};exports['create']=function(_0x309634,_0x4b0650){return db[_0x3e5e('0x29')][_0x3e5e('0x45')](_0x309634[_0x3e5e('0x46')],{})[_0x3e5e('0x22')](respondWithResult(_0x4b0650,0xc9))[_0x3e5e('0x41')](handleError(_0x4b0650,null));};exports[_0x3e5e('0x21')]=function(_0x30dc5f,_0xd79f71){if(_0x30dc5f[_0x3e5e('0x46')]['id']){delete _0x30dc5f[_0x3e5e('0x46')]['id'];}return db[_0x3e5e('0x29')]['find']({'where':{'id':_0x30dc5f[_0x3e5e('0x43')]['id']}})[_0x3e5e('0x22')](handleEntityNotFound(_0xd79f71,null))['then'](saveUpdates(_0x30dc5f[_0x3e5e('0x46')],null))[_0x3e5e('0x22')](respondWithResult(_0xd79f71,null))['catch'](handleError(_0xd79f71,null));};exports['destroy']=function(_0x120cb9,_0x166b2c){return db[_0x3e5e('0x29')][_0x3e5e('0x44')]({'where':{'id':_0x120cb9[_0x3e5e('0x43')]['id']}})['then'](handleEntityNotFound(_0x166b2c,null))[_0x3e5e('0x22')](removeEntity(_0x166b2c,null))[_0x3e5e('0x41')](handleError(_0x166b2c,null));};
\ No newline at end of file
+var _0xfd87=['crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','DeskField','rawAttributes','type','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','filter','merge','where','options','includeAll','include','findAll','rows','catch','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel'];(function(_0x47ae01,_0x2dd0b0){var _0x15b3b7=function(_0x540ebc){while(--_0x540ebc){_0x47ae01['push'](_0x47ae01['shift']());}};_0x15b3b7(++_0x2dd0b0);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7fd8('0x0'));var rimraf=require(_0x7fd8('0x1'));var zipdir=require(_0x7fd8('0x2'));var jsonpatch=require(_0x7fd8('0x3'));var rp=require(_0x7fd8('0x4'));var moment=require(_0x7fd8('0x5'));var BPromise=require(_0x7fd8('0x6'));var Mustache=require(_0x7fd8('0x7'));var util=require(_0x7fd8('0x8'));var path=require(_0x7fd8('0x9'));var sox=require(_0x7fd8('0xa'));var csv=require('to-csv');var ejs=require(_0x7fd8('0xb'));var fs=require('fs');var fs_extra=require(_0x7fd8('0xc'));var _=require('lodash');var squel=require(_0x7fd8('0xd'));var crypto=require(_0x7fd8('0xe'));var jsforce=require(_0x7fd8('0xf'));var deskjs=require(_0x7fd8('0x10'));var toCsv=require(_0x7fd8('0x11'));var querystring=require('querystring');var Papa=require(_0x7fd8('0x12'));var Redis=require(_0x7fd8('0x13'));var authService=require(_0x7fd8('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7fd8('0x15'))('api');var utils=require(_0x7fd8('0x16'));var config=require(_0x7fd8('0x17'));var licenseUtil=require(_0x7fd8('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x136770,_0x2cccdb){_0x2cccdb=_0x2cccdb||0xcc;return function(_0xe84aa7){if(_0xe84aa7){return _0x136770[_0x7fd8('0x19')](_0x2cccdb);}return _0x136770[_0x7fd8('0x1a')](_0x2cccdb)['end']();};}function respondWithResult(_0x1af365,_0x17a3a1){_0x17a3a1=_0x17a3a1||0xc8;return function(_0x1d481a){if(_0x1d481a){return _0x1af365[_0x7fd8('0x1a')](_0x17a3a1)[_0x7fd8('0x1b')](_0x1d481a);}};}function respondWithFilteredResult(_0x38d45a,_0x1a4a52){return function(_0x33c8f9){if(_0x33c8f9){var _0x2a8818=typeof _0x1a4a52[_0x7fd8('0x1c')]===_0x7fd8('0x1d')&&typeof _0x1a4a52['limit']==='undefined';var _0x5ca7f6=_0x33c8f9[_0x7fd8('0x1e')];var _0xce23dc=_0x2a8818?0x0:_0x1a4a52['offset'];var _0x39e301=_0x2a8818?_0x33c8f9[_0x7fd8('0x1e')]:_0x1a4a52[_0x7fd8('0x1c')]+_0x1a4a52[_0x7fd8('0x1f')];var _0x3ab724;if(_0x39e301>=_0x5ca7f6){_0x39e301=_0x5ca7f6;_0x3ab724=0xc8;}else{_0x3ab724=0xce;}_0x38d45a[_0x7fd8('0x1a')](_0x3ab724);return _0x38d45a[_0x7fd8('0x20')](_0x7fd8('0x21'),_0xce23dc+'-'+_0x39e301+'/'+_0x5ca7f6)['json'](_0x33c8f9);}return null;};}function patchUpdates(_0x34bc09){return function(_0x3b7b49){try{jsonpatch[_0x7fd8('0x22')](_0x3b7b49,_0x34bc09,!![]);}catch(_0x13417d){return BPromise[_0x7fd8('0x23')](_0x13417d);}return _0x3b7b49[_0x7fd8('0x24')]();};}function saveUpdates(_0x4f8563,_0xecd3f3){return function(_0x1d26d4){if(_0x1d26d4){return _0x1d26d4[_0x7fd8('0x25')](_0x4f8563)[_0x7fd8('0x26')](function(_0x52b71a){return _0x52b71a;});}return null;};}function removeEntity(_0x3f71a4,_0x402fa1){return function(_0x2e7520){if(_0x2e7520){return _0x2e7520[_0x7fd8('0x27')]()[_0x7fd8('0x26')](function(){_0x3f71a4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3650cb,_0x6cccad){return function(_0xa273a7){if(!_0xa273a7){_0x3650cb[_0x7fd8('0x19')](0x194);}return _0xa273a7;};}function handleError(_0x17b86a,_0x50f34f){_0x50f34f=_0x50f34f||0x1f4;return function(_0x12bc21){logger[_0x7fd8('0x28')](_0x12bc21[_0x7fd8('0x29')]);if(_0x12bc21[_0x7fd8('0x2a')]){delete _0x12bc21[_0x7fd8('0x2a')];}_0x17b86a['status'](_0x50f34f)['send'](_0x12bc21);};}exports[_0x7fd8('0x2b')]=function(_0x2bd721,_0x3919b1){var _0x4319b8={},_0x573ed0={},_0x4fc63a={'count':0x0,'rows':[]};var _0x8f9a8e=_['map'](db[_0x7fd8('0x2c')][_0x7fd8('0x2d')],function(_0x3df0a2){return{'name':_0x3df0a2['fieldName'],'type':_0x3df0a2[_0x7fd8('0x2e')]['key']};});_0x573ed0[_0x7fd8('0x2f')]=_[_0x7fd8('0x30')](_0x8f9a8e,_0x7fd8('0x2a'));_0x573ed0[_0x7fd8('0x31')]=_[_0x7fd8('0x32')](_0x2bd721[_0x7fd8('0x31')]);_0x573ed0[_0x7fd8('0x33')]=_['intersection'](_0x573ed0[_0x7fd8('0x2f')],_0x573ed0[_0x7fd8('0x31')]);_0x4319b8[_0x7fd8('0x34')]=_[_0x7fd8('0x35')](_0x573ed0[_0x7fd8('0x2f')],qs[_0x7fd8('0x36')](_0x2bd721[_0x7fd8('0x31')][_0x7fd8('0x36')]));_0x4319b8['attributes']=_0x4319b8['attributes'][_0x7fd8('0x37')]?_0x4319b8[_0x7fd8('0x34')]:_0x573ed0[_0x7fd8('0x2f')];if(!_0x2bd721['query'][_0x7fd8('0x38')]('nolimit')){_0x4319b8['limit']=qs[_0x7fd8('0x1f')](_0x2bd721[_0x7fd8('0x31')][_0x7fd8('0x1f')]);_0x4319b8[_0x7fd8('0x1c')]=qs[_0x7fd8('0x1c')](_0x2bd721[_0x7fd8('0x31')][_0x7fd8('0x1c')]);}_0x4319b8[_0x7fd8('0x39')]=qs['sort'](_0x2bd721[_0x7fd8('0x31')]['sort']);_0x4319b8['where']=qs[_0x7fd8('0x33')](_['pick'](_0x2bd721['query'],_0x573ed0['filters']),_0x8f9a8e);if(_0x2bd721[_0x7fd8('0x31')][_0x7fd8('0x3a')]){_0x4319b8['where']=_[_0x7fd8('0x3b')](_0x4319b8[_0x7fd8('0x3c')],{'$or':_[_0x7fd8('0x30')](_0x8f9a8e,function(_0x5d8d3d){if(_0x5d8d3d['type']!=='VIRTUAL'){var _0x1cc1d5={};_0x1cc1d5[_0x5d8d3d[_0x7fd8('0x2a')]]={'$like':'%'+_0x2bd721[_0x7fd8('0x31')][_0x7fd8('0x3a')]+'%'};return _0x1cc1d5;}})});}_0x4319b8=_[_0x7fd8('0x3b')]({},_0x4319b8,_0x2bd721[_0x7fd8('0x3d')]);var _0x2b5abb={'where':_0x4319b8['where']};return db['DeskField']['count'](_0x2b5abb)[_0x7fd8('0x26')](function(_0x24a0f8){_0x4fc63a[_0x7fd8('0x1e')]=_0x24a0f8;if(_0x2bd721['query'][_0x7fd8('0x3e')]){_0x4319b8[_0x7fd8('0x3f')]=[{'all':!![]}];}return db[_0x7fd8('0x2c')][_0x7fd8('0x40')](_0x4319b8);})['then'](function(_0x2f480c){_0x4fc63a[_0x7fd8('0x41')]=_0x2f480c;return _0x4fc63a;})['then'](respondWithFilteredResult(_0x3919b1,_0x4319b8))[_0x7fd8('0x42')](handleError(_0x3919b1,null));};exports['show']=function(_0x92b45f,_0x2026aa){var _0x393174={'raw':!![],'where':{'id':_0x92b45f['params']['id']}},_0xffd29a={};_0xffd29a[_0x7fd8('0x2f')]=_[_0x7fd8('0x32')](db[_0x7fd8('0x2c')][_0x7fd8('0x2d')]);_0xffd29a[_0x7fd8('0x31')]=_[_0x7fd8('0x32')](_0x92b45f['query']);_0xffd29a['filters']=_['intersection'](_0xffd29a[_0x7fd8('0x2f')],_0xffd29a[_0x7fd8('0x31')]);_0x393174['attributes']=_['intersection'](_0xffd29a[_0x7fd8('0x2f')],qs[_0x7fd8('0x36')](_0x92b45f['query'][_0x7fd8('0x36')]));_0x393174[_0x7fd8('0x34')]=_0x393174[_0x7fd8('0x34')]['length']?_0x393174[_0x7fd8('0x34')]:_0xffd29a[_0x7fd8('0x2f')];if(_0x92b45f['query'][_0x7fd8('0x3e')]){_0x393174['include']=[{'all':!![]}];}_0x393174=_[_0x7fd8('0x3b')]({},_0x393174,_0x92b45f[_0x7fd8('0x3d')]);return db[_0x7fd8('0x2c')][_0x7fd8('0x43')](_0x393174)[_0x7fd8('0x26')](handleEntityNotFound(_0x2026aa,null))[_0x7fd8('0x26')](respondWithResult(_0x2026aa,null))[_0x7fd8('0x42')](handleError(_0x2026aa,null));};exports[_0x7fd8('0x44')]=function(_0x4c2784,_0x1666e7){return db['DeskField'][_0x7fd8('0x44')](_0x4c2784[_0x7fd8('0x45')],{})['then'](respondWithResult(_0x1666e7,0xc9))[_0x7fd8('0x42')](handleError(_0x1666e7,null));};exports[_0x7fd8('0x25')]=function(_0x5cbc91,_0x5e3a45){if(_0x5cbc91['body']['id']){delete _0x5cbc91[_0x7fd8('0x45')]['id'];}return db['DeskField'][_0x7fd8('0x43')]({'where':{'id':_0x5cbc91[_0x7fd8('0x46')]['id']}})[_0x7fd8('0x26')](handleEntityNotFound(_0x5e3a45,null))[_0x7fd8('0x26')](saveUpdates(_0x5cbc91[_0x7fd8('0x45')],null))['then'](respondWithResult(_0x5e3a45,null))['catch'](handleError(_0x5e3a45,null));};exports[_0x7fd8('0x27')]=function(_0x46c230,_0x6924a2){return db[_0x7fd8('0x2c')]['find']({'where':{'id':_0x46c230[_0x7fd8('0x46')]['id']}})['then'](handleEntityNotFound(_0x6924a2,null))[_0x7fd8('0x26')](removeEntity(_0x6924a2,null))[_0x7fd8('0x42')](handleError(_0x6924a2,null));};
\ No newline at end of file
index c41866f..17e2f78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ec=['desk_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','DeskField','int_desk_fields'];(function(_0x1e77f0,_0x3ea8a7){var _0x5f5449=function(_0x978725){while(--_0x978725){_0x1e77f0['push'](_0x1e77f0['shift']());}};_0x5f5449(++_0x3ea8a7);}(_0x98ec,0x64));var _0xc98e=function(_0x15cf16,_0xc11686){_0x15cf16=_0x15cf16-0x0;var _0x494985=_0x98ec[_0x15cf16];return _0x494985;};'use strict';var _=require(_0xc98e('0x0'));var util=require(_0xc98e('0x1'));var logger=require(_0xc98e('0x2'))(_0xc98e('0x3'));var moment=require(_0xc98e('0x4'));var BPromise=require('bluebird');var rp=require(_0xc98e('0x5'));var fs=require('fs');var path=require(_0xc98e('0x6'));var rimraf=require(_0xc98e('0x7'));var config=require(_0xc98e('0x8'));var attributes=require(_0xc98e('0x9'));module['exports']=function(_0x5e7b6b,_0x2c88a8){return _0x5e7b6b['define'](_0xc98e('0xa'),attributes,{'tableName':_0xc98e('0xb'),'paranoid':![],'indexes':[{'name':_0xc98e('0xc'),'fields':['idField',_0xc98e('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x035b=['util','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','DeskField','desk_unique_index','idField','FieldId','lodash'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x035b,0xa7));var _0xb035=function(_0x13d1cb,_0x10b45f){_0x13d1cb=_0x13d1cb-0x0;var _0x5daebc=_0x035b[_0x13d1cb];return _0x5daebc;};'use strict';var _=require(_0xb035('0x0'));var util=require(_0xb035('0x1'));var logger=require('../../config/logger')(_0xb035('0x2'));var moment=require(_0xb035('0x3'));var BPromise=require('bluebird');var rp=require(_0xb035('0x4'));var fs=require('fs');var path=require(_0xb035('0x5'));var rimraf=require(_0xb035('0x6'));var config=require(_0xb035('0x7'));var attributes=require('./intDeskField.attributes');module[_0xb035('0x8')]=function(_0xee65c2,_0x1e2093){return _0xee65c2[_0xb035('0x9')](_0xb035('0xa'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0xb035('0xb'),'fields':[_0xb035('0xc'),_0xb035('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0b066df..ffa0adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528c=['DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x528c,0x1eb));var _0xc528=function(_0x365e6c,_0x4929f2){_0x365e6c=_0x365e6c-0x0;var _0x4c6b98=_0x528c[_0x365e6c];return _0x4c6b98;};'use strict';var _=require(_0xc528('0x0'));var util=require(_0xc528('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc528('0x2'));var fs=require('fs');var Redis=require(_0xc528('0x3'));var db=require(_0xc528('0x4'))['db'];var utils=require(_0xc528('0x5'));var logger=require(_0xc528('0x6'))(_0xc528('0x7'));var config=require('../../config/environment');var jayson=require(_0xc528('0x8'));var client=jayson[_0xc528('0x9')][_0xc528('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x18651d,_0x4a9bdc,_0x4ac851){return new BPromise(function(_0x1f1aae,_0x579be8){return client['request'](_0x18651d,_0x4ac851)[_0xc528('0xb')](function(_0x996614){logger[_0xc528('0xc')](_0xc528('0xd'),_0x4a9bdc,_0xc528('0xe'));logger[_0xc528('0xf')](_0xc528('0x10'),_0x4a9bdc,_0xc528('0xe'),JSON['stringify'](_0x996614));if(_0x996614[_0xc528('0x11')]){if(_0x996614[_0xc528('0x11')][_0xc528('0x12')]===0x1f4){logger[_0xc528('0x11')]('DeskField,\x20%s,\x20%s',_0x4a9bdc,_0x996614['error']['message']);return _0x579be8(_0x996614[_0xc528('0x11')][_0xc528('0x13')]);}logger[_0xc528('0x11')](_0xc528('0xd'),_0x4a9bdc,_0x996614[_0xc528('0x11')][_0xc528('0x13')]);return _0x1f1aae(_0x996614[_0xc528('0x11')][_0xc528('0x13')]);}else{logger['info'](_0xc528('0xd'),_0x4a9bdc,_0xc528('0xe'));_0x1f1aae(_0x996614[_0xc528('0x14')][_0xc528('0x13')]);}})['catch'](function(_0x5195b5){logger[_0xc528('0x11')](_0xc528('0xd'),_0x4a9bdc,_0x5195b5);_0x579be8(_0x5195b5);});});}
\ No newline at end of file
+var _0x48d5=['then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x43860b,_0x80d988){var _0x3e1008=function(_0x5cdad7){while(--_0x5cdad7){_0x43860b['push'](_0x43860b['shift']());}};_0x3e1008(++_0x80d988);}(_0x48d5,0xfb));var _0x548d=function(_0x5dc8c3,_0x22eee9){_0x5dc8c3=_0x5dc8c3-0x0;var _0x456a93=_0x48d5[_0x5dc8c3];return _0x456a93;};'use strict';var _=require(_0x548d('0x0'));var util=require(_0x548d('0x1'));var moment=require(_0x548d('0x2'));var BPromise=require(_0x548d('0x3'));var rs=require(_0x548d('0x4'));var fs=require('fs');var Redis=require(_0x548d('0x5'));var db=require(_0x548d('0x6'))['db'];var utils=require(_0x548d('0x7'));var logger=require(_0x548d('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x548d('0x9'));var client=jayson[_0x548d('0xa')][_0x548d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe7edd1,_0x2d04ed,_0x932307){return new BPromise(function(_0x151aa8,_0x229b49){return client[_0x548d('0xc')](_0xe7edd1,_0x932307)[_0x548d('0xd')](function(_0x5ca037){logger[_0x548d('0xe')](_0x548d('0xf'),_0x2d04ed,_0x548d('0x10'));logger[_0x548d('0x11')](_0x548d('0x12'),_0x2d04ed,_0x548d('0x10'),JSON[_0x548d('0x13')](_0x5ca037));if(_0x5ca037[_0x548d('0x14')]){if(_0x5ca037['error'][_0x548d('0x15')]===0x1f4){logger['error'](_0x548d('0xf'),_0x2d04ed,_0x5ca037[_0x548d('0x14')]['message']);return _0x229b49(_0x5ca037[_0x548d('0x14')][_0x548d('0x16')]);}logger[_0x548d('0x14')]('DeskField,\x20%s,\x20%s',_0x2d04ed,_0x5ca037[_0x548d('0x14')][_0x548d('0x16')]);return _0x151aa8(_0x5ca037[_0x548d('0x14')][_0x548d('0x16')]);}else{logger[_0x548d('0xe')](_0x548d('0xf'),_0x2d04ed,_0x548d('0x10'));_0x151aa8(_0x5ca037['result']['message']);}})[_0x548d('0x17')](function(_0x581b76){logger[_0x548d('0x14')](_0x548d('0xf'),_0x2d04ed,_0x581b76);_0x229b49(_0x581b76);});});}
\ No newline at end of file
index d67c2ad..0364122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1860=['create','addConfiguration','put','update','delete','destroy','exports','util','path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post'];(function(_0x4fa489,_0x4cba6b){var _0x41d2ce=function(_0x364060){while(--_0x364060){_0x4fa489['push'](_0x4fa489['shift']());}};_0x41d2ce(++_0x4cba6b);}(_0x1860,0x1a5));var _0x0186=function(_0x5e19a5,_0x3b735f){_0x5e19a5=_0x5e19a5-0x0;var _0x29cb2a=_0x1860[_0x5e19a5];return _0x29cb2a;};'use strict';var multer=require('multer');var util=require(_0x0186('0x0'));var path=require(_0x0186('0x1'));var timeout=require('connect-timeout');var express=require(_0x0186('0x2'));var router=express[_0x0186('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0186('0x4'));var config=require(_0x0186('0x5'));var controller=require('./intDynamics365Account.controller');router[_0x0186('0x6')]('/',auth[_0x0186('0x7')](),controller[_0x0186('0x8')]);router[_0x0186('0x6')](_0x0186('0x9'),auth[_0x0186('0x7')](),controller[_0x0186('0xa')]);router[_0x0186('0x6')](_0x0186('0xb'),auth[_0x0186('0x7')](),controller[_0x0186('0xc')]);router['get'](_0x0186('0xd'),auth[_0x0186('0x7')](),controller[_0x0186('0xe')]);router[_0x0186('0xf')]('/',auth['isAuthenticated'](),controller[_0x0186('0x10')]);router['post'](_0x0186('0xb'),auth[_0x0186('0x7')](),controller[_0x0186('0x11')]);router[_0x0186('0x12')](_0x0186('0x9'),auth[_0x0186('0x7')](),controller[_0x0186('0x13')]);router[_0x0186('0x14')](_0x0186('0x9'),auth[_0x0186('0x7')](),controller[_0x0186('0x15')]);module[_0x0186('0x16')]=router;
\ No newline at end of file
+var _0xd106=['./intDynamics365Account.controller','isAuthenticated','index','/:id','show','get','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0xcbce9b,_0x527316){var _0x1c4cf3=function(_0x5f0eab){while(--_0x5f0eab){_0xcbce9b['push'](_0xcbce9b['shift']());}};_0x1c4cf3(++_0x527316);}(_0xd106,0x1d2));var _0x6d10=function(_0x5705cb,_0x4c86d6){_0x5705cb=_0x5705cb-0x0;var _0x54b395=_0xd106[_0x5705cb];return _0x54b395;};'use strict';var multer=require(_0x6d10('0x0'));var util=require(_0x6d10('0x1'));var path=require(_0x6d10('0x2'));var timeout=require(_0x6d10('0x3'));var express=require(_0x6d10('0x4'));var router=express[_0x6d10('0x5')]();var fs_extra=require(_0x6d10('0x6'));var auth=require(_0x6d10('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6d10('0x8'));var controller=require(_0x6d10('0x9'));router['get']('/',auth[_0x6d10('0xa')](),controller[_0x6d10('0xb')]);router['get'](_0x6d10('0xc'),auth[_0x6d10('0xa')](),controller[_0x6d10('0xd')]);router[_0x6d10('0xe')](_0x6d10('0xf'),auth[_0x6d10('0xa')](),controller[_0x6d10('0x10')]);router['get'](_0x6d10('0x11'),auth[_0x6d10('0xa')](),controller[_0x6d10('0x12')]);router[_0x6d10('0x13')]('/',auth[_0x6d10('0xa')](),controller[_0x6d10('0x14')]);router['post'](_0x6d10('0xf'),auth[_0x6d10('0xa')](),controller[_0x6d10('0x15')]);router['put']('/:id',auth[_0x6d10('0xa')](),controller[_0x6d10('0x16')]);router[_0x6d10('0x17')](_0x6d10('0xc'),auth[_0x6d10('0xa')](),controller['destroy']);module[_0x6d10('0x18')]=router;
\ No newline at end of file
index a17f4c1..069f41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['STRING','sequelize','exports'];(function(_0xe7a436,_0x341e28){var _0x451843=function(_0x287366){while(--_0x287366){_0xe7a436['push'](_0xe7a436['shift']());}};_0x451843(++_0x341e28);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x5cfa78,_0x3e7aa7){_0x5cfa78=_0x5cfa78-0x0;var _0x20aa55=_0xb4c7[_0x5cfa78];return _0x20aa55;};'use strict';var Sequelize=require(_0x7b4c('0x0'));module[_0x7b4c('0x1')]={'name':{'type':Sequelize[_0x7b4c('0x2')]},'username':{'type':Sequelize[_0x7b4c('0x2')]},'password':{'type':Sequelize[_0x7b4c('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x7b4c('0x2')]},'clientId':{'type':Sequelize[_0x7b4c('0x2')]},'clientSecret':{'type':Sequelize[_0x7b4c('0x2')]},'serverUrl':{'type':Sequelize[_0x7b4c('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7b4c('0x2')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xd7ce=['exports','STRING','BOOLEAN','sequelize'];(function(_0x57d817,_0xb0231c){var _0x53959c=function(_0x2bc2e7){while(--_0x2bc2e7){_0x57d817['push'](_0x57d817['shift']());}};_0x53959c(++_0xb0231c);}(_0xd7ce,0x16b));var _0xed7c=function(_0xb83ec2,_0x18e73b){_0xb83ec2=_0xb83ec2-0x0;var _0x4d2fbf=_0xd7ce[_0xb83ec2];return _0x4d2fbf;};'use strict';var Sequelize=require(_0xed7c('0x0'));module[_0xed7c('0x1')]={'name':{'type':Sequelize[_0xed7c('0x2')]},'username':{'type':Sequelize[_0xed7c('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xed7c('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xed7c('0x2')]},'modernAuthentication':{'type':Sequelize[_0xed7c('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index efdad3b..0e6d473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf33=['contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdon','customeridtype','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','tenantId','clientId','clientSecret','CloudProvider','data5','data7','modernAuthentication','remoteUri','POST','/oauth2/token','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','isNil','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Bearer\x20','OptionSet','Options','UserLocalizedLabel','Label','Value','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','getConfigurations','findOne','Subjects','getSubjects','channel','Dynamics365Configuration','Dynamics365Field','Descriptions','slice','substring','%s/api/data/v9.0/','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','billedserviceunits','contactidname','contactidyominame'];(function(_0x514816,_0x57c091){var _0x5c3a43=function(_0xd4a413){while(--_0xd4a413){_0x514816['push'](_0x514816['shift']());}};_0x5c3a43(++_0x57c091);}(_0xaf33,0x12c));var _0x3af3=function(_0x18c08a,_0x46e340){_0x18c08a=_0x18c08a-0x0;var _0x388429=_0xaf33[_0x18c08a];return _0x388429;};'use strict';var rp=require(_0x3af3('0x0'));var util=require(_0x3af3('0x1'));var _=require(_0x3af3('0x2'));var qs=require(_0x3af3('0x3'));var logger=require('../../config/logger')(_0x3af3('0x4'));var db=require(_0x3af3('0x5'))['db'];var integrations=require(_0x3af3('0x6'));function respondWithResult(_0x2ef234,_0x1158d3){_0x1158d3=_0x1158d3||0xc8;return function(_0x285f25){if(_0x285f25){return _0x2ef234[_0x3af3('0x7')](_0x1158d3)[_0x3af3('0x8')](_0x285f25);}};}function respondWithFilteredResult(_0x23c8a8,_0x403bf7){return function(_0x51f5a9){if(_0x51f5a9){var _0x3533c4=typeof _0x403bf7[_0x3af3('0x9')]==='undefined'&&typeof _0x403bf7[_0x3af3('0xa')]==='undefined';var _0x2b0ff1=_0x51f5a9['count'];var _0x41198d=_0x3533c4?0x0:_0x403bf7[_0x3af3('0x9')];var _0x18f0cc=_0x3533c4?_0x51f5a9[_0x3af3('0xb')]:_0x403bf7['offset']+_0x403bf7['limit'];var _0x447010;if(_0x18f0cc>=_0x2b0ff1){_0x18f0cc=_0x2b0ff1;_0x447010=0xc8;}else{_0x447010=0xce;}_0x23c8a8['status'](_0x447010);return _0x23c8a8[_0x3af3('0xc')](_0x3af3('0xd'),_0x41198d+'-'+_0x18f0cc+'/'+_0x2b0ff1)[_0x3af3('0x8')](_0x51f5a9);}return null;};}function saveUpdates(_0x2cb48e){return function(_0x5d95a6){if(_0x5d95a6){return _0x5d95a6[_0x3af3('0xe')](_0x2cb48e)[_0x3af3('0xf')](function(_0x57f3fb){return _0x57f3fb;});}return null;};}function removeEntity(_0x2f9849){return function(_0x3f499c){if(_0x3f499c){return _0x3f499c[_0x3af3('0x10')]()['then'](function(){_0x2f9849['status'](0xcc)[_0x3af3('0x11')]();});}};}function handleEntityNotFound(_0x5e3204){return function(_0x2cdc0e){if(!_0x2cdc0e){_0x5e3204[_0x3af3('0x12')](0x194);}return _0x2cdc0e;};}function handleError(_0x6d855b,_0x401fef){_0x401fef=_0x401fef||0x1f4;return function(_0x1a5786){logger[_0x3af3('0x13')](_0x1a5786['stack']);if(_0x1a5786[_0x3af3('0x14')]){delete _0x1a5786[_0x3af3('0x14')];}_0x6d855b[_0x3af3('0x7')](_0x401fef)[_0x3af3('0x15')](_0x1a5786);};}exports[_0x3af3('0x16')]=function(_0x31f596,_0xae7a78){var _0x48ebf1={},_0x348f58={},_0x30dced={'count':0x0,'rows':[]};var _0x29eeec=_[_0x3af3('0x17')](db[_0x3af3('0x18')][_0x3af3('0x19')],function(_0x271080){return{'name':_0x271080[_0x3af3('0x1a')],'type':_0x271080[_0x3af3('0x1b')][_0x3af3('0x1c')]};});_0x348f58['model']=_[_0x3af3('0x17')](_0x29eeec,_0x3af3('0x14'));_0x348f58['query']=_[_0x3af3('0x1d')](_0x31f596[_0x3af3('0x1e')]);_0x348f58[_0x3af3('0x1f')]=_[_0x3af3('0x20')](_0x348f58[_0x3af3('0x21')],_0x348f58['query']);_0x48ebf1[_0x3af3('0x22')]=_['intersection'](_0x348f58[_0x3af3('0x21')],qs[_0x3af3('0x23')](_0x31f596[_0x3af3('0x1e')][_0x3af3('0x23')]));_0x48ebf1[_0x3af3('0x22')]=_0x48ebf1[_0x3af3('0x22')][_0x3af3('0x24')]?_0x48ebf1[_0x3af3('0x22')]:_0x348f58['model'];if(!_0x31f596[_0x3af3('0x1e')][_0x3af3('0x25')](_0x3af3('0x26'))){_0x48ebf1[_0x3af3('0xa')]=qs['limit'](_0x31f596[_0x3af3('0x1e')]['limit']);_0x48ebf1[_0x3af3('0x9')]=qs[_0x3af3('0x9')](_0x31f596[_0x3af3('0x1e')]['offset']);}_0x48ebf1[_0x3af3('0x27')]=qs[_0x3af3('0x28')](_0x31f596['query'][_0x3af3('0x28')]);_0x48ebf1['where']=qs['filters'](_[_0x3af3('0x29')](_0x31f596[_0x3af3('0x1e')],_0x348f58[_0x3af3('0x1f')]),_0x29eeec);if(_0x31f596['query'][_0x3af3('0x2a')]){_0x48ebf1['where']=_[_0x3af3('0x2b')](_0x48ebf1[_0x3af3('0x2c')],{'$or':_[_0x3af3('0x17')](_0x29eeec,function(_0xb76bdc){if(_0xb76bdc['type']!==_0x3af3('0x2d')){var _0x2ebc85={};_0x2ebc85[_0xb76bdc[_0x3af3('0x14')]]={'$like':'%'+_0x31f596[_0x3af3('0x1e')]['filter']+'%'};return _0x2ebc85;}})});}_0x48ebf1=_[_0x3af3('0x2b')]({},_0x48ebf1,_0x31f596['options']);var _0x58686e={'where':_0x48ebf1[_0x3af3('0x2c')]};return db[_0x3af3('0x18')][_0x3af3('0xb')](_0x58686e)['then'](function(_0x5bd8f0){_0x30dced[_0x3af3('0xb')]=_0x5bd8f0;if(_0x31f596['query'][_0x3af3('0x2e')]){_0x48ebf1['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x3af3('0x2f')](_0x48ebf1);})[_0x3af3('0xf')](function(_0x59b2d6){_0x30dced[_0x3af3('0x30')]=_0x59b2d6;return _0x30dced;})[_0x3af3('0xf')](respondWithFilteredResult(_0xae7a78,_0x48ebf1))[_0x3af3('0x31')](handleError(_0xae7a78,null));};exports[_0x3af3('0x32')]=function(_0x5bdc28,_0x2d6ed9){var _0x286269={'raw':![],'where':{'id':_0x5bdc28[_0x3af3('0x33')]['id']}},_0x5f5523={};_0x5f5523[_0x3af3('0x21')]=_[_0x3af3('0x1d')](db[_0x3af3('0x18')][_0x3af3('0x19')]);_0x5f5523[_0x3af3('0x1e')]=_[_0x3af3('0x1d')](_0x5bdc28[_0x3af3('0x1e')]);_0x5f5523[_0x3af3('0x1f')]=_['intersection'](_0x5f5523['model'],_0x5f5523[_0x3af3('0x1e')]);_0x286269['attributes']=_['intersection'](_0x5f5523[_0x3af3('0x21')],qs[_0x3af3('0x23')](_0x5bdc28[_0x3af3('0x1e')][_0x3af3('0x23')]));_0x286269[_0x3af3('0x22')]=_0x286269[_0x3af3('0x22')]['length']?_0x286269[_0x3af3('0x22')]:_0x5f5523[_0x3af3('0x21')];if(_0x5bdc28[_0x3af3('0x1e')][_0x3af3('0x2e')]){_0x286269[_0x3af3('0x34')]=[{'all':!![]}];}_0x286269=_[_0x3af3('0x2b')]({},_0x286269,_0x5bdc28[_0x3af3('0x35')]);return db['Dynamics365Account'][_0x3af3('0x36')](_0x286269)['then'](handleEntityNotFound(_0x2d6ed9,null))[_0x3af3('0xf')](respondWithResult(_0x2d6ed9,null))[_0x3af3('0x31')](handleError(_0x2d6ed9,null));};exports[_0x3af3('0x37')]=function(_0x3d6518,_0x504e91){return db[_0x3af3('0x18')][_0x3af3('0x37')](_0x3d6518['body'],{})[_0x3af3('0xf')](respondWithResult(_0x504e91,0xc9))[_0x3af3('0x31')](handleError(_0x504e91,null));};exports[_0x3af3('0xe')]=function(_0x5c9a4f,_0x155902){if(_0x5c9a4f[_0x3af3('0x38')]['id']){delete _0x5c9a4f[_0x3af3('0x38')]['id'];}return db[_0x3af3('0x18')][_0x3af3('0x36')]({'where':{'id':_0x5c9a4f[_0x3af3('0x33')]['id']}})['then'](handleEntityNotFound(_0x155902,null))['then'](saveUpdates(_0x5c9a4f['body'],null))[_0x3af3('0xf')](respondWithResult(_0x155902,null))[_0x3af3('0x31')](handleError(_0x155902,null));};exports[_0x3af3('0x10')]=function(_0x10d8ab,_0x39db3a){return db['Dynamics365Account'][_0x3af3('0x36')]({'where':{'id':_0x10d8ab[_0x3af3('0x33')]['id']}})['then'](handleEntityNotFound(_0x39db3a,null))[_0x3af3('0xf')](removeEntity(_0x39db3a,null))[_0x3af3('0x31')](handleError(_0x39db3a,null));};exports[_0x3af3('0x39')]=function(_0x1e31a9,_0x53eea2){var _0x114371={};var _0x435a11={};var _0x1a35b2;var _0x1c1bb;return db[_0x3af3('0x18')]['findOne']({'where':{'id':_0x1e31a9['params']['id']}})['then'](handleEntityNotFound(_0x53eea2,null))[_0x3af3('0xf')](function(_0xf4cdd9){if(_0xf4cdd9){_0x1a35b2=_0xf4cdd9;_0x435a11[_0x3af3('0x21')]=_[_0x3af3('0x1d')](db['Dynamics365Configuration'][_0x3af3('0x19')]);_0x435a11[_0x3af3('0x1e')]=_[_0x3af3('0x1d')](_0x1e31a9[_0x3af3('0x1e')]);_0x435a11['filters']=_[_0x3af3('0x20')](_0x435a11[_0x3af3('0x21')],_0x435a11[_0x3af3('0x1e')]);_0x114371[_0x3af3('0x22')]=_[_0x3af3('0x20')](_0x435a11[_0x3af3('0x21')],qs['fields'](_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0x23')]));_0x114371[_0x3af3('0x22')]=_0x114371[_0x3af3('0x22')]['length']?_0x114371[_0x3af3('0x22')]:_0x435a11[_0x3af3('0x21')];_0x114371[_0x3af3('0x27')]=qs['sort'](_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0x28')]);_0x114371[_0x3af3('0x2c')]=qs[_0x3af3('0x1f')](_[_0x3af3('0x29')](_0x1e31a9[_0x3af3('0x1e')],_0x435a11['filters']));if(_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0x2a')]){_0x114371[_0x3af3('0x2c')]=_[_0x3af3('0x2b')](_0x114371[_0x3af3('0x2c')],{'$or':_[_0x3af3('0x17')](_0x114371[_0x3af3('0x22')],function(_0x2d090e){var _0x4e2646={};_0x4e2646[_0x2d090e]={'$like':'%'+_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0x2a')]+'%'};return _0x4e2646;})});}_0x114371=_[_0x3af3('0x2b')]({},_0x114371,_0x1e31a9[_0x3af3('0x35')]);return _0x1a35b2[_0x3af3('0x39')](_0x114371);}})[_0x3af3('0xf')](function(_0x33e560){if(_0x33e560){_0x1c1bb=_0x33e560['length'];if(!_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0x25')]('nolimit')){_0x114371[_0x3af3('0xa')]=qs[_0x3af3('0xa')](_0x1e31a9[_0x3af3('0x1e')][_0x3af3('0xa')]);_0x114371[_0x3af3('0x9')]=qs['offset'](_0x1e31a9['query'][_0x3af3('0x9')]);}return _0x1a35b2[_0x3af3('0x39')](_0x114371);}})[_0x3af3('0xf')](function(_0x126165){if(_0x126165){return _0x126165?{'count':_0x1c1bb,'rows':_0x126165}:null;}})[_0x3af3('0xf')](respondWithResult(_0x53eea2,null))[_0x3af3('0x31')](handleError(_0x53eea2,null));};exports['addConfiguration']=function(_0x45fa1d,_0x4f6785){if(_0x45fa1d[_0x3af3('0x38')]['id']){delete _0x45fa1d[_0x3af3('0x38')]['id'];}return db[_0x3af3('0x18')][_0x3af3('0x3a')]({'where':{'id':_0x45fa1d[_0x3af3('0x33')]['id']}})['then'](handleEntityNotFound(_0x4f6785,null))['then'](function(_0x12c659){if(_0x12c659){_0x45fa1d[_0x3af3('0x38')]['AccountId']=_0x12c659['id'];_0x45fa1d['body'][_0x3af3('0x3b')]=integrations[_0x3af3('0x3c')](_0x45fa1d[_0x3af3('0x38')][_0x3af3('0x3d')],_0x45fa1d['body'][_0x3af3('0x1b')]);_0x45fa1d[_0x3af3('0x38')]['Descriptions']=integrations['getDescriptions'](_0x45fa1d[_0x3af3('0x38')][_0x3af3('0x3d')],_0x45fa1d[_0x3af3('0x38')][_0x3af3('0x1b')]);return db[_0x3af3('0x3e')][_0x3af3('0x37')](_0x45fa1d[_0x3af3('0x38')],{'include':[{'model':db[_0x3af3('0x3f')],'as':'Subjects'},{'model':db[_0x3af3('0x3f')],'as':_0x3af3('0x40')}]});}return null;})['then'](respondWithResult(_0x4f6785,null))[_0x3af3('0x31')](handleError(_0x4f6785,null));};function sanitizeRemoteUri(_0x2b5075){var _0x30f198=_0x2b5075[_0x3af3('0x41')](-0x1);if(_0x30f198==='/')return _0x2b5075[_0x3af3('0x42')](0x0,_0x2b5075['lastIndexOf'](_0x30f198));return _0x2b5075;}function getWebApiUrl(_0x1227a2){return util['format'](_0x3af3('0x43'),_0x1227a2);}exports['getFields']=function(_0x5a5118,_0x4b620b){var _0x15105a=_0x5a5118[_0x3af3('0x1e')][_0x3af3('0x44')];var _0x31a7f7=_0x15105a===_0x3af3('0x45')?_0x3af3('0x46'):_0x3af3('0x47');var _0x382cc2='';var _0x281fbb='';var _0x4a4d58='';var _0x583ec5='';var _0x11fe9a='';var _0x5b2c8b='';var _0x4aa6c1='';var _0xfb1377='';var _0x3d45a7=[_0x3af3('0x48'),_0x3af3('0x49'),_0x3af3('0x4a'),_0x3af3('0x4b'),_0x3af3('0x4c'),_0x3af3('0x4d'),_0x3af3('0x4e'),_0x3af3('0x4f'),_0x3af3('0x50'),'phonecall_activity_parties'];var _0x472dee=['accountidname','accountidyominame','actualserviceunits',_0x3af3('0x51'),_0x3af3('0x52'),_0x3af3('0x53'),_0x3af3('0x54'),_0x3af3('0x55'),_0x3af3('0x56'),'createdbyexternalpartyyominame',_0x3af3('0x57'),_0x3af3('0x58'),_0x3af3('0x59'),'createdonbehalfbyname','createdonbehalfbyyominame','customeridname',_0x3af3('0x5a'),_0x3af3('0x5b'),'emailaddress',_0x3af3('0x5c'),_0x3af3('0x5d'),_0x3af3('0x5e'),_0x3af3('0x5f'),_0x3af3('0x60'),_0x3af3('0x61'),_0x3af3('0x62'),'importsequencenumber',_0x3af3('0x63'),_0x3af3('0x64'),'lastonholdtime',_0x3af3('0x65'),_0x3af3('0x66'),_0x3af3('0x67'),_0x3af3('0x68'),_0x3af3('0x69'),_0x3af3('0x6a'),'modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0x3af3('0x6b'),_0x3af3('0x6c'),_0x3af3('0x6d'),'onholdtime','overriddencreatedon','owneridname',_0x3af3('0x6e'),_0x3af3('0x6f'),'parentcaseidname',_0x3af3('0x70'),_0x3af3('0x71'),_0x3af3('0x72'),_0x3af3('0x73'),_0x3af3('0x74'),_0x3af3('0x75'),_0x3af3('0x76'),'responseby',_0x3af3('0x77'),_0x3af3('0x78'),_0x3af3('0x79'),_0x3af3('0x7a'),_0x3af3('0x7b'),_0x3af3('0x7c'),_0x3af3('0x7d'),_0x3af3('0x7e'),_0x3af3('0x7f'),_0x3af3('0x80'),_0x3af3('0x81'),'transactioncurrencyidname',_0x3af3('0x82'),_0x3af3('0x83'),_0x3af3('0x84')];var _0x3c657b=_0x3d45a7[_0x3af3('0x85')](_0x472dee);return db[_0x3af3('0x18')][_0x3af3('0x3a')]({'where':{'id':_0x5a5118[_0x3af3('0x33')]['id']},'attributes':['id','username','password','remoteUri',_0x3af3('0x86'),_0x3af3('0x87'),_0x3af3('0x88'),'modernAuthentication'],'include':[{'model':db[_0x3af3('0x89')],'as':_0x3af3('0x89'),'attributes':['id',_0x3af3('0x8a'),_0x3af3('0x8b')]}]})[_0x3af3('0xf')](handleEntityNotFound(_0x4b620b,null))[_0x3af3('0xf')](function(_0x5297ce){if(_0x5297ce){if(_0x5297ce[_0x3af3('0x8c')]){_0x5297ce['access_token']=_0x5297ce[_0x3af3('0x89')]['data5'];_0xfb1377=sanitizeRemoteUri(_0x5297ce[_0x3af3('0x89')][_0x3af3('0x8b')]);_0x4aa6c1=getWebApiUrl(_0xfb1377);return _0x5297ce;}_0xfb1377=sanitizeRemoteUri(_0x5297ce[_0x3af3('0x8d')]);_0x4aa6c1=getWebApiUrl(_0xfb1377);var _0x3db372={'method':_0x3af3('0x8e'),'uri':'https://login.microsoftonline.com/'+_0x5297ce[_0x3af3('0x86')]+_0x3af3('0x8f'),'form':{'client_id':_0x5297ce[_0x3af3('0x87')],'resource':_0xfb1377,'username':_0x5297ce['username'],'password':_0x5297ce['password'],'grant_type':_0x3af3('0x90'),'client_secret':_0x5297ce[_0x3af3('0x88')]},'json':!![]};return rp(_0x3db372);}})[_0x3af3('0xf')](function(_0x3d4cd5){_0x5b2c8b=_0x3d4cd5[_0x3af3('0x91')];var _0x5bb679={'method':_0x3af3('0x92'),'uri':encodeURI(_0x4aa6c1+_0x3af3('0x93')+_0x31a7f7+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x5b2c8b,'If-None-Match':null,'OData-Version':_0x3af3('0x94')},'json':!![]};return rp(_0x5bb679);})[_0x3af3('0xf')](function(_0x119df8){var _0x5a7400=_0x119df8[_0x3af3('0x95')][0x0];var _0xfbd5fd=_0x5a7400[_0x3af3('0x96')];var _0x5959ec={'method':'GET','uri':_0x4aa6c1+_0x3af3('0x97')+_0xfbd5fd+_0x3af3('0x98'),'headers':{'Authorization':'Bearer\x20'+_0x5b2c8b,'If-None-Match':null,'OData-Version':_0x3af3('0x94')},'json':!![]};return rp(_0x5959ec);})[_0x3af3('0xf')](function(_0x53dfb0){_0x382cc2=_0x53dfb0;_0x281fbb=_0x382cc2[_0x3af3('0x99')];_0x281fbb=_[_0x3af3('0x9a')](_0x281fbb,function(_0x3eede2){return!_0x3c657b[_0x3af3('0x9b')](_0x3eede2['LogicalName']);});var _0x1fd87f=[];var _0x198231=[];_0x281fbb[_0x3af3('0x9c')](function(_0x1ab11b){if(_0x1ab11b[_0x3af3('0x9d')]){var _0x2e6ef1=_0x1ab11b['@odata.type'][_0x3af3('0x42')](_0x1ab11b[_0x3af3('0x9d')][_0x3af3('0x9e')]('.')+0x1);if(_0x2e6ef1===_0x3af3('0x9f')){_0x1fd87f[_0x3af3('0xa0')](getSelectList(_0x4aa6c1,_0x15105a,_0x198231,_0x382cc2[_0x3af3('0x96')],_0x1ab11b[_0x3af3('0x96')],_0x5b2c8b));}}});return Promise[_0x3af3('0xa1')](_0x1fd87f);})[_0x3af3('0xf')](function(_0x19f4d1){_0x4a4d58=_0x19f4d1[0x0];var _0x4f43ca=[];var _0xc30496=[];_0x281fbb['forEach'](function(_0x14ddf6){if(!_[_0x3af3('0xa2')](_0x14ddf6['@odata.type'])){var _0xedd574=_0x14ddf6[_0x3af3('0x9d')][_0x3af3('0x42')](_0x14ddf6[_0x3af3('0x9d')][_0x3af3('0x9e')]('.')+0x1);if(_0xedd574==='BooleanAttributeMetadata'){_0x4f43ca[_0x3af3('0xa0')](getBooleanList(_0x4aa6c1,_0x15105a,_0xc30496,_0x382cc2[_0x3af3('0x96')],_0x14ddf6['MetadataId'],_0x5b2c8b));}}});return Promise[_0x3af3('0xa1')](_0x4f43ca);})['then'](function(_0x242c37){_0x583ec5=_0x242c37[0x0];var _0x3d1d5b=[];var _0x44a605=[];_0x281fbb[_0x3af3('0x9c')](function(_0x49eaec){if(_0x49eaec[_0x3af3('0x9d')]){var _0x43a5d9=_0x49eaec[_0x3af3('0x9d')][_0x3af3('0x42')](_0x49eaec[_0x3af3('0x9d')][_0x3af3('0x9e')]('.')+0x1);if(_0x43a5d9===_0x3af3('0xa3')||_0x43a5d9===_0x3af3('0xa4')||_0x43a5d9===_0x3af3('0xa5')||_0x43a5d9===_0x3af3('0xa6')||_0x43a5d9===_0x3af3('0xa7')||_0x43a5d9==='DateTimeAttributeMetadata'||_0x43a5d9===_0x3af3('0xa8')||_0x43a5d9===_0x3af3('0xa9')||_0x43a5d9===_0x3af3('0xaa')||_0x43a5d9===_0x3af3('0xab')){_0x3d1d5b[_0x3af3('0xa0')](getInputList(_0x4aa6c1,_0x15105a,_0x43a5d9,_0x44a605,_0x382cc2[_0x3af3('0x96')],_0x49eaec[_0x3af3('0x96')],_0x5b2c8b));}}});return Promise[_0x3af3('0xa1')](_0x3d1d5b);})[_0x3af3('0xf')](function(_0x51d799){_0x11fe9a=_0x51d799[0x0];var _0x213768=_0x4a4d58[_0x3af3('0x85')](_0x583ec5)[_0x3af3('0x85')](_0x11fe9a);var _0x3ba4ba={'count':_0x213768[_0x3af3('0x24')],'rows':_0x213768};return _0x3ba4ba;})[_0x3af3('0xf')](respondWithResult(_0x4b620b,null))[_0x3af3('0x31')](function(_0x40ea31){var _0x1ea6c9=_0x5a5118[_0x3af3('0x1e')][_0x3af3('0xac')]?0x1f4:_0x40ea31[_0x3af3('0xad')]||0x1f4;logger[_0x3af3('0x13')](_0x40ea31['stack']);delete _0x40ea31[_0x3af3('0x14')];if(_0x1ea6c9===0x191){_0x1ea6c9=0x190;}_0x4b620b[_0x3af3('0x7')](_0x1ea6c9)[_0x3af3('0x15')](_0x5a5118[_0x3af3('0x1e')]['test']?{'message':_0x3af3('0xae'),'statusCode':_0x40ea31[_0x3af3('0xad')]}:_0x40ea31);});};function getSelectList(_0x162cfb,_0x4368da,_0x3e0067,_0x1a5b70,_0x319327,_0x415a8a){var _0x5a66ad={'method':_0x3af3('0x92'),'uri':_0x162cfb+_0x3af3('0x97')+_0x1a5b70+_0x3af3('0xaf')+_0x319327+_0x3af3('0xb0')+_0x3af3('0xb1'),'headers':{'Authorization':_0x3af3('0xb2')+_0x415a8a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5a66ad)[_0x3af3('0xf')](function(_0x26c55b){var _0x1e59dd=[];var _0x18a8fd=_0x26c55b[_0x3af3('0xb3')][_0x3af3('0xb4')];_0x18a8fd['forEach'](function(_0x48806c){_0x1e59dd[_0x3af3('0xa0')]({'name':_0x48806c['Label'][_0x3af3('0xb5')][_0x3af3('0xb6')],'value':String(_0x48806c[_0x3af3('0xb7')])});});var _0x1d84bd={'id':_0x4368da+'_'+_0x26c55b[_0x3af3('0xb8')],'name':_0x26c55b[_0x3af3('0xb9')][_0x3af3('0xb5')][_0x3af3('0xb6')],'custom':![],'options':_0x1e59dd};_0x3e0067[_0x3af3('0xa0')](_0x1d84bd);return _0x3e0067;});}function getBooleanList(_0x30210b,_0x2eaedd,_0x34c33b,_0x275279,_0x2a22e8,_0x5c5f06){var _0x35390c={'method':_0x3af3('0x92'),'uri':_0x30210b+_0x3af3('0x97')+_0x275279+_0x3af3('0xaf')+_0x2a22e8+_0x3af3('0xba'),'headers':{'Authorization':_0x3af3('0xb2')+_0x5c5f06,'If-None-Match':null,'OData-Version':_0x3af3('0x94')},'json':!![]};return rp(_0x35390c)[_0x3af3('0xf')](function(_0x5c7c8a){var _0x5c41ab=[];_0x5c41ab[_0x3af3('0xa0')]({'name':_0x5c7c8a['OptionSet']['TrueOption'][_0x3af3('0xb6')][_0x3af3('0xb5')]['Label'],'value':_0x3af3('0xbb')},{'name':_0x5c7c8a[_0x3af3('0xb3')][_0x3af3('0xbc')][_0x3af3('0xb6')][_0x3af3('0xb5')][_0x3af3('0xb6')],'value':_0x3af3('0xbd')});var _0x1cfc6b={'id':_0x2eaedd+'_'+_0x5c7c8a['LogicalName'],'name':_0x5c7c8a['DisplayName'][_0x3af3('0xb5')][_0x3af3('0xb6')],'custom':![],'options':_0x5c41ab};_0x34c33b[_0x3af3('0xa0')](_0x1cfc6b);return _0x34c33b;});}function getInputList(_0x28b4da,_0x34d680,_0x4365f0,_0x4ff37a,_0x165b38,_0x5c018d,_0x43ce5f){var _0x1b1779={'method':_0x3af3('0x92'),'uri':_0x28b4da+'EntityDefinitions('+_0x165b38+_0x3af3('0xaf')+_0x5c018d+_0x3af3('0xbe')+_0x4365f0+_0x3af3('0xbf'),'headers':{'Authorization':_0x3af3('0xb2')+_0x43ce5f,'If-None-Match':null,'OData-Version':_0x3af3('0x94')},'json':!![]};return rp(_0x1b1779)[_0x3af3('0xf')](function(_0x259991){var _0x3b6a74={'id':_0x34d680+'_'+_0x259991[_0x3af3('0xb8')],'name':_0x259991[_0x3af3('0xb9')]['UserLocalizedLabel']?_0x259991[_0x3af3('0xb9')][_0x3af3('0xb5')]['Label']:_0x259991[_0x3af3('0xb8')],'custom':![],'options':[]};_0x4ff37a[_0x3af3('0xa0')](_0x3b6a74);return _0x4ff37a;});}
\ No newline at end of file
+var _0x1e8c=['StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','error',')/Attributes(','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','update','then','sendStatus','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','find','create','body','params','getConfigurations','findOne','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','slice','substring','format','%s/api/data/v9.0/','getFields','ticketType','incident','PhoneCall','title','customerid','ownerid','caseorigincode','subject','regardingobjectid','phonecall_activity_parties','accountidyominame','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','entitlementidname','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyyominame','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','primarycontactidname','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','utcconversiontimezonecode','versionnumber','concat','username','password','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','https://login.microsoftonline.com/','/oauth2/token','Bearer\x20','4.0','value','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','MetadataId','all','isNil','BooleanAttributeMetadata'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x1e8c,0xd3));var _0xc1e8=function(_0x2b217f,_0x2351e2){_0x2b217f=_0x2b217f-0x0;var _0x5ebea5=_0x1e8c[_0x2b217f];return _0x5ebea5;};'use strict';var rp=require('request-promise');var util=require(_0xc1e8('0x0'));var _=require(_0xc1e8('0x1'));var qs=require(_0xc1e8('0x2'));var logger=require(_0xc1e8('0x3'))(_0xc1e8('0x4'));var db=require(_0xc1e8('0x5'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0xe38ad6,_0x1c7941){_0x1c7941=_0x1c7941||0xc8;return function(_0x197e99){if(_0x197e99){return _0xe38ad6[_0xc1e8('0x6')](_0x1c7941)[_0xc1e8('0x7')](_0x197e99);}};}function respondWithFilteredResult(_0x18613e,_0x547868){return function(_0x457b9d){if(_0x457b9d){var _0x40e7cd=typeof _0x547868[_0xc1e8('0x8')]===_0xc1e8('0x9')&&typeof _0x547868[_0xc1e8('0xa')]===_0xc1e8('0x9');var _0xad4215=_0x457b9d[_0xc1e8('0xb')];var _0x24c6b0=_0x40e7cd?0x0:_0x547868['offset'];var _0x32728a=_0x40e7cd?_0x457b9d[_0xc1e8('0xb')]:_0x547868[_0xc1e8('0x8')]+_0x547868[_0xc1e8('0xa')];var _0x2c4d2d;if(_0x32728a>=_0xad4215){_0x32728a=_0xad4215;_0x2c4d2d=0xc8;}else{_0x2c4d2d=0xce;}_0x18613e[_0xc1e8('0x6')](_0x2c4d2d);return _0x18613e[_0xc1e8('0xc')](_0xc1e8('0xd'),_0x24c6b0+'-'+_0x32728a+'/'+_0xad4215)['json'](_0x457b9d);}return null;};}function saveUpdates(_0xa36773){return function(_0x241977){if(_0x241977){return _0x241977[_0xc1e8('0xe')](_0xa36773)[_0xc1e8('0xf')](function(_0xd69d32){return _0xd69d32;});}return null;};}function removeEntity(_0x3231b1){return function(_0x2611b2){if(_0x2611b2){return _0x2611b2['destroy']()[_0xc1e8('0xf')](function(){_0x3231b1[_0xc1e8('0x6')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fa959){return function(_0x2f4c17){if(!_0x2f4c17){_0x4fa959[_0xc1e8('0x10')](0x194);}return _0x2f4c17;};}function handleError(_0x41717a,_0x25a13d){_0x25a13d=_0x25a13d||0x1f4;return function(_0xe69604){logger['error'](_0xe69604[_0xc1e8('0x11')]);if(_0xe69604[_0xc1e8('0x12')]){delete _0xe69604[_0xc1e8('0x12')];}_0x41717a['status'](_0x25a13d)[_0xc1e8('0x13')](_0xe69604);};}exports[_0xc1e8('0x14')]=function(_0x3ee778,_0x44171b){var _0x5be572={},_0x4a1a85={},_0x2c2402={'count':0x0,'rows':[]};var _0x4eb948=_['map'](db[_0xc1e8('0x15')][_0xc1e8('0x16')],function(_0x1ca823){return{'name':_0x1ca823[_0xc1e8('0x17')],'type':_0x1ca823[_0xc1e8('0x18')][_0xc1e8('0x19')]};});_0x4a1a85[_0xc1e8('0x1a')]=_[_0xc1e8('0x1b')](_0x4eb948,_0xc1e8('0x12'));_0x4a1a85[_0xc1e8('0x1c')]=_[_0xc1e8('0x1d')](_0x3ee778[_0xc1e8('0x1c')]);_0x4a1a85[_0xc1e8('0x1e')]=_['intersection'](_0x4a1a85[_0xc1e8('0x1a')],_0x4a1a85[_0xc1e8('0x1c')]);_0x5be572[_0xc1e8('0x1f')]=_[_0xc1e8('0x20')](_0x4a1a85[_0xc1e8('0x1a')],qs[_0xc1e8('0x21')](_0x3ee778[_0xc1e8('0x1c')]['fields']));_0x5be572[_0xc1e8('0x1f')]=_0x5be572[_0xc1e8('0x1f')]['length']?_0x5be572['attributes']:_0x4a1a85['model'];if(!_0x3ee778[_0xc1e8('0x1c')][_0xc1e8('0x22')](_0xc1e8('0x23'))){_0x5be572['limit']=qs[_0xc1e8('0xa')](_0x3ee778[_0xc1e8('0x1c')][_0xc1e8('0xa')]);_0x5be572['offset']=qs['offset'](_0x3ee778[_0xc1e8('0x1c')]['offset']);}_0x5be572[_0xc1e8('0x24')]=qs[_0xc1e8('0x25')](_0x3ee778['query']['sort']);_0x5be572[_0xc1e8('0x26')]=qs[_0xc1e8('0x1e')](_['pick'](_0x3ee778['query'],_0x4a1a85[_0xc1e8('0x1e')]),_0x4eb948);if(_0x3ee778[_0xc1e8('0x1c')][_0xc1e8('0x27')]){_0x5be572[_0xc1e8('0x26')]=_[_0xc1e8('0x28')](_0x5be572[_0xc1e8('0x26')],{'$or':_[_0xc1e8('0x1b')](_0x4eb948,function(_0x212623){if(_0x212623[_0xc1e8('0x18')]!==_0xc1e8('0x29')){var _0x3c8220={};_0x3c8220[_0x212623[_0xc1e8('0x12')]]={'$like':'%'+_0x3ee778[_0xc1e8('0x1c')]['filter']+'%'};return _0x3c8220;}})});}_0x5be572=_[_0xc1e8('0x28')]({},_0x5be572,_0x3ee778[_0xc1e8('0x2a')]);var _0x5aa14e={'where':_0x5be572['where']};return db[_0xc1e8('0x15')]['count'](_0x5aa14e)[_0xc1e8('0xf')](function(_0x60e7dc){_0x2c2402[_0xc1e8('0xb')]=_0x60e7dc;if(_0x3ee778['query']['includeAll']){_0x5be572[_0xc1e8('0x2b')]=[{'all':!![]}];}return db['Dynamics365Account'][_0xc1e8('0x2c')](_0x5be572);})['then'](function(_0x5aef76){_0x2c2402[_0xc1e8('0x2d')]=_0x5aef76;return _0x2c2402;})[_0xc1e8('0xf')](respondWithFilteredResult(_0x44171b,_0x5be572))[_0xc1e8('0x2e')](handleError(_0x44171b,null));};exports[_0xc1e8('0x2f')]=function(_0x1cd96c,_0x4b86ff){var _0x5be106={'raw':![],'where':{'id':_0x1cd96c['params']['id']}},_0x30cc33={};_0x30cc33[_0xc1e8('0x1a')]=_[_0xc1e8('0x1d')](db[_0xc1e8('0x15')][_0xc1e8('0x16')]);_0x30cc33['query']=_['keys'](_0x1cd96c['query']);_0x30cc33[_0xc1e8('0x1e')]=_[_0xc1e8('0x20')](_0x30cc33[_0xc1e8('0x1a')],_0x30cc33[_0xc1e8('0x1c')]);_0x5be106[_0xc1e8('0x1f')]=_[_0xc1e8('0x20')](_0x30cc33['model'],qs['fields'](_0x1cd96c['query'][_0xc1e8('0x21')]));_0x5be106['attributes']=_0x5be106['attributes'][_0xc1e8('0x30')]?_0x5be106[_0xc1e8('0x1f')]:_0x30cc33[_0xc1e8('0x1a')];if(_0x1cd96c[_0xc1e8('0x1c')][_0xc1e8('0x31')]){_0x5be106['include']=[{'all':!![]}];}_0x5be106=_[_0xc1e8('0x28')]({},_0x5be106,_0x1cd96c['options']);return db[_0xc1e8('0x15')][_0xc1e8('0x32')](_0x5be106)[_0xc1e8('0xf')](handleEntityNotFound(_0x4b86ff,null))[_0xc1e8('0xf')](respondWithResult(_0x4b86ff,null))[_0xc1e8('0x2e')](handleError(_0x4b86ff,null));};exports[_0xc1e8('0x33')]=function(_0x291a5f,_0x33b9a4){return db[_0xc1e8('0x15')][_0xc1e8('0x33')](_0x291a5f['body'],{})[_0xc1e8('0xf')](respondWithResult(_0x33b9a4,0xc9))[_0xc1e8('0x2e')](handleError(_0x33b9a4,null));};exports[_0xc1e8('0xe')]=function(_0x3ae0d7,_0xb76541){if(_0x3ae0d7['body']['id']){delete _0x3ae0d7[_0xc1e8('0x34')]['id'];}return db[_0xc1e8('0x15')][_0xc1e8('0x32')]({'where':{'id':_0x3ae0d7[_0xc1e8('0x35')]['id']}})['then'](handleEntityNotFound(_0xb76541,null))[_0xc1e8('0xf')](saveUpdates(_0x3ae0d7[_0xc1e8('0x34')],null))[_0xc1e8('0xf')](respondWithResult(_0xb76541,null))[_0xc1e8('0x2e')](handleError(_0xb76541,null));};exports['destroy']=function(_0x230387,_0x28bf94){return db[_0xc1e8('0x15')]['find']({'where':{'id':_0x230387[_0xc1e8('0x35')]['id']}})[_0xc1e8('0xf')](handleEntityNotFound(_0x28bf94,null))[_0xc1e8('0xf')](removeEntity(_0x28bf94,null))['catch'](handleError(_0x28bf94,null));};exports[_0xc1e8('0x36')]=function(_0x366387,_0x494984){var _0x410a4c={};var _0x1d2426={};var _0x57fedb;var _0x2e0267;return db[_0xc1e8('0x15')][_0xc1e8('0x37')]({'where':{'id':_0x366387[_0xc1e8('0x35')]['id']}})[_0xc1e8('0xf')](handleEntityNotFound(_0x494984,null))[_0xc1e8('0xf')](function(_0x51213e){if(_0x51213e){_0x57fedb=_0x51213e;_0x1d2426['model']=_['keys'](db['Dynamics365Configuration'][_0xc1e8('0x16')]);_0x1d2426['query']=_[_0xc1e8('0x1d')](_0x366387[_0xc1e8('0x1c')]);_0x1d2426[_0xc1e8('0x1e')]=_['intersection'](_0x1d2426['model'],_0x1d2426[_0xc1e8('0x1c')]);_0x410a4c[_0xc1e8('0x1f')]=_[_0xc1e8('0x20')](_0x1d2426[_0xc1e8('0x1a')],qs[_0xc1e8('0x21')](_0x366387[_0xc1e8('0x1c')][_0xc1e8('0x21')]));_0x410a4c[_0xc1e8('0x1f')]=_0x410a4c['attributes']['length']?_0x410a4c[_0xc1e8('0x1f')]:_0x1d2426['model'];_0x410a4c[_0xc1e8('0x24')]=qs[_0xc1e8('0x25')](_0x366387[_0xc1e8('0x1c')]['sort']);_0x410a4c[_0xc1e8('0x26')]=qs[_0xc1e8('0x1e')](_[_0xc1e8('0x38')](_0x366387['query'],_0x1d2426['filters']));if(_0x366387[_0xc1e8('0x1c')][_0xc1e8('0x27')]){_0x410a4c[_0xc1e8('0x26')]=_[_0xc1e8('0x28')](_0x410a4c[_0xc1e8('0x26')],{'$or':_['map'](_0x410a4c[_0xc1e8('0x1f')],function(_0x464c33){var _0x34be2b={};_0x34be2b[_0x464c33]={'$like':'%'+_0x366387[_0xc1e8('0x1c')][_0xc1e8('0x27')]+'%'};return _0x34be2b;})});}_0x410a4c=_[_0xc1e8('0x28')]({},_0x410a4c,_0x366387[_0xc1e8('0x2a')]);return _0x57fedb[_0xc1e8('0x36')](_0x410a4c);}})[_0xc1e8('0xf')](function(_0x1cc176){if(_0x1cc176){_0x2e0267=_0x1cc176[_0xc1e8('0x30')];if(!_0x366387['query']['hasOwnProperty']('nolimit')){_0x410a4c[_0xc1e8('0xa')]=qs[_0xc1e8('0xa')](_0x366387[_0xc1e8('0x1c')]['limit']);_0x410a4c[_0xc1e8('0x8')]=qs['offset'](_0x366387[_0xc1e8('0x1c')][_0xc1e8('0x8')]);}return _0x57fedb[_0xc1e8('0x36')](_0x410a4c);}})[_0xc1e8('0xf')](function(_0x48460f){if(_0x48460f){return _0x48460f?{'count':_0x2e0267,'rows':_0x48460f}:null;}})[_0xc1e8('0xf')](respondWithResult(_0x494984,null))[_0xc1e8('0x2e')](handleError(_0x494984,null));};exports[_0xc1e8('0x39')]=function(_0x3dbf75,_0xe0e993){if(_0x3dbf75[_0xc1e8('0x34')]['id']){delete _0x3dbf75['body']['id'];}return db[_0xc1e8('0x15')][_0xc1e8('0x37')]({'where':{'id':_0x3dbf75[_0xc1e8('0x35')]['id']}})['then'](handleEntityNotFound(_0xe0e993,null))['then'](function(_0x1a9bae){if(_0x1a9bae){_0x3dbf75[_0xc1e8('0x34')][_0xc1e8('0x3a')]=_0x1a9bae['id'];_0x3dbf75[_0xc1e8('0x34')][_0xc1e8('0x3b')]=integrations[_0xc1e8('0x3c')](_0x3dbf75['body']['channel'],_0x3dbf75[_0xc1e8('0x34')][_0xc1e8('0x18')]);_0x3dbf75['body'][_0xc1e8('0x3d')]=integrations[_0xc1e8('0x3e')](_0x3dbf75[_0xc1e8('0x34')]['channel'],_0x3dbf75[_0xc1e8('0x34')]['type']);return db[_0xc1e8('0x3f')][_0xc1e8('0x33')](_0x3dbf75[_0xc1e8('0x34')],{'include':[{'model':db[_0xc1e8('0x40')],'as':'Subjects'},{'model':db['Dynamics365Field'],'as':_0xc1e8('0x3d')}]});}return null;})[_0xc1e8('0xf')](respondWithResult(_0xe0e993,null))[_0xc1e8('0x2e')](handleError(_0xe0e993,null));};function sanitizeRemoteUri(_0x37e9bf){var _0x325b98=_0x37e9bf[_0xc1e8('0x41')](-0x1);if(_0x325b98==='/')return _0x37e9bf[_0xc1e8('0x42')](0x0,_0x37e9bf['lastIndexOf'](_0x325b98));return _0x37e9bf;}function getWebApiUrl(_0x691bb7){return util[_0xc1e8('0x43')](_0xc1e8('0x44'),_0x691bb7);}exports[_0xc1e8('0x45')]=function(_0x3b63ac,_0xe84750){var _0x2f1eef=_0x3b63ac['query'][_0xc1e8('0x46')];var _0x4a5507=_0x2f1eef===_0xc1e8('0x47')?'Incident':_0xc1e8('0x48');var _0x155056='';var _0x4be6f2='';var _0x429883='';var _0x2edb13='';var _0x367603='';var _0x26fabc='';var _0x2b6e92='';var _0x583887='';var _0x2341e8=[_0xc1e8('0x49'),'description',_0xc1e8('0x4a'),_0xc1e8('0x4b'),_0xc1e8('0x4c'),_0xc1e8('0x4d'),'phonenumber',_0xc1e8('0x4e'),'directioncode',_0xc1e8('0x4f')];var _0x30b30e=['accountidname',_0xc1e8('0x50'),'actualserviceunits',_0xc1e8('0x51'),'contactidname',_0xc1e8('0x52'),_0xc1e8('0x53'),_0xc1e8('0x54'),_0xc1e8('0x55'),_0xc1e8('0x56'),_0xc1e8('0x57'),_0xc1e8('0x58'),_0xc1e8('0x59'),_0xc1e8('0x5a'),_0xc1e8('0x5b'),_0xc1e8('0x5c'),_0xc1e8('0x5d'),'customeridyominame','emailaddress',_0xc1e8('0x5e'),'entityimage_timestamp','entityimage_url','escalatedon',_0xc1e8('0x5f'),_0xc1e8('0x60'),_0xc1e8('0x61'),_0xc1e8('0x62'),_0xc1e8('0x63'),_0xc1e8('0x64'),_0xc1e8('0x65'),_0xc1e8('0x66'),_0xc1e8('0x67'),'modifiedbyexternalpartyyominame','modifiedbyname',_0xc1e8('0x68'),'modifiedon',_0xc1e8('0x69'),_0xc1e8('0x6a'),_0xc1e8('0x6b'),_0xc1e8('0x6c'),'numberofchildincidents',_0xc1e8('0x6d'),_0xc1e8('0x6e'),_0xc1e8('0x6f'),_0xc1e8('0x70'),_0xc1e8('0x71'),'parentcaseidname',_0xc1e8('0x72'),'primarycontactidyominame',_0xc1e8('0x73'),_0xc1e8('0x74'),_0xc1e8('0x75'),_0xc1e8('0x76'),_0xc1e8('0x77'),_0xc1e8('0x78'),'responsiblecontactidname',_0xc1e8('0x79'),_0xc1e8('0x7a'),'slainvokedidname',_0xc1e8('0x7b'),_0xc1e8('0x7c'),_0xc1e8('0x7d'),_0xc1e8('0x7e'),_0xc1e8('0x7f'),_0xc1e8('0x80'),'timezoneruleversionnumber','transactioncurrencyidname','traversedpath',_0xc1e8('0x81'),_0xc1e8('0x82')];var _0x534fef=_0x2341e8[_0xc1e8('0x83')](_0x30b30e);return db['Dynamics365Account'][_0xc1e8('0x37')]({'where':{'id':_0x3b63ac['params']['id']},'attributes':['id',_0xc1e8('0x84'),_0xc1e8('0x85'),'remoteUri',_0xc1e8('0x86'),_0xc1e8('0x87'),_0xc1e8('0x88'),_0xc1e8('0x89')],'include':[{'model':db['CloudProvider'],'as':_0xc1e8('0x8a'),'attributes':['id',_0xc1e8('0x8b'),_0xc1e8('0x8c')]}]})[_0xc1e8('0xf')](handleEntityNotFound(_0xe84750,null))[_0xc1e8('0xf')](function(_0xc203c8){if(_0xc203c8){if(_0xc203c8[_0xc1e8('0x89')]){_0xc203c8[_0xc1e8('0x8d')]=_0xc203c8[_0xc1e8('0x8a')][_0xc1e8('0x8b')];_0x583887=sanitizeRemoteUri(_0xc203c8[_0xc1e8('0x8a')][_0xc1e8('0x8c')]);_0x2b6e92=getWebApiUrl(_0x583887);return _0xc203c8;}_0x583887=sanitizeRemoteUri(_0xc203c8[_0xc1e8('0x8e')]);_0x2b6e92=getWebApiUrl(_0x583887);var _0x1ddefc={'method':_0xc1e8('0x8f'),'uri':_0xc1e8('0x90')+_0xc203c8[_0xc1e8('0x86')]+_0xc1e8('0x91'),'form':{'client_id':_0xc203c8[_0xc1e8('0x87')],'resource':_0x583887,'username':_0xc203c8[_0xc1e8('0x84')],'password':_0xc203c8[_0xc1e8('0x85')],'grant_type':_0xc1e8('0x85'),'client_secret':_0xc203c8[_0xc1e8('0x88')]},'json':!![]};return rp(_0x1ddefc);}})['then'](function(_0x1e9f28){_0x26fabc=_0x1e9f28[_0xc1e8('0x8d')];var _0x2e2dd6={'method':'GET','uri':encodeURI(_0x2b6e92+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x4a5507+'\x27'),'headers':{'Authorization':_0xc1e8('0x92')+_0x26fabc,'If-None-Match':null,'OData-Version':_0xc1e8('0x93')},'json':!![]};return rp(_0x2e2dd6);})[_0xc1e8('0xf')](function(_0x142914){var _0x2e5258=_0x142914[_0xc1e8('0x94')][0x0];var _0x6f9023=_0x2e5258['MetadataId'];var _0x565cf1={'method':_0xc1e8('0x95'),'uri':_0x2b6e92+_0xc1e8('0x96')+_0x6f9023+_0xc1e8('0x97'),'headers':{'Authorization':_0xc1e8('0x92')+_0x26fabc,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x565cf1);})[_0xc1e8('0xf')](function(_0x241917){_0x155056=_0x241917;_0x4be6f2=_0x155056[_0xc1e8('0x98')];_0x4be6f2=_[_0xc1e8('0x99')](_0x4be6f2,function(_0x2a627e){return!_0x534fef[_0xc1e8('0x9a')](_0x2a627e[_0xc1e8('0x9b')]);});var _0x21e59a=[];var _0x18986d=[];_0x4be6f2[_0xc1e8('0x9c')](function(_0x3d3dc6){if(_0x3d3dc6[_0xc1e8('0x9d')]){var _0x4243a9=_0x3d3dc6[_0xc1e8('0x9d')]['substring'](_0x3d3dc6['@odata.type'][_0xc1e8('0x9e')]('.')+0x1);if(_0x4243a9===_0xc1e8('0x9f')){_0x21e59a[_0xc1e8('0xa0')](getSelectList(_0x2b6e92,_0x2f1eef,_0x18986d,_0x155056[_0xc1e8('0xa1')],_0x3d3dc6[_0xc1e8('0xa1')],_0x26fabc));}}});return Promise[_0xc1e8('0xa2')](_0x21e59a);})[_0xc1e8('0xf')](function(_0x29e231){_0x429883=_0x29e231[0x0];var _0x599d65=[];var _0x57ed3c=[];_0x4be6f2['forEach'](function(_0x1a0922){if(!_[_0xc1e8('0xa3')](_0x1a0922[_0xc1e8('0x9d')])){var _0x180e97=_0x1a0922[_0xc1e8('0x9d')][_0xc1e8('0x42')](_0x1a0922[_0xc1e8('0x9d')]['lastIndexOf']('.')+0x1);if(_0x180e97===_0xc1e8('0xa4')){_0x599d65['push'](getBooleanList(_0x2b6e92,_0x2f1eef,_0x57ed3c,_0x155056['MetadataId'],_0x1a0922[_0xc1e8('0xa1')],_0x26fabc));}}});return Promise['all'](_0x599d65);})['then'](function(_0x5a83c8){_0x2edb13=_0x5a83c8[0x0];var _0x23927c=[];var _0x7a2408=[];_0x4be6f2[_0xc1e8('0x9c')](function(_0x5d7e61){if(_0x5d7e61['@odata.type']){var _0x317fb2=_0x5d7e61[_0xc1e8('0x9d')][_0xc1e8('0x42')](_0x5d7e61[_0xc1e8('0x9d')][_0xc1e8('0x9e')]('.')+0x1);if(_0x317fb2===_0xc1e8('0xa5')||_0x317fb2==='DoubleAttributeMetadata'||_0x317fb2===_0xc1e8('0xa6')||_0x317fb2===_0xc1e8('0xa7')||_0x317fb2===_0xc1e8('0xa8')||_0x317fb2===_0xc1e8('0xa9')||_0x317fb2===_0xc1e8('0xaa')||_0x317fb2===_0xc1e8('0xab')||_0x317fb2==='StateAttributeMetadata'||_0x317fb2===_0xc1e8('0xac')){_0x23927c[_0xc1e8('0xa0')](getInputList(_0x2b6e92,_0x2f1eef,_0x317fb2,_0x7a2408,_0x155056['MetadataId'],_0x5d7e61[_0xc1e8('0xa1')],_0x26fabc));}}});return Promise[_0xc1e8('0xa2')](_0x23927c);})[_0xc1e8('0xf')](function(_0x27e5fc){_0x367603=_0x27e5fc[0x0];var _0x751956=_0x429883['concat'](_0x2edb13)['concat'](_0x367603);var _0x501459={'count':_0x751956[_0xc1e8('0x30')],'rows':_0x751956};return _0x501459;})['then'](respondWithResult(_0xe84750,null))[_0xc1e8('0x2e')](function(_0x572d46){var _0x2e7c53=_0x3b63ac['query'][_0xc1e8('0xad')]?0x1f4:_0x572d46[_0xc1e8('0xae')]||0x1f4;logger[_0xc1e8('0xaf')](_0x572d46['stack']);delete _0x572d46[_0xc1e8('0x12')];if(_0x2e7c53===0x191){_0x2e7c53=0x190;}_0xe84750[_0xc1e8('0x6')](_0x2e7c53)['send'](_0x3b63ac[_0xc1e8('0x1c')][_0xc1e8('0xad')]?{'message':'Wrong\x20credentials','statusCode':_0x572d46[_0xc1e8('0xae')]}:_0x572d46);});};function getSelectList(_0x2d97ff,_0x1ed503,_0x192d49,_0x1b3ba5,_0x4cf494,_0x4619e5){var _0x13a2a6={'method':_0xc1e8('0x95'),'uri':_0x2d97ff+_0xc1e8('0x96')+_0x1b3ba5+_0xc1e8('0xb0')+_0x4cf494+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':'Bearer\x20'+_0x4619e5,'If-None-Match':null,'OData-Version':_0xc1e8('0x93')},'json':!![]};return rp(_0x13a2a6)[_0xc1e8('0xf')](function(_0x563e5b){var _0x5f34d9=[];var _0x5d0722=_0x563e5b['OptionSet']['Options'];_0x5d0722[_0xc1e8('0x9c')](function(_0x3c764c){_0x5f34d9['push']({'name':_0x3c764c[_0xc1e8('0xb1')][_0xc1e8('0xb2')]['Label'],'value':String(_0x3c764c[_0xc1e8('0xb3')])});});var _0x4e73c5={'id':_0x1ed503+'_'+_0x563e5b[_0xc1e8('0x9b')],'name':_0x563e5b[_0xc1e8('0xb4')][_0xc1e8('0xb2')][_0xc1e8('0xb1')],'custom':![],'options':_0x5f34d9};_0x192d49[_0xc1e8('0xa0')](_0x4e73c5);return _0x192d49;});}function getBooleanList(_0x37b892,_0x23daa9,_0x4b958c,_0x28dbfc,_0x11f88e,_0x42331f){var _0x44b722={'method':_0xc1e8('0x95'),'uri':_0x37b892+_0xc1e8('0x96')+_0x28dbfc+_0xc1e8('0xb0')+_0x11f88e+_0xc1e8('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x42331f,'If-None-Match':null,'OData-Version':_0xc1e8('0x93')},'json':!![]};return rp(_0x44b722)[_0xc1e8('0xf')](function(_0x87dbf0){var _0x40d27c=[];_0x40d27c[_0xc1e8('0xa0')]({'name':_0x87dbf0[_0xc1e8('0xb6')][_0xc1e8('0xb7')][_0xc1e8('0xb1')][_0xc1e8('0xb2')]['Label'],'value':_0xc1e8('0xb8')},{'name':_0x87dbf0[_0xc1e8('0xb6')]['FalseOption'][_0xc1e8('0xb1')]['UserLocalizedLabel']['Label'],'value':_0xc1e8('0xb9')});var _0x2a52f8={'id':_0x23daa9+'_'+_0x87dbf0[_0xc1e8('0x9b')],'name':_0x87dbf0[_0xc1e8('0xb4')][_0xc1e8('0xb2')][_0xc1e8('0xb1')],'custom':![],'options':_0x40d27c};_0x4b958c['push'](_0x2a52f8);return _0x4b958c;});}function getInputList(_0x4cbf57,_0x13b2c5,_0x3c4237,_0x964b60,_0x3e15c5,_0x1ae286,_0x8e44fb){var _0x1130c2={'method':_0xc1e8('0x95'),'uri':_0x4cbf57+_0xc1e8('0x96')+_0x3e15c5+_0xc1e8('0xb0')+_0x1ae286+_0xc1e8('0xba')+_0x3c4237+_0xc1e8('0xbb'),'headers':{'Authorization':_0xc1e8('0x92')+_0x8e44fb,'If-None-Match':null,'OData-Version':_0xc1e8('0x93')},'json':!![]};return rp(_0x1130c2)[_0xc1e8('0xf')](function(_0x1df6a4){var _0x1f0113={'id':_0x13b2c5+'_'+_0x1df6a4[_0xc1e8('0x9b')],'name':_0x1df6a4[_0xc1e8('0xb4')][_0xc1e8('0xb2')]?_0x1df6a4[_0xc1e8('0xb4')][_0xc1e8('0xb2')][_0xc1e8('0xb1')]:_0x1df6a4[_0xc1e8('0x9b')],'custom':![],'options':[]};_0x964b60[_0xc1e8('0xa0')](_0x1f0113);return _0x964b60;});}
\ No newline at end of file
index aeb115a..7a77e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x452faa,_0xd4be28){var _0x59f64c=function(_0x2aa03c){while(--_0x2aa03c){_0x452faa['push'](_0x452faa['shift']());}};_0x59f64c(++_0xd4be28);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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'));var integrations=require(_0x0a9e('0x8'));module['exports']=function(_0x219af0,_0x441e3a){return _0x219af0[_0x0a9e('0x9')]('Dynamics365Account',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(_0x421171,_0x5d81e0){var _0x5654cf=function(_0x200d0d){while(--_0x200d0d){_0x421171['push'](_0x421171['shift']());}};_0x5654cf(++_0x5d81e0);}(_0xe706,0xa3));var _0x6e70=function(_0x32cd29,_0x29f6bb){_0x32cd29=_0x32cd29-0x0;var _0x2f7e6e=_0xe706[_0x32cd29];return _0x2f7e6e;};'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 97cb274..b48cfca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64bd=['client','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','limit','map','include','model','attributes','catch','ShowDynamics365Account','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x64bd,0x101));var _0xd64b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x64bd[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xd64b('0x0'));var moment=require(_0xd64b('0x1'));var BPromise=require('bluebird');var rs=require(_0xd64b('0x2'));var fs=require('fs');var Redis=require(_0xd64b('0x3'));var db=require(_0xd64b('0x4'))['db'];var utils=require(_0xd64b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xd64b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd64b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ea79d,_0x2f864a,_0xeb1b6c){return new BPromise(function(_0x17853a,_0x544760){return client['request'](_0x2ea79d,_0xeb1b6c)[_0xd64b('0x8')](function(_0x30bc3a){logger['info'](_0xd64b('0x9'),_0x2f864a,_0xd64b('0xa'));logger[_0xd64b('0xb')](_0xd64b('0xc'),_0x2f864a,_0xd64b('0xa'),JSON[_0xd64b('0xd')](_0x30bc3a));if(_0x30bc3a[_0xd64b('0xe')]){if(_0x30bc3a[_0xd64b('0xe')][_0xd64b('0xf')]===0x1f4){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x2f864a,_0x30bc3a[_0xd64b('0xe')]['message']);return _0x544760(_0x30bc3a[_0xd64b('0xe')][_0xd64b('0x10')]);}logger[_0xd64b('0xe')](_0xd64b('0x9'),_0x2f864a,_0x30bc3a[_0xd64b('0xe')][_0xd64b('0x10')]);return _0x17853a(_0x30bc3a['error'][_0xd64b('0x10')]);}else{logger[_0xd64b('0x11')]('Dynamics365Account,\x20%s,\x20%s',_0x2f864a,_0xd64b('0xa'));_0x17853a(_0x30bc3a[_0xd64b('0x12')][_0xd64b('0x10')]);}})['catch'](function(_0x1d63d8){logger[_0xd64b('0xe')](_0xd64b('0x9'),_0x2f864a,_0x1d63d8);_0x544760(_0x1d63d8);});});}exports[_0xd64b('0x13')]=function(_0x479f9d){var _0x14bda6=this;return new Promise(function(_0x240c24,_0x38c9b2){return db[_0xd64b('0x14')][_0xd64b('0x15')]({'raw':_0x479f9d['options']?_0x479f9d[_0xd64b('0x16')][_0xd64b('0x17')]===undefined?!![]:![]:!![],'where':_0x479f9d[_0xd64b('0x16')]?_0x479f9d['options'][_0xd64b('0x18')]||null:null,'attributes':_0x479f9d[_0xd64b('0x16')]?_0x479f9d['options']['attributes']||null:null,'limit':_0x479f9d[_0xd64b('0x16')]?_0x479f9d[_0xd64b('0x16')][_0xd64b('0x19')]||null:null,'include':_0x479f9d[_0xd64b('0x16')]?_0x479f9d['options']['include']?_[_0xd64b('0x1a')](_0x479f9d[_0xd64b('0x16')][_0xd64b('0x1b')],function(_0x411ee4){return{'model':db[_0x411ee4[_0xd64b('0x1c')]],'as':_0x411ee4['as'],'attributes':_0x411ee4[_0xd64b('0x1d')],'include':_0x411ee4[_0xd64b('0x1b')]?_['map'](_0x411ee4[_0xd64b('0x1b')],function(_0x44638e){return{'model':db[_0x44638e[_0xd64b('0x1c')]],'as':_0x44638e['as'],'attributes':_0x44638e['attributes'],'include':_0x44638e[_0xd64b('0x1b')]?_['map'](_0x44638e[_0xd64b('0x1b')],function(_0x30eae0){return{'model':db[_0x30eae0[_0xd64b('0x1c')]],'as':_0x30eae0['as'],'attributes':_0x30eae0['attributes']};}):[]};}):[]};}):[]:[]})[_0xd64b('0x8')](function(_0x263620){logger[_0xd64b('0x11')]('GetDynamics365Account',_0x479f9d);logger[_0xd64b('0xb')](_0xd64b('0x13'),_0x479f9d,JSON['stringify'](_0x263620));_0x240c24(_0x263620);})[_0xd64b('0x1e')](function(_0x4160db){logger[_0xd64b('0xe')](_0xd64b('0x13'),_0x4160db['message'],_0x479f9d);_0x38c9b2(_0x14bda6[_0xd64b('0xe')](0x1f4,_0x4160db['message']));});});};exports[_0xd64b('0x1f')]=function(_0x3e9009){var _0x169f9f=this;return new Promise(function(_0x224fe1,_0x12f998){return db[_0xd64b('0x14')][_0xd64b('0x20')]({'raw':_0x3e9009[_0xd64b('0x16')]?_0x3e9009[_0xd64b('0x16')][_0xd64b('0x17')]===undefined?!![]:![]:!![],'where':_0x3e9009[_0xd64b('0x16')]?_0x3e9009[_0xd64b('0x16')]['where']||null:null,'attributes':_0x3e9009[_0xd64b('0x16')]?_0x3e9009[_0xd64b('0x16')][_0xd64b('0x1d')]||null:null,'include':_0x3e9009[_0xd64b('0x16')]?_0x3e9009[_0xd64b('0x16')]['include']?_[_0xd64b('0x1a')](_0x3e9009[_0xd64b('0x16')][_0xd64b('0x1b')],function(_0x4b9f87){return{'model':db[_0x4b9f87[_0xd64b('0x1c')]],'as':_0x4b9f87['as'],'attributes':_0x4b9f87['attributes'],'include':_0x4b9f87[_0xd64b('0x1b')]?_[_0xd64b('0x1a')](_0x4b9f87[_0xd64b('0x1b')],function(_0x3a19cb){return{'model':db[_0x3a19cb[_0xd64b('0x1c')]],'as':_0x3a19cb['as'],'attributes':_0x3a19cb[_0xd64b('0x1d')],'include':_0x3a19cb[_0xd64b('0x1b')]?_[_0xd64b('0x1a')](_0x3a19cb[_0xd64b('0x1b')],function(_0xadefe7){return{'model':db[_0xadefe7[_0xd64b('0x1c')]],'as':_0xadefe7['as'],'attributes':_0xadefe7[_0xd64b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd64b('0x8')](function(_0x4e0aaa){logger[_0xd64b('0x11')]('ShowDynamics365Account',_0x3e9009);logger[_0xd64b('0xb')]('ShowDynamics365Account',_0x3e9009,JSON['stringify'](_0x4e0aaa));_0x224fe1(_0x4e0aaa);})['catch'](function(_0x37617e){logger[_0xd64b('0xe')](_0xd64b('0x1f'),_0x37617e['message'],_0x3e9009);_0x12f998(_0x169f9f[_0xd64b('0xe')](0x1f4,_0x37617e['message']));});});};
\ No newline at end of file
+var _0x2ffb=['options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetDynamics365Account'];(function(_0x16818e,_0x4c3656){var _0x6fadf9=function(_0x182c97){while(--_0x182c97){_0x16818e['push'](_0x16818e['shift']());}};_0x6fadf9(++_0x4c3656);}(_0x2ffb,0x14d));var _0xb2ff=function(_0x2dc367,_0x591c8a){_0x2dc367=_0x2dc367-0x0;var _0x14845a=_0x2ffb[_0x2dc367];return _0x14845a;};'use strict';var _=require(_0xb2ff('0x0'));var util=require(_0xb2ff('0x1'));var moment=require(_0xb2ff('0x2'));var BPromise=require(_0xb2ff('0x3'));var rs=require(_0xb2ff('0x4'));var fs=require('fs');var Redis=require(_0xb2ff('0x5'));var db=require(_0xb2ff('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb2ff('0x7'))(_0xb2ff('0x8'));var config=require(_0xb2ff('0x9'));var jayson=require(_0xb2ff('0xa'));var client=jayson[_0xb2ff('0xb')][_0xb2ff('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2a050c,_0x3ed16f,_0x2a3565){return new BPromise(function(_0x1f069b,_0x355d96){return client[_0xb2ff('0xd')](_0x2a050c,_0x2a3565)[_0xb2ff('0xe')](function(_0x15c089){logger[_0xb2ff('0xf')](_0xb2ff('0x10'),_0x3ed16f,_0xb2ff('0x11'));logger[_0xb2ff('0x12')](_0xb2ff('0x13'),_0x3ed16f,'request\x20sent',JSON[_0xb2ff('0x14')](_0x15c089));if(_0x15c089[_0xb2ff('0x15')]){if(_0x15c089[_0xb2ff('0x15')][_0xb2ff('0x16')]===0x1f4){logger[_0xb2ff('0x15')](_0xb2ff('0x10'),_0x3ed16f,_0x15c089[_0xb2ff('0x15')][_0xb2ff('0x17')]);return _0x355d96(_0x15c089[_0xb2ff('0x15')]['message']);}logger[_0xb2ff('0x15')](_0xb2ff('0x10'),_0x3ed16f,_0x15c089[_0xb2ff('0x15')][_0xb2ff('0x17')]);return _0x1f069b(_0x15c089['error'][_0xb2ff('0x17')]);}else{logger[_0xb2ff('0xf')](_0xb2ff('0x10'),_0x3ed16f,_0xb2ff('0x11'));_0x1f069b(_0x15c089[_0xb2ff('0x18')][_0xb2ff('0x17')]);}})[_0xb2ff('0x19')](function(_0x1917e2){logger[_0xb2ff('0x15')]('Dynamics365Account,\x20%s,\x20%s',_0x3ed16f,_0x1917e2);_0x355d96(_0x1917e2);});});}exports[_0xb2ff('0x1a')]=function(_0x4a2843){var _0x332734=this;return new Promise(function(_0x5efea7,_0x339f40){return db['Dynamics365Account']['findAll']({'raw':_0x4a2843['options']?_0x4a2843[_0xb2ff('0x1b')][_0xb2ff('0x1c')]===undefined?!![]:![]:!![],'where':_0x4a2843[_0xb2ff('0x1b')]?_0x4a2843[_0xb2ff('0x1b')][_0xb2ff('0x1d')]||null:null,'attributes':_0x4a2843[_0xb2ff('0x1b')]?_0x4a2843['options'][_0xb2ff('0x1e')]||null:null,'limit':_0x4a2843[_0xb2ff('0x1b')]?_0x4a2843[_0xb2ff('0x1b')][_0xb2ff('0x1f')]||null:null,'include':_0x4a2843['options']?_0x4a2843[_0xb2ff('0x1b')][_0xb2ff('0x20')]?_[_0xb2ff('0x21')](_0x4a2843[_0xb2ff('0x1b')][_0xb2ff('0x20')],function(_0x18a0d9){return{'model':db[_0x18a0d9[_0xb2ff('0x22')]],'as':_0x18a0d9['as'],'attributes':_0x18a0d9['attributes'],'include':_0x18a0d9['include']?_[_0xb2ff('0x21')](_0x18a0d9[_0xb2ff('0x20')],function(_0x14bd18){return{'model':db[_0x14bd18[_0xb2ff('0x22')]],'as':_0x14bd18['as'],'attributes':_0x14bd18[_0xb2ff('0x1e')],'include':_0x14bd18[_0xb2ff('0x20')]?_[_0xb2ff('0x21')](_0x14bd18['include'],function(_0x162da5){return{'model':db[_0x162da5[_0xb2ff('0x22')]],'as':_0x162da5['as'],'attributes':_0x162da5['attributes']};}):[]};}):[]};}):[]:[]})[_0xb2ff('0xe')](function(_0x297acc){logger[_0xb2ff('0xf')](_0xb2ff('0x1a'),_0x4a2843);logger[_0xb2ff('0x12')]('GetDynamics365Account',_0x4a2843,JSON[_0xb2ff('0x14')](_0x297acc));_0x5efea7(_0x297acc);})['catch'](function(_0x1757d6){logger['error']('GetDynamics365Account',_0x1757d6[_0xb2ff('0x17')],_0x4a2843);_0x339f40(_0x332734['error'](0x1f4,_0x1757d6[_0xb2ff('0x17')]));});});};exports[_0xb2ff('0x23')]=function(_0x3c5cfc){var _0x52d069=this;return new Promise(function(_0x8affcb,_0xa7b7f7){return db['Dynamics365Account']['find']({'raw':_0x3c5cfc['options']?_0x3c5cfc['options'][_0xb2ff('0x1c')]===undefined?!![]:![]:!![],'where':_0x3c5cfc[_0xb2ff('0x1b')]?_0x3c5cfc['options']['where']||null:null,'attributes':_0x3c5cfc[_0xb2ff('0x1b')]?_0x3c5cfc[_0xb2ff('0x1b')][_0xb2ff('0x1e')]||null:null,'include':_0x3c5cfc[_0xb2ff('0x1b')]?_0x3c5cfc['options'][_0xb2ff('0x20')]?_[_0xb2ff('0x21')](_0x3c5cfc[_0xb2ff('0x1b')]['include'],function(_0x2aed54){return{'model':db[_0x2aed54[_0xb2ff('0x22')]],'as':_0x2aed54['as'],'attributes':_0x2aed54[_0xb2ff('0x1e')],'include':_0x2aed54[_0xb2ff('0x20')]?_[_0xb2ff('0x21')](_0x2aed54[_0xb2ff('0x20')],function(_0x9181a2){return{'model':db[_0x9181a2[_0xb2ff('0x22')]],'as':_0x9181a2['as'],'attributes':_0x9181a2[_0xb2ff('0x1e')],'include':_0x9181a2[_0xb2ff('0x20')]?_[_0xb2ff('0x21')](_0x9181a2[_0xb2ff('0x20')],function(_0x3ac7cf){return{'model':db[_0x3ac7cf[_0xb2ff('0x22')]],'as':_0x3ac7cf['as'],'attributes':_0x3ac7cf['attributes']};}):[]};}):[]};}):[]:[]})[_0xb2ff('0xe')](function(_0x5459e6){logger[_0xb2ff('0xf')](_0xb2ff('0x23'),_0x3c5cfc);logger[_0xb2ff('0x12')](_0xb2ff('0x23'),_0x3c5cfc,JSON[_0xb2ff('0x14')](_0x5459e6));_0x8affcb(_0x5459e6);})[_0xb2ff('0x19')](function(_0x4b78e9){logger['error']('ShowDynamics365Account',_0x4b78e9[_0xb2ff('0x17')],_0x3c5cfc);_0xa7b7f7(_0x52d069['error'](0x1f4,_0x4b78e9[_0xb2ff('0x17')]));});});};
\ No newline at end of file
index 1e6f844..61ef771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9d0=['index','/:id','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','update','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','./intDynamics365Configuration.controller','get'];(function(_0xf332d4,_0x472fe2){var _0x23dba1=function(_0x4c733e){while(--_0x4c733e){_0xf332d4['push'](_0xf332d4['shift']());}};_0x23dba1(++_0x472fe2);}(_0xe9d0,0x84));var _0x0e9d=function(_0x1783b0,_0x3cc23c){_0x1783b0=_0x1783b0-0x0;var _0xbc205a=_0xe9d0[_0x1783b0];return _0xbc205a;};'use strict';var multer=require(_0x0e9d('0x0'));var util=require('util');var path=require(_0x0e9d('0x1'));var timeout=require(_0x0e9d('0x2'));var express=require(_0x0e9d('0x3'));var router=express[_0x0e9d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0e9d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0e9d('0x6'));router[_0x0e9d('0x7')]('/',auth['isAuthenticated'](),controller[_0x0e9d('0x8')]);router[_0x0e9d('0x7')](_0x0e9d('0x9'),auth[_0x0e9d('0xa')](),controller['show']);router[_0x0e9d('0x7')]('/:id/fields',auth[_0x0e9d('0xa')](),controller[_0x0e9d('0xb')]);router[_0x0e9d('0x7')](_0x0e9d('0xc'),auth[_0x0e9d('0xa')](),controller[_0x0e9d('0xd')]);router[_0x0e9d('0x7')](_0x0e9d('0xe'),auth['isAuthenticated'](),controller[_0x0e9d('0xf')]);router[_0x0e9d('0x10')]('/',auth[_0x0e9d('0xa')](),controller['create']);router[_0x0e9d('0x11')](_0x0e9d('0x9'),auth['isAuthenticated'](),controller[_0x0e9d('0x12')]);router['delete']('/:id',auth[_0x0e9d('0xa')](),controller[_0x0e9d('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x6a47=['getDescriptions','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','/:id/descriptions'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x6a47,0x84));var _0x76a4=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x6a47[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x76a4('0x0'));var util=require(_0x76a4('0x1'));var path=require(_0x76a4('0x2'));var timeout=require(_0x76a4('0x3'));var express=require(_0x76a4('0x4'));var router=express[_0x76a4('0x5')]();var fs_extra=require(_0x76a4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x76a4('0x7'));var config=require(_0x76a4('0x8'));var controller=require(_0x76a4('0x9'));router[_0x76a4('0xa')]('/',auth[_0x76a4('0xb')](),controller[_0x76a4('0xc')]);router['get'](_0x76a4('0xd'),auth[_0x76a4('0xb')](),controller[_0x76a4('0xe')]);router[_0x76a4('0xa')]('/:id/fields',auth[_0x76a4('0xb')](),controller[_0x76a4('0xf')]);router[_0x76a4('0xa')](_0x76a4('0x10'),auth[_0x76a4('0xb')](),controller['getSubjects']);router[_0x76a4('0xa')](_0x76a4('0x11'),auth[_0x76a4('0xb')](),controller[_0x76a4('0x12')]);router[_0x76a4('0x13')]('/',auth[_0x76a4('0xb')](),controller[_0x76a4('0x14')]);router[_0x76a4('0x15')](_0x76a4('0xd'),auth['isAuthenticated'](),controller[_0x76a4('0x16')]);router[_0x76a4('0x17')](_0x76a4('0xd'),auth[_0x76a4('0xb')](),controller['destroy']);module[_0x76a4('0x18')]=router;
\ No newline at end of file
index 2b52311..617d78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3aa=['nothing','BOOLEAN','sequelize','exports','STRING','ENUM','phonecall','incident','contact'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0xd3aa,0x14f));var _0xad3a=function(_0x152121,_0x120c53){_0x152121=_0x152121-0x0;var _0x592a85=_0xd3aa[_0x152121];return _0x592a85;};'use strict';var Sequelize=require(_0xad3a('0x0'));module[_0xad3a('0x1')]={'name':{'type':Sequelize[_0xad3a('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xad3a('0x3')]('incident',_0xad3a('0x4')),'defaultValue':_0xad3a('0x5')},'moduleCreate':{'type':Sequelize[_0xad3a('0x3')](_0xad3a('0x6'),_0xad3a('0x7')),'defaultValue':_0xad3a('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xad3a('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xad3a('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x77ac=['sequelize','exports','STRING','ENUM','phonecall','incident','nothing','contact'];(function(_0x148c09,_0x4fd39f){var _0x18e613=function(_0xfaa810){while(--_0xfaa810){_0x148c09['push'](_0x148c09['shift']());}};_0x18e613(++_0x4fd39f);}(_0x77ac,0xf8));var _0xc77a=function(_0x435044,_0x36ab8e){_0x435044=_0x435044-0x0;var _0x33d4c6=_0x77ac[_0x435044];return _0x33d4c6;};'use strict';var Sequelize=require(_0xc77a('0x0'));module[_0xc77a('0x1')]={'name':{'type':Sequelize[_0xc77a('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc77a('0x3')]('incident',_0xc77a('0x4')),'defaultValue':_0xc77a('0x5')},'moduleCreate':{'type':Sequelize['ENUM']('contact',_0xc77a('0x6')),'defaultValue':_0xc77a('0x7'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xc77a('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 6334fd5..9835413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2233=['then','destroy','error','stack','name','send','map','Dynamics365Configuration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','rows','catch','show','params','includeAll','options','find','create','body','findOne','Dynamics365Field','getFields','getSubjects','order','getDescriptions','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','update'];(function(_0x379a5c,_0x49523e){var _0x657fd2=function(_0x4e1a2f){while(--_0x4e1a2f){_0x379a5c['push'](_0x379a5c['shift']());}};_0x657fd2(++_0x49523e);}(_0x2233,0x1ec));var _0x3223=function(_0x1d997f,_0x259b5a){_0x1d997f=_0x1d997f-0x0;var _0x307704=_0x2233[_0x1d997f];return _0x307704;};'use strict';var emlformat=require(_0x3223('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3223('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3223('0x2'));var moment=require('moment');var BPromise=require(_0x3223('0x3'));var Mustache=require(_0x3223('0x4'));var util=require(_0x3223('0x5'));var path=require(_0x3223('0x6'));var sox=require(_0x3223('0x7'));var csv=require(_0x3223('0x8'));var ejs=require(_0x3223('0x9'));var fs=require('fs');var fs_extra=require(_0x3223('0xa'));var _=require(_0x3223('0xb'));var squel=require(_0x3223('0xc'));var crypto=require('crypto');var jsforce=require(_0x3223('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3223('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3223('0xe'));var qs=require(_0x3223('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3223('0x10'));var logger=require('../../config/logger')(_0x3223('0x11'));var utils=require(_0x3223('0x12'));var config=require(_0x3223('0x13'));var licenseUtil=require(_0x3223('0x14'));var db=require(_0x3223('0x15'))['db'];function respondWithStatusCode(_0x164576,_0x47b8de){_0x47b8de=_0x47b8de||0xcc;return function(_0x4ccc46){if(_0x4ccc46){return _0x164576[_0x3223('0x16')](_0x47b8de);}return _0x164576['status'](_0x47b8de)[_0x3223('0x17')]();};}function respondWithResult(_0x1cffc1,_0x554fd2){_0x554fd2=_0x554fd2||0xc8;return function(_0x35cad8){if(_0x35cad8){return _0x1cffc1[_0x3223('0x18')](_0x554fd2)[_0x3223('0x19')](_0x35cad8);}};}function respondWithFilteredResult(_0x2308bf,_0x22cd9f){return function(_0x37b321){if(_0x37b321){var _0x3538ef=typeof _0x22cd9f[_0x3223('0x1a')]===_0x3223('0x1b')&&typeof _0x22cd9f[_0x3223('0x1c')]===_0x3223('0x1b');var _0x13d77e=_0x37b321[_0x3223('0x1d')];var _0x5a53e8=_0x3538ef?0x0:_0x22cd9f[_0x3223('0x1a')];var _0x1afd84=_0x3538ef?_0x37b321[_0x3223('0x1d')]:_0x22cd9f['offset']+_0x22cd9f[_0x3223('0x1c')];var _0x1dd7e1;if(_0x1afd84>=_0x13d77e){_0x1afd84=_0x13d77e;_0x1dd7e1=0xc8;}else{_0x1dd7e1=0xce;}_0x2308bf[_0x3223('0x18')](_0x1dd7e1);return _0x2308bf[_0x3223('0x1e')]('Content-Range',_0x5a53e8+'-'+_0x1afd84+'/'+_0x13d77e)[_0x3223('0x19')](_0x37b321);}return null;};}function patchUpdates(_0x2dc754){return function(_0x38c579){try{jsonpatch[_0x3223('0x1f')](_0x38c579,_0x2dc754,!![]);}catch(_0xad47c1){return BPromise['reject'](_0xad47c1);}return _0x38c579['save']();};}function saveUpdates(_0x395bec,_0x824075){return function(_0x11c8da){if(_0x11c8da){return _0x11c8da[_0x3223('0x20')](_0x395bec)[_0x3223('0x21')](function(_0x19c17f){return _0x19c17f;});}return null;};}function removeEntity(_0x50b44e,_0x7024e9){return function(_0x4f7e30){if(_0x4f7e30){return _0x4f7e30[_0x3223('0x22')]()[_0x3223('0x21')](function(){_0x50b44e[_0x3223('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x395dfb,_0x3ccd28){return function(_0x50b873){if(!_0x50b873){_0x395dfb['sendStatus'](0x194);}return _0x50b873;};}function handleError(_0x419ca6,_0x4b6c14){_0x4b6c14=_0x4b6c14||0x1f4;return function(_0x3290c0){logger[_0x3223('0x23')](_0x3290c0[_0x3223('0x24')]);if(_0x3290c0[_0x3223('0x25')]){delete _0x3290c0[_0x3223('0x25')];}_0x419ca6['status'](_0x4b6c14)[_0x3223('0x26')](_0x3290c0);};}exports['index']=function(_0x79ff22,_0x5a0bd8){var _0x269ea2={},_0x814614={},_0x5452fd={'count':0x0,'rows':[]};var _0xc0d2c0=_[_0x3223('0x27')](db[_0x3223('0x28')][_0x3223('0x29')],function(_0xc71bd9){return{'name':_0xc71bd9[_0x3223('0x2a')],'type':_0xc71bd9['type'][_0x3223('0x2b')]};});_0x814614[_0x3223('0x2c')]=_[_0x3223('0x27')](_0xc0d2c0,'name');_0x814614[_0x3223('0x2d')]=_[_0x3223('0x2e')](_0x79ff22[_0x3223('0x2d')]);_0x814614[_0x3223('0x2f')]=_[_0x3223('0x30')](_0x814614[_0x3223('0x2c')],_0x814614[_0x3223('0x2d')]);_0x269ea2['attributes']=_[_0x3223('0x30')](_0x814614[_0x3223('0x2c')],qs[_0x3223('0x31')](_0x79ff22[_0x3223('0x2d')][_0x3223('0x31')]));_0x269ea2[_0x3223('0x32')]=_0x269ea2[_0x3223('0x32')][_0x3223('0x33')]?_0x269ea2[_0x3223('0x32')]:_0x814614['model'];if(!_0x79ff22[_0x3223('0x2d')][_0x3223('0x34')](_0x3223('0x35'))){_0x269ea2[_0x3223('0x1c')]=qs[_0x3223('0x1c')](_0x79ff22['query'][_0x3223('0x1c')]);_0x269ea2[_0x3223('0x1a')]=qs[_0x3223('0x1a')](_0x79ff22[_0x3223('0x2d')][_0x3223('0x1a')]);}_0x269ea2['order']=qs[_0x3223('0x36')](_0x79ff22['query']['sort']);_0x269ea2[_0x3223('0x37')]=qs[_0x3223('0x2f')](_[_0x3223('0x38')](_0x79ff22[_0x3223('0x2d')],_0x814614[_0x3223('0x2f')]),_0xc0d2c0);if(_0x79ff22[_0x3223('0x2d')][_0x3223('0x39')]){_0x269ea2[_0x3223('0x37')]=_[_0x3223('0x3a')](_0x269ea2[_0x3223('0x37')],{'$or':_[_0x3223('0x27')](_0xc0d2c0,function(_0x2384e1){if(_0x2384e1[_0x3223('0x3b')]!=='VIRTUAL'){var _0x2c9220={};_0x2c9220[_0x2384e1['name']]={'$like':'%'+_0x79ff22[_0x3223('0x2d')][_0x3223('0x39')]+'%'};return _0x2c9220;}})});}_0x269ea2=_[_0x3223('0x3a')]({},_0x269ea2,_0x79ff22['options']);var _0x755402={'where':_0x269ea2[_0x3223('0x37')]};return db[_0x3223('0x28')][_0x3223('0x1d')](_0x755402)['then'](function(_0x579665){_0x5452fd[_0x3223('0x1d')]=_0x579665;if(_0x79ff22['query']['includeAll']){_0x269ea2['include']=[{'all':!![]}];}return db[_0x3223('0x28')]['findAll'](_0x269ea2);})[_0x3223('0x21')](function(_0x2a06ea){_0x5452fd[_0x3223('0x3c')]=_0x2a06ea;return _0x5452fd;})[_0x3223('0x21')](respondWithFilteredResult(_0x5a0bd8,_0x269ea2))[_0x3223('0x3d')](handleError(_0x5a0bd8,null));};exports[_0x3223('0x3e')]=function(_0x20c279,_0x4ffbfb){var _0x150356={'raw':![],'where':{'id':_0x20c279[_0x3223('0x3f')]['id']}},_0x12e44c={};_0x12e44c[_0x3223('0x2c')]=_[_0x3223('0x2e')](db[_0x3223('0x28')]['rawAttributes']);_0x12e44c['query']=_[_0x3223('0x2e')](_0x20c279['query']);_0x12e44c['filters']=_['intersection'](_0x12e44c[_0x3223('0x2c')],_0x12e44c[_0x3223('0x2d')]);_0x150356[_0x3223('0x32')]=_[_0x3223('0x30')](_0x12e44c['model'],qs['fields'](_0x20c279[_0x3223('0x2d')][_0x3223('0x31')]));_0x150356[_0x3223('0x32')]=_0x150356[_0x3223('0x32')][_0x3223('0x33')]?_0x150356['attributes']:_0x12e44c['model'];if(_0x20c279[_0x3223('0x2d')][_0x3223('0x40')]){_0x150356['include']=[{'all':!![]}];}_0x150356=_[_0x3223('0x3a')]({},_0x150356,_0x20c279[_0x3223('0x41')]);return db['Dynamics365Configuration'][_0x3223('0x42')](_0x150356)['then'](handleEntityNotFound(_0x4ffbfb,null))[_0x3223('0x21')](respondWithResult(_0x4ffbfb,null))['catch'](handleError(_0x4ffbfb,null));};exports['create']=function(_0x5178d5,_0x33dc19){return db[_0x3223('0x28')][_0x3223('0x43')](_0x5178d5['body'],{})[_0x3223('0x21')](respondWithResult(_0x33dc19,0xc9))['catch'](handleError(_0x33dc19,null));};exports[_0x3223('0x20')]=function(_0x51f9d1,_0x250e16){if(_0x51f9d1[_0x3223('0x44')]['id']){delete _0x51f9d1[_0x3223('0x44')]['id'];}return db[_0x3223('0x28')]['find']({'where':{'id':_0x51f9d1['params']['id']}})[_0x3223('0x21')](handleEntityNotFound(_0x250e16,null))[_0x3223('0x21')](saveUpdates(_0x51f9d1[_0x3223('0x44')],null))['then'](respondWithResult(_0x250e16,null))[_0x3223('0x3d')](handleError(_0x250e16,null));};exports['destroy']=function(_0x47cf43,_0x4fa821){return db[_0x3223('0x28')][_0x3223('0x42')]({'where':{'id':_0x47cf43['params']['id']}})[_0x3223('0x21')](handleEntityNotFound(_0x4fa821,null))[_0x3223('0x21')](removeEntity(_0x4fa821,null))['catch'](handleError(_0x4fa821,null));};exports['getFields']=function(_0x1ad1e3,_0x15ec4a,_0x2c850b){var _0x4522ff={};var _0x1cfce5={};var _0x35b1ee;var _0x14167d;return db[_0x3223('0x28')][_0x3223('0x45')]({'where':{'id':_0x1ad1e3[_0x3223('0x3f')]['id']}})[_0x3223('0x21')](handleEntityNotFound(_0x15ec4a,null))[_0x3223('0x21')](function(_0x42b522){if(_0x42b522){_0x35b1ee=_0x42b522;_0x1cfce5[_0x3223('0x2c')]=_[_0x3223('0x2e')](db[_0x3223('0x46')][_0x3223('0x29')]);_0x1cfce5[_0x3223('0x2d')]=_[_0x3223('0x2e')](_0x1ad1e3['query']);_0x1cfce5[_0x3223('0x2f')]=_[_0x3223('0x30')](_0x1cfce5[_0x3223('0x2c')],_0x1cfce5[_0x3223('0x2d')]);_0x4522ff['attributes']=_[_0x3223('0x30')](_0x1cfce5['model'],qs[_0x3223('0x31')](_0x1ad1e3[_0x3223('0x2d')][_0x3223('0x31')]));_0x4522ff['attributes']=_0x4522ff[_0x3223('0x32')][_0x3223('0x33')]?_0x4522ff[_0x3223('0x32')]:_0x1cfce5[_0x3223('0x2c')];_0x4522ff['order']=qs[_0x3223('0x36')](_0x1ad1e3[_0x3223('0x2d')][_0x3223('0x36')]);_0x4522ff[_0x3223('0x37')]=qs[_0x3223('0x2f')](_[_0x3223('0x38')](_0x1ad1e3['query'],_0x1cfce5['filters']));if(_0x1ad1e3[_0x3223('0x2d')][_0x3223('0x39')]){_0x4522ff[_0x3223('0x37')]=_[_0x3223('0x3a')](_0x4522ff[_0x3223('0x37')],{'$or':_[_0x3223('0x27')](_0x4522ff['attributes'],function(_0x3d98f6){var _0x4f06b4={};_0x4f06b4[_0x3d98f6]={'$like':'%'+_0x1ad1e3[_0x3223('0x2d')][_0x3223('0x39')]+'%'};return _0x4f06b4;})});}_0x4522ff=_[_0x3223('0x3a')]({},_0x4522ff,_0x1ad1e3[_0x3223('0x41')]);return _0x35b1ee[_0x3223('0x47')](_0x4522ff);}})['then'](function(_0xea676){if(_0xea676){_0x14167d=_0xea676[_0x3223('0x33')];if(!_0x1ad1e3['query'][_0x3223('0x34')]('nolimit')){_0x4522ff[_0x3223('0x1c')]=qs[_0x3223('0x1c')](_0x1ad1e3['query'][_0x3223('0x1c')]);_0x4522ff[_0x3223('0x1a')]=qs['offset'](_0x1ad1e3['query'][_0x3223('0x1a')]);}return _0x35b1ee[_0x3223('0x47')](_0x4522ff);}})[_0x3223('0x21')](function(_0x412371){if(_0x412371){return _0x412371?{'count':_0x14167d,'rows':_0x412371}:null;}})[_0x3223('0x21')](respondWithResult(_0x15ec4a,null))[_0x3223('0x3d')](handleError(_0x15ec4a,null));};exports[_0x3223('0x48')]=function(_0x4f1649,_0x2123ae,_0x1f146e){var _0xeaae40={};var _0x1168c5={};var _0x40b4c7;var _0x47999b;return db[_0x3223('0x28')]['findOne']({'where':{'id':_0x4f1649[_0x3223('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2123ae,null))[_0x3223('0x21')](function(_0x26c9ae){if(_0x26c9ae){_0x40b4c7=_0x26c9ae;_0x1168c5[_0x3223('0x2c')]=_[_0x3223('0x2e')](db[_0x3223('0x46')][_0x3223('0x29')]);_0x1168c5[_0x3223('0x2d')]=_[_0x3223('0x2e')](_0x4f1649[_0x3223('0x2d')]);_0x1168c5[_0x3223('0x2f')]=_[_0x3223('0x30')](_0x1168c5[_0x3223('0x2c')],_0x1168c5[_0x3223('0x2d')]);_0xeaae40[_0x3223('0x32')]=_[_0x3223('0x30')](_0x1168c5[_0x3223('0x2c')],qs[_0x3223('0x31')](_0x4f1649['query']['fields']));_0xeaae40[_0x3223('0x32')]=_0xeaae40[_0x3223('0x32')][_0x3223('0x33')]?_0xeaae40['attributes']:_0x1168c5[_0x3223('0x2c')];_0xeaae40[_0x3223('0x49')]=qs[_0x3223('0x36')](_0x4f1649['query'][_0x3223('0x36')]);_0xeaae40[_0x3223('0x37')]=qs[_0x3223('0x2f')](_[_0x3223('0x38')](_0x4f1649['query'],_0x1168c5[_0x3223('0x2f')]));if(_0x4f1649[_0x3223('0x2d')]['filter']){_0xeaae40[_0x3223('0x37')]=_[_0x3223('0x3a')](_0xeaae40['where'],{'$or':_[_0x3223('0x27')](_0xeaae40['attributes'],function(_0x3fff80){var _0x5c1aa6={};_0x5c1aa6[_0x3fff80]={'$like':'%'+_0x4f1649[_0x3223('0x2d')]['filter']+'%'};return _0x5c1aa6;})});}_0xeaae40=_['merge']({},_0xeaae40,_0x4f1649[_0x3223('0x41')]);return _0x40b4c7[_0x3223('0x48')](_0xeaae40);}})['then'](function(_0x2dba84){if(_0x2dba84){_0x47999b=_0x2dba84['length'];if(!_0x4f1649[_0x3223('0x2d')][_0x3223('0x34')](_0x3223('0x35'))){_0xeaae40[_0x3223('0x1c')]=qs[_0x3223('0x1c')](_0x4f1649[_0x3223('0x2d')]['limit']);_0xeaae40['offset']=qs[_0x3223('0x1a')](_0x4f1649[_0x3223('0x2d')][_0x3223('0x1a')]);}return _0x40b4c7['getSubjects'](_0xeaae40);}})[_0x3223('0x21')](function(_0x588177){if(_0x588177){return _0x588177?{'count':_0x47999b,'rows':_0x588177}:null;}})[_0x3223('0x21')](respondWithResult(_0x2123ae,null))['catch'](handleError(_0x2123ae,null));};exports[_0x3223('0x4a')]=function(_0x501bcc,_0x352d85,_0x3c4665){var _0x36982d={};var _0x508600={};var _0x4a4290;var _0x4fa7d8;return db[_0x3223('0x28')][_0x3223('0x45')]({'where':{'id':_0x501bcc[_0x3223('0x3f')]['id']}})['then'](handleEntityNotFound(_0x352d85,null))[_0x3223('0x21')](function(_0x551302){if(_0x551302){_0x4a4290=_0x551302;_0x508600[_0x3223('0x2c')]=_[_0x3223('0x2e')](db['Dynamics365Field']['rawAttributes']);_0x508600[_0x3223('0x2d')]=_[_0x3223('0x2e')](_0x501bcc[_0x3223('0x2d')]);_0x508600[_0x3223('0x2f')]=_[_0x3223('0x30')](_0x508600[_0x3223('0x2c')],_0x508600[_0x3223('0x2d')]);_0x36982d[_0x3223('0x32')]=_['intersection'](_0x508600[_0x3223('0x2c')],qs['fields'](_0x501bcc[_0x3223('0x2d')]['fields']));_0x36982d[_0x3223('0x32')]=_0x36982d['attributes']['length']?_0x36982d[_0x3223('0x32')]:_0x508600[_0x3223('0x2c')];_0x36982d['order']=qs['sort'](_0x501bcc[_0x3223('0x2d')][_0x3223('0x36')]);_0x36982d[_0x3223('0x37')]=qs[_0x3223('0x2f')](_['pick'](_0x501bcc[_0x3223('0x2d')],_0x508600[_0x3223('0x2f')]));if(_0x501bcc['query'][_0x3223('0x39')]){_0x36982d[_0x3223('0x37')]=_[_0x3223('0x3a')](_0x36982d[_0x3223('0x37')],{'$or':_[_0x3223('0x27')](_0x36982d[_0x3223('0x32')],function(_0x3ed51f){var _0x41adde={};_0x41adde[_0x3ed51f]={'$like':'%'+_0x501bcc[_0x3223('0x2d')][_0x3223('0x39')]+'%'};return _0x41adde;})});}_0x36982d=_[_0x3223('0x3a')]({},_0x36982d,_0x501bcc[_0x3223('0x41')]);return _0x4a4290[_0x3223('0x4a')](_0x36982d);}})[_0x3223('0x21')](function(_0x30e52f){if(_0x30e52f){_0x4fa7d8=_0x30e52f[_0x3223('0x33')];if(!_0x501bcc[_0x3223('0x2d')][_0x3223('0x34')](_0x3223('0x35'))){_0x36982d[_0x3223('0x1c')]=qs[_0x3223('0x1c')](_0x501bcc['query'][_0x3223('0x1c')]);_0x36982d['offset']=qs[_0x3223('0x1a')](_0x501bcc[_0x3223('0x2d')]['offset']);}return _0x4a4290[_0x3223('0x4a')](_0x36982d);}})[_0x3223('0x21')](function(_0x48b3bf){if(_0x48b3bf){return _0x48b3bf?{'count':_0x4fa7d8,'rows':_0x48b3bf}:null;}})[_0x3223('0x21')](respondWithResult(_0x352d85,null))[_0x3223('0x3d')](handleError(_0x352d85,null));};
\ No newline at end of file
+var _0x2fef=['where','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','getFields','findOne','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','map','Dynamics365Configuration','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter'];(function(_0x5e3701,_0x596265){var _0x345dcf=function(_0x5eb12a){while(--_0x5eb12a){_0x5e3701['push'](_0x5e3701['shift']());}};_0x345dcf(++_0x596265);}(_0x2fef,0x143));var _0xf2fe=function(_0x3f25b2,_0x412bd4){_0x3f25b2=_0x3f25b2-0x0;var _0xd8caeb=_0x2fef[_0x3f25b2];return _0xd8caeb;};'use strict';var emlformat=require(_0xf2fe('0x0'));var rimraf=require(_0xf2fe('0x1'));var zipdir=require(_0xf2fe('0x2'));var jsonpatch=require(_0xf2fe('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf2fe('0x4'));var Mustache=require('mustache');var util=require(_0xf2fe('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xf2fe('0x6'));var ejs=require(_0xf2fe('0x7'));var fs=require('fs');var fs_extra=require(_0xf2fe('0x8'));var _=require(_0xf2fe('0x9'));var squel=require(_0xf2fe('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf2fe('0xb'));var toCsv=require(_0xf2fe('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf2fe('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xf2fe('0xd'));var as=require(_0xf2fe('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2fe('0xf'))(_0xf2fe('0x10'));var utils=require(_0xf2fe('0x11'));var config=require(_0xf2fe('0x12'));var licenseUtil=require(_0xf2fe('0x13'));var db=require(_0xf2fe('0x14'))['db'];function respondWithStatusCode(_0x149a91,_0x167a51){_0x167a51=_0x167a51||0xcc;return function(_0x1f7470){if(_0x1f7470){return _0x149a91[_0xf2fe('0x15')](_0x167a51);}return _0x149a91[_0xf2fe('0x16')](_0x167a51)[_0xf2fe('0x17')]();};}function respondWithResult(_0x3cdf61,_0x462b90){_0x462b90=_0x462b90||0xc8;return function(_0x2a5608){if(_0x2a5608){return _0x3cdf61['status'](_0x462b90)['json'](_0x2a5608);}};}function respondWithFilteredResult(_0x57d574,_0x4c136e){return function(_0x2bebd1){if(_0x2bebd1){var _0x4474ef=typeof _0x4c136e[_0xf2fe('0x18')]==='undefined'&&typeof _0x4c136e[_0xf2fe('0x19')]===_0xf2fe('0x1a');var _0x73d8f8=_0x2bebd1[_0xf2fe('0x1b')];var _0x1af2df=_0x4474ef?0x0:_0x4c136e[_0xf2fe('0x18')];var _0x3fce43=_0x4474ef?_0x2bebd1['count']:_0x4c136e['offset']+_0x4c136e[_0xf2fe('0x19')];var _0x44b5dd;if(_0x3fce43>=_0x73d8f8){_0x3fce43=_0x73d8f8;_0x44b5dd=0xc8;}else{_0x44b5dd=0xce;}_0x57d574['status'](_0x44b5dd);return _0x57d574['set'](_0xf2fe('0x1c'),_0x1af2df+'-'+_0x3fce43+'/'+_0x73d8f8)[_0xf2fe('0x1d')](_0x2bebd1);}return null;};}function patchUpdates(_0x512808){return function(_0x166c16){try{jsonpatch[_0xf2fe('0x1e')](_0x166c16,_0x512808,!![]);}catch(_0x5a16cc){return BPromise[_0xf2fe('0x1f')](_0x5a16cc);}return _0x166c16[_0xf2fe('0x20')]();};}function saveUpdates(_0x43531d,_0x105d55){return function(_0x2928db){if(_0x2928db){return _0x2928db[_0xf2fe('0x21')](_0x43531d)[_0xf2fe('0x22')](function(_0x118c89){return _0x118c89;});}return null;};}function removeEntity(_0x27b460,_0x53b1d4){return function(_0x13eb69){if(_0x13eb69){return _0x13eb69[_0xf2fe('0x23')]()['then'](function(){_0x27b460[_0xf2fe('0x16')](0xcc)[_0xf2fe('0x17')]();});}};}function handleEntityNotFound(_0x55b2e0,_0x10c463){return function(_0x142a51){if(!_0x142a51){_0x55b2e0[_0xf2fe('0x15')](0x194);}return _0x142a51;};}function handleError(_0x16644d,_0x42c122){_0x42c122=_0x42c122||0x1f4;return function(_0x45887a){logger['error'](_0x45887a[_0xf2fe('0x24')]);if(_0x45887a['name']){delete _0x45887a[_0xf2fe('0x25')];}_0x16644d[_0xf2fe('0x16')](_0x42c122)['send'](_0x45887a);};}exports['index']=function(_0x116da5,_0x5b1797){var _0x7f144e={},_0x3320f0={},_0x3beec8={'count':0x0,'rows':[]};var _0x36a83d=_[_0xf2fe('0x26')](db[_0xf2fe('0x27')][_0xf2fe('0x28')],function(_0x20854e){return{'name':_0x20854e[_0xf2fe('0x29')],'type':_0x20854e[_0xf2fe('0x2a')]['key']};});_0x3320f0[_0xf2fe('0x2b')]=_[_0xf2fe('0x26')](_0x36a83d,_0xf2fe('0x25'));_0x3320f0[_0xf2fe('0x2c')]=_[_0xf2fe('0x2d')](_0x116da5[_0xf2fe('0x2c')]);_0x3320f0[_0xf2fe('0x2e')]=_['intersection'](_0x3320f0[_0xf2fe('0x2b')],_0x3320f0['query']);_0x7f144e[_0xf2fe('0x2f')]=_[_0xf2fe('0x30')](_0x3320f0['model'],qs[_0xf2fe('0x31')](_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x31')]));_0x7f144e[_0xf2fe('0x2f')]=_0x7f144e[_0xf2fe('0x2f')][_0xf2fe('0x32')]?_0x7f144e[_0xf2fe('0x2f')]:_0x3320f0[_0xf2fe('0x2b')];if(!_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x33')](_0xf2fe('0x34'))){_0x7f144e['limit']=qs[_0xf2fe('0x19')](_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x19')]);_0x7f144e[_0xf2fe('0x18')]=qs[_0xf2fe('0x18')](_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x18')]);}_0x7f144e[_0xf2fe('0x35')]=qs[_0xf2fe('0x36')](_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x36')]);_0x7f144e['where']=qs[_0xf2fe('0x2e')](_[_0xf2fe('0x37')](_0x116da5[_0xf2fe('0x2c')],_0x3320f0[_0xf2fe('0x2e')]),_0x36a83d);if(_0x116da5[_0xf2fe('0x2c')][_0xf2fe('0x38')]){_0x7f144e[_0xf2fe('0x39')]=_['merge'](_0x7f144e[_0xf2fe('0x39')],{'$or':_[_0xf2fe('0x26')](_0x36a83d,function(_0x21448d){if(_0x21448d[_0xf2fe('0x2a')]!==_0xf2fe('0x3a')){var _0xe93151={};_0xe93151[_0x21448d[_0xf2fe('0x25')]]={'$like':'%'+_0x116da5['query'][_0xf2fe('0x38')]+'%'};return _0xe93151;}})});}_0x7f144e=_[_0xf2fe('0x3b')]({},_0x7f144e,_0x116da5[_0xf2fe('0x3c')]);var _0x27d813={'where':_0x7f144e['where']};return db[_0xf2fe('0x27')][_0xf2fe('0x1b')](_0x27d813)[_0xf2fe('0x22')](function(_0x3c95ed){_0x3beec8['count']=_0x3c95ed;if(_0x116da5[_0xf2fe('0x2c')]['includeAll']){_0x7f144e[_0xf2fe('0x3d')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0xf2fe('0x3e')](_0x7f144e);})[_0xf2fe('0x22')](function(_0x3e7116){_0x3beec8[_0xf2fe('0x3f')]=_0x3e7116;return _0x3beec8;})[_0xf2fe('0x22')](respondWithFilteredResult(_0x5b1797,_0x7f144e))[_0xf2fe('0x40')](handleError(_0x5b1797,null));};exports[_0xf2fe('0x41')]=function(_0xa187fd,_0x1ec3db){var _0x1950d6={'raw':![],'where':{'id':_0xa187fd['params']['id']}},_0x164075={};_0x164075[_0xf2fe('0x2b')]=_['keys'](db[_0xf2fe('0x27')]['rawAttributes']);_0x164075['query']=_[_0xf2fe('0x2d')](_0xa187fd[_0xf2fe('0x2c')]);_0x164075[_0xf2fe('0x2e')]=_['intersection'](_0x164075[_0xf2fe('0x2b')],_0x164075['query']);_0x1950d6['attributes']=_[_0xf2fe('0x30')](_0x164075[_0xf2fe('0x2b')],qs[_0xf2fe('0x31')](_0xa187fd[_0xf2fe('0x2c')][_0xf2fe('0x31')]));_0x1950d6[_0xf2fe('0x2f')]=_0x1950d6['attributes'][_0xf2fe('0x32')]?_0x1950d6[_0xf2fe('0x2f')]:_0x164075['model'];if(_0xa187fd['query'][_0xf2fe('0x42')]){_0x1950d6[_0xf2fe('0x3d')]=[{'all':!![]}];}_0x1950d6=_[_0xf2fe('0x3b')]({},_0x1950d6,_0xa187fd[_0xf2fe('0x3c')]);return db[_0xf2fe('0x27')][_0xf2fe('0x43')](_0x1950d6)[_0xf2fe('0x22')](handleEntityNotFound(_0x1ec3db,null))[_0xf2fe('0x22')](respondWithResult(_0x1ec3db,null))['catch'](handleError(_0x1ec3db,null));};exports[_0xf2fe('0x44')]=function(_0x15591e,_0x5d48d3){return db[_0xf2fe('0x27')][_0xf2fe('0x44')](_0x15591e['body'],{})[_0xf2fe('0x22')](respondWithResult(_0x5d48d3,0xc9))[_0xf2fe('0x40')](handleError(_0x5d48d3,null));};exports[_0xf2fe('0x21')]=function(_0x23585f,_0x2a0355){if(_0x23585f[_0xf2fe('0x45')]['id']){delete _0x23585f['body']['id'];}return db[_0xf2fe('0x27')][_0xf2fe('0x43')]({'where':{'id':_0x23585f[_0xf2fe('0x46')]['id']}})[_0xf2fe('0x22')](handleEntityNotFound(_0x2a0355,null))[_0xf2fe('0x22')](saveUpdates(_0x23585f[_0xf2fe('0x45')],null))['then'](respondWithResult(_0x2a0355,null))['catch'](handleError(_0x2a0355,null));};exports[_0xf2fe('0x23')]=function(_0x2fb110,_0x837c88){return db['Dynamics365Configuration'][_0xf2fe('0x43')]({'where':{'id':_0x2fb110[_0xf2fe('0x46')]['id']}})['then'](handleEntityNotFound(_0x837c88,null))[_0xf2fe('0x22')](removeEntity(_0x837c88,null))[_0xf2fe('0x40')](handleError(_0x837c88,null));};exports[_0xf2fe('0x47')]=function(_0x4bf321,_0x1f8560,_0x5b0225){var _0x574f57={};var _0x1985f8={};var _0x1daeba;var _0x24cc7b;return db['Dynamics365Configuration'][_0xf2fe('0x48')]({'where':{'id':_0x4bf321['params']['id']}})['then'](handleEntityNotFound(_0x1f8560,null))[_0xf2fe('0x22')](function(_0x3b7a39){if(_0x3b7a39){_0x1daeba=_0x3b7a39;_0x1985f8['model']=_[_0xf2fe('0x2d')](db['Dynamics365Field'][_0xf2fe('0x28')]);_0x1985f8['query']=_[_0xf2fe('0x2d')](_0x4bf321[_0xf2fe('0x2c')]);_0x1985f8[_0xf2fe('0x2e')]=_[_0xf2fe('0x30')](_0x1985f8[_0xf2fe('0x2b')],_0x1985f8['query']);_0x574f57['attributes']=_['intersection'](_0x1985f8[_0xf2fe('0x2b')],qs['fields'](_0x4bf321[_0xf2fe('0x2c')][_0xf2fe('0x31')]));_0x574f57['attributes']=_0x574f57[_0xf2fe('0x2f')][_0xf2fe('0x32')]?_0x574f57[_0xf2fe('0x2f')]:_0x1985f8[_0xf2fe('0x2b')];_0x574f57[_0xf2fe('0x35')]=qs[_0xf2fe('0x36')](_0x4bf321[_0xf2fe('0x2c')]['sort']);_0x574f57[_0xf2fe('0x39')]=qs['filters'](_[_0xf2fe('0x37')](_0x4bf321[_0xf2fe('0x2c')],_0x1985f8[_0xf2fe('0x2e')]));if(_0x4bf321[_0xf2fe('0x2c')][_0xf2fe('0x38')]){_0x574f57['where']=_[_0xf2fe('0x3b')](_0x574f57[_0xf2fe('0x39')],{'$or':_[_0xf2fe('0x26')](_0x574f57[_0xf2fe('0x2f')],function(_0x379b4f){var _0x3e4ec6={};_0x3e4ec6[_0x379b4f]={'$like':'%'+_0x4bf321['query']['filter']+'%'};return _0x3e4ec6;})});}_0x574f57=_['merge']({},_0x574f57,_0x4bf321[_0xf2fe('0x3c')]);return _0x1daeba[_0xf2fe('0x47')](_0x574f57);}})['then'](function(_0x5597ba){if(_0x5597ba){_0x24cc7b=_0x5597ba[_0xf2fe('0x32')];if(!_0x4bf321[_0xf2fe('0x2c')]['hasOwnProperty']('nolimit')){_0x574f57[_0xf2fe('0x19')]=qs[_0xf2fe('0x19')](_0x4bf321[_0xf2fe('0x2c')][_0xf2fe('0x19')]);_0x574f57['offset']=qs['offset'](_0x4bf321[_0xf2fe('0x2c')][_0xf2fe('0x18')]);}return _0x1daeba['getFields'](_0x574f57);}})[_0xf2fe('0x22')](function(_0x26d9ff){if(_0x26d9ff){return _0x26d9ff?{'count':_0x24cc7b,'rows':_0x26d9ff}:null;}})[_0xf2fe('0x22')](respondWithResult(_0x1f8560,null))[_0xf2fe('0x40')](handleError(_0x1f8560,null));};exports[_0xf2fe('0x49')]=function(_0x3286eb,_0x2c05f4,_0x3cdd1f){var _0x3f95c3={};var _0x567636={};var _0x42402e;var _0x3cf430;return db['Dynamics365Configuration'][_0xf2fe('0x48')]({'where':{'id':_0x3286eb[_0xf2fe('0x46')]['id']}})[_0xf2fe('0x22')](handleEntityNotFound(_0x2c05f4,null))['then'](function(_0x5bf376){if(_0x5bf376){_0x42402e=_0x5bf376;_0x567636[_0xf2fe('0x2b')]=_['keys'](db[_0xf2fe('0x4a')][_0xf2fe('0x28')]);_0x567636['query']=_[_0xf2fe('0x2d')](_0x3286eb[_0xf2fe('0x2c')]);_0x567636[_0xf2fe('0x2e')]=_['intersection'](_0x567636[_0xf2fe('0x2b')],_0x567636[_0xf2fe('0x2c')]);_0x3f95c3[_0xf2fe('0x2f')]=_[_0xf2fe('0x30')](_0x567636[_0xf2fe('0x2b')],qs['fields'](_0x3286eb[_0xf2fe('0x2c')][_0xf2fe('0x31')]));_0x3f95c3[_0xf2fe('0x2f')]=_0x3f95c3[_0xf2fe('0x2f')][_0xf2fe('0x32')]?_0x3f95c3['attributes']:_0x567636[_0xf2fe('0x2b')];_0x3f95c3[_0xf2fe('0x35')]=qs['sort'](_0x3286eb[_0xf2fe('0x2c')][_0xf2fe('0x36')]);_0x3f95c3[_0xf2fe('0x39')]=qs[_0xf2fe('0x2e')](_[_0xf2fe('0x37')](_0x3286eb[_0xf2fe('0x2c')],_0x567636[_0xf2fe('0x2e')]));if(_0x3286eb[_0xf2fe('0x2c')]['filter']){_0x3f95c3['where']=_[_0xf2fe('0x3b')](_0x3f95c3[_0xf2fe('0x39')],{'$or':_[_0xf2fe('0x26')](_0x3f95c3[_0xf2fe('0x2f')],function(_0x38b0ad){var _0x81256b={};_0x81256b[_0x38b0ad]={'$like':'%'+_0x3286eb[_0xf2fe('0x2c')][_0xf2fe('0x38')]+'%'};return _0x81256b;})});}_0x3f95c3=_['merge']({},_0x3f95c3,_0x3286eb[_0xf2fe('0x3c')]);return _0x42402e[_0xf2fe('0x49')](_0x3f95c3);}})[_0xf2fe('0x22')](function(_0x4e293c){if(_0x4e293c){_0x3cf430=_0x4e293c[_0xf2fe('0x32')];if(!_0x3286eb[_0xf2fe('0x2c')][_0xf2fe('0x33')]('nolimit')){_0x3f95c3[_0xf2fe('0x19')]=qs[_0xf2fe('0x19')](_0x3286eb[_0xf2fe('0x2c')]['limit']);_0x3f95c3[_0xf2fe('0x18')]=qs[_0xf2fe('0x18')](_0x3286eb[_0xf2fe('0x2c')][_0xf2fe('0x18')]);}return _0x42402e[_0xf2fe('0x49')](_0x3f95c3);}})['then'](function(_0x3b363a){if(_0x3b363a){return _0x3b363a?{'count':_0x3cf430,'rows':_0x3b363a}:null;}})[_0xf2fe('0x22')](respondWithResult(_0x2c05f4,null))[_0xf2fe('0x40')](handleError(_0x2c05f4,null));};exports[_0xf2fe('0x4b')]=function(_0x2bcefd,_0x4bb2c4,_0x160d80){var _0x57dfa4={};var _0x4cf1fe={};var _0x14563c;var _0x31afc4;return db[_0xf2fe('0x27')][_0xf2fe('0x48')]({'where':{'id':_0x2bcefd[_0xf2fe('0x46')]['id']}})[_0xf2fe('0x22')](handleEntityNotFound(_0x4bb2c4,null))['then'](function(_0x45faca){if(_0x45faca){_0x14563c=_0x45faca;_0x4cf1fe[_0xf2fe('0x2b')]=_[_0xf2fe('0x2d')](db['Dynamics365Field'][_0xf2fe('0x28')]);_0x4cf1fe['query']=_['keys'](_0x2bcefd['query']);_0x4cf1fe[_0xf2fe('0x2e')]=_[_0xf2fe('0x30')](_0x4cf1fe[_0xf2fe('0x2b')],_0x4cf1fe['query']);_0x57dfa4['attributes']=_['intersection'](_0x4cf1fe[_0xf2fe('0x2b')],qs['fields'](_0x2bcefd['query'][_0xf2fe('0x31')]));_0x57dfa4[_0xf2fe('0x2f')]=_0x57dfa4['attributes'][_0xf2fe('0x32')]?_0x57dfa4['attributes']:_0x4cf1fe['model'];_0x57dfa4[_0xf2fe('0x35')]=qs[_0xf2fe('0x36')](_0x2bcefd[_0xf2fe('0x2c')][_0xf2fe('0x36')]);_0x57dfa4[_0xf2fe('0x39')]=qs[_0xf2fe('0x2e')](_[_0xf2fe('0x37')](_0x2bcefd[_0xf2fe('0x2c')],_0x4cf1fe[_0xf2fe('0x2e')]));if(_0x2bcefd[_0xf2fe('0x2c')][_0xf2fe('0x38')]){_0x57dfa4['where']=_[_0xf2fe('0x3b')](_0x57dfa4['where'],{'$or':_[_0xf2fe('0x26')](_0x57dfa4[_0xf2fe('0x2f')],function(_0x85ad38){var _0x199de1={};_0x199de1[_0x85ad38]={'$like':'%'+_0x2bcefd[_0xf2fe('0x2c')][_0xf2fe('0x38')]+'%'};return _0x199de1;})});}_0x57dfa4=_[_0xf2fe('0x3b')]({},_0x57dfa4,_0x2bcefd['options']);return _0x14563c['getDescriptions'](_0x57dfa4);}})[_0xf2fe('0x22')](function(_0x19e304){if(_0x19e304){_0x31afc4=_0x19e304[_0xf2fe('0x32')];if(!_0x2bcefd[_0xf2fe('0x2c')][_0xf2fe('0x33')]('nolimit')){_0x57dfa4[_0xf2fe('0x19')]=qs['limit'](_0x2bcefd[_0xf2fe('0x2c')]['limit']);_0x57dfa4[_0xf2fe('0x18')]=qs[_0xf2fe('0x18')](_0x2bcefd[_0xf2fe('0x2c')][_0xf2fe('0x18')]);}return _0x14563c['getDescriptions'](_0x57dfa4);}})[_0xf2fe('0x22')](function(_0x3cfdcb){if(_0x3cfdcb){return _0x3cfdcb?{'count':_0x31afc4,'rows':_0x3cfdcb}:null;}})[_0xf2fe('0x22')](respondWithResult(_0x4bb2c4,null))[_0xf2fe('0x40')](handleError(_0x4bb2c4,null));};
\ No newline at end of file
index e79b703..28911c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define'];(function(_0x50bf00,_0x19f221){var _0x364cae=function(_0xfc90c2){while(--_0xfc90c2){_0x50bf00['push'](_0x50bf00['shift']());}};_0x364cae(++_0x19f221);}(_0xf109,0xce));var _0x9f10=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xf109[_0x2adbeb];return _0x5e18a6;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d6=['path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x3cd277,_0x4c167e){var _0x1453de=function(_0x23d80c){while(--_0x23d80c){_0x3cd277['push'](_0x3cd277['shift']());}};_0x1453de(++_0x4c167e);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x3a286e,_0x59dc9f){_0x3a286e=_0x3a286e-0x0;var _0x4bc5ba=_0xd6d6[_0x3a286e];return _0x4bc5ba;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var logger=require(_0x6d6d('0x2'))(_0x6d6d('0x3'));var moment=require('moment');var BPromise=require(_0x6d6d('0x4'));var rp=require(_0x6d6d('0x5'));var fs=require('fs');var path=require(_0x6d6d('0x6'));var rimraf=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var attributes=require(_0x6d6d('0x9'));module[_0x6d6d('0xa')]=function(_0x5702dc,_0x210ff7){return _0x5702dc[_0x6d6d('0xb')](_0x6d6d('0xc'),attributes,{'tableName':_0x6d6d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c6506f..4a42244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3460=['rpc','client','http','info','request\x20sent','debug','stringify','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x371a5f,_0x1b52e1){var _0xa79760=function(_0x2361d9){while(--_0x2361d9){_0x371a5f['push'](_0x371a5f['shift']());}};_0xa79760(++_0x1b52e1);}(_0x3460,0x161));var _0x0346=function(_0x16856d,_0xc34f36){_0x16856d=_0x16856d-0x0;var _0x46c86b=_0x3460[_0x16856d];return _0x46c86b;};'use strict';var _=require(_0x0346('0x0'));var util=require(_0x0346('0x1'));var moment=require(_0x0346('0x2'));var BPromise=require(_0x0346('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0346('0x4'));var db=require(_0x0346('0x5'))['db'];var utils=require(_0x0346('0x6'));var logger=require('../../config/logger')(_0x0346('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0346('0x8')][_0x0346('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52ec3b,_0x2b3faa,_0x5063ef){return new BPromise(function(_0x27e707,_0x552724){return client['request'](_0x52ec3b,_0x5063ef)['then'](function(_0x53ab2f){logger[_0x0346('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2b3faa,_0x0346('0xb'));logger[_0x0346('0xc')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x2b3faa,_0x0346('0xb'),JSON[_0x0346('0xd')](_0x53ab2f));if(_0x53ab2f['error']){if(_0x53ab2f[_0x0346('0xe')][_0x0346('0xf')]===0x1f4){logger[_0x0346('0xe')](_0x0346('0x10'),_0x2b3faa,_0x53ab2f[_0x0346('0xe')]['message']);return _0x552724(_0x53ab2f[_0x0346('0xe')]['message']);}logger['error'](_0x0346('0x10'),_0x2b3faa,_0x53ab2f[_0x0346('0xe')][_0x0346('0x11')]);return _0x27e707(_0x53ab2f[_0x0346('0xe')][_0x0346('0x11')]);}else{logger[_0x0346('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2b3faa,_0x0346('0xb'));_0x27e707(_0x53ab2f[_0x0346('0x12')]['message']);}})[_0x0346('0x13')](function(_0x5ad7ed){logger[_0x0346('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2b3faa,_0x5ad7ed);_0x552724(_0x5ad7ed);});});}
\ No newline at end of file
+var _0x11c6=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','result','catch','util'];(function(_0xae5931,_0x461590){var _0x573eab=function(_0x3913a5){while(--_0x3913a5){_0xae5931['push'](_0xae5931['shift']());}};_0x573eab(++_0x461590);}(_0x11c6,0x83));var _0x611c=function(_0x274939,_0x2a2cb8){_0x274939=_0x274939-0x0;var _0x28478e=_0x11c6[_0x274939];return _0x28478e;};'use strict';var _=require('lodash');var util=require(_0x611c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x611c('0x1'));var fs=require('fs');var Redis=require(_0x611c('0x2'));var db=require(_0x611c('0x3'))['db'];var utils=require(_0x611c('0x4'));var logger=require('../../config/logger')(_0x611c('0x5'));var config=require(_0x611c('0x6'));var jayson=require(_0x611c('0x7'));var client=jayson[_0x611c('0x8')][_0x611c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e7458,_0x3dd98c,_0x461c3c){return new BPromise(function(_0x25b0f9,_0x1d0097){return client[_0x611c('0xa')](_0x5e7458,_0x461c3c)[_0x611c('0xb')](function(_0x2e3786){logger[_0x611c('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3dd98c,_0x611c('0xd'));logger['debug'](_0x611c('0xe'),_0x3dd98c,'request\x20sent',JSON[_0x611c('0xf')](_0x2e3786));if(_0x2e3786[_0x611c('0x10')]){if(_0x2e3786[_0x611c('0x10')][_0x611c('0x11')]===0x1f4){logger[_0x611c('0x10')](_0x611c('0x12'),_0x3dd98c,_0x2e3786[_0x611c('0x10')]['message']);return _0x1d0097(_0x2e3786[_0x611c('0x10')][_0x611c('0x13')]);}logger[_0x611c('0x10')](_0x611c('0x12'),_0x3dd98c,_0x2e3786['error'][_0x611c('0x13')]);return _0x25b0f9(_0x2e3786[_0x611c('0x10')][_0x611c('0x13')]);}else{logger[_0x611c('0xc')](_0x611c('0x12'),_0x3dd98c,_0x611c('0xd'));_0x25b0f9(_0x2e3786[_0x611c('0x14')]['message']);}})[_0x611c('0x15')](function(_0xb12c3d){logger[_0x611c('0x10')](_0x611c('0x12'),_0x3dd98c,_0xb12c3d);_0x1d0097(_0xb12c3d);});});}
\ No newline at end of file
index 601d810..f0ed16b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa30=['create','put','update','delete','destroy','exports','util','express','Router','../../components/auth/service','../../config/environment','./intDynamics365Field.controller','get','index','/:id','isAuthenticated','post'];(function(_0x5b26b3,_0x3a0b79){var _0x3f898c=function(_0x3b3485){while(--_0x3b3485){_0x5b26b3['push'](_0x5b26b3['shift']());}};_0x3f898c(++_0x3a0b79);}(_0xfa30,0x1e2));var _0x0fa3=function(_0x1022da,_0x36943e){_0x1022da=_0x1022da-0x0;var _0xf92d2e=_0xfa30[_0x1022da];return _0xf92d2e;};'use strict';var multer=require('multer');var util=require(_0x0fa3('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0fa3('0x1'));var router=express[_0x0fa3('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0fa3('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x0fa3('0x4'));var controller=require(_0x0fa3('0x5'));router[_0x0fa3('0x6')]('/',auth['isAuthenticated'](),controller[_0x0fa3('0x7')]);router[_0x0fa3('0x6')](_0x0fa3('0x8'),auth[_0x0fa3('0x9')](),controller['show']);router[_0x0fa3('0xa')]('/',auth['isAuthenticated'](),controller[_0x0fa3('0xb')]);router[_0x0fa3('0xc')](_0x0fa3('0x8'),auth[_0x0fa3('0x9')](),controller[_0x0fa3('0xd')]);router[_0x0fa3('0xe')](_0x0fa3('0x8'),auth['isAuthenticated'](),controller[_0x0fa3('0xf')]);module[_0x0fa3('0x10')]=router;
\ No newline at end of file
+var _0xb8f4=['isAuthenticated','index','get','/:id','show','post','create','put','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x12f9e3,_0x3fadc1){var _0x2de0c8=function(_0x31b5c5){while(--_0x31b5c5){_0x12f9e3['push'](_0x12f9e3['shift']());}};_0x2de0c8(++_0x3fadc1);}(_0xb8f4,0x13d));var _0x4b8f=function(_0x2f0821,_0x474cd4){_0x2f0821=_0x2f0821-0x0;var _0x29d867=_0xb8f4[_0x2f0821];return _0x29d867;};'use strict';var multer=require(_0x4b8f('0x0'));var util=require('util');var path=require(_0x4b8f('0x1'));var timeout=require('connect-timeout');var express=require(_0x4b8f('0x2'));var router=express['Router']();var fs_extra=require(_0x4b8f('0x3'));var auth=require(_0x4b8f('0x4'));var interaction=require(_0x4b8f('0x5'));var config=require(_0x4b8f('0x6'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x4b8f('0x7')](),controller[_0x4b8f('0x8')]);router[_0x4b8f('0x9')](_0x4b8f('0xa'),auth[_0x4b8f('0x7')](),controller[_0x4b8f('0xb')]);router[_0x4b8f('0xc')]('/',auth[_0x4b8f('0x7')](),controller[_0x4b8f('0xd')]);router[_0x4b8f('0xe')](_0x4b8f('0xa'),auth[_0x4b8f('0x7')](),controller['update']);router[_0x4b8f('0xf')](_0x4b8f('0xa'),auth[_0x4b8f('0x7')](),controller[_0x4b8f('0x10')]);module[_0x4b8f('0x11')]=router;
\ No newline at end of file
index 0995bb9..2a95398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b0=['BOOLEAN','sequelize','exports','string','variable','keyValue','picklist','STRING','ENUM','customVariable'];(function(_0x427e74,_0x14cd59){var _0x2096e9=function(_0x45bd47){while(--_0x45bd47){_0x427e74['push'](_0x427e74['shift']());}};_0x2096e9(++_0x14cd59);}(_0x58b0,0xe7));var _0x058b=function(_0x2c5d4d,_0x1d4d5e){_0x2c5d4d=_0x2c5d4d-0x0;var _0x14dfe0=_0x58b0[_0x2c5d4d];return _0x14dfe0;};'use strict';var Sequelize=require(_0x058b('0x0'));module[_0x058b('0x1')]={'type':{'type':Sequelize['ENUM'](_0x058b('0x2'),_0x058b('0x3'),'customVariable',_0x058b('0x4'),_0x058b('0x5')),'defaultValue':_0x058b('0x2')},'content':{'type':Sequelize[_0x058b('0x6')]},'key':{'type':Sequelize[_0x058b('0x6')]},'keyType':{'type':Sequelize[_0x058b('0x7')](_0x058b('0x2'),'variable',_0x058b('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x058b('0x6')]},'nameField':{'type':Sequelize[_0x058b('0x6')]},'customField':{'type':Sequelize[_0x058b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x058b('0x6')]}};
\ No newline at end of file
+var _0x8f92=['ENUM','BOOLEAN','sequelize','exports','string','variable','customVariable','keyValue','STRING'];(function(_0x12c57e,_0x26f13d){var _0x2a2488=function(_0x2e59ad){while(--_0x2e59ad){_0x12c57e['push'](_0x12c57e['shift']());}};_0x2a2488(++_0x26f13d);}(_0x8f92,0x1c4));var _0x28f9=function(_0x39736a,_0x2536df){_0x39736a=_0x39736a-0x0;var _0xc2f741=_0x8f92[_0x39736a];return _0xc2f741;};'use strict';var Sequelize=require(_0x28f9('0x0'));module[_0x28f9('0x1')]={'type':{'type':Sequelize['ENUM'](_0x28f9('0x2'),_0x28f9('0x3'),_0x28f9('0x4'),_0x28f9('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x28f9('0x6')]},'key':{'type':Sequelize[_0x28f9('0x6')]},'keyType':{'type':Sequelize[_0x28f9('0x7')](_0x28f9('0x2'),_0x28f9('0x3'),_0x28f9('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x28f9('0x6')]},'customField':{'type':Sequelize[_0x28f9('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x28f9('0x6')]}};
\ No newline at end of file
index d24bc96..eb774b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fb=['model','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','map','type','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','Dynamics365Field','rawAttributes','fieldName','query','keys','filters','intersection'];(function(_0x5e4cfd,_0x50f345){var _0x59c628=function(_0x499f93){while(--_0x499f93){_0x5e4cfd['push'](_0x5e4cfd['shift']());}};_0x59c628(++_0x50f345);}(_0x03fb,0xae));var _0xb03f=function(_0x196bbf,_0x3a0d24){_0x196bbf=_0x196bbf-0x0;var _0x155966=_0x03fb[_0x196bbf];return _0x155966;};'use strict';var emlformat=require(_0xb03f('0x0'));var rimraf=require(_0xb03f('0x1'));var zipdir=require(_0xb03f('0x2'));var jsonpatch=require(_0xb03f('0x3'));var rp=require(_0xb03f('0x4'));var moment=require(_0xb03f('0x5'));var BPromise=require(_0xb03f('0x6'));var Mustache=require(_0xb03f('0x7'));var util=require(_0xb03f('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xb03f('0x9'));var ejs=require(_0xb03f('0xa'));var fs=require('fs');var fs_extra=require(_0xb03f('0xb'));var _=require(_0xb03f('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb03f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb03f('0x9'));var querystring=require(_0xb03f('0xe'));var Papa=require('papaparse');var Redis=require(_0xb03f('0xf'));var authService=require(_0xb03f('0x10'));var qs=require(_0xb03f('0x11'));var as=require(_0xb03f('0x12'));var hardwareService=require(_0xb03f('0x13'));var logger=require(_0xb03f('0x14'))(_0xb03f('0x15'));var utils=require(_0xb03f('0x16'));var config=require(_0xb03f('0x17'));var licenseUtil=require(_0xb03f('0x18'));var db=require(_0xb03f('0x19'))['db'];function respondWithStatusCode(_0x7dceb0,_0x39c5f6){_0x39c5f6=_0x39c5f6||0xcc;return function(_0x186b11){if(_0x186b11){return _0x7dceb0['sendStatus'](_0x39c5f6);}return _0x7dceb0[_0xb03f('0x1a')](_0x39c5f6)[_0xb03f('0x1b')]();};}function respondWithResult(_0x3bc43f,_0x28d7c9){_0x28d7c9=_0x28d7c9||0xc8;return function(_0x470730){if(_0x470730){return _0x3bc43f['status'](_0x28d7c9)['json'](_0x470730);}};}function respondWithFilteredResult(_0x381f72,_0x561fb7){return function(_0x1671da){if(_0x1671da){var _0x4aee9c=typeof _0x561fb7[_0xb03f('0x1c')]===_0xb03f('0x1d')&&typeof _0x561fb7[_0xb03f('0x1e')]==='undefined';var _0x5c2425=_0x1671da[_0xb03f('0x1f')];var _0x57887f=_0x4aee9c?0x0:_0x561fb7[_0xb03f('0x1c')];var _0x4a378a=_0x4aee9c?_0x1671da['count']:_0x561fb7['offset']+_0x561fb7[_0xb03f('0x1e')];var _0x44df9c;if(_0x4a378a>=_0x5c2425){_0x4a378a=_0x5c2425;_0x44df9c=0xc8;}else{_0x44df9c=0xce;}_0x381f72[_0xb03f('0x1a')](_0x44df9c);return _0x381f72['set']('Content-Range',_0x57887f+'-'+_0x4a378a+'/'+_0x5c2425)[_0xb03f('0x20')](_0x1671da);}return null;};}function patchUpdates(_0x45b3cd){return function(_0x103adb){try{jsonpatch[_0xb03f('0x21')](_0x103adb,_0x45b3cd,!![]);}catch(_0x41f040){return BPromise[_0xb03f('0x22')](_0x41f040);}return _0x103adb[_0xb03f('0x23')]();};}function saveUpdates(_0x383a94,_0x52919b){return function(_0x3d8f0c){if(_0x3d8f0c){return _0x3d8f0c['update'](_0x383a94)[_0xb03f('0x24')](function(_0x591e7e){return _0x591e7e;});}return null;};}function removeEntity(_0x43727b,_0x16dd22){return function(_0x326db0){if(_0x326db0){return _0x326db0[_0xb03f('0x25')]()[_0xb03f('0x24')](function(){_0x43727b[_0xb03f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x563db8,_0x518051){return function(_0x598cc7){if(!_0x598cc7){_0x563db8[_0xb03f('0x26')](0x194);}return _0x598cc7;};}function handleError(_0x2fb8c3,_0x4dad32){_0x4dad32=_0x4dad32||0x1f4;return function(_0x14d903){logger[_0xb03f('0x27')](_0x14d903[_0xb03f('0x28')]);if(_0x14d903[_0xb03f('0x29')]){delete _0x14d903[_0xb03f('0x29')];}_0x2fb8c3[_0xb03f('0x1a')](_0x4dad32)[_0xb03f('0x2a')](_0x14d903);};}exports[_0xb03f('0x2b')]=function(_0x85d749,_0x11b804){var _0x5c0195={},_0x3ca6c7={},_0x1e6526={'count':0x0,'rows':[]};var _0x5404f5=_['map'](db[_0xb03f('0x2c')][_0xb03f('0x2d')],function(_0x215a61){return{'name':_0x215a61[_0xb03f('0x2e')],'type':_0x215a61['type']['key']};});_0x3ca6c7['model']=_['map'](_0x5404f5,_0xb03f('0x29'));_0x3ca6c7[_0xb03f('0x2f')]=_[_0xb03f('0x30')](_0x85d749[_0xb03f('0x2f')]);_0x3ca6c7[_0xb03f('0x31')]=_[_0xb03f('0x32')](_0x3ca6c7['model'],_0x3ca6c7[_0xb03f('0x2f')]);_0x5c0195['attributes']=_[_0xb03f('0x32')](_0x3ca6c7[_0xb03f('0x33')],qs[_0xb03f('0x34')](_0x85d749[_0xb03f('0x2f')][_0xb03f('0x34')]));_0x5c0195['attributes']=_0x5c0195[_0xb03f('0x35')][_0xb03f('0x36')]?_0x5c0195['attributes']:_0x3ca6c7['model'];if(!_0x85d749['query'][_0xb03f('0x37')]('nolimit')){_0x5c0195[_0xb03f('0x1e')]=qs[_0xb03f('0x1e')](_0x85d749[_0xb03f('0x2f')]['limit']);_0x5c0195['offset']=qs['offset'](_0x85d749[_0xb03f('0x2f')]['offset']);}_0x5c0195[_0xb03f('0x38')]=qs[_0xb03f('0x39')](_0x85d749[_0xb03f('0x2f')][_0xb03f('0x39')]);_0x5c0195[_0xb03f('0x3a')]=qs[_0xb03f('0x31')](_['pick'](_0x85d749['query'],_0x3ca6c7['filters']),_0x5404f5);if(_0x85d749['query'][_0xb03f('0x3b')]){_0x5c0195[_0xb03f('0x3a')]=_[_0xb03f('0x3c')](_0x5c0195[_0xb03f('0x3a')],{'$or':_[_0xb03f('0x3d')](_0x5404f5,function(_0x27918d){if(_0x27918d[_0xb03f('0x3e')]!=='VIRTUAL'){var _0x301b69={};_0x301b69[_0x27918d[_0xb03f('0x29')]]={'$like':'%'+_0x85d749[_0xb03f('0x2f')]['filter']+'%'};return _0x301b69;}})});}_0x5c0195=_['merge']({},_0x5c0195,_0x85d749[_0xb03f('0x3f')]);var _0x1d5321={'where':_0x5c0195[_0xb03f('0x3a')]};return db['Dynamics365Field']['count'](_0x1d5321)['then'](function(_0x491be1){_0x1e6526[_0xb03f('0x1f')]=_0x491be1;if(_0x85d749[_0xb03f('0x2f')][_0xb03f('0x40')]){_0x5c0195['include']=[{'all':!![]}];}return db[_0xb03f('0x2c')][_0xb03f('0x41')](_0x5c0195);})['then'](function(_0x4aba3b){_0x1e6526[_0xb03f('0x42')]=_0x4aba3b;return _0x1e6526;})[_0xb03f('0x24')](respondWithFilteredResult(_0x11b804,_0x5c0195))[_0xb03f('0x43')](handleError(_0x11b804,null));};exports[_0xb03f('0x44')]=function(_0xd8c5b1,_0x42c5a2){var _0x34b63c={'raw':!![],'where':{'id':_0xd8c5b1[_0xb03f('0x45')]['id']}},_0x508c5b={};_0x508c5b['model']=_[_0xb03f('0x30')](db[_0xb03f('0x2c')][_0xb03f('0x2d')]);_0x508c5b[_0xb03f('0x2f')]=_[_0xb03f('0x30')](_0xd8c5b1[_0xb03f('0x2f')]);_0x508c5b['filters']=_[_0xb03f('0x32')](_0x508c5b['model'],_0x508c5b[_0xb03f('0x2f')]);_0x34b63c[_0xb03f('0x35')]=_['intersection'](_0x508c5b[_0xb03f('0x33')],qs[_0xb03f('0x34')](_0xd8c5b1['query'][_0xb03f('0x34')]));_0x34b63c[_0xb03f('0x35')]=_0x34b63c[_0xb03f('0x35')][_0xb03f('0x36')]?_0x34b63c['attributes']:_0x508c5b[_0xb03f('0x33')];if(_0xd8c5b1[_0xb03f('0x2f')][_0xb03f('0x40')]){_0x34b63c[_0xb03f('0x46')]=[{'all':!![]}];}_0x34b63c=_[_0xb03f('0x3c')]({},_0x34b63c,_0xd8c5b1[_0xb03f('0x3f')]);return db[_0xb03f('0x2c')][_0xb03f('0x47')](_0x34b63c)['then'](handleEntityNotFound(_0x42c5a2,null))['then'](respondWithResult(_0x42c5a2,null))['catch'](handleError(_0x42c5a2,null));};exports[_0xb03f('0x48')]=function(_0x4d2706,_0x46cc44){return db[_0xb03f('0x2c')][_0xb03f('0x48')](_0x4d2706[_0xb03f('0x49')],{})['then'](respondWithResult(_0x46cc44,0xc9))['catch'](handleError(_0x46cc44,null));};exports[_0xb03f('0x4a')]=function(_0x51be3c,_0xe1c029){if(_0x51be3c[_0xb03f('0x49')]['id']){delete _0x51be3c[_0xb03f('0x49')]['id'];}return db[_0xb03f('0x2c')][_0xb03f('0x47')]({'where':{'id':_0x51be3c[_0xb03f('0x45')]['id']}})[_0xb03f('0x24')](handleEntityNotFound(_0xe1c029,null))[_0xb03f('0x24')](saveUpdates(_0x51be3c['body'],null))['then'](respondWithResult(_0xe1c029,null))[_0xb03f('0x43')](handleError(_0xe1c029,null));};exports[_0xb03f('0x25')]=function(_0x45b38b,_0x512438){return db[_0xb03f('0x2c')][_0xb03f('0x47')]({'where':{'id':_0x45b38b[_0xb03f('0x45')]['id']}})[_0xb03f('0x24')](handleEntityNotFound(_0x512438,null))[_0xb03f('0x24')](removeEntity(_0x512438,null))['catch'](handleError(_0x512438,null));};
\ No newline at end of file
+var _0xc336=['include','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','Dynamics365Field','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','rawAttributes'];(function(_0x4b2689,_0x4b4e6b){var _0x419a38=function(_0x32a57f){while(--_0x32a57f){_0x4b2689['push'](_0x4b2689['shift']());}};_0x419a38(++_0x4b4e6b);}(_0xc336,0xf0));var _0x6c33=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0xc336[_0x5d4f12];return _0x4eb577;};'use strict';var emlformat=require(_0x6c33('0x0'));var rimraf=require(_0x6c33('0x1'));var zipdir=require(_0x6c33('0x2'));var jsonpatch=require(_0x6c33('0x3'));var rp=require(_0x6c33('0x4'));var moment=require(_0x6c33('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6c33('0x6'));var util=require('util');var path=require(_0x6c33('0x7'));var sox=require(_0x6c33('0x8'));var csv=require(_0x6c33('0x9'));var ejs=require(_0x6c33('0xa'));var fs=require('fs');var fs_extra=require(_0x6c33('0xb'));var _=require('lodash');var squel=require(_0x6c33('0xc'));var crypto=require(_0x6c33('0xd'));var jsforce=require(_0x6c33('0xe'));var deskjs=require(_0x6c33('0xf'));var toCsv=require(_0x6c33('0x9'));var querystring=require(_0x6c33('0x10'));var Papa=require(_0x6c33('0x11'));var Redis=require('ioredis');var authService=require(_0x6c33('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6c33('0x13'));var hardwareService=require(_0x6c33('0x14'));var logger=require(_0x6c33('0x15'))('api');var utils=require(_0x6c33('0x16'));var config=require(_0x6c33('0x17'));var licenseUtil=require(_0x6c33('0x18'));var db=require(_0x6c33('0x19'))['db'];function respondWithStatusCode(_0x4fef1b,_0x40cc6c){_0x40cc6c=_0x40cc6c||0xcc;return function(_0x15b988){if(_0x15b988){return _0x4fef1b[_0x6c33('0x1a')](_0x40cc6c);}return _0x4fef1b['status'](_0x40cc6c)[_0x6c33('0x1b')]();};}function respondWithResult(_0x490a4a,_0xa0c17e){_0xa0c17e=_0xa0c17e||0xc8;return function(_0x211009){if(_0x211009){return _0x490a4a[_0x6c33('0x1c')](_0xa0c17e)[_0x6c33('0x1d')](_0x211009);}};}function respondWithFilteredResult(_0x5c22aa,_0x105afa){return function(_0x4e373f){if(_0x4e373f){var _0x885afd=typeof _0x105afa['offset']==='undefined'&&typeof _0x105afa['limit']===_0x6c33('0x1e');var _0x427c64=_0x4e373f[_0x6c33('0x1f')];var _0x480d27=_0x885afd?0x0:_0x105afa[_0x6c33('0x20')];var _0x219a8f=_0x885afd?_0x4e373f['count']:_0x105afa[_0x6c33('0x20')]+_0x105afa[_0x6c33('0x21')];var _0x2a4a21;if(_0x219a8f>=_0x427c64){_0x219a8f=_0x427c64;_0x2a4a21=0xc8;}else{_0x2a4a21=0xce;}_0x5c22aa['status'](_0x2a4a21);return _0x5c22aa[_0x6c33('0x22')](_0x6c33('0x23'),_0x480d27+'-'+_0x219a8f+'/'+_0x427c64)[_0x6c33('0x1d')](_0x4e373f);}return null;};}function patchUpdates(_0x594fd0){return function(_0x18ee2e){try{jsonpatch[_0x6c33('0x24')](_0x18ee2e,_0x594fd0,!![]);}catch(_0x3a8f87){return BPromise[_0x6c33('0x25')](_0x3a8f87);}return _0x18ee2e[_0x6c33('0x26')]();};}function saveUpdates(_0x449422,_0x5d6cf9){return function(_0x186f26){if(_0x186f26){return _0x186f26[_0x6c33('0x27')](_0x449422)['then'](function(_0x24c7b2){return _0x24c7b2;});}return null;};}function removeEntity(_0x2678db,_0x4ea59c){return function(_0x244bee){if(_0x244bee){return _0x244bee['destroy']()[_0x6c33('0x28')](function(){_0x2678db['status'](0xcc)[_0x6c33('0x1b')]();});}};}function handleEntityNotFound(_0x16705e,_0x458df8){return function(_0x42e13a){if(!_0x42e13a){_0x16705e[_0x6c33('0x1a')](0x194);}return _0x42e13a;};}function handleError(_0x4fd51b,_0x17eded){_0x17eded=_0x17eded||0x1f4;return function(_0x1b63b9){logger[_0x6c33('0x29')](_0x1b63b9[_0x6c33('0x2a')]);if(_0x1b63b9[_0x6c33('0x2b')]){delete _0x1b63b9[_0x6c33('0x2b')];}_0x4fd51b['status'](_0x17eded)[_0x6c33('0x2c')](_0x1b63b9);};}exports[_0x6c33('0x2d')]=function(_0x270ff8,_0x2f1a3e){var _0xd32f5a={},_0x1cddb5={},_0x107634={'count':0x0,'rows':[]};var _0x4a021b=_[_0x6c33('0x2e')](db[_0x6c33('0x2f')]['rawAttributes'],function(_0x1c2064){return{'name':_0x1c2064[_0x6c33('0x30')],'type':_0x1c2064['type'][_0x6c33('0x31')]};});_0x1cddb5[_0x6c33('0x32')]=_[_0x6c33('0x2e')](_0x4a021b,'name');_0x1cddb5[_0x6c33('0x33')]=_[_0x6c33('0x34')](_0x270ff8[_0x6c33('0x33')]);_0x1cddb5[_0x6c33('0x35')]=_[_0x6c33('0x36')](_0x1cddb5['model'],_0x1cddb5[_0x6c33('0x33')]);_0xd32f5a['attributes']=_[_0x6c33('0x36')](_0x1cddb5['model'],qs[_0x6c33('0x37')](_0x270ff8[_0x6c33('0x33')][_0x6c33('0x37')]));_0xd32f5a[_0x6c33('0x38')]=_0xd32f5a[_0x6c33('0x38')][_0x6c33('0x39')]?_0xd32f5a[_0x6c33('0x38')]:_0x1cddb5[_0x6c33('0x32')];if(!_0x270ff8[_0x6c33('0x33')]['hasOwnProperty'](_0x6c33('0x3a'))){_0xd32f5a['limit']=qs['limit'](_0x270ff8[_0x6c33('0x33')][_0x6c33('0x21')]);_0xd32f5a[_0x6c33('0x20')]=qs[_0x6c33('0x20')](_0x270ff8[_0x6c33('0x33')][_0x6c33('0x20')]);}_0xd32f5a['order']=qs[_0x6c33('0x3b')](_0x270ff8['query']['sort']);_0xd32f5a[_0x6c33('0x3c')]=qs['filters'](_['pick'](_0x270ff8[_0x6c33('0x33')],_0x1cddb5[_0x6c33('0x35')]),_0x4a021b);if(_0x270ff8[_0x6c33('0x33')][_0x6c33('0x3d')]){_0xd32f5a['where']=_['merge'](_0xd32f5a[_0x6c33('0x3c')],{'$or':_['map'](_0x4a021b,function(_0x4965b3){if(_0x4965b3[_0x6c33('0x3e')]!==_0x6c33('0x3f')){var _0x1506dc={};_0x1506dc[_0x4965b3[_0x6c33('0x2b')]]={'$like':'%'+_0x270ff8['query'][_0x6c33('0x3d')]+'%'};return _0x1506dc;}})});}_0xd32f5a=_[_0x6c33('0x40')]({},_0xd32f5a,_0x270ff8[_0x6c33('0x41')]);var _0x3e40ac={'where':_0xd32f5a[_0x6c33('0x3c')]};return db['Dynamics365Field'][_0x6c33('0x1f')](_0x3e40ac)['then'](function(_0x59dcf7){_0x107634[_0x6c33('0x1f')]=_0x59dcf7;if(_0x270ff8[_0x6c33('0x33')][_0x6c33('0x42')]){_0xd32f5a['include']=[{'all':!![]}];}return db[_0x6c33('0x2f')][_0x6c33('0x43')](_0xd32f5a);})[_0x6c33('0x28')](function(_0x496adc){_0x107634[_0x6c33('0x44')]=_0x496adc;return _0x107634;})[_0x6c33('0x28')](respondWithFilteredResult(_0x2f1a3e,_0xd32f5a))[_0x6c33('0x45')](handleError(_0x2f1a3e,null));};exports[_0x6c33('0x46')]=function(_0x5c678c,_0x25de29){var _0x1fc24a={'raw':!![],'where':{'id':_0x5c678c['params']['id']}},_0x11cf08={};_0x11cf08[_0x6c33('0x32')]=_[_0x6c33('0x34')](db[_0x6c33('0x2f')][_0x6c33('0x47')]);_0x11cf08[_0x6c33('0x33')]=_[_0x6c33('0x34')](_0x5c678c[_0x6c33('0x33')]);_0x11cf08[_0x6c33('0x35')]=_['intersection'](_0x11cf08[_0x6c33('0x32')],_0x11cf08[_0x6c33('0x33')]);_0x1fc24a[_0x6c33('0x38')]=_[_0x6c33('0x36')](_0x11cf08[_0x6c33('0x32')],qs[_0x6c33('0x37')](_0x5c678c[_0x6c33('0x33')][_0x6c33('0x37')]));_0x1fc24a[_0x6c33('0x38')]=_0x1fc24a['attributes'][_0x6c33('0x39')]?_0x1fc24a[_0x6c33('0x38')]:_0x11cf08[_0x6c33('0x32')];if(_0x5c678c[_0x6c33('0x33')]['includeAll']){_0x1fc24a[_0x6c33('0x48')]=[{'all':!![]}];}_0x1fc24a=_[_0x6c33('0x40')]({},_0x1fc24a,_0x5c678c[_0x6c33('0x41')]);return db[_0x6c33('0x2f')][_0x6c33('0x49')](_0x1fc24a)['then'](handleEntityNotFound(_0x25de29,null))[_0x6c33('0x28')](respondWithResult(_0x25de29,null))[_0x6c33('0x45')](handleError(_0x25de29,null));};exports[_0x6c33('0x4a')]=function(_0x2c453d,_0x48cdca){return db['Dynamics365Field']['create'](_0x2c453d[_0x6c33('0x4b')],{})[_0x6c33('0x28')](respondWithResult(_0x48cdca,0xc9))[_0x6c33('0x45')](handleError(_0x48cdca,null));};exports[_0x6c33('0x27')]=function(_0x47e5cf,_0x2b6ccb){if(_0x47e5cf[_0x6c33('0x4b')]['id']){delete _0x47e5cf[_0x6c33('0x4b')]['id'];}return db[_0x6c33('0x2f')][_0x6c33('0x49')]({'where':{'id':_0x47e5cf[_0x6c33('0x4c')]['id']}})[_0x6c33('0x28')](handleEntityNotFound(_0x2b6ccb,null))['then'](saveUpdates(_0x47e5cf[_0x6c33('0x4b')],null))[_0x6c33('0x28')](respondWithResult(_0x2b6ccb,null))[_0x6c33('0x45')](handleError(_0x2b6ccb,null));};exports[_0x6c33('0x4d')]=function(_0x4292ba,_0x137856){return db[_0x6c33('0x2f')][_0x6c33('0x49')]({'where':{'id':_0x4292ba['params']['id']}})[_0x6c33('0x28')](handleEntityNotFound(_0x137856,null))[_0x6c33('0x28')](removeEntity(_0x137856,null))[_0x6c33('0x45')](handleError(_0x137856,null));};
\ No newline at end of file
index f8474d8..edd8504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x868a=['bluebird','request-promise','path','../../config/environment','./intDynamics365Field.attributes','define','int_dynamics365_fields','dynamics365_unique_index','../../config/logger','api','moment'];(function(_0x546261,_0x44b70f){var _0x1c6263=function(_0x45a5de){while(--_0x45a5de){_0x546261['push'](_0x546261['shift']());}};_0x1c6263(++_0x44b70f);}(_0x868a,0x131));var _0xa868=function(_0x46b809,_0x4fecbd){_0x46b809=_0x46b809-0x0;var _0x22ed80=_0x868a[_0x46b809];return _0x22ed80;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa868('0x0'))(_0xa868('0x1'));var moment=require(_0xa868('0x2'));var BPromise=require(_0xa868('0x3'));var rp=require(_0xa868('0x4'));var fs=require('fs');var path=require(_0xa868('0x5'));var rimraf=require('rimraf');var config=require(_0xa868('0x6'));var attributes=require(_0xa868('0x7'));module['exports']=function(_0x5581af,_0x54bfa1){return _0x5581af[_0xa868('0x8')]('Dynamics365Field',attributes,{'tableName':_0xa868('0x9'),'paranoid':![],'indexes':[{'name':_0xa868('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9996=['request-promise','path','rimraf','./intDynamics365Field.attributes','exports','define','Dynamics365Field','idField','FieldId','../../config/logger','api','bluebird'];(function(_0x11b105,_0x33d4e2){var _0x9cc7f7=function(_0x24f38d){while(--_0x24f38d){_0x11b105['push'](_0x11b105['shift']());}};_0x9cc7f7(++_0x33d4e2);}(_0x9996,0x171));var _0x6999=function(_0x384dd6,_0x5ee8d1){_0x384dd6=_0x384dd6-0x0;var _0x4712df=_0x9996[_0x384dd6];return _0x4712df;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6999('0x0'))(_0x6999('0x1'));var moment=require('moment');var BPromise=require(_0x6999('0x2'));var rp=require(_0x6999('0x3'));var fs=require('fs');var path=require(_0x6999('0x4'));var rimraf=require(_0x6999('0x5'));var config=require('../../config/environment');var attributes=require(_0x6999('0x6'));module[_0x6999('0x7')]=function(_0x1f19b6,_0x595d0b){return _0x1f19b6[_0x6999('0x8')](_0x6999('0x9'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x6999('0xa'),_0x6999('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 348ef2d..5d9944d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca55=['request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x5a75f2,_0x35c25b){var _0x2cbfa9=function(_0x308d21){while(--_0x308d21){_0x5a75f2['push'](_0x5a75f2['shift']());}};_0x2cbfa9(++_0x35c25b);}(_0xca55,0x14a));var _0x5ca5=function(_0x1e47ce,_0x47bf41){_0x1e47ce=_0x1e47ce-0x0;var _0x22cdb9=_0xca55[_0x1e47ce];return _0x22cdb9;};'use strict';var _=require('lodash');var util=require(_0x5ca5('0x0'));var moment=require('moment');var BPromise=require(_0x5ca5('0x1'));var rs=require(_0x5ca5('0x2'));var fs=require('fs');var Redis=require(_0x5ca5('0x3'));var db=require(_0x5ca5('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5ca5('0x5'))(_0x5ca5('0x6'));var config=require(_0x5ca5('0x7'));var jayson=require(_0x5ca5('0x8'));var client=jayson['client'][_0x5ca5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x183bb6,_0x1fb331,_0x48cd27){return new BPromise(function(_0x446045,_0x435da5){return client[_0x5ca5('0xa')](_0x183bb6,_0x48cd27)['then'](function(_0x24586c){logger[_0x5ca5('0xb')](_0x5ca5('0xc'),_0x1fb331,_0x5ca5('0xd'));logger[_0x5ca5('0xe')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x1fb331,_0x5ca5('0xd'),JSON['stringify'](_0x24586c));if(_0x24586c[_0x5ca5('0xf')]){if(_0x24586c[_0x5ca5('0xf')][_0x5ca5('0x10')]===0x1f4){logger[_0x5ca5('0xf')](_0x5ca5('0xc'),_0x1fb331,_0x24586c['error'][_0x5ca5('0x11')]);return _0x435da5(_0x24586c[_0x5ca5('0xf')]['message']);}logger[_0x5ca5('0xf')](_0x5ca5('0xc'),_0x1fb331,_0x24586c[_0x5ca5('0xf')][_0x5ca5('0x11')]);return _0x446045(_0x24586c[_0x5ca5('0xf')][_0x5ca5('0x11')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x1fb331,'request\x20sent');_0x446045(_0x24586c[_0x5ca5('0x12')][_0x5ca5('0x11')]);}})[_0x5ca5('0x13')](function(_0xaf6e6e){logger['error'](_0x5ca5('0xc'),_0x1fb331,_0xaf6e6e);_0x435da5(_0xaf6e6e);});});}
\ No newline at end of file
+var _0xe89c=['client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2dd883,_0x5771c0){var _0x66861a=function(_0x5c5634){while(--_0x5c5634){_0x2dd883['push'](_0x2dd883['shift']());}};_0x66861a(++_0x5771c0);}(_0xe89c,0x1da));var _0xce89=function(_0x20e5f3,_0x19b034){_0x20e5f3=_0x20e5f3-0x0;var _0x2461b4=_0xe89c[_0x20e5f3];return _0x2461b4;};'use strict';var _=require(_0xce89('0x0'));var util=require(_0xce89('0x1'));var moment=require(_0xce89('0x2'));var BPromise=require(_0xce89('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce89('0x4'))['db'];var utils=require(_0xce89('0x5'));var logger=require(_0xce89('0x6'))(_0xce89('0x7'));var config=require(_0xce89('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xce89('0x9')][_0xce89('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a1669,_0x1733f8,_0xbe2bb4){return new BPromise(function(_0x17b15e,_0x53a5f8){return client[_0xce89('0xb')](_0x2a1669,_0xbe2bb4)[_0xce89('0xc')](function(_0x5c87e0){logger[_0xce89('0xd')](_0xce89('0xe'),_0x1733f8,'request\x20sent');logger[_0xce89('0xf')](_0xce89('0x10'),_0x1733f8,_0xce89('0x11'),JSON[_0xce89('0x12')](_0x5c87e0));if(_0x5c87e0[_0xce89('0x13')]){if(_0x5c87e0[_0xce89('0x13')]['code']===0x1f4){logger[_0xce89('0x13')](_0xce89('0xe'),_0x1733f8,_0x5c87e0[_0xce89('0x13')][_0xce89('0x14')]);return _0x53a5f8(_0x5c87e0[_0xce89('0x13')][_0xce89('0x14')]);}logger[_0xce89('0x13')](_0xce89('0xe'),_0x1733f8,_0x5c87e0[_0xce89('0x13')][_0xce89('0x14')]);return _0x17b15e(_0x5c87e0[_0xce89('0x13')][_0xce89('0x14')]);}else{logger[_0xce89('0xd')](_0xce89('0xe'),_0x1733f8,_0xce89('0x11'));_0x17b15e(_0x5c87e0[_0xce89('0x15')][_0xce89('0x14')]);}})[_0xce89('0x16')](function(_0x49ddb2){logger[_0xce89('0x13')](_0xce89('0xe'),_0x1733f8,_0x49ddb2);_0x53a5f8(_0x49ddb2);});});}
\ No newline at end of file
index 1b5b8ee..6d19509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c66=['show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x1db481,_0x1627b2){var _0x3db95b=function(_0x2d54e4){while(--_0x2d54e4){_0x1db481['push'](_0x1db481['shift']());}};_0x3db95b(++_0x1627b2);}(_0x7c66,0x163));var _0x67c6=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x7c66[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require(_0x67c6('0x0'));var path=require('path');var timeout=require(_0x67c6('0x1'));var express=require(_0x67c6('0x2'));var router=express[_0x67c6('0x3')]();var fs_extra=require(_0x67c6('0x4'));var auth=require(_0x67c6('0x5'));var interaction=require(_0x67c6('0x6'));var config=require(_0x67c6('0x7'));var controller=require(_0x67c6('0x8'));router[_0x67c6('0x9')]('/',auth[_0x67c6('0xa')](),controller[_0x67c6('0xb')]);router['get'](_0x67c6('0xc'),auth[_0x67c6('0xa')](),controller[_0x67c6('0xd')]);router[_0x67c6('0x9')](_0x67c6('0xe'),auth[_0x67c6('0xa')](),controller[_0x67c6('0xf')]);router['get'](_0x67c6('0x10'),auth[_0x67c6('0xa')](),controller['getFields']);router[_0x67c6('0x11')]('/',auth['isAuthenticated'](),controller[_0x67c6('0x12')]);router[_0x67c6('0x11')](_0x67c6('0xe'),auth[_0x67c6('0xa')](),controller[_0x67c6('0x13')]);router[_0x67c6('0x14')](_0x67c6('0xc'),auth[_0x67c6('0xa')](),controller[_0x67c6('0x15')]);router[_0x67c6('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x35fd=['isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get'];(function(_0x2ab831,_0x4faa9e){var _0x4f808a=function(_0x4be427){while(--_0x4be427){_0x2ab831['push'](_0x2ab831['shift']());}};_0x4f808a(++_0x4faa9e);}(_0x35fd,0xb2));var _0xd35f=function(_0x872f14,_0x4fcc16){_0x872f14=_0x872f14-0x0;var _0x670db6=_0x35fd[_0x872f14];return _0x670db6;};'use strict';var multer=require(_0xd35f('0x0'));var util=require(_0xd35f('0x1'));var path=require(_0xd35f('0x2'));var timeout=require(_0xd35f('0x3'));var express=require(_0xd35f('0x4'));var router=express[_0xd35f('0x5')]();var fs_extra=require(_0xd35f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd35f('0x7'));var config=require(_0xd35f('0x8'));var controller=require(_0xd35f('0x9'));router[_0xd35f('0xa')]('/',auth[_0xd35f('0xb')](),controller['index']);router[_0xd35f('0xa')](_0xd35f('0xc'),auth[_0xd35f('0xb')](),controller[_0xd35f('0xd')]);router['get'](_0xd35f('0xe'),auth[_0xd35f('0xb')](),controller[_0xd35f('0xf')]);router['get'](_0xd35f('0x10'),auth[_0xd35f('0xb')](),controller['getFields']);router['post']('/',auth['isAuthenticated'](),controller[_0xd35f('0x11')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller['addConfiguration']);router[_0xd35f('0x12')]('/:id',auth[_0xd35f('0xb')](),controller['update']);router['delete'](_0xd35f('0xc'),auth['isAuthenticated'](),controller[_0xd35f('0x13')]);module[_0xd35f('0x14')]=router;
\ No newline at end of file
index 7b6026c..0530b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['sequelize','STRING','username'];(function(_0x8c12ce,_0x2b4f78){var _0x50283f=function(_0x412f09){while(--_0x412f09){_0x8c12ce['push'](_0x8c12ce['shift']());}};_0x50283f(++_0x2b4f78);}(_0x430c,0x1a1));var _0xc430=function(_0x430459,_0x58519c){_0x430459=_0x430459-0x0;var _0x3a2439=_0x430c[_0x430459];return _0x3a2439;};'use strict';var Sequelize=require(_0xc430('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc430('0x1')]},'username':{'type':Sequelize[_0xc430('0x1')],'unique':_0xc430('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x3d04=['STRING','username','sequelize','exports'];(function(_0x330414,_0x4f3207){var _0x99dbff=function(_0x166f85){while(--_0x166f85){_0x330414['push'](_0x330414['shift']());}};_0x99dbff(++_0x4f3207);}(_0x3d04,0xbe));var _0x43d0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x3d04[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x43d0('0x0'));module[_0x43d0('0x1')]={'name':{'type':Sequelize[_0x43d0('0x2')]},'description':{'type':Sequelize[_0x43d0('0x2')]},'username':{'type':Sequelize[_0x43d0('0x2')],'unique':_0x43d0('0x3')},'apiKey':{'type':Sequelize[_0x43d0('0x2')]},'remoteUri':{'type':Sequelize[_0x43d0('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x43d0('0x2')],'allowNull':![]}};
\ No newline at end of file
index 1a6b552..eb2685b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb01a=['model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','toString','base64','requester','subject','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','choices','capitalize','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type'];(function(_0x4f918e,_0xcd500e){var _0x15ee0c=function(_0x1a2fb2){while(--_0x1a2fb2){_0x4f918e['push'](_0x4f918e['shift']());}};_0x15ee0c(++_0xcd500e);}(_0xb01a,0x1a1));var _0xab01=function(_0x141cdc,_0xa038e9){_0x141cdc=_0x141cdc-0x0;var _0x2d7d88=_0xb01a[_0x141cdc];return _0x2d7d88;};'use strict';var emlformat=require(_0xab01('0x0'));var rimraf=require(_0xab01('0x1'));var zipdir=require(_0xab01('0x2'));var jsonpatch=require(_0xab01('0x3'));var rp=require(_0xab01('0x4'));var moment=require(_0xab01('0x5'));var BPromise=require(_0xab01('0x6'));var Mustache=require(_0xab01('0x7'));var util=require(_0xab01('0x8'));var path=require(_0xab01('0x9'));var sox=require(_0xab01('0xa'));var csv=require(_0xab01('0xb'));var ejs=require(_0xab01('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xab01('0xd'));var squel=require(_0xab01('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab01('0xf'));var toCsv=require(_0xab01('0xb'));var querystring=require('querystring');var Papa=require(_0xab01('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xab01('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab01('0x12'));var logger=require(_0xab01('0x13'))('api');var utils=require(_0xab01('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xab01('0x15'))['db'];var integrations=require(_0xab01('0x16'));function respondWithStatusCode(_0x1ededa,_0xe9d23c){_0xe9d23c=_0xe9d23c||0xcc;return function(_0x449402){if(_0x449402){return _0x1ededa[_0xab01('0x17')](_0xe9d23c);}return _0x1ededa[_0xab01('0x18')](_0xe9d23c)[_0xab01('0x19')]();};}function respondWithResult(_0x509ceb,_0x4812c6){_0x4812c6=_0x4812c6||0xc8;return function(_0x512124){if(_0x512124){return _0x509ceb['status'](_0x4812c6)[_0xab01('0x1a')](_0x512124);}};}function respondWithFilteredResult(_0x4c0557,_0x2bfa8a){return function(_0x2d9c23){if(_0x2d9c23){var _0x26af11=typeof _0x2bfa8a[_0xab01('0x1b')]==='undefined'&&typeof _0x2bfa8a[_0xab01('0x1c')]==='undefined';var _0x2adbe5=_0x2d9c23[_0xab01('0x1d')];var _0x47e994=_0x26af11?0x0:_0x2bfa8a['offset'];var _0x22dd53=_0x26af11?_0x2d9c23[_0xab01('0x1d')]:_0x2bfa8a[_0xab01('0x1b')]+_0x2bfa8a[_0xab01('0x1c')];var _0x290d30;if(_0x22dd53>=_0x2adbe5){_0x22dd53=_0x2adbe5;_0x290d30=0xc8;}else{_0x290d30=0xce;}_0x4c0557[_0xab01('0x18')](_0x290d30);return _0x4c0557[_0xab01('0x1e')](_0xab01('0x1f'),_0x47e994+'-'+_0x22dd53+'/'+_0x2adbe5)[_0xab01('0x1a')](_0x2d9c23);}return null;};}function patchUpdates(_0x331daf){return function(_0x50d0bd){try{jsonpatch[_0xab01('0x20')](_0x50d0bd,_0x331daf,!![]);}catch(_0x80802a){return BPromise[_0xab01('0x21')](_0x80802a);}return _0x50d0bd[_0xab01('0x22')]();};}function saveUpdates(_0x405c93,_0x180344){return function(_0x380176){if(_0x380176){return _0x380176[_0xab01('0x23')](_0x405c93)['then'](function(_0x3fba2e){return _0x3fba2e;});}return null;};}function removeEntity(_0x152d5e,_0x27b430){return function(_0x343ae6){if(_0x343ae6){return _0x343ae6[_0xab01('0x24')]()[_0xab01('0x25')](function(){_0x152d5e[_0xab01('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1efebe,_0x16a719){return function(_0x2758d){if(!_0x2758d){_0x1efebe[_0xab01('0x17')](0x194);}return _0x2758d;};}function handleError(_0x27e549,_0x46088d){_0x46088d=_0x46088d||0x1f4;return function(_0x46af29){logger['error'](_0x46af29[_0xab01('0x26')]);if(_0x46af29[_0xab01('0x27')]){delete _0x46af29[_0xab01('0x27')];}_0x27e549[_0xab01('0x18')](_0x46088d)[_0xab01('0x28')](_0x46af29);};}exports[_0xab01('0x29')]=function(_0x51a927,_0x3c2474){var _0x209e10={},_0x4a22c0={},_0x65afdd={'count':0x0,'rows':[]};var _0x16cc49=_[_0xab01('0x2a')](db[_0xab01('0x2b')][_0xab01('0x2c')],function(_0x18b4de){return{'name':_0x18b4de[_0xab01('0x2d')],'type':_0x18b4de[_0xab01('0x2e')]['key']};});_0x4a22c0[_0xab01('0x2f')]=_[_0xab01('0x2a')](_0x16cc49,'name');_0x4a22c0[_0xab01('0x30')]=_[_0xab01('0x31')](_0x51a927[_0xab01('0x30')]);_0x4a22c0[_0xab01('0x32')]=_[_0xab01('0x33')](_0x4a22c0[_0xab01('0x2f')],_0x4a22c0['query']);_0x209e10[_0xab01('0x34')]=_[_0xab01('0x33')](_0x4a22c0[_0xab01('0x2f')],qs[_0xab01('0x35')](_0x51a927[_0xab01('0x30')][_0xab01('0x35')]));_0x209e10[_0xab01('0x34')]=_0x209e10['attributes']['length']?_0x209e10['attributes']:_0x4a22c0[_0xab01('0x2f')];if(!_0x51a927[_0xab01('0x30')][_0xab01('0x36')](_0xab01('0x37'))){_0x209e10[_0xab01('0x1c')]=qs[_0xab01('0x1c')](_0x51a927[_0xab01('0x30')][_0xab01('0x1c')]);_0x209e10[_0xab01('0x1b')]=qs[_0xab01('0x1b')](_0x51a927[_0xab01('0x30')][_0xab01('0x1b')]);}_0x209e10[_0xab01('0x38')]=qs[_0xab01('0x39')](_0x51a927[_0xab01('0x30')][_0xab01('0x39')]);_0x209e10['where']=qs['filters'](_[_0xab01('0x3a')](_0x51a927[_0xab01('0x30')],_0x4a22c0['filters']),_0x16cc49);if(_0x51a927[_0xab01('0x30')][_0xab01('0x3b')]){_0x209e10[_0xab01('0x3c')]=_['merge'](_0x209e10[_0xab01('0x3c')],{'$or':_['map'](_0x16cc49,function(_0x535b32){if(_0x535b32[_0xab01('0x2e')]!==_0xab01('0x3d')){var _0x595017={};_0x595017[_0x535b32[_0xab01('0x27')]]={'$like':'%'+_0x51a927[_0xab01('0x30')]['filter']+'%'};return _0x595017;}})});}_0x209e10=_[_0xab01('0x3e')]({},_0x209e10,_0x51a927[_0xab01('0x3f')]);var _0x265ec9={'where':_0x209e10[_0xab01('0x3c')]};return db[_0xab01('0x2b')][_0xab01('0x1d')](_0x265ec9)['then'](function(_0x109ad6){_0x65afdd[_0xab01('0x1d')]=_0x109ad6;if(_0x51a927[_0xab01('0x30')][_0xab01('0x40')]){_0x209e10[_0xab01('0x41')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x209e10);})['then'](function(_0x3132d5){_0x65afdd[_0xab01('0x42')]=_0x3132d5;return _0x65afdd;})['then'](respondWithFilteredResult(_0x3c2474,_0x209e10))[_0xab01('0x43')](handleError(_0x3c2474,null));};exports[_0xab01('0x44')]=function(_0x1df4d9,_0x7d039e){var _0x3ef323={'raw':![],'where':{'id':_0x1df4d9[_0xab01('0x45')]['id']}},_0x1cb057={};_0x1cb057[_0xab01('0x2f')]=_[_0xab01('0x31')](db[_0xab01('0x2b')][_0xab01('0x2c')]);_0x1cb057[_0xab01('0x30')]=_[_0xab01('0x31')](_0x1df4d9[_0xab01('0x30')]);_0x1cb057[_0xab01('0x32')]=_[_0xab01('0x33')](_0x1cb057[_0xab01('0x2f')],_0x1cb057['query']);_0x3ef323['attributes']=_[_0xab01('0x33')](_0x1cb057[_0xab01('0x2f')],qs[_0xab01('0x35')](_0x1df4d9[_0xab01('0x30')][_0xab01('0x35')]));_0x3ef323[_0xab01('0x34')]=_0x3ef323['attributes'][_0xab01('0x46')]?_0x3ef323[_0xab01('0x34')]:_0x1cb057['model'];if(_0x1df4d9[_0xab01('0x30')][_0xab01('0x40')]){_0x3ef323[_0xab01('0x41')]=[{'all':!![]}];}_0x3ef323=_['merge']({},_0x3ef323,_0x1df4d9[_0xab01('0x3f')]);return db[_0xab01('0x2b')][_0xab01('0x47')](_0x3ef323)[_0xab01('0x25')](handleEntityNotFound(_0x7d039e,null))[_0xab01('0x25')](respondWithResult(_0x7d039e,null))['catch'](handleError(_0x7d039e,null));};exports[_0xab01('0x48')]=function(_0x5e5847,_0x79fa9f){return db[_0xab01('0x2b')][_0xab01('0x48')](_0x5e5847['body'],{})[_0xab01('0x25')](respondWithResult(_0x79fa9f,0xc9))[_0xab01('0x43')](handleError(_0x79fa9f,null));};exports[_0xab01('0x23')]=function(_0x1b11c4,_0x5e4316){if(_0x1b11c4[_0xab01('0x49')]['id']){delete _0x1b11c4[_0xab01('0x49')]['id'];}return db[_0xab01('0x2b')][_0xab01('0x47')]({'where':{'id':_0x1b11c4[_0xab01('0x45')]['id']}})['then'](handleEntityNotFound(_0x5e4316,null))[_0xab01('0x25')](saveUpdates(_0x1b11c4[_0xab01('0x49')],null))['then'](respondWithResult(_0x5e4316,null))[_0xab01('0x43')](handleError(_0x5e4316,null));};exports[_0xab01('0x24')]=function(_0x182d45,_0x1ccdbd){return db[_0xab01('0x2b')][_0xab01('0x47')]({'where':{'id':_0x182d45[_0xab01('0x45')]['id']}})['then'](handleEntityNotFound(_0x1ccdbd,null))['then'](removeEntity(_0x1ccdbd,null))[_0xab01('0x43')](handleError(_0x1ccdbd,null));};exports[_0xab01('0x4a')]=function(_0x1a0a14,_0x35ac7b,_0x4de07a){var _0x4d181a={};var _0x7eec31={};var _0x460fb7;var _0x1f1b6f;return db[_0xab01('0x2b')][_0xab01('0x4b')]({'where':{'id':_0x1a0a14[_0xab01('0x45')]['id']}})[_0xab01('0x25')](handleEntityNotFound(_0x35ac7b,null))['then'](function(_0x4f2af6){if(_0x4f2af6){_0x460fb7=_0x4f2af6;_0x7eec31[_0xab01('0x2f')]=_[_0xab01('0x31')](db[_0xab01('0x4c')][_0xab01('0x2c')]);_0x7eec31[_0xab01('0x30')]=_['keys'](_0x1a0a14['query']);_0x7eec31['filters']=_[_0xab01('0x33')](_0x7eec31[_0xab01('0x2f')],_0x7eec31[_0xab01('0x30')]);_0x4d181a[_0xab01('0x34')]=_[_0xab01('0x33')](_0x7eec31[_0xab01('0x2f')],qs[_0xab01('0x35')](_0x1a0a14[_0xab01('0x30')]['fields']));_0x4d181a[_0xab01('0x34')]=_0x4d181a[_0xab01('0x34')][_0xab01('0x46')]?_0x4d181a[_0xab01('0x34')]:_0x7eec31[_0xab01('0x2f')];_0x4d181a[_0xab01('0x38')]=qs[_0xab01('0x39')](_0x1a0a14[_0xab01('0x30')][_0xab01('0x39')]);_0x4d181a[_0xab01('0x3c')]=qs[_0xab01('0x32')](_[_0xab01('0x3a')](_0x1a0a14[_0xab01('0x30')],_0x7eec31[_0xab01('0x32')]));if(_0x1a0a14[_0xab01('0x30')][_0xab01('0x3b')]){_0x4d181a[_0xab01('0x3c')]=_['merge'](_0x4d181a[_0xab01('0x3c')],{'$or':_[_0xab01('0x2a')](_0x4d181a['attributes'],function(_0xacd26f){var _0x40a3ab={};_0x40a3ab[_0xacd26f]={'$like':'%'+_0x1a0a14[_0xab01('0x30')][_0xab01('0x3b')]+'%'};return _0x40a3ab;})});}_0x4d181a=_[_0xab01('0x3e')]({},_0x4d181a,_0x1a0a14[_0xab01('0x3f')]);return _0x460fb7['getConfigurations'](_0x4d181a);}})[_0xab01('0x25')](function(_0x96867e){if(_0x96867e){_0x1f1b6f=_0x96867e['length'];if(!_0x1a0a14['query']['hasOwnProperty'](_0xab01('0x37'))){_0x4d181a[_0xab01('0x1c')]=qs[_0xab01('0x1c')](_0x1a0a14[_0xab01('0x30')][_0xab01('0x1c')]);_0x4d181a['offset']=qs[_0xab01('0x1b')](_0x1a0a14[_0xab01('0x30')][_0xab01('0x1b')]);}return _0x460fb7[_0xab01('0x4a')](_0x4d181a);}})[_0xab01('0x25')](function(_0x117477){if(_0x117477){return _0x117477?{'count':_0x1f1b6f,'rows':_0x117477}:null;}})[_0xab01('0x25')](respondWithResult(_0x35ac7b,null))[_0xab01('0x43')](handleError(_0x35ac7b,null));};exports[_0xab01('0x4d')]=function(_0x4a260b,_0x9f3dba,_0x3a5f47){if(_0x4a260b['body']['id']){delete _0x4a260b[_0xab01('0x49')]['id'];}return db[_0xab01('0x2b')][_0xab01('0x4b')]({'where':{'id':_0x4a260b[_0xab01('0x45')]['id']}})[_0xab01('0x25')](handleEntityNotFound(_0x9f3dba,null))[_0xab01('0x25')](function(_0x5505da){if(_0x5505da){_0x4a260b[_0xab01('0x49')][_0xab01('0x4e')]=_0x5505da['id'];_0x4a260b[_0xab01('0x49')][_0xab01('0x4f')]=integrations[_0xab01('0x50')](_0x4a260b[_0xab01('0x49')]['channel'],_0x4a260b[_0xab01('0x49')][_0xab01('0x2e')]);_0x4a260b['body'][_0xab01('0x51')]=integrations['getDescriptions'](_0x4a260b['body'][_0xab01('0x52')],_0x4a260b['body']['type']);return db[_0xab01('0x4c')]['create'](_0x4a260b[_0xab01('0x49')],{'include':[{'model':db[_0xab01('0x53')],'as':'Subjects'},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})[_0xab01('0x25')](respondWithResult(_0x9f3dba,null))[_0xab01('0x43')](handleError(_0x9f3dba,null));};exports[_0xab01('0x54')]=function(_0x38e126,_0x15e56b,_0x445263){var _0x1cf09f='';return db[_0xab01('0x2b')]['findOne']({'where':{'id':_0x38e126['params']['id']},'attributes':['id',_0xab01('0x55'),_0xab01('0x56')]})[_0xab01('0x25')](handleEntityNotFound(_0x15e56b,null))[_0xab01('0x25')](function(_0x1a9904){if(_0x1a9904){_0x1cf09f=_0x1a9904['remoteUri'];var _0x46ac1e=_0x1cf09f[_0xab01('0x57')](-0x1);if(_0x46ac1e==='/'){_0x1cf09f=_0x1cf09f[_0xab01('0x58')](0x0,_0x1cf09f[_0xab01('0x59')](_0x46ac1e));}return rp({'method':'GET','uri':util['format'](_0xab01('0x5a'),_0x1cf09f,_0xab01('0x5b')),'headers':{'Authorization':util[_0xab01('0x5c')](_0xab01('0x5d'),new Buffer(util[_0xab01('0x5c')]('%s:X',_0x1a9904[_0xab01('0x56')]))[_0xab01('0x5e')](_0xab01('0x5f')))},'json':!![]});}})[_0xab01('0x25')](function(_0xb682dc){if(_0xb682dc){var _0x16d2ee=[_0xab01('0x60'),_0xab01('0x61'),'agent',_0xab01('0x62'),_0xab01('0x18'),_0xab01('0x63'),_0xab01('0x64'),_0xab01('0x65'),_0xab01('0x66'),_0xab01('0x64'),_0xab01('0x67')];_[_0xab01('0x68')](_0xb682dc,function(_0x5db277){return _0x16d2ee[_0xab01('0x69')](_0x5db277[_0xab01('0x27')])||!_0x5db277[_0xab01('0x6a')]&&_0x5db277['type']!==_0xab01('0x6b')&&_0x5db277['type']!==_0xab01('0x6c');});return{'count':_0xb682dc['length'],'rows':_[_0xab01('0x2a')](_0xb682dc,function(_0x3ad39c){return{'id':_0x3ad39c[_0xab01('0x27')],'name':_0x3ad39c['label'],'custom':!_0x3ad39c[_0xab01('0x6a')],'options':_0x3ad39c[_0xab01('0x6d')]?_[_0xab01('0x2a')](_0x3ad39c[_0xab01('0x6d')],function(_0x584a0b){return{'name':_[_0xab01('0x6e')](_0x584a0b),'value':_0x584a0b};}):[]};})};}})[_0xab01('0x25')](respondWithResult(_0x15e56b,null))[_0xab01('0x43')](function(_0x389b29){var _0x3ed1a8=_0x38e126[_0xab01('0x30')][_0xab01('0x6f')]?0x1f4:_0x389b29['statusCode']||0x1f4;logger[_0xab01('0x70')](_0xab01('0x71'),_0xab01('0x54'),_0x3ed1a8,JSON[_0xab01('0x72')](_0x389b29));delete _0x389b29['name'];if(_0x3ed1a8===0x191){_0x3ed1a8=0x190;}_0x15e56b[_0xab01('0x18')](_0x3ed1a8)['send'](_0x38e126[_0xab01('0x30')][_0xab01('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x389b29[_0xab01('0x73')]}:_0x389b29);});};
\ No newline at end of file
+var _0x8c7a=['%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','priority','group','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','statusCode','eml-format','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','name','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','order','options','AccountId','Subjects','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format'];(function(_0x4f964a,_0x41f80b){var _0x22142b=function(_0x2c969c){while(--_0x2c969c){_0x4f964a['push'](_0x4f964a['shift']());}};_0x22142b(++_0x41f80b);}(_0x8c7a,0x8c));var _0xa8c7=function(_0x59ff97,_0x4e62e7){_0x59ff97=_0x59ff97-0x0;var _0x3ae379=_0x8c7a[_0x59ff97];return _0x3ae379;};'use strict';var emlformat=require(_0xa8c7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c7('0x1'));var rp=require('request-promise');var moment=require(_0xa8c7('0x2'));var BPromise=require(_0xa8c7('0x3'));var Mustache=require(_0xa8c7('0x4'));var util=require('util');var path=require('path');var sox=require(_0xa8c7('0x5'));var csv=require(_0xa8c7('0x6'));var ejs=require(_0xa8c7('0x7'));var fs=require('fs');var fs_extra=require(_0xa8c7('0x8'));var _=require(_0xa8c7('0x9'));var squel=require('squel');var crypto=require(_0xa8c7('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa8c7('0xb'));var toCsv=require(_0xa8c7('0x6'));var querystring=require(_0xa8c7('0xc'));var Papa=require(_0xa8c7('0xd'));var Redis=require(_0xa8c7('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xa8c7('0xf'));var as=require(_0xa8c7('0x10'));var hardwareService=require(_0xa8c7('0x11'));var logger=require(_0xa8c7('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa8c7('0x13'));var db=require(_0xa8c7('0x14'))['db'];var integrations=require(_0xa8c7('0x15'));function respondWithStatusCode(_0x210b8b,_0x29f6dd){_0x29f6dd=_0x29f6dd||0xcc;return function(_0x2784c0){if(_0x2784c0){return _0x210b8b[_0xa8c7('0x16')](_0x29f6dd);}return _0x210b8b[_0xa8c7('0x17')](_0x29f6dd)['end']();};}function respondWithResult(_0x1e2b54,_0x198791){_0x198791=_0x198791||0xc8;return function(_0x14e583){if(_0x14e583){return _0x1e2b54[_0xa8c7('0x17')](_0x198791)[_0xa8c7('0x18')](_0x14e583);}};}function respondWithFilteredResult(_0x2be249,_0xd70374){return function(_0x256c04){if(_0x256c04){var _0x2f815e=typeof _0xd70374[_0xa8c7('0x19')]===_0xa8c7('0x1a')&&typeof _0xd70374[_0xa8c7('0x1b')]==='undefined';var _0x7de1e6=_0x256c04[_0xa8c7('0x1c')];var _0x82aa58=_0x2f815e?0x0:_0xd70374[_0xa8c7('0x19')];var _0x463edf=_0x2f815e?_0x256c04[_0xa8c7('0x1c')]:_0xd70374['offset']+_0xd70374[_0xa8c7('0x1b')];var _0x1dc022;if(_0x463edf>=_0x7de1e6){_0x463edf=_0x7de1e6;_0x1dc022=0xc8;}else{_0x1dc022=0xce;}_0x2be249[_0xa8c7('0x17')](_0x1dc022);return _0x2be249[_0xa8c7('0x1d')](_0xa8c7('0x1e'),_0x82aa58+'-'+_0x463edf+'/'+_0x7de1e6)[_0xa8c7('0x18')](_0x256c04);}return null;};}function patchUpdates(_0x39cca8){return function(_0xc26020){try{jsonpatch[_0xa8c7('0x1f')](_0xc26020,_0x39cca8,!![]);}catch(_0x4ff4a5){return BPromise['reject'](_0x4ff4a5);}return _0xc26020[_0xa8c7('0x20')]();};}function saveUpdates(_0x461712,_0x398717){return function(_0x1e6c00){if(_0x1e6c00){return _0x1e6c00[_0xa8c7('0x21')](_0x461712)[_0xa8c7('0x22')](function(_0x114aea){return _0x114aea;});}return null;};}function removeEntity(_0x186417,_0x2bab45){return function(_0x190f04){if(_0x190f04){return _0x190f04[_0xa8c7('0x23')]()['then'](function(){_0x186417[_0xa8c7('0x17')](0xcc)[_0xa8c7('0x24')]();});}};}function handleEntityNotFound(_0x5dee78,_0x1cf95d){return function(_0xe1db98){if(!_0xe1db98){_0x5dee78['sendStatus'](0x194);}return _0xe1db98;};}function handleError(_0x2364d4,_0x57bd0c){_0x57bd0c=_0x57bd0c||0x1f4;return function(_0x3b3db2){logger[_0xa8c7('0x25')](_0x3b3db2['stack']);if(_0x3b3db2[_0xa8c7('0x26')]){delete _0x3b3db2[_0xa8c7('0x26')];}_0x2364d4[_0xa8c7('0x17')](_0x57bd0c)['send'](_0x3b3db2);};}exports[_0xa8c7('0x27')]=function(_0x413ef4,_0x4d7bdf){var _0x4a632c={},_0x5c36f2={},_0x5add5e={'count':0x0,'rows':[]};var _0x372887=_[_0xa8c7('0x28')](db[_0xa8c7('0x29')][_0xa8c7('0x2a')],function(_0x259d51){return{'name':_0x259d51[_0xa8c7('0x2b')],'type':_0x259d51[_0xa8c7('0x2c')][_0xa8c7('0x2d')]};});_0x5c36f2[_0xa8c7('0x2e')]=_[_0xa8c7('0x28')](_0x372887,_0xa8c7('0x26'));_0x5c36f2['query']=_[_0xa8c7('0x2f')](_0x413ef4[_0xa8c7('0x30')]);_0x5c36f2[_0xa8c7('0x31')]=_[_0xa8c7('0x32')](_0x5c36f2['model'],_0x5c36f2[_0xa8c7('0x30')]);_0x4a632c[_0xa8c7('0x33')]=_[_0xa8c7('0x32')](_0x5c36f2[_0xa8c7('0x2e')],qs[_0xa8c7('0x34')](_0x413ef4[_0xa8c7('0x30')][_0xa8c7('0x34')]));_0x4a632c[_0xa8c7('0x33')]=_0x4a632c[_0xa8c7('0x33')][_0xa8c7('0x35')]?_0x4a632c[_0xa8c7('0x33')]:_0x5c36f2[_0xa8c7('0x2e')];if(!_0x413ef4[_0xa8c7('0x30')][_0xa8c7('0x36')]('nolimit')){_0x4a632c[_0xa8c7('0x1b')]=qs[_0xa8c7('0x1b')](_0x413ef4['query'][_0xa8c7('0x1b')]);_0x4a632c[_0xa8c7('0x19')]=qs[_0xa8c7('0x19')](_0x413ef4[_0xa8c7('0x30')][_0xa8c7('0x19')]);}_0x4a632c['order']=qs[_0xa8c7('0x37')](_0x413ef4['query'][_0xa8c7('0x37')]);_0x4a632c['where']=qs['filters'](_[_0xa8c7('0x38')](_0x413ef4['query'],_0x5c36f2[_0xa8c7('0x31')]),_0x372887);if(_0x413ef4[_0xa8c7('0x30')][_0xa8c7('0x39')]){_0x4a632c[_0xa8c7('0x3a')]=_[_0xa8c7('0x3b')](_0x4a632c[_0xa8c7('0x3a')],{'$or':_[_0xa8c7('0x28')](_0x372887,function(_0x248f33){if(_0x248f33[_0xa8c7('0x2c')]!==_0xa8c7('0x3c')){var _0x39fa17={};_0x39fa17[_0x248f33['name']]={'$like':'%'+_0x413ef4[_0xa8c7('0x30')]['filter']+'%'};return _0x39fa17;}})});}_0x4a632c=_[_0xa8c7('0x3b')]({},_0x4a632c,_0x413ef4['options']);var _0x54aab8={'where':_0x4a632c['where']};return db['FreshdeskAccount']['count'](_0x54aab8)['then'](function(_0x3c4739){_0x5add5e[_0xa8c7('0x1c')]=_0x3c4739;if(_0x413ef4['query']['includeAll']){_0x4a632c[_0xa8c7('0x3d')]=[{'all':!![]}];}return db[_0xa8c7('0x29')][_0xa8c7('0x3e')](_0x4a632c);})['then'](function(_0x12ea62){_0x5add5e[_0xa8c7('0x3f')]=_0x12ea62;return _0x5add5e;})['then'](respondWithFilteredResult(_0x4d7bdf,_0x4a632c))[_0xa8c7('0x40')](handleError(_0x4d7bdf,null));};exports[_0xa8c7('0x41')]=function(_0x389eff,_0x360be8){var _0x42bcdc={'raw':![],'where':{'id':_0x389eff[_0xa8c7('0x42')]['id']}},_0x835f3c={};_0x835f3c[_0xa8c7('0x2e')]=_[_0xa8c7('0x2f')](db[_0xa8c7('0x29')][_0xa8c7('0x2a')]);_0x835f3c[_0xa8c7('0x30')]=_['keys'](_0x389eff[_0xa8c7('0x30')]);_0x835f3c['filters']=_[_0xa8c7('0x32')](_0x835f3c[_0xa8c7('0x2e')],_0x835f3c['query']);_0x42bcdc[_0xa8c7('0x33')]=_[_0xa8c7('0x32')](_0x835f3c[_0xa8c7('0x2e')],qs[_0xa8c7('0x34')](_0x389eff['query'][_0xa8c7('0x34')]));_0x42bcdc[_0xa8c7('0x33')]=_0x42bcdc[_0xa8c7('0x33')][_0xa8c7('0x35')]?_0x42bcdc[_0xa8c7('0x33')]:_0x835f3c[_0xa8c7('0x2e')];if(_0x389eff[_0xa8c7('0x30')][_0xa8c7('0x43')]){_0x42bcdc[_0xa8c7('0x3d')]=[{'all':!![]}];}_0x42bcdc=_[_0xa8c7('0x3b')]({},_0x42bcdc,_0x389eff['options']);return db[_0xa8c7('0x29')][_0xa8c7('0x44')](_0x42bcdc)[_0xa8c7('0x22')](handleEntityNotFound(_0x360be8,null))[_0xa8c7('0x22')](respondWithResult(_0x360be8,null))['catch'](handleError(_0x360be8,null));};exports['create']=function(_0x495821,_0xd853a8){return db[_0xa8c7('0x29')][_0xa8c7('0x45')](_0x495821[_0xa8c7('0x46')],{})[_0xa8c7('0x22')](respondWithResult(_0xd853a8,0xc9))[_0xa8c7('0x40')](handleError(_0xd853a8,null));};exports[_0xa8c7('0x21')]=function(_0x3f9ff6,_0x7e459c){if(_0x3f9ff6[_0xa8c7('0x46')]['id']){delete _0x3f9ff6['body']['id'];}return db['FreshdeskAccount'][_0xa8c7('0x44')]({'where':{'id':_0x3f9ff6[_0xa8c7('0x42')]['id']}})[_0xa8c7('0x22')](handleEntityNotFound(_0x7e459c,null))['then'](saveUpdates(_0x3f9ff6['body'],null))[_0xa8c7('0x22')](respondWithResult(_0x7e459c,null))[_0xa8c7('0x40')](handleError(_0x7e459c,null));};exports[_0xa8c7('0x23')]=function(_0x544df4,_0x1ec44d){return db[_0xa8c7('0x29')][_0xa8c7('0x44')]({'where':{'id':_0x544df4[_0xa8c7('0x42')]['id']}})[_0xa8c7('0x22')](handleEntityNotFound(_0x1ec44d,null))[_0xa8c7('0x22')](removeEntity(_0x1ec44d,null))[_0xa8c7('0x40')](handleError(_0x1ec44d,null));};exports[_0xa8c7('0x47')]=function(_0x13c856,_0x3f684e,_0xd37095){var _0x23fac7={};var _0x31bc28={};var _0x47beb3;var _0x49c14e;return db[_0xa8c7('0x29')][_0xa8c7('0x48')]({'where':{'id':_0x13c856[_0xa8c7('0x42')]['id']}})[_0xa8c7('0x22')](handleEntityNotFound(_0x3f684e,null))[_0xa8c7('0x22')](function(_0x363055){if(_0x363055){_0x47beb3=_0x363055;_0x31bc28[_0xa8c7('0x2e')]=_['keys'](db[_0xa8c7('0x49')]['rawAttributes']);_0x31bc28[_0xa8c7('0x30')]=_['keys'](_0x13c856[_0xa8c7('0x30')]);_0x31bc28[_0xa8c7('0x31')]=_[_0xa8c7('0x32')](_0x31bc28['model'],_0x31bc28[_0xa8c7('0x30')]);_0x23fac7[_0xa8c7('0x33')]=_[_0xa8c7('0x32')](_0x31bc28[_0xa8c7('0x2e')],qs[_0xa8c7('0x34')](_0x13c856[_0xa8c7('0x30')][_0xa8c7('0x34')]));_0x23fac7[_0xa8c7('0x33')]=_0x23fac7[_0xa8c7('0x33')]['length']?_0x23fac7[_0xa8c7('0x33')]:_0x31bc28[_0xa8c7('0x2e')];_0x23fac7[_0xa8c7('0x4a')]=qs[_0xa8c7('0x37')](_0x13c856[_0xa8c7('0x30')]['sort']);_0x23fac7['where']=qs[_0xa8c7('0x31')](_[_0xa8c7('0x38')](_0x13c856[_0xa8c7('0x30')],_0x31bc28[_0xa8c7('0x31')]));if(_0x13c856['query']['filter']){_0x23fac7[_0xa8c7('0x3a')]=_[_0xa8c7('0x3b')](_0x23fac7['where'],{'$or':_[_0xa8c7('0x28')](_0x23fac7[_0xa8c7('0x33')],function(_0x2b76ab){var _0x4412e9={};_0x4412e9[_0x2b76ab]={'$like':'%'+_0x13c856[_0xa8c7('0x30')][_0xa8c7('0x39')]+'%'};return _0x4412e9;})});}_0x23fac7=_['merge']({},_0x23fac7,_0x13c856[_0xa8c7('0x4b')]);return _0x47beb3['getConfigurations'](_0x23fac7);}})[_0xa8c7('0x22')](function(_0x500787){if(_0x500787){_0x49c14e=_0x500787['length'];if(!_0x13c856[_0xa8c7('0x30')]['hasOwnProperty']('nolimit')){_0x23fac7[_0xa8c7('0x1b')]=qs['limit'](_0x13c856[_0xa8c7('0x30')][_0xa8c7('0x1b')]);_0x23fac7['offset']=qs[_0xa8c7('0x19')](_0x13c856[_0xa8c7('0x30')][_0xa8c7('0x19')]);}return _0x47beb3[_0xa8c7('0x47')](_0x23fac7);}})[_0xa8c7('0x22')](function(_0x2d16d9){if(_0x2d16d9){return _0x2d16d9?{'count':_0x49c14e,'rows':_0x2d16d9}:null;}})['then'](respondWithResult(_0x3f684e,null))[_0xa8c7('0x40')](handleError(_0x3f684e,null));};exports['addConfiguration']=function(_0x1faf9c,_0x42df60,_0x192d8e){if(_0x1faf9c['body']['id']){delete _0x1faf9c[_0xa8c7('0x46')]['id'];}return db[_0xa8c7('0x29')][_0xa8c7('0x48')]({'where':{'id':_0x1faf9c['params']['id']}})[_0xa8c7('0x22')](handleEntityNotFound(_0x42df60,null))[_0xa8c7('0x22')](function(_0x275b24){if(_0x275b24){_0x1faf9c[_0xa8c7('0x46')][_0xa8c7('0x4c')]=_0x275b24['id'];_0x1faf9c[_0xa8c7('0x46')][_0xa8c7('0x4d')]=integrations['getSubjects'](_0x1faf9c[_0xa8c7('0x46')]['channel'],_0x1faf9c[_0xa8c7('0x46')]['type']);_0x1faf9c['body'][_0xa8c7('0x4e')]=integrations[_0xa8c7('0x4f')](_0x1faf9c['body']['channel'],_0x1faf9c[_0xa8c7('0x46')][_0xa8c7('0x2c')]);return db[_0xa8c7('0x49')][_0xa8c7('0x45')](_0x1faf9c[_0xa8c7('0x46')],{'include':[{'model':db[_0xa8c7('0x50')],'as':_0xa8c7('0x4d')},{'model':db[_0xa8c7('0x50')],'as':_0xa8c7('0x4e')}]});}return null;})[_0xa8c7('0x22')](respondWithResult(_0x42df60,null))[_0xa8c7('0x40')](handleError(_0x42df60,null));};exports[_0xa8c7('0x51')]=function(_0x40c9fe,_0x290cdf,_0x3a23e8){var _0x108d7b='';return db['FreshdeskAccount'][_0xa8c7('0x48')]({'where':{'id':_0x40c9fe[_0xa8c7('0x42')]['id']},'attributes':['id',_0xa8c7('0x52'),_0xa8c7('0x53')]})[_0xa8c7('0x22')](handleEntityNotFound(_0x290cdf,null))[_0xa8c7('0x22')](function(_0xf03796){if(_0xf03796){_0x108d7b=_0xf03796[_0xa8c7('0x52')];var _0x39e9d0=_0x108d7b[_0xa8c7('0x54')](-0x1);if(_0x39e9d0==='/'){_0x108d7b=_0x108d7b['substring'](0x0,_0x108d7b[_0xa8c7('0x55')](_0x39e9d0));}return rp({'method':_0xa8c7('0x56'),'uri':util[_0xa8c7('0x57')](_0xa8c7('0x58'),_0x108d7b,_0xa8c7('0x59')),'headers':{'Authorization':util[_0xa8c7('0x57')](_0xa8c7('0x5a'),new Buffer(util[_0xa8c7('0x57')](_0xa8c7('0x5b'),_0xf03796[_0xa8c7('0x53')]))[_0xa8c7('0x5c')](_0xa8c7('0x5d')))},'json':!![]});}})[_0xa8c7('0x22')](function(_0x4787d0){if(_0x4787d0){var _0x1eb7b=[_0xa8c7('0x5e'),_0xa8c7('0x5f'),_0xa8c7('0x60'),'description',_0xa8c7('0x17'),_0xa8c7('0x61'),_0xa8c7('0x62'),'source',_0xa8c7('0x63'),'group',_0xa8c7('0x64')];_[_0xa8c7('0x65')](_0x4787d0,function(_0x3ab047){return _0x1eb7b[_0xa8c7('0x66')](_0x3ab047['name'])||!_0x3ab047[_0xa8c7('0x67')]&&_0x3ab047['type']!==_0xa8c7('0x68')&&_0x3ab047[_0xa8c7('0x2c')]!==_0xa8c7('0x69');});return{'count':_0x4787d0[_0xa8c7('0x35')],'rows':_['map'](_0x4787d0,function(_0x2381b7){return{'id':_0x2381b7['name'],'name':_0x2381b7[_0xa8c7('0x6a')],'custom':!_0x2381b7[_0xa8c7('0x67')],'options':_0x2381b7[_0xa8c7('0x6b')]?_[_0xa8c7('0x28')](_0x2381b7['choices'],function(_0x30423f){return{'name':_[_0xa8c7('0x6c')](_0x30423f),'value':_0x30423f};}):[]};})};}})[_0xa8c7('0x22')](respondWithResult(_0x290cdf,null))[_0xa8c7('0x40')](function(_0x1cb7cd){var _0x451db6=_0x40c9fe[_0xa8c7('0x30')][_0xa8c7('0x6d')]?0x1f4:_0x1cb7cd['statusCode']||0x1f4;logger[_0xa8c7('0x25')](_0xa8c7('0x6e'),_0xa8c7('0x51'),_0x451db6,JSON[_0xa8c7('0x6f')](_0x1cb7cd));delete _0x1cb7cd[_0xa8c7('0x26')];if(_0x451db6===0x191){_0x451db6=0x190;}_0x290cdf[_0xa8c7('0x17')](_0x451db6)[_0xa8c7('0x70')](_0x40c9fe[_0xa8c7('0x30')][_0xa8c7('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x1cb7cd[_0xa8c7('0x71')]}:_0x1cb7cd);});};
\ No newline at end of file
index b9860ec..aa8ff71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b4d=['rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x24bbd5,_0x34a7c4){var _0x8fb737=function(_0xda751f){while(--_0xda751f){_0x24bbd5['push'](_0x24bbd5['shift']());}};_0x8fb737(++_0x34a7c4);}(_0x1b4d,0x10e));var _0xd1b4=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x1b4d[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0xd1b4('0x0'));var util=require(_0xd1b4('0x1'));var logger=require(_0xd1b4('0x2'))(_0xd1b4('0x3'));var moment=require(_0xd1b4('0x4'));var BPromise=require('bluebird');var rp=require(_0xd1b4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd1b4('0x6'));var config=require(_0xd1b4('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xd1b4('0x8'));module[_0xd1b4('0x9')]=function(_0x3566d3,_0x4f209a){return _0x3566d3[_0xd1b4('0xa')]('FreshdeskAccount',attributes,{'tableName':_0xd1b4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x619f=['../../components/integrations/configuration','exports','FreshdeskAccount','util','../../config/logger','api','path','rimraf','../../config/environment'];(function(_0x5a97e4,_0x335de1){var _0x4b04b3=function(_0x388b27){while(--_0x388b27){_0x5a97e4['push'](_0x5a97e4['shift']());}};_0x4b04b3(++_0x335de1);}(_0x619f,0x78));var _0xf619=function(_0x176991,_0x3d120a){_0x176991=_0x176991-0x0;var _0x430a28=_0x619f[_0x176991];return _0x430a28;};'use strict';var _=require('lodash');var util=require(_0xf619('0x0'));var logger=require(_0xf619('0x1'))(_0xf619('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf619('0x3'));var rimraf=require(_0xf619('0x4'));var config=require(_0xf619('0x5'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xf619('0x6'));module[_0xf619('0x7')]=function(_0x80d5c1,_0x4ed470){return _0x80d5c1['define'](_0xf619('0x8'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index faa4579..914e70b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x689c=['client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FreshdeskAccount','findAll','options','raw','attributes','limit','include','map','model','GetFreshdeskAccount','ShowFreshdeskAccount','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x689c,0x9e));var _0xc689=function(_0x510e2f,_0x17452d){_0x510e2f=_0x510e2f-0x0;var _0x561381=_0x689c[_0x510e2f];return _0x561381;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc689('0x0'));var BPromise=require(_0xc689('0x1'));var rs=require(_0xc689('0x2'));var fs=require('fs');var Redis=require(_0xc689('0x3'));var db=require(_0xc689('0x4'))['db'];var utils=require(_0xc689('0x5'));var logger=require('../../config/logger')(_0xc689('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc689('0x7')][_0xc689('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b9f8a,_0xedb406,_0x2e7400){return new BPromise(function(_0x57f82f,_0x17ff9c){return client[_0xc689('0x9')](_0x2b9f8a,_0x2e7400)[_0xc689('0xa')](function(_0x4a6c06){logger[_0xc689('0xb')](_0xc689('0xc'),_0xedb406,_0xc689('0xd'));logger[_0xc689('0xe')](_0xc689('0xf'),_0xedb406,_0xc689('0xd'),JSON[_0xc689('0x10')](_0x4a6c06));if(_0x4a6c06[_0xc689('0x11')]){if(_0x4a6c06[_0xc689('0x11')][_0xc689('0x12')]===0x1f4){logger[_0xc689('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0xedb406,_0x4a6c06[_0xc689('0x11')]['message']);return _0x17ff9c(_0x4a6c06[_0xc689('0x11')][_0xc689('0x13')]);}logger[_0xc689('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0xedb406,_0x4a6c06[_0xc689('0x11')][_0xc689('0x13')]);return _0x57f82f(_0x4a6c06['error'][_0xc689('0x13')]);}else{logger[_0xc689('0xb')](_0xc689('0xc'),_0xedb406,_0xc689('0xd'));_0x57f82f(_0x4a6c06['result']['message']);}})[_0xc689('0x14')](function(_0x214ca0){logger[_0xc689('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0xedb406,_0x214ca0);_0x17ff9c(_0x214ca0);});});}exports['GetFreshdeskAccount']=function(_0x17a126){var _0x1edaef=this;return new Promise(function(_0xbbc8aa,_0x38665c){return db[_0xc689('0x15')][_0xc689('0x16')]({'raw':_0x17a126['options']?_0x17a126[_0xc689('0x17')][_0xc689('0x18')]===undefined?!![]:![]:!![],'where':_0x17a126['options']?_0x17a126['options']['where']||null:null,'attributes':_0x17a126['options']?_0x17a126['options'][_0xc689('0x19')]||null:null,'limit':_0x17a126[_0xc689('0x17')]?_0x17a126[_0xc689('0x17')][_0xc689('0x1a')]||null:null,'include':_0x17a126[_0xc689('0x17')]?_0x17a126[_0xc689('0x17')][_0xc689('0x1b')]?_[_0xc689('0x1c')](_0x17a126[_0xc689('0x17')][_0xc689('0x1b')],function(_0x8215e5){return{'model':db[_0x8215e5[_0xc689('0x1d')]],'as':_0x8215e5['as'],'attributes':_0x8215e5[_0xc689('0x19')],'include':_0x8215e5[_0xc689('0x1b')]?_[_0xc689('0x1c')](_0x8215e5[_0xc689('0x1b')],function(_0x3bca6d){return{'model':db[_0x3bca6d[_0xc689('0x1d')]],'as':_0x3bca6d['as'],'attributes':_0x3bca6d[_0xc689('0x19')],'include':_0x3bca6d[_0xc689('0x1b')]?_[_0xc689('0x1c')](_0x3bca6d[_0xc689('0x1b')],function(_0x47ab9e){return{'model':db[_0x47ab9e['model']],'as':_0x47ab9e['as'],'attributes':_0x47ab9e[_0xc689('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc689('0xa')](function(_0x35b570){logger[_0xc689('0xb')](_0xc689('0x1e'),_0x17a126);logger[_0xc689('0xe')]('GetFreshdeskAccount',_0x17a126,JSON[_0xc689('0x10')](_0x35b570));_0xbbc8aa(_0x35b570);})['catch'](function(_0x9c114d){logger['error'](_0xc689('0x1e'),_0x9c114d[_0xc689('0x13')],_0x17a126);_0x38665c(_0x1edaef['error'](0x1f4,_0x9c114d['message']));});});};exports[_0xc689('0x1f')]=function(_0x2ebacf){var _0x400272=this;return new Promise(function(_0x455b33,_0x6c7127){return db[_0xc689('0x15')][_0xc689('0x20')]({'raw':_0x2ebacf[_0xc689('0x17')]?_0x2ebacf['options'][_0xc689('0x18')]===undefined?!![]:![]:!![],'where':_0x2ebacf['options']?_0x2ebacf['options']['where']||null:null,'attributes':_0x2ebacf[_0xc689('0x17')]?_0x2ebacf[_0xc689('0x17')][_0xc689('0x19')]||null:null,'include':_0x2ebacf[_0xc689('0x17')]?_0x2ebacf[_0xc689('0x17')]['include']?_[_0xc689('0x1c')](_0x2ebacf[_0xc689('0x17')][_0xc689('0x1b')],function(_0x5bbbae){return{'model':db[_0x5bbbae[_0xc689('0x1d')]],'as':_0x5bbbae['as'],'attributes':_0x5bbbae[_0xc689('0x19')],'include':_0x5bbbae[_0xc689('0x1b')]?_[_0xc689('0x1c')](_0x5bbbae['include'],function(_0x1654aa){return{'model':db[_0x1654aa[_0xc689('0x1d')]],'as':_0x1654aa['as'],'attributes':_0x1654aa[_0xc689('0x19')],'include':_0x1654aa[_0xc689('0x1b')]?_['map'](_0x1654aa[_0xc689('0x1b')],function(_0x8a888e){return{'model':db[_0x8a888e['model']],'as':_0x8a888e['as'],'attributes':_0x8a888e[_0xc689('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc689('0xa')](function(_0x5ba2d1){logger['info']('ShowFreshdeskAccount',_0x2ebacf);logger['debug']('ShowFreshdeskAccount',_0x2ebacf,JSON[_0xc689('0x10')](_0x5ba2d1));_0x455b33(_0x5ba2d1);})[_0xc689('0x14')](function(_0x178aa8){logger[_0xc689('0x11')]('ShowFreshdeskAccount',_0x178aa8[_0xc689('0x13')],_0x2ebacf);_0x6c7127(_0x400272[_0xc689('0x11')](0x1f4,_0x178aa8['message']));});});};
\ No newline at end of file
+var _0x80ce=['error','code','message','result','catch','GetFreshdeskAccount','findAll','options','raw','limit','include','map','model','attributes','then','stringify','FreshdeskAccount','find','ShowFreshdeskAccount','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4cd2fd,_0xa44ac8){var _0x2aa59c=function(_0xc84434){while(--_0xc84434){_0x4cd2fd['push'](_0x4cd2fd['shift']());}};_0x2aa59c(++_0xa44ac8);}(_0x80ce,0xae));var _0xe80c=function(_0x4a13d7,_0x435688){_0x4a13d7=_0x4a13d7-0x0;var _0x25c8ea=_0x80ce[_0x4a13d7];return _0x25c8ea;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xe80c('0x0'));var rs=require(_0xe80c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe80c('0x2'))['db'];var utils=require(_0xe80c('0x3'));var logger=require(_0xe80c('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe80c('0x5')][_0xe80c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x320a7e,_0x704aa3,_0x591a4a){return new BPromise(function(_0x4da07c,_0x1fdd3b){return client[_0xe80c('0x7')](_0x320a7e,_0x591a4a)['then'](function(_0x104665){logger[_0xe80c('0x8')](_0xe80c('0x9'),_0x704aa3,_0xe80c('0xa'));logger[_0xe80c('0xb')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x704aa3,'request\x20sent',JSON['stringify'](_0x104665));if(_0x104665[_0xe80c('0xc')]){if(_0x104665[_0xe80c('0xc')][_0xe80c('0xd')]===0x1f4){logger[_0xe80c('0xc')](_0xe80c('0x9'),_0x704aa3,_0x104665[_0xe80c('0xc')][_0xe80c('0xe')]);return _0x1fdd3b(_0x104665[_0xe80c('0xc')][_0xe80c('0xe')]);}logger[_0xe80c('0xc')](_0xe80c('0x9'),_0x704aa3,_0x104665[_0xe80c('0xc')][_0xe80c('0xe')]);return _0x4da07c(_0x104665['error'][_0xe80c('0xe')]);}else{logger['info'](_0xe80c('0x9'),_0x704aa3,_0xe80c('0xa'));_0x4da07c(_0x104665[_0xe80c('0xf')]['message']);}})[_0xe80c('0x10')](function(_0x35d108){logger['error'](_0xe80c('0x9'),_0x704aa3,_0x35d108);_0x1fdd3b(_0x35d108);});});}exports[_0xe80c('0x11')]=function(_0x5b6370){var _0x2556fb=this;return new Promise(function(_0x1f2a5c,_0x53db8b){return db['FreshdeskAccount'][_0xe80c('0x12')]({'raw':_0x5b6370[_0xe80c('0x13')]?_0x5b6370[_0xe80c('0x13')][_0xe80c('0x14')]===undefined?!![]:![]:!![],'where':_0x5b6370[_0xe80c('0x13')]?_0x5b6370[_0xe80c('0x13')]['where']||null:null,'attributes':_0x5b6370['options']?_0x5b6370['options']['attributes']||null:null,'limit':_0x5b6370[_0xe80c('0x13')]?_0x5b6370['options'][_0xe80c('0x15')]||null:null,'include':_0x5b6370[_0xe80c('0x13')]?_0x5b6370[_0xe80c('0x13')][_0xe80c('0x16')]?_[_0xe80c('0x17')](_0x5b6370[_0xe80c('0x13')][_0xe80c('0x16')],function(_0x360d8b){return{'model':db[_0x360d8b[_0xe80c('0x18')]],'as':_0x360d8b['as'],'attributes':_0x360d8b[_0xe80c('0x19')],'include':_0x360d8b[_0xe80c('0x16')]?_[_0xe80c('0x17')](_0x360d8b['include'],function(_0x266375){return{'model':db[_0x266375['model']],'as':_0x266375['as'],'attributes':_0x266375[_0xe80c('0x19')],'include':_0x266375['include']?_[_0xe80c('0x17')](_0x266375['include'],function(_0x468875){return{'model':db[_0x468875[_0xe80c('0x18')]],'as':_0x468875['as'],'attributes':_0x468875['attributes']};}):[]};}):[]};}):[]:[]})[_0xe80c('0x1a')](function(_0x2808e1){logger[_0xe80c('0x8')](_0xe80c('0x11'),_0x5b6370);logger[_0xe80c('0xb')](_0xe80c('0x11'),_0x5b6370,JSON[_0xe80c('0x1b')](_0x2808e1));_0x1f2a5c(_0x2808e1);})[_0xe80c('0x10')](function(_0x1e1b23){logger['error'](_0xe80c('0x11'),_0x1e1b23[_0xe80c('0xe')],_0x5b6370);_0x53db8b(_0x2556fb['error'](0x1f4,_0x1e1b23[_0xe80c('0xe')]));});});};exports['ShowFreshdeskAccount']=function(_0x121712){var _0x3be1d2=this;return new Promise(function(_0x298f78,_0x423daf){return db[_0xe80c('0x1c')][_0xe80c('0x1d')]({'raw':_0x121712[_0xe80c('0x13')]?_0x121712[_0xe80c('0x13')][_0xe80c('0x14')]===undefined?!![]:![]:!![],'where':_0x121712['options']?_0x121712['options']['where']||null:null,'attributes':_0x121712[_0xe80c('0x13')]?_0x121712[_0xe80c('0x13')][_0xe80c('0x19')]||null:null,'include':_0x121712[_0xe80c('0x13')]?_0x121712[_0xe80c('0x13')]['include']?_[_0xe80c('0x17')](_0x121712['options']['include'],function(_0xeb4fbf){return{'model':db[_0xeb4fbf[_0xe80c('0x18')]],'as':_0xeb4fbf['as'],'attributes':_0xeb4fbf[_0xe80c('0x19')],'include':_0xeb4fbf[_0xe80c('0x16')]?_[_0xe80c('0x17')](_0xeb4fbf[_0xe80c('0x16')],function(_0x4bf900){return{'model':db[_0x4bf900[_0xe80c('0x18')]],'as':_0x4bf900['as'],'attributes':_0x4bf900[_0xe80c('0x19')],'include':_0x4bf900[_0xe80c('0x16')]?_[_0xe80c('0x17')](_0x4bf900[_0xe80c('0x16')],function(_0x35cd13){return{'model':db[_0x35cd13[_0xe80c('0x18')]],'as':_0x35cd13['as'],'attributes':_0x35cd13[_0xe80c('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe80c('0x1a')](function(_0x4815e2){logger['info']('ShowFreshdeskAccount',_0x121712);logger[_0xe80c('0xb')](_0xe80c('0x1e'),_0x121712,JSON[_0xe80c('0x1b')](_0x4815e2));_0x298f78(_0x4815e2);})['catch'](function(_0xc019e4){logger[_0xe80c('0xc')](_0xe80c('0x1e'),_0xc019e4['message'],_0x121712);_0x423daf(_0x3be1d2[_0xe80c('0xc')](0x1f4,_0xc019e4[_0xe80c('0xe')]));});});};
\ No newline at end of file
index fbd4b96..83d2ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc05=['destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','getFields','getSubjects','getDescriptions','/:id/tags','getTags','post','setTags','update','delete'];(function(_0x304636,_0x210e77){var _0x4beed5=function(_0x299b14){while(--_0x299b14){_0x304636['push'](_0x304636['shift']());}};_0x4beed5(++_0x210e77);}(_0xdc05,0x1e5));var _0x5dc0=function(_0x1b8846,_0x39625e){_0x1b8846=_0x1b8846-0x0;var _0x367251=_0xdc05[_0x1b8846];return _0x367251;};'use strict';var multer=require(_0x5dc0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5dc0('0x1'));var express=require(_0x5dc0('0x2'));var router=express[_0x5dc0('0x3')]();var fs_extra=require(_0x5dc0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5dc0('0x5'));var config=require(_0x5dc0('0x6'));var controller=require(_0x5dc0('0x7'));router[_0x5dc0('0x8')]('/',auth[_0x5dc0('0x9')](),controller[_0x5dc0('0xa')]);router[_0x5dc0('0x8')](_0x5dc0('0xb'),auth[_0x5dc0('0x9')](),controller['show']);router[_0x5dc0('0x8')]('/:id/fields',auth[_0x5dc0('0x9')](),controller[_0x5dc0('0xc')]);router['get']('/:id/subjects',auth[_0x5dc0('0x9')](),controller[_0x5dc0('0xd')]);router[_0x5dc0('0x8')]('/:id/descriptions',auth[_0x5dc0('0x9')](),controller[_0x5dc0('0xe')]);router[_0x5dc0('0x8')](_0x5dc0('0xf'),auth[_0x5dc0('0x9')](),controller[_0x5dc0('0x10')]);router[_0x5dc0('0x11')]('/',auth[_0x5dc0('0x9')](),controller['create']);router['post'](_0x5dc0('0xf'),auth[_0x5dc0('0x9')](),controller[_0x5dc0('0x12')]);router['put'](_0x5dc0('0xb'),auth[_0x5dc0('0x9')](),controller[_0x5dc0('0x13')]);router[_0x5dc0('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x5dc0('0x15')]);module[_0x5dc0('0x16')]=router;
\ No newline at end of file
+var _0xc317=['getTags','delete','exports','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x2b3ee8,_0x81e0af){var _0x3f6d7f=function(_0x41deb4){while(--_0x41deb4){_0x2b3ee8['push'](_0x2b3ee8['shift']());}};_0x3f6d7f(++_0x81e0af);}(_0xc317,0x1a7));var _0x7c31=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc317[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x7c31('0x0'));var path=require(_0x7c31('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7c31('0x2')]();var fs_extra=require(_0x7c31('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7c31('0x4'));var config=require(_0x7c31('0x5'));var controller=require(_0x7c31('0x6'));router[_0x7c31('0x7')]('/',auth[_0x7c31('0x8')](),controller[_0x7c31('0x9')]);router[_0x7c31('0x7')](_0x7c31('0xa'),auth[_0x7c31('0x8')](),controller[_0x7c31('0xb')]);router['get'](_0x7c31('0xc'),auth['isAuthenticated'](),controller[_0x7c31('0xd')]);router[_0x7c31('0x7')](_0x7c31('0xe'),auth[_0x7c31('0x8')](),controller[_0x7c31('0xf')]);router['get'](_0x7c31('0x10'),auth[_0x7c31('0x8')](),controller['getDescriptions']);router[_0x7c31('0x7')](_0x7c31('0x11'),auth[_0x7c31('0x8')](),controller[_0x7c31('0x12')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x7c31('0x11'),auth[_0x7c31('0x8')](),controller['setTags']);router['put'](_0x7c31('0xa'),auth[_0x7c31('0x8')](),controller['update']);router[_0x7c31('0x13')](_0x7c31('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x7c31('0x14')]=router;
\ No newline at end of file
index 1544233..a767c9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f3f=['exports','STRING','sequelize'];(function(_0x566de6,_0x429dab){var _0x37e177=function(_0x4d0b65){while(--_0x4d0b65){_0x566de6['push'](_0x566de6['shift']());}};_0x37e177(++_0x429dab);}(_0x1f3f,0x13d));var _0xf1f3=function(_0x619fcc,_0x3bd756){_0x619fcc=_0x619fcc-0x0;var _0x4737a6=_0x1f3f[_0x619fcc];return _0x4737a6;};'use strict';var Sequelize=require(_0xf1f3('0x0'));module[_0xf1f3('0x1')]={'name':{'type':Sequelize[_0xf1f3('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x937e=['STRING','sequelize','exports'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x937e,0x1cc));var _0xe937=function(_0x5459c1,_0x9c7363){_0x5459c1=_0x5459c1-0x0;var _0x90e93c=_0x937e[_0x5459c1];return _0x90e93c;};'use strict';var Sequelize=require(_0xe937('0x0'));module[_0xe937('0x1')]={'name':{'type':Sequelize[_0xe937('0x2')]},'description':{'type':Sequelize[_0xe937('0x2')]}};
\ No newline at end of file
index 9010744..fb3b7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7642=['then','destroy','error','name','send','index','map','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','FreshdeskConfiguration','includeAll','include','findAll','catch','show','create','body','find','params','getFields','findOne','FreshdeskField','getSubjects','pick','getDescriptions','getTags','Tag','setTags','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','limit','undefined','count','offset','Content-Range','json','reject','save','update'];(function(_0x53d4f7,_0x1e0f8c){var _0x339e61=function(_0x5b9f1f){while(--_0x5b9f1f){_0x53d4f7['push'](_0x53d4f7['shift']());}};_0x339e61(++_0x1e0f8c);}(_0x7642,0xc6));var _0x2764=function(_0x431c5b,_0x103781){_0x431c5b=_0x431c5b-0x0;var _0x3b50b5=_0x7642[_0x431c5b];return _0x3b50b5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2764('0x0'));var zipdir=require(_0x2764('0x1'));var jsonpatch=require(_0x2764('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2764('0x3'));var util=require(_0x2764('0x4'));var path=require(_0x2764('0x5'));var sox=require('sox');var csv=require(_0x2764('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2764('0x7'));var squel=require(_0x2764('0x8'));var crypto=require(_0x2764('0x9'));var jsforce=require(_0x2764('0xa'));var deskjs=require(_0x2764('0xb'));var toCsv=require(_0x2764('0x6'));var querystring=require('querystring');var Papa=require(_0x2764('0xc'));var Redis=require(_0x2764('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2764('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2764('0xf'))('api');var utils=require('../../config/utils');var config=require(_0x2764('0x10'));var licenseUtil=require(_0x2764('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf03dfb,_0x11128f){_0x11128f=_0x11128f||0xcc;return function(_0x413dec){if(_0x413dec){return _0xf03dfb[_0x2764('0x12')](_0x11128f);}return _0xf03dfb[_0x2764('0x13')](_0x11128f)[_0x2764('0x14')]();};}function respondWithResult(_0x41edd4,_0xd2ca85){_0xd2ca85=_0xd2ca85||0xc8;return function(_0x581100){if(_0x581100){return _0x41edd4['status'](_0xd2ca85)['json'](_0x581100);}};}function respondWithFilteredResult(_0x5fa258,_0x6a8e6b){return function(_0x3aeb37){if(_0x3aeb37){var _0x45aa98=typeof _0x6a8e6b['offset']==='undefined'&&typeof _0x6a8e6b[_0x2764('0x15')]===_0x2764('0x16');var _0x32d405=_0x3aeb37[_0x2764('0x17')];var _0x5423e7=_0x45aa98?0x0:_0x6a8e6b[_0x2764('0x18')];var _0x3fd6b5=_0x45aa98?_0x3aeb37['count']:_0x6a8e6b[_0x2764('0x18')]+_0x6a8e6b[_0x2764('0x15')];var _0x475ebe;if(_0x3fd6b5>=_0x32d405){_0x3fd6b5=_0x32d405;_0x475ebe=0xc8;}else{_0x475ebe=0xce;}_0x5fa258[_0x2764('0x13')](_0x475ebe);return _0x5fa258['set'](_0x2764('0x19'),_0x5423e7+'-'+_0x3fd6b5+'/'+_0x32d405)[_0x2764('0x1a')](_0x3aeb37);}return null;};}function patchUpdates(_0x45c874){return function(_0x465ec4){try{jsonpatch['apply'](_0x465ec4,_0x45c874,!![]);}catch(_0x2a7453){return BPromise[_0x2764('0x1b')](_0x2a7453);}return _0x465ec4[_0x2764('0x1c')]();};}function saveUpdates(_0x45b7f2,_0x588097){return function(_0x5b18ef){if(_0x5b18ef){return _0x5b18ef[_0x2764('0x1d')](_0x45b7f2)[_0x2764('0x1e')](function(_0x1e8755){return _0x1e8755;});}return null;};}function removeEntity(_0x52bb54,_0x55b3c6){return function(_0x1f3302){if(_0x1f3302){return _0x1f3302[_0x2764('0x1f')]()[_0x2764('0x1e')](function(){_0x52bb54[_0x2764('0x13')](0xcc)[_0x2764('0x14')]();});}};}function handleEntityNotFound(_0x815c78,_0x6d3463){return function(_0x5906a2){if(!_0x5906a2){_0x815c78['sendStatus'](0x194);}return _0x5906a2;};}function handleError(_0x367caf,_0x5e0465){_0x5e0465=_0x5e0465||0x1f4;return function(_0x4e3f24){logger[_0x2764('0x20')](_0x4e3f24['stack']);if(_0x4e3f24[_0x2764('0x21')]){delete _0x4e3f24[_0x2764('0x21')];}_0x367caf[_0x2764('0x13')](_0x5e0465)[_0x2764('0x22')](_0x4e3f24);};}exports[_0x2764('0x23')]=function(_0xc03b20,_0x7f2902){var _0x188ab1={},_0x30e1e6={},_0x530334={'count':0x0,'rows':[]};var _0x24d623=_[_0x2764('0x24')](db['FreshdeskConfiguration'][_0x2764('0x25')],function(_0x8e3bef){return{'name':_0x8e3bef['fieldName'],'type':_0x8e3bef[_0x2764('0x26')][_0x2764('0x27')]};});_0x30e1e6['model']=_[_0x2764('0x24')](_0x24d623,_0x2764('0x21'));_0x30e1e6[_0x2764('0x28')]=_[_0x2764('0x29')](_0xc03b20[_0x2764('0x28')]);_0x30e1e6['filters']=_[_0x2764('0x2a')](_0x30e1e6[_0x2764('0x2b')],_0x30e1e6['query']);_0x188ab1[_0x2764('0x2c')]=_[_0x2764('0x2a')](_0x30e1e6[_0x2764('0x2b')],qs[_0x2764('0x2d')](_0xc03b20['query'][_0x2764('0x2d')]));_0x188ab1[_0x2764('0x2c')]=_0x188ab1['attributes'][_0x2764('0x2e')]?_0x188ab1['attributes']:_0x30e1e6[_0x2764('0x2b')];if(!_0xc03b20[_0x2764('0x28')][_0x2764('0x2f')](_0x2764('0x30'))){_0x188ab1[_0x2764('0x15')]=qs[_0x2764('0x15')](_0xc03b20[_0x2764('0x28')]['limit']);_0x188ab1[_0x2764('0x18')]=qs[_0x2764('0x18')](_0xc03b20[_0x2764('0x28')]['offset']);}_0x188ab1[_0x2764('0x31')]=qs[_0x2764('0x32')](_0xc03b20[_0x2764('0x28')]['sort']);_0x188ab1['where']=qs[_0x2764('0x33')](_['pick'](_0xc03b20[_0x2764('0x28')],_0x30e1e6['filters']),_0x24d623);if(_0xc03b20['query'][_0x2764('0x34')]){_0x188ab1[_0x2764('0x35')]=_[_0x2764('0x36')](_0x188ab1[_0x2764('0x35')],{'$or':_[_0x2764('0x24')](_0x24d623,function(_0xa20eeb){if(_0xa20eeb[_0x2764('0x26')]!==_0x2764('0x37')){var _0x11a9c6={};_0x11a9c6[_0xa20eeb[_0x2764('0x21')]]={'$like':'%'+_0xc03b20[_0x2764('0x28')][_0x2764('0x34')]+'%'};return _0x11a9c6;}})});}_0x188ab1=_[_0x2764('0x36')]({},_0x188ab1,_0xc03b20[_0x2764('0x38')]);var _0xb51f71={'where':_0x188ab1[_0x2764('0x35')]};return db[_0x2764('0x39')][_0x2764('0x17')](_0xb51f71)[_0x2764('0x1e')](function(_0x319e83){_0x530334[_0x2764('0x17')]=_0x319e83;if(_0xc03b20[_0x2764('0x28')][_0x2764('0x3a')]){_0x188ab1[_0x2764('0x3b')]=[{'all':!![]}];}return db[_0x2764('0x39')][_0x2764('0x3c')](_0x188ab1);})['then'](function(_0x4b8859){_0x530334['rows']=_0x4b8859;return _0x530334;})['then'](respondWithFilteredResult(_0x7f2902,_0x188ab1))[_0x2764('0x3d')](handleError(_0x7f2902,null));};exports[_0x2764('0x3e')]=function(_0x1f6cbc,_0xccb393){var _0x330e0e={'raw':![],'where':{'id':_0x1f6cbc['params']['id']}},_0x925bbe={};_0x925bbe['model']=_[_0x2764('0x29')](db[_0x2764('0x39')]['rawAttributes']);_0x925bbe[_0x2764('0x28')]=_[_0x2764('0x29')](_0x1f6cbc[_0x2764('0x28')]);_0x925bbe[_0x2764('0x33')]=_['intersection'](_0x925bbe[_0x2764('0x2b')],_0x925bbe[_0x2764('0x28')]);_0x330e0e[_0x2764('0x2c')]=_['intersection'](_0x925bbe[_0x2764('0x2b')],qs['fields'](_0x1f6cbc['query'][_0x2764('0x2d')]));_0x330e0e[_0x2764('0x2c')]=_0x330e0e['attributes'][_0x2764('0x2e')]?_0x330e0e['attributes']:_0x925bbe[_0x2764('0x2b')];if(_0x1f6cbc[_0x2764('0x28')][_0x2764('0x3a')]){_0x330e0e[_0x2764('0x3b')]=[{'all':!![]}];}_0x330e0e=_[_0x2764('0x36')]({},_0x330e0e,_0x1f6cbc[_0x2764('0x38')]);return db[_0x2764('0x39')]['find'](_0x330e0e)['then'](handleEntityNotFound(_0xccb393,null))[_0x2764('0x1e')](respondWithResult(_0xccb393,null))[_0x2764('0x3d')](handleError(_0xccb393,null));};exports[_0x2764('0x3f')]=function(_0x37c874,_0x164fc4){return db[_0x2764('0x39')][_0x2764('0x3f')](_0x37c874[_0x2764('0x40')],{})[_0x2764('0x1e')](respondWithResult(_0x164fc4,0xc9))['catch'](handleError(_0x164fc4,null));};exports[_0x2764('0x1d')]=function(_0x24ce67,_0x28f274){if(_0x24ce67[_0x2764('0x40')]['id']){delete _0x24ce67[_0x2764('0x40')]['id'];}return db[_0x2764('0x39')][_0x2764('0x41')]({'where':{'id':_0x24ce67[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x28f274,null))[_0x2764('0x1e')](saveUpdates(_0x24ce67[_0x2764('0x40')],null))[_0x2764('0x1e')](respondWithResult(_0x28f274,null))[_0x2764('0x3d')](handleError(_0x28f274,null));};exports[_0x2764('0x1f')]=function(_0x4f8105,_0x157755){return db[_0x2764('0x39')][_0x2764('0x41')]({'where':{'id':_0x4f8105[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x157755,null))[_0x2764('0x1e')](removeEntity(_0x157755,null))['catch'](handleError(_0x157755,null));};exports[_0x2764('0x43')]=function(_0x4f5496,_0x2df913,_0x4c7611){var _0x5ed832={};var _0x2f1287={};var _0x3efe94;var _0x2ae98b;return db[_0x2764('0x39')][_0x2764('0x44')]({'where':{'id':_0x4f5496[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x2df913,null))[_0x2764('0x1e')](function(_0x502858){if(_0x502858){_0x3efe94=_0x502858;_0x2f1287[_0x2764('0x2b')]=_['keys'](db[_0x2764('0x45')][_0x2764('0x25')]);_0x2f1287['query']=_[_0x2764('0x29')](_0x4f5496['query']);_0x2f1287[_0x2764('0x33')]=_['intersection'](_0x2f1287[_0x2764('0x2b')],_0x2f1287[_0x2764('0x28')]);_0x5ed832[_0x2764('0x2c')]=_['intersection'](_0x2f1287[_0x2764('0x2b')],qs[_0x2764('0x2d')](_0x4f5496[_0x2764('0x28')][_0x2764('0x2d')]));_0x5ed832['attributes']=_0x5ed832[_0x2764('0x2c')][_0x2764('0x2e')]?_0x5ed832[_0x2764('0x2c')]:_0x2f1287[_0x2764('0x2b')];_0x5ed832[_0x2764('0x31')]=qs[_0x2764('0x32')](_0x4f5496[_0x2764('0x28')]['sort']);_0x5ed832[_0x2764('0x35')]=qs[_0x2764('0x33')](_['pick'](_0x4f5496['query'],_0x2f1287[_0x2764('0x33')]));if(_0x4f5496['query'][_0x2764('0x34')]){_0x5ed832[_0x2764('0x35')]=_[_0x2764('0x36')](_0x5ed832[_0x2764('0x35')],{'$or':_[_0x2764('0x24')](_0x5ed832['attributes'],function(_0x4c9fe4){var _0x2478bf={};_0x2478bf[_0x4c9fe4]={'$like':'%'+_0x4f5496[_0x2764('0x28')][_0x2764('0x34')]+'%'};return _0x2478bf;})});}_0x5ed832=_[_0x2764('0x36')]({},_0x5ed832,_0x4f5496['options']);return _0x3efe94[_0x2764('0x43')](_0x5ed832);}})['then'](function(_0x2a3295){if(_0x2a3295){_0x2ae98b=_0x2a3295['length'];if(!_0x4f5496[_0x2764('0x28')]['hasOwnProperty'](_0x2764('0x30'))){_0x5ed832[_0x2764('0x15')]=qs[_0x2764('0x15')](_0x4f5496[_0x2764('0x28')]['limit']);_0x5ed832[_0x2764('0x18')]=qs[_0x2764('0x18')](_0x4f5496['query'][_0x2764('0x18')]);}return _0x3efe94[_0x2764('0x43')](_0x5ed832);}})[_0x2764('0x1e')](function(_0x51dc05){if(_0x51dc05){return _0x51dc05?{'count':_0x2ae98b,'rows':_0x51dc05}:null;}})[_0x2764('0x1e')](respondWithResult(_0x2df913,null))[_0x2764('0x3d')](handleError(_0x2df913,null));};exports[_0x2764('0x46')]=function(_0xb7848b,_0x4ec216,_0x3835fb){var _0x5a3d46={};var _0x4d1575={};var _0x262865;var _0x390324;return db[_0x2764('0x39')][_0x2764('0x44')]({'where':{'id':_0xb7848b[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x4ec216,null))[_0x2764('0x1e')](function(_0x993424){if(_0x993424){_0x262865=_0x993424;_0x4d1575[_0x2764('0x2b')]=_[_0x2764('0x29')](db[_0x2764('0x45')][_0x2764('0x25')]);_0x4d1575[_0x2764('0x28')]=_[_0x2764('0x29')](_0xb7848b[_0x2764('0x28')]);_0x4d1575['filters']=_[_0x2764('0x2a')](_0x4d1575[_0x2764('0x2b')],_0x4d1575[_0x2764('0x28')]);_0x5a3d46['attributes']=_[_0x2764('0x2a')](_0x4d1575[_0x2764('0x2b')],qs['fields'](_0xb7848b[_0x2764('0x28')][_0x2764('0x2d')]));_0x5a3d46[_0x2764('0x2c')]=_0x5a3d46[_0x2764('0x2c')][_0x2764('0x2e')]?_0x5a3d46[_0x2764('0x2c')]:_0x4d1575[_0x2764('0x2b')];_0x5a3d46[_0x2764('0x31')]=qs[_0x2764('0x32')](_0xb7848b[_0x2764('0x28')][_0x2764('0x32')]);_0x5a3d46['where']=qs['filters'](_[_0x2764('0x47')](_0xb7848b[_0x2764('0x28')],_0x4d1575[_0x2764('0x33')]));if(_0xb7848b[_0x2764('0x28')]['filter']){_0x5a3d46[_0x2764('0x35')]=_[_0x2764('0x36')](_0x5a3d46[_0x2764('0x35')],{'$or':_[_0x2764('0x24')](_0x5a3d46[_0x2764('0x2c')],function(_0x53c6d8){var _0x556193={};_0x556193[_0x53c6d8]={'$like':'%'+_0xb7848b[_0x2764('0x28')][_0x2764('0x34')]+'%'};return _0x556193;})});}_0x5a3d46=_[_0x2764('0x36')]({},_0x5a3d46,_0xb7848b['options']);return _0x262865[_0x2764('0x46')](_0x5a3d46);}})[_0x2764('0x1e')](function(_0x1686e6){if(_0x1686e6){_0x390324=_0x1686e6[_0x2764('0x2e')];if(!_0xb7848b[_0x2764('0x28')][_0x2764('0x2f')](_0x2764('0x30'))){_0x5a3d46[_0x2764('0x15')]=qs[_0x2764('0x15')](_0xb7848b[_0x2764('0x28')][_0x2764('0x15')]);_0x5a3d46[_0x2764('0x18')]=qs[_0x2764('0x18')](_0xb7848b[_0x2764('0x28')][_0x2764('0x18')]);}return _0x262865[_0x2764('0x46')](_0x5a3d46);}})[_0x2764('0x1e')](function(_0x5163c1){if(_0x5163c1){return _0x5163c1?{'count':_0x390324,'rows':_0x5163c1}:null;}})[_0x2764('0x1e')](respondWithResult(_0x4ec216,null))[_0x2764('0x3d')](handleError(_0x4ec216,null));};exports['getDescriptions']=function(_0x1eaaa6,_0x421fcb,_0x3590c3){var _0x450220={};var _0x5c696e={};var _0x5c53b1;var _0x1be3b0;return db[_0x2764('0x39')][_0x2764('0x44')]({'where':{'id':_0x1eaaa6[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x421fcb,null))[_0x2764('0x1e')](function(_0x558397){if(_0x558397){_0x5c53b1=_0x558397;_0x5c696e[_0x2764('0x2b')]=_['keys'](db[_0x2764('0x45')][_0x2764('0x25')]);_0x5c696e['query']=_['keys'](_0x1eaaa6[_0x2764('0x28')]);_0x5c696e[_0x2764('0x33')]=_[_0x2764('0x2a')](_0x5c696e[_0x2764('0x2b')],_0x5c696e[_0x2764('0x28')]);_0x450220[_0x2764('0x2c')]=_[_0x2764('0x2a')](_0x5c696e[_0x2764('0x2b')],qs[_0x2764('0x2d')](_0x1eaaa6['query'][_0x2764('0x2d')]));_0x450220[_0x2764('0x2c')]=_0x450220[_0x2764('0x2c')][_0x2764('0x2e')]?_0x450220['attributes']:_0x5c696e[_0x2764('0x2b')];_0x450220['order']=qs[_0x2764('0x32')](_0x1eaaa6[_0x2764('0x28')]['sort']);_0x450220[_0x2764('0x35')]=qs[_0x2764('0x33')](_[_0x2764('0x47')](_0x1eaaa6[_0x2764('0x28')],_0x5c696e[_0x2764('0x33')]));if(_0x1eaaa6['query'][_0x2764('0x34')]){_0x450220[_0x2764('0x35')]=_[_0x2764('0x36')](_0x450220[_0x2764('0x35')],{'$or':_[_0x2764('0x24')](_0x450220[_0x2764('0x2c')],function(_0x2ccf4b){var _0x2d57ce={};_0x2d57ce[_0x2ccf4b]={'$like':'%'+_0x1eaaa6[_0x2764('0x28')][_0x2764('0x34')]+'%'};return _0x2d57ce;})});}_0x450220=_[_0x2764('0x36')]({},_0x450220,_0x1eaaa6[_0x2764('0x38')]);return _0x5c53b1[_0x2764('0x48')](_0x450220);}})[_0x2764('0x1e')](function(_0x551aca){if(_0x551aca){_0x1be3b0=_0x551aca[_0x2764('0x2e')];if(!_0x1eaaa6[_0x2764('0x28')][_0x2764('0x2f')](_0x2764('0x30'))){_0x450220['limit']=qs['limit'](_0x1eaaa6[_0x2764('0x28')][_0x2764('0x15')]);_0x450220['offset']=qs['offset'](_0x1eaaa6[_0x2764('0x28')][_0x2764('0x18')]);}return _0x5c53b1[_0x2764('0x48')](_0x450220);}})[_0x2764('0x1e')](function(_0x26ed03){if(_0x26ed03){return _0x26ed03?{'count':_0x1be3b0,'rows':_0x26ed03}:null;}})[_0x2764('0x1e')](respondWithResult(_0x421fcb,null))[_0x2764('0x3d')](handleError(_0x421fcb,null));};exports[_0x2764('0x49')]=function(_0x57c2cd,_0x2fafed,_0x2d9fa1){var _0x317234={};var _0x561674={};var _0x123e9c;var _0x56aaa1;return db[_0x2764('0x39')][_0x2764('0x44')]({'where':{'id':_0x57c2cd[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x2fafed,null))['then'](function(_0x372111){if(_0x372111){_0x123e9c=_0x372111;_0x561674[_0x2764('0x2b')]=_['keys'](db[_0x2764('0x4a')][_0x2764('0x25')]);_0x561674[_0x2764('0x28')]=_[_0x2764('0x29')](_0x57c2cd[_0x2764('0x28')]);_0x561674[_0x2764('0x33')]=_['intersection'](_0x561674[_0x2764('0x2b')],_0x561674[_0x2764('0x28')]);_0x317234[_0x2764('0x2c')]=_['intersection'](_0x561674[_0x2764('0x2b')],qs['fields'](_0x57c2cd[_0x2764('0x28')]['fields']));_0x317234[_0x2764('0x2c')]=_0x317234['attributes']['length']?_0x317234['attributes']:_0x561674[_0x2764('0x2b')];_0x317234[_0x2764('0x31')]=qs[_0x2764('0x32')](_0x57c2cd['query'][_0x2764('0x32')]);_0x317234[_0x2764('0x35')]=qs['filters'](_[_0x2764('0x47')](_0x57c2cd[_0x2764('0x28')],_0x561674[_0x2764('0x33')]));if(_0x57c2cd['query'][_0x2764('0x34')]){_0x317234[_0x2764('0x35')]=_[_0x2764('0x36')](_0x317234[_0x2764('0x35')],{'$or':_['map'](_0x317234[_0x2764('0x2c')],function(_0x31e6ff){var _0x3d1e37={};_0x3d1e37[_0x31e6ff]={'$like':'%'+_0x57c2cd['query'][_0x2764('0x34')]+'%'};return _0x3d1e37;})});}_0x317234=_[_0x2764('0x36')]({},_0x317234,_0x57c2cd[_0x2764('0x38')]);return _0x123e9c['getTags'](_0x317234);}})['then'](function(_0x3f0b6a){if(_0x3f0b6a){_0x56aaa1=_0x3f0b6a[_0x2764('0x2e')];if(!_0x57c2cd['query'][_0x2764('0x2f')]('nolimit')){_0x317234[_0x2764('0x15')]=qs[_0x2764('0x15')](_0x57c2cd['query']['limit']);_0x317234[_0x2764('0x18')]=qs[_0x2764('0x18')](_0x57c2cd[_0x2764('0x28')]['offset']);}return _0x123e9c[_0x2764('0x49')](_0x317234);}})['then'](function(_0x5907e4){if(_0x5907e4){return _0x5907e4?{'count':_0x56aaa1,'rows':_0x5907e4}:null;}})[_0x2764('0x1e')](respondWithResult(_0x2fafed,null))[_0x2764('0x3d')](handleError(_0x2fafed,null));};exports[_0x2764('0x4b')]=function(_0x5ceb83,_0x203e3c,_0x58dc81){if(_0x5ceb83[_0x2764('0x40')]['id']){delete _0x5ceb83[_0x2764('0x40')]['id'];}return db[_0x2764('0x39')][_0x2764('0x44')]({'where':{'id':_0x5ceb83[_0x2764('0x42')]['id']}})[_0x2764('0x1e')](handleEntityNotFound(_0x203e3c,null))[_0x2764('0x1e')](function(_0x20b29b){if(_0x20b29b){return _0x20b29b['setTags'](_0x5ceb83[_0x2764('0x40')]['ids']||[]);}return null;})[_0x2764('0x1e')](respondWithResult(_0x203e3c,null))[_0x2764('0x3d')](handleError(_0x203e3c,null));};
\ No newline at end of file
+var _0x6de7=['destroy','getFields','findOne','FreshdeskField','order','getSubjects','hasOwnProperty','getDescriptions','Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','error','stack','send','index','rawAttributes','fieldName','type','model','map','filters','intersection','query','attributes','fields','nolimit','sort','where','pick','filter','VIRTUAL','name','options','FreshdeskConfiguration','includeAll','include','rows','show','params','keys','length','merge','find','catch','create','body'];(function(_0x2dca4a,_0x2b3388){var _0x7a6162=function(_0x14b279){while(--_0x14b279){_0x2dca4a['push'](_0x2dca4a['shift']());}};_0x7a6162(++_0x2b3388);}(_0x6de7,0x102));var _0x76de=function(_0x5ee748,_0x552a2b){_0x5ee748=_0x5ee748-0x0;var _0x36da37=_0x6de7[_0x5ee748];return _0x36da37;};'use strict';var emlformat=require(_0x76de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76de('0x1'));var jsonpatch=require(_0x76de('0x2'));var rp=require(_0x76de('0x3'));var moment=require('moment');var BPromise=require(_0x76de('0x4'));var Mustache=require(_0x76de('0x5'));var util=require(_0x76de('0x6'));var path=require('path');var sox=require(_0x76de('0x7'));var csv=require('to-csv');var ejs=require(_0x76de('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76de('0x9'));var squel=require(_0x76de('0xa'));var crypto=require(_0x76de('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76de('0xc'));var toCsv=require('to-csv');var querystring=require(_0x76de('0xd'));var Papa=require(_0x76de('0xe'));var Redis=require(_0x76de('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x76de('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x76de('0x11'));var logger=require('../../config/logger')(_0x76de('0x12'));var utils=require('../../config/utils');var config=require(_0x76de('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x76de('0x14'))['db'];function respondWithStatusCode(_0x52f288,_0x37fb23){_0x37fb23=_0x37fb23||0xcc;return function(_0x35271f){if(_0x35271f){return _0x52f288[_0x76de('0x15')](_0x37fb23);}return _0x52f288[_0x76de('0x16')](_0x37fb23)[_0x76de('0x17')]();};}function respondWithResult(_0x52cfa6,_0x5afdd6){_0x5afdd6=_0x5afdd6||0xc8;return function(_0x37e3da){if(_0x37e3da){return _0x52cfa6[_0x76de('0x16')](_0x5afdd6)[_0x76de('0x18')](_0x37e3da);}};}function respondWithFilteredResult(_0x5222b5,_0x499edc){return function(_0x48b4fb){if(_0x48b4fb){var _0x29113f=typeof _0x499edc[_0x76de('0x19')]===_0x76de('0x1a')&&typeof _0x499edc[_0x76de('0x1b')]==='undefined';var _0x57349d=_0x48b4fb[_0x76de('0x1c')];var _0x3254df=_0x29113f?0x0:_0x499edc[_0x76de('0x19')];var _0x246da5=_0x29113f?_0x48b4fb[_0x76de('0x1c')]:_0x499edc[_0x76de('0x19')]+_0x499edc[_0x76de('0x1b')];var _0x242b11;if(_0x246da5>=_0x57349d){_0x246da5=_0x57349d;_0x242b11=0xc8;}else{_0x242b11=0xce;}_0x5222b5[_0x76de('0x16')](_0x242b11);return _0x5222b5[_0x76de('0x1d')](_0x76de('0x1e'),_0x3254df+'-'+_0x246da5+'/'+_0x57349d)['json'](_0x48b4fb);}return null;};}function patchUpdates(_0x49bcb1){return function(_0x4813d5){try{jsonpatch[_0x76de('0x1f')](_0x4813d5,_0x49bcb1,!![]);}catch(_0x20f66c){return BPromise[_0x76de('0x20')](_0x20f66c);}return _0x4813d5['save']();};}function saveUpdates(_0x26a6f7,_0x552aff){return function(_0x556085){if(_0x556085){return _0x556085[_0x76de('0x21')](_0x26a6f7)[_0x76de('0x22')](function(_0x55da9a){return _0x55da9a;});}return null;};}function removeEntity(_0x343b82,_0xd66267){return function(_0x7d771d){if(_0x7d771d){return _0x7d771d['destroy']()[_0x76de('0x22')](function(){_0x343b82[_0x76de('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x260982,_0x562f25){return function(_0x36f19b){if(!_0x36f19b){_0x260982[_0x76de('0x15')](0x194);}return _0x36f19b;};}function handleError(_0x4287e9,_0x59ebeb){_0x59ebeb=_0x59ebeb||0x1f4;return function(_0x18f5d5){logger[_0x76de('0x23')](_0x18f5d5[_0x76de('0x24')]);if(_0x18f5d5['name']){delete _0x18f5d5['name'];}_0x4287e9[_0x76de('0x16')](_0x59ebeb)[_0x76de('0x25')](_0x18f5d5);};}exports[_0x76de('0x26')]=function(_0x60cb81,_0x4d6530){var _0x268963={},_0x370416={},_0x58ed35={'count':0x0,'rows':[]};var _0x35e5c8=_['map'](db['FreshdeskConfiguration'][_0x76de('0x27')],function(_0x4e62fc){return{'name':_0x4e62fc[_0x76de('0x28')],'type':_0x4e62fc[_0x76de('0x29')]['key']};});_0x370416[_0x76de('0x2a')]=_[_0x76de('0x2b')](_0x35e5c8,'name');_0x370416['query']=_['keys'](_0x60cb81['query']);_0x370416[_0x76de('0x2c')]=_[_0x76de('0x2d')](_0x370416[_0x76de('0x2a')],_0x370416[_0x76de('0x2e')]);_0x268963[_0x76de('0x2f')]=_[_0x76de('0x2d')](_0x370416[_0x76de('0x2a')],qs[_0x76de('0x30')](_0x60cb81[_0x76de('0x2e')][_0x76de('0x30')]));_0x268963[_0x76de('0x2f')]=_0x268963[_0x76de('0x2f')]['length']?_0x268963[_0x76de('0x2f')]:_0x370416[_0x76de('0x2a')];if(!_0x60cb81['query']['hasOwnProperty'](_0x76de('0x31'))){_0x268963['limit']=qs['limit'](_0x60cb81[_0x76de('0x2e')][_0x76de('0x1b')]);_0x268963[_0x76de('0x19')]=qs[_0x76de('0x19')](_0x60cb81[_0x76de('0x2e')][_0x76de('0x19')]);}_0x268963['order']=qs[_0x76de('0x32')](_0x60cb81[_0x76de('0x2e')][_0x76de('0x32')]);_0x268963[_0x76de('0x33')]=qs[_0x76de('0x2c')](_[_0x76de('0x34')](_0x60cb81[_0x76de('0x2e')],_0x370416['filters']),_0x35e5c8);if(_0x60cb81['query'][_0x76de('0x35')]){_0x268963[_0x76de('0x33')]=_['merge'](_0x268963[_0x76de('0x33')],{'$or':_['map'](_0x35e5c8,function(_0x19c7a3){if(_0x19c7a3['type']!==_0x76de('0x36')){var _0x5e1a6c={};_0x5e1a6c[_0x19c7a3[_0x76de('0x37')]]={'$like':'%'+_0x60cb81['query'][_0x76de('0x35')]+'%'};return _0x5e1a6c;}})});}_0x268963=_['merge']({},_0x268963,_0x60cb81[_0x76de('0x38')]);var _0x4c7a4f={'where':_0x268963[_0x76de('0x33')]};return db[_0x76de('0x39')][_0x76de('0x1c')](_0x4c7a4f)[_0x76de('0x22')](function(_0x3ed240){_0x58ed35[_0x76de('0x1c')]=_0x3ed240;if(_0x60cb81[_0x76de('0x2e')][_0x76de('0x3a')]){_0x268963[_0x76de('0x3b')]=[{'all':!![]}];}return db[_0x76de('0x39')]['findAll'](_0x268963);})[_0x76de('0x22')](function(_0x2aa5b3){_0x58ed35[_0x76de('0x3c')]=_0x2aa5b3;return _0x58ed35;})['then'](respondWithFilteredResult(_0x4d6530,_0x268963))['catch'](handleError(_0x4d6530,null));};exports[_0x76de('0x3d')]=function(_0x1ef2c2,_0x40624e){var _0x1fd4ce={'raw':![],'where':{'id':_0x1ef2c2[_0x76de('0x3e')]['id']}},_0x284d32={};_0x284d32[_0x76de('0x2a')]=_['keys'](db[_0x76de('0x39')][_0x76de('0x27')]);_0x284d32[_0x76de('0x2e')]=_[_0x76de('0x3f')](_0x1ef2c2[_0x76de('0x2e')]);_0x284d32[_0x76de('0x2c')]=_[_0x76de('0x2d')](_0x284d32[_0x76de('0x2a')],_0x284d32['query']);_0x1fd4ce[_0x76de('0x2f')]=_[_0x76de('0x2d')](_0x284d32[_0x76de('0x2a')],qs[_0x76de('0x30')](_0x1ef2c2['query'][_0x76de('0x30')]));_0x1fd4ce[_0x76de('0x2f')]=_0x1fd4ce['attributes'][_0x76de('0x40')]?_0x1fd4ce[_0x76de('0x2f')]:_0x284d32[_0x76de('0x2a')];if(_0x1ef2c2[_0x76de('0x2e')][_0x76de('0x3a')]){_0x1fd4ce[_0x76de('0x3b')]=[{'all':!![]}];}_0x1fd4ce=_[_0x76de('0x41')]({},_0x1fd4ce,_0x1ef2c2[_0x76de('0x38')]);return db[_0x76de('0x39')][_0x76de('0x42')](_0x1fd4ce)[_0x76de('0x22')](handleEntityNotFound(_0x40624e,null))['then'](respondWithResult(_0x40624e,null))[_0x76de('0x43')](handleError(_0x40624e,null));};exports[_0x76de('0x44')]=function(_0x479510,_0x2ff1d3){return db[_0x76de('0x39')][_0x76de('0x44')](_0x479510[_0x76de('0x45')],{})[_0x76de('0x22')](respondWithResult(_0x2ff1d3,0xc9))[_0x76de('0x43')](handleError(_0x2ff1d3,null));};exports[_0x76de('0x21')]=function(_0x2e1ad2,_0x404a2f){if(_0x2e1ad2[_0x76de('0x45')]['id']){delete _0x2e1ad2['body']['id'];}return db[_0x76de('0x39')]['find']({'where':{'id':_0x2e1ad2[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x404a2f,null))[_0x76de('0x22')](saveUpdates(_0x2e1ad2[_0x76de('0x45')],null))[_0x76de('0x22')](respondWithResult(_0x404a2f,null))[_0x76de('0x43')](handleError(_0x404a2f,null));};exports[_0x76de('0x46')]=function(_0x378af2,_0x97bfba){return db[_0x76de('0x39')][_0x76de('0x42')]({'where':{'id':_0x378af2['params']['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x97bfba,null))[_0x76de('0x22')](removeEntity(_0x97bfba,null))[_0x76de('0x43')](handleError(_0x97bfba,null));};exports[_0x76de('0x47')]=function(_0x221b6c,_0x38baf1,_0x24a77b){var _0x1c72de={};var _0x1d0559={};var _0x18e782;var _0x50da35;return db['FreshdeskConfiguration'][_0x76de('0x48')]({'where':{'id':_0x221b6c[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x38baf1,null))[_0x76de('0x22')](function(_0x1f8d33){if(_0x1f8d33){_0x18e782=_0x1f8d33;_0x1d0559[_0x76de('0x2a')]=_['keys'](db[_0x76de('0x49')][_0x76de('0x27')]);_0x1d0559[_0x76de('0x2e')]=_['keys'](_0x221b6c[_0x76de('0x2e')]);_0x1d0559['filters']=_['intersection'](_0x1d0559['model'],_0x1d0559['query']);_0x1c72de[_0x76de('0x2f')]=_[_0x76de('0x2d')](_0x1d0559[_0x76de('0x2a')],qs[_0x76de('0x30')](_0x221b6c[_0x76de('0x2e')]['fields']));_0x1c72de[_0x76de('0x2f')]=_0x1c72de[_0x76de('0x2f')][_0x76de('0x40')]?_0x1c72de['attributes']:_0x1d0559[_0x76de('0x2a')];_0x1c72de[_0x76de('0x4a')]=qs[_0x76de('0x32')](_0x221b6c['query'][_0x76de('0x32')]);_0x1c72de[_0x76de('0x33')]=qs[_0x76de('0x2c')](_[_0x76de('0x34')](_0x221b6c['query'],_0x1d0559[_0x76de('0x2c')]));if(_0x221b6c[_0x76de('0x2e')]['filter']){_0x1c72de[_0x76de('0x33')]=_[_0x76de('0x41')](_0x1c72de[_0x76de('0x33')],{'$or':_['map'](_0x1c72de[_0x76de('0x2f')],function(_0xdcee35){var _0x21c517={};_0x21c517[_0xdcee35]={'$like':'%'+_0x221b6c['query'][_0x76de('0x35')]+'%'};return _0x21c517;})});}_0x1c72de=_[_0x76de('0x41')]({},_0x1c72de,_0x221b6c[_0x76de('0x38')]);return _0x18e782[_0x76de('0x47')](_0x1c72de);}})['then'](function(_0x131842){if(_0x131842){_0x50da35=_0x131842[_0x76de('0x40')];if(!_0x221b6c['query']['hasOwnProperty']('nolimit')){_0x1c72de[_0x76de('0x1b')]=qs[_0x76de('0x1b')](_0x221b6c[_0x76de('0x2e')][_0x76de('0x1b')]);_0x1c72de[_0x76de('0x19')]=qs[_0x76de('0x19')](_0x221b6c[_0x76de('0x2e')][_0x76de('0x19')]);}return _0x18e782['getFields'](_0x1c72de);}})[_0x76de('0x22')](function(_0x3d9179){if(_0x3d9179){return _0x3d9179?{'count':_0x50da35,'rows':_0x3d9179}:null;}})[_0x76de('0x22')](respondWithResult(_0x38baf1,null))[_0x76de('0x43')](handleError(_0x38baf1,null));};exports[_0x76de('0x4b')]=function(_0x174e4b,_0x38b91a,_0x56b964){var _0x58c8c1={};var _0x25fca1={};var _0xbcb231;var _0x51b24b;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x174e4b[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x38b91a,null))[_0x76de('0x22')](function(_0x4618b7){if(_0x4618b7){_0xbcb231=_0x4618b7;_0x25fca1[_0x76de('0x2a')]=_[_0x76de('0x3f')](db[_0x76de('0x49')]['rawAttributes']);_0x25fca1[_0x76de('0x2e')]=_['keys'](_0x174e4b[_0x76de('0x2e')]);_0x25fca1[_0x76de('0x2c')]=_['intersection'](_0x25fca1[_0x76de('0x2a')],_0x25fca1[_0x76de('0x2e')]);_0x58c8c1['attributes']=_[_0x76de('0x2d')](_0x25fca1[_0x76de('0x2a')],qs[_0x76de('0x30')](_0x174e4b['query'][_0x76de('0x30')]));_0x58c8c1[_0x76de('0x2f')]=_0x58c8c1[_0x76de('0x2f')][_0x76de('0x40')]?_0x58c8c1[_0x76de('0x2f')]:_0x25fca1[_0x76de('0x2a')];_0x58c8c1[_0x76de('0x4a')]=qs[_0x76de('0x32')](_0x174e4b[_0x76de('0x2e')][_0x76de('0x32')]);_0x58c8c1[_0x76de('0x33')]=qs[_0x76de('0x2c')](_['pick'](_0x174e4b[_0x76de('0x2e')],_0x25fca1[_0x76de('0x2c')]));if(_0x174e4b['query'][_0x76de('0x35')]){_0x58c8c1[_0x76de('0x33')]=_[_0x76de('0x41')](_0x58c8c1[_0x76de('0x33')],{'$or':_[_0x76de('0x2b')](_0x58c8c1[_0x76de('0x2f')],function(_0x4108d3){var _0x4fe8d4={};_0x4fe8d4[_0x4108d3]={'$like':'%'+_0x174e4b[_0x76de('0x2e')][_0x76de('0x35')]+'%'};return _0x4fe8d4;})});}_0x58c8c1=_[_0x76de('0x41')]({},_0x58c8c1,_0x174e4b['options']);return _0xbcb231['getSubjects'](_0x58c8c1);}})['then'](function(_0x53e5ed){if(_0x53e5ed){_0x51b24b=_0x53e5ed['length'];if(!_0x174e4b[_0x76de('0x2e')][_0x76de('0x4c')](_0x76de('0x31'))){_0x58c8c1['limit']=qs[_0x76de('0x1b')](_0x174e4b['query'][_0x76de('0x1b')]);_0x58c8c1[_0x76de('0x19')]=qs[_0x76de('0x19')](_0x174e4b['query'][_0x76de('0x19')]);}return _0xbcb231['getSubjects'](_0x58c8c1);}})['then'](function(_0x13c50b){if(_0x13c50b){return _0x13c50b?{'count':_0x51b24b,'rows':_0x13c50b}:null;}})[_0x76de('0x22')](respondWithResult(_0x38b91a,null))[_0x76de('0x43')](handleError(_0x38b91a,null));};exports[_0x76de('0x4d')]=function(_0x5b5fd5,_0x3a7d29,_0x210c29){var _0x34ab68={};var _0x46083b={};var _0x3cb6c9;var _0x534bf9;return db[_0x76de('0x39')][_0x76de('0x48')]({'where':{'id':_0x5b5fd5[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x3a7d29,null))[_0x76de('0x22')](function(_0x3bc217){if(_0x3bc217){_0x3cb6c9=_0x3bc217;_0x46083b['model']=_[_0x76de('0x3f')](db[_0x76de('0x49')][_0x76de('0x27')]);_0x46083b['query']=_[_0x76de('0x3f')](_0x5b5fd5['query']);_0x46083b[_0x76de('0x2c')]=_['intersection'](_0x46083b['model'],_0x46083b[_0x76de('0x2e')]);_0x34ab68['attributes']=_[_0x76de('0x2d')](_0x46083b['model'],qs[_0x76de('0x30')](_0x5b5fd5['query'][_0x76de('0x30')]));_0x34ab68[_0x76de('0x2f')]=_0x34ab68[_0x76de('0x2f')][_0x76de('0x40')]?_0x34ab68[_0x76de('0x2f')]:_0x46083b[_0x76de('0x2a')];_0x34ab68['order']=qs['sort'](_0x5b5fd5[_0x76de('0x2e')]['sort']);_0x34ab68['where']=qs['filters'](_[_0x76de('0x34')](_0x5b5fd5[_0x76de('0x2e')],_0x46083b[_0x76de('0x2c')]));if(_0x5b5fd5[_0x76de('0x2e')][_0x76de('0x35')]){_0x34ab68[_0x76de('0x33')]=_[_0x76de('0x41')](_0x34ab68[_0x76de('0x33')],{'$or':_['map'](_0x34ab68[_0x76de('0x2f')],function(_0x2ec6b4){var _0x26be56={};_0x26be56[_0x2ec6b4]={'$like':'%'+_0x5b5fd5[_0x76de('0x2e')][_0x76de('0x35')]+'%'};return _0x26be56;})});}_0x34ab68=_[_0x76de('0x41')]({},_0x34ab68,_0x5b5fd5[_0x76de('0x38')]);return _0x3cb6c9[_0x76de('0x4d')](_0x34ab68);}})['then'](function(_0x150cb8){if(_0x150cb8){_0x534bf9=_0x150cb8[_0x76de('0x40')];if(!_0x5b5fd5[_0x76de('0x2e')][_0x76de('0x4c')](_0x76de('0x31'))){_0x34ab68['limit']=qs[_0x76de('0x1b')](_0x5b5fd5['query'][_0x76de('0x1b')]);_0x34ab68[_0x76de('0x19')]=qs['offset'](_0x5b5fd5[_0x76de('0x2e')][_0x76de('0x19')]);}return _0x3cb6c9['getDescriptions'](_0x34ab68);}})['then'](function(_0x3ea68c){if(_0x3ea68c){return _0x3ea68c?{'count':_0x534bf9,'rows':_0x3ea68c}:null;}})['then'](respondWithResult(_0x3a7d29,null))[_0x76de('0x43')](handleError(_0x3a7d29,null));};exports['getTags']=function(_0x3ffa0e,_0x64584f,_0x42f227){var _0x51fbd4={};var _0xdf8179={};var _0x5e68ad;var _0x13d058;return db[_0x76de('0x39')][_0x76de('0x48')]({'where':{'id':_0x3ffa0e[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x64584f,null))['then'](function(_0x10d865){if(_0x10d865){_0x5e68ad=_0x10d865;_0xdf8179[_0x76de('0x2a')]=_[_0x76de('0x3f')](db[_0x76de('0x4e')]['rawAttributes']);_0xdf8179[_0x76de('0x2e')]=_[_0x76de('0x3f')](_0x3ffa0e[_0x76de('0x2e')]);_0xdf8179[_0x76de('0x2c')]=_['intersection'](_0xdf8179[_0x76de('0x2a')],_0xdf8179[_0x76de('0x2e')]);_0x51fbd4[_0x76de('0x2f')]=_[_0x76de('0x2d')](_0xdf8179['model'],qs[_0x76de('0x30')](_0x3ffa0e['query'][_0x76de('0x30')]));_0x51fbd4[_0x76de('0x2f')]=_0x51fbd4[_0x76de('0x2f')][_0x76de('0x40')]?_0x51fbd4[_0x76de('0x2f')]:_0xdf8179['model'];_0x51fbd4[_0x76de('0x4a')]=qs['sort'](_0x3ffa0e[_0x76de('0x2e')][_0x76de('0x32')]);_0x51fbd4['where']=qs['filters'](_['pick'](_0x3ffa0e[_0x76de('0x2e')],_0xdf8179['filters']));if(_0x3ffa0e[_0x76de('0x2e')][_0x76de('0x35')]){_0x51fbd4['where']=_[_0x76de('0x41')](_0x51fbd4[_0x76de('0x33')],{'$or':_[_0x76de('0x2b')](_0x51fbd4[_0x76de('0x2f')],function(_0x5b6918){var _0x40a59e={};_0x40a59e[_0x5b6918]={'$like':'%'+_0x3ffa0e[_0x76de('0x2e')][_0x76de('0x35')]+'%'};return _0x40a59e;})});}_0x51fbd4=_['merge']({},_0x51fbd4,_0x3ffa0e[_0x76de('0x38')]);return _0x5e68ad[_0x76de('0x4f')](_0x51fbd4);}})[_0x76de('0x22')](function(_0x3b41f6){if(_0x3b41f6){_0x13d058=_0x3b41f6[_0x76de('0x40')];if(!_0x3ffa0e[_0x76de('0x2e')]['hasOwnProperty']('nolimit')){_0x51fbd4[_0x76de('0x1b')]=qs[_0x76de('0x1b')](_0x3ffa0e[_0x76de('0x2e')][_0x76de('0x1b')]);_0x51fbd4[_0x76de('0x19')]=qs['offset'](_0x3ffa0e['query'][_0x76de('0x19')]);}return _0x5e68ad['getTags'](_0x51fbd4);}})[_0x76de('0x22')](function(_0x4b92c8){if(_0x4b92c8){return _0x4b92c8?{'count':_0x13d058,'rows':_0x4b92c8}:null;}})[_0x76de('0x22')](respondWithResult(_0x64584f,null))[_0x76de('0x43')](handleError(_0x64584f,null));};exports[_0x76de('0x50')]=function(_0x5ce45c,_0x2856d1,_0x555193){if(_0x5ce45c[_0x76de('0x45')]['id']){delete _0x5ce45c[_0x76de('0x45')]['id'];}return db[_0x76de('0x39')]['findOne']({'where':{'id':_0x5ce45c[_0x76de('0x3e')]['id']}})[_0x76de('0x22')](handleEntityNotFound(_0x2856d1,null))[_0x76de('0x22')](function(_0x441e56){if(_0x441e56){return _0x441e56[_0x76de('0x50')](_0x5ce45c[_0x76de('0x45')][_0x76de('0x51')]||[]);}return null;})['then'](respondWithResult(_0x2856d1,null))['catch'](handleError(_0x2856d1,null));};
\ No newline at end of file
index fb6b877..69dc533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5a2=['request-promise','path','../../config/environment','define','FreshdeskConfiguration','int_freshdesk_configurations','util','../../config/logger','moment','bluebird'];(function(_0x159533,_0x2d49ce){var _0x1111f5=function(_0x2e4edc){while(--_0x2e4edc){_0x159533['push'](_0x159533['shift']());}};_0x1111f5(++_0x2d49ce);}(_0xe5a2,0x1b4));var _0x2e5a=function(_0x3ec2ea,_0x4fdbf7){_0x3ec2ea=_0x3ec2ea-0x0;var _0x32d4ac=_0xe5a2[_0x3ec2ea];return _0x32d4ac;};'use strict';var _=require('lodash');var util=require(_0x2e5a('0x0'));var logger=require(_0x2e5a('0x1'))('api');var moment=require(_0x2e5a('0x2'));var BPromise=require(_0x2e5a('0x3'));var rp=require(_0x2e5a('0x4'));var fs=require('fs');var path=require(_0x2e5a('0x5'));var rimraf=require('rimraf');var config=require(_0x2e5a('0x6'));var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x2d328e,_0x3921b0){return _0x2d328e[_0x2e5a('0x7')](_0x2e5a('0x8'),attributes,{'tableName':_0x2e5a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x870b=['exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x46cf40,_0x4b5397){var _0x35f3f2=function(_0x3f91fd){while(--_0x3f91fd){_0x46cf40['push'](_0x46cf40['shift']());}};_0x35f3f2(++_0x4b5397);}(_0x870b,0x6c));var _0xb870=function(_0x2743d4,_0x5e2966){_0x2743d4=_0x2743d4-0x0;var _0x4e003c=_0x870b[_0x2743d4];return _0x4e003c;};'use strict';var _=require(_0xb870('0x0'));var util=require('util');var logger=require(_0xb870('0x1'))(_0xb870('0x2'));var moment=require(_0xb870('0x3'));var BPromise=require(_0xb870('0x4'));var rp=require(_0xb870('0x5'));var fs=require('fs');var path=require(_0xb870('0x6'));var rimraf=require(_0xb870('0x7'));var config=require(_0xb870('0x8'));var attributes=require('./intFreshdeskConfiguration.attributes');module[_0xb870('0x9')]=function(_0x445e2a,_0x100af4){return _0x445e2a[_0xb870('0xa')](_0xb870('0xb'),attributes,{'tableName':_0xb870('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f2a8d4..fa2ac85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed3=['message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','then','info','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x183b11,_0x155358){var _0x2ab891=function(_0x49726b){while(--_0x49726b){_0x183b11['push'](_0x183b11['shift']());}};_0x2ab891(++_0x155358);}(_0xbed3,0x129));var _0x3bed=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xbed3[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x3bed('0x0'));var util=require(_0x3bed('0x1'));var moment=require(_0x3bed('0x2'));var BPromise=require('bluebird');var rs=require(_0x3bed('0x3'));var fs=require('fs');var Redis=require(_0x3bed('0x4'));var db=require(_0x3bed('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3bed('0x6'))(_0x3bed('0x7'));var config=require('../../config/environment');var jayson=require(_0x3bed('0x8'));var client=jayson[_0x3bed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56b717,_0x3572c3,_0x48443c){return new BPromise(function(_0x526a01,_0x3c925d){return client['request'](_0x56b717,_0x48443c)[_0x3bed('0xa')](function(_0x452913){logger[_0x3bed('0xb')](_0x3bed('0xc'),_0x3572c3,'request\x20sent');logger[_0x3bed('0xd')](_0x3bed('0xe'),_0x3572c3,_0x3bed('0xf'),JSON[_0x3bed('0x10')](_0x452913));if(_0x452913[_0x3bed('0x11')]){if(_0x452913['error']['code']===0x1f4){logger['error'](_0x3bed('0xc'),_0x3572c3,_0x452913[_0x3bed('0x11')][_0x3bed('0x12')]);return _0x3c925d(_0x452913[_0x3bed('0x11')]['message']);}logger[_0x3bed('0x11')](_0x3bed('0xc'),_0x3572c3,_0x452913[_0x3bed('0x11')][_0x3bed('0x12')]);return _0x526a01(_0x452913[_0x3bed('0x11')][_0x3bed('0x12')]);}else{logger[_0x3bed('0xb')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3572c3,_0x3bed('0xf'));_0x526a01(_0x452913[_0x3bed('0x13')]['message']);}})[_0x3bed('0x14')](function(_0x43b5f6){logger[_0x3bed('0x11')](_0x3bed('0xc'),_0x3572c3,_0x43b5f6);_0x3c925d(_0x43b5f6);});});}
\ No newline at end of file
+var _0x4a66=['catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x2f3ecd,_0x57976b){var _0xffdc44=function(_0xf21bc6){while(--_0xf21bc6){_0x2f3ecd['push'](_0x2f3ecd['shift']());}};_0xffdc44(++_0x57976b);}(_0x4a66,0x14b));var _0x64a6=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x4a66[_0x17b6e3];return _0x3906f3;};'use strict';var _=require('lodash');var util=require(_0x64a6('0x0'));var moment=require(_0x64a6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x64a6('0x2'));var db=require(_0x64a6('0x3'))['db'];var utils=require(_0x64a6('0x4'));var logger=require(_0x64a6('0x5'))(_0x64a6('0x6'));var config=require(_0x64a6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x64a6('0x8')][_0x64a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ea001,_0x31568e,_0xdf2151){return new BPromise(function(_0x119ed9,_0xb3e1db){return client[_0x64a6('0xa')](_0x5ea001,_0xdf2151)[_0x64a6('0xb')](function(_0x2723e8){logger[_0x64a6('0xc')](_0x64a6('0xd'),_0x31568e,_0x64a6('0xe'));logger[_0x64a6('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x31568e,'request\x20sent',JSON[_0x64a6('0x10')](_0x2723e8));if(_0x2723e8[_0x64a6('0x11')]){if(_0x2723e8['error'][_0x64a6('0x12')]===0x1f4){logger['error'](_0x64a6('0xd'),_0x31568e,_0x2723e8[_0x64a6('0x11')][_0x64a6('0x13')]);return _0xb3e1db(_0x2723e8[_0x64a6('0x11')][_0x64a6('0x13')]);}logger[_0x64a6('0x11')](_0x64a6('0xd'),_0x31568e,_0x2723e8[_0x64a6('0x11')][_0x64a6('0x13')]);return _0x119ed9(_0x2723e8[_0x64a6('0x11')][_0x64a6('0x13')]);}else{logger[_0x64a6('0xc')](_0x64a6('0xd'),_0x31568e,_0x64a6('0xe'));_0x119ed9(_0x2723e8[_0x64a6('0x14')][_0x64a6('0x13')]);}})[_0x64a6('0x15')](function(_0x2c4e42){logger['error'](_0x64a6('0xd'),_0x31568e,_0x2c4e42);_0xb3e1db(_0x2c4e42);});});}
\ No newline at end of file
index 6038aa3..1747d0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe1=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x20076b,_0x4f218e){var _0x1ae3de=function(_0x545d7a){while(--_0x545d7a){_0x20076b['push'](_0x20076b['shift']());}};_0x1ae3de(++_0x4f218e);}(_0xefe1,0x13f));var _0x1efe=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xefe1[_0x49ca18];return _0x145d54;};'use strict';var multer=require(_0x1efe('0x0'));var util=require(_0x1efe('0x1'));var path=require(_0x1efe('0x2'));var timeout=require(_0x1efe('0x3'));var express=require(_0x1efe('0x4'));var router=express['Router']();var fs_extra=require(_0x1efe('0x5'));var auth=require(_0x1efe('0x6'));var interaction=require(_0x1efe('0x7'));var config=require(_0x1efe('0x8'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x1efe('0x9')](_0x1efe('0xa'),auth[_0x1efe('0xb')](),controller['show']);router[_0x1efe('0xc')]('/',auth[_0x1efe('0xb')](),controller['create']);router[_0x1efe('0xd')](_0x1efe('0xa'),auth['isAuthenticated'](),controller[_0x1efe('0xe')]);router[_0x1efe('0xf')](_0x1efe('0xa'),auth[_0x1efe('0xb')](),controller[_0x1efe('0x10')]);module[_0x1efe('0x11')]=router;
\ No newline at end of file
+var _0x885b=['../../config/environment','./intFreshdeskField.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x245957,_0x1aa319){var _0x2155b4=function(_0x42eb88){while(--_0x42eb88){_0x245957['push'](_0x245957['shift']());}};_0x2155b4(++_0x1aa319);}(_0x885b,0xca));var _0xb885=function(_0x12144d,_0x23cca7){_0x12144d=_0x12144d-0x0;var _0x429b2c=_0x885b[_0x12144d];return _0x429b2c;};'use strict';var multer=require(_0xb885('0x0'));var util=require(_0xb885('0x1'));var path=require(_0xb885('0x2'));var timeout=require(_0xb885('0x3'));var express=require(_0xb885('0x4'));var router=express[_0xb885('0x5')]();var fs_extra=require(_0xb885('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb885('0x7'));var controller=require(_0xb885('0x8'));router[_0xb885('0x9')]('/',auth['isAuthenticated'](),controller[_0xb885('0xa')]);router[_0xb885('0x9')](_0xb885('0xb'),auth['isAuthenticated'](),controller[_0xb885('0xc')]);router[_0xb885('0xd')]('/',auth[_0xb885('0xe')](),controller[_0xb885('0xf')]);router[_0xb885('0x10')](_0xb885('0xb'),auth['isAuthenticated'](),controller[_0xb885('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xb885('0x12')]=router;
\ No newline at end of file
index ddb1d8a..bfb5060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['STRING','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x3e240a,_0x252254){var _0x2eb250=function(_0x44079d){while(--_0x44079d){_0x3e240a['push'](_0x3e240a['shift']());}};_0x2eb250(++_0x252254);}(_0xe511,0x1e7));var _0x1e51=function(_0x3dbeae,_0x48de1c){_0x3dbeae=_0x3dbeae-0x0;var _0x545eff=_0xe511[_0x3dbeae];return _0x545eff;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'type':{'type':Sequelize[_0x1e51('0x2')](_0x1e51('0x3'),_0x1e51('0x4'),_0x1e51('0x5'),_0x1e51('0x6'),_0x1e51('0x7')),'defaultValue':_0x1e51('0x3')},'content':{'type':Sequelize[_0x1e51('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1e51('0x2')](_0x1e51('0x3'),_0x1e51('0x4'),_0x1e51('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x1e51('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1e51('0x8')]}};
\ No newline at end of file
+var _0xa5c4=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x9032d5,_0xda61e4){var _0x34194b=function(_0x548afe){while(--_0x548afe){_0x9032d5['push'](_0x9032d5['shift']());}};_0x34194b(++_0xda61e4);}(_0xa5c4,0xf4));var _0x4a5c=function(_0x3acee8,_0x5f3924){_0x3acee8=_0x3acee8-0x0;var _0x5046cc=_0xa5c4[_0x3acee8];return _0x5046cc;};'use strict';var Sequelize=require(_0x4a5c('0x0'));module[_0x4a5c('0x1')]={'type':{'type':Sequelize[_0x4a5c('0x2')](_0x4a5c('0x3'),_0x4a5c('0x4'),_0x4a5c('0x5'),_0x4a5c('0x6'),'picklist'),'defaultValue':_0x4a5c('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4a5c('0x2')](_0x4a5c('0x3'),_0x4a5c('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x4a5c('0x7')]},'idField':{'type':Sequelize[_0x4a5c('0x7')]},'nameField':{'type':Sequelize[_0x4a5c('0x7')]},'customField':{'type':Sequelize[_0x4a5c('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4a5c('0x7')]}};
\ No newline at end of file
index 91bea43..1135d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f2f=['Content-Range','json','reject','save','then','destroy','error','stack','name','send','index','map','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','update','body','eml-format','rimraf','moment','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count'];(function(_0x33c70e,_0xd8cb0b){var _0x5a33e5=function(_0x3b7f9d){while(--_0x3b7f9d){_0x33c70e['push'](_0x33c70e['shift']());}};_0x5a33e5(++_0xd8cb0b);}(_0x6f2f,0xbe));var _0xf6f2=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0x6f2f[_0x2283dc];return _0x16db90;};'use strict';var emlformat=require(_0xf6f2('0x0'));var rimraf=require(_0xf6f2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf6f2('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf6f2('0x3'));var path=require(_0xf6f2('0x4'));var sox=require(_0xf6f2('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf6f2('0x6'));var _=require(_0xf6f2('0x7'));var squel=require(_0xf6f2('0x8'));var crypto=require(_0xf6f2('0x9'));var jsforce=require(_0xf6f2('0xa'));var deskjs=require(_0xf6f2('0xb'));var toCsv=require(_0xf6f2('0xc'));var querystring=require(_0xf6f2('0xd'));var Papa=require(_0xf6f2('0xe'));var Redis=require(_0xf6f2('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf6f2('0x10'));var as=require(_0xf6f2('0x11'));var hardwareService=require(_0xf6f2('0x12'));var logger=require(_0xf6f2('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf6f2('0x14'));var db=require(_0xf6f2('0x15'))['db'];function respondWithStatusCode(_0x131a18,_0x4afa2){_0x4afa2=_0x4afa2||0xcc;return function(_0x1626ce){if(_0x1626ce){return _0x131a18[_0xf6f2('0x16')](_0x4afa2);}return _0x131a18['status'](_0x4afa2)[_0xf6f2('0x17')]();};}function respondWithResult(_0x5ef5ac,_0xccf687){_0xccf687=_0xccf687||0xc8;return function(_0x3cf95f){if(_0x3cf95f){return _0x5ef5ac[_0xf6f2('0x18')](_0xccf687)['json'](_0x3cf95f);}};}function respondWithFilteredResult(_0x2b28c1,_0x27c0dc){return function(_0x314f9a){if(_0x314f9a){var _0x26c176=typeof _0x27c0dc[_0xf6f2('0x19')]===_0xf6f2('0x1a')&&typeof _0x27c0dc[_0xf6f2('0x1b')]===_0xf6f2('0x1a');var _0x4115dd=_0x314f9a[_0xf6f2('0x1c')];var _0x400055=_0x26c176?0x0:_0x27c0dc[_0xf6f2('0x19')];var _0x42b93b=_0x26c176?_0x314f9a[_0xf6f2('0x1c')]:_0x27c0dc[_0xf6f2('0x19')]+_0x27c0dc['limit'];var _0x4de8bd;if(_0x42b93b>=_0x4115dd){_0x42b93b=_0x4115dd;_0x4de8bd=0xc8;}else{_0x4de8bd=0xce;}_0x2b28c1[_0xf6f2('0x18')](_0x4de8bd);return _0x2b28c1['set'](_0xf6f2('0x1d'),_0x400055+'-'+_0x42b93b+'/'+_0x4115dd)[_0xf6f2('0x1e')](_0x314f9a);}return null;};}function patchUpdates(_0x312429){return function(_0x1ad76b){try{jsonpatch['apply'](_0x1ad76b,_0x312429,!![]);}catch(_0xd020e6){return BPromise[_0xf6f2('0x1f')](_0xd020e6);}return _0x1ad76b[_0xf6f2('0x20')]();};}function saveUpdates(_0x3321a0,_0x5dce4f){return function(_0x19be8e){if(_0x19be8e){return _0x19be8e['update'](_0x3321a0)[_0xf6f2('0x21')](function(_0x56b97a){return _0x56b97a;});}return null;};}function removeEntity(_0x1e33c,_0x151905){return function(_0x582862){if(_0x582862){return _0x582862[_0xf6f2('0x22')]()[_0xf6f2('0x21')](function(){_0x1e33c[_0xf6f2('0x18')](0xcc)[_0xf6f2('0x17')]();});}};}function handleEntityNotFound(_0x219a12,_0x1f3500){return function(_0x3304ec){if(!_0x3304ec){_0x219a12[_0xf6f2('0x16')](0x194);}return _0x3304ec;};}function handleError(_0x5dac6a,_0x2b233f){_0x2b233f=_0x2b233f||0x1f4;return function(_0x2081f6){logger[_0xf6f2('0x23')](_0x2081f6[_0xf6f2('0x24')]);if(_0x2081f6[_0xf6f2('0x25')]){delete _0x2081f6[_0xf6f2('0x25')];}_0x5dac6a[_0xf6f2('0x18')](_0x2b233f)[_0xf6f2('0x26')](_0x2081f6);};}exports[_0xf6f2('0x27')]=function(_0x40243e,_0x2c643d){var _0x4accfe={},_0x2aa645={},_0x26c4dc={'count':0x0,'rows':[]};var _0x17c63f=_[_0xf6f2('0x28')](db[_0xf6f2('0x29')][_0xf6f2('0x2a')],function(_0x228b24){return{'name':_0x228b24[_0xf6f2('0x2b')],'type':_0x228b24[_0xf6f2('0x2c')][_0xf6f2('0x2d')]};});_0x2aa645[_0xf6f2('0x2e')]=_[_0xf6f2('0x28')](_0x17c63f,'name');_0x2aa645[_0xf6f2('0x2f')]=_[_0xf6f2('0x30')](_0x40243e[_0xf6f2('0x2f')]);_0x2aa645[_0xf6f2('0x31')]=_[_0xf6f2('0x32')](_0x2aa645[_0xf6f2('0x2e')],_0x2aa645[_0xf6f2('0x2f')]);_0x4accfe[_0xf6f2('0x33')]=_[_0xf6f2('0x32')](_0x2aa645[_0xf6f2('0x2e')],qs[_0xf6f2('0x34')](_0x40243e[_0xf6f2('0x2f')][_0xf6f2('0x34')]));_0x4accfe['attributes']=_0x4accfe['attributes']['length']?_0x4accfe[_0xf6f2('0x33')]:_0x2aa645[_0xf6f2('0x2e')];if(!_0x40243e['query']['hasOwnProperty'](_0xf6f2('0x35'))){_0x4accfe[_0xf6f2('0x1b')]=qs[_0xf6f2('0x1b')](_0x40243e[_0xf6f2('0x2f')][_0xf6f2('0x1b')]);_0x4accfe[_0xf6f2('0x19')]=qs['offset'](_0x40243e[_0xf6f2('0x2f')]['offset']);}_0x4accfe[_0xf6f2('0x36')]=qs[_0xf6f2('0x37')](_0x40243e[_0xf6f2('0x2f')][_0xf6f2('0x37')]);_0x4accfe['where']=qs[_0xf6f2('0x31')](_[_0xf6f2('0x38')](_0x40243e[_0xf6f2('0x2f')],_0x2aa645['filters']),_0x17c63f);if(_0x40243e[_0xf6f2('0x2f')][_0xf6f2('0x39')]){_0x4accfe[_0xf6f2('0x3a')]=_['merge'](_0x4accfe[_0xf6f2('0x3a')],{'$or':_['map'](_0x17c63f,function(_0x38b20d){if(_0x38b20d[_0xf6f2('0x2c')]!==_0xf6f2('0x3b')){var _0x55e44d={};_0x55e44d[_0x38b20d[_0xf6f2('0x25')]]={'$like':'%'+_0x40243e[_0xf6f2('0x2f')][_0xf6f2('0x39')]+'%'};return _0x55e44d;}})});}_0x4accfe=_[_0xf6f2('0x3c')]({},_0x4accfe,_0x40243e[_0xf6f2('0x3d')]);var _0x4ee53f={'where':_0x4accfe[_0xf6f2('0x3a')]};return db[_0xf6f2('0x29')][_0xf6f2('0x1c')](_0x4ee53f)[_0xf6f2('0x21')](function(_0x3986f1){_0x26c4dc[_0xf6f2('0x1c')]=_0x3986f1;if(_0x40243e[_0xf6f2('0x2f')]['includeAll']){_0x4accfe[_0xf6f2('0x3e')]=[{'all':!![]}];}return db[_0xf6f2('0x29')][_0xf6f2('0x3f')](_0x4accfe);})['then'](function(_0x244a8c){_0x26c4dc[_0xf6f2('0x40')]=_0x244a8c;return _0x26c4dc;})[_0xf6f2('0x21')](respondWithFilteredResult(_0x2c643d,_0x4accfe))[_0xf6f2('0x41')](handleError(_0x2c643d,null));};exports[_0xf6f2('0x42')]=function(_0x4c4f17,_0x47090b){var _0x31f367={'raw':!![],'where':{'id':_0x4c4f17[_0xf6f2('0x43')]['id']}},_0x34ba3a={};_0x34ba3a[_0xf6f2('0x2e')]=_['keys'](db[_0xf6f2('0x29')]['rawAttributes']);_0x34ba3a[_0xf6f2('0x2f')]=_[_0xf6f2('0x30')](_0x4c4f17[_0xf6f2('0x2f')]);_0x34ba3a[_0xf6f2('0x31')]=_[_0xf6f2('0x32')](_0x34ba3a[_0xf6f2('0x2e')],_0x34ba3a[_0xf6f2('0x2f')]);_0x31f367[_0xf6f2('0x33')]=_[_0xf6f2('0x32')](_0x34ba3a[_0xf6f2('0x2e')],qs[_0xf6f2('0x34')](_0x4c4f17['query'][_0xf6f2('0x34')]));_0x31f367[_0xf6f2('0x33')]=_0x31f367[_0xf6f2('0x33')]['length']?_0x31f367['attributes']:_0x34ba3a['model'];if(_0x4c4f17[_0xf6f2('0x2f')][_0xf6f2('0x44')]){_0x31f367['include']=[{'all':!![]}];}_0x31f367=_['merge']({},_0x31f367,_0x4c4f17[_0xf6f2('0x3d')]);return db[_0xf6f2('0x29')][_0xf6f2('0x45')](_0x31f367)[_0xf6f2('0x21')](handleEntityNotFound(_0x47090b,null))[_0xf6f2('0x21')](respondWithResult(_0x47090b,null))[_0xf6f2('0x41')](handleError(_0x47090b,null));};exports['create']=function(_0x5b4737,_0x5daa2c){return db['FreshdeskField'][_0xf6f2('0x46')](_0x5b4737['body'],{})[_0xf6f2('0x21')](respondWithResult(_0x5daa2c,0xc9))[_0xf6f2('0x41')](handleError(_0x5daa2c,null));};exports[_0xf6f2('0x47')]=function(_0x3b7d67,_0x28da53){if(_0x3b7d67['body']['id']){delete _0x3b7d67['body']['id'];}return db[_0xf6f2('0x29')]['find']({'where':{'id':_0x3b7d67['params']['id']}})[_0xf6f2('0x21')](handleEntityNotFound(_0x28da53,null))[_0xf6f2('0x21')](saveUpdates(_0x3b7d67[_0xf6f2('0x48')],null))[_0xf6f2('0x21')](respondWithResult(_0x28da53,null))[_0xf6f2('0x41')](handleError(_0x28da53,null));};exports[_0xf6f2('0x22')]=function(_0x5351f5,_0x443277){return db[_0xf6f2('0x29')]['find']({'where':{'id':_0x5351f5[_0xf6f2('0x43')]['id']}})[_0xf6f2('0x21')](handleEntityNotFound(_0x443277,null))[_0xf6f2('0x21')](removeEntity(_0x443277,null))['catch'](handleError(_0x443277,null));};
\ No newline at end of file
+var _0xe205=['merge','VIRTUAL','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','stack','name','send','index','FreshdeskField','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x212dad,_0xb862ef){var _0x4fea3f=function(_0x31664b){while(--_0x31664b){_0x212dad['push'](_0x212dad['shift']());}};_0x4fea3f(++_0xb862ef);}(_0xe205,0xa7));var _0x5e20=function(_0x3d23d0,_0x5c8b40){_0x3d23d0=_0x3d23d0-0x0;var _0x4d4b22=_0xe205[_0x3d23d0];return _0x4d4b22;};'use strict';var emlformat=require(_0x5e20('0x0'));var rimraf=require(_0x5e20('0x1'));var zipdir=require(_0x5e20('0x2'));var jsonpatch=require(_0x5e20('0x3'));var rp=require(_0x5e20('0x4'));var moment=require(_0x5e20('0x5'));var BPromise=require(_0x5e20('0x6'));var Mustache=require(_0x5e20('0x7'));var util=require(_0x5e20('0x8'));var path=require('path');var sox=require(_0x5e20('0x9'));var csv=require(_0x5e20('0xa'));var ejs=require(_0x5e20('0xb'));var fs=require('fs');var fs_extra=require(_0x5e20('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5e20('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5e20('0xa'));var querystring=require(_0x5e20('0xe'));var Papa=require('papaparse');var Redis=require(_0x5e20('0xf'));var authService=require(_0x5e20('0x10'));var qs=require(_0x5e20('0x11'));var as=require(_0x5e20('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e20('0x13'))(_0x5e20('0x14'));var utils=require(_0x5e20('0x15'));var config=require(_0x5e20('0x16'));var licenseUtil=require(_0x5e20('0x17'));var db=require(_0x5e20('0x18'))['db'];function respondWithStatusCode(_0x54deee,_0x19eacf){_0x19eacf=_0x19eacf||0xcc;return function(_0x29b7a2){if(_0x29b7a2){return _0x54deee[_0x5e20('0x19')](_0x19eacf);}return _0x54deee['status'](_0x19eacf)[_0x5e20('0x1a')]();};}function respondWithResult(_0x5d827e,_0x1f47f3){_0x1f47f3=_0x1f47f3||0xc8;return function(_0x5ba833){if(_0x5ba833){return _0x5d827e[_0x5e20('0x1b')](_0x1f47f3)[_0x5e20('0x1c')](_0x5ba833);}};}function respondWithFilteredResult(_0x275026,_0x148ada){return function(_0x294df8){if(_0x294df8){var _0x542b3c=typeof _0x148ada[_0x5e20('0x1d')]===_0x5e20('0x1e')&&typeof _0x148ada[_0x5e20('0x1f')]===_0x5e20('0x1e');var _0x2f194b=_0x294df8[_0x5e20('0x20')];var _0x1cc706=_0x542b3c?0x0:_0x148ada[_0x5e20('0x1d')];var _0x4d3e4a=_0x542b3c?_0x294df8[_0x5e20('0x20')]:_0x148ada[_0x5e20('0x1d')]+_0x148ada['limit'];var _0x295eb3;if(_0x4d3e4a>=_0x2f194b){_0x4d3e4a=_0x2f194b;_0x295eb3=0xc8;}else{_0x295eb3=0xce;}_0x275026[_0x5e20('0x1b')](_0x295eb3);return _0x275026[_0x5e20('0x21')](_0x5e20('0x22'),_0x1cc706+'-'+_0x4d3e4a+'/'+_0x2f194b)['json'](_0x294df8);}return null;};}function patchUpdates(_0x2954fc){return function(_0x50f222){try{jsonpatch['apply'](_0x50f222,_0x2954fc,!![]);}catch(_0x57c7c5){return BPromise['reject'](_0x57c7c5);}return _0x50f222[_0x5e20('0x23')]();};}function saveUpdates(_0x5cca90,_0x3d89e4){return function(_0x29b111){if(_0x29b111){return _0x29b111[_0x5e20('0x24')](_0x5cca90)[_0x5e20('0x25')](function(_0x3ef7fa){return _0x3ef7fa;});}return null;};}function removeEntity(_0x2d4614,_0x4c5732){return function(_0x15705f){if(_0x15705f){return _0x15705f['destroy']()['then'](function(){_0x2d4614[_0x5e20('0x1b')](0xcc)[_0x5e20('0x1a')]();});}};}function handleEntityNotFound(_0x2bae08,_0x1b01af){return function(_0xbf7a24){if(!_0xbf7a24){_0x2bae08[_0x5e20('0x19')](0x194);}return _0xbf7a24;};}function handleError(_0x2973b3,_0x5809fd){_0x5809fd=_0x5809fd||0x1f4;return function(_0x3bf4f4){logger[_0x5e20('0x26')](_0x3bf4f4[_0x5e20('0x27')]);if(_0x3bf4f4[_0x5e20('0x28')]){delete _0x3bf4f4['name'];}_0x2973b3[_0x5e20('0x1b')](_0x5809fd)[_0x5e20('0x29')](_0x3bf4f4);};}exports[_0x5e20('0x2a')]=function(_0x222e7a,_0xbed73a){var _0x19709b={},_0x5ec45b={},_0xbc2b0e={'count':0x0,'rows':[]};var _0x34a3d6=_['map'](db[_0x5e20('0x2b')][_0x5e20('0x2c')],function(_0x335f1e){return{'name':_0x335f1e[_0x5e20('0x2d')],'type':_0x335f1e[_0x5e20('0x2e')][_0x5e20('0x2f')]};});_0x5ec45b['model']=_[_0x5e20('0x30')](_0x34a3d6,_0x5e20('0x28'));_0x5ec45b[_0x5e20('0x31')]=_[_0x5e20('0x32')](_0x222e7a[_0x5e20('0x31')]);_0x5ec45b[_0x5e20('0x33')]=_[_0x5e20('0x34')](_0x5ec45b[_0x5e20('0x35')],_0x5ec45b[_0x5e20('0x31')]);_0x19709b[_0x5e20('0x36')]=_[_0x5e20('0x34')](_0x5ec45b['model'],qs[_0x5e20('0x37')](_0x222e7a[_0x5e20('0x31')][_0x5e20('0x37')]));_0x19709b['attributes']=_0x19709b[_0x5e20('0x36')][_0x5e20('0x38')]?_0x19709b[_0x5e20('0x36')]:_0x5ec45b[_0x5e20('0x35')];if(!_0x222e7a[_0x5e20('0x31')][_0x5e20('0x39')](_0x5e20('0x3a'))){_0x19709b[_0x5e20('0x1f')]=qs[_0x5e20('0x1f')](_0x222e7a[_0x5e20('0x31')][_0x5e20('0x1f')]);_0x19709b[_0x5e20('0x1d')]=qs[_0x5e20('0x1d')](_0x222e7a[_0x5e20('0x31')]['offset']);}_0x19709b[_0x5e20('0x3b')]=qs['sort'](_0x222e7a['query'][_0x5e20('0x3c')]);_0x19709b[_0x5e20('0x3d')]=qs['filters'](_[_0x5e20('0x3e')](_0x222e7a[_0x5e20('0x31')],_0x5ec45b['filters']),_0x34a3d6);if(_0x222e7a[_0x5e20('0x31')][_0x5e20('0x3f')]){_0x19709b[_0x5e20('0x3d')]=_[_0x5e20('0x40')](_0x19709b[_0x5e20('0x3d')],{'$or':_[_0x5e20('0x30')](_0x34a3d6,function(_0x94925e){if(_0x94925e[_0x5e20('0x2e')]!==_0x5e20('0x41')){var _0x20be56={};_0x20be56[_0x94925e[_0x5e20('0x28')]]={'$like':'%'+_0x222e7a[_0x5e20('0x31')][_0x5e20('0x3f')]+'%'};return _0x20be56;}})});}_0x19709b=_[_0x5e20('0x40')]({},_0x19709b,_0x222e7a[_0x5e20('0x42')]);var _0x3d618c={'where':_0x19709b[_0x5e20('0x3d')]};return db[_0x5e20('0x2b')]['count'](_0x3d618c)[_0x5e20('0x25')](function(_0x29215f){_0xbc2b0e[_0x5e20('0x20')]=_0x29215f;if(_0x222e7a[_0x5e20('0x31')][_0x5e20('0x43')]){_0x19709b['include']=[{'all':!![]}];}return db[_0x5e20('0x2b')][_0x5e20('0x44')](_0x19709b);})[_0x5e20('0x25')](function(_0x24c05f){_0xbc2b0e[_0x5e20('0x45')]=_0x24c05f;return _0xbc2b0e;})[_0x5e20('0x25')](respondWithFilteredResult(_0xbed73a,_0x19709b))['catch'](handleError(_0xbed73a,null));};exports[_0x5e20('0x46')]=function(_0xc24cce,_0xa52d83){var _0x5a21f0={'raw':!![],'where':{'id':_0xc24cce[_0x5e20('0x47')]['id']}},_0x2b031d={};_0x2b031d[_0x5e20('0x35')]=_[_0x5e20('0x32')](db[_0x5e20('0x2b')][_0x5e20('0x2c')]);_0x2b031d[_0x5e20('0x31')]=_[_0x5e20('0x32')](_0xc24cce['query']);_0x2b031d[_0x5e20('0x33')]=_[_0x5e20('0x34')](_0x2b031d[_0x5e20('0x35')],_0x2b031d['query']);_0x5a21f0[_0x5e20('0x36')]=_['intersection'](_0x2b031d[_0x5e20('0x35')],qs[_0x5e20('0x37')](_0xc24cce[_0x5e20('0x31')][_0x5e20('0x37')]));_0x5a21f0[_0x5e20('0x36')]=_0x5a21f0['attributes'][_0x5e20('0x38')]?_0x5a21f0['attributes']:_0x2b031d['model'];if(_0xc24cce[_0x5e20('0x31')][_0x5e20('0x43')]){_0x5a21f0[_0x5e20('0x48')]=[{'all':!![]}];}_0x5a21f0=_[_0x5e20('0x40')]({},_0x5a21f0,_0xc24cce[_0x5e20('0x42')]);return db[_0x5e20('0x2b')][_0x5e20('0x49')](_0x5a21f0)['then'](handleEntityNotFound(_0xa52d83,null))['then'](respondWithResult(_0xa52d83,null))[_0x5e20('0x4a')](handleError(_0xa52d83,null));};exports[_0x5e20('0x4b')]=function(_0x5e84bd,_0x22b84e){return db[_0x5e20('0x2b')][_0x5e20('0x4b')](_0x5e84bd[_0x5e20('0x4c')],{})[_0x5e20('0x25')](respondWithResult(_0x22b84e,0xc9))['catch'](handleError(_0x22b84e,null));};exports[_0x5e20('0x24')]=function(_0x245b52,_0x25491e){if(_0x245b52[_0x5e20('0x4c')]['id']){delete _0x245b52[_0x5e20('0x4c')]['id'];}return db[_0x5e20('0x2b')][_0x5e20('0x49')]({'where':{'id':_0x245b52[_0x5e20('0x47')]['id']}})['then'](handleEntityNotFound(_0x25491e,null))['then'](saveUpdates(_0x245b52['body'],null))[_0x5e20('0x25')](respondWithResult(_0x25491e,null))[_0x5e20('0x4a')](handleError(_0x25491e,null));};exports['destroy']=function(_0x4392ca,_0x4bfea7){return db[_0x5e20('0x2b')]['find']({'where':{'id':_0x4392ca[_0x5e20('0x47')]['id']}})['then'](handleEntityNotFound(_0x4bfea7,null))[_0x5e20('0x25')](removeEntity(_0x4bfea7,null))[_0x5e20('0x4a')](handleError(_0x4bfea7,null));};
\ No newline at end of file
index 42b0b75..4abb0c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c8=['FieldId','../../config/logger','moment','bluebird','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField'];(function(_0x3c3f0c,_0x1f0c60){var _0x2e1c0f=function(_0x1493e2){while(--_0x1493e2){_0x3c3f0c['push'](_0x3c3f0c['shift']());}};_0x2e1c0f(++_0x1f0c60);}(_0x70c8,0xa9));var _0x870c=function(_0x380b29,_0x436efa){_0x380b29=_0x380b29-0x0;var _0x4d0890=_0x70c8[_0x380b29];return _0x4d0890;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x870c('0x0'))('api');var moment=require(_0x870c('0x1'));var BPromise=require(_0x870c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x870c('0x3'));var attributes=require(_0x870c('0x4'));module[_0x870c('0x5')]=function(_0x3e27fa,_0x18c445){return _0x3e27fa[_0x870c('0x6')](_0x870c('0x7'),attributes,{'tableName':_0x870c('0x8'),'paranoid':![],'indexes':[{'name':_0x870c('0x9'),'fields':[_0x870c('0xa'),_0x870c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9bb=['idField','FieldId','../../config/logger','api','path','./intFreshdeskField.attributes','exports','FreshdeskField','freshdesk_unique_index'];(function(_0x16c49a,_0x1f0aa1){var _0x1be004=function(_0x26a1ca){while(--_0x26a1ca){_0x16c49a['push'](_0x16c49a['shift']());}};_0x1be004(++_0x1f0aa1);}(_0xb9bb,0xa4));var _0xbb9b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb9bb[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbb9b('0x0'))(_0xbb9b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb9b('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbb9b('0x3'));module[_0xbb9b('0x4')]=function(_0x1afa70,_0x224710){return _0x1afa70['define'](_0xbb9b('0x5'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0xbb9b('0x6'),'fields':[_0xbb9b('0x7'),_0xbb9b('0x8')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 70c346f..46ca288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa123=['../../config/environment','jayson/promise','client','http','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x42db23,_0x112b01){var _0x2d1e4e=function(_0x96342f){while(--_0x96342f){_0x42db23['push'](_0x42db23['shift']());}};_0x2d1e4e(++_0x112b01);}(_0xa123,0x10d));var _0x3a12=function(_0xabb1ce,_0x5a5ca7){_0xabb1ce=_0xabb1ce-0x0;var _0x23f75e=_0xa123[_0xabb1ce];return _0x23f75e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3a12('0x0'));var BPromise=require(_0x3a12('0x1'));var rs=require(_0x3a12('0x2'));var fs=require('fs');var Redis=require(_0x3a12('0x3'));var db=require(_0x3a12('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3a12('0x5'))(_0x3a12('0x6'));var config=require(_0x3a12('0x7'));var jayson=require(_0x3a12('0x8'));var client=jayson[_0x3a12('0x9')][_0x3a12('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x138b4c,_0xd3f1cb,_0x62c457){return new BPromise(function(_0x5a5b34,_0x1599ef){return client['request'](_0x138b4c,_0x62c457)[_0x3a12('0xb')](function(_0x569fe4){logger['info'](_0x3a12('0xc'),_0xd3f1cb,_0x3a12('0xd'));logger[_0x3a12('0xe')](_0x3a12('0xf'),_0xd3f1cb,_0x3a12('0xd'),JSON[_0x3a12('0x10')](_0x569fe4));if(_0x569fe4['error']){if(_0x569fe4['error'][_0x3a12('0x11')]===0x1f4){logger[_0x3a12('0x12')]('FreshdeskField,\x20%s,\x20%s',_0xd3f1cb,_0x569fe4[_0x3a12('0x12')]['message']);return _0x1599ef(_0x569fe4[_0x3a12('0x12')][_0x3a12('0x13')]);}logger[_0x3a12('0x12')]('FreshdeskField,\x20%s,\x20%s',_0xd3f1cb,_0x569fe4[_0x3a12('0x12')]['message']);return _0x5a5b34(_0x569fe4[_0x3a12('0x12')]['message']);}else{logger[_0x3a12('0x14')](_0x3a12('0xc'),_0xd3f1cb,_0x3a12('0xd'));_0x5a5b34(_0x569fe4[_0x3a12('0x15')]['message']);}})[_0x3a12('0x16')](function(_0x4790d7){logger[_0x3a12('0x12')](_0x3a12('0xc'),_0xd3f1cb,_0x4790d7);_0x1599ef(_0x4790d7);});});}
\ No newline at end of file
+var _0x6198=['client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise'];(function(_0x512d08,_0x2a0c3b){var _0x254486=function(_0x4e0849){while(--_0x4e0849){_0x512d08['push'](_0x512d08['shift']());}};_0x254486(++_0x2a0c3b);}(_0x6198,0x100));var _0x8619=function(_0x43f15b,_0x5de642){_0x43f15b=_0x43f15b-0x0;var _0x70a7ea=_0x6198[_0x43f15b];return _0x70a7ea;};'use strict';var _=require(_0x8619('0x0'));var util=require(_0x8619('0x1'));var moment=require(_0x8619('0x2'));var BPromise=require('bluebird');var rs=require(_0x8619('0x3'));var fs=require('fs');var Redis=require(_0x8619('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8619('0x5'))(_0x8619('0x6'));var config=require('../../config/environment');var jayson=require(_0x8619('0x7'));var client=jayson[_0x8619('0x8')][_0x8619('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x568a78,_0x3fb225,_0x1a6950){return new BPromise(function(_0x549da2,_0x7ec848){return client[_0x8619('0xa')](_0x568a78,_0x1a6950)[_0x8619('0xb')](function(_0x198c7a){logger[_0x8619('0xc')](_0x8619('0xd'),_0x3fb225,_0x8619('0xe'));logger[_0x8619('0xf')](_0x8619('0x10'),_0x3fb225,_0x8619('0xe'),JSON[_0x8619('0x11')](_0x198c7a));if(_0x198c7a[_0x8619('0x12')]){if(_0x198c7a[_0x8619('0x12')][_0x8619('0x13')]===0x1f4){logger['error'](_0x8619('0xd'),_0x3fb225,_0x198c7a[_0x8619('0x12')][_0x8619('0x14')]);return _0x7ec848(_0x198c7a[_0x8619('0x12')][_0x8619('0x14')]);}logger[_0x8619('0x12')](_0x8619('0xd'),_0x3fb225,_0x198c7a[_0x8619('0x12')][_0x8619('0x14')]);return _0x549da2(_0x198c7a[_0x8619('0x12')][_0x8619('0x14')]);}else{logger[_0x8619('0xc')](_0x8619('0xd'),_0x3fb225,'request\x20sent');_0x549da2(_0x198c7a[_0x8619('0x15')]['message']);}})['catch'](function(_0x518d3f){logger['error'](_0x8619('0xd'),_0x3fb225,_0x518d3f);_0x7ec848(_0x518d3f);});});}
\ No newline at end of file
index 06361f1..b767630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['getFields','post','create','addConfiguration','/:id','delete','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','isAuthenticated','show','/:id/configurations','/:id/fields'];(function(_0x5e11a9,_0x182cee){var _0x44884c=function(_0x1864e9){while(--_0x1864e9){_0x5e11a9['push'](_0x5e11a9['shift']());}};_0x44884c(++_0x182cee);}(_0x1be1,0x192));var _0x11be=function(_0x13920e,_0x1a8cf7){_0x13920e=_0x13920e-0x0;var _0x73878a=_0x1be1[_0x13920e];return _0x73878a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x11be('0x0'));var timeout=require(_0x11be('0x1'));var express=require('express');var router=express[_0x11be('0x2')]();var fs_extra=require(_0x11be('0x3'));var auth=require(_0x11be('0x4'));var interaction=require(_0x11be('0x5'));var config=require('../../config/environment');var controller=require(_0x11be('0x6'));router[_0x11be('0x7')]('/',auth[_0x11be('0x8')](),controller['index']);router[_0x11be('0x7')]('/:id',auth[_0x11be('0x8')](),controller[_0x11be('0x9')]);router[_0x11be('0x7')](_0x11be('0xa'),auth[_0x11be('0x8')](),controller['getConfigurations']);router[_0x11be('0x7')](_0x11be('0xb'),auth['isAuthenticated'](),controller[_0x11be('0xc')]);router[_0x11be('0xd')]('/',auth[_0x11be('0x8')](),controller[_0x11be('0xe')]);router['post'](_0x11be('0xa'),auth[_0x11be('0x8')](),controller[_0x11be('0xf')]);router['put'](_0x11be('0x10'),auth[_0x11be('0x8')](),controller['update']);router[_0x11be('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0565=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','post','create','delete','/:id','exports'];(function(_0x335dcd,_0x15e9ce){var _0x553094=function(_0x2c5c2d){while(--_0x2c5c2d){_0x335dcd['push'](_0x335dcd['shift']());}};_0x553094(++_0x15e9ce);}(_0x0565,0xf2));var _0x5056=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x0565[_0x2aec52];return _0x3b8835;};'use strict';var multer=require(_0x5056('0x0'));var util=require(_0x5056('0x1'));var path=require(_0x5056('0x2'));var timeout=require(_0x5056('0x3'));var express=require(_0x5056('0x4'));var router=express[_0x5056('0x5')]();var fs_extra=require(_0x5056('0x6'));var auth=require(_0x5056('0x7'));var interaction=require(_0x5056('0x8'));var config=require(_0x5056('0x9'));var controller=require('./intFreshsalesAccount.controller');router[_0x5056('0xa')]('/',auth[_0x5056('0xb')](),controller[_0x5056('0xc')]);router[_0x5056('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x5056('0xd')]);router[_0x5056('0xa')](_0x5056('0xe'),auth[_0x5056('0xb')](),controller[_0x5056('0xf')]);router[_0x5056('0xa')](_0x5056('0x10'),auth[_0x5056('0xb')](),controller['getFields']);router[_0x5056('0x11')]('/',auth[_0x5056('0xb')](),controller[_0x5056('0x12')]);router['post']('/:id/configurations',auth[_0x5056('0xb')](),controller['addConfiguration']);router['put']('/:id',auth[_0x5056('0xb')](),controller['update']);router[_0x5056('0x13')](_0x5056('0x14'),auth[_0x5056('0xb')](),controller['destroy']);module[_0x5056('0x15')]=router;
\ No newline at end of file
index c9f31cc..3043bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['exports','STRING','username'];(function(_0x498a64,_0x170ddf){var _0x7d0eb6=function(_0x10f4e3){while(--_0x10f4e3){_0x498a64['push'](_0x498a64['shift']());}};_0x7d0eb6(++_0x170ddf);}(_0xda2d,0x102));var _0xdda2=function(_0x168090,_0x5c7b43){_0x168090=_0x168090-0x0;var _0x1ebfcf=_0xda2d[_0x168090];return _0x1ebfcf;};'use strict';var Sequelize=require('sequelize');module[_0xdda2('0x0')]={'name':{'type':Sequelize[_0xdda2('0x1')]},'description':{'type':Sequelize[_0xdda2('0x1')]},'username':{'type':Sequelize[_0xdda2('0x1')],'unique':_0xdda2('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xdda2('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xd943=['exports','STRING','username','remoteUri','sequelize'];(function(_0x477430,_0x15708c){var _0x5a41a4=function(_0x431148){while(--_0x431148){_0x477430['push'](_0x477430['shift']());}};_0x5a41a4(++_0x15708c);}(_0xd943,0x15d));var _0x3d94=function(_0x16b895,_0x50549b){_0x16b895=_0x16b895-0x0;var _0x20546d=_0xd943[_0x16b895];return _0x20546d;};'use strict';var Sequelize=require(_0x3d94('0x0'));module[_0x3d94('0x1')]={'name':{'type':Sequelize[_0x3d94('0x2')]},'description':{'type':Sequelize[_0x3d94('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x3d94('0x3')},'apiKey':{'type':Sequelize[_0x3d94('0x2')]},'remoteUri':{'type':Sequelize[_0x3d94('0x2')],'unique':_0x3d94('0x4')},'serverUrl':{'type':Sequelize[_0x3d94('0x2')],'allowNull':![]}};
\ No newline at end of file
index fc48fb7..ed0e950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd028=['type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','order','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','users','email','Requested\x20Resource\x20not\x20Found','statusCode','error','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','map','FreshsalesAccount','rawAttributes','fieldName'];(function(_0x1095ad,_0x108bbf){var _0x263fa5=function(_0x29a574){while(--_0x29a574){_0x1095ad['push'](_0x1095ad['shift']());}};_0x263fa5(++_0x108bbf);}(_0xd028,0x105));var _0x8d02=function(_0x2123b9,_0x4e9d19){_0x2123b9=_0x2123b9-0x0;var _0x4d67e0=_0xd028[_0x2123b9];return _0x4d67e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8d02('0x0'));var zipdir=require(_0x8d02('0x1'));var jsonpatch=require(_0x8d02('0x2'));var rp=require('request-promise');var moment=require(_0x8d02('0x3'));var BPromise=require(_0x8d02('0x4'));var Mustache=require('mustache');var util=require(_0x8d02('0x5'));var path=require(_0x8d02('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d02('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8d02('0x8'));var deskjs=require(_0x8d02('0x9'));var toCsv=require(_0x8d02('0xa'));var querystring=require(_0x8d02('0xb'));var Papa=require(_0x8d02('0xc'));var Redis=require(_0x8d02('0xd'));var authService=require(_0x8d02('0xe'));var qs=require(_0x8d02('0xf'));var as=require(_0x8d02('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8d02('0x11'))('api');var utils=require(_0x8d02('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x8d02('0x13'));var db=require(_0x8d02('0x14'))['db'];var integrations=require(_0x8d02('0x15'));function respondWithStatusCode(_0x1f4336,_0x538e66){_0x538e66=_0x538e66||0xcc;return function(_0x39b027){if(_0x39b027){return _0x1f4336['sendStatus'](_0x538e66);}return _0x1f4336[_0x8d02('0x16')](_0x538e66)[_0x8d02('0x17')]();};}function respondWithResult(_0x4e1f5b,_0x5ae7b7){_0x5ae7b7=_0x5ae7b7||0xc8;return function(_0xba750a){if(_0xba750a){return _0x4e1f5b[_0x8d02('0x16')](_0x5ae7b7)[_0x8d02('0x18')](_0xba750a);}};}function respondWithFilteredResult(_0x251cc2,_0x583866){return function(_0x53e9c7){if(_0x53e9c7){var _0x4acec9=typeof _0x583866[_0x8d02('0x19')]===_0x8d02('0x1a')&&typeof _0x583866[_0x8d02('0x1b')]===_0x8d02('0x1a');var _0x26c598=_0x53e9c7[_0x8d02('0x1c')];var _0x562477=_0x4acec9?0x0:_0x583866[_0x8d02('0x19')];var _0x412872=_0x4acec9?_0x53e9c7[_0x8d02('0x1c')]:_0x583866['offset']+_0x583866[_0x8d02('0x1b')];var _0x17b681;if(_0x412872>=_0x26c598){_0x412872=_0x26c598;_0x17b681=0xc8;}else{_0x17b681=0xce;}_0x251cc2[_0x8d02('0x16')](_0x17b681);return _0x251cc2[_0x8d02('0x1d')](_0x8d02('0x1e'),_0x562477+'-'+_0x412872+'/'+_0x26c598)[_0x8d02('0x18')](_0x53e9c7);}return null;};}function patchUpdates(_0x4e8e14){return function(_0x5c6c2f){try{jsonpatch[_0x8d02('0x1f')](_0x5c6c2f,_0x4e8e14,!![]);}catch(_0x2a17ef){return BPromise[_0x8d02('0x20')](_0x2a17ef);}return _0x5c6c2f[_0x8d02('0x21')]();};}function saveUpdates(_0x11e4a8,_0x3e0108){return function(_0xb29aa0){if(_0xb29aa0){return _0xb29aa0[_0x8d02('0x22')](_0x11e4a8)[_0x8d02('0x23')](function(_0x45782e){return _0x45782e;});}return null;};}function removeEntity(_0x18428b,_0x391302){return function(_0x25ceb0){if(_0x25ceb0){return _0x25ceb0[_0x8d02('0x24')]()['then'](function(){_0x18428b[_0x8d02('0x16')](0xcc)[_0x8d02('0x17')]();});}};}function handleEntityNotFound(_0x1fdfeb,_0x5cdba3){return function(_0x5b362c){if(!_0x5b362c){_0x1fdfeb[_0x8d02('0x25')](0x194);}return _0x5b362c;};}function handleError(_0x4c8c80,_0x137b7e){_0x137b7e=_0x137b7e||0x1f4;return function(_0x53ac38){logger['error'](_0x53ac38[_0x8d02('0x26')]);if(_0x53ac38[_0x8d02('0x27')]){delete _0x53ac38[_0x8d02('0x27')];}_0x4c8c80[_0x8d02('0x16')](_0x137b7e)[_0x8d02('0x28')](_0x53ac38);};}exports['index']=function(_0x18ffa3,_0x10edf5){var _0x35f4d2={},_0x4b4e43={},_0x13d0b3={'count':0x0,'rows':[]};var _0xc5ed8c=_[_0x8d02('0x29')](db[_0x8d02('0x2a')][_0x8d02('0x2b')],function(_0x1461c8){return{'name':_0x1461c8[_0x8d02('0x2c')],'type':_0x1461c8[_0x8d02('0x2d')][_0x8d02('0x2e')]};});_0x4b4e43[_0x8d02('0x2f')]=_[_0x8d02('0x29')](_0xc5ed8c,'name');_0x4b4e43[_0x8d02('0x30')]=_[_0x8d02('0x31')](_0x18ffa3[_0x8d02('0x30')]);_0x4b4e43['filters']=_[_0x8d02('0x32')](_0x4b4e43[_0x8d02('0x2f')],_0x4b4e43[_0x8d02('0x30')]);_0x35f4d2[_0x8d02('0x33')]=_[_0x8d02('0x32')](_0x4b4e43['model'],qs[_0x8d02('0x34')](_0x18ffa3[_0x8d02('0x30')]['fields']));_0x35f4d2['attributes']=_0x35f4d2[_0x8d02('0x33')][_0x8d02('0x35')]?_0x35f4d2[_0x8d02('0x33')]:_0x4b4e43[_0x8d02('0x2f')];if(!_0x18ffa3[_0x8d02('0x30')][_0x8d02('0x36')](_0x8d02('0x37'))){_0x35f4d2[_0x8d02('0x1b')]=qs['limit'](_0x18ffa3[_0x8d02('0x30')][_0x8d02('0x1b')]);_0x35f4d2[_0x8d02('0x19')]=qs[_0x8d02('0x19')](_0x18ffa3[_0x8d02('0x30')][_0x8d02('0x19')]);}_0x35f4d2['order']=qs['sort'](_0x18ffa3[_0x8d02('0x30')][_0x8d02('0x38')]);_0x35f4d2[_0x8d02('0x39')]=qs[_0x8d02('0x3a')](_[_0x8d02('0x3b')](_0x18ffa3[_0x8d02('0x30')],_0x4b4e43[_0x8d02('0x3a')]),_0xc5ed8c);if(_0x18ffa3[_0x8d02('0x30')][_0x8d02('0x3c')]){_0x35f4d2[_0x8d02('0x39')]=_['merge'](_0x35f4d2[_0x8d02('0x39')],{'$or':_[_0x8d02('0x29')](_0xc5ed8c,function(_0x97f02d){if(_0x97f02d[_0x8d02('0x2d')]!==_0x8d02('0x3d')){var _0x57d2c8={};_0x57d2c8[_0x97f02d[_0x8d02('0x27')]]={'$like':'%'+_0x18ffa3['query']['filter']+'%'};return _0x57d2c8;}})});}_0x35f4d2=_[_0x8d02('0x3e')]({},_0x35f4d2,_0x18ffa3[_0x8d02('0x3f')]);var _0x221f27={'where':_0x35f4d2[_0x8d02('0x39')]};return db[_0x8d02('0x2a')][_0x8d02('0x1c')](_0x221f27)[_0x8d02('0x23')](function(_0x3a254a){_0x13d0b3['count']=_0x3a254a;if(_0x18ffa3['query'][_0x8d02('0x40')]){_0x35f4d2[_0x8d02('0x41')]=[{'all':!![]}];}return db[_0x8d02('0x2a')][_0x8d02('0x42')](_0x35f4d2);})[_0x8d02('0x23')](function(_0xb4da58){_0x13d0b3[_0x8d02('0x43')]=_0xb4da58;return _0x13d0b3;})[_0x8d02('0x23')](respondWithFilteredResult(_0x10edf5,_0x35f4d2))[_0x8d02('0x44')](handleError(_0x10edf5,null));};exports['show']=function(_0x443a80,_0x3f2333){var _0x2dc164={'raw':![],'where':{'id':_0x443a80[_0x8d02('0x45')]['id']}},_0x2bc961={};_0x2bc961[_0x8d02('0x2f')]=_['keys'](db[_0x8d02('0x2a')]['rawAttributes']);_0x2bc961[_0x8d02('0x30')]=_[_0x8d02('0x31')](_0x443a80[_0x8d02('0x30')]);_0x2bc961[_0x8d02('0x3a')]=_['intersection'](_0x2bc961['model'],_0x2bc961[_0x8d02('0x30')]);_0x2dc164[_0x8d02('0x33')]=_[_0x8d02('0x32')](_0x2bc961[_0x8d02('0x2f')],qs[_0x8d02('0x34')](_0x443a80['query'][_0x8d02('0x34')]));_0x2dc164[_0x8d02('0x33')]=_0x2dc164[_0x8d02('0x33')][_0x8d02('0x35')]?_0x2dc164[_0x8d02('0x33')]:_0x2bc961[_0x8d02('0x2f')];if(_0x443a80[_0x8d02('0x30')][_0x8d02('0x40')]){_0x2dc164[_0x8d02('0x41')]=[{'all':!![]}];}_0x2dc164=_[_0x8d02('0x3e')]({},_0x2dc164,_0x443a80['options']);return db[_0x8d02('0x2a')][_0x8d02('0x46')](_0x2dc164)['then'](handleEntityNotFound(_0x3f2333,null))[_0x8d02('0x23')](respondWithResult(_0x3f2333,null))[_0x8d02('0x44')](handleError(_0x3f2333,null));};exports['create']=function(_0x2a1375,_0x2a72af){return db[_0x8d02('0x2a')][_0x8d02('0x47')](_0x2a1375[_0x8d02('0x48')],{})[_0x8d02('0x23')](respondWithResult(_0x2a72af,0xc9))[_0x8d02('0x44')](handleError(_0x2a72af,null));};exports[_0x8d02('0x22')]=function(_0x152122,_0x3d9f73){if(_0x152122['body']['id']){delete _0x152122['body']['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x152122['params']['id']}})[_0x8d02('0x23')](handleEntityNotFound(_0x3d9f73,null))[_0x8d02('0x23')](saveUpdates(_0x152122[_0x8d02('0x48')],null))[_0x8d02('0x23')](respondWithResult(_0x3d9f73,null))[_0x8d02('0x44')](handleError(_0x3d9f73,null));};exports[_0x8d02('0x24')]=function(_0x1c6ac6,_0x200935){return db['FreshsalesAccount']['find']({'where':{'id':_0x1c6ac6[_0x8d02('0x45')]['id']}})[_0x8d02('0x23')](handleEntityNotFound(_0x200935,null))[_0x8d02('0x23')](removeEntity(_0x200935,null))[_0x8d02('0x44')](handleError(_0x200935,null));};exports[_0x8d02('0x49')]=function(_0x300ea6,_0x10d705,_0x30c26f){var _0x402fb5={};var _0x512065={};var _0x11b7d;var _0x1e1032;return db['FreshsalesAccount'][_0x8d02('0x4a')]({'where':{'id':_0x300ea6[_0x8d02('0x45')]['id']}})['then'](handleEntityNotFound(_0x10d705,null))['then'](function(_0x245d2d){if(_0x245d2d){_0x11b7d=_0x245d2d;_0x512065[_0x8d02('0x2f')]=_[_0x8d02('0x31')](db[_0x8d02('0x4b')][_0x8d02('0x2b')]);_0x512065[_0x8d02('0x30')]=_[_0x8d02('0x31')](_0x300ea6[_0x8d02('0x30')]);_0x512065[_0x8d02('0x3a')]=_['intersection'](_0x512065[_0x8d02('0x2f')],_0x512065[_0x8d02('0x30')]);_0x402fb5[_0x8d02('0x33')]=_[_0x8d02('0x32')](_0x512065[_0x8d02('0x2f')],qs[_0x8d02('0x34')](_0x300ea6['query'][_0x8d02('0x34')]));_0x402fb5[_0x8d02('0x33')]=_0x402fb5[_0x8d02('0x33')]['length']?_0x402fb5[_0x8d02('0x33')]:_0x512065['model'];_0x402fb5[_0x8d02('0x4c')]=qs[_0x8d02('0x38')](_0x300ea6['query'][_0x8d02('0x38')]);_0x402fb5[_0x8d02('0x39')]=qs['filters'](_[_0x8d02('0x3b')](_0x300ea6[_0x8d02('0x30')],_0x512065[_0x8d02('0x3a')]));if(_0x300ea6['query']['filter']){_0x402fb5[_0x8d02('0x39')]=_[_0x8d02('0x3e')](_0x402fb5[_0x8d02('0x39')],{'$or':_[_0x8d02('0x29')](_0x402fb5[_0x8d02('0x33')],function(_0x3cf7f8){var _0x5c0270={};_0x5c0270[_0x3cf7f8]={'$like':'%'+_0x300ea6[_0x8d02('0x30')]['filter']+'%'};return _0x5c0270;})});}_0x402fb5=_['merge']({},_0x402fb5,_0x300ea6['options']);return _0x11b7d[_0x8d02('0x49')](_0x402fb5);}})['then'](function(_0x268496){if(_0x268496){_0x1e1032=_0x268496[_0x8d02('0x35')];if(!_0x300ea6['query'][_0x8d02('0x36')](_0x8d02('0x37'))){_0x402fb5['limit']=qs[_0x8d02('0x1b')](_0x300ea6[_0x8d02('0x30')]['limit']);_0x402fb5[_0x8d02('0x19')]=qs[_0x8d02('0x19')](_0x300ea6[_0x8d02('0x30')][_0x8d02('0x19')]);}return _0x11b7d[_0x8d02('0x49')](_0x402fb5);}})[_0x8d02('0x23')](function(_0x31da11){if(_0x31da11){return _0x31da11?{'count':_0x1e1032,'rows':_0x31da11}:null;}})['then'](respondWithResult(_0x10d705,null))['catch'](handleError(_0x10d705,null));};exports['addConfiguration']=function(_0x134a25,_0x456dcf,_0x3c4039){if(_0x134a25[_0x8d02('0x48')]['id']){delete _0x134a25['body']['id'];}return db[_0x8d02('0x2a')][_0x8d02('0x4a')]({'where':{'id':_0x134a25['params']['id']}})[_0x8d02('0x23')](handleEntityNotFound(_0x456dcf,null))['then'](function(_0x3cf8d2){if(_0x3cf8d2){_0x134a25['body'][_0x8d02('0x4d')]=_0x3cf8d2['id'];_0x134a25[_0x8d02('0x48')][_0x8d02('0x4e')]=integrations[_0x8d02('0x4f')](_0x134a25[_0x8d02('0x48')][_0x8d02('0x50')],_0x134a25['body'][_0x8d02('0x2d')]);_0x134a25['body'][_0x8d02('0x51')]=integrations[_0x8d02('0x52')](_0x134a25[_0x8d02('0x48')][_0x8d02('0x50')],_0x134a25['body']['type']);return db[_0x8d02('0x4b')][_0x8d02('0x47')](_0x134a25[_0x8d02('0x48')],{'include':[{'model':db['FreshsalesField'],'as':_0x8d02('0x4e')},{'model':db[_0x8d02('0x53')],'as':_0x8d02('0x51')}]});}return null;})[_0x8d02('0x23')](respondWithResult(_0x456dcf,null))[_0x8d02('0x44')](handleError(_0x456dcf,null));};exports[_0x8d02('0x54')]=function(_0x422bb4,_0x3f6080,_0x4e380e){var _0x461ed5='';var _0x43ac2f='';return db[_0x8d02('0x2a')][_0x8d02('0x4a')]({'where':{'id':_0x422bb4['params']['id']},'attributes':['id','username','remoteUri','apiKey']})[_0x8d02('0x23')](handleEntityNotFound(_0x3f6080,null))[_0x8d02('0x23')](function(_0x3236a3){if(_0x3236a3){_0x43ac2f=_0x3236a3[_0x8d02('0x55')];_0x461ed5=_0x3236a3[_0x8d02('0x56')];var _0x51495a=_0x3236a3[_0x8d02('0x56')][_0x8d02('0x57')](-0x1);if(_0x51495a==='/'){_0x461ed5=_0x461ed5[_0x8d02('0x58')](0x0,_0x461ed5[_0x8d02('0x59')](_0x51495a));}return rp({'method':_0x8d02('0x5a'),'uri':util[_0x8d02('0x5b')](_0x8d02('0x5c'),_0x461ed5,_0x8d02('0x5d')),'headers':{'Authorization':_0x8d02('0x5e')+_0x3236a3[_0x8d02('0x5f')]},'json':!![]});}})[_0x8d02('0x23')](function(_0x468764){if(_0x468764){var _0x11e0ac=_0x468764[_0x8d02('0x60')];var _0xbc9074=![];var _0x1adcef=null;for(_0x1adcef=0x0;_0x1adcef<_0x11e0ac[_0x8d02('0x35')];_0x1adcef++){if(_0x11e0ac[_0x1adcef][_0x8d02('0x61')]===_0x43ac2f){_0xbc9074=!![];}}if(_0xbc9074){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x8d02('0x62')});}}})[_0x8d02('0x23')](respondWithResult(_0x3f6080,null))[_0x8d02('0x44')](function(_0x1e89ad){var _0x564417=_0x422bb4['query']['test']?0x1f4:_0x1e89ad[_0x8d02('0x63')]||0x1f4;logger[_0x8d02('0x64')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x564417,JSON['stringify'](_0x1e89ad));delete _0x1e89ad[_0x8d02('0x27')];if(_0x564417===0x191){_0x564417=0x190;}_0x3f6080['status'](_0x564417)[_0x8d02('0x28')](_0x422bb4[_0x8d02('0x30')]['test']?{'message':_0x8d02('0x65'),'statusCode':_0x1e89ad['statusCode']}:_0x1e89ad);});};
\ No newline at end of file
+var _0x2553=['show','params','rawAttributes','includeAll','options','find','create','body','catch','findOne','FreshsalesConfiguration','getConfigurations','nolimit','Subjects','getSubjects','channel','Descriptions','FreshsalesField','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','apiKey','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','limit','undefined','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','FreshsalesAccount','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','count','include','findAll','rows'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2553,0x89));var _0x3255=function(_0x236c67,_0x28b77e){_0x236c67=_0x236c67-0x0;var _0x19e4fb=_0x2553[_0x236c67];return _0x19e4fb;};'use strict';var emlformat=require(_0x3255('0x0'));var rimraf=require(_0x3255('0x1'));var zipdir=require(_0x3255('0x2'));var jsonpatch=require(_0x3255('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3255('0x4'));var util=require('util');var path=require(_0x3255('0x5'));var sox=require(_0x3255('0x6'));var csv=require(_0x3255('0x7'));var ejs=require(_0x3255('0x8'));var fs=require('fs');var fs_extra=require(_0x3255('0x9'));var _=require('lodash');var squel=require(_0x3255('0xa'));var crypto=require('crypto');var jsforce=require(_0x3255('0xb'));var deskjs=require(_0x3255('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3255('0xd'));var Papa=require(_0x3255('0xe'));var Redis=require(_0x3255('0xf'));var authService=require(_0x3255('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3255('0x11'));var hardwareService=require(_0x3255('0x12'));var logger=require(_0x3255('0x13'))(_0x3255('0x14'));var utils=require(_0x3255('0x15'));var config=require(_0x3255('0x16'));var licenseUtil=require(_0x3255('0x17'));var db=require(_0x3255('0x18'))['db'];var integrations=require(_0x3255('0x19'));function respondWithStatusCode(_0x1a1497,_0x4b4489){_0x4b4489=_0x4b4489||0xcc;return function(_0x1d022d){if(_0x1d022d){return _0x1a1497[_0x3255('0x1a')](_0x4b4489);}return _0x1a1497['status'](_0x4b4489)['end']();};}function respondWithResult(_0x52699e,_0x46fefd){_0x46fefd=_0x46fefd||0xc8;return function(_0x5c5f4c){if(_0x5c5f4c){return _0x52699e[_0x3255('0x1b')](_0x46fefd)[_0x3255('0x1c')](_0x5c5f4c);}};}function respondWithFilteredResult(_0x5361ee,_0x5532f8){return function(_0x106490){if(_0x106490){var _0x40cb9b=typeof _0x5532f8['offset']==='undefined'&&typeof _0x5532f8[_0x3255('0x1d')]===_0x3255('0x1e');var _0xac1b27=_0x106490['count'];var _0x5fae4e=_0x40cb9b?0x0:_0x5532f8[_0x3255('0x1f')];var _0x1b4e00=_0x40cb9b?_0x106490['count']:_0x5532f8[_0x3255('0x1f')]+_0x5532f8[_0x3255('0x1d')];var _0x2a8afe;if(_0x1b4e00>=_0xac1b27){_0x1b4e00=_0xac1b27;_0x2a8afe=0xc8;}else{_0x2a8afe=0xce;}_0x5361ee['status'](_0x2a8afe);return _0x5361ee[_0x3255('0x20')](_0x3255('0x21'),_0x5fae4e+'-'+_0x1b4e00+'/'+_0xac1b27)[_0x3255('0x1c')](_0x106490);}return null;};}function patchUpdates(_0x30cb2b){return function(_0x535ff6){try{jsonpatch[_0x3255('0x22')](_0x535ff6,_0x30cb2b,!![]);}catch(_0x4f26b1){return BPromise[_0x3255('0x23')](_0x4f26b1);}return _0x535ff6[_0x3255('0x24')]();};}function saveUpdates(_0x60accd,_0x34e314){return function(_0x47e5b7){if(_0x47e5b7){return _0x47e5b7[_0x3255('0x25')](_0x60accd)[_0x3255('0x26')](function(_0x26592d){return _0x26592d;});}return null;};}function removeEntity(_0x343a25,_0x5e9f3b){return function(_0x2bb14f){if(_0x2bb14f){return _0x2bb14f[_0x3255('0x27')]()[_0x3255('0x26')](function(){_0x343a25['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23f516,_0x355194){return function(_0x3a78ac){if(!_0x3a78ac){_0x23f516[_0x3255('0x1a')](0x194);}return _0x3a78ac;};}function handleError(_0x433054,_0x4ceb5f){_0x4ceb5f=_0x4ceb5f||0x1f4;return function(_0x159479){logger[_0x3255('0x28')](_0x159479[_0x3255('0x29')]);if(_0x159479['name']){delete _0x159479[_0x3255('0x2a')];}_0x433054[_0x3255('0x1b')](_0x4ceb5f)[_0x3255('0x2b')](_0x159479);};}exports[_0x3255('0x2c')]=function(_0x21b81d,_0x2eb79b){var _0xb7f448={},_0x1b2017={},_0x3e8708={'count':0x0,'rows':[]};var _0x4542c9=_['map'](db[_0x3255('0x2d')]['rawAttributes'],function(_0x7f4716){return{'name':_0x7f4716[_0x3255('0x2e')],'type':_0x7f4716[_0x3255('0x2f')][_0x3255('0x30')]};});_0x1b2017['model']=_[_0x3255('0x31')](_0x4542c9,_0x3255('0x2a'));_0x1b2017[_0x3255('0x32')]=_[_0x3255('0x33')](_0x21b81d['query']);_0x1b2017[_0x3255('0x34')]=_[_0x3255('0x35')](_0x1b2017[_0x3255('0x36')],_0x1b2017[_0x3255('0x32')]);_0xb7f448[_0x3255('0x37')]=_['intersection'](_0x1b2017['model'],qs[_0x3255('0x38')](_0x21b81d[_0x3255('0x32')][_0x3255('0x38')]));_0xb7f448[_0x3255('0x37')]=_0xb7f448[_0x3255('0x37')][_0x3255('0x39')]?_0xb7f448[_0x3255('0x37')]:_0x1b2017[_0x3255('0x36')];if(!_0x21b81d[_0x3255('0x32')][_0x3255('0x3a')]('nolimit')){_0xb7f448[_0x3255('0x1d')]=qs[_0x3255('0x1d')](_0x21b81d['query'][_0x3255('0x1d')]);_0xb7f448[_0x3255('0x1f')]=qs[_0x3255('0x1f')](_0x21b81d[_0x3255('0x32')][_0x3255('0x1f')]);}_0xb7f448['order']=qs[_0x3255('0x3b')](_0x21b81d[_0x3255('0x32')][_0x3255('0x3b')]);_0xb7f448[_0x3255('0x3c')]=qs[_0x3255('0x34')](_[_0x3255('0x3d')](_0x21b81d[_0x3255('0x32')],_0x1b2017[_0x3255('0x34')]),_0x4542c9);if(_0x21b81d[_0x3255('0x32')][_0x3255('0x3e')]){_0xb7f448[_0x3255('0x3c')]=_[_0x3255('0x3f')](_0xb7f448[_0x3255('0x3c')],{'$or':_[_0x3255('0x31')](_0x4542c9,function(_0x858565){if(_0x858565['type']!==_0x3255('0x40')){var _0x7b44f3={};_0x7b44f3[_0x858565[_0x3255('0x2a')]]={'$like':'%'+_0x21b81d[_0x3255('0x32')][_0x3255('0x3e')]+'%'};return _0x7b44f3;}})});}_0xb7f448=_[_0x3255('0x3f')]({},_0xb7f448,_0x21b81d['options']);var _0x35a372={'where':_0xb7f448['where']};return db['FreshsalesAccount'][_0x3255('0x41')](_0x35a372)[_0x3255('0x26')](function(_0x5b4e63){_0x3e8708[_0x3255('0x41')]=_0x5b4e63;if(_0x21b81d['query']['includeAll']){_0xb7f448[_0x3255('0x42')]=[{'all':!![]}];}return db[_0x3255('0x2d')][_0x3255('0x43')](_0xb7f448);})['then'](function(_0x49a9f0){_0x3e8708[_0x3255('0x44')]=_0x49a9f0;return _0x3e8708;})[_0x3255('0x26')](respondWithFilteredResult(_0x2eb79b,_0xb7f448))['catch'](handleError(_0x2eb79b,null));};exports[_0x3255('0x45')]=function(_0x4bbdd8,_0x251043){var _0xc6e031={'raw':![],'where':{'id':_0x4bbdd8[_0x3255('0x46')]['id']}},_0x3d8432={};_0x3d8432[_0x3255('0x36')]=_['keys'](db[_0x3255('0x2d')][_0x3255('0x47')]);_0x3d8432['query']=_['keys'](_0x4bbdd8[_0x3255('0x32')]);_0x3d8432['filters']=_['intersection'](_0x3d8432[_0x3255('0x36')],_0x3d8432[_0x3255('0x32')]);_0xc6e031[_0x3255('0x37')]=_[_0x3255('0x35')](_0x3d8432[_0x3255('0x36')],qs[_0x3255('0x38')](_0x4bbdd8[_0x3255('0x32')]['fields']));_0xc6e031[_0x3255('0x37')]=_0xc6e031[_0x3255('0x37')][_0x3255('0x39')]?_0xc6e031[_0x3255('0x37')]:_0x3d8432[_0x3255('0x36')];if(_0x4bbdd8[_0x3255('0x32')][_0x3255('0x48')]){_0xc6e031[_0x3255('0x42')]=[{'all':!![]}];}_0xc6e031=_[_0x3255('0x3f')]({},_0xc6e031,_0x4bbdd8[_0x3255('0x49')]);return db[_0x3255('0x2d')][_0x3255('0x4a')](_0xc6e031)[_0x3255('0x26')](handleEntityNotFound(_0x251043,null))['then'](respondWithResult(_0x251043,null))['catch'](handleError(_0x251043,null));};exports['create']=function(_0x21af20,_0x354709){return db[_0x3255('0x2d')][_0x3255('0x4b')](_0x21af20[_0x3255('0x4c')],{})[_0x3255('0x26')](respondWithResult(_0x354709,0xc9))[_0x3255('0x4d')](handleError(_0x354709,null));};exports[_0x3255('0x25')]=function(_0x40ca56,_0x4137c7){if(_0x40ca56['body']['id']){delete _0x40ca56[_0x3255('0x4c')]['id'];}return db[_0x3255('0x2d')][_0x3255('0x4a')]({'where':{'id':_0x40ca56['params']['id']}})[_0x3255('0x26')](handleEntityNotFound(_0x4137c7,null))['then'](saveUpdates(_0x40ca56[_0x3255('0x4c')],null))['then'](respondWithResult(_0x4137c7,null))['catch'](handleError(_0x4137c7,null));};exports[_0x3255('0x27')]=function(_0x339d37,_0x145184){return db[_0x3255('0x2d')]['find']({'where':{'id':_0x339d37[_0x3255('0x46')]['id']}})[_0x3255('0x26')](handleEntityNotFound(_0x145184,null))[_0x3255('0x26')](removeEntity(_0x145184,null))[_0x3255('0x4d')](handleError(_0x145184,null));};exports['getConfigurations']=function(_0x4a705d,_0x11bacd,_0x438bca){var _0x3b5225={};var _0x1fd0ca={};var _0x574a41;var _0x4cbe9e;return db[_0x3255('0x2d')][_0x3255('0x4e')]({'where':{'id':_0x4a705d[_0x3255('0x46')]['id']}})[_0x3255('0x26')](handleEntityNotFound(_0x11bacd,null))['then'](function(_0x5589d3){if(_0x5589d3){_0x574a41=_0x5589d3;_0x1fd0ca[_0x3255('0x36')]=_[_0x3255('0x33')](db[_0x3255('0x4f')][_0x3255('0x47')]);_0x1fd0ca[_0x3255('0x32')]=_[_0x3255('0x33')](_0x4a705d[_0x3255('0x32')]);_0x1fd0ca[_0x3255('0x34')]=_['intersection'](_0x1fd0ca[_0x3255('0x36')],_0x1fd0ca['query']);_0x3b5225[_0x3255('0x37')]=_[_0x3255('0x35')](_0x1fd0ca[_0x3255('0x36')],qs[_0x3255('0x38')](_0x4a705d['query'][_0x3255('0x38')]));_0x3b5225[_0x3255('0x37')]=_0x3b5225[_0x3255('0x37')]['length']?_0x3b5225[_0x3255('0x37')]:_0x1fd0ca[_0x3255('0x36')];_0x3b5225['order']=qs[_0x3255('0x3b')](_0x4a705d[_0x3255('0x32')][_0x3255('0x3b')]);_0x3b5225[_0x3255('0x3c')]=qs['filters'](_[_0x3255('0x3d')](_0x4a705d[_0x3255('0x32')],_0x1fd0ca[_0x3255('0x34')]));if(_0x4a705d['query'][_0x3255('0x3e')]){_0x3b5225['where']=_[_0x3255('0x3f')](_0x3b5225['where'],{'$or':_[_0x3255('0x31')](_0x3b5225[_0x3255('0x37')],function(_0x1d771e){var _0x21d1a5={};_0x21d1a5[_0x1d771e]={'$like':'%'+_0x4a705d[_0x3255('0x32')]['filter']+'%'};return _0x21d1a5;})});}_0x3b5225=_[_0x3255('0x3f')]({},_0x3b5225,_0x4a705d[_0x3255('0x49')]);return _0x574a41[_0x3255('0x50')](_0x3b5225);}})[_0x3255('0x26')](function(_0x598638){if(_0x598638){_0x4cbe9e=_0x598638[_0x3255('0x39')];if(!_0x4a705d[_0x3255('0x32')][_0x3255('0x3a')](_0x3255('0x51'))){_0x3b5225[_0x3255('0x1d')]=qs[_0x3255('0x1d')](_0x4a705d[_0x3255('0x32')][_0x3255('0x1d')]);_0x3b5225[_0x3255('0x1f')]=qs['offset'](_0x4a705d[_0x3255('0x32')][_0x3255('0x1f')]);}return _0x574a41['getConfigurations'](_0x3b5225);}})[_0x3255('0x26')](function(_0x292089){if(_0x292089){return _0x292089?{'count':_0x4cbe9e,'rows':_0x292089}:null;}})[_0x3255('0x26')](respondWithResult(_0x11bacd,null))[_0x3255('0x4d')](handleError(_0x11bacd,null));};exports['addConfiguration']=function(_0x3c3c39,_0x4a0f64,_0x5a23d0){if(_0x3c3c39['body']['id']){delete _0x3c3c39[_0x3255('0x4c')]['id'];}return db[_0x3255('0x2d')][_0x3255('0x4e')]({'where':{'id':_0x3c3c39['params']['id']}})['then'](handleEntityNotFound(_0x4a0f64,null))[_0x3255('0x26')](function(_0x57dfbd){if(_0x57dfbd){_0x3c3c39[_0x3255('0x4c')]['AccountId']=_0x57dfbd['id'];_0x3c3c39[_0x3255('0x4c')][_0x3255('0x52')]=integrations[_0x3255('0x53')](_0x3c3c39['body'][_0x3255('0x54')],_0x3c3c39[_0x3255('0x4c')]['type']);_0x3c3c39[_0x3255('0x4c')][_0x3255('0x55')]=integrations['getDescriptions'](_0x3c3c39['body'][_0x3255('0x54')],_0x3c3c39['body']['type']);return db[_0x3255('0x4f')]['create'](_0x3c3c39['body'],{'include':[{'model':db[_0x3255('0x56')],'as':_0x3255('0x52')},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0x3255('0x26')](respondWithResult(_0x4a0f64,null))[_0x3255('0x4d')](handleError(_0x4a0f64,null));};exports['getFields']=function(_0x5d6ce2,_0x4db41b,_0x2d52f){var _0x7015a0='';var _0x1c6c7c='';return db[_0x3255('0x2d')]['findOne']({'where':{'id':_0x5d6ce2[_0x3255('0x46')]['id']},'attributes':['id',_0x3255('0x57'),_0x3255('0x58'),'apiKey']})[_0x3255('0x26')](handleEntityNotFound(_0x4db41b,null))[_0x3255('0x26')](function(_0x597527){if(_0x597527){_0x1c6c7c=_0x597527[_0x3255('0x57')];_0x7015a0=_0x597527[_0x3255('0x58')];var _0x35f7ad=_0x597527[_0x3255('0x58')][_0x3255('0x59')](-0x1);if(_0x35f7ad==='/'){_0x7015a0=_0x7015a0[_0x3255('0x5a')](0x0,_0x7015a0[_0x3255('0x5b')](_0x35f7ad));}return rp({'method':_0x3255('0x5c'),'uri':util[_0x3255('0x5d')](_0x3255('0x5e'),_0x7015a0,_0x3255('0x5f')),'headers':{'Authorization':'Token\x20token='+_0x597527[_0x3255('0x60')]},'json':!![]});}})[_0x3255('0x26')](function(_0x5d9ec7){if(_0x5d9ec7){var _0x120f45=_0x5d9ec7['users'];var _0x12ef49=![];var _0x815652=null;for(_0x815652=0x0;_0x815652<_0x120f45[_0x3255('0x39')];_0x815652++){if(_0x120f45[_0x815652]['email']===_0x1c6c7c){_0x12ef49=!![];}}if(_0x12ef49){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x4db41b,null))[_0x3255('0x4d')](function(_0x1fefa5){var _0x49a6b0=_0x5d6ce2[_0x3255('0x32')][_0x3255('0x61')]?0x1f4:_0x1fefa5[_0x3255('0x62')]||0x1f4;logger[_0x3255('0x28')](_0x3255('0x63'),_0x3255('0x64'),_0x49a6b0,JSON[_0x3255('0x65')](_0x1fefa5));delete _0x1fefa5[_0x3255('0x2a')];if(_0x49a6b0===0x191){_0x49a6b0=0x190;}_0x4db41b[_0x3255('0x1b')](_0x49a6b0)['send'](_0x5d6ce2['query'][_0x3255('0x61')]?{'message':_0x3255('0x66'),'statusCode':_0x1fefa5[_0x3255('0x62')]}:_0x1fefa5);});};
\ No newline at end of file
index 3a8004b..9410e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['define','FreshsalesAccount','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x5d8ef9,_0x41efc3){var _0x5a69ee=function(_0x4351b5){while(--_0x4351b5){_0x5d8ef9['push'](_0x5d8ef9['shift']());}};_0x5a69ee(++_0x41efc3);}(_0x32f4,0x154));var _0x432f=function(_0x43c7a5,_0x553343){_0x43c7a5=_0x43c7a5-0x0;var _0x213f13=_0x32f4[_0x43c7a5];return _0x213f13;};'use strict';var _=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var logger=require(_0x432f('0x2'))(_0x432f('0x3'));var moment=require('moment');var BPromise=require(_0x432f('0x4'));var rp=require(_0x432f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x432f('0x6'));var config=require(_0x432f('0x7'));var attributes=require(_0x432f('0x8'));var integrations=require(_0x432f('0x9'));module[_0x432f('0xa')]=function(_0x5d8cc0,_0x5b5f08){return _0x5d8cc0[_0x432f('0xb')](_0x432f('0xc'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x27a0=['int_freshsales_accounts','util','../../config/logger','api','moment','bluebird','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x486814,_0x134f6a){var _0x40354f=function(_0x193343){while(--_0x193343){_0x486814['push'](_0x486814['shift']());}};_0x40354f(++_0x134f6a);}(_0x27a0,0xbf));var _0x027a=function(_0x33cb2f,_0x345fc6){_0x33cb2f=_0x33cb2f-0x0;var _0x329ad2=_0x27a0[_0x33cb2f];return _0x329ad2;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var logger=require(_0x027a('0x1'))(_0x027a('0x2'));var moment=require(_0x027a('0x3'));var BPromise=require(_0x027a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x027a('0x5'));var integrations=require(_0x027a('0x6'));module[_0x027a('0x7')]=function(_0x639bec,_0xe233ed){return _0x639bec[_0x027a('0x8')]('FreshsalesAccount',attributes,{'tableName':_0x027a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06be1ce..04d1789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['http','info','FreshsalesAccount,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','then','GetFreshsalesAccount','ShowFreshsalesAccount','find','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x344432,_0x249493){var _0x2ba780=function(_0x403614){while(--_0x403614){_0x344432['push'](_0x344432['shift']());}};_0x2ba780(++_0x249493);}(_0x7a54,0x106));var _0x47a5=function(_0x3272d4,_0x3b5d44){_0x3272d4=_0x3272d4-0x0;var _0x1d048a=_0x7a54[_0x3272d4];return _0x1d048a;};'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')]('FreshsalesAccount,\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['GetFreshsalesAccount']=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,'limit':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['limit']||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1b')]?_[_0x47a5('0x1c')](_0x5247fd['options'][_0x47a5('0x1b')],function(_0x385687){return{'model':db[_0x385687['model']],'as':_0x385687['as'],'attributes':_0x385687[_0x47a5('0x1a')],'include':_0x385687[_0x47a5('0x1b')]?_[_0x47a5('0x1c')](_0x385687[_0x47a5('0x1b')],function(_0x3abd6a){return{'model':db[_0x3abd6a['model']],'as':_0x3abd6a['as'],'attributes':_0x3abd6a['attributes'],'include':_0x3abd6a[_0x47a5('0x1b')]?_['map'](_0x3abd6a[_0x47a5('0x1b')],function(_0x5b6c4e){return{'model':db[_0x5b6c4e[_0x47a5('0x1d')]],'as':_0x5b6c4e['as'],'attributes':_0x5b6c4e[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x47a5('0x1e')](function(_0x1dac65){logger[_0x47a5('0xb')](_0x47a5('0x1f'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1f'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1dac65));_0xaf70a6(_0x1dac65);})[_0x47a5('0x14')](function(_0x1127f8){logger[_0x47a5('0xf')](_0x47a5('0x1f'),_0x1127f8['message'],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x1127f8['message']));});});};exports[_0x47a5('0x20')]=function(_0x9ac908){var _0x16901f=this;return new Promise(function(_0x4d6b57,_0x256650){return db[_0x47a5('0x15')][_0x47a5('0x21')]({'raw':_0x9ac908[_0x47a5('0x17')]?_0x9ac908['options']['raw']===undefined?!![]:![]:!![],'where':_0x9ac908[_0x47a5('0x17')]?_0x9ac908[_0x47a5('0x17')]['where']||null:null,'attributes':_0x9ac908['options']?_0x9ac908[_0x47a5('0x17')][_0x47a5('0x1a')]||null:null,'include':_0x9ac908['options']?_0x9ac908[_0x47a5('0x17')]['include']?_[_0x47a5('0x1c')](_0x9ac908[_0x47a5('0x17')]['include'],function(_0x4843c0){return{'model':db[_0x4843c0[_0x47a5('0x1d')]],'as':_0x4843c0['as'],'attributes':_0x4843c0['attributes'],'include':_0x4843c0[_0x47a5('0x1b')]?_[_0x47a5('0x1c')](_0x4843c0[_0x47a5('0x1b')],function(_0x52749b){return{'model':db[_0x52749b[_0x47a5('0x1d')]],'as':_0x52749b['as'],'attributes':_0x52749b['attributes'],'include':_0x52749b['include']?_[_0x47a5('0x1c')](_0x52749b['include'],function(_0x25cce0){return{'model':db[_0x25cce0['model']],'as':_0x25cce0['as'],'attributes':_0x25cce0[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x47a5('0x1e')](function(_0x38c8d4){logger[_0x47a5('0xb')](_0x47a5('0x20'),_0x9ac908);logger[_0x47a5('0xd')](_0x47a5('0x20'),_0x9ac908,JSON[_0x47a5('0xe')](_0x38c8d4));_0x4d6b57(_0x38c8d4);})[_0x47a5('0x14')](function(_0x4caed5){logger[_0x47a5('0xf')](_0x47a5('0x20'),_0x4caed5['message'],_0x9ac908);_0x256650(_0x16901f[_0x47a5('0xf')](0x1f4,_0x4caed5[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x8aad=['stringify','error','code','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','limit','include','map','model','attributes','then','ShowFreshsalesAccount','find','raw','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s'];(function(_0x1bb6aa,_0x40fe82){var _0x2ef28e=function(_0x32b4eb){while(--_0x32b4eb){_0x1bb6aa['push'](_0x1bb6aa['shift']());}};_0x2ef28e(++_0x40fe82);}(_0x8aad,0x146));var _0xd8aa=function(_0x2cabd8,_0x457dba){_0x2cabd8=_0x2cabd8-0x0;var _0x9b1601=_0x8aad[_0x2cabd8];return _0x9b1601;};'use strict';var _=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var moment=require('moment');var BPromise=require(_0xd8aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8aa('0x3'));var db=require(_0xd8aa('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd8aa('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd8aa('0x6')][_0xd8aa('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ea12,_0x4a4b10,_0x2a559d){return new BPromise(function(_0x1da411,_0x2a23b5){return client[_0xd8aa('0x8')](_0x16ea12,_0x2a559d)['then'](function(_0x5de228){logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));logger[_0xd8aa('0xc')](_0xd8aa('0xd'),_0x4a4b10,'request\x20sent',JSON[_0xd8aa('0xe')](_0x5de228));if(_0x5de228[_0xd8aa('0xf')]){if(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x10')]===0x1f4){logger[_0xd8aa('0xf')](_0xd8aa('0xa'),_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x2a23b5(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x1da411(_0x5de228[_0xd8aa('0xf')]['message']);}else{logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));_0x1da411(_0x5de228[_0xd8aa('0x12')]['message']);}})[_0xd8aa('0x13')](function(_0xa9ba1b){logger['error'](_0xd8aa('0xa'),_0x4a4b10,_0xa9ba1b);_0x2a23b5(_0xa9ba1b);});});}exports[_0xd8aa('0x14')]=function(_0x32e2cd){var _0x3a29ca=this;return new Promise(function(_0x2d34ac,_0x4953be){return db[_0xd8aa('0x15')][_0xd8aa('0x16')]({'raw':_0x32e2cd[_0xd8aa('0x17')]?_0x32e2cd[_0xd8aa('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x32e2cd[_0xd8aa('0x17')]?_0x32e2cd[_0xd8aa('0x17')][_0xd8aa('0x18')]||null:null,'attributes':_0x32e2cd[_0xd8aa('0x17')]?_0x32e2cd[_0xd8aa('0x17')]['attributes']||null:null,'limit':_0x32e2cd[_0xd8aa('0x17')]?_0x32e2cd[_0xd8aa('0x17')][_0xd8aa('0x19')]||null:null,'include':_0x32e2cd['options']?_0x32e2cd[_0xd8aa('0x17')][_0xd8aa('0x1a')]?_[_0xd8aa('0x1b')](_0x32e2cd[_0xd8aa('0x17')][_0xd8aa('0x1a')],function(_0x16758a){return{'model':db[_0x16758a[_0xd8aa('0x1c')]],'as':_0x16758a['as'],'attributes':_0x16758a[_0xd8aa('0x1d')],'include':_0x16758a[_0xd8aa('0x1a')]?_[_0xd8aa('0x1b')](_0x16758a[_0xd8aa('0x1a')],function(_0x370d6f){return{'model':db[_0x370d6f[_0xd8aa('0x1c')]],'as':_0x370d6f['as'],'attributes':_0x370d6f['attributes'],'include':_0x370d6f[_0xd8aa('0x1a')]?_[_0xd8aa('0x1b')](_0x370d6f[_0xd8aa('0x1a')],function(_0x1f6ab2){return{'model':db[_0x1f6ab2[_0xd8aa('0x1c')]],'as':_0x1f6ab2['as'],'attributes':_0x1f6ab2[_0xd8aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd8aa('0x1e')](function(_0x19edee){logger[_0xd8aa('0x9')](_0xd8aa('0x14'),_0x32e2cd);logger['debug'](_0xd8aa('0x14'),_0x32e2cd,JSON[_0xd8aa('0xe')](_0x19edee));_0x2d34ac(_0x19edee);})[_0xd8aa('0x13')](function(_0x49a7c8){logger[_0xd8aa('0xf')]('GetFreshsalesAccount',_0x49a7c8[_0xd8aa('0x11')],_0x32e2cd);_0x4953be(_0x3a29ca[_0xd8aa('0xf')](0x1f4,_0x49a7c8[_0xd8aa('0x11')]));});});};exports[_0xd8aa('0x1f')]=function(_0x44f783){var _0x28f3cc=this;return new Promise(function(_0xd8d3b3,_0x3cbe8d){return db['FreshsalesAccount'][_0xd8aa('0x20')]({'raw':_0x44f783[_0xd8aa('0x17')]?_0x44f783[_0xd8aa('0x17')][_0xd8aa('0x21')]===undefined?!![]:![]:!![],'where':_0x44f783[_0xd8aa('0x17')]?_0x44f783[_0xd8aa('0x17')][_0xd8aa('0x18')]||null:null,'attributes':_0x44f783[_0xd8aa('0x17')]?_0x44f783['options'][_0xd8aa('0x1d')]||null:null,'include':_0x44f783[_0xd8aa('0x17')]?_0x44f783[_0xd8aa('0x17')]['include']?_[_0xd8aa('0x1b')](_0x44f783[_0xd8aa('0x17')][_0xd8aa('0x1a')],function(_0x45c216){return{'model':db[_0x45c216[_0xd8aa('0x1c')]],'as':_0x45c216['as'],'attributes':_0x45c216[_0xd8aa('0x1d')],'include':_0x45c216[_0xd8aa('0x1a')]?_[_0xd8aa('0x1b')](_0x45c216[_0xd8aa('0x1a')],function(_0x47a3b2){return{'model':db[_0x47a3b2[_0xd8aa('0x1c')]],'as':_0x47a3b2['as'],'attributes':_0x47a3b2[_0xd8aa('0x1d')],'include':_0x47a3b2[_0xd8aa('0x1a')]?_[_0xd8aa('0x1b')](_0x47a3b2[_0xd8aa('0x1a')],function(_0x1b1469){return{'model':db[_0x1b1469[_0xd8aa('0x1c')]],'as':_0x1b1469['as'],'attributes':_0x1b1469[_0xd8aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd8aa('0x1e')](function(_0x5983f6){logger[_0xd8aa('0x9')]('ShowFreshsalesAccount',_0x44f783);logger[_0xd8aa('0xc')](_0xd8aa('0x1f'),_0x44f783,JSON['stringify'](_0x5983f6));_0xd8d3b3(_0x5983f6);})[_0xd8aa('0x13')](function(_0x1a4f2c){logger[_0xd8aa('0xf')](_0xd8aa('0x1f'),_0x1a4f2c[_0xd8aa('0x11')],_0x44f783);_0x3cbe8d(_0x28f3cc['error'](0x1f4,_0x1a4f2c['message']));});});};
\ No newline at end of file
index ff4dc5c..4666063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b05=['fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/subjects','getSubjects','/:id/fields','getFields','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x4ac743,_0x3fa20d){var _0x3e60a3=function(_0x197da0){while(--_0x197da0){_0x4ac743['push'](_0x4ac743['shift']());}};_0x3e60a3(++_0x3fa20d);}(_0x3b05,0x64));var _0x53b0=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x3b05[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require(_0x53b0('0x0'));var util=require(_0x53b0('0x1'));var path=require('path');var timeout=require(_0x53b0('0x2'));var express=require(_0x53b0('0x3'));var router=express[_0x53b0('0x4')]();var fs_extra=require(_0x53b0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x53b0('0x6'));var config=require(_0x53b0('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x53b0('0x8')]('/',auth[_0x53b0('0x9')](),controller['index']);router[_0x53b0('0x8')](_0x53b0('0xa'),auth[_0x53b0('0x9')](),controller[_0x53b0('0xb')]);router['get'](_0x53b0('0xc'),auth[_0x53b0('0x9')](),controller[_0x53b0('0xd')]);router[_0x53b0('0x8')]('/:id/descriptions',auth[_0x53b0('0x9')](),controller['getDescriptions']);router[_0x53b0('0x8')](_0x53b0('0xe'),auth['isAuthenticated'](),controller[_0x53b0('0xf')]);router['post']('/',auth[_0x53b0('0x9')](),controller['create']);router[_0x53b0('0x10')](_0x53b0('0xa'),auth['isAuthenticated'](),controller[_0x53b0('0x11')]);router[_0x53b0('0x12')](_0x53b0('0xa'),auth[_0x53b0('0x9')](),controller[_0x53b0('0x13')]);module[_0x53b0('0x14')]=router;
\ No newline at end of file
+var _0x9704=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','/:id','isAuthenticated','show'];(function(_0x4b726d,_0xf4eba3){var _0x45c6f0=function(_0x688f66){while(--_0x688f66){_0x4b726d['push'](_0x4b726d['shift']());}};_0x45c6f0(++_0xf4eba3);}(_0x9704,0x15e));var _0x4970=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9704[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4970('0x0'));var util=require('util');var path=require(_0x4970('0x1'));var timeout=require(_0x4970('0x2'));var express=require(_0x4970('0x3'));var router=express[_0x4970('0x4')]();var fs_extra=require(_0x4970('0x5'));var auth=require(_0x4970('0x6'));var interaction=require(_0x4970('0x7'));var config=require(_0x4970('0x8'));var controller=require(_0x4970('0x9'));router[_0x4970('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4970('0xa')](_0x4970('0xb'),auth[_0x4970('0xc')](),controller[_0x4970('0xd')]);router['get'](_0x4970('0xe'),auth['isAuthenticated'](),controller[_0x4970('0xf')]);router[_0x4970('0xa')](_0x4970('0x10'),auth[_0x4970('0xc')](),controller[_0x4970('0x11')]);router['get'](_0x4970('0x12'),auth[_0x4970('0xc')](),controller[_0x4970('0x13')]);router[_0x4970('0x14')]('/',auth[_0x4970('0xc')](),controller[_0x4970('0x15')]);router[_0x4970('0x16')](_0x4970('0xb'),auth['isAuthenticated'](),controller[_0x4970('0x17')]);router[_0x4970('0x18')](_0x4970('0xb'),auth[_0x4970('0xc')](),controller['destroy']);module[_0x4970('0x19')]=router;
\ No newline at end of file
index 21f56b2..786fee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf726=['sequelize','STRING'];(function(_0x2da822,_0x6c5ae3){var _0x28e610=function(_0x2f2852){while(--_0x2f2852){_0x2da822['push'](_0x2da822['shift']());}};_0x28e610(++_0x6c5ae3);}(_0xf726,0xe6));var _0x6f72=function(_0x395945,_0x5a51a2){_0x395945=_0x395945-0x0;var _0x43dfef=_0xf726[_0x395945];return _0x43dfef;};'use strict';var Sequelize=require(_0x6f72('0x0'));module['exports']={'name':{'type':Sequelize[_0x6f72('0x1')]},'description':{'type':Sequelize[_0x6f72('0x1')]}};
\ No newline at end of file
+var _0x711b=['sequelize','exports'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x711b,0x94));var _0xb711=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x711b[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb711('0x0'));module[_0xb711('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3ccd3a0..8ac3c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9842=['limit','undefined','count','set','Content-Range','json','save','update','then','destroy','error','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','find','create','body','catch','findOne','FreshsalesField','pick','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9842,0x7e));var _0x2984=function(_0x12b892,_0x4f12ea){_0x12b892=_0x12b892-0x0;var _0x1cc118=_0x9842[_0x12b892];return _0x1cc118;};'use strict';var emlformat=require(_0x2984('0x0'));var rimraf=require(_0x2984('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2984('0x2'));var rp=require(_0x2984('0x3'));var moment=require(_0x2984('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2984('0x5'));var util=require(_0x2984('0x6'));var path=require(_0x2984('0x7'));var sox=require(_0x2984('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2984('0x9'));var _=require(_0x2984('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2984('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x2984('0xc'));var querystring=require(_0x2984('0xd'));var Papa=require(_0x2984('0xe'));var Redis=require(_0x2984('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2984('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2984('0x11'));var logger=require(_0x2984('0x12'))(_0x2984('0x13'));var utils=require(_0x2984('0x14'));var config=require(_0x2984('0x15'));var licenseUtil=require(_0x2984('0x16'));var db=require(_0x2984('0x17'))['db'];function respondWithStatusCode(_0xce078,_0x365c17){_0x365c17=_0x365c17||0xcc;return function(_0x4af9de){if(_0x4af9de){return _0xce078[_0x2984('0x18')](_0x365c17);}return _0xce078['status'](_0x365c17)[_0x2984('0x19')]();};}function respondWithResult(_0x78dd22,_0x58831d){_0x58831d=_0x58831d||0xc8;return function(_0xb296a3){if(_0xb296a3){return _0x78dd22[_0x2984('0x1a')](_0x58831d)['json'](_0xb296a3);}};}function respondWithFilteredResult(_0x55844e,_0x38017d){return function(_0x199d9c){if(_0x199d9c){var _0x14c015=typeof _0x38017d[_0x2984('0x1b')]==='undefined'&&typeof _0x38017d[_0x2984('0x1c')]===_0x2984('0x1d');var _0x4aed87=_0x199d9c[_0x2984('0x1e')];var _0x24fe02=_0x14c015?0x0:_0x38017d['offset'];var _0x14415a=_0x14c015?_0x199d9c[_0x2984('0x1e')]:_0x38017d[_0x2984('0x1b')]+_0x38017d[_0x2984('0x1c')];var _0x37d040;if(_0x14415a>=_0x4aed87){_0x14415a=_0x4aed87;_0x37d040=0xc8;}else{_0x37d040=0xce;}_0x55844e[_0x2984('0x1a')](_0x37d040);return _0x55844e[_0x2984('0x1f')](_0x2984('0x20'),_0x24fe02+'-'+_0x14415a+'/'+_0x4aed87)[_0x2984('0x21')](_0x199d9c);}return null;};}function patchUpdates(_0x267cc){return function(_0x5c9d28){try{jsonpatch['apply'](_0x5c9d28,_0x267cc,!![]);}catch(_0x2f9924){return BPromise['reject'](_0x2f9924);}return _0x5c9d28[_0x2984('0x22')]();};}function saveUpdates(_0x59afa9,_0x1ca163){return function(_0x328717){if(_0x328717){return _0x328717[_0x2984('0x23')](_0x59afa9)[_0x2984('0x24')](function(_0x4492ef){return _0x4492ef;});}return null;};}function removeEntity(_0x34ff5a,_0x40b0f5){return function(_0x2e339f){if(_0x2e339f){return _0x2e339f[_0x2984('0x25')]()['then'](function(){_0x34ff5a[_0x2984('0x1a')](0xcc)[_0x2984('0x19')]();});}};}function handleEntityNotFound(_0x2ade5c,_0x54dc81){return function(_0x2c931a){if(!_0x2c931a){_0x2ade5c[_0x2984('0x18')](0x194);}return _0x2c931a;};}function handleError(_0x12b803,_0x35df79){_0x35df79=_0x35df79||0x1f4;return function(_0x502563){logger[_0x2984('0x26')](_0x502563[_0x2984('0x27')]);if(_0x502563[_0x2984('0x28')]){delete _0x502563[_0x2984('0x28')];}_0x12b803[_0x2984('0x1a')](_0x35df79)['send'](_0x502563);};}exports[_0x2984('0x29')]=function(_0x681173,_0xfb16e5){var _0x5882c1={},_0x35d8c9={},_0x44cbf9={'count':0x0,'rows':[]};var _0x3cab1c=_[_0x2984('0x2a')](db[_0x2984('0x2b')][_0x2984('0x2c')],function(_0x468d48){return{'name':_0x468d48[_0x2984('0x2d')],'type':_0x468d48[_0x2984('0x2e')]['key']};});_0x35d8c9[_0x2984('0x2f')]=_[_0x2984('0x2a')](_0x3cab1c,'name');_0x35d8c9[_0x2984('0x30')]=_[_0x2984('0x31')](_0x681173['query']);_0x35d8c9[_0x2984('0x32')]=_[_0x2984('0x33')](_0x35d8c9['model'],_0x35d8c9[_0x2984('0x30')]);_0x5882c1['attributes']=_[_0x2984('0x33')](_0x35d8c9[_0x2984('0x2f')],qs[_0x2984('0x34')](_0x681173[_0x2984('0x30')][_0x2984('0x34')]));_0x5882c1[_0x2984('0x35')]=_0x5882c1['attributes'][_0x2984('0x36')]?_0x5882c1['attributes']:_0x35d8c9[_0x2984('0x2f')];if(!_0x681173['query'][_0x2984('0x37')](_0x2984('0x38'))){_0x5882c1[_0x2984('0x1c')]=qs[_0x2984('0x1c')](_0x681173[_0x2984('0x30')][_0x2984('0x1c')]);_0x5882c1['offset']=qs['offset'](_0x681173[_0x2984('0x30')][_0x2984('0x1b')]);}_0x5882c1[_0x2984('0x39')]=qs[_0x2984('0x3a')](_0x681173[_0x2984('0x30')]['sort']);_0x5882c1[_0x2984('0x3b')]=qs[_0x2984('0x32')](_['pick'](_0x681173['query'],_0x35d8c9[_0x2984('0x32')]),_0x3cab1c);if(_0x681173[_0x2984('0x30')][_0x2984('0x3c')]){_0x5882c1[_0x2984('0x3b')]=_[_0x2984('0x3d')](_0x5882c1[_0x2984('0x3b')],{'$or':_[_0x2984('0x2a')](_0x3cab1c,function(_0x3cf883){if(_0x3cf883['type']!==_0x2984('0x3e')){var _0x1b51b6={};_0x1b51b6[_0x3cf883[_0x2984('0x28')]]={'$like':'%'+_0x681173[_0x2984('0x30')][_0x2984('0x3c')]+'%'};return _0x1b51b6;}})});}_0x5882c1=_[_0x2984('0x3d')]({},_0x5882c1,_0x681173[_0x2984('0x3f')]);var _0x575aeb={'where':_0x5882c1[_0x2984('0x3b')]};return db['FreshsalesConfiguration'][_0x2984('0x1e')](_0x575aeb)['then'](function(_0x27f40c){_0x44cbf9[_0x2984('0x1e')]=_0x27f40c;if(_0x681173[_0x2984('0x30')][_0x2984('0x40')]){_0x5882c1['include']=[{'all':!![]}];}return db[_0x2984('0x2b')][_0x2984('0x41')](_0x5882c1);})[_0x2984('0x24')](function(_0x1e1762){_0x44cbf9['rows']=_0x1e1762;return _0x44cbf9;})[_0x2984('0x24')](respondWithFilteredResult(_0xfb16e5,_0x5882c1))['catch'](handleError(_0xfb16e5,null));};exports[_0x2984('0x42')]=function(_0x3e6fca,_0x1078df){var _0x1232e2={'raw':![],'where':{'id':_0x3e6fca[_0x2984('0x43')]['id']}},_0x5ef602={};_0x5ef602[_0x2984('0x2f')]=_['keys'](db[_0x2984('0x2b')][_0x2984('0x2c')]);_0x5ef602[_0x2984('0x30')]=_['keys'](_0x3e6fca[_0x2984('0x30')]);_0x5ef602[_0x2984('0x32')]=_[_0x2984('0x33')](_0x5ef602[_0x2984('0x2f')],_0x5ef602[_0x2984('0x30')]);_0x1232e2[_0x2984('0x35')]=_[_0x2984('0x33')](_0x5ef602[_0x2984('0x2f')],qs[_0x2984('0x34')](_0x3e6fca['query'][_0x2984('0x34')]));_0x1232e2[_0x2984('0x35')]=_0x1232e2[_0x2984('0x35')]['length']?_0x1232e2[_0x2984('0x35')]:_0x5ef602['model'];if(_0x3e6fca[_0x2984('0x30')][_0x2984('0x40')]){_0x1232e2['include']=[{'all':!![]}];}_0x1232e2=_[_0x2984('0x3d')]({},_0x1232e2,_0x3e6fca['options']);return db['FreshsalesConfiguration'][_0x2984('0x44')](_0x1232e2)[_0x2984('0x24')](handleEntityNotFound(_0x1078df,null))[_0x2984('0x24')](respondWithResult(_0x1078df,null))['catch'](handleError(_0x1078df,null));};exports[_0x2984('0x45')]=function(_0x5874da,_0x331ae6){return db[_0x2984('0x2b')][_0x2984('0x45')](_0x5874da[_0x2984('0x46')],{})[_0x2984('0x24')](respondWithResult(_0x331ae6,0xc9))['catch'](handleError(_0x331ae6,null));};exports['update']=function(_0x688f05,_0x58b118){if(_0x688f05[_0x2984('0x46')]['id']){delete _0x688f05[_0x2984('0x46')]['id'];}return db[_0x2984('0x2b')]['find']({'where':{'id':_0x688f05['params']['id']}})[_0x2984('0x24')](handleEntityNotFound(_0x58b118,null))['then'](saveUpdates(_0x688f05[_0x2984('0x46')],null))[_0x2984('0x24')](respondWithResult(_0x58b118,null))[_0x2984('0x47')](handleError(_0x58b118,null));};exports[_0x2984('0x25')]=function(_0x8a7468,_0x11f467){return db[_0x2984('0x2b')]['find']({'where':{'id':_0x8a7468[_0x2984('0x43')]['id']}})[_0x2984('0x24')](handleEntityNotFound(_0x11f467,null))[_0x2984('0x24')](removeEntity(_0x11f467,null))[_0x2984('0x47')](handleError(_0x11f467,null));};exports['getSubjects']=function(_0x23475a,_0x21f2eb,_0x2928b7){var _0x471dbe={};var _0x434202={};var _0x44675b;var _0x5ba56a;return db[_0x2984('0x2b')][_0x2984('0x48')]({'where':{'id':_0x23475a['params']['id']}})[_0x2984('0x24')](handleEntityNotFound(_0x21f2eb,null))[_0x2984('0x24')](function(_0xddda1){if(_0xddda1){_0x44675b=_0xddda1;_0x434202[_0x2984('0x2f')]=_['keys'](db[_0x2984('0x49')][_0x2984('0x2c')]);_0x434202['query']=_[_0x2984('0x31')](_0x23475a['query']);_0x434202[_0x2984('0x32')]=_[_0x2984('0x33')](_0x434202[_0x2984('0x2f')],_0x434202[_0x2984('0x30')]);_0x471dbe[_0x2984('0x35')]=_['intersection'](_0x434202['model'],qs['fields'](_0x23475a[_0x2984('0x30')][_0x2984('0x34')]));_0x471dbe['attributes']=_0x471dbe['attributes'][_0x2984('0x36')]?_0x471dbe[_0x2984('0x35')]:_0x434202[_0x2984('0x2f')];_0x471dbe[_0x2984('0x39')]=qs[_0x2984('0x3a')](_0x23475a[_0x2984('0x30')][_0x2984('0x3a')]);_0x471dbe[_0x2984('0x3b')]=qs[_0x2984('0x32')](_[_0x2984('0x4a')](_0x23475a[_0x2984('0x30')],_0x434202['filters']));if(_0x23475a[_0x2984('0x30')][_0x2984('0x3c')]){_0x471dbe[_0x2984('0x3b')]=_['merge'](_0x471dbe['where'],{'$or':_[_0x2984('0x2a')](_0x471dbe['attributes'],function(_0xd0d81f){var _0x3c3ca8={};_0x3c3ca8[_0xd0d81f]={'$like':'%'+_0x23475a[_0x2984('0x30')][_0x2984('0x3c')]+'%'};return _0x3c3ca8;})});}_0x471dbe=_[_0x2984('0x3d')]({},_0x471dbe,_0x23475a[_0x2984('0x3f')]);return _0x44675b['getSubjects'](_0x471dbe);}})['then'](function(_0x202e03){if(_0x202e03){_0x5ba56a=_0x202e03[_0x2984('0x36')];if(!_0x23475a['query'][_0x2984('0x37')](_0x2984('0x38'))){_0x471dbe[_0x2984('0x1c')]=qs[_0x2984('0x1c')](_0x23475a[_0x2984('0x30')][_0x2984('0x1c')]);_0x471dbe['offset']=qs[_0x2984('0x1b')](_0x23475a[_0x2984('0x30')][_0x2984('0x1b')]);}return _0x44675b['getSubjects'](_0x471dbe);}})[_0x2984('0x24')](function(_0x592cd0){if(_0x592cd0){return _0x592cd0?{'count':_0x5ba56a,'rows':_0x592cd0}:null;}})[_0x2984('0x24')](respondWithResult(_0x21f2eb,null))['catch'](handleError(_0x21f2eb,null));};exports[_0x2984('0x4b')]=function(_0x363b67,_0x56d1e0,_0x1b560f){var _0x34bd71={};var _0x2c0680={};var _0x999ae;var _0x182b73;return db[_0x2984('0x2b')][_0x2984('0x48')]({'where':{'id':_0x363b67[_0x2984('0x43')]['id']}})[_0x2984('0x24')](handleEntityNotFound(_0x56d1e0,null))[_0x2984('0x24')](function(_0x1c1999){if(_0x1c1999){_0x999ae=_0x1c1999;_0x2c0680[_0x2984('0x2f')]=_[_0x2984('0x31')](db[_0x2984('0x49')][_0x2984('0x2c')]);_0x2c0680[_0x2984('0x30')]=_[_0x2984('0x31')](_0x363b67['query']);_0x2c0680[_0x2984('0x32')]=_[_0x2984('0x33')](_0x2c0680[_0x2984('0x2f')],_0x2c0680[_0x2984('0x30')]);_0x34bd71[_0x2984('0x35')]=_['intersection'](_0x2c0680['model'],qs['fields'](_0x363b67['query']['fields']));_0x34bd71[_0x2984('0x35')]=_0x34bd71[_0x2984('0x35')]['length']?_0x34bd71[_0x2984('0x35')]:_0x2c0680['model'];_0x34bd71[_0x2984('0x39')]=qs[_0x2984('0x3a')](_0x363b67[_0x2984('0x30')][_0x2984('0x3a')]);_0x34bd71[_0x2984('0x3b')]=qs[_0x2984('0x32')](_[_0x2984('0x4a')](_0x363b67[_0x2984('0x30')],_0x2c0680[_0x2984('0x32')]));if(_0x363b67[_0x2984('0x30')][_0x2984('0x3c')]){_0x34bd71[_0x2984('0x3b')]=_[_0x2984('0x3d')](_0x34bd71['where'],{'$or':_[_0x2984('0x2a')](_0x34bd71[_0x2984('0x35')],function(_0x40071a){var _0x4c1cd6={};_0x4c1cd6[_0x40071a]={'$like':'%'+_0x363b67[_0x2984('0x30')]['filter']+'%'};return _0x4c1cd6;})});}_0x34bd71=_[_0x2984('0x3d')]({},_0x34bd71,_0x363b67[_0x2984('0x3f')]);return _0x999ae[_0x2984('0x4b')](_0x34bd71);}})[_0x2984('0x24')](function(_0x1b0db2){if(_0x1b0db2){_0x182b73=_0x1b0db2['length'];if(!_0x363b67[_0x2984('0x30')][_0x2984('0x37')](_0x2984('0x38'))){_0x34bd71[_0x2984('0x1c')]=qs[_0x2984('0x1c')](_0x363b67[_0x2984('0x30')][_0x2984('0x1c')]);_0x34bd71[_0x2984('0x1b')]=qs[_0x2984('0x1b')](_0x363b67[_0x2984('0x30')]['offset']);}return _0x999ae['getDescriptions'](_0x34bd71);}})[_0x2984('0x24')](function(_0x439be0){if(_0x439be0){return _0x439be0?{'count':_0x182b73,'rows':_0x439be0}:null;}})[_0x2984('0x24')](respondWithResult(_0x56d1e0,null))['catch'](handleError(_0x56d1e0,null));};exports[_0x2984('0x4c')]=function(_0x1dcdae,_0x4273bc,_0x8260c2){var _0x130293={};var _0x5a68b5={};var _0x40e394;var _0x5cbd72;return db[_0x2984('0x2b')]['findOne']({'where':{'id':_0x1dcdae['params']['id']}})[_0x2984('0x24')](handleEntityNotFound(_0x4273bc,null))[_0x2984('0x24')](function(_0x366f41){if(_0x366f41){_0x40e394=_0x366f41;_0x5a68b5[_0x2984('0x2f')]=_['keys'](db[_0x2984('0x49')][_0x2984('0x2c')]);_0x5a68b5[_0x2984('0x30')]=_[_0x2984('0x31')](_0x1dcdae[_0x2984('0x30')]);_0x5a68b5[_0x2984('0x32')]=_[_0x2984('0x33')](_0x5a68b5[_0x2984('0x2f')],_0x5a68b5[_0x2984('0x30')]);_0x130293['attributes']=_[_0x2984('0x33')](_0x5a68b5[_0x2984('0x2f')],qs[_0x2984('0x34')](_0x1dcdae[_0x2984('0x30')][_0x2984('0x34')]));_0x130293[_0x2984('0x35')]=_0x130293['attributes'][_0x2984('0x36')]?_0x130293[_0x2984('0x35')]:_0x5a68b5[_0x2984('0x2f')];_0x130293[_0x2984('0x39')]=qs[_0x2984('0x3a')](_0x1dcdae[_0x2984('0x30')]['sort']);_0x130293[_0x2984('0x3b')]=qs[_0x2984('0x32')](_['pick'](_0x1dcdae[_0x2984('0x30')],_0x5a68b5[_0x2984('0x32')]));if(_0x1dcdae['query'][_0x2984('0x3c')]){_0x130293[_0x2984('0x3b')]=_[_0x2984('0x3d')](_0x130293['where'],{'$or':_[_0x2984('0x2a')](_0x130293[_0x2984('0x35')],function(_0x1fa68f){var _0x4d01ae={};_0x4d01ae[_0x1fa68f]={'$like':'%'+_0x1dcdae[_0x2984('0x30')][_0x2984('0x3c')]+'%'};return _0x4d01ae;})});}_0x130293=_[_0x2984('0x3d')]({},_0x130293,_0x1dcdae[_0x2984('0x3f')]);return _0x40e394[_0x2984('0x4c')](_0x130293);}})[_0x2984('0x24')](function(_0x1acd22){if(_0x1acd22){_0x5cbd72=_0x1acd22['length'];if(!_0x1dcdae[_0x2984('0x30')][_0x2984('0x37')](_0x2984('0x38'))){_0x130293[_0x2984('0x1c')]=qs[_0x2984('0x1c')](_0x1dcdae['query']['limit']);_0x130293['offset']=qs[_0x2984('0x1b')](_0x1dcdae[_0x2984('0x30')]['offset']);}return _0x40e394[_0x2984('0x4c')](_0x130293);}})[_0x2984('0x24')](function(_0x57a062){if(_0x57a062){return _0x57a062?{'count':_0x5cbd72,'rows':_0x57a062}:null;}})[_0x2984('0x24')](respondWithResult(_0x4273bc,null))[_0x2984('0x47')](handleError(_0x4273bc,null));};
\ No newline at end of file
+var _0x19d8=['../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','params','find','create','body','getSubjects','FreshsalesField','getDescriptions','findOne','getFields','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x6d6a66,_0x2924af){var _0x11eb6e=function(_0x52e55a){while(--_0x52e55a){_0x6d6a66['push'](_0x6d6a66['shift']());}};_0x11eb6e(++_0x2924af);}(_0x19d8,0x127));var _0x819d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x19d8[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x819d('0x0'));var rimraf=require(_0x819d('0x1'));var zipdir=require(_0x819d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x819d('0x3'));var moment=require(_0x819d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x819d('0x5'));var util=require('util');var path=require(_0x819d('0x6'));var sox=require(_0x819d('0x7'));var csv=require('to-csv');var ejs=require(_0x819d('0x8'));var fs=require('fs');var fs_extra=require(_0x819d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x819d('0xa'));var jsforce=require(_0x819d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x819d('0xc'));var querystring=require(_0x819d('0xd'));var Papa=require(_0x819d('0xe'));var Redis=require(_0x819d('0xf'));var authService=require(_0x819d('0x10'));var qs=require(_0x819d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x819d('0x12'))('api');var utils=require(_0x819d('0x13'));var config=require(_0x819d('0x14'));var licenseUtil=require(_0x819d('0x15'));var db=require(_0x819d('0x16'))['db'];function respondWithStatusCode(_0x8864ae,_0x1b7134){_0x1b7134=_0x1b7134||0xcc;return function(_0xeab891){if(_0xeab891){return _0x8864ae['sendStatus'](_0x1b7134);}return _0x8864ae[_0x819d('0x17')](_0x1b7134)[_0x819d('0x18')]();};}function respondWithResult(_0x3fb8dd,_0x2c769b){_0x2c769b=_0x2c769b||0xc8;return function(_0x18b1f4){if(_0x18b1f4){return _0x3fb8dd[_0x819d('0x17')](_0x2c769b)[_0x819d('0x19')](_0x18b1f4);}};}function respondWithFilteredResult(_0x10e728,_0xf3113b){return function(_0x471e62){if(_0x471e62){var _0x5aa366=typeof _0xf3113b['offset']===_0x819d('0x1a')&&typeof _0xf3113b[_0x819d('0x1b')]===_0x819d('0x1a');var _0x31a2a7=_0x471e62[_0x819d('0x1c')];var _0x1b22fc=_0x5aa366?0x0:_0xf3113b[_0x819d('0x1d')];var _0x56dc08=_0x5aa366?_0x471e62[_0x819d('0x1c')]:_0xf3113b[_0x819d('0x1d')]+_0xf3113b[_0x819d('0x1b')];var _0x46f681;if(_0x56dc08>=_0x31a2a7){_0x56dc08=_0x31a2a7;_0x46f681=0xc8;}else{_0x46f681=0xce;}_0x10e728['status'](_0x46f681);return _0x10e728[_0x819d('0x1e')](_0x819d('0x1f'),_0x1b22fc+'-'+_0x56dc08+'/'+_0x31a2a7)['json'](_0x471e62);}return null;};}function patchUpdates(_0x5c8782){return function(_0x40e9fe){try{jsonpatch[_0x819d('0x20')](_0x40e9fe,_0x5c8782,!![]);}catch(_0x189e8f){return BPromise[_0x819d('0x21')](_0x189e8f);}return _0x40e9fe['save']();};}function saveUpdates(_0x40a41c,_0x3af931){return function(_0x3872c7){if(_0x3872c7){return _0x3872c7[_0x819d('0x22')](_0x40a41c)[_0x819d('0x23')](function(_0x1387a2){return _0x1387a2;});}return null;};}function removeEntity(_0x532495,_0x5d19db){return function(_0x3dcf38){if(_0x3dcf38){return _0x3dcf38[_0x819d('0x24')]()[_0x819d('0x23')](function(){_0x532495[_0x819d('0x17')](0xcc)[_0x819d('0x18')]();});}};}function handleEntityNotFound(_0x58aa8f,_0x473c0f){return function(_0x4981e2){if(!_0x4981e2){_0x58aa8f[_0x819d('0x25')](0x194);}return _0x4981e2;};}function handleError(_0x32effc,_0xdc93c0){_0xdc93c0=_0xdc93c0||0x1f4;return function(_0x2f4792){logger[_0x819d('0x26')](_0x2f4792[_0x819d('0x27')]);if(_0x2f4792[_0x819d('0x28')]){delete _0x2f4792['name'];}_0x32effc['status'](_0xdc93c0)[_0x819d('0x29')](_0x2f4792);};}exports[_0x819d('0x2a')]=function(_0x2b7581,_0x3d44d8){var _0x2e93b1={},_0x314d8a={},_0x1dcba9={'count':0x0,'rows':[]};var _0x59c28e=_[_0x819d('0x2b')](db[_0x819d('0x2c')][_0x819d('0x2d')],function(_0x46ba65){return{'name':_0x46ba65[_0x819d('0x2e')],'type':_0x46ba65['type'][_0x819d('0x2f')]};});_0x314d8a[_0x819d('0x30')]=_[_0x819d('0x2b')](_0x59c28e,_0x819d('0x28'));_0x314d8a['query']=_[_0x819d('0x31')](_0x2b7581['query']);_0x314d8a[_0x819d('0x32')]=_[_0x819d('0x33')](_0x314d8a[_0x819d('0x30')],_0x314d8a[_0x819d('0x34')]);_0x2e93b1[_0x819d('0x35')]=_[_0x819d('0x33')](_0x314d8a['model'],qs['fields'](_0x2b7581[_0x819d('0x34')][_0x819d('0x36')]));_0x2e93b1[_0x819d('0x35')]=_0x2e93b1[_0x819d('0x35')][_0x819d('0x37')]?_0x2e93b1[_0x819d('0x35')]:_0x314d8a['model'];if(!_0x2b7581[_0x819d('0x34')][_0x819d('0x38')](_0x819d('0x39'))){_0x2e93b1['limit']=qs['limit'](_0x2b7581['query'][_0x819d('0x1b')]);_0x2e93b1[_0x819d('0x1d')]=qs[_0x819d('0x1d')](_0x2b7581[_0x819d('0x34')]['offset']);}_0x2e93b1[_0x819d('0x3a')]=qs[_0x819d('0x3b')](_0x2b7581['query'][_0x819d('0x3b')]);_0x2e93b1[_0x819d('0x3c')]=qs[_0x819d('0x32')](_[_0x819d('0x3d')](_0x2b7581[_0x819d('0x34')],_0x314d8a[_0x819d('0x32')]),_0x59c28e);if(_0x2b7581[_0x819d('0x34')][_0x819d('0x3e')]){_0x2e93b1['where']=_[_0x819d('0x3f')](_0x2e93b1[_0x819d('0x3c')],{'$or':_[_0x819d('0x2b')](_0x59c28e,function(_0x318875){if(_0x318875['type']!==_0x819d('0x40')){var _0x3fe092={};_0x3fe092[_0x318875['name']]={'$like':'%'+_0x2b7581[_0x819d('0x34')][_0x819d('0x3e')]+'%'};return _0x3fe092;}})});}_0x2e93b1=_[_0x819d('0x3f')]({},_0x2e93b1,_0x2b7581[_0x819d('0x41')]);var _0x5dbf2d={'where':_0x2e93b1[_0x819d('0x3c')]};return db[_0x819d('0x2c')][_0x819d('0x1c')](_0x5dbf2d)[_0x819d('0x23')](function(_0x496cb0){_0x1dcba9[_0x819d('0x1c')]=_0x496cb0;if(_0x2b7581[_0x819d('0x34')][_0x819d('0x42')]){_0x2e93b1[_0x819d('0x43')]=[{'all':!![]}];}return db[_0x819d('0x2c')]['findAll'](_0x2e93b1);})[_0x819d('0x23')](function(_0x78e7f9){_0x1dcba9['rows']=_0x78e7f9;return _0x1dcba9;})['then'](respondWithFilteredResult(_0x3d44d8,_0x2e93b1))[_0x819d('0x44')](handleError(_0x3d44d8,null));};exports['show']=function(_0x6ae5db,_0x2de5c7){var _0x5e9888={'raw':![],'where':{'id':_0x6ae5db[_0x819d('0x45')]['id']}},_0x39bd7f={};_0x39bd7f[_0x819d('0x30')]=_[_0x819d('0x31')](db[_0x819d('0x2c')][_0x819d('0x2d')]);_0x39bd7f['query']=_['keys'](_0x6ae5db[_0x819d('0x34')]);_0x39bd7f[_0x819d('0x32')]=_[_0x819d('0x33')](_0x39bd7f[_0x819d('0x30')],_0x39bd7f[_0x819d('0x34')]);_0x5e9888['attributes']=_[_0x819d('0x33')](_0x39bd7f[_0x819d('0x30')],qs[_0x819d('0x36')](_0x6ae5db[_0x819d('0x34')][_0x819d('0x36')]));_0x5e9888[_0x819d('0x35')]=_0x5e9888[_0x819d('0x35')][_0x819d('0x37')]?_0x5e9888[_0x819d('0x35')]:_0x39bd7f[_0x819d('0x30')];if(_0x6ae5db[_0x819d('0x34')][_0x819d('0x42')]){_0x5e9888[_0x819d('0x43')]=[{'all':!![]}];}_0x5e9888=_[_0x819d('0x3f')]({},_0x5e9888,_0x6ae5db['options']);return db['FreshsalesConfiguration'][_0x819d('0x46')](_0x5e9888)[_0x819d('0x23')](handleEntityNotFound(_0x2de5c7,null))[_0x819d('0x23')](respondWithResult(_0x2de5c7,null))[_0x819d('0x44')](handleError(_0x2de5c7,null));};exports[_0x819d('0x47')]=function(_0x23ba5f,_0x2806aa){return db[_0x819d('0x2c')][_0x819d('0x47')](_0x23ba5f[_0x819d('0x48')],{})[_0x819d('0x23')](respondWithResult(_0x2806aa,0xc9))[_0x819d('0x44')](handleError(_0x2806aa,null));};exports['update']=function(_0x12f8a6,_0x5a8509){if(_0x12f8a6[_0x819d('0x48')]['id']){delete _0x12f8a6[_0x819d('0x48')]['id'];}return db[_0x819d('0x2c')][_0x819d('0x46')]({'where':{'id':_0x12f8a6[_0x819d('0x45')]['id']}})[_0x819d('0x23')](handleEntityNotFound(_0x5a8509,null))[_0x819d('0x23')](saveUpdates(_0x12f8a6[_0x819d('0x48')],null))[_0x819d('0x23')](respondWithResult(_0x5a8509,null))[_0x819d('0x44')](handleError(_0x5a8509,null));};exports[_0x819d('0x24')]=function(_0x5d7048,_0x3bcf55){return db[_0x819d('0x2c')]['find']({'where':{'id':_0x5d7048['params']['id']}})['then'](handleEntityNotFound(_0x3bcf55,null))[_0x819d('0x23')](removeEntity(_0x3bcf55,null))['catch'](handleError(_0x3bcf55,null));};exports[_0x819d('0x49')]=function(_0x1dd6fd,_0x55a293,_0x3747ec){var _0x20eccc={};var _0x2a200b={};var _0x142358;var _0x704dd1;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x1dd6fd['params']['id']}})['then'](handleEntityNotFound(_0x55a293,null))[_0x819d('0x23')](function(_0x448f32){if(_0x448f32){_0x142358=_0x448f32;_0x2a200b['model']=_['keys'](db[_0x819d('0x4a')]['rawAttributes']);_0x2a200b[_0x819d('0x34')]=_[_0x819d('0x31')](_0x1dd6fd[_0x819d('0x34')]);_0x2a200b[_0x819d('0x32')]=_['intersection'](_0x2a200b['model'],_0x2a200b[_0x819d('0x34')]);_0x20eccc[_0x819d('0x35')]=_[_0x819d('0x33')](_0x2a200b[_0x819d('0x30')],qs['fields'](_0x1dd6fd[_0x819d('0x34')][_0x819d('0x36')]));_0x20eccc[_0x819d('0x35')]=_0x20eccc['attributes']['length']?_0x20eccc[_0x819d('0x35')]:_0x2a200b[_0x819d('0x30')];_0x20eccc[_0x819d('0x3a')]=qs[_0x819d('0x3b')](_0x1dd6fd[_0x819d('0x34')][_0x819d('0x3b')]);_0x20eccc[_0x819d('0x3c')]=qs[_0x819d('0x32')](_[_0x819d('0x3d')](_0x1dd6fd[_0x819d('0x34')],_0x2a200b[_0x819d('0x32')]));if(_0x1dd6fd[_0x819d('0x34')][_0x819d('0x3e')]){_0x20eccc[_0x819d('0x3c')]=_[_0x819d('0x3f')](_0x20eccc[_0x819d('0x3c')],{'$or':_[_0x819d('0x2b')](_0x20eccc['attributes'],function(_0x5c73dc){var _0x504e6a={};_0x504e6a[_0x5c73dc]={'$like':'%'+_0x1dd6fd['query'][_0x819d('0x3e')]+'%'};return _0x504e6a;})});}_0x20eccc=_[_0x819d('0x3f')]({},_0x20eccc,_0x1dd6fd[_0x819d('0x41')]);return _0x142358[_0x819d('0x49')](_0x20eccc);}})[_0x819d('0x23')](function(_0x2acb76){if(_0x2acb76){_0x704dd1=_0x2acb76['length'];if(!_0x1dd6fd[_0x819d('0x34')]['hasOwnProperty'](_0x819d('0x39'))){_0x20eccc[_0x819d('0x1b')]=qs[_0x819d('0x1b')](_0x1dd6fd[_0x819d('0x34')][_0x819d('0x1b')]);_0x20eccc[_0x819d('0x1d')]=qs[_0x819d('0x1d')](_0x1dd6fd[_0x819d('0x34')][_0x819d('0x1d')]);}return _0x142358[_0x819d('0x49')](_0x20eccc);}})[_0x819d('0x23')](function(_0x2016db){if(_0x2016db){return _0x2016db?{'count':_0x704dd1,'rows':_0x2016db}:null;}})['then'](respondWithResult(_0x55a293,null))[_0x819d('0x44')](handleError(_0x55a293,null));};exports[_0x819d('0x4b')]=function(_0x30ebad,_0x50efdc,_0x5cdd13){var _0x1c9698={};var _0x22f545={};var _0x2babd3;var _0x56e7ef;return db[_0x819d('0x2c')][_0x819d('0x4c')]({'where':{'id':_0x30ebad[_0x819d('0x45')]['id']}})[_0x819d('0x23')](handleEntityNotFound(_0x50efdc,null))[_0x819d('0x23')](function(_0x5b2d8c){if(_0x5b2d8c){_0x2babd3=_0x5b2d8c;_0x22f545['model']=_[_0x819d('0x31')](db[_0x819d('0x4a')][_0x819d('0x2d')]);_0x22f545['query']=_['keys'](_0x30ebad[_0x819d('0x34')]);_0x22f545[_0x819d('0x32')]=_['intersection'](_0x22f545['model'],_0x22f545['query']);_0x1c9698[_0x819d('0x35')]=_['intersection'](_0x22f545[_0x819d('0x30')],qs[_0x819d('0x36')](_0x30ebad['query']['fields']));_0x1c9698[_0x819d('0x35')]=_0x1c9698[_0x819d('0x35')][_0x819d('0x37')]?_0x1c9698['attributes']:_0x22f545[_0x819d('0x30')];_0x1c9698[_0x819d('0x3a')]=qs['sort'](_0x30ebad[_0x819d('0x34')]['sort']);_0x1c9698[_0x819d('0x3c')]=qs[_0x819d('0x32')](_[_0x819d('0x3d')](_0x30ebad[_0x819d('0x34')],_0x22f545[_0x819d('0x32')]));if(_0x30ebad[_0x819d('0x34')][_0x819d('0x3e')]){_0x1c9698[_0x819d('0x3c')]=_[_0x819d('0x3f')](_0x1c9698['where'],{'$or':_['map'](_0x1c9698[_0x819d('0x35')],function(_0x57ab29){var _0x53a35f={};_0x53a35f[_0x57ab29]={'$like':'%'+_0x30ebad[_0x819d('0x34')][_0x819d('0x3e')]+'%'};return _0x53a35f;})});}_0x1c9698=_[_0x819d('0x3f')]({},_0x1c9698,_0x30ebad['options']);return _0x2babd3[_0x819d('0x4b')](_0x1c9698);}})[_0x819d('0x23')](function(_0x5d65c1){if(_0x5d65c1){_0x56e7ef=_0x5d65c1['length'];if(!_0x30ebad['query'][_0x819d('0x38')](_0x819d('0x39'))){_0x1c9698[_0x819d('0x1b')]=qs[_0x819d('0x1b')](_0x30ebad['query']['limit']);_0x1c9698[_0x819d('0x1d')]=qs[_0x819d('0x1d')](_0x30ebad[_0x819d('0x34')][_0x819d('0x1d')]);}return _0x2babd3[_0x819d('0x4b')](_0x1c9698);}})[_0x819d('0x23')](function(_0x291032){if(_0x291032){return _0x291032?{'count':_0x56e7ef,'rows':_0x291032}:null;}})[_0x819d('0x23')](respondWithResult(_0x50efdc,null))[_0x819d('0x44')](handleError(_0x50efdc,null));};exports[_0x819d('0x4d')]=function(_0x5b678c,_0x2f9202,_0x4e04cb){var _0x10062f={};var _0x8e5036={};var _0xb0f026;var _0x3e5d20;return db[_0x819d('0x2c')][_0x819d('0x4c')]({'where':{'id':_0x5b678c[_0x819d('0x45')]['id']}})[_0x819d('0x23')](handleEntityNotFound(_0x2f9202,null))['then'](function(_0x3cb0a6){if(_0x3cb0a6){_0xb0f026=_0x3cb0a6;_0x8e5036['model']=_[_0x819d('0x31')](db['FreshsalesField'][_0x819d('0x2d')]);_0x8e5036['query']=_[_0x819d('0x31')](_0x5b678c[_0x819d('0x34')]);_0x8e5036['filters']=_[_0x819d('0x33')](_0x8e5036[_0x819d('0x30')],_0x8e5036[_0x819d('0x34')]);_0x10062f[_0x819d('0x35')]=_[_0x819d('0x33')](_0x8e5036[_0x819d('0x30')],qs[_0x819d('0x36')](_0x5b678c[_0x819d('0x34')]['fields']));_0x10062f[_0x819d('0x35')]=_0x10062f[_0x819d('0x35')][_0x819d('0x37')]?_0x10062f['attributes']:_0x8e5036['model'];_0x10062f[_0x819d('0x3a')]=qs['sort'](_0x5b678c[_0x819d('0x34')]['sort']);_0x10062f[_0x819d('0x3c')]=qs[_0x819d('0x32')](_[_0x819d('0x3d')](_0x5b678c[_0x819d('0x34')],_0x8e5036[_0x819d('0x32')]));if(_0x5b678c[_0x819d('0x34')]['filter']){_0x10062f['where']=_['merge'](_0x10062f[_0x819d('0x3c')],{'$or':_[_0x819d('0x2b')](_0x10062f[_0x819d('0x35')],function(_0x3f680b){var _0x47754a={};_0x47754a[_0x3f680b]={'$like':'%'+_0x5b678c[_0x819d('0x34')]['filter']+'%'};return _0x47754a;})});}_0x10062f=_[_0x819d('0x3f')]({},_0x10062f,_0x5b678c['options']);return _0xb0f026[_0x819d('0x4d')](_0x10062f);}})[_0x819d('0x23')](function(_0x1b216f){if(_0x1b216f){_0x3e5d20=_0x1b216f[_0x819d('0x37')];if(!_0x5b678c[_0x819d('0x34')][_0x819d('0x38')](_0x819d('0x39'))){_0x10062f[_0x819d('0x1b')]=qs[_0x819d('0x1b')](_0x5b678c[_0x819d('0x34')]['limit']);_0x10062f['offset']=qs[_0x819d('0x1d')](_0x5b678c[_0x819d('0x34')][_0x819d('0x1d')]);}return _0xb0f026['getFields'](_0x10062f);}})['then'](function(_0x45465d){if(_0x45465d){return _0x45465d?{'count':_0x3e5d20,'rows':_0x45465d}:null;}})['then'](respondWithResult(_0x2f9202,null))[_0x819d('0x44')](handleError(_0x2f9202,null));};
\ No newline at end of file
index 7ce8837..6a32f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f6=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','FreshsalesConfiguration','lodash','util','../../config/logger'];(function(_0x43dcb8,_0x32cd78){var _0x52822e=function(_0x3e40ff){while(--_0x3e40ff){_0x43dcb8['push'](_0x43dcb8['shift']());}};_0x52822e(++_0x32cd78);}(_0xc2f6,0x1cb));var _0x6c2f=function(_0x2a75cd,_0x247962){_0x2a75cd=_0x2a75cd-0x0;var _0x2319bc=_0xc2f6[_0x2a75cd];return _0x2319bc;};'use strict';var _=require(_0x6c2f('0x0'));var util=require(_0x6c2f('0x1'));var logger=require(_0x6c2f('0x2'))('api');var moment=require(_0x6c2f('0x3'));var BPromise=require(_0x6c2f('0x4'));var rp=require(_0x6c2f('0x5'));var fs=require('fs');var path=require(_0x6c2f('0x6'));var rimraf=require(_0x6c2f('0x7'));var config=require(_0x6c2f('0x8'));var attributes=require(_0x6c2f('0x9'));module['exports']=function(_0x1a1b32,_0x462f61){return _0x1a1b32['define'](_0x6c2f('0xa'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfecf=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','int_freshsales_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x2e60f2,_0x5675a9){var _0x57334b=function(_0x1f61d7){while(--_0x1f61d7){_0x2e60f2['push'](_0x2e60f2['shift']());}};_0x57334b(++_0x5675a9);}(_0xfecf,0xcd));var _0xffec=function(_0x5dbd94,_0x5b3d06){_0x5dbd94=_0x5dbd94-0x0;var _0x53d2e7=_0xfecf[_0x5dbd94];return _0x53d2e7;};'use strict';var _=require(_0xffec('0x0'));var util=require(_0xffec('0x1'));var logger=require(_0xffec('0x2'))(_0xffec('0x3'));var moment=require(_0xffec('0x4'));var BPromise=require(_0xffec('0x5'));var rp=require(_0xffec('0x6'));var fs=require('fs');var path=require(_0xffec('0x7'));var rimraf=require(_0xffec('0x8'));var config=require(_0xffec('0x9'));var attributes=require(_0xffec('0xa'));module[_0xffec('0xb')]=function(_0x334b20,_0x44f35f){return _0x334b20[_0xffec('0xc')]('FreshsalesConfiguration',attributes,{'tableName':_0xffec('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8dbfa70..d20b628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d23=['client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x53e8d3,_0x2f5644){var _0x12df02=function(_0x211ada){while(--_0x211ada){_0x53e8d3['push'](_0x53e8d3['shift']());}};_0x12df02(++_0x2f5644);}(_0x6d23,0x146));var _0x36d2=function(_0x2221fe,_0x35f322){_0x2221fe=_0x2221fe-0x0;var _0xe11292=_0x6d23[_0x2221fe];return _0xe11292;};'use strict';var _=require(_0x36d2('0x0'));var util=require('util');var moment=require(_0x36d2('0x1'));var BPromise=require(_0x36d2('0x2'));var rs=require(_0x36d2('0x3'));var fs=require('fs');var Redis=require(_0x36d2('0x4'));var db=require(_0x36d2('0x5'))['db'];var utils=require(_0x36d2('0x6'));var logger=require(_0x36d2('0x7'))(_0x36d2('0x8'));var config=require(_0x36d2('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x36d2('0xa')][_0x36d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45756b,_0x27d364,_0x5896e3){return new BPromise(function(_0x3750fc,_0x281318){return client[_0x36d2('0xc')](_0x45756b,_0x5896e3)['then'](function(_0x44b30b){logger[_0x36d2('0xd')](_0x36d2('0xe'),_0x27d364,_0x36d2('0xf'));logger[_0x36d2('0x10')](_0x36d2('0x11'),_0x27d364,_0x36d2('0xf'),JSON[_0x36d2('0x12')](_0x44b30b));if(_0x44b30b[_0x36d2('0x13')]){if(_0x44b30b['error'][_0x36d2('0x14')]===0x1f4){logger[_0x36d2('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x27d364,_0x44b30b[_0x36d2('0x13')][_0x36d2('0x15')]);return _0x281318(_0x44b30b[_0x36d2('0x13')]['message']);}logger[_0x36d2('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x27d364,_0x44b30b[_0x36d2('0x13')]['message']);return _0x3750fc(_0x44b30b[_0x36d2('0x13')]['message']);}else{logger[_0x36d2('0xd')](_0x36d2('0xe'),_0x27d364,_0x36d2('0xf'));_0x3750fc(_0x44b30b[_0x36d2('0x16')][_0x36d2('0x15')]);}})[_0x36d2('0x17')](function(_0x4c13df){logger[_0x36d2('0x13')](_0x36d2('0xe'),_0x27d364,_0x4c13df);_0x281318(_0x4c13df);});});}
\ No newline at end of file
+var _0xa8ae=['rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5d4c2f,_0x273528){var _0x12814c=function(_0x4402ae){while(--_0x4402ae){_0x5d4c2f['push'](_0x5d4c2f['shift']());}};_0x12814c(++_0x273528);}(_0xa8ae,0xc7));var _0xea8a=function(_0x568a0c,_0x1b4d19){_0x568a0c=_0x568a0c-0x0;var _0x1af161=_0xa8ae[_0x568a0c];return _0x1af161;};'use strict';var _=require(_0xea8a('0x0'));var util=require(_0xea8a('0x1'));var moment=require(_0xea8a('0x2'));var BPromise=require('bluebird');var rs=require(_0xea8a('0x3'));var fs=require('fs');var Redis=require(_0xea8a('0x4'));var db=require(_0xea8a('0x5'))['db'];var utils=require(_0xea8a('0x6'));var logger=require(_0xea8a('0x7'))(_0xea8a('0x8'));var config=require(_0xea8a('0x9'));var jayson=require(_0xea8a('0xa'));var client=jayson[_0xea8a('0xb')][_0xea8a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f5fd6,_0x5488cc,_0x496906){return new BPromise(function(_0x3e76e9,_0x2146ab){return client['request'](_0x4f5fd6,_0x496906)[_0xea8a('0xd')](function(_0x43b124){logger[_0xea8a('0xe')](_0xea8a('0xf'),_0x5488cc,_0xea8a('0x10'));logger[_0xea8a('0x11')](_0xea8a('0x12'),_0x5488cc,'request\x20sent',JSON['stringify'](_0x43b124));if(_0x43b124['error']){if(_0x43b124[_0xea8a('0x13')][_0xea8a('0x14')]===0x1f4){logger[_0xea8a('0x13')](_0xea8a('0xf'),_0x5488cc,_0x43b124[_0xea8a('0x13')][_0xea8a('0x15')]);return _0x2146ab(_0x43b124[_0xea8a('0x13')]['message']);}logger['error'](_0xea8a('0xf'),_0x5488cc,_0x43b124['error'][_0xea8a('0x15')]);return _0x3e76e9(_0x43b124[_0xea8a('0x13')][_0xea8a('0x15')]);}else{logger[_0xea8a('0xe')](_0xea8a('0xf'),_0x5488cc,_0xea8a('0x10'));_0x3e76e9(_0x43b124[_0xea8a('0x16')]['message']);}})['catch'](function(_0x326ad4){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x5488cc,_0x326ad4);_0x2146ab(_0x326ad4);});});}
\ No newline at end of file
index 0e3f05c..a5884da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa2f=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','exports','path','express'];(function(_0xb56e4f,_0x5206ec){var _0x4e25ba=function(_0x4832e8){while(--_0x4832e8){_0xb56e4f['push'](_0xb56e4f['shift']());}};_0x4e25ba(++_0x5206ec);}(_0xfa2f,0xe8));var _0xffa2=function(_0x41a5f2,_0x2aebb0){_0x41a5f2=_0x41a5f2-0x0;var _0x2028dc=_0xfa2f[_0x41a5f2];return _0x2028dc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xffa2('0x0'));var timeout=require('connect-timeout');var express=require(_0xffa2('0x1'));var router=express[_0xffa2('0x2')]();var fs_extra=require(_0xffa2('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xffa2('0x4'));var config=require(_0xffa2('0x5'));var controller=require(_0xffa2('0x6'));router[_0xffa2('0x7')]('/',auth[_0xffa2('0x8')](),controller[_0xffa2('0x9')]);router[_0xffa2('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xffa2('0xa')]);router[_0xffa2('0xb')]('/',auth[_0xffa2('0x8')](),controller[_0xffa2('0xc')]);router[_0xffa2('0xd')](_0xffa2('0xe'),auth[_0xffa2('0x8')](),controller['update']);router[_0xffa2('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xffa2('0x10')]);module[_0xffa2('0x11')]=router;
\ No newline at end of file
+var _0xa4fb=['../../components/interaction/service','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0xb4e2df,_0x1cbb7c){var _0x5e95ba=function(_0x79d317){while(--_0x79d317){_0xb4e2df['push'](_0xb4e2df['shift']());}};_0x5e95ba(++_0x1cbb7c);}(_0xa4fb,0x150));var _0xba4f=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa4fb[_0x1b828b];return _0x98da1a;};'use strict';var multer=require(_0xba4f('0x0'));var util=require(_0xba4f('0x1'));var path=require(_0xba4f('0x2'));var timeout=require(_0xba4f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xba4f('0x4'));var auth=require(_0xba4f('0x5'));var interaction=require(_0xba4f('0x6'));var config=require('../../config/environment');var controller=require(_0xba4f('0x7'));router[_0xba4f('0x8')]('/',auth[_0xba4f('0x9')](),controller[_0xba4f('0xa')]);router[_0xba4f('0x8')](_0xba4f('0xb'),auth[_0xba4f('0x9')](),controller[_0xba4f('0xc')]);router[_0xba4f('0xd')]('/',auth[_0xba4f('0x9')](),controller['create']);router[_0xba4f('0xe')]('/:id',auth[_0xba4f('0x9')](),controller[_0xba4f('0xf')]);router[_0xba4f('0x10')](_0xba4f('0xb'),auth[_0xba4f('0x9')](),controller[_0xba4f('0x11')]);module['exports']=router;
\ No newline at end of file
index df9f7cc..f912da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf847=['exports','variable','customVariable','picklist','string','STRING','ENUM','BOOLEAN','sequelize'];(function(_0xd02def,_0x144f25){var _0x2e8374=function(_0x5ceb35){while(--_0x5ceb35){_0xd02def['push'](_0xd02def['shift']());}};_0x2e8374(++_0x144f25);}(_0xf847,0x11f));var _0x7f84=function(_0x95ca75,_0x4448d9){_0x95ca75=_0x95ca75-0x0;var _0x366d52=_0xf847[_0x95ca75];return _0x366d52;};'use strict';var Sequelize=require(_0x7f84('0x0'));module[_0x7f84('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x7f84('0x2'),_0x7f84('0x3'),'keyValue',_0x7f84('0x4')),'defaultValue':_0x7f84('0x5')},'content':{'type':Sequelize[_0x7f84('0x6')]},'key':{'type':Sequelize[_0x7f84('0x6')]},'keyType':{'type':Sequelize[_0x7f84('0x7')](_0x7f84('0x5'),_0x7f84('0x2'),_0x7f84('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7f84('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7f84('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7f84('0x6')]}};
\ No newline at end of file
+var _0x668f=['sequelize','exports','ENUM','string','customVariable','keyValue','STRING','BOOLEAN'];(function(_0x39b74b,_0x178d75){var _0x30ffe8=function(_0x5d5e9b){while(--_0x5d5e9b){_0x39b74b['push'](_0x39b74b['shift']());}};_0x30ffe8(++_0x178d75);}(_0x668f,0x88));var _0xf668=function(_0x4c59dc,_0x40e6ca){_0x4c59dc=_0x4c59dc-0x0;var _0x130046=_0x668f[_0x4c59dc];return _0x130046;};'use strict';var Sequelize=require(_0xf668('0x0'));module[_0xf668('0x1')]={'type':{'type':Sequelize[_0xf668('0x2')](_0xf668('0x3'),'variable',_0xf668('0x4'),_0xf668('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xf668('0x6')]},'key':{'type':Sequelize[_0xf668('0x6')]},'keyType':{'type':Sequelize[_0xf668('0x2')](_0xf668('0x3'),'variable',_0xf668('0x4'))},'keyContent':{'type':Sequelize[_0xf668('0x6')]},'idField':{'type':Sequelize[_0xf668('0x6')]},'nameField':{'type':Sequelize[_0xf668('0x6')]},'customField':{'type':Sequelize[_0xf668('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf668('0x6')]}};
\ No newline at end of file
index 0195047..c019a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd30=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','destroy','then','end','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','filter','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x526154,_0xd0fef8){var _0x13f7c8=function(_0x21c226){while(--_0x21c226){_0x526154['push'](_0x526154['shift']());}};_0x13f7c8(++_0xd0fef8);}(_0xbd30,0x94));var _0x0bd3=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xbd30[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x0bd3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0bd3('0x1'));var jsonpatch=require(_0x0bd3('0x2'));var rp=require(_0x0bd3('0x3'));var moment=require(_0x0bd3('0x4'));var BPromise=require(_0x0bd3('0x5'));var Mustache=require(_0x0bd3('0x6'));var util=require(_0x0bd3('0x7'));var path=require(_0x0bd3('0x8'));var sox=require(_0x0bd3('0x9'));var csv=require(_0x0bd3('0xa'));var ejs=require(_0x0bd3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0bd3('0xc'));var squel=require(_0x0bd3('0xd'));var crypto=require('crypto');var jsforce=require(_0x0bd3('0xe'));var deskjs=require(_0x0bd3('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0bd3('0x10'));var Papa=require(_0x0bd3('0x11'));var Redis=require(_0x0bd3('0x12'));var authService=require(_0x0bd3('0x13'));var qs=require(_0x0bd3('0x14'));var as=require(_0x0bd3('0x15'));var hardwareService=require(_0x0bd3('0x16'));var logger=require(_0x0bd3('0x17'))(_0x0bd3('0x18'));var utils=require(_0x0bd3('0x19'));var config=require(_0x0bd3('0x1a'));var licenseUtil=require(_0x0bd3('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16131a,_0x4072b3){_0x4072b3=_0x4072b3||0xcc;return function(_0x4c879d){if(_0x4c879d){return _0x16131a[_0x0bd3('0x1c')](_0x4072b3);}return _0x16131a[_0x0bd3('0x1d')](_0x4072b3)['end']();};}function respondWithResult(_0xc14513,_0x38ebdc){_0x38ebdc=_0x38ebdc||0xc8;return function(_0x58aadb){if(_0x58aadb){return _0xc14513[_0x0bd3('0x1d')](_0x38ebdc)[_0x0bd3('0x1e')](_0x58aadb);}};}function respondWithFilteredResult(_0x2dbe76,_0x5686c6){return function(_0x3a96cb){if(_0x3a96cb){var _0x58eb23=typeof _0x5686c6[_0x0bd3('0x1f')]===_0x0bd3('0x20')&&typeof _0x5686c6['limit']===_0x0bd3('0x20');var _0xee533f=_0x3a96cb[_0x0bd3('0x21')];var _0x3a6dec=_0x58eb23?0x0:_0x5686c6[_0x0bd3('0x1f')];var _0x108f64=_0x58eb23?_0x3a96cb[_0x0bd3('0x21')]:_0x5686c6[_0x0bd3('0x1f')]+_0x5686c6[_0x0bd3('0x22')];var _0x5646e7;if(_0x108f64>=_0xee533f){_0x108f64=_0xee533f;_0x5646e7=0xc8;}else{_0x5646e7=0xce;}_0x2dbe76[_0x0bd3('0x1d')](_0x5646e7);return _0x2dbe76[_0x0bd3('0x23')]('Content-Range',_0x3a6dec+'-'+_0x108f64+'/'+_0xee533f)[_0x0bd3('0x1e')](_0x3a96cb);}return null;};}function patchUpdates(_0x5afb21){return function(_0x2eb2b4){try{jsonpatch[_0x0bd3('0x24')](_0x2eb2b4,_0x5afb21,!![]);}catch(_0x43e95a){return BPromise[_0x0bd3('0x25')](_0x43e95a);}return _0x2eb2b4[_0x0bd3('0x26')]();};}function saveUpdates(_0x3678a9,_0x2400d2){return function(_0x59997f){if(_0x59997f){return _0x59997f['update'](_0x3678a9)['then'](function(_0x34194a){return _0x34194a;});}return null;};}function removeEntity(_0x16e1e1,_0x11830c){return function(_0x1c2b2e){if(_0x1c2b2e){return _0x1c2b2e[_0x0bd3('0x27')]()[_0x0bd3('0x28')](function(){_0x16e1e1[_0x0bd3('0x1d')](0xcc)[_0x0bd3('0x29')]();});}};}function handleEntityNotFound(_0x43c9e6,_0x4de90a){return function(_0xb72d9c){if(!_0xb72d9c){_0x43c9e6[_0x0bd3('0x1c')](0x194);}return _0xb72d9c;};}function handleError(_0x35f600,_0x103075){_0x103075=_0x103075||0x1f4;return function(_0xaa0582){logger['error'](_0xaa0582[_0x0bd3('0x2a')]);if(_0xaa0582['name']){delete _0xaa0582[_0x0bd3('0x2b')];}_0x35f600[_0x0bd3('0x1d')](_0x103075)[_0x0bd3('0x2c')](_0xaa0582);};}exports[_0x0bd3('0x2d')]=function(_0x23ea94,_0x36f2c5){var _0x3815ba={},_0x1d7e6c={},_0x2170a8={'count':0x0,'rows':[]};var _0x192e9c=_[_0x0bd3('0x2e')](db[_0x0bd3('0x2f')][_0x0bd3('0x30')],function(_0x14a613){return{'name':_0x14a613[_0x0bd3('0x31')],'type':_0x14a613['type'][_0x0bd3('0x32')]};});_0x1d7e6c[_0x0bd3('0x33')]=_[_0x0bd3('0x2e')](_0x192e9c,_0x0bd3('0x2b'));_0x1d7e6c[_0x0bd3('0x34')]=_[_0x0bd3('0x35')](_0x23ea94[_0x0bd3('0x34')]);_0x1d7e6c['filters']=_[_0x0bd3('0x36')](_0x1d7e6c[_0x0bd3('0x33')],_0x1d7e6c[_0x0bd3('0x34')]);_0x3815ba[_0x0bd3('0x37')]=_[_0x0bd3('0x36')](_0x1d7e6c[_0x0bd3('0x33')],qs['fields'](_0x23ea94[_0x0bd3('0x34')][_0x0bd3('0x38')]));_0x3815ba['attributes']=_0x3815ba['attributes'][_0x0bd3('0x39')]?_0x3815ba[_0x0bd3('0x37')]:_0x1d7e6c['model'];if(!_0x23ea94['query'][_0x0bd3('0x3a')](_0x0bd3('0x3b'))){_0x3815ba['limit']=qs['limit'](_0x23ea94[_0x0bd3('0x34')]['limit']);_0x3815ba['offset']=qs[_0x0bd3('0x1f')](_0x23ea94[_0x0bd3('0x34')][_0x0bd3('0x1f')]);}_0x3815ba[_0x0bd3('0x3c')]=qs[_0x0bd3('0x3d')](_0x23ea94[_0x0bd3('0x34')][_0x0bd3('0x3d')]);_0x3815ba[_0x0bd3('0x3e')]=qs[_0x0bd3('0x3f')](_[_0x0bd3('0x40')](_0x23ea94[_0x0bd3('0x34')],_0x1d7e6c[_0x0bd3('0x3f')]),_0x192e9c);if(_0x23ea94[_0x0bd3('0x34')]['filter']){_0x3815ba['where']=_[_0x0bd3('0x41')](_0x3815ba['where'],{'$or':_[_0x0bd3('0x2e')](_0x192e9c,function(_0x2b0c91){if(_0x2b0c91[_0x0bd3('0x42')]!=='VIRTUAL'){var _0x765210={};_0x765210[_0x2b0c91[_0x0bd3('0x2b')]]={'$like':'%'+_0x23ea94[_0x0bd3('0x34')][_0x0bd3('0x43')]+'%'};return _0x765210;}})});}_0x3815ba=_[_0x0bd3('0x41')]({},_0x3815ba,_0x23ea94[_0x0bd3('0x44')]);var _0x5155a1={'where':_0x3815ba[_0x0bd3('0x3e')]};return db[_0x0bd3('0x2f')][_0x0bd3('0x21')](_0x5155a1)[_0x0bd3('0x28')](function(_0x380f18){_0x2170a8['count']=_0x380f18;if(_0x23ea94[_0x0bd3('0x34')][_0x0bd3('0x45')]){_0x3815ba['include']=[{'all':!![]}];}return db[_0x0bd3('0x2f')][_0x0bd3('0x46')](_0x3815ba);})['then'](function(_0xb88263){_0x2170a8[_0x0bd3('0x47')]=_0xb88263;return _0x2170a8;})[_0x0bd3('0x28')](respondWithFilteredResult(_0x36f2c5,_0x3815ba))[_0x0bd3('0x48')](handleError(_0x36f2c5,null));};exports[_0x0bd3('0x49')]=function(_0x294afb,_0xb7e4eb){var _0xd6d3bc={'raw':!![],'where':{'id':_0x294afb[_0x0bd3('0x4a')]['id']}},_0x397d81={};_0x397d81[_0x0bd3('0x33')]=_[_0x0bd3('0x35')](db[_0x0bd3('0x2f')]['rawAttributes']);_0x397d81[_0x0bd3('0x34')]=_[_0x0bd3('0x35')](_0x294afb[_0x0bd3('0x34')]);_0x397d81[_0x0bd3('0x3f')]=_[_0x0bd3('0x36')](_0x397d81['model'],_0x397d81[_0x0bd3('0x34')]);_0xd6d3bc[_0x0bd3('0x37')]=_[_0x0bd3('0x36')](_0x397d81[_0x0bd3('0x33')],qs['fields'](_0x294afb[_0x0bd3('0x34')]['fields']));_0xd6d3bc[_0x0bd3('0x37')]=_0xd6d3bc['attributes'][_0x0bd3('0x39')]?_0xd6d3bc[_0x0bd3('0x37')]:_0x397d81[_0x0bd3('0x33')];if(_0x294afb[_0x0bd3('0x34')][_0x0bd3('0x45')]){_0xd6d3bc[_0x0bd3('0x4b')]=[{'all':!![]}];}_0xd6d3bc=_[_0x0bd3('0x41')]({},_0xd6d3bc,_0x294afb[_0x0bd3('0x44')]);return db['FreshsalesField'][_0x0bd3('0x4c')](_0xd6d3bc)[_0x0bd3('0x28')](handleEntityNotFound(_0xb7e4eb,null))['then'](respondWithResult(_0xb7e4eb,null))[_0x0bd3('0x48')](handleError(_0xb7e4eb,null));};exports['create']=function(_0x4b604d,_0xf5bac6){return db[_0x0bd3('0x2f')][_0x0bd3('0x4d')](_0x4b604d[_0x0bd3('0x4e')],{})['then'](respondWithResult(_0xf5bac6,0xc9))[_0x0bd3('0x48')](handleError(_0xf5bac6,null));};exports[_0x0bd3('0x4f')]=function(_0x10b0e2,_0xdd9efd){if(_0x10b0e2[_0x0bd3('0x4e')]['id']){delete _0x10b0e2['body']['id'];}return db['FreshsalesField'][_0x0bd3('0x4c')]({'where':{'id':_0x10b0e2['params']['id']}})['then'](handleEntityNotFound(_0xdd9efd,null))[_0x0bd3('0x28')](saveUpdates(_0x10b0e2[_0x0bd3('0x4e')],null))[_0x0bd3('0x28')](respondWithResult(_0xdd9efd,null))[_0x0bd3('0x48')](handleError(_0xdd9efd,null));};exports['destroy']=function(_0x4716dc,_0x3bc695){return db[_0x0bd3('0x2f')][_0x0bd3('0x4c')]({'where':{'id':_0x4716dc[_0x0bd3('0x4a')]['id']}})[_0x0bd3('0x28')](handleEntityNotFound(_0x3bc695,null))[_0x0bd3('0x28')](removeEntity(_0x3bc695,null))[_0x0bd3('0x48')](handleError(_0x3bc695,null));};
\ No newline at end of file
+var _0x122d=['lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','error','stack','name','send','index','map','FreshsalesField','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','rawAttributes','find','create','body','update','params','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x17c7fd,_0x394a53){var _0x53d32b=function(_0x5ec961){while(--_0x5ec961){_0x17c7fd['push'](_0x17c7fd['shift']());}};_0x53d32b(++_0x394a53);}(_0x122d,0x89));var _0xd122=function(_0xccc0d4,_0x2f6bf7){_0xccc0d4=_0xccc0d4-0x0;var _0x27a653=_0x122d[_0xccc0d4];return _0x27a653;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd122('0x0'));var jsonpatch=require(_0xd122('0x1'));var rp=require(_0xd122('0x2'));var moment=require('moment');var BPromise=require(_0xd122('0x3'));var Mustache=require(_0xd122('0x4'));var util=require(_0xd122('0x5'));var path=require('path');var sox=require(_0xd122('0x6'));var csv=require(_0xd122('0x7'));var ejs=require(_0xd122('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd122('0x9'));var squel=require(_0xd122('0xa'));var crypto=require(_0xd122('0xb'));var jsforce=require(_0xd122('0xc'));var deskjs=require(_0xd122('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd122('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd122('0xf'));var qs=require(_0xd122('0x10'));var as=require(_0xd122('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd122('0x12'))('api');var utils=require(_0xd122('0x13'));var config=require(_0xd122('0x14'));var licenseUtil=require(_0xd122('0x15'));var db=require(_0xd122('0x16'))['db'];function respondWithStatusCode(_0x597a23,_0x3a91d8){_0x3a91d8=_0x3a91d8||0xcc;return function(_0x4eaeb0){if(_0x4eaeb0){return _0x597a23[_0xd122('0x17')](_0x3a91d8);}return _0x597a23[_0xd122('0x18')](_0x3a91d8)[_0xd122('0x19')]();};}function respondWithResult(_0x359bd9,_0x4ef36e){_0x4ef36e=_0x4ef36e||0xc8;return function(_0x36526c){if(_0x36526c){return _0x359bd9[_0xd122('0x18')](_0x4ef36e)['json'](_0x36526c);}};}function respondWithFilteredResult(_0x361c3d,_0x4854f3){return function(_0x19dd02){if(_0x19dd02){var _0xe5c5=typeof _0x4854f3[_0xd122('0x1a')]===_0xd122('0x1b')&&typeof _0x4854f3[_0xd122('0x1c')]===_0xd122('0x1b');var _0xea979a=_0x19dd02['count'];var _0x5db33b=_0xe5c5?0x0:_0x4854f3[_0xd122('0x1a')];var _0x2af216=_0xe5c5?_0x19dd02[_0xd122('0x1d')]:_0x4854f3[_0xd122('0x1a')]+_0x4854f3[_0xd122('0x1c')];var _0x92e49c;if(_0x2af216>=_0xea979a){_0x2af216=_0xea979a;_0x92e49c=0xc8;}else{_0x92e49c=0xce;}_0x361c3d[_0xd122('0x18')](_0x92e49c);return _0x361c3d[_0xd122('0x1e')](_0xd122('0x1f'),_0x5db33b+'-'+_0x2af216+'/'+_0xea979a)[_0xd122('0x20')](_0x19dd02);}return null;};}function patchUpdates(_0x50f172){return function(_0x575c79){try{jsonpatch[_0xd122('0x21')](_0x575c79,_0x50f172,!![]);}catch(_0x577d15){return BPromise[_0xd122('0x22')](_0x577d15);}return _0x575c79['save']();};}function saveUpdates(_0x1f489a,_0x3d2997){return function(_0x3230e9){if(_0x3230e9){return _0x3230e9['update'](_0x1f489a)[_0xd122('0x23')](function(_0x8cd0d2){return _0x8cd0d2;});}return null;};}function removeEntity(_0x2e8e5b,_0x4fcc57){return function(_0x4bcbc5){if(_0x4bcbc5){return _0x4bcbc5[_0xd122('0x24')]()[_0xd122('0x23')](function(){_0x2e8e5b[_0xd122('0x18')](0xcc)[_0xd122('0x19')]();});}};}function handleEntityNotFound(_0xe01640,_0xe14253){return function(_0x410ddc){if(!_0x410ddc){_0xe01640[_0xd122('0x17')](0x194);}return _0x410ddc;};}function handleError(_0x318c93,_0x518e27){_0x518e27=_0x518e27||0x1f4;return function(_0x313588){logger[_0xd122('0x25')](_0x313588[_0xd122('0x26')]);if(_0x313588[_0xd122('0x27')]){delete _0x313588[_0xd122('0x27')];}_0x318c93[_0xd122('0x18')](_0x518e27)[_0xd122('0x28')](_0x313588);};}exports[_0xd122('0x29')]=function(_0x16f670,_0x3bef18){var _0x45746e={},_0x560a73={},_0x223e0b={'count':0x0,'rows':[]};var _0x4317d7=_[_0xd122('0x2a')](db[_0xd122('0x2b')]['rawAttributes'],function(_0x3c21a7){return{'name':_0x3c21a7[_0xd122('0x2c')],'type':_0x3c21a7[_0xd122('0x2d')][_0xd122('0x2e')]};});_0x560a73[_0xd122('0x2f')]=_[_0xd122('0x2a')](_0x4317d7,'name');_0x560a73['query']=_[_0xd122('0x30')](_0x16f670[_0xd122('0x31')]);_0x560a73['filters']=_[_0xd122('0x32')](_0x560a73[_0xd122('0x2f')],_0x560a73[_0xd122('0x31')]);_0x45746e['attributes']=_[_0xd122('0x32')](_0x560a73['model'],qs[_0xd122('0x33')](_0x16f670['query'][_0xd122('0x33')]));_0x45746e[_0xd122('0x34')]=_0x45746e[_0xd122('0x34')][_0xd122('0x35')]?_0x45746e['attributes']:_0x560a73[_0xd122('0x2f')];if(!_0x16f670[_0xd122('0x31')][_0xd122('0x36')]('nolimit')){_0x45746e[_0xd122('0x1c')]=qs[_0xd122('0x1c')](_0x16f670[_0xd122('0x31')]['limit']);_0x45746e[_0xd122('0x1a')]=qs[_0xd122('0x1a')](_0x16f670[_0xd122('0x31')][_0xd122('0x1a')]);}_0x45746e['order']=qs['sort'](_0x16f670[_0xd122('0x31')][_0xd122('0x37')]);_0x45746e['where']=qs[_0xd122('0x38')](_[_0xd122('0x39')](_0x16f670['query'],_0x560a73[_0xd122('0x38')]),_0x4317d7);if(_0x16f670[_0xd122('0x31')]['filter']){_0x45746e[_0xd122('0x3a')]=_[_0xd122('0x3b')](_0x45746e[_0xd122('0x3a')],{'$or':_[_0xd122('0x2a')](_0x4317d7,function(_0x17eed1){if(_0x17eed1[_0xd122('0x2d')]!==_0xd122('0x3c')){var _0x448788={};_0x448788[_0x17eed1[_0xd122('0x27')]]={'$like':'%'+_0x16f670[_0xd122('0x31')][_0xd122('0x3d')]+'%'};return _0x448788;}})});}_0x45746e=_[_0xd122('0x3b')]({},_0x45746e,_0x16f670[_0xd122('0x3e')]);var _0x34c57c={'where':_0x45746e[_0xd122('0x3a')]};return db[_0xd122('0x2b')]['count'](_0x34c57c)[_0xd122('0x23')](function(_0x1894dd){_0x223e0b[_0xd122('0x1d')]=_0x1894dd;if(_0x16f670[_0xd122('0x31')][_0xd122('0x3f')]){_0x45746e['include']=[{'all':!![]}];}return db[_0xd122('0x2b')]['findAll'](_0x45746e);})[_0xd122('0x23')](function(_0x4ecbf3){_0x223e0b[_0xd122('0x40')]=_0x4ecbf3;return _0x223e0b;})[_0xd122('0x23')](respondWithFilteredResult(_0x3bef18,_0x45746e))[_0xd122('0x41')](handleError(_0x3bef18,null));};exports[_0xd122('0x42')]=function(_0xabf1ec,_0x29d79f){var _0x313339={'raw':!![],'where':{'id':_0xabf1ec['params']['id']}},_0x4e3929={};_0x4e3929[_0xd122('0x2f')]=_[_0xd122('0x30')](db[_0xd122('0x2b')][_0xd122('0x43')]);_0x4e3929['query']=_[_0xd122('0x30')](_0xabf1ec[_0xd122('0x31')]);_0x4e3929[_0xd122('0x38')]=_[_0xd122('0x32')](_0x4e3929[_0xd122('0x2f')],_0x4e3929['query']);_0x313339['attributes']=_[_0xd122('0x32')](_0x4e3929[_0xd122('0x2f')],qs[_0xd122('0x33')](_0xabf1ec[_0xd122('0x31')]['fields']));_0x313339[_0xd122('0x34')]=_0x313339[_0xd122('0x34')][_0xd122('0x35')]?_0x313339[_0xd122('0x34')]:_0x4e3929[_0xd122('0x2f')];if(_0xabf1ec[_0xd122('0x31')][_0xd122('0x3f')]){_0x313339['include']=[{'all':!![]}];}_0x313339=_[_0xd122('0x3b')]({},_0x313339,_0xabf1ec[_0xd122('0x3e')]);return db[_0xd122('0x2b')][_0xd122('0x44')](_0x313339)[_0xd122('0x23')](handleEntityNotFound(_0x29d79f,null))[_0xd122('0x23')](respondWithResult(_0x29d79f,null))[_0xd122('0x41')](handleError(_0x29d79f,null));};exports['create']=function(_0x4a9f27,_0x2786ab){return db[_0xd122('0x2b')][_0xd122('0x45')](_0x4a9f27[_0xd122('0x46')],{})['then'](respondWithResult(_0x2786ab,0xc9))[_0xd122('0x41')](handleError(_0x2786ab,null));};exports[_0xd122('0x47')]=function(_0x7639d1,_0x2a821b){if(_0x7639d1[_0xd122('0x46')]['id']){delete _0x7639d1[_0xd122('0x46')]['id'];}return db[_0xd122('0x2b')][_0xd122('0x44')]({'where':{'id':_0x7639d1[_0xd122('0x48')]['id']}})[_0xd122('0x23')](handleEntityNotFound(_0x2a821b,null))[_0xd122('0x23')](saveUpdates(_0x7639d1[_0xd122('0x46')],null))[_0xd122('0x23')](respondWithResult(_0x2a821b,null))['catch'](handleError(_0x2a821b,null));};exports[_0xd122('0x24')]=function(_0xf6db5c,_0x52b1c5){return db[_0xd122('0x2b')]['find']({'where':{'id':_0xf6db5c[_0xd122('0x48')]['id']}})[_0xd122('0x23')](handleEntityNotFound(_0x52b1c5,null))[_0xd122('0x23')](removeEntity(_0x52b1c5,null))[_0xd122('0x41')](handleError(_0x52b1c5,null));};
\ No newline at end of file
index ce0838c..37fd849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d21=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','idField','FieldId','lodash'];(function(_0x4b9d29,_0x50fb98){var _0x317638=function(_0xb38080){while(--_0xb38080){_0x4b9d29['push'](_0x4b9d29['shift']());}};_0x317638(++_0x50fb98);}(_0x1d21,0x158));var _0x11d2=function(_0x21c601,_0x26f456){_0x21c601=_0x21c601-0x0;var _0xd423f=_0x1d21[_0x21c601];return _0xd423f;};'use strict';var _=require(_0x11d2('0x0'));var util=require(_0x11d2('0x1'));var logger=require(_0x11d2('0x2'))(_0x11d2('0x3'));var moment=require('moment');var BPromise=require(_0x11d2('0x4'));var rp=require(_0x11d2('0x5'));var fs=require('fs');var path=require(_0x11d2('0x6'));var rimraf=require(_0x11d2('0x7'));var config=require('../../config/environment');var attributes=require(_0x11d2('0x8'));module[_0x11d2('0x9')]=function(_0x16e99c,_0x21a2d3){return _0x16e99c[_0x11d2('0xa')](_0x11d2('0xb'),attributes,{'tableName':_0x11d2('0xc'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x11d2('0xd'),_0x11d2('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2515=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId'];(function(_0x2d7520,_0x412819){var _0x3a7a8d=function(_0x11caf9){while(--_0x11caf9){_0x2d7520['push'](_0x2d7520['shift']());}};_0x3a7a8d(++_0x412819);}(_0x2515,0x1c2));var _0x5251=function(_0x2aeca6,_0x565154){_0x2aeca6=_0x2aeca6-0x0;var _0x48c8c9=_0x2515[_0x2aeca6];return _0x48c8c9;};'use strict';var _=require(_0x5251('0x0'));var util=require(_0x5251('0x1'));var logger=require('../../config/logger')(_0x5251('0x2'));var moment=require(_0x5251('0x3'));var BPromise=require(_0x5251('0x4'));var rp=require(_0x5251('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5251('0x6'));var config=require(_0x5251('0x7'));var attributes=require('./intFreshsalesField.attributes');module[_0x5251('0x8')]=function(_0xa2b768,_0x228dcd){return _0xa2b768[_0x5251('0x9')](_0x5251('0xa'),attributes,{'tableName':_0x5251('0xb'),'paranoid':![],'indexes':[{'name':_0x5251('0xc'),'fields':[_0x5251('0xd'),_0x5251('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1cf2fc1..ef70d7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['http','request','then','info','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','FreshsalesField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1541a2,_0xaee8df){var _0xe8cae=function(_0x4a0617){while(--_0x4a0617){_0x1541a2['push'](_0x1541a2['shift']());}};_0xe8cae(++_0xaee8df);}(_0x71ab,0x64));var _0xb71a=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x71ab[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var moment=require('moment');var BPromise=require(_0xb71a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb71a('0x2'));var db=require(_0xb71a('0x3'))['db'];var utils=require(_0xb71a('0x4'));var logger=require(_0xb71a('0x5'))(_0xb71a('0x6'));var config=require(_0xb71a('0x7'));var jayson=require(_0xb71a('0x8'));var client=jayson[_0xb71a('0x9')][_0xb71a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35a84e,_0x4358ce,_0x2a4c86){return new BPromise(function(_0x43ca14,_0x471ab6){return client[_0xb71a('0xb')](_0x35a84e,_0x2a4c86)[_0xb71a('0xc')](function(_0x378c96){logger[_0xb71a('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0xb71a('0xe'));logger['debug'](_0xb71a('0xf'),_0x4358ce,_0xb71a('0xe'),JSON[_0xb71a('0x10')](_0x378c96));if(_0x378c96['error']){if(_0x378c96[_0xb71a('0x11')]['code']===0x1f4){logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error'][_0xb71a('0x12')]);return _0x471ab6(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error']['message']);return _0x43ca14(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}else{logger[_0xb71a('0xd')](_0xb71a('0x13'),_0x4358ce,_0xb71a('0xe'));_0x43ca14(_0x378c96[_0xb71a('0x14')][_0xb71a('0x12')]);}})[_0xb71a('0x15')](function(_0x7710a8){logger['error'](_0xb71a('0x13'),_0x4358ce,_0x7710a8);_0x471ab6(_0x7710a8);});});}
\ 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(_0x1837ba,_0x29cb86){var _0x3903d0=function(_0x59f33f){while(--_0x59f33f){_0x1837ba['push'](_0x1837ba['shift']());}};_0x3903d0(++_0x29cb86);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x5a99dc,_0x37eabf){_0x5a99dc=_0x5a99dc-0x0;var _0x28bebd=_0xc1c6[_0x5a99dc];return _0x28bebd;};'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 2d24a74..e8cc600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x2fcddd,_0x2a4fa4){var _0x4afdc8=function(_0x37ba9f){while(--_0x37ba9f){_0x2fcddd['push'](_0x2fcddd['shift']());}};_0x4afdc8(++_0x2a4fa4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1bff04,_0x9a0c30){var _0x46e2cb=function(_0x4cfb0c){while(--_0x4cfb0c){_0x1bff04['push'](_0x1bff04['shift']());}};_0x46e2cb(++_0x9a0c30);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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 9bcf70a..c0ea3a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf9f=['STRING','username','ENUM','integrationTab','newTab','exports'];(function(_0x1bc989,_0x4130ce){var _0x488ead=function(_0xf5c90c){while(--_0xf5c90c){_0x1bc989['push'](_0x1bc989['shift']());}};_0x488ead(++_0x4130ce);}(_0xcf9f,0x13d));var _0xfcf9=function(_0x4b2d65,_0x235972){_0x4b2d65=_0x4b2d65-0x0;var _0x3d6879=_0xcf9f[_0x4b2d65];return _0x3d6879;};'use strict';var Sequelize=require('sequelize');module[_0xfcf9('0x0')]={'name':{'type':Sequelize[_0xfcf9('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfcf9('0x1')],'unique':_0xfcf9('0x2')},'remoteUri':{'type':Sequelize[_0xfcf9('0x1')]},'password':{'type':Sequelize[_0xfcf9('0x1')]},'clientId':{'type':Sequelize[_0xfcf9('0x1')]},'clientSecret':{'type':Sequelize[_0xfcf9('0x1')]},'securityToken':{'type':Sequelize[_0xfcf9('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xfcf9('0x3')](_0xfcf9('0x4'),_0xfcf9('0x5')),'defaultValue':_0xfcf9('0x4')}};
\ No newline at end of file
+var _0x58b6=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x28ba63,_0x4c7c76){var _0x45f54a=function(_0x89f46e){while(--_0x89f46e){_0x28ba63['push'](_0x28ba63['shift']());}};_0x45f54a(++_0x4c7c76);}(_0x58b6,0x103));var _0x658b=function(_0x2bbb24,_0x521d7c){_0x2bbb24=_0x2bbb24-0x0;var _0x1f8111=_0x58b6[_0x2bbb24];return _0x1f8111;};'use strict';var Sequelize=require(_0x658b('0x0'));module[_0x658b('0x1')]={'name':{'type':Sequelize[_0x658b('0x2')]},'description':{'type':Sequelize[_0x658b('0x2')]},'username':{'type':Sequelize[_0x658b('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x658b('0x2')]},'clientId':{'type':Sequelize[_0x658b('0x2')]},'clientSecret':{'type':Sequelize[_0x658b('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x658b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x658b('0x3')](_0x658b('0x4'),_0x658b('0x5')),'defaultValue':_0x658b('0x4')}};
\ No newline at end of file
index 3b8015f..f7b2eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8e=['intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','params','length','find','create','body','getConfigurations','SalesforceConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','SalesforceField','findOne','clientSecret','username','password','remoteUri','lastIndexOf','Connection','clientId','login','concat','isNil','ticketType','sobject','ActivityDate','IsRecurrence','Subject','string','int','picklist','email','textarea','phone','remove','includes','label','picklistValues','value','boolean','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','SalesforceAccount','rawAttributes','key','model','query','keys','filters'];(function(_0x117ece,_0x5ec451){var _0x516579=function(_0x261100){while(--_0x261100){_0x117ece['push'](_0x117ece['shift']());}};_0x516579(++_0x5ec451);}(_0xbc8e,0x1b0));var _0xebc8=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbc8e[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0xebc8('0x0'));var rimraf=require(_0xebc8('0x1'));var zipdir=require(_0xebc8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xebc8('0x3'));var moment=require(_0xebc8('0x4'));var BPromise=require(_0xebc8('0x5'));var Mustache=require(_0xebc8('0x6'));var util=require(_0xebc8('0x7'));var path=require(_0xebc8('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xebc8('0x9'));var squel=require(_0xebc8('0xa'));var crypto=require(_0xebc8('0xb'));var jsforce=require(_0xebc8('0xc'));var deskjs=require(_0xebc8('0xd'));var toCsv=require(_0xebc8('0xe'));var querystring=require(_0xebc8('0xf'));var Papa=require(_0xebc8('0x10'));var Redis=require(_0xebc8('0x11'));var authService=require(_0xebc8('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xebc8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xebc8('0x14'))(_0xebc8('0x15'));var utils=require(_0xebc8('0x16'));var config=require(_0xebc8('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xebc8('0x18'));function respondWithStatusCode(_0x3362ab,_0x98581b){_0x98581b=_0x98581b||0xcc;return function(_0x4dd4b7){if(_0x4dd4b7){return _0x3362ab[_0xebc8('0x19')](_0x98581b);}return _0x3362ab[_0xebc8('0x1a')](_0x98581b)[_0xebc8('0x1b')]();};}function respondWithResult(_0x323ed5,_0x506771){_0x506771=_0x506771||0xc8;return function(_0x50bbe6){if(_0x50bbe6){return _0x323ed5['status'](_0x506771)[_0xebc8('0x1c')](_0x50bbe6);}};}function respondWithFilteredResult(_0x47b9b0,_0x1b804f){return function(_0x3ab346){if(_0x3ab346){var _0x45802d=typeof _0x1b804f[_0xebc8('0x1d')]===_0xebc8('0x1e')&&typeof _0x1b804f['limit']===_0xebc8('0x1e');var _0x248810=_0x3ab346[_0xebc8('0x1f')];var _0x167bfa=_0x45802d?0x0:_0x1b804f[_0xebc8('0x1d')];var _0x54c65e=_0x45802d?_0x3ab346[_0xebc8('0x1f')]:_0x1b804f[_0xebc8('0x1d')]+_0x1b804f[_0xebc8('0x20')];var _0x328323;if(_0x54c65e>=_0x248810){_0x54c65e=_0x248810;_0x328323=0xc8;}else{_0x328323=0xce;}_0x47b9b0[_0xebc8('0x1a')](_0x328323);return _0x47b9b0[_0xebc8('0x21')](_0xebc8('0x22'),_0x167bfa+'-'+_0x54c65e+'/'+_0x248810)['json'](_0x3ab346);}return null;};}function patchUpdates(_0xa18314){return function(_0x5454aa){try{jsonpatch[_0xebc8('0x23')](_0x5454aa,_0xa18314,!![]);}catch(_0x54f3da){return BPromise[_0xebc8('0x24')](_0x54f3da);}return _0x5454aa[_0xebc8('0x25')]();};}function saveUpdates(_0x12c11d,_0x38536b){return function(_0x4461ac){if(_0x4461ac){return _0x4461ac[_0xebc8('0x26')](_0x12c11d)[_0xebc8('0x27')](function(_0x50c656){return _0x50c656;});}return null;};}function removeEntity(_0xeb416c,_0x14e243){return function(_0x957a8a){if(_0x957a8a){return _0x957a8a[_0xebc8('0x28')]()[_0xebc8('0x27')](function(){_0xeb416c['status'](0xcc)[_0xebc8('0x1b')]();});}};}function handleEntityNotFound(_0x4caa27,_0x254f5a){return function(_0x840ef4){if(!_0x840ef4){_0x4caa27['sendStatus'](0x194);}return _0x840ef4;};}function handleError(_0x389fc0,_0x4a0d4a){_0x4a0d4a=_0x4a0d4a||0x1f4;return function(_0x242563){logger[_0xebc8('0x29')](_0x242563[_0xebc8('0x2a')]);if(_0x242563[_0xebc8('0x2b')]){delete _0x242563[_0xebc8('0x2b')];}_0x389fc0[_0xebc8('0x1a')](_0x4a0d4a)['send'](_0x242563);};}exports['index']=function(_0x13fcfb,_0x254709){var _0x33cf51={},_0x21a28a={},_0x2b8e16={'count':0x0,'rows':[]};var _0x2a73a0=_[_0xebc8('0x2c')](db[_0xebc8('0x2d')][_0xebc8('0x2e')],function(_0x169c56){return{'name':_0x169c56['fieldName'],'type':_0x169c56['type'][_0xebc8('0x2f')]};});_0x21a28a[_0xebc8('0x30')]=_['map'](_0x2a73a0,_0xebc8('0x2b'));_0x21a28a[_0xebc8('0x31')]=_[_0xebc8('0x32')](_0x13fcfb[_0xebc8('0x31')]);_0x21a28a[_0xebc8('0x33')]=_[_0xebc8('0x34')](_0x21a28a[_0xebc8('0x30')],_0x21a28a['query']);_0x33cf51['attributes']=_[_0xebc8('0x34')](_0x21a28a['model'],qs[_0xebc8('0x35')](_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x35')]));_0x33cf51['attributes']=_0x33cf51['attributes']['length']?_0x33cf51[_0xebc8('0x36')]:_0x21a28a[_0xebc8('0x30')];if(!_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x37')](_0xebc8('0x38'))){_0x33cf51[_0xebc8('0x20')]=qs[_0xebc8('0x20')](_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x20')]);_0x33cf51[_0xebc8('0x1d')]=qs['offset'](_0x13fcfb[_0xebc8('0x31')]['offset']);}_0x33cf51[_0xebc8('0x39')]=qs['sort'](_0x13fcfb['query'][_0xebc8('0x3a')]);_0x33cf51[_0xebc8('0x3b')]=qs[_0xebc8('0x33')](_[_0xebc8('0x3c')](_0x13fcfb['query'],_0x21a28a['filters']),_0x2a73a0);if(_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x3d')]){_0x33cf51[_0xebc8('0x3b')]=_[_0xebc8('0x3e')](_0x33cf51[_0xebc8('0x3b')],{'$or':_['map'](_0x2a73a0,function(_0x1b58ba){if(_0x1b58ba['type']!=='VIRTUAL'){var _0x458d74={};_0x458d74[_0x1b58ba[_0xebc8('0x2b')]]={'$like':'%'+_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x3d')]+'%'};return _0x458d74;}})});}_0x33cf51=_[_0xebc8('0x3e')]({},_0x33cf51,_0x13fcfb[_0xebc8('0x3f')]);var _0x3d051a={'where':_0x33cf51[_0xebc8('0x3b')]};return db[_0xebc8('0x2d')]['count'](_0x3d051a)['then'](function(_0x2f7f9f){_0x2b8e16['count']=_0x2f7f9f;if(_0x13fcfb[_0xebc8('0x31')][_0xebc8('0x40')]){_0x33cf51[_0xebc8('0x41')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xebc8('0x42')](_0x33cf51);})[_0xebc8('0x27')](function(_0x388d2d){_0x2b8e16['rows']=_0x388d2d;return _0x2b8e16;})[_0xebc8('0x27')](respondWithFilteredResult(_0x254709,_0x33cf51))[_0xebc8('0x43')](handleError(_0x254709,null));};exports['show']=function(_0x5d8ea6,_0x3548e9){var _0x1bca85={'raw':![],'where':{'id':_0x5d8ea6[_0xebc8('0x44')]['id']}},_0x3d1ca2={};_0x3d1ca2[_0xebc8('0x30')]=_[_0xebc8('0x32')](db[_0xebc8('0x2d')][_0xebc8('0x2e')]);_0x3d1ca2[_0xebc8('0x31')]=_['keys'](_0x5d8ea6[_0xebc8('0x31')]);_0x3d1ca2[_0xebc8('0x33')]=_[_0xebc8('0x34')](_0x3d1ca2[_0xebc8('0x30')],_0x3d1ca2[_0xebc8('0x31')]);_0x1bca85[_0xebc8('0x36')]=_['intersection'](_0x3d1ca2['model'],qs['fields'](_0x5d8ea6[_0xebc8('0x31')][_0xebc8('0x35')]));_0x1bca85[_0xebc8('0x36')]=_0x1bca85['attributes'][_0xebc8('0x45')]?_0x1bca85['attributes']:_0x3d1ca2[_0xebc8('0x30')];if(_0x5d8ea6[_0xebc8('0x31')][_0xebc8('0x40')]){_0x1bca85[_0xebc8('0x41')]=[{'all':!![]}];}_0x1bca85=_[_0xebc8('0x3e')]({},_0x1bca85,_0x5d8ea6[_0xebc8('0x3f')]);return db[_0xebc8('0x2d')][_0xebc8('0x46')](_0x1bca85)[_0xebc8('0x27')](handleEntityNotFound(_0x3548e9,null))['then'](respondWithResult(_0x3548e9,null))[_0xebc8('0x43')](handleError(_0x3548e9,null));};exports[_0xebc8('0x47')]=function(_0x347e89,_0x59668f){return db[_0xebc8('0x2d')][_0xebc8('0x47')](_0x347e89[_0xebc8('0x48')],{})['then'](respondWithResult(_0x59668f,0xc9))[_0xebc8('0x43')](handleError(_0x59668f,null));};exports['update']=function(_0x457d6b,_0x327902){if(_0x457d6b[_0xebc8('0x48')]['id']){delete _0x457d6b[_0xebc8('0x48')]['id'];}return db[_0xebc8('0x2d')][_0xebc8('0x46')]({'where':{'id':_0x457d6b['params']['id']}})[_0xebc8('0x27')](handleEntityNotFound(_0x327902,null))['then'](saveUpdates(_0x457d6b[_0xebc8('0x48')],null))[_0xebc8('0x27')](respondWithResult(_0x327902,null))[_0xebc8('0x43')](handleError(_0x327902,null));};exports[_0xebc8('0x28')]=function(_0x1e085e,_0x3c46be){return db[_0xebc8('0x2d')][_0xebc8('0x46')]({'where':{'id':_0x1e085e[_0xebc8('0x44')]['id']}})[_0xebc8('0x27')](handleEntityNotFound(_0x3c46be,null))[_0xebc8('0x27')](removeEntity(_0x3c46be,null))[_0xebc8('0x43')](handleError(_0x3c46be,null));};exports[_0xebc8('0x49')]=function(_0x42d028,_0x26f710,_0x4104be){var _0x27999b={};var _0x27d460={};var _0x39091a;var _0x59aa83;return db[_0xebc8('0x2d')]['findOne']({'where':{'id':_0x42d028[_0xebc8('0x44')]['id']}})[_0xebc8('0x27')](handleEntityNotFound(_0x26f710,null))['then'](function(_0xfc0734){if(_0xfc0734){_0x39091a=_0xfc0734;_0x27d460['model']=_[_0xebc8('0x32')](db[_0xebc8('0x4a')][_0xebc8('0x2e')]);_0x27d460[_0xebc8('0x31')]=_[_0xebc8('0x32')](_0x42d028[_0xebc8('0x31')]);_0x27d460[_0xebc8('0x33')]=_[_0xebc8('0x34')](_0x27d460[_0xebc8('0x30')],_0x27d460[_0xebc8('0x31')]);_0x27999b[_0xebc8('0x36')]=_['intersection'](_0x27d460[_0xebc8('0x30')],qs[_0xebc8('0x35')](_0x42d028[_0xebc8('0x31')][_0xebc8('0x35')]));_0x27999b['attributes']=_0x27999b['attributes'][_0xebc8('0x45')]?_0x27999b[_0xebc8('0x36')]:_0x27d460['model'];_0x27999b[_0xebc8('0x39')]=qs[_0xebc8('0x3a')](_0x42d028[_0xebc8('0x31')]['sort']);_0x27999b[_0xebc8('0x3b')]=qs[_0xebc8('0x33')](_[_0xebc8('0x3c')](_0x42d028[_0xebc8('0x31')],_0x27d460['filters']));if(_0x42d028[_0xebc8('0x31')]['filter']){_0x27999b[_0xebc8('0x3b')]=_['merge'](_0x27999b['where'],{'$or':_[_0xebc8('0x2c')](_0x27999b[_0xebc8('0x36')],function(_0xe24f6f){var _0x2f41e0={};_0x2f41e0[_0xe24f6f]={'$like':'%'+_0x42d028['query']['filter']+'%'};return _0x2f41e0;})});}_0x27999b=_[_0xebc8('0x3e')]({},_0x27999b,_0x42d028[_0xebc8('0x3f')]);return _0x39091a[_0xebc8('0x49')](_0x27999b);}})[_0xebc8('0x27')](function(_0x5be974){if(_0x5be974){_0x59aa83=_0x5be974[_0xebc8('0x45')];if(!_0x42d028[_0xebc8('0x31')][_0xebc8('0x37')](_0xebc8('0x38'))){_0x27999b['limit']=qs[_0xebc8('0x20')](_0x42d028[_0xebc8('0x31')][_0xebc8('0x20')]);_0x27999b[_0xebc8('0x1d')]=qs[_0xebc8('0x1d')](_0x42d028[_0xebc8('0x31')][_0xebc8('0x1d')]);}return _0x39091a[_0xebc8('0x49')](_0x27999b);}})[_0xebc8('0x27')](function(_0x4f6eba){if(_0x4f6eba){return _0x4f6eba?{'count':_0x59aa83,'rows':_0x4f6eba}:null;}})['then'](respondWithResult(_0x26f710,null))[_0xebc8('0x43')](handleError(_0x26f710,null));};exports[_0xebc8('0x4b')]=function(_0x54272a,_0xc01c7,_0x4fbdfe){if(_0x54272a['body']['id']){delete _0x54272a[_0xebc8('0x48')]['id'];}return db['SalesforceAccount']['findOne']({'where':{'id':_0x54272a[_0xebc8('0x44')]['id']}})['then'](handleEntityNotFound(_0xc01c7,null))['then'](function(_0x43fc7d){if(_0x43fc7d){_0x54272a[_0xebc8('0x48')][_0xebc8('0x4c')]=_0x43fc7d['id'];_0x54272a[_0xebc8('0x48')][_0xebc8('0x4d')]=integrations[_0xebc8('0x4e')](_0x54272a[_0xebc8('0x48')][_0xebc8('0x4f')],_0x54272a[_0xebc8('0x48')][_0xebc8('0x50')]);_0x54272a[_0xebc8('0x48')][_0xebc8('0x51')]=integrations[_0xebc8('0x52')](_0x54272a[_0xebc8('0x48')]['channel'],_0x54272a[_0xebc8('0x48')]['type']);return db[_0xebc8('0x4a')][_0xebc8('0x47')](_0x54272a[_0xebc8('0x48')],{'include':[{'model':db[_0xebc8('0x53')],'as':_0xebc8('0x4d')},{'model':db[_0xebc8('0x53')],'as':_0xebc8('0x51')}]});}return null;})['then'](respondWithResult(_0xc01c7,null))[_0xebc8('0x43')](handleError(_0xc01c7,null));};exports['getFields']=function(_0x307d3c,_0x3ebc9e,_0xe527af){var _0x3d6c67;var _0x4c9ad2='';var _0x4323ca='Task';return db[_0xebc8('0x2d')][_0xebc8('0x54')]({'where':{'id':_0x307d3c['params']['id']},'attributes':['id','remoteUri','clientId',_0xebc8('0x55'),_0xebc8('0x56'),_0xebc8('0x57'),'securityToken']})[_0xebc8('0x27')](handleEntityNotFound(_0x3ebc9e,null))[_0xebc8('0x27')](function(_0x586d5c){if(_0x586d5c){_0x4c9ad2=_0x586d5c[_0xebc8('0x58')];var _0x5bbf52=_0x4c9ad2['slice'](-0x1);if(_0x5bbf52==='/'){_0x4c9ad2=_0x4c9ad2['substring'](0x0,_0x4c9ad2[_0xebc8('0x59')](_0x5bbf52));}_0x3d6c67=new jsforce[(_0xebc8('0x5a'))]({'oauth2':{'loginUrl':_0x4c9ad2,'clientId':_0x586d5c[_0xebc8('0x5b')],'clientSecret':_0x586d5c[_0xebc8('0x55')]}});return _0x3d6c67[_0xebc8('0x5c')](_0x586d5c[_0xebc8('0x56')],_0x586d5c['password'][_0xebc8('0x5d')](_0x586d5c['securityToken']));}})['then'](function(_0x5d37e3){if(_0x5d37e3){if(!_[_0xebc8('0x5e')](_0x307d3c[_0xebc8('0x31')]['ticketType'])){_0x4323ca=_0x307d3c[_0xebc8('0x31')][_0xebc8('0x5f')];}return _0x3d6c67[_0xebc8('0x60')](_0x4323ca)['describe']();}})[_0xebc8('0x27')](function(_0x505747){var _0x2d8841=['OwnerId',_0xebc8('0x61'),'IsReminderSet',_0xebc8('0x62'),_0xebc8('0x63'),'Description'];var _0x3ed06f=[_0xebc8('0x64'),_0xebc8('0x65'),_0xebc8('0x66'),'boolean',_0xebc8('0x67'),_0xebc8('0x68'),_0xebc8('0x69')];if(_0x505747){_[_0xebc8('0x6a')](_0x505747['fields'],function(_0x3a5c72){return _0x2d8841[_0xebc8('0x6b')](_0x3a5c72[_0xebc8('0x2b')])||!_0x3ed06f['includes'](_0x3a5c72[_0xebc8('0x50')]);});return{'count':_0x505747[_0xebc8('0x35')][_0xebc8('0x45')],'rows':_[_0xebc8('0x2c')](_0x505747['fields'],function(_0x58dd68){return{'id':_0x58dd68[_0xebc8('0x2b')],'name':_0x58dd68[_0xebc8('0x6c')],'custom':_0x58dd68['custom'],'options':_0x58dd68['picklistValues']['length']>0x0?_[_0xebc8('0x2c')](_0x58dd68[_0xebc8('0x6d')],function(_0x344d61){return{'name':_0x344d61[_0xebc8('0x6c')],'value':_0x344d61[_0xebc8('0x6e')]};}):_0x58dd68[_0xebc8('0x50')]==_0xebc8('0x6f')?[{'name':_0xebc8('0x70'),'value':_0xebc8('0x71')},{'name':_0xebc8('0x72'),'value':_0xebc8('0x73')}]:[]};})};}})['then'](respondWithResult(_0x3ebc9e,null))[_0xebc8('0x43')](function(_0xebaed7){var _0xef0f71=_0x307d3c[_0xebc8('0x31')][_0xebc8('0x74')]?0x1f4:_0xebaed7[_0xebc8('0x75')]||0x1f4;logger[_0xebc8('0x29')](_0xebc8('0x76'),'getFields',_0xef0f71,JSON[_0xebc8('0x77')](_0xebaed7));delete _0xebaed7['name'];if(_0xef0f71===0x191){_0xef0f71=0x190;}_0x3ebc9e[_0xebc8('0x1a')](_0xef0f71)[_0xebc8('0x78')](_0x307d3c[_0xebc8('0x31')][_0xebc8('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0xebaed7['statusCode']}:_0xebaed7);});};
\ No newline at end of file
+var _0x6a19=['channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','login','concat','ticketType','sobject','describe','OwnerId','ActivityDate','IsRecurrence','Subject','Description','string','email','textarea','remove','includes','label','custom','picklistValues','value','boolean','True','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','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','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','name','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','includeAll','find','create','body','catch','params','findOne','SalesforceConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects'];(function(_0x3f24f0,_0x4808ff){var _0x20b6b0=function(_0x3ad82b){while(--_0x3ad82b){_0x3f24f0['push'](_0x3f24f0['shift']());}};_0x20b6b0(++_0x4808ff);}(_0x6a19,0x1a0));var _0x96a1=function(_0x4e3840,_0x427c06){_0x4e3840=_0x4e3840-0x0;var _0x5868b3=_0x6a19[_0x4e3840];return _0x5868b3;};'use strict';var emlformat=require(_0x96a1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x96a1('0x1'));var jsonpatch=require(_0x96a1('0x2'));var rp=require('request-promise');var moment=require(_0x96a1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x96a1('0x4'));var util=require(_0x96a1('0x5'));var path=require(_0x96a1('0x6'));var sox=require(_0x96a1('0x7'));var csv=require('to-csv');var ejs=require(_0x96a1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x96a1('0x9'));var deskjs=require(_0x96a1('0xa'));var toCsv=require(_0x96a1('0xb'));var querystring=require(_0x96a1('0xc'));var Papa=require(_0x96a1('0xd'));var Redis=require(_0x96a1('0xe'));var authService=require(_0x96a1('0xf'));var qs=require(_0x96a1('0x10'));var as=require(_0x96a1('0x11'));var hardwareService=require(_0x96a1('0x12'));var logger=require(_0x96a1('0x13'))(_0x96a1('0x14'));var utils=require(_0x96a1('0x15'));var config=require(_0x96a1('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x334c5e,_0x153863){_0x153863=_0x153863||0xcc;return function(_0x3cbe5f){if(_0x3cbe5f){return _0x334c5e[_0x96a1('0x17')](_0x153863);}return _0x334c5e['status'](_0x153863)[_0x96a1('0x18')]();};}function respondWithResult(_0x1aa4ef,_0x44e9b3){_0x44e9b3=_0x44e9b3||0xc8;return function(_0x37f1ea){if(_0x37f1ea){return _0x1aa4ef[_0x96a1('0x19')](_0x44e9b3)[_0x96a1('0x1a')](_0x37f1ea);}};}function respondWithFilteredResult(_0x3b9efa,_0x265316){return function(_0x4385b5){if(_0x4385b5){var _0x32595b=typeof _0x265316['offset']===_0x96a1('0x1b')&&typeof _0x265316[_0x96a1('0x1c')]===_0x96a1('0x1b');var _0x4685fa=_0x4385b5[_0x96a1('0x1d')];var _0xcd4853=_0x32595b?0x0:_0x265316[_0x96a1('0x1e')];var _0x3a4e2f=_0x32595b?_0x4385b5['count']:_0x265316[_0x96a1('0x1e')]+_0x265316[_0x96a1('0x1c')];var _0x1877c8;if(_0x3a4e2f>=_0x4685fa){_0x3a4e2f=_0x4685fa;_0x1877c8=0xc8;}else{_0x1877c8=0xce;}_0x3b9efa[_0x96a1('0x19')](_0x1877c8);return _0x3b9efa[_0x96a1('0x1f')](_0x96a1('0x20'),_0xcd4853+'-'+_0x3a4e2f+'/'+_0x4685fa)[_0x96a1('0x1a')](_0x4385b5);}return null;};}function patchUpdates(_0x47caee){return function(_0x286a86){try{jsonpatch[_0x96a1('0x21')](_0x286a86,_0x47caee,!![]);}catch(_0x5f1cdb){return BPromise['reject'](_0x5f1cdb);}return _0x286a86['save']();};}function saveUpdates(_0x212cc6,_0x575845){return function(_0x533a86){if(_0x533a86){return _0x533a86[_0x96a1('0x22')](_0x212cc6)[_0x96a1('0x23')](function(_0x32d71b){return _0x32d71b;});}return null;};}function removeEntity(_0x561bc7,_0xe30f4f){return function(_0x31c291){if(_0x31c291){return _0x31c291[_0x96a1('0x24')]()[_0x96a1('0x23')](function(){_0x561bc7[_0x96a1('0x19')](0xcc)[_0x96a1('0x18')]();});}};}function handleEntityNotFound(_0xc1776d,_0x11f8c1){return function(_0x20ff04){if(!_0x20ff04){_0xc1776d['sendStatus'](0x194);}return _0x20ff04;};}function handleError(_0x8acf2e,_0x17a8be){_0x17a8be=_0x17a8be||0x1f4;return function(_0x4a47f6){logger['error'](_0x4a47f6['stack']);if(_0x4a47f6[_0x96a1('0x25')]){delete _0x4a47f6['name'];}_0x8acf2e[_0x96a1('0x19')](_0x17a8be)['send'](_0x4a47f6);};}exports[_0x96a1('0x26')]=function(_0x3ae5f8,_0x101dd1){var _0x23006c={},_0x155a2f={},_0x5c5b2c={'count':0x0,'rows':[]};var _0x442a74=_[_0x96a1('0x27')](db[_0x96a1('0x28')][_0x96a1('0x29')],function(_0x4b7c87){return{'name':_0x4b7c87[_0x96a1('0x2a')],'type':_0x4b7c87[_0x96a1('0x2b')][_0x96a1('0x2c')]};});_0x155a2f[_0x96a1('0x2d')]=_[_0x96a1('0x27')](_0x442a74,_0x96a1('0x25'));_0x155a2f[_0x96a1('0x2e')]=_[_0x96a1('0x2f')](_0x3ae5f8[_0x96a1('0x2e')]);_0x155a2f['filters']=_[_0x96a1('0x30')](_0x155a2f['model'],_0x155a2f['query']);_0x23006c['attributes']=_[_0x96a1('0x30')](_0x155a2f[_0x96a1('0x2d')],qs[_0x96a1('0x31')](_0x3ae5f8['query'][_0x96a1('0x31')]));_0x23006c[_0x96a1('0x32')]=_0x23006c['attributes'][_0x96a1('0x33')]?_0x23006c[_0x96a1('0x32')]:_0x155a2f[_0x96a1('0x2d')];if(!_0x3ae5f8[_0x96a1('0x2e')][_0x96a1('0x34')](_0x96a1('0x35'))){_0x23006c['limit']=qs['limit'](_0x3ae5f8[_0x96a1('0x2e')][_0x96a1('0x1c')]);_0x23006c['offset']=qs[_0x96a1('0x1e')](_0x3ae5f8[_0x96a1('0x2e')]['offset']);}_0x23006c[_0x96a1('0x36')]=qs[_0x96a1('0x37')](_0x3ae5f8[_0x96a1('0x2e')][_0x96a1('0x37')]);_0x23006c[_0x96a1('0x38')]=qs[_0x96a1('0x39')](_[_0x96a1('0x3a')](_0x3ae5f8[_0x96a1('0x2e')],_0x155a2f['filters']),_0x442a74);if(_0x3ae5f8['query'][_0x96a1('0x3b')]){_0x23006c[_0x96a1('0x38')]=_[_0x96a1('0x3c')](_0x23006c[_0x96a1('0x38')],{'$or':_[_0x96a1('0x27')](_0x442a74,function(_0x48d556){if(_0x48d556['type']!==_0x96a1('0x3d')){var _0x3662ab={};_0x3662ab[_0x48d556['name']]={'$like':'%'+_0x3ae5f8[_0x96a1('0x2e')][_0x96a1('0x3b')]+'%'};return _0x3662ab;}})});}_0x23006c=_[_0x96a1('0x3c')]({},_0x23006c,_0x3ae5f8[_0x96a1('0x3e')]);var _0x309774={'where':_0x23006c[_0x96a1('0x38')]};return db['SalesforceAccount'][_0x96a1('0x1d')](_0x309774)[_0x96a1('0x23')](function(_0x52d689){_0x5c5b2c[_0x96a1('0x1d')]=_0x52d689;if(_0x3ae5f8[_0x96a1('0x2e')]['includeAll']){_0x23006c[_0x96a1('0x3f')]=[{'all':!![]}];}return db[_0x96a1('0x28')][_0x96a1('0x40')](_0x23006c);})[_0x96a1('0x23')](function(_0xe39616){_0x5c5b2c[_0x96a1('0x41')]=_0xe39616;return _0x5c5b2c;})[_0x96a1('0x23')](respondWithFilteredResult(_0x101dd1,_0x23006c))['catch'](handleError(_0x101dd1,null));};exports[_0x96a1('0x42')]=function(_0x43b758,_0x671feb){var _0x3b5610={'raw':![],'where':{'id':_0x43b758['params']['id']}},_0xfae447={};_0xfae447[_0x96a1('0x2d')]=_[_0x96a1('0x2f')](db[_0x96a1('0x28')][_0x96a1('0x29')]);_0xfae447[_0x96a1('0x2e')]=_[_0x96a1('0x2f')](_0x43b758[_0x96a1('0x2e')]);_0xfae447['filters']=_[_0x96a1('0x30')](_0xfae447[_0x96a1('0x2d')],_0xfae447[_0x96a1('0x2e')]);_0x3b5610['attributes']=_[_0x96a1('0x30')](_0xfae447[_0x96a1('0x2d')],qs[_0x96a1('0x31')](_0x43b758['query'][_0x96a1('0x31')]));_0x3b5610[_0x96a1('0x32')]=_0x3b5610[_0x96a1('0x32')][_0x96a1('0x33')]?_0x3b5610['attributes']:_0xfae447[_0x96a1('0x2d')];if(_0x43b758[_0x96a1('0x2e')][_0x96a1('0x43')]){_0x3b5610[_0x96a1('0x3f')]=[{'all':!![]}];}_0x3b5610=_[_0x96a1('0x3c')]({},_0x3b5610,_0x43b758[_0x96a1('0x3e')]);return db[_0x96a1('0x28')][_0x96a1('0x44')](_0x3b5610)['then'](handleEntityNotFound(_0x671feb,null))[_0x96a1('0x23')](respondWithResult(_0x671feb,null))['catch'](handleError(_0x671feb,null));};exports['create']=function(_0x354c53,_0x8351e4){return db['SalesforceAccount'][_0x96a1('0x45')](_0x354c53[_0x96a1('0x46')],{})[_0x96a1('0x23')](respondWithResult(_0x8351e4,0xc9))[_0x96a1('0x47')](handleError(_0x8351e4,null));};exports[_0x96a1('0x22')]=function(_0xd58b36,_0x1d7e1c){if(_0xd58b36[_0x96a1('0x46')]['id']){delete _0xd58b36[_0x96a1('0x46')]['id'];}return db[_0x96a1('0x28')][_0x96a1('0x44')]({'where':{'id':_0xd58b36[_0x96a1('0x48')]['id']}})[_0x96a1('0x23')](handleEntityNotFound(_0x1d7e1c,null))['then'](saveUpdates(_0xd58b36[_0x96a1('0x46')],null))[_0x96a1('0x23')](respondWithResult(_0x1d7e1c,null))[_0x96a1('0x47')](handleError(_0x1d7e1c,null));};exports[_0x96a1('0x24')]=function(_0x22fdb0,_0x358da1){return db['SalesforceAccount'][_0x96a1('0x44')]({'where':{'id':_0x22fdb0['params']['id']}})[_0x96a1('0x23')](handleEntityNotFound(_0x358da1,null))[_0x96a1('0x23')](removeEntity(_0x358da1,null))[_0x96a1('0x47')](handleError(_0x358da1,null));};exports['getConfigurations']=function(_0x44bf68,_0x3bdbe3,_0x28a09d){var _0x5107fe={};var _0x5829b3={};var _0xebfd9e;var _0x477107;return db['SalesforceAccount'][_0x96a1('0x49')]({'where':{'id':_0x44bf68['params']['id']}})[_0x96a1('0x23')](handleEntityNotFound(_0x3bdbe3,null))[_0x96a1('0x23')](function(_0x7f2b44){if(_0x7f2b44){_0xebfd9e=_0x7f2b44;_0x5829b3[_0x96a1('0x2d')]=_['keys'](db[_0x96a1('0x4a')][_0x96a1('0x29')]);_0x5829b3['query']=_[_0x96a1('0x2f')](_0x44bf68[_0x96a1('0x2e')]);_0x5829b3['filters']=_[_0x96a1('0x30')](_0x5829b3['model'],_0x5829b3[_0x96a1('0x2e')]);_0x5107fe[_0x96a1('0x32')]=_[_0x96a1('0x30')](_0x5829b3[_0x96a1('0x2d')],qs[_0x96a1('0x31')](_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x31')]));_0x5107fe[_0x96a1('0x32')]=_0x5107fe[_0x96a1('0x32')]['length']?_0x5107fe[_0x96a1('0x32')]:_0x5829b3[_0x96a1('0x2d')];_0x5107fe['order']=qs[_0x96a1('0x37')](_0x44bf68[_0x96a1('0x2e')]['sort']);_0x5107fe[_0x96a1('0x38')]=qs[_0x96a1('0x39')](_[_0x96a1('0x3a')](_0x44bf68[_0x96a1('0x2e')],_0x5829b3[_0x96a1('0x39')]));if(_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x3b')]){_0x5107fe[_0x96a1('0x38')]=_['merge'](_0x5107fe[_0x96a1('0x38')],{'$or':_[_0x96a1('0x27')](_0x5107fe['attributes'],function(_0x305dab){var _0x425ee7={};_0x425ee7[_0x305dab]={'$like':'%'+_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x3b')]+'%'};return _0x425ee7;})});}_0x5107fe=_[_0x96a1('0x3c')]({},_0x5107fe,_0x44bf68['options']);return _0xebfd9e[_0x96a1('0x4b')](_0x5107fe);}})[_0x96a1('0x23')](function(_0x501110){if(_0x501110){_0x477107=_0x501110[_0x96a1('0x33')];if(!_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x34')]('nolimit')){_0x5107fe['limit']=qs[_0x96a1('0x1c')](_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x1c')]);_0x5107fe[_0x96a1('0x1e')]=qs[_0x96a1('0x1e')](_0x44bf68[_0x96a1('0x2e')][_0x96a1('0x1e')]);}return _0xebfd9e[_0x96a1('0x4b')](_0x5107fe);}})[_0x96a1('0x23')](function(_0x407a74){if(_0x407a74){return _0x407a74?{'count':_0x477107,'rows':_0x407a74}:null;}})[_0x96a1('0x23')](respondWithResult(_0x3bdbe3,null))[_0x96a1('0x47')](handleError(_0x3bdbe3,null));};exports[_0x96a1('0x4c')]=function(_0x4d5de4,_0x507c9f,_0xa0f85){if(_0x4d5de4[_0x96a1('0x46')]['id']){delete _0x4d5de4[_0x96a1('0x46')]['id'];}return db['SalesforceAccount'][_0x96a1('0x49')]({'where':{'id':_0x4d5de4[_0x96a1('0x48')]['id']}})['then'](handleEntityNotFound(_0x507c9f,null))[_0x96a1('0x23')](function(_0x445a49){if(_0x445a49){_0x4d5de4['body'][_0x96a1('0x4d')]=_0x445a49['id'];_0x4d5de4['body'][_0x96a1('0x4e')]=integrations[_0x96a1('0x4f')](_0x4d5de4['body'][_0x96a1('0x50')],_0x4d5de4[_0x96a1('0x46')][_0x96a1('0x2b')]);_0x4d5de4[_0x96a1('0x46')][_0x96a1('0x51')]=integrations[_0x96a1('0x52')](_0x4d5de4[_0x96a1('0x46')]['channel'],_0x4d5de4['body'][_0x96a1('0x2b')]);return db[_0x96a1('0x4a')][_0x96a1('0x45')](_0x4d5de4['body'],{'include':[{'model':db['SalesforceField'],'as':_0x96a1('0x4e')},{'model':db[_0x96a1('0x53')],'as':'Descriptions'}]});}return null;})[_0x96a1('0x23')](respondWithResult(_0x507c9f,null))[_0x96a1('0x47')](handleError(_0x507c9f,null));};exports[_0x96a1('0x54')]=function(_0x17b49e,_0x13057d,_0x5afa64){var _0x392745;var _0x531d93='';var _0x1ca649=_0x96a1('0x55');return db[_0x96a1('0x28')][_0x96a1('0x49')]({'where':{'id':_0x17b49e['params']['id']},'attributes':['id',_0x96a1('0x56'),'clientId',_0x96a1('0x57'),_0x96a1('0x58'),_0x96a1('0x59'),_0x96a1('0x5a')]})['then'](handleEntityNotFound(_0x13057d,null))[_0x96a1('0x23')](function(_0x2b1364){if(_0x2b1364){_0x531d93=_0x2b1364[_0x96a1('0x56')];var _0x440276=_0x531d93[_0x96a1('0x5b')](-0x1);if(_0x440276==='/'){_0x531d93=_0x531d93[_0x96a1('0x5c')](0x0,_0x531d93[_0x96a1('0x5d')](_0x440276));}_0x392745=new jsforce[(_0x96a1('0x5e'))]({'oauth2':{'loginUrl':_0x531d93,'clientId':_0x2b1364[_0x96a1('0x5f')],'clientSecret':_0x2b1364[_0x96a1('0x57')]}});return _0x392745[_0x96a1('0x60')](_0x2b1364['username'],_0x2b1364[_0x96a1('0x59')][_0x96a1('0x61')](_0x2b1364[_0x96a1('0x5a')]));}})['then'](function(_0x5f0440){if(_0x5f0440){if(!_['isNil'](_0x17b49e[_0x96a1('0x2e')][_0x96a1('0x62')])){_0x1ca649=_0x17b49e['query'][_0x96a1('0x62')];}return _0x392745[_0x96a1('0x63')](_0x1ca649)[_0x96a1('0x64')]();}})[_0x96a1('0x23')](function(_0x299a7f){var _0x2a21c7=[_0x96a1('0x65'),_0x96a1('0x66'),'IsReminderSet',_0x96a1('0x67'),_0x96a1('0x68'),_0x96a1('0x69')];var _0x42f2ff=[_0x96a1('0x6a'),'int','picklist','boolean',_0x96a1('0x6b'),_0x96a1('0x6c'),'phone'];if(_0x299a7f){_[_0x96a1('0x6d')](_0x299a7f[_0x96a1('0x31')],function(_0x54fdfb){return _0x2a21c7[_0x96a1('0x6e')](_0x54fdfb['name'])||!_0x42f2ff['includes'](_0x54fdfb[_0x96a1('0x2b')]);});return{'count':_0x299a7f[_0x96a1('0x31')]['length'],'rows':_[_0x96a1('0x27')](_0x299a7f[_0x96a1('0x31')],function(_0x5bb518){return{'id':_0x5bb518[_0x96a1('0x25')],'name':_0x5bb518[_0x96a1('0x6f')],'custom':_0x5bb518[_0x96a1('0x70')],'options':_0x5bb518['picklistValues'][_0x96a1('0x33')]>0x0?_[_0x96a1('0x27')](_0x5bb518[_0x96a1('0x71')],function(_0x29b455){return{'name':_0x29b455[_0x96a1('0x6f')],'value':_0x29b455[_0x96a1('0x72')]};}):_0x5bb518['type']==_0x96a1('0x73')?[{'name':_0x96a1('0x74'),'value':'true'},{'name':_0x96a1('0x75'),'value':_0x96a1('0x76')}]:[]};})};}})['then'](respondWithResult(_0x13057d,null))['catch'](function(_0x205b82){var _0x3f6f22=_0x17b49e[_0x96a1('0x2e')][_0x96a1('0x77')]?0x1f4:_0x205b82[_0x96a1('0x78')]||0x1f4;logger['error'](_0x96a1('0x79'),_0x96a1('0x54'),_0x3f6f22,JSON['stringify'](_0x205b82));delete _0x205b82[_0x96a1('0x25')];if(_0x3f6f22===0x191){_0x3f6f22=0x190;}_0x13057d[_0x96a1('0x19')](_0x3f6f22)[_0x96a1('0x7a')](_0x17b49e['query'][_0x96a1('0x77')]?{'message':_0x96a1('0x7b'),'statusCode':_0x205b82['statusCode']}:_0x205b82);});};
\ No newline at end of file
index acb8fd9..a5b4208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3512=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x48b160,_0x274f3b){var _0x17b3c0=function(_0x452f87){while(--_0x452f87){_0x48b160['push'](_0x48b160['shift']());}};_0x17b3c0(++_0x274f3b);}(_0x3512,0x9e));var _0x2351=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3512[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x2351('0x0'));var util=require(_0x2351('0x1'));var logger=require(_0x2351('0x2'))(_0x2351('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2351('0x4'));var fs=require('fs');var path=require(_0x2351('0x5'));var rimraf=require(_0x2351('0x6'));var config=require(_0x2351('0x7'));var attributes=require(_0x2351('0x8'));var integrations=require(_0x2351('0x9'));module[_0x2351('0xa')]=function(_0x118f9b,_0x569ff4){return _0x118f9b[_0x2351('0xb')](_0x2351('0xc'),attributes,{'tableName':_0x2351('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca74=['../../components/integrations/configuration','exports','define','SalesforceAccount','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes'];(function(_0x4421a0,_0x1525bc){var _0x5626d0=function(_0x56d43e){while(--_0x56d43e){_0x4421a0['push'](_0x4421a0['shift']());}};_0x5626d0(++_0x1525bc);}(_0xca74,0x170));var _0x4ca7=function(_0x578e76,_0x2047bb){_0x578e76=_0x578e76-0x0;var _0x26e58b=_0xca74[_0x578e76];return _0x26e58b;};'use strict';var _=require(_0x4ca7('0x0'));var util=require('util');var logger=require(_0x4ca7('0x1'))(_0x4ca7('0x2'));var moment=require(_0x4ca7('0x3'));var BPromise=require(_0x4ca7('0x4'));var rp=require(_0x4ca7('0x5'));var fs=require('fs');var path=require(_0x4ca7('0x6'));var rimraf=require(_0x4ca7('0x7'));var config=require(_0x4ca7('0x8'));var attributes=require(_0x4ca7('0x9'));var integrations=require(_0x4ca7('0xa'));module[_0x4ca7('0xb')]=function(_0xab134,_0x3d7e59){return _0xab134[_0x4ca7('0xc')](_0x4ca7('0xd'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a7ca1a..5320156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe228=['ShowSalesforceAccount','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','attributes','limit','map','include','model','find','raw','where'];(function(_0x34d66b,_0x4074d5){var _0x2d3d2d=function(_0x574bf1){while(--_0x574bf1){_0x34d66b['push'](_0x34d66b['shift']());}};_0x2d3d2d(++_0x4074d5);}(_0xe228,0x1f0));var _0x8e22=function(_0x470bb5,_0x231fd5){_0x470bb5=_0x470bb5-0x0;var _0x3ceeac=_0xe228[_0x470bb5];return _0x3ceeac;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8e22('0x0'));var rs=require(_0x8e22('0x1'));var fs=require('fs');var Redis=require(_0x8e22('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8e22('0x3'))(_0x8e22('0x4'));var config=require(_0x8e22('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8e22('0x6')][_0x8e22('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1ea51a,_0xde8a4b,_0x4410c9){return new BPromise(function(_0x1e28d3,_0x50fdc9){return client['request'](_0x1ea51a,_0x4410c9)[_0x8e22('0x8')](function(_0x100b4a){logger[_0x8e22('0x9')]('SalesforceAccount,\x20%s,\x20%s',_0xde8a4b,_0x8e22('0xa'));logger[_0x8e22('0xb')](_0x8e22('0xc'),_0xde8a4b,_0x8e22('0xa'),JSON[_0x8e22('0xd')](_0x100b4a));if(_0x100b4a[_0x8e22('0xe')]){if(_0x100b4a['error'][_0x8e22('0xf')]===0x1f4){logger[_0x8e22('0xe')](_0x8e22('0x10'),_0xde8a4b,_0x100b4a[_0x8e22('0xe')][_0x8e22('0x11')]);return _0x50fdc9(_0x100b4a['error']['message']);}logger[_0x8e22('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0xde8a4b,_0x100b4a['error'][_0x8e22('0x11')]);return _0x1e28d3(_0x100b4a[_0x8e22('0xe')][_0x8e22('0x11')]);}else{logger[_0x8e22('0x9')](_0x8e22('0x10'),_0xde8a4b,_0x8e22('0xa'));_0x1e28d3(_0x100b4a[_0x8e22('0x12')][_0x8e22('0x11')]);}})[_0x8e22('0x13')](function(_0x12747b){logger[_0x8e22('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0xde8a4b,_0x12747b);_0x50fdc9(_0x12747b);});});}exports[_0x8e22('0x14')]=function(_0x572ad2){var _0x2d1b90=this;return new Promise(function(_0x3ab2c1,_0x1621f2){return db[_0x8e22('0x15')][_0x8e22('0x16')]({'raw':_0x572ad2[_0x8e22('0x17')]?_0x572ad2[_0x8e22('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x572ad2['options']?_0x572ad2[_0x8e22('0x17')]['where']||null:null,'attributes':_0x572ad2[_0x8e22('0x17')]?_0x572ad2[_0x8e22('0x17')][_0x8e22('0x18')]||null:null,'limit':_0x572ad2[_0x8e22('0x17')]?_0x572ad2[_0x8e22('0x17')][_0x8e22('0x19')]||null:null,'include':_0x572ad2[_0x8e22('0x17')]?_0x572ad2[_0x8e22('0x17')]['include']?_[_0x8e22('0x1a')](_0x572ad2[_0x8e22('0x17')][_0x8e22('0x1b')],function(_0x4c26f6){return{'model':db[_0x4c26f6[_0x8e22('0x1c')]],'as':_0x4c26f6['as'],'attributes':_0x4c26f6[_0x8e22('0x18')],'include':_0x4c26f6['include']?_[_0x8e22('0x1a')](_0x4c26f6[_0x8e22('0x1b')],function(_0x481475){return{'model':db[_0x481475['model']],'as':_0x481475['as'],'attributes':_0x481475['attributes'],'include':_0x481475['include']?_[_0x8e22('0x1a')](_0x481475[_0x8e22('0x1b')],function(_0x27c915){return{'model':db[_0x27c915['model']],'as':_0x27c915['as'],'attributes':_0x27c915[_0x8e22('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8e22('0x8')](function(_0x3b2a29){logger[_0x8e22('0x9')](_0x8e22('0x14'),_0x572ad2);logger[_0x8e22('0xb')](_0x8e22('0x14'),_0x572ad2,JSON['stringify'](_0x3b2a29));_0x3ab2c1(_0x3b2a29);})['catch'](function(_0x11a944){logger[_0x8e22('0xe')](_0x8e22('0x14'),_0x11a944[_0x8e22('0x11')],_0x572ad2);_0x1621f2(_0x2d1b90[_0x8e22('0xe')](0x1f4,_0x11a944[_0x8e22('0x11')]));});});};exports['ShowSalesforceAccount']=function(_0x1ddec1){var _0x431a66=this;return new Promise(function(_0x32869d,_0x3b2016){return db['SalesforceAccount'][_0x8e22('0x1d')]({'raw':_0x1ddec1[_0x8e22('0x17')]?_0x1ddec1[_0x8e22('0x17')][_0x8e22('0x1e')]===undefined?!![]:![]:!![],'where':_0x1ddec1[_0x8e22('0x17')]?_0x1ddec1[_0x8e22('0x17')][_0x8e22('0x1f')]||null:null,'attributes':_0x1ddec1['options']?_0x1ddec1[_0x8e22('0x17')]['attributes']||null:null,'include':_0x1ddec1[_0x8e22('0x17')]?_0x1ddec1[_0x8e22('0x17')]['include']?_[_0x8e22('0x1a')](_0x1ddec1[_0x8e22('0x17')]['include'],function(_0x7d5273){return{'model':db[_0x7d5273[_0x8e22('0x1c')]],'as':_0x7d5273['as'],'attributes':_0x7d5273[_0x8e22('0x18')],'include':_0x7d5273[_0x8e22('0x1b')]?_[_0x8e22('0x1a')](_0x7d5273[_0x8e22('0x1b')],function(_0x51189d){return{'model':db[_0x51189d[_0x8e22('0x1c')]],'as':_0x51189d['as'],'attributes':_0x51189d[_0x8e22('0x18')],'include':_0x51189d[_0x8e22('0x1b')]?_[_0x8e22('0x1a')](_0x51189d['include'],function(_0x42850b){return{'model':db[_0x42850b[_0x8e22('0x1c')]],'as':_0x42850b['as'],'attributes':_0x42850b[_0x8e22('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8e22('0x8')](function(_0x4a9e2b){logger[_0x8e22('0x9')]('ShowSalesforceAccount',_0x1ddec1);logger[_0x8e22('0xb')](_0x8e22('0x20'),_0x1ddec1,JSON[_0x8e22('0xd')](_0x4a9e2b));_0x32869d(_0x4a9e2b);})['catch'](function(_0x36d713){logger[_0x8e22('0xe')](_0x8e22('0x20'),_0x36d713[_0x8e22('0x11')],_0x1ddec1);_0x3b2016(_0x431a66['error'](0x1f4,_0x36d713[_0x8e22('0x11')]));});});};
\ No newline at end of file
+var _0x6967=['options','attributes','include','map','model','ShowSalesforceAccount','find','raw','where','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','result','catch','GetSalesforceAccount','SalesforceAccount','findAll'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6967,0x99));var _0x7696=function(_0x32b278,_0x41fd25){_0x32b278=_0x32b278-0x0;var _0x1eef43=_0x6967[_0x32b278];return _0x1eef43;};'use strict';var _=require(_0x7696('0x0'));var util=require(_0x7696('0x1'));var moment=require('moment');var BPromise=require(_0x7696('0x2'));var rs=require(_0x7696('0x3'));var fs=require('fs');var Redis=require(_0x7696('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7696('0x5'));var logger=require(_0x7696('0x6'))('rpc');var config=require(_0x7696('0x7'));var jayson=require(_0x7696('0x8'));var client=jayson[_0x7696('0x9')][_0x7696('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a2d6b,_0x47315c,_0x4fa252){return new BPromise(function(_0x4d5b1d,_0xdb4488){return client[_0x7696('0xb')](_0x3a2d6b,_0x4fa252)[_0x7696('0xc')](function(_0x35d599){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x47315c,_0x7696('0xd'));logger[_0x7696('0xe')](_0x7696('0xf'),_0x47315c,_0x7696('0xd'),JSON[_0x7696('0x10')](_0x35d599));if(_0x35d599[_0x7696('0x11')]){if(_0x35d599['error'][_0x7696('0x12')]===0x1f4){logger[_0x7696('0x11')](_0x7696('0x13'),_0x47315c,_0x35d599[_0x7696('0x11')][_0x7696('0x14')]);return _0xdb4488(_0x35d599['error'][_0x7696('0x14')]);}logger[_0x7696('0x11')](_0x7696('0x13'),_0x47315c,_0x35d599['error']['message']);return _0x4d5b1d(_0x35d599[_0x7696('0x11')][_0x7696('0x14')]);}else{logger[_0x7696('0x15')](_0x7696('0x13'),_0x47315c,_0x7696('0xd'));_0x4d5b1d(_0x35d599[_0x7696('0x16')][_0x7696('0x14')]);}})[_0x7696('0x17')](function(_0x519f06){logger['error'](_0x7696('0x13'),_0x47315c,_0x519f06);_0xdb4488(_0x519f06);});});}exports[_0x7696('0x18')]=function(_0x518562){var _0x3c5613=this;return new Promise(function(_0x2e5f86,_0xe401c8){return db[_0x7696('0x19')][_0x7696('0x1a')]({'raw':_0x518562[_0x7696('0x1b')]?_0x518562[_0x7696('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x518562[_0x7696('0x1b')]?_0x518562['options']['where']||null:null,'attributes':_0x518562[_0x7696('0x1b')]?_0x518562[_0x7696('0x1b')][_0x7696('0x1c')]||null:null,'limit':_0x518562['options']?_0x518562[_0x7696('0x1b')]['limit']||null:null,'include':_0x518562[_0x7696('0x1b')]?_0x518562['options'][_0x7696('0x1d')]?_[_0x7696('0x1e')](_0x518562[_0x7696('0x1b')][_0x7696('0x1d')],function(_0x5d2356){return{'model':db[_0x5d2356[_0x7696('0x1f')]],'as':_0x5d2356['as'],'attributes':_0x5d2356[_0x7696('0x1c')],'include':_0x5d2356['include']?_['map'](_0x5d2356[_0x7696('0x1d')],function(_0x3d16cb){return{'model':db[_0x3d16cb[_0x7696('0x1f')]],'as':_0x3d16cb['as'],'attributes':_0x3d16cb[_0x7696('0x1c')],'include':_0x3d16cb[_0x7696('0x1d')]?_[_0x7696('0x1e')](_0x3d16cb[_0x7696('0x1d')],function(_0x19b272){return{'model':db[_0x19b272['model']],'as':_0x19b272['as'],'attributes':_0x19b272[_0x7696('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7696('0xc')](function(_0x44be60){logger[_0x7696('0x15')](_0x7696('0x18'),_0x518562);logger[_0x7696('0xe')](_0x7696('0x18'),_0x518562,JSON[_0x7696('0x10')](_0x44be60));_0x2e5f86(_0x44be60);})[_0x7696('0x17')](function(_0x4ab83b){logger[_0x7696('0x11')](_0x7696('0x18'),_0x4ab83b[_0x7696('0x14')],_0x518562);_0xe401c8(_0x3c5613[_0x7696('0x11')](0x1f4,_0x4ab83b[_0x7696('0x14')]));});});};exports[_0x7696('0x20')]=function(_0x2a62b8){var _0x5ae307=this;return new Promise(function(_0x2c79c7,_0x27e821){return db[_0x7696('0x19')][_0x7696('0x21')]({'raw':_0x2a62b8[_0x7696('0x1b')]?_0x2a62b8[_0x7696('0x1b')][_0x7696('0x22')]===undefined?!![]:![]:!![],'where':_0x2a62b8['options']?_0x2a62b8[_0x7696('0x1b')][_0x7696('0x23')]||null:null,'attributes':_0x2a62b8[_0x7696('0x1b')]?_0x2a62b8[_0x7696('0x1b')][_0x7696('0x1c')]||null:null,'include':_0x2a62b8[_0x7696('0x1b')]?_0x2a62b8[_0x7696('0x1b')][_0x7696('0x1d')]?_[_0x7696('0x1e')](_0x2a62b8['options']['include'],function(_0x597939){return{'model':db[_0x597939[_0x7696('0x1f')]],'as':_0x597939['as'],'attributes':_0x597939[_0x7696('0x1c')],'include':_0x597939[_0x7696('0x1d')]?_[_0x7696('0x1e')](_0x597939[_0x7696('0x1d')],function(_0x1f089c){return{'model':db[_0x1f089c[_0x7696('0x1f')]],'as':_0x1f089c['as'],'attributes':_0x1f089c[_0x7696('0x1c')],'include':_0x1f089c['include']?_[_0x7696('0x1e')](_0x1f089c['include'],function(_0x14deee){return{'model':db[_0x14deee[_0x7696('0x1f')]],'as':_0x14deee['as'],'attributes':_0x14deee[_0x7696('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7696('0xc')](function(_0x14632a){logger[_0x7696('0x15')]('ShowSalesforceAccount',_0x2a62b8);logger[_0x7696('0xe')](_0x7696('0x20'),_0x2a62b8,JSON[_0x7696('0x10')](_0x14632a));_0x2c79c7(_0x14632a);})[_0x7696('0x17')](function(_0x50094d){logger[_0x7696('0x11')]('ShowSalesforceAccount',_0x50094d[_0x7696('0x14')],_0x2a62b8);_0x27e821(_0x5ae307[_0x7696('0x11')](0x1f4,_0x50094d[_0x7696('0x14')]));});});};
\ No newline at end of file
index 92b7f0d..51e1917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0xeb1afb,_0x48294b){var _0xbd3688=function(_0x1d80fc){while(--_0x1d80fc){_0xeb1afb['push'](_0xeb1afb['shift']());}};_0xbd3688(++_0x48294b);}(_0x2ef3,0xba));var _0x32ef=function(_0x599fb0,_0x590758){_0x599fb0=_0x599fb0-0x0;var _0x244469=_0x2ef3[_0x599fb0];return _0x244469;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x146694,_0x57cd94){var _0x53faa8=function(_0x3b36a8){while(--_0x3b36a8){_0x146694['push'](_0x146694['shift']());}};_0x53faa8(++_0x57cd94);}(_0x7a54,0x106));var _0x47a5=function(_0x5d9ba1,_0x2dfaaa){_0x5d9ba1=_0x5d9ba1-0x0;var _0x2fd0bb=_0x7a54[_0x5d9ba1];return _0x2fd0bb;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index c8ab109..36dfe98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb0b=['Task','Case','contact_lead','account_contact_lead','account','contact','lead','sequelize','exports','STRING','ENUM'];(function(_0x2300c7,_0x255f74){var _0x23f720=function(_0x3fea57){while(--_0x3fea57){_0x2300c7['push'](_0x2300c7['shift']());}};_0x23f720(++_0x255f74);}(_0xeb0b,0x1ca));var _0xbeb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeb0b[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xbeb0('0x0'));module[_0xbeb0('0x1')]={'name':{'type':Sequelize[_0xbeb0('0x2')]},'description':{'type':Sequelize[_0xbeb0('0x2')]},'ticketType':{'type':Sequelize[_0xbeb0('0x3')](_0xbeb0('0x4'),_0xbeb0('0x5')),'defaultValue':_0xbeb0('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0xbeb0('0x6'),'contact','lead',_0xbeb0('0x7'),_0xbeb0('0x8')),'defaultValue':_0xbeb0('0x6')},'moduleCreate':{'type':Sequelize[_0xbeb0('0x3')]('nothing',_0xbeb0('0x9'),_0xbeb0('0xa'),_0xbeb0('0x8')),'defaultValue':_0xbeb0('0xa')},'leadId':{'type':Sequelize[_0xbeb0('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xbeb0('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xbeb0('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xbeb0('0x2')]}};
\ No newline at end of file
+var _0xc103=['account','nothing','sequelize','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xc103,0x1ee));var _0x3c10=function(_0x19c57a,_0x5c9c7c){_0x19c57a=_0x19c57a-0x0;var _0x576a08=_0xc103[_0x19c57a];return _0x576a08;};'use strict';var Sequelize=require(_0x3c10('0x0'));module[_0x3c10('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3c10('0x2')]},'ticketType':{'type':Sequelize[_0x3c10('0x3')](_0x3c10('0x4'),_0x3c10('0x5')),'defaultValue':_0x3c10('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0x3c10('0x6'),_0x3c10('0x7'),_0x3c10('0x8'),_0x3c10('0x9'),_0x3c10('0xa')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize['ENUM'](_0x3c10('0xb'),_0x3c10('0x7'),_0x3c10('0x8'),'account'),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0x3c10('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x3c10('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x3c10('0x2')]}};
\ No newline at end of file
index d73b621..61d0eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791b=['fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','intersection','create','update','body','getFields','findOne','SalesforceField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','index','SalesforceConfiguration','rawAttributes','fieldName','type','model','map','query','filters'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x791b,0xc3));var _0xb791=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x791b[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xb791('0x0'));var rimraf=require(_0xb791('0x1'));var zipdir=require(_0xb791('0x2'));var jsonpatch=require(_0xb791('0x3'));var rp=require(_0xb791('0x4'));var moment=require(_0xb791('0x5'));var BPromise=require(_0xb791('0x6'));var Mustache=require(_0xb791('0x7'));var util=require(_0xb791('0x8'));var path=require(_0xb791('0x9'));var sox=require(_0xb791('0xa'));var csv=require(_0xb791('0xb'));var ejs=require(_0xb791('0xc'));var fs=require('fs');var fs_extra=require(_0xb791('0xd'));var _=require(_0xb791('0xe'));var squel=require(_0xb791('0xf'));var crypto=require(_0xb791('0x10'));var jsforce=require(_0xb791('0x11'));var deskjs=require(_0xb791('0x12'));var toCsv=require(_0xb791('0xb'));var querystring=require(_0xb791('0x13'));var Papa=require(_0xb791('0x14'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb791('0x15'));var as=require(_0xb791('0x16'));var hardwareService=require(_0xb791('0x17'));var logger=require(_0xb791('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xb791('0x19'));var licenseUtil=require(_0xb791('0x1a'));var db=require(_0xb791('0x1b'))['db'];function respondWithStatusCode(_0x2e12b3,_0x5a32da){_0x5a32da=_0x5a32da||0xcc;return function(_0x544302){if(_0x544302){return _0x2e12b3[_0xb791('0x1c')](_0x5a32da);}return _0x2e12b3['status'](_0x5a32da)[_0xb791('0x1d')]();};}function respondWithResult(_0x16f654,_0x524bd0){_0x524bd0=_0x524bd0||0xc8;return function(_0x21b8eb){if(_0x21b8eb){return _0x16f654[_0xb791('0x1e')](_0x524bd0)[_0xb791('0x1f')](_0x21b8eb);}};}function respondWithFilteredResult(_0x5b4a2b,_0x273196){return function(_0x2c88b6){if(_0x2c88b6){var _0x345abc=typeof _0x273196[_0xb791('0x20')]===_0xb791('0x21')&&typeof _0x273196[_0xb791('0x22')]===_0xb791('0x21');var _0x265f11=_0x2c88b6[_0xb791('0x23')];var _0x133fca=_0x345abc?0x0:_0x273196['offset'];var _0x4ff576=_0x345abc?_0x2c88b6['count']:_0x273196[_0xb791('0x20')]+_0x273196[_0xb791('0x22')];var _0x57251e;if(_0x4ff576>=_0x265f11){_0x4ff576=_0x265f11;_0x57251e=0xc8;}else{_0x57251e=0xce;}_0x5b4a2b['status'](_0x57251e);return _0x5b4a2b[_0xb791('0x24')]('Content-Range',_0x133fca+'-'+_0x4ff576+'/'+_0x265f11)[_0xb791('0x1f')](_0x2c88b6);}return null;};}function patchUpdates(_0x54243b){return function(_0xcbd52){try{jsonpatch['apply'](_0xcbd52,_0x54243b,!![]);}catch(_0x9daa00){return BPromise[_0xb791('0x25')](_0x9daa00);}return _0xcbd52[_0xb791('0x26')]();};}function saveUpdates(_0x3b98c1,_0x5a667b){return function(_0x37ff32){if(_0x37ff32){return _0x37ff32['update'](_0x3b98c1)[_0xb791('0x27')](function(_0x40317f){return _0x40317f;});}return null;};}function removeEntity(_0x57ba30,_0x2f49aa){return function(_0x466251){if(_0x466251){return _0x466251[_0xb791('0x28')]()[_0xb791('0x27')](function(){_0x57ba30[_0xb791('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x21d9b9,_0x14c2c1){return function(_0x388a55){if(!_0x388a55){_0x21d9b9[_0xb791('0x1c')](0x194);}return _0x388a55;};}function handleError(_0x40970c,_0x41fb7b){_0x41fb7b=_0x41fb7b||0x1f4;return function(_0x16d987){logger[_0xb791('0x29')](_0x16d987[_0xb791('0x2a')]);if(_0x16d987[_0xb791('0x2b')]){delete _0x16d987[_0xb791('0x2b')];}_0x40970c[_0xb791('0x1e')](_0x41fb7b)[_0xb791('0x2c')](_0x16d987);};}exports[_0xb791('0x2d')]=function(_0x33c6be,_0x5cfb5b){var _0x1d15cc={},_0x37d252={},_0x712d8f={'count':0x0,'rows':[]};var _0x45b732=_['map'](db[_0xb791('0x2e')][_0xb791('0x2f')],function(_0xc38285){return{'name':_0xc38285[_0xb791('0x30')],'type':_0xc38285[_0xb791('0x31')]['key']};});_0x37d252[_0xb791('0x32')]=_[_0xb791('0x33')](_0x45b732,_0xb791('0x2b'));_0x37d252[_0xb791('0x34')]=_['keys'](_0x33c6be['query']);_0x37d252[_0xb791('0x35')]=_['intersection'](_0x37d252['model'],_0x37d252[_0xb791('0x34')]);_0x1d15cc['attributes']=_['intersection'](_0x37d252['model'],qs[_0xb791('0x36')](_0x33c6be[_0xb791('0x34')][_0xb791('0x36')]));_0x1d15cc['attributes']=_0x1d15cc[_0xb791('0x37')][_0xb791('0x38')]?_0x1d15cc[_0xb791('0x37')]:_0x37d252[_0xb791('0x32')];if(!_0x33c6be[_0xb791('0x34')]['hasOwnProperty'](_0xb791('0x39'))){_0x1d15cc[_0xb791('0x22')]=qs[_0xb791('0x22')](_0x33c6be['query'][_0xb791('0x22')]);_0x1d15cc[_0xb791('0x20')]=qs['offset'](_0x33c6be[_0xb791('0x34')][_0xb791('0x20')]);}_0x1d15cc[_0xb791('0x3a')]=qs[_0xb791('0x3b')](_0x33c6be[_0xb791('0x34')][_0xb791('0x3b')]);_0x1d15cc[_0xb791('0x3c')]=qs['filters'](_[_0xb791('0x3d')](_0x33c6be[_0xb791('0x34')],_0x37d252[_0xb791('0x35')]),_0x45b732);if(_0x33c6be[_0xb791('0x34')][_0xb791('0x3e')]){_0x1d15cc[_0xb791('0x3c')]=_['merge'](_0x1d15cc[_0xb791('0x3c')],{'$or':_[_0xb791('0x33')](_0x45b732,function(_0x5485f1){if(_0x5485f1['type']!==_0xb791('0x3f')){var _0x5c5e35={};_0x5c5e35[_0x5485f1[_0xb791('0x2b')]]={'$like':'%'+_0x33c6be[_0xb791('0x34')][_0xb791('0x3e')]+'%'};return _0x5c5e35;}})});}_0x1d15cc=_[_0xb791('0x40')]({},_0x1d15cc,_0x33c6be[_0xb791('0x41')]);var _0x4c366c={'where':_0x1d15cc[_0xb791('0x3c')]};return db[_0xb791('0x2e')][_0xb791('0x23')](_0x4c366c)[_0xb791('0x27')](function(_0x4ab4bc){_0x712d8f[_0xb791('0x23')]=_0x4ab4bc;if(_0x33c6be[_0xb791('0x34')][_0xb791('0x42')]){_0x1d15cc[_0xb791('0x43')]=[{'all':!![]}];}return db[_0xb791('0x2e')][_0xb791('0x44')](_0x1d15cc);})[_0xb791('0x27')](function(_0xda3946){_0x712d8f[_0xb791('0x45')]=_0xda3946;return _0x712d8f;})[_0xb791('0x27')](respondWithFilteredResult(_0x5cfb5b,_0x1d15cc))[_0xb791('0x46')](handleError(_0x5cfb5b,null));};exports[_0xb791('0x47')]=function(_0x297957,_0x45080e){var _0x42d601={'raw':![],'where':{'id':_0x297957[_0xb791('0x48')]['id']}},_0x1b6209={};_0x1b6209['model']=_[_0xb791('0x49')](db[_0xb791('0x2e')]['rawAttributes']);_0x1b6209[_0xb791('0x34')]=_[_0xb791('0x49')](_0x297957[_0xb791('0x34')]);_0x1b6209['filters']=_['intersection'](_0x1b6209[_0xb791('0x32')],_0x1b6209['query']);_0x42d601[_0xb791('0x37')]=_[_0xb791('0x4a')](_0x1b6209[_0xb791('0x32')],qs[_0xb791('0x36')](_0x297957[_0xb791('0x34')][_0xb791('0x36')]));_0x42d601[_0xb791('0x37')]=_0x42d601[_0xb791('0x37')][_0xb791('0x38')]?_0x42d601[_0xb791('0x37')]:_0x1b6209[_0xb791('0x32')];if(_0x297957[_0xb791('0x34')][_0xb791('0x42')]){_0x42d601[_0xb791('0x43')]=[{'all':!![]}];}_0x42d601=_[_0xb791('0x40')]({},_0x42d601,_0x297957[_0xb791('0x41')]);return db['SalesforceConfiguration']['find'](_0x42d601)[_0xb791('0x27')](handleEntityNotFound(_0x45080e,null))[_0xb791('0x27')](respondWithResult(_0x45080e,null))[_0xb791('0x46')](handleError(_0x45080e,null));};exports[_0xb791('0x4b')]=function(_0xab4ea8,_0xfd1edf){return db[_0xb791('0x2e')][_0xb791('0x4b')](_0xab4ea8['body'],{})[_0xb791('0x27')](respondWithResult(_0xfd1edf,0xc9))[_0xb791('0x46')](handleError(_0xfd1edf,null));};exports[_0xb791('0x4c')]=function(_0x245914,_0x2cdf6f){if(_0x245914[_0xb791('0x4d')]['id']){delete _0x245914['body']['id'];}return db[_0xb791('0x2e')]['find']({'where':{'id':_0x245914[_0xb791('0x48')]['id']}})[_0xb791('0x27')](handleEntityNotFound(_0x2cdf6f,null))['then'](saveUpdates(_0x245914[_0xb791('0x4d')],null))[_0xb791('0x27')](respondWithResult(_0x2cdf6f,null))[_0xb791('0x46')](handleError(_0x2cdf6f,null));};exports[_0xb791('0x28')]=function(_0x59b7d7,_0x55ca4b){return db[_0xb791('0x2e')]['find']({'where':{'id':_0x59b7d7['params']['id']}})[_0xb791('0x27')](handleEntityNotFound(_0x55ca4b,null))['then'](removeEntity(_0x55ca4b,null))[_0xb791('0x46')](handleError(_0x55ca4b,null));};exports[_0xb791('0x4e')]=function(_0x5830a6,_0x42fb89,_0x1ff207){var _0x40bc3f={};var _0x4983f8={};var _0x1b4dfc;var _0x152f56;return db['SalesforceConfiguration'][_0xb791('0x4f')]({'where':{'id':_0x5830a6[_0xb791('0x48')]['id']}})[_0xb791('0x27')](handleEntityNotFound(_0x42fb89,null))['then'](function(_0x443aa6){if(_0x443aa6){_0x1b4dfc=_0x443aa6;_0x4983f8['model']=_[_0xb791('0x49')](db[_0xb791('0x50')][_0xb791('0x2f')]);_0x4983f8[_0xb791('0x34')]=_['keys'](_0x5830a6[_0xb791('0x34')]);_0x4983f8['filters']=_[_0xb791('0x4a')](_0x4983f8['model'],_0x4983f8[_0xb791('0x34')]);_0x40bc3f[_0xb791('0x37')]=_['intersection'](_0x4983f8['model'],qs['fields'](_0x5830a6['query'][_0xb791('0x36')]));_0x40bc3f[_0xb791('0x37')]=_0x40bc3f[_0xb791('0x37')][_0xb791('0x38')]?_0x40bc3f[_0xb791('0x37')]:_0x4983f8['model'];_0x40bc3f[_0xb791('0x3a')]=qs['sort'](_0x5830a6[_0xb791('0x34')][_0xb791('0x3b')]);_0x40bc3f['where']=qs[_0xb791('0x35')](_['pick'](_0x5830a6[_0xb791('0x34')],_0x4983f8[_0xb791('0x35')]));if(_0x5830a6[_0xb791('0x34')][_0xb791('0x3e')]){_0x40bc3f[_0xb791('0x3c')]=_[_0xb791('0x40')](_0x40bc3f['where'],{'$or':_[_0xb791('0x33')](_0x40bc3f[_0xb791('0x37')],function(_0x516d5c){var _0x2748e7={};_0x2748e7[_0x516d5c]={'$like':'%'+_0x5830a6['query']['filter']+'%'};return _0x2748e7;})});}_0x40bc3f=_[_0xb791('0x40')]({},_0x40bc3f,_0x5830a6[_0xb791('0x41')]);return _0x1b4dfc[_0xb791('0x4e')](_0x40bc3f);}})[_0xb791('0x27')](function(_0x43c562){if(_0x43c562){_0x152f56=_0x43c562['length'];if(!_0x5830a6[_0xb791('0x34')]['hasOwnProperty'](_0xb791('0x39'))){_0x40bc3f[_0xb791('0x22')]=qs[_0xb791('0x22')](_0x5830a6[_0xb791('0x34')]['limit']);_0x40bc3f[_0xb791('0x20')]=qs[_0xb791('0x20')](_0x5830a6[_0xb791('0x34')]['offset']);}return _0x1b4dfc['getFields'](_0x40bc3f);}})[_0xb791('0x27')](function(_0xcfeee7){if(_0xcfeee7){return _0xcfeee7?{'count':_0x152f56,'rows':_0xcfeee7}:null;}})['then'](respondWithResult(_0x42fb89,null))['catch'](handleError(_0x42fb89,null));};exports[_0xb791('0x51')]=function(_0x4e89ab,_0x4d06f8,_0x9611e9){var _0x27ba71={};var _0x55b717={};var _0xb75afd;var _0x19f4ae;return db[_0xb791('0x2e')][_0xb791('0x4f')]({'where':{'id':_0x4e89ab[_0xb791('0x48')]['id']}})['then'](handleEntityNotFound(_0x4d06f8,null))[_0xb791('0x27')](function(_0xb9acc7){if(_0xb9acc7){_0xb75afd=_0xb9acc7;_0x55b717['model']=_['keys'](db[_0xb791('0x50')][_0xb791('0x2f')]);_0x55b717['query']=_['keys'](_0x4e89ab[_0xb791('0x34')]);_0x55b717[_0xb791('0x35')]=_[_0xb791('0x4a')](_0x55b717[_0xb791('0x32')],_0x55b717[_0xb791('0x34')]);_0x27ba71[_0xb791('0x37')]=_[_0xb791('0x4a')](_0x55b717[_0xb791('0x32')],qs[_0xb791('0x36')](_0x4e89ab['query'][_0xb791('0x36')]));_0x27ba71[_0xb791('0x37')]=_0x27ba71[_0xb791('0x37')][_0xb791('0x38')]?_0x27ba71[_0xb791('0x37')]:_0x55b717[_0xb791('0x32')];_0x27ba71[_0xb791('0x3a')]=qs[_0xb791('0x3b')](_0x4e89ab[_0xb791('0x34')]['sort']);_0x27ba71[_0xb791('0x3c')]=qs[_0xb791('0x35')](_[_0xb791('0x3d')](_0x4e89ab['query'],_0x55b717[_0xb791('0x35')]));if(_0x4e89ab[_0xb791('0x34')][_0xb791('0x3e')]){_0x27ba71[_0xb791('0x3c')]=_['merge'](_0x27ba71[_0xb791('0x3c')],{'$or':_[_0xb791('0x33')](_0x27ba71[_0xb791('0x37')],function(_0x2f14e7){var _0xb8740b={};_0xb8740b[_0x2f14e7]={'$like':'%'+_0x4e89ab[_0xb791('0x34')][_0xb791('0x3e')]+'%'};return _0xb8740b;})});}_0x27ba71=_[_0xb791('0x40')]({},_0x27ba71,_0x4e89ab[_0xb791('0x41')]);return _0xb75afd['getSubjects'](_0x27ba71);}})['then'](function(_0x21566c){if(_0x21566c){_0x19f4ae=_0x21566c[_0xb791('0x38')];if(!_0x4e89ab[_0xb791('0x34')]['hasOwnProperty'](_0xb791('0x39'))){_0x27ba71[_0xb791('0x22')]=qs[_0xb791('0x22')](_0x4e89ab[_0xb791('0x34')][_0xb791('0x22')]);_0x27ba71[_0xb791('0x20')]=qs[_0xb791('0x20')](_0x4e89ab['query']['offset']);}return _0xb75afd[_0xb791('0x51')](_0x27ba71);}})[_0xb791('0x27')](function(_0x5ac147){if(_0x5ac147){return _0x5ac147?{'count':_0x19f4ae,'rows':_0x5ac147}:null;}})[_0xb791('0x27')](respondWithResult(_0x4d06f8,null))[_0xb791('0x46')](handleError(_0x4d06f8,null));};exports['getDescriptions']=function(_0x37335d,_0x3419f6,_0x24908c){var _0x2f1832={};var _0x4d59e6={};var _0x17aac5;var _0x250b99;return db[_0xb791('0x2e')]['findOne']({'where':{'id':_0x37335d[_0xb791('0x48')]['id']}})[_0xb791('0x27')](handleEntityNotFound(_0x3419f6,null))[_0xb791('0x27')](function(_0x10c639){if(_0x10c639){_0x17aac5=_0x10c639;_0x4d59e6['model']=_['keys'](db[_0xb791('0x50')][_0xb791('0x2f')]);_0x4d59e6[_0xb791('0x34')]=_['keys'](_0x37335d[_0xb791('0x34')]);_0x4d59e6[_0xb791('0x35')]=_[_0xb791('0x4a')](_0x4d59e6['model'],_0x4d59e6[_0xb791('0x34')]);_0x2f1832['attributes']=_[_0xb791('0x4a')](_0x4d59e6[_0xb791('0x32')],qs[_0xb791('0x36')](_0x37335d['query'][_0xb791('0x36')]));_0x2f1832[_0xb791('0x37')]=_0x2f1832['attributes']['length']?_0x2f1832[_0xb791('0x37')]:_0x4d59e6['model'];_0x2f1832[_0xb791('0x3a')]=qs['sort'](_0x37335d['query'][_0xb791('0x3b')]);_0x2f1832[_0xb791('0x3c')]=qs['filters'](_[_0xb791('0x3d')](_0x37335d[_0xb791('0x34')],_0x4d59e6[_0xb791('0x35')]));if(_0x37335d['query'][_0xb791('0x3e')]){_0x2f1832[_0xb791('0x3c')]=_[_0xb791('0x40')](_0x2f1832[_0xb791('0x3c')],{'$or':_[_0xb791('0x33')](_0x2f1832[_0xb791('0x37')],function(_0x6f68b0){var _0x2803e2={};_0x2803e2[_0x6f68b0]={'$like':'%'+_0x37335d[_0xb791('0x34')]['filter']+'%'};return _0x2803e2;})});}_0x2f1832=_[_0xb791('0x40')]({},_0x2f1832,_0x37335d['options']);return _0x17aac5[_0xb791('0x52')](_0x2f1832);}})[_0xb791('0x27')](function(_0x267551){if(_0x267551){_0x250b99=_0x267551[_0xb791('0x38')];if(!_0x37335d[_0xb791('0x34')]['hasOwnProperty'](_0xb791('0x39'))){_0x2f1832[_0xb791('0x22')]=qs['limit'](_0x37335d[_0xb791('0x34')]['limit']);_0x2f1832[_0xb791('0x20')]=qs['offset'](_0x37335d['query'][_0xb791('0x20')]);}return _0x17aac5[_0xb791('0x52')](_0x2f1832);}})[_0xb791('0x27')](function(_0x3efff0){if(_0x3efff0){return _0x3efff0?{'count':_0x250b99,'rows':_0x3efff0}:null;}})[_0xb791('0x27')](respondWithResult(_0x3419f6,null))[_0xb791('0x46')](handleError(_0x3419f6,null));};
\ No newline at end of file
+var _0x16a1=['querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','keys','query','attributes','fields','nolimit','limit','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','params','intersection','length','find','catch','create','body','findOne','SalesforceField','getFields','getSubjects','hasOwnProperty','getDescriptions','order','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','desk.js'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x16a1,0xeb));var _0x116a=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x16a1[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x116a('0x0'));var rimraf=require(_0x116a('0x1'));var zipdir=require(_0x116a('0x2'));var jsonpatch=require(_0x116a('0x3'));var rp=require('request-promise');var moment=require(_0x116a('0x4'));var BPromise=require(_0x116a('0x5'));var Mustache=require(_0x116a('0x6'));var util=require('util');var path=require(_0x116a('0x7'));var sox=require(_0x116a('0x8'));var csv=require(_0x116a('0x9'));var ejs=require(_0x116a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x116a('0xb'));var crypto=require(_0x116a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x116a('0xd'));var toCsv=require(_0x116a('0x9'));var querystring=require(_0x116a('0xe'));var Papa=require(_0x116a('0xf'));var Redis=require(_0x116a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x116a('0x11'));var as=require(_0x116a('0x12'));var hardwareService=require(_0x116a('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x116a('0x14'));var config=require(_0x116a('0x15'));var licenseUtil=require(_0x116a('0x16'));var db=require(_0x116a('0x17'))['db'];function respondWithStatusCode(_0x11cc4c,_0x441c39){_0x441c39=_0x441c39||0xcc;return function(_0x11b1f8){if(_0x11b1f8){return _0x11cc4c[_0x116a('0x18')](_0x441c39);}return _0x11cc4c[_0x116a('0x19')](_0x441c39)[_0x116a('0x1a')]();};}function respondWithResult(_0x131947,_0x410de8){_0x410de8=_0x410de8||0xc8;return function(_0x1cd54c){if(_0x1cd54c){return _0x131947[_0x116a('0x19')](_0x410de8)['json'](_0x1cd54c);}};}function respondWithFilteredResult(_0x161fd5,_0x190b1b){return function(_0x89b776){if(_0x89b776){var _0xcf15c0=typeof _0x190b1b[_0x116a('0x1b')]==='undefined'&&typeof _0x190b1b['limit']===_0x116a('0x1c');var _0x2c3ddc=_0x89b776['count'];var _0x58122b=_0xcf15c0?0x0:_0x190b1b[_0x116a('0x1b')];var _0x55a048=_0xcf15c0?_0x89b776[_0x116a('0x1d')]:_0x190b1b[_0x116a('0x1b')]+_0x190b1b['limit'];var _0x3a0683;if(_0x55a048>=_0x2c3ddc){_0x55a048=_0x2c3ddc;_0x3a0683=0xc8;}else{_0x3a0683=0xce;}_0x161fd5['status'](_0x3a0683);return _0x161fd5[_0x116a('0x1e')](_0x116a('0x1f'),_0x58122b+'-'+_0x55a048+'/'+_0x2c3ddc)[_0x116a('0x20')](_0x89b776);}return null;};}function patchUpdates(_0x257880){return function(_0x227f5c){try{jsonpatch[_0x116a('0x21')](_0x227f5c,_0x257880,!![]);}catch(_0x1b7494){return BPromise[_0x116a('0x22')](_0x1b7494);}return _0x227f5c[_0x116a('0x23')]();};}function saveUpdates(_0x30be37,_0x57b2fa){return function(_0x489b56){if(_0x489b56){return _0x489b56[_0x116a('0x24')](_0x30be37)[_0x116a('0x25')](function(_0x3d6524){return _0x3d6524;});}return null;};}function removeEntity(_0x47e1fb,_0x5272d7){return function(_0x2616f4){if(_0x2616f4){return _0x2616f4[_0x116a('0x26')]()[_0x116a('0x25')](function(){_0x47e1fb[_0x116a('0x19')](0xcc)[_0x116a('0x1a')]();});}};}function handleEntityNotFound(_0xec9866,_0x7a95d0){return function(_0x400acf){if(!_0x400acf){_0xec9866[_0x116a('0x18')](0x194);}return _0x400acf;};}function handleError(_0x2fff80,_0x2f4069){_0x2f4069=_0x2f4069||0x1f4;return function(_0x2ce237){logger[_0x116a('0x27')](_0x2ce237[_0x116a('0x28')]);if(_0x2ce237[_0x116a('0x29')]){delete _0x2ce237[_0x116a('0x29')];}_0x2fff80[_0x116a('0x19')](_0x2f4069)[_0x116a('0x2a')](_0x2ce237);};}exports['index']=function(_0x2a7ccc,_0x1eac61){var _0x20eb77={},_0x293e8f={},_0x5b1638={'count':0x0,'rows':[]};var _0x1bfde8=_[_0x116a('0x2b')](db[_0x116a('0x2c')][_0x116a('0x2d')],function(_0x3479bc){return{'name':_0x3479bc[_0x116a('0x2e')],'type':_0x3479bc[_0x116a('0x2f')][_0x116a('0x30')]};});_0x293e8f[_0x116a('0x31')]=_[_0x116a('0x2b')](_0x1bfde8,_0x116a('0x29'));_0x293e8f['query']=_[_0x116a('0x32')](_0x2a7ccc[_0x116a('0x33')]);_0x293e8f['filters']=_['intersection'](_0x293e8f[_0x116a('0x31')],_0x293e8f[_0x116a('0x33')]);_0x20eb77[_0x116a('0x34')]=_['intersection'](_0x293e8f[_0x116a('0x31')],qs[_0x116a('0x35')](_0x2a7ccc[_0x116a('0x33')][_0x116a('0x35')]));_0x20eb77[_0x116a('0x34')]=_0x20eb77[_0x116a('0x34')]['length']?_0x20eb77[_0x116a('0x34')]:_0x293e8f[_0x116a('0x31')];if(!_0x2a7ccc['query']['hasOwnProperty'](_0x116a('0x36'))){_0x20eb77[_0x116a('0x37')]=qs[_0x116a('0x37')](_0x2a7ccc[_0x116a('0x33')]['limit']);_0x20eb77[_0x116a('0x1b')]=qs['offset'](_0x2a7ccc['query'][_0x116a('0x1b')]);}_0x20eb77['order']=qs[_0x116a('0x38')](_0x2a7ccc[_0x116a('0x33')]['sort']);_0x20eb77['where']=qs[_0x116a('0x39')](_[_0x116a('0x3a')](_0x2a7ccc['query'],_0x293e8f[_0x116a('0x39')]),_0x1bfde8);if(_0x2a7ccc[_0x116a('0x33')][_0x116a('0x3b')]){_0x20eb77['where']=_[_0x116a('0x3c')](_0x20eb77[_0x116a('0x3d')],{'$or':_[_0x116a('0x2b')](_0x1bfde8,function(_0x29a04a){if(_0x29a04a[_0x116a('0x2f')]!==_0x116a('0x3e')){var _0x53d03c={};_0x53d03c[_0x29a04a[_0x116a('0x29')]]={'$like':'%'+_0x2a7ccc[_0x116a('0x33')][_0x116a('0x3b')]+'%'};return _0x53d03c;}})});}_0x20eb77=_[_0x116a('0x3c')]({},_0x20eb77,_0x2a7ccc[_0x116a('0x3f')]);var _0x5ad9ec={'where':_0x20eb77[_0x116a('0x3d')]};return db['SalesforceConfiguration'][_0x116a('0x1d')](_0x5ad9ec)[_0x116a('0x25')](function(_0x5aca71){_0x5b1638['count']=_0x5aca71;if(_0x2a7ccc[_0x116a('0x33')][_0x116a('0x40')]){_0x20eb77[_0x116a('0x41')]=[{'all':!![]}];}return db[_0x116a('0x2c')][_0x116a('0x42')](_0x20eb77);})[_0x116a('0x25')](function(_0x52c01c){_0x5b1638[_0x116a('0x43')]=_0x52c01c;return _0x5b1638;})[_0x116a('0x25')](respondWithFilteredResult(_0x1eac61,_0x20eb77))['catch'](handleError(_0x1eac61,null));};exports[_0x116a('0x44')]=function(_0xd5fb41,_0x2cf6a5){var _0x4a09d0={'raw':![],'where':{'id':_0xd5fb41[_0x116a('0x45')]['id']}},_0x4eee5b={};_0x4eee5b['model']=_['keys'](db[_0x116a('0x2c')][_0x116a('0x2d')]);_0x4eee5b[_0x116a('0x33')]=_[_0x116a('0x32')](_0xd5fb41['query']);_0x4eee5b[_0x116a('0x39')]=_[_0x116a('0x46')](_0x4eee5b[_0x116a('0x31')],_0x4eee5b[_0x116a('0x33')]);_0x4a09d0[_0x116a('0x34')]=_[_0x116a('0x46')](_0x4eee5b[_0x116a('0x31')],qs['fields'](_0xd5fb41['query'][_0x116a('0x35')]));_0x4a09d0[_0x116a('0x34')]=_0x4a09d0[_0x116a('0x34')][_0x116a('0x47')]?_0x4a09d0[_0x116a('0x34')]:_0x4eee5b[_0x116a('0x31')];if(_0xd5fb41[_0x116a('0x33')][_0x116a('0x40')]){_0x4a09d0[_0x116a('0x41')]=[{'all':!![]}];}_0x4a09d0=_['merge']({},_0x4a09d0,_0xd5fb41[_0x116a('0x3f')]);return db[_0x116a('0x2c')][_0x116a('0x48')](_0x4a09d0)['then'](handleEntityNotFound(_0x2cf6a5,null))[_0x116a('0x25')](respondWithResult(_0x2cf6a5,null))[_0x116a('0x49')](handleError(_0x2cf6a5,null));};exports[_0x116a('0x4a')]=function(_0x38b1fb,_0x2a0b45){return db[_0x116a('0x2c')][_0x116a('0x4a')](_0x38b1fb[_0x116a('0x4b')],{})[_0x116a('0x25')](respondWithResult(_0x2a0b45,0xc9))[_0x116a('0x49')](handleError(_0x2a0b45,null));};exports[_0x116a('0x24')]=function(_0x9d478,_0x3557c9){if(_0x9d478['body']['id']){delete _0x9d478[_0x116a('0x4b')]['id'];}return db[_0x116a('0x2c')][_0x116a('0x48')]({'where':{'id':_0x9d478['params']['id']}})[_0x116a('0x25')](handleEntityNotFound(_0x3557c9,null))[_0x116a('0x25')](saveUpdates(_0x9d478[_0x116a('0x4b')],null))['then'](respondWithResult(_0x3557c9,null))[_0x116a('0x49')](handleError(_0x3557c9,null));};exports[_0x116a('0x26')]=function(_0xbac8a1,_0x5477d2){return db[_0x116a('0x2c')][_0x116a('0x48')]({'where':{'id':_0xbac8a1['params']['id']}})[_0x116a('0x25')](handleEntityNotFound(_0x5477d2,null))[_0x116a('0x25')](removeEntity(_0x5477d2,null))[_0x116a('0x49')](handleError(_0x5477d2,null));};exports['getFields']=function(_0x4369c7,_0x4fabc1,_0x24e8ff){var _0x50116f={};var _0x260dfd={};var _0x4ce1d3;var _0x3e6f5c;return db['SalesforceConfiguration'][_0x116a('0x4c')]({'where':{'id':_0x4369c7[_0x116a('0x45')]['id']}})[_0x116a('0x25')](handleEntityNotFound(_0x4fabc1,null))[_0x116a('0x25')](function(_0x2a93bb){if(_0x2a93bb){_0x4ce1d3=_0x2a93bb;_0x260dfd[_0x116a('0x31')]=_[_0x116a('0x32')](db[_0x116a('0x4d')][_0x116a('0x2d')]);_0x260dfd[_0x116a('0x33')]=_[_0x116a('0x32')](_0x4369c7[_0x116a('0x33')]);_0x260dfd[_0x116a('0x39')]=_[_0x116a('0x46')](_0x260dfd[_0x116a('0x31')],_0x260dfd[_0x116a('0x33')]);_0x50116f['attributes']=_[_0x116a('0x46')](_0x260dfd[_0x116a('0x31')],qs[_0x116a('0x35')](_0x4369c7[_0x116a('0x33')][_0x116a('0x35')]));_0x50116f[_0x116a('0x34')]=_0x50116f[_0x116a('0x34')][_0x116a('0x47')]?_0x50116f[_0x116a('0x34')]:_0x260dfd['model'];_0x50116f['order']=qs['sort'](_0x4369c7['query'][_0x116a('0x38')]);_0x50116f['where']=qs[_0x116a('0x39')](_['pick'](_0x4369c7[_0x116a('0x33')],_0x260dfd[_0x116a('0x39')]));if(_0x4369c7['query']['filter']){_0x50116f[_0x116a('0x3d')]=_[_0x116a('0x3c')](_0x50116f['where'],{'$or':_[_0x116a('0x2b')](_0x50116f['attributes'],function(_0x574a87){var _0x38959f={};_0x38959f[_0x574a87]={'$like':'%'+_0x4369c7[_0x116a('0x33')][_0x116a('0x3b')]+'%'};return _0x38959f;})});}_0x50116f=_['merge']({},_0x50116f,_0x4369c7['options']);return _0x4ce1d3[_0x116a('0x4e')](_0x50116f);}})[_0x116a('0x25')](function(_0x396049){if(_0x396049){_0x3e6f5c=_0x396049[_0x116a('0x47')];if(!_0x4369c7[_0x116a('0x33')]['hasOwnProperty'](_0x116a('0x36'))){_0x50116f['limit']=qs[_0x116a('0x37')](_0x4369c7[_0x116a('0x33')][_0x116a('0x37')]);_0x50116f[_0x116a('0x1b')]=qs[_0x116a('0x1b')](_0x4369c7[_0x116a('0x33')]['offset']);}return _0x4ce1d3[_0x116a('0x4e')](_0x50116f);}})[_0x116a('0x25')](function(_0x4ef4e5){if(_0x4ef4e5){return _0x4ef4e5?{'count':_0x3e6f5c,'rows':_0x4ef4e5}:null;}})[_0x116a('0x25')](respondWithResult(_0x4fabc1,null))[_0x116a('0x49')](handleError(_0x4fabc1,null));};exports[_0x116a('0x4f')]=function(_0x15e7e0,_0x2a41c0,_0x38df3b){var _0x1f2807={};var _0x9dd78={};var _0x155479;var _0x1a6fca;return db[_0x116a('0x2c')][_0x116a('0x4c')]({'where':{'id':_0x15e7e0[_0x116a('0x45')]['id']}})[_0x116a('0x25')](handleEntityNotFound(_0x2a41c0,null))[_0x116a('0x25')](function(_0x5b494b){if(_0x5b494b){_0x155479=_0x5b494b;_0x9dd78[_0x116a('0x31')]=_[_0x116a('0x32')](db['SalesforceField'][_0x116a('0x2d')]);_0x9dd78[_0x116a('0x33')]=_['keys'](_0x15e7e0['query']);_0x9dd78['filters']=_[_0x116a('0x46')](_0x9dd78[_0x116a('0x31')],_0x9dd78[_0x116a('0x33')]);_0x1f2807[_0x116a('0x34')]=_[_0x116a('0x46')](_0x9dd78[_0x116a('0x31')],qs[_0x116a('0x35')](_0x15e7e0[_0x116a('0x33')]['fields']));_0x1f2807[_0x116a('0x34')]=_0x1f2807['attributes'][_0x116a('0x47')]?_0x1f2807['attributes']:_0x9dd78[_0x116a('0x31')];_0x1f2807['order']=qs[_0x116a('0x38')](_0x15e7e0[_0x116a('0x33')][_0x116a('0x38')]);_0x1f2807[_0x116a('0x3d')]=qs[_0x116a('0x39')](_[_0x116a('0x3a')](_0x15e7e0[_0x116a('0x33')],_0x9dd78['filters']));if(_0x15e7e0[_0x116a('0x33')][_0x116a('0x3b')]){_0x1f2807['where']=_['merge'](_0x1f2807[_0x116a('0x3d')],{'$or':_[_0x116a('0x2b')](_0x1f2807[_0x116a('0x34')],function(_0x3cf65d){var _0x4213c3={};_0x4213c3[_0x3cf65d]={'$like':'%'+_0x15e7e0[_0x116a('0x33')]['filter']+'%'};return _0x4213c3;})});}_0x1f2807=_[_0x116a('0x3c')]({},_0x1f2807,_0x15e7e0['options']);return _0x155479['getSubjects'](_0x1f2807);}})[_0x116a('0x25')](function(_0xa189d3){if(_0xa189d3){_0x1a6fca=_0xa189d3[_0x116a('0x47')];if(!_0x15e7e0[_0x116a('0x33')][_0x116a('0x50')](_0x116a('0x36'))){_0x1f2807[_0x116a('0x37')]=qs[_0x116a('0x37')](_0x15e7e0['query'][_0x116a('0x37')]);_0x1f2807[_0x116a('0x1b')]=qs[_0x116a('0x1b')](_0x15e7e0[_0x116a('0x33')]['offset']);}return _0x155479[_0x116a('0x4f')](_0x1f2807);}})[_0x116a('0x25')](function(_0x34668f){if(_0x34668f){return _0x34668f?{'count':_0x1a6fca,'rows':_0x34668f}:null;}})[_0x116a('0x25')](respondWithResult(_0x2a41c0,null))[_0x116a('0x49')](handleError(_0x2a41c0,null));};exports[_0x116a('0x51')]=function(_0x16a09e,_0xdcd70a,_0x4dbee6){var _0x4c4c7f={};var _0x537c05={};var _0x1ceb26;var _0x40dcce;return db[_0x116a('0x2c')][_0x116a('0x4c')]({'where':{'id':_0x16a09e[_0x116a('0x45')]['id']}})[_0x116a('0x25')](handleEntityNotFound(_0xdcd70a,null))[_0x116a('0x25')](function(_0x4a2a27){if(_0x4a2a27){_0x1ceb26=_0x4a2a27;_0x537c05['model']=_[_0x116a('0x32')](db[_0x116a('0x4d')][_0x116a('0x2d')]);_0x537c05[_0x116a('0x33')]=_[_0x116a('0x32')](_0x16a09e['query']);_0x537c05[_0x116a('0x39')]=_[_0x116a('0x46')](_0x537c05[_0x116a('0x31')],_0x537c05[_0x116a('0x33')]);_0x4c4c7f[_0x116a('0x34')]=_['intersection'](_0x537c05[_0x116a('0x31')],qs['fields'](_0x16a09e[_0x116a('0x33')]['fields']));_0x4c4c7f[_0x116a('0x34')]=_0x4c4c7f['attributes'][_0x116a('0x47')]?_0x4c4c7f['attributes']:_0x537c05[_0x116a('0x31')];_0x4c4c7f[_0x116a('0x52')]=qs[_0x116a('0x38')](_0x16a09e[_0x116a('0x33')]['sort']);_0x4c4c7f[_0x116a('0x3d')]=qs[_0x116a('0x39')](_[_0x116a('0x3a')](_0x16a09e[_0x116a('0x33')],_0x537c05[_0x116a('0x39')]));if(_0x16a09e['query'][_0x116a('0x3b')]){_0x4c4c7f[_0x116a('0x3d')]=_['merge'](_0x4c4c7f['where'],{'$or':_[_0x116a('0x2b')](_0x4c4c7f[_0x116a('0x34')],function(_0xeca5a0){var _0x39f669={};_0x39f669[_0xeca5a0]={'$like':'%'+_0x16a09e[_0x116a('0x33')][_0x116a('0x3b')]+'%'};return _0x39f669;})});}_0x4c4c7f=_['merge']({},_0x4c4c7f,_0x16a09e[_0x116a('0x3f')]);return _0x1ceb26['getDescriptions'](_0x4c4c7f);}})['then'](function(_0x28cceb){if(_0x28cceb){_0x40dcce=_0x28cceb[_0x116a('0x47')];if(!_0x16a09e[_0x116a('0x33')]['hasOwnProperty'](_0x116a('0x36'))){_0x4c4c7f['limit']=qs[_0x116a('0x37')](_0x16a09e[_0x116a('0x33')][_0x116a('0x37')]);_0x4c4c7f[_0x116a('0x1b')]=qs[_0x116a('0x1b')](_0x16a09e[_0x116a('0x33')]['offset']);}return _0x1ceb26[_0x116a('0x51')](_0x4c4c7f);}})[_0x116a('0x25')](function(_0x3c8834){if(_0x3c8834){return _0x3c8834?{'count':_0x40dcce,'rows':_0x3c8834}:null;}})[_0x116a('0x25')](respondWithResult(_0xdcd70a,null))[_0x116a('0x49')](handleError(_0xdcd70a,null));};
\ No newline at end of file
index 547c88a..2d21213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86e4=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x86e4,0x12d));var _0x486e=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0x86e4[_0x42bc91];return _0x3f5507;};'use strict';var _=require(_0x486e('0x0'));var util=require(_0x486e('0x1'));var logger=require(_0x486e('0x2'))(_0x486e('0x3'));var moment=require(_0x486e('0x4'));var BPromise=require('bluebird');var rp=require(_0x486e('0x5'));var fs=require('fs');var path=require(_0x486e('0x6'));var rimraf=require(_0x486e('0x7'));var config=require(_0x486e('0x8'));var attributes=require(_0x486e('0x9'));module[_0x486e('0xa')]=function(_0x4e295c,_0x353c62){return _0x4e295c[_0x486e('0xb')](_0x486e('0xc'),attributes,{'tableName':_0x486e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bd2=['./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x434421,_0x3fe4fc){var _0xe196e0=function(_0x427e5f){while(--_0x427e5f){_0x434421['push'](_0x434421['shift']());}};_0xe196e0(++_0x3fe4fc);}(_0x0bd2,0x7d));var _0x20bd=function(_0x874cf1,_0x2a4954){_0x874cf1=_0x874cf1-0x0;var _0x233579=_0x0bd2[_0x874cf1];return _0x233579;};'use strict';var _=require(_0x20bd('0x0'));var util=require(_0x20bd('0x1'));var logger=require(_0x20bd('0x2'))('api');var moment=require(_0x20bd('0x3'));var BPromise=require(_0x20bd('0x4'));var rp=require(_0x20bd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x20bd('0x6'));var attributes=require(_0x20bd('0x7'));module[_0x20bd('0x8')]=function(_0x4ef95f,_0x3a4904){return _0x4ef95f[_0x20bd('0x9')](_0x20bd('0xa'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 052c535..a767979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa195=['debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s'];(function(_0x52e2de,_0x4ea3b7){var _0x92f597=function(_0x348d57){while(--_0x348d57){_0x52e2de['push'](_0x52e2de['shift']());}};_0x92f597(++_0x4ea3b7);}(_0xa195,0x118));var _0x5a19=function(_0x4445d3,_0x26026d){_0x4445d3=_0x4445d3-0x0;var _0x2ce0d0=_0xa195[_0x4445d3];return _0x2ce0d0;};'use strict';var _=require(_0x5a19('0x0'));var util=require(_0x5a19('0x1'));var moment=require('moment');var BPromise=require(_0x5a19('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5a19('0x3'))['db'];var utils=require(_0x5a19('0x4'));var logger=require(_0x5a19('0x5'))(_0x5a19('0x6'));var config=require(_0x5a19('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5a19('0x8')][_0x5a19('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x54bec2,_0x2a4013,_0x18145e){return new BPromise(function(_0x30e84c,_0x588166){return client[_0x5a19('0xa')](_0x54bec2,_0x18145e)[_0x5a19('0xb')](function(_0x43870f){logger[_0x5a19('0xc')](_0x5a19('0xd'),_0x2a4013,'request\x20sent');logger[_0x5a19('0xe')](_0x5a19('0xf'),_0x2a4013,_0x5a19('0x10'),JSON[_0x5a19('0x11')](_0x43870f));if(_0x43870f['error']){if(_0x43870f[_0x5a19('0x12')]['code']===0x1f4){logger[_0x5a19('0x12')](_0x5a19('0xd'),_0x2a4013,_0x43870f['error'][_0x5a19('0x13')]);return _0x588166(_0x43870f[_0x5a19('0x12')][_0x5a19('0x13')]);}logger[_0x5a19('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2a4013,_0x43870f[_0x5a19('0x12')][_0x5a19('0x13')]);return _0x30e84c(_0x43870f[_0x5a19('0x12')][_0x5a19('0x13')]);}else{logger[_0x5a19('0xc')](_0x5a19('0xd'),_0x2a4013,_0x5a19('0x10'));_0x30e84c(_0x43870f[_0x5a19('0x14')][_0x5a19('0x13')]);}})['catch'](function(_0x2c8e08){logger[_0x5a19('0x12')](_0x5a19('0xd'),_0x2a4013,_0x2c8e08);_0x588166(_0x2c8e08);});});}
\ No newline at end of file
+var _0x5b50=['then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request'];(function(_0x1f9c09,_0x22ed0a){var _0x3b894e=function(_0x1eb36d){while(--_0x1eb36d){_0x1f9c09['push'](_0x1f9c09['shift']());}};_0x3b894e(++_0x22ed0a);}(_0x5b50,0x1d8));var _0x05b5=function(_0xca10c4,_0x1ce542){_0xca10c4=_0xca10c4-0x0;var _0x432e0f=_0x5b50[_0xca10c4];return _0x432e0f;};'use strict';var _=require(_0x05b5('0x0'));var util=require(_0x05b5('0x1'));var moment=require('moment');var BPromise=require(_0x05b5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05b5('0x3'));var db=require(_0x05b5('0x4'))['db'];var utils=require(_0x05b5('0x5'));var logger=require(_0x05b5('0x6'))('rpc');var config=require(_0x05b5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x05b5('0x8')][_0x05b5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34f9f1,_0x318fbf,_0x4c31e9){return new BPromise(function(_0x959860,_0x5448d3){return client[_0x05b5('0xa')](_0x34f9f1,_0x4c31e9)[_0x05b5('0xb')](function(_0x3148a8){logger[_0x05b5('0xc')](_0x05b5('0xd'),_0x318fbf,_0x05b5('0xe'));logger[_0x05b5('0xf')](_0x05b5('0x10'),_0x318fbf,_0x05b5('0xe'),JSON[_0x05b5('0x11')](_0x3148a8));if(_0x3148a8[_0x05b5('0x12')]){if(_0x3148a8[_0x05b5('0x12')][_0x05b5('0x13')]===0x1f4){logger[_0x05b5('0x12')](_0x05b5('0xd'),_0x318fbf,_0x3148a8[_0x05b5('0x12')][_0x05b5('0x14')]);return _0x5448d3(_0x3148a8[_0x05b5('0x12')][_0x05b5('0x14')]);}logger[_0x05b5('0x12')](_0x05b5('0xd'),_0x318fbf,_0x3148a8['error'][_0x05b5('0x14')]);return _0x959860(_0x3148a8[_0x05b5('0x12')][_0x05b5('0x14')]);}else{logger[_0x05b5('0xc')](_0x05b5('0xd'),_0x318fbf,'request\x20sent');_0x959860(_0x3148a8[_0x05b5('0x15')][_0x05b5('0x14')]);}})[_0x05b5('0x16')](function(_0x108bdb){logger[_0x05b5('0x12')](_0x05b5('0xd'),_0x318fbf,_0x108bdb);_0x5448d3(_0x108bdb);});});}
\ No newline at end of file
index e5ae06a..2d52af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc93c=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intSalesforceField.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete'];(function(_0x42c8e0,_0x1c74f0){var _0x4b2aa6=function(_0x434445){while(--_0x434445){_0x42c8e0['push'](_0x42c8e0['shift']());}};_0x4b2aa6(++_0x1c74f0);}(_0xc93c,0x1a3));var _0xcc93=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc93c[_0x4d613c];return _0x301fe3;};'use strict';var multer=require(_0xcc93('0x0'));var util=require(_0xcc93('0x1'));var path=require(_0xcc93('0x2'));var timeout=require(_0xcc93('0x3'));var express=require(_0xcc93('0x4'));var router=express[_0xcc93('0x5')]();var fs_extra=require(_0xcc93('0x6'));var auth=require(_0xcc93('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcc93('0x8'));router[_0xcc93('0x9')]('/',auth['isAuthenticated'](),controller[_0xcc93('0xa')]);router[_0xcc93('0x9')](_0xcc93('0xb'),auth[_0xcc93('0xc')](),controller[_0xcc93('0xd')]);router[_0xcc93('0xe')]('/',auth[_0xcc93('0xc')](),controller[_0xcc93('0xf')]);router[_0xcc93('0x10')](_0xcc93('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xcc93('0x11')]('/:id',auth[_0xcc93('0xc')](),controller['destroy']);module[_0xcc93('0x12')]=router;
\ No newline at end of file
+var _0x6094=['post','create','/:id','update','delete','destroy','multer','connect-timeout','fs-extra','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','show'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0x6094,0x1f0));var _0x4609=function(_0x262937,_0x5c6684){_0x262937=_0x262937-0x0;var _0x66d665=_0x6094[_0x262937];return _0x66d665;};'use strict';var multer=require(_0x4609('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4609('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4609('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4609('0x3'));var controller=require(_0x4609('0x4'));router[_0x4609('0x5')]('/',auth[_0x4609('0x6')](),controller['index']);router[_0x4609('0x5')]('/:id',auth[_0x4609('0x6')](),controller[_0x4609('0x7')]);router[_0x4609('0x8')]('/',auth['isAuthenticated'](),controller[_0x4609('0x9')]);router['put'](_0x4609('0xa'),auth['isAuthenticated'](),controller[_0x4609('0xb')]);router[_0x4609('0xc')]('/:id',auth[_0x4609('0x6')](),controller[_0x4609('0xd')]);module['exports']=router;
\ No newline at end of file
index 5597b80..eda9852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ec=['string','variable','customVariable','picklist','STRING','exports','ENUM'];(function(_0xb64d0c,_0x4eed6b){var _0x39cf07=function(_0x1162a5){while(--_0x1162a5){_0xb64d0c['push'](_0xb64d0c['shift']());}};_0x39cf07(++_0x4eed6b);}(_0x57ec,0x124));var _0xc57e=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x57ec[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require('sequelize');module[_0xc57e('0x0')]={'type':{'type':Sequelize[_0xc57e('0x1')](_0xc57e('0x2'),_0xc57e('0x3'),_0xc57e('0x4'),'keyValue',_0xc57e('0x5')),'defaultValue':_0xc57e('0x2')},'content':{'type':Sequelize[_0xc57e('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xc57e('0x1')](_0xc57e('0x2'),_0xc57e('0x3'),_0xc57e('0x4'))},'keyContent':{'type':Sequelize[_0xc57e('0x6')]},'idField':{'type':Sequelize[_0xc57e('0x6')]},'variableName':{'type':Sequelize[_0xc57e('0x6')]}};
\ No newline at end of file
+var _0xe4f6=['exports','ENUM','variable','customVariable','picklist','string','STRING','sequelize'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe4f6,0x1d7));var _0x6e4f=function(_0x4d3e0b,_0xf5cdfa){_0x4d3e0b=_0x4d3e0b-0x0;var _0x226d25=_0xe4f6[_0x4d3e0b];return _0x226d25;};'use strict';var Sequelize=require(_0x6e4f('0x0'));module[_0x6e4f('0x1')]={'type':{'type':Sequelize[_0x6e4f('0x2')]('string',_0x6e4f('0x3'),_0x6e4f('0x4'),'keyValue',_0x6e4f('0x5')),'defaultValue':_0x6e4f('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x6e4f('0x2')](_0x6e4f('0x6'),'variable',_0x6e4f('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x6e4f('0x7')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ecce237..41d6c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd00c=['query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','filters','pick','merge','where','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','index','SalesforceField','type','key','map'];(function(_0x19b744,_0xf5cf3f){var _0x47fdc4=function(_0x259933){while(--_0x259933){_0x19b744['push'](_0x19b744['shift']());}};_0x47fdc4(++_0xf5cf3f);}(_0xd00c,0x153));var _0xcd00=function(_0x3c1eae,_0x273ede){_0x3c1eae=_0x3c1eae-0x0;var _0x4d7831=_0xd00c[_0x3c1eae];return _0x4d7831;};'use strict';var emlformat=require(_0xcd00('0x0'));var rimraf=require(_0xcd00('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcd00('0x2'));var rp=require(_0xcd00('0x3'));var moment=require(_0xcd00('0x4'));var BPromise=require(_0xcd00('0x5'));var Mustache=require(_0xcd00('0x6'));var util=require(_0xcd00('0x7'));var path=require(_0xcd00('0x8'));var sox=require(_0xcd00('0x9'));var csv=require(_0xcd00('0xa'));var ejs=require(_0xcd00('0xb'));var fs=require('fs');var fs_extra=require(_0xcd00('0xc'));var _=require(_0xcd00('0xd'));var squel=require(_0xcd00('0xe'));var crypto=require(_0xcd00('0xf'));var jsforce=require(_0xcd00('0x10'));var deskjs=require(_0xcd00('0x11'));var toCsv=require(_0xcd00('0xa'));var querystring=require(_0xcd00('0x12'));var Papa=require(_0xcd00('0x13'));var Redis=require(_0xcd00('0x14'));var authService=require(_0xcd00('0x15'));var qs=require(_0xcd00('0x16'));var as=require(_0xcd00('0x17'));var hardwareService=require(_0xcd00('0x18'));var logger=require(_0xcd00('0x19'))(_0xcd00('0x1a'));var utils=require('../../config/utils');var config=require(_0xcd00('0x1b'));var licenseUtil=require(_0xcd00('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13f3f0,_0x27dbb8){_0x27dbb8=_0x27dbb8||0xcc;return function(_0x3718af){if(_0x3718af){return _0x13f3f0[_0xcd00('0x1d')](_0x27dbb8);}return _0x13f3f0[_0xcd00('0x1e')](_0x27dbb8)[_0xcd00('0x1f')]();};}function respondWithResult(_0x50b708,_0x598808){_0x598808=_0x598808||0xc8;return function(_0x585d60){if(_0x585d60){return _0x50b708[_0xcd00('0x1e')](_0x598808)[_0xcd00('0x20')](_0x585d60);}};}function respondWithFilteredResult(_0x11ff42,_0x1dc888){return function(_0x14bd86){if(_0x14bd86){var _0x1153f6=typeof _0x1dc888[_0xcd00('0x21')]===_0xcd00('0x22')&&typeof _0x1dc888['limit']===_0xcd00('0x22');var _0x238382=_0x14bd86[_0xcd00('0x23')];var _0x43f5ef=_0x1153f6?0x0:_0x1dc888[_0xcd00('0x21')];var _0x1ac8c8=_0x1153f6?_0x14bd86[_0xcd00('0x23')]:_0x1dc888[_0xcd00('0x21')]+_0x1dc888[_0xcd00('0x24')];var _0x354b8d;if(_0x1ac8c8>=_0x238382){_0x1ac8c8=_0x238382;_0x354b8d=0xc8;}else{_0x354b8d=0xce;}_0x11ff42['status'](_0x354b8d);return _0x11ff42[_0xcd00('0x25')](_0xcd00('0x26'),_0x43f5ef+'-'+_0x1ac8c8+'/'+_0x238382)[_0xcd00('0x20')](_0x14bd86);}return null;};}function patchUpdates(_0x1a5886){return function(_0x42e428){try{jsonpatch[_0xcd00('0x27')](_0x42e428,_0x1a5886,!![]);}catch(_0x686c98){return BPromise['reject'](_0x686c98);}return _0x42e428[_0xcd00('0x28')]();};}function saveUpdates(_0x2456dd,_0x5414af){return function(_0x4bc4ee){if(_0x4bc4ee){return _0x4bc4ee['update'](_0x2456dd)[_0xcd00('0x29')](function(_0x7f39c5){return _0x7f39c5;});}return null;};}function removeEntity(_0xeb8657,_0x4b55ff){return function(_0x424b8f){if(_0x424b8f){return _0x424b8f[_0xcd00('0x2a')]()[_0xcd00('0x29')](function(){_0xeb8657[_0xcd00('0x1e')](0xcc)[_0xcd00('0x1f')]();});}};}function handleEntityNotFound(_0x2da775,_0x21c1e0){return function(_0x3e978e){if(!_0x3e978e){_0x2da775[_0xcd00('0x1d')](0x194);}return _0x3e978e;};}function handleError(_0x5a17a7,_0x11e915){_0x11e915=_0x11e915||0x1f4;return function(_0x56c7e4){logger[_0xcd00('0x2b')](_0x56c7e4[_0xcd00('0x2c')]);if(_0x56c7e4['name']){delete _0x56c7e4[_0xcd00('0x2d')];}_0x5a17a7['status'](_0x11e915)['send'](_0x56c7e4);};}exports[_0xcd00('0x2e')]=function(_0x3273de,_0x564c84){var _0xcb263f={},_0x352001={},_0x587158={'count':0x0,'rows':[]};var _0x368186=_['map'](db[_0xcd00('0x2f')]['rawAttributes'],function(_0x327f84){return{'name':_0x327f84['fieldName'],'type':_0x327f84[_0xcd00('0x30')][_0xcd00('0x31')]};});_0x352001['model']=_[_0xcd00('0x32')](_0x368186,_0xcd00('0x2d'));_0x352001[_0xcd00('0x33')]=_['keys'](_0x3273de[_0xcd00('0x33')]);_0x352001['filters']=_[_0xcd00('0x34')](_0x352001['model'],_0x352001[_0xcd00('0x33')]);_0xcb263f[_0xcd00('0x35')]=_[_0xcd00('0x34')](_0x352001[_0xcd00('0x36')],qs[_0xcd00('0x37')](_0x3273de['query'][_0xcd00('0x37')]));_0xcb263f[_0xcd00('0x35')]=_0xcb263f[_0xcd00('0x35')][_0xcd00('0x38')]?_0xcb263f['attributes']:_0x352001[_0xcd00('0x36')];if(!_0x3273de[_0xcd00('0x33')][_0xcd00('0x39')](_0xcd00('0x3a'))){_0xcb263f['limit']=qs['limit'](_0x3273de[_0xcd00('0x33')][_0xcd00('0x24')]);_0xcb263f[_0xcd00('0x21')]=qs[_0xcd00('0x21')](_0x3273de[_0xcd00('0x33')][_0xcd00('0x21')]);}_0xcb263f['order']=qs['sort'](_0x3273de[_0xcd00('0x33')][_0xcd00('0x3b')]);_0xcb263f['where']=qs[_0xcd00('0x3c')](_[_0xcd00('0x3d')](_0x3273de[_0xcd00('0x33')],_0x352001[_0xcd00('0x3c')]),_0x368186);if(_0x3273de[_0xcd00('0x33')]['filter']){_0xcb263f['where']=_[_0xcd00('0x3e')](_0xcb263f[_0xcd00('0x3f')],{'$or':_[_0xcd00('0x32')](_0x368186,function(_0x23b186){if(_0x23b186['type']!==_0xcd00('0x40')){var _0x52a071={};_0x52a071[_0x23b186[_0xcd00('0x2d')]]={'$like':'%'+_0x3273de[_0xcd00('0x33')][_0xcd00('0x41')]+'%'};return _0x52a071;}})});}_0xcb263f=_['merge']({},_0xcb263f,_0x3273de['options']);var _0x244afe={'where':_0xcb263f[_0xcd00('0x3f')]};return db[_0xcd00('0x2f')][_0xcd00('0x23')](_0x244afe)[_0xcd00('0x29')](function(_0x584915){_0x587158[_0xcd00('0x23')]=_0x584915;if(_0x3273de[_0xcd00('0x33')][_0xcd00('0x42')]){_0xcb263f[_0xcd00('0x43')]=[{'all':!![]}];}return db[_0xcd00('0x2f')][_0xcd00('0x44')](_0xcb263f);})[_0xcd00('0x29')](function(_0x882d17){_0x587158[_0xcd00('0x45')]=_0x882d17;return _0x587158;})[_0xcd00('0x29')](respondWithFilteredResult(_0x564c84,_0xcb263f))[_0xcd00('0x46')](handleError(_0x564c84,null));};exports[_0xcd00('0x47')]=function(_0x4aba65,_0x2e9144){var _0x51723b={'raw':!![],'where':{'id':_0x4aba65[_0xcd00('0x48')]['id']}},_0x494cc8={};_0x494cc8[_0xcd00('0x36')]=_['keys'](db[_0xcd00('0x2f')][_0xcd00('0x49')]);_0x494cc8['query']=_['keys'](_0x4aba65[_0xcd00('0x33')]);_0x494cc8[_0xcd00('0x3c')]=_[_0xcd00('0x34')](_0x494cc8[_0xcd00('0x36')],_0x494cc8[_0xcd00('0x33')]);_0x51723b['attributes']=_[_0xcd00('0x34')](_0x494cc8[_0xcd00('0x36')],qs[_0xcd00('0x37')](_0x4aba65['query'][_0xcd00('0x37')]));_0x51723b['attributes']=_0x51723b[_0xcd00('0x35')][_0xcd00('0x38')]?_0x51723b[_0xcd00('0x35')]:_0x494cc8[_0xcd00('0x36')];if(_0x4aba65[_0xcd00('0x33')]['includeAll']){_0x51723b['include']=[{'all':!![]}];}_0x51723b=_[_0xcd00('0x3e')]({},_0x51723b,_0x4aba65['options']);return db[_0xcd00('0x2f')][_0xcd00('0x4a')](_0x51723b)['then'](handleEntityNotFound(_0x2e9144,null))[_0xcd00('0x29')](respondWithResult(_0x2e9144,null))[_0xcd00('0x46')](handleError(_0x2e9144,null));};exports[_0xcd00('0x4b')]=function(_0x36839e,_0x2ce371){return db[_0xcd00('0x2f')][_0xcd00('0x4b')](_0x36839e[_0xcd00('0x4c')],{})[_0xcd00('0x29')](respondWithResult(_0x2ce371,0xc9))[_0xcd00('0x46')](handleError(_0x2ce371,null));};exports[_0xcd00('0x4d')]=function(_0x24a1b6,_0x1d5998){if(_0x24a1b6[_0xcd00('0x4c')]['id']){delete _0x24a1b6['body']['id'];}return db[_0xcd00('0x2f')][_0xcd00('0x4a')]({'where':{'id':_0x24a1b6[_0xcd00('0x48')]['id']}})[_0xcd00('0x29')](handleEntityNotFound(_0x1d5998,null))[_0xcd00('0x29')](saveUpdates(_0x24a1b6[_0xcd00('0x4c')],null))[_0xcd00('0x29')](respondWithResult(_0x1d5998,null))[_0xcd00('0x46')](handleError(_0x1d5998,null));};exports[_0xcd00('0x2a')]=function(_0x40d123,_0x3c84ee){return db[_0xcd00('0x2f')][_0xcd00('0x4a')]({'where':{'id':_0x40d123[_0xcd00('0x48')]['id']}})[_0xcd00('0x29')](handleEntityNotFound(_0x3c84ee,null))[_0xcd00('0x29')](removeEntity(_0x3c84ee,null))['catch'](handleError(_0x3c84ee,null));};
\ No newline at end of file
+var _0x3d2a=['model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','rows','catch','show','rawAttributes','length','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','apply','reject','save','update','then','end','error','name','send','index','map','SalesforceField','fieldName','type','key'];(function(_0x5502a7,_0x325618){var _0x3946fa=function(_0x1c8383){while(--_0x1c8383){_0x5502a7['push'](_0x5502a7['shift']());}};_0x3946fa(++_0x325618);}(_0x3d2a,0x105));var _0xa3d2=function(_0x32083e,_0x130a41){_0x32083e=_0x32083e-0x0;var _0x1efcc7=_0x3d2a[_0x32083e];return _0x1efcc7;};'use strict';var emlformat=require(_0xa3d2('0x0'));var rimraf=require(_0xa3d2('0x1'));var zipdir=require(_0xa3d2('0x2'));var jsonpatch=require(_0xa3d2('0x3'));var rp=require(_0xa3d2('0x4'));var moment=require(_0xa3d2('0x5'));var BPromise=require(_0xa3d2('0x6'));var Mustache=require(_0xa3d2('0x7'));var util=require(_0xa3d2('0x8'));var path=require(_0xa3d2('0x9'));var sox=require('sox');var csv=require(_0xa3d2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa3d2('0xb'));var _=require(_0xa3d2('0xc'));var squel=require(_0xa3d2('0xd'));var crypto=require(_0xa3d2('0xe'));var jsforce=require(_0xa3d2('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa3d2('0xa'));var querystring=require(_0xa3d2('0x10'));var Papa=require(_0xa3d2('0x11'));var Redis=require('ioredis');var authService=require(_0xa3d2('0x12'));var qs=require(_0xa3d2('0x13'));var as=require(_0xa3d2('0x14'));var hardwareService=require(_0xa3d2('0x15'));var logger=require(_0xa3d2('0x16'))(_0xa3d2('0x17'));var utils=require(_0xa3d2('0x18'));var config=require(_0xa3d2('0x19'));var licenseUtil=require(_0xa3d2('0x1a'));var db=require(_0xa3d2('0x1b'))['db'];function respondWithStatusCode(_0x207fee,_0x23ab36){_0x23ab36=_0x23ab36||0xcc;return function(_0x121536){if(_0x121536){return _0x207fee[_0xa3d2('0x1c')](_0x23ab36);}return _0x207fee['status'](_0x23ab36)['end']();};}function respondWithResult(_0x2a25e1,_0xe841dc){_0xe841dc=_0xe841dc||0xc8;return function(_0x251b2c){if(_0x251b2c){return _0x2a25e1[_0xa3d2('0x1d')](_0xe841dc)[_0xa3d2('0x1e')](_0x251b2c);}};}function respondWithFilteredResult(_0x1fa187,_0xf19867){return function(_0x559f04){if(_0x559f04){var _0x2d9c0a=typeof _0xf19867['offset']===_0xa3d2('0x1f')&&typeof _0xf19867['limit']==='undefined';var _0x44e344=_0x559f04[_0xa3d2('0x20')];var _0x92bbf1=_0x2d9c0a?0x0:_0xf19867[_0xa3d2('0x21')];var _0x26e45c=_0x2d9c0a?_0x559f04[_0xa3d2('0x20')]:_0xf19867[_0xa3d2('0x21')]+_0xf19867[_0xa3d2('0x22')];var _0x5b05c3;if(_0x26e45c>=_0x44e344){_0x26e45c=_0x44e344;_0x5b05c3=0xc8;}else{_0x5b05c3=0xce;}_0x1fa187[_0xa3d2('0x1d')](_0x5b05c3);return _0x1fa187[_0xa3d2('0x23')]('Content-Range',_0x92bbf1+'-'+_0x26e45c+'/'+_0x44e344)['json'](_0x559f04);}return null;};}function patchUpdates(_0x3fc377){return function(_0x307272){try{jsonpatch[_0xa3d2('0x24')](_0x307272,_0x3fc377,!![]);}catch(_0x35cf59){return BPromise[_0xa3d2('0x25')](_0x35cf59);}return _0x307272[_0xa3d2('0x26')]();};}function saveUpdates(_0x4079c7,_0x541289){return function(_0x27a165){if(_0x27a165){return _0x27a165[_0xa3d2('0x27')](_0x4079c7)[_0xa3d2('0x28')](function(_0x10bfde){return _0x10bfde;});}return null;};}function removeEntity(_0x1fbfeb,_0x1adcff){return function(_0x1618c0){if(_0x1618c0){return _0x1618c0['destroy']()[_0xa3d2('0x28')](function(){_0x1fbfeb[_0xa3d2('0x1d')](0xcc)[_0xa3d2('0x29')]();});}};}function handleEntityNotFound(_0x4096e0,_0x249ce6){return function(_0x2730db){if(!_0x2730db){_0x4096e0[_0xa3d2('0x1c')](0x194);}return _0x2730db;};}function handleError(_0x59bef8,_0x15c4fe){_0x15c4fe=_0x15c4fe||0x1f4;return function(_0x2cadee){logger[_0xa3d2('0x2a')](_0x2cadee['stack']);if(_0x2cadee['name']){delete _0x2cadee[_0xa3d2('0x2b')];}_0x59bef8[_0xa3d2('0x1d')](_0x15c4fe)[_0xa3d2('0x2c')](_0x2cadee);};}exports[_0xa3d2('0x2d')]=function(_0x9685c5,_0x328bbd){var _0x3c599a={},_0xe9e78f={},_0x1cfff7={'count':0x0,'rows':[]};var _0x1e20a0=_[_0xa3d2('0x2e')](db[_0xa3d2('0x2f')]['rawAttributes'],function(_0x598ddf){return{'name':_0x598ddf[_0xa3d2('0x30')],'type':_0x598ddf[_0xa3d2('0x31')][_0xa3d2('0x32')]};});_0xe9e78f[_0xa3d2('0x33')]=_['map'](_0x1e20a0,'name');_0xe9e78f['query']=_[_0xa3d2('0x34')](_0x9685c5['query']);_0xe9e78f[_0xa3d2('0x35')]=_[_0xa3d2('0x36')](_0xe9e78f[_0xa3d2('0x33')],_0xe9e78f['query']);_0x3c599a[_0xa3d2('0x37')]=_[_0xa3d2('0x36')](_0xe9e78f[_0xa3d2('0x33')],qs[_0xa3d2('0x38')](_0x9685c5[_0xa3d2('0x39')][_0xa3d2('0x38')]));_0x3c599a[_0xa3d2('0x37')]=_0x3c599a[_0xa3d2('0x37')]['length']?_0x3c599a[_0xa3d2('0x37')]:_0xe9e78f[_0xa3d2('0x33')];if(!_0x9685c5['query'][_0xa3d2('0x3a')]('nolimit')){_0x3c599a[_0xa3d2('0x22')]=qs[_0xa3d2('0x22')](_0x9685c5[_0xa3d2('0x39')]['limit']);_0x3c599a[_0xa3d2('0x21')]=qs['offset'](_0x9685c5[_0xa3d2('0x39')][_0xa3d2('0x21')]);}_0x3c599a[_0xa3d2('0x3b')]=qs['sort'](_0x9685c5['query'][_0xa3d2('0x3c')]);_0x3c599a[_0xa3d2('0x3d')]=qs[_0xa3d2('0x35')](_[_0xa3d2('0x3e')](_0x9685c5[_0xa3d2('0x39')],_0xe9e78f[_0xa3d2('0x35')]),_0x1e20a0);if(_0x9685c5[_0xa3d2('0x39')][_0xa3d2('0x3f')]){_0x3c599a[_0xa3d2('0x3d')]=_['merge'](_0x3c599a[_0xa3d2('0x3d')],{'$or':_[_0xa3d2('0x2e')](_0x1e20a0,function(_0x1990c4){if(_0x1990c4[_0xa3d2('0x31')]!==_0xa3d2('0x40')){var _0x4da356={};_0x4da356[_0x1990c4['name']]={'$like':'%'+_0x9685c5[_0xa3d2('0x39')]['filter']+'%'};return _0x4da356;}})});}_0x3c599a=_[_0xa3d2('0x41')]({},_0x3c599a,_0x9685c5['options']);var _0x5b7194={'where':_0x3c599a[_0xa3d2('0x3d')]};return db[_0xa3d2('0x2f')][_0xa3d2('0x20')](_0x5b7194)[_0xa3d2('0x28')](function(_0x25d71c){_0x1cfff7[_0xa3d2('0x20')]=_0x25d71c;if(_0x9685c5[_0xa3d2('0x39')][_0xa3d2('0x42')]){_0x3c599a[_0xa3d2('0x43')]=[{'all':!![]}];}return db[_0xa3d2('0x2f')]['findAll'](_0x3c599a);})[_0xa3d2('0x28')](function(_0xe96b57){_0x1cfff7[_0xa3d2('0x44')]=_0xe96b57;return _0x1cfff7;})[_0xa3d2('0x28')](respondWithFilteredResult(_0x328bbd,_0x3c599a))[_0xa3d2('0x45')](handleError(_0x328bbd,null));};exports[_0xa3d2('0x46')]=function(_0xc7a555,_0x18eead){var _0x27f34c={'raw':!![],'where':{'id':_0xc7a555['params']['id']}},_0x461d82={};_0x461d82[_0xa3d2('0x33')]=_[_0xa3d2('0x34')](db['SalesforceField'][_0xa3d2('0x47')]);_0x461d82[_0xa3d2('0x39')]=_[_0xa3d2('0x34')](_0xc7a555[_0xa3d2('0x39')]);_0x461d82[_0xa3d2('0x35')]=_[_0xa3d2('0x36')](_0x461d82[_0xa3d2('0x33')],_0x461d82[_0xa3d2('0x39')]);_0x27f34c['attributes']=_[_0xa3d2('0x36')](_0x461d82[_0xa3d2('0x33')],qs[_0xa3d2('0x38')](_0xc7a555[_0xa3d2('0x39')][_0xa3d2('0x38')]));_0x27f34c[_0xa3d2('0x37')]=_0x27f34c['attributes'][_0xa3d2('0x48')]?_0x27f34c['attributes']:_0x461d82['model'];if(_0xc7a555[_0xa3d2('0x39')]['includeAll']){_0x27f34c['include']=[{'all':!![]}];}_0x27f34c=_[_0xa3d2('0x41')]({},_0x27f34c,_0xc7a555[_0xa3d2('0x49')]);return db[_0xa3d2('0x2f')][_0xa3d2('0x4a')](_0x27f34c)[_0xa3d2('0x28')](handleEntityNotFound(_0x18eead,null))[_0xa3d2('0x28')](respondWithResult(_0x18eead,null))[_0xa3d2('0x45')](handleError(_0x18eead,null));};exports[_0xa3d2('0x4b')]=function(_0x2cbf56,_0x41aca4){return db[_0xa3d2('0x2f')][_0xa3d2('0x4b')](_0x2cbf56[_0xa3d2('0x4c')],{})[_0xa3d2('0x28')](respondWithResult(_0x41aca4,0xc9))['catch'](handleError(_0x41aca4,null));};exports[_0xa3d2('0x27')]=function(_0x447d20,_0x582d68){if(_0x447d20[_0xa3d2('0x4c')]['id']){delete _0x447d20[_0xa3d2('0x4c')]['id'];}return db[_0xa3d2('0x2f')][_0xa3d2('0x4a')]({'where':{'id':_0x447d20[_0xa3d2('0x4d')]['id']}})['then'](handleEntityNotFound(_0x582d68,null))[_0xa3d2('0x28')](saveUpdates(_0x447d20['body'],null))[_0xa3d2('0x28')](respondWithResult(_0x582d68,null))[_0xa3d2('0x45')](handleError(_0x582d68,null));};exports['destroy']=function(_0x20c05e,_0x52b3f9){return db[_0xa3d2('0x2f')]['find']({'where':{'id':_0x20c05e['params']['id']}})['then'](handleEntityNotFound(_0x52b3f9,null))[_0xa3d2('0x28')](removeEntity(_0x52b3f9,null))['catch'](handleError(_0x52b3f9,null));};
\ No newline at end of file
index 6689f29..f3ddcf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa723=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','SalesforceField','salesforce_unique_index','idField'];(function(_0x489663,_0xc2f438){var _0x5cff32=function(_0xcd16d8){while(--_0xcd16d8){_0x489663['push'](_0x489663['shift']());}};_0x5cff32(++_0xc2f438);}(_0xa723,0x101));var _0x3a72=function(_0x217ff6,_0x36f75d){_0x217ff6=_0x217ff6-0x0;var _0x417c93=_0xa723[_0x217ff6];return _0x417c93;};'use strict';var _=require(_0x3a72('0x0'));var util=require(_0x3a72('0x1'));var logger=require(_0x3a72('0x2'))(_0x3a72('0x3'));var moment=require(_0x3a72('0x4'));var BPromise=require(_0x3a72('0x5'));var rp=require(_0x3a72('0x6'));var fs=require('fs');var path=require(_0x3a72('0x7'));var rimraf=require(_0x3a72('0x8'));var config=require(_0x3a72('0x9'));var attributes=require(_0x3a72('0xa'));module[_0x3a72('0xb')]=function(_0x4e2d22,_0x48e6b4){return _0x4e2d22['define'](_0x3a72('0xc'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x3a72('0xd'),'fields':[_0x3a72('0xe'),_0x3a72('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x298f=['lodash','util','moment','bluebird','request-promise','path','rimraf','./intSalesforceField.attributes','define','SalesforceField','int_salesforce_fields','idField','FieldId'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x298f,0x179));var _0xf298=function(_0x1b2167,_0x104d70){_0x1b2167=_0x1b2167-0x0;var _0xfb65b7=_0x298f[_0x1b2167];return _0xfb65b7;};'use strict';var _=require(_0xf298('0x0'));var util=require(_0xf298('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf298('0x2'));var BPromise=require(_0xf298('0x3'));var rp=require(_0xf298('0x4'));var fs=require('fs');var path=require(_0xf298('0x5'));var rimraf=require(_0xf298('0x6'));var config=require('../../config/environment');var attributes=require(_0xf298('0x7'));module['exports']=function(_0x376d6e,_0x2a43eb){return _0x376d6e[_0xf298('0x8')](_0xf298('0x9'),attributes,{'tableName':_0xf298('0xa'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xf298('0xb'),_0xf298('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b788b77..731c4eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d58=['code','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1c777b,_0x2f8213){var _0x40167e=function(_0x344d8a){while(--_0x344d8a){_0x1c777b['push'](_0x1c777b['shift']());}};_0x40167e(++_0x2f8213);}(_0x7d58,0x144));var _0x87d5=function(_0x26e780,_0x5465ba){_0x26e780=_0x26e780-0x0;var _0x2e9594=_0x7d58[_0x26e780];return _0x2e9594;};'use strict';var _=require('lodash');var util=require(_0x87d5('0x0'));var moment=require(_0x87d5('0x1'));var BPromise=require(_0x87d5('0x2'));var rs=require(_0x87d5('0x3'));var fs=require('fs');var Redis=require(_0x87d5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x87d5('0x5'));var logger=require(_0x87d5('0x6'))(_0x87d5('0x7'));var config=require('../../config/environment');var jayson=require(_0x87d5('0x8'));var client=jayson['client'][_0x87d5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x11eefe,_0x546542,_0x27c938){return new BPromise(function(_0x49f2d3,_0x4b1a4c){return client[_0x87d5('0xa')](_0x11eefe,_0x27c938)['then'](function(_0x2a9112){logger['info'](_0x87d5('0xb'),_0x546542,_0x87d5('0xc'));logger['debug'](_0x87d5('0xd'),_0x546542,_0x87d5('0xc'),JSON[_0x87d5('0xe')](_0x2a9112));if(_0x2a9112[_0x87d5('0xf')]){if(_0x2a9112[_0x87d5('0xf')][_0x87d5('0x10')]===0x1f4){logger[_0x87d5('0xf')](_0x87d5('0xb'),_0x546542,_0x2a9112[_0x87d5('0xf')][_0x87d5('0x11')]);return _0x4b1a4c(_0x2a9112[_0x87d5('0xf')][_0x87d5('0x11')]);}logger['error'](_0x87d5('0xb'),_0x546542,_0x2a9112['error'][_0x87d5('0x11')]);return _0x49f2d3(_0x2a9112[_0x87d5('0xf')][_0x87d5('0x11')]);}else{logger[_0x87d5('0x12')]('SalesforceField,\x20%s,\x20%s',_0x546542,_0x87d5('0xc'));_0x49f2d3(_0x2a9112['result'][_0x87d5('0x11')]);}})[_0x87d5('0x13')](function(_0x3455f8){logger[_0x87d5('0xf')](_0x87d5('0xb'),_0x546542,_0x3455f8);_0x4b1a4c(_0x3455f8);});});}
\ No newline at end of file
+var _0xe6de=['error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x32205b,_0x355aa6){var _0x297808=function(_0x513243){while(--_0x513243){_0x32205b['push'](_0x32205b['shift']());}};_0x297808(++_0x355aa6);}(_0xe6de,0x1e4));var _0xee6d=function(_0x4f1821,_0xbbbf0f){_0x4f1821=_0x4f1821-0x0;var _0x2dc421=_0xe6de[_0x4f1821];return _0x2dc421;};'use strict';var _=require(_0xee6d('0x0'));var util=require(_0xee6d('0x1'));var moment=require(_0xee6d('0x2'));var BPromise=require(_0xee6d('0x3'));var rs=require(_0xee6d('0x4'));var fs=require('fs');var Redis=require(_0xee6d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xee6d('0x6'));var logger=require('../../config/logger')(_0xee6d('0x7'));var config=require(_0xee6d('0x8'));var jayson=require(_0xee6d('0x9'));var client=jayson[_0xee6d('0xa')][_0xee6d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x186ee3,_0x4bf9ef,_0x1b0dcc){return new BPromise(function(_0x194541,_0x26db87){return client[_0xee6d('0xc')](_0x186ee3,_0x1b0dcc)[_0xee6d('0xd')](function(_0x54a31a){logger[_0xee6d('0xe')](_0xee6d('0xf'),_0x4bf9ef,'request\x20sent');logger[_0xee6d('0x10')](_0xee6d('0x11'),_0x4bf9ef,_0xee6d('0x12'),JSON[_0xee6d('0x13')](_0x54a31a));if(_0x54a31a[_0xee6d('0x14')]){if(_0x54a31a[_0xee6d('0x14')]['code']===0x1f4){logger[_0xee6d('0x14')](_0xee6d('0xf'),_0x4bf9ef,_0x54a31a[_0xee6d('0x14')][_0xee6d('0x15')]);return _0x26db87(_0x54a31a[_0xee6d('0x14')][_0xee6d('0x15')]);}logger['error']('SalesforceField,\x20%s,\x20%s',_0x4bf9ef,_0x54a31a[_0xee6d('0x14')][_0xee6d('0x15')]);return _0x194541(_0x54a31a[_0xee6d('0x14')][_0xee6d('0x15')]);}else{logger[_0xee6d('0xe')](_0xee6d('0xf'),_0x4bf9ef,_0xee6d('0x12'));_0x194541(_0x54a31a[_0xee6d('0x16')]['message']);}})[_0xee6d('0x17')](function(_0x4b7349){logger[_0xee6d('0x14')](_0xee6d('0xf'),_0x4bf9ef,_0x4b7349);_0x26db87(_0x4b7349);});});}
\ No newline at end of file
index 61615c5..8cdbe39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c5=['/:id/fields','post','/:id/configurations','addConfiguration','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations'];(function(_0x254c40,_0x35a145){var _0x363c96=function(_0x528954){while(--_0x528954){_0x254c40['push'](_0x254c40['shift']());}};_0x363c96(++_0x35a145);}(_0x23c5,0x128));var _0x523c=function(_0xd29ceb,_0x547c1d){_0xd29ceb=_0xd29ceb-0x0;var _0x13e480=_0x23c5[_0xd29ceb];return _0x13e480;};'use strict';var multer=require(_0x523c('0x0'));var util=require(_0x523c('0x1'));var path=require(_0x523c('0x2'));var timeout=require('connect-timeout');var express=require(_0x523c('0x3'));var router=express[_0x523c('0x4')]();var fs_extra=require(_0x523c('0x5'));var auth=require(_0x523c('0x6'));var interaction=require(_0x523c('0x7'));var config=require(_0x523c('0x8'));var controller=require(_0x523c('0x9'));router[_0x523c('0xa')]('/',auth['isAuthenticated'](),controller[_0x523c('0xb')]);router[_0x523c('0xa')](_0x523c('0xc'),auth[_0x523c('0xd')](),controller[_0x523c('0xe')]);router[_0x523c('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x523c('0xf')]);router[_0x523c('0xa')](_0x523c('0x10'),auth[_0x523c('0xd')](),controller['getFields']);router[_0x523c('0x11')]('/',auth[_0x523c('0xd')](),controller['create']);router[_0x523c('0x11')](_0x523c('0x12'),auth[_0x523c('0xd')](),controller[_0x523c('0x13')]);router[_0x523c('0x14')](_0x523c('0xc'),auth[_0x523c('0xd')](),controller[_0x523c('0x15')]);router[_0x523c('0x16')](_0x523c('0xc'),auth[_0x523c('0xd')](),controller[_0x523c('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xfa4b=['Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/configurations','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3538a0,_0x4b8900){var _0x591551=function(_0xcc1e0d){while(--_0xcc1e0d){_0x3538a0['push'](_0x3538a0['shift']());}};_0x591551(++_0x4b8900);}(_0xfa4b,0x175));var _0xbfa4=function(_0x161d33,_0x22a612){_0x161d33=_0x161d33-0x0;var _0x5f3178=_0xfa4b[_0x161d33];return _0x5f3178;};'use strict';var multer=require(_0xbfa4('0x0'));var util=require(_0xbfa4('0x1'));var path=require(_0xbfa4('0x2'));var timeout=require(_0xbfa4('0x3'));var express=require(_0xbfa4('0x4'));var router=express[_0xbfa4('0x5')]();var fs_extra=require(_0xbfa4('0x6'));var auth=require(_0xbfa4('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xbfa4('0x8'));var controller=require('./intServicenowAccount.controller');router[_0xbfa4('0x9')]('/',auth['isAuthenticated'](),controller[_0xbfa4('0xa')]);router[_0xbfa4('0x9')](_0xbfa4('0xb'),auth[_0xbfa4('0xc')](),controller[_0xbfa4('0xd')]);router['get'](_0xbfa4('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xbfa4('0xc')](),controller['getFields']);router[_0xbfa4('0xf')]('/',auth[_0xbfa4('0xc')](),controller[_0xbfa4('0x10')]);router['post'](_0xbfa4('0xe'),auth[_0xbfa4('0xc')](),controller['addConfiguration']);router[_0xbfa4('0x11')]('/:id',auth[_0xbfa4('0xc')](),controller[_0xbfa4('0x12')]);router['delete'](_0xbfa4('0xb'),auth[_0xbfa4('0xc')](),controller[_0xbfa4('0x13')]);module[_0xbfa4('0x14')]=router;
\ No newline at end of file
index 64ed593..d63cd44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984b=['username','remoteUri','sequelize','exports','STRING'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x984b,0xc0));var _0xb984=function(_0x3f273c,_0x45717a){_0x3f273c=_0x3f273c-0x0;var _0x3cb5f7=_0x984b[_0x3f273c];return _0x3cb5f7;};'use strict';var Sequelize=require(_0xb984('0x0'));module[_0xb984('0x1')]={'name':{'type':Sequelize[_0xb984('0x2')]},'description':{'type':Sequelize[_0xb984('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xb984('0x3')},'password':{'type':Sequelize[_0xb984('0x2')]},'email':{'type':Sequelize[_0xb984('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xb984('0x4')},'serverUrl':{'type':Sequelize[_0xb984('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x4a5a=['username','remoteUri','sequelize','exports','STRING'];(function(_0x1672a5,_0x56dc4a){var _0x152c3d=function(_0x366269){while(--_0x366269){_0x1672a5['push'](_0x1672a5['shift']());}};_0x152c3d(++_0x56dc4a);}(_0x4a5a,0x7f));var _0xa4a5=function(_0x49e965,_0x3ab1ad){_0x49e965=_0x49e965-0x0;var _0x14a2c6=_0x4a5a[_0x49e965];return _0x14a2c6;};'use strict';var Sequelize=require(_0xa4a5('0x0'));module[_0xa4a5('0x1')]={'name':{'type':Sequelize[_0xa4a5('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xa4a5('0x2')],'unique':_0xa4a5('0x3')},'password':{'type':Sequelize[_0xa4a5('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xa4a5('0x2')],'unique':_0xa4a5('0x4')},'serverUrl':{'type':Sequelize[_0xa4a5('0x2')],'allowNull':![]}};
\ No newline at end of file
index c193c4d..38cc059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedec=['sys_created_by','closed_at','cmdb_ci','active','work_notes_list','business_service','priority','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','caller_id','approval_set','work_notes','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','sys_id','contact_type','reopened_by','reassignment_count','activity_due','comments','sla_due','approval','comments_and_work_notes','due_date','reopen_count','sys_tags','escalation','upon_approval','correlation_id','category','username','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','forEach','internalType','label','push','all','assign','concat','statusCode','Wrong\x20credentials','boolean','True','False','false','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','ServicenowAccount','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','includeAll','show','length','include','find','catch','create','params','body','findOne','ServicenowConfiguration','sort','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','knowledge','subcategory','close_code','incident_state','parent','caused_by','watch_list','sys_updated_on','child_incidents','approval_history','number','resolved_by','opened_by','sys_domain','state'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xedec,0xfe));var _0xcede=function(_0x41249e,_0x275d84){_0x41249e=_0x41249e-0x0;var _0x2bff48=_0xedec[_0x41249e];return _0x2bff48;};'use strict';var emlformat=require(_0xcede('0x0'));var rimraf=require(_0xcede('0x1'));var zipdir=require(_0xcede('0x2'));var jsonpatch=require(_0xcede('0x3'));var rp=require(_0xcede('0x4'));var moment=require('moment');var BPromise=require(_0xcede('0x5'));var Mustache=require(_0xcede('0x6'));var util=require(_0xcede('0x7'));var path=require('path');var sox=require(_0xcede('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcede('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xcede('0xa'));var jsforce=require(_0xcede('0xb'));var deskjs=require(_0xcede('0xc'));var toCsv=require(_0xcede('0xd'));var querystring=require(_0xcede('0xe'));var Papa=require(_0xcede('0xf'));var Redis=require('ioredis');var authService=require(_0xcede('0x10'));var qs=require(_0xcede('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xcede('0x12'))(_0xcede('0x13'));var utils=require(_0xcede('0x14'));var config=require(_0xcede('0x15'));var licenseUtil=require(_0xcede('0x16'));var db=require(_0xcede('0x17'))['db'];var integrations=require(_0xcede('0x18'));function respondWithStatusCode(_0x39505a,_0x3d2817){_0x3d2817=_0x3d2817||0xcc;return function(_0x35b185){if(_0x35b185){return _0x39505a[_0xcede('0x19')](_0x3d2817);}return _0x39505a['status'](_0x3d2817)[_0xcede('0x1a')]();};}function respondWithResult(_0x4826a0,_0xfbf9fe){_0xfbf9fe=_0xfbf9fe||0xc8;return function(_0x50c0b1){if(_0x50c0b1){return _0x4826a0[_0xcede('0x1b')](_0xfbf9fe)[_0xcede('0x1c')](_0x50c0b1);}};}function respondWithFilteredResult(_0x2ea609,_0x4b9051){return function(_0x3a4e17){if(_0x3a4e17){var _0x4d9d4c=typeof _0x4b9051[_0xcede('0x1d')]==='undefined'&&typeof _0x4b9051[_0xcede('0x1e')]==='undefined';var _0x2f077c=_0x3a4e17[_0xcede('0x1f')];var _0x11083c=_0x4d9d4c?0x0:_0x4b9051[_0xcede('0x1d')];var _0x280abd=_0x4d9d4c?_0x3a4e17[_0xcede('0x1f')]:_0x4b9051[_0xcede('0x1d')]+_0x4b9051[_0xcede('0x1e')];var _0x249a23;if(_0x280abd>=_0x2f077c){_0x280abd=_0x2f077c;_0x249a23=0xc8;}else{_0x249a23=0xce;}_0x2ea609['status'](_0x249a23);return _0x2ea609[_0xcede('0x20')](_0xcede('0x21'),_0x11083c+'-'+_0x280abd+'/'+_0x2f077c)['json'](_0x3a4e17);}return null;};}function patchUpdates(_0x1fc792){return function(_0x3c4406){try{jsonpatch[_0xcede('0x22')](_0x3c4406,_0x1fc792,!![]);}catch(_0x2d82c9){return BPromise[_0xcede('0x23')](_0x2d82c9);}return _0x3c4406['save']();};}function saveUpdates(_0x2ebd27,_0x817f10){return function(_0x39e83d){if(_0x39e83d){return _0x39e83d[_0xcede('0x24')](_0x2ebd27)[_0xcede('0x25')](function(_0x212b57){return _0x212b57;});}return null;};}function removeEntity(_0xbafd7c,_0x3d57b6){return function(_0x90f795){if(_0x90f795){return _0x90f795[_0xcede('0x26')]()['then'](function(){_0xbafd7c['status'](0xcc)[_0xcede('0x1a')]();});}};}function handleEntityNotFound(_0x34e92c,_0x30071b){return function(_0x338a4d){if(!_0x338a4d){_0x34e92c[_0xcede('0x19')](0x194);}return _0x338a4d;};}function handleError(_0x28688c,_0x2bb7fc){_0x2bb7fc=_0x2bb7fc||0x1f4;return function(_0x24a60d){logger[_0xcede('0x27')](_0x24a60d[_0xcede('0x28')]);if(_0x24a60d[_0xcede('0x29')]){delete _0x24a60d['name'];}_0x28688c[_0xcede('0x1b')](_0x2bb7fc)[_0xcede('0x2a')](_0x24a60d);};}exports[_0xcede('0x2b')]=function(_0x23ccc3,_0x1f92b3){var _0x36b581={},_0x17fc8f={},_0x30a97b={'count':0x0,'rows':[]};var _0x54f65d=_['map'](db[_0xcede('0x2c')][_0xcede('0x2d')],function(_0xc4a817){return{'name':_0xc4a817['fieldName'],'type':_0xc4a817[_0xcede('0x2e')][_0xcede('0x2f')]};});_0x17fc8f[_0xcede('0x30')]=_[_0xcede('0x31')](_0x54f65d,_0xcede('0x29'));_0x17fc8f[_0xcede('0x32')]=_[_0xcede('0x33')](_0x23ccc3[_0xcede('0x32')]);_0x17fc8f[_0xcede('0x34')]=_[_0xcede('0x35')](_0x17fc8f[_0xcede('0x30')],_0x17fc8f[_0xcede('0x32')]);_0x36b581['attributes']=_[_0xcede('0x35')](_0x17fc8f[_0xcede('0x30')],qs[_0xcede('0x36')](_0x23ccc3[_0xcede('0x32')]['fields']));_0x36b581[_0xcede('0x37')]=_0x36b581[_0xcede('0x37')]['length']?_0x36b581[_0xcede('0x37')]:_0x17fc8f[_0xcede('0x30')];if(!_0x23ccc3['query'][_0xcede('0x38')](_0xcede('0x39'))){_0x36b581['limit']=qs['limit'](_0x23ccc3[_0xcede('0x32')][_0xcede('0x1e')]);_0x36b581[_0xcede('0x1d')]=qs[_0xcede('0x1d')](_0x23ccc3['query'][_0xcede('0x1d')]);}_0x36b581[_0xcede('0x3a')]=qs['sort'](_0x23ccc3[_0xcede('0x32')]['sort']);_0x36b581['where']=qs['filters'](_[_0xcede('0x3b')](_0x23ccc3['query'],_0x17fc8f[_0xcede('0x34')]),_0x54f65d);if(_0x23ccc3[_0xcede('0x32')][_0xcede('0x3c')]){_0x36b581[_0xcede('0x3d')]=_[_0xcede('0x3e')](_0x36b581['where'],{'$or':_[_0xcede('0x31')](_0x54f65d,function(_0x5ca14a){if(_0x5ca14a['type']!==_0xcede('0x3f')){var _0x30bc20={};_0x30bc20[_0x5ca14a[_0xcede('0x29')]]={'$like':'%'+_0x23ccc3[_0xcede('0x32')][_0xcede('0x3c')]+'%'};return _0x30bc20;}})});}_0x36b581=_[_0xcede('0x3e')]({},_0x36b581,_0x23ccc3[_0xcede('0x40')]);var _0x15b522={'where':_0x36b581[_0xcede('0x3d')]};return db[_0xcede('0x2c')]['count'](_0x15b522)[_0xcede('0x25')](function(_0x1251bf){_0x30a97b[_0xcede('0x1f')]=_0x1251bf;if(_0x23ccc3['query'][_0xcede('0x41')]){_0x36b581['include']=[{'all':!![]}];}return db[_0xcede('0x2c')]['findAll'](_0x36b581);})[_0xcede('0x25')](function(_0x68b087){_0x30a97b['rows']=_0x68b087;return _0x30a97b;})[_0xcede('0x25')](respondWithFilteredResult(_0x1f92b3,_0x36b581))['catch'](handleError(_0x1f92b3,null));};exports[_0xcede('0x42')]=function(_0x77b940,_0x411fa6){var _0x7f7167={'raw':![],'where':{'id':_0x77b940['params']['id']}},_0x580d8e={};_0x580d8e['model']=_[_0xcede('0x33')](db[_0xcede('0x2c')][_0xcede('0x2d')]);_0x580d8e['query']=_[_0xcede('0x33')](_0x77b940[_0xcede('0x32')]);_0x580d8e['filters']=_['intersection'](_0x580d8e[_0xcede('0x30')],_0x580d8e[_0xcede('0x32')]);_0x7f7167[_0xcede('0x37')]=_[_0xcede('0x35')](_0x580d8e[_0xcede('0x30')],qs['fields'](_0x77b940['query']['fields']));_0x7f7167[_0xcede('0x37')]=_0x7f7167[_0xcede('0x37')][_0xcede('0x43')]?_0x7f7167[_0xcede('0x37')]:_0x580d8e[_0xcede('0x30')];if(_0x77b940[_0xcede('0x32')]['includeAll']){_0x7f7167[_0xcede('0x44')]=[{'all':!![]}];}_0x7f7167=_[_0xcede('0x3e')]({},_0x7f7167,_0x77b940[_0xcede('0x40')]);return db[_0xcede('0x2c')][_0xcede('0x45')](_0x7f7167)[_0xcede('0x25')](handleEntityNotFound(_0x411fa6,null))['then'](respondWithResult(_0x411fa6,null))[_0xcede('0x46')](handleError(_0x411fa6,null));};exports[_0xcede('0x47')]=function(_0x2058b6,_0x70f820){return db[_0xcede('0x2c')]['create'](_0x2058b6['body'],{})[_0xcede('0x25')](respondWithResult(_0x70f820,0xc9))[_0xcede('0x46')](handleError(_0x70f820,null));};exports['update']=function(_0x383958,_0x38f51e){if(_0x383958['body']['id']){delete _0x383958['body']['id'];}return db['ServicenowAccount']['find']({'where':{'id':_0x383958[_0xcede('0x48')]['id']}})[_0xcede('0x25')](handleEntityNotFound(_0x38f51e,null))['then'](saveUpdates(_0x383958[_0xcede('0x49')],null))[_0xcede('0x25')](respondWithResult(_0x38f51e,null))['catch'](handleError(_0x38f51e,null));};exports['destroy']=function(_0x3a9ba6,_0x27661e){return db['ServicenowAccount'][_0xcede('0x45')]({'where':{'id':_0x3a9ba6[_0xcede('0x48')]['id']}})[_0xcede('0x25')](handleEntityNotFound(_0x27661e,null))[_0xcede('0x25')](removeEntity(_0x27661e,null))[_0xcede('0x46')](handleError(_0x27661e,null));};exports['getConfigurations']=function(_0x1aa855,_0x4e7727,_0x14cc2b){var _0x2c02a2={};var _0x11fae4={};var _0x339d64;var _0x363e90;return db[_0xcede('0x2c')][_0xcede('0x4a')]({'where':{'id':_0x1aa855[_0xcede('0x48')]['id']}})[_0xcede('0x25')](handleEntityNotFound(_0x4e7727,null))[_0xcede('0x25')](function(_0x54492f){if(_0x54492f){_0x339d64=_0x54492f;_0x11fae4[_0xcede('0x30')]=_['keys'](db[_0xcede('0x4b')][_0xcede('0x2d')]);_0x11fae4[_0xcede('0x32')]=_[_0xcede('0x33')](_0x1aa855[_0xcede('0x32')]);_0x11fae4[_0xcede('0x34')]=_[_0xcede('0x35')](_0x11fae4[_0xcede('0x30')],_0x11fae4['query']);_0x2c02a2['attributes']=_[_0xcede('0x35')](_0x11fae4[_0xcede('0x30')],qs[_0xcede('0x36')](_0x1aa855[_0xcede('0x32')]['fields']));_0x2c02a2[_0xcede('0x37')]=_0x2c02a2[_0xcede('0x37')][_0xcede('0x43')]?_0x2c02a2[_0xcede('0x37')]:_0x11fae4[_0xcede('0x30')];_0x2c02a2[_0xcede('0x3a')]=qs['sort'](_0x1aa855['query'][_0xcede('0x4c')]);_0x2c02a2[_0xcede('0x3d')]=qs[_0xcede('0x34')](_[_0xcede('0x3b')](_0x1aa855['query'],_0x11fae4['filters']));if(_0x1aa855[_0xcede('0x32')][_0xcede('0x3c')]){_0x2c02a2[_0xcede('0x3d')]=_[_0xcede('0x3e')](_0x2c02a2[_0xcede('0x3d')],{'$or':_[_0xcede('0x31')](_0x2c02a2[_0xcede('0x37')],function(_0x38fb7c){var _0x5eb765={};_0x5eb765[_0x38fb7c]={'$like':'%'+_0x1aa855[_0xcede('0x32')]['filter']+'%'};return _0x5eb765;})});}_0x2c02a2=_[_0xcede('0x3e')]({},_0x2c02a2,_0x1aa855[_0xcede('0x40')]);return _0x339d64[_0xcede('0x4d')](_0x2c02a2);}})['then'](function(_0x190feb){if(_0x190feb){_0x363e90=_0x190feb[_0xcede('0x43')];if(!_0x1aa855[_0xcede('0x32')][_0xcede('0x38')](_0xcede('0x39'))){_0x2c02a2[_0xcede('0x1e')]=qs[_0xcede('0x1e')](_0x1aa855['query'][_0xcede('0x1e')]);_0x2c02a2['offset']=qs['offset'](_0x1aa855[_0xcede('0x32')][_0xcede('0x1d')]);}return _0x339d64[_0xcede('0x4d')](_0x2c02a2);}})[_0xcede('0x25')](function(_0x9d597f){if(_0x9d597f){return _0x9d597f?{'count':_0x363e90,'rows':_0x9d597f}:null;}})[_0xcede('0x25')](respondWithResult(_0x4e7727,null))[_0xcede('0x46')](handleError(_0x4e7727,null));};exports['addConfiguration']=function(_0x25b9ec,_0x3f810f,_0x47155c){if(_0x25b9ec[_0xcede('0x49')]['id']){delete _0x25b9ec['body']['id'];}return db[_0xcede('0x2c')][_0xcede('0x4a')]({'where':{'id':_0x25b9ec['params']['id']}})[_0xcede('0x25')](handleEntityNotFound(_0x3f810f,null))[_0xcede('0x25')](function(_0x30d5a6){if(_0x30d5a6){_0x25b9ec[_0xcede('0x49')][_0xcede('0x4e')]=_0x30d5a6['id'];_0x25b9ec[_0xcede('0x49')][_0xcede('0x4f')]=integrations[_0xcede('0x50')](_0x25b9ec[_0xcede('0x49')][_0xcede('0x51')],_0x25b9ec[_0xcede('0x49')][_0xcede('0x2e')]);_0x25b9ec[_0xcede('0x49')][_0xcede('0x52')]=integrations[_0xcede('0x53')](_0x25b9ec[_0xcede('0x49')]['channel'],_0x25b9ec[_0xcede('0x49')][_0xcede('0x2e')]);return db[_0xcede('0x4b')]['create'](_0x25b9ec[_0xcede('0x49')],{'include':[{'model':db['ServicenowField'],'as':_0xcede('0x4f')},{'model':db[_0xcede('0x54')],'as':_0xcede('0x52')}]});}return null;})[_0xcede('0x25')](respondWithResult(_0x3f810f,null))[_0xcede('0x46')](handleError(_0x3f810f,null));};exports['getFields']=function(_0x219ee0,_0x4a2eea,_0x2c3ea1){var _0x4cd238=[_0xcede('0x55'),_0xcede('0x56'),_0xcede('0x57'),_0xcede('0x58'),_0xcede('0x59'),'notify',_0xcede('0x5a'),'severity','category'];var _0x10339=[_0xcede('0x5b'),_0xcede('0x55'),_0xcede('0x5c'),_0xcede('0x5d'),'upon_reject',_0xcede('0x5e'),_0xcede('0x5f'),_0xcede('0x56'),_0xcede('0x60'),_0xcede('0x61'),_0xcede('0x62'),'sys_updated_by',_0xcede('0x63'),'user_input','sys_created_on',_0xcede('0x64'),_0xcede('0x65'),_0xcede('0x66'),_0xcede('0x57'),_0xcede('0x3a'),'calendar_stc',_0xcede('0x67'),_0xcede('0x68'),'delivery_plan','impact',_0xcede('0x69'),_0xcede('0x6a'),_0xcede('0x6b'),_0xcede('0x6c'),'sys_domain_path',_0xcede('0x6d'),_0xcede('0x6e'),_0xcede('0x6f'),_0xcede('0x70'),_0xcede('0x71'),_0xcede('0x72'),_0xcede('0x73'),_0xcede('0x74'),'resolved_at',_0xcede('0x75'),_0xcede('0x76'),'subcategory',_0xcede('0x77'),'short_description',_0xcede('0x59'),_0xcede('0x78'),_0xcede('0x79'),_0xcede('0x7a'),_0xcede('0x7b'),'business_stc',_0xcede('0x7c'),_0xcede('0x7d'),_0xcede('0x7e'),_0xcede('0x7f'),_0xcede('0x80'),_0xcede('0x81'),_0xcede('0x82'),_0xcede('0x83'),'parent_incident',_0xcede('0x84'),_0xcede('0x85'),_0xcede('0x86'),_0xcede('0x5a'),'urgency','problem_id','company',_0xcede('0x87'),_0xcede('0x88'),'assigned_to','severity',_0xcede('0x89'),_0xcede('0x8a'),_0xcede('0x8b'),_0xcede('0x8c'),_0xcede('0x8d'),'sys_mod_count',_0xcede('0x8e'),_0xcede('0x8f'),_0xcede('0x90'),_0xcede('0x91'),_0xcede('0x92'),'location',_0xcede('0x93')];var _0x457283='';var _0xdbda6e='';var _0x3adbc6=[];var _0xd32303='';var _0x202a10='';var _0x2e8832=[];var _0x293f8f='';var _0x260da3='';var _0x558e8f={};var _0x93e20f='';return db[_0xcede('0x2c')][_0xcede('0x4a')]({'where':{'id':_0x219ee0['params']['id']},'attributes':['id',_0xcede('0x94'),'password',_0xcede('0x95'),_0xcede('0x96'),_0xcede('0x97')]})[_0xcede('0x25')](handleEntityNotFound(_0x4a2eea,null))[_0xcede('0x25')](function(_0x3cf8da){if(_0x3cf8da){_0x93e20f=_0x3cf8da['remoteUri'];var _0xf6aa26=_0x93e20f[_0xcede('0x98')](-0x1);if(_0xf6aa26==='/'){_0x93e20f=_0x93e20f[_0xcede('0x99')](0x0,_0x93e20f[_0xcede('0x9a')](_0xf6aa26));}_0x260da3=util[_0xcede('0x9b')]('%s/api/now/doc/table/schema/',_0x93e20f);_0x293f8f=util[_0xcede('0x9b')](_0xcede('0x9c'),_0x93e20f);_0x558e8f={'user':_0x3cf8da['username'],'pass':_0x3cf8da['password']};var _0xbfb1d2={'method':_0xcede('0x9d'),'uri':_0x260da3+_0xcede('0x9e'),'auth':_0x558e8f,'json':!![]};return rp(_0xbfb1d2);}})[_0xcede('0x25')](function(_0x22b9cb){if(_0x22b9cb[_0xcede('0x9f')][_0xcede('0x43')]>0x0){_0x457283=_0x22b9cb[_0xcede('0x9f')];}console[_0xcede('0xa0')](_0xcede('0xa1'),_0x457283);_0x2e8832=[];_0xdbda6e=Object['assign']([],_0x457283);_[_0xcede('0xa2')](_0xdbda6e,function(_0x5c5ddc){return!_0x4cd238[_0xcede('0xa3')](_0x5c5ddc['name']);});_0xdbda6e[_0xcede('0xa4')](function(_0x21c213){var _0x3a700d=createFieldObject(_0x293f8f,_0x558e8f,_0x21c213[_0xcede('0xa5')],_0x21c213[_0xcede('0x29')],_0x21c213[_0xcede('0xa6')],![]);_0x2e8832[_0xcede('0xa7')](_0x3a700d);});return Promise[_0xcede('0xa8')](_0x2e8832);})[_0xcede('0x25')](function(_0x1db38a){_0x3adbc6=_0x1db38a;_0xd32303=Object[_0xcede('0xa9')]([],_0x457283);console[_0xcede('0xa0')]('TCL:\x20_object',_0x457283);_[_0xcede('0xa2')](_0xd32303,function(_0x53d019){return _0x10339[_0xcede('0xa3')](_0x53d019[_0xcede('0x29')]);});console[_0xcede('0xa0')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0xd32303);_0x2e8832=[];_0xd32303[_0xcede('0xa4')](function(_0x34affe){var _0x2a4807=createFieldObject(_0x293f8f,_0x558e8f,_0x34affe[_0xcede('0xa5')],_0x34affe[_0xcede('0x29')],_0x34affe[_0xcede('0xa6')],!![]);_0x2e8832['push'](_0x2a4807);});return Promise['all'](_0x2e8832);})[_0xcede('0x25')](function(_0x4f8a17){_0x202a10=_0x4f8a17;var _0x26d9f9=_0x3adbc6[_0xcede('0xaa')](_0x202a10);return{'count':_0x26d9f9[_0xcede('0x43')],'rows':_0x26d9f9};})[_0xcede('0x25')](respondWithResult(_0x4a2eea,null))['catch'](function(_0x163f1c){console['log']('ServiceNow\x20error:\x20'+_0x163f1c);var _0x555b2e=_0x219ee0['query']['test']?0x1f4:_0x163f1c[_0xcede('0xab')]||0x1f4;logger[_0xcede('0x27')](_0x163f1c[_0xcede('0x28')]);delete _0x163f1c[_0xcede('0x29')];if(_0x555b2e===0x191){_0x555b2e=0x190;}_0x4a2eea[_0xcede('0x1b')](_0x555b2e)[_0xcede('0x2a')](_0x219ee0['query']['test']?{'message':_0xcede('0xac'),'statusCode':_0x163f1c[_0xcede('0xab')]}:_0x163f1c);});};function createFieldObject(_0x2c84da,_0x2cc23e,_0x2a38a3,_0x51217c,_0x4e744b,_0x338ea7){return new Promise(function(_0x5be5b4,_0x2abadf){var _0x52f6b1={'id':_0x51217c,'name':_0x4e744b,'custom':_0x338ea7};if(_0x2a38a3===_0xcede('0xad')){_0x52f6b1[_0xcede('0x40')]=[{'name':_0xcede('0xae'),'value':'true'},{'name':_0xcede('0xaf'),'value':'false'}];_0x5be5b4(_0x52f6b1);}else{var _0x469931={'method':_0xcede('0x9d'),'uri':_0x2c84da+'sys_choice?sysparm_query=name=incident^element='+_0x51217c,'auth':_0x2cc23e,'json':!![]};return rp(_0x469931)['then'](function(_0x860012){var _0x1ead88=[];if(_0x860012[_0xcede('0x9f')][_0xcede('0x43')]>0x0){_0x860012[_0xcede('0x9f')][_0xcede('0xa4')](function(_0x20adec){if(_0x20adec['inactive']===_0xcede('0xb0')){var _0x44a7a9={'name':_0x20adec[_0xcede('0xa6')],'value':_0x20adec[_0xcede('0xb1')]};_0x1ead88[_0xcede('0xa7')](_0x44a7a9);}});}_0x52f6b1[_0xcede('0x40')]=_0x1ead88;if(_0x52f6b1[_0xcede('0x40')][_0xcede('0x43')]>0x0){_0x5be5b4(_0x52f6b1);}else{if(_0x338ea7==![]){_0x5be5b4();}else{_0x5be5b4(_0x52f6b1);}}});}});}
\ No newline at end of file
+var _0xd07d=['then','error','stack','name','send','index','ServicenowAccount','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','merge','type','VIRTUAL','where','includeAll','include','findAll','rows','show','options','catch','create','body','find','params','destroy','getConfigurations','findOne','ServicenowConfiguration','order','nolimit','addConfiguration','AccountId','Subjects','channel','ServicenowField','Descriptions','getFields','hold_reason','subcategory','close_code','incident_state','severity','parent','made_sla','caused_by','watch_list','approval_history','number','resolved_by','sys_updated_by','user_input','sys_created_on','sys_domain','state','calendar_stc','closed_at','delivery_plan','active','business_service','sys_domain_path','rfc','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','work_start','assignment_group','additional_assignee_list','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','reassignment_count','comments','sys_mod_count','reopen_count','escalation','upon_approval','correlation_id','category','username','password','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','includes','forEach','internalType','label','push','all','assign','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','statusCode','test','Wrong\x20credentials','boolean','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update'];(function(_0xd6e85c,_0x36c4e3){var _0x5c26c2=function(_0x294345){while(--_0x294345){_0xd6e85c['push'](_0xd6e85c['shift']());}};_0x5c26c2(++_0x36c4e3);}(_0xd07d,0x146));var _0xdd07=function(_0x110d59,_0x50c4fb){_0x110d59=_0x110d59-0x0;var _0x2fce64=_0xd07d[_0x110d59];return _0x2fce64;};'use strict';var emlformat=require(_0xdd07('0x0'));var rimraf=require(_0xdd07('0x1'));var zipdir=require(_0xdd07('0x2'));var jsonpatch=require(_0xdd07('0x3'));var rp=require('request-promise');var moment=require(_0xdd07('0x4'));var BPromise=require(_0xdd07('0x5'));var Mustache=require(_0xdd07('0x6'));var util=require(_0xdd07('0x7'));var path=require(_0xdd07('0x8'));var sox=require('sox');var csv=require(_0xdd07('0x9'));var ejs=require(_0xdd07('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd07('0xb'));var squel=require(_0xdd07('0xc'));var crypto=require(_0xdd07('0xd'));var jsforce=require(_0xdd07('0xe'));var deskjs=require(_0xdd07('0xf'));var toCsv=require(_0xdd07('0x9'));var querystring=require(_0xdd07('0x10'));var Papa=require(_0xdd07('0x11'));var Redis=require('ioredis');var authService=require(_0xdd07('0x12'));var qs=require(_0xdd07('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd07('0x14'))(_0xdd07('0x15'));var utils=require(_0xdd07('0x16'));var config=require(_0xdd07('0x17'));var licenseUtil=require(_0xdd07('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0xdd07('0x19'));function respondWithStatusCode(_0x46b823,_0x1e50e6){_0x1e50e6=_0x1e50e6||0xcc;return function(_0x147216){if(_0x147216){return _0x46b823['sendStatus'](_0x1e50e6);}return _0x46b823[_0xdd07('0x1a')](_0x1e50e6)[_0xdd07('0x1b')]();};}function respondWithResult(_0x1083b2,_0x1cb7a0){_0x1cb7a0=_0x1cb7a0||0xc8;return function(_0x49012e){if(_0x49012e){return _0x1083b2['status'](_0x1cb7a0)[_0xdd07('0x1c')](_0x49012e);}};}function respondWithFilteredResult(_0x1e58fc,_0x508453){return function(_0x2102e6){if(_0x2102e6){var _0x20a0e8=typeof _0x508453['offset']===_0xdd07('0x1d')&&typeof _0x508453[_0xdd07('0x1e')]==='undefined';var _0x2d8d33=_0x2102e6[_0xdd07('0x1f')];var _0x11b62d=_0x20a0e8?0x0:_0x508453['offset'];var _0x18deee=_0x20a0e8?_0x2102e6['count']:_0x508453[_0xdd07('0x20')]+_0x508453['limit'];var _0x188e08;if(_0x18deee>=_0x2d8d33){_0x18deee=_0x2d8d33;_0x188e08=0xc8;}else{_0x188e08=0xce;}_0x1e58fc[_0xdd07('0x1a')](_0x188e08);return _0x1e58fc[_0xdd07('0x21')]('Content-Range',_0x11b62d+'-'+_0x18deee+'/'+_0x2d8d33)['json'](_0x2102e6);}return null;};}function patchUpdates(_0x1e4e73){return function(_0x3e3dc2){try{jsonpatch[_0xdd07('0x22')](_0x3e3dc2,_0x1e4e73,!![]);}catch(_0x1efc9b){return BPromise[_0xdd07('0x23')](_0x1efc9b);}return _0x3e3dc2[_0xdd07('0x24')]();};}function saveUpdates(_0x319881,_0x8d8321){return function(_0x458efd){if(_0x458efd){return _0x458efd[_0xdd07('0x25')](_0x319881)[_0xdd07('0x26')](function(_0x5802f2){return _0x5802f2;});}return null;};}function removeEntity(_0x4e8c37,_0x25ee7a){return function(_0x3e493e){if(_0x3e493e){return _0x3e493e['destroy']()[_0xdd07('0x26')](function(){_0x4e8c37['status'](0xcc)[_0xdd07('0x1b')]();});}};}function handleEntityNotFound(_0x16e166,_0x97aa5e){return function(_0x3aba52){if(!_0x3aba52){_0x16e166['sendStatus'](0x194);}return _0x3aba52;};}function handleError(_0x268298,_0x1eabe0){_0x1eabe0=_0x1eabe0||0x1f4;return function(_0x62c34c){logger[_0xdd07('0x27')](_0x62c34c[_0xdd07('0x28')]);if(_0x62c34c[_0xdd07('0x29')]){delete _0x62c34c['name'];}_0x268298[_0xdd07('0x1a')](_0x1eabe0)[_0xdd07('0x2a')](_0x62c34c);};}exports[_0xdd07('0x2b')]=function(_0x431a1e,_0x27bcad){var _0x11b430={},_0x48058f={},_0x3d55b0={'count':0x0,'rows':[]};var _0x56babd=_['map'](db[_0xdd07('0x2c')][_0xdd07('0x2d')],function(_0x17e99c){return{'name':_0x17e99c[_0xdd07('0x2e')],'type':_0x17e99c['type'][_0xdd07('0x2f')]};});_0x48058f[_0xdd07('0x30')]=_[_0xdd07('0x31')](_0x56babd,_0xdd07('0x29'));_0x48058f[_0xdd07('0x32')]=_[_0xdd07('0x33')](_0x431a1e['query']);_0x48058f[_0xdd07('0x34')]=_[_0xdd07('0x35')](_0x48058f['model'],_0x48058f[_0xdd07('0x32')]);_0x11b430['attributes']=_[_0xdd07('0x35')](_0x48058f['model'],qs[_0xdd07('0x36')](_0x431a1e[_0xdd07('0x32')][_0xdd07('0x36')]));_0x11b430['attributes']=_0x11b430[_0xdd07('0x37')][_0xdd07('0x38')]?_0x11b430[_0xdd07('0x37')]:_0x48058f[_0xdd07('0x30')];if(!_0x431a1e[_0xdd07('0x32')][_0xdd07('0x39')]('nolimit')){_0x11b430[_0xdd07('0x1e')]=qs[_0xdd07('0x1e')](_0x431a1e[_0xdd07('0x32')]['limit']);_0x11b430[_0xdd07('0x20')]=qs[_0xdd07('0x20')](_0x431a1e[_0xdd07('0x32')][_0xdd07('0x20')]);}_0x11b430['order']=qs['sort'](_0x431a1e[_0xdd07('0x32')][_0xdd07('0x3a')]);_0x11b430['where']=qs[_0xdd07('0x34')](_[_0xdd07('0x3b')](_0x431a1e['query'],_0x48058f[_0xdd07('0x34')]),_0x56babd);if(_0x431a1e[_0xdd07('0x32')][_0xdd07('0x3c')]){_0x11b430['where']=_[_0xdd07('0x3d')](_0x11b430['where'],{'$or':_[_0xdd07('0x31')](_0x56babd,function(_0x182c56){if(_0x182c56[_0xdd07('0x3e')]!==_0xdd07('0x3f')){var _0x5de26c={};_0x5de26c[_0x182c56[_0xdd07('0x29')]]={'$like':'%'+_0x431a1e[_0xdd07('0x32')][_0xdd07('0x3c')]+'%'};return _0x5de26c;}})});}_0x11b430=_[_0xdd07('0x3d')]({},_0x11b430,_0x431a1e['options']);var _0x133431={'where':_0x11b430[_0xdd07('0x40')]};return db[_0xdd07('0x2c')][_0xdd07('0x1f')](_0x133431)[_0xdd07('0x26')](function(_0x5c5d9f){_0x3d55b0[_0xdd07('0x1f')]=_0x5c5d9f;if(_0x431a1e[_0xdd07('0x32')][_0xdd07('0x41')]){_0x11b430[_0xdd07('0x42')]=[{'all':!![]}];}return db[_0xdd07('0x2c')][_0xdd07('0x43')](_0x11b430);})['then'](function(_0x488052){_0x3d55b0[_0xdd07('0x44')]=_0x488052;return _0x3d55b0;})[_0xdd07('0x26')](respondWithFilteredResult(_0x27bcad,_0x11b430))['catch'](handleError(_0x27bcad,null));};exports[_0xdd07('0x45')]=function(_0x34ed7f,_0x1f7d65){var _0x20a00f={'raw':![],'where':{'id':_0x34ed7f['params']['id']}},_0x319e54={};_0x319e54['model']=_[_0xdd07('0x33')](db[_0xdd07('0x2c')]['rawAttributes']);_0x319e54['query']=_[_0xdd07('0x33')](_0x34ed7f[_0xdd07('0x32')]);_0x319e54[_0xdd07('0x34')]=_[_0xdd07('0x35')](_0x319e54[_0xdd07('0x30')],_0x319e54[_0xdd07('0x32')]);_0x20a00f['attributes']=_[_0xdd07('0x35')](_0x319e54[_0xdd07('0x30')],qs[_0xdd07('0x36')](_0x34ed7f[_0xdd07('0x32')][_0xdd07('0x36')]));_0x20a00f[_0xdd07('0x37')]=_0x20a00f['attributes']['length']?_0x20a00f[_0xdd07('0x37')]:_0x319e54[_0xdd07('0x30')];if(_0x34ed7f[_0xdd07('0x32')]['includeAll']){_0x20a00f[_0xdd07('0x42')]=[{'all':!![]}];}_0x20a00f=_['merge']({},_0x20a00f,_0x34ed7f[_0xdd07('0x46')]);return db[_0xdd07('0x2c')]['find'](_0x20a00f)['then'](handleEntityNotFound(_0x1f7d65,null))[_0xdd07('0x26')](respondWithResult(_0x1f7d65,null))[_0xdd07('0x47')](handleError(_0x1f7d65,null));};exports[_0xdd07('0x48')]=function(_0x451014,_0xfe335b){return db['ServicenowAccount'][_0xdd07('0x48')](_0x451014[_0xdd07('0x49')],{})['then'](respondWithResult(_0xfe335b,0xc9))['catch'](handleError(_0xfe335b,null));};exports[_0xdd07('0x25')]=function(_0x2a8140,_0x35f098){if(_0x2a8140['body']['id']){delete _0x2a8140[_0xdd07('0x49')]['id'];}return db[_0xdd07('0x2c')][_0xdd07('0x4a')]({'where':{'id':_0x2a8140[_0xdd07('0x4b')]['id']}})['then'](handleEntityNotFound(_0x35f098,null))[_0xdd07('0x26')](saveUpdates(_0x2a8140[_0xdd07('0x49')],null))[_0xdd07('0x26')](respondWithResult(_0x35f098,null))[_0xdd07('0x47')](handleError(_0x35f098,null));};exports[_0xdd07('0x4c')]=function(_0x12eb1a,_0x52e621){return db['ServicenowAccount']['find']({'where':{'id':_0x12eb1a[_0xdd07('0x4b')]['id']}})[_0xdd07('0x26')](handleEntityNotFound(_0x52e621,null))['then'](removeEntity(_0x52e621,null))[_0xdd07('0x47')](handleError(_0x52e621,null));};exports[_0xdd07('0x4d')]=function(_0x22653d,_0x82235a,_0x57430a){var _0x319d27={};var _0x215f78={};var _0x5aa683;var _0xdc4f54;return db[_0xdd07('0x2c')][_0xdd07('0x4e')]({'where':{'id':_0x22653d['params']['id']}})[_0xdd07('0x26')](handleEntityNotFound(_0x82235a,null))['then'](function(_0x50b848){if(_0x50b848){_0x5aa683=_0x50b848;_0x215f78[_0xdd07('0x30')]=_[_0xdd07('0x33')](db[_0xdd07('0x4f')][_0xdd07('0x2d')]);_0x215f78[_0xdd07('0x32')]=_['keys'](_0x22653d[_0xdd07('0x32')]);_0x215f78['filters']=_['intersection'](_0x215f78['model'],_0x215f78[_0xdd07('0x32')]);_0x319d27[_0xdd07('0x37')]=_[_0xdd07('0x35')](_0x215f78[_0xdd07('0x30')],qs[_0xdd07('0x36')](_0x22653d[_0xdd07('0x32')][_0xdd07('0x36')]));_0x319d27[_0xdd07('0x37')]=_0x319d27['attributes']['length']?_0x319d27[_0xdd07('0x37')]:_0x215f78[_0xdd07('0x30')];_0x319d27[_0xdd07('0x50')]=qs[_0xdd07('0x3a')](_0x22653d[_0xdd07('0x32')]['sort']);_0x319d27[_0xdd07('0x40')]=qs[_0xdd07('0x34')](_['pick'](_0x22653d[_0xdd07('0x32')],_0x215f78[_0xdd07('0x34')]));if(_0x22653d[_0xdd07('0x32')][_0xdd07('0x3c')]){_0x319d27[_0xdd07('0x40')]=_[_0xdd07('0x3d')](_0x319d27[_0xdd07('0x40')],{'$or':_[_0xdd07('0x31')](_0x319d27['attributes'],function(_0x5f2a1c){var _0x21e396={};_0x21e396[_0x5f2a1c]={'$like':'%'+_0x22653d[_0xdd07('0x32')]['filter']+'%'};return _0x21e396;})});}_0x319d27=_[_0xdd07('0x3d')]({},_0x319d27,_0x22653d[_0xdd07('0x46')]);return _0x5aa683[_0xdd07('0x4d')](_0x319d27);}})[_0xdd07('0x26')](function(_0x137787){if(_0x137787){_0xdc4f54=_0x137787[_0xdd07('0x38')];if(!_0x22653d[_0xdd07('0x32')][_0xdd07('0x39')](_0xdd07('0x51'))){_0x319d27[_0xdd07('0x1e')]=qs['limit'](_0x22653d['query'][_0xdd07('0x1e')]);_0x319d27[_0xdd07('0x20')]=qs[_0xdd07('0x20')](_0x22653d['query'][_0xdd07('0x20')]);}return _0x5aa683[_0xdd07('0x4d')](_0x319d27);}})[_0xdd07('0x26')](function(_0x4f5e6c){if(_0x4f5e6c){return _0x4f5e6c?{'count':_0xdc4f54,'rows':_0x4f5e6c}:null;}})[_0xdd07('0x26')](respondWithResult(_0x82235a,null))[_0xdd07('0x47')](handleError(_0x82235a,null));};exports[_0xdd07('0x52')]=function(_0x40ccce,_0x454f48,_0x5e0594){if(_0x40ccce[_0xdd07('0x49')]['id']){delete _0x40ccce[_0xdd07('0x49')]['id'];}return db[_0xdd07('0x2c')][_0xdd07('0x4e')]({'where':{'id':_0x40ccce[_0xdd07('0x4b')]['id']}})[_0xdd07('0x26')](handleEntityNotFound(_0x454f48,null))['then'](function(_0x58610b){if(_0x58610b){_0x40ccce[_0xdd07('0x49')][_0xdd07('0x53')]=_0x58610b['id'];_0x40ccce[_0xdd07('0x49')][_0xdd07('0x54')]=integrations['getSubjects'](_0x40ccce[_0xdd07('0x49')][_0xdd07('0x55')],_0x40ccce[_0xdd07('0x49')][_0xdd07('0x3e')]);_0x40ccce[_0xdd07('0x49')]['Descriptions']=integrations['getDescriptions'](_0x40ccce[_0xdd07('0x49')][_0xdd07('0x55')],_0x40ccce[_0xdd07('0x49')]['type']);return db['ServicenowConfiguration'][_0xdd07('0x48')](_0x40ccce['body'],{'include':[{'model':db[_0xdd07('0x56')],'as':_0xdd07('0x54')},{'model':db[_0xdd07('0x56')],'as':_0xdd07('0x57')}]});}return null;})[_0xdd07('0x26')](respondWithResult(_0x454f48,null))[_0xdd07('0x47')](handleError(_0x454f48,null));};exports[_0xdd07('0x58')]=function(_0x4f636a,_0x327df5,_0x59d3ad){var _0x324748=['made_sla',_0xdd07('0x59'),'knowledge',_0xdd07('0x5a'),_0xdd07('0x5b'),'notify',_0xdd07('0x5c'),_0xdd07('0x5d'),'category'];var _0x3bb9ec=[_0xdd07('0x5e'),_0xdd07('0x5f'),_0xdd07('0x60'),_0xdd07('0x61'),'upon_reject','sys_updated_on','child_incidents',_0xdd07('0x59'),_0xdd07('0x62'),_0xdd07('0x63'),_0xdd07('0x64'),_0xdd07('0x65'),'opened_by',_0xdd07('0x66'),_0xdd07('0x67'),_0xdd07('0x68'),_0xdd07('0x69'),'sys_created_by','knowledge','order',_0xdd07('0x6a'),_0xdd07('0x6b'),'cmdb_ci',_0xdd07('0x6c'),'impact',_0xdd07('0x6d'),'work_notes_list',_0xdd07('0x6e'),'priority',_0xdd07('0x6f'),_0xdd07('0x70'),'time_worked',_0xdd07('0x71'),_0xdd07('0x72'),_0xdd07('0x73'),_0xdd07('0x74'),'work_end',_0xdd07('0x75'),_0xdd07('0x76'),_0xdd07('0x77'),_0xdd07('0x78'),'subcategory',_0xdd07('0x79'),_0xdd07('0x7a'),_0xdd07('0x5b'),'correlation_display','delivery_task',_0xdd07('0x7b'),_0xdd07('0x7c'),'business_stc',_0xdd07('0x7d'),'description',_0xdd07('0x7e'),_0xdd07('0x7f'),_0xdd07('0x80'),_0xdd07('0x81'),_0xdd07('0x82'),_0xdd07('0x83'),_0xdd07('0x84'),_0xdd07('0x85'),_0xdd07('0x86'),_0xdd07('0x87'),'incident_state',_0xdd07('0x88'),_0xdd07('0x89'),'company',_0xdd07('0x8a'),'activity_due','assigned_to','severity',_0xdd07('0x8b'),'sla_due','approval','comments_and_work_notes','due_date',_0xdd07('0x8c'),_0xdd07('0x8d'),'sys_tags',_0xdd07('0x8e'),_0xdd07('0x8f'),_0xdd07('0x90'),'location',_0xdd07('0x91')];var _0x2d3bd9='';var _0x42be01='';var _0x622c3a=[];var _0x211e6a='';var _0x29c4e3='';var _0x4ee418=[];var _0x2a0abc='';var _0x3d9af8='';var _0x2b80cb={};var _0x1339e6='';return db['ServicenowAccount'][_0xdd07('0x4e')]({'where':{'id':_0x4f636a['params']['id']},'attributes':['id',_0xdd07('0x92'),_0xdd07('0x93'),'email',_0xdd07('0x94'),'serverUrl']})['then'](handleEntityNotFound(_0x327df5,null))[_0xdd07('0x26')](function(_0x4fbf0d){if(_0x4fbf0d){_0x1339e6=_0x4fbf0d['remoteUri'];var _0x1c97a1=_0x1339e6[_0xdd07('0x95')](-0x1);if(_0x1c97a1==='/'){_0x1339e6=_0x1339e6[_0xdd07('0x96')](0x0,_0x1339e6[_0xdd07('0x97')](_0x1c97a1));}_0x3d9af8=util[_0xdd07('0x98')](_0xdd07('0x99'),_0x1339e6);_0x2a0abc=util[_0xdd07('0x98')](_0xdd07('0x9a'),_0x1339e6);_0x2b80cb={'user':_0x4fbf0d[_0xdd07('0x92')],'pass':_0x4fbf0d[_0xdd07('0x93')]};var _0x2e9ab7={'method':_0xdd07('0x9b'),'uri':_0x3d9af8+_0xdd07('0x9c'),'auth':_0x2b80cb,'json':!![]};return rp(_0x2e9ab7);}})['then'](function(_0x70e166){if(_0x70e166[_0xdd07('0x9d')][_0xdd07('0x38')]>0x0){_0x2d3bd9=_0x70e166[_0xdd07('0x9d')];}console[_0xdd07('0x9e')](_0xdd07('0x9f'),_0x2d3bd9);_0x4ee418=[];_0x42be01=Object['assign']([],_0x2d3bd9);_[_0xdd07('0xa0')](_0x42be01,function(_0x31afae){return!_0x324748[_0xdd07('0xa1')](_0x31afae['name']);});_0x42be01[_0xdd07('0xa2')](function(_0x848235){var _0x1e8fd2=createFieldObject(_0x2a0abc,_0x2b80cb,_0x848235[_0xdd07('0xa3')],_0x848235['name'],_0x848235[_0xdd07('0xa4')],![]);_0x4ee418[_0xdd07('0xa5')](_0x1e8fd2);});return Promise[_0xdd07('0xa6')](_0x4ee418);})['then'](function(_0x57ce88){_0x622c3a=_0x57ce88;_0x211e6a=Object[_0xdd07('0xa7')]([],_0x2d3bd9);console['log'](_0xdd07('0xa8'),_0x2d3bd9);_[_0xdd07('0xa0')](_0x211e6a,function(_0x5f4b95){return _0x3bb9ec[_0xdd07('0xa1')](_0x5f4b95[_0xdd07('0x29')]);});console[_0xdd07('0x9e')](_0xdd07('0xa9'),_0x211e6a);_0x4ee418=[];_0x211e6a[_0xdd07('0xa2')](function(_0x4306ea){var _0x5e85d1=createFieldObject(_0x2a0abc,_0x2b80cb,_0x4306ea['internalType'],_0x4306ea[_0xdd07('0x29')],_0x4306ea[_0xdd07('0xa4')],!![]);_0x4ee418[_0xdd07('0xa5')](_0x5e85d1);});return Promise[_0xdd07('0xa6')](_0x4ee418);})['then'](function(_0x1eab69){_0x29c4e3=_0x1eab69;var _0xa71686=_0x622c3a[_0xdd07('0xaa')](_0x29c4e3);return{'count':_0xa71686[_0xdd07('0x38')],'rows':_0xa71686};})[_0xdd07('0x26')](respondWithResult(_0x327df5,null))[_0xdd07('0x47')](function(_0x35913b){console[_0xdd07('0x9e')](_0xdd07('0xab')+_0x35913b);var _0x4289b6=_0x4f636a[_0xdd07('0x32')]['test']?0x1f4:_0x35913b[_0xdd07('0xac')]||0x1f4;logger[_0xdd07('0x27')](_0x35913b[_0xdd07('0x28')]);delete _0x35913b[_0xdd07('0x29')];if(_0x4289b6===0x191){_0x4289b6=0x190;}_0x327df5[_0xdd07('0x1a')](_0x4289b6)[_0xdd07('0x2a')](_0x4f636a[_0xdd07('0x32')][_0xdd07('0xad')]?{'message':_0xdd07('0xae'),'statusCode':_0x35913b[_0xdd07('0xac')]}:_0x35913b);});};function createFieldObject(_0x2ed9fc,_0x3988ab,_0x46c985,_0x63c968,_0x4078b2,_0x5d04be){return new Promise(function(_0x41b803,_0x2fd4e8){var _0x43b9e9={'id':_0x63c968,'name':_0x4078b2,'custom':_0x5d04be};if(_0x46c985===_0xdd07('0xaf')){_0x43b9e9[_0xdd07('0x46')]=[{'name':_0xdd07('0xb0'),'value':_0xdd07('0xb1')},{'name':_0xdd07('0xb2'),'value':'false'}];_0x41b803(_0x43b9e9);}else{var _0x4b51e9={'method':_0xdd07('0x9b'),'uri':_0x2ed9fc+_0xdd07('0xb3')+_0x63c968,'auth':_0x3988ab,'json':!![]};return rp(_0x4b51e9)[_0xdd07('0x26')](function(_0x34a1c9){var _0x25fe41=[];if(_0x34a1c9[_0xdd07('0x9d')][_0xdd07('0x38')]>0x0){_0x34a1c9['result'][_0xdd07('0xa2')](function(_0x4df568){if(_0x4df568[_0xdd07('0xb4')]==='false'){var _0x4f36fe={'name':_0x4df568['label'],'value':_0x4df568[_0xdd07('0xb5')]};_0x25fe41['push'](_0x4f36fe);}});}_0x43b9e9[_0xdd07('0x46')]=_0x25fe41;if(_0x43b9e9[_0xdd07('0x46')]['length']>0x0){_0x41b803(_0x43b9e9);}else{if(_0x5d04be==![]){_0x41b803();}else{_0x41b803(_0x43b9e9);}}});}});}
\ No newline at end of file
index 2b00d11..d7db09d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','api','bluebird','request-promise'];(function(_0x2b9c1c,_0x544757){var _0x44610b=function(_0x5191be){while(--_0x5191be){_0x2b9c1c['push'](_0x2b9c1c['shift']());}};_0x44610b(++_0x544757);}(_0x71ab,0x64));var _0xb71a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x71ab[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var logger=require('../../config/logger')(_0xb71a('0x1'));var moment=require('moment');var BPromise=require(_0xb71a('0x2'));var rp=require(_0xb71a('0x3'));var fs=require('fs');var path=require(_0xb71a('0x4'));var rimraf=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var attributes=require(_0xb71a('0x7'));var integrations=require(_0xb71a('0x8'));module[_0xb71a('0x9')]=function(_0x22c072,_0x35a84e){return _0x22c072[_0xb71a('0xa')](_0xb71a('0xb'),attributes,{'tableName':_0xb71a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x038b=['path','rimraf','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','util','../../config/logger','api','bluebird'];(function(_0x22adea,_0x5d7ca0){var _0x4f5ec2=function(_0x7359e6){while(--_0x7359e6){_0x22adea['push'](_0x22adea['shift']());}};_0x4f5ec2(++_0x5d7ca0);}(_0x038b,0x114));var _0xb038=function(_0x41a09e,_0x125b9d){_0x41a09e=_0x41a09e-0x0;var _0x3eaecb=_0x038b[_0x41a09e];return _0x3eaecb;};'use strict';var _=require('lodash');var util=require(_0xb038('0x0'));var logger=require(_0xb038('0x1'))(_0xb038('0x2'));var moment=require('moment');var BPromise=require(_0xb038('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb038('0x4'));var rimraf=require(_0xb038('0x5'));var config=require('../../config/environment');var attributes=require(_0xb038('0x6'));var integrations=require(_0xb038('0x7'));module['exports']=function(_0x54e1e7,_0x2e3e64){return _0x54e1e7[_0xb038('0x8')](_0xb038('0x9'),attributes,{'tableName':'int_servicenow_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f8004c..4623c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d18=['model','ShowServicenowAccount','find','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','map','include'];(function(_0x231c4d,_0x514bfe){var _0x1458fe=function(_0x5c2668){while(--_0x5c2668){_0x231c4d['push'](_0x231c4d['shift']());}};_0x1458fe(++_0x514bfe);}(_0x4d18,0x135));var _0x84d1=function(_0x12472c,_0x5b9c12){_0x12472c=_0x12472c-0x0;var _0x52c35a=_0x4d18[_0x12472c];return _0x52c35a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x84d1('0x0'));var BPromise=require(_0x84d1('0x1'));var rs=require(_0x84d1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x84d1('0x3'))['db'];var utils=require(_0x84d1('0x4'));var logger=require(_0x84d1('0x5'))('rpc');var config=require(_0x84d1('0x6'));var jayson=require(_0x84d1('0x7'));var client=jayson['client'][_0x84d1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x116526,_0x1a398a,_0x5589bf){return new BPromise(function(_0x495741,_0x4a16d8){return client['request'](_0x116526,_0x5589bf)[_0x84d1('0x9')](function(_0x2719e6){logger[_0x84d1('0xa')](_0x84d1('0xb'),_0x1a398a,_0x84d1('0xc'));logger[_0x84d1('0xd')](_0x84d1('0xe'),_0x1a398a,'request\x20sent',JSON[_0x84d1('0xf')](_0x2719e6));if(_0x2719e6[_0x84d1('0x10')]){if(_0x2719e6['error'][_0x84d1('0x11')]===0x1f4){logger[_0x84d1('0x10')](_0x84d1('0xb'),_0x1a398a,_0x2719e6['error']['message']);return _0x4a16d8(_0x2719e6[_0x84d1('0x10')][_0x84d1('0x12')]);}logger[_0x84d1('0x10')](_0x84d1('0xb'),_0x1a398a,_0x2719e6[_0x84d1('0x10')][_0x84d1('0x12')]);return _0x495741(_0x2719e6[_0x84d1('0x10')][_0x84d1('0x12')]);}else{logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x1a398a,_0x84d1('0xc'));_0x495741(_0x2719e6[_0x84d1('0x13')]['message']);}})[_0x84d1('0x14')](function(_0x3efed4){logger[_0x84d1('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x1a398a,_0x3efed4);_0x4a16d8(_0x3efed4);});});}exports[_0x84d1('0x15')]=function(_0x4a6e78){var _0x3a2790=this;return new Promise(function(_0x18163b,_0x85c6aa){return db[_0x84d1('0x16')][_0x84d1('0x17')]({'raw':_0x4a6e78[_0x84d1('0x18')]?_0x4a6e78[_0x84d1('0x18')][_0x84d1('0x19')]===undefined?!![]:![]:!![],'where':_0x4a6e78[_0x84d1('0x18')]?_0x4a6e78[_0x84d1('0x18')][_0x84d1('0x1a')]||null:null,'attributes':_0x4a6e78[_0x84d1('0x18')]?_0x4a6e78[_0x84d1('0x18')][_0x84d1('0x1b')]||null:null,'limit':_0x4a6e78[_0x84d1('0x18')]?_0x4a6e78[_0x84d1('0x18')][_0x84d1('0x1c')]||null:null,'include':_0x4a6e78['options']?_0x4a6e78[_0x84d1('0x18')]['include']?_[_0x84d1('0x1d')](_0x4a6e78[_0x84d1('0x18')][_0x84d1('0x1e')],function(_0x3d3115){return{'model':db[_0x3d3115[_0x84d1('0x1f')]],'as':_0x3d3115['as'],'attributes':_0x3d3115['attributes'],'include':_0x3d3115['include']?_[_0x84d1('0x1d')](_0x3d3115[_0x84d1('0x1e')],function(_0x3cff54){return{'model':db[_0x3cff54[_0x84d1('0x1f')]],'as':_0x3cff54['as'],'attributes':_0x3cff54[_0x84d1('0x1b')],'include':_0x3cff54[_0x84d1('0x1e')]?_[_0x84d1('0x1d')](_0x3cff54[_0x84d1('0x1e')],function(_0x271127){return{'model':db[_0x271127[_0x84d1('0x1f')]],'as':_0x271127['as'],'attributes':_0x271127[_0x84d1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x84d1('0x9')](function(_0x10558b){logger['info'](_0x84d1('0x15'),_0x4a6e78);logger[_0x84d1('0xd')](_0x84d1('0x15'),_0x4a6e78,JSON['stringify'](_0x10558b));_0x18163b(_0x10558b);})[_0x84d1('0x14')](function(_0x701e7f){logger['error'](_0x84d1('0x15'),_0x701e7f['message'],_0x4a6e78);_0x85c6aa(_0x3a2790['error'](0x1f4,_0x701e7f[_0x84d1('0x12')]));});});};exports[_0x84d1('0x20')]=function(_0x496b01){var _0x1b7e6c=this;return new Promise(function(_0xefd33a,_0x2a222d){return db[_0x84d1('0x16')][_0x84d1('0x21')]({'raw':_0x496b01['options']?_0x496b01[_0x84d1('0x18')][_0x84d1('0x19')]===undefined?!![]:![]:!![],'where':_0x496b01['options']?_0x496b01['options']['where']||null:null,'attributes':_0x496b01[_0x84d1('0x18')]?_0x496b01[_0x84d1('0x18')][_0x84d1('0x1b')]||null:null,'include':_0x496b01[_0x84d1('0x18')]?_0x496b01[_0x84d1('0x18')][_0x84d1('0x1e')]?_[_0x84d1('0x1d')](_0x496b01[_0x84d1('0x18')][_0x84d1('0x1e')],function(_0x159014){return{'model':db[_0x159014['model']],'as':_0x159014['as'],'attributes':_0x159014[_0x84d1('0x1b')],'include':_0x159014[_0x84d1('0x1e')]?_[_0x84d1('0x1d')](_0x159014[_0x84d1('0x1e')],function(_0x234bc8){return{'model':db[_0x234bc8[_0x84d1('0x1f')]],'as':_0x234bc8['as'],'attributes':_0x234bc8['attributes'],'include':_0x234bc8[_0x84d1('0x1e')]?_[_0x84d1('0x1d')](_0x234bc8[_0x84d1('0x1e')],function(_0x4c654d){return{'model':db[_0x4c654d[_0x84d1('0x1f')]],'as':_0x4c654d['as'],'attributes':_0x4c654d[_0x84d1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x84d1('0x9')](function(_0xf7da5e){logger[_0x84d1('0xa')]('ShowServicenowAccount',_0x496b01);logger[_0x84d1('0xd')](_0x84d1('0x20'),_0x496b01,JSON[_0x84d1('0xf')](_0xf7da5e));_0xefd33a(_0xf7da5e);})[_0x84d1('0x14')](function(_0x316b48){logger[_0x84d1('0x10')](_0x84d1('0x20'),_0x316b48[_0x84d1('0x12')],_0x496b01);_0x2a222d(_0x1b7e6c[_0x84d1('0x10')](0x1f4,_0x316b48[_0x84d1('0x12')]));});});};
\ No newline at end of file
+var _0x1f1d=['limit','include','map','model','attributes','debug','catch','ShowServicenowAccount','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where'];(function(_0x33079d,_0x3196f8){var _0x33a886=function(_0x18c360){while(--_0x18c360){_0x33079d['push'](_0x33079d['shift']());}};_0x33a886(++_0x3196f8);}(_0x1f1d,0x1d0));var _0xd1f1=function(_0x694df0,_0x11ac8b){_0x694df0=_0x694df0-0x0;var _0x5ccd66=_0x1f1d[_0x694df0];return _0x5ccd66;};'use strict';var _=require(_0xd1f1('0x0'));var util=require('util');var moment=require(_0xd1f1('0x1'));var BPromise=require(_0xd1f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd1f1('0x3'));var db=require(_0xd1f1('0x4'))['db'];var utils=require(_0xd1f1('0x5'));var logger=require('../../config/logger')(_0xd1f1('0x6'));var config=require(_0xd1f1('0x7'));var jayson=require(_0xd1f1('0x8'));var client=jayson[_0xd1f1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e0322,_0x420ebd,_0x4f9e86){return new BPromise(function(_0x16d34c,_0x540c98){return client[_0xd1f1('0xa')](_0x2e0322,_0x4f9e86)[_0xd1f1('0xb')](function(_0x13d87b){logger[_0xd1f1('0xc')](_0xd1f1('0xd'),_0x420ebd,_0xd1f1('0xe'));logger['debug'](_0xd1f1('0xf'),_0x420ebd,_0xd1f1('0xe'),JSON[_0xd1f1('0x10')](_0x13d87b));if(_0x13d87b['error']){if(_0x13d87b[_0xd1f1('0x11')][_0xd1f1('0x12')]===0x1f4){logger[_0xd1f1('0x11')](_0xd1f1('0xd'),_0x420ebd,_0x13d87b[_0xd1f1('0x11')][_0xd1f1('0x13')]);return _0x540c98(_0x13d87b[_0xd1f1('0x11')]['message']);}logger[_0xd1f1('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x420ebd,_0x13d87b['error'][_0xd1f1('0x13')]);return _0x16d34c(_0x13d87b[_0xd1f1('0x11')][_0xd1f1('0x13')]);}else{logger[_0xd1f1('0xc')](_0xd1f1('0xd'),_0x420ebd,_0xd1f1('0xe'));_0x16d34c(_0x13d87b['result'][_0xd1f1('0x13')]);}})['catch'](function(_0x2de41b){logger[_0xd1f1('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x420ebd,_0x2de41b);_0x540c98(_0x2de41b);});});}exports[_0xd1f1('0x14')]=function(_0x57718a){var _0x44ae0d=this;return new Promise(function(_0x3f4326,_0x41d9f5){return db[_0xd1f1('0x15')][_0xd1f1('0x16')]({'raw':_0x57718a[_0xd1f1('0x17')]?_0x57718a[_0xd1f1('0x17')][_0xd1f1('0x18')]===undefined?!![]:![]:!![],'where':_0x57718a[_0xd1f1('0x17')]?_0x57718a[_0xd1f1('0x17')][_0xd1f1('0x19')]||null:null,'attributes':_0x57718a[_0xd1f1('0x17')]?_0x57718a[_0xd1f1('0x17')]['attributes']||null:null,'limit':_0x57718a[_0xd1f1('0x17')]?_0x57718a['options'][_0xd1f1('0x1a')]||null:null,'include':_0x57718a[_0xd1f1('0x17')]?_0x57718a[_0xd1f1('0x17')][_0xd1f1('0x1b')]?_[_0xd1f1('0x1c')](_0x57718a[_0xd1f1('0x17')][_0xd1f1('0x1b')],function(_0x24a4dd){return{'model':db[_0x24a4dd[_0xd1f1('0x1d')]],'as':_0x24a4dd['as'],'attributes':_0x24a4dd[_0xd1f1('0x1e')],'include':_0x24a4dd[_0xd1f1('0x1b')]?_[_0xd1f1('0x1c')](_0x24a4dd[_0xd1f1('0x1b')],function(_0x5a48e8){return{'model':db[_0x5a48e8[_0xd1f1('0x1d')]],'as':_0x5a48e8['as'],'attributes':_0x5a48e8[_0xd1f1('0x1e')],'include':_0x5a48e8[_0xd1f1('0x1b')]?_[_0xd1f1('0x1c')](_0x5a48e8[_0xd1f1('0x1b')],function(_0x54f71d){return{'model':db[_0x54f71d[_0xd1f1('0x1d')]],'as':_0x54f71d['as'],'attributes':_0x54f71d[_0xd1f1('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x412d98){logger['info']('GetServicenowAccount',_0x57718a);logger[_0xd1f1('0x1f')](_0xd1f1('0x14'),_0x57718a,JSON[_0xd1f1('0x10')](_0x412d98));_0x3f4326(_0x412d98);})[_0xd1f1('0x20')](function(_0x541a11){logger['error']('GetServicenowAccount',_0x541a11[_0xd1f1('0x13')],_0x57718a);_0x41d9f5(_0x44ae0d['error'](0x1f4,_0x541a11[_0xd1f1('0x13')]));});});};exports[_0xd1f1('0x21')]=function(_0x2fe620){var _0x40fcdf=this;return new Promise(function(_0x39547e,_0x354c12){return db[_0xd1f1('0x15')][_0xd1f1('0x22')]({'raw':_0x2fe620[_0xd1f1('0x17')]?_0x2fe620[_0xd1f1('0x17')][_0xd1f1('0x18')]===undefined?!![]:![]:!![],'where':_0x2fe620[_0xd1f1('0x17')]?_0x2fe620[_0xd1f1('0x17')][_0xd1f1('0x19')]||null:null,'attributes':_0x2fe620[_0xd1f1('0x17')]?_0x2fe620[_0xd1f1('0x17')][_0xd1f1('0x1e')]||null:null,'include':_0x2fe620[_0xd1f1('0x17')]?_0x2fe620[_0xd1f1('0x17')]['include']?_['map'](_0x2fe620['options'][_0xd1f1('0x1b')],function(_0x18a388){return{'model':db[_0x18a388['model']],'as':_0x18a388['as'],'attributes':_0x18a388[_0xd1f1('0x1e')],'include':_0x18a388[_0xd1f1('0x1b')]?_[_0xd1f1('0x1c')](_0x18a388[_0xd1f1('0x1b')],function(_0x40abe9){return{'model':db[_0x40abe9[_0xd1f1('0x1d')]],'as':_0x40abe9['as'],'attributes':_0x40abe9[_0xd1f1('0x1e')],'include':_0x40abe9[_0xd1f1('0x1b')]?_['map'](_0x40abe9[_0xd1f1('0x1b')],function(_0x1e6112){return{'model':db[_0x1e6112[_0xd1f1('0x1d')]],'as':_0x1e6112['as'],'attributes':_0x1e6112[_0xd1f1('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26cd60){logger[_0xd1f1('0xc')](_0xd1f1('0x21'),_0x2fe620);logger['debug'](_0xd1f1('0x21'),_0x2fe620,JSON[_0xd1f1('0x10')](_0x26cd60));_0x39547e(_0x26cd60);})[_0xd1f1('0x20')](function(_0x4719cb){logger[_0xd1f1('0x11')](_0xd1f1('0x21'),_0x4719cb[_0xd1f1('0x13')],_0x2fe620);_0x354c12(_0x40fcdf[_0xd1f1('0x11')](0x1f4,_0x4719cb['message']));});});};
\ No newline at end of file
index a9e1859..2d98a0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8839=['../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x412945,_0xc93eeb){var _0x3b4f8c=function(_0x216b48){while(--_0x216b48){_0x412945['push'](_0x412945['shift']());}};_0x3b4f8c(++_0xc93eeb);}(_0x8839,0x162));var _0x9883=function(_0x141c5f,_0x3bf654){_0x141c5f=_0x141c5f-0x0;var _0x3e83c9=_0x8839[_0x141c5f];return _0x3e83c9;};'use strict';var multer=require(_0x9883('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9883('0x1'));var express=require(_0x9883('0x2'));var router=express[_0x9883('0x3')]();var fs_extra=require(_0x9883('0x4'));var auth=require(_0x9883('0x5'));var interaction=require(_0x9883('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router[_0x9883('0x7')]('/',auth[_0x9883('0x8')](),controller[_0x9883('0x9')]);router[_0x9883('0x7')](_0x9883('0xa'),auth[_0x9883('0x8')](),controller[_0x9883('0xb')]);router['get'](_0x9883('0xc'),auth['isAuthenticated'](),controller[_0x9883('0xd')]);router[_0x9883('0x7')](_0x9883('0xe'),auth[_0x9883('0x8')](),controller[_0x9883('0xf')]);router[_0x9883('0x7')](_0x9883('0x10'),auth[_0x9883('0x8')](),controller[_0x9883('0x11')]);router[_0x9883('0x12')]('/',auth[_0x9883('0x8')](),controller[_0x9883('0x13')]);router[_0x9883('0x14')](_0x9883('0xa'),auth[_0x9883('0x8')](),controller['update']);router[_0x9883('0x15')]('/:id',auth[_0x9883('0x8')](),controller[_0x9883('0x16')]);module[_0x9883('0x17')]=router;
\ No newline at end of file
+var _0x8a56=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','destroy','exports'];(function(_0x4ee4e9,_0x49f920){var _0x33d9f0=function(_0x2e708f){while(--_0x2e708f){_0x4ee4e9['push'](_0x4ee4e9['shift']());}};_0x33d9f0(++_0x49f920);}(_0x8a56,0xb0));var _0x68a5=function(_0x4d7116,_0xdb8175){_0x4d7116=_0x4d7116-0x0;var _0x4593dc=_0x8a56[_0x4d7116];return _0x4593dc;};'use strict';var multer=require(_0x68a5('0x0'));var util=require(_0x68a5('0x1'));var path=require(_0x68a5('0x2'));var timeout=require(_0x68a5('0x3'));var express=require(_0x68a5('0x4'));var router=express['Router']();var fs_extra=require(_0x68a5('0x5'));var auth=require(_0x68a5('0x6'));var interaction=require(_0x68a5('0x7'));var config=require(_0x68a5('0x8'));var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0x68a5('0x9')](),controller['index']);router[_0x68a5('0xa')](_0x68a5('0xb'),auth[_0x68a5('0x9')](),controller['show']);router['get'](_0x68a5('0xc'),auth[_0x68a5('0x9')](),controller[_0x68a5('0xd')]);router[_0x68a5('0xa')](_0x68a5('0xe'),auth[_0x68a5('0x9')](),controller[_0x68a5('0xf')]);router['get'](_0x68a5('0x10'),auth[_0x68a5('0x9')](),controller[_0x68a5('0x11')]);router[_0x68a5('0x12')]('/',auth['isAuthenticated'](),controller[_0x68a5('0x13')]);router['put'](_0x68a5('0xb'),auth[_0x68a5('0x9')](),controller['update']);router['delete'](_0x68a5('0xb'),auth[_0x68a5('0x9')](),controller[_0x68a5('0x14')]);module[_0x68a5('0x15')]=router;
\ No newline at end of file
index 53b9067..8bc0900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ba0=['STRING','sequelize'];(function(_0x2071e6,_0x20fd63){var _0x4d07c5=function(_0x4b8c5c){while(--_0x4b8c5c){_0x2071e6['push'](_0x2071e6['shift']());}};_0x4d07c5(++_0x20fd63);}(_0x6ba0,0xf7));var _0x06ba=function(_0x12dc5b,_0x1ec0ce){_0x12dc5b=_0x12dc5b-0x0;var _0x195263=_0x6ba0[_0x12dc5b];return _0x195263;};'use strict';var Sequelize=require(_0x06ba('0x0'));module['exports']={'name':{'type':Sequelize[_0x06ba('0x1')]},'description':{'type':Sequelize[_0x06ba('0x1')]}};
\ No newline at end of file
+var _0xa340=['STRING','exports'];(function(_0x358d2d,_0x4491e7){var _0x18c1a9=function(_0x52b09b){while(--_0x52b09b){_0x358d2d['push'](_0x358d2d['shift']());}};_0x18c1a9(++_0x4491e7);}(_0xa340,0x1e3));var _0x0a34=function(_0x3f7aac,_0x28dd25){_0x3f7aac=_0x3f7aac-0x0;var _0x49d26f=_0xa340[_0x3f7aac];return _0x49d26f;};'use strict';var Sequelize=require('sequelize');module[_0x0a34('0x0')]={'name':{'type':Sequelize[_0x0a34('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5b04120..f5bbcb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e52=['where','pick','filter','merge','VIRTUAL','includeAll','include','catch','show','params','rawAttributes','attributes','options','find','create','body','getFields','findOne','ServicenowField','order','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','sendStatus','stack','name','send','map','ServicenowConfiguration','fieldName','type','model','query','keys','filters','intersection','fields','length','hasOwnProperty','nolimit','sort'];(function(_0x21d8b0,_0x1a40aa){var _0x23169a=function(_0x5b4707){while(--_0x5b4707){_0x21d8b0['push'](_0x21d8b0['shift']());}};_0x23169a(++_0x1a40aa);}(_0x3e52,0xfd));var _0x23e5=function(_0x4dac82,_0x33afda){_0x4dac82=_0x4dac82-0x0;var _0x2a1f41=_0x3e52[_0x4dac82];return _0x2a1f41;};'use strict';var emlformat=require(_0x23e5('0x0'));var rimraf=require(_0x23e5('0x1'));var zipdir=require(_0x23e5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x23e5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x23e5('0x4'));var util=require(_0x23e5('0x5'));var path=require(_0x23e5('0x6'));var sox=require('sox');var csv=require(_0x23e5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x23e5('0x8'));var _=require('lodash');var squel=require(_0x23e5('0x9'));var crypto=require(_0x23e5('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x23e5('0xb'));var toCsv=require('to-csv');var querystring=require(_0x23e5('0xc'));var Papa=require(_0x23e5('0xd'));var Redis=require(_0x23e5('0xe'));var authService=require(_0x23e5('0xf'));var qs=require(_0x23e5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x23e5('0x11'));var logger=require(_0x23e5('0x12'))(_0x23e5('0x13'));var utils=require(_0x23e5('0x14'));var config=require(_0x23e5('0x15'));var licenseUtil=require(_0x23e5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2153bc,_0x577d32){_0x577d32=_0x577d32||0xcc;return function(_0x1dc61a){if(_0x1dc61a){return _0x2153bc['sendStatus'](_0x577d32);}return _0x2153bc[_0x23e5('0x17')](_0x577d32)[_0x23e5('0x18')]();};}function respondWithResult(_0x321d0b,_0x3566f6){_0x3566f6=_0x3566f6||0xc8;return function(_0x2bc173){if(_0x2bc173){return _0x321d0b['status'](_0x3566f6)[_0x23e5('0x19')](_0x2bc173);}};}function respondWithFilteredResult(_0x338b39,_0x179f30){return function(_0x4c5df4){if(_0x4c5df4){var _0x2f05b0=typeof _0x179f30[_0x23e5('0x1a')]===_0x23e5('0x1b')&&typeof _0x179f30[_0x23e5('0x1c')]==='undefined';var _0x363db6=_0x4c5df4['count'];var _0x2e47fb=_0x2f05b0?0x0:_0x179f30['offset'];var _0x456274=_0x2f05b0?_0x4c5df4[_0x23e5('0x1d')]:_0x179f30['offset']+_0x179f30[_0x23e5('0x1c')];var _0x427ec4;if(_0x456274>=_0x363db6){_0x456274=_0x363db6;_0x427ec4=0xc8;}else{_0x427ec4=0xce;}_0x338b39[_0x23e5('0x17')](_0x427ec4);return _0x338b39[_0x23e5('0x1e')](_0x23e5('0x1f'),_0x2e47fb+'-'+_0x456274+'/'+_0x363db6)[_0x23e5('0x19')](_0x4c5df4);}return null;};}function patchUpdates(_0x245bd7){return function(_0x129085){try{jsonpatch[_0x23e5('0x20')](_0x129085,_0x245bd7,!![]);}catch(_0x36c321){return BPromise['reject'](_0x36c321);}return _0x129085[_0x23e5('0x21')]();};}function saveUpdates(_0x4f001c,_0x3f5161){return function(_0xc24fc3){if(_0xc24fc3){return _0xc24fc3[_0x23e5('0x22')](_0x4f001c)['then'](function(_0x26faf1){return _0x26faf1;});}return null;};}function removeEntity(_0x25f048,_0xb8d4af){return function(_0x676f97){if(_0x676f97){return _0x676f97[_0x23e5('0x23')]()[_0x23e5('0x24')](function(){_0x25f048[_0x23e5('0x17')](0xcc)[_0x23e5('0x18')]();});}};}function handleEntityNotFound(_0x366819,_0x4de346){return function(_0x30380c){if(!_0x30380c){_0x366819[_0x23e5('0x25')](0x194);}return _0x30380c;};}function handleError(_0x27a051,_0x3dac38){_0x3dac38=_0x3dac38||0x1f4;return function(_0x245b5f){logger['error'](_0x245b5f[_0x23e5('0x26')]);if(_0x245b5f[_0x23e5('0x27')]){delete _0x245b5f['name'];}_0x27a051[_0x23e5('0x17')](_0x3dac38)[_0x23e5('0x28')](_0x245b5f);};}exports['index']=function(_0x10576c,_0x5dc1ee){var _0xf11560={},_0x3f53a7={},_0x5ee4df={'count':0x0,'rows':[]};var _0x2504cb=_[_0x23e5('0x29')](db[_0x23e5('0x2a')]['rawAttributes'],function(_0x559c7c){return{'name':_0x559c7c[_0x23e5('0x2b')],'type':_0x559c7c[_0x23e5('0x2c')]['key']};});_0x3f53a7[_0x23e5('0x2d')]=_[_0x23e5('0x29')](_0x2504cb,'name');_0x3f53a7[_0x23e5('0x2e')]=_[_0x23e5('0x2f')](_0x10576c[_0x23e5('0x2e')]);_0x3f53a7[_0x23e5('0x30')]=_[_0x23e5('0x31')](_0x3f53a7['model'],_0x3f53a7[_0x23e5('0x2e')]);_0xf11560['attributes']=_[_0x23e5('0x31')](_0x3f53a7[_0x23e5('0x2d')],qs[_0x23e5('0x32')](_0x10576c[_0x23e5('0x2e')][_0x23e5('0x32')]));_0xf11560['attributes']=_0xf11560['attributes'][_0x23e5('0x33')]?_0xf11560['attributes']:_0x3f53a7[_0x23e5('0x2d')];if(!_0x10576c[_0x23e5('0x2e')][_0x23e5('0x34')](_0x23e5('0x35'))){_0xf11560[_0x23e5('0x1c')]=qs[_0x23e5('0x1c')](_0x10576c[_0x23e5('0x2e')][_0x23e5('0x1c')]);_0xf11560[_0x23e5('0x1a')]=qs['offset'](_0x10576c[_0x23e5('0x2e')][_0x23e5('0x1a')]);}_0xf11560['order']=qs[_0x23e5('0x36')](_0x10576c[_0x23e5('0x2e')][_0x23e5('0x36')]);_0xf11560[_0x23e5('0x37')]=qs[_0x23e5('0x30')](_[_0x23e5('0x38')](_0x10576c[_0x23e5('0x2e')],_0x3f53a7['filters']),_0x2504cb);if(_0x10576c[_0x23e5('0x2e')][_0x23e5('0x39')]){_0xf11560[_0x23e5('0x37')]=_[_0x23e5('0x3a')](_0xf11560[_0x23e5('0x37')],{'$or':_['map'](_0x2504cb,function(_0x2576a7){if(_0x2576a7[_0x23e5('0x2c')]!==_0x23e5('0x3b')){var _0x435489={};_0x435489[_0x2576a7[_0x23e5('0x27')]]={'$like':'%'+_0x10576c[_0x23e5('0x2e')][_0x23e5('0x39')]+'%'};return _0x435489;}})});}_0xf11560=_[_0x23e5('0x3a')]({},_0xf11560,_0x10576c['options']);var _0xe0614f={'where':_0xf11560[_0x23e5('0x37')]};return db[_0x23e5('0x2a')][_0x23e5('0x1d')](_0xe0614f)[_0x23e5('0x24')](function(_0x489310){_0x5ee4df[_0x23e5('0x1d')]=_0x489310;if(_0x10576c['query'][_0x23e5('0x3c')]){_0xf11560[_0x23e5('0x3d')]=[{'all':!![]}];}return db[_0x23e5('0x2a')]['findAll'](_0xf11560);})['then'](function(_0x1d9503){_0x5ee4df['rows']=_0x1d9503;return _0x5ee4df;})[_0x23e5('0x24')](respondWithFilteredResult(_0x5dc1ee,_0xf11560))[_0x23e5('0x3e')](handleError(_0x5dc1ee,null));};exports[_0x23e5('0x3f')]=function(_0x4f453b,_0x12e987){var _0x5593ab={'raw':![],'where':{'id':_0x4f453b[_0x23e5('0x40')]['id']}},_0x2ce83e={};_0x2ce83e[_0x23e5('0x2d')]=_[_0x23e5('0x2f')](db[_0x23e5('0x2a')][_0x23e5('0x41')]);_0x2ce83e[_0x23e5('0x2e')]=_[_0x23e5('0x2f')](_0x4f453b[_0x23e5('0x2e')]);_0x2ce83e[_0x23e5('0x30')]=_[_0x23e5('0x31')](_0x2ce83e['model'],_0x2ce83e['query']);_0x5593ab[_0x23e5('0x42')]=_['intersection'](_0x2ce83e['model'],qs[_0x23e5('0x32')](_0x4f453b['query'][_0x23e5('0x32')]));_0x5593ab[_0x23e5('0x42')]=_0x5593ab[_0x23e5('0x42')]['length']?_0x5593ab[_0x23e5('0x42')]:_0x2ce83e[_0x23e5('0x2d')];if(_0x4f453b[_0x23e5('0x2e')][_0x23e5('0x3c')]){_0x5593ab[_0x23e5('0x3d')]=[{'all':!![]}];}_0x5593ab=_['merge']({},_0x5593ab,_0x4f453b[_0x23e5('0x43')]);return db[_0x23e5('0x2a')][_0x23e5('0x44')](_0x5593ab)[_0x23e5('0x24')](handleEntityNotFound(_0x12e987,null))[_0x23e5('0x24')](respondWithResult(_0x12e987,null))[_0x23e5('0x3e')](handleError(_0x12e987,null));};exports[_0x23e5('0x45')]=function(_0x279892,_0x1d2a1){return db[_0x23e5('0x2a')][_0x23e5('0x45')](_0x279892['body'],{})[_0x23e5('0x24')](respondWithResult(_0x1d2a1,0xc9))[_0x23e5('0x3e')](handleError(_0x1d2a1,null));};exports[_0x23e5('0x22')]=function(_0x356e4a,_0x50d0a7){if(_0x356e4a[_0x23e5('0x46')]['id']){delete _0x356e4a[_0x23e5('0x46')]['id'];}return db[_0x23e5('0x2a')]['find']({'where':{'id':_0x356e4a[_0x23e5('0x40')]['id']}})['then'](handleEntityNotFound(_0x50d0a7,null))[_0x23e5('0x24')](saveUpdates(_0x356e4a['body'],null))[_0x23e5('0x24')](respondWithResult(_0x50d0a7,null))[_0x23e5('0x3e')](handleError(_0x50d0a7,null));};exports[_0x23e5('0x23')]=function(_0x3ac06b,_0x211629){return db['ServicenowConfiguration']['find']({'where':{'id':_0x3ac06b[_0x23e5('0x40')]['id']}})[_0x23e5('0x24')](handleEntityNotFound(_0x211629,null))[_0x23e5('0x24')](removeEntity(_0x211629,null))[_0x23e5('0x3e')](handleError(_0x211629,null));};exports[_0x23e5('0x47')]=function(_0x4964cb,_0x28a847,_0x52bdae){var _0x5e1630={};var _0x5087a1={};var _0x12c9d3;var _0x2e3b7c;return db[_0x23e5('0x2a')][_0x23e5('0x48')]({'where':{'id':_0x4964cb[_0x23e5('0x40')]['id']}})['then'](handleEntityNotFound(_0x28a847,null))[_0x23e5('0x24')](function(_0x595cc2){if(_0x595cc2){_0x12c9d3=_0x595cc2;_0x5087a1[_0x23e5('0x2d')]=_[_0x23e5('0x2f')](db['ServicenowField']['rawAttributes']);_0x5087a1[_0x23e5('0x2e')]=_[_0x23e5('0x2f')](_0x4964cb['query']);_0x5087a1[_0x23e5('0x30')]=_['intersection'](_0x5087a1['model'],_0x5087a1[_0x23e5('0x2e')]);_0x5e1630[_0x23e5('0x42')]=_['intersection'](_0x5087a1[_0x23e5('0x2d')],qs[_0x23e5('0x32')](_0x4964cb['query']['fields']));_0x5e1630[_0x23e5('0x42')]=_0x5e1630[_0x23e5('0x42')][_0x23e5('0x33')]?_0x5e1630[_0x23e5('0x42')]:_0x5087a1[_0x23e5('0x2d')];_0x5e1630['order']=qs[_0x23e5('0x36')](_0x4964cb[_0x23e5('0x2e')][_0x23e5('0x36')]);_0x5e1630[_0x23e5('0x37')]=qs[_0x23e5('0x30')](_[_0x23e5('0x38')](_0x4964cb[_0x23e5('0x2e')],_0x5087a1[_0x23e5('0x30')]));if(_0x4964cb[_0x23e5('0x2e')][_0x23e5('0x39')]){_0x5e1630['where']=_[_0x23e5('0x3a')](_0x5e1630[_0x23e5('0x37')],{'$or':_[_0x23e5('0x29')](_0x5e1630[_0x23e5('0x42')],function(_0x280dd5){var _0x8a6b48={};_0x8a6b48[_0x280dd5]={'$like':'%'+_0x4964cb[_0x23e5('0x2e')][_0x23e5('0x39')]+'%'};return _0x8a6b48;})});}_0x5e1630=_[_0x23e5('0x3a')]({},_0x5e1630,_0x4964cb[_0x23e5('0x43')]);return _0x12c9d3[_0x23e5('0x47')](_0x5e1630);}})[_0x23e5('0x24')](function(_0x53a303){if(_0x53a303){_0x2e3b7c=_0x53a303[_0x23e5('0x33')];if(!_0x4964cb['query'][_0x23e5('0x34')]('nolimit')){_0x5e1630[_0x23e5('0x1c')]=qs['limit'](_0x4964cb[_0x23e5('0x2e')][_0x23e5('0x1c')]);_0x5e1630[_0x23e5('0x1a')]=qs['offset'](_0x4964cb[_0x23e5('0x2e')][_0x23e5('0x1a')]);}return _0x12c9d3[_0x23e5('0x47')](_0x5e1630);}})[_0x23e5('0x24')](function(_0x1067a6){if(_0x1067a6){return _0x1067a6?{'count':_0x2e3b7c,'rows':_0x1067a6}:null;}})[_0x23e5('0x24')](respondWithResult(_0x28a847,null))[_0x23e5('0x3e')](handleError(_0x28a847,null));};exports['getSubjects']=function(_0x9f1780,_0x155348,_0x1a4997){var _0x21c6a4={};var _0x235d06={};var _0x4297e4;var _0x184db7;return db[_0x23e5('0x2a')][_0x23e5('0x48')]({'where':{'id':_0x9f1780[_0x23e5('0x40')]['id']}})[_0x23e5('0x24')](handleEntityNotFound(_0x155348,null))[_0x23e5('0x24')](function(_0x9c0852){if(_0x9c0852){_0x4297e4=_0x9c0852;_0x235d06[_0x23e5('0x2d')]=_[_0x23e5('0x2f')](db[_0x23e5('0x49')][_0x23e5('0x41')]);_0x235d06[_0x23e5('0x2e')]=_['keys'](_0x9f1780[_0x23e5('0x2e')]);_0x235d06[_0x23e5('0x30')]=_[_0x23e5('0x31')](_0x235d06[_0x23e5('0x2d')],_0x235d06[_0x23e5('0x2e')]);_0x21c6a4[_0x23e5('0x42')]=_[_0x23e5('0x31')](_0x235d06[_0x23e5('0x2d')],qs[_0x23e5('0x32')](_0x9f1780['query'][_0x23e5('0x32')]));_0x21c6a4[_0x23e5('0x42')]=_0x21c6a4[_0x23e5('0x42')][_0x23e5('0x33')]?_0x21c6a4[_0x23e5('0x42')]:_0x235d06[_0x23e5('0x2d')];_0x21c6a4[_0x23e5('0x4a')]=qs[_0x23e5('0x36')](_0x9f1780[_0x23e5('0x2e')][_0x23e5('0x36')]);_0x21c6a4[_0x23e5('0x37')]=qs[_0x23e5('0x30')](_[_0x23e5('0x38')](_0x9f1780['query'],_0x235d06['filters']));if(_0x9f1780[_0x23e5('0x2e')][_0x23e5('0x39')]){_0x21c6a4[_0x23e5('0x37')]=_['merge'](_0x21c6a4[_0x23e5('0x37')],{'$or':_[_0x23e5('0x29')](_0x21c6a4[_0x23e5('0x42')],function(_0x2016a7){var _0x91951a={};_0x91951a[_0x2016a7]={'$like':'%'+_0x9f1780['query'][_0x23e5('0x39')]+'%'};return _0x91951a;})});}_0x21c6a4=_['merge']({},_0x21c6a4,_0x9f1780[_0x23e5('0x43')]);return _0x4297e4[_0x23e5('0x4b')](_0x21c6a4);}})[_0x23e5('0x24')](function(_0x2b915c){if(_0x2b915c){_0x184db7=_0x2b915c[_0x23e5('0x33')];if(!_0x9f1780[_0x23e5('0x2e')][_0x23e5('0x34')](_0x23e5('0x35'))){_0x21c6a4[_0x23e5('0x1c')]=qs['limit'](_0x9f1780[_0x23e5('0x2e')][_0x23e5('0x1c')]);_0x21c6a4[_0x23e5('0x1a')]=qs['offset'](_0x9f1780[_0x23e5('0x2e')]['offset']);}return _0x4297e4['getSubjects'](_0x21c6a4);}})[_0x23e5('0x24')](function(_0x5f5c03){if(_0x5f5c03){return _0x5f5c03?{'count':_0x184db7,'rows':_0x5f5c03}:null;}})['then'](respondWithResult(_0x155348,null))['catch'](handleError(_0x155348,null));};exports[_0x23e5('0x4c')]=function(_0x2469a,_0xa157b7,_0x37c73c){var _0xa3dbc8={};var _0x2e4b4c={};var _0x34d77e;var _0x57a699;return db[_0x23e5('0x2a')][_0x23e5('0x48')]({'where':{'id':_0x2469a['params']['id']}})[_0x23e5('0x24')](handleEntityNotFound(_0xa157b7,null))[_0x23e5('0x24')](function(_0x570426){if(_0x570426){_0x34d77e=_0x570426;_0x2e4b4c[_0x23e5('0x2d')]=_[_0x23e5('0x2f')](db[_0x23e5('0x49')][_0x23e5('0x41')]);_0x2e4b4c[_0x23e5('0x2e')]=_['keys'](_0x2469a['query']);_0x2e4b4c[_0x23e5('0x30')]=_['intersection'](_0x2e4b4c[_0x23e5('0x2d')],_0x2e4b4c[_0x23e5('0x2e')]);_0xa3dbc8[_0x23e5('0x42')]=_['intersection'](_0x2e4b4c[_0x23e5('0x2d')],qs['fields'](_0x2469a[_0x23e5('0x2e')][_0x23e5('0x32')]));_0xa3dbc8[_0x23e5('0x42')]=_0xa3dbc8[_0x23e5('0x42')][_0x23e5('0x33')]?_0xa3dbc8[_0x23e5('0x42')]:_0x2e4b4c[_0x23e5('0x2d')];_0xa3dbc8['order']=qs[_0x23e5('0x36')](_0x2469a[_0x23e5('0x2e')][_0x23e5('0x36')]);_0xa3dbc8['where']=qs[_0x23e5('0x30')](_['pick'](_0x2469a[_0x23e5('0x2e')],_0x2e4b4c[_0x23e5('0x30')]));if(_0x2469a[_0x23e5('0x2e')][_0x23e5('0x39')]){_0xa3dbc8[_0x23e5('0x37')]=_[_0x23e5('0x3a')](_0xa3dbc8['where'],{'$or':_[_0x23e5('0x29')](_0xa3dbc8[_0x23e5('0x42')],function(_0x3eb554){var _0x529e23={};_0x529e23[_0x3eb554]={'$like':'%'+_0x2469a[_0x23e5('0x2e')]['filter']+'%'};return _0x529e23;})});}_0xa3dbc8=_[_0x23e5('0x3a')]({},_0xa3dbc8,_0x2469a['options']);return _0x34d77e[_0x23e5('0x4c')](_0xa3dbc8);}})['then'](function(_0x54a505){if(_0x54a505){_0x57a699=_0x54a505[_0x23e5('0x33')];if(!_0x2469a[_0x23e5('0x2e')][_0x23e5('0x34')](_0x23e5('0x35'))){_0xa3dbc8[_0x23e5('0x1c')]=qs[_0x23e5('0x1c')](_0x2469a['query']['limit']);_0xa3dbc8['offset']=qs[_0x23e5('0x1a')](_0x2469a[_0x23e5('0x2e')][_0x23e5('0x1a')]);}return _0x34d77e[_0x23e5('0x4c')](_0xa3dbc8);}})['then'](function(_0x3ff009){if(_0x3ff009){return _0x3ff009?{'count':_0x57a699,'rows':_0x3ff009}:null;}})[_0x23e5('0x24')](respondWithResult(_0xa157b7,null))[_0x23e5('0x3e')](handleError(_0xa157b7,null));};
\ No newline at end of file
+var _0x93e6=['getSubjects','hasOwnProperty','getDescriptions','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','pick','filter','where','merge','map','VIRTUAL','includeAll','include','rows','catch','params','options','find','create','body','getFields','findOne','ServicenowField','nolimit'];(function(_0x443eb7,_0x58a780){var _0x5c6775=function(_0x5444ed){while(--_0x5444ed){_0x443eb7['push'](_0x443eb7['shift']());}};_0x5c6775(++_0x58a780);}(_0x93e6,0x133));var _0x693e=function(_0x318807,_0x51678f){_0x318807=_0x318807-0x0;var _0x33ea7e=_0x93e6[_0x318807];return _0x33ea7e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x693e('0x0'));var jsonpatch=require(_0x693e('0x1'));var rp=require('request-promise');var moment=require(_0x693e('0x2'));var BPromise=require(_0x693e('0x3'));var Mustache=require('mustache');var util=require(_0x693e('0x4'));var path=require(_0x693e('0x5'));var sox=require(_0x693e('0x6'));var csv=require(_0x693e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x693e('0x8'));var squel=require(_0x693e('0x9'));var crypto=require('crypto');var jsforce=require(_0x693e('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x693e('0x7'));var querystring=require(_0x693e('0xb'));var Papa=require(_0x693e('0xc'));var Redis=require(_0x693e('0xd'));var authService=require(_0x693e('0xe'));var qs=require(_0x693e('0xf'));var as=require(_0x693e('0x10'));var hardwareService=require(_0x693e('0x11'));var logger=require(_0x693e('0x12'))(_0x693e('0x13'));var utils=require(_0x693e('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x693e('0x15'))['db'];function respondWithStatusCode(_0x29752b,_0x13c143){_0x13c143=_0x13c143||0xcc;return function(_0x59cc25){if(_0x59cc25){return _0x29752b['sendStatus'](_0x13c143);}return _0x29752b['status'](_0x13c143)[_0x693e('0x16')]();};}function respondWithResult(_0x873560,_0x4a97f3){_0x4a97f3=_0x4a97f3||0xc8;return function(_0x346a60){if(_0x346a60){return _0x873560['status'](_0x4a97f3)[_0x693e('0x17')](_0x346a60);}};}function respondWithFilteredResult(_0x3cd8fd,_0x5e8627){return function(_0x17a330){if(_0x17a330){var _0x57d4b8=typeof _0x5e8627[_0x693e('0x18')]==='undefined'&&typeof _0x5e8627[_0x693e('0x19')]===_0x693e('0x1a');var _0x32b34a=_0x17a330[_0x693e('0x1b')];var _0x216b53=_0x57d4b8?0x0:_0x5e8627[_0x693e('0x18')];var _0x31e537=_0x57d4b8?_0x17a330['count']:_0x5e8627[_0x693e('0x18')]+_0x5e8627[_0x693e('0x19')];var _0x5a2960;if(_0x31e537>=_0x32b34a){_0x31e537=_0x32b34a;_0x5a2960=0xc8;}else{_0x5a2960=0xce;}_0x3cd8fd[_0x693e('0x1c')](_0x5a2960);return _0x3cd8fd[_0x693e('0x1d')](_0x693e('0x1e'),_0x216b53+'-'+_0x31e537+'/'+_0x32b34a)[_0x693e('0x17')](_0x17a330);}return null;};}function patchUpdates(_0x3b722d){return function(_0x2bc997){try{jsonpatch[_0x693e('0x1f')](_0x2bc997,_0x3b722d,!![]);}catch(_0x495161){return BPromise['reject'](_0x495161);}return _0x2bc997[_0x693e('0x20')]();};}function saveUpdates(_0x65c804,_0x403ec6){return function(_0x5c8e15){if(_0x5c8e15){return _0x5c8e15[_0x693e('0x21')](_0x65c804)[_0x693e('0x22')](function(_0x4b7d2d){return _0x4b7d2d;});}return null;};}function removeEntity(_0x49516c,_0x5562f7){return function(_0x47670b){if(_0x47670b){return _0x47670b[_0x693e('0x23')]()[_0x693e('0x22')](function(){_0x49516c[_0x693e('0x1c')](0xcc)[_0x693e('0x16')]();});}};}function handleEntityNotFound(_0x2f54ca,_0x3fc85c){return function(_0x410438){if(!_0x410438){_0x2f54ca[_0x693e('0x24')](0x194);}return _0x410438;};}function handleError(_0x5d9069,_0x33ea06){_0x33ea06=_0x33ea06||0x1f4;return function(_0x1ce229){logger['error'](_0x1ce229['stack']);if(_0x1ce229[_0x693e('0x25')]){delete _0x1ce229[_0x693e('0x25')];}_0x5d9069['status'](_0x33ea06)[_0x693e('0x26')](_0x1ce229);};}exports['index']=function(_0x2a2c49,_0x35757d){var _0xe65c1d={},_0x1dc24b={},_0x6b1fa5={'count':0x0,'rows':[]};var _0x4656fc=_['map'](db[_0x693e('0x27')][_0x693e('0x28')],function(_0x4526a3){return{'name':_0x4526a3[_0x693e('0x29')],'type':_0x4526a3[_0x693e('0x2a')][_0x693e('0x2b')]};});_0x1dc24b[_0x693e('0x2c')]=_['map'](_0x4656fc,_0x693e('0x25'));_0x1dc24b[_0x693e('0x2d')]=_[_0x693e('0x2e')](_0x2a2c49['query']);_0x1dc24b[_0x693e('0x2f')]=_[_0x693e('0x30')](_0x1dc24b[_0x693e('0x2c')],_0x1dc24b['query']);_0xe65c1d['attributes']=_['intersection'](_0x1dc24b[_0x693e('0x2c')],qs['fields'](_0x2a2c49[_0x693e('0x2d')][_0x693e('0x31')]));_0xe65c1d['attributes']=_0xe65c1d[_0x693e('0x32')][_0x693e('0x33')]?_0xe65c1d[_0x693e('0x32')]:_0x1dc24b[_0x693e('0x2c')];if(!_0x2a2c49[_0x693e('0x2d')]['hasOwnProperty']('nolimit')){_0xe65c1d[_0x693e('0x19')]=qs[_0x693e('0x19')](_0x2a2c49[_0x693e('0x2d')][_0x693e('0x19')]);_0xe65c1d['offset']=qs[_0x693e('0x18')](_0x2a2c49[_0x693e('0x2d')][_0x693e('0x18')]);}_0xe65c1d[_0x693e('0x34')]=qs['sort'](_0x2a2c49[_0x693e('0x2d')][_0x693e('0x35')]);_0xe65c1d['where']=qs[_0x693e('0x2f')](_[_0x693e('0x36')](_0x2a2c49[_0x693e('0x2d')],_0x1dc24b['filters']),_0x4656fc);if(_0x2a2c49['query'][_0x693e('0x37')]){_0xe65c1d[_0x693e('0x38')]=_[_0x693e('0x39')](_0xe65c1d[_0x693e('0x38')],{'$or':_[_0x693e('0x3a')](_0x4656fc,function(_0x311f72){if(_0x311f72[_0x693e('0x2a')]!==_0x693e('0x3b')){var _0x375def={};_0x375def[_0x311f72[_0x693e('0x25')]]={'$like':'%'+_0x2a2c49[_0x693e('0x2d')][_0x693e('0x37')]+'%'};return _0x375def;}})});}_0xe65c1d=_[_0x693e('0x39')]({},_0xe65c1d,_0x2a2c49['options']);var _0x5344fb={'where':_0xe65c1d['where']};return db['ServicenowConfiguration'][_0x693e('0x1b')](_0x5344fb)[_0x693e('0x22')](function(_0x43c52b){_0x6b1fa5[_0x693e('0x1b')]=_0x43c52b;if(_0x2a2c49[_0x693e('0x2d')][_0x693e('0x3c')]){_0xe65c1d[_0x693e('0x3d')]=[{'all':!![]}];}return db[_0x693e('0x27')]['findAll'](_0xe65c1d);})['then'](function(_0x25af30){_0x6b1fa5[_0x693e('0x3e')]=_0x25af30;return _0x6b1fa5;})[_0x693e('0x22')](respondWithFilteredResult(_0x35757d,_0xe65c1d))[_0x693e('0x3f')](handleError(_0x35757d,null));};exports['show']=function(_0x33b10e,_0x5ef63a){var _0x2cad5e={'raw':![],'where':{'id':_0x33b10e[_0x693e('0x40')]['id']}},_0x366bf7={};_0x366bf7[_0x693e('0x2c')]=_[_0x693e('0x2e')](db['ServicenowConfiguration'][_0x693e('0x28')]);_0x366bf7[_0x693e('0x2d')]=_[_0x693e('0x2e')](_0x33b10e[_0x693e('0x2d')]);_0x366bf7['filters']=_[_0x693e('0x30')](_0x366bf7['model'],_0x366bf7['query']);_0x2cad5e['attributes']=_[_0x693e('0x30')](_0x366bf7['model'],qs[_0x693e('0x31')](_0x33b10e[_0x693e('0x2d')][_0x693e('0x31')]));_0x2cad5e[_0x693e('0x32')]=_0x2cad5e[_0x693e('0x32')][_0x693e('0x33')]?_0x2cad5e['attributes']:_0x366bf7[_0x693e('0x2c')];if(_0x33b10e[_0x693e('0x2d')][_0x693e('0x3c')]){_0x2cad5e[_0x693e('0x3d')]=[{'all':!![]}];}_0x2cad5e=_['merge']({},_0x2cad5e,_0x33b10e[_0x693e('0x41')]);return db[_0x693e('0x27')][_0x693e('0x42')](_0x2cad5e)[_0x693e('0x22')](handleEntityNotFound(_0x5ef63a,null))[_0x693e('0x22')](respondWithResult(_0x5ef63a,null))[_0x693e('0x3f')](handleError(_0x5ef63a,null));};exports[_0x693e('0x43')]=function(_0x56c139,_0x46d806){return db[_0x693e('0x27')]['create'](_0x56c139[_0x693e('0x44')],{})[_0x693e('0x22')](respondWithResult(_0x46d806,0xc9))[_0x693e('0x3f')](handleError(_0x46d806,null));};exports[_0x693e('0x21')]=function(_0xc11e39,_0x377795){if(_0xc11e39['body']['id']){delete _0xc11e39[_0x693e('0x44')]['id'];}return db[_0x693e('0x27')][_0x693e('0x42')]({'where':{'id':_0xc11e39[_0x693e('0x40')]['id']}})[_0x693e('0x22')](handleEntityNotFound(_0x377795,null))['then'](saveUpdates(_0xc11e39[_0x693e('0x44')],null))[_0x693e('0x22')](respondWithResult(_0x377795,null))[_0x693e('0x3f')](handleError(_0x377795,null));};exports['destroy']=function(_0x195ec4,_0x989eb4){return db[_0x693e('0x27')]['find']({'where':{'id':_0x195ec4[_0x693e('0x40')]['id']}})['then'](handleEntityNotFound(_0x989eb4,null))[_0x693e('0x22')](removeEntity(_0x989eb4,null))['catch'](handleError(_0x989eb4,null));};exports[_0x693e('0x45')]=function(_0x5115aa,_0x355a27,_0x322117){var _0x47ebba={};var _0x1f81a0={};var _0x4dd07f;var _0x524038;return db[_0x693e('0x27')][_0x693e('0x46')]({'where':{'id':_0x5115aa[_0x693e('0x40')]['id']}})[_0x693e('0x22')](handleEntityNotFound(_0x355a27,null))[_0x693e('0x22')](function(_0x596120){if(_0x596120){_0x4dd07f=_0x596120;_0x1f81a0['model']=_[_0x693e('0x2e')](db[_0x693e('0x47')][_0x693e('0x28')]);_0x1f81a0[_0x693e('0x2d')]=_[_0x693e('0x2e')](_0x5115aa['query']);_0x1f81a0[_0x693e('0x2f')]=_[_0x693e('0x30')](_0x1f81a0[_0x693e('0x2c')],_0x1f81a0['query']);_0x47ebba[_0x693e('0x32')]=_[_0x693e('0x30')](_0x1f81a0[_0x693e('0x2c')],qs[_0x693e('0x31')](_0x5115aa['query'][_0x693e('0x31')]));_0x47ebba[_0x693e('0x32')]=_0x47ebba[_0x693e('0x32')][_0x693e('0x33')]?_0x47ebba[_0x693e('0x32')]:_0x1f81a0[_0x693e('0x2c')];_0x47ebba['order']=qs[_0x693e('0x35')](_0x5115aa[_0x693e('0x2d')][_0x693e('0x35')]);_0x47ebba[_0x693e('0x38')]=qs[_0x693e('0x2f')](_[_0x693e('0x36')](_0x5115aa[_0x693e('0x2d')],_0x1f81a0[_0x693e('0x2f')]));if(_0x5115aa[_0x693e('0x2d')][_0x693e('0x37')]){_0x47ebba['where']=_[_0x693e('0x39')](_0x47ebba[_0x693e('0x38')],{'$or':_[_0x693e('0x3a')](_0x47ebba['attributes'],function(_0x46e96b){var _0x5e6f95={};_0x5e6f95[_0x46e96b]={'$like':'%'+_0x5115aa['query'][_0x693e('0x37')]+'%'};return _0x5e6f95;})});}_0x47ebba=_['merge']({},_0x47ebba,_0x5115aa[_0x693e('0x41')]);return _0x4dd07f[_0x693e('0x45')](_0x47ebba);}})[_0x693e('0x22')](function(_0x5d7930){if(_0x5d7930){_0x524038=_0x5d7930[_0x693e('0x33')];if(!_0x5115aa[_0x693e('0x2d')]['hasOwnProperty'](_0x693e('0x48'))){_0x47ebba[_0x693e('0x19')]=qs[_0x693e('0x19')](_0x5115aa['query']['limit']);_0x47ebba[_0x693e('0x18')]=qs[_0x693e('0x18')](_0x5115aa[_0x693e('0x2d')][_0x693e('0x18')]);}return _0x4dd07f[_0x693e('0x45')](_0x47ebba);}})[_0x693e('0x22')](function(_0x566427){if(_0x566427){return _0x566427?{'count':_0x524038,'rows':_0x566427}:null;}})[_0x693e('0x22')](respondWithResult(_0x355a27,null))[_0x693e('0x3f')](handleError(_0x355a27,null));};exports[_0x693e('0x49')]=function(_0x493992,_0x2232d3,_0x31c55e){var _0x571b43={};var _0x11d1c6={};var _0x555a44;var _0x442e53;return db['ServicenowConfiguration'][_0x693e('0x46')]({'where':{'id':_0x493992[_0x693e('0x40')]['id']}})[_0x693e('0x22')](handleEntityNotFound(_0x2232d3,null))[_0x693e('0x22')](function(_0x1e6d6b){if(_0x1e6d6b){_0x555a44=_0x1e6d6b;_0x11d1c6[_0x693e('0x2c')]=_[_0x693e('0x2e')](db[_0x693e('0x47')][_0x693e('0x28')]);_0x11d1c6[_0x693e('0x2d')]=_['keys'](_0x493992[_0x693e('0x2d')]);_0x11d1c6[_0x693e('0x2f')]=_[_0x693e('0x30')](_0x11d1c6[_0x693e('0x2c')],_0x11d1c6[_0x693e('0x2d')]);_0x571b43['attributes']=_['intersection'](_0x11d1c6['model'],qs[_0x693e('0x31')](_0x493992['query'][_0x693e('0x31')]));_0x571b43[_0x693e('0x32')]=_0x571b43[_0x693e('0x32')]['length']?_0x571b43[_0x693e('0x32')]:_0x11d1c6[_0x693e('0x2c')];_0x571b43[_0x693e('0x34')]=qs[_0x693e('0x35')](_0x493992[_0x693e('0x2d')][_0x693e('0x35')]);_0x571b43[_0x693e('0x38')]=qs[_0x693e('0x2f')](_['pick'](_0x493992[_0x693e('0x2d')],_0x11d1c6[_0x693e('0x2f')]));if(_0x493992[_0x693e('0x2d')][_0x693e('0x37')]){_0x571b43[_0x693e('0x38')]=_[_0x693e('0x39')](_0x571b43[_0x693e('0x38')],{'$or':_[_0x693e('0x3a')](_0x571b43[_0x693e('0x32')],function(_0x522a1e){var _0x59a306={};_0x59a306[_0x522a1e]={'$like':'%'+_0x493992[_0x693e('0x2d')][_0x693e('0x37')]+'%'};return _0x59a306;})});}_0x571b43=_[_0x693e('0x39')]({},_0x571b43,_0x493992[_0x693e('0x41')]);return _0x555a44[_0x693e('0x49')](_0x571b43);}})[_0x693e('0x22')](function(_0x51d593){if(_0x51d593){_0x442e53=_0x51d593[_0x693e('0x33')];if(!_0x493992[_0x693e('0x2d')][_0x693e('0x4a')]('nolimit')){_0x571b43['limit']=qs['limit'](_0x493992['query'][_0x693e('0x19')]);_0x571b43[_0x693e('0x18')]=qs[_0x693e('0x18')](_0x493992[_0x693e('0x2d')][_0x693e('0x18')]);}return _0x555a44[_0x693e('0x49')](_0x571b43);}})['then'](function(_0x376984){if(_0x376984){return _0x376984?{'count':_0x442e53,'rows':_0x376984}:null;}})[_0x693e('0x22')](respondWithResult(_0x2232d3,null))[_0x693e('0x3f')](handleError(_0x2232d3,null));};exports[_0x693e('0x4b')]=function(_0x206ad5,_0x4cebef,_0x1a29ff){var _0x3c0264={};var _0x512477={};var _0x5db006;var _0x27a439;return db['ServicenowConfiguration'][_0x693e('0x46')]({'where':{'id':_0x206ad5['params']['id']}})[_0x693e('0x22')](handleEntityNotFound(_0x4cebef,null))[_0x693e('0x22')](function(_0x543c5d){if(_0x543c5d){_0x5db006=_0x543c5d;_0x512477['model']=_[_0x693e('0x2e')](db[_0x693e('0x47')]['rawAttributes']);_0x512477['query']=_[_0x693e('0x2e')](_0x206ad5['query']);_0x512477[_0x693e('0x2f')]=_[_0x693e('0x30')](_0x512477[_0x693e('0x2c')],_0x512477[_0x693e('0x2d')]);_0x3c0264[_0x693e('0x32')]=_[_0x693e('0x30')](_0x512477['model'],qs[_0x693e('0x31')](_0x206ad5[_0x693e('0x2d')][_0x693e('0x31')]));_0x3c0264[_0x693e('0x32')]=_0x3c0264[_0x693e('0x32')][_0x693e('0x33')]?_0x3c0264[_0x693e('0x32')]:_0x512477[_0x693e('0x2c')];_0x3c0264[_0x693e('0x34')]=qs['sort'](_0x206ad5[_0x693e('0x2d')]['sort']);_0x3c0264[_0x693e('0x38')]=qs[_0x693e('0x2f')](_[_0x693e('0x36')](_0x206ad5[_0x693e('0x2d')],_0x512477[_0x693e('0x2f')]));if(_0x206ad5[_0x693e('0x2d')][_0x693e('0x37')]){_0x3c0264[_0x693e('0x38')]=_[_0x693e('0x39')](_0x3c0264[_0x693e('0x38')],{'$or':_[_0x693e('0x3a')](_0x3c0264['attributes'],function(_0x101c86){var _0x17da33={};_0x17da33[_0x101c86]={'$like':'%'+_0x206ad5['query'][_0x693e('0x37')]+'%'};return _0x17da33;})});}_0x3c0264=_['merge']({},_0x3c0264,_0x206ad5[_0x693e('0x41')]);return _0x5db006[_0x693e('0x4b')](_0x3c0264);}})[_0x693e('0x22')](function(_0x38394e){if(_0x38394e){_0x27a439=_0x38394e['length'];if(!_0x206ad5[_0x693e('0x2d')][_0x693e('0x4a')](_0x693e('0x48'))){_0x3c0264[_0x693e('0x19')]=qs[_0x693e('0x19')](_0x206ad5[_0x693e('0x2d')][_0x693e('0x19')]);_0x3c0264[_0x693e('0x18')]=qs[_0x693e('0x18')](_0x206ad5[_0x693e('0x2d')][_0x693e('0x18')]);}return _0x5db006[_0x693e('0x4b')](_0x3c0264);}})[_0x693e('0x22')](function(_0x593288){if(_0x593288){return _0x593288?{'count':_0x27a439,'rows':_0x593288}:null;}})[_0x693e('0x22')](respondWithResult(_0x4cebef,null))[_0x693e('0x3f')](handleError(_0x4cebef,null));};
\ No newline at end of file
index 1ef7429..7c38e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6947=['./intServicenowConfiguration.attributes','exports','define','int_servicenow_configurations','util','api','moment','bluebird','request-promise','../../config/environment'];(function(_0xbbdaba,_0x521c6f){var _0x2cdc06=function(_0x27b975){while(--_0x27b975){_0xbbdaba['push'](_0xbbdaba['shift']());}};_0x2cdc06(++_0x521c6f);}(_0x6947,0x72));var _0x7694=function(_0x3d5bfb,_0x58501e){_0x3d5bfb=_0x3d5bfb-0x0;var _0x520ddf=_0x6947[_0x3d5bfb];return _0x520ddf;};'use strict';var _=require('lodash');var util=require(_0x7694('0x0'));var logger=require('../../config/logger')(_0x7694('0x1'));var moment=require(_0x7694('0x2'));var BPromise=require(_0x7694('0x3'));var rp=require(_0x7694('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7694('0x5'));var attributes=require(_0x7694('0x6'));module[_0x7694('0x7')]=function(_0x5730,_0x36776b){return _0x5730[_0x7694('0x8')]('ServicenowConfiguration',attributes,{'tableName':_0x7694('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x32b6=['moment','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','api'];(function(_0x426b85,_0x3d1539){var _0x43ef14=function(_0x4d6cb4){while(--_0x4d6cb4){_0x426b85['push'](_0x426b85['shift']());}};_0x43ef14(++_0x3d1539);}(_0x32b6,0x1d1));var _0x632b=function(_0x1dbddb,_0x203a8e){_0x1dbddb=_0x1dbddb-0x0;var _0x76caad=_0x32b6[_0x1dbddb];return _0x76caad;};'use strict';var _=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var logger=require('../../config/logger')(_0x632b('0x2'));var moment=require(_0x632b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x632b('0x4'));var rimraf=require(_0x632b('0x5'));var config=require(_0x632b('0x6'));var attributes=require(_0x632b('0x7'));module[_0x632b('0x8')]=function(_0x122768,_0x24ceab){return _0x122768[_0x632b('0x9')](_0x632b('0xa'),attributes,{'tableName':_0x632b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 65d3a10..6c54fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['request','then','request\x20sent','debug','stringify','error','code','message','ServicenowConfiguration,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http'];(function(_0x14914a,_0x3eae81){var _0x3766ec=function(_0x2d6c73){while(--_0x2d6c73){_0x14914a['push'](_0x14914a['shift']());}};_0x3766ec(++_0x3eae81);}(_0xa46e,0x8a));var _0xea46=function(_0x305c31,_0x466b17){_0x305c31=_0x305c31-0x0;var _0x17f39f=_0xa46e[_0x305c31];return _0x17f39f;};'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});function respondWithRpcPromise(_0x3dc26f,_0x5f1cd1,_0x2d1b30){return new BPromise(function(_0x42771a,_0xe7d428){return client[_0xea46('0x9')](_0x3dc26f,_0x2d1b30)[_0xea46('0xa')](function(_0x4cf206){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'));logger[_0xea46('0xc')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'),JSON[_0xea46('0xd')](_0x4cf206));if(_0x4cf206[_0xea46('0xe')]){if(_0x4cf206['error'][_0xea46('0xf')]===0x1f4){logger[_0xea46('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0xe7d428(_0x4cf206['error'][_0xea46('0x10')]);}logger['error'](_0xea46('0x11'),_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0x42771a(_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);}else{logger[_0xea46('0x12')](_0xea46('0x11'),_0x5f1cd1,_0xea46('0xb'));_0x42771a(_0x4cf206[_0xea46('0x13')]['message']);}})[_0xea46('0x14')](function(_0xbf225e){logger[_0xea46('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x5f1cd1,_0xbf225e);_0xe7d428(_0xbf225e);});});}
\ No newline at end of file
+var _0x6cf5=['request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','info','ServicenowConfiguration,\x20%s,\x20%s'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x6cf5,0x1cf));var _0x56cf=function(_0x2f055b,_0x1f1c8b){_0x2f055b=_0x2f055b-0x0;var _0x1cf54d=_0x6cf5[_0x2f055b];return _0x1cf54d;};'use strict';var _=require(_0x56cf('0x0'));var util=require(_0x56cf('0x1'));var moment=require(_0x56cf('0x2'));var BPromise=require(_0x56cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x56cf('0x4'));var db=require(_0x56cf('0x5'))['db'];var utils=require(_0x56cf('0x6'));var logger=require(_0x56cf('0x7'))('rpc');var config=require(_0x56cf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x56cf('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d8c26,_0x1cdb3b,_0x47911c){return new BPromise(function(_0x398215,_0x4cd4bf){return client['request'](_0x2d8c26,_0x47911c)['then'](function(_0x4b78ce){logger[_0x56cf('0xa')](_0x56cf('0xb'),_0x1cdb3b,_0x56cf('0xc'));logger[_0x56cf('0xd')](_0x56cf('0xe'),_0x1cdb3b,_0x56cf('0xc'),JSON['stringify'](_0x4b78ce));if(_0x4b78ce[_0x56cf('0xf')]){if(_0x4b78ce[_0x56cf('0xf')][_0x56cf('0x10')]===0x1f4){logger[_0x56cf('0xf')](_0x56cf('0xb'),_0x1cdb3b,_0x4b78ce[_0x56cf('0xf')][_0x56cf('0x11')]);return _0x4cd4bf(_0x4b78ce['error'][_0x56cf('0x11')]);}logger[_0x56cf('0xf')](_0x56cf('0xb'),_0x1cdb3b,_0x4b78ce[_0x56cf('0xf')][_0x56cf('0x11')]);return _0x398215(_0x4b78ce[_0x56cf('0xf')]['message']);}else{logger[_0x56cf('0xa')](_0x56cf('0xb'),_0x1cdb3b,_0x56cf('0xc'));_0x398215(_0x4b78ce[_0x56cf('0x12')][_0x56cf('0x11')]);}})['catch'](function(_0x1f4747){logger[_0x56cf('0xf')](_0x56cf('0xb'),_0x1cdb3b,_0x1f4747);_0x4cd4bf(_0x1f4747);});});}
\ No newline at end of file
index 08a1e75..3e1ee7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ed=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','post','create','update','delete','destroy','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc2ed,0x11b));var _0xdc2e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xc2ed[_0x2763f2];return _0x3ef471;};'use strict';var multer=require(_0xdc2e('0x0'));var util=require(_0xdc2e('0x1'));var path=require(_0xdc2e('0x2'));var timeout=require(_0xdc2e('0x3'));var express=require(_0xdc2e('0x4'));var router=express['Router']();var fs_extra=require(_0xdc2e('0x5'));var auth=require(_0xdc2e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdc2e('0x7'));var controller=require(_0xdc2e('0x8'));router[_0xdc2e('0x9')]('/',auth[_0xdc2e('0xa')](),controller[_0xdc2e('0xb')]);router['get'](_0xdc2e('0xc'),auth[_0xdc2e('0xa')](),controller['show']);router[_0xdc2e('0xd')]('/',auth[_0xdc2e('0xa')](),controller[_0xdc2e('0xe')]);router['put']('/:id',auth[_0xdc2e('0xa')](),controller[_0xdc2e('0xf')]);router[_0xdc2e('0x10')](_0xdc2e('0xc'),auth[_0xdc2e('0xa')](),controller[_0xdc2e('0x11')]);module[_0xdc2e('0x12')]=router;
\ No newline at end of file
+var _0x41f6=['show','post','create','put','/:id','update','delete','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','isAuthenticated','index','get'];(function(_0x7cb0dc,_0x28dc29){var _0x2d497e=function(_0x9f3c6){while(--_0x9f3c6){_0x7cb0dc['push'](_0x7cb0dc['shift']());}};_0x2d497e(++_0x28dc29);}(_0x41f6,0x66));var _0x641f=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0x41f6[_0x533e4e];return _0x1f14bb;};'use strict';var multer=require(_0x641f('0x0'));var util=require(_0x641f('0x1'));var path=require(_0x641f('0x2'));var timeout=require('connect-timeout');var express=require(_0x641f('0x3'));var router=express[_0x641f('0x4')]();var fs_extra=require(_0x641f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x641f('0x6'));var config=require(_0x641f('0x7'));var controller=require(_0x641f('0x8'));router['get']('/',auth[_0x641f('0x9')](),controller[_0x641f('0xa')]);router[_0x641f('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x641f('0xc')]);router[_0x641f('0xd')]('/',auth[_0x641f('0x9')](),controller[_0x641f('0xe')]);router[_0x641f('0xf')](_0x641f('0x10'),auth[_0x641f('0x9')](),controller[_0x641f('0x11')]);router[_0x641f('0x12')](_0x641f('0x10'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6e99de3..0bd2500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f0=['sequelize','ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN'];(function(_0x366045,_0x47cd68){var _0x43c900=function(_0x4eab69){while(--_0x4eab69){_0x366045['push'](_0x366045['shift']());}};_0x43c900(++_0x47cd68);}(_0xf5f0,0x132));var _0x0f5f=function(_0x15e52e,_0x127ea8){_0x15e52e=_0x15e52e-0x0;var _0x2e5ddf=_0xf5f0[_0x15e52e];return _0x2e5ddf;};'use strict';var Sequelize=require(_0x0f5f('0x0'));module['exports']={'type':{'type':Sequelize[_0x0f5f('0x1')](_0x0f5f('0x2'),'variable',_0x0f5f('0x3'),_0x0f5f('0x4'),_0x0f5f('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x0f5f('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x0f5f('0x2'),_0x0f5f('0x7'),_0x0f5f('0x3'))},'keyContent':{'type':Sequelize[_0x0f5f('0x6')]},'idField':{'type':Sequelize[_0x0f5f('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0f5f('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0f5f('0x6')]}};
\ No newline at end of file
+var _0xb17e=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x43d439,_0x307691){var _0x4d87e2=function(_0x575842){while(--_0x575842){_0x43d439['push'](_0x43d439['shift']());}};_0x4d87e2(++_0x307691);}(_0xb17e,0x1dd));var _0xeb17=function(_0x59eba9,_0x421c54){_0x59eba9=_0x59eba9-0x0;var _0x5ca19b=_0xb17e[_0x59eba9];return _0x5ca19b;};'use strict';var Sequelize=require('sequelize');module[_0xeb17('0x0')]={'type':{'type':Sequelize[_0xeb17('0x1')](_0xeb17('0x2'),_0xeb17('0x3'),_0xeb17('0x4'),_0xeb17('0x5'),_0xeb17('0x6')),'defaultValue':_0xeb17('0x2')},'content':{'type':Sequelize[_0xeb17('0x7')]},'key':{'type':Sequelize[_0xeb17('0x7')]},'keyType':{'type':Sequelize[_0xeb17('0x1')](_0xeb17('0x2'),_0xeb17('0x3'),_0xeb17('0x4'))},'keyContent':{'type':Sequelize[_0xeb17('0x7')]},'idField':{'type':Sequelize[_0xeb17('0x7')]},'nameField':{'type':Sequelize[_0xeb17('0x7')]},'customField':{'type':Sequelize[_0xeb17('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 49ffef2..c036e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f45=['save','then','destroy','error','stack','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','include','findAll','rows','show','keys','includeAll','catch','create','body','update','find','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x37dc88,_0x4ea261){var _0x5cfc4f=function(_0x341b59){while(--_0x341b59){_0x37dc88['push'](_0x37dc88['shift']());}};_0x5cfc4f(++_0x4ea261);}(_0x6f45,0xc7));var _0x56f4=function(_0x439637,_0x2ea223){_0x439637=_0x439637-0x0;var _0x4df3b8=_0x6f45[_0x439637];return _0x4df3b8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x56f4('0x0'));var jsonpatch=require(_0x56f4('0x1'));var rp=require(_0x56f4('0x2'));var moment=require(_0x56f4('0x3'));var BPromise=require(_0x56f4('0x4'));var Mustache=require(_0x56f4('0x5'));var util=require(_0x56f4('0x6'));var path=require('path');var sox=require(_0x56f4('0x7'));var csv=require(_0x56f4('0x8'));var ejs=require(_0x56f4('0x9'));var fs=require('fs');var fs_extra=require(_0x56f4('0xa'));var _=require(_0x56f4('0xb'));var squel=require(_0x56f4('0xc'));var crypto=require('crypto');var jsforce=require(_0x56f4('0xd'));var deskjs=require(_0x56f4('0xe'));var toCsv=require(_0x56f4('0x8'));var querystring=require(_0x56f4('0xf'));var Papa=require(_0x56f4('0x10'));var Redis=require(_0x56f4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x56f4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x56f4('0x13'));var logger=require(_0x56f4('0x14'))(_0x56f4('0x15'));var utils=require(_0x56f4('0x16'));var config=require(_0x56f4('0x17'));var licenseUtil=require(_0x56f4('0x18'));var db=require(_0x56f4('0x19'))['db'];function respondWithStatusCode(_0x5bef5c,_0x314039){_0x314039=_0x314039||0xcc;return function(_0x39c9ca){if(_0x39c9ca){return _0x5bef5c[_0x56f4('0x1a')](_0x314039);}return _0x5bef5c[_0x56f4('0x1b')](_0x314039)[_0x56f4('0x1c')]();};}function respondWithResult(_0x456528,_0x55ae19){_0x55ae19=_0x55ae19||0xc8;return function(_0x455f2c){if(_0x455f2c){return _0x456528['status'](_0x55ae19)[_0x56f4('0x1d')](_0x455f2c);}};}function respondWithFilteredResult(_0x1cc0b6,_0x16ff2e){return function(_0x4b364d){if(_0x4b364d){var _0x28b9c5=typeof _0x16ff2e[_0x56f4('0x1e')]===_0x56f4('0x1f')&&typeof _0x16ff2e[_0x56f4('0x20')]===_0x56f4('0x1f');var _0x343d80=_0x4b364d[_0x56f4('0x21')];var _0x5ae178=_0x28b9c5?0x0:_0x16ff2e['offset'];var _0x29763f=_0x28b9c5?_0x4b364d[_0x56f4('0x21')]:_0x16ff2e[_0x56f4('0x1e')]+_0x16ff2e[_0x56f4('0x20')];var _0x1b1732;if(_0x29763f>=_0x343d80){_0x29763f=_0x343d80;_0x1b1732=0xc8;}else{_0x1b1732=0xce;}_0x1cc0b6[_0x56f4('0x1b')](_0x1b1732);return _0x1cc0b6[_0x56f4('0x22')](_0x56f4('0x23'),_0x5ae178+'-'+_0x29763f+'/'+_0x343d80)[_0x56f4('0x1d')](_0x4b364d);}return null;};}function patchUpdates(_0x3a9bbc){return function(_0x1f9a0f){try{jsonpatch[_0x56f4('0x24')](_0x1f9a0f,_0x3a9bbc,!![]);}catch(_0x4e20b2){return BPromise[_0x56f4('0x25')](_0x4e20b2);}return _0x1f9a0f[_0x56f4('0x26')]();};}function saveUpdates(_0x2fec0a,_0x59c26c){return function(_0x11bc53){if(_0x11bc53){return _0x11bc53['update'](_0x2fec0a)[_0x56f4('0x27')](function(_0x5a802d){return _0x5a802d;});}return null;};}function removeEntity(_0x560216,_0x5b19a3){return function(_0x9efc6){if(_0x9efc6){return _0x9efc6[_0x56f4('0x28')]()[_0x56f4('0x27')](function(){_0x560216[_0x56f4('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8b0bb,_0x1c58b8){return function(_0x33b8e0){if(!_0x33b8e0){_0xe8b0bb[_0x56f4('0x1a')](0x194);}return _0x33b8e0;};}function handleError(_0x2f20b9,_0x5dd190){_0x5dd190=_0x5dd190||0x1f4;return function(_0x47d808){logger[_0x56f4('0x29')](_0x47d808[_0x56f4('0x2a')]);if(_0x47d808['name']){delete _0x47d808[_0x56f4('0x2b')];}_0x2f20b9[_0x56f4('0x1b')](_0x5dd190)[_0x56f4('0x2c')](_0x47d808);};}exports[_0x56f4('0x2d')]=function(_0x55abc7,_0x43cec2){var _0x22e88d={},_0x39ad1c={},_0x44c914={'count':0x0,'rows':[]};var _0x5e129f=_['map'](db[_0x56f4('0x2e')][_0x56f4('0x2f')],function(_0x2ab47a){return{'name':_0x2ab47a[_0x56f4('0x30')],'type':_0x2ab47a[_0x56f4('0x31')][_0x56f4('0x32')]};});_0x39ad1c[_0x56f4('0x33')]=_['map'](_0x5e129f,_0x56f4('0x2b'));_0x39ad1c[_0x56f4('0x34')]=_['keys'](_0x55abc7[_0x56f4('0x34')]);_0x39ad1c[_0x56f4('0x35')]=_[_0x56f4('0x36')](_0x39ad1c['model'],_0x39ad1c[_0x56f4('0x34')]);_0x22e88d[_0x56f4('0x37')]=_[_0x56f4('0x36')](_0x39ad1c[_0x56f4('0x33')],qs[_0x56f4('0x38')](_0x55abc7[_0x56f4('0x34')][_0x56f4('0x38')]));_0x22e88d['attributes']=_0x22e88d[_0x56f4('0x37')][_0x56f4('0x39')]?_0x22e88d['attributes']:_0x39ad1c[_0x56f4('0x33')];if(!_0x55abc7[_0x56f4('0x34')][_0x56f4('0x3a')](_0x56f4('0x3b'))){_0x22e88d[_0x56f4('0x20')]=qs['limit'](_0x55abc7['query'][_0x56f4('0x20')]);_0x22e88d[_0x56f4('0x1e')]=qs[_0x56f4('0x1e')](_0x55abc7[_0x56f4('0x34')][_0x56f4('0x1e')]);}_0x22e88d[_0x56f4('0x3c')]=qs[_0x56f4('0x3d')](_0x55abc7[_0x56f4('0x34')][_0x56f4('0x3d')]);_0x22e88d[_0x56f4('0x3e')]=qs[_0x56f4('0x35')](_[_0x56f4('0x3f')](_0x55abc7[_0x56f4('0x34')],_0x39ad1c[_0x56f4('0x35')]),_0x5e129f);if(_0x55abc7['query']['filter']){_0x22e88d[_0x56f4('0x3e')]=_[_0x56f4('0x40')](_0x22e88d[_0x56f4('0x3e')],{'$or':_[_0x56f4('0x41')](_0x5e129f,function(_0x5c18e9){if(_0x5c18e9[_0x56f4('0x31')]!=='VIRTUAL'){var _0x5aa873={};_0x5aa873[_0x5c18e9['name']]={'$like':'%'+_0x55abc7[_0x56f4('0x34')][_0x56f4('0x42')]+'%'};return _0x5aa873;}})});}_0x22e88d=_['merge']({},_0x22e88d,_0x55abc7['options']);var _0x3f444f={'where':_0x22e88d[_0x56f4('0x3e')]};return db[_0x56f4('0x2e')][_0x56f4('0x21')](_0x3f444f)[_0x56f4('0x27')](function(_0x498679){_0x44c914['count']=_0x498679;if(_0x55abc7['query']['includeAll']){_0x22e88d[_0x56f4('0x43')]=[{'all':!![]}];}return db[_0x56f4('0x2e')][_0x56f4('0x44')](_0x22e88d);})['then'](function(_0x2fd3ca){_0x44c914[_0x56f4('0x45')]=_0x2fd3ca;return _0x44c914;})[_0x56f4('0x27')](respondWithFilteredResult(_0x43cec2,_0x22e88d))['catch'](handleError(_0x43cec2,null));};exports[_0x56f4('0x46')]=function(_0xd97890,_0x2268a9){var _0x55ed6b={'raw':!![],'where':{'id':_0xd97890['params']['id']}},_0x5ec8e2={};_0x5ec8e2[_0x56f4('0x33')]=_['keys'](db[_0x56f4('0x2e')][_0x56f4('0x2f')]);_0x5ec8e2[_0x56f4('0x34')]=_[_0x56f4('0x47')](_0xd97890[_0x56f4('0x34')]);_0x5ec8e2[_0x56f4('0x35')]=_[_0x56f4('0x36')](_0x5ec8e2[_0x56f4('0x33')],_0x5ec8e2[_0x56f4('0x34')]);_0x55ed6b[_0x56f4('0x37')]=_[_0x56f4('0x36')](_0x5ec8e2[_0x56f4('0x33')],qs[_0x56f4('0x38')](_0xd97890['query'][_0x56f4('0x38')]));_0x55ed6b[_0x56f4('0x37')]=_0x55ed6b['attributes'][_0x56f4('0x39')]?_0x55ed6b['attributes']:_0x5ec8e2[_0x56f4('0x33')];if(_0xd97890['query'][_0x56f4('0x48')]){_0x55ed6b[_0x56f4('0x43')]=[{'all':!![]}];}_0x55ed6b=_[_0x56f4('0x40')]({},_0x55ed6b,_0xd97890['options']);return db[_0x56f4('0x2e')]['find'](_0x55ed6b)['then'](handleEntityNotFound(_0x2268a9,null))['then'](respondWithResult(_0x2268a9,null))[_0x56f4('0x49')](handleError(_0x2268a9,null));};exports[_0x56f4('0x4a')]=function(_0x3193c4,_0x2b7e3a){return db[_0x56f4('0x2e')][_0x56f4('0x4a')](_0x3193c4[_0x56f4('0x4b')],{})['then'](respondWithResult(_0x2b7e3a,0xc9))[_0x56f4('0x49')](handleError(_0x2b7e3a,null));};exports[_0x56f4('0x4c')]=function(_0x40d306,_0x9aa7bb){if(_0x40d306[_0x56f4('0x4b')]['id']){delete _0x40d306[_0x56f4('0x4b')]['id'];}return db[_0x56f4('0x2e')][_0x56f4('0x4d')]({'where':{'id':_0x40d306[_0x56f4('0x4e')]['id']}})[_0x56f4('0x27')](handleEntityNotFound(_0x9aa7bb,null))['then'](saveUpdates(_0x40d306[_0x56f4('0x4b')],null))['then'](respondWithResult(_0x9aa7bb,null))[_0x56f4('0x49')](handleError(_0x9aa7bb,null));};exports['destroy']=function(_0x823e69,_0x46bc28){return db['ServicenowField'][_0x56f4('0x4d')]({'where':{'id':_0x823e69['params']['id']}})[_0x56f4('0x27')](handleEntityNotFound(_0x46bc28,null))[_0x56f4('0x27')](removeEntity(_0x46bc28,null))['catch'](handleError(_0x46bc28,null));};
\ No newline at end of file
+var _0xf678=['find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','ejs','squel','jsforce','to-csv','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','json','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','destroy','then','end','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','offset','order','sort','filters','pick','filter','where','options','ServicenowField','rows','catch','show','params','include'];(function(_0x26d1f1,_0x322e8c){var _0x1a51fd=function(_0x3c33bb){while(--_0x3c33bb){_0x26d1f1['push'](_0x26d1f1['shift']());}};_0x1a51fd(++_0x322e8c);}(_0xf678,0x10f));var _0x8f67=function(_0x1b86df,_0x4e0f1b){_0x1b86df=_0x1b86df-0x0;var _0x5a47fb=_0xf678[_0x1b86df];return _0x5a47fb;};'use strict';var emlformat=require(_0x8f67('0x0'));var rimraf=require(_0x8f67('0x1'));var zipdir=require(_0x8f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f67('0x3'));var moment=require(_0x8f67('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8f67('0x5'));var util=require(_0x8f67('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8f67('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8f67('0x8'));var crypto=require('crypto');var jsforce=require(_0x8f67('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x8f67('0xa'));var querystring=require('querystring');var Papa=require(_0x8f67('0xb'));var Redis=require(_0x8f67('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8f67('0xd'));var logger=require(_0x8f67('0xe'))(_0x8f67('0xf'));var utils=require('../../config/utils');var config=require(_0x8f67('0x10'));var licenseUtil=require('../../config/license/util');var db=require(_0x8f67('0x11'))['db'];function respondWithStatusCode(_0x267ba7,_0x21b885){_0x21b885=_0x21b885||0xcc;return function(_0x1972df){if(_0x1972df){return _0x267ba7['sendStatus'](_0x21b885);}return _0x267ba7['status'](_0x21b885)['end']();};}function respondWithResult(_0x476a6f,_0x222767){_0x222767=_0x222767||0xc8;return function(_0x1d1980){if(_0x1d1980){return _0x476a6f['status'](_0x222767)[_0x8f67('0x12')](_0x1d1980);}};}function respondWithFilteredResult(_0x2c7375,_0x43df2f){return function(_0x27f6b6){if(_0x27f6b6){var _0xc33aca=typeof _0x43df2f['offset']==='undefined'&&typeof _0x43df2f[_0x8f67('0x13')]===_0x8f67('0x14');var _0xd355a2=_0x27f6b6[_0x8f67('0x15')];var _0x351a29=_0xc33aca?0x0:_0x43df2f['offset'];var _0x317528=_0xc33aca?_0x27f6b6[_0x8f67('0x15')]:_0x43df2f['offset']+_0x43df2f[_0x8f67('0x13')];var _0x5ba5f3;if(_0x317528>=_0xd355a2){_0x317528=_0xd355a2;_0x5ba5f3=0xc8;}else{_0x5ba5f3=0xce;}_0x2c7375[_0x8f67('0x16')](_0x5ba5f3);return _0x2c7375[_0x8f67('0x17')](_0x8f67('0x18'),_0x351a29+'-'+_0x317528+'/'+_0xd355a2)['json'](_0x27f6b6);}return null;};}function patchUpdates(_0xa67003){return function(_0x3cb0cc){try{jsonpatch[_0x8f67('0x19')](_0x3cb0cc,_0xa67003,!![]);}catch(_0x38d555){return BPromise[_0x8f67('0x1a')](_0x38d555);}return _0x3cb0cc[_0x8f67('0x1b')]();};}function saveUpdates(_0x7181cc,_0x5893f5){return function(_0x49bc52){if(_0x49bc52){return _0x49bc52[_0x8f67('0x1c')](_0x7181cc)['then'](function(_0x52621a){return _0x52621a;});}return null;};}function removeEntity(_0x3982fb,_0x4bd908){return function(_0x51f78b){if(_0x51f78b){return _0x51f78b[_0x8f67('0x1d')]()[_0x8f67('0x1e')](function(){_0x3982fb[_0x8f67('0x16')](0xcc)[_0x8f67('0x1f')]();});}};}function handleEntityNotFound(_0x589078,_0x447863){return function(_0x2037da){if(!_0x2037da){_0x589078[_0x8f67('0x20')](0x194);}return _0x2037da;};}function handleError(_0x146fce,_0x1d7485){_0x1d7485=_0x1d7485||0x1f4;return function(_0xdc0143){logger[_0x8f67('0x21')](_0xdc0143[_0x8f67('0x22')]);if(_0xdc0143[_0x8f67('0x23')]){delete _0xdc0143[_0x8f67('0x23')];}_0x146fce[_0x8f67('0x16')](_0x1d7485)[_0x8f67('0x24')](_0xdc0143);};}exports['index']=function(_0x4fcd8f,_0x5a2976){var _0x23eebc={},_0x2b4cb8={},_0x3e7380={'count':0x0,'rows':[]};var _0x38d65b=_[_0x8f67('0x25')](db['ServicenowField'][_0x8f67('0x26')],function(_0x4a4f93){return{'name':_0x4a4f93[_0x8f67('0x27')],'type':_0x4a4f93[_0x8f67('0x28')][_0x8f67('0x29')]};});_0x2b4cb8[_0x8f67('0x2a')]=_['map'](_0x38d65b,_0x8f67('0x23'));_0x2b4cb8[_0x8f67('0x2b')]=_[_0x8f67('0x2c')](_0x4fcd8f[_0x8f67('0x2b')]);_0x2b4cb8['filters']=_[_0x8f67('0x2d')](_0x2b4cb8[_0x8f67('0x2a')],_0x2b4cb8['query']);_0x23eebc[_0x8f67('0x2e')]=_['intersection'](_0x2b4cb8['model'],qs[_0x8f67('0x2f')](_0x4fcd8f['query'][_0x8f67('0x2f')]));_0x23eebc[_0x8f67('0x2e')]=_0x23eebc['attributes'][_0x8f67('0x30')]?_0x23eebc['attributes']:_0x2b4cb8['model'];if(!_0x4fcd8f[_0x8f67('0x2b')]['hasOwnProperty'](_0x8f67('0x31'))){_0x23eebc[_0x8f67('0x13')]=qs[_0x8f67('0x13')](_0x4fcd8f[_0x8f67('0x2b')][_0x8f67('0x13')]);_0x23eebc['offset']=qs[_0x8f67('0x32')](_0x4fcd8f[_0x8f67('0x2b')][_0x8f67('0x32')]);}_0x23eebc[_0x8f67('0x33')]=qs[_0x8f67('0x34')](_0x4fcd8f[_0x8f67('0x2b')][_0x8f67('0x34')]);_0x23eebc['where']=qs[_0x8f67('0x35')](_[_0x8f67('0x36')](_0x4fcd8f['query'],_0x2b4cb8[_0x8f67('0x35')]),_0x38d65b);if(_0x4fcd8f[_0x8f67('0x2b')][_0x8f67('0x37')]){_0x23eebc[_0x8f67('0x38')]=_['merge'](_0x23eebc['where'],{'$or':_[_0x8f67('0x25')](_0x38d65b,function(_0x47254c){if(_0x47254c['type']!=='VIRTUAL'){var _0x217e53={};_0x217e53[_0x47254c['name']]={'$like':'%'+_0x4fcd8f[_0x8f67('0x2b')][_0x8f67('0x37')]+'%'};return _0x217e53;}})});}_0x23eebc=_['merge']({},_0x23eebc,_0x4fcd8f[_0x8f67('0x39')]);var _0x36f06a={'where':_0x23eebc[_0x8f67('0x38')]};return db[_0x8f67('0x3a')][_0x8f67('0x15')](_0x36f06a)[_0x8f67('0x1e')](function(_0x2b93c2){_0x3e7380[_0x8f67('0x15')]=_0x2b93c2;if(_0x4fcd8f['query']['includeAll']){_0x23eebc['include']=[{'all':!![]}];}return db[_0x8f67('0x3a')]['findAll'](_0x23eebc);})[_0x8f67('0x1e')](function(_0x2479f2){_0x3e7380[_0x8f67('0x3b')]=_0x2479f2;return _0x3e7380;})['then'](respondWithFilteredResult(_0x5a2976,_0x23eebc))[_0x8f67('0x3c')](handleError(_0x5a2976,null));};exports[_0x8f67('0x3d')]=function(_0x1a5463,_0x112231){var _0x3b01a6={'raw':!![],'where':{'id':_0x1a5463[_0x8f67('0x3e')]['id']}},_0x38f0b3={};_0x38f0b3['model']=_[_0x8f67('0x2c')](db[_0x8f67('0x3a')]['rawAttributes']);_0x38f0b3[_0x8f67('0x2b')]=_[_0x8f67('0x2c')](_0x1a5463[_0x8f67('0x2b')]);_0x38f0b3[_0x8f67('0x35')]=_['intersection'](_0x38f0b3[_0x8f67('0x2a')],_0x38f0b3['query']);_0x3b01a6[_0x8f67('0x2e')]=_['intersection'](_0x38f0b3[_0x8f67('0x2a')],qs[_0x8f67('0x2f')](_0x1a5463[_0x8f67('0x2b')][_0x8f67('0x2f')]));_0x3b01a6[_0x8f67('0x2e')]=_0x3b01a6[_0x8f67('0x2e')][_0x8f67('0x30')]?_0x3b01a6[_0x8f67('0x2e')]:_0x38f0b3['model'];if(_0x1a5463[_0x8f67('0x2b')]['includeAll']){_0x3b01a6[_0x8f67('0x3f')]=[{'all':!![]}];}_0x3b01a6=_['merge']({},_0x3b01a6,_0x1a5463[_0x8f67('0x39')]);return db['ServicenowField'][_0x8f67('0x40')](_0x3b01a6)[_0x8f67('0x1e')](handleEntityNotFound(_0x112231,null))['then'](respondWithResult(_0x112231,null))[_0x8f67('0x3c')](handleError(_0x112231,null));};exports['create']=function(_0x463414,_0x2a438e){return db[_0x8f67('0x3a')][_0x8f67('0x41')](_0x463414[_0x8f67('0x42')],{})[_0x8f67('0x1e')](respondWithResult(_0x2a438e,0xc9))[_0x8f67('0x3c')](handleError(_0x2a438e,null));};exports[_0x8f67('0x1c')]=function(_0x47c988,_0x35ecee){if(_0x47c988['body']['id']){delete _0x47c988[_0x8f67('0x42')]['id'];}return db[_0x8f67('0x3a')][_0x8f67('0x40')]({'where':{'id':_0x47c988['params']['id']}})['then'](handleEntityNotFound(_0x35ecee,null))[_0x8f67('0x1e')](saveUpdates(_0x47c988['body'],null))[_0x8f67('0x1e')](respondWithResult(_0x35ecee,null))[_0x8f67('0x3c')](handleError(_0x35ecee,null));};exports['destroy']=function(_0x30e242,_0x52ed18){return db[_0x8f67('0x3a')]['find']({'where':{'id':_0x30e242[_0x8f67('0x3e')]['id']}})[_0x8f67('0x1e')](handleEntityNotFound(_0x52ed18,null))[_0x8f67('0x1e')](removeEntity(_0x52ed18,null))[_0x8f67('0x3c')](handleError(_0x52ed18,null));};
\ No newline at end of file
index f8d12d8..8b57566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x767d=['define','ServicenowField','int_servicenow_fields','servicenow_unique_index','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x767d,0xc7));var _0xd767=function(_0x4905f8,_0x2378eb){_0x4905f8=_0x4905f8-0x0;var _0x2751b7=_0x767d[_0x4905f8];return _0x2751b7;};'use strict';var _=require(_0xd767('0x0'));var util=require(_0xd767('0x1'));var logger=require(_0xd767('0x2'))(_0xd767('0x3'));var moment=require(_0xd767('0x4'));var BPromise=require(_0xd767('0x5'));var rp=require(_0xd767('0x6'));var fs=require('fs');var path=require(_0xd767('0x7'));var rimraf=require(_0xd767('0x8'));var config=require(_0xd767('0x9'));var attributes=require('./intServicenowField.attributes');module[_0xd767('0xa')]=function(_0x210c4,_0x5921c1){return _0x210c4[_0xd767('0xb')](_0xd767('0xc'),attributes,{'tableName':_0xd767('0xd'),'paranoid':![],'indexes':[{'name':_0xd767('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fd0=['util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash'];(function(_0x38a6c6,_0x4062ca){var _0x142f0a=function(_0x1531ce){while(--_0x1531ce){_0x38a6c6['push'](_0x38a6c6['shift']());}};_0x142f0a(++_0x4062ca);}(_0x3fd0,0x10f));var _0x03fd=function(_0x232cdc,_0xa00ebe){_0x232cdc=_0x232cdc-0x0;var _0x1d6277=_0x3fd0[_0x232cdc];return _0x1d6277;};'use strict';var _=require(_0x03fd('0x0'));var util=require(_0x03fd('0x1'));var logger=require(_0x03fd('0x2'))(_0x03fd('0x3'));var moment=require(_0x03fd('0x4'));var BPromise=require('bluebird');var rp=require(_0x03fd('0x5'));var fs=require('fs');var path=require(_0x03fd('0x6'));var rimraf=require('rimraf');var config=require(_0x03fd('0x7'));var attributes=require(_0x03fd('0x8'));module[_0x03fd('0x9')]=function(_0x2f1625,_0x4cfb9c){return _0x2f1625[_0x03fd('0xa')](_0x03fd('0xb'),attributes,{'tableName':_0x03fd('0xc'),'paranoid':![],'indexes':[{'name':_0x03fd('0xd'),'fields':[_0x03fd('0xe'),_0x03fd('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index acb7ffc..19da620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xac4a,0x13f));var _0xaac4=function(_0x12dc42,_0x4f6f60){_0x12dc42=_0x12dc42-0x0;var _0x57371a=_0xac4a[_0x12dc42];return _0x57371a;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
+var _0xbdb7=['request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','ServicenowField,\x20%s,\x20%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x51652a,_0x5144fc){_0x51652a=_0x51652a-0x0;var _0xae7099=_0xbdb7[_0x51652a];return _0xae7099;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index 74ac836..53444d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x5e5acd,_0x270a1d){var _0x5111b5=function(_0x4d1aff){while(--_0x4d1aff){_0x5e5acd['push'](_0x5e5acd['shift']());}};_0x5111b5(++_0x270a1d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x485da1,_0x3ce846){var _0xc4dcd4=function(_0x3a833c){while(--_0x3a833c){_0x485da1['push'](_0x485da1['shift']());}};_0xc4dcd4(++_0x3ce846);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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 5ca453c..50783f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3c6108,_0x2b82cc){var _0x30f85e=function(_0x35db54){while(--_0x35db54){_0x3c6108['push'](_0x3c6108['shift']());}};_0x30f85e(++_0x2b82cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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(_0x374c55,_0x3ee5eb){var _0x3e7c32=function(_0x2f767a){while(--_0x2f767a){_0x374c55['push'](_0x374c55['shift']());}};_0x3e7c32(++_0x3ee5eb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 adf9e83..cc1c581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7fb=['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','../../config/logger','../../config/utils','../../config/license/util','../../components/integrations/configuration','end','status','json','offset','undefined','limit','count','set','apply','reject','then','destroy','sendStatus','stack','name','send','map','SugarcrmAccount','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','find','create','body','update','getConfigurations','findOne','addConfiguration','getSubjects','channel','type','Descriptions','getDescriptions','SugarcrmConfiguration','SugarcrmField','Subjects','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','get_module_fields','Calls','module_fields','remove','includes','label','values','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x513670,_0xde3096){var _0x4361f4=function(_0x4e6dc1){while(--_0x4e6dc1){_0x513670['push'](_0x513670['shift']());}};_0x4361f4(++_0xde3096);}(_0xb7fb,0x76));var _0xbb7f=function(_0x121ef6,_0x1e723b){_0x121ef6=_0x121ef6-0x0;var _0xdd351c=_0xb7fb[_0x121ef6];return _0xdd351c;};'use strict';var emlformat=require(_0xbb7f('0x0'));var rimraf=require(_0xbb7f('0x1'));var zipdir=require(_0xbb7f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbb7f('0x3'));var moment=require(_0xbb7f('0x4'));var BPromise=require(_0xbb7f('0x5'));var Mustache=require(_0xbb7f('0x6'));var util=require(_0xbb7f('0x7'));var path=require(_0xbb7f('0x8'));var sox=require(_0xbb7f('0x9'));var csv=require(_0xbb7f('0xa'));var ejs=require(_0xbb7f('0xb'));var fs=require('fs');var fs_extra=require(_0xbb7f('0xc'));var _=require(_0xbb7f('0xd'));var squel=require(_0xbb7f('0xe'));var crypto=require(_0xbb7f('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xbb7f('0x10'));var toCsv=require(_0xbb7f('0xa'));var querystring=require('querystring');var Papa=require(_0xbb7f('0x11'));var Redis=require('ioredis');var authService=require(_0xbb7f('0x12'));var qs=require(_0xbb7f('0x13'));var as=require(_0xbb7f('0x14'));var hardwareService=require(_0xbb7f('0x15'));var logger=require(_0xbb7f('0x16'))('api');var utils=require(_0xbb7f('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xbb7f('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbb7f('0x19'));function respondWithStatusCode(_0x2409c4,_0x7e1f27){_0x7e1f27=_0x7e1f27||0xcc;return function(_0x6139b0){if(_0x6139b0){return _0x2409c4['sendStatus'](_0x7e1f27);}return _0x2409c4['status'](_0x7e1f27)[_0xbb7f('0x1a')]();};}function respondWithResult(_0x4221ca,_0x138527){_0x138527=_0x138527||0xc8;return function(_0x20be18){if(_0x20be18){return _0x4221ca[_0xbb7f('0x1b')](_0x138527)[_0xbb7f('0x1c')](_0x20be18);}};}function respondWithFilteredResult(_0x128b4,_0x2318f5){return function(_0x558580){if(_0x558580){var _0x3cf8f3=typeof _0x2318f5[_0xbb7f('0x1d')]===_0xbb7f('0x1e')&&typeof _0x2318f5[_0xbb7f('0x1f')]===_0xbb7f('0x1e');var _0x208b06=_0x558580[_0xbb7f('0x20')];var _0xd8913a=_0x3cf8f3?0x0:_0x2318f5[_0xbb7f('0x1d')];var _0x2ccb77=_0x3cf8f3?_0x558580['count']:_0x2318f5[_0xbb7f('0x1d')]+_0x2318f5[_0xbb7f('0x1f')];var _0x134bfa;if(_0x2ccb77>=_0x208b06){_0x2ccb77=_0x208b06;_0x134bfa=0xc8;}else{_0x134bfa=0xce;}_0x128b4[_0xbb7f('0x1b')](_0x134bfa);return _0x128b4[_0xbb7f('0x21')]('Content-Range',_0xd8913a+'-'+_0x2ccb77+'/'+_0x208b06)[_0xbb7f('0x1c')](_0x558580);}return null;};}function patchUpdates(_0xfecf51){return function(_0x5af7f2){try{jsonpatch[_0xbb7f('0x22')](_0x5af7f2,_0xfecf51,!![]);}catch(_0x204681){return BPromise[_0xbb7f('0x23')](_0x204681);}return _0x5af7f2['save']();};}function saveUpdates(_0x45e7fe,_0x381500){return function(_0x319c33){if(_0x319c33){return _0x319c33['update'](_0x45e7fe)[_0xbb7f('0x24')](function(_0x2c836b){return _0x2c836b;});}return null;};}function removeEntity(_0x4e7599,_0x499387){return function(_0x87c24){if(_0x87c24){return _0x87c24[_0xbb7f('0x25')]()[_0xbb7f('0x24')](function(){_0x4e7599[_0xbb7f('0x1b')](0xcc)[_0xbb7f('0x1a')]();});}};}function handleEntityNotFound(_0x1e3f6e,_0x30a347){return function(_0x16a108){if(!_0x16a108){_0x1e3f6e[_0xbb7f('0x26')](0x194);}return _0x16a108;};}function handleError(_0x293bac,_0x59486a){_0x59486a=_0x59486a||0x1f4;return function(_0x1d49ed){logger['error'](_0x1d49ed[_0xbb7f('0x27')]);if(_0x1d49ed[_0xbb7f('0x28')]){delete _0x1d49ed[_0xbb7f('0x28')];}_0x293bac[_0xbb7f('0x1b')](_0x59486a)[_0xbb7f('0x29')](_0x1d49ed);};}exports['index']=function(_0x3cfa29,_0x46681c){var _0x114503={},_0x2d1c8b={},_0x4eed0d={'count':0x0,'rows':[]};var _0xc36354=_[_0xbb7f('0x2a')](db[_0xbb7f('0x2b')]['rawAttributes'],function(_0x777c7c){return{'name':_0x777c7c[_0xbb7f('0x2c')],'type':_0x777c7c['type'][_0xbb7f('0x2d')]};});_0x2d1c8b[_0xbb7f('0x2e')]=_[_0xbb7f('0x2a')](_0xc36354,_0xbb7f('0x28'));_0x2d1c8b[_0xbb7f('0x2f')]=_['keys'](_0x3cfa29[_0xbb7f('0x2f')]);_0x2d1c8b[_0xbb7f('0x30')]=_[_0xbb7f('0x31')](_0x2d1c8b[_0xbb7f('0x2e')],_0x2d1c8b['query']);_0x114503[_0xbb7f('0x32')]=_[_0xbb7f('0x31')](_0x2d1c8b[_0xbb7f('0x2e')],qs[_0xbb7f('0x33')](_0x3cfa29[_0xbb7f('0x2f')][_0xbb7f('0x33')]));_0x114503[_0xbb7f('0x32')]=_0x114503[_0xbb7f('0x32')][_0xbb7f('0x34')]?_0x114503[_0xbb7f('0x32')]:_0x2d1c8b[_0xbb7f('0x2e')];if(!_0x3cfa29[_0xbb7f('0x2f')]['hasOwnProperty'](_0xbb7f('0x35'))){_0x114503['limit']=qs['limit'](_0x3cfa29[_0xbb7f('0x2f')][_0xbb7f('0x1f')]);_0x114503['offset']=qs['offset'](_0x3cfa29['query'][_0xbb7f('0x1d')]);}_0x114503[_0xbb7f('0x36')]=qs['sort'](_0x3cfa29[_0xbb7f('0x2f')][_0xbb7f('0x37')]);_0x114503[_0xbb7f('0x38')]=qs['filters'](_[_0xbb7f('0x39')](_0x3cfa29[_0xbb7f('0x2f')],_0x2d1c8b[_0xbb7f('0x30')]),_0xc36354);if(_0x3cfa29[_0xbb7f('0x2f')][_0xbb7f('0x3a')]){_0x114503[_0xbb7f('0x38')]=_[_0xbb7f('0x3b')](_0x114503[_0xbb7f('0x38')],{'$or':_[_0xbb7f('0x2a')](_0xc36354,function(_0x52fc9f){if(_0x52fc9f['type']!==_0xbb7f('0x3c')){var _0x2103a1={};_0x2103a1[_0x52fc9f[_0xbb7f('0x28')]]={'$like':'%'+_0x3cfa29[_0xbb7f('0x2f')]['filter']+'%'};return _0x2103a1;}})});}_0x114503=_[_0xbb7f('0x3b')]({},_0x114503,_0x3cfa29[_0xbb7f('0x3d')]);var _0x11116f={'where':_0x114503[_0xbb7f('0x38')]};return db['SugarcrmAccount'][_0xbb7f('0x20')](_0x11116f)[_0xbb7f('0x24')](function(_0x5aad69){_0x4eed0d[_0xbb7f('0x20')]=_0x5aad69;if(_0x3cfa29[_0xbb7f('0x2f')][_0xbb7f('0x3e')]){_0x114503[_0xbb7f('0x3f')]=[{'all':!![]}];}return db[_0xbb7f('0x2b')][_0xbb7f('0x40')](_0x114503);})['then'](function(_0x40906b){_0x4eed0d[_0xbb7f('0x41')]=_0x40906b;return _0x4eed0d;})['then'](respondWithFilteredResult(_0x46681c,_0x114503))[_0xbb7f('0x42')](handleError(_0x46681c,null));};exports[_0xbb7f('0x43')]=function(_0x11f2db,_0x2e8e85){var _0x31f776={'raw':![],'where':{'id':_0x11f2db[_0xbb7f('0x44')]['id']}},_0x45143d={};_0x45143d[_0xbb7f('0x2e')]=_['keys'](db[_0xbb7f('0x2b')][_0xbb7f('0x45')]);_0x45143d[_0xbb7f('0x2f')]=_[_0xbb7f('0x46')](_0x11f2db[_0xbb7f('0x2f')]);_0x45143d['filters']=_[_0xbb7f('0x31')](_0x45143d['model'],_0x45143d[_0xbb7f('0x2f')]);_0x31f776[_0xbb7f('0x32')]=_[_0xbb7f('0x31')](_0x45143d[_0xbb7f('0x2e')],qs[_0xbb7f('0x33')](_0x11f2db[_0xbb7f('0x2f')][_0xbb7f('0x33')]));_0x31f776['attributes']=_0x31f776[_0xbb7f('0x32')][_0xbb7f('0x34')]?_0x31f776[_0xbb7f('0x32')]:_0x45143d[_0xbb7f('0x2e')];if(_0x11f2db['query'][_0xbb7f('0x3e')]){_0x31f776['include']=[{'all':!![]}];}_0x31f776=_[_0xbb7f('0x3b')]({},_0x31f776,_0x11f2db[_0xbb7f('0x3d')]);return db[_0xbb7f('0x2b')][_0xbb7f('0x47')](_0x31f776)[_0xbb7f('0x24')](handleEntityNotFound(_0x2e8e85,null))['then'](respondWithResult(_0x2e8e85,null))[_0xbb7f('0x42')](handleError(_0x2e8e85,null));};exports[_0xbb7f('0x48')]=function(_0x54443e,_0x5896f2){return db['SugarcrmAccount'][_0xbb7f('0x48')](_0x54443e[_0xbb7f('0x49')],{})[_0xbb7f('0x24')](respondWithResult(_0x5896f2,0xc9))[_0xbb7f('0x42')](handleError(_0x5896f2,null));};exports[_0xbb7f('0x4a')]=function(_0x3c990f,_0x22ccd6){if(_0x3c990f['body']['id']){delete _0x3c990f[_0xbb7f('0x49')]['id'];}return db[_0xbb7f('0x2b')][_0xbb7f('0x47')]({'where':{'id':_0x3c990f[_0xbb7f('0x44')]['id']}})[_0xbb7f('0x24')](handleEntityNotFound(_0x22ccd6,null))[_0xbb7f('0x24')](saveUpdates(_0x3c990f['body'],null))[_0xbb7f('0x24')](respondWithResult(_0x22ccd6,null))[_0xbb7f('0x42')](handleError(_0x22ccd6,null));};exports['destroy']=function(_0xd52348,_0x36e1d4){return db[_0xbb7f('0x2b')]['find']({'where':{'id':_0xd52348[_0xbb7f('0x44')]['id']}})[_0xbb7f('0x24')](handleEntityNotFound(_0x36e1d4,null))[_0xbb7f('0x24')](removeEntity(_0x36e1d4,null))[_0xbb7f('0x42')](handleError(_0x36e1d4,null));};exports[_0xbb7f('0x4b')]=function(_0x5aadc8,_0x48d35a,_0xeb36df){var _0x5eb0b1={};var _0xefd87c={};var _0x26a12e;var _0x2759be;return db[_0xbb7f('0x2b')][_0xbb7f('0x4c')]({'where':{'id':_0x5aadc8[_0xbb7f('0x44')]['id']}})[_0xbb7f('0x24')](handleEntityNotFound(_0x48d35a,null))[_0xbb7f('0x24')](function(_0x22ec48){if(_0x22ec48){_0x26a12e=_0x22ec48;_0xefd87c['model']=_[_0xbb7f('0x46')](db['SugarcrmConfiguration'][_0xbb7f('0x45')]);_0xefd87c['query']=_[_0xbb7f('0x46')](_0x5aadc8[_0xbb7f('0x2f')]);_0xefd87c['filters']=_[_0xbb7f('0x31')](_0xefd87c['model'],_0xefd87c['query']);_0x5eb0b1['attributes']=_[_0xbb7f('0x31')](_0xefd87c['model'],qs[_0xbb7f('0x33')](_0x5aadc8[_0xbb7f('0x2f')][_0xbb7f('0x33')]));_0x5eb0b1[_0xbb7f('0x32')]=_0x5eb0b1['attributes'][_0xbb7f('0x34')]?_0x5eb0b1['attributes']:_0xefd87c['model'];_0x5eb0b1[_0xbb7f('0x36')]=qs[_0xbb7f('0x37')](_0x5aadc8[_0xbb7f('0x2f')][_0xbb7f('0x37')]);_0x5eb0b1['where']=qs[_0xbb7f('0x30')](_[_0xbb7f('0x39')](_0x5aadc8[_0xbb7f('0x2f')],_0xefd87c[_0xbb7f('0x30')]));if(_0x5aadc8[_0xbb7f('0x2f')][_0xbb7f('0x3a')]){_0x5eb0b1[_0xbb7f('0x38')]=_[_0xbb7f('0x3b')](_0x5eb0b1[_0xbb7f('0x38')],{'$or':_[_0xbb7f('0x2a')](_0x5eb0b1[_0xbb7f('0x32')],function(_0x5bb221){var _0x500fd9={};_0x500fd9[_0x5bb221]={'$like':'%'+_0x5aadc8[_0xbb7f('0x2f')][_0xbb7f('0x3a')]+'%'};return _0x500fd9;})});}_0x5eb0b1=_[_0xbb7f('0x3b')]({},_0x5eb0b1,_0x5aadc8['options']);return _0x26a12e[_0xbb7f('0x4b')](_0x5eb0b1);}})[_0xbb7f('0x24')](function(_0x384215){if(_0x384215){_0x2759be=_0x384215['length'];if(!_0x5aadc8[_0xbb7f('0x2f')]['hasOwnProperty'](_0xbb7f('0x35'))){_0x5eb0b1['limit']=qs[_0xbb7f('0x1f')](_0x5aadc8['query'][_0xbb7f('0x1f')]);_0x5eb0b1[_0xbb7f('0x1d')]=qs[_0xbb7f('0x1d')](_0x5aadc8[_0xbb7f('0x2f')][_0xbb7f('0x1d')]);}return _0x26a12e['getConfigurations'](_0x5eb0b1);}})[_0xbb7f('0x24')](function(_0xf09c7a){if(_0xf09c7a){return _0xf09c7a?{'count':_0x2759be,'rows':_0xf09c7a}:null;}})[_0xbb7f('0x24')](respondWithResult(_0x48d35a,null))[_0xbb7f('0x42')](handleError(_0x48d35a,null));};exports[_0xbb7f('0x4d')]=function(_0x468b27,_0x53e8d9,_0x234d9c){if(_0x468b27[_0xbb7f('0x49')]['id']){delete _0x468b27[_0xbb7f('0x49')]['id'];}return db['SugarcrmAccount'][_0xbb7f('0x4c')]({'where':{'id':_0x468b27[_0xbb7f('0x44')]['id']}})[_0xbb7f('0x24')](handleEntityNotFound(_0x53e8d9,null))['then'](function(_0x4eafa6){if(_0x4eafa6){_0x468b27[_0xbb7f('0x49')]['AccountId']=_0x4eafa6['id'];_0x468b27[_0xbb7f('0x49')]['Subjects']=integrations[_0xbb7f('0x4e')](_0x468b27['body'][_0xbb7f('0x4f')],_0x468b27['body'][_0xbb7f('0x50')]);_0x468b27[_0xbb7f('0x49')][_0xbb7f('0x51')]=integrations[_0xbb7f('0x52')](_0x468b27[_0xbb7f('0x49')][_0xbb7f('0x4f')],_0x468b27[_0xbb7f('0x49')][_0xbb7f('0x50')]);return db[_0xbb7f('0x53')]['create'](_0x468b27['body'],{'include':[{'model':db[_0xbb7f('0x54')],'as':_0xbb7f('0x55')},{'model':db['SugarcrmField'],'as':_0xbb7f('0x51')}]});}return null;})[_0xbb7f('0x24')](respondWithResult(_0x53e8d9,null))['catch'](handleError(_0x53e8d9,null));};exports[_0xbb7f('0x56')]=function(_0x1b513a,_0x554ac3,_0x47f9db){var _0x556a96='';var _0x31eb3d=['id',_0xbb7f('0x28'),_0xbb7f('0x57'),_0xbb7f('0x58'),_0xbb7f('0x59'),_0xbb7f('0x5a'),_0xbb7f('0x5b'),_0xbb7f('0x5c'),_0xbb7f('0x5d'),_0xbb7f('0x5e'),_0xbb7f('0x5f'),_0xbb7f('0x60')];return db[_0xbb7f('0x2b')][_0xbb7f('0x4c')]({'where':{'id':_0x1b513a[_0xbb7f('0x44')]['id']},'attributes':['id','username',_0xbb7f('0x61'),_0xbb7f('0x62')]})['then'](handleEntityNotFound(_0x554ac3,null))[_0xbb7f('0x24')](function(_0x21263f){if(_0x21263f){_0x556a96=_0x21263f[_0xbb7f('0x62')];var _0x647551=_0x556a96[_0xbb7f('0x63')](-0x1);if(_0x647551==='/'){_0x556a96=_0x556a96['substring'](0x0,_0x556a96[_0xbb7f('0x64')](_0x647551));}return rp({'method':_0xbb7f('0x65'),'uri':util[_0xbb7f('0x66')](_0xbb7f('0x67'),_0x556a96,_0xbb7f('0x68')),'json':!![],'form':{'method':_0xbb7f('0x69'),'input_type':_0xbb7f('0x6a'),'response_type':_0xbb7f('0x6a'),'rest_data':JSON[_0xbb7f('0x6b')]({'user_auth':{'user_name':_0x21263f[_0xbb7f('0x6c')],'password':_0x21263f[_0xbb7f('0x61')],'encryption':_0xbb7f('0x6d')},'application':_0xbb7f('0x6e')})}});}})['then'](function(_0x197160){if(_0x197160&&_0x197160[_0xbb7f('0x28')]!=='Invalid\x20Login'&&_0x197160[_0xbb7f('0x28')]!==_0xbb7f('0x6f')){return rp({'method':_0xbb7f('0x65'),'uri':util['format'](_0xbb7f('0x67'),_0x556a96,_0xbb7f('0x68')),'json':!![],'form':{'method':_0xbb7f('0x70'),'input_type':_0xbb7f('0x6a'),'response_type':_0xbb7f('0x6a'),'rest_data':JSON[_0xbb7f('0x6b')]({'session':_0x197160['id'],'module_name':_0xbb7f('0x71')})}})['then'](function(_0x46402d){if(_0x46402d){var _0x547609=_['values'](_0x46402d[_0xbb7f('0x72')]);_[_0xbb7f('0x73')](_0x547609,function(_0x5b3edd){return _0x31eb3d[_0xbb7f('0x74')](_0x5b3edd['name']);});return{'count':_0x547609[_0xbb7f('0x34')],'rows':_[_0xbb7f('0x2a')](_0x547609,function(_0x3b6924){return{'id':_0x3b6924[_0xbb7f('0x28')],'name':_0x3b6924[_0xbb7f('0x75')],'custom':_['endsWith'](_0x3b6924['name'],'_c')?!![]:![],'options':_0x3b6924[_0xbb7f('0x3d')]?_['map'](_[_0xbb7f('0x76')](_0x3b6924[_0xbb7f('0x3d')]),function(_0x2596b6){return{'name':_0x2596b6[_0xbb7f('0x77')],'value':_0x2596b6['name']};}):[]};})};}})['then'](respondWithResult(_0x554ac3,null))['catch'](function(_0x246447){var _0x2a5d50=_0x1b513a[_0xbb7f('0x2f')][_0xbb7f('0x78')]?0x1f4:_0x246447[_0xbb7f('0x79')]||0x1f4;logger['error'](_0xbb7f('0x7a'),_0xbb7f('0x56'),_0x2a5d50,JSON['stringify'](_0x246447));delete _0x246447[_0xbb7f('0x28')];if(_0x2a5d50===0x191){_0x2a5d50=0x190;}_0x554ac3[_0xbb7f('0x1b')](_0x2a5d50)[_0xbb7f('0x29')](_0x1b513a[_0xbb7f('0x2f')][_0xbb7f('0x78')]?{'message':'Wrong\x20credentials','statusCode':_0x246447[_0xbb7f('0x79')]}:_0x246447);});}else{var _0x38ad07=0x1f4;_0x554ac3[_0xbb7f('0x1b')](_0x38ad07)['send']({'message':_0xbb7f('0x7b'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x2457=['model','keys','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','fields','find','create','body','params','destroy','getConfigurations','SugarcrmConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_minutes','parent_id','parent_type','parent_name','direction','username','password','remoteUri','slice','substring','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','POST','values','module_fields','remove','includes','label','endsWith','value','test','statusCode','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','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','Content-Range','apply','reject','save','then','error','stack','name','index','map','SugarcrmAccount','rawAttributes','key'];(function(_0x5884dc,_0x3c6e23){var _0xfc36b1=function(_0x497107){while(--_0x497107){_0x5884dc['push'](_0x5884dc['shift']());}};_0xfc36b1(++_0x3c6e23);}(_0x2457,0x1bf));var _0x7245=function(_0x3f1d83,_0x14879f){_0x3f1d83=_0x3f1d83-0x0;var _0x42625b=_0x2457[_0x3f1d83];return _0x42625b;};'use strict';var emlformat=require(_0x7245('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7245('0x1'));var jsonpatch=require(_0x7245('0x2'));var rp=require(_0x7245('0x3'));var moment=require(_0x7245('0x4'));var BPromise=require(_0x7245('0x5'));var Mustache=require(_0x7245('0x6'));var util=require('util');var path=require(_0x7245('0x7'));var sox=require('sox');var csv=require(_0x7245('0x8'));var ejs=require(_0x7245('0x9'));var fs=require('fs');var fs_extra=require(_0x7245('0xa'));var _=require(_0x7245('0xb'));var squel=require('squel');var crypto=require(_0x7245('0xc'));var jsforce=require(_0x7245('0xd'));var deskjs=require(_0x7245('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7245('0xf'));var Papa=require('papaparse');var Redis=require(_0x7245('0x10'));var authService=require(_0x7245('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7245('0x12'));var hardwareService=require(_0x7245('0x13'));var logger=require(_0x7245('0x14'))(_0x7245('0x15'));var utils=require(_0x7245('0x16'));var config=require(_0x7245('0x17'));var licenseUtil=require(_0x7245('0x18'));var db=require(_0x7245('0x19'))['db'];var integrations=require(_0x7245('0x1a'));function respondWithStatusCode(_0x2071c3,_0xa15041){_0xa15041=_0xa15041||0xcc;return function(_0x53d5a2){if(_0x53d5a2){return _0x2071c3[_0x7245('0x1b')](_0xa15041);}return _0x2071c3['status'](_0xa15041)[_0x7245('0x1c')]();};}function respondWithResult(_0x484d87,_0xed2a74){_0xed2a74=_0xed2a74||0xc8;return function(_0x43a330){if(_0x43a330){return _0x484d87[_0x7245('0x1d')](_0xed2a74)[_0x7245('0x1e')](_0x43a330);}};}function respondWithFilteredResult(_0x1be254,_0xb2b1d6){return function(_0x77a9bb){if(_0x77a9bb){var _0x4cd1b5=typeof _0xb2b1d6[_0x7245('0x1f')]===_0x7245('0x20')&&typeof _0xb2b1d6[_0x7245('0x21')]===_0x7245('0x20');var _0x27a4f5=_0x77a9bb[_0x7245('0x22')];var _0xd93234=_0x4cd1b5?0x0:_0xb2b1d6[_0x7245('0x1f')];var _0x173627=_0x4cd1b5?_0x77a9bb['count']:_0xb2b1d6['offset']+_0xb2b1d6['limit'];var _0x11715e;if(_0x173627>=_0x27a4f5){_0x173627=_0x27a4f5;_0x11715e=0xc8;}else{_0x11715e=0xce;}_0x1be254['status'](_0x11715e);return _0x1be254[_0x7245('0x23')](_0x7245('0x24'),_0xd93234+'-'+_0x173627+'/'+_0x27a4f5)[_0x7245('0x1e')](_0x77a9bb);}return null;};}function patchUpdates(_0x3165a7){return function(_0x311b5b){try{jsonpatch[_0x7245('0x25')](_0x311b5b,_0x3165a7,!![]);}catch(_0x6748b2){return BPromise[_0x7245('0x26')](_0x6748b2);}return _0x311b5b[_0x7245('0x27')]();};}function saveUpdates(_0x2de156,_0x2c1c3b){return function(_0x26dc40){if(_0x26dc40){return _0x26dc40['update'](_0x2de156)[_0x7245('0x28')](function(_0x178531){return _0x178531;});}return null;};}function removeEntity(_0x46201b,_0x59b7e3){return function(_0x54b9fd){if(_0x54b9fd){return _0x54b9fd['destroy']()[_0x7245('0x28')](function(){_0x46201b['status'](0xcc)[_0x7245('0x1c')]();});}};}function handleEntityNotFound(_0x364fdd,_0x369e38){return function(_0x1a0bc2){if(!_0x1a0bc2){_0x364fdd['sendStatus'](0x194);}return _0x1a0bc2;};}function handleError(_0x21f7dd,_0x5cdc8d){_0x5cdc8d=_0x5cdc8d||0x1f4;return function(_0x10e776){logger[_0x7245('0x29')](_0x10e776[_0x7245('0x2a')]);if(_0x10e776[_0x7245('0x2b')]){delete _0x10e776[_0x7245('0x2b')];}_0x21f7dd[_0x7245('0x1d')](_0x5cdc8d)['send'](_0x10e776);};}exports[_0x7245('0x2c')]=function(_0x106b99,_0xf3e8c9){var _0x1a1c26={},_0x3e7f20={},_0x1a8fa5={'count':0x0,'rows':[]};var _0x4a52e0=_[_0x7245('0x2d')](db[_0x7245('0x2e')][_0x7245('0x2f')],function(_0x2567d2){return{'name':_0x2567d2['fieldName'],'type':_0x2567d2['type'][_0x7245('0x30')]};});_0x3e7f20[_0x7245('0x31')]=_['map'](_0x4a52e0,_0x7245('0x2b'));_0x3e7f20['query']=_[_0x7245('0x32')](_0x106b99[_0x7245('0x33')]);_0x3e7f20[_0x7245('0x34')]=_[_0x7245('0x35')](_0x3e7f20[_0x7245('0x31')],_0x3e7f20['query']);_0x1a1c26[_0x7245('0x36')]=_['intersection'](_0x3e7f20[_0x7245('0x31')],qs['fields'](_0x106b99[_0x7245('0x33')]['fields']));_0x1a1c26[_0x7245('0x36')]=_0x1a1c26[_0x7245('0x36')][_0x7245('0x37')]?_0x1a1c26[_0x7245('0x36')]:_0x3e7f20[_0x7245('0x31')];if(!_0x106b99[_0x7245('0x33')][_0x7245('0x38')]('nolimit')){_0x1a1c26[_0x7245('0x21')]=qs['limit'](_0x106b99[_0x7245('0x33')][_0x7245('0x21')]);_0x1a1c26[_0x7245('0x1f')]=qs[_0x7245('0x1f')](_0x106b99[_0x7245('0x33')]['offset']);}_0x1a1c26[_0x7245('0x39')]=qs[_0x7245('0x3a')](_0x106b99[_0x7245('0x33')][_0x7245('0x3a')]);_0x1a1c26[_0x7245('0x3b')]=qs[_0x7245('0x34')](_[_0x7245('0x3c')](_0x106b99[_0x7245('0x33')],_0x3e7f20['filters']),_0x4a52e0);if(_0x106b99[_0x7245('0x33')][_0x7245('0x3d')]){_0x1a1c26['where']=_[_0x7245('0x3e')](_0x1a1c26['where'],{'$or':_[_0x7245('0x2d')](_0x4a52e0,function(_0x2022be){if(_0x2022be[_0x7245('0x3f')]!==_0x7245('0x40')){var _0x15f4c3={};_0x15f4c3[_0x2022be[_0x7245('0x2b')]]={'$like':'%'+_0x106b99['query'][_0x7245('0x3d')]+'%'};return _0x15f4c3;}})});}_0x1a1c26=_[_0x7245('0x3e')]({},_0x1a1c26,_0x106b99[_0x7245('0x41')]);var _0x404b41={'where':_0x1a1c26[_0x7245('0x3b')]};return db[_0x7245('0x2e')][_0x7245('0x22')](_0x404b41)['then'](function(_0x2c8fb4){_0x1a8fa5[_0x7245('0x22')]=_0x2c8fb4;if(_0x106b99[_0x7245('0x33')][_0x7245('0x42')]){_0x1a1c26[_0x7245('0x43')]=[{'all':!![]}];}return db[_0x7245('0x2e')][_0x7245('0x44')](_0x1a1c26);})[_0x7245('0x28')](function(_0xe740b){_0x1a8fa5[_0x7245('0x45')]=_0xe740b;return _0x1a8fa5;})[_0x7245('0x28')](respondWithFilteredResult(_0xf3e8c9,_0x1a1c26))[_0x7245('0x46')](handleError(_0xf3e8c9,null));};exports[_0x7245('0x47')]=function(_0x1087fa,_0x24ddbf){var _0x4ea906={'raw':![],'where':{'id':_0x1087fa['params']['id']}},_0x4b4fe5={};_0x4b4fe5[_0x7245('0x31')]=_[_0x7245('0x32')](db[_0x7245('0x2e')][_0x7245('0x2f')]);_0x4b4fe5[_0x7245('0x33')]=_[_0x7245('0x32')](_0x1087fa[_0x7245('0x33')]);_0x4b4fe5[_0x7245('0x34')]=_[_0x7245('0x35')](_0x4b4fe5['model'],_0x4b4fe5[_0x7245('0x33')]);_0x4ea906[_0x7245('0x36')]=_['intersection'](_0x4b4fe5['model'],qs['fields'](_0x1087fa['query'][_0x7245('0x48')]));_0x4ea906[_0x7245('0x36')]=_0x4ea906[_0x7245('0x36')][_0x7245('0x37')]?_0x4ea906[_0x7245('0x36')]:_0x4b4fe5['model'];if(_0x1087fa['query'][_0x7245('0x42')]){_0x4ea906[_0x7245('0x43')]=[{'all':!![]}];}_0x4ea906=_[_0x7245('0x3e')]({},_0x4ea906,_0x1087fa['options']);return db[_0x7245('0x2e')][_0x7245('0x49')](_0x4ea906)[_0x7245('0x28')](handleEntityNotFound(_0x24ddbf,null))[_0x7245('0x28')](respondWithResult(_0x24ddbf,null))[_0x7245('0x46')](handleError(_0x24ddbf,null));};exports[_0x7245('0x4a')]=function(_0x14b07e,_0x34e7d5){return db[_0x7245('0x2e')][_0x7245('0x4a')](_0x14b07e[_0x7245('0x4b')],{})[_0x7245('0x28')](respondWithResult(_0x34e7d5,0xc9))[_0x7245('0x46')](handleError(_0x34e7d5,null));};exports['update']=function(_0x29f681,_0x1a08b3){if(_0x29f681[_0x7245('0x4b')]['id']){delete _0x29f681['body']['id'];}return db[_0x7245('0x2e')][_0x7245('0x49')]({'where':{'id':_0x29f681[_0x7245('0x4c')]['id']}})[_0x7245('0x28')](handleEntityNotFound(_0x1a08b3,null))[_0x7245('0x28')](saveUpdates(_0x29f681[_0x7245('0x4b')],null))['then'](respondWithResult(_0x1a08b3,null))[_0x7245('0x46')](handleError(_0x1a08b3,null));};exports[_0x7245('0x4d')]=function(_0x23f8c6,_0x7e6438){return db['SugarcrmAccount'][_0x7245('0x49')]({'where':{'id':_0x23f8c6[_0x7245('0x4c')]['id']}})['then'](handleEntityNotFound(_0x7e6438,null))[_0x7245('0x28')](removeEntity(_0x7e6438,null))['catch'](handleError(_0x7e6438,null));};exports[_0x7245('0x4e')]=function(_0x533388,_0x498037,_0x1d9558){var _0x561e2c={};var _0x4f97de={};var _0x574c7a;var _0x3c191d;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x533388[_0x7245('0x4c')]['id']}})[_0x7245('0x28')](handleEntityNotFound(_0x498037,null))[_0x7245('0x28')](function(_0x496c92){if(_0x496c92){_0x574c7a=_0x496c92;_0x4f97de[_0x7245('0x31')]=_['keys'](db[_0x7245('0x4f')][_0x7245('0x2f')]);_0x4f97de[_0x7245('0x33')]=_[_0x7245('0x32')](_0x533388[_0x7245('0x33')]);_0x4f97de[_0x7245('0x34')]=_['intersection'](_0x4f97de[_0x7245('0x31')],_0x4f97de['query']);_0x561e2c['attributes']=_[_0x7245('0x35')](_0x4f97de[_0x7245('0x31')],qs[_0x7245('0x48')](_0x533388[_0x7245('0x33')][_0x7245('0x48')]));_0x561e2c[_0x7245('0x36')]=_0x561e2c[_0x7245('0x36')]['length']?_0x561e2c[_0x7245('0x36')]:_0x4f97de['model'];_0x561e2c['order']=qs[_0x7245('0x3a')](_0x533388[_0x7245('0x33')][_0x7245('0x3a')]);_0x561e2c[_0x7245('0x3b')]=qs[_0x7245('0x34')](_[_0x7245('0x3c')](_0x533388['query'],_0x4f97de['filters']));if(_0x533388[_0x7245('0x33')][_0x7245('0x3d')]){_0x561e2c[_0x7245('0x3b')]=_['merge'](_0x561e2c[_0x7245('0x3b')],{'$or':_['map'](_0x561e2c[_0x7245('0x36')],function(_0x41f1a8){var _0x168d7f={};_0x168d7f[_0x41f1a8]={'$like':'%'+_0x533388[_0x7245('0x33')][_0x7245('0x3d')]+'%'};return _0x168d7f;})});}_0x561e2c=_['merge']({},_0x561e2c,_0x533388[_0x7245('0x41')]);return _0x574c7a[_0x7245('0x4e')](_0x561e2c);}})[_0x7245('0x28')](function(_0x16553d){if(_0x16553d){_0x3c191d=_0x16553d[_0x7245('0x37')];if(!_0x533388[_0x7245('0x33')][_0x7245('0x38')]('nolimit')){_0x561e2c[_0x7245('0x21')]=qs[_0x7245('0x21')](_0x533388[_0x7245('0x33')][_0x7245('0x21')]);_0x561e2c['offset']=qs[_0x7245('0x1f')](_0x533388['query']['offset']);}return _0x574c7a[_0x7245('0x4e')](_0x561e2c);}})[_0x7245('0x28')](function(_0x32c2d0){if(_0x32c2d0){return _0x32c2d0?{'count':_0x3c191d,'rows':_0x32c2d0}:null;}})[_0x7245('0x28')](respondWithResult(_0x498037,null))[_0x7245('0x46')](handleError(_0x498037,null));};exports['addConfiguration']=function(_0xfba9e1,_0x58538d,_0x5957fe){if(_0xfba9e1[_0x7245('0x4b')]['id']){delete _0xfba9e1[_0x7245('0x4b')]['id'];}return db[_0x7245('0x2e')]['findOne']({'where':{'id':_0xfba9e1[_0x7245('0x4c')]['id']}})['then'](handleEntityNotFound(_0x58538d,null))[_0x7245('0x28')](function(_0x47d78e){if(_0x47d78e){_0xfba9e1['body'][_0x7245('0x50')]=_0x47d78e['id'];_0xfba9e1[_0x7245('0x4b')][_0x7245('0x51')]=integrations[_0x7245('0x52')](_0xfba9e1[_0x7245('0x4b')][_0x7245('0x53')],_0xfba9e1['body'][_0x7245('0x3f')]);_0xfba9e1['body'][_0x7245('0x54')]=integrations[_0x7245('0x55')](_0xfba9e1['body'][_0x7245('0x53')],_0xfba9e1['body'][_0x7245('0x3f')]);return db['SugarcrmConfiguration'][_0x7245('0x4a')](_0xfba9e1['body'],{'include':[{'model':db[_0x7245('0x56')],'as':_0x7245('0x51')},{'model':db[_0x7245('0x56')],'as':'Descriptions'}]});}return null;})[_0x7245('0x28')](respondWithResult(_0x58538d,null))[_0x7245('0x46')](handleError(_0x58538d,null));};exports[_0x7245('0x57')]=function(_0x2f2e7c,_0x594386,_0x5b458f){var _0x2a3612='';var _0x49ab25=['id',_0x7245('0x2b'),_0x7245('0x58'),_0x7245('0x59'),_0x7245('0x5a'),_0x7245('0x5b'),'duration_hours',_0x7245('0x5c'),_0x7245('0x5d'),_0x7245('0x5e'),_0x7245('0x5f'),_0x7245('0x60')];return db[_0x7245('0x2e')]['findOne']({'where':{'id':_0x2f2e7c[_0x7245('0x4c')]['id']},'attributes':['id',_0x7245('0x61'),_0x7245('0x62'),_0x7245('0x63')]})[_0x7245('0x28')](handleEntityNotFound(_0x594386,null))['then'](function(_0x1043bc){if(_0x1043bc){_0x2a3612=_0x1043bc[_0x7245('0x63')];var _0x2c186b=_0x2a3612[_0x7245('0x64')](-0x1);if(_0x2c186b==='/'){_0x2a3612=_0x2a3612[_0x7245('0x65')](0x0,_0x2a3612['lastIndexOf'](_0x2c186b));}return rp({'method':'POST','uri':util[_0x7245('0x66')](_0x7245('0x67'),_0x2a3612,_0x7245('0x68')),'json':!![],'form':{'method':_0x7245('0x69'),'input_type':_0x7245('0x6a'),'response_type':_0x7245('0x6a'),'rest_data':JSON[_0x7245('0x6b')]({'user_auth':{'user_name':_0x1043bc['username'],'password':_0x1043bc['password'],'encryption':_0x7245('0x6c')},'application':_0x7245('0x6d')})}});}})['then'](function(_0x1d88f6){if(_0x1d88f6&&_0x1d88f6[_0x7245('0x2b')]!==_0x7245('0x6e')&&_0x1d88f6[_0x7245('0x2b')]!==_0x7245('0x6f')){return rp({'method':_0x7245('0x70'),'uri':util['format']('%s%s',_0x2a3612,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':_0x7245('0x6a'),'rest_data':JSON[_0x7245('0x6b')]({'session':_0x1d88f6['id'],'module_name':'Calls'})}})[_0x7245('0x28')](function(_0x204c9a){if(_0x204c9a){var _0x75fc68=_[_0x7245('0x71')](_0x204c9a[_0x7245('0x72')]);_[_0x7245('0x73')](_0x75fc68,function(_0x41486c){return _0x49ab25[_0x7245('0x74')](_0x41486c['name']);});return{'count':_0x75fc68['length'],'rows':_[_0x7245('0x2d')](_0x75fc68,function(_0x4e375c){return{'id':_0x4e375c['name'],'name':_0x4e375c[_0x7245('0x75')],'custom':_[_0x7245('0x76')](_0x4e375c[_0x7245('0x2b')],'_c')?!![]:![],'options':_0x4e375c[_0x7245('0x41')]?_[_0x7245('0x2d')](_[_0x7245('0x71')](_0x4e375c[_0x7245('0x41')]),function(_0x7dd8fb){return{'name':_0x7dd8fb[_0x7245('0x77')],'value':_0x7dd8fb[_0x7245('0x2b')]};}):[]};})};}})[_0x7245('0x28')](respondWithResult(_0x594386,null))['catch'](function(_0x4d0b2f){var _0x215cf8=_0x2f2e7c['query'][_0x7245('0x78')]?0x1f4:_0x4d0b2f[_0x7245('0x79')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x7245('0x57'),_0x215cf8,JSON['stringify'](_0x4d0b2f));delete _0x4d0b2f[_0x7245('0x2b')];if(_0x215cf8===0x191){_0x215cf8=0x190;}_0x594386[_0x7245('0x1d')](_0x215cf8)[_0x7245('0x7a')](_0x2f2e7c[_0x7245('0x33')]['test']?{'message':_0x7245('0x7b'),'statusCode':_0x4d0b2f[_0x7245('0x79')]}:_0x4d0b2f);});}else{var _0x5becba=0x1f4;_0x594386[_0x7245('0x1d')](_0x5becba)[_0x7245('0x7a')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index 2e291ae..2f33854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbcc=['path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x543219,_0x350a13){var _0x4df73f=function(_0x5807e9){while(--_0x5807e9){_0x543219['push'](_0x543219['shift']());}};_0x4df73f(++_0x350a13);}(_0xbbcc,0xf8));var _0xcbbc=function(_0x46f1a6,_0xc7a582){_0x46f1a6=_0x46f1a6-0x0;var _0x38429a=_0xbbcc[_0x46f1a6];return _0x38429a;};'use strict';var _=require(_0xcbbc('0x0'));var util=require(_0xcbbc('0x1'));var logger=require(_0xcbbc('0x2'))(_0xcbbc('0x3'));var moment=require(_0xcbbc('0x4'));var BPromise=require(_0xcbbc('0x5'));var rp=require(_0xcbbc('0x6'));var fs=require('fs');var path=require(_0xcbbc('0x7'));var rimraf=require('rimraf');var config=require(_0xcbbc('0x8'));var attributes=require(_0xcbbc('0x9'));var integrations=require(_0xcbbc('0xa'));module[_0xcbbc('0xb')]=function(_0x3edfe5,_0x28a38b){return _0x3edfe5[_0xcbbc('0xc')](_0xcbbc('0xd'),attributes,{'tableName':_0xcbbc('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa107=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x53d2db,_0xf3dd67){var _0x498cb0=function(_0x1d86ae){while(--_0x1d86ae){_0x53d2db['push'](_0x53d2db['shift']());}};_0x498cb0(++_0xf3dd67);}(_0xa107,0x7d));var _0x7a10=function(_0x3a2a8c,_0x2f9bc5){_0x3a2a8c=_0x3a2a8c-0x0;var _0x48b09c=_0xa107[_0x3a2a8c];return _0x48b09c;};'use strict';var _=require(_0x7a10('0x0'));var util=require('util');var logger=require(_0x7a10('0x1'))(_0x7a10('0x2'));var moment=require(_0x7a10('0x3'));var BPromise=require(_0x7a10('0x4'));var rp=require(_0x7a10('0x5'));var fs=require('fs');var path=require(_0x7a10('0x6'));var rimraf=require(_0x7a10('0x7'));var config=require(_0x7a10('0x8'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x7a10('0x9'));module['exports']=function(_0x310b4b,_0x470b85){return _0x310b4b[_0x7a10('0xa')](_0x7a10('0xb'),attributes,{'tableName':_0x7a10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 260ad6d..36b92cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2036=['request\x20sent','error','code','message','result','catch','SugarcrmAccount','findAll','options','raw','where','attributes','limit','model','map','include','info','GetSugarcrmAccount','debug','stringify','find','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','SugarcrmAccount,\x20%s,\x20%s'];(function(_0x15805f,_0x1f1676){var _0x1c136f=function(_0x691fa5){while(--_0x691fa5){_0x15805f['push'](_0x15805f['shift']());}};_0x1c136f(++_0x1f1676);}(_0x2036,0xca));var _0x6203=function(_0x571729,_0x5d03e2){_0x571729=_0x571729-0x0;var _0x38820e=_0x2036[_0x571729];return _0x38820e;};'use strict';var _=require(_0x6203('0x0'));var util=require(_0x6203('0x1'));var moment=require(_0x6203('0x2'));var BPromise=require(_0x6203('0x3'));var rs=require(_0x6203('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6203('0x5'))['db'];var utils=require(_0x6203('0x6'));var logger=require(_0x6203('0x7'))(_0x6203('0x8'));var config=require(_0x6203('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6203('0xa')][_0x6203('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40a710,_0x2769b6,_0x20d826){return new BPromise(function(_0x3362c0,_0x374049){return client['request'](_0x40a710,_0x20d826)[_0x6203('0xc')](function(_0x4e8d42){logger['info'](_0x6203('0xd'),_0x2769b6,'request\x20sent');logger['debug']('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x2769b6,_0x6203('0xe'),JSON['stringify'](_0x4e8d42));if(_0x4e8d42[_0x6203('0xf')]){if(_0x4e8d42['error'][_0x6203('0x10')]===0x1f4){logger[_0x6203('0xf')](_0x6203('0xd'),_0x2769b6,_0x4e8d42[_0x6203('0xf')]['message']);return _0x374049(_0x4e8d42[_0x6203('0xf')][_0x6203('0x11')]);}logger[_0x6203('0xf')](_0x6203('0xd'),_0x2769b6,_0x4e8d42[_0x6203('0xf')]['message']);return _0x3362c0(_0x4e8d42[_0x6203('0xf')][_0x6203('0x11')]);}else{logger['info'](_0x6203('0xd'),_0x2769b6,_0x6203('0xe'));_0x3362c0(_0x4e8d42[_0x6203('0x12')]['message']);}})[_0x6203('0x13')](function(_0x562958){logger['error'](_0x6203('0xd'),_0x2769b6,_0x562958);_0x374049(_0x562958);});});}exports['GetSugarcrmAccount']=function(_0x1c1c01){var _0x5c0690=this;return new Promise(function(_0x447b5c,_0x374a88){return db[_0x6203('0x14')][_0x6203('0x15')]({'raw':_0x1c1c01[_0x6203('0x16')]?_0x1c1c01['options'][_0x6203('0x17')]===undefined?!![]:![]:!![],'where':_0x1c1c01['options']?_0x1c1c01[_0x6203('0x16')][_0x6203('0x18')]||null:null,'attributes':_0x1c1c01[_0x6203('0x16')]?_0x1c1c01[_0x6203('0x16')][_0x6203('0x19')]||null:null,'limit':_0x1c1c01[_0x6203('0x16')]?_0x1c1c01[_0x6203('0x16')][_0x6203('0x1a')]||null:null,'include':_0x1c1c01[_0x6203('0x16')]?_0x1c1c01[_0x6203('0x16')]['include']?_['map'](_0x1c1c01[_0x6203('0x16')]['include'],function(_0x697c80){return{'model':db[_0x697c80[_0x6203('0x1b')]],'as':_0x697c80['as'],'attributes':_0x697c80['attributes'],'include':_0x697c80['include']?_[_0x6203('0x1c')](_0x697c80[_0x6203('0x1d')],function(_0x56ae01){return{'model':db[_0x56ae01[_0x6203('0x1b')]],'as':_0x56ae01['as'],'attributes':_0x56ae01[_0x6203('0x19')],'include':_0x56ae01[_0x6203('0x1d')]?_[_0x6203('0x1c')](_0x56ae01[_0x6203('0x1d')],function(_0x2eb152){return{'model':db[_0x2eb152[_0x6203('0x1b')]],'as':_0x2eb152['as'],'attributes':_0x2eb152['attributes']};}):[]};}):[]};}):[]:[]})[_0x6203('0xc')](function(_0x5b0ab3){logger[_0x6203('0x1e')](_0x6203('0x1f'),_0x1c1c01);logger[_0x6203('0x20')](_0x6203('0x1f'),_0x1c1c01,JSON[_0x6203('0x21')](_0x5b0ab3));_0x447b5c(_0x5b0ab3);})[_0x6203('0x13')](function(_0x3cbbc4){logger[_0x6203('0xf')](_0x6203('0x1f'),_0x3cbbc4['message'],_0x1c1c01);_0x374a88(_0x5c0690['error'](0x1f4,_0x3cbbc4[_0x6203('0x11')]));});});};exports['ShowSugarcrmAccount']=function(_0x50933b){var _0x3bf7bd=this;return new Promise(function(_0x1c1fdc,_0x32d7c6){return db[_0x6203('0x14')][_0x6203('0x22')]({'raw':_0x50933b[_0x6203('0x16')]?_0x50933b[_0x6203('0x16')][_0x6203('0x17')]===undefined?!![]:![]:!![],'where':_0x50933b[_0x6203('0x16')]?_0x50933b[_0x6203('0x16')][_0x6203('0x18')]||null:null,'attributes':_0x50933b[_0x6203('0x16')]?_0x50933b[_0x6203('0x16')][_0x6203('0x19')]||null:null,'include':_0x50933b[_0x6203('0x16')]?_0x50933b[_0x6203('0x16')][_0x6203('0x1d')]?_['map'](_0x50933b[_0x6203('0x16')][_0x6203('0x1d')],function(_0x1f1a8c){return{'model':db[_0x1f1a8c[_0x6203('0x1b')]],'as':_0x1f1a8c['as'],'attributes':_0x1f1a8c['attributes'],'include':_0x1f1a8c['include']?_['map'](_0x1f1a8c[_0x6203('0x1d')],function(_0x80560a){return{'model':db[_0x80560a[_0x6203('0x1b')]],'as':_0x80560a['as'],'attributes':_0x80560a[_0x6203('0x19')],'include':_0x80560a[_0x6203('0x1d')]?_[_0x6203('0x1c')](_0x80560a[_0x6203('0x1d')],function(_0x7839a0){return{'model':db[_0x7839a0[_0x6203('0x1b')]],'as':_0x7839a0['as'],'attributes':_0x7839a0[_0x6203('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x415117){logger['info'](_0x6203('0x23'),_0x50933b);logger[_0x6203('0x20')](_0x6203('0x23'),_0x50933b,JSON[_0x6203('0x21')](_0x415117));_0x1c1fdc(_0x415117);})[_0x6203('0x13')](function(_0x947e16){logger[_0x6203('0xf')](_0x6203('0x23'),_0x947e16['message'],_0x50933b);_0x32d7c6(_0x3bf7bd[_0x6203('0xf')](0x1f4,_0x947e16['message']));});});};
\ No newline at end of file
+var _0x1b66=['debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','info','result','catch','GetSugarcrmAccount','findAll','options','raw','where','attributes','include','map','model','ShowSugarcrmAccount','SugarcrmAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x2c16b9,_0x387067){var _0x557b8b=function(_0x5e41fd){while(--_0x5e41fd){_0x2c16b9['push'](_0x2c16b9['shift']());}};_0x557b8b(++_0x387067);}(_0x1b66,0xee));var _0x61b6=function(_0x5e882d,_0x10b047){_0x5e882d=_0x5e882d-0x0;var _0x200dd2=_0x1b66[_0x5e882d];return _0x200dd2;};'use strict';var _=require(_0x61b6('0x0'));var util=require(_0x61b6('0x1'));var moment=require(_0x61b6('0x2'));var BPromise=require(_0x61b6('0x3'));var rs=require(_0x61b6('0x4'));var fs=require('fs');var Redis=require(_0x61b6('0x5'));var db=require(_0x61b6('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x61b6('0x7'));var config=require(_0x61b6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x61b6('0x9')][_0x61b6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x159709,_0x2194b,_0x3f9ae7){return new BPromise(function(_0x43d71e,_0x5c379b){return client[_0x61b6('0xb')](_0x159709,_0x3f9ae7)[_0x61b6('0xc')](function(_0x1b958b){logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x2194b,_0x61b6('0xd'));logger[_0x61b6('0xe')](_0x61b6('0xf'),_0x2194b,_0x61b6('0xd'),JSON[_0x61b6('0x10')](_0x1b958b));if(_0x1b958b['error']){if(_0x1b958b[_0x61b6('0x11')][_0x61b6('0x12')]===0x1f4){logger[_0x61b6('0x11')](_0x61b6('0x13'),_0x2194b,_0x1b958b[_0x61b6('0x11')][_0x61b6('0x14')]);return _0x5c379b(_0x1b958b[_0x61b6('0x11')]['message']);}logger[_0x61b6('0x11')](_0x61b6('0x13'),_0x2194b,_0x1b958b[_0x61b6('0x11')][_0x61b6('0x14')]);return _0x43d71e(_0x1b958b[_0x61b6('0x11')][_0x61b6('0x14')]);}else{logger[_0x61b6('0x15')](_0x61b6('0x13'),_0x2194b,'request\x20sent');_0x43d71e(_0x1b958b[_0x61b6('0x16')]['message']);}})[_0x61b6('0x17')](function(_0x1028ce){logger[_0x61b6('0x11')](_0x61b6('0x13'),_0x2194b,_0x1028ce);_0x5c379b(_0x1028ce);});});}exports[_0x61b6('0x18')]=function(_0x462659){var _0x498786=this;return new Promise(function(_0x591995,_0x5c1311){return db['SugarcrmAccount'][_0x61b6('0x19')]({'raw':_0x462659[_0x61b6('0x1a')]?_0x462659[_0x61b6('0x1a')][_0x61b6('0x1b')]===undefined?!![]:![]:!![],'where':_0x462659[_0x61b6('0x1a')]?_0x462659[_0x61b6('0x1a')][_0x61b6('0x1c')]||null:null,'attributes':_0x462659['options']?_0x462659[_0x61b6('0x1a')][_0x61b6('0x1d')]||null:null,'limit':_0x462659[_0x61b6('0x1a')]?_0x462659[_0x61b6('0x1a')]['limit']||null:null,'include':_0x462659[_0x61b6('0x1a')]?_0x462659[_0x61b6('0x1a')][_0x61b6('0x1e')]?_[_0x61b6('0x1f')](_0x462659[_0x61b6('0x1a')][_0x61b6('0x1e')],function(_0x2052b2){return{'model':db[_0x2052b2[_0x61b6('0x20')]],'as':_0x2052b2['as'],'attributes':_0x2052b2[_0x61b6('0x1d')],'include':_0x2052b2[_0x61b6('0x1e')]?_[_0x61b6('0x1f')](_0x2052b2[_0x61b6('0x1e')],function(_0x50ec0f){return{'model':db[_0x50ec0f[_0x61b6('0x20')]],'as':_0x50ec0f['as'],'attributes':_0x50ec0f[_0x61b6('0x1d')],'include':_0x50ec0f[_0x61b6('0x1e')]?_['map'](_0x50ec0f[_0x61b6('0x1e')],function(_0x4e4d17){return{'model':db[_0x4e4d17[_0x61b6('0x20')]],'as':_0x4e4d17['as'],'attributes':_0x4e4d17[_0x61b6('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d39a5){logger['info'](_0x61b6('0x18'),_0x462659);logger['debug'](_0x61b6('0x18'),_0x462659,JSON[_0x61b6('0x10')](_0x5d39a5));_0x591995(_0x5d39a5);})[_0x61b6('0x17')](function(_0x283459){logger[_0x61b6('0x11')]('GetSugarcrmAccount',_0x283459[_0x61b6('0x14')],_0x462659);_0x5c1311(_0x498786[_0x61b6('0x11')](0x1f4,_0x283459[_0x61b6('0x14')]));});});};exports[_0x61b6('0x21')]=function(_0x27f9c0){var _0xdaafb6=this;return new Promise(function(_0x4d3fe1,_0x3bebdb){return db[_0x61b6('0x22')][_0x61b6('0x23')]({'raw':_0x27f9c0[_0x61b6('0x1a')]?_0x27f9c0[_0x61b6('0x1a')][_0x61b6('0x1b')]===undefined?!![]:![]:!![],'where':_0x27f9c0[_0x61b6('0x1a')]?_0x27f9c0['options'][_0x61b6('0x1c')]||null:null,'attributes':_0x27f9c0[_0x61b6('0x1a')]?_0x27f9c0['options']['attributes']||null:null,'include':_0x27f9c0[_0x61b6('0x1a')]?_0x27f9c0[_0x61b6('0x1a')]['include']?_[_0x61b6('0x1f')](_0x27f9c0[_0x61b6('0x1a')][_0x61b6('0x1e')],function(_0x26b0dc){return{'model':db[_0x26b0dc[_0x61b6('0x20')]],'as':_0x26b0dc['as'],'attributes':_0x26b0dc[_0x61b6('0x1d')],'include':_0x26b0dc['include']?_[_0x61b6('0x1f')](_0x26b0dc[_0x61b6('0x1e')],function(_0x33be54){return{'model':db[_0x33be54[_0x61b6('0x20')]],'as':_0x33be54['as'],'attributes':_0x33be54[_0x61b6('0x1d')],'include':_0x33be54[_0x61b6('0x1e')]?_[_0x61b6('0x1f')](_0x33be54[_0x61b6('0x1e')],function(_0x17eb4e){return{'model':db[_0x17eb4e['model']],'as':_0x17eb4e['as'],'attributes':_0x17eb4e[_0x61b6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x61b6('0xc')](function(_0x17d3c8){logger[_0x61b6('0x15')](_0x61b6('0x21'),_0x27f9c0);logger[_0x61b6('0xe')]('ShowSugarcrmAccount',_0x27f9c0,JSON[_0x61b6('0x10')](_0x17d3c8));_0x4d3fe1(_0x17d3c8);})[_0x61b6('0x17')](function(_0x49aac2){logger[_0x61b6('0x11')](_0x61b6('0x21'),_0x49aac2[_0x61b6('0x14')],_0x27f9c0);_0x3bebdb(_0xdaafb6[_0x61b6('0x11')](0x1f4,_0x49aac2[_0x61b6('0x14')]));});});};
\ No newline at end of file
index 58032ed..d02b67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe493=['/:id/descriptions','getDescriptions','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','getFields','/:id/subjects','getSubjects'];(function(_0x3946ef,_0x1f7345){var _0x148293=function(_0x410989){while(--_0x410989){_0x3946ef['push'](_0x3946ef['shift']());}};_0x148293(++_0x1f7345);}(_0xe493,0x157));var _0x3e49=function(_0x4f4319,_0x472bf7){_0x4f4319=_0x4f4319-0x0;var _0xacf3f6=_0xe493[_0x4f4319];return _0xacf3f6;};'use strict';var multer=require(_0x3e49('0x0'));var util=require('util');var path=require(_0x3e49('0x1'));var timeout=require(_0x3e49('0x2'));var express=require(_0x3e49('0x3'));var router=express[_0x3e49('0x4')]();var fs_extra=require(_0x3e49('0x5'));var auth=require(_0x3e49('0x6'));var interaction=require(_0x3e49('0x7'));var config=require(_0x3e49('0x8'));var controller=require(_0x3e49('0x9'));router[_0x3e49('0xa')]('/',auth[_0x3e49('0xb')](),controller['index']);router[_0x3e49('0xa')](_0x3e49('0xc'),auth[_0x3e49('0xb')](),controller[_0x3e49('0xd')]);router[_0x3e49('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x3e49('0xe')]);router[_0x3e49('0xa')](_0x3e49('0xf'),auth[_0x3e49('0xb')](),controller[_0x3e49('0x10')]);router['get'](_0x3e49('0x11'),auth[_0x3e49('0xb')](),controller[_0x3e49('0x12')]);router['post']('/',auth[_0x3e49('0xb')](),controller[_0x3e49('0x13')]);router[_0x3e49('0x14')](_0x3e49('0xc'),auth[_0x3e49('0xb')](),controller[_0x3e49('0x15')]);router[_0x3e49('0x16')](_0x3e49('0xc'),auth['isAuthenticated'](),controller[_0x3e49('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xe46d=['getSubjects','/:id/descriptions','post','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','index','/:id','show','isAuthenticated','getFields','/:id/subjects'];(function(_0x213265,_0x9363cb){var _0x42ce13=function(_0x1196c0){while(--_0x1196c0){_0x213265['push'](_0x213265['shift']());}};_0x42ce13(++_0x9363cb);}(_0xe46d,0x91));var _0xde46=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe46d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xde46('0x0'));var util=require(_0xde46('0x1'));var path=require(_0xde46('0x2'));var timeout=require(_0xde46('0x3'));var express=require('express');var router=express[_0xde46('0x4')]();var fs_extra=require(_0xde46('0x5'));var auth=require(_0xde46('0x6'));var interaction=require(_0xde46('0x7'));var config=require('../../config/environment');var controller=require(_0xde46('0x8'));router[_0xde46('0x9')]('/',auth['isAuthenticated'](),controller[_0xde46('0xa')]);router[_0xde46('0x9')](_0xde46('0xb'),auth['isAuthenticated'](),controller[_0xde46('0xc')]);router[_0xde46('0x9')]('/:id/fields',auth[_0xde46('0xd')](),controller[_0xde46('0xe')]);router[_0xde46('0x9')](_0xde46('0xf'),auth[_0xde46('0xd')](),controller[_0xde46('0x10')]);router[_0xde46('0x9')](_0xde46('0x11'),auth[_0xde46('0xd')](),controller['getDescriptions']);router[_0xde46('0x12')]('/',auth[_0xde46('0xd')](),controller['create']);router[_0xde46('0x13')]('/:id',auth[_0xde46('0xd')](),controller['update']);router[_0xde46('0x14')](_0xde46('0xb'),auth[_0xde46('0xd')](),controller[_0xde46('0x15')]);module[_0xde46('0x16')]=router;
\ No newline at end of file
index 8c9901a..acfdd5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ab2=['sequelize','exports','STRING'];(function(_0x5362e4,_0x5d2420){var _0x352752=function(_0x489127){while(--_0x489127){_0x5362e4['push'](_0x5362e4['shift']());}};_0x352752(++_0x5d2420);}(_0x1ab2,0xc0));var _0x21ab=function(_0x2e98a2,_0xcf8e7d){_0x2e98a2=_0x2e98a2-0x0;var _0x493ef2=_0x1ab2[_0x2e98a2];return _0x493ef2;};'use strict';var Sequelize=require(_0x21ab('0x0'));module[_0x21ab('0x1')]={'name':{'type':Sequelize[_0x21ab('0x2')]},'description':{'type':Sequelize[_0x21ab('0x2')]}};
\ No newline at end of file
+var _0xad70=['STRING','sequelize'];(function(_0x2e9bdd,_0x33103c){var _0xb5c546=function(_0xb5ec2a){while(--_0xb5ec2a){_0x2e9bdd['push'](_0x2e9bdd['shift']());}};_0xb5c546(++_0x33103c);}(_0xad70,0x8d));var _0x0ad7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad70[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0ad7('0x0'));module['exports']={'name':{'type':Sequelize[_0x0ad7('0x1')]},'description':{'type':Sequelize[_0x0ad7('0x1')]}};
\ No newline at end of file
index c551aac..86ef7ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4827=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','SugarcrmConfiguration','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','findAll','catch','params','includeAll','include','options','find','create','body','getFields','SugarcrmField','findOne','rawAttributes','getSubjects','order','getDescriptions','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x418117,_0x5de9f2){var _0x2c4e0b=function(_0x941e07){while(--_0x941e07){_0x418117['push'](_0x418117['shift']());}};_0x2c4e0b(++_0x5de9f2);}(_0x4827,0x91));var _0x7482=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4827[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7482('0x0'));var zipdir=require(_0x7482('0x1'));var jsonpatch=require(_0x7482('0x2'));var rp=require('request-promise');var moment=require(_0x7482('0x3'));var BPromise=require(_0x7482('0x4'));var Mustache=require(_0x7482('0x5'));var util=require(_0x7482('0x6'));var path=require(_0x7482('0x7'));var sox=require(_0x7482('0x8'));var csv=require(_0x7482('0x9'));var ejs=require(_0x7482('0xa'));var fs=require('fs');var fs_extra=require(_0x7482('0xb'));var _=require(_0x7482('0xc'));var squel=require(_0x7482('0xd'));var crypto=require(_0x7482('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7482('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7482('0x10'));var Papa=require('papaparse');var Redis=require(_0x7482('0x11'));var authService=require(_0x7482('0x12'));var qs=require(_0x7482('0x13'));var as=require(_0x7482('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7482('0x15'));var utils=require('../../config/utils');var config=require(_0x7482('0x16'));var licenseUtil=require(_0x7482('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e1142,_0x485f85){_0x485f85=_0x485f85||0xcc;return function(_0x4f1952){if(_0x4f1952){return _0x5e1142[_0x7482('0x18')](_0x485f85);}return _0x5e1142[_0x7482('0x19')](_0x485f85)[_0x7482('0x1a')]();};}function respondWithResult(_0x282434,_0x50ceac){_0x50ceac=_0x50ceac||0xc8;return function(_0x55b7ae){if(_0x55b7ae){return _0x282434[_0x7482('0x19')](_0x50ceac)[_0x7482('0x1b')](_0x55b7ae);}};}function respondWithFilteredResult(_0x1bebe8,_0x138895){return function(_0x292818){if(_0x292818){var _0x1eba33=typeof _0x138895[_0x7482('0x1c')]==='undefined'&&typeof _0x138895[_0x7482('0x1d')]===_0x7482('0x1e');var _0x1d3b4c=_0x292818['count'];var _0x4c675f=_0x1eba33?0x0:_0x138895['offset'];var _0x34e7f4=_0x1eba33?_0x292818[_0x7482('0x1f')]:_0x138895[_0x7482('0x1c')]+_0x138895['limit'];var _0x5293b7;if(_0x34e7f4>=_0x1d3b4c){_0x34e7f4=_0x1d3b4c;_0x5293b7=0xc8;}else{_0x5293b7=0xce;}_0x1bebe8[_0x7482('0x19')](_0x5293b7);return _0x1bebe8[_0x7482('0x20')](_0x7482('0x21'),_0x4c675f+'-'+_0x34e7f4+'/'+_0x1d3b4c)[_0x7482('0x1b')](_0x292818);}return null;};}function patchUpdates(_0x5149a4){return function(_0x5c5e52){try{jsonpatch[_0x7482('0x22')](_0x5c5e52,_0x5149a4,!![]);}catch(_0x488c1d){return BPromise[_0x7482('0x23')](_0x488c1d);}return _0x5c5e52['save']();};}function saveUpdates(_0x34601e,_0x247f74){return function(_0x275909){if(_0x275909){return _0x275909[_0x7482('0x24')](_0x34601e)[_0x7482('0x25')](function(_0x3a79f9){return _0x3a79f9;});}return null;};}function removeEntity(_0x41e376,_0x5bfb50){return function(_0x504fb5){if(_0x504fb5){return _0x504fb5[_0x7482('0x26')]()[_0x7482('0x25')](function(){_0x41e376[_0x7482('0x19')](0xcc)[_0x7482('0x1a')]();});}};}function handleEntityNotFound(_0x59cb26,_0x4527e3){return function(_0x2a827f){if(!_0x2a827f){_0x59cb26[_0x7482('0x18')](0x194);}return _0x2a827f;};}function handleError(_0x401763,_0x200414){_0x200414=_0x200414||0x1f4;return function(_0x96d85c){logger[_0x7482('0x27')](_0x96d85c[_0x7482('0x28')]);if(_0x96d85c[_0x7482('0x29')]){delete _0x96d85c['name'];}_0x401763[_0x7482('0x19')](_0x200414)['send'](_0x96d85c);};}exports[_0x7482('0x2a')]=function(_0x3a1a36,_0x349fda){var _0x5425da={},_0x191553={},_0x471151={'count':0x0,'rows':[]};var _0x2a79f3=_[_0x7482('0x2b')](db[_0x7482('0x2c')]['rawAttributes'],function(_0x833207){return{'name':_0x833207[_0x7482('0x2d')],'type':_0x833207['type'][_0x7482('0x2e')]};});_0x191553[_0x7482('0x2f')]=_[_0x7482('0x2b')](_0x2a79f3,_0x7482('0x29'));_0x191553[_0x7482('0x30')]=_[_0x7482('0x31')](_0x3a1a36[_0x7482('0x30')]);_0x191553[_0x7482('0x32')]=_[_0x7482('0x33')](_0x191553[_0x7482('0x2f')],_0x191553['query']);_0x5425da[_0x7482('0x34')]=_[_0x7482('0x33')](_0x191553['model'],qs[_0x7482('0x35')](_0x3a1a36['query'][_0x7482('0x35')]));_0x5425da[_0x7482('0x34')]=_0x5425da[_0x7482('0x34')][_0x7482('0x36')]?_0x5425da[_0x7482('0x34')]:_0x191553[_0x7482('0x2f')];if(!_0x3a1a36[_0x7482('0x30')][_0x7482('0x37')](_0x7482('0x38'))){_0x5425da[_0x7482('0x1d')]=qs['limit'](_0x3a1a36[_0x7482('0x30')]['limit']);_0x5425da['offset']=qs[_0x7482('0x1c')](_0x3a1a36[_0x7482('0x30')][_0x7482('0x1c')]);}_0x5425da['order']=qs[_0x7482('0x39')](_0x3a1a36[_0x7482('0x30')]['sort']);_0x5425da[_0x7482('0x3a')]=qs[_0x7482('0x32')](_[_0x7482('0x3b')](_0x3a1a36['query'],_0x191553[_0x7482('0x32')]),_0x2a79f3);if(_0x3a1a36['query'][_0x7482('0x3c')]){_0x5425da['where']=_[_0x7482('0x3d')](_0x5425da[_0x7482('0x3a')],{'$or':_[_0x7482('0x2b')](_0x2a79f3,function(_0x424411){if(_0x424411[_0x7482('0x3e')]!==_0x7482('0x3f')){var _0x340751={};_0x340751[_0x424411[_0x7482('0x29')]]={'$like':'%'+_0x3a1a36[_0x7482('0x30')][_0x7482('0x3c')]+'%'};return _0x340751;}})});}_0x5425da=_['merge']({},_0x5425da,_0x3a1a36['options']);var _0x2a4062={'where':_0x5425da[_0x7482('0x3a')]};return db['SugarcrmConfiguration']['count'](_0x2a4062)[_0x7482('0x25')](function(_0x28f4be){_0x471151[_0x7482('0x1f')]=_0x28f4be;if(_0x3a1a36[_0x7482('0x30')]['includeAll']){_0x5425da['include']=[{'all':!![]}];}return db[_0x7482('0x2c')][_0x7482('0x40')](_0x5425da);})[_0x7482('0x25')](function(_0x5b25d1){_0x471151['rows']=_0x5b25d1;return _0x471151;})[_0x7482('0x25')](respondWithFilteredResult(_0x349fda,_0x5425da))[_0x7482('0x41')](handleError(_0x349fda,null));};exports['show']=function(_0x57c7dc,_0x19963b){var _0x4aac79={'raw':![],'where':{'id':_0x57c7dc[_0x7482('0x42')]['id']}},_0x5cbd0b={};_0x5cbd0b['model']=_[_0x7482('0x31')](db[_0x7482('0x2c')]['rawAttributes']);_0x5cbd0b[_0x7482('0x30')]=_['keys'](_0x57c7dc[_0x7482('0x30')]);_0x5cbd0b[_0x7482('0x32')]=_['intersection'](_0x5cbd0b[_0x7482('0x2f')],_0x5cbd0b[_0x7482('0x30')]);_0x4aac79[_0x7482('0x34')]=_['intersection'](_0x5cbd0b[_0x7482('0x2f')],qs[_0x7482('0x35')](_0x57c7dc[_0x7482('0x30')][_0x7482('0x35')]));_0x4aac79['attributes']=_0x4aac79[_0x7482('0x34')][_0x7482('0x36')]?_0x4aac79['attributes']:_0x5cbd0b[_0x7482('0x2f')];if(_0x57c7dc[_0x7482('0x30')][_0x7482('0x43')]){_0x4aac79[_0x7482('0x44')]=[{'all':!![]}];}_0x4aac79=_[_0x7482('0x3d')]({},_0x4aac79,_0x57c7dc[_0x7482('0x45')]);return db[_0x7482('0x2c')][_0x7482('0x46')](_0x4aac79)['then'](handleEntityNotFound(_0x19963b,null))[_0x7482('0x25')](respondWithResult(_0x19963b,null))[_0x7482('0x41')](handleError(_0x19963b,null));};exports[_0x7482('0x47')]=function(_0x1bb27e,_0x190ee1){return db[_0x7482('0x2c')]['create'](_0x1bb27e[_0x7482('0x48')],{})[_0x7482('0x25')](respondWithResult(_0x190ee1,0xc9))[_0x7482('0x41')](handleError(_0x190ee1,null));};exports[_0x7482('0x24')]=function(_0x103d4e,_0xd5a9cb){if(_0x103d4e[_0x7482('0x48')]['id']){delete _0x103d4e[_0x7482('0x48')]['id'];}return db['SugarcrmConfiguration'][_0x7482('0x46')]({'where':{'id':_0x103d4e[_0x7482('0x42')]['id']}})[_0x7482('0x25')](handleEntityNotFound(_0xd5a9cb,null))[_0x7482('0x25')](saveUpdates(_0x103d4e[_0x7482('0x48')],null))['then'](respondWithResult(_0xd5a9cb,null))[_0x7482('0x41')](handleError(_0xd5a9cb,null));};exports['destroy']=function(_0x21385c,_0x4a6f9b){return db[_0x7482('0x2c')][_0x7482('0x46')]({'where':{'id':_0x21385c[_0x7482('0x42')]['id']}})[_0x7482('0x25')](handleEntityNotFound(_0x4a6f9b,null))[_0x7482('0x25')](removeEntity(_0x4a6f9b,null))[_0x7482('0x41')](handleError(_0x4a6f9b,null));};exports[_0x7482('0x49')]=function(_0x84028b,_0x31f57f,_0x17a47c){var _0x31c3b2={};var _0x47a739={};var _0x5aca6f;var _0x4830f0;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x84028b[_0x7482('0x42')]['id']}})['then'](handleEntityNotFound(_0x31f57f,null))[_0x7482('0x25')](function(_0x16219b){if(_0x16219b){_0x5aca6f=_0x16219b;_0x47a739[_0x7482('0x2f')]=_[_0x7482('0x31')](db[_0x7482('0x4a')]['rawAttributes']);_0x47a739[_0x7482('0x30')]=_['keys'](_0x84028b['query']);_0x47a739[_0x7482('0x32')]=_[_0x7482('0x33')](_0x47a739[_0x7482('0x2f')],_0x47a739[_0x7482('0x30')]);_0x31c3b2[_0x7482('0x34')]=_[_0x7482('0x33')](_0x47a739[_0x7482('0x2f')],qs[_0x7482('0x35')](_0x84028b[_0x7482('0x30')][_0x7482('0x35')]));_0x31c3b2[_0x7482('0x34')]=_0x31c3b2[_0x7482('0x34')]['length']?_0x31c3b2[_0x7482('0x34')]:_0x47a739[_0x7482('0x2f')];_0x31c3b2['order']=qs[_0x7482('0x39')](_0x84028b[_0x7482('0x30')][_0x7482('0x39')]);_0x31c3b2['where']=qs['filters'](_[_0x7482('0x3b')](_0x84028b['query'],_0x47a739['filters']));if(_0x84028b['query'][_0x7482('0x3c')]){_0x31c3b2['where']=_[_0x7482('0x3d')](_0x31c3b2[_0x7482('0x3a')],{'$or':_[_0x7482('0x2b')](_0x31c3b2[_0x7482('0x34')],function(_0x26fb6a){var _0x8b1fc6={};_0x8b1fc6[_0x26fb6a]={'$like':'%'+_0x84028b[_0x7482('0x30')][_0x7482('0x3c')]+'%'};return _0x8b1fc6;})});}_0x31c3b2=_[_0x7482('0x3d')]({},_0x31c3b2,_0x84028b[_0x7482('0x45')]);return _0x5aca6f['getFields'](_0x31c3b2);}})[_0x7482('0x25')](function(_0x8c9791){if(_0x8c9791){_0x4830f0=_0x8c9791['length'];if(!_0x84028b['query'][_0x7482('0x37')](_0x7482('0x38'))){_0x31c3b2['limit']=qs[_0x7482('0x1d')](_0x84028b['query']['limit']);_0x31c3b2['offset']=qs[_0x7482('0x1c')](_0x84028b[_0x7482('0x30')][_0x7482('0x1c')]);}return _0x5aca6f[_0x7482('0x49')](_0x31c3b2);}})['then'](function(_0x64398c){if(_0x64398c){return _0x64398c?{'count':_0x4830f0,'rows':_0x64398c}:null;}})['then'](respondWithResult(_0x31f57f,null))[_0x7482('0x41')](handleError(_0x31f57f,null));};exports['getSubjects']=function(_0x4f5ff9,_0x4a8e86,_0x414a2a){var _0x264b50={};var _0x41fb32={};var _0x25af05;var _0x3e8b11;return db[_0x7482('0x2c')][_0x7482('0x4b')]({'where':{'id':_0x4f5ff9[_0x7482('0x42')]['id']}})[_0x7482('0x25')](handleEntityNotFound(_0x4a8e86,null))[_0x7482('0x25')](function(_0x480010){if(_0x480010){_0x25af05=_0x480010;_0x41fb32[_0x7482('0x2f')]=_['keys'](db['SugarcrmField'][_0x7482('0x4c')]);_0x41fb32['query']=_[_0x7482('0x31')](_0x4f5ff9[_0x7482('0x30')]);_0x41fb32['filters']=_[_0x7482('0x33')](_0x41fb32[_0x7482('0x2f')],_0x41fb32[_0x7482('0x30')]);_0x264b50[_0x7482('0x34')]=_['intersection'](_0x41fb32[_0x7482('0x2f')],qs[_0x7482('0x35')](_0x4f5ff9[_0x7482('0x30')][_0x7482('0x35')]));_0x264b50[_0x7482('0x34')]=_0x264b50['attributes'][_0x7482('0x36')]?_0x264b50['attributes']:_0x41fb32[_0x7482('0x2f')];_0x264b50['order']=qs[_0x7482('0x39')](_0x4f5ff9[_0x7482('0x30')]['sort']);_0x264b50[_0x7482('0x3a')]=qs[_0x7482('0x32')](_[_0x7482('0x3b')](_0x4f5ff9['query'],_0x41fb32[_0x7482('0x32')]));if(_0x4f5ff9[_0x7482('0x30')]['filter']){_0x264b50[_0x7482('0x3a')]=_['merge'](_0x264b50[_0x7482('0x3a')],{'$or':_['map'](_0x264b50[_0x7482('0x34')],function(_0x2e43cf){var _0x505180={};_0x505180[_0x2e43cf]={'$like':'%'+_0x4f5ff9[_0x7482('0x30')][_0x7482('0x3c')]+'%'};return _0x505180;})});}_0x264b50=_[_0x7482('0x3d')]({},_0x264b50,_0x4f5ff9[_0x7482('0x45')]);return _0x25af05['getSubjects'](_0x264b50);}})[_0x7482('0x25')](function(_0x3b4fd2){if(_0x3b4fd2){_0x3e8b11=_0x3b4fd2[_0x7482('0x36')];if(!_0x4f5ff9[_0x7482('0x30')][_0x7482('0x37')]('nolimit')){_0x264b50[_0x7482('0x1d')]=qs[_0x7482('0x1d')](_0x4f5ff9['query'][_0x7482('0x1d')]);_0x264b50[_0x7482('0x1c')]=qs[_0x7482('0x1c')](_0x4f5ff9['query'][_0x7482('0x1c')]);}return _0x25af05[_0x7482('0x4d')](_0x264b50);}})[_0x7482('0x25')](function(_0x108dad){if(_0x108dad){return _0x108dad?{'count':_0x3e8b11,'rows':_0x108dad}:null;}})[_0x7482('0x25')](respondWithResult(_0x4a8e86,null))[_0x7482('0x41')](handleError(_0x4a8e86,null));};exports['getDescriptions']=function(_0xdb1c2b,_0x3382fa,_0x2bfa0b){var _0x17ea69={};var _0x19c559={};var _0x24488a;var _0x6a371a;return db[_0x7482('0x2c')]['findOne']({'where':{'id':_0xdb1c2b[_0x7482('0x42')]['id']}})['then'](handleEntityNotFound(_0x3382fa,null))[_0x7482('0x25')](function(_0x502af3){if(_0x502af3){_0x24488a=_0x502af3;_0x19c559[_0x7482('0x2f')]=_[_0x7482('0x31')](db[_0x7482('0x4a')][_0x7482('0x4c')]);_0x19c559[_0x7482('0x30')]=_[_0x7482('0x31')](_0xdb1c2b[_0x7482('0x30')]);_0x19c559[_0x7482('0x32')]=_[_0x7482('0x33')](_0x19c559[_0x7482('0x2f')],_0x19c559['query']);_0x17ea69[_0x7482('0x34')]=_['intersection'](_0x19c559[_0x7482('0x2f')],qs[_0x7482('0x35')](_0xdb1c2b[_0x7482('0x30')][_0x7482('0x35')]));_0x17ea69[_0x7482('0x34')]=_0x17ea69['attributes'][_0x7482('0x36')]?_0x17ea69['attributes']:_0x19c559[_0x7482('0x2f')];_0x17ea69[_0x7482('0x4e')]=qs[_0x7482('0x39')](_0xdb1c2b[_0x7482('0x30')][_0x7482('0x39')]);_0x17ea69[_0x7482('0x3a')]=qs['filters'](_[_0x7482('0x3b')](_0xdb1c2b[_0x7482('0x30')],_0x19c559[_0x7482('0x32')]));if(_0xdb1c2b[_0x7482('0x30')][_0x7482('0x3c')]){_0x17ea69['where']=_['merge'](_0x17ea69[_0x7482('0x3a')],{'$or':_['map'](_0x17ea69[_0x7482('0x34')],function(_0x12b687){var _0x380ca9={};_0x380ca9[_0x12b687]={'$like':'%'+_0xdb1c2b[_0x7482('0x30')]['filter']+'%'};return _0x380ca9;})});}_0x17ea69=_['merge']({},_0x17ea69,_0xdb1c2b[_0x7482('0x45')]);return _0x24488a[_0x7482('0x4f')](_0x17ea69);}})[_0x7482('0x25')](function(_0x3dce5f){if(_0x3dce5f){_0x6a371a=_0x3dce5f['length'];if(!_0xdb1c2b[_0x7482('0x30')][_0x7482('0x37')](_0x7482('0x38'))){_0x17ea69['limit']=qs[_0x7482('0x1d')](_0xdb1c2b['query']['limit']);_0x17ea69[_0x7482('0x1c')]=qs[_0x7482('0x1c')](_0xdb1c2b['query'][_0x7482('0x1c')]);}return _0x24488a[_0x7482('0x4f')](_0x17ea69);}})[_0x7482('0x25')](function(_0x19198a){if(_0x19198a){return _0x19198a?{'count':_0x6a371a,'rows':_0x19198a}:null;}})[_0x7482('0x25')](respondWithResult(_0x3382fa,null))[_0x7482('0x41')](handleError(_0x3382fa,null));};
\ No newline at end of file
+var _0x3d0f=['index','SugarcrmConfiguration','rawAttributes','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','includeAll','include','rows','catch','show','params','length','options','create','body','find','destroy','getFields','order','nolimit','getSubjects','findOne','SugarcrmField','pick','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','error','name','send'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3d0f,0x78));var _0xf3d0=function(_0x214d54,_0x133c72){_0x214d54=_0x214d54-0x0;var _0x44ca46=_0x3d0f[_0x214d54];return _0x44ca46;};'use strict';var emlformat=require(_0xf3d0('0x0'));var rimraf=require(_0xf3d0('0x1'));var zipdir=require(_0xf3d0('0x2'));var jsonpatch=require(_0xf3d0('0x3'));var rp=require(_0xf3d0('0x4'));var moment=require(_0xf3d0('0x5'));var BPromise=require(_0xf3d0('0x6'));var Mustache=require('mustache');var util=require(_0xf3d0('0x7'));var path=require(_0xf3d0('0x8'));var sox=require(_0xf3d0('0x9'));var csv=require('to-csv');var ejs=require(_0xf3d0('0xa'));var fs=require('fs');var fs_extra=require(_0xf3d0('0xb'));var _=require(_0xf3d0('0xc'));var squel=require('squel');var crypto=require(_0xf3d0('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf3d0('0xe'));var toCsv=require(_0xf3d0('0xf'));var querystring=require(_0xf3d0('0x10'));var Papa=require(_0xf3d0('0x11'));var Redis=require(_0xf3d0('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf3d0('0x13'));var hardwareService=require(_0xf3d0('0x14'));var logger=require(_0xf3d0('0x15'))('api');var utils=require(_0xf3d0('0x16'));var config=require(_0xf3d0('0x17'));var licenseUtil=require(_0xf3d0('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f8327,_0x2914e6){_0x2914e6=_0x2914e6||0xcc;return function(_0xf85dfd){if(_0xf85dfd){return _0x2f8327[_0xf3d0('0x19')](_0x2914e6);}return _0x2f8327[_0xf3d0('0x1a')](_0x2914e6)[_0xf3d0('0x1b')]();};}function respondWithResult(_0x4d5e02,_0x43b2bd){_0x43b2bd=_0x43b2bd||0xc8;return function(_0x5274c8){if(_0x5274c8){return _0x4d5e02[_0xf3d0('0x1a')](_0x43b2bd)[_0xf3d0('0x1c')](_0x5274c8);}};}function respondWithFilteredResult(_0x950454,_0x56a938){return function(_0x41dff2){if(_0x41dff2){var _0x2ff1b9=typeof _0x56a938['offset']===_0xf3d0('0x1d')&&typeof _0x56a938[_0xf3d0('0x1e')]==='undefined';var _0x5a5a97=_0x41dff2[_0xf3d0('0x1f')];var _0x34efde=_0x2ff1b9?0x0:_0x56a938['offset'];var _0x2b6e3a=_0x2ff1b9?_0x41dff2['count']:_0x56a938[_0xf3d0('0x20')]+_0x56a938[_0xf3d0('0x1e')];var _0x4cf5a6;if(_0x2b6e3a>=_0x5a5a97){_0x2b6e3a=_0x5a5a97;_0x4cf5a6=0xc8;}else{_0x4cf5a6=0xce;}_0x950454[_0xf3d0('0x1a')](_0x4cf5a6);return _0x950454[_0xf3d0('0x21')](_0xf3d0('0x22'),_0x34efde+'-'+_0x2b6e3a+'/'+_0x5a5a97)[_0xf3d0('0x1c')](_0x41dff2);}return null;};}function patchUpdates(_0x89670b){return function(_0x3c7b0d){try{jsonpatch[_0xf3d0('0x23')](_0x3c7b0d,_0x89670b,!![]);}catch(_0x4a3c18){return BPromise[_0xf3d0('0x24')](_0x4a3c18);}return _0x3c7b0d['save']();};}function saveUpdates(_0x3171ed,_0x2f9857){return function(_0x40ff41){if(_0x40ff41){return _0x40ff41[_0xf3d0('0x25')](_0x3171ed)[_0xf3d0('0x26')](function(_0x18f377){return _0x18f377;});}return null;};}function removeEntity(_0x5a664d,_0x3f612a){return function(_0x17bc3b){if(_0x17bc3b){return _0x17bc3b['destroy']()[_0xf3d0('0x26')](function(){_0x5a664d[_0xf3d0('0x1a')](0xcc)[_0xf3d0('0x1b')]();});}};}function handleEntityNotFound(_0x28585d,_0x21cf30){return function(_0x398b38){if(!_0x398b38){_0x28585d[_0xf3d0('0x19')](0x194);}return _0x398b38;};}function handleError(_0x28705a,_0x5bf905){_0x5bf905=_0x5bf905||0x1f4;return function(_0x43fc15){logger[_0xf3d0('0x27')](_0x43fc15['stack']);if(_0x43fc15[_0xf3d0('0x28')]){delete _0x43fc15[_0xf3d0('0x28')];}_0x28705a[_0xf3d0('0x1a')](_0x5bf905)[_0xf3d0('0x29')](_0x43fc15);};}exports[_0xf3d0('0x2a')]=function(_0x44bf05,_0x305649){var _0x4d1934={},_0xcd58cf={},_0x577ac3={'count':0x0,'rows':[]};var _0x144ea4=_['map'](db[_0xf3d0('0x2b')][_0xf3d0('0x2c')],function(_0x3aee23){return{'name':_0x3aee23['fieldName'],'type':_0x3aee23['type'][_0xf3d0('0x2d')]};});_0xcd58cf[_0xf3d0('0x2e')]=_[_0xf3d0('0x2f')](_0x144ea4,_0xf3d0('0x28'));_0xcd58cf['query']=_[_0xf3d0('0x30')](_0x44bf05[_0xf3d0('0x31')]);_0xcd58cf[_0xf3d0('0x32')]=_[_0xf3d0('0x33')](_0xcd58cf[_0xf3d0('0x2e')],_0xcd58cf[_0xf3d0('0x31')]);_0x4d1934[_0xf3d0('0x34')]=_[_0xf3d0('0x33')](_0xcd58cf[_0xf3d0('0x2e')],qs[_0xf3d0('0x35')](_0x44bf05['query']['fields']));_0x4d1934['attributes']=_0x4d1934[_0xf3d0('0x34')]['length']?_0x4d1934[_0xf3d0('0x34')]:_0xcd58cf[_0xf3d0('0x2e')];if(!_0x44bf05['query'][_0xf3d0('0x36')]('nolimit')){_0x4d1934[_0xf3d0('0x1e')]=qs[_0xf3d0('0x1e')](_0x44bf05[_0xf3d0('0x31')][_0xf3d0('0x1e')]);_0x4d1934[_0xf3d0('0x20')]=qs[_0xf3d0('0x20')](_0x44bf05['query'][_0xf3d0('0x20')]);}_0x4d1934['order']=qs['sort'](_0x44bf05[_0xf3d0('0x31')][_0xf3d0('0x37')]);_0x4d1934[_0xf3d0('0x38')]=qs[_0xf3d0('0x32')](_['pick'](_0x44bf05[_0xf3d0('0x31')],_0xcd58cf[_0xf3d0('0x32')]),_0x144ea4);if(_0x44bf05[_0xf3d0('0x31')][_0xf3d0('0x39')]){_0x4d1934[_0xf3d0('0x38')]=_[_0xf3d0('0x3a')](_0x4d1934[_0xf3d0('0x38')],{'$or':_[_0xf3d0('0x2f')](_0x144ea4,function(_0x1ae905){if(_0x1ae905[_0xf3d0('0x3b')]!==_0xf3d0('0x3c')){var _0x4eb26a={};_0x4eb26a[_0x1ae905[_0xf3d0('0x28')]]={'$like':'%'+_0x44bf05['query']['filter']+'%'};return _0x4eb26a;}})});}_0x4d1934=_['merge']({},_0x4d1934,_0x44bf05['options']);var _0x3f7939={'where':_0x4d1934[_0xf3d0('0x38')]};return db[_0xf3d0('0x2b')][_0xf3d0('0x1f')](_0x3f7939)[_0xf3d0('0x26')](function(_0x2d5ac4){_0x577ac3[_0xf3d0('0x1f')]=_0x2d5ac4;if(_0x44bf05[_0xf3d0('0x31')][_0xf3d0('0x3d')]){_0x4d1934[_0xf3d0('0x3e')]=[{'all':!![]}];}return db[_0xf3d0('0x2b')]['findAll'](_0x4d1934);})[_0xf3d0('0x26')](function(_0x2e7810){_0x577ac3[_0xf3d0('0x3f')]=_0x2e7810;return _0x577ac3;})['then'](respondWithFilteredResult(_0x305649,_0x4d1934))[_0xf3d0('0x40')](handleError(_0x305649,null));};exports[_0xf3d0('0x41')]=function(_0x30fa5b,_0x46be97){var _0x4a8b54={'raw':![],'where':{'id':_0x30fa5b[_0xf3d0('0x42')]['id']}},_0x188814={};_0x188814['model']=_[_0xf3d0('0x30')](db[_0xf3d0('0x2b')][_0xf3d0('0x2c')]);_0x188814[_0xf3d0('0x31')]=_[_0xf3d0('0x30')](_0x30fa5b[_0xf3d0('0x31')]);_0x188814[_0xf3d0('0x32')]=_[_0xf3d0('0x33')](_0x188814[_0xf3d0('0x2e')],_0x188814['query']);_0x4a8b54[_0xf3d0('0x34')]=_[_0xf3d0('0x33')](_0x188814[_0xf3d0('0x2e')],qs[_0xf3d0('0x35')](_0x30fa5b['query'][_0xf3d0('0x35')]));_0x4a8b54['attributes']=_0x4a8b54[_0xf3d0('0x34')][_0xf3d0('0x43')]?_0x4a8b54[_0xf3d0('0x34')]:_0x188814['model'];if(_0x30fa5b[_0xf3d0('0x31')][_0xf3d0('0x3d')]){_0x4a8b54[_0xf3d0('0x3e')]=[{'all':!![]}];}_0x4a8b54=_[_0xf3d0('0x3a')]({},_0x4a8b54,_0x30fa5b[_0xf3d0('0x44')]);return db[_0xf3d0('0x2b')]['find'](_0x4a8b54)[_0xf3d0('0x26')](handleEntityNotFound(_0x46be97,null))[_0xf3d0('0x26')](respondWithResult(_0x46be97,null))['catch'](handleError(_0x46be97,null));};exports['create']=function(_0x31d098,_0x2cecff){return db[_0xf3d0('0x2b')][_0xf3d0('0x45')](_0x31d098[_0xf3d0('0x46')],{})['then'](respondWithResult(_0x2cecff,0xc9))[_0xf3d0('0x40')](handleError(_0x2cecff,null));};exports[_0xf3d0('0x25')]=function(_0xc9e029,_0x6ff4ee){if(_0xc9e029[_0xf3d0('0x46')]['id']){delete _0xc9e029[_0xf3d0('0x46')]['id'];}return db[_0xf3d0('0x2b')][_0xf3d0('0x47')]({'where':{'id':_0xc9e029[_0xf3d0('0x42')]['id']}})['then'](handleEntityNotFound(_0x6ff4ee,null))['then'](saveUpdates(_0xc9e029[_0xf3d0('0x46')],null))[_0xf3d0('0x26')](respondWithResult(_0x6ff4ee,null))['catch'](handleError(_0x6ff4ee,null));};exports[_0xf3d0('0x48')]=function(_0x2a1160,_0x176026){return db['SugarcrmConfiguration']['find']({'where':{'id':_0x2a1160[_0xf3d0('0x42')]['id']}})[_0xf3d0('0x26')](handleEntityNotFound(_0x176026,null))[_0xf3d0('0x26')](removeEntity(_0x176026,null))[_0xf3d0('0x40')](handleError(_0x176026,null));};exports[_0xf3d0('0x49')]=function(_0x19c5b7,_0x2469ac,_0x55d77c){var _0x2868d5={};var _0x15f001={};var _0x3ca0c9;var _0x4a52c1;return db[_0xf3d0('0x2b')]['findOne']({'where':{'id':_0x19c5b7[_0xf3d0('0x42')]['id']}})[_0xf3d0('0x26')](handleEntityNotFound(_0x2469ac,null))[_0xf3d0('0x26')](function(_0x4a60ab){if(_0x4a60ab){_0x3ca0c9=_0x4a60ab;_0x15f001['model']=_[_0xf3d0('0x30')](db['SugarcrmField'][_0xf3d0('0x2c')]);_0x15f001[_0xf3d0('0x31')]=_['keys'](_0x19c5b7['query']);_0x15f001[_0xf3d0('0x32')]=_[_0xf3d0('0x33')](_0x15f001[_0xf3d0('0x2e')],_0x15f001['query']);_0x2868d5['attributes']=_[_0xf3d0('0x33')](_0x15f001[_0xf3d0('0x2e')],qs['fields'](_0x19c5b7[_0xf3d0('0x31')][_0xf3d0('0x35')]));_0x2868d5[_0xf3d0('0x34')]=_0x2868d5[_0xf3d0('0x34')][_0xf3d0('0x43')]?_0x2868d5['attributes']:_0x15f001[_0xf3d0('0x2e')];_0x2868d5[_0xf3d0('0x4a')]=qs['sort'](_0x19c5b7[_0xf3d0('0x31')][_0xf3d0('0x37')]);_0x2868d5['where']=qs[_0xf3d0('0x32')](_['pick'](_0x19c5b7['query'],_0x15f001[_0xf3d0('0x32')]));if(_0x19c5b7['query'][_0xf3d0('0x39')]){_0x2868d5[_0xf3d0('0x38')]=_['merge'](_0x2868d5[_0xf3d0('0x38')],{'$or':_[_0xf3d0('0x2f')](_0x2868d5[_0xf3d0('0x34')],function(_0x5d1774){var _0x51100d={};_0x51100d[_0x5d1774]={'$like':'%'+_0x19c5b7['query'][_0xf3d0('0x39')]+'%'};return _0x51100d;})});}_0x2868d5=_[_0xf3d0('0x3a')]({},_0x2868d5,_0x19c5b7[_0xf3d0('0x44')]);return _0x3ca0c9[_0xf3d0('0x49')](_0x2868d5);}})[_0xf3d0('0x26')](function(_0x3be457){if(_0x3be457){_0x4a52c1=_0x3be457[_0xf3d0('0x43')];if(!_0x19c5b7[_0xf3d0('0x31')][_0xf3d0('0x36')](_0xf3d0('0x4b'))){_0x2868d5[_0xf3d0('0x1e')]=qs['limit'](_0x19c5b7[_0xf3d0('0x31')]['limit']);_0x2868d5[_0xf3d0('0x20')]=qs[_0xf3d0('0x20')](_0x19c5b7[_0xf3d0('0x31')][_0xf3d0('0x20')]);}return _0x3ca0c9[_0xf3d0('0x49')](_0x2868d5);}})[_0xf3d0('0x26')](function(_0x2cf360){if(_0x2cf360){return _0x2cf360?{'count':_0x4a52c1,'rows':_0x2cf360}:null;}})['then'](respondWithResult(_0x2469ac,null))['catch'](handleError(_0x2469ac,null));};exports[_0xf3d0('0x4c')]=function(_0xe87330,_0x50f02d,_0x284ae7){var _0x42e45b={};var _0x1ef5d5={};var _0x1bef5b;var _0x5e7644;return db[_0xf3d0('0x2b')][_0xf3d0('0x4d')]({'where':{'id':_0xe87330[_0xf3d0('0x42')]['id']}})[_0xf3d0('0x26')](handleEntityNotFound(_0x50f02d,null))['then'](function(_0x421123){if(_0x421123){_0x1bef5b=_0x421123;_0x1ef5d5[_0xf3d0('0x2e')]=_[_0xf3d0('0x30')](db[_0xf3d0('0x4e')][_0xf3d0('0x2c')]);_0x1ef5d5[_0xf3d0('0x31')]=_[_0xf3d0('0x30')](_0xe87330[_0xf3d0('0x31')]);_0x1ef5d5[_0xf3d0('0x32')]=_['intersection'](_0x1ef5d5[_0xf3d0('0x2e')],_0x1ef5d5[_0xf3d0('0x31')]);_0x42e45b[_0xf3d0('0x34')]=_[_0xf3d0('0x33')](_0x1ef5d5[_0xf3d0('0x2e')],qs[_0xf3d0('0x35')](_0xe87330[_0xf3d0('0x31')][_0xf3d0('0x35')]));_0x42e45b[_0xf3d0('0x34')]=_0x42e45b[_0xf3d0('0x34')][_0xf3d0('0x43')]?_0x42e45b[_0xf3d0('0x34')]:_0x1ef5d5[_0xf3d0('0x2e')];_0x42e45b[_0xf3d0('0x4a')]=qs[_0xf3d0('0x37')](_0xe87330[_0xf3d0('0x31')][_0xf3d0('0x37')]);_0x42e45b[_0xf3d0('0x38')]=qs[_0xf3d0('0x32')](_[_0xf3d0('0x4f')](_0xe87330[_0xf3d0('0x31')],_0x1ef5d5[_0xf3d0('0x32')]));if(_0xe87330[_0xf3d0('0x31')]['filter']){_0x42e45b[_0xf3d0('0x38')]=_[_0xf3d0('0x3a')](_0x42e45b[_0xf3d0('0x38')],{'$or':_[_0xf3d0('0x2f')](_0x42e45b[_0xf3d0('0x34')],function(_0x4fea3d){var _0x17b6ec={};_0x17b6ec[_0x4fea3d]={'$like':'%'+_0xe87330['query'][_0xf3d0('0x39')]+'%'};return _0x17b6ec;})});}_0x42e45b=_[_0xf3d0('0x3a')]({},_0x42e45b,_0xe87330['options']);return _0x1bef5b['getSubjects'](_0x42e45b);}})[_0xf3d0('0x26')](function(_0x17ac37){if(_0x17ac37){_0x5e7644=_0x17ac37['length'];if(!_0xe87330[_0xf3d0('0x31')][_0xf3d0('0x36')]('nolimit')){_0x42e45b[_0xf3d0('0x1e')]=qs[_0xf3d0('0x1e')](_0xe87330[_0xf3d0('0x31')][_0xf3d0('0x1e')]);_0x42e45b[_0xf3d0('0x20')]=qs[_0xf3d0('0x20')](_0xe87330[_0xf3d0('0x31')][_0xf3d0('0x20')]);}return _0x1bef5b[_0xf3d0('0x4c')](_0x42e45b);}})[_0xf3d0('0x26')](function(_0x57991f){if(_0x57991f){return _0x57991f?{'count':_0x5e7644,'rows':_0x57991f}:null;}})['then'](respondWithResult(_0x50f02d,null))[_0xf3d0('0x40')](handleError(_0x50f02d,null));};exports[_0xf3d0('0x50')]=function(_0x26562e,_0x3a5186,_0x22af11){var _0x242846={};var _0xd16c85={};var _0x52ab31;var _0x39b0aa;return db[_0xf3d0('0x2b')][_0xf3d0('0x4d')]({'where':{'id':_0x26562e['params']['id']}})[_0xf3d0('0x26')](handleEntityNotFound(_0x3a5186,null))[_0xf3d0('0x26')](function(_0x59a9a4){if(_0x59a9a4){_0x52ab31=_0x59a9a4;_0xd16c85['model']=_[_0xf3d0('0x30')](db['SugarcrmField'][_0xf3d0('0x2c')]);_0xd16c85[_0xf3d0('0x31')]=_['keys'](_0x26562e[_0xf3d0('0x31')]);_0xd16c85[_0xf3d0('0x32')]=_[_0xf3d0('0x33')](_0xd16c85['model'],_0xd16c85[_0xf3d0('0x31')]);_0x242846[_0xf3d0('0x34')]=_[_0xf3d0('0x33')](_0xd16c85['model'],qs['fields'](_0x26562e[_0xf3d0('0x31')][_0xf3d0('0x35')]));_0x242846[_0xf3d0('0x34')]=_0x242846[_0xf3d0('0x34')][_0xf3d0('0x43')]?_0x242846[_0xf3d0('0x34')]:_0xd16c85[_0xf3d0('0x2e')];_0x242846[_0xf3d0('0x4a')]=qs[_0xf3d0('0x37')](_0x26562e[_0xf3d0('0x31')][_0xf3d0('0x37')]);_0x242846[_0xf3d0('0x38')]=qs['filters'](_[_0xf3d0('0x4f')](_0x26562e[_0xf3d0('0x31')],_0xd16c85[_0xf3d0('0x32')]));if(_0x26562e[_0xf3d0('0x31')]['filter']){_0x242846[_0xf3d0('0x38')]=_[_0xf3d0('0x3a')](_0x242846[_0xf3d0('0x38')],{'$or':_[_0xf3d0('0x2f')](_0x242846[_0xf3d0('0x34')],function(_0x144521){var _0x185785={};_0x185785[_0x144521]={'$like':'%'+_0x26562e[_0xf3d0('0x31')]['filter']+'%'};return _0x185785;})});}_0x242846=_[_0xf3d0('0x3a')]({},_0x242846,_0x26562e[_0xf3d0('0x44')]);return _0x52ab31[_0xf3d0('0x50')](_0x242846);}})['then'](function(_0x2190f6){if(_0x2190f6){_0x39b0aa=_0x2190f6['length'];if(!_0x26562e[_0xf3d0('0x31')][_0xf3d0('0x36')]('nolimit')){_0x242846['limit']=qs['limit'](_0x26562e['query']['limit']);_0x242846['offset']=qs['offset'](_0x26562e[_0xf3d0('0x31')][_0xf3d0('0x20')]);}return _0x52ab31['getDescriptions'](_0x242846);}})[_0xf3d0('0x26')](function(_0x3565ef){if(_0x3565ef){return _0x3565ef?{'count':_0x39b0aa,'rows':_0x3565ef}:null;}})[_0xf3d0('0x26')](respondWithResult(_0x3a5186,null))['catch'](handleError(_0x3a5186,null));};
\ No newline at end of file
index b82c51a..bd0e585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b8e=['exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7b8e,0x6c));var _0xe7b8=function(_0x1047fb,_0x3a559d){_0x1047fb=_0x1047fb-0x0;var _0x445fec=_0x7b8e[_0x1047fb];return _0x445fec;};'use strict';var _=require(_0xe7b8('0x0'));var util=require(_0xe7b8('0x1'));var logger=require(_0xe7b8('0x2'))(_0xe7b8('0x3'));var moment=require('moment');var BPromise=require(_0xe7b8('0x4'));var rp=require(_0xe7b8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe7b8('0x6'));var config=require(_0xe7b8('0x7'));var attributes=require(_0xe7b8('0x8'));module[_0xe7b8('0x9')]=function(_0x2c4ceb,_0x53c1b2){return _0x2c4ceb[_0xe7b8('0xa')](_0xe7b8('0xb'),attributes,{'tableName':_0xe7b8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9eba=['SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','exports','define'];(function(_0xb0bd5d,_0x156b62){var _0x417125=function(_0x24a37f){while(--_0x24a37f){_0xb0bd5d['push'](_0xb0bd5d['shift']());}};_0x417125(++_0x156b62);}(_0x9eba,0x9e));var _0xa9eb=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9eba[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xa9eb('0x0'));var util=require(_0xa9eb('0x1'));var logger=require(_0xa9eb('0x2'))(_0xa9eb('0x3'));var moment=require(_0xa9eb('0x4'));var BPromise=require('bluebird');var rp=require(_0xa9eb('0x5'));var fs=require('fs');var path=require(_0xa9eb('0x6'));var rimraf=require(_0xa9eb('0x7'));var config=require('../../config/environment');var attributes=require(_0xa9eb('0x8'));module[_0xa9eb('0x9')]=function(_0x14e3d8,_0x134f32){return _0x14e3d8[_0xa9eb('0xa')](_0xa9eb('0xb'),attributes,{'tableName':_0xa9eb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f00e6d..ba9f639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc797=['debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x1d4dfc,_0x4a97f0){var _0x1d64ca=function(_0x5c371d){while(--_0x5c371d){_0x1d4dfc['push'](_0x1d4dfc['shift']());}};_0x1d64ca(++_0x4a97f0);}(_0xc797,0x11c));var _0x7c79=function(_0x444b9e,_0xaf9bd2){_0x444b9e=_0x444b9e-0x0;var _0x1b3907=_0xc797[_0x444b9e];return _0x1b3907;};'use strict';var _=require(_0x7c79('0x0'));var util=require(_0x7c79('0x1'));var moment=require('moment');var BPromise=require(_0x7c79('0x2'));var rs=require(_0x7c79('0x3'));var fs=require('fs');var Redis=require(_0x7c79('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c79('0x5'));var logger=require(_0x7c79('0x6'))(_0x7c79('0x7'));var config=require(_0x7c79('0x8'));var jayson=require(_0x7c79('0x9'));var client=jayson[_0x7c79('0xa')][_0x7c79('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x173bf4,_0x2e0b4a,_0x1e35a3){return new BPromise(function(_0x4d91a3,_0x12efad){return client[_0x7c79('0xc')](_0x173bf4,_0x1e35a3)[_0x7c79('0xd')](function(_0x5ba364){logger['info'](_0x7c79('0xe'),_0x2e0b4a,_0x7c79('0xf'));logger[_0x7c79('0x10')](_0x7c79('0x11'),_0x2e0b4a,_0x7c79('0xf'),JSON[_0x7c79('0x12')](_0x5ba364));if(_0x5ba364[_0x7c79('0x13')]){if(_0x5ba364[_0x7c79('0x13')][_0x7c79('0x14')]===0x1f4){logger[_0x7c79('0x13')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x2e0b4a,_0x5ba364['error'][_0x7c79('0x15')]);return _0x12efad(_0x5ba364['error'][_0x7c79('0x15')]);}logger[_0x7c79('0x13')](_0x7c79('0xe'),_0x2e0b4a,_0x5ba364[_0x7c79('0x13')][_0x7c79('0x15')]);return _0x4d91a3(_0x5ba364[_0x7c79('0x13')][_0x7c79('0x15')]);}else{logger[_0x7c79('0x16')](_0x7c79('0xe'),_0x2e0b4a,_0x7c79('0xf'));_0x4d91a3(_0x5ba364[_0x7c79('0x17')][_0x7c79('0x15')]);}})[_0x7c79('0x18')](function(_0x5bc23f){logger[_0x7c79('0x13')](_0x7c79('0xe'),_0x2e0b4a,_0x5bc23f);_0x12efad(_0x5bc23f);});});}
\ No newline at end of file
+var _0xd002=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x589b37,_0x5a7483){var _0x5f2c82=function(_0x1c0f7d){while(--_0x1c0f7d){_0x589b37['push'](_0x589b37['shift']());}};_0x5f2c82(++_0x5a7483);}(_0xd002,0xde));var _0x2d00=function(_0x327819,_0x46119f){_0x327819=_0x327819-0x0;var _0x4ccc84=_0xd002[_0x327819];return _0x4ccc84;};'use strict';var _=require('lodash');var util=require(_0x2d00('0x0'));var moment=require(_0x2d00('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d00('0x2'));var fs=require('fs');var Redis=require(_0x2d00('0x3'));var db=require(_0x2d00('0x4'))['db'];var utils=require(_0x2d00('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2d00('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2d00('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1b4e13,_0x1f4632,_0x3485f2){return new BPromise(function(_0x4dd8bc,_0x4e0834){return client[_0x2d00('0x8')](_0x1b4e13,_0x3485f2)['then'](function(_0x143a0d){logger[_0x2d00('0x9')](_0x2d00('0xa'),_0x1f4632,_0x2d00('0xb'));logger['debug'](_0x2d00('0xc'),_0x1f4632,_0x2d00('0xb'),JSON[_0x2d00('0xd')](_0x143a0d));if(_0x143a0d[_0x2d00('0xe')]){if(_0x143a0d[_0x2d00('0xe')]['code']===0x1f4){logger[_0x2d00('0xe')](_0x2d00('0xa'),_0x1f4632,_0x143a0d[_0x2d00('0xe')][_0x2d00('0xf')]);return _0x4e0834(_0x143a0d['error']['message']);}logger['error'](_0x2d00('0xa'),_0x1f4632,_0x143a0d['error'][_0x2d00('0xf')]);return _0x4dd8bc(_0x143a0d[_0x2d00('0xe')][_0x2d00('0xf')]);}else{logger[_0x2d00('0x9')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1f4632,_0x2d00('0xb'));_0x4dd8bc(_0x143a0d[_0x2d00('0x10')][_0x2d00('0xf')]);}})[_0x2d00('0x11')](function(_0x33da02){logger['error'](_0x2d00('0xa'),_0x1f4632,_0x33da02);_0x4e0834(_0x33da02);});});}
\ No newline at end of file
index 4fb5ff2..83da52b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c6b=['post','create','put','update','delete','destroy','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show'];(function(_0x1af2dc,_0x42fdb1){var _0x13e703=function(_0xc8e04f){while(--_0xc8e04f){_0x1af2dc['push'](_0x1af2dc['shift']());}};_0x13e703(++_0x42fdb1);}(_0x9c6b,0x1d1));var _0xb9c6=function(_0x26a706,_0x25cc80){_0x26a706=_0x26a706-0x0;var _0x1bcd7c=_0x9c6b[_0x26a706];return _0x1bcd7c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb9c6('0x0'));var express=require(_0xb9c6('0x1'));var router=express[_0xb9c6('0x2')]();var fs_extra=require(_0xb9c6('0x3'));var auth=require(_0xb9c6('0x4'));var interaction=require(_0xb9c6('0x5'));var config=require(_0xb9c6('0x6'));var controller=require('./intSugarcrmField.controller');router[_0xb9c6('0x7')]('/',auth[_0xb9c6('0x8')](),controller['index']);router[_0xb9c6('0x7')](_0xb9c6('0x9'),auth[_0xb9c6('0x8')](),controller[_0xb9c6('0xa')]);router[_0xb9c6('0xb')]('/',auth[_0xb9c6('0x8')](),controller[_0xb9c6('0xc')]);router[_0xb9c6('0xd')](_0xb9c6('0x9'),auth[_0xb9c6('0x8')](),controller[_0xb9c6('0xe')]);router[_0xb9c6('0xf')]('/:id',auth[_0xb9c6('0x8')](),controller[_0xb9c6('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd1b4=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','delete','exports','multer','util','path','connect-timeout','Router'];(function(_0x94a62c,_0x248f89){var _0x515b84=function(_0x3dc38a){while(--_0x3dc38a){_0x94a62c['push'](_0x94a62c['shift']());}};_0x515b84(++_0x248f89);}(_0xd1b4,0xfa));var _0x4d1b=function(_0x8781d2,_0x14dde6){_0x8781d2=_0x8781d2-0x0;var _0x2581f3=_0xd1b4[_0x8781d2];return _0x2581f3;};'use strict';var multer=require(_0x4d1b('0x0'));var util=require(_0x4d1b('0x1'));var path=require(_0x4d1b('0x2'));var timeout=require(_0x4d1b('0x3'));var express=require('express');var router=express[_0x4d1b('0x4')]();var fs_extra=require(_0x4d1b('0x5'));var auth=require(_0x4d1b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4d1b('0x7'));var controller=require('./intSugarcrmField.controller');router[_0x4d1b('0x8')]('/',auth[_0x4d1b('0x9')](),controller[_0x4d1b('0xa')]);router[_0x4d1b('0x8')](_0x4d1b('0xb'),auth[_0x4d1b('0x9')](),controller[_0x4d1b('0xc')]);router[_0x4d1b('0xd')]('/',auth[_0x4d1b('0x9')](),controller['create']);router[_0x4d1b('0xe')](_0x4d1b('0xb'),auth[_0x4d1b('0x9')](),controller['update']);router[_0x4d1b('0xf')](_0x4d1b('0xb'),auth[_0x4d1b('0x9')](),controller['destroy']);module[_0x4d1b('0x10')]=router;
\ No newline at end of file
index 1f74c8c..87b382c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a7=['string','customVariable','keyValue','picklist','STRING','ENUM','variable','sequelize','exports'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x79a7,0x1ed));var _0x779a=function(_0x527d55,_0x2304ae){_0x527d55=_0x527d55-0x0;var _0x563e8a=_0x79a7[_0x527d55];return _0x563e8a;};'use strict';var Sequelize=require(_0x779a('0x0'));module[_0x779a('0x1')]={'type':{'type':Sequelize['ENUM'](_0x779a('0x2'),'variable',_0x779a('0x3'),_0x779a('0x4'),_0x779a('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x779a('0x6')]},'key':{'type':Sequelize[_0x779a('0x6')]},'keyType':{'type':Sequelize[_0x779a('0x7')](_0x779a('0x2'),_0x779a('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x779a('0x6')]},'idField':{'type':Sequelize[_0x779a('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x779a('0x6')]}};
\ No newline at end of file
+var _0x1af7=['string','keyValue','picklist','STRING','variable','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x1f0ea7,_0x7f13bd){var _0x58f778=function(_0x22183d){while(--_0x22183d){_0x1f0ea7['push'](_0x1f0ea7['shift']());}};_0x58f778(++_0x7f13bd);}(_0x1af7,0x11f));var _0x71af=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x1af7[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require(_0x71af('0x0'));module[_0x71af('0x1')]={'type':{'type':Sequelize[_0x71af('0x2')](_0x71af('0x3'),'variable','customVariable',_0x71af('0x4'),_0x71af('0x5')),'defaultValue':_0x71af('0x3')},'content':{'type':Sequelize[_0x71af('0x6')]},'key':{'type':Sequelize[_0x71af('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x71af('0x3'),_0x71af('0x7'),_0x71af('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x71af('0x6')]},'nameField':{'type':Sequelize[_0x71af('0x6')]},'customField':{'type':Sequelize[_0x71af('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 528b2bc..de55362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a9=['hasOwnProperty','order','sort','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','update','then','destroy','stack','name','send','map','SugarcrmField','rawAttributes','fieldName','key','query','keys','filters','model','intersection','fields','attributes'];(function(_0x117129,_0x1dd2f8){var _0x36f786=function(_0x4a3d27){while(--_0x4a3d27){_0x117129['push'](_0x117129['shift']());}};_0x36f786(++_0x1dd2f8);}(_0xa1a9,0xeb));var _0x9a1a=function(_0xbb3107,_0x3b328c){_0xbb3107=_0xbb3107-0x0;var _0x73d03=_0xa1a9[_0xbb3107];return _0x73d03;};'use strict';var emlformat=require(_0x9a1a('0x0'));var rimraf=require(_0x9a1a('0x1'));var zipdir=require(_0x9a1a('0x2'));var jsonpatch=require(_0x9a1a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9a1a('0x4'));var Mustache=require(_0x9a1a('0x5'));var util=require('util');var path=require(_0x9a1a('0x6'));var sox=require(_0x9a1a('0x7'));var csv=require(_0x9a1a('0x8'));var ejs=require(_0x9a1a('0x9'));var fs=require('fs');var fs_extra=require(_0x9a1a('0xa'));var _=require('lodash');var squel=require(_0x9a1a('0xb'));var crypto=require(_0x9a1a('0xc'));var jsforce=require(_0x9a1a('0xd'));var deskjs=require(_0x9a1a('0xe'));var toCsv=require(_0x9a1a('0x8'));var querystring=require(_0x9a1a('0xf'));var Papa=require('papaparse');var Redis=require(_0x9a1a('0x10'));var authService=require(_0x9a1a('0x11'));var qs=require(_0x9a1a('0x12'));var as=require(_0x9a1a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9a1a('0x14'))(_0x9a1a('0x15'));var utils=require('../../config/utils');var config=require(_0x9a1a('0x16'));var licenseUtil=require(_0x9a1a('0x17'));var db=require(_0x9a1a('0x18'))['db'];function respondWithStatusCode(_0x2c4b9c,_0x355edb){_0x355edb=_0x355edb||0xcc;return function(_0x55b324){if(_0x55b324){return _0x2c4b9c[_0x9a1a('0x19')](_0x355edb);}return _0x2c4b9c[_0x9a1a('0x1a')](_0x355edb)[_0x9a1a('0x1b')]();};}function respondWithResult(_0x1c509d,_0x6ba0bf){_0x6ba0bf=_0x6ba0bf||0xc8;return function(_0x3a5dde){if(_0x3a5dde){return _0x1c509d[_0x9a1a('0x1a')](_0x6ba0bf)[_0x9a1a('0x1c')](_0x3a5dde);}};}function respondWithFilteredResult(_0x4e9101,_0x8686a3){return function(_0xaebb20){if(_0xaebb20){var _0x43612f=typeof _0x8686a3[_0x9a1a('0x1d')]==='undefined'&&typeof _0x8686a3[_0x9a1a('0x1e')]==='undefined';var _0x40126e=_0xaebb20[_0x9a1a('0x1f')];var _0x36f1c3=_0x43612f?0x0:_0x8686a3[_0x9a1a('0x1d')];var _0x384b6b=_0x43612f?_0xaebb20['count']:_0x8686a3[_0x9a1a('0x1d')]+_0x8686a3[_0x9a1a('0x1e')];var _0x931c13;if(_0x384b6b>=_0x40126e){_0x384b6b=_0x40126e;_0x931c13=0xc8;}else{_0x931c13=0xce;}_0x4e9101[_0x9a1a('0x1a')](_0x931c13);return _0x4e9101[_0x9a1a('0x20')](_0x9a1a('0x21'),_0x36f1c3+'-'+_0x384b6b+'/'+_0x40126e)[_0x9a1a('0x1c')](_0xaebb20);}return null;};}function patchUpdates(_0x5bc771){return function(_0x2d637d){try{jsonpatch['apply'](_0x2d637d,_0x5bc771,!![]);}catch(_0x4bdb49){return BPromise[_0x9a1a('0x22')](_0x4bdb49);}return _0x2d637d['save']();};}function saveUpdates(_0x1bc08a,_0x119ed7){return function(_0x36779d){if(_0x36779d){return _0x36779d[_0x9a1a('0x23')](_0x1bc08a)[_0x9a1a('0x24')](function(_0x2adfdd){return _0x2adfdd;});}return null;};}function removeEntity(_0x446312,_0x4f5866){return function(_0x416efd){if(_0x416efd){return _0x416efd[_0x9a1a('0x25')]()[_0x9a1a('0x24')](function(){_0x446312[_0x9a1a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44e2aa,_0x33675a){return function(_0x4b3b31){if(!_0x4b3b31){_0x44e2aa['sendStatus'](0x194);}return _0x4b3b31;};}function handleError(_0x5b884f,_0x11a9a8){_0x11a9a8=_0x11a9a8||0x1f4;return function(_0x588105){logger['error'](_0x588105[_0x9a1a('0x26')]);if(_0x588105['name']){delete _0x588105[_0x9a1a('0x27')];}_0x5b884f[_0x9a1a('0x1a')](_0x11a9a8)[_0x9a1a('0x28')](_0x588105);};}exports['index']=function(_0x471992,_0xee88f3){var _0x513463={},_0x549baf={},_0x51a094={'count':0x0,'rows':[]};var _0x3647d4=_[_0x9a1a('0x29')](db[_0x9a1a('0x2a')][_0x9a1a('0x2b')],function(_0xb40bda){return{'name':_0xb40bda[_0x9a1a('0x2c')],'type':_0xb40bda['type'][_0x9a1a('0x2d')]};});_0x549baf['model']=_[_0x9a1a('0x29')](_0x3647d4,_0x9a1a('0x27'));_0x549baf[_0x9a1a('0x2e')]=_[_0x9a1a('0x2f')](_0x471992[_0x9a1a('0x2e')]);_0x549baf[_0x9a1a('0x30')]=_['intersection'](_0x549baf[_0x9a1a('0x31')],_0x549baf[_0x9a1a('0x2e')]);_0x513463['attributes']=_[_0x9a1a('0x32')](_0x549baf['model'],qs[_0x9a1a('0x33')](_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x33')]));_0x513463[_0x9a1a('0x34')]=_0x513463[_0x9a1a('0x34')]['length']?_0x513463['attributes']:_0x549baf['model'];if(!_0x471992['query'][_0x9a1a('0x35')]('nolimit')){_0x513463[_0x9a1a('0x1e')]=qs[_0x9a1a('0x1e')](_0x471992[_0x9a1a('0x2e')]['limit']);_0x513463[_0x9a1a('0x1d')]=qs['offset'](_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x1d')]);}_0x513463[_0x9a1a('0x36')]=qs[_0x9a1a('0x37')](_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x37')]);_0x513463['where']=qs[_0x9a1a('0x30')](_['pick'](_0x471992[_0x9a1a('0x2e')],_0x549baf[_0x9a1a('0x30')]),_0x3647d4);if(_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x38')]){_0x513463[_0x9a1a('0x39')]=_[_0x9a1a('0x3a')](_0x513463['where'],{'$or':_[_0x9a1a('0x29')](_0x3647d4,function(_0x28d210){if(_0x28d210[_0x9a1a('0x3b')]!==_0x9a1a('0x3c')){var _0x5e84ad={};_0x5e84ad[_0x28d210['name']]={'$like':'%'+_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x38')]+'%'};return _0x5e84ad;}})});}_0x513463=_[_0x9a1a('0x3a')]({},_0x513463,_0x471992['options']);var _0x47e231={'where':_0x513463['where']};return db[_0x9a1a('0x2a')][_0x9a1a('0x1f')](_0x47e231)[_0x9a1a('0x24')](function(_0x1f6775){_0x51a094[_0x9a1a('0x1f')]=_0x1f6775;if(_0x471992[_0x9a1a('0x2e')][_0x9a1a('0x3d')]){_0x513463[_0x9a1a('0x3e')]=[{'all':!![]}];}return db[_0x9a1a('0x2a')][_0x9a1a('0x3f')](_0x513463);})['then'](function(_0x3dc1b4){_0x51a094[_0x9a1a('0x40')]=_0x3dc1b4;return _0x51a094;})['then'](respondWithFilteredResult(_0xee88f3,_0x513463))[_0x9a1a('0x41')](handleError(_0xee88f3,null));};exports[_0x9a1a('0x42')]=function(_0x1d908f,_0x53655a){var _0x14ad56={'raw':!![],'where':{'id':_0x1d908f[_0x9a1a('0x43')]['id']}},_0x224ed6={};_0x224ed6[_0x9a1a('0x31')]=_[_0x9a1a('0x2f')](db[_0x9a1a('0x2a')][_0x9a1a('0x2b')]);_0x224ed6['query']=_[_0x9a1a('0x2f')](_0x1d908f[_0x9a1a('0x2e')]);_0x224ed6[_0x9a1a('0x30')]=_['intersection'](_0x224ed6['model'],_0x224ed6[_0x9a1a('0x2e')]);_0x14ad56['attributes']=_['intersection'](_0x224ed6['model'],qs[_0x9a1a('0x33')](_0x1d908f[_0x9a1a('0x2e')]['fields']));_0x14ad56['attributes']=_0x14ad56[_0x9a1a('0x34')]['length']?_0x14ad56[_0x9a1a('0x34')]:_0x224ed6[_0x9a1a('0x31')];if(_0x1d908f['query']['includeAll']){_0x14ad56[_0x9a1a('0x3e')]=[{'all':!![]}];}_0x14ad56=_[_0x9a1a('0x3a')]({},_0x14ad56,_0x1d908f[_0x9a1a('0x44')]);return db[_0x9a1a('0x2a')][_0x9a1a('0x45')](_0x14ad56)[_0x9a1a('0x24')](handleEntityNotFound(_0x53655a,null))[_0x9a1a('0x24')](respondWithResult(_0x53655a,null))[_0x9a1a('0x41')](handleError(_0x53655a,null));};exports[_0x9a1a('0x46')]=function(_0x1559f2,_0x572652){return db[_0x9a1a('0x2a')][_0x9a1a('0x46')](_0x1559f2[_0x9a1a('0x47')],{})[_0x9a1a('0x24')](respondWithResult(_0x572652,0xc9))[_0x9a1a('0x41')](handleError(_0x572652,null));};exports[_0x9a1a('0x23')]=function(_0x25b263,_0x2b7032){if(_0x25b263['body']['id']){delete _0x25b263[_0x9a1a('0x47')]['id'];}return db[_0x9a1a('0x2a')][_0x9a1a('0x45')]({'where':{'id':_0x25b263['params']['id']}})[_0x9a1a('0x24')](handleEntityNotFound(_0x2b7032,null))[_0x9a1a('0x24')](saveUpdates(_0x25b263[_0x9a1a('0x47')],null))[_0x9a1a('0x24')](respondWithResult(_0x2b7032,null))[_0x9a1a('0x41')](handleError(_0x2b7032,null));};exports['destroy']=function(_0x5decc3,_0x94fdb3){return db[_0x9a1a('0x2a')][_0x9a1a('0x45')]({'where':{'id':_0x5decc3[_0x9a1a('0x43')]['id']}})[_0x9a1a('0x24')](handleEntityNotFound(_0x94fdb3,null))[_0x9a1a('0x24')](removeEntity(_0x94fdb3,null))[_0x9a1a('0x41')](handleError(_0x94fdb3,null));};
\ No newline at end of file
+var _0xabb1=['save','update','destroy','then','error','stack','name','send','index','map','SugarcrmField','rawAttributes','type','query','keys','filters','model','attributes','fields','length','nolimit','sort','where','filter','merge','options','include','findAll','show','params','includeAll','find','create','body','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject'];(function(_0x1fc5f9,_0x18713a){var _0xe2a916=function(_0xa300fe){while(--_0xa300fe){_0x1fc5f9['push'](_0x1fc5f9['shift']());}};_0xe2a916(++_0x18713a);}(_0xabb1,0xf2));var _0x1abb=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xabb1[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0x1abb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1abb('0x1'));var jsonpatch=require(_0x1abb('0x2'));var rp=require(_0x1abb('0x3'));var moment=require(_0x1abb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1abb('0x5'));var path=require(_0x1abb('0x6'));var sox=require('sox');var csv=require(_0x1abb('0x7'));var ejs=require(_0x1abb('0x8'));var fs=require('fs');var fs_extra=require(_0x1abb('0x9'));var _=require(_0x1abb('0xa'));var squel=require(_0x1abb('0xb'));var crypto=require(_0x1abb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1abb('0xd'));var toCsv=require(_0x1abb('0x7'));var querystring=require(_0x1abb('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1abb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1abb('0x10'));var hardwareService=require(_0x1abb('0x11'));var logger=require(_0x1abb('0x12'))(_0x1abb('0x13'));var utils=require(_0x1abb('0x14'));var config=require(_0x1abb('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1abb('0x16'))['db'];function respondWithStatusCode(_0x1bcd3e,_0xa6862f){_0xa6862f=_0xa6862f||0xcc;return function(_0x1bc8f2){if(_0x1bc8f2){return _0x1bcd3e[_0x1abb('0x17')](_0xa6862f);}return _0x1bcd3e['status'](_0xa6862f)[_0x1abb('0x18')]();};}function respondWithResult(_0x5d199c,_0xeee2c2){_0xeee2c2=_0xeee2c2||0xc8;return function(_0x163a68){if(_0x163a68){return _0x5d199c[_0x1abb('0x19')](_0xeee2c2)[_0x1abb('0x1a')](_0x163a68);}};}function respondWithFilteredResult(_0x385566,_0x3c06f9){return function(_0x41989c){if(_0x41989c){var _0x342aa3=typeof _0x3c06f9[_0x1abb('0x1b')]===_0x1abb('0x1c')&&typeof _0x3c06f9['limit']===_0x1abb('0x1c');var _0x5b033d=_0x41989c['count'];var _0x5bc1fc=_0x342aa3?0x0:_0x3c06f9[_0x1abb('0x1b')];var _0x48e8ea=_0x342aa3?_0x41989c[_0x1abb('0x1d')]:_0x3c06f9[_0x1abb('0x1b')]+_0x3c06f9[_0x1abb('0x1e')];var _0x441774;if(_0x48e8ea>=_0x5b033d){_0x48e8ea=_0x5b033d;_0x441774=0xc8;}else{_0x441774=0xce;}_0x385566[_0x1abb('0x19')](_0x441774);return _0x385566[_0x1abb('0x1f')](_0x1abb('0x20'),_0x5bc1fc+'-'+_0x48e8ea+'/'+_0x5b033d)[_0x1abb('0x1a')](_0x41989c);}return null;};}function patchUpdates(_0x4b9ea0){return function(_0x2e8813){try{jsonpatch['apply'](_0x2e8813,_0x4b9ea0,!![]);}catch(_0x2c29d6){return BPromise[_0x1abb('0x21')](_0x2c29d6);}return _0x2e8813[_0x1abb('0x22')]();};}function saveUpdates(_0x250a69,_0x100282){return function(_0x212549){if(_0x212549){return _0x212549[_0x1abb('0x23')](_0x250a69)['then'](function(_0x862a2c){return _0x862a2c;});}return null;};}function removeEntity(_0x23d291,_0x93b71d){return function(_0x577e48){if(_0x577e48){return _0x577e48[_0x1abb('0x24')]()[_0x1abb('0x25')](function(){_0x23d291['status'](0xcc)[_0x1abb('0x18')]();});}};}function handleEntityNotFound(_0x17ab64,_0x434d74){return function(_0x475f5f){if(!_0x475f5f){_0x17ab64['sendStatus'](0x194);}return _0x475f5f;};}function handleError(_0xc6f2d6,_0x309a11){_0x309a11=_0x309a11||0x1f4;return function(_0x4e0c11){logger[_0x1abb('0x26')](_0x4e0c11[_0x1abb('0x27')]);if(_0x4e0c11[_0x1abb('0x28')]){delete _0x4e0c11[_0x1abb('0x28')];}_0xc6f2d6[_0x1abb('0x19')](_0x309a11)[_0x1abb('0x29')](_0x4e0c11);};}exports[_0x1abb('0x2a')]=function(_0x4022a7,_0x576575){var _0x53d077={},_0xc675bf={},_0x300915={'count':0x0,'rows':[]};var _0x3e7e2c=_[_0x1abb('0x2b')](db[_0x1abb('0x2c')][_0x1abb('0x2d')],function(_0x269d5c){return{'name':_0x269d5c['fieldName'],'type':_0x269d5c[_0x1abb('0x2e')]['key']};});_0xc675bf['model']=_['map'](_0x3e7e2c,_0x1abb('0x28'));_0xc675bf[_0x1abb('0x2f')]=_[_0x1abb('0x30')](_0x4022a7[_0x1abb('0x2f')]);_0xc675bf[_0x1abb('0x31')]=_['intersection'](_0xc675bf[_0x1abb('0x32')],_0xc675bf['query']);_0x53d077[_0x1abb('0x33')]=_['intersection'](_0xc675bf[_0x1abb('0x32')],qs[_0x1abb('0x34')](_0x4022a7[_0x1abb('0x2f')]['fields']));_0x53d077['attributes']=_0x53d077[_0x1abb('0x33')][_0x1abb('0x35')]?_0x53d077[_0x1abb('0x33')]:_0xc675bf[_0x1abb('0x32')];if(!_0x4022a7[_0x1abb('0x2f')]['hasOwnProperty'](_0x1abb('0x36'))){_0x53d077[_0x1abb('0x1e')]=qs['limit'](_0x4022a7['query']['limit']);_0x53d077[_0x1abb('0x1b')]=qs[_0x1abb('0x1b')](_0x4022a7['query'][_0x1abb('0x1b')]);}_0x53d077['order']=qs[_0x1abb('0x37')](_0x4022a7[_0x1abb('0x2f')][_0x1abb('0x37')]);_0x53d077[_0x1abb('0x38')]=qs[_0x1abb('0x31')](_['pick'](_0x4022a7[_0x1abb('0x2f')],_0xc675bf[_0x1abb('0x31')]),_0x3e7e2c);if(_0x4022a7[_0x1abb('0x2f')][_0x1abb('0x39')]){_0x53d077['where']=_[_0x1abb('0x3a')](_0x53d077['where'],{'$or':_[_0x1abb('0x2b')](_0x3e7e2c,function(_0x298383){if(_0x298383['type']!=='VIRTUAL'){var _0x1a3ccb={};_0x1a3ccb[_0x298383['name']]={'$like':'%'+_0x4022a7[_0x1abb('0x2f')][_0x1abb('0x39')]+'%'};return _0x1a3ccb;}})});}_0x53d077=_[_0x1abb('0x3a')]({},_0x53d077,_0x4022a7[_0x1abb('0x3b')]);var _0x55efb0={'where':_0x53d077[_0x1abb('0x38')]};return db['SugarcrmField'][_0x1abb('0x1d')](_0x55efb0)[_0x1abb('0x25')](function(_0x3403d5){_0x300915['count']=_0x3403d5;if(_0x4022a7[_0x1abb('0x2f')]['includeAll']){_0x53d077[_0x1abb('0x3c')]=[{'all':!![]}];}return db[_0x1abb('0x2c')][_0x1abb('0x3d')](_0x53d077);})[_0x1abb('0x25')](function(_0x565adc){_0x300915['rows']=_0x565adc;return _0x300915;})[_0x1abb('0x25')](respondWithFilteredResult(_0x576575,_0x53d077))['catch'](handleError(_0x576575,null));};exports[_0x1abb('0x3e')]=function(_0x12166c,_0x383c10){var _0x30d04d={'raw':!![],'where':{'id':_0x12166c[_0x1abb('0x3f')]['id']}},_0x3017e5={};_0x3017e5[_0x1abb('0x32')]=_[_0x1abb('0x30')](db[_0x1abb('0x2c')][_0x1abb('0x2d')]);_0x3017e5[_0x1abb('0x2f')]=_[_0x1abb('0x30')](_0x12166c['query']);_0x3017e5[_0x1abb('0x31')]=_['intersection'](_0x3017e5['model'],_0x3017e5['query']);_0x30d04d[_0x1abb('0x33')]=_['intersection'](_0x3017e5[_0x1abb('0x32')],qs['fields'](_0x12166c['query'][_0x1abb('0x34')]));_0x30d04d['attributes']=_0x30d04d[_0x1abb('0x33')][_0x1abb('0x35')]?_0x30d04d[_0x1abb('0x33')]:_0x3017e5[_0x1abb('0x32')];if(_0x12166c[_0x1abb('0x2f')][_0x1abb('0x40')]){_0x30d04d[_0x1abb('0x3c')]=[{'all':!![]}];}_0x30d04d=_[_0x1abb('0x3a')]({},_0x30d04d,_0x12166c[_0x1abb('0x3b')]);return db['SugarcrmField'][_0x1abb('0x41')](_0x30d04d)[_0x1abb('0x25')](handleEntityNotFound(_0x383c10,null))['then'](respondWithResult(_0x383c10,null))['catch'](handleError(_0x383c10,null));};exports[_0x1abb('0x42')]=function(_0xda0f7e,_0xc3d98c){return db[_0x1abb('0x2c')][_0x1abb('0x42')](_0xda0f7e[_0x1abb('0x43')],{})[_0x1abb('0x25')](respondWithResult(_0xc3d98c,0xc9))[_0x1abb('0x44')](handleError(_0xc3d98c,null));};exports[_0x1abb('0x23')]=function(_0x44fe04,_0x1f1e09){if(_0x44fe04[_0x1abb('0x43')]['id']){delete _0x44fe04[_0x1abb('0x43')]['id'];}return db[_0x1abb('0x2c')][_0x1abb('0x41')]({'where':{'id':_0x44fe04[_0x1abb('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1f1e09,null))[_0x1abb('0x25')](saveUpdates(_0x44fe04[_0x1abb('0x43')],null))[_0x1abb('0x25')](respondWithResult(_0x1f1e09,null))[_0x1abb('0x44')](handleError(_0x1f1e09,null));};exports[_0x1abb('0x24')]=function(_0x16249e,_0x5bb9a1){return db['SugarcrmField'][_0x1abb('0x41')]({'where':{'id':_0x16249e['params']['id']}})['then'](handleEntityNotFound(_0x5bb9a1,null))['then'](removeEntity(_0x5bb9a1,null))[_0x1abb('0x44')](handleError(_0x5bb9a1,null));};
\ No newline at end of file
index 1db3d6d..69fd060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f3=['rimraf','../../config/environment','./intSugarcrmField.attributes','define','int_sugarcrm_fields','sugarcrm_unique_index','lodash','api','moment','bluebird','request-promise','path'];(function(_0x289797,_0x2c62d9){var _0x5780fc=function(_0x21efac){while(--_0x21efac){_0x289797['push'](_0x289797['shift']());}};_0x5780fc(++_0x2c62d9);}(_0x78f3,0x162));var _0x378f=function(_0x24efcb,_0x148664){_0x24efcb=_0x24efcb-0x0;var _0x935efb=_0x78f3[_0x24efcb];return _0x935efb;};'use strict';var _=require(_0x378f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x378f('0x1'));var moment=require(_0x378f('0x2'));var BPromise=require(_0x378f('0x3'));var rp=require(_0x378f('0x4'));var fs=require('fs');var path=require(_0x378f('0x5'));var rimraf=require(_0x378f('0x6'));var config=require(_0x378f('0x7'));var attributes=require(_0x378f('0x8'));module['exports']=function(_0x177035,_0x5b333f){return _0x177035[_0x378f('0x9')]('SugarcrmField',attributes,{'tableName':_0x378f('0xa'),'paranoid':![],'indexes':[{'name':_0x378f('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0bd=['../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','api','moment','bluebird','request-promise'];(function(_0x363368,_0x328831){var _0x596be1=function(_0x1764ed){while(--_0x1764ed){_0x363368['push'](_0x363368['shift']());}};_0x596be1(++_0x328831);}(_0xe0bd,0x12f));var _0xde0b=function(_0x996bc8,_0x291e01){_0x996bc8=_0x996bc8-0x0;var _0x20b0ea=_0xe0bd[_0x996bc8];return _0x20b0ea;};'use strict';var _=require('lodash');var util=require(_0xde0b('0x0'));var logger=require('../../config/logger')(_0xde0b('0x1'));var moment=require(_0xde0b('0x2'));var BPromise=require(_0xde0b('0x3'));var rp=require(_0xde0b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xde0b('0x5'));var attributes=require(_0xde0b('0x6'));module[_0xde0b('0x7')]=function(_0x465258,_0x1444ef){return _0x465258[_0xde0b('0x8')](_0xde0b('0x9'),attributes,{'tableName':_0xde0b('0xa'),'paranoid':![],'indexes':[{'name':_0xde0b('0xb'),'fields':[_0xde0b('0xc'),_0xde0b('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d7830b6..68a5673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x549b=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util'];(function(_0x5777e5,_0x24c824){var _0x44673a=function(_0x6fb16c){while(--_0x6fb16c){_0x5777e5['push'](_0x5777e5['shift']());}};_0x44673a(++_0x24c824);}(_0x549b,0x1c0));var _0xb549=function(_0x1db29a,_0x5263e6){_0x1db29a=_0x1db29a-0x0;var _0x53525b=_0x549b[_0x1db29a];return _0x53525b;};'use strict';var _=require(_0xb549('0x0'));var util=require(_0xb549('0x1'));var moment=require(_0xb549('0x2'));var BPromise=require(_0xb549('0x3'));var rs=require(_0xb549('0x4'));var fs=require('fs');var Redis=require(_0xb549('0x5'));var db=require(_0xb549('0x6'))['db'];var utils=require(_0xb549('0x7'));var logger=require(_0xb549('0x8'))('rpc');var config=require(_0xb549('0x9'));var jayson=require(_0xb549('0xa'));var client=jayson[_0xb549('0xb')][_0xb549('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x107532,_0x2bad69,_0x7a126b){return new BPromise(function(_0x80e807,_0x5ef3e3){return client['request'](_0x107532,_0x7a126b)[_0xb549('0xd')](function(_0x35b6b8){logger['info'](_0xb549('0xe'),_0x2bad69,'request\x20sent');logger[_0xb549('0xf')](_0xb549('0x10'),_0x2bad69,_0xb549('0x11'),JSON[_0xb549('0x12')](_0x35b6b8));if(_0x35b6b8[_0xb549('0x13')]){if(_0x35b6b8[_0xb549('0x13')][_0xb549('0x14')]===0x1f4){logger[_0xb549('0x13')](_0xb549('0xe'),_0x2bad69,_0x35b6b8[_0xb549('0x13')][_0xb549('0x15')]);return _0x5ef3e3(_0x35b6b8[_0xb549('0x13')]['message']);}logger[_0xb549('0x13')]('SugarcrmField,\x20%s,\x20%s',_0x2bad69,_0x35b6b8[_0xb549('0x13')][_0xb549('0x15')]);return _0x80e807(_0x35b6b8[_0xb549('0x13')]['message']);}else{logger[_0xb549('0x16')](_0xb549('0xe'),_0x2bad69,_0xb549('0x11'));_0x80e807(_0x35b6b8[_0xb549('0x17')]['message']);}})[_0xb549('0x18')](function(_0x29b405){logger[_0xb549('0x13')](_0xb549('0xe'),_0x2bad69,_0x29b405);_0x5ef3e3(_0x29b405);});});}
\ No newline at end of file
+var _0xf734=['http','request','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','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x2fbae6,_0x1d2508){var _0x90b5fb=function(_0x5eb167){while(--_0x5eb167){_0x2fbae6['push'](_0x2fbae6['shift']());}};_0x90b5fb(++_0x1d2508);}(_0xf734,0xa4));var _0x4f73=function(_0x2fc61c,_0x5879ce){_0x2fc61c=_0x2fc61c-0x0;var _0x1088de=_0xf734[_0x2fc61c];return _0x1088de;};'use strict';var _=require(_0x4f73('0x0'));var util=require(_0x4f73('0x1'));var moment=require('moment');var BPromise=require(_0x4f73('0x2'));var rs=require(_0x4f73('0x3'));var fs=require('fs');var Redis=require(_0x4f73('0x4'));var db=require(_0x4f73('0x5'))['db'];var utils=require(_0x4f73('0x6'));var logger=require(_0x4f73('0x7'))('rpc');var config=require(_0x4f73('0x8'));var jayson=require(_0x4f73('0x9'));var client=jayson[_0x4f73('0xa')][_0x4f73('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x568aa7,_0x2e84c2,_0x34f3ca){return new BPromise(function(_0x56fc24,_0x253dbf){return client[_0x4f73('0xc')](_0x568aa7,_0x34f3ca)[_0x4f73('0xd')](function(_0x17c48b){logger[_0x4f73('0xe')](_0x4f73('0xf'),_0x2e84c2,_0x4f73('0x10'));logger[_0x4f73('0x11')](_0x4f73('0x12'),_0x2e84c2,'request\x20sent',JSON[_0x4f73('0x13')](_0x17c48b));if(_0x17c48b[_0x4f73('0x14')]){if(_0x17c48b[_0x4f73('0x14')][_0x4f73('0x15')]===0x1f4){logger[_0x4f73('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x2e84c2,_0x17c48b[_0x4f73('0x14')][_0x4f73('0x16')]);return _0x253dbf(_0x17c48b[_0x4f73('0x14')]['message']);}logger[_0x4f73('0x14')](_0x4f73('0xf'),_0x2e84c2,_0x17c48b[_0x4f73('0x14')][_0x4f73('0x16')]);return _0x56fc24(_0x17c48b[_0x4f73('0x14')]['message']);}else{logger[_0x4f73('0xe')](_0x4f73('0xf'),_0x2e84c2,'request\x20sent');_0x56fc24(_0x17c48b[_0x4f73('0x17')][_0x4f73('0x16')]);}})[_0x4f73('0x18')](function(_0x5147a8){logger['error'](_0x4f73('0xf'),_0x2e84c2,_0x5147a8);_0x253dbf(_0x5147a8);});});}
\ No newline at end of file
index d776359..8bd88cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccef=['show','getConfigurations','/:id/fields','getFields','create','/:id/configurations','addConfiguration','put','/:id','delete','destroy','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerAccount.controller','get','index','isAuthenticated'];(function(_0x30676e,_0x13b803){var _0x27245a=function(_0x920db3){while(--_0x920db3){_0x30676e['push'](_0x30676e['shift']());}};_0x27245a(++_0x13b803);}(_0xccef,0x1ee));var _0xfcce=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xccef[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require('multer');var util=require(_0xfcce('0x0'));var path=require('path');var timeout=require(_0xfcce('0x1'));var express=require(_0xfcce('0x2'));var router=express['Router']();var fs_extra=require(_0xfcce('0x3'));var auth=require(_0xfcce('0x4'));var interaction=require(_0xfcce('0x5'));var config=require('../../config/environment');var controller=require(_0xfcce('0x6'));router[_0xfcce('0x7')]('/',auth['isAuthenticated'](),controller[_0xfcce('0x8')]);router[_0xfcce('0x7')]('/:id',auth[_0xfcce('0x9')](),controller[_0xfcce('0xa')]);router['get']('/:id/configurations',auth[_0xfcce('0x9')](),controller[_0xfcce('0xb')]);router[_0xfcce('0x7')](_0xfcce('0xc'),auth['isAuthenticated'](),controller[_0xfcce('0xd')]);router['post']('/',auth[_0xfcce('0x9')](),controller[_0xfcce('0xe')]);router['post'](_0xfcce('0xf'),auth['isAuthenticated'](),controller[_0xfcce('0x10')]);router[_0xfcce('0x11')](_0xfcce('0x12'),auth[_0xfcce('0x9')](),controller['update']);router[_0xfcce('0x13')](_0xfcce('0x12'),auth[_0xfcce('0x9')](),controller[_0xfcce('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x5dd6=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','index','get','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','post','create','addConfiguration','put','/:id','delete','destroy','exports','multer','connect-timeout'];(function(_0x56cde8,_0x5736cb){var _0x1fa897=function(_0x4ff294){while(--_0x4ff294){_0x56cde8['push'](_0x56cde8['shift']());}};_0x1fa897(++_0x5736cb);}(_0x5dd6,0x140));var _0x65dd=function(_0x197a7a,_0x4b9054){_0x197a7a=_0x197a7a-0x0;var _0x386cb6=_0x5dd6[_0x197a7a];return _0x386cb6;};'use strict';var multer=require(_0x65dd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x65dd('0x1'));var express=require(_0x65dd('0x2'));var router=express['Router']();var fs_extra=require(_0x65dd('0x3'));var auth=require(_0x65dd('0x4'));var interaction=require(_0x65dd('0x5'));var config=require(_0x65dd('0x6'));var controller=require(_0x65dd('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x65dd('0x8')]);router[_0x65dd('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x65dd('0xa')]);router[_0x65dd('0x9')](_0x65dd('0xb'),auth[_0x65dd('0xc')](),controller[_0x65dd('0xd')]);router[_0x65dd('0x9')](_0x65dd('0xe'),auth[_0x65dd('0xc')](),controller['getFields']);router[_0x65dd('0xf')]('/',auth[_0x65dd('0xc')](),controller[_0x65dd('0x10')]);router[_0x65dd('0xf')](_0x65dd('0xb'),auth[_0x65dd('0xc')](),controller[_0x65dd('0x11')]);router[_0x65dd('0x12')](_0x65dd('0x13'),auth[_0x65dd('0xc')](),controller['update']);router[_0x65dd('0x14')](_0x65dd('0x13'),auth[_0x65dd('0xc')](),controller[_0x65dd('0x15')]);module[_0x65dd('0x16')]=router;
\ No newline at end of file
index 79bc776..d08e78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6735=['sequelize','exports','STRING'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x6735,0x11d));var _0x5673=function(_0x2d715f,_0x28ce82){_0x2d715f=_0x2d715f-0x0;var _0x53ab85=_0x6735[_0x2d715f];return _0x53ab85;};'use strict';var Sequelize=require(_0x5673('0x0'));module[_0x5673('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x5673('0x2')]},'username':{'type':Sequelize[_0x5673('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x5673('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x5673('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x4711=['STRING','HelpDesk','exports'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0x4711,0x191));var _0x1471=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4711[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x1471('0x0')]={'name':{'type':Sequelize[_0x1471('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1471('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x1471('0x1')],'allowNull':![],'defaultValue':_0x1471('0x2')},'remoteUri':{'type':Sequelize[_0x1471('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x1471('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x1471('0x1')],'allowNull':![]}};
\ No newline at end of file
index c737266..85a4b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc545=['lastIndexOf','format','%s/webservice.php','success','POST','login','GET','describe','sessionName','autogenerated','reference','owner','includes','editable','false','result','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','apply','save','update','then','destroy','error','stack','name','index','rawAttributes','fieldName','key','map','keys','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','VtigerAccount','getConfigurations','findOne','addConfiguration','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','description','moduleName','serverUrl','accessKey','username','remoteUri','slice'];(function(_0x2f4e68,_0xe9bc3d){var _0xc70c7a=function(_0x14af32){while(--_0x14af32){_0x2f4e68['push'](_0x2f4e68['shift']());}};_0xc70c7a(++_0xe9bc3d);}(_0xc545,0x9b));var _0x5c54=function(_0x1f30e6,_0x3fce47){_0x1f30e6=_0x1f30e6-0x0;var _0x3e862a=_0xc545[_0x1f30e6];return _0x3e862a;};'use strict';var emlformat=require(_0x5c54('0x0'));var rimraf=require(_0x5c54('0x1'));var zipdir=require(_0x5c54('0x2'));var jsonpatch=require(_0x5c54('0x3'));var rp=require(_0x5c54('0x4'));var moment=require('moment');var BPromise=require(_0x5c54('0x5'));var Mustache=require(_0x5c54('0x6'));var util=require(_0x5c54('0x7'));var path=require(_0x5c54('0x8'));var sox=require(_0x5c54('0x9'));var csv=require(_0x5c54('0xa'));var ejs=require(_0x5c54('0xb'));var fs=require('fs');var fs_extra=require(_0x5c54('0xc'));var _=require(_0x5c54('0xd'));var squel=require(_0x5c54('0xe'));var crypto=require(_0x5c54('0xf'));var jsforce=require(_0x5c54('0x10'));var deskjs=require(_0x5c54('0x11'));var toCsv=require(_0x5c54('0xa'));var querystring=require(_0x5c54('0x12'));var Papa=require(_0x5c54('0x13'));var Redis=require(_0x5c54('0x14'));var authService=require(_0x5c54('0x15'));var qs=require(_0x5c54('0x16'));var as=require(_0x5c54('0x17'));var hardwareService=require(_0x5c54('0x18'));var logger=require(_0x5c54('0x19'))(_0x5c54('0x1a'));var utils=require(_0x5c54('0x1b'));var config=require(_0x5c54('0x1c'));var licenseUtil=require(_0x5c54('0x1d'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5c54('0x1e'));function respondWithStatusCode(_0x586c29,_0x5dbdd0){_0x5dbdd0=_0x5dbdd0||0xcc;return function(_0x3f87da){if(_0x3f87da){return _0x586c29[_0x5c54('0x1f')](_0x5dbdd0);}return _0x586c29['status'](_0x5dbdd0)[_0x5c54('0x20')]();};}function respondWithResult(_0x323982,_0xbdd0a4){_0xbdd0a4=_0xbdd0a4||0xc8;return function(_0x2adc48){if(_0x2adc48){return _0x323982[_0x5c54('0x21')](_0xbdd0a4)[_0x5c54('0x22')](_0x2adc48);}};}function respondWithFilteredResult(_0x26a7d3,_0x1fe659){return function(_0x513fa0){if(_0x513fa0){var _0x2735f6=typeof _0x1fe659[_0x5c54('0x23')]===_0x5c54('0x24')&&typeof _0x1fe659[_0x5c54('0x25')]==='undefined';var _0x976d3a=_0x513fa0[_0x5c54('0x26')];var _0x21bb77=_0x2735f6?0x0:_0x1fe659[_0x5c54('0x23')];var _0x4fd659=_0x2735f6?_0x513fa0[_0x5c54('0x26')]:_0x1fe659['offset']+_0x1fe659[_0x5c54('0x25')];var _0x5d4289;if(_0x4fd659>=_0x976d3a){_0x4fd659=_0x976d3a;_0x5d4289=0xc8;}else{_0x5d4289=0xce;}_0x26a7d3[_0x5c54('0x21')](_0x5d4289);return _0x26a7d3['set']('Content-Range',_0x21bb77+'-'+_0x4fd659+'/'+_0x976d3a)[_0x5c54('0x22')](_0x513fa0);}return null;};}function patchUpdates(_0x1e24e7){return function(_0x35c8eb){try{jsonpatch[_0x5c54('0x27')](_0x35c8eb,_0x1e24e7,!![]);}catch(_0x171285){return BPromise['reject'](_0x171285);}return _0x35c8eb[_0x5c54('0x28')]();};}function saveUpdates(_0x34f11e,_0x650d5){return function(_0x2c051f){if(_0x2c051f){return _0x2c051f[_0x5c54('0x29')](_0x34f11e)[_0x5c54('0x2a')](function(_0x4fcad6){return _0x4fcad6;});}return null;};}function removeEntity(_0x236569,_0x41bad1){return function(_0x2f171e){if(_0x2f171e){return _0x2f171e[_0x5c54('0x2b')]()[_0x5c54('0x2a')](function(){_0x236569[_0x5c54('0x21')](0xcc)[_0x5c54('0x20')]();});}};}function handleEntityNotFound(_0x37a5e1,_0x4eba6c){return function(_0x18d515){if(!_0x18d515){_0x37a5e1[_0x5c54('0x1f')](0x194);}return _0x18d515;};}function handleError(_0x5e3639,_0x4a3d4a){_0x4a3d4a=_0x4a3d4a||0x1f4;return function(_0x47323c){logger[_0x5c54('0x2c')](_0x47323c[_0x5c54('0x2d')]);if(_0x47323c[_0x5c54('0x2e')]){delete _0x47323c[_0x5c54('0x2e')];}_0x5e3639[_0x5c54('0x21')](_0x4a3d4a)['send'](_0x47323c);};}exports[_0x5c54('0x2f')]=function(_0x5f10bd,_0x5cc711){var _0x48ffbd={},_0x4d228b={},_0x8530d9={'count':0x0,'rows':[]};var _0x1b32d3=_['map'](db['VtigerAccount'][_0x5c54('0x30')],function(_0x118175){return{'name':_0x118175[_0x5c54('0x31')],'type':_0x118175['type'][_0x5c54('0x32')]};});_0x4d228b['model']=_[_0x5c54('0x33')](_0x1b32d3,_0x5c54('0x2e'));_0x4d228b['query']=_[_0x5c54('0x34')](_0x5f10bd[_0x5c54('0x35')]);_0x4d228b['filters']=_['intersection'](_0x4d228b[_0x5c54('0x36')],_0x4d228b[_0x5c54('0x35')]);_0x48ffbd[_0x5c54('0x37')]=_[_0x5c54('0x38')](_0x4d228b[_0x5c54('0x36')],qs[_0x5c54('0x39')](_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x39')]));_0x48ffbd[_0x5c54('0x37')]=_0x48ffbd[_0x5c54('0x37')][_0x5c54('0x3a')]?_0x48ffbd['attributes']:_0x4d228b['model'];if(!_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x3b')](_0x5c54('0x3c'))){_0x48ffbd[_0x5c54('0x25')]=qs[_0x5c54('0x25')](_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x25')]);_0x48ffbd[_0x5c54('0x23')]=qs[_0x5c54('0x23')](_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x23')]);}_0x48ffbd[_0x5c54('0x3d')]=qs[_0x5c54('0x3e')](_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x3e')]);_0x48ffbd[_0x5c54('0x3f')]=qs[_0x5c54('0x40')](_[_0x5c54('0x41')](_0x5f10bd[_0x5c54('0x35')],_0x4d228b[_0x5c54('0x40')]),_0x1b32d3);if(_0x5f10bd['query'][_0x5c54('0x42')]){_0x48ffbd[_0x5c54('0x3f')]=_[_0x5c54('0x43')](_0x48ffbd[_0x5c54('0x3f')],{'$or':_[_0x5c54('0x33')](_0x1b32d3,function(_0x2691c3){if(_0x2691c3[_0x5c54('0x44')]!==_0x5c54('0x45')){var _0xb2df34={};_0xb2df34[_0x2691c3[_0x5c54('0x2e')]]={'$like':'%'+_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x42')]+'%'};return _0xb2df34;}})});}_0x48ffbd=_[_0x5c54('0x43')]({},_0x48ffbd,_0x5f10bd[_0x5c54('0x46')]);var _0x4c62a2={'where':_0x48ffbd['where']};return db['VtigerAccount'][_0x5c54('0x26')](_0x4c62a2)['then'](function(_0x4f44c3){_0x8530d9[_0x5c54('0x26')]=_0x4f44c3;if(_0x5f10bd[_0x5c54('0x35')][_0x5c54('0x47')]){_0x48ffbd[_0x5c54('0x48')]=[{'all':!![]}];}return db['VtigerAccount'][_0x5c54('0x49')](_0x48ffbd);})[_0x5c54('0x2a')](function(_0x30b6f0){_0x8530d9[_0x5c54('0x4a')]=_0x30b6f0;return _0x8530d9;})[_0x5c54('0x2a')](respondWithFilteredResult(_0x5cc711,_0x48ffbd))[_0x5c54('0x4b')](handleError(_0x5cc711,null));};exports[_0x5c54('0x4c')]=function(_0x515f1a,_0xdbe3d){var _0x245448={'raw':![],'where':{'id':_0x515f1a[_0x5c54('0x4d')]['id']}},_0x4936c7={};_0x4936c7[_0x5c54('0x36')]=_[_0x5c54('0x34')](db['VtigerAccount'][_0x5c54('0x30')]);_0x4936c7[_0x5c54('0x35')]=_['keys'](_0x515f1a[_0x5c54('0x35')]);_0x4936c7[_0x5c54('0x40')]=_[_0x5c54('0x38')](_0x4936c7['model'],_0x4936c7[_0x5c54('0x35')]);_0x245448[_0x5c54('0x37')]=_[_0x5c54('0x38')](_0x4936c7[_0x5c54('0x36')],qs['fields'](_0x515f1a['query'][_0x5c54('0x39')]));_0x245448['attributes']=_0x245448['attributes'][_0x5c54('0x3a')]?_0x245448[_0x5c54('0x37')]:_0x4936c7[_0x5c54('0x36')];if(_0x515f1a[_0x5c54('0x35')][_0x5c54('0x47')]){_0x245448[_0x5c54('0x48')]=[{'all':!![]}];}_0x245448=_['merge']({},_0x245448,_0x515f1a['options']);return db['VtigerAccount'][_0x5c54('0x4e')](_0x245448)[_0x5c54('0x2a')](handleEntityNotFound(_0xdbe3d,null))[_0x5c54('0x2a')](respondWithResult(_0xdbe3d,null))[_0x5c54('0x4b')](handleError(_0xdbe3d,null));};exports[_0x5c54('0x4f')]=function(_0x3d09eb,_0x11b52b){return db['VtigerAccount'][_0x5c54('0x4f')](_0x3d09eb[_0x5c54('0x50')],{})['then'](respondWithResult(_0x11b52b,0xc9))[_0x5c54('0x4b')](handleError(_0x11b52b,null));};exports['update']=function(_0x1c0487,_0x51f97b){if(_0x1c0487['body']['id']){delete _0x1c0487[_0x5c54('0x50')]['id'];}return db[_0x5c54('0x51')][_0x5c54('0x4e')]({'where':{'id':_0x1c0487[_0x5c54('0x4d')]['id']}})[_0x5c54('0x2a')](handleEntityNotFound(_0x51f97b,null))[_0x5c54('0x2a')](saveUpdates(_0x1c0487['body'],null))['then'](respondWithResult(_0x51f97b,null))[_0x5c54('0x4b')](handleError(_0x51f97b,null));};exports['destroy']=function(_0x39b56f,_0x2748ca){return db[_0x5c54('0x51')]['find']({'where':{'id':_0x39b56f['params']['id']}})['then'](handleEntityNotFound(_0x2748ca,null))[_0x5c54('0x2a')](removeEntity(_0x2748ca,null))[_0x5c54('0x4b')](handleError(_0x2748ca,null));};exports[_0x5c54('0x52')]=function(_0x1ded5e,_0x13a49d,_0x50e6f9){var _0x36e7f6={};var _0x5e1eaa={};var _0x267dc7;var _0x30e922;return db[_0x5c54('0x51')][_0x5c54('0x53')]({'where':{'id':_0x1ded5e['params']['id']}})[_0x5c54('0x2a')](handleEntityNotFound(_0x13a49d,null))[_0x5c54('0x2a')](function(_0x4d18ea){if(_0x4d18ea){_0x267dc7=_0x4d18ea;_0x5e1eaa['model']=_[_0x5c54('0x34')](db['VtigerConfiguration'][_0x5c54('0x30')]);_0x5e1eaa[_0x5c54('0x35')]=_[_0x5c54('0x34')](_0x1ded5e[_0x5c54('0x35')]);_0x5e1eaa[_0x5c54('0x40')]=_['intersection'](_0x5e1eaa[_0x5c54('0x36')],_0x5e1eaa[_0x5c54('0x35')]);_0x36e7f6[_0x5c54('0x37')]=_[_0x5c54('0x38')](_0x5e1eaa[_0x5c54('0x36')],qs[_0x5c54('0x39')](_0x1ded5e[_0x5c54('0x35')][_0x5c54('0x39')]));_0x36e7f6['attributes']=_0x36e7f6['attributes']['length']?_0x36e7f6[_0x5c54('0x37')]:_0x5e1eaa['model'];_0x36e7f6[_0x5c54('0x3d')]=qs[_0x5c54('0x3e')](_0x1ded5e['query'][_0x5c54('0x3e')]);_0x36e7f6[_0x5c54('0x3f')]=qs[_0x5c54('0x40')](_['pick'](_0x1ded5e[_0x5c54('0x35')],_0x5e1eaa[_0x5c54('0x40')]));if(_0x1ded5e[_0x5c54('0x35')][_0x5c54('0x42')]){_0x36e7f6['where']=_[_0x5c54('0x43')](_0x36e7f6['where'],{'$or':_['map'](_0x36e7f6[_0x5c54('0x37')],function(_0x3b036e){var _0x7ed36b={};_0x7ed36b[_0x3b036e]={'$like':'%'+_0x1ded5e['query'][_0x5c54('0x42')]+'%'};return _0x7ed36b;})});}_0x36e7f6=_['merge']({},_0x36e7f6,_0x1ded5e['options']);return _0x267dc7[_0x5c54('0x52')](_0x36e7f6);}})[_0x5c54('0x2a')](function(_0x194679){if(_0x194679){_0x30e922=_0x194679[_0x5c54('0x3a')];if(!_0x1ded5e[_0x5c54('0x35')]['hasOwnProperty'](_0x5c54('0x3c'))){_0x36e7f6[_0x5c54('0x25')]=qs[_0x5c54('0x25')](_0x1ded5e[_0x5c54('0x35')][_0x5c54('0x25')]);_0x36e7f6[_0x5c54('0x23')]=qs[_0x5c54('0x23')](_0x1ded5e['query'][_0x5c54('0x23')]);}return _0x267dc7[_0x5c54('0x52')](_0x36e7f6);}})[_0x5c54('0x2a')](function(_0x4eafad){if(_0x4eafad){return _0x4eafad?{'count':_0x30e922,'rows':_0x4eafad}:null;}})[_0x5c54('0x2a')](respondWithResult(_0x13a49d,null))[_0x5c54('0x4b')](handleError(_0x13a49d,null));};exports[_0x5c54('0x54')]=function(_0x4088b4,_0x5d9be6,_0x1cb34d){if(_0x4088b4[_0x5c54('0x50')]['id']){delete _0x4088b4[_0x5c54('0x50')]['id'];}return db[_0x5c54('0x51')]['findOne']({'where':{'id':_0x4088b4[_0x5c54('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5d9be6,null))[_0x5c54('0x2a')](function(_0x4c4448){if(_0x4c4448){_0x4088b4[_0x5c54('0x50')]['AccountId']=_0x4c4448['id'];_0x4088b4['body'][_0x5c54('0x55')]=integrations[_0x5c54('0x56')](_0x4088b4['body'][_0x5c54('0x57')],_0x4088b4[_0x5c54('0x50')][_0x5c54('0x44')]);_0x4088b4[_0x5c54('0x50')][_0x5c54('0x58')]=integrations['getDescriptions'](_0x4088b4['body'][_0x5c54('0x57')],_0x4088b4['body'][_0x5c54('0x44')]);return db['VtigerConfiguration'][_0x5c54('0x4f')](_0x4088b4[_0x5c54('0x50')],{'include':[{'model':db[_0x5c54('0x59')],'as':_0x5c54('0x55')},{'model':db['VtigerField'],'as':_0x5c54('0x58')}]});}return null;})['then'](respondWithResult(_0x5d9be6,null))[_0x5c54('0x4b')](handleError(_0x5d9be6,null));};var md5=require(_0x5c54('0x5a'));exports[_0x5c54('0x5b')]=function(_0x309c6b,_0x4e0e6b,_0x50ab2e){var _0x56f5de=null;var _0xde8a62=null;var _0x8addbb=null;var _0x261202=null;var _0x13492a='';return db['VtigerAccount'][_0x5c54('0x53')]({'where':{'id':_0x309c6b[_0x5c54('0x4d')]['id']},'attributes':['id',_0x5c54('0x2e'),'username',_0x5c54('0x5c'),_0x5c54('0x5d'),'remoteUri',_0x5c54('0x5e'),_0x5c54('0x5f')]})[_0x5c54('0x2a')](handleEntityNotFound(_0x4e0e6b,null))[_0x5c54('0x2a')](function(_0xc13608){if(_0xc13608){_0x56f5de=_0xc13608[_0x5c54('0x60')];_0xde8a62=_0xc13608[_0x5c54('0x5f')];_0x8addbb=_0xc13608[_0x5c54('0x5d')];_0x13492a=_0xc13608[_0x5c54('0x61')];var _0x106a89=_0x13492a[_0x5c54('0x62')](-0x1);if(_0x106a89==='/'){_0x13492a=_0x13492a['substring'](0x0,_0x13492a[_0x5c54('0x63')](_0x106a89));}_0x261202=util[_0x5c54('0x64')](_0x5c54('0x65'),_0x13492a);var _0xc351e3={'method':'GET','uri':_0x261202,'qs':{'operation':'getchallenge','username':_0xc13608['username']},'json':!![]};return rp(_0xc351e3);}})[_0x5c54('0x2a')](function(_0x1f3103){if(_0x1f3103[_0x5c54('0x66')]){var _0x2313bd={'method':_0x5c54('0x67'),'uri':_0x261202,'form':{'operation':_0x5c54('0x68'),'username':_0x56f5de,'accessKey':md5(_0x1f3103['result']['token']+_0xde8a62)},'json':!![]};return rp(_0x2313bd);}})[_0x5c54('0x2a')](function(_0x4c5e37){if(_0x4c5e37['success']){var _0x1f5815={'method':_0x5c54('0x69'),'uri':_0x261202,'qs':{'operation':_0x5c54('0x6a'),'username':_0x56f5de,'sessionName':_0x4c5e37['result'][_0x5c54('0x6b')],'elementType':_0x8addbb},'json':!![]};return rp(_0x1f5815);}})[_0x5c54('0x2a')](function(_0x397a4f){if(_0x397a4f[_0x5c54('0x66')]){var _0x16f829=[_0x5c54('0x6c'),_0x5c54('0x6d'),_0x5c54('0x6e')];_['remove'](_0x397a4f['result'][_0x5c54('0x39')],function(_0x3c8ea1){return _0x16f829[_0x5c54('0x6f')](_0x3c8ea1[_0x5c54('0x44')][_0x5c54('0x2e')]);});_['remove'](_0x397a4f['result'][_0x5c54('0x39')],function(_0x362bbb){return _0x362bbb[_0x5c54('0x70')]===_0x5c54('0x71');});return{'count':_0x397a4f['result']['fields'][_0x5c54('0x3a')],'rows':_[_0x5c54('0x33')](_0x397a4f[_0x5c54('0x72')][_0x5c54('0x39')],function(_0x569ba1){return{'id':_0x569ba1[_0x5c54('0x2e')],'name':_0x569ba1[_0x5c54('0x73')],'custom':_[_0x5c54('0x74')](_0x569ba1[_0x5c54('0x2e')],_0x5c54('0x75'))?!![]:![],'options':_0x569ba1[_0x5c54('0x44')][_0x5c54('0x2e')]===_0x5c54('0x76')&&_0x569ba1['type'][_0x5c54('0x77')][_0x5c54('0x3a')]>0x0?_[_0x5c54('0x33')](_0x569ba1[_0x5c54('0x44')]['picklistValues'],function(_0x14cfd6){return{'name':_0x14cfd6[_0x5c54('0x73')],'value':_0x14cfd6[_0x5c54('0x78')]};}):[]};})};}})[_0x5c54('0x2a')](respondWithResult(_0x4e0e6b,null))[_0x5c54('0x4b')](function(_0x20f59c){console[_0x5c54('0x79')](_0x5c54('0x7a')+_0x20f59c);var _0x14ee15=_0x309c6b[_0x5c54('0x35')][_0x5c54('0x7b')]?0x1f4:_0x20f59c['statusCode']||0x1f4;logger[_0x5c54('0x2c')](_0x5c54('0x7c'),'getFields',_0x14ee15,JSON[_0x5c54('0x7d')](_0x20f59c));delete _0x20f59c[_0x5c54('0x2e')];if(_0x14ee15===0x191){_0x14ee15=0x190;}_0x4e0e6b['status'](_0x14ee15)[_0x5c54('0x7e')](_0x309c6b[_0x5c54('0x35')][_0x5c54('0x7b')]?{'message':'Wrong\x20credentials','statusCode':_0x20f59c['statusCode']}:_0x20f59c);});};
\ No newline at end of file
+var _0xe09e=['slice','substring','lastIndexOf','format','GET','success','POST','login','result','describe','autogenerated','reference','remove','editable','false','label','cf_','picklistValues','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','map','VtigerAccount','fieldName','type','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','show','keys','rawAttributes','includeAll','find','create','body','params','getConfigurations','findOne','VtigerConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','VtigerField','Descriptions','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey'];(function(_0x7abd7,_0x1ca3f9){var _0x3a2577=function(_0x18456d){while(--_0x18456d){_0x7abd7['push'](_0x7abd7['shift']());}};_0x3a2577(++_0x1ca3f9);}(_0xe09e,0x8c));var _0xee09=function(_0x4fa1b0,_0x3cafac){_0x4fa1b0=_0x4fa1b0-0x0;var _0x3c2e33=_0xe09e[_0x4fa1b0];return _0x3c2e33;};'use strict';var emlformat=require(_0xee09('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee09('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xee09('0x2'));var moment=require('moment');var BPromise=require(_0xee09('0x3'));var Mustache=require(_0xee09('0x4'));var util=require(_0xee09('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xee09('0x6'));var ejs=require(_0xee09('0x7'));var fs=require('fs');var fs_extra=require(_0xee09('0x8'));var _=require(_0xee09('0x9'));var squel=require(_0xee09('0xa'));var crypto=require(_0xee09('0xb'));var jsforce=require(_0xee09('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xee09('0x6'));var querystring=require(_0xee09('0xd'));var Papa=require('papaparse');var Redis=require(_0xee09('0xe'));var authService=require(_0xee09('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xee09('0x10'));var hardwareService=require(_0xee09('0x11'));var logger=require(_0xee09('0x12'))(_0xee09('0x13'));var utils=require(_0xee09('0x14'));var config=require(_0xee09('0x15'));var licenseUtil=require(_0xee09('0x16'));var db=require(_0xee09('0x17'))['db'];var integrations=require(_0xee09('0x18'));function respondWithStatusCode(_0xce239d,_0x4be38f){_0x4be38f=_0x4be38f||0xcc;return function(_0x2107a3){if(_0x2107a3){return _0xce239d[_0xee09('0x19')](_0x4be38f);}return _0xce239d[_0xee09('0x1a')](_0x4be38f)[_0xee09('0x1b')]();};}function respondWithResult(_0x487eaf,_0x24ffcf){_0x24ffcf=_0x24ffcf||0xc8;return function(_0x182353){if(_0x182353){return _0x487eaf['status'](_0x24ffcf)[_0xee09('0x1c')](_0x182353);}};}function respondWithFilteredResult(_0x48a8b4,_0x28422c){return function(_0x155b30){if(_0x155b30){var _0x56bacd=typeof _0x28422c[_0xee09('0x1d')]===_0xee09('0x1e')&&typeof _0x28422c[_0xee09('0x1f')]===_0xee09('0x1e');var _0xce20e7=_0x155b30[_0xee09('0x20')];var _0x48cb1e=_0x56bacd?0x0:_0x28422c[_0xee09('0x1d')];var _0x4e694c=_0x56bacd?_0x155b30[_0xee09('0x20')]:_0x28422c[_0xee09('0x1d')]+_0x28422c[_0xee09('0x1f')];var _0x48811f;if(_0x4e694c>=_0xce20e7){_0x4e694c=_0xce20e7;_0x48811f=0xc8;}else{_0x48811f=0xce;}_0x48a8b4[_0xee09('0x1a')](_0x48811f);return _0x48a8b4[_0xee09('0x21')](_0xee09('0x22'),_0x48cb1e+'-'+_0x4e694c+'/'+_0xce20e7)[_0xee09('0x1c')](_0x155b30);}return null;};}function patchUpdates(_0x52f07f){return function(_0x5dbc56){try{jsonpatch[_0xee09('0x23')](_0x5dbc56,_0x52f07f,!![]);}catch(_0xe26136){return BPromise['reject'](_0xe26136);}return _0x5dbc56[_0xee09('0x24')]();};}function saveUpdates(_0x56f873,_0x206af8){return function(_0x45bc4b){if(_0x45bc4b){return _0x45bc4b[_0xee09('0x25')](_0x56f873)[_0xee09('0x26')](function(_0x3cdd93){return _0x3cdd93;});}return null;};}function removeEntity(_0x411722,_0x2f5d61){return function(_0x3435da){if(_0x3435da){return _0x3435da[_0xee09('0x27')]()[_0xee09('0x26')](function(){_0x411722['status'](0xcc)[_0xee09('0x1b')]();});}};}function handleEntityNotFound(_0x28d9e8,_0xc5e828){return function(_0x4a422d){if(!_0x4a422d){_0x28d9e8['sendStatus'](0x194);}return _0x4a422d;};}function handleError(_0x42b6f0,_0x39c81e){_0x39c81e=_0x39c81e||0x1f4;return function(_0x1acd7f){logger[_0xee09('0x28')](_0x1acd7f['stack']);if(_0x1acd7f[_0xee09('0x29')]){delete _0x1acd7f['name'];}_0x42b6f0[_0xee09('0x1a')](_0x39c81e)[_0xee09('0x2a')](_0x1acd7f);};}exports[_0xee09('0x2b')]=function(_0x5ee80d,_0x139fc8){var _0x439bec={},_0xc47d4b={},_0x5122e9={'count':0x0,'rows':[]};var _0xef10e1=_[_0xee09('0x2c')](db[_0xee09('0x2d')]['rawAttributes'],function(_0x53016b){return{'name':_0x53016b[_0xee09('0x2e')],'type':_0x53016b[_0xee09('0x2f')]['key']};});_0xc47d4b[_0xee09('0x30')]=_[_0xee09('0x2c')](_0xef10e1,_0xee09('0x29'));_0xc47d4b['query']=_['keys'](_0x5ee80d[_0xee09('0x31')]);_0xc47d4b[_0xee09('0x32')]=_['intersection'](_0xc47d4b['model'],_0xc47d4b[_0xee09('0x31')]);_0x439bec[_0xee09('0x33')]=_[_0xee09('0x34')](_0xc47d4b['model'],qs[_0xee09('0x35')](_0x5ee80d[_0xee09('0x31')][_0xee09('0x35')]));_0x439bec[_0xee09('0x33')]=_0x439bec[_0xee09('0x33')][_0xee09('0x36')]?_0x439bec[_0xee09('0x33')]:_0xc47d4b['model'];if(!_0x5ee80d[_0xee09('0x31')]['hasOwnProperty'](_0xee09('0x37'))){_0x439bec[_0xee09('0x1f')]=qs['limit'](_0x5ee80d['query'][_0xee09('0x1f')]);_0x439bec[_0xee09('0x1d')]=qs['offset'](_0x5ee80d[_0xee09('0x31')][_0xee09('0x1d')]);}_0x439bec[_0xee09('0x38')]=qs[_0xee09('0x39')](_0x5ee80d[_0xee09('0x31')][_0xee09('0x39')]);_0x439bec['where']=qs[_0xee09('0x32')](_[_0xee09('0x3a')](_0x5ee80d['query'],_0xc47d4b[_0xee09('0x32')]),_0xef10e1);if(_0x5ee80d['query'][_0xee09('0x3b')]){_0x439bec['where']=_[_0xee09('0x3c')](_0x439bec[_0xee09('0x3d')],{'$or':_[_0xee09('0x2c')](_0xef10e1,function(_0x38d23a){if(_0x38d23a[_0xee09('0x2f')]!==_0xee09('0x3e')){var _0x4099ae={};_0x4099ae[_0x38d23a['name']]={'$like':'%'+_0x5ee80d[_0xee09('0x31')][_0xee09('0x3b')]+'%'};return _0x4099ae;}})});}_0x439bec=_['merge']({},_0x439bec,_0x5ee80d[_0xee09('0x3f')]);var _0xaa83c3={'where':_0x439bec[_0xee09('0x3d')]};return db['VtigerAccount'][_0xee09('0x20')](_0xaa83c3)[_0xee09('0x26')](function(_0x181d3a){_0x5122e9[_0xee09('0x20')]=_0x181d3a;if(_0x5ee80d[_0xee09('0x31')]['includeAll']){_0x439bec[_0xee09('0x40')]=[{'all':!![]}];}return db[_0xee09('0x2d')][_0xee09('0x41')](_0x439bec);})['then'](function(_0xc01e87){_0x5122e9[_0xee09('0x42')]=_0xc01e87;return _0x5122e9;})[_0xee09('0x26')](respondWithFilteredResult(_0x139fc8,_0x439bec))[_0xee09('0x43')](handleError(_0x139fc8,null));};exports[_0xee09('0x44')]=function(_0x2f49b3,_0x261d7b){var _0x1bda71={'raw':![],'where':{'id':_0x2f49b3['params']['id']}},_0x5d0822={};_0x5d0822[_0xee09('0x30')]=_[_0xee09('0x45')](db[_0xee09('0x2d')][_0xee09('0x46')]);_0x5d0822['query']=_[_0xee09('0x45')](_0x2f49b3[_0xee09('0x31')]);_0x5d0822[_0xee09('0x32')]=_[_0xee09('0x34')](_0x5d0822['model'],_0x5d0822['query']);_0x1bda71[_0xee09('0x33')]=_[_0xee09('0x34')](_0x5d0822[_0xee09('0x30')],qs['fields'](_0x2f49b3[_0xee09('0x31')][_0xee09('0x35')]));_0x1bda71[_0xee09('0x33')]=_0x1bda71[_0xee09('0x33')]['length']?_0x1bda71[_0xee09('0x33')]:_0x5d0822[_0xee09('0x30')];if(_0x2f49b3[_0xee09('0x31')][_0xee09('0x47')]){_0x1bda71[_0xee09('0x40')]=[{'all':!![]}];}_0x1bda71=_['merge']({},_0x1bda71,_0x2f49b3['options']);return db['VtigerAccount'][_0xee09('0x48')](_0x1bda71)['then'](handleEntityNotFound(_0x261d7b,null))['then'](respondWithResult(_0x261d7b,null))[_0xee09('0x43')](handleError(_0x261d7b,null));};exports['create']=function(_0x15d96c,_0x1daacb){return db['VtigerAccount'][_0xee09('0x49')](_0x15d96c[_0xee09('0x4a')],{})[_0xee09('0x26')](respondWithResult(_0x1daacb,0xc9))[_0xee09('0x43')](handleError(_0x1daacb,null));};exports[_0xee09('0x25')]=function(_0xccd8d6,_0x2ac440){if(_0xccd8d6[_0xee09('0x4a')]['id']){delete _0xccd8d6['body']['id'];}return db[_0xee09('0x2d')][_0xee09('0x48')]({'where':{'id':_0xccd8d6['params']['id']}})[_0xee09('0x26')](handleEntityNotFound(_0x2ac440,null))['then'](saveUpdates(_0xccd8d6[_0xee09('0x4a')],null))['then'](respondWithResult(_0x2ac440,null))[_0xee09('0x43')](handleError(_0x2ac440,null));};exports[_0xee09('0x27')]=function(_0x30df37,_0x272993){return db['VtigerAccount'][_0xee09('0x48')]({'where':{'id':_0x30df37[_0xee09('0x4b')]['id']}})[_0xee09('0x26')](handleEntityNotFound(_0x272993,null))['then'](removeEntity(_0x272993,null))[_0xee09('0x43')](handleError(_0x272993,null));};exports[_0xee09('0x4c')]=function(_0x296d3a,_0x3d700a,_0xa58db){var _0x582efb={};var _0x15bdb2={};var _0x3ff521;var _0x13e22e;return db[_0xee09('0x2d')][_0xee09('0x4d')]({'where':{'id':_0x296d3a[_0xee09('0x4b')]['id']}})[_0xee09('0x26')](handleEntityNotFound(_0x3d700a,null))[_0xee09('0x26')](function(_0x12c501){if(_0x12c501){_0x3ff521=_0x12c501;_0x15bdb2[_0xee09('0x30')]=_[_0xee09('0x45')](db[_0xee09('0x4e')][_0xee09('0x46')]);_0x15bdb2[_0xee09('0x31')]=_['keys'](_0x296d3a['query']);_0x15bdb2[_0xee09('0x32')]=_[_0xee09('0x34')](_0x15bdb2[_0xee09('0x30')],_0x15bdb2[_0xee09('0x31')]);_0x582efb['attributes']=_['intersection'](_0x15bdb2['model'],qs[_0xee09('0x35')](_0x296d3a[_0xee09('0x31')][_0xee09('0x35')]));_0x582efb[_0xee09('0x33')]=_0x582efb[_0xee09('0x33')][_0xee09('0x36')]?_0x582efb[_0xee09('0x33')]:_0x15bdb2[_0xee09('0x30')];_0x582efb['order']=qs[_0xee09('0x39')](_0x296d3a[_0xee09('0x31')][_0xee09('0x39')]);_0x582efb[_0xee09('0x3d')]=qs[_0xee09('0x32')](_[_0xee09('0x3a')](_0x296d3a[_0xee09('0x31')],_0x15bdb2[_0xee09('0x32')]));if(_0x296d3a[_0xee09('0x31')]['filter']){_0x582efb[_0xee09('0x3d')]=_[_0xee09('0x3c')](_0x582efb['where'],{'$or':_[_0xee09('0x2c')](_0x582efb[_0xee09('0x33')],function(_0x3c2206){var _0x16c00a={};_0x16c00a[_0x3c2206]={'$like':'%'+_0x296d3a[_0xee09('0x31')][_0xee09('0x3b')]+'%'};return _0x16c00a;})});}_0x582efb=_['merge']({},_0x582efb,_0x296d3a[_0xee09('0x3f')]);return _0x3ff521['getConfigurations'](_0x582efb);}})[_0xee09('0x26')](function(_0x40a34c){if(_0x40a34c){_0x13e22e=_0x40a34c['length'];if(!_0x296d3a[_0xee09('0x31')][_0xee09('0x4f')](_0xee09('0x37'))){_0x582efb[_0xee09('0x1f')]=qs[_0xee09('0x1f')](_0x296d3a[_0xee09('0x31')][_0xee09('0x1f')]);_0x582efb['offset']=qs[_0xee09('0x1d')](_0x296d3a[_0xee09('0x31')][_0xee09('0x1d')]);}return _0x3ff521[_0xee09('0x4c')](_0x582efb);}})[_0xee09('0x26')](function(_0x1390e6){if(_0x1390e6){return _0x1390e6?{'count':_0x13e22e,'rows':_0x1390e6}:null;}})[_0xee09('0x26')](respondWithResult(_0x3d700a,null))[_0xee09('0x43')](handleError(_0x3d700a,null));};exports[_0xee09('0x50')]=function(_0x546047,_0x40c9d9,_0x2e560){if(_0x546047[_0xee09('0x4a')]['id']){delete _0x546047[_0xee09('0x4a')]['id'];}return db[_0xee09('0x2d')][_0xee09('0x4d')]({'where':{'id':_0x546047[_0xee09('0x4b')]['id']}})[_0xee09('0x26')](handleEntityNotFound(_0x40c9d9,null))[_0xee09('0x26')](function(_0x2f9019){if(_0x2f9019){_0x546047[_0xee09('0x4a')][_0xee09('0x51')]=_0x2f9019['id'];_0x546047[_0xee09('0x4a')][_0xee09('0x52')]=integrations[_0xee09('0x53')](_0x546047[_0xee09('0x4a')][_0xee09('0x54')],_0x546047['body'][_0xee09('0x2f')]);_0x546047[_0xee09('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x546047['body'][_0xee09('0x54')],_0x546047[_0xee09('0x4a')]['type']);return db[_0xee09('0x4e')][_0xee09('0x49')](_0x546047['body'],{'include':[{'model':db[_0xee09('0x55')],'as':'Subjects'},{'model':db[_0xee09('0x55')],'as':_0xee09('0x56')}]});}return null;})['then'](respondWithResult(_0x40c9d9,null))[_0xee09('0x43')](handleError(_0x40c9d9,null));};var md5=require(_0xee09('0x57'));exports[_0xee09('0x58')]=function(_0x1b5e14,_0x4625f5,_0x3f00a7){var _0x33bba0=null;var _0xb3a7d9=null;var _0x53d626=null;var _0x297563=null;var _0x3afc25='';return db['VtigerAccount'][_0xee09('0x4d')]({'where':{'id':_0x1b5e14[_0xee09('0x4b')]['id']},'attributes':['id',_0xee09('0x29'),_0xee09('0x59'),'description',_0xee09('0x5a'),_0xee09('0x5b'),_0xee09('0x5c'),_0xee09('0x5d')]})[_0xee09('0x26')](handleEntityNotFound(_0x4625f5,null))[_0xee09('0x26')](function(_0x1165a4){if(_0x1165a4){_0x33bba0=_0x1165a4[_0xee09('0x59')];_0xb3a7d9=_0x1165a4[_0xee09('0x5d')];_0x53d626=_0x1165a4[_0xee09('0x5a')];_0x3afc25=_0x1165a4[_0xee09('0x5b')];var _0x5b6876=_0x3afc25[_0xee09('0x5e')](-0x1);if(_0x5b6876==='/'){_0x3afc25=_0x3afc25[_0xee09('0x5f')](0x0,_0x3afc25[_0xee09('0x60')](_0x5b6876));}_0x297563=util[_0xee09('0x61')]('%s/webservice.php',_0x3afc25);var _0x24f73={'method':_0xee09('0x62'),'uri':_0x297563,'qs':{'operation':'getchallenge','username':_0x1165a4['username']},'json':!![]};return rp(_0x24f73);}})[_0xee09('0x26')](function(_0x26fad9){if(_0x26fad9[_0xee09('0x63')]){var _0x17b9ba={'method':_0xee09('0x64'),'uri':_0x297563,'form':{'operation':_0xee09('0x65'),'username':_0x33bba0,'accessKey':md5(_0x26fad9[_0xee09('0x66')]['token']+_0xb3a7d9)},'json':!![]};return rp(_0x17b9ba);}})[_0xee09('0x26')](function(_0x75860e){if(_0x75860e['success']){var _0x5c292a={'method':_0xee09('0x62'),'uri':_0x297563,'qs':{'operation':_0xee09('0x67'),'username':_0x33bba0,'sessionName':_0x75860e[_0xee09('0x66')]['sessionName'],'elementType':_0x53d626},'json':!![]};return rp(_0x5c292a);}})[_0xee09('0x26')](function(_0x593c02){if(_0x593c02[_0xee09('0x63')]){var _0x28e7ea=[_0xee09('0x68'),_0xee09('0x69'),'owner'];_[_0xee09('0x6a')](_0x593c02[_0xee09('0x66')][_0xee09('0x35')],function(_0xc68d48){return _0x28e7ea['includes'](_0xc68d48['type'][_0xee09('0x29')]);});_['remove'](_0x593c02[_0xee09('0x66')][_0xee09('0x35')],function(_0x37f519){return _0x37f519[_0xee09('0x6b')]===_0xee09('0x6c');});return{'count':_0x593c02[_0xee09('0x66')][_0xee09('0x35')]['length'],'rows':_['map'](_0x593c02[_0xee09('0x66')]['fields'],function(_0x390530){return{'id':_0x390530[_0xee09('0x29')],'name':_0x390530[_0xee09('0x6d')],'custom':_['startsWith'](_0x390530[_0xee09('0x29')],_0xee09('0x6e'))?!![]:![],'options':_0x390530[_0xee09('0x2f')][_0xee09('0x29')]==='picklist'&&_0x390530[_0xee09('0x2f')]['picklistValues'][_0xee09('0x36')]>0x0?_[_0xee09('0x2c')](_0x390530[_0xee09('0x2f')][_0xee09('0x6f')],function(_0x4b398a){return{'name':_0x4b398a[_0xee09('0x6d')],'value':_0x4b398a['value']};}):[]};})};}})[_0xee09('0x26')](respondWithResult(_0x4625f5,null))[_0xee09('0x43')](function(_0x5a290c){console['log'](_0xee09('0x70')+_0x5a290c);var _0x5acf73=_0x1b5e14[_0xee09('0x31')][_0xee09('0x71')]?0x1f4:_0x5a290c[_0xee09('0x72')]||0x1f4;logger['error'](_0xee09('0x73'),_0xee09('0x58'),_0x5acf73,JSON[_0xee09('0x74')](_0x5a290c));delete _0x5a290c[_0xee09('0x29')];if(_0x5acf73===0x191){_0x5acf73=0x190;}_0x4625f5[_0xee09('0x1a')](_0x5acf73)['send'](_0x1b5e14[_0xee09('0x31')][_0xee09('0x71')]?{'message':'Wrong\x20credentials','statusCode':_0x5a290c[_0xee09('0x72')]}:_0x5a290c);});};
\ No newline at end of file
index fe3a719..995812c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd41f=['exports','define','int_vtiger_accounts','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration'];(function(_0x1f83a5,_0x59843f){var _0x45edf0=function(_0x431e25){while(--_0x431e25){_0x1f83a5['push'](_0x1f83a5['shift']());}};_0x45edf0(++_0x59843f);}(_0xd41f,0x7b));var _0xfd41=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd41f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xfd41('0x0'));var logger=require(_0xfd41('0x1'))('api');var moment=require(_0xfd41('0x2'));var BPromise=require('bluebird');var rp=require(_0xfd41('0x3'));var fs=require('fs');var path=require(_0xfd41('0x4'));var rimraf=require(_0xfd41('0x5'));var config=require(_0xfd41('0x6'));var attributes=require(_0xfd41('0x7'));var integrations=require(_0xfd41('0x8'));module[_0xfd41('0x9')]=function(_0x438107,_0x1da21c){return _0x438107[_0xfd41('0xa')]('VtigerAccount',attributes,{'tableName':_0xfd41('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcaf5=['int_vtiger_accounts','lodash','../../config/logger','api','moment','request-promise','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount'];(function(_0x138208,_0x140722){var _0x4f93b5=function(_0x1df020){while(--_0x1df020){_0x138208['push'](_0x138208['shift']());}};_0x4f93b5(++_0x140722);}(_0xcaf5,0x12a));var _0x5caf=function(_0x279cff,_0x424090){_0x279cff=_0x279cff-0x0;var _0x28627b=_0xcaf5[_0x279cff];return _0x28627b;};'use strict';var _=require(_0x5caf('0x0'));var util=require('util');var logger=require(_0x5caf('0x1'))(_0x5caf('0x2'));var moment=require(_0x5caf('0x3'));var BPromise=require('bluebird');var rp=require(_0x5caf('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5caf('0x5'));var config=require('../../config/environment');var attributes=require(_0x5caf('0x6'));var integrations=require(_0x5caf('0x7'));module[_0x5caf('0x8')]=function(_0x569497,_0x5a3512){return _0x569497['define'](_0x5caf('0x9'),attributes,{'tableName':_0x5caf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27047d4..919f508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['error','message','result','catch','GetVtigerAccount','VtigerAccount','options','raw','where','attributes','map','include','model','ShowVtigerAccount','stringify','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s'];(function(_0x2e78f2,_0x44c025){var _0x5310b7=function(_0x185f39){while(--_0x185f39){_0x2e78f2['push'](_0x2e78f2['shift']());}};_0x5310b7(++_0x44c025);}(_0x2e54,0x1dd));var _0x42e5=function(_0x354663,_0x23e994){_0x354663=_0x354663-0x0;var _0x5bbba1=_0x2e54[_0x354663];return _0x5bbba1;};'use strict';var _=require(_0x42e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x42e5('0x1'));var rs=require(_0x42e5('0x2'));var fs=require('fs');var Redis=require(_0x42e5('0x3'));var db=require(_0x42e5('0x4'))['db'];var utils=require(_0x42e5('0x5'));var logger=require(_0x42e5('0x6'))(_0x42e5('0x7'));var config=require('../../config/environment');var jayson=require(_0x42e5('0x8'));var client=jayson[_0x42e5('0x9')][_0x42e5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4bed10,_0x2af5bb,_0x56be20){return new BPromise(function(_0x335b92,_0x490b99){return client[_0x42e5('0xb')](_0x4bed10,_0x56be20)[_0x42e5('0xc')](function(_0x10ee5a){logger[_0x42e5('0xd')](_0x42e5('0xe'),_0x2af5bb,_0x42e5('0xf'));logger[_0x42e5('0x10')](_0x42e5('0x11'),_0x2af5bb,_0x42e5('0xf'),JSON['stringify'](_0x10ee5a));if(_0x10ee5a[_0x42e5('0x12')]){if(_0x10ee5a[_0x42e5('0x12')]['code']===0x1f4){logger[_0x42e5('0x12')](_0x42e5('0xe'),_0x2af5bb,_0x10ee5a[_0x42e5('0x12')][_0x42e5('0x13')]);return _0x490b99(_0x10ee5a[_0x42e5('0x12')][_0x42e5('0x13')]);}logger[_0x42e5('0x12')](_0x42e5('0xe'),_0x2af5bb,_0x10ee5a[_0x42e5('0x12')][_0x42e5('0x13')]);return _0x335b92(_0x10ee5a['error'][_0x42e5('0x13')]);}else{logger[_0x42e5('0xd')](_0x42e5('0xe'),_0x2af5bb,_0x42e5('0xf'));_0x335b92(_0x10ee5a[_0x42e5('0x14')][_0x42e5('0x13')]);}})[_0x42e5('0x15')](function(_0x3abe3d){logger[_0x42e5('0x12')](_0x42e5('0xe'),_0x2af5bb,_0x3abe3d);_0x490b99(_0x3abe3d);});});}exports[_0x42e5('0x16')]=function(_0x38282d){var _0x11550e=this;return new Promise(function(_0x23fe09,_0x54fcfc){return db[_0x42e5('0x17')]['findAll']({'raw':_0x38282d['options']?_0x38282d[_0x42e5('0x18')][_0x42e5('0x19')]===undefined?!![]:![]:!![],'where':_0x38282d['options']?_0x38282d[_0x42e5('0x18')][_0x42e5('0x1a')]||null:null,'attributes':_0x38282d[_0x42e5('0x18')]?_0x38282d[_0x42e5('0x18')][_0x42e5('0x1b')]||null:null,'limit':_0x38282d[_0x42e5('0x18')]?_0x38282d[_0x42e5('0x18')]['limit']||null:null,'include':_0x38282d['options']?_0x38282d[_0x42e5('0x18')]['include']?_[_0x42e5('0x1c')](_0x38282d[_0x42e5('0x18')][_0x42e5('0x1d')],function(_0x49490f){return{'model':db[_0x49490f[_0x42e5('0x1e')]],'as':_0x49490f['as'],'attributes':_0x49490f['attributes'],'include':_0x49490f[_0x42e5('0x1d')]?_[_0x42e5('0x1c')](_0x49490f[_0x42e5('0x1d')],function(_0x275c80){return{'model':db[_0x275c80[_0x42e5('0x1e')]],'as':_0x275c80['as'],'attributes':_0x275c80['attributes'],'include':_0x275c80['include']?_[_0x42e5('0x1c')](_0x275c80['include'],function(_0x56f812){return{'model':db[_0x56f812[_0x42e5('0x1e')]],'as':_0x56f812['as'],'attributes':_0x56f812['attributes']};}):[]};}):[]};}):[]:[]})[_0x42e5('0xc')](function(_0x2d9e65){logger[_0x42e5('0xd')](_0x42e5('0x16'),_0x38282d);logger[_0x42e5('0x10')](_0x42e5('0x16'),_0x38282d,JSON['stringify'](_0x2d9e65));_0x23fe09(_0x2d9e65);})[_0x42e5('0x15')](function(_0x201d9e){logger[_0x42e5('0x12')](_0x42e5('0x16'),_0x201d9e[_0x42e5('0x13')],_0x38282d);_0x54fcfc(_0x11550e[_0x42e5('0x12')](0x1f4,_0x201d9e[_0x42e5('0x13')]));});});};exports[_0x42e5('0x1f')]=function(_0x5a4930){var _0x2ba9ef=this;return new Promise(function(_0x2c7542,_0x3d9e8b){return db[_0x42e5('0x17')]['find']({'raw':_0x5a4930[_0x42e5('0x18')]?_0x5a4930[_0x42e5('0x18')][_0x42e5('0x19')]===undefined?!![]:![]:!![],'where':_0x5a4930[_0x42e5('0x18')]?_0x5a4930['options']['where']||null:null,'attributes':_0x5a4930[_0x42e5('0x18')]?_0x5a4930['options'][_0x42e5('0x1b')]||null:null,'include':_0x5a4930['options']?_0x5a4930[_0x42e5('0x18')][_0x42e5('0x1d')]?_[_0x42e5('0x1c')](_0x5a4930['options'][_0x42e5('0x1d')],function(_0x3a8d1c){return{'model':db[_0x3a8d1c['model']],'as':_0x3a8d1c['as'],'attributes':_0x3a8d1c[_0x42e5('0x1b')],'include':_0x3a8d1c['include']?_[_0x42e5('0x1c')](_0x3a8d1c[_0x42e5('0x1d')],function(_0x25a040){return{'model':db[_0x25a040[_0x42e5('0x1e')]],'as':_0x25a040['as'],'attributes':_0x25a040[_0x42e5('0x1b')],'include':_0x25a040[_0x42e5('0x1d')]?_[_0x42e5('0x1c')](_0x25a040['include'],function(_0x5a18cc){return{'model':db[_0x5a18cc[_0x42e5('0x1e')]],'as':_0x5a18cc['as'],'attributes':_0x5a18cc[_0x42e5('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x42e5('0xc')](function(_0x4a1a8a){logger['info']('ShowVtigerAccount',_0x5a4930);logger['debug'](_0x42e5('0x1f'),_0x5a4930,JSON[_0x42e5('0x20')](_0x4a1a8a));_0x2c7542(_0x4a1a8a);})[_0x42e5('0x15')](function(_0xedb7bc){logger[_0x42e5('0x12')](_0x42e5('0x1f'),_0xedb7bc[_0x42e5('0x13')],_0x5a4930);_0x3d9e8b(_0x2ba9ef[_0x42e5('0x12')](0x1f4,_0xedb7bc['message']));});});};
\ No newline at end of file
+var _0xac4a=['info','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','VtigerAccount,\x20%s,\x20%s','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','limit','include','model','attributes','map','ShowVtigerAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then'];(function(_0x4ff712,_0x1d225e){var _0x49c743=function(_0x2e1565){while(--_0x2e1565){_0x4ff712['push'](_0x4ff712['shift']());}};_0x49c743(++_0x1d225e);}(_0xac4a,0x13f));var _0xaac4=function(_0x5516bc,_0x31a104){_0x5516bc=_0x5516bc-0x0;var _0x36281c=_0xac4a[_0x5516bc];return _0x36281c;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('VtigerAccount,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}exports[_0xaac4('0x15')]=function(_0x52085a){var _0x220630=this;return new Promise(function(_0x5b6fd6,_0x3ce35a){return db[_0xaac4('0x16')][_0xaac4('0x17')]({'raw':_0x52085a[_0xaac4('0x18')]?_0x52085a[_0xaac4('0x18')][_0xaac4('0x19')]===undefined?!![]:![]:!![],'where':_0x52085a[_0xaac4('0x18')]?_0x52085a[_0xaac4('0x18')][_0xaac4('0x1a')]||null:null,'attributes':_0x52085a['options']?_0x52085a[_0xaac4('0x18')]['attributes']||null:null,'limit':_0x52085a[_0xaac4('0x18')]?_0x52085a[_0xaac4('0x18')][_0xaac4('0x1b')]||null:null,'include':_0x52085a[_0xaac4('0x18')]?_0x52085a[_0xaac4('0x18')][_0xaac4('0x1c')]?_['map'](_0x52085a[_0xaac4('0x18')][_0xaac4('0x1c')],function(_0x174860){return{'model':db[_0x174860[_0xaac4('0x1d')]],'as':_0x174860['as'],'attributes':_0x174860[_0xaac4('0x1e')],'include':_0x174860[_0xaac4('0x1c')]?_[_0xaac4('0x1f')](_0x174860['include'],function(_0x24186b){return{'model':db[_0x24186b['model']],'as':_0x24186b['as'],'attributes':_0x24186b['attributes'],'include':_0x24186b['include']?_['map'](_0x24186b[_0xaac4('0x1c')],function(_0x17d25f){return{'model':db[_0x17d25f[_0xaac4('0x1d')]],'as':_0x17d25f['as'],'attributes':_0x17d25f[_0xaac4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xaac4('0xa')](function(_0x249a5d){logger[_0xaac4('0xb')](_0xaac4('0x15'),_0x52085a);logger[_0xaac4('0xc')](_0xaac4('0x15'),_0x52085a,JSON['stringify'](_0x249a5d));_0x5b6fd6(_0x249a5d);})[_0xaac4('0x14')](function(_0x16b33c){logger[_0xaac4('0x10')](_0xaac4('0x15'),_0x16b33c[_0xaac4('0x12')],_0x52085a);_0x3ce35a(_0x220630[_0xaac4('0x10')](0x1f4,_0x16b33c['message']));});});};exports[_0xaac4('0x20')]=function(_0x5d2c9a){var _0x2df7e3=this;return new Promise(function(_0xab5d04,_0x182343){return db[_0xaac4('0x16')]['find']({'raw':_0x5d2c9a['options']?_0x5d2c9a['options'][_0xaac4('0x19')]===undefined?!![]:![]:!![],'where':_0x5d2c9a[_0xaac4('0x18')]?_0x5d2c9a[_0xaac4('0x18')][_0xaac4('0x1a')]||null:null,'attributes':_0x5d2c9a[_0xaac4('0x18')]?_0x5d2c9a[_0xaac4('0x18')][_0xaac4('0x1e')]||null:null,'include':_0x5d2c9a[_0xaac4('0x18')]?_0x5d2c9a[_0xaac4('0x18')][_0xaac4('0x1c')]?_[_0xaac4('0x1f')](_0x5d2c9a[_0xaac4('0x18')][_0xaac4('0x1c')],function(_0x3b93e5){return{'model':db[_0x3b93e5[_0xaac4('0x1d')]],'as':_0x3b93e5['as'],'attributes':_0x3b93e5['attributes'],'include':_0x3b93e5['include']?_[_0xaac4('0x1f')](_0x3b93e5[_0xaac4('0x1c')],function(_0xa07d0){return{'model':db[_0xa07d0['model']],'as':_0xa07d0['as'],'attributes':_0xa07d0[_0xaac4('0x1e')],'include':_0xa07d0[_0xaac4('0x1c')]?_[_0xaac4('0x1f')](_0xa07d0[_0xaac4('0x1c')],function(_0x1ec59d){return{'model':db[_0x1ec59d[_0xaac4('0x1d')]],'as':_0x1ec59d['as'],'attributes':_0x1ec59d[_0xaac4('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36591a){logger[_0xaac4('0xb')](_0xaac4('0x20'),_0x5d2c9a);logger['debug'](_0xaac4('0x20'),_0x5d2c9a,JSON['stringify'](_0x36591a));_0xab5d04(_0x36591a);})['catch'](function(_0x344d05){logger[_0xaac4('0x10')](_0xaac4('0x20'),_0x344d05['message'],_0x5d2c9a);_0x182343(_0x2df7e3['error'](0x1f4,_0x344d05[_0xaac4('0x12')]));});});};
\ No newline at end of file
index 98b7702..f7578d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77d=['post','create','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x53f648,_0x164d4d){var _0xd3ee15=function(_0x595067){while(--_0x595067){_0x53f648['push'](_0x53f648['shift']());}};_0xd3ee15(++_0x164d4d);}(_0xa77d,0x103));var _0xda77=function(_0x9c22da,_0xd059c3){_0x9c22da=_0x9c22da-0x0;var _0x386c9a=_0xa77d[_0x9c22da];return _0x386c9a;};'use strict';var multer=require(_0xda77('0x0'));var util=require(_0xda77('0x1'));var path=require(_0xda77('0x2'));var timeout=require('connect-timeout');var express=require(_0xda77('0x3'));var router=express[_0xda77('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xda77('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xda77('0x6'));var controller=require(_0xda77('0x7'));router[_0xda77('0x8')]('/',auth[_0xda77('0x9')](),controller[_0xda77('0xa')]);router[_0xda77('0x8')](_0xda77('0xb'),auth[_0xda77('0x9')](),controller['show']);router[_0xda77('0x8')](_0xda77('0xc'),auth[_0xda77('0x9')](),controller[_0xda77('0xd')]);router[_0xda77('0x8')](_0xda77('0xe'),auth['isAuthenticated'](),controller[_0xda77('0xf')]);router['get'](_0xda77('0x10'),auth[_0xda77('0x9')](),controller['getDescriptions']);router[_0xda77('0x11')]('/',auth['isAuthenticated'](),controller[_0xda77('0x12')]);router['put'](_0xda77('0xb'),auth[_0xda77('0x9')](),controller[_0xda77('0x13')]);router[_0xda77('0x14')]('/:id',auth[_0xda77('0x9')](),controller[_0xda77('0x15')]);module[_0xda77('0x16')]=router;
\ No newline at end of file
+var _0x4ce1=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','exports'];(function(_0x37be2a,_0x27458e){var _0x3e22f7=function(_0x35a098){while(--_0x35a098){_0x37be2a['push'](_0x37be2a['shift']());}};_0x3e22f7(++_0x27458e);}(_0x4ce1,0x159));var _0x14ce=function(_0x4bc94d,_0x43db89){_0x4bc94d=_0x4bc94d-0x0;var _0x203f70=_0x4ce1[_0x4bc94d];return _0x203f70;};'use strict';var multer=require(_0x14ce('0x0'));var util=require('util');var path=require(_0x14ce('0x1'));var timeout=require(_0x14ce('0x2'));var express=require('express');var router=express[_0x14ce('0x3')]();var fs_extra=require(_0x14ce('0x4'));var auth=require(_0x14ce('0x5'));var interaction=require(_0x14ce('0x6'));var config=require(_0x14ce('0x7'));var controller=require(_0x14ce('0x8'));router[_0x14ce('0x9')]('/',auth['isAuthenticated'](),controller[_0x14ce('0xa')]);router[_0x14ce('0x9')](_0x14ce('0xb'),auth[_0x14ce('0xc')](),controller[_0x14ce('0xd')]);router[_0x14ce('0x9')](_0x14ce('0xe'),auth[_0x14ce('0xc')](),controller['getFields']);router[_0x14ce('0x9')](_0x14ce('0xf'),auth[_0x14ce('0xc')](),controller['getSubjects']);router[_0x14ce('0x9')](_0x14ce('0x10'),auth[_0x14ce('0xc')](),controller[_0x14ce('0x11')]);router[_0x14ce('0x12')]('/',auth[_0x14ce('0xc')](),controller[_0x14ce('0x13')]);router[_0x14ce('0x14')](_0x14ce('0xb'),auth[_0x14ce('0xc')](),controller[_0x14ce('0x15')]);router['delete'](_0x14ce('0xb'),auth[_0x14ce('0xc')](),controller['destroy']);module[_0x14ce('0x16')]=router;
\ No newline at end of file
index 5783898..c09dc2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe16=['STRING','sequelize'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xbe16,0x15b));var _0x6be1=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0xbe16[_0x4ed520];return _0x4415a6;};'use strict';var Sequelize=require(_0x6be1('0x0'));module['exports']={'name':{'type':Sequelize[_0x6be1('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x242f=['exports','STRING'];(function(_0x13606d,_0x30f265){var _0x1b85b0=function(_0x285c1b){while(--_0x285c1b){_0x13606d['push'](_0x13606d['shift']());}};_0x1b85b0(++_0x30f265);}(_0x242f,0x18c));var _0xf242=function(_0xa91c8b,_0x178735){_0xa91c8b=_0xa91c8b-0x0;var _0x16cace=_0x242f[_0xa91c8b];return _0x16cace;};'use strict';var Sequelize=require('sequelize');module[_0xf242('0x0')]={'name':{'type':Sequelize[_0xf242('0x1')]},'description':{'type':Sequelize[_0xf242('0x1')]}};
\ No newline at end of file
index 753e2d5..887f368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x279c=['ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','update','destroy','then','end','error','stack','name','send','index','map','rawAttributes','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','VtigerConfiguration','includeAll','include','findAll','catch','show','params','find','create','body','findOne','getFields','getSubjects','VtigerField','order','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x16ac3a,_0x5d4714){var _0xc0fb60=function(_0x22022e){while(--_0x22022e){_0x16ac3a['push'](_0x16ac3a['shift']());}};_0xc0fb60(++_0x5d4714);}(_0x279c,0x193));var _0xc279=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x279c[_0x487b0c];return _0x1adbdc;};'use strict';var emlformat=require(_0xc279('0x0'));var rimraf=require(_0xc279('0x1'));var zipdir=require(_0xc279('0x2'));var jsonpatch=require(_0xc279('0x3'));var rp=require(_0xc279('0x4'));var moment=require(_0xc279('0x5'));var BPromise=require(_0xc279('0x6'));var Mustache=require(_0xc279('0x7'));var util=require(_0xc279('0x8'));var path=require(_0xc279('0x9'));var sox=require(_0xc279('0xa'));var csv=require(_0xc279('0xb'));var ejs=require(_0xc279('0xc'));var fs=require('fs');var fs_extra=require(_0xc279('0xd'));var _=require('lodash');var squel=require(_0xc279('0xe'));var crypto=require(_0xc279('0xf'));var jsforce=require(_0xc279('0x10'));var deskjs=require(_0xc279('0x11'));var toCsv=require(_0xc279('0xb'));var querystring=require(_0xc279('0x12'));var Papa=require(_0xc279('0x13'));var Redis=require('ioredis');var authService=require(_0xc279('0x14'));var qs=require(_0xc279('0x15'));var as=require(_0xc279('0x16'));var hardwareService=require(_0xc279('0x17'));var logger=require('../../config/logger')(_0xc279('0x18'));var utils=require(_0xc279('0x19'));var config=require(_0xc279('0x1a'));var licenseUtil=require(_0xc279('0x1b'));var db=require(_0xc279('0x1c'))['db'];function respondWithStatusCode(_0x5086e1,_0xc949f0){_0xc949f0=_0xc949f0||0xcc;return function(_0x299945){if(_0x299945){return _0x5086e1[_0xc279('0x1d')](_0xc949f0);}return _0x5086e1[_0xc279('0x1e')](_0xc949f0)['end']();};}function respondWithResult(_0x53c399,_0x33aafe){_0x33aafe=_0x33aafe||0xc8;return function(_0x57c8f3){if(_0x57c8f3){return _0x53c399[_0xc279('0x1e')](_0x33aafe)[_0xc279('0x1f')](_0x57c8f3);}};}function respondWithFilteredResult(_0x242d55,_0x156df0){return function(_0x267410){if(_0x267410){var _0x1819ca=typeof _0x156df0[_0xc279('0x20')]===_0xc279('0x21')&&typeof _0x156df0[_0xc279('0x22')]==='undefined';var _0xc757b9=_0x267410['count'];var _0x1fa834=_0x1819ca?0x0:_0x156df0[_0xc279('0x20')];var _0x3d392f=_0x1819ca?_0x267410[_0xc279('0x23')]:_0x156df0[_0xc279('0x20')]+_0x156df0[_0xc279('0x22')];var _0x320fba;if(_0x3d392f>=_0xc757b9){_0x3d392f=_0xc757b9;_0x320fba=0xc8;}else{_0x320fba=0xce;}_0x242d55[_0xc279('0x1e')](_0x320fba);return _0x242d55['set'](_0xc279('0x24'),_0x1fa834+'-'+_0x3d392f+'/'+_0xc757b9)[_0xc279('0x1f')](_0x267410);}return null;};}function patchUpdates(_0x24a647){return function(_0x22e845){try{jsonpatch['apply'](_0x22e845,_0x24a647,!![]);}catch(_0x3c19cc){return BPromise[_0xc279('0x25')](_0x3c19cc);}return _0x22e845['save']();};}function saveUpdates(_0x432a8a,_0x3499a0){return function(_0x1ad9a6){if(_0x1ad9a6){return _0x1ad9a6[_0xc279('0x26')](_0x432a8a)['then'](function(_0x5b5640){return _0x5b5640;});}return null;};}function removeEntity(_0x1334b8,_0x5512be){return function(_0x1bb0f0){if(_0x1bb0f0){return _0x1bb0f0[_0xc279('0x27')]()[_0xc279('0x28')](function(){_0x1334b8[_0xc279('0x1e')](0xcc)[_0xc279('0x29')]();});}};}function handleEntityNotFound(_0x3360cc,_0x38ad0a){return function(_0x27ff0e){if(!_0x27ff0e){_0x3360cc[_0xc279('0x1d')](0x194);}return _0x27ff0e;};}function handleError(_0xf45d84,_0x122449){_0x122449=_0x122449||0x1f4;return function(_0x17a36e){logger[_0xc279('0x2a')](_0x17a36e[_0xc279('0x2b')]);if(_0x17a36e['name']){delete _0x17a36e[_0xc279('0x2c')];}_0xf45d84[_0xc279('0x1e')](_0x122449)[_0xc279('0x2d')](_0x17a36e);};}exports[_0xc279('0x2e')]=function(_0x1dd48b,_0xf05400){var _0x1d7920={},_0x11b186={},_0x474038={'count':0x0,'rows':[]};var _0x34a47a=_[_0xc279('0x2f')](db['VtigerConfiguration'][_0xc279('0x30')],function(_0x2913e0){return{'name':_0x2913e0['fieldName'],'type':_0x2913e0[_0xc279('0x31')]['key']};});_0x11b186[_0xc279('0x32')]=_[_0xc279('0x2f')](_0x34a47a,_0xc279('0x2c'));_0x11b186[_0xc279('0x33')]=_[_0xc279('0x34')](_0x1dd48b[_0xc279('0x33')]);_0x11b186['filters']=_['intersection'](_0x11b186[_0xc279('0x32')],_0x11b186[_0xc279('0x33')]);_0x1d7920[_0xc279('0x35')]=_[_0xc279('0x36')](_0x11b186[_0xc279('0x32')],qs[_0xc279('0x37')](_0x1dd48b[_0xc279('0x33')][_0xc279('0x37')]));_0x1d7920[_0xc279('0x35')]=_0x1d7920['attributes'][_0xc279('0x38')]?_0x1d7920[_0xc279('0x35')]:_0x11b186[_0xc279('0x32')];if(!_0x1dd48b['query'][_0xc279('0x39')](_0xc279('0x3a'))){_0x1d7920[_0xc279('0x22')]=qs['limit'](_0x1dd48b[_0xc279('0x33')][_0xc279('0x22')]);_0x1d7920[_0xc279('0x20')]=qs['offset'](_0x1dd48b[_0xc279('0x33')][_0xc279('0x20')]);}_0x1d7920['order']=qs[_0xc279('0x3b')](_0x1dd48b['query']['sort']);_0x1d7920[_0xc279('0x3c')]=qs['filters'](_[_0xc279('0x3d')](_0x1dd48b[_0xc279('0x33')],_0x11b186[_0xc279('0x3e')]),_0x34a47a);if(_0x1dd48b[_0xc279('0x33')][_0xc279('0x3f')]){_0x1d7920[_0xc279('0x3c')]=_[_0xc279('0x40')](_0x1d7920[_0xc279('0x3c')],{'$or':_['map'](_0x34a47a,function(_0x249fbd){if(_0x249fbd['type']!==_0xc279('0x41')){var _0x4c4d13={};_0x4c4d13[_0x249fbd['name']]={'$like':'%'+_0x1dd48b[_0xc279('0x33')][_0xc279('0x3f')]+'%'};return _0x4c4d13;}})});}_0x1d7920=_[_0xc279('0x40')]({},_0x1d7920,_0x1dd48b[_0xc279('0x42')]);var _0x481cc5={'where':_0x1d7920[_0xc279('0x3c')]};return db[_0xc279('0x43')][_0xc279('0x23')](_0x481cc5)['then'](function(_0x3cf173){_0x474038[_0xc279('0x23')]=_0x3cf173;if(_0x1dd48b[_0xc279('0x33')][_0xc279('0x44')]){_0x1d7920[_0xc279('0x45')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0xc279('0x46')](_0x1d7920);})[_0xc279('0x28')](function(_0x171a59){_0x474038['rows']=_0x171a59;return _0x474038;})['then'](respondWithFilteredResult(_0xf05400,_0x1d7920))[_0xc279('0x47')](handleError(_0xf05400,null));};exports[_0xc279('0x48')]=function(_0x3021e4,_0x3381fe){var _0x24cf9c={'raw':![],'where':{'id':_0x3021e4[_0xc279('0x49')]['id']}},_0x56b6c4={};_0x56b6c4[_0xc279('0x32')]=_[_0xc279('0x34')](db['VtigerConfiguration'][_0xc279('0x30')]);_0x56b6c4[_0xc279('0x33')]=_[_0xc279('0x34')](_0x3021e4[_0xc279('0x33')]);_0x56b6c4['filters']=_[_0xc279('0x36')](_0x56b6c4[_0xc279('0x32')],_0x56b6c4[_0xc279('0x33')]);_0x24cf9c['attributes']=_[_0xc279('0x36')](_0x56b6c4['model'],qs[_0xc279('0x37')](_0x3021e4['query'][_0xc279('0x37')]));_0x24cf9c[_0xc279('0x35')]=_0x24cf9c[_0xc279('0x35')][_0xc279('0x38')]?_0x24cf9c[_0xc279('0x35')]:_0x56b6c4[_0xc279('0x32')];if(_0x3021e4[_0xc279('0x33')]['includeAll']){_0x24cf9c[_0xc279('0x45')]=[{'all':!![]}];}_0x24cf9c=_[_0xc279('0x40')]({},_0x24cf9c,_0x3021e4[_0xc279('0x42')]);return db[_0xc279('0x43')][_0xc279('0x4a')](_0x24cf9c)[_0xc279('0x28')](handleEntityNotFound(_0x3381fe,null))[_0xc279('0x28')](respondWithResult(_0x3381fe,null))['catch'](handleError(_0x3381fe,null));};exports[_0xc279('0x4b')]=function(_0x3331a0,_0x11c714){return db[_0xc279('0x43')][_0xc279('0x4b')](_0x3331a0[_0xc279('0x4c')],{})[_0xc279('0x28')](respondWithResult(_0x11c714,0xc9))[_0xc279('0x47')](handleError(_0x11c714,null));};exports[_0xc279('0x26')]=function(_0x221766,_0x20d23e){if(_0x221766[_0xc279('0x4c')]['id']){delete _0x221766[_0xc279('0x4c')]['id'];}return db['VtigerConfiguration'][_0xc279('0x4a')]({'where':{'id':_0x221766['params']['id']}})[_0xc279('0x28')](handleEntityNotFound(_0x20d23e,null))['then'](saveUpdates(_0x221766[_0xc279('0x4c')],null))[_0xc279('0x28')](respondWithResult(_0x20d23e,null))[_0xc279('0x47')](handleError(_0x20d23e,null));};exports[_0xc279('0x27')]=function(_0x1340b6,_0x110f49){return db[_0xc279('0x43')][_0xc279('0x4a')]({'where':{'id':_0x1340b6[_0xc279('0x49')]['id']}})[_0xc279('0x28')](handleEntityNotFound(_0x110f49,null))[_0xc279('0x28')](removeEntity(_0x110f49,null))[_0xc279('0x47')](handleError(_0x110f49,null));};exports['getFields']=function(_0x4fbaaa,_0x432aec,_0x2a4227){var _0x9744c={};var _0x13dd7f={};var _0x3d3790;var _0xe80e91;return db[_0xc279('0x43')][_0xc279('0x4d')]({'where':{'id':_0x4fbaaa['params']['id']}})[_0xc279('0x28')](handleEntityNotFound(_0x432aec,null))[_0xc279('0x28')](function(_0x37185b){if(_0x37185b){_0x3d3790=_0x37185b;_0x13dd7f[_0xc279('0x32')]=_[_0xc279('0x34')](db['VtigerField'][_0xc279('0x30')]);_0x13dd7f['query']=_['keys'](_0x4fbaaa['query']);_0x13dd7f[_0xc279('0x3e')]=_[_0xc279('0x36')](_0x13dd7f['model'],_0x13dd7f[_0xc279('0x33')]);_0x9744c[_0xc279('0x35')]=_['intersection'](_0x13dd7f[_0xc279('0x32')],qs[_0xc279('0x37')](_0x4fbaaa[_0xc279('0x33')][_0xc279('0x37')]));_0x9744c[_0xc279('0x35')]=_0x9744c['attributes'][_0xc279('0x38')]?_0x9744c[_0xc279('0x35')]:_0x13dd7f[_0xc279('0x32')];_0x9744c['order']=qs[_0xc279('0x3b')](_0x4fbaaa[_0xc279('0x33')][_0xc279('0x3b')]);_0x9744c[_0xc279('0x3c')]=qs[_0xc279('0x3e')](_[_0xc279('0x3d')](_0x4fbaaa['query'],_0x13dd7f[_0xc279('0x3e')]));if(_0x4fbaaa[_0xc279('0x33')][_0xc279('0x3f')]){_0x9744c['where']=_[_0xc279('0x40')](_0x9744c[_0xc279('0x3c')],{'$or':_['map'](_0x9744c[_0xc279('0x35')],function(_0x47191e){var _0x56d156={};_0x56d156[_0x47191e]={'$like':'%'+_0x4fbaaa['query'][_0xc279('0x3f')]+'%'};return _0x56d156;})});}_0x9744c=_[_0xc279('0x40')]({},_0x9744c,_0x4fbaaa[_0xc279('0x42')]);return _0x3d3790[_0xc279('0x4e')](_0x9744c);}})['then'](function(_0x1a09b1){if(_0x1a09b1){_0xe80e91=_0x1a09b1[_0xc279('0x38')];if(!_0x4fbaaa[_0xc279('0x33')][_0xc279('0x39')]('nolimit')){_0x9744c['limit']=qs[_0xc279('0x22')](_0x4fbaaa[_0xc279('0x33')]['limit']);_0x9744c[_0xc279('0x20')]=qs['offset'](_0x4fbaaa[_0xc279('0x33')][_0xc279('0x20')]);}return _0x3d3790[_0xc279('0x4e')](_0x9744c);}})['then'](function(_0x4c09a2){if(_0x4c09a2){return _0x4c09a2?{'count':_0xe80e91,'rows':_0x4c09a2}:null;}})['then'](respondWithResult(_0x432aec,null))[_0xc279('0x47')](handleError(_0x432aec,null));};exports[_0xc279('0x4f')]=function(_0x53051a,_0x18663b,_0x1f3db2){var _0x36796b={};var _0xc9203c={};var _0x349df3;var _0x3d27f0;return db[_0xc279('0x43')]['findOne']({'where':{'id':_0x53051a[_0xc279('0x49')]['id']}})['then'](handleEntityNotFound(_0x18663b,null))[_0xc279('0x28')](function(_0x60d630){if(_0x60d630){_0x349df3=_0x60d630;_0xc9203c[_0xc279('0x32')]=_[_0xc279('0x34')](db[_0xc279('0x50')][_0xc279('0x30')]);_0xc9203c['query']=_[_0xc279('0x34')](_0x53051a[_0xc279('0x33')]);_0xc9203c['filters']=_['intersection'](_0xc9203c['model'],_0xc9203c['query']);_0x36796b['attributes']=_[_0xc279('0x36')](_0xc9203c['model'],qs[_0xc279('0x37')](_0x53051a[_0xc279('0x33')][_0xc279('0x37')]));_0x36796b[_0xc279('0x35')]=_0x36796b[_0xc279('0x35')][_0xc279('0x38')]?_0x36796b['attributes']:_0xc9203c[_0xc279('0x32')];_0x36796b[_0xc279('0x51')]=qs[_0xc279('0x3b')](_0x53051a['query']['sort']);_0x36796b[_0xc279('0x3c')]=qs[_0xc279('0x3e')](_['pick'](_0x53051a[_0xc279('0x33')],_0xc9203c[_0xc279('0x3e')]));if(_0x53051a[_0xc279('0x33')]['filter']){_0x36796b[_0xc279('0x3c')]=_[_0xc279('0x40')](_0x36796b[_0xc279('0x3c')],{'$or':_[_0xc279('0x2f')](_0x36796b[_0xc279('0x35')],function(_0x437eed){var _0x393b39={};_0x393b39[_0x437eed]={'$like':'%'+_0x53051a[_0xc279('0x33')][_0xc279('0x3f')]+'%'};return _0x393b39;})});}_0x36796b=_['merge']({},_0x36796b,_0x53051a[_0xc279('0x42')]);return _0x349df3[_0xc279('0x4f')](_0x36796b);}})[_0xc279('0x28')](function(_0x2dce57){if(_0x2dce57){_0x3d27f0=_0x2dce57[_0xc279('0x38')];if(!_0x53051a['query']['hasOwnProperty'](_0xc279('0x3a'))){_0x36796b[_0xc279('0x22')]=qs['limit'](_0x53051a[_0xc279('0x33')][_0xc279('0x22')]);_0x36796b[_0xc279('0x20')]=qs[_0xc279('0x20')](_0x53051a['query'][_0xc279('0x20')]);}return _0x349df3[_0xc279('0x4f')](_0x36796b);}})[_0xc279('0x28')](function(_0x638e21){if(_0x638e21){return _0x638e21?{'count':_0x3d27f0,'rows':_0x638e21}:null;}})[_0xc279('0x28')](respondWithResult(_0x18663b,null))[_0xc279('0x47')](handleError(_0x18663b,null));};exports['getDescriptions']=function(_0xadb600,_0x3685fa,_0x5439da){var _0x2037fb={};var _0x49f836={};var _0x5b9040;var _0x4898a1;return db[_0xc279('0x43')][_0xc279('0x4d')]({'where':{'id':_0xadb600[_0xc279('0x49')]['id']}})['then'](handleEntityNotFound(_0x3685fa,null))[_0xc279('0x28')](function(_0x20d3dc){if(_0x20d3dc){_0x5b9040=_0x20d3dc;_0x49f836[_0xc279('0x32')]=_[_0xc279('0x34')](db[_0xc279('0x50')][_0xc279('0x30')]);_0x49f836[_0xc279('0x33')]=_[_0xc279('0x34')](_0xadb600[_0xc279('0x33')]);_0x49f836['filters']=_[_0xc279('0x36')](_0x49f836[_0xc279('0x32')],_0x49f836['query']);_0x2037fb[_0xc279('0x35')]=_[_0xc279('0x36')](_0x49f836[_0xc279('0x32')],qs[_0xc279('0x37')](_0xadb600['query'][_0xc279('0x37')]));_0x2037fb[_0xc279('0x35')]=_0x2037fb[_0xc279('0x35')][_0xc279('0x38')]?_0x2037fb['attributes']:_0x49f836[_0xc279('0x32')];_0x2037fb[_0xc279('0x51')]=qs[_0xc279('0x3b')](_0xadb600[_0xc279('0x33')]['sort']);_0x2037fb['where']=qs[_0xc279('0x3e')](_[_0xc279('0x3d')](_0xadb600[_0xc279('0x33')],_0x49f836['filters']));if(_0xadb600['query'][_0xc279('0x3f')]){_0x2037fb['where']=_[_0xc279('0x40')](_0x2037fb['where'],{'$or':_[_0xc279('0x2f')](_0x2037fb[_0xc279('0x35')],function(_0x53cd5b){var _0x518f30={};_0x518f30[_0x53cd5b]={'$like':'%'+_0xadb600[_0xc279('0x33')][_0xc279('0x3f')]+'%'};return _0x518f30;})});}_0x2037fb=_[_0xc279('0x40')]({},_0x2037fb,_0xadb600[_0xc279('0x42')]);return _0x5b9040[_0xc279('0x52')](_0x2037fb);}})[_0xc279('0x28')](function(_0x14823e){if(_0x14823e){_0x4898a1=_0x14823e['length'];if(!_0xadb600[_0xc279('0x33')]['hasOwnProperty'](_0xc279('0x3a'))){_0x2037fb['limit']=qs[_0xc279('0x22')](_0xadb600[_0xc279('0x33')][_0xc279('0x22')]);_0x2037fb[_0xc279('0x20')]=qs[_0xc279('0x20')](_0xadb600[_0xc279('0x33')]['offset']);}return _0x5b9040[_0xc279('0x52')](_0x2037fb);}})[_0xc279('0x28')](function(_0x7de8fe){if(_0x7de8fe){return _0x7de8fe?{'count':_0x4898a1,'rows':_0x7de8fe}:null;}})[_0xc279('0x28')](respondWithResult(_0x3685fa,null))[_0xc279('0x47')](handleError(_0x3685fa,null));};
\ No newline at end of file
+var _0x2d72=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','VtigerConfiguration','findAll','rows','catch','params','includeAll','include','create','body','find','getFields','findOne','VtigerField','filter','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes'];(function(_0x357e06,_0x17e4e9){var _0x137954=function(_0x3b9080){while(--_0x3b9080){_0x357e06['push'](_0x357e06['shift']());}};_0x137954(++_0x17e4e9);}(_0x2d72,0x119));var _0x22d7=function(_0x548e4f,_0x3be945){_0x548e4f=_0x548e4f-0x0;var _0x5df3e9=_0x2d72[_0x548e4f];return _0x5df3e9;};'use strict';var emlformat=require(_0x22d7('0x0'));var rimraf=require(_0x22d7('0x1'));var zipdir=require(_0x22d7('0x2'));var jsonpatch=require(_0x22d7('0x3'));var rp=require(_0x22d7('0x4'));var moment=require('moment');var BPromise=require(_0x22d7('0x5'));var Mustache=require(_0x22d7('0x6'));var util=require(_0x22d7('0x7'));var path=require(_0x22d7('0x8'));var sox=require(_0x22d7('0x9'));var csv=require(_0x22d7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x22d7('0xb'));var squel=require(_0x22d7('0xc'));var crypto=require(_0x22d7('0xd'));var jsforce=require(_0x22d7('0xe'));var deskjs=require(_0x22d7('0xf'));var toCsv=require(_0x22d7('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x22d7('0x10'));var authService=require(_0x22d7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x22d7('0x12'));var hardwareService=require(_0x22d7('0x13'));var logger=require(_0x22d7('0x14'))(_0x22d7('0x15'));var utils=require('../../config/utils');var config=require(_0x22d7('0x16'));var licenseUtil=require(_0x22d7('0x17'));var db=require(_0x22d7('0x18'))['db'];function respondWithStatusCode(_0x7b0196,_0x25fad6){_0x25fad6=_0x25fad6||0xcc;return function(_0x228fd3){if(_0x228fd3){return _0x7b0196[_0x22d7('0x19')](_0x25fad6);}return _0x7b0196[_0x22d7('0x1a')](_0x25fad6)['end']();};}function respondWithResult(_0x5396e9,_0x3c0da8){_0x3c0da8=_0x3c0da8||0xc8;return function(_0x5803c9){if(_0x5803c9){return _0x5396e9[_0x22d7('0x1a')](_0x3c0da8)[_0x22d7('0x1b')](_0x5803c9);}};}function respondWithFilteredResult(_0x282b28,_0x440b97){return function(_0x2eba82){if(_0x2eba82){var _0x5ec4db=typeof _0x440b97[_0x22d7('0x1c')]===_0x22d7('0x1d')&&typeof _0x440b97[_0x22d7('0x1e')]===_0x22d7('0x1d');var _0x4c8c83=_0x2eba82[_0x22d7('0x1f')];var _0x2f7f9a=_0x5ec4db?0x0:_0x440b97['offset'];var _0x430bc2=_0x5ec4db?_0x2eba82[_0x22d7('0x1f')]:_0x440b97[_0x22d7('0x1c')]+_0x440b97[_0x22d7('0x1e')];var _0x31f78c;if(_0x430bc2>=_0x4c8c83){_0x430bc2=_0x4c8c83;_0x31f78c=0xc8;}else{_0x31f78c=0xce;}_0x282b28[_0x22d7('0x1a')](_0x31f78c);return _0x282b28[_0x22d7('0x20')](_0x22d7('0x21'),_0x2f7f9a+'-'+_0x430bc2+'/'+_0x4c8c83)[_0x22d7('0x1b')](_0x2eba82);}return null;};}function patchUpdates(_0x276e20){return function(_0x2b6989){try{jsonpatch[_0x22d7('0x22')](_0x2b6989,_0x276e20,!![]);}catch(_0x3e1183){return BPromise[_0x22d7('0x23')](_0x3e1183);}return _0x2b6989['save']();};}function saveUpdates(_0x39d586,_0x4bd24b){return function(_0x504bd2){if(_0x504bd2){return _0x504bd2[_0x22d7('0x24')](_0x39d586)[_0x22d7('0x25')](function(_0x3978d0){return _0x3978d0;});}return null;};}function removeEntity(_0x5444fe,_0x578dee){return function(_0x54d683){if(_0x54d683){return _0x54d683[_0x22d7('0x26')]()[_0x22d7('0x25')](function(){_0x5444fe[_0x22d7('0x1a')](0xcc)[_0x22d7('0x27')]();});}};}function handleEntityNotFound(_0x5c7421,_0x12f509){return function(_0x37f3a7){if(!_0x37f3a7){_0x5c7421['sendStatus'](0x194);}return _0x37f3a7;};}function handleError(_0xace3e5,_0x4c67a7){_0x4c67a7=_0x4c67a7||0x1f4;return function(_0xdc1e8f){logger[_0x22d7('0x28')](_0xdc1e8f[_0x22d7('0x29')]);if(_0xdc1e8f[_0x22d7('0x2a')]){delete _0xdc1e8f[_0x22d7('0x2a')];}_0xace3e5[_0x22d7('0x1a')](_0x4c67a7)[_0x22d7('0x2b')](_0xdc1e8f);};}exports[_0x22d7('0x2c')]=function(_0x1b2838,_0x4a69dc){var _0x4b05dc={},_0x3c22b3={},_0x159014={'count':0x0,'rows':[]};var _0x2e76ac=_[_0x22d7('0x2d')](db['VtigerConfiguration'][_0x22d7('0x2e')],function(_0x563a04){return{'name':_0x563a04['fieldName'],'type':_0x563a04[_0x22d7('0x2f')][_0x22d7('0x30')]};});_0x3c22b3[_0x22d7('0x31')]=_['map'](_0x2e76ac,'name');_0x3c22b3[_0x22d7('0x32')]=_[_0x22d7('0x33')](_0x1b2838[_0x22d7('0x32')]);_0x3c22b3[_0x22d7('0x34')]=_[_0x22d7('0x35')](_0x3c22b3[_0x22d7('0x31')],_0x3c22b3['query']);_0x4b05dc[_0x22d7('0x36')]=_[_0x22d7('0x35')](_0x3c22b3['model'],qs[_0x22d7('0x37')](_0x1b2838[_0x22d7('0x32')][_0x22d7('0x37')]));_0x4b05dc[_0x22d7('0x36')]=_0x4b05dc[_0x22d7('0x36')][_0x22d7('0x38')]?_0x4b05dc['attributes']:_0x3c22b3[_0x22d7('0x31')];if(!_0x1b2838[_0x22d7('0x32')][_0x22d7('0x39')](_0x22d7('0x3a'))){_0x4b05dc['limit']=qs['limit'](_0x1b2838[_0x22d7('0x32')][_0x22d7('0x1e')]);_0x4b05dc['offset']=qs[_0x22d7('0x1c')](_0x1b2838[_0x22d7('0x32')]['offset']);}_0x4b05dc[_0x22d7('0x3b')]=qs['sort'](_0x1b2838[_0x22d7('0x32')][_0x22d7('0x3c')]);_0x4b05dc[_0x22d7('0x3d')]=qs[_0x22d7('0x34')](_[_0x22d7('0x3e')](_0x1b2838[_0x22d7('0x32')],_0x3c22b3['filters']),_0x2e76ac);if(_0x1b2838[_0x22d7('0x32')]['filter']){_0x4b05dc['where']=_[_0x22d7('0x3f')](_0x4b05dc[_0x22d7('0x3d')],{'$or':_[_0x22d7('0x2d')](_0x2e76ac,function(_0x5959e2){if(_0x5959e2[_0x22d7('0x2f')]!==_0x22d7('0x40')){var _0x3ecd49={};_0x3ecd49[_0x5959e2[_0x22d7('0x2a')]]={'$like':'%'+_0x1b2838[_0x22d7('0x32')]['filter']+'%'};return _0x3ecd49;}})});}_0x4b05dc=_[_0x22d7('0x3f')]({},_0x4b05dc,_0x1b2838[_0x22d7('0x41')]);var _0x533aa0={'where':_0x4b05dc['where']};return db[_0x22d7('0x42')][_0x22d7('0x1f')](_0x533aa0)[_0x22d7('0x25')](function(_0x171139){_0x159014[_0x22d7('0x1f')]=_0x171139;if(_0x1b2838[_0x22d7('0x32')]['includeAll']){_0x4b05dc['include']=[{'all':!![]}];}return db[_0x22d7('0x42')][_0x22d7('0x43')](_0x4b05dc);})['then'](function(_0xa705b1){_0x159014[_0x22d7('0x44')]=_0xa705b1;return _0x159014;})[_0x22d7('0x25')](respondWithFilteredResult(_0x4a69dc,_0x4b05dc))[_0x22d7('0x45')](handleError(_0x4a69dc,null));};exports['show']=function(_0x210607,_0x551001){var _0x159884={'raw':![],'where':{'id':_0x210607[_0x22d7('0x46')]['id']}},_0x2fddd9={};_0x2fddd9['model']=_[_0x22d7('0x33')](db[_0x22d7('0x42')][_0x22d7('0x2e')]);_0x2fddd9[_0x22d7('0x32')]=_[_0x22d7('0x33')](_0x210607['query']);_0x2fddd9[_0x22d7('0x34')]=_[_0x22d7('0x35')](_0x2fddd9[_0x22d7('0x31')],_0x2fddd9[_0x22d7('0x32')]);_0x159884['attributes']=_[_0x22d7('0x35')](_0x2fddd9[_0x22d7('0x31')],qs[_0x22d7('0x37')](_0x210607[_0x22d7('0x32')]['fields']));_0x159884['attributes']=_0x159884['attributes'][_0x22d7('0x38')]?_0x159884[_0x22d7('0x36')]:_0x2fddd9[_0x22d7('0x31')];if(_0x210607[_0x22d7('0x32')][_0x22d7('0x47')]){_0x159884[_0x22d7('0x48')]=[{'all':!![]}];}_0x159884=_[_0x22d7('0x3f')]({},_0x159884,_0x210607[_0x22d7('0x41')]);return db[_0x22d7('0x42')]['find'](_0x159884)[_0x22d7('0x25')](handleEntityNotFound(_0x551001,null))[_0x22d7('0x25')](respondWithResult(_0x551001,null))[_0x22d7('0x45')](handleError(_0x551001,null));};exports[_0x22d7('0x49')]=function(_0x41e269,_0x2e04d5){return db[_0x22d7('0x42')][_0x22d7('0x49')](_0x41e269[_0x22d7('0x4a')],{})[_0x22d7('0x25')](respondWithResult(_0x2e04d5,0xc9))[_0x22d7('0x45')](handleError(_0x2e04d5,null));};exports[_0x22d7('0x24')]=function(_0x44093b,_0x2d7d36){if(_0x44093b['body']['id']){delete _0x44093b[_0x22d7('0x4a')]['id'];}return db[_0x22d7('0x42')][_0x22d7('0x4b')]({'where':{'id':_0x44093b['params']['id']}})['then'](handleEntityNotFound(_0x2d7d36,null))[_0x22d7('0x25')](saveUpdates(_0x44093b[_0x22d7('0x4a')],null))[_0x22d7('0x25')](respondWithResult(_0x2d7d36,null))['catch'](handleError(_0x2d7d36,null));};exports[_0x22d7('0x26')]=function(_0x48654e,_0x26226c){return db[_0x22d7('0x42')]['find']({'where':{'id':_0x48654e[_0x22d7('0x46')]['id']}})[_0x22d7('0x25')](handleEntityNotFound(_0x26226c,null))['then'](removeEntity(_0x26226c,null))[_0x22d7('0x45')](handleError(_0x26226c,null));};exports[_0x22d7('0x4c')]=function(_0x3d7af1,_0xd316cb,_0x57ed4c){var _0x346ffe={};var _0x40b75c={};var _0x708973;var _0x3c409b;return db[_0x22d7('0x42')][_0x22d7('0x4d')]({'where':{'id':_0x3d7af1[_0x22d7('0x46')]['id']}})[_0x22d7('0x25')](handleEntityNotFound(_0xd316cb,null))['then'](function(_0x585c1b){if(_0x585c1b){_0x708973=_0x585c1b;_0x40b75c[_0x22d7('0x31')]=_[_0x22d7('0x33')](db[_0x22d7('0x4e')][_0x22d7('0x2e')]);_0x40b75c[_0x22d7('0x32')]=_[_0x22d7('0x33')](_0x3d7af1[_0x22d7('0x32')]);_0x40b75c[_0x22d7('0x34')]=_['intersection'](_0x40b75c[_0x22d7('0x31')],_0x40b75c[_0x22d7('0x32')]);_0x346ffe[_0x22d7('0x36')]=_['intersection'](_0x40b75c[_0x22d7('0x31')],qs[_0x22d7('0x37')](_0x3d7af1['query'][_0x22d7('0x37')]));_0x346ffe[_0x22d7('0x36')]=_0x346ffe[_0x22d7('0x36')]['length']?_0x346ffe[_0x22d7('0x36')]:_0x40b75c[_0x22d7('0x31')];_0x346ffe[_0x22d7('0x3b')]=qs[_0x22d7('0x3c')](_0x3d7af1[_0x22d7('0x32')][_0x22d7('0x3c')]);_0x346ffe['where']=qs['filters'](_[_0x22d7('0x3e')](_0x3d7af1[_0x22d7('0x32')],_0x40b75c['filters']));if(_0x3d7af1['query'][_0x22d7('0x4f')]){_0x346ffe['where']=_[_0x22d7('0x3f')](_0x346ffe[_0x22d7('0x3d')],{'$or':_['map'](_0x346ffe[_0x22d7('0x36')],function(_0x1691c7){var _0x3bdb46={};_0x3bdb46[_0x1691c7]={'$like':'%'+_0x3d7af1[_0x22d7('0x32')][_0x22d7('0x4f')]+'%'};return _0x3bdb46;})});}_0x346ffe=_[_0x22d7('0x3f')]({},_0x346ffe,_0x3d7af1[_0x22d7('0x41')]);return _0x708973[_0x22d7('0x4c')](_0x346ffe);}})[_0x22d7('0x25')](function(_0x3ce95d){if(_0x3ce95d){_0x3c409b=_0x3ce95d['length'];if(!_0x3d7af1[_0x22d7('0x32')][_0x22d7('0x39')](_0x22d7('0x3a'))){_0x346ffe[_0x22d7('0x1e')]=qs[_0x22d7('0x1e')](_0x3d7af1['query'][_0x22d7('0x1e')]);_0x346ffe[_0x22d7('0x1c')]=qs[_0x22d7('0x1c')](_0x3d7af1[_0x22d7('0x32')][_0x22d7('0x1c')]);}return _0x708973[_0x22d7('0x4c')](_0x346ffe);}})[_0x22d7('0x25')](function(_0x441aa7){if(_0x441aa7){return _0x441aa7?{'count':_0x3c409b,'rows':_0x441aa7}:null;}})[_0x22d7('0x25')](respondWithResult(_0xd316cb,null))[_0x22d7('0x45')](handleError(_0xd316cb,null));};exports['getSubjects']=function(_0x33f379,_0x1bb109,_0x4adda7){var _0x1188a2={};var _0x50d347={};var _0xac8cdb;var _0x18390f;return db[_0x22d7('0x42')][_0x22d7('0x4d')]({'where':{'id':_0x33f379['params']['id']}})[_0x22d7('0x25')](handleEntityNotFound(_0x1bb109,null))[_0x22d7('0x25')](function(_0x3fc00f){if(_0x3fc00f){_0xac8cdb=_0x3fc00f;_0x50d347['model']=_[_0x22d7('0x33')](db[_0x22d7('0x4e')]['rawAttributes']);_0x50d347['query']=_[_0x22d7('0x33')](_0x33f379[_0x22d7('0x32')]);_0x50d347[_0x22d7('0x34')]=_[_0x22d7('0x35')](_0x50d347[_0x22d7('0x31')],_0x50d347[_0x22d7('0x32')]);_0x1188a2[_0x22d7('0x36')]=_['intersection'](_0x50d347['model'],qs['fields'](_0x33f379['query'][_0x22d7('0x37')]));_0x1188a2[_0x22d7('0x36')]=_0x1188a2[_0x22d7('0x36')][_0x22d7('0x38')]?_0x1188a2['attributes']:_0x50d347[_0x22d7('0x31')];_0x1188a2['order']=qs[_0x22d7('0x3c')](_0x33f379[_0x22d7('0x32')][_0x22d7('0x3c')]);_0x1188a2[_0x22d7('0x3d')]=qs[_0x22d7('0x34')](_['pick'](_0x33f379['query'],_0x50d347[_0x22d7('0x34')]));if(_0x33f379[_0x22d7('0x32')]['filter']){_0x1188a2[_0x22d7('0x3d')]=_[_0x22d7('0x3f')](_0x1188a2[_0x22d7('0x3d')],{'$or':_[_0x22d7('0x2d')](_0x1188a2[_0x22d7('0x36')],function(_0x448313){var _0x266bb5={};_0x266bb5[_0x448313]={'$like':'%'+_0x33f379['query'][_0x22d7('0x4f')]+'%'};return _0x266bb5;})});}_0x1188a2=_[_0x22d7('0x3f')]({},_0x1188a2,_0x33f379[_0x22d7('0x41')]);return _0xac8cdb[_0x22d7('0x50')](_0x1188a2);}})[_0x22d7('0x25')](function(_0x2a1aeb){if(_0x2a1aeb){_0x18390f=_0x2a1aeb[_0x22d7('0x38')];if(!_0x33f379[_0x22d7('0x32')]['hasOwnProperty']('nolimit')){_0x1188a2[_0x22d7('0x1e')]=qs[_0x22d7('0x1e')](_0x33f379[_0x22d7('0x32')][_0x22d7('0x1e')]);_0x1188a2['offset']=qs[_0x22d7('0x1c')](_0x33f379['query'][_0x22d7('0x1c')]);}return _0xac8cdb['getSubjects'](_0x1188a2);}})[_0x22d7('0x25')](function(_0x33d9fd){if(_0x33d9fd){return _0x33d9fd?{'count':_0x18390f,'rows':_0x33d9fd}:null;}})['then'](respondWithResult(_0x1bb109,null))[_0x22d7('0x45')](handleError(_0x1bb109,null));};exports['getDescriptions']=function(_0x425435,_0x50c7ee,_0x107dc7){var _0x4adfa3={};var _0x377647={};var _0x11d74f;var _0x37346;return db[_0x22d7('0x42')][_0x22d7('0x4d')]({'where':{'id':_0x425435[_0x22d7('0x46')]['id']}})[_0x22d7('0x25')](handleEntityNotFound(_0x50c7ee,null))[_0x22d7('0x25')](function(_0x2a85fc){if(_0x2a85fc){_0x11d74f=_0x2a85fc;_0x377647['model']=_[_0x22d7('0x33')](db[_0x22d7('0x4e')][_0x22d7('0x2e')]);_0x377647[_0x22d7('0x32')]=_[_0x22d7('0x33')](_0x425435[_0x22d7('0x32')]);_0x377647['filters']=_[_0x22d7('0x35')](_0x377647[_0x22d7('0x31')],_0x377647[_0x22d7('0x32')]);_0x4adfa3[_0x22d7('0x36')]=_[_0x22d7('0x35')](_0x377647[_0x22d7('0x31')],qs[_0x22d7('0x37')](_0x425435[_0x22d7('0x32')]['fields']));_0x4adfa3['attributes']=_0x4adfa3['attributes'][_0x22d7('0x38')]?_0x4adfa3[_0x22d7('0x36')]:_0x377647['model'];_0x4adfa3[_0x22d7('0x3b')]=qs['sort'](_0x425435[_0x22d7('0x32')][_0x22d7('0x3c')]);_0x4adfa3[_0x22d7('0x3d')]=qs[_0x22d7('0x34')](_[_0x22d7('0x3e')](_0x425435[_0x22d7('0x32')],_0x377647[_0x22d7('0x34')]));if(_0x425435[_0x22d7('0x32')][_0x22d7('0x4f')]){_0x4adfa3[_0x22d7('0x3d')]=_[_0x22d7('0x3f')](_0x4adfa3['where'],{'$or':_[_0x22d7('0x2d')](_0x4adfa3[_0x22d7('0x36')],function(_0x28a400){var _0x10797d={};_0x10797d[_0x28a400]={'$like':'%'+_0x425435[_0x22d7('0x32')][_0x22d7('0x4f')]+'%'};return _0x10797d;})});}_0x4adfa3=_[_0x22d7('0x3f')]({},_0x4adfa3,_0x425435['options']);return _0x11d74f[_0x22d7('0x51')](_0x4adfa3);}})[_0x22d7('0x25')](function(_0x37fb72){if(_0x37fb72){_0x37346=_0x37fb72[_0x22d7('0x38')];if(!_0x425435[_0x22d7('0x32')][_0x22d7('0x39')]('nolimit')){_0x4adfa3[_0x22d7('0x1e')]=qs[_0x22d7('0x1e')](_0x425435['query'][_0x22d7('0x1e')]);_0x4adfa3[_0x22d7('0x1c')]=qs['offset'](_0x425435[_0x22d7('0x32')][_0x22d7('0x1c')]);}return _0x11d74f['getDescriptions'](_0x4adfa3);}})[_0x22d7('0x25')](function(_0xd10bcc){if(_0xd10bcc){return _0xd10bcc?{'count':_0x37346,'rows':_0xd10bcc}:null;}})['then'](respondWithResult(_0x50c7ee,null))[_0x22d7('0x45')](handleError(_0x50c7ee,null));};
\ No newline at end of file
index 148a175..6948e08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd958=['bluebird','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','util'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xd958,0x12a));var _0x8d95=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xd958[_0x11005e];return _0x29338f;};'use strict';var _=require(_0x8d95('0x0'));var util=require(_0x8d95('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x8d95('0x2'));var rp=require(_0x8d95('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d95('0x4'));var config=require(_0x8d95('0x5'));var attributes=require(_0x8d95('0x6'));module[_0x8d95('0x7')]=function(_0x4be963,_0x5baf0a){return _0x4be963[_0x8d95('0x8')](_0x8d95('0x9'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa91=['./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4639d2,_0x41bf0a){var _0x5c1f9d=function(_0x2079fb){while(--_0x2079fb){_0x4639d2['push'](_0x4639d2['shift']());}};_0x5c1f9d(++_0x41bf0a);}(_0xaa91,0x1c0));var _0x1aa9=function(_0x557cec,_0x1f67c6){_0x557cec=_0x557cec-0x0;var _0x341ed9=_0xaa91[_0x557cec];return _0x341ed9;};'use strict';var _=require(_0x1aa9('0x0'));var util=require(_0x1aa9('0x1'));var logger=require(_0x1aa9('0x2'))('api');var moment=require(_0x1aa9('0x3'));var BPromise=require(_0x1aa9('0x4'));var rp=require(_0x1aa9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1aa9('0x6'));var config=require(_0x1aa9('0x7'));var attributes=require(_0x1aa9('0x8'));module[_0x1aa9('0x9')]=function(_0x8fe465,_0x1c0c8d){return _0x8fe465[_0x1aa9('0xa')](_0x1aa9('0xb'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bc9b1f..610c835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59c2=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/environment','client','http','request','then','info','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','VtigerConfiguration,\x20%s,\x20%s'];(function(_0x3490ca,_0x24c3c7){var _0x54b63a=function(_0x2b8988){while(--_0x2b8988){_0x3490ca['push'](_0x3490ca['shift']());}};_0x54b63a(++_0x24c3c7);}(_0x59c2,0x1c9));var _0x259c=function(_0x16f77c,_0x5256b1){_0x16f77c=_0x16f77c-0x0;var _0x78986e=_0x59c2[_0x16f77c];return _0x78986e;};'use strict';var _=require(_0x259c('0x0'));var util=require('util');var moment=require(_0x259c('0x1'));var BPromise=require(_0x259c('0x2'));var rs=require(_0x259c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x259c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x259c('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x259c('0x6')][_0x259c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x51d156,_0x14ecc3,_0x489f1d){return new BPromise(function(_0x220fbe,_0x331215){return client[_0x259c('0x8')](_0x51d156,_0x489f1d)[_0x259c('0x9')](function(_0xfbf2f9){logger[_0x259c('0xa')]('VtigerConfiguration,\x20%s,\x20%s',_0x14ecc3,'request\x20sent');logger[_0x259c('0xb')](_0x259c('0xc'),_0x14ecc3,_0x259c('0xd'),JSON['stringify'](_0xfbf2f9));if(_0xfbf2f9[_0x259c('0xe')]){if(_0xfbf2f9[_0x259c('0xe')][_0x259c('0xf')]===0x1f4){logger[_0x259c('0xe')]('VtigerConfiguration,\x20%s,\x20%s',_0x14ecc3,_0xfbf2f9[_0x259c('0xe')][_0x259c('0x10')]);return _0x331215(_0xfbf2f9[_0x259c('0xe')][_0x259c('0x10')]);}logger[_0x259c('0xe')](_0x259c('0x11'),_0x14ecc3,_0xfbf2f9[_0x259c('0xe')]['message']);return _0x220fbe(_0xfbf2f9[_0x259c('0xe')][_0x259c('0x10')]);}else{logger[_0x259c('0xa')](_0x259c('0x11'),_0x14ecc3,'request\x20sent');_0x220fbe(_0xfbf2f9['result'][_0x259c('0x10')]);}})[_0x259c('0x12')](function(_0x4d3017){logger['error'](_0x259c('0x11'),_0x14ecc3,_0x4d3017);_0x331215(_0x4d3017);});});}
\ No newline at end of file
+var _0xf3c7=['VtigerConfiguration,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x5caad5,_0x493b1b){var _0x19fc7c=function(_0x12096e){while(--_0x12096e){_0x5caad5['push'](_0x5caad5['shift']());}};_0x19fc7c(++_0x493b1b);}(_0xf3c7,0x1ab));var _0x7f3c=function(_0xe1a3a5,_0xd3e341){_0xe1a3a5=_0xe1a3a5-0x0;var _0x362646=_0xf3c7[_0xe1a3a5];return _0x362646;};'use strict';var _=require(_0x7f3c('0x0'));var util=require(_0x7f3c('0x1'));var moment=require(_0x7f3c('0x2'));var BPromise=require(_0x7f3c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f3c('0x4'));var db=require(_0x7f3c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7f3c('0x6'));var config=require(_0x7f3c('0x7'));var jayson=require(_0x7f3c('0x8'));var client=jayson[_0x7f3c('0x9')][_0x7f3c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f8b50,_0x349734,_0x4709a2){return new BPromise(function(_0xa5955e,_0x574228){return client[_0x7f3c('0xb')](_0x4f8b50,_0x4709a2)[_0x7f3c('0xc')](function(_0x55b7d9){logger[_0x7f3c('0xd')](_0x7f3c('0xe'),_0x349734,_0x7f3c('0xf'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x349734,_0x7f3c('0xf'),JSON['stringify'](_0x55b7d9));if(_0x55b7d9[_0x7f3c('0x10')]){if(_0x55b7d9[_0x7f3c('0x10')][_0x7f3c('0x11')]===0x1f4){logger[_0x7f3c('0x10')](_0x7f3c('0xe'),_0x349734,_0x55b7d9['error'][_0x7f3c('0x12')]);return _0x574228(_0x55b7d9[_0x7f3c('0x10')][_0x7f3c('0x12')]);}logger[_0x7f3c('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x349734,_0x55b7d9[_0x7f3c('0x10')]['message']);return _0xa5955e(_0x55b7d9[_0x7f3c('0x10')][_0x7f3c('0x12')]);}else{logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x349734,_0x7f3c('0xf'));_0xa5955e(_0x55b7d9[_0x7f3c('0x13')][_0x7f3c('0x12')]);}})[_0x7f3c('0x14')](function(_0x19bade){logger[_0x7f3c('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x349734,_0x19bade);_0x574228(_0x19bade);});});}
\ No newline at end of file
index 2324888..7884600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1319=['isAuthenticated','/:id','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get'];(function(_0x4a99d2,_0x535ec6){var _0xf38164=function(_0x28834b){while(--_0x28834b){_0x4a99d2['push'](_0x4a99d2['shift']());}};_0xf38164(++_0x535ec6);}(_0x1319,0x86));var _0x9131=function(_0xc3b08e,_0x427235){_0xc3b08e=_0xc3b08e-0x0;var _0x4c5e08=_0x1319[_0xc3b08e];return _0x4c5e08;};'use strict';var multer=require(_0x9131('0x0'));var util=require(_0x9131('0x1'));var path=require(_0x9131('0x2'));var timeout=require(_0x9131('0x3'));var express=require(_0x9131('0x4'));var router=express['Router']();var fs_extra=require(_0x9131('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9131('0x6'));var config=require(_0x9131('0x7'));var controller=require(_0x9131('0x8'));router[_0x9131('0x9')]('/',auth[_0x9131('0xa')](),controller['index']);router[_0x9131('0x9')](_0x9131('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x9131('0xc')]('/',auth[_0x9131('0xa')](),controller[_0x9131('0xd')]);router[_0x9131('0xe')](_0x9131('0xb'),auth[_0x9131('0xa')](),controller[_0x9131('0xf')]);router[_0x9131('0x10')](_0x9131('0xb'),auth[_0x9131('0xa')](),controller['destroy']);module[_0x9131('0x11')]=router;
\ No newline at end of file
+var _0xec4e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4bb374,_0x69e97c){var _0x5e3db6=function(_0x2db89e){while(--_0x2db89e){_0x4bb374['push'](_0x4bb374['shift']());}};_0x5e3db6(++_0x69e97c);}(_0xec4e,0x136));var _0xeec4=function(_0x5eb2dd,_0x1d5f84){_0x5eb2dd=_0x5eb2dd-0x0;var _0x8c3982=_0xec4e[_0x5eb2dd];return _0x8c3982;};'use strict';var multer=require(_0xeec4('0x0'));var util=require(_0xeec4('0x1'));var path=require(_0xeec4('0x2'));var timeout=require(_0xeec4('0x3'));var express=require(_0xeec4('0x4'));var router=express[_0xeec4('0x5')]();var fs_extra=require(_0xeec4('0x6'));var auth=require(_0xeec4('0x7'));var interaction=require(_0xeec4('0x8'));var config=require(_0xeec4('0x9'));var controller=require('./intVtigerField.controller');router[_0xeec4('0xa')]('/',auth[_0xeec4('0xb')](),controller[_0xeec4('0xc')]);router[_0xeec4('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xeec4('0xd')]);router[_0xeec4('0xe')]('/',auth[_0xeec4('0xb')](),controller[_0xeec4('0xf')]);router[_0xeec4('0x10')](_0xeec4('0x11'),auth[_0xeec4('0xb')](),controller[_0xeec4('0x12')]);router['delete'](_0xeec4('0x11'),auth[_0xeec4('0xb')](),controller[_0xeec4('0x13')]);module[_0xeec4('0x14')]=router;
\ No newline at end of file
index dedca40..314324f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed7=['sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x44f42e,_0x4207cd){var _0x1486e0=function(_0x1c912a){while(--_0x1c912a){_0x44f42e['push'](_0x44f42e['shift']());}};_0x1486e0(++_0x4207cd);}(_0x7ed7,0x144));var _0x77ed=function(_0x216f98,_0x470c7f){_0x216f98=_0x216f98-0x0;var _0xea6b36=_0x7ed7[_0x216f98];return _0xea6b36;};'use strict';var Sequelize=require(_0x77ed('0x0'));module[_0x77ed('0x1')]={'type':{'type':Sequelize[_0x77ed('0x2')](_0x77ed('0x3'),_0x77ed('0x4'),'customVariable',_0x77ed('0x5'),_0x77ed('0x6')),'defaultValue':_0x77ed('0x3')},'content':{'type':Sequelize[_0x77ed('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x77ed('0x2')](_0x77ed('0x3'),_0x77ed('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x77ed('0x7')]},'idField':{'type':Sequelize[_0x77ed('0x7')]},'nameField':{'type':Sequelize[_0x77ed('0x7')]},'customField':{'type':Sequelize[_0x77ed('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x77ed('0x7')]}};
\ No newline at end of file
+var _0x5ff0=['sequelize','ENUM','customVariable','picklist','string','variable','STRING','BOOLEAN'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x5ff0,0xe8));var _0x05ff=function(_0x16b295,_0x198acc){_0x16b295=_0x16b295-0x0;var _0x46091e=_0x5ff0[_0x16b295];return _0x46091e;};'use strict';var Sequelize=require(_0x05ff('0x0'));module['exports']={'type':{'type':Sequelize[_0x05ff('0x1')]('string','variable',_0x05ff('0x2'),'keyValue',_0x05ff('0x3')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x05ff('0x1')](_0x05ff('0x4'),_0x05ff('0x5'),_0x05ff('0x2'))},'keyContent':{'type':Sequelize[_0x05ff('0x6')]},'idField':{'type':Sequelize[_0x05ff('0x6')]},'nameField':{'type':Sequelize[_0x05ff('0x6')]},'customField':{'type':Sequelize[_0x05ff('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x05ff('0x6')]}};
\ No newline at end of file
index 3bc4885..f463c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x951f=['bluebird','mustache','path','sox','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','limit','undefined','count','set','json','apply','reject','save','update','destroy','then','stack','name','send','index','map','VtigerField','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','catch','show','params','length','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x4da356,_0x5235e1){var _0x321b07=function(_0x2bc6f4){while(--_0x2bc6f4){_0x4da356['push'](_0x4da356['shift']());}};_0x321b07(++_0x5235e1);}(_0x951f,0x117));var _0xf951=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x951f[_0x4ae6ef];return _0x3cbb4e;};'use strict';var emlformat=require(_0xf951('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf951('0x1'));var jsonpatch=require(_0xf951('0x2'));var rp=require(_0xf951('0x3'));var moment=require(_0xf951('0x4'));var BPromise=require(_0xf951('0x5'));var Mustache=require(_0xf951('0x6'));var util=require('util');var path=require(_0xf951('0x7'));var sox=require(_0xf951('0x8'));var csv=require('to-csv');var ejs=require(_0xf951('0x9'));var fs=require('fs');var fs_extra=require(_0xf951('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf951('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf951('0xc'));var Papa=require(_0xf951('0xd'));var Redis=require(_0xf951('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xf951('0xf'));var as=require(_0xf951('0x10'));var hardwareService=require(_0xf951('0x11'));var logger=require(_0xf951('0x12'))(_0xf951('0x13'));var utils=require(_0xf951('0x14'));var config=require(_0xf951('0x15'));var licenseUtil=require(_0xf951('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x218552,_0x1e58bc){_0x1e58bc=_0x1e58bc||0xcc;return function(_0x5e8748){if(_0x5e8748){return _0x218552[_0xf951('0x17')](_0x1e58bc);}return _0x218552['status'](_0x1e58bc)[_0xf951('0x18')]();};}function respondWithResult(_0x141d68,_0x13a0da){_0x13a0da=_0x13a0da||0xc8;return function(_0x5a134b){if(_0x5a134b){return _0x141d68[_0xf951('0x19')](_0x13a0da)['json'](_0x5a134b);}};}function respondWithFilteredResult(_0x1321a7,_0xcf8fc7){return function(_0x504065){if(_0x504065){var _0x36f7bf=typeof _0xcf8fc7[_0xf951('0x1a')]==='undefined'&&typeof _0xcf8fc7[_0xf951('0x1b')]===_0xf951('0x1c');var _0x2a4755=_0x504065[_0xf951('0x1d')];var _0x15e9fb=_0x36f7bf?0x0:_0xcf8fc7['offset'];var _0x4fea2c=_0x36f7bf?_0x504065[_0xf951('0x1d')]:_0xcf8fc7['offset']+_0xcf8fc7[_0xf951('0x1b')];var _0xdc8143;if(_0x4fea2c>=_0x2a4755){_0x4fea2c=_0x2a4755;_0xdc8143=0xc8;}else{_0xdc8143=0xce;}_0x1321a7[_0xf951('0x19')](_0xdc8143);return _0x1321a7[_0xf951('0x1e')]('Content-Range',_0x15e9fb+'-'+_0x4fea2c+'/'+_0x2a4755)[_0xf951('0x1f')](_0x504065);}return null;};}function patchUpdates(_0x56528a){return function(_0x7f5b9a){try{jsonpatch[_0xf951('0x20')](_0x7f5b9a,_0x56528a,!![]);}catch(_0x3f1f86){return BPromise[_0xf951('0x21')](_0x3f1f86);}return _0x7f5b9a[_0xf951('0x22')]();};}function saveUpdates(_0x4e6a61,_0x43e540){return function(_0x9f3336){if(_0x9f3336){return _0x9f3336[_0xf951('0x23')](_0x4e6a61)['then'](function(_0x14e70c){return _0x14e70c;});}return null;};}function removeEntity(_0x4065ad,_0x4dd7a4){return function(_0x500da7){if(_0x500da7){return _0x500da7[_0xf951('0x24')]()[_0xf951('0x25')](function(){_0x4065ad[_0xf951('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44fc99,_0xe855e0){return function(_0x3dd0ae){if(!_0x3dd0ae){_0x44fc99[_0xf951('0x17')](0x194);}return _0x3dd0ae;};}function handleError(_0x2367ea,_0x152eee){_0x152eee=_0x152eee||0x1f4;return function(_0x12563a){logger['error'](_0x12563a[_0xf951('0x26')]);if(_0x12563a['name']){delete _0x12563a[_0xf951('0x27')];}_0x2367ea[_0xf951('0x19')](_0x152eee)[_0xf951('0x28')](_0x12563a);};}exports[_0xf951('0x29')]=function(_0x2eba10,_0x55c5cd){var _0x5c7ddb={},_0x227d1e={},_0x41d35b={'count':0x0,'rows':[]};var _0x5f35f6=_[_0xf951('0x2a')](db[_0xf951('0x2b')][_0xf951('0x2c')],function(_0x421f3f){return{'name':_0x421f3f['fieldName'],'type':_0x421f3f[_0xf951('0x2d')][_0xf951('0x2e')]};});_0x227d1e[_0xf951('0x2f')]=_['map'](_0x5f35f6,_0xf951('0x27'));_0x227d1e[_0xf951('0x30')]=_[_0xf951('0x31')](_0x2eba10[_0xf951('0x30')]);_0x227d1e[_0xf951('0x32')]=_[_0xf951('0x33')](_0x227d1e[_0xf951('0x2f')],_0x227d1e[_0xf951('0x30')]);_0x5c7ddb['attributes']=_[_0xf951('0x33')](_0x227d1e[_0xf951('0x2f')],qs[_0xf951('0x34')](_0x2eba10[_0xf951('0x30')]['fields']));_0x5c7ddb[_0xf951('0x35')]=_0x5c7ddb[_0xf951('0x35')]['length']?_0x5c7ddb[_0xf951('0x35')]:_0x227d1e['model'];if(!_0x2eba10['query'][_0xf951('0x36')]('nolimit')){_0x5c7ddb[_0xf951('0x1b')]=qs['limit'](_0x2eba10[_0xf951('0x30')]['limit']);_0x5c7ddb[_0xf951('0x1a')]=qs[_0xf951('0x1a')](_0x2eba10['query'][_0xf951('0x1a')]);}_0x5c7ddb[_0xf951('0x37')]=qs['sort'](_0x2eba10[_0xf951('0x30')][_0xf951('0x38')]);_0x5c7ddb[_0xf951('0x39')]=qs[_0xf951('0x32')](_[_0xf951('0x3a')](_0x2eba10[_0xf951('0x30')],_0x227d1e[_0xf951('0x32')]),_0x5f35f6);if(_0x2eba10[_0xf951('0x30')][_0xf951('0x3b')]){_0x5c7ddb[_0xf951('0x39')]=_[_0xf951('0x3c')](_0x5c7ddb['where'],{'$or':_[_0xf951('0x2a')](_0x5f35f6,function(_0x1fee16){if(_0x1fee16[_0xf951('0x2d')]!==_0xf951('0x3d')){var _0x2e55d7={};_0x2e55d7[_0x1fee16[_0xf951('0x27')]]={'$like':'%'+_0x2eba10[_0xf951('0x30')][_0xf951('0x3b')]+'%'};return _0x2e55d7;}})});}_0x5c7ddb=_['merge']({},_0x5c7ddb,_0x2eba10[_0xf951('0x3e')]);var _0x5330cf={'where':_0x5c7ddb['where']};return db[_0xf951('0x2b')][_0xf951('0x1d')](_0x5330cf)[_0xf951('0x25')](function(_0x3a09c4){_0x41d35b[_0xf951('0x1d')]=_0x3a09c4;if(_0x2eba10[_0xf951('0x30')]['includeAll']){_0x5c7ddb[_0xf951('0x3f')]=[{'all':!![]}];}return db[_0xf951('0x2b')]['findAll'](_0x5c7ddb);})['then'](function(_0x4b3302){_0x41d35b['rows']=_0x4b3302;return _0x41d35b;})['then'](respondWithFilteredResult(_0x55c5cd,_0x5c7ddb))[_0xf951('0x40')](handleError(_0x55c5cd,null));};exports[_0xf951('0x41')]=function(_0x38d06b,_0x4c5369){var _0x3e76ae={'raw':!![],'where':{'id':_0x38d06b[_0xf951('0x42')]['id']}},_0x3e0117={};_0x3e0117[_0xf951('0x2f')]=_[_0xf951('0x31')](db[_0xf951('0x2b')][_0xf951('0x2c')]);_0x3e0117['query']=_[_0xf951('0x31')](_0x38d06b[_0xf951('0x30')]);_0x3e0117['filters']=_[_0xf951('0x33')](_0x3e0117['model'],_0x3e0117['query']);_0x3e76ae['attributes']=_['intersection'](_0x3e0117[_0xf951('0x2f')],qs['fields'](_0x38d06b[_0xf951('0x30')][_0xf951('0x34')]));_0x3e76ae[_0xf951('0x35')]=_0x3e76ae[_0xf951('0x35')][_0xf951('0x43')]?_0x3e76ae[_0xf951('0x35')]:_0x3e0117['model'];if(_0x38d06b[_0xf951('0x30')]['includeAll']){_0x3e76ae['include']=[{'all':!![]}];}_0x3e76ae=_[_0xf951('0x3c')]({},_0x3e76ae,_0x38d06b[_0xf951('0x3e')]);return db[_0xf951('0x2b')][_0xf951('0x44')](_0x3e76ae)[_0xf951('0x25')](handleEntityNotFound(_0x4c5369,null))[_0xf951('0x25')](respondWithResult(_0x4c5369,null))[_0xf951('0x40')](handleError(_0x4c5369,null));};exports[_0xf951('0x45')]=function(_0x31ec81,_0x2b37a3){return db[_0xf951('0x2b')][_0xf951('0x45')](_0x31ec81['body'],{})['then'](respondWithResult(_0x2b37a3,0xc9))[_0xf951('0x40')](handleError(_0x2b37a3,null));};exports[_0xf951('0x23')]=function(_0x5bce15,_0x60d737){if(_0x5bce15[_0xf951('0x46')]['id']){delete _0x5bce15['body']['id'];}return db['VtigerField'][_0xf951('0x44')]({'where':{'id':_0x5bce15['params']['id']}})[_0xf951('0x25')](handleEntityNotFound(_0x60d737,null))[_0xf951('0x25')](saveUpdates(_0x5bce15['body'],null))[_0xf951('0x25')](respondWithResult(_0x60d737,null))[_0xf951('0x40')](handleError(_0x60d737,null));};exports[_0xf951('0x24')]=function(_0x432aba,_0x7bb776){return db[_0xf951('0x2b')][_0xf951('0x44')]({'where':{'id':_0x432aba['params']['id']}})[_0xf951('0x25')](handleEntityNotFound(_0x7bb776,null))['then'](removeEntity(_0x7bb776,null))[_0xf951('0x40')](handleError(_0x7bb776,null));};
\ No newline at end of file
+var _0xb01d=['find','create','params','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show'];(function(_0x50b341,_0x45d6e5){var _0x537904=function(_0x2ff212){while(--_0x2ff212){_0x50b341['push'](_0x50b341['shift']());}};_0x537904(++_0x45d6e5);}(_0xb01d,0xee));var _0xdb01=function(_0x58ea3c,_0x1fc83b){_0x58ea3c=_0x58ea3c-0x0;var _0x310f07=_0xb01d[_0x58ea3c];return _0x310f07;};'use strict';var emlformat=require(_0xdb01('0x0'));var rimraf=require(_0xdb01('0x1'));var zipdir=require(_0xdb01('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdb01('0x3'));var moment=require(_0xdb01('0x4'));var BPromise=require(_0xdb01('0x5'));var Mustache=require(_0xdb01('0x6'));var util=require(_0xdb01('0x7'));var path=require(_0xdb01('0x8'));var sox=require(_0xdb01('0x9'));var csv=require(_0xdb01('0xa'));var ejs=require(_0xdb01('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdb01('0xc'));var squel=require(_0xdb01('0xd'));var crypto=require(_0xdb01('0xe'));var jsforce=require(_0xdb01('0xf'));var deskjs=require(_0xdb01('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xdb01('0x11'));var authService=require(_0xdb01('0x12'));var qs=require(_0xdb01('0x13'));var as=require(_0xdb01('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdb01('0x15'))(_0xdb01('0x16'));var utils=require('../../config/utils');var config=require(_0xdb01('0x17'));var licenseUtil=require(_0xdb01('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2652f4,_0xb8f387){_0xb8f387=_0xb8f387||0xcc;return function(_0x1f77f0){if(_0x1f77f0){return _0x2652f4[_0xdb01('0x19')](_0xb8f387);}return _0x2652f4[_0xdb01('0x1a')](_0xb8f387)[_0xdb01('0x1b')]();};}function respondWithResult(_0x27ee7f,_0x2806ca){_0x2806ca=_0x2806ca||0xc8;return function(_0x1da8a7){if(_0x1da8a7){return _0x27ee7f[_0xdb01('0x1a')](_0x2806ca)[_0xdb01('0x1c')](_0x1da8a7);}};}function respondWithFilteredResult(_0x58b03d,_0x1c00c5){return function(_0x600cb5){if(_0x600cb5){var _0x595072=typeof _0x1c00c5[_0xdb01('0x1d')]==='undefined'&&typeof _0x1c00c5[_0xdb01('0x1e')]===_0xdb01('0x1f');var _0x187517=_0x600cb5[_0xdb01('0x20')];var _0xa92671=_0x595072?0x0:_0x1c00c5[_0xdb01('0x1d')];var _0x345f55=_0x595072?_0x600cb5[_0xdb01('0x20')]:_0x1c00c5[_0xdb01('0x1d')]+_0x1c00c5[_0xdb01('0x1e')];var _0x4a7a3e;if(_0x345f55>=_0x187517){_0x345f55=_0x187517;_0x4a7a3e=0xc8;}else{_0x4a7a3e=0xce;}_0x58b03d['status'](_0x4a7a3e);return _0x58b03d[_0xdb01('0x21')](_0xdb01('0x22'),_0xa92671+'-'+_0x345f55+'/'+_0x187517)['json'](_0x600cb5);}return null;};}function patchUpdates(_0x17b0ca){return function(_0x29f022){try{jsonpatch[_0xdb01('0x23')](_0x29f022,_0x17b0ca,!![]);}catch(_0x4fb4f6){return BPromise[_0xdb01('0x24')](_0x4fb4f6);}return _0x29f022[_0xdb01('0x25')]();};}function saveUpdates(_0xf32220,_0x9406f7){return function(_0x31d296){if(_0x31d296){return _0x31d296[_0xdb01('0x26')](_0xf32220)['then'](function(_0x40b924){return _0x40b924;});}return null;};}function removeEntity(_0x14fc12,_0x342c9e){return function(_0x2c63b5){if(_0x2c63b5){return _0x2c63b5[_0xdb01('0x27')]()[_0xdb01('0x28')](function(){_0x14fc12[_0xdb01('0x1a')](0xcc)[_0xdb01('0x1b')]();});}};}function handleEntityNotFound(_0x631fd1,_0x4ec858){return function(_0x3d20be){if(!_0x3d20be){_0x631fd1['sendStatus'](0x194);}return _0x3d20be;};}function handleError(_0x57c605,_0x4d3591){_0x4d3591=_0x4d3591||0x1f4;return function(_0x153f8e){logger[_0xdb01('0x29')](_0x153f8e[_0xdb01('0x2a')]);if(_0x153f8e[_0xdb01('0x2b')]){delete _0x153f8e[_0xdb01('0x2b')];}_0x57c605[_0xdb01('0x1a')](_0x4d3591)[_0xdb01('0x2c')](_0x153f8e);};}exports[_0xdb01('0x2d')]=function(_0x8da4b9,_0x1fe8f2){var _0x269c82={},_0x4ca15c={},_0x2688b0={'count':0x0,'rows':[]};var _0x3ff473=_[_0xdb01('0x2e')](db[_0xdb01('0x2f')][_0xdb01('0x30')],function(_0x1a40ca){return{'name':_0x1a40ca[_0xdb01('0x31')],'type':_0x1a40ca[_0xdb01('0x32')][_0xdb01('0x33')]};});_0x4ca15c[_0xdb01('0x34')]=_[_0xdb01('0x2e')](_0x3ff473,_0xdb01('0x2b'));_0x4ca15c[_0xdb01('0x35')]=_[_0xdb01('0x36')](_0x8da4b9[_0xdb01('0x35')]);_0x4ca15c[_0xdb01('0x37')]=_[_0xdb01('0x38')](_0x4ca15c[_0xdb01('0x34')],_0x4ca15c[_0xdb01('0x35')]);_0x269c82['attributes']=_['intersection'](_0x4ca15c[_0xdb01('0x34')],qs[_0xdb01('0x39')](_0x8da4b9[_0xdb01('0x35')][_0xdb01('0x39')]));_0x269c82[_0xdb01('0x3a')]=_0x269c82[_0xdb01('0x3a')][_0xdb01('0x3b')]?_0x269c82[_0xdb01('0x3a')]:_0x4ca15c[_0xdb01('0x34')];if(!_0x8da4b9[_0xdb01('0x35')]['hasOwnProperty'](_0xdb01('0x3c'))){_0x269c82[_0xdb01('0x1e')]=qs[_0xdb01('0x1e')](_0x8da4b9[_0xdb01('0x35')]['limit']);_0x269c82[_0xdb01('0x1d')]=qs[_0xdb01('0x1d')](_0x8da4b9[_0xdb01('0x35')][_0xdb01('0x1d')]);}_0x269c82[_0xdb01('0x3d')]=qs['sort'](_0x8da4b9[_0xdb01('0x35')][_0xdb01('0x3e')]);_0x269c82[_0xdb01('0x3f')]=qs['filters'](_[_0xdb01('0x40')](_0x8da4b9[_0xdb01('0x35')],_0x4ca15c[_0xdb01('0x37')]),_0x3ff473);if(_0x8da4b9[_0xdb01('0x35')][_0xdb01('0x41')]){_0x269c82[_0xdb01('0x3f')]=_[_0xdb01('0x42')](_0x269c82[_0xdb01('0x3f')],{'$or':_[_0xdb01('0x2e')](_0x3ff473,function(_0x55f155){if(_0x55f155[_0xdb01('0x32')]!==_0xdb01('0x43')){var _0x475322={};_0x475322[_0x55f155[_0xdb01('0x2b')]]={'$like':'%'+_0x8da4b9[_0xdb01('0x35')]['filter']+'%'};return _0x475322;}})});}_0x269c82=_[_0xdb01('0x42')]({},_0x269c82,_0x8da4b9[_0xdb01('0x44')]);var _0x39e2ac={'where':_0x269c82[_0xdb01('0x3f')]};return db[_0xdb01('0x2f')]['count'](_0x39e2ac)[_0xdb01('0x28')](function(_0x41d867){_0x2688b0[_0xdb01('0x20')]=_0x41d867;if(_0x8da4b9[_0xdb01('0x35')][_0xdb01('0x45')]){_0x269c82[_0xdb01('0x46')]=[{'all':!![]}];}return db[_0xdb01('0x2f')]['findAll'](_0x269c82);})[_0xdb01('0x28')](function(_0x32fe9a){_0x2688b0[_0xdb01('0x47')]=_0x32fe9a;return _0x2688b0;})['then'](respondWithFilteredResult(_0x1fe8f2,_0x269c82))[_0xdb01('0x48')](handleError(_0x1fe8f2,null));};exports[_0xdb01('0x49')]=function(_0x3a1a0d,_0x5bc243){var _0x33d39c={'raw':!![],'where':{'id':_0x3a1a0d['params']['id']}},_0x28ef54={};_0x28ef54[_0xdb01('0x34')]=_[_0xdb01('0x36')](db[_0xdb01('0x2f')]['rawAttributes']);_0x28ef54[_0xdb01('0x35')]=_[_0xdb01('0x36')](_0x3a1a0d['query']);_0x28ef54[_0xdb01('0x37')]=_[_0xdb01('0x38')](_0x28ef54[_0xdb01('0x34')],_0x28ef54[_0xdb01('0x35')]);_0x33d39c['attributes']=_['intersection'](_0x28ef54[_0xdb01('0x34')],qs['fields'](_0x3a1a0d[_0xdb01('0x35')][_0xdb01('0x39')]));_0x33d39c[_0xdb01('0x3a')]=_0x33d39c['attributes'][_0xdb01('0x3b')]?_0x33d39c[_0xdb01('0x3a')]:_0x28ef54[_0xdb01('0x34')];if(_0x3a1a0d['query']['includeAll']){_0x33d39c[_0xdb01('0x46')]=[{'all':!![]}];}_0x33d39c=_[_0xdb01('0x42')]({},_0x33d39c,_0x3a1a0d['options']);return db[_0xdb01('0x2f')][_0xdb01('0x4a')](_0x33d39c)[_0xdb01('0x28')](handleEntityNotFound(_0x5bc243,null))[_0xdb01('0x28')](respondWithResult(_0x5bc243,null))[_0xdb01('0x48')](handleError(_0x5bc243,null));};exports[_0xdb01('0x4b')]=function(_0x49ffa3,_0x4fea1d){return db[_0xdb01('0x2f')][_0xdb01('0x4b')](_0x49ffa3['body'],{})[_0xdb01('0x28')](respondWithResult(_0x4fea1d,0xc9))[_0xdb01('0x48')](handleError(_0x4fea1d,null));};exports[_0xdb01('0x26')]=function(_0x2b97f0,_0x37b40a){if(_0x2b97f0['body']['id']){delete _0x2b97f0['body']['id'];}return db['VtigerField'][_0xdb01('0x4a')]({'where':{'id':_0x2b97f0[_0xdb01('0x4c')]['id']}})[_0xdb01('0x28')](handleEntityNotFound(_0x37b40a,null))[_0xdb01('0x28')](saveUpdates(_0x2b97f0[_0xdb01('0x4d')],null))[_0xdb01('0x28')](respondWithResult(_0x37b40a,null))[_0xdb01('0x48')](handleError(_0x37b40a,null));};exports[_0xdb01('0x27')]=function(_0x61e422,_0xdba44e){return db[_0xdb01('0x2f')]['find']({'where':{'id':_0x61e422[_0xdb01('0x4c')]['id']}})['then'](handleEntityNotFound(_0xdba44e,null))[_0xdb01('0x28')](removeEntity(_0xdba44e,null))[_0xdb01('0x48')](handleError(_0xdba44e,null));};
\ No newline at end of file
index 17f4930..9a4c136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6cf=['vtiger_unique_index','idField','FieldId','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','VtigerField','int_vtiger_fields'];(function(_0x541ea6,_0x51cab6){var _0x3c3e84=function(_0xc06bed){while(--_0xc06bed){_0x541ea6['push'](_0x541ea6['shift']());}};_0x3c3e84(++_0x51cab6);}(_0xc6cf,0x1b5));var _0xfc6c=function(_0x4292b1,_0x39dac5){_0x4292b1=_0x4292b1-0x0;var _0x342485=_0xc6cf[_0x4292b1];return _0x342485;};'use strict';var _=require('lodash');var util=require(_0xfc6c('0x0'));var logger=require('../../config/logger')(_0xfc6c('0x1'));var moment=require(_0xfc6c('0x2'));var BPromise=require(_0xfc6c('0x3'));var rp=require(_0xfc6c('0x4'));var fs=require('fs');var path=require(_0xfc6c('0x5'));var rimraf=require(_0xfc6c('0x6'));var config=require(_0xfc6c('0x7'));var attributes=require('./intVtigerField.attributes');module[_0xfc6c('0x8')]=function(_0x320c84,_0x18b55b){return _0x320c84['define'](_0xfc6c('0x9'),attributes,{'tableName':_0xfc6c('0xa'),'paranoid':![],'indexes':[{'name':_0xfc6c('0xb'),'fields':[_0xfc6c('0xc'),_0xfc6c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x70d4=['request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','vtiger_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70d4,0x13e));var _0x470d=function(_0x239b31,_0x44a64d){_0x239b31=_0x239b31-0x0;var _0x41c8be=_0x70d4[_0x239b31];return _0x41c8be;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x470d('0x0'))(_0x470d('0x1'));var moment=require(_0x470d('0x2'));var BPromise=require(_0x470d('0x3'));var rp=require(_0x470d('0x4'));var fs=require('fs');var path=require(_0x470d('0x5'));var rimraf=require(_0x470d('0x6'));var config=require(_0x470d('0x7'));var attributes=require(_0x470d('0x8'));module[_0x470d('0x9')]=function(_0x5e19ba,_0xc763ad){return _0x5e19ba[_0x470d('0xa')]('VtigerField',attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x470d('0xb'),'fields':[_0x470d('0xc'),_0x470d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 67b2255..f452116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5b6=['stringify','error','code','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x54ba5a,_0x3847e7){var _0x3f1582=function(_0x1a199e){while(--_0x1a199e){_0x54ba5a['push'](_0x54ba5a['shift']());}};_0x3f1582(++_0x3847e7);}(_0xb5b6,0x10f));var _0x6b5b=function(_0x9c364e,_0x3172e2){_0x9c364e=_0x9c364e-0x0;var _0x2bf2b2=_0xb5b6[_0x9c364e];return _0x2bf2b2;};'use strict';var _=require(_0x6b5b('0x0'));var util=require(_0x6b5b('0x1'));var moment=require(_0x6b5b('0x2'));var BPromise=require(_0x6b5b('0x3'));var rs=require(_0x6b5b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b5b('0x5'))['db'];var utils=require(_0x6b5b('0x6'));var logger=require(_0x6b5b('0x7'))(_0x6b5b('0x8'));var config=require('../../config/environment');var jayson=require(_0x6b5b('0x9'));var client=jayson[_0x6b5b('0xa')][_0x6b5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x124818,_0x52cb9b,_0x15bc57){return new BPromise(function(_0x50cb58,_0x215b9b){return client[_0x6b5b('0xc')](_0x124818,_0x15bc57)[_0x6b5b('0xd')](function(_0x14167){logger[_0x6b5b('0xe')]('VtigerField,\x20%s,\x20%s',_0x52cb9b,_0x6b5b('0xf'));logger[_0x6b5b('0x10')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x52cb9b,_0x6b5b('0xf'),JSON[_0x6b5b('0x11')](_0x14167));if(_0x14167[_0x6b5b('0x12')]){if(_0x14167['error'][_0x6b5b('0x13')]===0x1f4){logger['error'](_0x6b5b('0x14'),_0x52cb9b,_0x14167[_0x6b5b('0x12')][_0x6b5b('0x15')]);return _0x215b9b(_0x14167['error']['message']);}logger[_0x6b5b('0x12')](_0x6b5b('0x14'),_0x52cb9b,_0x14167[_0x6b5b('0x12')][_0x6b5b('0x15')]);return _0x50cb58(_0x14167['error']['message']);}else{logger[_0x6b5b('0xe')](_0x6b5b('0x14'),_0x52cb9b,_0x6b5b('0xf'));_0x50cb58(_0x14167[_0x6b5b('0x16')][_0x6b5b('0x15')]);}})[_0x6b5b('0x17')](function(_0x68dd27){logger['error'](_0x6b5b('0x14'),_0x52cb9b,_0x68dd27);_0x215b9b(_0x68dd27);});});}
\ No newline at end of file
+var _0xb45e=['message','result','lodash','util','moment','ioredis','../../config/logger','../../config/environment','client','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x43f55a,_0x5e21fd){var _0x337f69=function(_0x4cff3e){while(--_0x4cff3e){_0x43f55a['push'](_0x43f55a['shift']());}};_0x337f69(++_0x5e21fd);}(_0xb45e,0x158));var _0xeb45=function(_0x5b6cd3,_0x2fcf1b){_0x5b6cd3=_0x5b6cd3-0x0;var _0x34f3a6=_0xb45e[_0x5b6cd3];return _0x34f3a6;};'use strict';var _=require(_0xeb45('0x0'));var util=require(_0xeb45('0x1'));var moment=require(_0xeb45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb45('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeb45('0x4'))('rpc');var config=require(_0xeb45('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xeb45('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26ed3e,_0x46462c,_0x4db2c5){return new BPromise(function(_0x48ae96,_0x12fa9f){return client[_0xeb45('0x7')](_0x26ed3e,_0x4db2c5)[_0xeb45('0x8')](function(_0x2b6245){logger[_0xeb45('0x9')](_0xeb45('0xa'),_0x46462c,_0xeb45('0xb'));logger[_0xeb45('0xc')](_0xeb45('0xd'),_0x46462c,'request\x20sent',JSON[_0xeb45('0xe')](_0x2b6245));if(_0x2b6245[_0xeb45('0xf')]){if(_0x2b6245['error'][_0xeb45('0x10')]===0x1f4){logger['error'](_0xeb45('0xa'),_0x46462c,_0x2b6245[_0xeb45('0xf')][_0xeb45('0x11')]);return _0x12fa9f(_0x2b6245['error'][_0xeb45('0x11')]);}logger['error'](_0xeb45('0xa'),_0x46462c,_0x2b6245[_0xeb45('0xf')][_0xeb45('0x11')]);return _0x48ae96(_0x2b6245[_0xeb45('0xf')][_0xeb45('0x11')]);}else{logger[_0xeb45('0x9')](_0xeb45('0xa'),_0x46462c,_0xeb45('0xb'));_0x48ae96(_0x2b6245[_0xeb45('0x12')]['message']);}})['catch'](function(_0x451636){logger[_0xeb45('0xf')]('VtigerField,\x20%s,\x20%s',_0x46462c,_0x451636);_0x12fa9f(_0x451636);});});}
\ No newline at end of file
index be4498d..073ea72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0a=['/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x5d0a,0x173));var _0xa5d0=function(_0x254e75,_0x531dfe){_0x254e75=_0x254e75-0x0;var _0x26104d=_0x5d0a[_0x254e75];return _0x26104d;};'use strict';var multer=require(_0xa5d0('0x0'));var util=require(_0xa5d0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa5d0('0x2')]();var fs_extra=require(_0xa5d0('0x3'));var auth=require(_0xa5d0('0x4'));var interaction=require(_0xa5d0('0x5'));var config=require(_0xa5d0('0x6'));var controller=require(_0xa5d0('0x7'));router[_0xa5d0('0x8')]('/',auth[_0xa5d0('0x9')](),controller['index']);router[_0xa5d0('0x8')]('/:id',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xa')]);router[_0xa5d0('0x8')](_0xa5d0('0xb'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xc')]);router[_0xa5d0('0x8')](_0xa5d0('0xd'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xe')]);router[_0xa5d0('0xf')]('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x10')]);router[_0xa5d0('0xf')]('/:id/configurations',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x11')]);router[_0xa5d0('0x12')](_0xa5d0('0x13'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x14')]);router[_0xa5d0('0x15')](_0xa5d0('0x13'),auth['isAuthenticated'](),controller[_0xa5d0('0x16')]);module[_0xa5d0('0x17')]=router;
\ No newline at end of file
+var _0x407b=['/:id/fields','getFields','post','create','addConfiguration','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/configurations','getConfigurations'];(function(_0x3bec7e,_0x3bca22){var _0x3135ef=function(_0x1b384f){while(--_0x1b384f){_0x3bec7e['push'](_0x3bec7e['shift']());}};_0x3135ef(++_0x3bca22);}(_0x407b,0x1a2));var _0xb407=function(_0x328f66,_0x3511a2){_0x328f66=_0x328f66-0x0;var _0x13598f=_0x407b[_0x328f66];return _0x13598f;};'use strict';var multer=require(_0xb407('0x0'));var util=require(_0xb407('0x1'));var path=require('path');var timeout=require(_0xb407('0x2'));var express=require(_0xb407('0x3'));var router=express[_0xb407('0x4')]();var fs_extra=require(_0xb407('0x5'));var auth=require(_0xb407('0x6'));var interaction=require(_0xb407('0x7'));var config=require(_0xb407('0x8'));var controller=require('./intZendeskAccount.controller');router[_0xb407('0x9')]('/',auth[_0xb407('0xa')](),controller[_0xb407('0xb')]);router[_0xb407('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xb407('0x9')](_0xb407('0xc'),auth['isAuthenticated'](),controller[_0xb407('0xd')]);router['get'](_0xb407('0xe'),auth[_0xb407('0xa')](),controller[_0xb407('0xf')]);router[_0xb407('0x10')]('/',auth[_0xb407('0xa')](),controller[_0xb407('0x11')]);router['post'](_0xb407('0xc'),auth['isAuthenticated'](),controller[_0xb407('0x12')]);router['put'](_0xb407('0x13'),auth[_0xb407('0xa')](),controller[_0xb407('0x14')]);router[_0xb407('0x15')](_0xb407('0x13'),auth[_0xb407('0xa')](),controller[_0xb407('0x16')]);module[_0xb407('0x17')]=router;
\ No newline at end of file
index 88004eb..7dfeda1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['remoteUri','ENUM','password','token','newTab','integrationTab','sequelize','exports','STRING','username'];(function(_0x31e738,_0x107f00){var _0x3a4f11=function(_0x3e49fc){while(--_0x3e49fc){_0x31e738['push'](_0x31e738['shift']());}};_0x3a4f11(++_0x107f00);}(_0xd117,0x182));var _0x7d11=function(_0x4358f5,_0x5b1ac6){_0x4358f5=_0x4358f5-0x0;var _0x4d8104=_0xd117[_0x4358f5];return _0x4d8104;};'use strict';var Sequelize=require(_0x7d11('0x0'));module[_0x7d11('0x1')]={'name':{'type':Sequelize[_0x7d11('0x2')]},'description':{'type':Sequelize[_0x7d11('0x2')]},'username':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x3')},'password':{'type':Sequelize[_0x7d11('0x2')]},'token':{'type':Sequelize[_0x7d11('0x2')]},'remoteUri':{'type':Sequelize[_0x7d11('0x2')],'unique':_0x7d11('0x4')},'authType':{'type':Sequelize[_0x7d11('0x5')](_0x7d11('0x6'),_0x7d11('0x7')),'defaultValue':_0x7d11('0x6')},'serverUrl':{'type':Sequelize[_0x7d11('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7d11('0x5')]('integrationTab',_0x7d11('0x8')),'defaultValue':_0x7d11('0x9')}};
\ No newline at end of file
+var _0xd2f5=['password','token','integrationTab','newTab','sequelize','STRING','remoteUri','ENUM'];(function(_0x1d09ba,_0xee21c8){var _0x37db7b=function(_0x1af32f){while(--_0x1af32f){_0x1d09ba['push'](_0x1d09ba['shift']());}};_0x37db7b(++_0xee21c8);}(_0xd2f5,0x144));var _0x5d2f=function(_0x29f0fc,_0x56a756){_0x29f0fc=_0x29f0fc-0x0;var _0xb50bf6=_0xd2f5[_0x29f0fc];return _0xb50bf6;};'use strict';var Sequelize=require(_0x5d2f('0x0'));module['exports']={'name':{'type':Sequelize[_0x5d2f('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x5d2f('0x1')],'unique':'username'},'password':{'type':Sequelize[_0x5d2f('0x1')]},'token':{'type':Sequelize[_0x5d2f('0x1')]},'remoteUri':{'type':Sequelize[_0x5d2f('0x1')],'unique':_0x5d2f('0x2')},'authType':{'type':Sequelize[_0x5d2f('0x3')](_0x5d2f('0x4'),_0x5d2f('0x5')),'defaultValue':_0x5d2f('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x5d2f('0x3')](_0x5d2f('0x6'),_0x5d2f('0x7')),'defaultValue':_0x5d2f('0x6')}};
\ No newline at end of file
index ca15d37..f28085b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['sort','where','filter','merge','type','options','includeAll','findAll','catch','show','params','keys','length','include','find','create','body','update','getConfigurations','findOne','ZendeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','remove','includes','title','position','system_field_options','custom_field_options','send','Wrong\x20credentials','statusCode','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','sendStatus','error','stack','name','map','ZendeskAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3a7db0,_0xe93c50){_0x3a7db0=_0x3a7db0-0x0;var _0x17cbba=_0x5eb8[_0x3a7db0];return _0x17cbba;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x85eb('0x0'));var jsonpatch=require(_0x85eb('0x1'));var rp=require(_0x85eb('0x2'));var moment=require(_0x85eb('0x3'));var BPromise=require(_0x85eb('0x4'));var Mustache=require(_0x85eb('0x5'));var util=require(_0x85eb('0x6'));var path=require(_0x85eb('0x7'));var sox=require(_0x85eb('0x8'));var csv=require(_0x85eb('0x9'));var ejs=require(_0x85eb('0xa'));var fs=require('fs');var fs_extra=require(_0x85eb('0xb'));var _=require('lodash');var squel=require(_0x85eb('0xc'));var crypto=require(_0x85eb('0xd'));var jsforce=require(_0x85eb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x85eb('0x9'));var querystring=require('querystring');var Papa=require(_0x85eb('0xf'));var Redis=require(_0x85eb('0x10'));var authService=require(_0x85eb('0x11'));var qs=require(_0x85eb('0x12'));var as=require(_0x85eb('0x13'));var hardwareService=require(_0x85eb('0x14'));var logger=require(_0x85eb('0x15'))('api');var utils=require(_0x85eb('0x16'));var config=require(_0x85eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x85eb('0x18'))['db'];var integrations=require(_0x85eb('0x19'));function respondWithStatusCode(_0x2f42ba,_0x259f72){_0x259f72=_0x259f72||0xcc;return function(_0x4db167){if(_0x4db167){return _0x2f42ba['sendStatus'](_0x259f72);}return _0x2f42ba[_0x85eb('0x1a')](_0x259f72)['end']();};}function respondWithResult(_0x18ca53,_0x23a82a){_0x23a82a=_0x23a82a||0xc8;return function(_0x600a7f){if(_0x600a7f){return _0x18ca53[_0x85eb('0x1a')](_0x23a82a)[_0x85eb('0x1b')](_0x600a7f);}};}function respondWithFilteredResult(_0x49efdf,_0x2e5c0a){return function(_0x59237b){if(_0x59237b){var _0x17140b=typeof _0x2e5c0a[_0x85eb('0x1c')]===_0x85eb('0x1d')&&typeof _0x2e5c0a[_0x85eb('0x1e')]==='undefined';var _0x5c5cbb=_0x59237b['count'];var _0xe198ca=_0x17140b?0x0:_0x2e5c0a[_0x85eb('0x1c')];var _0x10cf2f=_0x17140b?_0x59237b[_0x85eb('0x1f')]:_0x2e5c0a[_0x85eb('0x1c')]+_0x2e5c0a[_0x85eb('0x1e')];var _0x5acd3d;if(_0x10cf2f>=_0x5c5cbb){_0x10cf2f=_0x5c5cbb;_0x5acd3d=0xc8;}else{_0x5acd3d=0xce;}_0x49efdf[_0x85eb('0x1a')](_0x5acd3d);return _0x49efdf[_0x85eb('0x20')](_0x85eb('0x21'),_0xe198ca+'-'+_0x10cf2f+'/'+_0x5c5cbb)['json'](_0x59237b);}return null;};}function patchUpdates(_0x4b4b38){return function(_0x48bd86){try{jsonpatch['apply'](_0x48bd86,_0x4b4b38,!![]);}catch(_0x244667){return BPromise[_0x85eb('0x22')](_0x244667);}return _0x48bd86[_0x85eb('0x23')]();};}function saveUpdates(_0x255ca7,_0x465c74){return function(_0x3fc6da){if(_0x3fc6da){return _0x3fc6da['update'](_0x255ca7)['then'](function(_0x5b48d9){return _0x5b48d9;});}return null;};}function removeEntity(_0x298e84,_0x1426c8){return function(_0x3f7a4d){if(_0x3f7a4d){return _0x3f7a4d[_0x85eb('0x24')]()[_0x85eb('0x25')](function(){_0x298e84[_0x85eb('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39d3fe,_0x3453cd){return function(_0x4709ad){if(!_0x4709ad){_0x39d3fe[_0x85eb('0x26')](0x194);}return _0x4709ad;};}function handleError(_0x3e2326,_0x57a03c){_0x57a03c=_0x57a03c||0x1f4;return function(_0x2e5aa3){logger[_0x85eb('0x27')](_0x2e5aa3[_0x85eb('0x28')]);if(_0x2e5aa3[_0x85eb('0x29')]){delete _0x2e5aa3[_0x85eb('0x29')];}_0x3e2326[_0x85eb('0x1a')](_0x57a03c)['send'](_0x2e5aa3);};}exports['index']=function(_0x37515c,_0x585f2a){var _0xa9b14f={},_0x5255eb={},_0x4229e9={'count':0x0,'rows':[]};var _0x3570f7=_[_0x85eb('0x2a')](db[_0x85eb('0x2b')][_0x85eb('0x2c')],function(_0xf4ac13){return{'name':_0xf4ac13[_0x85eb('0x2d')],'type':_0xf4ac13['type'][_0x85eb('0x2e')]};});_0x5255eb[_0x85eb('0x2f')]=_['map'](_0x3570f7,_0x85eb('0x29'));_0x5255eb['query']=_['keys'](_0x37515c[_0x85eb('0x30')]);_0x5255eb[_0x85eb('0x31')]=_[_0x85eb('0x32')](_0x5255eb[_0x85eb('0x2f')],_0x5255eb[_0x85eb('0x30')]);_0xa9b14f[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x5255eb[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x37515c[_0x85eb('0x30')]['fields']));_0xa9b14f[_0x85eb('0x33')]=_0xa9b14f[_0x85eb('0x33')]['length']?_0xa9b14f['attributes']:_0x5255eb[_0x85eb('0x2f')];if(!_0x37515c[_0x85eb('0x30')][_0x85eb('0x35')](_0x85eb('0x36'))){_0xa9b14f[_0x85eb('0x1e')]=qs[_0x85eb('0x1e')](_0x37515c[_0x85eb('0x30')][_0x85eb('0x1e')]);_0xa9b14f[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x37515c[_0x85eb('0x30')][_0x85eb('0x1c')]);}_0xa9b14f[_0x85eb('0x37')]=qs[_0x85eb('0x38')](_0x37515c['query'][_0x85eb('0x38')]);_0xa9b14f[_0x85eb('0x39')]=qs['filters'](_['pick'](_0x37515c[_0x85eb('0x30')],_0x5255eb[_0x85eb('0x31')]),_0x3570f7);if(_0x37515c['query'][_0x85eb('0x3a')]){_0xa9b14f['where']=_[_0x85eb('0x3b')](_0xa9b14f['where'],{'$or':_[_0x85eb('0x2a')](_0x3570f7,function(_0x5ce7e4){if(_0x5ce7e4[_0x85eb('0x3c')]!=='VIRTUAL'){var _0x38ab0f={};_0x38ab0f[_0x5ce7e4[_0x85eb('0x29')]]={'$like':'%'+_0x37515c['query'][_0x85eb('0x3a')]+'%'};return _0x38ab0f;}})});}_0xa9b14f=_['merge']({},_0xa9b14f,_0x37515c[_0x85eb('0x3d')]);var _0x331260={'where':_0xa9b14f['where']};return db[_0x85eb('0x2b')]['count'](_0x331260)['then'](function(_0x1b8a71){_0x4229e9['count']=_0x1b8a71;if(_0x37515c[_0x85eb('0x30')][_0x85eb('0x3e')]){_0xa9b14f['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x85eb('0x3f')](_0xa9b14f);})[_0x85eb('0x25')](function(_0x48160e){_0x4229e9['rows']=_0x48160e;return _0x4229e9;})[_0x85eb('0x25')](respondWithFilteredResult(_0x585f2a,_0xa9b14f))[_0x85eb('0x40')](handleError(_0x585f2a,null));};exports[_0x85eb('0x41')]=function(_0x202681,_0x3be961){var _0x5b7411={'raw':![],'where':{'id':_0x202681[_0x85eb('0x42')]['id']}},_0x5ccf8a={};_0x5ccf8a[_0x85eb('0x2f')]=_[_0x85eb('0x43')](db[_0x85eb('0x2b')][_0x85eb('0x2c')]);_0x5ccf8a[_0x85eb('0x30')]=_[_0x85eb('0x43')](_0x202681[_0x85eb('0x30')]);_0x5ccf8a['filters']=_[_0x85eb('0x32')](_0x5ccf8a[_0x85eb('0x2f')],_0x5ccf8a['query']);_0x5b7411[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x5ccf8a[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x202681[_0x85eb('0x30')][_0x85eb('0x34')]));_0x5b7411['attributes']=_0x5b7411[_0x85eb('0x33')][_0x85eb('0x44')]?_0x5b7411[_0x85eb('0x33')]:_0x5ccf8a[_0x85eb('0x2f')];if(_0x202681[_0x85eb('0x30')][_0x85eb('0x3e')]){_0x5b7411[_0x85eb('0x45')]=[{'all':!![]}];}_0x5b7411=_[_0x85eb('0x3b')]({},_0x5b7411,_0x202681['options']);return db[_0x85eb('0x2b')][_0x85eb('0x46')](_0x5b7411)[_0x85eb('0x25')](handleEntityNotFound(_0x3be961,null))[_0x85eb('0x25')](respondWithResult(_0x3be961,null))[_0x85eb('0x40')](handleError(_0x3be961,null));};exports[_0x85eb('0x47')]=function(_0x3c387a,_0x77fdc4){return db[_0x85eb('0x2b')][_0x85eb('0x47')](_0x3c387a[_0x85eb('0x48')],{})[_0x85eb('0x25')](respondWithResult(_0x77fdc4,0xc9))['catch'](handleError(_0x77fdc4,null));};exports[_0x85eb('0x49')]=function(_0x2c951b,_0x22d9d6){if(_0x2c951b['body']['id']){delete _0x2c951b[_0x85eb('0x48')]['id'];}return db[_0x85eb('0x2b')][_0x85eb('0x46')]({'where':{'id':_0x2c951b[_0x85eb('0x42')]['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x22d9d6,null))['then'](saveUpdates(_0x2c951b[_0x85eb('0x48')],null))[_0x85eb('0x25')](respondWithResult(_0x22d9d6,null))[_0x85eb('0x40')](handleError(_0x22d9d6,null));};exports['destroy']=function(_0xc5cb43,_0x4550fd){return db[_0x85eb('0x2b')]['find']({'where':{'id':_0xc5cb43['params']['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x4550fd,null))['then'](removeEntity(_0x4550fd,null))['catch'](handleError(_0x4550fd,null));};exports[_0x85eb('0x4a')]=function(_0x593723,_0x39316d,_0xfb0ac){var _0x4e3d96={};var _0x4abe5e={};var _0x27ce2a;var _0x249511;return db[_0x85eb('0x2b')][_0x85eb('0x4b')]({'where':{'id':_0x593723[_0x85eb('0x42')]['id']}})['then'](handleEntityNotFound(_0x39316d,null))[_0x85eb('0x25')](function(_0x30062e){if(_0x30062e){_0x27ce2a=_0x30062e;_0x4abe5e[_0x85eb('0x2f')]=_[_0x85eb('0x43')](db[_0x85eb('0x4c')]['rawAttributes']);_0x4abe5e[_0x85eb('0x30')]=_['keys'](_0x593723[_0x85eb('0x30')]);_0x4abe5e[_0x85eb('0x31')]=_['intersection'](_0x4abe5e[_0x85eb('0x2f')],_0x4abe5e[_0x85eb('0x30')]);_0x4e3d96[_0x85eb('0x33')]=_[_0x85eb('0x32')](_0x4abe5e[_0x85eb('0x2f')],qs[_0x85eb('0x34')](_0x593723['query'][_0x85eb('0x34')]));_0x4e3d96['attributes']=_0x4e3d96[_0x85eb('0x33')][_0x85eb('0x44')]?_0x4e3d96['attributes']:_0x4abe5e[_0x85eb('0x2f')];_0x4e3d96[_0x85eb('0x37')]=qs['sort'](_0x593723[_0x85eb('0x30')]['sort']);_0x4e3d96[_0x85eb('0x39')]=qs[_0x85eb('0x31')](_[_0x85eb('0x4d')](_0x593723[_0x85eb('0x30')],_0x4abe5e[_0x85eb('0x31')]));if(_0x593723[_0x85eb('0x30')]['filter']){_0x4e3d96[_0x85eb('0x39')]=_[_0x85eb('0x3b')](_0x4e3d96[_0x85eb('0x39')],{'$or':_[_0x85eb('0x2a')](_0x4e3d96[_0x85eb('0x33')],function(_0x1529dd){var _0x2024df={};_0x2024df[_0x1529dd]={'$like':'%'+_0x593723[_0x85eb('0x30')][_0x85eb('0x3a')]+'%'};return _0x2024df;})});}_0x4e3d96=_[_0x85eb('0x3b')]({},_0x4e3d96,_0x593723[_0x85eb('0x3d')]);return _0x27ce2a['getConfigurations'](_0x4e3d96);}})[_0x85eb('0x25')](function(_0x21b873){if(_0x21b873){_0x249511=_0x21b873[_0x85eb('0x44')];if(!_0x593723[_0x85eb('0x30')][_0x85eb('0x35')](_0x85eb('0x36'))){_0x4e3d96['limit']=qs[_0x85eb('0x1e')](_0x593723['query'][_0x85eb('0x1e')]);_0x4e3d96[_0x85eb('0x1c')]=qs[_0x85eb('0x1c')](_0x593723[_0x85eb('0x30')][_0x85eb('0x1c')]);}return _0x27ce2a['getConfigurations'](_0x4e3d96);}})[_0x85eb('0x25')](function(_0x143d65){if(_0x143d65){return _0x143d65?{'count':_0x249511,'rows':_0x143d65}:null;}})[_0x85eb('0x25')](respondWithResult(_0x39316d,null))[_0x85eb('0x40')](handleError(_0x39316d,null));};exports[_0x85eb('0x4e')]=function(_0x14cab8,_0x23fcf9,_0x5de716){if(_0x14cab8['body']['id']){delete _0x14cab8[_0x85eb('0x48')]['id'];}return db['ZendeskAccount'][_0x85eb('0x4b')]({'where':{'id':_0x14cab8[_0x85eb('0x42')]['id']}})[_0x85eb('0x25')](handleEntityNotFound(_0x23fcf9,null))[_0x85eb('0x25')](function(_0x259ee3){if(_0x259ee3){_0x14cab8['body'][_0x85eb('0x4f')]=_0x259ee3['id'];_0x14cab8[_0x85eb('0x48')][_0x85eb('0x50')]=integrations[_0x85eb('0x51')](_0x14cab8[_0x85eb('0x48')][_0x85eb('0x52')],_0x14cab8['body']['type']);_0x14cab8[_0x85eb('0x48')]['Descriptions']=integrations[_0x85eb('0x53')](_0x14cab8[_0x85eb('0x48')][_0x85eb('0x52')],_0x14cab8[_0x85eb('0x48')][_0x85eb('0x3c')]);return db[_0x85eb('0x4c')]['create'](_0x14cab8[_0x85eb('0x48')],{'include':[{'model':db[_0x85eb('0x54')],'as':_0x85eb('0x50')},{'model':db[_0x85eb('0x54')],'as':'Descriptions'}]});}return null;})[_0x85eb('0x25')](respondWithResult(_0x23fcf9,null))[_0x85eb('0x40')](handleError(_0x23fcf9,null));};exports[_0x85eb('0x55')]=function(_0x14bf0e,_0x5037c7,_0x459317){var _0x2e6734='';return db[_0x85eb('0x2b')][_0x85eb('0x4b')]({'where':{'id':_0x14bf0e[_0x85eb('0x42')]['id']},'attributes':['id',_0x85eb('0x56'),_0x85eb('0x57'),_0x85eb('0x58'),_0x85eb('0x59'),_0x85eb('0x5a')]})[_0x85eb('0x25')](handleEntityNotFound(_0x5037c7,null))[_0x85eb('0x25')](function(_0x1d9d3a){if(_0x1d9d3a){_0x2e6734=_0x1d9d3a[_0x85eb('0x5a')];var _0x2f2464=_0x2e6734[_0x85eb('0x5b')](-0x1);if(_0x2f2464==='/'){_0x2e6734=_0x2e6734[_0x85eb('0x5c')](0x0,_0x2e6734[_0x85eb('0x5d')](_0x2f2464));}var _0x106caa={'method':'GET','uri':util[_0x85eb('0x5e')]('%s/%s',_0x2e6734,_0x85eb('0x5f')),'json':!![]};switch(_0x1d9d3a[_0x85eb('0x59')]){case _0x85eb('0x57'):_0x106caa[_0x85eb('0x60')]={'Authorization':util[_0x85eb('0x5e')](_0x85eb('0x61'),new Buffer(util[_0x85eb('0x5e')](_0x85eb('0x62'),_0x1d9d3a[_0x85eb('0x56')],_0x1d9d3a['password']))[_0x85eb('0x63')](_0x85eb('0x64')))};break;case _0x85eb('0x58'):_0x106caa[_0x85eb('0x60')]={'Authorization':util[_0x85eb('0x5e')]('Basic\x20%s',new Buffer(util[_0x85eb('0x5e')]('%s/token:%s',_0x1d9d3a[_0x85eb('0x56')],_0x1d9d3a[_0x85eb('0x58')]))[_0x85eb('0x63')]('base64'))};break;default:throw new db[(_0x85eb('0x65'))][(_0x85eb('0x66'))](_0x85eb('0x67'));}return rp(_0x106caa);}})['then'](function(_0x588c72){if(_0x588c72){var _0x45a1ef=[_0x85eb('0x68'),_0x85eb('0x69'),_0x85eb('0x6a'),'assignee'];_[_0x85eb('0x6b')](_0x588c72['ticket_fields'],function(_0x11a3bd){return _0x45a1ef[_0x85eb('0x6c')](_0x11a3bd[_0x85eb('0x3c')]);});return{'count':_0x588c72[_0x85eb('0x5f')][_0x85eb('0x44')],'rows':_[_0x85eb('0x2a')](_0x588c72['ticket_fields'],function(_0x9a80a1){return{'id':_0x9a80a1['id'],'name':_0x9a80a1['position']>0x7?_0x9a80a1[_0x85eb('0x6d')]:_0x9a80a1[_0x85eb('0x3c')],'custom':_0x9a80a1[_0x85eb('0x6e')]>0x7?!![]:![],'options':_0x9a80a1[_0x85eb('0x6f')]?_0x9a80a1[_0x85eb('0x6f')]:_0x9a80a1[_0x85eb('0x70')]?_0x9a80a1[_0x85eb('0x70')]:[]};})};}})[_0x85eb('0x25')](respondWithResult(_0x5037c7,null))[_0x85eb('0x40')](function(_0x543146){var _0x3358c8=_0x14bf0e[_0x85eb('0x30')]['test']?0x1f4:_0x543146['statusCode']||0x1f4;logger[_0x85eb('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x85eb('0x55'),_0x3358c8,JSON['stringify'](_0x543146));delete _0x543146[_0x85eb('0x29')];if(_0x3358c8===0x191){_0x3358c8=0x190;}_0x5037c7['status'](_0x3358c8)[_0x85eb('0x71')](_0x14bf0e[_0x85eb('0x30')]['test']?{'message':_0x85eb('0x72'),'statusCode':_0x543146[_0x85eb('0x73')]}:_0x543146);});};
\ No newline at end of file
+var _0xea28=['stack','name','index','map','ZendeskAccount','rawAttributes','fieldName','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','params','length','find','catch','create','body','getConfigurations','ZendeskConfiguration','order','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','ZendeskField','username','password','remoteUri','slice','lastIndexOf','GET','format','ticket_fields','authType','%s:%s','token','Basic\x20%s','%s/token:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','group','assignee','remove','title','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','end','error'];(function(_0x119f87,_0x34b232){var _0x551b51=function(_0x5a597c){while(--_0x5a597c){_0x119f87['push'](_0x119f87['shift']());}};_0x551b51(++_0x34b232);}(_0xea28,0x13a));var _0x8ea2=function(_0x506584,_0x50212c){_0x506584=_0x506584-0x0;var _0x5c13b6=_0xea28[_0x506584];return _0x5c13b6;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ea2('0x16'))(_0x8ea2('0x17'));var utils=require(_0x8ea2('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x8ea2('0x19'));var db=require(_0x8ea2('0x1a'))['db'];var integrations=require(_0x8ea2('0x1b'));function respondWithStatusCode(_0x10aead,_0xe47c0e){_0xe47c0e=_0xe47c0e||0xcc;return function(_0x5e662e){if(_0x5e662e){return _0x10aead[_0x8ea2('0x1c')](_0xe47c0e);}return _0x10aead['status'](_0xe47c0e)['end']();};}function respondWithResult(_0x772bad,_0x4726a7){_0x4726a7=_0x4726a7||0xc8;return function(_0x416bae){if(_0x416bae){return _0x772bad[_0x8ea2('0x1d')](_0x4726a7)[_0x8ea2('0x1e')](_0x416bae);}};}function respondWithFilteredResult(_0xbb9bd1,_0x3cff96){return function(_0x11f5e8){if(_0x11f5e8){var _0x474873=typeof _0x3cff96[_0x8ea2('0x1f')]===_0x8ea2('0x20')&&typeof _0x3cff96[_0x8ea2('0x21')]===_0x8ea2('0x20');var _0xaa8abf=_0x11f5e8[_0x8ea2('0x22')];var _0x174ef2=_0x474873?0x0:_0x3cff96[_0x8ea2('0x1f')];var _0x2a0329=_0x474873?_0x11f5e8[_0x8ea2('0x22')]:_0x3cff96[_0x8ea2('0x1f')]+_0x3cff96[_0x8ea2('0x21')];var _0x287597;if(_0x2a0329>=_0xaa8abf){_0x2a0329=_0xaa8abf;_0x287597=0xc8;}else{_0x287597=0xce;}_0xbb9bd1['status'](_0x287597);return _0xbb9bd1['set'](_0x8ea2('0x23'),_0x174ef2+'-'+_0x2a0329+'/'+_0xaa8abf)[_0x8ea2('0x1e')](_0x11f5e8);}return null;};}function patchUpdates(_0x29151a){return function(_0x5ebc04){try{jsonpatch[_0x8ea2('0x24')](_0x5ebc04,_0x29151a,!![]);}catch(_0x218bd0){return BPromise['reject'](_0x218bd0);}return _0x5ebc04[_0x8ea2('0x25')]();};}function saveUpdates(_0x283f00,_0x37229a){return function(_0x9f9548){if(_0x9f9548){return _0x9f9548[_0x8ea2('0x26')](_0x283f00)[_0x8ea2('0x27')](function(_0x199417){return _0x199417;});}return null;};}function removeEntity(_0x1e4cc9,_0x18ec34){return function(_0x4d5030){if(_0x4d5030){return _0x4d5030[_0x8ea2('0x28')]()['then'](function(){_0x1e4cc9[_0x8ea2('0x1d')](0xcc)[_0x8ea2('0x29')]();});}};}function handleEntityNotFound(_0x29b38f,_0x4e2106){return function(_0x53ed43){if(!_0x53ed43){_0x29b38f[_0x8ea2('0x1c')](0x194);}return _0x53ed43;};}function handleError(_0x4dc7bf,_0x200a49){_0x200a49=_0x200a49||0x1f4;return function(_0x4e786d){logger[_0x8ea2('0x2a')](_0x4e786d[_0x8ea2('0x2b')]);if(_0x4e786d[_0x8ea2('0x2c')]){delete _0x4e786d[_0x8ea2('0x2c')];}_0x4dc7bf['status'](_0x200a49)['send'](_0x4e786d);};}exports[_0x8ea2('0x2d')]=function(_0x4da5b3,_0x4a9875){var _0x287078={},_0x24f187={},_0x41f482={'count':0x0,'rows':[]};var _0x307c74=_[_0x8ea2('0x2e')](db[_0x8ea2('0x2f')][_0x8ea2('0x30')],function(_0x19e868){return{'name':_0x19e868[_0x8ea2('0x31')],'type':_0x19e868['type']['key']};});_0x24f187[_0x8ea2('0x32')]=_[_0x8ea2('0x2e')](_0x307c74,'name');_0x24f187['query']=_[_0x8ea2('0x33')](_0x4da5b3['query']);_0x24f187[_0x8ea2('0x34')]=_[_0x8ea2('0x35')](_0x24f187['model'],_0x24f187[_0x8ea2('0x36')]);_0x287078[_0x8ea2('0x37')]=_[_0x8ea2('0x35')](_0x24f187['model'],qs['fields'](_0x4da5b3['query'][_0x8ea2('0x38')]));_0x287078[_0x8ea2('0x37')]=_0x287078[_0x8ea2('0x37')]['length']?_0x287078[_0x8ea2('0x37')]:_0x24f187[_0x8ea2('0x32')];if(!_0x4da5b3[_0x8ea2('0x36')][_0x8ea2('0x39')](_0x8ea2('0x3a'))){_0x287078[_0x8ea2('0x21')]=qs[_0x8ea2('0x21')](_0x4da5b3[_0x8ea2('0x36')]['limit']);_0x287078[_0x8ea2('0x1f')]=qs[_0x8ea2('0x1f')](_0x4da5b3[_0x8ea2('0x36')][_0x8ea2('0x1f')]);}_0x287078['order']=qs[_0x8ea2('0x3b')](_0x4da5b3['query'][_0x8ea2('0x3b')]);_0x287078[_0x8ea2('0x3c')]=qs[_0x8ea2('0x34')](_[_0x8ea2('0x3d')](_0x4da5b3['query'],_0x24f187[_0x8ea2('0x34')]),_0x307c74);if(_0x4da5b3['query']['filter']){_0x287078[_0x8ea2('0x3c')]=_['merge'](_0x287078[_0x8ea2('0x3c')],{'$or':_[_0x8ea2('0x2e')](_0x307c74,function(_0x1c229d){if(_0x1c229d[_0x8ea2('0x3e')]!==_0x8ea2('0x3f')){var _0x4ae536={};_0x4ae536[_0x1c229d[_0x8ea2('0x2c')]]={'$like':'%'+_0x4da5b3['query'][_0x8ea2('0x40')]+'%'};return _0x4ae536;}})});}_0x287078=_[_0x8ea2('0x41')]({},_0x287078,_0x4da5b3[_0x8ea2('0x42')]);var _0x3995ff={'where':_0x287078['where']};return db[_0x8ea2('0x2f')]['count'](_0x3995ff)[_0x8ea2('0x27')](function(_0x5ba351){_0x41f482[_0x8ea2('0x22')]=_0x5ba351;if(_0x4da5b3[_0x8ea2('0x36')][_0x8ea2('0x43')]){_0x287078[_0x8ea2('0x44')]=[{'all':!![]}];}return db[_0x8ea2('0x2f')][_0x8ea2('0x45')](_0x287078);})[_0x8ea2('0x27')](function(_0x478d5c){_0x41f482['rows']=_0x478d5c;return _0x41f482;})[_0x8ea2('0x27')](respondWithFilteredResult(_0x4a9875,_0x287078))['catch'](handleError(_0x4a9875,null));};exports['show']=function(_0x59e2fa,_0x3cbc09){var _0x5d9ba0={'raw':![],'where':{'id':_0x59e2fa[_0x8ea2('0x46')]['id']}},_0x40a532={};_0x40a532[_0x8ea2('0x32')]=_[_0x8ea2('0x33')](db[_0x8ea2('0x2f')][_0x8ea2('0x30')]);_0x40a532[_0x8ea2('0x36')]=_[_0x8ea2('0x33')](_0x59e2fa['query']);_0x40a532[_0x8ea2('0x34')]=_[_0x8ea2('0x35')](_0x40a532[_0x8ea2('0x32')],_0x40a532['query']);_0x5d9ba0[_0x8ea2('0x37')]=_[_0x8ea2('0x35')](_0x40a532[_0x8ea2('0x32')],qs[_0x8ea2('0x38')](_0x59e2fa[_0x8ea2('0x36')]['fields']));_0x5d9ba0[_0x8ea2('0x37')]=_0x5d9ba0[_0x8ea2('0x37')][_0x8ea2('0x47')]?_0x5d9ba0['attributes']:_0x40a532[_0x8ea2('0x32')];if(_0x59e2fa[_0x8ea2('0x36')][_0x8ea2('0x43')]){_0x5d9ba0[_0x8ea2('0x44')]=[{'all':!![]}];}_0x5d9ba0=_[_0x8ea2('0x41')]({},_0x5d9ba0,_0x59e2fa[_0x8ea2('0x42')]);return db[_0x8ea2('0x2f')][_0x8ea2('0x48')](_0x5d9ba0)[_0x8ea2('0x27')](handleEntityNotFound(_0x3cbc09,null))[_0x8ea2('0x27')](respondWithResult(_0x3cbc09,null))[_0x8ea2('0x49')](handleError(_0x3cbc09,null));};exports[_0x8ea2('0x4a')]=function(_0x220970,_0x12e81f){return db['ZendeskAccount'][_0x8ea2('0x4a')](_0x220970[_0x8ea2('0x4b')],{})[_0x8ea2('0x27')](respondWithResult(_0x12e81f,0xc9))[_0x8ea2('0x49')](handleError(_0x12e81f,null));};exports[_0x8ea2('0x26')]=function(_0x1daa25,_0x11b3ef){if(_0x1daa25[_0x8ea2('0x4b')]['id']){delete _0x1daa25['body']['id'];}return db[_0x8ea2('0x2f')][_0x8ea2('0x48')]({'where':{'id':_0x1daa25[_0x8ea2('0x46')]['id']}})['then'](handleEntityNotFound(_0x11b3ef,null))['then'](saveUpdates(_0x1daa25[_0x8ea2('0x4b')],null))[_0x8ea2('0x27')](respondWithResult(_0x11b3ef,null))[_0x8ea2('0x49')](handleError(_0x11b3ef,null));};exports['destroy']=function(_0x3d86f3,_0x315b5d){return db[_0x8ea2('0x2f')][_0x8ea2('0x48')]({'where':{'id':_0x3d86f3[_0x8ea2('0x46')]['id']}})['then'](handleEntityNotFound(_0x315b5d,null))['then'](removeEntity(_0x315b5d,null))[_0x8ea2('0x49')](handleError(_0x315b5d,null));};exports[_0x8ea2('0x4c')]=function(_0x1b8c4b,_0x5e4268,_0x18cbe9){var _0x100e29={};var _0x442dce={};var _0x54c9d7;var _0x5c6524;return db['ZendeskAccount']['findOne']({'where':{'id':_0x1b8c4b['params']['id']}})[_0x8ea2('0x27')](handleEntityNotFound(_0x5e4268,null))[_0x8ea2('0x27')](function(_0x5f56f8){if(_0x5f56f8){_0x54c9d7=_0x5f56f8;_0x442dce['model']=_[_0x8ea2('0x33')](db[_0x8ea2('0x4d')][_0x8ea2('0x30')]);_0x442dce['query']=_[_0x8ea2('0x33')](_0x1b8c4b[_0x8ea2('0x36')]);_0x442dce['filters']=_[_0x8ea2('0x35')](_0x442dce[_0x8ea2('0x32')],_0x442dce[_0x8ea2('0x36')]);_0x100e29[_0x8ea2('0x37')]=_[_0x8ea2('0x35')](_0x442dce['model'],qs['fields'](_0x1b8c4b['query'][_0x8ea2('0x38')]));_0x100e29[_0x8ea2('0x37')]=_0x100e29[_0x8ea2('0x37')][_0x8ea2('0x47')]?_0x100e29[_0x8ea2('0x37')]:_0x442dce[_0x8ea2('0x32')];_0x100e29[_0x8ea2('0x4e')]=qs['sort'](_0x1b8c4b['query']['sort']);_0x100e29[_0x8ea2('0x3c')]=qs[_0x8ea2('0x34')](_[_0x8ea2('0x3d')](_0x1b8c4b[_0x8ea2('0x36')],_0x442dce['filters']));if(_0x1b8c4b[_0x8ea2('0x36')][_0x8ea2('0x40')]){_0x100e29['where']=_[_0x8ea2('0x41')](_0x100e29[_0x8ea2('0x3c')],{'$or':_[_0x8ea2('0x2e')](_0x100e29[_0x8ea2('0x37')],function(_0x3de1a2){var _0x48c1de={};_0x48c1de[_0x3de1a2]={'$like':'%'+_0x1b8c4b['query']['filter']+'%'};return _0x48c1de;})});}_0x100e29=_[_0x8ea2('0x41')]({},_0x100e29,_0x1b8c4b[_0x8ea2('0x42')]);return _0x54c9d7[_0x8ea2('0x4c')](_0x100e29);}})[_0x8ea2('0x27')](function(_0x3c44ef){if(_0x3c44ef){_0x5c6524=_0x3c44ef['length'];if(!_0x1b8c4b[_0x8ea2('0x36')][_0x8ea2('0x39')](_0x8ea2('0x3a'))){_0x100e29[_0x8ea2('0x21')]=qs['limit'](_0x1b8c4b[_0x8ea2('0x36')]['limit']);_0x100e29[_0x8ea2('0x1f')]=qs['offset'](_0x1b8c4b[_0x8ea2('0x36')][_0x8ea2('0x1f')]);}return _0x54c9d7['getConfigurations'](_0x100e29);}})['then'](function(_0x1d0326){if(_0x1d0326){return _0x1d0326?{'count':_0x5c6524,'rows':_0x1d0326}:null;}})['then'](respondWithResult(_0x5e4268,null))[_0x8ea2('0x49')](handleError(_0x5e4268,null));};exports[_0x8ea2('0x4f')]=function(_0x1c5489,_0x23185e,_0x4dab8f){if(_0x1c5489[_0x8ea2('0x4b')]['id']){delete _0x1c5489[_0x8ea2('0x4b')]['id'];}return db[_0x8ea2('0x2f')][_0x8ea2('0x50')]({'where':{'id':_0x1c5489[_0x8ea2('0x46')]['id']}})[_0x8ea2('0x27')](handleEntityNotFound(_0x23185e,null))[_0x8ea2('0x27')](function(_0x3a78c9){if(_0x3a78c9){_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x51')]=_0x3a78c9['id'];_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x52')]=integrations['getSubjects'](_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x53')],_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x3e')]);_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x54')]=integrations[_0x8ea2('0x55')](_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x53')],_0x1c5489[_0x8ea2('0x4b')][_0x8ea2('0x3e')]);return db[_0x8ea2('0x4d')]['create'](_0x1c5489[_0x8ea2('0x4b')],{'include':[{'model':db[_0x8ea2('0x56')],'as':_0x8ea2('0x52')},{'model':db[_0x8ea2('0x56')],'as':_0x8ea2('0x54')}]});}return null;})['then'](respondWithResult(_0x23185e,null))['catch'](handleError(_0x23185e,null));};exports['getFields']=function(_0x17f2f2,_0xe8b3ed,_0x380066){var _0x31bda0='';return db[_0x8ea2('0x2f')][_0x8ea2('0x50')]({'where':{'id':_0x17f2f2['params']['id']},'attributes':['id',_0x8ea2('0x57'),_0x8ea2('0x58'),'token','authType',_0x8ea2('0x59')]})[_0x8ea2('0x27')](handleEntityNotFound(_0xe8b3ed,null))[_0x8ea2('0x27')](function(_0x289e74){if(_0x289e74){_0x31bda0=_0x289e74[_0x8ea2('0x59')];var _0x32a8f2=_0x31bda0[_0x8ea2('0x5a')](-0x1);if(_0x32a8f2==='/'){_0x31bda0=_0x31bda0['substring'](0x0,_0x31bda0[_0x8ea2('0x5b')](_0x32a8f2));}var _0x3fa2c8={'method':_0x8ea2('0x5c'),'uri':util[_0x8ea2('0x5d')]('%s/%s',_0x31bda0,_0x8ea2('0x5e')),'json':!![]};switch(_0x289e74[_0x8ea2('0x5f')]){case _0x8ea2('0x58'):_0x3fa2c8['headers']={'Authorization':util[_0x8ea2('0x5d')]('Basic\x20%s',new Buffer(util['format'](_0x8ea2('0x60'),_0x289e74[_0x8ea2('0x57')],_0x289e74['password']))['toString']('base64'))};break;case _0x8ea2('0x61'):_0x3fa2c8['headers']={'Authorization':util['format'](_0x8ea2('0x62'),new Buffer(util[_0x8ea2('0x5d')](_0x8ea2('0x63'),_0x289e74[_0x8ea2('0x57')],_0x289e74[_0x8ea2('0x61')]))[_0x8ea2('0x64')](_0x8ea2('0x65')))};break;default:throw new db[(_0x8ea2('0x66'))][(_0x8ea2('0x67'))](_0x8ea2('0x68'));}return rp(_0x3fa2c8);}})[_0x8ea2('0x27')](function(_0x15eab7){if(_0x15eab7){var _0x1961a9=[_0x8ea2('0x69'),'description',_0x8ea2('0x6a'),_0x8ea2('0x6b')];_[_0x8ea2('0x6c')](_0x15eab7['ticket_fields'],function(_0x1807bb){return _0x1961a9['includes'](_0x1807bb[_0x8ea2('0x3e')]);});return{'count':_0x15eab7['ticket_fields'][_0x8ea2('0x47')],'rows':_['map'](_0x15eab7[_0x8ea2('0x5e')],function(_0x165052){return{'id':_0x165052['id'],'name':_0x165052['position']>0x7?_0x165052[_0x8ea2('0x6d')]:_0x165052['type'],'custom':_0x165052[_0x8ea2('0x6e')]>0x7?!![]:![],'options':_0x165052[_0x8ea2('0x6f')]?_0x165052[_0x8ea2('0x6f')]:_0x165052[_0x8ea2('0x70')]?_0x165052[_0x8ea2('0x70')]:[]};})};}})['then'](respondWithResult(_0xe8b3ed,null))['catch'](function(_0x39d0d7){var _0x4b7e5e=_0x17f2f2[_0x8ea2('0x36')][_0x8ea2('0x71')]?0x1f4:_0x39d0d7[_0x8ea2('0x72')]||0x1f4;logger[_0x8ea2('0x2a')](_0x8ea2('0x73'),_0x8ea2('0x74'),_0x4b7e5e,JSON['stringify'](_0x39d0d7));delete _0x39d0d7['name'];if(_0x4b7e5e===0x191){_0x4b7e5e=0x190;}_0xe8b3ed['status'](_0x4b7e5e)[_0x8ea2('0x75')](_0x17f2f2['query'][_0x8ea2('0x71')]?{'message':_0x8ea2('0x76'),'statusCode':_0x39d0d7[_0x8ea2('0x72')]}:_0x39d0d7);});};
\ No newline at end of file
index 5ec1d5f..d64bbaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd169=['./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','int_zendesk_accounts','util','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x507aff,_0x5426ba){var _0x5734f4=function(_0x19bfb9){while(--_0x19bfb9){_0x507aff['push'](_0x507aff['shift']());}};_0x5734f4(++_0x5426ba);}(_0xd169,0x73));var _0x9d16=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xd169[_0x68ee8b];return _0x5148f7;};'use strict';var _=require('lodash');var util=require(_0x9d16('0x0'));var logger=require('../../config/logger')(_0x9d16('0x1'));var moment=require(_0x9d16('0x2'));var BPromise=require(_0x9d16('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9d16('0x4'));var config=require(_0x9d16('0x5'));var attributes=require(_0x9d16('0x6'));var integrations=require(_0x9d16('0x7'));module['exports']=function(_0x4501b8,_0x5d8c39){return _0x4501b8[_0x9d16('0x8')](_0x9d16('0x9'),attributes,{'tableName':_0x9d16('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f10=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount'];(function(_0x5948dd,_0x1f6ac8){var _0xb1f8be=function(_0x31a8d2){while(--_0x31a8d2){_0x5948dd['push'](_0x5948dd['shift']());}};_0xb1f8be(++_0x1f6ac8);}(_0x4f10,0x129));var _0x04f1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4f10[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x04f1('0x0'));var logger=require(_0x04f1('0x1'))('api');var moment=require(_0x04f1('0x2'));var BPromise=require('bluebird');var rp=require(_0x04f1('0x3'));var fs=require('fs');var path=require(_0x04f1('0x4'));var rimraf=require(_0x04f1('0x5'));var config=require(_0x04f1('0x6'));var attributes=require(_0x04f1('0x7'));var integrations=require(_0x04f1('0x8'));module[_0x04f1('0x9')]=function(_0x4591fa,_0x1ba072){return _0x4591fa['define'](_0x04f1('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eec2c66..67578f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b16=['attributes','find','ShowZendeskAccount','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetZendeskAccount','ZendeskAccount','options','raw','where','limit','include','map','model'];(function(_0x130544,_0xe17ab0){var _0x4aa8ce=function(_0x34818c){while(--_0x34818c){_0x130544['push'](_0x130544['shift']());}};_0x4aa8ce(++_0xe17ab0);}(_0x0b16,0x8f));var _0x60b1=function(_0x50d6da,_0x272005){_0x50d6da=_0x50d6da-0x0;var _0x42b20e=_0x0b16[_0x50d6da];return _0x42b20e;};'use strict';var _=require(_0x60b1('0x0'));var util=require('util');var moment=require(_0x60b1('0x1'));var BPromise=require(_0x60b1('0x2'));var rs=require(_0x60b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x60b1('0x4'));var logger=require(_0x60b1('0x5'))(_0x60b1('0x6'));var config=require(_0x60b1('0x7'));var jayson=require(_0x60b1('0x8'));var client=jayson['client'][_0x60b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x283276,_0x2d4f73,_0x2785b2){return new BPromise(function(_0x4ca70b,_0x2de0c9){return client[_0x60b1('0xa')](_0x283276,_0x2785b2)[_0x60b1('0xb')](function(_0x2b1d49){logger[_0x60b1('0xc')](_0x60b1('0xd'),_0x2d4f73,'request\x20sent');logger[_0x60b1('0xe')](_0x60b1('0xf'),_0x2d4f73,'request\x20sent',JSON[_0x60b1('0x10')](_0x2b1d49));if(_0x2b1d49[_0x60b1('0x11')]){if(_0x2b1d49['error'][_0x60b1('0x12')]===0x1f4){logger[_0x60b1('0x11')](_0x60b1('0xd'),_0x2d4f73,_0x2b1d49[_0x60b1('0x11')][_0x60b1('0x13')]);return _0x2de0c9(_0x2b1d49[_0x60b1('0x11')][_0x60b1('0x13')]);}logger[_0x60b1('0x11')](_0x60b1('0xd'),_0x2d4f73,_0x2b1d49[_0x60b1('0x11')]['message']);return _0x4ca70b(_0x2b1d49[_0x60b1('0x11')][_0x60b1('0x13')]);}else{logger[_0x60b1('0xc')](_0x60b1('0xd'),_0x2d4f73,_0x60b1('0x14'));_0x4ca70b(_0x2b1d49[_0x60b1('0x15')][_0x60b1('0x13')]);}})[_0x60b1('0x16')](function(_0x559d80){logger[_0x60b1('0x11')](_0x60b1('0xd'),_0x2d4f73,_0x559d80);_0x2de0c9(_0x559d80);});});}exports[_0x60b1('0x17')]=function(_0x2d38bc){var _0x314fbf=this;return new Promise(function(_0x2b9f01,_0x4b918b){return db[_0x60b1('0x18')]['findAll']({'raw':_0x2d38bc[_0x60b1('0x19')]?_0x2d38bc[_0x60b1('0x19')][_0x60b1('0x1a')]===undefined?!![]:![]:!![],'where':_0x2d38bc[_0x60b1('0x19')]?_0x2d38bc[_0x60b1('0x19')][_0x60b1('0x1b')]||null:null,'attributes':_0x2d38bc[_0x60b1('0x19')]?_0x2d38bc['options']['attributes']||null:null,'limit':_0x2d38bc['options']?_0x2d38bc[_0x60b1('0x19')][_0x60b1('0x1c')]||null:null,'include':_0x2d38bc[_0x60b1('0x19')]?_0x2d38bc[_0x60b1('0x19')][_0x60b1('0x1d')]?_[_0x60b1('0x1e')](_0x2d38bc[_0x60b1('0x19')]['include'],function(_0x262eb5){return{'model':db[_0x262eb5[_0x60b1('0x1f')]],'as':_0x262eb5['as'],'attributes':_0x262eb5[_0x60b1('0x20')],'include':_0x262eb5['include']?_[_0x60b1('0x1e')](_0x262eb5[_0x60b1('0x1d')],function(_0x221ebc){return{'model':db[_0x221ebc['model']],'as':_0x221ebc['as'],'attributes':_0x221ebc['attributes'],'include':_0x221ebc[_0x60b1('0x1d')]?_[_0x60b1('0x1e')](_0x221ebc[_0x60b1('0x1d')],function(_0x505724){return{'model':db[_0x505724[_0x60b1('0x1f')]],'as':_0x505724['as'],'attributes':_0x505724[_0x60b1('0x20')]};}):[]};}):[]};}):[]:[]})[_0x60b1('0xb')](function(_0x1ef7a1){logger[_0x60b1('0xc')](_0x60b1('0x17'),_0x2d38bc);logger[_0x60b1('0xe')](_0x60b1('0x17'),_0x2d38bc,JSON[_0x60b1('0x10')](_0x1ef7a1));_0x2b9f01(_0x1ef7a1);})[_0x60b1('0x16')](function(_0x7765d2){logger[_0x60b1('0x11')](_0x60b1('0x17'),_0x7765d2['message'],_0x2d38bc);_0x4b918b(_0x314fbf['error'](0x1f4,_0x7765d2[_0x60b1('0x13')]));});});};exports['ShowZendeskAccount']=function(_0x31877f){var _0x1e787b=this;return new Promise(function(_0x29813f,_0x53b807){return db[_0x60b1('0x18')][_0x60b1('0x21')]({'raw':_0x31877f[_0x60b1('0x19')]?_0x31877f[_0x60b1('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x31877f[_0x60b1('0x19')]?_0x31877f[_0x60b1('0x19')][_0x60b1('0x1b')]||null:null,'attributes':_0x31877f[_0x60b1('0x19')]?_0x31877f['options'][_0x60b1('0x20')]||null:null,'include':_0x31877f[_0x60b1('0x19')]?_0x31877f['options']['include']?_[_0x60b1('0x1e')](_0x31877f[_0x60b1('0x19')]['include'],function(_0x521e84){return{'model':db[_0x521e84[_0x60b1('0x1f')]],'as':_0x521e84['as'],'attributes':_0x521e84[_0x60b1('0x20')],'include':_0x521e84[_0x60b1('0x1d')]?_[_0x60b1('0x1e')](_0x521e84['include'],function(_0x20d345){return{'model':db[_0x20d345[_0x60b1('0x1f')]],'as':_0x20d345['as'],'attributes':_0x20d345[_0x60b1('0x20')],'include':_0x20d345[_0x60b1('0x1d')]?_['map'](_0x20d345[_0x60b1('0x1d')],function(_0x202284){return{'model':db[_0x202284[_0x60b1('0x1f')]],'as':_0x202284['as'],'attributes':_0x202284['attributes']};}):[]};}):[]};}):[]:[]})[_0x60b1('0xb')](function(_0x4a2f3c){logger['info']('ShowZendeskAccount',_0x31877f);logger[_0x60b1('0xe')](_0x60b1('0x22'),_0x31877f,JSON[_0x60b1('0x10')](_0x4a2f3c));_0x29813f(_0x4a2f3c);})[_0x60b1('0x16')](function(_0x7bf265){logger[_0x60b1('0x11')](_0x60b1('0x22'),_0x7bf265['message'],_0x31877f);_0x53b807(_0x1e787b[_0x60b1('0x11')](0x1f4,_0x7bf265[_0x60b1('0x13')]));});});};
\ No newline at end of file
+var _0xd9bf=['code','message','catch','GetZendeskAccount','ZendeskAccount','options','raw','limit','include','map','model','attributes','ShowZendeskAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xd9bf,0x162));var _0xfd9b=function(_0x367d3d,_0xb2950c){_0x367d3d=_0x367d3d-0x0;var _0x96fd0d=_0xd9bf[_0x367d3d];return _0x96fd0d;};'use strict';var _=require(_0xfd9b('0x0'));var util=require(_0xfd9b('0x1'));var moment=require(_0xfd9b('0x2'));var BPromise=require(_0xfd9b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd9b('0x4'));var db=require(_0xfd9b('0x5'))['db'];var utils=require(_0xfd9b('0x6'));var logger=require('../../config/logger')(_0xfd9b('0x7'));var config=require('../../config/environment');var jayson=require(_0xfd9b('0x8'));var client=jayson['client'][_0xfd9b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f2519,_0x5343d7,_0x5361c5){return new BPromise(function(_0x4882c8,_0x25da82){return client[_0xfd9b('0xa')](_0x2f2519,_0x5361c5)[_0xfd9b('0xb')](function(_0x56b6c8){logger[_0xfd9b('0xc')](_0xfd9b('0xd'),_0x5343d7,_0xfd9b('0xe'));logger[_0xfd9b('0xf')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x5343d7,'request\x20sent',JSON[_0xfd9b('0x10')](_0x56b6c8));if(_0x56b6c8[_0xfd9b('0x11')]){if(_0x56b6c8[_0xfd9b('0x11')][_0xfd9b('0x12')]===0x1f4){logger[_0xfd9b('0x11')](_0xfd9b('0xd'),_0x5343d7,_0x56b6c8[_0xfd9b('0x11')][_0xfd9b('0x13')]);return _0x25da82(_0x56b6c8['error']['message']);}logger[_0xfd9b('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0x5343d7,_0x56b6c8[_0xfd9b('0x11')][_0xfd9b('0x13')]);return _0x4882c8(_0x56b6c8['error'][_0xfd9b('0x13')]);}else{logger[_0xfd9b('0xc')]('ZendeskAccount,\x20%s,\x20%s',_0x5343d7,_0xfd9b('0xe'));_0x4882c8(_0x56b6c8['result']['message']);}})[_0xfd9b('0x14')](function(_0x443b5e){logger[_0xfd9b('0x11')](_0xfd9b('0xd'),_0x5343d7,_0x443b5e);_0x25da82(_0x443b5e);});});}exports[_0xfd9b('0x15')]=function(_0x3d498a){var _0x4b0349=this;return new Promise(function(_0x44403c,_0x2ef1a6){return db[_0xfd9b('0x16')]['findAll']({'raw':_0x3d498a[_0xfd9b('0x17')]?_0x3d498a['options'][_0xfd9b('0x18')]===undefined?!![]:![]:!![],'where':_0x3d498a[_0xfd9b('0x17')]?_0x3d498a[_0xfd9b('0x17')]['where']||null:null,'attributes':_0x3d498a['options']?_0x3d498a[_0xfd9b('0x17')]['attributes']||null:null,'limit':_0x3d498a[_0xfd9b('0x17')]?_0x3d498a[_0xfd9b('0x17')][_0xfd9b('0x19')]||null:null,'include':_0x3d498a[_0xfd9b('0x17')]?_0x3d498a['options'][_0xfd9b('0x1a')]?_[_0xfd9b('0x1b')](_0x3d498a[_0xfd9b('0x17')][_0xfd9b('0x1a')],function(_0x30531a){return{'model':db[_0x30531a[_0xfd9b('0x1c')]],'as':_0x30531a['as'],'attributes':_0x30531a[_0xfd9b('0x1d')],'include':_0x30531a[_0xfd9b('0x1a')]?_[_0xfd9b('0x1b')](_0x30531a[_0xfd9b('0x1a')],function(_0x4ad55c){return{'model':db[_0x4ad55c[_0xfd9b('0x1c')]],'as':_0x4ad55c['as'],'attributes':_0x4ad55c[_0xfd9b('0x1d')],'include':_0x4ad55c['include']?_[_0xfd9b('0x1b')](_0x4ad55c[_0xfd9b('0x1a')],function(_0x3a02e2){return{'model':db[_0x3a02e2['model']],'as':_0x3a02e2['as'],'attributes':_0x3a02e2[_0xfd9b('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56209c){logger[_0xfd9b('0xc')](_0xfd9b('0x15'),_0x3d498a);logger[_0xfd9b('0xf')](_0xfd9b('0x15'),_0x3d498a,JSON[_0xfd9b('0x10')](_0x56209c));_0x44403c(_0x56209c);})[_0xfd9b('0x14')](function(_0x108140){logger[_0xfd9b('0x11')](_0xfd9b('0x15'),_0x108140[_0xfd9b('0x13')],_0x3d498a);_0x2ef1a6(_0x4b0349[_0xfd9b('0x11')](0x1f4,_0x108140[_0xfd9b('0x13')]));});});};exports[_0xfd9b('0x1e')]=function(_0x657455){var _0x567931=this;return new Promise(function(_0x976266,_0x16aef2){return db['ZendeskAccount']['find']({'raw':_0x657455['options']?_0x657455['options'][_0xfd9b('0x18')]===undefined?!![]:![]:!![],'where':_0x657455[_0xfd9b('0x17')]?_0x657455[_0xfd9b('0x17')]['where']||null:null,'attributes':_0x657455[_0xfd9b('0x17')]?_0x657455[_0xfd9b('0x17')][_0xfd9b('0x1d')]||null:null,'include':_0x657455['options']?_0x657455[_0xfd9b('0x17')][_0xfd9b('0x1a')]?_[_0xfd9b('0x1b')](_0x657455[_0xfd9b('0x17')][_0xfd9b('0x1a')],function(_0x3a73fc){return{'model':db[_0x3a73fc[_0xfd9b('0x1c')]],'as':_0x3a73fc['as'],'attributes':_0x3a73fc[_0xfd9b('0x1d')],'include':_0x3a73fc[_0xfd9b('0x1a')]?_[_0xfd9b('0x1b')](_0x3a73fc[_0xfd9b('0x1a')],function(_0x150194){return{'model':db[_0x150194['model']],'as':_0x150194['as'],'attributes':_0x150194[_0xfd9b('0x1d')],'include':_0x150194[_0xfd9b('0x1a')]?_[_0xfd9b('0x1b')](_0x150194[_0xfd9b('0x1a')],function(_0x3865b3){return{'model':db[_0x3865b3[_0xfd9b('0x1c')]],'as':_0x3865b3['as'],'attributes':_0x3865b3[_0xfd9b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xfd9b('0xb')](function(_0x3924ec){logger['info'](_0xfd9b('0x1e'),_0x657455);logger[_0xfd9b('0xf')](_0xfd9b('0x1e'),_0x657455,JSON[_0xfd9b('0x10')](_0x3924ec));_0x976266(_0x3924ec);})[_0xfd9b('0x14')](function(_0x1f6afa){logger['error'](_0xfd9b('0x1e'),_0x1f6afa['message'],_0x657455);_0x16aef2(_0x567931['error'](0x1f4,_0x1f6afa[_0xfd9b('0x13')]));});});};
\ No newline at end of file
index 0cfed94..addab14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xa0b885,_0x3dd58c){var _0x95c44a=function(_0x190dc6){while(--_0x190dc6){_0xa0b885['push'](_0xa0b885['shift']());}};_0x95c44a(++_0x3dd58c);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x575a38,_0x2e83d7){_0x575a38=_0x575a38-0x0;var _0x5a7bdd=_0xe5b5[_0x575a38];return _0x5a7bdd;};'use strict';var multer=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var path=require(_0x5e5b('0x2'));var timeout=require(_0x5e5b('0x3'));var express=require(_0x5e5b('0x4'));var router=express[_0x5e5b('0x5')]();var fs_extra=require(_0x5e5b('0x6'));var auth=require(_0x5e5b('0x7'));var interaction=require(_0x5e5b('0x8'));var config=require(_0x5e5b('0x9'));var controller=require(_0x5e5b('0xa'));router[_0x5e5b('0xb')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xd')]);router[_0x5e5b('0xb')](_0x5e5b('0xe'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0xf')]);router[_0x5e5b('0xb')](_0x5e5b('0x10'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x11')]);router[_0x5e5b('0xb')]('/:id/subjects',auth[_0x5e5b('0xc')](),controller['getSubjects']);router[_0x5e5b('0xb')](_0x5e5b('0x12'),auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x13')]);router['get']('/:id/tags',auth['isAuthenticated'](),controller[_0x5e5b('0x14')]);router[_0x5e5b('0x15')]('/',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x16')]);router[_0x5e5b('0x15')](_0x5e5b('0x17'),auth[_0x5e5b('0xc')](),controller['setTags']);router[_0x5e5b('0x18')](_0x5e5b('0xe'),auth['isAuthenticated'](),controller[_0x5e5b('0x19')]);router['delete']('/:id',auth[_0x5e5b('0xc')](),controller[_0x5e5b('0x1a')]);module[_0x5e5b('0x1b')]=router;
\ No newline at end of file
+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(_0x3f4f3b,_0x2d7be2){var _0xfc6f02=function(_0x226ae2){while(--_0x226ae2){_0x3f4f3b['push'](_0x3f4f3b['shift']());}};_0xfc6f02(++_0x2d7be2);}(_0xac4a,0x13f));var _0xaac4=function(_0x45802c,_0x949f49){_0x45802c=_0x45802c-0x0;var _0x46aea0=_0xac4a[_0x45802c];return _0x46aea0;};'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
index b874184..c2a7f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4031=['STRING'];(function(_0x5a884f,_0x10d7c8){var _0x210d28=function(_0x376657){while(--_0x376657){_0x5a884f['push'](_0x5a884f['shift']());}};_0x210d28(++_0x10d7c8);}(_0x4031,0xdf));var _0x1403=function(_0x1911d8,_0x45ce58){_0x1911d8=_0x1911d8-0x0;var _0x86914d=_0x4031[_0x1911d8];return _0x86914d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1403('0x0')]},'description':{'type':Sequelize[_0x1403('0x0')]}};
\ No newline at end of file
+var _0x16ef=['sequelize','exports','STRING'];(function(_0x5cf94d,_0x3e9b52){var _0x3242a6=function(_0x22e8b8){while(--_0x22e8b8){_0x5cf94d['push'](_0x5cf94d['shift']());}};_0x3242a6(++_0x3e9b52);}(_0x16ef,0x126));var _0xf16e=function(_0x3334b9,_0x5235d5){_0x3334b9=_0x3334b9-0x0;var _0x82336b=_0x16ef[_0x3334b9];return _0x82336b;};'use strict';var Sequelize=require(_0xf16e('0x0'));module[_0xf16e('0x1')]={'name':{'type':Sequelize[_0xf16e('0x2')]},'description':{'type':Sequelize[_0xf16e('0x2')]}};
\ No newline at end of file
index 0569386..8ce33dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee3c=['then','destroy','end','error','stack','name','send','ZendeskConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','options','include','rows','catch','keys','includeAll','find','create','body','params','getFields','findOne','ZendeskField','rawAttributes','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','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','../../mysqldb','sendStatus','status','undefined','count','offset','limit','Content-Range','json','apply','reject','save','update'];(function(_0x5e909d,_0xcb0787){var _0x4cf7b5=function(_0x4581c6){while(--_0x4581c6){_0x5e909d['push'](_0x5e909d['shift']());}};_0x4cf7b5(++_0xcb0787);}(_0xee3c,0x138));var _0xcee3=function(_0x4af857,_0x16d3a3){_0x4af857=_0x4af857-0x0;var _0xd29c71=_0xee3c[_0x4af857];return _0xd29c71;};'use strict';var emlformat=require(_0xcee3('0x0'));var rimraf=require(_0xcee3('0x1'));var zipdir=require(_0xcee3('0x2'));var jsonpatch=require(_0xcee3('0x3'));var rp=require(_0xcee3('0x4'));var moment=require(_0xcee3('0x5'));var BPromise=require(_0xcee3('0x6'));var Mustache=require(_0xcee3('0x7'));var util=require('util');var path=require(_0xcee3('0x8'));var sox=require(_0xcee3('0x9'));var csv=require('to-csv');var ejs=require(_0xcee3('0xa'));var fs=require('fs');var fs_extra=require(_0xcee3('0xb'));var _=require(_0xcee3('0xc'));var squel=require(_0xcee3('0xd'));var crypto=require(_0xcee3('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xcee3('0xf'));var toCsv=require(_0xcee3('0x10'));var querystring=require(_0xcee3('0x11'));var Papa=require(_0xcee3('0x12'));var Redis=require(_0xcee3('0x13'));var authService=require(_0xcee3('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcee3('0x15'));var hardwareService=require(_0xcee3('0x16'));var logger=require(_0xcee3('0x17'))(_0xcee3('0x18'));var utils=require(_0xcee3('0x19'));var config=require(_0xcee3('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xcee3('0x1b'))['db'];function respondWithStatusCode(_0x3c5b12,_0x18a077){_0x18a077=_0x18a077||0xcc;return function(_0x359161){if(_0x359161){return _0x3c5b12[_0xcee3('0x1c')](_0x18a077);}return _0x3c5b12[_0xcee3('0x1d')](_0x18a077)['end']();};}function respondWithResult(_0x372b97,_0x37908e){_0x37908e=_0x37908e||0xc8;return function(_0x2fa2b8){if(_0x2fa2b8){return _0x372b97[_0xcee3('0x1d')](_0x37908e)['json'](_0x2fa2b8);}};}function respondWithFilteredResult(_0x369d3c,_0x74bedd){return function(_0x511954){if(_0x511954){var _0x48f044=typeof _0x74bedd['offset']===_0xcee3('0x1e')&&typeof _0x74bedd['limit']===_0xcee3('0x1e');var _0x494e1c=_0x511954[_0xcee3('0x1f')];var _0x48aa24=_0x48f044?0x0:_0x74bedd['offset'];var _0x9f50fa=_0x48f044?_0x511954[_0xcee3('0x1f')]:_0x74bedd[_0xcee3('0x20')]+_0x74bedd[_0xcee3('0x21')];var _0x3df0a5;if(_0x9f50fa>=_0x494e1c){_0x9f50fa=_0x494e1c;_0x3df0a5=0xc8;}else{_0x3df0a5=0xce;}_0x369d3c[_0xcee3('0x1d')](_0x3df0a5);return _0x369d3c['set'](_0xcee3('0x22'),_0x48aa24+'-'+_0x9f50fa+'/'+_0x494e1c)[_0xcee3('0x23')](_0x511954);}return null;};}function patchUpdates(_0x1b80f6){return function(_0x5e4eed){try{jsonpatch[_0xcee3('0x24')](_0x5e4eed,_0x1b80f6,!![]);}catch(_0x3621f8){return BPromise[_0xcee3('0x25')](_0x3621f8);}return _0x5e4eed[_0xcee3('0x26')]();};}function saveUpdates(_0x5a39d1,_0x85c5dc){return function(_0x1e7845){if(_0x1e7845){return _0x1e7845[_0xcee3('0x27')](_0x5a39d1)[_0xcee3('0x28')](function(_0x3c02e0){return _0x3c02e0;});}return null;};}function removeEntity(_0x19e854,_0xb15580){return function(_0x1c6709){if(_0x1c6709){return _0x1c6709[_0xcee3('0x29')]()[_0xcee3('0x28')](function(){_0x19e854[_0xcee3('0x1d')](0xcc)[_0xcee3('0x2a')]();});}};}function handleEntityNotFound(_0x2c07e8,_0x5e89c3){return function(_0x3614cb){if(!_0x3614cb){_0x2c07e8['sendStatus'](0x194);}return _0x3614cb;};}function handleError(_0x478573,_0x144be4){_0x144be4=_0x144be4||0x1f4;return function(_0x110b11){logger[_0xcee3('0x2b')](_0x110b11[_0xcee3('0x2c')]);if(_0x110b11[_0xcee3('0x2d')]){delete _0x110b11[_0xcee3('0x2d')];}_0x478573[_0xcee3('0x1d')](_0x144be4)[_0xcee3('0x2e')](_0x110b11);};}exports['index']=function(_0x1d8b2f,_0x5a74f1){var _0x18f55b={},_0x5639c6={},_0x190eaf={'count':0x0,'rows':[]};var _0x1ee8fc=_['map'](db[_0xcee3('0x2f')]['rawAttributes'],function(_0x558229){return{'name':_0x558229[_0xcee3('0x30')],'type':_0x558229[_0xcee3('0x31')][_0xcee3('0x32')]};});_0x5639c6[_0xcee3('0x33')]=_['map'](_0x1ee8fc,_0xcee3('0x2d'));_0x5639c6[_0xcee3('0x34')]=_['keys'](_0x1d8b2f[_0xcee3('0x34')]);_0x5639c6[_0xcee3('0x35')]=_[_0xcee3('0x36')](_0x5639c6['model'],_0x5639c6[_0xcee3('0x34')]);_0x18f55b[_0xcee3('0x37')]=_['intersection'](_0x5639c6['model'],qs[_0xcee3('0x38')](_0x1d8b2f[_0xcee3('0x34')][_0xcee3('0x38')]));_0x18f55b['attributes']=_0x18f55b['attributes'][_0xcee3('0x39')]?_0x18f55b[_0xcee3('0x37')]:_0x5639c6[_0xcee3('0x33')];if(!_0x1d8b2f['query'][_0xcee3('0x3a')](_0xcee3('0x3b'))){_0x18f55b[_0xcee3('0x21')]=qs[_0xcee3('0x21')](_0x1d8b2f[_0xcee3('0x34')][_0xcee3('0x21')]);_0x18f55b[_0xcee3('0x20')]=qs[_0xcee3('0x20')](_0x1d8b2f[_0xcee3('0x34')][_0xcee3('0x20')]);}_0x18f55b[_0xcee3('0x3c')]=qs[_0xcee3('0x3d')](_0x1d8b2f[_0xcee3('0x34')][_0xcee3('0x3d')]);_0x18f55b[_0xcee3('0x3e')]=qs['filters'](_[_0xcee3('0x3f')](_0x1d8b2f[_0xcee3('0x34')],_0x5639c6[_0xcee3('0x35')]),_0x1ee8fc);if(_0x1d8b2f['query'][_0xcee3('0x40')]){_0x18f55b['where']=_['merge'](_0x18f55b[_0xcee3('0x3e')],{'$or':_[_0xcee3('0x41')](_0x1ee8fc,function(_0x25d701){if(_0x25d701[_0xcee3('0x31')]!==_0xcee3('0x42')){var _0x356d30={};_0x356d30[_0x25d701[_0xcee3('0x2d')]]={'$like':'%'+_0x1d8b2f[_0xcee3('0x34')][_0xcee3('0x40')]+'%'};return _0x356d30;}})});}_0x18f55b=_[_0xcee3('0x43')]({},_0x18f55b,_0x1d8b2f[_0xcee3('0x44')]);var _0x8dfdc9={'where':_0x18f55b[_0xcee3('0x3e')]};return db[_0xcee3('0x2f')][_0xcee3('0x1f')](_0x8dfdc9)['then'](function(_0x4d28bc){_0x190eaf['count']=_0x4d28bc;if(_0x1d8b2f[_0xcee3('0x34')]['includeAll']){_0x18f55b[_0xcee3('0x45')]=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x18f55b);})['then'](function(_0x46d1f0){_0x190eaf[_0xcee3('0x46')]=_0x46d1f0;return _0x190eaf;})['then'](respondWithFilteredResult(_0x5a74f1,_0x18f55b))[_0xcee3('0x47')](handleError(_0x5a74f1,null));};exports['show']=function(_0x14143e,_0x27f5f6){var _0x2e36ff={'raw':![],'where':{'id':_0x14143e['params']['id']}},_0x22e53d={};_0x22e53d[_0xcee3('0x33')]=_[_0xcee3('0x48')](db[_0xcee3('0x2f')]['rawAttributes']);_0x22e53d[_0xcee3('0x34')]=_[_0xcee3('0x48')](_0x14143e[_0xcee3('0x34')]);_0x22e53d[_0xcee3('0x35')]=_['intersection'](_0x22e53d[_0xcee3('0x33')],_0x22e53d[_0xcee3('0x34')]);_0x2e36ff[_0xcee3('0x37')]=_['intersection'](_0x22e53d['model'],qs[_0xcee3('0x38')](_0x14143e['query'][_0xcee3('0x38')]));_0x2e36ff[_0xcee3('0x37')]=_0x2e36ff[_0xcee3('0x37')][_0xcee3('0x39')]?_0x2e36ff[_0xcee3('0x37')]:_0x22e53d[_0xcee3('0x33')];if(_0x14143e[_0xcee3('0x34')][_0xcee3('0x49')]){_0x2e36ff['include']=[{'all':!![]}];}_0x2e36ff=_[_0xcee3('0x43')]({},_0x2e36ff,_0x14143e[_0xcee3('0x44')]);return db[_0xcee3('0x2f')][_0xcee3('0x4a')](_0x2e36ff)[_0xcee3('0x28')](handleEntityNotFound(_0x27f5f6,null))['then'](respondWithResult(_0x27f5f6,null))[_0xcee3('0x47')](handleError(_0x27f5f6,null));};exports[_0xcee3('0x4b')]=function(_0x30d344,_0x11e091){return db['ZendeskConfiguration'][_0xcee3('0x4b')](_0x30d344[_0xcee3('0x4c')],{})['then'](respondWithResult(_0x11e091,0xc9))['catch'](handleError(_0x11e091,null));};exports[_0xcee3('0x27')]=function(_0x3ab09c,_0x5a69be){if(_0x3ab09c['body']['id']){delete _0x3ab09c['body']['id'];}return db[_0xcee3('0x2f')][_0xcee3('0x4a')]({'where':{'id':_0x3ab09c[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x5a69be,null))[_0xcee3('0x28')](saveUpdates(_0x3ab09c[_0xcee3('0x4c')],null))[_0xcee3('0x28')](respondWithResult(_0x5a69be,null))[_0xcee3('0x47')](handleError(_0x5a69be,null));};exports[_0xcee3('0x29')]=function(_0x9f9023,_0x19e145){return db[_0xcee3('0x2f')]['find']({'where':{'id':_0x9f9023['params']['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x19e145,null))['then'](removeEntity(_0x19e145,null))[_0xcee3('0x47')](handleError(_0x19e145,null));};exports[_0xcee3('0x4e')]=function(_0x48781f,_0x40fada,_0x3ed8b2){var _0x46e120={};var _0x56925c={};var _0x5a4e0a;var _0x30f19a;return db['ZendeskConfiguration'][_0xcee3('0x4f')]({'where':{'id':_0x48781f[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x40fada,null))[_0xcee3('0x28')](function(_0x5e1006){if(_0x5e1006){_0x5a4e0a=_0x5e1006;_0x56925c[_0xcee3('0x33')]=_[_0xcee3('0x48')](db[_0xcee3('0x50')][_0xcee3('0x51')]);_0x56925c['query']=_['keys'](_0x48781f['query']);_0x56925c[_0xcee3('0x35')]=_['intersection'](_0x56925c[_0xcee3('0x33')],_0x56925c[_0xcee3('0x34')]);_0x46e120[_0xcee3('0x37')]=_[_0xcee3('0x36')](_0x56925c[_0xcee3('0x33')],qs['fields'](_0x48781f[_0xcee3('0x34')]['fields']));_0x46e120[_0xcee3('0x37')]=_0x46e120[_0xcee3('0x37')][_0xcee3('0x39')]?_0x46e120['attributes']:_0x56925c[_0xcee3('0x33')];_0x46e120['order']=qs['sort'](_0x48781f[_0xcee3('0x34')]['sort']);_0x46e120[_0xcee3('0x3e')]=qs['filters'](_[_0xcee3('0x3f')](_0x48781f['query'],_0x56925c[_0xcee3('0x35')]));if(_0x48781f[_0xcee3('0x34')][_0xcee3('0x40')]){_0x46e120[_0xcee3('0x3e')]=_[_0xcee3('0x43')](_0x46e120[_0xcee3('0x3e')],{'$or':_[_0xcee3('0x41')](_0x46e120[_0xcee3('0x37')],function(_0x33ffc5){var _0x4f8efc={};_0x4f8efc[_0x33ffc5]={'$like':'%'+_0x48781f['query'][_0xcee3('0x40')]+'%'};return _0x4f8efc;})});}_0x46e120=_[_0xcee3('0x43')]({},_0x46e120,_0x48781f[_0xcee3('0x44')]);return _0x5a4e0a['getFields'](_0x46e120);}})[_0xcee3('0x28')](function(_0x571592){if(_0x571592){_0x30f19a=_0x571592['length'];if(!_0x48781f[_0xcee3('0x34')][_0xcee3('0x3a')](_0xcee3('0x3b'))){_0x46e120[_0xcee3('0x21')]=qs[_0xcee3('0x21')](_0x48781f[_0xcee3('0x34')][_0xcee3('0x21')]);_0x46e120[_0xcee3('0x20')]=qs[_0xcee3('0x20')](_0x48781f['query'][_0xcee3('0x20')]);}return _0x5a4e0a[_0xcee3('0x4e')](_0x46e120);}})['then'](function(_0x2a2e6b){if(_0x2a2e6b){return _0x2a2e6b?{'count':_0x30f19a,'rows':_0x2a2e6b}:null;}})[_0xcee3('0x28')](respondWithResult(_0x40fada,null))[_0xcee3('0x47')](handleError(_0x40fada,null));};exports[_0xcee3('0x52')]=function(_0x4a2f91,_0x33543a,_0x1e7898){var _0xdb3306={};var _0x3da5a1={};var _0x38ab57;var _0x478c5b;return db['ZendeskConfiguration'][_0xcee3('0x4f')]({'where':{'id':_0x4a2f91[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x33543a,null))[_0xcee3('0x28')](function(_0x21e2a5){if(_0x21e2a5){_0x38ab57=_0x21e2a5;_0x3da5a1[_0xcee3('0x33')]=_[_0xcee3('0x48')](db[_0xcee3('0x50')][_0xcee3('0x51')]);_0x3da5a1[_0xcee3('0x34')]=_['keys'](_0x4a2f91['query']);_0x3da5a1['filters']=_[_0xcee3('0x36')](_0x3da5a1[_0xcee3('0x33')],_0x3da5a1['query']);_0xdb3306[_0xcee3('0x37')]=_['intersection'](_0x3da5a1[_0xcee3('0x33')],qs[_0xcee3('0x38')](_0x4a2f91[_0xcee3('0x34')][_0xcee3('0x38')]));_0xdb3306['attributes']=_0xdb3306['attributes'][_0xcee3('0x39')]?_0xdb3306[_0xcee3('0x37')]:_0x3da5a1[_0xcee3('0x33')];_0xdb3306[_0xcee3('0x3c')]=qs['sort'](_0x4a2f91['query'][_0xcee3('0x3d')]);_0xdb3306[_0xcee3('0x3e')]=qs[_0xcee3('0x35')](_[_0xcee3('0x3f')](_0x4a2f91[_0xcee3('0x34')],_0x3da5a1['filters']));if(_0x4a2f91['query'][_0xcee3('0x40')]){_0xdb3306[_0xcee3('0x3e')]=_['merge'](_0xdb3306['where'],{'$or':_[_0xcee3('0x41')](_0xdb3306[_0xcee3('0x37')],function(_0x32abe2){var _0xb04dbe={};_0xb04dbe[_0x32abe2]={'$like':'%'+_0x4a2f91[_0xcee3('0x34')][_0xcee3('0x40')]+'%'};return _0xb04dbe;})});}_0xdb3306=_[_0xcee3('0x43')]({},_0xdb3306,_0x4a2f91[_0xcee3('0x44')]);return _0x38ab57[_0xcee3('0x52')](_0xdb3306);}})['then'](function(_0x379251){if(_0x379251){_0x478c5b=_0x379251[_0xcee3('0x39')];if(!_0x4a2f91['query']['hasOwnProperty'](_0xcee3('0x3b'))){_0xdb3306[_0xcee3('0x21')]=qs[_0xcee3('0x21')](_0x4a2f91[_0xcee3('0x34')][_0xcee3('0x21')]);_0xdb3306[_0xcee3('0x20')]=qs[_0xcee3('0x20')](_0x4a2f91[_0xcee3('0x34')][_0xcee3('0x20')]);}return _0x38ab57['getSubjects'](_0xdb3306);}})[_0xcee3('0x28')](function(_0x278e43){if(_0x278e43){return _0x278e43?{'count':_0x478c5b,'rows':_0x278e43}:null;}})[_0xcee3('0x28')](respondWithResult(_0x33543a,null))[_0xcee3('0x47')](handleError(_0x33543a,null));};exports[_0xcee3('0x53')]=function(_0x582b41,_0x23f5fe,_0x4b65b0){var _0xb663b9={};var _0x3f3143={};var _0x2d8871;var _0x26bac9;return db[_0xcee3('0x2f')][_0xcee3('0x4f')]({'where':{'id':_0x582b41[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x23f5fe,null))[_0xcee3('0x28')](function(_0x3c3b60){if(_0x3c3b60){_0x2d8871=_0x3c3b60;_0x3f3143['model']=_[_0xcee3('0x48')](db[_0xcee3('0x50')][_0xcee3('0x51')]);_0x3f3143[_0xcee3('0x34')]=_['keys'](_0x582b41[_0xcee3('0x34')]);_0x3f3143[_0xcee3('0x35')]=_[_0xcee3('0x36')](_0x3f3143[_0xcee3('0x33')],_0x3f3143[_0xcee3('0x34')]);_0xb663b9['attributes']=_[_0xcee3('0x36')](_0x3f3143[_0xcee3('0x33')],qs[_0xcee3('0x38')](_0x582b41[_0xcee3('0x34')][_0xcee3('0x38')]));_0xb663b9[_0xcee3('0x37')]=_0xb663b9[_0xcee3('0x37')][_0xcee3('0x39')]?_0xb663b9['attributes']:_0x3f3143['model'];_0xb663b9['order']=qs[_0xcee3('0x3d')](_0x582b41['query'][_0xcee3('0x3d')]);_0xb663b9[_0xcee3('0x3e')]=qs[_0xcee3('0x35')](_[_0xcee3('0x3f')](_0x582b41[_0xcee3('0x34')],_0x3f3143['filters']));if(_0x582b41[_0xcee3('0x34')][_0xcee3('0x40')]){_0xb663b9[_0xcee3('0x3e')]=_['merge'](_0xb663b9['where'],{'$or':_[_0xcee3('0x41')](_0xb663b9[_0xcee3('0x37')],function(_0x429244){var _0x38108c={};_0x38108c[_0x429244]={'$like':'%'+_0x582b41[_0xcee3('0x34')][_0xcee3('0x40')]+'%'};return _0x38108c;})});}_0xb663b9=_[_0xcee3('0x43')]({},_0xb663b9,_0x582b41[_0xcee3('0x44')]);return _0x2d8871[_0xcee3('0x53')](_0xb663b9);}})['then'](function(_0x5edbda){if(_0x5edbda){_0x26bac9=_0x5edbda[_0xcee3('0x39')];if(!_0x582b41[_0xcee3('0x34')][_0xcee3('0x3a')](_0xcee3('0x3b'))){_0xb663b9[_0xcee3('0x21')]=qs[_0xcee3('0x21')](_0x582b41[_0xcee3('0x34')][_0xcee3('0x21')]);_0xb663b9[_0xcee3('0x20')]=qs[_0xcee3('0x20')](_0x582b41[_0xcee3('0x34')][_0xcee3('0x20')]);}return _0x2d8871[_0xcee3('0x53')](_0xb663b9);}})[_0xcee3('0x28')](function(_0x4d3edc){if(_0x4d3edc){return _0x4d3edc?{'count':_0x26bac9,'rows':_0x4d3edc}:null;}})['then'](respondWithResult(_0x23f5fe,null))[_0xcee3('0x47')](handleError(_0x23f5fe,null));};exports[_0xcee3('0x54')]=function(_0x5680da,_0x323ba0,_0x315434){var _0xb6b4e5={};var _0x5d14b9={};var _0x37d726;var _0xf9bf4d;return db[_0xcee3('0x2f')][_0xcee3('0x4f')]({'where':{'id':_0x5680da[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0x323ba0,null))['then'](function(_0x3c0e6a){if(_0x3c0e6a){_0x37d726=_0x3c0e6a;_0x5d14b9[_0xcee3('0x33')]=_[_0xcee3('0x48')](db[_0xcee3('0x55')][_0xcee3('0x51')]);_0x5d14b9[_0xcee3('0x34')]=_[_0xcee3('0x48')](_0x5680da['query']);_0x5d14b9[_0xcee3('0x35')]=_['intersection'](_0x5d14b9[_0xcee3('0x33')],_0x5d14b9[_0xcee3('0x34')]);_0xb6b4e5[_0xcee3('0x37')]=_['intersection'](_0x5d14b9[_0xcee3('0x33')],qs[_0xcee3('0x38')](_0x5680da['query'][_0xcee3('0x38')]));_0xb6b4e5['attributes']=_0xb6b4e5[_0xcee3('0x37')][_0xcee3('0x39')]?_0xb6b4e5[_0xcee3('0x37')]:_0x5d14b9['model'];_0xb6b4e5[_0xcee3('0x3c')]=qs[_0xcee3('0x3d')](_0x5680da['query'][_0xcee3('0x3d')]);_0xb6b4e5['where']=qs[_0xcee3('0x35')](_['pick'](_0x5680da['query'],_0x5d14b9[_0xcee3('0x35')]));if(_0x5680da['query'][_0xcee3('0x40')]){_0xb6b4e5[_0xcee3('0x3e')]=_[_0xcee3('0x43')](_0xb6b4e5[_0xcee3('0x3e')],{'$or':_[_0xcee3('0x41')](_0xb6b4e5[_0xcee3('0x37')],function(_0x423efd){var _0x277ee5={};_0x277ee5[_0x423efd]={'$like':'%'+_0x5680da[_0xcee3('0x34')][_0xcee3('0x40')]+'%'};return _0x277ee5;})});}_0xb6b4e5=_[_0xcee3('0x43')]({},_0xb6b4e5,_0x5680da[_0xcee3('0x44')]);return _0x37d726['getTags'](_0xb6b4e5);}})['then'](function(_0x1c1bcf){if(_0x1c1bcf){_0xf9bf4d=_0x1c1bcf[_0xcee3('0x39')];if(!_0x5680da['query'][_0xcee3('0x3a')](_0xcee3('0x3b'))){_0xb6b4e5[_0xcee3('0x21')]=qs[_0xcee3('0x21')](_0x5680da[_0xcee3('0x34')]['limit']);_0xb6b4e5['offset']=qs[_0xcee3('0x20')](_0x5680da[_0xcee3('0x34')][_0xcee3('0x20')]);}return _0x37d726[_0xcee3('0x54')](_0xb6b4e5);}})[_0xcee3('0x28')](function(_0x3da053){if(_0x3da053){return _0x3da053?{'count':_0xf9bf4d,'rows':_0x3da053}:null;}})[_0xcee3('0x28')](respondWithResult(_0x323ba0,null))[_0xcee3('0x47')](handleError(_0x323ba0,null));};exports[_0xcee3('0x56')]=function(_0x27554c,_0xc1efb0,_0x1a8b02){if(_0x27554c[_0xcee3('0x4c')]['id']){delete _0x27554c[_0xcee3('0x4c')]['id'];}return db[_0xcee3('0x2f')][_0xcee3('0x4f')]({'where':{'id':_0x27554c[_0xcee3('0x4d')]['id']}})[_0xcee3('0x28')](handleEntityNotFound(_0xc1efb0,null))[_0xcee3('0x28')](function(_0x6bd5d6){if(_0x6bd5d6){return _0x6bd5d6[_0xcee3('0x56')](_0x27554c[_0xcee3('0x4c')][_0xcee3('0x57')]||[]);}return null;})[_0xcee3('0x28')](respondWithResult(_0xc1efb0,null))[_0xcee3('0x47')](handleError(_0xc1efb0,null));};
\ No newline at end of file
+var _0xe594=['getTags','nolimit','ids','eml-format','rimraf','zip-dir','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','ZendeskConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','params','getFields','findOne','ZendeskField','hasOwnProperty','getSubjects','getDescriptions'];(function(_0x55b492,_0x1ee600){var _0x515545=function(_0x597c12){while(--_0x597c12){_0x55b492['push'](_0x55b492['shift']());}};_0x515545(++_0x1ee600);}(_0xe594,0x198));var _0x4e59=function(_0x109b08,_0xf8e44c){_0x109b08=_0x109b08-0x0;var _0x317ae1=_0xe594[_0x109b08];return _0x317ae1;};'use strict';var emlformat=require(_0x4e59('0x0'));var rimraf=require(_0x4e59('0x1'));var zipdir=require(_0x4e59('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4e59('0x3'));var Mustache=require('mustache');var util=require(_0x4e59('0x4'));var path=require('path');var sox=require(_0x4e59('0x5'));var csv=require(_0x4e59('0x6'));var ejs=require(_0x4e59('0x7'));var fs=require('fs');var fs_extra=require(_0x4e59('0x8'));var _=require(_0x4e59('0x9'));var squel=require('squel');var crypto=require(_0x4e59('0xa'));var jsforce=require(_0x4e59('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4e59('0xc'));var Papa=require('papaparse');var Redis=require(_0x4e59('0xd'));var authService=require(_0x4e59('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4e59('0xf'));var hardwareService=require(_0x4e59('0x10'));var logger=require(_0x4e59('0x11'))(_0x4e59('0x12'));var utils=require('../../config/utils');var config=require(_0x4e59('0x13'));var licenseUtil=require(_0x4e59('0x14'));var db=require(_0x4e59('0x15'))['db'];function respondWithStatusCode(_0x3f40ad,_0x10a4eb){_0x10a4eb=_0x10a4eb||0xcc;return function(_0x299e8f){if(_0x299e8f){return _0x3f40ad[_0x4e59('0x16')](_0x10a4eb);}return _0x3f40ad[_0x4e59('0x17')](_0x10a4eb)[_0x4e59('0x18')]();};}function respondWithResult(_0x445c9b,_0x235a1b){_0x235a1b=_0x235a1b||0xc8;return function(_0x1d66b3){if(_0x1d66b3){return _0x445c9b[_0x4e59('0x17')](_0x235a1b)[_0x4e59('0x19')](_0x1d66b3);}};}function respondWithFilteredResult(_0x1f254d,_0xde3449){return function(_0x2c1ca3){if(_0x2c1ca3){var _0x47e465=typeof _0xde3449[_0x4e59('0x1a')]===_0x4e59('0x1b')&&typeof _0xde3449[_0x4e59('0x1c')]===_0x4e59('0x1b');var _0x276ccd=_0x2c1ca3['count'];var _0x382ce1=_0x47e465?0x0:_0xde3449[_0x4e59('0x1a')];var _0x17b6a6=_0x47e465?_0x2c1ca3[_0x4e59('0x1d')]:_0xde3449[_0x4e59('0x1a')]+_0xde3449['limit'];var _0x16f5c2;if(_0x17b6a6>=_0x276ccd){_0x17b6a6=_0x276ccd;_0x16f5c2=0xc8;}else{_0x16f5c2=0xce;}_0x1f254d[_0x4e59('0x17')](_0x16f5c2);return _0x1f254d[_0x4e59('0x1e')]('Content-Range',_0x382ce1+'-'+_0x17b6a6+'/'+_0x276ccd)[_0x4e59('0x19')](_0x2c1ca3);}return null;};}function patchUpdates(_0xde52db){return function(_0x401685){try{jsonpatch[_0x4e59('0x1f')](_0x401685,_0xde52db,!![]);}catch(_0x29e95b){return BPromise[_0x4e59('0x20')](_0x29e95b);}return _0x401685[_0x4e59('0x21')]();};}function saveUpdates(_0xf09ae4,_0x16d07f){return function(_0x2ddebb){if(_0x2ddebb){return _0x2ddebb[_0x4e59('0x22')](_0xf09ae4)[_0x4e59('0x23')](function(_0x4b0bac){return _0x4b0bac;});}return null;};}function removeEntity(_0x21a49f,_0x26cbae){return function(_0x2228e3){if(_0x2228e3){return _0x2228e3[_0x4e59('0x24')]()[_0x4e59('0x23')](function(){_0x21a49f[_0x4e59('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32a16e,_0x48774a){return function(_0x598788){if(!_0x598788){_0x32a16e[_0x4e59('0x16')](0x194);}return _0x598788;};}function handleError(_0x253ff4,_0xe29a89){_0xe29a89=_0xe29a89||0x1f4;return function(_0x4664dd){logger[_0x4e59('0x25')](_0x4664dd['stack']);if(_0x4664dd[_0x4e59('0x26')]){delete _0x4664dd[_0x4e59('0x26')];}_0x253ff4[_0x4e59('0x17')](_0xe29a89)[_0x4e59('0x27')](_0x4664dd);};}exports[_0x4e59('0x28')]=function(_0x152a07,_0x2e3776){var _0x304c87={},_0x446fa2={},_0x18052a={'count':0x0,'rows':[]};var _0xceeebd=_[_0x4e59('0x29')](db[_0x4e59('0x2a')]['rawAttributes'],function(_0xb3ca27){return{'name':_0xb3ca27[_0x4e59('0x2b')],'type':_0xb3ca27[_0x4e59('0x2c')][_0x4e59('0x2d')]};});_0x446fa2[_0x4e59('0x2e')]=_['map'](_0xceeebd,_0x4e59('0x26'));_0x446fa2[_0x4e59('0x2f')]=_[_0x4e59('0x30')](_0x152a07['query']);_0x446fa2[_0x4e59('0x31')]=_[_0x4e59('0x32')](_0x446fa2[_0x4e59('0x2e')],_0x446fa2[_0x4e59('0x2f')]);_0x304c87[_0x4e59('0x33')]=_['intersection'](_0x446fa2['model'],qs[_0x4e59('0x34')](_0x152a07[_0x4e59('0x2f')][_0x4e59('0x34')]));_0x304c87[_0x4e59('0x33')]=_0x304c87[_0x4e59('0x33')][_0x4e59('0x35')]?_0x304c87[_0x4e59('0x33')]:_0x446fa2[_0x4e59('0x2e')];if(!_0x152a07[_0x4e59('0x2f')]['hasOwnProperty']('nolimit')){_0x304c87[_0x4e59('0x1c')]=qs['limit'](_0x152a07[_0x4e59('0x2f')][_0x4e59('0x1c')]);_0x304c87['offset']=qs[_0x4e59('0x1a')](_0x152a07[_0x4e59('0x2f')][_0x4e59('0x1a')]);}_0x304c87[_0x4e59('0x36')]=qs[_0x4e59('0x37')](_0x152a07[_0x4e59('0x2f')][_0x4e59('0x37')]);_0x304c87[_0x4e59('0x38')]=qs['filters'](_[_0x4e59('0x39')](_0x152a07[_0x4e59('0x2f')],_0x446fa2[_0x4e59('0x31')]),_0xceeebd);if(_0x152a07['query'][_0x4e59('0x3a')]){_0x304c87[_0x4e59('0x38')]=_[_0x4e59('0x3b')](_0x304c87[_0x4e59('0x38')],{'$or':_[_0x4e59('0x29')](_0xceeebd,function(_0x1407ac){if(_0x1407ac[_0x4e59('0x2c')]!==_0x4e59('0x3c')){var _0x6b4b4e={};_0x6b4b4e[_0x1407ac[_0x4e59('0x26')]]={'$like':'%'+_0x152a07['query'][_0x4e59('0x3a')]+'%'};return _0x6b4b4e;}})});}_0x304c87=_[_0x4e59('0x3b')]({},_0x304c87,_0x152a07[_0x4e59('0x3d')]);var _0x3ba89a={'where':_0x304c87[_0x4e59('0x38')]};return db[_0x4e59('0x2a')][_0x4e59('0x1d')](_0x3ba89a)[_0x4e59('0x23')](function(_0x50c5ac){_0x18052a['count']=_0x50c5ac;if(_0x152a07[_0x4e59('0x2f')][_0x4e59('0x3e')]){_0x304c87[_0x4e59('0x3f')]=[{'all':!![]}];}return db[_0x4e59('0x2a')][_0x4e59('0x40')](_0x304c87);})[_0x4e59('0x23')](function(_0x3f1758){_0x18052a['rows']=_0x3f1758;return _0x18052a;})[_0x4e59('0x23')](respondWithFilteredResult(_0x2e3776,_0x304c87))[_0x4e59('0x41')](handleError(_0x2e3776,null));};exports[_0x4e59('0x42')]=function(_0x2df938,_0x43089d){var _0x100b21={'raw':![],'where':{'id':_0x2df938['params']['id']}},_0x13a98b={};_0x13a98b[_0x4e59('0x2e')]=_['keys'](db['ZendeskConfiguration'][_0x4e59('0x43')]);_0x13a98b['query']=_[_0x4e59('0x30')](_0x2df938[_0x4e59('0x2f')]);_0x13a98b[_0x4e59('0x31')]=_[_0x4e59('0x32')](_0x13a98b[_0x4e59('0x2e')],_0x13a98b[_0x4e59('0x2f')]);_0x100b21[_0x4e59('0x33')]=_[_0x4e59('0x32')](_0x13a98b['model'],qs[_0x4e59('0x34')](_0x2df938[_0x4e59('0x2f')][_0x4e59('0x34')]));_0x100b21[_0x4e59('0x33')]=_0x100b21[_0x4e59('0x33')][_0x4e59('0x35')]?_0x100b21['attributes']:_0x13a98b[_0x4e59('0x2e')];if(_0x2df938['query'][_0x4e59('0x3e')]){_0x100b21[_0x4e59('0x3f')]=[{'all':!![]}];}_0x100b21=_[_0x4e59('0x3b')]({},_0x100b21,_0x2df938[_0x4e59('0x3d')]);return db[_0x4e59('0x2a')][_0x4e59('0x44')](_0x100b21)['then'](handleEntityNotFound(_0x43089d,null))['then'](respondWithResult(_0x43089d,null))[_0x4e59('0x41')](handleError(_0x43089d,null));};exports[_0x4e59('0x45')]=function(_0x130ef6,_0x272a83){return db[_0x4e59('0x2a')][_0x4e59('0x45')](_0x130ef6[_0x4e59('0x46')],{})[_0x4e59('0x23')](respondWithResult(_0x272a83,0xc9))[_0x4e59('0x41')](handleError(_0x272a83,null));};exports[_0x4e59('0x22')]=function(_0x3ad526,_0x2c417c){if(_0x3ad526[_0x4e59('0x46')]['id']){delete _0x3ad526['body']['id'];}return db[_0x4e59('0x2a')][_0x4e59('0x44')]({'where':{'id':_0x3ad526[_0x4e59('0x47')]['id']}})[_0x4e59('0x23')](handleEntityNotFound(_0x2c417c,null))[_0x4e59('0x23')](saveUpdates(_0x3ad526['body'],null))[_0x4e59('0x23')](respondWithResult(_0x2c417c,null))[_0x4e59('0x41')](handleError(_0x2c417c,null));};exports['destroy']=function(_0x4d9e62,_0xe5c633){return db[_0x4e59('0x2a')][_0x4e59('0x44')]({'where':{'id':_0x4d9e62[_0x4e59('0x47')]['id']}})['then'](handleEntityNotFound(_0xe5c633,null))[_0x4e59('0x23')](removeEntity(_0xe5c633,null))[_0x4e59('0x41')](handleError(_0xe5c633,null));};exports[_0x4e59('0x48')]=function(_0xfa582a,_0x12cc17,_0x3d24e1){var _0x3ced46={};var _0x315855={};var _0x2854c8;var _0x345e77;return db[_0x4e59('0x2a')][_0x4e59('0x49')]({'where':{'id':_0xfa582a[_0x4e59('0x47')]['id']}})['then'](handleEntityNotFound(_0x12cc17,null))['then'](function(_0x325ffe){if(_0x325ffe){_0x2854c8=_0x325ffe;_0x315855[_0x4e59('0x2e')]=_[_0x4e59('0x30')](db[_0x4e59('0x4a')][_0x4e59('0x43')]);_0x315855[_0x4e59('0x2f')]=_[_0x4e59('0x30')](_0xfa582a[_0x4e59('0x2f')]);_0x315855[_0x4e59('0x31')]=_[_0x4e59('0x32')](_0x315855[_0x4e59('0x2e')],_0x315855[_0x4e59('0x2f')]);_0x3ced46['attributes']=_[_0x4e59('0x32')](_0x315855['model'],qs[_0x4e59('0x34')](_0xfa582a[_0x4e59('0x2f')][_0x4e59('0x34')]));_0x3ced46['attributes']=_0x3ced46['attributes'][_0x4e59('0x35')]?_0x3ced46[_0x4e59('0x33')]:_0x315855['model'];_0x3ced46[_0x4e59('0x36')]=qs[_0x4e59('0x37')](_0xfa582a[_0x4e59('0x2f')]['sort']);_0x3ced46['where']=qs[_0x4e59('0x31')](_['pick'](_0xfa582a[_0x4e59('0x2f')],_0x315855[_0x4e59('0x31')]));if(_0xfa582a[_0x4e59('0x2f')][_0x4e59('0x3a')]){_0x3ced46[_0x4e59('0x38')]=_[_0x4e59('0x3b')](_0x3ced46[_0x4e59('0x38')],{'$or':_[_0x4e59('0x29')](_0x3ced46[_0x4e59('0x33')],function(_0x52f3ad){var _0x2d8060={};_0x2d8060[_0x52f3ad]={'$like':'%'+_0xfa582a[_0x4e59('0x2f')]['filter']+'%'};return _0x2d8060;})});}_0x3ced46=_[_0x4e59('0x3b')]({},_0x3ced46,_0xfa582a['options']);return _0x2854c8[_0x4e59('0x48')](_0x3ced46);}})['then'](function(_0x435451){if(_0x435451){_0x345e77=_0x435451['length'];if(!_0xfa582a['query'][_0x4e59('0x4b')]('nolimit')){_0x3ced46[_0x4e59('0x1c')]=qs[_0x4e59('0x1c')](_0xfa582a[_0x4e59('0x2f')][_0x4e59('0x1c')]);_0x3ced46[_0x4e59('0x1a')]=qs[_0x4e59('0x1a')](_0xfa582a[_0x4e59('0x2f')]['offset']);}return _0x2854c8[_0x4e59('0x48')](_0x3ced46);}})[_0x4e59('0x23')](function(_0x10d8c){if(_0x10d8c){return _0x10d8c?{'count':_0x345e77,'rows':_0x10d8c}:null;}})[_0x4e59('0x23')](respondWithResult(_0x12cc17,null))[_0x4e59('0x41')](handleError(_0x12cc17,null));};exports[_0x4e59('0x4c')]=function(_0x492bd0,_0x5645fb,_0x4047ed){var _0xfbb0f0={};var _0x566978={};var _0x2ad11e;var _0x80436f;return db[_0x4e59('0x2a')][_0x4e59('0x49')]({'where':{'id':_0x492bd0[_0x4e59('0x47')]['id']}})[_0x4e59('0x23')](handleEntityNotFound(_0x5645fb,null))[_0x4e59('0x23')](function(_0x16bf8d){if(_0x16bf8d){_0x2ad11e=_0x16bf8d;_0x566978[_0x4e59('0x2e')]=_['keys'](db[_0x4e59('0x4a')][_0x4e59('0x43')]);_0x566978[_0x4e59('0x2f')]=_['keys'](_0x492bd0[_0x4e59('0x2f')]);_0x566978[_0x4e59('0x31')]=_[_0x4e59('0x32')](_0x566978['model'],_0x566978['query']);_0xfbb0f0[_0x4e59('0x33')]=_['intersection'](_0x566978['model'],qs['fields'](_0x492bd0[_0x4e59('0x2f')]['fields']));_0xfbb0f0[_0x4e59('0x33')]=_0xfbb0f0[_0x4e59('0x33')][_0x4e59('0x35')]?_0xfbb0f0[_0x4e59('0x33')]:_0x566978['model'];_0xfbb0f0[_0x4e59('0x36')]=qs[_0x4e59('0x37')](_0x492bd0[_0x4e59('0x2f')][_0x4e59('0x37')]);_0xfbb0f0[_0x4e59('0x38')]=qs['filters'](_[_0x4e59('0x39')](_0x492bd0[_0x4e59('0x2f')],_0x566978[_0x4e59('0x31')]));if(_0x492bd0[_0x4e59('0x2f')]['filter']){_0xfbb0f0[_0x4e59('0x38')]=_[_0x4e59('0x3b')](_0xfbb0f0[_0x4e59('0x38')],{'$or':_['map'](_0xfbb0f0[_0x4e59('0x33')],function(_0x5acef3){var _0x39ef05={};_0x39ef05[_0x5acef3]={'$like':'%'+_0x492bd0['query'][_0x4e59('0x3a')]+'%'};return _0x39ef05;})});}_0xfbb0f0=_[_0x4e59('0x3b')]({},_0xfbb0f0,_0x492bd0[_0x4e59('0x3d')]);return _0x2ad11e[_0x4e59('0x4c')](_0xfbb0f0);}})[_0x4e59('0x23')](function(_0x14a163){if(_0x14a163){_0x80436f=_0x14a163[_0x4e59('0x35')];if(!_0x492bd0[_0x4e59('0x2f')][_0x4e59('0x4b')]('nolimit')){_0xfbb0f0[_0x4e59('0x1c')]=qs[_0x4e59('0x1c')](_0x492bd0[_0x4e59('0x2f')][_0x4e59('0x1c')]);_0xfbb0f0[_0x4e59('0x1a')]=qs[_0x4e59('0x1a')](_0x492bd0[_0x4e59('0x2f')][_0x4e59('0x1a')]);}return _0x2ad11e['getSubjects'](_0xfbb0f0);}})['then'](function(_0x4a3240){if(_0x4a3240){return _0x4a3240?{'count':_0x80436f,'rows':_0x4a3240}:null;}})[_0x4e59('0x23')](respondWithResult(_0x5645fb,null))['catch'](handleError(_0x5645fb,null));};exports[_0x4e59('0x4d')]=function(_0x9abaf6,_0x5b8400,_0x267071){var _0x3bae47={};var _0x75dcd0={};var _0x46f668;var _0x4fd4b7;return db[_0x4e59('0x2a')][_0x4e59('0x49')]({'where':{'id':_0x9abaf6['params']['id']}})[_0x4e59('0x23')](handleEntityNotFound(_0x5b8400,null))[_0x4e59('0x23')](function(_0x3efde1){if(_0x3efde1){_0x46f668=_0x3efde1;_0x75dcd0[_0x4e59('0x2e')]=_[_0x4e59('0x30')](db['ZendeskField'][_0x4e59('0x43')]);_0x75dcd0['query']=_[_0x4e59('0x30')](_0x9abaf6[_0x4e59('0x2f')]);_0x75dcd0[_0x4e59('0x31')]=_['intersection'](_0x75dcd0[_0x4e59('0x2e')],_0x75dcd0[_0x4e59('0x2f')]);_0x3bae47[_0x4e59('0x33')]=_['intersection'](_0x75dcd0['model'],qs[_0x4e59('0x34')](_0x9abaf6[_0x4e59('0x2f')][_0x4e59('0x34')]));_0x3bae47[_0x4e59('0x33')]=_0x3bae47[_0x4e59('0x33')][_0x4e59('0x35')]?_0x3bae47['attributes']:_0x75dcd0[_0x4e59('0x2e')];_0x3bae47['order']=qs[_0x4e59('0x37')](_0x9abaf6[_0x4e59('0x2f')]['sort']);_0x3bae47['where']=qs['filters'](_['pick'](_0x9abaf6[_0x4e59('0x2f')],_0x75dcd0['filters']));if(_0x9abaf6[_0x4e59('0x2f')]['filter']){_0x3bae47['where']=_[_0x4e59('0x3b')](_0x3bae47['where'],{'$or':_[_0x4e59('0x29')](_0x3bae47[_0x4e59('0x33')],function(_0x525a65){var _0x55468d={};_0x55468d[_0x525a65]={'$like':'%'+_0x9abaf6['query']['filter']+'%'};return _0x55468d;})});}_0x3bae47=_[_0x4e59('0x3b')]({},_0x3bae47,_0x9abaf6[_0x4e59('0x3d')]);return _0x46f668[_0x4e59('0x4d')](_0x3bae47);}})[_0x4e59('0x23')](function(_0x5a9023){if(_0x5a9023){_0x4fd4b7=_0x5a9023['length'];if(!_0x9abaf6[_0x4e59('0x2f')][_0x4e59('0x4b')]('nolimit')){_0x3bae47['limit']=qs['limit'](_0x9abaf6[_0x4e59('0x2f')][_0x4e59('0x1c')]);_0x3bae47[_0x4e59('0x1a')]=qs[_0x4e59('0x1a')](_0x9abaf6[_0x4e59('0x2f')][_0x4e59('0x1a')]);}return _0x46f668[_0x4e59('0x4d')](_0x3bae47);}})[_0x4e59('0x23')](function(_0x4fd618){if(_0x4fd618){return _0x4fd618?{'count':_0x4fd4b7,'rows':_0x4fd618}:null;}})[_0x4e59('0x23')](respondWithResult(_0x5b8400,null))[_0x4e59('0x41')](handleError(_0x5b8400,null));};exports['getTags']=function(_0x345aa7,_0x1ec485,_0x3cf152){var _0x2c9666={};var _0x134e4b={};var _0x3e96bc;var _0x313588;return db[_0x4e59('0x2a')]['findOne']({'where':{'id':_0x345aa7[_0x4e59('0x47')]['id']}})[_0x4e59('0x23')](handleEntityNotFound(_0x1ec485,null))[_0x4e59('0x23')](function(_0xda8033){if(_0xda8033){_0x3e96bc=_0xda8033;_0x134e4b[_0x4e59('0x2e')]=_['keys'](db['Tag'][_0x4e59('0x43')]);_0x134e4b[_0x4e59('0x2f')]=_[_0x4e59('0x30')](_0x345aa7[_0x4e59('0x2f')]);_0x134e4b['filters']=_[_0x4e59('0x32')](_0x134e4b[_0x4e59('0x2e')],_0x134e4b[_0x4e59('0x2f')]);_0x2c9666['attributes']=_[_0x4e59('0x32')](_0x134e4b[_0x4e59('0x2e')],qs[_0x4e59('0x34')](_0x345aa7[_0x4e59('0x2f')][_0x4e59('0x34')]));_0x2c9666[_0x4e59('0x33')]=_0x2c9666[_0x4e59('0x33')][_0x4e59('0x35')]?_0x2c9666[_0x4e59('0x33')]:_0x134e4b[_0x4e59('0x2e')];_0x2c9666[_0x4e59('0x36')]=qs[_0x4e59('0x37')](_0x345aa7['query']['sort']);_0x2c9666[_0x4e59('0x38')]=qs[_0x4e59('0x31')](_[_0x4e59('0x39')](_0x345aa7[_0x4e59('0x2f')],_0x134e4b['filters']));if(_0x345aa7['query'][_0x4e59('0x3a')]){_0x2c9666[_0x4e59('0x38')]=_[_0x4e59('0x3b')](_0x2c9666[_0x4e59('0x38')],{'$or':_['map'](_0x2c9666[_0x4e59('0x33')],function(_0x2c13a6){var _0x47bd5b={};_0x47bd5b[_0x2c13a6]={'$like':'%'+_0x345aa7['query'][_0x4e59('0x3a')]+'%'};return _0x47bd5b;})});}_0x2c9666=_[_0x4e59('0x3b')]({},_0x2c9666,_0x345aa7[_0x4e59('0x3d')]);return _0x3e96bc[_0x4e59('0x4e')](_0x2c9666);}})[_0x4e59('0x23')](function(_0x2aa786){if(_0x2aa786){_0x313588=_0x2aa786['length'];if(!_0x345aa7[_0x4e59('0x2f')][_0x4e59('0x4b')](_0x4e59('0x4f'))){_0x2c9666[_0x4e59('0x1c')]=qs[_0x4e59('0x1c')](_0x345aa7[_0x4e59('0x2f')][_0x4e59('0x1c')]);_0x2c9666[_0x4e59('0x1a')]=qs['offset'](_0x345aa7[_0x4e59('0x2f')][_0x4e59('0x1a')]);}return _0x3e96bc[_0x4e59('0x4e')](_0x2c9666);}})[_0x4e59('0x23')](function(_0x4a0c7c){if(_0x4a0c7c){return _0x4a0c7c?{'count':_0x313588,'rows':_0x4a0c7c}:null;}})[_0x4e59('0x23')](respondWithResult(_0x1ec485,null))[_0x4e59('0x41')](handleError(_0x1ec485,null));};exports['setTags']=function(_0x2f7266,_0x344c68,_0x7a4c2a){if(_0x2f7266[_0x4e59('0x46')]['id']){delete _0x2f7266['body']['id'];}return db[_0x4e59('0x2a')]['findOne']({'where':{'id':_0x2f7266[_0x4e59('0x47')]['id']}})[_0x4e59('0x23')](handleEntityNotFound(_0x344c68,null))[_0x4e59('0x23')](function(_0x1c35d9){if(_0x1c35d9){return _0x1c35d9['setTags'](_0x2f7266[_0x4e59('0x46')][_0x4e59('0x50')]||[]);}return null;})[_0x4e59('0x23')](respondWithResult(_0x344c68,null))['catch'](handleError(_0x344c68,null));};
\ No newline at end of file
index 4a02d57..efa5849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','api','moment'];(function(_0x45a9b4,_0xa23dfe){var _0x4427e2=function(_0x3e5787){while(--_0x3e5787){_0x45a9b4['push'](_0x45a9b4['shift']());}};_0x4427e2(++_0xa23dfe);}(_0xf7b4,0x152));var _0x4f7b=function(_0x3c4034,_0x50e2f7){_0x3c4034=_0x3c4034-0x0;var _0xac9930=_0xf7b4[_0x3c4034];return _0xac9930;};'use strict';var _=require(_0x4f7b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4f7b('0x1'));var moment=require(_0x4f7b('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4f7b('0x3'));var rimraf=require(_0x4f7b('0x4'));var config=require(_0x4f7b('0x5'));var attributes=require(_0x4f7b('0x6'));module[_0x4f7b('0x7')]=function(_0x2637f0,_0x427f8b){return _0x2637f0[_0x4f7b('0x8')](_0x4f7b('0x9'),attributes,{'tableName':_0x4f7b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9348=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','int_zendesk_configurations','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x2b7764,_0x59835e){var _0x249f58=function(_0x261fb7){while(--_0x261fb7){_0x2b7764['push'](_0x2b7764['shift']());}};_0x249f58(++_0x59835e);}(_0x9348,0x10d));var _0x8934=function(_0x5b9db3,_0x291b20){_0x5b9db3=_0x5b9db3-0x0;var _0x128315=_0x9348[_0x5b9db3];return _0x128315;};'use strict';var _=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var logger=require(_0x8934('0x2'))(_0x8934('0x3'));var moment=require(_0x8934('0x4'));var BPromise=require('bluebird');var rp=require(_0x8934('0x5'));var fs=require('fs');var path=require(_0x8934('0x6'));var rimraf=require('rimraf');var config=require(_0x8934('0x7'));var attributes=require(_0x8934('0x8'));module[_0x8934('0x9')]=function(_0x2bce03,_0x4c70d7){return _0x2bce03[_0x8934('0xa')]('ZendeskConfiguration',attributes,{'tableName':_0x8934('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e260a7a..4da5a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fba=['debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','info','request\x20sent'];(function(_0x39428c,_0x34b23a){var _0x52d069=function(_0x394962){while(--_0x394962){_0x39428c['push'](_0x39428c['shift']());}};_0x52d069(++_0x34b23a);}(_0x4fba,0xe4));var _0xa4fb=function(_0x1edbe0,_0x5d0656){_0x1edbe0=_0x1edbe0-0x0;var _0x52f2ca=_0x4fba[_0x1edbe0];return _0x52f2ca;};'use strict';var _=require(_0xa4fb('0x0'));var util=require(_0xa4fb('0x1'));var moment=require(_0xa4fb('0x2'));var BPromise=require(_0xa4fb('0x3'));var rs=require(_0xa4fb('0x4'));var fs=require('fs');var Redis=require(_0xa4fb('0x5'));var db=require(_0xa4fb('0x6'))['db'];var utils=require(_0xa4fb('0x7'));var logger=require(_0xa4fb('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa4fb('0x9'));var client=jayson[_0xa4fb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb8bab3,_0x3381c7,_0x597dd9){return new BPromise(function(_0x438947,_0x3d3ec7){return client['request'](_0xb8bab3,_0x597dd9)[_0xa4fb('0xb')](function(_0x2900db){logger[_0xa4fb('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3381c7,_0xa4fb('0xd'));logger[_0xa4fb('0xe')](_0xa4fb('0xf'),_0x3381c7,'request\x20sent',JSON['stringify'](_0x2900db));if(_0x2900db[_0xa4fb('0x10')]){if(_0x2900db[_0xa4fb('0x10')][_0xa4fb('0x11')]===0x1f4){logger[_0xa4fb('0x10')](_0xa4fb('0x12'),_0x3381c7,_0x2900db['error'][_0xa4fb('0x13')]);return _0x3d3ec7(_0x2900db[_0xa4fb('0x10')]['message']);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x3381c7,_0x2900db[_0xa4fb('0x10')][_0xa4fb('0x13')]);return _0x438947(_0x2900db[_0xa4fb('0x10')][_0xa4fb('0x13')]);}else{logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x3381c7,_0xa4fb('0xd'));_0x438947(_0x2900db[_0xa4fb('0x14')][_0xa4fb('0x13')]);}})[_0xa4fb('0x15')](function(_0x2d425b){logger[_0xa4fb('0x10')](_0xa4fb('0x12'),_0x3381c7,_0x2d425b);_0x3d3ec7(_0x2d425b);});});}
\ No newline at end of file
+var _0x50a0=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x932cb5,_0x50a6ec){var _0x4778db=function(_0x13f795){while(--_0x13f795){_0x932cb5['push'](_0x932cb5['shift']());}};_0x4778db(++_0x50a6ec);}(_0x50a0,0x191));var _0x050a=function(_0xd6875d,_0x562cea){_0xd6875d=_0xd6875d-0x0;var _0x4d8f8c=_0x50a0[_0xd6875d];return _0x4d8f8c;};'use strict';var _=require(_0x050a('0x0'));var util=require(_0x050a('0x1'));var moment=require(_0x050a('0x2'));var BPromise=require(_0x050a('0x3'));var rs=require(_0x050a('0x4'));var fs=require('fs');var Redis=require(_0x050a('0x5'));var db=require(_0x050a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x050a('0x7'))(_0x050a('0x8'));var config=require(_0x050a('0x9'));var jayson=require(_0x050a('0xa'));var client=jayson[_0x050a('0xb')][_0x050a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x48a85b,_0x146945,_0x33b13c){return new BPromise(function(_0x409528,_0x1bf235){return client[_0x050a('0xd')](_0x48a85b,_0x33b13c)['then'](function(_0x531f05){logger[_0x050a('0xe')](_0x050a('0xf'),_0x146945,_0x050a('0x10'));logger[_0x050a('0x11')](_0x050a('0x12'),_0x146945,_0x050a('0x10'),JSON['stringify'](_0x531f05));if(_0x531f05[_0x050a('0x13')]){if(_0x531f05['error'][_0x050a('0x14')]===0x1f4){logger[_0x050a('0x13')](_0x050a('0xf'),_0x146945,_0x531f05['error'][_0x050a('0x15')]);return _0x1bf235(_0x531f05[_0x050a('0x13')][_0x050a('0x15')]);}logger[_0x050a('0x13')](_0x050a('0xf'),_0x146945,_0x531f05['error']['message']);return _0x409528(_0x531f05[_0x050a('0x13')][_0x050a('0x15')]);}else{logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x146945,_0x050a('0x10'));_0x409528(_0x531f05[_0x050a('0x16')][_0x050a('0x15')]);}})[_0x050a('0x17')](function(_0x2a989b){logger[_0x050a('0x13')](_0x050a('0xf'),_0x146945,_0x2a989b);_0x1bf235(_0x2a989b);});});}
\ No newline at end of file
index 1792476..cbe1bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c1=['get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./intZendeskField.controller'];(function(_0x67f304,_0x4fe3ab){var _0x3f794c=function(_0x217bf8){while(--_0x217bf8){_0x67f304['push'](_0x67f304['shift']());}};_0x3f794c(++_0x4fe3ab);}(_0x15c1,0x1d5));var _0x115c=function(_0x32fda2,_0x4a38b4){_0x32fda2=_0x32fda2-0x0;var _0x33f8cf=_0x15c1[_0x32fda2];return _0x33f8cf;};'use strict';var multer=require(_0x115c('0x0'));var util=require(_0x115c('0x1'));var path=require('path');var timeout=require(_0x115c('0x2'));var express=require(_0x115c('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x115c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x115c('0x5'));var controller=require(_0x115c('0x6'));router[_0x115c('0x7')]('/',auth['isAuthenticated'](),controller[_0x115c('0x8')]);router['get'](_0x115c('0x9'),auth[_0x115c('0xa')](),controller[_0x115c('0xb')]);router[_0x115c('0xc')]('/',auth['isAuthenticated'](),controller[_0x115c('0xd')]);router[_0x115c('0xe')](_0x115c('0x9'),auth[_0x115c('0xa')](),controller['update']);router[_0x115c('0xf')](_0x115c('0x9'),auth['isAuthenticated'](),controller[_0x115c('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xeca2=['../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','index','/:id','isAuthenticated','post','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1347f8,_0x233feb){var _0x218368=function(_0x3f4ca3){while(--_0x3f4ca3){_0x1347f8['push'](_0x1347f8['shift']());}};_0x218368(++_0x233feb);}(_0xeca2,0x79));var _0x2eca=function(_0x59bd89,_0x9569f8){_0x59bd89=_0x59bd89-0x0;var _0x58f8f4=_0xeca2[_0x59bd89];return _0x58f8f4;};'use strict';var multer=require(_0x2eca('0x0'));var util=require(_0x2eca('0x1'));var path=require('path');var timeout=require(_0x2eca('0x2'));var express=require(_0x2eca('0x3'));var router=express[_0x2eca('0x4')]();var fs_extra=require(_0x2eca('0x5'));var auth=require(_0x2eca('0x6'));var interaction=require(_0x2eca('0x7'));var config=require(_0x2eca('0x8'));var controller=require(_0x2eca('0x9'));router[_0x2eca('0xa')]('/',auth['isAuthenticated'](),controller[_0x2eca('0xb')]);router[_0x2eca('0xa')](_0x2eca('0xc'),auth[_0x2eca('0xd')](),controller['show']);router[_0x2eca('0xe')]('/',auth[_0x2eca('0xd')](),controller['create']);router['put'](_0x2eca('0xc'),auth[_0x2eca('0xd')](),controller['update']);router['delete'](_0x2eca('0xc'),auth[_0x2eca('0xd')](),controller[_0x2eca('0xf')]);module['exports']=router;
\ No newline at end of file
index 256132c..9267e12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf855=['picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable'];(function(_0x2190ba,_0x51077b){var _0x59a06f=function(_0x4ea69e){while(--_0x4ea69e){_0x2190ba['push'](_0x2190ba['shift']());}};_0x59a06f(++_0x51077b);}(_0xf855,0x18c));var _0x5f85=function(_0x5e76b8,_0x1bee9a){_0x5e76b8=_0x5e76b8-0x0;var _0x3ed461=_0xf855[_0x5e76b8];return _0x3ed461;};'use strict';var Sequelize=require(_0x5f85('0x0'));module['exports']={'type':{'type':Sequelize[_0x5f85('0x1')](_0x5f85('0x2'),'variable',_0x5f85('0x3'),'keyValue',_0x5f85('0x4')),'defaultValue':_0x5f85('0x2')},'content':{'type':Sequelize[_0x5f85('0x5')]},'key':{'type':Sequelize[_0x5f85('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0x5f85('0x6'),_0x5f85('0x3'))},'keyContent':{'type':Sequelize[_0x5f85('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x5f85('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe2b0=['variable','keyValue','STRING','customVariable','exports','ENUM','string'];(function(_0x5ac3cc,_0x2ebd16){var _0x4c37bc=function(_0xd4dbd){while(--_0xd4dbd){_0x5ac3cc['push'](_0x5ac3cc['shift']());}};_0x4c37bc(++_0x2ebd16);}(_0xe2b0,0x107));var _0x0e2b=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xe2b0[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');module[_0x0e2b('0x0')]={'type':{'type':Sequelize[_0x0e2b('0x1')](_0x0e2b('0x2'),_0x0e2b('0x3'),'customVariable',_0x0e2b('0x4'),'picklist'),'defaultValue':_0x0e2b('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0e2b('0x5')]},'keyType':{'type':Sequelize[_0x0e2b('0x1')](_0x0e2b('0x2'),_0x0e2b('0x3'),_0x0e2b('0x6'))},'keyContent':{'type':Sequelize[_0x0e2b('0x5')]},'idField':{'type':Sequelize[_0x0e2b('0x5')]},'nameField':{'type':Sequelize[_0x0e2b('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0e2b('0x5')]}};
\ No newline at end of file
index 7f12f5c..0b5d849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b4=['query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','findAll','rows','catch','show','fields','includeAll','include','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','ZendeskField','rawAttributes','model','map'];(function(_0xc84838,_0x47e144){var _0x5d14f9=function(_0xe4a36d){while(--_0xe4a36d){_0xc84838['push'](_0xc84838['shift']());}};_0x5d14f9(++_0x47e144);}(_0x20b4,0x146));var _0x420b=function(_0x2d98f1,_0x21174b){_0x2d98f1=_0x2d98f1-0x0;var _0x701cc7=_0x20b4[_0x2d98f1];return _0x701cc7;};'use strict';var emlformat=require(_0x420b('0x0'));var rimraf=require(_0x420b('0x1'));var zipdir=require(_0x420b('0x2'));var jsonpatch=require(_0x420b('0x3'));var rp=require('request-promise');var moment=require(_0x420b('0x4'));var BPromise=require(_0x420b('0x5'));var Mustache=require('mustache');var util=require(_0x420b('0x6'));var path=require(_0x420b('0x7'));var sox=require('sox');var csv=require(_0x420b('0x8'));var ejs=require(_0x420b('0x9'));var fs=require('fs');var fs_extra=require(_0x420b('0xa'));var _=require(_0x420b('0xb'));var squel=require(_0x420b('0xc'));var crypto=require(_0x420b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x420b('0xe'));var toCsv=require(_0x420b('0x8'));var querystring=require(_0x420b('0xf'));var Papa=require('papaparse');var Redis=require(_0x420b('0x10'));var authService=require(_0x420b('0x11'));var qs=require(_0x420b('0x12'));var as=require(_0x420b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x420b('0x14'))(_0x420b('0x15'));var utils=require(_0x420b('0x16'));var config=require(_0x420b('0x17'));var licenseUtil=require(_0x420b('0x18'));var db=require(_0x420b('0x19'))['db'];function respondWithStatusCode(_0x3f5a79,_0x1212b){_0x1212b=_0x1212b||0xcc;return function(_0x126c44){if(_0x126c44){return _0x3f5a79[_0x420b('0x1a')](_0x1212b);}return _0x3f5a79[_0x420b('0x1b')](_0x1212b)[_0x420b('0x1c')]();};}function respondWithResult(_0x52ac67,_0x61e789){_0x61e789=_0x61e789||0xc8;return function(_0x102b93){if(_0x102b93){return _0x52ac67[_0x420b('0x1b')](_0x61e789)[_0x420b('0x1d')](_0x102b93);}};}function respondWithFilteredResult(_0x520cbb,_0x975896){return function(_0x47e4ed){if(_0x47e4ed){var _0x54413e=typeof _0x975896[_0x420b('0x1e')]==='undefined'&&typeof _0x975896[_0x420b('0x1f')]==='undefined';var _0x32bd9a=_0x47e4ed['count'];var _0x454be6=_0x54413e?0x0:_0x975896[_0x420b('0x1e')];var _0x1f50cf=_0x54413e?_0x47e4ed[_0x420b('0x20')]:_0x975896[_0x420b('0x1e')]+_0x975896[_0x420b('0x1f')];var _0x41a89d;if(_0x1f50cf>=_0x32bd9a){_0x1f50cf=_0x32bd9a;_0x41a89d=0xc8;}else{_0x41a89d=0xce;}_0x520cbb['status'](_0x41a89d);return _0x520cbb['set'](_0x420b('0x21'),_0x454be6+'-'+_0x1f50cf+'/'+_0x32bd9a)[_0x420b('0x1d')](_0x47e4ed);}return null;};}function patchUpdates(_0x112ab0){return function(_0x1a8f45){try{jsonpatch[_0x420b('0x22')](_0x1a8f45,_0x112ab0,!![]);}catch(_0x435592){return BPromise[_0x420b('0x23')](_0x435592);}return _0x1a8f45[_0x420b('0x24')]();};}function saveUpdates(_0x537680,_0x359b67){return function(_0x4909c1){if(_0x4909c1){return _0x4909c1[_0x420b('0x25')](_0x537680)[_0x420b('0x26')](function(_0x465401){return _0x465401;});}return null;};}function removeEntity(_0x3fe6c6,_0x3bc06a){return function(_0x42cdf3){if(_0x42cdf3){return _0x42cdf3[_0x420b('0x27')]()[_0x420b('0x26')](function(){_0x3fe6c6['status'](0xcc)[_0x420b('0x1c')]();});}};}function handleEntityNotFound(_0x58cfc3,_0x5189eb){return function(_0x3d8cfe){if(!_0x3d8cfe){_0x58cfc3[_0x420b('0x1a')](0x194);}return _0x3d8cfe;};}function handleError(_0xfd3f0b,_0x3dd74e){_0x3dd74e=_0x3dd74e||0x1f4;return function(_0x4597a8){logger[_0x420b('0x28')](_0x4597a8[_0x420b('0x29')]);if(_0x4597a8[_0x420b('0x2a')]){delete _0x4597a8[_0x420b('0x2a')];}_0xfd3f0b['status'](_0x3dd74e)[_0x420b('0x2b')](_0x4597a8);};}exports[_0x420b('0x2c')]=function(_0x42aeb3,_0x38a9b9){var _0xa48374={},_0x3b009e={},_0x49588c={'count':0x0,'rows':[]};var _0xb5a8aa=_['map'](db[_0x420b('0x2d')][_0x420b('0x2e')],function(_0x1d1b99){return{'name':_0x1d1b99['fieldName'],'type':_0x1d1b99['type']['key']};});_0x3b009e[_0x420b('0x2f')]=_[_0x420b('0x30')](_0xb5a8aa,_0x420b('0x2a'));_0x3b009e[_0x420b('0x31')]=_[_0x420b('0x32')](_0x42aeb3[_0x420b('0x31')]);_0x3b009e[_0x420b('0x33')]=_[_0x420b('0x34')](_0x3b009e[_0x420b('0x2f')],_0x3b009e[_0x420b('0x31')]);_0xa48374['attributes']=_[_0x420b('0x34')](_0x3b009e[_0x420b('0x2f')],qs['fields'](_0x42aeb3[_0x420b('0x31')]['fields']));_0xa48374[_0x420b('0x35')]=_0xa48374[_0x420b('0x35')][_0x420b('0x36')]?_0xa48374['attributes']:_0x3b009e[_0x420b('0x2f')];if(!_0x42aeb3[_0x420b('0x31')][_0x420b('0x37')](_0x420b('0x38'))){_0xa48374['limit']=qs[_0x420b('0x1f')](_0x42aeb3[_0x420b('0x31')][_0x420b('0x1f')]);_0xa48374[_0x420b('0x1e')]=qs['offset'](_0x42aeb3['query']['offset']);}_0xa48374[_0x420b('0x39')]=qs[_0x420b('0x3a')](_0x42aeb3[_0x420b('0x31')][_0x420b('0x3a')]);_0xa48374['where']=qs[_0x420b('0x33')](_[_0x420b('0x3b')](_0x42aeb3[_0x420b('0x31')],_0x3b009e['filters']),_0xb5a8aa);if(_0x42aeb3[_0x420b('0x31')][_0x420b('0x3c')]){_0xa48374[_0x420b('0x3d')]=_[_0x420b('0x3e')](_0xa48374[_0x420b('0x3d')],{'$or':_[_0x420b('0x30')](_0xb5a8aa,function(_0x14731e){if(_0x14731e[_0x420b('0x3f')]!=='VIRTUAL'){var _0x4c5649={};_0x4c5649[_0x14731e[_0x420b('0x2a')]]={'$like':'%'+_0x42aeb3[_0x420b('0x31')]['filter']+'%'};return _0x4c5649;}})});}_0xa48374=_[_0x420b('0x3e')]({},_0xa48374,_0x42aeb3['options']);var _0x37242a={'where':_0xa48374[_0x420b('0x3d')]};return db[_0x420b('0x2d')]['count'](_0x37242a)[_0x420b('0x26')](function(_0x16b8ca){_0x49588c['count']=_0x16b8ca;if(_0x42aeb3[_0x420b('0x31')]['includeAll']){_0xa48374['include']=[{'all':!![]}];}return db['ZendeskField'][_0x420b('0x40')](_0xa48374);})[_0x420b('0x26')](function(_0x25ac0b){_0x49588c[_0x420b('0x41')]=_0x25ac0b;return _0x49588c;})['then'](respondWithFilteredResult(_0x38a9b9,_0xa48374))[_0x420b('0x42')](handleError(_0x38a9b9,null));};exports[_0x420b('0x43')]=function(_0x50fcf9,_0x219748){var _0x754e1={'raw':!![],'where':{'id':_0x50fcf9['params']['id']}},_0x56f83f={};_0x56f83f['model']=_[_0x420b('0x32')](db[_0x420b('0x2d')][_0x420b('0x2e')]);_0x56f83f['query']=_[_0x420b('0x32')](_0x50fcf9[_0x420b('0x31')]);_0x56f83f[_0x420b('0x33')]=_[_0x420b('0x34')](_0x56f83f[_0x420b('0x2f')],_0x56f83f[_0x420b('0x31')]);_0x754e1[_0x420b('0x35')]=_['intersection'](_0x56f83f['model'],qs[_0x420b('0x44')](_0x50fcf9[_0x420b('0x31')]['fields']));_0x754e1[_0x420b('0x35')]=_0x754e1[_0x420b('0x35')][_0x420b('0x36')]?_0x754e1[_0x420b('0x35')]:_0x56f83f[_0x420b('0x2f')];if(_0x50fcf9[_0x420b('0x31')][_0x420b('0x45')]){_0x754e1[_0x420b('0x46')]=[{'all':!![]}];}_0x754e1=_[_0x420b('0x3e')]({},_0x754e1,_0x50fcf9[_0x420b('0x47')]);return db['ZendeskField'][_0x420b('0x48')](_0x754e1)['then'](handleEntityNotFound(_0x219748,null))[_0x420b('0x26')](respondWithResult(_0x219748,null))[_0x420b('0x42')](handleError(_0x219748,null));};exports[_0x420b('0x49')]=function(_0x1fe868,_0x2babe4){return db[_0x420b('0x2d')][_0x420b('0x49')](_0x1fe868[_0x420b('0x4a')],{})[_0x420b('0x26')](respondWithResult(_0x2babe4,0xc9))['catch'](handleError(_0x2babe4,null));};exports[_0x420b('0x25')]=function(_0x19741d,_0x27331f){if(_0x19741d[_0x420b('0x4a')]['id']){delete _0x19741d[_0x420b('0x4a')]['id'];}return db[_0x420b('0x2d')][_0x420b('0x48')]({'where':{'id':_0x19741d['params']['id']}})[_0x420b('0x26')](handleEntityNotFound(_0x27331f,null))['then'](saveUpdates(_0x19741d[_0x420b('0x4a')],null))[_0x420b('0x26')](respondWithResult(_0x27331f,null))[_0x420b('0x42')](handleError(_0x27331f,null));};exports['destroy']=function(_0x2ec086,_0x5617b4){return db[_0x420b('0x2d')][_0x420b('0x48')]({'where':{'id':_0x2ec086['params']['id']}})[_0x420b('0x26')](handleEntityNotFound(_0x5617b4,null))['then'](removeEntity(_0x5617b4,null))[_0x420b('0x42')](handleError(_0x5617b4,null));};
\ No newline at end of file
+var _0xc459=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','options','find','create','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ZendeskField','rawAttributes','type','key','model','query','keys','filters'];(function(_0x1b384f,_0x1be640){var _0x44e400=function(_0x138c98){while(--_0x138c98){_0x1b384f['push'](_0x1b384f['shift']());}};_0x44e400(++_0x1be640);}(_0xc459,0x1d9));var _0x9c45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc459[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9c45('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9c45('0x1'));var rp=require('request-promise');var moment=require(_0x9c45('0x2'));var BPromise=require(_0x9c45('0x3'));var Mustache=require(_0x9c45('0x4'));var util=require(_0x9c45('0x5'));var path=require(_0x9c45('0x6'));var sox=require('sox');var csv=require(_0x9c45('0x7'));var ejs=require(_0x9c45('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9c45('0x9'));var squel=require(_0x9c45('0xa'));var crypto=require('crypto');var jsforce=require(_0x9c45('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9c45('0x7'));var querystring=require('querystring');var Papa=require(_0x9c45('0xc'));var Redis=require(_0x9c45('0xd'));var authService=require(_0x9c45('0xe'));var qs=require(_0x9c45('0xf'));var as=require(_0x9c45('0x10'));var hardwareService=require(_0x9c45('0x11'));var logger=require(_0x9c45('0x12'))(_0x9c45('0x13'));var utils=require(_0x9c45('0x14'));var config=require(_0x9c45('0x15'));var licenseUtil=require(_0x9c45('0x16'));var db=require(_0x9c45('0x17'))['db'];function respondWithStatusCode(_0x5b6621,_0x17e13b){_0x17e13b=_0x17e13b||0xcc;return function(_0x352ffb){if(_0x352ffb){return _0x5b6621[_0x9c45('0x18')](_0x17e13b);}return _0x5b6621[_0x9c45('0x19')](_0x17e13b)[_0x9c45('0x1a')]();};}function respondWithResult(_0x25232f,_0x1bbf9a){_0x1bbf9a=_0x1bbf9a||0xc8;return function(_0xe3e4b){if(_0xe3e4b){return _0x25232f[_0x9c45('0x19')](_0x1bbf9a)[_0x9c45('0x1b')](_0xe3e4b);}};}function respondWithFilteredResult(_0x314613,_0x1e4391){return function(_0x2739a9){if(_0x2739a9){var _0x4ed76e=typeof _0x1e4391[_0x9c45('0x1c')]==='undefined'&&typeof _0x1e4391[_0x9c45('0x1d')]===_0x9c45('0x1e');var _0x4aa33a=_0x2739a9[_0x9c45('0x1f')];var _0xa2a45c=_0x4ed76e?0x0:_0x1e4391['offset'];var _0x5d5589=_0x4ed76e?_0x2739a9[_0x9c45('0x1f')]:_0x1e4391['offset']+_0x1e4391[_0x9c45('0x1d')];var _0x12a8f2;if(_0x5d5589>=_0x4aa33a){_0x5d5589=_0x4aa33a;_0x12a8f2=0xc8;}else{_0x12a8f2=0xce;}_0x314613[_0x9c45('0x19')](_0x12a8f2);return _0x314613['set'](_0x9c45('0x20'),_0xa2a45c+'-'+_0x5d5589+'/'+_0x4aa33a)['json'](_0x2739a9);}return null;};}function patchUpdates(_0x364502){return function(_0x370cf8){try{jsonpatch[_0x9c45('0x21')](_0x370cf8,_0x364502,!![]);}catch(_0x914651){return BPromise[_0x9c45('0x22')](_0x914651);}return _0x370cf8[_0x9c45('0x23')]();};}function saveUpdates(_0x32f452,_0x2ac80d){return function(_0x4373d4){if(_0x4373d4){return _0x4373d4[_0x9c45('0x24')](_0x32f452)[_0x9c45('0x25')](function(_0x64204b){return _0x64204b;});}return null;};}function removeEntity(_0x261b12,_0x4971e9){return function(_0x3f7af8){if(_0x3f7af8){return _0x3f7af8[_0x9c45('0x26')]()[_0x9c45('0x25')](function(){_0x261b12['status'](0xcc)[_0x9c45('0x1a')]();});}};}function handleEntityNotFound(_0x388943,_0x1d3b29){return function(_0x5d7bd5){if(!_0x5d7bd5){_0x388943[_0x9c45('0x18')](0x194);}return _0x5d7bd5;};}function handleError(_0x27d52e,_0x2933ba){_0x2933ba=_0x2933ba||0x1f4;return function(_0x26ba1c){logger[_0x9c45('0x27')](_0x26ba1c[_0x9c45('0x28')]);if(_0x26ba1c[_0x9c45('0x29')]){delete _0x26ba1c['name'];}_0x27d52e[_0x9c45('0x19')](_0x2933ba)[_0x9c45('0x2a')](_0x26ba1c);};}exports['index']=function(_0x15b3ea,_0x3b060f){var _0x39fbf0={},_0x1d1ad1={},_0x2f23b2={'count':0x0,'rows':[]};var _0x245ac8=_[_0x9c45('0x2b')](db[_0x9c45('0x2c')][_0x9c45('0x2d')],function(_0x167ebc){return{'name':_0x167ebc['fieldName'],'type':_0x167ebc[_0x9c45('0x2e')][_0x9c45('0x2f')]};});_0x1d1ad1[_0x9c45('0x30')]=_[_0x9c45('0x2b')](_0x245ac8,_0x9c45('0x29'));_0x1d1ad1[_0x9c45('0x31')]=_[_0x9c45('0x32')](_0x15b3ea[_0x9c45('0x31')]);_0x1d1ad1[_0x9c45('0x33')]=_[_0x9c45('0x34')](_0x1d1ad1[_0x9c45('0x30')],_0x1d1ad1['query']);_0x39fbf0[_0x9c45('0x35')]=_[_0x9c45('0x34')](_0x1d1ad1['model'],qs[_0x9c45('0x36')](_0x15b3ea[_0x9c45('0x31')]['fields']));_0x39fbf0[_0x9c45('0x35')]=_0x39fbf0[_0x9c45('0x35')][_0x9c45('0x37')]?_0x39fbf0[_0x9c45('0x35')]:_0x1d1ad1[_0x9c45('0x30')];if(!_0x15b3ea[_0x9c45('0x31')][_0x9c45('0x38')](_0x9c45('0x39'))){_0x39fbf0[_0x9c45('0x1d')]=qs[_0x9c45('0x1d')](_0x15b3ea[_0x9c45('0x31')][_0x9c45('0x1d')]);_0x39fbf0[_0x9c45('0x1c')]=qs[_0x9c45('0x1c')](_0x15b3ea['query']['offset']);}_0x39fbf0[_0x9c45('0x3a')]=qs['sort'](_0x15b3ea[_0x9c45('0x31')][_0x9c45('0x3b')]);_0x39fbf0[_0x9c45('0x3c')]=qs[_0x9c45('0x33')](_[_0x9c45('0x3d')](_0x15b3ea[_0x9c45('0x31')],_0x1d1ad1[_0x9c45('0x33')]),_0x245ac8);if(_0x15b3ea['query'][_0x9c45('0x3e')]){_0x39fbf0[_0x9c45('0x3c')]=_[_0x9c45('0x3f')](_0x39fbf0[_0x9c45('0x3c')],{'$or':_[_0x9c45('0x2b')](_0x245ac8,function(_0x4b4930){if(_0x4b4930[_0x9c45('0x2e')]!==_0x9c45('0x40')){var _0x311d97={};_0x311d97[_0x4b4930[_0x9c45('0x29')]]={'$like':'%'+_0x15b3ea[_0x9c45('0x31')][_0x9c45('0x3e')]+'%'};return _0x311d97;}})});}_0x39fbf0=_[_0x9c45('0x3f')]({},_0x39fbf0,_0x15b3ea['options']);var _0x219c34={'where':_0x39fbf0[_0x9c45('0x3c')]};return db[_0x9c45('0x2c')][_0x9c45('0x1f')](_0x219c34)[_0x9c45('0x25')](function(_0x1c0f49){_0x2f23b2[_0x9c45('0x1f')]=_0x1c0f49;if(_0x15b3ea[_0x9c45('0x31')][_0x9c45('0x41')]){_0x39fbf0[_0x9c45('0x42')]=[{'all':!![]}];}return db[_0x9c45('0x2c')][_0x9c45('0x43')](_0x39fbf0);})[_0x9c45('0x25')](function(_0x5db83f){_0x2f23b2[_0x9c45('0x44')]=_0x5db83f;return _0x2f23b2;})[_0x9c45('0x25')](respondWithFilteredResult(_0x3b060f,_0x39fbf0))[_0x9c45('0x45')](handleError(_0x3b060f,null));};exports['show']=function(_0x523734,_0x4a8ee5){var _0x4ee54f={'raw':!![],'where':{'id':_0x523734[_0x9c45('0x46')]['id']}},_0x5c1b24={};_0x5c1b24[_0x9c45('0x30')]=_[_0x9c45('0x32')](db[_0x9c45('0x2c')]['rawAttributes']);_0x5c1b24[_0x9c45('0x31')]=_[_0x9c45('0x32')](_0x523734['query']);_0x5c1b24['filters']=_[_0x9c45('0x34')](_0x5c1b24[_0x9c45('0x30')],_0x5c1b24[_0x9c45('0x31')]);_0x4ee54f['attributes']=_['intersection'](_0x5c1b24['model'],qs[_0x9c45('0x36')](_0x523734[_0x9c45('0x31')]['fields']));_0x4ee54f[_0x9c45('0x35')]=_0x4ee54f[_0x9c45('0x35')][_0x9c45('0x37')]?_0x4ee54f[_0x9c45('0x35')]:_0x5c1b24[_0x9c45('0x30')];if(_0x523734[_0x9c45('0x31')][_0x9c45('0x41')]){_0x4ee54f[_0x9c45('0x42')]=[{'all':!![]}];}_0x4ee54f=_[_0x9c45('0x3f')]({},_0x4ee54f,_0x523734[_0x9c45('0x47')]);return db[_0x9c45('0x2c')][_0x9c45('0x48')](_0x4ee54f)[_0x9c45('0x25')](handleEntityNotFound(_0x4a8ee5,null))['then'](respondWithResult(_0x4a8ee5,null))[_0x9c45('0x45')](handleError(_0x4a8ee5,null));};exports[_0x9c45('0x49')]=function(_0x5fecbb,_0x386147){return db[_0x9c45('0x2c')][_0x9c45('0x49')](_0x5fecbb[_0x9c45('0x4a')],{})[_0x9c45('0x25')](respondWithResult(_0x386147,0xc9))['catch'](handleError(_0x386147,null));};exports[_0x9c45('0x24')]=function(_0x32d3,_0x18438c){if(_0x32d3[_0x9c45('0x4a')]['id']){delete _0x32d3['body']['id'];}return db['ZendeskField']['find']({'where':{'id':_0x32d3[_0x9c45('0x46')]['id']}})[_0x9c45('0x25')](handleEntityNotFound(_0x18438c,null))['then'](saveUpdates(_0x32d3['body'],null))['then'](respondWithResult(_0x18438c,null))[_0x9c45('0x45')](handleError(_0x18438c,null));};exports[_0x9c45('0x26')]=function(_0x42dba2,_0x160dd7){return db[_0x9c45('0x2c')][_0x9c45('0x48')]({'where':{'id':_0x42dba2[_0x9c45('0x46')]['id']}})[_0x9c45('0x25')](handleEntityNotFound(_0x160dd7,null))[_0x9c45('0x25')](removeEntity(_0x160dd7,null))[_0x9c45('0x45')](handleError(_0x160dd7,null));};
\ No newline at end of file
index 9a52fa5..443919b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce4=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','zendesk_unique_index'];(function(_0x5e9d1f,_0x37c578){var _0x895bea=function(_0x4e10bc){while(--_0x4e10bc){_0x5e9d1f['push'](_0x5e9d1f['shift']());}};_0x895bea(++_0x37c578);}(_0x2ce4,0xd0));var _0x42ce=function(_0xdf8100,_0x33609a){_0xdf8100=_0xdf8100-0x0;var _0x133554=_0x2ce4[_0xdf8100];return _0x133554;};'use strict';var _=require('lodash');var util=require(_0x42ce('0x0'));var logger=require(_0x42ce('0x1'))(_0x42ce('0x2'));var moment=require('moment');var BPromise=require(_0x42ce('0x3'));var rp=require(_0x42ce('0x4'));var fs=require('fs');var path=require(_0x42ce('0x5'));var rimraf=require(_0x42ce('0x6'));var config=require(_0x42ce('0x7'));var attributes=require(_0x42ce('0x8'));module['exports']=function(_0x467bc1,_0x3822e2){return _0x467bc1[_0x42ce('0x9')](_0x42ce('0xa'),attributes,{'tableName':_0x42ce('0xb'),'paranoid':![],'indexes':[{'name':_0x42ce('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd515=['rimraf','./intZendeskField.attributes','exports','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path'];(function(_0x47f089,_0x43ed2f){var _0x67ddac=function(_0x4c5e09){while(--_0x4c5e09){_0x47f089['push'](_0x47f089['shift']());}};_0x67ddac(++_0x43ed2f);}(_0xd515,0xa3));var _0x5d51=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0xd515[_0x44946b];return _0x249bc4;};'use strict';var _=require(_0x5d51('0x0'));var util=require(_0x5d51('0x1'));var logger=require('../../config/logger')(_0x5d51('0x2'));var moment=require('moment');var BPromise=require(_0x5d51('0x3'));var rp=require(_0x5d51('0x4'));var fs=require('fs');var path=require(_0x5d51('0x5'));var rimraf=require(_0x5d51('0x6'));var config=require('../../config/environment');var attributes=require(_0x5d51('0x7'));module[_0x5d51('0x8')]=function(_0x41255a,_0x506971){return _0x41255a['define']('ZendeskField',attributes,{'tableName':_0x5d51('0x9'),'paranoid':![],'indexes':[{'name':_0x5d51('0xa'),'fields':[_0x5d51('0xb'),_0x5d51('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ce1b28a..989bb93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x879e=['request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','error','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x22053b,_0x159706){var _0x3a0e8b=function(_0x4e1b91){while(--_0x4e1b91){_0x22053b['push'](_0x22053b['shift']());}};_0x3a0e8b(++_0x159706);}(_0x879e,0x14a));var _0xe879=function(_0x33b259,_0x2036be){_0x33b259=_0x33b259-0x0;var _0xf95548=_0x879e[_0x33b259];return _0xf95548;};'use strict';var _=require(_0xe879('0x0'));var util=require(_0xe879('0x1'));var moment=require('moment');var BPromise=require(_0xe879('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe879('0x3'));var db=require(_0xe879('0x4'))['db'];var utils=require(_0xe879('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xe879('0x6'));var jayson=require(_0xe879('0x7'));var client=jayson[_0xe879('0x8')][_0xe879('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x33421e,_0x55dc0a,_0x1d9598){return new BPromise(function(_0x52df2b,_0x3ad09b){return client[_0xe879('0xa')](_0x33421e,_0x1d9598)[_0xe879('0xb')](function(_0x5cfdbc){logger['info'](_0xe879('0xc'),_0x55dc0a,_0xe879('0xd'));logger[_0xe879('0xe')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x55dc0a,_0xe879('0xd'),JSON['stringify'](_0x5cfdbc));if(_0x5cfdbc[_0xe879('0xf')]){if(_0x5cfdbc[_0xe879('0xf')]['code']===0x1f4){logger[_0xe879('0xf')](_0xe879('0xc'),_0x55dc0a,_0x5cfdbc[_0xe879('0xf')][_0xe879('0x10')]);return _0x3ad09b(_0x5cfdbc[_0xe879('0xf')]['message']);}logger[_0xe879('0xf')](_0xe879('0xc'),_0x55dc0a,_0x5cfdbc[_0xe879('0xf')][_0xe879('0x10')]);return _0x52df2b(_0x5cfdbc['error'][_0xe879('0x10')]);}else{logger[_0xe879('0x11')]('ZendeskField,\x20%s,\x20%s',_0x55dc0a,_0xe879('0xd'));_0x52df2b(_0x5cfdbc[_0xe879('0x12')][_0xe879('0x10')]);}})[_0xe879('0x13')](function(_0x4afdcc){logger[_0xe879('0xf')](_0xe879('0xc'),_0x55dc0a,_0x4afdcc);_0x3ad09b(_0x4afdcc);});});}
\ No newline at end of file
+var _0x170a=['client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment'];(function(_0x376f7b,_0x31f812){var _0x3f2df3=function(_0x86afb9){while(--_0x86afb9){_0x376f7b['push'](_0x376f7b['shift']());}};_0x3f2df3(++_0x31f812);}(_0x170a,0xf4));var _0xa170=function(_0x38dae2,_0x1063ab){_0x38dae2=_0x38dae2-0x0;var _0x256e74=_0x170a[_0x38dae2];return _0x256e74;};'use strict';var _=require('lodash');var util=require(_0xa170('0x0'));var moment=require(_0xa170('0x1'));var BPromise=require(_0xa170('0x2'));var rs=require(_0xa170('0x3'));var fs=require('fs');var Redis=require(_0xa170('0x4'));var db=require(_0xa170('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa170('0x6'));var config=require(_0xa170('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa170('0x8')][_0xa170('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x33b929,_0x20d5c1,_0x4b196e){return new BPromise(function(_0xaf476c,_0x553f23){return client[_0xa170('0xa')](_0x33b929,_0x4b196e)[_0xa170('0xb')](function(_0x56fc16){logger[_0xa170('0xc')](_0xa170('0xd'),_0x20d5c1,_0xa170('0xe'));logger['debug'](_0xa170('0xf'),_0x20d5c1,_0xa170('0xe'),JSON[_0xa170('0x10')](_0x56fc16));if(_0x56fc16[_0xa170('0x11')]){if(_0x56fc16[_0xa170('0x11')][_0xa170('0x12')]===0x1f4){logger[_0xa170('0x11')]('ZendeskField,\x20%s,\x20%s',_0x20d5c1,_0x56fc16['error'][_0xa170('0x13')]);return _0x553f23(_0x56fc16[_0xa170('0x11')][_0xa170('0x13')]);}logger['error'](_0xa170('0xd'),_0x20d5c1,_0x56fc16[_0xa170('0x11')][_0xa170('0x13')]);return _0xaf476c(_0x56fc16[_0xa170('0x11')]['message']);}else{logger[_0xa170('0xc')](_0xa170('0xd'),_0x20d5c1,_0xa170('0xe'));_0xaf476c(_0x56fc16['result'][_0xa170('0x13')]);}})[_0xa170('0x14')](function(_0x2c4b8a){logger[_0xa170('0x11')](_0xa170('0xd'),_0x20d5c1,_0x2c4b8a);_0x553f23(_0x2c4b8a);});});}
\ No newline at end of file
index 6c667f8..a4a47df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c0=['/:id/configurations','getConfigurations','/:id/fields','getFields','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoAccount.controller','get','index','isAuthenticated','show'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x19c0,0x1e6));var _0x019c=function(_0x4fcf35,_0x5270be){_0x4fcf35=_0x4fcf35-0x0;var _0x105023=_0x19c0[_0x4fcf35];return _0x105023;};'use strict';var multer=require(_0x019c('0x0'));var util=require(_0x019c('0x1'));var path=require(_0x019c('0x2'));var timeout=require(_0x019c('0x3'));var express=require(_0x019c('0x4'));var router=express[_0x019c('0x5')]();var fs_extra=require(_0x019c('0x6'));var auth=require(_0x019c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x019c('0x8'));var controller=require(_0x019c('0x9'));router[_0x019c('0xa')]('/',auth['isAuthenticated'](),controller[_0x019c('0xb')]);router[_0x019c('0xa')]('/:id',auth[_0x019c('0xc')](),controller[_0x019c('0xd')]);router[_0x019c('0xa')](_0x019c('0xe'),auth[_0x019c('0xc')](),controller[_0x019c('0xf')]);router[_0x019c('0xa')](_0x019c('0x10'),auth[_0x019c('0xc')](),controller[_0x019c('0x11')]);router['post']('/',auth[_0x019c('0xc')](),controller[_0x019c('0x12')]);router['post'](_0x019c('0xe'),auth[_0x019c('0xc')](),controller['addConfiguration']);router[_0x019c('0x13')](_0x019c('0x14'),auth['isAuthenticated'](),controller[_0x019c('0x15')]);router[_0x019c('0x16')](_0x019c('0x14'),auth[_0x019c('0xc')](),controller[_0x019c('0x17')]);module[_0x019c('0x18')]=router;
\ No newline at end of file
+var _0xe45f=['/:id/configurations','addConfiguration','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations','getFields','create','post'];(function(_0x46d2e2,_0x2f1a4f){var _0x4071c3=function(_0x37ee01){while(--_0x37ee01){_0x46d2e2['push'](_0x46d2e2['shift']());}};_0x4071c3(++_0x2f1a4f);}(_0xe45f,0x1cd));var _0xfe45=function(_0x1037dd,_0x523045){_0x1037dd=_0x1037dd-0x0;var _0x32439d=_0xe45f[_0x1037dd];return _0x32439d;};'use strict';var multer=require(_0xfe45('0x0'));var util=require(_0xfe45('0x1'));var path=require(_0xfe45('0x2'));var timeout=require(_0xfe45('0x3'));var express=require(_0xfe45('0x4'));var router=express['Router']();var fs_extra=require(_0xfe45('0x5'));var auth=require(_0xfe45('0x6'));var interaction=require(_0xfe45('0x7'));var config=require(_0xfe45('0x8'));var controller=require(_0xfe45('0x9'));router[_0xfe45('0xa')]('/',auth['isAuthenticated'](),controller[_0xfe45('0xb')]);router['get'](_0xfe45('0xc'),auth[_0xfe45('0xd')](),controller[_0xfe45('0xe')]);router[_0xfe45('0xa')]('/:id/configurations',auth[_0xfe45('0xd')](),controller[_0xfe45('0xf')]);router[_0xfe45('0xa')]('/:id/fields',auth[_0xfe45('0xd')](),controller[_0xfe45('0x10')]);router['post']('/',auth[_0xfe45('0xd')](),controller[_0xfe45('0x11')]);router[_0xfe45('0x12')](_0xfe45('0x13'),auth[_0xfe45('0xd')](),controller[_0xfe45('0x14')]);router['put'](_0xfe45('0xc'),auth[_0xfe45('0xd')](),controller[_0xfe45('0x15')]);router[_0xfe45('0x16')](_0xfe45('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xfe45('0x17')]=router;
\ No newline at end of file
index 45089fc..0268873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153f=['exports','STRING','sequelize'];(function(_0x1b5a5a,_0x1c3b75){var _0x42b32d=function(_0x3d35ab){while(--_0x3d35ab){_0x1b5a5a['push'](_0x1b5a5a['shift']());}};_0x42b32d(++_0x1c3b75);}(_0x153f,0x15b));var _0xf153=function(_0xc44e3b,_0x482dbe){_0xc44e3b=_0xc44e3b-0x0;var _0x686598=_0x153f[_0xc44e3b];return _0x686598;};'use strict';var Sequelize=require(_0xf153('0x0'));module[_0xf153('0x1')]={'name':{'type':Sequelize[_0xf153('0x2')]},'description':{'type':Sequelize[_0xf153('0x2')]},'host':{'type':Sequelize[_0xf153('0x2')]},'zone':{'type':Sequelize[_0xf153('0x2')]},'clientId':{'type':Sequelize[_0xf153('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xf153('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0xf153('0x2')]}};
\ No newline at end of file
+var _0xbd50=['STRING','sequelize','exports'];(function(_0x2892da,_0x191a40){var _0x28cff2=function(_0x57023d){while(--_0x57023d){_0x2892da['push'](_0x2892da['shift']());}};_0x28cff2(++_0x191a40);}(_0xbd50,0x196));var _0x0bd5=function(_0x57e9b0,_0x1dfbdf){_0x57e9b0=_0x57e9b0-0x0;var _0xbd00=_0xbd50[_0x57e9b0];return _0xbd00;};'use strict';var Sequelize=require(_0x0bd5('0x0'));module[_0x0bd5('0x1')]={'name':{'type':Sequelize[_0x0bd5('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x0bd5('0x2')]},'zone':{'type':Sequelize[_0x0bd5('0x2')]},'clientId':{'type':Sequelize[_0x0bd5('0x2')]},'clientSecret':{'type':Sequelize[_0x0bd5('0x2')]},'serverUrl':{'type':Sequelize[_0x0bd5('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 58ab4b4..2c8c2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x043a=['serverUrl','slice','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Description','WhoId','Call_Result','Call_Type','system_mandatory','push','display_label','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','rows','catch','show','params','merge','find','create','body','destroy','getConfigurations','order','addConfiguration','findOne','AccountId','getSubjects','channel','getDescriptions','Subjects','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','code','host','zoho.eu','com'];(function(_0x1233d2,_0x5416f4){var _0x22759e=function(_0xb516aa){while(--_0xb516aa){_0x1233d2['push'](_0x1233d2['shift']());}};_0x22759e(++_0x5416f4);}(_0x043a,0x192));var _0xa043=function(_0x117926,_0x5dd229){_0x117926=_0x117926-0x0;var _0x3582c1=_0x043a[_0x117926];return _0x3582c1;};'use strict';var emlformat=require(_0xa043('0x0'));var rimraf=require(_0xa043('0x1'));var zipdir=require(_0xa043('0x2'));var jsonpatch=require(_0xa043('0x3'));var rp=require(_0xa043('0x4'));var moment=require(_0xa043('0x5'));var BPromise=require(_0xa043('0x6'));var Mustache=require('mustache');var util=require(_0xa043('0x7'));var path=require(_0xa043('0x8'));var sox=require(_0xa043('0x9'));var csv=require(_0xa043('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa043('0xb'));var _=require('lodash');var squel=require(_0xa043('0xc'));var crypto=require(_0xa043('0xd'));var jsforce=require(_0xa043('0xe'));var deskjs=require(_0xa043('0xf'));var toCsv=require(_0xa043('0xa'));var querystring=require('querystring');var Papa=require(_0xa043('0x10'));var Redis=require('ioredis');var authService=require(_0xa043('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa043('0x12'));var hardwareService=require(_0xa043('0x13'));var logger=require(_0xa043('0x14'))(_0xa043('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa043('0x16'));var db=require(_0xa043('0x17'))['db'];var integrations=require(_0xa043('0x18'));function respondWithStatusCode(_0x3ec180,_0x4171dd){_0x4171dd=_0x4171dd||0xcc;return function(_0x4238c1){if(_0x4238c1){return _0x3ec180['sendStatus'](_0x4171dd);}return _0x3ec180[_0xa043('0x19')](_0x4171dd)[_0xa043('0x1a')]();};}function respondWithResult(_0x561900,_0x3514a8){_0x3514a8=_0x3514a8||0xc8;return function(_0x3665bf){if(_0x3665bf){return _0x561900[_0xa043('0x19')](_0x3514a8)[_0xa043('0x1b')](_0x3665bf);}};}function respondWithFilteredResult(_0x5c39b0,_0x11e79e){return function(_0x18469a){if(_0x18469a){var _0x4080ec=typeof _0x11e79e[_0xa043('0x1c')]==='undefined'&&typeof _0x11e79e[_0xa043('0x1d')]===_0xa043('0x1e');var _0x5399f7=_0x18469a[_0xa043('0x1f')];var _0x495e66=_0x4080ec?0x0:_0x11e79e[_0xa043('0x1c')];var _0xebbf17=_0x4080ec?_0x18469a['count']:_0x11e79e['offset']+_0x11e79e['limit'];var _0x4eef2f;if(_0xebbf17>=_0x5399f7){_0xebbf17=_0x5399f7;_0x4eef2f=0xc8;}else{_0x4eef2f=0xce;}_0x5c39b0[_0xa043('0x19')](_0x4eef2f);return _0x5c39b0[_0xa043('0x20')]('Content-Range',_0x495e66+'-'+_0xebbf17+'/'+_0x5399f7)['json'](_0x18469a);}return null;};}function patchUpdates(_0x344562){return function(_0x5995b9){try{jsonpatch[_0xa043('0x21')](_0x5995b9,_0x344562,!![]);}catch(_0x28a440){return BPromise[_0xa043('0x22')](_0x28a440);}return _0x5995b9[_0xa043('0x23')]();};}function saveUpdates(_0x3d78a5,_0x576b3b){return function(_0x54867c){if(_0x54867c){return _0x54867c[_0xa043('0x24')](_0x3d78a5)[_0xa043('0x25')](function(_0x4b0820){return _0x4b0820;});}return null;};}function removeEntity(_0x1ff479,_0x35c8f0){return function(_0x296239){if(_0x296239){return _0x296239['destroy']()[_0xa043('0x25')](function(){_0x1ff479['status'](0xcc)[_0xa043('0x1a')]();});}};}function handleEntityNotFound(_0x295483,_0x364ac2){return function(_0x5807e3){if(!_0x5807e3){_0x295483[_0xa043('0x26')](0x194);}return _0x5807e3;};}function handleError(_0x596195,_0x4265b8){_0x4265b8=_0x4265b8||0x1f4;return function(_0x5d54a2){logger[_0xa043('0x27')](_0x5d54a2[_0xa043('0x28')]);if(_0x5d54a2['name']){delete _0x5d54a2[_0xa043('0x29')];}_0x596195['status'](_0x4265b8)[_0xa043('0x2a')](_0x5d54a2);};}exports[_0xa043('0x2b')]=function(_0x55644f,_0x182720){var _0x5a38e0={},_0x42bc92={},_0x22dddd={'count':0x0,'rows':[]};var _0xcffc82=_[_0xa043('0x2c')](db[_0xa043('0x2d')][_0xa043('0x2e')],function(_0x16a2d){return{'name':_0x16a2d[_0xa043('0x2f')],'type':_0x16a2d[_0xa043('0x30')]['key']};});_0x42bc92[_0xa043('0x31')]=_['map'](_0xcffc82,_0xa043('0x29'));_0x42bc92[_0xa043('0x32')]=_[_0xa043('0x33')](_0x55644f[_0xa043('0x32')]);_0x42bc92['filters']=_[_0xa043('0x34')](_0x42bc92[_0xa043('0x31')],_0x42bc92['query']);_0x5a38e0[_0xa043('0x35')]=_['intersection'](_0x42bc92[_0xa043('0x31')],qs[_0xa043('0x36')](_0x55644f[_0xa043('0x32')]['fields']));_0x5a38e0[_0xa043('0x35')]=_0x5a38e0[_0xa043('0x35')][_0xa043('0x37')]?_0x5a38e0['attributes']:_0x42bc92['model'];if(!_0x55644f[_0xa043('0x32')][_0xa043('0x38')](_0xa043('0x39'))){_0x5a38e0[_0xa043('0x1d')]=qs['limit'](_0x55644f['query']['limit']);_0x5a38e0[_0xa043('0x1c')]=qs[_0xa043('0x1c')](_0x55644f['query']['offset']);}_0x5a38e0['order']=qs[_0xa043('0x3a')](_0x55644f['query']['sort']);_0x5a38e0[_0xa043('0x3b')]=qs[_0xa043('0x3c')](_[_0xa043('0x3d')](_0x55644f[_0xa043('0x32')],_0x42bc92[_0xa043('0x3c')]),_0xcffc82);if(_0x55644f[_0xa043('0x32')][_0xa043('0x3e')]){_0x5a38e0[_0xa043('0x3b')]=_['merge'](_0x5a38e0['where'],{'$or':_[_0xa043('0x2c')](_0xcffc82,function(_0xad3609){if(_0xad3609[_0xa043('0x30')]!==_0xa043('0x3f')){var _0x488d07={};_0x488d07[_0xad3609['name']]={'$like':'%'+_0x55644f[_0xa043('0x32')][_0xa043('0x3e')]+'%'};return _0x488d07;}})});}_0x5a38e0=_['merge']({},_0x5a38e0,_0x55644f[_0xa043('0x40')]);var _0x1b9605={'where':_0x5a38e0['where']};return db['ZohoAccount']['count'](_0x1b9605)[_0xa043('0x25')](function(_0x3bf361){_0x22dddd[_0xa043('0x1f')]=_0x3bf361;if(_0x55644f[_0xa043('0x32')][_0xa043('0x41')]){_0x5a38e0[_0xa043('0x42')]=[{'all':!![]}];}return db[_0xa043('0x2d')]['findAll'](_0x5a38e0);})[_0xa043('0x25')](function(_0x490586){_0x22dddd[_0xa043('0x43')]=_0x490586;return _0x22dddd;})[_0xa043('0x25')](respondWithFilteredResult(_0x182720,_0x5a38e0))[_0xa043('0x44')](handleError(_0x182720,null));};exports[_0xa043('0x45')]=function(_0x5ed28d,_0x12aa8d){var _0x343f8f={'raw':![],'where':{'id':_0x5ed28d[_0xa043('0x46')]['id']}},_0x4f38e7={};_0x4f38e7[_0xa043('0x31')]=_[_0xa043('0x33')](db[_0xa043('0x2d')][_0xa043('0x2e')]);_0x4f38e7[_0xa043('0x32')]=_[_0xa043('0x33')](_0x5ed28d[_0xa043('0x32')]);_0x4f38e7[_0xa043('0x3c')]=_[_0xa043('0x34')](_0x4f38e7[_0xa043('0x31')],_0x4f38e7[_0xa043('0x32')]);_0x343f8f[_0xa043('0x35')]=_['intersection'](_0x4f38e7[_0xa043('0x31')],qs[_0xa043('0x36')](_0x5ed28d[_0xa043('0x32')]['fields']));_0x343f8f[_0xa043('0x35')]=_0x343f8f[_0xa043('0x35')][_0xa043('0x37')]?_0x343f8f['attributes']:_0x4f38e7['model'];if(_0x5ed28d['query'][_0xa043('0x41')]){_0x343f8f[_0xa043('0x42')]=[{'all':!![]}];}_0x343f8f=_[_0xa043('0x47')]({},_0x343f8f,_0x5ed28d[_0xa043('0x40')]);return db[_0xa043('0x2d')][_0xa043('0x48')](_0x343f8f)['then'](handleEntityNotFound(_0x12aa8d,null))[_0xa043('0x25')](respondWithResult(_0x12aa8d,null))[_0xa043('0x44')](handleError(_0x12aa8d,null));};exports[_0xa043('0x49')]=function(_0x3d4dad,_0x1dac37){return db['ZohoAccount'][_0xa043('0x49')](_0x3d4dad[_0xa043('0x4a')],{})[_0xa043('0x25')](respondWithResult(_0x1dac37,0xc9))[_0xa043('0x44')](handleError(_0x1dac37,null));};exports[_0xa043('0x24')]=function(_0x174f79,_0x470889){if(_0x174f79[_0xa043('0x4a')]['id']){delete _0x174f79[_0xa043('0x4a')]['id'];}return db[_0xa043('0x2d')][_0xa043('0x48')]({'where':{'id':_0x174f79[_0xa043('0x46')]['id']}})[_0xa043('0x25')](handleEntityNotFound(_0x470889,null))[_0xa043('0x25')](saveUpdates(_0x174f79[_0xa043('0x4a')],null))['then'](respondWithResult(_0x470889,null))[_0xa043('0x44')](handleError(_0x470889,null));};exports[_0xa043('0x4b')]=function(_0x5f3765,_0xe0adfe){return db[_0xa043('0x2d')]['find']({'where':{'id':_0x5f3765[_0xa043('0x46')]['id']}})[_0xa043('0x25')](handleEntityNotFound(_0xe0adfe,null))['then'](removeEntity(_0xe0adfe,null))['catch'](handleError(_0xe0adfe,null));};exports[_0xa043('0x4c')]=function(_0x183a08,_0x274555,_0x542408){var _0x34e04c={};var _0x1fd302={};var _0x519eda;var _0x48515a;return db[_0xa043('0x2d')]['findOne']({'where':{'id':_0x183a08[_0xa043('0x46')]['id']}})[_0xa043('0x25')](handleEntityNotFound(_0x274555,null))['then'](function(_0x2f8862){if(_0x2f8862){_0x519eda=_0x2f8862;_0x1fd302[_0xa043('0x31')]=_[_0xa043('0x33')](db['ZohoConfiguration'][_0xa043('0x2e')]);_0x1fd302[_0xa043('0x32')]=_[_0xa043('0x33')](_0x183a08[_0xa043('0x32')]);_0x1fd302[_0xa043('0x3c')]=_[_0xa043('0x34')](_0x1fd302[_0xa043('0x31')],_0x1fd302['query']);_0x34e04c['attributes']=_[_0xa043('0x34')](_0x1fd302[_0xa043('0x31')],qs['fields'](_0x183a08[_0xa043('0x32')][_0xa043('0x36')]));_0x34e04c[_0xa043('0x35')]=_0x34e04c[_0xa043('0x35')][_0xa043('0x37')]?_0x34e04c[_0xa043('0x35')]:_0x1fd302[_0xa043('0x31')];_0x34e04c[_0xa043('0x4d')]=qs[_0xa043('0x3a')](_0x183a08[_0xa043('0x32')]['sort']);_0x34e04c[_0xa043('0x3b')]=qs['filters'](_['pick'](_0x183a08[_0xa043('0x32')],_0x1fd302['filters']));if(_0x183a08['query'][_0xa043('0x3e')]){_0x34e04c[_0xa043('0x3b')]=_[_0xa043('0x47')](_0x34e04c[_0xa043('0x3b')],{'$or':_[_0xa043('0x2c')](_0x34e04c[_0xa043('0x35')],function(_0x32659c){var _0x1b479e={};_0x1b479e[_0x32659c]={'$like':'%'+_0x183a08[_0xa043('0x32')]['filter']+'%'};return _0x1b479e;})});}_0x34e04c=_[_0xa043('0x47')]({},_0x34e04c,_0x183a08['options']);return _0x519eda['getConfigurations'](_0x34e04c);}})[_0xa043('0x25')](function(_0x4fea21){if(_0x4fea21){_0x48515a=_0x4fea21[_0xa043('0x37')];if(!_0x183a08[_0xa043('0x32')]['hasOwnProperty'](_0xa043('0x39'))){_0x34e04c['limit']=qs[_0xa043('0x1d')](_0x183a08[_0xa043('0x32')][_0xa043('0x1d')]);_0x34e04c[_0xa043('0x1c')]=qs[_0xa043('0x1c')](_0x183a08[_0xa043('0x32')]['offset']);}return _0x519eda[_0xa043('0x4c')](_0x34e04c);}})['then'](function(_0x2e990c){if(_0x2e990c){return _0x2e990c?{'count':_0x48515a,'rows':_0x2e990c}:null;}})[_0xa043('0x25')](respondWithResult(_0x274555,null))[_0xa043('0x44')](handleError(_0x274555,null));};exports[_0xa043('0x4e')]=function(_0x40aa6a,_0x5bed80,_0x2e4e5d){if(_0x40aa6a[_0xa043('0x4a')]['id']){delete _0x40aa6a[_0xa043('0x4a')]['id'];}return db['ZohoAccount'][_0xa043('0x4f')]({'where':{'id':_0x40aa6a[_0xa043('0x46')]['id']}})['then'](handleEntityNotFound(_0x5bed80,null))[_0xa043('0x25')](function(_0x2cbf98){if(_0x2cbf98){_0x40aa6a[_0xa043('0x4a')][_0xa043('0x50')]=_0x2cbf98['id'];_0x40aa6a['body']['Subjects']=integrations[_0xa043('0x51')](_0x40aa6a[_0xa043('0x4a')][_0xa043('0x52')],_0x40aa6a[_0xa043('0x4a')][_0xa043('0x30')]);_0x40aa6a[_0xa043('0x4a')]['Descriptions']=integrations[_0xa043('0x53')](_0x40aa6a[_0xa043('0x4a')][_0xa043('0x52')],_0x40aa6a['body'][_0xa043('0x30')]);return db['ZohoConfiguration'][_0xa043('0x49')](_0x40aa6a[_0xa043('0x4a')],{'include':[{'model':db['ZohoField'],'as':_0xa043('0x54')},{'model':db['ZohoField'],'as':_0xa043('0x55')}]});}return null;})[_0xa043('0x25')](respondWithResult(_0x5bed80,null))[_0xa043('0x44')](handleError(_0x5bed80,null));};function getAccessToken(_0x48d034){return new Promise(function(_0x232fcf,_0x2d3fc6){var _0xd18f1d;switch(_0x48d034[_0xa043('0x56')]){case'US':_0xd18f1d=_0xa043('0x57');break;case'AU':_0xd18f1d=_0xa043('0x58');break;case'EU':_0xd18f1d=_0xa043('0x59');break;case'IN':_0xd18f1d='https://accounts.zoho.in';break;case'CN':_0xd18f1d=_0xa043('0x5a');break;default:_0xd18f1d='https://accounts.zoho.eu';break;}var _0x1d950f={'method':_0xa043('0x5b'),'uri':_0xd18f1d+_0xa043('0x5c'),'qs':{'refresh_token':_0x48d034[_0xa043('0x5d')],'client_id':_0x48d034[_0xa043('0x5e')],'client_secret':_0x48d034[_0xa043('0x5f')],'grant_type':_0xa043('0x60')},'json':!![]};return rp(_0x1d950f)[_0xa043('0x25')](function(_0x16501c){if(_0x16501c[_0xa043('0x61')]){_0x232fcf(_0x16501c[_0xa043('0x61')]);}else{_0x2d3fc6('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x14bce4){_0x2d3fc6(_0x14bce4);});});}exports['getFields']=function(_0x381041,_0x2cea09,_0x1294ec){var _0x5a640f,_0x57ea22,_0x4593ad,_0x26eecb,_0x13f766;return db[_0xa043('0x2d')]['findOne']({'where':{'id':_0x381041[_0xa043('0x46')]['id']},'attributes':['id','host',_0xa043('0x56'),_0xa043('0x5e'),_0xa043('0x5f'),'serverUrl',_0xa043('0x62'),_0xa043('0x5d')]})[_0xa043('0x25')](handleEntityNotFound(_0x2cea09,null))['then'](function(_0x921412){_0x13f766=_0x921412;_0x5a640f=_0x13f766[_0xa043('0x63')];_0x57ea22=_0x5a640f===_0xa043('0x64')?'eu':_0xa043('0x65');_0x4593ad=_0x13f766[_0xa043('0x66')];var _0x21a755=_0x4593ad[_0xa043('0x67')](-0x1);if(_0x21a755==='/'||_0x21a755==='\x5c'||_0x21a755===':'){_0x4593ad=_0x4593ad['substring'](0x0,_0x4593ad[_0xa043('0x68')](_0x21a755));}if(!_0x13f766[_0xa043('0x5d')]){throw new Error(_0xa043('0x69'));}return getAccessToken(_0x13f766);})['then'](function(_0x276fa2){if(_0x276fa2){return rp({'method':'GET','uri':util[_0xa043('0x6a')](_0xa043('0x6b'),_0x57ea22),'qs':{'module':_0xa043('0x6c')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x276fa2},'json':!![]});}})['then'](function(_0x2460c8){if(_0x2460c8){if(_0x2460c8[_0xa043('0x6d')]&&_0x2460c8[_0xa043('0x6d')][_0xa043('0x27')]){throw new Error(_0x2460c8[_0xa043('0x6d')][_0xa043('0x27')]['message']);}var _0x33ccd2=[];var _0x2cee3b=[];var _0x3533bd=[_0xa043('0x6e'),'Subject',_0xa043('0x6f'),_0xa043('0x70'),'Call_Duration',_0xa043('0x71'),'Call_Start_Time',_0xa043('0x72')];_0x2cee3b=_['remove'](_0x2460c8['fields'],function(_0x5d8e9e){return _0x3533bd['includes'](_0x5d8e9e['api_name']);});for(var _0xda7bd9=0x0;_0xda7bd9<_0x2cee3b[_0xa043('0x37')];_0xda7bd9++){if(_0x2cee3b[_0xda7bd9][_0xa043('0x73')]===![]){_0x33ccd2[_0xa043('0x74')]({'id':_0x2cee3b[_0xda7bd9]['id'],'name':_0x2cee3b[_0xda7bd9][_0xa043('0x75')],'custom':_0x2cee3b[_0xda7bd9]['custom_field'],'options':_0x2cee3b[_0xda7bd9]['data_type']===_0xa043('0x76')&&_0x2cee3b[_0xda7bd9]['pick_list_values']['length']>-0x1?_['map'](_0x2cee3b[_0xda7bd9][_0xa043('0x77')],function(_0xd54e5a){return{'name':_0xd54e5a,'value':_0xd54e5a};}):[]});}}return{'count':_0x33ccd2[_0xa043('0x37')],'rows':_0x33ccd2};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x2cea09,null))[_0xa043('0x44')](function(_0x32a34d){var _0xc2c2d2=_0x381041[_0xa043('0x32')][_0xa043('0x78')]?0x1f4:_0x32a34d[_0xa043('0x79')]||0x1f4;logger[_0xa043('0x27')](_0xa043('0x7a'),_0xa043('0x7b'),_0xc2c2d2,JSON[_0xa043('0x7c')](_0x32a34d));delete _0x32a34d['name'];if(_0xc2c2d2===0x191){_0xc2c2d2=0x190;}_0x2cea09[_0xa043('0x19')](_0xc2c2d2)['send'](_0x381041[_0xa043('0x32')][_0xa043('0x78')]?{'message':_0xa043('0x7d'),'statusCode':_0x32a34d[_0xa043('0x79')]}:_0x32a34d);});};
\ No newline at end of file
+var _0x533c=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','save','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','update','getConfigurations','findOne','ZohoConfiguration','addConfiguration','Subjects','getSubjects','channel','getDescriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl','code','zoho.eu','com','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','Zoho-oauthtoken\x20','response','Owner','Description','WhoId','Call_Duration','Call_Result','remove','includes','api_name','system_mandatory','push','display_label','custom_field','pick_list_values','test','statusCode','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x1307b6,_0x3b2d7a){var _0x21131a=function(_0x175699){while(--_0x175699){_0x1307b6['push'](_0x1307b6['shift']());}};_0x21131a(++_0x3b2d7a);}(_0x533c,0xf0));var _0xc533=function(_0x402e89,_0xe3865a){_0x402e89=_0x402e89-0x0;var _0x55afcf=_0x533c[_0x402e89];return _0x55afcf;};'use strict';var emlformat=require(_0xc533('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc533('0x1'));var jsonpatch=require(_0xc533('0x2'));var rp=require(_0xc533('0x3'));var moment=require(_0xc533('0x4'));var BPromise=require(_0xc533('0x5'));var Mustache=require(_0xc533('0x6'));var util=require('util');var path=require(_0xc533('0x7'));var sox=require('sox');var csv=require(_0xc533('0x8'));var ejs=require(_0xc533('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc533('0xa'));var squel=require(_0xc533('0xb'));var crypto=require(_0xc533('0xc'));var jsforce=require(_0xc533('0xd'));var deskjs=require(_0xc533('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc533('0xf'));var Papa=require(_0xc533('0x10'));var Redis=require(_0xc533('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc533('0x12'));var as=require(_0xc533('0x13'));var hardwareService=require(_0xc533('0x14'));var logger=require(_0xc533('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xc533('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc533('0x17'))['db'];var integrations=require(_0xc533('0x18'));function respondWithStatusCode(_0x259ac6,_0x58173d){_0x58173d=_0x58173d||0xcc;return function(_0x32fcc5){if(_0x32fcc5){return _0x259ac6[_0xc533('0x19')](_0x58173d);}return _0x259ac6['status'](_0x58173d)[_0xc533('0x1a')]();};}function respondWithResult(_0x1d602d,_0x373525){_0x373525=_0x373525||0xc8;return function(_0x48d036){if(_0x48d036){return _0x1d602d[_0xc533('0x1b')](_0x373525)[_0xc533('0x1c')](_0x48d036);}};}function respondWithFilteredResult(_0x37924e,_0x4471c1){return function(_0xc72047){if(_0xc72047){var _0x360315=typeof _0x4471c1[_0xc533('0x1d')]===_0xc533('0x1e')&&typeof _0x4471c1['limit']===_0xc533('0x1e');var _0x2b0681=_0xc72047[_0xc533('0x1f')];var _0x372451=_0x360315?0x0:_0x4471c1[_0xc533('0x1d')];var _0x126ac2=_0x360315?_0xc72047['count']:_0x4471c1[_0xc533('0x1d')]+_0x4471c1[_0xc533('0x20')];var _0x43e1d1;if(_0x126ac2>=_0x2b0681){_0x126ac2=_0x2b0681;_0x43e1d1=0xc8;}else{_0x43e1d1=0xce;}_0x37924e[_0xc533('0x1b')](_0x43e1d1);return _0x37924e[_0xc533('0x21')]('Content-Range',_0x372451+'-'+_0x126ac2+'/'+_0x2b0681)['json'](_0xc72047);}return null;};}function patchUpdates(_0xafc09b){return function(_0x44a2d1){try{jsonpatch[_0xc533('0x22')](_0x44a2d1,_0xafc09b,!![]);}catch(_0xad07e2){return BPromise['reject'](_0xad07e2);}return _0x44a2d1[_0xc533('0x23')]();};}function saveUpdates(_0x448061,_0x2014a4){return function(_0x2f1809){if(_0x2f1809){return _0x2f1809['update'](_0x448061)[_0xc533('0x24')](function(_0x143045){return _0x143045;});}return null;};}function removeEntity(_0x525880,_0x49e9f9){return function(_0x43f1a4){if(_0x43f1a4){return _0x43f1a4['destroy']()[_0xc533('0x24')](function(){_0x525880[_0xc533('0x1b')](0xcc)[_0xc533('0x1a')]();});}};}function handleEntityNotFound(_0x2c8cba,_0x1e6ea3){return function(_0x25450b){if(!_0x25450b){_0x2c8cba[_0xc533('0x19')](0x194);}return _0x25450b;};}function handleError(_0x1f4d8b,_0x4fe9d7){_0x4fe9d7=_0x4fe9d7||0x1f4;return function(_0x5ab653){logger[_0xc533('0x25')](_0x5ab653[_0xc533('0x26')]);if(_0x5ab653[_0xc533('0x27')]){delete _0x5ab653['name'];}_0x1f4d8b[_0xc533('0x1b')](_0x4fe9d7)[_0xc533('0x28')](_0x5ab653);};}exports[_0xc533('0x29')]=function(_0x52c96a,_0x2168d8){var _0x111685={},_0x4d7806={},_0x2c07b1={'count':0x0,'rows':[]};var _0x46435f=_['map'](db['ZohoAccount'][_0xc533('0x2a')],function(_0x365aff){return{'name':_0x365aff[_0xc533('0x2b')],'type':_0x365aff[_0xc533('0x2c')][_0xc533('0x2d')]};});_0x4d7806['model']=_[_0xc533('0x2e')](_0x46435f,_0xc533('0x27'));_0x4d7806[_0xc533('0x2f')]=_[_0xc533('0x30')](_0x52c96a[_0xc533('0x2f')]);_0x4d7806['filters']=_[_0xc533('0x31')](_0x4d7806[_0xc533('0x32')],_0x4d7806['query']);_0x111685['attributes']=_[_0xc533('0x31')](_0x4d7806[_0xc533('0x32')],qs[_0xc533('0x33')](_0x52c96a[_0xc533('0x2f')][_0xc533('0x33')]));_0x111685[_0xc533('0x34')]=_0x111685['attributes'][_0xc533('0x35')]?_0x111685[_0xc533('0x34')]:_0x4d7806['model'];if(!_0x52c96a['query'][_0xc533('0x36')](_0xc533('0x37'))){_0x111685[_0xc533('0x20')]=qs[_0xc533('0x20')](_0x52c96a[_0xc533('0x2f')][_0xc533('0x20')]);_0x111685[_0xc533('0x1d')]=qs['offset'](_0x52c96a[_0xc533('0x2f')][_0xc533('0x1d')]);}_0x111685[_0xc533('0x38')]=qs['sort'](_0x52c96a[_0xc533('0x2f')][_0xc533('0x39')]);_0x111685[_0xc533('0x3a')]=qs['filters'](_[_0xc533('0x3b')](_0x52c96a[_0xc533('0x2f')],_0x4d7806['filters']),_0x46435f);if(_0x52c96a[_0xc533('0x2f')][_0xc533('0x3c')]){_0x111685[_0xc533('0x3a')]=_[_0xc533('0x3d')](_0x111685[_0xc533('0x3a')],{'$or':_[_0xc533('0x2e')](_0x46435f,function(_0x6e8c3c){if(_0x6e8c3c[_0xc533('0x2c')]!==_0xc533('0x3e')){var _0x42c8ec={};_0x42c8ec[_0x6e8c3c['name']]={'$like':'%'+_0x52c96a[_0xc533('0x2f')]['filter']+'%'};return _0x42c8ec;}})});}_0x111685=_[_0xc533('0x3d')]({},_0x111685,_0x52c96a[_0xc533('0x3f')]);var _0x2eae51={'where':_0x111685[_0xc533('0x3a')]};return db[_0xc533('0x40')]['count'](_0x2eae51)[_0xc533('0x24')](function(_0x2d1310){_0x2c07b1[_0xc533('0x1f')]=_0x2d1310;if(_0x52c96a[_0xc533('0x2f')][_0xc533('0x41')]){_0x111685[_0xc533('0x42')]=[{'all':!![]}];}return db[_0xc533('0x40')][_0xc533('0x43')](_0x111685);})[_0xc533('0x24')](function(_0x45bea2){_0x2c07b1[_0xc533('0x44')]=_0x45bea2;return _0x2c07b1;})[_0xc533('0x24')](respondWithFilteredResult(_0x2168d8,_0x111685))[_0xc533('0x45')](handleError(_0x2168d8,null));};exports[_0xc533('0x46')]=function(_0x3c6bf8,_0x5b56d5){var _0x4f4885={'raw':![],'where':{'id':_0x3c6bf8[_0xc533('0x47')]['id']}},_0x3e47d8={};_0x3e47d8[_0xc533('0x32')]=_[_0xc533('0x30')](db[_0xc533('0x40')]['rawAttributes']);_0x3e47d8[_0xc533('0x2f')]=_[_0xc533('0x30')](_0x3c6bf8[_0xc533('0x2f')]);_0x3e47d8[_0xc533('0x48')]=_[_0xc533('0x31')](_0x3e47d8['model'],_0x3e47d8['query']);_0x4f4885[_0xc533('0x34')]=_[_0xc533('0x31')](_0x3e47d8[_0xc533('0x32')],qs[_0xc533('0x33')](_0x3c6bf8['query'][_0xc533('0x33')]));_0x4f4885[_0xc533('0x34')]=_0x4f4885[_0xc533('0x34')]['length']?_0x4f4885['attributes']:_0x3e47d8[_0xc533('0x32')];if(_0x3c6bf8[_0xc533('0x2f')][_0xc533('0x41')]){_0x4f4885['include']=[{'all':!![]}];}_0x4f4885=_[_0xc533('0x3d')]({},_0x4f4885,_0x3c6bf8[_0xc533('0x3f')]);return db[_0xc533('0x40')][_0xc533('0x49')](_0x4f4885)[_0xc533('0x24')](handleEntityNotFound(_0x5b56d5,null))['then'](respondWithResult(_0x5b56d5,null))[_0xc533('0x45')](handleError(_0x5b56d5,null));};exports[_0xc533('0x4a')]=function(_0x444696,_0x3e06e9){return db[_0xc533('0x40')][_0xc533('0x4a')](_0x444696[_0xc533('0x4b')],{})['then'](respondWithResult(_0x3e06e9,0xc9))[_0xc533('0x45')](handleError(_0x3e06e9,null));};exports[_0xc533('0x4c')]=function(_0x5d7a05,_0x74bd7){if(_0x5d7a05['body']['id']){delete _0x5d7a05['body']['id'];}return db[_0xc533('0x40')][_0xc533('0x49')]({'where':{'id':_0x5d7a05[_0xc533('0x47')]['id']}})[_0xc533('0x24')](handleEntityNotFound(_0x74bd7,null))[_0xc533('0x24')](saveUpdates(_0x5d7a05[_0xc533('0x4b')],null))[_0xc533('0x24')](respondWithResult(_0x74bd7,null))['catch'](handleError(_0x74bd7,null));};exports['destroy']=function(_0x57dccd,_0x15ebee){return db[_0xc533('0x40')][_0xc533('0x49')]({'where':{'id':_0x57dccd[_0xc533('0x47')]['id']}})[_0xc533('0x24')](handleEntityNotFound(_0x15ebee,null))[_0xc533('0x24')](removeEntity(_0x15ebee,null))[_0xc533('0x45')](handleError(_0x15ebee,null));};exports[_0xc533('0x4d')]=function(_0x8f7d67,_0xface0c,_0x51a12d){var _0x187554={};var _0xa676bd={};var _0x48ffc7;var _0x1432f0;return db[_0xc533('0x40')][_0xc533('0x4e')]({'where':{'id':_0x8f7d67[_0xc533('0x47')]['id']}})[_0xc533('0x24')](handleEntityNotFound(_0xface0c,null))[_0xc533('0x24')](function(_0x35666b){if(_0x35666b){_0x48ffc7=_0x35666b;_0xa676bd[_0xc533('0x32')]=_[_0xc533('0x30')](db[_0xc533('0x4f')][_0xc533('0x2a')]);_0xa676bd[_0xc533('0x2f')]=_[_0xc533('0x30')](_0x8f7d67[_0xc533('0x2f')]);_0xa676bd[_0xc533('0x48')]=_[_0xc533('0x31')](_0xa676bd['model'],_0xa676bd['query']);_0x187554['attributes']=_[_0xc533('0x31')](_0xa676bd[_0xc533('0x32')],qs[_0xc533('0x33')](_0x8f7d67[_0xc533('0x2f')]['fields']));_0x187554[_0xc533('0x34')]=_0x187554[_0xc533('0x34')]['length']?_0x187554[_0xc533('0x34')]:_0xa676bd[_0xc533('0x32')];_0x187554[_0xc533('0x38')]=qs['sort'](_0x8f7d67[_0xc533('0x2f')]['sort']);_0x187554[_0xc533('0x3a')]=qs['filters'](_[_0xc533('0x3b')](_0x8f7d67[_0xc533('0x2f')],_0xa676bd['filters']));if(_0x8f7d67[_0xc533('0x2f')][_0xc533('0x3c')]){_0x187554[_0xc533('0x3a')]=_[_0xc533('0x3d')](_0x187554[_0xc533('0x3a')],{'$or':_[_0xc533('0x2e')](_0x187554['attributes'],function(_0x210b91){var _0x4ca9e7={};_0x4ca9e7[_0x210b91]={'$like':'%'+_0x8f7d67[_0xc533('0x2f')]['filter']+'%'};return _0x4ca9e7;})});}_0x187554=_['merge']({},_0x187554,_0x8f7d67[_0xc533('0x3f')]);return _0x48ffc7['getConfigurations'](_0x187554);}})[_0xc533('0x24')](function(_0x2bd393){if(_0x2bd393){_0x1432f0=_0x2bd393[_0xc533('0x35')];if(!_0x8f7d67[_0xc533('0x2f')]['hasOwnProperty'](_0xc533('0x37'))){_0x187554['limit']=qs['limit'](_0x8f7d67[_0xc533('0x2f')][_0xc533('0x20')]);_0x187554[_0xc533('0x1d')]=qs[_0xc533('0x1d')](_0x8f7d67[_0xc533('0x2f')][_0xc533('0x1d')]);}return _0x48ffc7[_0xc533('0x4d')](_0x187554);}})[_0xc533('0x24')](function(_0x36c6d3){if(_0x36c6d3){return _0x36c6d3?{'count':_0x1432f0,'rows':_0x36c6d3}:null;}})['then'](respondWithResult(_0xface0c,null))['catch'](handleError(_0xface0c,null));};exports[_0xc533('0x50')]=function(_0x3064a4,_0x2d8af4,_0x109c49){if(_0x3064a4[_0xc533('0x4b')]['id']){delete _0x3064a4[_0xc533('0x4b')]['id'];}return db[_0xc533('0x40')][_0xc533('0x4e')]({'where':{'id':_0x3064a4[_0xc533('0x47')]['id']}})[_0xc533('0x24')](handleEntityNotFound(_0x2d8af4,null))[_0xc533('0x24')](function(_0x164145){if(_0x164145){_0x3064a4[_0xc533('0x4b')]['AccountId']=_0x164145['id'];_0x3064a4[_0xc533('0x4b')][_0xc533('0x51')]=integrations[_0xc533('0x52')](_0x3064a4['body'][_0xc533('0x53')],_0x3064a4['body'][_0xc533('0x2c')]);_0x3064a4['body']['Descriptions']=integrations[_0xc533('0x54')](_0x3064a4[_0xc533('0x4b')][_0xc533('0x53')],_0x3064a4[_0xc533('0x4b')][_0xc533('0x2c')]);return db[_0xc533('0x4f')][_0xc533('0x4a')](_0x3064a4[_0xc533('0x4b')],{'include':[{'model':db['ZohoField'],'as':_0xc533('0x51')},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})[_0xc533('0x24')](respondWithResult(_0x2d8af4,null))['catch'](handleError(_0x2d8af4,null));};function getAccessToken(_0x2dc93a){return new Promise(function(_0x4968c0,_0x41ab0a){var _0x40949f;switch(_0x2dc93a[_0xc533('0x55')]){case'US':_0x40949f=_0xc533('0x56');break;case'AU':_0x40949f=_0xc533('0x57');break;case'EU':_0x40949f=_0xc533('0x58');break;case'IN':_0x40949f=_0xc533('0x59');break;case'CN':_0x40949f=_0xc533('0x5a');break;default:_0x40949f=_0xc533('0x58');break;}var _0x8ca2b4={'method':_0xc533('0x5b'),'uri':_0x40949f+'/oauth/v2/token','qs':{'refresh_token':_0x2dc93a[_0xc533('0x5c')],'client_id':_0x2dc93a[_0xc533('0x5d')],'client_secret':_0x2dc93a['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x8ca2b4)[_0xc533('0x24')](function(_0x564067){if(_0x564067['access_token']){_0x4968c0(_0x564067[_0xc533('0x5e')]);}else{_0x41ab0a(_0xc533('0x5f'));}})[_0xc533('0x45')](function(_0x507065){_0x41ab0a(_0x507065);});});}exports[_0xc533('0x60')]=function(_0x47cedb,_0x299ac6,_0xb453f8){var _0x41c5ca,_0xb2b499,_0x45f15b,_0x9f6ad3,_0x16dff8;return db[_0xc533('0x40')][_0xc533('0x4e')]({'where':{'id':_0x47cedb['params']['id']},'attributes':['id',_0xc533('0x61'),_0xc533('0x55'),_0xc533('0x5d'),_0xc533('0x62'),_0xc533('0x63'),_0xc533('0x64'),_0xc533('0x5c')]})[_0xc533('0x24')](handleEntityNotFound(_0x299ac6,null))[_0xc533('0x24')](function(_0x13364f){_0x16dff8=_0x13364f;_0x41c5ca=_0x16dff8['host'];_0xb2b499=_0x41c5ca===_0xc533('0x65')?'eu':_0xc533('0x66');_0x45f15b=_0x16dff8[_0xc533('0x63')];var _0x1111ab=_0x45f15b['slice'](-0x1);if(_0x1111ab==='/'||_0x1111ab==='\x5c'||_0x1111ab===':'){_0x45f15b=_0x45f15b[_0xc533('0x67')](0x0,_0x45f15b['lastIndexOf'](_0x1111ab));}if(!_0x16dff8[_0xc533('0x5c')]){throw new Error(_0xc533('0x68'));}return getAccessToken(_0x16dff8);})[_0xc533('0x24')](function(_0x2f3c1c){if(_0x2f3c1c){return rp({'method':_0xc533('0x69'),'uri':util[_0xc533('0x6a')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0xb2b499),'qs':{'module':_0xc533('0x6b')},'headers':{'Authorization':_0xc533('0x6c')+_0x2f3c1c},'json':!![]});}})[_0xc533('0x24')](function(_0x28190c){if(_0x28190c){if(_0x28190c[_0xc533('0x6d')]&&_0x28190c[_0xc533('0x6d')][_0xc533('0x25')]){throw new Error(_0x28190c[_0xc533('0x6d')][_0xc533('0x25')]['message']);}var _0x4b1e7d=[];var _0x41d42d=[];var _0x216801=[_0xc533('0x6e'),'Subject',_0xc533('0x6f'),_0xc533('0x70'),_0xc533('0x71'),_0xc533('0x72'),'Call_Start_Time','Call_Type'];_0x41d42d=_[_0xc533('0x73')](_0x28190c[_0xc533('0x33')],function(_0x383274){return _0x216801[_0xc533('0x74')](_0x383274[_0xc533('0x75')]);});for(var _0x58e501=0x0;_0x58e501<_0x41d42d[_0xc533('0x35')];_0x58e501++){if(_0x41d42d[_0x58e501][_0xc533('0x76')]===![]){_0x4b1e7d[_0xc533('0x77')]({'id':_0x41d42d[_0x58e501]['id'],'name':_0x41d42d[_0x58e501][_0xc533('0x78')],'custom':_0x41d42d[_0x58e501][_0xc533('0x79')],'options':_0x41d42d[_0x58e501]['data_type']==='picklist'&&_0x41d42d[_0x58e501][_0xc533('0x7a')][_0xc533('0x35')]>-0x1?_[_0xc533('0x2e')](_0x41d42d[_0x58e501]['pick_list_values'],function(_0xcd8de3){return{'name':_0xcd8de3,'value':_0xcd8de3};}):[]});}}return{'count':_0x4b1e7d[_0xc533('0x35')],'rows':_0x4b1e7d};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x299ac6,null))[_0xc533('0x45')](function(_0x37a0ea){var _0x10b579=_0x47cedb[_0xc533('0x2f')][_0xc533('0x7b')]?0x1f4:_0x37a0ea[_0xc533('0x7c')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xc533('0x60'),_0x10b579,JSON[_0xc533('0x7d')](_0x37a0ea));delete _0x37a0ea[_0xc533('0x27')];if(_0x10b579===0x191){_0x10b579=0x190;}_0x299ac6[_0xc533('0x1b')](_0x10b579)[_0xc533('0x28')](_0x47cedb[_0xc533('0x2f')][_0xc533('0x7b')]?{'message':_0xc533('0x7e'),'statusCode':_0x37a0ea[_0xc533('0x7c')]}:_0x37a0ea);});};
\ No newline at end of file
index 6f4d8b5..b8370a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ea=['code','slice','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','application/x-www-form-urlencoded','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','host','substring','https://accounts.zoho.com','https://accounts.zoho.in','authorization_code','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','changed','zone','serverUrl','clientId','clientSecret'];(function(_0x57c6d4,_0x3b0c72){var _0x3243de=function(_0x487dd6){while(--_0x487dd6){_0x57c6d4['push'](_0x57c6d4['shift']());}};_0x3243de(++_0x3b0c72);}(_0xd0ea,0x6d));var _0xad0e=function(_0x6f24f9,_0x14049c){_0x6f24f9=_0x6f24f9-0x0;var _0x3d36d7=_0xd0ea[_0x6f24f9];return _0x3d36d7;};'use strict';var _=require(_0xad0e('0x0'));var util=require(_0xad0e('0x1'));var logger=require('../../config/logger')(_0xad0e('0x2'));var moment=require(_0xad0e('0x3'));var BPromise=require(_0xad0e('0x4'));var rp=require(_0xad0e('0x5'));var fs=require('fs');var path=require(_0xad0e('0x6'));var rimraf=require(_0xad0e('0x7'));var config=require(_0xad0e('0x8'));var attributes=require(_0xad0e('0x9'));var integrations=require(_0xad0e('0xa'));module[_0xad0e('0xb')]=function(_0x91eb2c,_0x55f389){return _0x91eb2c['define']('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x52a8b0,_0x38f71e,_0x25db0e){if(_0x52a8b0[_0xad0e('0xc')](_0xad0e('0xd'))||_0x52a8b0[_0xad0e('0xc')](_0xad0e('0xe'))||_0x52a8b0[_0xad0e('0xc')](_0xad0e('0xf'))||_0x52a8b0[_0xad0e('0xc')](_0xad0e('0x10'))||_0x52a8b0['changed'](_0xad0e('0x11'))||_0x52a8b0['changed']('host')){var _0x504111,_0x266e16;_0x504111=_0x52a8b0[_0xad0e('0xe')];var _0xcc70e=_0x504111[_0xad0e('0x12')](-0x1);if(_0xcc70e==='/'||_0xcc70e==='\x5c'||_0xcc70e===':'){_0x504111=_0x504111['substring'](0x0,_0x504111[_0xad0e('0x13')](_0xcc70e));}switch(_0x52a8b0['zone']){case'US':_0x266e16='https://accounts.zoho.com';break;case'AU':_0x266e16=_0xad0e('0x14');break;case'IN':_0x266e16='https://accounts.zoho.in';break;case'CN':_0x266e16=_0xad0e('0x15');break;default:_0x266e16=_0xad0e('0x16');break;}var _0x4d3f65={'method':_0xad0e('0x17'),'uri':_0x266e16+_0xad0e('0x18'),'form':{'grant_type':'authorization_code','client_id':_0x52a8b0['clientId'],'client_secret':_0x52a8b0[_0xad0e('0x10')],'redirect_uri':_0x52a8b0['serverUrl'],'code':_0x52a8b0[_0xad0e('0x11')]},'headers':{'Content-Type':_0xad0e('0x19')}};return rp(_0x4d3f65)['then'](function(_0x3538fc){var _0x26ba0d=JSON[_0xad0e('0x1a')](_0x3538fc);if(_0x26ba0d[_0xad0e('0x1b')]){_0x52a8b0[_0xad0e('0x1c')]=_0x26ba0d[_0xad0e('0x1b')];logger[_0xad0e('0x1d')](util[_0xad0e('0x1e')](_0xad0e('0x1f'),_0x52a8b0[_0xad0e('0x20')],_0x52a8b0['id']));}else{logger['error'](util[_0xad0e('0x1e')](_0xad0e('0x21'),_0x52a8b0['name'],_0x52a8b0['id']),util[_0xad0e('0x22')](_0x26ba0d,{'showHidden':![],'depth':null}));}return _0x25db0e(null,_0x38f71e);})[_0xad0e('0x23')](function(_0x5c8724){logger[_0xad0e('0x24')](util[_0xad0e('0x1e')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x52a8b0[_0xad0e('0x20')],_0x52a8b0['id']),util[_0xad0e('0x22')](parsedResult,{'showHidden':![],'depth':null}));return _0x25db0e(_0x5c8724);});}else{return _0x25db0e(null,_0x38f71e);}},'beforeUpdate':function(_0x1f4fd9,_0x571aaa,_0x279ead){if(_0x1f4fd9[_0xad0e('0xc')]('zone')||_0x1f4fd9[_0xad0e('0xc')](_0xad0e('0xe'))||_0x1f4fd9[_0xad0e('0xc')](_0xad0e('0xf'))||_0x1f4fd9['changed'](_0xad0e('0x10'))||_0x1f4fd9[_0xad0e('0xc')]('code')||_0x1f4fd9[_0xad0e('0xc')](_0xad0e('0x25'))){var _0x2b2e6f,_0x2f4afa;_0x2b2e6f=_0x1f4fd9['serverUrl'];var _0x595234=_0x2b2e6f['slice'](-0x1);if(_0x595234==='/'||_0x595234==='\x5c'||_0x595234===':'){_0x2b2e6f=_0x2b2e6f[_0xad0e('0x26')](0x0,_0x2b2e6f[_0xad0e('0x13')](_0x595234));}switch(_0x1f4fd9[_0xad0e('0xd')]){case'US':_0x2f4afa=_0xad0e('0x27');break;case'AU':_0x2f4afa=_0xad0e('0x14');break;case'IN':_0x2f4afa=_0xad0e('0x28');break;case'CN':_0x2f4afa=_0xad0e('0x15');break;default:_0x2f4afa=_0xad0e('0x16');break;}var _0x36f484={'method':_0xad0e('0x17'),'uri':_0x2f4afa+_0xad0e('0x18'),'form':{'grant_type':_0xad0e('0x29'),'client_id':_0x1f4fd9[_0xad0e('0xf')],'client_secret':_0x1f4fd9[_0xad0e('0x10')],'redirect_uri':_0x1f4fd9[_0xad0e('0xe')],'code':_0x1f4fd9['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x36f484)['then'](function(_0x3516bf){var _0x4ca8dc=JSON[_0xad0e('0x1a')](_0x3516bf);if(_0x4ca8dc[_0xad0e('0x1b')]){_0x1f4fd9[_0xad0e('0x1c')]=_0x4ca8dc[_0xad0e('0x1b')];logger[_0xad0e('0x1d')](util[_0xad0e('0x1e')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1f4fd9[_0xad0e('0x20')],_0x1f4fd9['id']));}else{logger[_0xad0e('0x24')](util[_0xad0e('0x1e')](_0xad0e('0x21'),_0x1f4fd9[_0xad0e('0x20')],_0x1f4fd9['id']),util['inspect'](_0x4ca8dc,{'showHidden':![],'depth':null}));}return _0x279ead(null,_0x571aaa);})['catch'](function(_0x592072){logger[_0xad0e('0x24')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1f4fd9['name'],_0x1f4fd9['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x279ead(_0x592072);});}else{return _0x279ead(null,_0x571aaa);}}}});};
\ No newline at end of file
+var _0x2179=['then','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','error','clientId','slice','substring','catch','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientSecret','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','/oauth/v2/token','authorization_code','code'];(function(_0x5a5f17,_0x3b182c){var _0x4209be=function(_0x2e0fc3){while(--_0x2e0fc3){_0x5a5f17['push'](_0x5a5f17['shift']());}};_0x4209be(++_0x3b182c);}(_0x2179,0xeb));var _0x9217=function(_0x260b48,_0x117977){_0x260b48=_0x260b48-0x0;var _0x3f730b=_0x2179[_0x260b48];return _0x3f730b;};'use strict';var _=require(_0x9217('0x0'));var util=require(_0x9217('0x1'));var logger=require(_0x9217('0x2'))(_0x9217('0x3'));var moment=require('moment');var BPromise=require(_0x9217('0x4'));var rp=require(_0x9217('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9217('0x6'));var config=require(_0x9217('0x7'));var attributes=require(_0x9217('0x8'));var integrations=require(_0x9217('0x9'));module[_0x9217('0xa')]=function(_0x41f8dd,_0x5d3597){return _0x41f8dd[_0x9217('0xb')](_0x9217('0xc'),attributes,{'tableName':_0x9217('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x17f487,_0x261d88,_0x485210){if(_0x17f487['changed'](_0x9217('0xe'))||_0x17f487[_0x9217('0xf')](_0x9217('0x10'))||_0x17f487[_0x9217('0xf')]('clientId')||_0x17f487[_0x9217('0xf')](_0x9217('0x11'))||_0x17f487[_0x9217('0xf')]('code')||_0x17f487[_0x9217('0xf')](_0x9217('0x12'))){var _0x3754c3,_0xefba66;_0x3754c3=_0x17f487[_0x9217('0x10')];var _0x3761a7=_0x3754c3['slice'](-0x1);if(_0x3761a7==='/'||_0x3761a7==='\x5c'||_0x3761a7===':'){_0x3754c3=_0x3754c3['substring'](0x0,_0x3754c3[_0x9217('0x13')](_0x3761a7));}switch(_0x17f487[_0x9217('0xe')]){case'US':_0xefba66=_0x9217('0x14');break;case'AU':_0xefba66=_0x9217('0x15');break;case'IN':_0xefba66=_0x9217('0x16');break;case'CN':_0xefba66=_0x9217('0x17');break;default:_0xefba66=_0x9217('0x18');break;}var _0x48118b={'method':_0x9217('0x19'),'uri':_0xefba66+_0x9217('0x1a'),'form':{'grant_type':_0x9217('0x1b'),'client_id':_0x17f487['clientId'],'client_secret':_0x17f487[_0x9217('0x11')],'redirect_uri':_0x17f487[_0x9217('0x10')],'code':_0x17f487[_0x9217('0x1c')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x48118b)[_0x9217('0x1d')](function(_0x2fcb13){var _0x457802=JSON[_0x9217('0x1e')](_0x2fcb13);if(_0x457802[_0x9217('0x1f')]){_0x17f487[_0x9217('0x20')]=_0x457802[_0x9217('0x1f')];logger[_0x9217('0x21')](util['format'](_0x9217('0x22'),_0x17f487[_0x9217('0x23')],_0x17f487['id']));}else{logger['error'](util[_0x9217('0x24')](_0x9217('0x25'),_0x17f487['name'],_0x17f487['id']),util[_0x9217('0x26')](_0x457802,{'showHidden':![],'depth':null}));}return _0x485210(null,_0x261d88);})['catch'](function(_0x1b6b24){logger[_0x9217('0x27')](util[_0x9217('0x24')](_0x9217('0x25'),_0x17f487[_0x9217('0x23')],_0x17f487['id']),util[_0x9217('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x485210(_0x1b6b24);});}else{return _0x485210(null,_0x261d88);}},'beforeUpdate':function(_0x331a3b,_0x407e28,_0xe5c53d){if(_0x331a3b[_0x9217('0xf')](_0x9217('0xe'))||_0x331a3b['changed'](_0x9217('0x10'))||_0x331a3b[_0x9217('0xf')](_0x9217('0x28'))||_0x331a3b['changed'](_0x9217('0x11'))||_0x331a3b[_0x9217('0xf')](_0x9217('0x1c'))||_0x331a3b[_0x9217('0xf')]('host')){var _0x47842c,_0x4387fe;_0x47842c=_0x331a3b[_0x9217('0x10')];var _0x12f8fd=_0x47842c[_0x9217('0x29')](-0x1);if(_0x12f8fd==='/'||_0x12f8fd==='\x5c'||_0x12f8fd===':'){_0x47842c=_0x47842c[_0x9217('0x2a')](0x0,_0x47842c[_0x9217('0x13')](_0x12f8fd));}switch(_0x331a3b[_0x9217('0xe')]){case'US':_0x4387fe=_0x9217('0x14');break;case'AU':_0x4387fe=_0x9217('0x15');break;case'IN':_0x4387fe=_0x9217('0x16');break;case'CN':_0x4387fe=_0x9217('0x17');break;default:_0x4387fe=_0x9217('0x18');break;}var _0x2998a4={'method':_0x9217('0x19'),'uri':_0x4387fe+_0x9217('0x1a'),'form':{'grant_type':_0x9217('0x1b'),'client_id':_0x331a3b[_0x9217('0x28')],'client_secret':_0x331a3b[_0x9217('0x11')],'redirect_uri':_0x331a3b[_0x9217('0x10')],'code':_0x331a3b['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x2998a4)[_0x9217('0x1d')](function(_0x178c97){var _0x2c782d=JSON[_0x9217('0x1e')](_0x178c97);if(_0x2c782d[_0x9217('0x1f')]){_0x331a3b['refreshToken']=_0x2c782d[_0x9217('0x1f')];logger[_0x9217('0x21')](util['format'](_0x9217('0x22'),_0x331a3b[_0x9217('0x23')],_0x331a3b['id']));}else{logger[_0x9217('0x27')](util[_0x9217('0x24')](_0x9217('0x25'),_0x331a3b[_0x9217('0x23')],_0x331a3b['id']),util[_0x9217('0x26')](_0x2c782d,{'showHidden':![],'depth':null}));}return _0xe5c53d(null,_0x407e28);})[_0x9217('0x2b')](function(_0x37333e){logger[_0x9217('0x27')](util['format'](_0x9217('0x25'),_0x331a3b[_0x9217('0x23')],_0x331a3b['id']),util[_0x9217('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0xe5c53d(_0x37333e);});}else{return _0xe5c53d(null,_0x407e28);}}}});};
\ No newline at end of file
index 15371ef..b9905e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowZohoAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then'];(function(_0xb3c85f,_0x421ec0){var _0x5f1fde=function(_0xbe8343){while(--_0xbe8343){_0xb3c85f['push'](_0xb3c85f['shift']());}};_0x5f1fde(++_0x421ec0);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x197944,_0x33c6b7){_0x197944=_0x197944-0x0;var _0x3764c1=_0xfcbb[_0x197944];return _0x3764c1;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var moment=require(_0xbfcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfcb('0x3'));var db=require(_0xbfcb('0x4'))['db'];var utils=require(_0xbfcb('0x5'));var logger=require(_0xbfcb('0x6'))(_0xbfcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbfcb('0x8')][_0xbfcb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8d4e6a,_0x2df839,_0x288ee5){return new BPromise(function(_0x2f875c,_0x49717b){return client['request'](_0x8d4e6a,_0x288ee5)[_0xbfcb('0xa')](function(_0x331173){logger[_0xbfcb('0xb')]('ZohoAccount,\x20%s,\x20%s',_0x2df839,_0xbfcb('0xc'));logger[_0xbfcb('0xd')](_0xbfcb('0xe'),_0x2df839,_0xbfcb('0xc'),JSON[_0xbfcb('0xf')](_0x331173));if(_0x331173[_0xbfcb('0x10')]){if(_0x331173['error'][_0xbfcb('0x11')]===0x1f4){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')]['message']);return _0x49717b(_0x331173[_0xbfcb('0x10')]['message']);}logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);return _0x2f875c(_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);}else{logger[_0xbfcb('0xb')](_0xbfcb('0x12'),_0x2df839,_0xbfcb('0xc'));_0x2f875c(_0x331173[_0xbfcb('0x14')][_0xbfcb('0x13')]);}})[_0xbfcb('0x15')](function(_0x26f335){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x26f335);_0x49717b(_0x26f335);});});}exports[_0xbfcb('0x16')]=function(_0xba1d6){var _0x38689e=this;return new Promise(function(_0x3404aa,_0x46b8d2){return db[_0xbfcb('0x17')][_0xbfcb('0x18')]({'raw':_0xba1d6['options']?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1a')]===undefined?!![]:![]:!![],'where':_0xba1d6['options']?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1b')]||null:null,'attributes':_0xba1d6['options']?_0xba1d6['options'][_0xbfcb('0x1c')]||null:null,'limit':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1d')]||null:null,'include':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6['options'][_0xbfcb('0x1e')]?_[_0xbfcb('0x1f')](_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1e')],function(_0x1651e5){return{'model':db[_0x1651e5[_0xbfcb('0x20')]],'as':_0x1651e5['as'],'attributes':_0x1651e5[_0xbfcb('0x1c')],'include':_0x1651e5[_0xbfcb('0x1e')]?_[_0xbfcb('0x1f')](_0x1651e5[_0xbfcb('0x1e')],function(_0x1ca8c3){return{'model':db[_0x1ca8c3[_0xbfcb('0x20')]],'as':_0x1ca8c3['as'],'attributes':_0x1ca8c3[_0xbfcb('0x1c')],'include':_0x1ca8c3[_0xbfcb('0x1e')]?_[_0xbfcb('0x1f')](_0x1ca8c3[_0xbfcb('0x1e')],function(_0x5cd703){return{'model':db[_0x5cd703[_0xbfcb('0x20')]],'as':_0x5cd703['as'],'attributes':_0x5cd703[_0xbfcb('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x64a69){logger[_0xbfcb('0xb')](_0xbfcb('0x16'),_0xba1d6);logger[_0xbfcb('0xd')](_0xbfcb('0x16'),_0xba1d6,JSON[_0xbfcb('0xf')](_0x64a69));_0x3404aa(_0x64a69);})[_0xbfcb('0x15')](function(_0x1a5db2){logger[_0xbfcb('0x10')](_0xbfcb('0x16'),_0x1a5db2['message'],_0xba1d6);_0x46b8d2(_0x38689e[_0xbfcb('0x10')](0x1f4,_0x1a5db2[_0xbfcb('0x13')]));});});};exports[_0xbfcb('0x21')]=function(_0x43de3c){var _0x1f45fc=this;return new Promise(function(_0x14f6f5,_0x286fb7){return db[_0xbfcb('0x17')][_0xbfcb('0x22')]({'raw':_0x43de3c['options']?_0x43de3c[_0xbfcb('0x19')][_0xbfcb('0x1a')]===undefined?!![]:![]:!![],'where':_0x43de3c[_0xbfcb('0x19')]?_0x43de3c[_0xbfcb('0x19')]['where']||null:null,'attributes':_0x43de3c['options']?_0x43de3c[_0xbfcb('0x19')][_0xbfcb('0x1c')]||null:null,'include':_0x43de3c[_0xbfcb('0x19')]?_0x43de3c[_0xbfcb('0x19')][_0xbfcb('0x1e')]?_[_0xbfcb('0x1f')](_0x43de3c[_0xbfcb('0x19')]['include'],function(_0x504d81){return{'model':db[_0x504d81['model']],'as':_0x504d81['as'],'attributes':_0x504d81[_0xbfcb('0x1c')],'include':_0x504d81['include']?_[_0xbfcb('0x1f')](_0x504d81[_0xbfcb('0x1e')],function(_0x505b0d){return{'model':db[_0x505b0d['model']],'as':_0x505b0d['as'],'attributes':_0x505b0d[_0xbfcb('0x1c')],'include':_0x505b0d[_0xbfcb('0x1e')]?_[_0xbfcb('0x1f')](_0x505b0d[_0xbfcb('0x1e')],function(_0x530208){return{'model':db[_0x530208[_0xbfcb('0x20')]],'as':_0x530208['as'],'attributes':_0x530208[_0xbfcb('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47ac13){logger[_0xbfcb('0xb')]('ShowZohoAccount',_0x43de3c);logger['debug'](_0xbfcb('0x21'),_0x43de3c,JSON[_0xbfcb('0xf')](_0x47ac13));_0x14f6f5(_0x47ac13);})[_0xbfcb('0x15')](function(_0x42ad5d){logger['error'](_0xbfcb('0x21'),_0x42ad5d[_0xbfcb('0x13')],_0x43de3c);_0x286fb7(_0x1f45fc[_0xbfcb('0x10')](0x1f4,_0x42ad5d[_0xbfcb('0x13')]));});});};
\ No newline at end of file
+var _0xdec3=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','ZohoAccount','findAll','options','raw','where','attributes','map','include','model','GetZohoAccount','ShowZohoAccount','find','lodash','moment','bluebird'];(function(_0x59e821,_0x86c723){var _0x5333f6=function(_0x5dc2c9){while(--_0x5dc2c9){_0x59e821['push'](_0x59e821['shift']());}};_0x5333f6(++_0x86c723);}(_0xdec3,0x89));var _0x3dec=function(_0x4e7d17,_0x5d75de){_0x4e7d17=_0x4e7d17-0x0;var _0x7d8a4=_0xdec3[_0x4e7d17];return _0x7d8a4;};'use strict';var _=require(_0x3dec('0x0'));var util=require('util');var moment=require(_0x3dec('0x1'));var BPromise=require(_0x3dec('0x2'));var rs=require(_0x3dec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3dec('0x4'))['db'];var utils=require(_0x3dec('0x5'));var logger=require(_0x3dec('0x6'))(_0x3dec('0x7'));var config=require('../../config/environment');var jayson=require(_0x3dec('0x8'));var client=jayson[_0x3dec('0x9')][_0x3dec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xd3208e,_0x1826ab,_0x311a74){return new BPromise(function(_0x207dcf,_0x4b32d2){return client[_0x3dec('0xb')](_0xd3208e,_0x311a74)[_0x3dec('0xc')](function(_0x599552){logger[_0x3dec('0xd')]('ZohoAccount,\x20%s,\x20%s',_0x1826ab,'request\x20sent');logger[_0x3dec('0xe')](_0x3dec('0xf'),_0x1826ab,'request\x20sent',JSON[_0x3dec('0x10')](_0x599552));if(_0x599552[_0x3dec('0x11')]){if(_0x599552['error'][_0x3dec('0x12')]===0x1f4){logger[_0x3dec('0x11')](_0x3dec('0x13'),_0x1826ab,_0x599552[_0x3dec('0x11')][_0x3dec('0x14')]);return _0x4b32d2(_0x599552[_0x3dec('0x11')]['message']);}logger['error'](_0x3dec('0x13'),_0x1826ab,_0x599552['error'][_0x3dec('0x14')]);return _0x207dcf(_0x599552[_0x3dec('0x11')]['message']);}else{logger['info'](_0x3dec('0x13'),_0x1826ab,'request\x20sent');_0x207dcf(_0x599552[_0x3dec('0x15')]['message']);}})[_0x3dec('0x16')](function(_0x51cb2c){logger[_0x3dec('0x11')](_0x3dec('0x13'),_0x1826ab,_0x51cb2c);_0x4b32d2(_0x51cb2c);});});}exports['GetZohoAccount']=function(_0x31ff6d){var _0x249bc2=this;return new Promise(function(_0x253af9,_0x2f2868){return db[_0x3dec('0x17')][_0x3dec('0x18')]({'raw':_0x31ff6d[_0x3dec('0x19')]?_0x31ff6d[_0x3dec('0x19')][_0x3dec('0x1a')]===undefined?!![]:![]:!![],'where':_0x31ff6d[_0x3dec('0x19')]?_0x31ff6d[_0x3dec('0x19')][_0x3dec('0x1b')]||null:null,'attributes':_0x31ff6d[_0x3dec('0x19')]?_0x31ff6d[_0x3dec('0x19')][_0x3dec('0x1c')]||null:null,'limit':_0x31ff6d[_0x3dec('0x19')]?_0x31ff6d[_0x3dec('0x19')]['limit']||null:null,'include':_0x31ff6d['options']?_0x31ff6d['options']['include']?_[_0x3dec('0x1d')](_0x31ff6d[_0x3dec('0x19')][_0x3dec('0x1e')],function(_0x15267f){return{'model':db[_0x15267f[_0x3dec('0x1f')]],'as':_0x15267f['as'],'attributes':_0x15267f[_0x3dec('0x1c')],'include':_0x15267f[_0x3dec('0x1e')]?_[_0x3dec('0x1d')](_0x15267f[_0x3dec('0x1e')],function(_0x559b91){return{'model':db[_0x559b91[_0x3dec('0x1f')]],'as':_0x559b91['as'],'attributes':_0x559b91[_0x3dec('0x1c')],'include':_0x559b91[_0x3dec('0x1e')]?_['map'](_0x559b91[_0x3dec('0x1e')],function(_0x2febf7){return{'model':db[_0x2febf7['model']],'as':_0x2febf7['as'],'attributes':_0x2febf7[_0x3dec('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3dec('0xc')](function(_0x5a578f){logger[_0x3dec('0xd')](_0x3dec('0x20'),_0x31ff6d);logger[_0x3dec('0xe')](_0x3dec('0x20'),_0x31ff6d,JSON[_0x3dec('0x10')](_0x5a578f));_0x253af9(_0x5a578f);})['catch'](function(_0x2d7db9){logger['error']('GetZohoAccount',_0x2d7db9[_0x3dec('0x14')],_0x31ff6d);_0x2f2868(_0x249bc2['error'](0x1f4,_0x2d7db9['message']));});});};exports[_0x3dec('0x21')]=function(_0x3c8d47){var _0x20ad4e=this;return new Promise(function(_0x127b17,_0x53b279){return db[_0x3dec('0x17')][_0x3dec('0x22')]({'raw':_0x3c8d47[_0x3dec('0x19')]?_0x3c8d47[_0x3dec('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3c8d47[_0x3dec('0x19')]?_0x3c8d47['options']['where']||null:null,'attributes':_0x3c8d47[_0x3dec('0x19')]?_0x3c8d47[_0x3dec('0x19')][_0x3dec('0x1c')]||null:null,'include':_0x3c8d47[_0x3dec('0x19')]?_0x3c8d47[_0x3dec('0x19')][_0x3dec('0x1e')]?_['map'](_0x3c8d47['options'][_0x3dec('0x1e')],function(_0x561906){return{'model':db[_0x561906[_0x3dec('0x1f')]],'as':_0x561906['as'],'attributes':_0x561906[_0x3dec('0x1c')],'include':_0x561906[_0x3dec('0x1e')]?_[_0x3dec('0x1d')](_0x561906['include'],function(_0x118b8b){return{'model':db[_0x118b8b['model']],'as':_0x118b8b['as'],'attributes':_0x118b8b[_0x3dec('0x1c')],'include':_0x118b8b[_0x3dec('0x1e')]?_[_0x3dec('0x1d')](_0x118b8b[_0x3dec('0x1e')],function(_0x5a7a41){return{'model':db[_0x5a7a41['model']],'as':_0x5a7a41['as'],'attributes':_0x5a7a41[_0x3dec('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3dec('0xc')](function(_0x5e8a49){logger[_0x3dec('0xd')](_0x3dec('0x21'),_0x3c8d47);logger[_0x3dec('0xe')](_0x3dec('0x21'),_0x3c8d47,JSON[_0x3dec('0x10')](_0x5e8a49));_0x127b17(_0x5e8a49);})['catch'](function(_0x5903cc){logger[_0x3dec('0x11')](_0x3dec('0x21'),_0x5903cc[_0x3dec('0x14')],_0x3c8d47);_0x53b279(_0x20ad4e[_0x3dec('0x11')](0x1f4,_0x5903cc[_0x3dec('0x14')]));});});};
\ No newline at end of file
index e24d27d..eea6c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7404=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','/:id/fields','getFields','/:id/subjects','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x30f670,_0x161d04){var _0x14accd=function(_0x53b65e){while(--_0x53b65e){_0x30f670['push'](_0x30f670['shift']());}};_0x14accd(++_0x161d04);}(_0x7404,0x6c));var _0x4740=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x7404[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x4740('0x0'));var util=require(_0x4740('0x1'));var path=require(_0x4740('0x2'));var timeout=require(_0x4740('0x3'));var express=require(_0x4740('0x4'));var router=express[_0x4740('0x5')]();var fs_extra=require(_0x4740('0x6'));var auth=require(_0x4740('0x7'));var interaction=require(_0x4740('0x8'));var config=require(_0x4740('0x9'));var controller=require(_0x4740('0xa'));router[_0x4740('0xb')]('/',auth[_0x4740('0xc')](),controller['index']);router[_0x4740('0xb')](_0x4740('0xd'),auth[_0x4740('0xc')](),controller['show']);router['get'](_0x4740('0xe'),auth[_0x4740('0xc')](),controller[_0x4740('0xf')]);router[_0x4740('0xb')](_0x4740('0x10'),auth[_0x4740('0xc')](),controller['getSubjects']);router[_0x4740('0xb')]('/:id/descriptions',auth[_0x4740('0xc')](),controller['getDescriptions']);router[_0x4740('0x11')]('/',auth['isAuthenticated'](),controller[_0x4740('0x12')]);router['put'](_0x4740('0xd'),auth['isAuthenticated'](),controller[_0x4740('0x13')]);router[_0x4740('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x4740('0x15')]);module[_0x4740('0x16')]=router;
\ No newline at end of file
+var _0xdeed=['util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','delete','destroy','exports','multer'];(function(_0x528bae,_0x482a82){var _0x571eee=function(_0x2962a1){while(--_0x2962a1){_0x528bae['push'](_0x528bae['shift']());}};_0x571eee(++_0x482a82);}(_0xdeed,0xef));var _0xddee=function(_0x43b234,_0x587095){_0x43b234=_0x43b234-0x0;var _0x5b7f74=_0xdeed[_0x43b234];return _0x5b7f74;};'use strict';var multer=require(_0xddee('0x0'));var util=require(_0xddee('0x1'));var path=require(_0xddee('0x2'));var timeout=require(_0xddee('0x3'));var express=require(_0xddee('0x4'));var router=express['Router']();var fs_extra=require(_0xddee('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xddee('0x6'));var config=require(_0xddee('0x7'));var controller=require(_0xddee('0x8'));router[_0xddee('0x9')]('/',auth['isAuthenticated'](),controller[_0xddee('0xa')]);router['get'](_0xddee('0xb'),auth[_0xddee('0xc')](),controller[_0xddee('0xd')]);router[_0xddee('0x9')](_0xddee('0xe'),auth[_0xddee('0xc')](),controller['getFields']);router[_0xddee('0x9')](_0xddee('0xf'),auth[_0xddee('0xc')](),controller['getSubjects']);router['get'](_0xddee('0x10'),auth[_0xddee('0xc')](),controller[_0xddee('0x11')]);router[_0xddee('0x12')]('/',auth[_0xddee('0xc')](),controller[_0xddee('0x13')]);router[_0xddee('0x14')](_0xddee('0xb'),auth[_0xddee('0xc')](),controller['update']);router[_0xddee('0x15')](_0xddee('0xb'),auth[_0xddee('0xc')](),controller[_0xddee('0x16')]);module[_0xddee('0x17')]=router;
\ No newline at end of file
index b3d16ed..596ef43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab0a=['sequelize','exports','STRING','ENUM','lead','contact','nothing','contact_lead'];(function(_0x29b929,_0x2a4b10){var _0x3a8ce6=function(_0x1e2759){while(--_0x1e2759){_0x29b929['push'](_0x29b929['shift']());}};_0x3a8ce6(++_0x2a4b10);}(_0xab0a,0x1f0));var _0xaab0=function(_0x428c74,_0x229dee){_0x428c74=_0x428c74-0x0;var _0x3a73f9=_0xab0a[_0x428c74];return _0x3a73f9;};'use strict';var Sequelize=require(_0xaab0('0x0'));module[_0xaab0('0x1')]={'name':{'type':Sequelize[_0xaab0('0x2')]},'moduleCreate':{'type':Sequelize[_0xaab0('0x3')](_0xaab0('0x4'),_0xaab0('0x5'),_0xaab0('0x6')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xaab0('0x3')](_0xaab0('0x7'),_0xaab0('0x5'),_0xaab0('0x4')),'defaultValue':_0xaab0('0x7')},'description':{'type':Sequelize[_0xaab0('0x2')]}};
\ No newline at end of file
+var _0xe7b3=['contact','nothing','contact_lead','STRING','sequelize','ENUM','lead'];(function(_0x239a74,_0x1490e3){var _0x1b5415=function(_0x106842){while(--_0x106842){_0x239a74['push'](_0x239a74['shift']());}};_0x1b5415(++_0x1490e3);}(_0xe7b3,0x1b6));var _0x3e7b=function(_0x4838aa,_0x26aaa5){_0x4838aa=_0x4838aa-0x0;var _0x5a43dc=_0xe7b3[_0x4838aa];return _0x5a43dc;};'use strict';var Sequelize=require(_0x3e7b('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x3e7b('0x1')](_0x3e7b('0x2'),_0x3e7b('0x3'),_0x3e7b('0x4')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x3e7b('0x1')]('contact_lead','contact',_0x3e7b('0x2')),'defaultValue':_0x3e7b('0x5')},'description':{'type':Sequelize[_0x3e7b('0x6')]}};
\ No newline at end of file
index bb4edec..f1057b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de5=['apply','reject','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','ZohoConfiguration','includeAll','include','show','params','find','catch','create','body','destroy','findOne','ZohoField','length','getFields','getSubjects','pick','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set'];(function(_0xc1d0f0,_0xbea429){var _0x4bc573=function(_0x4b0ba4){while(--_0x4b0ba4){_0xc1d0f0['push'](_0xc1d0f0['shift']());}};_0x4bc573(++_0xbea429);}(_0x3de5,0x125));var _0x53de=function(_0x165a01,_0x2c0d26){_0x165a01=_0x165a01-0x0;var _0x75de69=_0x3de5[_0x165a01];return _0x75de69;};'use strict';var emlformat=require(_0x53de('0x0'));var rimraf=require(_0x53de('0x1'));var zipdir=require(_0x53de('0x2'));var jsonpatch=require(_0x53de('0x3'));var rp=require(_0x53de('0x4'));var moment=require('moment');var BPromise=require(_0x53de('0x5'));var Mustache=require('mustache');var util=require(_0x53de('0x6'));var path=require('path');var sox=require(_0x53de('0x7'));var csv=require(_0x53de('0x8'));var ejs=require(_0x53de('0x9'));var fs=require('fs');var fs_extra=require(_0x53de('0xa'));var _=require(_0x53de('0xb'));var squel=require(_0x53de('0xc'));var crypto=require(_0x53de('0xd'));var jsforce=require(_0x53de('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x53de('0x8'));var querystring=require(_0x53de('0xf'));var Papa=require(_0x53de('0x10'));var Redis=require(_0x53de('0x11'));var authService=require(_0x53de('0x12'));var qs=require(_0x53de('0x13'));var as=require(_0x53de('0x14'));var hardwareService=require(_0x53de('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x53de('0x16'));var config=require(_0x53de('0x17'));var licenseUtil=require(_0x53de('0x18'));var db=require(_0x53de('0x19'))['db'];function respondWithStatusCode(_0x568407,_0x43c372){_0x43c372=_0x43c372||0xcc;return function(_0x31c50e){if(_0x31c50e){return _0x568407[_0x53de('0x1a')](_0x43c372);}return _0x568407[_0x53de('0x1b')](_0x43c372)[_0x53de('0x1c')]();};}function respondWithResult(_0x500730,_0x2732e1){_0x2732e1=_0x2732e1||0xc8;return function(_0x5ace28){if(_0x5ace28){return _0x500730[_0x53de('0x1b')](_0x2732e1)[_0x53de('0x1d')](_0x5ace28);}};}function respondWithFilteredResult(_0x2becd8,_0x4a0446){return function(_0x4fd008){if(_0x4fd008){var _0x108697=typeof _0x4a0446[_0x53de('0x1e')]===_0x53de('0x1f')&&typeof _0x4a0446['limit']===_0x53de('0x1f');var _0x28a977=_0x4fd008[_0x53de('0x20')];var _0x513115=_0x108697?0x0:_0x4a0446[_0x53de('0x1e')];var _0x2f7fdf=_0x108697?_0x4fd008[_0x53de('0x20')]:_0x4a0446[_0x53de('0x1e')]+_0x4a0446[_0x53de('0x21')];var _0x5c7e9c;if(_0x2f7fdf>=_0x28a977){_0x2f7fdf=_0x28a977;_0x5c7e9c=0xc8;}else{_0x5c7e9c=0xce;}_0x2becd8['status'](_0x5c7e9c);return _0x2becd8[_0x53de('0x22')]('Content-Range',_0x513115+'-'+_0x2f7fdf+'/'+_0x28a977)[_0x53de('0x1d')](_0x4fd008);}return null;};}function patchUpdates(_0x5beb42){return function(_0x157088){try{jsonpatch[_0x53de('0x23')](_0x157088,_0x5beb42,!![]);}catch(_0x483e70){return BPromise[_0x53de('0x24')](_0x483e70);}return _0x157088[_0x53de('0x25')]();};}function saveUpdates(_0x5f2578,_0x24cc75){return function(_0x3be278){if(_0x3be278){return _0x3be278[_0x53de('0x26')](_0x5f2578)[_0x53de('0x27')](function(_0x33b1e0){return _0x33b1e0;});}return null;};}function removeEntity(_0x30afe7,_0x1ba57c){return function(_0x3179db){if(_0x3179db){return _0x3179db['destroy']()[_0x53de('0x27')](function(){_0x30afe7['status'](0xcc)[_0x53de('0x1c')]();});}};}function handleEntityNotFound(_0x53e002,_0x1c2173){return function(_0x293335){if(!_0x293335){_0x53e002[_0x53de('0x1a')](0x194);}return _0x293335;};}function handleError(_0x4f49f5,_0x2546cf){_0x2546cf=_0x2546cf||0x1f4;return function(_0x360927){logger['error'](_0x360927[_0x53de('0x28')]);if(_0x360927[_0x53de('0x29')]){delete _0x360927['name'];}_0x4f49f5[_0x53de('0x1b')](_0x2546cf)[_0x53de('0x2a')](_0x360927);};}exports[_0x53de('0x2b')]=function(_0x52e337,_0x59cad5){var _0x137dcd={},_0x8f39fb={},_0x11c374={'count':0x0,'rows':[]};var _0x47c326=_[_0x53de('0x2c')](db['ZohoConfiguration'][_0x53de('0x2d')],function(_0x89947e){return{'name':_0x89947e[_0x53de('0x2e')],'type':_0x89947e[_0x53de('0x2f')][_0x53de('0x30')]};});_0x8f39fb[_0x53de('0x31')]=_[_0x53de('0x2c')](_0x47c326,_0x53de('0x29'));_0x8f39fb[_0x53de('0x32')]=_[_0x53de('0x33')](_0x52e337[_0x53de('0x32')]);_0x8f39fb[_0x53de('0x34')]=_[_0x53de('0x35')](_0x8f39fb[_0x53de('0x31')],_0x8f39fb[_0x53de('0x32')]);_0x137dcd[_0x53de('0x36')]=_[_0x53de('0x35')](_0x8f39fb[_0x53de('0x31')],qs[_0x53de('0x37')](_0x52e337['query'][_0x53de('0x37')]));_0x137dcd[_0x53de('0x36')]=_0x137dcd[_0x53de('0x36')]['length']?_0x137dcd[_0x53de('0x36')]:_0x8f39fb['model'];if(!_0x52e337['query'][_0x53de('0x38')](_0x53de('0x39'))){_0x137dcd[_0x53de('0x21')]=qs[_0x53de('0x21')](_0x52e337['query'][_0x53de('0x21')]);_0x137dcd['offset']=qs[_0x53de('0x1e')](_0x52e337[_0x53de('0x32')]['offset']);}_0x137dcd[_0x53de('0x3a')]=qs['sort'](_0x52e337[_0x53de('0x32')][_0x53de('0x3b')]);_0x137dcd[_0x53de('0x3c')]=qs[_0x53de('0x34')](_['pick'](_0x52e337[_0x53de('0x32')],_0x8f39fb[_0x53de('0x34')]),_0x47c326);if(_0x52e337[_0x53de('0x32')]['filter']){_0x137dcd[_0x53de('0x3c')]=_['merge'](_0x137dcd[_0x53de('0x3c')],{'$or':_[_0x53de('0x2c')](_0x47c326,function(_0x431e89){if(_0x431e89[_0x53de('0x2f')]!==_0x53de('0x3d')){var _0xbc49a9={};_0xbc49a9[_0x431e89[_0x53de('0x29')]]={'$like':'%'+_0x52e337[_0x53de('0x32')][_0x53de('0x3e')]+'%'};return _0xbc49a9;}})});}_0x137dcd=_[_0x53de('0x3f')]({},_0x137dcd,_0x52e337[_0x53de('0x40')]);var _0x4d742b={'where':_0x137dcd['where']};return db[_0x53de('0x41')][_0x53de('0x20')](_0x4d742b)['then'](function(_0x88f7b8){_0x11c374[_0x53de('0x20')]=_0x88f7b8;if(_0x52e337['query'][_0x53de('0x42')]){_0x137dcd[_0x53de('0x43')]=[{'all':!![]}];}return db[_0x53de('0x41')]['findAll'](_0x137dcd);})[_0x53de('0x27')](function(_0x2c1e8c){_0x11c374['rows']=_0x2c1e8c;return _0x11c374;})[_0x53de('0x27')](respondWithFilteredResult(_0x59cad5,_0x137dcd))['catch'](handleError(_0x59cad5,null));};exports[_0x53de('0x44')]=function(_0xfc491c,_0x42174f){var _0x11268b={'raw':![],'where':{'id':_0xfc491c[_0x53de('0x45')]['id']}},_0x56fbee={};_0x56fbee[_0x53de('0x31')]=_[_0x53de('0x33')](db['ZohoConfiguration'][_0x53de('0x2d')]);_0x56fbee[_0x53de('0x32')]=_[_0x53de('0x33')](_0xfc491c[_0x53de('0x32')]);_0x56fbee[_0x53de('0x34')]=_[_0x53de('0x35')](_0x56fbee['model'],_0x56fbee[_0x53de('0x32')]);_0x11268b[_0x53de('0x36')]=_[_0x53de('0x35')](_0x56fbee[_0x53de('0x31')],qs[_0x53de('0x37')](_0xfc491c['query'][_0x53de('0x37')]));_0x11268b[_0x53de('0x36')]=_0x11268b[_0x53de('0x36')]['length']?_0x11268b[_0x53de('0x36')]:_0x56fbee[_0x53de('0x31')];if(_0xfc491c[_0x53de('0x32')][_0x53de('0x42')]){_0x11268b[_0x53de('0x43')]=[{'all':!![]}];}_0x11268b=_[_0x53de('0x3f')]({},_0x11268b,_0xfc491c[_0x53de('0x40')]);return db[_0x53de('0x41')][_0x53de('0x46')](_0x11268b)[_0x53de('0x27')](handleEntityNotFound(_0x42174f,null))[_0x53de('0x27')](respondWithResult(_0x42174f,null))[_0x53de('0x47')](handleError(_0x42174f,null));};exports['create']=function(_0x5693ca,_0x4d0ae3){return db[_0x53de('0x41')][_0x53de('0x48')](_0x5693ca[_0x53de('0x49')],{})[_0x53de('0x27')](respondWithResult(_0x4d0ae3,0xc9))[_0x53de('0x47')](handleError(_0x4d0ae3,null));};exports[_0x53de('0x26')]=function(_0x3f5862,_0x536024){if(_0x3f5862[_0x53de('0x49')]['id']){delete _0x3f5862[_0x53de('0x49')]['id'];}return db[_0x53de('0x41')][_0x53de('0x46')]({'where':{'id':_0x3f5862[_0x53de('0x45')]['id']}})[_0x53de('0x27')](handleEntityNotFound(_0x536024,null))[_0x53de('0x27')](saveUpdates(_0x3f5862[_0x53de('0x49')],null))[_0x53de('0x27')](respondWithResult(_0x536024,null))['catch'](handleError(_0x536024,null));};exports[_0x53de('0x4a')]=function(_0x440d33,_0x3afa39){return db[_0x53de('0x41')][_0x53de('0x46')]({'where':{'id':_0x440d33[_0x53de('0x45')]['id']}})['then'](handleEntityNotFound(_0x3afa39,null))[_0x53de('0x27')](removeEntity(_0x3afa39,null))[_0x53de('0x47')](handleError(_0x3afa39,null));};exports['getFields']=function(_0x4b8a25,_0xf4a673,_0x29b417){var _0x1edbc8={};var _0x43e6b9={};var _0x311a3f;var _0x35d933;return db[_0x53de('0x41')][_0x53de('0x4b')]({'where':{'id':_0x4b8a25[_0x53de('0x45')]['id']}})['then'](handleEntityNotFound(_0xf4a673,null))[_0x53de('0x27')](function(_0x342041){if(_0x342041){_0x311a3f=_0x342041;_0x43e6b9[_0x53de('0x31')]=_[_0x53de('0x33')](db[_0x53de('0x4c')][_0x53de('0x2d')]);_0x43e6b9[_0x53de('0x32')]=_[_0x53de('0x33')](_0x4b8a25['query']);_0x43e6b9['filters']=_[_0x53de('0x35')](_0x43e6b9['model'],_0x43e6b9[_0x53de('0x32')]);_0x1edbc8[_0x53de('0x36')]=_['intersection'](_0x43e6b9['model'],qs['fields'](_0x4b8a25[_0x53de('0x32')][_0x53de('0x37')]));_0x1edbc8[_0x53de('0x36')]=_0x1edbc8[_0x53de('0x36')][_0x53de('0x4d')]?_0x1edbc8[_0x53de('0x36')]:_0x43e6b9[_0x53de('0x31')];_0x1edbc8[_0x53de('0x3a')]=qs['sort'](_0x4b8a25['query'][_0x53de('0x3b')]);_0x1edbc8[_0x53de('0x3c')]=qs['filters'](_['pick'](_0x4b8a25['query'],_0x43e6b9[_0x53de('0x34')]));if(_0x4b8a25[_0x53de('0x32')][_0x53de('0x3e')]){_0x1edbc8[_0x53de('0x3c')]=_[_0x53de('0x3f')](_0x1edbc8[_0x53de('0x3c')],{'$or':_['map'](_0x1edbc8[_0x53de('0x36')],function(_0x545418){var _0x567605={};_0x567605[_0x545418]={'$like':'%'+_0x4b8a25[_0x53de('0x32')][_0x53de('0x3e')]+'%'};return _0x567605;})});}_0x1edbc8=_[_0x53de('0x3f')]({},_0x1edbc8,_0x4b8a25['options']);return _0x311a3f[_0x53de('0x4e')](_0x1edbc8);}})['then'](function(_0x4e0262){if(_0x4e0262){_0x35d933=_0x4e0262[_0x53de('0x4d')];if(!_0x4b8a25[_0x53de('0x32')][_0x53de('0x38')](_0x53de('0x39'))){_0x1edbc8[_0x53de('0x21')]=qs[_0x53de('0x21')](_0x4b8a25[_0x53de('0x32')]['limit']);_0x1edbc8[_0x53de('0x1e')]=qs[_0x53de('0x1e')](_0x4b8a25[_0x53de('0x32')][_0x53de('0x1e')]);}return _0x311a3f[_0x53de('0x4e')](_0x1edbc8);}})[_0x53de('0x27')](function(_0x34ba5a){if(_0x34ba5a){return _0x34ba5a?{'count':_0x35d933,'rows':_0x34ba5a}:null;}})[_0x53de('0x27')](respondWithResult(_0xf4a673,null))[_0x53de('0x47')](handleError(_0xf4a673,null));};exports[_0x53de('0x4f')]=function(_0x2b9661,_0xa53512,_0x515cc7){var _0x49ac39={};var _0x5196f3={};var _0x4dc5a1;var _0x817491;return db[_0x53de('0x41')][_0x53de('0x4b')]({'where':{'id':_0x2b9661[_0x53de('0x45')]['id']}})[_0x53de('0x27')](handleEntityNotFound(_0xa53512,null))['then'](function(_0x4bfe09){if(_0x4bfe09){_0x4dc5a1=_0x4bfe09;_0x5196f3['model']=_[_0x53de('0x33')](db[_0x53de('0x4c')][_0x53de('0x2d')]);_0x5196f3[_0x53de('0x32')]=_[_0x53de('0x33')](_0x2b9661[_0x53de('0x32')]);_0x5196f3[_0x53de('0x34')]=_['intersection'](_0x5196f3[_0x53de('0x31')],_0x5196f3[_0x53de('0x32')]);_0x49ac39[_0x53de('0x36')]=_[_0x53de('0x35')](_0x5196f3['model'],qs[_0x53de('0x37')](_0x2b9661[_0x53de('0x32')]['fields']));_0x49ac39[_0x53de('0x36')]=_0x49ac39[_0x53de('0x36')][_0x53de('0x4d')]?_0x49ac39[_0x53de('0x36')]:_0x5196f3[_0x53de('0x31')];_0x49ac39[_0x53de('0x3a')]=qs[_0x53de('0x3b')](_0x2b9661['query'][_0x53de('0x3b')]);_0x49ac39[_0x53de('0x3c')]=qs[_0x53de('0x34')](_[_0x53de('0x50')](_0x2b9661[_0x53de('0x32')],_0x5196f3[_0x53de('0x34')]));if(_0x2b9661['query'][_0x53de('0x3e')]){_0x49ac39[_0x53de('0x3c')]=_[_0x53de('0x3f')](_0x49ac39[_0x53de('0x3c')],{'$or':_[_0x53de('0x2c')](_0x49ac39[_0x53de('0x36')],function(_0x30f3b8){var _0x24a0dd={};_0x24a0dd[_0x30f3b8]={'$like':'%'+_0x2b9661[_0x53de('0x32')][_0x53de('0x3e')]+'%'};return _0x24a0dd;})});}_0x49ac39=_[_0x53de('0x3f')]({},_0x49ac39,_0x2b9661[_0x53de('0x40')]);return _0x4dc5a1['getSubjects'](_0x49ac39);}})[_0x53de('0x27')](function(_0x206f30){if(_0x206f30){_0x817491=_0x206f30[_0x53de('0x4d')];if(!_0x2b9661[_0x53de('0x32')][_0x53de('0x38')](_0x53de('0x39'))){_0x49ac39[_0x53de('0x21')]=qs[_0x53de('0x21')](_0x2b9661[_0x53de('0x32')]['limit']);_0x49ac39[_0x53de('0x1e')]=qs[_0x53de('0x1e')](_0x2b9661[_0x53de('0x32')][_0x53de('0x1e')]);}return _0x4dc5a1[_0x53de('0x4f')](_0x49ac39);}})[_0x53de('0x27')](function(_0x344b30){if(_0x344b30){return _0x344b30?{'count':_0x817491,'rows':_0x344b30}:null;}})[_0x53de('0x27')](respondWithResult(_0xa53512,null))['catch'](handleError(_0xa53512,null));};exports['getDescriptions']=function(_0x53709b,_0x419574,_0x2739f5){var _0x2cd1ce={};var _0xf5f315={};var _0x5cfde2;var _0xbc20b5;return db[_0x53de('0x41')][_0x53de('0x4b')]({'where':{'id':_0x53709b['params']['id']}})[_0x53de('0x27')](handleEntityNotFound(_0x419574,null))[_0x53de('0x27')](function(_0x20d615){if(_0x20d615){_0x5cfde2=_0x20d615;_0xf5f315[_0x53de('0x31')]=_[_0x53de('0x33')](db[_0x53de('0x4c')]['rawAttributes']);_0xf5f315[_0x53de('0x32')]=_[_0x53de('0x33')](_0x53709b[_0x53de('0x32')]);_0xf5f315[_0x53de('0x34')]=_[_0x53de('0x35')](_0xf5f315[_0x53de('0x31')],_0xf5f315[_0x53de('0x32')]);_0x2cd1ce[_0x53de('0x36')]=_[_0x53de('0x35')](_0xf5f315[_0x53de('0x31')],qs[_0x53de('0x37')](_0x53709b[_0x53de('0x32')]['fields']));_0x2cd1ce[_0x53de('0x36')]=_0x2cd1ce['attributes'][_0x53de('0x4d')]?_0x2cd1ce[_0x53de('0x36')]:_0xf5f315[_0x53de('0x31')];_0x2cd1ce[_0x53de('0x3a')]=qs[_0x53de('0x3b')](_0x53709b[_0x53de('0x32')][_0x53de('0x3b')]);_0x2cd1ce[_0x53de('0x3c')]=qs[_0x53de('0x34')](_[_0x53de('0x50')](_0x53709b[_0x53de('0x32')],_0xf5f315['filters']));if(_0x53709b[_0x53de('0x32')]['filter']){_0x2cd1ce[_0x53de('0x3c')]=_['merge'](_0x2cd1ce[_0x53de('0x3c')],{'$or':_[_0x53de('0x2c')](_0x2cd1ce['attributes'],function(_0xebe2c2){var _0x350c56={};_0x350c56[_0xebe2c2]={'$like':'%'+_0x53709b['query'][_0x53de('0x3e')]+'%'};return _0x350c56;})});}_0x2cd1ce=_[_0x53de('0x3f')]({},_0x2cd1ce,_0x53709b[_0x53de('0x40')]);return _0x5cfde2['getDescriptions'](_0x2cd1ce);}})[_0x53de('0x27')](function(_0x511478){if(_0x511478){_0xbc20b5=_0x511478[_0x53de('0x4d')];if(!_0x53709b[_0x53de('0x32')][_0x53de('0x38')](_0x53de('0x39'))){_0x2cd1ce[_0x53de('0x21')]=qs[_0x53de('0x21')](_0x53709b[_0x53de('0x32')][_0x53de('0x21')]);_0x2cd1ce[_0x53de('0x1e')]=qs['offset'](_0x53709b[_0x53de('0x32')][_0x53de('0x1e')]);}return _0x5cfde2[_0x53de('0x51')](_0x2cd1ce);}})[_0x53de('0x27')](function(_0x512b6a){if(_0x512b6a){return _0x512b6a?{'count':_0xbc20b5,'rows':_0x512b6a}:null;}})['then'](respondWithResult(_0x419574,null))[_0x53de('0x47')](handleError(_0x419574,null));};
\ No newline at end of file
+var _0x2414=['lodash','squel','crypto','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','undefined','limit','count','offset','set','apply','reject','save','then','destroy','end','error','stack','name','send','index','ZohoConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getFields','findOne','ZohoField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','fs-extra'];(function(_0x1b2a88,_0x3f2290){var _0x12f3fe=function(_0x4d185d){while(--_0x4d185d){_0x1b2a88['push'](_0x1b2a88['shift']());}};_0x12f3fe(++_0x3f2290);}(_0x2414,0xe3));var _0x4241=function(_0x26d0ac,_0x4bd2f2){_0x26d0ac=_0x26d0ac-0x0;var _0x710b87=_0x2414[_0x26d0ac];return _0x710b87;};'use strict';var emlformat=require(_0x4241('0x0'));var rimraf=require(_0x4241('0x1'));var zipdir=require(_0x4241('0x2'));var jsonpatch=require(_0x4241('0x3'));var rp=require(_0x4241('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4241('0x5'));var util=require(_0x4241('0x6'));var path=require(_0x4241('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4241('0x8'));var fs=require('fs');var fs_extra=require(_0x4241('0x9'));var _=require(_0x4241('0xa'));var squel=require(_0x4241('0xb'));var crypto=require(_0x4241('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4241('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4241('0xe'));var qs=require(_0x4241('0xf'));var as=require(_0x4241('0x10'));var hardwareService=require(_0x4241('0x11'));var logger=require(_0x4241('0x12'))(_0x4241('0x13'));var utils=require(_0x4241('0x14'));var config=require(_0x4241('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2e5c64,_0x4f5930){_0x4f5930=_0x4f5930||0xcc;return function(_0x4c8a0e){if(_0x4c8a0e){return _0x2e5c64[_0x4241('0x16')](_0x4f5930);}return _0x2e5c64[_0x4241('0x17')](_0x4f5930)['end']();};}function respondWithResult(_0x2f3622,_0x1b686f){_0x1b686f=_0x1b686f||0xc8;return function(_0x5b78b2){if(_0x5b78b2){return _0x2f3622[_0x4241('0x17')](_0x1b686f)['json'](_0x5b78b2);}};}function respondWithFilteredResult(_0x535f0e,_0x5b77ec){return function(_0x52312d){if(_0x52312d){var _0x25b206=typeof _0x5b77ec['offset']===_0x4241('0x18')&&typeof _0x5b77ec[_0x4241('0x19')]==='undefined';var _0x18083f=_0x52312d['count'];var _0xb2442f=_0x25b206?0x0:_0x5b77ec['offset'];var _0x15d8b5=_0x25b206?_0x52312d[_0x4241('0x1a')]:_0x5b77ec[_0x4241('0x1b')]+_0x5b77ec[_0x4241('0x19')];var _0x3c6836;if(_0x15d8b5>=_0x18083f){_0x15d8b5=_0x18083f;_0x3c6836=0xc8;}else{_0x3c6836=0xce;}_0x535f0e[_0x4241('0x17')](_0x3c6836);return _0x535f0e[_0x4241('0x1c')]('Content-Range',_0xb2442f+'-'+_0x15d8b5+'/'+_0x18083f)['json'](_0x52312d);}return null;};}function patchUpdates(_0x40c2cd){return function(_0x22ec1a){try{jsonpatch[_0x4241('0x1d')](_0x22ec1a,_0x40c2cd,!![]);}catch(_0x4f2b3c){return BPromise[_0x4241('0x1e')](_0x4f2b3c);}return _0x22ec1a[_0x4241('0x1f')]();};}function saveUpdates(_0x33446d,_0x430c6e){return function(_0x29463c){if(_0x29463c){return _0x29463c['update'](_0x33446d)[_0x4241('0x20')](function(_0x2af9fb){return _0x2af9fb;});}return null;};}function removeEntity(_0x47a532,_0x14384f){return function(_0x3dc9e8){if(_0x3dc9e8){return _0x3dc9e8[_0x4241('0x21')]()[_0x4241('0x20')](function(){_0x47a532[_0x4241('0x17')](0xcc)[_0x4241('0x22')]();});}};}function handleEntityNotFound(_0xd8bd66,_0x20b593){return function(_0x2f881b){if(!_0x2f881b){_0xd8bd66['sendStatus'](0x194);}return _0x2f881b;};}function handleError(_0x22aec4,_0x2c8304){_0x2c8304=_0x2c8304||0x1f4;return function(_0x3d6d62){logger[_0x4241('0x23')](_0x3d6d62[_0x4241('0x24')]);if(_0x3d6d62[_0x4241('0x25')]){delete _0x3d6d62[_0x4241('0x25')];}_0x22aec4[_0x4241('0x17')](_0x2c8304)[_0x4241('0x26')](_0x3d6d62);};}exports[_0x4241('0x27')]=function(_0x427278,_0x5d067a){var _0x21907d={},_0x4b62da={},_0x249b91={'count':0x0,'rows':[]};var _0x3d0f99=_['map'](db[_0x4241('0x28')][_0x4241('0x29')],function(_0x579372){return{'name':_0x579372[_0x4241('0x2a')],'type':_0x579372[_0x4241('0x2b')][_0x4241('0x2c')]};});_0x4b62da[_0x4241('0x2d')]=_[_0x4241('0x2e')](_0x3d0f99,_0x4241('0x25'));_0x4b62da[_0x4241('0x2f')]=_[_0x4241('0x30')](_0x427278[_0x4241('0x2f')]);_0x4b62da['filters']=_[_0x4241('0x31')](_0x4b62da[_0x4241('0x2d')],_0x4b62da[_0x4241('0x2f')]);_0x21907d[_0x4241('0x32')]=_[_0x4241('0x31')](_0x4b62da[_0x4241('0x2d')],qs[_0x4241('0x33')](_0x427278[_0x4241('0x2f')][_0x4241('0x33')]));_0x21907d[_0x4241('0x32')]=_0x21907d[_0x4241('0x32')][_0x4241('0x34')]?_0x21907d['attributes']:_0x4b62da['model'];if(!_0x427278[_0x4241('0x2f')][_0x4241('0x35')](_0x4241('0x36'))){_0x21907d[_0x4241('0x19')]=qs[_0x4241('0x19')](_0x427278[_0x4241('0x2f')][_0x4241('0x19')]);_0x21907d[_0x4241('0x1b')]=qs[_0x4241('0x1b')](_0x427278[_0x4241('0x2f')][_0x4241('0x1b')]);}_0x21907d[_0x4241('0x37')]=qs[_0x4241('0x38')](_0x427278[_0x4241('0x2f')][_0x4241('0x38')]);_0x21907d[_0x4241('0x39')]=qs[_0x4241('0x3a')](_[_0x4241('0x3b')](_0x427278['query'],_0x4b62da[_0x4241('0x3a')]),_0x3d0f99);if(_0x427278[_0x4241('0x2f')]['filter']){_0x21907d[_0x4241('0x39')]=_[_0x4241('0x3c')](_0x21907d[_0x4241('0x39')],{'$or':_[_0x4241('0x2e')](_0x3d0f99,function(_0x44d1d5){if(_0x44d1d5[_0x4241('0x2b')]!==_0x4241('0x3d')){var _0x370cda={};_0x370cda[_0x44d1d5[_0x4241('0x25')]]={'$like':'%'+_0x427278[_0x4241('0x2f')][_0x4241('0x3e')]+'%'};return _0x370cda;}})});}_0x21907d=_[_0x4241('0x3c')]({},_0x21907d,_0x427278[_0x4241('0x3f')]);var _0xe041e2={'where':_0x21907d[_0x4241('0x39')]};return db['ZohoConfiguration'][_0x4241('0x1a')](_0xe041e2)[_0x4241('0x20')](function(_0x3892bc){_0x249b91[_0x4241('0x1a')]=_0x3892bc;if(_0x427278[_0x4241('0x2f')][_0x4241('0x40')]){_0x21907d[_0x4241('0x41')]=[{'all':!![]}];}return db[_0x4241('0x28')][_0x4241('0x42')](_0x21907d);})[_0x4241('0x20')](function(_0x219a6a){_0x249b91[_0x4241('0x43')]=_0x219a6a;return _0x249b91;})['then'](respondWithFilteredResult(_0x5d067a,_0x21907d))[_0x4241('0x44')](handleError(_0x5d067a,null));};exports[_0x4241('0x45')]=function(_0x441cb4,_0x55c612){var _0xde73a5={'raw':![],'where':{'id':_0x441cb4[_0x4241('0x46')]['id']}},_0x93efa6={};_0x93efa6['model']=_[_0x4241('0x30')](db[_0x4241('0x28')]['rawAttributes']);_0x93efa6[_0x4241('0x2f')]=_[_0x4241('0x30')](_0x441cb4[_0x4241('0x2f')]);_0x93efa6[_0x4241('0x3a')]=_[_0x4241('0x31')](_0x93efa6[_0x4241('0x2d')],_0x93efa6[_0x4241('0x2f')]);_0xde73a5['attributes']=_['intersection'](_0x93efa6[_0x4241('0x2d')],qs[_0x4241('0x33')](_0x441cb4[_0x4241('0x2f')][_0x4241('0x33')]));_0xde73a5[_0x4241('0x32')]=_0xde73a5['attributes'][_0x4241('0x34')]?_0xde73a5['attributes']:_0x93efa6[_0x4241('0x2d')];if(_0x441cb4[_0x4241('0x2f')][_0x4241('0x40')]){_0xde73a5['include']=[{'all':!![]}];}_0xde73a5=_[_0x4241('0x3c')]({},_0xde73a5,_0x441cb4[_0x4241('0x3f')]);return db['ZohoConfiguration'][_0x4241('0x47')](_0xde73a5)[_0x4241('0x20')](handleEntityNotFound(_0x55c612,null))[_0x4241('0x20')](respondWithResult(_0x55c612,null))[_0x4241('0x44')](handleError(_0x55c612,null));};exports[_0x4241('0x48')]=function(_0x116753,_0x418d88){return db[_0x4241('0x28')][_0x4241('0x48')](_0x116753[_0x4241('0x49')],{})[_0x4241('0x20')](respondWithResult(_0x418d88,0xc9))[_0x4241('0x44')](handleError(_0x418d88,null));};exports['update']=function(_0x58536e,_0x499fb7){if(_0x58536e[_0x4241('0x49')]['id']){delete _0x58536e[_0x4241('0x49')]['id'];}return db[_0x4241('0x28')][_0x4241('0x47')]({'where':{'id':_0x58536e['params']['id']}})[_0x4241('0x20')](handleEntityNotFound(_0x499fb7,null))[_0x4241('0x20')](saveUpdates(_0x58536e[_0x4241('0x49')],null))['then'](respondWithResult(_0x499fb7,null))[_0x4241('0x44')](handleError(_0x499fb7,null));};exports[_0x4241('0x21')]=function(_0x3e1716,_0x307715){return db['ZohoConfiguration'][_0x4241('0x47')]({'where':{'id':_0x3e1716['params']['id']}})['then'](handleEntityNotFound(_0x307715,null))[_0x4241('0x20')](removeEntity(_0x307715,null))[_0x4241('0x44')](handleError(_0x307715,null));};exports[_0x4241('0x4a')]=function(_0x504d91,_0xe04f0a,_0x9405c){var _0x3d41e8={};var _0x126a93={};var _0x5933c9;var _0x5a028d;return db[_0x4241('0x28')][_0x4241('0x4b')]({'where':{'id':_0x504d91[_0x4241('0x46')]['id']}})[_0x4241('0x20')](handleEntityNotFound(_0xe04f0a,null))[_0x4241('0x20')](function(_0x2fbbcd){if(_0x2fbbcd){_0x5933c9=_0x2fbbcd;_0x126a93[_0x4241('0x2d')]=_[_0x4241('0x30')](db[_0x4241('0x4c')][_0x4241('0x29')]);_0x126a93[_0x4241('0x2f')]=_[_0x4241('0x30')](_0x504d91[_0x4241('0x2f')]);_0x126a93[_0x4241('0x3a')]=_[_0x4241('0x31')](_0x126a93[_0x4241('0x2d')],_0x126a93[_0x4241('0x2f')]);_0x3d41e8['attributes']=_[_0x4241('0x31')](_0x126a93['model'],qs[_0x4241('0x33')](_0x504d91[_0x4241('0x2f')]['fields']));_0x3d41e8[_0x4241('0x32')]=_0x3d41e8[_0x4241('0x32')][_0x4241('0x34')]?_0x3d41e8['attributes']:_0x126a93[_0x4241('0x2d')];_0x3d41e8[_0x4241('0x37')]=qs[_0x4241('0x38')](_0x504d91['query'][_0x4241('0x38')]);_0x3d41e8[_0x4241('0x39')]=qs[_0x4241('0x3a')](_['pick'](_0x504d91[_0x4241('0x2f')],_0x126a93[_0x4241('0x3a')]));if(_0x504d91[_0x4241('0x2f')]['filter']){_0x3d41e8[_0x4241('0x39')]=_['merge'](_0x3d41e8['where'],{'$or':_[_0x4241('0x2e')](_0x3d41e8[_0x4241('0x32')],function(_0x25d473){var _0xfd5d14={};_0xfd5d14[_0x25d473]={'$like':'%'+_0x504d91[_0x4241('0x2f')][_0x4241('0x3e')]+'%'};return _0xfd5d14;})});}_0x3d41e8=_['merge']({},_0x3d41e8,_0x504d91[_0x4241('0x3f')]);return _0x5933c9[_0x4241('0x4a')](_0x3d41e8);}})[_0x4241('0x20')](function(_0x4e8332){if(_0x4e8332){_0x5a028d=_0x4e8332[_0x4241('0x34')];if(!_0x504d91['query'][_0x4241('0x35')](_0x4241('0x36'))){_0x3d41e8[_0x4241('0x19')]=qs['limit'](_0x504d91[_0x4241('0x2f')][_0x4241('0x19')]);_0x3d41e8[_0x4241('0x1b')]=qs[_0x4241('0x1b')](_0x504d91['query']['offset']);}return _0x5933c9[_0x4241('0x4a')](_0x3d41e8);}})['then'](function(_0x3261b6){if(_0x3261b6){return _0x3261b6?{'count':_0x5a028d,'rows':_0x3261b6}:null;}})[_0x4241('0x20')](respondWithResult(_0xe04f0a,null))['catch'](handleError(_0xe04f0a,null));};exports[_0x4241('0x4d')]=function(_0x1cb060,_0x45edbb,_0x1e9f44){var _0x58f07d={};var _0x6d1ff7={};var _0x40bf61;var _0x46e313;return db[_0x4241('0x28')][_0x4241('0x4b')]({'where':{'id':_0x1cb060[_0x4241('0x46')]['id']}})[_0x4241('0x20')](handleEntityNotFound(_0x45edbb,null))[_0x4241('0x20')](function(_0x56f0be){if(_0x56f0be){_0x40bf61=_0x56f0be;_0x6d1ff7[_0x4241('0x2d')]=_['keys'](db[_0x4241('0x4c')][_0x4241('0x29')]);_0x6d1ff7[_0x4241('0x2f')]=_[_0x4241('0x30')](_0x1cb060['query']);_0x6d1ff7['filters']=_[_0x4241('0x31')](_0x6d1ff7[_0x4241('0x2d')],_0x6d1ff7[_0x4241('0x2f')]);_0x58f07d['attributes']=_[_0x4241('0x31')](_0x6d1ff7[_0x4241('0x2d')],qs['fields'](_0x1cb060[_0x4241('0x2f')][_0x4241('0x33')]));_0x58f07d['attributes']=_0x58f07d[_0x4241('0x32')][_0x4241('0x34')]?_0x58f07d[_0x4241('0x32')]:_0x6d1ff7['model'];_0x58f07d[_0x4241('0x37')]=qs[_0x4241('0x38')](_0x1cb060[_0x4241('0x2f')][_0x4241('0x38')]);_0x58f07d[_0x4241('0x39')]=qs[_0x4241('0x3a')](_['pick'](_0x1cb060[_0x4241('0x2f')],_0x6d1ff7[_0x4241('0x3a')]));if(_0x1cb060[_0x4241('0x2f')][_0x4241('0x3e')]){_0x58f07d[_0x4241('0x39')]=_['merge'](_0x58f07d[_0x4241('0x39')],{'$or':_['map'](_0x58f07d[_0x4241('0x32')],function(_0x415b2c){var _0x5b9094={};_0x5b9094[_0x415b2c]={'$like':'%'+_0x1cb060[_0x4241('0x2f')]['filter']+'%'};return _0x5b9094;})});}_0x58f07d=_[_0x4241('0x3c')]({},_0x58f07d,_0x1cb060[_0x4241('0x3f')]);return _0x40bf61[_0x4241('0x4d')](_0x58f07d);}})['then'](function(_0xed00fa){if(_0xed00fa){_0x46e313=_0xed00fa['length'];if(!_0x1cb060[_0x4241('0x2f')][_0x4241('0x35')](_0x4241('0x36'))){_0x58f07d[_0x4241('0x19')]=qs[_0x4241('0x19')](_0x1cb060['query']['limit']);_0x58f07d[_0x4241('0x1b')]=qs[_0x4241('0x1b')](_0x1cb060[_0x4241('0x2f')][_0x4241('0x1b')]);}return _0x40bf61[_0x4241('0x4d')](_0x58f07d);}})[_0x4241('0x20')](function(_0x9c700f){if(_0x9c700f){return _0x9c700f?{'count':_0x46e313,'rows':_0x9c700f}:null;}})['then'](respondWithResult(_0x45edbb,null))[_0x4241('0x44')](handleError(_0x45edbb,null));};exports['getDescriptions']=function(_0x1dca99,_0x21792e,_0x315fc1){var _0x1da2b4={};var _0x324969={};var _0x279588;var _0x83cc63;return db['ZohoConfiguration'][_0x4241('0x4b')]({'where':{'id':_0x1dca99['params']['id']}})[_0x4241('0x20')](handleEntityNotFound(_0x21792e,null))[_0x4241('0x20')](function(_0x4cca64){if(_0x4cca64){_0x279588=_0x4cca64;_0x324969['model']=_['keys'](db[_0x4241('0x4c')][_0x4241('0x29')]);_0x324969['query']=_[_0x4241('0x30')](_0x1dca99[_0x4241('0x2f')]);_0x324969[_0x4241('0x3a')]=_[_0x4241('0x31')](_0x324969[_0x4241('0x2d')],_0x324969[_0x4241('0x2f')]);_0x1da2b4['attributes']=_[_0x4241('0x31')](_0x324969[_0x4241('0x2d')],qs[_0x4241('0x33')](_0x1dca99[_0x4241('0x2f')]['fields']));_0x1da2b4[_0x4241('0x32')]=_0x1da2b4[_0x4241('0x32')][_0x4241('0x34')]?_0x1da2b4[_0x4241('0x32')]:_0x324969[_0x4241('0x2d')];_0x1da2b4[_0x4241('0x37')]=qs[_0x4241('0x38')](_0x1dca99[_0x4241('0x2f')][_0x4241('0x38')]);_0x1da2b4[_0x4241('0x39')]=qs[_0x4241('0x3a')](_[_0x4241('0x3b')](_0x1dca99[_0x4241('0x2f')],_0x324969[_0x4241('0x3a')]));if(_0x1dca99[_0x4241('0x2f')][_0x4241('0x3e')]){_0x1da2b4[_0x4241('0x39')]=_[_0x4241('0x3c')](_0x1da2b4[_0x4241('0x39')],{'$or':_['map'](_0x1da2b4[_0x4241('0x32')],function(_0x1cdb53){var _0x319f00={};_0x319f00[_0x1cdb53]={'$like':'%'+_0x1dca99[_0x4241('0x2f')][_0x4241('0x3e')]+'%'};return _0x319f00;})});}_0x1da2b4=_[_0x4241('0x3c')]({},_0x1da2b4,_0x1dca99[_0x4241('0x3f')]);return _0x279588[_0x4241('0x4e')](_0x1da2b4);}})[_0x4241('0x20')](function(_0x571439){if(_0x571439){_0x83cc63=_0x571439[_0x4241('0x34')];if(!_0x1dca99[_0x4241('0x2f')]['hasOwnProperty'](_0x4241('0x36'))){_0x1da2b4[_0x4241('0x19')]=qs[_0x4241('0x19')](_0x1dca99[_0x4241('0x2f')][_0x4241('0x19')]);_0x1da2b4[_0x4241('0x1b')]=qs[_0x4241('0x1b')](_0x1dca99['query']['offset']);}return _0x279588[_0x4241('0x4e')](_0x1da2b4);}})[_0x4241('0x20')](function(_0x37a401){if(_0x37a401){return _0x37a401?{'count':_0x83cc63,'rows':_0x37a401}:null;}})[_0x4241('0x20')](respondWithResult(_0x21792e,null))[_0x4241('0x44')](handleError(_0x21792e,null));};
\ No newline at end of file
index e93a8f6..89fdda5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfac6=['path','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1fd302,_0x48bc1c){var _0x2614f4=function(_0x5a005c){while(--_0x5a005c){_0x1fd302['push'](_0x1fd302['shift']());}};_0x2614f4(++_0x48bc1c);}(_0xfac6,0x1f2));var _0x6fac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfac6[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x6fac('0x0'));var logger=require(_0x6fac('0x1'))(_0x6fac('0x2'));var moment=require(_0x6fac('0x3'));var BPromise=require(_0x6fac('0x4'));var rp=require(_0x6fac('0x5'));var fs=require('fs');var path=require(_0x6fac('0x6'));var rimraf=require('rimraf');var config=require(_0x6fac('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0x6fac('0x8')]=function(_0x4e7576,_0x3f7954){return _0x4e7576[_0x6fac('0x9')](_0x6fac('0xa'),attributes,{'tableName':_0x6fac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x01ce=['bluebird','request-promise','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01ce,0x121));var _0xe01c=function(_0x360158,_0x18f1a0){_0x360158=_0x360158-0x0;var _0x2cda1d=_0x01ce[_0x360158];return _0x2cda1d;};'use strict';var _=require(_0xe01c('0x0'));var util=require(_0xe01c('0x1'));var logger=require(_0xe01c('0x2'))(_0xe01c('0x3'));var moment=require(_0xe01c('0x4'));var BPromise=require(_0xe01c('0x5'));var rp=require(_0xe01c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe01c('0x7'));var config=require(_0xe01c('0x8'));var attributes=require(_0xe01c('0x9'));module[_0xe01c('0xa')]=function(_0x6b3388,_0x4257d3){return _0x6b3388[_0xe01c('0xb')](_0xe01c('0xc'),attributes,{'tableName':_0xe01c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8596b3..31c16e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a0b=['ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x8a0b,0x178));var _0xb8a0=function(_0x3ff5bf,_0x5094d8){_0x3ff5bf=_0x3ff5bf-0x0;var _0x141569=_0x8a0b[_0x3ff5bf];return _0x141569;};'use strict';var _=require(_0xb8a0('0x0'));var util=require(_0xb8a0('0x1'));var moment=require(_0xb8a0('0x2'));var BPromise=require(_0xb8a0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb8a0('0x4'));var db=require(_0xb8a0('0x5'))['db'];var utils=require(_0xb8a0('0x6'));var logger=require(_0xb8a0('0x7'))(_0xb8a0('0x8'));var config=require(_0xb8a0('0x9'));var jayson=require(_0xb8a0('0xa'));var client=jayson[_0xb8a0('0xb')][_0xb8a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x37e24c,_0x5ad313,_0x3e3d29){return new BPromise(function(_0x444d57,_0xc15dd2){return client[_0xb8a0('0xd')](_0x37e24c,_0x3e3d29)['then'](function(_0x4f061c){logger[_0xb8a0('0xe')](_0xb8a0('0xf'),_0x5ad313,_0xb8a0('0x10'));logger['debug'](_0xb8a0('0x11'),_0x5ad313,_0xb8a0('0x10'),JSON[_0xb8a0('0x12')](_0x4f061c));if(_0x4f061c[_0xb8a0('0x13')]){if(_0x4f061c[_0xb8a0('0x13')][_0xb8a0('0x14')]===0x1f4){logger['error'](_0xb8a0('0xf'),_0x5ad313,_0x4f061c['error']['message']);return _0xc15dd2(_0x4f061c['error'][_0xb8a0('0x15')]);}logger[_0xb8a0('0x13')]('ZohoConfiguration,\x20%s,\x20%s',_0x5ad313,_0x4f061c[_0xb8a0('0x13')][_0xb8a0('0x15')]);return _0x444d57(_0x4f061c['error'][_0xb8a0('0x15')]);}else{logger[_0xb8a0('0xe')](_0xb8a0('0xf'),_0x5ad313,_0xb8a0('0x10'));_0x444d57(_0x4f061c['result'][_0xb8a0('0x15')]);}})[_0xb8a0('0x16')](function(_0x41c889){logger[_0xb8a0('0x13')]('ZohoConfiguration,\x20%s,\x20%s',_0x5ad313,_0x41c889);_0xc15dd2(_0x41c889);});});}
\ No newline at end of file
+var _0x5cfe=['../../config/logger','rpc','client','http','request','info','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x319ea6,_0x4bb7d7){var _0x329a62=function(_0x89fa4){while(--_0x89fa4){_0x319ea6['push'](_0x319ea6['shift']());}};_0x329a62(++_0x4bb7d7);}(_0x5cfe,0x8c));var _0xe5cf=function(_0x1df5be,_0x16ae84){_0x1df5be=_0x1df5be-0x0;var _0x15f26f=_0x5cfe[_0x1df5be];return _0x15f26f;};'use strict';var _=require(_0xe5cf('0x0'));var util=require(_0xe5cf('0x1'));var moment=require(_0xe5cf('0x2'));var BPromise=require(_0xe5cf('0x3'));var rs=require(_0xe5cf('0x4'));var fs=require('fs');var Redis=require(_0xe5cf('0x5'));var db=require(_0xe5cf('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe5cf('0x7'))(_0xe5cf('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe5cf('0x9')][_0xe5cf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa6ab5b,_0x1f8bb8,_0xdeee25){return new BPromise(function(_0x59a9d4,_0x259257){return client[_0xe5cf('0xb')](_0xa6ab5b,_0xdeee25)['then'](function(_0x336c21){logger[_0xe5cf('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x1f8bb8,'request\x20sent');logger['debug'](_0xe5cf('0xd'),_0x1f8bb8,_0xe5cf('0xe'),JSON[_0xe5cf('0xf')](_0x336c21));if(_0x336c21[_0xe5cf('0x10')]){if(_0x336c21[_0xe5cf('0x10')]['code']===0x1f4){logger[_0xe5cf('0x10')](_0xe5cf('0x11'),_0x1f8bb8,_0x336c21[_0xe5cf('0x10')][_0xe5cf('0x12')]);return _0x259257(_0x336c21['error'][_0xe5cf('0x12')]);}logger[_0xe5cf('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x1f8bb8,_0x336c21[_0xe5cf('0x10')][_0xe5cf('0x12')]);return _0x59a9d4(_0x336c21[_0xe5cf('0x10')][_0xe5cf('0x12')]);}else{logger[_0xe5cf('0xc')](_0xe5cf('0x11'),_0x1f8bb8,_0xe5cf('0xe'));_0x59a9d4(_0x336c21[_0xe5cf('0x13')][_0xe5cf('0x12')]);}})[_0xe5cf('0x14')](function(_0x5e9f90){logger[_0xe5cf('0x10')](_0xe5cf('0x11'),_0x1f8bb8,_0x5e9f90);_0x259257(_0x5e9f90);});});}
\ No newline at end of file
index 29b73a3..f3e36c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x767f=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','post','create','put','destroy','exports','multer'];(function(_0x4ca9aa,_0x1ff656){var _0x2a83f1=function(_0x352c7a){while(--_0x352c7a){_0x4ca9aa['push'](_0x4ca9aa['shift']());}};_0x2a83f1(++_0x1ff656);}(_0x767f,0xe3));var _0xf767=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x767f[_0x4ae6ef];return _0x3cbb4e;};'use strict';var multer=require(_0xf767('0x0'));var util=require('util');var path=require(_0xf767('0x1'));var timeout=require(_0xf767('0x2'));var express=require(_0xf767('0x3'));var router=express[_0xf767('0x4')]();var fs_extra=require(_0xf767('0x5'));var auth=require(_0xf767('0x6'));var interaction=require(_0xf767('0x7'));var config=require(_0xf767('0x8'));var controller=require(_0xf767('0x9'));router[_0xf767('0xa')]('/',auth[_0xf767('0xb')](),controller[_0xf767('0xc')]);router[_0xf767('0xa')](_0xf767('0xd'),auth[_0xf767('0xb')](),controller['show']);router[_0xf767('0xe')]('/',auth[_0xf767('0xb')](),controller[_0xf767('0xf')]);router[_0xf767('0x10')]('/:id',auth[_0xf767('0xb')](),controller['update']);router['delete'](_0xf767('0xd'),auth['isAuthenticated'](),controller[_0xf767('0x11')]);module[_0xf767('0x12')]=router;
\ No newline at end of file
+var _0xb89c=['Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2d6cb1,_0x5efe12){var _0x3a2e95=function(_0x46eec3){while(--_0x46eec3){_0x2d6cb1['push'](_0x2d6cb1['shift']());}};_0x3a2e95(++_0x5efe12);}(_0xb89c,0x1c4));var _0xcb89=function(_0x3d3d28,_0x121dcd){_0x3d3d28=_0x3d3d28-0x0;var _0x2a808c=_0xb89c[_0x3d3d28];return _0x2a808c;};'use strict';var multer=require(_0xcb89('0x0'));var util=require(_0xcb89('0x1'));var path=require(_0xcb89('0x2'));var timeout=require(_0xcb89('0x3'));var express=require('express');var router=express[_0xcb89('0x4')]();var fs_extra=require(_0xcb89('0x5'));var auth=require(_0xcb89('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcb89('0x7'));var controller=require(_0xcb89('0x8'));router[_0xcb89('0x9')]('/',auth[_0xcb89('0xa')](),controller['index']);router[_0xcb89('0x9')](_0xcb89('0xb'),auth[_0xcb89('0xa')](),controller[_0xcb89('0xc')]);router[_0xcb89('0xd')]('/',auth[_0xcb89('0xa')](),controller[_0xcb89('0xe')]);router['put'](_0xcb89('0xb'),auth[_0xcb89('0xa')](),controller[_0xcb89('0xf')]);router[_0xcb89('0x10')](_0xcb89('0xb'),auth[_0xcb89('0xa')](),controller[_0xcb89('0x11')]);module[_0xcb89('0x12')]=router;
\ No newline at end of file
index fbccc48..7da5452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x783c=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x4ae961,_0x55a0ed){var _0x3f4dd6=function(_0x49adb1){while(--_0x49adb1){_0x4ae961['push'](_0x4ae961['shift']());}};_0x3f4dd6(++_0x55a0ed);}(_0x783c,0xac));var _0xc783=function(_0x3aa433,_0x5a28fa){_0x3aa433=_0x3aa433-0x0;var _0x21c1b1=_0x783c[_0x3aa433];return _0x21c1b1;};'use strict';var Sequelize=require(_0xc783('0x0'));module[_0xc783('0x1')]={'type':{'type':Sequelize[_0xc783('0x2')](_0xc783('0x3'),_0xc783('0x4'),_0xc783('0x5'),_0xc783('0x6'),_0xc783('0x7')),'defaultValue':_0xc783('0x3')},'content':{'type':Sequelize[_0xc783('0x8')]},'key':{'type':Sequelize[_0xc783('0x8')]},'keyType':{'type':Sequelize[_0xc783('0x2')]('string','variable',_0xc783('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xc783('0x8')]},'nameField':{'type':Sequelize[_0xc783('0x8')]},'customField':{'type':Sequelize[_0xc783('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc783('0x8')]}};
\ No newline at end of file
+var _0x6d4f=['picklist','STRING','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x3ff215,_0x28066e){var _0x12e478=function(_0x5d5d51){while(--_0x5d5d51){_0x3ff215['push'](_0x3ff215['shift']());}};_0x12e478(++_0x28066e);}(_0x6d4f,0x110));var _0xf6d4=function(_0x44731a,_0x3417bb){_0x44731a=_0x44731a-0x0;var _0x5541bd=_0x6d4f[_0x44731a];return _0x5541bd;};'use strict';var Sequelize=require(_0xf6d4('0x0'));module[_0xf6d4('0x1')]={'type':{'type':Sequelize[_0xf6d4('0x2')](_0xf6d4('0x3'),_0xf6d4('0x4'),_0xf6d4('0x5'),_0xf6d4('0x6'),_0xf6d4('0x7')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xf6d4('0x8')]},'keyType':{'type':Sequelize[_0xf6d4('0x2')](_0xf6d4('0x3'),_0xf6d4('0x4'),_0xf6d4('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf6d4('0x8')]},'nameField':{'type':Sequelize[_0xf6d4('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf6d4('0x8')]}};
\ No newline at end of file
index 2d09c86..6985b5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaa6=['json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','error','stack','name','map','ZohoField','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','../../mysqldb','sendStatus','status','end'];(function(_0x4eb389,_0x20c29f){var _0x5576ad=function(_0xa049dd){while(--_0xa049dd){_0x4eb389['push'](_0x4eb389['shift']());}};_0x5576ad(++_0x20c29f);}(_0xfaa6,0xbd));var _0x6faa=function(_0x20aadb,_0x5a607a){_0x20aadb=_0x20aadb-0x0;var _0x520018=_0xfaa6[_0x20aadb];return _0x520018;};'use strict';var emlformat=require(_0x6faa('0x0'));var rimraf=require(_0x6faa('0x1'));var zipdir=require(_0x6faa('0x2'));var jsonpatch=require(_0x6faa('0x3'));var rp=require(_0x6faa('0x4'));var moment=require(_0x6faa('0x5'));var BPromise=require(_0x6faa('0x6'));var Mustache=require(_0x6faa('0x7'));var util=require(_0x6faa('0x8'));var path=require(_0x6faa('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6faa('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6faa('0xb'));var squel=require(_0x6faa('0xc'));var crypto=require(_0x6faa('0xd'));var jsforce=require(_0x6faa('0xe'));var deskjs=require(_0x6faa('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6faa('0x10'));var Papa=require(_0x6faa('0x11'));var Redis=require(_0x6faa('0x12'));var authService=require(_0x6faa('0x13'));var qs=require(_0x6faa('0x14'));var as=require(_0x6faa('0x15'));var hardwareService=require(_0x6faa('0x16'));var logger=require('../../config/logger')(_0x6faa('0x17'));var utils=require(_0x6faa('0x18'));var config=require(_0x6faa('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x6faa('0x1a'))['db'];function respondWithStatusCode(_0x2d06c1,_0x17913c){_0x17913c=_0x17913c||0xcc;return function(_0x147a10){if(_0x147a10){return _0x2d06c1[_0x6faa('0x1b')](_0x17913c);}return _0x2d06c1[_0x6faa('0x1c')](_0x17913c)[_0x6faa('0x1d')]();};}function respondWithResult(_0x317746,_0x215c6f){_0x215c6f=_0x215c6f||0xc8;return function(_0x4b4cb0){if(_0x4b4cb0){return _0x317746['status'](_0x215c6f)[_0x6faa('0x1e')](_0x4b4cb0);}};}function respondWithFilteredResult(_0xe102e8,_0x2779b8){return function(_0x12b4e1){if(_0x12b4e1){var _0x38b5f9=typeof _0x2779b8[_0x6faa('0x1f')]===_0x6faa('0x20')&&typeof _0x2779b8['limit']==='undefined';var _0x4f3dd0=_0x12b4e1['count'];var _0x4b9320=_0x38b5f9?0x0:_0x2779b8[_0x6faa('0x1f')];var _0x4026ae=_0x38b5f9?_0x12b4e1[_0x6faa('0x21')]:_0x2779b8['offset']+_0x2779b8[_0x6faa('0x22')];var _0x42cc1e;if(_0x4026ae>=_0x4f3dd0){_0x4026ae=_0x4f3dd0;_0x42cc1e=0xc8;}else{_0x42cc1e=0xce;}_0xe102e8[_0x6faa('0x1c')](_0x42cc1e);return _0xe102e8['set']('Content-Range',_0x4b9320+'-'+_0x4026ae+'/'+_0x4f3dd0)[_0x6faa('0x1e')](_0x12b4e1);}return null;};}function patchUpdates(_0x35531e){return function(_0x199ed9){try{jsonpatch[_0x6faa('0x23')](_0x199ed9,_0x35531e,!![]);}catch(_0x3adaf5){return BPromise[_0x6faa('0x24')](_0x3adaf5);}return _0x199ed9[_0x6faa('0x25')]();};}function saveUpdates(_0x4511ed,_0x96ff25){return function(_0x2db505){if(_0x2db505){return _0x2db505[_0x6faa('0x26')](_0x4511ed)[_0x6faa('0x27')](function(_0x28386e){return _0x28386e;});}return null;};}function removeEntity(_0x470cd6,_0x18686a){return function(_0x151bb4){if(_0x151bb4){return _0x151bb4[_0x6faa('0x28')]()[_0x6faa('0x27')](function(){_0x470cd6[_0x6faa('0x1c')](0xcc)[_0x6faa('0x1d')]();});}};}function handleEntityNotFound(_0x22965f,_0x46cd9a){return function(_0x1104ba){if(!_0x1104ba){_0x22965f[_0x6faa('0x1b')](0x194);}return _0x1104ba;};}function handleError(_0x594519,_0x17f698){_0x17f698=_0x17f698||0x1f4;return function(_0x48aad8){logger[_0x6faa('0x29')](_0x48aad8[_0x6faa('0x2a')]);if(_0x48aad8[_0x6faa('0x2b')]){delete _0x48aad8[_0x6faa('0x2b')];}_0x594519[_0x6faa('0x1c')](_0x17f698)['send'](_0x48aad8);};}exports['index']=function(_0x2355e4,_0xf20193){var _0x2fc98e={},_0x2cf427={},_0x19f768={'count':0x0,'rows':[]};var _0x3a7b08=_[_0x6faa('0x2c')](db[_0x6faa('0x2d')]['rawAttributes'],function(_0xc0e956){return{'name':_0xc0e956[_0x6faa('0x2e')],'type':_0xc0e956[_0x6faa('0x2f')]['key']};});_0x2cf427[_0x6faa('0x30')]=_[_0x6faa('0x2c')](_0x3a7b08,_0x6faa('0x2b'));_0x2cf427[_0x6faa('0x31')]=_[_0x6faa('0x32')](_0x2355e4[_0x6faa('0x31')]);_0x2cf427[_0x6faa('0x33')]=_[_0x6faa('0x34')](_0x2cf427['model'],_0x2cf427[_0x6faa('0x31')]);_0x2fc98e[_0x6faa('0x35')]=_[_0x6faa('0x34')](_0x2cf427['model'],qs[_0x6faa('0x36')](_0x2355e4[_0x6faa('0x31')][_0x6faa('0x36')]));_0x2fc98e['attributes']=_0x2fc98e[_0x6faa('0x35')]['length']?_0x2fc98e[_0x6faa('0x35')]:_0x2cf427[_0x6faa('0x30')];if(!_0x2355e4['query'][_0x6faa('0x37')]('nolimit')){_0x2fc98e[_0x6faa('0x22')]=qs[_0x6faa('0x22')](_0x2355e4[_0x6faa('0x31')][_0x6faa('0x22')]);_0x2fc98e[_0x6faa('0x1f')]=qs[_0x6faa('0x1f')](_0x2355e4[_0x6faa('0x31')][_0x6faa('0x1f')]);}_0x2fc98e[_0x6faa('0x38')]=qs[_0x6faa('0x39')](_0x2355e4['query']['sort']);_0x2fc98e[_0x6faa('0x3a')]=qs[_0x6faa('0x33')](_[_0x6faa('0x3b')](_0x2355e4['query'],_0x2cf427[_0x6faa('0x33')]),_0x3a7b08);if(_0x2355e4[_0x6faa('0x31')][_0x6faa('0x3c')]){_0x2fc98e[_0x6faa('0x3a')]=_[_0x6faa('0x3d')](_0x2fc98e['where'],{'$or':_[_0x6faa('0x2c')](_0x3a7b08,function(_0x5ce797){if(_0x5ce797[_0x6faa('0x2f')]!==_0x6faa('0x3e')){var _0x14a14a={};_0x14a14a[_0x5ce797[_0x6faa('0x2b')]]={'$like':'%'+_0x2355e4[_0x6faa('0x31')]['filter']+'%'};return _0x14a14a;}})});}_0x2fc98e=_[_0x6faa('0x3d')]({},_0x2fc98e,_0x2355e4['options']);var _0x3d888d={'where':_0x2fc98e[_0x6faa('0x3a')]};return db[_0x6faa('0x2d')][_0x6faa('0x21')](_0x3d888d)[_0x6faa('0x27')](function(_0x3a45b1){_0x19f768['count']=_0x3a45b1;if(_0x2355e4[_0x6faa('0x31')][_0x6faa('0x3f')]){_0x2fc98e[_0x6faa('0x40')]=[{'all':!![]}];}return db[_0x6faa('0x2d')][_0x6faa('0x41')](_0x2fc98e);})['then'](function(_0x102271){_0x19f768[_0x6faa('0x42')]=_0x102271;return _0x19f768;})[_0x6faa('0x27')](respondWithFilteredResult(_0xf20193,_0x2fc98e))[_0x6faa('0x43')](handleError(_0xf20193,null));};exports['show']=function(_0x161da6,_0x4cafe1){var _0x520b27={'raw':!![],'where':{'id':_0x161da6[_0x6faa('0x44')]['id']}},_0x1d5101={};_0x1d5101['model']=_[_0x6faa('0x32')](db[_0x6faa('0x2d')][_0x6faa('0x45')]);_0x1d5101[_0x6faa('0x31')]=_['keys'](_0x161da6['query']);_0x1d5101['filters']=_[_0x6faa('0x34')](_0x1d5101[_0x6faa('0x30')],_0x1d5101[_0x6faa('0x31')]);_0x520b27['attributes']=_[_0x6faa('0x34')](_0x1d5101['model'],qs[_0x6faa('0x36')](_0x161da6[_0x6faa('0x31')][_0x6faa('0x36')]));_0x520b27[_0x6faa('0x35')]=_0x520b27['attributes']['length']?_0x520b27[_0x6faa('0x35')]:_0x1d5101[_0x6faa('0x30')];if(_0x161da6[_0x6faa('0x31')][_0x6faa('0x3f')]){_0x520b27['include']=[{'all':!![]}];}_0x520b27=_[_0x6faa('0x3d')]({},_0x520b27,_0x161da6['options']);return db[_0x6faa('0x2d')][_0x6faa('0x46')](_0x520b27)[_0x6faa('0x27')](handleEntityNotFound(_0x4cafe1,null))[_0x6faa('0x27')](respondWithResult(_0x4cafe1,null))['catch'](handleError(_0x4cafe1,null));};exports[_0x6faa('0x47')]=function(_0x258e30,_0x1442a3){return db[_0x6faa('0x2d')]['create'](_0x258e30[_0x6faa('0x48')],{})['then'](respondWithResult(_0x1442a3,0xc9))[_0x6faa('0x43')](handleError(_0x1442a3,null));};exports['update']=function(_0x5be4d3,_0x4fe82a){if(_0x5be4d3[_0x6faa('0x48')]['id']){delete _0x5be4d3['body']['id'];}return db['ZohoField'][_0x6faa('0x46')]({'where':{'id':_0x5be4d3['params']['id']}})[_0x6faa('0x27')](handleEntityNotFound(_0x4fe82a,null))[_0x6faa('0x27')](saveUpdates(_0x5be4d3['body'],null))[_0x6faa('0x27')](respondWithResult(_0x4fe82a,null))[_0x6faa('0x43')](handleError(_0x4fe82a,null));};exports[_0x6faa('0x28')]=function(_0x19127c,_0x343dd7){return db[_0x6faa('0x2d')][_0x6faa('0x46')]({'where':{'id':_0x19127c['params']['id']}})[_0x6faa('0x27')](handleEntityNotFound(_0x343dd7,null))[_0x6faa('0x27')](removeEntity(_0x343dd7,null))[_0x6faa('0x43')](handleError(_0x343dd7,null));};
\ No newline at end of file
+var _0xdd73=['apply','reject','save','then','destroy','error','stack','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','include','find','create','update','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','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','end','status','json','offset','undefined','limit','count','set'];(function(_0x57975f,_0x388556){var _0x4793b8=function(_0x652c05){while(--_0x652c05){_0x57975f['push'](_0x57975f['shift']());}};_0x4793b8(++_0x388556);}(_0xdd73,0x156));var _0x3dd7=function(_0x5a2436,_0x11375a){_0x5a2436=_0x5a2436-0x0;var _0x2d8468=_0xdd73[_0x5a2436];return _0x2d8468;};'use strict';var emlformat=require(_0x3dd7('0x0'));var rimraf=require(_0x3dd7('0x1'));var zipdir=require(_0x3dd7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3dd7('0x3'));var BPromise=require(_0x3dd7('0x4'));var Mustache=require(_0x3dd7('0x5'));var util=require(_0x3dd7('0x6'));var path=require(_0x3dd7('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3dd7('0x8'));var fs=require('fs');var fs_extra=require(_0x3dd7('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3dd7('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x3dd7('0xb'));var querystring=require(_0x3dd7('0xc'));var Papa=require(_0x3dd7('0xd'));var Redis=require('ioredis');var authService=require(_0x3dd7('0xe'));var qs=require(_0x3dd7('0xf'));var as=require(_0x3dd7('0x10'));var hardwareService=require(_0x3dd7('0x11'));var logger=require(_0x3dd7('0x12'))(_0x3dd7('0x13'));var utils=require(_0x3dd7('0x14'));var config=require(_0x3dd7('0x15'));var licenseUtil=require(_0x3dd7('0x16'));var db=require(_0x3dd7('0x17'))['db'];function respondWithStatusCode(_0x47dcf4,_0x297581){_0x297581=_0x297581||0xcc;return function(_0x21acfc){if(_0x21acfc){return _0x47dcf4[_0x3dd7('0x18')](_0x297581);}return _0x47dcf4['status'](_0x297581)[_0x3dd7('0x19')]();};}function respondWithResult(_0x234cc8,_0x126fb6){_0x126fb6=_0x126fb6||0xc8;return function(_0x5dbc24){if(_0x5dbc24){return _0x234cc8[_0x3dd7('0x1a')](_0x126fb6)[_0x3dd7('0x1b')](_0x5dbc24);}};}function respondWithFilteredResult(_0x56dea9,_0x5cc7f0){return function(_0x586a3){if(_0x586a3){var _0x5cb42c=typeof _0x5cc7f0[_0x3dd7('0x1c')]===_0x3dd7('0x1d')&&typeof _0x5cc7f0[_0x3dd7('0x1e')]===_0x3dd7('0x1d');var _0x2f949d=_0x586a3['count'];var _0xaa09cd=_0x5cb42c?0x0:_0x5cc7f0[_0x3dd7('0x1c')];var _0x275bd1=_0x5cb42c?_0x586a3[_0x3dd7('0x1f')]:_0x5cc7f0[_0x3dd7('0x1c')]+_0x5cc7f0[_0x3dd7('0x1e')];var _0x4376cb;if(_0x275bd1>=_0x2f949d){_0x275bd1=_0x2f949d;_0x4376cb=0xc8;}else{_0x4376cb=0xce;}_0x56dea9[_0x3dd7('0x1a')](_0x4376cb);return _0x56dea9[_0x3dd7('0x20')]('Content-Range',_0xaa09cd+'-'+_0x275bd1+'/'+_0x2f949d)[_0x3dd7('0x1b')](_0x586a3);}return null;};}function patchUpdates(_0x45caf3){return function(_0x5bdd6d){try{jsonpatch[_0x3dd7('0x21')](_0x5bdd6d,_0x45caf3,!![]);}catch(_0x5cbd1d){return BPromise[_0x3dd7('0x22')](_0x5cbd1d);}return _0x5bdd6d[_0x3dd7('0x23')]();};}function saveUpdates(_0x493ae8,_0x1dbe6c){return function(_0x44682b){if(_0x44682b){return _0x44682b['update'](_0x493ae8)[_0x3dd7('0x24')](function(_0x1df79b){return _0x1df79b;});}return null;};}function removeEntity(_0x2a77be,_0x5bc765){return function(_0x1f72f9){if(_0x1f72f9){return _0x1f72f9[_0x3dd7('0x25')]()[_0x3dd7('0x24')](function(){_0x2a77be['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b675d,_0xe5de63){return function(_0x5eab9b){if(!_0x5eab9b){_0x4b675d[_0x3dd7('0x18')](0x194);}return _0x5eab9b;};}function handleError(_0x376443,_0xaad840){_0xaad840=_0xaad840||0x1f4;return function(_0x43558b){logger[_0x3dd7('0x26')](_0x43558b[_0x3dd7('0x27')]);if(_0x43558b[_0x3dd7('0x28')]){delete _0x43558b[_0x3dd7('0x28')];}_0x376443[_0x3dd7('0x1a')](_0xaad840)[_0x3dd7('0x29')](_0x43558b);};}exports[_0x3dd7('0x2a')]=function(_0x553848,_0x599ef5){var _0x356a11={},_0x105a91={},_0x3f88ec={'count':0x0,'rows':[]};var _0x2fe62f=_[_0x3dd7('0x2b')](db[_0x3dd7('0x2c')][_0x3dd7('0x2d')],function(_0x426766){return{'name':_0x426766[_0x3dd7('0x2e')],'type':_0x426766[_0x3dd7('0x2f')][_0x3dd7('0x30')]};});_0x105a91['model']=_[_0x3dd7('0x2b')](_0x2fe62f,_0x3dd7('0x28'));_0x105a91[_0x3dd7('0x31')]=_[_0x3dd7('0x32')](_0x553848[_0x3dd7('0x31')]);_0x105a91[_0x3dd7('0x33')]=_['intersection'](_0x105a91['model'],_0x105a91[_0x3dd7('0x31')]);_0x356a11[_0x3dd7('0x34')]=_[_0x3dd7('0x35')](_0x105a91[_0x3dd7('0x36')],qs[_0x3dd7('0x37')](_0x553848[_0x3dd7('0x31')][_0x3dd7('0x37')]));_0x356a11['attributes']=_0x356a11[_0x3dd7('0x34')][_0x3dd7('0x38')]?_0x356a11[_0x3dd7('0x34')]:_0x105a91[_0x3dd7('0x36')];if(!_0x553848[_0x3dd7('0x31')][_0x3dd7('0x39')]('nolimit')){_0x356a11['limit']=qs[_0x3dd7('0x1e')](_0x553848[_0x3dd7('0x31')][_0x3dd7('0x1e')]);_0x356a11[_0x3dd7('0x1c')]=qs[_0x3dd7('0x1c')](_0x553848[_0x3dd7('0x31')][_0x3dd7('0x1c')]);}_0x356a11[_0x3dd7('0x3a')]=qs[_0x3dd7('0x3b')](_0x553848['query'][_0x3dd7('0x3b')]);_0x356a11[_0x3dd7('0x3c')]=qs[_0x3dd7('0x33')](_[_0x3dd7('0x3d')](_0x553848[_0x3dd7('0x31')],_0x105a91[_0x3dd7('0x33')]),_0x2fe62f);if(_0x553848[_0x3dd7('0x31')][_0x3dd7('0x3e')]){_0x356a11[_0x3dd7('0x3c')]=_[_0x3dd7('0x3f')](_0x356a11['where'],{'$or':_[_0x3dd7('0x2b')](_0x2fe62f,function(_0x959832){if(_0x959832[_0x3dd7('0x2f')]!==_0x3dd7('0x40')){var _0x1d75bb={};_0x1d75bb[_0x959832[_0x3dd7('0x28')]]={'$like':'%'+_0x553848[_0x3dd7('0x31')]['filter']+'%'};return _0x1d75bb;}})});}_0x356a11=_[_0x3dd7('0x3f')]({},_0x356a11,_0x553848[_0x3dd7('0x41')]);var _0x38c1ca={'where':_0x356a11[_0x3dd7('0x3c')]};return db[_0x3dd7('0x2c')][_0x3dd7('0x1f')](_0x38c1ca)[_0x3dd7('0x24')](function(_0x4611f1){_0x3f88ec[_0x3dd7('0x1f')]=_0x4611f1;if(_0x553848[_0x3dd7('0x31')][_0x3dd7('0x42')]){_0x356a11['include']=[{'all':!![]}];}return db['ZohoField'][_0x3dd7('0x43')](_0x356a11);})[_0x3dd7('0x24')](function(_0x3b4a9b){_0x3f88ec['rows']=_0x3b4a9b;return _0x3f88ec;})[_0x3dd7('0x24')](respondWithFilteredResult(_0x599ef5,_0x356a11))[_0x3dd7('0x44')](handleError(_0x599ef5,null));};exports['show']=function(_0x32b28e,_0x58993d){var _0x4c705c={'raw':!![],'where':{'id':_0x32b28e['params']['id']}},_0x201492={};_0x201492[_0x3dd7('0x36')]=_[_0x3dd7('0x32')](db[_0x3dd7('0x2c')][_0x3dd7('0x2d')]);_0x201492[_0x3dd7('0x31')]=_['keys'](_0x32b28e[_0x3dd7('0x31')]);_0x201492[_0x3dd7('0x33')]=_[_0x3dd7('0x35')](_0x201492[_0x3dd7('0x36')],_0x201492['query']);_0x4c705c[_0x3dd7('0x34')]=_[_0x3dd7('0x35')](_0x201492[_0x3dd7('0x36')],qs[_0x3dd7('0x37')](_0x32b28e['query'][_0x3dd7('0x37')]));_0x4c705c[_0x3dd7('0x34')]=_0x4c705c[_0x3dd7('0x34')][_0x3dd7('0x38')]?_0x4c705c[_0x3dd7('0x34')]:_0x201492['model'];if(_0x32b28e[_0x3dd7('0x31')][_0x3dd7('0x42')]){_0x4c705c[_0x3dd7('0x45')]=[{'all':!![]}];}_0x4c705c=_[_0x3dd7('0x3f')]({},_0x4c705c,_0x32b28e[_0x3dd7('0x41')]);return db['ZohoField'][_0x3dd7('0x46')](_0x4c705c)['then'](handleEntityNotFound(_0x58993d,null))['then'](respondWithResult(_0x58993d,null))[_0x3dd7('0x44')](handleError(_0x58993d,null));};exports[_0x3dd7('0x47')]=function(_0x476cfc,_0xee741a){return db[_0x3dd7('0x2c')][_0x3dd7('0x47')](_0x476cfc['body'],{})[_0x3dd7('0x24')](respondWithResult(_0xee741a,0xc9))[_0x3dd7('0x44')](handleError(_0xee741a,null));};exports[_0x3dd7('0x48')]=function(_0x125e16,_0x56c84f){if(_0x125e16[_0x3dd7('0x49')]['id']){delete _0x125e16[_0x3dd7('0x49')]['id'];}return db[_0x3dd7('0x2c')][_0x3dd7('0x46')]({'where':{'id':_0x125e16[_0x3dd7('0x4a')]['id']}})[_0x3dd7('0x24')](handleEntityNotFound(_0x56c84f,null))[_0x3dd7('0x24')](saveUpdates(_0x125e16[_0x3dd7('0x49')],null))[_0x3dd7('0x24')](respondWithResult(_0x56c84f,null))[_0x3dd7('0x44')](handleError(_0x56c84f,null));};exports[_0x3dd7('0x25')]=function(_0x42998c,_0x34192e){return db[_0x3dd7('0x2c')][_0x3dd7('0x46')]({'where':{'id':_0x42998c[_0x3dd7('0x4a')]['id']}})[_0x3dd7('0x24')](handleEntityNotFound(_0x34192e,null))[_0x3dd7('0x24')](removeEntity(_0x34192e,null))[_0x3dd7('0x44')](handleError(_0x34192e,null));};
\ No newline at end of file
index 2cdd2a7..7b57918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['request-promise','rimraf','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1f211b,_0x94927f){var _0x8923ae=function(_0x495497){while(--_0x495497){_0x1f211b['push'](_0x1f211b['shift']());}};_0x8923ae(++_0x94927f);}(_0xbff5,0x1bc));var _0x5bff=function(_0x31769c,_0xbb3be2){_0x31769c=_0x31769c-0x0;var _0x577651=_0xbff5[_0x31769c];return _0x577651;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var logger=require(_0x5bff('0x2'))(_0x5bff('0x3'));var moment=require(_0x5bff('0x4'));var BPromise=require(_0x5bff('0x5'));var rp=require(_0x5bff('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bff('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module[_0x5bff('0x8')]=function(_0x1d8650,_0x151add){return _0x1d8650[_0x5bff('0x9')](_0x5bff('0xa'),attributes,{'tableName':_0x5bff('0xb'),'paranoid':![],'indexes':[{'name':_0x5bff('0xc'),'fields':[_0x5bff('0xd'),_0x5bff('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8aad=['request-promise','../../config/environment','define','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','api','bluebird'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0x8aad,0x146));var _0xd8aa=function(_0x3cec7b,_0x1e81ce){_0x3cec7b=_0x3cec7b-0x0;var _0x1b7efd=_0x8aad[_0x3cec7b];return _0x1b7efd;};'use strict';var _=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var logger=require('../../config/logger')(_0xd8aa('0x2'));var moment=require('moment');var BPromise=require(_0xd8aa('0x3'));var rp=require(_0xd8aa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd8aa('0x5'));var attributes=require('./intZohoField.attributes');module['exports']=function(_0x16b648,_0x43ddeb){return _0x16b648[_0xd8aa('0x6')]('ZohoField',attributes,{'tableName':_0xd8aa('0x7'),'paranoid':![],'indexes':[{'name':_0xd8aa('0x8'),'fields':[_0xd8aa('0x9'),_0xd8aa('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f30464e..453eaa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d24=['client','http','request','then','info','ZohoField,\x20%s,\x20%s','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x542445,_0x22443d){var _0x50eb92=function(_0x160e36){while(--_0x160e36){_0x542445['push'](_0x542445['shift']());}};_0x50eb92(++_0x22443d);}(_0x4d24,0x1c5));var _0x44d2=function(_0x4b721a,_0x1ea950){_0x4b721a=_0x4b721a-0x0;var _0x8e8d20=_0x4d24[_0x4b721a];return _0x8e8d20;};'use strict';var _=require(_0x44d2('0x0'));var util=require(_0x44d2('0x1'));var moment=require(_0x44d2('0x2'));var BPromise=require('bluebird');var rs=require(_0x44d2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44d2('0x4'));var logger=require(_0x44d2('0x5'))(_0x44d2('0x6'));var config=require(_0x44d2('0x7'));var jayson=require(_0x44d2('0x8'));var client=jayson[_0x44d2('0x9')][_0x44d2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42f705,_0x44d90b,_0x13e6d0){return new BPromise(function(_0x5d65d5,_0x1eac2d){return client[_0x44d2('0xb')](_0x42f705,_0x13e6d0)[_0x44d2('0xc')](function(_0x2909a6){logger[_0x44d2('0xd')](_0x44d2('0xe'),_0x44d90b,'request\x20sent');logger['debug'](_0x44d2('0xf'),_0x44d90b,_0x44d2('0x10'),JSON[_0x44d2('0x11')](_0x2909a6));if(_0x2909a6[_0x44d2('0x12')]){if(_0x2909a6[_0x44d2('0x12')][_0x44d2('0x13')]===0x1f4){logger[_0x44d2('0x12')]('ZohoField,\x20%s,\x20%s',_0x44d90b,_0x2909a6[_0x44d2('0x12')]['message']);return _0x1eac2d(_0x2909a6['error'][_0x44d2('0x14')]);}logger['error'](_0x44d2('0xe'),_0x44d90b,_0x2909a6['error']['message']);return _0x5d65d5(_0x2909a6['error'][_0x44d2('0x14')]);}else{logger[_0x44d2('0xd')]('ZohoField,\x20%s,\x20%s',_0x44d90b,_0x44d2('0x10'));_0x5d65d5(_0x2909a6['result'][_0x44d2('0x14')]);}})[_0x44d2('0x15')](function(_0x632f26){logger['error']('ZohoField,\x20%s,\x20%s',_0x44d90b,_0x632f26);_0x1eac2d(_0x632f26);});});}
\ No newline at end of file
+var _0x843f=['http','then','ZohoField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x843f,0xfc));var _0xf843=function(_0x110296,_0x55e219){_0x110296=_0x110296-0x0;var _0x3ad465=_0x843f[_0x110296];return _0x3ad465;};'use strict';var _=require(_0xf843('0x0'));var util=require(_0xf843('0x1'));var moment=require(_0xf843('0x2'));var BPromise=require(_0xf843('0x3'));var rs=require(_0xf843('0x4'));var fs=require('fs');var Redis=require(_0xf843('0x5'));var db=require(_0xf843('0x6'))['db'];var utils=require(_0xf843('0x7'));var logger=require(_0xf843('0x8'))('rpc');var config=require(_0xf843('0x9'));var jayson=require(_0xf843('0xa'));var client=jayson[_0xf843('0xb')][_0xf843('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4585d5,_0x387c9d,_0x46bb78){return new BPromise(function(_0x4fb08f,_0x55b5b9){return client['request'](_0x4585d5,_0x46bb78)[_0xf843('0xd')](function(_0x3de954){logger['info'](_0xf843('0xe'),_0x387c9d,'request\x20sent');logger[_0xf843('0xf')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x387c9d,_0xf843('0x10'),JSON[_0xf843('0x11')](_0x3de954));if(_0x3de954[_0xf843('0x12')]){if(_0x3de954[_0xf843('0x12')][_0xf843('0x13')]===0x1f4){logger[_0xf843('0x12')](_0xf843('0xe'),_0x387c9d,_0x3de954['error']['message']);return _0x55b5b9(_0x3de954['error'][_0xf843('0x14')]);}logger[_0xf843('0x12')]('ZohoField,\x20%s,\x20%s',_0x387c9d,_0x3de954[_0xf843('0x12')][_0xf843('0x14')]);return _0x4fb08f(_0x3de954[_0xf843('0x12')]['message']);}else{logger[_0xf843('0x15')](_0xf843('0xe'),_0x387c9d,_0xf843('0x10'));_0x4fb08f(_0x3de954[_0xf843('0x16')][_0xf843('0x14')]);}})[_0xf843('0x17')](function(_0x5b02e1){logger[_0xf843('0x12')](_0xf843('0xe'),_0x387c9d,_0x5b02e1);_0x55b5b9(_0x5b02e1);});});}
\ No newline at end of file
index ef9d2da..5381c94 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(_0x301755,_0xd69dc3){var _0x2dac9a=function(_0x29e089){while(--_0x29e089){_0x301755['push'](_0x301755['shift']());}};_0x2dac9a(++_0xd69dc3);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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(_0x8525d8,_0x574c3c){var _0x25d8d5=function(_0x2a1061){while(--_0x2a1061){_0x8525d8['push'](_0x8525d8['shift']());}};_0x25d8d5(++_0x574c3c);}(_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 20dd534..9e16c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['BOOLEAN','state','sequelize','unique_name_and_version','STRING','INTEGER'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf4eb,0xec));var _0xbf4e=function(_0x475911,_0x50065b){_0x475911=_0x475911-0x0;var _0x25144e=_0xf4eb[_0x475911];return _0x25144e;};'use strict';var Sequelize=require(_0xbf4e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbf4e('0x1')},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xbf4e('0x2')]},'path':{'type':Sequelize[_0xbf4e('0x2')]},'type':{'type':Sequelize[_0xbf4e('0x2')]},'size':{'type':Sequelize[_0xbf4e('0x3')]},'active':{'type':Sequelize[_0xbf4e('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0xbf4e('0x2')]},'logo':{'type':Sequelize[_0xbf4e('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0xbf4e('0x5')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbf4e('0x2')]},'link':{'type':Sequelize[_0xbf4e('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xa668=['STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x35605d,_0x42ff2b){var _0x2ed5e3=function(_0x2f696c){while(--_0x2f696c){_0x35605d['push'](_0x35605d['shift']());}};_0x2ed5e3(++_0x42ff2b);}(_0xa668,0xec));var _0x8a66=function(_0x1abbf8,_0x41b0e0){_0x1abbf8=_0x1abbf8-0x0;var _0x43bafd=_0xa668[_0x1abbf8];return _0x43bafd;};'use strict';var Sequelize=require(_0x8a66('0x0'));module[_0x8a66('0x1')]={'name':{'type':Sequelize[_0x8a66('0x2')],'allowNull':![],'unique':_0x8a66('0x3')},'version':{'type':Sequelize[_0x8a66('0x2')],'allowNull':![],'unique':_0x8a66('0x3')},'main':{'type':Sequelize[_0x8a66('0x2')],'defaultValue':_0x8a66('0x4')},'filename':{'type':Sequelize[_0x8a66('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x8a66('0x2')]},'size':{'type':Sequelize[_0x8a66('0x5')]},'active':{'type':Sequelize[_0x8a66('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0x8a66('0x2')]},'logo':{'type':Sequelize[_0x8a66('0x2')]},'state':{'type':Sequelize[_0x8a66('0x2')],'unique':'state'},'description':{'type':Sequelize[_0x8a66('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 4844524..13a5119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','end','error','stack','name','index','map','Integration','rawAttributes','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','update','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x4c60,0xc1));var _0x04c6=function(_0x2702df,_0x54b459){_0x2702df=_0x2702df-0x0;var _0x38fbc5=_0x4c60[_0x2702df];return _0x38fbc5;};'use strict';var emlformat=require(_0x04c6('0x0'));var rimraf=require(_0x04c6('0x1'));var zipdir=require(_0x04c6('0x2'));var jsonpatch=require(_0x04c6('0x3'));var rp=require('request-promise');var moment=require(_0x04c6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x04c6('0x5'));var csv=require(_0x04c6('0x6'));var ejs=require(_0x04c6('0x7'));var fs=require('fs');var fs_extra=require(_0x04c6('0x8'));var _=require(_0x04c6('0x9'));var squel=require(_0x04c6('0xa'));var crypto=require(_0x04c6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x04c6('0xc'));var toCsv=require(_0x04c6('0x6'));var querystring=require(_0x04c6('0xd'));var Papa=require(_0x04c6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x04c6('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x04c6('0x10'))(_0x04c6('0x11'));var utils=require('../../config/utils');var config=require(_0x04c6('0x12'));var licenseUtil=require(_0x04c6('0x13'));var db=require(_0x04c6('0x14'))['db'];function respondWithStatusCode(_0x4e5e6,_0x52cdcf){_0x52cdcf=_0x52cdcf||0xcc;return function(_0x257a0a){if(_0x257a0a){return _0x4e5e6[_0x04c6('0x15')](_0x52cdcf);}return _0x4e5e6[_0x04c6('0x16')](_0x52cdcf)['end']();};}function respondWithResult(_0x12d1c5,_0x15cbe0){_0x15cbe0=_0x15cbe0||0xc8;return function(_0x28632e){if(_0x28632e){return _0x12d1c5[_0x04c6('0x16')](_0x15cbe0)[_0x04c6('0x17')](_0x28632e);}};}function respondWithFilteredResult(_0x19a26f,_0x1cd963){return function(_0x3d46a9){if(_0x3d46a9){var _0x5a5a66=typeof _0x1cd963[_0x04c6('0x18')]===_0x04c6('0x19')&&typeof _0x1cd963[_0x04c6('0x1a')]===_0x04c6('0x19');var _0x43596a=_0x3d46a9[_0x04c6('0x1b')];var _0x21674a=_0x5a5a66?0x0:_0x1cd963[_0x04c6('0x18')];var _0x47f400=_0x5a5a66?_0x3d46a9[_0x04c6('0x1b')]:_0x1cd963[_0x04c6('0x18')]+_0x1cd963[_0x04c6('0x1a')];var _0x558b43;if(_0x47f400>=_0x43596a){_0x47f400=_0x43596a;_0x558b43=0xc8;}else{_0x558b43=0xce;}_0x19a26f['status'](_0x558b43);return _0x19a26f['set'](_0x04c6('0x1c'),_0x21674a+'-'+_0x47f400+'/'+_0x43596a)[_0x04c6('0x17')](_0x3d46a9);}return null;};}function patchUpdates(_0x50dd61){return function(_0x5a5e9e){try{jsonpatch[_0x04c6('0x1d')](_0x5a5e9e,_0x50dd61,!![]);}catch(_0x2eed94){return BPromise[_0x04c6('0x1e')](_0x2eed94);}return _0x5a5e9e['save']();};}function saveUpdates(_0x33a0f7,_0x13f2dc){return function(_0x9d41f8){if(_0x9d41f8){return _0x9d41f8['update'](_0x33a0f7)[_0x04c6('0x1f')](function(_0x41e29f){return _0x41e29f;});}return null;};}function removeEntity(_0x562491,_0x54a8b0){return function(_0x4c8d72){if(_0x4c8d72){return _0x4c8d72[_0x04c6('0x20')]()[_0x04c6('0x1f')](function(){_0x562491[_0x04c6('0x16')](0xcc)[_0x04c6('0x21')]();});}};}function handleEntityNotFound(_0x3e1328,_0x52e5f5){return function(_0x562952){if(!_0x562952){_0x3e1328[_0x04c6('0x15')](0x194);}return _0x562952;};}function handleError(_0x2ab1d2,_0x9acfa){_0x9acfa=_0x9acfa||0x1f4;return function(_0x3233d7){logger[_0x04c6('0x22')](_0x3233d7[_0x04c6('0x23')]);if(_0x3233d7['name']){delete _0x3233d7[_0x04c6('0x24')];}_0x2ab1d2[_0x04c6('0x16')](_0x9acfa)['send'](_0x3233d7);};}exports[_0x04c6('0x25')]=function(_0x1cd16a,_0x5f1331){var _0x5c9003={},_0x115d84={},_0x3a6d92={'count':0x0,'rows':[]};var _0x2a191f=_[_0x04c6('0x26')](db[_0x04c6('0x27')][_0x04c6('0x28')],function(_0x49c4ed){return{'name':_0x49c4ed['fieldName'],'type':_0x49c4ed['type'][_0x04c6('0x29')]};});_0x115d84['model']=_[_0x04c6('0x26')](_0x2a191f,_0x04c6('0x24'));_0x115d84['query']=_[_0x04c6('0x2a')](_0x1cd16a[_0x04c6('0x2b')]);_0x115d84[_0x04c6('0x2c')]=_[_0x04c6('0x2d')](_0x115d84['model'],_0x115d84[_0x04c6('0x2b')]);_0x5c9003[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0x115d84[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x30')]));_0x5c9003[_0x04c6('0x2e')]=_0x5c9003[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x5c9003[_0x04c6('0x2e')]:_0x115d84[_0x04c6('0x2f')];if(!_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x32')](_0x04c6('0x33'))){_0x5c9003['limit']=qs[_0x04c6('0x1a')](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x1a')]);_0x5c9003[_0x04c6('0x18')]=qs['offset'](_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x18')]);}_0x5c9003['order']=qs['sort'](_0x1cd16a['query'][_0x04c6('0x34')]);_0x5c9003[_0x04c6('0x35')]=qs['filters'](_[_0x04c6('0x36')](_0x1cd16a['query'],_0x115d84[_0x04c6('0x2c')]),_0x2a191f);if(_0x1cd16a[_0x04c6('0x2b')][_0x04c6('0x37')]){_0x5c9003[_0x04c6('0x35')]=_['merge'](_0x5c9003['where'],{'$or':_[_0x04c6('0x26')](_0x2a191f,function(_0x3a9a3b){if(_0x3a9a3b['type']!==_0x04c6('0x38')){var _0x5ce4b0={};_0x5ce4b0[_0x3a9a3b['name']]={'$like':'%'+_0x1cd16a[_0x04c6('0x2b')]['filter']+'%'};return _0x5ce4b0;}})});}_0x5c9003=_[_0x04c6('0x39')]({},_0x5c9003,_0x1cd16a[_0x04c6('0x3a')]);var _0x59ca18={'where':_0x5c9003[_0x04c6('0x35')]};return db['Integration'][_0x04c6('0x1b')](_0x59ca18)[_0x04c6('0x1f')](function(_0x2d83eb){_0x3a6d92[_0x04c6('0x1b')]=_0x2d83eb;if(_0x1cd16a[_0x04c6('0x2b')]['includeAll']){_0x5c9003[_0x04c6('0x3b')]=[{'all':!![]}];}return db['Integration'][_0x04c6('0x3c')](_0x5c9003);})['then'](function(_0x1f7ead){_0x3a6d92[_0x04c6('0x3d')]=_0x1f7ead;return _0x3a6d92;})[_0x04c6('0x1f')](respondWithFilteredResult(_0x5f1331,_0x5c9003))[_0x04c6('0x3e')](handleError(_0x5f1331,null));};exports[_0x04c6('0x3f')]=function(_0x2cdf34,_0x40477f){var _0x4a3c45={'raw':![],'where':{'id':_0x2cdf34['params']['id']}},_0xdfdc34={};_0xdfdc34[_0x04c6('0x2f')]=_['keys'](db['Integration'][_0x04c6('0x28')]);_0xdfdc34['query']=_[_0x04c6('0x2a')](_0x2cdf34[_0x04c6('0x2b')]);_0xdfdc34[_0x04c6('0x2c')]=_['intersection'](_0xdfdc34[_0x04c6('0x2f')],_0xdfdc34[_0x04c6('0x2b')]);_0x4a3c45[_0x04c6('0x2e')]=_[_0x04c6('0x2d')](_0xdfdc34[_0x04c6('0x2f')],qs[_0x04c6('0x30')](_0x2cdf34[_0x04c6('0x2b')]['fields']));_0x4a3c45['attributes']=_0x4a3c45[_0x04c6('0x2e')][_0x04c6('0x31')]?_0x4a3c45[_0x04c6('0x2e')]:_0xdfdc34['model'];if(_0x2cdf34[_0x04c6('0x2b')][_0x04c6('0x40')]){_0x4a3c45[_0x04c6('0x3b')]=[{'all':!![]}];}_0x4a3c45=_['merge']({},_0x4a3c45,_0x2cdf34['options']);return db['Integration'][_0x04c6('0x41')](_0x4a3c45)[_0x04c6('0x1f')](handleEntityNotFound(_0x40477f,null))['then'](respondWithResult(_0x40477f,null))[_0x04c6('0x3e')](handleError(_0x40477f,null));};exports[_0x04c6('0x42')]=function(_0x2bd045,_0x4ef366){return db[_0x04c6('0x27')][_0x04c6('0x42')](_0x2bd045['body'],{})[_0x04c6('0x1f')](respondWithResult(_0x4ef366,0xc9))[_0x04c6('0x3e')](handleError(_0x4ef366,null));};exports[_0x04c6('0x43')]=function(_0xee2822,_0x4cfde2){if(_0xee2822[_0x04c6('0x44')]['id']){delete _0xee2822[_0x04c6('0x44')]['id'];}return db[_0x04c6('0x27')][_0x04c6('0x41')]({'where':{'id':_0xee2822['params']['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x4cfde2,null))[_0x04c6('0x1f')](saveUpdates(_0xee2822[_0x04c6('0x44')],null))[_0x04c6('0x1f')](respondWithResult(_0x4cfde2,null))['catch'](handleError(_0x4cfde2,null));};exports[_0x04c6('0x20')]=function(_0x42273e,_0x15ec61){return db['Integration'][_0x04c6('0x41')]({'where':{'id':_0x42273e[_0x04c6('0x45')]['id']}})[_0x04c6('0x1f')](handleEntityNotFound(_0x15ec61,null))[_0x04c6('0x1f')](removeEntity(_0x15ec61,null))[_0x04c6('0x3e')](handleError(_0x15ec61,null));};
\ No newline at end of file
+var _0xd943=['mustache','util','path','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','Integration','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','includeAll','include','findAll','catch','show','params','options','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x42ba3a,_0x2cf6e8){var _0x5b4f00=function(_0x10f2b8){while(--_0x10f2b8){_0x42ba3a['push'](_0x42ba3a['shift']());}};_0x5b4f00(++_0x2cf6e8);}(_0xd943,0x15d));var _0x3d94=function(_0x2fb1a8,_0x1cbbe0){_0x2fb1a8=_0x2fb1a8-0x0;var _0x23ecdb=_0xd943[_0x2fb1a8];return _0x23ecdb;};'use strict';var emlformat=require(_0x3d94('0x0'));var rimraf=require(_0x3d94('0x1'));var zipdir=require(_0x3d94('0x2'));var jsonpatch=require(_0x3d94('0x3'));var rp=require('request-promise');var moment=require(_0x3d94('0x4'));var BPromise=require(_0x3d94('0x5'));var Mustache=require(_0x3d94('0x6'));var util=require(_0x3d94('0x7'));var path=require(_0x3d94('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3d94('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3d94('0xa'));var jsforce=require(_0x3d94('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3d94('0xc'));var Papa=require(_0x3d94('0xd'));var Redis=require(_0x3d94('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x3d94('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d94('0x10'));var logger=require(_0x3d94('0x11'))('api');var utils=require(_0x3d94('0x12'));var config=require(_0x3d94('0x13'));var licenseUtil=require(_0x3d94('0x14'));var db=require(_0x3d94('0x15'))['db'];function respondWithStatusCode(_0x15a392,_0x548b89){_0x548b89=_0x548b89||0xcc;return function(_0x96c54b){if(_0x96c54b){return _0x15a392[_0x3d94('0x16')](_0x548b89);}return _0x15a392[_0x3d94('0x17')](_0x548b89)['end']();};}function respondWithResult(_0x24e8b9,_0x29608d){_0x29608d=_0x29608d||0xc8;return function(_0x7d6969){if(_0x7d6969){return _0x24e8b9['status'](_0x29608d)[_0x3d94('0x18')](_0x7d6969);}};}function respondWithFilteredResult(_0x340818,_0x292419){return function(_0x34098e){if(_0x34098e){var _0xaf939a=typeof _0x292419[_0x3d94('0x19')]===_0x3d94('0x1a')&&typeof _0x292419[_0x3d94('0x1b')]==='undefined';var _0x22676a=_0x34098e[_0x3d94('0x1c')];var _0x2acee3=_0xaf939a?0x0:_0x292419[_0x3d94('0x19')];var _0x4afc92=_0xaf939a?_0x34098e[_0x3d94('0x1c')]:_0x292419[_0x3d94('0x19')]+_0x292419['limit'];var _0x9bca24;if(_0x4afc92>=_0x22676a){_0x4afc92=_0x22676a;_0x9bca24=0xc8;}else{_0x9bca24=0xce;}_0x340818['status'](_0x9bca24);return _0x340818[_0x3d94('0x1d')](_0x3d94('0x1e'),_0x2acee3+'-'+_0x4afc92+'/'+_0x22676a)[_0x3d94('0x18')](_0x34098e);}return null;};}function patchUpdates(_0x1e9ec2){return function(_0x35a3cc){try{jsonpatch['apply'](_0x35a3cc,_0x1e9ec2,!![]);}catch(_0x578002){return BPromise[_0x3d94('0x1f')](_0x578002);}return _0x35a3cc[_0x3d94('0x20')]();};}function saveUpdates(_0x9c2f2c,_0x4edee4){return function(_0x30af25){if(_0x30af25){return _0x30af25[_0x3d94('0x21')](_0x9c2f2c)[_0x3d94('0x22')](function(_0x384f76){return _0x384f76;});}return null;};}function removeEntity(_0x395133,_0x4093a4){return function(_0x295493){if(_0x295493){return _0x295493[_0x3d94('0x23')]()[_0x3d94('0x22')](function(){_0x395133[_0x3d94('0x17')](0xcc)[_0x3d94('0x24')]();});}};}function handleEntityNotFound(_0x192839,_0x292976){return function(_0x3496c3){if(!_0x3496c3){_0x192839[_0x3d94('0x16')](0x194);}return _0x3496c3;};}function handleError(_0x5b3b31,_0x123183){_0x123183=_0x123183||0x1f4;return function(_0x558fd2){logger[_0x3d94('0x25')](_0x558fd2[_0x3d94('0x26')]);if(_0x558fd2[_0x3d94('0x27')]){delete _0x558fd2[_0x3d94('0x27')];}_0x5b3b31[_0x3d94('0x17')](_0x123183)[_0x3d94('0x28')](_0x558fd2);};}exports[_0x3d94('0x29')]=function(_0x47d6ab,_0x584c4a){var _0x362642={},_0x4813e1={},_0x4dd410={'count':0x0,'rows':[]};var _0x23d20d=_['map'](db[_0x3d94('0x2a')][_0x3d94('0x2b')],function(_0x32403a){return{'name':_0x32403a['fieldName'],'type':_0x32403a[_0x3d94('0x2c')]['key']};});_0x4813e1[_0x3d94('0x2d')]=_['map'](_0x23d20d,_0x3d94('0x27'));_0x4813e1[_0x3d94('0x2e')]=_[_0x3d94('0x2f')](_0x47d6ab[_0x3d94('0x2e')]);_0x4813e1['filters']=_[_0x3d94('0x30')](_0x4813e1['model'],_0x4813e1[_0x3d94('0x2e')]);_0x362642[_0x3d94('0x31')]=_['intersection'](_0x4813e1['model'],qs[_0x3d94('0x32')](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x32')]));_0x362642['attributes']=_0x362642[_0x3d94('0x31')][_0x3d94('0x33')]?_0x362642['attributes']:_0x4813e1[_0x3d94('0x2d')];if(!_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x34')](_0x3d94('0x35'))){_0x362642[_0x3d94('0x1b')]=qs['limit'](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x1b')]);_0x362642[_0x3d94('0x19')]=qs[_0x3d94('0x19')](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x19')]);}_0x362642['order']=qs['sort'](_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x36')]);_0x362642[_0x3d94('0x37')]=qs[_0x3d94('0x38')](_[_0x3d94('0x39')](_0x47d6ab[_0x3d94('0x2e')],_0x4813e1[_0x3d94('0x38')]),_0x23d20d);if(_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3a')]){_0x362642[_0x3d94('0x37')]=_['merge'](_0x362642[_0x3d94('0x37')],{'$or':_[_0x3d94('0x3b')](_0x23d20d,function(_0x361fbb){if(_0x361fbb[_0x3d94('0x2c')]!=='VIRTUAL'){var _0xcf7a73={};_0xcf7a73[_0x361fbb[_0x3d94('0x27')]]={'$like':'%'+_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3a')]+'%'};return _0xcf7a73;}})});}_0x362642=_[_0x3d94('0x3c')]({},_0x362642,_0x47d6ab['options']);var _0x217e5e={'where':_0x362642[_0x3d94('0x37')]};return db[_0x3d94('0x2a')]['count'](_0x217e5e)['then'](function(_0x4d8a8f){_0x4dd410['count']=_0x4d8a8f;if(_0x47d6ab[_0x3d94('0x2e')][_0x3d94('0x3d')]){_0x362642[_0x3d94('0x3e')]=[{'all':!![]}];}return db[_0x3d94('0x2a')][_0x3d94('0x3f')](_0x362642);})[_0x3d94('0x22')](function(_0x3a3898){_0x4dd410['rows']=_0x3a3898;return _0x4dd410;})['then'](respondWithFilteredResult(_0x584c4a,_0x362642))[_0x3d94('0x40')](handleError(_0x584c4a,null));};exports[_0x3d94('0x41')]=function(_0x512cef,_0x2d0aa2){var _0x4af4b6={'raw':![],'where':{'id':_0x512cef[_0x3d94('0x42')]['id']}},_0x1361fb={};_0x1361fb[_0x3d94('0x2d')]=_[_0x3d94('0x2f')](db[_0x3d94('0x2a')]['rawAttributes']);_0x1361fb[_0x3d94('0x2e')]=_[_0x3d94('0x2f')](_0x512cef[_0x3d94('0x2e')]);_0x1361fb['filters']=_[_0x3d94('0x30')](_0x1361fb['model'],_0x1361fb['query']);_0x4af4b6[_0x3d94('0x31')]=_[_0x3d94('0x30')](_0x1361fb[_0x3d94('0x2d')],qs[_0x3d94('0x32')](_0x512cef['query'][_0x3d94('0x32')]));_0x4af4b6['attributes']=_0x4af4b6[_0x3d94('0x31')][_0x3d94('0x33')]?_0x4af4b6[_0x3d94('0x31')]:_0x1361fb[_0x3d94('0x2d')];if(_0x512cef[_0x3d94('0x2e')][_0x3d94('0x3d')]){_0x4af4b6[_0x3d94('0x3e')]=[{'all':!![]}];}_0x4af4b6=_['merge']({},_0x4af4b6,_0x512cef[_0x3d94('0x43')]);return db[_0x3d94('0x2a')]['find'](_0x4af4b6)['then'](handleEntityNotFound(_0x2d0aa2,null))[_0x3d94('0x22')](respondWithResult(_0x2d0aa2,null))[_0x3d94('0x40')](handleError(_0x2d0aa2,null));};exports['create']=function(_0x3c8571,_0x13fda9){return db[_0x3d94('0x2a')][_0x3d94('0x44')](_0x3c8571[_0x3d94('0x45')],{})[_0x3d94('0x22')](respondWithResult(_0x13fda9,0xc9))[_0x3d94('0x40')](handleError(_0x13fda9,null));};exports[_0x3d94('0x21')]=function(_0x60279f,_0x2429bc){if(_0x60279f[_0x3d94('0x45')]['id']){delete _0x60279f[_0x3d94('0x45')]['id'];}return db[_0x3d94('0x2a')][_0x3d94('0x46')]({'where':{'id':_0x60279f[_0x3d94('0x42')]['id']}})['then'](handleEntityNotFound(_0x2429bc,null))[_0x3d94('0x22')](saveUpdates(_0x60279f[_0x3d94('0x45')],null))[_0x3d94('0x22')](respondWithResult(_0x2429bc,null))[_0x3d94('0x40')](handleError(_0x2429bc,null));};exports[_0x3d94('0x23')]=function(_0x3ce0be,_0x129783){return db[_0x3d94('0x2a')][_0x3d94('0x46')]({'where':{'id':_0x3ce0be['params']['id']}})[_0x3d94('0x22')](handleEntityNotFound(_0x129783,null))['then'](removeEntity(_0x129783,null))[_0x3d94('0x40')](handleError(_0x129783,null));};
\ No newline at end of file
index 6d9130c..b7a1b3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x355c=['integrations','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./integration.attributes','exports','define','Integration'];(function(_0x27fedb,_0x31c693){var _0x58ab78=function(_0x532732){while(--_0x532732){_0x27fedb['push'](_0x27fedb['shift']());}};_0x58ab78(++_0x31c693);}(_0x355c,0xb5));var _0xc355=function(_0x1faa61,_0x1bd7e2){_0x1faa61=_0x1faa61-0x0;var _0x3f0e58=_0x355c[_0x1faa61];return _0x3f0e58;};'use strict';var _=require(_0xc355('0x0'));var util=require('util');var logger=require(_0xc355('0x1'))('api');var moment=require(_0xc355('0x2'));var BPromise=require(_0xc355('0x3'));var rp=require(_0xc355('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc355('0x5'));var config=require(_0xc355('0x6'));var attributes=require(_0xc355('0x7'));module[_0xc355('0x8')]=function(_0x304ebe,_0x4fdaf8){return _0x304ebe[_0xc355('0x9')](_0xc355('0xa'),attributes,{'tableName':_0xc355('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x27db=['api','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes','exports','define','Integration','integrations','lodash','../../config/logger'];(function(_0x2fff52,_0x1580ac){var _0x4fef52=function(_0x422782){while(--_0x422782){_0x2fff52['push'](_0x2fff52['shift']());}};_0x4fef52(++_0x1580ac);}(_0x27db,0x1ec));var _0xb27d=function(_0x121886,_0x8cd8e5){_0x121886=_0x121886-0x0;var _0x20ca01=_0x27db[_0x121886];return _0x20ca01;};'use strict';var _=require(_0xb27d('0x0'));var util=require('util');var logger=require(_0xb27d('0x1'))(_0xb27d('0x2'));var moment=require(_0xb27d('0x3'));var BPromise=require(_0xb27d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb27d('0x5'));var rimraf=require(_0xb27d('0x6'));var config=require(_0xb27d('0x7'));var attributes=require(_0xb27d('0x8'));module[_0xb27d('0x9')]=function(_0x52ca02,_0x50386e){return _0x52ca02[_0xb27d('0xa')](_0xb27d('0xb'),attributes,{'tableName':_0xb27d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a01265..6d2bfcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x5a27e8,_0x492a2f){var _0x4e38f7=function(_0x2a4048){while(--_0x2a4048){_0x5a27e8['push'](_0x5a27e8['shift']());}};_0x4e38f7(++_0x492a2f);}(_0x524e,0x15e));var _0xe524=function(_0x33a345,_0x11c58b){_0x33a345=_0x33a345-0x0;var _0x242b1d=_0x524e[_0x33a345];return _0x242b1d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('Integration,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('Integration,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('Integration,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
+var _0x0b0e=['Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','debug'];(function(_0x2e7a43,_0x3b3df4){var _0x52e9e1=function(_0x2c08cf){while(--_0x2c08cf){_0x2e7a43['push'](_0x2e7a43['shift']());}};_0x52e9e1(++_0x3b3df4);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0x0b0e[_0x4c440b];return _0x2d48cf;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x219b1c,_0x5cf9cc,_0x50be7f){return new BPromise(function(_0x11effc,_0x435060){return client[_0xe0b0('0xc')](_0x219b1c,_0x50be7f)[_0xe0b0('0xd')](function(_0x4c24f9){logger[_0xe0b0('0xe')](_0xe0b0('0xf'),_0x5cf9cc,'request\x20sent');logger[_0xe0b0('0x10')](_0xe0b0('0x11'),_0x5cf9cc,'request\x20sent',JSON[_0xe0b0('0x12')](_0x4c24f9));if(_0x4c24f9[_0xe0b0('0x13')]){if(_0x4c24f9[_0xe0b0('0x13')]['code']===0x1f4){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x435060(_0x4c24f9[_0xe0b0('0x13')]['message']);}logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x11effc(_0x4c24f9[_0xe0b0('0x13')]['message']);}else{logger[_0xe0b0('0xe')]('Integration,\x20%s,\x20%s',_0x5cf9cc,_0xe0b0('0x15'));_0x11effc(_0x4c24f9[_0xe0b0('0x16')]['message']);}})[_0xe0b0('0x17')](function(_0x4a4cc0){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4a4cc0);_0x435060(_0x4a4cc0);});});}
\ No newline at end of file
index 19ea2d7..b580d1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','create','put','update'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xdb28,0x106));var _0x8db2=function(_0x3c3a20,_0x3c2b13){_0x3c3a20=_0x3c3a20-0x0;var _0xb909f=_0xdb28[_0x3c3a20];return _0xb909f;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./integrationReport.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['post']('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0xf')]);router[_0x8db2('0x10')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x11')]);router['delete'](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x12')]);module[_0x8db2('0x13')]=router;
\ No newline at end of file
+var _0x2ef3=['express','Router','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x4f00c8,_0x334929){var _0xfdb78f=function(_0x1ab196){while(--_0x1ab196){_0x4f00c8['push'](_0x4f00c8['shift']());}};_0xfdb78f(++_0x334929);}(_0x2ef3,0xba));var _0x32ef=function(_0x310c4e,_0xbd4533){_0x310c4e=_0x310c4e-0x0;var _0x26cd8d=_0x2ef3[_0x310c4e];return _0x26cd8d;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0xf')]('/',auth[_0x32ef('0xb')](),controller['create']);router['put'](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x10')]);router[_0x32ef('0x11')]('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x12')]=router;
\ No newline at end of file
index b9c8ea2..7511fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf82f=['TEXT','SENT','SENDING','sequelize','STRING','INTEGER','DATE','BOOLEAN'];(function(_0x52ce8e,_0x4dacf5){var _0x489cf9=function(_0x374ab2){while(--_0x374ab2){_0x52ce8e['push'](_0x52ce8e['shift']());}};_0x489cf9(++_0x4dacf5);}(_0xf82f,0xd3));var _0xff82=function(_0x320627,_0x425b64){_0x320627=_0x320627-0x0;var _0x185d38=_0xf82f[_0x320627];return _0x185d38;};'use strict';var Sequelize=require(_0xff82('0x0'));module['exports']={'integration':{'type':Sequelize[_0xff82('0x1')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0xff82('0x1')]},'integrationId':{'type':Sequelize[_0xff82('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xff82('0x1')]},'calleridnum':{'type':Sequelize[_0xff82('0x1')]},'calleridname':{'type':Sequelize[_0xff82('0x1')]},'queue':{'type':Sequelize[_0xff82('0x1')]},'interface':{'type':Sequelize[_0xff82('0x1')]},'membername':{'type':Sequelize[_0xff82('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xff82('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xff82('0x2')]},'agentacw':{'type':Sequelize[_0xff82('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xff82('0x2')]},'reason':{'type':Sequelize[_0xff82('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xff82('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xff82('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xff82('0x3')]},'lastevent':{'type':Sequelize[_0xff82('0x1')]},'channel':{'type':Sequelize[_0xff82('0x1')]},'channelstate':{'type':Sequelize[_0xff82('0x2')]},'channelstatedesc':{'type':Sequelize[_0xff82('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xff82('0x1')]},'accountcode':{'type':Sequelize[_0xff82('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xff82('0x1')]},'priority':{'type':Sequelize[_0xff82('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xff82('0x2')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xff82('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xff82('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xff82('0x1')]},'destlanguage':{'type':Sequelize[_0xff82('0x1')]},'destaccountcode':{'type':Sequelize[_0xff82('0x1')]},'destcontext':{'type':Sequelize[_0xff82('0x1')]},'destexten':{'type':Sequelize[_0xff82('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xff82('0x1')]},'messageId':{'type':Sequelize[_0xff82('0x1')]},'inReplyTo':{'type':Sequelize[_0xff82('0x1')]},'subject':{'type':Sequelize[_0xff82('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xff82('0x1')]},'cc':{'type':Sequelize[_0xff82('0x1')]},'attachment':{'type':Sequelize[_0xff82('0x5')]},'html':{'type':Sequelize[_0xff82('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize['ENUM'](_0xff82('0x6'),_0xff82('0x7'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0xff82('0x1')]},'app':{'type':Sequelize[_0xff82('0x1')]},'appdata':{'type':Sequelize[_0xff82('0x1')]},'projectId':{'type':Sequelize[_0xff82('0x2')]}};
\ No newline at end of file
+var _0xbc57=['sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','FAILED'];(function(_0x1bfecc,_0x5edcae){var _0x121a72=function(_0x4e31c9){while(--_0x4e31c9){_0x1bfecc['push'](_0x1bfecc['shift']());}};_0x121a72(++_0x5edcae);}(_0xbc57,0xd2));var _0x7bc5=function(_0x1f8cea,_0x3f0883){_0x1f8cea=_0x1f8cea-0x0;var _0x5c9636=_0xbc57[_0x1f8cea];return _0x5c9636;};'use strict';var Sequelize=require(_0x7bc5('0x0'));module[_0x7bc5('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x7bc5('0x2')]},'ticketId':{'type':Sequelize[_0x7bc5('0x2')]},'integrationId':{'type':Sequelize[_0x7bc5('0x3')]},'contacts':{'type':Sequelize[_0x7bc5('0x2')]},'uniqueid':{'type':Sequelize[_0x7bc5('0x2')]},'calleridnum':{'type':Sequelize[_0x7bc5('0x2')]},'calleridname':{'type':Sequelize[_0x7bc5('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x7bc5('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x7bc5('0x4')]},'holdtime':{'type':Sequelize[_0x7bc5('0x3')]},'agentcomplete':{'type':Sequelize[_0x7bc5('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x7bc5('0x4')]},'talktime':{'type':Sequelize[_0x7bc5('0x3')]},'agentacw':{'type':Sequelize[_0x7bc5('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x7bc5('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x7bc5('0x4')]},'agentdump':{'type':Sequelize[_0x7bc5('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x7bc5('0x4')]},'lastevent':{'type':Sequelize[_0x7bc5('0x2')]},'channel':{'type':Sequelize[_0x7bc5('0x2')]},'channelstate':{'type':Sequelize[_0x7bc5('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x7bc5('0x2')]},'language':{'type':Sequelize[_0x7bc5('0x2')]},'accountcode':{'type':Sequelize[_0x7bc5('0x2')]},'context':{'type':Sequelize[_0x7bc5('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x7bc5('0x2')]},'destchannel':{'type':Sequelize[_0x7bc5('0x2')]},'destchannelstate':{'type':Sequelize[_0x7bc5('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x7bc5('0x2')]},'destcalleridnum':{'type':Sequelize[_0x7bc5('0x2')]},'destcalleridname':{'type':Sequelize[_0x7bc5('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x7bc5('0x2')]},'destlanguage':{'type':Sequelize[_0x7bc5('0x2')]},'destaccountcode':{'type':Sequelize[_0x7bc5('0x2')]},'destcontext':{'type':Sequelize[_0x7bc5('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x7bc5('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x7bc5('0x2')]},'inReplyTo':{'type':Sequelize[_0x7bc5('0x2')]},'subject':{'type':Sequelize[_0x7bc5('0x2')]},'from':{'type':Sequelize[_0x7bc5('0x2')]},'to':{'type':Sequelize[_0x7bc5('0x2')]},'cc':{'type':Sequelize[_0x7bc5('0x2')]},'attachment':{'type':Sequelize[_0x7bc5('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x7bc5('0x6')]},'status':{'type':Sequelize[_0x7bc5('0x7')](_0x7bc5('0x8'),'SENDING','RECEIVED',_0x7bc5('0x9'))},'url':{'type':Sequelize[_0x7bc5('0x2')]},'app':{'type':Sequelize[_0x7bc5('0x2')]},'appdata':{'type':Sequelize[_0x7bc5('0x2')]},'projectId':{'type':Sequelize[_0x7bc5('0x3')]}};
\ No newline at end of file
index 78f2edc..ccf0029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92bc=['desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','offset','Content-Range','apply','reject','update','then','sendStatus','error','name','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','order','sort','where','filter','merge','VIRTUAL','IntegrationReport','includeAll','include','findAll','rows','catch','params','create','body','find','destroy','describe','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x3de931,_0x4cef4d){var _0x36f5f=function(_0x319034){while(--_0x319034){_0x3de931['push'](_0x3de931['shift']());}};_0x36f5f(++_0x4cef4d);}(_0x92bc,0x79));var _0xc92b=function(_0x50eda8,_0x297d2d){_0x50eda8=_0x50eda8-0x0;var _0x56f172=_0x92bc[_0x50eda8];return _0x56f172;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc92b('0x0'));var rp=require(_0xc92b('0x1'));var moment=require('moment');var BPromise=require(_0xc92b('0x2'));var Mustache=require(_0xc92b('0x3'));var util=require(_0xc92b('0x4'));var path=require(_0xc92b('0x5'));var sox=require(_0xc92b('0x6'));var csv=require(_0xc92b('0x7'));var ejs=require(_0xc92b('0x8'));var fs=require('fs');var fs_extra=require(_0xc92b('0x9'));var _=require(_0xc92b('0xa'));var squel=require('squel');var crypto=require(_0xc92b('0xb'));var jsforce=require(_0xc92b('0xc'));var deskjs=require(_0xc92b('0xd'));var toCsv=require(_0xc92b('0x7'));var querystring=require(_0xc92b('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc92b('0xf'));var hardwareService=require(_0xc92b('0x10'));var logger=require(_0xc92b('0x11'))(_0xc92b('0x12'));var utils=require(_0xc92b('0x13'));var config=require(_0xc92b('0x14'));var licenseUtil=require(_0xc92b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a63cd,_0x32eef5){_0x32eef5=_0x32eef5||0xcc;return function(_0x1c6127){if(_0x1c6127){return _0x4a63cd['sendStatus'](_0x32eef5);}return _0x4a63cd[_0xc92b('0x16')](_0x32eef5)[_0xc92b('0x17')]();};}function respondWithResult(_0x2974a5,_0x2a1538){_0x2a1538=_0x2a1538||0xc8;return function(_0x3b8b84){if(_0x3b8b84){return _0x2974a5[_0xc92b('0x16')](_0x2a1538)[_0xc92b('0x18')](_0x3b8b84);}};}function respondWithFilteredResult(_0x235b9d,_0x5a0681){return function(_0x20a601){if(_0x20a601){var _0x138f71=typeof _0x5a0681['offset']===_0xc92b('0x19')&&typeof _0x5a0681[_0xc92b('0x1a')]===_0xc92b('0x19');var _0x1752e6=_0x20a601['count'];var _0x5805fa=_0x138f71?0x0:_0x5a0681[_0xc92b('0x1b')];var _0x237754=_0x138f71?_0x20a601['count']:_0x5a0681[_0xc92b('0x1b')]+_0x5a0681[_0xc92b('0x1a')];var _0xb1164d;if(_0x237754>=_0x1752e6){_0x237754=_0x1752e6;_0xb1164d=0xc8;}else{_0xb1164d=0xce;}_0x235b9d[_0xc92b('0x16')](_0xb1164d);return _0x235b9d['set'](_0xc92b('0x1c'),_0x5805fa+'-'+_0x237754+'/'+_0x1752e6)[_0xc92b('0x18')](_0x20a601);}return null;};}function patchUpdates(_0x2769c0){return function(_0x4399f9){try{jsonpatch[_0xc92b('0x1d')](_0x4399f9,_0x2769c0,!![]);}catch(_0x23201a){return BPromise[_0xc92b('0x1e')](_0x23201a);}return _0x4399f9['save']();};}function saveUpdates(_0x3d8db5,_0x34b330){return function(_0x3ca174){if(_0x3ca174){return _0x3ca174[_0xc92b('0x1f')](_0x3d8db5)[_0xc92b('0x20')](function(_0x1b3443){return _0x1b3443;});}return null;};}function removeEntity(_0x3c5e28,_0x5e8e4b){return function(_0x44a84d){if(_0x44a84d){return _0x44a84d['destroy']()['then'](function(){_0x3c5e28[_0xc92b('0x16')](0xcc)[_0xc92b('0x17')]();});}};}function handleEntityNotFound(_0xfa9d24,_0x4f40ae){return function(_0xf0215d){if(!_0xf0215d){_0xfa9d24[_0xc92b('0x21')](0x194);}return _0xf0215d;};}function handleError(_0x13e53a,_0x47c462){_0x47c462=_0x47c462||0x1f4;return function(_0x390914){logger[_0xc92b('0x22')](_0x390914['stack']);if(_0x390914[_0xc92b('0x23')]){delete _0x390914[_0xc92b('0x23')];}_0x13e53a[_0xc92b('0x16')](_0x47c462)['send'](_0x390914);};}exports[_0xc92b('0x24')]=function(_0x179cbe,_0x2d58ab){var _0x4a2e66={},_0x4bea5d={},_0xcce688={'count':0x0,'rows':[]};var _0x5e8333=_[_0xc92b('0x25')](db['IntegrationReport'][_0xc92b('0x26')],function(_0x28f16b){return{'name':_0x28f16b[_0xc92b('0x27')],'type':_0x28f16b[_0xc92b('0x28')]['key']};});_0x4bea5d['model']=_[_0xc92b('0x25')](_0x5e8333,_0xc92b('0x23'));_0x4bea5d[_0xc92b('0x29')]=_[_0xc92b('0x2a')](_0x179cbe[_0xc92b('0x29')]);_0x4bea5d[_0xc92b('0x2b')]=_[_0xc92b('0x2c')](_0x4bea5d['model'],_0x4bea5d[_0xc92b('0x29')]);_0x4a2e66[_0xc92b('0x2d')]=_[_0xc92b('0x2c')](_0x4bea5d[_0xc92b('0x2e')],qs[_0xc92b('0x2f')](_0x179cbe[_0xc92b('0x29')]['fields']));_0x4a2e66[_0xc92b('0x2d')]=_0x4a2e66[_0xc92b('0x2d')][_0xc92b('0x30')]?_0x4a2e66[_0xc92b('0x2d')]:_0x4bea5d[_0xc92b('0x2e')];if(!_0x179cbe[_0xc92b('0x29')]['hasOwnProperty']('nolimit')){_0x4a2e66[_0xc92b('0x1a')]=qs[_0xc92b('0x1a')](_0x179cbe[_0xc92b('0x29')]['limit']);_0x4a2e66[_0xc92b('0x1b')]=qs[_0xc92b('0x1b')](_0x179cbe[_0xc92b('0x29')][_0xc92b('0x1b')]);}_0x4a2e66[_0xc92b('0x31')]=qs[_0xc92b('0x32')](_0x179cbe['query'][_0xc92b('0x32')]);_0x4a2e66[_0xc92b('0x33')]=qs[_0xc92b('0x2b')](_['pick'](_0x179cbe[_0xc92b('0x29')],_0x4bea5d[_0xc92b('0x2b')]),_0x5e8333);if(_0x179cbe[_0xc92b('0x29')][_0xc92b('0x34')]){_0x4a2e66['where']=_[_0xc92b('0x35')](_0x4a2e66[_0xc92b('0x33')],{'$or':_['map'](_0x5e8333,function(_0x1e4c4c){if(_0x1e4c4c[_0xc92b('0x28')]!==_0xc92b('0x36')){var _0x5c6f45={};_0x5c6f45[_0x1e4c4c[_0xc92b('0x23')]]={'$like':'%'+_0x179cbe[_0xc92b('0x29')][_0xc92b('0x34')]+'%'};return _0x5c6f45;}})});}_0x4a2e66=_[_0xc92b('0x35')]({},_0x4a2e66,_0x179cbe['options']);var _0x357d32={'where':_0x4a2e66[_0xc92b('0x33')]};return db[_0xc92b('0x37')]['count'](_0x357d32)['then'](function(_0x406690){_0xcce688['count']=_0x406690;if(_0x179cbe['query'][_0xc92b('0x38')]){_0x4a2e66[_0xc92b('0x39')]=[{'all':!![]}];}return db['IntegrationReport'][_0xc92b('0x3a')](_0x4a2e66);})['then'](function(_0x206a56){_0xcce688[_0xc92b('0x3b')]=_0x206a56;return _0xcce688;})[_0xc92b('0x20')](respondWithFilteredResult(_0x2d58ab,_0x4a2e66))[_0xc92b('0x3c')](handleError(_0x2d58ab,null));};exports['show']=function(_0x4e654d,_0x2ac150){var _0x19bd04={'raw':![],'where':{'id':_0x4e654d[_0xc92b('0x3d')]['id']}},_0x15490a={};_0x15490a[_0xc92b('0x2e')]=_[_0xc92b('0x2a')](db[_0xc92b('0x37')][_0xc92b('0x26')]);_0x15490a[_0xc92b('0x29')]=_[_0xc92b('0x2a')](_0x4e654d[_0xc92b('0x29')]);_0x15490a['filters']=_['intersection'](_0x15490a[_0xc92b('0x2e')],_0x15490a[_0xc92b('0x29')]);_0x19bd04[_0xc92b('0x2d')]=_[_0xc92b('0x2c')](_0x15490a['model'],qs[_0xc92b('0x2f')](_0x4e654d['query']['fields']));_0x19bd04[_0xc92b('0x2d')]=_0x19bd04[_0xc92b('0x2d')][_0xc92b('0x30')]?_0x19bd04[_0xc92b('0x2d')]:_0x15490a[_0xc92b('0x2e')];if(_0x4e654d[_0xc92b('0x29')][_0xc92b('0x38')]){_0x19bd04[_0xc92b('0x39')]=[{'all':!![]}];}_0x19bd04=_['merge']({},_0x19bd04,_0x4e654d['options']);return db['IntegrationReport']['find'](_0x19bd04)['then'](handleEntityNotFound(_0x2ac150,null))[_0xc92b('0x20')](respondWithResult(_0x2ac150,null))[_0xc92b('0x3c')](handleError(_0x2ac150,null));};exports[_0xc92b('0x3e')]=function(_0x3b0ef3,_0x883685){return db[_0xc92b('0x37')]['create'](_0x3b0ef3['body'],{})[_0xc92b('0x20')](respondWithResult(_0x883685,0xc9))[_0xc92b('0x3c')](handleError(_0x883685,null));};exports[_0xc92b('0x1f')]=function(_0xe707ec,_0x45ea06){if(_0xe707ec[_0xc92b('0x3f')]['id']){delete _0xe707ec[_0xc92b('0x3f')]['id'];}return db[_0xc92b('0x37')][_0xc92b('0x40')]({'where':{'id':_0xe707ec[_0xc92b('0x3d')]['id']}})[_0xc92b('0x20')](handleEntityNotFound(_0x45ea06,null))[_0xc92b('0x20')](saveUpdates(_0xe707ec[_0xc92b('0x3f')],null))[_0xc92b('0x20')](respondWithResult(_0x45ea06,null))[_0xc92b('0x3c')](handleError(_0x45ea06,null));};exports[_0xc92b('0x41')]=function(_0x593f5f,_0x3c1af5){return db[_0xc92b('0x37')][_0xc92b('0x40')]({'where':{'id':_0x593f5f['params']['id']}})['then'](handleEntityNotFound(_0x3c1af5,null))[_0xc92b('0x20')](removeEntity(_0x3c1af5,null))['catch'](handleError(_0x3c1af5,null));};exports[_0xc92b('0x42')]=function(_0x4d59c1,_0x41189d){return db['IntegrationReport'][_0xc92b('0x42')]()[_0xc92b('0x20')](respondWithResult(_0x41189d,null))[_0xc92b('0x3c')](handleError(_0x41189d,null));};
\ No newline at end of file
+var _0x74a2=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','then','stack','name','index','map','IntegrationReport','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','show','find','catch','create','update','body','params','describe','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x74a2,0x1af));var _0x274a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x74a2[_0x53ccf2];return _0x5a2964;};'use strict';var emlformat=require(_0x274a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x274a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x274a('0x2'));var BPromise=require(_0x274a('0x3'));var Mustache=require(_0x274a('0x4'));var util=require('util');var path=require(_0x274a('0x5'));var sox=require(_0x274a('0x6'));var csv=require(_0x274a('0x7'));var ejs=require(_0x274a('0x8'));var fs=require('fs');var fs_extra=require(_0x274a('0x9'));var _=require(_0x274a('0xa'));var squel=require(_0x274a('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x274a('0xc'));var toCsv=require(_0x274a('0x7'));var querystring=require(_0x274a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x274a('0xe'));var qs=require(_0x274a('0xf'));var as=require(_0x274a('0x10'));var hardwareService=require(_0x274a('0x11'));var logger=require(_0x274a('0x12'))('api');var utils=require(_0x274a('0x13'));var config=require(_0x274a('0x14'));var licenseUtil=require(_0x274a('0x15'));var db=require(_0x274a('0x16'))['db'];function respondWithStatusCode(_0x55bac5,_0x56ce02){_0x56ce02=_0x56ce02||0xcc;return function(_0x4931ed){if(_0x4931ed){return _0x55bac5[_0x274a('0x17')](_0x56ce02);}return _0x55bac5[_0x274a('0x18')](_0x56ce02)[_0x274a('0x19')]();};}function respondWithResult(_0x42a86b,_0x836009){_0x836009=_0x836009||0xc8;return function(_0x359237){if(_0x359237){return _0x42a86b[_0x274a('0x18')](_0x836009)[_0x274a('0x1a')](_0x359237);}};}function respondWithFilteredResult(_0x1369dd,_0xde9522){return function(_0x2557a8){if(_0x2557a8){var _0x2e9d91=typeof _0xde9522[_0x274a('0x1b')]===_0x274a('0x1c')&&typeof _0xde9522[_0x274a('0x1d')]===_0x274a('0x1c');var _0x4b5e47=_0x2557a8[_0x274a('0x1e')];var _0xab19cd=_0x2e9d91?0x0:_0xde9522[_0x274a('0x1b')];var _0x4412e=_0x2e9d91?_0x2557a8['count']:_0xde9522[_0x274a('0x1b')]+_0xde9522[_0x274a('0x1d')];var _0x2027c5;if(_0x4412e>=_0x4b5e47){_0x4412e=_0x4b5e47;_0x2027c5=0xc8;}else{_0x2027c5=0xce;}_0x1369dd[_0x274a('0x18')](_0x2027c5);return _0x1369dd[_0x274a('0x1f')](_0x274a('0x20'),_0xab19cd+'-'+_0x4412e+'/'+_0x4b5e47)[_0x274a('0x1a')](_0x2557a8);}return null;};}function patchUpdates(_0x353288){return function(_0x4130cb){try{jsonpatch[_0x274a('0x21')](_0x4130cb,_0x353288,!![]);}catch(_0x1974e6){return BPromise[_0x274a('0x22')](_0x1974e6);}return _0x4130cb['save']();};}function saveUpdates(_0x426986,_0x5856c6){return function(_0x54db7e){if(_0x54db7e){return _0x54db7e['update'](_0x426986)['then'](function(_0x1b9542){return _0x1b9542;});}return null;};}function removeEntity(_0x189edc,_0x378fa8){return function(_0x198085){if(_0x198085){return _0x198085[_0x274a('0x23')]()[_0x274a('0x24')](function(){_0x189edc[_0x274a('0x18')](0xcc)[_0x274a('0x19')]();});}};}function handleEntityNotFound(_0x14b011,_0x3f21a7){return function(_0x27b1ab){if(!_0x27b1ab){_0x14b011[_0x274a('0x17')](0x194);}return _0x27b1ab;};}function handleError(_0x439b4e,_0x204618){_0x204618=_0x204618||0x1f4;return function(_0x4c25c1){logger['error'](_0x4c25c1[_0x274a('0x25')]);if(_0x4c25c1[_0x274a('0x26')]){delete _0x4c25c1[_0x274a('0x26')];}_0x439b4e[_0x274a('0x18')](_0x204618)['send'](_0x4c25c1);};}exports[_0x274a('0x27')]=function(_0x1ffbdc,_0x436870){var _0x42288b={},_0x46a655={},_0x3a144e={'count':0x0,'rows':[]};var _0x51a08f=_[_0x274a('0x28')](db[_0x274a('0x29')][_0x274a('0x2a')],function(_0x577985){return{'name':_0x577985['fieldName'],'type':_0x577985['type'][_0x274a('0x2b')]};});_0x46a655['model']=_[_0x274a('0x28')](_0x51a08f,'name');_0x46a655[_0x274a('0x2c')]=_[_0x274a('0x2d')](_0x1ffbdc[_0x274a('0x2c')]);_0x46a655[_0x274a('0x2e')]=_[_0x274a('0x2f')](_0x46a655['model'],_0x46a655[_0x274a('0x2c')]);_0x42288b[_0x274a('0x30')]=_[_0x274a('0x2f')](_0x46a655[_0x274a('0x31')],qs[_0x274a('0x32')](_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x32')]));_0x42288b[_0x274a('0x30')]=_0x42288b[_0x274a('0x30')][_0x274a('0x33')]?_0x42288b[_0x274a('0x30')]:_0x46a655['model'];if(!_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x34')](_0x274a('0x35'))){_0x42288b[_0x274a('0x1d')]=qs['limit'](_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x1d')]);_0x42288b['offset']=qs[_0x274a('0x1b')](_0x1ffbdc['query'][_0x274a('0x1b')]);}_0x42288b[_0x274a('0x36')]=qs[_0x274a('0x37')](_0x1ffbdc['query'][_0x274a('0x37')]);_0x42288b['where']=qs[_0x274a('0x2e')](_[_0x274a('0x38')](_0x1ffbdc[_0x274a('0x2c')],_0x46a655[_0x274a('0x2e')]),_0x51a08f);if(_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x39')]){_0x42288b['where']=_[_0x274a('0x3a')](_0x42288b[_0x274a('0x3b')],{'$or':_[_0x274a('0x28')](_0x51a08f,function(_0x551fb1){if(_0x551fb1[_0x274a('0x3c')]!==_0x274a('0x3d')){var _0x4c9045={};_0x4c9045[_0x551fb1[_0x274a('0x26')]]={'$like':'%'+_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x39')]+'%'};return _0x4c9045;}})});}_0x42288b=_[_0x274a('0x3a')]({},_0x42288b,_0x1ffbdc[_0x274a('0x3e')]);var _0x5f0d13={'where':_0x42288b[_0x274a('0x3b')]};return db[_0x274a('0x29')][_0x274a('0x1e')](_0x5f0d13)[_0x274a('0x24')](function(_0x3bcc57){_0x3a144e['count']=_0x3bcc57;if(_0x1ffbdc[_0x274a('0x2c')][_0x274a('0x3f')]){_0x42288b[_0x274a('0x40')]=[{'all':!![]}];}return db[_0x274a('0x29')][_0x274a('0x41')](_0x42288b);})['then'](function(_0x281d2e){_0x3a144e[_0x274a('0x42')]=_0x281d2e;return _0x3a144e;})[_0x274a('0x24')](respondWithFilteredResult(_0x436870,_0x42288b))['catch'](handleError(_0x436870,null));};exports[_0x274a('0x43')]=function(_0x1361f6,_0x1e1cf5){var _0x1517ed={'raw':![],'where':{'id':_0x1361f6['params']['id']}},_0x4d70c2={};_0x4d70c2[_0x274a('0x31')]=_[_0x274a('0x2d')](db[_0x274a('0x29')]['rawAttributes']);_0x4d70c2[_0x274a('0x2c')]=_[_0x274a('0x2d')](_0x1361f6['query']);_0x4d70c2[_0x274a('0x2e')]=_[_0x274a('0x2f')](_0x4d70c2[_0x274a('0x31')],_0x4d70c2[_0x274a('0x2c')]);_0x1517ed[_0x274a('0x30')]=_[_0x274a('0x2f')](_0x4d70c2[_0x274a('0x31')],qs[_0x274a('0x32')](_0x1361f6[_0x274a('0x2c')]['fields']));_0x1517ed[_0x274a('0x30')]=_0x1517ed[_0x274a('0x30')][_0x274a('0x33')]?_0x1517ed[_0x274a('0x30')]:_0x4d70c2[_0x274a('0x31')];if(_0x1361f6['query'][_0x274a('0x3f')]){_0x1517ed[_0x274a('0x40')]=[{'all':!![]}];}_0x1517ed=_['merge']({},_0x1517ed,_0x1361f6[_0x274a('0x3e')]);return db[_0x274a('0x29')][_0x274a('0x44')](_0x1517ed)['then'](handleEntityNotFound(_0x1e1cf5,null))['then'](respondWithResult(_0x1e1cf5,null))[_0x274a('0x45')](handleError(_0x1e1cf5,null));};exports[_0x274a('0x46')]=function(_0x31de82,_0x24cbe2){return db[_0x274a('0x29')][_0x274a('0x46')](_0x31de82['body'],{})['then'](respondWithResult(_0x24cbe2,0xc9))['catch'](handleError(_0x24cbe2,null));};exports[_0x274a('0x47')]=function(_0x45abd4,_0x43b716){if(_0x45abd4['body']['id']){delete _0x45abd4[_0x274a('0x48')]['id'];}return db[_0x274a('0x29')][_0x274a('0x44')]({'where':{'id':_0x45abd4[_0x274a('0x49')]['id']}})['then'](handleEntityNotFound(_0x43b716,null))[_0x274a('0x24')](saveUpdates(_0x45abd4[_0x274a('0x48')],null))['then'](respondWithResult(_0x43b716,null))[_0x274a('0x45')](handleError(_0x43b716,null));};exports['destroy']=function(_0x163a77,_0x4f772a){return db[_0x274a('0x29')][_0x274a('0x44')]({'where':{'id':_0x163a77[_0x274a('0x49')]['id']}})[_0x274a('0x24')](handleEntityNotFound(_0x4f772a,null))[_0x274a('0x24')](removeEntity(_0x4f772a,null))[_0x274a('0x45')](handleError(_0x4f772a,null));};exports[_0x274a('0x4a')]=function(_0x330f18,_0x33153e){return db[_0x274a('0x29')][_0x274a('0x4a')]()[_0x274a('0x24')](respondWithResult(_0x33153e,null))[_0x274a('0x45')](handleError(_0x33153e,null));};
\ No newline at end of file
index 6bf979d..955510a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x469c=['util','../../config/logger','api','bluebird','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x469c,0x137));var _0xc469=function(_0x59c765,_0x1b14cb){_0x59c765=_0x59c765-0x0;var _0x731b6d=_0x469c[_0x59c765];return _0x731b6d;};'use strict';var _=require(_0xc469('0x0'));var util=require(_0xc469('0x1'));var logger=require(_0xc469('0x2'))(_0xc469('0x3'));var moment=require('moment');var BPromise=require(_0xc469('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc469('0x5'));var config=require(_0xc469('0x6'));var attributes=require(_0xc469('0x7'));module[_0xc469('0x8')]=function(_0x497c84,_0x2f682f){return _0x497c84[_0xc469('0x9')](_0xc469('0xa'),attributes,{'tableName':_0xc469('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x802a=['path','./integrationReport.attributes','define','IntegrationReport','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x4062a0,_0x42c7a1){var _0x480d40=function(_0x2d5c79){while(--_0x2d5c79){_0x4062a0['push'](_0x4062a0['shift']());}};_0x480d40(++_0x42c7a1);}(_0x802a,0xa4));var _0xa802=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x802a[_0x616290];return _0x453879;};'use strict';var _=require(_0xa802('0x0'));var util=require(_0xa802('0x1'));var logger=require(_0xa802('0x2'))(_0xa802('0x3'));var moment=require(_0xa802('0x4'));var BPromise=require('bluebird');var rp=require(_0xa802('0x5'));var fs=require('fs');var path=require(_0xa802('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa802('0x7'));module['exports']=function(_0x59854b,_0x56fd85){return _0x59854b[_0xa802('0x8')](_0xa802('0x9'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17d4e1c..0e138a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x93312b,_0x2dce84){var _0x5d86af=function(_0x28e301){while(--_0x28e301){_0x93312b['push'](_0x93312b['shift']());}};_0x5d86af(++_0x2dce84);}(_0x187d,0x93));var _0xd187=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x187d[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var moment=require(_0xd187('0x1'));var BPromise=require(_0xd187('0x2'));var rs=require(_0xd187('0x3'));var fs=require('fs');var Redis=require(_0xd187('0x4'));var db=require(_0xd187('0x5'))['db'];var utils=require(_0xd187('0x6'));var logger=require('../../config/logger')(_0xd187('0x7'));var config=require(_0xd187('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd187('0x9')][_0xd187('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x444a60,_0x1d3fe4,_0x28ce2f){return new BPromise(function(_0x2d6992,_0x358c45){return client[_0xd187('0xb')](_0x444a60,_0x28ce2f)['then'](function(_0x342539){logger[_0xd187('0xc')](_0xd187('0xd'),_0x1d3fe4,_0xd187('0xe'));logger[_0xd187('0xf')](_0xd187('0x10'),_0x1d3fe4,'request\x20sent',JSON[_0xd187('0x11')](_0x342539));if(_0x342539[_0xd187('0x12')]){if(_0x342539[_0xd187('0x12')]['code']===0x1f4){logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539[_0xd187('0x12')]['message']);return _0x358c45(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539['error'][_0xd187('0x13')]);return _0x2d6992(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}else{logger[_0xd187('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x1d3fe4,_0xd187('0xe'));_0x2d6992(_0x342539['result']['message']);}})[_0xd187('0x14')](function(_0x5a4986){logger['error'](_0xd187('0xd'),_0x1d3fe4,_0x5a4986);_0x358c45(_0x5a4986);});});}
\ No newline at end of file
+var _0x7a54=['info','IntegrationReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x38e741,_0x24023a){_0x38e741=_0x38e741-0x0;var _0x5de54d=_0x7a54[_0x38e741];return _0x5de54d;};'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')]('IntegrationReport,\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 9517874..21e4a0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4667=['post','/:id/sub_intervals/create_many','update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','index','/:id','show','/:id/sub_intervals','getIntervals'];(function(_0x26f6bc,_0x540927){var _0x21e9fd=function(_0x326139){while(--_0x326139){_0x26f6bc['push'](_0x26f6bc['shift']());}};_0x21e9fd(++_0x540927);}(_0x4667,0x10f));var _0x7466=function(_0x4cc9d5,_0x4fd790){_0x4cc9d5=_0x4cc9d5-0x0;var _0x287fcf=_0x4667[_0x4cc9d5];return _0x287fcf;};'use strict';var multer=require(_0x7466('0x0'));var util=require(_0x7466('0x1'));var path=require('path');var timeout=require(_0x7466('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7466('0x3'));var auth=require(_0x7466('0x4'));var interaction=require(_0x7466('0x5'));var config=require('../../config/environment');var controller=require(_0x7466('0x6'));router[_0x7466('0x7')]('/',auth[_0x7466('0x8')](),controller[_0x7466('0x9')]);router[_0x7466('0x7')](_0x7466('0xa'),auth[_0x7466('0x8')](),controller[_0x7466('0xb')]);router[_0x7466('0x7')](_0x7466('0xc'),auth['isAuthenticated'](),controller[_0x7466('0xd')]);router[_0x7466('0xe')]('/',auth[_0x7466('0x8')](),controller['create']);router[_0x7466('0xe')](_0x7466('0xc'),auth[_0x7466('0x8')](),controller['addInterval']);router['post'](_0x7466('0xf'),auth[_0x7466('0x8')](),controller['addIntervals']);router['put'](_0x7466('0xa'),auth[_0x7466('0x8')](),controller[_0x7466('0x10')]);router[_0x7466('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x7466('0x12')]=router;
\ No newline at end of file
+var _0xf70f=['/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','put','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index'];(function(_0x3c91a6,_0x39445f){var _0x38cbb9=function(_0x52854a){while(--_0x52854a){_0x3c91a6['push'](_0x3c91a6['shift']());}};_0x38cbb9(++_0x39445f);}(_0xf70f,0x9c));var _0xff70=function(_0x2c03ca,_0xad92ca){_0x2c03ca=_0x2c03ca-0x0;var _0xe670b=_0xf70f[_0x2c03ca];return _0xe670b;};'use strict';var multer=require(_0xff70('0x0'));var util=require(_0xff70('0x1'));var path=require(_0xff70('0x2'));var timeout=require('connect-timeout');var express=require(_0xff70('0x3'));var router=express[_0xff70('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xff70('0x5'));var interaction=require(_0xff70('0x6'));var config=require(_0xff70('0x7'));var controller=require(_0xff70('0x8'));router[_0xff70('0x9')]('/',auth[_0xff70('0xa')](),controller[_0xff70('0xb')]);router['get'](_0xff70('0xc'),auth[_0xff70('0xa')](),controller[_0xff70('0xd')]);router[_0xff70('0x9')](_0xff70('0xe'),auth['isAuthenticated'](),controller[_0xff70('0xf')]);router[_0xff70('0x10')]('/',auth['isAuthenticated'](),controller[_0xff70('0x11')]);router[_0xff70('0x10')](_0xff70('0xe'),auth[_0xff70('0xa')](),controller[_0xff70('0x12')]);router[_0xff70('0x10')](_0xff70('0x13'),auth[_0xff70('0xa')](),controller['addIntervals']);router[_0xff70('0x14')]('/:id',auth[_0xff70('0xa')](),controller['update']);router['delete'](_0xff70('0xc'),auth[_0xff70('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 46fbf9b..31f3689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50a=['STRING','sequelize','exports'];(function(_0x5a50f6,_0x322886){var _0x32f078=function(_0xd05498){while(--_0xd05498){_0x5a50f6['push'](_0x5a50f6['shift']());}};_0x32f078(++_0x322886);}(_0xe50a,0xa6));var _0xae50=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0xe50a[_0xb725be];return _0x2f2424;};'use strict';var Sequelize=require(_0xae50('0x0'));module[_0xae50('0x1')]={'name':{'type':Sequelize[_0xae50('0x2')]},'description':{'type':Sequelize[_0xae50('0x2')]},'interval':{'type':Sequelize[_0xae50('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x2cf3=['sequelize','exports','STRING'];(function(_0xa91c73,_0xd1223f){var _0x148a8a=function(_0x36fd63){while(--_0x36fd63){_0xa91c73['push'](_0xa91c73['shift']());}};_0x148a8a(++_0xd1223f);}(_0x2cf3,0x189));var _0x32cf=function(_0x271089,_0x38fc51){_0x271089=_0x271089-0x0;var _0x5eeb64=_0x2cf3[_0x271089];return _0x5eeb64;};'use strict';var Sequelize=require(_0x32cf('0x0'));module[_0x32cf('0x1')]={'name':{'type':Sequelize[_0x32cf('0x2')]},'description':{'type':Sequelize[_0x32cf('0x2')]},'interval':{'type':Sequelize[_0x32cf('0x2')],'allowNull':!![]}};
\ No newline at end of file
index ad1a541..ad9c496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf79=['show','params','keys','rawAttributes','create','body','user','role','UserProfileSection','find','addInterval','IntervalId','getIntervals','findOne','order','addIntervals','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','send','index','map','Interval','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x1a73aa,_0x14decd){var _0x14b82b=function(_0x47c1d7){while(--_0x47c1d7){_0x1a73aa['push'](_0x1a73aa['shift']());}};_0x14b82b(++_0x14decd);}(_0xbf79,0xc2));var _0x9bf7=function(_0x37e77a,_0x439b8b){_0x37e77a=_0x37e77a-0x0;var _0x42d6cc=_0xbf79[_0x37e77a];return _0x42d6cc;};'use strict';var emlformat=require(_0x9bf7('0x0'));var rimraf=require(_0x9bf7('0x1'));var zipdir=require(_0x9bf7('0x2'));var jsonpatch=require(_0x9bf7('0x3'));var rp=require('request-promise');var moment=require(_0x9bf7('0x4'));var BPromise=require(_0x9bf7('0x5'));var Mustache=require(_0x9bf7('0x6'));var util=require('util');var path=require(_0x9bf7('0x7'));var sox=require('sox');var csv=require(_0x9bf7('0x8'));var ejs=require(_0x9bf7('0x9'));var fs=require('fs');var fs_extra=require(_0x9bf7('0xa'));var _=require(_0x9bf7('0xb'));var squel=require(_0x9bf7('0xc'));var crypto=require(_0x9bf7('0xd'));var jsforce=require(_0x9bf7('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9bf7('0xf'));var Redis=require(_0x9bf7('0x10'));var authService=require(_0x9bf7('0x11'));var qs=require(_0x9bf7('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9bf7('0x13'));var logger=require(_0x9bf7('0x14'))(_0x9bf7('0x15'));var utils=require('../../config/utils');var config=require(_0x9bf7('0x16'));var licenseUtil=require(_0x9bf7('0x17'));var db=require(_0x9bf7('0x18'))['db'];var extensions=require(_0x9bf7('0x19'));function respondWithStatusCode(_0x20dadb,_0x296eaf){_0x296eaf=_0x296eaf||0xcc;return function(_0x3e57d1){if(_0x3e57d1){return _0x20dadb[_0x9bf7('0x1a')](_0x296eaf);}return _0x20dadb[_0x9bf7('0x1b')](_0x296eaf)[_0x9bf7('0x1c')]();};}function respondWithResult(_0x593c5e,_0x51c3a1){_0x51c3a1=_0x51c3a1||0xc8;return function(_0x29534b){if(_0x29534b){return _0x593c5e[_0x9bf7('0x1b')](_0x51c3a1)['json'](_0x29534b);}};}function respondWithFilteredResult(_0x405d1c,_0x1d59fe){return function(_0x7fb78d){if(_0x7fb78d){var _0x476c97=typeof _0x1d59fe[_0x9bf7('0x1d')]===_0x9bf7('0x1e')&&typeof _0x1d59fe[_0x9bf7('0x1f')]===_0x9bf7('0x1e');var _0x3d5499=_0x7fb78d['count'];var _0x10d992=_0x476c97?0x0:_0x1d59fe['offset'];var _0x128c97=_0x476c97?_0x7fb78d[_0x9bf7('0x20')]:_0x1d59fe[_0x9bf7('0x1d')]+_0x1d59fe[_0x9bf7('0x1f')];var _0x21acc3;if(_0x128c97>=_0x3d5499){_0x128c97=_0x3d5499;_0x21acc3=0xc8;}else{_0x21acc3=0xce;}_0x405d1c[_0x9bf7('0x1b')](_0x21acc3);return _0x405d1c[_0x9bf7('0x21')](_0x9bf7('0x22'),_0x10d992+'-'+_0x128c97+'/'+_0x3d5499)[_0x9bf7('0x23')](_0x7fb78d);}return null;};}function patchUpdates(_0x5dfe56){return function(_0x4db043){try{jsonpatch[_0x9bf7('0x24')](_0x4db043,_0x5dfe56,!![]);}catch(_0x9e711b){return BPromise[_0x9bf7('0x25')](_0x9e711b);}return _0x4db043[_0x9bf7('0x26')]();};}function saveUpdates(_0x188f4f,_0xd0fbe0){return function(_0x186042){if(_0x186042){return _0x186042[_0x9bf7('0x27')](_0x188f4f)[_0x9bf7('0x28')](function(_0x14ad4a){return _0x14ad4a;});}return null;};}function removeEntity(_0x42edf4,_0x574d81){return function(_0x6dd66d){if(_0x6dd66d){return _0x6dd66d[_0x9bf7('0x29')]()['then'](function(){var _0x436aa2=_0x6dd66d[_0x9bf7('0x2a')]({'plain':!![]});var _0x27a9c7='Intervals';return db[_0x9bf7('0x2b')][_0x9bf7('0x29')]({'where':{'type':_0x27a9c7,'resourceId':_0x436aa2['id']}})[_0x9bf7('0x28')](function(){return _0x6dd66d;});})[_0x9bf7('0x28')](function(){_0x42edf4[_0x9bf7('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a1c1a,_0x1bd356){return function(_0x4c0c27){if(!_0x4c0c27){_0x3a1c1a['sendStatus'](0x194);}return _0x4c0c27;};}function handleError(_0x30f753,_0x107c8f){_0x107c8f=_0x107c8f||0x1f4;return function(_0x509ecb){logger[_0x9bf7('0x2c')](_0x509ecb['stack']);if(_0x509ecb['name']){delete _0x509ecb[_0x9bf7('0x2d')];}_0x30f753['status'](_0x107c8f)[_0x9bf7('0x2e')](_0x509ecb);};}exports[_0x9bf7('0x2f')]=function(_0x399a32,_0x22e53d){var _0x4ed9ee={},_0x28e702={},_0xb2117b={'count':0x0,'rows':[]};var _0x25c5fd=_[_0x9bf7('0x30')](db[_0x9bf7('0x31')]['rawAttributes'],function(_0xa79d79){return{'name':_0xa79d79[_0x9bf7('0x32')],'type':_0xa79d79['type']['key']};});_0x28e702[_0x9bf7('0x33')]=_[_0x9bf7('0x30')](_0x25c5fd,'name');_0x28e702[_0x9bf7('0x34')]=_['keys'](_0x399a32[_0x9bf7('0x34')]);_0x28e702[_0x9bf7('0x35')]=_[_0x9bf7('0x36')](_0x28e702[_0x9bf7('0x33')],_0x28e702[_0x9bf7('0x34')]);_0x4ed9ee['attributes']=_[_0x9bf7('0x36')](_0x28e702[_0x9bf7('0x33')],qs[_0x9bf7('0x37')](_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x37')]));_0x4ed9ee[_0x9bf7('0x38')]=_0x4ed9ee[_0x9bf7('0x38')][_0x9bf7('0x39')]?_0x4ed9ee['attributes']:_0x28e702[_0x9bf7('0x33')];if(!_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x3a')](_0x9bf7('0x3b'))){_0x4ed9ee[_0x9bf7('0x1f')]=qs[_0x9bf7('0x1f')](_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x1f')]);_0x4ed9ee[_0x9bf7('0x1d')]=qs[_0x9bf7('0x1d')](_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x1d')]);}_0x4ed9ee['order']=qs[_0x9bf7('0x3c')](_0x399a32['query'][_0x9bf7('0x3c')]);_0x4ed9ee[_0x9bf7('0x3d')]=qs[_0x9bf7('0x35')](_[_0x9bf7('0x3e')](_0x399a32['query'],_0x28e702[_0x9bf7('0x35')]),_0x25c5fd);if(_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x3f')]){_0x4ed9ee[_0x9bf7('0x3d')]=_[_0x9bf7('0x40')](_0x4ed9ee[_0x9bf7('0x3d')],{'$or':_[_0x9bf7('0x30')](_0x25c5fd,function(_0x743761){if(_0x743761[_0x9bf7('0x41')]!==_0x9bf7('0x42')){var _0x4b7cfc={};_0x4b7cfc[_0x743761[_0x9bf7('0x2d')]]={'$like':'%'+_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x3f')]+'%'};return _0x4b7cfc;}})});}_0x4ed9ee=_[_0x9bf7('0x40')]({},_0x4ed9ee,_0x399a32[_0x9bf7('0x43')]);var _0x1bc9f1={'where':_0x4ed9ee[_0x9bf7('0x3d')]};return db[_0x9bf7('0x31')][_0x9bf7('0x20')](_0x1bc9f1)['then'](function(_0x133013){_0xb2117b[_0x9bf7('0x20')]=_0x133013;if(_0x399a32[_0x9bf7('0x34')][_0x9bf7('0x44')]){_0x4ed9ee[_0x9bf7('0x45')]=[{'all':!![]}];}return db[_0x9bf7('0x31')][_0x9bf7('0x46')](_0x4ed9ee);})[_0x9bf7('0x28')](function(_0x4b06ce){_0xb2117b[_0x9bf7('0x47')]=_0x4b06ce;return _0xb2117b;})[_0x9bf7('0x28')](respondWithFilteredResult(_0x22e53d,_0x4ed9ee))[_0x9bf7('0x48')](handleError(_0x22e53d,null));};exports[_0x9bf7('0x49')]=function(_0x220e58,_0xb22055){var _0x55ddaa={'raw':!![],'where':{'id':_0x220e58[_0x9bf7('0x4a')]['id']}},_0x525e7e={};_0x525e7e[_0x9bf7('0x33')]=_[_0x9bf7('0x4b')](db['Interval'][_0x9bf7('0x4c')]);_0x525e7e[_0x9bf7('0x34')]=_['keys'](_0x220e58['query']);_0x525e7e[_0x9bf7('0x35')]=_[_0x9bf7('0x36')](_0x525e7e[_0x9bf7('0x33')],_0x525e7e['query']);_0x55ddaa[_0x9bf7('0x38')]=_[_0x9bf7('0x36')](_0x525e7e[_0x9bf7('0x33')],qs['fields'](_0x220e58['query'][_0x9bf7('0x37')]));_0x55ddaa[_0x9bf7('0x38')]=_0x55ddaa[_0x9bf7('0x38')][_0x9bf7('0x39')]?_0x55ddaa[_0x9bf7('0x38')]:_0x525e7e['model'];if(_0x220e58['query']['includeAll']){_0x55ddaa[_0x9bf7('0x45')]=[{'all':!![]}];}_0x55ddaa=_[_0x9bf7('0x40')]({},_0x55ddaa,_0x220e58[_0x9bf7('0x43')]);return db[_0x9bf7('0x31')]['find'](_0x55ddaa)['then'](handleEntityNotFound(_0xb22055,null))['then'](respondWithResult(_0xb22055,null))[_0x9bf7('0x48')](handleError(_0xb22055,null));};exports[_0x9bf7('0x4d')]=function(_0x18a6c8,_0x4135d6){return db['Interval'][_0x9bf7('0x4d')](_0x18a6c8[_0x9bf7('0x4e')],{})[_0x9bf7('0x28')](function(_0x153fa8){var _0x22e468=_0x18a6c8[_0x9bf7('0x4f')][_0x9bf7('0x2a')]({'plain':!![]});if(!_0x22e468)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x22e468[_0x9bf7('0x50')]===_0x9bf7('0x4f')){var _0x1486da=_0x153fa8['get']({'plain':!![]});var _0x2b5acf='Intervals';return db[_0x9bf7('0x51')][_0x9bf7('0x52')]({'where':{'name':_0x2b5acf,'userProfileId':_0x22e468['userProfileId']},'raw':!![]})['then'](function(_0x7fedf7){if(_0x7fedf7&&_0x7fedf7['autoAssociation']===0x0){return db[_0x9bf7('0x2b')][_0x9bf7('0x4d')]({'name':_0x1486da[_0x9bf7('0x2d')],'resourceId':_0x1486da['id'],'type':_0x7fedf7[_0x9bf7('0x2d')],'sectionId':_0x7fedf7['id']},{})[_0x9bf7('0x28')](function(){return _0x153fa8;});}else{return _0x153fa8;}})[_0x9bf7('0x48')](function(_0x123d8a){logger[_0x9bf7('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x123d8a);throw _0x123d8a;});}return _0x153fa8;})['then'](respondWithResult(_0x4135d6,0xc9))[_0x9bf7('0x48')](handleError(_0x4135d6,null));};exports[_0x9bf7('0x27')]=function(_0x52961e,_0x4115ae){if(_0x52961e[_0x9bf7('0x4e')]['id']){delete _0x52961e[_0x9bf7('0x4e')]['id'];}return db['Interval']['find']({'where':{'id':_0x52961e[_0x9bf7('0x4a')]['id']}})[_0x9bf7('0x28')](handleEntityNotFound(_0x4115ae,null))[_0x9bf7('0x28')](saveUpdates(_0x52961e[_0x9bf7('0x4e')],null))[_0x9bf7('0x28')](respondWithResult(_0x4115ae,null))['catch'](handleError(_0x4115ae,null));};exports[_0x9bf7('0x29')]=function(_0x543889,_0x20ce13){return db[_0x9bf7('0x31')][_0x9bf7('0x52')]({'where':{'id':_0x543889[_0x9bf7('0x4a')]['id']}})[_0x9bf7('0x28')](handleEntityNotFound(_0x20ce13,null))['then'](removeEntity(_0x20ce13,null))['catch'](handleError(_0x20ce13,null));};exports[_0x9bf7('0x53')]=function(_0x13c601,_0x48959a,_0x2cfb31){if(_0x13c601[_0x9bf7('0x4e')]['id']){delete _0x13c601[_0x9bf7('0x4e')]['id'];}return db[_0x9bf7('0x31')][_0x9bf7('0x52')]({'where':{'id':_0x13c601[_0x9bf7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x48959a,null))[_0x9bf7('0x28')](function(_0x4b2200){if(_0x4b2200){_0x13c601[_0x9bf7('0x4e')][_0x9bf7('0x54')]=_0x4b2200['id'];return db[_0x9bf7('0x31')][_0x9bf7('0x4d')](_0x13c601[_0x9bf7('0x4e')]);}})[_0x9bf7('0x28')](respondWithResult(_0x48959a,null))[_0x9bf7('0x48')](handleError(_0x48959a,null));};exports[_0x9bf7('0x55')]=function(_0x2435d3,_0x14e1c9,_0x22d5de){var _0x47245b={};var _0x481a50={};var _0x7df86f;var _0x30ad0f;return db['Interval'][_0x9bf7('0x56')]({'where':{'id':_0x2435d3[_0x9bf7('0x4a')]['id']}})[_0x9bf7('0x28')](handleEntityNotFound(_0x14e1c9,null))['then'](function(_0xde1451){if(_0xde1451){_0x7df86f=_0xde1451;_0x481a50[_0x9bf7('0x33')]=_[_0x9bf7('0x4b')](db['Interval'][_0x9bf7('0x4c')]);_0x481a50['query']=_[_0x9bf7('0x4b')](_0x2435d3['query']);_0x481a50[_0x9bf7('0x35')]=_['intersection'](_0x481a50[_0x9bf7('0x33')],_0x481a50[_0x9bf7('0x34')]);_0x47245b[_0x9bf7('0x38')]=_[_0x9bf7('0x36')](_0x481a50[_0x9bf7('0x33')],qs['fields'](_0x2435d3[_0x9bf7('0x34')]['fields']));_0x47245b['attributes']=_0x47245b[_0x9bf7('0x38')][_0x9bf7('0x39')]?_0x47245b[_0x9bf7('0x38')]:_0x481a50[_0x9bf7('0x33')];_0x47245b[_0x9bf7('0x57')]=qs[_0x9bf7('0x3c')](_0x2435d3[_0x9bf7('0x34')][_0x9bf7('0x3c')]);_0x47245b[_0x9bf7('0x3d')]=qs[_0x9bf7('0x35')](_[_0x9bf7('0x3e')](_0x2435d3['query'],_0x481a50[_0x9bf7('0x35')]));if(_0x2435d3[_0x9bf7('0x34')]['filter']){_0x47245b[_0x9bf7('0x3d')]=_[_0x9bf7('0x40')](_0x47245b['where'],{'$or':_[_0x9bf7('0x30')](_0x47245b[_0x9bf7('0x38')],function(_0x36fc17){var _0x356aa1={};_0x356aa1[_0x36fc17]={'$like':'%'+_0x2435d3[_0x9bf7('0x34')][_0x9bf7('0x3f')]+'%'};return _0x356aa1;})});}_0x47245b=_[_0x9bf7('0x40')]({},_0x47245b,_0x2435d3['options']);return _0x7df86f[_0x9bf7('0x55')](_0x47245b);}})[_0x9bf7('0x28')](function(_0x16dc9a){if(_0x16dc9a){_0x30ad0f=_0x16dc9a[_0x9bf7('0x39')];if(!_0x2435d3[_0x9bf7('0x34')]['hasOwnProperty'](_0x9bf7('0x3b'))){_0x47245b[_0x9bf7('0x1f')]=qs['limit'](_0x2435d3[_0x9bf7('0x34')][_0x9bf7('0x1f')]);_0x47245b['offset']=qs['offset'](_0x2435d3[_0x9bf7('0x34')][_0x9bf7('0x1d')]);}return _0x7df86f[_0x9bf7('0x55')](_0x47245b);}})[_0x9bf7('0x28')](function(_0x38a972){if(_0x38a972){return _0x38a972?{'count':_0x30ad0f,'rows':_0x38a972}:null;}})[_0x9bf7('0x28')](respondWithResult(_0x14e1c9,null))[_0x9bf7('0x48')](handleError(_0x14e1c9,null));};exports[_0x9bf7('0x58')]=function(_0x3ce429,_0x34d393,_0x159359){return db[_0x9bf7('0x31')]['findOne']({'where':{'id':_0x3ce429['params']['id']}})[_0x9bf7('0x28')](handleEntityNotFound(_0x34d393,null))[_0x9bf7('0x28')](function(_0x532df2){if(_0x532df2){return db['sequelize']['transaction'](function(_0x2901bc){return db[_0x9bf7('0x31')][_0x9bf7('0x29')]({'where':{'IntervalId':_0x3ce429['params']['id']},'transaction':_0x2901bc})[_0x9bf7('0x28')](function(_0x477e86){var _0x1cc311=_[_0x9bf7('0x30')](_0x3ce429[_0x9bf7('0x4e')],function(_0x1a9ded){delete _0x1a9ded['id'];_0x1a9ded[_0x9bf7('0x54')]=_0x3ce429[_0x9bf7('0x4a')]['id'];return _0x1a9ded;});return db[_0x9bf7('0x31')]['bulkCreate'](_0x1cc311,{'transaction':_0x2901bc});});})[_0x9bf7('0x28')](function(){return db['Interval'][_0x9bf7('0x46')]({'where':{'IntervalId':_0x3ce429[_0x9bf7('0x4a')]['id']}});});}})[_0x9bf7('0x28')](respondWithResult(_0x34d393,null))[_0x9bf7('0x48')](handleError(_0x34d393,null));};
\ No newline at end of file
+var _0xe1b5=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','getIntervals','findOne','addIntervals','sequelize','transaction','IntervalId','bulkCreate','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','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','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','Intervals','UserProfileResource','error','stack','name','send','index','Interval','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','params','include','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId'];(function(_0x1d5400,_0x567e3c){var _0x21d9fe=function(_0x23fb75){while(--_0x23fb75){_0x1d5400['push'](_0x1d5400['shift']());}};_0x21d9fe(++_0x567e3c);}(_0xe1b5,0x17f));var _0x5e1b=function(_0x42701f,_0x3d2f90){_0x42701f=_0x42701f-0x0;var _0x36aafb=_0xe1b5[_0x42701f];return _0x36aafb;};'use strict';var emlformat=require(_0x5e1b('0x0'));var rimraf=require(_0x5e1b('0x1'));var zipdir=require(_0x5e1b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e1b('0x3'));var moment=require(_0x5e1b('0x4'));var BPromise=require(_0x5e1b('0x5'));var Mustache=require(_0x5e1b('0x6'));var util=require(_0x5e1b('0x7'));var path=require('path');var sox=require(_0x5e1b('0x8'));var csv=require(_0x5e1b('0x9'));var ejs=require(_0x5e1b('0xa'));var fs=require('fs');var fs_extra=require(_0x5e1b('0xb'));var _=require('lodash');var squel=require(_0x5e1b('0xc'));var crypto=require(_0x5e1b('0xd'));var jsforce=require(_0x5e1b('0xe'));var deskjs=require(_0x5e1b('0xf'));var toCsv=require(_0x5e1b('0x9'));var querystring=require(_0x5e1b('0x10'));var Papa=require(_0x5e1b('0x11'));var Redis=require(_0x5e1b('0x12'));var authService=require(_0x5e1b('0x13'));var qs=require(_0x5e1b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e1b('0x15'));var logger=require(_0x5e1b('0x16'))(_0x5e1b('0x17'));var utils=require(_0x5e1b('0x18'));var config=require(_0x5e1b('0x19'));var licenseUtil=require(_0x5e1b('0x1a'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x1a5d20,_0x4eeaca){_0x4eeaca=_0x4eeaca||0xcc;return function(_0x17f38a){if(_0x17f38a){return _0x1a5d20[_0x5e1b('0x1b')](_0x4eeaca);}return _0x1a5d20[_0x5e1b('0x1c')](_0x4eeaca)[_0x5e1b('0x1d')]();};}function respondWithResult(_0x4fa658,_0x3e6d24){_0x3e6d24=_0x3e6d24||0xc8;return function(_0x410838){if(_0x410838){return _0x4fa658[_0x5e1b('0x1c')](_0x3e6d24)['json'](_0x410838);}};}function respondWithFilteredResult(_0x3a7d65,_0x1fe023){return function(_0x895307){if(_0x895307){var _0x249807=typeof _0x1fe023[_0x5e1b('0x1e')]===_0x5e1b('0x1f')&&typeof _0x1fe023[_0x5e1b('0x20')]===_0x5e1b('0x1f');var _0x32d887=_0x895307[_0x5e1b('0x21')];var _0x3bc782=_0x249807?0x0:_0x1fe023[_0x5e1b('0x1e')];var _0x1c3900=_0x249807?_0x895307[_0x5e1b('0x21')]:_0x1fe023['offset']+_0x1fe023['limit'];var _0x4d3fd9;if(_0x1c3900>=_0x32d887){_0x1c3900=_0x32d887;_0x4d3fd9=0xc8;}else{_0x4d3fd9=0xce;}_0x3a7d65[_0x5e1b('0x1c')](_0x4d3fd9);return _0x3a7d65[_0x5e1b('0x22')](_0x5e1b('0x23'),_0x3bc782+'-'+_0x1c3900+'/'+_0x32d887)['json'](_0x895307);}return null;};}function patchUpdates(_0x5df9ad){return function(_0x9370be){try{jsonpatch[_0x5e1b('0x24')](_0x9370be,_0x5df9ad,!![]);}catch(_0x47d164){return BPromise['reject'](_0x47d164);}return _0x9370be[_0x5e1b('0x25')]();};}function saveUpdates(_0x4f2a0e,_0x523a2c){return function(_0x48fb41){if(_0x48fb41){return _0x48fb41['update'](_0x4f2a0e)[_0x5e1b('0x26')](function(_0x4bc87a){return _0x4bc87a;});}return null;};}function removeEntity(_0x352e68,_0xf5ec8f){return function(_0x184fc1){if(_0x184fc1){return _0x184fc1[_0x5e1b('0x27')]()['then'](function(){var _0xbe374d=_0x184fc1[_0x5e1b('0x28')]({'plain':!![]});var _0x5018b2=_0x5e1b('0x29');return db[_0x5e1b('0x2a')][_0x5e1b('0x27')]({'where':{'type':_0x5018b2,'resourceId':_0xbe374d['id']}})['then'](function(){return _0x184fc1;});})[_0x5e1b('0x26')](function(){_0x352e68[_0x5e1b('0x1c')](0xcc)[_0x5e1b('0x1d')]();});}};}function handleEntityNotFound(_0x192e93,_0x2d50ae){return function(_0x3256a1){if(!_0x3256a1){_0x192e93[_0x5e1b('0x1b')](0x194);}return _0x3256a1;};}function handleError(_0x154e10,_0x511430){_0x511430=_0x511430||0x1f4;return function(_0xd3d12a){logger[_0x5e1b('0x2b')](_0xd3d12a[_0x5e1b('0x2c')]);if(_0xd3d12a[_0x5e1b('0x2d')]){delete _0xd3d12a[_0x5e1b('0x2d')];}_0x154e10[_0x5e1b('0x1c')](_0x511430)[_0x5e1b('0x2e')](_0xd3d12a);};}exports[_0x5e1b('0x2f')]=function(_0x5d992b,_0x17e962){var _0x48215e={},_0x2ef3de={},_0x1631be={'count':0x0,'rows':[]};var _0x15dda3=_['map'](db[_0x5e1b('0x30')][_0x5e1b('0x31')],function(_0x29572b){return{'name':_0x29572b['fieldName'],'type':_0x29572b[_0x5e1b('0x32')][_0x5e1b('0x33')]};});_0x2ef3de[_0x5e1b('0x34')]=_[_0x5e1b('0x35')](_0x15dda3,_0x5e1b('0x2d'));_0x2ef3de['query']=_[_0x5e1b('0x36')](_0x5d992b[_0x5e1b('0x37')]);_0x2ef3de[_0x5e1b('0x38')]=_[_0x5e1b('0x39')](_0x2ef3de['model'],_0x2ef3de[_0x5e1b('0x37')]);_0x48215e[_0x5e1b('0x3a')]=_['intersection'](_0x2ef3de['model'],qs['fields'](_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x3b')]));_0x48215e[_0x5e1b('0x3a')]=_0x48215e[_0x5e1b('0x3a')][_0x5e1b('0x3c')]?_0x48215e['attributes']:_0x2ef3de['model'];if(!_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x3d')](_0x5e1b('0x3e'))){_0x48215e[_0x5e1b('0x20')]=qs[_0x5e1b('0x20')](_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x20')]);_0x48215e['offset']=qs['offset'](_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x1e')]);}_0x48215e[_0x5e1b('0x3f')]=qs[_0x5e1b('0x40')](_0x5d992b['query']['sort']);_0x48215e[_0x5e1b('0x41')]=qs[_0x5e1b('0x38')](_[_0x5e1b('0x42')](_0x5d992b['query'],_0x2ef3de[_0x5e1b('0x38')]),_0x15dda3);if(_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x43')]){_0x48215e[_0x5e1b('0x41')]=_[_0x5e1b('0x44')](_0x48215e[_0x5e1b('0x41')],{'$or':_['map'](_0x15dda3,function(_0x19c438){if(_0x19c438[_0x5e1b('0x32')]!=='VIRTUAL'){var _0x4ec852={};_0x4ec852[_0x19c438[_0x5e1b('0x2d')]]={'$like':'%'+_0x5d992b['query'][_0x5e1b('0x43')]+'%'};return _0x4ec852;}})});}_0x48215e=_[_0x5e1b('0x44')]({},_0x48215e,_0x5d992b[_0x5e1b('0x45')]);var _0x1cd817={'where':_0x48215e[_0x5e1b('0x41')]};return db[_0x5e1b('0x30')]['count'](_0x1cd817)[_0x5e1b('0x26')](function(_0x386677){_0x1631be[_0x5e1b('0x21')]=_0x386677;if(_0x5d992b[_0x5e1b('0x37')][_0x5e1b('0x46')]){_0x48215e['include']=[{'all':!![]}];}return db[_0x5e1b('0x30')][_0x5e1b('0x47')](_0x48215e);})[_0x5e1b('0x26')](function(_0x422da8){_0x1631be[_0x5e1b('0x48')]=_0x422da8;return _0x1631be;})[_0x5e1b('0x26')](respondWithFilteredResult(_0x17e962,_0x48215e))['catch'](handleError(_0x17e962,null));};exports['show']=function(_0x46e29f,_0x12eba3){var _0x2fb319={'raw':!![],'where':{'id':_0x46e29f[_0x5e1b('0x49')]['id']}},_0x4914f6={};_0x4914f6[_0x5e1b('0x34')]=_[_0x5e1b('0x36')](db[_0x5e1b('0x30')][_0x5e1b('0x31')]);_0x4914f6[_0x5e1b('0x37')]=_['keys'](_0x46e29f['query']);_0x4914f6['filters']=_[_0x5e1b('0x39')](_0x4914f6[_0x5e1b('0x34')],_0x4914f6[_0x5e1b('0x37')]);_0x2fb319[_0x5e1b('0x3a')]=_[_0x5e1b('0x39')](_0x4914f6[_0x5e1b('0x34')],qs['fields'](_0x46e29f[_0x5e1b('0x37')]['fields']));_0x2fb319[_0x5e1b('0x3a')]=_0x2fb319['attributes'][_0x5e1b('0x3c')]?_0x2fb319[_0x5e1b('0x3a')]:_0x4914f6[_0x5e1b('0x34')];if(_0x46e29f['query'][_0x5e1b('0x46')]){_0x2fb319[_0x5e1b('0x4a')]=[{'all':!![]}];}_0x2fb319=_['merge']({},_0x2fb319,_0x46e29f['options']);return db[_0x5e1b('0x30')][_0x5e1b('0x4b')](_0x2fb319)[_0x5e1b('0x26')](handleEntityNotFound(_0x12eba3,null))[_0x5e1b('0x26')](respondWithResult(_0x12eba3,null))[_0x5e1b('0x4c')](handleError(_0x12eba3,null));};exports[_0x5e1b('0x4d')]=function(_0x5f0864,_0x311cfc){return db[_0x5e1b('0x30')]['create'](_0x5f0864['body'],{})[_0x5e1b('0x26')](function(_0x38745b){var _0x49e6fd=_0x5f0864[_0x5e1b('0x4e')][_0x5e1b('0x28')]({'plain':!![]});if(!_0x49e6fd)throw new Error(_0x5e1b('0x4f'));if(_0x49e6fd['role']===_0x5e1b('0x4e')){var _0x45e165=_0x38745b[_0x5e1b('0x28')]({'plain':!![]});var _0x340510=_0x5e1b('0x29');return db[_0x5e1b('0x50')][_0x5e1b('0x4b')]({'where':{'name':_0x340510,'userProfileId':_0x49e6fd[_0x5e1b('0x51')]},'raw':!![]})['then'](function(_0x25f241){if(_0x25f241&&_0x25f241[_0x5e1b('0x52')]===0x0){return db[_0x5e1b('0x2a')]['create']({'name':_0x45e165[_0x5e1b('0x2d')],'resourceId':_0x45e165['id'],'type':_0x25f241[_0x5e1b('0x2d')],'sectionId':_0x25f241['id']},{})[_0x5e1b('0x26')](function(){return _0x38745b;});}else{return _0x38745b;}})[_0x5e1b('0x4c')](function(_0xfe77ec){logger['error'](_0x5e1b('0x53'),_0xfe77ec);throw _0xfe77ec;});}return _0x38745b;})[_0x5e1b('0x26')](respondWithResult(_0x311cfc,0xc9))[_0x5e1b('0x4c')](handleError(_0x311cfc,null));};exports[_0x5e1b('0x54')]=function(_0x154a10,_0x40bcd1){if(_0x154a10[_0x5e1b('0x55')]['id']){delete _0x154a10[_0x5e1b('0x55')]['id'];}return db[_0x5e1b('0x30')]['find']({'where':{'id':_0x154a10[_0x5e1b('0x49')]['id']}})[_0x5e1b('0x26')](handleEntityNotFound(_0x40bcd1,null))['then'](saveUpdates(_0x154a10[_0x5e1b('0x55')],null))[_0x5e1b('0x26')](respondWithResult(_0x40bcd1,null))[_0x5e1b('0x4c')](handleError(_0x40bcd1,null));};exports[_0x5e1b('0x27')]=function(_0x562591,_0xe53676){return db[_0x5e1b('0x30')][_0x5e1b('0x4b')]({'where':{'id':_0x562591[_0x5e1b('0x49')]['id']}})[_0x5e1b('0x26')](handleEntityNotFound(_0xe53676,null))[_0x5e1b('0x26')](removeEntity(_0xe53676,null))['catch'](handleError(_0xe53676,null));};exports['addInterval']=function(_0x588777,_0x5982cd,_0x104c8a){if(_0x588777['body']['id']){delete _0x588777[_0x5e1b('0x55')]['id'];}return db['Interval'][_0x5e1b('0x4b')]({'where':{'id':_0x588777[_0x5e1b('0x49')]['id']}})[_0x5e1b('0x26')](handleEntityNotFound(_0x5982cd,null))['then'](function(_0x48fa98){if(_0x48fa98){_0x588777['body']['IntervalId']=_0x48fa98['id'];return db[_0x5e1b('0x30')][_0x5e1b('0x4d')](_0x588777[_0x5e1b('0x55')]);}})[_0x5e1b('0x26')](respondWithResult(_0x5982cd,null))['catch'](handleError(_0x5982cd,null));};exports[_0x5e1b('0x56')]=function(_0x4794b6,_0x102648,_0x50de92){var _0x552a9c={};var _0x56e0dc={};var _0x716a03;var _0x18c1bc;return db[_0x5e1b('0x30')][_0x5e1b('0x57')]({'where':{'id':_0x4794b6[_0x5e1b('0x49')]['id']}})[_0x5e1b('0x26')](handleEntityNotFound(_0x102648,null))[_0x5e1b('0x26')](function(_0x548bc0){if(_0x548bc0){_0x716a03=_0x548bc0;_0x56e0dc['model']=_['keys'](db[_0x5e1b('0x30')][_0x5e1b('0x31')]);_0x56e0dc[_0x5e1b('0x37')]=_[_0x5e1b('0x36')](_0x4794b6[_0x5e1b('0x37')]);_0x56e0dc[_0x5e1b('0x38')]=_[_0x5e1b('0x39')](_0x56e0dc[_0x5e1b('0x34')],_0x56e0dc['query']);_0x552a9c['attributes']=_[_0x5e1b('0x39')](_0x56e0dc[_0x5e1b('0x34')],qs[_0x5e1b('0x3b')](_0x4794b6[_0x5e1b('0x37')][_0x5e1b('0x3b')]));_0x552a9c[_0x5e1b('0x3a')]=_0x552a9c[_0x5e1b('0x3a')][_0x5e1b('0x3c')]?_0x552a9c[_0x5e1b('0x3a')]:_0x56e0dc['model'];_0x552a9c[_0x5e1b('0x3f')]=qs['sort'](_0x4794b6[_0x5e1b('0x37')][_0x5e1b('0x40')]);_0x552a9c[_0x5e1b('0x41')]=qs[_0x5e1b('0x38')](_['pick'](_0x4794b6['query'],_0x56e0dc[_0x5e1b('0x38')]));if(_0x4794b6[_0x5e1b('0x37')][_0x5e1b('0x43')]){_0x552a9c[_0x5e1b('0x41')]=_[_0x5e1b('0x44')](_0x552a9c[_0x5e1b('0x41')],{'$or':_[_0x5e1b('0x35')](_0x552a9c[_0x5e1b('0x3a')],function(_0xea65f){var _0x275358={};_0x275358[_0xea65f]={'$like':'%'+_0x4794b6['query'][_0x5e1b('0x43')]+'%'};return _0x275358;})});}_0x552a9c=_[_0x5e1b('0x44')]({},_0x552a9c,_0x4794b6[_0x5e1b('0x45')]);return _0x716a03['getIntervals'](_0x552a9c);}})[_0x5e1b('0x26')](function(_0x5d14ff){if(_0x5d14ff){_0x18c1bc=_0x5d14ff[_0x5e1b('0x3c')];if(!_0x4794b6[_0x5e1b('0x37')][_0x5e1b('0x3d')]('nolimit')){_0x552a9c[_0x5e1b('0x20')]=qs[_0x5e1b('0x20')](_0x4794b6[_0x5e1b('0x37')]['limit']);_0x552a9c[_0x5e1b('0x1e')]=qs[_0x5e1b('0x1e')](_0x4794b6[_0x5e1b('0x37')][_0x5e1b('0x1e')]);}return _0x716a03['getIntervals'](_0x552a9c);}})['then'](function(_0x460c89){if(_0x460c89){return _0x460c89?{'count':_0x18c1bc,'rows':_0x460c89}:null;}})[_0x5e1b('0x26')](respondWithResult(_0x102648,null))['catch'](handleError(_0x102648,null));};exports[_0x5e1b('0x58')]=function(_0x15f45c,_0x552f26,_0x43b99e){return db[_0x5e1b('0x30')]['findOne']({'where':{'id':_0x15f45c[_0x5e1b('0x49')]['id']}})['then'](handleEntityNotFound(_0x552f26,null))[_0x5e1b('0x26')](function(_0x48ca93){if(_0x48ca93){return db[_0x5e1b('0x59')][_0x5e1b('0x5a')](function(_0x4c0db3){return db['Interval']['destroy']({'where':{'IntervalId':_0x15f45c[_0x5e1b('0x49')]['id']},'transaction':_0x4c0db3})['then'](function(_0x408be7){var _0x5e2eb4=_[_0x5e1b('0x35')](_0x15f45c[_0x5e1b('0x55')],function(_0x1b5165){delete _0x1b5165['id'];_0x1b5165[_0x5e1b('0x5b')]=_0x15f45c[_0x5e1b('0x49')]['id'];return _0x1b5165;});return db['Interval'][_0x5e1b('0x5c')](_0x5e2eb4,{'transaction':_0x4c0db3});});})[_0x5e1b('0x26')](function(){return db['Interval'][_0x5e1b('0x47')]({'where':{'IntervalId':_0x15f45c[_0x5e1b('0x49')]['id']}});});}})[_0x5e1b('0x26')](respondWithResult(_0x552f26,null))[_0x5e1b('0x4c')](handleError(_0x552f26,null));};
\ No newline at end of file
index 826b10c..816688d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacfb=['path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports','define','tools_intervals','rewrite','util','api','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacfb,0x95));var _0xbacf=function(_0x1de2de,_0x2c06b5){_0x1de2de=_0x1de2de-0x0;var _0x53edf4=_0xacfb[_0x1de2de];return _0x53edf4;};'use strict';var _=require('lodash');var util=require(_0xbacf('0x0'));var logger=require('../../config/logger')(_0xbacf('0x1'));var moment=require(_0xbacf('0x2'));var BPromise=require(_0xbacf('0x3'));var rp=require(_0xbacf('0x4'));var fs=require('fs');var path=require(_0xbacf('0x5'));var rimraf=require(_0xbacf('0x6'));var config=require(_0xbacf('0x7'));var attributes=require(_0xbacf('0x8'));var extensions=require(_0xbacf('0x9'));module[_0xbacf('0xa')]=function(_0x49e45b,_0x1a2535){return _0x49e45b[_0xbacf('0xb')]('Interval',attributes,{'tableName':_0xbacf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f4cc2,_0x564428){extensions['rewrite'](_0x49e45b,_0x3f4cc2);},'afterBulkCreate':function(_0x1c2478,_0x5e7b14,_0x517b97){_0x517b97();extensions[_0xbacf('0xd')](_0x49e45b,_0x1c2478[0x0]);},'afterUpdate':function(_0x468526,_0x44159f){extensions[_0xbacf('0xd')](_0x49e45b,_0x468526);},'afterDestroy':function(_0x103e75,_0x54c49b){extensions[_0xbacf('0xd')](_0x49e45b,_0x103e75);}}});};
\ No newline at end of file
+var _0xe24e=['define','Interval','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports'];(function(_0x398f3c,_0x36a5f7){var _0x576b50=function(_0x241331){while(--_0x241331){_0x398f3c['push'](_0x398f3c['shift']());}};_0x576b50(++_0x36a5f7);}(_0xe24e,0x15f));var _0xee24=function(_0x3e5bc8,_0x457d89){_0x3e5bc8=_0x3e5bc8-0x0;var _0xfd84bc=_0xe24e[_0x3e5bc8];return _0xfd84bc;};'use strict';var _=require(_0xee24('0x0'));var util=require(_0xee24('0x1'));var logger=require(_0xee24('0x2'))(_0xee24('0x3'));var moment=require(_0xee24('0x4'));var BPromise=require(_0xee24('0x5'));var rp=require(_0xee24('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xee24('0x7'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require('../../components/extensions/rewrite');module[_0xee24('0x8')]=function(_0x20c8a0,_0x44f46c){return _0x20c8a0[_0xee24('0x9')](_0xee24('0xa'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xf73710,_0xb9b347){extensions[_0xee24('0xb')](_0x20c8a0,_0xf73710);},'afterBulkCreate':function(_0x105eaf,_0x346647,_0x1cb7d6){_0x1cb7d6();extensions[_0xee24('0xb')](_0x20c8a0,_0x105eaf[0x0]);},'afterUpdate':function(_0x2fa6e1,_0x47f87f){extensions[_0xee24('0xb')](_0x20c8a0,_0x2fa6e1);},'afterDestroy':function(_0x1cfbf4,_0x1f9199){extensions[_0xee24('0xb')](_0x20c8a0,_0x1cfbf4);}}});};
\ No newline at end of file
index cf95e67..7557dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x8afdd0,_0x548ad1){var _0x3de7ac=function(_0x2dc2c4){while(--_0x2dc2c4){_0x8afdd0['push'](_0x8afdd0['shift']());}};_0x3de7ac(++_0x548ad1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 7771d96..dc3db10 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(_0x5a50d8,_0x313b1c){var _0x1b5263=function(_0x30d00d){while(--_0x30d00d){_0x5a50d8['push'](_0x5a50d8['shift']());}};_0x1b5263(++_0x313b1c);}(_0x5f2f,0x73));var _0xf5f2=function(_0x58b6f8,_0xa174cd){_0x58b6f8=_0x58b6f8-0x0;var _0xc1d891=_0x5f2f[_0x58b6f8];return _0xc1d891;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
+var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0xa44094,_0x10613e){var _0x4620a5=function(_0xc475c7){while(--_0xc475c7){_0xa44094['push'](_0xa44094['shift']());}};_0x4620a5(++_0x10613e);}(_0x2032,0xd9));var _0x2203=function(_0x5efe03,_0x104d8c){_0x5efe03=_0x5efe03-0x0;var _0x50a23b=_0x2032[_0x5efe03];return _0x50a23b;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
index de514a1..b0c49a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecee=['status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','x-forwarded-for','connection','remoteAddress','socket','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','\x20from\x20','stringify','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','reason','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','toString','base64','request','utf8','data','end'];(function(_0x465db2,_0x1778ec){var _0x3d9a00=function(_0x2482bd){while(--_0x2482bd){_0x465db2['push'](_0x465db2['shift']());}};_0x3d9a00(++_0x1778ec);}(_0xecee,0xf0));var _0xeece=function(_0x21562d,_0x269e9b){_0x21562d=_0x21562d-0x0;var _0x5c9084=_0xecee[_0x21562d];return _0x5c9084;};'use strict';var BPromise=require('bluebird');var https=require(_0xeece('0x0'));var logger=require(_0xeece('0x1'))(_0xeece('0x2'));var USERNAME=_0xeece('0x3');var PASSWORD=_0xeece('0x4');function openIssue(_0x19a9ce,_0x4b3516){var _0x3f52ce={'fields':{'project':{'key':_0x19a9ce[_0xeece('0x5')]||'MOTGUI'},'summary':(_0x19a9ce[_0xeece('0x6')]||'Report')+_0xeece('0x7')+_0x19a9ce['ip'],'description':_0x19a9ce['description']||JSON[_0xeece('0x8')](_0x19a9ce),'issuetype':{'name':_0x19a9ce['issuetype']||_0xeece('0x9')}}};_0x3f52ce[_0xeece('0xa')][_0xeece('0xb')]=_0x19a9ce[_0xeece('0xc')];_0x3f52ce[_0xeece('0xa')][_0xeece('0xd')]=_0x19a9ce[_0xeece('0xe')];_0x3f52ce[_0xeece('0xa')][_0xeece('0xf')]=_0x19a9ce[_0xeece('0x10')];_0x3f52ce[_0xeece('0xa')][_0xeece('0x11')]=_0x19a9ce[_0xeece('0x12')];_0x3f52ce[_0xeece('0xa')]['customfield_11504']=_0x19a9ce[_0xeece('0x13')];_0x3f52ce['fields']['customfield_10102']=_0x19a9ce['ip'];var _0x4dab0c={'host':_0xeece('0x14'),'port':0x1bb,'path':_0xeece('0x15'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xeece('0x16'),'Authorization':_0xeece('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0xeece('0x18')](_0xeece('0x19'))}};var _0xa892e3=JSON[_0xeece('0x8')](_0x3f52ce);var _0x171788=https[_0xeece('0x1a')](_0x4dab0c,function(_0x31bf81){_0x31bf81['setEncoding'](_0xeece('0x1b'));var _0x37949c='';_0x31bf81['on'](_0xeece('0x1c'),function(_0x43d31e){_0x37949c+=_0x43d31e;});_0x31bf81['on'](_0xeece('0x1d'),function(){if(_0x4b3516){return _0x4b3516[_0xeece('0x1e')](_0x31bf81[_0xeece('0x1f')])[_0xeece('0x20')](JSON[_0xeece('0x21')](_0x37949c));}});});_0x171788['on'](_0xeece('0x22'),function(_0x538df4){if(_0x4b3516){return _0x4b3516[_0xeece('0x1e')](0x1f4)['json']({'errors':[{'message':_0xeece('0x23'),'type':_0xeece('0x24')}]});}});_0x171788[_0xeece('0x25')](_0xa892e3);_0x171788[_0xeece('0x1d')]();}exports[_0xeece('0x26')]=openIssue;exports[_0xeece('0x27')]=function(_0x92fe8f,_0x306cb2){_0x92fe8f[_0xeece('0x28')]['ip']=_0x92fe8f['headers'][_0xeece('0x29')]||_0x92fe8f[_0xeece('0x2a')][_0xeece('0x2b')]||_0x92fe8f[_0xeece('0x2c')][_0xeece('0x2b')]||_0x92fe8f['connection']['socket'][_0xeece('0x2b')];return openIssue(_0x92fe8f[_0xeece('0x28')],_0x306cb2);};
\ No newline at end of file
+var _0x30fb=['track.xcallymotion.com','POST','application/json','toString','base64','stringify','request','setEncoding','utf8','data','end','status','statusCode','parse','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','send','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','key','MOTGUI','summary','Report','description','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102'];(function(_0x179fab,_0xaa9e04){var _0x7a500b=function(_0x4a5f14){while(--_0x4a5f14){_0x179fab['push'](_0x179fab['shift']());}};_0x7a500b(++_0xaa9e04);}(_0x30fb,0x15b));var _0xb30f=function(_0x34b17f,_0x14b5e2){_0x34b17f=_0x34b17f-0x0;var _0x470bfb=_0x30fb[_0x34b17f];return _0x470bfb;};'use strict';var BPromise=require(_0xb30f('0x0'));var https=require(_0xb30f('0x1'));var logger=require(_0xb30f('0x2'))('api');var USERNAME='support';var PASSWORD='3eAmWpBVP0';function openIssue(_0x1dccc1,_0x41047c){var _0xbb48fd={'fields':{'project':{'key':_0x1dccc1[_0xb30f('0x3')]||_0xb30f('0x4')},'summary':(_0x1dccc1[_0xb30f('0x5')]||_0xb30f('0x6'))+'\x20from\x20'+_0x1dccc1['ip'],'description':_0x1dccc1[_0xb30f('0x7')]||JSON['stringify'](_0x1dccc1),'issuetype':{'name':_0x1dccc1[_0xb30f('0x8')]||'Bug'}}};_0xbb48fd[_0xb30f('0x9')][_0xb30f('0xa')]=_0x1dccc1[_0xb30f('0xb')];_0xbb48fd[_0xb30f('0x9')][_0xb30f('0xc')]=_0x1dccc1[_0xb30f('0xd')];_0xbb48fd[_0xb30f('0x9')][_0xb30f('0xe')]=_0x1dccc1[_0xb30f('0xf')];_0xbb48fd[_0xb30f('0x9')][_0xb30f('0x10')]=_0x1dccc1[_0xb30f('0x11')];_0xbb48fd[_0xb30f('0x9')][_0xb30f('0x12')]=_0x1dccc1[_0xb30f('0x13')];_0xbb48fd[_0xb30f('0x9')][_0xb30f('0x14')]=_0x1dccc1['ip'];var _0x171498={'host':_0xb30f('0x15'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xb30f('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0xb30f('0x17'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0xb30f('0x18')](_0xb30f('0x19'))}};var _0x319ca3=JSON[_0xb30f('0x1a')](_0xbb48fd);var _0x3577d9=https[_0xb30f('0x1b')](_0x171498,function(_0x92c167){_0x92c167[_0xb30f('0x1c')](_0xb30f('0x1d'));var _0x5b0201='';_0x92c167['on'](_0xb30f('0x1e'),function(_0x40d72d){_0x5b0201+=_0x40d72d;});_0x92c167['on'](_0xb30f('0x1f'),function(){if(_0x41047c){return _0x41047c[_0xb30f('0x20')](_0x92c167[_0xb30f('0x21')])['json'](JSON[_0xb30f('0x22')](_0x5b0201));}});});_0x3577d9['on'](_0xb30f('0x23'),function(_0xf13ea5){if(_0x41047c){return _0x41047c[_0xb30f('0x20')](0x1f4)[_0xb30f('0x24')]({'errors':[{'message':_0xb30f('0x25'),'type':_0xb30f('0x26')}]});}});_0x3577d9[_0xb30f('0x27')](_0x319ca3);_0x3577d9['end']();}exports['openIssue']=openIssue;exports[_0xb30f('0x28')]=function(_0x401b06,_0x54bce6){_0x401b06[_0xb30f('0x29')]['ip']=_0x401b06[_0xb30f('0x2a')]['x-forwarded-for']||_0x401b06[_0xb30f('0x2b')][_0xb30f('0x2c')]||_0x401b06[_0xb30f('0x2d')]['remoteAddress']||_0x401b06[_0xb30f('0x2b')][_0xb30f('0x2d')][_0xb30f('0x2c')];return openIssue(_0x401b06[_0xb30f('0x29')],_0x54bce6);};
\ No newline at end of file
index 20f73ef..fbce6ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated'];(function(_0x12d8be,_0x244184){var _0xbcbff4=function(_0x2b25cf){while(--_0x2b25cf){_0x12d8be['push'](_0x12d8be['shift']());}};_0xbcbff4(++_0x244184);}(_0xbec5,0xe5));var _0x5bec=function(_0x44afa4,_0x5be27b){_0x44afa4=_0x44afa4-0x0;var _0xcad289=_0xbec5[_0x44afa4];return _0xcad289;};'use strict';var multer=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var path=require('path');var timeout=require(_0x5bec('0x2'));var express=require(_0x5bec('0x3'));var router=express[_0x5bec('0x4')]();var fs_extra=require(_0x5bec('0x5'));var auth=require(_0x5bec('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bec('0x7'));var controller=require(_0x5bec('0x8'));router[_0x5bec('0x9')]('/',auth['isAuthenticated'](),controller[_0x5bec('0xa')]);router[_0x5bec('0x9')](_0x5bec('0xb'),auth[_0x5bec('0xc')](),controller[_0x5bec('0xd')]);router[_0x5bec('0x9')](_0x5bec('0xe'),auth[_0x5bec('0xc')](),controller['show']);router[_0x5bec('0xf')]('/',auth['isAuthenticated'](),controller[_0x5bec('0x10')]);router[_0x5bec('0x11')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x12')]);router[_0x5bec('0x13')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x14')]);module[_0x5bec('0x15')]=router;
\ No newline at end of file
+var _0x6c76=['express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','post','create','update','delete','destroy','multer','util','path'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x6c76,0x184));var _0x66c7=function(_0x37e9b2,_0x37839a){_0x37e9b2=_0x37e9b2-0x0;var _0x2764e0=_0x6c76[_0x37e9b2];return _0x2764e0;};'use strict';var multer=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var path=require(_0x66c7('0x2'));var timeout=require('connect-timeout');var express=require(_0x66c7('0x3'));var router=express[_0x66c7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x66c7('0x5'));var config=require(_0x66c7('0x6'));var controller=require('./jscriptyAnswerReport.controller');router[_0x66c7('0x7')]('/',auth[_0x66c7('0x8')](),controller['index']);router[_0x66c7('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x66c7('0x9')]);router[_0x66c7('0x7')](_0x66c7('0xa'),auth['isAuthenticated'](),controller[_0x66c7('0xb')]);router[_0x66c7('0xc')]('/',auth[_0x66c7('0x8')](),controller[_0x66c7('0xd')]);router['put'](_0x66c7('0xa'),auth[_0x66c7('0x8')](),controller[_0x66c7('0xe')]);router[_0x66c7('0xf')](_0x66c7('0xa'),auth[_0x66c7('0x8')](),controller[_0x66c7('0x10')]);module['exports']=router;
\ No newline at end of file
index 397e69b..e1a2bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x7a54,0x106));var _0x47a5=function(_0x23dd9f,_0x50d1a5){_0x23dd9f=_0x23dd9f-0x0;var _0x2f8252=_0x7a54[_0x23dd9f];return _0x2f8252;};'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(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x7a54,0x106));var _0x47a5=function(_0x1d05f8,_0x32b6a6){_0x1d05f8=_0x1d05f8-0x0;var _0x4b3f3b=_0x7a54[_0x1d05f8];return _0x4b3f3b;};'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 3f78c07..ab4042b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['../../config/utils','../../config/environment','../../config/license/util','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','sendStatus','stack','send','index','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','map','name','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','filters','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','length','find','create','body','params','destroy','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0xa23f,0x7c));var _0xfa23=function(_0x9ae374,_0x5719e9){_0x9ae374=_0x9ae374-0x0;var _0x377d56=_0xa23f[_0x9ae374];return _0x377d56;};'use strict';var emlformat=require(_0xfa23('0x0'));var rimraf=require(_0xfa23('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfa23('0x2'));var moment=require(_0xfa23('0x3'));var BPromise=require(_0xfa23('0x4'));var Mustache=require(_0xfa23('0x5'));var util=require('util');var path=require(_0xfa23('0x6'));var sox=require('sox');var csv=require(_0xfa23('0x7'));var ejs=require(_0xfa23('0x8'));var fs=require('fs');var fs_extra=require(_0xfa23('0x9'));var _=require(_0xfa23('0xa'));var squel=require('squel');var crypto=require(_0xfa23('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfa23('0xc'));var toCsv=require(_0xfa23('0x7'));var querystring=require(_0xfa23('0xd'));var Papa=require(_0xfa23('0xe'));var Redis=require(_0xfa23('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfa23('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfa23('0x11'))('api');var utils=require(_0xfa23('0x12'));var config=require(_0xfa23('0x13'));var licenseUtil=require(_0xfa23('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e5ffe,_0x42380){_0x42380=_0x42380||0xcc;return function(_0x46f991){if(_0x46f991){return _0x1e5ffe['sendStatus'](_0x42380);}return _0x1e5ffe['status'](_0x42380)[_0xfa23('0x15')]();};}function respondWithResult(_0x23712b,_0x3f50f0){_0x3f50f0=_0x3f50f0||0xc8;return function(_0x36252c){if(_0x36252c){return _0x23712b['status'](_0x3f50f0)[_0xfa23('0x16')](_0x36252c);}};}function respondWithFilteredResult(_0xb7d11a,_0x2095a5){return function(_0x9611e0){if(_0x9611e0){var _0x542d9a=typeof _0x2095a5[_0xfa23('0x17')]===_0xfa23('0x18')&&typeof _0x2095a5[_0xfa23('0x19')]===_0xfa23('0x18');var _0x3fa5f6=_0x9611e0['count'];var _0x59610c=_0x542d9a?0x0:_0x2095a5['offset'];var _0x445bd0=_0x542d9a?_0x9611e0[_0xfa23('0x1a')]:_0x2095a5['offset']+_0x2095a5[_0xfa23('0x19')];var _0x2c456b;if(_0x445bd0>=_0x3fa5f6){_0x445bd0=_0x3fa5f6;_0x2c456b=0xc8;}else{_0x2c456b=0xce;}_0xb7d11a[_0xfa23('0x1b')](_0x2c456b);return _0xb7d11a['set'](_0xfa23('0x1c'),_0x59610c+'-'+_0x445bd0+'/'+_0x3fa5f6)[_0xfa23('0x16')](_0x9611e0);}return null;};}function patchUpdates(_0x47c323){return function(_0x16e4f9){try{jsonpatch[_0xfa23('0x1d')](_0x16e4f9,_0x47c323,!![]);}catch(_0x148f3b){return BPromise[_0xfa23('0x1e')](_0x148f3b);}return _0x16e4f9[_0xfa23('0x1f')]();};}function saveUpdates(_0x10ef95,_0x31eedb){return function(_0x485838){if(_0x485838){return _0x485838[_0xfa23('0x20')](_0x10ef95)[_0xfa23('0x21')](function(_0x34a2ce){return _0x34a2ce;});}return null;};}function removeEntity(_0xe4680f,_0x542cde){return function(_0x4500a2){if(_0x4500a2){return _0x4500a2['destroy']()[_0xfa23('0x21')](function(){_0xe4680f[_0xfa23('0x1b')](0xcc)[_0xfa23('0x15')]();});}};}function handleEntityNotFound(_0x26bdce,_0x3362f3){return function(_0x1340d9){if(!_0x1340d9){_0x26bdce[_0xfa23('0x22')](0x194);}return _0x1340d9;};}function handleError(_0x499407,_0x5e1780){_0x5e1780=_0x5e1780||0x1f4;return function(_0x2ae826){logger['error'](_0x2ae826[_0xfa23('0x23')]);if(_0x2ae826['name']){delete _0x2ae826['name'];}_0x499407[_0xfa23('0x1b')](_0x5e1780)[_0xfa23('0x24')](_0x2ae826);};}exports[_0xfa23('0x25')]=function(_0x3b00a8,_0x374169){var _0x24da31={},_0x3c9d9d={},_0x4c1ab0={'count':0x0,'rows':[]};var _0x591797=_['map'](db[_0xfa23('0x26')][_0xfa23('0x27')],function(_0x5df1f9){return{'name':_0x5df1f9[_0xfa23('0x28')],'type':_0x5df1f9[_0xfa23('0x29')][_0xfa23('0x2a')]};});_0x3c9d9d[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x591797,_0xfa23('0x2d'));_0x3c9d9d[_0xfa23('0x2e')]=_[_0xfa23('0x2f')](_0x3b00a8[_0xfa23('0x2e')]);_0x3c9d9d['filters']=_[_0xfa23('0x30')](_0x3c9d9d['model'],_0x3c9d9d[_0xfa23('0x2e')]);_0x24da31[_0xfa23('0x31')]=_[_0xfa23('0x30')](_0x3c9d9d[_0xfa23('0x2b')],qs[_0xfa23('0x32')](_0x3b00a8[_0xfa23('0x2e')][_0xfa23('0x32')]));_0x24da31[_0xfa23('0x31')]=_0x24da31[_0xfa23('0x31')]['length']?_0x24da31[_0xfa23('0x31')]:_0x3c9d9d['model'];if(!_0x3b00a8[_0xfa23('0x2e')][_0xfa23('0x33')](_0xfa23('0x34'))){_0x24da31[_0xfa23('0x19')]=qs[_0xfa23('0x19')](_0x3b00a8[_0xfa23('0x2e')][_0xfa23('0x19')]);_0x24da31['offset']=qs[_0xfa23('0x17')](_0x3b00a8[_0xfa23('0x2e')][_0xfa23('0x17')]);}_0x24da31[_0xfa23('0x35')]=qs['sort'](_0x3b00a8['query']['sort']);_0x24da31[_0xfa23('0x36')]=qs[_0xfa23('0x37')](_['pick'](_0x3b00a8[_0xfa23('0x2e')],_0x3c9d9d[_0xfa23('0x37')]),_0x591797);if(_0x3b00a8[_0xfa23('0x2e')]['filter']){_0x24da31[_0xfa23('0x36')]=_['merge'](_0x24da31[_0xfa23('0x36')],{'$or':_[_0xfa23('0x2c')](_0x591797,function(_0x329985){if(_0x329985[_0xfa23('0x29')]!==_0xfa23('0x38')){var _0x80827f={};_0x80827f[_0x329985['name']]={'$like':'%'+_0x3b00a8[_0xfa23('0x2e')][_0xfa23('0x39')]+'%'};return _0x80827f;}})});}_0x24da31=_[_0xfa23('0x3a')]({},_0x24da31,_0x3b00a8[_0xfa23('0x3b')]);var _0x48c3a4={'where':_0x24da31[_0xfa23('0x36')]};return db[_0xfa23('0x26')][_0xfa23('0x1a')](_0x48c3a4)[_0xfa23('0x21')](function(_0x113552){_0x4c1ab0[_0xfa23('0x1a')]=_0x113552;if(_0x3b00a8['query'][_0xfa23('0x3c')]){_0x24da31['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xfa23('0x3d')](_0x24da31);})[_0xfa23('0x21')](function(_0x5937e0){_0x4c1ab0[_0xfa23('0x3e')]=_0x5937e0;return _0x4c1ab0;})[_0xfa23('0x21')](respondWithFilteredResult(_0x374169,_0x24da31))[_0xfa23('0x3f')](handleError(_0x374169,null));};exports['show']=function(_0x3de346,_0x37f4c5){var _0xb73ed9={'raw':!![],'where':{'id':_0x3de346['params']['id']}},_0x539271={};_0x539271[_0xfa23('0x2b')]=_['keys'](db[_0xfa23('0x26')][_0xfa23('0x27')]);_0x539271[_0xfa23('0x2e')]=_['keys'](_0x3de346[_0xfa23('0x2e')]);_0x539271[_0xfa23('0x37')]=_[_0xfa23('0x30')](_0x539271[_0xfa23('0x2b')],_0x539271['query']);_0xb73ed9[_0xfa23('0x31')]=_[_0xfa23('0x30')](_0x539271[_0xfa23('0x2b')],qs['fields'](_0x3de346['query'][_0xfa23('0x32')]));_0xb73ed9['attributes']=_0xb73ed9[_0xfa23('0x31')][_0xfa23('0x40')]?_0xb73ed9[_0xfa23('0x31')]:_0x539271[_0xfa23('0x2b')];if(_0x3de346[_0xfa23('0x2e')][_0xfa23('0x3c')]){_0xb73ed9['include']=[{'all':!![]}];}_0xb73ed9=_[_0xfa23('0x3a')]({},_0xb73ed9,_0x3de346[_0xfa23('0x3b')]);return db[_0xfa23('0x26')][_0xfa23('0x41')](_0xb73ed9)[_0xfa23('0x21')](handleEntityNotFound(_0x37f4c5,null))[_0xfa23('0x21')](respondWithResult(_0x37f4c5,null))['catch'](handleError(_0x37f4c5,null));};exports[_0xfa23('0x42')]=function(_0x36a02c,_0x6ba64c){return db[_0xfa23('0x26')][_0xfa23('0x42')](_0x36a02c['body'],{})[_0xfa23('0x21')](respondWithResult(_0x6ba64c,0xc9))[_0xfa23('0x3f')](handleError(_0x6ba64c,null));};exports[_0xfa23('0x20')]=function(_0x5e4633,_0x253faf){if(_0x5e4633[_0xfa23('0x43')]['id']){delete _0x5e4633[_0xfa23('0x43')]['id'];}return db[_0xfa23('0x26')][_0xfa23('0x41')]({'where':{'id':_0x5e4633[_0xfa23('0x44')]['id']}})[_0xfa23('0x21')](handleEntityNotFound(_0x253faf,null))['then'](saveUpdates(_0x5e4633[_0xfa23('0x43')],null))['then'](respondWithResult(_0x253faf,null))[_0xfa23('0x3f')](handleError(_0x253faf,null));};exports[_0xfa23('0x45')]=function(_0x3824a9,_0xf24dd5){return db[_0xfa23('0x26')][_0xfa23('0x41')]({'where':{'id':_0x3824a9['params']['id']}})[_0xfa23('0x21')](handleEntityNotFound(_0xf24dd5,null))[_0xfa23('0x21')](removeEntity(_0xf24dd5,null))[_0xfa23('0x3f')](handleError(_0xf24dd5,null));};exports[_0xfa23('0x46')]=function(_0x13c37d,_0x22be14){return db[_0xfa23('0x26')]['describe']()[_0xfa23('0x21')](respondWithResult(_0x22be14,null))[_0xfa23('0x3f')](handleError(_0x22be14,null));};
\ No newline at end of file
+var _0xf5a7=['body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','error','stack','name','send','index','JscriptyAnswerReport','fieldName','key','model','map','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','type','VIRTUAL','merge','where','then','findAll','rows','catch','show','params','rawAttributes','intersection','include','options','create'];(function(_0x51bba3,_0x45635d){var _0x2b056e=function(_0x878637){while(--_0x878637){_0x51bba3['push'](_0x51bba3['shift']());}};_0x2b056e(++_0x45635d);}(_0xf5a7,0x133));var _0x7f5a=function(_0x524c96,_0x4c6de3){_0x524c96=_0x524c96-0x0;var _0x41154a=_0xf5a7[_0x524c96];return _0x41154a;};'use strict';var emlformat=require(_0x7f5a('0x0'));var rimraf=require(_0x7f5a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f5a('0x2'));var rp=require(_0x7f5a('0x3'));var moment=require(_0x7f5a('0x4'));var BPromise=require(_0x7f5a('0x5'));var Mustache=require(_0x7f5a('0x6'));var util=require(_0x7f5a('0x7'));var path=require(_0x7f5a('0x8'));var sox=require(_0x7f5a('0x9'));var csv=require(_0x7f5a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f5a('0xb'));var _=require(_0x7f5a('0xc'));var squel=require('squel');var crypto=require(_0x7f5a('0xd'));var jsforce=require(_0x7f5a('0xe'));var deskjs=require(_0x7f5a('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7f5a('0x10'));var Redis=require(_0x7f5a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7f5a('0x12'));var hardwareService=require(_0x7f5a('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x7f5a('0x14'));var config=require(_0x7f5a('0x15'));var licenseUtil=require(_0x7f5a('0x16'));var db=require(_0x7f5a('0x17'))['db'];function respondWithStatusCode(_0x169701,_0x325fda){_0x325fda=_0x325fda||0xcc;return function(_0x55ca4b){if(_0x55ca4b){return _0x169701[_0x7f5a('0x18')](_0x325fda);}return _0x169701[_0x7f5a('0x19')](_0x325fda)[_0x7f5a('0x1a')]();};}function respondWithResult(_0x112311,_0x1f1c17){_0x1f1c17=_0x1f1c17||0xc8;return function(_0x2a25ab){if(_0x2a25ab){return _0x112311[_0x7f5a('0x19')](_0x1f1c17)[_0x7f5a('0x1b')](_0x2a25ab);}};}function respondWithFilteredResult(_0x4ce5c2,_0x2ed7d3){return function(_0x3c6d7c){if(_0x3c6d7c){var _0x5c6810=typeof _0x2ed7d3[_0x7f5a('0x1c')]===_0x7f5a('0x1d')&&typeof _0x2ed7d3[_0x7f5a('0x1e')]===_0x7f5a('0x1d');var _0x568857=_0x3c6d7c[_0x7f5a('0x1f')];var _0xce9655=_0x5c6810?0x0:_0x2ed7d3[_0x7f5a('0x1c')];var _0x3e168e=_0x5c6810?_0x3c6d7c['count']:_0x2ed7d3[_0x7f5a('0x1c')]+_0x2ed7d3[_0x7f5a('0x1e')];var _0x557b16;if(_0x3e168e>=_0x568857){_0x3e168e=_0x568857;_0x557b16=0xc8;}else{_0x557b16=0xce;}_0x4ce5c2['status'](_0x557b16);return _0x4ce5c2[_0x7f5a('0x20')](_0x7f5a('0x21'),_0xce9655+'-'+_0x3e168e+'/'+_0x568857)[_0x7f5a('0x1b')](_0x3c6d7c);}return null;};}function patchUpdates(_0x90c080){return function(_0x208a6e){try{jsonpatch[_0x7f5a('0x22')](_0x208a6e,_0x90c080,!![]);}catch(_0x2942f9){return BPromise[_0x7f5a('0x23')](_0x2942f9);}return _0x208a6e['save']();};}function saveUpdates(_0x4b8d6b,_0x3d5f19){return function(_0x57019e){if(_0x57019e){return _0x57019e[_0x7f5a('0x24')](_0x4b8d6b)['then'](function(_0x3fda96){return _0x3fda96;});}return null;};}function removeEntity(_0x1c43bb,_0xf52b51){return function(_0xb65c0){if(_0xb65c0){return _0xb65c0[_0x7f5a('0x25')]()['then'](function(){_0x1c43bb[_0x7f5a('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x280a55,_0x31f206){return function(_0x49902a){if(!_0x49902a){_0x280a55[_0x7f5a('0x18')](0x194);}return _0x49902a;};}function handleError(_0x5d53cc,_0x35c43b){_0x35c43b=_0x35c43b||0x1f4;return function(_0x2bfbfe){logger[_0x7f5a('0x26')](_0x2bfbfe[_0x7f5a('0x27')]);if(_0x2bfbfe['name']){delete _0x2bfbfe[_0x7f5a('0x28')];}_0x5d53cc[_0x7f5a('0x19')](_0x35c43b)[_0x7f5a('0x29')](_0x2bfbfe);};}exports[_0x7f5a('0x2a')]=function(_0x49327f,_0x4ee1ca){var _0x550e81={},_0x30c290={},_0x2f8113={'count':0x0,'rows':[]};var _0x332baa=_['map'](db[_0x7f5a('0x2b')]['rawAttributes'],function(_0x347d5c){return{'name':_0x347d5c[_0x7f5a('0x2c')],'type':_0x347d5c['type'][_0x7f5a('0x2d')]};});_0x30c290[_0x7f5a('0x2e')]=_[_0x7f5a('0x2f')](_0x332baa,_0x7f5a('0x28'));_0x30c290[_0x7f5a('0x30')]=_[_0x7f5a('0x31')](_0x49327f[_0x7f5a('0x30')]);_0x30c290[_0x7f5a('0x32')]=_['intersection'](_0x30c290[_0x7f5a('0x2e')],_0x30c290['query']);_0x550e81['attributes']=_['intersection'](_0x30c290[_0x7f5a('0x2e')],qs[_0x7f5a('0x33')](_0x49327f[_0x7f5a('0x30')][_0x7f5a('0x33')]));_0x550e81[_0x7f5a('0x34')]=_0x550e81['attributes'][_0x7f5a('0x35')]?_0x550e81['attributes']:_0x30c290[_0x7f5a('0x2e')];if(!_0x49327f['query'][_0x7f5a('0x36')](_0x7f5a('0x37'))){_0x550e81[_0x7f5a('0x1e')]=qs['limit'](_0x49327f['query'][_0x7f5a('0x1e')]);_0x550e81[_0x7f5a('0x1c')]=qs[_0x7f5a('0x1c')](_0x49327f['query'][_0x7f5a('0x1c')]);}_0x550e81['order']=qs['sort'](_0x49327f[_0x7f5a('0x30')][_0x7f5a('0x38')]);_0x550e81['where']=qs[_0x7f5a('0x32')](_[_0x7f5a('0x39')](_0x49327f[_0x7f5a('0x30')],_0x30c290[_0x7f5a('0x32')]),_0x332baa);if(_0x49327f[_0x7f5a('0x30')]['filter']){_0x550e81['where']=_['merge'](_0x550e81['where'],{'$or':_[_0x7f5a('0x2f')](_0x332baa,function(_0x5f194b){if(_0x5f194b[_0x7f5a('0x3a')]!==_0x7f5a('0x3b')){var _0x3e06c6={};_0x3e06c6[_0x5f194b[_0x7f5a('0x28')]]={'$like':'%'+_0x49327f[_0x7f5a('0x30')]['filter']+'%'};return _0x3e06c6;}})});}_0x550e81=_[_0x7f5a('0x3c')]({},_0x550e81,_0x49327f['options']);var _0x367be8={'where':_0x550e81[_0x7f5a('0x3d')]};return db[_0x7f5a('0x2b')]['count'](_0x367be8)[_0x7f5a('0x3e')](function(_0x5219e8){_0x2f8113[_0x7f5a('0x1f')]=_0x5219e8;if(_0x49327f[_0x7f5a('0x30')]['includeAll']){_0x550e81['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x7f5a('0x3f')](_0x550e81);})['then'](function(_0x4d65c0){_0x2f8113[_0x7f5a('0x40')]=_0x4d65c0;return _0x2f8113;})[_0x7f5a('0x3e')](respondWithFilteredResult(_0x4ee1ca,_0x550e81))[_0x7f5a('0x41')](handleError(_0x4ee1ca,null));};exports[_0x7f5a('0x42')]=function(_0x1fa1cc,_0x185db9){var _0x121fdf={'raw':!![],'where':{'id':_0x1fa1cc[_0x7f5a('0x43')]['id']}},_0x29b022={};_0x29b022[_0x7f5a('0x2e')]=_[_0x7f5a('0x31')](db['JscriptyAnswerReport'][_0x7f5a('0x44')]);_0x29b022['query']=_[_0x7f5a('0x31')](_0x1fa1cc[_0x7f5a('0x30')]);_0x29b022[_0x7f5a('0x32')]=_['intersection'](_0x29b022[_0x7f5a('0x2e')],_0x29b022[_0x7f5a('0x30')]);_0x121fdf[_0x7f5a('0x34')]=_[_0x7f5a('0x45')](_0x29b022[_0x7f5a('0x2e')],qs[_0x7f5a('0x33')](_0x1fa1cc[_0x7f5a('0x30')]['fields']));_0x121fdf[_0x7f5a('0x34')]=_0x121fdf[_0x7f5a('0x34')][_0x7f5a('0x35')]?_0x121fdf[_0x7f5a('0x34')]:_0x29b022[_0x7f5a('0x2e')];if(_0x1fa1cc[_0x7f5a('0x30')]['includeAll']){_0x121fdf[_0x7f5a('0x46')]=[{'all':!![]}];}_0x121fdf=_[_0x7f5a('0x3c')]({},_0x121fdf,_0x1fa1cc[_0x7f5a('0x47')]);return db[_0x7f5a('0x2b')]['find'](_0x121fdf)[_0x7f5a('0x3e')](handleEntityNotFound(_0x185db9,null))[_0x7f5a('0x3e')](respondWithResult(_0x185db9,null))[_0x7f5a('0x41')](handleError(_0x185db9,null));};exports[_0x7f5a('0x48')]=function(_0x10457b,_0x21c7f6){return db[_0x7f5a('0x2b')][_0x7f5a('0x48')](_0x10457b[_0x7f5a('0x49')],{})[_0x7f5a('0x3e')](respondWithResult(_0x21c7f6,0xc9))[_0x7f5a('0x41')](handleError(_0x21c7f6,null));};exports[_0x7f5a('0x24')]=function(_0xaabf0f,_0x163b97){if(_0xaabf0f['body']['id']){delete _0xaabf0f[_0x7f5a('0x49')]['id'];}return db['JscriptyAnswerReport'][_0x7f5a('0x4a')]({'where':{'id':_0xaabf0f[_0x7f5a('0x43')]['id']}})[_0x7f5a('0x3e')](handleEntityNotFound(_0x163b97,null))['then'](saveUpdates(_0xaabf0f['body'],null))[_0x7f5a('0x3e')](respondWithResult(_0x163b97,null))[_0x7f5a('0x41')](handleError(_0x163b97,null));};exports[_0x7f5a('0x25')]=function(_0x3ad069,_0x5731d0){return db[_0x7f5a('0x2b')][_0x7f5a('0x4a')]({'where':{'id':_0x3ad069['params']['id']}})['then'](handleEntityNotFound(_0x5731d0,null))[_0x7f5a('0x3e')](removeEntity(_0x5731d0,null))[_0x7f5a('0x41')](handleError(_0x5731d0,null));};exports[_0x7f5a('0x4b')]=function(_0x225019,_0x361c56){return db['JscriptyAnswerReport'][_0x7f5a('0x4b')]()[_0x7f5a('0x3e')](respondWithResult(_0x361c56,null))['catch'](handleError(_0x361c56,null));};
\ No newline at end of file
index 3828c08..88479ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea94=['./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5a589a,_0x3d38d2){var _0x32624a=function(_0x344454){while(--_0x344454){_0x5a589a['push'](_0x5a589a['shift']());}};_0x32624a(++_0x3d38d2);}(_0xea94,0x1d8));var _0x4ea9=function(_0xf166de,_0x335fa7){_0xf166de=_0xf166de-0x0;var _0x4434f7=_0xea94[_0xf166de];return _0x4434f7;};'use strict';var _=require(_0x4ea9('0x0'));var util=require('util');var logger=require(_0x4ea9('0x1'))(_0x4ea9('0x2'));var moment=require(_0x4ea9('0x3'));var BPromise=require(_0x4ea9('0x4'));var rp=require(_0x4ea9('0x5'));var fs=require('fs');var path=require(_0x4ea9('0x6'));var rimraf=require(_0x4ea9('0x7'));var config=require(_0x4ea9('0x8'));var attributes=require(_0x4ea9('0x9'));module[_0x4ea9('0xa')]=function(_0x446033,_0x1c55f7){return _0x446033[_0x4ea9('0xb')](_0x4ea9('0xc'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed03=['./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x57f931,_0x2e058b){var _0x4db8b1=function(_0x2619c5){while(--_0x2619c5){_0x57f931['push'](_0x57f931['shift']());}};_0x4db8b1(++_0x2e058b);}(_0xed03,0xc8));var _0x3ed0=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xed03[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0x3ed0('0x0'));var util=require(_0x3ed0('0x1'));var logger=require(_0x3ed0('0x2'))(_0x3ed0('0x3'));var moment=require(_0x3ed0('0x4'));var BPromise=require(_0x3ed0('0x5'));var rp=require(_0x3ed0('0x6'));var fs=require('fs');var path=require(_0x3ed0('0x7'));var rimraf=require(_0x3ed0('0x8'));var config=require(_0x3ed0('0x9'));var attributes=require(_0x3ed0('0xa'));module[_0x3ed0('0xb')]=function(_0x40ae01,_0x4683ab){return _0x40ae01[_0x3ed0('0xc')](_0x3ed0('0xd'),attributes,{'tableName':_0x3ed0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d0df9e..ec76ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc094=['request','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x90b38f,_0x47fbd5){var _0x5f3d64=function(_0x67a7c0){while(--_0x67a7c0){_0x90b38f['push'](_0x90b38f['shift']());}};_0x5f3d64(++_0x47fbd5);}(_0xc094,0x131));var _0x4c09=function(_0x3e036f,_0x361755){_0x3e036f=_0x3e036f-0x0;var _0x5f278e=_0xc094[_0x3e036f];return _0x5f278e;};'use strict';var _=require('lodash');var util=require(_0x4c09('0x0'));var moment=require(_0x4c09('0x1'));var BPromise=require('bluebird');var rs=require(_0x4c09('0x2'));var fs=require('fs');var Redis=require(_0x4c09('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4c09('0x4'));var logger=require(_0x4c09('0x5'))(_0x4c09('0x6'));var config=require(_0x4c09('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4c09('0x8')][_0x4c09('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd9fc42,_0x15236f,_0x11e85f){return new BPromise(function(_0x35da9f,_0xd8005){return client[_0x4c09('0xa')](_0xd9fc42,_0x11e85f)['then'](function(_0x10a004){logger['info'](_0x4c09('0xb'),_0x15236f,_0x4c09('0xc'));logger[_0x4c09('0xd')](_0x4c09('0xe'),_0x15236f,_0x4c09('0xc'),JSON[_0x4c09('0xf')](_0x10a004));if(_0x10a004['error']){if(_0x10a004[_0x4c09('0x10')][_0x4c09('0x11')]===0x1f4){logger[_0x4c09('0x10')](_0x4c09('0xb'),_0x15236f,_0x10a004[_0x4c09('0x10')][_0x4c09('0x12')]);return _0xd8005(_0x10a004[_0x4c09('0x10')]['message']);}logger[_0x4c09('0x10')](_0x4c09('0xb'),_0x15236f,_0x10a004[_0x4c09('0x10')]['message']);return _0x35da9f(_0x10a004[_0x4c09('0x10')][_0x4c09('0x12')]);}else{logger[_0x4c09('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x15236f,'request\x20sent');_0x35da9f(_0x10a004[_0x4c09('0x14')][_0x4c09('0x12')]);}})['catch'](function(_0x5d79b9){logger[_0x4c09('0x10')](_0x4c09('0xb'),_0x15236f,_0x5d79b9);_0xd8005(_0x5d79b9);});});}
\ No newline at end of file
+var _0x4e61=['request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4e61,0xbb));var _0x14e6=function(_0x4063a4,_0x19d730){_0x4063a4=_0x4063a4-0x0;var _0x17908d=_0x4e61[_0x4063a4];return _0x17908d;};'use strict';var _=require(_0x14e6('0x0'));var util=require(_0x14e6('0x1'));var moment=require('moment');var BPromise=require(_0x14e6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14e6('0x3'))['db'];var utils=require(_0x14e6('0x4'));var logger=require(_0x14e6('0x5'))(_0x14e6('0x6'));var config=require(_0x14e6('0x7'));var jayson=require(_0x14e6('0x8'));var client=jayson[_0x14e6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d6fd4,_0x34bb12,_0x31ca94){return new BPromise(function(_0x178a0b,_0x2d882d){return client['request'](_0x4d6fd4,_0x31ca94)[_0x14e6('0xa')](function(_0x4a07cd){logger[_0x14e6('0xb')](_0x14e6('0xc'),_0x34bb12,_0x14e6('0xd'));logger['debug'](_0x14e6('0xe'),_0x34bb12,'request\x20sent',JSON[_0x14e6('0xf')](_0x4a07cd));if(_0x4a07cd[_0x14e6('0x10')]){if(_0x4a07cd[_0x14e6('0x10')]['code']===0x1f4){logger['error'](_0x14e6('0xc'),_0x34bb12,_0x4a07cd[_0x14e6('0x10')][_0x14e6('0x11')]);return _0x2d882d(_0x4a07cd[_0x14e6('0x10')][_0x14e6('0x11')]);}logger[_0x14e6('0x10')](_0x14e6('0xc'),_0x34bb12,_0x4a07cd['error'][_0x14e6('0x11')]);return _0x178a0b(_0x4a07cd['error'][_0x14e6('0x11')]);}else{logger[_0x14e6('0xb')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x34bb12,_0x14e6('0xd'));_0x178a0b(_0x4a07cd[_0x14e6('0x12')]['message']);}})[_0x14e6('0x13')](function(_0x1088a0){logger[_0x14e6('0x10')](_0x14e6('0xc'),_0x34bb12,_0x1088a0);_0x2d882d(_0x1088a0);});});}
\ No newline at end of file
index ca7f061..514457f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9c=['./jscriptyProject.controller','get','isAuthenticated','/:id/sessions','/:id/answers','/:id/summary','30s','post','create','/:id/clone','put','update','delete','/:id','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../config/environment'];(function(_0x107b37,_0x39d2e2){var _0x3b0dbe=function(_0x41cd91){while(--_0x41cd91){_0x107b37['push'](_0x107b37['shift']());}};_0x3b0dbe(++_0x39d2e2);}(_0x1f9c,0x1dd));var _0xc1f9=function(_0x3e79c8,_0x40e942){_0x3e79c8=_0x3e79c8-0x0;var _0x9287a9=_0x1f9c[_0x3e79c8];return _0x9287a9;};'use strict';var multer=require(_0xc1f9('0x0'));var util=require(_0xc1f9('0x1'));var path=require(_0xc1f9('0x2'));var timeout=require(_0xc1f9('0x3'));var express=require(_0xc1f9('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc1f9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc1f9('0x6'));var controller=require(_0xc1f9('0x7'));router[_0xc1f9('0x8')]('/',auth[_0xc1f9('0x9')](),controller['index']);router[_0xc1f9('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0xc1f9('0xa'),auth[_0xc1f9('0x9')](),controller['getSessions']);router[_0xc1f9('0x8')](_0xc1f9('0xb'),auth[_0xc1f9('0x9')](),controller['getAnswers']);router[_0xc1f9('0x8')](_0xc1f9('0xc'),auth['isAuthenticated'](),timeout(_0xc1f9('0xd')),controller['getSummary']);router[_0xc1f9('0xe')]('/',auth['isAuthenticated'](),controller[_0xc1f9('0xf')]);router[_0xc1f9('0xe')](_0xc1f9('0x10'),auth[_0xc1f9('0x9')](),controller['clone']);router[_0xc1f9('0x11')]('/:id',auth[_0xc1f9('0x9')](),controller[_0xc1f9('0x12')]);router[_0xc1f9('0x13')](_0xc1f9('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xc1f9('0x15')]=router;
\ No newline at end of file
+var _0x7cbb=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','/:id/clone','clone','update','delete'];(function(_0x3e5cd3,_0x17c4b2){var _0x1e8bd0=function(_0x3e2290){while(--_0x3e2290){_0x3e5cd3['push'](_0x3e5cd3['shift']());}};_0x1e8bd0(++_0x17c4b2);}(_0x7cbb,0x1f0));var _0xb7cb=function(_0x509f29,_0x1ec695){_0x509f29=_0x509f29-0x0;var _0xf279f2=_0x7cbb[_0x509f29];return _0xf279f2;};'use strict';var multer=require(_0xb7cb('0x0'));var util=require(_0xb7cb('0x1'));var path=require('path');var timeout=require(_0xb7cb('0x2'));var express=require(_0xb7cb('0x3'));var router=express[_0xb7cb('0x4')]();var fs_extra=require(_0xb7cb('0x5'));var auth=require(_0xb7cb('0x6'));var interaction=require(_0xb7cb('0x7'));var config=require('../../config/environment');var controller=require('./jscriptyProject.controller');router[_0xb7cb('0x8')]('/',auth[_0xb7cb('0x9')](),controller[_0xb7cb('0xa')]);router[_0xb7cb('0x8')](_0xb7cb('0xb'),auth[_0xb7cb('0x9')](),controller[_0xb7cb('0xc')]);router[_0xb7cb('0x8')]('/:id/sessions',auth['isAuthenticated'](),controller[_0xb7cb('0xd')]);router[_0xb7cb('0x8')](_0xb7cb('0xe'),auth['isAuthenticated'](),controller[_0xb7cb('0xf')]);router[_0xb7cb('0x8')](_0xb7cb('0x10'),auth['isAuthenticated'](),timeout(_0xb7cb('0x11')),controller[_0xb7cb('0x12')]);router[_0xb7cb('0x13')]('/',auth[_0xb7cb('0x9')](),controller['create']);router[_0xb7cb('0x13')](_0xb7cb('0x14'),auth[_0xb7cb('0x9')](),controller[_0xb7cb('0x15')]);router['put'](_0xb7cb('0xb'),auth[_0xb7cb('0x9')](),controller[_0xb7cb('0x16')]);router[_0xb7cb('0x17')](_0xb7cb('0xb'),auth[_0xb7cb('0x9')](),controller[_0xb7cb('0x18')]);module[_0xb7cb('0x19')]=router;
\ No newline at end of file
index 9a17b93..f32a8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa612=['lodash','STRING','name','isObjectLike','setDataValue','formData','stringify','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize'];(function(_0x5a619b,_0x2edb27){var _0x394db6=function(_0x31554e){while(--_0x31554e){_0x5a619b['push'](_0x5a619b['shift']());}};_0x394db6(++_0x2edb27);}(_0xa612,0x15e));var _0x2a61=function(_0x1f335d,_0x552f5e){_0x1f335d=_0x1f335d-0x0;var _0x5e373c=_0xa612[_0x1f335d];return _0x5e373c;};'use strict';var Sequelize=require(_0x2a61('0x0'));var _=require(_0x2a61('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0x2a61('0x2')],'unique':_0x2a61('0x3')},'description':{'type':Sequelize[_0x2a61('0x2')]},'formData':{'type':Sequelize['TEXT']('long'),'set':function(_0x4149e9){if(_[_0x2a61('0x4')](_0x4149e9)){this[_0x2a61('0x5')](_0x2a61('0x6'),JSON[_0x2a61('0x7')](_0x4149e9));}else if(_['isString'](_0x4149e9)){this[_0x2a61('0x5')]('formData',_0x4149e9);}else{this[_0x2a61('0x5')](_0x2a61('0x6'),util[_0x2a61('0x8')](_0x2a61('0x9'),this['getDataValue'](_0x2a61('0x3'))||'',this[_0x2a61('0xa')](_0x2a61('0xb'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x2a61('0xc')],'defaultValue':![]}};
\ No newline at end of file
+var _0xcc1d=['stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT','long','isObjectLike','setDataValue','formData'];(function(_0x556bb8,_0x9ea5bb){var _0x440f61=function(_0x5a2fb0){while(--_0x5a2fb0){_0x556bb8['push'](_0x556bb8['shift']());}};_0x440f61(++_0x9ea5bb);}(_0xcc1d,0x1f4));var _0xdcc1=function(_0x119629,_0x246787){_0x119629=_0x119629-0x0;var _0x49a771=_0xcc1d[_0x119629];return _0x49a771;};'use strict';var Sequelize=require(_0xdcc1('0x0'));var _=require(_0xdcc1('0x1'));var util=require(_0xdcc1('0x2'));module[_0xdcc1('0x3')]={'name':{'type':Sequelize[_0xdcc1('0x4')],'unique':'name'},'description':{'type':Sequelize[_0xdcc1('0x4')]},'formData':{'type':Sequelize[_0xdcc1('0x5')](_0xdcc1('0x6')),'set':function(_0x91d63d){if(_[_0xdcc1('0x7')](_0x91d63d)){this[_0xdcc1('0x8')](_0xdcc1('0x9'),JSON[_0xdcc1('0xa')](_0x91d63d));}else if(_[_0xdcc1('0xb')](_0x91d63d)){this[_0xdcc1('0x8')](_0xdcc1('0x9'),_0x91d63d);}else{this[_0xdcc1('0x8')](_0xdcc1('0x9'),util[_0xdcc1('0xc')](_0xdcc1('0xd'),this[_0xdcc1('0xe')](_0xdcc1('0xf'))||'',this['getDataValue']('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xdcc1('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xdcc1('0x10')],'defaultValue':![]}};
\ No newline at end of file
index 58cc4e7..31338d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eaf=['include','rows','catch','show','find','create','get','role','user','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','updatedAt','body','userProfileId','autoAssociation','findOne','JscriptySessionReport','nolimit','order','ProjectId','JscriptyAnswerReport','findAll','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','Projects','destroy','error','stack','name','index','map','JscriptyProject','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll'];(function(_0x2e5d16,_0x46d89f){var _0x43b77b=function(_0x545945){while(--_0x545945){_0x2e5d16['push'](_0x2e5d16['shift']());}};_0x43b77b(++_0x46d89f);}(_0x3eaf,0x190));var _0xf3ea=function(_0x5808a3,_0x486ebe){_0x5808a3=_0x5808a3-0x0;var _0x4c709d=_0x3eaf[_0x5808a3];return _0x4c709d;};'use strict';var emlformat=require(_0xf3ea('0x0'));var rimraf=require(_0xf3ea('0x1'));var zipdir=require(_0xf3ea('0x2'));var jsonpatch=require(_0xf3ea('0x3'));var rp=require(_0xf3ea('0x4'));var moment=require(_0xf3ea('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf3ea('0x6'));var util=require(_0xf3ea('0x7'));var path=require(_0xf3ea('0x8'));var sox=require('sox');var csv=require(_0xf3ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf3ea('0xa'));var _=require(_0xf3ea('0xb'));var squel=require(_0xf3ea('0xc'));var crypto=require('crypto');var jsforce=require(_0xf3ea('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf3ea('0x9'));var querystring=require(_0xf3ea('0xe'));var Papa=require('papaparse');var Redis=require(_0xf3ea('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf3ea('0x10'));var as=require(_0xf3ea('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf3ea('0x12'));var utils=require(_0xf3ea('0x13'));var config=require(_0xf3ea('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf3ea('0x15'))['db'];function respondWithStatusCode(_0x174c19,_0x146c8a){_0x146c8a=_0x146c8a||0xcc;return function(_0x4c3801){if(_0x4c3801){return _0x174c19[_0xf3ea('0x16')](_0x146c8a);}return _0x174c19[_0xf3ea('0x17')](_0x146c8a)[_0xf3ea('0x18')]();};}function respondWithResult(_0x462567,_0x25e16a){_0x25e16a=_0x25e16a||0xc8;return function(_0x212521){if(_0x212521){return _0x462567[_0xf3ea('0x17')](_0x25e16a)[_0xf3ea('0x19')](_0x212521);}};}function respondWithFilteredResult(_0x56fa75,_0x46f3c4){return function(_0x5a560b){if(_0x5a560b){var _0x56d00f=typeof _0x46f3c4[_0xf3ea('0x1a')]==='undefined'&&typeof _0x46f3c4[_0xf3ea('0x1b')]===_0xf3ea('0x1c');var _0x24f0ac=_0x5a560b[_0xf3ea('0x1d')];var _0x4806fb=_0x56d00f?0x0:_0x46f3c4[_0xf3ea('0x1a')];var _0x1806ec=_0x56d00f?_0x5a560b[_0xf3ea('0x1d')]:_0x46f3c4[_0xf3ea('0x1a')]+_0x46f3c4[_0xf3ea('0x1b')];var _0x4fb6c0;if(_0x1806ec>=_0x24f0ac){_0x1806ec=_0x24f0ac;_0x4fb6c0=0xc8;}else{_0x4fb6c0=0xce;}_0x56fa75['status'](_0x4fb6c0);return _0x56fa75[_0xf3ea('0x1e')](_0xf3ea('0x1f'),_0x4806fb+'-'+_0x1806ec+'/'+_0x24f0ac)['json'](_0x5a560b);}return null;};}function patchUpdates(_0x2c7419){return function(_0x42f13c){try{jsonpatch[_0xf3ea('0x20')](_0x42f13c,_0x2c7419,!![]);}catch(_0xc85489){return BPromise[_0xf3ea('0x21')](_0xc85489);}return _0x42f13c[_0xf3ea('0x22')]();};}function saveUpdates(_0x134b7d,_0x27d607){return function(_0x34ec8f){if(_0x34ec8f){return _0x34ec8f[_0xf3ea('0x23')](_0x134b7d)[_0xf3ea('0x24')](function(_0x591fca){return _0x591fca;});}return null;};}function removeEntity(_0x2aee66,_0x23ed4a){return function(_0x5931e1){if(_0x5931e1){return _0x5931e1['destroy']()['then'](function(){var _0x1e96bd=_0x5931e1['get']({'plain':!![]});var _0x2e089a=_0xf3ea('0x25');return db['UserProfileResource'][_0xf3ea('0x26')]({'where':{'type':_0x2e089a,'resourceId':_0x1e96bd['id']}})[_0xf3ea('0x24')](function(){return _0x5931e1;});})[_0xf3ea('0x24')](function(){_0x2aee66[_0xf3ea('0x17')](0xcc)[_0xf3ea('0x18')]();});}};}function handleEntityNotFound(_0x5b91e9,_0x5338ae){return function(_0x4a7c07){if(!_0x4a7c07){_0x5b91e9['sendStatus'](0x194);}return _0x4a7c07;};}function handleError(_0x89086,_0x199c76){_0x199c76=_0x199c76||0x1f4;return function(_0x120232){logger[_0xf3ea('0x27')](_0x120232[_0xf3ea('0x28')]);if(_0x120232[_0xf3ea('0x29')]){delete _0x120232[_0xf3ea('0x29')];}_0x89086[_0xf3ea('0x17')](_0x199c76)['send'](_0x120232);};}exports[_0xf3ea('0x2a')]=function(_0x98bf71,_0x246103){var _0x2e623a={},_0x9c5d48={},_0x35abd3={'count':0x0,'rows':[]};var _0x7508d7=_[_0xf3ea('0x2b')](db[_0xf3ea('0x2c')][_0xf3ea('0x2d')],function(_0x5aa84d){return{'name':_0x5aa84d['fieldName'],'type':_0x5aa84d[_0xf3ea('0x2e')][_0xf3ea('0x2f')]};});_0x9c5d48[_0xf3ea('0x30')]=_[_0xf3ea('0x2b')](_0x7508d7,_0xf3ea('0x29'));_0x9c5d48[_0xf3ea('0x31')]=_[_0xf3ea('0x32')](_0x98bf71[_0xf3ea('0x31')]);_0x9c5d48[_0xf3ea('0x33')]=_['intersection'](_0x9c5d48[_0xf3ea('0x30')],_0x9c5d48[_0xf3ea('0x31')]);_0x2e623a[_0xf3ea('0x34')]=_[_0xf3ea('0x35')](_0x9c5d48[_0xf3ea('0x30')],qs[_0xf3ea('0x36')](_0x98bf71[_0xf3ea('0x31')][_0xf3ea('0x36')]));_0x2e623a[_0xf3ea('0x34')]=_0x2e623a[_0xf3ea('0x34')][_0xf3ea('0x37')]?_0x2e623a[_0xf3ea('0x34')]:_0x9c5d48[_0xf3ea('0x30')];if(!_0x98bf71[_0xf3ea('0x31')][_0xf3ea('0x38')]('nolimit')){_0x2e623a['limit']=qs[_0xf3ea('0x1b')](_0x98bf71[_0xf3ea('0x31')][_0xf3ea('0x1b')]);_0x2e623a['offset']=qs[_0xf3ea('0x1a')](_0x98bf71['query'][_0xf3ea('0x1a')]);}_0x2e623a['order']=qs[_0xf3ea('0x39')](_0x98bf71['query'][_0xf3ea('0x39')]);_0x2e623a[_0xf3ea('0x3a')]=qs[_0xf3ea('0x33')](_[_0xf3ea('0x3b')](_0x98bf71[_0xf3ea('0x31')],_0x9c5d48[_0xf3ea('0x33')]),_0x7508d7);if(_0x98bf71[_0xf3ea('0x31')][_0xf3ea('0x3c')]){_0x2e623a[_0xf3ea('0x3a')]=_[_0xf3ea('0x3d')](_0x2e623a[_0xf3ea('0x3a')],{'$or':_['map'](_0x7508d7,function(_0x2920be){if(_0x2920be['type']!=='VIRTUAL'){var _0x620a9b={};_0x620a9b[_0x2920be[_0xf3ea('0x29')]]={'$like':'%'+_0x98bf71[_0xf3ea('0x31')]['filter']+'%'};return _0x620a9b;}})});}_0x2e623a=_[_0xf3ea('0x3d')]({},_0x2e623a,_0x98bf71[_0xf3ea('0x3e')]);var _0x50dfec={'where':_0x2e623a[_0xf3ea('0x3a')]};return db[_0xf3ea('0x2c')][_0xf3ea('0x1d')](_0x50dfec)[_0xf3ea('0x24')](function(_0x4adffc){_0x35abd3[_0xf3ea('0x1d')]=_0x4adffc;if(_0x98bf71[_0xf3ea('0x31')][_0xf3ea('0x3f')]){_0x2e623a[_0xf3ea('0x40')]=[{'all':!![]}];}return db[_0xf3ea('0x2c')]['findAll'](_0x2e623a);})[_0xf3ea('0x24')](function(_0xe09c97){_0x35abd3[_0xf3ea('0x41')]=_0xe09c97;return _0x35abd3;})[_0xf3ea('0x24')](respondWithFilteredResult(_0x246103,_0x2e623a))[_0xf3ea('0x42')](handleError(_0x246103,null));};exports[_0xf3ea('0x43')]=function(_0x3106cd,_0x46c8ec){var _0x132ece={'raw':![],'where':{'id':_0x3106cd['params']['id']}},_0x22b81f={};_0x22b81f[_0xf3ea('0x30')]=_[_0xf3ea('0x32')](db['JscriptyProject'][_0xf3ea('0x2d')]);_0x22b81f['query']=_[_0xf3ea('0x32')](_0x3106cd['query']);_0x22b81f['filters']=_[_0xf3ea('0x35')](_0x22b81f[_0xf3ea('0x30')],_0x22b81f[_0xf3ea('0x31')]);_0x132ece[_0xf3ea('0x34')]=_[_0xf3ea('0x35')](_0x22b81f[_0xf3ea('0x30')],qs['fields'](_0x3106cd[_0xf3ea('0x31')][_0xf3ea('0x36')]));_0x132ece[_0xf3ea('0x34')]=_0x132ece[_0xf3ea('0x34')]['length']?_0x132ece[_0xf3ea('0x34')]:_0x22b81f['model'];if(_0x3106cd[_0xf3ea('0x31')]['includeAll']){_0x132ece[_0xf3ea('0x40')]=[{'all':!![]}];}_0x132ece=_[_0xf3ea('0x3d')]({},_0x132ece,_0x3106cd['options']);return db[_0xf3ea('0x2c')][_0xf3ea('0x44')](_0x132ece)[_0xf3ea('0x24')](handleEntityNotFound(_0x46c8ec,null))['then'](respondWithResult(_0x46c8ec,null))['catch'](handleError(_0x46c8ec,null));};exports[_0xf3ea('0x45')]=function(_0xea830e,_0x34dcdc){return db[_0xf3ea('0x2c')]['create'](_0xea830e['body'],{})[_0xf3ea('0x24')](function(_0x3dd7e5){var _0x3f3217=_0xea830e['user'][_0xf3ea('0x46')]({'plain':!![]});if(!_0x3f3217)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f3217[_0xf3ea('0x47')]===_0xf3ea('0x48')){var _0x366202=_0x3dd7e5[_0xf3ea('0x46')]({'plain':!![]});var _0x5aa381=_0xf3ea('0x25');return db['UserProfileSection'][_0xf3ea('0x44')]({'where':{'name':_0x5aa381,'userProfileId':_0x3f3217['userProfileId']},'raw':!![]})[_0xf3ea('0x24')](function(_0x24f3ae){if(_0x24f3ae&&_0x24f3ae['autoAssociation']===0x0){return db[_0xf3ea('0x49')][_0xf3ea('0x45')]({'name':_0x366202[_0xf3ea('0x29')],'resourceId':_0x366202['id'],'type':_0x24f3ae[_0xf3ea('0x29')],'sectionId':_0x24f3ae['id']},{})['then'](function(){return _0x3dd7e5;});}else{return _0x3dd7e5;}})[_0xf3ea('0x42')](function(_0x5b71d6){logger['error'](_0xf3ea('0x4a'),_0x5b71d6);throw _0x5b71d6;});}return _0x3dd7e5;})[_0xf3ea('0x24')](respondWithResult(_0x34dcdc,0xc9))[_0xf3ea('0x42')](handleError(_0x34dcdc,null));};exports[_0xf3ea('0x4b')]=function(_0x58e9b2,_0x360836){var _0xa3e103={'where':{'id':_0x58e9b2[_0xf3ea('0x4c')]['id']}},_0x487af2={};_0x487af2[_0xf3ea('0x30')]=_[_0xf3ea('0x32')](db[_0xf3ea('0x2c')][_0xf3ea('0x2d')]);_0xa3e103[_0xf3ea('0x34')]=_[_0xf3ea('0x35')](_0x487af2[_0xf3ea('0x30')],qs['fields'](_0x58e9b2['query'][_0xf3ea('0x36')]));_0xa3e103[_0xf3ea('0x34')]=_0xa3e103[_0xf3ea('0x34')]['length']?_0xa3e103[_0xf3ea('0x34')]:_0x487af2[_0xf3ea('0x30')];if(_0x58e9b2[_0xf3ea('0x31')][_0xf3ea('0x3f')]){_0xa3e103['include']=[{'all':!![]}];}_0xa3e103=_[_0xf3ea('0x3d')]({},_0xa3e103,_0x58e9b2['options']);return db[_0xf3ea('0x2c')][_0xf3ea('0x44')](_0xa3e103)[_0xf3ea('0x24')](handleEntityNotFound(_0x360836,null))['then'](function(_0x3cb8ec){if(_0x3cb8ec){var _0x5c28d6=_0x3cb8ec[_0xf3ea('0x46')]({'plain':!![]});_0x5c28d6=qs['omit'](_0x5c28d6,['id','createdAt',_0xf3ea('0x4d')]);_0x58e9b2[_0xf3ea('0x4e')]=_['omit'](_0x58e9b2[_0xf3ea('0x4e')],['id','createdAt',_0xf3ea('0x4d')]);return db['JscriptyProject'][_0xf3ea('0x45')](_[_0xf3ea('0x3d')](_0x5c28d6,_0x58e9b2['body']),{'include':_0x58e9b2['query'][_0xf3ea('0x3f')]?[{'all':!![]}]:undefined})[_0xf3ea('0x24')](function(_0x93c9f5){var _0x40775a=_0x58e9b2['user']['get']({'plain':!![]});if(!_0x40775a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x40775a[_0xf3ea('0x47')]===_0xf3ea('0x48')){var _0x5d820e=_0x93c9f5[_0xf3ea('0x46')]({'plain':!![]});var _0x123779=_0xf3ea('0x25');return db['UserProfileSection']['find']({'where':{'name':_0x123779,'userProfileId':_0x40775a[_0xf3ea('0x4f')]},'raw':!![]})[_0xf3ea('0x24')](function(_0x367a62){if(_0x367a62&&_0x367a62[_0xf3ea('0x50')]===0x0){return db[_0xf3ea('0x49')][_0xf3ea('0x45')]({'name':_0x5d820e[_0xf3ea('0x29')],'resourceId':_0x5d820e['id'],'type':_0x367a62[_0xf3ea('0x29')],'sectionId':_0x367a62['id']},{})[_0xf3ea('0x24')](function(){return _0x93c9f5;});}else{return _0x93c9f5;}})[_0xf3ea('0x42')](function(_0x3cbe1c){logger[_0xf3ea('0x27')](_0xf3ea('0x4a'),_0x3cbe1c);throw _0x3cbe1c;});}return _0x93c9f5;});}})[_0xf3ea('0x24')](respondWithResult(_0x360836,0xc9))['catch'](handleError(_0x360836,null));};exports[_0xf3ea('0x23')]=function(_0xf18ba0,_0x373d45){if(_0xf18ba0[_0xf3ea('0x4e')]['id']){delete _0xf18ba0[_0xf3ea('0x4e')]['id'];}return db[_0xf3ea('0x2c')]['find']({'where':{'id':_0xf18ba0[_0xf3ea('0x4c')]['id']}})[_0xf3ea('0x24')](handleEntityNotFound(_0x373d45,null))[_0xf3ea('0x24')](saveUpdates(_0xf18ba0[_0xf3ea('0x4e')],null))[_0xf3ea('0x24')](respondWithResult(_0x373d45,null))[_0xf3ea('0x42')](handleError(_0x373d45,null));};exports[_0xf3ea('0x26')]=function(_0x1cc791,_0x400735){return db[_0xf3ea('0x2c')]['find']({'where':{'id':_0x1cc791[_0xf3ea('0x4c')]['id']}})[_0xf3ea('0x24')](handleEntityNotFound(_0x400735,null))[_0xf3ea('0x24')](removeEntity(_0x400735,null))[_0xf3ea('0x42')](handleError(_0x400735,null));};exports['getSessions']=function(_0x36ec7f,_0x275a75,_0x198cbb){var _0x10ac96={'raw':!![],'where':{}};var _0x1cc231={};var _0x468add={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xf3ea('0x51')]({'where':{'id':_0x36ec7f[_0xf3ea('0x4c')]['id']}})[_0xf3ea('0x24')](handleEntityNotFound(_0x275a75,null))[_0xf3ea('0x24')](function(_0x546c41){if(_0x546c41){_0x1cc231['model']=_['keys'](db[_0xf3ea('0x52')][_0xf3ea('0x2d')]);_0x1cc231[_0xf3ea('0x31')]=_[_0xf3ea('0x32')](_0x36ec7f[_0xf3ea('0x31')]);_0x1cc231['filters']=_['intersection'](_0x1cc231[_0xf3ea('0x30')],_0x1cc231['query']);_0x10ac96[_0xf3ea('0x34')]=_[_0xf3ea('0x35')](_0x1cc231[_0xf3ea('0x30')],qs[_0xf3ea('0x36')](_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x36')]));_0x10ac96[_0xf3ea('0x34')]=_0x10ac96[_0xf3ea('0x34')][_0xf3ea('0x37')]?_0x10ac96['attributes']:_0x1cc231['model'];if(!_0x36ec7f['query'][_0xf3ea('0x38')](_0xf3ea('0x53'))){_0x10ac96[_0xf3ea('0x1b')]=qs['limit'](_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x1b')]);_0x10ac96['offset']=qs[_0xf3ea('0x1a')](_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x1a')]);}_0x10ac96[_0xf3ea('0x54')]=qs[_0xf3ea('0x39')](_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x39')]);_0x10ac96[_0xf3ea('0x3a')]=qs['filters'](_[_0xf3ea('0x3b')](_0x36ec7f[_0xf3ea('0x31')],_0x1cc231[_0xf3ea('0x33')]));_0x10ac96[_0xf3ea('0x3a')][_0xf3ea('0x55')]=_0x546c41['id'];if(_0x36ec7f['query'][_0xf3ea('0x3c')]){_0x10ac96[_0xf3ea('0x3a')]=_[_0xf3ea('0x3d')](_0x10ac96[_0xf3ea('0x3a')],{'$or':_[_0xf3ea('0x2b')](_0x10ac96['attributes'],function(_0x1f9ac0){var _0x3d5f18={};_0x3d5f18[_0x1f9ac0]={'$like':'%'+_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x3c')]+'%'};return _0x3d5f18;})});}_0x10ac96=_[_0xf3ea('0x3d')]({},_0x10ac96,_0x36ec7f['options']);return db['JscriptySessionReport'][_0xf3ea('0x1d')]({'where':_0x10ac96[_0xf3ea('0x3a')]})[_0xf3ea('0x24')](function(_0x47c8c0){_0x468add['count']=_0x47c8c0;if(_0x36ec7f[_0xf3ea('0x31')][_0xf3ea('0x3f')]){_0x10ac96['include']=[{'all':!![]}];}return db[_0xf3ea('0x52')]['findAll'](_0x10ac96);})[_0xf3ea('0x24')](function(_0x8d6a58){_0x468add[_0xf3ea('0x41')]=_0x8d6a58;return _0x468add;});}})[_0xf3ea('0x24')](respondWithFilteredResult(_0x275a75,_0x10ac96))[_0xf3ea('0x42')](handleError(_0x275a75,null));};exports['getAnswers']=function(_0x3c3803,_0x2c8f48,_0x46129a){var _0x24b75e={'raw':!![],'where':{}};var _0x43de2c={};var _0x17b500={'count':0x0,'rows':[]};return db[_0xf3ea('0x2c')]['findOne']({'where':{'id':_0x3c3803[_0xf3ea('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2c8f48,null))['then'](function(_0x249a6b){if(_0x249a6b){_0x43de2c[_0xf3ea('0x30')]=_[_0xf3ea('0x32')](db[_0xf3ea('0x56')][_0xf3ea('0x2d')]);_0x43de2c[_0xf3ea('0x31')]=_[_0xf3ea('0x32')](_0x3c3803[_0xf3ea('0x31')]);_0x43de2c['filters']=_[_0xf3ea('0x35')](_0x43de2c[_0xf3ea('0x30')],_0x43de2c['query']);_0x24b75e['attributes']=_[_0xf3ea('0x35')](_0x43de2c['model'],qs[_0xf3ea('0x36')](_0x3c3803[_0xf3ea('0x31')][_0xf3ea('0x36')]));_0x24b75e['attributes']=_0x24b75e['attributes'][_0xf3ea('0x37')]?_0x24b75e[_0xf3ea('0x34')]:_0x43de2c[_0xf3ea('0x30')];if(!_0x3c3803[_0xf3ea('0x31')][_0xf3ea('0x38')](_0xf3ea('0x53'))){_0x24b75e[_0xf3ea('0x1b')]=qs[_0xf3ea('0x1b')](_0x3c3803[_0xf3ea('0x31')]['limit']);_0x24b75e['offset']=qs[_0xf3ea('0x1a')](_0x3c3803[_0xf3ea('0x31')]['offset']);}_0x24b75e[_0xf3ea('0x54')]=qs['sort'](_0x3c3803[_0xf3ea('0x31')][_0xf3ea('0x39')]);_0x24b75e[_0xf3ea('0x3a')]=qs[_0xf3ea('0x33')](_[_0xf3ea('0x3b')](_0x3c3803['query'],_0x43de2c[_0xf3ea('0x33')]));_0x24b75e['where'][_0xf3ea('0x55')]=_0x249a6b['id'];if(_0x3c3803[_0xf3ea('0x31')]['filter']){_0x24b75e[_0xf3ea('0x3a')]=_['merge'](_0x24b75e['where'],{'$or':_[_0xf3ea('0x2b')](_0x24b75e[_0xf3ea('0x34')],function(_0x152a31){var _0x528ee4={};_0x528ee4[_0x152a31]={'$like':'%'+_0x3c3803[_0xf3ea('0x31')]['filter']+'%'};return _0x528ee4;})});}_0x24b75e=_[_0xf3ea('0x3d')]({},_0x24b75e,_0x3c3803[_0xf3ea('0x3e')]);return db[_0xf3ea('0x56')][_0xf3ea('0x1d')]({'where':_0x24b75e[_0xf3ea('0x3a')]})[_0xf3ea('0x24')](function(_0x1a3dec){_0x17b500[_0xf3ea('0x1d')]=_0x1a3dec;if(_0x3c3803['query'][_0xf3ea('0x3f')]){_0x24b75e[_0xf3ea('0x40')]=[{'all':!![]}];}return db[_0xf3ea('0x56')][_0xf3ea('0x57')](_0x24b75e);})[_0xf3ea('0x24')](function(_0x1d33b6){_0x17b500[_0xf3ea('0x41')]=_0x1d33b6;return _0x17b500;});}})[_0xf3ea('0x24')](respondWithFilteredResult(_0x2c8f48,_0x24b75e))[_0xf3ea('0x42')](handleError(_0x2c8f48,null));};function char(_0x569330){return _0xf3ea('0x58')===typeof _0x569330?String[_0xf3ea('0x59')][_0xf3ea('0x20')](null,arguments):_0x569330;}function needsEncapsulation(_0x4217b0){return!!_0x4217b0&&(_0x4217b0[_0xf3ea('0x5a')]()[_0xf3ea('0x5b')](char(0xd))>=0x0||_0x4217b0[_0xf3ea('0x5a')]()['indexOf'](char(0xa))>=0x0||_0x4217b0[_0xf3ea('0x5a')]()[_0xf3ea('0x5b')](char(0x2c))>=0x0||_0x4217b0[_0xf3ea('0x5a')]()[_0xf3ea('0x5b')](char(0x22))>=0x0);}function encapsulate(_0x165fd4){var _0x3770ee=char(0x22),_0x191f66='\x5c'+char(0x22),_0x3009fa=_0x165fd4[_0xf3ea('0x5a')]()[_0xf3ea('0x5c')](new RegExp(_0x3770ee,'g'),_0x191f66);return _0x3770ee+_0x3009fa+_0x3770ee;}exports[_0xf3ea('0x5d')]=function(_0x5e6768,_0xf6c7d,_0x36029f){var _0xea103,_0x74c76d;var _0x76aa08={'where':{'ProjectId':_0x5e6768[_0xf3ea('0x4c')]['id']}};if(_0x5e6768[_0xf3ea('0x31')][_0xf3ea('0x5e')]){_0x76aa08[_0xf3ea('0x3a')]['starttime']=JSON[_0xf3ea('0x5f')](_0x5e6768[_0xf3ea('0x31')]['startTime']);}return db['JscriptySessionReport'][_0xf3ea('0x57')](_0x76aa08)[_0xf3ea('0x24')](handleEntityNotFound(_0xf6c7d,null))['then'](function(_0x369781){if(_0x369781){_0xea103=_0x369781;return db[_0xf3ea('0x60')]['findAll']({'where':{'SessionId':{'$in':_[_0xf3ea('0x2b')](_0xea103,'id')},'ProjectId':_0x5e6768[_0xf3ea('0x4c')]['id']},'order':_0xf3ea('0x61')});}})[_0xf3ea('0x24')](handleEntityNotFound(_0xf6c7d,null))[_0xf3ea('0x24')](function(_0x25fac6){if(_0x25fac6){_0x74c76d=_0x25fac6;var _0x2ec297={};for(var _0x34f7dd=0x0,_0x2d94d9=_0x74c76d[_0xf3ea('0x37')];_0x34f7dd<_0x2d94d9;_0x34f7dd++){if(!_0x2ec297[_0xf3ea('0x38')](_0x74c76d[_0x34f7dd][_0xf3ea('0x62')])){_0x2ec297[_0x74c76d[_0x34f7dd][_0xf3ea('0x62')]]=needsEncapsulation(_0x74c76d[_0x34f7dd][_0xf3ea('0x63')])?encapsulate(_0x74c76d[_0x34f7dd][_0xf3ea('0x63')]):_0x74c76d[_0x34f7dd][_0xf3ea('0x63')];}}var _0x309ffb=[],_0x142196={};for(var _0x5b0fbb=0x0,_0xcca54c=_0xea103['length'];_0x5b0fbb<_0xcca54c;_0x5b0fbb++){_0x142196={'ProjectId':_0x5e6768[_0xf3ea('0x4c')]['id'],'SessionId':_0xea103[_0x5b0fbb]['id'],'StartTime':moment(_0xea103[_0x5b0fbb][_0xf3ea('0x64')])[_0xf3ea('0x65')](_0xf3ea('0x66'))};for(var _0xcb8804=0x0,_0x513d01=_0x74c76d[_0xf3ea('0x37')];_0xcb8804<_0x513d01;_0xcb8804++){if(_0x74c76d[_0xcb8804][_0xf3ea('0x67')]==_0xea103[_0x5b0fbb]['id']&&_0x2ec297[_0xf3ea('0x38')](_0x74c76d[_0xcb8804]['questionId'])){_0x142196[_0x2ec297[_0x74c76d[_0xcb8804]['questionId']]]=_0x74c76d[_0xcb8804][_0xf3ea('0x68')];}}for(var _0xc43017 in _0x2ec297){if(!_0x142196[_0xf3ea('0x38')](_0x2ec297[_0xc43017])){_0x142196[_0x2ec297[_0xc43017]]=null;}}_0x309ffb[_0xf3ea('0x69')](_0x142196);}return _0x309ffb;}})[_0xf3ea('0x24')](function(_0x2775d2){if(!_[_0xf3ea('0x6a')](_0x2775d2)){var _0x2ef37b=toCsv(_0x2775d2);var _0x1441c5=Date[_0xf3ea('0x6b')]();fs['writeFileSync'](util[_0xf3ea('0x65')](_0xf3ea('0x6c'),_0x5e6768[_0xf3ea('0x4c')]['id'],_0x1441c5),_0x2ef37b);_0xf6c7d[_0xf3ea('0x6d')](_0xf3ea('0x6e'),_0xf3ea('0x6f')+util[_0xf3ea('0x65')](_0xf3ea('0x70'),_0x5e6768['params']['id'],_0x1441c5));_0xf6c7d[_0xf3ea('0x6d')](_0xf3ea('0x71'),_0xf3ea('0x72'));return _0xf6c7d[_0xf3ea('0x73')](util[_0xf3ea('0x65')](_0xf3ea('0x6c'),_0x5e6768[_0xf3ea('0x4c')]['id'],_0x1441c5));}else{return _0xf6c7d['sendStatus'](0xcc);}})[_0xf3ea('0x42')](handleError(_0xf6c7d,null));};
\ No newline at end of file
+var _0x0abf=['util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Projects','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','model','keys','query','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','map','type','VIRTUAL','merge','options','JscriptyProject','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','clone','omit','updatedAt','createdAt','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','JscriptySessionReport','ProjectId','getAnswers','JscriptyAnswerReport','order','number','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','hasOwnProperty','question','format','YYYY-MM-DD\x20HH:mm:ss','questionId','answer','isEmpty','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','/tmp/Jscripty_Project_%d_Summary_%s.csv','eml-format','zip-dir','fast-json-patch','bluebird'];(function(_0x38d92b,_0x1be181){var _0x56c746=function(_0x2d8a65){while(--_0x2d8a65){_0x38d92b['push'](_0x38d92b['shift']());}};_0x56c746(++_0x1be181);}(_0x0abf,0xe8));var _0xf0ab=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x0abf[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0xf0ab('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0ab('0x1'));var jsonpatch=require(_0xf0ab('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0ab('0x3'));var Mustache=require('mustache');var util=require(_0xf0ab('0x4'));var path=require(_0xf0ab('0x5'));var sox=require(_0xf0ab('0x6'));var csv=require(_0xf0ab('0x7'));var ejs=require(_0xf0ab('0x8'));var fs=require('fs');var fs_extra=require(_0xf0ab('0x9'));var _=require(_0xf0ab('0xa'));var squel=require('squel');var crypto=require(_0xf0ab('0xb'));var jsforce=require(_0xf0ab('0xc'));var deskjs=require(_0xf0ab('0xd'));var toCsv=require(_0xf0ab('0x7'));var querystring=require('querystring');var Papa=require(_0xf0ab('0xe'));var Redis=require(_0xf0ab('0xf'));var authService=require(_0xf0ab('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0ab('0x11'));var logger=require('../../config/logger')(_0xf0ab('0x12'));var utils=require(_0xf0ab('0x13'));var config=require(_0xf0ab('0x14'));var licenseUtil=require(_0xf0ab('0x15'));var db=require(_0xf0ab('0x16'))['db'];function respondWithStatusCode(_0x38ca67,_0x34ccdc){_0x34ccdc=_0x34ccdc||0xcc;return function(_0x4fdd5f){if(_0x4fdd5f){return _0x38ca67[_0xf0ab('0x17')](_0x34ccdc);}return _0x38ca67[_0xf0ab('0x18')](_0x34ccdc)[_0xf0ab('0x19')]();};}function respondWithResult(_0x35c75f,_0x1824ef){_0x1824ef=_0x1824ef||0xc8;return function(_0x36cabe){if(_0x36cabe){return _0x35c75f[_0xf0ab('0x18')](_0x1824ef)[_0xf0ab('0x1a')](_0x36cabe);}};}function respondWithFilteredResult(_0x180d0b,_0x3c5bfd){return function(_0x20f453){if(_0x20f453){var _0x221bac=typeof _0x3c5bfd[_0xf0ab('0x1b')]===_0xf0ab('0x1c')&&typeof _0x3c5bfd[_0xf0ab('0x1d')]==='undefined';var _0x457465=_0x20f453[_0xf0ab('0x1e')];var _0x1803f0=_0x221bac?0x0:_0x3c5bfd[_0xf0ab('0x1b')];var _0x776619=_0x221bac?_0x20f453[_0xf0ab('0x1e')]:_0x3c5bfd[_0xf0ab('0x1b')]+_0x3c5bfd[_0xf0ab('0x1d')];var _0x1713d6;if(_0x776619>=_0x457465){_0x776619=_0x457465;_0x1713d6=0xc8;}else{_0x1713d6=0xce;}_0x180d0b[_0xf0ab('0x18')](_0x1713d6);return _0x180d0b[_0xf0ab('0x1f')](_0xf0ab('0x20'),_0x1803f0+'-'+_0x776619+'/'+_0x457465)[_0xf0ab('0x1a')](_0x20f453);}return null;};}function patchUpdates(_0x22a205){return function(_0x2cd961){try{jsonpatch[_0xf0ab('0x21')](_0x2cd961,_0x22a205,!![]);}catch(_0x537673){return BPromise[_0xf0ab('0x22')](_0x537673);}return _0x2cd961[_0xf0ab('0x23')]();};}function saveUpdates(_0x1e1483,_0x11ab3a){return function(_0x3bf6a1){if(_0x3bf6a1){return _0x3bf6a1[_0xf0ab('0x24')](_0x1e1483)[_0xf0ab('0x25')](function(_0x20140b){return _0x20140b;});}return null;};}function removeEntity(_0x36ad01,_0x18bb37){return function(_0x43119f){if(_0x43119f){return _0x43119f['destroy']()['then'](function(){var _0x4eee21=_0x43119f[_0xf0ab('0x26')]({'plain':!![]});var _0x4f0caf=_0xf0ab('0x27');return db[_0xf0ab('0x28')]['destroy']({'where':{'type':_0x4f0caf,'resourceId':_0x4eee21['id']}})[_0xf0ab('0x25')](function(){return _0x43119f;});})[_0xf0ab('0x25')](function(){_0x36ad01[_0xf0ab('0x18')](0xcc)[_0xf0ab('0x19')]();});}};}function handleEntityNotFound(_0x7d4ff9,_0x502921){return function(_0x2d0da7){if(!_0x2d0da7){_0x7d4ff9['sendStatus'](0x194);}return _0x2d0da7;};}function handleError(_0x55d799,_0x1dcd2e){_0x1dcd2e=_0x1dcd2e||0x1f4;return function(_0x4306c6){logger[_0xf0ab('0x29')](_0x4306c6[_0xf0ab('0x2a')]);if(_0x4306c6[_0xf0ab('0x2b')]){delete _0x4306c6[_0xf0ab('0x2b')];}_0x55d799[_0xf0ab('0x18')](_0x1dcd2e)[_0xf0ab('0x2c')](_0x4306c6);};}exports[_0xf0ab('0x2d')]=function(_0x2f0fcd,_0x21e8ac){var _0x199753={},_0x58cbe1={},_0x1e1ffb={'count':0x0,'rows':[]};var _0x35973a=_['map'](db['JscriptyProject'][_0xf0ab('0x2e')],function(_0x1dc84e){return{'name':_0x1dc84e[_0xf0ab('0x2f')],'type':_0x1dc84e['type']['key']};});_0x58cbe1[_0xf0ab('0x30')]=_['map'](_0x35973a,_0xf0ab('0x2b'));_0x58cbe1['query']=_[_0xf0ab('0x31')](_0x2f0fcd[_0xf0ab('0x32')]);_0x58cbe1['filters']=_['intersection'](_0x58cbe1[_0xf0ab('0x30')],_0x58cbe1[_0xf0ab('0x32')]);_0x199753[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x58cbe1[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x199753[_0xf0ab('0x33')]=_0x199753[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x199753[_0xf0ab('0x33')]:_0x58cbe1[_0xf0ab('0x30')];if(!_0x2f0fcd[_0xf0ab('0x32')]['hasOwnProperty'](_0xf0ab('0x37'))){_0x199753[_0xf0ab('0x1d')]=qs[_0xf0ab('0x1d')](_0x2f0fcd['query'][_0xf0ab('0x1d')]);_0x199753[_0xf0ab('0x1b')]=qs[_0xf0ab('0x1b')](_0x2f0fcd['query'][_0xf0ab('0x1b')]);}_0x199753['order']=qs[_0xf0ab('0x38')](_0x2f0fcd['query'][_0xf0ab('0x38')]);_0x199753[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_[_0xf0ab('0x3b')](_0x2f0fcd[_0xf0ab('0x32')],_0x58cbe1[_0xf0ab('0x3a')]),_0x35973a);if(_0x2f0fcd['query'][_0xf0ab('0x3c')]){_0x199753[_0xf0ab('0x39')]=_['merge'](_0x199753[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x35973a,function(_0x1d4eec){if(_0x1d4eec[_0xf0ab('0x3e')]!==_0xf0ab('0x3f')){var _0x11e3b7={};_0x11e3b7[_0x1d4eec[_0xf0ab('0x2b')]]={'$like':'%'+_0x2f0fcd['query'][_0xf0ab('0x3c')]+'%'};return _0x11e3b7;}})});}_0x199753=_[_0xf0ab('0x40')]({},_0x199753,_0x2f0fcd[_0xf0ab('0x41')]);var _0x4bd6d1={'where':_0x199753[_0xf0ab('0x39')]};return db[_0xf0ab('0x42')][_0xf0ab('0x1e')](_0x4bd6d1)[_0xf0ab('0x25')](function(_0x2b7ed5){_0x1e1ffb['count']=_0x2b7ed5;if(_0x2f0fcd[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x199753[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x42')][_0xf0ab('0x45')](_0x199753);})[_0xf0ab('0x25')](function(_0x45849c){_0x1e1ffb[_0xf0ab('0x46')]=_0x45849c;return _0x1e1ffb;})[_0xf0ab('0x25')](respondWithFilteredResult(_0x21e8ac,_0x199753))[_0xf0ab('0x47')](handleError(_0x21e8ac,null));};exports[_0xf0ab('0x48')]=function(_0x32ec93,_0x22a265){var _0x5e6b6b={'raw':![],'where':{'id':_0x32ec93[_0xf0ab('0x49')]['id']}},_0x4c4ab9={};_0x4c4ab9['model']=_[_0xf0ab('0x31')](db[_0xf0ab('0x42')]['rawAttributes']);_0x4c4ab9[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x32ec93['query']);_0x4c4ab9[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],_0x4c4ab9[_0xf0ab('0x32')]);_0x5e6b6b[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x4c4ab9[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x32ec93[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x5e6b6b[_0xf0ab('0x33')]=_0x5e6b6b[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x5e6b6b[_0xf0ab('0x33')]:_0x4c4ab9['model'];if(_0x32ec93['query'][_0xf0ab('0x43')]){_0x5e6b6b['include']=[{'all':!![]}];}_0x5e6b6b=_['merge']({},_0x5e6b6b,_0x32ec93['options']);return db[_0xf0ab('0x42')][_0xf0ab('0x4a')](_0x5e6b6b)[_0xf0ab('0x25')](handleEntityNotFound(_0x22a265,null))[_0xf0ab('0x25')](respondWithResult(_0x22a265,null))[_0xf0ab('0x47')](handleError(_0x22a265,null));};exports[_0xf0ab('0x4b')]=function(_0x472c1b,_0x1a0f21){return db[_0xf0ab('0x42')][_0xf0ab('0x4b')](_0x472c1b[_0xf0ab('0x4c')],{})[_0xf0ab('0x25')](function(_0x4e6c9b){var _0x393c9a=_0x472c1b[_0xf0ab('0x4d')][_0xf0ab('0x26')]({'plain':!![]});if(!_0x393c9a)throw new Error(_0xf0ab('0x4e'));if(_0x393c9a[_0xf0ab('0x4f')]===_0xf0ab('0x4d')){var _0x430921=_0x4e6c9b[_0xf0ab('0x26')]({'plain':!![]});var _0x47f564='Projects';return db['UserProfileSection'][_0xf0ab('0x4a')]({'where':{'name':_0x47f564,'userProfileId':_0x393c9a[_0xf0ab('0x50')]},'raw':!![]})['then'](function(_0xa1a416){if(_0xa1a416&&_0xa1a416[_0xf0ab('0x51')]===0x0){return db['UserProfileResource'][_0xf0ab('0x4b')]({'name':_0x430921[_0xf0ab('0x2b')],'resourceId':_0x430921['id'],'type':_0xa1a416[_0xf0ab('0x2b')],'sectionId':_0xa1a416['id']},{})[_0xf0ab('0x25')](function(){return _0x4e6c9b;});}else{return _0x4e6c9b;}})[_0xf0ab('0x47')](function(_0x33112b){logger[_0xf0ab('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x33112b);throw _0x33112b;});}return _0x4e6c9b;})[_0xf0ab('0x25')](respondWithResult(_0x1a0f21,0xc9))['catch'](handleError(_0x1a0f21,null));};exports[_0xf0ab('0x52')]=function(_0x4c9d2b,_0x1a402b){var _0x5c721a={'where':{'id':_0x4c9d2b[_0xf0ab('0x49')]['id']}},_0x535274={};_0x535274['model']=_[_0xf0ab('0x31')](db['JscriptyProject'][_0xf0ab('0x2e')]);_0x5c721a['attributes']=_[_0xf0ab('0x34')](_0x535274[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x4c9d2b['query']['fields']));_0x5c721a['attributes']=_0x5c721a[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x5c721a['attributes']:_0x535274['model'];if(_0x4c9d2b[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x5c721a[_0xf0ab('0x44')]=[{'all':!![]}];}_0x5c721a=_[_0xf0ab('0x40')]({},_0x5c721a,_0x4c9d2b[_0xf0ab('0x41')]);return db[_0xf0ab('0x42')][_0xf0ab('0x4a')](_0x5c721a)[_0xf0ab('0x25')](handleEntityNotFound(_0x1a402b,null))[_0xf0ab('0x25')](function(_0x1f180f){if(_0x1f180f){var _0x1e6a4e=_0x1f180f['get']({'plain':!![]});_0x1e6a4e=qs[_0xf0ab('0x53')](_0x1e6a4e,['id','createdAt',_0xf0ab('0x54')]);_0x4c9d2b[_0xf0ab('0x4c')]=_[_0xf0ab('0x53')](_0x4c9d2b[_0xf0ab('0x4c')],['id',_0xf0ab('0x55'),_0xf0ab('0x54')]);return db[_0xf0ab('0x42')][_0xf0ab('0x4b')](_[_0xf0ab('0x40')](_0x1e6a4e,_0x4c9d2b[_0xf0ab('0x4c')]),{'include':_0x4c9d2b['query'][_0xf0ab('0x43')]?[{'all':!![]}]:undefined})[_0xf0ab('0x25')](function(_0x4062b7){var _0x1d4a72=_0x4c9d2b[_0xf0ab('0x4d')][_0xf0ab('0x26')]({'plain':!![]});if(!_0x1d4a72)throw new Error(_0xf0ab('0x4e'));if(_0x1d4a72[_0xf0ab('0x4f')]===_0xf0ab('0x4d')){var _0x570379=_0x4062b7['get']({'plain':!![]});var _0x7e0318=_0xf0ab('0x27');return db[_0xf0ab('0x56')]['find']({'where':{'name':_0x7e0318,'userProfileId':_0x1d4a72[_0xf0ab('0x50')]},'raw':!![]})[_0xf0ab('0x25')](function(_0xd61dcf){if(_0xd61dcf&&_0xd61dcf['autoAssociation']===0x0){return db[_0xf0ab('0x28')][_0xf0ab('0x4b')]({'name':_0x570379[_0xf0ab('0x2b')],'resourceId':_0x570379['id'],'type':_0xd61dcf[_0xf0ab('0x2b')],'sectionId':_0xd61dcf['id']},{})[_0xf0ab('0x25')](function(){return _0x4062b7;});}else{return _0x4062b7;}})['catch'](function(_0x3f0e11){logger[_0xf0ab('0x29')](_0xf0ab('0x57'),_0x3f0e11);throw _0x3f0e11;});}return _0x4062b7;});}})[_0xf0ab('0x25')](respondWithResult(_0x1a402b,0xc9))[_0xf0ab('0x47')](handleError(_0x1a402b,null));};exports[_0xf0ab('0x24')]=function(_0xe3fc19,_0x2b0b89){if(_0xe3fc19[_0xf0ab('0x4c')]['id']){delete _0xe3fc19[_0xf0ab('0x4c')]['id'];}return db[_0xf0ab('0x42')][_0xf0ab('0x4a')]({'where':{'id':_0xe3fc19[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x2b0b89,null))['then'](saveUpdates(_0xe3fc19[_0xf0ab('0x4c')],null))[_0xf0ab('0x25')](respondWithResult(_0x2b0b89,null))[_0xf0ab('0x47')](handleError(_0x2b0b89,null));};exports['destroy']=function(_0x416ebf,_0x4b8496){return db[_0xf0ab('0x42')][_0xf0ab('0x4a')]({'where':{'id':_0x416ebf[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x4b8496,null))[_0xf0ab('0x25')](removeEntity(_0x4b8496,null))['catch'](handleError(_0x4b8496,null));};exports['getSessions']=function(_0x43f9c0,_0x461c7a,_0x283426){var _0x549c70={'raw':!![],'where':{}};var _0x300424={};var _0x92ade0={'count':0x0,'rows':[]};return db[_0xf0ab('0x42')][_0xf0ab('0x58')]({'where':{'id':_0x43f9c0['params']['id']}})['then'](handleEntityNotFound(_0x461c7a,null))['then'](function(_0x3fddb4){if(_0x3fddb4){_0x300424[_0xf0ab('0x30')]=_[_0xf0ab('0x31')](db[_0xf0ab('0x59')][_0xf0ab('0x2e')]);_0x300424[_0xf0ab('0x32')]=_[_0xf0ab('0x31')](_0x43f9c0[_0xf0ab('0x32')]);_0x300424[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x300424[_0xf0ab('0x30')],_0x300424['query']);_0x549c70[_0xf0ab('0x33')]=_[_0xf0ab('0x34')](_0x300424[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x43f9c0[_0xf0ab('0x32')][_0xf0ab('0x35')]));_0x549c70[_0xf0ab('0x33')]=_0x549c70[_0xf0ab('0x33')]['length']?_0x549c70[_0xf0ab('0x33')]:_0x300424[_0xf0ab('0x30')];if(!_0x43f9c0['query']['hasOwnProperty']('nolimit')){_0x549c70[_0xf0ab('0x1d')]=qs[_0xf0ab('0x1d')](_0x43f9c0[_0xf0ab('0x32')][_0xf0ab('0x1d')]);_0x549c70[_0xf0ab('0x1b')]=qs[_0xf0ab('0x1b')](_0x43f9c0['query'][_0xf0ab('0x1b')]);}_0x549c70['order']=qs[_0xf0ab('0x38')](_0x43f9c0['query'][_0xf0ab('0x38')]);_0x549c70['where']=qs[_0xf0ab('0x3a')](_['pick'](_0x43f9c0['query'],_0x300424[_0xf0ab('0x3a')]));_0x549c70[_0xf0ab('0x39')][_0xf0ab('0x5a')]=_0x3fddb4['id'];if(_0x43f9c0[_0xf0ab('0x32')][_0xf0ab('0x3c')]){_0x549c70[_0xf0ab('0x39')]=_[_0xf0ab('0x40')](_0x549c70[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x549c70[_0xf0ab('0x33')],function(_0x1650c0){var _0x31f464={};_0x31f464[_0x1650c0]={'$like':'%'+_0x43f9c0[_0xf0ab('0x32')]['filter']+'%'};return _0x31f464;})});}_0x549c70=_[_0xf0ab('0x40')]({},_0x549c70,_0x43f9c0[_0xf0ab('0x41')]);return db[_0xf0ab('0x59')][_0xf0ab('0x1e')]({'where':_0x549c70[_0xf0ab('0x39')]})[_0xf0ab('0x25')](function(_0x465f99){_0x92ade0[_0xf0ab('0x1e')]=_0x465f99;if(_0x43f9c0[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x549c70[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x59')]['findAll'](_0x549c70);})[_0xf0ab('0x25')](function(_0x1f18cd){_0x92ade0[_0xf0ab('0x46')]=_0x1f18cd;return _0x92ade0;});}})[_0xf0ab('0x25')](respondWithFilteredResult(_0x461c7a,_0x549c70))['catch'](handleError(_0x461c7a,null));};exports[_0xf0ab('0x5b')]=function(_0x177f79,_0x4463cc,_0x318e89){var _0x29f010={'raw':!![],'where':{}};var _0x478860={};var _0x17251d={'count':0x0,'rows':[]};return db[_0xf0ab('0x42')]['findOne']({'where':{'id':_0x177f79[_0xf0ab('0x49')]['id']}})['then'](handleEntityNotFound(_0x4463cc,null))[_0xf0ab('0x25')](function(_0x277cec){if(_0x277cec){_0x478860['model']=_[_0xf0ab('0x31')](db[_0xf0ab('0x5c')]['rawAttributes']);_0x478860['query']=_[_0xf0ab('0x31')](_0x177f79['query']);_0x478860[_0xf0ab('0x3a')]=_[_0xf0ab('0x34')](_0x478860['model'],_0x478860['query']);_0x29f010['attributes']=_[_0xf0ab('0x34')](_0x478860[_0xf0ab('0x30')],qs[_0xf0ab('0x35')](_0x177f79[_0xf0ab('0x32')]['fields']));_0x29f010[_0xf0ab('0x33')]=_0x29f010[_0xf0ab('0x33')][_0xf0ab('0x36')]?_0x29f010[_0xf0ab('0x33')]:_0x478860[_0xf0ab('0x30')];if(!_0x177f79['query']['hasOwnProperty'](_0xf0ab('0x37'))){_0x29f010[_0xf0ab('0x1d')]=qs['limit'](_0x177f79['query'][_0xf0ab('0x1d')]);_0x29f010[_0xf0ab('0x1b')]=qs[_0xf0ab('0x1b')](_0x177f79[_0xf0ab('0x32')][_0xf0ab('0x1b')]);}_0x29f010[_0xf0ab('0x5d')]=qs[_0xf0ab('0x38')](_0x177f79[_0xf0ab('0x32')][_0xf0ab('0x38')]);_0x29f010[_0xf0ab('0x39')]=qs[_0xf0ab('0x3a')](_['pick'](_0x177f79['query'],_0x478860[_0xf0ab('0x3a')]));_0x29f010['where'][_0xf0ab('0x5a')]=_0x277cec['id'];if(_0x177f79[_0xf0ab('0x32')][_0xf0ab('0x3c')]){_0x29f010[_0xf0ab('0x39')]=_['merge'](_0x29f010[_0xf0ab('0x39')],{'$or':_[_0xf0ab('0x3d')](_0x29f010[_0xf0ab('0x33')],function(_0xde9d9a){var _0x392f83={};_0x392f83[_0xde9d9a]={'$like':'%'+_0x177f79[_0xf0ab('0x32')][_0xf0ab('0x3c')]+'%'};return _0x392f83;})});}_0x29f010=_[_0xf0ab('0x40')]({},_0x29f010,_0x177f79[_0xf0ab('0x41')]);return db[_0xf0ab('0x5c')][_0xf0ab('0x1e')]({'where':_0x29f010[_0xf0ab('0x39')]})[_0xf0ab('0x25')](function(_0x4211a1){_0x17251d['count']=_0x4211a1;if(_0x177f79[_0xf0ab('0x32')][_0xf0ab('0x43')]){_0x29f010[_0xf0ab('0x44')]=[{'all':!![]}];}return db[_0xf0ab('0x5c')][_0xf0ab('0x45')](_0x29f010);})[_0xf0ab('0x25')](function(_0x611cf7){_0x17251d['rows']=_0x611cf7;return _0x17251d;});}})['then'](respondWithFilteredResult(_0x4463cc,_0x29f010))[_0xf0ab('0x47')](handleError(_0x4463cc,null));};function char(_0x200a20){return _0xf0ab('0x5e')===typeof _0x200a20?String['fromCharCode'][_0xf0ab('0x21')](null,arguments):_0x200a20;}function needsEncapsulation(_0x405b34){return!!_0x405b34&&(_0x405b34[_0xf0ab('0x5f')]()[_0xf0ab('0x60')](char(0xd))>=0x0||_0x405b34[_0xf0ab('0x5f')]()['indexOf'](char(0xa))>=0x0||_0x405b34['toString']()[_0xf0ab('0x60')](char(0x2c))>=0x0||_0x405b34['toString']()[_0xf0ab('0x60')](char(0x22))>=0x0);}function encapsulate(_0x3867b3){var _0x48012a=char(0x22),_0x319c9f='\x5c'+char(0x22),_0x223090=_0x3867b3[_0xf0ab('0x5f')]()[_0xf0ab('0x61')](new RegExp(_0x48012a,'g'),_0x319c9f);return _0x48012a+_0x223090+_0x48012a;}exports[_0xf0ab('0x62')]=function(_0x4de6ba,_0x327321,_0x3cf980){var _0x28cead,_0x2e1783;var _0x39b32b={'where':{'ProjectId':_0x4de6ba['params']['id']}};if(_0x4de6ba[_0xf0ab('0x32')][_0xf0ab('0x63')]){_0x39b32b[_0xf0ab('0x39')][_0xf0ab('0x64')]=JSON[_0xf0ab('0x65')](_0x4de6ba['query'][_0xf0ab('0x63')]);}return db[_0xf0ab('0x59')][_0xf0ab('0x45')](_0x39b32b)['then'](handleEntityNotFound(_0x327321,null))[_0xf0ab('0x25')](function(_0x48aaa1){if(_0x48aaa1){_0x28cead=_0x48aaa1;return db[_0xf0ab('0x66')][_0xf0ab('0x45')]({'where':{'SessionId':{'$in':_[_0xf0ab('0x3d')](_0x28cead,'id')},'ProjectId':_0x4de6ba[_0xf0ab('0x49')]['id']},'order':'-createdAt'});}})[_0xf0ab('0x25')](handleEntityNotFound(_0x327321,null))['then'](function(_0x542d27){if(_0x542d27){_0x2e1783=_0x542d27;var _0x426da1={};for(var _0x5578bb=0x0,_0x533590=_0x2e1783[_0xf0ab('0x36')];_0x5578bb<_0x533590;_0x5578bb++){if(!_0x426da1[_0xf0ab('0x67')](_0x2e1783[_0x5578bb]['questionId'])){_0x426da1[_0x2e1783[_0x5578bb]['questionId']]=needsEncapsulation(_0x2e1783[_0x5578bb]['question'])?encapsulate(_0x2e1783[_0x5578bb]['question']):_0x2e1783[_0x5578bb][_0xf0ab('0x68')];}}var _0x12d9b6=[],_0x3c7162={};for(var _0x11a975=0x0,_0xf93478=_0x28cead['length'];_0x11a975<_0xf93478;_0x11a975++){_0x3c7162={'ProjectId':_0x4de6ba[_0xf0ab('0x49')]['id'],'SessionId':_0x28cead[_0x11a975]['id'],'StartTime':moment(_0x28cead[_0x11a975][_0xf0ab('0x64')])[_0xf0ab('0x69')](_0xf0ab('0x6a'))};for(var _0x84eab9=0x0,_0x27cd98=_0x2e1783[_0xf0ab('0x36')];_0x84eab9<_0x27cd98;_0x84eab9++){if(_0x2e1783[_0x84eab9]['SessionId']==_0x28cead[_0x11a975]['id']&&_0x426da1[_0xf0ab('0x67')](_0x2e1783[_0x84eab9][_0xf0ab('0x6b')])){_0x3c7162[_0x426da1[_0x2e1783[_0x84eab9][_0xf0ab('0x6b')]]]=_0x2e1783[_0x84eab9][_0xf0ab('0x6c')];}}for(var _0x375813 in _0x426da1){if(!_0x3c7162[_0xf0ab('0x67')](_0x426da1[_0x375813])){_0x3c7162[_0x426da1[_0x375813]]=null;}}_0x12d9b6['push'](_0x3c7162);}return _0x12d9b6;}})[_0xf0ab('0x25')](function(_0x45a3f3){if(!_[_0xf0ab('0x6d')](_0x45a3f3)){var _0x16cd4c=toCsv(_0x45a3f3);var _0x4ca7a3=Date[_0xf0ab('0x6e')]();fs[_0xf0ab('0x6f')](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x4de6ba[_0xf0ab('0x49')]['id'],_0x4ca7a3),_0x16cd4c);_0x327321[_0xf0ab('0x70')](_0xf0ab('0x71'),_0xf0ab('0x72')+util[_0xf0ab('0x69')](_0xf0ab('0x73'),_0x4de6ba[_0xf0ab('0x49')]['id'],_0x4ca7a3));_0x327321[_0xf0ab('0x70')]('Content-type',_0xf0ab('0x74'));return _0x327321['download'](util['format'](_0xf0ab('0x75'),_0x4de6ba[_0xf0ab('0x49')]['id'],_0x4ca7a3));}else{return _0x327321[_0xf0ab('0x17')](0xcc);}})[_0xf0ab('0x47')](handleError(_0x327321,null));};
\ No newline at end of file
index 4a61812..cf2e6bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9f=['util','../../config/logger','bluebird','path','JscriptyProject'];(function(_0x540004,_0x18cc8b){var _0xa8da32=function(_0x1d858d){while(--_0x1d858d){_0x540004['push'](_0x540004['shift']());}};_0xa8da32(++_0x18cc8b);}(_0x0a9f,0x64));var _0xf0a9=function(_0x3cc81e,_0x435f44){_0x3cc81e=_0x3cc81e-0x0;var _0x5b15e3=_0x0a9f[_0x3cc81e];return _0x5b15e3;};'use strict';var _=require('lodash');var util=require(_0xf0a9('0x0'));var logger=require(_0xf0a9('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf0a9('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf0a9('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x5343c2,_0x2502a2){return _0x5343c2['define'](_0xf0a9('0x4'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf006=['bluebird','path','./jscriptyProject.attributes','exports','define','jscripty_projects','../../config/logger','api'];(function(_0x3f0147,_0x15e955){var _0x5e16ff=function(_0x5be6d2){while(--_0x5be6d2){_0x3f0147['push'](_0x3f0147['shift']());}};_0x5e16ff(++_0x15e955);}(_0xf006,0x146));var _0x6f00=function(_0xeed63f,_0x5ef1cc){_0xeed63f=_0xeed63f-0x0;var _0x18f37d=_0xf006[_0xeed63f];return _0x18f37d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6f00('0x0'))(_0x6f00('0x1'));var moment=require('moment');var BPromise=require(_0x6f00('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f00('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6f00('0x4'));module[_0x6f00('0x5')]=function(_0x141e71,_0x52c9a2){return _0x141e71[_0x6f00('0x6')]('JscriptyProject',attributes,{'tableName':_0x6f00('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8dda5d3..acde0c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','JscriptyProject,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x2f85d6,_0x3df5b7){var _0xb4942f=function(_0x7ad4f2){while(--_0x7ad4f2){_0x2f85d6['push'](_0x2f85d6['shift']());}};_0xb4942f(++_0x3df5b7);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('JscriptyProject,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
+var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x194e24,_0x4474e1){var _0x133a49=function(_0x39cfaf){while(--_0x39cfaf){_0x194e24['push'](_0x194e24['shift']());}};_0x133a49(++_0x4474e1);}(_0x70e0,0x17b));var _0x070e=function(_0x20704f,_0x5563bc){_0x20704f=_0x20704f-0x0;var _0x4d32b6=_0x70e0[_0x20704f];return _0x4d32b6;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 5b9a8dc..99d8c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c6=['index','/describe','isAuthenticated','/:id','show','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get'];(function(_0x29fd4f,_0x32e48b){var _0x5ec578=function(_0x305310){while(--_0x305310){_0x29fd4f['push'](_0x29fd4f['shift']());}};_0x5ec578(++_0x32e48b);}(_0x72c6,0x11b));var _0x672c=function(_0x11a20e,_0x2ec94c){_0x11a20e=_0x11a20e-0x0;var _0x19287c=_0x72c6[_0x11a20e];return _0x19287c;};'use strict';var multer=require(_0x672c('0x0'));var util=require(_0x672c('0x1'));var path=require(_0x672c('0x2'));var timeout=require(_0x672c('0x3'));var express=require('express');var router=express[_0x672c('0x4')]();var fs_extra=require(_0x672c('0x5'));var auth=require(_0x672c('0x6'));var interaction=require(_0x672c('0x7'));var config=require(_0x672c('0x8'));var controller=require(_0x672c('0x9'));router[_0x672c('0xa')]('/',auth['isAuthenticated'](),controller[_0x672c('0xb')]);router[_0x672c('0xa')](_0x672c('0xc'),auth[_0x672c('0xd')](),controller['describe']);router[_0x672c('0xa')](_0x672c('0xe'),auth[_0x672c('0xd')](),controller[_0x672c('0xf')]);router[_0x672c('0x10')]('/',auth['isAuthenticated'](),controller[_0x672c('0x11')]);router[_0x672c('0x12')]('/:id',auth[_0x672c('0xd')](),controller[_0x672c('0x13')]);router['delete']('/:id',auth[_0x672c('0xd')](),controller['destroy']);module[_0x672c('0x14')]=router;
\ No newline at end of file
+var _0xaa58=['isAuthenticated','index','/describe','show','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./jscriptyQuestionReport.controller','get'];(function(_0x555800,_0x489d4c){var _0x27a4ef=function(_0x22b64e){while(--_0x22b64e){_0x555800['push'](_0x555800['shift']());}};_0x27a4ef(++_0x489d4c);}(_0xaa58,0x137));var _0x8aa5=function(_0x3750d9,_0x10cf9f){_0x3750d9=_0x3750d9-0x0;var _0x3b9ecc=_0xaa58[_0x3750d9];return _0x3b9ecc;};'use strict';var multer=require(_0x8aa5('0x0'));var util=require(_0x8aa5('0x1'));var path=require(_0x8aa5('0x2'));var timeout=require(_0x8aa5('0x3'));var express=require(_0x8aa5('0x4'));var router=express['Router']();var fs_extra=require(_0x8aa5('0x5'));var auth=require(_0x8aa5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8aa5('0x7'));router[_0x8aa5('0x8')]('/',auth[_0x8aa5('0x9')](),controller[_0x8aa5('0xa')]);router[_0x8aa5('0x8')](_0x8aa5('0xb'),auth[_0x8aa5('0x9')](),controller['describe']);router['get']('/:id',auth[_0x8aa5('0x9')](),controller[_0x8aa5('0xc')]);router[_0x8aa5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8aa5('0xe')](_0x8aa5('0xf'),auth['isAuthenticated'](),controller[_0x8aa5('0x10')]);router[_0x8aa5('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x8aa5('0x12')]);module[_0x8aa5('0x13')]=router;
\ No newline at end of file
index bf344a2..f4ac911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x7a54,0x106));var _0x47a5=function(_0x5d3067,_0x27ed9c){_0x5d3067=_0x5d3067-0x0;var _0x2e501e=_0x7a54[_0x5d3067];return _0x2e501e;};'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(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x7a54,0x106));var _0x47a5=function(_0x1da422,_0x37dd29){_0x1da422=_0x1da422-0x0;var _0x36aa33=_0x7a54[_0x1da422];return _0x36aa33;};'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 2041c63..1286b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b4b=['name','index','JscriptyQuestionReport','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','params','rawAttributes','create','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','stack'];(function(_0x53bfcf,_0x24937a){var _0x2825e4=function(_0x2ffd0a){while(--_0x2ffd0a){_0x53bfcf['push'](_0x53bfcf['shift']());}};_0x2825e4(++_0x24937a);}(_0x2b4b,0x187));var _0xb2b4=function(_0x4e18a,_0x2d220a){_0x4e18a=_0x4e18a-0x0;var _0x56cc08=_0x2b4b[_0x4e18a];return _0x56cc08;};'use strict';var emlformat=require(_0xb2b4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb2b4('0x1'));var jsonpatch=require(_0xb2b4('0x2'));var rp=require('request-promise');var moment=require(_0xb2b4('0x3'));var BPromise=require(_0xb2b4('0x4'));var Mustache=require(_0xb2b4('0x5'));var util=require(_0xb2b4('0x6'));var path=require(_0xb2b4('0x7'));var sox=require(_0xb2b4('0x8'));var csv=require(_0xb2b4('0x9'));var ejs=require(_0xb2b4('0xa'));var fs=require('fs');var fs_extra=require(_0xb2b4('0xb'));var _=require(_0xb2b4('0xc'));var squel=require(_0xb2b4('0xd'));var crypto=require('crypto');var jsforce=require(_0xb2b4('0xe'));var deskjs=require(_0xb2b4('0xf'));var toCsv=require(_0xb2b4('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb2b4('0x10'));var qs=require(_0xb2b4('0x11'));var as=require(_0xb2b4('0x12'));var hardwareService=require(_0xb2b4('0x13'));var logger=require('../../config/logger')(_0xb2b4('0x14'));var utils=require(_0xb2b4('0x15'));var config=require(_0xb2b4('0x16'));var licenseUtil=require(_0xb2b4('0x17'));var db=require(_0xb2b4('0x18'))['db'];function respondWithStatusCode(_0x463a67,_0x3e2dd4){_0x3e2dd4=_0x3e2dd4||0xcc;return function(_0x410bf1){if(_0x410bf1){return _0x463a67[_0xb2b4('0x19')](_0x3e2dd4);}return _0x463a67[_0xb2b4('0x1a')](_0x3e2dd4)['end']();};}function respondWithResult(_0x519c9b,_0xd8aff5){_0xd8aff5=_0xd8aff5||0xc8;return function(_0x48482b){if(_0x48482b){return _0x519c9b[_0xb2b4('0x1a')](_0xd8aff5)[_0xb2b4('0x1b')](_0x48482b);}};}function respondWithFilteredResult(_0xcbadb1,_0x4a1428){return function(_0x24eae5){if(_0x24eae5){var _0x36987b=typeof _0x4a1428[_0xb2b4('0x1c')]===_0xb2b4('0x1d')&&typeof _0x4a1428[_0xb2b4('0x1e')]===_0xb2b4('0x1d');var _0x10afaf=_0x24eae5[_0xb2b4('0x1f')];var _0x29504a=_0x36987b?0x0:_0x4a1428[_0xb2b4('0x1c')];var _0x18c785=_0x36987b?_0x24eae5['count']:_0x4a1428[_0xb2b4('0x1c')]+_0x4a1428[_0xb2b4('0x1e')];var _0x27d696;if(_0x18c785>=_0x10afaf){_0x18c785=_0x10afaf;_0x27d696=0xc8;}else{_0x27d696=0xce;}_0xcbadb1[_0xb2b4('0x1a')](_0x27d696);return _0xcbadb1[_0xb2b4('0x20')](_0xb2b4('0x21'),_0x29504a+'-'+_0x18c785+'/'+_0x10afaf)[_0xb2b4('0x1b')](_0x24eae5);}return null;};}function patchUpdates(_0x295f2c){return function(_0x352051){try{jsonpatch[_0xb2b4('0x22')](_0x352051,_0x295f2c,!![]);}catch(_0xeee695){return BPromise[_0xb2b4('0x23')](_0xeee695);}return _0x352051['save']();};}function saveUpdates(_0x297afe,_0x2a4eaf){return function(_0x2fb7ee){if(_0x2fb7ee){return _0x2fb7ee[_0xb2b4('0x24')](_0x297afe)[_0xb2b4('0x25')](function(_0x64ae79){return _0x64ae79;});}return null;};}function removeEntity(_0x465f67,_0x16f4bf){return function(_0x21bf39){if(_0x21bf39){return _0x21bf39[_0xb2b4('0x26')]()[_0xb2b4('0x25')](function(){_0x465f67[_0xb2b4('0x1a')](0xcc)[_0xb2b4('0x27')]();});}};}function handleEntityNotFound(_0x20c631,_0x43915c){return function(_0x50468e){if(!_0x50468e){_0x20c631[_0xb2b4('0x19')](0x194);}return _0x50468e;};}function handleError(_0xc4187a,_0x4dd35b){_0x4dd35b=_0x4dd35b||0x1f4;return function(_0x596128){logger['error'](_0x596128[_0xb2b4('0x28')]);if(_0x596128['name']){delete _0x596128[_0xb2b4('0x29')];}_0xc4187a[_0xb2b4('0x1a')](_0x4dd35b)['send'](_0x596128);};}exports[_0xb2b4('0x2a')]=function(_0x3c1825,_0x10f0a2){var _0x1b3bef={},_0x1e3265={},_0x155e01={'count':0x0,'rows':[]};var _0x2e4a87=_['map'](db[_0xb2b4('0x2b')]['rawAttributes'],function(_0x227e6b){return{'name':_0x227e6b[_0xb2b4('0x2c')],'type':_0x227e6b[_0xb2b4('0x2d')]['key']};});_0x1e3265[_0xb2b4('0x2e')]=_[_0xb2b4('0x2f')](_0x2e4a87,_0xb2b4('0x29'));_0x1e3265['query']=_[_0xb2b4('0x30')](_0x3c1825[_0xb2b4('0x31')]);_0x1e3265[_0xb2b4('0x32')]=_[_0xb2b4('0x33')](_0x1e3265['model'],_0x1e3265[_0xb2b4('0x31')]);_0x1b3bef[_0xb2b4('0x34')]=_[_0xb2b4('0x33')](_0x1e3265[_0xb2b4('0x2e')],qs[_0xb2b4('0x35')](_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x35')]));_0x1b3bef[_0xb2b4('0x34')]=_0x1b3bef['attributes'][_0xb2b4('0x36')]?_0x1b3bef[_0xb2b4('0x34')]:_0x1e3265[_0xb2b4('0x2e')];if(!_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x37')]('nolimit')){_0x1b3bef['limit']=qs[_0xb2b4('0x1e')](_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x1e')]);_0x1b3bef['offset']=qs[_0xb2b4('0x1c')](_0x3c1825['query'][_0xb2b4('0x1c')]);}_0x1b3bef['order']=qs[_0xb2b4('0x38')](_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x38')]);_0x1b3bef[_0xb2b4('0x39')]=qs[_0xb2b4('0x32')](_[_0xb2b4('0x3a')](_0x3c1825['query'],_0x1e3265[_0xb2b4('0x32')]),_0x2e4a87);if(_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x3b')]){_0x1b3bef[_0xb2b4('0x39')]=_[_0xb2b4('0x3c')](_0x1b3bef['where'],{'$or':_[_0xb2b4('0x2f')](_0x2e4a87,function(_0x8c23f8){if(_0x8c23f8[_0xb2b4('0x2d')]!==_0xb2b4('0x3d')){var _0x56bd14={};_0x56bd14[_0x8c23f8[_0xb2b4('0x29')]]={'$like':'%'+_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x3b')]+'%'};return _0x56bd14;}})});}_0x1b3bef=_[_0xb2b4('0x3c')]({},_0x1b3bef,_0x3c1825['options']);var _0x2e7712={'where':_0x1b3bef[_0xb2b4('0x39')]};return db[_0xb2b4('0x2b')][_0xb2b4('0x1f')](_0x2e7712)[_0xb2b4('0x25')](function(_0x4a0684){_0x155e01[_0xb2b4('0x1f')]=_0x4a0684;if(_0x3c1825[_0xb2b4('0x31')][_0xb2b4('0x3e')]){_0x1b3bef[_0xb2b4('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xb2b4('0x40')](_0x1b3bef);})[_0xb2b4('0x25')](function(_0x20f350){_0x155e01['rows']=_0x20f350;return _0x155e01;})[_0xb2b4('0x25')](respondWithFilteredResult(_0x10f0a2,_0x1b3bef))[_0xb2b4('0x41')](handleError(_0x10f0a2,null));};exports['show']=function(_0x30debc,_0x59e966){var _0x5b3962={'raw':!![],'where':{'id':_0x30debc[_0xb2b4('0x42')]['id']}},_0x1c7b88={};_0x1c7b88[_0xb2b4('0x2e')]=_[_0xb2b4('0x30')](db[_0xb2b4('0x2b')][_0xb2b4('0x43')]);_0x1c7b88[_0xb2b4('0x31')]=_[_0xb2b4('0x30')](_0x30debc[_0xb2b4('0x31')]);_0x1c7b88[_0xb2b4('0x32')]=_[_0xb2b4('0x33')](_0x1c7b88['model'],_0x1c7b88[_0xb2b4('0x31')]);_0x5b3962['attributes']=_[_0xb2b4('0x33')](_0x1c7b88[_0xb2b4('0x2e')],qs[_0xb2b4('0x35')](_0x30debc[_0xb2b4('0x31')][_0xb2b4('0x35')]));_0x5b3962['attributes']=_0x5b3962[_0xb2b4('0x34')]['length']?_0x5b3962[_0xb2b4('0x34')]:_0x1c7b88[_0xb2b4('0x2e')];if(_0x30debc['query'][_0xb2b4('0x3e')]){_0x5b3962[_0xb2b4('0x3f')]=[{'all':!![]}];}_0x5b3962=_[_0xb2b4('0x3c')]({},_0x5b3962,_0x30debc['options']);return db[_0xb2b4('0x2b')]['find'](_0x5b3962)[_0xb2b4('0x25')](handleEntityNotFound(_0x59e966,null))[_0xb2b4('0x25')](respondWithResult(_0x59e966,null))[_0xb2b4('0x41')](handleError(_0x59e966,null));};exports[_0xb2b4('0x44')]=function(_0x38b910,_0x9c9c7b){return db[_0xb2b4('0x2b')][_0xb2b4('0x44')](_0x38b910[_0xb2b4('0x45')],{})[_0xb2b4('0x25')](respondWithResult(_0x9c9c7b,0xc9))['catch'](handleError(_0x9c9c7b,null));};exports[_0xb2b4('0x24')]=function(_0x445b79,_0x210401){if(_0x445b79['body']['id']){delete _0x445b79[_0xb2b4('0x45')]['id'];}return db[_0xb2b4('0x2b')][_0xb2b4('0x46')]({'where':{'id':_0x445b79['params']['id']}})[_0xb2b4('0x25')](handleEntityNotFound(_0x210401,null))['then'](saveUpdates(_0x445b79[_0xb2b4('0x45')],null))['then'](respondWithResult(_0x210401,null))[_0xb2b4('0x41')](handleError(_0x210401,null));};exports['destroy']=function(_0x15a589,_0x1d31fc){return db['JscriptyQuestionReport'][_0xb2b4('0x46')]({'where':{'id':_0x15a589[_0xb2b4('0x42')]['id']}})[_0xb2b4('0x25')](handleEntityNotFound(_0x1d31fc,null))[_0xb2b4('0x25')](removeEntity(_0x1d31fc,null))[_0xb2b4('0x41')](handleError(_0x1d31fc,null));};exports[_0xb2b4('0x47')]=function(_0x59375b,_0x263522){return db[_0xb2b4('0x2b')][_0xb2b4('0x47')]()[_0xb2b4('0x25')](respondWithResult(_0x263522,null))[_0xb2b4('0x41')](handleError(_0x263522,null));};
\ No newline at end of file
+var _0xc9ea=['model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','type','merge','options','include','JscriptyQuestionReport','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','save','then','destroy','stack','name','index','map'];(function(_0x551bbe,_0x8c77ea){var _0x16efa0=function(_0x485af1){while(--_0x485af1){_0x551bbe['push'](_0x551bbe['shift']());}};_0x16efa0(++_0x8c77ea);}(_0xc9ea,0x1d2));var _0xac9e=function(_0x50e115,_0x1229f1){_0x50e115=_0x50e115-0x0;var _0x292d9a=_0xc9ea[_0x50e115];return _0x292d9a;};'use strict';var emlformat=require(_0xac9e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xac9e('0x1'));var jsonpatch=require(_0xac9e('0x2'));var rp=require(_0xac9e('0x3'));var moment=require(_0xac9e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xac9e('0x5'));var util=require('util');var path=require(_0xac9e('0x6'));var sox=require(_0xac9e('0x7'));var csv=require(_0xac9e('0x8'));var ejs=require(_0xac9e('0x9'));var fs=require('fs');var fs_extra=require(_0xac9e('0xa'));var _=require(_0xac9e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xac9e('0xc'));var deskjs=require(_0xac9e('0xd'));var toCsv=require(_0xac9e('0x8'));var querystring=require(_0xac9e('0xe'));var Papa=require(_0xac9e('0xf'));var Redis=require(_0xac9e('0x10'));var authService=require(_0xac9e('0x11'));var qs=require(_0xac9e('0x12'));var as=require(_0xac9e('0x13'));var hardwareService=require(_0xac9e('0x14'));var logger=require(_0xac9e('0x15'))(_0xac9e('0x16'));var utils=require(_0xac9e('0x17'));var config=require(_0xac9e('0x18'));var licenseUtil=require(_0xac9e('0x19'));var db=require(_0xac9e('0x1a'))['db'];function respondWithStatusCode(_0x219605,_0x588259){_0x588259=_0x588259||0xcc;return function(_0x5dad9d){if(_0x5dad9d){return _0x219605[_0xac9e('0x1b')](_0x588259);}return _0x219605['status'](_0x588259)[_0xac9e('0x1c')]();};}function respondWithResult(_0x3120f3,_0x2555a2){_0x2555a2=_0x2555a2||0xc8;return function(_0x11c052){if(_0x11c052){return _0x3120f3[_0xac9e('0x1d')](_0x2555a2)[_0xac9e('0x1e')](_0x11c052);}};}function respondWithFilteredResult(_0x53fd56,_0x2f250){return function(_0x3ec692){if(_0x3ec692){var _0x24eacc=typeof _0x2f250[_0xac9e('0x1f')]===_0xac9e('0x20')&&typeof _0x2f250['limit']===_0xac9e('0x20');var _0x3c700c=_0x3ec692[_0xac9e('0x21')];var _0x37d463=_0x24eacc?0x0:_0x2f250[_0xac9e('0x1f')];var _0x2c4db0=_0x24eacc?_0x3ec692[_0xac9e('0x21')]:_0x2f250[_0xac9e('0x1f')]+_0x2f250[_0xac9e('0x22')];var _0x451ed2;if(_0x2c4db0>=_0x3c700c){_0x2c4db0=_0x3c700c;_0x451ed2=0xc8;}else{_0x451ed2=0xce;}_0x53fd56[_0xac9e('0x1d')](_0x451ed2);return _0x53fd56[_0xac9e('0x23')]('Content-Range',_0x37d463+'-'+_0x2c4db0+'/'+_0x3c700c)[_0xac9e('0x1e')](_0x3ec692);}return null;};}function patchUpdates(_0x3b5145){return function(_0x138146){try{jsonpatch[_0xac9e('0x24')](_0x138146,_0x3b5145,!![]);}catch(_0x4e8979){return BPromise[_0xac9e('0x25')](_0x4e8979);}return _0x138146[_0xac9e('0x26')]();};}function saveUpdates(_0x539a5e,_0x74945d){return function(_0x168de8){if(_0x168de8){return _0x168de8['update'](_0x539a5e)[_0xac9e('0x27')](function(_0x4a036b){return _0x4a036b;});}return null;};}function removeEntity(_0x10be77,_0x49fce1){return function(_0x546f01){if(_0x546f01){return _0x546f01[_0xac9e('0x28')]()['then'](function(){_0x10be77[_0xac9e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8791,_0x409d93){return function(_0x1bfb2e){if(!_0x1bfb2e){_0x3a8791['sendStatus'](0x194);}return _0x1bfb2e;};}function handleError(_0x1083a9,_0x4a88b2){_0x4a88b2=_0x4a88b2||0x1f4;return function(_0x1be5a3){logger['error'](_0x1be5a3[_0xac9e('0x29')]);if(_0x1be5a3[_0xac9e('0x2a')]){delete _0x1be5a3[_0xac9e('0x2a')];}_0x1083a9[_0xac9e('0x1d')](_0x4a88b2)['send'](_0x1be5a3);};}exports[_0xac9e('0x2b')]=function(_0x57492b,_0x406830){var _0x35566b={},_0x1c3cd0={},_0x3d1832={'count':0x0,'rows':[]};var _0x34a67a=_[_0xac9e('0x2c')](db['JscriptyQuestionReport']['rawAttributes'],function(_0x3e06ef){return{'name':_0x3e06ef['fieldName'],'type':_0x3e06ef['type']['key']};});_0x1c3cd0[_0xac9e('0x2d')]=_[_0xac9e('0x2c')](_0x34a67a,_0xac9e('0x2a'));_0x1c3cd0[_0xac9e('0x2e')]=_[_0xac9e('0x2f')](_0x57492b[_0xac9e('0x2e')]);_0x1c3cd0[_0xac9e('0x30')]=_[_0xac9e('0x31')](_0x1c3cd0[_0xac9e('0x2d')],_0x1c3cd0[_0xac9e('0x2e')]);_0x35566b['attributes']=_[_0xac9e('0x31')](_0x1c3cd0[_0xac9e('0x2d')],qs['fields'](_0x57492b['query'][_0xac9e('0x32')]));_0x35566b[_0xac9e('0x33')]=_0x35566b[_0xac9e('0x33')][_0xac9e('0x34')]?_0x35566b[_0xac9e('0x33')]:_0x1c3cd0[_0xac9e('0x2d')];if(!_0x57492b['query']['hasOwnProperty'](_0xac9e('0x35'))){_0x35566b[_0xac9e('0x22')]=qs[_0xac9e('0x22')](_0x57492b[_0xac9e('0x2e')][_0xac9e('0x22')]);_0x35566b[_0xac9e('0x1f')]=qs['offset'](_0x57492b[_0xac9e('0x2e')][_0xac9e('0x1f')]);}_0x35566b[_0xac9e('0x36')]=qs['sort'](_0x57492b[_0xac9e('0x2e')][_0xac9e('0x37')]);_0x35566b['where']=qs[_0xac9e('0x30')](_[_0xac9e('0x38')](_0x57492b[_0xac9e('0x2e')],_0x1c3cd0[_0xac9e('0x30')]),_0x34a67a);if(_0x57492b[_0xac9e('0x2e')][_0xac9e('0x39')]){_0x35566b[_0xac9e('0x3a')]=_['merge'](_0x35566b[_0xac9e('0x3a')],{'$or':_[_0xac9e('0x2c')](_0x34a67a,function(_0x4fb21b){if(_0x4fb21b[_0xac9e('0x3b')]!=='VIRTUAL'){var _0x3ea8e1={};_0x3ea8e1[_0x4fb21b[_0xac9e('0x2a')]]={'$like':'%'+_0x57492b['query'][_0xac9e('0x39')]+'%'};return _0x3ea8e1;}})});}_0x35566b=_[_0xac9e('0x3c')]({},_0x35566b,_0x57492b[_0xac9e('0x3d')]);var _0x49ee81={'where':_0x35566b['where']};return db['JscriptyQuestionReport']['count'](_0x49ee81)[_0xac9e('0x27')](function(_0x298e38){_0x3d1832['count']=_0x298e38;if(_0x57492b[_0xac9e('0x2e')]['includeAll']){_0x35566b[_0xac9e('0x3e')]=[{'all':!![]}];}return db[_0xac9e('0x3f')]['findAll'](_0x35566b);})[_0xac9e('0x27')](function(_0x4933c2){_0x3d1832[_0xac9e('0x40')]=_0x4933c2;return _0x3d1832;})[_0xac9e('0x27')](respondWithFilteredResult(_0x406830,_0x35566b))[_0xac9e('0x41')](handleError(_0x406830,null));};exports[_0xac9e('0x42')]=function(_0x27759b,_0x6e7ccc){var _0x115e97={'raw':!![],'where':{'id':_0x27759b[_0xac9e('0x43')]['id']}},_0x3bc0c9={};_0x3bc0c9[_0xac9e('0x2d')]=_[_0xac9e('0x2f')](db[_0xac9e('0x3f')][_0xac9e('0x44')]);_0x3bc0c9[_0xac9e('0x2e')]=_['keys'](_0x27759b[_0xac9e('0x2e')]);_0x3bc0c9[_0xac9e('0x30')]=_[_0xac9e('0x31')](_0x3bc0c9[_0xac9e('0x2d')],_0x3bc0c9[_0xac9e('0x2e')]);_0x115e97[_0xac9e('0x33')]=_[_0xac9e('0x31')](_0x3bc0c9[_0xac9e('0x2d')],qs['fields'](_0x27759b[_0xac9e('0x2e')]['fields']));_0x115e97[_0xac9e('0x33')]=_0x115e97[_0xac9e('0x33')][_0xac9e('0x34')]?_0x115e97[_0xac9e('0x33')]:_0x3bc0c9[_0xac9e('0x2d')];if(_0x27759b[_0xac9e('0x2e')]['includeAll']){_0x115e97[_0xac9e('0x3e')]=[{'all':!![]}];}_0x115e97=_[_0xac9e('0x3c')]({},_0x115e97,_0x27759b[_0xac9e('0x3d')]);return db[_0xac9e('0x3f')][_0xac9e('0x45')](_0x115e97)['then'](handleEntityNotFound(_0x6e7ccc,null))['then'](respondWithResult(_0x6e7ccc,null))[_0xac9e('0x41')](handleError(_0x6e7ccc,null));};exports[_0xac9e('0x46')]=function(_0x3ebfbf,_0x4b176c){return db[_0xac9e('0x3f')]['create'](_0x3ebfbf[_0xac9e('0x47')],{})[_0xac9e('0x27')](respondWithResult(_0x4b176c,0xc9))[_0xac9e('0x41')](handleError(_0x4b176c,null));};exports['update']=function(_0x5f3807,_0x8536f0){if(_0x5f3807[_0xac9e('0x47')]['id']){delete _0x5f3807[_0xac9e('0x47')]['id'];}return db['JscriptyQuestionReport']['find']({'where':{'id':_0x5f3807[_0xac9e('0x43')]['id']}})[_0xac9e('0x27')](handleEntityNotFound(_0x8536f0,null))[_0xac9e('0x27')](saveUpdates(_0x5f3807['body'],null))['then'](respondWithResult(_0x8536f0,null))[_0xac9e('0x41')](handleError(_0x8536f0,null));};exports[_0xac9e('0x28')]=function(_0x31d5c2,_0x47c07c){return db[_0xac9e('0x3f')][_0xac9e('0x45')]({'where':{'id':_0x31d5c2[_0xac9e('0x43')]['id']}})[_0xac9e('0x27')](handleEntityNotFound(_0x47c07c,null))[_0xac9e('0x27')](removeEntity(_0x47c07c,null))['catch'](handleError(_0x47c07c,null));};exports['describe']=function(_0x2d0c46,_0x49883d){return db[_0xac9e('0x3f')][_0xac9e('0x48')]()[_0xac9e('0x27')](respondWithResult(_0x49883d,null))[_0xac9e('0x41')](handleError(_0x49883d,null));};
\ No newline at end of file
index 90f3a90..2f9dd21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cfd=['define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes'];(function(_0x2a9789,_0x4eb19e){var _0x5b69ef=function(_0x11d151){while(--_0x11d151){_0x2a9789['push'](_0x2a9789['shift']());}};_0x5b69ef(++_0x4eb19e);}(_0x2cfd,0x9f));var _0xd2cf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2cfd[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xd2cf('0x0'));var util=require(_0xd2cf('0x1'));var logger=require(_0xd2cf('0x2'))(_0xd2cf('0x3'));var moment=require('moment');var BPromise=require(_0xd2cf('0x4'));var rp=require(_0xd2cf('0x5'));var fs=require('fs');var path=require(_0xd2cf('0x6'));var rimraf=require(_0xd2cf('0x7'));var config=require(_0xd2cf('0x8'));var attributes=require(_0xd2cf('0x9'));module['exports']=function(_0x1fe461,_0x4ed987){return _0x1fe461[_0xd2cf('0xa')](_0xd2cf('0xb'),attributes,{'tableName':_0xd2cf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc480=['report_jscripty_questions','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport'];(function(_0x4894bd,_0xad4b50){var _0x3aaca4=function(_0x28d8c6){while(--_0x28d8c6){_0x4894bd['push'](_0x4894bd['shift']());}};_0x3aaca4(++_0xad4b50);}(_0xc480,0x79));var _0x0c48=function(_0x1f7008,_0x6f3880){_0x1f7008=_0x1f7008-0x0;var _0x57cb78=_0xc480[_0x1f7008];return _0x57cb78;};'use strict';var _=require('lodash');var util=require(_0x0c48('0x0'));var logger=require('../../config/logger')(_0x0c48('0x1'));var moment=require('moment');var BPromise=require(_0x0c48('0x2'));var rp=require(_0x0c48('0x3'));var fs=require('fs');var path=require(_0x0c48('0x4'));var rimraf=require(_0x0c48('0x5'));var config=require(_0x0c48('0x6'));var attributes=require(_0x0c48('0x7'));module[_0x0c48('0x8')]=function(_0xf106c9,_0x430c5a){return _0xf106c9[_0x0c48('0x9')](_0x0c48('0xa'),attributes,{'tableName':_0x0c48('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 093bd70..2c98828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6b=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment'];(function(_0x1a54d6,_0x25f6e5){var _0x3dbd92=function(_0x42c200){while(--_0x42c200){_0x1a54d6['push'](_0x1a54d6['shift']());}};_0x3dbd92(++_0x25f6e5);}(_0xfa6b,0xfa));var _0xbfa6=function(_0x322069,_0x3baae8){_0x322069=_0x322069-0x0;var _0xd4c42f=_0xfa6b[_0x322069];return _0xd4c42f;};'use strict';var _=require(_0xbfa6('0x0'));var util=require(_0xbfa6('0x1'));var moment=require(_0xbfa6('0x2'));var BPromise=require('bluebird');var rs=require(_0xbfa6('0x3'));var fs=require('fs');var Redis=require(_0xbfa6('0x4'));var db=require(_0xbfa6('0x5'))['db'];var utils=require(_0xbfa6('0x6'));var logger=require('../../config/logger')(_0xbfa6('0x7'));var config=require('../../config/environment');var jayson=require(_0xbfa6('0x8'));var client=jayson[_0xbfa6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4aa399,_0x388863,_0x16bf1e){return new BPromise(function(_0x506ce5,_0xb27b02){return client[_0xbfa6('0xa')](_0x4aa399,_0x16bf1e)[_0xbfa6('0xb')](function(_0x2f0d52){logger['info'](_0xbfa6('0xc'),_0x388863,_0xbfa6('0xd'));logger[_0xbfa6('0xe')](_0xbfa6('0xf'),_0x388863,_0xbfa6('0xd'),JSON[_0xbfa6('0x10')](_0x2f0d52));if(_0x2f0d52['error']){if(_0x2f0d52[_0xbfa6('0x11')][_0xbfa6('0x12')]===0x1f4){logger[_0xbfa6('0x11')](_0xbfa6('0xc'),_0x388863,_0x2f0d52[_0xbfa6('0x11')][_0xbfa6('0x13')]);return _0xb27b02(_0x2f0d52[_0xbfa6('0x11')][_0xbfa6('0x13')]);}logger[_0xbfa6('0x11')](_0xbfa6('0xc'),_0x388863,_0x2f0d52[_0xbfa6('0x11')][_0xbfa6('0x13')]);return _0x506ce5(_0x2f0d52[_0xbfa6('0x11')][_0xbfa6('0x13')]);}else{logger[_0xbfa6('0x14')](_0xbfa6('0xc'),_0x388863,_0xbfa6('0xd'));_0x506ce5(_0x2f0d52[_0xbfa6('0x15')][_0xbfa6('0x13')]);}})[_0xbfa6('0x16')](function(_0x418a00){logger[_0xbfa6('0x11')](_0xbfa6('0xc'),_0x388863,_0x418a00);_0xb27b02(_0x418a00);});});}
\ No newline at end of file
+var _0xa8a9=['moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util'];(function(_0x2b50b3,_0x310414){var _0x54859f=function(_0x3073b4){while(--_0x3073b4){_0x2b50b3['push'](_0x2b50b3['shift']());}};_0x54859f(++_0x310414);}(_0xa8a9,0x71));var _0x9a8a=function(_0x21daf3,_0xf7cfc2){_0x21daf3=_0x21daf3-0x0;var _0x5a38c7=_0xa8a9[_0x21daf3];return _0x5a38c7;};'use strict';var _=require(_0x9a8a('0x0'));var util=require(_0x9a8a('0x1'));var moment=require(_0x9a8a('0x2'));var BPromise=require(_0x9a8a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9a8a('0x4'));var db=require(_0x9a8a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9a8a('0x6'))(_0x9a8a('0x7'));var config=require(_0x9a8a('0x8'));var jayson=require(_0x9a8a('0x9'));var client=jayson[_0x9a8a('0xa')][_0x9a8a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c5a4c,_0xb6281,_0xce4209){return new BPromise(function(_0x1cbbb5,_0x2527eb){return client[_0x9a8a('0xc')](_0x4c5a4c,_0xce4209)[_0x9a8a('0xd')](function(_0x23d702){logger[_0x9a8a('0xe')](_0x9a8a('0xf'),_0xb6281,_0x9a8a('0x10'));logger[_0x9a8a('0x11')](_0x9a8a('0x12'),_0xb6281,_0x9a8a('0x10'),JSON['stringify'](_0x23d702));if(_0x23d702[_0x9a8a('0x13')]){if(_0x23d702['error'][_0x9a8a('0x14')]===0x1f4){logger[_0x9a8a('0x13')]('JscriptyQuestionReport,\x20%s,\x20%s',_0xb6281,_0x23d702['error'][_0x9a8a('0x15')]);return _0x2527eb(_0x23d702[_0x9a8a('0x13')][_0x9a8a('0x15')]);}logger[_0x9a8a('0x13')](_0x9a8a('0xf'),_0xb6281,_0x23d702[_0x9a8a('0x13')][_0x9a8a('0x15')]);return _0x1cbbb5(_0x23d702[_0x9a8a('0x13')][_0x9a8a('0x15')]);}else{logger[_0x9a8a('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0xb6281,'request\x20sent');_0x1cbbb5(_0x23d702[_0x9a8a('0x16')]['message']);}})['catch'](function(_0x48a060){logger[_0x9a8a('0x13')](_0x9a8a('0xf'),_0xb6281,_0x48a060);_0x2527eb(_0x48a060);});});}
\ No newline at end of file
index 4ba2da4..af19723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5489=['describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','index','/describe','isAuthenticated'];(function(_0x3740fe,_0x6c543c){var _0x55492b=function(_0x1f851f){while(--_0x1f851f){_0x3740fe['push'](_0x3740fe['shift']());}};_0x55492b(++_0x6c543c);}(_0x5489,0x1bc));var _0x9548=function(_0x378edc,_0x2163e6){_0x378edc=_0x378edc-0x0;var _0xc0a9b8=_0x5489[_0x378edc];return _0xc0a9b8;};'use strict';var multer=require(_0x9548('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9548('0x1'));var express=require(_0x9548('0x2'));var router=express['Router']();var fs_extra=require(_0x9548('0x3'));var auth=require(_0x9548('0x4'));var interaction=require(_0x9548('0x5'));var config=require(_0x9548('0x6'));var controller=require(_0x9548('0x7'));router[_0x9548('0x8')]('/',auth['isAuthenticated'](),controller[_0x9548('0x9')]);router[_0x9548('0x8')](_0x9548('0xa'),auth[_0x9548('0xb')](),controller[_0x9548('0xc')]);router[_0x9548('0x8')](_0x9548('0xd'),auth['isAuthenticated'](),controller[_0x9548('0xe')]);router[_0x9548('0x8')](_0x9548('0xf'),auth[_0x9548('0xb')](),controller[_0x9548('0x10')]);router[_0x9548('0x11')]('/',auth[_0x9548('0xb')](),controller[_0x9548('0x12')]);router[_0x9548('0x13')]('/:id',auth[_0x9548('0xb')](),controller[_0x9548('0x14')]);router[_0x9548('0x15')](_0x9548('0xd'),auth[_0x9548('0xb')](),controller[_0x9548('0x16')]);module[_0x9548('0x17')]=router;
\ No newline at end of file
+var _0xc1eb=['create','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','/:id','show','/:id/questions','getQuestions','post'];(function(_0x25e62a,_0x5464c9){var _0x46385e=function(_0xd5f46d){while(--_0xd5f46d){_0x25e62a['push'](_0x25e62a['shift']());}};_0x46385e(++_0x5464c9);}(_0xc1eb,0x1e3));var _0xbc1e=function(_0x2ff238,_0x1811d2){_0x2ff238=_0x2ff238-0x0;var _0x204a56=_0xc1eb[_0x2ff238];return _0x204a56;};'use strict';var multer=require('multer');var util=require(_0xbc1e('0x0'));var path=require(_0xbc1e('0x1'));var timeout=require('connect-timeout');var express=require(_0xbc1e('0x2'));var router=express[_0xbc1e('0x3')]();var fs_extra=require(_0xbc1e('0x4'));var auth=require(_0xbc1e('0x5'));var interaction=require(_0xbc1e('0x6'));var config=require(_0xbc1e('0x7'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0xbc1e('0x8')](),controller[_0xbc1e('0x9')]);router[_0xbc1e('0xa')](_0xbc1e('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xbc1e('0xa')](_0xbc1e('0xc'),auth[_0xbc1e('0x8')](),controller[_0xbc1e('0xd')]);router[_0xbc1e('0xa')](_0xbc1e('0xe'),auth['isAuthenticated'](),controller[_0xbc1e('0xf')]);router[_0xbc1e('0x10')]('/',auth[_0xbc1e('0x8')](),controller[_0xbc1e('0x11')]);router['put'](_0xbc1e('0xc'),auth[_0xbc1e('0x8')](),controller['update']);router['delete'](_0xbc1e('0xc'),auth[_0xbc1e('0x8')](),controller[_0xbc1e('0x12')]);module[_0xbc1e('0x13')]=router;
\ No newline at end of file
index 68e2b4d..ba47b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3118=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','starttime','setDataValue'];(function(_0x298395,_0xbbf7ad){var _0x581a78=function(_0x40aa07){while(--_0x40aa07){_0x298395['push'](_0x298395['shift']());}};_0x581a78(++_0xbbf7ad);}(_0x3118,0x1da));var _0x8311=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x3118[_0x487b0c];return _0x1adbdc;};'use strict';var moment=require(_0x8311('0x0'));var Sequelize=require(_0x8311('0x1'));module[_0x8311('0x2')]={'starttime':{'type':Sequelize[_0x8311('0x3')],'set':function(_0x3a119d){this['setDataValue'](_0x8311('0x4'),_0x3a119d);this[_0x8311('0x5')](_0x8311('0x6'),moment()[_0x8311('0x7')](_0x8311('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x8311('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x8311('0x9')]},'calleridname':{'type':Sequelize[_0x8311('0x9')]},'calleridnum':{'type':Sequelize[_0x8311('0x9')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd957=['starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','DATE','setDataValue'];(function(_0x44e366,_0x1a83c1){var _0x21713a=function(_0x2fc7d5){while(--_0x2fc7d5){_0x44e366['push'](_0x44e366['shift']());}};_0x21713a(++_0x1a83c1);}(_0xd957,0x1b6));var _0x7d95=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd957[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0x7d95('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x7d95('0x1')],'set':function(_0x1ba5af){this[_0x7d95('0x2')](_0x7d95('0x3'),_0x1ba5af);this['setDataValue'](_0x7d95('0x4'),moment()[_0x7d95('0x5')](_0x7d95('0x6')));}},'endtime':{'type':Sequelize[_0x7d95('0x1')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x7d95('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x7d95('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x7d95('0x7')]},'completed':{'type':Sequelize[_0x7d95('0x8')],'defaultValue':![]}};
\ No newline at end of file
index 0ba7040..0e63052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf6a=['model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','SessionId','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','apply','reject','save','then','stack','name','send','map','JscriptySessionReport','rawAttributes','fieldName','key','query','filters','intersection'];(function(_0x1c6596,_0x59c8cb){var _0x4c1af1=function(_0x1af815){while(--_0x1af815){_0x1c6596['push'](_0x1c6596['shift']());}};_0x4c1af1(++_0x59c8cb);}(_0xcf6a,0xb8));var _0xacf6=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xcf6a[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xacf6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xacf6('0x1'));var jsonpatch=require(_0xacf6('0x2'));var rp=require(_0xacf6('0x3'));var moment=require(_0xacf6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xacf6('0x5'));var util=require(_0xacf6('0x6'));var path=require('path');var sox=require(_0xacf6('0x7'));var csv=require('to-csv');var ejs=require(_0xacf6('0x8'));var fs=require('fs');var fs_extra=require(_0xacf6('0x9'));var _=require(_0xacf6('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xacf6('0xb'));var toCsv=require(_0xacf6('0xc'));var querystring=require('querystring');var Papa=require(_0xacf6('0xd'));var Redis=require('ioredis');var authService=require(_0xacf6('0xe'));var qs=require(_0xacf6('0xf'));var as=require(_0xacf6('0x10'));var hardwareService=require(_0xacf6('0x11'));var logger=require(_0xacf6('0x12'))(_0xacf6('0x13'));var utils=require(_0xacf6('0x14'));var config=require(_0xacf6('0x15'));var licenseUtil=require(_0xacf6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45c38e,_0x4985b3){_0x4985b3=_0x4985b3||0xcc;return function(_0x427cdd){if(_0x427cdd){return _0x45c38e[_0xacf6('0x17')](_0x4985b3);}return _0x45c38e['status'](_0x4985b3)[_0xacf6('0x18')]();};}function respondWithResult(_0x35a504,_0x3d9526){_0x3d9526=_0x3d9526||0xc8;return function(_0x3f7841){if(_0x3f7841){return _0x35a504[_0xacf6('0x19')](_0x3d9526)[_0xacf6('0x1a')](_0x3f7841);}};}function respondWithFilteredResult(_0x4c7bc4,_0x1e78fa){return function(_0x515fcb){if(_0x515fcb){var _0x5b2f90=typeof _0x1e78fa['offset']===_0xacf6('0x1b')&&typeof _0x1e78fa['limit']==='undefined';var _0x29a3a2=_0x515fcb[_0xacf6('0x1c')];var _0x3c7791=_0x5b2f90?0x0:_0x1e78fa[_0xacf6('0x1d')];var _0x1accf8=_0x5b2f90?_0x515fcb[_0xacf6('0x1c')]:_0x1e78fa[_0xacf6('0x1d')]+_0x1e78fa[_0xacf6('0x1e')];var _0x3f4b27;if(_0x1accf8>=_0x29a3a2){_0x1accf8=_0x29a3a2;_0x3f4b27=0xc8;}else{_0x3f4b27=0xce;}_0x4c7bc4['status'](_0x3f4b27);return _0x4c7bc4[_0xacf6('0x1f')]('Content-Range',_0x3c7791+'-'+_0x1accf8+'/'+_0x29a3a2)[_0xacf6('0x1a')](_0x515fcb);}return null;};}function patchUpdates(_0x2d6b01){return function(_0x1e17d0){try{jsonpatch[_0xacf6('0x20')](_0x1e17d0,_0x2d6b01,!![]);}catch(_0x298e1f){return BPromise[_0xacf6('0x21')](_0x298e1f);}return _0x1e17d0[_0xacf6('0x22')]();};}function saveUpdates(_0x30c9f9,_0xc01b8e){return function(_0x40c230){if(_0x40c230){return _0x40c230['update'](_0x30c9f9)[_0xacf6('0x23')](function(_0x26db28){return _0x26db28;});}return null;};}function removeEntity(_0x1d95f1,_0x2ff114){return function(_0x39092e){if(_0x39092e){return _0x39092e['destroy']()['then'](function(){_0x1d95f1[_0xacf6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26551c,_0x21a138){return function(_0x54eaaa){if(!_0x54eaaa){_0x26551c['sendStatus'](0x194);}return _0x54eaaa;};}function handleError(_0xf9ab6f,_0x483a95){_0x483a95=_0x483a95||0x1f4;return function(_0x1ae84e){logger['error'](_0x1ae84e[_0xacf6('0x24')]);if(_0x1ae84e[_0xacf6('0x25')]){delete _0x1ae84e[_0xacf6('0x25')];}_0xf9ab6f[_0xacf6('0x19')](_0x483a95)[_0xacf6('0x26')](_0x1ae84e);};}exports['index']=function(_0xbce028,_0x18ebd6){var _0x29f8c0={},_0x1e1f85={},_0x43e393={'count':0x0,'rows':[]};var _0x1549d8=_[_0xacf6('0x27')](db[_0xacf6('0x28')][_0xacf6('0x29')],function(_0x47f653){return{'name':_0x47f653[_0xacf6('0x2a')],'type':_0x47f653['type'][_0xacf6('0x2b')]};});_0x1e1f85['model']=_[_0xacf6('0x27')](_0x1549d8,_0xacf6('0x25'));_0x1e1f85[_0xacf6('0x2c')]=_['keys'](_0xbce028['query']);_0x1e1f85[_0xacf6('0x2d')]=_[_0xacf6('0x2e')](_0x1e1f85[_0xacf6('0x2f')],_0x1e1f85[_0xacf6('0x2c')]);_0x29f8c0[_0xacf6('0x30')]=_['intersection'](_0x1e1f85[_0xacf6('0x2f')],qs[_0xacf6('0x31')](_0xbce028[_0xacf6('0x2c')]['fields']));_0x29f8c0['attributes']=_0x29f8c0[_0xacf6('0x30')][_0xacf6('0x32')]?_0x29f8c0[_0xacf6('0x30')]:_0x1e1f85[_0xacf6('0x2f')];if(!_0xbce028[_0xacf6('0x2c')][_0xacf6('0x33')](_0xacf6('0x34'))){_0x29f8c0[_0xacf6('0x1e')]=qs[_0xacf6('0x1e')](_0xbce028[_0xacf6('0x2c')][_0xacf6('0x1e')]);_0x29f8c0[_0xacf6('0x1d')]=qs[_0xacf6('0x1d')](_0xbce028[_0xacf6('0x2c')][_0xacf6('0x1d')]);}_0x29f8c0[_0xacf6('0x35')]=qs['sort'](_0xbce028['query'][_0xacf6('0x36')]);_0x29f8c0[_0xacf6('0x37')]=qs[_0xacf6('0x2d')](_['pick'](_0xbce028[_0xacf6('0x2c')],_0x1e1f85[_0xacf6('0x2d')]),_0x1549d8);if(_0xbce028[_0xacf6('0x2c')][_0xacf6('0x38')]){_0x29f8c0[_0xacf6('0x37')]=_[_0xacf6('0x39')](_0x29f8c0[_0xacf6('0x37')],{'$or':_[_0xacf6('0x27')](_0x1549d8,function(_0x596a12){if(_0x596a12[_0xacf6('0x3a')]!==_0xacf6('0x3b')){var _0x26991a={};_0x26991a[_0x596a12[_0xacf6('0x25')]]={'$like':'%'+_0xbce028[_0xacf6('0x2c')][_0xacf6('0x38')]+'%'};return _0x26991a;}})});}_0x29f8c0=_['merge']({},_0x29f8c0,_0xbce028[_0xacf6('0x3c')]);var _0x11ea98={'where':_0x29f8c0[_0xacf6('0x37')]};return db['JscriptySessionReport'][_0xacf6('0x1c')](_0x11ea98)['then'](function(_0x4f65d6){_0x43e393[_0xacf6('0x1c')]=_0x4f65d6;if(_0xbce028[_0xacf6('0x2c')][_0xacf6('0x3d')]){_0x29f8c0[_0xacf6('0x3e')]=[{'all':!![]}];}return db[_0xacf6('0x28')][_0xacf6('0x3f')](_0x29f8c0);})[_0xacf6('0x23')](function(_0x4e2d73){_0x43e393[_0xacf6('0x40')]=_0x4e2d73;return _0x43e393;})[_0xacf6('0x23')](respondWithFilteredResult(_0x18ebd6,_0x29f8c0))[_0xacf6('0x41')](handleError(_0x18ebd6,null));};exports[_0xacf6('0x42')]=function(_0x2db746,_0x30a664){var _0x34226a={'raw':!![],'where':{'id':_0x2db746[_0xacf6('0x43')]['id']}},_0x4790b5={};_0x4790b5[_0xacf6('0x2f')]=_['keys'](db[_0xacf6('0x28')][_0xacf6('0x29')]);_0x4790b5[_0xacf6('0x2c')]=_[_0xacf6('0x44')](_0x2db746[_0xacf6('0x2c')]);_0x4790b5[_0xacf6('0x2d')]=_['intersection'](_0x4790b5[_0xacf6('0x2f')],_0x4790b5[_0xacf6('0x2c')]);_0x34226a[_0xacf6('0x30')]=_[_0xacf6('0x2e')](_0x4790b5[_0xacf6('0x2f')],qs['fields'](_0x2db746[_0xacf6('0x2c')][_0xacf6('0x31')]));_0x34226a['attributes']=_0x34226a[_0xacf6('0x30')][_0xacf6('0x32')]?_0x34226a[_0xacf6('0x30')]:_0x4790b5[_0xacf6('0x2f')];if(_0x2db746['query'][_0xacf6('0x3d')]){_0x34226a[_0xacf6('0x3e')]=[{'all':!![]}];}_0x34226a=_['merge']({},_0x34226a,_0x2db746[_0xacf6('0x3c')]);return db['JscriptySessionReport']['find'](_0x34226a)[_0xacf6('0x23')](handleEntityNotFound(_0x30a664,null))[_0xacf6('0x23')](respondWithResult(_0x30a664,null))['catch'](handleError(_0x30a664,null));};exports[_0xacf6('0x45')]=function(_0xa53567,_0x123ae6){return db['JscriptySessionReport'][_0xacf6('0x45')](_0xa53567['body'],{})[_0xacf6('0x23')](respondWithResult(_0x123ae6,0xc9))[_0xacf6('0x41')](handleError(_0x123ae6,null));};exports['update']=function(_0x4a0db0,_0x43bff5){if(_0x4a0db0[_0xacf6('0x46')]['id']){delete _0x4a0db0[_0xacf6('0x46')]['id'];}return db[_0xacf6('0x28')][_0xacf6('0x47')]({'where':{'id':_0x4a0db0[_0xacf6('0x43')]['id']}})[_0xacf6('0x23')](handleEntityNotFound(_0x43bff5,null))[_0xacf6('0x23')](saveUpdates(_0x4a0db0['body'],null))[_0xacf6('0x23')](respondWithResult(_0x43bff5,null))[_0xacf6('0x41')](handleError(_0x43bff5,null));};exports['destroy']=function(_0xffb33e,_0x1ed46d){return db[_0xacf6('0x28')][_0xacf6('0x47')]({'where':{'id':_0xffb33e['params']['id']}})['then'](handleEntityNotFound(_0x1ed46d,null))['then'](removeEntity(_0x1ed46d,null))['catch'](handleError(_0x1ed46d,null));};exports[_0xacf6('0x48')]=function(_0x56b74c,_0x5ab3e6){return db[_0xacf6('0x28')]['describe']()[_0xacf6('0x23')](respondWithResult(_0x5ab3e6,null))[_0xacf6('0x41')](handleError(_0x5ab3e6,null));};exports[_0xacf6('0x49')]=function(_0x374815,_0x44284c,_0xb222de){var _0x2b1f21={'raw':!![],'where':{}};var _0x5deb8c={};var _0x10400b={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xacf6('0x4a')]({'where':{'id':_0x374815[_0xacf6('0x43')]['id']}})['then'](handleEntityNotFound(_0x44284c,null))[_0xacf6('0x23')](function(_0x60c482){if(_0x60c482){_0x5deb8c[_0xacf6('0x2f')]=_['keys'](db[_0xacf6('0x4b')]['rawAttributes']);_0x5deb8c['query']=_[_0xacf6('0x44')](_0x374815[_0xacf6('0x2c')]);_0x5deb8c[_0xacf6('0x2d')]=_[_0xacf6('0x2e')](_0x5deb8c['model'],_0x5deb8c['query']);_0x2b1f21[_0xacf6('0x30')]=_[_0xacf6('0x2e')](_0x5deb8c[_0xacf6('0x2f')],qs[_0xacf6('0x31')](_0x374815[_0xacf6('0x2c')]['fields']));_0x2b1f21[_0xacf6('0x30')]=_0x2b1f21[_0xacf6('0x30')][_0xacf6('0x32')]?_0x2b1f21[_0xacf6('0x30')]:_0x5deb8c[_0xacf6('0x2f')];if(!_0x374815['query'][_0xacf6('0x33')]('nolimit')){_0x2b1f21[_0xacf6('0x1e')]=qs[_0xacf6('0x1e')](_0x374815[_0xacf6('0x2c')]['limit']);_0x2b1f21['offset']=qs['offset'](_0x374815[_0xacf6('0x2c')][_0xacf6('0x1d')]);}_0x2b1f21[_0xacf6('0x35')]=qs[_0xacf6('0x36')](_0x374815[_0xacf6('0x2c')][_0xacf6('0x36')]);_0x2b1f21[_0xacf6('0x37')]=qs[_0xacf6('0x2d')](_['pick'](_0x374815[_0xacf6('0x2c')],_0x5deb8c['filters']));_0x2b1f21[_0xacf6('0x37')][_0xacf6('0x4c')]=_0x60c482['id'];if(_0x374815['query']['filter']){_0x2b1f21[_0xacf6('0x37')]=_[_0xacf6('0x39')](_0x2b1f21['where'],{'$or':_['map'](_0x2b1f21[_0xacf6('0x30')],function(_0x337661){var _0x41b8c5={};_0x41b8c5[_0x337661]={'$like':'%'+_0x374815[_0xacf6('0x2c')]['filter']+'%'};return _0x41b8c5;})});}_0x2b1f21=_[_0xacf6('0x39')]({},_0x2b1f21,_0x374815[_0xacf6('0x3c')]);return db[_0xacf6('0x4b')][_0xacf6('0x1c')]({'where':_0x2b1f21[_0xacf6('0x37')]})['then'](function(_0x15d27b){_0x10400b[_0xacf6('0x1c')]=_0x15d27b;if(_0x374815[_0xacf6('0x2c')][_0xacf6('0x3d')]){_0x2b1f21[_0xacf6('0x3e')]=[{'all':!![]}];}return db[_0xacf6('0x4b')][_0xacf6('0x3f')](_0x2b1f21);})[_0xacf6('0x23')](function(_0x3244dc){_0x10400b['rows']=_0x3244dc;return _0x10400b;});}})[_0xacf6('0x23')](respondWithFilteredResult(_0x44284c,_0x2b1f21))['catch'](handleError(_0x44284c,null));};
\ No newline at end of file
+var _0x1d95=['squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','then','destroy','error','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','params','options','find','catch','create','body','update','describe','findOne','JscriptyQuestionReport','rows','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra'];(function(_0x296502,_0x2b29c0){var _0x370a2b=function(_0x405e9d){while(--_0x405e9d){_0x296502['push'](_0x296502['shift']());}};_0x370a2b(++_0x2b29c0);}(_0x1d95,0x91));var _0x51d9=function(_0x41d191,_0xfa1306){_0x41d191=_0x41d191-0x0;var _0x17b7b4=_0x1d95[_0x41d191];return _0x17b7b4;};'use strict';var emlformat=require(_0x51d9('0x0'));var rimraf=require(_0x51d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x51d9('0x2'));var rp=require(_0x51d9('0x3'));var moment=require(_0x51d9('0x4'));var BPromise=require(_0x51d9('0x5'));var Mustache=require(_0x51d9('0x6'));var util=require(_0x51d9('0x7'));var path=require(_0x51d9('0x8'));var sox=require('sox');var csv=require(_0x51d9('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51d9('0xa'));var _=require('lodash');var squel=require(_0x51d9('0xb'));var crypto=require('crypto');var jsforce=require(_0x51d9('0xc'));var deskjs=require(_0x51d9('0xd'));var toCsv=require(_0x51d9('0x9'));var querystring=require(_0x51d9('0xe'));var Papa=require(_0x51d9('0xf'));var Redis=require(_0x51d9('0x10'));var authService=require(_0x51d9('0x11'));var qs=require(_0x51d9('0x12'));var as=require(_0x51d9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x51d9('0x14'));var utils=require('../../config/utils');var config=require(_0x51d9('0x15'));var licenseUtil=require(_0x51d9('0x16'));var db=require(_0x51d9('0x17'))['db'];function respondWithStatusCode(_0x34fafd,_0xc79d93){_0xc79d93=_0xc79d93||0xcc;return function(_0x441d7d){if(_0x441d7d){return _0x34fafd[_0x51d9('0x18')](_0xc79d93);}return _0x34fafd[_0x51d9('0x19')](_0xc79d93)[_0x51d9('0x1a')]();};}function respondWithResult(_0x2a9bf1,_0x378fc8){_0x378fc8=_0x378fc8||0xc8;return function(_0x25d6c6){if(_0x25d6c6){return _0x2a9bf1[_0x51d9('0x19')](_0x378fc8)['json'](_0x25d6c6);}};}function respondWithFilteredResult(_0x3f1acf,_0x2e8f90){return function(_0x55801b){if(_0x55801b){var _0x129278=typeof _0x2e8f90['offset']===_0x51d9('0x1b')&&typeof _0x2e8f90[_0x51d9('0x1c')]===_0x51d9('0x1b');var _0x3c6f14=_0x55801b[_0x51d9('0x1d')];var _0x535bea=_0x129278?0x0:_0x2e8f90[_0x51d9('0x1e')];var _0x5ba428=_0x129278?_0x55801b[_0x51d9('0x1d')]:_0x2e8f90[_0x51d9('0x1e')]+_0x2e8f90['limit'];var _0x16b836;if(_0x5ba428>=_0x3c6f14){_0x5ba428=_0x3c6f14;_0x16b836=0xc8;}else{_0x16b836=0xce;}_0x3f1acf[_0x51d9('0x19')](_0x16b836);return _0x3f1acf[_0x51d9('0x1f')]('Content-Range',_0x535bea+'-'+_0x5ba428+'/'+_0x3c6f14)[_0x51d9('0x20')](_0x55801b);}return null;};}function patchUpdates(_0x58d5a0){return function(_0x5c4dfa){try{jsonpatch[_0x51d9('0x21')](_0x5c4dfa,_0x58d5a0,!![]);}catch(_0x12f8af){return BPromise['reject'](_0x12f8af);}return _0x5c4dfa[_0x51d9('0x22')]();};}function saveUpdates(_0x1da9f1,_0x39d944){return function(_0x11efd4){if(_0x11efd4){return _0x11efd4['update'](_0x1da9f1)[_0x51d9('0x23')](function(_0x58e3d7){return _0x58e3d7;});}return null;};}function removeEntity(_0x217195,_0x123103){return function(_0x17372e){if(_0x17372e){return _0x17372e[_0x51d9('0x24')]()['then'](function(){_0x217195[_0x51d9('0x19')](0xcc)[_0x51d9('0x1a')]();});}};}function handleEntityNotFound(_0x3bcde3,_0x4f35db){return function(_0x12aab7){if(!_0x12aab7){_0x3bcde3[_0x51d9('0x18')](0x194);}return _0x12aab7;};}function handleError(_0x654a50,_0x41718d){_0x41718d=_0x41718d||0x1f4;return function(_0x35c827){logger[_0x51d9('0x25')](_0x35c827['stack']);if(_0x35c827[_0x51d9('0x26')]){delete _0x35c827['name'];}_0x654a50[_0x51d9('0x19')](_0x41718d)[_0x51d9('0x27')](_0x35c827);};}exports[_0x51d9('0x28')]=function(_0x57fcdf,_0x17e3e3){var _0x412f0d={},_0x446a1b={},_0x281fd6={'count':0x0,'rows':[]};var _0x327a3e=_[_0x51d9('0x29')](db[_0x51d9('0x2a')][_0x51d9('0x2b')],function(_0x1b5be5){return{'name':_0x1b5be5[_0x51d9('0x2c')],'type':_0x1b5be5['type'][_0x51d9('0x2d')]};});_0x446a1b[_0x51d9('0x2e')]=_[_0x51d9('0x29')](_0x327a3e,_0x51d9('0x26'));_0x446a1b[_0x51d9('0x2f')]=_[_0x51d9('0x30')](_0x57fcdf[_0x51d9('0x2f')]);_0x446a1b[_0x51d9('0x31')]=_[_0x51d9('0x32')](_0x446a1b[_0x51d9('0x2e')],_0x446a1b['query']);_0x412f0d[_0x51d9('0x33')]=_[_0x51d9('0x32')](_0x446a1b[_0x51d9('0x2e')],qs[_0x51d9('0x34')](_0x57fcdf['query']['fields']));_0x412f0d[_0x51d9('0x33')]=_0x412f0d[_0x51d9('0x33')][_0x51d9('0x35')]?_0x412f0d[_0x51d9('0x33')]:_0x446a1b[_0x51d9('0x2e')];if(!_0x57fcdf['query'][_0x51d9('0x36')](_0x51d9('0x37'))){_0x412f0d[_0x51d9('0x1c')]=qs[_0x51d9('0x1c')](_0x57fcdf[_0x51d9('0x2f')][_0x51d9('0x1c')]);_0x412f0d['offset']=qs[_0x51d9('0x1e')](_0x57fcdf['query']['offset']);}_0x412f0d[_0x51d9('0x38')]=qs[_0x51d9('0x39')](_0x57fcdf[_0x51d9('0x2f')][_0x51d9('0x39')]);_0x412f0d[_0x51d9('0x3a')]=qs['filters'](_[_0x51d9('0x3b')](_0x57fcdf[_0x51d9('0x2f')],_0x446a1b['filters']),_0x327a3e);if(_0x57fcdf[_0x51d9('0x2f')][_0x51d9('0x3c')]){_0x412f0d[_0x51d9('0x3a')]=_[_0x51d9('0x3d')](_0x412f0d[_0x51d9('0x3a')],{'$or':_['map'](_0x327a3e,function(_0x281f96){if(_0x281f96['type']!==_0x51d9('0x3e')){var _0x2bca75={};_0x2bca75[_0x281f96['name']]={'$like':'%'+_0x57fcdf['query'][_0x51d9('0x3c')]+'%'};return _0x2bca75;}})});}_0x412f0d=_[_0x51d9('0x3d')]({},_0x412f0d,_0x57fcdf['options']);var _0x5b3f73={'where':_0x412f0d[_0x51d9('0x3a')]};return db[_0x51d9('0x2a')][_0x51d9('0x1d')](_0x5b3f73)['then'](function(_0x4d823f){_0x281fd6[_0x51d9('0x1d')]=_0x4d823f;if(_0x57fcdf[_0x51d9('0x2f')][_0x51d9('0x3f')]){_0x412f0d[_0x51d9('0x40')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x51d9('0x41')](_0x412f0d);})['then'](function(_0x560deb){_0x281fd6['rows']=_0x560deb;return _0x281fd6;})[_0x51d9('0x23')](respondWithFilteredResult(_0x17e3e3,_0x412f0d))['catch'](handleError(_0x17e3e3,null));};exports[_0x51d9('0x42')]=function(_0x297e5c,_0x1cff53){var _0x474997={'raw':!![],'where':{'id':_0x297e5c[_0x51d9('0x43')]['id']}},_0x1b27a9={};_0x1b27a9['model']=_['keys'](db[_0x51d9('0x2a')][_0x51d9('0x2b')]);_0x1b27a9[_0x51d9('0x2f')]=_[_0x51d9('0x30')](_0x297e5c['query']);_0x1b27a9[_0x51d9('0x31')]=_[_0x51d9('0x32')](_0x1b27a9['model'],_0x1b27a9[_0x51d9('0x2f')]);_0x474997['attributes']=_['intersection'](_0x1b27a9[_0x51d9('0x2e')],qs[_0x51d9('0x34')](_0x297e5c[_0x51d9('0x2f')]['fields']));_0x474997[_0x51d9('0x33')]=_0x474997[_0x51d9('0x33')][_0x51d9('0x35')]?_0x474997[_0x51d9('0x33')]:_0x1b27a9['model'];if(_0x297e5c['query'][_0x51d9('0x3f')]){_0x474997[_0x51d9('0x40')]=[{'all':!![]}];}_0x474997=_['merge']({},_0x474997,_0x297e5c[_0x51d9('0x44')]);return db[_0x51d9('0x2a')][_0x51d9('0x45')](_0x474997)[_0x51d9('0x23')](handleEntityNotFound(_0x1cff53,null))[_0x51d9('0x23')](respondWithResult(_0x1cff53,null))[_0x51d9('0x46')](handleError(_0x1cff53,null));};exports['create']=function(_0x5e7a2c,_0x4cdceb){return db[_0x51d9('0x2a')][_0x51d9('0x47')](_0x5e7a2c[_0x51d9('0x48')],{})[_0x51d9('0x23')](respondWithResult(_0x4cdceb,0xc9))[_0x51d9('0x46')](handleError(_0x4cdceb,null));};exports[_0x51d9('0x49')]=function(_0x45f01a,_0x2b47ae){if(_0x45f01a[_0x51d9('0x48')]['id']){delete _0x45f01a[_0x51d9('0x48')]['id'];}return db[_0x51d9('0x2a')]['find']({'where':{'id':_0x45f01a[_0x51d9('0x43')]['id']}})['then'](handleEntityNotFound(_0x2b47ae,null))[_0x51d9('0x23')](saveUpdates(_0x45f01a[_0x51d9('0x48')],null))[_0x51d9('0x23')](respondWithResult(_0x2b47ae,null))[_0x51d9('0x46')](handleError(_0x2b47ae,null));};exports[_0x51d9('0x24')]=function(_0x37df3e,_0x3df56b){return db[_0x51d9('0x2a')]['find']({'where':{'id':_0x37df3e['params']['id']}})[_0x51d9('0x23')](handleEntityNotFound(_0x3df56b,null))[_0x51d9('0x23')](removeEntity(_0x3df56b,null))[_0x51d9('0x46')](handleError(_0x3df56b,null));};exports[_0x51d9('0x4a')]=function(_0x3bff80,_0x533797){return db['JscriptySessionReport'][_0x51d9('0x4a')]()[_0x51d9('0x23')](respondWithResult(_0x533797,null))['catch'](handleError(_0x533797,null));};exports['getQuestions']=function(_0x5cd2c4,_0x1214c1,_0x260cd4){var _0x4e5009={'raw':!![],'where':{}};var _0x27cf81={};var _0x3f4c40={'count':0x0,'rows':[]};return db[_0x51d9('0x2a')][_0x51d9('0x4b')]({'where':{'id':_0x5cd2c4[_0x51d9('0x43')]['id']}})[_0x51d9('0x23')](handleEntityNotFound(_0x1214c1,null))['then'](function(_0xfcf5e3){if(_0xfcf5e3){_0x27cf81['model']=_[_0x51d9('0x30')](db[_0x51d9('0x4c')]['rawAttributes']);_0x27cf81[_0x51d9('0x2f')]=_[_0x51d9('0x30')](_0x5cd2c4['query']);_0x27cf81[_0x51d9('0x31')]=_['intersection'](_0x27cf81['model'],_0x27cf81['query']);_0x4e5009[_0x51d9('0x33')]=_[_0x51d9('0x32')](_0x27cf81[_0x51d9('0x2e')],qs[_0x51d9('0x34')](_0x5cd2c4[_0x51d9('0x2f')][_0x51d9('0x34')]));_0x4e5009[_0x51d9('0x33')]=_0x4e5009[_0x51d9('0x33')][_0x51d9('0x35')]?_0x4e5009[_0x51d9('0x33')]:_0x27cf81['model'];if(!_0x5cd2c4[_0x51d9('0x2f')][_0x51d9('0x36')](_0x51d9('0x37'))){_0x4e5009[_0x51d9('0x1c')]=qs[_0x51d9('0x1c')](_0x5cd2c4[_0x51d9('0x2f')][_0x51d9('0x1c')]);_0x4e5009[_0x51d9('0x1e')]=qs['offset'](_0x5cd2c4['query'][_0x51d9('0x1e')]);}_0x4e5009[_0x51d9('0x38')]=qs[_0x51d9('0x39')](_0x5cd2c4[_0x51d9('0x2f')][_0x51d9('0x39')]);_0x4e5009[_0x51d9('0x3a')]=qs[_0x51d9('0x31')](_[_0x51d9('0x3b')](_0x5cd2c4['query'],_0x27cf81[_0x51d9('0x31')]));_0x4e5009[_0x51d9('0x3a')]['SessionId']=_0xfcf5e3['id'];if(_0x5cd2c4[_0x51d9('0x2f')]['filter']){_0x4e5009[_0x51d9('0x3a')]=_[_0x51d9('0x3d')](_0x4e5009['where'],{'$or':_[_0x51d9('0x29')](_0x4e5009[_0x51d9('0x33')],function(_0x118778){var _0x286160={};_0x286160[_0x118778]={'$like':'%'+_0x5cd2c4[_0x51d9('0x2f')]['filter']+'%'};return _0x286160;})});}_0x4e5009=_[_0x51d9('0x3d')]({},_0x4e5009,_0x5cd2c4[_0x51d9('0x44')]);return db[_0x51d9('0x4c')][_0x51d9('0x1d')]({'where':_0x4e5009[_0x51d9('0x3a')]})['then'](function(_0x4ae054){_0x3f4c40['count']=_0x4ae054;if(_0x5cd2c4[_0x51d9('0x2f')][_0x51d9('0x3f')]){_0x4e5009['include']=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x51d9('0x41')](_0x4e5009);})[_0x51d9('0x23')](function(_0x3e3256){_0x3f4c40[_0x51d9('0x4d')]=_0x3e3256;return _0x3f4c40;});}})['then'](respondWithFilteredResult(_0x1214c1,_0x4e5009))[_0x51d9('0x46')](handleError(_0x1214c1,null));};
\ No newline at end of file
index efba630..7caed49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['bluebird','path','../../config/environment','./jscriptySessionReport.attributes','define','JscriptySessionReport','lodash','util','../../config/logger','api','moment'];(function(_0x22a939,_0xc74452){var _0x1173f7=function(_0x2ae5f6){while(--_0x2ae5f6){_0x22a939['push'](_0x22a939['shift']());}};_0x1173f7(++_0xc74452);}(_0x53ec,0x192));var _0xc53e=function(_0x15cdcb,_0x4340e9){_0x15cdcb=_0x15cdcb-0x0;var _0x37b069=_0x53ec[_0x15cdcb];return _0x37b069;};'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_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x44e8=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x44e8,0xd7));var _0x844e=function(_0x3d7947,_0x537884){_0x3d7947=_0x3d7947-0x0;var _0x1f4a50=_0x44e8[_0x3d7947];return _0x1f4a50;};'use strict';var _=require(_0x844e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x844e('0x1'));var moment=require(_0x844e('0x2'));var BPromise=require(_0x844e('0x3'));var rp=require(_0x844e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x844e('0x5'));var config=require(_0x844e('0x6'));var attributes=require(_0x844e('0x7'));module[_0x844e('0x8')]=function(_0x5c8f67,_0x2f6539){return _0x5c8f67[_0x844e('0x9')](_0x844e('0xa'),attributes,{'tableName':_0x844e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 975b5eb..727cda8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','JscriptySessionReport,\x20%s,\x20%s'];(function(_0xc11899,_0x2376ce){var _0x1ad8fa=function(_0x347f0f){while(--_0x347f0f){_0xc11899['push'](_0xc11899['shift']());}};_0x1ad8fa(++_0x2376ce);}(_0x9536,0x179));var _0x6953=function(_0x548200,_0x3241b8){_0x548200=_0x548200-0x0;var _0x1a6d74=_0x9536[_0x548200];return _0x1a6d74;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
+var _0xfb11=['info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x46939d,_0xc1b36d){var _0x5105e8=function(_0x536281){while(--_0x536281){_0x46939d['push'](_0x46939d['shift']());}};_0x5105e8(++_0xc1b36d);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xfb11[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var moment=require(_0x1fb1('0x1'));var BPromise=require(_0x1fb1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fb1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1fb1('0x4'));var logger=require('../../config/logger')(_0x1fb1('0x5'));var config=require(_0x1fb1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1fb1('0x7')][_0x1fb1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c098d,_0x1859da,_0x2596c2){return new BPromise(function(_0x34e61a,_0x236b20){return client[_0x1fb1('0x9')](_0x4c098d,_0x2596c2)[_0x1fb1('0xa')](function(_0x438d15){logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,_0x1fb1('0xd'));logger['debug'](_0x1fb1('0xe'),_0x1859da,'request\x20sent',JSON[_0x1fb1('0xf')](_0x438d15));if(_0x438d15['error']){if(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x11')]===0x1f4){logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x236b20(_0x438d15['error'][_0x1fb1('0x12')]);}logger[_0x1fb1('0x10')](_0x1fb1('0xc'),_0x1859da,_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);return _0x34e61a(_0x438d15[_0x1fb1('0x10')][_0x1fb1('0x12')]);}else{logger[_0x1fb1('0xb')](_0x1fb1('0xc'),_0x1859da,'request\x20sent');_0x34e61a(_0x438d15['result'][_0x1fb1('0x12')]);}})[_0x1fb1('0x13')](function(_0x3924ab){logger['error'](_0x1fb1('0xc'),_0x1859da,_0x3924ab);_0x236b20(_0x3924ab);});});}
\ No newline at end of file
index acfd906..0879bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a49=['Router','fs-extra','../../config/environment','./license.controller','get','/:id','/download_log_file','isAuthenticated','downloadLogFile','util','path','connect-timeout','express'];(function(_0x256104,_0x333d7e){var _0x2c1152=function(_0x5e0775){while(--_0x5e0775){_0x256104['push'](_0x256104['shift']());}};_0x2c1152(++_0x333d7e);}(_0x5a49,0x1a9));var _0x95a4=function(_0x4153de,_0x25e26d){_0x4153de=_0x4153de-0x0;var _0x3d379b=_0x5a49[_0x4153de];return _0x3d379b;};'use strict';var multer=require('multer');var util=require(_0x95a4('0x0'));var path=require(_0x95a4('0x1'));var timeout=require(_0x95a4('0x2'));var express=require(_0x95a4('0x3'));var router=express[_0x95a4('0x4')]();var fs_extra=require(_0x95a4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x95a4('0x6'));var controller=require(_0x95a4('0x7'));router[_0x95a4('0x8')]('/',controller['index']);router['put'](_0x95a4('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x95a4('0x8')](_0x95a4('0xa'),auth[_0x95a4('0xb')](),controller[_0x95a4('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0xd9eb=['index','isAuthenticated','update','downloadLogFile','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller','get'];(function(_0x1630f1,_0x2eba83){var _0x1531e6=function(_0x1d25ec){while(--_0x1d25ec){_0x1630f1['push'](_0x1630f1['shift']());}};_0x1531e6(++_0x2eba83);}(_0xd9eb,0xd5));var _0xbd9e=function(_0x3fd9d8,_0x9a1892){_0x3fd9d8=_0x3fd9d8-0x0;var _0x181131=_0xd9eb[_0x3fd9d8];return _0x181131;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xbd9e('0x0'));var timeout=require(_0xbd9e('0x1'));var express=require('express');var router=express[_0xbd9e('0x2')]();var fs_extra=require(_0xbd9e('0x3'));var auth=require(_0xbd9e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbd9e('0x5'));var controller=require(_0xbd9e('0x6'));router[_0xbd9e('0x7')]('/',controller[_0xbd9e('0x8')]);router['put']('/:id',auth[_0xbd9e('0x9')](),controller[_0xbd9e('0xa')]);router[_0xbd9e('0x7')]('/download_log_file',auth[_0xbd9e('0x9')](),controller[_0xbd9e('0xb')]);module[_0xbd9e('0xc')]=router;
\ No newline at end of file
index 2b0be27..55cde00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x670b=['sequelize','exports','TEXT','STRING'];(function(_0x410c4c,_0x5a4b5b){var _0x33c763=function(_0x648d29){while(--_0x648d29){_0x410c4c['push'](_0x410c4c['shift']());}};_0x33c763(++_0x5a4b5b);}(_0x670b,0x184));var _0xb670=function(_0x5a7de2,_0x27221f){_0x5a7de2=_0x5a7de2-0x0;var _0x390322=_0x670b[_0x5a7de2];return _0x390322;};'use strict';var Sequelize=require(_0xb670('0x0'));module[_0xb670('0x1')]={'license':{'type':Sequelize[_0xb670('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xb670('0x3')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x79a6=['INTEGER','sequelize','TEXT','STRING'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x79a6,0x81));var _0x679a=function(_0x39ffd1,_0x299703){_0x39ffd1=_0x39ffd1-0x0;var _0x31267e=_0x79a6[_0x39ffd1];return _0x31267e;};'use strict';var Sequelize=require(_0x679a('0x0'));module['exports']={'license':{'type':Sequelize[_0x679a('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x679a('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x679a('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index d54bffe..5fd5f5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x438e=['fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','error','stack','name','index','model','keys','License','rawAttributes','query','intersection','fields','attributes','length','options','getLicense','catch','body','find','get','checkLicense','key','license-info.log','join','/var','log','setHeader','Content-disposition','attachment;\x20filename=','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs'];(function(_0x3c62d1,_0xfa3805){var _0x6b5488=function(_0x26246c){while(--_0x26246c){_0x3c62d1['push'](_0x3c62d1['shift']());}};_0x6b5488(++_0xfa3805);}(_0x438e,0x12d));var _0xe438=function(_0x4df6f9,_0x44bd65){_0x4df6f9=_0x4df6f9-0x0;var _0x4b1a73=_0x438e[_0x4df6f9];return _0x4b1a73;};'use strict';var emlformat=require(_0xe438('0x0'));var rimraf=require(_0xe438('0x1'));var zipdir=require(_0xe438('0x2'));var jsonpatch=require(_0xe438('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe438('0x4'));var util=require(_0xe438('0x5'));var path=require(_0xe438('0x6'));var sox=require('sox');var csv=require(_0xe438('0x7'));var ejs=require(_0xe438('0x8'));var fs=require('fs');var fs_extra=require(_0xe438('0x9'));var _=require(_0xe438('0xa'));var squel=require('squel');var crypto=require(_0xe438('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe438('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe438('0xd'));var Papa=require('papaparse');var Redis=require(_0xe438('0xe'));var authService=require(_0xe438('0xf'));var qs=require(_0xe438('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe438('0x11'));var logger=require(_0xe438('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xe438('0x13'));var licenseUtil=require(_0xe438('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1fc25c,_0xed3e17){_0xed3e17=_0xed3e17||0xcc;return function(_0xbee2e8){if(_0xbee2e8){return _0x1fc25c[_0xe438('0x15')](_0xed3e17);}return _0x1fc25c['status'](_0xed3e17)[_0xe438('0x16')]();};}function respondWithResult(_0x51eda1,_0x7046b5){_0x7046b5=_0x7046b5||0xc8;return function(_0x405d1a){if(_0x405d1a){return _0x51eda1[_0xe438('0x17')](_0x7046b5)[_0xe438('0x18')](_0x405d1a);}};}function respondWithFilteredResult(_0x397df5,_0x395185){return function(_0x5eeb8a){if(_0x5eeb8a){var _0xb84b1c=typeof _0x395185[_0xe438('0x19')]===_0xe438('0x1a')&&typeof _0x395185[_0xe438('0x1b')]===_0xe438('0x1a');var _0x32e8b1=_0x5eeb8a[_0xe438('0x1c')];var _0x3cbb6b=_0xb84b1c?0x0:_0x395185[_0xe438('0x19')];var _0x360223=_0xb84b1c?_0x5eeb8a[_0xe438('0x1c')]:_0x395185['offset']+_0x395185[_0xe438('0x1b')];var _0x1c2f6d;if(_0x360223>=_0x32e8b1){_0x360223=_0x32e8b1;_0x1c2f6d=0xc8;}else{_0x1c2f6d=0xce;}_0x397df5[_0xe438('0x17')](_0x1c2f6d);return _0x397df5[_0xe438('0x1d')]('Content-Range',_0x3cbb6b+'-'+_0x360223+'/'+_0x32e8b1)['json'](_0x5eeb8a);}return null;};}function patchUpdates(_0x4b686f){return function(_0x2d4e0d){try{jsonpatch['apply'](_0x2d4e0d,_0x4b686f,!![]);}catch(_0x1e48e6){return BPromise[_0xe438('0x1e')](_0x1e48e6);}return _0x2d4e0d['save']();};}function saveUpdates(_0xf0818c,_0x25e114){return function(_0x5daa02){if(_0x5daa02){return _0x5daa02[_0xe438('0x1f')](_0xf0818c)[_0xe438('0x20')](function(_0x3b5670){return _0x3b5670;});}return null;};}function removeEntity(_0x454162,_0x3fb530){return function(_0x15cc70){if(_0x15cc70){return _0x15cc70[_0xe438('0x21')]()[_0xe438('0x20')](function(){_0x454162['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4798f4,_0x43e030){return function(_0x1167bc){if(!_0x1167bc){_0x4798f4[_0xe438('0x15')](0x194);}return _0x1167bc;};}function handleError(_0x21e4eb,_0x269392){_0x269392=_0x269392||0x1f4;return function(_0x5bb0ba){logger[_0xe438('0x22')](_0x5bb0ba[_0xe438('0x23')]);if(_0x5bb0ba[_0xe438('0x24')]){delete _0x5bb0ba[_0xe438('0x24')];}_0x21e4eb['status'](_0x269392)['send'](_0x5bb0ba);};}var utilLicense=require(_0xe438('0x14'));exports[_0xe438('0x25')]=function(_0x51ec6b,_0x173601){var _0x2365fb={'raw':!![],'where':{'id':0x1}},_0x86456={};_0x86456[_0xe438('0x26')]=_[_0xe438('0x27')](db[_0xe438('0x28')][_0xe438('0x29')]);_0x86456[_0xe438('0x2a')]=_[_0xe438('0x27')](_0x51ec6b[_0xe438('0x2a')]);_0x86456['filters']=_['intersection'](_0x86456[_0xe438('0x26')],_0x86456['query']);_0x2365fb['attributes']=_[_0xe438('0x2b')](_0x86456[_0xe438('0x26')],qs[_0xe438('0x2c')](_0x51ec6b[_0xe438('0x2a')]['fields']));_0x2365fb[_0xe438('0x2d')]=_0x2365fb['attributes'][_0xe438('0x2e')]?_0x2365fb[_0xe438('0x2d')]:_0x86456['model'];_0x2365fb=_['merge']({},_0x2365fb,_0x51ec6b[_0xe438('0x2f')]);return utilLicense[_0xe438('0x30')](_0x2365fb)[_0xe438('0x20')](respondWithResult(_0x173601,null))[_0xe438('0x31')](handleError(_0x173601,null));};exports[_0xe438('0x1f')]=function(_0x541cc8,_0xde41ae){if(_0x541cc8['body']['id']){delete _0x541cc8[_0xe438('0x32')]['id'];}return db[_0xe438('0x28')][_0xe438('0x33')]({'where':{'id':_0x541cc8['params']['id']}})[_0xe438('0x20')](handleEntityNotFound(_0xde41ae,null))[_0xe438('0x20')](function(_0x51cb67){var _0x28b57b=_0x51cb67[_0xe438('0x34')]({'plain':!![]});return utilLicense[_0xe438('0x35')](_0x28b57b,_0x541cc8['body'][_0xe438('0x36')]);})['then'](function(_0x27016f){if(!_0x27016f['demo']){return saveUpdates(_0x541cc8[_0xe438('0x32')],null);}return _0x27016f;})['then'](respondWithResult(_0xde41ae,null))[_0xe438('0x31')](handleError(_0xde41ae,null));};exports['downloadLogFile']=function(_0x27136c,_0x14de75){var _0x53c7a2=_0xe438('0x37');var _0x36aaed=path[_0xe438('0x38')](_0xe438('0x39'),_0xe438('0x3a'),'xcally',_0x53c7a2);_0x14de75[_0xe438('0x3b')](_0xe438('0x3c'),_0xe438('0x3d')+_0x53c7a2);_0x14de75[_0xe438('0x1d')]('Content-Type','text/plain');_0x14de75['download'](_0x36aaed);};
\ No newline at end of file
+var _0x093c=['License','rawAttributes','query','attributes','intersection','fields','length','options','getLicense','catch','find','get','checkLicense','body','demo','downloadLogFile','license-info.log','join','/var','log','setHeader','attachment;\x20filename=','set','text/plain','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','json','apply','reject','update','then','destroy','stack','name','send','model','keys'];(function(_0x18c96d,_0x302867){var _0x2264c5=function(_0x54935f){while(--_0x54935f){_0x18c96d['push'](_0x18c96d['shift']());}};_0x2264c5(++_0x302867);}(_0x093c,0x1b6));var _0xc093=function(_0x1a5a8b,_0x2d78c){_0x1a5a8b=_0x1a5a8b-0x0;var _0x3869e5=_0x093c[_0x1a5a8b];return _0x3869e5;};'use strict';var emlformat=require(_0xc093('0x0'));var rimraf=require(_0xc093('0x1'));var zipdir=require(_0xc093('0x2'));var jsonpatch=require(_0xc093('0x3'));var rp=require(_0xc093('0x4'));var moment=require(_0xc093('0x5'));var BPromise=require(_0xc093('0x6'));var Mustache=require(_0xc093('0x7'));var util=require(_0xc093('0x8'));var path=require(_0xc093('0x9'));var sox=require(_0xc093('0xa'));var csv=require(_0xc093('0xb'));var ejs=require(_0xc093('0xc'));var fs=require('fs');var fs_extra=require(_0xc093('0xd'));var _=require(_0xc093('0xe'));var squel=require('squel');var crypto=require(_0xc093('0xf'));var jsforce=require(_0xc093('0x10'));var deskjs=require(_0xc093('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc093('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc093('0x13'));var as=require(_0xc093('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc093('0x15'))(_0xc093('0x16'));var utils=require(_0xc093('0x17'));var config=require(_0xc093('0x18'));var licenseUtil=require(_0xc093('0x19'));var db=require(_0xc093('0x1a'))['db'];function respondWithStatusCode(_0x587ca7,_0x516f1b){_0x516f1b=_0x516f1b||0xcc;return function(_0x574eed){if(_0x574eed){return _0x587ca7[_0xc093('0x1b')](_0x516f1b);}return _0x587ca7[_0xc093('0x1c')](_0x516f1b)[_0xc093('0x1d')]();};}function respondWithResult(_0xff3d49,_0x33dd6){_0x33dd6=_0x33dd6||0xc8;return function(_0x2c00dc){if(_0x2c00dc){return _0xff3d49[_0xc093('0x1c')](_0x33dd6)['json'](_0x2c00dc);}};}function respondWithFilteredResult(_0x127bc4,_0x18d8ec){return function(_0x46ff3d){if(_0x46ff3d){var _0x3d1fd5=typeof _0x18d8ec['offset']===_0xc093('0x1e')&&typeof _0x18d8ec[_0xc093('0x1f')]===_0xc093('0x1e');var _0x58a1b6=_0x46ff3d[_0xc093('0x20')];var _0x19a33b=_0x3d1fd5?0x0:_0x18d8ec[_0xc093('0x21')];var _0x4e6d25=_0x3d1fd5?_0x46ff3d[_0xc093('0x20')]:_0x18d8ec[_0xc093('0x21')]+_0x18d8ec['limit'];var _0xc6e04d;if(_0x4e6d25>=_0x58a1b6){_0x4e6d25=_0x58a1b6;_0xc6e04d=0xc8;}else{_0xc6e04d=0xce;}_0x127bc4[_0xc093('0x1c')](_0xc6e04d);return _0x127bc4['set']('Content-Range',_0x19a33b+'-'+_0x4e6d25+'/'+_0x58a1b6)[_0xc093('0x22')](_0x46ff3d);}return null;};}function patchUpdates(_0x118023){return function(_0x29e151){try{jsonpatch[_0xc093('0x23')](_0x29e151,_0x118023,!![]);}catch(_0x2a38c3){return BPromise[_0xc093('0x24')](_0x2a38c3);}return _0x29e151['save']();};}function saveUpdates(_0x1274b6,_0x3a2ff4){return function(_0x495d76){if(_0x495d76){return _0x495d76[_0xc093('0x25')](_0x1274b6)[_0xc093('0x26')](function(_0x20c02b){return _0x20c02b;});}return null;};}function removeEntity(_0x3ce138,_0xd1218){return function(_0x1c38c4){if(_0x1c38c4){return _0x1c38c4[_0xc093('0x27')]()[_0xc093('0x26')](function(){_0x3ce138[_0xc093('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44c376,_0x24b790){return function(_0x1b4e82){if(!_0x1b4e82){_0x44c376['sendStatus'](0x194);}return _0x1b4e82;};}function handleError(_0xfd18dc,_0x24e5d6){_0x24e5d6=_0x24e5d6||0x1f4;return function(_0x5adafb){logger['error'](_0x5adafb[_0xc093('0x28')]);if(_0x5adafb['name']){delete _0x5adafb[_0xc093('0x29')];}_0xfd18dc[_0xc093('0x1c')](_0x24e5d6)[_0xc093('0x2a')](_0x5adafb);};}var utilLicense=require('../../config/license/util');exports['index']=function(_0x2ef334,_0x4d7b0f){var _0x31f34a={'raw':!![],'where':{'id':0x1}},_0x188254={};_0x188254[_0xc093('0x2b')]=_[_0xc093('0x2c')](db[_0xc093('0x2d')][_0xc093('0x2e')]);_0x188254[_0xc093('0x2f')]=_[_0xc093('0x2c')](_0x2ef334[_0xc093('0x2f')]);_0x188254['filters']=_['intersection'](_0x188254[_0xc093('0x2b')],_0x188254[_0xc093('0x2f')]);_0x31f34a[_0xc093('0x30')]=_[_0xc093('0x31')](_0x188254['model'],qs[_0xc093('0x32')](_0x2ef334['query']['fields']));_0x31f34a[_0xc093('0x30')]=_0x31f34a[_0xc093('0x30')][_0xc093('0x33')]?_0x31f34a['attributes']:_0x188254[_0xc093('0x2b')];_0x31f34a=_['merge']({},_0x31f34a,_0x2ef334[_0xc093('0x34')]);return utilLicense[_0xc093('0x35')](_0x31f34a)[_0xc093('0x26')](respondWithResult(_0x4d7b0f,null))[_0xc093('0x36')](handleError(_0x4d7b0f,null));};exports['update']=function(_0x2ebfdb,_0xb0f54d){if(_0x2ebfdb['body']['id']){delete _0x2ebfdb['body']['id'];}return db[_0xc093('0x2d')][_0xc093('0x37')]({'where':{'id':_0x2ebfdb['params']['id']}})[_0xc093('0x26')](handleEntityNotFound(_0xb0f54d,null))[_0xc093('0x26')](function(_0x16ad3e){var _0x11fceb=_0x16ad3e[_0xc093('0x38')]({'plain':!![]});return utilLicense[_0xc093('0x39')](_0x11fceb,_0x2ebfdb[_0xc093('0x3a')]['key']);})[_0xc093('0x26')](function(_0x391898){if(!_0x391898[_0xc093('0x3b')]){return saveUpdates(_0x2ebfdb[_0xc093('0x3a')],null);}return _0x391898;})[_0xc093('0x26')](respondWithResult(_0xb0f54d,null))[_0xc093('0x36')](handleError(_0xb0f54d,null));};exports[_0xc093('0x3c')]=function(_0x3d61af,_0x1d931a){var _0x174d90=_0xc093('0x3d');var _0x3a745f=path[_0xc093('0x3e')](_0xc093('0x3f'),_0xc093('0x40'),'xcally',_0x174d90);_0x1d931a[_0xc093('0x41')]('Content-disposition',_0xc093('0x42')+_0x174d90);_0x1d931a[_0xc093('0x43')]('Content-Type',_0xc093('0x44'));_0x1d931a['download'](_0x3a745f);};
\ No newline at end of file
index e64db91..1f7ff7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b68=['License','lodash','util','moment','bluebird','rimraf','../../config/environment','define'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x4b68,0x179));var _0x84b6=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x4b68[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x84b6('0x0'));var util=require(_0x84b6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x84b6('0x2'));var BPromise=require(_0x84b6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x84b6('0x4'));var config=require(_0x84b6('0x5'));var attributes=require('./license.attributes');module['exports']=function(_0x317165,_0x4cda2f){return _0x317165[_0x84b6('0x6')](_0x84b6('0x7'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3be=['define','lodash','util','api','moment','bluebird','path','../../config/environment','./license.attributes','exports'];(function(_0x1137c2,_0x5e5fd1){var _0x260f44=function(_0xc39d56){while(--_0xc39d56){_0x1137c2['push'](_0x1137c2['shift']());}};_0x260f44(++_0x5e5fd1);}(_0xf3be,0x191));var _0xef3b=function(_0x2c5697,_0x4f28bb){_0x2c5697=_0x2c5697-0x0;var _0x4042be=_0xf3be[_0x2c5697];return _0x4042be;};'use strict';var _=require(_0xef3b('0x0'));var util=require(_0xef3b('0x1'));var logger=require('../../config/logger')(_0xef3b('0x2'));var moment=require(_0xef3b('0x3'));var BPromise=require(_0xef3b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xef3b('0x5'));var rimraf=require('rimraf');var config=require(_0xef3b('0x6'));var attributes=require(_0xef3b('0x7'));module[_0xef3b('0x8')]=function(_0x262f29,_0x14cfdb){return _0x262f29[_0xef3b('0x9')]('License',attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d305808..376a984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f6=['jayson/promise','client','request','then','info','License,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x21671e,_0x1f9bce){var _0x1ba067=function(_0x380401){while(--_0x380401){_0x21671e['push'](_0x21671e['shift']());}};_0x1ba067(++_0x1f9bce);}(_0x38f6,0x164));var _0x638f=function(_0x36bb5e,_0x1f635b){_0x36bb5e=_0x36bb5e-0x0;var _0x317677=_0x38f6[_0x36bb5e];return _0x317677;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x638f('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x638f('0x1'));var db=require(_0x638f('0x2'))['db'];var utils=require(_0x638f('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x638f('0x4'));var jayson=require(_0x638f('0x5'));var client=jayson[_0x638f('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4cc378,_0x242068,_0x6eeda3){return new BPromise(function(_0x4e6aac,_0x3e4677){return client[_0x638f('0x7')](_0x4cc378,_0x6eeda3)[_0x638f('0x8')](function(_0x304504){logger[_0x638f('0x9')](_0x638f('0xa'),_0x242068,'request\x20sent');logger[_0x638f('0xb')]('License,\x20%s,\x20%s,\x20%s',_0x242068,_0x638f('0xc'),JSON[_0x638f('0xd')](_0x304504));if(_0x304504[_0x638f('0xe')]){if(_0x304504[_0x638f('0xe')][_0x638f('0xf')]===0x1f4){logger[_0x638f('0xe')]('License,\x20%s,\x20%s',_0x242068,_0x304504[_0x638f('0xe')][_0x638f('0x10')]);return _0x3e4677(_0x304504[_0x638f('0xe')][_0x638f('0x10')]);}logger[_0x638f('0xe')](_0x638f('0xa'),_0x242068,_0x304504['error']['message']);return _0x4e6aac(_0x304504[_0x638f('0xe')][_0x638f('0x10')]);}else{logger[_0x638f('0x9')](_0x638f('0xa'),_0x242068,_0x638f('0xc'));_0x4e6aac(_0x304504[_0x638f('0x11')][_0x638f('0x10')]);}})[_0x638f('0x12')](function(_0x1e2404){logger[_0x638f('0xe')](_0x638f('0xa'),_0x242068,_0x1e2404);_0x3e4677(_0x1e2404);});});}
\ No newline at end of file
+var _0x11a0=['License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info'];(function(_0x1f00f3,_0x4a4a6e){var _0x2a7594=function(_0x5d8c2d){while(--_0x5d8c2d){_0x1f00f3['push'](_0x1f00f3['shift']());}};_0x2a7594(++_0x4a4a6e);}(_0x11a0,0x153));var _0x011a=function(_0x490553,_0x4728e4){_0x490553=_0x490553-0x0;var _0xc7453b=_0x11a0[_0x490553];return _0xc7453b;};'use strict';var _=require(_0x011a('0x0'));var util=require('util');var moment=require(_0x011a('0x1'));var BPromise=require(_0x011a('0x2'));var rs=require(_0x011a('0x3'));var fs=require('fs');var Redis=require(_0x011a('0x4'));var db=require(_0x011a('0x5'))['db'];var utils=require(_0x011a('0x6'));var logger=require(_0x011a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x011a('0x8'));var client=jayson['client'][_0x011a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2476eb,_0x34dad0,_0x2a01aa){return new BPromise(function(_0x3886c5,_0x400c3){return client[_0x011a('0xa')](_0x2476eb,_0x2a01aa)[_0x011a('0xb')](function(_0x4f79b4){logger[_0x011a('0xc')](_0x011a('0xd'),_0x34dad0,_0x011a('0xe'));logger[_0x011a('0xf')](_0x011a('0x10'),_0x34dad0,_0x011a('0xe'),JSON[_0x011a('0x11')](_0x4f79b4));if(_0x4f79b4['error']){if(_0x4f79b4[_0x011a('0x12')]['code']===0x1f4){logger[_0x011a('0x12')](_0x011a('0xd'),_0x34dad0,_0x4f79b4[_0x011a('0x12')][_0x011a('0x13')]);return _0x400c3(_0x4f79b4[_0x011a('0x12')]['message']);}logger[_0x011a('0x12')](_0x011a('0xd'),_0x34dad0,_0x4f79b4[_0x011a('0x12')]['message']);return _0x3886c5(_0x4f79b4[_0x011a('0x12')]['message']);}else{logger[_0x011a('0xc')](_0x011a('0xd'),_0x34dad0,_0x011a('0xe'));_0x3886c5(_0x4f79b4[_0x011a('0x14')][_0x011a('0x13')]);}})[_0x011a('0x15')](function(_0x13c224){logger[_0x011a('0x12')](_0x011a('0xd'),_0x34dad0,_0x13c224);_0x400c3(_0x13c224);});});}
\ No newline at end of file
index 8ab6b5c..c22cd40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailAccount.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','addDisposition','post','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','send','addAgents','put','removeDispositions','delete','removeAnswers','removeImap','removeSmtp','destroy','exports','path','connect-timeout'];(function(_0x2b981f,_0x151344){var _0x67314=function(_0x2661b6){while(--_0x2661b6){_0x2b981f['push'](_0x2b981f['shift']());}};_0x67314(++_0x151344);}(_0xc4ab,0x91));var _0xbc4a=function(_0x545621,_0x2f7d25){_0x545621=_0x545621-0x0;var _0x5d4c97=_0xc4ab[_0x545621];return _0x5d4c97;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xbc4a('0x0'));var timeout=require(_0xbc4a('0x1'));var express=require(_0xbc4a('0x2'));var router=express[_0xbc4a('0x3')]();var fs_extra=require(_0xbc4a('0x4'));var auth=require(_0xbc4a('0x5'));var interaction=require(_0xbc4a('0x6'));var config=require('../../config/environment');var controller=require(_0xbc4a('0x7'));router['get']('/',auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x9')]);router['get'](_0xbc4a('0xa'),auth[_0xbc4a('0x8')](),controller['describe']);router[_0xbc4a('0xb')](_0xbc4a('0xc'),auth['isAuthenticated'](),controller[_0xbc4a('0xd')]);router['get'](_0xbc4a('0xe'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0xf')]);router[_0xbc4a('0xb')](_0xbc4a('0x10'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x11')]);router[_0xbc4a('0xb')](_0xbc4a('0x12'),auth[_0xbc4a('0x8')](),controller['getImap']);router['get'](_0xbc4a('0x13'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x14')]);router[_0xbc4a('0xb')](_0xbc4a('0x15'),auth['isAuthenticated'](),controller[_0xbc4a('0x16')]);router['get'](_0xbc4a('0x17'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x18')]);router['get'](_0xbc4a('0x19'),auth['isAuthenticated'](),controller[_0xbc4a('0x1a')]);router['get'](_0xbc4a('0x1b'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x1c')]);router[_0xbc4a('0xb')](_0xbc4a('0x1d'),auth['isAuthenticated'](),controller[_0xbc4a('0x1e')]);router['post'](_0xbc4a('0xe'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x1f')]);router[_0xbc4a('0x20')](_0xbc4a('0x10'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x21')]);router[_0xbc4a('0x20')]('/',auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x22')]);router[_0xbc4a('0x20')](_0xbc4a('0x12'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x23')]);router[_0xbc4a('0x20')](_0xbc4a('0x13'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x24')]);router[_0xbc4a('0x20')](_0xbc4a('0x15'),auth['isAuthenticated'](),controller[_0xbc4a('0x25')]);router[_0xbc4a('0x20')]('/:id/applications',auth['isAuthenticated'](),controller[_0xbc4a('0x26')]);router[_0xbc4a('0x20')]('/:id/send',auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x27')]);router[_0xbc4a('0x20')](_0xbc4a('0x1d'),auth['isAuthenticated'](),controller[_0xbc4a('0x28')]);router[_0xbc4a('0x29')](_0xbc4a('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xbc4a('0xe'),auth['isAuthenticated'](),controller[_0xbc4a('0x2a')]);router[_0xbc4a('0x2b')](_0xbc4a('0x10'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x2c')]);router[_0xbc4a('0x2b')](_0xbc4a('0x12'),auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x2d')]);router[_0xbc4a('0x2b')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0xbc4a('0x2e')]);router[_0xbc4a('0x2b')]('/:id',auth[_0xbc4a('0x8')](),controller[_0xbc4a('0x2f')]);router[_0xbc4a('0x2b')](_0xbc4a('0x1d'),auth[_0xbc4a('0x8')](),controller['removeAgents']);module[_0xbc4a('0x30')]=router;
\ No newline at end of file
+var _0x2d17=['getSmtp','/:id/interactions','getInteractions','getApplications','/:id/verify','post','addDisposition','/:id/canned_answers','create','addSmtp','addInteraction','/:id/applications','/:id/send','send','/:id/users','addAgents','/:id','update','delete','removeDispositions','removeAnswers','removeImap','destroy','removeAgents','exports','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id/dispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d17,0x138));var _0x72d1=function(_0x881e85,_0x2eafd8){_0x881e85=_0x881e85-0x0;var _0x3fb1e4=_0x2d17[_0x881e85];return _0x3fb1e4;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x72d1('0x0'));var router=express[_0x72d1('0x1')]();var fs_extra=require(_0x72d1('0x2'));var auth=require(_0x72d1('0x3'));var interaction=require(_0x72d1('0x4'));var config=require(_0x72d1('0x5'));var controller=require('./mailAccount.controller');router['get']('/',auth[_0x72d1('0x6')](),controller[_0x72d1('0x7')]);router[_0x72d1('0x8')](_0x72d1('0x9'),auth[_0x72d1('0x6')](),controller[_0x72d1('0xa')]);router[_0x72d1('0x8')]('/:id',auth[_0x72d1('0x6')](),controller['show']);router[_0x72d1('0x8')](_0x72d1('0xb'),auth[_0x72d1('0x6')](),controller['getDispositions']);router[_0x72d1('0x8')]('/:id/canned_answers',auth[_0x72d1('0x6')](),controller[_0x72d1('0xc')]);router[_0x72d1('0x8')](_0x72d1('0xd'),auth['isAuthenticated'](),controller[_0x72d1('0xe')]);router['get'](_0x72d1('0xf'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x10')]);router['get'](_0x72d1('0x11'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x12')]);router[_0x72d1('0x8')]('/:id/applications',auth['isAuthenticated'](),controller[_0x72d1('0x13')]);router[_0x72d1('0x8')]('/:id/messages',auth[_0x72d1('0x6')](),controller['getMessages']);router['get'](_0x72d1('0x14'),auth['isAuthenticated'](),controller['verifySmtp']);router[_0x72d1('0x8')]('/:id/users',auth[_0x72d1('0x6')](),controller['getAgents']);router[_0x72d1('0x15')](_0x72d1('0xb'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x16')]);router[_0x72d1('0x15')](_0x72d1('0x17'),auth[_0x72d1('0x6')](),controller['addAnswer']);router[_0x72d1('0x15')]('/',auth[_0x72d1('0x6')](),controller[_0x72d1('0x18')]);router[_0x72d1('0x15')](_0x72d1('0xd'),auth['isAuthenticated'](),controller['addImap']);router['post'](_0x72d1('0xf'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x19')]);router['post'](_0x72d1('0x11'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x1a')]);router[_0x72d1('0x15')](_0x72d1('0x1b'),auth['isAuthenticated'](),controller['addApplications']);router[_0x72d1('0x15')](_0x72d1('0x1c'),auth['isAuthenticated'](),controller[_0x72d1('0x1d')]);router[_0x72d1('0x15')](_0x72d1('0x1e'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x1f')]);router['put'](_0x72d1('0x20'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x21')]);router[_0x72d1('0x22')](_0x72d1('0xb'),auth['isAuthenticated'](),controller[_0x72d1('0x23')]);router['delete'](_0x72d1('0x17'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x24')]);router['delete'](_0x72d1('0xd'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x25')]);router['delete'](_0x72d1('0xf'),auth[_0x72d1('0x6')](),controller['removeSmtp']);router[_0x72d1('0x22')](_0x72d1('0x20'),auth[_0x72d1('0x6')](),controller[_0x72d1('0x26')]);router[_0x72d1('0x22')](_0x72d1('0x1e'),auth['isAuthenticated'](),controller[_0x72d1('0x27')]);module[_0x72d1('0x28')]=router;
\ No newline at end of file
index af71723..9e5218b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b38=['gmail','hotmail','yahoo','outlook365','getDataValue','provider','custom','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition'];(function(_0x3c3eca,_0x4bec3d){var _0x388a21=function(_0x22021f){while(--_0x22021f){_0x3c3eca['push'](_0x3c3eca['shift']());}};_0x388a21(++_0x4bec3d);}(_0x9b38,0x111));var _0x89b3=function(_0x5760cd,_0x199827){_0x5760cd=_0x5760cd-0x0;var _0x20e496=_0x9b38[_0x5760cd];return _0x20e496;};'use strict';var Sequelize=require(_0x89b3('0x0'));module[_0x89b3('0x1')]={'description':{'type':Sequelize[_0x89b3('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x89b3('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x89b3('0x4')]},'markAsUnread':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x89b3('0x2')],'allowNull':![],'defaultValue':_0x89b3('0x5')},'fontSize':{'type':Sequelize[_0x89b3('0x6')](0x2)[_0x89b3('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x89b3('0x4')],'defaultValue':function(){return _0x89b3('0x8');}},'notificationSound':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x89b3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x89b3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x89b3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x89b3('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x89b3('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x89b3('0x3')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x137eb8){if(!_0x137eb8)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x89b3('0xa')](_0x89b3('0xb'),_0x137eb8);}},'provider':{'type':Sequelize['ENUM'](_0x89b3('0xc'),_0x89b3('0xd'),_0x89b3('0xe'),_0x89b3('0xf')),'defaultValue':null,'get':function(){if(!this[_0x89b3('0x10')](_0x89b3('0x11')))return _0x89b3('0x12');return this['getDataValue'](_0x89b3('0x11'));},'set':function(_0xc42b74){if(_0xc42b74===_0x89b3('0x12'))_0xc42b74=null;return this['setDataValue']('provider',_0xc42b74);}}};
\ No newline at end of file
+var _0xa81b=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','ENUM','gmail','hotmail','yahoo','getDataValue','provider','custom','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','UNSIGNED'];(function(_0x3e7653,_0x414e83){var _0x2d518d=function(_0x138626){while(--_0x138626){_0x3e7653['push'](_0x3e7653['shift']());}};_0x2d518d(++_0x414e83);}(_0xa81b,0x1ce));var _0xba81=function(_0x3f19b3,_0x3f0849){_0x3f19b3=_0x3f19b3-0x0;var _0xd61898=_0xa81b[_0x3f19b3];return _0xd61898;};'use strict';var Sequelize=require('sequelize');module[_0xba81('0x0')]={'description':{'type':Sequelize[_0xba81('0x1')]},'name':{'type':Sequelize[_0xba81('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0xba81('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xba81('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xba81('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xba81('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0xba81('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xba81('0x4')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0xba81('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xba81('0x3')],'defaultValue':function(){return _0xba81('0x6');}},'notificationSound':{'type':Sequelize[_0xba81('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xba81('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xba81('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xba81('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xba81('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xba81('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xba81('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0xba81('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xba81('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x38e94f){if(!_0x38e94f)this[_0xba81('0x9')]('mandatoryDispositionPauseId',null);this[_0xba81('0x9')](_0xba81('0xa'),_0x38e94f);}},'provider':{'type':Sequelize[_0xba81('0xb')](_0xba81('0xc'),_0xba81('0xd'),_0xba81('0xe'),'outlook365'),'defaultValue':null,'get':function(){if(!this[_0xba81('0xf')](_0xba81('0x10')))return _0xba81('0x11');return this[_0xba81('0xf')]('provider');},'set':function(_0x5100eb){if(_0x5100eb===_0xba81('0x11'))_0x5100eb=null;return this['setDataValue']('provider',_0x5100eb);}}};
\ No newline at end of file
index a840153..f174bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x227a=['Disposition','create','getDispositions','findOne','hasOwnProperty','removeDispositions','CannedAnswer','getAnswers','removeAnswers','ids','email','ListId','isNil','active','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','MailInteraction','omit','getInteractions','CmContact','Contact','User','internal','color','tag','transaction','sequelize','Transaction','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','getMessages','$gte','split','MailMessage','inlineCss','true','CmList','List','Contacts','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','defaults','messageId','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','moment','bluebird','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailAccount.socket','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','end','status','json','undefined','limit','offset','count','Content-Range','update','destroy','get','MailAccounts','UserProfileResource','stack','name','imap.gmail.com','yahoo','hotmail','outlook365','Unknown\x20email\x20service\x20provider','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerOut','Pause','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','MailAccount','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','fields','find','body','provider','custom','MailServerIn','Mail\x20Account\x20not\x20found','describe','MailAccountId'];(function(_0x35ad98,_0x2b421e){var _0x2e21bd=function(_0x10f090){while(--_0x10f090){_0x35ad98['push'](_0x35ad98['shift']());}};_0x2e21bd(++_0x2b421e);}(_0x227a,0x115));var _0xa227=function(_0x2b3e4a,_0x1c2da2){_0x2b3e4a=_0x2b3e4a-0x0;var _0x469cbd=_0x227a[_0x2b3e4a];return _0x469cbd;};'use strict';var moment=require(_0xa227('0x0'));var BPromise=require(_0xa227('0x1'));var util=require('util');var path=require(_0xa227('0x2'));var _=require(_0xa227('0x3'));var juice=require(_0xa227('0x4'));var Redis=require(_0xa227('0x5'));var qs=require(_0xa227('0x6'));var logger=require(_0xa227('0x7'))('api');var config=require(_0xa227('0x8'));var db=require(_0xa227('0x9'))['db'];config[_0xa227('0xa')]=_['defaults'](config[_0xa227('0xa')],{'host':_0xa227('0xb'),'port':0x18eb});var socket=require(_0xa227('0xc'))(new Redis(config[_0xa227('0xa')]));require(_0xa227('0xd'))['register'](socket);var jayson=require(_0xa227('0xe'));var client=jayson[_0xa227('0xf')][_0xa227('0x10')]({'port':0x232b});function respondWithRpcPromise(_0x293150,_0x16980c,_0xf7a150,_0x2d3e31){return new BPromise(function(_0x1af03f,_0x2e9b10){var _0x57f0b2=_0x2d3e31||client;return _0x57f0b2[_0xa227('0x11')](_0x293150,_0xf7a150)[_0xa227('0x12')](function(_0xc7f1de){logger[_0xa227('0x13')](_0xa227('0x14'),_0x16980c,_0xa227('0x15'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x16980c,_0xa227('0x15'),JSON[_0xa227('0x16')](_0xc7f1de));if(_0xc7f1de[_0xa227('0x17')]){if(_0xc7f1de['error']['code']===0x1f4){logger[_0xa227('0x17')]('MailAccount,\x20%s,\x20%s',_0x16980c,_0xc7f1de[_0xa227('0x17')][_0xa227('0x18')]);return _0x2e9b10(_0xc7f1de['error']['message']);}logger[_0xa227('0x17')](_0xa227('0x14'),_0x16980c,_0xc7f1de[_0xa227('0x17')][_0xa227('0x18')]);return _0x1af03f(_0xc7f1de[_0xa227('0x17')][_0xa227('0x18')]);}else{logger['info'](_0xa227('0x14'),_0x16980c,_0xa227('0x15'));_0x1af03f(_0xc7f1de[_0xa227('0x19')][_0xa227('0x18')]);}})[_0xa227('0x1a')](function(_0x362229){logger[_0xa227('0x17')](_0xa227('0x14'),_0x16980c,_0x362229);_0x2e9b10(_0x362229);});});}function respondWithStatusCode(_0x510397,_0x3ee89e){_0x3ee89e=_0x3ee89e||0xcc;return function(_0x192044){if(_0x192044){return _0x510397[_0xa227('0x1b')](_0x3ee89e);}return _0x510397['status'](_0x3ee89e)[_0xa227('0x1c')]();};}function respondWithResult(_0xf2790b,_0x590d67){_0x590d67=_0x590d67||0xc8;return function(_0x5a6a83){if(_0x5a6a83){return _0xf2790b[_0xa227('0x1d')](_0x590d67)[_0xa227('0x1e')](_0x5a6a83);}};}function respondWithFilteredResult(_0x2e742e,_0x2a5fd3){return function(_0x58f154){if(_0x58f154){var _0x34f54e=typeof _0x2a5fd3['offset']===_0xa227('0x1f')&&typeof _0x2a5fd3[_0xa227('0x20')]===_0xa227('0x1f');var _0x505b83=_0x58f154['count'];var _0x1f989f=_0x34f54e?0x0:_0x2a5fd3[_0xa227('0x21')];var _0x1bdcdd=_0x34f54e?_0x58f154[_0xa227('0x22')]:_0x2a5fd3[_0xa227('0x21')]+_0x2a5fd3[_0xa227('0x20')];var _0x328190;if(_0x1bdcdd>=_0x505b83){_0x1bdcdd=_0x505b83;_0x328190=0xc8;}else{_0x328190=0xce;}_0x2e742e[_0xa227('0x1d')](_0x328190);return _0x2e742e['set'](_0xa227('0x23'),_0x1f989f+'-'+_0x1bdcdd+'/'+_0x505b83)[_0xa227('0x1e')](_0x58f154);}return null;};}function saveUpdates(_0x1ce8db){return function(_0x4f0fd7){if(_0x4f0fd7){return _0x4f0fd7[_0xa227('0x24')](_0x1ce8db)[_0xa227('0x12')](function(_0x130e48){return _0x130e48;});}return null;};}function removeEntity(_0x5cd73f){return function(_0x1d53b7){if(_0x1d53b7){return _0x1d53b7[_0xa227('0x25')]()[_0xa227('0x12')](function(){var _0x3aa4c4=_0x1d53b7[_0xa227('0x26')]({'plain':!![]});var _0x5b58ec=_0xa227('0x27');return db[_0xa227('0x28')][_0xa227('0x25')]({'where':{'type':_0x5b58ec,'resourceId':_0x3aa4c4['id']}})[_0xa227('0x12')](function(){return _0x1d53b7;});})['then'](function(){_0x5cd73f['status'](0xcc)[_0xa227('0x1c')]();});}};}function handleEntityNotFound(_0xeb7f36){return function(_0x3e1ce9){if(!_0x3e1ce9){_0xeb7f36[_0xa227('0x1b')](0x194);}return _0x3e1ce9;};}function handleError(_0x23e641,_0x5eaac6){_0x5eaac6=_0x5eaac6||0x1f4;return function(_0x203cc8){logger[_0xa227('0x17')](_0x203cc8[_0xa227('0x29')]);if(_0x203cc8[_0xa227('0x2a')]){delete _0x203cc8[_0xa227('0x2a')];}_0x23e641['status'](_0x5eaac6)['send'](_0x203cc8);};}function getImapHost(_0x335879){switch(_0x335879){case'gmail':return _0xa227('0x2b');case _0xa227('0x2c'):return'imap.mail.yahoo.com';case _0xa227('0x2d'):return'imap-mail.outlook.com';case _0xa227('0x2e'):return'outlook.office365.com';}throw new Error(_0xa227('0x2f'),_0x335879);}function getSmtpHost(_0x290f4c){switch(_0x290f4c){case'gmail':return'smtp.gmail.com';case _0xa227('0x2c'):return _0xa227('0x30');case _0xa227('0x2d'):return _0xa227('0x31');case _0xa227('0x2e'):return _0xa227('0x32');}throw new Error(_0xa227('0x2f'),_0x290f4c);}function getAuthenticationOptions(_0x4b761b,_0x4573be){var _0x3e1eb5={};var _0x247951={};if(_0x4b761b){_0x3e1eb5[_0xa227('0x33')]=_0x247951[_0xa227('0x33')]=_0x4573be[_0xa227('0x34')];_0x3e1eb5['password']=_0x247951[_0xa227('0x35')]=_0x4573be[_0xa227('0x36')];if(_0x4573be['modernAuthentication']){_0x3e1eb5[_0xa227('0x37')]=_0x247951[_0xa227('0x37')]=!![];_0x3e1eb5[_0xa227('0x38')]=_0x247951[_0xa227('0x38')]=_0x4573be['CloudProviderId'];_0x3e1eb5['password']=_0x247951['pass']=null;}else{_0x3e1eb5[_0xa227('0x38')]=_0x247951[_0xa227('0x38')]=null;}_0x3e1eb5[_0xa227('0x39')]=getImapHost(_0x4b761b);_0x3e1eb5[_0xa227('0x3a')]=0x3e1;_0x247951[_0xa227('0x39')]=getSmtpHost(_0x4b761b);_0x247951[_0xa227('0x3a')]=0x24b;_0x247951[_0xa227('0x3b')]=![];_0x3e1eb5[_0xa227('0x3c')]=_0x247951[_0xa227('0x3c')]=null;}else{if(_0x4573be[_0xa227('0x3d')]){_0x3e1eb5[_0xa227('0x33')]=_0x247951[_0xa227('0x33')]=_0x4573be[_0xa227('0x34')];_0x3e1eb5['password']=_0x247951[_0xa227('0x35')]=_0x4573be[_0xa227('0x36')];}else{_0x3e1eb5['authentication']=_0x247951[_0xa227('0x3d')]=![];_0x3e1eb5[_0xa227('0x33')]=_0x247951[_0xa227('0x33')]=null;_0x3e1eb5[_0xa227('0x36')]=_0x247951['pass']=null;}_0x3e1eb5[_0xa227('0x39')]=_0x4573be[_0xa227('0x3e')][_0xa227('0x39')];_0x3e1eb5[_0xa227('0x3a')]=_0x4573be[_0xa227('0x3e')][_0xa227('0x3a')];_0x247951[_0xa227('0x39')]=_0x4573be[_0xa227('0x3f')]['host'];_0x247951[_0xa227('0x3a')]=_0x4573be[_0xa227('0x3f')][_0xa227('0x3a')];}return{'Imap':_0x3e1eb5,'Smtp':_0x247951};}exports[_0xa227('0x40')]=function(_0x2a80ba,_0x49ad5f){var _0x276da8={'include':[{'model':db['MailServerIn'],'as':_0xa227('0x3e')},{'model':db[_0xa227('0x41')],'as':'Smtp'},{'model':db[_0xa227('0x42')],'as':'mandatoryDispositionPause'}]},_0x494326={},_0x14b111={'count':0x0,'rows':[]};var _0x1a5ecf=_['map'](db['MailAccount'][_0xa227('0x43')],function(_0x12853b){return{'name':_0x12853b[_0xa227('0x44')],'type':_0x12853b[_0xa227('0x45')][_0xa227('0x46')]};});_0x494326[_0xa227('0x47')]=_[_0xa227('0x48')](_0x1a5ecf,_0xa227('0x2a'));_0x494326[_0xa227('0x49')]=_[_0xa227('0x4a')](_0x2a80ba['query']);_0x494326[_0xa227('0x4b')]=_[_0xa227('0x4c')](_0x494326[_0xa227('0x47')],_0x494326[_0xa227('0x49')]);_0x276da8[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x494326[_0xa227('0x47')],qs['fields'](_0x2a80ba[_0xa227('0x49')]['fields']));_0x276da8[_0xa227('0x4d')]=_0x276da8[_0xa227('0x4d')][_0xa227('0x4e')]?_0x276da8[_0xa227('0x4d')]:_0x494326[_0xa227('0x47')];if(!_0x2a80ba[_0xa227('0x49')]['hasOwnProperty'](_0xa227('0x4f'))){_0x276da8[_0xa227('0x20')]=qs['limit'](_0x2a80ba['query']['limit']);_0x276da8['offset']=qs[_0xa227('0x21')](_0x2a80ba['query'][_0xa227('0x21')]);}_0x276da8[_0xa227('0x50')]=qs['sort'](_0x2a80ba['query'][_0xa227('0x51')]);_0x276da8[_0xa227('0x52')]=qs[_0xa227('0x4b')](_[_0xa227('0x53')](_0x2a80ba['query'],_0x494326[_0xa227('0x4b')]),_0x1a5ecf);if(_0x2a80ba[_0xa227('0x49')][_0xa227('0x54')]){_0x276da8['where']=_[_0xa227('0x55')](_0x276da8[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x1a5ecf,function(_0x155432){if(_0x155432[_0xa227('0x45')]!==_0xa227('0x56')){var _0x48cccb={};_0x48cccb[_0x155432['name']]={'$like':'%'+_0x2a80ba[_0xa227('0x49')][_0xa227('0x54')]+'%'};return _0x48cccb;}})});}_0x276da8=_[_0xa227('0x55')]({},_0x276da8,_0x2a80ba[_0xa227('0x57')]);var _0x3b2ac0={'where':_0x276da8[_0xa227('0x52')]};return db[_0xa227('0x58')][_0xa227('0x22')](_0x3b2ac0)[_0xa227('0x12')](function(_0x3e1b5e){_0x14b111[_0xa227('0x22')]=_0x3e1b5e;if(_0x2a80ba[_0xa227('0x49')][_0xa227('0x59')]){_0x276da8[_0xa227('0x5a')]=[{'all':!![]}];}return db['MailAccount'][_0xa227('0x5b')](_0x276da8);})['then'](function(_0x344e3e){_0x14b111[_0xa227('0x5c')]=_0x344e3e;return _0x14b111;})[_0xa227('0x12')](respondWithFilteredResult(_0x49ad5f,_0x276da8))['catch'](handleError(_0x49ad5f,null));};exports[_0xa227('0x5d')]=function(_0x212e5a,_0x28d329){var _0x12dccf={'raw':![],'where':{'id':_0x212e5a[_0xa227('0x5e')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xa227('0x3e')},{'model':db[_0xa227('0x41')],'as':_0xa227('0x3f')},{'model':db['Pause'],'as':_0xa227('0x5f')}]},_0x24a3f9={};_0x24a3f9[_0xa227('0x47')]=_[_0xa227('0x4a')](db[_0xa227('0x58')]['rawAttributes']);_0x24a3f9['query']=_[_0xa227('0x4a')](_0x212e5a[_0xa227('0x49')]);_0x24a3f9['filters']=_[_0xa227('0x4c')](_0x24a3f9[_0xa227('0x47')],_0x24a3f9['query']);_0x12dccf[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x24a3f9['model'],qs[_0xa227('0x60')](_0x212e5a[_0xa227('0x49')]['fields']));_0x12dccf[_0xa227('0x4d')]=_0x12dccf['attributes']['length']?_0x12dccf[_0xa227('0x4d')]:_0x24a3f9[_0xa227('0x47')];if(_0x212e5a[_0xa227('0x49')][_0xa227('0x59')]){_0x12dccf[_0xa227('0x5a')]=[{'all':!![]}];}_0x12dccf=_[_0xa227('0x55')]({},_0x12dccf,_0x212e5a[_0xa227('0x57')]);return db[_0xa227('0x58')][_0xa227('0x61')](_0x12dccf)[_0xa227('0x12')](handleEntityNotFound(_0x28d329,null))[_0xa227('0x12')](respondWithResult(_0x28d329,null))['catch'](handleError(_0x28d329,null));};exports['update']=function(_0x232ffd,_0x617dde){if(_0x232ffd['body']['id']){delete _0x232ffd[_0xa227('0x62')]['id'];}var _0x57e773=_0x232ffd[_0xa227('0x62')][_0xa227('0x63')]===_0xa227('0x64')?null:_0x232ffd[_0xa227('0x62')]['provider'];var _0x225540=_0x232ffd[_0xa227('0x62')][_0xa227('0x3e')]||{};var _0x55d6d4=_0x232ffd['body']['Smtp']||{};if(_0x57e773){_0x225540[_0xa227('0x39')]=getImapHost(_0x57e773);_0x225540[_0xa227('0x3a')]=0x3e1;_0x55d6d4[_0xa227('0x39')]=getSmtpHost(_0x57e773);_0x55d6d4['port']=0x24b;_0x55d6d4[_0xa227('0x3b')]=![];}if(_0x55d6d4[_0xa227('0x37')]){_0x55d6d4[_0xa227('0x3b')]=![];}else{_0x55d6d4[_0xa227('0x38')]=null;}if(!_0x225540[_0xa227('0x37')])_0x225540[_0xa227('0x38')]=null;_0x232ffd[_0xa227('0x62')][_0xa227('0x3e')]=_0x225540;_0x232ffd[_0xa227('0x62')]['Smtp']=_0x55d6d4;return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x232ffd['params']['id']},'include':[{'model':db[_0xa227('0x65')],'as':_0xa227('0x3e')},{'model':db[_0xa227('0x41')],'as':'Smtp'},{'model':db[_0xa227('0x42')],'as':_0xa227('0x5f')}]})[_0xa227('0x12')](handleEntityNotFound(_0x617dde,null))[_0xa227('0x12')](function(_0x5b80ae){if(!_0x5b80ae)throw new Error(_0xa227('0x66'));if(_0x5b80ae[_0xa227('0x3c')])delete _0x232ffd[_0xa227('0x62')][_0xa227('0x3e')];return _0x5b80ae;})[_0xa227('0x12')](saveUpdates(_0x232ffd[_0xa227('0x62')],null))[_0xa227('0x12')](function(_0x2d37d1){if(!_0x232ffd[_0xa227('0x62')][_0xa227('0x3e')])return _0x2d37d1;return db['MailServerIn'][_0xa227('0x24')](_0x232ffd[_0xa227('0x62')]['Imap'],{'where':{'MailAccountId':_0x2d37d1['id']}})[_0xa227('0x12')](function(){return _0x2d37d1;});})[_0xa227('0x12')](function(_0x421fb6){if(!_0x232ffd['body']['Smtp'])return _0x421fb6;return db[_0xa227('0x41')][_0xa227('0x24')](_0x232ffd[_0xa227('0x62')][_0xa227('0x3f')],{'where':{'MailAccountId':_0x421fb6['id']}})[_0xa227('0x12')](function(){return _0x421fb6;});})[_0xa227('0x12')](respondWithResult(_0x617dde,null))['catch'](handleError(_0x617dde,null));};exports[_0xa227('0x67')]=function(_0xfede3b,_0x5b918a){return db[_0xa227('0x58')][_0xa227('0x67')]()[_0xa227('0x12')](respondWithResult(_0x5b918a,null))[_0xa227('0x1a')](handleError(_0x5b918a,null));};exports['addDisposition']=function(_0x5caead,_0x472c86){if(_0x5caead[_0xa227('0x62')]['id']){delete _0x5caead[_0xa227('0x62')]['id'];}return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x5caead['params']['id']}})['then'](handleEntityNotFound(_0x472c86,null))[_0xa227('0x12')](function(_0x1f3888){if(_0x1f3888){_0x5caead[_0xa227('0x62')][_0xa227('0x68')]=_0x1f3888['id'];return db[_0xa227('0x69')][_0xa227('0x6a')](_0x5caead['body']);}})[_0xa227('0x12')](respondWithResult(_0x472c86,null))[_0xa227('0x1a')](handleError(_0x472c86,null));};exports[_0xa227('0x6b')]=function(_0x1b8b59,_0x18dd21){var _0x191773={'raw':![],'where':{}};var _0x49ad01={};var _0x354e00={'count':0x0,'rows':[]};return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x1b8b59[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x18dd21,null))[_0xa227('0x12')](function(_0x3bce21){if(_0x3bce21){_0x49ad01[_0xa227('0x47')]=_[_0xa227('0x4a')](db[_0xa227('0x69')][_0xa227('0x43')]);_0x49ad01[_0xa227('0x49')]=_['keys'](_0x1b8b59['query']);_0x49ad01['filters']=_['intersection'](_0x49ad01['model'],_0x49ad01[_0xa227('0x49')]);_0x191773[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x49ad01[_0xa227('0x47')],qs[_0xa227('0x60')](_0x1b8b59['query'][_0xa227('0x60')]));_0x191773[_0xa227('0x4d')]=_0x191773[_0xa227('0x4d')]['length']?_0x191773[_0xa227('0x4d')]:_0x49ad01['model'];if(!_0x1b8b59[_0xa227('0x49')][_0xa227('0x6d')](_0xa227('0x4f'))){_0x191773['limit']=qs[_0xa227('0x20')](_0x1b8b59[_0xa227('0x49')]['limit']);_0x191773[_0xa227('0x21')]=qs[_0xa227('0x21')](_0x1b8b59[_0xa227('0x49')][_0xa227('0x21')]);}_0x191773['order']=qs['sort'](_0x1b8b59[_0xa227('0x49')][_0xa227('0x51')]);_0x191773[_0xa227('0x52')]=qs['filters'](_['pick'](_0x1b8b59[_0xa227('0x49')],_0x49ad01[_0xa227('0x4b')]));_0x191773[_0xa227('0x52')][_0xa227('0x68')]=_0x3bce21['id'];if(_0x1b8b59[_0xa227('0x49')][_0xa227('0x54')]){_0x191773['where']=_[_0xa227('0x55')](_0x191773[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x191773[_0xa227('0x4d')],function(_0x5728b7){var _0x39df57={};_0x39df57[_0x5728b7]={'$like':'%'+_0x1b8b59[_0xa227('0x49')][_0xa227('0x54')]+'%'};return _0x39df57;})});}_0x191773=_[_0xa227('0x55')]({},_0x191773,_0x1b8b59['options']);return db[_0xa227('0x69')][_0xa227('0x22')]({'where':_0x191773[_0xa227('0x52')]})[_0xa227('0x12')](function(_0x3d7f41){_0x354e00[_0xa227('0x22')]=_0x3d7f41;if(_0x1b8b59['query'][_0xa227('0x59')]){_0x191773['include']=[{'all':!![]}];}return db[_0xa227('0x69')][_0xa227('0x5b')](_0x191773);})[_0xa227('0x12')](function(_0x2202e3){_0x354e00[_0xa227('0x5c')]=_0x2202e3;return _0x354e00;});}})[_0xa227('0x12')](respondWithFilteredResult(_0x18dd21,_0x191773))[_0xa227('0x1a')](handleError(_0x18dd21,null));};exports[_0xa227('0x6e')]=function(_0x36b008,_0x1d6d5b){return db[_0xa227('0x58')]['find']({'where':{'id':_0x36b008['params']['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x1d6d5b,null))[_0xa227('0x12')](function(_0x231c9a){if(_0x231c9a){return _0x231c9a[_0xa227('0x6e')](_0x36b008['query']['ids']);}})[_0xa227('0x12')](respondWithStatusCode(_0x1d6d5b,null))[_0xa227('0x1a')](handleError(_0x1d6d5b,null));};exports['addAnswer']=function(_0x24a9a2,_0x52d2fe){if(_0x24a9a2['body']['id']){delete _0x24a9a2[_0xa227('0x62')]['id'];}return db[_0xa227('0x58')]['find']({'where':{'id':_0x24a9a2[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x52d2fe,null))[_0xa227('0x12')](function(_0x141f2d){if(_0x141f2d){_0x24a9a2[_0xa227('0x62')][_0xa227('0x68')]=_0x141f2d['id'];return db[_0xa227('0x6f')][_0xa227('0x6a')](_0x24a9a2[_0xa227('0x62')]);}})['then'](respondWithResult(_0x52d2fe,null))[_0xa227('0x1a')](handleError(_0x52d2fe,null));};exports[_0xa227('0x70')]=function(_0x3daf24,_0x3d181f){var _0x6aaf57={'raw':![],'where':{}};var _0x1341ae={};var _0x5563dd={'count':0x0,'rows':[]};return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x3daf24[_0xa227('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3d181f,null))['then'](function(_0x3775f4){if(_0x3775f4){_0x1341ae[_0xa227('0x47')]=_[_0xa227('0x4a')](db[_0xa227('0x6f')]['rawAttributes']);_0x1341ae[_0xa227('0x49')]=_['keys'](_0x3daf24[_0xa227('0x49')]);_0x1341ae[_0xa227('0x4b')]=_[_0xa227('0x4c')](_0x1341ae[_0xa227('0x47')],_0x1341ae[_0xa227('0x49')]);_0x6aaf57[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x1341ae[_0xa227('0x47')],qs[_0xa227('0x60')](_0x3daf24[_0xa227('0x49')]['fields']));_0x6aaf57['attributes']=_0x6aaf57[_0xa227('0x4d')][_0xa227('0x4e')]?_0x6aaf57[_0xa227('0x4d')]:_0x1341ae['model'];if(!_0x3daf24['query'][_0xa227('0x6d')](_0xa227('0x4f'))){_0x6aaf57[_0xa227('0x20')]=qs[_0xa227('0x20')](_0x3daf24[_0xa227('0x49')][_0xa227('0x20')]);_0x6aaf57['offset']=qs['offset'](_0x3daf24[_0xa227('0x49')]['offset']);}_0x6aaf57[_0xa227('0x50')]=qs[_0xa227('0x51')](_0x3daf24[_0xa227('0x49')][_0xa227('0x51')]);_0x6aaf57[_0xa227('0x52')]=qs[_0xa227('0x4b')](_[_0xa227('0x53')](_0x3daf24[_0xa227('0x49')],_0x1341ae[_0xa227('0x4b')]));_0x6aaf57[_0xa227('0x52')][_0xa227('0x68')]=_0x3775f4['id'];if(_0x3daf24[_0xa227('0x49')][_0xa227('0x54')]){_0x6aaf57[_0xa227('0x52')]=_['merge'](_0x6aaf57['where'],{'$or':_['map'](_0x6aaf57['attributes'],function(_0x4db55b){var _0x67025c={};_0x67025c[_0x4db55b]={'$like':'%'+_0x3daf24[_0xa227('0x49')][_0xa227('0x54')]+'%'};return _0x67025c;})});}_0x6aaf57=_['merge']({},_0x6aaf57,_0x3daf24['options']);return db['CannedAnswer']['count']({'where':_0x6aaf57[_0xa227('0x52')]})['then'](function(_0x2a8855){_0x5563dd[_0xa227('0x22')]=_0x2a8855;if(_0x3daf24['query']['includeAll']){_0x6aaf57[_0xa227('0x5a')]=[{'all':!![]}];}return db[_0xa227('0x6f')][_0xa227('0x5b')](_0x6aaf57);})['then'](function(_0x4d1ff3){_0x5563dd[_0xa227('0x5c')]=_0x4d1ff3;return _0x5563dd;});}})[_0xa227('0x12')](respondWithFilteredResult(_0x3d181f,_0x6aaf57))[_0xa227('0x1a')](handleError(_0x3d181f,null));};exports[_0xa227('0x71')]=function(_0xf9b569,_0xa36265){return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0xf9b569[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0xa36265,null))['then'](function(_0x318726){if(_0x318726){return _0x318726[_0xa227('0x71')](_0xf9b569['query'][_0xa227('0x72')]);}})['then'](respondWithStatusCode(_0xa36265,null))[_0xa227('0x1a')](handleError(_0xa36265,null));};exports[_0xa227('0x6a')]=function(_0x3d0993,_0x386ca2){var _0x26b942={'name':_0x3d0993[_0xa227('0x62')][_0xa227('0x2a')],'key':_0x3d0993[_0xa227('0x62')][_0xa227('0x46')],'provider':_0x3d0993[_0xa227('0x62')]['provider']===_0xa227('0x64')?null:_0x3d0993[_0xa227('0x62')][_0xa227('0x63')],'email':_0x3d0993[_0xa227('0x62')][_0xa227('0x73')],'ListId':_0x3d0993[_0xa227('0x62')][_0xa227('0x74')],'active':!_[_0xa227('0x75')](_0x3d0993[_0xa227('0x62')][_0xa227('0x76')])?_0x3d0993['body'][_0xa227('0x76')]:!![],'description':_0x3d0993['body']['description']||null};var _0x225a3f=getAuthenticationOptions(_0x26b942['provider'],_0x3d0993[_0xa227('0x62')]);_0x26b942[_0xa227('0x3e')]=_0x225a3f[_0xa227('0x3e')];_0x26b942[_0xa227('0x3f')]=_0x225a3f['Smtp'];return db[_0xa227('0x58')]['create'](_0x26b942,{'include':[{'model':db['MailServerOut'],'as':_0xa227('0x3f')},{'model':db['MailServerIn'],'as':_0xa227('0x3e')}]})['then'](function(_0x153803){var _0x858fcc=_0x3d0993['user']['get']({'plain':!![]});if(!_0x858fcc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x858fcc[_0xa227('0x77')]==='user'){var _0x5c47b4=_0x153803[_0xa227('0x26')]({'plain':!![]});return db[_0xa227('0x78')]['find']({'where':{'name':_0xa227('0x27'),'userProfileId':_0x858fcc[_0xa227('0x79')]},'raw':!![]})[_0xa227('0x12')](function(_0x240441){if(_0x240441&&_0x240441[_0xa227('0x7a')]===0x0){return db[_0xa227('0x28')][_0xa227('0x6a')]({'name':_0x5c47b4[_0xa227('0x2a')],'resourceId':_0x5c47b4['id'],'type':_0x240441[_0xa227('0x2a')],'sectionId':_0x240441['id']},{})[_0xa227('0x12')](function(){return _0x153803;});}else{return _0x153803;}})[_0xa227('0x1a')](function(_0x18515a){logger[_0xa227('0x17')](_0xa227('0x7b'),_0x18515a);throw _0x18515a;});}return _0x153803;})[_0xa227('0x12')](respondWithResult(_0x386ca2,0xc9))[_0xa227('0x1a')](handleError(_0x386ca2,null));};exports[_0xa227('0x7c')]=function(_0x18fa68,_0x5ef5a3){return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x18fa68[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x5ef5a3,null))[_0xa227('0x12')](function(_0x2f730c){if(_0x2f730c){return _0x2f730c[_0xa227('0x7c')]();}return null;})[_0xa227('0x12')](respondWithResult(_0x5ef5a3,null))[_0xa227('0x1a')](handleError(_0x5ef5a3,null));};exports['addImap']=function(_0x2ef229,_0x4205a6){if(_0x2ef229[_0xa227('0x62')]['id']){delete _0x2ef229[_0xa227('0x62')]['id'];}return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x2ef229['params']['id']}})['then'](handleEntityNotFound(_0x4205a6,null))[_0xa227('0x12')](function(_0x3ec95b){if(_0x3ec95b){_0x2ef229[_0xa227('0x62')][_0xa227('0x68')]=_0x3ec95b['id'];return db['MailServerIn'][_0xa227('0x6a')](_0x2ef229['body']);}})[_0xa227('0x12')](respondWithResult(_0x4205a6,null))[_0xa227('0x1a')](handleError(_0x4205a6,null));};exports[_0xa227('0x7d')]=function(_0x1e299c,_0x271e95){return db[_0xa227('0x58')]['findOne']({'where':{'id':_0x1e299c[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x271e95,null))[_0xa227('0x12')](function(_0x343a85){if(_0x343a85){return _0x343a85[_0xa227('0x7e')](null);}return null;})[_0xa227('0x12')](respondWithStatusCode(_0x271e95,null))['catch'](handleError(_0x271e95,null));};exports[_0xa227('0x7f')]=function(_0x357c17,_0x4a0c2a){return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x357c17[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x4a0c2a,null))[_0xa227('0x12')](function(_0x24ef08){if(_0x24ef08){return _0x24ef08[_0xa227('0x7f')]();}return null;})['then'](respondWithResult(_0x4a0c2a,null))[_0xa227('0x1a')](handleError(_0x4a0c2a,null));};exports[_0xa227('0x80')]=function(_0x120488,_0x2a59fd){if(_0x120488[_0xa227('0x62')]['id']){delete _0x120488[_0xa227('0x62')]['id'];}return db['MailAccount'][_0xa227('0x61')]({'where':{'id':_0x120488['params']['id']}})['then'](handleEntityNotFound(_0x2a59fd,null))[_0xa227('0x12')](function(_0x4cf793){if(_0x4cf793){_0x120488[_0xa227('0x62')][_0xa227('0x68')]=_0x4cf793['id'];return db[_0xa227('0x41')][_0xa227('0x6a')](_0x120488['body']);}})[_0xa227('0x12')](respondWithResult(_0x2a59fd,null))[_0xa227('0x1a')](handleError(_0x2a59fd,null));};exports[_0xa227('0x81')]=function(_0x3c415f,_0x5661bc){return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x3c415f[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x5661bc,null))[_0xa227('0x12')](function(_0x1365ec){if(_0x1365ec){return _0x1365ec[_0xa227('0x82')](null);}return null;})[_0xa227('0x12')](respondWithStatusCode(_0x5661bc,null))[_0xa227('0x1a')](handleError(_0x5661bc,null));};exports['addInteraction']=function(_0x37fff0,_0x347d72){return db[_0xa227('0x83')]['find']({'where':{'id':_0x37fff0[_0xa227('0x5e')]['id']}})['then'](handleEntityNotFound(_0x347d72,null))[_0xa227('0x12')](function(_0x46f166){if(_0x46f166){return _0x46f166['addInteraction'](_0x37fff0[_0xa227('0x62')][_0xa227('0x72')],_[_0xa227('0x84')](_0x37fff0[_0xa227('0x62')],['ids','id'])||{});}})[_0xa227('0x12')](respondWithResult(_0x347d72,null))[_0xa227('0x1a')](handleError(_0x347d72,null));};exports[_0xa227('0x85')]=function(_0x51bcdf,_0x56dec2){var _0x1eed3e={'raw':![],'where':{}};var _0x5004f4={};var _0x849227={'count':0x0,'rows':[]};return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x51bcdf[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x56dec2,null))[_0xa227('0x12')](function(_0x3643e3){if(_0x3643e3){_0x5004f4['model']=_[_0xa227('0x4a')](db[_0xa227('0x83')]['rawAttributes']);_0x5004f4[_0xa227('0x49')]=_[_0xa227('0x4a')](_0x51bcdf[_0xa227('0x49')]);_0x5004f4[_0xa227('0x4b')]=_[_0xa227('0x4c')](_0x5004f4[_0xa227('0x47')],_0x5004f4[_0xa227('0x49')]);_0x1eed3e[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x5004f4['model'],qs[_0xa227('0x60')](_0x51bcdf['query'][_0xa227('0x60')]));_0x1eed3e['attributes']=_0x1eed3e['attributes']['length']?_0x1eed3e[_0xa227('0x4d')]:_0x5004f4['model'];if(!_0x51bcdf[_0xa227('0x49')][_0xa227('0x6d')](_0xa227('0x4f'))){_0x1eed3e['limit']=qs['limit'](_0x51bcdf[_0xa227('0x49')][_0xa227('0x20')]);_0x1eed3e[_0xa227('0x21')]=qs['offset'](_0x51bcdf[_0xa227('0x49')][_0xa227('0x21')]);}_0x1eed3e['order']=qs[_0xa227('0x51')](_0x51bcdf[_0xa227('0x49')][_0xa227('0x51')]);_0x1eed3e[_0xa227('0x52')]=qs[_0xa227('0x4b')](_[_0xa227('0x53')](_0x51bcdf[_0xa227('0x49')],_0x5004f4[_0xa227('0x4b')]));_0x1eed3e[_0xa227('0x52')][_0xa227('0x68')]=_0x3643e3['id'];if(_0x51bcdf[_0xa227('0x49')]['filter']){_0x1eed3e[_0xa227('0x52')]=_['merge'](_0x1eed3e[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x1eed3e['attributes'],function(_0x2c90fe){var _0x3fd033={};_0x3fd033[_0x2c90fe]={'$like':'%'+_0x51bcdf[_0xa227('0x49')][_0xa227('0x54')]+'%'};return _0x3fd033;})});}_0x1eed3e=_[_0xa227('0x55')]({},_0x1eed3e,_0x51bcdf[_0xa227('0x57')]);return db[_0xa227('0x83')][_0xa227('0x22')]({'where':_0x1eed3e['where']})[_0xa227('0x12')](function(_0x26c604){_0x849227[_0xa227('0x22')]=_0x26c604;if(_0x51bcdf[_0xa227('0x49')][_0xa227('0x59')]){_0x1eed3e[_0xa227('0x5a')]=[{'model':db[_0xa227('0x86')],'as':_0xa227('0x87'),'required':![]},{'model':db[_0xa227('0x88')],'as':'Owner','attributes':['name','fullname',_0xa227('0x89')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xa227('0x2a'),_0xa227('0x8a')],'where':_0x51bcdf['query'][_0xa227('0x8b')]?{'id':_0x51bcdf[_0xa227('0x49')][_0xa227('0x8b')]}:undefined,'required':_0x51bcdf['query'][_0xa227('0x8b')]?!![]:![]}];}return db['MailInteraction'][_0xa227('0x5b')](_0x1eed3e);})[_0xa227('0x12')](function(_0x2db3b9){_0x849227[_0xa227('0x5c')]=_0x2db3b9;return _0x849227;});}})[_0xa227('0x12')](respondWithFilteredResult(_0x56dec2,_0x1eed3e))[_0xa227('0x1a')](handleError(_0x56dec2,null));};exports['addApplications']=function addApplications(_0x24470c,_0x2931ca){var _0x3dae5b=_0x24470c[_0xa227('0x5e')]['id'];var _0x5df6fb=_0x24470c[_0xa227('0x62')];var _0x56fcbe=0xc8;var _0x2dc106=null;return db['sequelize'][_0xa227('0x8c')]({'isolationLevel':db[_0xa227('0x8d')][_0xa227('0x8e')]['ISOLATION_LEVELS'][_0xa227('0x8f')]},function(_0x5672d3){return db[_0xa227('0x58')][_0xa227('0x6c')]({'where':{'id':_0x3dae5b},'transaction':_0x5672d3})[_0xa227('0x12')](function(_0x17d99f){if(_0x17d99f){return db[_0xa227('0x90')][_0xa227('0x25')]({'where':{'MailAccountId':_0x3dae5b},'transaction':_0x5672d3})['then'](function(){var _0x558464=_[_0xa227('0x48')](_0x5df6fb,function(_0xadc330){_0xadc330[_0xa227('0x68')]=_0x3dae5b;return _0xadc330;});return db[_0xa227('0x90')][_0xa227('0x91')](_0x558464,{'transaction':_0x5672d3});});}else{_0x56fcbe=0x194;_0x2dc106=[];}});})['then'](function(){if(_0x56fcbe!==0x194){return db[_0xa227('0x90')][_0xa227('0x92')]({'where':{'MailAccountId':_0x3dae5b},'order':_0xa227('0x93')})[_0xa227('0x12')](function(_0x10279f){_0x2dc106=_0x10279f;});}})['catch'](function(_0x235521){_0x56fcbe=0x1f4;logger[_0xa227('0x17')](_0x235521[_0xa227('0x29')]);if(_0x235521[_0xa227('0x2a')]){delete _0x235521[_0xa227('0x2a')];}_0x2dc106=_0x235521;})[_0xa227('0x94')](function(){if(_0x2dc106===null){_0x2931ca['sendStatus'](_0x56fcbe);}else{if(_0x56fcbe===0x1f4){_0x2931ca[_0xa227('0x1d')](_0x56fcbe)[_0xa227('0x95')](_0x2dc106);}else{_0x2931ca[_0xa227('0x1d')](_0x56fcbe)['json'](_0x2dc106);}}});};exports[_0xa227('0x96')]=function(_0x5c5461,_0x53e641){var _0x139e01={};var _0x42ee5c={};var _0x374463;var _0x58eeba;return db['MailAccount'][_0xa227('0x6c')]({'where':{'id':_0x5c5461[_0xa227('0x5e')]['id']}})['then'](handleEntityNotFound(_0x53e641,null))[_0xa227('0x12')](function(_0x1df2e4){if(_0x1df2e4){_0x374463=_0x1df2e4;_0x42ee5c[_0xa227('0x47')]=_[_0xa227('0x4a')](db[_0xa227('0x90')][_0xa227('0x43')]);_0x42ee5c['query']=_[_0xa227('0x4a')](_0x5c5461[_0xa227('0x49')]);_0x42ee5c[_0xa227('0x4b')]=_[_0xa227('0x4c')](_0x42ee5c[_0xa227('0x47')],_0x42ee5c['query']);_0x139e01['attributes']=_['intersection'](_0x42ee5c[_0xa227('0x47')],qs[_0xa227('0x60')](_0x5c5461['query']['fields']));_0x139e01[_0xa227('0x4d')]=_0x139e01[_0xa227('0x4d')][_0xa227('0x4e')]?_0x139e01[_0xa227('0x4d')]:_0x42ee5c[_0xa227('0x47')];_0x139e01[_0xa227('0x50')]=qs['sort'](_0x5c5461[_0xa227('0x49')][_0xa227('0x51')]);_0x139e01[_0xa227('0x52')]=qs['filters'](_[_0xa227('0x53')](_0x5c5461[_0xa227('0x49')],_0x42ee5c['filters']));if(_0x5c5461['query'][_0xa227('0x54')]){_0x139e01['where']=_[_0xa227('0x55')](_0x139e01[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x139e01[_0xa227('0x4d')],function(_0x35d0bf){var _0x51100b={};_0x51100b[_0x35d0bf]={'$like':'%'+_0x5c5461[_0xa227('0x49')][_0xa227('0x54')]+'%'};return _0x51100b;})});}_0x139e01=_[_0xa227('0x55')]({},_0x139e01,_0x5c5461[_0xa227('0x57')]);return _0x374463['getApplications'](_0x139e01);}})[_0xa227('0x12')](function(_0x527bf4){if(_0x527bf4){_0x58eeba=_0x527bf4[_0xa227('0x4e')];if(!_0x5c5461[_0xa227('0x49')][_0xa227('0x6d')](_0xa227('0x4f'))){_0x139e01['limit']=qs['limit'](_0x5c5461['query'][_0xa227('0x20')]);_0x139e01[_0xa227('0x21')]=qs['offset'](_0x5c5461[_0xa227('0x49')][_0xa227('0x21')]);}return _0x374463[_0xa227('0x96')](_0x139e01);}})[_0xa227('0x12')](function(_0x562e8d){if(_0x562e8d){return _0x562e8d?{'count':_0x58eeba,'rows':_0x562e8d}:null;}})[_0xa227('0x12')](respondWithResult(_0x53e641,null))['catch'](handleError(_0x53e641,null));};exports[_0xa227('0x97')]=function(_0x546d0c,_0x5b1c9c){var _0x2335a2={'raw':!![],'where':{}};var _0x2da019={};var _0x41b438={'count':0x0,'rows':[]};return db[_0xa227('0x58')]['findOne']({'where':{'id':_0x546d0c['params']['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x5b1c9c,null))[_0xa227('0x12')](function(_0x5259e8){if(_0x5259e8){_0x2da019['model']=_[_0xa227('0x4a')](db['MailMessage'][_0xa227('0x43')]);_0x2da019[_0xa227('0x49')]=_[_0xa227('0x4a')](_0x546d0c[_0xa227('0x49')]);_0x2da019[_0xa227('0x4b')]=_['intersection'](_0x2da019[_0xa227('0x47')],_0x2da019[_0xa227('0x49')]);_0x2335a2['attributes']=_[_0xa227('0x4c')](_0x2da019[_0xa227('0x47')],qs[_0xa227('0x60')](_0x546d0c[_0xa227('0x49')][_0xa227('0x60')]));_0x2335a2[_0xa227('0x4d')]=_0x2335a2['attributes'][_0xa227('0x4e')]?_0x2335a2[_0xa227('0x4d')]:_0x2da019[_0xa227('0x47')];if(!_0x546d0c[_0xa227('0x49')][_0xa227('0x6d')](_0xa227('0x4f'))){_0x2335a2[_0xa227('0x20')]=qs['limit'](_0x546d0c[_0xa227('0x49')][_0xa227('0x20')]);_0x2335a2['offset']=qs[_0xa227('0x21')](_0x546d0c[_0xa227('0x49')][_0xa227('0x21')]);}_0x2335a2[_0xa227('0x50')]=qs[_0xa227('0x51')](_0x546d0c[_0xa227('0x49')][_0xa227('0x51')]);_0x2335a2['where']=qs['filters'](_[_0xa227('0x53')](_0x546d0c[_0xa227('0x49')],_0x2da019['filters']));_0x2335a2[_0xa227('0x52')][_0xa227('0x68')]=_0x5259e8['id'];if(_0x546d0c[_0xa227('0x49')][_0xa227('0x54')]){_0x2335a2[_0xa227('0x52')]=_[_0xa227('0x55')](_0x2335a2[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x2335a2[_0xa227('0x4d')],function(_0x14adcd){var _0x5871d8={};_0x5871d8[_0x14adcd]={'$like':'%'+_0x546d0c[_0xa227('0x49')]['filter']+'%'};return _0x5871d8;})});}if(_0x546d0c[_0xa227('0x49')][_0xa227('0x98')]){var _0x36bfe2=_0x546d0c[_0xa227('0x49')][_0xa227('0x98')][_0xa227('0x99')](',');var _0x9abf7f={};_0x9abf7f[_0x36bfe2[0x0]]={'$gte':moment(_0x36bfe2[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x2335a2['where']=_[_0xa227('0x55')](_0x2335a2[_0xa227('0x52')],_0x9abf7f);}_0x2335a2=_['merge']({},_0x2335a2,_0x546d0c['options']);return db[_0xa227('0x9a')]['count']({'where':_0x2335a2[_0xa227('0x52')]})[_0xa227('0x12')](function(_0x1592ff){_0x41b438[_0xa227('0x22')]=_0x1592ff;if(_0x546d0c['query'][_0xa227('0x59')]){_0x2335a2[_0xa227('0x5a')]=[{'all':!![]}];}return db[_0xa227('0x9a')][_0xa227('0x5b')](_0x2335a2);})['then'](function(_0x24aa3d){if(_0x546d0c[_0xa227('0x49')][_0xa227('0x9b')]===_0xa227('0x9c')){for(var _0x369991=0x0;_0x369991<_0x24aa3d[_0xa227('0x4e')];_0x369991++){_0x24aa3d[_0x369991][_0xa227('0x62')]=juice(_0x24aa3d[_0x369991]['body']);}}_0x41b438[_0xa227('0x5c')]=_0x24aa3d;return _0x41b438;});}})[_0xa227('0x12')](respondWithFilteredResult(_0x5b1c9c,_0x2335a2))[_0xa227('0x1a')](handleError(_0x5b1c9c,null));};exports['send']=function(_0x46b8d1,_0x5b72e0){var _0x5c03d1,_0xcdba9d={},_0x5879d0;if(_0x46b8d1[_0xa227('0x62')]['to']){_0x5879d0=_0x46b8d1[_0xa227('0x62')]['to'][_0xa227('0x99')](',')[0x0];}return db['MailAccount'][_0xa227('0x61')]({'where':{'id':_0x46b8d1[_0xa227('0x5e')]['id']},'include':[{'model':db[_0xa227('0x9d')],'as':_0xa227('0x9e'),'include':[{'model':db[_0xa227('0x86')],'as':_0xa227('0x9f'),'where':{'email':_0x5879d0},'limit':0x1,'order':[[_0xa227('0xa0'),'DESC']]}]},{'model':db[_0xa227('0x41')],'as':_0xa227('0x3f'),'raw':!![],'include':[{'model':db[_0xa227('0xa1')],'as':_0xa227('0xa1'),'raw':!![]}]}]})[_0xa227('0x12')](handleEntityNotFound(_0x5b72e0,null))[_0xa227('0x12')](function(_0x4de349){if(!_0x4de349)return;_0x5c03d1=_0x4de349;if(!_0x4de349[_0xa227('0x3f')])throw new Error(_0xa227('0xa2'));if(_[_0xa227('0x75')](_0x46b8d1[_0xa227('0x62')][_0xa227('0xa3')])){_0x46b8d1[_0xa227('0x62')][_0xa227('0xa3')]=util[_0xa227('0xa4')](_0xa227('0xa5'),_0x4de349[_0xa227('0x2a')],_0x4de349[_0xa227('0x73')]||_0x4de349[_0xa227('0x3f')][_0xa227('0x33')]);}if(_0x46b8d1[_0xa227('0x62')]['attachments']&&_0x46b8d1['body'][_0xa227('0xa6')][_0xa227('0x4e')]){for(var _0x118487=0x0;_0x118487<_0x46b8d1['body'][_0xa227('0xa6')]['length'];_0x118487+=0x1){_0x46b8d1[_0xa227('0x62')]['attachments'][_0x118487]={'filename':_0x46b8d1[_0xa227('0x62')][_0xa227('0xa6')][_0x118487]['name'],'path':path[_0xa227('0xa7')](config[_0xa227('0xa8')],_0xa227('0xa9'),_0x46b8d1[_0xa227('0x62')][_0xa227('0xa6')][_0x118487][_0xa227('0xaa')])};}}var _0x18784e=_0x4de349[_0xa227('0xab')]();return respondWithRpcPromise(_0xa227('0xac'),_0xa227('0xad'),{'account':_0x18784e,'message':_0x46b8d1[_0xa227('0x62')]});})[_0xa227('0x12')](function(_0x23fa7d){if(!_0x23fa7d)return;_0xcdba9d=_0x23fa7d;if(!_0x5c03d1[_0xa227('0x9e')])throw new Error(_0xa227('0xae'));if(_0x5c03d1[_0xa227('0x9e')][_0xa227('0x9f')][_0xa227('0x4e')])return _0x5c03d1[_0xa227('0x9e')][_0xa227('0x9f')][0x0];return db[_0xa227('0x86')][_0xa227('0x6a')](_[_0xa227('0xaf')](_0x46b8d1[_0xa227('0x62')],{'firstName':_0x46b8d1[_0xa227('0x62')]['to'],'email':_0x46b8d1['body']['to'],'phone':_0x46b8d1[_0xa227('0x62')]['to'],'ListId':_0x5c03d1[_0xa227('0x74')]}));})[_0xa227('0x12')](function(_0x4ac12c){if(!_0x4ac12c)return;var _0x7391c9={'UserId':_0x46b8d1['user']['id'],'ContactId':_0x4ac12c['id'],'MailAccountId':_0x5c03d1['id'],'inReplyTo':_0xcdba9d[_0xa227('0xb0')],'to':_0x46b8d1[_0xa227('0x62')][_0xa227('0xa3')],'cc':_0x46b8d1[_0xa227('0x62')]['cc'],'subject':_0x46b8d1['body']['subject'],'attach':_0x46b8d1['body'][_0xa227('0xb1')],'firstMsgDirection':_0xa227('0xb2'),'lastMsgAt':moment()['format'](_0xa227('0xb3')),'lastMsgDirection':_0xa227('0xb2'),'Messages':[_[_0xa227('0x55')](_0x46b8d1['body'],{'messageId':_0xcdba9d[_0xa227('0xb0')],'sentAt':moment()[_0xa227('0xa4')](_0xa227('0xb3')),'read':!![],'MailAccountId':_0x5c03d1['id'],'UserId':_0x46b8d1[_0xa227('0x33')]['id'],'ContactId':_0x4ac12c['id']})]};if(_0x46b8d1[_0xa227('0x62')][_0xa227('0xb4')]){_0x7391c9=_[_0xa227('0x55')](_0x7391c9,_0x46b8d1[_0xa227('0x62')][_0xa227('0xb4')]);}return db[_0xa227('0x83')][_0xa227('0x6a')](_0x7391c9,{'include':[{'model':db[_0xa227('0x9a')],'as':_0xa227('0xb5')}]});})[_0xa227('0x12')](respondWithResult(_0x5b72e0,null))[_0xa227('0x1a')](handleError(_0x5b72e0,null));};exports[_0xa227('0xb6')]=function(_0x5d2a7a,_0x16db62){return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x5d2a7a[_0xa227('0x5e')]['id']},'include':[{'model':db[_0xa227('0x41')],'as':_0xa227('0x3f'),'raw':!![],'include':[{'model':db[_0xa227('0xa1')],'as':_0xa227('0xa1'),'raw':!![]}]}]})[_0xa227('0x12')](handleEntityNotFound(_0x16db62,null))[_0xa227('0x12')](function(_0xf9370e){if(!_0xf9370e[_0xa227('0x3f')])return;var _0x3be118=_0xf9370e['getSmtpOptions']();return respondWithRpcPromise('VerifySmtp',_0xa227('0xb6'),{'account':_0x3be118});})[_0xa227('0x12')](respondWithResult(_0x16db62,null))[_0xa227('0x1a')](handleError(_0x16db62,null));};exports['destroy']=function(_0x5962bd,_0x479d51){return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x5962bd[_0xa227('0x5e')]['id']}})['then'](handleEntityNotFound(_0x479d51,null))[_0xa227('0x12')](function(_0x35ffaa){if(_0x35ffaa&&_0x35ffaa[_0xa227('0x3c')]){throw new db[(_0xa227('0xb7'))][(_0xa227('0xb8'))](_0xa227('0xb9'));}return _0x35ffaa;})[_0xa227('0x12')](removeEntity(_0x479d51,null))[_0xa227('0x1a')](handleError(_0x479d51,null));};exports['addAgents']=function(_0xab724,_0x1aeefe){return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0xab724[_0xa227('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1aeefe,null))[_0xa227('0x12')](function(_0x110b23){if(_0x110b23){return _0x110b23['addAgents'](_0xab724[_0xa227('0x62')]['ids'],_[_0xa227('0x84')](_0xab724[_0xa227('0x62')],[_0xa227('0x72'),'id'])||{})[_0xa227('0xba')](function(_0x4fce8b){for(var _0x35877a=0x0;_0x35877a<_0xab724[_0xa227('0x62')][_0xa227('0x72')][_0xa227('0x4e')];_0x35877a+=0x1){socket[_0xa227('0xbb')](_0xa227('0xbc'),{'UserId':Number(_0xab724[_0xa227('0x62')]['ids'][_0x35877a]),'MailAccountId':Number(_0xab724[_0xa227('0x5e')]['id'])});}return _0x4fce8b;});}})['then'](respondWithResult(_0x1aeefe,null))['catch'](handleError(_0x1aeefe,null));};exports[_0xa227('0xbd')]=function(_0x2b3986,_0x335649){return db[_0xa227('0x58')][_0xa227('0x61')]({'where':{'id':_0x2b3986[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x335649,null))[_0xa227('0x12')](function(_0x18a6fc){if(_0x18a6fc){return _0x18a6fc['removeAgents'](_0x2b3986['query'][_0xa227('0x72')])['then'](function(){if(_['isArray'](_0x2b3986[_0xa227('0x49')][_0xa227('0x72')])){for(var _0x474023=0x0;_0x474023<_0x2b3986[_0xa227('0x49')][_0xa227('0x72')][_0xa227('0x4e')];_0x474023+=0x1){socket[_0xa227('0xbb')]('userMailAccount:remove',{'UserId':Number(_0x2b3986[_0xa227('0x49')][_0xa227('0x72')][_0x474023]),'MailAccountId':Number(_0x2b3986[_0xa227('0x5e')]['id'])});}}else{socket[_0xa227('0xbb')](_0xa227('0xbe'),{'UserId':Number(_0x2b3986['query'][_0xa227('0x72')]),'MailAccountId':Number(_0x2b3986['params']['id'])});}});}})[_0xa227('0x12')](respondWithStatusCode(_0x335649,null))['catch'](handleError(_0x335649,null));};exports['getAgents']=function(_0x54aec8,_0x23a5c5){var _0x38e4f4={};var _0x3e409b={};var _0x460123;var _0x265662;return db[_0xa227('0x58')]['findOne']({'where':{'id':_0x54aec8[_0xa227('0x5e')]['id']}})[_0xa227('0x12')](handleEntityNotFound(_0x23a5c5,null))[_0xa227('0x12')](function(_0xc83dc0){if(_0xc83dc0){_0x460123=_0xc83dc0;_0x3e409b[_0xa227('0x47')]=_[_0xa227('0x4a')](db['User'][_0xa227('0x43')]);_0x3e409b['query']=_[_0xa227('0x4a')](_0x54aec8[_0xa227('0x49')]);_0x3e409b[_0xa227('0x4b')]=_['intersection'](_0x3e409b['model'],_0x3e409b[_0xa227('0x49')]);_0x38e4f4[_0xa227('0x4d')]=_[_0xa227('0x4c')](_0x3e409b[_0xa227('0x47')],qs[_0xa227('0x60')](_0x54aec8[_0xa227('0x49')][_0xa227('0x60')]));_0x38e4f4[_0xa227('0x4d')]=_0x38e4f4[_0xa227('0x4d')][_0xa227('0x4e')]?_0x38e4f4[_0xa227('0x4d')]:_0x3e409b[_0xa227('0x47')];_0x38e4f4[_0xa227('0x50')]=qs[_0xa227('0x51')](_0x54aec8['query'][_0xa227('0x51')]);_0x38e4f4[_0xa227('0x52')]=qs[_0xa227('0x4b')](_['pick'](_0x54aec8[_0xa227('0x49')],_0x3e409b[_0xa227('0x4b')]));if(_0x54aec8['query'][_0xa227('0x54')]){_0x38e4f4[_0xa227('0x52')]=_['merge'](_0x38e4f4[_0xa227('0x52')],{'$or':_[_0xa227('0x48')](_0x38e4f4['attributes'],function(_0x5d5adc){var _0x4476f2={};_0x4476f2[_0x5d5adc]={'$like':'%'+_0x54aec8['query']['filter']+'%'};return _0x4476f2;})});}_0x38e4f4=_['merge']({},_0x38e4f4,_0x54aec8[_0xa227('0x57')]);return _0x460123['getAgents'](_0x38e4f4);}})['then'](function(_0x2297fc){if(_0x2297fc){_0x265662=_0x2297fc['length'];if(!_0x54aec8['query']['hasOwnProperty'](_0xa227('0x4f'))){_0x38e4f4[_0xa227('0x20')]=qs[_0xa227('0x20')](_0x54aec8[_0xa227('0x49')][_0xa227('0x20')]);_0x38e4f4[_0xa227('0x21')]=qs[_0xa227('0x21')](_0x54aec8[_0xa227('0x49')][_0xa227('0x21')]);}return _0x460123['getAgents'](_0x38e4f4);}})[_0xa227('0x12')](function(_0x169250){if(_0x169250){return _0x169250?{'count':_0x265662,'rows':_0x169250}:null;}})[_0xa227('0x12')](respondWithResult(_0x23a5c5,null))[_0xa227('0x1a')](handleError(_0x23a5c5,null));};
\ No newline at end of file
+var _0xf71a=['sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','rawAttributes','includeAll','find','body','provider','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','create','getAnswers','include','removeAnswers','key','custom','email','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','getImap','addImap','removeImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','CmContact','Contact','User','Owner','fullname','Tags','color','tag','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','findAndCountAll','priority','stack','finally','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','CmList','List','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','Contacts','ListId','messageId','subject','out','Interaction','Messages','verifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','moment','bluebird','path','lodash','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','./mailAccount.socket','register','client','http','request','then','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','MailAccount,\x20%s,\x20%s','message','info','sendStatus','end','json','offset','undefined','count','set','Content-Range','update','destroy','get','MailAccounts','status','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','modernAuthentication','CloudProviderId','pass','host','port','secure','service','authentication','Imap','MailServerIn','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order'];(function(_0x37df1a,_0x151ee6){var _0x30abe3=function(_0x1363fa){while(--_0x1363fa){_0x37df1a['push'](_0x37df1a['shift']());}};_0x30abe3(++_0x151ee6);}(_0xf71a,0x6f));var _0xaf71=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf71a[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xaf71('0x0'));var BPromise=require(_0xaf71('0x1'));var util=require('util');var path=require(_0xaf71('0x2'));var _=require(_0xaf71('0x3'));var juice=require('juice');var Redis=require('ioredis');var qs=require(_0xaf71('0x4'));var logger=require('../../config/logger')(_0xaf71('0x5'));var config=require(_0xaf71('0x6'));var db=require('../../mysqldb')['db'];config[_0xaf71('0x7')]=_[_0xaf71('0x8')](config['redis'],{'host':_0xaf71('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf71('0x7')]));require(_0xaf71('0xa'))[_0xaf71('0xb')](socket);var jayson=require('jayson/promise');var client=jayson[_0xaf71('0xc')][_0xaf71('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x234eaf,_0x396dc0,_0x10eb77,_0x1f0aca){return new BPromise(function(_0x426332,_0x756cc8){var _0x1e6f90=_0x1f0aca||client;return _0x1e6f90[_0xaf71('0xe')](_0x234eaf,_0x10eb77)[_0xaf71('0xf')](function(_0x123d36){logger['info']('MailAccount,\x20%s,\x20%s',_0x396dc0,_0xaf71('0x10'));logger[_0xaf71('0x11')](_0xaf71('0x12'),_0x396dc0,_0xaf71('0x10'),JSON['stringify'](_0x123d36));if(_0x123d36[_0xaf71('0x13')]){if(_0x123d36['error'][_0xaf71('0x14')]===0x1f4){logger[_0xaf71('0x13')](_0xaf71('0x15'),_0x396dc0,_0x123d36[_0xaf71('0x13')][_0xaf71('0x16')]);return _0x756cc8(_0x123d36[_0xaf71('0x13')]['message']);}logger['error'](_0xaf71('0x15'),_0x396dc0,_0x123d36['error'][_0xaf71('0x16')]);return _0x426332(_0x123d36['error'][_0xaf71('0x16')]);}else{logger[_0xaf71('0x17')]('MailAccount,\x20%s,\x20%s',_0x396dc0,_0xaf71('0x10'));_0x426332(_0x123d36['result'][_0xaf71('0x16')]);}})['catch'](function(_0x2146ec){logger['error'](_0xaf71('0x15'),_0x396dc0,_0x2146ec);_0x756cc8(_0x2146ec);});});}function respondWithStatusCode(_0x4938ac,_0x2a4151){_0x2a4151=_0x2a4151||0xcc;return function(_0x582fba){if(_0x582fba){return _0x4938ac[_0xaf71('0x18')](_0x2a4151);}return _0x4938ac['status'](_0x2a4151)[_0xaf71('0x19')]();};}function respondWithResult(_0x27afb8,_0x37ec69){_0x37ec69=_0x37ec69||0xc8;return function(_0x20216d){if(_0x20216d){return _0x27afb8['status'](_0x37ec69)[_0xaf71('0x1a')](_0x20216d);}};}function respondWithFilteredResult(_0x19d31e,_0x14f7f8){return function(_0x454ae4){if(_0x454ae4){var _0x3bcb08=typeof _0x14f7f8[_0xaf71('0x1b')]===_0xaf71('0x1c')&&typeof _0x14f7f8['limit']===_0xaf71('0x1c');var _0x1fb015=_0x454ae4[_0xaf71('0x1d')];var _0x5594f6=_0x3bcb08?0x0:_0x14f7f8['offset'];var _0x4bd8d0=_0x3bcb08?_0x454ae4[_0xaf71('0x1d')]:_0x14f7f8[_0xaf71('0x1b')]+_0x14f7f8['limit'];var _0x4bdd6c;if(_0x4bd8d0>=_0x1fb015){_0x4bd8d0=_0x1fb015;_0x4bdd6c=0xc8;}else{_0x4bdd6c=0xce;}_0x19d31e['status'](_0x4bdd6c);return _0x19d31e[_0xaf71('0x1e')](_0xaf71('0x1f'),_0x5594f6+'-'+_0x4bd8d0+'/'+_0x1fb015)[_0xaf71('0x1a')](_0x454ae4);}return null;};}function saveUpdates(_0x3aadcb){return function(_0x251514){if(_0x251514){return _0x251514[_0xaf71('0x20')](_0x3aadcb)['then'](function(_0x4d9d27){return _0x4d9d27;});}return null;};}function removeEntity(_0x2e18fd){return function(_0xeeb5ab){if(_0xeeb5ab){return _0xeeb5ab[_0xaf71('0x21')]()['then'](function(){var _0x570a1d=_0xeeb5ab[_0xaf71('0x22')]({'plain':!![]});var _0x4e5d81=_0xaf71('0x23');return db['UserProfileResource'][_0xaf71('0x21')]({'where':{'type':_0x4e5d81,'resourceId':_0x570a1d['id']}})['then'](function(){return _0xeeb5ab;});})['then'](function(){_0x2e18fd[_0xaf71('0x24')](0xcc)[_0xaf71('0x19')]();});}};}function handleEntityNotFound(_0x58e32e){return function(_0x467976){if(!_0x467976){_0x58e32e[_0xaf71('0x18')](0x194);}return _0x467976;};}function handleError(_0x317c2f,_0x35d3f5){_0x35d3f5=_0x35d3f5||0x1f4;return function(_0x296b83){logger[_0xaf71('0x13')](_0x296b83['stack']);if(_0x296b83['name']){delete _0x296b83[_0xaf71('0x25')];}_0x317c2f[_0xaf71('0x24')](_0x35d3f5)[_0xaf71('0x26')](_0x296b83);};}function getImapHost(_0x23eacc){switch(_0x23eacc){case _0xaf71('0x27'):return _0xaf71('0x28');case _0xaf71('0x29'):return _0xaf71('0x2a');case _0xaf71('0x2b'):return'imap-mail.outlook.com';case _0xaf71('0x2c'):return _0xaf71('0x2d');}throw new Error(_0xaf71('0x2e'),_0x23eacc);}function getSmtpHost(_0x41d69d){switch(_0x41d69d){case'gmail':return _0xaf71('0x2f');case'yahoo':return _0xaf71('0x30');case'hotmail':return _0xaf71('0x31');case _0xaf71('0x2c'):return _0xaf71('0x32');}throw new Error(_0xaf71('0x2e'),_0x41d69d);}function getAuthenticationOptions(_0x14c438,_0x129255){var _0x1d1537={};var _0x4c455b={};if(_0x14c438){_0x1d1537[_0xaf71('0x33')]=_0x4c455b[_0xaf71('0x33')]=_0x129255[_0xaf71('0x34')];_0x1d1537[_0xaf71('0x35')]=_0x4c455b['pass']=_0x129255[_0xaf71('0x35')];if(_0x129255[_0xaf71('0x36')]){_0x1d1537[_0xaf71('0x36')]=_0x4c455b[_0xaf71('0x36')]=!![];_0x1d1537[_0xaf71('0x37')]=_0x4c455b['CloudProviderId']=_0x129255['CloudProviderId'];_0x1d1537[_0xaf71('0x35')]=_0x4c455b[_0xaf71('0x38')]=null;}else{_0x1d1537[_0xaf71('0x37')]=_0x4c455b[_0xaf71('0x37')]=null;}_0x1d1537[_0xaf71('0x39')]=getImapHost(_0x14c438);_0x1d1537[_0xaf71('0x3a')]=0x3e1;_0x4c455b[_0xaf71('0x39')]=getSmtpHost(_0x14c438);_0x4c455b[_0xaf71('0x3a')]=0x24b;_0x4c455b[_0xaf71('0x3b')]=![];_0x1d1537[_0xaf71('0x3c')]=_0x4c455b[_0xaf71('0x3c')]=null;}else{if(_0x129255['authentication']){_0x1d1537[_0xaf71('0x33')]=_0x4c455b['user']=_0x129255['username'];_0x1d1537[_0xaf71('0x35')]=_0x4c455b[_0xaf71('0x38')]=_0x129255['password'];}else{_0x1d1537[_0xaf71('0x3d')]=_0x4c455b[_0xaf71('0x3d')]=![];_0x1d1537[_0xaf71('0x33')]=_0x4c455b['user']=null;_0x1d1537[_0xaf71('0x35')]=_0x4c455b[_0xaf71('0x38')]=null;}_0x1d1537[_0xaf71('0x39')]=_0x129255[_0xaf71('0x3e')][_0xaf71('0x39')];_0x1d1537[_0xaf71('0x3a')]=_0x129255['Imap'][_0xaf71('0x3a')];_0x4c455b[_0xaf71('0x39')]=_0x129255['Smtp'][_0xaf71('0x39')];_0x4c455b['port']=_0x129255['Smtp'][_0xaf71('0x3a')];}return{'Imap':_0x1d1537,'Smtp':_0x4c455b};}exports['index']=function(_0x2a403f,_0x4d20de){var _0x15893b={'include':[{'model':db[_0xaf71('0x3f')],'as':_0xaf71('0x3e')},{'model':db[_0xaf71('0x40')],'as':_0xaf71('0x41')},{'model':db[_0xaf71('0x42')],'as':_0xaf71('0x43')}]},_0x14fdf5={},_0x335468={'count':0x0,'rows':[]};var _0x4b838f=_[_0xaf71('0x44')](db[_0xaf71('0x45')]['rawAttributes'],function(_0xfc8199){return{'name':_0xfc8199[_0xaf71('0x46')],'type':_0xfc8199[_0xaf71('0x47')]['key']};});_0x14fdf5[_0xaf71('0x48')]=_[_0xaf71('0x44')](_0x4b838f,_0xaf71('0x25'));_0x14fdf5[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x2a403f[_0xaf71('0x49')]);_0x14fdf5[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x14fdf5[_0xaf71('0x48')],_0x14fdf5[_0xaf71('0x49')]);_0x15893b[_0xaf71('0x4d')]=_[_0xaf71('0x4c')](_0x14fdf5[_0xaf71('0x48')],qs[_0xaf71('0x4e')](_0x2a403f[_0xaf71('0x49')][_0xaf71('0x4e')]));_0x15893b[_0xaf71('0x4d')]=_0x15893b[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x15893b['attributes']:_0x14fdf5['model'];if(!_0x2a403f[_0xaf71('0x49')][_0xaf71('0x50')](_0xaf71('0x51'))){_0x15893b['limit']=qs[_0xaf71('0x52')](_0x2a403f[_0xaf71('0x49')][_0xaf71('0x52')]);_0x15893b[_0xaf71('0x1b')]=qs[_0xaf71('0x1b')](_0x2a403f[_0xaf71('0x49')][_0xaf71('0x1b')]);}_0x15893b[_0xaf71('0x53')]=qs['sort'](_0x2a403f['query'][_0xaf71('0x54')]);_0x15893b[_0xaf71('0x55')]=qs[_0xaf71('0x4b')](_[_0xaf71('0x56')](_0x2a403f[_0xaf71('0x49')],_0x14fdf5[_0xaf71('0x4b')]),_0x4b838f);if(_0x2a403f[_0xaf71('0x49')][_0xaf71('0x57')]){_0x15893b[_0xaf71('0x55')]=_[_0xaf71('0x58')](_0x15893b[_0xaf71('0x55')],{'$or':_['map'](_0x4b838f,function(_0x397d7f){if(_0x397d7f[_0xaf71('0x47')]!==_0xaf71('0x59')){var _0x4bbd40={};_0x4bbd40[_0x397d7f[_0xaf71('0x25')]]={'$like':'%'+_0x2a403f['query'][_0xaf71('0x57')]+'%'};return _0x4bbd40;}})});}_0x15893b=_[_0xaf71('0x58')]({},_0x15893b,_0x2a403f[_0xaf71('0x5a')]);var _0x25c525={'where':_0x15893b['where']};return db[_0xaf71('0x45')][_0xaf71('0x1d')](_0x25c525)[_0xaf71('0xf')](function(_0x4635ac){_0x335468[_0xaf71('0x1d')]=_0x4635ac;if(_0x2a403f[_0xaf71('0x49')]['includeAll']){_0x15893b['include']=[{'all':!![]}];}return db[_0xaf71('0x45')][_0xaf71('0x5b')](_0x15893b);})[_0xaf71('0xf')](function(_0x368c67){_0x335468[_0xaf71('0x5c')]=_0x368c67;return _0x335468;})['then'](respondWithFilteredResult(_0x4d20de,_0x15893b))[_0xaf71('0x5d')](handleError(_0x4d20de,null));};exports[_0xaf71('0x5e')]=function(_0x1109d4,_0x45f324){var _0x1a8b85={'raw':![],'where':{'id':_0x1109d4[_0xaf71('0x5f')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xaf71('0x3e')},{'model':db[_0xaf71('0x40')],'as':'Smtp'},{'model':db[_0xaf71('0x42')],'as':_0xaf71('0x43')}]},_0x3ff024={};_0x3ff024[_0xaf71('0x48')]=_[_0xaf71('0x4a')](db[_0xaf71('0x45')][_0xaf71('0x60')]);_0x3ff024['query']=_[_0xaf71('0x4a')](_0x1109d4[_0xaf71('0x49')]);_0x3ff024['filters']=_[_0xaf71('0x4c')](_0x3ff024[_0xaf71('0x48')],_0x3ff024['query']);_0x1a8b85[_0xaf71('0x4d')]=_['intersection'](_0x3ff024['model'],qs['fields'](_0x1109d4['query'][_0xaf71('0x4e')]));_0x1a8b85[_0xaf71('0x4d')]=_0x1a8b85[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x1a8b85[_0xaf71('0x4d')]:_0x3ff024[_0xaf71('0x48')];if(_0x1109d4[_0xaf71('0x49')][_0xaf71('0x61')]){_0x1a8b85['include']=[{'all':!![]}];}_0x1a8b85=_[_0xaf71('0x58')]({},_0x1a8b85,_0x1109d4[_0xaf71('0x5a')]);return db['MailAccount'][_0xaf71('0x62')](_0x1a8b85)[_0xaf71('0xf')](handleEntityNotFound(_0x45f324,null))[_0xaf71('0xf')](respondWithResult(_0x45f324,null))[_0xaf71('0x5d')](handleError(_0x45f324,null));};exports['update']=function(_0x4d2ec1,_0x5aa7cc){if(_0x4d2ec1[_0xaf71('0x63')]['id']){delete _0x4d2ec1[_0xaf71('0x63')]['id'];}var _0x53a992=_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x64')]==='custom'?null:_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x64')];var _0x91040c=_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x3e')]||{};var _0x40cb0b=_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x41')]||{};if(_0x53a992){_0x91040c[_0xaf71('0x39')]=getImapHost(_0x53a992);_0x91040c[_0xaf71('0x3a')]=0x3e1;_0x40cb0b[_0xaf71('0x39')]=getSmtpHost(_0x53a992);_0x40cb0b[_0xaf71('0x3a')]=0x24b;_0x40cb0b[_0xaf71('0x3b')]=![];}if(_0x40cb0b[_0xaf71('0x36')]){_0x40cb0b[_0xaf71('0x3b')]=![];}else{_0x40cb0b[_0xaf71('0x37')]=null;}if(!_0x91040c[_0xaf71('0x36')])_0x91040c[_0xaf71('0x37')]=null;_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x3e')]=_0x91040c;_0x4d2ec1['body'][_0xaf71('0x41')]=_0x40cb0b;return db['MailAccount'][_0xaf71('0x62')]({'where':{'id':_0x4d2ec1[_0xaf71('0x5f')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':_0xaf71('0x43')}]})[_0xaf71('0xf')](handleEntityNotFound(_0x5aa7cc,null))[_0xaf71('0xf')](function(_0x41c949){if(!_0x41c949)throw new Error(_0xaf71('0x65'));if(_0x41c949[_0xaf71('0x3c')])delete _0x4d2ec1[_0xaf71('0x63')]['Imap'];return _0x41c949;})[_0xaf71('0xf')](saveUpdates(_0x4d2ec1[_0xaf71('0x63')],null))[_0xaf71('0xf')](function(_0x3c156c){if(!_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x3e')])return _0x3c156c;return db[_0xaf71('0x3f')]['update'](_0x4d2ec1[_0xaf71('0x63')]['Imap'],{'where':{'MailAccountId':_0x3c156c['id']}})[_0xaf71('0xf')](function(){return _0x3c156c;});})[_0xaf71('0xf')](function(_0x4dc8d9){if(!_0x4d2ec1[_0xaf71('0x63')]['Smtp'])return _0x4dc8d9;return db[_0xaf71('0x40')]['update'](_0x4d2ec1[_0xaf71('0x63')][_0xaf71('0x41')],{'where':{'MailAccountId':_0x4dc8d9['id']}})[_0xaf71('0xf')](function(){return _0x4dc8d9;});})[_0xaf71('0xf')](respondWithResult(_0x5aa7cc,null))['catch'](handleError(_0x5aa7cc,null));};exports[_0xaf71('0x66')]=function(_0x11f3ed,_0xb636f2){return db['MailAccount']['describe']()[_0xaf71('0xf')](respondWithResult(_0xb636f2,null))['catch'](handleError(_0xb636f2,null));};exports[_0xaf71('0x67')]=function(_0x3884a7,_0x4a799c){if(_0x3884a7[_0xaf71('0x63')]['id']){delete _0x3884a7['body']['id'];}return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x3884a7[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x4a799c,null))[_0xaf71('0xf')](function(_0x2144ec){if(_0x2144ec){_0x3884a7[_0xaf71('0x63')][_0xaf71('0x68')]=_0x2144ec['id'];return db[_0xaf71('0x69')]['create'](_0x3884a7['body']);}})['then'](respondWithResult(_0x4a799c,null))['catch'](handleError(_0x4a799c,null));};exports[_0xaf71('0x6a')]=function(_0x120502,_0x40e5b9){var _0x17f59b={'raw':![],'where':{}};var _0x4787b7={};var _0x4c947e={'count':0x0,'rows':[]};return db['MailAccount'][_0xaf71('0x6b')]({'where':{'id':_0x120502[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x40e5b9,null))[_0xaf71('0xf')](function(_0x46176e){if(_0x46176e){_0x4787b7[_0xaf71('0x48')]=_[_0xaf71('0x4a')](db[_0xaf71('0x69')][_0xaf71('0x60')]);_0x4787b7[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x120502[_0xaf71('0x49')]);_0x4787b7[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x4787b7['model'],_0x4787b7[_0xaf71('0x49')]);_0x17f59b[_0xaf71('0x4d')]=_[_0xaf71('0x4c')](_0x4787b7[_0xaf71('0x48')],qs[_0xaf71('0x4e')](_0x120502['query']['fields']));_0x17f59b[_0xaf71('0x4d')]=_0x17f59b[_0xaf71('0x4d')]['length']?_0x17f59b[_0xaf71('0x4d')]:_0x4787b7[_0xaf71('0x48')];if(!_0x120502[_0xaf71('0x49')][_0xaf71('0x50')](_0xaf71('0x51'))){_0x17f59b[_0xaf71('0x52')]=qs['limit'](_0x120502[_0xaf71('0x49')]['limit']);_0x17f59b[_0xaf71('0x1b')]=qs[_0xaf71('0x1b')](_0x120502[_0xaf71('0x49')][_0xaf71('0x1b')]);}_0x17f59b[_0xaf71('0x53')]=qs[_0xaf71('0x54')](_0x120502['query']['sort']);_0x17f59b[_0xaf71('0x55')]=qs['filters'](_[_0xaf71('0x56')](_0x120502['query'],_0x4787b7[_0xaf71('0x4b')]));_0x17f59b[_0xaf71('0x55')][_0xaf71('0x68')]=_0x46176e['id'];if(_0x120502[_0xaf71('0x49')][_0xaf71('0x57')]){_0x17f59b[_0xaf71('0x55')]=_['merge'](_0x17f59b['where'],{'$or':_[_0xaf71('0x44')](_0x17f59b[_0xaf71('0x4d')],function(_0x159e4b){var _0x1396b1={};_0x1396b1[_0x159e4b]={'$like':'%'+_0x120502[_0xaf71('0x49')][_0xaf71('0x57')]+'%'};return _0x1396b1;})});}_0x17f59b=_[_0xaf71('0x58')]({},_0x17f59b,_0x120502[_0xaf71('0x5a')]);return db[_0xaf71('0x69')][_0xaf71('0x1d')]({'where':_0x17f59b['where']})[_0xaf71('0xf')](function(_0x4fcae3){_0x4c947e[_0xaf71('0x1d')]=_0x4fcae3;if(_0x120502[_0xaf71('0x49')][_0xaf71('0x61')]){_0x17f59b['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x17f59b);})[_0xaf71('0xf')](function(_0x1111c3){_0x4c947e[_0xaf71('0x5c')]=_0x1111c3;return _0x4c947e;});}})[_0xaf71('0xf')](respondWithFilteredResult(_0x40e5b9,_0x17f59b))[_0xaf71('0x5d')](handleError(_0x40e5b9,null));};exports[_0xaf71('0x6c')]=function(_0x2ba7c6,_0x42e468){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x2ba7c6['params']['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x42e468,null))[_0xaf71('0xf')](function(_0x4dd0d4){if(_0x4dd0d4){return _0x4dd0d4[_0xaf71('0x6c')](_0x2ba7c6[_0xaf71('0x49')][_0xaf71('0x6d')]);}})[_0xaf71('0xf')](respondWithStatusCode(_0x42e468,null))[_0xaf71('0x5d')](handleError(_0x42e468,null));};exports['addAnswer']=function(_0x3684af,_0x41730b){if(_0x3684af[_0xaf71('0x63')]['id']){delete _0x3684af[_0xaf71('0x63')]['id'];}return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x3684af[_0xaf71('0x5f')]['id']}})['then'](handleEntityNotFound(_0x41730b,null))[_0xaf71('0xf')](function(_0x120ec5){if(_0x120ec5){_0x3684af[_0xaf71('0x63')][_0xaf71('0x68')]=_0x120ec5['id'];return db[_0xaf71('0x6e')][_0xaf71('0x6f')](_0x3684af['body']);}})['then'](respondWithResult(_0x41730b,null))[_0xaf71('0x5d')](handleError(_0x41730b,null));};exports[_0xaf71('0x70')]=function(_0x343366,_0x2c34ca){var _0x4c2744={'raw':![],'where':{}};var _0x1a13e9={};var _0x48285e={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x343366['params']['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x2c34ca,null))[_0xaf71('0xf')](function(_0x4e4651){if(_0x4e4651){_0x1a13e9[_0xaf71('0x48')]=_[_0xaf71('0x4a')](db[_0xaf71('0x6e')][_0xaf71('0x60')]);_0x1a13e9[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x343366[_0xaf71('0x49')]);_0x1a13e9[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x1a13e9[_0xaf71('0x48')],_0x1a13e9[_0xaf71('0x49')]);_0x4c2744['attributes']=_[_0xaf71('0x4c')](_0x1a13e9[_0xaf71('0x48')],qs[_0xaf71('0x4e')](_0x343366[_0xaf71('0x49')][_0xaf71('0x4e')]));_0x4c2744[_0xaf71('0x4d')]=_0x4c2744[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x4c2744[_0xaf71('0x4d')]:_0x1a13e9[_0xaf71('0x48')];if(!_0x343366[_0xaf71('0x49')][_0xaf71('0x50')]('nolimit')){_0x4c2744[_0xaf71('0x52')]=qs[_0xaf71('0x52')](_0x343366[_0xaf71('0x49')][_0xaf71('0x52')]);_0x4c2744[_0xaf71('0x1b')]=qs['offset'](_0x343366[_0xaf71('0x49')]['offset']);}_0x4c2744[_0xaf71('0x53')]=qs[_0xaf71('0x54')](_0x343366[_0xaf71('0x49')][_0xaf71('0x54')]);_0x4c2744[_0xaf71('0x55')]=qs[_0xaf71('0x4b')](_['pick'](_0x343366[_0xaf71('0x49')],_0x1a13e9[_0xaf71('0x4b')]));_0x4c2744[_0xaf71('0x55')][_0xaf71('0x68')]=_0x4e4651['id'];if(_0x343366['query']['filter']){_0x4c2744[_0xaf71('0x55')]=_[_0xaf71('0x58')](_0x4c2744[_0xaf71('0x55')],{'$or':_[_0xaf71('0x44')](_0x4c2744[_0xaf71('0x4d')],function(_0x3970e4){var _0x4f7cd3={};_0x4f7cd3[_0x3970e4]={'$like':'%'+_0x343366[_0xaf71('0x49')][_0xaf71('0x57')]+'%'};return _0x4f7cd3;})});}_0x4c2744=_[_0xaf71('0x58')]({},_0x4c2744,_0x343366['options']);return db[_0xaf71('0x6e')]['count']({'where':_0x4c2744[_0xaf71('0x55')]})[_0xaf71('0xf')](function(_0x514231){_0x48285e[_0xaf71('0x1d')]=_0x514231;if(_0x343366[_0xaf71('0x49')][_0xaf71('0x61')]){_0x4c2744[_0xaf71('0x71')]=[{'all':!![]}];}return db['CannedAnswer'][_0xaf71('0x5b')](_0x4c2744);})['then'](function(_0x2eb947){_0x48285e[_0xaf71('0x5c')]=_0x2eb947;return _0x48285e;});}})[_0xaf71('0xf')](respondWithFilteredResult(_0x2c34ca,_0x4c2744))[_0xaf71('0x5d')](handleError(_0x2c34ca,null));};exports[_0xaf71('0x72')]=function(_0x4bb702,_0x2fc18f){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x4bb702[_0xaf71('0x5f')]['id']}})['then'](handleEntityNotFound(_0x2fc18f,null))[_0xaf71('0xf')](function(_0x2204a2){if(_0x2204a2){return _0x2204a2[_0xaf71('0x72')](_0x4bb702[_0xaf71('0x49')][_0xaf71('0x6d')]);}})['then'](respondWithStatusCode(_0x2fc18f,null))[_0xaf71('0x5d')](handleError(_0x2fc18f,null));};exports[_0xaf71('0x6f')]=function(_0x31511c,_0xdcdbad){var _0x475357={'name':_0x31511c[_0xaf71('0x63')][_0xaf71('0x25')],'key':_0x31511c[_0xaf71('0x63')][_0xaf71('0x73')],'provider':_0x31511c[_0xaf71('0x63')][_0xaf71('0x64')]===_0xaf71('0x74')?null:_0x31511c[_0xaf71('0x63')][_0xaf71('0x64')],'email':_0x31511c['body'][_0xaf71('0x75')],'ListId':_0x31511c[_0xaf71('0x63')]['ListId'],'active':!_[_0xaf71('0x76')](_0x31511c[_0xaf71('0x63')][_0xaf71('0x77')])?_0x31511c['body'][_0xaf71('0x77')]:!![],'description':_0x31511c[_0xaf71('0x63')][_0xaf71('0x78')]||null};var _0x15eeed=getAuthenticationOptions(_0x475357[_0xaf71('0x64')],_0x31511c[_0xaf71('0x63')]);_0x475357[_0xaf71('0x3e')]=_0x15eeed[_0xaf71('0x3e')];_0x475357[_0xaf71('0x41')]=_0x15eeed[_0xaf71('0x41')];return db[_0xaf71('0x45')][_0xaf71('0x6f')](_0x475357,{'include':[{'model':db[_0xaf71('0x40')],'as':_0xaf71('0x41')},{'model':db[_0xaf71('0x3f')],'as':'Imap'}]})[_0xaf71('0xf')](function(_0x49e684){var _0x1f702b=_0x31511c[_0xaf71('0x33')]['get']({'plain':!![]});if(!_0x1f702b)throw new Error(_0xaf71('0x79'));if(_0x1f702b[_0xaf71('0x7a')]===_0xaf71('0x33')){var _0xeaf934=_0x49e684['get']({'plain':!![]});return db[_0xaf71('0x7b')]['find']({'where':{'name':'MailAccounts','userProfileId':_0x1f702b[_0xaf71('0x7c')]},'raw':!![]})[_0xaf71('0xf')](function(_0xbf1119){if(_0xbf1119&&_0xbf1119[_0xaf71('0x7d')]===0x0){return db['UserProfileResource'][_0xaf71('0x6f')]({'name':_0xeaf934[_0xaf71('0x25')],'resourceId':_0xeaf934['id'],'type':_0xbf1119[_0xaf71('0x25')],'sectionId':_0xbf1119['id']},{})[_0xaf71('0xf')](function(){return _0x49e684;});}else{return _0x49e684;}})[_0xaf71('0x5d')](function(_0x440176){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x440176);throw _0x440176;});}return _0x49e684;})[_0xaf71('0xf')](respondWithResult(_0xdcdbad,0xc9))[_0xaf71('0x5d')](handleError(_0xdcdbad,null));};exports[_0xaf71('0x7e')]=function(_0x934e08,_0x34a2ae){return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x934e08[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x34a2ae,null))['then'](function(_0x3d773c){if(_0x3d773c){return _0x3d773c['getImap']();}return null;})['then'](respondWithResult(_0x34a2ae,null))['catch'](handleError(_0x34a2ae,null));};exports[_0xaf71('0x7f')]=function(_0x24f89b,_0xe4e654){if(_0x24f89b[_0xaf71('0x63')]['id']){delete _0x24f89b[_0xaf71('0x63')]['id'];}return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x24f89b[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0xe4e654,null))[_0xaf71('0xf')](function(_0x2cbd47){if(_0x2cbd47){_0x24f89b[_0xaf71('0x63')]['MailAccountId']=_0x2cbd47['id'];return db[_0xaf71('0x3f')][_0xaf71('0x6f')](_0x24f89b[_0xaf71('0x63')]);}})[_0xaf71('0xf')](respondWithResult(_0xe4e654,null))['catch'](handleError(_0xe4e654,null));};exports[_0xaf71('0x80')]=function(_0x5778a3,_0x49ef94){return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x5778a3['params']['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x49ef94,null))['then'](function(_0x120bd8){if(_0x120bd8){return _0x120bd8['setImap'](null);}return null;})[_0xaf71('0xf')](respondWithStatusCode(_0x49ef94,null))[_0xaf71('0x5d')](handleError(_0x49ef94,null));};exports['getSmtp']=function(_0xef31b8,_0x5d0972){return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0xef31b8[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x5d0972,null))[_0xaf71('0xf')](function(_0x2e9dc9){if(_0x2e9dc9){return _0x2e9dc9[_0xaf71('0x81')]();}return null;})[_0xaf71('0xf')](respondWithResult(_0x5d0972,null))['catch'](handleError(_0x5d0972,null));};exports['addSmtp']=function(_0x49da2a,_0x1dd816){if(_0x49da2a['body']['id']){delete _0x49da2a[_0xaf71('0x63')]['id'];}return db[_0xaf71('0x45')]['find']({'where':{'id':_0x49da2a[_0xaf71('0x5f')]['id']}})['then'](handleEntityNotFound(_0x1dd816,null))[_0xaf71('0xf')](function(_0x394b87){if(_0x394b87){_0x49da2a['body']['MailAccountId']=_0x394b87['id'];return db[_0xaf71('0x40')]['create'](_0x49da2a[_0xaf71('0x63')]);}})[_0xaf71('0xf')](respondWithResult(_0x1dd816,null))[_0xaf71('0x5d')](handleError(_0x1dd816,null));};exports[_0xaf71('0x82')]=function(_0x4f6376,_0x50ba3c){return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x4f6376[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x50ba3c,null))[_0xaf71('0xf')](function(_0x266929){if(_0x266929){return _0x266929[_0xaf71('0x83')](null);}return null;})[_0xaf71('0xf')](respondWithStatusCode(_0x50ba3c,null))['catch'](handleError(_0x50ba3c,null));};exports[_0xaf71('0x84')]=function(_0x1f2f48,_0x1f52f6){return db[_0xaf71('0x85')][_0xaf71('0x62')]({'where':{'id':_0x1f2f48['params']['id']}})['then'](handleEntityNotFound(_0x1f52f6,null))[_0xaf71('0xf')](function(_0x3b8eea){if(_0x3b8eea){return _0x3b8eea[_0xaf71('0x84')](_0x1f2f48[_0xaf71('0x63')][_0xaf71('0x6d')],_[_0xaf71('0x86')](_0x1f2f48['body'],[_0xaf71('0x6d'),'id'])||{});}})[_0xaf71('0xf')](respondWithResult(_0x1f52f6,null))[_0xaf71('0x5d')](handleError(_0x1f52f6,null));};exports['getInteractions']=function(_0x191be0,_0x434a38){var _0x59dc2e={'raw':![],'where':{}};var _0x5098ed={};var _0x4b2d5d={'count':0x0,'rows':[]};return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x191be0[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x434a38,null))[_0xaf71('0xf')](function(_0x8e813d){if(_0x8e813d){_0x5098ed['model']=_['keys'](db['MailInteraction']['rawAttributes']);_0x5098ed[_0xaf71('0x49')]=_['keys'](_0x191be0[_0xaf71('0x49')]);_0x5098ed[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x5098ed[_0xaf71('0x48')],_0x5098ed[_0xaf71('0x49')]);_0x59dc2e['attributes']=_[_0xaf71('0x4c')](_0x5098ed['model'],qs['fields'](_0x191be0['query'][_0xaf71('0x4e')]));_0x59dc2e[_0xaf71('0x4d')]=_0x59dc2e[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x59dc2e[_0xaf71('0x4d')]:_0x5098ed['model'];if(!_0x191be0[_0xaf71('0x49')][_0xaf71('0x50')]('nolimit')){_0x59dc2e[_0xaf71('0x52')]=qs['limit'](_0x191be0[_0xaf71('0x49')][_0xaf71('0x52')]);_0x59dc2e[_0xaf71('0x1b')]=qs[_0xaf71('0x1b')](_0x191be0['query'][_0xaf71('0x1b')]);}_0x59dc2e[_0xaf71('0x53')]=qs[_0xaf71('0x54')](_0x191be0[_0xaf71('0x49')][_0xaf71('0x54')]);_0x59dc2e['where']=qs['filters'](_['pick'](_0x191be0[_0xaf71('0x49')],_0x5098ed[_0xaf71('0x4b')]));_0x59dc2e['where'][_0xaf71('0x68')]=_0x8e813d['id'];if(_0x191be0[_0xaf71('0x49')]['filter']){_0x59dc2e[_0xaf71('0x55')]=_[_0xaf71('0x58')](_0x59dc2e[_0xaf71('0x55')],{'$or':_[_0xaf71('0x44')](_0x59dc2e[_0xaf71('0x4d')],function(_0x43ec75){var _0x53fccb={};_0x53fccb[_0x43ec75]={'$like':'%'+_0x191be0['query'][_0xaf71('0x57')]+'%'};return _0x53fccb;})});}_0x59dc2e=_[_0xaf71('0x58')]({},_0x59dc2e,_0x191be0['options']);return db[_0xaf71('0x85')][_0xaf71('0x1d')]({'where':_0x59dc2e[_0xaf71('0x55')]})[_0xaf71('0xf')](function(_0x12a1ac){_0x4b2d5d[_0xaf71('0x1d')]=_0x12a1ac;if(_0x191be0[_0xaf71('0x49')][_0xaf71('0x61')]){_0x59dc2e[_0xaf71('0x71')]=[{'model':db[_0xaf71('0x87')],'as':_0xaf71('0x88'),'required':![]},{'model':db[_0xaf71('0x89')],'as':_0xaf71('0x8a'),'attributes':[_0xaf71('0x25'),_0xaf71('0x8b'),'internal'],'required':![]},{'model':db['Tag'],'as':_0xaf71('0x8c'),'attributes':['id','name',_0xaf71('0x8d')],'where':_0x191be0[_0xaf71('0x49')][_0xaf71('0x8e')]?{'id':_0x191be0[_0xaf71('0x49')]['tag']}:undefined,'required':_0x191be0[_0xaf71('0x49')][_0xaf71('0x8e')]?!![]:![]}];}return db['MailInteraction']['findAll'](_0x59dc2e);})[_0xaf71('0xf')](function(_0x5e8301){_0x4b2d5d[_0xaf71('0x5c')]=_0x5e8301;return _0x4b2d5d;});}})['then'](respondWithFilteredResult(_0x434a38,_0x59dc2e))['catch'](handleError(_0x434a38,null));};exports[_0xaf71('0x8f')]=function addApplications(_0x2ca89b,_0x575bfb){var _0x35f18a=_0x2ca89b[_0xaf71('0x5f')]['id'];var _0x5bbd55=_0x2ca89b['body'];var _0x1128a9=0xc8;var _0x4ee53b=null;return db['sequelize'][_0xaf71('0x90')]({'isolationLevel':db[_0xaf71('0x91')][_0xaf71('0x92')][_0xaf71('0x93')][_0xaf71('0x94')]},function(_0x24555b){return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x35f18a},'transaction':_0x24555b})['then'](function(_0xffb58b){if(_0xffb58b){return db[_0xaf71('0x95')][_0xaf71('0x21')]({'where':{'MailAccountId':_0x35f18a},'transaction':_0x24555b})[_0xaf71('0xf')](function(){var _0x808c0e=_['map'](_0x5bbd55,function(_0x2ddbd6){_0x2ddbd6[_0xaf71('0x68')]=_0x35f18a;return _0x2ddbd6;});return db[_0xaf71('0x95')]['bulkCreate'](_0x808c0e,{'transaction':_0x24555b});});}else{_0x1128a9=0x194;_0x4ee53b=[];}});})[_0xaf71('0xf')](function(){if(_0x1128a9!==0x194){return db[_0xaf71('0x95')][_0xaf71('0x96')]({'where':{'MailAccountId':_0x35f18a},'order':_0xaf71('0x97')})[_0xaf71('0xf')](function(_0x3eadf7){_0x4ee53b=_0x3eadf7;});}})[_0xaf71('0x5d')](function(_0x34c956){_0x1128a9=0x1f4;logger[_0xaf71('0x13')](_0x34c956[_0xaf71('0x98')]);if(_0x34c956['name']){delete _0x34c956[_0xaf71('0x25')];}_0x4ee53b=_0x34c956;})[_0xaf71('0x99')](function(){if(_0x4ee53b===null){_0x575bfb[_0xaf71('0x18')](_0x1128a9);}else{if(_0x1128a9===0x1f4){_0x575bfb[_0xaf71('0x24')](_0x1128a9)[_0xaf71('0x26')](_0x4ee53b);}else{_0x575bfb[_0xaf71('0x24')](_0x1128a9)[_0xaf71('0x1a')](_0x4ee53b);}}});};exports['getApplications']=function(_0x3501b6,_0x1de5e4){var _0x2f6222={};var _0x1cb0b1={};var _0x2201db;var _0xf06df2;return db['MailAccount'][_0xaf71('0x6b')]({'where':{'id':_0x3501b6['params']['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x1de5e4,null))[_0xaf71('0xf')](function(_0x1a7453){if(_0x1a7453){_0x2201db=_0x1a7453;_0x1cb0b1[_0xaf71('0x48')]=_[_0xaf71('0x4a')](db[_0xaf71('0x95')][_0xaf71('0x60')]);_0x1cb0b1[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x3501b6[_0xaf71('0x49')]);_0x1cb0b1[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x1cb0b1[_0xaf71('0x48')],_0x1cb0b1['query']);_0x2f6222['attributes']=_[_0xaf71('0x4c')](_0x1cb0b1[_0xaf71('0x48')],qs[_0xaf71('0x4e')](_0x3501b6[_0xaf71('0x49')][_0xaf71('0x4e')]));_0x2f6222[_0xaf71('0x4d')]=_0x2f6222[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x2f6222[_0xaf71('0x4d')]:_0x1cb0b1[_0xaf71('0x48')];_0x2f6222[_0xaf71('0x53')]=qs[_0xaf71('0x54')](_0x3501b6['query'][_0xaf71('0x54')]);_0x2f6222['where']=qs[_0xaf71('0x4b')](_[_0xaf71('0x56')](_0x3501b6['query'],_0x1cb0b1[_0xaf71('0x4b')]));if(_0x3501b6[_0xaf71('0x49')][_0xaf71('0x57')]){_0x2f6222[_0xaf71('0x55')]=_[_0xaf71('0x58')](_0x2f6222['where'],{'$or':_['map'](_0x2f6222['attributes'],function(_0xa4db6b){var _0x5945af={};_0x5945af[_0xa4db6b]={'$like':'%'+_0x3501b6[_0xaf71('0x49')][_0xaf71('0x57')]+'%'};return _0x5945af;})});}_0x2f6222=_[_0xaf71('0x58')]({},_0x2f6222,_0x3501b6[_0xaf71('0x5a')]);return _0x2201db[_0xaf71('0x9a')](_0x2f6222);}})['then'](function(_0xca809){if(_0xca809){_0xf06df2=_0xca809[_0xaf71('0x4f')];if(!_0x3501b6[_0xaf71('0x49')][_0xaf71('0x50')](_0xaf71('0x51'))){_0x2f6222[_0xaf71('0x52')]=qs['limit'](_0x3501b6['query'][_0xaf71('0x52')]);_0x2f6222[_0xaf71('0x1b')]=qs[_0xaf71('0x1b')](_0x3501b6[_0xaf71('0x49')][_0xaf71('0x1b')]);}return _0x2201db['getApplications'](_0x2f6222);}})['then'](function(_0x59ab1f){if(_0x59ab1f){return _0x59ab1f?{'count':_0xf06df2,'rows':_0x59ab1f}:null;}})[_0xaf71('0xf')](respondWithResult(_0x1de5e4,null))[_0xaf71('0x5d')](handleError(_0x1de5e4,null));};exports[_0xaf71('0x9b')]=function(_0x45a056,_0x8a16e5){var _0x1e8ba4={'raw':!![],'where':{}};var _0x37a07b={};var _0x120528={'count':0x0,'rows':[]};return db['MailAccount'][_0xaf71('0x6b')]({'where':{'id':_0x45a056[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x8a16e5,null))['then'](function(_0x40515f){if(_0x40515f){_0x37a07b[_0xaf71('0x48')]=_['keys'](db[_0xaf71('0x9c')][_0xaf71('0x60')]);_0x37a07b[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x45a056['query']);_0x37a07b['filters']=_[_0xaf71('0x4c')](_0x37a07b['model'],_0x37a07b[_0xaf71('0x49')]);_0x1e8ba4['attributes']=_[_0xaf71('0x4c')](_0x37a07b['model'],qs[_0xaf71('0x4e')](_0x45a056[_0xaf71('0x49')][_0xaf71('0x4e')]));_0x1e8ba4[_0xaf71('0x4d')]=_0x1e8ba4[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x1e8ba4['attributes']:_0x37a07b[_0xaf71('0x48')];if(!_0x45a056[_0xaf71('0x49')][_0xaf71('0x50')](_0xaf71('0x51'))){_0x1e8ba4[_0xaf71('0x52')]=qs[_0xaf71('0x52')](_0x45a056[_0xaf71('0x49')][_0xaf71('0x52')]);_0x1e8ba4[_0xaf71('0x1b')]=qs['offset'](_0x45a056['query'][_0xaf71('0x1b')]);}_0x1e8ba4['order']=qs[_0xaf71('0x54')](_0x45a056['query'][_0xaf71('0x54')]);_0x1e8ba4[_0xaf71('0x55')]=qs[_0xaf71('0x4b')](_[_0xaf71('0x56')](_0x45a056[_0xaf71('0x49')],_0x37a07b['filters']));_0x1e8ba4['where'][_0xaf71('0x68')]=_0x40515f['id'];if(_0x45a056[_0xaf71('0x49')][_0xaf71('0x57')]){_0x1e8ba4[_0xaf71('0x55')]=_[_0xaf71('0x58')](_0x1e8ba4[_0xaf71('0x55')],{'$or':_[_0xaf71('0x44')](_0x1e8ba4[_0xaf71('0x4d')],function(_0x5f31a7){var _0x267295={};_0x267295[_0x5f31a7]={'$like':'%'+_0x45a056['query']['filter']+'%'};return _0x267295;})});}if(_0x45a056[_0xaf71('0x49')][_0xaf71('0x9d')]){var _0x9511c0=_0x45a056[_0xaf71('0x49')][_0xaf71('0x9d')][_0xaf71('0x9e')](',');var _0x5c00ee={};_0x5c00ee[_0x9511c0[0x0]]={'$gte':moment(_0x9511c0[0x1])[_0xaf71('0x9f')](_0xaf71('0xa0'))};_0x1e8ba4['where']=_[_0xaf71('0x58')](_0x1e8ba4[_0xaf71('0x55')],_0x5c00ee);}_0x1e8ba4=_[_0xaf71('0x58')]({},_0x1e8ba4,_0x45a056[_0xaf71('0x5a')]);return db['MailMessage'][_0xaf71('0x1d')]({'where':_0x1e8ba4[_0xaf71('0x55')]})[_0xaf71('0xf')](function(_0x4bf376){_0x120528[_0xaf71('0x1d')]=_0x4bf376;if(_0x45a056['query'][_0xaf71('0x61')]){_0x1e8ba4['include']=[{'all':!![]}];}return db[_0xaf71('0x9c')]['findAll'](_0x1e8ba4);})[_0xaf71('0xf')](function(_0x3b6f8f){if(_0x45a056['query'][_0xaf71('0xa1')]==='true'){for(var _0x399c4c=0x0;_0x399c4c<_0x3b6f8f['length'];_0x399c4c++){_0x3b6f8f[_0x399c4c]['body']=juice(_0x3b6f8f[_0x399c4c]['body']);}}_0x120528[_0xaf71('0x5c')]=_0x3b6f8f;return _0x120528;});}})[_0xaf71('0xf')](respondWithFilteredResult(_0x8a16e5,_0x1e8ba4))[_0xaf71('0x5d')](handleError(_0x8a16e5,null));};exports[_0xaf71('0x26')]=function(_0x92f8f0,_0x54655c){var _0x244ba2,_0x807799={},_0x4776fc;if(_0x92f8f0[_0xaf71('0x63')]['to']){_0x4776fc=_0x92f8f0[_0xaf71('0x63')]['to'][_0xaf71('0x9e')](',')[0x0];}return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x92f8f0[_0xaf71('0x5f')]['id']},'include':[{'model':db[_0xaf71('0xa2')],'as':_0xaf71('0xa3'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x4776fc},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xaf71('0x40')],'as':_0xaf71('0x41'),'raw':!![],'include':[{'model':db[_0xaf71('0xa4')],'as':'CloudProvider','raw':!![]}]}]})[_0xaf71('0xf')](handleEntityNotFound(_0x54655c,null))[_0xaf71('0xf')](function(_0x392efa){if(!_0x392efa)return;_0x244ba2=_0x392efa;if(!_0x392efa[_0xaf71('0x41')])throw new Error(_0xaf71('0xa5'));if(_[_0xaf71('0x76')](_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xa6')])){_0x92f8f0['body'][_0xaf71('0xa6')]=util[_0xaf71('0x9f')](_0xaf71('0xa7'),_0x392efa['name'],_0x392efa[_0xaf71('0x75')]||_0x392efa[_0xaf71('0x41')][_0xaf71('0x33')]);}if(_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xa8')]&&_0x92f8f0['body'][_0xaf71('0xa8')][_0xaf71('0x4f')]){for(var _0x4c2cb5=0x0;_0x4c2cb5<_0x92f8f0['body'][_0xaf71('0xa8')][_0xaf71('0x4f')];_0x4c2cb5+=0x1){_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xa8')][_0x4c2cb5]={'filename':_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xa8')][_0x4c2cb5]['name'],'path':path[_0xaf71('0xa9')](config[_0xaf71('0xaa')],_0xaf71('0xab'),_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xa8')][_0x4c2cb5][_0xaf71('0xac')])};}}var _0x15b11f=_0x392efa[_0xaf71('0xad')]();return respondWithRpcPromise(_0xaf71('0xae'),_0xaf71('0xaf'),{'account':_0x15b11f,'message':_0x92f8f0[_0xaf71('0x63')]});})[_0xaf71('0xf')](function(_0x13594d){if(!_0x13594d)return;_0x807799=_0x13594d;if(!_0x244ba2['List'])throw new Error(_0xaf71('0xb0'));if(_0x244ba2[_0xaf71('0xa3')][_0xaf71('0xb1')]['length'])return _0x244ba2['List']['Contacts'][0x0];return db[_0xaf71('0x87')][_0xaf71('0x6f')](_[_0xaf71('0x8')](_0x92f8f0['body'],{'firstName':_0x92f8f0[_0xaf71('0x63')]['to'],'email':_0x92f8f0[_0xaf71('0x63')]['to'],'phone':_0x92f8f0[_0xaf71('0x63')]['to'],'ListId':_0x244ba2[_0xaf71('0xb2')]}));})[_0xaf71('0xf')](function(_0x1390b4){if(!_0x1390b4)return;var _0x298807={'UserId':_0x92f8f0[_0xaf71('0x33')]['id'],'ContactId':_0x1390b4['id'],'MailAccountId':_0x244ba2['id'],'inReplyTo':_0x807799[_0xaf71('0xb3')],'to':_0x92f8f0[_0xaf71('0x63')]['from'],'cc':_0x92f8f0[_0xaf71('0x63')]['cc'],'subject':_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xb4')],'attach':_0x92f8f0['body']['attach'],'firstMsgDirection':_0xaf71('0xb5'),'lastMsgAt':moment()[_0xaf71('0x9f')](_0xaf71('0xa0')),'lastMsgDirection':_0xaf71('0xb5'),'Messages':[_[_0xaf71('0x58')](_0x92f8f0[_0xaf71('0x63')],{'messageId':_0x807799[_0xaf71('0xb3')],'sentAt':moment()[_0xaf71('0x9f')](_0xaf71('0xa0')),'read':!![],'MailAccountId':_0x244ba2['id'],'UserId':_0x92f8f0[_0xaf71('0x33')]['id'],'ContactId':_0x1390b4['id']})]};if(_0x92f8f0['body'][_0xaf71('0xb6')]){_0x298807=_[_0xaf71('0x58')](_0x298807,_0x92f8f0[_0xaf71('0x63')][_0xaf71('0xb6')]);}return db['MailInteraction']['create'](_0x298807,{'include':[{'model':db['MailMessage'],'as':_0xaf71('0xb7')}]});})[_0xaf71('0xf')](respondWithResult(_0x54655c,null))[_0xaf71('0x5d')](handleError(_0x54655c,null));};exports[_0xaf71('0xb8')]=function(_0x2e40ca,_0x450d7e){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x2e40ca[_0xaf71('0x5f')]['id']},'include':[{'model':db[_0xaf71('0x40')],'as':_0xaf71('0x41'),'raw':!![],'include':[{'model':db[_0xaf71('0xa4')],'as':'CloudProvider','raw':!![]}]}]})[_0xaf71('0xf')](handleEntityNotFound(_0x450d7e,null))[_0xaf71('0xf')](function(_0x536e48){if(!_0x536e48['Smtp'])return;var _0x2d194b=_0x536e48[_0xaf71('0xad')]();return respondWithRpcPromise('VerifySmtp',_0xaf71('0xb8'),{'account':_0x2d194b});})[_0xaf71('0xf')](respondWithResult(_0x450d7e,null))[_0xaf71('0x5d')](handleError(_0x450d7e,null));};exports[_0xaf71('0x21')]=function(_0x3b6656,_0x8900ac){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x3b6656[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x8900ac,null))[_0xaf71('0xf')](function(_0x2d6959){if(_0x2d6959&&_0x2d6959[_0xaf71('0x3c')]){throw new db[(_0xaf71('0xb9'))]['ValidationError'](_0xaf71('0xba'));}return _0x2d6959;})[_0xaf71('0xf')](removeEntity(_0x8900ac,null))['catch'](handleError(_0x8900ac,null));};exports['addAgents']=function(_0xbd0a12,_0x937aa5){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0xbd0a12[_0xaf71('0x5f')]['id']}})[_0xaf71('0xf')](handleEntityNotFound(_0x937aa5,null))['then'](function(_0x118692){if(_0x118692){return _0x118692[_0xaf71('0xbb')](_0xbd0a12[_0xaf71('0x63')][_0xaf71('0x6d')],_['omit'](_0xbd0a12[_0xaf71('0x63')],[_0xaf71('0x6d'),'id'])||{})[_0xaf71('0xbc')](function(_0x5da742){for(var _0x398e00=0x0;_0x398e00<_0xbd0a12[_0xaf71('0x63')][_0xaf71('0x6d')][_0xaf71('0x4f')];_0x398e00+=0x1){socket[_0xaf71('0xbd')](_0xaf71('0xbe'),{'UserId':Number(_0xbd0a12['body'][_0xaf71('0x6d')][_0x398e00]),'MailAccountId':Number(_0xbd0a12[_0xaf71('0x5f')]['id'])});}return _0x5da742;});}})['then'](respondWithResult(_0x937aa5,null))[_0xaf71('0x5d')](handleError(_0x937aa5,null));};exports[_0xaf71('0xbf')]=function(_0x5aa06a,_0x48a28c){return db[_0xaf71('0x45')][_0xaf71('0x62')]({'where':{'id':_0x5aa06a['params']['id']}})['then'](handleEntityNotFound(_0x48a28c,null))[_0xaf71('0xf')](function(_0x2d14ec){if(_0x2d14ec){return _0x2d14ec[_0xaf71('0xbf')](_0x5aa06a[_0xaf71('0x49')][_0xaf71('0x6d')])[_0xaf71('0xf')](function(){if(_[_0xaf71('0xc0')](_0x5aa06a[_0xaf71('0x49')][_0xaf71('0x6d')])){for(var _0x28765b=0x0;_0x28765b<_0x5aa06a[_0xaf71('0x49')][_0xaf71('0x6d')][_0xaf71('0x4f')];_0x28765b+=0x1){socket['emit']('userMailAccount:remove',{'UserId':Number(_0x5aa06a[_0xaf71('0x49')][_0xaf71('0x6d')][_0x28765b]),'MailAccountId':Number(_0x5aa06a[_0xaf71('0x5f')]['id'])});}}else{socket['emit'](_0xaf71('0xc1'),{'UserId':Number(_0x5aa06a[_0xaf71('0x49')]['ids']),'MailAccountId':Number(_0x5aa06a['params']['id'])});}});}})[_0xaf71('0xf')](respondWithStatusCode(_0x48a28c,null))[_0xaf71('0x5d')](handleError(_0x48a28c,null));};exports['getAgents']=function(_0x2528e3,_0x2aaf53){var _0x926825={};var _0x258743={};var _0x4a6533;var _0x1ec08e;return db[_0xaf71('0x45')][_0xaf71('0x6b')]({'where':{'id':_0x2528e3['params']['id']}})['then'](handleEntityNotFound(_0x2aaf53,null))['then'](function(_0x6f6d3){if(_0x6f6d3){_0x4a6533=_0x6f6d3;_0x258743[_0xaf71('0x48')]=_[_0xaf71('0x4a')](db[_0xaf71('0x89')]['rawAttributes']);_0x258743[_0xaf71('0x49')]=_[_0xaf71('0x4a')](_0x2528e3[_0xaf71('0x49')]);_0x258743[_0xaf71('0x4b')]=_[_0xaf71('0x4c')](_0x258743['model'],_0x258743[_0xaf71('0x49')]);_0x926825[_0xaf71('0x4d')]=_[_0xaf71('0x4c')](_0x258743[_0xaf71('0x48')],qs[_0xaf71('0x4e')](_0x2528e3[_0xaf71('0x49')]['fields']));_0x926825['attributes']=_0x926825[_0xaf71('0x4d')][_0xaf71('0x4f')]?_0x926825['attributes']:_0x258743[_0xaf71('0x48')];_0x926825['order']=qs[_0xaf71('0x54')](_0x2528e3[_0xaf71('0x49')][_0xaf71('0x54')]);_0x926825[_0xaf71('0x55')]=qs[_0xaf71('0x4b')](_[_0xaf71('0x56')](_0x2528e3[_0xaf71('0x49')],_0x258743[_0xaf71('0x4b')]));if(_0x2528e3[_0xaf71('0x49')][_0xaf71('0x57')]){_0x926825['where']=_['merge'](_0x926825[_0xaf71('0x55')],{'$or':_[_0xaf71('0x44')](_0x926825['attributes'],function(_0x365176){var _0x35fe1c={};_0x35fe1c[_0x365176]={'$like':'%'+_0x2528e3[_0xaf71('0x49')]['filter']+'%'};return _0x35fe1c;})});}_0x926825=_[_0xaf71('0x58')]({},_0x926825,_0x2528e3['options']);return _0x4a6533[_0xaf71('0xc2')](_0x926825);}})[_0xaf71('0xf')](function(_0x403893){if(_0x403893){_0x1ec08e=_0x403893[_0xaf71('0x4f')];if(!_0x2528e3[_0xaf71('0x49')][_0xaf71('0x50')](_0xaf71('0x51'))){_0x926825[_0xaf71('0x52')]=qs[_0xaf71('0x52')](_0x2528e3['query']['limit']);_0x926825[_0xaf71('0x1b')]=qs[_0xaf71('0x1b')](_0x2528e3[_0xaf71('0x49')][_0xaf71('0x1b')]);}return _0x4a6533[_0xaf71('0xc2')](_0x926825);}})[_0xaf71('0xf')](function(_0x3508cd){if(_0x3508cd){return _0x3508cd?{'count':_0x1ec08e,'rows':_0x3508cd}:null;}})['then'](respondWithResult(_0x2aaf53,null))[_0xaf71('0x5d')](handleError(_0x2aaf53,null));};
\ No newline at end of file
index 812171f..9143d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee9c=['setMaxListeners','save','emit','hasOwnProperty','hook','exports','../../mysqldb','MailAccount'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0xee9c,0x1e6));var _0xcee9=function(_0x2bfe52,_0x43946e){_0x2bfe52=_0x2bfe52-0x0;var _0x1cf649=_0xee9c[_0x2bfe52];return _0x1cf649;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0xcee9('0x0'))['db'][_0xcee9('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xcee9('0x2')](0x0);var events={'afterCreate':_0xcee9('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5e56ca){return function(_0x192063,_0x54d95f,_0x4cf614){MailAccountEvents[_0xcee9('0x4')](_0x5e56ca+':'+_0x192063['id'],_0x192063);MailAccountEvents['emit'](_0x5e56ca,_0x192063);_0x4cf614(null);};}for(var e in events){if(events[_0xcee9('0x5')](e)){var event=events[e];MailAccount[_0xcee9('0x6')](e,emitEvent(event));}}module[_0xcee9('0x7')]=MailAccountEvents;
\ No newline at end of file
+var _0xa1b4=['save','update','emit','hook','exports','events','../../mysqldb','MailAccount','setMaxListeners'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0xa1b4,0x83));var _0x4a1b=function(_0xce93c,_0x555be5){_0xce93c=_0xce93c-0x0;var _0x230720=_0xa1b4[_0xce93c];return _0x230720;};'use strict';var EventEmitter=require(_0x4a1b('0x0'));var MailAccount=require(_0x4a1b('0x1'))['db'][_0x4a1b('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x4a1b('0x3')](0x0);var events={'afterCreate':_0x4a1b('0x4'),'afterUpdate':_0x4a1b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x49ed53){return function(_0x1a6b52,_0xf9f868,_0x2bd33e){MailAccountEvents[_0x4a1b('0x6')](_0x49ed53+':'+_0x1a6b52['id'],_0x1a6b52);MailAccountEvents[_0x4a1b('0x6')](_0x49ed53,_0x1a6b52);_0x2bd33e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x4a1b('0x7')](e,emitEvent(event));}}module[_0x4a1b('0x8')]=MailAccountEvents;
\ No newline at end of file
index 3b1dcc3..e9f8ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b92=['data5','pass','./mailAccount.attributes','define','custom','service','provider','host','Smtp','port','secure','authentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','user'];(function(_0xc84e3,_0xd631b){var _0x437a90=function(_0x584223){while(--_0x584223){_0xc84e3['push'](_0xc84e3['shift']());}};_0x437a90(++_0xd631b);}(_0x3b92,0x19a));var _0x23b9=function(_0x45ffc0,_0x4f090b){_0x45ffc0=_0x45ffc0-0x0;var _0x1f0074=_0x3b92[_0x45ffc0];return _0x1f0074;};'use strict';var attributes=require(_0x23b9('0x0'));module['exports']=function(_0x127ec3){return _0x127ec3[_0x23b9('0x1')]('MailAccount',attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x2610dd=this;var _0x4f868e={'id':_0x2610dd['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2610dd['provider']!==_0x23b9('0x2')){_0x4f868e[_0x23b9('0x3')]=_0x2610dd[_0x23b9('0x4')];}else{_0x4f868e[_0x23b9('0x5')]=_0x2610dd[_0x23b9('0x6')][_0x23b9('0x5')];_0x4f868e[_0x23b9('0x7')]=_0x2610dd[_0x23b9('0x6')][_0x23b9('0x7')];_0x4f868e[_0x23b9('0x8')]=_0x2610dd['Smtp'][_0x23b9('0x8')];}if(_0x2610dd[_0x23b9('0x6')][_0x23b9('0x9')]){if(_0x2610dd[_0x23b9('0x6')]['modernAuthentication']){if(!_0x2610dd['Smtp'][_0x23b9('0xa')])throw new Error(_0x23b9('0xb'));_0x4f868e[_0x23b9('0xc')]={'type':_0x23b9('0xd'),'user':_0x2610dd[_0x23b9('0x6')][_0x23b9('0xe')],'accessToken':_0x2610dd[_0x23b9('0x6')][_0x23b9('0xa')][_0x23b9('0xf')]};}else{_0x4f868e[_0x23b9('0xc')]={'user':_0x2610dd[_0x23b9('0x6')]['user'],'pass':_0x2610dd[_0x23b9('0x6')][_0x23b9('0x10')]};}}return _0x4f868e;}}});};
\ No newline at end of file
+var _0x20ef=['secure','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','data5','user','pass','./mailAccount.attributes','exports','MailAccount','mail_accounts','provider','custom','service','host','Smtp','port'];(function(_0x312abc,_0x17f25c){var _0x314298=function(_0x1d2e48){while(--_0x1d2e48){_0x312abc['push'](_0x312abc['shift']());}};_0x314298(++_0x17f25c);}(_0x20ef,0x126));var _0xf20e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x20ef[_0x3dd15e];return _0x231fd0;};'use strict';var attributes=require(_0xf20e('0x0'));module[_0xf20e('0x1')]=function(_0x2366c6){return _0x2366c6['define'](_0xf20e('0x2'),attributes,{'tableName':_0xf20e('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x509b5c=this;var _0x2226c1={'id':_0x509b5c['id'],'tls':{'rejectUnauthorized':![]}};if(_0x509b5c[_0xf20e('0x4')]!==_0xf20e('0x5')){_0x2226c1[_0xf20e('0x6')]=_0x509b5c[_0xf20e('0x4')];}else{_0x2226c1[_0xf20e('0x7')]=_0x509b5c[_0xf20e('0x8')]['host'];_0x2226c1[_0xf20e('0x9')]=_0x509b5c[_0xf20e('0x8')]['port'];_0x2226c1['secure']=_0x509b5c[_0xf20e('0x8')][_0xf20e('0xa')];}if(_0x509b5c['Smtp'][_0xf20e('0xb')]){if(_0x509b5c[_0xf20e('0x8')][_0xf20e('0xc')]){if(!_0x509b5c[_0xf20e('0x8')][_0xf20e('0xd')])throw new Error(_0xf20e('0xe'));_0x2226c1[_0xf20e('0xf')]={'type':'OAuth2','user':_0x509b5c[_0xf20e('0x8')]['user'],'accessToken':_0x509b5c['Smtp']['CloudProvider'][_0xf20e('0x10')]};}else{_0x2226c1[_0xf20e('0xf')]={'user':_0x509b5c[_0xf20e('0x8')][_0xf20e('0x11')],'pass':_0x509b5c[_0xf20e('0x8')][_0xf20e('0x12')]};}}return _0x2226c1;}}});};
\ No newline at end of file
index d86a80c..45fd300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['ShowMailAccount','smtp','getSmtpOptions','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Contacts','Applications','MailServerOut','Smtp','List','get','omit','smtpOptions','applications','list','orderBy','priority','asc','autoclose','push','close','*,*,*,*','create','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','attach','interaction','created','contact','attachments','originTo','originCc','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','then','MailAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','include','map','model','catch'];(function(_0x1ae172,_0x42d633){var _0x31c160=function(_0x38310d){while(--_0x38310d){_0x1ae172['push'](_0x1ae172['shift']());}};_0x31c160(++_0x42d633);}(_0x66fa,0x117));var _0xa66f=function(_0x58e872,_0x138bdf){_0x58e872=_0x58e872-0x0;var _0x3f51fc=_0x66fa[_0x58e872];return _0x3f51fc;};'use strict';var _=require(_0xa66f('0x0'));var moment=require(_0xa66f('0x1'));var BPromise=require('bluebird');var rs=require(_0xa66f('0x2'));var Redis=require(_0xa66f('0x3'));var db=require(_0xa66f('0x4'))['db'];var logger=require(_0xa66f('0x5'))(_0xa66f('0x6'));var config=require(_0xa66f('0x7'));var jayson=require(_0xa66f('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0xa66f('0x9')]=_[_0xa66f('0xa')](config[_0xa66f('0x9')],{'host':_0xa66f('0xb'),'port':0x18eb});var socket=require(_0xa66f('0xc'))(new Redis(config['redis']));require(_0xa66f('0xd'))['register'](socket);function respondWithRpcPromise(_0x46c788,_0x597c7c,_0x101e10){return new BPromise(function(_0x53ca76,_0x52d802){return client['request'](_0x46c788,_0x101e10)[_0xa66f('0xe')](function(_0x825868){logger['info'](_0xa66f('0xf'),_0x597c7c,'request\x20sent');logger[_0xa66f('0x10')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x597c7c,_0xa66f('0x11'),JSON[_0xa66f('0x12')](_0x825868));if(_0x825868[_0xa66f('0x13')]){if(_0x825868['error']['code']===0x1f4){logger[_0xa66f('0x13')]('MailAccount,\x20%s,\x20%s',_0x597c7c,_0x825868['error']['message']);return _0x52d802(_0x825868[_0xa66f('0x13')][_0xa66f('0x14')]);}logger[_0xa66f('0x13')](_0xa66f('0xf'),_0x597c7c,_0x825868[_0xa66f('0x13')]['message']);return _0x53ca76(_0x825868['error'][_0xa66f('0x14')]);}else{logger[_0xa66f('0x15')](_0xa66f('0xf'),_0x597c7c,_0xa66f('0x11'));_0x53ca76(_0x825868['result'][_0xa66f('0x14')]);}})['catch'](function(_0x4a28d4){logger[_0xa66f('0x13')](_0xa66f('0xf'),_0x597c7c,_0x4a28d4);_0x52d802(_0x4a28d4);});});}exports[_0xa66f('0x16')]=function(_0x355ddc){var _0x2c5b76=this;return new Promise(function(_0x408bc7,_0x251f60){return db[_0xa66f('0x17')][_0xa66f('0x18')]({'raw':_0x355ddc[_0xa66f('0x19')]?_0x355ddc[_0xa66f('0x19')][_0xa66f('0x1a')]===undefined?!![]:![]:!![],'where':_0x355ddc[_0xa66f('0x19')]?_0x355ddc[_0xa66f('0x19')][_0xa66f('0x1b')]||null:null,'attributes':_0x355ddc['options']?_0x355ddc[_0xa66f('0x19')][_0xa66f('0x1c')]||null:null,'limit':_0x355ddc[_0xa66f('0x19')]?_0x355ddc[_0xa66f('0x19')]['limit']||null:null,'include':_0x355ddc[_0xa66f('0x19')]?_0x355ddc[_0xa66f('0x19')][_0xa66f('0x1d')]?_[_0xa66f('0x1e')](_0x355ddc['options']['include'],function(_0xed98b9){return{'model':db[_0xed98b9['model']],'as':_0xed98b9['as'],'attributes':_0xed98b9[_0xa66f('0x1c')],'include':_0xed98b9[_0xa66f('0x1d')]?_[_0xa66f('0x1e')](_0xed98b9['include'],function(_0x4683c7){return{'model':db[_0x4683c7[_0xa66f('0x1f')]],'as':_0x4683c7['as'],'attributes':_0x4683c7[_0xa66f('0x1c')],'include':_0x4683c7[_0xa66f('0x1d')]?_[_0xa66f('0x1e')](_0x4683c7[_0xa66f('0x1d')],function(_0x1eb86a){return{'model':db[_0x1eb86a[_0xa66f('0x1f')]],'as':_0x1eb86a['as'],'attributes':_0x1eb86a[_0xa66f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa66f('0xe')](function(_0x45f71c){logger[_0xa66f('0x15')](_0xa66f('0x16'),_0x355ddc);logger[_0xa66f('0x10')]('GetMailAccount',_0x355ddc,JSON['stringify'](_0x45f71c));_0x408bc7(_0x45f71c);})[_0xa66f('0x20')](function(_0x27ceae){logger['error'](_0xa66f('0x16'),_0x27ceae[_0xa66f('0x14')],_0x355ddc);_0x251f60(_0x2c5b76['error'](0x1f4,_0x27ceae[_0xa66f('0x14')]));});});};exports[_0xa66f('0x21')]=function(_0x9d78d5){var _0x2c2ace=this;return new Promise(function(_0x395623,_0x548add){return db[_0xa66f('0x17')]['find']({'raw':_0x9d78d5[_0xa66f('0x19')]?_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x1a')]===undefined?!![]:![]:!![],'where':_0x9d78d5['options']?_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x1b')]||null:null,'attributes':_0x9d78d5['options']?_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x1c')]||null:null,'include':_0x9d78d5[_0xa66f('0x19')]?_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x1d')]?_[_0xa66f('0x1e')](_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x1d')],function(_0x35ef27){return{'model':db[_0x35ef27[_0xa66f('0x1f')]],'as':_0x35ef27['as'],'attributes':_0x35ef27['attributes'],'include':_0x35ef27[_0xa66f('0x1d')]?_['map'](_0x35ef27[_0xa66f('0x1d')],function(_0x46f6cc){return{'model':db[_0x46f6cc[_0xa66f('0x1f')]],'as':_0x46f6cc['as'],'attributes':_0x46f6cc[_0xa66f('0x1c')],'include':_0x46f6cc[_0xa66f('0x1d')]?_[_0xa66f('0x1e')](_0x46f6cc[_0xa66f('0x1d')],function(_0xcee582){return{'model':db[_0xcee582['model']],'as':_0xcee582['as'],'attributes':_0xcee582[_0xa66f('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4477cf){if(_0x9d78d5[_0xa66f('0x19')][_0xa66f('0x22')]===!![])_0x4477cf['setDataValue']('smtpOptions',_0x4477cf[_0xa66f('0x23')]());logger[_0xa66f('0x15')](_0xa66f('0x21'),_0x9d78d5);logger[_0xa66f('0x10')](_0xa66f('0x21'),_0x9d78d5,JSON['stringify'](_0x4477cf));_0x395623(_0x4477cf);})['catch'](function(_0x49b869){logger[_0xa66f('0x13')]('ShowMailAccount',_0x49b869['message'],_0x9d78d5);_0x548add(_0x2c2ace['error'](0x1f4,_0x49b869[_0xa66f('0x14')]));});});};exports['NotifyMailAccount']=function(_0x8965d3){var _0x17d942=this;return new Promise(function(_0x23a546,_0x1647a0){var _0xd65c5d={'body':_0x8965d3[_0xa66f('0x24')],'channel':_0xa66f('0x25')};var _0x261089=_[_0xa66f('0x26')](_[_0xa66f('0x27')](db[_0xa66f('0x28')][_0xa66f('0x29')]),[_0xa66f('0x2a'),_0xa66f('0x2b'),'CompanyId',_0xa66f('0x2c')]);var _0x25c2cb=![];if(_0x8965d3['body']['id']){delete _0x8965d3[_0xa66f('0x24')]['id'];}if(_['isNil'](_0x8965d3[_0xa66f('0x24')][_0xa66f('0x2d')])){return _0x1647a0(_0x17d942['error'](0x1f4,_0xa66f('0x2e')));}if(_[_0xa66f('0x2f')](_0x8965d3[_0xa66f('0x24')]['body'])||_0x8965d3[_0xa66f('0x24')]['body']===''){return _0x1647a0(_0x17d942[_0xa66f('0x13')](0x1f4,_0xa66f('0x30')));}if(_[_0xa66f('0x2f')](_0x8965d3[_0xa66f('0x24')][_0xa66f('0x31')])){return _0x1647a0(_0x17d942[_0xa66f('0x13')](0x1f4,_0xa66f('0x32')+_0x261089));}if(!_['includes'](_0x261089,_0x8965d3[_0xa66f('0x24')][_0xa66f('0x31')])){return _0x1647a0(_0x17d942[_0xa66f('0x13')](0x1f4,_0xa66f('0x33')+_0x261089));}var _0x374e53={};_0x374e53[_0x8965d3['body']['mapKey']]=_0x8965d3[_0xa66f('0x24')][_0xa66f('0x2d')];return db[_0xa66f('0x17')][_0xa66f('0x34')]({'where':{'id':_0x8965d3[_0xa66f('0x35')]['id']},'include':[{'model':db[_0xa66f('0x36')],'as':'List','include':[{'model':db[_0xa66f('0x28')],'as':_0xa66f('0x37'),'where':_0x374e53,'limit':0x1,'order':[[_0xa66f('0x2b'),'DESC']]}]},{'model':db['MailApplication'],'as':_0xa66f('0x38')},{'model':db[_0xa66f('0x39')],'as':_0xa66f('0x3a'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]})['then'](function(_0x19e7ce){if(_0x19e7ce&&_0x19e7ce[_0xa66f('0x3b')]){var _0x40d3b6=_0x19e7ce[_0xa66f('0x3c')]({'plain':!![]});_0xd65c5d[_0xa66f('0x35')]=_[_0xa66f('0x3d')](_0x40d3b6,[_0xa66f('0x38'),_0xa66f('0x3b')]);_0xd65c5d['account'][_0xa66f('0x3e')]=_0x19e7ce[_0xa66f('0x23')]();_0xd65c5d[_0xa66f('0x3f')]=_0x40d3b6[_0xa66f('0x38')];_0xd65c5d[_0xa66f('0x40')]=_0x40d3b6[_0xa66f('0x3b')];_0xd65c5d['applications']=_[_0xa66f('0x41')](_0xd65c5d[_0xa66f('0x3f')],[_0xa66f('0x42')],[_0xa66f('0x43')]);if(_0xd65c5d[_0xa66f('0x35')]&&_0xd65c5d['account'][_0xa66f('0x44')]){_0xd65c5d['applications'][_0xa66f('0x45')]({'id':0x0,'priority':_0xd65c5d['applications']['length']+0x1,'app':_0xa66f('0x46'),'appdata':_0xa66f('0x44'),'interval':_0xa66f('0x47')});}if(_0xd65c5d[_0xa66f('0x35')][_0xa66f('0x38')]){delete _0xd65c5d[_0xa66f('0x35')]['Applications'];}if(_0xd65c5d[_0xa66f('0x35')][_0xa66f('0x3b')]){delete _0xd65c5d[_0xa66f('0x35')][_0xa66f('0x3b')];}if(_0x40d3b6['List'][_0xa66f('0x37')]['length']){return _0x40d3b6[_0xa66f('0x3b')][_0xa66f('0x37')][0x0];}var _0x21482f=_[_0xa66f('0xa')](_0x8965d3[_0xa66f('0x24')],{'firstName':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x2d')],'ListId':_0x40d3b6['ListId']});_0x21482f[_0x8965d3[_0xa66f('0x24')][_0xa66f('0x31')]]=_0x8965d3[_0xa66f('0x24')][_0xa66f('0x2d')];return db[_0xa66f('0x28')][_0xa66f('0x48')](_0x21482f);}else{throw new Error(_0xa66f('0x49'));}})[_0xa66f('0xe')](function(_0x350fce){_0xd65c5d['contact']=_0x350fce;if(_0x350fce){if(!_0x8965d3['body'][_0xa66f('0x14')][_0xa66f('0x4a')]){_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x4a')]=rs[_0xa66f('0x4b')]()+'\x20'+_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x2d')];}var _0x11c89e={'ContactId':_0x350fce['id'],'MailAccountId':_0x8965d3[_0xa66f('0x35')]['id'],'inReplyTo':_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x4a')],'to':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x2d')],'cc':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')]['cc'],'subject':_0x8965d3['body']['message'][_0xa66f('0x4c')],'attach':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')]['attach'],'lastMsgAt':moment()[_0xa66f('0x4d')](_0xa66f('0x4e')),'lastMsgDirection':'in'};return db[_0xa66f('0x4f')][_0xa66f('0x34')]({'where':{'closed':![],'MailAccountId':_0x8965d3[_0xa66f('0x35')]['id']},'include':[{'model':db[_0xa66f('0x50')],'as':_0xa66f('0x51'),'attributes':[_0xa66f('0x4a')],'where':{'messageId':_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x52')]}}]})[_0xa66f('0xe')](function(_0x235e4f){if(_0x235e4f){return[_0x235e4f,![]];}return db[_0xa66f('0x4f')][_0xa66f('0x48')](_0x11c89e)[_0xa66f('0xe')](function(_0x41ffa7){return[_0x41ffa7,!![]];});});}else{throw new Error(_0xa66f('0x53'));}})['spread'](function(_0x52f22d,_0x46327d){if(_0x52f22d){_0x25c2cb=_0x46327d;if(!_0x46327d){return _0x52f22d[_0xa66f('0x54')]({'inReplyTo':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x4a')],'to':_0x8965d3['body'][_0xa66f('0x14')]['from'],'cc':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')]['cc'],'subject':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')]['subject'],'attach':_0x52f22d[_0xa66f('0x55')]?_0x52f22d[_0xa66f('0x55')]:_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x55')],'substatus':null,'substatusAt':moment()[_0xa66f('0x4d')](_0xa66f('0x4e')),'lastMsgAt':moment()[_0xa66f('0x4d')](_0xa66f('0x4e')),'lastMsgDirection':'in'});}else{return _0x52f22d;}}})[_0xa66f('0xe')](function(_0x290323){_0xd65c5d[_0xa66f('0x56')]=_0x290323['get']({'plain':!![]});_0xd65c5d[_0xa66f('0x56')][_0xa66f('0x57')]=_0x25c2cb;return db[_0xa66f('0x50')][_0xa66f('0x48')]({'body':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x24')],'MailAccountId':_0x8965d3[_0xa66f('0x35')]['id'],'MailInteractionId':_0x290323['id'],'direction':'in','ContactId':_0xd65c5d[_0xa66f('0x58')]['id'],'messageId':_0x8965d3['body'][_0xa66f('0x14')][_0xa66f('0x4a')],'from':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x2d')],'to':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')]['to'],'cc':_0x8965d3[_0xa66f('0x24')]['message']['cc'],'subject':_0x8965d3['body'][_0xa66f('0x14')][_0xa66f('0x4c')],'attach':_0x8965d3[_0xa66f('0x24')]['message']['attach'],'Attachments':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x59')],'originTo':_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x5a')],'originCc':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x5b')],'bcc':_0x8965d3[_0xa66f('0x24')][_0xa66f('0x14')][_0xa66f('0x5c')],'ChatWebsiteId':_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x5d')]||null,'originChannel':_0x8965d3[_0xa66f('0x24')]['message']['originChannel']||_0xa66f('0x5e'),'ChatOfflineMessageId':_0x8965d3[_0xa66f('0x24')]['message'][_0xa66f('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':_0xa66f('0x60')}]});})['then'](function(_0x4feda0){_0xd65c5d['message']=_0x4feda0;if(_0xd65c5d[_0xa66f('0x56')][_0xa66f('0x61')]){return db[_0xa66f('0x62')][_0xa66f('0x34')]({'attributes':['id',_0xa66f('0x63')],'where':{'id':_0xd65c5d[_0xa66f('0x56')][_0xa66f('0x61')]}})[_0xa66f('0xe')](function(_0x1ee6e0){if(_0x1ee6e0){_0xd65c5d[_0xa66f('0x3f')][_0xa66f('0x64')]({'id':0x0,'priority':0x0,'app':_0xa66f('0x65'),'appdata':_0x1ee6e0[_0xa66f('0x63')]+','+(_0xd65c5d[_0xa66f('0x35')][_0xa66f('0x66')]||0xa),'interval':_0xa66f('0x47')});}return respondWithRpcPromise('Start',_0xa66f('0x67'),_0xd65c5d);});}return respondWithRpcPromise('Start',_0xa66f('0x67'),_0xd65c5d);})['then'](function(_0xc4b32b){_0x23a546(_0xc4b32b);})[_0xa66f('0x20')](function(_0x2bb4e5){_0x1647a0(_0x17d942['error'](0x1f4,_0x2bb4e5['message']));});});};
\ No newline at end of file
+var _0xe2fe=['list','List','priority','asc','autoclose','push','length','close','Contacts','defaults','ListId','CmContact','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','Contact\x20not\x20found','spread','interaction','MailMessage','originCc','Attachments','UserId','User','name','unshift','agent','*,*,*,*','Start','startRouting','lodash','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','register','info','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','GetMailAccount','MailAccount','findAll','options','where','attributes','limit','include','map','model','then','debug','catch','ShowMailAccount','raw','smtp','smtpOptions','getSmtpOptions','body','mail','keys','createdAt','updatedAt','CompanyId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Smtp','CloudProvider','get','omit','Applications','applications'];(function(_0x1fbc20,_0x55d3e1){var _0x6a2d37=function(_0x2f4329){while(--_0x2f4329){_0x1fbc20['push'](_0x1fbc20['shift']());}};_0x6a2d37(++_0x55d3e1);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xee2f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xee2f('0x1'));var Redis=require('ioredis');var db=require(_0xee2f('0x2'))['db'];var logger=require(_0xee2f('0x3'))(_0xee2f('0x4'));var config=require(_0xee2f('0x5'));var jayson=require(_0xee2f('0x6'));var client=jayson['client'][_0xee2f('0x7')]({'port':0x232c});config[_0xee2f('0x8')]=_['defaults'](config[_0xee2f('0x8')],{'host':_0xee2f('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xee2f('0x8')]));require('./mailAccount.socket')[_0xee2f('0xa')](socket);function respondWithRpcPromise(_0x36920f,_0x53f7dd,_0x3a49bb){return new BPromise(function(_0x43f451,_0x4bf3c3){return client['request'](_0x36920f,_0x3a49bb)['then'](function(_0x56bbea){logger[_0xee2f('0xb')]('MailAccount,\x20%s,\x20%s',_0x53f7dd,'request\x20sent');logger['debug'](_0xee2f('0xc'),_0x53f7dd,_0xee2f('0xd'),JSON[_0xee2f('0xe')](_0x56bbea));if(_0x56bbea[_0xee2f('0xf')]){if(_0x56bbea[_0xee2f('0xf')][_0xee2f('0x10')]===0x1f4){logger['error'](_0xee2f('0x11'),_0x53f7dd,_0x56bbea['error'][_0xee2f('0x12')]);return _0x4bf3c3(_0x56bbea[_0xee2f('0xf')]['message']);}logger[_0xee2f('0xf')](_0xee2f('0x11'),_0x53f7dd,_0x56bbea[_0xee2f('0xf')][_0xee2f('0x12')]);return _0x43f451(_0x56bbea[_0xee2f('0xf')]['message']);}else{logger[_0xee2f('0xb')]('MailAccount,\x20%s,\x20%s',_0x53f7dd,_0xee2f('0xd'));_0x43f451(_0x56bbea[_0xee2f('0x13')]['message']);}})['catch'](function(_0x40b5bc){logger['error'](_0xee2f('0x11'),_0x53f7dd,_0x40b5bc);_0x4bf3c3(_0x40b5bc);});});}exports[_0xee2f('0x14')]=function(_0x28549d){var _0x5b83b5=this;return new Promise(function(_0x35e1a4,_0x1e70aa){return db[_0xee2f('0x15')][_0xee2f('0x16')]({'raw':_0x28549d[_0xee2f('0x17')]?_0x28549d['options']['raw']===undefined?!![]:![]:!![],'where':_0x28549d[_0xee2f('0x17')]?_0x28549d[_0xee2f('0x17')][_0xee2f('0x18')]||null:null,'attributes':_0x28549d[_0xee2f('0x17')]?_0x28549d[_0xee2f('0x17')][_0xee2f('0x19')]||null:null,'limit':_0x28549d[_0xee2f('0x17')]?_0x28549d['options'][_0xee2f('0x1a')]||null:null,'include':_0x28549d[_0xee2f('0x17')]?_0x28549d[_0xee2f('0x17')][_0xee2f('0x1b')]?_[_0xee2f('0x1c')](_0x28549d[_0xee2f('0x17')][_0xee2f('0x1b')],function(_0x13013f){return{'model':db[_0x13013f[_0xee2f('0x1d')]],'as':_0x13013f['as'],'attributes':_0x13013f[_0xee2f('0x19')],'include':_0x13013f[_0xee2f('0x1b')]?_[_0xee2f('0x1c')](_0x13013f[_0xee2f('0x1b')],function(_0x45c4a0){return{'model':db[_0x45c4a0['model']],'as':_0x45c4a0['as'],'attributes':_0x45c4a0['attributes'],'include':_0x45c4a0['include']?_[_0xee2f('0x1c')](_0x45c4a0[_0xee2f('0x1b')],function(_0x2cb0cb){return{'model':db[_0x2cb0cb[_0xee2f('0x1d')]],'as':_0x2cb0cb['as'],'attributes':_0x2cb0cb[_0xee2f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xee2f('0x1e')](function(_0x4d8398){logger[_0xee2f('0xb')]('GetMailAccount',_0x28549d);logger[_0xee2f('0x1f')](_0xee2f('0x14'),_0x28549d,JSON[_0xee2f('0xe')](_0x4d8398));_0x35e1a4(_0x4d8398);})[_0xee2f('0x20')](function(_0x3ddbe3){logger['error'](_0xee2f('0x14'),_0x3ddbe3[_0xee2f('0x12')],_0x28549d);_0x1e70aa(_0x5b83b5['error'](0x1f4,_0x3ddbe3['message']));});});};exports[_0xee2f('0x21')]=function(_0x574899){var _0x33c426=this;return new Promise(function(_0xc447e,_0x53d9b7){return db[_0xee2f('0x15')]['find']({'raw':_0x574899['options']?_0x574899['options'][_0xee2f('0x22')]===undefined?!![]:![]:!![],'where':_0x574899[_0xee2f('0x17')]?_0x574899['options'][_0xee2f('0x18')]||null:null,'attributes':_0x574899[_0xee2f('0x17')]?_0x574899[_0xee2f('0x17')][_0xee2f('0x19')]||null:null,'include':_0x574899[_0xee2f('0x17')]?_0x574899['options'][_0xee2f('0x1b')]?_['map'](_0x574899[_0xee2f('0x17')][_0xee2f('0x1b')],function(_0x3dcb9e){return{'model':db[_0x3dcb9e['model']],'as':_0x3dcb9e['as'],'attributes':_0x3dcb9e[_0xee2f('0x19')],'include':_0x3dcb9e['include']?_[_0xee2f('0x1c')](_0x3dcb9e['include'],function(_0x3e6dcc){return{'model':db[_0x3e6dcc[_0xee2f('0x1d')]],'as':_0x3e6dcc['as'],'attributes':_0x3e6dcc[_0xee2f('0x19')],'include':_0x3e6dcc[_0xee2f('0x1b')]?_[_0xee2f('0x1c')](_0x3e6dcc[_0xee2f('0x1b')],function(_0x24380b){return{'model':db[_0x24380b[_0xee2f('0x1d')]],'as':_0x24380b['as'],'attributes':_0x24380b[_0xee2f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xee2f('0x1e')](function(_0x433547){if(_0x574899['options'][_0xee2f('0x23')]===!![])_0x433547['setDataValue'](_0xee2f('0x24'),_0x433547[_0xee2f('0x25')]());logger[_0xee2f('0xb')](_0xee2f('0x21'),_0x574899);logger[_0xee2f('0x1f')](_0xee2f('0x21'),_0x574899,JSON[_0xee2f('0xe')](_0x433547));_0xc447e(_0x433547);})[_0xee2f('0x20')](function(_0x50ddd2){logger['error']('ShowMailAccount',_0x50ddd2[_0xee2f('0x12')],_0x574899);_0x53d9b7(_0x33c426['error'](0x1f4,_0x50ddd2[_0xee2f('0x12')]));});});};exports['NotifyMailAccount']=function(_0x558aa3){var _0x5027a6=this;return new Promise(function(_0x58e361,_0x430ac1){var _0x692686={'body':_0x558aa3[_0xee2f('0x26')],'channel':_0xee2f('0x27')};var _0x4823a7=_['difference'](_[_0xee2f('0x28')](db['CmContact']['rawAttributes']),[_0xee2f('0x29'),_0xee2f('0x2a'),_0xee2f('0x2b'),'ListId']);var _0x3bc173=![];if(_0x558aa3[_0xee2f('0x26')]['id']){delete _0x558aa3[_0xee2f('0x26')]['id'];}if(_['isNil'](_0x558aa3['body'][_0xee2f('0x2c')])){return _0x430ac1(_0x5027a6[_0xee2f('0xf')](0x1f4,_0xee2f('0x2d')));}if(_[_0xee2f('0x2e')](_0x558aa3['body'][_0xee2f('0x26')])||_0x558aa3[_0xee2f('0x26')][_0xee2f('0x26')]===''){return _0x430ac1(_0x5027a6[_0xee2f('0xf')](0x1f4,_0xee2f('0x2f')));}if(_[_0xee2f('0x2e')](_0x558aa3[_0xee2f('0x26')][_0xee2f('0x30')])){return _0x430ac1(_0x5027a6[_0xee2f('0xf')](0x1f4,_0xee2f('0x31')+_0x4823a7));}if(!_['includes'](_0x4823a7,_0x558aa3['body']['mapKey'])){return _0x430ac1(_0x5027a6['error'](0x1f4,_0xee2f('0x32')+_0x4823a7));}var _0x3e0d7b={};_0x3e0d7b[_0x558aa3[_0xee2f('0x26')][_0xee2f('0x30')]]=_0x558aa3[_0xee2f('0x26')]['from'];return db[_0xee2f('0x15')][_0xee2f('0x33')]({'where':{'id':_0x558aa3[_0xee2f('0x34')]['id']},'include':[{'model':db[_0xee2f('0x35')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3e0d7b,'limit':0x1,'order':[[_0xee2f('0x2a'),'DESC']]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db['MailServerOut'],'as':_0xee2f('0x36'),'include':[{'model':db[_0xee2f('0x37')],'as':_0xee2f('0x37')}]}]})['then'](function(_0x22506e){if(_0x22506e&&_0x22506e['List']){var _0x3d95b8=_0x22506e[_0xee2f('0x38')]({'plain':!![]});_0x692686[_0xee2f('0x34')]=_[_0xee2f('0x39')](_0x3d95b8,[_0xee2f('0x3a'),'List']);_0x692686['account'][_0xee2f('0x24')]=_0x22506e['getSmtpOptions']();_0x692686[_0xee2f('0x3b')]=_0x3d95b8[_0xee2f('0x3a')];_0x692686[_0xee2f('0x3c')]=_0x3d95b8[_0xee2f('0x3d')];_0x692686['applications']=_['orderBy'](_0x692686[_0xee2f('0x3b')],[_0xee2f('0x3e')],[_0xee2f('0x3f')]);if(_0x692686[_0xee2f('0x34')]&&_0x692686[_0xee2f('0x34')][_0xee2f('0x40')]){_0x692686[_0xee2f('0x3b')][_0xee2f('0x41')]({'id':0x0,'priority':_0x692686[_0xee2f('0x3b')][_0xee2f('0x42')]+0x1,'app':_0xee2f('0x43'),'appdata':_0xee2f('0x40'),'interval':'*,*,*,*'});}if(_0x692686[_0xee2f('0x34')][_0xee2f('0x3a')]){delete _0x692686[_0xee2f('0x34')][_0xee2f('0x3a')];}if(_0x692686['account'][_0xee2f('0x3d')]){delete _0x692686[_0xee2f('0x34')][_0xee2f('0x3d')];}if(_0x3d95b8[_0xee2f('0x3d')][_0xee2f('0x44')]['length']){return _0x3d95b8[_0xee2f('0x3d')]['Contacts'][0x0];}var _0x4db455=_[_0xee2f('0x45')](_0x558aa3[_0xee2f('0x26')],{'firstName':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x2c')],'ListId':_0x3d95b8[_0xee2f('0x46')]});_0x4db455[_0x558aa3[_0xee2f('0x26')][_0xee2f('0x30')]]=_0x558aa3['body'][_0xee2f('0x2c')];return db[_0xee2f('0x47')][_0xee2f('0x48')](_0x4db455);}else{throw new Error(_0xee2f('0x49'));}})[_0xee2f('0x1e')](function(_0x3e1184){_0x692686[_0xee2f('0x4a')]=_0x3e1184;if(_0x3e1184){if(!_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['messageId']){_0x558aa3[_0xee2f('0x26')]['message'][_0xee2f('0x4b')]=rs[_0xee2f('0x4c')]()+'\x20'+_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x2c')];}var _0x5ee444={'ContactId':_0x3e1184['id'],'MailAccountId':_0x558aa3[_0xee2f('0x34')]['id'],'inReplyTo':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x4b')],'to':_0x558aa3['body']['message']['from'],'cc':_0x558aa3['body']['message']['cc'],'subject':_0x558aa3[_0xee2f('0x26')]['message'][_0xee2f('0x4d')],'attach':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x4e')],'lastMsgAt':moment()[_0xee2f('0x4f')](_0xee2f('0x50')),'lastMsgDirection':'in'};return db['MailInteraction']['find']({'where':{'closed':![],'MailAccountId':_0x558aa3[_0xee2f('0x34')]['id']},'include':[{'model':db['MailMessage'],'as':_0xee2f('0x51'),'attributes':['messageId'],'where':{'messageId':_0x558aa3[_0xee2f('0x26')]['message'][_0xee2f('0x52')]}}]})[_0xee2f('0x1e')](function(_0x2f419c){if(_0x2f419c){return[_0x2f419c,![]];}return db['MailInteraction'][_0xee2f('0x48')](_0x5ee444)[_0xee2f('0x1e')](function(_0x3bdfc5){return[_0x3bdfc5,!![]];});});}else{throw new Error(_0xee2f('0x53'));}})[_0xee2f('0x54')](function(_0x486146,_0xf0c721){if(_0x486146){_0x3bc173=_0xf0c721;if(!_0xf0c721){return _0x486146['update']({'inReplyTo':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x4b')],'to':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x2c')],'cc':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['cc'],'subject':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x4d')],'attach':_0x486146['attach']?_0x486146[_0xee2f('0x4e')]:_0x558aa3[_0xee2f('0x26')]['message'][_0xee2f('0x4e')],'substatus':null,'substatusAt':moment()['format'](_0xee2f('0x50')),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x486146;}}})[_0xee2f('0x1e')](function(_0x46ecac){_0x692686[_0xee2f('0x55')]=_0x46ecac[_0xee2f('0x38')]({'plain':!![]});_0x692686[_0xee2f('0x55')]['created']=_0x3bc173;return db[_0xee2f('0x56')][_0xee2f('0x48')]({'body':_0x558aa3[_0xee2f('0x26')]['body'],'MailAccountId':_0x558aa3[_0xee2f('0x34')]['id'],'MailInteractionId':_0x46ecac['id'],'direction':'in','ContactId':_0x692686[_0xee2f('0x4a')]['id'],'messageId':_0x558aa3['body'][_0xee2f('0x12')][_0xee2f('0x4b')],'from':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x2c')],'to':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['to'],'cc':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['cc'],'subject':_0x558aa3['body']['message']['subject'],'attach':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x4e')],'Attachments':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['attachments'],'originTo':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['originTo'],'originCc':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')][_0xee2f('0x57')],'bcc':_0x558aa3['body'][_0xee2f('0x12')]['bcc'],'ChatWebsiteId':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['ChatWebsiteId']||null,'originChannel':_0x558aa3[_0xee2f('0x26')][_0xee2f('0x12')]['originChannel']||'Email','ChatOfflineMessageId':_0x558aa3['body'][_0xee2f('0x12')]['ChatOfflineMessageId']||null},{'include':[{'model':db['Attachment'],'as':_0xee2f('0x58')}]});})[_0xee2f('0x1e')](function(_0x50a972){_0x692686[_0xee2f('0x12')]=_0x50a972;if(_0x692686['interaction'][_0xee2f('0x59')]){return db[_0xee2f('0x5a')][_0xee2f('0x33')]({'attributes':['id',_0xee2f('0x5b')],'where':{'id':_0x692686[_0xee2f('0x55')][_0xee2f('0x59')]}})[_0xee2f('0x1e')](function(_0x58da0d){if(_0x58da0d){_0x692686[_0xee2f('0x3b')][_0xee2f('0x5c')]({'id':0x0,'priority':0x0,'app':_0xee2f('0x5d'),'appdata':_0x58da0d[_0xee2f('0x5b')]+','+(_0x692686[_0xee2f('0x34')]['waitForTheAssignedAgent']||0xa),'interval':_0xee2f('0x5e')});}return respondWithRpcPromise(_0xee2f('0x5f'),_0xee2f('0x60'),_0x692686);});}return respondWithRpcPromise(_0xee2f('0x5f'),_0xee2f('0x60'),_0x692686);})[_0xee2f('0x1e')](function(_0x4c3b2f){_0x58e361(_0x4c3b2f);})['catch'](function(_0x4051a7){_0x430ac1(_0x5027a6[_0xee2f('0xf')](0x1f4,_0x4051a7[_0xee2f('0x12')]));});});};
\ No newline at end of file
index cf32425..58163df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d1=['./mailAccount.events','save','update','emit','removeListener','length','mailAccount:'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0xa5d1,0xa1));var _0x1a5d=function(_0x1d91a3,_0x218a99){_0x1d91a3=_0x1d91a3-0x0;var _0x17be3e=_0xa5d1[_0x1d91a3];return _0x17be3e;};'use strict';var MailAccountEvents=require(_0x1a5d('0x0'));var events=[_0x1a5d('0x1'),'remove',_0x1a5d('0x2')];function createListener(_0x158987,_0x5c95b8){return function(_0x11acb9){_0x5c95b8[_0x1a5d('0x3')](_0x158987,_0x11acb9);};}function removeListener(_0x23c206,_0x158d84){return function(){MailAccountEvents[_0x1a5d('0x4')](_0x23c206,_0x158d84);};}exports['register']=function(_0x254c9a){for(var _0x2501d3=0x0,_0x2db94f=events[_0x1a5d('0x5')];_0x2501d3<_0x2db94f;_0x2501d3++){var _0x4302e1=events[_0x2501d3];var _0x45f93d=createListener(_0x1a5d('0x6')+_0x4302e1,_0x254c9a);MailAccountEvents['on'](_0x4302e1,_0x45f93d);}};
\ No newline at end of file
+var _0x51c5=['save','remove','update','removeListener','register','length','mailAccount:','./mailAccount.events'];(function(_0x315db2,_0x5b027e){var _0x31fcbb=function(_0x24db5d){while(--_0x24db5d){_0x315db2['push'](_0x315db2['shift']());}};_0x31fcbb(++_0x5b027e);}(_0x51c5,0x8f));var _0x551c=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0x51c5[_0x5627e1];return _0x2f013f;};'use strict';var MailAccountEvents=require(_0x551c('0x0'));var events=[_0x551c('0x1'),_0x551c('0x2'),_0x551c('0x3')];function createListener(_0x3b6f53,_0x2279a3){return function(_0xe03709){_0x2279a3['emit'](_0x3b6f53,_0xe03709);};}function removeListener(_0x230657,_0x1639d0){return function(){MailAccountEvents[_0x551c('0x4')](_0x230657,_0x1639d0);};}exports[_0x551c('0x5')]=function(_0xe0272c){for(var _0x1aa8df=0x0,_0x21dfa1=events[_0x551c('0x6')];_0x1aa8df<_0x21dfa1;_0x1aa8df++){var _0x4f3a0a=events[_0x1aa8df];var _0x414edb=createListener(_0x551c('0x7')+_0x4f3a0a,_0xe0272c);MailAccountEvents['on'](_0x4f3a0a,_0x414edb);}};
\ No newline at end of file
index 63fad92..4539954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x880d=['isAuthenticated','show','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','get','/:id'];(function(_0x1982cc,_0x53d70f){var _0x3dd1c6=function(_0x465f88){while(--_0x465f88){_0x1982cc['push'](_0x1982cc['shift']());}};_0x3dd1c6(++_0x53d70f);}(_0x880d,0x187));var _0xd880=function(_0x55821d,_0x27a22e){_0x55821d=_0x55821d-0x0;var _0x58ea8a=_0x880d[_0x55821d];return _0x58ea8a;};'use strict';var multer=require(_0xd880('0x0'));var util=require(_0xd880('0x1'));var path=require(_0xd880('0x2'));var timeout=require('connect-timeout');var express=require(_0xd880('0x3'));var router=express[_0xd880('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd880('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd880('0x6'));var controller=require('./mailApplication.controller');router[_0xd880('0x7')](_0xd880('0x8'),auth[_0xd880('0x9')](),controller[_0xd880('0xa')]);router[_0xd880('0xb')]('/:id',auth[_0xd880('0x9')](),controller[_0xd880('0xc')]);router[_0xd880('0xd')](_0xd880('0x8'),auth[_0xd880('0x9')](),controller[_0xd880('0xe')]);module[_0xd880('0xf')]=router;
\ No newline at end of file
+var _0x7eb4=['delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update'];(function(_0x581249,_0x483f03){var _0x284bae=function(_0x2faadd){while(--_0x2faadd){_0x581249['push'](_0x581249['shift']());}};_0x284bae(++_0x483f03);}(_0x7eb4,0x6f));var _0x47eb=function(_0x2efa32,_0x4f1f72){_0x2efa32=_0x2efa32-0x0;var _0x179cf0=_0x7eb4[_0x2efa32];return _0x179cf0;};'use strict';var multer=require(_0x47eb('0x0'));var util=require('util');var path=require(_0x47eb('0x1'));var timeout=require(_0x47eb('0x2'));var express=require(_0x47eb('0x3'));var router=express['Router']();var fs_extra=require(_0x47eb('0x4'));var auth=require(_0x47eb('0x5'));var interaction=require(_0x47eb('0x6'));var config=require(_0x47eb('0x7'));var controller=require(_0x47eb('0x8'));router[_0x47eb('0x9')](_0x47eb('0xa'),auth[_0x47eb('0xb')](),controller[_0x47eb('0xc')]);router[_0x47eb('0xd')](_0x47eb('0xa'),auth['isAuthenticated'](),controller[_0x47eb('0xe')]);router[_0x47eb('0xf')](_0x47eb('0xa'),auth['isAuthenticated'](),controller[_0x47eb('0x10')]);module[_0x47eb('0x11')]=router;
\ No newline at end of file
index 25665a0..25aaf00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca99=['noop','INTEGER','STRING'];(function(_0x41ab68,_0x3e806f){var _0x134b6c=function(_0x4c3a80){while(--_0x4c3a80){_0x41ab68['push'](_0x41ab68['shift']());}};_0x134b6c(++_0x3e806f);}(_0xca99,0x1ba));var _0x9ca9=function(_0x47b262,_0x45a382){_0x47b262=_0x47b262-0x0;var _0x223475=_0xca99[_0x47b262];return _0x223475;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x9ca9('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x9ca9('0x1')],'allowNull':![],'defaultValue':_0x9ca9('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9ca9('0x1')]},'interval':{'type':Sequelize[_0x9ca9('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xf0af=['exports','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x1035b2,_0x765d7d){var _0x593a58=function(_0x191294){while(--_0x191294){_0x1035b2['push'](_0x1035b2['shift']());}};_0x593a58(++_0x765d7d);}(_0xf0af,0x173));var _0xff0a=function(_0x4f83ca,_0x46f67a){_0x4f83ca=_0x4f83ca-0x0;var _0x1fbac3=_0xf0af[_0x4f83ca];return _0x1fbac3;};'use strict';var Sequelize=require(_0xff0a('0x0'));module[_0xff0a('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xff0a('0x2')],'allowNull':![],'defaultValue':_0xff0a('0x3')},'appdata':{'type':Sequelize[_0xff0a('0x4')]()},'description':{'type':Sequelize[_0xff0a('0x2')]},'interval':{'type':Sequelize[_0xff0a('0x2')],'defaultValue':_0xff0a('0x5')}};
\ No newline at end of file
index 5db3e5b..043cd91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1a57cb,_0x5ec459){var _0x4d59c8=function(_0x2afc92){while(--_0x2afc92){_0x1a57cb['push'](_0x1a57cb['shift']());}};_0x4d59c8(++_0x5ec459);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'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
+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(_0x23b946,_0x2653e1){var _0xcfad4f=function(_0x5200d1){while(--_0x5200d1){_0x23b946['push'](_0x23b946['shift']());}};_0xcfad4f(++_0x2653e1);}(_0x9c44,0x178));var _0x49c4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9c44[_0x167cc1];return _0x10bc4b;};'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 d8b459c..4834870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9316=['../../config/environment','exports','define','MailApplication','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0xf03d8c,_0x572404){var _0x1f6df9=function(_0x44e49c){while(--_0x44e49c){_0xf03d8c['push'](_0xf03d8c['shift']());}};_0x1f6df9(++_0x572404);}(_0x9316,0x1b1));var _0x6931=function(_0x486931,_0x1e962a){_0x486931=_0x486931-0x0;var _0x4e46f4=_0x9316[_0x486931];return _0x4e46f4;};'use strict';var _=require(_0x6931('0x0'));var util=require(_0x6931('0x1'));var logger=require(_0x6931('0x2'))(_0x6931('0x3'));var moment=require('moment');var BPromise=require(_0x6931('0x4'));var rp=require(_0x6931('0x5'));var fs=require('fs');var path=require(_0x6931('0x6'));var rimraf=require('rimraf');var config=require(_0x6931('0x7'));var attributes=require('./mailApplication.attributes');module[_0x6931('0x8')]=function(_0x21e8b6,_0x4f3aaa){return _0x21e8b6[_0x6931('0x9')](_0x6931('0xa'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x22e3=['define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x22e3,0x198));var _0x322e=function(_0x36914,_0x401f56){_0x36914=_0x36914-0x0;var _0x22a318=_0x22e3[_0x36914];return _0x22a318;};'use strict';var _=require(_0x322e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x322e('0x1'));var moment=require('moment');var BPromise=require(_0x322e('0x2'));var rp=require(_0x322e('0x3'));var fs=require('fs');var path=require(_0x322e('0x4'));var rimraf=require(_0x322e('0x5'));var config=require(_0x322e('0x6'));var attributes=require(_0x322e('0x7'));module['exports']=function(_0x38005a,_0x214964){return _0x38005a[_0x322e('0x8')](_0x322e('0x9'),attributes,{'tableName':_0x322e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x322e('0xb'),'collate':_0x322e('0xc')});};
\ No newline at end of file
index 8ab5b66..3c4fe3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d96=['error','message','result','catch','MailApplication','update','options','raw','where','attributes','UpdateMailApplication','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','MailApplication,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x1d96,0x9c));var _0x61d9=function(_0x41f267,_0x161967){_0x41f267=_0x41f267-0x0;var _0x1cefea=_0x1d96[_0x41f267];return _0x1cefea;};'use strict';var _=require(_0x61d9('0x0'));var util=require(_0x61d9('0x1'));var moment=require(_0x61d9('0x2'));var BPromise=require('bluebird');var rs=require(_0x61d9('0x3'));var fs=require('fs');var Redis=require(_0x61d9('0x4'));var db=require(_0x61d9('0x5'))['db'];var utils=require(_0x61d9('0x6'));var logger=require(_0x61d9('0x7'))(_0x61d9('0x8'));var config=require(_0x61d9('0x9'));var jayson=require(_0x61d9('0xa'));var client=jayson['client'][_0x61d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3b1399,_0x256267,_0x4efedf){return new BPromise(function(_0x5dc4cb,_0x40b7dd){return client['request'](_0x3b1399,_0x4efedf)[_0x61d9('0xc')](function(_0x1fd7fd){logger[_0x61d9('0xd')](_0x61d9('0xe'),_0x256267,'request\x20sent');logger[_0x61d9('0xf')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x256267,_0x61d9('0x10'),JSON[_0x61d9('0x11')](_0x1fd7fd));if(_0x1fd7fd[_0x61d9('0x12')]){if(_0x1fd7fd[_0x61d9('0x12')]['code']===0x1f4){logger['error'](_0x61d9('0xe'),_0x256267,_0x1fd7fd['error'][_0x61d9('0x13')]);return _0x40b7dd(_0x1fd7fd[_0x61d9('0x12')][_0x61d9('0x13')]);}logger[_0x61d9('0x12')](_0x61d9('0xe'),_0x256267,_0x1fd7fd[_0x61d9('0x12')][_0x61d9('0x13')]);return _0x5dc4cb(_0x1fd7fd['error'][_0x61d9('0x13')]);}else{logger[_0x61d9('0xd')](_0x61d9('0xe'),_0x256267,_0x61d9('0x10'));_0x5dc4cb(_0x1fd7fd[_0x61d9('0x14')][_0x61d9('0x13')]);}})[_0x61d9('0x15')](function(_0x236751){logger[_0x61d9('0x12')](_0x61d9('0xe'),_0x256267,_0x236751);_0x40b7dd(_0x236751);});});}exports['UpdateMailApplication']=function(_0x2907ee){var _0x5e41a8=this;return new Promise(function(_0x3b5271,_0x5eb067){return db[_0x61d9('0x16')][_0x61d9('0x17')](_0x2907ee['body'],{'raw':_0x2907ee['options']?_0x2907ee[_0x61d9('0x18')][_0x61d9('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2907ee[_0x61d9('0x18')]?_0x2907ee[_0x61d9('0x18')][_0x61d9('0x1a')]||null:null,'attributes':_0x2907ee[_0x61d9('0x18')]?_0x2907ee[_0x61d9('0x18')][_0x61d9('0x1b')]||null:null,'limit':_0x2907ee[_0x61d9('0x18')]?_0x2907ee[_0x61d9('0x18')]['limit']||null:null})[_0x61d9('0xc')](function(_0x15b11e){logger[_0x61d9('0xd')]('UpdateMailApplication',_0x2907ee);logger[_0x61d9('0xf')](_0x61d9('0x1c'),_0x2907ee,JSON[_0x61d9('0x11')](_0x15b11e));_0x3b5271(_0x15b11e);})['catch'](function(_0x86ea6f){logger['error'](_0x61d9('0x1c'),_0x86ea6f[_0x61d9('0x13')],_0x2907ee);_0x5eb067(_0x5e41a8['error'](0x1f4,_0x86ea6f[_0x61d9('0x13')]));});});};
\ No newline at end of file
+var _0x4774=['rpc','../../config/environment','client','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateMailApplication','MailApplication','update','options','raw','where','attributes','limit','debug','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x190ceb,_0x2345b2){var _0x5ce806=function(_0x432853){while(--_0x432853){_0x190ceb['push'](_0x190ceb['shift']());}};_0x5ce806(++_0x2345b2);}(_0x4774,0x1e7));var _0x4477=function(_0x9a11c4,_0x5af38d){_0x9a11c4=_0x9a11c4-0x0;var _0x1303ef=_0x4774[_0x9a11c4];return _0x1303ef;};'use strict';var _=require(_0x4477('0x0'));var util=require(_0x4477('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4477('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4477('0x3'))['db'];var utils=require(_0x4477('0x4'));var logger=require(_0x4477('0x5'))(_0x4477('0x6'));var config=require(_0x4477('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4477('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2278ef,_0xad4d36,_0x346858){return new BPromise(function(_0x4007d1,_0x3d5f89){return client[_0x4477('0x9')](_0x2278ef,_0x346858)[_0x4477('0xa')](function(_0x3f1344){logger[_0x4477('0xb')](_0x4477('0xc'),_0xad4d36,_0x4477('0xd'));logger['debug'](_0x4477('0xe'),_0xad4d36,_0x4477('0xd'),JSON['stringify'](_0x3f1344));if(_0x3f1344['error']){if(_0x3f1344[_0x4477('0xf')][_0x4477('0x10')]===0x1f4){logger[_0x4477('0xf')](_0x4477('0xc'),_0xad4d36,_0x3f1344[_0x4477('0xf')]['message']);return _0x3d5f89(_0x3f1344[_0x4477('0xf')]['message']);}logger['error'](_0x4477('0xc'),_0xad4d36,_0x3f1344[_0x4477('0xf')][_0x4477('0x11')]);return _0x4007d1(_0x3f1344[_0x4477('0xf')][_0x4477('0x11')]);}else{logger['info'](_0x4477('0xc'),_0xad4d36,'request\x20sent');_0x4007d1(_0x3f1344[_0x4477('0x12')]['message']);}})[_0x4477('0x13')](function(_0x20b7ea){logger[_0x4477('0xf')]('MailApplication,\x20%s,\x20%s',_0xad4d36,_0x20b7ea);_0x3d5f89(_0x20b7ea);});});}exports[_0x4477('0x14')]=function(_0x3be50a){var _0x410711=this;return new Promise(function(_0x388e5e,_0x302530){return db[_0x4477('0x15')][_0x4477('0x16')](_0x3be50a['body'],{'raw':_0x3be50a[_0x4477('0x17')]?_0x3be50a[_0x4477('0x17')][_0x4477('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3be50a[_0x4477('0x17')]?_0x3be50a[_0x4477('0x17')][_0x4477('0x19')]||null:null,'attributes':_0x3be50a['options']?_0x3be50a[_0x4477('0x17')][_0x4477('0x1a')]||null:null,'limit':_0x3be50a[_0x4477('0x17')]?_0x3be50a['options'][_0x4477('0x1b')]||null:null})['then'](function(_0x550015){logger['info'](_0x4477('0x14'),_0x3be50a);logger[_0x4477('0x1c')]('UpdateMailApplication',_0x3be50a,JSON['stringify'](_0x550015));_0x388e5e(_0x550015);})['catch'](function(_0x2d6325){logger[_0x4477('0xf')]('UpdateMailApplication',_0x2d6325['message'],_0x3be50a);_0x302530(_0x410711[_0x4477('0xf')](0x1f4,_0x2d6325['message']));});});};
\ No newline at end of file
index 2fc3ad5..e416317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2608=['destroy','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','mailinteraction:addtags','addTags','put','mail','mailinteraction:update','update','delete','mailinteraction:destroy'];(function(_0x2bacb2,_0x5b2442){var _0x44d2c6=function(_0x99cd0d){while(--_0x99cd0d){_0x2bacb2['push'](_0x2bacb2['shift']());}};_0x44d2c6(++_0x5b2442);}(_0x2608,0x93));var _0x8260=function(_0x334914,_0x1e4340){_0x334914=_0x334914-0x0;var _0x505160=_0x2608[_0x334914];return _0x505160;};'use strict';var express=require(_0x8260('0x0'));var router=express[_0x8260('0x1')]();var auth=require(_0x8260('0x2'));var interaction=require(_0x8260('0x3'));var controller=require('./mailInteraction.controller');router[_0x8260('0x4')]('/',auth[_0x8260('0x5')](),controller['index']);router['get'](_0x8260('0x6'),auth[_0x8260('0x5')](),controller[_0x8260('0x7')]);router['get'](_0x8260('0x8'),auth['isAuthenticated'](),controller[_0x8260('0x9')]);router[_0x8260('0x4')]('/:id/messages',auth[_0x8260('0x5')](),controller[_0x8260('0xa')]);router[_0x8260('0x4')](_0x8260('0xb'),auth[_0x8260('0x5')](),controller[_0x8260('0xc')]);router[_0x8260('0xd')]('/',auth[_0x8260('0x5')](),controller[_0x8260('0xe')]);router[_0x8260('0xd')](_0x8260('0xf'),auth['isAuthenticated'](),controller[_0x8260('0x10')]);router['post'](_0x8260('0x11'),auth[_0x8260('0x5')](),interaction[_0x8260('0x12')]('mail',_0x8260('0x13')),controller[_0x8260('0x14')]);router[_0x8260('0x15')]('/:id',auth[_0x8260('0x5')](),interaction[_0x8260('0x12')](_0x8260('0x16'),_0x8260('0x17')),controller[_0x8260('0x18')]);router[_0x8260('0x19')](_0x8260('0x8'),auth['isAuthenticated'](),interaction[_0x8260('0x12')](_0x8260('0x16'),_0x8260('0x1a')),controller[_0x8260('0x1b')]);router[_0x8260('0x19')](_0x8260('0x11'),auth[_0x8260('0x5')](),controller[_0x8260('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x05b0=['/describe','describe','/:id','show','/:id/messages','getMessages','download','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','update','delete','mailinteraction:destroy','destroy','removeTags','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x26b5ff,_0x92009a){var _0x58603e=function(_0x4454ff){while(--_0x4454ff){_0x26b5ff['push'](_0x26b5ff['shift']());}};_0x58603e(++_0x92009a);}(_0x05b0,0x188));var _0x005b=function(_0x2f0701,_0x3c8ec4){_0x2f0701=_0x2f0701-0x0;var _0x59379a=_0x05b0[_0x2f0701];return _0x59379a;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x005b('0x0'));var interaction=require(_0x005b('0x1'));var controller=require('./mailInteraction.controller');router[_0x005b('0x2')]('/',auth[_0x005b('0x3')](),controller['index']);router[_0x005b('0x2')](_0x005b('0x4'),auth['isAuthenticated'](),controller[_0x005b('0x5')]);router[_0x005b('0x2')](_0x005b('0x6'),auth[_0x005b('0x3')](),controller[_0x005b('0x7')]);router[_0x005b('0x2')](_0x005b('0x8'),auth['isAuthenticated'](),controller[_0x005b('0x9')]);router[_0x005b('0x2')]('/:id/download',auth['isAuthenticated'](),controller[_0x005b('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x005b('0xb')](_0x005b('0x8'),auth['isAuthenticated'](),controller[_0x005b('0xc')]);router[_0x005b('0xb')](_0x005b('0xd'),auth[_0x005b('0x3')](),interaction[_0x005b('0xe')](_0x005b('0xf'),_0x005b('0x10')),controller['addTags']);router['put']('/:id',auth[_0x005b('0x3')](),interaction['tracked'](_0x005b('0xf'),'mailinteraction:update'),controller[_0x005b('0x11')]);router[_0x005b('0x12')](_0x005b('0x6'),auth[_0x005b('0x3')](),interaction[_0x005b('0xe')]('mail',_0x005b('0x13')),controller[_0x005b('0x14')]);router[_0x005b('0x12')]('/:id/tags',auth[_0x005b('0x3')](),controller[_0x005b('0x15')]);module['exports']=router;
\ No newline at end of file
index df73a8f..a8de3e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5acd=['ENUM','out','sequelize','iconv','exports','BOOLEAN','STRING','long','DATE'];(function(_0x436370,_0x4cf155){var _0x455a4c=function(_0xc595be){while(--_0xc595be){_0x436370['push'](_0x436370['shift']());}};_0x455a4c(++_0x4cf155);}(_0x5acd,0x1f1));var _0xd5ac=function(_0x5771bb,_0x424402){_0x5771bb=_0x5771bb-0x0;var _0x384005=_0x5acd[_0x5771bb];return _0x384005;};'use strict';var Sequelize=require(_0xd5ac('0x0'));var iconv=require(_0xd5ac('0x1'));module[_0xd5ac('0x2')]={'closed':{'type':Sequelize[_0xd5ac('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xd5ac('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xd5ac('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xd5ac('0x4')]},'cc':{'type':Sequelize['TEXT'](_0xd5ac('0x5'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0xd5ac('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xd5ac('0x6')]},'substatus':{'type':Sequelize[_0xd5ac('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0xd5ac('0x6')]},'firstMsgDirection':{'type':Sequelize[_0xd5ac('0x7')]('in',_0xd5ac('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd5ac('0x6')]},'lastMsgDirection':{'type':Sequelize[_0xd5ac('0x7')]('in',_0xd5ac('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd5ac('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x90f0=['BOOLEAN','DATE','STRING','long','TEXT','ENUM','out','sequelize'];(function(_0x533dd1,_0x17b055){var _0x1c9a5b=function(_0x51b7c2){while(--_0x51b7c2){_0x533dd1['push'](_0x533dd1['shift']());}};_0x1c9a5b(++_0x17b055);}(_0x90f0,0x1e7));var _0x090f=function(_0x2b2e69,_0x463fe8){_0x2b2e69=_0x2b2e69-0x0;var _0x5eb04d=_0x90f0[_0x2b2e69];return _0x5eb04d;};'use strict';var Sequelize=require(_0x090f('0x0'));var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0x090f('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x090f('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x090f('0x3')]},'thirdDisposition':{'type':Sequelize[_0x090f('0x3')]},'note':{'type':Sequelize[_0x090f('0x3')]},'inReplyTo':{'type':Sequelize[_0x090f('0x3')](0x1fe)},'to':{'type':Sequelize[_0x090f('0x3')]},'cc':{'type':Sequelize['TEXT'](_0x090f('0x4'))},'subject':{'type':Sequelize[_0x090f('0x5')]()},'attach':{'type':Sequelize[_0x090f('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x090f('0x2')]},'substatus':{'type':Sequelize[_0x090f('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x090f('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x090f('0x6')]('in',_0x090f('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x090f('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x090f('0x6')]('in',_0x090f('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x090f('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 2656d4f..25d15df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b3e=['rawAttributes','fieldName','type','key','getOptions','findAll','user','show','params','model','query','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','create','body','catch','find','describe','addMessage','MailMessage','ids','omit','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','addTags','setTags','spread','Tag','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','files','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','each','missing.recipient@your.company.com','decode','headers','Bcc','readFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','html-entities','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','update','then','destroy','error','stack','name','send','index','MailInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4b3e,0xbb));var _0xe4b3=function(_0x2a0350,_0x249319){_0x2a0350=_0x2a0350-0x0;var _0x425220=_0x4b3e[_0x2a0350];return _0x425220;};'use strict';var emlformat=require(_0xe4b3('0x0'));var rimraf=require(_0xe4b3('0x1'));var zipdir=require(_0xe4b3('0x2'));var moment=require(_0xe4b3('0x3'));var BPromise=require(_0xe4b3('0x4'));var util=require(_0xe4b3('0x5'));var path=require(_0xe4b3('0x6'));var fs=require('fs');var _=require(_0xe4b3('0x7'));var juice=require(_0xe4b3('0x8'));var Redis=require('ioredis');var interaction=require(_0xe4b3('0x9'));var qs=require(_0xe4b3('0xa'));var logger=require('../../config/logger')(_0xe4b3('0xb'));var config=require(_0xe4b3('0xc'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0xe4b3('0xd'));config[_0xe4b3('0xe')]=_[_0xe4b3('0xf')](config['redis'],{'host':_0xe4b3('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe4b3('0xe')]));require(_0xe4b3('0x11'))[_0xe4b3('0x12')](socket);function respondWithStatusCode(_0x3800ec,_0x1288da){_0x1288da=_0x1288da||0xcc;return function(_0x5f0ab6){if(_0x5f0ab6){return _0x3800ec[_0xe4b3('0x13')](_0x1288da);}return _0x3800ec[_0xe4b3('0x14')](_0x1288da)[_0xe4b3('0x15')]();};}function respondWithResult(_0x34ceb9,_0x334384){_0x334384=_0x334384||0xc8;return function(_0x439772){if(_0x439772){return _0x34ceb9['status'](_0x334384)[_0xe4b3('0x16')](_0x439772);}};}function respondWithFilteredResult(_0x40e26f,_0x3694e3){return function(_0x54fddf){if(_0x54fddf){var _0xa293e0=typeof _0x3694e3[_0xe4b3('0x17')]==='undefined'&&typeof _0x3694e3[_0xe4b3('0x18')]===_0xe4b3('0x19');var _0x4164e9=_0x54fddf[_0xe4b3('0x1a')];var _0x3e8c2e=_0xa293e0?0x0:_0x3694e3[_0xe4b3('0x17')];var _0x1aaf8e=_0xa293e0?_0x54fddf[_0xe4b3('0x1a')]:_0x3694e3[_0xe4b3('0x17')]+_0x3694e3[_0xe4b3('0x18')];var _0x53d2f9;if(_0x1aaf8e>=_0x4164e9){_0x1aaf8e=_0x4164e9;_0x53d2f9=0xc8;}else{_0x53d2f9=0xce;}_0x40e26f['status'](_0x53d2f9);return _0x40e26f['set'](_0xe4b3('0x1b'),_0x3e8c2e+'-'+_0x1aaf8e+'/'+_0x4164e9)[_0xe4b3('0x16')](_0x54fddf);}return null;};}function saveUpdates(_0x3ea401){return function(_0x58b036){if(_0x58b036){return _0x58b036[_0xe4b3('0x1c')](_0x3ea401)[_0xe4b3('0x1d')](function(_0x2adc2b){return _0x2adc2b;});}return null;};}function removeEntity(_0x15d830){return function(_0x262826){if(_0x262826){return _0x262826[_0xe4b3('0x1e')]()[_0xe4b3('0x1d')](function(){_0x15d830['status'](0xcc)[_0xe4b3('0x15')]();});}};}function handleEntityNotFound(_0x5cbdc6){return function(_0x3ce327){if(!_0x3ce327){_0x5cbdc6[_0xe4b3('0x13')](0x194);}return _0x3ce327;};}function handleError(_0xa94ea,_0x3f6350){_0x3f6350=_0x3f6350||0x1f4;return function(_0x4b18b6){logger[_0xe4b3('0x1f')](_0x4b18b6[_0xe4b3('0x20')]);if(_0x4b18b6[_0xe4b3('0x21')]){delete _0x4b18b6[_0xe4b3('0x21')];}_0xa94ea[_0xe4b3('0x14')](_0x3f6350)[_0xe4b3('0x22')](_0x4b18b6);};}exports[_0xe4b3('0x23')]=function(_0xf41a94,_0x266374){var _0x1bf97c={};var _0x5521a7=_['map'](db[_0xe4b3('0x24')][_0xe4b3('0x25')],function(_0xc7df89){return{'name':_0xc7df89[_0xe4b3('0x26')],'type':_0xc7df89[_0xe4b3('0x27')][_0xe4b3('0x28')]};});_0x1bf97c=qs[_0xe4b3('0x29')](_0x5521a7,_0xf41a94);return interaction[_0xe4b3('0x2a')]('mail',_0xf41a94['query'],_0xf41a94[_0xe4b3('0x2b')],_0x1bf97c,_0x5521a7)[_0xe4b3('0x1d')](respondWithFilteredResult(_0x266374,_0x1bf97c))['catch'](handleError(_0x266374,null));};exports[_0xe4b3('0x2c')]=function(_0x794915,_0x281779){var _0x587774={'raw':![],'where':{'id':_0x794915[_0xe4b3('0x2d')]['id']}},_0x654607={};_0x654607[_0xe4b3('0x2e')]=_['keys'](db[_0xe4b3('0x24')][_0xe4b3('0x25')]);_0x654607[_0xe4b3('0x2f')]=_[_0xe4b3('0x30')](_0x794915[_0xe4b3('0x2f')]);_0x654607[_0xe4b3('0x31')]=_[_0xe4b3('0x32')](_0x654607[_0xe4b3('0x2e')],_0x654607[_0xe4b3('0x2f')]);_0x587774[_0xe4b3('0x33')]=_[_0xe4b3('0x32')](_0x654607[_0xe4b3('0x2e')],qs['fields'](_0x794915[_0xe4b3('0x2f')][_0xe4b3('0x34')]));_0x587774[_0xe4b3('0x33')]=_0x587774['attributes'][_0xe4b3('0x35')]?_0x587774[_0xe4b3('0x33')]:_0x654607[_0xe4b3('0x2e')];if(_0x794915['query'][_0xe4b3('0x36')]){_0x587774[_0xe4b3('0x37')]=[{'all':!![]}];}_0x587774=_[_0xe4b3('0x38')]({},_0x587774,_0x794915[_0xe4b3('0x39')]);return db[_0xe4b3('0x24')]['find'](_0x587774)[_0xe4b3('0x1d')](handleEntityNotFound(_0x281779,null))['then'](respondWithResult(_0x281779,null))['catch'](handleError(_0x281779,null));};exports[_0xe4b3('0x3a')]=function(_0xa9597f,_0x3dc17a){return db[_0xe4b3('0x24')]['create'](_0xa9597f[_0xe4b3('0x3b')],{})['then'](respondWithResult(_0x3dc17a,0xc9))[_0xe4b3('0x3c')](handleError(_0x3dc17a,null));};exports[_0xe4b3('0x1c')]=function(_0x2a9066,_0x3fd839){if(_0x2a9066[_0xe4b3('0x3b')]['id']){delete _0x2a9066[_0xe4b3('0x3b')]['id'];}return db[_0xe4b3('0x24')][_0xe4b3('0x3d')]({'where':{'id':_0x2a9066[_0xe4b3('0x2d')]['id']}})[_0xe4b3('0x1d')](handleEntityNotFound(_0x3fd839,null))[_0xe4b3('0x1d')](saveUpdates(_0x2a9066[_0xe4b3('0x3b')],null))[_0xe4b3('0x1d')](respondWithResult(_0x3fd839,null))[_0xe4b3('0x3c')](handleError(_0x3fd839,null));};exports[_0xe4b3('0x1e')]=function(_0x5958b7,_0x364475){return db[_0xe4b3('0x24')]['find']({'where':{'id':_0x5958b7[_0xe4b3('0x2d')]['id']}})['then'](handleEntityNotFound(_0x364475,null))['then'](removeEntity(_0x364475,null))['catch'](handleError(_0x364475,null));};exports['describe']=function(_0x12f89b,_0x2a91c6){return db[_0xe4b3('0x24')][_0xe4b3('0x3e')]()[_0xe4b3('0x1d')](respondWithResult(_0x2a91c6,null))['catch'](handleError(_0x2a91c6,null));};exports[_0xe4b3('0x3f')]=function(_0x3de724,_0x35da81){return db[_0xe4b3('0x40')]['find']({'where':{'id':_0x3de724['params']['id']}})[_0xe4b3('0x1d')](handleEntityNotFound(_0x35da81,null))[_0xe4b3('0x1d')](function(_0x319e38){if(_0x319e38){return _0x319e38[_0xe4b3('0x3f')](_0x3de724[_0xe4b3('0x3b')][_0xe4b3('0x41')],_[_0xe4b3('0x42')](_0x3de724['body'],[_0xe4b3('0x41'),'id'])||{});}})[_0xe4b3('0x1d')](respondWithResult(_0x35da81,null))[_0xe4b3('0x3c')](handleError(_0x35da81,null));};exports['getMessages']=function(_0x11b254,_0x426351){var _0x2e8dfe={'raw':![],'where':{}};var _0x357d9d={};var _0x45fe01={'count':0x0,'rows':[]};return db['MailInteraction']['findOne']({'where':{'id':_0x11b254[_0xe4b3('0x2d')]['id']}})[_0xe4b3('0x1d')](handleEntityNotFound(_0x426351,null))[_0xe4b3('0x1d')](function(_0x45d9f4){if(_0x45d9f4){_0x357d9d[_0xe4b3('0x2e')]=_[_0xe4b3('0x30')](db[_0xe4b3('0x40')]['rawAttributes']);_0x357d9d[_0xe4b3('0x2f')]=_['keys'](_0x11b254[_0xe4b3('0x2f')]);_0x357d9d['filters']=_[_0xe4b3('0x32')](_0x357d9d[_0xe4b3('0x2e')],_0x357d9d[_0xe4b3('0x2f')]);_0x2e8dfe[_0xe4b3('0x33')]=_[_0xe4b3('0x32')](_0x357d9d['model'],qs[_0xe4b3('0x34')](_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x34')]));_0x2e8dfe[_0xe4b3('0x33')]=_0x2e8dfe['attributes'][_0xe4b3('0x35')]?_0x2e8dfe['attributes']:_0x357d9d[_0xe4b3('0x2e')];if(!_0x11b254['query'][_0xe4b3('0x43')](_0xe4b3('0x44'))){_0x2e8dfe['limit']=qs['limit'](_0x11b254['query'][_0xe4b3('0x18')]);_0x2e8dfe[_0xe4b3('0x17')]=qs[_0xe4b3('0x17')](_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x17')]);}_0x2e8dfe[_0xe4b3('0x45')]=qs[_0xe4b3('0x46')](_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x46')]);_0x2e8dfe[_0xe4b3('0x47')]=qs[_0xe4b3('0x31')](_[_0xe4b3('0x48')](_0x11b254[_0xe4b3('0x2f')],_0x357d9d[_0xe4b3('0x31')]));_0x2e8dfe[_0xe4b3('0x47')]['MailInteractionId']=_0x45d9f4['id'];if(_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x49')]){_0x2e8dfe[_0xe4b3('0x47')]=_[_0xe4b3('0x38')](_0x2e8dfe['where'],{'$or':_[_0xe4b3('0x4a')](_0x2e8dfe['attributes'],function(_0xa54526){var _0x2904a6={};_0x2904a6[_0xa54526]={'$like':'%'+_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x49')]+'%'};return _0x2904a6;})});}if(_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x4b')]){var _0x219fde=_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x4b')][_0xe4b3('0x4c')](',');var _0x235f6e={};_0x235f6e[_0x219fde[0x0]]={'$gte':moment(_0x219fde[0x1])[_0xe4b3('0x4d')](_0xe4b3('0x4e'))};_0x2e8dfe[_0xe4b3('0x47')]=_['merge'](_0x2e8dfe[_0xe4b3('0x47')],_0x235f6e);}_0x2e8dfe=_[_0xe4b3('0x38')]({},_0x2e8dfe,_0x11b254[_0xe4b3('0x39')]);return db[_0xe4b3('0x40')][_0xe4b3('0x1a')]({'where':_0x2e8dfe[_0xe4b3('0x47')]})['then'](function(_0x212ef7){_0x45fe01[_0xe4b3('0x1a')]=_0x212ef7;if(_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x36')]){_0x2e8dfe['include']=[{'all':!![]}];}return db['MailMessage'][_0xe4b3('0x2a')](_0x2e8dfe);})['then'](function(_0x22ea70){if(_0x11b254[_0xe4b3('0x2f')][_0xe4b3('0x4f')]==='true'){for(var _0x406b5f=0x0;_0x406b5f<_0x22ea70['length'];_0x406b5f++){_0x22ea70[_0x406b5f][_0xe4b3('0x3b')]=juice(_0x22ea70[_0x406b5f][_0xe4b3('0x3b')]);}}_0x45fe01['rows']=_0x22ea70;return _0x45fe01;});}})['then'](respondWithFilteredResult(_0x426351,_0x2e8dfe))[_0xe4b3('0x3c')](handleError(_0x426351,null));};exports[_0xe4b3('0x50')]=function(_0x13dbac,_0x326d06){return db['MailInteraction'][_0xe4b3('0x3d')]({'where':{'id':_0x13dbac[_0xe4b3('0x2d')]['id']}})['then'](handleEntityNotFound(_0x326d06,null))['then'](function(_0x561818){if(_0x561818){return _0x561818[_0xe4b3('0x51')](_0x13dbac[_0xe4b3('0x3b')]['ids'],_['omit'](_0x13dbac['body'],['ids','id'])||{})[_0xe4b3('0x52')](function(){return db[_0xe4b3('0x53')][_0xe4b3('0x2a')]({'attributes':['id',_0xe4b3('0x21'),'color'],'where':{'id':_0x13dbac[_0xe4b3('0x3b')][_0xe4b3('0x41')]}});})['then'](function(_0xa057d0){socket[_0xe4b3('0x54')](_0xe4b3('0x55'),{'id':Number(_0x13dbac[_0xe4b3('0x2d')]['id']),'tags':_0xa057d0||[]});return{'id':Number(_0x13dbac[_0xe4b3('0x2d')]['id']),'tags':_0xa057d0||[]};});}})[_0xe4b3('0x1d')](respondWithResult(_0x326d06,null))[_0xe4b3('0x3c')](handleError(_0x326d06,null));};exports[_0xe4b3('0x56')]=function(_0x104e5d,_0x3b63e5){return db['MailInteraction'][_0xe4b3('0x3d')]({'where':{'id':_0x104e5d[_0xe4b3('0x2d')]['id']}})[_0xe4b3('0x1d')](handleEntityNotFound(_0x3b63e5,null))[_0xe4b3('0x1d')](function(_0x37a34b){if(_0x37a34b){return _0x37a34b[_0xe4b3('0x56')](_0x104e5d['query'][_0xe4b3('0x41')]);}})['then'](respondWithStatusCode(_0x3b63e5,null))[_0xe4b3('0x3c')](handleError(_0x3b63e5,null));};exports[_0xe4b3('0x57')]=function(_0x4b0ba3,_0x44f5c1){var _0x3c2d29=moment()[_0xe4b3('0x58')]()[_0xe4b3('0x59')]();var _0xbd87d1=path[_0xe4b3('0x5a')](config[_0xe4b3('0x5b')],'server',_0xe4b3('0x5c'),'tmp');var _0x9640b9=path[_0xe4b3('0x5a')](config[_0xe4b3('0x5b')],'server','files',_0xe4b3('0x5d'));var _0x20c10d=path[_0xe4b3('0x5a')](_0xbd87d1,_0x3c2d29);var _0x3a0561=util[_0xe4b3('0x4d')](_0xe4b3('0x5e'),_0x4b0ba3[_0xe4b3('0x2d')]['id'],_0x3c2d29);var _0x2f4ae7=path['join'](_0xbd87d1,_0x3a0561);var _0x4f5593=[];if(_0x4b0ba3[_0xe4b3('0x2f')][_0xe4b3('0x5d')]){_0x4f5593[_0xe4b3('0x5f')]({'model':db[_0xe4b3('0x60')],'as':_0xe4b3('0x61'),'raw':!![]});}var _0x435418=[{'model':db['MailMessage'],'as':_0xe4b3('0x62'),'attributes':['id',_0xe4b3('0x3b'),_0xe4b3('0x63'),'to','cc',_0xe4b3('0x64'),_0xe4b3('0x65'),_0xe4b3('0x66')],'where':{'secret':![]},'order':qs[_0xe4b3('0x46')]('id'),'include':_0x4f5593}];return db['MailInteraction']['find']({'where':{'id':_0x4b0ba3[_0xe4b3('0x2d')]['id']},'include':_0x435418})['then'](handleEntityNotFound(_0x44f5c1,null))[_0xe4b3('0x1d')](function(_0x6e647c){if(_0x6e647c&&_0x6e647c['Messages']){var _0x3e69ae=_0x6e647c[_0xe4b3('0x67')]({'plain':!![]});fs['mkdirSync'](_0x20c10d);return BPromise[_0xe4b3('0x68')](_0x3e69ae[_0xe4b3('0x62')],function(_0x551c7f,_0x356a3d){var _0x1176de={'from':_0x551c7f['from'],'to':_0x551c7f['to']||_0xe4b3('0x69'),'subject':_0x551c7f[_0xe4b3('0x65')],'html':htmlEntities[_0xe4b3('0x6a')](_0x551c7f[_0xe4b3('0x3b')]),'headers':{'Date':moment(_0x551c7f['createdAt'])[_0xe4b3('0x4d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x551c7f['cc']){_0x1176de[_0xe4b3('0x6b')]['Cc']=_0x551c7f['cc'];}if(_0x551c7f[_0xe4b3('0x64')]){_0x1176de['headers'][_0xe4b3('0x6c')]=_0x551c7f[_0xe4b3('0x64')];}return new BPromise(function(_0x5a5335,_0x5e720d){if(_0x551c7f[_0xe4b3('0x61')]){for(var _0x53d8ca=0x0;_0x53d8ca<_0x551c7f[_0xe4b3('0x61')][_0xe4b3('0x35')];_0x53d8ca++){var _0x346d57=_0x551c7f[_0xe4b3('0x61')][_0x53d8ca];var _0x54986e=path[_0xe4b3('0x5a')](_0x9640b9,_0x346d57['basename']);if(fs['existsSync'](_0x54986e)){_0x1176de['attachments'][_0xe4b3('0x5f')]({'name':_0x346d57['name'],'contentType':_0x346d57[_0xe4b3('0x27')],'data':fs[_0xe4b3('0x6d')](_0x54986e)});}}}emlformat['build'](_0x1176de,function(_0x236108,_0x2c48e6){if(_0x236108)return _0x5e720d(_0x236108);fs['writeFileSync'](path[_0xe4b3('0x5a')](_0x20c10d,util[_0xe4b3('0x4d')](_0xe4b3('0x6e'),_0x356a3d)),_0x2c48e6);return _0x5a5335(_0x2c48e6);});});})[_0xe4b3('0x1d')](function(){return new BPromise(function(_0x4cfd58,_0x15cd30){zipdir(_0x20c10d,{'saveTo':_0x2f4ae7},function(_0x1d6030,_0x352906){if(_0x1d6030)return _0x15cd30(_0x1d6030);return _0x4cfd58(_0x352906);});})[_0xe4b3('0x1d')](function(){return new BPromise(function(_0x35f042,_0x553d50){rimraf(_0x20c10d,function(_0x28a9c1){if(_0x28a9c1)_0x553d50(_0x28a9c1);return _0x35f042();});});})['then'](function(){return _0x44f5c1[_0xe4b3('0x57')](_0x2f4ae7,_0x3a0561,function(_0x449872){if(!_0x449872)fs[_0xe4b3('0x6f')](_0x2f4ae7);});});});}else{return _0x44f5c1[_0xe4b3('0x13')](0xc8);}})[_0xe4b3('0x3c')](handleError(_0x44f5c1,null));};
\ No newline at end of file
+var _0x1160=['hasOwnProperty','nolimit','order','sort','where','pick','MailInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','setTags','omit','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','from','bcc','subject','createdAt','get','mkdirSync','each','missing.recipient@your.company.com','headers','Bcc','Attachments','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','bluebird','util','lodash','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','json','update','then','destroy','name','send','index','map','MailInteraction','rawAttributes','fieldName','key','findAll','query','user','show','params','model','keys','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','ids','findOne','MailMessage'];(function(_0x7a4b22,_0x42be66){var _0x13af34=function(_0x34a3e2){while(--_0x34a3e2){_0x7a4b22['push'](_0x7a4b22['shift']());}};_0x13af34(++_0x42be66);}(_0x1160,0x118));var _0x0116=function(_0x11de83,_0x49e1c1){_0x11de83=_0x11de83-0x0;var _0x45bdb0=_0x1160[_0x11de83];return _0x45bdb0;};'use strict';var emlformat=require(_0x0116('0x0'));var rimraf=require(_0x0116('0x1'));var zipdir=require(_0x0116('0x2'));var moment=require('moment');var BPromise=require(_0x0116('0x3'));var util=require(_0x0116('0x4'));var path=require('path');var fs=require('fs');var _=require(_0x0116('0x5'));var juice=require('juice');var Redis=require('ioredis');var interaction=require(_0x0116('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x0116('0x7'))(_0x0116('0x8'));var config=require(_0x0116('0x9'));var db=require(_0x0116('0xa'))['db'];var htmlEntities=require(_0x0116('0xb'));config[_0x0116('0xc')]=_[_0x0116('0xd')](config[_0x0116('0xc')],{'host':_0x0116('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0116('0xc')]));require(_0x0116('0xf'))[_0x0116('0x10')](socket);function respondWithStatusCode(_0x477071,_0x32c4a2){_0x32c4a2=_0x32c4a2||0xcc;return function(_0xce67c0){if(_0xce67c0){return _0x477071[_0x0116('0x11')](_0x32c4a2);}return _0x477071['status'](_0x32c4a2)[_0x0116('0x12')]();};}function respondWithResult(_0x55124c,_0x1cebbc){_0x1cebbc=_0x1cebbc||0xc8;return function(_0x525fcf){if(_0x525fcf){return _0x55124c[_0x0116('0x13')](_0x1cebbc)['json'](_0x525fcf);}};}function respondWithFilteredResult(_0x16e7d6,_0x450a58){return function(_0x4fc356){if(_0x4fc356){var _0x314da4=typeof _0x450a58[_0x0116('0x14')]===_0x0116('0x15')&&typeof _0x450a58[_0x0116('0x16')]===_0x0116('0x15');var _0xdc6243=_0x4fc356[_0x0116('0x17')];var _0x8af561=_0x314da4?0x0:_0x450a58[_0x0116('0x14')];var _0x3488a6=_0x314da4?_0x4fc356[_0x0116('0x17')]:_0x450a58[_0x0116('0x14')]+_0x450a58[_0x0116('0x16')];var _0x4309f2;if(_0x3488a6>=_0xdc6243){_0x3488a6=_0xdc6243;_0x4309f2=0xc8;}else{_0x4309f2=0xce;}_0x16e7d6[_0x0116('0x13')](_0x4309f2);return _0x16e7d6[_0x0116('0x18')]('Content-Range',_0x8af561+'-'+_0x3488a6+'/'+_0xdc6243)[_0x0116('0x19')](_0x4fc356);}return null;};}function saveUpdates(_0x3610b6){return function(_0x392682){if(_0x392682){return _0x392682[_0x0116('0x1a')](_0x3610b6)[_0x0116('0x1b')](function(_0x5652ba){return _0x5652ba;});}return null;};}function removeEntity(_0x9d1287){return function(_0xdd1b1a){if(_0xdd1b1a){return _0xdd1b1a[_0x0116('0x1c')]()[_0x0116('0x1b')](function(){_0x9d1287['status'](0xcc)[_0x0116('0x12')]();});}};}function handleEntityNotFound(_0x2e14b9){return function(_0x4786a9){if(!_0x4786a9){_0x2e14b9['sendStatus'](0x194);}return _0x4786a9;};}function handleError(_0x40dc1a,_0x3c1152){_0x3c1152=_0x3c1152||0x1f4;return function(_0x4889d7){logger['error'](_0x4889d7['stack']);if(_0x4889d7[_0x0116('0x1d')]){delete _0x4889d7[_0x0116('0x1d')];}_0x40dc1a[_0x0116('0x13')](_0x3c1152)[_0x0116('0x1e')](_0x4889d7);};}exports[_0x0116('0x1f')]=function(_0x4ab7f1,_0x88dc13){var _0x45c501={};var _0x551aa5=_[_0x0116('0x20')](db[_0x0116('0x21')][_0x0116('0x22')],function(_0x21c301){return{'name':_0x21c301[_0x0116('0x23')],'type':_0x21c301['type'][_0x0116('0x24')]};});_0x45c501=qs['getOptions'](_0x551aa5,_0x4ab7f1);return interaction[_0x0116('0x25')]('mail',_0x4ab7f1[_0x0116('0x26')],_0x4ab7f1[_0x0116('0x27')],_0x45c501,_0x551aa5)[_0x0116('0x1b')](respondWithFilteredResult(_0x88dc13,_0x45c501))['catch'](handleError(_0x88dc13,null));};exports[_0x0116('0x28')]=function(_0x368f55,_0xa5d668){var _0x3227cf={'raw':![],'where':{'id':_0x368f55[_0x0116('0x29')]['id']}},_0x383d39={};_0x383d39[_0x0116('0x2a')]=_[_0x0116('0x2b')](db[_0x0116('0x21')][_0x0116('0x22')]);_0x383d39['query']=_['keys'](_0x368f55['query']);_0x383d39[_0x0116('0x2c')]=_['intersection'](_0x383d39[_0x0116('0x2a')],_0x383d39['query']);_0x3227cf[_0x0116('0x2d')]=_[_0x0116('0x2e')](_0x383d39[_0x0116('0x2a')],qs['fields'](_0x368f55[_0x0116('0x26')][_0x0116('0x2f')]));_0x3227cf[_0x0116('0x2d')]=_0x3227cf[_0x0116('0x2d')][_0x0116('0x30')]?_0x3227cf['attributes']:_0x383d39[_0x0116('0x2a')];if(_0x368f55[_0x0116('0x26')][_0x0116('0x31')]){_0x3227cf[_0x0116('0x32')]=[{'all':!![]}];}_0x3227cf=_[_0x0116('0x33')]({},_0x3227cf,_0x368f55[_0x0116('0x34')]);return db[_0x0116('0x21')][_0x0116('0x35')](_0x3227cf)[_0x0116('0x1b')](handleEntityNotFound(_0xa5d668,null))[_0x0116('0x1b')](respondWithResult(_0xa5d668,null))[_0x0116('0x36')](handleError(_0xa5d668,null));};exports[_0x0116('0x37')]=function(_0x12f980,_0x1a86af){return db['MailInteraction'][_0x0116('0x37')](_0x12f980[_0x0116('0x38')],{})['then'](respondWithResult(_0x1a86af,0xc9))[_0x0116('0x36')](handleError(_0x1a86af,null));};exports[_0x0116('0x1a')]=function(_0x26974b,_0x331c85){if(_0x26974b[_0x0116('0x38')]['id']){delete _0x26974b[_0x0116('0x38')]['id'];}return db[_0x0116('0x21')]['find']({'where':{'id':_0x26974b[_0x0116('0x29')]['id']}})[_0x0116('0x1b')](handleEntityNotFound(_0x331c85,null))[_0x0116('0x1b')](saveUpdates(_0x26974b[_0x0116('0x38')],null))[_0x0116('0x1b')](respondWithResult(_0x331c85,null))[_0x0116('0x36')](handleError(_0x331c85,null));};exports[_0x0116('0x1c')]=function(_0xf75405,_0x214736){return db[_0x0116('0x21')]['find']({'where':{'id':_0xf75405[_0x0116('0x29')]['id']}})['then'](handleEntityNotFound(_0x214736,null))[_0x0116('0x1b')](removeEntity(_0x214736,null))['catch'](handleError(_0x214736,null));};exports[_0x0116('0x39')]=function(_0x197671,_0x43b52b){return db['MailInteraction']['describe']()[_0x0116('0x1b')](respondWithResult(_0x43b52b,null))[_0x0116('0x36')](handleError(_0x43b52b,null));};exports[_0x0116('0x3a')]=function(_0x2ca74c,_0x3c357b){return db['MailMessage'][_0x0116('0x35')]({'where':{'id':_0x2ca74c[_0x0116('0x29')]['id']}})[_0x0116('0x1b')](handleEntityNotFound(_0x3c357b,null))['then'](function(_0x1bc2c7){if(_0x1bc2c7){return _0x1bc2c7['addMessage'](_0x2ca74c[_0x0116('0x38')][_0x0116('0x3b')],_['omit'](_0x2ca74c[_0x0116('0x38')],[_0x0116('0x3b'),'id'])||{});}})['then'](respondWithResult(_0x3c357b,null))[_0x0116('0x36')](handleError(_0x3c357b,null));};exports['getMessages']=function(_0x3607e2,_0x24b77b){var _0x4ca11d={'raw':![],'where':{}};var _0x5bf40b={};var _0x209f89={'count':0x0,'rows':[]};return db['MailInteraction'][_0x0116('0x3c')]({'where':{'id':_0x3607e2[_0x0116('0x29')]['id']}})['then'](handleEntityNotFound(_0x24b77b,null))[_0x0116('0x1b')](function(_0x120137){if(_0x120137){_0x5bf40b[_0x0116('0x2a')]=_[_0x0116('0x2b')](db[_0x0116('0x3d')][_0x0116('0x22')]);_0x5bf40b[_0x0116('0x26')]=_[_0x0116('0x2b')](_0x3607e2[_0x0116('0x26')]);_0x5bf40b[_0x0116('0x2c')]=_['intersection'](_0x5bf40b['model'],_0x5bf40b[_0x0116('0x26')]);_0x4ca11d['attributes']=_['intersection'](_0x5bf40b[_0x0116('0x2a')],qs['fields'](_0x3607e2['query'][_0x0116('0x2f')]));_0x4ca11d[_0x0116('0x2d')]=_0x4ca11d[_0x0116('0x2d')][_0x0116('0x30')]?_0x4ca11d[_0x0116('0x2d')]:_0x5bf40b[_0x0116('0x2a')];if(!_0x3607e2[_0x0116('0x26')][_0x0116('0x3e')](_0x0116('0x3f'))){_0x4ca11d['limit']=qs[_0x0116('0x16')](_0x3607e2['query'][_0x0116('0x16')]);_0x4ca11d[_0x0116('0x14')]=qs[_0x0116('0x14')](_0x3607e2[_0x0116('0x26')][_0x0116('0x14')]);}_0x4ca11d[_0x0116('0x40')]=qs[_0x0116('0x41')](_0x3607e2[_0x0116('0x26')][_0x0116('0x41')]);_0x4ca11d[_0x0116('0x42')]=qs[_0x0116('0x2c')](_[_0x0116('0x43')](_0x3607e2[_0x0116('0x26')],_0x5bf40b[_0x0116('0x2c')]));_0x4ca11d[_0x0116('0x42')][_0x0116('0x44')]=_0x120137['id'];if(_0x3607e2[_0x0116('0x26')][_0x0116('0x45')]){_0x4ca11d[_0x0116('0x42')]=_['merge'](_0x4ca11d[_0x0116('0x42')],{'$or':_[_0x0116('0x20')](_0x4ca11d[_0x0116('0x2d')],function(_0x552776){var _0x2bd24d={};_0x2bd24d[_0x552776]={'$like':'%'+_0x3607e2['query'][_0x0116('0x45')]+'%'};return _0x2bd24d;})});}if(_0x3607e2[_0x0116('0x26')][_0x0116('0x46')]){var _0x1fbfe7=_0x3607e2[_0x0116('0x26')][_0x0116('0x46')][_0x0116('0x47')](',');var _0xafd0e7={};_0xafd0e7[_0x1fbfe7[0x0]]={'$gte':moment(_0x1fbfe7[0x1])[_0x0116('0x48')](_0x0116('0x49'))};_0x4ca11d['where']=_[_0x0116('0x33')](_0x4ca11d[_0x0116('0x42')],_0xafd0e7);}_0x4ca11d=_[_0x0116('0x33')]({},_0x4ca11d,_0x3607e2[_0x0116('0x34')]);return db['MailMessage']['count']({'where':_0x4ca11d['where']})[_0x0116('0x1b')](function(_0x163cfe){_0x209f89[_0x0116('0x17')]=_0x163cfe;if(_0x3607e2[_0x0116('0x26')]['includeAll']){_0x4ca11d[_0x0116('0x32')]=[{'all':!![]}];}return db[_0x0116('0x3d')]['findAll'](_0x4ca11d);})['then'](function(_0x588f74){if(_0x3607e2[_0x0116('0x26')][_0x0116('0x4a')]===_0x0116('0x4b')){for(var _0x355bf2=0x0;_0x355bf2<_0x588f74[_0x0116('0x30')];_0x355bf2++){_0x588f74[_0x355bf2]['body']=juice(_0x588f74[_0x355bf2][_0x0116('0x38')]);}}_0x209f89['rows']=_0x588f74;return _0x209f89;});}})[_0x0116('0x1b')](respondWithFilteredResult(_0x24b77b,_0x4ca11d))[_0x0116('0x36')](handleError(_0x24b77b,null));};exports['addTags']=function(_0x36cbea,_0x561207){return db[_0x0116('0x21')][_0x0116('0x35')]({'where':{'id':_0x36cbea[_0x0116('0x29')]['id']}})[_0x0116('0x1b')](handleEntityNotFound(_0x561207,null))[_0x0116('0x1b')](function(_0x402bd2){if(_0x402bd2){return _0x402bd2[_0x0116('0x4c')](_0x36cbea[_0x0116('0x38')][_0x0116('0x3b')],_[_0x0116('0x4d')](_0x36cbea['body'],['ids','id'])||{})[_0x0116('0x4e')](function(){return db[_0x0116('0x4f')][_0x0116('0x25')]({'attributes':['id',_0x0116('0x1d'),_0x0116('0x50')],'where':{'id':_0x36cbea['body'][_0x0116('0x3b')]}});})[_0x0116('0x1b')](function(_0x42ec7e){socket[_0x0116('0x51')](_0x0116('0x52'),{'id':Number(_0x36cbea[_0x0116('0x29')]['id']),'tags':_0x42ec7e||[]});return{'id':Number(_0x36cbea[_0x0116('0x29')]['id']),'tags':_0x42ec7e||[]};});}})[_0x0116('0x1b')](respondWithResult(_0x561207,null))['catch'](handleError(_0x561207,null));};exports[_0x0116('0x53')]=function(_0x1f178f,_0x5a4a42){return db['MailInteraction'][_0x0116('0x35')]({'where':{'id':_0x1f178f[_0x0116('0x29')]['id']}})[_0x0116('0x1b')](handleEntityNotFound(_0x5a4a42,null))[_0x0116('0x1b')](function(_0x1a1d5d){if(_0x1a1d5d){return _0x1a1d5d[_0x0116('0x53')](_0x1f178f[_0x0116('0x26')][_0x0116('0x3b')]);}})[_0x0116('0x1b')](respondWithStatusCode(_0x5a4a42,null))['catch'](handleError(_0x5a4a42,null));};exports[_0x0116('0x54')]=function(_0x18b99d,_0x4d135b){var _0x62ccdf=moment()[_0x0116('0x55')]()[_0x0116('0x56')]();var _0x47832d=path[_0x0116('0x57')](config[_0x0116('0x58')],_0x0116('0x59'),_0x0116('0x5a'),_0x0116('0x5b'));var _0x49da48=path['join'](config[_0x0116('0x58')],'server',_0x0116('0x5a'),_0x0116('0x5c'));var _0x3e58b6=path[_0x0116('0x57')](_0x47832d,_0x62ccdf);var _0x1159fc=util[_0x0116('0x48')](_0x0116('0x5d'),_0x18b99d['params']['id'],_0x62ccdf);var _0x3c6ec8=path[_0x0116('0x57')](_0x47832d,_0x1159fc);var _0x3072af=[];if(_0x18b99d[_0x0116('0x26')][_0x0116('0x5c')]){_0x3072af['push']({'model':db[_0x0116('0x5e')],'as':'Attachments','raw':!![]});}var _0x3451ef=[{'model':db[_0x0116('0x3d')],'as':_0x0116('0x5f'),'attributes':['id',_0x0116('0x38'),_0x0116('0x60'),'to','cc',_0x0116('0x61'),_0x0116('0x62'),_0x0116('0x63')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x3072af}];return db[_0x0116('0x21')][_0x0116('0x35')]({'where':{'id':_0x18b99d[_0x0116('0x29')]['id']},'include':_0x3451ef})[_0x0116('0x1b')](handleEntityNotFound(_0x4d135b,null))[_0x0116('0x1b')](function(_0x1473d8){if(_0x1473d8&&_0x1473d8[_0x0116('0x5f')]){var _0x1ddadd=_0x1473d8[_0x0116('0x64')]({'plain':!![]});fs[_0x0116('0x65')](_0x3e58b6);return BPromise[_0x0116('0x66')](_0x1ddadd['Messages'],function(_0x50c346,_0x5b15e9){var _0x8cf7d0={'from':_0x50c346['from'],'to':_0x50c346['to']||_0x0116('0x67'),'subject':_0x50c346['subject'],'html':htmlEntities['decode'](_0x50c346[_0x0116('0x38')]),'headers':{'Date':moment(_0x50c346[_0x0116('0x63')])[_0x0116('0x48')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x50c346['cc']){_0x8cf7d0[_0x0116('0x68')]['Cc']=_0x50c346['cc'];}if(_0x50c346[_0x0116('0x61')]){_0x8cf7d0['headers'][_0x0116('0x69')]=_0x50c346['bcc'];}return new BPromise(function(_0x5ecc3f,_0xd1d762){if(_0x50c346[_0x0116('0x6a')]){for(var _0x5b12de=0x0;_0x5b12de<_0x50c346['Attachments']['length'];_0x5b12de++){var _0x554dc5=_0x50c346['Attachments'][_0x5b12de];var _0x4ccd2b=path[_0x0116('0x57')](_0x49da48,_0x554dc5[_0x0116('0x6b')]);if(fs[_0x0116('0x6c')](_0x4ccd2b)){_0x8cf7d0[_0x0116('0x5c')]['push']({'name':_0x554dc5[_0x0116('0x1d')],'contentType':_0x554dc5['type'],'data':fs[_0x0116('0x6d')](_0x4ccd2b)});}}}emlformat[_0x0116('0x6e')](_0x8cf7d0,function(_0x1cfaab,_0x20c50e){if(_0x1cfaab)return _0xd1d762(_0x1cfaab);fs[_0x0116('0x6f')](path[_0x0116('0x57')](_0x3e58b6,util[_0x0116('0x48')](_0x0116('0x70'),_0x5b15e9)),_0x20c50e);return _0x5ecc3f(_0x20c50e);});});})[_0x0116('0x1b')](function(){return new BPromise(function(_0x57c6f6,_0x1cc972){zipdir(_0x3e58b6,{'saveTo':_0x3c6ec8},function(_0x2fc906,_0x456603){if(_0x2fc906)return _0x1cc972(_0x2fc906);return _0x57c6f6(_0x456603);});})['then'](function(){return new BPromise(function(_0x4ffcd0,_0x545b38){rimraf(_0x3e58b6,function(_0x3090e9){if(_0x3090e9)_0x545b38(_0x3090e9);return _0x4ffcd0();});});})[_0x0116('0x1b')](function(){return _0x4d135b[_0x0116('0x54')](_0x3c6ec8,_0x1159fc,function(_0x454931){if(!_0x454931)fs[_0x0116('0x71')](_0x3c6ec8);});});});}else{return _0x4d135b[_0x0116('0x11')](0xc8);}})['catch'](handleError(_0x4d135b,null));};
\ No newline at end of file
index 86be79e..6f44944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb894=['hook','exports','events','MailInteraction','../../mysqldb','MailMessage','setMaxListeners','save','update','getUsers','then','map','findAll','setDataValue','length','emit','catch'];(function(_0x551959,_0xee87da){var _0x58955e=function(_0x5e8320){while(--_0x5e8320){_0x551959['push'](_0x551959['shift']());}};_0x58955e(++_0xee87da);}(_0xb894,0xf0));var _0x4b89=function(_0x3d2a3f,_0x542524){_0x3d2a3f=_0x3d2a3f-0x0;var _0x78d0ac=_0xb894[_0x3d2a3f];return _0x78d0ac;};'use strict';var EventEmitter=require(_0x4b89('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x4b89('0x1')];var MailMessage=require(_0x4b89('0x2'))['db'][_0x4b89('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x4b89('0x4')](0x0);var events={'afterCreate':_0x4b89('0x5'),'afterUpdate':_0x4b89('0x6'),'afterDestroy':'remove'};function emitEvent(_0x51e683){return function(_0xc7f3e9,_0x310158,_0x5f9b02){_0xc7f3e9[_0x4b89('0x7')]({'attributes':['id'],'raw':!![]})[_0x4b89('0x8')](function(_0x1d5385){_0xc7f3e9['setDataValue']('Users',_0x1d5385[_0x4b89('0x9')](function(_0x1aebbb){return{'id':_0x1aebbb['id']};}));return MailMessage[_0x4b89('0xa')]({'where':{'MailInteractionId':_0xc7f3e9['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4b89('0x8')](function(_0x4fd67e){_0xc7f3e9[_0x4b89('0xb')]('unreadMessages',_0x4fd67e[_0x4b89('0xc')]);MailInteractionEvents['emit'](_0x51e683+':'+_0xc7f3e9['id'],_0xc7f3e9);MailInteractionEvents[_0x4b89('0xd')](_0x51e683,_0xc7f3e9);_0x5f9b02(null);})[_0x4b89('0xe')](_0x5f9b02(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x4b89('0xf')](e,emitEvent(event));}}module[_0x4b89('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x4732=['setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','MailInteraction','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4732,0x82));var _0x2473=function(_0x16b667,_0xadec02){_0x16b667=_0x16b667-0x0;var _0x58620e=_0x4732[_0x16b667];return _0x58620e;};'use strict';var EventEmitter=require(_0x2473('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x2473('0x1')];var MailMessage=require(_0x2473('0x2'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x2473('0x3')](0x0);var events={'afterCreate':_0x2473('0x4'),'afterUpdate':_0x2473('0x5'),'afterDestroy':_0x2473('0x6')};function emitEvent(_0x19b256){return function(_0x1ae2bb,_0x2660e5,_0x18a636){_0x1ae2bb['getUsers']({'attributes':['id'],'raw':!![]})[_0x2473('0x7')](function(_0x4556dd){_0x1ae2bb[_0x2473('0x8')](_0x2473('0x9'),_0x4556dd[_0x2473('0xa')](function(_0x33df0d){return{'id':_0x33df0d['id']};}));return MailMessage[_0x2473('0xb')]({'where':{'MailInteractionId':_0x1ae2bb['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2473('0x7')](function(_0x578bf1){_0x1ae2bb[_0x2473('0x8')](_0x2473('0xc'),_0x578bf1[_0x2473('0xd')]);MailInteractionEvents[_0x2473('0xe')](_0x19b256+':'+_0x1ae2bb['id'],_0x1ae2bb);MailInteractionEvents[_0x2473('0xe')](_0x19b256,_0x1ae2bb);_0x18a636(null);})[_0x2473('0xf')](_0x18a636(null));};}for(var e in events){if(events[_0x2473('0x10')](e)){var event=events[e];MailInteraction[_0x2473('0x11')](e,emitEvent(event));}}module[_0x2473('0x12')]=MailInteractionEvents;
\ No newline at end of file
index b9dcabf..3bb9ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fb=['MailInteraction','fti_mail_interactions','subject','substatus','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','path','rimraf','./mailInteraction.attributes','exports'];(function(_0x2074db,_0x10b81b){var _0x27324c=function(_0x5c3d5c){while(--_0x5c3d5c){_0x2074db['push'](_0x2074db['shift']());}};_0x27324c(++_0x10b81b);}(_0x03fb,0x1a1));var _0xb03f=function(_0x24fadb,_0x1ec5c7){_0x24fadb=_0x24fadb-0x0;var _0x4b6abc=_0x03fb[_0x24fadb];return _0x4b6abc;};'use strict';var _=require(_0xb03f('0x0'));var util=require(_0xb03f('0x1'));var logger=require('../../config/logger')(_0xb03f('0x2'));var moment=require(_0xb03f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb03f('0x4'));var rimraf=require(_0xb03f('0x5'));var config=require('../../config/environment');var attributes=require(_0xb03f('0x6'));module[_0xb03f('0x7')]=function(_0xbf3a44,_0x1ff130){return _0xbf3a44['define'](_0xb03f('0x8'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xb03f('0x9'),'fields':[_0xb03f('0xa'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x225e1f,_0x2a2445,_0x547dca){if(_0x225e1f[_0xb03f('0xb')]){_0x225e1f[_0xb03f('0xc')]=moment()[_0xb03f('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x225e1f[_0xb03f('0xe')]){_0x225e1f[_0xb03f('0xf')]=moment()['format'](_0xb03f('0x10'));}_0x547dca(null,_0x2a2445);},'beforeUpdate':function(_0x3046d6,_0x58d947,_0x4a4177){if(_0x3046d6[_0xb03f('0x11')](_0xb03f('0xb'))){_0x3046d6[_0xb03f('0xc')]=_0x3046d6[_0xb03f('0xb')]?moment()[_0xb03f('0xd')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x3046d6[_0xb03f('0x11')](_0xb03f('0xe'))){_0x3046d6[_0xb03f('0xf')]=moment()[_0xb03f('0xd')](_0xb03f('0x10'));_0x3046d6[_0xb03f('0xb')]=null;_0x3046d6[_0xb03f('0xc')]=null;}_0x4a4177(null,_0x3046d6);},'afterUpdate':function(_0x570f8d,_0x5c1693,_0x408e6d){var _0x596b4f=_0xbf3a44[_0xb03f('0x12')];var _0x22f90d=_0x570f8d[_0xb03f('0x13')]({'plain':!![]});if(_0x22f90d['closed']){return _0x596b4f[_0xb03f('0x14')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x22f90d['id']}})[_0xb03f('0x15')](function(){_0x408e6d();})[_0xb03f('0x16')](function(_0x3b2770){_0x408e6d(_0x3b2770);});}else{_0x408e6d();}}},'charset':_0xb03f('0x17'),'collate':_0xb03f('0x18')});};
\ No newline at end of file
+var _0x5ec9=['./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','format','YYYY-MM-DD\x20HH:mm:ss','closed','substatusAt','changed','closedAt','models','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x42f5e5,_0x329d73){var _0x440256=function(_0x554dc0){while(--_0x554dc0){_0x42f5e5['push'](_0x42f5e5['shift']());}};_0x440256(++_0x329d73);}(_0x5ec9,0x64));var _0x95ec=function(_0x4b69d4,_0x4388c5){_0x4b69d4=_0x4b69d4-0x0;var _0x1f02e2=_0x5ec9[_0x4b69d4];return _0x1f02e2;};'use strict';var _=require(_0x95ec('0x0'));var util=require(_0x95ec('0x1'));var logger=require(_0x95ec('0x2'))(_0x95ec('0x3'));var moment=require('moment');var BPromise=require(_0x95ec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x95ec('0x5'));var rimraf=require(_0x95ec('0x6'));var config=require(_0x95ec('0x7'));var attributes=require(_0x95ec('0x8'));module[_0x95ec('0x9')]=function(_0x1213ae,_0x255e07){return _0x1213ae[_0x95ec('0xa')]('MailInteraction',attributes,{'tableName':_0x95ec('0xb'),'paranoid':![],'indexes':[{'name':_0x95ec('0xc'),'fields':[_0x95ec('0xd'),'to'],'type':_0x95ec('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x31fafe,_0xbe55bb,_0x48d724){if(_0x31fafe[_0x95ec('0xf')]){_0x31fafe['substatusAt']=moment()[_0x95ec('0x10')](_0x95ec('0x11'));}if(_0x31fafe[_0x95ec('0x12')]){_0x31fafe['closedAt']=moment()[_0x95ec('0x10')](_0x95ec('0x11'));}_0x48d724(null,_0xbe55bb);},'beforeUpdate':function(_0x21f871,_0x464636,_0x5c3dd4){if(_0x21f871['changed']('substatus')){_0x21f871[_0x95ec('0x13')]=_0x21f871[_0x95ec('0xf')]?moment()[_0x95ec('0x10')](_0x95ec('0x11')):null;}if(_0x21f871[_0x95ec('0x14')](_0x95ec('0x12'))){_0x21f871[_0x95ec('0x15')]=moment()['format'](_0x95ec('0x11'));_0x21f871['substatus']=null;_0x21f871[_0x95ec('0x13')]=null;}_0x5c3dd4(null,_0x21f871);},'afterUpdate':function(_0x48a852,_0x1d1128,_0x20cb64){var _0x59abe1=_0x1213ae[_0x95ec('0x16')];var _0xdf3503=_0x48a852['get']({'plain':!![]});if(_0xdf3503['closed']){return _0x59abe1['MailMessage'][_0x95ec('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0xdf3503['id']}})['then'](function(){_0x20cb64();})[_0x95ec('0x18')](function(_0x39471a){_0x20cb64(_0x39471a);});}else{_0x20cb64();}}},'charset':_0x95ec('0x19'),'collate':_0x95ec('0x1a')});};
\ No newline at end of file
index 5033ffd..7a3519b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d49=['where','attributes','limit','find','addTags','body','ids','spread','AddTags','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','socket.io-emitter','redis','./mailInteraction.socket','register','request','then','MailInteraction,\x20%s,\x20%s','debug','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw'];(function(_0x5a3d49,_0x1ed604){var _0x311f30=function(_0x5d6535){while(--_0x5d6535){_0x5a3d49['push'](_0x5a3d49['shift']());}};_0x311f30(++_0x1ed604);}(_0x3d49,0x151));var _0x93d4=function(_0x4178af,_0x388652){_0x4178af=_0x4178af-0x0;var _0x20f4b1=_0x3d49[_0x4178af];return _0x20f4b1;};'use strict';var _=require('lodash');var util=require(_0x93d4('0x0'));var moment=require(_0x93d4('0x1'));var BPromise=require(_0x93d4('0x2'));var rs=require(_0x93d4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x93d4('0x4'))['db'];var utils=require(_0x93d4('0x5'));var logger=require(_0x93d4('0x6'))(_0x93d4('0x7'));var config=require(_0x93d4('0x8'));var jayson=require(_0x93d4('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x93d4('0xa'))(new Redis(config[_0x93d4('0xb')]));require(_0x93d4('0xc'))[_0x93d4('0xd')](socket);function respondWithRpcPromise(_0x15f0c2,_0x174c6d,_0x1fcdd0){return new BPromise(function(_0x2db63a,_0x39d3a6){return client[_0x93d4('0xe')](_0x15f0c2,_0x1fcdd0)[_0x93d4('0xf')](function(_0xeabf99){logger['info'](_0x93d4('0x10'),_0x174c6d,'request\x20sent');logger[_0x93d4('0x11')](_0x93d4('0x12'),_0x174c6d,_0x93d4('0x13'),JSON[_0x93d4('0x14')](_0xeabf99));if(_0xeabf99['error']){if(_0xeabf99[_0x93d4('0x15')][_0x93d4('0x16')]===0x1f4){logger['error'](_0x93d4('0x10'),_0x174c6d,_0xeabf99[_0x93d4('0x15')][_0x93d4('0x17')]);return _0x39d3a6(_0xeabf99[_0x93d4('0x15')][_0x93d4('0x17')]);}logger['error']('MailInteraction,\x20%s,\x20%s',_0x174c6d,_0xeabf99[_0x93d4('0x15')]['message']);return _0x2db63a(_0xeabf99[_0x93d4('0x15')][_0x93d4('0x17')]);}else{logger[_0x93d4('0x18')](_0x93d4('0x10'),_0x174c6d,_0x93d4('0x13'));_0x2db63a(_0xeabf99[_0x93d4('0x19')]['message']);}})[_0x93d4('0x1a')](function(_0x58410f){logger[_0x93d4('0x15')]('MailInteraction,\x20%s,\x20%s',_0x174c6d,_0x58410f);_0x39d3a6(_0x58410f);});});}exports[_0x93d4('0x1b')]=function(_0x5a58ec){var _0x37c776=this;return new Promise(function(_0x115eb6,_0x2c185c){return db[_0x93d4('0x1c')][_0x93d4('0x1d')](_0x5a58ec['body'],{'raw':_0x5a58ec[_0x93d4('0x1e')]?_0x5a58ec[_0x93d4('0x1e')][_0x93d4('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a58ec[_0x93d4('0x1e')]?_0x5a58ec[_0x93d4('0x1e')][_0x93d4('0x20')]||null:null,'attributes':_0x5a58ec['options']?_0x5a58ec[_0x93d4('0x1e')][_0x93d4('0x21')]||null:null,'limit':_0x5a58ec[_0x93d4('0x1e')]?_0x5a58ec['options'][_0x93d4('0x22')]||null:null})['then'](function(_0x38a9af){logger[_0x93d4('0x18')]('UpdateMailInteraction',_0x5a58ec);logger[_0x93d4('0x11')](_0x93d4('0x1b'),_0x5a58ec,JSON[_0x93d4('0x14')](_0x38a9af));_0x115eb6(_0x38a9af);})['catch'](function(_0x572c52){logger[_0x93d4('0x15')]('UpdateMailInteraction',_0x572c52[_0x93d4('0x17')],_0x5a58ec);_0x2c185c(_0x37c776[_0x93d4('0x15')](0x1f4,_0x572c52['message']));});});};exports['AddTagsToMailInteraction']=function(_0x28379a){return new Promise(function(_0x3b7df9,_0x8ed25e){return db[_0x93d4('0x1c')][_0x93d4('0x23')]({'where':_0x28379a[_0x93d4('0x1e')]?_0x28379a[_0x93d4('0x1e')][_0x93d4('0x20')]||null:null})[_0x93d4('0xf')](function(_0x57b7f6){if(_0x57b7f6){return _0x57b7f6[_0x93d4('0x24')](_0x28379a[_0x93d4('0x25')][_0x93d4('0x26')],_['omit'](_0x28379a[_0x93d4('0x25')],[_0x93d4('0x26'),'id'])||{});}})[_0x93d4('0x27')](function(_0x3192ca){logger[_0x93d4('0x18')]('AddTags',_0x28379a);logger[_0x93d4('0x11')](_0x93d4('0x28'),_0x28379a,JSON[_0x93d4('0x14')](_0x3192ca));_0x3b7df9(_0x3192ca);})['catch'](function(_0x9306fc){logger[_0x93d4('0x15')](_0x93d4('0x28'),_0x9306fc[_0x93d4('0x17')],_0x28379a);_0x8ed25e(_this[_0x93d4('0x15')](0x1f4,_0x9306fc['message']));});});};
\ No newline at end of file
+var _0x84cd=['request\x20sent','debug','error','code','MailInteraction,\x20%s,\x20%s','message','info','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','limit','stringify','AddTagsToMailInteraction','find','addTags','ids','AddTags','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./mailInteraction.socket','request','then'];(function(_0x54bf8f,_0x282bc8){var _0x565089=function(_0x2d0772){while(--_0x2d0772){_0x54bf8f['push'](_0x54bf8f['shift']());}};_0x565089(++_0x282bc8);}(_0x84cd,0xb2));var _0xd84c=function(_0x9474e3,_0x23c7e5){_0x9474e3=_0x9474e3-0x0;var _0x482c00=_0x84cd[_0x9474e3];return _0x482c00;};'use strict';var _=require(_0xd84c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd84c('0x1'));var rs=require(_0xd84c('0x2'));var fs=require('fs');var Redis=require(_0xd84c('0x3'));var db=require(_0xd84c('0x4'))['db'];var utils=require(_0xd84c('0x5'));var logger=require(_0xd84c('0x6'))(_0xd84c('0x7'));var config=require(_0xd84c('0x8'));var jayson=require(_0xd84c('0x9'));var client=jayson['client'][_0xd84c('0xa')]({'port':0x232a});config[_0xd84c('0xb')]=_[_0xd84c('0xc')](config[_0xd84c('0xb')],{'host':_0xd84c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd84c('0xb')]));require(_0xd84c('0xe'))['register'](socket);function respondWithRpcPromise(_0x59c495,_0x380fa9,_0x22103d){return new BPromise(function(_0xf8cc7d,_0x37ce5e){return client[_0xd84c('0xf')](_0x59c495,_0x22103d)[_0xd84c('0x10')](function(_0x5fba0a){logger['info']('MailInteraction,\x20%s,\x20%s',_0x380fa9,_0xd84c('0x11'));logger[_0xd84c('0x12')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x380fa9,_0xd84c('0x11'),JSON['stringify'](_0x5fba0a));if(_0x5fba0a[_0xd84c('0x13')]){if(_0x5fba0a[_0xd84c('0x13')][_0xd84c('0x14')]===0x1f4){logger['error'](_0xd84c('0x15'),_0x380fa9,_0x5fba0a[_0xd84c('0x13')][_0xd84c('0x16')]);return _0x37ce5e(_0x5fba0a[_0xd84c('0x13')][_0xd84c('0x16')]);}logger['error'](_0xd84c('0x15'),_0x380fa9,_0x5fba0a[_0xd84c('0x13')]['message']);return _0xf8cc7d(_0x5fba0a['error']['message']);}else{logger[_0xd84c('0x17')]('MailInteraction,\x20%s,\x20%s',_0x380fa9,_0xd84c('0x11'));_0xf8cc7d(_0x5fba0a['result']['message']);}})[_0xd84c('0x18')](function(_0x4d9d25){logger[_0xd84c('0x13')](_0xd84c('0x15'),_0x380fa9,_0x4d9d25);_0x37ce5e(_0x4d9d25);});});}exports[_0xd84c('0x19')]=function(_0x4fc637){var _0x534ce4=this;return new Promise(function(_0x24a34c,_0x46e7eb){return db[_0xd84c('0x1a')][_0xd84c('0x1b')](_0x4fc637[_0xd84c('0x1c')],{'raw':_0x4fc637[_0xd84c('0x1d')]?_0x4fc637[_0xd84c('0x1d')][_0xd84c('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4fc637['options']?_0x4fc637['options']['where']||null:null,'attributes':_0x4fc637[_0xd84c('0x1d')]?_0x4fc637['options'][_0xd84c('0x1f')]||null:null,'limit':_0x4fc637['options']?_0x4fc637['options'][_0xd84c('0x20')]||null:null})[_0xd84c('0x10')](function(_0x24bf80){logger[_0xd84c('0x17')](_0xd84c('0x19'),_0x4fc637);logger['debug'](_0xd84c('0x19'),_0x4fc637,JSON[_0xd84c('0x21')](_0x24bf80));_0x24a34c(_0x24bf80);})['catch'](function(_0xf55452){logger[_0xd84c('0x13')](_0xd84c('0x19'),_0xf55452[_0xd84c('0x16')],_0x4fc637);_0x46e7eb(_0x534ce4[_0xd84c('0x13')](0x1f4,_0xf55452[_0xd84c('0x16')]));});});};exports[_0xd84c('0x22')]=function(_0x194067){return new Promise(function(_0x3accc8,_0x203332){return db[_0xd84c('0x1a')][_0xd84c('0x23')]({'where':_0x194067[_0xd84c('0x1d')]?_0x194067['options']['where']||null:null})[_0xd84c('0x10')](function(_0x13832c){if(_0x13832c){return _0x13832c[_0xd84c('0x24')](_0x194067['body']['ids'],_['omit'](_0x194067[_0xd84c('0x1c')],[_0xd84c('0x25'),'id'])||{});}})['spread'](function(_0x2cce1e){logger[_0xd84c('0x17')]('AddTags',_0x194067);logger['debug'](_0xd84c('0x26'),_0x194067,JSON[_0xd84c('0x21')](_0x2cce1e));_0x3accc8(_0x2cce1e);})[_0xd84c('0x18')](function(_0x4bedd8){logger['error'](_0xd84c('0x26'),_0x4bedd8[_0xd84c('0x16')],_0x194067);_0x203332(_this[_0xd84c('0x13')](0x1f4,_0x4bedd8[_0xd84c('0x16')]));});});};
\ No newline at end of file
index 24a25a6..bb21a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6403=['update','emit','removeListener','register','mailInteraction:','./mailInteraction.events'];(function(_0x170d16,_0x443724){var _0x1bf864=function(_0x2be80e){while(--_0x2be80e){_0x170d16['push'](_0x170d16['shift']());}};_0x1bf864(++_0x443724);}(_0x6403,0x1f1));var _0x3640=function(_0x45a8e5,_0x289725){_0x45a8e5=_0x45a8e5-0x0;var _0x51bcb5=_0x6403[_0x45a8e5];return _0x51bcb5;};'use strict';var MailInteractionEvents=require(_0x3640('0x0'));var events=['save','remove',_0x3640('0x1')];function createListener(_0x3a3700,_0x5c3061){return function(_0x30c814){_0x5c3061[_0x3640('0x2')](_0x3a3700,_0x30c814);};}function removeListener(_0x10115b,_0x38256d){return function(){MailInteractionEvents[_0x3640('0x3')](_0x10115b,_0x38256d);};}exports[_0x3640('0x4')]=function(_0x3ff778){for(var _0x4524b0=0x0,_0x239c44=events['length'];_0x4524b0<_0x239c44;_0x4524b0++){var _0x258466=events[_0x4524b0];var _0xae3568=createListener(_0x3640('0x5')+_0x258466,_0x3ff778);MailInteractionEvents['on'](_0x258466,_0xae3568);}};
\ No newline at end of file
+var _0x112f=['emit','removeListener','register','length','mailInteraction:','update'];(function(_0x30791a,_0x4db565){var _0x5393e6=function(_0x3f612c){while(--_0x3f612c){_0x30791a['push'](_0x30791a['shift']());}};_0x5393e6(++_0x4db565);}(_0x112f,0xfb));var _0xf112=function(_0x149ead,_0x32f966){_0x149ead=_0x149ead-0x0;var _0x313104=_0x112f[_0x149ead];return _0x313104;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=['save','remove',_0xf112('0x0')];function createListener(_0x286f44,_0x2fbd61){return function(_0x2e8eb2){_0x2fbd61[_0xf112('0x1')](_0x286f44,_0x2e8eb2);};}function removeListener(_0x2cda5f,_0x37d9cb){return function(){MailInteractionEvents[_0xf112('0x2')](_0x2cda5f,_0x37d9cb);};}exports[_0xf112('0x3')]=function(_0x425212){for(var _0x8864d5=0x0,_0x11448b=events[_0xf112('0x4')];_0x8864d5<_0x11448b;_0x8864d5++){var _0x2bf550=events[_0x8864d5];var _0x2a553c=createListener(_0xf112('0x5')+_0x2bf550,_0x425212);MailInteractionEvents['on'](_0x2bf550,_0x2a553c);}};
\ No newline at end of file
index 5f8376f..8f606a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d11=['describe','get','show','download','post','mailmessage:create','create','put','/:id','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','index','/describe'];(function(_0xa2216,_0x23317c){var _0x175ebb=function(_0x58cc3a){while(--_0x58cc3a){_0xa2216['push'](_0xa2216['shift']());}};_0x175ebb(++_0x23317c);}(_0x9d11,0xb7));var _0x19d1=function(_0x99facc,_0x548cd6){_0x99facc=_0x99facc-0x0;var _0xd39ed0=_0x9d11[_0x99facc];return _0xd39ed0;};'use strict';var multer=require(_0x19d1('0x0'));var util=require(_0x19d1('0x1'));var path=require(_0x19d1('0x2'));var timeout=require(_0x19d1('0x3'));var express=require('express');var router=express[_0x19d1('0x4')]();var fs_extra=require(_0x19d1('0x5'));var auth=require(_0x19d1('0x6'));var interaction=require(_0x19d1('0x7'));var config=require(_0x19d1('0x8'));var controller=require(_0x19d1('0x9'));router['get']('/',auth[_0x19d1('0xa')](),controller[_0x19d1('0xb')]);router['get'](_0x19d1('0xc'),auth[_0x19d1('0xa')](),controller[_0x19d1('0xd')]);router[_0x19d1('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x19d1('0xf')]);router[_0x19d1('0xe')]('/:id/download',auth[_0x19d1('0xa')](),controller[_0x19d1('0x10')]);router[_0x19d1('0x11')]('/',auth['isAuthenticated'](),interaction['tracked']('mail',_0x19d1('0x12')),controller[_0x19d1('0x13')]);router[_0x19d1('0x14')](_0x19d1('0x15'),auth['isAuthenticated'](),controller['update']);router[_0x19d1('0x14')]('/:id/accept',auth['isAuthenticated'](),controller[_0x19d1('0x16')]);router[_0x19d1('0x14')](_0x19d1('0x17'),auth[_0x19d1('0xa')](),controller[_0x19d1('0x18')]);router[_0x19d1('0x19')](_0x19d1('0x15'),auth['isAuthenticated'](),controller[_0x19d1('0x1a')]);module[_0x19d1('0x1b')]=router;
\ No newline at end of file
+var _0xa1aa=['update','/:id/accept','/:id/reject','reject','delete','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','post','tracked','mail','mailmessage:create','create','put'];(function(_0x1562a2,_0x2e4655){var _0x39a636=function(_0x25483a){while(--_0x25483a){_0x1562a2['push'](_0x1562a2['shift']());}};_0x39a636(++_0x2e4655);}(_0xa1aa,0x19b));var _0xaa1a=function(_0x57b762,_0x2fecb9){_0x57b762=_0x57b762-0x0;var _0xd0e7cf=_0xa1aa[_0x57b762];return _0xd0e7cf;};'use strict';var multer=require('multer');var util=require(_0xaa1a('0x0'));var path=require(_0xaa1a('0x1'));var timeout=require(_0xaa1a('0x2'));var express=require(_0xaa1a('0x3'));var router=express[_0xaa1a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaa1a('0x5'));var config=require(_0xaa1a('0x6'));var controller=require('./mailMessage.controller');router[_0xaa1a('0x7')]('/',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x9')]);router['get'](_0xaa1a('0xa'),auth['isAuthenticated'](),controller[_0xaa1a('0xb')]);router['get'](_0xaa1a('0xc'),auth[_0xaa1a('0x8')](),controller['show']);router['get'](_0xaa1a('0xd'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0xe')]);router[_0xaa1a('0xf')]('/',auth['isAuthenticated'](),interaction[_0xaa1a('0x10')](_0xaa1a('0x11'),_0xaa1a('0x12')),controller[_0xaa1a('0x13')]);router[_0xaa1a('0x14')](_0xaa1a('0xc'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x15')]);router[_0xaa1a('0x14')](_0xaa1a('0x16'),auth['isAuthenticated'](),controller['accept']);router[_0xaa1a('0x14')](_0xaa1a('0x17'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x18')]);router[_0xaa1a('0x19')]('/:id',auth[_0xaa1a('0x8')](),controller['destroy']);module[_0xaa1a('0x1a')]=router;
\ No newline at end of file
index aca4d92..e1b4713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd76b=['medium','BOOLEAN','STRING','DATE','INTEGER','Email','Chat','sequelize','lodash','TEXT','long'];(function(_0x54b062,_0x264bb5){var _0x255e41=function(_0x3c7e6f){while(--_0x3c7e6f){_0x54b062['push'](_0x54b062['shift']());}};_0x255e41(++_0x264bb5);}(_0xd76b,0x11a));var _0xbd76=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd76b[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0xbd76('0x0'));var _=require(_0xbd76('0x1'));module['exports']={'body':{'type':Sequelize[_0xbd76('0x2')](_0xbd76('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0xbd76('0x4'))},'read':{'type':Sequelize[_0xbd76('0x5')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xbd76('0x6')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xbd76('0x2')](_0xbd76('0x3'))},'cc':{'type':Sequelize[_0xbd76('0x2')](_0xbd76('0x3'))},'bcc':{'type':Sequelize[_0xbd76('0x2')]('long')},'subject':{'type':Sequelize[_0xbd76('0x2')]},'sentAt':{'type':Sequelize[_0xbd76('0x7')]},'attach':{'type':Sequelize[_0xbd76('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xbd76('0x7')]},'originTo':{'type':Sequelize[_0xbd76('0x2')](_0xbd76('0x3'))},'originCc':{'type':Sequelize[_0xbd76('0x2')](_0xbd76('0x3'))},'originChannel':{'type':Sequelize['ENUM'](_0xbd76('0x9'),_0xbd76('0xa')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0xfa37=['medium','BOOLEAN','ENUM','STRING','INTEGER','Email','Chat','lodash','exports','long','TEXT'];(function(_0x1de8cc,_0x3e3f90){var _0x6f59fa=function(_0x4e3f5e){while(--_0x4e3f5e){_0x1de8cc['push'](_0x1de8cc['shift']());}};_0x6f59fa(++_0x3e3f90);}(_0xfa37,0x130));var _0x7fa3=function(_0x1f651f,_0x21bf00){_0x1f651f=_0x1f651f-0x0;var _0x4f6846=_0xfa37[_0x1f651f];return _0x4f6846;};'use strict';var Sequelize=require('sequelize');var _=require(_0x7fa3('0x0'));module[_0x7fa3('0x1')]={'body':{'type':Sequelize['TEXT'](_0x7fa3('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x7fa3('0x3')](_0x7fa3('0x4'))},'read':{'type':Sequelize[_0x7fa3('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7fa3('0x6')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x7fa3('0x7')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['TEXT'](_0x7fa3('0x2'))},'cc':{'type':Sequelize[_0x7fa3('0x3')]('long')},'bcc':{'type':Sequelize['TEXT'](_0x7fa3('0x2'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x7fa3('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x7fa3('0x3')](_0x7fa3('0x2'))},'originCc':{'type':Sequelize['TEXT']('long')},'originChannel':{'type':Sequelize[_0x7fa3('0x6')](_0x7fa3('0x9'),_0x7fa3('0xa')),'defaultValue':_0x7fa3('0x9'),'allowNull':![]}};
\ No newline at end of file
index 1c9ab78..804f8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5866=['sort','where','filter','includeAll','include','params','rawAttributes','options','body','find','describe','create','direction','out','secret','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','basename','defaults','ListId','List\x20not\x20found','SendMail','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','mail','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','role','AcceptMessage','ContactId','QueryTypes','SELECT','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','reject','null','rejectMessage','Sequelize','contact','User','email','fromString','rejectmessage','download','unix','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','headers','type','readFileSync','build','unlinkSync','eml-format','moment','util','path','lodash','ioredis','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','redis','localhost','socket.io-emitter','html-entities','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','result','catch','status','json','offset','undefined','limit','count','Content-Range','update','destroy','sendStatus','stack','name','send','map','MailMessage','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x5cba78,_0x3e1e1c){var _0x3af348=function(_0x593f90){while(--_0x593f90){_0x5cba78['push'](_0x5cba78['shift']());}};_0x3af348(++_0x3e1e1c);}(_0x5866,0x183));var _0x6586=function(_0x5a946d,_0x12fc59){_0x5a946d=_0x5a946d-0x0;var _0x2f2e70=_0x5866[_0x5a946d];return _0x2f2e70;};'use strict';var emlformat=require(_0x6586('0x0'));var moment=require(_0x6586('0x1'));var BPromise=require('bluebird');var util=require(_0x6586('0x2'));var path=require(_0x6586('0x3'));var fs=require('fs');var _=require(_0x6586('0x4'));var Redis=require(_0x6586('0x5'));var htmlToText=require(_0x6586('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x6586('0x7'))(_0x6586('0x8'));var interaction_log=require(_0x6586('0x7'))(_0x6586('0x9'));var config=require(_0x6586('0xa'));var db=require('../../mysqldb')['db'];config[_0x6586('0xb')]=_['defaults'](config[_0x6586('0xb')],{'host':_0x6586('0xc'),'port':0x18eb});var socket=require(_0x6586('0xd'))(new Redis(config[_0x6586('0xb')]));var htmlEntities=require(_0x6586('0xe'));require('./mailMessage.socket')['register'](socket);var jayson=require(_0x6586('0xf'));var client=jayson[_0x6586('0x10')][_0x6586('0x11')]({'port':0x232c});var client9003=jayson[_0x6586('0x10')]['http']({'port':0x232b});var client9002=jayson[_0x6586('0x10')][_0x6586('0x11')]({'port':0x232a});function respondWithRpcPromise(_0xc5d7e7,_0x3b9370,_0x5aae71,_0x50c14f){return new BPromise(function(_0x44f953,_0x492593){var _0xfda206=_0x50c14f||client;return _0xfda206[_0x6586('0x12')](_0xc5d7e7,_0x5aae71)[_0x6586('0x13')](function(_0x21255c){logger[_0x6586('0x14')](_0x6586('0x15'),_0x3b9370,_0x6586('0x16'));logger[_0x6586('0x17')](_0x6586('0x18'),_0x3b9370,_0x6586('0x16'),JSON[_0x6586('0x19')](_0x21255c));if(_0x21255c[_0x6586('0x1a')]){if(_0x21255c[_0x6586('0x1a')][_0x6586('0x1b')]===0x1f4){logger[_0x6586('0x1a')](_0x6586('0x15'),_0x3b9370,_0x21255c[_0x6586('0x1a')][_0x6586('0x1c')]);return _0x492593(_0x21255c[_0x6586('0x1a')][_0x6586('0x1c')]);}logger['error'](_0x6586('0x15'),_0x3b9370,_0x21255c[_0x6586('0x1a')][_0x6586('0x1c')]);return _0x44f953(_0x21255c[_0x6586('0x1a')][_0x6586('0x1c')]);}else{logger['info'](_0x6586('0x15'),_0x3b9370,_0x6586('0x16'));_0x44f953(_0x21255c[_0x6586('0x1d')][_0x6586('0x1c')]);}})[_0x6586('0x1e')](function(_0x524150){logger[_0x6586('0x1a')](_0x6586('0x15'),_0x3b9370,_0x524150);_0x492593(_0x524150);});});}function respondWithResult(_0x5854bd,_0x450ae0){_0x450ae0=_0x450ae0||0xc8;return function(_0x5598e5){if(_0x5598e5){return _0x5854bd[_0x6586('0x1f')](_0x450ae0)[_0x6586('0x20')](_0x5598e5);}};}function respondWithFilteredResult(_0x254880,_0x37e7ee){return function(_0x4eea5b){if(_0x4eea5b){var _0x51c294=typeof _0x37e7ee[_0x6586('0x21')]===_0x6586('0x22')&&typeof _0x37e7ee[_0x6586('0x23')]==='undefined';var _0x2c0b75=_0x4eea5b['count'];var _0x1640bb=_0x51c294?0x0:_0x37e7ee[_0x6586('0x21')];var _0x41d722=_0x51c294?_0x4eea5b[_0x6586('0x24')]:_0x37e7ee[_0x6586('0x21')]+_0x37e7ee['limit'];var _0xa6a920;if(_0x41d722>=_0x2c0b75){_0x41d722=_0x2c0b75;_0xa6a920=0xc8;}else{_0xa6a920=0xce;}_0x254880['status'](_0xa6a920);return _0x254880['set'](_0x6586('0x25'),_0x1640bb+'-'+_0x41d722+'/'+_0x2c0b75)['json'](_0x4eea5b);}return null;};}function saveUpdates(_0x2e988e){return function(_0x312fca){if(_0x312fca){return _0x312fca[_0x6586('0x26')](_0x2e988e)[_0x6586('0x13')](function(_0x5c9c4a){return _0x5c9c4a;});}return null;};}function removeEntity(_0x539108){return function(_0x3e5ce0){if(_0x3e5ce0){return _0x3e5ce0[_0x6586('0x27')]()[_0x6586('0x13')](function(){_0x539108[_0x6586('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x396928){return function(_0x1b4b9e){if(!_0x1b4b9e){_0x396928[_0x6586('0x28')](0x194);}return _0x1b4b9e;};}function handleError(_0x414210,_0x4a08a7){_0x4a08a7=_0x4a08a7||0x1f4;return function(_0x53a9b0){logger['error'](_0x53a9b0[_0x6586('0x29')]);if(_0x53a9b0['name']){delete _0x53a9b0[_0x6586('0x2a')];}_0x414210[_0x6586('0x1f')](_0x4a08a7)[_0x6586('0x2b')](_0x53a9b0);};}exports['index']=function(_0x429a33,_0x1b6eaf){var _0x5888f1={},_0x3918ff={},_0x3785e8={'count':0x0,'rows':[]};var _0x25ed66=_[_0x6586('0x2c')](db[_0x6586('0x2d')]['rawAttributes'],function(_0x289a5f){return{'name':_0x289a5f['fieldName'],'type':_0x289a5f['type']['key']};});_0x3918ff[_0x6586('0x2e')]=_[_0x6586('0x2c')](_0x25ed66,'name');_0x3918ff[_0x6586('0x2f')]=_[_0x6586('0x30')](_0x429a33[_0x6586('0x2f')]);_0x3918ff[_0x6586('0x31')]=_[_0x6586('0x32')](_0x3918ff['model'],_0x3918ff[_0x6586('0x2f')]);_0x5888f1['attributes']=_[_0x6586('0x32')](_0x3918ff[_0x6586('0x2e')],qs[_0x6586('0x33')](_0x429a33[_0x6586('0x2f')]['fields']));_0x5888f1[_0x6586('0x34')]=_0x5888f1['attributes'][_0x6586('0x35')]?_0x5888f1[_0x6586('0x34')]:_0x3918ff[_0x6586('0x2e')];if(!_0x429a33[_0x6586('0x2f')][_0x6586('0x36')](_0x6586('0x37'))){_0x5888f1[_0x6586('0x23')]=qs[_0x6586('0x23')](_0x429a33[_0x6586('0x2f')][_0x6586('0x23')]);_0x5888f1[_0x6586('0x21')]=qs['offset'](_0x429a33[_0x6586('0x2f')][_0x6586('0x21')]);}_0x5888f1[_0x6586('0x38')]=qs[_0x6586('0x39')](_0x429a33[_0x6586('0x2f')][_0x6586('0x39')]);_0x5888f1[_0x6586('0x3a')]=qs[_0x6586('0x31')](_['pick'](_0x429a33[_0x6586('0x2f')],_0x3918ff[_0x6586('0x31')]),_0x25ed66);if(_0x429a33[_0x6586('0x2f')]['filter']){_0x5888f1['where']=_['merge'](_0x5888f1[_0x6586('0x3a')],{'$or':_[_0x6586('0x2c')](_0x25ed66,function(_0x5a972a){if(_0x5a972a['type']!=='VIRTUAL'){var _0x3dd83e={};_0x3dd83e[_0x5a972a['name']]={'$like':'%'+_0x429a33['query'][_0x6586('0x3b')]+'%'};return _0x3dd83e;}})});}_0x5888f1=_['merge']({},_0x5888f1,_0x429a33['options']);var _0x167c06={'where':_0x5888f1[_0x6586('0x3a')]};return db[_0x6586('0x2d')][_0x6586('0x24')](_0x167c06)[_0x6586('0x13')](function(_0x1ad87f){_0x3785e8[_0x6586('0x24')]=_0x1ad87f;if(_0x429a33[_0x6586('0x2f')][_0x6586('0x3c')]){_0x5888f1[_0x6586('0x3d')]=[{'all':!![]}];}return db[_0x6586('0x2d')]['findAll'](_0x5888f1);})[_0x6586('0x13')](function(_0x2bf55e){_0x3785e8['rows']=_0x2bf55e;return _0x3785e8;})['then'](respondWithFilteredResult(_0x1b6eaf,_0x5888f1))[_0x6586('0x1e')](handleError(_0x1b6eaf,null));};exports['show']=function(_0xb9b2fa,_0x3b0b5a){var _0x549c52={'raw':!![],'where':{'id':_0xb9b2fa[_0x6586('0x3e')]['id']}},_0x2006d4={};_0x2006d4[_0x6586('0x2e')]=_[_0x6586('0x30')](db[_0x6586('0x2d')][_0x6586('0x3f')]);_0x2006d4[_0x6586('0x2f')]=_[_0x6586('0x30')](_0xb9b2fa[_0x6586('0x2f')]);_0x2006d4[_0x6586('0x31')]=_[_0x6586('0x32')](_0x2006d4[_0x6586('0x2e')],_0x2006d4[_0x6586('0x2f')]);_0x549c52[_0x6586('0x34')]=_[_0x6586('0x32')](_0x2006d4[_0x6586('0x2e')],qs[_0x6586('0x33')](_0xb9b2fa[_0x6586('0x2f')]['fields']));_0x549c52[_0x6586('0x34')]=_0x549c52['attributes'][_0x6586('0x35')]?_0x549c52[_0x6586('0x34')]:_0x2006d4[_0x6586('0x2e')];if(_0xb9b2fa[_0x6586('0x2f')][_0x6586('0x3c')]){_0x549c52[_0x6586('0x3d')]=[{'all':!![]}];}_0x549c52=_['merge']({},_0x549c52,_0xb9b2fa[_0x6586('0x40')]);return db[_0x6586('0x2d')]['find'](_0x549c52)[_0x6586('0x13')](handleEntityNotFound(_0x3b0b5a,null))[_0x6586('0x13')](respondWithResult(_0x3b0b5a,null))[_0x6586('0x1e')](handleError(_0x3b0b5a,null));};exports['update']=function(_0x52c14d,_0x2eb68c){if(_0x52c14d[_0x6586('0x41')]['id']){delete _0x52c14d[_0x6586('0x41')]['id'];}return db[_0x6586('0x2d')]['find']({'where':{'id':_0x52c14d['params']['id']}})['then'](handleEntityNotFound(_0x2eb68c,null))[_0x6586('0x13')](saveUpdates(_0x52c14d[_0x6586('0x41')],null))['then'](respondWithResult(_0x2eb68c,null))[_0x6586('0x1e')](handleError(_0x2eb68c,null));};exports[_0x6586('0x27')]=function(_0x1212d5,_0x3fd976){return db['MailMessage'][_0x6586('0x42')]({'where':{'id':_0x1212d5[_0x6586('0x3e')]['id']}})[_0x6586('0x13')](handleEntityNotFound(_0x3fd976,null))[_0x6586('0x13')](removeEntity(_0x3fd976,null))[_0x6586('0x1e')](handleError(_0x3fd976,null));};exports[_0x6586('0x43')]=function(_0x2cfe78,_0x2a8355){return db[_0x6586('0x2d')][_0x6586('0x43')]()[_0x6586('0x13')](respondWithResult(_0x2a8355,null))['catch'](handleError(_0x2a8355,null));};exports[_0x6586('0x44')]=function(_0x45acb7,_0x335b49){return db[_0x6586('0x2d')]['create'](_0x45acb7[_0x6586('0x41')])[_0x6586('0x13')](function(_0x20046a){if(_0x20046a){if(_0x20046a[_0x6586('0x45')]===_0x6586('0x46')&&!_0x20046a[_0x6586('0x47')]){var _0xc70e1,_0x162161,_0x4af25f;if(_0x45acb7[_0x6586('0x41')]['to']){_0x162161=_0x45acb7[_0x6586('0x41')]['to']['split'](',')[0x0];}return db[_0x6586('0x48')][_0x6586('0x49')]({'where':{'id':_0x20046a[_0x6586('0x4a')]},'include':[{'model':db[_0x6586('0x4b')],'as':_0x6586('0x4c'),'include':[{'model':db[_0x6586('0x4d')],'as':_0x6586('0x4e'),'where':{'email':_0x162161},'limit':0x1,'order':[[_0x6586('0x4f'),'DESC']]}]},{'model':db[_0x6586('0x50')],'as':_0x6586('0x51'),'raw':!![],'include':[{'model':db[_0x6586('0x52')],'as':_0x6586('0x52'),'raw':!![]}]}]})[_0x6586('0x13')](function(_0x31d2c2){_0xc70e1=_0x31d2c2;if(!_0xc70e1||!_0xc70e1['Smtp'])return;var _0x54b683=_0xc70e1[_0x6586('0x53')]();if(_0x45acb7[_0x6586('0x41')][_0x6586('0x54')]&&_0x45acb7['body'][_0x6586('0x54')][_0x6586('0x35')]){for(var _0xaa9fa7=0x0;_0xaa9fa7<_0x45acb7[_0x6586('0x41')][_0x6586('0x54')][_0x6586('0x35')];_0xaa9fa7+=0x1){_0x45acb7['body'][_0x6586('0x54')][_0xaa9fa7]={'filename':_0x45acb7[_0x6586('0x41')][_0x6586('0x54')][_0xaa9fa7][_0x6586('0x2a')],'path':path[_0x6586('0x55')](config[_0x6586('0x56')],'server/files/attachments',_0x45acb7[_0x6586('0x41')]['attachments'][_0xaa9fa7][_0x6586('0x57')])};}}_0x4af25f={'account':_0x54b683,'message':_0x45acb7['body']};return;})[_0x6586('0x13')](function(){if(_0xc70e1[_0x6586('0x4c')]){if(_0xc70e1['List'][_0x6586('0x4e')][_0x6586('0x35')]){return _0xc70e1[_0x6586('0x4c')][_0x6586('0x4e')][0x0];}else{return db[_0x6586('0x4d')][_0x6586('0x44')](_[_0x6586('0x58')](_0x45acb7[_0x6586('0x41')],{'firstName':_0x45acb7[_0x6586('0x41')]['to'],'email':_0x45acb7[_0x6586('0x41')]['to'],'phone':_0x45acb7[_0x6586('0x41')]['to'],'ListId':_0xc70e1[_0x6586('0x59')]}));}}else{throw new Error(_0x6586('0x5a'));}})[_0x6586('0x13')](function(){if(_0x4af25f){return respondWithRpcPromise(_0x6586('0x5b'),_0x6586('0x5c'),_0x4af25f,client9003)[_0x6586('0x13')](function(_0x2a9716){return _0x20046a[_0x6586('0x26')]({'read':!![],'messageId':_0x2a9716['messageId'],'sentAt':moment()[_0x6586('0x5d')](_0x6586('0x5e'))});})[_0x6586('0x1e')](function(_0x393a3c){logger['error']('%s',JSON[_0x6586('0x19')](_0x393a3c));return _0x20046a;});}return _0x20046a;});}return _0x20046a;}})[_0x6586('0x13')](respondWithResult(_0x335b49,0xc9))[_0x6586('0x1e')](handleError(_0x335b49,null));};exports['accept']=function(_0x58fae4,_0x1c1c44){var _0x37963f={'agent':{},'channel':_0x6586('0x5f')};if(_0x58fae4[_0x6586('0x41')]['id']){delete _0x58fae4[_0x6586('0x41')]['id'];}_0x58fae4[_0x6586('0x41')][_0x6586('0x60')]=!![];_0x58fae4['body'][_0x6586('0x61')]=moment()['format'](_0x6586('0x5e'));_0x58fae4[_0x6586('0x41')]['UserId']=_0x58fae4[_0x6586('0x41')][_0x6586('0x62')]||_0x58fae4[_0x6586('0x63')]['id'];_0x37963f[_0x6586('0x64')]['id']=_0x58fae4[_0x6586('0x41')][_0x6586('0x62')];return db[_0x6586('0x2d')]['find']({'where':{'id':_0x58fae4['params']['id'],'UserId':null}})[_0x6586('0x13')](handleEntityNotFound(_0x1c1c44,null))[_0x6586('0x13')](saveUpdates(_0x58fae4['body'],null))['then'](function(_0x26370c){if(_0x26370c){_0x37963f[_0x6586('0x1c')]=_0x26370c[_0x6586('0x65')]({'plain':!![]});return db[_0x6586('0x66')][_0x6586('0x42')]({'where':{'id':_0x26370c[_0x6586('0x67')]}});}return null;})[_0x6586('0x13')](handleEntityNotFound(_0x1c1c44,null))['then'](function(_0x249e12){if(_0x249e12){return _0x249e12[_0x6586('0x26')]({'UserId':_0x58fae4[_0x6586('0x41')]['UserId'],'read1stAt':_['isNil'](_0x249e12[_0x6586('0x68')])?moment()[_0x6586('0x5d')](_0x6586('0x5e')):undefined});}return null;})['then'](function(_0x188302){if(_0x188302){_0x37963f[_0x6586('0x69')]=_0x188302[_0x6586('0x65')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x58fae4['user']['id'],_0x58fae4[_0x6586('0x63')][_0x6586('0x2a')],_0x58fae4['user'][_0x6586('0x6a')],_0x37963f[_0x6586('0x69')]['id'],_0x58fae4['body']?JSON['stringify'](_0x58fae4[_0x6586('0x41')]):'null');return respondWithRpcPromise(_0x6586('0x6b'),'acceptMessage',_0x37963f);}return null;})[_0x6586('0x13')](function(_0x58ec0f){var _0x45fc51='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x58ec0f[_0x6586('0x1c')][_0x6586('0x6c')];return db['sequelize'][_0x6586('0x2f')](_0x45fc51,{'type':db['Sequelize'][_0x6586('0x6d')][_0x6586('0x6e')],'raw':!![]})['then'](function(_0x480955){return _0x480955;});})[_0x6586('0x13')](function(_0x5a0968){if(_0x5a0968){_0x37963f[_0x6586('0x1c')]['contact']=_0x5a0968[0x0];if(!_0x58fae4[_0x6586('0x41')][_0x6586('0x62')])return;return db['User'][_0x6586('0x42')]({'where':{'id':_0x58fae4[_0x6586('0x41')][_0x6586('0x62')],'role':_0x6586('0x64')},'attributes':['id',_0x6586('0x2a'),'fullname','email',_0x6586('0x6f')],'raw':!![]});}return null;})[_0x6586('0x13')](function(_0x30907c){if(!_0x30907c)return null;_0x37963f[_0x6586('0x1c')][_0x6586('0x64')]=_0x30907c;return _0x37963f;})[_0x6586('0x13')](function(_0x24b851){if(_0x24b851){if(_0x58fae4[_0x6586('0x41')]['manual']){_0x37963f['message'][_0x6586('0x70')]=util[_0x6586('0x5d')](_0x6586('0x71'),_0x58fae4['user'][_0x6586('0x2a')]);_0x37963f[_0x6586('0x1c')][_0x6586('0x72')]=_0x37963f[_0x6586('0x72')];_0x37963f[_0x6586('0x1c')][_0x6586('0x73')]=_0x37963f[_0x6586('0x72')];_0x37963f[_0x6586('0x1c')][_0x6586('0x74')]=_0x6586('0x75');_0x37963f[_0x6586('0x1c')][_0x6586('0x41')]=htmlToText['fromString'](_0x37963f[_0x6586('0x1c')]['body']);return respondWithRpcPromise('EventManager',_0x6586('0x76'),{'event':_0x6586('0x77'),'message':_0x37963f['message']},client9002)[_0x6586('0x13')](function(){return _0x37963f;});}return _0x37963f;}return null;})['then'](respondWithResult(_0x1c1c44,null))[_0x6586('0x1e')](handleError(_0x1c1c44,null));};exports[_0x6586('0x78')]=function(_0x4ff7f5,_0x3d90c5){var _0x11b3a0={'agent':{},'channel':_0x6586('0x5f')};if(_0x4ff7f5[_0x6586('0x41')]['id']){delete _0x4ff7f5[_0x6586('0x41')]['id'];}_0x4ff7f5[_0x6586('0x41')][_0x6586('0x62')]=_0x4ff7f5[_0x6586('0x41')][_0x6586('0x62')]||_0x4ff7f5['user']['id'];_0x11b3a0[_0x6586('0x64')]['id']=_0x4ff7f5[_0x6586('0x41')]['UserId'];return db[_0x6586('0x2d')][_0x6586('0x42')]({'where':{'id':_0x4ff7f5['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3d90c5,null))[_0x6586('0x13')](function(_0x518f20){if(_0x518f20){_0x11b3a0[_0x6586('0x1c')]=_0x518f20[_0x6586('0x65')]({'plain':!![]});return db[_0x6586('0x66')]['find']({'where':{'id':_0x518f20[_0x6586('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x3d90c5,null))[_0x6586('0x13')](function(_0x2f4581){if(_0x2f4581){_0x11b3a0[_0x6586('0x69')]=_0x2f4581[_0x6586('0x65')]({'plain':!![]});interaction_log[_0x6586('0x14')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4ff7f5[_0x6586('0x63')]['id'],_0x4ff7f5['user'][_0x6586('0x2a')],_0x4ff7f5['user']['role'],_0x11b3a0[_0x6586('0x69')]['id'],_0x4ff7f5['body']?JSON[_0x6586('0x19')](_0x4ff7f5[_0x6586('0x41')]):_0x6586('0x79'));return respondWithRpcPromise('RejectMessage',_0x6586('0x7a'),_0x11b3a0);}return null;})[_0x6586('0x13')](function(_0x35823c){var _0x217147='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x35823c['message'][_0x6586('0x6c')];return db['sequelize']['query'](_0x217147,{'type':db[_0x6586('0x7b')][_0x6586('0x6d')][_0x6586('0x6e')],'raw':!![]})[_0x6586('0x13')](function(_0x40b7dd){return _0x40b7dd;});})[_0x6586('0x13')](function(_0x563079){if(_0x563079){_0x11b3a0[_0x6586('0x1c')][_0x6586('0x7c')]=_0x563079[0x0];if(!_0x4ff7f5['body']['UserId'])return;return db[_0x6586('0x7d')][_0x6586('0x42')]({'where':{'id':_0x4ff7f5[_0x6586('0x41')][_0x6586('0x62')],'role':_0x6586('0x64')},'attributes':['id',_0x6586('0x2a'),'fullname',_0x6586('0x7e'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2bc64b){if(!_0x2bc64b)return null;_0x11b3a0[_0x6586('0x1c')][_0x6586('0x64')]=_0x2bc64b;return _0x11b3a0;})[_0x6586('0x13')](function(_0x41f76f){if(_0x41f76f){_0x41f76f[_0x6586('0x1c')][_0x6586('0x70')]=util[_0x6586('0x5d')](_0x6586('0x71'),_0x4ff7f5[_0x6586('0x63')][_0x6586('0x2a')]);_0x41f76f[_0x6586('0x1c')]['channel']=_0x11b3a0['channel'];_0x41f76f['message'][_0x6586('0x73')]=_0x11b3a0[_0x6586('0x72')];_0x41f76f[_0x6586('0x1c')]['event']='reject';_0x41f76f[_0x6586('0x1c')][_0x6586('0x41')]=htmlToText[_0x6586('0x7f')](_0x11b3a0[_0x6586('0x1c')][_0x6586('0x41')]);respondWithRpcPromise(_0x6586('0x76'),_0x6586('0x76'),{'event':_0x6586('0x80'),'message':_0x41f76f[_0x6586('0x1c')]},client9002);return _0x11b3a0;}return null;})[_0x6586('0x13')](respondWithResult(_0x3d90c5,null))[_0x6586('0x1e')](handleError(_0x3d90c5,null));};exports[_0x6586('0x81')]=function(_0x3ffe01,_0x1da010){var _0x273436=moment()[_0x6586('0x82')]()[_0x6586('0x83')]();var _0x3e5921=path[_0x6586('0x55')](config[_0x6586('0x56')],_0x6586('0x84'),_0x6586('0x85'),_0x6586('0x86'));var _0x56739a=path[_0x6586('0x55')](config[_0x6586('0x56')],_0x6586('0x84'),'files',_0x6586('0x54'));var _0x4857bd=util[_0x6586('0x5d')](_0x6586('0x87'),_0x273436);return db[_0x6586('0x2d')][_0x6586('0x42')]({'where':{'id':_0x3ffe01[_0x6586('0x3e')]['id']},'attributes':['id',_0x6586('0x41'),_0x6586('0x88'),'to','cc',_0x6586('0x89'),_0x6586('0x8a'),_0x6586('0x8b')],'include':_0x3ffe01[_0x6586('0x2f')][_0x6586('0x54')]?[{'model':db[_0x6586('0x8c')],'as':_0x6586('0x8d')}]:undefined})[_0x6586('0x13')](handleEntityNotFound(_0x1da010,null))['then'](function(_0x2b73f2){if(_0x2b73f2){var _0x215dd6=_0x2b73f2;var _0x5c3435={'from':_0x215dd6['from'],'to':_0x215dd6['to'],'subject':_0x215dd6[_0x6586('0x8a')],'html':htmlEntities[_0x6586('0x8e')](_0x215dd6[_0x6586('0x41')]),'headers':{'Date':moment(_0x215dd6[_0x6586('0x8b')])[_0x6586('0x5d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x2b73f2['cc']){_0x5c3435[_0x6586('0x8f')]['Cc']=_0x2b73f2['cc'];}if(_0x2b73f2[_0x6586('0x89')]){_0x5c3435[_0x6586('0x8f')]['Bcc']=_0x2b73f2[_0x6586('0x89')];}return new BPromise(function(_0x4094a5,_0x189fd4){if(_0x2b73f2[_0x6586('0x8d')]){for(var _0x134cf3=0x0;_0x134cf3<_0x2b73f2[_0x6586('0x8d')]['length'];_0x134cf3++){var _0x16057a=_0x2b73f2[_0x6586('0x8d')][_0x134cf3];var _0x583a27=path[_0x6586('0x55')](_0x56739a,_0x16057a[_0x6586('0x57')]);if(fs['existsSync'](_0x583a27)){_0x5c3435[_0x6586('0x54')]['push']({'name':_0x16057a['name'],'contentType':_0x16057a[_0x6586('0x90')],'data':fs[_0x6586('0x91')](_0x583a27)});}}}emlformat[_0x6586('0x92')](_0x5c3435,function(_0x31d43b,_0x485bf9){if(_0x31d43b)return _0x189fd4(_0x31d43b);fs['writeFileSync'](path[_0x6586('0x55')](_0x3e5921,_0x4857bd),_0x485bf9);return _0x4094a5(_0x485bf9);});});}})[_0x6586('0x13')](function(_0x47b8e3){if(_0x47b8e3){return _0x1da010[_0x6586('0x81')](path['join'](_0x3e5921,_0x4857bd),_0x4857bd,function(_0x12bada){if(!_0x12bada)fs[_0x6586('0x93')](path[_0x6586('0x55')](_0x3e5921,_0x4857bd));});}})[_0x6586('0x1e')](handleError(_0x1da010,null));};
\ No newline at end of file
+var _0x56ab=['catch','show','params','keys','options','find','body','describe','create','out','secret','split','findOne','MailAccountId','CmList','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','attachments','join','root','server/files/attachments','List','CmContact','ListId','List\x20not\x20found','SendMail','sendMail','update','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','format','UserId','agent','MailInteraction','MailInteractionId','interaction','get','user','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','contact','User','fullname','email','internal','interface','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','QueryTypes','SELECT','SIP/%s','download','unix','toString','server','files','bcc','subject','createdAt','Attachment','Attachments','from','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','build','writeFileSync','unlinkSync','eml-format','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','socket.io-emitter','html-entities','./mailMessage.socket','jayson/promise','client','http','then','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','MailMessage,\x20%s,\x20%s','message','status','offset','undefined','limit','Content-Range','json','destroy','end','sendStatus','stack','name','send','map','MailMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x56ab,0x190));var _0xb56a=function(_0x112b3c,_0x18e97a){_0x112b3c=_0x112b3c-0x0;var _0x2d8a6c=_0x56ab[_0x112b3c];return _0x2d8a6c;};'use strict';var emlformat=require(_0xb56a('0x0'));var moment=require('moment');var BPromise=require(_0xb56a('0x1'));var util=require(_0xb56a('0x2'));var path=require(_0xb56a('0x3'));var fs=require('fs');var _=require(_0xb56a('0x4'));var Redis=require('ioredis');var htmlToText=require(_0xb56a('0x5'));var qs=require(_0xb56a('0x6'));var logger=require(_0xb56a('0x7'))(_0xb56a('0x8'));var interaction_log=require(_0xb56a('0x7'))(_0xb56a('0x9'));var config=require(_0xb56a('0xa'));var db=require(_0xb56a('0xb'))['db'];config[_0xb56a('0xc')]=_['defaults'](config[_0xb56a('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xb56a('0xd'))(new Redis(config[_0xb56a('0xc')]));var htmlEntities=require(_0xb56a('0xe'));require(_0xb56a('0xf'))['register'](socket);var jayson=require(_0xb56a('0x10'));var client=jayson[_0xb56a('0x11')][_0xb56a('0x12')]({'port':0x232c});var client9003=jayson[_0xb56a('0x11')][_0xb56a('0x12')]({'port':0x232b});var client9002=jayson[_0xb56a('0x11')]['http']({'port':0x232a});function respondWithRpcPromise(_0x186047,_0x1faf0,_0x5ce400,_0x6538f4){return new BPromise(function(_0x5c7de7,_0x7f9748){var _0xe80c7a=_0x6538f4||client;return _0xe80c7a['request'](_0x186047,_0x5ce400)[_0xb56a('0x13')](function(_0x3bcad5){logger[_0xb56a('0x14')]('MailMessage,\x20%s,\x20%s',_0x1faf0,_0xb56a('0x15'));logger[_0xb56a('0x16')](_0xb56a('0x17'),_0x1faf0,_0xb56a('0x15'),JSON[_0xb56a('0x18')](_0x3bcad5));if(_0x3bcad5['error']){if(_0x3bcad5[_0xb56a('0x19')]['code']===0x1f4){logger['error'](_0xb56a('0x1a'),_0x1faf0,_0x3bcad5[_0xb56a('0x19')]['message']);return _0x7f9748(_0x3bcad5['error'][_0xb56a('0x1b')]);}logger[_0xb56a('0x19')](_0xb56a('0x1a'),_0x1faf0,_0x3bcad5['error'][_0xb56a('0x1b')]);return _0x5c7de7(_0x3bcad5[_0xb56a('0x19')][_0xb56a('0x1b')]);}else{logger[_0xb56a('0x14')](_0xb56a('0x1a'),_0x1faf0,_0xb56a('0x15'));_0x5c7de7(_0x3bcad5['result'][_0xb56a('0x1b')]);}})['catch'](function(_0x1d90cb){logger[_0xb56a('0x19')]('MailMessage,\x20%s,\x20%s',_0x1faf0,_0x1d90cb);_0x7f9748(_0x1d90cb);});});}function respondWithResult(_0xe331bd,_0x31619c){_0x31619c=_0x31619c||0xc8;return function(_0x4b234b){if(_0x4b234b){return _0xe331bd[_0xb56a('0x1c')](_0x31619c)['json'](_0x4b234b);}};}function respondWithFilteredResult(_0x3fbf3a,_0x555877){return function(_0x22bc7b){if(_0x22bc7b){var _0x4f37a6=typeof _0x555877[_0xb56a('0x1d')]===_0xb56a('0x1e')&&typeof _0x555877[_0xb56a('0x1f')]===_0xb56a('0x1e');var _0x21832c=_0x22bc7b['count'];var _0x45191b=_0x4f37a6?0x0:_0x555877[_0xb56a('0x1d')];var _0x4a943b=_0x4f37a6?_0x22bc7b['count']:_0x555877[_0xb56a('0x1d')]+_0x555877[_0xb56a('0x1f')];var _0x510cbb;if(_0x4a943b>=_0x21832c){_0x4a943b=_0x21832c;_0x510cbb=0xc8;}else{_0x510cbb=0xce;}_0x3fbf3a[_0xb56a('0x1c')](_0x510cbb);return _0x3fbf3a['set'](_0xb56a('0x20'),_0x45191b+'-'+_0x4a943b+'/'+_0x21832c)[_0xb56a('0x21')](_0x22bc7b);}return null;};}function saveUpdates(_0x25f2f1){return function(_0x4f95db){if(_0x4f95db){return _0x4f95db['update'](_0x25f2f1)['then'](function(_0x4adfe2){return _0x4adfe2;});}return null;};}function removeEntity(_0xbde77b){return function(_0x395967){if(_0x395967){return _0x395967[_0xb56a('0x22')]()['then'](function(){_0xbde77b[_0xb56a('0x1c')](0xcc)[_0xb56a('0x23')]();});}};}function handleEntityNotFound(_0x7fd290){return function(_0x521f58){if(!_0x521f58){_0x7fd290[_0xb56a('0x24')](0x194);}return _0x521f58;};}function handleError(_0x125f65,_0x215b60){_0x215b60=_0x215b60||0x1f4;return function(_0x3c3614){logger[_0xb56a('0x19')](_0x3c3614[_0xb56a('0x25')]);if(_0x3c3614[_0xb56a('0x26')]){delete _0x3c3614['name'];}_0x125f65[_0xb56a('0x1c')](_0x215b60)[_0xb56a('0x27')](_0x3c3614);};}exports['index']=function(_0x1c12d6,_0x2e6575){var _0x191238={},_0x3c8d09={},_0x237978={'count':0x0,'rows':[]};var _0x1f5fbf=_[_0xb56a('0x28')](db[_0xb56a('0x29')][_0xb56a('0x2a')],function(_0xa0604a){return{'name':_0xa0604a[_0xb56a('0x2b')],'type':_0xa0604a[_0xb56a('0x2c')][_0xb56a('0x2d')]};});_0x3c8d09[_0xb56a('0x2e')]=_[_0xb56a('0x28')](_0x1f5fbf,'name');_0x3c8d09['query']=_['keys'](_0x1c12d6[_0xb56a('0x2f')]);_0x3c8d09[_0xb56a('0x30')]=_[_0xb56a('0x31')](_0x3c8d09[_0xb56a('0x2e')],_0x3c8d09['query']);_0x191238[_0xb56a('0x32')]=_[_0xb56a('0x31')](_0x3c8d09[_0xb56a('0x2e')],qs['fields'](_0x1c12d6['query']['fields']));_0x191238['attributes']=_0x191238['attributes'][_0xb56a('0x33')]?_0x191238[_0xb56a('0x32')]:_0x3c8d09[_0xb56a('0x2e')];if(!_0x1c12d6[_0xb56a('0x2f')][_0xb56a('0x34')](_0xb56a('0x35'))){_0x191238[_0xb56a('0x1f')]=qs[_0xb56a('0x1f')](_0x1c12d6[_0xb56a('0x2f')]['limit']);_0x191238[_0xb56a('0x1d')]=qs[_0xb56a('0x1d')](_0x1c12d6['query'][_0xb56a('0x1d')]);}_0x191238[_0xb56a('0x36')]=qs[_0xb56a('0x37')](_0x1c12d6[_0xb56a('0x2f')][_0xb56a('0x37')]);_0x191238[_0xb56a('0x38')]=qs[_0xb56a('0x30')](_[_0xb56a('0x39')](_0x1c12d6[_0xb56a('0x2f')],_0x3c8d09[_0xb56a('0x30')]),_0x1f5fbf);if(_0x1c12d6[_0xb56a('0x2f')][_0xb56a('0x3a')]){_0x191238[_0xb56a('0x38')]=_[_0xb56a('0x3b')](_0x191238[_0xb56a('0x38')],{'$or':_[_0xb56a('0x28')](_0x1f5fbf,function(_0x19c368){if(_0x19c368['type']!==_0xb56a('0x3c')){var _0x7d1b29={};_0x7d1b29[_0x19c368[_0xb56a('0x26')]]={'$like':'%'+_0x1c12d6[_0xb56a('0x2f')][_0xb56a('0x3a')]+'%'};return _0x7d1b29;}})});}_0x191238=_[_0xb56a('0x3b')]({},_0x191238,_0x1c12d6['options']);var _0x1985ed={'where':_0x191238[_0xb56a('0x38')]};return db[_0xb56a('0x29')][_0xb56a('0x3d')](_0x1985ed)[_0xb56a('0x13')](function(_0x2a844f){_0x237978['count']=_0x2a844f;if(_0x1c12d6['query'][_0xb56a('0x3e')]){_0x191238[_0xb56a('0x3f')]=[{'all':!![]}];}return db[_0xb56a('0x29')][_0xb56a('0x40')](_0x191238);})[_0xb56a('0x13')](function(_0x211dec){_0x237978['rows']=_0x211dec;return _0x237978;})['then'](respondWithFilteredResult(_0x2e6575,_0x191238))[_0xb56a('0x41')](handleError(_0x2e6575,null));};exports[_0xb56a('0x42')]=function(_0x56597a,_0x2e95a2){var _0x577b1b={'raw':!![],'where':{'id':_0x56597a[_0xb56a('0x43')]['id']}},_0x165a86={};_0x165a86[_0xb56a('0x2e')]=_['keys'](db[_0xb56a('0x29')][_0xb56a('0x2a')]);_0x165a86[_0xb56a('0x2f')]=_[_0xb56a('0x44')](_0x56597a[_0xb56a('0x2f')]);_0x165a86[_0xb56a('0x30')]=_[_0xb56a('0x31')](_0x165a86[_0xb56a('0x2e')],_0x165a86[_0xb56a('0x2f')]);_0x577b1b[_0xb56a('0x32')]=_[_0xb56a('0x31')](_0x165a86[_0xb56a('0x2e')],qs['fields'](_0x56597a[_0xb56a('0x2f')]['fields']));_0x577b1b[_0xb56a('0x32')]=_0x577b1b['attributes'][_0xb56a('0x33')]?_0x577b1b[_0xb56a('0x32')]:_0x165a86['model'];if(_0x56597a['query'][_0xb56a('0x3e')]){_0x577b1b[_0xb56a('0x3f')]=[{'all':!![]}];}_0x577b1b=_[_0xb56a('0x3b')]({},_0x577b1b,_0x56597a[_0xb56a('0x45')]);return db[_0xb56a('0x29')][_0xb56a('0x46')](_0x577b1b)[_0xb56a('0x13')](handleEntityNotFound(_0x2e95a2,null))['then'](respondWithResult(_0x2e95a2,null))[_0xb56a('0x41')](handleError(_0x2e95a2,null));};exports['update']=function(_0x225d50,_0x57a605){if(_0x225d50['body']['id']){delete _0x225d50[_0xb56a('0x47')]['id'];}return db['MailMessage'][_0xb56a('0x46')]({'where':{'id':_0x225d50[_0xb56a('0x43')]['id']}})['then'](handleEntityNotFound(_0x57a605,null))[_0xb56a('0x13')](saveUpdates(_0x225d50['body'],null))[_0xb56a('0x13')](respondWithResult(_0x57a605,null))[_0xb56a('0x41')](handleError(_0x57a605,null));};exports[_0xb56a('0x22')]=function(_0x2600e4,_0x385fe4){return db[_0xb56a('0x29')]['find']({'where':{'id':_0x2600e4[_0xb56a('0x43')]['id']}})['then'](handleEntityNotFound(_0x385fe4,null))[_0xb56a('0x13')](removeEntity(_0x385fe4,null))[_0xb56a('0x41')](handleError(_0x385fe4,null));};exports[_0xb56a('0x48')]=function(_0x584fd3,_0x2ed55a){return db[_0xb56a('0x29')][_0xb56a('0x48')]()[_0xb56a('0x13')](respondWithResult(_0x2ed55a,null))[_0xb56a('0x41')](handleError(_0x2ed55a,null));};exports[_0xb56a('0x49')]=function(_0x29259a,_0x2e4b04){return db[_0xb56a('0x29')][_0xb56a('0x49')](_0x29259a[_0xb56a('0x47')])[_0xb56a('0x13')](function(_0x5f1ae7){if(_0x5f1ae7){if(_0x5f1ae7['direction']===_0xb56a('0x4a')&&!_0x5f1ae7[_0xb56a('0x4b')]){var _0x59aed2,_0x1de499,_0x5b3e4e;if(_0x29259a[_0xb56a('0x47')]['to']){_0x1de499=_0x29259a[_0xb56a('0x47')]['to'][_0xb56a('0x4c')](',')[0x0];}return db['MailAccount'][_0xb56a('0x4d')]({'where':{'id':_0x5f1ae7[_0xb56a('0x4e')]},'include':[{'model':db[_0xb56a('0x4f')],'as':'List','include':[{'model':db['CmContact'],'as':_0xb56a('0x50'),'where':{'email':_0x1de499},'limit':0x1,'order':[[_0xb56a('0x51'),_0xb56a('0x52')]]}]},{'model':db[_0xb56a('0x53')],'as':_0xb56a('0x54'),'raw':!![],'include':[{'model':db[_0xb56a('0x55')],'as':_0xb56a('0x55'),'raw':!![]}]}]})['then'](function(_0x234dd6){_0x59aed2=_0x234dd6;if(!_0x59aed2||!_0x59aed2['Smtp'])return;var _0x191415=_0x59aed2['getSmtpOptions']();if(_0x29259a['body']['attachments']&&_0x29259a[_0xb56a('0x47')][_0xb56a('0x56')][_0xb56a('0x33')]){for(var _0x456ca3=0x0;_0x456ca3<_0x29259a[_0xb56a('0x47')][_0xb56a('0x56')][_0xb56a('0x33')];_0x456ca3+=0x1){_0x29259a[_0xb56a('0x47')]['attachments'][_0x456ca3]={'filename':_0x29259a[_0xb56a('0x47')][_0xb56a('0x56')][_0x456ca3][_0xb56a('0x26')],'path':path[_0xb56a('0x57')](config[_0xb56a('0x58')],_0xb56a('0x59'),_0x29259a[_0xb56a('0x47')][_0xb56a('0x56')][_0x456ca3]['basename'])};}}_0x5b3e4e={'account':_0x191415,'message':_0x29259a[_0xb56a('0x47')]};return;})[_0xb56a('0x13')](function(){if(_0x59aed2[_0xb56a('0x5a')]){if(_0x59aed2['List'][_0xb56a('0x50')]['length']){return _0x59aed2[_0xb56a('0x5a')]['Contacts'][0x0];}else{return db[_0xb56a('0x5b')]['create'](_['defaults'](_0x29259a['body'],{'firstName':_0x29259a['body']['to'],'email':_0x29259a[_0xb56a('0x47')]['to'],'phone':_0x29259a[_0xb56a('0x47')]['to'],'ListId':_0x59aed2[_0xb56a('0x5c')]}));}}else{throw new Error(_0xb56a('0x5d'));}})[_0xb56a('0x13')](function(){if(_0x5b3e4e){return respondWithRpcPromise(_0xb56a('0x5e'),_0xb56a('0x5f'),_0x5b3e4e,client9003)[_0xb56a('0x13')](function(_0x3405c3){return _0x5f1ae7[_0xb56a('0x60')]({'read':!![],'messageId':_0x3405c3[_0xb56a('0x61')],'sentAt':moment()['format'](_0xb56a('0x62'))});})[_0xb56a('0x41')](function(_0x219393){logger['error']('%s',JSON[_0xb56a('0x18')](_0x219393));return _0x5f1ae7;});}return _0x5f1ae7;});}return _0x5f1ae7;}})[_0xb56a('0x13')](respondWithResult(_0x2e4b04,0xc9))['catch'](handleError(_0x2e4b04,null));};exports[_0xb56a('0x63')]=function(_0x486246,_0x3c77f9){var _0x25509b={'agent':{},'channel':_0xb56a('0x64')};if(_0x486246['body']['id']){delete _0x486246[_0xb56a('0x47')]['id'];}_0x486246[_0xb56a('0x47')][_0xb56a('0x65')]=!![];_0x486246['body']['readAt']=moment()[_0xb56a('0x66')](_0xb56a('0x62'));_0x486246[_0xb56a('0x47')][_0xb56a('0x67')]=_0x486246[_0xb56a('0x47')][_0xb56a('0x67')]||_0x486246['user']['id'];_0x25509b[_0xb56a('0x68')]['id']=_0x486246[_0xb56a('0x47')][_0xb56a('0x67')];return db[_0xb56a('0x29')][_0xb56a('0x46')]({'where':{'id':_0x486246[_0xb56a('0x43')]['id'],'UserId':null}})[_0xb56a('0x13')](handleEntityNotFound(_0x3c77f9,null))[_0xb56a('0x13')](saveUpdates(_0x486246['body'],null))[_0xb56a('0x13')](function(_0x2f7340){if(_0x2f7340){_0x25509b['message']=_0x2f7340['get']({'plain':!![]});return db[_0xb56a('0x69')][_0xb56a('0x46')]({'where':{'id':_0x2f7340[_0xb56a('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0x3c77f9,null))[_0xb56a('0x13')](function(_0x2f6b4d){if(_0x2f6b4d){return _0x2f6b4d[_0xb56a('0x60')]({'UserId':_0x486246[_0xb56a('0x47')]['UserId'],'read1stAt':_['isNil'](_0x2f6b4d['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x15fc3e){if(_0x15fc3e){_0x25509b[_0xb56a('0x6b')]=_0x15fc3e[_0xb56a('0x6c')]({'plain':!![]});interaction_log[_0xb56a('0x14')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x486246[_0xb56a('0x6d')]['id'],_0x486246[_0xb56a('0x6d')][_0xb56a('0x26')],_0x486246[_0xb56a('0x6d')][_0xb56a('0x6e')],_0x25509b['interaction']['id'],_0x486246[_0xb56a('0x47')]?JSON['stringify'](_0x486246[_0xb56a('0x47')]):'null');return respondWithRpcPromise('AcceptMessage',_0xb56a('0x6f'),_0x25509b);}return null;})[_0xb56a('0x13')](function(_0x285621){var _0x14fb55=_0xb56a('0x70')+_0x285621[_0xb56a('0x1b')][_0xb56a('0x71')];return db[_0xb56a('0x72')]['query'](_0x14fb55,{'type':db[_0xb56a('0x73')]['QueryTypes']['SELECT'],'raw':!![]})[_0xb56a('0x13')](function(_0x846589){return _0x846589;});})['then'](function(_0x3df773){if(_0x3df773){_0x25509b[_0xb56a('0x1b')][_0xb56a('0x74')]=_0x3df773[0x0];if(!_0x486246['body'][_0xb56a('0x67')])return;return db[_0xb56a('0x75')][_0xb56a('0x46')]({'where':{'id':_0x486246['body'][_0xb56a('0x67')],'role':_0xb56a('0x68')},'attributes':['id',_0xb56a('0x26'),_0xb56a('0x76'),_0xb56a('0x77'),_0xb56a('0x78')],'raw':!![]});}return null;})[_0xb56a('0x13')](function(_0xf4e3b3){if(!_0xf4e3b3)return null;_0x25509b[_0xb56a('0x1b')][_0xb56a('0x68')]=_0xf4e3b3;return _0x25509b;})[_0xb56a('0x13')](function(_0x2e7a5c){if(_0x2e7a5c){if(_0x486246[_0xb56a('0x47')]['manual']){_0x25509b[_0xb56a('0x1b')][_0xb56a('0x79')]=util[_0xb56a('0x66')]('SIP/%s',_0x486246[_0xb56a('0x6d')][_0xb56a('0x26')]);_0x25509b[_0xb56a('0x1b')][_0xb56a('0x7a')]=_0x25509b[_0xb56a('0x7a')];_0x25509b['message'][_0xb56a('0x7b')]=_0x25509b['channel'];_0x25509b[_0xb56a('0x1b')][_0xb56a('0x7c')]=_0xb56a('0x63');_0x25509b['message'][_0xb56a('0x47')]=htmlToText[_0xb56a('0x7d')](_0x25509b[_0xb56a('0x1b')][_0xb56a('0x47')]);return respondWithRpcPromise(_0xb56a('0x7e'),'EventManager',{'event':_0xb56a('0x7f'),'message':_0x25509b[_0xb56a('0x1b')]},client9002)[_0xb56a('0x13')](function(){return _0x25509b;});}return _0x25509b;}return null;})[_0xb56a('0x13')](respondWithResult(_0x3c77f9,null))[_0xb56a('0x41')](handleError(_0x3c77f9,null));};exports[_0xb56a('0x80')]=function(_0x2c5fe3,_0xab4c0f){var _0x532cad={'agent':{},'channel':_0xb56a('0x64')};if(_0x2c5fe3[_0xb56a('0x47')]['id']){delete _0x2c5fe3[_0xb56a('0x47')]['id'];}_0x2c5fe3[_0xb56a('0x47')]['UserId']=_0x2c5fe3[_0xb56a('0x47')]['UserId']||_0x2c5fe3[_0xb56a('0x6d')]['id'];_0x532cad[_0xb56a('0x68')]['id']=_0x2c5fe3[_0xb56a('0x47')][_0xb56a('0x67')];return db['MailMessage'][_0xb56a('0x46')]({'where':{'id':_0x2c5fe3[_0xb56a('0x43')]['id'],'UserId':null}})[_0xb56a('0x13')](handleEntityNotFound(_0xab4c0f,null))[_0xb56a('0x13')](function(_0x55038b){if(_0x55038b){_0x532cad[_0xb56a('0x1b')]=_0x55038b[_0xb56a('0x6c')]({'plain':!![]});return db[_0xb56a('0x69')][_0xb56a('0x46')]({'where':{'id':_0x55038b[_0xb56a('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0xab4c0f,null))['then'](function(_0x723d7a){if(_0x723d7a){_0x532cad['interaction']=_0x723d7a[_0xb56a('0x6c')]({'plain':!![]});interaction_log[_0xb56a('0x14')](_0xb56a('0x81'),_0x2c5fe3['user']['id'],_0x2c5fe3[_0xb56a('0x6d')][_0xb56a('0x26')],_0x2c5fe3[_0xb56a('0x6d')][_0xb56a('0x6e')],_0x532cad[_0xb56a('0x6b')]['id'],_0x2c5fe3[_0xb56a('0x47')]?JSON[_0xb56a('0x18')](_0x2c5fe3[_0xb56a('0x47')]):'null');return respondWithRpcPromise(_0xb56a('0x82'),_0xb56a('0x83'),_0x532cad);}return null;})[_0xb56a('0x13')](function(_0x2a1491){var _0x18b450='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2a1491[_0xb56a('0x1b')][_0xb56a('0x71')];return db['sequelize'][_0xb56a('0x2f')](_0x18b450,{'type':db['Sequelize'][_0xb56a('0x84')][_0xb56a('0x85')],'raw':!![]})[_0xb56a('0x13')](function(_0x1fe5d6){return _0x1fe5d6;});})[_0xb56a('0x13')](function(_0x5965c1){if(_0x5965c1){_0x532cad[_0xb56a('0x1b')][_0xb56a('0x74')]=_0x5965c1[0x0];if(!_0x2c5fe3[_0xb56a('0x47')]['UserId'])return;return db[_0xb56a('0x75')][_0xb56a('0x46')]({'where':{'id':_0x2c5fe3['body'][_0xb56a('0x67')],'role':'agent'},'attributes':['id',_0xb56a('0x26'),_0xb56a('0x76'),'email',_0xb56a('0x78')],'raw':!![]});}return null;})[_0xb56a('0x13')](function(_0x53a68e){if(!_0x53a68e)return null;_0x532cad[_0xb56a('0x1b')]['agent']=_0x53a68e;return _0x532cad;})[_0xb56a('0x13')](function(_0x146c83){if(_0x146c83){_0x146c83[_0xb56a('0x1b')]['interface']=util[_0xb56a('0x66')](_0xb56a('0x86'),_0x2c5fe3[_0xb56a('0x6d')][_0xb56a('0x26')]);_0x146c83[_0xb56a('0x1b')][_0xb56a('0x7a')]=_0x532cad[_0xb56a('0x7a')];_0x146c83['message'][_0xb56a('0x7b')]=_0x532cad[_0xb56a('0x7a')];_0x146c83['message'][_0xb56a('0x7c')]=_0xb56a('0x80');_0x146c83[_0xb56a('0x1b')][_0xb56a('0x47')]=htmlToText[_0xb56a('0x7d')](_0x532cad[_0xb56a('0x1b')][_0xb56a('0x47')]);respondWithRpcPromise(_0xb56a('0x7e'),_0xb56a('0x7e'),{'event':'rejectmessage','message':_0x146c83['message']},client9002);return _0x532cad;}return null;})[_0xb56a('0x13')](respondWithResult(_0xab4c0f,null))['catch'](handleError(_0xab4c0f,null));};exports[_0xb56a('0x87')]=function(_0x1adfc8,_0x38ffef){var _0x522249=moment()[_0xb56a('0x88')]()[_0xb56a('0x89')]();var _0x3d6976=path[_0xb56a('0x57')](config[_0xb56a('0x58')],_0xb56a('0x8a'),_0xb56a('0x8b'),'tmp');var _0x472aef=path['join'](config[_0xb56a('0x58')],_0xb56a('0x8a'),'files','attachments');var _0x34e27f=util[_0xb56a('0x66')]('message-%s.eml',_0x522249);return db[_0xb56a('0x29')][_0xb56a('0x46')]({'where':{'id':_0x1adfc8[_0xb56a('0x43')]['id']},'attributes':['id','body','from','to','cc',_0xb56a('0x8c'),_0xb56a('0x8d'),_0xb56a('0x8e')],'include':_0x1adfc8[_0xb56a('0x2f')][_0xb56a('0x56')]?[{'model':db[_0xb56a('0x8f')],'as':_0xb56a('0x90')}]:undefined})[_0xb56a('0x13')](handleEntityNotFound(_0x38ffef,null))[_0xb56a('0x13')](function(_0x42c621){if(_0x42c621){var _0x46aef1=_0x42c621;var _0x422c35={'from':_0x46aef1[_0xb56a('0x91')],'to':_0x46aef1['to'],'subject':_0x46aef1[_0xb56a('0x8d')],'html':htmlEntities[_0xb56a('0x92')](_0x46aef1['body']),'headers':{'Date':moment(_0x46aef1[_0xb56a('0x8e')])[_0xb56a('0x66')](_0xb56a('0x93'))},'attachments':[]};if(_0x42c621['cc']){_0x422c35['headers']['Cc']=_0x42c621['cc'];}if(_0x42c621[_0xb56a('0x8c')]){_0x422c35[_0xb56a('0x94')][_0xb56a('0x95')]=_0x42c621[_0xb56a('0x8c')];}return new BPromise(function(_0x342aa1,_0x5aaea6){if(_0x42c621[_0xb56a('0x90')]){for(var _0x16b77d=0x0;_0x16b77d<_0x42c621['Attachments'][_0xb56a('0x33')];_0x16b77d++){var _0x4eba81=_0x42c621['Attachments'][_0x16b77d];var _0x54d917=path[_0xb56a('0x57')](_0x472aef,_0x4eba81['basename']);if(fs[_0xb56a('0x96')](_0x54d917)){_0x422c35['attachments'][_0xb56a('0x97')]({'name':_0x4eba81[_0xb56a('0x26')],'contentType':_0x4eba81[_0xb56a('0x2c')],'data':fs['readFileSync'](_0x54d917)});}}}emlformat[_0xb56a('0x98')](_0x422c35,function(_0x488f63,_0x3a3180){if(_0x488f63)return _0x5aaea6(_0x488f63);fs[_0xb56a('0x99')](path[_0xb56a('0x57')](_0x3d6976,_0x34e27f),_0x3a3180);return _0x342aa1(_0x3a3180);});});}})[_0xb56a('0x13')](function(_0x42c597){if(_0x42c597){return _0x38ffef[_0xb56a('0x87')](path['join'](_0x3d6976,_0x34e27f),_0x34e27f,function(_0x3e5efa){if(!_0x3e5efa)fs[_0xb56a('0x9a')](path['join'](_0x3d6976,_0x34e27f));});}})[_0xb56a('0x41')](handleError(_0x38ffef,null));};
\ No newline at end of file
index e0e655e..4f99234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ec=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','update'];(function(_0x1a4979,_0x524bcf){var _0x2f6fec=function(_0x2ece47){while(--_0x2ece47){_0x1a4979['push'](_0x1a4979['shift']());}};_0x2f6fec(++_0x524bcf);}(_0xd1ec,0x19d));var _0xcd1e=function(_0x4b4b93,_0x5c2ad5){_0x4b4b93=_0x4b4b93-0x0;var _0x25ebd5=_0xd1ec[_0x4b4b93];return _0x25ebd5;};'use strict';var EventEmitter=require(_0xcd1e('0x0'));var MailMessage=require(_0xcd1e('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xcd1e('0x2'),'afterDestroy':_0xcd1e('0x3')};function emitEvent(_0xd90318){return function(_0x162207,_0x19c8ac,_0x3f83f7){MailMessageEvents[_0xcd1e('0x4')](_0xd90318+':'+_0x162207['id'],_0x162207);MailMessageEvents['emit'](_0xd90318,_0x162207);_0x3f83f7(null);};}for(var e in events){if(events[_0xcd1e('0x5')](e)){var event=events[e];MailMessage[_0xcd1e('0x6')](e,emitEvent(event));}}module[_0xcd1e('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0x4d1e=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','exports'];(function(_0x1754a5,_0x2ab07f){var _0x200132=function(_0x560d85){while(--_0x560d85){_0x1754a5['push'](_0x1754a5['shift']());}};_0x200132(++_0x2ab07f);}(_0x4d1e,0xd0));var _0xe4d1=function(_0x70fd53,_0x2a95a6){_0x70fd53=_0x70fd53-0x0;var _0x4b71c5=_0x4d1e[_0x70fd53];return _0x4b71c5;};'use strict';var EventEmitter=require(_0xe4d1('0x0'));var MailMessage=require(_0xe4d1('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xe4d1('0x2')](0x0);var events={'afterCreate':_0xe4d1('0x3'),'afterUpdate':_0xe4d1('0x4'),'afterDestroy':_0xe4d1('0x5')};function emitEvent(_0x18babb){return function(_0x34efc7,_0x80248b,_0x3cc5cd){MailMessageEvents[_0xe4d1('0x6')](_0x18babb+':'+_0x34efc7['id'],_0x34efc7);MailMessageEvents[_0xe4d1('0x6')](_0x18babb,_0x34efc7);_0x3cc5cd(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0xe4d1('0x7')]=MailMessageEvents;
\ No newline at end of file
index 077f16a..7e688b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c8=['messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','toLowerCase','out','secret','isNil','UserId','MailInteraction','findOne','direction','catch','utf8mb4','lodash','util','api','moment','request-promise','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages'];(function(_0x3efa7d,_0x58768d){var _0x26402f=function(_0x3cea43){while(--_0x3cea43){_0x3efa7d['push'](_0x3efa7d['shift']());}};_0x26402f(++_0x58768d);}(_0xc0c8,0x1c5));var _0x8c0c=function(_0x31c787,_0x14bbff){_0x31c787=_0x31c787-0x0;var _0xa2367c=_0xc0c8[_0x31c787];return _0xa2367c;};'use strict';var _=require(_0x8c0c('0x0'));var util=require(_0x8c0c('0x1'));var logger=require('../../config/logger')(_0x8c0c('0x2'));var moment=require(_0x8c0c('0x3'));var BPromise=require('bluebird');var rp=require(_0x8c0c('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x8c0c('0x5'));var rimraf=require(_0x8c0c('0x6'));var config=require('../../config/environment');var attributes=require(_0x8c0c('0x7'));module[_0x8c0c('0x8')]=function(_0x25da1f,_0x484986){return _0x25da1f[_0x8c0c('0x9')](_0x8c0c('0xa'),attributes,{'tableName':_0x8c0c('0xb'),'paranoid':![],'indexes':[{'name':_0x8c0c('0xc'),'fields':[_0x8c0c('0xc')]},{'name':_0x8c0c('0xd'),'fields':[_0x8c0c('0xe'),_0x8c0c('0xf')],'type':_0x8c0c('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x52c6d3,_0x4128d2,_0x1c85ca){if(_0x52c6d3[_0x8c0c('0x11')]){_0x52c6d3['plainBody']=htmlToText[_0x8c0c('0x12')](_0x52c6d3['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1c85ca(null,_0x4128d2);},'afterCreate':function(_0x57cd30,_0xf5fbac,_0xcbc2e7){var _0x1b8e37=_0x25da1f[_0x8c0c('0x13')];var _0x35bfba=_0x57cd30[_0x8c0c('0x14')]({'plain':!![]});if(_0x35bfba['direction'][_0x8c0c('0x15')]()==='in'||_0x35bfba['direction']['toLowerCase']()===_0x8c0c('0x16')&&!_0x35bfba[_0x8c0c('0x17')]&&!_[_0x8c0c('0x18')](_0x35bfba[_0x8c0c('0x19')])){_0x1b8e37[_0x8c0c('0x1a')][_0x8c0c('0x1b')]({'where':{'id':_0x35bfba['MailInteractionId']}})['then'](function(_0x411acb){if(_0x411acb){_0x411acb['update']({'lastMsgAt':_0x35bfba['createdAt'],'lastMsgDirection':_0x35bfba[_0x8c0c('0x1c')]['toLowerCase']()});}})[_0x8c0c('0x1d')](function(_0x4a618b){console['error'](_0x4a618b);});}_0xcbc2e7();}},'charset':_0x8c0c('0x1e'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd799=['MailInteraction','findOne','MailInteractionId','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','define','MailMessage','mail_messages','fti_mail_messages','subject','FULLTEXT','body','plainBody','models','get','toLowerCase','direction','out','secret','UserId'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0xd799,0x12f));var _0x9d79=function(_0x3e11db,_0x175f8b){_0x3e11db=_0x3e11db-0x0;var _0x39e8b5=_0xd799[_0x3e11db];return _0x39e8b5;};'use strict';var _=require(_0x9d79('0x0'));var util=require(_0x9d79('0x1'));var logger=require(_0x9d79('0x2'))(_0x9d79('0x3'));var moment=require(_0x9d79('0x4'));var BPromise=require(_0x9d79('0x5'));var rp=require(_0x9d79('0x6'));var htmlToText=require(_0x9d79('0x7'));var fs=require('fs');var path=require(_0x9d79('0x8'));var rimraf=require(_0x9d79('0x9'));var config=require(_0x9d79('0xa'));var attributes=require(_0x9d79('0xb'));module['exports']=function(_0xa2e5e2,_0xf5aa74){return _0xa2e5e2[_0x9d79('0xc')](_0x9d79('0xd'),attributes,{'tableName':_0x9d79('0xe'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0x9d79('0xf'),'fields':['plainBody',_0x9d79('0x10')],'type':_0x9d79('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2a455f,_0x4557da,_0x29389d){if(_0x2a455f[_0x9d79('0x12')]){_0x2a455f[_0x9d79('0x13')]=htmlToText['fromString'](_0x2a455f[_0x9d79('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x29389d(null,_0x4557da);},'afterCreate':function(_0x2d5417,_0x47e27c,_0xbbb499){var _0x5a9efd=_0xa2e5e2[_0x9d79('0x14')];var _0x2876ec=_0x2d5417[_0x9d79('0x15')]({'plain':!![]});if(_0x2876ec['direction'][_0x9d79('0x16')]()==='in'||_0x2876ec[_0x9d79('0x17')][_0x9d79('0x16')]()===_0x9d79('0x18')&&!_0x2876ec[_0x9d79('0x19')]&&!_['isNil'](_0x2876ec[_0x9d79('0x1a')])){_0x5a9efd[_0x9d79('0x1b')][_0x9d79('0x1c')]({'where':{'id':_0x2876ec[_0x9d79('0x1d')]}})['then'](function(_0xdc04a1){if(_0xdc04a1){_0xdc04a1['update']({'lastMsgAt':_0x2876ec['createdAt'],'lastMsgDirection':_0x2876ec['direction']['toLowerCase']()});}})[_0x9d79('0x1e')](function(_0x1537f7){console[_0x9d79('0x1f')](_0x1537f7);});}_0xbbb499();}},'charset':'utf8mb4','collate':_0x9d79('0x20')});};
\ No newline at end of file
index 5abe1b2..882ac2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['result','MailMessage','create','body','options','CreateMailMessage','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./mailMessage.socket','request','then','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe5af,0x9c));var _0xfe5a=function(_0xb76a7,_0x1161ef){_0xb76a7=_0xb76a7-0x0;var _0x152fac=_0xe5af[_0xb76a7];return _0x152fac;};'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});config['redis']=_[_0xfe5a('0x8')](config[_0xfe5a('0x9')],{'host':_0xfe5a('0xa'),'port':0x18eb});var socket=require(_0xfe5a('0xb'))(new Redis(config['redis']));require(_0xfe5a('0xc'))['register'](socket);function respondWithRpcPromise(_0x51718e,_0x259e8a,_0x2cb946){return new BPromise(function(_0x543619,_0xb51e47){return client[_0xfe5a('0xd')](_0x51718e,_0x2cb946)[_0xfe5a('0xe')](function(_0x50024c){logger[_0xfe5a('0xf')]('MailMessage,\x20%s,\x20%s',_0x259e8a,_0xfe5a('0x10'));logger[_0xfe5a('0x11')](_0xfe5a('0x12'),_0x259e8a,_0xfe5a('0x10'),JSON[_0xfe5a('0x13')](_0x50024c));if(_0x50024c['error']){if(_0x50024c[_0xfe5a('0x14')][_0xfe5a('0x15')]===0x1f4){logger[_0xfe5a('0x14')](_0xfe5a('0x16'),_0x259e8a,_0x50024c[_0xfe5a('0x14')][_0xfe5a('0x17')]);return _0xb51e47(_0x50024c[_0xfe5a('0x14')][_0xfe5a('0x17')]);}logger[_0xfe5a('0x14')](_0xfe5a('0x16'),_0x259e8a,_0x50024c[_0xfe5a('0x14')][_0xfe5a('0x17')]);return _0x543619(_0x50024c[_0xfe5a('0x14')][_0xfe5a('0x17')]);}else{logger[_0xfe5a('0xf')](_0xfe5a('0x16'),_0x259e8a,'request\x20sent');_0x543619(_0x50024c[_0xfe5a('0x18')][_0xfe5a('0x17')]);}})['catch'](function(_0x3b0101){logger[_0xfe5a('0x14')](_0xfe5a('0x16'),_0x259e8a,_0x3b0101);_0xb51e47(_0x3b0101);});});}exports['CreateMailMessage']=function(_0x485c15){var _0x3e11ad=this;return new Promise(function(_0x1c6ba7,_0xded538){return db[_0xfe5a('0x19')][_0xfe5a('0x1a')](_0x485c15[_0xfe5a('0x1b')],{'raw':_0x485c15['options']?_0x485c15[_0xfe5a('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xfe5a('0xe')](function(_0x39d825){logger[_0xfe5a('0xf')]('CreateMailMessage',_0x485c15);logger['debug'](_0xfe5a('0x1d'),_0x485c15,JSON[_0xfe5a('0x13')](_0x39d825));_0x1c6ba7(_0x39d825);})['catch'](function(_0x44a0bd){logger[_0xfe5a('0x14')]('CreateMailMessage',_0x44a0bd[_0xfe5a('0x17')],_0x485c15);_0xded538(_0x3e11ad[_0xfe5a('0x14')](0x1f4,_0x44a0bd[_0xfe5a('0x17')]));});});};
\ No newline at end of file
+var _0x3423=['./mailMessage.socket','then','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','CreateMailMessage','MailMessage','body','options','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x4d4dea,_0x101bba){var _0x22adce=function(_0x1d12fe){while(--_0x1d12fe){_0x4d4dea['push'](_0x4d4dea['shift']());}};_0x22adce(++_0x101bba);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3342('0x0'));var BPromise=require(_0x3342('0x1'));var rs=require(_0x3342('0x2'));var fs=require('fs');var Redis=require(_0x3342('0x3'));var db=require(_0x3342('0x4'))['db'];var utils=require(_0x3342('0x5'));var logger=require(_0x3342('0x6'))(_0x3342('0x7'));var config=require(_0x3342('0x8'));var jayson=require(_0x3342('0x9'));var client=jayson[_0x3342('0xa')][_0x3342('0xb')]({'port':0x232a});config[_0x3342('0xc')]=_[_0x3342('0xd')](config[_0x3342('0xc')],{'host':_0x3342('0xe'),'port':0x18eb});var socket=require(_0x3342('0xf'))(new Redis(config[_0x3342('0xc')]));require(_0x3342('0x10'))['register'](socket);function respondWithRpcPromise(_0x582c37,_0x2d0cb0,_0x481a17){return new BPromise(function(_0x5a1fba,_0x51b276){return client['request'](_0x582c37,_0x481a17)[_0x3342('0x11')](function(_0x2f3c47){logger['info'](_0x3342('0x12'),_0x2d0cb0,'request\x20sent');logger[_0x3342('0x13')](_0x3342('0x14'),_0x2d0cb0,'request\x20sent',JSON[_0x3342('0x15')](_0x2f3c47));if(_0x2f3c47[_0x3342('0x16')]){if(_0x2f3c47[_0x3342('0x16')][_0x3342('0x17')]===0x1f4){logger[_0x3342('0x16')](_0x3342('0x12'),_0x2d0cb0,_0x2f3c47[_0x3342('0x16')]['message']);return _0x51b276(_0x2f3c47[_0x3342('0x16')][_0x3342('0x18')]);}logger['error'](_0x3342('0x12'),_0x2d0cb0,_0x2f3c47[_0x3342('0x16')]['message']);return _0x5a1fba(_0x2f3c47['error'][_0x3342('0x18')]);}else{logger[_0x3342('0x19')](_0x3342('0x12'),_0x2d0cb0,_0x3342('0x1a'));_0x5a1fba(_0x2f3c47[_0x3342('0x1b')][_0x3342('0x18')]);}})[_0x3342('0x1c')](function(_0x3ebf6b){logger[_0x3342('0x16')]('MailMessage,\x20%s,\x20%s',_0x2d0cb0,_0x3ebf6b);_0x51b276(_0x3ebf6b);});});}exports[_0x3342('0x1d')]=function(_0xda235a){var _0x2f6395=this;return new Promise(function(_0x5e05f5,_0x3cb86f){return db[_0x3342('0x1e')]['create'](_0xda235a[_0x3342('0x1f')],{'raw':_0xda235a[_0x3342('0x20')]?_0xda235a['options'][_0x3342('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x3f271c){logger[_0x3342('0x19')](_0x3342('0x1d'),_0xda235a);logger[_0x3342('0x13')](_0x3342('0x1d'),_0xda235a,JSON[_0x3342('0x15')](_0x3f271c));_0x5e05f5(_0x3f271c);})[_0x3342('0x1c')](function(_0x2d8622){logger['error'](_0x3342('0x1d'),_0x2d8622['message'],_0xda235a);_0x3cb86f(_0x2f6395['error'](0x1f4,_0x2d8622[_0x3342('0x18')]));});});};
\ No newline at end of file
index 63cb781..fc53203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda04=['length','mailMessage:','./mailMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x2228e4,_0x268d15){var _0x164e19=function(_0x42af9a){while(--_0x42af9a){_0x2228e4['push'](_0x2228e4['shift']());}};_0x164e19(++_0x268d15);}(_0xda04,0x161));var _0x4da0=function(_0x31cc0e,_0x24ba4c){_0x31cc0e=_0x31cc0e-0x0;var _0x144862=_0xda04[_0x31cc0e];return _0x144862;};'use strict';var MailMessageEvents=require(_0x4da0('0x0'));var events=[_0x4da0('0x1'),_0x4da0('0x2'),_0x4da0('0x3')];function createListener(_0x5a7bcb,_0x581ac0){return function(_0x46b35c){_0x581ac0[_0x4da0('0x4')](_0x5a7bcb,_0x46b35c);};}function removeListener(_0xcaaa50,_0x1ee8af){return function(){MailMessageEvents[_0x4da0('0x5')](_0xcaaa50,_0x1ee8af);};}exports[_0x4da0('0x6')]=function(_0x2b4237){for(var _0x413da8=0x0,_0x2708b6=events[_0x4da0('0x7')];_0x413da8<_0x2708b6;_0x413da8++){var _0x105aff=events[_0x413da8];var _0x378913=createListener(_0x4da0('0x8')+_0x105aff,_0x2b4237);MailMessageEvents['on'](_0x105aff,_0x378913);}};
\ No newline at end of file
+var _0x6ec0=['emit','removeListener','length','./mailMessage.events','remove','update'];(function(_0x90e44e,_0x34277f){var _0x34afce=function(_0x5f2399){while(--_0x5f2399){_0x90e44e['push'](_0x90e44e['shift']());}};_0x34afce(++_0x34277f);}(_0x6ec0,0x9f));var _0x06ec=function(_0xa7c249,_0x599b5e){_0xa7c249=_0xa7c249-0x0;var _0x1a9b26=_0x6ec0[_0xa7c249];return _0x1a9b26;};'use strict';var MailMessageEvents=require(_0x06ec('0x0'));var events=['save',_0x06ec('0x1'),_0x06ec('0x2')];function createListener(_0x262aeb,_0x2337ca){return function(_0x4d2316){_0x2337ca[_0x06ec('0x3')](_0x262aeb,_0x4d2316);};}function removeListener(_0xea2f0a,_0x37c590){return function(){MailMessageEvents[_0x06ec('0x4')](_0xea2f0a,_0x37c590);};}exports['register']=function(_0x464b74){for(var _0x7318ad=0x0,_0x39b353=events[_0x06ec('0x5')];_0x7318ad<_0x39b353;_0x7318ad++){var _0x31dd0b=events[_0x7318ad];var _0x2bfc28=createListener('mailMessage:'+_0x31dd0b,_0x464b74);MailMessageEvents['on'](_0x31dd0b,_0x2bfc28);}};
\ No newline at end of file
index a13169b..9ece7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca39=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','describe','/:id','show','/:id/members','/:id/teams','/:id/users','create','post','addTeams','addAgents','put','delete','removeTeams','removeAgents','exports','multer','util'];(function(_0x3d59d3,_0xeb7e85){var _0x207613=function(_0x4a34f1){while(--_0x4a34f1){_0x3d59d3['push'](_0x3d59d3['shift']());}};_0x207613(++_0xeb7e85);}(_0xca39,0x1da));var _0x9ca3=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xca39[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x9ca3('0x0'));var util=require(_0x9ca3('0x1'));var path=require(_0x9ca3('0x2'));var timeout=require(_0x9ca3('0x3'));var express=require(_0x9ca3('0x4'));var router=express[_0x9ca3('0x5')]();var fs_extra=require(_0x9ca3('0x6'));var auth=require(_0x9ca3('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9ca3('0x8'));var controller=require(_0x9ca3('0x9'));router[_0x9ca3('0xa')]('/',auth[_0x9ca3('0xb')](),controller[_0x9ca3('0xc')]);router[_0x9ca3('0xa')]('/describe',auth[_0x9ca3('0xb')](),controller[_0x9ca3('0xd')]);router['get'](_0x9ca3('0xe'),auth[_0x9ca3('0xb')](),controller[_0x9ca3('0xf')]);router['get'](_0x9ca3('0x10'),auth[_0x9ca3('0xb')](),controller['getMembers']);router[_0x9ca3('0xa')](_0x9ca3('0x11'),auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x9ca3('0x12'),auth[_0x9ca3('0xb')](),controller['getAgents']);router['post']('/',auth[_0x9ca3('0xb')](),controller[_0x9ca3('0x13')]);router[_0x9ca3('0x14')](_0x9ca3('0x11'),auth[_0x9ca3('0xb')](),controller[_0x9ca3('0x15')]);router[_0x9ca3('0x14')](_0x9ca3('0x12'),auth[_0x9ca3('0xb')](),controller[_0x9ca3('0x16')]);router[_0x9ca3('0x17')](_0x9ca3('0xe'),auth[_0x9ca3('0xb')](),controller['update']);router[_0x9ca3('0x18')]('/:id',auth[_0x9ca3('0xb')](),controller['destroy']);router[_0x9ca3('0x18')](_0x9ca3('0x11'),auth[_0x9ca3('0xb')](),controller[_0x9ca3('0x19')]);router['delete'](_0x9ca3('0x12'),auth[_0x9ca3('0xb')](),controller[_0x9ca3('0x1a')]);module[_0x9ca3('0x1b')]=router;
\ No newline at end of file
+var _0xb39b=['getAgents','post','addAgents','update','destroy','delete','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users'];(function(_0x1fc12e,_0x206bcf){var _0x5c752b=function(_0x4d349f){while(--_0x4d349f){_0x1fc12e['push'](_0x1fc12e['shift']());}};_0x5c752b(++_0x206bcf);}(_0xb39b,0xbe));var _0xbb39=function(_0x26bdb8,_0x39f3ca){_0x26bdb8=_0x26bdb8-0x0;var _0x555429=_0xb39b[_0x26bdb8];return _0x555429;};'use strict';var multer=require(_0xbb39('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xbb39('0x1'));var express=require(_0xbb39('0x2'));var router=express[_0xbb39('0x3')]();var fs_extra=require(_0xbb39('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbb39('0x5'));var config=require(_0xbb39('0x6'));var controller=require(_0xbb39('0x7'));router[_0xbb39('0x8')]('/',auth[_0xbb39('0x9')](),controller[_0xbb39('0xa')]);router[_0xbb39('0x8')]('/describe',auth[_0xbb39('0x9')](),controller[_0xbb39('0xb')]);router[_0xbb39('0x8')](_0xbb39('0xc'),auth[_0xbb39('0x9')](),controller[_0xbb39('0xd')]);router['get'](_0xbb39('0xe'),auth['isAuthenticated'](),controller[_0xbb39('0xf')]);router[_0xbb39('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0xbb39('0x10')]);router[_0xbb39('0x8')](_0xbb39('0x11'),auth[_0xbb39('0x9')](),controller[_0xbb39('0x12')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/teams',auth[_0xbb39('0x9')](),controller['addTeams']);router[_0xbb39('0x13')](_0xbb39('0x11'),auth['isAuthenticated'](),controller[_0xbb39('0x14')]);router['put'](_0xbb39('0xc'),auth['isAuthenticated'](),controller[_0xbb39('0x15')]);router['delete'](_0xbb39('0xc'),auth[_0xbb39('0x9')](),controller[_0xbb39('0x16')]);router['delete']('/:id/teams',auth['isAuthenticated'](),controller['removeTeams']);router[_0xbb39('0x17')](_0xbb39('0x11'),auth[_0xbb39('0x9')](),controller[_0xbb39('0x18')]);module[_0xbb39('0x19')]=router;
\ No newline at end of file
index 5d291f8..8c9df27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78b8=['rrmemory','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3b9f2a,_0x4d5f64){var _0x3e62c8=function(_0x2fe554){while(--_0x2fe554){_0x3b9f2a['push'](_0x3b9f2a['shift']());}};_0x3e62c8(++_0x4d5f64);}(_0x78b8,0x1a6));var _0x878b=function(_0x1731e1,_0x2d53a7){_0x1731e1=_0x1731e1-0x0;var _0x2070dc=_0x78b8[_0x1731e1];return _0x2070dc;};'use strict';var Sequelize=require(_0x878b('0x0'));module[_0x878b('0x1')]={'name':{'type':Sequelize[_0x878b('0x2')],'unique':_0x878b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x878b('0x2')]},'timeout':{'type':Sequelize[_0x878b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x878b('0x5'),'beepall',_0x878b('0x6'))}};
\ No newline at end of file
+var _0x0a54=['exports','name','INTEGER','ENUM','rrmemory','beepall','sequelize'];(function(_0x386dcc,_0xfd025){var _0xb4811c=function(_0x32e472){while(--_0x32e472){_0x386dcc['push'](_0x386dcc['shift']());}};_0xb4811c(++_0xfd025);}(_0x0a54,0x156));var _0x40a5=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x0a54[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x40a5('0x0'));module[_0x40a5('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x40a5('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x40a5('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x40a5('0x4')](_0x40a5('0x5'),_0x40a5('0x6'),'roundrobin')}};
\ No newline at end of file
index 1c139c5..6eb48bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5ed=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','get','UserProfileResource','destroy','then','error','name','send','index','map','MailQueue','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','length','MailQueueId','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','interface','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','team_has_mail_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x1559a3,_0x1e4f51){var _0x3a4b87=function(_0x5212d2){while(--_0x5212d2){_0x1559a3['push'](_0x1559a3['shift']());}};_0x3a4b87(++_0x1e4f51);}(_0xb5ed,0x1a4));var _0xdb5e=function(_0x20c804,_0x299f81){_0x20c804=_0x20c804-0x0;var _0x3d60c0=_0xb5ed[_0x20c804];return _0x3d60c0;};'use strict';var emlformat=require(_0xdb5e('0x0'));var rimraf=require(_0xdb5e('0x1'));var zipdir=require(_0xdb5e('0x2'));var jsonpatch=require(_0xdb5e('0x3'));var rp=require('request-promise');var moment=require(_0xdb5e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdb5e('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xdb5e('0x6'));var ejs=require(_0xdb5e('0x7'));var fs=require('fs');var fs_extra=require(_0xdb5e('0x8'));var _=require(_0xdb5e('0x9'));var squel=require(_0xdb5e('0xa'));var crypto=require(_0xdb5e('0xb'));var jsforce=require(_0xdb5e('0xc'));var deskjs=require(_0xdb5e('0xd'));var toCsv=require(_0xdb5e('0x6'));var querystring=require(_0xdb5e('0xe'));var Papa=require(_0xdb5e('0xf'));var Redis=require(_0xdb5e('0x10'));var authService=require(_0xdb5e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdb5e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xdb5e('0x13'));var utils=require(_0xdb5e('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xdb5e('0x15')]=_[_0xdb5e('0x16')](config['redis'],{'host':_0xdb5e('0x17'),'port':0x18eb});var socket=require(_0xdb5e('0x18'))(new Redis(config[_0xdb5e('0x15')]));require(_0xdb5e('0x19'))['register'](socket);function respondWithStatusCode(_0x415387,_0x3a63db){_0x3a63db=_0x3a63db||0xcc;return function(_0x552d59){if(_0x552d59){return _0x415387[_0xdb5e('0x1a')](_0x3a63db);}return _0x415387['status'](_0x3a63db)[_0xdb5e('0x1b')]();};}function respondWithResult(_0x5d1588,_0x252bfa){_0x252bfa=_0x252bfa||0xc8;return function(_0x5caa2a){if(_0x5caa2a){return _0x5d1588[_0xdb5e('0x1c')](_0x252bfa)[_0xdb5e('0x1d')](_0x5caa2a);}};}function respondWithFilteredResult(_0x33c9bb,_0x4571f5){return function(_0x117dda){if(_0x117dda){var _0x65c30a=typeof _0x4571f5[_0xdb5e('0x1e')]===_0xdb5e('0x1f')&&typeof _0x4571f5['limit']===_0xdb5e('0x1f');var _0x3cf173=_0x117dda['count'];var _0x58d15a=_0x65c30a?0x0:_0x4571f5[_0xdb5e('0x1e')];var _0x570a39=_0x65c30a?_0x117dda['count']:_0x4571f5['offset']+_0x4571f5[_0xdb5e('0x20')];var _0x1fc4fb;if(_0x570a39>=_0x3cf173){_0x570a39=_0x3cf173;_0x1fc4fb=0xc8;}else{_0x1fc4fb=0xce;}_0x33c9bb[_0xdb5e('0x1c')](_0x1fc4fb);return _0x33c9bb[_0xdb5e('0x21')](_0xdb5e('0x22'),_0x58d15a+'-'+_0x570a39+'/'+_0x3cf173)[_0xdb5e('0x1d')](_0x117dda);}return null;};}function patchUpdates(_0x2f7a57){return function(_0x3af1b9){try{jsonpatch[_0xdb5e('0x23')](_0x3af1b9,_0x2f7a57,!![]);}catch(_0x478954){return BPromise[_0xdb5e('0x24')](_0x478954);}return _0x3af1b9[_0xdb5e('0x25')]();};}function saveUpdates(_0x56b123,_0x5bf591){return function(_0x41639c){if(_0x41639c){return _0x41639c[_0xdb5e('0x26')](_0x56b123)['then'](function(_0x58ce6c){return _0x58ce6c;});}return null;};}function removeEntity(_0x488819,_0x362ddd){return function(_0x47dda0){if(_0x47dda0){return _0x47dda0['destroy']()['then'](function(){var _0x4f9f03=_0x47dda0[_0xdb5e('0x27')]({'plain':!![]});var _0x1e79df='MailQueues';return db[_0xdb5e('0x28')][_0xdb5e('0x29')]({'where':{'type':_0x1e79df,'resourceId':_0x4f9f03['id']}})[_0xdb5e('0x2a')](function(){return _0x47dda0;});})[_0xdb5e('0x2a')](function(){_0x488819[_0xdb5e('0x1c')](0xcc)[_0xdb5e('0x1b')]();});}};}function handleEntityNotFound(_0x465b76,_0x145076){return function(_0xf7695c){if(!_0xf7695c){_0x465b76[_0xdb5e('0x1a')](0x194);}return _0xf7695c;};}function handleError(_0x6b4001,_0x48e0b3){_0x48e0b3=_0x48e0b3||0x1f4;return function(_0x265f4c){logger[_0xdb5e('0x2b')](_0x265f4c['stack']);if(_0x265f4c['name']){delete _0x265f4c[_0xdb5e('0x2c')];}_0x6b4001[_0xdb5e('0x1c')](_0x48e0b3)[_0xdb5e('0x2d')](_0x265f4c);};}exports[_0xdb5e('0x2e')]=function(_0xe5d7bb,_0x43e712){var _0x3ec438={},_0x1f36ca={},_0x5e5728={'count':0x0,'rows':[]};var _0x192184=_[_0xdb5e('0x2f')](db[_0xdb5e('0x30')][_0xdb5e('0x31')],function(_0x1887dc){return{'name':_0x1887dc['fieldName'],'type':_0x1887dc[_0xdb5e('0x32')]['key']};});_0x1f36ca[_0xdb5e('0x33')]=_[_0xdb5e('0x2f')](_0x192184,_0xdb5e('0x2c'));_0x1f36ca[_0xdb5e('0x34')]=_[_0xdb5e('0x35')](_0xe5d7bb[_0xdb5e('0x34')]);_0x1f36ca[_0xdb5e('0x36')]=_[_0xdb5e('0x37')](_0x1f36ca[_0xdb5e('0x33')],_0x1f36ca['query']);_0x3ec438['attributes']=_['intersection'](_0x1f36ca[_0xdb5e('0x33')],qs[_0xdb5e('0x38')](_0xe5d7bb[_0xdb5e('0x34')][_0xdb5e('0x38')]));_0x3ec438[_0xdb5e('0x39')]=_0x3ec438[_0xdb5e('0x39')]['length']?_0x3ec438['attributes']:_0x1f36ca['model'];if(!_0xe5d7bb[_0xdb5e('0x34')][_0xdb5e('0x3a')](_0xdb5e('0x3b'))){_0x3ec438[_0xdb5e('0x20')]=qs[_0xdb5e('0x20')](_0xe5d7bb[_0xdb5e('0x34')][_0xdb5e('0x20')]);_0x3ec438['offset']=qs['offset'](_0xe5d7bb[_0xdb5e('0x34')]['offset']);}_0x3ec438[_0xdb5e('0x3c')]=qs[_0xdb5e('0x3d')](_0xe5d7bb[_0xdb5e('0x34')]['sort']);_0x3ec438[_0xdb5e('0x3e')]=qs['filters'](_[_0xdb5e('0x3f')](_0xe5d7bb[_0xdb5e('0x34')],_0x1f36ca['filters']),_0x192184);if(_0xe5d7bb[_0xdb5e('0x34')]['filter']){_0x3ec438[_0xdb5e('0x3e')]=_[_0xdb5e('0x40')](_0x3ec438['where'],{'$or':_['map'](_0x192184,function(_0x47c223){if(_0x47c223[_0xdb5e('0x32')]!==_0xdb5e('0x41')){var _0x76db4d={};_0x76db4d[_0x47c223[_0xdb5e('0x2c')]]={'$like':'%'+_0xe5d7bb['query'][_0xdb5e('0x42')]+'%'};return _0x76db4d;}})});}_0x3ec438=_[_0xdb5e('0x40')]({},_0x3ec438,_0xe5d7bb[_0xdb5e('0x43')]);var _0x5b56a3={'where':_0x3ec438[_0xdb5e('0x3e')]};return db['MailQueue']['count'](_0x5b56a3)[_0xdb5e('0x2a')](function(_0x1176c5){_0x5e5728[_0xdb5e('0x44')]=_0x1176c5;if(_0xe5d7bb[_0xdb5e('0x34')][_0xdb5e('0x45')]){_0x3ec438[_0xdb5e('0x46')]=[{'all':!![]}];}return db[_0xdb5e('0x30')][_0xdb5e('0x47')](_0x3ec438);})['then'](function(_0x2c85e1){_0x5e5728[_0xdb5e('0x48')]=_0x2c85e1;return _0x5e5728;})[_0xdb5e('0x2a')](respondWithFilteredResult(_0x43e712,_0x3ec438))[_0xdb5e('0x49')](handleError(_0x43e712,null));};exports[_0xdb5e('0x4a')]=function(_0x107ff7,_0x2120cd){var _0x356a4d={'raw':!![],'where':{'id':_0x107ff7[_0xdb5e('0x4b')]['id']}},_0x39ae82={};_0x39ae82['model']=_[_0xdb5e('0x35')](db[_0xdb5e('0x30')]['rawAttributes']);_0x39ae82['query']=_['keys'](_0x107ff7[_0xdb5e('0x34')]);_0x39ae82[_0xdb5e('0x36')]=_[_0xdb5e('0x37')](_0x39ae82[_0xdb5e('0x33')],_0x39ae82[_0xdb5e('0x34')]);_0x356a4d[_0xdb5e('0x39')]=_['intersection'](_0x39ae82[_0xdb5e('0x33')],qs[_0xdb5e('0x38')](_0x107ff7[_0xdb5e('0x34')][_0xdb5e('0x38')]));_0x356a4d[_0xdb5e('0x39')]=_0x356a4d[_0xdb5e('0x39')]['length']?_0x356a4d[_0xdb5e('0x39')]:_0x39ae82[_0xdb5e('0x33')];if(_0x107ff7[_0xdb5e('0x34')]['includeAll']){_0x356a4d['include']=[{'all':!![]}];}_0x356a4d=_[_0xdb5e('0x40')]({},_0x356a4d,_0x107ff7[_0xdb5e('0x43')]);return db[_0xdb5e('0x30')][_0xdb5e('0x4c')](_0x356a4d)[_0xdb5e('0x2a')](handleEntityNotFound(_0x2120cd,null))[_0xdb5e('0x2a')](respondWithResult(_0x2120cd,null))[_0xdb5e('0x49')](handleError(_0x2120cd,null));};exports[_0xdb5e('0x4d')]=function(_0x169246,_0x19e016){return db[_0xdb5e('0x30')]['create'](_0x169246['body'],{})[_0xdb5e('0x2a')](function(_0x17a33c){var _0x2fb35b=_0x169246[_0xdb5e('0x4e')][_0xdb5e('0x27')]({'plain':!![]});if(!_0x2fb35b)throw new Error(_0xdb5e('0x4f'));if(_0x2fb35b[_0xdb5e('0x50')]===_0xdb5e('0x4e')){var _0x308c04=_0x17a33c[_0xdb5e('0x27')]({'plain':!![]});var _0x5eeee2=_0xdb5e('0x51');return db[_0xdb5e('0x52')]['find']({'where':{'name':_0x5eeee2,'userProfileId':_0x2fb35b[_0xdb5e('0x53')]},'raw':!![]})[_0xdb5e('0x2a')](function(_0x3bac8e){if(_0x3bac8e&&_0x3bac8e[_0xdb5e('0x54')]===0x0){return db[_0xdb5e('0x28')][_0xdb5e('0x4d')]({'name':_0x308c04[_0xdb5e('0x2c')],'resourceId':_0x308c04['id'],'type':_0x3bac8e[_0xdb5e('0x2c')],'sectionId':_0x3bac8e['id']},{})[_0xdb5e('0x2a')](function(){return _0x17a33c;});}else{return _0x17a33c;}})[_0xdb5e('0x49')](function(_0x5c34b4){logger[_0xdb5e('0x2b')](_0xdb5e('0x55'),_0x5c34b4);throw _0x5c34b4;});}return _0x17a33c;})[_0xdb5e('0x2a')](respondWithResult(_0x19e016,0xc9))[_0xdb5e('0x49')](handleError(_0x19e016,null));};exports[_0xdb5e('0x26')]=function(_0x4f2581,_0x1409cf){if(_0x4f2581[_0xdb5e('0x56')]['id']){delete _0x4f2581[_0xdb5e('0x56')]['id'];}return db[_0xdb5e('0x30')][_0xdb5e('0x4c')]({'where':{'id':_0x4f2581[_0xdb5e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1409cf,null))['then'](saveUpdates(_0x4f2581['body'],null))[_0xdb5e('0x2a')](respondWithResult(_0x1409cf,null))[_0xdb5e('0x49')](handleError(_0x1409cf,null));};exports[_0xdb5e('0x29')]=function(_0x2cff0a,_0x15dfa4){return db[_0xdb5e('0x30')][_0xdb5e('0x4c')]({'where':{'id':_0x2cff0a['params']['id']}})['then'](handleEntityNotFound(_0x15dfa4,null))[_0xdb5e('0x2a')](removeEntity(_0x15dfa4,null))[_0xdb5e('0x49')](handleError(_0x15dfa4,null));};exports[_0xdb5e('0x57')]=function(_0x4ad721,_0x39727a){return db[_0xdb5e('0x30')][_0xdb5e('0x57')]()[_0xdb5e('0x2a')](respondWithResult(_0x39727a,null))[_0xdb5e('0x49')](handleError(_0x39727a,null));};exports[_0xdb5e('0x58')]=function(_0x492e14,_0x4a32c0,_0x84ec96){var _0x3b9476={'raw':!![],'where':{}},_0xc1288e={},_0x263be8;return db[_0xdb5e('0x30')]['findOne']({'where':{'id':_0x492e14[_0xdb5e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4a32c0,null))[_0xdb5e('0x2a')](function(_0x3fe724){if(_0x3fe724){_0x263be8=_0x3fe724[_0xdb5e('0x27')]({'plain':!![]});_0xc1288e[_0xdb5e('0x33')]=_['keys'](db['UserMailQueue']['rawAttributes']);_0xc1288e[_0xdb5e('0x34')]=_[_0xdb5e('0x35')](_0x492e14['query']);_0xc1288e[_0xdb5e('0x36')]=_[_0xdb5e('0x37')](_0xc1288e[_0xdb5e('0x33')],_0xc1288e[_0xdb5e('0x34')]);_0x3b9476[_0xdb5e('0x39')]=_[_0xdb5e('0x37')](_0xc1288e[_0xdb5e('0x33')],qs['fields'](_0x492e14[_0xdb5e('0x34')][_0xdb5e('0x38')]));_0x3b9476[_0xdb5e('0x39')]=_0x3b9476[_0xdb5e('0x39')][_0xdb5e('0x59')]?_0x3b9476[_0xdb5e('0x39')]:_0xc1288e[_0xdb5e('0x33')];if(!_0x492e14['query'][_0xdb5e('0x3a')]('nolimit')){_0x3b9476[_0xdb5e('0x20')]=qs[_0xdb5e('0x20')](_0x492e14[_0xdb5e('0x34')][_0xdb5e('0x20')]);_0x3b9476['offset']=qs['offset'](_0x492e14[_0xdb5e('0x34')]['offset']);}_0x3b9476['order']=qs[_0xdb5e('0x3d')](_0x492e14[_0xdb5e('0x34')]['sort']);_0x3b9476[_0xdb5e('0x3e')]=qs[_0xdb5e('0x36')](_[_0xdb5e('0x3f')](_0x492e14[_0xdb5e('0x34')],_0xc1288e['filters']));_0x3b9476['where'][_0xdb5e('0x5a')]=_0x3fe724['id'];if(_0x492e14[_0xdb5e('0x34')][_0xdb5e('0x42')]){_0x3b9476[_0xdb5e('0x3e')]=_[_0xdb5e('0x40')](_0x3b9476[_0xdb5e('0x3e')],{'$or':_[_0xdb5e('0x2f')](_0x3b9476[_0xdb5e('0x39')],function(_0x52f52b){var _0xed9e16={};_0xed9e16[_0x52f52b]={'$like':'%'+_0x492e14[_0xdb5e('0x34')][_0xdb5e('0x42')]+'%'};return _0xed9e16;})});}_0x3b9476=_[_0xdb5e('0x40')]({},_0x3b9476,_0x492e14[_0xdb5e('0x43')]);return db[_0xdb5e('0x5b')][_0xdb5e('0x47')](_0x3b9476);}})[_0xdb5e('0x2a')](function(_0x46f1f1){if(_0x46f1f1){return db[_0xdb5e('0x5c')][_0xdb5e('0x5d')]({'where':{'id':_['map'](_0x46f1f1,_0xdb5e('0x5e')),'role':_0xdb5e('0x5f')},'attributes':['id',_0xdb5e('0x2c'),_0xdb5e('0x60'),_0xdb5e('0x61'),_0xdb5e('0x62')]});}})[_0xdb5e('0x2a')](function(_0x3a65d9){if(_0x3a65d9){return{'count':_0x3a65d9[_0xdb5e('0x44')],'rows':_['map'](_0x3a65d9[_0xdb5e('0x48')],function(_0x38ee64){return{'membername':_0x38ee64[_0xdb5e('0x2c')],'UserId':_0x38ee64['id'],'queue_name':_0x263be8[_0xdb5e('0x2c')],'MailQueueId':_0x263be8['id'],'interface':util['format'](_0xdb5e('0x63'),_0xdb5e('0x64'),_0x38ee64[_0xdb5e('0x2c')]),'penalty':0x0,'paused':_0x38ee64['mailPause'],'createdAt':_0x38ee64[_0xdb5e('0x62')],'updatedAt':_0x38ee64[_0xdb5e('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4a32c0,_0x3b9476))[_0xdb5e('0x49')](handleError(_0x4a32c0,null));};exports[_0xdb5e('0x65')]=function(_0x1d6675,_0x40ec4d,_0x554134){var _0x13e49e={};var _0x3127ec={};var _0x55a133;var _0x1511c6;return db[_0xdb5e('0x30')][_0xdb5e('0x66')]({'where':{'id':_0x1d6675[_0xdb5e('0x4b')]['id']}})[_0xdb5e('0x2a')](handleEntityNotFound(_0x40ec4d,null))[_0xdb5e('0x2a')](function(_0x10d009){if(_0x10d009){_0x55a133=_0x10d009;_0x3127ec['model']=_[_0xdb5e('0x35')](db[_0xdb5e('0x67')][_0xdb5e('0x31')]);_0x3127ec[_0xdb5e('0x34')]=_[_0xdb5e('0x35')](_0x1d6675[_0xdb5e('0x34')]);_0x3127ec['filters']=_['intersection'](_0x3127ec[_0xdb5e('0x33')],_0x3127ec[_0xdb5e('0x34')]);_0x13e49e[_0xdb5e('0x39')]=_[_0xdb5e('0x37')](_0x3127ec[_0xdb5e('0x33')],qs[_0xdb5e('0x38')](_0x1d6675[_0xdb5e('0x34')][_0xdb5e('0x38')]));_0x13e49e[_0xdb5e('0x39')]=_0x13e49e['attributes'][_0xdb5e('0x59')]?_0x13e49e[_0xdb5e('0x39')]:_0x3127ec[_0xdb5e('0x33')];_0x13e49e[_0xdb5e('0x3c')]=qs[_0xdb5e('0x3d')](_0x1d6675[_0xdb5e('0x34')][_0xdb5e('0x3d')]);_0x13e49e[_0xdb5e('0x3e')]=qs['filters'](_[_0xdb5e('0x3f')](_0x1d6675[_0xdb5e('0x34')],_0x3127ec[_0xdb5e('0x36')]));if(_0x1d6675[_0xdb5e('0x34')][_0xdb5e('0x42')]){_0x13e49e['where']=_[_0xdb5e('0x40')](_0x13e49e['where'],{'$or':_[_0xdb5e('0x2f')](_0x13e49e[_0xdb5e('0x39')],function(_0x1dacf4){var _0x5c4fe4={};_0x5c4fe4[_0x1dacf4]={'$like':'%'+_0x1d6675['query'][_0xdb5e('0x42')]+'%'};return _0x5c4fe4;})});}_0x13e49e=_[_0xdb5e('0x40')]({},_0x13e49e,_0x1d6675[_0xdb5e('0x43')]);return _0x55a133[_0xdb5e('0x65')](_0x13e49e);}})[_0xdb5e('0x2a')](function(_0x2c1ae3){if(_0x2c1ae3){_0x1511c6=_0x2c1ae3[_0xdb5e('0x59')];if(!_0x1d6675[_0xdb5e('0x34')][_0xdb5e('0x3a')](_0xdb5e('0x3b'))){_0x13e49e[_0xdb5e('0x20')]=qs['limit'](_0x1d6675['query'][_0xdb5e('0x20')]);_0x13e49e[_0xdb5e('0x1e')]=qs['offset'](_0x1d6675[_0xdb5e('0x34')][_0xdb5e('0x1e')]);}return _0x55a133[_0xdb5e('0x65')](_0x13e49e);}})['then'](function(_0x22a84c){if(_0x22a84c){return _0x22a84c?{'count':_0x1511c6,'rows':_0x22a84c}:null;}})[_0xdb5e('0x2a')](respondWithResult(_0x40ec4d,null))[_0xdb5e('0x49')](handleError(_0x40ec4d,null));};exports[_0xdb5e('0x68')]=function(_0x5479a8,_0x5dabd5,_0x3785bf){var _0x214753=_0x5479a8[_0xdb5e('0x56')][_0xdb5e('0x69')];return db['Team'][_0xdb5e('0x47')]({'where':{'id':_0x214753},'attributes':['id'],'include':[{'model':db[_0xdb5e('0x5c')],'as':_0xdb5e('0x6a'),'attributes':['id',_0xdb5e('0x2c'),_0xdb5e('0x6b'),_0xdb5e('0x6c'),_0xdb5e('0x6d')],'raw':!![]}]})['then'](function(_0x376d82){if(_0x376d82){var _0x5a58a6=_['flatMap'](_0x376d82,function(_0x2ae39f){var _0x5d3ea4=_0x2ae39f[_0xdb5e('0x27')]({'plain':!![]});return _0x5d3ea4[_0xdb5e('0x6a')];});return db[_0xdb5e('0x30')][_0xdb5e('0x4c')]({'where':{'id':_0x5479a8[_0xdb5e('0x4b')]['id']}})['then'](function(_0x50d352){return db['sequelize'][_0xdb5e('0x6e')](function(_0x23ad60){return _0x50d352[_0xdb5e('0x68')](_0x214753,{'transaction':_0x23ad60})[_0xdb5e('0x2a')](function(){return BPromise[_0xdb5e('0x6f')](_0x5a58a6,function(_0x1f392e){return db['UserMailQueue'][_0xdb5e('0x70')]({'where':{'UserId':_0x1f392e['id'],'MailQueueId':_0x5479a8[_0xdb5e('0x4b')]['id']},'transaction':_0x23ad60});});})[_0xdb5e('0x2a')](function(){_0x5a58a6[_0xdb5e('0x71')](function(_0x2d47bc){socket[_0xdb5e('0x72')](_0xdb5e('0x73'),{'UserId':_0x2d47bc['id'],'MailQueueId':_0x50d352['id']});});});});});}})[_0xdb5e('0x2a')](respondWithStatusCode(_0x5dabd5,null))[_0xdb5e('0x49')](handleError(_0x5dabd5,null));};exports[_0xdb5e('0x74')]=function(_0x2db791,_0x4dffcf,_0x342097){return db[_0xdb5e('0x67')][_0xdb5e('0x47')]({'where':{'id':_0x2db791[_0xdb5e('0x34')][_0xdb5e('0x69')]},'attributes':['id'],'include':[{'model':db[_0xdb5e('0x5c')],'as':_0xdb5e('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xdb5e('0x2a')](handleEntityNotFound(_0x4dffcf,null))[_0xdb5e('0x2a')](function(_0x6b03c5){var _0xc6c730=_[_0xdb5e('0x2f')](_0x6b03c5,'id');var _0x582e0a=[];var _0x4a7700=[];var _0xaba9c=squel[_0xdb5e('0x75')]();_0xaba9c[_0xdb5e('0x76')](_0xdb5e('0x77'))['from'](_0xdb5e('0x78'),'tq')['join'](_0xdb5e('0x79'),'ut',_0xdb5e('0x7a'))['where'](_0xdb5e('0x7b'),_0x2db791[_0xdb5e('0x4b')]['id']);for(var _0x4e3d99=0x0;_0x4e3d99<_0x6b03c5[_0xdb5e('0x59')];_0x4e3d99+=0x1){let _0x19bd66=_0x6b03c5[_0x4e3d99];for(var _0x35dca4=0x0;_0x35dca4<_0x19bd66['Agents']['length'];_0x35dca4+=0x1){let _0x51c592=_0x19bd66[_0xdb5e('0x6a')][_0x35dca4];var _0x101129=_0xaba9c[_0xdb5e('0x7c')]();_0x101129[_0xdb5e('0x3e')](_0xdb5e('0x7d'),_0x51c592['id']);_0x4a7700[_0xdb5e('0x7e')](db['sequelize'][_0xdb5e('0x34')](_0x101129['toString'](),{'type':db[_0xdb5e('0x7f')][_0xdb5e('0x80')][_0xdb5e('0x81')]})[_0xdb5e('0x2a')](function(_0x5abd2f){if(_0x5abd2f[_0xdb5e('0x59')]===0x1){return _0x51c592['id'];}else{var _0x36016d=_[_0xdb5e('0x82')](_[_0xdb5e('0x2f')](_0x5abd2f,_0xdb5e('0x83')),function(_0x42507e){return _[_0xdb5e('0x84')](_0xc6c730,_0x42507e);});if(_0x36016d){return _0x51c592['id'];}}}));}}return BPromise[_0xdb5e('0x85')](_0x4a7700)[_0xdb5e('0x2a')](function(_0x115cf1){_0x582e0a=_(_0x582e0a)[_0xdb5e('0x86')](_0x115cf1)[_0xdb5e('0x87')]()[_0xdb5e('0x88')]();return db[_0xdb5e('0x30')]['find']({'where':{'id':_0x2db791[_0xdb5e('0x4b')]['id']}})[_0xdb5e('0x2a')](function(_0x576117){return db[_0xdb5e('0x7f')]['transaction'](function(_0x5d5e98){return _0x576117[_0xdb5e('0x74')](_0x2db791[_0xdb5e('0x34')][_0xdb5e('0x69')],{'transaction':_0x5d5e98})[_0xdb5e('0x2a')](function(){if(!_[_0xdb5e('0x89')](_0x582e0a)){return _0x576117[_0xdb5e('0x8a')](_0x582e0a,{'transaction':_0x5d5e98});}})[_0xdb5e('0x2a')](function(){_0x582e0a[_0xdb5e('0x71')](function(_0x53dcdf){socket['emit']('userMailQueue:remove',{'UserId':_0x53dcdf,'MailQueueId':_0x576117['id']});});});});});});})['then'](respondWithStatusCode(_0x4dffcf,null))['catch'](handleError(_0x4dffcf,null));};exports[_0xdb5e('0x8b')]=function(_0x31568e,_0x18f458,_0x4b2a60){return db[_0xdb5e('0x30')]['find']({'where':{'id':_0x31568e[_0xdb5e('0x4b')]['id']}})[_0xdb5e('0x2a')](handleEntityNotFound(_0x18f458,null))[_0xdb5e('0x2a')](function(_0x571f0b){if(_0x571f0b){return _0x571f0b[_0xdb5e('0x8b')](_0x31568e[_0xdb5e('0x56')][_0xdb5e('0x69')],_[_0xdb5e('0x8c')](_0x31568e[_0xdb5e('0x56')],[_0xdb5e('0x69'),'id'])||{})[_0xdb5e('0x8d')](function(_0x465d94){for(var _0x53248d=0x0;_0x53248d<_0x31568e[_0xdb5e('0x56')][_0xdb5e('0x69')][_0xdb5e('0x59')];_0x53248d+=0x1){socket['emit'](_0xdb5e('0x73'),{'UserId':Number(_0x31568e[_0xdb5e('0x56')][_0xdb5e('0x69')][_0x53248d]),'MailQueueId':Number(_0x31568e[_0xdb5e('0x4b')]['id'])});}return _0x465d94;});}})['then'](respondWithResult(_0x18f458,null))['catch'](handleError(_0x18f458,null));};exports[_0xdb5e('0x8a')]=function(_0x2af38d,_0x37a2da,_0x40a818){return db[_0xdb5e('0x30')][_0xdb5e('0x4c')]({'where':{'id':_0x2af38d[_0xdb5e('0x4b')]['id']}})[_0xdb5e('0x2a')](handleEntityNotFound(_0x37a2da,null))[_0xdb5e('0x2a')](function(_0x3a8e2b){if(_0x3a8e2b){return _0x3a8e2b[_0xdb5e('0x8a')](_0x2af38d[_0xdb5e('0x34')][_0xdb5e('0x69')])[_0xdb5e('0x2a')](function(){if(_['isArray'](_0x2af38d[_0xdb5e('0x34')][_0xdb5e('0x69')])){for(var _0x12da85=0x0;_0x12da85<_0x2af38d[_0xdb5e('0x34')]['ids']['length'];_0x12da85+=0x1){socket['emit'](_0xdb5e('0x8e'),{'UserId':Number(_0x2af38d['query'][_0xdb5e('0x69')][_0x12da85]),'MailQueueId':Number(_0x2af38d[_0xdb5e('0x4b')]['id'])});}}else{socket[_0xdb5e('0x72')](_0xdb5e('0x8e'),{'UserId':Number(_0x2af38d['query'][_0xdb5e('0x69')]),'MailQueueId':Number(_0x2af38d[_0xdb5e('0x4b')]['id'])});}});}})[_0xdb5e('0x2a')](respondWithStatusCode(_0x37a2da,null))[_0xdb5e('0x49')](handleError(_0x37a2da,null));};exports[_0xdb5e('0x8f')]=function(_0x372feb,_0x14b736,_0x488f79){var _0xaf0f78={};var _0x465c14={};var _0x4a5079;var _0x4d6e4a;return db[_0xdb5e('0x30')][_0xdb5e('0x66')]({'where':{'id':_0x372feb[_0xdb5e('0x4b')]['id']}})[_0xdb5e('0x2a')](handleEntityNotFound(_0x14b736,null))[_0xdb5e('0x2a')](function(_0x229af8){if(_0x229af8){_0x4a5079=_0x229af8;_0x465c14['model']=_[_0xdb5e('0x35')](db['User'][_0xdb5e('0x31')]);_0x465c14[_0xdb5e('0x34')]=_[_0xdb5e('0x35')](_0x372feb[_0xdb5e('0x34')]);_0x465c14[_0xdb5e('0x36')]=_[_0xdb5e('0x37')](_0x465c14['model'],_0x465c14[_0xdb5e('0x34')]);_0xaf0f78[_0xdb5e('0x39')]=_[_0xdb5e('0x37')](_0x465c14['model'],qs[_0xdb5e('0x38')](_0x372feb[_0xdb5e('0x34')][_0xdb5e('0x38')]));_0xaf0f78['attributes']=_0xaf0f78['attributes'][_0xdb5e('0x59')]?_0xaf0f78[_0xdb5e('0x39')]:_0x465c14[_0xdb5e('0x33')];_0xaf0f78[_0xdb5e('0x3c')]=qs['sort'](_0x372feb[_0xdb5e('0x34')][_0xdb5e('0x3d')]);_0xaf0f78[_0xdb5e('0x3e')]=qs['filters'](_[_0xdb5e('0x3f')](_0x372feb[_0xdb5e('0x34')],_0x465c14[_0xdb5e('0x36')]));if(_0x372feb[_0xdb5e('0x34')][_0xdb5e('0x42')]){_0xaf0f78['where']=_[_0xdb5e('0x40')](_0xaf0f78['where'],{'$or':_[_0xdb5e('0x2f')](_0xaf0f78[_0xdb5e('0x39')],function(_0x531fd6){var _0x2b8085={};_0x2b8085[_0x531fd6]={'$like':'%'+_0x372feb[_0xdb5e('0x34')][_0xdb5e('0x42')]+'%'};return _0x2b8085;})});}_0xaf0f78=_['merge']({},_0xaf0f78,_0x372feb['options']);return _0x4a5079['getAgents'](_0xaf0f78);}})['then'](function(_0x51d34b){if(_0x51d34b){_0x4d6e4a=_0x51d34b[_0xdb5e('0x59')];if(!_0x372feb[_0xdb5e('0x34')][_0xdb5e('0x3a')]('nolimit')){_0xaf0f78[_0xdb5e('0x20')]=qs[_0xdb5e('0x20')](_0x372feb[_0xdb5e('0x34')]['limit']);_0xaf0f78[_0xdb5e('0x1e')]=qs['offset'](_0x372feb[_0xdb5e('0x34')]['offset']);}return _0x4a5079['getAgents'](_0xaf0f78);}})[_0xdb5e('0x2a')](function(_0x133f39){if(_0x133f39){return _0x133f39?{'count':_0x4d6e4a,'rows':_0x133f39}:null;}})[_0xdb5e('0x2a')](respondWithResult(_0x14b736,null))[_0xdb5e('0x49')](handleError(_0x14b736,null));};
\ No newline at end of file
+var _0x8b4f=['rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','MailQueue','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','MailQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','UserMailQueue','nolimit','order','MailQueueId','User','findAndCountAll','UserId','mailPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','addTeams','ids','Agents','voicePause','flatMap','transaction','forEach','emit','userMailQueue:save','removeTeams','Team','select','field','from','team_has_mail_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','sequelize','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','spread','getAgents','findOne','eml-format'];(function(_0x150e81,_0x2db7ba){var _0xc15d76=function(_0x2d72c7){while(--_0x2d72c7){_0x150e81['push'](_0x150e81['shift']());}};_0xc15d76(++_0x2db7ba);}(_0x8b4f,0x19d));var _0xf8b4=function(_0x378720,_0xa711f1){_0x378720=_0x378720-0x0;var _0x47920a=_0x8b4f[_0x378720];return _0x47920a;};'use strict';var emlformat=require(_0xf8b4('0x0'));var rimraf=require(_0xf8b4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf8b4('0x2'));var rp=require(_0xf8b4('0x3'));var moment=require(_0xf8b4('0x4'));var BPromise=require(_0xf8b4('0x5'));var Mustache=require(_0xf8b4('0x6'));var util=require(_0xf8b4('0x7'));var path=require(_0xf8b4('0x8'));var sox=require(_0xf8b4('0x9'));var csv=require(_0xf8b4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf8b4('0xb'));var _=require(_0xf8b4('0xc'));var squel=require(_0xf8b4('0xd'));var crypto=require('crypto');var jsforce=require(_0xf8b4('0xe'));var deskjs=require(_0xf8b4('0xf'));var toCsv=require(_0xf8b4('0xa'));var querystring=require(_0xf8b4('0x10'));var Papa=require(_0xf8b4('0x11'));var Redis=require(_0xf8b4('0x12'));var authService=require(_0xf8b4('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf8b4('0x14'));var logger=require('../../config/logger')(_0xf8b4('0x15'));var utils=require(_0xf8b4('0x16'));var config=require(_0xf8b4('0x17'));var licenseUtil=require(_0xf8b4('0x18'));var db=require(_0xf8b4('0x19'))['db'];config['redis']=_['defaults'](config[_0xf8b4('0x1a')],{'host':_0xf8b4('0x1b'),'port':0x18eb});var socket=require(_0xf8b4('0x1c'))(new Redis(config[_0xf8b4('0x1a')]));require(_0xf8b4('0x1d'))[_0xf8b4('0x1e')](socket);function respondWithStatusCode(_0x66fdeb,_0x3ec7c0){_0x3ec7c0=_0x3ec7c0||0xcc;return function(_0x36b93d){if(_0x36b93d){return _0x66fdeb[_0xf8b4('0x1f')](_0x3ec7c0);}return _0x66fdeb[_0xf8b4('0x20')](_0x3ec7c0)[_0xf8b4('0x21')]();};}function respondWithResult(_0x38c6d7,_0x2bbf6c){_0x2bbf6c=_0x2bbf6c||0xc8;return function(_0x282571){if(_0x282571){return _0x38c6d7['status'](_0x2bbf6c)[_0xf8b4('0x22')](_0x282571);}};}function respondWithFilteredResult(_0x33da44,_0x524aa1){return function(_0x21df96){if(_0x21df96){var _0x3a4bcd=typeof _0x524aa1['offset']===_0xf8b4('0x23')&&typeof _0x524aa1[_0xf8b4('0x24')]===_0xf8b4('0x23');var _0x5b36f4=_0x21df96['count'];var _0x2cef35=_0x3a4bcd?0x0:_0x524aa1[_0xf8b4('0x25')];var _0x1b327a=_0x3a4bcd?_0x21df96[_0xf8b4('0x26')]:_0x524aa1[_0xf8b4('0x25')]+_0x524aa1[_0xf8b4('0x24')];var _0x56889b;if(_0x1b327a>=_0x5b36f4){_0x1b327a=_0x5b36f4;_0x56889b=0xc8;}else{_0x56889b=0xce;}_0x33da44['status'](_0x56889b);return _0x33da44[_0xf8b4('0x27')](_0xf8b4('0x28'),_0x2cef35+'-'+_0x1b327a+'/'+_0x5b36f4)[_0xf8b4('0x22')](_0x21df96);}return null;};}function patchUpdates(_0x4035cc){return function(_0x19a1e1){try{jsonpatch[_0xf8b4('0x29')](_0x19a1e1,_0x4035cc,!![]);}catch(_0x3b407f){return BPromise['reject'](_0x3b407f);}return _0x19a1e1[_0xf8b4('0x2a')]();};}function saveUpdates(_0x2a91cb,_0x288d6e){return function(_0x98dbe6){if(_0x98dbe6){return _0x98dbe6[_0xf8b4('0x2b')](_0x2a91cb)[_0xf8b4('0x2c')](function(_0x33a2fd){return _0x33a2fd;});}return null;};}function removeEntity(_0x266083,_0x4c0599){return function(_0x5727fc){if(_0x5727fc){return _0x5727fc[_0xf8b4('0x2d')]()[_0xf8b4('0x2c')](function(){var _0x1d2489=_0x5727fc[_0xf8b4('0x2e')]({'plain':!![]});var _0x45826a='MailQueues';return db[_0xf8b4('0x2f')][_0xf8b4('0x2d')]({'where':{'type':_0x45826a,'resourceId':_0x1d2489['id']}})[_0xf8b4('0x2c')](function(){return _0x5727fc;});})[_0xf8b4('0x2c')](function(){_0x266083['status'](0xcc)[_0xf8b4('0x21')]();});}};}function handleEntityNotFound(_0x35474c,_0x26a34b){return function(_0x5c36ed){if(!_0x5c36ed){_0x35474c[_0xf8b4('0x1f')](0x194);}return _0x5c36ed;};}function handleError(_0x3411de,_0x17cce4){_0x17cce4=_0x17cce4||0x1f4;return function(_0x52cff5){logger[_0xf8b4('0x30')](_0x52cff5[_0xf8b4('0x31')]);if(_0x52cff5['name']){delete _0x52cff5[_0xf8b4('0x32')];}_0x3411de['status'](_0x17cce4)[_0xf8b4('0x33')](_0x52cff5);};}exports['index']=function(_0x59634b,_0x4072ea){var _0x207109={},_0x282800={},_0x420622={'count':0x0,'rows':[]};var _0x1f789c=_['map'](db[_0xf8b4('0x34')][_0xf8b4('0x35')],function(_0x3002cc){return{'name':_0x3002cc[_0xf8b4('0x36')],'type':_0x3002cc[_0xf8b4('0x37')][_0xf8b4('0x38')]};});_0x282800[_0xf8b4('0x39')]=_['map'](_0x1f789c,_0xf8b4('0x32'));_0x282800['query']=_[_0xf8b4('0x3a')](_0x59634b[_0xf8b4('0x3b')]);_0x282800['filters']=_[_0xf8b4('0x3c')](_0x282800[_0xf8b4('0x39')],_0x282800['query']);_0x207109[_0xf8b4('0x3d')]=_[_0xf8b4('0x3c')](_0x282800[_0xf8b4('0x39')],qs[_0xf8b4('0x3e')](_0x59634b['query'][_0xf8b4('0x3e')]));_0x207109['attributes']=_0x207109[_0xf8b4('0x3d')][_0xf8b4('0x3f')]?_0x207109['attributes']:_0x282800['model'];if(!_0x59634b[_0xf8b4('0x3b')][_0xf8b4('0x40')]('nolimit')){_0x207109[_0xf8b4('0x24')]=qs[_0xf8b4('0x24')](_0x59634b[_0xf8b4('0x3b')][_0xf8b4('0x24')]);_0x207109['offset']=qs[_0xf8b4('0x25')](_0x59634b['query']['offset']);}_0x207109['order']=qs[_0xf8b4('0x41')](_0x59634b[_0xf8b4('0x3b')][_0xf8b4('0x41')]);_0x207109['where']=qs[_0xf8b4('0x42')](_[_0xf8b4('0x43')](_0x59634b['query'],_0x282800[_0xf8b4('0x42')]),_0x1f789c);if(_0x59634b[_0xf8b4('0x3b')]['filter']){_0x207109[_0xf8b4('0x44')]=_[_0xf8b4('0x45')](_0x207109[_0xf8b4('0x44')],{'$or':_[_0xf8b4('0x46')](_0x1f789c,function(_0x6576e6){if(_0x6576e6[_0xf8b4('0x37')]!==_0xf8b4('0x47')){var _0x14c886={};_0x14c886[_0x6576e6['name']]={'$like':'%'+_0x59634b[_0xf8b4('0x3b')][_0xf8b4('0x48')]+'%'};return _0x14c886;}})});}_0x207109=_[_0xf8b4('0x45')]({},_0x207109,_0x59634b[_0xf8b4('0x49')]);var _0xa08961={'where':_0x207109['where']};return db['MailQueue']['count'](_0xa08961)[_0xf8b4('0x2c')](function(_0x4df875){_0x420622[_0xf8b4('0x26')]=_0x4df875;if(_0x59634b[_0xf8b4('0x3b')][_0xf8b4('0x4a')]){_0x207109[_0xf8b4('0x4b')]=[{'all':!![]}];}return db['MailQueue'][_0xf8b4('0x4c')](_0x207109);})[_0xf8b4('0x2c')](function(_0x54309e){_0x420622['rows']=_0x54309e;return _0x420622;})['then'](respondWithFilteredResult(_0x4072ea,_0x207109))[_0xf8b4('0x4d')](handleError(_0x4072ea,null));};exports[_0xf8b4('0x4e')]=function(_0x135f37,_0x222f2c){var _0x1e343a={'raw':!![],'where':{'id':_0x135f37['params']['id']}},_0x132b2a={};_0x132b2a[_0xf8b4('0x39')]=_['keys'](db[_0xf8b4('0x34')][_0xf8b4('0x35')]);_0x132b2a[_0xf8b4('0x3b')]=_['keys'](_0x135f37['query']);_0x132b2a['filters']=_['intersection'](_0x132b2a[_0xf8b4('0x39')],_0x132b2a[_0xf8b4('0x3b')]);_0x1e343a['attributes']=_[_0xf8b4('0x3c')](_0x132b2a[_0xf8b4('0x39')],qs[_0xf8b4('0x3e')](_0x135f37[_0xf8b4('0x3b')]['fields']));_0x1e343a[_0xf8b4('0x3d')]=_0x1e343a[_0xf8b4('0x3d')][_0xf8b4('0x3f')]?_0x1e343a['attributes']:_0x132b2a['model'];if(_0x135f37[_0xf8b4('0x3b')]['includeAll']){_0x1e343a[_0xf8b4('0x4b')]=[{'all':!![]}];}_0x1e343a=_[_0xf8b4('0x45')]({},_0x1e343a,_0x135f37[_0xf8b4('0x49')]);return db['MailQueue'][_0xf8b4('0x4f')](_0x1e343a)['then'](handleEntityNotFound(_0x222f2c,null))['then'](respondWithResult(_0x222f2c,null))[_0xf8b4('0x4d')](handleError(_0x222f2c,null));};exports[_0xf8b4('0x50')]=function(_0x3bb8f1,_0x2f2795){return db[_0xf8b4('0x34')][_0xf8b4('0x50')](_0x3bb8f1['body'],{})[_0xf8b4('0x2c')](function(_0x2f64f2){var _0x3d0418=_0x3bb8f1['user'][_0xf8b4('0x2e')]({'plain':!![]});if(!_0x3d0418)throw new Error(_0xf8b4('0x51'));if(_0x3d0418[_0xf8b4('0x52')]===_0xf8b4('0x53')){var _0x4af658=_0x2f64f2[_0xf8b4('0x2e')]({'plain':!![]});var _0x3a7567=_0xf8b4('0x54');return db[_0xf8b4('0x55')][_0xf8b4('0x4f')]({'where':{'name':_0x3a7567,'userProfileId':_0x3d0418[_0xf8b4('0x56')]},'raw':!![]})[_0xf8b4('0x2c')](function(_0x3a41be){if(_0x3a41be&&_0x3a41be['autoAssociation']===0x0){return db[_0xf8b4('0x2f')][_0xf8b4('0x50')]({'name':_0x4af658[_0xf8b4('0x32')],'resourceId':_0x4af658['id'],'type':_0x3a41be[_0xf8b4('0x32')],'sectionId':_0x3a41be['id']},{})[_0xf8b4('0x2c')](function(){return _0x2f64f2;});}else{return _0x2f64f2;}})[_0xf8b4('0x4d')](function(_0x8bf39a){logger[_0xf8b4('0x30')](_0xf8b4('0x57'),_0x8bf39a);throw _0x8bf39a;});}return _0x2f64f2;})[_0xf8b4('0x2c')](respondWithResult(_0x2f2795,0xc9))[_0xf8b4('0x4d')](handleError(_0x2f2795,null));};exports[_0xf8b4('0x2b')]=function(_0x4e9836,_0x16a2fe){if(_0x4e9836[_0xf8b4('0x58')]['id']){delete _0x4e9836[_0xf8b4('0x58')]['id'];}return db[_0xf8b4('0x34')][_0xf8b4('0x4f')]({'where':{'id':_0x4e9836[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](handleEntityNotFound(_0x16a2fe,null))[_0xf8b4('0x2c')](saveUpdates(_0x4e9836[_0xf8b4('0x58')],null))[_0xf8b4('0x2c')](respondWithResult(_0x16a2fe,null))[_0xf8b4('0x4d')](handleError(_0x16a2fe,null));};exports[_0xf8b4('0x2d')]=function(_0x1addde,_0x2ae1c4){return db['MailQueue'][_0xf8b4('0x4f')]({'where':{'id':_0x1addde[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](handleEntityNotFound(_0x2ae1c4,null))[_0xf8b4('0x2c')](removeEntity(_0x2ae1c4,null))[_0xf8b4('0x4d')](handleError(_0x2ae1c4,null));};exports['describe']=function(_0x172619,_0x311d70){return db['MailQueue'][_0xf8b4('0x5a')]()[_0xf8b4('0x2c')](respondWithResult(_0x311d70,null))[_0xf8b4('0x4d')](handleError(_0x311d70,null));};exports[_0xf8b4('0x5b')]=function(_0x37bec7,_0x13266d,_0x46a787){var _0x392d4f={'raw':!![],'where':{}},_0x36f985={},_0x18f1d6;return db[_0xf8b4('0x34')]['findOne']({'where':{'id':_0x37bec7[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](handleEntityNotFound(_0x13266d,null))['then'](function(_0x4e74cc){if(_0x4e74cc){_0x18f1d6=_0x4e74cc[_0xf8b4('0x2e')]({'plain':!![]});_0x36f985[_0xf8b4('0x39')]=_[_0xf8b4('0x3a')](db[_0xf8b4('0x5c')]['rawAttributes']);_0x36f985[_0xf8b4('0x3b')]=_[_0xf8b4('0x3a')](_0x37bec7[_0xf8b4('0x3b')]);_0x36f985[_0xf8b4('0x42')]=_[_0xf8b4('0x3c')](_0x36f985[_0xf8b4('0x39')],_0x36f985[_0xf8b4('0x3b')]);_0x392d4f[_0xf8b4('0x3d')]=_['intersection'](_0x36f985[_0xf8b4('0x39')],qs['fields'](_0x37bec7[_0xf8b4('0x3b')][_0xf8b4('0x3e')]));_0x392d4f['attributes']=_0x392d4f[_0xf8b4('0x3d')]['length']?_0x392d4f[_0xf8b4('0x3d')]:_0x36f985['model'];if(!_0x37bec7[_0xf8b4('0x3b')][_0xf8b4('0x40')](_0xf8b4('0x5d'))){_0x392d4f[_0xf8b4('0x24')]=qs[_0xf8b4('0x24')](_0x37bec7['query'][_0xf8b4('0x24')]);_0x392d4f['offset']=qs['offset'](_0x37bec7[_0xf8b4('0x3b')]['offset']);}_0x392d4f[_0xf8b4('0x5e')]=qs[_0xf8b4('0x41')](_0x37bec7[_0xf8b4('0x3b')][_0xf8b4('0x41')]);_0x392d4f[_0xf8b4('0x44')]=qs['filters'](_['pick'](_0x37bec7['query'],_0x36f985[_0xf8b4('0x42')]));_0x392d4f[_0xf8b4('0x44')][_0xf8b4('0x5f')]=_0x4e74cc['id'];if(_0x37bec7[_0xf8b4('0x3b')]['filter']){_0x392d4f[_0xf8b4('0x44')]=_[_0xf8b4('0x45')](_0x392d4f[_0xf8b4('0x44')],{'$or':_[_0xf8b4('0x46')](_0x392d4f['attributes'],function(_0x409198){var _0x19daba={};_0x19daba[_0x409198]={'$like':'%'+_0x37bec7['query'][_0xf8b4('0x48')]+'%'};return _0x19daba;})});}_0x392d4f=_[_0xf8b4('0x45')]({},_0x392d4f,_0x37bec7['options']);return db['UserMailQueue']['findAll'](_0x392d4f);}})[_0xf8b4('0x2c')](function(_0x130ad2){if(_0x130ad2){return db[_0xf8b4('0x60')][_0xf8b4('0x61')]({'where':{'id':_[_0xf8b4('0x46')](_0x130ad2,_0xf8b4('0x62')),'role':'agent'},'attributes':['id',_0xf8b4('0x32'),_0xf8b4('0x63'),_0xf8b4('0x64'),_0xf8b4('0x65')]});}})[_0xf8b4('0x2c')](function(_0x52c8c3){if(_0x52c8c3){return{'count':_0x52c8c3[_0xf8b4('0x26')],'rows':_['map'](_0x52c8c3[_0xf8b4('0x66')],function(_0x367503){return{'membername':_0x367503[_0xf8b4('0x32')],'UserId':_0x367503['id'],'queue_name':_0x18f1d6[_0xf8b4('0x32')],'MailQueueId':_0x18f1d6['id'],'interface':util[_0xf8b4('0x67')](_0xf8b4('0x68'),_0xf8b4('0x69'),_0x367503[_0xf8b4('0x32')]),'penalty':0x0,'paused':_0x367503[_0xf8b4('0x63')],'createdAt':_0x367503[_0xf8b4('0x65')],'updatedAt':_0x367503[_0xf8b4('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf8b4('0x2c')](respondWithFilteredResult(_0x13266d,_0x392d4f))[_0xf8b4('0x4d')](handleError(_0x13266d,null));};exports[_0xf8b4('0x6a')]=function(_0xb1810a,_0x26b295,_0x5398b0){var _0x390c37={};var _0x96efbe={};var _0x175e9a;var _0x5b410f;return db[_0xf8b4('0x34')]['findOne']({'where':{'id':_0xb1810a[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](handleEntityNotFound(_0x26b295,null))['then'](function(_0x5e78b9){if(_0x5e78b9){_0x175e9a=_0x5e78b9;_0x96efbe[_0xf8b4('0x39')]=_[_0xf8b4('0x3a')](db['Team'][_0xf8b4('0x35')]);_0x96efbe[_0xf8b4('0x3b')]=_['keys'](_0xb1810a[_0xf8b4('0x3b')]);_0x96efbe[_0xf8b4('0x42')]=_['intersection'](_0x96efbe[_0xf8b4('0x39')],_0x96efbe[_0xf8b4('0x3b')]);_0x390c37[_0xf8b4('0x3d')]=_[_0xf8b4('0x3c')](_0x96efbe[_0xf8b4('0x39')],qs['fields'](_0xb1810a[_0xf8b4('0x3b')][_0xf8b4('0x3e')]));_0x390c37[_0xf8b4('0x3d')]=_0x390c37[_0xf8b4('0x3d')]['length']?_0x390c37[_0xf8b4('0x3d')]:_0x96efbe[_0xf8b4('0x39')];_0x390c37[_0xf8b4('0x5e')]=qs['sort'](_0xb1810a['query']['sort']);_0x390c37['where']=qs[_0xf8b4('0x42')](_[_0xf8b4('0x43')](_0xb1810a[_0xf8b4('0x3b')],_0x96efbe[_0xf8b4('0x42')]));if(_0xb1810a[_0xf8b4('0x3b')][_0xf8b4('0x48')]){_0x390c37[_0xf8b4('0x44')]=_[_0xf8b4('0x45')](_0x390c37[_0xf8b4('0x44')],{'$or':_[_0xf8b4('0x46')](_0x390c37[_0xf8b4('0x3d')],function(_0x27ca53){var _0x56bf83={};_0x56bf83[_0x27ca53]={'$like':'%'+_0xb1810a[_0xf8b4('0x3b')]['filter']+'%'};return _0x56bf83;})});}_0x390c37=_[_0xf8b4('0x45')]({},_0x390c37,_0xb1810a[_0xf8b4('0x49')]);return _0x175e9a['getTeams'](_0x390c37);}})[_0xf8b4('0x2c')](function(_0x1fca7c){if(_0x1fca7c){_0x5b410f=_0x1fca7c['length'];if(!_0xb1810a[_0xf8b4('0x3b')]['hasOwnProperty'](_0xf8b4('0x5d'))){_0x390c37['limit']=qs[_0xf8b4('0x24')](_0xb1810a[_0xf8b4('0x3b')][_0xf8b4('0x24')]);_0x390c37[_0xf8b4('0x25')]=qs['offset'](_0xb1810a[_0xf8b4('0x3b')][_0xf8b4('0x25')]);}return _0x175e9a[_0xf8b4('0x6a')](_0x390c37);}})[_0xf8b4('0x2c')](function(_0x2f2df8){if(_0x2f2df8){return _0x2f2df8?{'count':_0x5b410f,'rows':_0x2f2df8}:null;}})[_0xf8b4('0x2c')](respondWithResult(_0x26b295,null))[_0xf8b4('0x4d')](handleError(_0x26b295,null));};exports[_0xf8b4('0x6b')]=function(_0x471760,_0xd7aa47,_0x241ea0){var _0x4f0ada=_0x471760[_0xf8b4('0x58')][_0xf8b4('0x6c')];return db['Team'][_0xf8b4('0x4c')]({'where':{'id':_0x4f0ada},'attributes':['id'],'include':[{'model':db[_0xf8b4('0x60')],'as':_0xf8b4('0x6d'),'attributes':['id',_0xf8b4('0x32'),'online',_0xf8b4('0x6e'),'interface'],'raw':!![]}]})[_0xf8b4('0x2c')](function(_0x4ff2f6){if(_0x4ff2f6){var _0x2cbcfe=_[_0xf8b4('0x6f')](_0x4ff2f6,function(_0x5b820b){var _0x34e0e1=_0x5b820b[_0xf8b4('0x2e')]({'plain':!![]});return _0x34e0e1[_0xf8b4('0x6d')];});return db[_0xf8b4('0x34')]['find']({'where':{'id':_0x471760[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](function(_0x546658){return db['sequelize'][_0xf8b4('0x70')](function(_0x402a75){return _0x546658[_0xf8b4('0x6b')](_0x4f0ada,{'transaction':_0x402a75})['then'](function(){return BPromise['each'](_0x2cbcfe,function(_0x551d41){return db['UserMailQueue']['findOrCreate']({'where':{'UserId':_0x551d41['id'],'MailQueueId':_0x471760[_0xf8b4('0x59')]['id']},'transaction':_0x402a75});});})['then'](function(){_0x2cbcfe[_0xf8b4('0x71')](function(_0x135b1f){socket[_0xf8b4('0x72')](_0xf8b4('0x73'),{'UserId':_0x135b1f['id'],'MailQueueId':_0x546658['id']});});});});});}})['then'](respondWithStatusCode(_0xd7aa47,null))['catch'](handleError(_0xd7aa47,null));};exports[_0xf8b4('0x74')]=function(_0xb92dd8,_0x42f6dd,_0x46792c){return db[_0xf8b4('0x75')][_0xf8b4('0x4c')]({'where':{'id':_0xb92dd8['query'][_0xf8b4('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xf8b4('0x60')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xf8b4('0x2c')](handleEntityNotFound(_0x42f6dd,null))[_0xf8b4('0x2c')](function(_0x4ad20c){var _0x508c48=_[_0xf8b4('0x46')](_0x4ad20c,'id');var _0x195886=[];var _0x4df424=[];var _0x4bd93f=squel[_0xf8b4('0x76')]();_0x4bd93f[_0xf8b4('0x77')]('tq.TeamId')[_0xf8b4('0x78')](_0xf8b4('0x79'),'tq')['join'](_0xf8b4('0x7a'),'ut',_0xf8b4('0x7b'))['where'](_0xf8b4('0x7c'),_0xb92dd8[_0xf8b4('0x59')]['id']);for(var _0x1ba9cc=0x0;_0x1ba9cc<_0x4ad20c[_0xf8b4('0x3f')];_0x1ba9cc+=0x1){let _0x1f6ad6=_0x4ad20c[_0x1ba9cc];for(var _0x37c386=0x0;_0x37c386<_0x1f6ad6['Agents'][_0xf8b4('0x3f')];_0x37c386+=0x1){let _0x1aea96=_0x1f6ad6['Agents'][_0x37c386];var _0x1ad509=_0x4bd93f[_0xf8b4('0x7d')]();_0x1ad509[_0xf8b4('0x44')](_0xf8b4('0x7e'),_0x1aea96['id']);_0x4df424['push'](db['sequelize'][_0xf8b4('0x3b')](_0x1ad509[_0xf8b4('0x7f')](),{'type':db[_0xf8b4('0x80')]['QueryTypes']['SELECT']})[_0xf8b4('0x2c')](function(_0x4c2360){if(_0x4c2360['length']===0x1){return _0x1aea96['id'];}else{var _0x303ae1=_['every'](_[_0xf8b4('0x46')](_0x4c2360,'TeamId'),function(_0x562d81){return _['includes'](_0x508c48,_0x562d81);});if(_0x303ae1){return _0x1aea96['id'];}}}));}}return BPromise['all'](_0x4df424)['then'](function(_0x2f0dca){_0x195886=_(_0x195886)['union'](_0x2f0dca)[_0xf8b4('0x81')]()[_0xf8b4('0x82')]();return db[_0xf8b4('0x34')][_0xf8b4('0x4f')]({'where':{'id':_0xb92dd8[_0xf8b4('0x59')]['id']}})['then'](function(_0x466cea){return db[_0xf8b4('0x80')]['transaction'](function(_0x4cb926){return _0x466cea[_0xf8b4('0x74')](_0xb92dd8['query'][_0xf8b4('0x6c')],{'transaction':_0x4cb926})[_0xf8b4('0x2c')](function(){if(!_[_0xf8b4('0x83')](_0x195886)){return _0x466cea[_0xf8b4('0x84')](_0x195886,{'transaction':_0x4cb926});}})[_0xf8b4('0x2c')](function(){_0x195886[_0xf8b4('0x71')](function(_0x985b6f){socket[_0xf8b4('0x72')](_0xf8b4('0x85'),{'UserId':_0x985b6f,'MailQueueId':_0x466cea['id']});});});});});});})[_0xf8b4('0x2c')](respondWithStatusCode(_0x42f6dd,null))[_0xf8b4('0x4d')](handleError(_0x42f6dd,null));};exports[_0xf8b4('0x86')]=function(_0x86eea4,_0x1b8606,_0x2a2c9e){return db[_0xf8b4('0x34')][_0xf8b4('0x4f')]({'where':{'id':_0x86eea4[_0xf8b4('0x59')]['id']}})['then'](handleEntityNotFound(_0x1b8606,null))[_0xf8b4('0x2c')](function(_0x4c2bed){if(_0x4c2bed){return _0x4c2bed[_0xf8b4('0x86')](_0x86eea4[_0xf8b4('0x58')][_0xf8b4('0x6c')],_['omit'](_0x86eea4[_0xf8b4('0x58')],['ids','id'])||{})[_0xf8b4('0x87')](function(_0x281734){for(var _0x4ba939=0x0;_0x4ba939<_0x86eea4[_0xf8b4('0x58')][_0xf8b4('0x6c')]['length'];_0x4ba939+=0x1){socket['emit'](_0xf8b4('0x73'),{'UserId':Number(_0x86eea4['body'][_0xf8b4('0x6c')][_0x4ba939]),'MailQueueId':Number(_0x86eea4[_0xf8b4('0x59')]['id'])});}return _0x281734;});}})[_0xf8b4('0x2c')](respondWithResult(_0x1b8606,null))[_0xf8b4('0x4d')](handleError(_0x1b8606,null));};exports['removeAgents']=function(_0xd9a6dc,_0x44f3e6,_0x17f01a){return db[_0xf8b4('0x34')][_0xf8b4('0x4f')]({'where':{'id':_0xd9a6dc[_0xf8b4('0x59')]['id']}})[_0xf8b4('0x2c')](handleEntityNotFound(_0x44f3e6,null))[_0xf8b4('0x2c')](function(_0x1940d2){if(_0x1940d2){return _0x1940d2['removeAgents'](_0xd9a6dc['query']['ids'])[_0xf8b4('0x2c')](function(){if(_['isArray'](_0xd9a6dc[_0xf8b4('0x3b')][_0xf8b4('0x6c')])){for(var _0x143695=0x0;_0x143695<_0xd9a6dc[_0xf8b4('0x3b')][_0xf8b4('0x6c')][_0xf8b4('0x3f')];_0x143695+=0x1){socket['emit'](_0xf8b4('0x85'),{'UserId':Number(_0xd9a6dc['query'][_0xf8b4('0x6c')][_0x143695]),'MailQueueId':Number(_0xd9a6dc[_0xf8b4('0x59')]['id'])});}}else{socket['emit'](_0xf8b4('0x85'),{'UserId':Number(_0xd9a6dc[_0xf8b4('0x3b')]['ids']),'MailQueueId':Number(_0xd9a6dc[_0xf8b4('0x59')]['id'])});}});}})[_0xf8b4('0x2c')](respondWithStatusCode(_0x44f3e6,null))['catch'](handleError(_0x44f3e6,null));};exports[_0xf8b4('0x88')]=function(_0x8fb812,_0x22729d,_0x4882fa){var _0x1fef64={};var _0x31705c={};var _0x1f8dd6;var _0x4418fc;return db[_0xf8b4('0x34')][_0xf8b4('0x89')]({'where':{'id':_0x8fb812[_0xf8b4('0x59')]['id']}})['then'](handleEntityNotFound(_0x22729d,null))[_0xf8b4('0x2c')](function(_0x42c938){if(_0x42c938){_0x1f8dd6=_0x42c938;_0x31705c['model']=_['keys'](db[_0xf8b4('0x60')][_0xf8b4('0x35')]);_0x31705c[_0xf8b4('0x3b')]=_[_0xf8b4('0x3a')](_0x8fb812[_0xf8b4('0x3b')]);_0x31705c['filters']=_[_0xf8b4('0x3c')](_0x31705c[_0xf8b4('0x39')],_0x31705c['query']);_0x1fef64[_0xf8b4('0x3d')]=_['intersection'](_0x31705c[_0xf8b4('0x39')],qs[_0xf8b4('0x3e')](_0x8fb812[_0xf8b4('0x3b')]['fields']));_0x1fef64[_0xf8b4('0x3d')]=_0x1fef64['attributes'][_0xf8b4('0x3f')]?_0x1fef64[_0xf8b4('0x3d')]:_0x31705c['model'];_0x1fef64[_0xf8b4('0x5e')]=qs[_0xf8b4('0x41')](_0x8fb812[_0xf8b4('0x3b')][_0xf8b4('0x41')]);_0x1fef64[_0xf8b4('0x44')]=qs['filters'](_[_0xf8b4('0x43')](_0x8fb812[_0xf8b4('0x3b')],_0x31705c[_0xf8b4('0x42')]));if(_0x8fb812[_0xf8b4('0x3b')]['filter']){_0x1fef64[_0xf8b4('0x44')]=_['merge'](_0x1fef64[_0xf8b4('0x44')],{'$or':_[_0xf8b4('0x46')](_0x1fef64[_0xf8b4('0x3d')],function(_0xcc0b91){var _0x2f47cf={};_0x2f47cf[_0xcc0b91]={'$like':'%'+_0x8fb812[_0xf8b4('0x3b')][_0xf8b4('0x48')]+'%'};return _0x2f47cf;})});}_0x1fef64=_[_0xf8b4('0x45')]({},_0x1fef64,_0x8fb812[_0xf8b4('0x49')]);return _0x1f8dd6[_0xf8b4('0x88')](_0x1fef64);}})['then'](function(_0x4ea17b){if(_0x4ea17b){_0x4418fc=_0x4ea17b['length'];if(!_0x8fb812['query'][_0xf8b4('0x40')]('nolimit')){_0x1fef64[_0xf8b4('0x24')]=qs[_0xf8b4('0x24')](_0x8fb812[_0xf8b4('0x3b')][_0xf8b4('0x24')]);_0x1fef64[_0xf8b4('0x25')]=qs[_0xf8b4('0x25')](_0x8fb812['query'][_0xf8b4('0x25')]);}return _0x1f8dd6[_0xf8b4('0x88')](_0x1fef64);}})['then'](function(_0x486298){if(_0x486298){return _0x486298?{'count':_0x4418fc,'rows':_0x486298}:null;}})[_0xf8b4('0x2c')](respondWithResult(_0x22729d,null))[_0xf8b4('0x4d')](handleError(_0x22729d,null));};
\ No newline at end of file
index 7b9f53f..b4e9368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe941=['../../mysqldb','MailQueue','setMaxListeners','save','remove','hasOwnProperty','hook','exports','events'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xe941,0x86));var _0x1e94=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xe941[_0x2b4411];return _0x8e41ef;};'use strict';var EventEmitter=require(_0x1e94('0x0'));var MailQueue=require(_0x1e94('0x1'))['db'][_0x1e94('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x1e94('0x3')](0x0);var events={'afterCreate':_0x1e94('0x4'),'afterUpdate':'update','afterDestroy':_0x1e94('0x5')};function emitEvent(_0x357054){return function(_0x90ab12,_0x3cf62b,_0xf7d2c8){MailQueueEvents['emit'](_0x357054+':'+_0x90ab12['id'],_0x90ab12);MailQueueEvents['emit'](_0x357054,_0x90ab12);_0xf7d2c8(null);};}for(var e in events){if(events[_0x1e94('0x6')](e)){var event=events[e];MailQueue[_0x1e94('0x7')](e,emitEvent(event));}}module[_0x1e94('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x78a7=['hook','events','../../mysqldb','MailQueue','setMaxListeners','update','remove','emit'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x78a7,0x1b9));var _0x778a=function(_0x431ac5,_0x5e319f){_0x431ac5=_0x431ac5-0x0;var _0x235779=_0x78a7[_0x431ac5];return _0x235779;};'use strict';var EventEmitter=require(_0x778a('0x0'));var MailQueue=require(_0x778a('0x1'))['db'][_0x778a('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x778a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x778a('0x4'),'afterDestroy':_0x778a('0x5')};function emitEvent(_0xc73063){return function(_0x1ac65b,_0x56b852,_0xef40c7){MailQueueEvents[_0x778a('0x6')](_0xc73063+':'+_0x1ac65b['id'],_0x1ac65b);MailQueueEvents[_0x778a('0x6')](_0xc73063,_0x1ac65b);_0xef40c7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x778a('0x7')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
index 2f493b0..2dedf16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd9=['../../config/logger','api','moment','request-promise','path','rimraf','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util'];(function(_0x326c54,_0x219c01){var _0x5516f5=function(_0x14e78){while(--_0x14e78){_0x326c54['push'](_0x326c54['shift']());}};_0x5516f5(++_0x219c01);}(_0xcbd9,0xe8));var _0x9cbd=function(_0x4b2dae,_0x4dcc89){_0x4b2dae=_0x4b2dae-0x0;var _0x51e716=_0xcbd9[_0x4b2dae];return _0x51e716;};'use strict';var _=require(_0x9cbd('0x0'));var util=require(_0x9cbd('0x1'));var logger=require(_0x9cbd('0x2'))(_0x9cbd('0x3'));var moment=require(_0x9cbd('0x4'));var BPromise=require('bluebird');var rp=require(_0x9cbd('0x5'));var fs=require('fs');var path=require(_0x9cbd('0x6'));var rimraf=require(_0x9cbd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9cbd('0x8'));module[_0x9cbd('0x9')]=function(_0x2f372f,_0x3f4c35){return _0x2f372f[_0x9cbd('0xa')](_0x9cbd('0xb'),attributes,{'tableName':_0x9cbd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ba1=['bluebird','request-promise','path','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','../../config/logger','api','moment'];(function(_0x202c49,_0xf1a206){var _0x1f5bd1=function(_0x1604a6){while(--_0x1604a6){_0x202c49['push'](_0x202c49['shift']());}};_0x1f5bd1(++_0xf1a206);}(_0x8ba1,0x8b));var _0x18ba=function(_0x3d3880,_0x43a920){_0x3d3880=_0x3d3880-0x0;var _0x496a2a=_0x8ba1[_0x3d3880];return _0x496a2a;};'use strict';var _=require(_0x18ba('0x0'));var util=require('util');var logger=require(_0x18ba('0x1'))(_0x18ba('0x2'));var moment=require(_0x18ba('0x3'));var BPromise=require(_0x18ba('0x4'));var rp=require(_0x18ba('0x5'));var fs=require('fs');var path=require(_0x18ba('0x6'));var rimraf=require('rimraf');var config=require(_0x18ba('0x7'));var attributes=require(_0x18ba('0x8'));module[_0x18ba('0x9')]=function(_0x4585c9,_0x3fa3c2){return _0x4585c9[_0x18ba('0xa')](_0x18ba('0xb'),attributes,{'tableName':_0x18ba('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98456ab..8612cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0306=['include','map','model','ShowMailQueue','find','raw','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetMailQueue','MailQueue','findAll','options','where','attributes','limit'];(function(_0x1b02bb,_0x3d9fde){var _0x131245=function(_0x2fd1d8){while(--_0x2fd1d8){_0x1b02bb['push'](_0x1b02bb['shift']());}};_0x131245(++_0x3d9fde);}(_0x0306,0x13e));var _0x6030=function(_0x2f1753,_0x58ca9b){_0x2f1753=_0x2f1753-0x0;var _0x4fb12d=_0x0306[_0x2f1753];return _0x4fb12d;};'use strict';var _=require(_0x6030('0x0'));var util=require(_0x6030('0x1'));var moment=require(_0x6030('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6030('0x3'))['db'];var utils=require(_0x6030('0x4'));var logger=require(_0x6030('0x5'))(_0x6030('0x6'));var config=require(_0x6030('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6030('0x8')][_0x6030('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x6030('0xa')],{'host':_0x6030('0xb'),'port':0x18eb});var socket=require(_0x6030('0xc'))(new Redis(config[_0x6030('0xa')]));require('./mailQueue.socket')[_0x6030('0xd')](socket);function respondWithRpcPromise(_0x2a3d0f,_0x9d902b,_0x57b38a){return new BPromise(function(_0x3a7e5b,_0x6cefe8){return client['request'](_0x2a3d0f,_0x57b38a)[_0x6030('0xe')](function(_0x504a34){logger['info'](_0x6030('0xf'),_0x9d902b,_0x6030('0x10'));logger[_0x6030('0x11')](_0x6030('0x12'),_0x9d902b,'request\x20sent',JSON[_0x6030('0x13')](_0x504a34));if(_0x504a34[_0x6030('0x14')]){if(_0x504a34[_0x6030('0x14')][_0x6030('0x15')]===0x1f4){logger['error'](_0x6030('0xf'),_0x9d902b,_0x504a34[_0x6030('0x14')][_0x6030('0x16')]);return _0x6cefe8(_0x504a34[_0x6030('0x14')][_0x6030('0x16')]);}logger[_0x6030('0x14')]('MailQueue,\x20%s,\x20%s',_0x9d902b,_0x504a34[_0x6030('0x14')][_0x6030('0x16')]);return _0x3a7e5b(_0x504a34['error']['message']);}else{logger[_0x6030('0x17')](_0x6030('0xf'),_0x9d902b,_0x6030('0x10'));_0x3a7e5b(_0x504a34[_0x6030('0x18')][_0x6030('0x16')]);}})[_0x6030('0x19')](function(_0x160108){logger['error'](_0x6030('0xf'),_0x9d902b,_0x160108);_0x6cefe8(_0x160108);});});}exports[_0x6030('0x1a')]=function(_0x1fc6ca){var _0x36725d=this;return new Promise(function(_0x7c1f1c,_0x170e90){return db[_0x6030('0x1b')][_0x6030('0x1c')]({'raw':_0x1fc6ca['options']?_0x1fc6ca[_0x6030('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1fc6ca[_0x6030('0x1d')]?_0x1fc6ca[_0x6030('0x1d')][_0x6030('0x1e')]||null:null,'attributes':_0x1fc6ca[_0x6030('0x1d')]?_0x1fc6ca['options'][_0x6030('0x1f')]||null:null,'limit':_0x1fc6ca[_0x6030('0x1d')]?_0x1fc6ca[_0x6030('0x1d')][_0x6030('0x20')]||null:null,'include':_0x1fc6ca[_0x6030('0x1d')]?_0x1fc6ca[_0x6030('0x1d')][_0x6030('0x21')]?_[_0x6030('0x22')](_0x1fc6ca[_0x6030('0x1d')]['include'],function(_0x143d52){return{'model':db[_0x143d52[_0x6030('0x23')]],'as':_0x143d52['as'],'attributes':_0x143d52[_0x6030('0x1f')],'include':_0x143d52[_0x6030('0x21')]?_[_0x6030('0x22')](_0x143d52[_0x6030('0x21')],function(_0x3e8684){return{'model':db[_0x3e8684[_0x6030('0x23')]],'as':_0x3e8684['as'],'attributes':_0x3e8684['attributes'],'include':_0x3e8684[_0x6030('0x21')]?_[_0x6030('0x22')](_0x3e8684['include'],function(_0x18aa63){return{'model':db[_0x18aa63[_0x6030('0x23')]],'as':_0x18aa63['as'],'attributes':_0x18aa63[_0x6030('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6030('0xe')](function(_0x398441){logger[_0x6030('0x17')](_0x6030('0x1a'),_0x1fc6ca);logger[_0x6030('0x11')](_0x6030('0x1a'),_0x1fc6ca,JSON[_0x6030('0x13')](_0x398441));_0x7c1f1c(_0x398441);})['catch'](function(_0x5d8565){logger[_0x6030('0x14')](_0x6030('0x1a'),_0x5d8565[_0x6030('0x16')],_0x1fc6ca);_0x170e90(_0x36725d['error'](0x1f4,_0x5d8565['message']));});});};exports[_0x6030('0x24')]=function(_0x41811d){var _0x5ef5c8=this;return new Promise(function(_0x48dab1,_0x28aa03){return db[_0x6030('0x1b')][_0x6030('0x25')]({'raw':_0x41811d[_0x6030('0x1d')]?_0x41811d[_0x6030('0x1d')][_0x6030('0x26')]===undefined?!![]:![]:!![],'where':_0x41811d['options']?_0x41811d[_0x6030('0x1d')]['where']||null:null,'attributes':_0x41811d[_0x6030('0x1d')]?_0x41811d[_0x6030('0x1d')][_0x6030('0x1f')]||null:null,'include':_0x41811d[_0x6030('0x1d')]?_0x41811d[_0x6030('0x1d')]['include']?_[_0x6030('0x22')](_0x41811d[_0x6030('0x1d')][_0x6030('0x21')],function(_0x37f566){return{'model':db[_0x37f566[_0x6030('0x23')]],'as':_0x37f566['as'],'attributes':_0x37f566[_0x6030('0x1f')],'include':_0x37f566['include']?_[_0x6030('0x22')](_0x37f566[_0x6030('0x21')],function(_0x4977e6){return{'model':db[_0x4977e6[_0x6030('0x23')]],'as':_0x4977e6['as'],'attributes':_0x4977e6[_0x6030('0x1f')],'include':_0x4977e6[_0x6030('0x21')]?_[_0x6030('0x22')](_0x4977e6[_0x6030('0x21')],function(_0x29fa48){return{'model':db[_0x29fa48[_0x6030('0x23')]],'as':_0x29fa48['as'],'attributes':_0x29fa48[_0x6030('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6030('0xe')](function(_0x332f9f){logger[_0x6030('0x17')]('ShowMailQueue',_0x41811d);logger[_0x6030('0x11')](_0x6030('0x24'),_0x41811d,JSON[_0x6030('0x13')](_0x332f9f));_0x48dab1(_0x332f9f);})['catch'](function(_0x27fe46){logger[_0x6030('0x14')](_0x6030('0x24'),_0x27fe46[_0x6030('0x16')],_0x41811d);_0x28aa03(_0x5ef5c8[_0x6030('0x14')](0x1f4,_0x27fe46[_0x6030('0x16')]));});});};
\ No newline at end of file
+var _0x0fec=['stringify','ShowMailQueue','debug','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','localhost','socket.io-emitter','redis','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','code','error','message','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','include','map','model'];(function(_0x45c9de,_0x470da9){var _0x22442e=function(_0x235239){while(--_0x235239){_0x45c9de['push'](_0x45c9de['shift']());}};_0x22442e(++_0x470da9);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x5b8bca,_0x130113){_0x5b8bca=_0x5b8bca-0x0;var _0x3ef0d4=_0x0fec[_0x5b8bca];return _0x3ef0d4;};'use strict';var _=require(_0xc0fe('0x0'));var util=require(_0xc0fe('0x1'));var moment=require(_0xc0fe('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc0fe('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc0fe('0x4'));var logger=require(_0xc0fe('0x5'))('rpc');var config=require(_0xc0fe('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc0fe('0x7')][_0xc0fe('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc0fe('0x9'),'port':0x18eb});var socket=require(_0xc0fe('0xa'))(new Redis(config[_0xc0fe('0xb')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x545ee7,_0x19d5dd,_0x579d5d){return new BPromise(function(_0x3844d8,_0x5228f4){return client[_0xc0fe('0xc')](_0x545ee7,_0x579d5d)[_0xc0fe('0xd')](function(_0x27d433){logger[_0xc0fe('0xe')](_0xc0fe('0xf'),_0x19d5dd,_0xc0fe('0x10'));logger['debug'](_0xc0fe('0x11'),_0x19d5dd,_0xc0fe('0x10'),JSON['stringify'](_0x27d433));if(_0x27d433['error']){if(_0x27d433['error'][_0xc0fe('0x12')]===0x1f4){logger[_0xc0fe('0x13')](_0xc0fe('0xf'),_0x19d5dd,_0x27d433['error'][_0xc0fe('0x14')]);return _0x5228f4(_0x27d433[_0xc0fe('0x13')]['message']);}logger['error'](_0xc0fe('0xf'),_0x19d5dd,_0x27d433[_0xc0fe('0x13')][_0xc0fe('0x14')]);return _0x3844d8(_0x27d433[_0xc0fe('0x13')][_0xc0fe('0x14')]);}else{logger[_0xc0fe('0xe')](_0xc0fe('0xf'),_0x19d5dd,_0xc0fe('0x10'));_0x3844d8(_0x27d433['result'][_0xc0fe('0x14')]);}})[_0xc0fe('0x15')](function(_0x18f483){logger[_0xc0fe('0x13')](_0xc0fe('0xf'),_0x19d5dd,_0x18f483);_0x5228f4(_0x18f483);});});}exports[_0xc0fe('0x16')]=function(_0x2ae2a9){var _0x402127=this;return new Promise(function(_0x557688,_0x3cdd16){return db[_0xc0fe('0x17')][_0xc0fe('0x18')]({'raw':_0x2ae2a9[_0xc0fe('0x19')]?_0x2ae2a9[_0xc0fe('0x19')][_0xc0fe('0x1a')]===undefined?!![]:![]:!![],'where':_0x2ae2a9[_0xc0fe('0x19')]?_0x2ae2a9[_0xc0fe('0x19')][_0xc0fe('0x1b')]||null:null,'attributes':_0x2ae2a9['options']?_0x2ae2a9['options'][_0xc0fe('0x1c')]||null:null,'limit':_0x2ae2a9[_0xc0fe('0x19')]?_0x2ae2a9[_0xc0fe('0x19')]['limit']||null:null,'include':_0x2ae2a9[_0xc0fe('0x19')]?_0x2ae2a9['options'][_0xc0fe('0x1d')]?_[_0xc0fe('0x1e')](_0x2ae2a9['options'][_0xc0fe('0x1d')],function(_0x4fb617){return{'model':db[_0x4fb617[_0xc0fe('0x1f')]],'as':_0x4fb617['as'],'attributes':_0x4fb617[_0xc0fe('0x1c')],'include':_0x4fb617[_0xc0fe('0x1d')]?_['map'](_0x4fb617[_0xc0fe('0x1d')],function(_0x5a6f96){return{'model':db[_0x5a6f96[_0xc0fe('0x1f')]],'as':_0x5a6f96['as'],'attributes':_0x5a6f96[_0xc0fe('0x1c')],'include':_0x5a6f96[_0xc0fe('0x1d')]?_[_0xc0fe('0x1e')](_0x5a6f96['include'],function(_0x2d17cd){return{'model':db[_0x2d17cd[_0xc0fe('0x1f')]],'as':_0x2d17cd['as'],'attributes':_0x2d17cd[_0xc0fe('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c23cd){logger['info'](_0xc0fe('0x16'),_0x2ae2a9);logger['debug'](_0xc0fe('0x16'),_0x2ae2a9,JSON[_0xc0fe('0x20')](_0x5c23cd));_0x557688(_0x5c23cd);})['catch'](function(_0x432a1d){logger['error'](_0xc0fe('0x16'),_0x432a1d[_0xc0fe('0x14')],_0x2ae2a9);_0x3cdd16(_0x402127['error'](0x1f4,_0x432a1d[_0xc0fe('0x14')]));});});};exports[_0xc0fe('0x21')]=function(_0x3cfe59){var _0x320002=this;return new Promise(function(_0x7921a8,_0x13d43b){return db['MailQueue']['find']({'raw':_0x3cfe59[_0xc0fe('0x19')]?_0x3cfe59[_0xc0fe('0x19')][_0xc0fe('0x1a')]===undefined?!![]:![]:!![],'where':_0x3cfe59[_0xc0fe('0x19')]?_0x3cfe59[_0xc0fe('0x19')][_0xc0fe('0x1b')]||null:null,'attributes':_0x3cfe59['options']?_0x3cfe59['options'][_0xc0fe('0x1c')]||null:null,'include':_0x3cfe59[_0xc0fe('0x19')]?_0x3cfe59['options'][_0xc0fe('0x1d')]?_[_0xc0fe('0x1e')](_0x3cfe59['options'][_0xc0fe('0x1d')],function(_0x2d92d8){return{'model':db[_0x2d92d8[_0xc0fe('0x1f')]],'as':_0x2d92d8['as'],'attributes':_0x2d92d8[_0xc0fe('0x1c')],'include':_0x2d92d8[_0xc0fe('0x1d')]?_[_0xc0fe('0x1e')](_0x2d92d8[_0xc0fe('0x1d')],function(_0x26d7fd){return{'model':db[_0x26d7fd[_0xc0fe('0x1f')]],'as':_0x26d7fd['as'],'attributes':_0x26d7fd[_0xc0fe('0x1c')],'include':_0x26d7fd[_0xc0fe('0x1d')]?_[_0xc0fe('0x1e')](_0x26d7fd[_0xc0fe('0x1d')],function(_0x4f2c45){return{'model':db[_0x4f2c45[_0xc0fe('0x1f')]],'as':_0x4f2c45['as'],'attributes':_0x4f2c45[_0xc0fe('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xc0fe('0xd')](function(_0x503308){logger[_0xc0fe('0xe')](_0xc0fe('0x21'),_0x3cfe59);logger[_0xc0fe('0x22')](_0xc0fe('0x21'),_0x3cfe59,JSON[_0xc0fe('0x20')](_0x503308));_0x7921a8(_0x503308);})[_0xc0fe('0x15')](function(_0x10e8a7){logger[_0xc0fe('0x13')](_0xc0fe('0x21'),_0x10e8a7[_0xc0fe('0x14')],_0x3cfe59);_0x13d43b(_0x320002[_0xc0fe('0x13')](0x1f4,_0x10e8a7[_0xc0fe('0x14')]));});});};
\ No newline at end of file
index f15b863..7807d03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c8=['register','length','./mailQueue.events','save','remove','update','emit'];(function(_0x29bb9c,_0x206eb1){var _0x438c7a=function(_0x3f6726){while(--_0x3f6726){_0x29bb9c['push'](_0x29bb9c['shift']());}};_0x438c7a(++_0x206eb1);}(_0x56c8,0x12f));var _0x856c=function(_0x5ef59e,_0x196f94){_0x5ef59e=_0x5ef59e-0x0;var _0x572cda=_0x56c8[_0x5ef59e];return _0x572cda;};'use strict';var MailQueueEvents=require(_0x856c('0x0'));var events=[_0x856c('0x1'),_0x856c('0x2'),_0x856c('0x3')];function createListener(_0x51518f,_0x14fe45){return function(_0x30df82){_0x14fe45[_0x856c('0x4')](_0x51518f,_0x30df82);};}function removeListener(_0xd0f4b3,_0x2a1b07){return function(){MailQueueEvents['removeListener'](_0xd0f4b3,_0x2a1b07);};}exports[_0x856c('0x5')]=function(_0x1922f4){for(var _0x413964=0x0,_0x15a17c=events[_0x856c('0x6')];_0x413964<_0x15a17c;_0x413964++){var _0x456bdb=events[_0x413964];var _0x48d81b=createListener('mailQueue:'+_0x456bdb,_0x1922f4);MailQueueEvents['on'](_0x456bdb,_0x48d81b);}};
\ No newline at end of file
+var _0x0727=['register','mailQueue:','save','remove','update','removeListener'];(function(_0x269acd,_0x1999a6){var _0x509177=function(_0x51570d){while(--_0x51570d){_0x269acd['push'](_0x269acd['shift']());}};_0x509177(++_0x1999a6);}(_0x0727,0x110));var _0x7072=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0x0727[_0x3e32a8];return _0x2997b0;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x7072('0x0'),_0x7072('0x1'),_0x7072('0x2')];function createListener(_0x11e538,_0xf74879){return function(_0x419cc2){_0xf74879['emit'](_0x11e538,_0x419cc2);};}function removeListener(_0x4131a5,_0x137e31){return function(){MailQueueEvents[_0x7072('0x3')](_0x4131a5,_0x137e31);};}exports[_0x7072('0x4')]=function(_0xc02184){for(var _0x58f17a=0x0,_0x3c0754=events['length'];_0x58f17a<_0x3c0754;_0x58f17a++){var _0x40185a=events[_0x58f17a];var _0x4ab794=createListener(_0x7072('0x5')+_0x40185a,_0xc02184);MailQueueEvents['on'](_0x40185a,_0x4ab794);}};
\ No newline at end of file
index 841d4ac..d051b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb292=['/:id','show','post','put','update','delete','destroy','exports','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index'];(function(_0x36301e,_0x970c42){var _0x586b6c=function(_0x7818d5){while(--_0x7818d5){_0x36301e['push'](_0x36301e['shift']());}};_0x586b6c(++_0x970c42);}(_0xb292,0xe5));var _0x2b29=function(_0x400766,_0x368660){_0x400766=_0x400766-0x0;var _0x3ae58b=_0xb292[_0x400766];return _0x3ae58b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2b29('0x0'));var express=require('express');var router=express[_0x2b29('0x1')]();var fs_extra=require(_0x2b29('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2b29('0x3'));var config=require(_0x2b29('0x4'));var controller=require(_0x2b29('0x5'));router[_0x2b29('0x6')]('/',auth[_0x2b29('0x7')](),controller[_0x2b29('0x8')]);router[_0x2b29('0x6')]('/describe',auth[_0x2b29('0x7')](),controller['describe']);router[_0x2b29('0x6')](_0x2b29('0x9'),auth[_0x2b29('0x7')](),controller[_0x2b29('0xa')]);router[_0x2b29('0xb')]('/',auth[_0x2b29('0x7')](),controller['create']);router[_0x2b29('0xc')](_0x2b29('0x9'),auth[_0x2b29('0x7')](),controller[_0x2b29('0xd')]);router[_0x2b29('0xe')](_0x2b29('0x9'),auth[_0x2b29('0x7')](),controller[_0x2b29('0xf')]);module[_0x2b29('0x10')]=router;
\ No newline at end of file
+var _0x3d9f=['destroy','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','get','/describe','post','create','put','/:id','delete'];(function(_0x59f2c9,_0x11ac10){var _0x449d46=function(_0x7aedb){while(--_0x7aedb){_0x59f2c9['push'](_0x59f2c9['shift']());}};_0x449d46(++_0x11ac10);}(_0x3d9f,0x133));var _0xf3d9=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3d9f[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0xf3d9('0x0'));var util=require(_0xf3d9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3d9('0x2')]();var fs_extra=require(_0xf3d9('0x3'));var auth=require(_0xf3d9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf3d9('0x5'));var controller=require(_0xf3d9('0x6'));router['get']('/',auth[_0xf3d9('0x7')](),controller[_0xf3d9('0x8')]);router[_0xf3d9('0x9')](_0xf3d9('0xa'),auth[_0xf3d9('0x7')](),controller['describe']);router[_0xf3d9('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xf3d9('0xb')]('/',auth[_0xf3d9('0x7')](),controller[_0xf3d9('0xc')]);router[_0xf3d9('0xd')](_0xf3d9('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xf3d9('0xf')]('/:id',auth[_0xf3d9('0x7')](),controller[_0xf3d9('0x10')]);module['exports']=router;
\ No newline at end of file
index 6d1d4e5..4750e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7172=['exports','STRING','DATE'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x7172,0x1ef));var _0x2717=function(_0x4f3fb2,_0xbfa63d){_0x4f3fb2=_0x4f3fb2-0x0;var _0x2652d2=_0x7172[_0x4f3fb2];return _0x2652d2;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x2717('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2717('0x1')]},'joinAt':{'type':Sequelize[_0x2717('0x2')]},'leaveAt':{'type':Sequelize[_0x2717('0x2')]},'acceptAt':{'type':Sequelize[_0x2717('0x2')]},'exitAt':{'type':Sequelize[_0x2717('0x2')]},'reason':{'type':Sequelize[_0x2717('0x1')]}};
\ No newline at end of file
+var _0xb33c=['moment','sequelize','exports','STRING','DATE'];(function(_0x502844,_0x3a9b73){var _0x443889=function(_0x2ae980){while(--_0x2ae980){_0x502844['push'](_0x502844['shift']());}};_0x443889(++_0x3a9b73);}(_0xb33c,0x12c));var _0xcb33=function(_0x1dd627,_0x351f92){_0x1dd627=_0x1dd627-0x0;var _0x33a294=_0xb33c[_0x1dd627];return _0x33a294;};'use strict';var moment=require(_0xcb33('0x0'));var Sequelize=require(_0xcb33('0x1'));module[_0xcb33('0x2')]={'uniqueid':{'type':Sequelize[_0xcb33('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xcb33('0x3')]},'joinAt':{'type':Sequelize[_0xcb33('0x4')]},'leaveAt':{'type':Sequelize[_0xcb33('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xcb33('0x4')]},'reason':{'type':Sequelize[_0xcb33('0x3')]}};
\ No newline at end of file
index a2157cd..77169f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','describe','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','MailQueueReport','fieldName','type','key','model','query','keys'];(function(_0x14c00f,_0x11b192){var _0x19fbda=function(_0xf9caa4){while(--_0xf9caa4){_0x14c00f['push'](_0x14c00f['shift']());}};_0x19fbda(++_0x11b192);}(_0xadb5,0xad));var _0x5adb=function(_0x49d3ad,_0x1adf7f){_0x49d3ad=_0x49d3ad-0x0;var _0x28531f=_0xadb5[_0x49d3ad];return _0x28531f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['MailQueueReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['MailQueueReport'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['MailQueueReport'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};exports['describe']=function(_0x36b847,_0x3a5703){return db[_0x5adb('0x2a')][_0x5adb('0x49')]()['then'](respondWithResult(_0x3a5703,null))[_0x5adb('0x42')](handleError(_0x3a5703,null));};
\ No newline at end of file
+var _0x3a6d=['keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','pick','filter','where','type','options','includeAll','rows','catch','params','rawAttributes','merge','find','create','body','update','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','save','then','error','stack','name','send','index','map','MailQueueReport','fieldName','key','query'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3a6d,0x143));var _0xd3a6=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3a6d[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xd3a6('0x0'));var rimraf=require(_0xd3a6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd3a6('0x2'));var rp=require(_0xd3a6('0x3'));var moment=require(_0xd3a6('0x4'));var BPromise=require(_0xd3a6('0x5'));var Mustache=require(_0xd3a6('0x6'));var util=require('util');var path=require(_0xd3a6('0x7'));var sox=require(_0xd3a6('0x8'));var csv=require(_0xd3a6('0x9'));var ejs=require(_0xd3a6('0xa'));var fs=require('fs');var fs_extra=require(_0xd3a6('0xb'));var _=require(_0xd3a6('0xc'));var squel=require('squel');var crypto=require(_0xd3a6('0xd'));var jsforce=require(_0xd3a6('0xe'));var deskjs=require(_0xd3a6('0xf'));var toCsv=require(_0xd3a6('0x9'));var querystring=require(_0xd3a6('0x10'));var Papa=require(_0xd3a6('0x11'));var Redis=require(_0xd3a6('0x12'));var authService=require(_0xd3a6('0x13'));var qs=require(_0xd3a6('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd3a6('0x15'));var logger=require(_0xd3a6('0x16'))(_0xd3a6('0x17'));var utils=require(_0xd3a6('0x18'));var config=require(_0xd3a6('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b0467,_0x1c6ad7){_0x1c6ad7=_0x1c6ad7||0xcc;return function(_0x671004){if(_0x671004){return _0x4b0467[_0xd3a6('0x1a')](_0x1c6ad7);}return _0x4b0467[_0xd3a6('0x1b')](_0x1c6ad7)[_0xd3a6('0x1c')]();};}function respondWithResult(_0x2911a0,_0xa56452){_0xa56452=_0xa56452||0xc8;return function(_0x4e67fb){if(_0x4e67fb){return _0x2911a0[_0xd3a6('0x1b')](_0xa56452)[_0xd3a6('0x1d')](_0x4e67fb);}};}function respondWithFilteredResult(_0x171a8f,_0x500a37){return function(_0x3c2399){if(_0x3c2399){var _0x305b61=typeof _0x500a37[_0xd3a6('0x1e')]==='undefined'&&typeof _0x500a37[_0xd3a6('0x1f')]==='undefined';var _0x518b6d=_0x3c2399[_0xd3a6('0x20')];var _0x8d1286=_0x305b61?0x0:_0x500a37[_0xd3a6('0x1e')];var _0xbe58b4=_0x305b61?_0x3c2399[_0xd3a6('0x20')]:_0x500a37[_0xd3a6('0x1e')]+_0x500a37[_0xd3a6('0x1f')];var _0x4ec27c;if(_0xbe58b4>=_0x518b6d){_0xbe58b4=_0x518b6d;_0x4ec27c=0xc8;}else{_0x4ec27c=0xce;}_0x171a8f[_0xd3a6('0x1b')](_0x4ec27c);return _0x171a8f['set'](_0xd3a6('0x21'),_0x8d1286+'-'+_0xbe58b4+'/'+_0x518b6d)[_0xd3a6('0x1d')](_0x3c2399);}return null;};}function patchUpdates(_0x12f2c1){return function(_0x20a34e){try{jsonpatch[_0xd3a6('0x22')](_0x20a34e,_0x12f2c1,!![]);}catch(_0x6ecd88){return BPromise['reject'](_0x6ecd88);}return _0x20a34e[_0xd3a6('0x23')]();};}function saveUpdates(_0x422f5c,_0x57cf15){return function(_0x543a6a){if(_0x543a6a){return _0x543a6a['update'](_0x422f5c)['then'](function(_0x5c9075){return _0x5c9075;});}return null;};}function removeEntity(_0x98a12a,_0x400982){return function(_0x3d0b28){if(_0x3d0b28){return _0x3d0b28['destroy']()[_0xd3a6('0x24')](function(){_0x98a12a['status'](0xcc)[_0xd3a6('0x1c')]();});}};}function handleEntityNotFound(_0x16afc8,_0x429079){return function(_0x4f6130){if(!_0x4f6130){_0x16afc8[_0xd3a6('0x1a')](0x194);}return _0x4f6130;};}function handleError(_0x3bc8d1,_0x1b09ac){_0x1b09ac=_0x1b09ac||0x1f4;return function(_0x219e32){logger[_0xd3a6('0x25')](_0x219e32[_0xd3a6('0x26')]);if(_0x219e32['name']){delete _0x219e32[_0xd3a6('0x27')];}_0x3bc8d1[_0xd3a6('0x1b')](_0x1b09ac)[_0xd3a6('0x28')](_0x219e32);};}exports[_0xd3a6('0x29')]=function(_0x30abc2,_0x45c628){var _0x5c2186={},_0x535bd4={},_0x1f4859={'count':0x0,'rows':[]};var _0x210aa1=_[_0xd3a6('0x2a')](db[_0xd3a6('0x2b')]['rawAttributes'],function(_0x3de3bb){return{'name':_0x3de3bb[_0xd3a6('0x2c')],'type':_0x3de3bb['type'][_0xd3a6('0x2d')]};});_0x535bd4['model']=_[_0xd3a6('0x2a')](_0x210aa1,_0xd3a6('0x27'));_0x535bd4[_0xd3a6('0x2e')]=_[_0xd3a6('0x2f')](_0x30abc2[_0xd3a6('0x2e')]);_0x535bd4[_0xd3a6('0x30')]=_[_0xd3a6('0x31')](_0x535bd4['model'],_0x535bd4['query']);_0x5c2186[_0xd3a6('0x32')]=_[_0xd3a6('0x31')](_0x535bd4[_0xd3a6('0x33')],qs['fields'](_0x30abc2[_0xd3a6('0x2e')][_0xd3a6('0x34')]));_0x5c2186[_0xd3a6('0x32')]=_0x5c2186[_0xd3a6('0x32')][_0xd3a6('0x35')]?_0x5c2186[_0xd3a6('0x32')]:_0x535bd4[_0xd3a6('0x33')];if(!_0x30abc2[_0xd3a6('0x2e')]['hasOwnProperty'](_0xd3a6('0x36'))){_0x5c2186[_0xd3a6('0x1f')]=qs[_0xd3a6('0x1f')](_0x30abc2[_0xd3a6('0x2e')][_0xd3a6('0x1f')]);_0x5c2186[_0xd3a6('0x1e')]=qs['offset'](_0x30abc2[_0xd3a6('0x2e')]['offset']);}_0x5c2186[_0xd3a6('0x37')]=qs[_0xd3a6('0x38')](_0x30abc2[_0xd3a6('0x2e')][_0xd3a6('0x38')]);_0x5c2186['where']=qs['filters'](_[_0xd3a6('0x39')](_0x30abc2[_0xd3a6('0x2e')],_0x535bd4[_0xd3a6('0x30')]),_0x210aa1);if(_0x30abc2['query'][_0xd3a6('0x3a')]){_0x5c2186[_0xd3a6('0x3b')]=_['merge'](_0x5c2186[_0xd3a6('0x3b')],{'$or':_['map'](_0x210aa1,function(_0x1e695a){if(_0x1e695a[_0xd3a6('0x3c')]!=='VIRTUAL'){var _0x219ba5={};_0x219ba5[_0x1e695a['name']]={'$like':'%'+_0x30abc2[_0xd3a6('0x2e')][_0xd3a6('0x3a')]+'%'};return _0x219ba5;}})});}_0x5c2186=_['merge']({},_0x5c2186,_0x30abc2[_0xd3a6('0x3d')]);var _0xfcef03={'where':_0x5c2186[_0xd3a6('0x3b')]};return db[_0xd3a6('0x2b')]['count'](_0xfcef03)[_0xd3a6('0x24')](function(_0x324dbd){_0x1f4859[_0xd3a6('0x20')]=_0x324dbd;if(_0x30abc2[_0xd3a6('0x2e')][_0xd3a6('0x3e')]){_0x5c2186['include']=[{'all':!![]}];}return db[_0xd3a6('0x2b')]['findAll'](_0x5c2186);})[_0xd3a6('0x24')](function(_0x1bc18a){_0x1f4859[_0xd3a6('0x3f')]=_0x1bc18a;return _0x1f4859;})['then'](respondWithFilteredResult(_0x45c628,_0x5c2186))[_0xd3a6('0x40')](handleError(_0x45c628,null));};exports['show']=function(_0x23aa99,_0x4cbf76){var _0x448213={'raw':!![],'where':{'id':_0x23aa99[_0xd3a6('0x41')]['id']}},_0x629153={};_0x629153[_0xd3a6('0x33')]=_[_0xd3a6('0x2f')](db[_0xd3a6('0x2b')][_0xd3a6('0x42')]);_0x629153['query']=_[_0xd3a6('0x2f')](_0x23aa99[_0xd3a6('0x2e')]);_0x629153[_0xd3a6('0x30')]=_[_0xd3a6('0x31')](_0x629153['model'],_0x629153[_0xd3a6('0x2e')]);_0x448213[_0xd3a6('0x32')]=_[_0xd3a6('0x31')](_0x629153[_0xd3a6('0x33')],qs[_0xd3a6('0x34')](_0x23aa99[_0xd3a6('0x2e')][_0xd3a6('0x34')]));_0x448213[_0xd3a6('0x32')]=_0x448213['attributes'][_0xd3a6('0x35')]?_0x448213[_0xd3a6('0x32')]:_0x629153[_0xd3a6('0x33')];if(_0x23aa99[_0xd3a6('0x2e')][_0xd3a6('0x3e')]){_0x448213['include']=[{'all':!![]}];}_0x448213=_[_0xd3a6('0x43')]({},_0x448213,_0x23aa99[_0xd3a6('0x3d')]);return db[_0xd3a6('0x2b')][_0xd3a6('0x44')](_0x448213)[_0xd3a6('0x24')](handleEntityNotFound(_0x4cbf76,null))[_0xd3a6('0x24')](respondWithResult(_0x4cbf76,null))[_0xd3a6('0x40')](handleError(_0x4cbf76,null));};exports[_0xd3a6('0x45')]=function(_0x4ac576,_0x7828c2){return db['MailQueueReport'][_0xd3a6('0x45')](_0x4ac576[_0xd3a6('0x46')],{})['then'](respondWithResult(_0x7828c2,0xc9))[_0xd3a6('0x40')](handleError(_0x7828c2,null));};exports[_0xd3a6('0x47')]=function(_0x3cf99a,_0x375067){if(_0x3cf99a[_0xd3a6('0x46')]['id']){delete _0x3cf99a[_0xd3a6('0x46')]['id'];}return db[_0xd3a6('0x2b')][_0xd3a6('0x44')]({'where':{'id':_0x3cf99a[_0xd3a6('0x41')]['id']}})[_0xd3a6('0x24')](handleEntityNotFound(_0x375067,null))['then'](saveUpdates(_0x3cf99a[_0xd3a6('0x46')],null))[_0xd3a6('0x24')](respondWithResult(_0x375067,null))[_0xd3a6('0x40')](handleError(_0x375067,null));};exports[_0xd3a6('0x48')]=function(_0x26bd65,_0x225393){return db[_0xd3a6('0x2b')][_0xd3a6('0x44')]({'where':{'id':_0x26bd65[_0xd3a6('0x41')]['id']}})[_0xd3a6('0x24')](handleEntityNotFound(_0x225393,null))['then'](removeEntity(_0x225393,null))[_0xd3a6('0x40')](handleError(_0x225393,null));};exports[_0xd3a6('0x49')]=function(_0x618b72,_0x4995b7){return db[_0xd3a6('0x2b')]['describe']()['then'](respondWithResult(_0x4995b7,null))['catch'](handleError(_0x4995b7,null));};
\ No newline at end of file
index 9b93866..f64c6a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be5=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailQueueReport','report_mail_queue'];(function(_0x2bf5f8,_0x24b456){var _0x323370=function(_0x300ce2){while(--_0x300ce2){_0x2bf5f8['push'](_0x2bf5f8['shift']());}};_0x323370(++_0x24b456);}(_0x6be5,0x193));var _0x56be=function(_0x2bc08f,_0x459946){_0x2bc08f=_0x2bc08f-0x0;var _0x3b0f98=_0x6be5[_0x2bc08f];return _0x3b0f98;};'use strict';var _=require(_0x56be('0x0'));var util=require(_0x56be('0x1'));var logger=require('../../config/logger')(_0x56be('0x2'));var moment=require(_0x56be('0x3'));var BPromise=require(_0x56be('0x4'));var rp=require(_0x56be('0x5'));var fs=require('fs');var path=require(_0x56be('0x6'));var rimraf=require(_0x56be('0x7'));var config=require(_0x56be('0x8'));var attributes=require('./mailQueueReport.attributes');module[_0x56be('0x9')]=function(_0x48fd54,_0x3a29f5){return _0x48fd54[_0x56be('0xa')](_0x56be('0xb'),attributes,{'tableName':_0x56be('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x644f=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','uniqueid','lodash'];(function(_0x20e283,_0x2b5a6e){var _0x199e10=function(_0xaccd3a){while(--_0xaccd3a){_0x20e283['push'](_0x20e283['shift']());}};_0x199e10(++_0x2b5a6e);}(_0x644f,0xc2));var _0xf644=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0x644f[_0x2132a3];return _0x21890c;};'use strict';var _=require(_0xf644('0x0'));var util=require(_0xf644('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf644('0x2'));var BPromise=require(_0xf644('0x3'));var rp=require(_0xf644('0x4'));var fs=require('fs');var path=require(_0xf644('0x5'));var rimraf=require(_0xf644('0x6'));var config=require(_0xf644('0x7'));var attributes=require(_0xf644('0x8'));module[_0xf644('0x9')]=function(_0x9938ed,_0x1a6cbb){return _0x9938ed[_0xf644('0xa')](_0xf644('0xb'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0xf644('0xc'),'fields':[_0xf644('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 368c35f..cec9be7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xf6869d,_0x18fc7a){var _0x440c06=function(_0x3457bf){while(--_0x3457bf){_0xf6869d['push'](_0xf6869d['shift']());}};_0x440c06(++_0x18fc7a);}(_0x326f,0xd1));var _0xf326=function(_0x3abaa7,_0x583464){_0x3abaa7=_0x3abaa7-0x0;var _0x12387d=_0x326f[_0x3abaa7];return _0x12387d;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','MailQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateMailQueueReport','body','options','raw','stringify','MailQueueReport','update','where','UpdateMailQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x42341f,_0x3fdf9b){var _0x5112c0=function(_0x33a560){while(--_0x33a560){_0x42341f['push'](_0x42341f['shift']());}};_0x5112c0(++_0x3fdf9b);}(_0x1261,0x144));var _0x1126=function(_0x49a3a5,_0x5a8caf){_0x49a3a5=_0x49a3a5-0x0;var _0xf6b7fb=_0x1261[_0x49a3a5];return _0xf6b7fb;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailQueueReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}exports[_0x1126('0x15')]=function(_0x4a7b49){var _0x4d2b38=this;return new Promise(function(_0x22ae0b,_0x2b2487){return db['MailQueueReport']['create'](_0x4a7b49[_0x1126('0x16')],{'raw':_0x4a7b49['options']?_0x4a7b49[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![]})[_0x1126('0xc')](function(_0x54400a){logger[_0x1126('0xd')]('CreateMailQueueReport',_0x4a7b49);logger['debug'](_0x1126('0x15'),_0x4a7b49,JSON[_0x1126('0x19')](_0x54400a));_0x22ae0b(_0x54400a);})[_0x1126('0x14')](function(_0x36d254){logger['error'](_0x1126('0x15'),_0x36d254[_0x1126('0x13')],_0x4a7b49);_0x2b2487(_0x4d2b38['error'](0x1f4,_0x36d254[_0x1126('0x13')]));});});};exports['UpdateMailQueueReport']=function(_0x529dd9){var _0x4b57ab=this;return new Promise(function(_0x2199d9,_0x15bcc3){return db[_0x1126('0x1a')][_0x1126('0x1b')](_0x529dd9[_0x1126('0x16')],{'raw':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529dd9['options']?_0x529dd9[_0x1126('0x17')][_0x1126('0x1c')]||null:null,'attributes':_0x529dd9[_0x1126('0x17')]?_0x529dd9['options']['attributes']||null:null,'limit':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')]['limit']||null:null})[_0x1126('0xc')](function(_0x23d2bc){logger['info'](_0x1126('0x1d'),_0x529dd9);logger['debug'](_0x1126('0x1d'),_0x529dd9,JSON['stringify'](_0x23d2bc));_0x2199d9(_0x23d2bc);})[_0x1126('0x14')](function(_0x583ce6){logger[_0x1126('0x11')]('UpdateMailQueueReport',_0x583ce6['message'],_0x529dd9);_0x15bcc3(_0x4b57ab['error'](0x1f4,_0x583ce6[_0x1126('0x13')]));});});};
\ No newline at end of file
index 1cda0b1..bb9a943 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(_0x269310,_0x3235cf){var _0x398b8b=function(_0x1d4ac6){while(--_0x1d4ac6){_0x269310['push'](_0x269310['shift']());}};_0x398b8b(++_0x3235cf);}(_0x70e0,0x17b));var _0x070e=function(_0xd2c08c,_0x4b12a7){_0xd2c08c=_0xd2c08c-0x0;var _0x5cd432=_0x70e0[_0xd2c08c];return _0x5cd432;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x3beb4e,_0x2d1a69){var _0xd40198=function(_0x4a1f72){while(--_0x4a1f72){_0x3beb4e['push'](_0x3beb4e['shift']());}};_0xd40198(++_0x2d1a69);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'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 83a3322..d1dadf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b7b=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x5ff517,_0x3e4ee0){var _0x19a245=function(_0x4c00ac){while(--_0x4c00ac){_0x5ff517['push'](_0x5ff517['shift']());}};_0x19a245(++_0x3e4ee0);}(_0x6b7b,0xdc));var _0xb6b7=function(_0x23adc4,_0x1c601c){_0x23adc4=_0x23adc4-0x0;var _0x3fd968=_0x6b7b[_0x23adc4];return _0x3fd968;};'use strict';var Sequelize=require('sequelize');module[_0xb6b7('0x0')]={'description':{'type':Sequelize[_0xb6b7('0x1')]},'host':{'type':Sequelize[_0xb6b7('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xb6b7('0x2')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xb6b7('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xb6b7('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xb6b7('0x1')]},'modernAuthentication':{'type':Sequelize[_0xb6b7('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb5c8=['exports','STRING','BOOLEAN','INTEGER','INBOX'];(function(_0x191154,_0x56f74c){var _0x3dcd73=function(_0x51c321){while(--_0x51c321){_0x191154['push'](_0x191154['shift']());}};_0x3dcd73(++_0x56f74c);}(_0xb5c8,0x87));var _0x8b5c=function(_0x5d624d,_0xde7b4){_0x5d624d=_0x5d624d-0x0;var _0x110fb0=_0xb5c8[_0x5d624d];return _0x110fb0;};'use strict';var Sequelize=require('sequelize');module[_0x8b5c('0x0')]={'description':{'type':Sequelize[_0x8b5c('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x8b5c('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x8b5c('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x8b5c('0x4')},'connTimeout':{'type':Sequelize[_0x8b5c('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x8b5c('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x8b5c('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 0ff0123..242e72d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c8a=['api','bluebird','request-promise','path','../../config/environment','./mailServerIn.attributes','exports','define','mail_servers_in','lodash','util','../../config/logger'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x1c8a,0x1e9));var _0xa1c8=function(_0x231cf9,_0x3ccff8){_0x231cf9=_0x231cf9-0x0;var _0x27de09=_0x1c8a[_0x231cf9];return _0x27de09;};'use strict';var _=require(_0xa1c8('0x0'));var util=require(_0xa1c8('0x1'));var logger=require(_0xa1c8('0x2'))(_0xa1c8('0x3'));var moment=require('moment');var BPromise=require(_0xa1c8('0x4'));var rp=require(_0xa1c8('0x5'));var fs=require('fs');var path=require(_0xa1c8('0x6'));var rimraf=require('rimraf');var config=require(_0xa1c8('0x7'));var attributes=require(_0xa1c8('0x8'));module[_0xa1c8('0x9')]=function(_0x372087,_0x645185){return _0x372087[_0xa1c8('0xa')]('MailServerIn',attributes,{'tableName':_0xa1c8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x119e=['bluebird','request-promise','path','../../config/environment','exports','define','mail_servers_in','lodash','util','../../config/logger','api','moment'];(function(_0x242353,_0x44bfa6){var _0x49b070=function(_0x10cd28){while(--_0x10cd28){_0x242353['push'](_0x242353['shift']());}};_0x49b070(++_0x44bfa6);}(_0x119e,0x163));var _0xe119=function(_0x287338,_0x2b442e){_0x287338=_0x287338-0x0;var _0x5f1ebd=_0x119e[_0x287338];return _0x5f1ebd;};'use strict';var _=require(_0xe119('0x0'));var util=require(_0xe119('0x1'));var logger=require(_0xe119('0x2'))(_0xe119('0x3'));var moment=require(_0xe119('0x4'));var BPromise=require(_0xe119('0x5'));var rp=require(_0xe119('0x6'));var fs=require('fs');var path=require(_0xe119('0x7'));var rimraf=require('rimraf');var config=require(_0xe119('0x8'));var attributes=require('./mailServerIn.attributes');module[_0xe119('0x9')]=function(_0x1df0b6,_0x3fa5c6){return _0x1df0b6[_0xe119('0xa')]('MailServerIn',attributes,{'tableName':_0xe119('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6bcded7..b2e65e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc632=['GetMailServerIn','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','MailServerIn','findAll','options','raw','where','attributes','limit','include','model','map'];(function(_0x272812,_0x49861b){var _0x5cce9d=function(_0x13f934){while(--_0x13f934){_0x272812['push'](_0x272812['shift']());}};_0x5cce9d(++_0x49861b);}(_0xc632,0xf0));var _0x2c63=function(_0x541ade,_0x1ef8b7){_0x541ade=_0x541ade-0x0;var _0x27cbbc=_0xc632[_0x541ade];return _0x27cbbc;};'use strict';var _=require(_0x2c63('0x0'));var util=require(_0x2c63('0x1'));var moment=require(_0x2c63('0x2'));var BPromise=require(_0x2c63('0x3'));var rs=require(_0x2c63('0x4'));var fs=require('fs');var Redis=require(_0x2c63('0x5'));var db=require(_0x2c63('0x6'))['db'];var utils=require(_0x2c63('0x7'));var logger=require(_0x2c63('0x8'))(_0x2c63('0x9'));var config=require(_0x2c63('0xa'));var jayson=require(_0x2c63('0xb'));var client=jayson[_0x2c63('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13b049,_0x16f1d3,_0xfe4e1c){return new BPromise(function(_0x3cb763,_0x387be9){return client['request'](_0x13b049,_0xfe4e1c)['then'](function(_0x1ae757){logger[_0x2c63('0xd')](_0x2c63('0xe'),_0x16f1d3,_0x2c63('0xf'));logger['debug'](_0x2c63('0x10'),_0x16f1d3,'request\x20sent',JSON[_0x2c63('0x11')](_0x1ae757));if(_0x1ae757[_0x2c63('0x12')]){if(_0x1ae757[_0x2c63('0x12')][_0x2c63('0x13')]===0x1f4){logger[_0x2c63('0x12')]('MailServerIn,\x20%s,\x20%s',_0x16f1d3,_0x1ae757[_0x2c63('0x12')][_0x2c63('0x14')]);return _0x387be9(_0x1ae757[_0x2c63('0x12')]['message']);}logger['error'](_0x2c63('0xe'),_0x16f1d3,_0x1ae757['error'][_0x2c63('0x14')]);return _0x3cb763(_0x1ae757[_0x2c63('0x12')]['message']);}else{logger[_0x2c63('0xd')](_0x2c63('0xe'),_0x16f1d3,_0x2c63('0xf'));_0x3cb763(_0x1ae757['result'][_0x2c63('0x14')]);}})[_0x2c63('0x15')](function(_0x4efdd4){logger[_0x2c63('0x12')]('MailServerIn,\x20%s,\x20%s',_0x16f1d3,_0x4efdd4);_0x387be9(_0x4efdd4);});});}exports['GetMailServerIn']=function(_0xd0a60f){var _0x45d59d=this;return new Promise(function(_0x4c7fc7,_0x1a5d1b){return db[_0x2c63('0x16')][_0x2c63('0x17')]({'raw':_0xd0a60f['options']?_0xd0a60f[_0x2c63('0x18')][_0x2c63('0x19')]===undefined?!![]:![]:!![],'where':_0xd0a60f[_0x2c63('0x18')]?_0xd0a60f['options'][_0x2c63('0x1a')]||null:null,'attributes':_0xd0a60f['options']?_0xd0a60f[_0x2c63('0x18')][_0x2c63('0x1b')]||null:null,'limit':_0xd0a60f[_0x2c63('0x18')]?_0xd0a60f[_0x2c63('0x18')][_0x2c63('0x1c')]||null:null,'include':_0xd0a60f[_0x2c63('0x18')]?_0xd0a60f[_0x2c63('0x18')][_0x2c63('0x1d')]?_['map'](_0xd0a60f[_0x2c63('0x18')][_0x2c63('0x1d')],function(_0xd7e904){return{'model':db[_0xd7e904[_0x2c63('0x1e')]],'as':_0xd7e904['as'],'attributes':_0xd7e904[_0x2c63('0x1b')],'include':_0xd7e904['include']?_['map'](_0xd7e904[_0x2c63('0x1d')],function(_0x281a9f){return{'model':db[_0x281a9f['model']],'as':_0x281a9f['as'],'attributes':_0x281a9f[_0x2c63('0x1b')],'include':_0x281a9f[_0x2c63('0x1d')]?_[_0x2c63('0x1f')](_0x281a9f[_0x2c63('0x1d')],function(_0x1b0bde){return{'model':db[_0x1b0bde[_0x2c63('0x1e')]],'as':_0x1b0bde['as'],'attributes':_0x1b0bde[_0x2c63('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b9c05){logger[_0x2c63('0xd')](_0x2c63('0x20'),_0xd0a60f);logger[_0x2c63('0x21')](_0x2c63('0x20'),_0xd0a60f,JSON['stringify'](_0x4b9c05));_0x4c7fc7(_0x4b9c05);})['catch'](function(_0x184098){logger[_0x2c63('0x12')]('GetMailServerIn',_0x184098[_0x2c63('0x14')],_0xd0a60f);_0x1a5d1b(_0x45d59d['error'](0x1f4,_0x184098[_0x2c63('0x14')]));});});};
\ No newline at end of file
+var _0x1d6a=['request\x20sent','stringify','error','code','message','GetMailServerIn','findAll','options','raw','where','attributes','limit','include','map','model','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s'];(function(_0xbdd50c,_0x790918){var _0x20ccc1=function(_0x5a88f1){while(--_0x5a88f1){_0xbdd50c['push'](_0xbdd50c['shift']());}};_0x20ccc1(++_0x790918);}(_0x1d6a,0x190));var _0xa1d6=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x1d6a[_0x465a0c];return _0x1e202e;};'use strict';var _=require('lodash');var util=require(_0xa1d6('0x0'));var moment=require(_0xa1d6('0x1'));var BPromise=require(_0xa1d6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa1d6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa1d6('0x4'));var logger=require(_0xa1d6('0x5'))(_0xa1d6('0x6'));var config=require(_0xa1d6('0x7'));var jayson=require(_0xa1d6('0x8'));var client=jayson[_0xa1d6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1452e7,_0x227bd0,_0x5833e4){return new BPromise(function(_0x4678f9,_0x1b53ad){return client[_0xa1d6('0xa')](_0x1452e7,_0x5833e4)[_0xa1d6('0xb')](function(_0x4e4ea8){logger[_0xa1d6('0xc')](_0xa1d6('0xd'),_0x227bd0,'request\x20sent');logger[_0xa1d6('0xe')](_0xa1d6('0xf'),_0x227bd0,_0xa1d6('0x10'),JSON[_0xa1d6('0x11')](_0x4e4ea8));if(_0x4e4ea8['error']){if(_0x4e4ea8[_0xa1d6('0x12')][_0xa1d6('0x13')]===0x1f4){logger[_0xa1d6('0x12')](_0xa1d6('0xd'),_0x227bd0,_0x4e4ea8[_0xa1d6('0x12')][_0xa1d6('0x14')]);return _0x1b53ad(_0x4e4ea8['error'][_0xa1d6('0x14')]);}logger[_0xa1d6('0x12')](_0xa1d6('0xd'),_0x227bd0,_0x4e4ea8[_0xa1d6('0x12')][_0xa1d6('0x14')]);return _0x4678f9(_0x4e4ea8['error']['message']);}else{logger['info'](_0xa1d6('0xd'),_0x227bd0,_0xa1d6('0x10'));_0x4678f9(_0x4e4ea8['result'][_0xa1d6('0x14')]);}})['catch'](function(_0x22d2ca){logger[_0xa1d6('0x12')](_0xa1d6('0xd'),_0x227bd0,_0x22d2ca);_0x1b53ad(_0x22d2ca);});});}exports[_0xa1d6('0x15')]=function(_0xfac043){var _0x408e6c=this;return new Promise(function(_0x330a33,_0x521c8b){return db['MailServerIn'][_0xa1d6('0x16')]({'raw':_0xfac043['options']?_0xfac043[_0xa1d6('0x17')][_0xa1d6('0x18')]===undefined?!![]:![]:!![],'where':_0xfac043[_0xa1d6('0x17')]?_0xfac043[_0xa1d6('0x17')][_0xa1d6('0x19')]||null:null,'attributes':_0xfac043[_0xa1d6('0x17')]?_0xfac043[_0xa1d6('0x17')][_0xa1d6('0x1a')]||null:null,'limit':_0xfac043['options']?_0xfac043[_0xa1d6('0x17')][_0xa1d6('0x1b')]||null:null,'include':_0xfac043[_0xa1d6('0x17')]?_0xfac043[_0xa1d6('0x17')][_0xa1d6('0x1c')]?_[_0xa1d6('0x1d')](_0xfac043['options'][_0xa1d6('0x1c')],function(_0x55c6af){return{'model':db[_0x55c6af[_0xa1d6('0x1e')]],'as':_0x55c6af['as'],'attributes':_0x55c6af[_0xa1d6('0x1a')],'include':_0x55c6af[_0xa1d6('0x1c')]?_['map'](_0x55c6af[_0xa1d6('0x1c')],function(_0x2c01bc){return{'model':db[_0x2c01bc['model']],'as':_0x2c01bc['as'],'attributes':_0x2c01bc[_0xa1d6('0x1a')],'include':_0x2c01bc[_0xa1d6('0x1c')]?_[_0xa1d6('0x1d')](_0x2c01bc['include'],function(_0x540241){return{'model':db[_0x540241[_0xa1d6('0x1e')]],'as':_0x540241['as'],'attributes':_0x540241[_0xa1d6('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e24fa){logger[_0xa1d6('0xc')](_0xa1d6('0x15'),_0xfac043);logger['debug'](_0xa1d6('0x15'),_0xfac043,JSON[_0xa1d6('0x11')](_0x1e24fa));_0x330a33(_0x1e24fa);})[_0xa1d6('0x1f')](function(_0x3dc96f){logger[_0xa1d6('0x12')]('GetMailServerIn',_0x3dc96f[_0xa1d6('0x14')],_0xfac043);_0x521c8b(_0x408e6c['error'](0x1f4,_0x3dc96f[_0xa1d6('0x14')]));});});};
\ No newline at end of file
index 09141dc..ed2accb 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(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x7a54,0x106));var _0x47a5=function(_0x11ac29,_0x48d89a){_0x11ac29=_0x11ac29-0x0;var _0x271c3c=_0x7a54[_0x11ac29];return _0x271c3c;};'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(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x7a54,0x106));var _0x47a5=function(_0x24c6ff,_0x17f325){_0x24c6ff=_0x24c6ff-0x0;var _0x481e99=_0x7a54[_0x24c6ff];return _0x481e99;};'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 cde9fbd..ce980fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd914=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x826fae,_0x7a32ce){var _0x53ed77=function(_0x2eb328){while(--_0x2eb328){_0x826fae['push'](_0x826fae['shift']());}};_0x53ed77(++_0x7a32ce);}(_0xd914,0x17f));var _0x4d91=function(_0x9d1e6b,_0x3bdc22){_0x9d1e6b=_0x9d1e6b-0x0;var _0x2b3070=_0xd914[_0x9d1e6b];return _0x2b3070;};'use strict';var Sequelize=require(_0x4d91('0x0'));module[_0x4d91('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x4d91('0x2')]},'user':{'type':Sequelize[_0x4d91('0x2')]},'pass':{'type':Sequelize[_0x4d91('0x2')]},'port':{'type':Sequelize[_0x4d91('0x3')]},'secure':{'type':Sequelize[_0x4d91('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x4d91('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x4d91('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0102=['exports','STRING','BOOLEAN'];(function(_0x2955be,_0x17e9c4){var _0x27604b=function(_0x16adc0){while(--_0x16adc0){_0x2955be['push'](_0x2955be['shift']());}};_0x27604b(++_0x17e9c4);}(_0x0102,0x186));var _0x2010=function(_0x3c4862,_0xee5f71){_0x3c4862=_0x3c4862-0x0;var _0x4f610b=_0x0102[_0x3c4862];return _0x4f610b;};'use strict';var Sequelize=require('sequelize');module[_0x2010('0x0')]={'description':{'type':Sequelize[_0x2010('0x1')]},'host':{'type':Sequelize[_0x2010('0x1')]},'user':{'type':Sequelize[_0x2010('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x2010('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 217e521..5a7b7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe188=['includeAll','include','findAll','rows','params','merge','find','catch','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','map','MailServerOut','rawAttributes','fieldName','type','key','query','keys','filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options'];(function(_0x441f7a,_0x576321){var _0x4821da=function(_0x5c5b52){while(--_0x5c5b52){_0x441f7a['push'](_0x441f7a['shift']());}};_0x4821da(++_0x576321);}(_0xe188,0x1df));var _0x8e18=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0xe188[_0x4dc7b9];return _0x3ab114;};'use strict';var emlformat=require(_0x8e18('0x0'));var rimraf=require(_0x8e18('0x1'));var zipdir=require(_0x8e18('0x2'));var jsonpatch=require(_0x8e18('0x3'));var rp=require('request-promise');var moment=require(_0x8e18('0x4'));var BPromise=require(_0x8e18('0x5'));var Mustache=require(_0x8e18('0x6'));var util=require(_0x8e18('0x7'));var path=require('path');var sox=require(_0x8e18('0x8'));var csv=require(_0x8e18('0x9'));var ejs=require(_0x8e18('0xa'));var fs=require('fs');var fs_extra=require(_0x8e18('0xb'));var _=require(_0x8e18('0xc'));var squel=require('squel');var crypto=require(_0x8e18('0xd'));var jsforce=require(_0x8e18('0xe'));var deskjs=require(_0x8e18('0xf'));var toCsv=require(_0x8e18('0x9'));var querystring=require(_0x8e18('0x10'));var Papa=require(_0x8e18('0x11'));var Redis=require(_0x8e18('0x12'));var authService=require(_0x8e18('0x13'));var qs=require(_0x8e18('0x14'));var as=require(_0x8e18('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x8e18('0x16'));var config=require(_0x8e18('0x17'));var licenseUtil=require(_0x8e18('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ccd39,_0x41ef3f){_0x41ef3f=_0x41ef3f||0xcc;return function(_0x31d267){if(_0x31d267){return _0x4ccd39[_0x8e18('0x19')](_0x41ef3f);}return _0x4ccd39[_0x8e18('0x1a')](_0x41ef3f)['end']();};}function respondWithResult(_0x2706cb,_0x20e2af){_0x20e2af=_0x20e2af||0xc8;return function(_0x3e2776){if(_0x3e2776){return _0x2706cb[_0x8e18('0x1a')](_0x20e2af)[_0x8e18('0x1b')](_0x3e2776);}};}function respondWithFilteredResult(_0x5ec6b3,_0x5a4aed){return function(_0x1986cc){if(_0x1986cc){var _0x54be29=typeof _0x5a4aed[_0x8e18('0x1c')]===_0x8e18('0x1d')&&typeof _0x5a4aed[_0x8e18('0x1e')]===_0x8e18('0x1d');var _0x48dd33=_0x1986cc[_0x8e18('0x1f')];var _0x34a1d1=_0x54be29?0x0:_0x5a4aed[_0x8e18('0x1c')];var _0x2cbb9c=_0x54be29?_0x1986cc[_0x8e18('0x1f')]:_0x5a4aed[_0x8e18('0x1c')]+_0x5a4aed[_0x8e18('0x1e')];var _0x2cd01c;if(_0x2cbb9c>=_0x48dd33){_0x2cbb9c=_0x48dd33;_0x2cd01c=0xc8;}else{_0x2cd01c=0xce;}_0x5ec6b3[_0x8e18('0x1a')](_0x2cd01c);return _0x5ec6b3[_0x8e18('0x20')](_0x8e18('0x21'),_0x34a1d1+'-'+_0x2cbb9c+'/'+_0x48dd33)['json'](_0x1986cc);}return null;};}function patchUpdates(_0x2d080b){return function(_0x877435){try{jsonpatch[_0x8e18('0x22')](_0x877435,_0x2d080b,!![]);}catch(_0x37a308){return BPromise[_0x8e18('0x23')](_0x37a308);}return _0x877435[_0x8e18('0x24')]();};}function saveUpdates(_0x36d784,_0xc3471f){return function(_0xab6b8c){if(_0xab6b8c){return _0xab6b8c['update'](_0x36d784)[_0x8e18('0x25')](function(_0x5e13de){return _0x5e13de;});}return null;};}function removeEntity(_0x516728,_0x285ce2){return function(_0x537be2){if(_0x537be2){return _0x537be2[_0x8e18('0x26')]()['then'](function(){_0x516728[_0x8e18('0x1a')](0xcc)[_0x8e18('0x27')]();});}};}function handleEntityNotFound(_0x313674,_0x7b9a03){return function(_0x53b270){if(!_0x53b270){_0x313674[_0x8e18('0x19')](0x194);}return _0x53b270;};}function handleError(_0x1c753c,_0x43c2cb){_0x43c2cb=_0x43c2cb||0x1f4;return function(_0x35ee19){logger[_0x8e18('0x28')](_0x35ee19[_0x8e18('0x29')]);if(_0x35ee19[_0x8e18('0x2a')]){delete _0x35ee19[_0x8e18('0x2a')];}_0x1c753c[_0x8e18('0x1a')](_0x43c2cb)[_0x8e18('0x2b')](_0x35ee19);};}exports['index']=function(_0x3f8c9e,_0x2141d4){var _0x1c263f={},_0x385bdb={},_0x1d78ff={'count':0x0,'rows':[]};var _0x2ab72a=_[_0x8e18('0x2c')](db[_0x8e18('0x2d')][_0x8e18('0x2e')],function(_0x35c2fb){return{'name':_0x35c2fb[_0x8e18('0x2f')],'type':_0x35c2fb[_0x8e18('0x30')][_0x8e18('0x31')]};});_0x385bdb['model']=_[_0x8e18('0x2c')](_0x2ab72a,_0x8e18('0x2a'));_0x385bdb[_0x8e18('0x32')]=_[_0x8e18('0x33')](_0x3f8c9e[_0x8e18('0x32')]);_0x385bdb[_0x8e18('0x34')]=_[_0x8e18('0x35')](_0x385bdb['model'],_0x385bdb[_0x8e18('0x32')]);_0x1c263f['attributes']=_[_0x8e18('0x35')](_0x385bdb['model'],qs['fields'](_0x3f8c9e[_0x8e18('0x32')][_0x8e18('0x36')]));_0x1c263f['attributes']=_0x1c263f[_0x8e18('0x37')][_0x8e18('0x38')]?_0x1c263f[_0x8e18('0x37')]:_0x385bdb[_0x8e18('0x39')];if(!_0x3f8c9e['query'][_0x8e18('0x3a')](_0x8e18('0x3b'))){_0x1c263f[_0x8e18('0x1e')]=qs[_0x8e18('0x1e')](_0x3f8c9e[_0x8e18('0x32')][_0x8e18('0x1e')]);_0x1c263f[_0x8e18('0x1c')]=qs[_0x8e18('0x1c')](_0x3f8c9e['query'][_0x8e18('0x1c')]);}_0x1c263f[_0x8e18('0x3c')]=qs[_0x8e18('0x3d')](_0x3f8c9e[_0x8e18('0x32')][_0x8e18('0x3d')]);_0x1c263f[_0x8e18('0x3e')]=qs[_0x8e18('0x34')](_[_0x8e18('0x3f')](_0x3f8c9e['query'],_0x385bdb['filters']),_0x2ab72a);if(_0x3f8c9e[_0x8e18('0x32')][_0x8e18('0x40')]){_0x1c263f[_0x8e18('0x3e')]=_['merge'](_0x1c263f['where'],{'$or':_[_0x8e18('0x2c')](_0x2ab72a,function(_0x5b4d4e){if(_0x5b4d4e[_0x8e18('0x30')]!==_0x8e18('0x41')){var _0x33e29f={};_0x33e29f[_0x5b4d4e[_0x8e18('0x2a')]]={'$like':'%'+_0x3f8c9e['query'][_0x8e18('0x40')]+'%'};return _0x33e29f;}})});}_0x1c263f=_['merge']({},_0x1c263f,_0x3f8c9e[_0x8e18('0x42')]);var _0x76f7b9={'where':_0x1c263f[_0x8e18('0x3e')]};return db[_0x8e18('0x2d')][_0x8e18('0x1f')](_0x76f7b9)[_0x8e18('0x25')](function(_0x31b756){_0x1d78ff[_0x8e18('0x1f')]=_0x31b756;if(_0x3f8c9e[_0x8e18('0x32')][_0x8e18('0x43')]){_0x1c263f[_0x8e18('0x44')]=[{'all':!![]}];}return db[_0x8e18('0x2d')][_0x8e18('0x45')](_0x1c263f);})[_0x8e18('0x25')](function(_0x4f3dcc){_0x1d78ff[_0x8e18('0x46')]=_0x4f3dcc;return _0x1d78ff;})[_0x8e18('0x25')](respondWithFilteredResult(_0x2141d4,_0x1c263f))['catch'](handleError(_0x2141d4,null));};exports['show']=function(_0x36e759,_0x1f6f6e){var _0x368b25={'raw':!![],'where':{'id':_0x36e759[_0x8e18('0x47')]['id']}},_0x37b8a9={};_0x37b8a9[_0x8e18('0x39')]=_[_0x8e18('0x33')](db[_0x8e18('0x2d')][_0x8e18('0x2e')]);_0x37b8a9[_0x8e18('0x32')]=_[_0x8e18('0x33')](_0x36e759[_0x8e18('0x32')]);_0x37b8a9['filters']=_[_0x8e18('0x35')](_0x37b8a9[_0x8e18('0x39')],_0x37b8a9[_0x8e18('0x32')]);_0x368b25[_0x8e18('0x37')]=_[_0x8e18('0x35')](_0x37b8a9[_0x8e18('0x39')],qs[_0x8e18('0x36')](_0x36e759['query'][_0x8e18('0x36')]));_0x368b25[_0x8e18('0x37')]=_0x368b25[_0x8e18('0x37')][_0x8e18('0x38')]?_0x368b25[_0x8e18('0x37')]:_0x37b8a9[_0x8e18('0x39')];if(_0x36e759[_0x8e18('0x32')][_0x8e18('0x43')]){_0x368b25['include']=[{'all':!![]}];}_0x368b25=_[_0x8e18('0x48')]({},_0x368b25,_0x36e759[_0x8e18('0x42')]);return db[_0x8e18('0x2d')][_0x8e18('0x49')](_0x368b25)['then'](handleEntityNotFound(_0x1f6f6e,null))[_0x8e18('0x25')](respondWithResult(_0x1f6f6e,null))[_0x8e18('0x4a')](handleError(_0x1f6f6e,null));};exports[_0x8e18('0x4b')]=function(_0x3144f5,_0x2bc68d){return db[_0x8e18('0x2d')][_0x8e18('0x4b')](_0x3144f5[_0x8e18('0x4c')],{})['then'](respondWithResult(_0x2bc68d,0xc9))[_0x8e18('0x4a')](handleError(_0x2bc68d,null));};exports[_0x8e18('0x4d')]=function(_0x65f48a,_0x3dca98){if(_0x65f48a[_0x8e18('0x4c')]['id']){delete _0x65f48a[_0x8e18('0x4c')]['id'];}return db[_0x8e18('0x2d')][_0x8e18('0x49')]({'where':{'id':_0x65f48a[_0x8e18('0x47')]['id']}})[_0x8e18('0x25')](handleEntityNotFound(_0x3dca98,null))[_0x8e18('0x25')](saveUpdates(_0x65f48a['body'],null))[_0x8e18('0x25')](respondWithResult(_0x3dca98,null))[_0x8e18('0x4a')](handleError(_0x3dca98,null));};exports[_0x8e18('0x26')]=function(_0x18113a,_0x472cde){return db[_0x8e18('0x2d')]['find']({'where':{'id':_0x18113a[_0x8e18('0x47')]['id']}})[_0x8e18('0x25')](handleEntityNotFound(_0x472cde,null))[_0x8e18('0x25')](removeEntity(_0x472cde,null))[_0x8e18('0x4a')](handleError(_0x472cde,null));};
\ No newline at end of file
+var _0x021c=['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','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','Content-Range','apply','save','update','destroy','then','stack','name','index','map','MailServerOut','rawAttributes','type','key','keys','query','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','show','params','filters','includeAll','find','catch','create'];(function(_0x5b064c,_0x110d1a){var _0xd270a=function(_0x14c5dd){while(--_0x14c5dd){_0x5b064c['push'](_0x5b064c['shift']());}};_0xd270a(++_0x110d1a);}(_0x021c,0x1b1));var _0xc021=function(_0x75e2c9,_0x50b412){_0x75e2c9=_0x75e2c9-0x0;var _0x388ddb=_0x021c[_0x75e2c9];return _0x388ddb;};'use strict';var emlformat=require(_0xc021('0x0'));var rimraf=require(_0xc021('0x1'));var zipdir=require(_0xc021('0x2'));var jsonpatch=require(_0xc021('0x3'));var rp=require(_0xc021('0x4'));var moment=require(_0xc021('0x5'));var BPromise=require(_0xc021('0x6'));var Mustache=require(_0xc021('0x7'));var util=require(_0xc021('0x8'));var path=require('path');var sox=require(_0xc021('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc021('0xa'));var _=require(_0xc021('0xb'));var squel=require(_0xc021('0xc'));var crypto=require(_0xc021('0xd'));var jsforce=require(_0xc021('0xe'));var deskjs=require(_0xc021('0xf'));var toCsv=require(_0xc021('0x10'));var querystring=require(_0xc021('0x11'));var Papa=require(_0xc021('0x12'));var Redis=require(_0xc021('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc021('0x14'));var logger=require(_0xc021('0x15'))(_0xc021('0x16'));var utils=require(_0xc021('0x17'));var config=require(_0xc021('0x18'));var licenseUtil=require(_0xc021('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4248e5,_0x213677){_0x213677=_0x213677||0xcc;return function(_0x21be5f){if(_0x21be5f){return _0x4248e5['sendStatus'](_0x213677);}return _0x4248e5[_0xc021('0x1a')](_0x213677)['end']();};}function respondWithResult(_0xea66b4,_0x94c585){_0x94c585=_0x94c585||0xc8;return function(_0x332d59){if(_0x332d59){return _0xea66b4[_0xc021('0x1a')](_0x94c585)[_0xc021('0x1b')](_0x332d59);}};}function respondWithFilteredResult(_0x3f88d1,_0x17dcda){return function(_0x2ad3f3){if(_0x2ad3f3){var _0x38dca6=typeof _0x17dcda[_0xc021('0x1c')]==='undefined'&&typeof _0x17dcda[_0xc021('0x1d')]==='undefined';var _0x5e1964=_0x2ad3f3['count'];var _0x5d3364=_0x38dca6?0x0:_0x17dcda[_0xc021('0x1c')];var _0xf67f1c=_0x38dca6?_0x2ad3f3[_0xc021('0x1e')]:_0x17dcda['offset']+_0x17dcda[_0xc021('0x1d')];var _0x2c2e80;if(_0xf67f1c>=_0x5e1964){_0xf67f1c=_0x5e1964;_0x2c2e80=0xc8;}else{_0x2c2e80=0xce;}_0x3f88d1[_0xc021('0x1a')](_0x2c2e80);return _0x3f88d1[_0xc021('0x1f')](_0xc021('0x20'),_0x5d3364+'-'+_0xf67f1c+'/'+_0x5e1964)[_0xc021('0x1b')](_0x2ad3f3);}return null;};}function patchUpdates(_0x46de23){return function(_0x27b99c){try{jsonpatch[_0xc021('0x21')](_0x27b99c,_0x46de23,!![]);}catch(_0x415738){return BPromise['reject'](_0x415738);}return _0x27b99c[_0xc021('0x22')]();};}function saveUpdates(_0x5288da,_0x448f48){return function(_0x4e1bd0){if(_0x4e1bd0){return _0x4e1bd0[_0xc021('0x23')](_0x5288da)['then'](function(_0x1a229a){return _0x1a229a;});}return null;};}function removeEntity(_0x45dc36,_0x21a9da){return function(_0x445aa3){if(_0x445aa3){return _0x445aa3[_0xc021('0x24')]()[_0xc021('0x25')](function(){_0x45dc36['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5db36e,_0x5e5557){return function(_0x17000b){if(!_0x17000b){_0x5db36e['sendStatus'](0x194);}return _0x17000b;};}function handleError(_0x2980d6,_0x3f2571){_0x3f2571=_0x3f2571||0x1f4;return function(_0x1a6e0f){logger['error'](_0x1a6e0f[_0xc021('0x26')]);if(_0x1a6e0f[_0xc021('0x27')]){delete _0x1a6e0f[_0xc021('0x27')];}_0x2980d6[_0xc021('0x1a')](_0x3f2571)['send'](_0x1a6e0f);};}exports[_0xc021('0x28')]=function(_0x334d58,_0x8246cc){var _0x1edc42={},_0x3a9d05={},_0x55410f={'count':0x0,'rows':[]};var _0x54203c=_[_0xc021('0x29')](db[_0xc021('0x2a')][_0xc021('0x2b')],function(_0x36043a){return{'name':_0x36043a['fieldName'],'type':_0x36043a[_0xc021('0x2c')][_0xc021('0x2d')]};});_0x3a9d05['model']=_[_0xc021('0x29')](_0x54203c,'name');_0x3a9d05['query']=_[_0xc021('0x2e')](_0x334d58[_0xc021('0x2f')]);_0x3a9d05['filters']=_[_0xc021('0x30')](_0x3a9d05['model'],_0x3a9d05[_0xc021('0x2f')]);_0x1edc42[_0xc021('0x31')]=_[_0xc021('0x30')](_0x3a9d05[_0xc021('0x32')],qs['fields'](_0x334d58[_0xc021('0x2f')][_0xc021('0x33')]));_0x1edc42[_0xc021('0x31')]=_0x1edc42[_0xc021('0x31')][_0xc021('0x34')]?_0x1edc42[_0xc021('0x31')]:_0x3a9d05[_0xc021('0x32')];if(!_0x334d58[_0xc021('0x2f')]['hasOwnProperty'](_0xc021('0x35'))){_0x1edc42[_0xc021('0x1d')]=qs['limit'](_0x334d58['query'][_0xc021('0x1d')]);_0x1edc42['offset']=qs[_0xc021('0x1c')](_0x334d58[_0xc021('0x2f')]['offset']);}_0x1edc42[_0xc021('0x36')]=qs[_0xc021('0x37')](_0x334d58[_0xc021('0x2f')][_0xc021('0x37')]);_0x1edc42[_0xc021('0x38')]=qs['filters'](_[_0xc021('0x39')](_0x334d58['query'],_0x3a9d05['filters']),_0x54203c);if(_0x334d58[_0xc021('0x2f')][_0xc021('0x3a')]){_0x1edc42['where']=_['merge'](_0x1edc42['where'],{'$or':_[_0xc021('0x29')](_0x54203c,function(_0x90f135){if(_0x90f135['type']!==_0xc021('0x3b')){var _0x221dfe={};_0x221dfe[_0x90f135[_0xc021('0x27')]]={'$like':'%'+_0x334d58['query'][_0xc021('0x3a')]+'%'};return _0x221dfe;}})});}_0x1edc42=_[_0xc021('0x3c')]({},_0x1edc42,_0x334d58[_0xc021('0x3d')]);var _0x3e7158={'where':_0x1edc42[_0xc021('0x38')]};return db[_0xc021('0x2a')][_0xc021('0x1e')](_0x3e7158)[_0xc021('0x25')](function(_0x15adf1){_0x55410f[_0xc021('0x1e')]=_0x15adf1;if(_0x334d58['query']['includeAll']){_0x1edc42[_0xc021('0x3e')]=[{'all':!![]}];}return db[_0xc021('0x2a')]['findAll'](_0x1edc42);})[_0xc021('0x25')](function(_0x1bec4f){_0x55410f[_0xc021('0x3f')]=_0x1bec4f;return _0x55410f;})[_0xc021('0x25')](respondWithFilteredResult(_0x8246cc,_0x1edc42))['catch'](handleError(_0x8246cc,null));};exports[_0xc021('0x40')]=function(_0x5ad7e2,_0x4d14b5){var _0x39a676={'raw':!![],'where':{'id':_0x5ad7e2[_0xc021('0x41')]['id']}},_0x553e79={};_0x553e79[_0xc021('0x32')]=_[_0xc021('0x2e')](db[_0xc021('0x2a')][_0xc021('0x2b')]);_0x553e79[_0xc021('0x2f')]=_['keys'](_0x5ad7e2[_0xc021('0x2f')]);_0x553e79[_0xc021('0x42')]=_['intersection'](_0x553e79['model'],_0x553e79[_0xc021('0x2f')]);_0x39a676[_0xc021('0x31')]=_['intersection'](_0x553e79[_0xc021('0x32')],qs[_0xc021('0x33')](_0x5ad7e2[_0xc021('0x2f')]['fields']));_0x39a676[_0xc021('0x31')]=_0x39a676[_0xc021('0x31')][_0xc021('0x34')]?_0x39a676[_0xc021('0x31')]:_0x553e79[_0xc021('0x32')];if(_0x5ad7e2[_0xc021('0x2f')][_0xc021('0x43')]){_0x39a676[_0xc021('0x3e')]=[{'all':!![]}];}_0x39a676=_[_0xc021('0x3c')]({},_0x39a676,_0x5ad7e2['options']);return db['MailServerOut'][_0xc021('0x44')](_0x39a676)[_0xc021('0x25')](handleEntityNotFound(_0x4d14b5,null))['then'](respondWithResult(_0x4d14b5,null))[_0xc021('0x45')](handleError(_0x4d14b5,null));};exports[_0xc021('0x46')]=function(_0x5e6def,_0x59d48f){return db[_0xc021('0x2a')]['create'](_0x5e6def[_0xc021('0x47')],{})[_0xc021('0x25')](respondWithResult(_0x59d48f,0xc9))[_0xc021('0x45')](handleError(_0x59d48f,null));};exports[_0xc021('0x23')]=function(_0x48a91e,_0xc9a0ce){if(_0x48a91e[_0xc021('0x47')]['id']){delete _0x48a91e[_0xc021('0x47')]['id'];}return db[_0xc021('0x2a')][_0xc021('0x44')]({'where':{'id':_0x48a91e[_0xc021('0x41')]['id']}})[_0xc021('0x25')](handleEntityNotFound(_0xc9a0ce,null))[_0xc021('0x25')](saveUpdates(_0x48a91e[_0xc021('0x47')],null))[_0xc021('0x25')](respondWithResult(_0xc9a0ce,null))[_0xc021('0x45')](handleError(_0xc9a0ce,null));};exports['destroy']=function(_0x53c44f,_0x268dad){return db[_0xc021('0x2a')][_0xc021('0x44')]({'where':{'id':_0x53c44f['params']['id']}})[_0xc021('0x25')](handleEntityNotFound(_0x268dad,null))[_0xc021('0x25')](removeEntity(_0x268dad,null))['catch'](handleError(_0x268dad,null));};
\ No newline at end of file
index b579f94..1ba99f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c88=['MailServerOut','mail_servers_out','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define'];(function(_0x169641,_0x2ac75e){var _0x26c7b7=function(_0x24dbae){while(--_0x24dbae){_0x169641['push'](_0x169641['shift']());}};_0x26c7b7(++_0x2ac75e);}(_0x4c88,0xab));var _0x84c8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4c88[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x84c8('0x0'));var logger=require(_0x84c8('0x1'))(_0x84c8('0x2'));var moment=require(_0x84c8('0x3'));var BPromise=require(_0x84c8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x84c8('0x5'));var rimraf=require(_0x84c8('0x6'));var config=require(_0x84c8('0x7'));var attributes=require(_0x84c8('0x8'));module[_0x84c8('0x9')]=function(_0x2226c6,_0x361665){return _0x2226c6[_0x84c8('0xa')](_0x84c8('0xb'),attributes,{'tableName':_0x84c8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc448=['exports','define','MailServerOut','mail_servers_out','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x528fa3,_0x3c8282){var _0x5a3760=function(_0x7248db){while(--_0x7248db){_0x528fa3['push'](_0x528fa3['shift']());}};_0x5a3760(++_0x3c8282);}(_0xc448,0x1c0));var _0x8c44=function(_0x50d97c,_0x8b5719){_0x50d97c=_0x50d97c-0x0;var _0x23ac94=_0xc448[_0x50d97c];return _0x23ac94;};'use strict';var _=require(_0x8c44('0x0'));var util=require(_0x8c44('0x1'));var logger=require(_0x8c44('0x2'))(_0x8c44('0x3'));var moment=require('moment');var BPromise=require(_0x8c44('0x4'));var rp=require(_0x8c44('0x5'));var fs=require('fs');var path=require(_0x8c44('0x6'));var rimraf=require(_0x8c44('0x7'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module[_0x8c44('0x8')]=function(_0x4aa129,_0x1f5033){return _0x4aa129[_0x8c44('0x9')](_0x8c44('0xa'),attributes,{'tableName':_0x8c44('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 991b0de..8152232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x9e76d2,_0xa625a){var _0x1f4df7=function(_0x2341db){while(--_0x2341db){_0x9e76d2['push'](_0x9e76d2['shift']());}};_0x1f4df7(++_0xa625a);}(_0x1261,0x144));var _0x1126=function(_0x32be62,_0x22e6fd){_0x32be62=_0x32be62-0x0;var _0x1a37e9=_0x1261[_0x32be62];return _0x1a37e9;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x123643,_0x582230){var _0x1c9095=function(_0x41ae0f){while(--_0x41ae0f){_0x123643['push'](_0x123643['shift']());}};_0x1c9095(++_0x582230);}(_0x5f2f,0x73));var _0xf5f2=function(_0xa267d7,_0x138e2b){_0xa267d7=_0xa267d7-0x0;var _0x5466da=_0x5f2f[_0xa267d7];return _0x5466da;};'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')]('MailServerOut,\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
index 5a1b0e7..f138a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x460e=['create','put','delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','/describe','/:id','show','post'];(function(_0x1e1c8a,_0xd1d956){var _0x3ede0f=function(_0x29abb6){while(--_0x29abb6){_0x1e1c8a['push'](_0x1e1c8a['shift']());}};_0x3ede0f(++_0xd1d956);}(_0x460e,0xd5));var _0xe460=function(_0x53f37f,_0xfb0b18){_0x53f37f=_0x53f37f-0x0;var _0x2fe5f8=_0x460e[_0x53f37f];return _0x2fe5f8;};'use strict';var multer=require(_0xe460('0x0'));var util=require(_0xe460('0x1'));var path=require(_0xe460('0x2'));var timeout=require(_0xe460('0x3'));var express=require('express');var router=express[_0xe460('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe460('0x5'));var interaction=require(_0xe460('0x6'));var config=require(_0xe460('0x7'));var controller=require(_0xe460('0x8'));router[_0xe460('0x9')]('/',auth[_0xe460('0xa')](),controller['index']);router[_0xe460('0x9')](_0xe460('0xb'),auth[_0xe460('0xa')](),controller['describe']);router[_0xe460('0x9')](_0xe460('0xc'),auth[_0xe460('0xa')](),controller[_0xe460('0xd')]);router[_0xe460('0xe')]('/',auth[_0xe460('0xa')](),controller[_0xe460('0xf')]);router[_0xe460('0x10')](_0xe460('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xe460('0x11')]('/:id',auth[_0xe460('0xa')](),controller['destroy']);module[_0xe460('0x12')]=router;
\ No newline at end of file
+var _0xf1bc=['../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','index','/describe','describe','isAuthenticated','post','create','/:id','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x48882d,_0x5d1914){var _0x28af55=function(_0x234420){while(--_0x234420){_0x48882d['push'](_0x48882d['shift']());}};_0x28af55(++_0x5d1914);}(_0xf1bc,0x19d));var _0xcf1b=function(_0x236097,_0x577550){_0x236097=_0x236097-0x0;var _0x2fca46=_0xf1bc[_0x236097];return _0x2fca46;};'use strict';var multer=require(_0xcf1b('0x0'));var util=require(_0xcf1b('0x1'));var path=require(_0xcf1b('0x2'));var timeout=require('connect-timeout');var express=require(_0xcf1b('0x3'));var router=express[_0xcf1b('0x4')]();var fs_extra=require(_0xcf1b('0x5'));var auth=require(_0xcf1b('0x6'));var interaction=require(_0xcf1b('0x7'));var config=require(_0xcf1b('0x8'));var controller=require(_0xcf1b('0x9'));router[_0xcf1b('0xa')]('/',auth['isAuthenticated'](),controller[_0xcf1b('0xb')]);router[_0xcf1b('0xa')](_0xcf1b('0xc'),auth['isAuthenticated'](),controller[_0xcf1b('0xd')]);router[_0xcf1b('0xa')]('/:id',auth[_0xcf1b('0xe')](),controller['show']);router[_0xcf1b('0xf')]('/',auth['isAuthenticated'](),controller[_0xcf1b('0x10')]);router['put'](_0xcf1b('0x11'),auth['isAuthenticated'](),controller[_0xcf1b('0x12')]);router['delete'](_0xcf1b('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0xcf1b('0x13')]=router;
\ No newline at end of file
index 537075f..4e0fe52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['STRING','name','exports'];(function(_0x72f2a,_0x5c709a){var _0x4e76f0=function(_0x23e10c){while(--_0x23e10c){_0x72f2a['push'](_0x72f2a['shift']());}};_0x4e76f0(++_0x5c709a);}(_0x27a0,0xbf));var _0x027a=function(_0x3484d9,_0x4ec117){_0x3484d9=_0x3484d9-0x0;var _0x2b5aad=_0x27a0[_0x3484d9];return _0x2b5aad;};'use strict';var Sequelize=require('sequelize');module[_0x027a('0x0')]={'name':{'type':Sequelize[_0x027a('0x1')],'unique':_0x027a('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x027a('0x1')]}};
\ No newline at end of file
+var _0x3e24=['exports','STRING','name','sequelize'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x3e24,0x167));var _0x43e2=function(_0x11b547,_0x5c83eb){_0x11b547=_0x11b547-0x0;var _0x4253c4=_0x3e24[_0x11b547];return _0x4253c4;};'use strict';var Sequelize=require(_0x43e2('0x0'));module[_0x43e2('0x1')]={'name':{'type':Sequelize[_0x43e2('0x2')],'unique':_0x43e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x43e2('0x2')]}};
\ No newline at end of file
index 79786ac..77e9faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15cb=['options','MailSubstatus','includeAll','include','catch','params','rawAttributes','length','find','create','body','describe','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/license/util','status','json','undefined','count','offset','Content-Range','apply','reject','save','update','then','end','sendStatus','error','stack','name','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','filter','where','merge','VIRTUAL'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x15cb,0x180));var _0xb15c=function(_0x48dc34,_0x421018){_0x48dc34=_0x48dc34-0x0;var _0xafd08a=_0x15cb[_0x48dc34];return _0xafd08a;};'use strict';var emlformat=require(_0xb15c('0x0'));var rimraf=require(_0xb15c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb15c('0x2'));var Mustache=require(_0xb15c('0x3'));var util=require(_0xb15c('0x4'));var path=require(_0xb15c('0x5'));var sox=require(_0xb15c('0x6'));var csv=require(_0xb15c('0x7'));var ejs=require(_0xb15c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb15c('0x9'));var squel=require(_0xb15c('0xa'));var crypto=require(_0xb15c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb15c('0xc'));var toCsv=require(_0xb15c('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb15c('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xb15c('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb15c('0xf'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb15c('0x10'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xec0b4d,_0x1f06e0){_0x1f06e0=_0x1f06e0||0xcc;return function(_0x5b2a30){if(_0x5b2a30){return _0xec0b4d['sendStatus'](_0x1f06e0);}return _0xec0b4d[_0xb15c('0x11')](_0x1f06e0)['end']();};}function respondWithResult(_0x35c4cf,_0x5be28b){_0x5be28b=_0x5be28b||0xc8;return function(_0x149de1){if(_0x149de1){return _0x35c4cf['status'](_0x5be28b)[_0xb15c('0x12')](_0x149de1);}};}function respondWithFilteredResult(_0x55eaaf,_0xb9c89b){return function(_0x51e0fb){if(_0x51e0fb){var _0x21e353=typeof _0xb9c89b['offset']===_0xb15c('0x13')&&typeof _0xb9c89b['limit']===_0xb15c('0x13');var _0x2d1d0f=_0x51e0fb[_0xb15c('0x14')];var _0x40ce6c=_0x21e353?0x0:_0xb9c89b[_0xb15c('0x15')];var _0x4bdd59=_0x21e353?_0x51e0fb['count']:_0xb9c89b[_0xb15c('0x15')]+_0xb9c89b['limit'];var _0x4499ca;if(_0x4bdd59>=_0x2d1d0f){_0x4bdd59=_0x2d1d0f;_0x4499ca=0xc8;}else{_0x4499ca=0xce;}_0x55eaaf[_0xb15c('0x11')](_0x4499ca);return _0x55eaaf['set'](_0xb15c('0x16'),_0x40ce6c+'-'+_0x4bdd59+'/'+_0x2d1d0f)[_0xb15c('0x12')](_0x51e0fb);}return null;};}function patchUpdates(_0x57392b){return function(_0x310399){try{jsonpatch[_0xb15c('0x17')](_0x310399,_0x57392b,!![]);}catch(_0x2217a2){return BPromise[_0xb15c('0x18')](_0x2217a2);}return _0x310399[_0xb15c('0x19')]();};}function saveUpdates(_0x5d9bd2,_0x5e4253){return function(_0x345025){if(_0x345025){return _0x345025[_0xb15c('0x1a')](_0x5d9bd2)[_0xb15c('0x1b')](function(_0x1a2ef1){return _0x1a2ef1;});}return null;};}function removeEntity(_0x490823,_0x4819da){return function(_0x2cab96){if(_0x2cab96){return _0x2cab96['destroy']()[_0xb15c('0x1b')](function(){_0x490823['status'](0xcc)[_0xb15c('0x1c')]();});}};}function handleEntityNotFound(_0x145961,_0x2a9468){return function(_0x2cf0c9){if(!_0x2cf0c9){_0x145961[_0xb15c('0x1d')](0x194);}return _0x2cf0c9;};}function handleError(_0x567ad7,_0x1d8c7c){_0x1d8c7c=_0x1d8c7c||0x1f4;return function(_0x2dd83a){logger[_0xb15c('0x1e')](_0x2dd83a[_0xb15c('0x1f')]);if(_0x2dd83a['name']){delete _0x2dd83a[_0xb15c('0x20')];}_0x567ad7[_0xb15c('0x11')](_0x1d8c7c)['send'](_0x2dd83a);};}exports['index']=function(_0x77725f,_0x3ef03d){var _0x335da2={},_0x4c88ac={},_0x23db30={'count':0x0,'rows':[]};var _0x214880=_[_0xb15c('0x21')](db['MailSubstatus']['rawAttributes'],function(_0x4d3980){return{'name':_0x4d3980[_0xb15c('0x22')],'type':_0x4d3980[_0xb15c('0x23')][_0xb15c('0x24')]};});_0x4c88ac[_0xb15c('0x25')]=_[_0xb15c('0x21')](_0x214880,_0xb15c('0x20'));_0x4c88ac[_0xb15c('0x26')]=_[_0xb15c('0x27')](_0x77725f[_0xb15c('0x26')]);_0x4c88ac[_0xb15c('0x28')]=_[_0xb15c('0x29')](_0x4c88ac[_0xb15c('0x25')],_0x4c88ac['query']);_0x335da2[_0xb15c('0x2a')]=_[_0xb15c('0x29')](_0x4c88ac['model'],qs['fields'](_0x77725f['query'][_0xb15c('0x2b')]));_0x335da2['attributes']=_0x335da2[_0xb15c('0x2a')]['length']?_0x335da2[_0xb15c('0x2a')]:_0x4c88ac[_0xb15c('0x25')];if(!_0x77725f[_0xb15c('0x26')][_0xb15c('0x2c')]('nolimit')){_0x335da2[_0xb15c('0x2d')]=qs[_0xb15c('0x2d')](_0x77725f['query']['limit']);_0x335da2[_0xb15c('0x15')]=qs['offset'](_0x77725f[_0xb15c('0x26')][_0xb15c('0x15')]);}_0x335da2['order']=qs['sort'](_0x77725f[_0xb15c('0x26')]['sort']);_0x335da2['where']=qs[_0xb15c('0x28')](_['pick'](_0x77725f[_0xb15c('0x26')],_0x4c88ac[_0xb15c('0x28')]),_0x214880);if(_0x77725f[_0xb15c('0x26')][_0xb15c('0x2e')]){_0x335da2[_0xb15c('0x2f')]=_[_0xb15c('0x30')](_0x335da2[_0xb15c('0x2f')],{'$or':_[_0xb15c('0x21')](_0x214880,function(_0x62530a){if(_0x62530a['type']!==_0xb15c('0x31')){var _0x561168={};_0x561168[_0x62530a[_0xb15c('0x20')]]={'$like':'%'+_0x77725f[_0xb15c('0x26')][_0xb15c('0x2e')]+'%'};return _0x561168;}})});}_0x335da2=_[_0xb15c('0x30')]({},_0x335da2,_0x77725f[_0xb15c('0x32')]);var _0x3597bd={'where':_0x335da2[_0xb15c('0x2f')]};return db[_0xb15c('0x33')][_0xb15c('0x14')](_0x3597bd)[_0xb15c('0x1b')](function(_0x355528){_0x23db30[_0xb15c('0x14')]=_0x355528;if(_0x77725f[_0xb15c('0x26')][_0xb15c('0x34')]){_0x335da2[_0xb15c('0x35')]=[{'all':!![]}];}return db[_0xb15c('0x33')]['findAll'](_0x335da2);})[_0xb15c('0x1b')](function(_0x16ed71){_0x23db30['rows']=_0x16ed71;return _0x23db30;})[_0xb15c('0x1b')](respondWithFilteredResult(_0x3ef03d,_0x335da2))[_0xb15c('0x36')](handleError(_0x3ef03d,null));};exports['show']=function(_0x586ef9,_0x352077){var _0x202931={'raw':!![],'where':{'id':_0x586ef9[_0xb15c('0x37')]['id']}},_0x4c8127={};_0x4c8127[_0xb15c('0x25')]=_[_0xb15c('0x27')](db[_0xb15c('0x33')][_0xb15c('0x38')]);_0x4c8127[_0xb15c('0x26')]=_['keys'](_0x586ef9[_0xb15c('0x26')]);_0x4c8127[_0xb15c('0x28')]=_['intersection'](_0x4c8127['model'],_0x4c8127[_0xb15c('0x26')]);_0x202931[_0xb15c('0x2a')]=_['intersection'](_0x4c8127['model'],qs[_0xb15c('0x2b')](_0x586ef9['query'][_0xb15c('0x2b')]));_0x202931[_0xb15c('0x2a')]=_0x202931[_0xb15c('0x2a')][_0xb15c('0x39')]?_0x202931['attributes']:_0x4c8127[_0xb15c('0x25')];if(_0x586ef9[_0xb15c('0x26')]['includeAll']){_0x202931['include']=[{'all':!![]}];}_0x202931=_['merge']({},_0x202931,_0x586ef9[_0xb15c('0x32')]);return db[_0xb15c('0x33')][_0xb15c('0x3a')](_0x202931)['then'](handleEntityNotFound(_0x352077,null))[_0xb15c('0x1b')](respondWithResult(_0x352077,null))[_0xb15c('0x36')](handleError(_0x352077,null));};exports[_0xb15c('0x3b')]=function(_0xd3ebb9,_0x3d543a){return db['MailSubstatus'][_0xb15c('0x3b')](_0xd3ebb9[_0xb15c('0x3c')],{})[_0xb15c('0x1b')](respondWithResult(_0x3d543a,0xc9))[_0xb15c('0x36')](handleError(_0x3d543a,null));};exports[_0xb15c('0x1a')]=function(_0x5ba21c,_0x1bed3b){if(_0x5ba21c[_0xb15c('0x3c')]['id']){delete _0x5ba21c[_0xb15c('0x3c')]['id'];}return db[_0xb15c('0x33')][_0xb15c('0x3a')]({'where':{'id':_0x5ba21c[_0xb15c('0x37')]['id']}})[_0xb15c('0x1b')](handleEntityNotFound(_0x1bed3b,null))[_0xb15c('0x1b')](saveUpdates(_0x5ba21c[_0xb15c('0x3c')],null))[_0xb15c('0x1b')](respondWithResult(_0x1bed3b,null))[_0xb15c('0x36')](handleError(_0x1bed3b,null));};exports['destroy']=function(_0x12cb58,_0x36777b){return db[_0xb15c('0x33')][_0xb15c('0x3a')]({'where':{'id':_0x12cb58[_0xb15c('0x37')]['id']}})['then'](handleEntityNotFound(_0x36777b,null))[_0xb15c('0x1b')](removeEntity(_0x36777b,null))[_0xb15c('0x36')](handleError(_0x36777b,null));};exports['describe']=function(_0x2e2ab6,_0xcbf180){return db[_0xb15c('0x33')][_0xb15c('0x3d')]()[_0xb15c('0x1b')](respondWithResult(_0xcbf180,null))[_0xb15c('0x36')](handleError(_0xcbf180,null));};
\ No newline at end of file
+var _0xe076=['status','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','MailSubstatus','rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','fields','model','hasOwnProperty','order','where','pick','merge','map','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','ejs','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset'];(function(_0x10a1a3,_0x222c54){var _0x1d3a6a=function(_0x38a493){while(--_0x38a493){_0x10a1a3['push'](_0x10a1a3['shift']());}};_0x1d3a6a(++_0x222c54);}(_0xe076,0x143));var _0x6e07=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xe076[_0x4ea69d];return _0x5318e0;};'use strict';var emlformat=require(_0x6e07('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6e07('0x1'));var jsonpatch=require(_0x6e07('0x2'));var rp=require(_0x6e07('0x3'));var moment=require(_0x6e07('0x4'));var BPromise=require(_0x6e07('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x6e07('0x6'));var csv=require('to-csv');var ejs=require(_0x6e07('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x6e07('0x8'));var jsforce=require(_0x6e07('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6e07('0xa'));var authService=require(_0x6e07('0xb'));var qs=require(_0x6e07('0xc'));var as=require(_0x6e07('0xd'));var hardwareService=require(_0x6e07('0xe'));var logger=require(_0x6e07('0xf'))(_0x6e07('0x10'));var utils=require(_0x6e07('0x11'));var config=require(_0x6e07('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x6e07('0x13'))['db'];function respondWithStatusCode(_0x391ec1,_0xe38aab){_0xe38aab=_0xe38aab||0xcc;return function(_0x3cf03e){if(_0x3cf03e){return _0x391ec1[_0x6e07('0x14')](_0xe38aab);}return _0x391ec1['status'](_0xe38aab)[_0x6e07('0x15')]();};}function respondWithResult(_0xc06a6,_0x51743c){_0x51743c=_0x51743c||0xc8;return function(_0x5165c7){if(_0x5165c7){return _0xc06a6['status'](_0x51743c)[_0x6e07('0x16')](_0x5165c7);}};}function respondWithFilteredResult(_0x5ee496,_0xc81f63){return function(_0x3dbd0b){if(_0x3dbd0b){var _0x18093a=typeof _0xc81f63['offset']===_0x6e07('0x17')&&typeof _0xc81f63[_0x6e07('0x18')]==='undefined';var _0x3dbcb8=_0x3dbd0b['count'];var _0x1c4cde=_0x18093a?0x0:_0xc81f63['offset'];var _0x28c6dd=_0x18093a?_0x3dbd0b[_0x6e07('0x19')]:_0xc81f63[_0x6e07('0x1a')]+_0xc81f63['limit'];var _0x158339;if(_0x28c6dd>=_0x3dbcb8){_0x28c6dd=_0x3dbcb8;_0x158339=0xc8;}else{_0x158339=0xce;}_0x5ee496[_0x6e07('0x1b')](_0x158339);return _0x5ee496[_0x6e07('0x1c')](_0x6e07('0x1d'),_0x1c4cde+'-'+_0x28c6dd+'/'+_0x3dbcb8)['json'](_0x3dbd0b);}return null;};}function patchUpdates(_0x507ce1){return function(_0x300d73){try{jsonpatch['apply'](_0x300d73,_0x507ce1,!![]);}catch(_0x5cbf98){return BPromise[_0x6e07('0x1e')](_0x5cbf98);}return _0x300d73[_0x6e07('0x1f')]();};}function saveUpdates(_0x19afd4,_0x451e25){return function(_0x2d4b30){if(_0x2d4b30){return _0x2d4b30[_0x6e07('0x20')](_0x19afd4)[_0x6e07('0x21')](function(_0xe03b83){return _0xe03b83;});}return null;};}function removeEntity(_0x22aa3b,_0x234d7e){return function(_0x70a864){if(_0x70a864){return _0x70a864[_0x6e07('0x22')]()[_0x6e07('0x21')](function(){_0x22aa3b[_0x6e07('0x1b')](0xcc)[_0x6e07('0x15')]();});}};}function handleEntityNotFound(_0x207500,_0x56bc69){return function(_0x49bc56){if(!_0x49bc56){_0x207500[_0x6e07('0x14')](0x194);}return _0x49bc56;};}function handleError(_0x4a2a05,_0x579aa6){_0x579aa6=_0x579aa6||0x1f4;return function(_0x25291a){logger[_0x6e07('0x23')](_0x25291a['stack']);if(_0x25291a[_0x6e07('0x24')]){delete _0x25291a[_0x6e07('0x24')];}_0x4a2a05[_0x6e07('0x1b')](_0x579aa6)[_0x6e07('0x25')](_0x25291a);};}exports[_0x6e07('0x26')]=function(_0x512646,_0x4643ff){var _0x3d7446={},_0x3b5ce2={},_0x1ce1c5={'count':0x0,'rows':[]};var _0x5cc3d0=_['map'](db[_0x6e07('0x27')][_0x6e07('0x28')],function(_0x26e7db){return{'name':_0x26e7db[_0x6e07('0x29')],'type':_0x26e7db['type'][_0x6e07('0x2a')]};});_0x3b5ce2['model']=_['map'](_0x5cc3d0,'name');_0x3b5ce2[_0x6e07('0x2b')]=_[_0x6e07('0x2c')](_0x512646[_0x6e07('0x2b')]);_0x3b5ce2[_0x6e07('0x2d')]=_[_0x6e07('0x2e')](_0x3b5ce2['model'],_0x3b5ce2['query']);_0x3d7446[_0x6e07('0x2f')]=_[_0x6e07('0x2e')](_0x3b5ce2['model'],qs[_0x6e07('0x30')](_0x512646[_0x6e07('0x2b')]['fields']));_0x3d7446[_0x6e07('0x2f')]=_0x3d7446['attributes']['length']?_0x3d7446[_0x6e07('0x2f')]:_0x3b5ce2[_0x6e07('0x31')];if(!_0x512646[_0x6e07('0x2b')][_0x6e07('0x32')]('nolimit')){_0x3d7446[_0x6e07('0x18')]=qs[_0x6e07('0x18')](_0x512646['query']['limit']);_0x3d7446['offset']=qs[_0x6e07('0x1a')](_0x512646[_0x6e07('0x2b')][_0x6e07('0x1a')]);}_0x3d7446[_0x6e07('0x33')]=qs['sort'](_0x512646[_0x6e07('0x2b')]['sort']);_0x3d7446[_0x6e07('0x34')]=qs['filters'](_[_0x6e07('0x35')](_0x512646['query'],_0x3b5ce2['filters']),_0x5cc3d0);if(_0x512646[_0x6e07('0x2b')]['filter']){_0x3d7446[_0x6e07('0x34')]=_[_0x6e07('0x36')](_0x3d7446[_0x6e07('0x34')],{'$or':_[_0x6e07('0x37')](_0x5cc3d0,function(_0x5849ac){if(_0x5849ac[_0x6e07('0x38')]!==_0x6e07('0x39')){var _0x5e9625={};_0x5e9625[_0x5849ac[_0x6e07('0x24')]]={'$like':'%'+_0x512646[_0x6e07('0x2b')][_0x6e07('0x3a')]+'%'};return _0x5e9625;}})});}_0x3d7446=_[_0x6e07('0x36')]({},_0x3d7446,_0x512646[_0x6e07('0x3b')]);var _0x40ea51={'where':_0x3d7446[_0x6e07('0x34')]};return db[_0x6e07('0x27')]['count'](_0x40ea51)[_0x6e07('0x21')](function(_0xa98d29){_0x1ce1c5[_0x6e07('0x19')]=_0xa98d29;if(_0x512646[_0x6e07('0x2b')][_0x6e07('0x3c')]){_0x3d7446[_0x6e07('0x3d')]=[{'all':!![]}];}return db[_0x6e07('0x27')][_0x6e07('0x3e')](_0x3d7446);})[_0x6e07('0x21')](function(_0x118a05){_0x1ce1c5['rows']=_0x118a05;return _0x1ce1c5;})['then'](respondWithFilteredResult(_0x4643ff,_0x3d7446))[_0x6e07('0x3f')](handleError(_0x4643ff,null));};exports[_0x6e07('0x40')]=function(_0x59bb70,_0x1aa463){var _0x4e1f97={'raw':!![],'where':{'id':_0x59bb70[_0x6e07('0x41')]['id']}},_0x3996a0={};_0x3996a0[_0x6e07('0x31')]=_[_0x6e07('0x2c')](db[_0x6e07('0x27')][_0x6e07('0x28')]);_0x3996a0[_0x6e07('0x2b')]=_[_0x6e07('0x2c')](_0x59bb70[_0x6e07('0x2b')]);_0x3996a0[_0x6e07('0x2d')]=_[_0x6e07('0x2e')](_0x3996a0[_0x6e07('0x31')],_0x3996a0[_0x6e07('0x2b')]);_0x4e1f97[_0x6e07('0x2f')]=_['intersection'](_0x3996a0[_0x6e07('0x31')],qs[_0x6e07('0x30')](_0x59bb70[_0x6e07('0x2b')][_0x6e07('0x30')]));_0x4e1f97[_0x6e07('0x2f')]=_0x4e1f97[_0x6e07('0x2f')]['length']?_0x4e1f97[_0x6e07('0x2f')]:_0x3996a0['model'];if(_0x59bb70[_0x6e07('0x2b')][_0x6e07('0x3c')]){_0x4e1f97[_0x6e07('0x3d')]=[{'all':!![]}];}_0x4e1f97=_[_0x6e07('0x36')]({},_0x4e1f97,_0x59bb70[_0x6e07('0x3b')]);return db['MailSubstatus'][_0x6e07('0x42')](_0x4e1f97)[_0x6e07('0x21')](handleEntityNotFound(_0x1aa463,null))[_0x6e07('0x21')](respondWithResult(_0x1aa463,null))[_0x6e07('0x3f')](handleError(_0x1aa463,null));};exports[_0x6e07('0x43')]=function(_0x10d0ec,_0x1d967c){return db[_0x6e07('0x27')][_0x6e07('0x43')](_0x10d0ec[_0x6e07('0x44')],{})[_0x6e07('0x21')](respondWithResult(_0x1d967c,0xc9))['catch'](handleError(_0x1d967c,null));};exports[_0x6e07('0x20')]=function(_0x47dc23,_0x65b696){if(_0x47dc23[_0x6e07('0x44')]['id']){delete _0x47dc23['body']['id'];}return db[_0x6e07('0x27')][_0x6e07('0x42')]({'where':{'id':_0x47dc23['params']['id']}})['then'](handleEntityNotFound(_0x65b696,null))[_0x6e07('0x21')](saveUpdates(_0x47dc23[_0x6e07('0x44')],null))['then'](respondWithResult(_0x65b696,null))[_0x6e07('0x3f')](handleError(_0x65b696,null));};exports['destroy']=function(_0x5571c7,_0x278201){return db[_0x6e07('0x27')][_0x6e07('0x42')]({'where':{'id':_0x5571c7['params']['id']}})[_0x6e07('0x21')](handleEntityNotFound(_0x278201,null))[_0x6e07('0x21')](removeEntity(_0x278201,null))[_0x6e07('0x3f')](handleError(_0x278201,null));};exports[_0x6e07('0x45')]=function(_0x6ae1d3,_0x2518e5){return db[_0x6e07('0x27')][_0x6e07('0x45')]()[_0x6e07('0x21')](respondWithResult(_0x2518e5,null))[_0x6e07('0x3f')](handleError(_0x2518e5,null));};
\ No newline at end of file
index 1d20576..5fda6c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2be=['../../mysqldb','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty','hook','events'];(function(_0x183e3c,_0x1b150b){var _0xfe23c7=function(_0x1576e3){while(--_0x1576e3){_0x183e3c['push'](_0x183e3c['shift']());}};_0xfe23c7(++_0x1b150b);}(_0xb2be,0x11f));var _0xeb2b=function(_0x42f270,_0x452dec){_0x42f270=_0x42f270-0x0;var _0x57bc5b=_0xb2be[_0x42f270];return _0x57bc5b;};'use strict';var EventEmitter=require(_0xeb2b('0x0'));var MailSubstatus=require(_0xeb2b('0x1'))['db'][_0xeb2b('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xeb2b('0x3')](0x0);var events={'afterUpdate':_0xeb2b('0x4')};function emitEvent(_0x2e0e30){return function(_0x47a25c,_0x1d6b56,_0x25c5d9){MailSubstatusEvents['emit'](_0x2e0e30+':'+_0x47a25c['id'],_0x47a25c);MailSubstatusEvents[_0xeb2b('0x5')](_0x2e0e30,_0x47a25c);_0x25c5d9(null);};}for(var e in events){if(events[_0xeb2b('0x6')](e)){var event=events[e];MailSubstatus[_0xeb2b('0x7')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0x3f69=['update','emit','hasOwnProperty','../../mysqldb','MailSubstatus','setMaxListeners'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x3f69,0xcf));var _0x93f6=function(_0x4e6c42,_0x2caaee){_0x4e6c42=_0x4e6c42-0x0;var _0x22d10b=_0x3f69[_0x4e6c42];return _0x22d10b;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x93f6('0x0'))['db'][_0x93f6('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x93f6('0x2')](0x0);var events={'afterUpdate':_0x93f6('0x3')};function emitEvent(_0x3bd835){return function(_0x25129a,_0x3923ff,_0x32d2b7){MailSubstatusEvents[_0x93f6('0x4')](_0x3bd835+':'+_0x25129a['id'],_0x25129a);MailSubstatusEvents[_0x93f6('0x4')](_0x3bd835,_0x25129a);_0x32d2b7(null);};}for(var e in events){if(events[_0x93f6('0x5')](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
index 152467c..bab9354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aba=['Condition','update','name','mailSubstatus','_previousDataValues','exports','models','MailSubstatus','mail_substatuses'];(function(_0x2b4d58,_0x4d2cc1){var _0x415305=function(_0x414bd9){while(--_0x414bd9){_0x2b4d58['push'](_0x2b4d58['shift']());}};_0x415305(++_0x4d2cc1);}(_0x6aba,0x83));var _0xa6ab=function(_0x405b7a,_0x46a78b){_0x405b7a=_0x405b7a-0x0;var _0x4b48b5=_0x6aba[_0x405b7a];return _0x4b48b5;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0xa6ab('0x0')]=function(_0x1f3508){var _0x9f2ac8=_0x1f3508[_0xa6ab('0x1')];return _0x1f3508['define'](_0xa6ab('0x2'),attributes,{'tableName':_0xa6ab('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3b7aaa,_0x3664f6,_0x196dbf){return _0x9f2ac8[_0xa6ab('0x4')][_0xa6ab('0x5')]({'value':_0x3b7aaa[_0xa6ab('0x6')]},{'where':{'field':_0xa6ab('0x7'),'value':_0x3b7aaa[_0xa6ab('0x8')]['name']}})['then'](function(){_0x196dbf();})['catch'](function(_0x56b8b3){_0x196dbf(_0x56b8b3);});}}});};
\ No newline at end of file
+var _0xcff9=['catch','./mailSubstatus.attributes','exports','define','Condition','update','name'];(function(_0x172006,_0x5cca46){var _0x2802dc=function(_0x4a238f){while(--_0x4a238f){_0x172006['push'](_0x172006['shift']());}};_0x2802dc(++_0x5cca46);}(_0xcff9,0x120));var _0x9cff=function(_0x4ae3ed,_0x3aafd7){_0x4ae3ed=_0x4ae3ed-0x0;var _0x170b90=_0xcff9[_0x4ae3ed];return _0x170b90;};'use strict';var attributes=require(_0x9cff('0x0'));module[_0x9cff('0x1')]=function(_0xe0dfe5){var _0x56f6b4=_0xe0dfe5['models'];return _0xe0dfe5[_0x9cff('0x2')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x415aa2,_0x585544,_0x675d89){return _0x56f6b4[_0x9cff('0x3')][_0x9cff('0x4')]({'value':_0x415aa2['name']},{'where':{'field':'mailSubstatus','value':_0x415aa2['_previousDataValues'][_0x9cff('0x5')]}})['then'](function(){_0x675d89();})[_0x9cff('0x6')](function(_0x5236c4){_0x675d89(_0x5236c4);});}}});};
\ No newline at end of file
index 959936d..fb292c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61de=['error','code','message','MailSubstatus,\x20%s,\x20%s','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x395c1d,_0x1a4d75){var _0x1d4372=function(_0x46f3c5){while(--_0x46f3c5){_0x395c1d['push'](_0x395c1d['shift']());}};_0x1d4372(++_0x1a4d75);}(_0x61de,0x18c));var _0xe61d=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x61de[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0xe61d('0x0'));var util=require(_0xe61d('0x1'));var moment=require(_0xe61d('0x2'));var BPromise=require(_0xe61d('0x3'));var rs=require(_0xe61d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe61d('0x5'));var logger=require(_0xe61d('0x6'))(_0xe61d('0x7'));var config=require(_0xe61d('0x8'));var jayson=require(_0xe61d('0x9'));var client=jayson[_0xe61d('0xa')][_0xe61d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x388d3d,_0x2e5708,_0x15315c){return new BPromise(function(_0x293a84,_0x4da4ac){return client['request'](_0x388d3d,_0x15315c)[_0xe61d('0xc')](function(_0x439f6c){logger[_0xe61d('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x2e5708,_0xe61d('0xe'));logger[_0xe61d('0xf')](_0xe61d('0x10'),_0x2e5708,_0xe61d('0xe'),JSON[_0xe61d('0x11')](_0x439f6c));if(_0x439f6c['error']){if(_0x439f6c[_0xe61d('0x12')][_0xe61d('0x13')]===0x1f4){logger[_0xe61d('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x2e5708,_0x439f6c[_0xe61d('0x12')][_0xe61d('0x14')]);return _0x4da4ac(_0x439f6c[_0xe61d('0x12')][_0xe61d('0x14')]);}logger['error'](_0xe61d('0x15'),_0x2e5708,_0x439f6c[_0xe61d('0x12')][_0xe61d('0x14')]);return _0x293a84(_0x439f6c[_0xe61d('0x12')][_0xe61d('0x14')]);}else{logger['info']('MailSubstatus,\x20%s,\x20%s',_0x2e5708,_0xe61d('0xe'));_0x293a84(_0x439f6c['result']['message']);}})[_0xe61d('0x16')](function(_0x288d20){logger[_0xe61d('0x12')](_0xe61d('0x15'),_0x2e5708,_0x288d20);_0x4da4ac(_0x288d20);});});}
\ No newline at end of file
+var _0x9005=['../../config/logger','rpc','jayson/promise','client','MailSubstatus,\x20%s,\x20%s','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x11f85e,_0x4dea4a){var _0x183de1=function(_0x1ec744){while(--_0x1ec744){_0x11f85e['push'](_0x11f85e['shift']());}};_0x183de1(++_0x4dea4a);}(_0x9005,0x1bc));var _0x5900=function(_0x2c86e0,_0x5a3dac){_0x2c86e0=_0x2c86e0-0x0;var _0x10aa30=_0x9005[_0x2c86e0];return _0x10aa30;};'use strict';var _=require('lodash');var util=require(_0x5900('0x0'));var moment=require('moment');var BPromise=require(_0x5900('0x1'));var rs=require(_0x5900('0x2'));var fs=require('fs');var Redis=require(_0x5900('0x3'));var db=require(_0x5900('0x4'))['db'];var utils=require(_0x5900('0x5'));var logger=require(_0x5900('0x6'))(_0x5900('0x7'));var config=require('../../config/environment');var jayson=require(_0x5900('0x8'));var client=jayson[_0x5900('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d9027,_0x4e09a2,_0x5e45e4){return new BPromise(function(_0x24495b,_0x3efd6a){return client['request'](_0x5d9027,_0x5e45e4)['then'](function(_0x819c70){logger['info'](_0x5900('0xa'),_0x4e09a2,'request\x20sent');logger['debug'](_0x5900('0xb'),_0x4e09a2,_0x5900('0xc'),JSON['stringify'](_0x819c70));if(_0x819c70[_0x5900('0xd')]){if(_0x819c70[_0x5900('0xd')][_0x5900('0xe')]===0x1f4){logger[_0x5900('0xd')](_0x5900('0xa'),_0x4e09a2,_0x819c70[_0x5900('0xd')][_0x5900('0xf')]);return _0x3efd6a(_0x819c70[_0x5900('0xd')][_0x5900('0xf')]);}logger['error'](_0x5900('0xa'),_0x4e09a2,_0x819c70[_0x5900('0xd')][_0x5900('0xf')]);return _0x24495b(_0x819c70[_0x5900('0xd')]['message']);}else{logger[_0x5900('0x10')](_0x5900('0xa'),_0x4e09a2,'request\x20sent');_0x24495b(_0x819c70['result'][_0x5900('0xf')]);}})[_0x5900('0x11')](function(_0x5585f3){logger[_0x5900('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x4e09a2,_0x5585f3);_0x3efd6a(_0x5585f3);});});}
\ No newline at end of file
index 4d40703..38faf04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7527=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x16c808,_0x6ff35e){var _0x280ae5=function(_0x465529){while(--_0x465529){_0x16c808['push'](_0x16c808['shift']());}};_0x280ae5(++_0x6ff35e);}(_0x7527,0x14d));var _0x7752=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7527[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7752('0x0'));var util=require(_0x7752('0x1'));var path=require(_0x7752('0x2'));var timeout=require(_0x7752('0x3'));var express=require(_0x7752('0x4'));var router=express[_0x7752('0x5')]();var fs_extra=require(_0x7752('0x6'));var auth=require(_0x7752('0x7'));var interaction=require(_0x7752('0x8'));var config=require(_0x7752('0x9'));var controller=require(_0x7752('0xa'));router[_0x7752('0xb')]('/',auth['isAuthenticated'](),controller[_0x7752('0xc')]);router['get'](_0x7752('0xd'),auth[_0x7752('0xe')](),controller[_0x7752('0xf')]);router['get'](_0x7752('0x10'),auth['isAuthenticated'](),controller[_0x7752('0x11')]);router[_0x7752('0x12')]('/',auth[_0x7752('0xe')](),controller[_0x7752('0x13')]);router[_0x7752('0x14')](_0x7752('0x10'),auth[_0x7752('0xe')](),controller[_0x7752('0x15')]);router[_0x7752('0x16')]('/:id',auth[_0x7752('0xe')](),controller['destroy']);module[_0x7752('0x17')]=router;
\ No newline at end of file
+var _0x4004=['index','show','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated'];(function(_0x3ee952,_0x565e0f){var _0xc0c8b1=function(_0x57e219){while(--_0x57e219){_0x3ee952['push'](_0x3ee952['shift']());}};_0xc0c8b1(++_0x565e0f);}(_0x4004,0x1d7));var _0x4400=function(_0x1e2bbe,_0x4df37d){_0x1e2bbe=_0x1e2bbe-0x0;var _0x435438=_0x4004[_0x1e2bbe];return _0x435438;};'use strict';var multer=require(_0x4400('0x0'));var util=require(_0x4400('0x1'));var path=require(_0x4400('0x2'));var timeout=require(_0x4400('0x3'));var express=require(_0x4400('0x4'));var router=express[_0x4400('0x5')]();var fs_extra=require(_0x4400('0x6'));var auth=require(_0x4400('0x7'));var interaction=require(_0x4400('0x8'));var config=require(_0x4400('0x9'));var controller=require(_0x4400('0xa'));router[_0x4400('0xb')]('/',auth[_0x4400('0xc')](),controller[_0x4400('0xd')]);router[_0x4400('0xb')]('/describe',auth[_0x4400('0xc')](),controller['describe']);router[_0x4400('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x4400('0xe')]);router['post']('/',auth[_0x4400('0xc')](),controller[_0x4400('0xf')]);router[_0x4400('0x10')]('/:id',auth[_0x4400('0xc')](),controller[_0x4400('0x11')]);router[_0x4400('0x12')](_0x4400('0x13'),auth[_0x4400('0xc')](),controller[_0x4400('0x14')]);module[_0x4400('0x15')]=router;
\ No newline at end of file
index cb351b3..224282e 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(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0xb43b,0x1b2));var _0xbb43=function(_0x122959,_0x5bdf97){_0x122959=_0x122959-0x0;var _0x2ac167=_0xb43b[_0x122959];return _0x2ac167;};'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 _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x5a594d,_0x5cd018){var _0x45a07e=function(_0x3a63de){while(--_0x3a63de){_0x5a594d['push'](_0x5a594d['shift']());}};_0x45a07e(++_0x5cd018);}(_0x008c,0x188));var _0xc008=function(_0x89c40f,_0xd92eb2){_0x89c40f=_0x89c40f-0x0;var _0x17acbb=_0x008c[_0x89c40f];return _0x17acbb;};'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
index 39ca3dd..0b7cd36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e10=['eml-format','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','then','error','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','model','query','intersection','fields','length','attributes','hasOwnProperty','nolimit','sort','pick','filters','filter','where','merge','VIRTUAL','options','includeAll','include','catch','params','keys','find','create','body'];(function(_0x3b2244,_0x54873f){var _0x2dcc14=function(_0x53d73f){while(--_0x53d73f){_0x3b2244['push'](_0x3b2244['shift']());}};_0x2dcc14(++_0x54873f);}(_0x8e10,0x1dc));var _0x08e1=function(_0x42f3a5,_0x3a4470){_0x42f3a5=_0x42f3a5-0x0;var _0x1a7d74=_0x8e10[_0x42f3a5];return _0x1a7d74;};'use strict';var emlformat=require(_0x08e1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x08e1('0x1'));var jsonpatch=require(_0x08e1('0x2'));var rp=require(_0x08e1('0x3'));var moment=require(_0x08e1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x08e1('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x08e1('0x6'));var ejs=require(_0x08e1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x08e1('0x8'));var squel=require(_0x08e1('0x9'));var crypto=require(_0x08e1('0xa'));var jsforce=require(_0x08e1('0xb'));var deskjs=require(_0x08e1('0xc'));var toCsv=require(_0x08e1('0x6'));var querystring=require(_0x08e1('0xd'));var Papa=require(_0x08e1('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x08e1('0xf'));var hardwareService=require(_0x08e1('0x10'));var logger=require(_0x08e1('0x11'))(_0x08e1('0x12'));var utils=require(_0x08e1('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x08e1('0x14'))['db'];function respondWithStatusCode(_0x3e1a8d,_0x22f009){_0x22f009=_0x22f009||0xcc;return function(_0x4c09d1){if(_0x4c09d1){return _0x3e1a8d['sendStatus'](_0x22f009);}return _0x3e1a8d[_0x08e1('0x15')](_0x22f009)[_0x08e1('0x16')]();};}function respondWithResult(_0x582ec9,_0x8434f5){_0x8434f5=_0x8434f5||0xc8;return function(_0x3e0a84){if(_0x3e0a84){return _0x582ec9[_0x08e1('0x15')](_0x8434f5)[_0x08e1('0x17')](_0x3e0a84);}};}function respondWithFilteredResult(_0x512d7a,_0x4163a9){return function(_0x2d48fe){if(_0x2d48fe){var _0x3533bd=typeof _0x4163a9[_0x08e1('0x18')]===_0x08e1('0x19')&&typeof _0x4163a9['limit']==='undefined';var _0x4a18e6=_0x2d48fe[_0x08e1('0x1a')];var _0x2c2dd6=_0x3533bd?0x0:_0x4163a9['offset'];var _0x3692da=_0x3533bd?_0x2d48fe[_0x08e1('0x1a')]:_0x4163a9[_0x08e1('0x18')]+_0x4163a9[_0x08e1('0x1b')];var _0x2a21a4;if(_0x3692da>=_0x4a18e6){_0x3692da=_0x4a18e6;_0x2a21a4=0xc8;}else{_0x2a21a4=0xce;}_0x512d7a['status'](_0x2a21a4);return _0x512d7a[_0x08e1('0x1c')](_0x08e1('0x1d'),_0x2c2dd6+'-'+_0x3692da+'/'+_0x4a18e6)['json'](_0x2d48fe);}return null;};}function patchUpdates(_0x2091a0){return function(_0x21734f){try{jsonpatch[_0x08e1('0x1e')](_0x21734f,_0x2091a0,!![]);}catch(_0x4d165d){return BPromise[_0x08e1('0x1f')](_0x4d165d);}return _0x21734f['save']();};}function saveUpdates(_0x3621a8,_0x2c2f91){return function(_0x32c84c){if(_0x32c84c){return _0x32c84c[_0x08e1('0x20')](_0x3621a8)['then'](function(_0x48cd6d){return _0x48cd6d;});}return null;};}function removeEntity(_0x14eabf,_0x5b8c1f){return function(_0x1265ad){if(_0x1265ad){return _0x1265ad[_0x08e1('0x21')]()[_0x08e1('0x22')](function(){_0x14eabf[_0x08e1('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b1271,_0x4f9bb3){return function(_0x56fe09){if(!_0x56fe09){_0x2b1271['sendStatus'](0x194);}return _0x56fe09;};}function handleError(_0x1dcd4c,_0x43b231){_0x43b231=_0x43b231||0x1f4;return function(_0x2c24c1){logger[_0x08e1('0x23')](_0x2c24c1['stack']);if(_0x2c24c1[_0x08e1('0x24')]){delete _0x2c24c1[_0x08e1('0x24')];}_0x1dcd4c['status'](_0x43b231)[_0x08e1('0x25')](_0x2c24c1);};}exports[_0x08e1('0x26')]=function(_0x35ec3f,_0x20e3af){var _0x1a9bef={},_0x43c196={},_0x2e1bd2={'count':0x0,'rows':[]};var _0x4dc249=_[_0x08e1('0x27')](db[_0x08e1('0x28')][_0x08e1('0x29')],function(_0xff1dc7){return{'name':_0xff1dc7[_0x08e1('0x2a')],'type':_0xff1dc7[_0x08e1('0x2b')]['key']};});_0x43c196[_0x08e1('0x2c')]=_['map'](_0x4dc249,_0x08e1('0x24'));_0x43c196[_0x08e1('0x2d')]=_['keys'](_0x35ec3f['query']);_0x43c196['filters']=_[_0x08e1('0x2e')](_0x43c196[_0x08e1('0x2c')],_0x43c196['query']);_0x1a9bef['attributes']=_[_0x08e1('0x2e')](_0x43c196[_0x08e1('0x2c')],qs[_0x08e1('0x2f')](_0x35ec3f[_0x08e1('0x2d')][_0x08e1('0x2f')]));_0x1a9bef['attributes']=_0x1a9bef['attributes'][_0x08e1('0x30')]?_0x1a9bef[_0x08e1('0x31')]:_0x43c196[_0x08e1('0x2c')];if(!_0x35ec3f[_0x08e1('0x2d')][_0x08e1('0x32')](_0x08e1('0x33'))){_0x1a9bef[_0x08e1('0x1b')]=qs['limit'](_0x35ec3f[_0x08e1('0x2d')]['limit']);_0x1a9bef[_0x08e1('0x18')]=qs[_0x08e1('0x18')](_0x35ec3f[_0x08e1('0x2d')][_0x08e1('0x18')]);}_0x1a9bef['order']=qs[_0x08e1('0x34')](_0x35ec3f[_0x08e1('0x2d')]['sort']);_0x1a9bef['where']=qs['filters'](_[_0x08e1('0x35')](_0x35ec3f[_0x08e1('0x2d')],_0x43c196[_0x08e1('0x36')]),_0x4dc249);if(_0x35ec3f[_0x08e1('0x2d')][_0x08e1('0x37')]){_0x1a9bef[_0x08e1('0x38')]=_[_0x08e1('0x39')](_0x1a9bef[_0x08e1('0x38')],{'$or':_['map'](_0x4dc249,function(_0x3e9f31){if(_0x3e9f31['type']!==_0x08e1('0x3a')){var _0x2f9708={};_0x2f9708[_0x3e9f31[_0x08e1('0x24')]]={'$like':'%'+_0x35ec3f[_0x08e1('0x2d')][_0x08e1('0x37')]+'%'};return _0x2f9708;}})});}_0x1a9bef=_['merge']({},_0x1a9bef,_0x35ec3f[_0x08e1('0x3b')]);var _0x1abb2a={'where':_0x1a9bef['where']};return db['MailTransferReport']['count'](_0x1abb2a)[_0x08e1('0x22')](function(_0x5032d1){_0x2e1bd2['count']=_0x5032d1;if(_0x35ec3f['query'][_0x08e1('0x3c')]){_0x1a9bef[_0x08e1('0x3d')]=[{'all':!![]}];}return db[_0x08e1('0x28')]['findAll'](_0x1a9bef);})['then'](function(_0x37c1fe){_0x2e1bd2['rows']=_0x37c1fe;return _0x2e1bd2;})[_0x08e1('0x22')](respondWithFilteredResult(_0x20e3af,_0x1a9bef))[_0x08e1('0x3e')](handleError(_0x20e3af,null));};exports['show']=function(_0x398156,_0x15dbce){var _0x24d3bd={'raw':!![],'where':{'id':_0x398156[_0x08e1('0x3f')]['id']}},_0x374eee={};_0x374eee[_0x08e1('0x2c')]=_[_0x08e1('0x40')](db['MailTransferReport'][_0x08e1('0x29')]);_0x374eee['query']=_[_0x08e1('0x40')](_0x398156['query']);_0x374eee['filters']=_[_0x08e1('0x2e')](_0x374eee[_0x08e1('0x2c')],_0x374eee['query']);_0x24d3bd['attributes']=_[_0x08e1('0x2e')](_0x374eee[_0x08e1('0x2c')],qs[_0x08e1('0x2f')](_0x398156['query'][_0x08e1('0x2f')]));_0x24d3bd[_0x08e1('0x31')]=_0x24d3bd[_0x08e1('0x31')][_0x08e1('0x30')]?_0x24d3bd[_0x08e1('0x31')]:_0x374eee[_0x08e1('0x2c')];if(_0x398156[_0x08e1('0x2d')][_0x08e1('0x3c')]){_0x24d3bd[_0x08e1('0x3d')]=[{'all':!![]}];}_0x24d3bd=_[_0x08e1('0x39')]({},_0x24d3bd,_0x398156[_0x08e1('0x3b')]);return db[_0x08e1('0x28')][_0x08e1('0x41')](_0x24d3bd)[_0x08e1('0x22')](handleEntityNotFound(_0x15dbce,null))[_0x08e1('0x22')](respondWithResult(_0x15dbce,null))[_0x08e1('0x3e')](handleError(_0x15dbce,null));};exports[_0x08e1('0x42')]=function(_0x1597f2,_0x57c74d){return db['MailTransferReport'][_0x08e1('0x42')](_0x1597f2[_0x08e1('0x43')],{})['then'](respondWithResult(_0x57c74d,0xc9))['catch'](handleError(_0x57c74d,null));};exports[_0x08e1('0x20')]=function(_0x5d9cec,_0x58cf2a){if(_0x5d9cec[_0x08e1('0x43')]['id']){delete _0x5d9cec['body']['id'];}return db[_0x08e1('0x28')][_0x08e1('0x41')]({'where':{'id':_0x5d9cec[_0x08e1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x58cf2a,null))[_0x08e1('0x22')](saveUpdates(_0x5d9cec[_0x08e1('0x43')],null))['then'](respondWithResult(_0x58cf2a,null))['catch'](handleError(_0x58cf2a,null));};exports[_0x08e1('0x21')]=function(_0x31994a,_0x2708af){return db[_0x08e1('0x28')][_0x08e1('0x41')]({'where':{'id':_0x31994a['params']['id']}})[_0x08e1('0x22')](handleEntityNotFound(_0x2708af,null))[_0x08e1('0x22')](removeEntity(_0x2708af,null))[_0x08e1('0x3e')](handleError(_0x2708af,null));};exports['describe']=function(_0x4f672d,_0x4ee34c){return db[_0x08e1('0x28')]['describe']()[_0x08e1('0x22')](respondWithResult(_0x4ee34c,null))[_0x08e1('0x3e')](handleError(_0x4ee34c,null));};
\ No newline at end of file
+var _0xaaba=['rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','model','fields','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','include','MailTransferReport','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map'];(function(_0x521dda,_0x349a13){var _0x5c6fd3=function(_0x48c0b3){while(--_0x48c0b3){_0x521dda['push'](_0x521dda['shift']());}};_0x5c6fd3(++_0x349a13);}(_0xaaba,0x152));var _0xaaab=function(_0x509c4d,_0x50717e){_0x509c4d=_0x509c4d-0x0;var _0x29b6c6=_0xaaba[_0x509c4d];return _0x29b6c6;};'use strict';var emlformat=require(_0xaaab('0x0'));var rimraf=require(_0xaaab('0x1'));var zipdir=require(_0xaaab('0x2'));var jsonpatch=require(_0xaaab('0x3'));var rp=require('request-promise');var moment=require(_0xaaab('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xaaab('0x5'));var util=require(_0xaaab('0x6'));var path=require(_0xaaab('0x7'));var sox=require(_0xaaab('0x8'));var csv=require(_0xaaab('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaaab('0xa'));var _=require(_0xaaab('0xb'));var squel=require(_0xaaab('0xc'));var crypto=require(_0xaaab('0xd'));var jsforce=require(_0xaaab('0xe'));var deskjs=require(_0xaaab('0xf'));var toCsv=require(_0xaaab('0x9'));var querystring=require(_0xaaab('0x10'));var Papa=require(_0xaaab('0x11'));var Redis=require(_0xaaab('0x12'));var authService=require(_0xaaab('0x13'));var qs=require(_0xaaab('0x14'));var as=require(_0xaaab('0x15'));var hardwareService=require(_0xaaab('0x16'));var logger=require(_0xaaab('0x17'))(_0xaaab('0x18'));var utils=require(_0xaaab('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaaab('0x1a'))['db'];function respondWithStatusCode(_0x3464e9,_0x289e2c){_0x289e2c=_0x289e2c||0xcc;return function(_0x22b555){if(_0x22b555){return _0x3464e9[_0xaaab('0x1b')](_0x289e2c);}return _0x3464e9[_0xaaab('0x1c')](_0x289e2c)['end']();};}function respondWithResult(_0x266d73,_0x3dd727){_0x3dd727=_0x3dd727||0xc8;return function(_0xd9c170){if(_0xd9c170){return _0x266d73[_0xaaab('0x1c')](_0x3dd727)[_0xaaab('0x1d')](_0xd9c170);}};}function respondWithFilteredResult(_0x26835b,_0xa0c0bb){return function(_0x492457){if(_0x492457){var _0x20ec25=typeof _0xa0c0bb[_0xaaab('0x1e')]===_0xaaab('0x1f')&&typeof _0xa0c0bb[_0xaaab('0x20')]===_0xaaab('0x1f');var _0x1a9ec8=_0x492457['count'];var _0xc9a84b=_0x20ec25?0x0:_0xa0c0bb['offset'];var _0x10c2f4=_0x20ec25?_0x492457[_0xaaab('0x21')]:_0xa0c0bb[_0xaaab('0x1e')]+_0xa0c0bb['limit'];var _0x45b9a2;if(_0x10c2f4>=_0x1a9ec8){_0x10c2f4=_0x1a9ec8;_0x45b9a2=0xc8;}else{_0x45b9a2=0xce;}_0x26835b[_0xaaab('0x1c')](_0x45b9a2);return _0x26835b[_0xaaab('0x22')](_0xaaab('0x23'),_0xc9a84b+'-'+_0x10c2f4+'/'+_0x1a9ec8)[_0xaaab('0x1d')](_0x492457);}return null;};}function patchUpdates(_0x4afc66){return function(_0x1f4d45){try{jsonpatch['apply'](_0x1f4d45,_0x4afc66,!![]);}catch(_0x181bb8){return BPromise['reject'](_0x181bb8);}return _0x1f4d45[_0xaaab('0x24')]();};}function saveUpdates(_0x4f980e,_0x5b1a53){return function(_0x408d3a){if(_0x408d3a){return _0x408d3a[_0xaaab('0x25')](_0x4f980e)[_0xaaab('0x26')](function(_0x3e5bdf){return _0x3e5bdf;});}return null;};}function removeEntity(_0x4c15cd,_0x4bf015){return function(_0x233988){if(_0x233988){return _0x233988[_0xaaab('0x27')]()[_0xaaab('0x26')](function(){_0x4c15cd['status'](0xcc)[_0xaaab('0x28')]();});}};}function handleEntityNotFound(_0x391469,_0x3fa490){return function(_0x241bbe){if(!_0x241bbe){_0x391469[_0xaaab('0x1b')](0x194);}return _0x241bbe;};}function handleError(_0x3d2867,_0x36ae39){_0x36ae39=_0x36ae39||0x1f4;return function(_0x192889){logger[_0xaaab('0x29')](_0x192889[_0xaaab('0x2a')]);if(_0x192889[_0xaaab('0x2b')]){delete _0x192889[_0xaaab('0x2b')];}_0x3d2867[_0xaaab('0x1c')](_0x36ae39)[_0xaaab('0x2c')](_0x192889);};}exports[_0xaaab('0x2d')]=function(_0x4b6acd,_0x5077e8){var _0x28e997={},_0x5160ae={},_0x50e2b5={'count':0x0,'rows':[]};var _0x57fc95=_[_0xaaab('0x2e')](db['MailTransferReport'][_0xaaab('0x2f')],function(_0x79d164){return{'name':_0x79d164[_0xaaab('0x30')],'type':_0x79d164['type'][_0xaaab('0x31')]};});_0x5160ae['model']=_[_0xaaab('0x2e')](_0x57fc95,_0xaaab('0x2b'));_0x5160ae[_0xaaab('0x32')]=_[_0xaaab('0x33')](_0x4b6acd['query']);_0x5160ae[_0xaaab('0x34')]=_[_0xaaab('0x35')](_0x5160ae['model'],_0x5160ae['query']);_0x28e997[_0xaaab('0x36')]=_[_0xaaab('0x35')](_0x5160ae[_0xaaab('0x37')],qs['fields'](_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x38')]));_0x28e997[_0xaaab('0x36')]=_0x28e997[_0xaaab('0x36')]['length']?_0x28e997[_0xaaab('0x36')]:_0x5160ae[_0xaaab('0x37')];if(!_0x4b6acd[_0xaaab('0x32')]['hasOwnProperty'](_0xaaab('0x39'))){_0x28e997[_0xaaab('0x20')]=qs[_0xaaab('0x20')](_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x20')]);_0x28e997['offset']=qs[_0xaaab('0x1e')](_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x1e')]);}_0x28e997[_0xaaab('0x3a')]=qs[_0xaaab('0x3b')](_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x3b')]);_0x28e997['where']=qs[_0xaaab('0x34')](_['pick'](_0x4b6acd['query'],_0x5160ae['filters']),_0x57fc95);if(_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x3c')]){_0x28e997[_0xaaab('0x3d')]=_[_0xaaab('0x3e')](_0x28e997[_0xaaab('0x3d')],{'$or':_['map'](_0x57fc95,function(_0xc2a51f){if(_0xc2a51f['type']!==_0xaaab('0x3f')){var _0x2dae04={};_0x2dae04[_0xc2a51f[_0xaaab('0x2b')]]={'$like':'%'+_0x4b6acd[_0xaaab('0x32')][_0xaaab('0x3c')]+'%'};return _0x2dae04;}})});}_0x28e997=_[_0xaaab('0x3e')]({},_0x28e997,_0x4b6acd['options']);var _0x5ed348={'where':_0x28e997[_0xaaab('0x3d')]};return db['MailTransferReport'][_0xaaab('0x21')](_0x5ed348)['then'](function(_0x4866e5){_0x50e2b5[_0xaaab('0x21')]=_0x4866e5;if(_0x4b6acd['query'][_0xaaab('0x40')]){_0x28e997[_0xaaab('0x41')]=[{'all':!![]}];}return db[_0xaaab('0x42')][_0xaaab('0x43')](_0x28e997);})[_0xaaab('0x26')](function(_0xef0cc0){_0x50e2b5[_0xaaab('0x44')]=_0xef0cc0;return _0x50e2b5;})['then'](respondWithFilteredResult(_0x5077e8,_0x28e997))[_0xaaab('0x45')](handleError(_0x5077e8,null));};exports[_0xaaab('0x46')]=function(_0x54e059,_0x33f24c){var _0x331f3a={'raw':!![],'where':{'id':_0x54e059[_0xaaab('0x47')]['id']}},_0x2a967b={};_0x2a967b[_0xaaab('0x37')]=_['keys'](db[_0xaaab('0x42')][_0xaaab('0x2f')]);_0x2a967b['query']=_[_0xaaab('0x33')](_0x54e059[_0xaaab('0x32')]);_0x2a967b[_0xaaab('0x34')]=_[_0xaaab('0x35')](_0x2a967b['model'],_0x2a967b[_0xaaab('0x32')]);_0x331f3a[_0xaaab('0x36')]=_[_0xaaab('0x35')](_0x2a967b[_0xaaab('0x37')],qs['fields'](_0x54e059['query'][_0xaaab('0x38')]));_0x331f3a[_0xaaab('0x36')]=_0x331f3a[_0xaaab('0x36')][_0xaaab('0x48')]?_0x331f3a[_0xaaab('0x36')]:_0x2a967b['model'];if(_0x54e059[_0xaaab('0x32')][_0xaaab('0x40')]){_0x331f3a['include']=[{'all':!![]}];}_0x331f3a=_['merge']({},_0x331f3a,_0x54e059['options']);return db[_0xaaab('0x42')][_0xaaab('0x49')](_0x331f3a)[_0xaaab('0x26')](handleEntityNotFound(_0x33f24c,null))[_0xaaab('0x26')](respondWithResult(_0x33f24c,null))[_0xaaab('0x45')](handleError(_0x33f24c,null));};exports[_0xaaab('0x4a')]=function(_0x1357af,_0x23af76){return db['MailTransferReport'][_0xaaab('0x4a')](_0x1357af[_0xaaab('0x4b')],{})['then'](respondWithResult(_0x23af76,0xc9))[_0xaaab('0x45')](handleError(_0x23af76,null));};exports[_0xaaab('0x25')]=function(_0x2f2384,_0x17c10d){if(_0x2f2384[_0xaaab('0x4b')]['id']){delete _0x2f2384[_0xaaab('0x4b')]['id'];}return db[_0xaaab('0x42')][_0xaaab('0x49')]({'where':{'id':_0x2f2384['params']['id']}})[_0xaaab('0x26')](handleEntityNotFound(_0x17c10d,null))[_0xaaab('0x26')](saveUpdates(_0x2f2384[_0xaaab('0x4b')],null))[_0xaaab('0x26')](respondWithResult(_0x17c10d,null))['catch'](handleError(_0x17c10d,null));};exports[_0xaaab('0x27')]=function(_0xd2f4a,_0x19800a){return db[_0xaaab('0x42')][_0xaaab('0x49')]({'where':{'id':_0xd2f4a['params']['id']}})[_0xaaab('0x26')](handleEntityNotFound(_0x19800a,null))[_0xaaab('0x26')](removeEntity(_0x19800a,null))['catch'](handleError(_0x19800a,null));};exports[_0xaaab('0x4c')]=function(_0x56aa51,_0x5973a1){return db[_0xaaab('0x42')]['describe']()[_0xaaab('0x26')](respondWithResult(_0x5973a1,null))['catch'](handleError(_0x5973a1,null));};
\ No newline at end of file
index 7f4ceff..e882f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e7=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x6f62d,_0x163623){var _0xb18fb=function(_0x35a31f){while(--_0x35a31f){_0x6f62d['push'](_0x6f62d['shift']());}};_0xb18fb(++_0x163623);}(_0x34e7,0x164));var _0x734e=function(_0x7da6e8,_0x4756af){_0x7da6e8=_0x7da6e8-0x0;var _0x3e1217=_0x34e7[_0x7da6e8];return _0x3e1217;};'use strict';var _=require(_0x734e('0x0'));var util=require(_0x734e('0x1'));var logger=require(_0x734e('0x2'))(_0x734e('0x3'));var moment=require(_0x734e('0x4'));var BPromise=require(_0x734e('0x5'));var rp=require(_0x734e('0x6'));var fs=require('fs');var path=require(_0x734e('0x7'));var rimraf=require(_0x734e('0x8'));var config=require(_0x734e('0x9'));var attributes=require(_0x734e('0xa'));module[_0x734e('0xb')]=function(_0x3405b1,_0x192562){return _0x3405b1['define'](_0x734e('0xc'),attributes,{'tableName':_0x734e('0xd'),'paranoid':![],'indexes':[{'name':_0x734e('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6dd1=['api','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','uniqueid','lodash','../../config/logger'];(function(_0x4f9e31,_0x19881c){var _0x2f9fc7=function(_0x318c57){while(--_0x318c57){_0x4f9e31['push'](_0x4f9e31['shift']());}};_0x2f9fc7(++_0x19881c);}(_0x6dd1,0x111));var _0x16dd=function(_0x1c6a73,_0x29c474){_0x1c6a73=_0x1c6a73-0x0;var _0x500b98=_0x6dd1[_0x1c6a73];return _0x500b98;};'use strict';var _=require(_0x16dd('0x0'));var util=require('util');var logger=require(_0x16dd('0x1'))(_0x16dd('0x2'));var moment=require('moment');var BPromise=require(_0x16dd('0x3'));var rp=require(_0x16dd('0x4'));var fs=require('fs');var path=require(_0x16dd('0x5'));var rimraf=require(_0x16dd('0x6'));var config=require(_0x16dd('0x7'));var attributes=require(_0x16dd('0x8'));module[_0x16dd('0x9')]=function(_0x127878,_0x370f0e){return _0x127878['define']('MailTransferReport',attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x16dd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 85c9e36..d512134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae30=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash'];(function(_0x6f479f,_0x287747){var _0x1306ab=function(_0x45a45f){while(--_0x45a45f){_0x6f479f['push'](_0x6f479f['shift']());}};_0x1306ab(++_0x287747);}(_0xae30,0x107));var _0x0ae3=function(_0x3ff9bc,_0x51778d){_0x3ff9bc=_0x3ff9bc-0x0;var _0x4017d6=_0xae30[_0x3ff9bc];return _0x4017d6;};'use strict';var _=require(_0x0ae3('0x0'));var util=require(_0x0ae3('0x1'));var moment=require('moment');var BPromise=require(_0x0ae3('0x2'));var rs=require(_0x0ae3('0x3'));var fs=require('fs');var Redis=require(_0x0ae3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0ae3('0x5'));var logger=require(_0x0ae3('0x6'))(_0x0ae3('0x7'));var config=require(_0x0ae3('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0ae3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b5c4e,_0x426bcc,_0x3db8b2){return new BPromise(function(_0x3722cd,_0x345171){return client[_0x0ae3('0xa')](_0x3b5c4e,_0x3db8b2)[_0x0ae3('0xb')](function(_0x3ce9ae){logger['info'](_0x0ae3('0xc'),_0x426bcc,_0x0ae3('0xd'));logger[_0x0ae3('0xe')](_0x0ae3('0xf'),_0x426bcc,_0x0ae3('0xd'),JSON[_0x0ae3('0x10')](_0x3ce9ae));if(_0x3ce9ae[_0x0ae3('0x11')]){if(_0x3ce9ae[_0x0ae3('0x11')][_0x0ae3('0x12')]===0x1f4){logger[_0x0ae3('0x11')](_0x0ae3('0xc'),_0x426bcc,_0x3ce9ae[_0x0ae3('0x11')][_0x0ae3('0x13')]);return _0x345171(_0x3ce9ae[_0x0ae3('0x11')][_0x0ae3('0x13')]);}logger[_0x0ae3('0x11')](_0x0ae3('0xc'),_0x426bcc,_0x3ce9ae['error'][_0x0ae3('0x13')]);return _0x3722cd(_0x3ce9ae[_0x0ae3('0x11')][_0x0ae3('0x13')]);}else{logger[_0x0ae3('0x14')](_0x0ae3('0xc'),_0x426bcc,_0x0ae3('0xd'));_0x3722cd(_0x3ce9ae['result'][_0x0ae3('0x13')]);}})[_0x0ae3('0x15')](function(_0x5a8bf0){logger[_0x0ae3('0x11')](_0x0ae3('0xc'),_0x426bcc,_0x5a8bf0);_0x345171(_0x5a8bf0);});});}
\ No newline at end of file
+var _0x1159=['info','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MailTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x126924,_0x2d92fb){var _0xed317b=function(_0x388009){while(--_0x388009){_0x126924['push'](_0x126924['shift']());}};_0xed317b(++_0x2d92fb);}(_0x1159,0x1c3));var _0x9115=function(_0x5a9e52,_0x350d90){_0x5a9e52=_0x5a9e52-0x0;var _0x2e51f6=_0x1159[_0x5a9e52];return _0x2e51f6;};'use strict';var _=require(_0x9115('0x0'));var util=require(_0x9115('0x1'));var moment=require('moment');var BPromise=require(_0x9115('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9115('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9115('0x4'))(_0x9115('0x5'));var config=require(_0x9115('0x6'));var jayson=require(_0x9115('0x7'));var client=jayson[_0x9115('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4903b9,_0x39516e,_0x4099a8){return new BPromise(function(_0x2d2b36,_0x9b9b22){return client[_0x9115('0x9')](_0x4903b9,_0x4099a8)[_0x9115('0xa')](function(_0x3dc3a9){logger[_0x9115('0xb')]('MailTransferReport,\x20%s,\x20%s',_0x39516e,'request\x20sent');logger[_0x9115('0xc')](_0x9115('0xd'),_0x39516e,_0x9115('0xe'),JSON['stringify'](_0x3dc3a9));if(_0x3dc3a9[_0x9115('0xf')]){if(_0x3dc3a9[_0x9115('0xf')][_0x9115('0x10')]===0x1f4){logger['error'](_0x9115('0x11'),_0x39516e,_0x3dc3a9['error'][_0x9115('0x12')]);return _0x9b9b22(_0x3dc3a9['error']['message']);}logger[_0x9115('0xf')](_0x9115('0x11'),_0x39516e,_0x3dc3a9[_0x9115('0xf')]['message']);return _0x2d2b36(_0x3dc3a9[_0x9115('0xf')]['message']);}else{logger[_0x9115('0xb')](_0x9115('0x11'),_0x39516e,'request\x20sent');_0x2d2b36(_0x3dc3a9[_0x9115('0x13')]['message']);}})[_0x9115('0x14')](function(_0x58a9b0){logger[_0x9115('0xf')](_0x9115('0x11'),_0x39516e,_0x58a9b0);_0x9b9b22(_0x58a9b0);});});}
\ No newline at end of file
index c9231ab..af07ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65a=['/describe','isAuthenticated','describe','/:id','post','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','index','get'];(function(_0x1e367c,_0x475959){var _0x10ce30=function(_0x50e1f3){while(--_0x50e1f3){_0x1e367c['push'](_0x1e367c['shift']());}};_0x10ce30(++_0x475959);}(_0xa65a,0x197));var _0xaa65=function(_0x5b92b7,_0xe20e03){_0x5b92b7=_0x5b92b7-0x0;var _0x52553f=_0xa65a[_0x5b92b7];return _0x52553f;};'use strict';var multer=require(_0xaa65('0x0'));var util=require('util');var path=require(_0xaa65('0x1'));var timeout=require('connect-timeout');var express=require(_0xaa65('0x2'));var router=express[_0xaa65('0x3')]();var fs_extra=require(_0xaa65('0x4'));var auth=require(_0xaa65('0x5'));var interaction=require(_0xaa65('0x6'));var config=require(_0xaa65('0x7'));var controller=require(_0xaa65('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xaa65('0x9')]);router[_0xaa65('0xa')](_0xaa65('0xb'),auth[_0xaa65('0xc')](),controller[_0xaa65('0xd')]);router[_0xaa65('0xa')](_0xaa65('0xe'),auth[_0xaa65('0xc')](),controller['show']);router[_0xaa65('0xf')]('/',auth['isAuthenticated'](),controller[_0xaa65('0x10')]);router[_0xaa65('0x11')](_0xaa65('0xe'),auth[_0xaa65('0xc')](),controller[_0xaa65('0x12')]);router[_0xaa65('0x13')](_0xaa65('0xe'),auth[_0xaa65('0xc')](),controller[_0xaa65('0x14')]);module[_0xaa65('0x15')]=router;
\ No newline at end of file
+var _0xacdd=['exports','multer','path','Router','fs-extra','../../components/auth/service','./memberReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy'];(function(_0x2dd47a,_0x442ac0){var _0x492a35=function(_0x3ea9f7){while(--_0x3ea9f7){_0x2dd47a['push'](_0x2dd47a['shift']());}};_0x492a35(++_0x442ac0);}(_0xacdd,0xf1));var _0xdacd=function(_0x3c4f1f,_0x20d3ec){_0x3c4f1f=_0x3c4f1f-0x0;var _0x19cb69=_0xacdd[_0x3c4f1f];return _0x19cb69;};'use strict';var multer=require(_0xdacd('0x0'));var util=require('util');var path=require(_0xdacd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xdacd('0x2')]();var fs_extra=require(_0xdacd('0x3'));var auth=require(_0xdacd('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdacd('0x5'));router[_0xdacd('0x6')]('/',auth['isAuthenticated'](),controller[_0xdacd('0x7')]);router[_0xdacd('0x6')](_0xdacd('0x8'),auth[_0xdacd('0x9')](),controller[_0xdacd('0xa')]);router[_0xdacd('0x6')](_0xdacd('0xb'),auth[_0xdacd('0x9')](),controller[_0xdacd('0xc')]);router[_0xdacd('0xd')]('/',auth[_0xdacd('0x9')](),controller[_0xdacd('0xe')]);router[_0xdacd('0xf')](_0xdacd('0xb'),auth[_0xdacd('0x9')](),controller[_0xdacd('0x10')]);router[_0xdacd('0x11')](_0xdacd('0xb'),auth[_0xdacd('0x9')](),controller[_0xdacd('0x12')]);module[_0xdacd('0x13')]=router;
\ No newline at end of file
index a0b68c3..39c859e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcafd=['DATE','enterAt','diff','setDataValue','duration','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER'];(function(_0x398890,_0x9d1f64){var _0x11e091=function(_0x4391c4){while(--_0x4391c4){_0x398890['push'](_0x398890['shift']());}};_0x11e091(++_0x9d1f64);}(_0xcafd,0xcb));var _0xdcaf=function(_0x298c88,_0x3d4f2d){_0x298c88=_0x298c88-0x0;var _0x259c96=_0xcafd[_0x298c88];return _0x259c96;};'use strict';var Sequelize=require(_0xdcaf('0x0'));var moment=require(_0xdcaf('0x1'));module['exports']={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xdcaf('0x2')]},'type':{'type':Sequelize[_0xdcaf('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xdcaf('0x3')},'duration':{'type':Sequelize[_0xdcaf('0x4')]},'enterAt':{'type':Sequelize[_0xdcaf('0x5')]},'exitAt':{'type':Sequelize[_0xdcaf('0x5')],'set':function(_0x56bae3){var _0x1deb48=moment(_0x56bae3);var _0x32aafc=moment(this['getDataValue'](_0xdcaf('0x6')));var _0x21cf9a=_0x1deb48[_0xdcaf('0x7')](_0x32aafc,'seconds');this[_0xdcaf('0x8')]('exitAt',_0x56bae3);this[_0xdcaf('0x8')](_0xdcaf('0x9'),_0x21cf9a>=0x0?_0x21cf9a:null);}},'data1':{'type':Sequelize['STRING'],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xdcaf('0x2')],'comment':_0xdcaf('0xa')},'data3':{'type':Sequelize[_0xdcaf('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0xdcaf('0xb')},'data5':{'type':Sequelize['STRING'],'comment':_0xdcaf('0xc')},'role':{'type':Sequelize[_0xdcaf('0x2')]},'internal':{'type':Sequelize[_0xdcaf('0x4')]},'uniqueid':{'type':Sequelize[_0xdcaf('0x2')]}};
\ No newline at end of file
+var _0x6303=['setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff','seconds'];(function(_0x3d6cc1,_0x530d31){var _0x2b8da0=function(_0x59ed03){while(--_0x59ed03){_0x3d6cc1['push'](_0x3d6cc1['shift']());}};_0x2b8da0(++_0x530d31);}(_0x6303,0xd8));var _0x3630=function(_0x2ec607,_0xb59521){_0x2ec607=_0x2ec607-0x0;var _0x5e6432=_0x6303[_0x2ec607];return _0x5e6432;};'use strict';var Sequelize=require(_0x3630('0x0'));var moment=require('moment');module[_0x3630('0x1')]={'channel':{'type':Sequelize[_0x3630('0x2')]},'membername':{'type':Sequelize[_0x3630('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE','comment':_0x3630('0x3')},'duration':{'type':Sequelize[_0x3630('0x4')]},'enterAt':{'type':Sequelize[_0x3630('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x146362){var _0x212525=moment(_0x146362);var _0x5527ef=moment(this['getDataValue'](_0x3630('0x6')));var _0x528d70=_0x212525[_0x3630('0x7')](_0x5527ef,_0x3630('0x8'));this[_0x3630('0x9')]('exitAt',_0x146362);this['setDataValue'](_0x3630('0xa'),_0x528d70>=0x0?_0x528d70:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x3630('0xb')},'data2':{'type':Sequelize['STRING'],'comment':_0x3630('0xc')},'data3':{'type':Sequelize[_0x3630('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0x3630('0xd')},'data5':{'type':Sequelize['STRING'],'comment':_0x3630('0xe')},'role':{'type':Sequelize[_0x3630('0x2')]},'internal':{'type':Sequelize[_0x3630('0x4')]},'uniqueid':{'type':Sequelize[_0x3630('0x2')]}};
\ No newline at end of file
index 6bf4a2f..5d2bf63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x4194a5,_0x1d0430){var _0x4cdab2=function(_0x3fe5e1){while(--_0x3fe5e1){_0x4194a5['push'](_0x4194a5['shift']());}};_0x4cdab2(++_0x1d0430);}(_0x7217,0x19e));var _0x7721=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x7217[_0x4c7fb5];return _0x2e10ac;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
+var _0x9c44=['catch','params','find','create','body','describe','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','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x171a7c,_0x83cf5d){var _0x3d4132=function(_0x543599){while(--_0x543599){_0x171a7c['push'](_0x171a7c['shift']());}};_0x3d4132(++_0x83cf5d);}(_0x9c44,0x178));var _0x49c4=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x9c44[_0xb0f7c3];return _0x28ea68;};'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={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
index 2cac237..f648b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cd=['../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername','interface','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x59cd,0x108));var _0xd59c=function(_0x5db313,_0x3c8f0c){_0x5db313=_0x5db313-0x0;var _0x36d503=_0x59cd[_0x5db313];return _0x36d503;};'use strict';var _=require(_0xd59c('0x0'));var util=require(_0xd59c('0x1'));var logger=require(_0xd59c('0x2'))(_0xd59c('0x3'));var moment=require(_0xd59c('0x4'));var BPromise=require(_0xd59c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd59c('0x6'));var rimraf=require(_0xd59c('0x7'));var config=require(_0xd59c('0x8'));var attributes=require(_0xd59c('0x9'));module[_0xd59c('0xa')]=function(_0x29580e,_0x4b7c4d){return _0x29580e[_0xd59c('0xb')](_0xd59c('0xc'),attributes,{'tableName':_0xd59c('0xd'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xd59c('0xe'),_0xd59c('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a43=['request-promise','exports','define','MemberReport','report_member','membername','interface','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3660fc,_0x441e0e){var _0x4cec89=function(_0x2002a5){while(--_0x2002a5){_0x3660fc['push'](_0x3660fc['shift']());}};_0x4cec89(++_0x441e0e);}(_0x5a43,0xf1));var _0x35a4=function(_0x2d18a1,_0x2bd80e){_0x2d18a1=_0x2d18a1-0x0;var _0x1e28fd=_0x5a43[_0x2d18a1];return _0x1e28fd;};'use strict';var _=require(_0x35a4('0x0'));var util=require(_0x35a4('0x1'));var logger=require(_0x35a4('0x2'))(_0x35a4('0x3'));var moment=require(_0x35a4('0x4'));var BPromise=require(_0x35a4('0x5'));var rp=require(_0x35a4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x35a4('0x7')]=function(_0x38c350,_0xc2345b){return _0x38c350[_0x35a4('0x8')](_0x35a4('0x9'),attributes,{'tableName':_0x35a4('0xa'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x35a4('0xb'),_0x35a4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b7eb868..8fef899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21e=['raw','UpdateMemberReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetMemberReport','MemberReport','findAll','options','where','attributes','include','model','map','CreateMemberReport','create','body'];(function(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0xc21e,0x1ca));var _0xec21=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xc21e[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0xec21('0x0'));var moment=require(_0xec21('0x1'));var BPromise=require(_0xec21('0x2'));var rs=require(_0xec21('0x3'));var fs=require('fs');var Redis=require(_0xec21('0x4'));var db=require(_0xec21('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xec21('0x6'))(_0xec21('0x7'));var config=require(_0xec21('0x8'));var jayson=require(_0xec21('0x9'));var client=jayson[_0xec21('0xa')][_0xec21('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x406b66,_0x2f15e7,_0x51f6dc){return new BPromise(function(_0x2b1396,_0x3d74a2){return client[_0xec21('0xc')](_0x406b66,_0x51f6dc)[_0xec21('0xd')](function(_0x4d478){logger['info'](_0xec21('0xe'),_0x2f15e7,_0xec21('0xf'));logger[_0xec21('0x10')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x2f15e7,'request\x20sent',JSON[_0xec21('0x11')](_0x4d478));if(_0x4d478[_0xec21('0x12')]){if(_0x4d478['error'][_0xec21('0x13')]===0x1f4){logger[_0xec21('0x12')](_0xec21('0xe'),_0x2f15e7,_0x4d478[_0xec21('0x12')][_0xec21('0x14')]);return _0x3d74a2(_0x4d478['error'][_0xec21('0x14')]);}logger['error'](_0xec21('0xe'),_0x2f15e7,_0x4d478[_0xec21('0x12')][_0xec21('0x14')]);return _0x2b1396(_0x4d478['error'][_0xec21('0x14')]);}else{logger[_0xec21('0x15')](_0xec21('0xe'),_0x2f15e7,_0xec21('0xf'));_0x2b1396(_0x4d478[_0xec21('0x16')][_0xec21('0x14')]);}})[_0xec21('0x17')](function(_0x350a53){logger['error'](_0xec21('0xe'),_0x2f15e7,_0x350a53);_0x3d74a2(_0x350a53);});});}exports[_0xec21('0x18')]=function(_0x2fcbcc){var _0x121624=this;return new Promise(function(_0x3ab226,_0x1d901e){return db[_0xec21('0x19')][_0xec21('0x1a')]({'raw':_0x2fcbcc[_0xec21('0x1b')]?_0x2fcbcc[_0xec21('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2fcbcc['options']?_0x2fcbcc[_0xec21('0x1b')][_0xec21('0x1c')]||null:null,'attributes':_0x2fcbcc['options']?_0x2fcbcc['options'][_0xec21('0x1d')]||null:null,'limit':_0x2fcbcc[_0xec21('0x1b')]?_0x2fcbcc[_0xec21('0x1b')]['limit']||null:null,'include':_0x2fcbcc[_0xec21('0x1b')]?_0x2fcbcc[_0xec21('0x1b')][_0xec21('0x1e')]?_['map'](_0x2fcbcc[_0xec21('0x1b')][_0xec21('0x1e')],function(_0x2d521a){return{'model':db[_0x2d521a[_0xec21('0x1f')]],'as':_0x2d521a['as'],'attributes':_0x2d521a[_0xec21('0x1d')],'include':_0x2d521a[_0xec21('0x1e')]?_['map'](_0x2d521a[_0xec21('0x1e')],function(_0x26cdae){return{'model':db[_0x26cdae['model']],'as':_0x26cdae['as'],'attributes':_0x26cdae[_0xec21('0x1d')],'include':_0x26cdae['include']?_[_0xec21('0x20')](_0x26cdae['include'],function(_0x4ef840){return{'model':db[_0x4ef840[_0xec21('0x1f')]],'as':_0x4ef840['as'],'attributes':_0x4ef840[_0xec21('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xec21('0xd')](function(_0x10bd67){logger[_0xec21('0x15')]('GetMemberReport',_0x2fcbcc);logger[_0xec21('0x10')]('GetMemberReport',_0x2fcbcc,JSON[_0xec21('0x11')](_0x10bd67));_0x3ab226(_0x10bd67);})[_0xec21('0x17')](function(_0x116a23){logger[_0xec21('0x12')]('GetMemberReport',_0x116a23[_0xec21('0x14')],_0x2fcbcc);_0x1d901e(_0x121624[_0xec21('0x12')](0x1f4,_0x116a23[_0xec21('0x14')]));});});};exports[_0xec21('0x21')]=function(_0xa0dea2){var _0x1d1afc=this;return new Promise(function(_0x361b28,_0x375ec1){return db[_0xec21('0x19')][_0xec21('0x22')](_0xa0dea2[_0xec21('0x23')],{'raw':_0xa0dea2['options']?_0xa0dea2[_0xec21('0x1b')][_0xec21('0x24')]===undefined?!![]:![]:!![]})[_0xec21('0xd')](function(_0x3b099f){logger[_0xec21('0x15')]('CreateMemberReport',_0xa0dea2);logger[_0xec21('0x10')]('CreateMemberReport',_0xa0dea2,JSON['stringify'](_0x3b099f));_0x361b28(_0x3b099f);})['catch'](function(_0x3c6bd5){logger[_0xec21('0x12')](_0xec21('0x21'),_0x3c6bd5[_0xec21('0x14')],_0xa0dea2);_0x375ec1(_0x1d1afc[_0xec21('0x12')](0x1f4,_0x3c6bd5[_0xec21('0x14')]));});});};exports[_0xec21('0x25')]=function(_0xf45c9b){var _0xaac2cc=this;return new Promise(function(_0x1a7586,_0x8a7e00){return db[_0xec21('0x19')]['update'](_0xf45c9b[_0xec21('0x23')],{'raw':_0xf45c9b[_0xec21('0x1b')]?_0xf45c9b['options'][_0xec21('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf45c9b['options']?_0xf45c9b['options'][_0xec21('0x1c')]||null:null,'attributes':_0xf45c9b['options']?_0xf45c9b[_0xec21('0x1b')]['attributes']||null:null,'limit':_0xf45c9b[_0xec21('0x1b')]?_0xf45c9b[_0xec21('0x1b')]['limit']||null:null})[_0xec21('0xd')](function(_0x14fa33){logger[_0xec21('0x15')]('UpdateMemberReport',_0xf45c9b);logger[_0xec21('0x10')](_0xec21('0x25'),_0xf45c9b,JSON[_0xec21('0x11')](_0x14fa33));_0x1a7586(_0x14fa33);})['catch'](function(_0x192354){logger[_0xec21('0x12')](_0xec21('0x25'),_0x192354[_0xec21('0x14')],_0xf45c9b);_0x8a7e00(_0xaac2cc[_0xec21('0x12')](0x1f4,_0x192354['message']));});});};
\ No newline at end of file
+var _0x3cb7=['catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','map','model','include','CreateMemberReport','create','body','update','limit','UpdateMemberReport','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x121309,_0x3de68a){var _0x542514=function(_0x5e918a){while(--_0x5e918a){_0x121309['push'](_0x121309['shift']());}};_0x542514(++_0x3de68a);}(_0x3cb7,0xcf));var _0x73cb=function(_0x4bcbc2,_0x46cbff){_0x4bcbc2=_0x4bcbc2-0x0;var _0xe5b888=_0x3cb7[_0x4bcbc2];return _0xe5b888;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x73cb('0x0'));var BPromise=require('bluebird');var rs=require(_0x73cb('0x1'));var fs=require('fs');var Redis=require(_0x73cb('0x2'));var db=require(_0x73cb('0x3'))['db'];var utils=require(_0x73cb('0x4'));var logger=require(_0x73cb('0x5'))(_0x73cb('0x6'));var config=require(_0x73cb('0x7'));var jayson=require(_0x73cb('0x8'));var client=jayson['client'][_0x73cb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28c95e,_0x1a3637,_0x2319d0){return new BPromise(function(_0x40d9d2,_0x4aab5e){return client[_0x73cb('0xa')](_0x28c95e,_0x2319d0)[_0x73cb('0xb')](function(_0x680a54){logger[_0x73cb('0xc')](_0x73cb('0xd'),_0x1a3637,_0x73cb('0xe'));logger[_0x73cb('0xf')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x1a3637,_0x73cb('0xe'),JSON[_0x73cb('0x10')](_0x680a54));if(_0x680a54[_0x73cb('0x11')]){if(_0x680a54[_0x73cb('0x11')][_0x73cb('0x12')]===0x1f4){logger[_0x73cb('0x11')]('MemberReport,\x20%s,\x20%s',_0x1a3637,_0x680a54[_0x73cb('0x11')][_0x73cb('0x13')]);return _0x4aab5e(_0x680a54[_0x73cb('0x11')][_0x73cb('0x13')]);}logger[_0x73cb('0x11')](_0x73cb('0xd'),_0x1a3637,_0x680a54[_0x73cb('0x11')][_0x73cb('0x13')]);return _0x40d9d2(_0x680a54[_0x73cb('0x11')][_0x73cb('0x13')]);}else{logger['info']('MemberReport,\x20%s,\x20%s',_0x1a3637,'request\x20sent');_0x40d9d2(_0x680a54[_0x73cb('0x14')][_0x73cb('0x13')]);}})[_0x73cb('0x15')](function(_0x199988){logger[_0x73cb('0x11')]('MemberReport,\x20%s,\x20%s',_0x1a3637,_0x199988);_0x4aab5e(_0x199988);});});}exports[_0x73cb('0x16')]=function(_0x3df436){var _0x2dfb8e=this;return new Promise(function(_0x25c26b,_0x3a27ac){return db[_0x73cb('0x17')][_0x73cb('0x18')]({'raw':_0x3df436[_0x73cb('0x19')]?_0x3df436[_0x73cb('0x19')][_0x73cb('0x1a')]===undefined?!![]:![]:!![],'where':_0x3df436['options']?_0x3df436[_0x73cb('0x19')][_0x73cb('0x1b')]||null:null,'attributes':_0x3df436['options']?_0x3df436['options'][_0x73cb('0x1c')]||null:null,'limit':_0x3df436[_0x73cb('0x19')]?_0x3df436[_0x73cb('0x19')]['limit']||null:null,'include':_0x3df436[_0x73cb('0x19')]?_0x3df436['options']['include']?_[_0x73cb('0x1d')](_0x3df436[_0x73cb('0x19')]['include'],function(_0x57da9f){return{'model':db[_0x57da9f[_0x73cb('0x1e')]],'as':_0x57da9f['as'],'attributes':_0x57da9f[_0x73cb('0x1c')],'include':_0x57da9f['include']?_[_0x73cb('0x1d')](_0x57da9f[_0x73cb('0x1f')],function(_0x191990){return{'model':db[_0x191990[_0x73cb('0x1e')]],'as':_0x191990['as'],'attributes':_0x191990[_0x73cb('0x1c')],'include':_0x191990[_0x73cb('0x1f')]?_[_0x73cb('0x1d')](_0x191990[_0x73cb('0x1f')],function(_0x12a837){return{'model':db[_0x12a837['model']],'as':_0x12a837['as'],'attributes':_0x12a837[_0x73cb('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e5c7b){logger[_0x73cb('0xc')](_0x73cb('0x16'),_0x3df436);logger[_0x73cb('0xf')](_0x73cb('0x16'),_0x3df436,JSON[_0x73cb('0x10')](_0x1e5c7b));_0x25c26b(_0x1e5c7b);})['catch'](function(_0x3ab710){logger['error'](_0x73cb('0x16'),_0x3ab710['message'],_0x3df436);_0x3a27ac(_0x2dfb8e[_0x73cb('0x11')](0x1f4,_0x3ab710[_0x73cb('0x13')]));});});};exports[_0x73cb('0x20')]=function(_0x2291fc){var _0x5b5557=this;return new Promise(function(_0x5c7117,_0x211d29){return db[_0x73cb('0x17')][_0x73cb('0x21')](_0x2291fc[_0x73cb('0x22')],{'raw':_0x2291fc['options']?_0x2291fc[_0x73cb('0x19')][_0x73cb('0x1a')]===undefined?!![]:![]:!![]})[_0x73cb('0xb')](function(_0x20f9d8){logger[_0x73cb('0xc')](_0x73cb('0x20'),_0x2291fc);logger[_0x73cb('0xf')](_0x73cb('0x20'),_0x2291fc,JSON[_0x73cb('0x10')](_0x20f9d8));_0x5c7117(_0x20f9d8);})[_0x73cb('0x15')](function(_0x5b39ad){logger['error']('CreateMemberReport',_0x5b39ad[_0x73cb('0x13')],_0x2291fc);_0x211d29(_0x5b5557[_0x73cb('0x11')](0x1f4,_0x5b39ad[_0x73cb('0x13')]));});});};exports['UpdateMemberReport']=function(_0x28637f){var _0x40496a=this;return new Promise(function(_0x47cbb1,_0x413a03){return db['MemberReport'][_0x73cb('0x23')](_0x28637f[_0x73cb('0x22')],{'raw':_0x28637f[_0x73cb('0x19')]?_0x28637f[_0x73cb('0x19')][_0x73cb('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28637f[_0x73cb('0x19')]?_0x28637f[_0x73cb('0x19')][_0x73cb('0x1b')]||null:null,'attributes':_0x28637f['options']?_0x28637f['options'][_0x73cb('0x1c')]||null:null,'limit':_0x28637f['options']?_0x28637f[_0x73cb('0x19')][_0x73cb('0x24')]||null:null})[_0x73cb('0xb')](function(_0x6b7cd8){logger[_0x73cb('0xc')]('UpdateMemberReport',_0x28637f);logger[_0x73cb('0xf')](_0x73cb('0x25'),_0x28637f,JSON[_0x73cb('0x10')](_0x6b7cd8));_0x47cbb1(_0x6b7cd8);})[_0x73cb('0x15')](function(_0x4f7ac4){logger['error'](_0x73cb('0x25'),_0x4f7ac4['message'],_0x28637f);_0x413a03(_0x40496a[_0x73cb('0x11')](0x1f4,_0x4f7ac4[_0x73cb('0x13')]));});});};
\ No newline at end of file
index 3f82c39..aab77e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x722e=['connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','get','exports','multer','util'];(function(_0xf44477,_0xb51ab6){var _0x2e450f=function(_0x1e9127){while(--_0x1e9127){_0xf44477['push'](_0xf44477['shift']());}};_0x2e450f(++_0xb51ab6);}(_0x722e,0x14e));var _0xe722=function(_0xb71676,_0x38a540){_0xb71676=_0xb71676-0x0;var _0x97e296=_0x722e[_0xb71676];return _0x97e296;};'use strict';var multer=require(_0xe722('0x0'));var util=require(_0xe722('0x1'));var path=require('path');var timeout=require(_0xe722('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe722('0x3'));var interaction=require(_0xe722('0x4'));var config=require(_0xe722('0x5'));var controller=require('./migration.controller');router[_0xe722('0x6')]('/',controller['index']);module[_0xe722('0x7')]=router;
\ No newline at end of file
+var _0xf244=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./migration.controller','get','index','exports'];(function(_0x5a0caa,_0x473d00){var _0x2917ff=function(_0x4c0c50){while(--_0x4c0c50){_0x5a0caa['push'](_0x5a0caa['shift']());}};_0x2917ff(++_0x473d00);}(_0xf244,0x160));var _0x4f24=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xf244[_0x45d3f0];return _0x314b79;};'use strict';var multer=require(_0x4f24('0x0'));var util=require('util');var path=require(_0x4f24('0x1'));var timeout=require(_0x4f24('0x2'));var express=require(_0x4f24('0x3'));var router=express['Router']();var fs_extra=require(_0x4f24('0x4'));var auth=require(_0x4f24('0x5'));var interaction=require(_0x4f24('0x6'));var config=require('../../config/environment');var controller=require(_0x4f24('0x7'));router[_0x4f24('0x8')]('/',controller[_0x4f24('0x9')]);module[_0x4f24('0xa')]=router;
\ No newline at end of file
index 4f72c51..ac06bb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x019c=['exports','STRING','version','sequelize'];(function(_0x1d664a,_0x149a34){var _0x335345=function(_0x461fac){while(--_0x461fac){_0x1d664a['push'](_0x1d664a['shift']());}};_0x335345(++_0x149a34);}(_0x019c,0x197));var _0xc019=function(_0x2faf6e,_0x4499f0){_0x2faf6e=_0x2faf6e-0x0;var _0x44319f=_0x019c[_0x2faf6e];return _0x44319f;};'use strict';var Sequelize=require(_0xc019('0x0'));module[_0xc019('0x1')]={'version':{'type':Sequelize[_0xc019('0x2')],'unique':_0xc019('0x3')}};
\ No newline at end of file
+var _0x4184=['version','sequelize'];(function(_0x55c478,_0x717977){var _0x499858=function(_0x48c778){while(--_0x48c778){_0x55c478['push'](_0x55c478['shift']());}};_0x499858(++_0x717977);}(_0x4184,0x69));var _0x4418=function(_0x574e27,_0x89300a){_0x574e27=_0x574e27-0x0;var _0x2e06d2=_0x4184[_0x574e27];return _0x2e06d2;};'use strict';var Sequelize=require(_0x4418('0x0'));module['exports']={'version':{'type':Sequelize['STRING'],'unique':_0x4418('0x1')}};
\ No newline at end of file
index 27b537d..0baffc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4cd=['model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','Migration','findAll','rows','catch','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','end','error','name','send','index','map','rawAttributes','type','keys','query','filters','intersection'];(function(_0x1e0e5b,_0x50a13d){var _0x108b05=function(_0x4c71e6){while(--_0x4c71e6){_0x1e0e5b['push'](_0x1e0e5b['shift']());}};_0x108b05(++_0x50a13d);}(_0xa4cd,0x17b));var _0xda4c=function(_0x13a6be,_0x87bf0a){_0x13a6be=_0x13a6be-0x0;var _0x343477=_0xa4cd[_0x13a6be];return _0x343477;};'use strict';var emlformat=require(_0xda4c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xda4c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xda4c('0x2'));var moment=require('moment');var BPromise=require(_0xda4c('0x3'));var Mustache=require(_0xda4c('0x4'));var util=require(_0xda4c('0x5'));var path=require(_0xda4c('0x6'));var sox=require(_0xda4c('0x7'));var csv=require(_0xda4c('0x8'));var ejs=require(_0xda4c('0x9'));var fs=require('fs');var fs_extra=require(_0xda4c('0xa'));var _=require(_0xda4c('0xb'));var squel=require(_0xda4c('0xc'));var crypto=require(_0xda4c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xda4c('0xe'));var toCsv=require(_0xda4c('0x8'));var querystring=require(_0xda4c('0xf'));var Papa=require(_0xda4c('0x10'));var Redis=require('ioredis');var authService=require(_0xda4c('0x11'));var qs=require(_0xda4c('0x12'));var as=require(_0xda4c('0x13'));var hardwareService=require(_0xda4c('0x14'));var logger=require(_0xda4c('0x15'))(_0xda4c('0x16'));var utils=require(_0xda4c('0x17'));var config=require(_0xda4c('0x18'));var licenseUtil=require(_0xda4c('0x19'));var db=require(_0xda4c('0x1a'))['db'];function respondWithStatusCode(_0x29d362,_0x4191bc){_0x4191bc=_0x4191bc||0xcc;return function(_0x139d53){if(_0x139d53){return _0x29d362[_0xda4c('0x1b')](_0x4191bc);}return _0x29d362['status'](_0x4191bc)['end']();};}function respondWithResult(_0x588559,_0x7e099a){_0x7e099a=_0x7e099a||0xc8;return function(_0x1f4b35){if(_0x1f4b35){return _0x588559[_0xda4c('0x1c')](_0x7e099a)[_0xda4c('0x1d')](_0x1f4b35);}};}function respondWithFilteredResult(_0x36a867,_0x1ec070){return function(_0x5d857c){if(_0x5d857c){var _0x492540=typeof _0x1ec070[_0xda4c('0x1e')]==='undefined'&&typeof _0x1ec070[_0xda4c('0x1f')]===_0xda4c('0x20');var _0x1b48bf=_0x5d857c['count'];var _0x1f9b08=_0x492540?0x0:_0x1ec070[_0xda4c('0x1e')];var _0x5950f9=_0x492540?_0x5d857c[_0xda4c('0x21')]:_0x1ec070['offset']+_0x1ec070[_0xda4c('0x1f')];var _0x4ca02a;if(_0x5950f9>=_0x1b48bf){_0x5950f9=_0x1b48bf;_0x4ca02a=0xc8;}else{_0x4ca02a=0xce;}_0x36a867[_0xda4c('0x1c')](_0x4ca02a);return _0x36a867[_0xda4c('0x22')](_0xda4c('0x23'),_0x1f9b08+'-'+_0x5950f9+'/'+_0x1b48bf)[_0xda4c('0x1d')](_0x5d857c);}return null;};}function patchUpdates(_0x10ac4e){return function(_0x5733d5){try{jsonpatch[_0xda4c('0x24')](_0x5733d5,_0x10ac4e,!![]);}catch(_0x262698){return BPromise[_0xda4c('0x25')](_0x262698);}return _0x5733d5[_0xda4c('0x26')]();};}function saveUpdates(_0x429394,_0x1371cd){return function(_0x537cc2){if(_0x537cc2){return _0x537cc2[_0xda4c('0x27')](_0x429394)['then'](function(_0x49b3c3){return _0x49b3c3;});}return null;};}function removeEntity(_0x10bb27,_0x51057d){return function(_0x2faf46){if(_0x2faf46){return _0x2faf46[_0xda4c('0x28')]()['then'](function(){_0x10bb27[_0xda4c('0x1c')](0xcc)[_0xda4c('0x29')]();});}};}function handleEntityNotFound(_0x5d3310,_0x310891){return function(_0x59a57a){if(!_0x59a57a){_0x5d3310[_0xda4c('0x1b')](0x194);}return _0x59a57a;};}function handleError(_0x4af23d,_0x162a31){_0x162a31=_0x162a31||0x1f4;return function(_0x4d8cf5){logger[_0xda4c('0x2a')](_0x4d8cf5['stack']);if(_0x4d8cf5[_0xda4c('0x2b')]){delete _0x4d8cf5[_0xda4c('0x2b')];}_0x4af23d['status'](_0x162a31)[_0xda4c('0x2c')](_0x4d8cf5);};}exports[_0xda4c('0x2d')]=function(_0x38fc99,_0xa78fa1){var _0xac8c21={},_0x1bb26b={},_0x51ac30={'count':0x0,'rows':[]};var _0x186f0e=_[_0xda4c('0x2e')](db['Migration'][_0xda4c('0x2f')],function(_0x1df84e){return{'name':_0x1df84e['fieldName'],'type':_0x1df84e[_0xda4c('0x30')]['key']};});_0x1bb26b['model']=_['map'](_0x186f0e,'name');_0x1bb26b['query']=_[_0xda4c('0x31')](_0x38fc99[_0xda4c('0x32')]);_0x1bb26b[_0xda4c('0x33')]=_[_0xda4c('0x34')](_0x1bb26b[_0xda4c('0x35')],_0x1bb26b[_0xda4c('0x32')]);_0xac8c21[_0xda4c('0x36')]=_['intersection'](_0x1bb26b[_0xda4c('0x35')],qs[_0xda4c('0x37')](_0x38fc99[_0xda4c('0x32')][_0xda4c('0x37')]));_0xac8c21[_0xda4c('0x36')]=_0xac8c21[_0xda4c('0x36')]['length']?_0xac8c21[_0xda4c('0x36')]:_0x1bb26b[_0xda4c('0x35')];if(!_0x38fc99[_0xda4c('0x32')][_0xda4c('0x38')](_0xda4c('0x39'))){_0xac8c21[_0xda4c('0x1f')]=qs[_0xda4c('0x1f')](_0x38fc99['query'][_0xda4c('0x1f')]);_0xac8c21[_0xda4c('0x1e')]=qs[_0xda4c('0x1e')](_0x38fc99[_0xda4c('0x32')][_0xda4c('0x1e')]);}_0xac8c21['order']=qs[_0xda4c('0x3a')](_0x38fc99[_0xda4c('0x32')][_0xda4c('0x3a')]);_0xac8c21['where']=qs[_0xda4c('0x33')](_[_0xda4c('0x3b')](_0x38fc99['query'],_0x1bb26b[_0xda4c('0x33')]),_0x186f0e);if(_0x38fc99[_0xda4c('0x32')][_0xda4c('0x3c')]){_0xac8c21[_0xda4c('0x3d')]=_[_0xda4c('0x3e')](_0xac8c21[_0xda4c('0x3d')],{'$or':_['map'](_0x186f0e,function(_0x54ea03){if(_0x54ea03[_0xda4c('0x30')]!==_0xda4c('0x3f')){var _0x4343b9={};_0x4343b9[_0x54ea03[_0xda4c('0x2b')]]={'$like':'%'+_0x38fc99[_0xda4c('0x32')][_0xda4c('0x3c')]+'%'};return _0x4343b9;}})});}_0xac8c21=_['merge']({},_0xac8c21,_0x38fc99[_0xda4c('0x40')]);var _0x3cfbc0={'where':_0xac8c21[_0xda4c('0x3d')]};return db['Migration']['count'](_0x3cfbc0)[_0xda4c('0x41')](function(_0x87a9aa){_0x51ac30[_0xda4c('0x21')]=_0x87a9aa;if(_0x38fc99[_0xda4c('0x32')][_0xda4c('0x42')]){_0xac8c21[_0xda4c('0x43')]=[{'all':!![]}];}return db[_0xda4c('0x44')][_0xda4c('0x45')](_0xac8c21);})[_0xda4c('0x41')](function(_0x1a10cd){_0x51ac30[_0xda4c('0x46')]=_0x1a10cd;return _0x51ac30;})[_0xda4c('0x41')](respondWithFilteredResult(_0xa78fa1,_0xac8c21))[_0xda4c('0x47')](handleError(_0xa78fa1,null));};
\ No newline at end of file
+var _0x8de2=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','save','update','then','destroy','error','stack','name','send','index','Migration','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x3c09a3,_0x2363bc){var _0x2ba5be=function(_0x5ecdc8){while(--_0x5ecdc8){_0x3c09a3['push'](_0x3c09a3['shift']());}};_0x2ba5be(++_0x2363bc);}(_0x8de2,0x77));var _0x28de=function(_0x1afe3e,_0x4bf84a){_0x1afe3e=_0x1afe3e-0x0;var _0x25645f=_0x8de2[_0x1afe3e];return _0x25645f;};'use strict';var emlformat=require(_0x28de('0x0'));var rimraf=require(_0x28de('0x1'));var zipdir=require(_0x28de('0x2'));var jsonpatch=require(_0x28de('0x3'));var rp=require(_0x28de('0x4'));var moment=require(_0x28de('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x28de('0x6'));var util=require(_0x28de('0x7'));var path=require(_0x28de('0x8'));var sox=require(_0x28de('0x9'));var csv=require(_0x28de('0xa'));var ejs=require(_0x28de('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x28de('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x28de('0xd'));var deskjs=require(_0x28de('0xe'));var toCsv=require(_0x28de('0xa'));var querystring=require(_0x28de('0xf'));var Papa=require(_0x28de('0x10'));var Redis=require(_0x28de('0x11'));var authService=require(_0x28de('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x28de('0x13'));var hardwareService=require(_0x28de('0x14'));var logger=require(_0x28de('0x15'))(_0x28de('0x16'));var utils=require('../../config/utils');var config=require(_0x28de('0x17'));var licenseUtil=require(_0x28de('0x18'));var db=require(_0x28de('0x19'))['db'];function respondWithStatusCode(_0xab944c,_0x166a74){_0x166a74=_0x166a74||0xcc;return function(_0x1131bd){if(_0x1131bd){return _0xab944c[_0x28de('0x1a')](_0x166a74);}return _0xab944c[_0x28de('0x1b')](_0x166a74)[_0x28de('0x1c')]();};}function respondWithResult(_0x1d7439,_0x3ec837){_0x3ec837=_0x3ec837||0xc8;return function(_0x38a973){if(_0x38a973){return _0x1d7439[_0x28de('0x1b')](_0x3ec837)[_0x28de('0x1d')](_0x38a973);}};}function respondWithFilteredResult(_0x3aab3c,_0x557598){return function(_0x5a7271){if(_0x5a7271){var _0x23cf64=typeof _0x557598[_0x28de('0x1e')]==='undefined'&&typeof _0x557598[_0x28de('0x1f')]===_0x28de('0x20');var _0x2163d0=_0x5a7271[_0x28de('0x21')];var _0x3f36b0=_0x23cf64?0x0:_0x557598[_0x28de('0x1e')];var _0x407434=_0x23cf64?_0x5a7271[_0x28de('0x21')]:_0x557598['offset']+_0x557598['limit'];var _0xa6d06f;if(_0x407434>=_0x2163d0){_0x407434=_0x2163d0;_0xa6d06f=0xc8;}else{_0xa6d06f=0xce;}_0x3aab3c[_0x28de('0x1b')](_0xa6d06f);return _0x3aab3c['set'](_0x28de('0x22'),_0x3f36b0+'-'+_0x407434+'/'+_0x2163d0)[_0x28de('0x1d')](_0x5a7271);}return null;};}function patchUpdates(_0x452751){return function(_0x1d32d5){try{jsonpatch['apply'](_0x1d32d5,_0x452751,!![]);}catch(_0x457f4c){return BPromise['reject'](_0x457f4c);}return _0x1d32d5[_0x28de('0x23')]();};}function saveUpdates(_0x339e46,_0x523000){return function(_0x521943){if(_0x521943){return _0x521943[_0x28de('0x24')](_0x339e46)[_0x28de('0x25')](function(_0x258fe6){return _0x258fe6;});}return null;};}function removeEntity(_0x22daa8,_0x4eca69){return function(_0x220538){if(_0x220538){return _0x220538[_0x28de('0x26')]()['then'](function(){_0x22daa8[_0x28de('0x1b')](0xcc)[_0x28de('0x1c')]();});}};}function handleEntityNotFound(_0x510777,_0x51660b){return function(_0xb9fe67){if(!_0xb9fe67){_0x510777['sendStatus'](0x194);}return _0xb9fe67;};}function handleError(_0x352fca,_0x1b779d){_0x1b779d=_0x1b779d||0x1f4;return function(_0x31aff5){logger[_0x28de('0x27')](_0x31aff5[_0x28de('0x28')]);if(_0x31aff5['name']){delete _0x31aff5[_0x28de('0x29')];}_0x352fca['status'](_0x1b779d)[_0x28de('0x2a')](_0x31aff5);};}exports[_0x28de('0x2b')]=function(_0x52b019,_0x1edace){var _0x59480d={},_0x57ac17={},_0x35e35a={'count':0x0,'rows':[]};var _0x4aa50a=_['map'](db[_0x28de('0x2c')]['rawAttributes'],function(_0x1097c6){return{'name':_0x1097c6[_0x28de('0x2d')],'type':_0x1097c6[_0x28de('0x2e')][_0x28de('0x2f')]};});_0x57ac17[_0x28de('0x30')]=_[_0x28de('0x31')](_0x4aa50a,_0x28de('0x29'));_0x57ac17[_0x28de('0x32')]=_[_0x28de('0x33')](_0x52b019[_0x28de('0x32')]);_0x57ac17[_0x28de('0x34')]=_[_0x28de('0x35')](_0x57ac17[_0x28de('0x30')],_0x57ac17[_0x28de('0x32')]);_0x59480d[_0x28de('0x36')]=_[_0x28de('0x35')](_0x57ac17[_0x28de('0x30')],qs['fields'](_0x52b019[_0x28de('0x32')]['fields']));_0x59480d[_0x28de('0x36')]=_0x59480d[_0x28de('0x36')][_0x28de('0x37')]?_0x59480d['attributes']:_0x57ac17['model'];if(!_0x52b019[_0x28de('0x32')][_0x28de('0x38')](_0x28de('0x39'))){_0x59480d[_0x28de('0x1f')]=qs[_0x28de('0x1f')](_0x52b019[_0x28de('0x32')]['limit']);_0x59480d[_0x28de('0x1e')]=qs[_0x28de('0x1e')](_0x52b019[_0x28de('0x32')][_0x28de('0x1e')]);}_0x59480d[_0x28de('0x3a')]=qs[_0x28de('0x3b')](_0x52b019[_0x28de('0x32')][_0x28de('0x3b')]);_0x59480d[_0x28de('0x3c')]=qs['filters'](_[_0x28de('0x3d')](_0x52b019[_0x28de('0x32')],_0x57ac17['filters']),_0x4aa50a);if(_0x52b019[_0x28de('0x32')][_0x28de('0x3e')]){_0x59480d[_0x28de('0x3c')]=_[_0x28de('0x3f')](_0x59480d[_0x28de('0x3c')],{'$or':_['map'](_0x4aa50a,function(_0x26b0d4){if(_0x26b0d4[_0x28de('0x2e')]!==_0x28de('0x40')){var _0x3d7473={};_0x3d7473[_0x26b0d4['name']]={'$like':'%'+_0x52b019[_0x28de('0x32')]['filter']+'%'};return _0x3d7473;}})});}_0x59480d=_[_0x28de('0x3f')]({},_0x59480d,_0x52b019[_0x28de('0x41')]);var _0x485034={'where':_0x59480d[_0x28de('0x3c')]};return db['Migration'][_0x28de('0x21')](_0x485034)[_0x28de('0x25')](function(_0x158818){_0x35e35a[_0x28de('0x21')]=_0x158818;if(_0x52b019[_0x28de('0x32')][_0x28de('0x42')]){_0x59480d[_0x28de('0x43')]=[{'all':!![]}];}return db[_0x28de('0x2c')]['findAll'](_0x59480d);})[_0x28de('0x25')](function(_0x3f865d){_0x35e35a[_0x28de('0x44')]=_0x3f865d;return _0x35e35a;})[_0x28de('0x25')](respondWithFilteredResult(_0x1edace,_0x59480d))[_0x28de('0x45')](handleError(_0x1edace,null));};
\ No newline at end of file
index 9d487c8..8187cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c16=['../../config/environment','./migration.attributes','exports','define','Migration','migrations','api','moment','bluebird','request-promise','path'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x9c16,0x187));var _0x69c1=function(_0xeeb0d5,_0x2eaf94){_0xeeb0d5=_0xeeb0d5-0x0;var _0x299d5d=_0x9c16[_0xeeb0d5];return _0x299d5d;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x69c1('0x0'));var moment=require(_0x69c1('0x1'));var BPromise=require(_0x69c1('0x2'));var rp=require(_0x69c1('0x3'));var fs=require('fs');var path=require(_0x69c1('0x4'));var rimraf=require('rimraf');var config=require(_0x69c1('0x5'));var attributes=require(_0x69c1('0x6'));module[_0x69c1('0x7')]=function(_0x3e1186,_0x42fed2){return _0x3e1186[_0x69c1('0x8')](_0x69c1('0x9'),attributes,{'tableName':_0x69c1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa96=['migrations','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','exports','Migration'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xaa96,0x15f));var _0x6aa9=function(_0xb28b9f,_0x451ff1){_0xb28b9f=_0xb28b9f-0x0;var _0x916ff=_0xaa96[_0xb28b9f];return _0x916ff;};'use strict';var _=require(_0x6aa9('0x0'));var util=require(_0x6aa9('0x1'));var logger=require(_0x6aa9('0x2'))(_0x6aa9('0x3'));var moment=require('moment');var BPromise=require(_0x6aa9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6aa9('0x5'));var config=require(_0x6aa9('0x6'));var attributes=require('./migration.attributes');module[_0x6aa9('0x7')]=function(_0x3715a7,_0x4a29d2){return _0x3715a7['define'](_0x6aa9('0x8'),attributes,{'tableName':_0x6aa9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c129a0e..2c6f962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['result','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x4a5635,_0x443b90){var _0x18d602=function(_0x1ddd38){while(--_0x1ddd38){_0x4a5635['push'](_0x4a5635['shift']());}};_0x18d602(++_0x443b90);}(_0x4584,0x1cf));var _0x4458=function(_0xdc56ad,_0x3af055){_0xdc56ad=_0xdc56ad-0x0;var _0x52a819=_0x4584[_0xdc56ad];return _0x52a819;};'use strict';var _=require(_0x4458('0x0'));var util=require('util');var moment=require(_0x4458('0x1'));var BPromise=require(_0x4458('0x2'));var rs=require(_0x4458('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4458('0x4'));var logger=require(_0x4458('0x5'))(_0x4458('0x6'));var config=require(_0x4458('0x7'));var jayson=require(_0x4458('0x8'));var client=jayson[_0x4458('0x9')][_0x4458('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x215b2d,_0x102b5f,_0x51da14){return new BPromise(function(_0x14bb0f,_0x83fb96){return client[_0x4458('0xb')](_0x215b2d,_0x51da14)[_0x4458('0xc')](function(_0x1ab8c3){logger[_0x4458('0xd')](_0x4458('0xe'),_0x102b5f,_0x4458('0xf'));logger[_0x4458('0x10')]('Migration,\x20%s,\x20%s,\x20%s',_0x102b5f,_0x4458('0xf'),JSON[_0x4458('0x11')](_0x1ab8c3));if(_0x1ab8c3[_0x4458('0x12')]){if(_0x1ab8c3[_0x4458('0x12')][_0x4458('0x13')]===0x1f4){logger['error'](_0x4458('0xe'),_0x102b5f,_0x1ab8c3['error'][_0x4458('0x14')]);return _0x83fb96(_0x1ab8c3['error'][_0x4458('0x14')]);}logger[_0x4458('0x12')]('Migration,\x20%s,\x20%s',_0x102b5f,_0x1ab8c3['error'][_0x4458('0x14')]);return _0x14bb0f(_0x1ab8c3[_0x4458('0x12')][_0x4458('0x14')]);}else{logger[_0x4458('0xd')](_0x4458('0xe'),_0x102b5f,_0x4458('0xf'));_0x14bb0f(_0x1ab8c3[_0x4458('0x15')][_0x4458('0x14')]);}})['catch'](function(_0x31e500){logger['error'](_0x4458('0xe'),_0x102b5f,_0x31e500);_0x83fb96(_0x31e500);});});}
\ No newline at end of file
+var _0x9bb4=['error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x9bb4,0xd5));var _0x49bb=function(_0x34e939,_0x2ab003){_0x34e939=_0x34e939-0x0;var _0x100679=_0x9bb4[_0x34e939];return _0x100679;};'use strict';var _=require(_0x49bb('0x0'));var util=require(_0x49bb('0x1'));var moment=require(_0x49bb('0x2'));var BPromise=require(_0x49bb('0x3'));var rs=require(_0x49bb('0x4'));var fs=require('fs');var Redis=require(_0x49bb('0x5'));var db=require(_0x49bb('0x6'))['db'];var utils=require(_0x49bb('0x7'));var logger=require(_0x49bb('0x8'))('rpc');var config=require(_0x49bb('0x9'));var jayson=require(_0x49bb('0xa'));var client=jayson[_0x49bb('0xb')][_0x49bb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4d603d,_0x15c24c,_0x353853){return new BPromise(function(_0x1a4094,_0x2967d4){return client[_0x49bb('0xd')](_0x4d603d,_0x353853)['then'](function(_0x6ba4a2){logger['info'](_0x49bb('0xe'),_0x15c24c,_0x49bb('0xf'));logger['debug'](_0x49bb('0x10'),_0x15c24c,'request\x20sent',JSON['stringify'](_0x6ba4a2));if(_0x6ba4a2[_0x49bb('0x11')]){if(_0x6ba4a2['error'][_0x49bb('0x12')]===0x1f4){logger[_0x49bb('0x11')](_0x49bb('0xe'),_0x15c24c,_0x6ba4a2[_0x49bb('0x11')][_0x49bb('0x13')]);return _0x2967d4(_0x6ba4a2[_0x49bb('0x11')][_0x49bb('0x13')]);}logger[_0x49bb('0x11')](_0x49bb('0xe'),_0x15c24c,_0x6ba4a2['error'][_0x49bb('0x13')]);return _0x1a4094(_0x6ba4a2['error'][_0x49bb('0x13')]);}else{logger[_0x49bb('0x14')](_0x49bb('0xe'),_0x15c24c,_0x49bb('0xf'));_0x1a4094(_0x6ba4a2[_0x49bb('0x15')][_0x49bb('0x13')]);}})[_0x49bb('0x16')](function(_0x11bc5f){logger['error'](_0x49bb('0xe'),_0x15c24c,_0x11bc5f);_0x2967d4(_0x11bc5f);});});}
\ No newline at end of file
index b24863d..2f59819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe978=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer','util'];(function(_0x10b2d5,_0x309bdb){var _0x538aa9=function(_0x5c939c){while(--_0x5c939c){_0x10b2d5['push'](_0x10b2d5['shift']());}};_0x538aa9(++_0x309bdb);}(_0xe978,0x70));var _0x8e97=function(_0xb77ba6,_0xbda207){_0xb77ba6=_0xb77ba6-0x0;var _0x147f99=_0xe978[_0xb77ba6];return _0x147f99;};'use strict';var multer=require(_0x8e97('0x0'));var util=require(_0x8e97('0x1'));var path=require(_0x8e97('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8e97('0x3')]();var fs_extra=require(_0x8e97('0x4'));var auth=require(_0x8e97('0x5'));var interaction=require(_0x8e97('0x6'));var config=require(_0x8e97('0x7'));var controller=require('./network.controller');router[_0x8e97('0x8')]('/',auth[_0x8e97('0x9')](),controller[_0x8e97('0xa')]);router[_0x8e97('0x8')](_0x8e97('0xb'),auth['isAuthenticated'](),controller[_0x8e97('0xc')]);router['post']('/',auth[_0x8e97('0x9')](),controller[_0x8e97('0xd')]);router[_0x8e97('0xe')]('/:id',auth[_0x8e97('0x9')](),controller[_0x8e97('0xf')]);router[_0x8e97('0x10')](_0x8e97('0xb'),auth[_0x8e97('0x9')](),controller[_0x8e97('0x11')]);module[_0x8e97('0x12')]=router;
\ No newline at end of file
+var _0x5232=['destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./network.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x21a9ad,_0x1d3ea9){var _0x4389cb=function(_0x1cf33b){while(--_0x1cf33b){_0x21a9ad['push'](_0x21a9ad['shift']());}};_0x4389cb(++_0x1d3ea9);}(_0x5232,0x1c9));var _0x2523=function(_0x2caaef,_0x3c19ed){_0x2caaef=_0x2caaef-0x0;var _0xd011f8=_0x5232[_0x2caaef];return _0xd011f8;};'use strict';var multer=require(_0x2523('0x0'));var util=require(_0x2523('0x1'));var path=require(_0x2523('0x2'));var timeout=require(_0x2523('0x3'));var express=require(_0x2523('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2523('0x5'));var interaction=require(_0x2523('0x6'));var config=require('../../config/environment');var controller=require(_0x2523('0x7'));router[_0x2523('0x8')]('/',auth[_0x2523('0x9')](),controller[_0x2523('0xa')]);router[_0x2523('0x8')](_0x2523('0xb'),auth[_0x2523('0x9')](),controller[_0x2523('0xc')]);router[_0x2523('0xd')]('/',auth[_0x2523('0x9')](),controller[_0x2523('0xe')]);router[_0x2523('0xf')]('/:id',auth[_0x2523('0x9')](),controller[_0x2523('0x10')]);router[_0x2523('0x11')](_0x2523('0xb'),auth[_0x2523('0x9')](),controller[_0x2523('0x12')]);module['exports']=router;
\ No newline at end of file
index e2b2634..94c7ac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9aa=['stun','turn','STRING','exports','ENUM','localnet','externip'];(function(_0xd307d9,_0x50e8e0){var _0x209bf8=function(_0x335069){while(--_0x335069){_0xd307d9['push'](_0xd307d9['shift']());}};_0x209bf8(++_0x50e8e0);}(_0xb9aa,0x18b));var _0xab9a=function(_0x30d4eb,_0x377d52){_0x30d4eb=_0x30d4eb-0x0;var _0x1356e5=_0xb9aa[_0x30d4eb];return _0x1356e5;};'use strict';var Sequelize=require('sequelize');module[_0xab9a('0x0')]={'type':{'type':Sequelize[_0xab9a('0x1')](_0xab9a('0x2'),_0xab9a('0x3'),_0xab9a('0x4'),_0xab9a('0x5'))},'value':{'type':Sequelize[_0xab9a('0x6')]},'username':{'type':Sequelize[_0xab9a('0x6')]},'password':{'type':Sequelize[_0xab9a('0x6')]}};
\ No newline at end of file
+var _0x6943=['turn','STRING','ENUM','localnet','externip'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x6943,0x192));var _0x3694=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0x6943[_0x1f7996];return _0x584609;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x3694('0x0')](_0x3694('0x1'),_0x3694('0x2'),'stun',_0x3694('0x3'))},'value':{'type':Sequelize[_0x3694('0x4')]},'username':{'type':Sequelize[_0x3694('0x4')]},'password':{'type':Sequelize[_0x3694('0x4')]}};
\ No newline at end of file
index 3ff96f3..feaf8f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa80b=['Network,\x20%s,\x20%s','message','result','status','json','offset','undefined','count','limit','Content-Range','end','sendStatus','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','length','includeAll','create','body','toUpperCase','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','Reload','res_stun_monitor.so','TURN','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','toLowerCase','chan_sip.so','update','find','params','join','server/files/templates/turn_multiple.ejs','format','/etc/asterisk/sip_xcally_%s.conf','STUN','destroy','util','path','ejs','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','client','http','request','then','info','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa80b,0x1aa));var _0xba80=function(_0x394798,_0x14af05){_0x394798=_0x394798-0x0;var _0x80638c=_0xa80b[_0x394798];return _0x80638c;};'use strict';var util=require(_0xba80('0x0'));var path=require(_0xba80('0x1'));var ejs=require(_0xba80('0x2'));var fs=require('fs');var _=require(_0xba80('0x3'));var qs=require(_0xba80('0x4'));var logger=require('../../config/logger')(_0xba80('0x5'));var config=require(_0xba80('0x6'));var db=require(_0xba80('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xba80('0x8')][_0xba80('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x49db8c,_0xf44041,_0x5ba2c5,_0x4f23cc){return new Promise(function(_0xb07f04,_0x442b29){var _0x5ee1a6=_0x4f23cc||client;return _0x5ee1a6[_0xba80('0xa')](_0x49db8c,_0x5ba2c5)[_0xba80('0xb')](function(_0x398c0b){logger[_0xba80('0xc')]('Network,\x20%s,\x20%s',_0xf44041,_0xba80('0xd'));logger[_0xba80('0xe')](_0xba80('0xf'),_0xf44041,_0xba80('0xd'),JSON[_0xba80('0x10')](_0x398c0b));if(_0x398c0b[_0xba80('0x11')]){if(_0x398c0b[_0xba80('0x11')][_0xba80('0x12')]===0x1f4){logger[_0xba80('0x11')](_0xba80('0x13'),_0xf44041,_0x398c0b[_0xba80('0x11')][_0xba80('0x14')]);return _0x442b29(_0x398c0b[_0xba80('0x11')][_0xba80('0x14')]);}logger['error'](_0xba80('0x13'),_0xf44041,_0x398c0b['error']['message']);return _0xb07f04(_0x398c0b[_0xba80('0x11')][_0xba80('0x14')]);}else{logger['info'](_0xba80('0x13'),_0xf44041,'request\x20sent');_0xb07f04(_0x398c0b[_0xba80('0x15')]['message']);}})['catch'](function(_0x54288e){logger[_0xba80('0x11')](_0xba80('0x13'),_0xf44041,_0x54288e);_0x442b29(_0x54288e);});});}function respondWithResult(_0x1df00a,_0x53bb39){_0x53bb39=_0x53bb39||0xc8;return function(_0xd3b52e){if(_0xd3b52e){return _0x1df00a[_0xba80('0x16')](_0x53bb39)[_0xba80('0x17')](_0xd3b52e);}};}function respondWithFilteredResult(_0x183514,_0x3579a6){return function(_0x24705c){if(_0x24705c){var _0x211f8b=typeof _0x3579a6[_0xba80('0x18')]===_0xba80('0x19')&&typeof _0x3579a6['limit']===_0xba80('0x19');var _0x1da0c1=_0x24705c[_0xba80('0x1a')];var _0x27daef=_0x211f8b?0x0:_0x3579a6[_0xba80('0x18')];var _0x21ac62=_0x211f8b?_0x24705c[_0xba80('0x1a')]:_0x3579a6[_0xba80('0x18')]+_0x3579a6[_0xba80('0x1b')];var _0x392031;if(_0x21ac62>=_0x1da0c1){_0x21ac62=_0x1da0c1;_0x392031=0xc8;}else{_0x392031=0xce;}_0x183514[_0xba80('0x16')](_0x392031);return _0x183514['set'](_0xba80('0x1c'),_0x27daef+'-'+_0x21ac62+'/'+_0x1da0c1)[_0xba80('0x17')](_0x24705c);}return null;};}function saveUpdates(_0x55e36d){return function(_0x5db35e){if(_0x5db35e){return _0x5db35e['update'](_0x55e36d)[_0xba80('0xb')](function(_0x467457){return _0x467457;});}return null;};}function removeEntity(_0x52f49d){return function(_0x36dfd7){if(_0x36dfd7){return _0x36dfd7['destroy']()[_0xba80('0xb')](function(){_0x52f49d[_0xba80('0x16')](0xcc)[_0xba80('0x1d')]();});}};}function handleEntityNotFound(_0x1715dd){return function(_0x46661c){if(!_0x46661c){_0x1715dd[_0xba80('0x1e')](0x194);}return _0x46661c;};}function handleError(_0x47e6e1,_0x5c6305){_0x5c6305=_0x5c6305||0x1f4;return function(_0x26e2a7){logger['error'](_0x26e2a7[_0xba80('0x1f')]);if(_0x26e2a7[_0xba80('0x20')]){delete _0x26e2a7['name'];}_0x47e6e1[_0xba80('0x16')](_0x5c6305)[_0xba80('0x21')](_0x26e2a7);};}exports[_0xba80('0x22')]=function(_0x20eafc,_0x4320d2){var _0x52e9f0={},_0xe2fcb4={},_0x292f62={'count':0x0,'rows':[]};var _0x127d05=_[_0xba80('0x23')](db[_0xba80('0x24')][_0xba80('0x25')],function(_0x4a2cea){return{'name':_0x4a2cea[_0xba80('0x26')],'type':_0x4a2cea[_0xba80('0x27')][_0xba80('0x28')]};});_0xe2fcb4[_0xba80('0x29')]=_[_0xba80('0x23')](_0x127d05,_0xba80('0x20'));_0xe2fcb4[_0xba80('0x2a')]=_[_0xba80('0x2b')](_0x20eafc['query']);_0xe2fcb4['filters']=_[_0xba80('0x2c')](_0xe2fcb4[_0xba80('0x29')],_0xe2fcb4['query']);_0x52e9f0[_0xba80('0x2d')]=_[_0xba80('0x2c')](_0xe2fcb4[_0xba80('0x29')],qs[_0xba80('0x2e')](_0x20eafc['query'][_0xba80('0x2e')]));_0x52e9f0[_0xba80('0x2d')]=_0x52e9f0[_0xba80('0x2d')]['length']?_0x52e9f0[_0xba80('0x2d')]:_0xe2fcb4[_0xba80('0x29')];if(!_0x20eafc['query'][_0xba80('0x2f')](_0xba80('0x30'))){_0x52e9f0[_0xba80('0x1b')]=qs[_0xba80('0x1b')](_0x20eafc['query']['limit']);_0x52e9f0['offset']=qs[_0xba80('0x18')](_0x20eafc[_0xba80('0x2a')]['offset']);}_0x52e9f0[_0xba80('0x31')]=qs[_0xba80('0x32')](_0x20eafc[_0xba80('0x2a')]['sort']);_0x52e9f0[_0xba80('0x33')]=qs[_0xba80('0x34')](_[_0xba80('0x35')](_0x20eafc[_0xba80('0x2a')],_0xe2fcb4['filters']),_0x127d05);if(_0x20eafc[_0xba80('0x2a')][_0xba80('0x36')]){_0x52e9f0[_0xba80('0x33')]=_[_0xba80('0x37')](_0x52e9f0['where'],{'$or':_[_0xba80('0x23')](_0x127d05,function(_0x3c01ed){if(_0x3c01ed[_0xba80('0x27')]!=='VIRTUAL'){var _0x3c7e3a={};_0x3c7e3a[_0x3c01ed['name']]={'$like':'%'+_0x20eafc[_0xba80('0x2a')][_0xba80('0x36')]+'%'};return _0x3c7e3a;}})});}_0x52e9f0=_['merge']({},_0x52e9f0,_0x20eafc[_0xba80('0x38')]);var _0x9769ca={'where':_0x52e9f0[_0xba80('0x33')]};return db[_0xba80('0x24')]['count'](_0x9769ca)[_0xba80('0xb')](function(_0x3766d1){_0x292f62['count']=_0x3766d1;if(_0x20eafc[_0xba80('0x2a')]['includeAll']){_0x52e9f0[_0xba80('0x39')]=[{'all':!![]}];}return db[_0xba80('0x24')][_0xba80('0x3a')](_0x52e9f0);})[_0xba80('0xb')](function(_0x5816f8){_0x292f62[_0xba80('0x3b')]=_0x5816f8;return _0x292f62;})[_0xba80('0xb')](respondWithFilteredResult(_0x4320d2,_0x52e9f0))[_0xba80('0x3c')](handleError(_0x4320d2,null));};exports[_0xba80('0x3d')]=function(_0x3bc6e1,_0x393d45){var _0x2c0de6={'raw':!![],'where':{'id':_0x3bc6e1['params']['id']}},_0x1a53dd={};_0x1a53dd[_0xba80('0x29')]=_[_0xba80('0x2b')](db[_0xba80('0x24')][_0xba80('0x25')]);_0x1a53dd['query']=_[_0xba80('0x2b')](_0x3bc6e1[_0xba80('0x2a')]);_0x1a53dd[_0xba80('0x34')]=_[_0xba80('0x2c')](_0x1a53dd[_0xba80('0x29')],_0x1a53dd[_0xba80('0x2a')]);_0x2c0de6[_0xba80('0x2d')]=_[_0xba80('0x2c')](_0x1a53dd[_0xba80('0x29')],qs['fields'](_0x3bc6e1['query']['fields']));_0x2c0de6[_0xba80('0x2d')]=_0x2c0de6[_0xba80('0x2d')][_0xba80('0x3e')]?_0x2c0de6[_0xba80('0x2d')]:_0x1a53dd[_0xba80('0x29')];if(_0x3bc6e1['query'][_0xba80('0x3f')]){_0x2c0de6['include']=[{'all':!![]}];}_0x2c0de6=_['merge']({},_0x2c0de6,_0x3bc6e1[_0xba80('0x38')]);return db[_0xba80('0x24')]['find'](_0x2c0de6)[_0xba80('0xb')](handleEntityNotFound(_0x393d45,null))[_0xba80('0xb')](respondWithResult(_0x393d45,null))[_0xba80('0x3c')](handleError(_0x393d45,null));};exports[_0xba80('0x40')]=function(_0x31cd60,_0x3c7496){var _0x280077;return db['Network']['create'](_0x31cd60[_0xba80('0x41')],{'raw':!![]})[_0xba80('0xb')](function(_0x79b289){_0x280077=_0x79b289;return db[_0xba80('0x24')][_0xba80('0x3a')]({'where':{'type':_0x31cd60[_0xba80('0x41')]['type']},'raw':!![]});})[_0xba80('0xb')](function(_0x107c89){if(_0x280077['type'][_0xba80('0x42')]()=='STUN'){var _0x4dfa75=fs[_0xba80('0x43')](path['join'](config[_0xba80('0x44')],_0xba80('0x45')),_0xba80('0x46'));var _0x28e23b=ejs['render'](_0x4dfa75,{'networks':_0x107c89||[]});fs[_0xba80('0x47')]('/etc/asterisk/stun_xcally.conf',_0x28e23b);return respondWithRpcPromise(_0xba80('0x48'),_0xba80('0x40'),{'module':_0xba80('0x49')});}else if(_0x280077['type'][_0xba80('0x42')]()==_0xba80('0x4a')){var _0xb72237=fs[_0xba80('0x43')](path['join'](config[_0xba80('0x44')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x47c801=ejs[_0xba80('0x4b')](_0xb72237,{'networks':_0x107c89||[]});fs[_0xba80('0x47')](_0xba80('0x4c'),_0x47c801);return respondWithRpcPromise('Reload','create',{'module':_0xba80('0x49')});}else{var _0x4ca144=fs['readFileSync'](path['join'](config['root'],_0xba80('0x4d')),_0xba80('0x46'));var _0x26ac91=ejs['render'](_0x4ca144,{'networks':_0x107c89||[]});fs[_0xba80('0x47')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x31cd60[_0xba80('0x41')][_0xba80('0x27')][_0xba80('0x4e')]()),_0x26ac91);return respondWithRpcPromise(_0xba80('0x48'),_0xba80('0x40'),{'module':_0xba80('0x4f')});}})[_0xba80('0xb')](function(){return _0x280077;})[_0xba80('0xb')](respondWithResult(_0x3c7496,0xc9))['catch'](handleError(_0x3c7496,null));};exports[_0xba80('0x50')]=function(_0x542f3d,_0x441999){var _0x1b94e4;return db[_0xba80('0x24')][_0xba80('0x51')]({'where':{'id':_0x542f3d[_0xba80('0x52')]['id']}})[_0xba80('0xb')](handleEntityNotFound(_0x441999,null))[_0xba80('0xb')](saveUpdates(_0x542f3d[_0xba80('0x41')],null))[_0xba80('0xb')](function(_0x253dab){if(_0x253dab){_0x1b94e4=_0x253dab;return db[_0xba80('0x24')]['findAll']({'where':{'type':_0x1b94e4[_0xba80('0x27')]},'raw':!![]});}return null;})[_0xba80('0xb')](function(_0xd1545a){if(_0x1b94e4[_0xba80('0x27')][_0xba80('0x42')]()=='STUN'){var _0x5bfe25=fs['readFileSync'](path[_0xba80('0x53')](config[_0xba80('0x44')],_0xba80('0x45')),_0xba80('0x46'));var _0x215dc4=ejs[_0xba80('0x4b')](_0x5bfe25,{'networks':_0xd1545a||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x215dc4);return respondWithRpcPromise(_0xba80('0x48'),_0xba80('0x50'),{'module':_0xba80('0x49')});}else if(_0x1b94e4[_0xba80('0x27')][_0xba80('0x42')]()==_0xba80('0x4a')){var _0x10cf06=fs[_0xba80('0x43')](path['join'](config[_0xba80('0x44')],_0xba80('0x54')),'utf8');var _0x312b7f=ejs[_0xba80('0x4b')](_0x10cf06,{'networks':_0xd1545a||[]});fs[_0xba80('0x47')](_0xba80('0x4c'),_0x312b7f);return respondWithRpcPromise('Reload',_0xba80('0x50'),{'module':_0xba80('0x49')});}else{var _0x15cf8a=fs[_0xba80('0x43')](path['join'](config['root'],'server/files/templates/network.ejs'),'utf8');var _0x4f67ca=ejs[_0xba80('0x4b')](_0x15cf8a,{'networks':_0xd1545a||[]});fs[_0xba80('0x47')](util[_0xba80('0x55')](_0xba80('0x56'),_0x542f3d[_0xba80('0x41')][_0xba80('0x27')][_0xba80('0x4e')]()),_0x4f67ca);return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});}})[_0xba80('0xb')](function(_0xd722bf){if(_0xd722bf){return _0x1b94e4;}return null;})['then'](respondWithResult(_0x441999,null))[_0xba80('0x3c')](handleError(_0x441999,null));};exports['destroy']=function(_0x54b078,_0x1e59de){var _0x4a5a56;return db[_0xba80('0x24')][_0xba80('0x51')]({'where':{'id':_0x54b078[_0xba80('0x52')]['id']}})['then'](function(_0x1ba2e3){_0x4a5a56=_0x1ba2e3;return _0x1ba2e3;})[_0xba80('0xb')](handleEntityNotFound(_0x1e59de,null))[_0xba80('0xb')](removeEntity(_0x1e59de,null))['then'](function(){if(_0x4a5a56){return db[_0xba80('0x24')][_0xba80('0x3a')]({'where':{'type':_0x4a5a56[_0xba80('0x27')]},'raw':!![]});}})[_0xba80('0xb')](function(_0x1753e7){if(_0x4a5a56['type'][_0xba80('0x42')]()==_0xba80('0x57')){var _0x541ba5=fs[_0xba80('0x43')](path['join'](config['root'],_0xba80('0x45')),'utf8');var _0x1060c4=ejs[_0xba80('0x4b')](_0x541ba5,{'networks':_0x1753e7||[]});fs[_0xba80('0x47')]('/etc/asterisk/stun_xcally.conf',_0x1060c4);return respondWithRpcPromise('Reload','destroy',{'module':'res_stun_monitor.so'});}else if(_0x4a5a56[_0xba80('0x27')]['toUpperCase']()=='TURN'){var _0x16122b=fs['readFileSync'](path['join'](config['root'],_0xba80('0x54')),'utf8');var _0x496b7a=ejs[_0xba80('0x4b')](_0x16122b,{'networks':_0x1753e7||[]});fs[_0xba80('0x47')](_0xba80('0x4c'),_0x496b7a);return respondWithRpcPromise(_0xba80('0x48'),_0xba80('0x58'),{'module':_0xba80('0x49')});}else{var _0xe1afd0=fs[_0xba80('0x43')](path[_0xba80('0x53')](config[_0xba80('0x44')],'server/files/templates/network.ejs'),'utf8');var _0x184fc2=ejs[_0xba80('0x4b')](_0xe1afd0,{'networks':_0x1753e7||[]});fs[_0xba80('0x47')](util[_0xba80('0x55')](_0xba80('0x56'),_0x4a5a56[_0xba80('0x27')][_0xba80('0x4e')]()),_0x184fc2);return respondWithRpcPromise(_0xba80('0x48'),_0xba80('0x58'),{'module':_0xba80('0x4f')});}})[_0xba80('0x3c')](handleError(_0x1e59de,null));};
\ No newline at end of file
+var _0xe1f3=['findAll','rows','show','params','keys','options','find','create','body','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','toUpperCase','TURN','readFileSync','server/files/templates/turn_multiple.ejs','res_stun_monitor.so','root','format','chan_sip.so','STUN','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','status','json','offset','undefined','limit','count','set','update','destroy','end','stack','name','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','map','VIRTUAL','merge','Network','includeAll','include'];(function(_0x226fb3,_0x238afa){var _0x1e52a6=function(_0x1191e2){while(--_0x1191e2){_0x226fb3['push'](_0x226fb3['shift']());}};_0x1e52a6(++_0x238afa);}(_0xe1f3,0x1c6));var _0x3e1f=function(_0xbde84e,_0x31ce2d){_0xbde84e=_0xbde84e-0x0;var _0x15d77f=_0xe1f3[_0xbde84e];return _0x15d77f;};'use strict';var util=require('util');var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var qs=require('../../components/parsers/qs');var logger=require(_0x3e1f('0x0'))(_0x3e1f('0x1'));var config=require(_0x3e1f('0x2'));var db=require(_0x3e1f('0x3'))['db'];var jayson=require(_0x3e1f('0x4'));var client=jayson[_0x3e1f('0x5')][_0x3e1f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4bc007,_0x38cea4,_0x402694,_0x507522){return new Promise(function(_0x3b3ab9,_0x821af6){var _0x1a0ee5=_0x507522||client;return _0x1a0ee5[_0x3e1f('0x7')](_0x4bc007,_0x402694)[_0x3e1f('0x8')](function(_0x1dcd72){logger[_0x3e1f('0x9')](_0x3e1f('0xa'),_0x38cea4,'request\x20sent');logger[_0x3e1f('0xb')](_0x3e1f('0xc'),_0x38cea4,'request\x20sent',JSON[_0x3e1f('0xd')](_0x1dcd72));if(_0x1dcd72['error']){if(_0x1dcd72[_0x3e1f('0xe')][_0x3e1f('0xf')]===0x1f4){logger[_0x3e1f('0xe')](_0x3e1f('0xa'),_0x38cea4,_0x1dcd72['error'][_0x3e1f('0x10')]);return _0x821af6(_0x1dcd72[_0x3e1f('0xe')][_0x3e1f('0x10')]);}logger['error'](_0x3e1f('0xa'),_0x38cea4,_0x1dcd72[_0x3e1f('0xe')][_0x3e1f('0x10')]);return _0x3b3ab9(_0x1dcd72[_0x3e1f('0xe')][_0x3e1f('0x10')]);}else{logger['info'](_0x3e1f('0xa'),_0x38cea4,_0x3e1f('0x11'));_0x3b3ab9(_0x1dcd72[_0x3e1f('0x12')][_0x3e1f('0x10')]);}})[_0x3e1f('0x13')](function(_0x1c259d){logger['error'](_0x3e1f('0xa'),_0x38cea4,_0x1c259d);_0x821af6(_0x1c259d);});});}function respondWithResult(_0x2c1214,_0x100336){_0x100336=_0x100336||0xc8;return function(_0x1e3d38){if(_0x1e3d38){return _0x2c1214[_0x3e1f('0x14')](_0x100336)[_0x3e1f('0x15')](_0x1e3d38);}};}function respondWithFilteredResult(_0x271f97,_0x471d54){return function(_0xa9e4ed){if(_0xa9e4ed){var _0x976320=typeof _0x471d54[_0x3e1f('0x16')]===_0x3e1f('0x17')&&typeof _0x471d54[_0x3e1f('0x18')]===_0x3e1f('0x17');var _0x4add55=_0xa9e4ed[_0x3e1f('0x19')];var _0x511819=_0x976320?0x0:_0x471d54[_0x3e1f('0x16')];var _0x22ff02=_0x976320?_0xa9e4ed[_0x3e1f('0x19')]:_0x471d54[_0x3e1f('0x16')]+_0x471d54[_0x3e1f('0x18')];var _0x5778e5;if(_0x22ff02>=_0x4add55){_0x22ff02=_0x4add55;_0x5778e5=0xc8;}else{_0x5778e5=0xce;}_0x271f97[_0x3e1f('0x14')](_0x5778e5);return _0x271f97[_0x3e1f('0x1a')]('Content-Range',_0x511819+'-'+_0x22ff02+'/'+_0x4add55)[_0x3e1f('0x15')](_0xa9e4ed);}return null;};}function saveUpdates(_0x4d1e67){return function(_0x4ffe1f){if(_0x4ffe1f){return _0x4ffe1f[_0x3e1f('0x1b')](_0x4d1e67)[_0x3e1f('0x8')](function(_0x35c71c){return _0x35c71c;});}return null;};}function removeEntity(_0x5cb292){return function(_0x2011e9){if(_0x2011e9){return _0x2011e9[_0x3e1f('0x1c')]()[_0x3e1f('0x8')](function(){_0x5cb292['status'](0xcc)[_0x3e1f('0x1d')]();});}};}function handleEntityNotFound(_0x2432c7){return function(_0x59428a){if(!_0x59428a){_0x2432c7['sendStatus'](0x194);}return _0x59428a;};}function handleError(_0x1237e6,_0x212aad){_0x212aad=_0x212aad||0x1f4;return function(_0x3831c9){logger[_0x3e1f('0xe')](_0x3831c9[_0x3e1f('0x1e')]);if(_0x3831c9[_0x3e1f('0x1f')]){delete _0x3831c9[_0x3e1f('0x1f')];}_0x1237e6['status'](_0x212aad)['send'](_0x3831c9);};}exports[_0x3e1f('0x20')]=function(_0x1e0d5e,_0x2217f3){var _0x345107={},_0x5748da={},_0x32cb19={'count':0x0,'rows':[]};var _0x26cd84=_['map'](db['Network'][_0x3e1f('0x21')],function(_0x1b64a4){return{'name':_0x1b64a4[_0x3e1f('0x22')],'type':_0x1b64a4[_0x3e1f('0x23')][_0x3e1f('0x24')]};});_0x5748da[_0x3e1f('0x25')]=_['map'](_0x26cd84,'name');_0x5748da['query']=_['keys'](_0x1e0d5e[_0x3e1f('0x26')]);_0x5748da[_0x3e1f('0x27')]=_[_0x3e1f('0x28')](_0x5748da['model'],_0x5748da[_0x3e1f('0x26')]);_0x345107['attributes']=_[_0x3e1f('0x28')](_0x5748da[_0x3e1f('0x25')],qs[_0x3e1f('0x29')](_0x1e0d5e[_0x3e1f('0x26')][_0x3e1f('0x29')]));_0x345107[_0x3e1f('0x2a')]=_0x345107['attributes'][_0x3e1f('0x2b')]?_0x345107['attributes']:_0x5748da[_0x3e1f('0x25')];if(!_0x1e0d5e[_0x3e1f('0x26')][_0x3e1f('0x2c')](_0x3e1f('0x2d'))){_0x345107['limit']=qs[_0x3e1f('0x18')](_0x1e0d5e['query'][_0x3e1f('0x18')]);_0x345107[_0x3e1f('0x16')]=qs[_0x3e1f('0x16')](_0x1e0d5e['query']['offset']);}_0x345107['order']=qs['sort'](_0x1e0d5e['query'][_0x3e1f('0x2e')]);_0x345107['where']=qs['filters'](_[_0x3e1f('0x2f')](_0x1e0d5e[_0x3e1f('0x26')],_0x5748da[_0x3e1f('0x27')]),_0x26cd84);if(_0x1e0d5e[_0x3e1f('0x26')][_0x3e1f('0x30')]){_0x345107[_0x3e1f('0x31')]=_['merge'](_0x345107['where'],{'$or':_[_0x3e1f('0x32')](_0x26cd84,function(_0x202517){if(_0x202517[_0x3e1f('0x23')]!==_0x3e1f('0x33')){var _0x2efa08={};_0x2efa08[_0x202517['name']]={'$like':'%'+_0x1e0d5e[_0x3e1f('0x26')][_0x3e1f('0x30')]+'%'};return _0x2efa08;}})});}_0x345107=_[_0x3e1f('0x34')]({},_0x345107,_0x1e0d5e['options']);var _0x58d913={'where':_0x345107[_0x3e1f('0x31')]};return db[_0x3e1f('0x35')][_0x3e1f('0x19')](_0x58d913)[_0x3e1f('0x8')](function(_0x434445){_0x32cb19[_0x3e1f('0x19')]=_0x434445;if(_0x1e0d5e['query'][_0x3e1f('0x36')]){_0x345107[_0x3e1f('0x37')]=[{'all':!![]}];}return db[_0x3e1f('0x35')][_0x3e1f('0x38')](_0x345107);})[_0x3e1f('0x8')](function(_0x8731ce){_0x32cb19[_0x3e1f('0x39')]=_0x8731ce;return _0x32cb19;})['then'](respondWithFilteredResult(_0x2217f3,_0x345107))[_0x3e1f('0x13')](handleError(_0x2217f3,null));};exports[_0x3e1f('0x3a')]=function(_0xb31b63,_0x3dba67){var _0x3fc41b={'raw':!![],'where':{'id':_0xb31b63[_0x3e1f('0x3b')]['id']}},_0x5e85ad={};_0x5e85ad['model']=_[_0x3e1f('0x3c')](db[_0x3e1f('0x35')][_0x3e1f('0x21')]);_0x5e85ad[_0x3e1f('0x26')]=_[_0x3e1f('0x3c')](_0xb31b63[_0x3e1f('0x26')]);_0x5e85ad[_0x3e1f('0x27')]=_[_0x3e1f('0x28')](_0x5e85ad[_0x3e1f('0x25')],_0x5e85ad[_0x3e1f('0x26')]);_0x3fc41b[_0x3e1f('0x2a')]=_[_0x3e1f('0x28')](_0x5e85ad[_0x3e1f('0x25')],qs[_0x3e1f('0x29')](_0xb31b63[_0x3e1f('0x26')]['fields']));_0x3fc41b[_0x3e1f('0x2a')]=_0x3fc41b[_0x3e1f('0x2a')]['length']?_0x3fc41b[_0x3e1f('0x2a')]:_0x5e85ad[_0x3e1f('0x25')];if(_0xb31b63[_0x3e1f('0x26')][_0x3e1f('0x36')]){_0x3fc41b['include']=[{'all':!![]}];}_0x3fc41b=_[_0x3e1f('0x34')]({},_0x3fc41b,_0xb31b63[_0x3e1f('0x3d')]);return db[_0x3e1f('0x35')][_0x3e1f('0x3e')](_0x3fc41b)[_0x3e1f('0x8')](handleEntityNotFound(_0x3dba67,null))[_0x3e1f('0x8')](respondWithResult(_0x3dba67,null))[_0x3e1f('0x13')](handleError(_0x3dba67,null));};exports[_0x3e1f('0x3f')]=function(_0x23942d,_0x3c7807){var _0x3ea266;return db[_0x3e1f('0x35')][_0x3e1f('0x3f')](_0x23942d[_0x3e1f('0x40')],{'raw':!![]})[_0x3e1f('0x8')](function(_0x55064d){_0x3ea266=_0x55064d;return db['Network']['findAll']({'where':{'type':_0x23942d[_0x3e1f('0x40')][_0x3e1f('0x23')]},'raw':!![]});})[_0x3e1f('0x8')](function(_0x2c796e){if(_0x3ea266[_0x3e1f('0x23')]['toUpperCase']()=='STUN'){var _0x159649=fs['readFileSync'](path[_0x3e1f('0x41')](config['root'],_0x3e1f('0x42')),_0x3e1f('0x43'));var _0x1890e3=ejs[_0x3e1f('0x44')](_0x159649,{'networks':_0x2c796e||[]});fs[_0x3e1f('0x45')](_0x3e1f('0x46'),_0x1890e3);return respondWithRpcPromise(_0x3e1f('0x47'),_0x3e1f('0x3f'),{'module':'res_stun_monitor.so'});}else if(_0x3ea266[_0x3e1f('0x23')][_0x3e1f('0x48')]()==_0x3e1f('0x49')){var _0x3ce1b6=fs[_0x3e1f('0x4a')](path['join'](config['root'],_0x3e1f('0x4b')),_0x3e1f('0x43'));var _0x31a948=ejs[_0x3e1f('0x44')](_0x3ce1b6,{'networks':_0x2c796e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x31a948);return respondWithRpcPromise('Reload','create',{'module':_0x3e1f('0x4c')});}else{var _0x1d7d9a=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],'server/files/templates/network.ejs'),_0x3e1f('0x43'));var _0x21dd69=ejs['render'](_0x1d7d9a,{'networks':_0x2c796e||[]});fs['writeFileSync'](util[_0x3e1f('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x23942d['body'][_0x3e1f('0x23')]['toLowerCase']()),_0x21dd69);return respondWithRpcPromise('Reload',_0x3e1f('0x3f'),{'module':_0x3e1f('0x4f')});}})[_0x3e1f('0x8')](function(){return _0x3ea266;})[_0x3e1f('0x8')](respondWithResult(_0x3c7807,0xc9))['catch'](handleError(_0x3c7807,null));};exports[_0x3e1f('0x1b')]=function(_0x2a43ed,_0x2520c3){var _0x3587ae;return db['Network'][_0x3e1f('0x3e')]({'where':{'id':_0x2a43ed['params']['id']}})[_0x3e1f('0x8')](handleEntityNotFound(_0x2520c3,null))[_0x3e1f('0x8')](saveUpdates(_0x2a43ed['body'],null))[_0x3e1f('0x8')](function(_0x5649bd){if(_0x5649bd){_0x3587ae=_0x5649bd;return db[_0x3e1f('0x35')][_0x3e1f('0x38')]({'where':{'type':_0x3587ae[_0x3e1f('0x23')]},'raw':!![]});}return null;})[_0x3e1f('0x8')](function(_0x51dae9){if(_0x3587ae['type'][_0x3e1f('0x48')]()==_0x3e1f('0x50')){var _0x34005b=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x19ee3d=ejs[_0x3e1f('0x44')](_0x34005b,{'networks':_0x51dae9||[]});fs[_0x3e1f('0x45')](_0x3e1f('0x46'),_0x19ee3d);return respondWithRpcPromise('Reload',_0x3e1f('0x1b'),{'module':'res_stun_monitor.so'});}else if(_0x3587ae[_0x3e1f('0x23')]['toUpperCase']()==_0x3e1f('0x49')){var _0x1cc534=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],'server/files/templates/turn_multiple.ejs'),_0x3e1f('0x43'));var _0x23ee74=ejs[_0x3e1f('0x44')](_0x1cc534,{'networks':_0x51dae9||[]});fs[_0x3e1f('0x45')](_0x3e1f('0x51'),_0x23ee74);return respondWithRpcPromise(_0x3e1f('0x47'),_0x3e1f('0x1b'),{'module':'res_stun_monitor.so'});}else{var _0x795534=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],_0x3e1f('0x52')),_0x3e1f('0x43'));var _0x2efa64=ejs['render'](_0x795534,{'networks':_0x51dae9||[]});fs[_0x3e1f('0x45')](util[_0x3e1f('0x4e')](_0x3e1f('0x53'),_0x2a43ed[_0x3e1f('0x40')][_0x3e1f('0x23')][_0x3e1f('0x54')]()),_0x2efa64);return respondWithRpcPromise('Reload',_0x3e1f('0x1b'),{'module':'chan_sip.so'});}})[_0x3e1f('0x8')](function(_0x4f05c1){if(_0x4f05c1){return _0x3587ae;}return null;})[_0x3e1f('0x8')](respondWithResult(_0x2520c3,null))[_0x3e1f('0x13')](handleError(_0x2520c3,null));};exports[_0x3e1f('0x1c')]=function(_0x3b598c,_0x40b237){var _0x5acf97;return db[_0x3e1f('0x35')][_0x3e1f('0x3e')]({'where':{'id':_0x3b598c[_0x3e1f('0x3b')]['id']}})[_0x3e1f('0x8')](function(_0x2818d6){_0x5acf97=_0x2818d6;return _0x2818d6;})[_0x3e1f('0x8')](handleEntityNotFound(_0x40b237,null))['then'](removeEntity(_0x40b237,null))[_0x3e1f('0x8')](function(){if(_0x5acf97){return db[_0x3e1f('0x35')][_0x3e1f('0x38')]({'where':{'type':_0x5acf97[_0x3e1f('0x23')]},'raw':!![]});}})[_0x3e1f('0x8')](function(_0x4ceaa4){if(_0x5acf97[_0x3e1f('0x23')][_0x3e1f('0x48')]()==_0x3e1f('0x50')){var _0x16fb54=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],_0x3e1f('0x42')),_0x3e1f('0x43'));var _0x479712=ejs[_0x3e1f('0x44')](_0x16fb54,{'networks':_0x4ceaa4||[]});fs['writeFileSync'](_0x3e1f('0x46'),_0x479712);return respondWithRpcPromise(_0x3e1f('0x47'),_0x3e1f('0x1c'),{'module':_0x3e1f('0x4c')});}else if(_0x5acf97[_0x3e1f('0x23')][_0x3e1f('0x48')]()==_0x3e1f('0x49')){var _0x42819a=fs[_0x3e1f('0x4a')](path[_0x3e1f('0x41')](config[_0x3e1f('0x4d')],_0x3e1f('0x4b')),_0x3e1f('0x43'));var _0x371a8d=ejs[_0x3e1f('0x44')](_0x42819a,{'networks':_0x4ceaa4||[]});fs['writeFileSync'](_0x3e1f('0x51'),_0x371a8d);return respondWithRpcPromise(_0x3e1f('0x47'),_0x3e1f('0x1c'),{'module':'res_stun_monitor.so'});}else{var _0x36855d=fs[_0x3e1f('0x4a')](path['join'](config[_0x3e1f('0x4d')],_0x3e1f('0x52')),'utf8');var _0x47e5ad=ejs[_0x3e1f('0x44')](_0x36855d,{'networks':_0x4ceaa4||[]});fs[_0x3e1f('0x45')](util['format'](_0x3e1f('0x53'),_0x5acf97[_0x3e1f('0x23')][_0x3e1f('0x54')]()),_0x47e5ad);return respondWithRpcPromise('Reload','destroy',{'module':_0x3e1f('0x4f')});}})[_0x3e1f('0x13')](handleError(_0x40b237,null));};
\ No newline at end of file
index 21420f5..26f98c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9567=['lodash','util','../../config/logger','api','moment','path','rimraf','./network.attributes','define','Network'];(function(_0x4b452c,_0x490c60){var _0x430787=function(_0xc33fdd){while(--_0xc33fdd){_0x4b452c['push'](_0x4b452c['shift']());}};_0x430787(++_0x490c60);}(_0x9567,0xdc));var _0x7956=function(_0x26f195,_0x15391e){_0x26f195=_0x26f195-0x0;var _0x1552ff=_0x9567[_0x26f195];return _0x1552ff;};'use strict';var _=require(_0x7956('0x0'));var util=require(_0x7956('0x1'));var logger=require(_0x7956('0x2'))(_0x7956('0x3'));var moment=require(_0x7956('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7956('0x5'));var rimraf=require(_0x7956('0x6'));var config=require('../../config/environment');var attributes=require(_0x7956('0x7'));module['exports']=function(_0x12c09e,_0x48c4b6){return _0x12c09e[_0x7956('0x8')](_0x7956('0x9'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5eb1=['./network.attributes','exports','define','network','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2e8b14,_0x3ca336){var _0x46c633=function(_0x33bab3){while(--_0x33bab3){_0x2e8b14['push'](_0x2e8b14['shift']());}};_0x46c633(++_0x3ca336);}(_0x5eb1,0x7c));var _0x15eb=function(_0x224436,_0x13088b){_0x224436=_0x224436-0x0;var _0x3c694a=_0x5eb1[_0x224436];return _0x3c694a;};'use strict';var _=require('lodash');var util=require(_0x15eb('0x0'));var logger=require(_0x15eb('0x1'))(_0x15eb('0x2'));var moment=require(_0x15eb('0x3'));var BPromise=require(_0x15eb('0x4'));var rp=require(_0x15eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x15eb('0x6'));var config=require(_0x15eb('0x7'));var attributes=require(_0x15eb('0x8'));module[_0x15eb('0x9')]=function(_0x47e341,_0x1be042){return _0x47e341[_0x15eb('0xa')]('Network',attributes,{'tableName':_0x15eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5447f5..320d234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x12c311,_0xb94ffb){_0x12c311=_0x12c311-0x0;var _0x184985=_0x7a54[_0x12c311];return _0x184985;};'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 _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x211ec2,_0x383d07){var _0x15ecc5=function(_0x44b08c){while(--_0x44b08c){_0x211ec2['push'](_0x211ec2['shift']());}};_0x15ecc5(++_0x383d07);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 4a1402a..4422730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d03=['destroy','delete','removeDispositions','removeAnswers','removeAgents','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','post','addDisposition','addAnswer','/:id/notify','notify','addAgents','/:id/send','send','put','/:id','update'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x4d03,0x16d));var _0x34d0=function(_0x362a54,_0x53a0f2){_0x362a54=_0x362a54-0x0;var _0x288849=_0x4d03[_0x362a54];return _0x288849;};'use strict';var multer=require('multer');var util=require(_0x34d0('0x0'));var path=require(_0x34d0('0x1'));var timeout=require(_0x34d0('0x2'));var express=require(_0x34d0('0x3'));var router=express[_0x34d0('0x4')]();var fs_extra=require(_0x34d0('0x5'));var auth=require(_0x34d0('0x6'));var interaction=require(_0x34d0('0x7'));var config=require(_0x34d0('0x8'));var controller=require(_0x34d0('0x9'));router[_0x34d0('0xa')]('/',auth[_0x34d0('0xb')](),controller['index']);router[_0x34d0('0xa')]('/describe',auth[_0x34d0('0xb')](),controller[_0x34d0('0xc')]);router[_0x34d0('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x34d0('0xd')]);router[_0x34d0('0xa')](_0x34d0('0xe'),auth[_0x34d0('0xb')](),controller[_0x34d0('0xf')]);router['get'](_0x34d0('0x10'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x11')]);router['get'](_0x34d0('0x12'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x13')]);router['get'](_0x34d0('0x14'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x15')]);router[_0x34d0('0xa')](_0x34d0('0x16'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x17')]);router['post']('/',auth[_0x34d0('0xb')](),controller['create']);router[_0x34d0('0x18')]('/:id/dispositions',auth[_0x34d0('0xb')](),controller[_0x34d0('0x19')]);router[_0x34d0('0x18')]('/:id/canned_answers',auth[_0x34d0('0xb')](),controller[_0x34d0('0x1a')]);router[_0x34d0('0x18')](_0x34d0('0x1b'),controller[_0x34d0('0x1c')]);router[_0x34d0('0x18')](_0x34d0('0x12'),auth['isAuthenticated'](),controller['addApplications']);router['post'](_0x34d0('0x16'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x1d')]);router[_0x34d0('0x18')](_0x34d0('0x1e'),auth['isAuthenticated'](),controller[_0x34d0('0x1f')]);router[_0x34d0('0x20')](_0x34d0('0x21'),auth[_0x34d0('0xb')](),controller[_0x34d0('0x22')]);router['delete'](_0x34d0('0x21'),auth['isAuthenticated'](),controller[_0x34d0('0x23')]);router[_0x34d0('0x24')](_0x34d0('0xe'),auth['isAuthenticated'](),controller[_0x34d0('0x25')]);router[_0x34d0('0x24')](_0x34d0('0x10'),auth['isAuthenticated'](),controller[_0x34d0('0x26')]);router['delete']('/:id/users',auth[_0x34d0('0xb')](),controller[_0x34d0('0x27')]);module['exports']=router;
\ No newline at end of file
+var _0x26e1=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getAnswers','/:id/applications','getApplications','/:id/users','post','create','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addAgents','/:id/send','put','delete','destroy','removeDispositions','removeAnswers','multer','util'];(function(_0x3ae65e,_0x52dbad){var _0xd6523a=function(_0x4ce67d){while(--_0x4ce67d){_0x3ae65e['push'](_0x3ae65e['shift']());}};_0xd6523a(++_0x52dbad);}(_0x26e1,0x1b8));var _0x126e=function(_0x35a19a,_0x2d26b1){_0x35a19a=_0x35a19a-0x0;var _0xb1107e=_0x26e1[_0x35a19a];return _0xb1107e;};'use strict';var multer=require(_0x126e('0x0'));var util=require(_0x126e('0x1'));var path=require('path');var timeout=require(_0x126e('0x2'));var express=require(_0x126e('0x3'));var router=express[_0x126e('0x4')]();var fs_extra=require(_0x126e('0x5'));var auth=require(_0x126e('0x6'));var interaction=require(_0x126e('0x7'));var config=require('../../config/environment');var controller=require(_0x126e('0x8'));router[_0x126e('0x9')]('/',auth[_0x126e('0xa')](),controller[_0x126e('0xb')]);router[_0x126e('0x9')](_0x126e('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x126e('0x9')](_0x126e('0xd'),auth[_0x126e('0xa')](),controller[_0x126e('0xe')]);router['get'](_0x126e('0xf'),auth[_0x126e('0xa')](),controller['getDispositions']);router[_0x126e('0x9')]('/:id/canned_answers',auth[_0x126e('0xa')](),controller[_0x126e('0x10')]);router[_0x126e('0x9')](_0x126e('0x11'),auth['isAuthenticated'](),controller[_0x126e('0x12')]);router['get']('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x126e('0x9')](_0x126e('0x13'),auth['isAuthenticated'](),controller['getAgents']);router[_0x126e('0x14')]('/',auth[_0x126e('0xa')](),controller[_0x126e('0x15')]);router[_0x126e('0x14')](_0x126e('0xf'),auth['isAuthenticated'](),controller[_0x126e('0x16')]);router[_0x126e('0x14')](_0x126e('0x17'),auth['isAuthenticated'](),controller[_0x126e('0x18')]);router['post'](_0x126e('0x19'),controller[_0x126e('0x1a')]);router['post'](_0x126e('0x11'),auth[_0x126e('0xa')](),controller['addApplications']);router[_0x126e('0x14')](_0x126e('0x13'),auth[_0x126e('0xa')](),controller[_0x126e('0x1b')]);router['post'](_0x126e('0x1c'),auth[_0x126e('0xa')](),controller['send']);router[_0x126e('0x1d')](_0x126e('0xd'),auth[_0x126e('0xa')](),controller['update']);router[_0x126e('0x1e')](_0x126e('0xd'),auth[_0x126e('0xa')](),controller[_0x126e('0x1f')]);router[_0x126e('0x1e')](_0x126e('0xf'),auth[_0x126e('0xa')](),controller[_0x126e('0x20')]);router[_0x126e('0x1e')](_0x126e('0x17'),auth[_0x126e('0xa')](),controller[_0x126e('0x21')]);router[_0x126e('0x1e')](_0x126e('0x13'),auth[_0x126e('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 8a19b88..d16b05a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a5=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0x26a5,0x93));var _0x526a=function(_0x54370b,_0x37c5f0){_0x54370b=_0x54370b-0x0;var _0x39323a=_0x26a5[_0x54370b];return _0x39323a;};'use strict';var Sequelize=require(_0x526a('0x0'));var rs=require(_0x526a('0x1'));module[_0x526a('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x526a('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x526a('0x4')]},'token':{'type':Sequelize[_0x526a('0x4')],'defaultValue':function(){return rs[_0x526a('0x5')]();}},'replyUri':{'type':Sequelize[_0x526a('0x4')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x526a('0x4')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x526a('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x526a('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x526a('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x526a('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x526a('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x526a('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x526a('0x6')],'defaultValue':![],'comment':_0x526a('0x9'),'set':function(_0x36ec48){if(!_0x36ec48)this[_0x526a('0xa')](_0x526a('0xb'),null);this[_0x526a('0xa')](_0x526a('0xc'),_0x36ec48);}}};
\ No newline at end of file
+var _0x3a0e=['BOOLEAN','INTEGER','setDataValue','mandatoryDisposition','randomstring','exports','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0xc41b4f,_0x589d84){var _0x1d413a=function(_0x584a45){while(--_0x584a45){_0xc41b4f['push'](_0xc41b4f['shift']());}};_0x1d413a(++_0x589d84);}(_0x3a0e,0x1b2));var _0xe3a0=function(_0x474aaf,_0x3e92fc){_0x474aaf=_0x474aaf-0x0;var _0x31d1a5=_0x3a0e[_0x474aaf];return _0x31d1a5;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xe3a0('0x0'));module[_0xe3a0('0x1')]={'name':{'type':Sequelize[_0xe3a0('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xe3a0('0x3')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xe3a0('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xe3a0('0x4')],'defaultValue':function(){return _0xe3a0('0x5');}},'notificationSound':{'type':Sequelize[_0xe3a0('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe3a0('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xe3a0('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe3a0('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe3a0('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe3a0('0x7')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5220b0){if(!_0x5220b0)this[_0xe3a0('0x8')]('mandatoryDispositionPauseId',null);this[_0xe3a0('0x8')](_0xe3a0('0x9'),_0x5220b0);}}};
\ No newline at end of file
index 4962ddc..b559b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b3=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','rawAttributes','find','create','body','user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','OpenchannelAccountId','getDispositions','Disposition','include','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','includes','CmList','List','Contacts','DESC','OpenchannelApplication','account','Applications','list','orderBy','applications','priority','asc','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','messageId','interaction','created','autoclose','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','internal','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','push','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','info','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelAccount,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x198382,_0x3ecab6){var _0x507be2=function(_0x2c6db5){while(--_0x2c6db5){_0x198382['push'](_0x198382['shift']());}};_0x507be2(++_0x3ecab6);}(_0xa6b3,0x72));var _0x3a6b=function(_0x13a9c5,_0x2619fd){_0x13a9c5=_0x13a9c5-0x0;var _0xfd2536=_0xa6b3[_0x13a9c5];return _0xfd2536;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3a6b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a6b('0x1'));var rp=require('request-promise');var moment=require(_0x3a6b('0x2'));var BPromise=require(_0x3a6b('0x3'));var Mustache=require('mustache');var util=require(_0x3a6b('0x4'));var path=require(_0x3a6b('0x5'));var sox=require(_0x3a6b('0x6'));var csv=require(_0x3a6b('0x7'));var ejs=require(_0x3a6b('0x8'));var fs=require('fs');var fs_extra=require(_0x3a6b('0x9'));var _=require('lodash');var squel=require(_0x3a6b('0xa'));var crypto=require(_0x3a6b('0xb'));var jsforce=require(_0x3a6b('0xc'));var deskjs=require(_0x3a6b('0xd'));var toCsv=require(_0x3a6b('0x7'));var querystring=require('querystring');var Papa=require(_0x3a6b('0xe'));var Redis=require(_0x3a6b('0xf'));var authService=require(_0x3a6b('0x10'));var qs=require(_0x3a6b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3a6b('0x12'));var logger=require('../../config/logger')(_0x3a6b('0x13'));var utils=require(_0x3a6b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3a6b('0x15'));var db=require(_0x3a6b('0x16'))['db'];config[_0x3a6b('0x17')]=_[_0x3a6b('0x18')](config[_0x3a6b('0x17')],{'host':_0x3a6b('0x19'),'port':0x18eb});var socket=require(_0x3a6b('0x1a'))(new Redis(config[_0x3a6b('0x17')]));require(_0x3a6b('0x1b'))[_0x3a6b('0x1c')](socket);var jayson=require(_0x3a6b('0x1d'));var client=jayson['client'][_0x3a6b('0x1e')]({'port':0x232c});var client9002=jayson[_0x3a6b('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x243014,_0x20af8a,_0x76583b,_0x5e5865){return new BPromise(function(_0x264acd,_0x1311ca){var _0x58808c=_0x5e5865||client;return _0x58808c[_0x3a6b('0x20')](_0x243014,_0x76583b)[_0x3a6b('0x21')](function(_0xf0f504){logger[_0x3a6b('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x20af8a,_0x3a6b('0x23'));logger['debug'](_0x3a6b('0x24'),_0x20af8a,_0x3a6b('0x23'),JSON[_0x3a6b('0x25')](_0xf0f504));if(_0xf0f504[_0x3a6b('0x26')]){if(_0xf0f504[_0x3a6b('0x26')]['code']===0x1f4){logger[_0x3a6b('0x26')](_0x3a6b('0x27'),_0x20af8a,_0xf0f504[_0x3a6b('0x26')][_0x3a6b('0x28')]);return _0x1311ca(_0xf0f504['error'][_0x3a6b('0x28')]);}logger[_0x3a6b('0x26')](_0x3a6b('0x27'),_0x20af8a,_0xf0f504['error'][_0x3a6b('0x28')]);return _0x264acd(_0xf0f504['error'][_0x3a6b('0x28')]);}else{logger[_0x3a6b('0x22')](_0x3a6b('0x27'),_0x20af8a,_0x3a6b('0x23'));_0x264acd(_0xf0f504['result']['message']);}})[_0x3a6b('0x29')](function(_0x175165){logger['error'](_0x3a6b('0x27'),_0x20af8a,_0x175165);_0x1311ca(_0x175165);});});}function respondWithStatusCode(_0x42bed5,_0x229cd1){_0x229cd1=_0x229cd1||0xcc;return function(_0x49f0a8){if(_0x49f0a8){return _0x42bed5[_0x3a6b('0x2a')](_0x229cd1);}return _0x42bed5[_0x3a6b('0x2b')](_0x229cd1)[_0x3a6b('0x2c')]();};}function respondWithResult(_0x54757e,_0x49f5da){_0x49f5da=_0x49f5da||0xc8;return function(_0x2a5010){if(_0x2a5010){return _0x54757e['status'](_0x49f5da)[_0x3a6b('0x2d')](_0x2a5010);}};}function respondWithFilteredResult(_0x38a937,_0x56203b){return function(_0x19537d){if(_0x19537d){var _0x59cc75=typeof _0x56203b[_0x3a6b('0x2e')]==='undefined'&&typeof _0x56203b['limit']===_0x3a6b('0x2f');var _0x44e752=_0x19537d[_0x3a6b('0x30')];var _0x282719=_0x59cc75?0x0:_0x56203b[_0x3a6b('0x2e')];var _0x10aa02=_0x59cc75?_0x19537d[_0x3a6b('0x30')]:_0x56203b[_0x3a6b('0x2e')]+_0x56203b[_0x3a6b('0x31')];var _0x27b485;if(_0x10aa02>=_0x44e752){_0x10aa02=_0x44e752;_0x27b485=0xc8;}else{_0x27b485=0xce;}_0x38a937[_0x3a6b('0x2b')](_0x27b485);return _0x38a937['set'](_0x3a6b('0x32'),_0x282719+'-'+_0x10aa02+'/'+_0x44e752)[_0x3a6b('0x2d')](_0x19537d);}return null;};}function patchUpdates(_0x52fb62){return function(_0xa6b0c0){try{jsonpatch[_0x3a6b('0x33')](_0xa6b0c0,_0x52fb62,!![]);}catch(_0x285614){return BPromise[_0x3a6b('0x34')](_0x285614);}return _0xa6b0c0['save']();};}function saveUpdates(_0x178806,_0x4bc2d6){return function(_0x18e408){if(_0x18e408){return _0x18e408['update'](_0x178806)[_0x3a6b('0x21')](function(_0x478d24){return _0x478d24;});}return null;};}function removeEntity(_0x11365e,_0x1e6d71){return function(_0x5c8015){if(_0x5c8015){return _0x5c8015[_0x3a6b('0x35')]()[_0x3a6b('0x21')](function(){var _0x440316=_0x5c8015[_0x3a6b('0x36')]({'plain':!![]});var _0x2dddd1=_0x3a6b('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x2dddd1,'resourceId':_0x440316['id']}})[_0x3a6b('0x21')](function(){return _0x5c8015;});})['then'](function(){_0x11365e[_0x3a6b('0x2b')](0xcc)[_0x3a6b('0x2c')]();});}};}function handleEntityNotFound(_0xef72e2,_0x129b5e){return function(_0x174849){if(!_0x174849){_0xef72e2[_0x3a6b('0x2a')](0x194);}return _0x174849;};}function handleError(_0x3a0d55,_0x944759){_0x944759=_0x944759||0x1f4;return function(_0x24d149){logger[_0x3a6b('0x26')](_0x24d149[_0x3a6b('0x38')]);if(_0x24d149[_0x3a6b('0x39')]){delete _0x24d149[_0x3a6b('0x39')];}_0x3a0d55[_0x3a6b('0x2b')](_0x944759)[_0x3a6b('0x3a')](_0x24d149);};}exports[_0x3a6b('0x3b')]=function(_0x3f5ac5,_0x36ed00){var _0x241884={'include':[{'model':db[_0x3a6b('0x3c')],'as':_0x3a6b('0x3d')}]},_0x209097={},_0x20aa58={'count':0x0,'rows':[]};var _0x3f792c=_[_0x3a6b('0x3e')](db[_0x3a6b('0x3f')]['rawAttributes'],function(_0x686922){return{'name':_0x686922[_0x3a6b('0x40')],'type':_0x686922[_0x3a6b('0x41')][_0x3a6b('0x42')]};});_0x209097['model']=_[_0x3a6b('0x3e')](_0x3f792c,_0x3a6b('0x39'));_0x209097[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0x3f5ac5[_0x3a6b('0x43')]);_0x209097[_0x3a6b('0x45')]=_['intersection'](_0x209097[_0x3a6b('0x46')],_0x209097['query']);_0x241884[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x209097['model'],qs[_0x3a6b('0x49')](_0x3f5ac5[_0x3a6b('0x43')][_0x3a6b('0x49')]));_0x241884['attributes']=_0x241884[_0x3a6b('0x47')][_0x3a6b('0x4a')]?_0x241884[_0x3a6b('0x47')]:_0x209097[_0x3a6b('0x46')];if(!_0x3f5ac5[_0x3a6b('0x43')][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0x241884[_0x3a6b('0x31')]=qs[_0x3a6b('0x31')](_0x3f5ac5[_0x3a6b('0x43')][_0x3a6b('0x31')]);_0x241884[_0x3a6b('0x2e')]=qs[_0x3a6b('0x2e')](_0x3f5ac5[_0x3a6b('0x43')]['offset']);}_0x241884[_0x3a6b('0x4d')]=qs[_0x3a6b('0x4e')](_0x3f5ac5[_0x3a6b('0x43')]['sort']);_0x241884[_0x3a6b('0x4f')]=qs['filters'](_[_0x3a6b('0x50')](_0x3f5ac5['query'],_0x209097[_0x3a6b('0x45')]),_0x3f792c);if(_0x3f5ac5[_0x3a6b('0x43')][_0x3a6b('0x51')]){_0x241884[_0x3a6b('0x4f')]=_[_0x3a6b('0x52')](_0x241884[_0x3a6b('0x4f')],{'$or':_[_0x3a6b('0x3e')](_0x3f792c,function(_0x85839b){if(_0x85839b['type']!==_0x3a6b('0x53')){var _0x27e449={};_0x27e449[_0x85839b[_0x3a6b('0x39')]]={'$like':'%'+_0x3f5ac5['query'][_0x3a6b('0x51')]+'%'};return _0x27e449;}})});}_0x241884=_[_0x3a6b('0x52')]({},_0x241884,_0x3f5ac5[_0x3a6b('0x54')]);var _0x15925a={'where':_0x241884[_0x3a6b('0x4f')]};return db['OpenchannelAccount'][_0x3a6b('0x30')](_0x15925a)[_0x3a6b('0x21')](function(_0x352d1a){_0x20aa58[_0x3a6b('0x30')]=_0x352d1a;if(_0x3f5ac5[_0x3a6b('0x43')][_0x3a6b('0x55')]){_0x241884['include']=[{'all':!![]}];}return db[_0x3a6b('0x3f')][_0x3a6b('0x56')](_0x241884);})[_0x3a6b('0x21')](function(_0xbfc5fa){_0x20aa58[_0x3a6b('0x57')]=_0xbfc5fa;return _0x20aa58;})['then'](respondWithFilteredResult(_0x36ed00,_0x241884))[_0x3a6b('0x29')](handleError(_0x36ed00,null));};exports[_0x3a6b('0x58')]=function(_0x52b799,_0x1c57d5){var _0x2530a0={'raw':![],'where':{'id':_0x52b799[_0x3a6b('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x3a6b('0x3d')}]},_0x2b4ac6={};_0x2b4ac6[_0x3a6b('0x46')]=_[_0x3a6b('0x44')](db[_0x3a6b('0x3f')][_0x3a6b('0x5a')]);_0x2b4ac6[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0x52b799['query']);_0x2b4ac6[_0x3a6b('0x45')]=_[_0x3a6b('0x48')](_0x2b4ac6[_0x3a6b('0x46')],_0x2b4ac6[_0x3a6b('0x43')]);_0x2530a0[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x2b4ac6[_0x3a6b('0x46')],qs[_0x3a6b('0x49')](_0x52b799[_0x3a6b('0x43')][_0x3a6b('0x49')]));_0x2530a0[_0x3a6b('0x47')]=_0x2530a0[_0x3a6b('0x47')][_0x3a6b('0x4a')]?_0x2530a0['attributes']:_0x2b4ac6[_0x3a6b('0x46')];if(_0x52b799[_0x3a6b('0x43')][_0x3a6b('0x55')]){_0x2530a0['include']=[{'all':!![]}];}_0x2530a0=_[_0x3a6b('0x52')]({},_0x2530a0,_0x52b799['options']);return db['OpenchannelAccount'][_0x3a6b('0x5b')](_0x2530a0)[_0x3a6b('0x21')](handleEntityNotFound(_0x1c57d5,null))['then'](respondWithResult(_0x1c57d5,null))[_0x3a6b('0x29')](handleError(_0x1c57d5,null));};exports[_0x3a6b('0x5c')]=function(_0x5207f7,_0x5bb2ce){return db[_0x3a6b('0x3f')]['create'](_0x5207f7[_0x3a6b('0x5d')],{})[_0x3a6b('0x21')](function(_0x3ad28f){var _0x56f37f=_0x5207f7[_0x3a6b('0x5e')][_0x3a6b('0x36')]({'plain':!![]});if(!_0x56f37f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56f37f[_0x3a6b('0x5f')]===_0x3a6b('0x5e')){var _0x2af3bc=_0x3ad28f['get']({'plain':!![]});var _0x1ce3ad=_0x3a6b('0x37');return db['UserProfileSection'][_0x3a6b('0x5b')]({'where':{'name':_0x1ce3ad,'userProfileId':_0x56f37f['userProfileId']},'raw':!![]})['then'](function(_0x5cbbd0){if(_0x5cbbd0&&_0x5cbbd0[_0x3a6b('0x60')]===0x0){return db[_0x3a6b('0x61')][_0x3a6b('0x5c')]({'name':_0x2af3bc[_0x3a6b('0x39')],'resourceId':_0x2af3bc['id'],'type':_0x5cbbd0[_0x3a6b('0x39')],'sectionId':_0x5cbbd0['id']},{})[_0x3a6b('0x21')](function(){return _0x3ad28f;});}else{return _0x3ad28f;}})[_0x3a6b('0x29')](function(_0x3d8161){logger[_0x3a6b('0x26')](_0x3a6b('0x62'),_0x3d8161);throw _0x3d8161;});}return _0x3ad28f;})[_0x3a6b('0x21')](respondWithResult(_0x5bb2ce,0xc9))[_0x3a6b('0x29')](handleError(_0x5bb2ce,null));};exports[_0x3a6b('0x63')]=function(_0x33ca93,_0x17854e){if(_0x33ca93['body']['id']){delete _0x33ca93[_0x3a6b('0x5d')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x33ca93['params']['id']},'include':[{'model':db[_0x3a6b('0x3c')],'as':_0x3a6b('0x3d')}]})['then'](handleEntityNotFound(_0x17854e,null))['then'](saveUpdates(_0x33ca93[_0x3a6b('0x5d')],null))[_0x3a6b('0x21')](respondWithResult(_0x17854e,null))[_0x3a6b('0x29')](handleError(_0x17854e,null));};exports['destroy']=function(_0x98f0d7,_0x454873){return db[_0x3a6b('0x3f')][_0x3a6b('0x5b')]({'where':{'id':_0x98f0d7[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x454873,null))[_0x3a6b('0x21')](removeEntity(_0x454873,null))[_0x3a6b('0x29')](handleError(_0x454873,null));};exports[_0x3a6b('0x64')]=function(_0x2b044a,_0x269e90){return db[_0x3a6b('0x3f')]['describe']()['then'](respondWithResult(_0x269e90,null))[_0x3a6b('0x29')](handleError(_0x269e90,null));};exports[_0x3a6b('0x65')]=function(_0x5f3ba4,_0x1bd7b6,_0x4ee5de){if(_0x5f3ba4[_0x3a6b('0x5d')]['id']){delete _0x5f3ba4[_0x3a6b('0x5d')]['id'];}return db[_0x3a6b('0x3f')][_0x3a6b('0x5b')]({'where':{'id':_0x5f3ba4[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x1bd7b6,null))[_0x3a6b('0x21')](function(_0x4081bb){if(_0x4081bb){_0x5f3ba4[_0x3a6b('0x5d')][_0x3a6b('0x66')]=_0x4081bb['id'];return db['Disposition'][_0x3a6b('0x5c')](_0x5f3ba4[_0x3a6b('0x5d')]);}})['then'](respondWithResult(_0x1bd7b6,null))[_0x3a6b('0x29')](handleError(_0x1bd7b6,null));};exports[_0x3a6b('0x67')]=function(_0x1c7f7c,_0xa366df,_0x4033cf){var _0x3d8506={'raw':![],'where':{}};var _0x1c6dd2={};var _0x2989ec={'count':0x0,'rows':[]};return db[_0x3a6b('0x3f')]['findOne']({'where':{'id':_0x1c7f7c[_0x3a6b('0x59')]['id']}})[_0x3a6b('0x21')](handleEntityNotFound(_0xa366df,null))[_0x3a6b('0x21')](function(_0x2d0e87){if(_0x2d0e87){_0x1c6dd2['model']=_[_0x3a6b('0x44')](db['Disposition'][_0x3a6b('0x5a')]);_0x1c6dd2[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0x1c7f7c[_0x3a6b('0x43')]);_0x1c6dd2[_0x3a6b('0x45')]=_[_0x3a6b('0x48')](_0x1c6dd2[_0x3a6b('0x46')],_0x1c6dd2[_0x3a6b('0x43')]);_0x3d8506[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x1c6dd2[_0x3a6b('0x46')],qs[_0x3a6b('0x49')](_0x1c7f7c[_0x3a6b('0x43')]['fields']));_0x3d8506['attributes']=_0x3d8506[_0x3a6b('0x47')][_0x3a6b('0x4a')]?_0x3d8506['attributes']:_0x1c6dd2[_0x3a6b('0x46')];if(!_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0x3d8506[_0x3a6b('0x31')]=qs['limit'](_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x31')]);_0x3d8506[_0x3a6b('0x2e')]=qs['offset'](_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x2e')]);}_0x3d8506[_0x3a6b('0x4d')]=qs[_0x3a6b('0x4e')](_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x4e')]);_0x3d8506[_0x3a6b('0x4f')]=qs[_0x3a6b('0x45')](_[_0x3a6b('0x50')](_0x1c7f7c[_0x3a6b('0x43')],_0x1c6dd2['filters']));_0x3d8506[_0x3a6b('0x4f')][_0x3a6b('0x66')]=_0x2d0e87['id'];if(_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x51')]){_0x3d8506[_0x3a6b('0x4f')]=_[_0x3a6b('0x52')](_0x3d8506[_0x3a6b('0x4f')],{'$or':_[_0x3a6b('0x3e')](_0x3d8506['attributes'],function(_0x441d83){var _0x68e45a={};_0x68e45a[_0x441d83]={'$like':'%'+_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x51')]+'%'};return _0x68e45a;})});}_0x3d8506=_['merge']({},_0x3d8506,_0x1c7f7c['options']);return db[_0x3a6b('0x68')][_0x3a6b('0x30')]({'where':_0x3d8506[_0x3a6b('0x4f')]})[_0x3a6b('0x21')](function(_0x46555e){_0x2989ec['count']=_0x46555e;if(_0x1c7f7c[_0x3a6b('0x43')][_0x3a6b('0x55')]){_0x3d8506[_0x3a6b('0x69')]=[{'all':!![]}];}return db[_0x3a6b('0x68')][_0x3a6b('0x56')](_0x3d8506);})['then'](function(_0x16105f){_0x2989ec['rows']=_0x16105f;return _0x2989ec;});}})[_0x3a6b('0x21')](respondWithFilteredResult(_0xa366df,_0x3d8506))['catch'](handleError(_0xa366df,null));};exports[_0x3a6b('0x6a')]=function(_0x59d903,_0x71d36d,_0x2c94df){return db[_0x3a6b('0x3f')][_0x3a6b('0x5b')]({'where':{'id':_0x59d903[_0x3a6b('0x59')]['id']}})[_0x3a6b('0x21')](handleEntityNotFound(_0x71d36d,null))[_0x3a6b('0x21')](function(_0x35d4bd){if(_0x35d4bd){return _0x35d4bd['removeDispositions'](_0x59d903[_0x3a6b('0x43')][_0x3a6b('0x6b')]);}})[_0x3a6b('0x21')](respondWithStatusCode(_0x71d36d,null))[_0x3a6b('0x29')](handleError(_0x71d36d,null));};exports[_0x3a6b('0x6c')]=function(_0x4d733c,_0x21af81,_0x43a92f){if(_0x4d733c[_0x3a6b('0x5d')]['id']){delete _0x4d733c[_0x3a6b('0x5d')]['id'];}return db['OpenchannelAccount'][_0x3a6b('0x5b')]({'where':{'id':_0x4d733c[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x21af81,null))[_0x3a6b('0x21')](function(_0xf52eac){if(_0xf52eac){_0x4d733c[_0x3a6b('0x5d')]['OpenchannelAccountId']=_0xf52eac['id'];return db[_0x3a6b('0x6d')][_0x3a6b('0x5c')](_0x4d733c[_0x3a6b('0x5d')]);}})[_0x3a6b('0x21')](respondWithResult(_0x21af81,null))[_0x3a6b('0x29')](handleError(_0x21af81,null));};exports[_0x3a6b('0x6e')]=function(_0xa6c5c9,_0x5b308a,_0x2c70e4){var _0x32be49={'raw':![],'where':{}};var _0x25c9c3={};var _0x4007de={'count':0x0,'rows':[]};return db[_0x3a6b('0x3f')]['findOne']({'where':{'id':_0xa6c5c9[_0x3a6b('0x59')]['id']}})[_0x3a6b('0x21')](handleEntityNotFound(_0x5b308a,null))[_0x3a6b('0x21')](function(_0x53bcb8){if(_0x53bcb8){_0x25c9c3[_0x3a6b('0x46')]=_[_0x3a6b('0x44')](db[_0x3a6b('0x6d')]['rawAttributes']);_0x25c9c3[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0xa6c5c9[_0x3a6b('0x43')]);_0x25c9c3[_0x3a6b('0x45')]=_[_0x3a6b('0x48')](_0x25c9c3[_0x3a6b('0x46')],_0x25c9c3[_0x3a6b('0x43')]);_0x32be49[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x25c9c3[_0x3a6b('0x46')],qs[_0x3a6b('0x49')](_0xa6c5c9['query'][_0x3a6b('0x49')]));_0x32be49['attributes']=_0x32be49[_0x3a6b('0x47')]['length']?_0x32be49['attributes']:_0x25c9c3[_0x3a6b('0x46')];if(!_0xa6c5c9['query'][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0x32be49[_0x3a6b('0x31')]=qs[_0x3a6b('0x31')](_0xa6c5c9[_0x3a6b('0x43')][_0x3a6b('0x31')]);_0x32be49['offset']=qs[_0x3a6b('0x2e')](_0xa6c5c9[_0x3a6b('0x43')][_0x3a6b('0x2e')]);}_0x32be49[_0x3a6b('0x4d')]=qs[_0x3a6b('0x4e')](_0xa6c5c9['query'][_0x3a6b('0x4e')]);_0x32be49[_0x3a6b('0x4f')]=qs[_0x3a6b('0x45')](_[_0x3a6b('0x50')](_0xa6c5c9[_0x3a6b('0x43')],_0x25c9c3[_0x3a6b('0x45')]));_0x32be49[_0x3a6b('0x4f')][_0x3a6b('0x66')]=_0x53bcb8['id'];if(_0xa6c5c9[_0x3a6b('0x43')]['filter']){_0x32be49['where']=_['merge'](_0x32be49[_0x3a6b('0x4f')],{'$or':_[_0x3a6b('0x3e')](_0x32be49[_0x3a6b('0x47')],function(_0x4c5838){var _0x5f226b={};_0x5f226b[_0x4c5838]={'$like':'%'+_0xa6c5c9['query'][_0x3a6b('0x51')]+'%'};return _0x5f226b;})});}_0x32be49=_[_0x3a6b('0x52')]({},_0x32be49,_0xa6c5c9[_0x3a6b('0x54')]);return db[_0x3a6b('0x6d')][_0x3a6b('0x30')]({'where':_0x32be49['where']})[_0x3a6b('0x21')](function(_0x1afb36){_0x4007de[_0x3a6b('0x30')]=_0x1afb36;if(_0xa6c5c9[_0x3a6b('0x43')][_0x3a6b('0x55')]){_0x32be49[_0x3a6b('0x69')]=[{'all':!![]}];}return db[_0x3a6b('0x6d')][_0x3a6b('0x56')](_0x32be49);})[_0x3a6b('0x21')](function(_0x517741){_0x4007de[_0x3a6b('0x57')]=_0x517741;return _0x4007de;});}})['then'](respondWithFilteredResult(_0x5b308a,_0x32be49))[_0x3a6b('0x29')](handleError(_0x5b308a,null));};exports[_0x3a6b('0x6f')]=function(_0x67cfb5,_0x2299b6,_0x19bf4d){return db[_0x3a6b('0x3f')]['find']({'where':{'id':_0x67cfb5['params']['id']}})[_0x3a6b('0x21')](handleEntityNotFound(_0x2299b6,null))[_0x3a6b('0x21')](function(_0x3597fa){if(_0x3597fa){return _0x3597fa[_0x3a6b('0x6f')](_0x67cfb5['query']['ids']);}})[_0x3a6b('0x21')](respondWithStatusCode(_0x2299b6,null))['catch'](handleError(_0x2299b6,null));};exports[_0x3a6b('0x70')]=function(_0x1fbb2e,_0x52f056,_0x3c93b4){var _0xe3c690={'body':_0x1fbb2e[_0x3a6b('0x5d')],'channel':_0x3a6b('0x71')};var _0x23db21=[];var _0x1d8f9d=[];var _0x59fc9c={};var _0x570d7c=![];return db[_0x3a6b('0x72')][_0x3a6b('0x64')]()[_0x3a6b('0x21')](function(_0x3fa73c){if(!_0x3fa73c){throw new db[(_0x3a6b('0x73'))][(_0x3a6b('0x74'))](_0x3a6b('0x75'));}_0x23db21=_[_0x3a6b('0x76')](_[_0x3a6b('0x44')](_0x3fa73c),['createdAt',_0x3a6b('0x77')]);_0x1d8f9d=_[_0x3a6b('0x76')](_[_0x3a6b('0x44')](_0x3fa73c),[_0x3a6b('0x78'),_0x3a6b('0x77'),'CompanyId',_0x3a6b('0x79')]);if(_0x1fbb2e[_0x3a6b('0x5d')]['id']){delete _0x1fbb2e[_0x3a6b('0x5d')]['id'];}if(_['isNil'](_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7a')])){throw new db[(_0x3a6b('0x73'))][(_0x3a6b('0x74'))](_0x3a6b('0x7b'));}if(_['isNil'](_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x5d')])||_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x5d')]===''){throw new db['Sequelize'][(_0x3a6b('0x74'))](_0x3a6b('0x7c'));}if(_[_0x3a6b('0x7d')](_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7e')])){throw new db[(_0x3a6b('0x73'))][(_0x3a6b('0x74'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1d8f9d);}if(!_[_0x3a6b('0x7f')](_0x1d8f9d,_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7e')])){throw new db['Sequelize'][(_0x3a6b('0x74'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1d8f9d);}_0x59fc9c[_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7e')]]=_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7a')];})[_0x3a6b('0x21')](function(){return db[_0x3a6b('0x3f')][_0x3a6b('0x5b')]({'where':{'id':_0x1fbb2e[_0x3a6b('0x59')]['id']},'include':[{'model':db[_0x3a6b('0x80')],'as':_0x3a6b('0x81'),'include':[{'model':db[_0x3a6b('0x72')],'as':_0x3a6b('0x82'),'where':_0x59fc9c,'limit':0x1,'order':[['updatedAt',_0x3a6b('0x83')]]}]},{'model':db[_0x3a6b('0x84')],'as':'Applications'}]});})[_0x3a6b('0x21')](handleEntityNotFound(_0x52f056,null))['then'](function(_0x871294){if(_0x871294&&_0x871294[_0x3a6b('0x81')]){_0xe3c690[_0x3a6b('0x85')]=_0x871294;_0xe3c690['applications']=_0x871294[_0x3a6b('0x86')];_0xe3c690[_0x3a6b('0x87')]=_0x871294[_0x3a6b('0x81')];_0xe3c690['applications']=_[_0x3a6b('0x88')](_0xe3c690[_0x3a6b('0x89')],[_0x3a6b('0x8a')],[_0x3a6b('0x8b')]);if(_0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x86')]){delete _0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x86')];}if(_0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x81')]&&_0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x81')][_0x3a6b('0x82')]['length']){return _0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x81')][_0x3a6b('0x82')][0x0];}var _0x48c776=_['defaults'](_0x1fbb2e[_0x3a6b('0x5d')],{'firstName':_0x1fbb2e['body'][_0x3a6b('0x7a')],'ListId':_0x871294[_0x3a6b('0x79')]});_0x48c776[_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7e')]]=_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x7a')];return db[_0x3a6b('0x72')][_0x3a6b('0x5c')](_0x48c776,{'fields':_0x23db21,'raw':!![]});}})['then'](handleEntityNotFound(_0x52f056,null))[_0x3a6b('0x21')](function(_0x5394ce){_0xe3c690[_0x3a6b('0x8c')]=_0x5394ce;if(_0x5394ce){var _0x466c4c={'ContactId':_0x5394ce['id'],'OpenchannelAccountId':_0x1fbb2e['params']['id'],'from':(_0x5394ce[_0x3a6b('0x8d')]||'')+'\x20'+(_0x5394ce[_0x3a6b('0x8e')]||'')};var _0x3a7116={'OpenchannelAccountId':_0x1fbb2e[_0x3a6b('0x59')]['id'],'closed':![]};if(_0x1fbb2e['body'][_0x3a6b('0x8f')]){_0x3a7116[_0x3a6b('0x8f')]=_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x8f')];return db['OpenchannelInteraction']['find']({'where':_0x3a7116})[_0x3a6b('0x21')](function(_0x44294f){if(_0x44294f){return[_0x44294f,![]];}_0x466c4c[_0x3a6b('0x8f')]=_0x1fbb2e['body'][_0x3a6b('0x8f')];_0x466c4c['externalUrl']=_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x90')];return db[_0x3a6b('0x91')]['create'](_0x466c4c)[_0x3a6b('0x21')](function(_0x14d76f){return[_0x14d76f,!![]];});});}else{_0x3a7116[_0x3a6b('0x8f')]=null;}_0x3a7116[_0x3a6b('0x92')]=_0x5394ce['id'];return db[_0x3a6b('0x91')][_0x3a6b('0x5b')]({'where':_0x3a7116})[_0x3a6b('0x21')](function(_0x51ac00){if(_0x51ac00){return[_0x51ac00,![]];}return db['OpenchannelInteraction'][_0x3a6b('0x5c')](_0x466c4c)[_0x3a6b('0x21')](function(_0x3fdf2a){return[_0x3fdf2a,!![]];});});}})[_0x3a6b('0x93')](function(_0x47f586,_0x4c772b){if(_0x47f586){_0x570d7c=_0x4c772b;if(!_0x4c772b){var _0x3dd5e6={'from':(_0xe3c690[_0x3a6b('0x8c')][_0x3a6b('0x8d')]||'')+'\x20'+(_0xe3c690['contact'][_0x3a6b('0x8e')]||'')};if(_0x1fbb2e[_0x3a6b('0x5d')]['threadId']&&_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x94')]&&_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x8f')]!=_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x94')]){_0x3dd5e6['threadId']=_0x1fbb2e[_0x3a6b('0x5d')]['messageId'];}return _0x47f586[_0x3a6b('0x63')](_0x3dd5e6);}else{return _0x47f586;}}})[_0x3a6b('0x21')](function(_0x2b0c07){_0xe3c690[_0x3a6b('0x95')]=_0x2b0c07['get']({'plain':!![]});_0xe3c690[_0x3a6b('0x95')][_0x3a6b('0x96')]=_0x570d7c;if(_0xe3c690['interaction'][_0x3a6b('0x96')]){if(_0xe3c690[_0x3a6b('0x85')][_0x3a6b('0x97')]){_0xe3c690['applications']['push']({'id':0x0,'priority':_0xe3c690['applications'][_0x3a6b('0x4a')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x3a6b('0x98')});}}return db[_0x3a6b('0x99')][_0x3a6b('0x5c')]({'body':_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x5d')],'OpenchannelAccountId':_0x1fbb2e['params']['id'],'OpenchannelInteractionId':_0x2b0c07['id'],'direction':'in','ContactId':_0xe3c690[_0x3a6b('0x8c')]['id'],'AttachmentId':_0x1fbb2e[_0x3a6b('0x5d')][_0x3a6b('0x9a')]});})[_0x3a6b('0x21')](function(_0x3191be){_0xe3c690[_0x3a6b('0x28')]=_0x3191be;if(_0xe3c690['interaction'][_0x3a6b('0x9b')]){return db[_0x3a6b('0x9c')][_0x3a6b('0x5b')]({'attributes':['id',_0x3a6b('0x39')],'where':{'id':_0xe3c690['interaction'][_0x3a6b('0x9b')]}})[_0x3a6b('0x21')](function(_0x51c9be){if(_0x51c9be){_0xe3c690['applications'][_0x3a6b('0x9d')]({'id':0x0,'priority':0x0,'app':_0x3a6b('0x9e'),'appdata':_0x51c9be[_0x3a6b('0x39')]+','+(_0xe3c690['account'][_0x3a6b('0x9f')]||0xa),'interval':_0x3a6b('0x98')});_0xe3c690[_0x3a6b('0xa0')]=![];}return respondWithRpcPromise(_0x3a6b('0xa1'),_0x3a6b('0xa2'),_0xe3c690);});}return respondWithRpcPromise('Start','startRouting',_0xe3c690);})[_0x3a6b('0x21')](function(_0x364b9f){respondWithRpcPromise('EventManager',_0x3a6b('0xa3'),{'event':_0x3a6b('0x70'),'message':_0x364b9f},client9002);return _0x364b9f;})[_0x3a6b('0x21')](respondWithResult(_0x52f056,null))[_0x3a6b('0x29')](handleError(_0x52f056,null));};exports['addApplications']=function(_0xfd8fe2,_0x14fab6){var _0x42e14d=_0xfd8fe2['params']['id'];var _0x3fb809=_0xfd8fe2[_0x3a6b('0x5d')];var _0x56573f=0xc8;var _0x3feb48=null;return db[_0x3a6b('0xa4')][_0x3a6b('0xa5')]({'isolationLevel':db[_0x3a6b('0xa4')][_0x3a6b('0xa6')][_0x3a6b('0xa7')][_0x3a6b('0xa8')]},function(_0x21333d){return db[_0x3a6b('0x3f')][_0x3a6b('0xa9')]({'where':{'id':_0x42e14d},'transaction':_0x21333d})[_0x3a6b('0x21')](function(_0xfee149){if(_0xfee149){return db['OpenchannelApplication'][_0x3a6b('0x35')]({'where':{'OpenchannelAccountId':_0x42e14d},'transaction':_0x21333d})['then'](function(){var _0x40e87c=_[_0x3a6b('0x3e')](_0x3fb809,function(_0x501e77){_0x501e77['OpenchannelAccountId']=_0x42e14d;return _0x501e77;});return db[_0x3a6b('0x84')][_0x3a6b('0xaa')](_0x40e87c,{'transaction':_0x21333d});});}else{_0x56573f=0x194;_0x3feb48=[];}});})[_0x3a6b('0x21')](function(){if(_0x56573f!==0x194){return db[_0x3a6b('0x84')][_0x3a6b('0xab')]({'where':{'OpenchannelAccountId':_0x42e14d},'order':_0x3a6b('0x8a')})[_0x3a6b('0x21')](function(_0x1a484e){_0x3feb48=_0x1a484e;});}})[_0x3a6b('0x29')](function(_0x30ff4c){_0x56573f=0x1f4;logger[_0x3a6b('0x26')](_0x30ff4c[_0x3a6b('0x38')]);if(_0x30ff4c['name']){delete _0x30ff4c[_0x3a6b('0x39')];}_0x3feb48=_0x30ff4c;})[_0x3a6b('0xac')](function(){if(_0x3feb48===null){_0x14fab6[_0x3a6b('0x2a')](_0x56573f);}else{if(_0x56573f===0x1f4){_0x14fab6[_0x3a6b('0x2b')](_0x56573f)[_0x3a6b('0x3a')](_0x3feb48);}else{_0x14fab6[_0x3a6b('0x2b')](_0x56573f)[_0x3a6b('0x2d')](_0x3feb48);}}});};exports[_0x3a6b('0xad')]=function(_0xd0a234,_0x5c0a9b,_0x1ce7f1){var _0x376226={};var _0x40ed12={};var _0x5c984b;var _0x322c7e;return db[_0x3a6b('0x3f')][_0x3a6b('0xa9')]({'where':{'id':_0xd0a234[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x5c0a9b,null))['then'](function(_0x3f9fbc){if(_0x3f9fbc){_0x5c984b=_0x3f9fbc;_0x40ed12[_0x3a6b('0x46')]=_[_0x3a6b('0x44')](db[_0x3a6b('0x84')][_0x3a6b('0x5a')]);_0x40ed12[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0xd0a234[_0x3a6b('0x43')]);_0x40ed12[_0x3a6b('0x45')]=_[_0x3a6b('0x48')](_0x40ed12['model'],_0x40ed12[_0x3a6b('0x43')]);_0x376226[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x40ed12[_0x3a6b('0x46')],qs[_0x3a6b('0x49')](_0xd0a234['query'][_0x3a6b('0x49')]));_0x376226[_0x3a6b('0x47')]=_0x376226[_0x3a6b('0x47')]['length']?_0x376226[_0x3a6b('0x47')]:_0x40ed12[_0x3a6b('0x46')];_0x376226[_0x3a6b('0x4d')]=qs[_0x3a6b('0x4e')](_0xd0a234['query']['sort']);_0x376226[_0x3a6b('0x4f')]=qs[_0x3a6b('0x45')](_[_0x3a6b('0x50')](_0xd0a234[_0x3a6b('0x43')],_0x40ed12[_0x3a6b('0x45')]));if(_0xd0a234[_0x3a6b('0x43')][_0x3a6b('0x51')]){_0x376226[_0x3a6b('0x4f')]=_['merge'](_0x376226[_0x3a6b('0x4f')],{'$or':_[_0x3a6b('0x3e')](_0x376226[_0x3a6b('0x47')],function(_0x54c3cd){var _0x4f34af={};_0x4f34af[_0x54c3cd]={'$like':'%'+_0xd0a234[_0x3a6b('0x43')][_0x3a6b('0x51')]+'%'};return _0x4f34af;})});}_0x376226=_[_0x3a6b('0x52')]({},_0x376226,_0xd0a234['options']);return _0x5c984b['getApplications'](_0x376226);}})[_0x3a6b('0x21')](function(_0x4c0d9b){if(_0x4c0d9b){_0x322c7e=_0x4c0d9b[_0x3a6b('0x4a')];if(!_0xd0a234['query'][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0x376226[_0x3a6b('0x31')]=qs['limit'](_0xd0a234[_0x3a6b('0x43')]['limit']);_0x376226['offset']=qs[_0x3a6b('0x2e')](_0xd0a234['query'][_0x3a6b('0x2e')]);}return _0x5c984b[_0x3a6b('0xad')](_0x376226);}})['then'](function(_0x5879de){if(_0x5879de){return _0x5879de?{'count':_0x322c7e,'rows':_0x5879de}:null;}})['then'](respondWithResult(_0x5c0a9b,null))['catch'](handleError(_0x5c0a9b,null));};exports[_0x3a6b('0xae')]=function(_0x10077a,_0x32ea1c,_0x13c6ff){var _0xab3d93={'raw':![],'where':{}};var _0x51a314={};var _0x2ad6b6={'count':0x0,'rows':[]};return db[_0x3a6b('0x3f')][_0x3a6b('0xa9')]({'where':{'id':_0x10077a[_0x3a6b('0x59')]['id']}})[_0x3a6b('0x21')](handleEntityNotFound(_0x32ea1c,null))[_0x3a6b('0x21')](function(_0x444f2b){if(_0x444f2b){_0x51a314[_0x3a6b('0x46')]=_['keys'](db[_0x3a6b('0x91')][_0x3a6b('0x5a')]);_0x51a314['query']=_['keys'](_0x10077a[_0x3a6b('0x43')]);_0x51a314[_0x3a6b('0x45')]=_[_0x3a6b('0x48')](_0x51a314[_0x3a6b('0x46')],_0x51a314[_0x3a6b('0x43')]);_0xab3d93[_0x3a6b('0x47')]=_[_0x3a6b('0x48')](_0x51a314['model'],qs[_0x3a6b('0x49')](_0x10077a['query'][_0x3a6b('0x49')]));_0xab3d93[_0x3a6b('0x47')]=_0xab3d93['attributes'][_0x3a6b('0x4a')]?_0xab3d93['attributes']:_0x51a314[_0x3a6b('0x46')];if(!_0x10077a['query'][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0xab3d93['limit']=qs['limit'](_0x10077a[_0x3a6b('0x43')][_0x3a6b('0x31')]);_0xab3d93[_0x3a6b('0x2e')]=qs[_0x3a6b('0x2e')](_0x10077a[_0x3a6b('0x43')]['offset']);}_0xab3d93[_0x3a6b('0x4d')]=qs['sort'](_0x10077a['query'][_0x3a6b('0x4e')]);_0xab3d93[_0x3a6b('0x4f')]=qs[_0x3a6b('0x45')](_[_0x3a6b('0x50')](_0x10077a[_0x3a6b('0x43')],_0x51a314[_0x3a6b('0x45')]));_0xab3d93[_0x3a6b('0x4f')]['OpenchannelAccountId']=_0x444f2b['id'];if(_0x10077a[_0x3a6b('0x43')][_0x3a6b('0x51')]){_0xab3d93['where']=_['merge'](_0xab3d93[_0x3a6b('0x4f')],{'$or':_[_0x3a6b('0x3e')](_0xab3d93[_0x3a6b('0x47')],function(_0x36d957){var _0x4574f9={};_0x4574f9[_0x36d957]={'$like':'%'+_0x10077a[_0x3a6b('0x43')]['filter']+'%'};return _0x4574f9;})});}_0xab3d93=_[_0x3a6b('0x52')]({},_0xab3d93,_0x10077a[_0x3a6b('0x54')]);return db[_0x3a6b('0x91')][_0x3a6b('0x30')]({'where':_0xab3d93[_0x3a6b('0x4f')]})[_0x3a6b('0x21')](function(_0xd6c502){_0x2ad6b6[_0x3a6b('0x30')]=_0xd6c502;if(_0x10077a['query'][_0x3a6b('0x55')]){_0xab3d93['include']=[{'model':db[_0x3a6b('0x72')],'as':_0x3a6b('0xaf'),'required':![]},{'model':db[_0x3a6b('0x9c')],'as':'Owner','attributes':[_0x3a6b('0x39'),'fullname',_0x3a6b('0xb0')],'required':![]},{'model':db[_0x3a6b('0xb1')],'as':'Tags','attributes':['id',_0x3a6b('0x39'),_0x3a6b('0xb2')],'where':_0x10077a[_0x3a6b('0x43')][_0x3a6b('0xb3')]?{'id':_0x10077a[_0x3a6b('0x43')]['tag']}:undefined,'required':_0x10077a[_0x3a6b('0x43')][_0x3a6b('0xb3')]?!![]:![]}];}return db[_0x3a6b('0x91')][_0x3a6b('0x56')](_0xab3d93);})['then'](function(_0x1ea375){_0x2ad6b6[_0x3a6b('0x57')]=_0x1ea375;return _0x2ad6b6;});}})[_0x3a6b('0x21')](respondWithFilteredResult(_0x32ea1c,_0xab3d93))[_0x3a6b('0x29')](handleError(_0x32ea1c,null));};exports[_0x3a6b('0xb4')]=function(_0x5025a4,_0x4a6e2c,_0x4ab0a9){return db['OpenchannelAccount']['find']({'where':{'id':_0x5025a4[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x4a6e2c,null))[_0x3a6b('0x21')](function(_0x133056){if(_0x133056){return _0x133056[_0x3a6b('0xb4')](_0x5025a4[_0x3a6b('0x5d')][_0x3a6b('0x6b')],_[_0x3a6b('0xb5')](_0x5025a4['body'],['ids','id'])||{})[_0x3a6b('0x93')](function(_0xee9441){for(var _0x1a9ed0=0x0;_0x1a9ed0<_0x5025a4[_0x3a6b('0x5d')]['ids'][_0x3a6b('0x4a')];_0x1a9ed0+=0x1){socket[_0x3a6b('0xb6')](_0x3a6b('0xb7'),{'UserId':Number(_0x5025a4[_0x3a6b('0x5d')][_0x3a6b('0x6b')][_0x1a9ed0]),'OpenchannelAccountId':Number(_0x5025a4[_0x3a6b('0x59')]['id'])});}return _0xee9441;});}})['then'](respondWithResult(_0x4a6e2c,null))['catch'](handleError(_0x4a6e2c,null));};exports[_0x3a6b('0xb8')]=function(_0xd8ad0e,_0x443b8c,_0x35fa5c){return db[_0x3a6b('0x3f')][_0x3a6b('0x5b')]({'where':{'id':_0xd8ad0e['params']['id']}})['then'](handleEntityNotFound(_0x443b8c,null))['then'](function(_0x385d9f){if(_0x385d9f){return _0x385d9f[_0x3a6b('0xb8')](_0xd8ad0e[_0x3a6b('0x43')][_0x3a6b('0x6b')])['then'](function(){if(_['isArray'](_0xd8ad0e[_0x3a6b('0x43')][_0x3a6b('0x6b')])){for(var _0x5e84a5=0x0;_0x5e84a5<_0xd8ad0e['query'][_0x3a6b('0x6b')][_0x3a6b('0x4a')];_0x5e84a5+=0x1){socket['emit'](_0x3a6b('0xb9'),{'UserId':Number(_0xd8ad0e[_0x3a6b('0x43')][_0x3a6b('0x6b')][_0x5e84a5]),'OpenchannelAccountId':Number(_0xd8ad0e['params']['id'])});}}else{socket[_0x3a6b('0xb6')](_0x3a6b('0xb9'),{'UserId':Number(_0xd8ad0e['query'][_0x3a6b('0x6b')]),'OpenchannelAccountId':Number(_0xd8ad0e['params']['id'])});}});}})[_0x3a6b('0x21')](respondWithStatusCode(_0x443b8c,null))['catch'](handleError(_0x443b8c,null));};exports[_0x3a6b('0xba')]=function(_0x26a9f4,_0x4ed358,_0x1081b1){var _0x2755f6={};var _0x26f9d8={};var _0xa0aeac;var _0x333dda;return db[_0x3a6b('0x3f')][_0x3a6b('0xa9')]({'where':{'id':_0x26a9f4[_0x3a6b('0x59')]['id']}})['then'](handleEntityNotFound(_0x4ed358,null))[_0x3a6b('0x21')](function(_0x26e382){if(_0x26e382){_0xa0aeac=_0x26e382;_0x26f9d8[_0x3a6b('0x46')]=_['keys'](db[_0x3a6b('0x9c')][_0x3a6b('0x5a')]);_0x26f9d8[_0x3a6b('0x43')]=_[_0x3a6b('0x44')](_0x26a9f4[_0x3a6b('0x43')]);_0x26f9d8['filters']=_[_0x3a6b('0x48')](_0x26f9d8['model'],_0x26f9d8['query']);_0x2755f6['attributes']=_[_0x3a6b('0x48')](_0x26f9d8[_0x3a6b('0x46')],qs['fields'](_0x26a9f4[_0x3a6b('0x43')]['fields']));_0x2755f6[_0x3a6b('0x47')]=_0x2755f6[_0x3a6b('0x47')][_0x3a6b('0x4a')]?_0x2755f6[_0x3a6b('0x47')]:_0x26f9d8[_0x3a6b('0x46')];_0x2755f6[_0x3a6b('0x4d')]=qs[_0x3a6b('0x4e')](_0x26a9f4[_0x3a6b('0x43')][_0x3a6b('0x4e')]);_0x2755f6[_0x3a6b('0x4f')]=qs[_0x3a6b('0x45')](_[_0x3a6b('0x50')](_0x26a9f4['query'],_0x26f9d8[_0x3a6b('0x45')]));if(_0x26a9f4[_0x3a6b('0x43')][_0x3a6b('0x51')]){_0x2755f6[_0x3a6b('0x4f')]=_['merge'](_0x2755f6[_0x3a6b('0x4f')],{'$or':_['map'](_0x2755f6[_0x3a6b('0x47')],function(_0x291292){var _0x3a4b4b={};_0x3a4b4b[_0x291292]={'$like':'%'+_0x26a9f4[_0x3a6b('0x43')]['filter']+'%'};return _0x3a4b4b;})});}_0x2755f6=_['merge']({},_0x2755f6,_0x26a9f4['options']);return _0xa0aeac['getAgents'](_0x2755f6);}})[_0x3a6b('0x21')](function(_0x58f9ea){if(_0x58f9ea){_0x333dda=_0x58f9ea[_0x3a6b('0x4a')];if(!_0x26a9f4[_0x3a6b('0x43')][_0x3a6b('0x4b')](_0x3a6b('0x4c'))){_0x2755f6[_0x3a6b('0x31')]=qs[_0x3a6b('0x31')](_0x26a9f4[_0x3a6b('0x43')][_0x3a6b('0x31')]);_0x2755f6['offset']=qs[_0x3a6b('0x2e')](_0x26a9f4[_0x3a6b('0x43')]['offset']);}return _0xa0aeac[_0x3a6b('0xba')](_0x2755f6);}})[_0x3a6b('0x21')](function(_0x1b1b50){if(_0x1b1b50){return _0x1b1b50?{'count':_0x333dda,'rows':_0x1b1b50}:null;}})['then'](respondWithResult(_0x4ed358,null))[_0x3a6b('0x29')](handleError(_0x4ed358,null));};exports[_0x3a6b('0x3a')]=function(_0x42fb20,_0x1f57b7,_0x4f6ce8){var _0xe4bbc1,_0x38fc2a,_0x2de2bd;if(_[_0x3a6b('0x7d')](_0x42fb20[_0x3a6b('0x5d')][_0x3a6b('0x5d')])||_0x42fb20['body'][_0x3a6b('0x5d')]===''){throw new db[(_0x3a6b('0x73'))][(_0x3a6b('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x3a6b('0x7d')](_0x42fb20[_0x3a6b('0x5d')]['to'])){}_0xe4bbc1=_0x42fb20[_0x3a6b('0x5d')]['to'];return db[_0x3a6b('0x3f')][_0x3a6b('0xa9')]({'where':{'id':_0x42fb20['params']['id']}})['then'](handleEntityNotFound(_0x1f57b7,null))[_0x3a6b('0x21')](function(_0x37824d){if(_0x37824d){return db[_0x3a6b('0x3f')]['find']({'where':{'id':_0x37824d['id']},'include':[{'model':db[_0x3a6b('0x80')],'as':_0x3a6b('0x81'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{[_0x37824d[_0x3a6b('0x7e')]]:_0xe4bbc1},'limit':0x1,'order':[[_0x3a6b('0x77'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x1f57b7,null))[_0x3a6b('0x21')](function(_0x4c9999){if(_0x4c9999&&_0x4c9999[_0x3a6b('0x81')]){_0x38fc2a=_0x4c9999[_0x3a6b('0x36')]({'plain':!![]});if(_0x38fc2a[_0x3a6b('0x81')]&&_0x38fc2a['List'][_0x3a6b('0x82')][_0x3a6b('0x4a')]){return _0x38fc2a[_0x3a6b('0x81')][_0x3a6b('0x82')][0x0];}return db[_0x3a6b('0x72')][_0x3a6b('0x5c')](_[_0x3a6b('0x18')](_0x42fb20[_0x3a6b('0x5d')],{'firstName':_0xe4bbc1,[_0x4c9999[_0x3a6b('0x7e')]]:_0xe4bbc1,'phone':_0xe4bbc1,'ListId':_0x38fc2a[_0x3a6b('0x79')]}));}})[_0x3a6b('0x21')](handleEntityNotFound(_0x1f57b7,null))[_0x3a6b('0x21')](function(_0x1473b7){if(_0x1473b7){_0x2de2bd=_0x1473b7;return db[_0x3a6b('0x91')]['find']({'where':{'ContactId':_0x2de2bd['id'],'closed':![],'OpenchannelAccountId':_0x38fc2a['id']}})[_0x3a6b('0x21')](function(_0x20f40a){if(_0x20f40a){return[_0x20f40a,![]];}return db[_0x3a6b('0x91')]['create']({'UserId':_0x42fb20[_0x3a6b('0x5e')]['id'],'ContactId':_0x2de2bd['id'],'OpenchannelAccountId':_0x38fc2a['id'],'lastMsgDirection':'out','firstMsgDirection':_0x3a6b('0xbb'),'Messages':[_['merge'](_0x42fb20[_0x3a6b('0x5d')],{'read':![],'body':_0x42fb20['body'][_0x3a6b('0x5d')],'OpenchannelAccountId':_0x38fc2a['id'],'UserId':_0x42fb20[_0x3a6b('0x5e')]['id'],'ContactId':_0x2de2bd['id']})]},{'include':[{'model':db[_0x3a6b('0x99')],'as':_0x3a6b('0xbc')}]})[_0x3a6b('0x21')](function(_0x5d1cd3){return[_0x5d1cd3,!![]];});});}})[_0x3a6b('0x93')](function(_0x10531f,_0x1aa0e1){if(_0x1aa0e1){return _0x10531f;}return db[_0x3a6b('0x99')]['create'](_[_0x3a6b('0x52')](_0x42fb20[_0x3a6b('0x5d')],{'read':![],'body':_0x42fb20[_0x3a6b('0x5d')][_0x3a6b('0x5d')],'OpenchannelAccountId':_0x38fc2a['id'],'OpenchannelInteractionId':_0x10531f['id'],'UserId':_0x42fb20[_0x3a6b('0x5e')]['id'],'ContactId':_0x2de2bd['id']}))[_0x3a6b('0x21')](function(_0x2d25a4){_0x10531f[_0x3a6b('0xbd')][_0x3a6b('0xbc')]=[];_0x10531f[_0x3a6b('0xbd')][_0x3a6b('0xbc')][_0x3a6b('0xbe')](_0x2d25a4[_0x3a6b('0xbd')]);return _0x10531f;});});}})['then'](respondWithResult(_0x1f57b7,null))[_0x3a6b('0x29')](handleError(_0x1f57b7,null));};
\ No newline at end of file
+var _0x8782=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./openchannelAccount.socket','register','client','http','info','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','Pause','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','mandatoryDispositionPause','OpenchannelAccount','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','getDispositions','Disposition','sort','pick','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','ids','notify','openchannel','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','CmContact','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','asc','defaults','contact','threadId','OpenchannelInteraction','ContactId','spread','lastName','messageId','interaction','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','priority','finally','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring'];(function(_0x53becf,_0x33ecfd){var _0x32b252=function(_0x1d3ff5){while(--_0x1d3ff5){_0x53becf['push'](_0x53becf['shift']());}};_0x32b252(++_0x33ecfd);}(_0x8782,0x17a));var _0x2878=function(_0x470b24,_0x58a01e){_0x470b24=_0x470b24-0x0;var _0xde9b3d=_0x8782[_0x470b24];return _0xde9b3d;};'use strict';var emlformat=require(_0x2878('0x0'));var rimraf=require(_0x2878('0x1'));var zipdir=require(_0x2878('0x2'));var jsonpatch=require(_0x2878('0x3'));var rp=require(_0x2878('0x4'));var moment=require(_0x2878('0x5'));var BPromise=require(_0x2878('0x6'));var Mustache=require('mustache');var util=require(_0x2878('0x7'));var path=require(_0x2878('0x8'));var sox=require(_0x2878('0x9'));var csv=require('to-csv');var ejs=require(_0x2878('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2878('0xb'));var squel=require(_0x2878('0xc'));var crypto=require(_0x2878('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2878('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2878('0xf'));var Papa=require(_0x2878('0x10'));var Redis=require(_0x2878('0x11'));var authService=require(_0x2878('0x12'));var qs=require(_0x2878('0x13'));var as=require(_0x2878('0x14'));var hardwareService=require(_0x2878('0x15'));var logger=require(_0x2878('0x16'))(_0x2878('0x17'));var utils=require(_0x2878('0x18'));var config=require(_0x2878('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x2878('0x1a'))['db'];config[_0x2878('0x1b')]=_['defaults'](config[_0x2878('0x1b')],{'host':_0x2878('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2878('0x1b')]));require(_0x2878('0x1d'))[_0x2878('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x2878('0x1f')][_0x2878('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x19049e,_0x526908,_0x27ddd0,_0x420c66){return new BPromise(function(_0xab2c51,_0x2cba99){var _0x1e257c=_0x420c66||client;return _0x1e257c['request'](_0x19049e,_0x27ddd0)['then'](function(_0x2bb9d4){logger[_0x2878('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x526908,_0x2878('0x22'));logger['debug'](_0x2878('0x23'),_0x526908,'request\x20sent',JSON[_0x2878('0x24')](_0x2bb9d4));if(_0x2bb9d4[_0x2878('0x25')]){if(_0x2bb9d4[_0x2878('0x25')][_0x2878('0x26')]===0x1f4){logger[_0x2878('0x25')](_0x2878('0x27'),_0x526908,_0x2bb9d4[_0x2878('0x25')]['message']);return _0x2cba99(_0x2bb9d4[_0x2878('0x25')][_0x2878('0x28')]);}logger[_0x2878('0x25')](_0x2878('0x27'),_0x526908,_0x2bb9d4[_0x2878('0x25')]['message']);return _0xab2c51(_0x2bb9d4[_0x2878('0x25')][_0x2878('0x28')]);}else{logger[_0x2878('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x526908,_0x2878('0x22'));_0xab2c51(_0x2bb9d4[_0x2878('0x29')][_0x2878('0x28')]);}})[_0x2878('0x2a')](function(_0x2905f3){logger[_0x2878('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x526908,_0x2905f3);_0x2cba99(_0x2905f3);});});}function respondWithStatusCode(_0x5b057a,_0x4747bb){_0x4747bb=_0x4747bb||0xcc;return function(_0x525c2f){if(_0x525c2f){return _0x5b057a[_0x2878('0x2b')](_0x4747bb);}return _0x5b057a[_0x2878('0x2c')](_0x4747bb)[_0x2878('0x2d')]();};}function respondWithResult(_0x40b237,_0x434ad1){_0x434ad1=_0x434ad1||0xc8;return function(_0x2374df){if(_0x2374df){return _0x40b237[_0x2878('0x2c')](_0x434ad1)[_0x2878('0x2e')](_0x2374df);}};}function respondWithFilteredResult(_0x34408f,_0x2bd653){return function(_0x5d3b12){if(_0x5d3b12){var _0x4d9520=typeof _0x2bd653[_0x2878('0x2f')]===_0x2878('0x30')&&typeof _0x2bd653[_0x2878('0x31')]===_0x2878('0x30');var _0x574838=_0x5d3b12[_0x2878('0x32')];var _0x2e130c=_0x4d9520?0x0:_0x2bd653['offset'];var _0xebb330=_0x4d9520?_0x5d3b12['count']:_0x2bd653[_0x2878('0x2f')]+_0x2bd653[_0x2878('0x31')];var _0x231758;if(_0xebb330>=_0x574838){_0xebb330=_0x574838;_0x231758=0xc8;}else{_0x231758=0xce;}_0x34408f[_0x2878('0x2c')](_0x231758);return _0x34408f[_0x2878('0x33')](_0x2878('0x34'),_0x2e130c+'-'+_0xebb330+'/'+_0x574838)[_0x2878('0x2e')](_0x5d3b12);}return null;};}function patchUpdates(_0x11e1bd){return function(_0x5a3cbc){try{jsonpatch[_0x2878('0x35')](_0x5a3cbc,_0x11e1bd,!![]);}catch(_0xdf1be8){return BPromise[_0x2878('0x36')](_0xdf1be8);}return _0x5a3cbc[_0x2878('0x37')]();};}function saveUpdates(_0x403100,_0x5f0b38){return function(_0x16789b){if(_0x16789b){return _0x16789b[_0x2878('0x38')](_0x403100)[_0x2878('0x39')](function(_0x1ee142){return _0x1ee142;});}return null;};}function removeEntity(_0x380b73,_0x2bcf55){return function(_0x9e1054){if(_0x9e1054){return _0x9e1054[_0x2878('0x3a')]()[_0x2878('0x39')](function(){var _0xaee74b=_0x9e1054[_0x2878('0x3b')]({'plain':!![]});var _0x2aab3a=_0x2878('0x3c');return db[_0x2878('0x3d')][_0x2878('0x3a')]({'where':{'type':_0x2aab3a,'resourceId':_0xaee74b['id']}})[_0x2878('0x39')](function(){return _0x9e1054;});})[_0x2878('0x39')](function(){_0x380b73[_0x2878('0x2c')](0xcc)[_0x2878('0x2d')]();});}};}function handleEntityNotFound(_0x1abde4,_0x3fa2cf){return function(_0x26484e){if(!_0x26484e){_0x1abde4[_0x2878('0x2b')](0x194);}return _0x26484e;};}function handleError(_0x1a1d46,_0x40cac7){_0x40cac7=_0x40cac7||0x1f4;return function(_0x4d49d7){logger[_0x2878('0x25')](_0x4d49d7[_0x2878('0x3e')]);if(_0x4d49d7['name']){delete _0x4d49d7[_0x2878('0x3f')];}_0x1a1d46[_0x2878('0x2c')](_0x40cac7)[_0x2878('0x40')](_0x4d49d7);};}exports['index']=function(_0x561019,_0x5dadb1){var _0x17cafc={'include':[{'model':db[_0x2878('0x41')],'as':'mandatoryDispositionPause'}]},_0x3f3851={},_0x3c300a={'count':0x0,'rows':[]};var _0x45baa6=_[_0x2878('0x42')](db['OpenchannelAccount'][_0x2878('0x43')],function(_0x528dea){return{'name':_0x528dea[_0x2878('0x44')],'type':_0x528dea['type'][_0x2878('0x45')]};});_0x3f3851['model']=_[_0x2878('0x42')](_0x45baa6,_0x2878('0x3f'));_0x3f3851[_0x2878('0x46')]=_[_0x2878('0x47')](_0x561019[_0x2878('0x46')]);_0x3f3851[_0x2878('0x48')]=_[_0x2878('0x49')](_0x3f3851[_0x2878('0x4a')],_0x3f3851['query']);_0x17cafc[_0x2878('0x4b')]=_[_0x2878('0x49')](_0x3f3851[_0x2878('0x4a')],qs['fields'](_0x561019[_0x2878('0x46')][_0x2878('0x4c')]));_0x17cafc[_0x2878('0x4b')]=_0x17cafc['attributes']['length']?_0x17cafc['attributes']:_0x3f3851[_0x2878('0x4a')];if(!_0x561019[_0x2878('0x46')][_0x2878('0x4d')](_0x2878('0x4e'))){_0x17cafc[_0x2878('0x31')]=qs[_0x2878('0x31')](_0x561019[_0x2878('0x46')][_0x2878('0x31')]);_0x17cafc[_0x2878('0x2f')]=qs[_0x2878('0x2f')](_0x561019[_0x2878('0x46')][_0x2878('0x2f')]);}_0x17cafc[_0x2878('0x4f')]=qs['sort'](_0x561019['query']['sort']);_0x17cafc[_0x2878('0x50')]=qs['filters'](_['pick'](_0x561019[_0x2878('0x46')],_0x3f3851[_0x2878('0x48')]),_0x45baa6);if(_0x561019['query'][_0x2878('0x51')]){_0x17cafc['where']=_['merge'](_0x17cafc[_0x2878('0x50')],{'$or':_[_0x2878('0x42')](_0x45baa6,function(_0x3b15a5){if(_0x3b15a5[_0x2878('0x52')]!==_0x2878('0x53')){var _0x6d471a={};_0x6d471a[_0x3b15a5[_0x2878('0x3f')]]={'$like':'%'+_0x561019[_0x2878('0x46')][_0x2878('0x51')]+'%'};return _0x6d471a;}})});}_0x17cafc=_[_0x2878('0x54')]({},_0x17cafc,_0x561019[_0x2878('0x55')]);var _0x3560dd={'where':_0x17cafc['where']};return db['OpenchannelAccount'][_0x2878('0x32')](_0x3560dd)[_0x2878('0x39')](function(_0xfb4ed2){_0x3c300a[_0x2878('0x32')]=_0xfb4ed2;if(_0x561019[_0x2878('0x46')][_0x2878('0x56')]){_0x17cafc[_0x2878('0x57')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x2878('0x58')](_0x17cafc);})['then'](function(_0x2e33bc){_0x3c300a[_0x2878('0x59')]=_0x2e33bc;return _0x3c300a;})[_0x2878('0x39')](respondWithFilteredResult(_0x5dadb1,_0x17cafc))[_0x2878('0x2a')](handleError(_0x5dadb1,null));};exports[_0x2878('0x5a')]=function(_0x5030e1,_0x36e8b7){var _0x599ac0={'raw':![],'where':{'id':_0x5030e1['params']['id']},'include':[{'model':db[_0x2878('0x41')],'as':_0x2878('0x5b')}]},_0x394460={};_0x394460[_0x2878('0x4a')]=_['keys'](db[_0x2878('0x5c')]['rawAttributes']);_0x394460[_0x2878('0x46')]=_[_0x2878('0x47')](_0x5030e1['query']);_0x394460[_0x2878('0x48')]=_[_0x2878('0x49')](_0x394460[_0x2878('0x4a')],_0x394460[_0x2878('0x46')]);_0x599ac0[_0x2878('0x4b')]=_[_0x2878('0x49')](_0x394460['model'],qs['fields'](_0x5030e1[_0x2878('0x46')][_0x2878('0x4c')]));_0x599ac0[_0x2878('0x4b')]=_0x599ac0['attributes'][_0x2878('0x5d')]?_0x599ac0['attributes']:_0x394460['model'];if(_0x5030e1[_0x2878('0x46')][_0x2878('0x56')]){_0x599ac0['include']=[{'all':!![]}];}_0x599ac0=_['merge']({},_0x599ac0,_0x5030e1[_0x2878('0x55')]);return db[_0x2878('0x5c')][_0x2878('0x5e')](_0x599ac0)['then'](handleEntityNotFound(_0x36e8b7,null))[_0x2878('0x39')](respondWithResult(_0x36e8b7,null))[_0x2878('0x2a')](handleError(_0x36e8b7,null));};exports[_0x2878('0x5f')]=function(_0x51d400,_0x13f8c4){return db[_0x2878('0x5c')]['create'](_0x51d400[_0x2878('0x60')],{})['then'](function(_0x3f42d1){var _0x3d2d6e=_0x51d400[_0x2878('0x61')]['get']({'plain':!![]});if(!_0x3d2d6e)throw new Error(_0x2878('0x62'));if(_0x3d2d6e['role']===_0x2878('0x61')){var _0x3f6da6=_0x3f42d1[_0x2878('0x3b')]({'plain':!![]});var _0x452bc6='OpenchannelAccounts';return db[_0x2878('0x63')][_0x2878('0x5e')]({'where':{'name':_0x452bc6,'userProfileId':_0x3d2d6e['userProfileId']},'raw':!![]})[_0x2878('0x39')](function(_0x291e09){if(_0x291e09&&_0x291e09['autoAssociation']===0x0){return db[_0x2878('0x3d')][_0x2878('0x5f')]({'name':_0x3f6da6[_0x2878('0x3f')],'resourceId':_0x3f6da6['id'],'type':_0x291e09[_0x2878('0x3f')],'sectionId':_0x291e09['id']},{})[_0x2878('0x39')](function(){return _0x3f42d1;});}else{return _0x3f42d1;}})[_0x2878('0x2a')](function(_0x4b8623){logger['error'](_0x2878('0x64'),_0x4b8623);throw _0x4b8623;});}return _0x3f42d1;})[_0x2878('0x39')](respondWithResult(_0x13f8c4,0xc9))[_0x2878('0x2a')](handleError(_0x13f8c4,null));};exports[_0x2878('0x38')]=function(_0x44b656,_0x2d20cc){if(_0x44b656[_0x2878('0x60')]['id']){delete _0x44b656[_0x2878('0x60')]['id'];}return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x44b656[_0x2878('0x65')]['id']},'include':[{'model':db['Pause'],'as':_0x2878('0x5b')}]})[_0x2878('0x39')](handleEntityNotFound(_0x2d20cc,null))[_0x2878('0x39')](saveUpdates(_0x44b656[_0x2878('0x60')],null))[_0x2878('0x39')](respondWithResult(_0x2d20cc,null))['catch'](handleError(_0x2d20cc,null));};exports[_0x2878('0x3a')]=function(_0x7e3e26,_0x4a752c){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x7e3e26['params']['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x4a752c,null))[_0x2878('0x39')](removeEntity(_0x4a752c,null))[_0x2878('0x2a')](handleError(_0x4a752c,null));};exports['describe']=function(_0x1d5145,_0x515fa3){return db[_0x2878('0x5c')][_0x2878('0x66')]()[_0x2878('0x39')](respondWithResult(_0x515fa3,null))['catch'](handleError(_0x515fa3,null));};exports[_0x2878('0x67')]=function(_0x21c2c5,_0x42f111,_0x15df08){if(_0x21c2c5[_0x2878('0x60')]['id']){delete _0x21c2c5[_0x2878('0x60')]['id'];}return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x21c2c5[_0x2878('0x65')]['id']}})['then'](handleEntityNotFound(_0x42f111,null))['then'](function(_0x26b4ab){if(_0x26b4ab){_0x21c2c5['body'][_0x2878('0x68')]=_0x26b4ab['id'];return db['Disposition'][_0x2878('0x5f')](_0x21c2c5[_0x2878('0x60')]);}})['then'](respondWithResult(_0x42f111,null))['catch'](handleError(_0x42f111,null));};exports[_0x2878('0x69')]=function(_0x39c12f,_0x41d9cf,_0x418495){var _0x202e47={'raw':![],'where':{}};var _0x176a7a={};var _0x58778c={'count':0x0,'rows':[]};return db[_0x2878('0x5c')]['findOne']({'where':{'id':_0x39c12f[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x41d9cf,null))[_0x2878('0x39')](function(_0x53ca84){if(_0x53ca84){_0x176a7a[_0x2878('0x4a')]=_[_0x2878('0x47')](db[_0x2878('0x6a')][_0x2878('0x43')]);_0x176a7a[_0x2878('0x46')]=_[_0x2878('0x47')](_0x39c12f[_0x2878('0x46')]);_0x176a7a['filters']=_[_0x2878('0x49')](_0x176a7a[_0x2878('0x4a')],_0x176a7a[_0x2878('0x46')]);_0x202e47[_0x2878('0x4b')]=_[_0x2878('0x49')](_0x176a7a[_0x2878('0x4a')],qs['fields'](_0x39c12f[_0x2878('0x46')][_0x2878('0x4c')]));_0x202e47['attributes']=_0x202e47[_0x2878('0x4b')]['length']?_0x202e47[_0x2878('0x4b')]:_0x176a7a[_0x2878('0x4a')];if(!_0x39c12f[_0x2878('0x46')][_0x2878('0x4d')](_0x2878('0x4e'))){_0x202e47[_0x2878('0x31')]=qs[_0x2878('0x31')](_0x39c12f[_0x2878('0x46')]['limit']);_0x202e47[_0x2878('0x2f')]=qs[_0x2878('0x2f')](_0x39c12f['query']['offset']);}_0x202e47[_0x2878('0x4f')]=qs[_0x2878('0x6b')](_0x39c12f[_0x2878('0x46')][_0x2878('0x6b')]);_0x202e47[_0x2878('0x50')]=qs[_0x2878('0x48')](_[_0x2878('0x6c')](_0x39c12f['query'],_0x176a7a[_0x2878('0x48')]));_0x202e47['where']['OpenchannelAccountId']=_0x53ca84['id'];if(_0x39c12f[_0x2878('0x46')][_0x2878('0x51')]){_0x202e47['where']=_[_0x2878('0x54')](_0x202e47[_0x2878('0x50')],{'$or':_[_0x2878('0x42')](_0x202e47[_0x2878('0x4b')],function(_0x16b64c){var _0x4c27d5={};_0x4c27d5[_0x16b64c]={'$like':'%'+_0x39c12f[_0x2878('0x46')][_0x2878('0x51')]+'%'};return _0x4c27d5;})});}_0x202e47=_['merge']({},_0x202e47,_0x39c12f[_0x2878('0x55')]);return db['Disposition'][_0x2878('0x32')]({'where':_0x202e47[_0x2878('0x50')]})[_0x2878('0x39')](function(_0x3aa61b){_0x58778c['count']=_0x3aa61b;if(_0x39c12f[_0x2878('0x46')][_0x2878('0x56')]){_0x202e47[_0x2878('0x57')]=[{'all':!![]}];}return db['Disposition'][_0x2878('0x58')](_0x202e47);})[_0x2878('0x39')](function(_0x3f2a4d){_0x58778c[_0x2878('0x59')]=_0x3f2a4d;return _0x58778c;});}})[_0x2878('0x39')](respondWithFilteredResult(_0x41d9cf,_0x202e47))['catch'](handleError(_0x41d9cf,null));};exports[_0x2878('0x6d')]=function(_0x44776f,_0x146c0c,_0x3d3a15){return db['OpenchannelAccount'][_0x2878('0x5e')]({'where':{'id':_0x44776f['params']['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x146c0c,null))[_0x2878('0x39')](function(_0x15409c){if(_0x15409c){return _0x15409c[_0x2878('0x6d')](_0x44776f[_0x2878('0x46')]['ids']);}})[_0x2878('0x39')](respondWithStatusCode(_0x146c0c,null))['catch'](handleError(_0x146c0c,null));};exports[_0x2878('0x6e')]=function(_0x112d07,_0x25c463,_0x4761aa){if(_0x112d07['body']['id']){delete _0x112d07[_0x2878('0x60')]['id'];}return db[_0x2878('0x5c')]['find']({'where':{'id':_0x112d07[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x25c463,null))[_0x2878('0x39')](function(_0x39d382){if(_0x39d382){_0x112d07['body'][_0x2878('0x68')]=_0x39d382['id'];return db[_0x2878('0x6f')][_0x2878('0x5f')](_0x112d07['body']);}})[_0x2878('0x39')](respondWithResult(_0x25c463,null))[_0x2878('0x2a')](handleError(_0x25c463,null));};exports[_0x2878('0x70')]=function(_0x104ab9,_0x2a45d3,_0x1b3ac1){var _0x2f7911={'raw':![],'where':{}};var _0x12d359={};var _0x1a77bf={'count':0x0,'rows':[]};return db[_0x2878('0x5c')][_0x2878('0x71')]({'where':{'id':_0x104ab9[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x2a45d3,null))[_0x2878('0x39')](function(_0x245134){if(_0x245134){_0x12d359[_0x2878('0x4a')]=_[_0x2878('0x47')](db[_0x2878('0x6f')]['rawAttributes']);_0x12d359['query']=_[_0x2878('0x47')](_0x104ab9[_0x2878('0x46')]);_0x12d359[_0x2878('0x48')]=_[_0x2878('0x49')](_0x12d359[_0x2878('0x4a')],_0x12d359[_0x2878('0x46')]);_0x2f7911[_0x2878('0x4b')]=_[_0x2878('0x49')](_0x12d359[_0x2878('0x4a')],qs[_0x2878('0x4c')](_0x104ab9['query']['fields']));_0x2f7911[_0x2878('0x4b')]=_0x2f7911[_0x2878('0x4b')][_0x2878('0x5d')]?_0x2f7911['attributes']:_0x12d359[_0x2878('0x4a')];if(!_0x104ab9['query'][_0x2878('0x4d')](_0x2878('0x4e'))){_0x2f7911[_0x2878('0x31')]=qs[_0x2878('0x31')](_0x104ab9[_0x2878('0x46')][_0x2878('0x31')]);_0x2f7911[_0x2878('0x2f')]=qs[_0x2878('0x2f')](_0x104ab9[_0x2878('0x46')][_0x2878('0x2f')]);}_0x2f7911[_0x2878('0x4f')]=qs[_0x2878('0x6b')](_0x104ab9[_0x2878('0x46')][_0x2878('0x6b')]);_0x2f7911[_0x2878('0x50')]=qs[_0x2878('0x48')](_[_0x2878('0x6c')](_0x104ab9['query'],_0x12d359[_0x2878('0x48')]));_0x2f7911[_0x2878('0x50')][_0x2878('0x68')]=_0x245134['id'];if(_0x104ab9[_0x2878('0x46')]['filter']){_0x2f7911[_0x2878('0x50')]=_[_0x2878('0x54')](_0x2f7911[_0x2878('0x50')],{'$or':_['map'](_0x2f7911['attributes'],function(_0x1e9571){var _0x2f0a89={};_0x2f0a89[_0x1e9571]={'$like':'%'+_0x104ab9['query']['filter']+'%'};return _0x2f0a89;})});}_0x2f7911=_[_0x2878('0x54')]({},_0x2f7911,_0x104ab9[_0x2878('0x55')]);return db[_0x2878('0x6f')]['count']({'where':_0x2f7911['where']})[_0x2878('0x39')](function(_0x55b183){_0x1a77bf['count']=_0x55b183;if(_0x104ab9[_0x2878('0x46')][_0x2878('0x56')]){_0x2f7911[_0x2878('0x57')]=[{'all':!![]}];}return db[_0x2878('0x6f')][_0x2878('0x58')](_0x2f7911);})[_0x2878('0x39')](function(_0x4e7f31){_0x1a77bf[_0x2878('0x59')]=_0x4e7f31;return _0x1a77bf;});}})[_0x2878('0x39')](respondWithFilteredResult(_0x2a45d3,_0x2f7911))[_0x2878('0x2a')](handleError(_0x2a45d3,null));};exports[_0x2878('0x72')]=function(_0x33a0c2,_0x4b457d,_0x1d4e6e){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x33a0c2[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x4b457d,null))['then'](function(_0x1e348c){if(_0x1e348c){return _0x1e348c[_0x2878('0x72')](_0x33a0c2[_0x2878('0x46')][_0x2878('0x73')]);}})[_0x2878('0x39')](respondWithStatusCode(_0x4b457d,null))[_0x2878('0x2a')](handleError(_0x4b457d,null));};exports[_0x2878('0x74')]=function(_0x4a663e,_0x13ecb1,_0x24604){var _0xdde6ed={'body':_0x4a663e[_0x2878('0x60')],'channel':_0x2878('0x75')};var _0x2216c0=[];var _0x1abfea=[];var _0xbab870={};var _0x5ee433=![];return db['CmContact'][_0x2878('0x66')]()[_0x2878('0x39')](function(_0x2bd604){if(!_0x2bd604){throw new db[(_0x2878('0x76'))][(_0x2878('0x77'))](_0x2878('0x78'));}_0x2216c0=_[_0x2878('0x79')](_[_0x2878('0x47')](_0x2bd604),[_0x2878('0x7a'),_0x2878('0x7b')]);_0x1abfea=_[_0x2878('0x79')](_['keys'](_0x2bd604),[_0x2878('0x7a'),_0x2878('0x7b'),_0x2878('0x7c'),_0x2878('0x7d')]);if(_0x4a663e[_0x2878('0x60')]['id']){delete _0x4a663e[_0x2878('0x60')]['id'];}if(_[_0x2878('0x7e')](_0x4a663e['body']['from'])){throw new db[(_0x2878('0x76'))][(_0x2878('0x77'))](_0x2878('0x7f'));}if(_[_0x2878('0x7e')](_0x4a663e['body'][_0x2878('0x60')])||_0x4a663e['body']['body']===''){throw new db[(_0x2878('0x76'))][(_0x2878('0x77'))](_0x2878('0x80'));}if(_[_0x2878('0x7e')](_0x4a663e[_0x2878('0x60')][_0x2878('0x81')])){throw new db[(_0x2878('0x76'))][(_0x2878('0x77'))](_0x2878('0x82')+_0x1abfea);}if(!_[_0x2878('0x83')](_0x1abfea,_0x4a663e[_0x2878('0x60')][_0x2878('0x81')])){throw new db[(_0x2878('0x76'))]['ValidationError'](_0x2878('0x84')+_0x1abfea);}_0xbab870[_0x4a663e[_0x2878('0x60')][_0x2878('0x81')]]=_0x4a663e[_0x2878('0x60')][_0x2878('0x85')];})['then'](function(){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x4a663e[_0x2878('0x65')]['id']},'include':[{'model':db[_0x2878('0x86')],'as':_0x2878('0x87'),'include':[{'model':db[_0x2878('0x88')],'as':_0x2878('0x89'),'where':_0xbab870,'limit':0x1,'order':[[_0x2878('0x7b'),_0x2878('0x8a')]]}]},{'model':db[_0x2878('0x8b')],'as':_0x2878('0x8c')}]});})[_0x2878('0x39')](handleEntityNotFound(_0x13ecb1,null))[_0x2878('0x39')](function(_0x1f4c65){if(_0x1f4c65&&_0x1f4c65[_0x2878('0x87')]){_0xdde6ed[_0x2878('0x8d')]=_0x1f4c65;_0xdde6ed[_0x2878('0x8e')]=_0x1f4c65[_0x2878('0x8c')];_0xdde6ed[_0x2878('0x8f')]=_0x1f4c65[_0x2878('0x87')];_0xdde6ed[_0x2878('0x8e')]=_[_0x2878('0x90')](_0xdde6ed[_0x2878('0x8e')],['priority'],[_0x2878('0x91')]);if(_0xdde6ed[_0x2878('0x8d')][_0x2878('0x8c')]){delete _0xdde6ed['account'][_0x2878('0x8c')];}if(_0xdde6ed[_0x2878('0x8d')]['List']&&_0xdde6ed[_0x2878('0x8d')][_0x2878('0x87')][_0x2878('0x89')][_0x2878('0x5d')]){return _0xdde6ed[_0x2878('0x8d')][_0x2878('0x87')][_0x2878('0x89')][0x0];}var _0x2b24c9=_[_0x2878('0x92')](_0x4a663e['body'],{'firstName':_0x4a663e[_0x2878('0x60')]['from'],'ListId':_0x1f4c65[_0x2878('0x7d')]});_0x2b24c9[_0x4a663e['body'][_0x2878('0x81')]]=_0x4a663e['body'][_0x2878('0x85')];return db[_0x2878('0x88')][_0x2878('0x5f')](_0x2b24c9,{'fields':_0x2216c0,'raw':!![]});}})['then'](handleEntityNotFound(_0x13ecb1,null))[_0x2878('0x39')](function(_0x49057d){_0xdde6ed[_0x2878('0x93')]=_0x49057d;if(_0x49057d){var _0x4ac540={'ContactId':_0x49057d['id'],'OpenchannelAccountId':_0x4a663e[_0x2878('0x65')]['id'],'from':(_0x49057d['firstName']||'')+'\x20'+(_0x49057d['lastName']||'')};var _0x130aef={'OpenchannelAccountId':_0x4a663e[_0x2878('0x65')]['id'],'closed':![]};if(_0x4a663e[_0x2878('0x60')][_0x2878('0x94')]){_0x130aef['threadId']=_0x4a663e[_0x2878('0x60')][_0x2878('0x94')];return db[_0x2878('0x95')][_0x2878('0x5e')]({'where':_0x130aef})[_0x2878('0x39')](function(_0x33ec67){if(_0x33ec67){return[_0x33ec67,![]];}_0x4ac540['threadId']=_0x4a663e[_0x2878('0x60')]['threadId'];_0x4ac540['externalUrl']=_0x4a663e[_0x2878('0x60')]['externalUrl'];return db[_0x2878('0x95')]['create'](_0x4ac540)[_0x2878('0x39')](function(_0x43267d){return[_0x43267d,!![]];});});}else{_0x130aef[_0x2878('0x94')]=null;}_0x130aef[_0x2878('0x96')]=_0x49057d['id'];return db[_0x2878('0x95')][_0x2878('0x5e')]({'where':_0x130aef})[_0x2878('0x39')](function(_0x32cc33){if(_0x32cc33){return[_0x32cc33,![]];}return db['OpenchannelInteraction']['create'](_0x4ac540)[_0x2878('0x39')](function(_0x593e4e){return[_0x593e4e,!![]];});});}})[_0x2878('0x97')](function(_0x1e91ee,_0x54b32f){if(_0x1e91ee){_0x5ee433=_0x54b32f;if(!_0x54b32f){var _0xf1c7f4={'from':(_0xdde6ed[_0x2878('0x93')]['firstName']||'')+'\x20'+(_0xdde6ed[_0x2878('0x93')][_0x2878('0x98')]||'')};if(_0x4a663e[_0x2878('0x60')]['threadId']&&_0x4a663e[_0x2878('0x60')][_0x2878('0x99')]&&_0x4a663e[_0x2878('0x60')][_0x2878('0x94')]!=_0x4a663e[_0x2878('0x60')][_0x2878('0x99')]){_0xf1c7f4[_0x2878('0x94')]=_0x4a663e[_0x2878('0x60')][_0x2878('0x99')];}return _0x1e91ee[_0x2878('0x38')](_0xf1c7f4);}else{return _0x1e91ee;}}})[_0x2878('0x39')](function(_0x52560a){_0xdde6ed[_0x2878('0x9a')]=_0x52560a[_0x2878('0x3b')]({'plain':!![]});_0xdde6ed['interaction'][_0x2878('0x9b')]=_0x5ee433;if(_0xdde6ed[_0x2878('0x9a')][_0x2878('0x9b')]){if(_0xdde6ed['account']['autoclose']){_0xdde6ed['applications']['push']({'id':0x0,'priority':_0xdde6ed[_0x2878('0x8e')][_0x2878('0x5d')]+0x1,'app':_0x2878('0x9c'),'appdata':_0x2878('0x9d'),'interval':_0x2878('0x9e')});}}return db[_0x2878('0x9f')][_0x2878('0x5f')]({'body':_0x4a663e[_0x2878('0x60')][_0x2878('0x60')],'OpenchannelAccountId':_0x4a663e[_0x2878('0x65')]['id'],'OpenchannelInteractionId':_0x52560a['id'],'direction':'in','ContactId':_0xdde6ed[_0x2878('0x93')]['id'],'AttachmentId':_0x4a663e[_0x2878('0x60')][_0x2878('0xa0')]});})[_0x2878('0x39')](function(_0x136147){_0xdde6ed[_0x2878('0x28')]=_0x136147;if(_0xdde6ed['interaction'][_0x2878('0xa1')]){return db[_0x2878('0xa2')]['find']({'attributes':['id','name'],'where':{'id':_0xdde6ed[_0x2878('0x9a')][_0x2878('0xa1')]}})['then'](function(_0x3797eb){if(_0x3797eb){_0xdde6ed[_0x2878('0x8e')][_0x2878('0xa3')]({'id':0x0,'priority':0x0,'app':_0x2878('0xa4'),'appdata':_0x3797eb['name']+','+(_0xdde6ed['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0xdde6ed[_0x2878('0xa5')]=![];}return respondWithRpcPromise('Start','startRouting',_0xdde6ed);});}return respondWithRpcPromise(_0x2878('0xa6'),_0x2878('0xa7'),_0xdde6ed);})['then'](function(_0x3efe92){respondWithRpcPromise(_0x2878('0xa8'),_0x2878('0xa8'),{'event':_0x2878('0x74'),'message':_0x3efe92},client9002);return _0x3efe92;})[_0x2878('0x39')](respondWithResult(_0x13ecb1,null))[_0x2878('0x2a')](handleError(_0x13ecb1,null));};exports[_0x2878('0xa9')]=function(_0x256f00,_0x4e982c){var _0x313676=_0x256f00[_0x2878('0x65')]['id'];var _0x3fb255=_0x256f00['body'];var _0x58455e=0xc8;var _0x4d0af8=null;return db['sequelize'][_0x2878('0xaa')]({'isolationLevel':db[_0x2878('0xab')][_0x2878('0xac')][_0x2878('0xad')][_0x2878('0xae')]},function(_0xa64d35){return db[_0x2878('0x5c')][_0x2878('0x71')]({'where':{'id':_0x313676},'transaction':_0xa64d35})[_0x2878('0x39')](function(_0x3a6f16){if(_0x3a6f16){return db[_0x2878('0x8b')][_0x2878('0x3a')]({'where':{'OpenchannelAccountId':_0x313676},'transaction':_0xa64d35})[_0x2878('0x39')](function(){var _0x584be1=_[_0x2878('0x42')](_0x3fb255,function(_0x275c89){_0x275c89[_0x2878('0x68')]=_0x313676;return _0x275c89;});return db[_0x2878('0x8b')]['bulkCreate'](_0x584be1,{'transaction':_0xa64d35});});}else{_0x58455e=0x194;_0x4d0af8=[];}});})[_0x2878('0x39')](function(){if(_0x58455e!==0x194){return db[_0x2878('0x8b')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x313676},'order':_0x2878('0xaf')})['then'](function(_0x5bcafa){_0x4d0af8=_0x5bcafa;});}})[_0x2878('0x2a')](function(_0x266c7a){_0x58455e=0x1f4;logger['error'](_0x266c7a[_0x2878('0x3e')]);if(_0x266c7a[_0x2878('0x3f')]){delete _0x266c7a[_0x2878('0x3f')];}_0x4d0af8=_0x266c7a;})[_0x2878('0xb0')](function(){if(_0x4d0af8===null){_0x4e982c[_0x2878('0x2b')](_0x58455e);}else{if(_0x58455e===0x1f4){_0x4e982c[_0x2878('0x2c')](_0x58455e)[_0x2878('0x40')](_0x4d0af8);}else{_0x4e982c['status'](_0x58455e)['json'](_0x4d0af8);}}});};exports[_0x2878('0xb1')]=function(_0x22af9b,_0x1d2382,_0x5e139f){var _0x1cdb7d={};var _0x1a731c={};var _0x10214e;var _0x54e55e;return db[_0x2878('0x5c')]['findOne']({'where':{'id':_0x22af9b[_0x2878('0x65')]['id']}})['then'](handleEntityNotFound(_0x1d2382,null))[_0x2878('0x39')](function(_0x338265){if(_0x338265){_0x10214e=_0x338265;_0x1a731c[_0x2878('0x4a')]=_[_0x2878('0x47')](db[_0x2878('0x8b')]['rawAttributes']);_0x1a731c[_0x2878('0x46')]=_[_0x2878('0x47')](_0x22af9b[_0x2878('0x46')]);_0x1a731c[_0x2878('0x48')]=_['intersection'](_0x1a731c['model'],_0x1a731c[_0x2878('0x46')]);_0x1cdb7d['attributes']=_[_0x2878('0x49')](_0x1a731c[_0x2878('0x4a')],qs[_0x2878('0x4c')](_0x22af9b[_0x2878('0x46')][_0x2878('0x4c')]));_0x1cdb7d[_0x2878('0x4b')]=_0x1cdb7d[_0x2878('0x4b')][_0x2878('0x5d')]?_0x1cdb7d[_0x2878('0x4b')]:_0x1a731c['model'];_0x1cdb7d[_0x2878('0x4f')]=qs['sort'](_0x22af9b['query'][_0x2878('0x6b')]);_0x1cdb7d['where']=qs[_0x2878('0x48')](_[_0x2878('0x6c')](_0x22af9b[_0x2878('0x46')],_0x1a731c[_0x2878('0x48')]));if(_0x22af9b['query']['filter']){_0x1cdb7d[_0x2878('0x50')]=_[_0x2878('0x54')](_0x1cdb7d[_0x2878('0x50')],{'$or':_[_0x2878('0x42')](_0x1cdb7d[_0x2878('0x4b')],function(_0x34425a){var _0x436963={};_0x436963[_0x34425a]={'$like':'%'+_0x22af9b[_0x2878('0x46')][_0x2878('0x51')]+'%'};return _0x436963;})});}_0x1cdb7d=_['merge']({},_0x1cdb7d,_0x22af9b[_0x2878('0x55')]);return _0x10214e[_0x2878('0xb1')](_0x1cdb7d);}})[_0x2878('0x39')](function(_0x14dd24){if(_0x14dd24){_0x54e55e=_0x14dd24[_0x2878('0x5d')];if(!_0x22af9b['query'][_0x2878('0x4d')]('nolimit')){_0x1cdb7d[_0x2878('0x31')]=qs[_0x2878('0x31')](_0x22af9b[_0x2878('0x46')][_0x2878('0x31')]);_0x1cdb7d[_0x2878('0x2f')]=qs[_0x2878('0x2f')](_0x22af9b[_0x2878('0x46')]['offset']);}return _0x10214e['getApplications'](_0x1cdb7d);}})['then'](function(_0xf0e12d){if(_0xf0e12d){return _0xf0e12d?{'count':_0x54e55e,'rows':_0xf0e12d}:null;}})['then'](respondWithResult(_0x1d2382,null))[_0x2878('0x2a')](handleError(_0x1d2382,null));};exports[_0x2878('0xb2')]=function(_0x3d38c8,_0x417a8a,_0x47501c){var _0x3f2e12={'raw':![],'where':{}};var _0x41916c={};var _0x134606={'count':0x0,'rows':[]};return db[_0x2878('0x5c')][_0x2878('0x71')]({'where':{'id':_0x3d38c8[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x417a8a,null))[_0x2878('0x39')](function(_0x556106){if(_0x556106){_0x41916c[_0x2878('0x4a')]=_['keys'](db[_0x2878('0x95')][_0x2878('0x43')]);_0x41916c[_0x2878('0x46')]=_['keys'](_0x3d38c8[_0x2878('0x46')]);_0x41916c[_0x2878('0x48')]=_['intersection'](_0x41916c['model'],_0x41916c[_0x2878('0x46')]);_0x3f2e12[_0x2878('0x4b')]=_[_0x2878('0x49')](_0x41916c[_0x2878('0x4a')],qs['fields'](_0x3d38c8['query'][_0x2878('0x4c')]));_0x3f2e12[_0x2878('0x4b')]=_0x3f2e12['attributes'][_0x2878('0x5d')]?_0x3f2e12[_0x2878('0x4b')]:_0x41916c['model'];if(!_0x3d38c8['query'][_0x2878('0x4d')](_0x2878('0x4e'))){_0x3f2e12[_0x2878('0x31')]=qs[_0x2878('0x31')](_0x3d38c8[_0x2878('0x46')]['limit']);_0x3f2e12[_0x2878('0x2f')]=qs[_0x2878('0x2f')](_0x3d38c8['query'][_0x2878('0x2f')]);}_0x3f2e12[_0x2878('0x4f')]=qs['sort'](_0x3d38c8[_0x2878('0x46')][_0x2878('0x6b')]);_0x3f2e12[_0x2878('0x50')]=qs[_0x2878('0x48')](_[_0x2878('0x6c')](_0x3d38c8[_0x2878('0x46')],_0x41916c[_0x2878('0x48')]));_0x3f2e12[_0x2878('0x50')][_0x2878('0x68')]=_0x556106['id'];if(_0x3d38c8['query']['filter']){_0x3f2e12[_0x2878('0x50')]=_[_0x2878('0x54')](_0x3f2e12[_0x2878('0x50')],{'$or':_['map'](_0x3f2e12[_0x2878('0x4b')],function(_0x5341f7){var _0x245968={};_0x245968[_0x5341f7]={'$like':'%'+_0x3d38c8[_0x2878('0x46')][_0x2878('0x51')]+'%'};return _0x245968;})});}_0x3f2e12=_[_0x2878('0x54')]({},_0x3f2e12,_0x3d38c8[_0x2878('0x55')]);return db[_0x2878('0x95')]['count']({'where':_0x3f2e12[_0x2878('0x50')]})[_0x2878('0x39')](function(_0x30312c){_0x134606['count']=_0x30312c;if(_0x3d38c8['query'][_0x2878('0x56')]){_0x3f2e12['include']=[{'model':db['CmContact'],'as':_0x2878('0xb3'),'required':![]},{'model':db['User'],'as':_0x2878('0xb4'),'attributes':[_0x2878('0x3f'),_0x2878('0xb5'),'internal'],'required':![]},{'model':db[_0x2878('0xb6')],'as':_0x2878('0xb7'),'attributes':['id',_0x2878('0x3f'),_0x2878('0xb8')],'where':_0x3d38c8[_0x2878('0x46')]['tag']?{'id':_0x3d38c8[_0x2878('0x46')][_0x2878('0xb9')]}:undefined,'required':_0x3d38c8['query'][_0x2878('0xb9')]?!![]:![]}];}return db['OpenchannelInteraction'][_0x2878('0x58')](_0x3f2e12);})['then'](function(_0x56b3eb){_0x134606[_0x2878('0x59')]=_0x56b3eb;return _0x134606;});}})[_0x2878('0x39')](respondWithFilteredResult(_0x417a8a,_0x3f2e12))[_0x2878('0x2a')](handleError(_0x417a8a,null));};exports['addAgents']=function(_0x4d72c4,_0x2d1198,_0x1cadea){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x4d72c4['params']['id']}})['then'](handleEntityNotFound(_0x2d1198,null))[_0x2878('0x39')](function(_0x574676){if(_0x574676){return _0x574676[_0x2878('0xba')](_0x4d72c4[_0x2878('0x60')][_0x2878('0x73')],_[_0x2878('0xbb')](_0x4d72c4[_0x2878('0x60')],['ids','id'])||{})['spread'](function(_0x146d54){for(var _0x2b2504=0x0;_0x2b2504<_0x4d72c4['body'][_0x2878('0x73')]['length'];_0x2b2504+=0x1){socket[_0x2878('0xbc')]('userOpenchannelAccount:save',{'UserId':Number(_0x4d72c4[_0x2878('0x60')][_0x2878('0x73')][_0x2b2504]),'OpenchannelAccountId':Number(_0x4d72c4[_0x2878('0x65')]['id'])});}return _0x146d54;});}})[_0x2878('0x39')](respondWithResult(_0x2d1198,null))[_0x2878('0x2a')](handleError(_0x2d1198,null));};exports[_0x2878('0xbd')]=function(_0x131a2f,_0x3d3ef0,_0x3e0ac2){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x131a2f[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x3d3ef0,null))[_0x2878('0x39')](function(_0x2a130f){if(_0x2a130f){return _0x2a130f[_0x2878('0xbd')](_0x131a2f[_0x2878('0x46')][_0x2878('0x73')])['then'](function(){if(_[_0x2878('0xbe')](_0x131a2f[_0x2878('0x46')][_0x2878('0x73')])){for(var _0x2902ab=0x0;_0x2902ab<_0x131a2f['query'][_0x2878('0x73')][_0x2878('0x5d')];_0x2902ab+=0x1){socket[_0x2878('0xbc')](_0x2878('0xbf'),{'UserId':Number(_0x131a2f[_0x2878('0x46')][_0x2878('0x73')][_0x2902ab]),'OpenchannelAccountId':Number(_0x131a2f[_0x2878('0x65')]['id'])});}}else{socket[_0x2878('0xbc')]('userOpenchannelAccount:remove',{'UserId':Number(_0x131a2f[_0x2878('0x46')]['ids']),'OpenchannelAccountId':Number(_0x131a2f['params']['id'])});}});}})[_0x2878('0x39')](respondWithStatusCode(_0x3d3ef0,null))[_0x2878('0x2a')](handleError(_0x3d3ef0,null));};exports[_0x2878('0xc0')]=function(_0x969bc3,_0x23b04e,_0x31c014){var _0xe8308b={};var _0x32dcc8={};var _0xff867d;var _0x47d62b;return db[_0x2878('0x5c')][_0x2878('0x71')]({'where':{'id':_0x969bc3['params']['id']}})[_0x2878('0x39')](handleEntityNotFound(_0x23b04e,null))['then'](function(_0x1af457){if(_0x1af457){_0xff867d=_0x1af457;_0x32dcc8[_0x2878('0x4a')]=_[_0x2878('0x47')](db[_0x2878('0xa2')][_0x2878('0x43')]);_0x32dcc8[_0x2878('0x46')]=_['keys'](_0x969bc3['query']);_0x32dcc8[_0x2878('0x48')]=_[_0x2878('0x49')](_0x32dcc8['model'],_0x32dcc8['query']);_0xe8308b['attributes']=_[_0x2878('0x49')](_0x32dcc8[_0x2878('0x4a')],qs[_0x2878('0x4c')](_0x969bc3[_0x2878('0x46')][_0x2878('0x4c')]));_0xe8308b[_0x2878('0x4b')]=_0xe8308b[_0x2878('0x4b')][_0x2878('0x5d')]?_0xe8308b[_0x2878('0x4b')]:_0x32dcc8[_0x2878('0x4a')];_0xe8308b[_0x2878('0x4f')]=qs['sort'](_0x969bc3['query'][_0x2878('0x6b')]);_0xe8308b[_0x2878('0x50')]=qs[_0x2878('0x48')](_[_0x2878('0x6c')](_0x969bc3[_0x2878('0x46')],_0x32dcc8[_0x2878('0x48')]));if(_0x969bc3['query']['filter']){_0xe8308b[_0x2878('0x50')]=_[_0x2878('0x54')](_0xe8308b[_0x2878('0x50')],{'$or':_['map'](_0xe8308b['attributes'],function(_0x16b5af){var _0x570a16={};_0x570a16[_0x16b5af]={'$like':'%'+_0x969bc3[_0x2878('0x46')][_0x2878('0x51')]+'%'};return _0x570a16;})});}_0xe8308b=_[_0x2878('0x54')]({},_0xe8308b,_0x969bc3[_0x2878('0x55')]);return _0xff867d[_0x2878('0xc0')](_0xe8308b);}})[_0x2878('0x39')](function(_0x3d2bdc){if(_0x3d2bdc){_0x47d62b=_0x3d2bdc[_0x2878('0x5d')];if(!_0x969bc3[_0x2878('0x46')][_0x2878('0x4d')](_0x2878('0x4e'))){_0xe8308b['limit']=qs[_0x2878('0x31')](_0x969bc3['query']['limit']);_0xe8308b[_0x2878('0x2f')]=qs['offset'](_0x969bc3['query'][_0x2878('0x2f')]);}return _0xff867d[_0x2878('0xc0')](_0xe8308b);}})[_0x2878('0x39')](function(_0x56a5bb){if(_0x56a5bb){return _0x56a5bb?{'count':_0x47d62b,'rows':_0x56a5bb}:null;}})['then'](respondWithResult(_0x23b04e,null))[_0x2878('0x2a')](handleError(_0x23b04e,null));};exports[_0x2878('0x40')]=function(_0xaa9b6e,_0xc92ae,_0x426397){var _0x474832,_0x3d087f,_0x5638f9;if(_[_0x2878('0x7e')](_0xaa9b6e[_0x2878('0x60')][_0x2878('0x60')])||_0xaa9b6e[_0x2878('0x60')][_0x2878('0x60')]===''){throw new db[(_0x2878('0x76'))][(_0x2878('0x77'))](_0x2878('0x80'));}if(_[_0x2878('0x7e')](_0xaa9b6e['body']['to'])){}_0x474832=_0xaa9b6e[_0x2878('0x60')]['to'];return db['OpenchannelAccount'][_0x2878('0x71')]({'where':{'id':_0xaa9b6e[_0x2878('0x65')]['id']}})[_0x2878('0x39')](handleEntityNotFound(_0xc92ae,null))[_0x2878('0x39')](function(_0x195fdf){if(_0x195fdf){return db[_0x2878('0x5c')][_0x2878('0x5e')]({'where':{'id':_0x195fdf['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x2878('0x88')],'as':_0x2878('0x89'),'where':{[_0x195fdf[_0x2878('0x81')]]:_0x474832},'limit':0x1,'order':[[_0x2878('0x7b'),'DESC']]}]}]})[_0x2878('0x39')](handleEntityNotFound(_0xc92ae,null))['then'](function(_0x15fc80){if(_0x15fc80&&_0x15fc80[_0x2878('0x87')]){_0x3d087f=_0x15fc80[_0x2878('0x3b')]({'plain':!![]});if(_0x3d087f[_0x2878('0x87')]&&_0x3d087f[_0x2878('0x87')][_0x2878('0x89')][_0x2878('0x5d')]){return _0x3d087f['List']['Contacts'][0x0];}return db[_0x2878('0x88')][_0x2878('0x5f')](_['defaults'](_0xaa9b6e[_0x2878('0x60')],{'firstName':_0x474832,[_0x15fc80['mapKey']]:_0x474832,'phone':_0x474832,'ListId':_0x3d087f['ListId']}));}})[_0x2878('0x39')](handleEntityNotFound(_0xc92ae,null))['then'](function(_0x29535a){if(_0x29535a){_0x5638f9=_0x29535a;return db[_0x2878('0x95')][_0x2878('0x5e')]({'where':{'ContactId':_0x5638f9['id'],'closed':![],'OpenchannelAccountId':_0x3d087f['id']}})['then'](function(_0x2a0270){if(_0x2a0270){return[_0x2a0270,![]];}return db[_0x2878('0x95')][_0x2878('0x5f')]({'UserId':_0xaa9b6e[_0x2878('0x61')]['id'],'ContactId':_0x5638f9['id'],'OpenchannelAccountId':_0x3d087f['id'],'lastMsgDirection':_0x2878('0xc1'),'firstMsgDirection':'out','Messages':[_['merge'](_0xaa9b6e['body'],{'read':![],'body':_0xaa9b6e[_0x2878('0x60')][_0x2878('0x60')],'OpenchannelAccountId':_0x3d087f['id'],'UserId':_0xaa9b6e[_0x2878('0x61')]['id'],'ContactId':_0x5638f9['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x2878('0xc2')}]})[_0x2878('0x39')](function(_0x3ec79f){return[_0x3ec79f,!![]];});});}})[_0x2878('0x97')](function(_0x4e2c42,_0x4dd95b){if(_0x4dd95b){return _0x4e2c42;}return db[_0x2878('0x9f')]['create'](_[_0x2878('0x54')](_0xaa9b6e[_0x2878('0x60')],{'read':![],'body':_0xaa9b6e[_0x2878('0x60')][_0x2878('0x60')],'OpenchannelAccountId':_0x3d087f['id'],'OpenchannelInteractionId':_0x4e2c42['id'],'UserId':_0xaa9b6e[_0x2878('0x61')]['id'],'ContactId':_0x5638f9['id']}))['then'](function(_0x5216af){_0x4e2c42[_0x2878('0xc3')][_0x2878('0xc2')]=[];_0x4e2c42[_0x2878('0xc3')][_0x2878('0xc2')][_0x2878('0xc4')](_0x5216af[_0x2878('0xc3')]);return _0x4e2c42;});});}})[_0x2878('0x39')](respondWithResult(_0xc92ae,null))['catch'](handleError(_0xc92ae,null));};
\ No newline at end of file
index bdde48a..aea524d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['events','../../mysqldb','setMaxListeners','save','update','hasOwnProperty','exports'];(function(_0x156339,_0x1226ef){var _0x6e39e8=function(_0x98e8c0){while(--_0x98e8c0){_0x156339['push'](_0x156339['shift']());}};_0x6e39e8(++_0x1226ef);}(_0xb43b,0x1b2));var _0xbb43=function(_0x49a0d6,_0x93173){_0x49a0d6=_0x49a0d6-0x0;var _0x21075f=_0xb43b[_0x49a0d6];return _0x21075f;};'use strict';var EventEmitter=require(_0xbb43('0x0'));var OpenchannelAccount=require(_0xbb43('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xbb43('0x2')](0x0);var events={'afterCreate':_0xbb43('0x3'),'afterUpdate':_0xbb43('0x4'),'afterDestroy':'remove'};function emitEvent(_0x131e9e){return function(_0x41aff6,_0x351254,_0x16432a){OpenchannelAccountEvents['emit'](_0x131e9e+':'+_0x41aff6['id'],_0x41aff6);OpenchannelAccountEvents['emit'](_0x131e9e,_0x41aff6);_0x16432a(null);};}for(var e in events){if(events[_0xbb43('0x5')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0xbb43('0x6')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x0713=['exports','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x50e593,_0x3ae998){var _0x3821d0=function(_0x53c295){while(--_0x53c295){_0x50e593['push'](_0x50e593['shift']());}};_0x3821d0(++_0x3ae998);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x3071('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x3071('0x1')](0x0);var events={'afterCreate':_0x3071('0x2'),'afterUpdate':_0x3071('0x3'),'afterDestroy':_0x3071('0x4')};function emitEvent(_0x52b5fb){return function(_0x2c547f,_0x7b18a4,_0x33a70c){OpenchannelAccountEvents[_0x3071('0x5')](_0x52b5fb+':'+_0x2c547f['id'],_0x2c547f);OpenchannelAccountEvents[_0x3071('0x5')](_0x52b5fb,_0x2c547f);_0x33a70c(null);};}for(var e in events){if(events[_0x3071('0x6')](e)){var event=events[e];OpenchannelAccount[_0x3071('0x7')](e,emitEvent(event));}}module[_0x3071('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index ea46e4a..9d2248a 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(_0x439ce0,_0x3dfcab){var _0x49f105=function(_0x3c08ff){while(--_0x3c08ff){_0x439ce0['push'](_0x439ce0['shift']());}};_0x49f105(++_0x3dfcab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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(_0x4002d9,_0x38f2be){var _0x2415e3=function(_0x589cda){while(--_0x589cda){_0x4002d9['push'](_0x4002d9['shift']());}};_0x2415e3(++_0x38f2be);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 501e06f..ae7d5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b32=['http','redis','defaults','localhost','register','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5869e2,_0x5321f9){var _0xd78a7f=function(_0x1f74e1){while(--_0x1f74e1){_0x5869e2['push'](_0x5869e2['shift']());}};_0xd78a7f(++_0x5321f9);}(_0x1b32,0x85));var _0x21b3=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x1b32[_0x38537f];return _0x141e23;};'use strict';var _=require('lodash');var util=require(_0x21b3('0x0'));var moment=require(_0x21b3('0x1'));var BPromise=require(_0x21b3('0x2'));var rs=require(_0x21b3('0x3'));var fs=require('fs');var Redis=require(_0x21b3('0x4'));var db=require(_0x21b3('0x5'))['db'];var utils=require(_0x21b3('0x6'));var logger=require(_0x21b3('0x7'))(_0x21b3('0x8'));var config=require(_0x21b3('0x9'));var jayson=require(_0x21b3('0xa'));var client=jayson[_0x21b3('0xb')][_0x21b3('0xc')]({'port':0x232a});config[_0x21b3('0xd')]=_[_0x21b3('0xe')](config['redis'],{'host':_0x21b3('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelAccount.socket')[_0x21b3('0x10')](socket);function respondWithRpcPromise(_0x36b2a1,_0x56009d,_0x4aa0d7){return new BPromise(function(_0x253f2b,_0x270969){return client[_0x21b3('0x11')](_0x36b2a1,_0x4aa0d7)['then'](function(_0x370338){logger[_0x21b3('0x12')](_0x21b3('0x13'),_0x56009d,_0x21b3('0x14'));logger[_0x21b3('0x15')](_0x21b3('0x16'),_0x56009d,_0x21b3('0x14'),JSON[_0x21b3('0x17')](_0x370338));if(_0x370338[_0x21b3('0x18')]){if(_0x370338['error'][_0x21b3('0x19')]===0x1f4){logger[_0x21b3('0x18')](_0x21b3('0x13'),_0x56009d,_0x370338['error'][_0x21b3('0x1a')]);return _0x270969(_0x370338['error'][_0x21b3('0x1a')]);}logger['error'](_0x21b3('0x13'),_0x56009d,_0x370338[_0x21b3('0x18')][_0x21b3('0x1a')]);return _0x253f2b(_0x370338[_0x21b3('0x18')]['message']);}else{logger[_0x21b3('0x12')]('OpenchannelAccount,\x20%s,\x20%s',_0x56009d,_0x21b3('0x14'));_0x253f2b(_0x370338[_0x21b3('0x1b')][_0x21b3('0x1a')]);}})[_0x21b3('0x1c')](function(_0x513c32){logger[_0x21b3('0x18')](_0x21b3('0x13'),_0x56009d,_0x513c32);_0x270969(_0x513c32);});});}
\ No newline at end of file
+var _0x16d2=['request\x20sent','debug','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelAccount.socket','register','then','info','OpenchannelAccount,\x20%s,\x20%s'];(function(_0x4e565c,_0x59f2fc){var _0x39799e=function(_0x450fe3){while(--_0x450fe3){_0x4e565c['push'](_0x4e565c['shift']());}};_0x39799e(++_0x59f2fc);}(_0x16d2,0x123));var _0x216d=function(_0x27e7bf,_0x289a1d){_0x27e7bf=_0x27e7bf-0x0;var _0x1ebde9=_0x16d2[_0x27e7bf];return _0x1ebde9;};'use strict';var _=require(_0x216d('0x0'));var util=require(_0x216d('0x1'));var moment=require(_0x216d('0x2'));var BPromise=require(_0x216d('0x3'));var rs=require(_0x216d('0x4'));var fs=require('fs');var Redis=require(_0x216d('0x5'));var db=require(_0x216d('0x6'))['db'];var utils=require(_0x216d('0x7'));var logger=require(_0x216d('0x8'))('rpc');var config=require(_0x216d('0x9'));var jayson=require(_0x216d('0xa'));var client=jayson[_0x216d('0xb')][_0x216d('0xc')]({'port':0x232a});config[_0x216d('0xd')]=_[_0x216d('0xe')](config[_0x216d('0xd')],{'host':_0x216d('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x216d('0xd')]));require(_0x216d('0x10'))[_0x216d('0x11')](socket);function respondWithRpcPromise(_0x227c46,_0x301058,_0x729bdf){return new BPromise(function(_0x5682cc,_0x7ca9c9){return client['request'](_0x227c46,_0x729bdf)[_0x216d('0x12')](function(_0x2e02ce){logger[_0x216d('0x13')](_0x216d('0x14'),_0x301058,_0x216d('0x15'));logger[_0x216d('0x16')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x301058,_0x216d('0x15'),JSON['stringify'](_0x2e02ce));if(_0x2e02ce[_0x216d('0x17')]){if(_0x2e02ce[_0x216d('0x17')]['code']===0x1f4){logger[_0x216d('0x17')](_0x216d('0x14'),_0x301058,_0x2e02ce['error'][_0x216d('0x18')]);return _0x7ca9c9(_0x2e02ce['error'][_0x216d('0x18')]);}logger[_0x216d('0x17')](_0x216d('0x14'),_0x301058,_0x2e02ce[_0x216d('0x17')][_0x216d('0x18')]);return _0x5682cc(_0x2e02ce[_0x216d('0x17')][_0x216d('0x18')]);}else{logger[_0x216d('0x13')](_0x216d('0x14'),_0x301058,'request\x20sent');_0x5682cc(_0x2e02ce[_0x216d('0x19')]['message']);}})['catch'](function(_0x133838){logger[_0x216d('0x17')]('OpenchannelAccount,\x20%s,\x20%s',_0x301058,_0x133838);_0x7ca9c9(_0x133838);});});}
\ No newline at end of file
index 1320eae..16dceb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c54=['length','openchannelAccount:','./openchannelAccount.events','save','remove','emit','register'];(function(_0xec2b23,_0x4bd5fc){var _0xf0046e=function(_0x41b56b){while(--_0x41b56b){_0xec2b23['push'](_0xec2b23['shift']());}};_0xf0046e(++_0x4bd5fc);}(_0x2c54,0x136));var _0x42c5=function(_0x5c8a9f,_0x93df11){_0x5c8a9f=_0x5c8a9f-0x0;var _0x182548=_0x2c54[_0x5c8a9f];return _0x182548;};'use strict';var OpenchannelAccountEvents=require(_0x42c5('0x0'));var events=[_0x42c5('0x1'),_0x42c5('0x2'),'update'];function createListener(_0xbe3529,_0x46bcc4){return function(_0x3d5e1d){_0x46bcc4[_0x42c5('0x3')](_0xbe3529,_0x3d5e1d);};}function removeListener(_0x2407d0,_0x17924f){return function(){OpenchannelAccountEvents['removeListener'](_0x2407d0,_0x17924f);};}exports[_0x42c5('0x4')]=function(_0x551181){for(var _0x4d9ed4=0x0,_0x1959c1=events[_0x42c5('0x5')];_0x4d9ed4<_0x1959c1;_0x4d9ed4++){var _0x38d528=events[_0x4d9ed4];var _0x134cb6=createListener(_0x42c5('0x6')+_0x38d528,_0x551181);OpenchannelAccountEvents['on'](_0x38d528,_0x134cb6);}};
\ No newline at end of file
+var _0xd6ce=['register','./openchannelAccount.events','save','remove','update','emit','removeListener'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd6ce,0x127));var _0xed6c=function(_0x1de8d6,_0x3cc292){_0x1de8d6=_0x1de8d6-0x0;var _0x14d880=_0xd6ce[_0x1de8d6];return _0x14d880;};'use strict';var OpenchannelAccountEvents=require(_0xed6c('0x0'));var events=[_0xed6c('0x1'),_0xed6c('0x2'),_0xed6c('0x3')];function createListener(_0x1a0166,_0xb43dee){return function(_0x21fe5d){_0xb43dee[_0xed6c('0x4')](_0x1a0166,_0x21fe5d);};}function removeListener(_0x5cc704,_0x5881f5){return function(){OpenchannelAccountEvents[_0xed6c('0x5')](_0x5cc704,_0x5881f5);};}exports[_0xed6c('0x6')]=function(_0x1a6d96){for(var _0x1d0912=0x0,_0x4a6546=events['length'];_0x1d0912<_0x4a6546;_0x1d0912++){var _0x7668a7=events[_0x1d0912];var _0x46e2c4=createListener('openchannelAccount:'+_0x7668a7,_0x1a6d96);OpenchannelAccountEvents['on'](_0x7668a7,_0x46e2c4);}};
\ No newline at end of file
index 64816bf..28a5e98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc2=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','util','connect-timeout'];(function(_0x429cc7,_0x29eea3){var _0x357783=function(_0x4e335b){while(--_0x4e335b){_0x429cc7['push'](_0x429cc7['shift']());}};_0x357783(++_0x29eea3);}(_0x2fc2,0x142));var _0x22fc=function(_0x46d2a8,_0x3f511d){_0x46d2a8=_0x46d2a8-0x0;var _0x1b5642=_0x2fc2[_0x46d2a8];return _0x1b5642;};'use strict';var multer=require('multer');var util=require(_0x22fc('0x0'));var path=require('path');var timeout=require(_0x22fc('0x1'));var express=require('express');var router=express[_0x22fc('0x2')]();var fs_extra=require(_0x22fc('0x3'));var auth=require(_0x22fc('0x4'));var interaction=require(_0x22fc('0x5'));var config=require(_0x22fc('0x6'));var controller=require(_0x22fc('0x7'));router['get']('/',auth[_0x22fc('0x8')](),controller[_0x22fc('0x9')]);router['get'](_0x22fc('0xa'),auth[_0x22fc('0x8')](),controller[_0x22fc('0xb')]);router[_0x22fc('0xc')]('/',auth[_0x22fc('0x8')](),controller[_0x22fc('0xd')]);router['put'](_0x22fc('0xa'),auth['isAuthenticated'](),controller[_0x22fc('0xe')]);router[_0x22fc('0xf')]('/:id',auth[_0x22fc('0x8')](),controller[_0x22fc('0x10')]);module[_0x22fc('0x11')]=router;
\ No newline at end of file
+var _0xaee3=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelApplication.controller','get','isAuthenticated','/:id','show','create','put','update','exports'];(function(_0xfd8d6a,_0x12adb6){var _0x244028=function(_0x31a375){while(--_0x31a375){_0xfd8d6a['push'](_0xfd8d6a['shift']());}};_0x244028(++_0x12adb6);}(_0xaee3,0x110));var _0x3aee=function(_0x22d667,_0x4ab6f6){_0x22d667=_0x22d667-0x0;var _0xc8eba0=_0xaee3[_0x22d667];return _0xc8eba0;};'use strict';var multer=require(_0x3aee('0x0'));var util=require(_0x3aee('0x1'));var path=require('path');var timeout=require(_0x3aee('0x2'));var express=require(_0x3aee('0x3'));var router=express[_0x3aee('0x4')]();var fs_extra=require(_0x3aee('0x5'));var auth=require(_0x3aee('0x6'));var interaction=require(_0x3aee('0x7'));var config=require('../../config/environment');var controller=require(_0x3aee('0x8'));router[_0x3aee('0x9')]('/',auth[_0x3aee('0xa')](),controller['index']);router['get'](_0x3aee('0xb'),auth[_0x3aee('0xa')](),controller[_0x3aee('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3aee('0xd')]);router[_0x3aee('0xe')](_0x3aee('0xb'),auth[_0x3aee('0xa')](),controller[_0x3aee('0xf')]);router['delete']('/:id',auth[_0x3aee('0xa')](),controller['destroy']);module[_0x3aee('0x10')]=router;
\ No newline at end of file
index 9f47eec..d5ff98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bc=['noop','TEXT','sequelize','exports','INTEGER','STRING'];(function(_0x4d6624,_0x78b606){var _0x5dbb01=function(_0x54356e){while(--_0x54356e){_0x4d6624['push'](_0x4d6624['shift']());}};_0x5dbb01(++_0x78b606);}(_0x81bc,0x122));var _0xc81b=function(_0x5db96a,_0x60039){_0x5db96a=_0x5db96a-0x0;var _0x13fdb0=_0x81bc[_0x5db96a];return _0x13fdb0;};'use strict';var Sequelize=require(_0xc81b('0x0'));module[_0xc81b('0x1')]={'priority':{'type':Sequelize[_0xc81b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc81b('0x3')],'allowNull':![],'defaultValue':_0xc81b('0x4')},'appdata':{'type':Sequelize[_0xc81b('0x5')]()},'description':{'type':Sequelize[_0xc81b('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xe52c=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x4d6d27,_0x5be47a){var _0x4ad381=function(_0x5f0726){while(--_0x5f0726){_0x4d6d27['push'](_0x4d6d27['shift']());}};_0x4ad381(++_0x5be47a);}(_0xe52c,0x10b));var _0xce52=function(_0x381d8f,_0x517e09){_0x381d8f=_0x381d8f-0x0;var _0x444eff=_0xe52c[_0x381d8f];return _0x444eff;};'use strict';var Sequelize=require(_0xce52('0x0'));module[_0xce52('0x1')]={'priority':{'type':Sequelize[_0xce52('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xce52('0x3')],'allowNull':![],'defaultValue':_0xce52('0x4')},'appdata':{'type':Sequelize[_0xce52('0x5')]()},'description':{'type':Sequelize[_0xce52('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xce52('0x6')}};
\ No newline at end of file
index cbb7e15..ae755ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x154b=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','count','offset','set','apply','save','then','destroy','sendStatus','error','stack','name','map','OpenchannelApplication','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','catch','create','update','body','find','params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x282384,_0x43c59e){var _0x338397=function(_0x332a2f){while(--_0x332a2f){_0x282384['push'](_0x282384['shift']());}};_0x338397(++_0x43c59e);}(_0x154b,0x113));var _0xb154=function(_0x2b6b03,_0xb65a6a){_0x2b6b03=_0x2b6b03-0x0;var _0x545de6=_0x154b[_0x2b6b03];return _0x545de6;};'use strict';var emlformat=require(_0xb154('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb154('0x1'));var jsonpatch=require(_0xb154('0x2'));var rp=require(_0xb154('0x3'));var moment=require('moment');var BPromise=require(_0xb154('0x4'));var Mustache=require('mustache');var util=require(_0xb154('0x5'));var path=require(_0xb154('0x6'));var sox=require(_0xb154('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb154('0x8'));var _=require('lodash');var squel=require(_0xb154('0x9'));var crypto=require('crypto');var jsforce=require(_0xb154('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xb154('0xb'));var querystring=require('querystring');var Papa=require(_0xb154('0xc'));var Redis=require(_0xb154('0xd'));var authService=require(_0xb154('0xe'));var qs=require(_0xb154('0xf'));var as=require(_0xb154('0x10'));var hardwareService=require(_0xb154('0x11'));var logger=require(_0xb154('0x12'))(_0xb154('0x13'));var utils=require(_0xb154('0x14'));var config=require(_0xb154('0x15'));var licenseUtil=require(_0xb154('0x16'));var db=require(_0xb154('0x17'))['db'];function respondWithStatusCode(_0x1fd3ce,_0x3998e6){_0x3998e6=_0x3998e6||0xcc;return function(_0x3f4903){if(_0x3f4903){return _0x1fd3ce['sendStatus'](_0x3998e6);}return _0x1fd3ce['status'](_0x3998e6)[_0xb154('0x18')]();};}function respondWithResult(_0x3ec6b1,_0x4ac2af){_0x4ac2af=_0x4ac2af||0xc8;return function(_0x2cb2a5){if(_0x2cb2a5){return _0x3ec6b1[_0xb154('0x19')](_0x4ac2af)[_0xb154('0x1a')](_0x2cb2a5);}};}function respondWithFilteredResult(_0x37f314,_0x5b3c95){return function(_0x10f2e8){if(_0x10f2e8){var _0x489c70=typeof _0x5b3c95['offset']==='undefined'&&typeof _0x5b3c95['limit']===_0xb154('0x1b');var _0x490486=_0x10f2e8[_0xb154('0x1c')];var _0xe6c835=_0x489c70?0x0:_0x5b3c95[_0xb154('0x1d')];var _0x37322c=_0x489c70?_0x10f2e8[_0xb154('0x1c')]:_0x5b3c95[_0xb154('0x1d')]+_0x5b3c95['limit'];var _0x576f5d;if(_0x37322c>=_0x490486){_0x37322c=_0x490486;_0x576f5d=0xc8;}else{_0x576f5d=0xce;}_0x37f314[_0xb154('0x19')](_0x576f5d);return _0x37f314[_0xb154('0x1e')]('Content-Range',_0xe6c835+'-'+_0x37322c+'/'+_0x490486)[_0xb154('0x1a')](_0x10f2e8);}return null;};}function patchUpdates(_0x4ff4de){return function(_0x337808){try{jsonpatch[_0xb154('0x1f')](_0x337808,_0x4ff4de,!![]);}catch(_0x265e2e){return BPromise['reject'](_0x265e2e);}return _0x337808[_0xb154('0x20')]();};}function saveUpdates(_0x53b928,_0x1577b1){return function(_0x552b31){if(_0x552b31){return _0x552b31['update'](_0x53b928)[_0xb154('0x21')](function(_0x2e7378){return _0x2e7378;});}return null;};}function removeEntity(_0x15e0a6,_0x156d19){return function(_0x2dc4df){if(_0x2dc4df){return _0x2dc4df[_0xb154('0x22')]()[_0xb154('0x21')](function(){_0x15e0a6[_0xb154('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x328cb1,_0x5b8cdd){return function(_0x3625c9){if(!_0x3625c9){_0x328cb1[_0xb154('0x23')](0x194);}return _0x3625c9;};}function handleError(_0x2ea271,_0x4c103d){_0x4c103d=_0x4c103d||0x1f4;return function(_0x4028fc){logger[_0xb154('0x24')](_0x4028fc[_0xb154('0x25')]);if(_0x4028fc[_0xb154('0x26')]){delete _0x4028fc[_0xb154('0x26')];}_0x2ea271[_0xb154('0x19')](_0x4c103d)['send'](_0x4028fc);};}exports['index']=function(_0x2f561e,_0x371d69){var _0xfdccc5={},_0xd4a7ea={},_0x16add4={'count':0x0,'rows':[]};var _0x4f3de7=_[_0xb154('0x27')](db[_0xb154('0x28')][_0xb154('0x29')],function(_0x3a5aec){return{'name':_0x3a5aec['fieldName'],'type':_0x3a5aec[_0xb154('0x2a')][_0xb154('0x2b')]};});_0xd4a7ea[_0xb154('0x2c')]=_[_0xb154('0x27')](_0x4f3de7,_0xb154('0x26'));_0xd4a7ea['query']=_[_0xb154('0x2d')](_0x2f561e['query']);_0xd4a7ea[_0xb154('0x2e')]=_[_0xb154('0x2f')](_0xd4a7ea[_0xb154('0x2c')],_0xd4a7ea[_0xb154('0x30')]);_0xfdccc5[_0xb154('0x31')]=_['intersection'](_0xd4a7ea[_0xb154('0x2c')],qs[_0xb154('0x32')](_0x2f561e[_0xb154('0x30')][_0xb154('0x32')]));_0xfdccc5[_0xb154('0x31')]=_0xfdccc5['attributes'][_0xb154('0x33')]?_0xfdccc5[_0xb154('0x31')]:_0xd4a7ea[_0xb154('0x2c')];if(!_0x2f561e[_0xb154('0x30')][_0xb154('0x34')](_0xb154('0x35'))){_0xfdccc5[_0xb154('0x36')]=qs[_0xb154('0x36')](_0x2f561e[_0xb154('0x30')][_0xb154('0x36')]);_0xfdccc5[_0xb154('0x1d')]=qs[_0xb154('0x1d')](_0x2f561e[_0xb154('0x30')]['offset']);}_0xfdccc5[_0xb154('0x37')]=qs[_0xb154('0x38')](_0x2f561e[_0xb154('0x30')][_0xb154('0x38')]);_0xfdccc5[_0xb154('0x39')]=qs['filters'](_[_0xb154('0x3a')](_0x2f561e[_0xb154('0x30')],_0xd4a7ea[_0xb154('0x2e')]),_0x4f3de7);if(_0x2f561e[_0xb154('0x30')]['filter']){_0xfdccc5['where']=_[_0xb154('0x3b')](_0xfdccc5[_0xb154('0x39')],{'$or':_[_0xb154('0x27')](_0x4f3de7,function(_0x5ab162){if(_0x5ab162['type']!==_0xb154('0x3c')){var _0x478f74={};_0x478f74[_0x5ab162['name']]={'$like':'%'+_0x2f561e[_0xb154('0x30')]['filter']+'%'};return _0x478f74;}})});}_0xfdccc5=_[_0xb154('0x3b')]({},_0xfdccc5,_0x2f561e[_0xb154('0x3d')]);var _0x2298da={'where':_0xfdccc5['where']};return db[_0xb154('0x28')][_0xb154('0x1c')](_0x2298da)[_0xb154('0x21')](function(_0xb6a2d1){_0x16add4['count']=_0xb6a2d1;if(_0x2f561e[_0xb154('0x30')][_0xb154('0x3e')]){_0xfdccc5['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0xb154('0x3f')](_0xfdccc5);})['then'](function(_0x60cddf){_0x16add4[_0xb154('0x40')]=_0x60cddf;return _0x16add4;})[_0xb154('0x21')](respondWithFilteredResult(_0x371d69,_0xfdccc5))['catch'](handleError(_0x371d69,null));};exports[_0xb154('0x41')]=function(_0xcf889d,_0x234463){var _0x40c3d3={'raw':!![],'where':{'id':_0xcf889d['params']['id']}},_0x40950e={};_0x40950e[_0xb154('0x2c')]=_['keys'](db[_0xb154('0x28')][_0xb154('0x29')]);_0x40950e['query']=_[_0xb154('0x2d')](_0xcf889d['query']);_0x40950e[_0xb154('0x2e')]=_[_0xb154('0x2f')](_0x40950e['model'],_0x40950e[_0xb154('0x30')]);_0x40c3d3['attributes']=_[_0xb154('0x2f')](_0x40950e[_0xb154('0x2c')],qs[_0xb154('0x32')](_0xcf889d[_0xb154('0x30')][_0xb154('0x32')]));_0x40c3d3[_0xb154('0x31')]=_0x40c3d3[_0xb154('0x31')]['length']?_0x40c3d3['attributes']:_0x40950e[_0xb154('0x2c')];if(_0xcf889d[_0xb154('0x30')]['includeAll']){_0x40c3d3[_0xb154('0x42')]=[{'all':!![]}];}_0x40c3d3=_[_0xb154('0x3b')]({},_0x40c3d3,_0xcf889d[_0xb154('0x3d')]);return db[_0xb154('0x28')]['find'](_0x40c3d3)[_0xb154('0x21')](handleEntityNotFound(_0x234463,null))['then'](respondWithResult(_0x234463,null))[_0xb154('0x43')](handleError(_0x234463,null));};exports['create']=function(_0x4db699,_0x3a9e48){return db[_0xb154('0x28')][_0xb154('0x44')](_0x4db699['body'],{})[_0xb154('0x21')](respondWithResult(_0x3a9e48,0xc9))[_0xb154('0x43')](handleError(_0x3a9e48,null));};exports[_0xb154('0x45')]=function(_0x5b1cda,_0x212401){if(_0x5b1cda[_0xb154('0x46')]['id']){delete _0x5b1cda[_0xb154('0x46')]['id'];}return db[_0xb154('0x28')][_0xb154('0x47')]({'where':{'id':_0x5b1cda[_0xb154('0x48')]['id']}})['then'](handleEntityNotFound(_0x212401,null))['then'](saveUpdates(_0x5b1cda[_0xb154('0x46')],null))[_0xb154('0x21')](respondWithResult(_0x212401,null))[_0xb154('0x43')](handleError(_0x212401,null));};exports[_0xb154('0x22')]=function(_0x5ca6ea,_0x1dc20c){return db['OpenchannelApplication'][_0xb154('0x47')]({'where':{'id':_0x5ca6ea[_0xb154('0x48')]['id']}})['then'](handleEntityNotFound(_0x1dc20c,null))[_0xb154('0x21')](removeEntity(_0x1dc20c,null))['catch'](handleError(_0x1dc20c,null));};
\ No newline at end of file
+var _0xcc19=['limit','set','Content-Range','reject','save','update','destroy','then','sendStatus','stack','name','send','index','map','OpenchannelApplication','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','params','keys','rawAttributes','find','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count'];(function(_0x319340,_0x5314a3){var _0x4c0316=function(_0x22172d){while(--_0x22172d){_0x319340['push'](_0x319340['shift']());}};_0x4c0316(++_0x5314a3);}(_0xcc19,0x107));var _0x9cc1=function(_0x263714,_0x399b37){_0x263714=_0x263714-0x0;var _0x1cd43d=_0xcc19[_0x263714];return _0x1cd43d;};'use strict';var emlformat=require(_0x9cc1('0x0'));var rimraf=require(_0x9cc1('0x1'));var zipdir=require(_0x9cc1('0x2'));var jsonpatch=require(_0x9cc1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9cc1('0x4'));var Mustache=require(_0x9cc1('0x5'));var util=require('util');var path=require('path');var sox=require(_0x9cc1('0x6'));var csv=require(_0x9cc1('0x7'));var ejs=require(_0x9cc1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9cc1('0x9'));var squel=require(_0x9cc1('0xa'));var crypto=require(_0x9cc1('0xb'));var jsforce=require(_0x9cc1('0xc'));var deskjs=require(_0x9cc1('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9cc1('0xe'));var Redis=require(_0x9cc1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9cc1('0x10'));var hardwareService=require(_0x9cc1('0x11'));var logger=require(_0x9cc1('0x12'))(_0x9cc1('0x13'));var utils=require('../../config/utils');var config=require(_0x9cc1('0x14'));var licenseUtil=require(_0x9cc1('0x15'));var db=require(_0x9cc1('0x16'))['db'];function respondWithStatusCode(_0x1ad9c0,_0xbbecb8){_0xbbecb8=_0xbbecb8||0xcc;return function(_0xff1ddd){if(_0xff1ddd){return _0x1ad9c0['sendStatus'](_0xbbecb8);}return _0x1ad9c0[_0x9cc1('0x17')](_0xbbecb8)[_0x9cc1('0x18')]();};}function respondWithResult(_0x12713c,_0xcd73d6){_0xcd73d6=_0xcd73d6||0xc8;return function(_0x25af7e){if(_0x25af7e){return _0x12713c[_0x9cc1('0x17')](_0xcd73d6)[_0x9cc1('0x19')](_0x25af7e);}};}function respondWithFilteredResult(_0x3fd5ef,_0x5df9f6){return function(_0x1788bc){if(_0x1788bc){var _0x1fa939=typeof _0x5df9f6[_0x9cc1('0x1a')]===_0x9cc1('0x1b')&&typeof _0x5df9f6['limit']===_0x9cc1('0x1b');var _0x2c3387=_0x1788bc[_0x9cc1('0x1c')];var _0x3a9569=_0x1fa939?0x0:_0x5df9f6['offset'];var _0x14b38c=_0x1fa939?_0x1788bc[_0x9cc1('0x1c')]:_0x5df9f6[_0x9cc1('0x1a')]+_0x5df9f6[_0x9cc1('0x1d')];var _0x3d701b;if(_0x14b38c>=_0x2c3387){_0x14b38c=_0x2c3387;_0x3d701b=0xc8;}else{_0x3d701b=0xce;}_0x3fd5ef[_0x9cc1('0x17')](_0x3d701b);return _0x3fd5ef[_0x9cc1('0x1e')](_0x9cc1('0x1f'),_0x3a9569+'-'+_0x14b38c+'/'+_0x2c3387)[_0x9cc1('0x19')](_0x1788bc);}return null;};}function patchUpdates(_0x53fc5e){return function(_0x54109c){try{jsonpatch['apply'](_0x54109c,_0x53fc5e,!![]);}catch(_0x3714ab){return BPromise[_0x9cc1('0x20')](_0x3714ab);}return _0x54109c[_0x9cc1('0x21')]();};}function saveUpdates(_0x6bbf57,_0x328dbb){return function(_0x323e30){if(_0x323e30){return _0x323e30[_0x9cc1('0x22')](_0x6bbf57)['then'](function(_0x43b9f9){return _0x43b9f9;});}return null;};}function removeEntity(_0x1e3c15,_0x24ddc6){return function(_0x3e7ea7){if(_0x3e7ea7){return _0x3e7ea7[_0x9cc1('0x23')]()[_0x9cc1('0x24')](function(){_0x1e3c15[_0x9cc1('0x17')](0xcc)[_0x9cc1('0x18')]();});}};}function handleEntityNotFound(_0x175444,_0x3dbbf9){return function(_0x22f62e){if(!_0x22f62e){_0x175444[_0x9cc1('0x25')](0x194);}return _0x22f62e;};}function handleError(_0x2c1a0a,_0x4e2344){_0x4e2344=_0x4e2344||0x1f4;return function(_0xea65eb){logger['error'](_0xea65eb[_0x9cc1('0x26')]);if(_0xea65eb[_0x9cc1('0x27')]){delete _0xea65eb['name'];}_0x2c1a0a[_0x9cc1('0x17')](_0x4e2344)[_0x9cc1('0x28')](_0xea65eb);};}exports[_0x9cc1('0x29')]=function(_0x526685,_0x5dd4d3){var _0x34775e={},_0x596f8e={},_0x4276ed={'count':0x0,'rows':[]};var _0x5a599e=_[_0x9cc1('0x2a')](db[_0x9cc1('0x2b')]['rawAttributes'],function(_0x2cf968){return{'name':_0x2cf968[_0x9cc1('0x2c')],'type':_0x2cf968[_0x9cc1('0x2d')][_0x9cc1('0x2e')]};});_0x596f8e['model']=_[_0x9cc1('0x2a')](_0x5a599e,_0x9cc1('0x27'));_0x596f8e[_0x9cc1('0x2f')]=_['keys'](_0x526685['query']);_0x596f8e[_0x9cc1('0x30')]=_[_0x9cc1('0x31')](_0x596f8e['model'],_0x596f8e[_0x9cc1('0x2f')]);_0x34775e[_0x9cc1('0x32')]=_['intersection'](_0x596f8e[_0x9cc1('0x33')],qs[_0x9cc1('0x34')](_0x526685[_0x9cc1('0x2f')]['fields']));_0x34775e[_0x9cc1('0x32')]=_0x34775e['attributes'][_0x9cc1('0x35')]?_0x34775e[_0x9cc1('0x32')]:_0x596f8e['model'];if(!_0x526685[_0x9cc1('0x2f')][_0x9cc1('0x36')](_0x9cc1('0x37'))){_0x34775e[_0x9cc1('0x1d')]=qs['limit'](_0x526685[_0x9cc1('0x2f')][_0x9cc1('0x1d')]);_0x34775e['offset']=qs[_0x9cc1('0x1a')](_0x526685['query'][_0x9cc1('0x1a')]);}_0x34775e[_0x9cc1('0x38')]=qs['sort'](_0x526685['query'][_0x9cc1('0x39')]);_0x34775e[_0x9cc1('0x3a')]=qs[_0x9cc1('0x30')](_[_0x9cc1('0x3b')](_0x526685[_0x9cc1('0x2f')],_0x596f8e['filters']),_0x5a599e);if(_0x526685[_0x9cc1('0x2f')]['filter']){_0x34775e['where']=_[_0x9cc1('0x3c')](_0x34775e[_0x9cc1('0x3a')],{'$or':_[_0x9cc1('0x2a')](_0x5a599e,function(_0x3082f8){if(_0x3082f8[_0x9cc1('0x2d')]!==_0x9cc1('0x3d')){var _0x2bb706={};_0x2bb706[_0x3082f8['name']]={'$like':'%'+_0x526685[_0x9cc1('0x2f')][_0x9cc1('0x3e')]+'%'};return _0x2bb706;}})});}_0x34775e=_[_0x9cc1('0x3c')]({},_0x34775e,_0x526685[_0x9cc1('0x3f')]);var _0x47d39a={'where':_0x34775e[_0x9cc1('0x3a')]};return db['OpenchannelApplication'][_0x9cc1('0x1c')](_0x47d39a)[_0x9cc1('0x24')](function(_0x43a18d){_0x4276ed[_0x9cc1('0x1c')]=_0x43a18d;if(_0x526685[_0x9cc1('0x2f')][_0x9cc1('0x40')]){_0x34775e['include']=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x34775e);})['then'](function(_0x5e5144){_0x4276ed[_0x9cc1('0x41')]=_0x5e5144;return _0x4276ed;})[_0x9cc1('0x24')](respondWithFilteredResult(_0x5dd4d3,_0x34775e))[_0x9cc1('0x42')](handleError(_0x5dd4d3,null));};exports[_0x9cc1('0x43')]=function(_0x3757cc,_0x364a56){var _0x2928b2={'raw':!![],'where':{'id':_0x3757cc[_0x9cc1('0x44')]['id']}},_0x2b1b3a={};_0x2b1b3a[_0x9cc1('0x33')]=_[_0x9cc1('0x45')](db[_0x9cc1('0x2b')][_0x9cc1('0x46')]);_0x2b1b3a['query']=_[_0x9cc1('0x45')](_0x3757cc[_0x9cc1('0x2f')]);_0x2b1b3a[_0x9cc1('0x30')]=_[_0x9cc1('0x31')](_0x2b1b3a['model'],_0x2b1b3a[_0x9cc1('0x2f')]);_0x2928b2[_0x9cc1('0x32')]=_[_0x9cc1('0x31')](_0x2b1b3a[_0x9cc1('0x33')],qs['fields'](_0x3757cc[_0x9cc1('0x2f')]['fields']));_0x2928b2['attributes']=_0x2928b2[_0x9cc1('0x32')]['length']?_0x2928b2[_0x9cc1('0x32')]:_0x2b1b3a[_0x9cc1('0x33')];if(_0x3757cc[_0x9cc1('0x2f')][_0x9cc1('0x40')]){_0x2928b2['include']=[{'all':!![]}];}_0x2928b2=_[_0x9cc1('0x3c')]({},_0x2928b2,_0x3757cc['options']);return db[_0x9cc1('0x2b')][_0x9cc1('0x47')](_0x2928b2)[_0x9cc1('0x24')](handleEntityNotFound(_0x364a56,null))[_0x9cc1('0x24')](respondWithResult(_0x364a56,null))[_0x9cc1('0x42')](handleError(_0x364a56,null));};exports['create']=function(_0x3564a8,_0x2b3b04){return db[_0x9cc1('0x2b')]['create'](_0x3564a8[_0x9cc1('0x48')],{})[_0x9cc1('0x24')](respondWithResult(_0x2b3b04,0xc9))[_0x9cc1('0x42')](handleError(_0x2b3b04,null));};exports[_0x9cc1('0x22')]=function(_0x7c6c07,_0x5164d7){if(_0x7c6c07[_0x9cc1('0x48')]['id']){delete _0x7c6c07[_0x9cc1('0x48')]['id'];}return db[_0x9cc1('0x2b')][_0x9cc1('0x47')]({'where':{'id':_0x7c6c07[_0x9cc1('0x44')]['id']}})[_0x9cc1('0x24')](handleEntityNotFound(_0x5164d7,null))[_0x9cc1('0x24')](saveUpdates(_0x7c6c07[_0x9cc1('0x48')],null))[_0x9cc1('0x24')](respondWithResult(_0x5164d7,null))['catch'](handleError(_0x5164d7,null));};exports[_0x9cc1('0x23')]=function(_0x19b38f,_0x47f718){return db[_0x9cc1('0x2b')][_0x9cc1('0x47')]({'where':{'id':_0x19b38f['params']['id']}})['then'](handleEntityNotFound(_0x47f718,null))[_0x9cc1('0x24')](removeEntity(_0x47f718,null))[_0x9cc1('0x42')](handleError(_0x47f718,null));};
\ No newline at end of file
index d6f5cb8..611cc5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe646=['exports','OpenchannelApplication','openchannel_applications','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment'];(function(_0x8c6eee,_0x21f601){var _0x5a03b5=function(_0x55599d){while(--_0x55599d){_0x8c6eee['push'](_0x8c6eee['shift']());}};_0x5a03b5(++_0x21f601);}(_0xe646,0x125));var _0x6e64=function(_0x2ea624,_0x179c43){_0x2ea624=_0x2ea624-0x0;var _0xb052b6=_0xe646[_0x2ea624];return _0xb052b6;};'use strict';var _=require(_0x6e64('0x0'));var util=require(_0x6e64('0x1'));var logger=require(_0x6e64('0x2'))('api');var moment=require(_0x6e64('0x3'));var BPromise=require('bluebird');var rp=require(_0x6e64('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6e64('0x5'));var config=require(_0x6e64('0x6'));var attributes=require('./openchannelApplication.attributes');module[_0x6e64('0x7')]=function(_0x2e0c08,_0x22dfa6){return _0x2e0c08['define'](_0x6e64('0x8'),attributes,{'tableName':_0x6e64('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x67c6=['rimraf','../../config/environment','exports','define','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x40f9a0,_0x3458cc){var _0x3e3144=function(_0x1f8fce){while(--_0x1f8fce){_0x40f9a0['push'](_0x40f9a0['shift']());}};_0x3e3144(++_0x3458cc);}(_0x67c6,0x69));var _0x667c=function(_0x55dad7,_0x3cce31){_0x55dad7=_0x55dad7-0x0;var _0x269b2b=_0x67c6[_0x55dad7];return _0x269b2b;};'use strict';var _=require(_0x667c('0x0'));var util=require(_0x667c('0x1'));var logger=require(_0x667c('0x2'))(_0x667c('0x3'));var moment=require(_0x667c('0x4'));var BPromise=require(_0x667c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x667c('0x6'));var rimraf=require(_0x667c('0x7'));var config=require(_0x667c('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0x667c('0x9')]=function(_0x3c594c,_0x3a9474){return _0x3c594c[_0x667c('0xa')]('OpenchannelApplication',attributes,{'tableName':_0x667c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x667c('0xc'),'collate':_0x667c('0xd')});};
\ No newline at end of file
index 3992fe7..c5e3633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf36e=['info','OpenchannelApplication,\x20%s,\x20%s','debug','stringify','error','message','result','catch','UpdateOpenchannelApplication','update','options','raw','where','attributes','limit','then','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0xb61c,_0x4b5693){var _0xb0bb56=function(_0x9b1314){while(--_0x9b1314){_0xb61c['push'](_0xb61c['shift']());}};_0xb0bb56(++_0x4b5693);}(_0xf36e,0x139));var _0xef36=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf36e[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xef36('0x0'));var util=require('util');var moment=require(_0xef36('0x1'));var BPromise=require(_0xef36('0x2'));var rs=require(_0xef36('0x3'));var fs=require('fs');var Redis=require(_0xef36('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xef36('0x5'))('rpc');var config=require(_0xef36('0x6'));var jayson=require(_0xef36('0x7'));var client=jayson[_0xef36('0x8')][_0xef36('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2af9bc,_0xc6be50,_0x3b5e0e){return new BPromise(function(_0x524762,_0x18cdd8){return client[_0xef36('0xa')](_0x2af9bc,_0x3b5e0e)['then'](function(_0x1d33ce){logger[_0xef36('0xb')](_0xef36('0xc'),_0xc6be50,'request\x20sent');logger[_0xef36('0xd')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0xc6be50,'request\x20sent',JSON[_0xef36('0xe')](_0x1d33ce));if(_0x1d33ce[_0xef36('0xf')]){if(_0x1d33ce[_0xef36('0xf')]['code']===0x1f4){logger[_0xef36('0xf')]('OpenchannelApplication,\x20%s,\x20%s',_0xc6be50,_0x1d33ce[_0xef36('0xf')]['message']);return _0x18cdd8(_0x1d33ce[_0xef36('0xf')][_0xef36('0x10')]);}logger[_0xef36('0xf')](_0xef36('0xc'),_0xc6be50,_0x1d33ce[_0xef36('0xf')][_0xef36('0x10')]);return _0x524762(_0x1d33ce[_0xef36('0xf')][_0xef36('0x10')]);}else{logger[_0xef36('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0xc6be50,'request\x20sent');_0x524762(_0x1d33ce[_0xef36('0x11')][_0xef36('0x10')]);}})[_0xef36('0x12')](function(_0x5a7ebd){logger[_0xef36('0xf')](_0xef36('0xc'),_0xc6be50,_0x5a7ebd);_0x18cdd8(_0x5a7ebd);});});}exports[_0xef36('0x13')]=function(_0x54a220){var _0x559bdb=this;return new Promise(function(_0x3a42c3,_0x4e6103){return db['OpenchannelApplication'][_0xef36('0x14')](_0x54a220['body'],{'raw':_0x54a220[_0xef36('0x15')]?_0x54a220[_0xef36('0x15')][_0xef36('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54a220[_0xef36('0x15')]?_0x54a220[_0xef36('0x15')][_0xef36('0x17')]||null:null,'attributes':_0x54a220[_0xef36('0x15')]?_0x54a220[_0xef36('0x15')][_0xef36('0x18')]||null:null,'limit':_0x54a220[_0xef36('0x15')]?_0x54a220['options'][_0xef36('0x19')]||null:null})[_0xef36('0x1a')](function(_0x5e4922){logger['info'](_0xef36('0x13'),_0x54a220);logger[_0xef36('0xd')]('UpdateOpenchannelApplication',_0x54a220,JSON[_0xef36('0xe')](_0x5e4922));_0x3a42c3(_0x5e4922);})[_0xef36('0x12')](function(_0x29c2e7){logger[_0xef36('0xf')](_0xef36('0x13'),_0x29c2e7[_0xef36('0x10')],_0x54a220);_0x4e6103(_0x559bdb[_0xef36('0xf')](0x1f4,_0x29c2e7[_0xef36('0x10')]));});});};
\ No newline at end of file
+var _0x6882=['lodash','util','moment','randomstring','../../config/utils','rpc','../../config/environment','client','http','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','UpdateOpenchannelApplication','update','body','options','where','attributes'];(function(_0x4ca333,_0x1218a3){var _0x13b2e1=function(_0x1eaf45){while(--_0x1eaf45){_0x4ca333['push'](_0x4ca333['shift']());}};_0x13b2e1(++_0x1218a3);}(_0x6882,0xa8));var _0x2688=function(_0xeffd1f,_0x42c20b){_0xeffd1f=_0xeffd1f-0x0;var _0x5cc8bb=_0x6882[_0xeffd1f];return _0x5cc8bb;};'use strict';var _=require(_0x2688('0x0'));var util=require(_0x2688('0x1'));var moment=require(_0x2688('0x2'));var BPromise=require('bluebird');var rs=require(_0x2688('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2688('0x4'));var logger=require('../../config/logger')(_0x2688('0x5'));var config=require(_0x2688('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2688('0x7')][_0x2688('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x707865,_0x2b9c52,_0x15da29){return new BPromise(function(_0x4e3373,_0xb8cad8){return client['request'](_0x707865,_0x15da29)[_0x2688('0x9')](function(_0x57fc07){logger[_0x2688('0xa')](_0x2688('0xb'),_0x2b9c52,_0x2688('0xc'));logger[_0x2688('0xd')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x2b9c52,_0x2688('0xc'),JSON['stringify'](_0x57fc07));if(_0x57fc07[_0x2688('0xe')]){if(_0x57fc07[_0x2688('0xe')][_0x2688('0xf')]===0x1f4){logger[_0x2688('0xe')](_0x2688('0xb'),_0x2b9c52,_0x57fc07[_0x2688('0xe')][_0x2688('0x10')]);return _0xb8cad8(_0x57fc07['error'][_0x2688('0x10')]);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x2b9c52,_0x57fc07[_0x2688('0xe')][_0x2688('0x10')]);return _0x4e3373(_0x57fc07['error'][_0x2688('0x10')]);}else{logger[_0x2688('0xa')](_0x2688('0xb'),_0x2b9c52,_0x2688('0xc'));_0x4e3373(_0x57fc07['result'][_0x2688('0x10')]);}})[_0x2688('0x11')](function(_0x39f749){logger[_0x2688('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x2b9c52,_0x39f749);_0xb8cad8(_0x39f749);});});}exports[_0x2688('0x12')]=function(_0x2123bb){var _0x3b1a58=this;return new Promise(function(_0x2e3762,_0x3fe26a){return db['OpenchannelApplication'][_0x2688('0x13')](_0x2123bb[_0x2688('0x14')],{'raw':_0x2123bb[_0x2688('0x15')]?_0x2123bb[_0x2688('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2123bb[_0x2688('0x15')]?_0x2123bb[_0x2688('0x15')][_0x2688('0x16')]||null:null,'attributes':_0x2123bb[_0x2688('0x15')]?_0x2123bb[_0x2688('0x15')][_0x2688('0x17')]||null:null,'limit':_0x2123bb[_0x2688('0x15')]?_0x2123bb['options']['limit']||null:null})[_0x2688('0x9')](function(_0x24095b){logger[_0x2688('0xa')](_0x2688('0x12'),_0x2123bb);logger[_0x2688('0xd')](_0x2688('0x12'),_0x2123bb,JSON['stringify'](_0x24095b));_0x2e3762(_0x24095b);})['catch'](function(_0x31cf6b){logger[_0x2688('0xe')]('UpdateOpenchannelApplication',_0x31cf6b[_0x2688('0x10')],_0x2123bb);_0x3fe26a(_0x3b1a58[_0x2688('0xe')](0x1f4,_0x31cf6b[_0x2688('0x10')]));});});};
\ No newline at end of file
index fc524c9..cf81cab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d9=['put','openchannelinteraction:update','delete','removeTags','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id','show','getMessages','/:id/download','download','create','post','/:id/messages','tracked','openchannel','openchannelinteraction:addtags','addTags'];(function(_0x19ca5c,_0x4d2f1e){var _0x24441b=function(_0x1f8123){while(--_0x1f8123){_0x19ca5c['push'](_0x19ca5c['shift']());}};_0x24441b(++_0x4d2f1e);}(_0xb5d9,0xb9));var _0x9b5d=function(_0x67cb33,_0xe0ae0e){_0x67cb33=_0x67cb33-0x0;var _0x34be41=_0xb5d9[_0x67cb33];return _0x34be41;};'use strict';var multer=require(_0x9b5d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9b5d('0x1'));var express=require('express');var router=express[_0x9b5d('0x2')]();var fs_extra=require(_0x9b5d('0x3'));var auth=require(_0x9b5d('0x4'));var interaction=require(_0x9b5d('0x5'));var config=require(_0x9b5d('0x6'));var controller=require(_0x9b5d('0x7'));router['get']('/',auth[_0x9b5d('0x8')](),controller[_0x9b5d('0x9')]);router['get'](_0x9b5d('0xa'),auth[_0x9b5d('0x8')](),controller[_0x9b5d('0xb')]);router[_0x9b5d('0xc')](_0x9b5d('0xd'),auth[_0x9b5d('0x8')](),controller[_0x9b5d('0xe')]);router['get']('/:id/messages',auth[_0x9b5d('0x8')](),controller[_0x9b5d('0xf')]);router['get'](_0x9b5d('0x10'),auth[_0x9b5d('0x8')](),controller[_0x9b5d('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9b5d('0x12')]);router[_0x9b5d('0x13')](_0x9b5d('0x14'),auth[_0x9b5d('0x8')](),controller['addMessage']);router[_0x9b5d('0x13')]('/:id/tags',auth[_0x9b5d('0x8')](),interaction[_0x9b5d('0x15')](_0x9b5d('0x16'),_0x9b5d('0x17')),controller[_0x9b5d('0x18')]);router[_0x9b5d('0x19')]('/:id',auth['isAuthenticated'](),interaction[_0x9b5d('0x15')](_0x9b5d('0x16'),_0x9b5d('0x1a')),controller['update']);router[_0x9b5d('0x1b')](_0x9b5d('0xd'),auth[_0x9b5d('0x8')](),interaction[_0x9b5d('0x15')](_0x9b5d('0x16'),'openchannelinteraction:destroy'),controller['destroy']);router[_0x9b5d('0x1b')]('/:id/tags',auth['isAuthenticated'](),controller[_0x9b5d('0x1c')]);module[_0x9b5d('0x1d')]=router;
\ No newline at end of file
+var _0x4be8=['../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','addMessage','tracked','openchannel','openchannelinteraction:addtags','addTags','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x1056c9,_0x4a06e2){var _0x3242b0=function(_0xf056fd){while(--_0xf056fd){_0x1056c9['push'](_0x1056c9['shift']());}};_0x3242b0(++_0x4a06e2);}(_0x4be8,0x17f));var _0x84be=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4be8[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require(_0x84be('0x0'));var util=require(_0x84be('0x1'));var path=require(_0x84be('0x2'));var timeout=require(_0x84be('0x3'));var express=require(_0x84be('0x4'));var router=express[_0x84be('0x5')]();var fs_extra=require(_0x84be('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x84be('0x7'));var controller=require(_0x84be('0x8'));router[_0x84be('0x9')]('/',auth[_0x84be('0xa')](),controller[_0x84be('0xb')]);router[_0x84be('0x9')]('/describe',auth[_0x84be('0xa')](),controller[_0x84be('0xc')]);router['get'](_0x84be('0xd'),auth[_0x84be('0xa')](),controller['show']);router[_0x84be('0x9')](_0x84be('0xe'),auth[_0x84be('0xa')](),controller[_0x84be('0xf')]);router['get'](_0x84be('0x10'),auth[_0x84be('0xa')](),controller[_0x84be('0x11')]);router['post']('/',auth[_0x84be('0xa')](),controller['create']);router[_0x84be('0x12')](_0x84be('0xe'),auth[_0x84be('0xa')](),controller[_0x84be('0x13')]);router['post']('/:id/tags',auth['isAuthenticated'](),interaction[_0x84be('0x14')](_0x84be('0x15'),_0x84be('0x16')),controller[_0x84be('0x17')]);router['put'](_0x84be('0xd'),auth[_0x84be('0xa')](),interaction[_0x84be('0x14')](_0x84be('0x15'),_0x84be('0x18')),controller[_0x84be('0x19')]);router[_0x84be('0x1a')]('/:id',auth['isAuthenticated'](),interaction[_0x84be('0x14')]('openchannel',_0x84be('0x1b')),controller['destroy']);router[_0x84be('0x1a')]('/:id/tags',auth[_0x84be('0xa')](),controller[_0x84be('0x1c')]);module[_0x84be('0x1d')]=router;
\ No newline at end of file
index 6e6ad1a..0a58437 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3613=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x3b9413,_0x49f42d){var _0x241115=function(_0x4c7363){while(--_0x4c7363){_0x3b9413['push'](_0x3b9413['shift']());}};_0x241115(++_0x49f42d);}(_0x3613,0x198));var _0x3361=function(_0x5643c7,_0x2d38df){_0x5643c7=_0x5643c7-0x0;var _0xe13763=_0x3613[_0x5643c7];return _0xe13763;};'use strict';var Sequelize=require(_0x3361('0x0'));module[_0x3361('0x1')]={'closed':{'type':Sequelize[_0x3361('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3361('0x3')]},'disposition':{'type':Sequelize[_0x3361('0x4')]},'secondDisposition':{'type':Sequelize[_0x3361('0x4')]},'thirdDisposition':{'type':Sequelize[_0x3361('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x3361('0x3')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x3361('0x4')]},'lastMsgAt':{'type':Sequelize[_0x3361('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x3361('0x5')]('in',_0x3361('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x3361('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x3361('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x938c=['exports','DATE','STRING','ENUM','out','sequelize'];(function(_0xc7822b,_0x2db2bd){var _0x9fde8e=function(_0x573653){while(--_0x573653){_0xc7822b['push'](_0xc7822b['shift']());}};_0x9fde8e(++_0x2db2bd);}(_0x938c,0x11f));var _0xc938=function(_0x502651,_0x1aa9fa){_0x502651=_0x502651-0x0;var _0x4ceac8=_0x938c[_0x502651];return _0x4ceac8;};'use strict';var Sequelize=require(_0xc938('0x0'));module[_0xc938('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc938('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xc938('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xc938('0x2')]},'threadId':{'type':Sequelize[_0xc938('0x3')]},'externalUrl':{'type':Sequelize[_0xc938('0x3')]},'lastMsgAt':{'type':Sequelize[_0xc938('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xc938('0x4')]('in',_0xc938('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc938('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xc938('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index c23ad23..73fc30d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f76=['where','pick','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','spread','Tag','color','openchannelInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','read','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closed','closedAt','disposition','threadId','Public','Private','basename','existsSync','createReadStream','pipe','out','System','secret','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','rimraf','zip-dir','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','update','then','error','name','send','map','fieldName','type','key','findAll','openchannel','user','catch','show','query','from','params','model','keys','OpenchannelInteraction','rawAttributes','filters','intersection','attributes','fields','includeAll','merge','options','find','create','body','destroy','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','length','hasOwnProperty','nolimit','sort'];(function(_0x58f776,_0x548e89){var _0x538c43=function(_0x381c6c){while(--_0x381c6c){_0x58f776['push'](_0x58f776['shift']());}};_0x538c43(++_0x548e89);}(_0x3f76,0x13c));var _0x63f7=function(_0x21314a,_0x42a02f){_0x21314a=_0x21314a-0x0;var _0x5c4fd6=_0x3f76[_0x21314a];return _0x5c4fd6;};'use strict';var rimraf=require(_0x63f7('0x0'));var zipdir=require(_0x63f7('0x1'));var moment=require('moment');var util=require(_0x63f7('0x2'));var path=require(_0x63f7('0x3'));var ejs=require(_0x63f7('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x63f7('0x5'));var qs=require(_0x63f7('0x6'));var pdf=require('../../components/export/pdf');var logger=require(_0x63f7('0x7'))(_0x63f7('0x8'));var config=require(_0x63f7('0x9'));var db=require(_0x63f7('0xa'))['db'];config['redis']=_['defaults'](config[_0x63f7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x63f7('0xc'))(new Redis(config['redis']));require('./openchannelInteraction.socket')['register'](socket);function respondWithStatusCode(_0x323070,_0x2a609c){_0x2a609c=_0x2a609c||0xcc;return function(_0x57425b){if(_0x57425b){return _0x323070[_0x63f7('0xd')](_0x2a609c);}return _0x323070['status'](_0x2a609c)['end']();};}function respondWithResult(_0x336af7,_0x265473){_0x265473=_0x265473||0xc8;return function(_0xede2c0){if(_0xede2c0){return _0x336af7[_0x63f7('0xe')](_0x265473)[_0x63f7('0xf')](_0xede2c0);}};}function respondWithFilteredResult(_0xffaf07,_0x5a1cce){return function(_0x3eb819){if(_0x3eb819){var _0x25e495=typeof _0x5a1cce['offset']==='undefined'&&typeof _0x5a1cce[_0x63f7('0x10')]===_0x63f7('0x11');var _0x46a673=_0x3eb819[_0x63f7('0x12')];var _0x13439a=_0x25e495?0x0:_0x5a1cce[_0x63f7('0x13')];var _0x18d718=_0x25e495?_0x3eb819[_0x63f7('0x12')]:_0x5a1cce[_0x63f7('0x13')]+_0x5a1cce['limit'];var _0x5665cf;if(_0x18d718>=_0x46a673){_0x18d718=_0x46a673;_0x5665cf=0xc8;}else{_0x5665cf=0xce;}_0xffaf07['status'](_0x5665cf);return _0xffaf07[_0x63f7('0x14')](_0x63f7('0x15'),_0x13439a+'-'+_0x18d718+'/'+_0x46a673)[_0x63f7('0xf')](_0x3eb819);}return null;};}function saveUpdates(_0x1df2a4){return function(_0x1923e9){if(_0x1923e9){return _0x1923e9[_0x63f7('0x16')](_0x1df2a4)[_0x63f7('0x17')](function(_0x56c926){return _0x56c926;});}return null;};}function removeEntity(_0x155b70){return function(_0x2f2b61){if(_0x2f2b61){return _0x2f2b61['destroy']()['then'](function(){_0x155b70[_0x63f7('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20bb29){return function(_0x72c8f0){if(!_0x72c8f0){_0x20bb29['sendStatus'](0x194);}return _0x72c8f0;};}function handleError(_0x29b2d8,_0x3a8181){_0x3a8181=_0x3a8181||0x1f4;return function(_0x3049a9){logger[_0x63f7('0x18')](_0x3049a9['stack']);if(_0x3049a9[_0x63f7('0x19')]){delete _0x3049a9[_0x63f7('0x19')];}_0x29b2d8[_0x63f7('0xe')](_0x3a8181)[_0x63f7('0x1a')](_0x3049a9);};}exports['index']=function(_0xdf77b9,_0x552dd8){var _0x4c6513={};var _0x3681d7=_[_0x63f7('0x1b')](db['OpenchannelInteraction']['rawAttributes'],function(_0x5ec2b5){return{'name':_0x5ec2b5[_0x63f7('0x1c')],'type':_0x5ec2b5[_0x63f7('0x1d')][_0x63f7('0x1e')]};});_0x4c6513=qs['getOptions'](_0x3681d7,_0xdf77b9);return interaction[_0x63f7('0x1f')](_0x63f7('0x20'),_0xdf77b9['query'],_0xdf77b9[_0x63f7('0x21')],_0x4c6513,_0x3681d7)[_0x63f7('0x17')](respondWithFilteredResult(_0x552dd8,_0x4c6513))[_0x63f7('0x22')](handleError(_0x552dd8,null));};exports[_0x63f7('0x23')]=function(_0x3d3323,_0x13899a){var _0x3d4786={};if(_0x3d3323[_0x63f7('0x24')][_0x63f7('0x1d')]&&_0x3d3323[_0x63f7('0x24')][_0x63f7('0x1d')]===_0x63f7('0x25')){_0x3d4786[_0x63f7('0x25')]=_0x3d3323['params']['id'];}else{_0x3d4786['id']=_0x3d3323[_0x63f7('0x26')]['id'];}var _0x5ec016={'raw':![],'where':_0x3d4786},_0x3b24b4={};_0x3b24b4[_0x63f7('0x27')]=_[_0x63f7('0x28')](db[_0x63f7('0x29')][_0x63f7('0x2a')]);_0x3b24b4['query']=_['keys'](_0x3d3323['query']);_0x3b24b4[_0x63f7('0x2b')]=_[_0x63f7('0x2c')](_0x3b24b4[_0x63f7('0x27')],_0x3b24b4[_0x63f7('0x24')]);_0x5ec016[_0x63f7('0x2d')]=_['intersection'](_0x3b24b4[_0x63f7('0x27')],qs[_0x63f7('0x2e')](_0x3d3323[_0x63f7('0x24')][_0x63f7('0x2e')]));_0x5ec016[_0x63f7('0x2d')]=_0x5ec016[_0x63f7('0x2d')]['length']?_0x5ec016[_0x63f7('0x2d')]:_0x3b24b4[_0x63f7('0x27')];if(_0x3d3323[_0x63f7('0x24')][_0x63f7('0x2f')]){_0x5ec016['include']=[{'all':!![]}];}_0x5ec016=_[_0x63f7('0x30')]({},_0x5ec016,_0x3d3323[_0x63f7('0x31')]);return db[_0x63f7('0x29')][_0x63f7('0x32')](_0x5ec016)[_0x63f7('0x17')](handleEntityNotFound(_0x13899a,null))[_0x63f7('0x17')](respondWithResult(_0x13899a,null))[_0x63f7('0x22')](handleError(_0x13899a,null));};exports['create']=function(_0x2bd4e4,_0xbd5efc){return db[_0x63f7('0x29')][_0x63f7('0x33')](_0x2bd4e4['body'],{})[_0x63f7('0x17')](respondWithResult(_0xbd5efc,0xc9))[_0x63f7('0x22')](handleError(_0xbd5efc,null));};exports[_0x63f7('0x16')]=function(_0x2a0eed,_0x173598){if(_0x2a0eed['body']['id']){delete _0x2a0eed['body']['id'];}return db[_0x63f7('0x29')][_0x63f7('0x32')]({'where':{'id':_0x2a0eed[_0x63f7('0x26')]['id']}})['then'](handleEntityNotFound(_0x173598,null))['then'](saveUpdates(_0x2a0eed[_0x63f7('0x34')],null))['then'](respondWithResult(_0x173598,null))[_0x63f7('0x22')](handleError(_0x173598,null));};exports[_0x63f7('0x35')]=function(_0x775265,_0x5311f0){return db[_0x63f7('0x29')]['find']({'where':{'id':_0x775265[_0x63f7('0x26')]['id']}})['then'](handleEntityNotFound(_0x5311f0,null))[_0x63f7('0x17')](removeEntity(_0x5311f0,null))[_0x63f7('0x22')](handleError(_0x5311f0,null));};exports[_0x63f7('0x36')]=function(_0xeb1a66,_0x428ed6){return db[_0x63f7('0x29')][_0x63f7('0x36')]()[_0x63f7('0x17')](respondWithResult(_0x428ed6,null))[_0x63f7('0x22')](handleError(_0x428ed6,null));};exports[_0x63f7('0x37')]=function(_0x34bb0d,_0x42b33f){return db['OpenchannelMessage'][_0x63f7('0x32')]({'where':{'id':_0x34bb0d[_0x63f7('0x26')]['id']}})[_0x63f7('0x17')](handleEntityNotFound(_0x42b33f,null))[_0x63f7('0x17')](function(_0x418579){if(_0x418579){return _0x418579['addMessage'](_0x34bb0d['body'][_0x63f7('0x38')],_[_0x63f7('0x39')](_0x34bb0d[_0x63f7('0x34')],[_0x63f7('0x38'),'id'])||{});}})[_0x63f7('0x17')](respondWithResult(_0x42b33f,null))['catch'](handleError(_0x42b33f,null));};exports[_0x63f7('0x3a')]=function(_0x4a850a,_0x33c354){var _0x178b24={'raw':![],'where':{}};var _0x519a4c={};var _0x37c2de={'count':0x0,'rows':[]};return db[_0x63f7('0x29')][_0x63f7('0x3b')]({'where':{'id':_0x4a850a[_0x63f7('0x26')]['id']}})['then'](handleEntityNotFound(_0x33c354,null))[_0x63f7('0x17')](function(_0xd637fb){if(_0xd637fb){_0x519a4c['model']=_['keys'](db[_0x63f7('0x3c')]['rawAttributes']);_0x519a4c[_0x63f7('0x24')]=_[_0x63f7('0x28')](_0x4a850a['query']);_0x519a4c[_0x63f7('0x2b')]=_[_0x63f7('0x2c')](_0x519a4c['model'],_0x519a4c[_0x63f7('0x24')]);_0x178b24[_0x63f7('0x2d')]=_['intersection'](_0x519a4c[_0x63f7('0x27')],qs[_0x63f7('0x2e')](_0x4a850a[_0x63f7('0x24')]['fields']));_0x178b24[_0x63f7('0x2d')]=_0x178b24[_0x63f7('0x2d')][_0x63f7('0x3d')]?_0x178b24[_0x63f7('0x2d')]:_0x519a4c[_0x63f7('0x27')];if(!_0x4a850a['query'][_0x63f7('0x3e')](_0x63f7('0x3f'))){_0x178b24['limit']=qs[_0x63f7('0x10')](_0x4a850a[_0x63f7('0x24')][_0x63f7('0x10')]);_0x178b24[_0x63f7('0x13')]=qs[_0x63f7('0x13')](_0x4a850a[_0x63f7('0x24')][_0x63f7('0x13')]);}_0x178b24['order']=qs[_0x63f7('0x40')](_0x4a850a[_0x63f7('0x24')][_0x63f7('0x40')]);_0x178b24[_0x63f7('0x41')]=qs['filters'](_[_0x63f7('0x42')](_0x4a850a[_0x63f7('0x24')],_0x519a4c[_0x63f7('0x2b')]));_0x178b24[_0x63f7('0x41')]['OpenchannelInteractionId']=_0xd637fb['id'];if(_0x4a850a[_0x63f7('0x24')]['filter']){_0x178b24[_0x63f7('0x41')]=_[_0x63f7('0x30')](_0x178b24['where'],{'$or':_['map'](_0x178b24[_0x63f7('0x2d')],function(_0x3d0cb3){var _0x302fe3={};_0x302fe3[_0x3d0cb3]={'$like':'%'+_0x4a850a[_0x63f7('0x24')][_0x63f7('0x43')]+'%'};return _0x302fe3;})});}if(_0x4a850a[_0x63f7('0x24')]['$gte']){var _0x5adea8=_0x4a850a[_0x63f7('0x24')][_0x63f7('0x44')]['split'](',');var _0x3f6eb5={};_0x3f6eb5[_0x5adea8[0x0]]={'$gte':moment(_0x5adea8[0x1])[_0x63f7('0x45')](_0x63f7('0x46'))};_0x178b24[_0x63f7('0x41')]=_[_0x63f7('0x30')](_0x178b24['where'],_0x3f6eb5);}_0x178b24=_['merge']({},_0x178b24,_0x4a850a[_0x63f7('0x31')]);return db['OpenchannelMessage'][_0x63f7('0x12')]({'where':_0x178b24['where']})[_0x63f7('0x17')](function(_0x40d32c){_0x37c2de['count']=_0x40d32c;if(_0x4a850a['query'][_0x63f7('0x2f')]){_0x178b24[_0x63f7('0x47')]=[{'all':!![]}];}return db[_0x63f7('0x3c')][_0x63f7('0x1f')](_0x178b24);})[_0x63f7('0x17')](function(_0x21c56b){_0x37c2de[_0x63f7('0x48')]=_0x21c56b;return _0x37c2de;});}})[_0x63f7('0x17')](respondWithFilteredResult(_0x33c354,_0x178b24))[_0x63f7('0x22')](handleError(_0x33c354,null));};exports[_0x63f7('0x49')]=function(_0x1f8f54,_0x4ade3){return db[_0x63f7('0x29')][_0x63f7('0x32')]({'where':{'id':_0x1f8f54[_0x63f7('0x26')]['id']}})[_0x63f7('0x17')](handleEntityNotFound(_0x4ade3,null))['then'](function(_0x44deee){if(_0x44deee){return _0x44deee[_0x63f7('0x4a')](_0x1f8f54['body'][_0x63f7('0x38')],_['omit'](_0x1f8f54[_0x63f7('0x34')],['ids','id'])||{})[_0x63f7('0x4b')](function(){return db[_0x63f7('0x4c')][_0x63f7('0x1f')]({'attributes':['id','name',_0x63f7('0x4d')],'where':{'id':_0x1f8f54[_0x63f7('0x34')][_0x63f7('0x38')]}});})[_0x63f7('0x17')](function(_0x3acd6f){socket['emit'](_0x63f7('0x4e'),{'id':Number(_0x1f8f54[_0x63f7('0x26')]['id']),'tags':_0x3acd6f||[]});return{'id':Number(_0x1f8f54[_0x63f7('0x26')]['id']),'tags':_0x3acd6f||[]};});}})[_0x63f7('0x17')](respondWithResult(_0x4ade3,null))[_0x63f7('0x22')](handleError(_0x4ade3,null));};exports[_0x63f7('0x4f')]=function(_0x2f6f86,_0x55c8a7){return db['OpenchannelInteraction']['find']({'where':{'id':_0x2f6f86[_0x63f7('0x26')]['id']}})[_0x63f7('0x17')](handleEntityNotFound(_0x55c8a7,null))['then'](function(_0x4f4f64){if(_0x4f4f64){return _0x4f4f64['removeTags'](_0x2f6f86['query'][_0x63f7('0x38')]);}})[_0x63f7('0x17')](respondWithStatusCode(_0x55c8a7,null))['catch'](handleError(_0x55c8a7,null));};exports[_0x63f7('0x50')]=function(_0x53754c,_0x195a26){var _0x5c1eba=moment()[_0x63f7('0x51')]()[_0x63f7('0x52')]();var _0x45e23f=path[_0x63f7('0x53')](config['root'],_0x63f7('0x54'),_0x63f7('0x55'),_0x63f7('0x56'));var _0x22019c=path[_0x63f7('0x53')](config[_0x63f7('0x57')],_0x63f7('0x54'),_0x63f7('0x55'),_0x63f7('0x58'));var _0x1d350b=path['join'](_0x45e23f,_0x5c1eba);var _0x214215=util[_0x63f7('0x45')](_0x63f7('0x59'),_0x53754c[_0x63f7('0x26')]['id'],_0x5c1eba);var _0x44db8b=path['join'](_0x45e23f,_0x214215);var _0x155c71=[];_0x155c71[_0x63f7('0x5a')]({'model':db['User'],'as':_0x63f7('0x5b'),'attributes':['id',_0x63f7('0x5c')],'raw':!![]});_0x155c71['push']({'model':db['CmContact'],'as':_0x63f7('0x5d'),'attributes':['id',_0x63f7('0x5e'),_0x63f7('0x5f')],'raw':!![]});if(_0x53754c[_0x63f7('0x24')][_0x63f7('0x58')]){_0x155c71[_0x63f7('0x5a')]({'model':db[_0x63f7('0x60')],'as':'Attachment','raw':!![]});}var _0x27298d=[{'model':db['OpenchannelMessage'],'as':_0x63f7('0x61'),'attributes':['id',_0x63f7('0x34'),_0x63f7('0x62'),_0x63f7('0x63'),'secret',_0x63f7('0x64')],'include':_0x155c71}];_0x27298d[_0x63f7('0x5a')]({'model':db[_0x63f7('0x65')],'as':_0x63f7('0x66'),'attributes':['id',_0x63f7('0x19')]});_0x27298d[_0x63f7('0x5a')]({'model':db[_0x63f7('0x5b')],'as':_0x63f7('0x67'),'attributes':['id',_0x63f7('0x5c')]});return db[_0x63f7('0x29')][_0x63f7('0x32')]({'where':{'id':_0x53754c[_0x63f7('0x26')]['id']},'include':_0x27298d})[_0x63f7('0x17')](handleEntityNotFound(_0x195a26,null))[_0x63f7('0x17')](function(_0x50c686){if(_0x50c686){var _0x33e206=_0x50c686[_0x63f7('0x68')]({'plain':!![]});fs[_0x63f7('0x69')](_0x1d350b);var _0x48e5d5={'channel':_0x63f7('0x6a'),'account':_0x33e206[_0x63f7('0x66')][_0x63f7('0x19')],'agent':_0x33e206['Owner']?_0x33e206[_0x63f7('0x67')]['fullname']:_0x63f7('0x6b'),'createdAt':moment(_0x33e206['createdAt'])[_0x63f7('0x45')](_0x63f7('0x46'))[_0x63f7('0x52')](),'closedAt':_0x33e206[_0x63f7('0x6c')]?moment(_0x33e206[_0x63f7('0x6d')])['format'](_0x63f7('0x46'))[_0x63f7('0x52')]():'','disposition':_0x33e206[_0x63f7('0x6e')],'visibility':_0x33e206[_0x63f7('0x6f')]?_0x63f7('0x70'):_0x63f7('0x71'),'messages':_(_0x33e206[_0x63f7('0x61')])['filter']({'secret':![]})[_0x63f7('0x1b')](function(_0x5bf474){if(_0x5bf474[_0x63f7('0x60')]){var _0x22a8ab=path[_0x63f7('0x53')](_0x22019c,_0x5bf474['Attachment'][_0x63f7('0x72')]);if(fs[_0x63f7('0x73')](_0x22a8ab)){fs[_0x63f7('0x74')](_0x22a8ab)[_0x63f7('0x75')](fs['createWriteStream'](path[_0x63f7('0x53')](_0x1d350b,_0x5bf474['Attachment'][_0x63f7('0x72')])));}}return{'date':moment(_0x5bf474[_0x63f7('0x62')])[_0x63f7('0x45')](_0x63f7('0x46'))[_0x63f7('0x52')](),'sender':_0x5bf474[_0x63f7('0x63')]===_0x63f7('0x76')?_0x5bf474[_0x63f7('0x5b')]?_0x5bf474[_0x63f7('0x5b')][_0x63f7('0x5c')]:_0x63f7('0x77'):_0x5bf474[_0x63f7('0x5d')][_0x63f7('0x5e')]+(_0x5bf474[_0x63f7('0x5d')]['lastName']?'\x20'+_0x5bf474[_0x63f7('0x5d')]['lastName']:''),'body':_0x5bf474[_0x63f7('0x60')]?_0x5bf474['Attachment'][_0x63f7('0x72')]:_0x5bf474[_0x63f7('0x34')],'direction':_0x5bf474[_0x63f7('0x63')]===_0x63f7('0x76')?'A':'C','secret':_0x5bf474[_0x63f7('0x78')],'read':_0x5bf474['read'],'attachment':_0x5bf474['Attachment']};})['value']()};return ejs[_0x63f7('0x79')](path[_0x63f7('0x53')](config[_0x63f7('0x57')],'server',_0x63f7('0x7a'),_0x63f7('0x7b')),{'interaction':_0x48e5d5})['then'](function(_0x3ffeea){var _0x57d7ed=path[_0x63f7('0x53')](_0x1d350b,'transcript-'+_0x33e206['id']+'-'+_0x5c1eba+_0x63f7('0x7c'));var _0x2aaca5={'path':_0x57d7ed,'channel':_0x63f7('0x6a'),'interactionId':_0x33e206['id']};return pdf[_0x63f7('0x7d')](_0x3ffeea,_0x2aaca5);})[_0x63f7('0x17')](function(){return new Promise(function(_0x1a80db,_0x5e7b1b){zipdir(_0x1d350b,{'saveTo':_0x44db8b},function(_0x164a21,_0x22029f){if(_0x164a21)return _0x5e7b1b(_0x164a21);return _0x1a80db(_0x22029f);});})[_0x63f7('0x17')](function(){return new Promise(function(_0x47800f,_0x5f1aee){rimraf(_0x1d350b,function(_0x9d71c6){if(_0x9d71c6)_0x5f1aee(_0x9d71c6);return _0x47800f();});});})[_0x63f7('0x17')](function(){return _0x195a26[_0x63f7('0x50')](_0x44db8b,_0x214215,function(_0x1a76d8){if(_0x1a76d8){logger[_0x63f7('0x18')](_0x63f7('0x7e'),_0x1a76d8);}else{fs['unlinkSync'](_0x44db8b);}});});});}else{return _0x195a26['sendStatus'](0xc8);}})[_0x63f7('0x22')](handleError(_0x195a26,null));};
\ No newline at end of file
+var _0xf32d=['count','Content-Range','json','update','then','destroy','stack','name','send','index','map','OpenchannelInteraction','fieldName','type','key','getOptions','findAll','openchannel','user','catch','query','from','params','model','keys','rawAttributes','intersection','attributes','include','options','create','body','find','describe','addMessage','OpenchannelMessage','omit','ids','getMessages','findOne','filters','fields','length','sort','where','pick','OpenchannelInteractionId','filter','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','spread','Tag','color','emit','openchannelInteractionTags:save','unix','toString','join','root','files','server','attachments','format','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','Attachment','Messages','direction','read','OpenchannelAccount','Owner','get','mkdirSync','Account','N.A.','createdAt','closed','closedAt','disposition','threadId','Public','Private','existsSync','createReadStream','pipe','basename','out','secret','value','views','transcript-','.pdf','download','error','zip-dir','path','ejs','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','redis','defaults','./openchannelInteraction.socket','sendStatus','status','end','offset','undefined','limit'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xf32d,0x157));var _0xdf32=function(_0xccce2b,_0x76b8f1){_0xccce2b=_0xccce2b-0x0;var _0x3c0f6d=_0xf32d[_0xccce2b];return _0x3c0f6d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xdf32('0x0'));var moment=require('moment');var util=require('util');var path=require(_0xdf32('0x1'));var ejs=require(_0xdf32('0x2'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xdf32('0x3'));var interaction=require('../../components/interaction/service');var qs=require(_0xdf32('0x4'));var pdf=require(_0xdf32('0x5'));var logger=require(_0xdf32('0x6'))('api');var config=require(_0xdf32('0x7'));var db=require('../../mysqldb')['db'];config[_0xdf32('0x8')]=_[_0xdf32('0x9')](config[_0xdf32('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdf32('0x8')]));require(_0xdf32('0xa'))['register'](socket);function respondWithStatusCode(_0x549235,_0xe93ac1){_0xe93ac1=_0xe93ac1||0xcc;return function(_0x2c4b3f){if(_0x2c4b3f){return _0x549235[_0xdf32('0xb')](_0xe93ac1);}return _0x549235[_0xdf32('0xc')](_0xe93ac1)[_0xdf32('0xd')]();};}function respondWithResult(_0x1f72a4,_0xdef5d7){_0xdef5d7=_0xdef5d7||0xc8;return function(_0x4f80df){if(_0x4f80df){return _0x1f72a4[_0xdf32('0xc')](_0xdef5d7)['json'](_0x4f80df);}};}function respondWithFilteredResult(_0x2ad17f,_0x58114c){return function(_0x49ddab){if(_0x49ddab){var _0x47488f=typeof _0x58114c[_0xdf32('0xe')]===_0xdf32('0xf')&&typeof _0x58114c[_0xdf32('0x10')]==='undefined';var _0x3b73c0=_0x49ddab[_0xdf32('0x11')];var _0x3559b=_0x47488f?0x0:_0x58114c[_0xdf32('0xe')];var _0x5bf973=_0x47488f?_0x49ddab[_0xdf32('0x11')]:_0x58114c[_0xdf32('0xe')]+_0x58114c[_0xdf32('0x10')];var _0x1e472a;if(_0x5bf973>=_0x3b73c0){_0x5bf973=_0x3b73c0;_0x1e472a=0xc8;}else{_0x1e472a=0xce;}_0x2ad17f['status'](_0x1e472a);return _0x2ad17f['set'](_0xdf32('0x12'),_0x3559b+'-'+_0x5bf973+'/'+_0x3b73c0)[_0xdf32('0x13')](_0x49ddab);}return null;};}function saveUpdates(_0x52ded8){return function(_0x2c9a8d){if(_0x2c9a8d){return _0x2c9a8d[_0xdf32('0x14')](_0x52ded8)[_0xdf32('0x15')](function(_0x5b7cfa){return _0x5b7cfa;});}return null;};}function removeEntity(_0x53a0f2){return function(_0x1de3e2){if(_0x1de3e2){return _0x1de3e2[_0xdf32('0x16')]()['then'](function(){_0x53a0f2[_0xdf32('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52a27c){return function(_0x34627a){if(!_0x34627a){_0x52a27c[_0xdf32('0xb')](0x194);}return _0x34627a;};}function handleError(_0x547094,_0x4333d6){_0x4333d6=_0x4333d6||0x1f4;return function(_0x4949b6){logger['error'](_0x4949b6[_0xdf32('0x17')]);if(_0x4949b6[_0xdf32('0x18')]){delete _0x4949b6['name'];}_0x547094[_0xdf32('0xc')](_0x4333d6)[_0xdf32('0x19')](_0x4949b6);};}exports[_0xdf32('0x1a')]=function(_0x5cd0a6,_0x29165f){var _0x4272f8={};var _0x1391d3=_[_0xdf32('0x1b')](db[_0xdf32('0x1c')]['rawAttributes'],function(_0x516774){return{'name':_0x516774[_0xdf32('0x1d')],'type':_0x516774[_0xdf32('0x1e')][_0xdf32('0x1f')]};});_0x4272f8=qs[_0xdf32('0x20')](_0x1391d3,_0x5cd0a6);return interaction[_0xdf32('0x21')](_0xdf32('0x22'),_0x5cd0a6['query'],_0x5cd0a6[_0xdf32('0x23')],_0x4272f8,_0x1391d3)[_0xdf32('0x15')](respondWithFilteredResult(_0x29165f,_0x4272f8))[_0xdf32('0x24')](handleError(_0x29165f,null));};exports['show']=function(_0x11ce02,_0x3734bb){var _0x58d476={};if(_0x11ce02['query'][_0xdf32('0x1e')]&&_0x11ce02[_0xdf32('0x25')]['type']===_0xdf32('0x26')){_0x58d476[_0xdf32('0x26')]=_0x11ce02[_0xdf32('0x27')]['id'];}else{_0x58d476['id']=_0x11ce02[_0xdf32('0x27')]['id'];}var _0x1b7b26={'raw':![],'where':_0x58d476},_0x5b1f1d={};_0x5b1f1d[_0xdf32('0x28')]=_[_0xdf32('0x29')](db[_0xdf32('0x1c')][_0xdf32('0x2a')]);_0x5b1f1d[_0xdf32('0x25')]=_[_0xdf32('0x29')](_0x11ce02[_0xdf32('0x25')]);_0x5b1f1d['filters']=_[_0xdf32('0x2b')](_0x5b1f1d[_0xdf32('0x28')],_0x5b1f1d[_0xdf32('0x25')]);_0x1b7b26[_0xdf32('0x2c')]=_[_0xdf32('0x2b')](_0x5b1f1d[_0xdf32('0x28')],qs['fields'](_0x11ce02[_0xdf32('0x25')]['fields']));_0x1b7b26[_0xdf32('0x2c')]=_0x1b7b26[_0xdf32('0x2c')]['length']?_0x1b7b26[_0xdf32('0x2c')]:_0x5b1f1d['model'];if(_0x11ce02['query']['includeAll']){_0x1b7b26[_0xdf32('0x2d')]=[{'all':!![]}];}_0x1b7b26=_['merge']({},_0x1b7b26,_0x11ce02[_0xdf32('0x2e')]);return db[_0xdf32('0x1c')]['find'](_0x1b7b26)['then'](handleEntityNotFound(_0x3734bb,null))[_0xdf32('0x15')](respondWithResult(_0x3734bb,null))[_0xdf32('0x24')](handleError(_0x3734bb,null));};exports[_0xdf32('0x2f')]=function(_0x2a8726,_0x1be62e){return db[_0xdf32('0x1c')][_0xdf32('0x2f')](_0x2a8726[_0xdf32('0x30')],{})['then'](respondWithResult(_0x1be62e,0xc9))['catch'](handleError(_0x1be62e,null));};exports[_0xdf32('0x14')]=function(_0x3f1312,_0x468032){if(_0x3f1312['body']['id']){delete _0x3f1312[_0xdf32('0x30')]['id'];}return db[_0xdf32('0x1c')]['find']({'where':{'id':_0x3f1312[_0xdf32('0x27')]['id']}})[_0xdf32('0x15')](handleEntityNotFound(_0x468032,null))[_0xdf32('0x15')](saveUpdates(_0x3f1312['body'],null))[_0xdf32('0x15')](respondWithResult(_0x468032,null))[_0xdf32('0x24')](handleError(_0x468032,null));};exports['destroy']=function(_0x5d1d04,_0x421352){return db['OpenchannelInteraction'][_0xdf32('0x31')]({'where':{'id':_0x5d1d04[_0xdf32('0x27')]['id']}})['then'](handleEntityNotFound(_0x421352,null))[_0xdf32('0x15')](removeEntity(_0x421352,null))[_0xdf32('0x24')](handleError(_0x421352,null));};exports['describe']=function(_0xf1d21a,_0x50396a){return db[_0xdf32('0x1c')][_0xdf32('0x32')]()[_0xdf32('0x15')](respondWithResult(_0x50396a,null))[_0xdf32('0x24')](handleError(_0x50396a,null));};exports[_0xdf32('0x33')]=function(_0x3c6b8c,_0xe3e248){return db[_0xdf32('0x34')][_0xdf32('0x31')]({'where':{'id':_0x3c6b8c['params']['id']}})[_0xdf32('0x15')](handleEntityNotFound(_0xe3e248,null))['then'](function(_0x5dada2){if(_0x5dada2){return _0x5dada2[_0xdf32('0x33')](_0x3c6b8c['body']['ids'],_[_0xdf32('0x35')](_0x3c6b8c[_0xdf32('0x30')],[_0xdf32('0x36'),'id'])||{});}})[_0xdf32('0x15')](respondWithResult(_0xe3e248,null))['catch'](handleError(_0xe3e248,null));};exports[_0xdf32('0x37')]=function(_0x354c99,_0x552558){var _0x379f23={'raw':![],'where':{}};var _0x2b6efc={};var _0x24a7ac={'count':0x0,'rows':[]};return db[_0xdf32('0x1c')][_0xdf32('0x38')]({'where':{'id':_0x354c99[_0xdf32('0x27')]['id']}})['then'](handleEntityNotFound(_0x552558,null))[_0xdf32('0x15')](function(_0x2a1498){if(_0x2a1498){_0x2b6efc[_0xdf32('0x28')]=_[_0xdf32('0x29')](db[_0xdf32('0x34')][_0xdf32('0x2a')]);_0x2b6efc[_0xdf32('0x25')]=_[_0xdf32('0x29')](_0x354c99[_0xdf32('0x25')]);_0x2b6efc[_0xdf32('0x39')]=_[_0xdf32('0x2b')](_0x2b6efc[_0xdf32('0x28')],_0x2b6efc['query']);_0x379f23[_0xdf32('0x2c')]=_[_0xdf32('0x2b')](_0x2b6efc['model'],qs[_0xdf32('0x3a')](_0x354c99['query'][_0xdf32('0x3a')]));_0x379f23[_0xdf32('0x2c')]=_0x379f23[_0xdf32('0x2c')][_0xdf32('0x3b')]?_0x379f23['attributes']:_0x2b6efc['model'];if(!_0x354c99[_0xdf32('0x25')]['hasOwnProperty']('nolimit')){_0x379f23[_0xdf32('0x10')]=qs[_0xdf32('0x10')](_0x354c99['query'][_0xdf32('0x10')]);_0x379f23[_0xdf32('0xe')]=qs[_0xdf32('0xe')](_0x354c99[_0xdf32('0x25')][_0xdf32('0xe')]);}_0x379f23['order']=qs[_0xdf32('0x3c')](_0x354c99[_0xdf32('0x25')][_0xdf32('0x3c')]);_0x379f23[_0xdf32('0x3d')]=qs[_0xdf32('0x39')](_[_0xdf32('0x3e')](_0x354c99[_0xdf32('0x25')],_0x2b6efc[_0xdf32('0x39')]));_0x379f23[_0xdf32('0x3d')][_0xdf32('0x3f')]=_0x2a1498['id'];if(_0x354c99[_0xdf32('0x25')][_0xdf32('0x40')]){_0x379f23[_0xdf32('0x3d')]=_[_0xdf32('0x41')](_0x379f23[_0xdf32('0x3d')],{'$or':_[_0xdf32('0x1b')](_0x379f23[_0xdf32('0x2c')],function(_0x3c5430){var _0x44c0bf={};_0x44c0bf[_0x3c5430]={'$like':'%'+_0x354c99[_0xdf32('0x25')][_0xdf32('0x40')]+'%'};return _0x44c0bf;})});}if(_0x354c99[_0xdf32('0x25')][_0xdf32('0x42')]){var _0xb5e45=_0x354c99['query'][_0xdf32('0x42')][_0xdf32('0x43')](',');var _0x352608={};_0x352608[_0xb5e45[0x0]]={'$gte':moment(_0xb5e45[0x1])['format'](_0xdf32('0x44'))};_0x379f23[_0xdf32('0x3d')]=_[_0xdf32('0x41')](_0x379f23['where'],_0x352608);}_0x379f23=_[_0xdf32('0x41')]({},_0x379f23,_0x354c99[_0xdf32('0x2e')]);return db[_0xdf32('0x34')][_0xdf32('0x11')]({'where':_0x379f23[_0xdf32('0x3d')]})['then'](function(_0x4224ae){_0x24a7ac[_0xdf32('0x11')]=_0x4224ae;if(_0x354c99[_0xdf32('0x25')][_0xdf32('0x45')]){_0x379f23[_0xdf32('0x2d')]=[{'all':!![]}];}return db[_0xdf32('0x34')][_0xdf32('0x21')](_0x379f23);})['then'](function(_0x2c982e){_0x24a7ac[_0xdf32('0x46')]=_0x2c982e;return _0x24a7ac;});}})[_0xdf32('0x15')](respondWithFilteredResult(_0x552558,_0x379f23))[_0xdf32('0x24')](handleError(_0x552558,null));};exports['addTags']=function(_0x1f2374,_0x44a09c){return db[_0xdf32('0x1c')][_0xdf32('0x31')]({'where':{'id':_0x1f2374['params']['id']}})[_0xdf32('0x15')](handleEntityNotFound(_0x44a09c,null))['then'](function(_0x212493){if(_0x212493){return _0x212493['setTags'](_0x1f2374['body'][_0xdf32('0x36')],_[_0xdf32('0x35')](_0x1f2374[_0xdf32('0x30')],[_0xdf32('0x36'),'id'])||{})[_0xdf32('0x47')](function(){return db[_0xdf32('0x48')]['findAll']({'attributes':['id',_0xdf32('0x18'),_0xdf32('0x49')],'where':{'id':_0x1f2374[_0xdf32('0x30')][_0xdf32('0x36')]}});})[_0xdf32('0x15')](function(_0x455ae0){socket[_0xdf32('0x4a')](_0xdf32('0x4b'),{'id':Number(_0x1f2374[_0xdf32('0x27')]['id']),'tags':_0x455ae0||[]});return{'id':Number(_0x1f2374[_0xdf32('0x27')]['id']),'tags':_0x455ae0||[]};});}})[_0xdf32('0x15')](respondWithResult(_0x44a09c,null))[_0xdf32('0x24')](handleError(_0x44a09c,null));};exports['removeTags']=function(_0x1ede4c,_0x492e82){return db[_0xdf32('0x1c')][_0xdf32('0x31')]({'where':{'id':_0x1ede4c['params']['id']}})[_0xdf32('0x15')](handleEntityNotFound(_0x492e82,null))[_0xdf32('0x15')](function(_0x2566dc){if(_0x2566dc){return _0x2566dc['removeTags'](_0x1ede4c[_0xdf32('0x25')][_0xdf32('0x36')]);}})[_0xdf32('0x15')](respondWithStatusCode(_0x492e82,null))['catch'](handleError(_0x492e82,null));};exports['download']=function(_0x16d90a,_0x6aa51e){var _0x2aa392=moment()[_0xdf32('0x4c')]()[_0xdf32('0x4d')]();var _0x2a5b32=path[_0xdf32('0x4e')](config[_0xdf32('0x4f')],'server',_0xdf32('0x50'),'tmp');var _0x47371f=path[_0xdf32('0x4e')](config['root'],_0xdf32('0x51'),_0xdf32('0x50'),_0xdf32('0x52'));var _0x423281=path['join'](_0x2a5b32,_0x2aa392);var _0x329299=util[_0xdf32('0x53')](_0xdf32('0x54'),_0x16d90a[_0xdf32('0x27')]['id'],_0x2aa392);var _0x8a7d90=path[_0xdf32('0x4e')](_0x2a5b32,_0x329299);var _0x4f4221=[];_0x4f4221[_0xdf32('0x55')]({'model':db[_0xdf32('0x56')],'as':'User','attributes':['id',_0xdf32('0x57')],'raw':!![]});_0x4f4221[_0xdf32('0x55')]({'model':db['CmContact'],'as':_0xdf32('0x58'),'attributes':['id',_0xdf32('0x59'),_0xdf32('0x5a')],'raw':!![]});if(_0x16d90a[_0xdf32('0x25')][_0xdf32('0x52')]){_0x4f4221[_0xdf32('0x55')]({'model':db[_0xdf32('0x5b')],'as':_0xdf32('0x5b'),'raw':!![]});}var _0x4e0542=[{'model':db[_0xdf32('0x34')],'as':_0xdf32('0x5c'),'attributes':['id',_0xdf32('0x30'),'createdAt',_0xdf32('0x5d'),'secret',_0xdf32('0x5e')],'include':_0x4f4221}];_0x4e0542['push']({'model':db[_0xdf32('0x5f')],'as':'Account','attributes':['id',_0xdf32('0x18')]});_0x4e0542[_0xdf32('0x55')]({'model':db[_0xdf32('0x56')],'as':_0xdf32('0x60'),'attributes':['id',_0xdf32('0x57')]});return db[_0xdf32('0x1c')][_0xdf32('0x31')]({'where':{'id':_0x16d90a['params']['id']},'include':_0x4e0542})[_0xdf32('0x15')](handleEntityNotFound(_0x6aa51e,null))[_0xdf32('0x15')](function(_0x25dfc2){if(_0x25dfc2){var _0x150f18=_0x25dfc2[_0xdf32('0x61')]({'plain':!![]});fs[_0xdf32('0x62')](_0x423281);var _0x169856={'channel':'Openchannel','account':_0x150f18[_0xdf32('0x63')][_0xdf32('0x18')],'agent':_0x150f18[_0xdf32('0x60')]?_0x150f18[_0xdf32('0x60')][_0xdf32('0x57')]:_0xdf32('0x64'),'createdAt':moment(_0x150f18[_0xdf32('0x65')])[_0xdf32('0x53')](_0xdf32('0x44'))[_0xdf32('0x4d')](),'closedAt':_0x150f18[_0xdf32('0x66')]?moment(_0x150f18[_0xdf32('0x67')])[_0xdf32('0x53')]('YYYY-MM-DD\x20HH:mm:ss')[_0xdf32('0x4d')]():'','disposition':_0x150f18[_0xdf32('0x68')],'visibility':_0x150f18[_0xdf32('0x69')]?_0xdf32('0x6a'):_0xdf32('0x6b'),'messages':_(_0x150f18['Messages'])['filter']({'secret':![]})[_0xdf32('0x1b')](function(_0x717d83){if(_0x717d83[_0xdf32('0x5b')]){var _0x1f3725=path['join'](_0x47371f,_0x717d83['Attachment']['basename']);if(fs[_0xdf32('0x6c')](_0x1f3725)){fs[_0xdf32('0x6d')](_0x1f3725)[_0xdf32('0x6e')](fs['createWriteStream'](path[_0xdf32('0x4e')](_0x423281,_0x717d83[_0xdf32('0x5b')][_0xdf32('0x6f')])));}}return{'date':moment(_0x717d83['createdAt'])[_0xdf32('0x53')](_0xdf32('0x44'))['toString'](),'sender':_0x717d83['direction']===_0xdf32('0x70')?_0x717d83[_0xdf32('0x56')]?_0x717d83[_0xdf32('0x56')]['fullname']:'System':_0x717d83[_0xdf32('0x58')][_0xdf32('0x59')]+(_0x717d83[_0xdf32('0x58')][_0xdf32('0x5a')]?'\x20'+_0x717d83[_0xdf32('0x58')][_0xdf32('0x5a')]:''),'body':_0x717d83[_0xdf32('0x5b')]?_0x717d83[_0xdf32('0x5b')][_0xdf32('0x6f')]:_0x717d83['body'],'direction':_0x717d83['direction']===_0xdf32('0x70')?'A':'C','secret':_0x717d83[_0xdf32('0x71')],'read':_0x717d83[_0xdf32('0x5e')],'attachment':_0x717d83[_0xdf32('0x5b')]};})[_0xdf32('0x72')]()};return ejs['renderFile'](path[_0xdf32('0x4e')](config['root'],_0xdf32('0x51'),_0xdf32('0x73'),'downloadInteraction.ejs'),{'interaction':_0x169856})[_0xdf32('0x15')](function(_0x688a0d){var _0x54d8c1=path['join'](_0x423281,_0xdf32('0x74')+_0x150f18['id']+'-'+_0x2aa392+_0xdf32('0x75'));var _0x39c8a0={'path':_0x54d8c1,'channel':'Openchannel','interactionId':_0x150f18['id']};return pdf['createPdfFromHTML'](_0x688a0d,_0x39c8a0);})['then'](function(){return new Promise(function(_0x3f168c,_0x2350c8){zipdir(_0x423281,{'saveTo':_0x8a7d90},function(_0x5994e2,_0x531fca){if(_0x5994e2)return _0x2350c8(_0x5994e2);return _0x3f168c(_0x531fca);});})[_0xdf32('0x15')](function(){return new Promise(function(_0x396e06,_0xcb031e){rimraf(_0x423281,function(_0x282392){if(_0x282392)_0xcb031e(_0x282392);return _0x396e06();});});})[_0xdf32('0x15')](function(){return _0x6aa51e[_0xdf32('0x76')](_0x8a7d90,_0x329299,function(_0x14f6e3){if(_0x14f6e3){logger[_0xdf32('0x77')]('Unable\x20to\x20delete\x20zip\x20file',_0x14f6e3);}else{fs['unlinkSync'](_0x8a7d90);}});});});}else{return _0x6aa51e[_0xdf32('0xb')](0xc8);}})['catch'](handleError(_0x6aa51e,null));};
\ No newline at end of file
index 5ee22df..c362a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e5=['save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','catch','hook','exports','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners'];(function(_0x33d915,_0x308c13){var _0x4184c9=function(_0x3266b7){while(--_0x3266b7){_0x33d915['push'](_0x33d915['shift']());}};_0x4184c9(++_0x308c13);}(_0x83e5,0x1e2));var _0x583e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x83e5[_0x2763f2];return _0x3ef471;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x583e('0x0'))['db'][_0x583e('0x1')];var OpenchannelMessage=require(_0x583e('0x0'))['db'][_0x583e('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x583e('0x3')](0x0);var events={'afterCreate':_0x583e('0x4'),'afterUpdate':_0x583e('0x5'),'afterDestroy':_0x583e('0x6')};function emitEvent(_0x147cdd){return function(_0x1019fc,_0x4218e6,_0x4be9a5){_0x1019fc[_0x583e('0x7')]({'attributes':['id'],'raw':!![]})[_0x583e('0x8')](function(_0x33da4f){_0x1019fc[_0x583e('0x9')](_0x583e('0xa'),_0x33da4f[_0x583e('0xb')](function(_0x27d260){return{'id':_0x27d260['id']};}));return OpenchannelMessage[_0x583e('0xc')]({'where':{'OpenchannelInteractionId':_0x1019fc['id'],'direction':'in','read':![]},'raw':!![]});})[_0x583e('0x8')](function(_0x4c9f20){_0x1019fc[_0x583e('0x9')](_0x583e('0xd'),_0x4c9f20[_0x583e('0xe')]);OpenchannelInteractionEvents['emit'](_0x147cdd+':'+_0x1019fc['id'],_0x1019fc);OpenchannelInteractionEvents['emit'](_0x147cdd,_0x1019fc);_0x4be9a5(null);})[_0x583e('0xf')](_0x4be9a5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x583e('0x10')](e,emitEvent(event));}}module[_0x583e('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x07a2=['events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hook','exports'];(function(_0x48d6c2,_0x1ce5d2){var _0x39eeb1=function(_0xa992a7){while(--_0xa992a7){_0x48d6c2['push'](_0x48d6c2['shift']());}};_0x39eeb1(++_0x1ce5d2);}(_0x07a2,0x85));var _0x207a=function(_0x4081a5,_0x27e9e2){_0x4081a5=_0x4081a5-0x0;var _0x59f5d9=_0x07a2[_0x4081a5];return _0x59f5d9;};'use strict';var EventEmitter=require(_0x207a('0x0'));var OpenchannelInteraction=require(_0x207a('0x1'))['db'][_0x207a('0x2')];var OpenchannelMessage=require(_0x207a('0x1'))['db'][_0x207a('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x207a('0x4')](0x0);var events={'afterCreate':_0x207a('0x5'),'afterUpdate':_0x207a('0x6'),'afterDestroy':_0x207a('0x7')};function emitEvent(_0x913d5f){return function(_0x3271e2,_0x2f29e7,_0x56f21c){_0x3271e2[_0x207a('0x8')]({'attributes':['id'],'raw':!![]})[_0x207a('0x9')](function(_0x2064ae){_0x3271e2[_0x207a('0xa')](_0x207a('0xb'),_0x2064ae['map'](function(_0x2b8943){return{'id':_0x2b8943['id']};}));return OpenchannelMessage[_0x207a('0xc')]({'where':{'OpenchannelInteractionId':_0x3271e2['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3a00cf){_0x3271e2[_0x207a('0xa')](_0x207a('0xd'),_0x3a00cf[_0x207a('0xe')]);OpenchannelInteractionEvents[_0x207a('0xf')](_0x913d5f+':'+_0x3271e2['id'],_0x3271e2);OpenchannelInteractionEvents['emit'](_0x913d5f,_0x3271e2);_0x56f21c(null);})[_0x207a('0x10')](_0x56f21c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x207a('0x11')](e,emitEvent(event));}}module[_0x207a('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 62a3908..7b436b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf742=['request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf742,0x18a));var _0x2f74=function(_0x5b5b2c,_0x19a06a){_0x5b5b2c=_0x5b5b2c-0x0;var _0x4e2fcd=_0xf742[_0x5b5b2c];return _0x4e2fcd;};'use strict';var _=require(_0x2f74('0x0'));var util=require(_0x2f74('0x1'));var logger=require(_0x2f74('0x2'))(_0x2f74('0x3'));var moment=require(_0x2f74('0x4'));var BPromise=require(_0x2f74('0x5'));var rp=require(_0x2f74('0x6'));var fs=require('fs');var path=require(_0x2f74('0x7'));var rimraf=require(_0x2f74('0x8'));var config=require('../../config/environment');var attributes=require(_0x2f74('0x9'));module[_0x2f74('0xa')]=function(_0xe1433d,_0x4e5c7e){return _0xe1433d[_0x2f74('0xb')](_0x2f74('0xc'),attributes,{'tableName':_0x2f74('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2f74('0xe'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x23e123,_0x558c75,_0x2cd737){if(_0x23e123[_0x2f74('0xf')](_0x2f74('0x10'))){_0x23e123[_0x2f74('0x11')]=moment()[_0x2f74('0x12')](_0x2f74('0x13'));}_0x2cd737(null,_0x23e123);}}});};
\ No newline at end of file
+var _0x27d1=['OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','lodash','api','moment','bluebird','request-promise','path','rimraf','./openchannelInteraction.attributes','exports','define'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x27d1,0x1f4));var _0x127d=function(_0x17d27f,_0x5ebbf7){_0x17d27f=_0x17d27f-0x0;var _0x31e13d=_0x27d1[_0x17d27f];return _0x31e13d;};'use strict';var _=require(_0x127d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x127d('0x1'));var moment=require(_0x127d('0x2'));var BPromise=require(_0x127d('0x3'));var rp=require(_0x127d('0x4'));var fs=require('fs');var path=require(_0x127d('0x5'));var rimraf=require(_0x127d('0x6'));var config=require('../../config/environment');var attributes=require(_0x127d('0x7'));module[_0x127d('0x8')]=function(_0x35cbb8,_0x5b9b0d){return _0x35cbb8[_0x127d('0x9')](_0x127d('0xa'),attributes,{'tableName':_0x127d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x127d('0xc'),'collate':_0x127d('0xd'),'hooks':{'beforeUpdate':function(_0x1673cd,_0x140d4a,_0x20d02c){if(_0x1673cd[_0x127d('0xe')]('closed')){_0x1673cd[_0x127d('0xf')]=moment()[_0x127d('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x20d02c(null,_0x1673cd);}}});};
\ No newline at end of file
index 35fd016..d7b5fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e8=['../../config/utils','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','find','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0x97e8,0x14b));var _0x897e=function(_0x1e88b2,_0x4a17ed){_0x1e88b2=_0x1e88b2-0x0;var _0x5aebe0=_0x97e8[_0x1e88b2];return _0x5aebe0;};'use strict';var _=require(_0x897e('0x0'));var util=require(_0x897e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x897e('0x2'));var fs=require('fs');var Redis=require(_0x897e('0x3'));var db=require(_0x897e('0x4'))['db'];var utils=require(_0x897e('0x5'));var logger=require('../../config/logger')(_0x897e('0x6'));var config=require('../../config/environment');var jayson=require(_0x897e('0x7'));var client=jayson[_0x897e('0x8')][_0x897e('0x9')]({'port':0x232a});config[_0x897e('0xa')]=_['defaults'](config[_0x897e('0xa')],{'host':_0x897e('0xb'),'port':0x18eb});var socket=require(_0x897e('0xc'))(new Redis(config[_0x897e('0xa')]));require('./openchannelInteraction.socket')[_0x897e('0xd')](socket);function respondWithRpcPromise(_0x391cce,_0x651723,_0x52c27f){return new BPromise(function(_0x3e8e88,_0x3a1019){return client[_0x897e('0xe')](_0x391cce,_0x52c27f)[_0x897e('0xf')](function(_0x3cf486){logger[_0x897e('0x10')](_0x897e('0x11'),_0x651723,_0x897e('0x12'));logger[_0x897e('0x13')](_0x897e('0x14'),_0x651723,_0x897e('0x12'),JSON[_0x897e('0x15')](_0x3cf486));if(_0x3cf486[_0x897e('0x16')]){if(_0x3cf486[_0x897e('0x16')][_0x897e('0x17')]===0x1f4){logger['error'](_0x897e('0x11'),_0x651723,_0x3cf486['error']['message']);return _0x3a1019(_0x3cf486['error'][_0x897e('0x18')]);}logger[_0x897e('0x16')](_0x897e('0x11'),_0x651723,_0x3cf486[_0x897e('0x16')][_0x897e('0x18')]);return _0x3e8e88(_0x3cf486[_0x897e('0x16')][_0x897e('0x18')]);}else{logger[_0x897e('0x10')](_0x897e('0x11'),_0x651723,_0x897e('0x12'));_0x3e8e88(_0x3cf486[_0x897e('0x19')][_0x897e('0x18')]);}})[_0x897e('0x1a')](function(_0x49ce40){logger['error'](_0x897e('0x11'),_0x651723,_0x49ce40);_0x3a1019(_0x49ce40);});});}exports[_0x897e('0x1b')]=function(_0x426cf1){var _0x5d83b3=this;return new Promise(function(_0xaaf344,_0x3ce316){return db[_0x897e('0x1c')][_0x897e('0x1d')](_0x426cf1[_0x897e('0x1e')],{'raw':_0x426cf1[_0x897e('0x1f')]?_0x426cf1['options'][_0x897e('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x426cf1[_0x897e('0x1f')]?_0x426cf1[_0x897e('0x1f')][_0x897e('0x21')]||null:null,'attributes':_0x426cf1['options']?_0x426cf1['options'][_0x897e('0x22')]||null:null,'limit':_0x426cf1[_0x897e('0x1f')]?_0x426cf1[_0x897e('0x1f')][_0x897e('0x23')]||null:null})[_0x897e('0xf')](function(_0xdd314){logger[_0x897e('0x10')](_0x897e('0x1b'),_0x426cf1);logger['debug']('UpdateOpenchannelInteraction',_0x426cf1,JSON[_0x897e('0x15')](_0xdd314));_0xaaf344(_0xdd314);})[_0x897e('0x1a')](function(_0x2517a3){logger[_0x897e('0x16')]('UpdateOpenchannelInteraction',_0x2517a3[_0x897e('0x18')],_0x426cf1);_0x3ce316(_0x5d83b3['error'](0x1f4,_0x2517a3[_0x897e('0x18')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x5027c7){return new Promise(function(_0x6bae1a,_0x3716fc){return db['OpenchannelInteraction'][_0x897e('0x24')]({'where':_0x5027c7[_0x897e('0x1f')]?_0x5027c7['options']['where']||null:null})[_0x897e('0xf')](function(_0x17d7e5){if(_0x17d7e5){return _0x17d7e5[_0x897e('0x25')](_0x5027c7[_0x897e('0x1e')][_0x897e('0x26')],_[_0x897e('0x27')](_0x5027c7['body'],[_0x897e('0x26'),'id'])||{});}})[_0x897e('0x28')](function(_0x346fb5){logger[_0x897e('0x10')]('AddTags',_0x5027c7);logger[_0x897e('0x13')](_0x897e('0x29'),_0x5027c7,JSON[_0x897e('0x15')](_0x346fb5));_0x6bae1a(_0x346fb5);})[_0x897e('0x1a')](function(_0x3c516a){logger[_0x897e('0x16')]('AddTags',_0x3c516a['message'],_0x5027c7);_0x3716fc(_this[_0x897e('0x16')](0x1f4,_0x3c516a[_0x897e('0x18')]));});});};
\ No newline at end of file
+var _0xf9a5=['../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateOpenchannelInteraction','update','body','options','raw','where','attributes','limit','then','debug','OpenchannelInteraction','find','addTags','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2238fa,_0x46243c){var _0x8e1006=function(_0x1af06f){while(--_0x1af06f){_0x2238fa['push'](_0x2238fa['shift']());}};_0x8e1006(++_0x46243c);}(_0xf9a5,0xda));var _0x5f9a=function(_0x1d53b0,_0x42145e){_0x1d53b0=_0x1d53b0-0x0;var _0x11cf0f=_0xf9a5[_0x1d53b0];return _0x11cf0f;};'use strict';var _=require(_0x5f9a('0x0'));var util=require(_0x5f9a('0x1'));var moment=require('moment');var BPromise=require(_0x5f9a('0x2'));var rs=require(_0x5f9a('0x3'));var fs=require('fs');var Redis=require(_0x5f9a('0x4'));var db=require(_0x5f9a('0x5'))['db'];var utils=require(_0x5f9a('0x6'));var logger=require(_0x5f9a('0x7'))('rpc');var config=require(_0x5f9a('0x8'));var jayson=require(_0x5f9a('0x9'));var client=jayson[_0x5f9a('0xa')][_0x5f9a('0xb')]({'port':0x232a});config['redis']=_[_0x5f9a('0xc')](config[_0x5f9a('0xd')],{'host':_0x5f9a('0xe'),'port':0x18eb});var socket=require(_0x5f9a('0xf'))(new Redis(config['redis']));require(_0x5f9a('0x10'))[_0x5f9a('0x11')](socket);function respondWithRpcPromise(_0x56e53f,_0x5ef89c,_0x1b7499){return new BPromise(function(_0x27dee2,_0x5cc180){return client[_0x5f9a('0x12')](_0x56e53f,_0x1b7499)['then'](function(_0x197f2c){logger[_0x5f9a('0x13')](_0x5f9a('0x14'),_0x5ef89c,_0x5f9a('0x15'));logger['debug'](_0x5f9a('0x16'),_0x5ef89c,'request\x20sent',JSON[_0x5f9a('0x17')](_0x197f2c));if(_0x197f2c['error']){if(_0x197f2c['error'][_0x5f9a('0x18')]===0x1f4){logger[_0x5f9a('0x19')](_0x5f9a('0x14'),_0x5ef89c,_0x197f2c[_0x5f9a('0x19')]['message']);return _0x5cc180(_0x197f2c[_0x5f9a('0x19')][_0x5f9a('0x1a')]);}logger[_0x5f9a('0x19')](_0x5f9a('0x14'),_0x5ef89c,_0x197f2c[_0x5f9a('0x19')][_0x5f9a('0x1a')]);return _0x27dee2(_0x197f2c[_0x5f9a('0x19')][_0x5f9a('0x1a')]);}else{logger[_0x5f9a('0x13')]('OpenchannelInteraction,\x20%s,\x20%s',_0x5ef89c,_0x5f9a('0x15'));_0x27dee2(_0x197f2c[_0x5f9a('0x1b')][_0x5f9a('0x1a')]);}})[_0x5f9a('0x1c')](function(_0x44611f){logger['error'](_0x5f9a('0x14'),_0x5ef89c,_0x44611f);_0x5cc180(_0x44611f);});});}exports[_0x5f9a('0x1d')]=function(_0x21e6cf){var _0x3162c9=this;return new Promise(function(_0x5ec02c,_0x440ace){return db['OpenchannelInteraction'][_0x5f9a('0x1e')](_0x21e6cf[_0x5f9a('0x1f')],{'raw':_0x21e6cf[_0x5f9a('0x20')]?_0x21e6cf[_0x5f9a('0x20')][_0x5f9a('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e6cf['options']?_0x21e6cf[_0x5f9a('0x20')][_0x5f9a('0x22')]||null:null,'attributes':_0x21e6cf[_0x5f9a('0x20')]?_0x21e6cf[_0x5f9a('0x20')][_0x5f9a('0x23')]||null:null,'limit':_0x21e6cf['options']?_0x21e6cf[_0x5f9a('0x20')][_0x5f9a('0x24')]||null:null})[_0x5f9a('0x25')](function(_0x330c10){logger[_0x5f9a('0x13')](_0x5f9a('0x1d'),_0x21e6cf);logger[_0x5f9a('0x26')](_0x5f9a('0x1d'),_0x21e6cf,JSON['stringify'](_0x330c10));_0x5ec02c(_0x330c10);})[_0x5f9a('0x1c')](function(_0x3eca3a){logger['error']('UpdateOpenchannelInteraction',_0x3eca3a[_0x5f9a('0x1a')],_0x21e6cf);_0x440ace(_0x3162c9[_0x5f9a('0x19')](0x1f4,_0x3eca3a[_0x5f9a('0x1a')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x5087db){return new Promise(function(_0x14817a,_0x57f44d){return db[_0x5f9a('0x27')][_0x5f9a('0x28')]({'where':_0x5087db[_0x5f9a('0x20')]?_0x5087db['options']['where']||null:null})[_0x5f9a('0x25')](function(_0x1a9d2c){if(_0x1a9d2c){return _0x1a9d2c[_0x5f9a('0x29')](_0x5087db['body'][_0x5f9a('0x2a')],_['omit'](_0x5087db[_0x5f9a('0x1f')],[_0x5f9a('0x2a'),'id'])||{});}})[_0x5f9a('0x2b')](function(_0x4da126){logger[_0x5f9a('0x13')]('AddTags',_0x5087db);logger[_0x5f9a('0x26')]('AddTags',_0x5087db,JSON[_0x5f9a('0x17')](_0x4da126));_0x14817a(_0x4da126);})[_0x5f9a('0x1c')](function(_0x425637){logger[_0x5f9a('0x19')](_0x5f9a('0x2c'),_0x425637['message'],_0x5087db);_0x57f44d(_this[_0x5f9a('0x19')](0x1f4,_0x425637[_0x5f9a('0x1a')]));});});};
\ No newline at end of file
index aa628d8..d282349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab2=['./openchannelInteraction.events','save','remove','update','emit','removeListener','register','length','openchannelInteraction:'];(function(_0x14915a,_0x222f6b){var _0x2f683c=function(_0x28e694){while(--_0x28e694){_0x14915a['push'](_0x14915a['shift']());}};_0x2f683c(++_0x222f6b);}(_0x3ab2,0xf3));var _0x23ab=function(_0x203cf5,_0x8421e0){_0x203cf5=_0x203cf5-0x0;var _0x17a51d=_0x3ab2[_0x203cf5];return _0x17a51d;};'use strict';var OpenchannelInteractionEvents=require(_0x23ab('0x0'));var events=[_0x23ab('0x1'),_0x23ab('0x2'),_0x23ab('0x3')];function createListener(_0x178d42,_0x242d8d){return function(_0x9e3e52){_0x242d8d[_0x23ab('0x4')](_0x178d42,_0x9e3e52);};}function removeListener(_0x4e447c,_0x324698){return function(){OpenchannelInteractionEvents[_0x23ab('0x5')](_0x4e447c,_0x324698);};}exports[_0x23ab('0x6')]=function(_0x5395a5){for(var _0x55c992=0x0,_0x1194b6=events[_0x23ab('0x7')];_0x55c992<_0x1194b6;_0x55c992++){var _0x20e31b=events[_0x55c992];var _0x5421a=createListener(_0x23ab('0x8')+_0x20e31b,_0x5395a5);OpenchannelInteractionEvents['on'](_0x20e31b,_0x5421a);}};
\ No newline at end of file
+var _0x24fe=['./openchannelInteraction.events','save','remove','update','removeListener','length','openchannelInteraction:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x24fe,0xa1));var _0xe24f=function(_0x301085,_0x32ce73){_0x301085=_0x301085-0x0;var _0x5e2daa=_0x24fe[_0x301085];return _0x5e2daa;};'use strict';var OpenchannelInteractionEvents=require(_0xe24f('0x0'));var events=[_0xe24f('0x1'),_0xe24f('0x2'),_0xe24f('0x3')];function createListener(_0x2a2bc2,_0x1ad669){return function(_0x2f0cc0){_0x1ad669['emit'](_0x2a2bc2,_0x2f0cc0);};}function removeListener(_0x30ca88,_0x593fac){return function(){OpenchannelInteractionEvents[_0xe24f('0x4')](_0x30ca88,_0x593fac);};}exports['register']=function(_0x253f90){for(var _0x2213bc=0x0,_0x568036=events[_0xe24f('0x5')];_0x2213bc<_0x568036;_0x2213bc++){var _0x416390=events[_0x2213bc];var _0x1d9abb=createListener(_0xe24f('0x6')+_0x416390,_0x253f90);OpenchannelInteractionEvents['on'](_0x416390,_0x1d9abb);}};
\ No newline at end of file
index cb50915..9948d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x330e77,_0x2dd3c0){var _0xdbadea=function(_0x2453e9){while(--_0x2453e9){_0x330e77['push'](_0x330e77['shift']());}};_0xdbadea(++_0x2dd3c0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0xcb91[_0x23be51];return _0x47a26d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+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(_0x22ea49,_0x4a785c){var _0x580ac8=function(_0x2f717a){while(--_0x2f717a){_0x22ea49['push'](_0x22ea49['shift']());}};_0x580ac8(++_0x4a785c);}(_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');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
index 83a97e0..b91f954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1219=['DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x1219,0x17c));var _0x9121=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1219[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x9121('0x0'));module[_0x9121('0x1')]={'body':{'type':Sequelize[_0x9121('0x2')](_0x9121('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x9121('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x9121('0x5')]('in','out'),'defaultValue':_0x9121('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x9121('0x7')]},'providerName':{'type':Sequelize[_0x9121('0x8')]},'providerResponse':{'type':Sequelize[_0x9121('0x2')]}};
\ No newline at end of file
+var _0x1131=['BOOLEAN','ENUM','out','DATE','STRING','exports'];(function(_0x4e4519,_0x392ae){var _0x340044=function(_0x11721f){while(--_0x11721f){_0x4e4519['push'](_0x4e4519['shift']());}};_0x340044(++_0x392ae);}(_0x1131,0x71));var _0x1113=function(_0x38406f,_0x3557df){_0x38406f=_0x38406f-0x0;var _0x1fbd01=_0x1131[_0x38406f];return _0x1fbd01;};'use strict';var Sequelize=require('sequelize');module[_0x1113('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1113('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1113('0x2')]('in',_0x1113('0x3')),'defaultValue':_0x1113('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1113('0x4')]},'providerName':{'type':Sequelize[_0x1113('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 2586ac6..eada15d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x165a=['offset','limit','set','Content-Range','reject','save','update','then','destroy','stack','send','rawAttributes','fieldName','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','filter','options','includeAll','include','OpenchannelMessage','rows','catch','show','params','find','create','body','describe','accept','openchannel','read','readAt','format','UserId','user','agent','get','OpenchannelInteractionId','read1stAt','interaction','[OPENCHANNELMESSAGE: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','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','openchannel-interactions','OpenchannelInteraction','rejectMessage','ContactId','SELECT','motionChannel','rejectmessage','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','end','status','json','count'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x165a,0xd8));var _0xa165=function(_0x42b199,_0x41d223){_0x42b199=_0x42b199-0x0;var _0x59228f=_0x165a[_0x42b199];return _0x59228f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa165('0x0'));var jsonpatch=require(_0xa165('0x1'));var rp=require(_0xa165('0x2'));var moment=require(_0xa165('0x3'));var BPromise=require(_0xa165('0x4'));var Mustache=require(_0xa165('0x5'));var util=require(_0xa165('0x6'));var path=require(_0xa165('0x7'));var sox=require('sox');var csv=require(_0xa165('0x8'));var ejs=require(_0xa165('0x9'));var fs=require('fs');var fs_extra=require(_0xa165('0xa'));var _=require(_0xa165('0xb'));var squel=require(_0xa165('0xc'));var crypto=require('crypto');var jsforce=require(_0xa165('0xd'));var deskjs=require(_0xa165('0xe'));var toCsv=require(_0xa165('0x8'));var querystring=require(_0xa165('0xf'));var Papa=require(_0xa165('0x10'));var Redis=require('ioredis');var authService=require(_0xa165('0x11'));var qs=require(_0xa165('0x12'));var as=require(_0xa165('0x13'));var hardwareService=require(_0xa165('0x14'));var logger=require(_0xa165('0x15'))(_0xa165('0x16'));var utils=require(_0xa165('0x17'));var config=require(_0xa165('0x18'));var licenseUtil=require(_0xa165('0x19'));var db=require(_0xa165('0x1a'))['db'];config[_0xa165('0x1b')]=_[_0xa165('0x1c')](config['redis'],{'host':_0xa165('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa165('0x1e'))['register'](socket);var jayson=require(_0xa165('0x1f'));var client=jayson[_0xa165('0x20')][_0xa165('0x21')]({'port':0x232c});var client9002=jayson[_0xa165('0x20')][_0xa165('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x41f59e,_0x4f2531,_0x4e13ad,_0x4a8b7d){return new BPromise(function(_0x35cffb,_0x4d26c9){var _0x1292c8=_0x4a8b7d||client;return _0x1292c8[_0xa165('0x22')](_0x41f59e,_0x4e13ad)['then'](function(_0x18ae91){logger[_0xa165('0x23')](_0xa165('0x24'),_0x4f2531,_0xa165('0x25'));logger[_0xa165('0x26')](_0xa165('0x27'),_0x4f2531,_0xa165('0x25'),JSON[_0xa165('0x28')](_0x18ae91));if(_0x18ae91[_0xa165('0x29')]){if(_0x18ae91[_0xa165('0x29')][_0xa165('0x2a')]===0x1f4){logger[_0xa165('0x29')](_0xa165('0x24'),_0x4f2531,_0x18ae91[_0xa165('0x29')][_0xa165('0x2b')]);return _0x4d26c9(_0x18ae91[_0xa165('0x29')][_0xa165('0x2b')]);}logger[_0xa165('0x29')](_0xa165('0x24'),_0x4f2531,_0x18ae91[_0xa165('0x29')][_0xa165('0x2b')]);return _0x35cffb(_0x18ae91[_0xa165('0x29')][_0xa165('0x2b')]);}else{logger['info'](_0xa165('0x24'),_0x4f2531,_0xa165('0x25'));_0x35cffb(_0x18ae91[_0xa165('0x2c')][_0xa165('0x2b')]);}})['catch'](function(_0x4dcade){logger[_0xa165('0x29')](_0xa165('0x24'),_0x4f2531,_0x4dcade);_0x4d26c9(_0x4dcade);});});}function respondWithStatusCode(_0x468143,_0x14577d){_0x14577d=_0x14577d||0xcc;return function(_0x473aa3){if(_0x473aa3){return _0x468143[_0xa165('0x2d')](_0x14577d);}return _0x468143['status'](_0x14577d)[_0xa165('0x2e')]();};}function respondWithResult(_0xe17a9a,_0x434b67){_0x434b67=_0x434b67||0xc8;return function(_0x573794){if(_0x573794){return _0xe17a9a[_0xa165('0x2f')](_0x434b67)[_0xa165('0x30')](_0x573794);}};}function respondWithFilteredResult(_0x30802b,_0xfd3877){return function(_0x5da2bb){if(_0x5da2bb){var _0x4f979d=typeof _0xfd3877['offset']==='undefined'&&typeof _0xfd3877['limit']==='undefined';var _0x250f91=_0x5da2bb[_0xa165('0x31')];var _0x1e2163=_0x4f979d?0x0:_0xfd3877[_0xa165('0x32')];var _0x10dca7=_0x4f979d?_0x5da2bb[_0xa165('0x31')]:_0xfd3877['offset']+_0xfd3877[_0xa165('0x33')];var _0x1c552d;if(_0x10dca7>=_0x250f91){_0x10dca7=_0x250f91;_0x1c552d=0xc8;}else{_0x1c552d=0xce;}_0x30802b['status'](_0x1c552d);return _0x30802b[_0xa165('0x34')](_0xa165('0x35'),_0x1e2163+'-'+_0x10dca7+'/'+_0x250f91)['json'](_0x5da2bb);}return null;};}function patchUpdates(_0x2b5cff){return function(_0x1bbe47){try{jsonpatch['apply'](_0x1bbe47,_0x2b5cff,!![]);}catch(_0x57bdaa){return BPromise[_0xa165('0x36')](_0x57bdaa);}return _0x1bbe47[_0xa165('0x37')]();};}function saveUpdates(_0x229c4a,_0x29c7d1){return function(_0x62bcdb){if(_0x62bcdb){return _0x62bcdb[_0xa165('0x38')](_0x229c4a)[_0xa165('0x39')](function(_0x4be124){return _0x4be124;});}return null;};}function removeEntity(_0x10f05d,_0x35b4ea){return function(_0x2c219d){if(_0x2c219d){return _0x2c219d[_0xa165('0x3a')]()[_0xa165('0x39')](function(){_0x10f05d['status'](0xcc)[_0xa165('0x2e')]();});}};}function handleEntityNotFound(_0x467869,_0x11ec41){return function(_0x533133){if(!_0x533133){_0x467869[_0xa165('0x2d')](0x194);}return _0x533133;};}function handleError(_0xa82885,_0xbfd8a3){_0xbfd8a3=_0xbfd8a3||0x1f4;return function(_0x2501bd){logger[_0xa165('0x29')](_0x2501bd[_0xa165('0x3b')]);if(_0x2501bd['name']){delete _0x2501bd['name'];}_0xa82885[_0xa165('0x2f')](_0xbfd8a3)[_0xa165('0x3c')](_0x2501bd);};}exports['index']=function(_0x353db0,_0x28b31a){var _0x19bea5={},_0x27729f={},_0x44e797={'count':0x0,'rows':[]};var _0x3bc708=_['map'](db['OpenchannelMessage'][_0xa165('0x3d')],function(_0x46efdb){return{'name':_0x46efdb[_0xa165('0x3e')],'type':_0x46efdb['type'][_0xa165('0x3f')]};});_0x27729f[_0xa165('0x40')]=_['map'](_0x3bc708,_0xa165('0x41'));_0x27729f[_0xa165('0x42')]=_[_0xa165('0x43')](_0x353db0[_0xa165('0x42')]);_0x27729f[_0xa165('0x44')]=_[_0xa165('0x45')](_0x27729f[_0xa165('0x40')],_0x27729f['query']);_0x19bea5['attributes']=_['intersection'](_0x27729f[_0xa165('0x40')],qs[_0xa165('0x46')](_0x353db0[_0xa165('0x42')][_0xa165('0x46')]));_0x19bea5['attributes']=_0x19bea5[_0xa165('0x47')][_0xa165('0x48')]?_0x19bea5['attributes']:_0x27729f[_0xa165('0x40')];if(!_0x353db0[_0xa165('0x42')][_0xa165('0x49')](_0xa165('0x4a'))){_0x19bea5[_0xa165('0x33')]=qs[_0xa165('0x33')](_0x353db0[_0xa165('0x42')][_0xa165('0x33')]);_0x19bea5[_0xa165('0x32')]=qs[_0xa165('0x32')](_0x353db0['query'][_0xa165('0x32')]);}_0x19bea5[_0xa165('0x4b')]=qs['sort'](_0x353db0['query'][_0xa165('0x4c')]);_0x19bea5['where']=qs[_0xa165('0x44')](_[_0xa165('0x4d')](_0x353db0[_0xa165('0x42')],_0x27729f[_0xa165('0x44')]),_0x3bc708);if(_0x353db0[_0xa165('0x42')]['filter']){_0x19bea5[_0xa165('0x4e')]=_[_0xa165('0x4f')](_0x19bea5['where'],{'$or':_['map'](_0x3bc708,function(_0x16c553){if(_0x16c553[_0xa165('0x50')]!=='VIRTUAL'){var _0x184194={};_0x184194[_0x16c553[_0xa165('0x41')]]={'$like':'%'+_0x353db0[_0xa165('0x42')][_0xa165('0x51')]+'%'};return _0x184194;}})});}_0x19bea5=_[_0xa165('0x4f')]({},_0x19bea5,_0x353db0[_0xa165('0x52')]);var _0x1060a2={'where':_0x19bea5[_0xa165('0x4e')]};return db['OpenchannelMessage'][_0xa165('0x31')](_0x1060a2)[_0xa165('0x39')](function(_0x22ec5a){_0x44e797[_0xa165('0x31')]=_0x22ec5a;if(_0x353db0[_0xa165('0x42')][_0xa165('0x53')]){_0x19bea5[_0xa165('0x54')]=[{'all':!![]}];}return db[_0xa165('0x55')]['findAll'](_0x19bea5);})[_0xa165('0x39')](function(_0x1bd04b){_0x44e797[_0xa165('0x56')]=_0x1bd04b;return _0x44e797;})[_0xa165('0x39')](respondWithFilteredResult(_0x28b31a,_0x19bea5))[_0xa165('0x57')](handleError(_0x28b31a,null));};exports[_0xa165('0x58')]=function(_0x33990b,_0x5c7c8a){var _0x54dd03={'raw':!![],'where':{'id':_0x33990b[_0xa165('0x59')]['id']}},_0x3f9d8a={};_0x3f9d8a['model']=_['keys'](db[_0xa165('0x55')][_0xa165('0x3d')]);_0x3f9d8a['query']=_[_0xa165('0x43')](_0x33990b[_0xa165('0x42')]);_0x3f9d8a['filters']=_[_0xa165('0x45')](_0x3f9d8a[_0xa165('0x40')],_0x3f9d8a[_0xa165('0x42')]);_0x54dd03[_0xa165('0x47')]=_[_0xa165('0x45')](_0x3f9d8a['model'],qs[_0xa165('0x46')](_0x33990b[_0xa165('0x42')]['fields']));_0x54dd03[_0xa165('0x47')]=_0x54dd03[_0xa165('0x47')][_0xa165('0x48')]?_0x54dd03['attributes']:_0x3f9d8a[_0xa165('0x40')];if(_0x33990b['query'][_0xa165('0x53')]){_0x54dd03[_0xa165('0x54')]=[{'all':!![]}];}_0x54dd03=_[_0xa165('0x4f')]({},_0x54dd03,_0x33990b[_0xa165('0x52')]);return db[_0xa165('0x55')][_0xa165('0x5a')](_0x54dd03)[_0xa165('0x39')](handleEntityNotFound(_0x5c7c8a,null))[_0xa165('0x39')](respondWithResult(_0x5c7c8a,null))[_0xa165('0x57')](handleError(_0x5c7c8a,null));};exports['create']=function(_0x4502f7,_0x1e7d12){return db[_0xa165('0x55')][_0xa165('0x5b')](_0x4502f7[_0xa165('0x5c')],{})[_0xa165('0x39')](respondWithResult(_0x1e7d12,0xc9))[_0xa165('0x57')](handleError(_0x1e7d12,null));};exports[_0xa165('0x38')]=function(_0x3d74b2,_0x576745){if(_0x3d74b2['body']['id']){delete _0x3d74b2[_0xa165('0x5c')]['id'];}return db[_0xa165('0x55')][_0xa165('0x5a')]({'where':{'id':_0x3d74b2['params']['id']}})[_0xa165('0x39')](handleEntityNotFound(_0x576745,null))[_0xa165('0x39')](saveUpdates(_0x3d74b2[_0xa165('0x5c')],null))[_0xa165('0x39')](respondWithResult(_0x576745,null))['catch'](handleError(_0x576745,null));};exports[_0xa165('0x3a')]=function(_0x3d35e5,_0x1f5591){return db[_0xa165('0x55')]['find']({'where':{'id':_0x3d35e5[_0xa165('0x59')]['id']}})[_0xa165('0x39')](handleEntityNotFound(_0x1f5591,null))[_0xa165('0x39')](removeEntity(_0x1f5591,null))[_0xa165('0x57')](handleError(_0x1f5591,null));};exports['describe']=function(_0x1635e5,_0x10071a){return db[_0xa165('0x55')][_0xa165('0x5d')]()[_0xa165('0x39')](respondWithResult(_0x10071a,null))[_0xa165('0x57')](handleError(_0x10071a,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0xa165('0x5e')]=function(_0x8092a9,_0x15518b,_0x36c9d9){var _0x785334={'agent':{},'channel':_0xa165('0x5f')};if(_0x8092a9[_0xa165('0x5c')]['id']){delete _0x8092a9[_0xa165('0x5c')]['id'];}_0x8092a9[_0xa165('0x5c')][_0xa165('0x60')]=!![];_0x8092a9[_0xa165('0x5c')][_0xa165('0x61')]=moment()[_0xa165('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x8092a9[_0xa165('0x5c')]['UserId']=_0x8092a9[_0xa165('0x5c')][_0xa165('0x63')]||_0x8092a9[_0xa165('0x64')]['id'];_0x785334[_0xa165('0x65')]['id']=_0x8092a9[_0xa165('0x5c')][_0xa165('0x63')];return db[_0xa165('0x55')]['find']({'where':{'id':_0x8092a9[_0xa165('0x59')]['id'],'UserId':null}})[_0xa165('0x39')](handleEntityNotFound(_0x15518b,null))[_0xa165('0x39')](saveUpdates(_0x8092a9[_0xa165('0x5c')],null))[_0xa165('0x39')](function(_0x589347){if(_0x589347){_0x785334[_0xa165('0x2b')]=_0x589347[_0xa165('0x66')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x589347[_0xa165('0x67')]}});}return null;})[_0xa165('0x39')](handleEntityNotFound(_0x15518b,null))[_0xa165('0x39')](function(_0x5a9b23){if(_0x5a9b23){return _0x5a9b23[_0xa165('0x38')]({'UserId':_0x8092a9[_0xa165('0x5c')][_0xa165('0x63')],'read1stAt':_['isNil'](_0x5a9b23[_0xa165('0x68')])?moment()[_0xa165('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x18d7b4){if(_0x18d7b4){_0x785334[_0xa165('0x69')]=_0x18d7b4[_0xa165('0x66')]({'plain':!![]});interaction_log[_0xa165('0x23')](_0xa165('0x6a'),_0x8092a9[_0xa165('0x64')]['id'],_0x8092a9[_0xa165('0x64')][_0xa165('0x41')],_0x8092a9[_0xa165('0x64')][_0xa165('0x6b')],_0x785334[_0xa165('0x69')]['id'],_0x8092a9[_0xa165('0x5c')]?JSON[_0xa165('0x28')](_0x8092a9[_0xa165('0x5c')]):_0xa165('0x6c'));return respondWithRpcPromise('AcceptMessage',_0xa165('0x6d'),_0x785334);}return null;})[_0xa165('0x39')](function(_0xd84b06){var _0x3c8584=_0xa165('0x6e')+_0xd84b06[_0xa165('0x2b')]['ContactId'];return db[_0xa165('0x6f')][_0xa165('0x42')](_0x3c8584,{'type':db[_0xa165('0x70')][_0xa165('0x71')]['SELECT'],'raw':!![]})['then'](function(_0x5c5ac8){return _0x5c5ac8;});})[_0xa165('0x39')](function(_0xa0551){if(_0xa0551){_0x785334[_0xa165('0x2b')][_0xa165('0x72')]=_0xa0551[0x0];if(!_0x8092a9[_0xa165('0x5c')][_0xa165('0x63')])return;return db[_0xa165('0x73')][_0xa165('0x5a')]({'where':{'id':_0x8092a9['body']['UserId'],'role':'agent'},'attributes':['id',_0xa165('0x41'),_0xa165('0x74'),_0xa165('0x75'),_0xa165('0x76')],'raw':!![]});}return null;})[_0xa165('0x39')](function(_0x36e26a){if(!_0x36e26a)return null;_0x785334[_0xa165('0x2b')][_0xa165('0x65')]=_0x36e26a;return _0x785334;})[_0xa165('0x39')](function(_0x2e94b0){if(_0x2e94b0){if(_0x8092a9['body'][_0xa165('0x77')]){_0x785334[_0xa165('0x2b')][_0xa165('0x78')]=util[_0xa165('0x62')](_0xa165('0x79'),_0x8092a9['user']['name']);_0x785334['message'][_0xa165('0x7a')]=_0x785334['channel'];_0x785334[_0xa165('0x2b')]['motionChannel']=_0x785334[_0xa165('0x7a')];_0x785334[_0xa165('0x2b')][_0xa165('0x7b')]='accept';return respondWithRpcPromise(_0xa165('0x7c'),'EventManager',{'event':_0xa165('0x7d'),'message':_0x785334[_0xa165('0x2b')]},client9002)[_0xa165('0x39')](function(){return _0x785334;});}return _0x785334;}return null;})[_0xa165('0x39')](respondWithResult(_0x15518b,null))[_0xa165('0x57')](handleError(_0x15518b,null));};var interaction_log=require('../../config/logger')(_0xa165('0x7e'));exports[_0xa165('0x36')]=function(_0x4071ac,_0x4e2708,_0x5e4e15){var _0x3cb0d5={'agent':{},'channel':'openchannel'};if(_0x4071ac[_0xa165('0x5c')]['id']){delete _0x4071ac[_0xa165('0x5c')]['id'];}_0x4071ac[_0xa165('0x5c')][_0xa165('0x63')]=_0x4071ac[_0xa165('0x5c')][_0xa165('0x63')]||_0x4071ac['user']['id'];_0x3cb0d5['agent']['id']=_0x4071ac['body'][_0xa165('0x63')];return db['OpenchannelMessage'][_0xa165('0x5a')]({'where':{'id':_0x4071ac[_0xa165('0x59')]['id'],'UserId':null}})[_0xa165('0x39')](handleEntityNotFound(_0x4e2708,null))[_0xa165('0x39')](function(_0x33894f){if(_0x33894f){_0x3cb0d5['message']=_0x33894f[_0xa165('0x66')]({'plain':!![]});return db[_0xa165('0x7f')][_0xa165('0x5a')]({'where':{'id':_0x33894f['OpenchannelInteractionId']}});}return null;})[_0xa165('0x39')](handleEntityNotFound(_0x4e2708,null))[_0xa165('0x39')](function(_0x573910){if(_0x573910){_0x3cb0d5[_0xa165('0x69')]=_0x573910[_0xa165('0x66')]({'plain':!![]});interaction_log[_0xa165('0x23')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4071ac[_0xa165('0x64')]['id'],_0x4071ac[_0xa165('0x64')][_0xa165('0x41')],_0x4071ac[_0xa165('0x64')][_0xa165('0x6b')],_0x3cb0d5['interaction']['id'],_0x4071ac[_0xa165('0x5c')]?JSON[_0xa165('0x28')](_0x4071ac['body']):'null');return respondWithRpcPromise('RejectMessage',_0xa165('0x80'),_0x3cb0d5);}return null;})[_0xa165('0x39')](function(_0x5363cd){var _0x25cfbd=_0xa165('0x6e')+_0x5363cd[_0xa165('0x2b')][_0xa165('0x81')];return db[_0xa165('0x6f')][_0xa165('0x42')](_0x25cfbd,{'type':db[_0xa165('0x70')][_0xa165('0x71')][_0xa165('0x82')],'raw':!![]})[_0xa165('0x39')](function(_0x4bc580){return _0x4bc580;});})['then'](function(_0x4d193f){if(_0x4d193f){_0x3cb0d5['message'][_0xa165('0x72')]=_0x4d193f[0x0];if(!_0x4071ac[_0xa165('0x5c')][_0xa165('0x63')])return;return db[_0xa165('0x73')]['find']({'where':{'id':_0x4071ac['body']['UserId'],'role':_0xa165('0x65')},'attributes':['id',_0xa165('0x41'),_0xa165('0x74'),_0xa165('0x75'),_0xa165('0x76')],'raw':!![]});}return null;})[_0xa165('0x39')](function(_0x4538cd){if(!_0x4538cd)return null;_0x3cb0d5[_0xa165('0x2b')][_0xa165('0x65')]=_0x4538cd;return _0x3cb0d5;})[_0xa165('0x39')](function(_0x510126){if(_0x510126){_0x510126['message'][_0xa165('0x78')]=util['format'](_0xa165('0x79'),_0x4071ac[_0xa165('0x64')]['name']);_0x510126[_0xa165('0x2b')][_0xa165('0x7a')]=_0x3cb0d5[_0xa165('0x7a')];_0x510126['message'][_0xa165('0x83')]=_0x3cb0d5[_0xa165('0x7a')];_0x510126[_0xa165('0x2b')][_0xa165('0x7b')]=_0xa165('0x36');respondWithRpcPromise(_0xa165('0x7c'),_0xa165('0x7c'),{'event':_0xa165('0x84'),'message':_0x510126[_0xa165('0x2b')]},client9002);return _0x3cb0d5;}return null;})[_0xa165('0x39')](respondWithResult(_0x4e2708,null))[_0xa165('0x57')](handleError(_0x4e2708,null));};
\ No newline at end of file
+var _0x8cd5=['attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','keys','include','find','create','body','params','describe','openchannel-interactions','accept','read','readAt','format','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','User','fullname','internal','interface','SIP/%s','channel','motionChannel','event','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','QueryTypes','email','EventManager','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','fieldName','type','key','model','query','filters'];(function(_0x527171,_0xe2d13d){var _0x2c6ba1=function(_0x27e021){while(--_0x27e021){_0x527171['push'](_0x527171['shift']());}};_0x2c6ba1(++_0xe2d13d);}(_0x8cd5,0x141));var _0x58cd=function(_0xdc3e6b,_0x1b8e24){_0xdc3e6b=_0xdc3e6b-0x0;var _0x4702cb=_0x8cd5[_0xdc3e6b];return _0x4702cb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x58cd('0x0'));var zipdir=require(_0x58cd('0x1'));var jsonpatch=require(_0x58cd('0x2'));var rp=require(_0x58cd('0x3'));var moment=require(_0x58cd('0x4'));var BPromise=require(_0x58cd('0x5'));var Mustache=require(_0x58cd('0x6'));var util=require(_0x58cd('0x7'));var path=require(_0x58cd('0x8'));var sox=require(_0x58cd('0x9'));var csv=require(_0x58cd('0xa'));var ejs=require(_0x58cd('0xb'));var fs=require('fs');var fs_extra=require(_0x58cd('0xc'));var _=require(_0x58cd('0xd'));var squel=require('squel');var crypto=require(_0x58cd('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x58cd('0xa'));var querystring=require(_0x58cd('0xf'));var Papa=require(_0x58cd('0x10'));var Redis=require(_0x58cd('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x58cd('0x12'));var as=require(_0x58cd('0x13'));var hardwareService=require(_0x58cd('0x14'));var logger=require('../../config/logger')(_0x58cd('0x15'));var utils=require(_0x58cd('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x58cd('0x17'))['db'];config[_0x58cd('0x18')]=_[_0x58cd('0x19')](config[_0x58cd('0x18')],{'host':_0x58cd('0x1a'),'port':0x18eb});var socket=require(_0x58cd('0x1b'))(new Redis(config[_0x58cd('0x18')]));require(_0x58cd('0x1c'))[_0x58cd('0x1d')](socket);var jayson=require(_0x58cd('0x1e'));var client=jayson[_0x58cd('0x1f')][_0x58cd('0x20')]({'port':0x232c});var client9002=jayson[_0x58cd('0x1f')][_0x58cd('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5612ea,_0xeda1f3,_0x15d166,_0x4ed016){return new BPromise(function(_0x2829f2,_0x5309db){var _0x497035=_0x4ed016||client;return _0x497035[_0x58cd('0x21')](_0x5612ea,_0x15d166)[_0x58cd('0x22')](function(_0x4be45a){logger[_0x58cd('0x23')](_0x58cd('0x24'),_0xeda1f3,'request\x20sent');logger[_0x58cd('0x25')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0xeda1f3,_0x58cd('0x26'),JSON[_0x58cd('0x27')](_0x4be45a));if(_0x4be45a[_0x58cd('0x28')]){if(_0x4be45a[_0x58cd('0x28')][_0x58cd('0x29')]===0x1f4){logger[_0x58cd('0x28')](_0x58cd('0x24'),_0xeda1f3,_0x4be45a['error'][_0x58cd('0x2a')]);return _0x5309db(_0x4be45a[_0x58cd('0x28')][_0x58cd('0x2a')]);}logger[_0x58cd('0x28')](_0x58cd('0x24'),_0xeda1f3,_0x4be45a['error'][_0x58cd('0x2a')]);return _0x2829f2(_0x4be45a[_0x58cd('0x28')]['message']);}else{logger['info'](_0x58cd('0x24'),_0xeda1f3,_0x58cd('0x26'));_0x2829f2(_0x4be45a['result'][_0x58cd('0x2a')]);}})[_0x58cd('0x2b')](function(_0x4edd25){logger[_0x58cd('0x28')](_0x58cd('0x24'),_0xeda1f3,_0x4edd25);_0x5309db(_0x4edd25);});});}function respondWithStatusCode(_0x150b54,_0x412892){_0x412892=_0x412892||0xcc;return function(_0x28a2d9){if(_0x28a2d9){return _0x150b54[_0x58cd('0x2c')](_0x412892);}return _0x150b54[_0x58cd('0x2d')](_0x412892)[_0x58cd('0x2e')]();};}function respondWithResult(_0x2f1dbc,_0x2dfe53){_0x2dfe53=_0x2dfe53||0xc8;return function(_0x298727){if(_0x298727){return _0x2f1dbc[_0x58cd('0x2d')](_0x2dfe53)[_0x58cd('0x2f')](_0x298727);}};}function respondWithFilteredResult(_0x5136ad,_0x834ae1){return function(_0x1af4a0){if(_0x1af4a0){var _0xe232cb=typeof _0x834ae1[_0x58cd('0x30')]==='undefined'&&typeof _0x834ae1[_0x58cd('0x31')]===_0x58cd('0x32');var _0x3602d4=_0x1af4a0['count'];var _0xefbf75=_0xe232cb?0x0:_0x834ae1[_0x58cd('0x30')];var _0x48bedc=_0xe232cb?_0x1af4a0['count']:_0x834ae1[_0x58cd('0x30')]+_0x834ae1[_0x58cd('0x31')];var _0x513dd4;if(_0x48bedc>=_0x3602d4){_0x48bedc=_0x3602d4;_0x513dd4=0xc8;}else{_0x513dd4=0xce;}_0x5136ad[_0x58cd('0x2d')](_0x513dd4);return _0x5136ad['set'](_0x58cd('0x33'),_0xefbf75+'-'+_0x48bedc+'/'+_0x3602d4)[_0x58cd('0x2f')](_0x1af4a0);}return null;};}function patchUpdates(_0x3b8847){return function(_0x3b69c2){try{jsonpatch[_0x58cd('0x34')](_0x3b69c2,_0x3b8847,!![]);}catch(_0x28bad1){return BPromise[_0x58cd('0x35')](_0x28bad1);}return _0x3b69c2[_0x58cd('0x36')]();};}function saveUpdates(_0x418db4,_0xace3de){return function(_0x405bd6){if(_0x405bd6){return _0x405bd6[_0x58cd('0x37')](_0x418db4)[_0x58cd('0x22')](function(_0x526ddb){return _0x526ddb;});}return null;};}function removeEntity(_0x5e5cbb,_0x4c53ab){return function(_0x346573){if(_0x346573){return _0x346573[_0x58cd('0x38')]()[_0x58cd('0x22')](function(){_0x5e5cbb[_0x58cd('0x2d')](0xcc)[_0x58cd('0x2e')]();});}};}function handleEntityNotFound(_0x3bf5d0,_0xc42199){return function(_0x4a56b0){if(!_0x4a56b0){_0x3bf5d0[_0x58cd('0x2c')](0x194);}return _0x4a56b0;};}function handleError(_0xc5bf8d,_0x48ea31){_0x48ea31=_0x48ea31||0x1f4;return function(_0xdd5865){logger[_0x58cd('0x28')](_0xdd5865[_0x58cd('0x39')]);if(_0xdd5865[_0x58cd('0x3a')]){delete _0xdd5865['name'];}_0xc5bf8d[_0x58cd('0x2d')](_0x48ea31)[_0x58cd('0x3b')](_0xdd5865);};}exports[_0x58cd('0x3c')]=function(_0x1ac05e,_0x4460b5){var _0x41978a={},_0x10d395={},_0x21b011={'count':0x0,'rows':[]};var _0x181d68=_[_0x58cd('0x3d')](db[_0x58cd('0x3e')]['rawAttributes'],function(_0x2efe6f){return{'name':_0x2efe6f[_0x58cd('0x3f')],'type':_0x2efe6f[_0x58cd('0x40')][_0x58cd('0x41')]};});_0x10d395[_0x58cd('0x42')]=_['map'](_0x181d68,'name');_0x10d395[_0x58cd('0x43')]=_['keys'](_0x1ac05e['query']);_0x10d395[_0x58cd('0x44')]=_['intersection'](_0x10d395[_0x58cd('0x42')],_0x10d395['query']);_0x41978a[_0x58cd('0x45')]=_[_0x58cd('0x46')](_0x10d395[_0x58cd('0x42')],qs[_0x58cd('0x47')](_0x1ac05e['query'][_0x58cd('0x47')]));_0x41978a[_0x58cd('0x45')]=_0x41978a[_0x58cd('0x45')][_0x58cd('0x48')]?_0x41978a['attributes']:_0x10d395['model'];if(!_0x1ac05e['query']['hasOwnProperty']('nolimit')){_0x41978a[_0x58cd('0x31')]=qs[_0x58cd('0x31')](_0x1ac05e[_0x58cd('0x43')][_0x58cd('0x31')]);_0x41978a['offset']=qs[_0x58cd('0x30')](_0x1ac05e[_0x58cd('0x43')][_0x58cd('0x30')]);}_0x41978a[_0x58cd('0x49')]=qs[_0x58cd('0x4a')](_0x1ac05e[_0x58cd('0x43')][_0x58cd('0x4a')]);_0x41978a[_0x58cd('0x4b')]=qs[_0x58cd('0x44')](_[_0x58cd('0x4c')](_0x1ac05e[_0x58cd('0x43')],_0x10d395[_0x58cd('0x44')]),_0x181d68);if(_0x1ac05e[_0x58cd('0x43')][_0x58cd('0x4d')]){_0x41978a['where']=_[_0x58cd('0x4e')](_0x41978a[_0x58cd('0x4b')],{'$or':_[_0x58cd('0x3d')](_0x181d68,function(_0x4191a8){if(_0x4191a8[_0x58cd('0x40')]!==_0x58cd('0x4f')){var _0x1510a5={};_0x1510a5[_0x4191a8[_0x58cd('0x3a')]]={'$like':'%'+_0x1ac05e['query'][_0x58cd('0x4d')]+'%'};return _0x1510a5;}})});}_0x41978a=_[_0x58cd('0x4e')]({},_0x41978a,_0x1ac05e[_0x58cd('0x50')]);var _0x5c8cd6={'where':_0x41978a[_0x58cd('0x4b')]};return db['OpenchannelMessage']['count'](_0x5c8cd6)[_0x58cd('0x22')](function(_0xb2b9ea){_0x21b011[_0x58cd('0x51')]=_0xb2b9ea;if(_0x1ac05e[_0x58cd('0x43')][_0x58cd('0x52')]){_0x41978a['include']=[{'all':!![]}];}return db[_0x58cd('0x3e')][_0x58cd('0x53')](_0x41978a);})[_0x58cd('0x22')](function(_0x1bd841){_0x21b011[_0x58cd('0x54')]=_0x1bd841;return _0x21b011;})[_0x58cd('0x22')](respondWithFilteredResult(_0x4460b5,_0x41978a))[_0x58cd('0x2b')](handleError(_0x4460b5,null));};exports['show']=function(_0x5637a6,_0x360a12){var _0x258664={'raw':!![],'where':{'id':_0x5637a6['params']['id']}},_0x44b09a={};_0x44b09a[_0x58cd('0x42')]=_[_0x58cd('0x55')](db[_0x58cd('0x3e')]['rawAttributes']);_0x44b09a[_0x58cd('0x43')]=_[_0x58cd('0x55')](_0x5637a6['query']);_0x44b09a[_0x58cd('0x44')]=_['intersection'](_0x44b09a[_0x58cd('0x42')],_0x44b09a['query']);_0x258664[_0x58cd('0x45')]=_[_0x58cd('0x46')](_0x44b09a[_0x58cd('0x42')],qs[_0x58cd('0x47')](_0x5637a6[_0x58cd('0x43')][_0x58cd('0x47')]));_0x258664[_0x58cd('0x45')]=_0x258664[_0x58cd('0x45')][_0x58cd('0x48')]?_0x258664['attributes']:_0x44b09a['model'];if(_0x5637a6['query'][_0x58cd('0x52')]){_0x258664[_0x58cd('0x56')]=[{'all':!![]}];}_0x258664=_[_0x58cd('0x4e')]({},_0x258664,_0x5637a6[_0x58cd('0x50')]);return db[_0x58cd('0x3e')][_0x58cd('0x57')](_0x258664)[_0x58cd('0x22')](handleEntityNotFound(_0x360a12,null))[_0x58cd('0x22')](respondWithResult(_0x360a12,null))['catch'](handleError(_0x360a12,null));};exports[_0x58cd('0x58')]=function(_0x4ea61d,_0x8a22f3){return db[_0x58cd('0x3e')][_0x58cd('0x58')](_0x4ea61d[_0x58cd('0x59')],{})['then'](respondWithResult(_0x8a22f3,0xc9))['catch'](handleError(_0x8a22f3,null));};exports['update']=function(_0x24222a,_0x1394a8){if(_0x24222a['body']['id']){delete _0x24222a[_0x58cd('0x59')]['id'];}return db[_0x58cd('0x3e')][_0x58cd('0x57')]({'where':{'id':_0x24222a[_0x58cd('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1394a8,null))[_0x58cd('0x22')](saveUpdates(_0x24222a[_0x58cd('0x59')],null))[_0x58cd('0x22')](respondWithResult(_0x1394a8,null))['catch'](handleError(_0x1394a8,null));};exports[_0x58cd('0x38')]=function(_0xbd2f77,_0x529a9f){return db[_0x58cd('0x3e')][_0x58cd('0x57')]({'where':{'id':_0xbd2f77[_0x58cd('0x5a')]['id']}})[_0x58cd('0x22')](handleEntityNotFound(_0x529a9f,null))['then'](removeEntity(_0x529a9f,null))[_0x58cd('0x2b')](handleError(_0x529a9f,null));};exports[_0x58cd('0x5b')]=function(_0xeafeed,_0x3cf823){return db[_0x58cd('0x3e')][_0x58cd('0x5b')]()['then'](respondWithResult(_0x3cf823,null))['catch'](handleError(_0x3cf823,null));};var interaction_log=require('../../config/logger')(_0x58cd('0x5c'));exports[_0x58cd('0x5d')]=function(_0x27e3e2,_0x260f72,_0x5f2e0a){var _0x7dcbe2={'agent':{},'channel':'openchannel'};if(_0x27e3e2[_0x58cd('0x59')]['id']){delete _0x27e3e2[_0x58cd('0x59')]['id'];}_0x27e3e2[_0x58cd('0x59')][_0x58cd('0x5e')]=!![];_0x27e3e2[_0x58cd('0x59')][_0x58cd('0x5f')]=moment()[_0x58cd('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x27e3e2['body'][_0x58cd('0x61')]=_0x27e3e2[_0x58cd('0x59')][_0x58cd('0x61')]||_0x27e3e2[_0x58cd('0x62')]['id'];_0x7dcbe2[_0x58cd('0x63')]['id']=_0x27e3e2['body'][_0x58cd('0x61')];return db['OpenchannelMessage'][_0x58cd('0x57')]({'where':{'id':_0x27e3e2[_0x58cd('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x260f72,null))[_0x58cd('0x22')](saveUpdates(_0x27e3e2[_0x58cd('0x59')],null))['then'](function(_0x46b6bf){if(_0x46b6bf){_0x7dcbe2[_0x58cd('0x2a')]=_0x46b6bf[_0x58cd('0x64')]({'plain':!![]});return db[_0x58cd('0x65')][_0x58cd('0x57')]({'where':{'id':_0x46b6bf[_0x58cd('0x66')]}});}return null;})[_0x58cd('0x22')](handleEntityNotFound(_0x260f72,null))[_0x58cd('0x22')](function(_0x19750c){if(_0x19750c){return _0x19750c[_0x58cd('0x37')]({'UserId':_0x27e3e2['body'][_0x58cd('0x61')],'read1stAt':_[_0x58cd('0x67')](_0x19750c[_0x58cd('0x68')])?moment()[_0x58cd('0x60')](_0x58cd('0x69')):undefined});}return null;})[_0x58cd('0x22')](function(_0x33c64d){if(_0x33c64d){_0x7dcbe2[_0x58cd('0x6a')]=_0x33c64d[_0x58cd('0x64')]({'plain':!![]});interaction_log[_0x58cd('0x23')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x27e3e2[_0x58cd('0x62')]['id'],_0x27e3e2['user'][_0x58cd('0x3a')],_0x27e3e2[_0x58cd('0x62')][_0x58cd('0x6b')],_0x7dcbe2[_0x58cd('0x6a')]['id'],_0x27e3e2[_0x58cd('0x59')]?JSON[_0x58cd('0x27')](_0x27e3e2[_0x58cd('0x59')]):_0x58cd('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x58cd('0x6d'),_0x7dcbe2);}return null;})[_0x58cd('0x22')](function(_0x9f6cd){var _0xde32f6=_0x58cd('0x6e')+_0x9f6cd[_0x58cd('0x2a')][_0x58cd('0x6f')];return db[_0x58cd('0x70')][_0x58cd('0x43')](_0xde32f6,{'type':db['Sequelize']['QueryTypes'][_0x58cd('0x71')],'raw':!![]})['then'](function(_0x5e6eef){return _0x5e6eef;});})[_0x58cd('0x22')](function(_0x29f807){if(_0x29f807){_0x7dcbe2[_0x58cd('0x2a')]['contact']=_0x29f807[0x0];if(!_0x27e3e2['body'][_0x58cd('0x61')])return;return db[_0x58cd('0x72')][_0x58cd('0x57')]({'where':{'id':_0x27e3e2[_0x58cd('0x59')][_0x58cd('0x61')],'role':'agent'},'attributes':['id',_0x58cd('0x3a'),_0x58cd('0x73'),'email',_0x58cd('0x74')],'raw':!![]});}return null;})[_0x58cd('0x22')](function(_0x1a8493){if(!_0x1a8493)return null;_0x7dcbe2[_0x58cd('0x2a')][_0x58cd('0x63')]=_0x1a8493;return _0x7dcbe2;})['then'](function(_0x5ec271){if(_0x5ec271){if(_0x27e3e2[_0x58cd('0x59')]['manual']){_0x7dcbe2[_0x58cd('0x2a')][_0x58cd('0x75')]=util[_0x58cd('0x60')](_0x58cd('0x76'),_0x27e3e2[_0x58cd('0x62')][_0x58cd('0x3a')]);_0x7dcbe2['message']['channel']=_0x7dcbe2[_0x58cd('0x77')];_0x7dcbe2[_0x58cd('0x2a')][_0x58cd('0x78')]=_0x7dcbe2[_0x58cd('0x77')];_0x7dcbe2['message'][_0x58cd('0x79')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_0x7dcbe2[_0x58cd('0x2a')]},client9002)[_0x58cd('0x22')](function(){return _0x7dcbe2;});}return _0x7dcbe2;}return null;})[_0x58cd('0x22')](respondWithResult(_0x260f72,null))['catch'](handleError(_0x260f72,null));};var interaction_log=require('../../config/logger')(_0x58cd('0x5c'));exports[_0x58cd('0x35')]=function(_0x1f7f15,_0x168833,_0x3d9490){var _0xe95685={'agent':{},'channel':_0x58cd('0x7a')};if(_0x1f7f15['body']['id']){delete _0x1f7f15[_0x58cd('0x59')]['id'];}_0x1f7f15['body']['UserId']=_0x1f7f15[_0x58cd('0x59')][_0x58cd('0x61')]||_0x1f7f15[_0x58cd('0x62')]['id'];_0xe95685[_0x58cd('0x63')]['id']=_0x1f7f15[_0x58cd('0x59')][_0x58cd('0x61')];return db[_0x58cd('0x3e')][_0x58cd('0x57')]({'where':{'id':_0x1f7f15[_0x58cd('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x168833,null))[_0x58cd('0x22')](function(_0x556981){if(_0x556981){_0xe95685[_0x58cd('0x2a')]=_0x556981[_0x58cd('0x64')]({'plain':!![]});return db[_0x58cd('0x65')]['find']({'where':{'id':_0x556981[_0x58cd('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x168833,null))[_0x58cd('0x22')](function(_0x34a0e3){if(_0x34a0e3){_0xe95685['interaction']=_0x34a0e3[_0x58cd('0x64')]({'plain':!![]});interaction_log[_0x58cd('0x23')](_0x58cd('0x7b'),_0x1f7f15[_0x58cd('0x62')]['id'],_0x1f7f15[_0x58cd('0x62')]['name'],_0x1f7f15[_0x58cd('0x62')][_0x58cd('0x6b')],_0xe95685[_0x58cd('0x6a')]['id'],_0x1f7f15['body']?JSON[_0x58cd('0x27')](_0x1f7f15[_0x58cd('0x59')]):'null');return respondWithRpcPromise(_0x58cd('0x7c'),_0x58cd('0x7d'),_0xe95685);}return null;})[_0x58cd('0x22')](function(_0x54cf77){var _0x4037f6='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x54cf77[_0x58cd('0x2a')][_0x58cd('0x6f')];return db[_0x58cd('0x70')]['query'](_0x4037f6,{'type':db['Sequelize'][_0x58cd('0x7e')][_0x58cd('0x71')],'raw':!![]})[_0x58cd('0x22')](function(_0x11d23a){return _0x11d23a;});})[_0x58cd('0x22')](function(_0x5a7cca){if(_0x5a7cca){_0xe95685[_0x58cd('0x2a')]['contact']=_0x5a7cca[0x0];if(!_0x1f7f15[_0x58cd('0x59')][_0x58cd('0x61')])return;return db[_0x58cd('0x72')][_0x58cd('0x57')]({'where':{'id':_0x1f7f15['body'][_0x58cd('0x61')],'role':'agent'},'attributes':['id','name',_0x58cd('0x73'),_0x58cd('0x7f'),'internal'],'raw':!![]});}return null;})[_0x58cd('0x22')](function(_0xfc7036){if(!_0xfc7036)return null;_0xe95685[_0x58cd('0x2a')][_0x58cd('0x63')]=_0xfc7036;return _0xe95685;})[_0x58cd('0x22')](function(_0x118136){if(_0x118136){_0x118136[_0x58cd('0x2a')][_0x58cd('0x75')]=util[_0x58cd('0x60')](_0x58cd('0x76'),_0x1f7f15[_0x58cd('0x62')][_0x58cd('0x3a')]);_0x118136[_0x58cd('0x2a')][_0x58cd('0x77')]=_0xe95685[_0x58cd('0x77')];_0x118136['message'][_0x58cd('0x78')]=_0xe95685['channel'];_0x118136[_0x58cd('0x2a')][_0x58cd('0x79')]=_0x58cd('0x35');respondWithRpcPromise(_0x58cd('0x80'),_0x58cd('0x80'),{'event':_0x58cd('0x81'),'message':_0x118136['message']},client9002);return _0xe95685;}return null;})[_0x58cd('0x22')](respondWithResult(_0x168833,null))[_0x58cd('0x2b')](handleError(_0x168833,null));};
\ No newline at end of file
index ac55454..356ce02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22e9=['emit','hasOwnProperty','exports','events','OpenchannelMessage','setMaxListeners','save','update','remove'];(function(_0x39b213,_0x4fe3c8){var _0xe7f3a0=function(_0x2d1dad){while(--_0x2d1dad){_0x39b213['push'](_0x39b213['shift']());}};_0xe7f3a0(++_0x4fe3c8);}(_0x22e9,0x1d7));var _0x922e=function(_0x395667,_0x45593a){_0x395667=_0x395667-0x0;var _0x5cdb8f=_0x22e9[_0x395667];return _0x5cdb8f;};'use strict';var EventEmitter=require(_0x922e('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x922e('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x922e('0x2')](0x0);var events={'afterCreate':_0x922e('0x3'),'afterUpdate':_0x922e('0x4'),'afterDestroy':_0x922e('0x5')};function emitEvent(_0x294416){return function(_0x571812,_0x43992c,_0x26ce41){OpenchannelMessageEvents['emit'](_0x294416+':'+_0x571812['id'],_0x571812);OpenchannelMessageEvents[_0x922e('0x6')](_0x294416,_0x571812);_0x26ce41(null);};}for(var e in events){if(events[_0x922e('0x7')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x922e('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xbb5e=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x44d8a8,_0x3a3f9e){var _0x4d6294=function(_0x5a9b67){while(--_0x5a9b67){_0x44d8a8['push'](_0x44d8a8['shift']());}};_0x4d6294(++_0x3a3f9e);}(_0xbb5e,0x11b));var _0xebb5=function(_0x33ad39,_0x24ee3d){_0x33ad39=_0x33ad39-0x0;var _0x1aa5ea=_0xbb5e[_0x33ad39];return _0x1aa5ea;};'use strict';var EventEmitter=require(_0xebb5('0x0'));var OpenchannelMessage=require(_0xebb5('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xebb5('0x2')](0x0);var events={'afterCreate':_0xebb5('0x3'),'afterUpdate':_0xebb5('0x4'),'afterDestroy':_0xebb5('0x5')};function emitEvent(_0x55ab32){return function(_0x5e7775,_0x133696,_0x2368b4){OpenchannelMessageEvents[_0xebb5('0x6')](_0x55ab32+':'+_0x5e7775['id'],_0x5e7775);OpenchannelMessageEvents[_0xebb5('0x6')](_0x55ab32,_0x5e7775);_0x2368b4(null);};}for(var e in events){if(events[_0xebb5('0x7')](e)){var event=events[e];OpenchannelMessage[_0xebb5('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index bf9a122..8748d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa856=['./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','update','createdAt','catch','error','CmContact','then','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','method','GET','body','threadId','inspect','finally','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1cac97,_0x14901b){var _0xc47a1=function(_0xd30b64){while(--_0xd30b64){_0x1cac97['push'](_0x1cac97['shift']());}};_0xc47a1(++_0x14901b);}(_0xa856,0x130));var _0x6a85=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6a85('0x0'));var util=require('util');var logger=require(_0x6a85('0x1'))('api');var moment=require(_0x6a85('0x2'));var BPromise=require(_0x6a85('0x3'));var rp=require(_0x6a85('0x4'));var fs=require('fs');var path=require(_0x6a85('0x5'));var rimraf=require(_0x6a85('0x6'));var config=require(_0x6a85('0x7'));var attributes=require(_0x6a85('0x8'));module[_0x6a85('0x9')]=function(_0x3d5b32,_0x1e14b0){return _0x3d5b32['define'](_0x6a85('0xa'),attributes,{'tableName':_0x6a85('0xb'),'paranoid':![],'indexes':[{'name':_0x6a85('0xc'),'fields':['body'],'type':_0x6a85('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f8a6e,_0x1e9d66,_0x39a2db){var _0x1f1cb1=_0x3d5b32[_0x6a85('0xe')];var _0x55d1f1=_0x3f8a6e[_0x6a85('0xf')]({'plain':!![]});if(_0x55d1f1[_0x6a85('0x10')]['toLowerCase']()==='in'||_0x55d1f1[_0x6a85('0x10')][_0x6a85('0x11')]()===_0x6a85('0x12')&&!_0x55d1f1[_0x6a85('0x13')]&&!_[_0x6a85('0x14')](_0x55d1f1[_0x6a85('0x15')])){_0x1f1cb1[_0x6a85('0x16')]['findOne']({'where':{'id':_0x55d1f1[_0x6a85('0x17')]}})['then'](function(_0x4bf348){if(_0x4bf348){_0x4bf348[_0x6a85('0x18')]({'lastMsgAt':_0x55d1f1[_0x6a85('0x19')],'lastMsgDirection':_0x55d1f1[_0x6a85('0x10')]['toLowerCase']()});}})[_0x6a85('0x1a')](function(_0x269621){console[_0x6a85('0x1b')](_0x269621);});}if(_0x55d1f1[_0x6a85('0x10')]===_0x6a85('0x12')&&!_0x55d1f1[_0x6a85('0x13')]){var _0x42d11f;_0x1f1cb1[_0x6a85('0x1c')]['describe']()[_0x6a85('0x1d')](function(_0x3421c1){return _0x1f1cb1[_0x6a85('0x1e')][_0x6a85('0x1f')]({'where':{'id':_0x55d1f1[_0x6a85('0x20')]},'include':[{'model':_0x1f1cb1[_0x6a85('0x16')],'as':_0x6a85('0x21'),'where':{'id':_0x55d1f1[_0x6a85('0x17')]},'limit':0x1,'include':[{'model':_0x1f1cb1['CmContact'],'as':_0x6a85('0x22'),'attributes':_[_0x6a85('0x23')](_0x3421c1)}]}]});})[_0x6a85('0x1d')](function(_0x5ee6a8){_0x42d11f=_0x5ee6a8[_0x6a85('0xf')]({'plain':!![]});if(_0x42d11f&&_0x42d11f[_0x6a85('0x24')]){logger[_0x6a85('0x25')](_0x6a85('0x26'),_0x6a85('0x27'),util[_0x6a85('0x28')](_0x6a85('0x29'),_0x55d1f1['id'],_0x42d11f['replyUri']));if(_0x42d11f[_0x6a85('0x21')]&&_0x42d11f[_0x6a85('0x21')][_0x6a85('0x2a')]){_0x55d1f1[_0x6a85('0x2b')]=_[_0x6a85('0x2c')](_0x42d11f['Interactions'][0x0],'Contact');_0x55d1f1[_0x6a85('0x22')]=_0x42d11f[_0x6a85('0x21')][0x0]['Contact'];}var _0x1e9d66={'method':'POST','uri':encodeURI(_0x42d11f[_0x6a85('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1e9d66[_0x6a85('0x2d')]){case _0x6a85('0x2e'):_0x1e9d66['qs']=_0x55d1f1;break;case'POST':_0x1e9d66[_0x6a85('0x2f')]=_0x55d1f1;break;}return rp(_0x1e9d66)['then'](function(_0x39b776){logger[_0x6a85('0x25')](_0x6a85('0x26'),_0x6a85('0x27'),util['format']('Message\x20%d\x20forwarded\x20to\x20%s',_0x55d1f1['id'],_0x42d11f[_0x6a85('0x24')]));if(_0x39b776[_0x6a85('0x2f')][_0x6a85('0x30')]&&_0x39b776['body'][_0x6a85('0x30')]!=_0x55d1f1[_0x6a85('0x2b')]['threadId']){return _0x1f1cb1[_0x6a85('0x16')][_0x6a85('0x18')]({'threadId':_0x39b776['body'][_0x6a85('0x30')]},{'where':{'id':_0x55d1f1[_0x6a85('0x2b')]['id']}});}else{return;}})[_0x6a85('0x1d')](function(){return _0x3f8a6e[_0x6a85('0x18')]({'read':!![]});})[_0x6a85('0x1a')](function(_0x48aafc){logger['error'](_0x6a85('0x26'),_0x6a85('0x27'),util[_0x6a85('0x31')](_0x48aafc,{'showHidden':![],'depth':null}));_0x39a2db();});}else{_0x39a2db();}})[_0x6a85('0x32')](function(){_0x39a2db();});}else{_0x39a2db();}}},'charset':'utf8mb4','collate':_0x6a85('0x33')});};
\ No newline at end of file
+var _0x072f=['method','GET','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','inspect','utf8mb4','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','then','update','createdAt','error','CmContact','describe','find','OpenchannelAccountId','Interactions','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','Contact','POST'];(function(_0x175401,_0x281048){var _0x4d7689=function(_0x48349d){while(--_0x48349d){_0x175401['push'](_0x175401['shift']());}};_0x4d7689(++_0x281048);}(_0x072f,0xd0));var _0xf072=function(_0x241407,_0x4d9d89){_0x241407=_0x241407-0x0;var _0x343584=_0x072f[_0x241407];return _0x343584;};'use strict';var _=require('lodash');var util=require(_0xf072('0x0'));var logger=require(_0xf072('0x1'))(_0xf072('0x2'));var moment=require(_0xf072('0x3'));var BPromise=require('bluebird');var rp=require(_0xf072('0x4'));var fs=require('fs');var path=require(_0xf072('0x5'));var rimraf=require(_0xf072('0x6'));var config=require(_0xf072('0x7'));var attributes=require('./openchannelMessage.attributes');module[_0xf072('0x8')]=function(_0x1a2fa3,_0x405181){return _0x1a2fa3[_0xf072('0x9')](_0xf072('0xa'),attributes,{'tableName':_0xf072('0xb'),'paranoid':![],'indexes':[{'name':_0xf072('0xc'),'fields':[_0xf072('0xd')],'type':_0xf072('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x18f6f3,_0x15cc97,_0x152649){var _0x3f84c9=_0x1a2fa3[_0xf072('0xf')];var _0x63ab68=_0x18f6f3['get']({'plain':!![]});if(_0x63ab68[_0xf072('0x10')][_0xf072('0x11')]()==='in'||_0x63ab68['direction']['toLowerCase']()===_0xf072('0x12')&&!_0x63ab68[_0xf072('0x13')]&&!_['isNil'](_0x63ab68[_0xf072('0x14')])){_0x3f84c9[_0xf072('0x15')][_0xf072('0x16')]({'where':{'id':_0x63ab68['OpenchannelInteractionId']}})[_0xf072('0x17')](function(_0x493762){if(_0x493762){_0x493762[_0xf072('0x18')]({'lastMsgAt':_0x63ab68[_0xf072('0x19')],'lastMsgDirection':_0x63ab68[_0xf072('0x10')]['toLowerCase']()});}})['catch'](function(_0x31c376){console[_0xf072('0x1a')](_0x31c376);});}if(_0x63ab68[_0xf072('0x10')]==='out'&&!_0x63ab68[_0xf072('0x13')]){var _0x37f8f8;_0x3f84c9[_0xf072('0x1b')][_0xf072('0x1c')]()[_0xf072('0x17')](function(_0x553270){return _0x3f84c9['OpenchannelAccount'][_0xf072('0x1d')]({'where':{'id':_0x63ab68[_0xf072('0x1e')]},'include':[{'model':_0x3f84c9[_0xf072('0x15')],'as':_0xf072('0x1f'),'where':{'id':_0x63ab68['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x3f84c9[_0xf072('0x1b')],'as':'Contact','attributes':_[_0xf072('0x20')](_0x553270)}]}]});})[_0xf072('0x17')](function(_0x1fd1a2){_0x37f8f8=_0x1fd1a2['get']({'plain':!![]});if(_0x37f8f8&&_0x37f8f8[_0xf072('0x21')]){logger[_0xf072('0x22')](_0xf072('0x23'),_0xf072('0x24'),util['format'](_0xf072('0x25'),_0x63ab68['id'],_0x37f8f8[_0xf072('0x21')]));if(_0x37f8f8[_0xf072('0x1f')]&&_0x37f8f8[_0xf072('0x1f')]['length']){_0x63ab68[_0xf072('0x26')]=_[_0xf072('0x27')](_0x37f8f8['Interactions'][0x0],_0xf072('0x28'));_0x63ab68[_0xf072('0x28')]=_0x37f8f8['Interactions'][0x0][_0xf072('0x28')];}var _0x15cc97={'method':_0xf072('0x29'),'uri':encodeURI(_0x37f8f8[_0xf072('0x21')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x15cc97[_0xf072('0x2a')]){case _0xf072('0x2b'):_0x15cc97['qs']=_0x63ab68;break;case _0xf072('0x29'):_0x15cc97[_0xf072('0xd')]=_0x63ab68;break;}return rp(_0x15cc97)[_0xf072('0x17')](function(_0xd01023){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xf072('0x24'),util[_0xf072('0x2c')](_0xf072('0x2d'),_0x63ab68['id'],_0x37f8f8[_0xf072('0x21')]));if(_0xd01023['body']['threadId']&&_0xd01023[_0xf072('0xd')][_0xf072('0x2e')]!=_0x63ab68[_0xf072('0x26')][_0xf072('0x2e')]){return _0x3f84c9[_0xf072('0x15')][_0xf072('0x18')]({'threadId':_0xd01023['body'][_0xf072('0x2e')]},{'where':{'id':_0x63ab68[_0xf072('0x26')]['id']}});}else{return;}})[_0xf072('0x17')](function(){return _0x18f6f3[_0xf072('0x18')]({'read':!![]});})[_0xf072('0x2f')](function(_0x394ddf){logger[_0xf072('0x1a')](_0xf072('0x23'),_0xf072('0x24'),util[_0xf072('0x30')](_0x394ddf,{'showHidden':![],'depth':null}));_0x152649();});}else{_0x152649();}})['finally'](function(){_0x152649();});}else{_0x152649();}}},'charset':_0xf072('0x31'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9028344..39976b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','body','options','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x3cee53,_0x4533b4){var _0x26d214=function(_0x515d41){while(--_0x515d41){_0x3cee53['push'](_0x3cee53['shift']());}};_0x26d214(++_0x4533b4);}(_0x7a54,0x106));var _0x47a5=function(_0x53f410,_0x465aed){_0x53f410=_0x53f410-0x0;var _0x4657ed=_0x7a54[_0x53f410];return _0x4657ed;};'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});config['redis']=_[_0x47a5('0xb')](config[_0x47a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x47a5('0xd'))(new Redis(config['redis']));require('./openchannelMessage.socket')['register'](socket);function respondWithRpcPromise(_0x2a0e98,_0x2baee7,_0x5e31dd){return new BPromise(function(_0x2eb0dd,_0x49e844){return client['request'](_0x2a0e98,_0x5e31dd)[_0x47a5('0xe')](function(_0x69e4d4){logger[_0x47a5('0xf')](_0x47a5('0x10'),_0x2baee7,_0x47a5('0x11'));logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x2baee7,'request\x20sent',JSON[_0x47a5('0x14')](_0x69e4d4));if(_0x69e4d4[_0x47a5('0x15')]){if(_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x16')]===0x1f4){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x49e844(_0x69e4d4['error'][_0x47a5('0x17')]);}logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x2eb0dd(_0x69e4d4['error']['message']);}else{logger[_0x47a5('0xf')]('OpenchannelMessage,\x20%s,\x20%s',_0x2baee7,'request\x20sent');_0x2eb0dd(_0x69e4d4[_0x47a5('0x18')][_0x47a5('0x17')]);}})[_0x47a5('0x19')](function(_0x1ef371){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x1ef371);_0x49e844(_0x1ef371);});});}exports[_0x47a5('0x1a')]=function(_0xe3c618){var _0x3aed38=this;return new Promise(function(_0x4a9fcb,_0x1570bc){return db[_0x47a5('0x1b')]['create'](_0xe3c618[_0x47a5('0x1c')],{'raw':_0xe3c618[_0x47a5('0x1d')]?_0xe3c618[_0x47a5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x47a5('0xe')](function(_0x2f142b){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xe3c618);logger['debug'](_0x47a5('0x1a'),_0xe3c618,JSON[_0x47a5('0x14')](_0x2f142b));_0x4a9fcb(_0x2f142b);})['catch'](function(_0x28747d){logger[_0x47a5('0x15')](_0x47a5('0x1a'),_0x28747d[_0x47a5('0x17')],_0xe3c618);_0x1570bc(_0x3aed38[_0x47a5('0x15')](0x1f4,_0x28747d['message']));});});};
\ No newline at end of file
+var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x3ef8be,_0xc5a4f0){var _0x90c201=function(_0x503bbe){while(--_0x503bbe){_0x3ef8be['push'](_0x3ef8be['shift']());}};_0x90c201(++_0xc5a4f0);}(_0x2ef3,0xba));var _0x32ef=function(_0x3ab4cf,_0x7a2358){_0x3ab4cf=_0x3ab4cf-0x0;var _0x2d3bcf=_0x2ef3[_0x3ab4cf];return _0x2d3bcf;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
index 3602daf..37016d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a56=['save','update','emit','removeListener','register','length','openchannelMessage:'];(function(_0x3540eb,_0x8ab7ca){var _0x2c5278=function(_0x1b97b5){while(--_0x1b97b5){_0x3540eb['push'](_0x3540eb['shift']());}};_0x2c5278(++_0x8ab7ca);}(_0x2a56,0xaf));var _0x62a5=function(_0x8678c8,_0x3488e1){_0x8678c8=_0x8678c8-0x0;var _0x107da4=_0x2a56[_0x8678c8];return _0x107da4;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x62a5('0x0'),'remove',_0x62a5('0x1')];function createListener(_0x236dfe,_0x6ce1ef){return function(_0x315f00){_0x6ce1ef[_0x62a5('0x2')](_0x236dfe,_0x315f00);};}function removeListener(_0x4d2fa7,_0x280fad){return function(){OpenchannelMessageEvents[_0x62a5('0x3')](_0x4d2fa7,_0x280fad);};}exports[_0x62a5('0x4')]=function(_0x40bd58){for(var _0x19444d=0x0,_0x206ee4=events[_0x62a5('0x5')];_0x19444d<_0x206ee4;_0x19444d++){var _0x22ae0d=events[_0x19444d];var _0x4b376d=createListener(_0x62a5('0x6')+_0x22ae0d,_0x40bd58);OpenchannelMessageEvents['on'](_0x22ae0d,_0x4b376d);}};
\ No newline at end of file
+var _0x5db6=['removeListener','register','length','openchannelMessage:','./openchannelMessage.events','emit'];(function(_0x19dd7a,_0x51de21){var _0x3feb6a=function(_0x4a3c84){while(--_0x4a3c84){_0x19dd7a['push'](_0x19dd7a['shift']());}};_0x3feb6a(++_0x51de21);}(_0x5db6,0x88));var _0x65db=function(_0x3b1e6f,_0x17e752){_0x3b1e6f=_0x3b1e6f-0x0;var _0x5760a2=_0x5db6[_0x3b1e6f];return _0x5760a2;};'use strict';var OpenchannelMessageEvents=require(_0x65db('0x0'));var events=['save','remove','update'];function createListener(_0x4edaae,_0x8252c6){return function(_0x1629dd){_0x8252c6[_0x65db('0x1')](_0x4edaae,_0x1629dd);};}function removeListener(_0x1adaca,_0x3bcc59){return function(){OpenchannelMessageEvents[_0x65db('0x2')](_0x1adaca,_0x3bcc59);};}exports[_0x65db('0x3')]=function(_0x359e87){for(var _0x45f65a=0x0,_0x15cf75=events[_0x65db('0x4')];_0x45f65a<_0x15cf75;_0x45f65a++){var _0x36242b=events[_0x45f65a];var _0x254457=createListener(_0x65db('0x5')+_0x36242b,_0x359e87);OpenchannelMessageEvents['on'](_0x36242b,_0x254457);}};
\ No newline at end of file
index 2593e0e..20460a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x709b=['removeTeams','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','index','isAuthenticated','describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete'];(function(_0x1f47ff,_0x2043a9){var _0x40e7de=function(_0x1deb15){while(--_0x1deb15){_0x1f47ff['push'](_0x1f47ff['shift']());}};_0x40e7de(++_0x2043a9);}(_0x709b,0x18a));var _0xb709=function(_0x70f1b2,_0x400e15){_0x70f1b2=_0x70f1b2-0x0;var _0x55ac09=_0x709b[_0x70f1b2];return _0x55ac09;};'use strict';var multer=require(_0xb709('0x0'));var util=require(_0xb709('0x1'));var path=require(_0xb709('0x2'));var timeout=require(_0xb709('0x3'));var express=require(_0xb709('0x4'));var router=express['Router']();var fs_extra=require(_0xb709('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb709('0x6'));var config=require(_0xb709('0x7'));var controller=require(_0xb709('0x8'));router[_0xb709('0x9')]('/',auth['isAuthenticated'](),controller[_0xb709('0xa')]);router[_0xb709('0x9')]('/describe',auth[_0xb709('0xb')](),controller[_0xb709('0xc')]);router['get'](_0xb709('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xb709('0x9')](_0xb709('0xe'),auth[_0xb709('0xb')](),controller['getMembers']);router[_0xb709('0x9')](_0xb709('0xf'),auth[_0xb709('0xb')](),controller[_0xb709('0x10')]);router[_0xb709('0x9')](_0xb709('0x11'),auth['isAuthenticated'](),controller[_0xb709('0x12')]);router['post']('/',auth[_0xb709('0xb')](),controller[_0xb709('0x13')]);router[_0xb709('0x14')](_0xb709('0xf'),auth['isAuthenticated'](),controller[_0xb709('0x15')]);router['post'](_0xb709('0x11'),auth[_0xb709('0xb')](),controller[_0xb709('0x16')]);router[_0xb709('0x17')](_0xb709('0xd'),auth['isAuthenticated'](),controller[_0xb709('0x18')]);router['delete'](_0xb709('0xd'),auth[_0xb709('0xb')](),controller['destroy']);router[_0xb709('0x19')](_0xb709('0xf'),auth[_0xb709('0xb')](),controller[_0xb709('0x1a')]);router[_0xb709('0x19')](_0xb709('0x11'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xb709('0x1b')]=router;
\ No newline at end of file
+var _0x9818=['./openchannelQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3a6ac9,_0x23cf5c){var _0x565ade=function(_0x505880){while(--_0x505880){_0x3a6ac9['push'](_0x3a6ac9['shift']());}};_0x565ade(++_0x23cf5c);}(_0x9818,0x1d4));var _0x8981=function(_0x386d06,_0x2d9bc9){_0x386d06=_0x386d06-0x0;var _0x4d4930=_0x9818[_0x386d06];return _0x4d4930;};'use strict';var multer=require(_0x8981('0x0'));var util=require(_0x8981('0x1'));var path=require('path');var timeout=require(_0x8981('0x2'));var express=require(_0x8981('0x3'));var router=express[_0x8981('0x4')]();var fs_extra=require(_0x8981('0x5'));var auth=require(_0x8981('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8981('0x7'));var controller=require(_0x8981('0x8'));router[_0x8981('0x9')]('/',auth[_0x8981('0xa')](),controller['index']);router[_0x8981('0x9')](_0x8981('0xb'),auth[_0x8981('0xa')](),controller[_0x8981('0xc')]);router['get'](_0x8981('0xd'),auth['isAuthenticated'](),controller[_0x8981('0xe')]);router[_0x8981('0x9')](_0x8981('0xf'),auth[_0x8981('0xa')](),controller[_0x8981('0x10')]);router[_0x8981('0x9')](_0x8981('0x11'),auth[_0x8981('0xa')](),controller['getTeams']);router[_0x8981('0x9')](_0x8981('0x12'),auth[_0x8981('0xa')](),controller[_0x8981('0x13')]);router[_0x8981('0x14')]('/',auth[_0x8981('0xa')](),controller['create']);router[_0x8981('0x14')](_0x8981('0x11'),auth[_0x8981('0xa')](),controller[_0x8981('0x15')]);router[_0x8981('0x14')](_0x8981('0x12'),auth[_0x8981('0xa')](),controller[_0x8981('0x16')]);router[_0x8981('0x17')]('/:id',auth[_0x8981('0xa')](),controller[_0x8981('0x18')]);router[_0x8981('0x19')](_0x8981('0xd'),auth['isAuthenticated'](),controller[_0x8981('0x1a')]);router[_0x8981('0x19')](_0x8981('0x11'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x8981('0x19')](_0x8981('0x12'),auth[_0x8981('0xa')](),controller['removeAgents']);module[_0x8981('0x1b')]=router;
\ No newline at end of file
index c087e0a..11f0088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf22=['exports','STRING','name','INTEGER','ENUM','rrmemory','roundrobin','sequelize'];(function(_0x4056ee,_0x2a104a){var _0x26991d=function(_0x19b692){while(--_0x19b692){_0x4056ee['push'](_0x4056ee['shift']());}};_0x26991d(++_0x2a104a);}(_0xbf22,0xef));var _0x2bf2=function(_0x1e33ac,_0x486d32){_0x1e33ac=_0x1e33ac-0x0;var _0x460470=_0xbf22[_0x1e33ac];return _0x460470;};'use strict';var Sequelize=require(_0x2bf2('0x0'));module[_0x2bf2('0x1')]={'name':{'type':Sequelize[_0x2bf2('0x2')],'unique':_0x2bf2('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2bf2('0x2')]},'timeout':{'type':Sequelize[_0x2bf2('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2bf2('0x5')](_0x2bf2('0x6'),'beepall',_0x2bf2('0x7'))}};
\ No newline at end of file
+var _0xa2a5=['sequelize','exports','ENUM','rrmemory','beepall'];(function(_0x312fa0,_0x4190bf){var _0x53b926=function(_0x16cd67){while(--_0x16cd67){_0x312fa0['push'](_0x312fa0['shift']());}};_0x53b926(++_0x4190bf);}(_0xa2a5,0xa0));var _0x5a2a=function(_0x122b29,_0x4b0899){_0x122b29=_0x122b29-0x0;var _0xc85a6d=_0xa2a5[_0x122b29];return _0xc85a6d;};'use strict';var Sequelize=require(_0x5a2a('0x0'));module[_0x5a2a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5a2a('0x2')](_0x5a2a('0x3'),_0x5a2a('0x4'),'roundrobin')}};
\ No newline at end of file
index f9a554e..78943a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d07=['user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','ids','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','emit','getAgents','pick','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','VIRTUAL','merge','options','findAll','rows','catch','show','params','includeAll','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','User','UserId','openchannelPause','updatedAt','format','SIP','createdAt','getTeams','findOne','Team','length','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','userOpenchannelQueue:save','select','from','team_has_openchannel_queues','join'];(function(_0x507d01,_0x494ba5){var _0x49f80a=function(_0x2cf4fa){while(--_0x2cf4fa){_0x507d01['push'](_0x507d01['shift']());}};_0x49f80a(++_0x494ba5);}(_0x8d07,0x1cf));var _0x78d0=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x8d07[_0x5e36d1];return _0x950b9e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x78d0('0x0'));var jsonpatch=require(_0x78d0('0x1'));var rp=require(_0x78d0('0x2'));var moment=require(_0x78d0('0x3'));var BPromise=require(_0x78d0('0x4'));var Mustache=require('mustache');var util=require(_0x78d0('0x5'));var path=require('path');var sox=require(_0x78d0('0x6'));var csv=require(_0x78d0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x78d0('0x8'));var _=require(_0x78d0('0x9'));var squel=require(_0x78d0('0xa'));var crypto=require(_0x78d0('0xb'));var jsforce=require(_0x78d0('0xc'));var deskjs=require(_0x78d0('0xd'));var toCsv=require('to-csv');var querystring=require(_0x78d0('0xe'));var Papa=require('papaparse');var Redis=require(_0x78d0('0xf'));var authService=require(_0x78d0('0x10'));var qs=require(_0x78d0('0x11'));var as=require(_0x78d0('0x12'));var hardwareService=require(_0x78d0('0x13'));var logger=require(_0x78d0('0x14'))(_0x78d0('0x15'));var utils=require(_0x78d0('0x16'));var config=require(_0x78d0('0x17'));var licenseUtil=require(_0x78d0('0x18'));var db=require(_0x78d0('0x19'))['db'];config[_0x78d0('0x1a')]=_[_0x78d0('0x1b')](config[_0x78d0('0x1a')],{'host':_0x78d0('0x1c'),'port':0x18eb});var socket=require(_0x78d0('0x1d'))(new Redis(config['redis']));require(_0x78d0('0x1e'))[_0x78d0('0x1f')](socket);function respondWithStatusCode(_0x41b420,_0x224863){_0x224863=_0x224863||0xcc;return function(_0x36c6eb){if(_0x36c6eb){return _0x41b420[_0x78d0('0x20')](_0x224863);}return _0x41b420[_0x78d0('0x21')](_0x224863)[_0x78d0('0x22')]();};}function respondWithResult(_0x8728d1,_0x3c0c2c){_0x3c0c2c=_0x3c0c2c||0xc8;return function(_0x297ef9){if(_0x297ef9){return _0x8728d1[_0x78d0('0x21')](_0x3c0c2c)[_0x78d0('0x23')](_0x297ef9);}};}function respondWithFilteredResult(_0x3f8538,_0x1defd8){return function(_0xbcede7){if(_0xbcede7){var _0x35c25d=typeof _0x1defd8[_0x78d0('0x24')]==='undefined'&&typeof _0x1defd8[_0x78d0('0x25')]===_0x78d0('0x26');var _0x3faf3c=_0xbcede7[_0x78d0('0x27')];var _0x208c98=_0x35c25d?0x0:_0x1defd8['offset'];var _0xe5a69b=_0x35c25d?_0xbcede7['count']:_0x1defd8['offset']+_0x1defd8[_0x78d0('0x25')];var _0x48b53c;if(_0xe5a69b>=_0x3faf3c){_0xe5a69b=_0x3faf3c;_0x48b53c=0xc8;}else{_0x48b53c=0xce;}_0x3f8538[_0x78d0('0x21')](_0x48b53c);return _0x3f8538[_0x78d0('0x28')](_0x78d0('0x29'),_0x208c98+'-'+_0xe5a69b+'/'+_0x3faf3c)['json'](_0xbcede7);}return null;};}function patchUpdates(_0x1bdd59){return function(_0x22709a){try{jsonpatch[_0x78d0('0x2a')](_0x22709a,_0x1bdd59,!![]);}catch(_0x35e8a3){return BPromise[_0x78d0('0x2b')](_0x35e8a3);}return _0x22709a['save']();};}function saveUpdates(_0x23c7a1,_0x1fc9c6){return function(_0x293aca){if(_0x293aca){return _0x293aca[_0x78d0('0x2c')](_0x23c7a1)[_0x78d0('0x2d')](function(_0x2ed7cf){return _0x2ed7cf;});}return null;};}function removeEntity(_0x44da26,_0x529345){return function(_0x15b35e){if(_0x15b35e){return _0x15b35e[_0x78d0('0x2e')]()[_0x78d0('0x2d')](function(){var _0x35bd41=_0x15b35e[_0x78d0('0x2f')]({'plain':!![]});var _0x562cc8=_0x78d0('0x30');return db[_0x78d0('0x31')][_0x78d0('0x2e')]({'where':{'type':_0x562cc8,'resourceId':_0x35bd41['id']}})[_0x78d0('0x2d')](function(){return _0x15b35e;});})[_0x78d0('0x2d')](function(){_0x44da26['status'](0xcc)[_0x78d0('0x22')]();});}};}function handleEntityNotFound(_0x545adf,_0x3da3c5){return function(_0x235ed6){if(!_0x235ed6){_0x545adf[_0x78d0('0x20')](0x194);}return _0x235ed6;};}function handleError(_0x1190f2,_0x279bd8){_0x279bd8=_0x279bd8||0x1f4;return function(_0x5d2588){logger[_0x78d0('0x32')](_0x5d2588[_0x78d0('0x33')]);if(_0x5d2588['name']){delete _0x5d2588[_0x78d0('0x34')];}_0x1190f2[_0x78d0('0x21')](_0x279bd8)[_0x78d0('0x35')](_0x5d2588);};}exports[_0x78d0('0x36')]=function(_0xb59864,_0x457681){var _0x214386={},_0x5de901={},_0x146872={'count':0x0,'rows':[]};var _0x3f0608=_[_0x78d0('0x37')](db[_0x78d0('0x38')][_0x78d0('0x39')],function(_0x51abc7){return{'name':_0x51abc7['fieldName'],'type':_0x51abc7[_0x78d0('0x3a')][_0x78d0('0x3b')]};});_0x5de901[_0x78d0('0x3c')]=_['map'](_0x3f0608,_0x78d0('0x34'));_0x5de901[_0x78d0('0x3d')]=_[_0x78d0('0x3e')](_0xb59864['query']);_0x5de901[_0x78d0('0x3f')]=_[_0x78d0('0x40')](_0x5de901['model'],_0x5de901['query']);_0x214386[_0x78d0('0x41')]=_[_0x78d0('0x40')](_0x5de901[_0x78d0('0x3c')],qs[_0x78d0('0x42')](_0xb59864[_0x78d0('0x3d')][_0x78d0('0x42')]));_0x214386[_0x78d0('0x41')]=_0x214386[_0x78d0('0x41')]['length']?_0x214386[_0x78d0('0x41')]:_0x5de901['model'];if(!_0xb59864[_0x78d0('0x3d')]['hasOwnProperty'](_0x78d0('0x43'))){_0x214386['limit']=qs[_0x78d0('0x25')](_0xb59864[_0x78d0('0x3d')]['limit']);_0x214386[_0x78d0('0x24')]=qs[_0x78d0('0x24')](_0xb59864[_0x78d0('0x3d')][_0x78d0('0x24')]);}_0x214386[_0x78d0('0x44')]=qs[_0x78d0('0x45')](_0xb59864[_0x78d0('0x3d')][_0x78d0('0x45')]);_0x214386[_0x78d0('0x46')]=qs[_0x78d0('0x3f')](_['pick'](_0xb59864[_0x78d0('0x3d')],_0x5de901['filters']),_0x3f0608);if(_0xb59864[_0x78d0('0x3d')][_0x78d0('0x47')]){_0x214386[_0x78d0('0x46')]=_['merge'](_0x214386[_0x78d0('0x46')],{'$or':_[_0x78d0('0x37')](_0x3f0608,function(_0x484ec7){if(_0x484ec7['type']!==_0x78d0('0x48')){var _0x6f7f5e={};_0x6f7f5e[_0x484ec7[_0x78d0('0x34')]]={'$like':'%'+_0xb59864[_0x78d0('0x3d')][_0x78d0('0x47')]+'%'};return _0x6f7f5e;}})});}_0x214386=_[_0x78d0('0x49')]({},_0x214386,_0xb59864[_0x78d0('0x4a')]);var _0x4806ac={'where':_0x214386[_0x78d0('0x46')]};return db[_0x78d0('0x38')]['count'](_0x4806ac)[_0x78d0('0x2d')](function(_0x5284a3){_0x146872[_0x78d0('0x27')]=_0x5284a3;if(_0xb59864[_0x78d0('0x3d')]['includeAll']){_0x214386['include']=[{'all':!![]}];}return db[_0x78d0('0x38')][_0x78d0('0x4b')](_0x214386);})[_0x78d0('0x2d')](function(_0x17149f){_0x146872[_0x78d0('0x4c')]=_0x17149f;return _0x146872;})[_0x78d0('0x2d')](respondWithFilteredResult(_0x457681,_0x214386))[_0x78d0('0x4d')](handleError(_0x457681,null));};exports[_0x78d0('0x4e')]=function(_0x2a78ff,_0x576533){var _0x4ea852={'raw':!![],'where':{'id':_0x2a78ff[_0x78d0('0x4f')]['id']}},_0x1ebb2c={};_0x1ebb2c[_0x78d0('0x3c')]=_[_0x78d0('0x3e')](db[_0x78d0('0x38')][_0x78d0('0x39')]);_0x1ebb2c[_0x78d0('0x3d')]=_[_0x78d0('0x3e')](_0x2a78ff[_0x78d0('0x3d')]);_0x1ebb2c[_0x78d0('0x3f')]=_[_0x78d0('0x40')](_0x1ebb2c[_0x78d0('0x3c')],_0x1ebb2c[_0x78d0('0x3d')]);_0x4ea852['attributes']=_['intersection'](_0x1ebb2c['model'],qs[_0x78d0('0x42')](_0x2a78ff[_0x78d0('0x3d')][_0x78d0('0x42')]));_0x4ea852[_0x78d0('0x41')]=_0x4ea852[_0x78d0('0x41')]['length']?_0x4ea852[_0x78d0('0x41')]:_0x1ebb2c[_0x78d0('0x3c')];if(_0x2a78ff[_0x78d0('0x3d')][_0x78d0('0x50')]){_0x4ea852[_0x78d0('0x51')]=[{'all':!![]}];}_0x4ea852=_[_0x78d0('0x49')]({},_0x4ea852,_0x2a78ff[_0x78d0('0x4a')]);return db[_0x78d0('0x38')][_0x78d0('0x52')](_0x4ea852)[_0x78d0('0x2d')](handleEntityNotFound(_0x576533,null))['then'](respondWithResult(_0x576533,null))[_0x78d0('0x4d')](handleError(_0x576533,null));};exports['create']=function(_0x53ede1,_0x81be69){return db[_0x78d0('0x38')][_0x78d0('0x53')](_0x53ede1['body'],{})[_0x78d0('0x2d')](function(_0x42aada){var _0x513249=_0x53ede1[_0x78d0('0x54')][_0x78d0('0x2f')]({'plain':!![]});if(!_0x513249)throw new Error(_0x78d0('0x55'));if(_0x513249['role']===_0x78d0('0x54')){var _0x5919fb=_0x42aada[_0x78d0('0x2f')]({'plain':!![]});var _0x511c68='OpenchannelQueues';return db[_0x78d0('0x56')]['find']({'where':{'name':_0x511c68,'userProfileId':_0x513249[_0x78d0('0x57')]},'raw':!![]})[_0x78d0('0x2d')](function(_0x274930){if(_0x274930&&_0x274930[_0x78d0('0x58')]===0x0){return db['UserProfileResource'][_0x78d0('0x53')]({'name':_0x5919fb[_0x78d0('0x34')],'resourceId':_0x5919fb['id'],'type':_0x274930[_0x78d0('0x34')],'sectionId':_0x274930['id']},{})[_0x78d0('0x2d')](function(){return _0x42aada;});}else{return _0x42aada;}})[_0x78d0('0x4d')](function(_0xc0cf1){logger['error'](_0x78d0('0x59'),_0xc0cf1);throw _0xc0cf1;});}return _0x42aada;})[_0x78d0('0x2d')](respondWithResult(_0x81be69,0xc9))[_0x78d0('0x4d')](handleError(_0x81be69,null));};exports[_0x78d0('0x2c')]=function(_0x58dce2,_0x2418ef){if(_0x58dce2[_0x78d0('0x5a')]['id']){delete _0x58dce2[_0x78d0('0x5a')]['id'];}return db[_0x78d0('0x38')][_0x78d0('0x52')]({'where':{'id':_0x58dce2[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x2418ef,null))[_0x78d0('0x2d')](saveUpdates(_0x58dce2['body'],null))[_0x78d0('0x2d')](respondWithResult(_0x2418ef,null))['catch'](handleError(_0x2418ef,null));};exports[_0x78d0('0x2e')]=function(_0x1ed056,_0x5745d7){return db[_0x78d0('0x38')][_0x78d0('0x52')]({'where':{'id':_0x1ed056[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x5745d7,null))[_0x78d0('0x2d')](removeEntity(_0x5745d7,null))[_0x78d0('0x4d')](handleError(_0x5745d7,null));};exports[_0x78d0('0x5b')]=function(_0x2cf9d9,_0x27a5d4){return db[_0x78d0('0x38')][_0x78d0('0x5b')]()[_0x78d0('0x2d')](respondWithResult(_0x27a5d4,null))[_0x78d0('0x4d')](handleError(_0x27a5d4,null));};exports['getMembers']=function(_0xd7deee,_0x41d599,_0x349df9){var _0x312b98={'raw':!![],'where':{}},_0x444987={},_0x520d0c;return db[_0x78d0('0x38')]['findOne']({'where':{'id':_0xd7deee[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x41d599,null))[_0x78d0('0x2d')](function(_0x592fe0){if(_0x592fe0){_0x520d0c=_0x592fe0['get']({'plain':!![]});_0x444987[_0x78d0('0x3c')]=_[_0x78d0('0x3e')](db[_0x78d0('0x5c')][_0x78d0('0x39')]);_0x444987[_0x78d0('0x3d')]=_[_0x78d0('0x3e')](_0xd7deee[_0x78d0('0x3d')]);_0x444987['filters']=_['intersection'](_0x444987[_0x78d0('0x3c')],_0x444987[_0x78d0('0x3d')]);_0x312b98['attributes']=_[_0x78d0('0x40')](_0x444987['model'],qs[_0x78d0('0x42')](_0xd7deee['query'][_0x78d0('0x42')]));_0x312b98[_0x78d0('0x41')]=_0x312b98['attributes']['length']?_0x312b98[_0x78d0('0x41')]:_0x444987['model'];if(!_0xd7deee[_0x78d0('0x3d')][_0x78d0('0x5d')](_0x78d0('0x43'))){_0x312b98[_0x78d0('0x25')]=qs[_0x78d0('0x25')](_0xd7deee['query'][_0x78d0('0x25')]);_0x312b98[_0x78d0('0x24')]=qs[_0x78d0('0x24')](_0xd7deee[_0x78d0('0x3d')][_0x78d0('0x24')]);}_0x312b98[_0x78d0('0x44')]=qs['sort'](_0xd7deee[_0x78d0('0x3d')][_0x78d0('0x45')]);_0x312b98[_0x78d0('0x46')]=qs[_0x78d0('0x3f')](_['pick'](_0xd7deee['query'],_0x444987['filters']));_0x312b98[_0x78d0('0x46')][_0x78d0('0x5e')]=_0x592fe0['id'];if(_0xd7deee[_0x78d0('0x3d')][_0x78d0('0x47')]){_0x312b98[_0x78d0('0x46')]=_[_0x78d0('0x49')](_0x312b98['where'],{'$or':_['map'](_0x312b98[_0x78d0('0x41')],function(_0x28d42c){var _0x3d2812={};_0x3d2812[_0x28d42c]={'$like':'%'+_0xd7deee['query'][_0x78d0('0x47')]+'%'};return _0x3d2812;})});}_0x312b98=_[_0x78d0('0x49')]({},_0x312b98,_0xd7deee[_0x78d0('0x4a')]);return db[_0x78d0('0x5c')][_0x78d0('0x4b')](_0x312b98);}})['then'](function(_0x3433a8){if(_0x3433a8){return db[_0x78d0('0x5f')]['findAndCountAll']({'where':{'id':_[_0x78d0('0x37')](_0x3433a8,_0x78d0('0x60')),'role':'agent'},'attributes':['id',_0x78d0('0x34'),_0x78d0('0x61'),_0x78d0('0x62'),'createdAt']});}})['then'](function(_0x280c37){if(_0x280c37){return{'count':_0x280c37[_0x78d0('0x27')],'rows':_[_0x78d0('0x37')](_0x280c37['rows'],function(_0x21133b){return{'membername':_0x21133b[_0x78d0('0x34')],'UserId':_0x21133b['id'],'queue_name':_0x520d0c[_0x78d0('0x34')],'OpenchannelQueueId':_0x520d0c['id'],'interface':util[_0x78d0('0x63')]('%s/%s',_0x78d0('0x64'),_0x21133b[_0x78d0('0x34')]),'penalty':0x0,'paused':_0x21133b[_0x78d0('0x61')],'createdAt':_0x21133b[_0x78d0('0x65')],'updatedAt':_0x21133b['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x78d0('0x2d')](respondWithFilteredResult(_0x41d599,_0x312b98))[_0x78d0('0x4d')](handleError(_0x41d599,null));};exports[_0x78d0('0x66')]=function(_0x1769f2,_0x279425,_0x3e321b){var _0xd0bc8d={};var _0x5188ee={};var _0x315f9e;var _0x395502;return db['OpenchannelQueue'][_0x78d0('0x67')]({'where':{'id':_0x1769f2[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x279425,null))['then'](function(_0xb5a302){if(_0xb5a302){_0x315f9e=_0xb5a302;_0x5188ee[_0x78d0('0x3c')]=_[_0x78d0('0x3e')](db[_0x78d0('0x68')][_0x78d0('0x39')]);_0x5188ee[_0x78d0('0x3d')]=_[_0x78d0('0x3e')](_0x1769f2[_0x78d0('0x3d')]);_0x5188ee[_0x78d0('0x3f')]=_[_0x78d0('0x40')](_0x5188ee[_0x78d0('0x3c')],_0x5188ee['query']);_0xd0bc8d['attributes']=_['intersection'](_0x5188ee['model'],qs[_0x78d0('0x42')](_0x1769f2[_0x78d0('0x3d')][_0x78d0('0x42')]));_0xd0bc8d[_0x78d0('0x41')]=_0xd0bc8d['attributes']['length']?_0xd0bc8d['attributes']:_0x5188ee[_0x78d0('0x3c')];_0xd0bc8d[_0x78d0('0x44')]=qs[_0x78d0('0x45')](_0x1769f2[_0x78d0('0x3d')][_0x78d0('0x45')]);_0xd0bc8d['where']=qs[_0x78d0('0x3f')](_['pick'](_0x1769f2[_0x78d0('0x3d')],_0x5188ee['filters']));if(_0x1769f2[_0x78d0('0x3d')]['filter']){_0xd0bc8d[_0x78d0('0x46')]=_[_0x78d0('0x49')](_0xd0bc8d[_0x78d0('0x46')],{'$or':_[_0x78d0('0x37')](_0xd0bc8d[_0x78d0('0x41')],function(_0x412dcb){var _0xd12b06={};_0xd12b06[_0x412dcb]={'$like':'%'+_0x1769f2[_0x78d0('0x3d')][_0x78d0('0x47')]+'%'};return _0xd12b06;})});}_0xd0bc8d=_[_0x78d0('0x49')]({},_0xd0bc8d,_0x1769f2[_0x78d0('0x4a')]);return _0x315f9e[_0x78d0('0x66')](_0xd0bc8d);}})[_0x78d0('0x2d')](function(_0x575953){if(_0x575953){_0x395502=_0x575953[_0x78d0('0x69')];if(!_0x1769f2['query'][_0x78d0('0x5d')]('nolimit')){_0xd0bc8d[_0x78d0('0x25')]=qs[_0x78d0('0x25')](_0x1769f2[_0x78d0('0x3d')]['limit']);_0xd0bc8d[_0x78d0('0x24')]=qs[_0x78d0('0x24')](_0x1769f2[_0x78d0('0x3d')][_0x78d0('0x24')]);}return _0x315f9e['getTeams'](_0xd0bc8d);}})['then'](function(_0x20fd15){if(_0x20fd15){return _0x20fd15?{'count':_0x395502,'rows':_0x20fd15}:null;}})[_0x78d0('0x2d')](respondWithResult(_0x279425,null))[_0x78d0('0x4d')](handleError(_0x279425,null));};exports[_0x78d0('0x6a')]=function(_0x26fa8b,_0x5e871,_0x32a1d6){var _0x2c7ef3=_0x26fa8b['body']['ids'];return db['Team']['findAll']({'where':{'id':_0x2c7ef3},'attributes':['id'],'include':[{'model':db[_0x78d0('0x5f')],'as':_0x78d0('0x6b'),'attributes':['id','name',_0x78d0('0x6c'),_0x78d0('0x6d'),_0x78d0('0x6e')],'raw':!![]}]})[_0x78d0('0x2d')](function(_0x939116){if(_0x939116){var _0x2701f2=_[_0x78d0('0x6f')](_0x939116,function(_0x1bbcb5){var _0x1f0326=_0x1bbcb5[_0x78d0('0x2f')]({'plain':!![]});return _0x1f0326[_0x78d0('0x6b')];});return db['OpenchannelQueue'][_0x78d0('0x52')]({'where':{'id':_0x26fa8b[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](function(_0xcfbb3d){return db[_0x78d0('0x70')][_0x78d0('0x71')](function(_0x10d6c7){return _0xcfbb3d[_0x78d0('0x6a')](_0x2c7ef3,{'transaction':_0x10d6c7})[_0x78d0('0x2d')](function(){return BPromise[_0x78d0('0x72')](_0x2701f2,function(_0xdfd19e){return db[_0x78d0('0x5c')][_0x78d0('0x73')]({'where':{'UserId':_0xdfd19e['id'],'OpenchannelQueueId':_0x26fa8b[_0x78d0('0x4f')]['id']},'transaction':_0x10d6c7});});})[_0x78d0('0x2d')](function(){_0x2701f2['forEach'](function(_0x1e52d4){socket['emit'](_0x78d0('0x74'),{'UserId':_0x1e52d4['id'],'OpenchannelQueueId':_0xcfbb3d['id']});});});});});}})[_0x78d0('0x2d')](respondWithStatusCode(_0x5e871,null))[_0x78d0('0x4d')](handleError(_0x5e871,null));};exports['removeTeams']=function(_0x1dc3f9,_0x48ed1f,_0x21ee2a){return db[_0x78d0('0x68')]['findAll']({'where':{'id':_0x1dc3f9[_0x78d0('0x3d')]['ids']},'attributes':['id'],'include':[{'model':db[_0x78d0('0x5f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x48ed1f,null))['then'](function(_0x8a7491){var _0x2faaf7=_[_0x78d0('0x37')](_0x8a7491,'id');var _0x55978d=[];var _0x3de4dd=[];var _0x39bf9c=squel[_0x78d0('0x75')]();_0x39bf9c['field']('tq.TeamId')[_0x78d0('0x76')](_0x78d0('0x77'),'tq')[_0x78d0('0x78')](_0x78d0('0x79'),'ut',_0x78d0('0x7a'))[_0x78d0('0x46')]('OpenchannelQueueId\x20=\x20?',_0x1dc3f9['params']['id']);for(var _0x595e3d=0x0;_0x595e3d<_0x8a7491[_0x78d0('0x69')];_0x595e3d+=0x1){let _0x597105=_0x8a7491[_0x595e3d];for(var _0x39e72f=0x0;_0x39e72f<_0x597105[_0x78d0('0x6b')][_0x78d0('0x69')];_0x39e72f+=0x1){let _0x163dac=_0x597105[_0x78d0('0x6b')][_0x39e72f];var _0x2956ba=_0x39bf9c['clone']();_0x2956ba[_0x78d0('0x46')](_0x78d0('0x7b'),_0x163dac['id']);_0x3de4dd[_0x78d0('0x7c')](db[_0x78d0('0x70')]['query'](_0x2956ba['toString'](),{'type':db[_0x78d0('0x70')][_0x78d0('0x7d')][_0x78d0('0x7e')]})[_0x78d0('0x2d')](function(_0x562a9a){if(_0x562a9a[_0x78d0('0x69')]===0x1){return _0x163dac['id'];}else{var _0x57ed9e=_[_0x78d0('0x7f')](_[_0x78d0('0x37')](_0x562a9a,_0x78d0('0x80')),function(_0x14b4d7){return _[_0x78d0('0x81')](_0x2faaf7,_0x14b4d7);});if(_0x57ed9e){return _0x163dac['id'];}}}));}}return BPromise[_0x78d0('0x82')](_0x3de4dd)[_0x78d0('0x2d')](function(_0xbb60cd){_0x55978d=_(_0x55978d)[_0x78d0('0x83')](_0xbb60cd)[_0x78d0('0x84')]()[_0x78d0('0x85')]();return db[_0x78d0('0x38')][_0x78d0('0x52')]({'where':{'id':_0x1dc3f9[_0x78d0('0x4f')]['id']}})['then'](function(_0x372ec4){return db['sequelize'][_0x78d0('0x71')](function(_0x54bc78){return _0x372ec4[_0x78d0('0x86')](_0x1dc3f9[_0x78d0('0x3d')][_0x78d0('0x87')],{'transaction':_0x54bc78})[_0x78d0('0x2d')](function(){if(!_['isEmpty'](_0x55978d)){return _0x372ec4[_0x78d0('0x88')](_0x55978d,{'transaction':_0x54bc78});}})['then'](function(){_0x55978d[_0x78d0('0x89')](function(_0x2b142c){socket['emit'](_0x78d0('0x8a'),{'UserId':_0x2b142c,'OpenchannelQueueId':_0x372ec4['id']});});});});});});})[_0x78d0('0x2d')](respondWithStatusCode(_0x48ed1f,null))[_0x78d0('0x4d')](handleError(_0x48ed1f,null));};exports['addAgents']=function(_0x4b1e21,_0x3ef934,_0x4add04){return db[_0x78d0('0x38')]['find']({'where':{'id':_0x4b1e21[_0x78d0('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3ef934,null))[_0x78d0('0x2d')](function(_0x51e558){if(_0x51e558){return _0x51e558[_0x78d0('0x8b')](_0x4b1e21[_0x78d0('0x5a')]['ids'],_[_0x78d0('0x8c')](_0x4b1e21[_0x78d0('0x5a')],[_0x78d0('0x87'),'id'])||{})[_0x78d0('0x8d')](function(_0x387a62){for(var _0x13e15f=0x0;_0x13e15f<_0x4b1e21[_0x78d0('0x5a')][_0x78d0('0x87')][_0x78d0('0x69')];_0x13e15f+=0x1){socket['emit'](_0x78d0('0x74'),{'UserId':Number(_0x4b1e21[_0x78d0('0x5a')]['ids'][_0x13e15f]),'OpenchannelQueueId':Number(_0x4b1e21['params']['id'])});}return _0x387a62;});}})[_0x78d0('0x2d')](respondWithResult(_0x3ef934,null))[_0x78d0('0x4d')](handleError(_0x3ef934,null));};exports['removeAgents']=function(_0x500816,_0x3fb475,_0x3ad97d){return db[_0x78d0('0x38')][_0x78d0('0x52')]({'where':{'id':_0x500816[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x3fb475,null))[_0x78d0('0x2d')](function(_0x50f31c){if(_0x50f31c){return _0x50f31c[_0x78d0('0x88')](_0x500816[_0x78d0('0x3d')][_0x78d0('0x87')])[_0x78d0('0x2d')](function(){if(_[_0x78d0('0x8e')](_0x500816[_0x78d0('0x3d')][_0x78d0('0x87')])){for(var _0x4cfa2e=0x0;_0x4cfa2e<_0x500816['query'][_0x78d0('0x87')][_0x78d0('0x69')];_0x4cfa2e+=0x1){socket[_0x78d0('0x8f')]('userOpenchannelQueue:remove',{'UserId':Number(_0x500816['query']['ids'][_0x4cfa2e]),'OpenchannelQueueId':Number(_0x500816[_0x78d0('0x4f')]['id'])});}}else{socket['emit'](_0x78d0('0x8a'),{'UserId':Number(_0x500816[_0x78d0('0x3d')]['ids']),'OpenchannelQueueId':Number(_0x500816[_0x78d0('0x4f')]['id'])});}});}})[_0x78d0('0x2d')](respondWithStatusCode(_0x3fb475,null))['catch'](handleError(_0x3fb475,null));};exports[_0x78d0('0x90')]=function(_0x3b7c37,_0x4a2837,_0x5b3425){var _0x57e24b={};var _0x2a35a1={};var _0x59aaf3;var _0x20c3fe;return db['OpenchannelQueue'][_0x78d0('0x67')]({'where':{'id':_0x3b7c37[_0x78d0('0x4f')]['id']}})[_0x78d0('0x2d')](handleEntityNotFound(_0x4a2837,null))[_0x78d0('0x2d')](function(_0x8b8b67){if(_0x8b8b67){_0x59aaf3=_0x8b8b67;_0x2a35a1[_0x78d0('0x3c')]=_[_0x78d0('0x3e')](db[_0x78d0('0x5f')][_0x78d0('0x39')]);_0x2a35a1['query']=_['keys'](_0x3b7c37[_0x78d0('0x3d')]);_0x2a35a1[_0x78d0('0x3f')]=_[_0x78d0('0x40')](_0x2a35a1[_0x78d0('0x3c')],_0x2a35a1[_0x78d0('0x3d')]);_0x57e24b[_0x78d0('0x41')]=_['intersection'](_0x2a35a1['model'],qs[_0x78d0('0x42')](_0x3b7c37[_0x78d0('0x3d')][_0x78d0('0x42')]));_0x57e24b['attributes']=_0x57e24b['attributes'][_0x78d0('0x69')]?_0x57e24b[_0x78d0('0x41')]:_0x2a35a1['model'];_0x57e24b[_0x78d0('0x44')]=qs['sort'](_0x3b7c37[_0x78d0('0x3d')][_0x78d0('0x45')]);_0x57e24b[_0x78d0('0x46')]=qs[_0x78d0('0x3f')](_[_0x78d0('0x91')](_0x3b7c37[_0x78d0('0x3d')],_0x2a35a1[_0x78d0('0x3f')]));if(_0x3b7c37[_0x78d0('0x3d')]['filter']){_0x57e24b[_0x78d0('0x46')]=_[_0x78d0('0x49')](_0x57e24b[_0x78d0('0x46')],{'$or':_[_0x78d0('0x37')](_0x57e24b[_0x78d0('0x41')],function(_0x596f25){var _0x5546eb={};_0x5546eb[_0x596f25]={'$like':'%'+_0x3b7c37[_0x78d0('0x3d')][_0x78d0('0x47')]+'%'};return _0x5546eb;})});}_0x57e24b=_[_0x78d0('0x49')]({},_0x57e24b,_0x3b7c37['options']);return _0x59aaf3[_0x78d0('0x90')](_0x57e24b);}})[_0x78d0('0x2d')](function(_0x320cbd){if(_0x320cbd){_0x20c3fe=_0x320cbd[_0x78d0('0x69')];if(!_0x3b7c37[_0x78d0('0x3d')]['hasOwnProperty'](_0x78d0('0x43'))){_0x57e24b[_0x78d0('0x25')]=qs[_0x78d0('0x25')](_0x3b7c37[_0x78d0('0x3d')]['limit']);_0x57e24b['offset']=qs[_0x78d0('0x24')](_0x3b7c37[_0x78d0('0x3d')][_0x78d0('0x24')]);}return _0x59aaf3[_0x78d0('0x90')](_0x57e24b);}})[_0x78d0('0x2d')](function(_0x3e19f){if(_0x3e19f){return _0x3e19f?{'count':_0x20c3fe,'rows':_0x3e19f}:null;}})[_0x78d0('0x2d')](respondWithResult(_0x4a2837,null))['catch'](handleError(_0x4a2837,null));};
\ No newline at end of file
+var _0xd412=['user','role','OpenchannelQueues','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','pick','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','transaction','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','includes','union','isEmpty','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','omit','getAgents','rimraf','zip-dir','fast-json-patch','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','get','UserProfileResource','destroy','error','name','index','map','OpenchannelQueue','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body'];(function(_0x184aaa,_0x4b4b18){var _0xd574fb=function(_0x22ba54){while(--_0x22ba54){_0x184aaa['push'](_0x184aaa['shift']());}};_0xd574fb(++_0x4b4b18);}(_0xd412,0xc0));var _0x2d41=function(_0x40b241,_0x2ce6cc){_0x40b241=_0x40b241-0x0;var _0x22b4b1=_0xd412[_0x40b241];return _0x22b4b1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2d41('0x0'));var zipdir=require(_0x2d41('0x1'));var jsonpatch=require(_0x2d41('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2d41('0x3'));var path=require('path');var sox=require(_0x2d41('0x4'));var csv=require(_0x2d41('0x5'));var ejs=require(_0x2d41('0x6'));var fs=require('fs');var fs_extra=require(_0x2d41('0x7'));var _=require(_0x2d41('0x8'));var squel=require(_0x2d41('0x9'));var crypto=require(_0x2d41('0xa'));var jsforce=require(_0x2d41('0xb'));var deskjs=require(_0x2d41('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2d41('0xd'));var Redis=require('ioredis');var authService=require(_0x2d41('0xe'));var qs=require(_0x2d41('0xf'));var as=require(_0x2d41('0x10'));var hardwareService=require(_0x2d41('0x11'));var logger=require(_0x2d41('0x12'))(_0x2d41('0x13'));var utils=require(_0x2d41('0x14'));var config=require(_0x2d41('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2d41('0x16'))['db'];config[_0x2d41('0x17')]=_[_0x2d41('0x18')](config[_0x2d41('0x17')],{'host':_0x2d41('0x19'),'port':0x18eb});var socket=require(_0x2d41('0x1a'))(new Redis(config[_0x2d41('0x17')]));require(_0x2d41('0x1b'))[_0x2d41('0x1c')](socket);function respondWithStatusCode(_0x441457,_0x1f666a){_0x1f666a=_0x1f666a||0xcc;return function(_0x5de8aa){if(_0x5de8aa){return _0x441457['sendStatus'](_0x1f666a);}return _0x441457[_0x2d41('0x1d')](_0x1f666a)[_0x2d41('0x1e')]();};}function respondWithResult(_0x1bec23,_0x2b6877){_0x2b6877=_0x2b6877||0xc8;return function(_0x37eb47){if(_0x37eb47){return _0x1bec23[_0x2d41('0x1d')](_0x2b6877)[_0x2d41('0x1f')](_0x37eb47);}};}function respondWithFilteredResult(_0x4342c4,_0x1742d4){return function(_0x22353c){if(_0x22353c){var _0x307d9d=typeof _0x1742d4[_0x2d41('0x20')]==='undefined'&&typeof _0x1742d4['limit']===_0x2d41('0x21');var _0x53d3e3=_0x22353c[_0x2d41('0x22')];var _0x4b47fc=_0x307d9d?0x0:_0x1742d4[_0x2d41('0x20')];var _0x1d196f=_0x307d9d?_0x22353c[_0x2d41('0x22')]:_0x1742d4['offset']+_0x1742d4[_0x2d41('0x23')];var _0x4e982e;if(_0x1d196f>=_0x53d3e3){_0x1d196f=_0x53d3e3;_0x4e982e=0xc8;}else{_0x4e982e=0xce;}_0x4342c4[_0x2d41('0x1d')](_0x4e982e);return _0x4342c4[_0x2d41('0x24')](_0x2d41('0x25'),_0x4b47fc+'-'+_0x1d196f+'/'+_0x53d3e3)['json'](_0x22353c);}return null;};}function patchUpdates(_0x3cbfba){return function(_0x4e508f){try{jsonpatch['apply'](_0x4e508f,_0x3cbfba,!![]);}catch(_0x14dfd0){return BPromise[_0x2d41('0x26')](_0x14dfd0);}return _0x4e508f['save']();};}function saveUpdates(_0x225100,_0x109231){return function(_0x32f7a6){if(_0x32f7a6){return _0x32f7a6[_0x2d41('0x27')](_0x225100)['then'](function(_0x4c2a7e){return _0x4c2a7e;});}return null;};}function removeEntity(_0x5c14d7,_0x10c4f8){return function(_0x2efa10){if(_0x2efa10){return _0x2efa10['destroy']()[_0x2d41('0x28')](function(){var _0x32f9ae=_0x2efa10[_0x2d41('0x29')]({'plain':!![]});var _0x34df6a='OpenchannelQueues';return db[_0x2d41('0x2a')][_0x2d41('0x2b')]({'where':{'type':_0x34df6a,'resourceId':_0x32f9ae['id']}})[_0x2d41('0x28')](function(){return _0x2efa10;});})[_0x2d41('0x28')](function(){_0x5c14d7[_0x2d41('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11a51b,_0x1181a1){return function(_0x4ba588){if(!_0x4ba588){_0x11a51b['sendStatus'](0x194);}return _0x4ba588;};}function handleError(_0x3bcbdc,_0x14e66e){_0x14e66e=_0x14e66e||0x1f4;return function(_0x19aba0){logger[_0x2d41('0x2c')](_0x19aba0['stack']);if(_0x19aba0[_0x2d41('0x2d')]){delete _0x19aba0[_0x2d41('0x2d')];}_0x3bcbdc[_0x2d41('0x1d')](_0x14e66e)['send'](_0x19aba0);};}exports[_0x2d41('0x2e')]=function(_0x539122,_0x2870fd){var _0x579966={},_0x2fbf6c={},_0x2b0521={'count':0x0,'rows':[]};var _0x383041=_[_0x2d41('0x2f')](db[_0x2d41('0x30')][_0x2d41('0x31')],function(_0xc30cb5){return{'name':_0xc30cb5['fieldName'],'type':_0xc30cb5[_0x2d41('0x32')][_0x2d41('0x33')]};});_0x2fbf6c[_0x2d41('0x34')]=_[_0x2d41('0x2f')](_0x383041,_0x2d41('0x2d'));_0x2fbf6c[_0x2d41('0x35')]=_[_0x2d41('0x36')](_0x539122['query']);_0x2fbf6c['filters']=_[_0x2d41('0x37')](_0x2fbf6c['model'],_0x2fbf6c[_0x2d41('0x35')]);_0x579966[_0x2d41('0x38')]=_[_0x2d41('0x37')](_0x2fbf6c['model'],qs[_0x2d41('0x39')](_0x539122[_0x2d41('0x35')][_0x2d41('0x39')]));_0x579966[_0x2d41('0x38')]=_0x579966[_0x2d41('0x38')][_0x2d41('0x3a')]?_0x579966[_0x2d41('0x38')]:_0x2fbf6c[_0x2d41('0x34')];if(!_0x539122[_0x2d41('0x35')][_0x2d41('0x3b')](_0x2d41('0x3c'))){_0x579966[_0x2d41('0x23')]=qs[_0x2d41('0x23')](_0x539122[_0x2d41('0x35')]['limit']);_0x579966[_0x2d41('0x20')]=qs['offset'](_0x539122[_0x2d41('0x35')][_0x2d41('0x20')]);}_0x579966[_0x2d41('0x3d')]=qs[_0x2d41('0x3e')](_0x539122['query']['sort']);_0x579966[_0x2d41('0x3f')]=qs[_0x2d41('0x40')](_['pick'](_0x539122[_0x2d41('0x35')],_0x2fbf6c['filters']),_0x383041);if(_0x539122['query'][_0x2d41('0x41')]){_0x579966[_0x2d41('0x3f')]=_[_0x2d41('0x42')](_0x579966[_0x2d41('0x3f')],{'$or':_[_0x2d41('0x2f')](_0x383041,function(_0x4f00f8){if(_0x4f00f8[_0x2d41('0x32')]!=='VIRTUAL'){var _0x505eef={};_0x505eef[_0x4f00f8['name']]={'$like':'%'+_0x539122['query'][_0x2d41('0x41')]+'%'};return _0x505eef;}})});}_0x579966=_[_0x2d41('0x42')]({},_0x579966,_0x539122[_0x2d41('0x43')]);var _0x31d988={'where':_0x579966[_0x2d41('0x3f')]};return db[_0x2d41('0x30')][_0x2d41('0x22')](_0x31d988)['then'](function(_0x2279df){_0x2b0521[_0x2d41('0x22')]=_0x2279df;if(_0x539122['query'][_0x2d41('0x44')]){_0x579966[_0x2d41('0x45')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x2d41('0x46')](_0x579966);})['then'](function(_0x3d4ca9){_0x2b0521[_0x2d41('0x47')]=_0x3d4ca9;return _0x2b0521;})[_0x2d41('0x28')](respondWithFilteredResult(_0x2870fd,_0x579966))['catch'](handleError(_0x2870fd,null));};exports[_0x2d41('0x48')]=function(_0x4b6542,_0x244631){var _0x2eeeb0={'raw':!![],'where':{'id':_0x4b6542[_0x2d41('0x49')]['id']}},_0x34c8a1={};_0x34c8a1[_0x2d41('0x34')]=_[_0x2d41('0x36')](db['OpenchannelQueue'][_0x2d41('0x31')]);_0x34c8a1[_0x2d41('0x35')]=_['keys'](_0x4b6542[_0x2d41('0x35')]);_0x34c8a1[_0x2d41('0x40')]=_['intersection'](_0x34c8a1[_0x2d41('0x34')],_0x34c8a1[_0x2d41('0x35')]);_0x2eeeb0[_0x2d41('0x38')]=_['intersection'](_0x34c8a1[_0x2d41('0x34')],qs[_0x2d41('0x39')](_0x4b6542[_0x2d41('0x35')][_0x2d41('0x39')]));_0x2eeeb0['attributes']=_0x2eeeb0[_0x2d41('0x38')][_0x2d41('0x3a')]?_0x2eeeb0[_0x2d41('0x38')]:_0x34c8a1[_0x2d41('0x34')];if(_0x4b6542[_0x2d41('0x35')][_0x2d41('0x44')]){_0x2eeeb0['include']=[{'all':!![]}];}_0x2eeeb0=_[_0x2d41('0x42')]({},_0x2eeeb0,_0x4b6542['options']);return db['OpenchannelQueue'][_0x2d41('0x4a')](_0x2eeeb0)[_0x2d41('0x28')](handleEntityNotFound(_0x244631,null))['then'](respondWithResult(_0x244631,null))[_0x2d41('0x4b')](handleError(_0x244631,null));};exports[_0x2d41('0x4c')]=function(_0x5c5129,_0x5ba645){return db['OpenchannelQueue'][_0x2d41('0x4c')](_0x5c5129[_0x2d41('0x4d')],{})[_0x2d41('0x28')](function(_0x457431){var _0x616e82=_0x5c5129[_0x2d41('0x4e')][_0x2d41('0x29')]({'plain':!![]});if(!_0x616e82)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x616e82[_0x2d41('0x4f')]===_0x2d41('0x4e')){var _0x57c452=_0x457431[_0x2d41('0x29')]({'plain':!![]});var _0xe45ee3=_0x2d41('0x50');return db['UserProfileSection'][_0x2d41('0x4a')]({'where':{'name':_0xe45ee3,'userProfileId':_0x616e82[_0x2d41('0x51')]},'raw':!![]})[_0x2d41('0x28')](function(_0x59a5ff){if(_0x59a5ff&&_0x59a5ff['autoAssociation']===0x0){return db['UserProfileResource'][_0x2d41('0x4c')]({'name':_0x57c452[_0x2d41('0x2d')],'resourceId':_0x57c452['id'],'type':_0x59a5ff[_0x2d41('0x2d')],'sectionId':_0x59a5ff['id']},{})[_0x2d41('0x28')](function(){return _0x457431;});}else{return _0x457431;}})['catch'](function(_0x364a2d){logger[_0x2d41('0x2c')](_0x2d41('0x52'),_0x364a2d);throw _0x364a2d;});}return _0x457431;})['then'](respondWithResult(_0x5ba645,0xc9))[_0x2d41('0x4b')](handleError(_0x5ba645,null));};exports[_0x2d41('0x27')]=function(_0x15b7aa,_0x306c08){if(_0x15b7aa[_0x2d41('0x4d')]['id']){delete _0x15b7aa[_0x2d41('0x4d')]['id'];}return db[_0x2d41('0x30')]['find']({'where':{'id':_0x15b7aa[_0x2d41('0x49')]['id']}})['then'](handleEntityNotFound(_0x306c08,null))[_0x2d41('0x28')](saveUpdates(_0x15b7aa[_0x2d41('0x4d')],null))[_0x2d41('0x28')](respondWithResult(_0x306c08,null))['catch'](handleError(_0x306c08,null));};exports[_0x2d41('0x2b')]=function(_0x19de03,_0x17a7c9){return db[_0x2d41('0x30')][_0x2d41('0x4a')]({'where':{'id':_0x19de03[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](handleEntityNotFound(_0x17a7c9,null))[_0x2d41('0x28')](removeEntity(_0x17a7c9,null))[_0x2d41('0x4b')](handleError(_0x17a7c9,null));};exports[_0x2d41('0x53')]=function(_0x2c649e,_0x27eac4){return db[_0x2d41('0x30')][_0x2d41('0x53')]()['then'](respondWithResult(_0x27eac4,null))[_0x2d41('0x4b')](handleError(_0x27eac4,null));};exports[_0x2d41('0x54')]=function(_0x291caf,_0x16d2b9,_0x88ccfb){var _0x4d5770={'raw':!![],'where':{}},_0x572b06={},_0x160a11;return db['OpenchannelQueue'][_0x2d41('0x55')]({'where':{'id':_0x291caf[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](handleEntityNotFound(_0x16d2b9,null))[_0x2d41('0x28')](function(_0x309a27){if(_0x309a27){_0x160a11=_0x309a27[_0x2d41('0x29')]({'plain':!![]});_0x572b06[_0x2d41('0x34')]=_[_0x2d41('0x36')](db[_0x2d41('0x56')]['rawAttributes']);_0x572b06[_0x2d41('0x35')]=_[_0x2d41('0x36')](_0x291caf[_0x2d41('0x35')]);_0x572b06[_0x2d41('0x40')]=_[_0x2d41('0x37')](_0x572b06[_0x2d41('0x34')],_0x572b06['query']);_0x4d5770[_0x2d41('0x38')]=_['intersection'](_0x572b06[_0x2d41('0x34')],qs[_0x2d41('0x39')](_0x291caf['query'][_0x2d41('0x39')]));_0x4d5770[_0x2d41('0x38')]=_0x4d5770[_0x2d41('0x38')]['length']?_0x4d5770['attributes']:_0x572b06[_0x2d41('0x34')];if(!_0x291caf[_0x2d41('0x35')][_0x2d41('0x3b')](_0x2d41('0x3c'))){_0x4d5770[_0x2d41('0x23')]=qs[_0x2d41('0x23')](_0x291caf[_0x2d41('0x35')][_0x2d41('0x23')]);_0x4d5770['offset']=qs[_0x2d41('0x20')](_0x291caf[_0x2d41('0x35')][_0x2d41('0x20')]);}_0x4d5770[_0x2d41('0x3d')]=qs[_0x2d41('0x3e')](_0x291caf[_0x2d41('0x35')][_0x2d41('0x3e')]);_0x4d5770[_0x2d41('0x3f')]=qs[_0x2d41('0x40')](_[_0x2d41('0x57')](_0x291caf[_0x2d41('0x35')],_0x572b06['filters']));_0x4d5770[_0x2d41('0x3f')][_0x2d41('0x58')]=_0x309a27['id'];if(_0x291caf[_0x2d41('0x35')][_0x2d41('0x41')]){_0x4d5770[_0x2d41('0x3f')]=_[_0x2d41('0x42')](_0x4d5770[_0x2d41('0x3f')],{'$or':_[_0x2d41('0x2f')](_0x4d5770[_0x2d41('0x38')],function(_0x3113aa){var _0x5cec50={};_0x5cec50[_0x3113aa]={'$like':'%'+_0x291caf[_0x2d41('0x35')]['filter']+'%'};return _0x5cec50;})});}_0x4d5770=_[_0x2d41('0x42')]({},_0x4d5770,_0x291caf[_0x2d41('0x43')]);return db[_0x2d41('0x56')][_0x2d41('0x46')](_0x4d5770);}})[_0x2d41('0x28')](function(_0x9ddc8a){if(_0x9ddc8a){return db[_0x2d41('0x59')][_0x2d41('0x5a')]({'where':{'id':_[_0x2d41('0x2f')](_0x9ddc8a,_0x2d41('0x5b')),'role':_0x2d41('0x5c')},'attributes':['id',_0x2d41('0x2d'),_0x2d41('0x5d'),_0x2d41('0x5e'),_0x2d41('0x5f')]});}})[_0x2d41('0x28')](function(_0x9e6efd){if(_0x9e6efd){return{'count':_0x9e6efd['count'],'rows':_['map'](_0x9e6efd[_0x2d41('0x47')],function(_0x248d14){return{'membername':_0x248d14[_0x2d41('0x2d')],'UserId':_0x248d14['id'],'queue_name':_0x160a11[_0x2d41('0x2d')],'OpenchannelQueueId':_0x160a11['id'],'interface':util[_0x2d41('0x60')](_0x2d41('0x61'),'SIP',_0x248d14[_0x2d41('0x2d')]),'penalty':0x0,'paused':_0x248d14[_0x2d41('0x5d')],'createdAt':_0x248d14['createdAt'],'updatedAt':_0x248d14['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x16d2b9,_0x4d5770))[_0x2d41('0x4b')](handleError(_0x16d2b9,null));};exports[_0x2d41('0x62')]=function(_0x3961fe,_0x25e9cf,_0x1a6ba6){var _0x22718d={};var _0x7fb87={};var _0x1475a0;var _0x5636a1;return db[_0x2d41('0x30')][_0x2d41('0x55')]({'where':{'id':_0x3961fe[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](handleEntityNotFound(_0x25e9cf,null))[_0x2d41('0x28')](function(_0x15cad9){if(_0x15cad9){_0x1475a0=_0x15cad9;_0x7fb87[_0x2d41('0x34')]=_['keys'](db[_0x2d41('0x63')][_0x2d41('0x31')]);_0x7fb87[_0x2d41('0x35')]=_[_0x2d41('0x36')](_0x3961fe[_0x2d41('0x35')]);_0x7fb87[_0x2d41('0x40')]=_[_0x2d41('0x37')](_0x7fb87[_0x2d41('0x34')],_0x7fb87[_0x2d41('0x35')]);_0x22718d[_0x2d41('0x38')]=_[_0x2d41('0x37')](_0x7fb87['model'],qs[_0x2d41('0x39')](_0x3961fe[_0x2d41('0x35')]['fields']));_0x22718d[_0x2d41('0x38')]=_0x22718d[_0x2d41('0x38')]['length']?_0x22718d[_0x2d41('0x38')]:_0x7fb87[_0x2d41('0x34')];_0x22718d[_0x2d41('0x3d')]=qs[_0x2d41('0x3e')](_0x3961fe['query']['sort']);_0x22718d[_0x2d41('0x3f')]=qs[_0x2d41('0x40')](_['pick'](_0x3961fe['query'],_0x7fb87[_0x2d41('0x40')]));if(_0x3961fe[_0x2d41('0x35')][_0x2d41('0x41')]){_0x22718d[_0x2d41('0x3f')]=_[_0x2d41('0x42')](_0x22718d[_0x2d41('0x3f')],{'$or':_[_0x2d41('0x2f')](_0x22718d[_0x2d41('0x38')],function(_0x3c66cb){var _0x440d1e={};_0x440d1e[_0x3c66cb]={'$like':'%'+_0x3961fe[_0x2d41('0x35')]['filter']+'%'};return _0x440d1e;})});}_0x22718d=_[_0x2d41('0x42')]({},_0x22718d,_0x3961fe[_0x2d41('0x43')]);return _0x1475a0[_0x2d41('0x62')](_0x22718d);}})[_0x2d41('0x28')](function(_0x40f70a){if(_0x40f70a){_0x5636a1=_0x40f70a['length'];if(!_0x3961fe[_0x2d41('0x35')]['hasOwnProperty'](_0x2d41('0x3c'))){_0x22718d['limit']=qs[_0x2d41('0x23')](_0x3961fe['query']['limit']);_0x22718d[_0x2d41('0x20')]=qs[_0x2d41('0x20')](_0x3961fe['query'][_0x2d41('0x20')]);}return _0x1475a0[_0x2d41('0x62')](_0x22718d);}})[_0x2d41('0x28')](function(_0x2fd2ad){if(_0x2fd2ad){return _0x2fd2ad?{'count':_0x5636a1,'rows':_0x2fd2ad}:null;}})[_0x2d41('0x28')](respondWithResult(_0x25e9cf,null))['catch'](handleError(_0x25e9cf,null));};exports[_0x2d41('0x64')]=function(_0x4515fd,_0x39c9bf,_0x7af21f){var _0x3286d6=_0x4515fd['body'][_0x2d41('0x65')];return db['Team']['findAll']({'where':{'id':_0x3286d6},'attributes':['id'],'include':[{'model':db[_0x2d41('0x59')],'as':_0x2d41('0x66'),'attributes':['id',_0x2d41('0x2d'),_0x2d41('0x67'),'voicePause',_0x2d41('0x68')],'raw':!![]}]})[_0x2d41('0x28')](function(_0x20a32e){if(_0x20a32e){var _0x154d0f=_[_0x2d41('0x69')](_0x20a32e,function(_0x5a8784){var _0x1eb4bf=_0x5a8784['get']({'plain':!![]});return _0x1eb4bf[_0x2d41('0x66')];});return db[_0x2d41('0x30')][_0x2d41('0x4a')]({'where':{'id':_0x4515fd[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](function(_0x2002b0){return db['sequelize'][_0x2d41('0x6a')](function(_0x3438a9){return _0x2002b0[_0x2d41('0x64')](_0x3286d6,{'transaction':_0x3438a9})['then'](function(){return BPromise['each'](_0x154d0f,function(_0x4efb2f){return db['UserOpenchannelQueue'][_0x2d41('0x6b')]({'where':{'UserId':_0x4efb2f['id'],'OpenchannelQueueId':_0x4515fd[_0x2d41('0x49')]['id']},'transaction':_0x3438a9});});})[_0x2d41('0x28')](function(){_0x154d0f['forEach'](function(_0x31767e){socket[_0x2d41('0x6c')](_0x2d41('0x6d'),{'UserId':_0x31767e['id'],'OpenchannelQueueId':_0x2002b0['id']});});});});});}})['then'](respondWithStatusCode(_0x39c9bf,null))[_0x2d41('0x4b')](handleError(_0x39c9bf,null));};exports[_0x2d41('0x6e')]=function(_0x15197b,_0x494aaa,_0x2e69d6){return db['Team'][_0x2d41('0x46')]({'where':{'id':_0x15197b[_0x2d41('0x35')][_0x2d41('0x65')]},'attributes':['id'],'include':[{'model':db[_0x2d41('0x59')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x2d41('0x28')](handleEntityNotFound(_0x494aaa,null))['then'](function(_0x22b3f4){var _0x5ba633=_[_0x2d41('0x2f')](_0x22b3f4,'id');var _0x402f66=[];var _0x3dd3f7=[];var _0x5da369=squel[_0x2d41('0x6f')]();_0x5da369[_0x2d41('0x70')](_0x2d41('0x71'))[_0x2d41('0x72')](_0x2d41('0x73'),'tq')[_0x2d41('0x74')](_0x2d41('0x75'),'ut',_0x2d41('0x76'))[_0x2d41('0x3f')](_0x2d41('0x77'),_0x15197b['params']['id']);for(var _0x2892e2=0x0;_0x2892e2<_0x22b3f4[_0x2d41('0x3a')];_0x2892e2+=0x1){let _0x326788=_0x22b3f4[_0x2892e2];for(var _0x55042c=0x0;_0x55042c<_0x326788[_0x2d41('0x66')][_0x2d41('0x3a')];_0x55042c+=0x1){let _0x2b61d4=_0x326788['Agents'][_0x55042c];var _0x1ce888=_0x5da369['clone']();_0x1ce888[_0x2d41('0x3f')]('ut.UserId\x20=\x20?',_0x2b61d4['id']);_0x3dd3f7[_0x2d41('0x78')](db[_0x2d41('0x79')][_0x2d41('0x35')](_0x1ce888[_0x2d41('0x7a')](),{'type':db[_0x2d41('0x79')]['QueryTypes'][_0x2d41('0x7b')]})['then'](function(_0x359e06){if(_0x359e06['length']===0x1){return _0x2b61d4['id'];}else{var _0x2ad596=_[_0x2d41('0x7c')](_['map'](_0x359e06,_0x2d41('0x7d')),function(_0x39d02b){return _[_0x2d41('0x7e')](_0x5ba633,_0x39d02b);});if(_0x2ad596){return _0x2b61d4['id'];}}}));}}return BPromise['all'](_0x3dd3f7)[_0x2d41('0x28')](function(_0x703834){_0x402f66=_(_0x402f66)[_0x2d41('0x7f')](_0x703834)['compact']()['value']();return db[_0x2d41('0x30')][_0x2d41('0x4a')]({'where':{'id':_0x15197b['params']['id']}})[_0x2d41('0x28')](function(_0x51080e){return db[_0x2d41('0x79')][_0x2d41('0x6a')](function(_0x5944a5){return _0x51080e[_0x2d41('0x6e')](_0x15197b[_0x2d41('0x35')][_0x2d41('0x65')],{'transaction':_0x5944a5})[_0x2d41('0x28')](function(){if(!_[_0x2d41('0x80')](_0x402f66)){return _0x51080e[_0x2d41('0x81')](_0x402f66,{'transaction':_0x5944a5});}})[_0x2d41('0x28')](function(){_0x402f66[_0x2d41('0x82')](function(_0x550ef7){socket[_0x2d41('0x6c')](_0x2d41('0x83'),{'UserId':_0x550ef7,'OpenchannelQueueId':_0x51080e['id']});});});});});});})[_0x2d41('0x28')](respondWithStatusCode(_0x494aaa,null))[_0x2d41('0x4b')](handleError(_0x494aaa,null));};exports[_0x2d41('0x84')]=function(_0x153ff7,_0xe659e4,_0x700837){return db[_0x2d41('0x30')]['find']({'where':{'id':_0x153ff7[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](handleEntityNotFound(_0xe659e4,null))[_0x2d41('0x28')](function(_0xb5ff38){if(_0xb5ff38){return _0xb5ff38[_0x2d41('0x84')](_0x153ff7['body'][_0x2d41('0x65')],_[_0x2d41('0x85')](_0x153ff7[_0x2d41('0x4d')],[_0x2d41('0x65'),'id'])||{})['spread'](function(_0x1912c7){for(var _0x474bd1=0x0;_0x474bd1<_0x153ff7[_0x2d41('0x4d')][_0x2d41('0x65')][_0x2d41('0x3a')];_0x474bd1+=0x1){socket['emit'](_0x2d41('0x6d'),{'UserId':Number(_0x153ff7[_0x2d41('0x4d')][_0x2d41('0x65')][_0x474bd1]),'OpenchannelQueueId':Number(_0x153ff7[_0x2d41('0x49')]['id'])});}return _0x1912c7;});}})[_0x2d41('0x28')](respondWithResult(_0xe659e4,null))[_0x2d41('0x4b')](handleError(_0xe659e4,null));};exports[_0x2d41('0x81')]=function(_0x65fa84,_0x3eb5ba,_0x5bd90d){return db['OpenchannelQueue'][_0x2d41('0x4a')]({'where':{'id':_0x65fa84[_0x2d41('0x49')]['id']}})['then'](handleEntityNotFound(_0x3eb5ba,null))[_0x2d41('0x28')](function(_0x18c87b){if(_0x18c87b){return _0x18c87b[_0x2d41('0x81')](_0x65fa84[_0x2d41('0x35')][_0x2d41('0x65')])[_0x2d41('0x28')](function(){if(_['isArray'](_0x65fa84[_0x2d41('0x35')][_0x2d41('0x65')])){for(var _0x27ad1c=0x0;_0x27ad1c<_0x65fa84[_0x2d41('0x35')]['ids']['length'];_0x27ad1c+=0x1){socket[_0x2d41('0x6c')](_0x2d41('0x83'),{'UserId':Number(_0x65fa84[_0x2d41('0x35')][_0x2d41('0x65')][_0x27ad1c]),'OpenchannelQueueId':Number(_0x65fa84['params']['id'])});}}else{socket[_0x2d41('0x6c')](_0x2d41('0x83'),{'UserId':Number(_0x65fa84[_0x2d41('0x35')][_0x2d41('0x65')]),'OpenchannelQueueId':Number(_0x65fa84[_0x2d41('0x49')]['id'])});}});}})[_0x2d41('0x28')](respondWithStatusCode(_0x3eb5ba,null))[_0x2d41('0x4b')](handleError(_0x3eb5ba,null));};exports[_0x2d41('0x86')]=function(_0x497ac3,_0x317d67,_0x33b8f9){var _0x2dbb9d={};var _0x41cb58={};var _0x181598;var _0x572e00;return db[_0x2d41('0x30')][_0x2d41('0x55')]({'where':{'id':_0x497ac3[_0x2d41('0x49')]['id']}})[_0x2d41('0x28')](handleEntityNotFound(_0x317d67,null))[_0x2d41('0x28')](function(_0x2987e1){if(_0x2987e1){_0x181598=_0x2987e1;_0x41cb58[_0x2d41('0x34')]=_['keys'](db['User'][_0x2d41('0x31')]);_0x41cb58[_0x2d41('0x35')]=_[_0x2d41('0x36')](_0x497ac3[_0x2d41('0x35')]);_0x41cb58[_0x2d41('0x40')]=_[_0x2d41('0x37')](_0x41cb58[_0x2d41('0x34')],_0x41cb58[_0x2d41('0x35')]);_0x2dbb9d[_0x2d41('0x38')]=_[_0x2d41('0x37')](_0x41cb58['model'],qs[_0x2d41('0x39')](_0x497ac3[_0x2d41('0x35')][_0x2d41('0x39')]));_0x2dbb9d['attributes']=_0x2dbb9d[_0x2d41('0x38')][_0x2d41('0x3a')]?_0x2dbb9d['attributes']:_0x41cb58[_0x2d41('0x34')];_0x2dbb9d['order']=qs[_0x2d41('0x3e')](_0x497ac3[_0x2d41('0x35')]['sort']);_0x2dbb9d[_0x2d41('0x3f')]=qs[_0x2d41('0x40')](_[_0x2d41('0x57')](_0x497ac3[_0x2d41('0x35')],_0x41cb58[_0x2d41('0x40')]));if(_0x497ac3[_0x2d41('0x35')]['filter']){_0x2dbb9d[_0x2d41('0x3f')]=_[_0x2d41('0x42')](_0x2dbb9d[_0x2d41('0x3f')],{'$or':_[_0x2d41('0x2f')](_0x2dbb9d['attributes'],function(_0x1ea787){var _0x257126={};_0x257126[_0x1ea787]={'$like':'%'+_0x497ac3[_0x2d41('0x35')][_0x2d41('0x41')]+'%'};return _0x257126;})});}_0x2dbb9d=_[_0x2d41('0x42')]({},_0x2dbb9d,_0x497ac3[_0x2d41('0x43')]);return _0x181598[_0x2d41('0x86')](_0x2dbb9d);}})[_0x2d41('0x28')](function(_0x44fe2b){if(_0x44fe2b){_0x572e00=_0x44fe2b[_0x2d41('0x3a')];if(!_0x497ac3[_0x2d41('0x35')]['hasOwnProperty'](_0x2d41('0x3c'))){_0x2dbb9d['limit']=qs[_0x2d41('0x23')](_0x497ac3[_0x2d41('0x35')][_0x2d41('0x23')]);_0x2dbb9d[_0x2d41('0x20')]=qs[_0x2d41('0x20')](_0x497ac3[_0x2d41('0x35')][_0x2d41('0x20')]);}return _0x181598[_0x2d41('0x86')](_0x2dbb9d);}})[_0x2d41('0x28')](function(_0x549658){if(_0x549658){return _0x549658?{'count':_0x572e00,'rows':_0x549658}:null;}})[_0x2d41('0x28')](respondWithResult(_0x317d67,null))['catch'](handleError(_0x317d67,null));};
\ No newline at end of file
index edf9a32..1d8fed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd197=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save'];(function(_0x4e18a,_0x2d220a){var _0x56cc08=function(_0x1a5e7e){while(--_0x1a5e7e){_0x4e18a['push'](_0x4e18a['shift']());}};_0x56cc08(++_0x2d220a);}(_0xd197,0x18b));var _0x7d19=function(_0x40dbe5,_0x21dd45){_0x40dbe5=_0x40dbe5-0x0;var _0x3038a5=_0xd197[_0x40dbe5];return _0x3038a5;};'use strict';var EventEmitter=require(_0x7d19('0x0'));var OpenchannelQueue=require(_0x7d19('0x1'))['db'][_0x7d19('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x7d19('0x3')](0x0);var events={'afterCreate':_0x7d19('0x4'),'afterUpdate':_0x7d19('0x5'),'afterDestroy':_0x7d19('0x6')};function emitEvent(_0x56bff2){return function(_0x3728b9,_0x437a8c,_0x1741c9){OpenchannelQueueEvents[_0x7d19('0x7')](_0x56bff2+':'+_0x3728b9['id'],_0x3728b9);OpenchannelQueueEvents[_0x7d19('0x7')](_0x56bff2,_0x3728b9);_0x1741c9(null);};}for(var e in events){if(events[_0x7d19('0x8')](e)){var event=events[e];OpenchannelQueue[_0x7d19('0x9')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xa00c=['save','remove','emit','hasOwnProperty','hook','exports','events','OpenchannelQueue','setMaxListeners'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa00c,0x1a4));var _0xca00=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa00c[_0x19e35c];return _0x3e1fe8;};'use strict';var EventEmitter=require(_0xca00('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0xca00('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xca00('0x2')](0x0);var events={'afterCreate':_0xca00('0x3'),'afterUpdate':'update','afterDestroy':_0xca00('0x4')};function emitEvent(_0xa769b3){return function(_0xf4c38d,_0x3e5a06,_0xb87bca){OpenchannelQueueEvents[_0xca00('0x5')](_0xa769b3+':'+_0xf4c38d['id'],_0xf4c38d);OpenchannelQueueEvents['emit'](_0xa769b3,_0xf4c38d);_0xb87bca(null);};}for(var e in events){if(events[_0xca00('0x6')](e)){var event=events[e];OpenchannelQueue[_0xca00('0x7')](e,emitEvent(event));}}module[_0xca00('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index 40ba4c1..cf1b945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c46=['api','moment','bluebird','path','rimraf','../../config/environment','exports','define','OpenchannelQueue','openchannel_queues','lodash','util'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x3c46,0xfa));var _0x63c4=function(_0x386ed8,_0x2e6ae9){_0x386ed8=_0x386ed8-0x0;var _0x1fbe5e=_0x3c46[_0x386ed8];return _0x1fbe5e;};'use strict';var _=require(_0x63c4('0x0'));var util=require(_0x63c4('0x1'));var logger=require('../../config/logger')(_0x63c4('0x2'));var moment=require(_0x63c4('0x3'));var BPromise=require(_0x63c4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x63c4('0x5'));var rimraf=require(_0x63c4('0x6'));var config=require(_0x63c4('0x7'));var attributes=require('./openchannelQueue.attributes');module[_0x63c4('0x8')]=function(_0x2a9c7b,_0x5ddec0){return _0x2a9c7b[_0x63c4('0x9')](_0x63c4('0xa'),attributes,{'tableName':_0x63c4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0492=['request-promise','path','rimraf','./openchannelQueue.attributes','exports','OpenchannelQueue','openchannel_queues','lodash','util','api','moment','bluebird'];(function(_0x2fb1b4,_0x2c35f8){var _0x2d2db9=function(_0x100e54){while(--_0x100e54){_0x2fb1b4['push'](_0x2fb1b4['shift']());}};_0x2d2db9(++_0x2c35f8);}(_0x0492,0xd3));var _0x2049=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x0492[_0x2261ce];return _0x524640;};'use strict';var _=require(_0x2049('0x0'));var util=require(_0x2049('0x1'));var logger=require('../../config/logger')(_0x2049('0x2'));var moment=require(_0x2049('0x3'));var BPromise=require(_0x2049('0x4'));var rp=require(_0x2049('0x5'));var fs=require('fs');var path=require(_0x2049('0x6'));var rimraf=require(_0x2049('0x7'));var config=require('../../config/environment');var attributes=require(_0x2049('0x8'));module[_0x2049('0x9')]=function(_0x30a7c5,_0x366142){return _0x30a7c5['define'](_0x2049('0xa'),attributes,{'tableName':_0x2049('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc282cb..2d8aa9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c8=['stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','include','map','model','attributes','ShowOpenchannelQueue','find','lodash','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0x29c8,0xd0));var _0x829c=function(_0xfcedf2,_0xfe4de2){_0xfcedf2=_0xfcedf2-0x0;var _0x416d2e=_0x29c8[_0xfcedf2];return _0x416d2e;};'use strict';var _=require(_0x829c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x829c('0x1'));var fs=require('fs');var Redis=require(_0x829c('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x829c('0x3'))('rpc');var config=require(_0x829c('0x4'));var jayson=require(_0x829c('0x5'));var client=jayson['client'][_0x829c('0x6')]({'port':0x232a});config['redis']=_[_0x829c('0x7')](config[_0x829c('0x8')],{'host':_0x829c('0x9'),'port':0x18eb});var socket=require(_0x829c('0xa'))(new Redis(config['redis']));require(_0x829c('0xb'))[_0x829c('0xc')](socket);function respondWithRpcPromise(_0x4c1b25,_0x39239b,_0x278879){return new BPromise(function(_0x4f8c90,_0x191571){return client[_0x829c('0xd')](_0x4c1b25,_0x278879)[_0x829c('0xe')](function(_0x13bd50){logger[_0x829c('0xf')](_0x829c('0x10'),_0x39239b,'request\x20sent');logger[_0x829c('0x11')](_0x829c('0x12'),_0x39239b,_0x829c('0x13'),JSON[_0x829c('0x14')](_0x13bd50));if(_0x13bd50[_0x829c('0x15')]){if(_0x13bd50[_0x829c('0x15')][_0x829c('0x16')]===0x1f4){logger[_0x829c('0x15')](_0x829c('0x10'),_0x39239b,_0x13bd50['error'][_0x829c('0x17')]);return _0x191571(_0x13bd50[_0x829c('0x15')]['message']);}logger[_0x829c('0x15')](_0x829c('0x10'),_0x39239b,_0x13bd50[_0x829c('0x15')]['message']);return _0x4f8c90(_0x13bd50[_0x829c('0x15')][_0x829c('0x17')]);}else{logger[_0x829c('0xf')](_0x829c('0x10'),_0x39239b,_0x829c('0x13'));_0x4f8c90(_0x13bd50[_0x829c('0x18')][_0x829c('0x17')]);}})[_0x829c('0x19')](function(_0xa14a1b){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x39239b,_0xa14a1b);_0x191571(_0xa14a1b);});});}exports[_0x829c('0x1a')]=function(_0x1baabf){var _0x2cf583=this;return new Promise(function(_0x396b96,_0x1ae32d){return db[_0x829c('0x1b')][_0x829c('0x1c')]({'raw':_0x1baabf[_0x829c('0x1d')]?_0x1baabf[_0x829c('0x1d')][_0x829c('0x1e')]===undefined?!![]:![]:!![],'where':_0x1baabf['options']?_0x1baabf['options'][_0x829c('0x1f')]||null:null,'attributes':_0x1baabf[_0x829c('0x1d')]?_0x1baabf['options']['attributes']||null:null,'limit':_0x1baabf[_0x829c('0x1d')]?_0x1baabf[_0x829c('0x1d')]['limit']||null:null,'include':_0x1baabf[_0x829c('0x1d')]?_0x1baabf[_0x829c('0x1d')][_0x829c('0x20')]?_[_0x829c('0x21')](_0x1baabf['options'][_0x829c('0x20')],function(_0x4276ad){return{'model':db[_0x4276ad[_0x829c('0x22')]],'as':_0x4276ad['as'],'attributes':_0x4276ad[_0x829c('0x23')],'include':_0x4276ad[_0x829c('0x20')]?_[_0x829c('0x21')](_0x4276ad[_0x829c('0x20')],function(_0x1f9024){return{'model':db[_0x1f9024['model']],'as':_0x1f9024['as'],'attributes':_0x1f9024[_0x829c('0x23')],'include':_0x1f9024[_0x829c('0x20')]?_['map'](_0x1f9024[_0x829c('0x20')],function(_0x33632c){return{'model':db[_0x33632c[_0x829c('0x22')]],'as':_0x33632c['as'],'attributes':_0x33632c[_0x829c('0x23')]};}):[]};}):[]};}):[]:[]})[_0x829c('0xe')](function(_0x4704c2){logger[_0x829c('0xf')](_0x829c('0x1a'),_0x1baabf);logger[_0x829c('0x11')](_0x829c('0x1a'),_0x1baabf,JSON[_0x829c('0x14')](_0x4704c2));_0x396b96(_0x4704c2);})[_0x829c('0x19')](function(_0x460381){logger[_0x829c('0x15')](_0x829c('0x1a'),_0x460381[_0x829c('0x17')],_0x1baabf);_0x1ae32d(_0x2cf583[_0x829c('0x15')](0x1f4,_0x460381[_0x829c('0x17')]));});});};exports[_0x829c('0x24')]=function(_0x1e9f50){var _0x4891e7=this;return new Promise(function(_0x23003e,_0x55ab51){return db[_0x829c('0x1b')][_0x829c('0x25')]({'raw':_0x1e9f50[_0x829c('0x1d')]?_0x1e9f50['options']['raw']===undefined?!![]:![]:!![],'where':_0x1e9f50[_0x829c('0x1d')]?_0x1e9f50[_0x829c('0x1d')]['where']||null:null,'attributes':_0x1e9f50[_0x829c('0x1d')]?_0x1e9f50[_0x829c('0x1d')][_0x829c('0x23')]||null:null,'include':_0x1e9f50[_0x829c('0x1d')]?_0x1e9f50[_0x829c('0x1d')][_0x829c('0x20')]?_['map'](_0x1e9f50[_0x829c('0x1d')][_0x829c('0x20')],function(_0x128f88){return{'model':db[_0x128f88['model']],'as':_0x128f88['as'],'attributes':_0x128f88[_0x829c('0x23')],'include':_0x128f88[_0x829c('0x20')]?_['map'](_0x128f88[_0x829c('0x20')],function(_0x14b3f9){return{'model':db[_0x14b3f9[_0x829c('0x22')]],'as':_0x14b3f9['as'],'attributes':_0x14b3f9['attributes'],'include':_0x14b3f9[_0x829c('0x20')]?_[_0x829c('0x21')](_0x14b3f9[_0x829c('0x20')],function(_0x540fa0){return{'model':db[_0x540fa0[_0x829c('0x22')]],'as':_0x540fa0['as'],'attributes':_0x540fa0[_0x829c('0x23')]};}):[]};}):[]};}):[]:[]})[_0x829c('0xe')](function(_0x523bb3){logger[_0x829c('0xf')](_0x829c('0x24'),_0x1e9f50);logger['debug'](_0x829c('0x24'),_0x1e9f50,JSON[_0x829c('0x14')](_0x523bb3));_0x23003e(_0x523bb3);})[_0x829c('0x19')](function(_0x24682b){logger['error']('ShowOpenchannelQueue',_0x24682b[_0x829c('0x17')],_0x1e9f50);_0x55ab51(_0x4891e7['error'](0x1f4,_0x24682b[_0x829c('0x17')]));});});};
\ No newline at end of file
+var _0xa88e=['catch','GetOpenchannelQueue','OpenchannelQueue','options','raw','where','attributes','limit','include','model','map','ShowOpenchannelQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x1d35a3,_0x18d2ee){var _0x5acd09=function(_0x52c193){while(--_0x52c193){_0x1d35a3['push'](_0x1d35a3['shift']());}};_0x5acd09(++_0x18d2ee);}(_0xa88e,0xde));var _0xea88=function(_0x6e83dc,_0x2540b3){_0x6e83dc=_0x6e83dc-0x0;var _0x5fed37=_0xa88e[_0x6e83dc];return _0x5fed37;};'use strict';var _=require('lodash');var util=require(_0xea88('0x0'));var moment=require(_0xea88('0x1'));var BPromise=require(_0xea88('0x2'));var rs=require(_0xea88('0x3'));var fs=require('fs');var Redis=require(_0xea88('0x4'));var db=require(_0xea88('0x5'))['db'];var utils=require(_0xea88('0x6'));var logger=require(_0xea88('0x7'))(_0xea88('0x8'));var config=require(_0xea88('0x9'));var jayson=require(_0xea88('0xa'));var client=jayson['client'][_0xea88('0xb')]({'port':0x232a});config[_0xea88('0xc')]=_[_0xea88('0xd')](config[_0xea88('0xc')],{'host':_0xea88('0xe'),'port':0x18eb});var socket=require(_0xea88('0xf'))(new Redis(config[_0xea88('0xc')]));require(_0xea88('0x10'))[_0xea88('0x11')](socket);function respondWithRpcPromise(_0x50998a,_0x3b78ed,_0x903a1d){return new BPromise(function(_0x3ab5a,_0x5605b1){return client[_0xea88('0x12')](_0x50998a,_0x903a1d)[_0xea88('0x13')](function(_0x1a5265){logger[_0xea88('0x14')](_0xea88('0x15'),_0x3b78ed,_0xea88('0x16'));logger[_0xea88('0x17')](_0xea88('0x18'),_0x3b78ed,_0xea88('0x16'),JSON[_0xea88('0x19')](_0x1a5265));if(_0x1a5265[_0xea88('0x1a')]){if(_0x1a5265[_0xea88('0x1a')][_0xea88('0x1b')]===0x1f4){logger[_0xea88('0x1a')](_0xea88('0x15'),_0x3b78ed,_0x1a5265[_0xea88('0x1a')][_0xea88('0x1c')]);return _0x5605b1(_0x1a5265[_0xea88('0x1a')][_0xea88('0x1c')]);}logger[_0xea88('0x1a')](_0xea88('0x15'),_0x3b78ed,_0x1a5265[_0xea88('0x1a')][_0xea88('0x1c')]);return _0x3ab5a(_0x1a5265[_0xea88('0x1a')][_0xea88('0x1c')]);}else{logger[_0xea88('0x14')](_0xea88('0x15'),_0x3b78ed,_0xea88('0x16'));_0x3ab5a(_0x1a5265[_0xea88('0x1d')][_0xea88('0x1c')]);}})[_0xea88('0x1e')](function(_0x269689){logger[_0xea88('0x1a')](_0xea88('0x15'),_0x3b78ed,_0x269689);_0x5605b1(_0x269689);});});}exports[_0xea88('0x1f')]=function(_0x154ecc){var _0x5339db=this;return new Promise(function(_0x2ed437,_0x369c27){return db[_0xea88('0x20')]['findAll']({'raw':_0x154ecc[_0xea88('0x21')]?_0x154ecc[_0xea88('0x21')][_0xea88('0x22')]===undefined?!![]:![]:!![],'where':_0x154ecc[_0xea88('0x21')]?_0x154ecc[_0xea88('0x21')][_0xea88('0x23')]||null:null,'attributes':_0x154ecc[_0xea88('0x21')]?_0x154ecc['options'][_0xea88('0x24')]||null:null,'limit':_0x154ecc[_0xea88('0x21')]?_0x154ecc['options'][_0xea88('0x25')]||null:null,'include':_0x154ecc[_0xea88('0x21')]?_0x154ecc[_0xea88('0x21')]['include']?_['map'](_0x154ecc[_0xea88('0x21')][_0xea88('0x26')],function(_0x3413c0){return{'model':db[_0x3413c0[_0xea88('0x27')]],'as':_0x3413c0['as'],'attributes':_0x3413c0['attributes'],'include':_0x3413c0[_0xea88('0x26')]?_[_0xea88('0x28')](_0x3413c0[_0xea88('0x26')],function(_0x2f43ee){return{'model':db[_0x2f43ee['model']],'as':_0x2f43ee['as'],'attributes':_0x2f43ee['attributes'],'include':_0x2f43ee[_0xea88('0x26')]?_[_0xea88('0x28')](_0x2f43ee[_0xea88('0x26')],function(_0x116a29){return{'model':db[_0x116a29[_0xea88('0x27')]],'as':_0x116a29['as'],'attributes':_0x116a29[_0xea88('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xc2cd83){logger[_0xea88('0x14')](_0xea88('0x1f'),_0x154ecc);logger['debug'](_0xea88('0x1f'),_0x154ecc,JSON[_0xea88('0x19')](_0xc2cd83));_0x2ed437(_0xc2cd83);})[_0xea88('0x1e')](function(_0x50f469){logger[_0xea88('0x1a')](_0xea88('0x1f'),_0x50f469[_0xea88('0x1c')],_0x154ecc);_0x369c27(_0x5339db[_0xea88('0x1a')](0x1f4,_0x50f469[_0xea88('0x1c')]));});});};exports[_0xea88('0x29')]=function(_0x1ab140){var _0x28bd21=this;return new Promise(function(_0x3c9633,_0x9f672e){return db[_0xea88('0x20')]['find']({'raw':_0x1ab140['options']?_0x1ab140[_0xea88('0x21')][_0xea88('0x22')]===undefined?!![]:![]:!![],'where':_0x1ab140[_0xea88('0x21')]?_0x1ab140[_0xea88('0x21')]['where']||null:null,'attributes':_0x1ab140[_0xea88('0x21')]?_0x1ab140[_0xea88('0x21')][_0xea88('0x24')]||null:null,'include':_0x1ab140[_0xea88('0x21')]?_0x1ab140[_0xea88('0x21')]['include']?_[_0xea88('0x28')](_0x1ab140[_0xea88('0x21')][_0xea88('0x26')],function(_0x2d4801){return{'model':db[_0x2d4801[_0xea88('0x27')]],'as':_0x2d4801['as'],'attributes':_0x2d4801['attributes'],'include':_0x2d4801[_0xea88('0x26')]?_[_0xea88('0x28')](_0x2d4801[_0xea88('0x26')],function(_0x3ce1f3){return{'model':db[_0x3ce1f3['model']],'as':_0x3ce1f3['as'],'attributes':_0x3ce1f3[_0xea88('0x24')],'include':_0x3ce1f3[_0xea88('0x26')]?_['map'](_0x3ce1f3['include'],function(_0x4efaa4){return{'model':db[_0x4efaa4[_0xea88('0x27')]],'as':_0x4efaa4['as'],'attributes':_0x4efaa4[_0xea88('0x24')]};}):[]};}):[]};}):[]:[]})[_0xea88('0x13')](function(_0x582f58){logger[_0xea88('0x14')]('ShowOpenchannelQueue',_0x1ab140);logger[_0xea88('0x17')]('ShowOpenchannelQueue',_0x1ab140,JSON[_0xea88('0x19')](_0x582f58));_0x3c9633(_0x582f58);})[_0xea88('0x1e')](function(_0x36828e){logger[_0xea88('0x1a')](_0xea88('0x29'),_0x36828e[_0xea88('0x1c')],_0x1ab140);_0x9f672e(_0x28bd21[_0xea88('0x1a')](0x1f4,_0x36828e[_0xea88('0x1c')]));});});};
\ No newline at end of file
index e2ef042..6f00ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a0c=['length','save','update','emit','removeListener','register'];(function(_0x42127d,_0x319f25){var _0x338b8c=function(_0x2360c5){while(--_0x2360c5){_0x42127d['push'](_0x42127d['shift']());}};_0x338b8c(++_0x319f25);}(_0x4a0c,0x145));var _0xc4a0=function(_0x26d48e,_0x54c15e){_0x26d48e=_0x26d48e-0x0;var _0x20484d=_0x4a0c[_0x26d48e];return _0x20484d;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xc4a0('0x0'),'remove',_0xc4a0('0x1')];function createListener(_0x3cf9a6,_0x48ae5c){return function(_0x1fb2ad){_0x48ae5c[_0xc4a0('0x2')](_0x3cf9a6,_0x1fb2ad);};}function removeListener(_0x57493c,_0x36bad0){return function(){OpenchannelQueueEvents[_0xc4a0('0x3')](_0x57493c,_0x36bad0);};}exports[_0xc4a0('0x4')]=function(_0x20b8a0){for(var _0x3fb097=0x0,_0x41c71f=events[_0xc4a0('0x5')];_0x3fb097<_0x41c71f;_0x3fb097++){var _0x5e3c65=events[_0x3fb097];var _0x4b51bd=createListener('openchannelQueue:'+_0x5e3c65,_0x20b8a0);OpenchannelQueueEvents['on'](_0x5e3c65,_0x4b51bd);}};
\ No newline at end of file
+var _0xcaf5=['remove','update','emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x223271,_0x35d9bc){var _0x293cc6=function(_0x2361a4){while(--_0x2361a4){_0x223271['push'](_0x223271['shift']());}};_0x293cc6(++_0x35d9bc);}(_0xcaf5,0xa0));var _0x5caf=function(_0x81258d,_0x538c09){_0x81258d=_0x81258d-0x0;var _0x471947=_0xcaf5[_0x81258d];return _0x471947;};'use strict';var OpenchannelQueueEvents=require(_0x5caf('0x0'));var events=[_0x5caf('0x1'),_0x5caf('0x2'),_0x5caf('0x3')];function createListener(_0x26037b,_0x356f00){return function(_0x55511d){_0x356f00[_0x5caf('0x4')](_0x26037b,_0x55511d);};}function removeListener(_0x31cea8,_0x4af333){return function(){OpenchannelQueueEvents[_0x5caf('0x5')](_0x31cea8,_0x4af333);};}exports[_0x5caf('0x6')]=function(_0x193c31){for(var _0x585d72=0x0,_0x5dc1e9=events[_0x5caf('0x7')];_0x585d72<_0x5dc1e9;_0x585d72++){var _0x4bd9e0=events[_0x585d72];var _0x5e91d1=createListener(_0x5caf('0x8')+_0x4bd9e0,_0x193c31);OpenchannelQueueEvents['on'](_0x4bd9e0,_0x5e91d1);}};
\ No newline at end of file
index 64f3662..c7987e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaed2=['create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x43a860,_0x8ce5f1){var _0x3916c5=function(_0x817d93){while(--_0x817d93){_0x43a860['push'](_0x43a860['shift']());}};_0x3916c5(++_0x8ce5f1);}(_0xaed2,0x6e));var _0x2aed=function(_0x1e00d0,_0x380c3b){_0x1e00d0=_0x1e00d0-0x0;var _0x35d81c=_0xaed2[_0x1e00d0];return _0x35d81c;};'use strict';var multer=require(_0x2aed('0x0'));var util=require(_0x2aed('0x1'));var path=require(_0x2aed('0x2'));var timeout=require('connect-timeout');var express=require(_0x2aed('0x3'));var router=express[_0x2aed('0x4')]();var fs_extra=require(_0x2aed('0x5'));var auth=require(_0x2aed('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2aed('0x7'));var controller=require(_0x2aed('0x8'));router[_0x2aed('0x9')]('/',auth[_0x2aed('0xa')](),controller[_0x2aed('0xb')]);router[_0x2aed('0x9')](_0x2aed('0xc'),auth[_0x2aed('0xa')](),controller['describe']);router['get'](_0x2aed('0xd'),auth[_0x2aed('0xa')](),controller[_0x2aed('0xe')]);router[_0x2aed('0xf')]('/',auth[_0x2aed('0xa')](),controller[_0x2aed('0x10')]);router[_0x2aed('0x11')](_0x2aed('0xd'),auth[_0x2aed('0xa')](),controller[_0x2aed('0x12')]);router[_0x2aed('0x13')](_0x2aed('0xd'),auth[_0x2aed('0xa')](),controller[_0x2aed('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xeaa6=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','get','show','post','create','put','/:id','update','delete','destroy','exports','util','path'];(function(_0x57ae24,_0x12ad37){var _0x2d144d=function(_0x295993){while(--_0x295993){_0x57ae24['push'](_0x57ae24['shift']());}};_0x2d144d(++_0x12ad37);}(_0xeaa6,0x1e2));var _0x6eaa=function(_0x4a163b,_0x549e1f){_0x4a163b=_0x4a163b-0x0;var _0x53724a=_0xeaa6[_0x4a163b];return _0x53724a;};'use strict';var multer=require('multer');var util=require(_0x6eaa('0x0'));var path=require(_0x6eaa('0x1'));var timeout=require(_0x6eaa('0x2'));var express=require(_0x6eaa('0x3'));var router=express[_0x6eaa('0x4')]();var fs_extra=require(_0x6eaa('0x5'));var auth=require(_0x6eaa('0x6'));var interaction=require(_0x6eaa('0x7'));var config=require(_0x6eaa('0x8'));var controller=require('./openchannelQueueReport.controller');router['get']('/',auth[_0x6eaa('0x9')](),controller[_0x6eaa('0xa')]);router['get'](_0x6eaa('0xb'),auth[_0x6eaa('0x9')](),controller['describe']);router[_0x6eaa('0xc')]('/:id',auth[_0x6eaa('0x9')](),controller[_0x6eaa('0xd')]);router[_0x6eaa('0xe')]('/',auth[_0x6eaa('0x9')](),controller[_0x6eaa('0xf')]);router[_0x6eaa('0x10')](_0x6eaa('0x11'),auth['isAuthenticated'](),controller[_0x6eaa('0x12')]);router[_0x6eaa('0x13')](_0x6eaa('0x11'),auth[_0x6eaa('0x9')](),controller[_0x6eaa('0x14')]);module[_0x6eaa('0x15')]=router;
\ No newline at end of file
index 1868a13..cb11960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8e=['DATE','sequelize','exports','STRING'];(function(_0xcef710,_0x167e90){var _0x4d369f=function(_0x376c51){while(--_0x376c51){_0xcef710['push'](_0xcef710['shift']());}};_0x4d369f(++_0x167e90);}(_0x6c8e,0x139));var _0xe6c8=function(_0x159d48,_0x4e5b7f){_0x159d48=_0x159d48-0x0;var _0x26e335=_0x6c8e[_0x159d48];return _0x26e335;};'use strict';var moment=require('moment');var Sequelize=require(_0xe6c8('0x0'));module[_0xe6c8('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xe6c8('0x2')]},'joinAt':{'type':Sequelize[_0xe6c8('0x3')]},'leaveAt':{'type':Sequelize[_0xe6c8('0x3')]},'acceptAt':{'type':Sequelize[_0xe6c8('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe6c8('0x2')]}};
\ No newline at end of file
+var _0xb3a4=['STRING','DATE','moment','sequelize'];(function(_0x1f62bf,_0x5c9c21){var _0x166362=function(_0xed9b3f){while(--_0xed9b3f){_0x1f62bf['push'](_0x1f62bf['shift']());}};_0x166362(++_0x5c9c21);}(_0xb3a4,0x1c2));var _0x4b3a=function(_0x4c8e62,_0x2e8c2b){_0x4c8e62=_0x4c8e62-0x0;var _0xcde8a7=_0xb3a4[_0x4c8e62];return _0xcde8a7;};'use strict';var moment=require(_0x4b3a('0x0'));var Sequelize=require(_0x4b3a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x4b3a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x4b3a('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x4b3a('0x3')]},'acceptAt':{'type':Sequelize[_0x4b3a('0x3')]},'exitAt':{'type':Sequelize[_0x4b3a('0x3')]},'reason':{'type':Sequelize[_0x4b3a('0x2')]}};
\ No newline at end of file
index 2179a1a..dbad5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3feb=['rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','sort','where','filter','merge','VIRTUAL','options','then','findAll','rows','catch','show','includeAll','find','create','update','body','params','describe','eml-format'];(function(_0x390c73,_0x2f9c9d){var _0x41413d=function(_0x529908){while(--_0x529908){_0x390c73['push'](_0x390c73['shift']());}};_0x41413d(++_0x2f9c9d);}(_0x3feb,0x10f));var _0xb3fe=function(_0xc72c28,_0x2c9936){_0xc72c28=_0xc72c28-0x0;var _0x5ed0f6=_0x3feb[_0xc72c28];return _0x5ed0f6;};'use strict';var emlformat=require(_0xb3fe('0x0'));var rimraf=require(_0xb3fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb3fe('0x2'));var moment=require(_0xb3fe('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb3fe('0x4'));var util=require(_0xb3fe('0x5'));var path=require(_0xb3fe('0x6'));var sox=require(_0xb3fe('0x7'));var csv=require(_0xb3fe('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3fe('0x9'));var _=require(_0xb3fe('0xa'));var squel=require('squel');var crypto=require(_0xb3fe('0xb'));var jsforce=require(_0xb3fe('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb3fe('0x8'));var querystring=require(_0xb3fe('0xd'));var Papa=require(_0xb3fe('0xe'));var Redis=require(_0xb3fe('0xf'));var authService=require(_0xb3fe('0x10'));var qs=require(_0xb3fe('0x11'));var as=require(_0xb3fe('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb3fe('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb3fe('0x14'))['db'];function respondWithStatusCode(_0x36987f,_0x34710e){_0x34710e=_0x34710e||0xcc;return function(_0x3ef81c){if(_0x3ef81c){return _0x36987f[_0xb3fe('0x15')](_0x34710e);}return _0x36987f[_0xb3fe('0x16')](_0x34710e)[_0xb3fe('0x17')]();};}function respondWithResult(_0x2b2ace,_0x197a26){_0x197a26=_0x197a26||0xc8;return function(_0x121019){if(_0x121019){return _0x2b2ace['status'](_0x197a26)[_0xb3fe('0x18')](_0x121019);}};}function respondWithFilteredResult(_0x19d4d5,_0x2c9760){return function(_0x7d629){if(_0x7d629){var _0x39f2b8=typeof _0x2c9760['offset']===_0xb3fe('0x19')&&typeof _0x2c9760[_0xb3fe('0x1a')]===_0xb3fe('0x19');var _0x5d9fdf=_0x7d629[_0xb3fe('0x1b')];var _0x409c75=_0x39f2b8?0x0:_0x2c9760[_0xb3fe('0x1c')];var _0x3d9ce8=_0x39f2b8?_0x7d629[_0xb3fe('0x1b')]:_0x2c9760['offset']+_0x2c9760[_0xb3fe('0x1a')];var _0x3e4a70;if(_0x3d9ce8>=_0x5d9fdf){_0x3d9ce8=_0x5d9fdf;_0x3e4a70=0xc8;}else{_0x3e4a70=0xce;}_0x19d4d5[_0xb3fe('0x16')](_0x3e4a70);return _0x19d4d5['set']('Content-Range',_0x409c75+'-'+_0x3d9ce8+'/'+_0x5d9fdf)[_0xb3fe('0x18')](_0x7d629);}return null;};}function patchUpdates(_0x2c10ac){return function(_0x3cf882){try{jsonpatch[_0xb3fe('0x1d')](_0x3cf882,_0x2c10ac,!![]);}catch(_0x27d8b9){return BPromise[_0xb3fe('0x1e')](_0x27d8b9);}return _0x3cf882[_0xb3fe('0x1f')]();};}function saveUpdates(_0x4f9977,_0x4c7fe9){return function(_0x368fb8){if(_0x368fb8){return _0x368fb8['update'](_0x4f9977)['then'](function(_0x5e9002){return _0x5e9002;});}return null;};}function removeEntity(_0x345626,_0x4a3608){return function(_0x25240f){if(_0x25240f){return _0x25240f['destroy']()['then'](function(){_0x345626['status'](0xcc)[_0xb3fe('0x17')]();});}};}function handleEntityNotFound(_0x1e88bb,_0x5b48b6){return function(_0x387907){if(!_0x387907){_0x1e88bb['sendStatus'](0x194);}return _0x387907;};}function handleError(_0xcc6799,_0x1ff71c){_0x1ff71c=_0x1ff71c||0x1f4;return function(_0x3b5bac){logger[_0xb3fe('0x20')](_0x3b5bac[_0xb3fe('0x21')]);if(_0x3b5bac[_0xb3fe('0x22')]){delete _0x3b5bac['name'];}_0xcc6799[_0xb3fe('0x16')](_0x1ff71c)[_0xb3fe('0x23')](_0x3b5bac);};}exports[_0xb3fe('0x24')]=function(_0x439e56,_0x32e0df){var _0x42a17c={},_0x2e2632={},_0xc60928={'count':0x0,'rows':[]};var _0x42e08c=_[_0xb3fe('0x25')](db[_0xb3fe('0x26')][_0xb3fe('0x27')],function(_0x417a18){return{'name':_0x417a18[_0xb3fe('0x28')],'type':_0x417a18['type'][_0xb3fe('0x29')]};});_0x2e2632[_0xb3fe('0x2a')]=_[_0xb3fe('0x25')](_0x42e08c,_0xb3fe('0x22'));_0x2e2632['query']=_[_0xb3fe('0x2b')](_0x439e56[_0xb3fe('0x2c')]);_0x2e2632[_0xb3fe('0x2d')]=_[_0xb3fe('0x2e')](_0x2e2632[_0xb3fe('0x2a')],_0x2e2632[_0xb3fe('0x2c')]);_0x42a17c['attributes']=_[_0xb3fe('0x2e')](_0x2e2632[_0xb3fe('0x2a')],qs[_0xb3fe('0x2f')](_0x439e56[_0xb3fe('0x2c')][_0xb3fe('0x2f')]));_0x42a17c[_0xb3fe('0x30')]=_0x42a17c[_0xb3fe('0x30')][_0xb3fe('0x31')]?_0x42a17c['attributes']:_0x2e2632[_0xb3fe('0x2a')];if(!_0x439e56[_0xb3fe('0x2c')]['hasOwnProperty']('nolimit')){_0x42a17c[_0xb3fe('0x1a')]=qs[_0xb3fe('0x1a')](_0x439e56[_0xb3fe('0x2c')]['limit']);_0x42a17c[_0xb3fe('0x1c')]=qs['offset'](_0x439e56[_0xb3fe('0x2c')]['offset']);}_0x42a17c['order']=qs[_0xb3fe('0x32')](_0x439e56[_0xb3fe('0x2c')][_0xb3fe('0x32')]);_0x42a17c[_0xb3fe('0x33')]=qs[_0xb3fe('0x2d')](_['pick'](_0x439e56[_0xb3fe('0x2c')],_0x2e2632[_0xb3fe('0x2d')]),_0x42e08c);if(_0x439e56[_0xb3fe('0x2c')][_0xb3fe('0x34')]){_0x42a17c['where']=_[_0xb3fe('0x35')](_0x42a17c[_0xb3fe('0x33')],{'$or':_[_0xb3fe('0x25')](_0x42e08c,function(_0x463410){if(_0x463410['type']!==_0xb3fe('0x36')){var _0x2f72ef={};_0x2f72ef[_0x463410[_0xb3fe('0x22')]]={'$like':'%'+_0x439e56[_0xb3fe('0x2c')][_0xb3fe('0x34')]+'%'};return _0x2f72ef;}})});}_0x42a17c=_[_0xb3fe('0x35')]({},_0x42a17c,_0x439e56[_0xb3fe('0x37')]);var _0x16e912={'where':_0x42a17c[_0xb3fe('0x33')]};return db[_0xb3fe('0x26')]['count'](_0x16e912)[_0xb3fe('0x38')](function(_0x58cd49){_0xc60928['count']=_0x58cd49;if(_0x439e56[_0xb3fe('0x2c')]['includeAll']){_0x42a17c['include']=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xb3fe('0x39')](_0x42a17c);})[_0xb3fe('0x38')](function(_0x5ec8ed){_0xc60928[_0xb3fe('0x3a')]=_0x5ec8ed;return _0xc60928;})[_0xb3fe('0x38')](respondWithFilteredResult(_0x32e0df,_0x42a17c))[_0xb3fe('0x3b')](handleError(_0x32e0df,null));};exports[_0xb3fe('0x3c')]=function(_0x4e4113,_0x4a5df3){var _0x365a19={'raw':!![],'where':{'id':_0x4e4113['params']['id']}},_0x200247={};_0x200247['model']=_[_0xb3fe('0x2b')](db[_0xb3fe('0x26')][_0xb3fe('0x27')]);_0x200247[_0xb3fe('0x2c')]=_[_0xb3fe('0x2b')](_0x4e4113[_0xb3fe('0x2c')]);_0x200247['filters']=_['intersection'](_0x200247[_0xb3fe('0x2a')],_0x200247[_0xb3fe('0x2c')]);_0x365a19['attributes']=_[_0xb3fe('0x2e')](_0x200247[_0xb3fe('0x2a')],qs[_0xb3fe('0x2f')](_0x4e4113[_0xb3fe('0x2c')]['fields']));_0x365a19[_0xb3fe('0x30')]=_0x365a19[_0xb3fe('0x30')]['length']?_0x365a19[_0xb3fe('0x30')]:_0x200247[_0xb3fe('0x2a')];if(_0x4e4113['query'][_0xb3fe('0x3d')]){_0x365a19['include']=[{'all':!![]}];}_0x365a19=_[_0xb3fe('0x35')]({},_0x365a19,_0x4e4113[_0xb3fe('0x37')]);return db[_0xb3fe('0x26')][_0xb3fe('0x3e')](_0x365a19)[_0xb3fe('0x38')](handleEntityNotFound(_0x4a5df3,null))[_0xb3fe('0x38')](respondWithResult(_0x4a5df3,null))[_0xb3fe('0x3b')](handleError(_0x4a5df3,null));};exports[_0xb3fe('0x3f')]=function(_0x4a42f9,_0x2c48b0){return db[_0xb3fe('0x26')]['create'](_0x4a42f9['body'],{})[_0xb3fe('0x38')](respondWithResult(_0x2c48b0,0xc9))[_0xb3fe('0x3b')](handleError(_0x2c48b0,null));};exports[_0xb3fe('0x40')]=function(_0x5c0654,_0x3f3875){if(_0x5c0654['body']['id']){delete _0x5c0654[_0xb3fe('0x41')]['id'];}return db[_0xb3fe('0x26')][_0xb3fe('0x3e')]({'where':{'id':_0x5c0654[_0xb3fe('0x42')]['id']}})['then'](handleEntityNotFound(_0x3f3875,null))['then'](saveUpdates(_0x5c0654['body'],null))[_0xb3fe('0x38')](respondWithResult(_0x3f3875,null))['catch'](handleError(_0x3f3875,null));};exports['destroy']=function(_0x2db04c,_0x3828ac){return db[_0xb3fe('0x26')][_0xb3fe('0x3e')]({'where':{'id':_0x2db04c[_0xb3fe('0x42')]['id']}})['then'](handleEntityNotFound(_0x3828ac,null))[_0xb3fe('0x38')](removeEntity(_0x3828ac,null))[_0xb3fe('0x3b')](handleError(_0x3828ac,null));};exports[_0xb3fe('0x43')]=function(_0x1f7e1a,_0x4576b0){return db[_0xb3fe('0x26')][_0xb3fe('0x43')]()[_0xb3fe('0x38')](respondWithResult(_0x4576b0,null))[_0xb3fe('0x3b')](handleError(_0x4576b0,null));};
\ No newline at end of file
+var _0xab33=['catch','show','includeAll','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows'];(function(_0x362e67,_0x96e94){var _0x53ab15=function(_0x267c13){while(--_0x267c13){_0x362e67['push'](_0x362e67['shift']());}};_0x53ab15(++_0x96e94);}(_0xab33,0x123));var _0x3ab3=function(_0x2a3fb2,_0x52b0be){_0x2a3fb2=_0x2a3fb2-0x0;var _0x2243c7=_0xab33[_0x2a3fb2];return _0x2243c7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ab3('0x0'));var zipdir=require(_0x3ab3('0x1'));var jsonpatch=require(_0x3ab3('0x2'));var rp=require(_0x3ab3('0x3'));var moment=require('moment');var BPromise=require(_0x3ab3('0x4'));var Mustache=require(_0x3ab3('0x5'));var util=require('util');var path=require(_0x3ab3('0x6'));var sox=require(_0x3ab3('0x7'));var csv=require(_0x3ab3('0x8'));var ejs=require(_0x3ab3('0x9'));var fs=require('fs');var fs_extra=require(_0x3ab3('0xa'));var _=require(_0x3ab3('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3ab3('0xc'));var toCsv=require(_0x3ab3('0x8'));var querystring=require('querystring');var Papa=require(_0x3ab3('0xd'));var Redis=require(_0x3ab3('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3ab3('0xf'));var logger=require(_0x3ab3('0x10'))('api');var utils=require('../../config/utils');var config=require(_0x3ab3('0x11'));var licenseUtil=require(_0x3ab3('0x12'));var db=require(_0x3ab3('0x13'))['db'];function respondWithStatusCode(_0x5deada,_0x2c5e64){_0x2c5e64=_0x2c5e64||0xcc;return function(_0x40288a){if(_0x40288a){return _0x5deada['sendStatus'](_0x2c5e64);}return _0x5deada[_0x3ab3('0x14')](_0x2c5e64)[_0x3ab3('0x15')]();};}function respondWithResult(_0x237b3b,_0x2e32c2){_0x2e32c2=_0x2e32c2||0xc8;return function(_0x5c4ec8){if(_0x5c4ec8){return _0x237b3b[_0x3ab3('0x14')](_0x2e32c2)[_0x3ab3('0x16')](_0x5c4ec8);}};}function respondWithFilteredResult(_0x1e0f7a,_0x3708eb){return function(_0xfa54ce){if(_0xfa54ce){var _0x123cf7=typeof _0x3708eb['offset']===_0x3ab3('0x17')&&typeof _0x3708eb[_0x3ab3('0x18')]===_0x3ab3('0x17');var _0x2044c2=_0xfa54ce[_0x3ab3('0x19')];var _0x18094=_0x123cf7?0x0:_0x3708eb[_0x3ab3('0x1a')];var _0x3c4cde=_0x123cf7?_0xfa54ce[_0x3ab3('0x19')]:_0x3708eb[_0x3ab3('0x1a')]+_0x3708eb[_0x3ab3('0x18')];var _0xa40b16;if(_0x3c4cde>=_0x2044c2){_0x3c4cde=_0x2044c2;_0xa40b16=0xc8;}else{_0xa40b16=0xce;}_0x1e0f7a['status'](_0xa40b16);return _0x1e0f7a[_0x3ab3('0x1b')]('Content-Range',_0x18094+'-'+_0x3c4cde+'/'+_0x2044c2)[_0x3ab3('0x16')](_0xfa54ce);}return null;};}function patchUpdates(_0x33cfb1){return function(_0x715f7c){try{jsonpatch[_0x3ab3('0x1c')](_0x715f7c,_0x33cfb1,!![]);}catch(_0x117caa){return BPromise[_0x3ab3('0x1d')](_0x117caa);}return _0x715f7c[_0x3ab3('0x1e')]();};}function saveUpdates(_0x1e8668,_0x1fe6aa){return function(_0x5414d0){if(_0x5414d0){return _0x5414d0['update'](_0x1e8668)[_0x3ab3('0x1f')](function(_0x3b2c66){return _0x3b2c66;});}return null;};}function removeEntity(_0x1609e0,_0x84fa80){return function(_0xcbf34d){if(_0xcbf34d){return _0xcbf34d[_0x3ab3('0x20')]()[_0x3ab3('0x1f')](function(){_0x1609e0[_0x3ab3('0x14')](0xcc)[_0x3ab3('0x15')]();});}};}function handleEntityNotFound(_0x3fa512,_0x2b15f1){return function(_0x1bfe48){if(!_0x1bfe48){_0x3fa512[_0x3ab3('0x21')](0x194);}return _0x1bfe48;};}function handleError(_0x409924,_0x4fd213){_0x4fd213=_0x4fd213||0x1f4;return function(_0x46a24c){logger[_0x3ab3('0x22')](_0x46a24c[_0x3ab3('0x23')]);if(_0x46a24c[_0x3ab3('0x24')]){delete _0x46a24c[_0x3ab3('0x24')];}_0x409924[_0x3ab3('0x14')](_0x4fd213)[_0x3ab3('0x25')](_0x46a24c);};}exports[_0x3ab3('0x26')]=function(_0x2d8e7e,_0x377556){var _0x59648e={},_0x5a2cac={},_0x390818={'count':0x0,'rows':[]};var _0x585687=_[_0x3ab3('0x27')](db[_0x3ab3('0x28')][_0x3ab3('0x29')],function(_0x3ecc4e){return{'name':_0x3ecc4e[_0x3ab3('0x2a')],'type':_0x3ecc4e[_0x3ab3('0x2b')][_0x3ab3('0x2c')]};});_0x5a2cac['model']=_[_0x3ab3('0x27')](_0x585687,_0x3ab3('0x24'));_0x5a2cac[_0x3ab3('0x2d')]=_[_0x3ab3('0x2e')](_0x2d8e7e['query']);_0x5a2cac[_0x3ab3('0x2f')]=_[_0x3ab3('0x30')](_0x5a2cac['model'],_0x5a2cac[_0x3ab3('0x2d')]);_0x59648e['attributes']=_['intersection'](_0x5a2cac[_0x3ab3('0x31')],qs[_0x3ab3('0x32')](_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x32')]));_0x59648e[_0x3ab3('0x33')]=_0x59648e[_0x3ab3('0x33')]['length']?_0x59648e[_0x3ab3('0x33')]:_0x5a2cac[_0x3ab3('0x31')];if(!_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x34')]('nolimit')){_0x59648e['limit']=qs[_0x3ab3('0x18')](_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x18')]);_0x59648e[_0x3ab3('0x1a')]=qs['offset'](_0x2d8e7e['query']['offset']);}_0x59648e[_0x3ab3('0x35')]=qs[_0x3ab3('0x36')](_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x36')]);_0x59648e[_0x3ab3('0x37')]=qs[_0x3ab3('0x2f')](_[_0x3ab3('0x38')](_0x2d8e7e[_0x3ab3('0x2d')],_0x5a2cac['filters']),_0x585687);if(_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x39')]){_0x59648e[_0x3ab3('0x37')]=_[_0x3ab3('0x3a')](_0x59648e[_0x3ab3('0x37')],{'$or':_[_0x3ab3('0x27')](_0x585687,function(_0x166119){if(_0x166119[_0x3ab3('0x2b')]!==_0x3ab3('0x3b')){var _0x468638={};_0x468638[_0x166119[_0x3ab3('0x24')]]={'$like':'%'+_0x2d8e7e[_0x3ab3('0x2d')][_0x3ab3('0x39')]+'%'};return _0x468638;}})});}_0x59648e=_['merge']({},_0x59648e,_0x2d8e7e[_0x3ab3('0x3c')]);var _0x56fee8={'where':_0x59648e['where']};return db[_0x3ab3('0x28')][_0x3ab3('0x19')](_0x56fee8)[_0x3ab3('0x1f')](function(_0x53c6d8){_0x390818[_0x3ab3('0x19')]=_0x53c6d8;if(_0x2d8e7e[_0x3ab3('0x2d')]['includeAll']){_0x59648e[_0x3ab3('0x3d')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x3ab3('0x3e')](_0x59648e);})[_0x3ab3('0x1f')](function(_0x4f7e7d){_0x390818[_0x3ab3('0x3f')]=_0x4f7e7d;return _0x390818;})[_0x3ab3('0x1f')](respondWithFilteredResult(_0x377556,_0x59648e))[_0x3ab3('0x40')](handleError(_0x377556,null));};exports[_0x3ab3('0x41')]=function(_0x5f1aec,_0x580cb9){var _0x1d5d70={'raw':!![],'where':{'id':_0x5f1aec['params']['id']}},_0x41d78b={};_0x41d78b[_0x3ab3('0x31')]=_[_0x3ab3('0x2e')](db[_0x3ab3('0x28')]['rawAttributes']);_0x41d78b['query']=_['keys'](_0x5f1aec[_0x3ab3('0x2d')]);_0x41d78b[_0x3ab3('0x2f')]=_['intersection'](_0x41d78b[_0x3ab3('0x31')],_0x41d78b[_0x3ab3('0x2d')]);_0x1d5d70[_0x3ab3('0x33')]=_[_0x3ab3('0x30')](_0x41d78b[_0x3ab3('0x31')],qs[_0x3ab3('0x32')](_0x5f1aec[_0x3ab3('0x2d')][_0x3ab3('0x32')]));_0x1d5d70[_0x3ab3('0x33')]=_0x1d5d70[_0x3ab3('0x33')]['length']?_0x1d5d70[_0x3ab3('0x33')]:_0x41d78b[_0x3ab3('0x31')];if(_0x5f1aec['query'][_0x3ab3('0x42')]){_0x1d5d70[_0x3ab3('0x3d')]=[{'all':!![]}];}_0x1d5d70=_[_0x3ab3('0x3a')]({},_0x1d5d70,_0x5f1aec['options']);return db[_0x3ab3('0x28')][_0x3ab3('0x43')](_0x1d5d70)['then'](handleEntityNotFound(_0x580cb9,null))['then'](respondWithResult(_0x580cb9,null))[_0x3ab3('0x40')](handleError(_0x580cb9,null));};exports['create']=function(_0x4209c3,_0x566728){return db[_0x3ab3('0x28')][_0x3ab3('0x44')](_0x4209c3['body'],{})['then'](respondWithResult(_0x566728,0xc9))[_0x3ab3('0x40')](handleError(_0x566728,null));};exports['update']=function(_0x412828,_0x1f571e){if(_0x412828[_0x3ab3('0x45')]['id']){delete _0x412828[_0x3ab3('0x45')]['id'];}return db[_0x3ab3('0x28')][_0x3ab3('0x43')]({'where':{'id':_0x412828[_0x3ab3('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f571e,null))[_0x3ab3('0x1f')](saveUpdates(_0x412828[_0x3ab3('0x45')],null))['then'](respondWithResult(_0x1f571e,null))[_0x3ab3('0x40')](handleError(_0x1f571e,null));};exports[_0x3ab3('0x20')]=function(_0x4e059e,_0x3614c0){return db['OpenchannelQueueReport'][_0x3ab3('0x43')]({'where':{'id':_0x4e059e[_0x3ab3('0x46')]['id']}})[_0x3ab3('0x1f')](handleEntityNotFound(_0x3614c0,null))['then'](removeEntity(_0x3614c0,null))[_0x3ab3('0x40')](handleError(_0x3614c0,null));};exports['describe']=function(_0x1d76db,_0x3f3457){return db['OpenchannelQueueReport']['describe']()[_0x3ab3('0x1f')](respondWithResult(_0x3f3457,null))[_0x3ab3('0x40')](handleError(_0x3f3457,null));};
\ No newline at end of file
index 3021883..4de5c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x2123ea,_0x909b6){var _0x2f8af5=function(_0x48be3e){while(--_0x48be3e){_0x2123ea['push'](_0x2123ea['shift']());}};_0x2f8af5(++_0x909b6);}(_0x7a54,0x106));var _0x47a5=function(_0x5a690e,_0x5a76f9){_0x5a690e=_0x5a690e-0x0;var _0x39ff2c=_0x7a54[_0x5a690e];return _0x39ff2c;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x44a41a,_0x39c011){var _0x6becef=function(_0x8b386e){while(--_0x8b386e){_0x44a41a['push'](_0x44a41a['shift']());}};_0x6becef(++_0x39c011);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index a44b8c0..a1db681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x48b5e5,_0x317015){var _0x3af640=function(_0x2d5aa3){while(--_0x2d5aa3){_0x48b5e5['push'](_0x48b5e5['shift']());}};_0x3af640(++_0x317015);}(_0x958a,0x128));var _0xa958=function(_0x20797a,_0x3e8aea){_0x20797a=_0x20797a-0x0;var _0x542861=_0x958a[_0x20797a];return _0x542861;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var moment=require('moment');var BPromise=require(_0xa958('0x2'));var rs=require(_0xa958('0x3'));var fs=require('fs');var Redis=require(_0xa958('0x4'));var db=require(_0xa958('0x5'))['db'];var utils=require(_0xa958('0x6'));var logger=require('../../config/logger')(_0xa958('0x7'));var config=require('../../config/environment');var jayson=require(_0xa958('0x8'));var client=jayson[_0xa958('0x9')][_0xa958('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ddaa9,_0x3ca01f,_0x3b2693){return new BPromise(function(_0x1895da,_0x54c0e0){return client['request'](_0x3ddaa9,_0x3b2693)[_0xa958('0xb')](function(_0x249764){logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));logger[_0xa958('0xf')](_0xa958('0x10'),_0x3ca01f,_0xa958('0xe'),JSON[_0xa958('0x11')](_0x249764));if(_0x249764[_0xa958('0x12')]){if(_0x249764[_0xa958('0x12')][_0xa958('0x13')]===0x1f4){logger[_0xa958('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3ca01f,_0x249764[_0xa958('0x12')]['message']);return _0x1895da(_0x249764['error']['message']);}else{logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));_0x1895da(_0x249764[_0xa958('0x15')][_0xa958('0x14')]);}})[_0xa958('0x16')](function(_0x23736f){logger[_0xa958('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3ca01f,_0x23736f);_0x54c0e0(_0x23736f);});});}exports[_0xa958('0x17')]=function(_0x4eadc9){var _0x3a053f=this;return new Promise(function(_0x70d13e,_0x52a184){return db[_0xa958('0x18')][_0xa958('0x19')](_0x4eadc9[_0xa958('0x1a')],{'raw':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')][_0xa958('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x4a90c2){logger[_0xa958('0xc')](_0xa958('0x17'),_0x4eadc9);logger[_0xa958('0xf')]('CreateOpenchannelQueueReport',_0x4eadc9,JSON[_0xa958('0x11')](_0x4a90c2));_0x70d13e(_0x4a90c2);})[_0xa958('0x16')](function(_0x5c091a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x5c091a['message'],_0x4eadc9);_0x52a184(_0x3a053f['error'](0x1f4,_0x5c091a[_0xa958('0x14')]));});});};exports[_0xa958('0x1d')]=function(_0x50b3c3){var _0x25f461=this;return new Promise(function(_0x27097a,_0x2f03df){return db[_0xa958('0x18')][_0xa958('0x1e')](_0x50b3c3[_0xa958('0x1a')],{'raw':_0x50b3c3['options']?_0x50b3c3[_0xa958('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x1f')]||null:null,'attributes':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x20')]||null:null,'limit':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x21')]||null:null})[_0xa958('0xb')](function(_0x4c4c37){logger['info'](_0xa958('0x1d'),_0x50b3c3);logger['debug'](_0xa958('0x1d'),_0x50b3c3,JSON[_0xa958('0x11')](_0x4c4c37));_0x27097a(_0x4c4c37);})['catch'](function(_0x23bdbf){logger[_0xa958('0x12')](_0xa958('0x1d'),_0x23bdbf[_0xa958('0x14')],_0x50b3c3);_0x2f03df(_0x25f461[_0xa958('0x12')](0x1f4,_0x23bdbf['message']));});});};
\ No newline at end of file
+var _0x79d7=['debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','where','limit','then'];(function(_0x32b84b,_0x465003){var _0x190dde=function(_0x2417cf){while(--_0x2417cf){_0x32b84b['push'](_0x32b84b['shift']());}};_0x190dde(++_0x465003);}(_0x79d7,0x9c));var _0x779d=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x79d7[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x779d('0x0'));var util=require('util');var moment=require(_0x779d('0x1'));var BPromise=require(_0x779d('0x2'));var rs=require(_0x779d('0x3'));var fs=require('fs');var Redis=require(_0x779d('0x4'));var db=require(_0x779d('0x5'))['db'];var utils=require(_0x779d('0x6'));var logger=require('../../config/logger')(_0x779d('0x7'));var config=require(_0x779d('0x8'));var jayson=require(_0x779d('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x227c87,_0x4c7fb4,_0xc067dd){return new BPromise(function(_0x2f83f6,_0x4c7c92){return client['request'](_0x227c87,_0xc067dd)['then'](function(_0x5b4ef2){logger[_0x779d('0xa')](_0x779d('0xb'),_0x4c7fb4,_0x779d('0xc'));logger['debug'](_0x779d('0xd'),_0x4c7fb4,'request\x20sent',JSON[_0x779d('0xe')](_0x5b4ef2));if(_0x5b4ef2['error']){if(_0x5b4ef2[_0x779d('0xf')][_0x779d('0x10')]===0x1f4){logger[_0x779d('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4c7fb4,_0x5b4ef2[_0x779d('0xf')][_0x779d('0x11')]);return _0x4c7c92(_0x5b4ef2[_0x779d('0xf')][_0x779d('0x11')]);}logger[_0x779d('0xf')](_0x779d('0xb'),_0x4c7fb4,_0x5b4ef2['error'][_0x779d('0x11')]);return _0x2f83f6(_0x5b4ef2[_0x779d('0xf')][_0x779d('0x11')]);}else{logger[_0x779d('0xa')](_0x779d('0xb'),_0x4c7fb4,'request\x20sent');_0x2f83f6(_0x5b4ef2[_0x779d('0x12')][_0x779d('0x11')]);}})[_0x779d('0x13')](function(_0x4cc248){logger[_0x779d('0xf')](_0x779d('0xb'),_0x4c7fb4,_0x4cc248);_0x4c7c92(_0x4cc248);});});}exports[_0x779d('0x14')]=function(_0x18900e){var _0x6a0916=this;return new Promise(function(_0x21102d,_0x428186){return db[_0x779d('0x15')][_0x779d('0x16')](_0x18900e[_0x779d('0x17')],{'raw':_0x18900e[_0x779d('0x18')]?_0x18900e[_0x779d('0x18')][_0x779d('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1ab255){logger['info'](_0x779d('0x14'),_0x18900e);logger['debug'](_0x779d('0x14'),_0x18900e,JSON[_0x779d('0xe')](_0x1ab255));_0x21102d(_0x1ab255);})[_0x779d('0x13')](function(_0x2d4e36){logger['error'](_0x779d('0x14'),_0x2d4e36[_0x779d('0x11')],_0x18900e);_0x428186(_0x6a0916[_0x779d('0xf')](0x1f4,_0x2d4e36[_0x779d('0x11')]));});});};exports[_0x779d('0x1a')]=function(_0x1ddfa5){var _0x2fca0a=this;return new Promise(function(_0x42bc01,_0x1e2ab5){return db[_0x779d('0x15')]['update'](_0x1ddfa5[_0x779d('0x17')],{'raw':_0x1ddfa5['options']?_0x1ddfa5['options'][_0x779d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ddfa5[_0x779d('0x18')]?_0x1ddfa5['options'][_0x779d('0x1b')]||null:null,'attributes':_0x1ddfa5[_0x779d('0x18')]?_0x1ddfa5[_0x779d('0x18')]['attributes']||null:null,'limit':_0x1ddfa5[_0x779d('0x18')]?_0x1ddfa5[_0x779d('0x18')][_0x779d('0x1c')]||null:null})[_0x779d('0x1d')](function(_0x23d5ea){logger[_0x779d('0xa')]('UpdateOpenchannelQueueReport',_0x1ddfa5);logger[_0x779d('0x1e')](_0x779d('0x1a'),_0x1ddfa5,JSON[_0x779d('0xe')](_0x23d5ea));_0x42bc01(_0x23d5ea);})[_0x779d('0x13')](function(_0x2a0982){logger[_0x779d('0xf')](_0x779d('0x1a'),_0x2a0982[_0x779d('0x11')],_0x1ddfa5);_0x1e2ab5(_0x2fca0a[_0x779d('0xf')](0x1f4,_0x2a0982[_0x779d('0x11')]));});});};
\ No newline at end of file
index 1d13f86..74d4582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59ec=['update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','index','isAuthenticated','describe','/:id','show','create','put'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x59ec,0xff));var _0xc59e=function(_0xf174a1,_0x37bad4){_0xf174a1=_0xf174a1-0x0;var _0x6f75eb=_0x59ec[_0xf174a1];return _0x6f75eb;};'use strict';var multer=require(_0xc59e('0x0'));var util=require('util');var path=require(_0xc59e('0x1'));var timeout=require(_0xc59e('0x2'));var express=require(_0xc59e('0x3'));var router=express[_0xc59e('0x4')]();var fs_extra=require(_0xc59e('0x5'));var auth=require(_0xc59e('0x6'));var interaction=require(_0xc59e('0x7'));var config=require(_0xc59e('0x8'));var controller=require(_0xc59e('0x9'));router[_0xc59e('0xa')]('/',auth['isAuthenticated'](),controller[_0xc59e('0xb')]);router[_0xc59e('0xa')]('/describe',auth[_0xc59e('0xc')](),controller[_0xc59e('0xd')]);router[_0xc59e('0xa')](_0xc59e('0xe'),auth[_0xc59e('0xc')](),controller[_0xc59e('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc59e('0x10')]);router[_0xc59e('0x11')](_0xc59e('0xe'),auth[_0xc59e('0xc')](),controller[_0xc59e('0x12')]);router[_0xc59e('0x13')](_0xc59e('0xe'),auth['isAuthenticated'](),controller[_0xc59e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe0ce=['isAuthenticated','describe','/:id','show','post','create','put','update','delete','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','index','get','/describe'];(function(_0xd295c9,_0xddef19){var _0x2d8e71=function(_0xefed86){while(--_0xefed86){_0xd295c9['push'](_0xd295c9['shift']());}};_0x2d8e71(++_0xddef19);}(_0xe0ce,0xd1));var _0xee0c=function(_0x102881,_0x58d723){_0x102881=_0x102881-0x0;var _0x5c63d0=_0xe0ce[_0x102881];return _0x5c63d0;};'use strict';var multer=require('multer');var util=require(_0xee0c('0x0'));var path=require(_0xee0c('0x1'));var timeout=require(_0xee0c('0x2'));var express=require(_0xee0c('0x3'));var router=express[_0xee0c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xee0c('0x5'));var interaction=require(_0xee0c('0x6'));var config=require('../../config/environment');var controller=require(_0xee0c('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xee0c('0x8')]);router[_0xee0c('0x9')](_0xee0c('0xa'),auth[_0xee0c('0xb')](),controller[_0xee0c('0xc')]);router['get'](_0xee0c('0xd'),auth[_0xee0c('0xb')](),controller[_0xee0c('0xe')]);router[_0xee0c('0xf')]('/',auth[_0xee0c('0xb')](),controller[_0xee0c('0x10')]);router[_0xee0c('0x11')](_0xee0c('0xd'),auth['isAuthenticated'](),controller[_0xee0c('0x12')]);router[_0xee0c('0x13')](_0xee0c('0xd'),auth[_0xee0c('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5cb2f5c..3daa5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x536ec5,_0x4b7e66){var _0x209b27=function(_0x2ae2fa){while(--_0x2ae2fa){_0x536ec5['push'](_0x536ec5['shift']());}};_0x209b27(++_0x4b7e66);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5459b0,_0x4d2ef8){_0x5459b0=_0x5459b0-0x0;var _0x675a35=_0xf3cd[_0x5459b0];return _0x675a35;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x1bdc45,_0x46a152){var _0x119280=function(_0x552ca2){while(--_0x552ca2){_0x1bdc45['push'](_0x1bdc45['shift']());}};_0x119280(++_0x46a152);}(_0xedd9,0xfc));var _0x9edd=function(_0x295e87,_0xaff0b7){_0x295e87=_0x295e87-0x0;var _0xe4eed7=_0xedd9[_0x295e87];return _0xe4eed7;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index cb8565d..1bebf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63b=['map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','OpenchannelTransferReport','include','findAll','catch','params','includeAll','find','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name'];(function(_0x4f40a6,_0x3b8725){var _0xadae5=function(_0x42bef3){while(--_0x42bef3){_0x4f40a6['push'](_0x4f40a6['shift']());}};_0xadae5(++_0x3b8725);}(_0xd63b,0xf9));var _0xbd63=function(_0x45c856,_0x5e6a1e){_0x45c856=_0x45c856-0x0;var _0x4961aa=_0xd63b[_0x45c856];return _0x4961aa;};'use strict';var emlformat=require(_0xbd63('0x0'));var rimraf=require(_0xbd63('0x1'));var zipdir=require(_0xbd63('0x2'));var jsonpatch=require(_0xbd63('0x3'));var rp=require(_0xbd63('0x4'));var moment=require(_0xbd63('0x5'));var BPromise=require(_0xbd63('0x6'));var Mustache=require(_0xbd63('0x7'));var util=require(_0xbd63('0x8'));var path=require(_0xbd63('0x9'));var sox=require('sox');var csv=require(_0xbd63('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd63('0xb'));var _=require(_0xbd63('0xc'));var squel=require(_0xbd63('0xd'));var crypto=require(_0xbd63('0xe'));var jsforce=require(_0xbd63('0xf'));var deskjs=require(_0xbd63('0x10'));var toCsv=require(_0xbd63('0xa'));var querystring=require(_0xbd63('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xbd63('0x12'));var qs=require(_0xbd63('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd63('0x14'));var logger=require(_0xbd63('0x15'))('api');var utils=require(_0xbd63('0x16'));var config=require(_0xbd63('0x17'));var licenseUtil=require(_0xbd63('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cb5af,_0x4f86d1){_0x4f86d1=_0x4f86d1||0xcc;return function(_0x9cccf1){if(_0x9cccf1){return _0x4cb5af['sendStatus'](_0x4f86d1);}return _0x4cb5af['status'](_0x4f86d1)[_0xbd63('0x19')]();};}function respondWithResult(_0xb66e83,_0x6620c2){_0x6620c2=_0x6620c2||0xc8;return function(_0x2691f1){if(_0x2691f1){return _0xb66e83[_0xbd63('0x1a')](_0x6620c2)['json'](_0x2691f1);}};}function respondWithFilteredResult(_0x28c4c5,_0x28ec27){return function(_0x1254cd){if(_0x1254cd){var _0x3cadc3=typeof _0x28ec27[_0xbd63('0x1b')]===_0xbd63('0x1c')&&typeof _0x28ec27['limit']===_0xbd63('0x1c');var _0x554ea0=_0x1254cd['count'];var _0x2267ca=_0x3cadc3?0x0:_0x28ec27[_0xbd63('0x1b')];var _0x382aa7=_0x3cadc3?_0x1254cd[_0xbd63('0x1d')]:_0x28ec27[_0xbd63('0x1b')]+_0x28ec27[_0xbd63('0x1e')];var _0x465526;if(_0x382aa7>=_0x554ea0){_0x382aa7=_0x554ea0;_0x465526=0xc8;}else{_0x465526=0xce;}_0x28c4c5['status'](_0x465526);return _0x28c4c5[_0xbd63('0x1f')](_0xbd63('0x20'),_0x2267ca+'-'+_0x382aa7+'/'+_0x554ea0)[_0xbd63('0x21')](_0x1254cd);}return null;};}function patchUpdates(_0x2ce414){return function(_0x23e1e9){try{jsonpatch[_0xbd63('0x22')](_0x23e1e9,_0x2ce414,!![]);}catch(_0x507a08){return BPromise[_0xbd63('0x23')](_0x507a08);}return _0x23e1e9[_0xbd63('0x24')]();};}function saveUpdates(_0xc8339a,_0x39de05){return function(_0xa16d4b){if(_0xa16d4b){return _0xa16d4b['update'](_0xc8339a)[_0xbd63('0x25')](function(_0x85e551){return _0x85e551;});}return null;};}function removeEntity(_0xd038a3,_0x2e61c8){return function(_0x3bd3b6){if(_0x3bd3b6){return _0x3bd3b6[_0xbd63('0x26')]()['then'](function(){_0xd038a3['status'](0xcc)[_0xbd63('0x19')]();});}};}function handleEntityNotFound(_0xa5f22a,_0x2da3a4){return function(_0x58628a){if(!_0x58628a){_0xa5f22a[_0xbd63('0x27')](0x194);}return _0x58628a;};}function handleError(_0x12744b,_0x36115b){_0x36115b=_0x36115b||0x1f4;return function(_0x12e471){logger[_0xbd63('0x28')](_0x12e471[_0xbd63('0x29')]);if(_0x12e471[_0xbd63('0x2a')]){delete _0x12e471[_0xbd63('0x2a')];}_0x12744b[_0xbd63('0x1a')](_0x36115b)['send'](_0x12e471);};}exports['index']=function(_0xba131f,_0x18ec54){var _0x3c5d4e={},_0x3bac39={},_0x5d749f={'count':0x0,'rows':[]};var _0x46e980=_[_0xbd63('0x2b')](db['OpenchannelTransferReport']['rawAttributes'],function(_0xf0c39c){return{'name':_0xf0c39c[_0xbd63('0x2c')],'type':_0xf0c39c[_0xbd63('0x2d')][_0xbd63('0x2e')]};});_0x3bac39[_0xbd63('0x2f')]=_['map'](_0x46e980,_0xbd63('0x2a'));_0x3bac39[_0xbd63('0x30')]=_[_0xbd63('0x31')](_0xba131f['query']);_0x3bac39[_0xbd63('0x32')]=_[_0xbd63('0x33')](_0x3bac39[_0xbd63('0x2f')],_0x3bac39['query']);_0x3c5d4e[_0xbd63('0x34')]=_[_0xbd63('0x33')](_0x3bac39[_0xbd63('0x2f')],qs['fields'](_0xba131f[_0xbd63('0x30')][_0xbd63('0x35')]));_0x3c5d4e[_0xbd63('0x34')]=_0x3c5d4e['attributes'][_0xbd63('0x36')]?_0x3c5d4e[_0xbd63('0x34')]:_0x3bac39[_0xbd63('0x2f')];if(!_0xba131f['query'][_0xbd63('0x37')](_0xbd63('0x38'))){_0x3c5d4e[_0xbd63('0x1e')]=qs[_0xbd63('0x1e')](_0xba131f['query']['limit']);_0x3c5d4e[_0xbd63('0x1b')]=qs[_0xbd63('0x1b')](_0xba131f[_0xbd63('0x30')][_0xbd63('0x1b')]);}_0x3c5d4e[_0xbd63('0x39')]=qs['sort'](_0xba131f['query'][_0xbd63('0x3a')]);_0x3c5d4e['where']=qs['filters'](_['pick'](_0xba131f[_0xbd63('0x30')],_0x3bac39[_0xbd63('0x32')]),_0x46e980);if(_0xba131f[_0xbd63('0x30')][_0xbd63('0x3b')]){_0x3c5d4e[_0xbd63('0x3c')]=_[_0xbd63('0x3d')](_0x3c5d4e[_0xbd63('0x3c')],{'$or':_[_0xbd63('0x2b')](_0x46e980,function(_0x335b66){if(_0x335b66['type']!==_0xbd63('0x3e')){var _0x4e5b23={};_0x4e5b23[_0x335b66[_0xbd63('0x2a')]]={'$like':'%'+_0xba131f[_0xbd63('0x30')][_0xbd63('0x3b')]+'%'};return _0x4e5b23;}})});}_0x3c5d4e=_[_0xbd63('0x3d')]({},_0x3c5d4e,_0xba131f[_0xbd63('0x3f')]);var _0x4a367f={'where':_0x3c5d4e[_0xbd63('0x3c')]};return db[_0xbd63('0x40')]['count'](_0x4a367f)[_0xbd63('0x25')](function(_0x4d3de0){_0x5d749f['count']=_0x4d3de0;if(_0xba131f[_0xbd63('0x30')]['includeAll']){_0x3c5d4e[_0xbd63('0x41')]=[{'all':!![]}];}return db[_0xbd63('0x40')][_0xbd63('0x42')](_0x3c5d4e);})[_0xbd63('0x25')](function(_0x5484ef){_0x5d749f['rows']=_0x5484ef;return _0x5d749f;})[_0xbd63('0x25')](respondWithFilteredResult(_0x18ec54,_0x3c5d4e))[_0xbd63('0x43')](handleError(_0x18ec54,null));};exports['show']=function(_0x34434c,_0x31d11b){var _0x501c2f={'raw':!![],'where':{'id':_0x34434c[_0xbd63('0x44')]['id']}},_0x557343={};_0x557343[_0xbd63('0x2f')]=_[_0xbd63('0x31')](db['OpenchannelTransferReport']['rawAttributes']);_0x557343[_0xbd63('0x30')]=_['keys'](_0x34434c[_0xbd63('0x30')]);_0x557343['filters']=_['intersection'](_0x557343['model'],_0x557343[_0xbd63('0x30')]);_0x501c2f['attributes']=_['intersection'](_0x557343[_0xbd63('0x2f')],qs[_0xbd63('0x35')](_0x34434c[_0xbd63('0x30')][_0xbd63('0x35')]));_0x501c2f[_0xbd63('0x34')]=_0x501c2f[_0xbd63('0x34')][_0xbd63('0x36')]?_0x501c2f[_0xbd63('0x34')]:_0x557343['model'];if(_0x34434c[_0xbd63('0x30')][_0xbd63('0x45')]){_0x501c2f[_0xbd63('0x41')]=[{'all':!![]}];}_0x501c2f=_['merge']({},_0x501c2f,_0x34434c[_0xbd63('0x3f')]);return db[_0xbd63('0x40')][_0xbd63('0x46')](_0x501c2f)['then'](handleEntityNotFound(_0x31d11b,null))['then'](respondWithResult(_0x31d11b,null))[_0xbd63('0x43')](handleError(_0x31d11b,null));};exports['create']=function(_0x31ac83,_0x23ae65){return db[_0xbd63('0x40')]['create'](_0x31ac83[_0xbd63('0x47')],{})[_0xbd63('0x25')](respondWithResult(_0x23ae65,0xc9))[_0xbd63('0x43')](handleError(_0x23ae65,null));};exports[_0xbd63('0x48')]=function(_0xcb5579,_0xe28aca){if(_0xcb5579['body']['id']){delete _0xcb5579[_0xbd63('0x47')]['id'];}return db['OpenchannelTransferReport'][_0xbd63('0x46')]({'where':{'id':_0xcb5579[_0xbd63('0x44')]['id']}})['then'](handleEntityNotFound(_0xe28aca,null))[_0xbd63('0x25')](saveUpdates(_0xcb5579[_0xbd63('0x47')],null))[_0xbd63('0x25')](respondWithResult(_0xe28aca,null))[_0xbd63('0x43')](handleError(_0xe28aca,null));};exports[_0xbd63('0x26')]=function(_0x4ff3f5,_0xa887da){return db[_0xbd63('0x40')][_0xbd63('0x46')]({'where':{'id':_0x4ff3f5[_0xbd63('0x44')]['id']}})[_0xbd63('0x25')](handleEntityNotFound(_0xa887da,null))[_0xbd63('0x25')](removeEntity(_0xa887da,null))[_0xbd63('0x43')](handleError(_0xa887da,null));};exports['describe']=function(_0x43b00b,_0x5aaee0){return db[_0xbd63('0x40')]['describe']()[_0xbd63('0x25')](respondWithResult(_0x5aaee0,null))[_0xbd63('0x43')](handleError(_0x5aaee0,null));};
\ No newline at end of file
+var _0xdba0=['fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','count','limit','reject','save','update','then','sendStatus','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x593752,_0xfc3827){var _0x4612be=function(_0x2d64c6){while(--_0x2d64c6){_0x593752['push'](_0x593752['shift']());}};_0x4612be(++_0xfc3827);}(_0xdba0,0xa7));var _0x0dba=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0xdba0[_0x4cfc1d];return _0x1c01a0;};'use strict';var emlformat=require(_0x0dba('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0dba('0x1'));var jsonpatch=require(_0x0dba('0x2'));var rp=require(_0x0dba('0x3'));var moment=require('moment');var BPromise=require(_0x0dba('0x4'));var Mustache=require(_0x0dba('0x5'));var util=require('util');var path=require(_0x0dba('0x6'));var sox=require('sox');var csv=require(_0x0dba('0x7'));var ejs=require(_0x0dba('0x8'));var fs=require('fs');var fs_extra=require(_0x0dba('0x9'));var _=require(_0x0dba('0xa'));var squel=require(_0x0dba('0xb'));var crypto=require(_0x0dba('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0dba('0x7'));var querystring=require(_0x0dba('0xd'));var Papa=require(_0x0dba('0xe'));var Redis=require('ioredis');var authService=require(_0x0dba('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0dba('0x10'));var logger=require('../../config/logger')(_0x0dba('0x11'));var utils=require(_0x0dba('0x12'));var config=require(_0x0dba('0x13'));var licenseUtil=require(_0x0dba('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2dfd81,_0x32118c){_0x32118c=_0x32118c||0xcc;return function(_0xb10b3c){if(_0xb10b3c){return _0x2dfd81['sendStatus'](_0x32118c);}return _0x2dfd81['status'](_0x32118c)[_0x0dba('0x15')]();};}function respondWithResult(_0x4576c2,_0xb3d6d1){_0xb3d6d1=_0xb3d6d1||0xc8;return function(_0x5292ba){if(_0x5292ba){return _0x4576c2[_0x0dba('0x16')](_0xb3d6d1)[_0x0dba('0x17')](_0x5292ba);}};}function respondWithFilteredResult(_0x77a487,_0x592237){return function(_0x18a650){if(_0x18a650){var _0x1fee47=typeof _0x592237[_0x0dba('0x18')]==='undefined'&&typeof _0x592237['limit']===_0x0dba('0x19');var _0x2f5528=_0x18a650[_0x0dba('0x1a')];var _0x134c6e=_0x1fee47?0x0:_0x592237['offset'];var _0x555044=_0x1fee47?_0x18a650[_0x0dba('0x1a')]:_0x592237[_0x0dba('0x18')]+_0x592237[_0x0dba('0x1b')];var _0x1a5fe6;if(_0x555044>=_0x2f5528){_0x555044=_0x2f5528;_0x1a5fe6=0xc8;}else{_0x1a5fe6=0xce;}_0x77a487[_0x0dba('0x16')](_0x1a5fe6);return _0x77a487['set']('Content-Range',_0x134c6e+'-'+_0x555044+'/'+_0x2f5528)[_0x0dba('0x17')](_0x18a650);}return null;};}function patchUpdates(_0x39b7e5){return function(_0x2b3400){try{jsonpatch['apply'](_0x2b3400,_0x39b7e5,!![]);}catch(_0x3f6f67){return BPromise[_0x0dba('0x1c')](_0x3f6f67);}return _0x2b3400[_0x0dba('0x1d')]();};}function saveUpdates(_0x5c2c6b,_0x49fc61){return function(_0x4df11b){if(_0x4df11b){return _0x4df11b[_0x0dba('0x1e')](_0x5c2c6b)[_0x0dba('0x1f')](function(_0x5b5720){return _0x5b5720;});}return null;};}function removeEntity(_0x806655,_0x134526){return function(_0x42183e){if(_0x42183e){return _0x42183e['destroy']()[_0x0dba('0x1f')](function(){_0x806655[_0x0dba('0x16')](0xcc)[_0x0dba('0x15')]();});}};}function handleEntityNotFound(_0x41c69c,_0x4051d7){return function(_0x52414d){if(!_0x52414d){_0x41c69c[_0x0dba('0x20')](0x194);}return _0x52414d;};}function handleError(_0x259e2f,_0x298beb){_0x298beb=_0x298beb||0x1f4;return function(_0x5e7b9c){logger[_0x0dba('0x21')](_0x5e7b9c[_0x0dba('0x22')]);if(_0x5e7b9c[_0x0dba('0x23')]){delete _0x5e7b9c[_0x0dba('0x23')];}_0x259e2f[_0x0dba('0x16')](_0x298beb)[_0x0dba('0x24')](_0x5e7b9c);};}exports['index']=function(_0x34afeb,_0x11afba){var _0x2d01a5={},_0x532901={},_0x357717={'count':0x0,'rows':[]};var _0x2071eb=_[_0x0dba('0x25')](db[_0x0dba('0x26')][_0x0dba('0x27')],function(_0x43e787){return{'name':_0x43e787[_0x0dba('0x28')],'type':_0x43e787[_0x0dba('0x29')][_0x0dba('0x2a')]};});_0x532901[_0x0dba('0x2b')]=_[_0x0dba('0x25')](_0x2071eb,'name');_0x532901[_0x0dba('0x2c')]=_[_0x0dba('0x2d')](_0x34afeb[_0x0dba('0x2c')]);_0x532901[_0x0dba('0x2e')]=_[_0x0dba('0x2f')](_0x532901[_0x0dba('0x2b')],_0x532901['query']);_0x2d01a5[_0x0dba('0x30')]=_[_0x0dba('0x2f')](_0x532901[_0x0dba('0x2b')],qs[_0x0dba('0x31')](_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x31')]));_0x2d01a5[_0x0dba('0x30')]=_0x2d01a5['attributes']['length']?_0x2d01a5['attributes']:_0x532901['model'];if(!_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x32')](_0x0dba('0x33'))){_0x2d01a5['limit']=qs['limit'](_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x1b')]);_0x2d01a5[_0x0dba('0x18')]=qs['offset'](_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x18')]);}_0x2d01a5[_0x0dba('0x34')]=qs[_0x0dba('0x35')](_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x35')]);_0x2d01a5[_0x0dba('0x36')]=qs[_0x0dba('0x2e')](_[_0x0dba('0x37')](_0x34afeb['query'],_0x532901['filters']),_0x2071eb);if(_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x38')]){_0x2d01a5[_0x0dba('0x36')]=_['merge'](_0x2d01a5[_0x0dba('0x36')],{'$or':_['map'](_0x2071eb,function(_0x50dccf){if(_0x50dccf[_0x0dba('0x29')]!==_0x0dba('0x39')){var _0xcbddd6={};_0xcbddd6[_0x50dccf[_0x0dba('0x23')]]={'$like':'%'+_0x34afeb[_0x0dba('0x2c')]['filter']+'%'};return _0xcbddd6;}})});}_0x2d01a5=_[_0x0dba('0x3a')]({},_0x2d01a5,_0x34afeb['options']);var _0x354125={'where':_0x2d01a5[_0x0dba('0x36')]};return db[_0x0dba('0x26')][_0x0dba('0x1a')](_0x354125)[_0x0dba('0x1f')](function(_0x56ed2a){_0x357717[_0x0dba('0x1a')]=_0x56ed2a;if(_0x34afeb[_0x0dba('0x2c')][_0x0dba('0x3b')]){_0x2d01a5[_0x0dba('0x3c')]=[{'all':!![]}];}return db[_0x0dba('0x26')][_0x0dba('0x3d')](_0x2d01a5);})[_0x0dba('0x1f')](function(_0x4f136d){_0x357717[_0x0dba('0x3e')]=_0x4f136d;return _0x357717;})[_0x0dba('0x1f')](respondWithFilteredResult(_0x11afba,_0x2d01a5))[_0x0dba('0x3f')](handleError(_0x11afba,null));};exports[_0x0dba('0x40')]=function(_0xd32a0c,_0x326970){var _0x3f3793={'raw':!![],'where':{'id':_0xd32a0c[_0x0dba('0x41')]['id']}},_0x31f075={};_0x31f075[_0x0dba('0x2b')]=_[_0x0dba('0x2d')](db[_0x0dba('0x26')]['rawAttributes']);_0x31f075[_0x0dba('0x2c')]=_['keys'](_0xd32a0c[_0x0dba('0x2c')]);_0x31f075[_0x0dba('0x2e')]=_['intersection'](_0x31f075[_0x0dba('0x2b')],_0x31f075[_0x0dba('0x2c')]);_0x3f3793[_0x0dba('0x30')]=_[_0x0dba('0x2f')](_0x31f075[_0x0dba('0x2b')],qs[_0x0dba('0x31')](_0xd32a0c[_0x0dba('0x2c')][_0x0dba('0x31')]));_0x3f3793[_0x0dba('0x30')]=_0x3f3793[_0x0dba('0x30')][_0x0dba('0x42')]?_0x3f3793['attributes']:_0x31f075['model'];if(_0xd32a0c[_0x0dba('0x2c')][_0x0dba('0x3b')]){_0x3f3793[_0x0dba('0x3c')]=[{'all':!![]}];}_0x3f3793=_[_0x0dba('0x3a')]({},_0x3f3793,_0xd32a0c[_0x0dba('0x43')]);return db['OpenchannelTransferReport'][_0x0dba('0x44')](_0x3f3793)[_0x0dba('0x1f')](handleEntityNotFound(_0x326970,null))[_0x0dba('0x1f')](respondWithResult(_0x326970,null))[_0x0dba('0x3f')](handleError(_0x326970,null));};exports['create']=function(_0x91339d,_0x26393f){return db[_0x0dba('0x26')][_0x0dba('0x45')](_0x91339d[_0x0dba('0x46')],{})[_0x0dba('0x1f')](respondWithResult(_0x26393f,0xc9))[_0x0dba('0x3f')](handleError(_0x26393f,null));};exports['update']=function(_0x515d78,_0x4065f3){if(_0x515d78[_0x0dba('0x46')]['id']){delete _0x515d78[_0x0dba('0x46')]['id'];}return db[_0x0dba('0x26')][_0x0dba('0x44')]({'where':{'id':_0x515d78[_0x0dba('0x41')]['id']}})[_0x0dba('0x1f')](handleEntityNotFound(_0x4065f3,null))['then'](saveUpdates(_0x515d78['body'],null))[_0x0dba('0x1f')](respondWithResult(_0x4065f3,null))['catch'](handleError(_0x4065f3,null));};exports['destroy']=function(_0x59e8fe,_0x399834){return db[_0x0dba('0x26')][_0x0dba('0x44')]({'where':{'id':_0x59e8fe[_0x0dba('0x41')]['id']}})[_0x0dba('0x1f')](handleEntityNotFound(_0x399834,null))[_0x0dba('0x1f')](removeEntity(_0x399834,null))['catch'](handleError(_0x399834,null));};exports[_0x0dba('0x47')]=function(_0x3b5546,_0x58a335){return db[_0x0dba('0x26')][_0x0dba('0x47')]()[_0x0dba('0x1f')](respondWithResult(_0x58a335,null))[_0x0dba('0x3f')](handleError(_0x58a335,null));};
\ No newline at end of file
index cf64f50..3de92e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2311=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','OpenchannelTransferReport','uniqueid','lodash','util','../../config/logger','api'];(function(_0x19cfac,_0x3745dc){var _0x25d2a5=function(_0x2bad78){while(--_0x2bad78){_0x19cfac['push'](_0x19cfac['shift']());}};_0x25d2a5(++_0x3745dc);}(_0x2311,0x1dd));var _0x1231=function(_0x36bfce,_0x3e5d1e){_0x36bfce=_0x36bfce-0x0;var _0x3404bc=_0x2311[_0x36bfce];return _0x3404bc;};'use strict';var _=require(_0x1231('0x0'));var util=require(_0x1231('0x1'));var logger=require(_0x1231('0x2'))(_0x1231('0x3'));var moment=require(_0x1231('0x4'));var BPromise=require(_0x1231('0x5'));var rp=require(_0x1231('0x6'));var fs=require('fs');var path=require(_0x1231('0x7'));var rimraf=require(_0x1231('0x8'));var config=require(_0x1231('0x9'));var attributes=require(_0x1231('0xa'));module['exports']=function(_0x2f0981,_0x180753){return _0x2f0981['define'](_0x1231('0xb'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x1231('0xc'),'fields':[_0x1231('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa30a=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelTransferReport.attributes','report_openchannel_transfer','uniqueid','lodash'];(function(_0x23929d,_0x2d8984){var _0x52d817=function(_0x45ef82){while(--_0x45ef82){_0x23929d['push'](_0x23929d['shift']());}};_0x52d817(++_0x2d8984);}(_0xa30a,0x107));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xaa30('0x0'));var util=require(_0xaa30('0x1'));var logger=require(_0xaa30('0x2'))(_0xaa30('0x3'));var moment=require(_0xaa30('0x4'));var BPromise=require(_0xaa30('0x5'));var rp=require(_0xaa30('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa30('0x7'));var config=require(_0xaa30('0x8'));var attributes=require(_0xaa30('0x9'));module['exports']=function(_0x4a4a12,_0x481fec){return _0x4a4a12['define']('OpenchannelTransferReport',attributes,{'tableName':_0xaa30('0xa'),'paranoid':![],'indexes':[{'name':_0xaa30('0xb'),'fields':[_0xaa30('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 2d888bb..79ffde0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x12024d,_0x59d39f){var _0x1f247c=function(_0xfc6c07){while(--_0xfc6c07){_0x12024d['push'](_0x12024d['shift']());}};_0x1f247c(++_0x59d39f);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3ab0ac,_0x1ea9cf){_0x3ab0ac=_0x3ab0ac-0x0;var _0x1f743d=_0x7fbe[_0x3ab0ac];return _0x1f743d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
+var _0x31c2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x31c2,0x1e1));var _0x231c=function(_0x8a33df,_0x5bf4a3){_0x8a33df=_0x8a33df-0x0;var _0x43884c=_0x31c2[_0x8a33df];return _0x43884c;};'use strict';var _=require(_0x231c('0x0'));var util=require(_0x231c('0x1'));var moment=require(_0x231c('0x2'));var BPromise=require(_0x231c('0x3'));var rs=require(_0x231c('0x4'));var fs=require('fs');var Redis=require(_0x231c('0x5'));var db=require(_0x231c('0x6'))['db'];var utils=require(_0x231c('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x231c('0x8'));var jayson=require(_0x231c('0x9'));var client=jayson[_0x231c('0xa')][_0x231c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48bfb2,_0x111bf9,_0x49ff9e){return new BPromise(function(_0x439df8,_0x38b3b9){return client[_0x231c('0xc')](_0x48bfb2,_0x49ff9e)['then'](function(_0x2524bf){logger[_0x231c('0xd')](_0x231c('0xe'),_0x111bf9,_0x231c('0xf'));logger[_0x231c('0x10')](_0x231c('0x11'),_0x111bf9,_0x231c('0xf'),JSON['stringify'](_0x2524bf));if(_0x2524bf[_0x231c('0x12')]){if(_0x2524bf[_0x231c('0x12')]['code']===0x1f4){logger[_0x231c('0x12')](_0x231c('0xe'),_0x111bf9,_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);return _0x38b3b9(_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);}logger[_0x231c('0x12')](_0x231c('0xe'),_0x111bf9,_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);return _0x439df8(_0x2524bf[_0x231c('0x12')][_0x231c('0x13')]);}else{logger[_0x231c('0xd')](_0x231c('0xe'),_0x111bf9,_0x231c('0xf'));_0x439df8(_0x2524bf[_0x231c('0x14')][_0x231c('0x13')]);}})[_0x231c('0x15')](function(_0x1852e5){logger[_0x231c('0x12')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x111bf9,_0x1852e5);_0x38b3b9(_0x1852e5);});});}
\ No newline at end of file
index 3f8b912..410b101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277b=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','update','destroy','exports','multer'];(function(_0x25deb6,_0xe4405d){var _0x39700b=function(_0xb077e2){while(--_0xb077e2){_0x25deb6['push'](_0x25deb6['shift']());}};_0x39700b(++_0xe4405d);}(_0x277b,0x10d));var _0xb277=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x277b[_0x1b2ff7];return _0x31656a;};'use strict';var multer=require(_0xb277('0x0'));var util=require(_0xb277('0x1'));var path=require(_0xb277('0x2'));var timeout=require(_0xb277('0x3'));var express=require(_0xb277('0x4'));var router=express[_0xb277('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb277('0x6'));var config=require(_0xb277('0x7'));var controller=require(_0xb277('0x8'));router[_0xb277('0x9')]('/',auth[_0xb277('0xa')](),controller[_0xb277('0xb')]);router[_0xb277('0x9')](_0xb277('0xc'),auth[_0xb277('0xa')](),controller[_0xb277('0xd')]);router[_0xb277('0xe')]('/',auth[_0xb277('0xa')](),controller['create']);router['put'](_0xb277('0xc'),auth[_0xb277('0xa')](),controller[_0xb277('0xf')]);router['delete'](_0xb277('0xc'),auth['isAuthenticated'](),controller[_0xb277('0x10')]);module[_0xb277('0x11')]=router;
\ No newline at end of file
+var _0xf632=['./pause.controller','get','index','/:id','isAuthenticated','post','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x88d037,_0xf22313){var _0x1fcab0=function(_0x32d649){while(--_0x32d649){_0x88d037['push'](_0x88d037['shift']());}};_0x1fcab0(++_0xf22313);}(_0xf632,0xf9));var _0x2f63=function(_0x2d8001,_0x172aa8){_0x2d8001=_0x2d8001-0x0;var _0xc307c1=_0xf632[_0x2d8001];return _0xc307c1;};'use strict';var multer=require(_0x2f63('0x0'));var util=require(_0x2f63('0x1'));var path=require(_0x2f63('0x2'));var timeout=require(_0x2f63('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2f63('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2f63('0x5'));var config=require(_0x2f63('0x6'));var controller=require(_0x2f63('0x7'));router[_0x2f63('0x8')]('/',auth['isAuthenticated'](),controller[_0x2f63('0x9')]);router[_0x2f63('0x8')](_0x2f63('0xa'),auth[_0x2f63('0xb')](),controller['show']);router[_0x2f63('0xc')]('/',auth[_0x2f63('0xb')](),controller['create']);router['put'](_0x2f63('0xa'),auth[_0x2f63('0xb')](),controller[_0x2f63('0xd')]);router[_0x2f63('0xe')](_0x2f63('0xa'),auth[_0x2f63('0xb')](),controller['destroy']);module[_0x2f63('0xf')]=router;
\ No newline at end of file
index 2fe9e8c..81b1022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7430=['exports','STRING','name','sequelize'];(function(_0x457d43,_0x4263a8){var _0x4f3dc4=function(_0x348a81){while(--_0x348a81){_0x457d43['push'](_0x457d43['shift']());}};_0x4f3dc4(++_0x4263a8);}(_0x7430,0x1eb));var _0x0743=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7430[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0743('0x0'));module[_0x0743('0x1')]={'name':{'type':Sequelize[_0x0743('0x2')],'unique':_0x0743('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x0743('0x2')]}};
\ No newline at end of file
+var _0x8309=['exports','STRING','sequelize'];(function(_0x29d424,_0x247ea9){var _0x5eb645=function(_0x3d53e6){while(--_0x3d53e6){_0x29d424['push'](_0x29d424['shift']());}};_0x5eb645(++_0x247ea9);}(_0x8309,0x13a));var _0x9830=function(_0x12c3e3,_0x4d228c){_0x12c3e3=_0x12c3e3-0x0;var _0x25f447=_0x8309[_0x12c3e3];return _0x25f447;};'use strict';var Sequelize=require(_0x9830('0x0'));module[_0x9830('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x9830('0x2')]}};
\ No newline at end of file
index 4c9cecc..aa6ffe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1b3=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','apply','reject','save','then','get','Pauses','UserProfileResource','destroy','end','sendStatus','error','name','send','index','map','Pause','type','key','model','keys','query','filters','intersection','fields','attributes'];(function(_0xb83ec2,_0x18e73b){var _0x4d2fbf=function(_0x16538a){while(--_0x16538a){_0xb83ec2['push'](_0xb83ec2['shift']());}};_0x4d2fbf(++_0x18e73b);}(_0xf1b3,0xc8));var _0x3f1b=function(_0x3e29fa,_0x511f0f){_0x3e29fa=_0x3e29fa-0x0;var _0x584c28=_0xf1b3[_0x3e29fa];return _0x584c28;};'use strict';var emlformat=require(_0x3f1b('0x0'));var rimraf=require(_0x3f1b('0x1'));var zipdir=require(_0x3f1b('0x2'));var jsonpatch=require(_0x3f1b('0x3'));var rp=require(_0x3f1b('0x4'));var moment=require(_0x3f1b('0x5'));var BPromise=require(_0x3f1b('0x6'));var Mustache=require(_0x3f1b('0x7'));var util=require(_0x3f1b('0x8'));var path=require(_0x3f1b('0x9'));var sox=require(_0x3f1b('0xa'));var csv=require(_0x3f1b('0xb'));var ejs=require(_0x3f1b('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3f1b('0xd'));var crypto=require(_0x3f1b('0xe'));var jsforce=require(_0x3f1b('0xf'));var deskjs=require(_0x3f1b('0x10'));var toCsv=require(_0x3f1b('0xb'));var querystring=require(_0x3f1b('0x11'));var Papa=require('papaparse');var Redis=require(_0x3f1b('0x12'));var authService=require(_0x3f1b('0x13'));var qs=require(_0x3f1b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f1b('0x15'));var logger=require(_0x3f1b('0x16'))(_0x3f1b('0x17'));var utils=require(_0x3f1b('0x18'));var config=require(_0x3f1b('0x19'));var licenseUtil=require(_0x3f1b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb48b7f,_0x1be65f){_0x1be65f=_0x1be65f||0xcc;return function(_0x20b1a1){if(_0x20b1a1){return _0xb48b7f['sendStatus'](_0x1be65f);}return _0xb48b7f[_0x3f1b('0x1b')](_0x1be65f)['end']();};}function respondWithResult(_0x231c9c,_0x18d8a9){_0x18d8a9=_0x18d8a9||0xc8;return function(_0x4920a0){if(_0x4920a0){return _0x231c9c[_0x3f1b('0x1b')](_0x18d8a9)[_0x3f1b('0x1c')](_0x4920a0);}};}function respondWithFilteredResult(_0x41711f,_0x66df37){return function(_0x11a889){if(_0x11a889){var _0xe95a01=typeof _0x66df37[_0x3f1b('0x1d')]===_0x3f1b('0x1e')&&typeof _0x66df37[_0x3f1b('0x1f')]==='undefined';var _0x14b2b1=_0x11a889[_0x3f1b('0x20')];var _0x5b782f=_0xe95a01?0x0:_0x66df37[_0x3f1b('0x1d')];var _0xc87531=_0xe95a01?_0x11a889[_0x3f1b('0x20')]:_0x66df37[_0x3f1b('0x1d')]+_0x66df37[_0x3f1b('0x1f')];var _0x13db86;if(_0xc87531>=_0x14b2b1){_0xc87531=_0x14b2b1;_0x13db86=0xc8;}else{_0x13db86=0xce;}_0x41711f[_0x3f1b('0x1b')](_0x13db86);return _0x41711f['set']('Content-Range',_0x5b782f+'-'+_0xc87531+'/'+_0x14b2b1)[_0x3f1b('0x1c')](_0x11a889);}return null;};}function patchUpdates(_0x470b41){return function(_0x49da02){try{jsonpatch[_0x3f1b('0x21')](_0x49da02,_0x470b41,!![]);}catch(_0x3af3f0){return BPromise[_0x3f1b('0x22')](_0x3af3f0);}return _0x49da02[_0x3f1b('0x23')]();};}function saveUpdates(_0x3c984c,_0x7c7131){return function(_0x1f11ec){if(_0x1f11ec){return _0x1f11ec['update'](_0x3c984c)[_0x3f1b('0x24')](function(_0xf8210d){return _0xf8210d;});}return null;};}function removeEntity(_0x28ba3d,_0xb57d76){return function(_0x2a81ff){if(_0x2a81ff){return _0x2a81ff['destroy']()[_0x3f1b('0x24')](function(){var _0x3e79de=_0x2a81ff[_0x3f1b('0x25')]({'plain':!![]});var _0x376169=_0x3f1b('0x26');return db[_0x3f1b('0x27')][_0x3f1b('0x28')]({'where':{'type':_0x376169,'resourceId':_0x3e79de['id']}})[_0x3f1b('0x24')](function(){return _0x2a81ff;});})[_0x3f1b('0x24')](function(){_0x28ba3d[_0x3f1b('0x1b')](0xcc)[_0x3f1b('0x29')]();});}};}function handleEntityNotFound(_0x563c2a,_0x8a07c0){return function(_0x2765cb){if(!_0x2765cb){_0x563c2a[_0x3f1b('0x2a')](0x194);}return _0x2765cb;};}function handleError(_0x7b9bdc,_0x56d550){_0x56d550=_0x56d550||0x1f4;return function(_0x312927){logger[_0x3f1b('0x2b')](_0x312927['stack']);if(_0x312927[_0x3f1b('0x2c')]){delete _0x312927[_0x3f1b('0x2c')];}_0x7b9bdc[_0x3f1b('0x1b')](_0x56d550)[_0x3f1b('0x2d')](_0x312927);};}exports[_0x3f1b('0x2e')]=function(_0x47a811,_0xe3f7c6){var _0x393f88={},_0x14ddb4={},_0x1fed1e={'count':0x0,'rows':[]};var _0x55a2c2=_[_0x3f1b('0x2f')](db[_0x3f1b('0x30')]['rawAttributes'],function(_0x47c3d5){return{'name':_0x47c3d5['fieldName'],'type':_0x47c3d5[_0x3f1b('0x31')][_0x3f1b('0x32')]};});_0x14ddb4[_0x3f1b('0x33')]=_[_0x3f1b('0x2f')](_0x55a2c2,_0x3f1b('0x2c'));_0x14ddb4['query']=_[_0x3f1b('0x34')](_0x47a811[_0x3f1b('0x35')]);_0x14ddb4[_0x3f1b('0x36')]=_['intersection'](_0x14ddb4[_0x3f1b('0x33')],_0x14ddb4[_0x3f1b('0x35')]);_0x393f88['attributes']=_[_0x3f1b('0x37')](_0x14ddb4[_0x3f1b('0x33')],qs[_0x3f1b('0x38')](_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x38')]));_0x393f88[_0x3f1b('0x39')]=_0x393f88[_0x3f1b('0x39')][_0x3f1b('0x3a')]?_0x393f88[_0x3f1b('0x39')]:_0x14ddb4[_0x3f1b('0x33')];if(!_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x3b')](_0x3f1b('0x3c'))){_0x393f88[_0x3f1b('0x1f')]=qs[_0x3f1b('0x1f')](_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x1f')]);_0x393f88[_0x3f1b('0x1d')]=qs[_0x3f1b('0x1d')](_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x1d')]);}_0x393f88[_0x3f1b('0x3d')]=qs[_0x3f1b('0x3e')](_0x47a811[_0x3f1b('0x35')]['sort']);_0x393f88[_0x3f1b('0x3f')]=qs[_0x3f1b('0x36')](_[_0x3f1b('0x40')](_0x47a811[_0x3f1b('0x35')],_0x14ddb4[_0x3f1b('0x36')]),_0x55a2c2);if(_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x41')]){_0x393f88[_0x3f1b('0x3f')]=_[_0x3f1b('0x42')](_0x393f88[_0x3f1b('0x3f')],{'$or':_[_0x3f1b('0x2f')](_0x55a2c2,function(_0x1cc42b){if(_0x1cc42b[_0x3f1b('0x31')]!==_0x3f1b('0x43')){var _0x2745e={};_0x2745e[_0x1cc42b[_0x3f1b('0x2c')]]={'$like':'%'+_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x41')]+'%'};return _0x2745e;}})});}_0x393f88=_[_0x3f1b('0x42')]({},_0x393f88,_0x47a811[_0x3f1b('0x44')]);var _0x270e05={'where':_0x393f88[_0x3f1b('0x3f')]};return db[_0x3f1b('0x30')][_0x3f1b('0x20')](_0x270e05)[_0x3f1b('0x24')](function(_0x25ed1f){_0x1fed1e[_0x3f1b('0x20')]=_0x25ed1f;if(_0x47a811[_0x3f1b('0x35')][_0x3f1b('0x45')]){_0x393f88['include']=[{'all':!![]}];}return db[_0x3f1b('0x30')]['findAll'](_0x393f88);})['then'](function(_0x4ccd87){_0x1fed1e[_0x3f1b('0x46')]=_0x4ccd87;return _0x1fed1e;})['then'](respondWithFilteredResult(_0xe3f7c6,_0x393f88))['catch'](handleError(_0xe3f7c6,null));};exports[_0x3f1b('0x47')]=function(_0x21a60b,_0x537b70){var _0x280b31={'raw':!![],'where':{'id':_0x21a60b[_0x3f1b('0x48')]['id']}},_0x473511={};_0x473511[_0x3f1b('0x33')]=_[_0x3f1b('0x34')](db['Pause'][_0x3f1b('0x49')]);_0x473511[_0x3f1b('0x35')]=_[_0x3f1b('0x34')](_0x21a60b[_0x3f1b('0x35')]);_0x473511[_0x3f1b('0x36')]=_[_0x3f1b('0x37')](_0x473511[_0x3f1b('0x33')],_0x473511[_0x3f1b('0x35')]);_0x280b31[_0x3f1b('0x39')]=_[_0x3f1b('0x37')](_0x473511[_0x3f1b('0x33')],qs[_0x3f1b('0x38')](_0x21a60b['query'][_0x3f1b('0x38')]));_0x280b31[_0x3f1b('0x39')]=_0x280b31[_0x3f1b('0x39')]['length']?_0x280b31[_0x3f1b('0x39')]:_0x473511[_0x3f1b('0x33')];if(_0x21a60b[_0x3f1b('0x35')][_0x3f1b('0x45')]){_0x280b31['include']=[{'all':!![]}];}_0x280b31=_[_0x3f1b('0x42')]({},_0x280b31,_0x21a60b[_0x3f1b('0x44')]);return db[_0x3f1b('0x30')][_0x3f1b('0x4a')](_0x280b31)['then'](handleEntityNotFound(_0x537b70,null))['then'](respondWithResult(_0x537b70,null))['catch'](handleError(_0x537b70,null));};exports[_0x3f1b('0x4b')]=function(_0x179281,_0x883f65){return db['Pause'][_0x3f1b('0x4b')](_0x179281[_0x3f1b('0x4c')],{})['then'](function(_0x61172){var _0x2de037=_0x179281[_0x3f1b('0x4d')][_0x3f1b('0x25')]({'plain':!![]});if(!_0x2de037)throw new Error(_0x3f1b('0x4e'));if(_0x2de037[_0x3f1b('0x4f')]===_0x3f1b('0x4d')){var _0x549760=_0x61172[_0x3f1b('0x25')]({'plain':!![]});var _0x3c1215=_0x3f1b('0x26');return db[_0x3f1b('0x50')][_0x3f1b('0x4a')]({'where':{'name':_0x3c1215,'userProfileId':_0x2de037[_0x3f1b('0x51')]},'raw':!![]})[_0x3f1b('0x24')](function(_0x15e279){if(_0x15e279&&_0x15e279[_0x3f1b('0x52')]===0x0){return db[_0x3f1b('0x27')][_0x3f1b('0x4b')]({'name':_0x549760[_0x3f1b('0x2c')],'resourceId':_0x549760['id'],'type':_0x15e279['name'],'sectionId':_0x15e279['id']},{})[_0x3f1b('0x24')](function(){return _0x61172;});}else{return _0x61172;}})[_0x3f1b('0x53')](function(_0xfa1e77){logger[_0x3f1b('0x2b')](_0x3f1b('0x54'),_0xfa1e77);throw _0xfa1e77;});}return _0x61172;})[_0x3f1b('0x24')](respondWithResult(_0x883f65,0xc9))['catch'](handleError(_0x883f65,null));};exports[_0x3f1b('0x55')]=function(_0x19d490,_0x23952a){if(_0x19d490[_0x3f1b('0x4c')]['id']){delete _0x19d490[_0x3f1b('0x4c')]['id'];}return db[_0x3f1b('0x30')]['find']({'where':{'id':_0x19d490[_0x3f1b('0x48')]['id']}})[_0x3f1b('0x24')](handleEntityNotFound(_0x23952a,null))[_0x3f1b('0x24')](saveUpdates(_0x19d490[_0x3f1b('0x4c')],null))[_0x3f1b('0x24')](respondWithResult(_0x23952a,null))[_0x3f1b('0x53')](handleError(_0x23952a,null));};exports[_0x3f1b('0x28')]=function(_0x190abf,_0x36724a){return db[_0x3f1b('0x30')]['find']({'where':{'id':_0x190abf[_0x3f1b('0x48')]['id']}})[_0x3f1b('0x24')](handleEntityNotFound(_0x36724a,null))[_0x3f1b('0x24')](removeEntity(_0x36724a,null))[_0x3f1b('0x53')](handleError(_0x36724a,null));};
\ No newline at end of file
+var _0x031e=['filter','merge','options','Pause','includeAll','include','findAll','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','Pauses','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where'];(function(_0x275ae6,_0x51d1cb){var _0x4e6bd3=function(_0x507fea){while(--_0x507fea){_0x275ae6['push'](_0x275ae6['shift']());}};_0x4e6bd3(++_0x51d1cb);}(_0x031e,0x111));var _0xe031=function(_0x4e8286,_0x4eaeb4){_0x4e8286=_0x4e8286-0x0;var _0x44a440=_0x031e[_0x4e8286];return _0x44a440;};'use strict';var emlformat=require(_0xe031('0x0'));var rimraf=require(_0xe031('0x1'));var zipdir=require(_0xe031('0x2'));var jsonpatch=require(_0xe031('0x3'));var rp=require(_0xe031('0x4'));var moment=require(_0xe031('0x5'));var BPromise=require(_0xe031('0x6'));var Mustache=require(_0xe031('0x7'));var util=require('util');var path=require(_0xe031('0x8'));var sox=require(_0xe031('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe031('0xa'));var _=require(_0xe031('0xb'));var squel=require(_0xe031('0xc'));var crypto=require(_0xe031('0xd'));var jsforce=require(_0xe031('0xe'));var deskjs=require(_0xe031('0xf'));var toCsv=require(_0xe031('0x10'));var querystring=require(_0xe031('0x11'));var Papa=require(_0xe031('0x12'));var Redis=require(_0xe031('0x13'));var authService=require(_0xe031('0x14'));var qs=require(_0xe031('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe031('0x16'))(_0xe031('0x17'));var utils=require(_0xe031('0x18'));var config=require(_0xe031('0x19'));var licenseUtil=require(_0xe031('0x1a'));var db=require(_0xe031('0x1b'))['db'];function respondWithStatusCode(_0x2429a8,_0x28738b){_0x28738b=_0x28738b||0xcc;return function(_0x5aec10){if(_0x5aec10){return _0x2429a8['sendStatus'](_0x28738b);}return _0x2429a8[_0xe031('0x1c')](_0x28738b)[_0xe031('0x1d')]();};}function respondWithResult(_0x5b69e2,_0xa84caa){_0xa84caa=_0xa84caa||0xc8;return function(_0x58ada0){if(_0x58ada0){return _0x5b69e2[_0xe031('0x1c')](_0xa84caa)[_0xe031('0x1e')](_0x58ada0);}};}function respondWithFilteredResult(_0x231620,_0x11dfac){return function(_0x4f7e61){if(_0x4f7e61){var _0x48b746=typeof _0x11dfac[_0xe031('0x1f')]===_0xe031('0x20')&&typeof _0x11dfac[_0xe031('0x21')]===_0xe031('0x20');var _0x1c924b=_0x4f7e61[_0xe031('0x22')];var _0x171faf=_0x48b746?0x0:_0x11dfac[_0xe031('0x1f')];var _0x222973=_0x48b746?_0x4f7e61[_0xe031('0x22')]:_0x11dfac['offset']+_0x11dfac[_0xe031('0x21')];var _0x36b081;if(_0x222973>=_0x1c924b){_0x222973=_0x1c924b;_0x36b081=0xc8;}else{_0x36b081=0xce;}_0x231620[_0xe031('0x1c')](_0x36b081);return _0x231620[_0xe031('0x23')]('Content-Range',_0x171faf+'-'+_0x222973+'/'+_0x1c924b)[_0xe031('0x1e')](_0x4f7e61);}return null;};}function patchUpdates(_0x5b4334){return function(_0x333c2a){try{jsonpatch['apply'](_0x333c2a,_0x5b4334,!![]);}catch(_0x114cb5){return BPromise[_0xe031('0x24')](_0x114cb5);}return _0x333c2a[_0xe031('0x25')]();};}function saveUpdates(_0x5f04b2,_0x2f7659){return function(_0x5a3f8a){if(_0x5a3f8a){return _0x5a3f8a[_0xe031('0x26')](_0x5f04b2)[_0xe031('0x27')](function(_0x409e5d){return _0x409e5d;});}return null;};}function removeEntity(_0x15a177,_0x4d0d68){return function(_0x270cb0){if(_0x270cb0){return _0x270cb0[_0xe031('0x28')]()[_0xe031('0x27')](function(){var _0x474514=_0x270cb0[_0xe031('0x29')]({'plain':!![]});var _0x23c827=_0xe031('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x23c827,'resourceId':_0x474514['id']}})[_0xe031('0x27')](function(){return _0x270cb0;});})[_0xe031('0x27')](function(){_0x15a177[_0xe031('0x1c')](0xcc)[_0xe031('0x1d')]();});}};}function handleEntityNotFound(_0x39fc27,_0x8e8da8){return function(_0x14223e){if(!_0x14223e){_0x39fc27['sendStatus'](0x194);}return _0x14223e;};}function handleError(_0x373857,_0x254794){_0x254794=_0x254794||0x1f4;return function(_0x4268aa){logger['error'](_0x4268aa[_0xe031('0x2b')]);if(_0x4268aa['name']){delete _0x4268aa[_0xe031('0x2c')];}_0x373857[_0xe031('0x1c')](_0x254794)[_0xe031('0x2d')](_0x4268aa);};}exports[_0xe031('0x2e')]=function(_0x10c353,_0x54fa96){var _0x335fa1={},_0x5bd464={},_0x499fcb={'count':0x0,'rows':[]};var _0x42035b=_[_0xe031('0x2f')](db['Pause'][_0xe031('0x30')],function(_0x119571){return{'name':_0x119571['fieldName'],'type':_0x119571[_0xe031('0x31')][_0xe031('0x32')]};});_0x5bd464[_0xe031('0x33')]=_[_0xe031('0x2f')](_0x42035b,'name');_0x5bd464[_0xe031('0x34')]=_[_0xe031('0x35')](_0x10c353[_0xe031('0x34')]);_0x5bd464[_0xe031('0x36')]=_['intersection'](_0x5bd464[_0xe031('0x33')],_0x5bd464['query']);_0x335fa1['attributes']=_[_0xe031('0x37')](_0x5bd464[_0xe031('0x33')],qs['fields'](_0x10c353[_0xe031('0x34')][_0xe031('0x38')]));_0x335fa1[_0xe031('0x39')]=_0x335fa1[_0xe031('0x39')][_0xe031('0x3a')]?_0x335fa1[_0xe031('0x39')]:_0x5bd464[_0xe031('0x33')];if(!_0x10c353[_0xe031('0x34')][_0xe031('0x3b')](_0xe031('0x3c'))){_0x335fa1['limit']=qs[_0xe031('0x21')](_0x10c353['query'][_0xe031('0x21')]);_0x335fa1[_0xe031('0x1f')]=qs['offset'](_0x10c353[_0xe031('0x34')][_0xe031('0x1f')]);}_0x335fa1['order']=qs['sort'](_0x10c353[_0xe031('0x34')][_0xe031('0x3d')]);_0x335fa1[_0xe031('0x3e')]=qs['filters'](_['pick'](_0x10c353[_0xe031('0x34')],_0x5bd464[_0xe031('0x36')]),_0x42035b);if(_0x10c353[_0xe031('0x34')][_0xe031('0x3f')]){_0x335fa1[_0xe031('0x3e')]=_[_0xe031('0x40')](_0x335fa1[_0xe031('0x3e')],{'$or':_[_0xe031('0x2f')](_0x42035b,function(_0x1d454c){if(_0x1d454c[_0xe031('0x31')]!=='VIRTUAL'){var _0x5c9858={};_0x5c9858[_0x1d454c['name']]={'$like':'%'+_0x10c353[_0xe031('0x34')]['filter']+'%'};return _0x5c9858;}})});}_0x335fa1=_['merge']({},_0x335fa1,_0x10c353[_0xe031('0x41')]);var _0x50d6f7={'where':_0x335fa1[_0xe031('0x3e')]};return db[_0xe031('0x42')][_0xe031('0x22')](_0x50d6f7)[_0xe031('0x27')](function(_0x5b57b7){_0x499fcb[_0xe031('0x22')]=_0x5b57b7;if(_0x10c353[_0xe031('0x34')][_0xe031('0x43')]){_0x335fa1[_0xe031('0x44')]=[{'all':!![]}];}return db[_0xe031('0x42')][_0xe031('0x45')](_0x335fa1);})['then'](function(_0x3b6d3a){_0x499fcb['rows']=_0x3b6d3a;return _0x499fcb;})['then'](respondWithFilteredResult(_0x54fa96,_0x335fa1))['catch'](handleError(_0x54fa96,null));};exports[_0xe031('0x46')]=function(_0x14c3f0,_0x4047b8){var _0x1851ec={'raw':!![],'where':{'id':_0x14c3f0[_0xe031('0x47')]['id']}},_0xc1fac={};_0xc1fac[_0xe031('0x33')]=_[_0xe031('0x35')](db[_0xe031('0x42')][_0xe031('0x30')]);_0xc1fac[_0xe031('0x34')]=_[_0xe031('0x35')](_0x14c3f0[_0xe031('0x34')]);_0xc1fac[_0xe031('0x36')]=_['intersection'](_0xc1fac[_0xe031('0x33')],_0xc1fac[_0xe031('0x34')]);_0x1851ec[_0xe031('0x39')]=_[_0xe031('0x37')](_0xc1fac[_0xe031('0x33')],qs[_0xe031('0x38')](_0x14c3f0['query']['fields']));_0x1851ec['attributes']=_0x1851ec[_0xe031('0x39')]['length']?_0x1851ec['attributes']:_0xc1fac['model'];if(_0x14c3f0[_0xe031('0x34')][_0xe031('0x43')]){_0x1851ec['include']=[{'all':!![]}];}_0x1851ec=_['merge']({},_0x1851ec,_0x14c3f0[_0xe031('0x41')]);return db[_0xe031('0x42')][_0xe031('0x48')](_0x1851ec)[_0xe031('0x27')](handleEntityNotFound(_0x4047b8,null))[_0xe031('0x27')](respondWithResult(_0x4047b8,null))[_0xe031('0x49')](handleError(_0x4047b8,null));};exports[_0xe031('0x4a')]=function(_0x187aff,_0x1b9dbb){return db['Pause']['create'](_0x187aff[_0xe031('0x4b')],{})[_0xe031('0x27')](function(_0x370d67){var _0x5422b0=_0x187aff[_0xe031('0x4c')][_0xe031('0x29')]({'plain':!![]});if(!_0x5422b0)throw new Error(_0xe031('0x4d'));if(_0x5422b0[_0xe031('0x4e')]===_0xe031('0x4c')){var _0x3adf84=_0x370d67[_0xe031('0x29')]({'plain':!![]});var _0x3dec1d=_0xe031('0x2a');return db[_0xe031('0x4f')]['find']({'where':{'name':_0x3dec1d,'userProfileId':_0x5422b0[_0xe031('0x50')]},'raw':!![]})[_0xe031('0x27')](function(_0x35fbc6){if(_0x35fbc6&&_0x35fbc6[_0xe031('0x51')]===0x0){return db[_0xe031('0x52')]['create']({'name':_0x3adf84[_0xe031('0x2c')],'resourceId':_0x3adf84['id'],'type':_0x35fbc6[_0xe031('0x2c')],'sectionId':_0x35fbc6['id']},{})[_0xe031('0x27')](function(){return _0x370d67;});}else{return _0x370d67;}})['catch'](function(_0x3e002e){logger[_0xe031('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e002e);throw _0x3e002e;});}return _0x370d67;})[_0xe031('0x27')](respondWithResult(_0x1b9dbb,0xc9))[_0xe031('0x49')](handleError(_0x1b9dbb,null));};exports[_0xe031('0x26')]=function(_0x4a21ac,_0x44f19){if(_0x4a21ac[_0xe031('0x4b')]['id']){delete _0x4a21ac[_0xe031('0x4b')]['id'];}return db['Pause'][_0xe031('0x48')]({'where':{'id':_0x4a21ac[_0xe031('0x47')]['id']}})[_0xe031('0x27')](handleEntityNotFound(_0x44f19,null))[_0xe031('0x27')](saveUpdates(_0x4a21ac['body'],null))[_0xe031('0x27')](respondWithResult(_0x44f19,null))[_0xe031('0x49')](handleError(_0x44f19,null));};exports[_0xe031('0x28')]=function(_0x31bada,_0x1ed2d4){return db[_0xe031('0x42')][_0xe031('0x48')]({'where':{'id':_0x31bada[_0xe031('0x47')]['id']}})[_0xe031('0x27')](handleEntityNotFound(_0x1ed2d4,null))['then'](removeEntity(_0x1ed2d4,null))[_0xe031('0x49')](handleError(_0x1ed2d4,null));};
\ No newline at end of file
index 9b1c372..fcc5dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0x1230c6,_0x31488a){var _0x13a497=function(_0xefb5e5){while(--_0xefb5e5){_0x1230c6['push'](_0x1230c6['shift']());}};_0x13a497(++_0x31488a);}(_0x814b,0x1a2));var _0xb814=function(_0x587dd0,_0x273922){_0x587dd0=_0x587dd0-0x0;var _0x56f153=_0x814b[_0x587dd0];return _0x56f153;};'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 49e36fb..7e3edc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x4844eb,_0x1887b9){var _0x32661b=function(_0x478aaa){while(--_0x478aaa){_0x4844eb['push'](_0x4844eb['shift']());}};_0x32661b(++_0x1887b9);}(_0xb10b,0x12a));var _0xbb10=function(_0x533d54,_0x29c8ab){_0x533d54=_0x533d54-0x0;var _0x4e03f5=_0xb10b[_0x533d54];return _0x4e03f5;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _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(_0xa281f4,_0x2177a7){var _0x388e82=function(_0x281d3b){while(--_0x281d3b){_0xa281f4['push'](_0xa281f4['shift']());}};_0x388e82(++_0x2177a7);}(_0xb10b,0x12a));var _0xbb10=function(_0x294747,_0x379ea7){_0x294747=_0x294747-0x0;var _0x1a4b30=_0xb10b[_0x294747];return _0x1a4b30;};'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 06cee1a..37a8cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032e=['show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','post','single','file','upload','webhookPost','put','update','delete','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id'];(function(_0x1bd4d1,_0x4079fc){var _0x230185=function(_0x56e1be){while(--_0x56e1be){_0x1bd4d1['push'](_0x1bd4d1['shift']());}};_0x230185(++_0x4079fc);}(_0x032e,0x124));var _0xe032=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x032e[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0xe032('0x0'));var util=require('util');var path=require(_0xe032('0x1'));var timeout=require(_0xe032('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe032('0x3'));var auth=require(_0xe032('0x4'));var interaction=require(_0xe032('0x5'));var config=require(_0xe032('0x6'));var controller=require(_0xe032('0x7'));router[_0xe032('0x8')]('/',auth[_0xe032('0x9')](),controller[_0xe032('0xa')]);router[_0xe032('0x8')](_0xe032('0xb'),controller[_0xe032('0xc')]);router[_0xe032('0x8')](_0xe032('0xd'),auth[_0xe032('0x9')](),controller[_0xe032('0xe')]);router[_0xe032('0x8')](_0xe032('0xf'),auth[_0xe032('0x9')](),controller['download']);var upload=multer({'storage':multer[_0xe032('0x10')]({'destination':function(_0x1ce2ae,_0x13c126,_0x42e2ba){_0x42e2ba(null,path[_0xe032('0x11')](config[_0xe032('0x12')],_0xe032('0x13')));},'filename':function(_0x5bcb5b,_0x646979,_0x266d71){_0x646979[_0xe032('0x14')]=_0x646979[_0xe032('0x14')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x266d71(null,util[_0xe032('0x15')](_0xe032('0x16'),path[_0xe032('0x17')](_0x646979[_0xe032('0x14')],path[_0xe032('0x18')](_0x646979[_0xe032('0x14')])),Date[_0xe032('0x19')](),path['extname'](_0x646979[_0xe032('0x14')])));}})});router[_0xe032('0x1a')]('/',upload[_0xe032('0x1b')](_0xe032('0x1c')),controller[_0xe032('0x1d')]);router[_0xe032('0x1a')]('/webhook',controller[_0xe032('0x1e')]);router[_0xe032('0x1f')](_0xe032('0xd'),auth[_0xe032('0x9')](),controller[_0xe032('0x20')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe032('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0x4c4e=['webhookGet','/:id','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','basename','now','extname','post','single','file','upload','webhookPost','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','isAuthenticated','index','get','/webhook'];(function(_0x174283,_0x3fd836){var _0x139f1a=function(_0xfe1f95){while(--_0xfe1f95){_0x174283['push'](_0x174283['shift']());}};_0x139f1a(++_0x3fd836);}(_0x4c4e,0x152));var _0xe4c4=function(_0x55fbbf,_0x56b50f){_0x55fbbf=_0x55fbbf-0x0;var _0x1f01a0=_0x4c4e[_0x55fbbf];return _0x1f01a0;};'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'),controller[_0xe4c4('0xc')]);router[_0xe4c4('0xa')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller['show']);router['get'](_0xe4c4('0xe'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xf')]);var upload=multer({'storage':multer[_0xe4c4('0x10')]({'destination':function(_0x333c08,_0x2f4d5f,_0x50264f){_0x50264f(null,path[_0xe4c4('0x11')](config[_0xe4c4('0x12')],_0xe4c4('0x13')));},'filename':function(_0x2483d0,_0x50bfab,_0x262083){_0x50bfab[_0xe4c4('0x14')]=_0x50bfab['originalname'][_0xe4c4('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x262083(null,util[_0xe4c4('0x16')]('%s-%s%s',path[_0xe4c4('0x17')](_0x50bfab[_0xe4c4('0x14')],path['extname'](_0x50bfab[_0xe4c4('0x14')])),Date[_0xe4c4('0x18')](),path[_0xe4c4('0x19')](_0x50bfab[_0xe4c4('0x14')])));}})});router[_0xe4c4('0x1a')]('/',upload[_0xe4c4('0x1b')](_0xe4c4('0x1c')),controller[_0xe4c4('0x1d')]);router[_0xe4c4('0x1a')](_0xe4c4('0xb'),controller[_0xe4c4('0x1e')]);router[_0xe4c4('0x1f')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x20')]);router['delete'](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x21')]);module[_0xe4c4('0x22')]=router;
\ No newline at end of file
index 5f2cfb5..832130d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf89f=['TEXT','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html'];(function(_0x18a577,_0x25560c){var _0x1cb0c7=function(_0x195eeb){while(--_0x195eeb){_0x18a577['push'](_0x18a577['shift']());}};_0x1cb0c7(++_0x25560c);}(_0xf89f,0xed));var _0xff89=function(_0x313e54,_0x1e0cc6){_0x313e54=_0x313e54-0x0;var _0x54462d=_0xf89f[_0x313e54];return _0x54462d;};'use strict';var Sequelize=require(_0xff89('0x0'));module[_0xff89('0x1')]={'name':{'type':Sequelize[_0xff89('0x2')]},'type':{'type':Sequelize[_0xff89('0x3')](_0xff89('0x4'),'script')},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0xff89('0x5')]},'path':{'type':Sequelize[_0xff89('0x2')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xff89('0x3')](_0xff89('0x6'),_0xff89('0x7'),_0xff89('0x8'),_0xff89('0x9')),'defaultValue':_0xff89('0x8'),'comment':_0xff89('0xa')},'icon':{'type':Sequelize[_0xff89('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xff89('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0xff89('0x2')]}};
\ No newline at end of file
+var _0x2acf=['exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','agentOnly','always','never'];(function(_0x44697e,_0x43d929){var _0x3dfe88=function(_0x53dc7f){while(--_0x53dc7f){_0x44697e['push'](_0x44697e['shift']());}};_0x3dfe88(++_0x43d929);}(_0x2acf,0x118));var _0xf2ac=function(_0x4d8666,_0x2ff19d){_0x4d8666=_0x4d8666-0x0;var _0x37175b=_0x2acf[_0x4d8666];return _0x37175b;};'use strict';var Sequelize=require('sequelize');module[_0xf2ac('0x0')]={'name':{'type':Sequelize[_0xf2ac('0x1')]},'type':{'type':Sequelize[_0xf2ac('0x2')](_0xf2ac('0x3'),'script')},'description':{'type':Sequelize[_0xf2ac('0x4')]},'version':{'type':Sequelize[_0xf2ac('0x4')]},'path':{'type':Sequelize[_0xf2ac('0x1')],'comment':_0xf2ac('0x5')},'active':{'type':Sequelize[_0xf2ac('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM']('adminOnly',_0xf2ac('0x7'),_0xf2ac('0x8'),_0xf2ac('0x9')),'defaultValue':_0xf2ac('0x8'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0xf2ac('0x1')]},'agentUrl':{'type':Sequelize[_0xf2ac('0x1')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7bd0a48..c990d79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ccd=['Error','glob','**/*','server/files/plugins','node_modules/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','info','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','views','admin','agent','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','always','icon','icon-apps','version','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','json','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','end','undefined','limit','count','offset','set','apply','save','update','destroy','then','get','error','stack','name','send','Plugin','rawAttributes','fieldName','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','download','find','join','root','format','%s.zip','basename','createWriteStream','zip','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive'];(function(_0x2164c6,_0x3831e3){var _0x553100=function(_0x2ffcd4){while(--_0x2ffcd4){_0x2164c6['push'](_0x2164c6['shift']());}};_0x553100(++_0x3831e3);}(_0x5ccd,0x101));var _0xd5cc=function(_0x4f51f9,_0x5d5613){_0x4f51f9=_0x4f51f9-0x0;var _0x533984=_0x5ccd[_0x4f51f9];return _0x533984;};'use strict';var emlformat=require(_0xd5cc('0x0'));var rimraf=require(_0xd5cc('0x1'));var zipdir=require(_0xd5cc('0x2'));var jsonpatch=require(_0xd5cc('0x3'));var rp=require('request-promise');var moment=require(_0xd5cc('0x4'));var BPromise=require(_0xd5cc('0x5'));var Mustache=require(_0xd5cc('0x6'));var util=require('util');var path=require(_0xd5cc('0x7'));var sox=require('sox');var csv=require(_0xd5cc('0x8'));var ejs=require(_0xd5cc('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd5cc('0xa'));var squel=require(_0xd5cc('0xb'));var crypto=require(_0xd5cc('0xc'));var jsforce=require(_0xd5cc('0xd'));var deskjs=require(_0xd5cc('0xe'));var toCsv=require(_0xd5cc('0x8'));var querystring=require(_0xd5cc('0xf'));var Papa=require('papaparse');var extract=require(_0xd5cc('0x10'));var rimraf=require('rimraf');var archiver=require(_0xd5cc('0x11'));var Redis=require(_0xd5cc('0x12'));var authService=require(_0xd5cc('0x13'));var qs=require(_0xd5cc('0x14'));var as=require(_0xd5cc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd5cc('0x16'));var config=require(_0xd5cc('0x17'));var licenseUtil=require(_0xd5cc('0x18'));var db=require(_0xd5cc('0x19'))['db'];config[_0xd5cc('0x1a')]=_[_0xd5cc('0x1b')](config[_0xd5cc('0x1a')],{'host':_0xd5cc('0x1c'),'port':0x18eb});var socket=require(_0xd5cc('0x1d'))(new Redis(config[_0xd5cc('0x1a')]));require(_0xd5cc('0x1e'))['register'](socket);function respondWithStatusCode(_0x4aacdb,_0x19e336){_0x19e336=_0x19e336||0xcc;return function(_0x216270){if(_0x216270){return _0x4aacdb[_0xd5cc('0x1f')](_0x19e336);}return _0x4aacdb[_0xd5cc('0x20')](_0x19e336)[_0xd5cc('0x21')]();};}function respondWithResult(_0x292962,_0x4e92e6){_0x4e92e6=_0x4e92e6||0xc8;return function(_0x5d8a08){if(_0x5d8a08){return _0x292962[_0xd5cc('0x20')](_0x4e92e6)['json'](_0x5d8a08);}};}function respondWithFilteredResult(_0xc738e8,_0x38ba31){return function(_0x2a68bc){if(_0x2a68bc){var _0x275a73=typeof _0x38ba31['offset']===_0xd5cc('0x22')&&typeof _0x38ba31[_0xd5cc('0x23')]==='undefined';var _0x1b77a9=_0x2a68bc[_0xd5cc('0x24')];var _0x1051bb=_0x275a73?0x0:_0x38ba31[_0xd5cc('0x25')];var _0x504354=_0x275a73?_0x2a68bc[_0xd5cc('0x24')]:_0x38ba31[_0xd5cc('0x25')]+_0x38ba31[_0xd5cc('0x23')];var _0x1afbaf;if(_0x504354>=_0x1b77a9){_0x504354=_0x1b77a9;_0x1afbaf=0xc8;}else{_0x1afbaf=0xce;}_0xc738e8[_0xd5cc('0x20')](_0x1afbaf);return _0xc738e8[_0xd5cc('0x26')]('Content-Range',_0x1051bb+'-'+_0x504354+'/'+_0x1b77a9)['json'](_0x2a68bc);}return null;};}function patchUpdates(_0x56aee6){return function(_0x15a245){try{jsonpatch[_0xd5cc('0x27')](_0x15a245,_0x56aee6,!![]);}catch(_0x1f70c2){return BPromise['reject'](_0x1f70c2);}return _0x15a245[_0xd5cc('0x28')]();};}function saveUpdates(_0x31f08e,_0x58e147){return function(_0x101fc4){if(_0x101fc4){return _0x101fc4[_0xd5cc('0x29')](_0x31f08e)['then'](function(_0x146736){return _0x146736;});}return null;};}function removeEntity(_0x1d355f,_0x175abb){return function(_0x20ce0d){if(_0x20ce0d){return _0x20ce0d[_0xd5cc('0x2a')]()[_0xd5cc('0x2b')](function(){var _0x1ca91a=_0x20ce0d[_0xd5cc('0x2c')]({'plain':!![]});var _0x4cb435='Plugins';return db['UserProfileResource'][_0xd5cc('0x2a')]({'where':{'type':_0x4cb435,'resourceId':_0x1ca91a['id']}})[_0xd5cc('0x2b')](function(){return _0x20ce0d;});})['then'](function(){_0x1d355f['status'](0xcc)[_0xd5cc('0x21')]();});}};}function handleEntityNotFound(_0x409e0f,_0x3411c1){return function(_0x4c4ace){if(!_0x4c4ace){_0x409e0f[_0xd5cc('0x1f')](0x194);}return _0x4c4ace;};}function handleError(_0x2820e3,_0x4a9389){_0x4a9389=_0x4a9389||0x1f4;return function(_0x33d165){logger[_0xd5cc('0x2d')](_0x33d165[_0xd5cc('0x2e')]);if(_0x33d165[_0xd5cc('0x2f')]){delete _0x33d165['name'];}_0x2820e3[_0xd5cc('0x20')](_0x4a9389)[_0xd5cc('0x30')](_0x33d165);};}exports['index']=function(_0x1c20c2,_0x512e6f){var _0x36172f={},_0x3b18b7={},_0x57f0f5={'count':0x0,'rows':[]};var _0x26ba83=_['map'](db[_0xd5cc('0x31')][_0xd5cc('0x32')],function(_0x38c729){return{'name':_0x38c729[_0xd5cc('0x33')],'type':_0x38c729[_0xd5cc('0x34')][_0xd5cc('0x35')]};});_0x3b18b7['model']=_[_0xd5cc('0x36')](_0x26ba83,_0xd5cc('0x2f'));_0x3b18b7[_0xd5cc('0x37')]=_[_0xd5cc('0x38')](_0x1c20c2['query']);_0x3b18b7[_0xd5cc('0x39')]=_['intersection'](_0x3b18b7[_0xd5cc('0x3a')],_0x3b18b7[_0xd5cc('0x37')]);_0x36172f[_0xd5cc('0x3b')]=_[_0xd5cc('0x3c')](_0x3b18b7[_0xd5cc('0x3a')],qs[_0xd5cc('0x3d')](_0x1c20c2['query']['fields']));_0x36172f[_0xd5cc('0x3b')]=_0x36172f['attributes'][_0xd5cc('0x3e')]?_0x36172f['attributes']:_0x3b18b7[_0xd5cc('0x3a')];if(!_0x1c20c2['query'][_0xd5cc('0x3f')](_0xd5cc('0x40'))){_0x36172f[_0xd5cc('0x23')]=qs[_0xd5cc('0x23')](_0x1c20c2['query']['limit']);_0x36172f[_0xd5cc('0x25')]=qs[_0xd5cc('0x25')](_0x1c20c2[_0xd5cc('0x37')]['offset']);}_0x36172f[_0xd5cc('0x41')]=qs[_0xd5cc('0x42')](_0x1c20c2[_0xd5cc('0x37')][_0xd5cc('0x42')]);_0x36172f['where']=qs['filters'](_[_0xd5cc('0x43')](_0x1c20c2['query'],_0x3b18b7[_0xd5cc('0x39')]),_0x26ba83);if(_0x1c20c2[_0xd5cc('0x37')][_0xd5cc('0x44')]){_0x36172f[_0xd5cc('0x45')]=_[_0xd5cc('0x46')](_0x36172f[_0xd5cc('0x45')],{'$or':_[_0xd5cc('0x36')](_0x26ba83,function(_0x323c46){if(_0x323c46[_0xd5cc('0x34')]!==_0xd5cc('0x47')){var _0x50e866={};_0x50e866[_0x323c46[_0xd5cc('0x2f')]]={'$like':'%'+_0x1c20c2[_0xd5cc('0x37')][_0xd5cc('0x44')]+'%'};return _0x50e866;}})});}_0x36172f=_[_0xd5cc('0x46')]({},_0x36172f,_0x1c20c2['options']);var _0x20e328={'where':_0x36172f['where']};return db[_0xd5cc('0x31')][_0xd5cc('0x24')](_0x20e328)[_0xd5cc('0x2b')](function(_0x5f08db){_0x57f0f5[_0xd5cc('0x24')]=_0x5f08db;if(_0x1c20c2['query'][_0xd5cc('0x48')]){_0x36172f[_0xd5cc('0x49')]=[{'all':!![]}];}return db['Plugin'][_0xd5cc('0x4a')](_0x36172f);})[_0xd5cc('0x2b')](function(_0x57bbd9){_0x57f0f5[_0xd5cc('0x4b')]=_0x57bbd9;return _0x57f0f5;})['then'](respondWithFilteredResult(_0x512e6f,_0x36172f))[_0xd5cc('0x4c')](handleError(_0x512e6f,null));};exports[_0xd5cc('0x4d')]=function(_0x558868,_0x43381a){var _0x12f383={'raw':!![],'where':{'id':_0x558868[_0xd5cc('0x4e')]['id']}},_0x23228a={};_0x23228a[_0xd5cc('0x3a')]=_[_0xd5cc('0x38')](db[_0xd5cc('0x31')][_0xd5cc('0x32')]);_0x23228a[_0xd5cc('0x37')]=_[_0xd5cc('0x38')](_0x558868[_0xd5cc('0x37')]);_0x23228a[_0xd5cc('0x39')]=_[_0xd5cc('0x3c')](_0x23228a[_0xd5cc('0x3a')],_0x23228a[_0xd5cc('0x37')]);_0x12f383[_0xd5cc('0x3b')]=_[_0xd5cc('0x3c')](_0x23228a[_0xd5cc('0x3a')],qs[_0xd5cc('0x3d')](_0x558868[_0xd5cc('0x37')][_0xd5cc('0x3d')]));_0x12f383[_0xd5cc('0x3b')]=_0x12f383['attributes']['length']?_0x12f383[_0xd5cc('0x3b')]:_0x23228a[_0xd5cc('0x3a')];if(_0x558868[_0xd5cc('0x37')]['includeAll']){_0x12f383[_0xd5cc('0x49')]=[{'all':!![]}];}_0x12f383=_['merge']({},_0x12f383,_0x558868[_0xd5cc('0x4f')]);return db['Plugin']['find'](_0x12f383)[_0xd5cc('0x2b')](handleEntityNotFound(_0x43381a,null))[_0xd5cc('0x2b')](respondWithResult(_0x43381a,null))[_0xd5cc('0x4c')](handleError(_0x43381a,null));};exports[_0xd5cc('0x50')]=function(_0x4df922,_0x25318e,_0x3bf404){return db[_0xd5cc('0x31')][_0xd5cc('0x51')]({'where':{'id':_0x4df922[_0xd5cc('0x4e')]['id']},'attributes':[_0xd5cc('0x2f'),_0xd5cc('0x7')],'raw':!![]})['then'](handleEntityNotFound(_0x25318e,null))[_0xd5cc('0x2b')](function(_0x3aac1e){if(_0x3aac1e){var _0x16eac5=path[_0xd5cc('0x52')](config[_0xd5cc('0x53')],'server/files/plugins',util[_0xd5cc('0x54')](_0xd5cc('0x55'),path[_0xd5cc('0x56')](_0x3aac1e[_0xd5cc('0x7')])));var _0x27a004=fs[_0xd5cc('0x57')](_0x16eac5);var _0x53c4fc=archiver(_0xd5cc('0x58'),{'zlib':{'level':0x9}});_0x53c4fc['on']('warning',function(_0x3ec9bb){if(_0x3ec9bb[_0xd5cc('0x59')]===_0xd5cc('0x5a')){logger['error'](_0x3ec9bb);}else{throw new db[(_0xd5cc('0x5b'))]['Error'](_0xd5cc('0x5c'));}});_0x53c4fc['on'](_0xd5cc('0x2d'),function(_0x21ad75){throw new db[(_0xd5cc('0x5b'))][(_0xd5cc('0x5d'))](_0xd5cc('0x5c'));});_0x53c4fc['pipe'](_0x27a004);_0x53c4fc[_0xd5cc('0x5e')](_0xd5cc('0x5f'),{'cwd':path[_0xd5cc('0x52')](config[_0xd5cc('0x53')],_0xd5cc('0x60'),path['dirname'](_0x3aac1e['path'])),'ignore':[path[_0xd5cc('0x52')](path[_0xd5cc('0x56')](_0x3aac1e[_0xd5cc('0x7')]),_0xd5cc('0x61')),path[_0xd5cc('0x52')](path[_0xd5cc('0x56')](_0x3aac1e[_0xd5cc('0x7')]),'attachments/**/*')],'nodir':!![]})[_0xd5cc('0x62')]();_0x27a004['on'](_0xd5cc('0x63'),function(){if(!fs[_0xd5cc('0x64')](_0x16eac5)){throw new db[(_0xd5cc('0x5b'))][(_0xd5cc('0x5d'))](_0xd5cc('0x65'));}return _0x25318e['download'](_0x16eac5,util['format']('%s.zip',path[_0xd5cc('0x56')](_0x3aac1e[_0xd5cc('0x7')])),function(_0x15b57b){if(_0x15b57b){throw new db[(_0xd5cc('0x5b'))][(_0xd5cc('0x5d'))](_0xd5cc('0x66'));}fs[_0xd5cc('0x67')](_0x16eac5);logger['info'](_0xd5cc('0x68'));logger['info'](_0xd5cc('0x69'));});});}return null;})[_0xd5cc('0x4c')](handleError(_0x25318e,null));};exports[_0xd5cc('0x6a')]=function(_0xbe3c64,_0x507459,_0x4a7625){var _0xfca16=path[_0xd5cc('0x56')](_0xbe3c64[_0xd5cc('0x6b')][_0xd5cc('0x6c')],path[_0xd5cc('0x6d')](_0xbe3c64[_0xd5cc('0x6b')][_0xd5cc('0x6c')]));var _0x4e4799=path[_0xd5cc('0x52')](config[_0xd5cc('0x53')],'server/files/plugins',_0xbe3c64[_0xd5cc('0x6b')][_0xd5cc('0x6c')]);var _0x1307ac=path['join'](config['root'],_0xd5cc('0x60'),_0xfca16);logger[_0xd5cc('0x6e')](_0xd5cc('0x6f'),_0x4e4799);logger[_0xd5cc('0x6e')](_0xd5cc('0x70'),_0x1307ac);try{fs['chmodSync'](_0x4e4799,parseInt(_0xd5cc('0x71'),0x8));extract(_0x4e4799,{'dir':_0x1307ac},function(_0x5392c0){if(_0x5392c0){logger['error'](_0x5392c0);handleError(_0x5392c0,!![]);};var _0x4e541e=fs[_0xd5cc('0x72')](_0x1307ac);if(_0x4e541e[_0xd5cc('0x3e')]>0x1){removeReferences(_0x4e4799,_0x1307ac);logger[_0xd5cc('0x2d')](_0xd5cc('0x73'));return _0x4a7625(new Error(_0xd5cc('0x73')));}var _0x3f254c=fs['lstatSync'](path[_0xd5cc('0x52')](_0x1307ac,_0x4e541e[0x0]));if(_0x3f254c[_0xd5cc('0x74')]()){removeReferences(_0x4e4799,_0x1307ac);logger[_0xd5cc('0x2d')]('Invalid\x20plugin\x20structure');return _0x4a7625(new Error('Invalid\x20plugin\x20structure'));}if(_0x3f254c[_0xd5cc('0x75')]()){var _0x1732ed=fs[_0xd5cc('0x72')](path[_0xd5cc('0x52')](_0x1307ac,_0x4e541e[0x0]));if(_0x1732ed[_0xd5cc('0x3e')]===0x0){removeReferences(_0x4e4799,_0x1307ac);logger[_0xd5cc('0x2d')](_0xd5cc('0x73'));return _0x4a7625(new Error(_0xd5cc('0x73')));}var _0x4994d2=_0x1732ed[_0xd5cc('0x76')](function(_0x33a87f){return _0x33a87f===_0xd5cc('0x77');});if(!_0x4994d2){return _0x4a7625(new Error(_0xd5cc('0x78')));}var _0x2c6e73=fs[_0xd5cc('0x79')](path[_0xd5cc('0x52')](_0x1307ac,_0x4e541e[0x0],_0xd5cc('0x77')));var _0x47f7e7=JSON[_0xd5cc('0x7a')](_0x2c6e73);if(_0xd5cc('0x22')==typeof _0x47f7e7['name']){return _0x4a7625(new Error(_0xd5cc('0x7b')));}if(_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x34')]){return _0x4a7625(new Error(_0xd5cc('0x7c')));}if(_0xd5cc('0x22')==typeof _0x47f7e7['version']){return _0x4a7625(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x7d')]){return _0x4a7625(new Error(_0xd5cc('0x7e')));}if(_0x47f7e7[_0xd5cc('0x34')]===_0xd5cc('0x7f')){if(_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x7d')]['views']){return _0x4a7625(new Error(_0xd5cc('0x80')));}if(_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x81')][_0xd5cc('0x82')]&&_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x7d')]['views'][_0xd5cc('0x83')]){return _0x4a7625(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x47f7e7[_0xd5cc('0x34')]===_0xd5cc('0x84')){if(_0xd5cc('0x22')==typeof _0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x85')]){return _0x4a7625(new Error(_0xd5cc('0x86')));}if('undefined'==typeof _0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x87')]){return _0x4a7625(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x4a7625(new Error(_0xd5cc('0x88')));}var _0x5cb4ec=_0x47f7e7[_0xd5cc('0x2f')];var _0x3c1f65=_0x47f7e7[_0xd5cc('0x89')];var _0x1dd06e=_0x47f7e7[_0xd5cc('0x34')];var _0x1ed974=_0x47f7e7['sidebar']?_0x47f7e7['sidebar']:_0xd5cc('0x8a');var _0x2b0bbb=_0x47f7e7[_0xd5cc('0x8b')]?_0x47f7e7[_0xd5cc('0x8b')]:_0xd5cc('0x8c');var _0x3ff8a6='';var _0x3faadf='';var _0x4c82fd='';var _0x550f64='';var _0x44ae2c=_0x47f7e7[_0xd5cc('0x8d')];if(_0x1dd06e==='html'){if(_0xd5cc('0x22')!=typeof _0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x81')][_0xd5cc('0x82')]){var _0x11d4ba=_0x47f7e7['parameters'][_0xd5cc('0x81')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xd5cc('0x8e')](_0x11d4ba)){_0x3ff8a6=path[_0xd5cc('0x52')](_0xd5cc('0x8f'),_0xfca16,_0x4e541e[0x0],_0x11d4ba);}else{_0x3ff8a6=_0x11d4ba;}}else{logger[_0xd5cc('0x6e')](_0xd5cc('0x90'));}if('undefined'!=typeof _0x47f7e7['parameters'][_0xd5cc('0x81')][_0xd5cc('0x83')]){var _0xfeca04=_0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x81')][_0xd5cc('0x83')];if(!/^(f|ht)tps?:\/\//i[_0xd5cc('0x8e')](_0xfeca04)){_0x3faadf=path[_0xd5cc('0x52')]('plugins',_0xfca16,_0x4e541e[0x0],_0xfeca04);}else{_0x3faadf=_0xfeca04;}}else{logger[_0xd5cc('0x6e')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x1dd06e===_0xd5cc('0x84')){_0x4c82fd=_0x47f7e7[_0xd5cc('0x7d')]['scriptName'];_0x550f64=_0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x87')];if(_0xd5cc('0x22')!=typeof _0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x81')]){if(_0xd5cc('0x22')!=typeof _0x47f7e7[_0xd5cc('0x7d')]['views'][_0xd5cc('0x82')]){var _0x11d4ba=_0x47f7e7[_0xd5cc('0x7d')]['views'][_0xd5cc('0x82')];if(!/^(f|ht)tps?:\/\//i[_0xd5cc('0x8e')](_0x11d4ba)){_0x3ff8a6=path[_0xd5cc('0x52')]('plugins',_0xfca16,_0x4e541e[0x0],_0x11d4ba);}else{_0x3ff8a6=_0x11d4ba;}}if(_0xd5cc('0x22')!=typeof _0x47f7e7['parameters'][_0xd5cc('0x81')][_0xd5cc('0x83')]){var _0xfeca04=_0x47f7e7[_0xd5cc('0x7d')][_0xd5cc('0x81')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xd5cc('0x8e')](_0xfeca04)){_0x3faadf=path['join'](_0xd5cc('0x8f'),_0xfca16,_0x4e541e[0x0],_0xfeca04);}else{_0x3faadf=_0xfeca04;}}}}var _0xf18c14={'name':_0x5cb4ec,'description':_0x3c1f65,'path':path[_0xd5cc('0x52')](_0xfca16,_0x4e541e[0x0]),'type':_0x1dd06e,'sidebar':_0x1ed974,'icon':_0x2b0bbb,'adminUrl':_0x3ff8a6,'agentUrl':_0x3faadf,'scriptName':_0x4c82fd,'scriptPath':_0x550f64,'version':_0x44ae2c};removeReferences(_0x4e4799,null);return db['Plugin'][_0xd5cc('0x91')](_0xf18c14)[_0xd5cc('0x2b')](function(_0x51f743){var _0x392553={'role':_0xbe3c64[_0xd5cc('0x92')][_0xd5cc('0x93')],'userProfileId':_0xbe3c64[_0xd5cc('0x92')]['userProfileId']};if(!_0x392553)throw new Error(_0xd5cc('0x94'));if(_0x392553['role']===_0xd5cc('0x95')){var _0x449b3f=_0x51f743['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Plugins','userProfileId':_0x392553[_0xd5cc('0x96')]},'raw':!![]})[_0xd5cc('0x2b')](function(_0x5e8554){if(_0x5e8554&&_0x5e8554[_0xd5cc('0x97')]===0x0){return db[_0xd5cc('0x98')][_0xd5cc('0x91')]({'name':_0x449b3f['name'],'resourceId':_0x449b3f['id'],'type':_0x5e8554[_0xd5cc('0x2f')],'sectionId':_0x5e8554['id']},{})['then'](function(){return _0x51f743;});}else{return _0x51f743;}})['catch'](function(_0x101b49){logger[_0xd5cc('0x2d')](_0xd5cc('0x99'),_0x101b49);throw _0x101b49;});}return _0x51f743;})[_0xd5cc('0x2b')](respondWithResult(_0x507459,null))['catch'](handleError(_0x507459,null));}});}catch(_0x3a9209){_0x507459['status'](0x1f4)[_0xd5cc('0x30')](_0x3a9209);}};function removeReferences(_0x3f452c,_0x20457c){try{if(_0x3f452c){fs[_0xd5cc('0x67')](_0x3f452c);logger[_0xd5cc('0x6e')](_0xd5cc('0x9a'));}if(_0x20457c){rimraf(_0x20457c,function(){});logger['info'](_0xd5cc('0x9b'));}}catch(_0x3ddec6){logger[_0xd5cc('0x2d')](_0x3ddec6);}}exports[_0xd5cc('0x29')]=function(_0x16c59c,_0x4f8734,_0x357f8a){return db[_0xd5cc('0x31')][_0xd5cc('0x51')]({'where':{'id':_0x16c59c[_0xd5cc('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4f8734,null))['then'](saveUpdates(_0x16c59c[_0xd5cc('0x92')],null))[_0xd5cc('0x2b')](respondWithResult(_0x4f8734,null))[_0xd5cc('0x4c')](handleError(_0x4f8734,null));};exports[_0xd5cc('0x9c')]=function(_0x1c2e98,_0x5852ca,_0x2b5474){return db[_0xd5cc('0x31')][_0xd5cc('0x51')]({'where':{'id':_0x1c2e98[_0xd5cc('0x4e')]['id']}})[_0xd5cc('0x2b')](function(_0x5e88f7){if(_0x5e88f7){return _0x5e88f7['destroy']();}})['then'](function(_0x9c0245){rimraf(path[_0xd5cc('0x52')](config[_0xd5cc('0x53')],'server/files/plugins',path[_0xd5cc('0x9d')](_0x9c0245[_0xd5cc('0x7')])),function(){});return _0x9c0245;})[_0xd5cc('0x2b')](handleEntityNotFound(_0x5852ca,null))[_0xd5cc('0x2b')](respondWithStatusCode(_0x5852ca,null))['catch'](handleError(_0x5852ca,null));};exports[_0xd5cc('0x9e')]=function(_0x52ffa9,_0x403ef1,_0x93acd7){return BPromise[_0xd5cc('0x9f')]()[_0xd5cc('0x2b')](function(){if(!_0x52ffa9[_0xd5cc('0x37')]['path']){throw new Error(_0xd5cc('0xa0'));}if(!_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa1')]){throw new Error(_0xd5cc('0xa2'));}var _0x1fd42f=_0x52ffa9['query'][_0xd5cc('0xa3')]?_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa3')]+':'+_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa1')]:_0xd5cc('0xa4')+_0x52ffa9['query'][_0xd5cc('0xa1')];var _0x2027ea=_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa5')]?_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa5')]:!![];var _0x594d36=_0x52ffa9[_0xd5cc('0x37')][_0xd5cc('0xa6')]?_0x52ffa9['query']['encoding']:null;var _0x177a9d={'method':_0x52ffa9[_0xd5cc('0xa7')],'uri':util[_0xd5cc('0x54')](_0xd5cc('0xa8'),_0x1fd42f,_0x52ffa9[_0xd5cc('0x37')]['path']),'json':_0x2027ea,'resolveWithFullResponse':!![],'encoding':_0x594d36,'qs':_0x52ffa9[_0xd5cc('0x37')]};if(_0x52ffa9[_0xd5cc('0xa9')]){_0x177a9d['headers']=_0x52ffa9[_0xd5cc('0xa9')];if(_0x177a9d[_0xd5cc('0xa9')][_0xd5cc('0xaa')]){delete _0x177a9d[_0xd5cc('0xa9')]['content-length'];}}if(_0x177a9d[_0xd5cc('0xa9')][_0xd5cc('0xab')]){delete _0x177a9d[_0xd5cc('0xa9')]['content-type'];}return rp(_0x177a9d);})[_0xd5cc('0x2b')](function(_0x4c1391){if(_0x4c1391){_0x403ef1[_0xd5cc('0x26')](_0x4c1391['headers']);logger[_0xd5cc('0x6e')](_0x4c1391[_0xd5cc('0x92')]);if(_[_0xd5cc('0xac')](_0x52ffa9['query']['path'],'download')&&_0x4c1391[_0xd5cc('0xad')]==0x1f4){return _0x403ef1[_0xd5cc('0x1f')](_0x4c1391[_0xd5cc('0xad')]);}else{return _0x403ef1[_0xd5cc('0x20')](_0x4c1391[_0xd5cc('0xad')])[_0xd5cc('0x30')](_0x4c1391[_0xd5cc('0x92')]);}}else{return _0x403ef1[_0xd5cc('0x1f')](0xc8);}})[_0xd5cc('0x4c')](handleError(_0x403ef1,null));};exports[_0xd5cc('0xae')]=function(_0x228068,_0x276840,_0x2b22b5){return BPromise[_0xd5cc('0x9f')]()[_0xd5cc('0x2b')](function(){if(!_0x228068['query']['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x228068[_0xd5cc('0x37')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x3c90ea=_0x228068[_0xd5cc('0x37')][_0xd5cc('0xa3')]?_0x228068[_0xd5cc('0x37')][_0xd5cc('0xa3')]+':'+_0x228068[_0xd5cc('0x37')][_0xd5cc('0xa1')]:_0xd5cc('0xa4')+_0x228068['query'][_0xd5cc('0xa1')];var _0x5d7e17=_0x228068['query']['json']?_0x228068[_0xd5cc('0x37')][_0xd5cc('0xa5')]:!![];var _0x5aff7e=_0x228068[_0xd5cc('0x37')][_0xd5cc('0xa6')]?_0x228068[_0xd5cc('0x37')]['encoding']:null;var _0x521b73={'method':_0x228068[_0xd5cc('0xa7')],'uri':util['format']('%s%s',_0x3c90ea,_0x228068[_0xd5cc('0x37')][_0xd5cc('0x7')]),'json':_0x5d7e17,'resolveWithFullResponse':!![],'encoding':_0x5aff7e,'body':_0x228068[_0xd5cc('0x92')]};if(_0x228068[_0xd5cc('0xa9')]){_0x521b73['headers']=_0x228068[_0xd5cc('0xa9')];if(_0x521b73[_0xd5cc('0xa9')][_0xd5cc('0xaa')]){delete _0x521b73[_0xd5cc('0xa9')][_0xd5cc('0xaa')];}}if(_0x521b73[_0xd5cc('0xa9')]['content-type']){delete _0x521b73['headers'][_0xd5cc('0xab')];}return rp(_0x521b73);})[_0xd5cc('0x2b')](function(_0xd40e92){if(_0xd40e92){_0x276840[_0xd5cc('0x26')](_0xd40e92['headers']);logger[_0xd5cc('0x6e')](_0xd40e92[_0xd5cc('0x92')]);return _0x276840[_0xd5cc('0x20')](_0xd40e92[_0xd5cc('0xad')])[_0xd5cc('0x30')](_0xd40e92[_0xd5cc('0x92')]);}else{return _0x276840[_0xd5cc('0x1f')](0xc8);}})[_0xd5cc('0x4c')](handleError(_0x276840,null));};
\ No newline at end of file
+var _0x2be8=['catch','show','params','merge','options','find','download','join','root','server/files/plugins','format','%s.zip','basename','path','zip','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*','dirname','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Extracted\x20folder\x20removed','delete','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','json','encoding','method','%s%s','headers','content-type','endsWith','statusCode','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','http://localhost:','content-length','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','extract-zip','rimraf','archiver','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./plugin.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','Plugins','UserProfileResource','end','error','stack','name','send','index','Plugin','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','type','VIRTUAL','filter','includeAll','include','findAll','rows'];(function(_0x205c85,_0x5ef9fc){var _0x5761c0=function(_0x5875ec){while(--_0x5875ec){_0x205c85['push'](_0x205c85['shift']());}};_0x5761c0(++_0x5ef9fc);}(_0x2be8,0x1bf));var _0x82be=function(_0x4f840d,_0x5d6218){_0x4f840d=_0x4f840d-0x0;var _0x315f81=_0x2be8[_0x4f840d];return _0x315f81;};'use strict';var emlformat=require(_0x82be('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x82be('0x1'));var rp=require(_0x82be('0x2'));var moment=require(_0x82be('0x3'));var BPromise=require(_0x82be('0x4'));var Mustache=require(_0x82be('0x5'));var util=require(_0x82be('0x6'));var path=require('path');var sox=require(_0x82be('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x82be('0x8'));var _=require(_0x82be('0x9'));var squel=require(_0x82be('0xa'));var crypto=require(_0x82be('0xb'));var jsforce=require(_0x82be('0xc'));var deskjs=require(_0x82be('0xd'));var toCsv=require(_0x82be('0xe'));var querystring=require(_0x82be('0xf'));var Papa=require('papaparse');var extract=require(_0x82be('0x10'));var rimraf=require(_0x82be('0x11'));var archiver=require(_0x82be('0x12'));var Redis=require(_0x82be('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x82be('0x14'));var as=require(_0x82be('0x15'));var hardwareService=require(_0x82be('0x16'));var logger=require(_0x82be('0x17'))(_0x82be('0x18'));var utils=require(_0x82be('0x19'));var config=require(_0x82be('0x1a'));var licenseUtil=require(_0x82be('0x1b'));var db=require(_0x82be('0x1c'))['db'];config[_0x82be('0x1d')]=_['defaults'](config[_0x82be('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x82be('0x1d')]));require(_0x82be('0x1e'))[_0x82be('0x1f')](socket);function respondWithStatusCode(_0x512f4f,_0x383864){_0x383864=_0x383864||0xcc;return function(_0x1e555b){if(_0x1e555b){return _0x512f4f[_0x82be('0x20')](_0x383864);}return _0x512f4f[_0x82be('0x21')](_0x383864)['end']();};}function respondWithResult(_0x1e1ef0,_0x4f2aa3){_0x4f2aa3=_0x4f2aa3||0xc8;return function(_0x197619){if(_0x197619){return _0x1e1ef0['status'](_0x4f2aa3)['json'](_0x197619);}};}function respondWithFilteredResult(_0x30d9c6,_0x89f468){return function(_0x13afac){if(_0x13afac){var _0x2dfb87=typeof _0x89f468[_0x82be('0x22')]===_0x82be('0x23')&&typeof _0x89f468[_0x82be('0x24')]==='undefined';var _0x269cd3=_0x13afac[_0x82be('0x25')];var _0x4511f4=_0x2dfb87?0x0:_0x89f468['offset'];var _0x1f0bf3=_0x2dfb87?_0x13afac[_0x82be('0x25')]:_0x89f468[_0x82be('0x22')]+_0x89f468['limit'];var _0x25a9f8;if(_0x1f0bf3>=_0x269cd3){_0x1f0bf3=_0x269cd3;_0x25a9f8=0xc8;}else{_0x25a9f8=0xce;}_0x30d9c6[_0x82be('0x21')](_0x25a9f8);return _0x30d9c6[_0x82be('0x26')](_0x82be('0x27'),_0x4511f4+'-'+_0x1f0bf3+'/'+_0x269cd3)['json'](_0x13afac);}return null;};}function patchUpdates(_0x5ad180){return function(_0xb80ba8){try{jsonpatch[_0x82be('0x28')](_0xb80ba8,_0x5ad180,!![]);}catch(_0x11ef8e){return BPromise[_0x82be('0x29')](_0x11ef8e);}return _0xb80ba8['save']();};}function saveUpdates(_0x44ba1f,_0x391136){return function(_0x3a19d7){if(_0x3a19d7){return _0x3a19d7[_0x82be('0x2a')](_0x44ba1f)[_0x82be('0x2b')](function(_0x3003ca){return _0x3003ca;});}return null;};}function removeEntity(_0x176837,_0x329013){return function(_0xd3ad6a){if(_0xd3ad6a){return _0xd3ad6a[_0x82be('0x2c')]()[_0x82be('0x2b')](function(){var _0x2ed00c=_0xd3ad6a[_0x82be('0x2d')]({'plain':!![]});var _0x4fc91f=_0x82be('0x2e');return db[_0x82be('0x2f')][_0x82be('0x2c')]({'where':{'type':_0x4fc91f,'resourceId':_0x2ed00c['id']}})[_0x82be('0x2b')](function(){return _0xd3ad6a;});})[_0x82be('0x2b')](function(){_0x176837[_0x82be('0x21')](0xcc)[_0x82be('0x30')]();});}};}function handleEntityNotFound(_0xd24520,_0x33af88){return function(_0x46abba){if(!_0x46abba){_0xd24520[_0x82be('0x20')](0x194);}return _0x46abba;};}function handleError(_0x26cb82,_0x2d891f){_0x2d891f=_0x2d891f||0x1f4;return function(_0x4e3b02){logger[_0x82be('0x31')](_0x4e3b02[_0x82be('0x32')]);if(_0x4e3b02[_0x82be('0x33')]){delete _0x4e3b02['name'];}_0x26cb82[_0x82be('0x21')](_0x2d891f)[_0x82be('0x34')](_0x4e3b02);};}exports[_0x82be('0x35')]=function(_0x544344,_0x4dc502){var _0x153bb1={},_0x44dfdf={},_0x25b96e={'count':0x0,'rows':[]};var _0x4c0880=_['map'](db[_0x82be('0x36')][_0x82be('0x37')],function(_0x2fc1da){return{'name':_0x2fc1da[_0x82be('0x38')],'type':_0x2fc1da['type'][_0x82be('0x39')]};});_0x44dfdf[_0x82be('0x3a')]=_[_0x82be('0x3b')](_0x4c0880,_0x82be('0x33'));_0x44dfdf[_0x82be('0x3c')]=_[_0x82be('0x3d')](_0x544344[_0x82be('0x3c')]);_0x44dfdf[_0x82be('0x3e')]=_[_0x82be('0x3f')](_0x44dfdf[_0x82be('0x3a')],_0x44dfdf[_0x82be('0x3c')]);_0x153bb1[_0x82be('0x40')]=_['intersection'](_0x44dfdf[_0x82be('0x3a')],qs[_0x82be('0x41')](_0x544344[_0x82be('0x3c')][_0x82be('0x41')]));_0x153bb1['attributes']=_0x153bb1[_0x82be('0x40')][_0x82be('0x42')]?_0x153bb1[_0x82be('0x40')]:_0x44dfdf[_0x82be('0x3a')];if(!_0x544344[_0x82be('0x3c')]['hasOwnProperty'](_0x82be('0x43'))){_0x153bb1[_0x82be('0x24')]=qs[_0x82be('0x24')](_0x544344['query'][_0x82be('0x24')]);_0x153bb1[_0x82be('0x22')]=qs[_0x82be('0x22')](_0x544344[_0x82be('0x3c')][_0x82be('0x22')]);}_0x153bb1['order']=qs['sort'](_0x544344['query'][_0x82be('0x44')]);_0x153bb1[_0x82be('0x45')]=qs['filters'](_[_0x82be('0x46')](_0x544344[_0x82be('0x3c')],_0x44dfdf[_0x82be('0x3e')]),_0x4c0880);if(_0x544344[_0x82be('0x3c')]['filter']){_0x153bb1['where']=_['merge'](_0x153bb1['where'],{'$or':_['map'](_0x4c0880,function(_0x31328f){if(_0x31328f[_0x82be('0x47')]!==_0x82be('0x48')){var _0x4c2075={};_0x4c2075[_0x31328f['name']]={'$like':'%'+_0x544344[_0x82be('0x3c')][_0x82be('0x49')]+'%'};return _0x4c2075;}})});}_0x153bb1=_['merge']({},_0x153bb1,_0x544344['options']);var _0x4ec538={'where':_0x153bb1[_0x82be('0x45')]};return db['Plugin'][_0x82be('0x25')](_0x4ec538)[_0x82be('0x2b')](function(_0x3e0fad){_0x25b96e[_0x82be('0x25')]=_0x3e0fad;if(_0x544344['query'][_0x82be('0x4a')]){_0x153bb1[_0x82be('0x4b')]=[{'all':!![]}];}return db[_0x82be('0x36')][_0x82be('0x4c')](_0x153bb1);})['then'](function(_0x2cbf9b){_0x25b96e[_0x82be('0x4d')]=_0x2cbf9b;return _0x25b96e;})[_0x82be('0x2b')](respondWithFilteredResult(_0x4dc502,_0x153bb1))[_0x82be('0x4e')](handleError(_0x4dc502,null));};exports[_0x82be('0x4f')]=function(_0x1a5390,_0xe06f28){var _0x593cca={'raw':!![],'where':{'id':_0x1a5390[_0x82be('0x50')]['id']}},_0x3fbcc6={};_0x3fbcc6[_0x82be('0x3a')]=_[_0x82be('0x3d')](db[_0x82be('0x36')]['rawAttributes']);_0x3fbcc6[_0x82be('0x3c')]=_[_0x82be('0x3d')](_0x1a5390[_0x82be('0x3c')]);_0x3fbcc6[_0x82be('0x3e')]=_[_0x82be('0x3f')](_0x3fbcc6[_0x82be('0x3a')],_0x3fbcc6[_0x82be('0x3c')]);_0x593cca[_0x82be('0x40')]=_[_0x82be('0x3f')](_0x3fbcc6[_0x82be('0x3a')],qs[_0x82be('0x41')](_0x1a5390[_0x82be('0x3c')][_0x82be('0x41')]));_0x593cca[_0x82be('0x40')]=_0x593cca[_0x82be('0x40')][_0x82be('0x42')]?_0x593cca[_0x82be('0x40')]:_0x3fbcc6['model'];if(_0x1a5390[_0x82be('0x3c')][_0x82be('0x4a')]){_0x593cca[_0x82be('0x4b')]=[{'all':!![]}];}_0x593cca=_[_0x82be('0x51')]({},_0x593cca,_0x1a5390[_0x82be('0x52')]);return db[_0x82be('0x36')][_0x82be('0x53')](_0x593cca)[_0x82be('0x2b')](handleEntityNotFound(_0xe06f28,null))[_0x82be('0x2b')](respondWithResult(_0xe06f28,null))[_0x82be('0x4e')](handleError(_0xe06f28,null));};exports[_0x82be('0x54')]=function(_0x4ac51b,_0x36f870,_0x48fa9a){return db[_0x82be('0x36')][_0x82be('0x53')]({'where':{'id':_0x4ac51b[_0x82be('0x50')]['id']},'attributes':[_0x82be('0x33'),'path'],'raw':!![]})[_0x82be('0x2b')](handleEntityNotFound(_0x36f870,null))['then'](function(_0x3053ad){if(_0x3053ad){var _0x25cc4f=path[_0x82be('0x55')](config[_0x82be('0x56')],_0x82be('0x57'),util[_0x82be('0x58')](_0x82be('0x59'),path[_0x82be('0x5a')](_0x3053ad[_0x82be('0x5b')])));var _0x359362=fs['createWriteStream'](_0x25cc4f);var _0x40c256=archiver(_0x82be('0x5c'),{'zlib':{'level':0x9}});_0x40c256['on']('warning',function(_0x4a875e){if(_0x4a875e['code']===_0x82be('0x5d')){logger[_0x82be('0x31')](_0x4a875e);}else{throw new db['Sequelize'][(_0x82be('0x5e'))](_0x82be('0x5f'));}});_0x40c256['on'](_0x82be('0x31'),function(_0x14529f){throw new db[(_0x82be('0x60'))][(_0x82be('0x5e'))](_0x82be('0x5f'));});_0x40c256[_0x82be('0x61')](_0x359362);_0x40c256[_0x82be('0x62')](_0x82be('0x63'),{'cwd':path[_0x82be('0x55')](config[_0x82be('0x56')],'server/files/plugins',path[_0x82be('0x64')](_0x3053ad['path'])),'ignore':[path[_0x82be('0x55')](path[_0x82be('0x5a')](_0x3053ad[_0x82be('0x5b')]),'node_modules/**/*'),path[_0x82be('0x55')](path[_0x82be('0x5a')](_0x3053ad[_0x82be('0x5b')]),_0x82be('0x65'))],'nodir':!![]})[_0x82be('0x66')]();_0x359362['on'](_0x82be('0x67'),function(){if(!fs[_0x82be('0x68')](_0x25cc4f)){throw new db[(_0x82be('0x60'))][(_0x82be('0x5e'))](_0x82be('0x69'));}return _0x36f870[_0x82be('0x54')](_0x25cc4f,util['format'](_0x82be('0x59'),path[_0x82be('0x5a')](_0x3053ad['path'])),function(_0x53902e){if(_0x53902e){throw new db['Sequelize'][(_0x82be('0x5e'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x82be('0x6a')](_0x25cc4f);logger[_0x82be('0x6b')](_0x82be('0x6c'));logger[_0x82be('0x6b')](_0x82be('0x6d'));});});}return null;})[_0x82be('0x4e')](handleError(_0x36f870,null));};exports[_0x82be('0x6e')]=function(_0x3b4536,_0x2a009c,_0x382273){var _0x39cf84=path[_0x82be('0x5a')](_0x3b4536[_0x82be('0x6f')]['filename'],path[_0x82be('0x70')](_0x3b4536[_0x82be('0x6f')]['filename']));var _0x20d858=path[_0x82be('0x55')](config[_0x82be('0x56')],_0x82be('0x57'),_0x3b4536['file'][_0x82be('0x71')]);var _0x1af4ca=path['join'](config['root'],'server/files/plugins',_0x39cf84);logger[_0x82be('0x6b')]('Plugin\x20upload\x20filepath:\x20%s',_0x20d858);logger[_0x82be('0x6b')](_0x82be('0x72'),_0x1af4ca);try{fs[_0x82be('0x73')](_0x20d858,parseInt(_0x82be('0x74'),0x8));extract(_0x20d858,{'dir':_0x1af4ca},function(_0x2ca45a){if(_0x2ca45a){logger['error'](_0x2ca45a);handleError(_0x2ca45a,!![]);};var _0xffb1cc=fs[_0x82be('0x75')](_0x1af4ca);if(_0xffb1cc[_0x82be('0x42')]>0x1){removeReferences(_0x20d858,_0x1af4ca);logger[_0x82be('0x31')](_0x82be('0x76'));return _0x382273(new Error('Invalid\x20plugin\x20structure'));}var _0x1d3ce4=fs[_0x82be('0x77')](path[_0x82be('0x55')](_0x1af4ca,_0xffb1cc[0x0]));if(_0x1d3ce4[_0x82be('0x78')]()){removeReferences(_0x20d858,_0x1af4ca);logger['error'](_0x82be('0x76'));return _0x382273(new Error(_0x82be('0x76')));}if(_0x1d3ce4[_0x82be('0x79')]()){var _0x1d7455=fs[_0x82be('0x75')](path[_0x82be('0x55')](_0x1af4ca,_0xffb1cc[0x0]));if(_0x1d7455['length']===0x0){removeReferences(_0x20d858,_0x1af4ca);logger[_0x82be('0x31')](_0x82be('0x76'));return _0x382273(new Error(_0x82be('0x76')));}var _0x3cc02d=_0x1d7455[_0x82be('0x7a')](function(_0x1cf19f){return _0x1cf19f===_0x82be('0x7b');});if(!_0x3cc02d){return _0x382273(new Error(_0x82be('0x7c')));}var _0x3f62c2=fs[_0x82be('0x7d')](path[_0x82be('0x55')](_0x1af4ca,_0xffb1cc[0x0],_0x82be('0x7b')));var _0x362684=JSON[_0x82be('0x7e')](_0x3f62c2);if('undefined'==typeof _0x362684[_0x82be('0x33')]){return _0x382273(new Error(_0x82be('0x7f')));}if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x47')]){return _0x382273(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x80')]){return _0x382273(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x81')]){return _0x382273(new Error(_0x82be('0x82')));}if(_0x362684[_0x82be('0x47')]===_0x82be('0x83')){if('undefined'==typeof _0x362684[_0x82be('0x81')]['views']){return _0x382273(new Error(_0x82be('0x84')));}if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x81')][_0x82be('0x85')][_0x82be('0x86')]&&_0x82be('0x23')==typeof _0x362684[_0x82be('0x81')][_0x82be('0x85')][_0x82be('0x87')]){return _0x382273(new Error(_0x82be('0x88')));}}else if(_0x362684[_0x82be('0x47')]==='script'){if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x81')][_0x82be('0x89')]){return _0x382273(new Error(_0x82be('0x8a')));}if(_0x82be('0x23')==typeof _0x362684[_0x82be('0x81')]['scriptPath']){return _0x382273(new Error(_0x82be('0x8b')));}}else{return _0x382273(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x1781fd=_0x362684['name'];var _0x5e448b=_0x362684['description'];var _0x127648=_0x362684['type'];var _0x11653b=_0x362684[_0x82be('0x8c')]?_0x362684[_0x82be('0x8c')]:_0x82be('0x8d');var _0x1a9ff5=_0x362684[_0x82be('0x8e')]?_0x362684[_0x82be('0x8e')]:_0x82be('0x8f');var _0x15d08b='';var _0x2b7476='';var _0x3dfafc='';var _0x1997eb='';var _0x45d333=_0x362684[_0x82be('0x80')];if(_0x127648===_0x82be('0x83')){if(_0x82be('0x23')!=typeof _0x362684[_0x82be('0x81')]['views'][_0x82be('0x86')]){var _0x5af167=_0x362684['parameters'][_0x82be('0x85')][_0x82be('0x86')];if(!/^(f|ht)tps?:\/\//i[_0x82be('0x90')](_0x5af167)){_0x15d08b=path[_0x82be('0x55')](_0x82be('0x91'),_0x39cf84,_0xffb1cc[0x0],_0x5af167);}else{_0x15d08b=_0x5af167;}}else{logger[_0x82be('0x6b')](_0x82be('0x92'));}if(_0x82be('0x23')!=typeof _0x362684[_0x82be('0x81')][_0x82be('0x85')][_0x82be('0x87')]){var _0x4b77a9=_0x362684['parameters'][_0x82be('0x85')][_0x82be('0x87')];if(!/^(f|ht)tps?:\/\//i[_0x82be('0x90')](_0x4b77a9)){_0x2b7476=path[_0x82be('0x55')](_0x82be('0x91'),_0x39cf84,_0xffb1cc[0x0],_0x4b77a9);}else{_0x2b7476=_0x4b77a9;}}else{logger[_0x82be('0x6b')](_0x82be('0x93'));}}else if(_0x127648===_0x82be('0x94')){_0x3dfafc=_0x362684[_0x82be('0x81')][_0x82be('0x89')];_0x1997eb=_0x362684[_0x82be('0x81')]['scriptPath'];if(_0x82be('0x23')!=typeof _0x362684[_0x82be('0x81')][_0x82be('0x85')]){if(_0x82be('0x23')!=typeof _0x362684['parameters'][_0x82be('0x85')][_0x82be('0x86')]){var _0x5af167=_0x362684[_0x82be('0x81')][_0x82be('0x85')][_0x82be('0x86')];if(!/^(f|ht)tps?:\/\//i[_0x82be('0x90')](_0x5af167)){_0x15d08b=path[_0x82be('0x55')](_0x82be('0x91'),_0x39cf84,_0xffb1cc[0x0],_0x5af167);}else{_0x15d08b=_0x5af167;}}if(_0x82be('0x23')!=typeof _0x362684['parameters'][_0x82be('0x85')][_0x82be('0x87')]){var _0x4b77a9=_0x362684[_0x82be('0x81')][_0x82be('0x85')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x82be('0x90')](_0x4b77a9)){_0x2b7476=path['join'](_0x82be('0x91'),_0x39cf84,_0xffb1cc[0x0],_0x4b77a9);}else{_0x2b7476=_0x4b77a9;}}}}var _0x129273={'name':_0x1781fd,'description':_0x5e448b,'path':path[_0x82be('0x55')](_0x39cf84,_0xffb1cc[0x0]),'type':_0x127648,'sidebar':_0x11653b,'icon':_0x1a9ff5,'adminUrl':_0x15d08b,'agentUrl':_0x2b7476,'scriptName':_0x3dfafc,'scriptPath':_0x1997eb,'version':_0x45d333};removeReferences(_0x20d858,null);return db['Plugin']['create'](_0x129273)[_0x82be('0x2b')](function(_0x1abd60){var _0x29500b={'role':_0x3b4536[_0x82be('0x95')]['role'],'userProfileId':_0x3b4536['body']['userProfileId']};if(!_0x29500b)throw new Error(_0x82be('0x96'));if(_0x29500b[_0x82be('0x97')]===_0x82be('0x98')){var _0x53bf12=_0x1abd60[_0x82be('0x2d')]({'plain':!![]});return db[_0x82be('0x99')][_0x82be('0x53')]({'where':{'name':_0x82be('0x2e'),'userProfileId':_0x29500b[_0x82be('0x9a')]},'raw':!![]})['then'](function(_0x2ba029){if(_0x2ba029&&_0x2ba029[_0x82be('0x9b')]===0x0){return db[_0x82be('0x2f')][_0x82be('0x9c')]({'name':_0x53bf12['name'],'resourceId':_0x53bf12['id'],'type':_0x2ba029[_0x82be('0x33')],'sectionId':_0x2ba029['id']},{})[_0x82be('0x2b')](function(){return _0x1abd60;});}else{return _0x1abd60;}})['catch'](function(_0x2f2773){logger['error'](_0x82be('0x9d'),_0x2f2773);throw _0x2f2773;});}return _0x1abd60;})[_0x82be('0x2b')](respondWithResult(_0x2a009c,null))[_0x82be('0x4e')](handleError(_0x2a009c,null));}});}catch(_0x26967e){_0x2a009c['status'](0x1f4)[_0x82be('0x34')](_0x26967e);}};function removeReferences(_0x1dabf2,_0x2c51e1){try{if(_0x1dabf2){fs['unlinkSync'](_0x1dabf2);logger[_0x82be('0x6b')]('Zip\x20archive\x20removed');}if(_0x2c51e1){rimraf(_0x2c51e1,function(){});logger[_0x82be('0x6b')](_0x82be('0x9e'));}}catch(_0x20da06){logger[_0x82be('0x31')](_0x20da06);}}exports[_0x82be('0x2a')]=function(_0x25a7e2,_0x2e0101,_0x39a0ee){return db['Plugin']['find']({'where':{'id':_0x25a7e2[_0x82be('0x50')]['id']}})[_0x82be('0x2b')](handleEntityNotFound(_0x2e0101,null))['then'](saveUpdates(_0x25a7e2[_0x82be('0x95')],null))[_0x82be('0x2b')](respondWithResult(_0x2e0101,null))[_0x82be('0x4e')](handleError(_0x2e0101,null));};exports[_0x82be('0x9f')]=function(_0x3e83dd,_0x5a174a,_0x5477b0){return db[_0x82be('0x36')][_0x82be('0x53')]({'where':{'id':_0x3e83dd[_0x82be('0x50')]['id']}})['then'](function(_0x7e5ad4){if(_0x7e5ad4){return _0x7e5ad4[_0x82be('0x2c')]();}})[_0x82be('0x2b')](function(_0x4cbfb4){rimraf(path[_0x82be('0x55')](config[_0x82be('0x56')],'server/files/plugins',path[_0x82be('0x64')](_0x4cbfb4[_0x82be('0x5b')])),function(){});return _0x4cbfb4;})[_0x82be('0x2b')](handleEntityNotFound(_0x5a174a,null))[_0x82be('0x2b')](respondWithStatusCode(_0x5a174a,null))[_0x82be('0x4e')](handleError(_0x5a174a,null));};exports['webhookGet']=function(_0x37b440,_0x58bfa1,_0x27d038){return BPromise['resolve']()[_0x82be('0x2b')](function(){if(!_0x37b440[_0x82be('0x3c')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x37b440[_0x82be('0x3c')][_0x82be('0xa0')]){throw new Error(_0x82be('0xa1'));}var _0x2beb92=_0x37b440[_0x82be('0x3c')][_0x82be('0xa2')]?_0x37b440[_0x82be('0x3c')]['hostname']+':'+_0x37b440[_0x82be('0x3c')][_0x82be('0xa0')]:'http://localhost:'+_0x37b440[_0x82be('0x3c')]['port'];var _0x2a5715=_0x37b440[_0x82be('0x3c')]['json']?_0x37b440['query'][_0x82be('0xa3')]:!![];var _0x8a366b=_0x37b440[_0x82be('0x3c')][_0x82be('0xa4')]?_0x37b440['query']['encoding']:null;var _0xa038a0={'method':_0x37b440[_0x82be('0xa5')],'uri':util[_0x82be('0x58')](_0x82be('0xa6'),_0x2beb92,_0x37b440[_0x82be('0x3c')][_0x82be('0x5b')]),'json':_0x2a5715,'resolveWithFullResponse':!![],'encoding':_0x8a366b,'qs':_0x37b440[_0x82be('0x3c')]};if(_0x37b440[_0x82be('0xa7')]){_0xa038a0[_0x82be('0xa7')]=_0x37b440['headers'];if(_0xa038a0[_0x82be('0xa7')]['content-length']){delete _0xa038a0[_0x82be('0xa7')]['content-length'];}}if(_0xa038a0[_0x82be('0xa7')]['content-type']){delete _0xa038a0[_0x82be('0xa7')][_0x82be('0xa8')];}return rp(_0xa038a0);})[_0x82be('0x2b')](function(_0x37794e){if(_0x37794e){_0x58bfa1[_0x82be('0x26')](_0x37794e['headers']);logger['info'](_0x37794e[_0x82be('0x95')]);if(_[_0x82be('0xa9')](_0x37b440['query'][_0x82be('0x5b')],_0x82be('0x54'))&&_0x37794e[_0x82be('0xaa')]==0x1f4){return _0x58bfa1['sendStatus'](_0x37794e[_0x82be('0xaa')]);}else{return _0x58bfa1[_0x82be('0x21')](_0x37794e['statusCode'])['send'](_0x37794e[_0x82be('0x95')]);}}else{return _0x58bfa1['sendStatus'](0xc8);}})['catch'](handleError(_0x58bfa1,null));};exports['webhookPost']=function(_0xcd3653,_0x5b57a1,_0x5abd3b){return BPromise[_0x82be('0xab')]()[_0x82be('0x2b')](function(){if(!_0xcd3653[_0x82be('0x3c')][_0x82be('0x5b')]){throw new Error(_0x82be('0xac'));}if(!_0xcd3653[_0x82be('0x3c')][_0x82be('0xa0')]){throw new Error(_0x82be('0xa1'));}var _0x137d8f=_0xcd3653[_0x82be('0x3c')][_0x82be('0xa2')]?_0xcd3653[_0x82be('0x3c')][_0x82be('0xa2')]+':'+_0xcd3653[_0x82be('0x3c')]['port']:_0x82be('0xad')+_0xcd3653[_0x82be('0x3c')][_0x82be('0xa0')];var _0xc49040=_0xcd3653[_0x82be('0x3c')]['json']?_0xcd3653[_0x82be('0x3c')]['json']:!![];var _0xe391db=_0xcd3653[_0x82be('0x3c')][_0x82be('0xa4')]?_0xcd3653[_0x82be('0x3c')][_0x82be('0xa4')]:null;var _0x6e1095={'method':_0xcd3653[_0x82be('0xa5')],'uri':util[_0x82be('0x58')](_0x82be('0xa6'),_0x137d8f,_0xcd3653[_0x82be('0x3c')][_0x82be('0x5b')]),'json':_0xc49040,'resolveWithFullResponse':!![],'encoding':_0xe391db,'body':_0xcd3653[_0x82be('0x95')]};if(_0xcd3653[_0x82be('0xa7')]){_0x6e1095[_0x82be('0xa7')]=_0xcd3653[_0x82be('0xa7')];if(_0x6e1095[_0x82be('0xa7')][_0x82be('0xae')]){delete _0x6e1095[_0x82be('0xa7')][_0x82be('0xae')];}}if(_0x6e1095[_0x82be('0xa7')][_0x82be('0xa8')]){delete _0x6e1095[_0x82be('0xa7')][_0x82be('0xa8')];}return rp(_0x6e1095);})['then'](function(_0x481260){if(_0x481260){_0x5b57a1['set'](_0x481260[_0x82be('0xa7')]);logger[_0x82be('0x6b')](_0x481260['body']);return _0x5b57a1['status'](_0x481260['statusCode'])[_0x82be('0x34')](_0x481260[_0x82be('0x95')]);}else{return _0x5b57a1['sendStatus'](0xc8);}})[_0x82be('0x4e')](handleError(_0x5b57a1,null));};
\ No newline at end of file
index 1dc806d..1f05518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5da=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x9ff206,_0xff7b97){var _0x24f4f7=function(_0x5f4bc1){while(--_0x5f4bc1){_0x9ff206['push'](_0x9ff206['shift']());}};_0x24f4f7(++_0xff7b97);}(_0xd5da,0x9f));var _0xad5d=function(_0x39257b,_0x474003){_0x39257b=_0x39257b-0x0;var _0x24cc6b=_0xd5da[_0x39257b];return _0x24cc6b;};'use strict';var EventEmitter=require(_0xad5d('0x0'));var Plugin=require(_0xad5d('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0xad5d('0x2')](0x0);var events={'afterCreate':_0xad5d('0x3'),'afterUpdate':_0xad5d('0x4'),'afterDestroy':'remove'};function emitEvent(_0x43a7d5){return function(_0x57a1ae,_0xfb6438,_0x442479){PluginEvents[_0xad5d('0x5')](_0x43a7d5+':'+_0x57a1ae['id'],_0x57a1ae);PluginEvents[_0xad5d('0x5')](_0x43a7d5,_0x57a1ae);_0x442479(null);};}for(var e in events){if(events[_0xad5d('0x6')](e)){var event=events[e];Plugin[_0xad5d('0x7')](e,emitEvent(event));}}module[_0xad5d('0x8')]=PluginEvents;
\ No newline at end of file
+var _0x41fe=['events','../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2c15fe,_0x57426f){var _0x1b8339=function(_0x729684){while(--_0x729684){_0x2c15fe['push'](_0x2c15fe['shift']());}};_0x1b8339(++_0x57426f);}(_0x41fe,0xd1));var _0xe41f=function(_0x3e3bee,_0x4f91fe){_0x3e3bee=_0x3e3bee-0x0;var _0x3ae14c=_0x41fe[_0x3e3bee];return _0x3ae14c;};'use strict';var EventEmitter=require(_0xe41f('0x0'));var Plugin=require(_0xe41f('0x1'))['db'][_0xe41f('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xe41f('0x3')](0x0);var events={'afterCreate':_0xe41f('0x4'),'afterUpdate':_0xe41f('0x5'),'afterDestroy':_0xe41f('0x6')};function emitEvent(_0x2fad9a){return function(_0x2e580b,_0x1c9625,_0x456a8a){PluginEvents[_0xe41f('0x7')](_0x2fad9a+':'+_0x2e580b['id'],_0x2e580b);PluginEvents[_0xe41f('0x7')](_0x2fad9a,_0x2e580b);_0x456a8a(null);};}for(var e in events){if(events[_0xe41f('0x8')](e)){var event=events[e];Plugin[_0xe41f('0x9')](e,emitEvent(event));}}module[_0xe41f('0xa')]=PluginEvents;
\ No newline at end of file
index 3c4227d..fa61ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb57=['exports','define','Plugin','plugins','util','api','moment','../../config/environment','./plugin.attributes'];(function(_0x4365e5,_0x241429){var _0x3f2983=function(_0x49877){while(--_0x49877){_0x4365e5['push'](_0x4365e5['shift']());}};_0x3f2983(++_0x241429);}(_0xdb57,0x148));var _0x7db5=function(_0x3111a7,_0x5cca48){_0x3111a7=_0x3111a7-0x0;var _0x1ac4c8=_0xdb57[_0x3111a7];return _0x1ac4c8;};'use strict';var _=require('lodash');var util=require(_0x7db5('0x0'));var logger=require('../../config/logger')(_0x7db5('0x1'));var moment=require(_0x7db5('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7db5('0x3'));var attributes=require(_0x7db5('0x4'));module[_0x7db5('0x5')]=function(_0x469607,_0x2831a4){return _0x469607[_0x7db5('0x6')](_0x7db5('0x7'),attributes,{'tableName':_0x7db5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd331=['request-promise','path','rimraf','../../config/environment','exports','Plugin','plugins','lodash','api','moment'];(function(_0x4cb54a,_0x28e74a){var _0x3791dc=function(_0x479da8){while(--_0x479da8){_0x4cb54a['push'](_0x4cb54a['shift']());}};_0x3791dc(++_0x28e74a);}(_0xd331,0xed));var _0x1d33=function(_0x5ad553,_0x2cec7b){_0x5ad553=_0x5ad553-0x0;var _0x38a8b3=_0xd331[_0x5ad553];return _0x38a8b3;};'use strict';var _=require(_0x1d33('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1d33('0x1'));var moment=require(_0x1d33('0x2'));var BPromise=require('bluebird');var rp=require(_0x1d33('0x3'));var fs=require('fs');var path=require(_0x1d33('0x4'));var rimraf=require(_0x1d33('0x5'));var config=require(_0x1d33('0x6'));var attributes=require('./plugin.attributes');module[_0x1d33('0x7')]=function(_0x24c32b,_0x4cf782){return _0x24c32b['define'](_0x1d33('0x8'),attributes,{'tableName':_0x1d33('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c396ef..0628c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e4a=['message','result','catch','Plugin','body','options','raw','info','CreatePlugin','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./plugin.socket','register','request','then','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','code','error','Plugin,\x20%s,\x20%s'];(function(_0x56e813,_0x2f7fe0){var _0x2ae2a4=function(_0x526bfd){while(--_0x526bfd){_0x56e813['push'](_0x56e813['shift']());}};_0x2ae2a4(++_0x2f7fe0);}(_0x4e4a,0x15d));var _0xa4e4=function(_0x633b45,_0x587877){_0x633b45=_0x633b45-0x0;var _0x4fb2ff=_0x4e4a[_0x633b45];return _0x4fb2ff;};'use strict';var _=require(_0xa4e4('0x0'));var util=require(_0xa4e4('0x1'));var moment=require(_0xa4e4('0x2'));var BPromise=require(_0xa4e4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa4e4('0x4'));var db=require(_0xa4e4('0x5'))['db'];var utils=require(_0xa4e4('0x6'));var logger=require(_0xa4e4('0x7'))(_0xa4e4('0x8'));var config=require(_0xa4e4('0x9'));var jayson=require(_0xa4e4('0xa'));var client=jayson['client'][_0xa4e4('0xb')]({'port':0x232a});config['redis']=_[_0xa4e4('0xc')](config[_0xa4e4('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xa4e4('0xe'))(new Redis(config[_0xa4e4('0xd')]));require(_0xa4e4('0xf'))[_0xa4e4('0x10')](socket);function respondWithRpcPromise(_0x2fbe3a,_0x5926e9,_0x36cfda){return new BPromise(function(_0x37f60d,_0x2a7a91){return client[_0xa4e4('0x11')](_0x2fbe3a,_0x36cfda)[_0xa4e4('0x12')](function(_0x1b4eb6){logger['info']('Plugin,\x20%s,\x20%s',_0x5926e9,_0xa4e4('0x13'));logger[_0xa4e4('0x14')](_0xa4e4('0x15'),_0x5926e9,_0xa4e4('0x13'),JSON['stringify'](_0x1b4eb6));if(_0x1b4eb6['error']){if(_0x1b4eb6['error'][_0xa4e4('0x16')]===0x1f4){logger[_0xa4e4('0x17')](_0xa4e4('0x18'),_0x5926e9,_0x1b4eb6[_0xa4e4('0x17')][_0xa4e4('0x19')]);return _0x2a7a91(_0x1b4eb6['error'][_0xa4e4('0x19')]);}logger[_0xa4e4('0x17')](_0xa4e4('0x18'),_0x5926e9,_0x1b4eb6[_0xa4e4('0x17')][_0xa4e4('0x19')]);return _0x37f60d(_0x1b4eb6[_0xa4e4('0x17')][_0xa4e4('0x19')]);}else{logger['info'](_0xa4e4('0x18'),_0x5926e9,_0xa4e4('0x13'));_0x37f60d(_0x1b4eb6[_0xa4e4('0x1a')][_0xa4e4('0x19')]);}})[_0xa4e4('0x1b')](function(_0x80f7d7){logger[_0xa4e4('0x17')](_0xa4e4('0x18'),_0x5926e9,_0x80f7d7);_0x2a7a91(_0x80f7d7);});});}exports['CreatePlugin']=function(_0x3057e5){var _0x542d94=this;return new Promise(function(_0x5962d4,_0x2f4e86){return db[_0xa4e4('0x1c')]['create'](_0x3057e5[_0xa4e4('0x1d')],{'raw':_0x3057e5[_0xa4e4('0x1e')]?_0x3057e5[_0xa4e4('0x1e')][_0xa4e4('0x1f')]===undefined?!![]:![]:!![]})[_0xa4e4('0x12')](function(_0x1b2332){logger[_0xa4e4('0x20')](_0xa4e4('0x21'),_0x3057e5);logger[_0xa4e4('0x14')]('CreatePlugin',_0x3057e5,JSON['stringify'](_0x1b2332));_0x5962d4(_0x1b2332);})[_0xa4e4('0x1b')](function(_0x27a5f4){logger[_0xa4e4('0x17')](_0xa4e4('0x21'),_0x27a5f4[_0xa4e4('0x19')],_0x3057e5);_0x2f4e86(_0x542d94[_0xa4e4('0x17')](0x1f4,_0x27a5f4[_0xa4e4('0x19')]));});});};
\ No newline at end of file
+var _0x5493=['debug','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreatePlugin','body','options','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./plugin.socket','request','then','info','Plugin,\x20%s,\x20%s'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x5493,0x1cb));var _0x3549=function(_0x2d2211,_0x19a630){_0x2d2211=_0x2d2211-0x0;var _0xb691f0=_0x5493[_0x2d2211];return _0xb691f0;};'use strict';var _=require('lodash');var util=require(_0x3549('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3549('0x1'));var fs=require('fs');var Redis=require(_0x3549('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3549('0x3'));var logger=require(_0x3549('0x4'))(_0x3549('0x5'));var config=require(_0x3549('0x6'));var jayson=require(_0x3549('0x7'));var client=jayson[_0x3549('0x8')][_0x3549('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3549('0xa')],{'host':_0x3549('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3549('0xc'))['register'](socket);function respondWithRpcPromise(_0x6e0d22,_0x325462,_0x11ea36){return new BPromise(function(_0x8e715f,_0x2ec07b){return client[_0x3549('0xd')](_0x6e0d22,_0x11ea36)[_0x3549('0xe')](function(_0x3e4363){logger[_0x3549('0xf')](_0x3549('0x10'),_0x325462,'request\x20sent');logger[_0x3549('0x11')](_0x3549('0x12'),_0x325462,_0x3549('0x13'),JSON[_0x3549('0x14')](_0x3e4363));if(_0x3e4363[_0x3549('0x15')]){if(_0x3e4363[_0x3549('0x15')][_0x3549('0x16')]===0x1f4){logger[_0x3549('0x15')](_0x3549('0x10'),_0x325462,_0x3e4363['error'][_0x3549('0x17')]);return _0x2ec07b(_0x3e4363['error'][_0x3549('0x17')]);}logger[_0x3549('0x15')](_0x3549('0x10'),_0x325462,_0x3e4363[_0x3549('0x15')]['message']);return _0x8e715f(_0x3e4363[_0x3549('0x15')][_0x3549('0x17')]);}else{logger[_0x3549('0xf')](_0x3549('0x10'),_0x325462,'request\x20sent');_0x8e715f(_0x3e4363['result'][_0x3549('0x17')]);}})[_0x3549('0x18')](function(_0x4a4f75){logger[_0x3549('0x15')]('Plugin,\x20%s,\x20%s',_0x325462,_0x4a4f75);_0x2ec07b(_0x4a4f75);});});}exports[_0x3549('0x19')]=function(_0x7a0f6){var _0x1417ee=this;return new Promise(function(_0x48224,_0x1f0d3e){return db['Plugin']['create'](_0x7a0f6[_0x3549('0x1a')],{'raw':_0x7a0f6['options']?_0x7a0f6[_0x3549('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x3549('0xe')](function(_0x3dac86){logger[_0x3549('0xf')]('CreatePlugin',_0x7a0f6);logger[_0x3549('0x11')](_0x3549('0x19'),_0x7a0f6,JSON['stringify'](_0x3dac86));_0x48224(_0x3dac86);})[_0x3549('0x18')](function(_0xeacfb9){logger[_0x3549('0x15')](_0x3549('0x19'),_0xeacfb9[_0x3549('0x17')],_0x7a0f6);_0x1f0d3e(_0x1417ee[_0x3549('0x15')](0x1f4,_0xeacfb9[_0x3549('0x17')]));});});};
\ No newline at end of file
index eb0c313..87687ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x885b=['update','emit','length','./plugin.events','save','remove'];(function(_0x1ca9e9,_0x1c4391){var _0x309f3c=function(_0x5ab318){while(--_0x5ab318){_0x1ca9e9['push'](_0x1ca9e9['shift']());}};_0x309f3c(++_0x1c4391);}(_0x885b,0x105));var _0xb885=function(_0x106f9e,_0x12edc6){_0x106f9e=_0x106f9e-0x0;var _0x5b0204=_0x885b[_0x106f9e];return _0x5b0204;};'use strict';var PluginEvents=require(_0xb885('0x0'));var events=[_0xb885('0x1'),_0xb885('0x2'),_0xb885('0x3')];function createListener(_0x1a1f02,_0x33d08b){return function(_0x18a74f){_0x33d08b[_0xb885('0x4')](_0x1a1f02,_0x18a74f);};}function removeListener(_0x4eb2ba,_0x3f1fb5){return function(){PluginEvents['removeListener'](_0x4eb2ba,_0x3f1fb5);};}exports['register']=function(_0x4b80c3){for(var _0x5bb128=0x0,_0x3787f7=events[_0xb885('0x5')];_0x5bb128<_0x3787f7;_0x5bb128++){var _0x17f061=events[_0x5bb128];var _0x20fc99=createListener('plugin:'+_0x17f061,_0x4b80c3);PluginEvents['on'](_0x17f061,_0x20fc99);}};
\ No newline at end of file
+var _0x935d=['./plugin.events','save','remove','update','emit','removeListener','register','length','plugin:'];(function(_0x131e84,_0x44338d){var _0x59219f=function(_0xdb54a0){while(--_0xdb54a0){_0x131e84['push'](_0x131e84['shift']());}};_0x59219f(++_0x44338d);}(_0x935d,0xd8));var _0xd935=function(_0x34d275,_0x5d84ee){_0x34d275=_0x34d275-0x0;var _0x1379cc=_0x935d[_0x34d275];return _0x1379cc;};'use strict';var PluginEvents=require(_0xd935('0x0'));var events=[_0xd935('0x1'),_0xd935('0x2'),_0xd935('0x3')];function createListener(_0xae8fe1,_0x31ef9a){return function(_0x5e943d){_0x31ef9a[_0xd935('0x4')](_0xae8fe1,_0x5e943d);};}function removeListener(_0x56d22f,_0x4d7074){return function(){PluginEvents[_0xd935('0x5')](_0x56d22f,_0x4d7074);};}exports[_0xd935('0x6')]=function(_0xf5c90f){for(var _0x4cb43c=0x0,_0x2fff72=events[_0xd935('0x7')];_0x4cb43c<_0x2fff72;_0x4cb43c++){var _0x29fce2=events[_0x4cb43c];var _0x8ada=createListener(_0xd935('0x8')+_0x29fce2,_0xf5c90f);PluginEvents['on'](_0x29fce2,_0x8ada);}};
\ No newline at end of file
index 2bb7203..2b0800c 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(_0x30aaf8,_0x45433d){var _0x5d735f=function(_0x5a6d6a){while(--_0x5a6d6a){_0x30aaf8['push'](_0x30aaf8['shift']());}};_0x5d735f(++_0x45433d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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(_0x29fe7b,_0xf87b69){var _0x3f480d=function(_0x1e5ffa){while(--_0x1e5ffa){_0x29fe7b['push'](_0x29fe7b['shift']());}};_0x3f480d(++_0xf87b69);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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 c405183..9c781e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf290=['reject','express','length','catch','show','params','create','body','script','join','cwd','chdir','start','dump','Missing\x20name\x20and/or\x20path','stop','hasOwnProperty','Unknown\x20id','../../config/pm2','api','child_process','exec','bluebird','sendStatus','status','json','error','stack','name','send','info','index','list','then'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0xf290,0xde));var _0x0f29=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf290[_0x1d1779];return _0x2377e9;};'use strict';var _=require('lodash');var pm2=require(_0x0f29('0x0'));var logger=require('../../config/logger')(_0x0f29('0x1'));var path=require('path');var exec=require(_0x0f29('0x2'))[_0x0f29('0x3')];var BPromise=require(_0x0f29('0x4'));function handleEntityNotFound(_0x28b644,_0xfdab92){return function(_0x5984ba){if(!_0x5984ba){_0x28b644[_0x0f29('0x5')](0x194);;}return _0x5984ba;};}function respondWithResult(_0x4911fb,_0x2d5350){_0x2d5350=_0x2d5350||0xc8;return function(_0x1c45ec){if(_0x1c45ec){return _0x4911fb[_0x0f29('0x6')](_0x2d5350)[_0x0f29('0x7')](_0x1c45ec);}return null;};}function handleError(_0xc78ca2,_0x45350b){_0x45350b=_0x45350b||0x1f4;return function(_0x2be26e){logger[_0x0f29('0x8')](_0x2be26e[_0x0f29('0x9')]);if(_0x2be26e[_0x0f29('0xa')]){delete _0x2be26e[_0x0f29('0xa')];}_0xc78ca2[_0x0f29('0x6')](_0x45350b)[_0x0f29('0xb')](_0x2be26e);};}function execChildProcess(){return new BPromise(function(_0xbcdea8,_0x5cc052){exec('npm\x20install',function(_0x38eb8f,_0x5f4796,_0xc11f21){logger[_0x0f29('0xc')](_0x5f4796);logger[_0x0f29('0xc')](_0xc11f21);if(_0x38eb8f){logger[_0x0f29('0x8')](_0x38eb8f);return _0x5cc052(_0x38eb8f);}return _0xbcdea8(_0x5f4796);});});}exports[_0x0f29('0xd')]=function(_0x2d2573,_0x5519cf){return pm2[_0x0f29('0xe')]()[_0x0f29('0xf')](function(_0x2bb7b8){if(_0x2bb7b8){var _0x368984=_[_0x0f29('0x10')](_0x2bb7b8,function(_0x2ed9c5){return _0x2ed9c5[_0x0f29('0xa')]===_0x0f29('0x11')||_0x2ed9c5['name']==='motion2';});return{'rows':_0x368984,'count':_0x368984[_0x0f29('0x12')]};}return null;})[_0x0f29('0xf')](respondWithResult(_0x5519cf,null))[_0x0f29('0x13')](handleError(_0x5519cf,null));};exports[_0x0f29('0x14')]=function(_0x4b3f0b,_0x122bfa){return pm2['describe'](_0x4b3f0b[_0x0f29('0x15')]['id'])['then'](respondWithResult(_0x122bfa,null))['then'](handleEntityNotFound(_0x122bfa,null))['catch'](handleError(_0x122bfa,null));};exports[_0x0f29('0x16')]=function(_0x8fc03f,_0x13e8ff){if(_0x8fc03f[_0x0f29('0x17')][_0x0f29('0xa')]&&_0x8fc03f[_0x0f29('0x17')][_0x0f29('0x18')]){var _0x4888b6=path[_0x0f29('0x19')](__dirname,'../../files/plugins',_0x8fc03f['body']['script']);var _0x5d94b9=process[_0x0f29('0x1a')]();process[_0x0f29('0x1b')](path['dirname'](_0x4888b6));return execChildProcess()[_0x0f29('0xf')](function(_0x1840e0){process[_0x0f29('0x1b')](_0x5d94b9);return pm2[_0x0f29('0x1c')]({'name':_0x8fc03f[_0x0f29('0x17')]['name'],'script':_0x4888b6});})[_0x0f29('0xf')](function(_0x5a440f){pm2[_0x0f29('0x1d')]();return _0x5a440f[0x0];})[_0x0f29('0xf')](respondWithResult(_0x13e8ff,0xc9))[_0x0f29('0x13')](handleError(_0x13e8ff,null));}else{return _0x13e8ff[_0x0f29('0x6')](0x1f4)['send']({'message':_0x0f29('0x1e')});}};exports['update']=function(_0x58b201,_0x92876){if(_0x58b201['body']['id']){delete _0x58b201['body']['id'];}var _0x57dcc7={'online':'restart','stopped':_0x0f29('0x1f')};if(_0x57dcc7[_0x0f29('0x20')](_0x58b201['body'][_0x0f29('0x6')])){return pm2[_0x57dcc7[_0x58b201[_0x0f29('0x17')][_0x0f29('0x6')]]](_0x58b201['params']['id'])['then'](respondWithResult(_0x92876,0xc8))[_0x0f29('0x13')](handleError(_0x92876,null));}else{return _0x92876['status'](0x1f4)[_0x0f29('0xb')]({'message':'Unknown\x20status'});}};exports['destroy']=function(_0x7b10f,_0x409b19){if(_0x7b10f[_0x0f29('0x17')]['id']){delete _0x7b10f[_0x0f29('0x17')]['id'];}if(_0x7b10f['params']['id']){return pm2['delete'](_0x7b10f[_0x0f29('0x15')]['id'])['then'](function(_0x4a4cf2){pm2[_0x0f29('0x1d')]();return _0x4a4cf2[0x0];})['then'](respondWithResult(_0x409b19,null))[_0x0f29('0x13')](handleError(_0x409b19,null));}else{return _0x409b19['status'](0x1f4)['send']({'message':_0x0f29('0x21')});}};
\ No newline at end of file
+var _0x579c=['express','catch','show','describe','params','body','script','join','../../files/plugins','cwd','chdir','dirname','start','status','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','exec','sendStatus','json','error','stack','name','send','npm\x20install','info','index','then'];(function(_0x4fb365,_0x7624d7){var _0x6d726b=function(_0x2fefcc){while(--_0x2fefcc){_0x4fb365['push'](_0x4fb365['shift']());}};_0x6d726b(++_0x7624d7);}(_0x579c,0xda));var _0xc579=function(_0x5471c3,_0x21c405){_0x5471c3=_0x5471c3-0x0;var _0x5c22c2=_0x579c[_0x5471c3];return _0x5c22c2;};'use strict';var _=require(_0xc579('0x0'));var pm2=require(_0xc579('0x1'));var logger=require(_0xc579('0x2'))(_0xc579('0x3'));var path=require(_0xc579('0x4'));var exec=require('child_process')[_0xc579('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x21a0a2,_0x3b913c){return function(_0x1ce62b){if(!_0x1ce62b){_0x21a0a2[_0xc579('0x6')](0x194);;}return _0x1ce62b;};}function respondWithResult(_0x124ee5,_0x1bd276){_0x1bd276=_0x1bd276||0xc8;return function(_0x2e451b){if(_0x2e451b){return _0x124ee5['status'](_0x1bd276)[_0xc579('0x7')](_0x2e451b);}return null;};}function handleError(_0x293c4a,_0x2ce949){_0x2ce949=_0x2ce949||0x1f4;return function(_0x2361fc){logger[_0xc579('0x8')](_0x2361fc[_0xc579('0x9')]);if(_0x2361fc[_0xc579('0xa')]){delete _0x2361fc[_0xc579('0xa')];}_0x293c4a['status'](_0x2ce949)[_0xc579('0xb')](_0x2361fc);};}function execChildProcess(){return new BPromise(function(_0x2048bc,_0x17e37f){exec(_0xc579('0xc'),function(_0x9e3fd3,_0x4577a2,_0x2a8e70){logger[_0xc579('0xd')](_0x4577a2);logger[_0xc579('0xd')](_0x2a8e70);if(_0x9e3fd3){logger[_0xc579('0x8')](_0x9e3fd3);return _0x17e37f(_0x9e3fd3);}return _0x2048bc(_0x4577a2);});});}exports[_0xc579('0xe')]=function(_0x4ac675,_0x177314){return pm2['list']()[_0xc579('0xf')](function(_0x59243e){if(_0x59243e){var _0x424e15=_['reject'](_0x59243e,function(_0x44cd32){return _0x44cd32['name']===_0xc579('0x10')||_0x44cd32[_0xc579('0xa')]==='motion2';});return{'rows':_0x424e15,'count':_0x424e15['length']};}return null;})[_0xc579('0xf')](respondWithResult(_0x177314,null))[_0xc579('0x11')](handleError(_0x177314,null));};exports[_0xc579('0x12')]=function(_0x414ee7,_0x7d5865){return pm2[_0xc579('0x13')](_0x414ee7[_0xc579('0x14')]['id'])[_0xc579('0xf')](respondWithResult(_0x7d5865,null))[_0xc579('0xf')](handleEntityNotFound(_0x7d5865,null))[_0xc579('0x11')](handleError(_0x7d5865,null));};exports['create']=function(_0x463f5e,_0x2b7d74){if(_0x463f5e['body'][_0xc579('0xa')]&&_0x463f5e[_0xc579('0x15')][_0xc579('0x16')]){var _0x6501bc=path[_0xc579('0x17')](__dirname,_0xc579('0x18'),_0x463f5e[_0xc579('0x15')][_0xc579('0x16')]);var _0x55781e=process[_0xc579('0x19')]();process[_0xc579('0x1a')](path[_0xc579('0x1b')](_0x6501bc));return execChildProcess()[_0xc579('0xf')](function(_0x1da86e){process['chdir'](_0x55781e);return pm2[_0xc579('0x1c')]({'name':_0x463f5e[_0xc579('0x15')][_0xc579('0xa')],'script':_0x6501bc});})['then'](function(_0x45e1ac){pm2['dump']();return _0x45e1ac[0x0];})[_0xc579('0xf')](respondWithResult(_0x2b7d74,0xc9))[_0xc579('0x11')](handleError(_0x2b7d74,null));}else{return _0x2b7d74[_0xc579('0x1d')](0x1f4)['send']({'message':_0xc579('0x1e')});}};exports['update']=function(_0x532b33,_0x56439a){if(_0x532b33[_0xc579('0x15')]['id']){delete _0x532b33[_0xc579('0x15')]['id'];}var _0xfdbb73={'online':_0xc579('0x1f'),'stopped':_0xc579('0x20')};if(_0xfdbb73[_0xc579('0x21')](_0x532b33[_0xc579('0x15')]['status'])){return pm2[_0xfdbb73[_0x532b33['body'][_0xc579('0x1d')]]](_0x532b33['params']['id'])[_0xc579('0xf')](respondWithResult(_0x56439a,0xc8))[_0xc579('0x11')](handleError(_0x56439a,null));}else{return _0x56439a[_0xc579('0x1d')](0x1f4)[_0xc579('0xb')]({'message':_0xc579('0x22')});}};exports[_0xc579('0x23')]=function(_0x45e6a3,_0x133d08){if(_0x45e6a3['body']['id']){delete _0x45e6a3[_0xc579('0x15')]['id'];}if(_0x45e6a3[_0xc579('0x14')]['id']){return pm2[_0xc579('0x24')](_0x45e6a3[_0xc579('0x14')]['id'])['then'](function(_0x57299e){pm2[_0xc579('0x25')]();return _0x57299e[0x0];})['then'](respondWithResult(_0x133d08,null))[_0xc579('0x11')](handleError(_0x133d08,null));}else{return _0x133d08[_0xc579('0x1d')](0x1f4)[_0xc579('0xb')]({'message':_0xc579('0x26')});}};
\ No newline at end of file
index 3c2b7d7..b56b53f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc144=['getAgents','/queues','isAuthenticated','getQueues','exports','express','Router','./realtime.controller','get','/agents'];(function(_0xd2f4ac,_0x5aa8e5){var _0x9757b2=function(_0x442ced){while(--_0x442ced){_0xd2f4ac['push'](_0xd2f4ac['shift']());}};_0x9757b2(++_0x5aa8e5);}(_0xc144,0x145));var _0x4c14=function(_0x2c48ff,_0x3b7b12){_0x2c48ff=_0x2c48ff-0x0;var _0x141cb7=_0xc144[_0x2c48ff];return _0x141cb7;};'use strict';var express=require(_0x4c14('0x0'));var router=express[_0x4c14('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x4c14('0x2'));router[_0x4c14('0x3')](_0x4c14('0x4'),auth['isAuthenticated'](),controller[_0x4c14('0x5')]);router['get'](_0x4c14('0x6'),auth[_0x4c14('0x7')](),controller[_0x4c14('0x8')]);module[_0x4c14('0x9')]=router;
\ No newline at end of file
+var _0xed2a=['isAuthenticated','getAgents','/queues','getQueues','express','../../components/auth/service','get','/agents'];(function(_0x5e42a7,_0x3eba35){var _0x36d21b=function(_0x567f0a){while(--_0x567f0a){_0x5e42a7['push'](_0x5e42a7['shift']());}};_0x36d21b(++_0x3eba35);}(_0xed2a,0x64));var _0xaed2=function(_0x48c202,_0x10ff82){_0x48c202=_0x48c202-0x0;var _0x370e19=_0xed2a[_0x48c202];return _0x370e19;};'use strict';var express=require(_0xaed2('0x0'));var router=express['Router']();var auth=require(_0xaed2('0x1'));var controller=require('./realtime.controller');router[_0xaed2('0x2')](_0xaed2('0x3'),auth[_0xaed2('0x4')](),controller[_0xaed2('0x5')]);router['get'](_0xaed2('0x6'),auth[_0xaed2('0x4')](),controller[_0xaed2('0x7')]);module['exports']=router;
\ No newline at end of file
index 9703828..9d4d99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b5=['startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','result','waiting','talking','paused','voice','push','pTalking','originated','dialActive','Trunk','startProgressive','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','agents','loggedInDb','loggedIn','busy','outbound','find','pick','length','some','internal','getMembers','UserId','accountcode','online','Queue','Pause','findAll','QueueId','getChannels','includes','toLowerCase','Invalid\x20channel','getAgents','query','globalQueueFilter','pauseTypeFilter','pause','resolve','channel','sort','globalStatus','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getAgentIdsByStatus','type','key','role','agent','getOptions','raw','sequelize','FIELD(id,','forEach','where','merge','user','userProfileId','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','filterAgentAttributes','getAgentStatus','Status','sortAgentsByStatus','getQueues','fieldName','QueueCampaigns','Queues','filter','all','util','lodash','jayson/promise','../../components/parsers/qs','../../config/utils','api','../../mysqldb','client','http','offset','undefined','count','status','set','Content-Range','json','error','stack','name','send','request'];(function(_0x2e9f2c,_0x39460c){var _0x5a023f=function(_0x14a64e){while(--_0x14a64e){_0x2e9f2c['push'](_0x2e9f2c['shift']());}};_0x5a023f(++_0x39460c);}(_0x34b5,0xd7));var _0x534b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x34b5[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x534b('0x0'));var _=require(_0x534b('0x1'));var jayson=require(_0x534b('0x2'));var rta=require('../../components/realtime/agents');var qs=require(_0x534b('0x3'));var utils=require(_0x534b('0x4'));var logger=require('../../config/logger')(_0x534b('0x5'));var db=require(_0x534b('0x6'))['db'];var amiClient=jayson[_0x534b('0x7')][_0x534b('0x8')]({'port':0x232a});var routingClient=jayson[_0x534b('0x7')][_0x534b('0x8')]({'port':0x232c});function respondWithFilteredResult(_0x1d5fd4,_0x165600){return function(_0x404355){if(_0x404355){var _0xdbaf96=typeof _0x165600[_0x534b('0x9')]===_0x534b('0xa')&&typeof _0x165600['limit']===_0x534b('0xa');var _0x33fc13=_0x404355[_0x534b('0xb')];var _0x4cd14b=_0xdbaf96?0x0:_0x165600[_0x534b('0x9')];var _0x4d7ec3=_0xdbaf96?_0x404355[_0x534b('0xb')]:_0x165600['offset']+_0x165600['limit'];var _0x77a307;if(_0x4d7ec3>=_0x33fc13){_0x4d7ec3=_0x33fc13;_0x77a307=0xc8;}else{_0x77a307=0xce;}_0x1d5fd4[_0x534b('0xc')](_0x77a307);return _0x1d5fd4[_0x534b('0xd')](_0x534b('0xe'),_0x4cd14b+'-'+_0x4d7ec3+'/'+_0x33fc13)[_0x534b('0xf')](_0x404355);}return null;};}function handleError(_0x9b950d,_0x2e4184){_0x2e4184=_0x2e4184||0x1f4;return function(_0xacb110){logger[_0x534b('0x10')](_0xacb110[_0x534b('0x11')]);if(_0xacb110[_0x534b('0x12')]){delete _0xacb110[_0x534b('0x12')];}_0x9b950d[_0x534b('0xc')](_0x2e4184)[_0x534b('0x13')](_0xacb110);};}function getRealtimeQueues(_0xb01044,_0x496e41){return new Promise(function(_0x3182cd,_0x308d80){var _0x3d1bee=_0x496e41==='voice'?amiClient:routingClient;return _0x3d1bee[_0x534b('0x14')](_[_0x534b('0x15')](_0x496e41)+'Queues',_0xb01044)[_0x534b('0x16')](function(_0xa47a90){if(_0xa47a90[_0x534b('0x10')])throw new Error(util[_0x534b('0x17')](_0x534b('0x18'),_0x496e41));return _0x3182cd(_0xa47a90['result']);})[_0x534b('0x19')](function(_0x2b48a0){_0x308d80(_0x2b48a0);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x5bb597,_0xb7f0e9){return amiClient[_0x534b('0x14')](_0x534b('0x1a'),{})[_0x534b('0x16')](function(_0xc27622){if(_0xc27622[_0x534b('0x10')])throw new Error(_0x534b('0x1b'));return _0x5bb597(_0xc27622[_0x534b('0x1c')]);})['catch'](function(_0x15e79b){_0xb7f0e9(_0x15e79b);});});}function initializeQueues(_0x27c8a9,_0x2ffa7d,_0x53ec97,_0x555be8){var _0x24c63d=['loggedIn','available',_0x534b('0x1d'),_0x534b('0x1e'),_0x534b('0x1f')];if(_0x53ec97===_0x534b('0x20')&&_0x555be8==='outbound'){_0x24c63d[_0x534b('0x21')](_0x534b('0x22'),_0x534b('0x23'),'message',_0x534b('0x24'),'dialMethod',_0x534b('0x25'),'startPredictive',_0x534b('0x26'),'erlangCalls',_0x534b('0x27'),_0x534b('0x28'),_0x534b('0x29'),_0x534b('0x2a'),_0x534b('0x2b'),'dialPredictiveIntervalMinThreshold',_0x534b('0x2c'),_0x534b('0x2d'),_0x534b('0x2e'),'predictiveIntervalDroppedCallsTimeout',_0x534b('0x2f'),_0x534b('0x30'),_0x534b('0x31'));}return _0x27c8a9[_0x534b('0x32')](function(_0x5f569a){var _0x4ad26d=_0x5f569a['get']({'plain':!![]});_0x4ad26d[_0x534b('0x33')]=[];_0x4ad26d['paused']=0x0;_0x4ad26d[_0x534b('0x34')]=0x0;_0x4ad26d[_0x534b('0x35')]=0x0;_0x4ad26d['available']=0x0;_0x4ad26d[_0x534b('0x1d')]=0x0;if(_0x53ec97===_0x534b('0x20')){_0x4ad26d['talking']=0x0;_0x4ad26d[_0x534b('0x36')]=0x0;if(_0x555be8===_0x534b('0x37')){_0x4ad26d['pTalking']=0x0;_0x4ad26d[_0x534b('0x23')]=0x0;}}var _0x204631=_[_0x534b('0x38')](_0x2ffa7d,['id',_0x4ad26d['id']]);if(_0x204631)_['merge'](_0x4ad26d,_[_0x534b('0x39')](_0x204631,_0x24c63d));return _0x4ad26d;});}function updateAgentVoiceStatus(_0x443e1a,_0x232ef6,_0x336050){var _0x2f2865=_['filter'](_0x336050,['queue',_0x232ef6[_0x534b('0x12')]]);if(_0x2f2865[_0x534b('0x3a')]===0x0)return _0x443e1a[_0x534b('0x36')]=!![];if(_[_0x534b('0x3b')](_0x2f2865,['connectedlinenum',_0x443e1a[_0x534b('0x3c')]['toString']()]))return _0x443e1a[_0x534b('0x1e')]=!![];if(!_0x443e1a[_0x534b('0x1e')])return _0x443e1a['busy']=!![];}function getVoiceQueueAgents(_0x495846,_0x4709b4,_0x5d7fa3,_0x33d16f){var _0x554736=_['find'](_0x4709b4,['id',_0x495846['id']]);if(!_0x554736)return _0x495846;return _0x554736[_0x534b('0x3d')]({'raw':!![]})[_0x534b('0x16')](function(_0x25482c){for(var _0x228a39=0x0;_0x228a39<_0x25482c['length'];_0x228a39++){var _0x4736b9=_[_0x534b('0x38')](_0x5d7fa3,['id',_0x25482c[_0x228a39][_0x534b('0x3e')]]);if(!_0x4736b9){_0x4736b9={'id':_0x25482c[_0x228a39][_0x534b('0x3e')],'name':_0x25482c[_0x228a39][_0x534b('0x3e')],'accountcode':'','online':![]};}var _0xd18a50={'id':_0x4736b9['id'],'name':_0x4736b9[_0x534b('0x12')],'internal':_0x4736b9[_0x534b('0x3f')],'online':Boolean(_0x4736b9[_0x534b('0x40')]),'paused':Boolean(_0x25482c[_0x228a39][_0x534b('0x1f')])};if(_0x4736b9['voiceStatus']==='talking')updateAgentVoiceStatus(_0xd18a50,_0x495846,_0x33d16f);if(_0xd18a50[_0x534b('0x40')])_0x495846['loggedInDb']++;if(_0xd18a50[_0x534b('0x36')])_0x495846['busy']++;if(_0xd18a50['paused']&&!_0xd18a50[_0x534b('0x36')]&&!_0xd18a50['talking'])_0x495846[_0x534b('0x1f')]++;_0x495846['agents'][_0x534b('0x21')](_0xd18a50);}return _0x495846;});}function getQueueAgents(_0x166141,_0x423674,_0x54febe){var _0x484820='User'+_[_0x534b('0x15')](_0x54febe)+_0x534b('0x41');var _0x5ad008=_0x54febe+_0x534b('0x42');return db[_0x484820][_0x534b('0x43')]({'where':{[_[_0x534b('0x15')](_0x54febe)+_0x534b('0x44')]:_0x166141['id']},'raw':!![]})[_0x534b('0x16')](function(_0x168371){for(var _0x2ebbf4=0x0;_0x2ebbf4<_0x168371[_0x534b('0x3a')];_0x2ebbf4++){var _0x113874=_[_0x534b('0x38')](_0x423674,['id',_0x168371[_0x2ebbf4][_0x534b('0x3e')]]);if(!_0x113874){_0x113874={'id':_0x168371[_0x2ebbf4][_0x534b('0x3e')],'name':_0x168371[_0x2ebbf4][_0x534b('0x3e')],'online':![],['pauseField']:![]};}var _0x1b69af={'id':_0x113874['id'],'name':_0x113874['name'],'online':Boolean(_0x113874[_0x534b('0x40')]),'paused':Boolean(_0x113874[_0x5ad008])};if(_0x1b69af[_0x534b('0x40')])_0x166141['loggedInDb']++;_0x166141[_0x534b('0x33')][_0x534b('0x21')](_0x1b69af);}return _0x166141;});}function validateChannel(_0xcee605){var _0x586244=utils[_0x534b('0x45')]();if(!_[_0x534b('0x46')](_0x586244,_0xcee605[_0x534b('0x47')]()))throw new Error(_0x534b('0x48'));return _0xcee605['toLowerCase']();}exports[_0x534b('0x49')]=function(_0x7abd08,_0xe70b5a){var _0x14646e={'count':0x0,'rows':[]};var _0x51eee1={};var _0x45555b;var _0x5c7354;var _0x31b67d;var _0x1b48b0;var _0x1ff755=utils[_0x534b('0x45')]();var _0x37b746=_0x7abd08[_0x534b('0x4a')][_0x534b('0x4b')];var _0x2b7f61=_0x7abd08[_0x534b('0x4a')]['globalStatusFilter'];var _0x499073=_0x7abd08[_0x534b('0x4a')][_0x534b('0x4c')];var _0x5864e6=_0x2b7f61===_0x534b('0x4d')||_0x2b7f61==='*pause'?!![]:![];var _0x24051b=[];var _0x5d4032;Promise[_0x534b('0x4e')]()[_0x534b('0x16')](function(){if(_0x7abd08[_0x534b('0x4a')][_0x534b('0x4f')]){_0x45555b=validateChannel(_0x7abd08[_0x534b('0x4a')][_0x534b('0x4f')]);}if(!_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')]||!_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')][_0x534b('0x46')](_0x534b('0x51'))){_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')]=rta['validateSortParameter'](_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')]);return;}var _0x22f1be=rta[_0x534b('0x52')](_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')]);_0x7abd08[_0x534b('0x4a')][_0x534b('0x50')]=_0x22f1be[_0x534b('0x53')][_0x534b('0x54')](',');_0x5c7354=_0x22f1be[_0x534b('0x55')];})[_0x534b('0x16')](function(){if(!_0x37b746){return[];}return rta[_0x534b('0x56')](_0x37b746,_0x45555b);})[_0x534b('0x16')](function(_0x1d76bd){_0x24051b=_0x1d76bd;return rta[_0x534b('0x57')]();})[_0x534b('0x16')](function(_0x1b41b6){_0x1b48b0=_0x1b41b6[_0x534b('0x58')];if((!_0x2b7f61||_0x5864e6)&&!_0x5c7354){return _0x24051b;}if(_0x5c7354&&!_0x2b7f61){return rta['getSortedAgentsIdsByStatus'](_0x1b48b0,_0x24051b,_0x5c7354);}else{return rta[_0x534b('0x59')](_0x1b48b0,_0x24051b,_0x2b7f61);}})[_0x534b('0x16')](function(_0x3c17bd){_0x24051b=_0x3c17bd;var _0x3294da=![];if(_0x24051b['length']===0x0){if(_0x37b746||_0x2b7f61){_0x3294da=!![];}if(_0x5864e6){_0x3294da=![];}}if(_0x3294da){return _0x14646e;}var _0x41fa6b=_[_0x534b('0x32')](db['User']['rawAttributes'],function(_0x4ef32f){return{'name':_0x4ef32f['fieldName'],'type':_0x4ef32f[_0x534b('0x5a')][_0x534b('0x5b')]};});_0x7abd08['query'][_0x534b('0x5c')]=_0x534b('0x5d');_0x7abd08[_0x534b('0x4a')][_0x534b('0x40')]=!![];_0x51eee1=qs[_0x534b('0x5e')](_0x41fa6b,_0x7abd08);_0x51eee1[_0x534b('0x5f')]=!![];var _0x565151=[];if(_0x24051b[_0x534b('0x3a')]>0x0){_0x565151[_0x534b('0x21')]({'id':{'$in':_0x24051b}});if(_0x5c7354&&!_0x2b7f61){_0x5d4032=[db[_0x534b('0x60')]['literal'](_0x534b('0x61')+_0x24051b+')')];_0x51eee1[_0x534b('0x55')]=_0x5d4032;}}if(_0x5864e6){_0x1ff755['forEach'](function(_0x16d0b4){var _0x106dd2=!![];if(_0x2b7f61==='*pause'&&_0x45555b!==_0x16d0b4){_0x106dd2=![];}_0x565151[_0x534b('0x21')]({[_0x16d0b4+_0x534b('0x42')]:_0x106dd2});});if(_0x499073){_0x565151[_0x534b('0x21')]({'pauseType':_0x499073});}}else if(_0x2b7f61){_0x1ff755[_0x534b('0x62')](function(_0x350090){_0x565151[_0x534b('0x21')]({[_0x350090+_0x534b('0x42')]:![]});});}_0x51eee1[_0x534b('0x63')]=_[_0x534b('0x64')](_0x51eee1[_0x534b('0x63')],{'$and':_0x565151});if(_0x7abd08[_0x534b('0x65')][_0x534b('0x5c')]===_0x534b('0x65')){var _0x39eff2={'params':{'id':_0x7abd08[_0x534b('0x65')][_0x534b('0x66')]},'query':{'section':'Agents','role':_0x534b('0x5d'),'online':!![],'raw':!![],'ids':_0x24051b,'customSorting':_0x5d4032}};if(_0x5864e6){_0x39eff2['query'][_0x534b('0x67')]=_0x565151;}_0x39eff2[_0x534b('0x4a')]=Object[_0x534b('0x68')](_0x39eff2['query'],_0x7abd08[_0x534b('0x4a')]);delete _0x39eff2[_0x534b('0x4a')]['id'];return db[_0x534b('0x69')][_0x534b('0x6a')](_0x39eff2);}return db['User'][_0x534b('0x6b')](_0x51eee1);})[_0x534b('0x16')](function(_0x4f4a72){_0x14646e[_0x534b('0xb')]=_0x4f4a72[_0x534b('0xb')];_0x31b67d=_0x4f4a72[_0x534b('0x58')];return _0x31b67d['map'](function(_0x2ef6bb){var _0x59d468=_[_0x534b('0x38')](_0x1b48b0,['id',_0x2ef6bb['id']]);if(_0x59d468){var _0x4374f5=rta[_0x534b('0x6c')](_0x59d468);_['merge'](_0x2ef6bb,_0x4374f5);}_0x2ef6bb[_0x534b('0x51')]=rta[_0x534b('0x6d')](_0x2ef6bb);if(_0x2ef6bb[_0x534b('0x51')][_0x534b('0x46')]('pause')){_0x1ff755[_0x534b('0x62')](function(_0x26ded4){if(_0x2ef6bb[_0x26ded4+_0x534b('0x42')]){_0x2ef6bb[_0x26ded4+_0x534b('0x6e')]=_0x534b('0x4d');}});}return _0x2ef6bb;});})[_0x534b('0x16')](function(_0x1b9246){if(!_0x5c7354||_0x5d4032){return _0x1b9246;}return rta[_0x534b('0x6f')](_0x1b9246,_0x5c7354);})[_0x534b('0x16')](function(_0x28842c){_0x14646e[_0x534b('0x58')]=_0x28842c;return _0x14646e;})[_0x534b('0x16')](respondWithFilteredResult(_0xe70b5a,_0x51eee1))[_0x534b('0x19')](handleError(_0xe70b5a,null));};exports[_0x534b('0x70')]=function(_0x15cd38,_0x34dc29){var _0x286b88={'count':0x0,'rows':[]},_0xb63bcd={},_0x482a0f,_0x354149,_0x2794b9,_0x17442a,_0x5dff9b;Promise['resolve']()['then'](function(){if(_0x15cd38[_0x534b('0x4a')][_0x534b('0x4f')])_0x482a0f=validateChannel(_0x15cd38[_0x534b('0x4a')][_0x534b('0x4f')]);var _0x25e952=_[_0x534b('0x15')](_0x482a0f)+_0x534b('0x41');var _0x40e654=_[_0x534b('0x32')](db[_0x25e952]['rawAttributes'],function(_0x2e0c74){return{'name':_0x2e0c74[_0x534b('0x71')],'type':_0x2e0c74[_0x534b('0x5a')][_0x534b('0x5b')]};});_0xb63bcd=qs['getOptions'](_0x40e654,_0x15cd38);if(_0x15cd38[_0x534b('0x65')]['role']===_0x534b('0x65')){var _0x1c16f0={'params':{'id':_0x15cd38[_0x534b('0x65')][_0x534b('0x66')]},'query':{'section':_0x482a0f===_0x534b('0x20')&&_0x15cd38['query'][_0x534b('0x5a')]===_0x534b('0x37')?_0x534b('0x72'):_['startCase'](_0x482a0f)+_0x534b('0x73'),'type':_0x15cd38['query']['type'],'nolimit':!![],'sort':'name','filter':_0x15cd38[_0x534b('0x4a')][_0x534b('0x74')]}};return db[_0x534b('0x69')]['getResources'](_0x1c16f0);}return db[_0x25e952][_0x534b('0x6b')](_0xb63bcd);})[_0x534b('0x16')](function(_0x51b34c){_0x286b88[_0x534b('0xb')]=_0x51b34c[_0x534b('0xb')];_0x354149=_0x51b34c[_0x534b('0x58')];return getRealtimeQueues(_0x15cd38,_0x482a0f);})[_0x534b('0x16')](function(_0x2452ea){_0x17442a=_0x2452ea[_0x534b('0x58')];return rta[_0x534b('0x57')]();})['then'](function(_0x1b4664){_0x2794b9=_0x1b4664[_0x534b('0x58')];if(_0x482a0f!=_0x534b('0x20'))return;return getRealtimeVoiceQueueChannels();})[_0x534b('0x16')](function(_0x236015){_0x5dff9b=_0x236015?_0x236015[_0x534b('0x58')]:[];return initializeQueues(_0x354149,_0x17442a,_0x482a0f,_0x15cd38[_0x534b('0x4a')][_0x534b('0x5a')]);})[_0x534b('0x16')](function(_0x185bc2){var _0x33125a=_0x185bc2[_0x534b('0x32')](function(_0xd1e2a7){if(_0x482a0f===_0x534b('0x20'))return getVoiceQueueAgents(_0xd1e2a7,_0x354149,_0x2794b9,_0x5dff9b);else return getQueueAgents(_0xd1e2a7,_0x2794b9,_0x482a0f);});return Promise[_0x534b('0x75')](_0x33125a);})[_0x534b('0x16')](function(_0x571854){_0x286b88[_0x534b('0x58')]=_0x571854;return _0x286b88;})[_0x534b('0x16')](respondWithFilteredResult(_0x34dc29,_0xb63bcd))[_0x534b('0x19')](handleError(_0x34dc29,null));};
\ No newline at end of file
+var _0x34d2=['FIELD(id,','forEach','Pause','where','user','userProfileId','Agents','extraQueryConditions','UserProfile','getResources','findAndCountAll','rows','find','filterAgentAttributes','merge','getAgentStatus','pause','catch','getQueues','Queue','rawAttributes','fields','name','voice','outbound','dialMethod','getOptions','QueueCampaigns','count','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/queues','../../mysqldb','APIBadRequestError','offset','undefined','limit','status','set','json','getChannels','query','globalStatusFilter','pauseTypeFilter','*pause','resolve','then','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','validateSortParameter','getUpdatedSortOptions','join','order','getAgentIdsByQueues','getRealtimeAgents','getSortedAgentsIdsByStatus','getAgentIdsByStatus','map','User','fieldName','type','key','role','agent','online','raw','length','push','sequelize','literal'];(function(_0x5292fd,_0x30e1e7){var _0x2e0097=function(_0x4692a7){while(--_0x4692a7){_0x5292fd['push'](_0x5292fd['shift']());}};_0x2e0097(++_0x30e1e7);}(_0x34d2,0x6c));var _0x234d=function(_0x364de0,_0x3f57dc){_0x364de0=_0x364de0-0x0;var _0x501fd2=_0x34d2[_0x364de0];return _0x501fd2;};'use strict';var _=require(_0x234d('0x0'));var util=require(_0x234d('0x1'));var rta=require('../../components/realtime/agents');var rtq=require(_0x234d('0x2'));var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var db=require(_0x234d('0x3'))['db'];var APIBadRequestError=require('../../errors/api')[_0x234d('0x4')];var APIHandleError=require('../../errors/api')['handleError'];function respondWithFilteredResult(_0x1a6d3e,_0x32bb95){return function(_0x56be12){if(_0x56be12){var _0x14e0b9=typeof _0x32bb95[_0x234d('0x5')]===_0x234d('0x6')&&typeof _0x32bb95[_0x234d('0x7')]===_0x234d('0x6');var _0x10f998=_0x56be12['count'];var _0x5c879c=_0x14e0b9?0x0:_0x32bb95[_0x234d('0x5')];var _0x3211ce=_0x14e0b9?_0x56be12['count']:_0x32bb95[_0x234d('0x5')]+_0x32bb95[_0x234d('0x7')];var _0x42ee26;if(_0x3211ce>=_0x10f998){_0x3211ce=_0x10f998;_0x42ee26=0xc8;}else{_0x42ee26=0xce;}_0x1a6d3e[_0x234d('0x8')](_0x42ee26);return _0x1a6d3e[_0x234d('0x9')]('Content-Range',_0x5c879c+'-'+_0x3211ce+'/'+_0x10f998)[_0x234d('0xa')](_0x56be12);}return null;};}exports['getAgents']=function(_0x2baebd,_0x3175a3){var _0x36e09d={'count':0x0,'rows':[]};var _0xffb24d={};var _0x177490;var _0x333ec1=utils[_0x234d('0xb')]();var _0x54eb54;var _0x4d299c;var _0x3a2582=_0x2baebd[_0x234d('0xc')]['globalQueueFilter'];var _0x39662f=_0x2baebd[_0x234d('0xc')][_0x234d('0xd')];var _0x488a7f=_0x2baebd[_0x234d('0xc')][_0x234d('0xe')];var _0xf63613=_0x39662f==='pause'||_0x39662f===_0x234d('0xf')?!![]:![];var _0xc2876c=[];var _0x4a47f8;var _0x5b6f2b;Promise[_0x234d('0x10')]()[_0x234d('0x11')](function(){if(_0x2baebd[_0x234d('0xc')][_0x234d('0x12')]){if(!utils[_0x234d('0x13')](_0x2baebd[_0x234d('0xc')][_0x234d('0x12')])){throw new APIBadRequestError(util[_0x234d('0x14')](_0x234d('0x15'),_0x2baebd[_0x234d('0xc')][_0x234d('0x12')]));}_0x177490=_0x2baebd['query']['channel'][_0x234d('0x16')]();}if(!_0x2baebd[_0x234d('0xc')][_0x234d('0x17')]||!_0x2baebd[_0x234d('0xc')][_0x234d('0x17')][_0x234d('0x18')]('globalStatus')){_0x2baebd[_0x234d('0xc')]['sort']=rta[_0x234d('0x19')](_0x2baebd[_0x234d('0xc')][_0x234d('0x17')]);return;}var _0x3bfcac=rta[_0x234d('0x1a')](_0x2baebd['query'][_0x234d('0x17')]);_0x2baebd['query'][_0x234d('0x17')]=_0x3bfcac['fields'][_0x234d('0x1b')](',');_0x4a47f8=_0x3bfcac[_0x234d('0x1c')];})[_0x234d('0x11')](function(){if(!_0x3a2582){return[];}return rta[_0x234d('0x1d')](_0x3a2582,_0x177490);})['then'](function(_0x591398){_0xc2876c=_0x591398;return rta[_0x234d('0x1e')]();})[_0x234d('0x11')](function(_0xc3c1a5){_0x4d299c=_0xc3c1a5['rows'];if((!_0x39662f||_0xf63613)&&!_0x4a47f8){return _0xc2876c;}if(_0x4a47f8&&!_0x39662f){return rta[_0x234d('0x1f')](_0x4d299c,_0xc2876c,_0x4a47f8);}else{return rta[_0x234d('0x20')](_0x4d299c,_0xc2876c,_0x39662f);}})[_0x234d('0x11')](function(_0x4907cb){_0xc2876c=_0x4907cb;var _0x550e01=![];if(_0xc2876c['length']===0x0){if(_0x3a2582||_0x39662f){_0x550e01=!![];}if(_0xf63613){_0x550e01=![];}}if(_0x550e01){return _0x36e09d;}var _0x38b408=_[_0x234d('0x21')](db[_0x234d('0x22')]['rawAttributes'],function(_0x1f5900){return{'name':_0x1f5900[_0x234d('0x23')],'type':_0x1f5900[_0x234d('0x24')][_0x234d('0x25')]};});_0x2baebd[_0x234d('0xc')][_0x234d('0x26')]=_0x234d('0x27');_0x2baebd[_0x234d('0xc')][_0x234d('0x28')]=!![];_0xffb24d=qs['getOptions'](_0x38b408,_0x2baebd);_0xffb24d[_0x234d('0x29')]=!![];var _0x1dcd5c=[];if(_0xc2876c[_0x234d('0x2a')]>0x0){_0x1dcd5c[_0x234d('0x2b')]({'id':{'$in':_0xc2876c}});if(_0x4a47f8&&!_0x39662f){_0x5b6f2b=[db[_0x234d('0x2c')][_0x234d('0x2d')](_0x234d('0x2e')+_0xc2876c+')')];_0xffb24d[_0x234d('0x1c')]=_0x5b6f2b;}}if(_0xf63613){_0x333ec1[_0x234d('0x2f')](function(_0x1fecae){var _0x26aa9c=!![];if(_0x39662f===_0x234d('0xf')&&_0x177490!==_0x1fecae){_0x26aa9c=![];}_0x1dcd5c['push']({[_0x1fecae+_0x234d('0x30')]:_0x26aa9c});});if(_0x488a7f){_0x1dcd5c[_0x234d('0x2b')]({'pauseType':_0x488a7f});}}else if(_0x39662f){_0x333ec1[_0x234d('0x2f')](function(_0x27697b){_0x1dcd5c[_0x234d('0x2b')]({[_0x27697b+_0x234d('0x30')]:![]});});}_0xffb24d['where']=_['merge'](_0xffb24d[_0x234d('0x31')],{'$and':_0x1dcd5c});if(_0x2baebd[_0x234d('0x32')][_0x234d('0x26')]==='user'){var _0x3a0ad7={'params':{'id':_0x2baebd[_0x234d('0x32')][_0x234d('0x33')]},'query':{'section':_0x234d('0x34'),'role':_0x234d('0x27'),'online':!![],'raw':!![],'ids':_0xc2876c,'customSorting':_0x5b6f2b}};if(_0xf63613){_0x3a0ad7[_0x234d('0xc')][_0x234d('0x35')]=_0x1dcd5c;}_0x3a0ad7[_0x234d('0xc')]=Object['assign'](_0x3a0ad7[_0x234d('0xc')],_0x2baebd[_0x234d('0xc')]);delete _0x3a0ad7['query']['id'];return db[_0x234d('0x36')][_0x234d('0x37')](_0x3a0ad7);}return db[_0x234d('0x22')][_0x234d('0x38')](_0xffb24d);})[_0x234d('0x11')](function(_0x326c58){_0x36e09d['count']=_0x326c58['count'];_0x54eb54=_0x326c58[_0x234d('0x39')];return _0x54eb54['map'](function(_0x5d7701){var _0xea5b27=_[_0x234d('0x3a')](_0x4d299c,['id',_0x5d7701['id']]);if(_0xea5b27){var _0x316f00=rta[_0x234d('0x3b')](_0xea5b27);_[_0x234d('0x3c')](_0x5d7701,_0x316f00);}_0x5d7701['globalStatus']=rta[_0x234d('0x3d')](_0x5d7701);if(_0x5d7701['globalStatus'][_0x234d('0x18')](_0x234d('0x3e'))){_0x333ec1[_0x234d('0x2f')](function(_0x4781f7){if(_0x5d7701[_0x4781f7+_0x234d('0x30')]){_0x5d7701[_0x4781f7+'Status']='pause';}});}return _0x5d7701;});})['then'](function(_0x586866){if(!_0x4a47f8||_0x5b6f2b){return _0x586866;}return rta['sortAgentsByStatus'](_0x586866,_0x4a47f8);})[_0x234d('0x11')](function(_0x1bdb86){_0x36e09d[_0x234d('0x39')]=_0x1bdb86;return _0x36e09d;})[_0x234d('0x11')](respondWithFilteredResult(_0x3175a3,_0xffb24d))[_0x234d('0x3f')](APIHandleError(_0x3175a3));};exports[_0x234d('0x40')]=function(_0x22d9fc,_0x1dda91){var _0x51ca72={'count':0x0,'rows':[]};var _0x5e5a8c={};var _0x218f8c;var _0x1c01e3;var _0x5027c3;Promise['resolve']()['then'](function(){if(_0x22d9fc['query']['channel']){if(!utils['isValidChannel'](_0x22d9fc[_0x234d('0xc')]['channel'])){throw new APIBadRequestError(util[_0x234d('0x14')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x22d9fc[_0x234d('0xc')]['channel']));}_0x218f8c=_0x22d9fc['query'][_0x234d('0x12')][_0x234d('0x16')]();}var _0xd06bb9=_['startCase'](_0x218f8c)+_0x234d('0x41');var _0x608e33=_[_0x234d('0x21')](db[_0xd06bb9][_0x234d('0x42')],function(_0x2a716f){return{'name':_0x2a716f['fieldName'],'type':_0x2a716f['type']['key']};});if(!_0x22d9fc[_0x234d('0xc')][_0x234d('0x43')]){var _0x10e727=['id',_0x234d('0x44')];if(_0x218f8c===_0x234d('0x45')){_0x10e727[_0x234d('0x2b')](_0x234d('0x24'));if(_0x22d9fc[_0x234d('0xc')][_0x234d('0x24')]===_0x234d('0x46')){_0x10e727['push'](['dialActive',_0x234d('0x47')]);}}_0x22d9fc['query'][_0x234d('0x43')]=_0x10e727[_0x234d('0x1b')](',');}_0x5e5a8c=qs[_0x234d('0x48')](_0x608e33,_0x22d9fc);if(_0x22d9fc[_0x234d('0x32')][_0x234d('0x26')]===_0x234d('0x32')){var _0x4b5621={'params':{'id':_0x22d9fc[_0x234d('0x32')][_0x234d('0x33')]},'query':{'section':_0x218f8c===_0x234d('0x45')&&_0x22d9fc['query']['type']===_0x234d('0x46')?_0x234d('0x49'):_['startCase'](_0x218f8c)+'Queues','type':_0x22d9fc['query'][_0x234d('0x24')],'nolimit':!![],'sort':_0x234d('0x44'),'filter':_0x22d9fc['query']['filter']}};return db[_0x234d('0x36')][_0x234d('0x37')](_0x4b5621);}return db[_0xd06bb9]['findAndCountAll'](_0x5e5a8c);})[_0x234d('0x11')](function(_0x1546bf){_0x51ca72[_0x234d('0x4a')]=_0x1546bf['count'];_0x1c01e3=_0x1546bf[_0x234d('0x39')];return rtq[_0x234d('0x4b')](_0x22d9fc,_0x218f8c);})[_0x234d('0x11')](function(_0x3a361a){_0x5027c3=_0x3a361a['rows'];return rtq[_0x234d('0x4c')](_0x1c01e3,_0x5027c3,_0x218f8c,_0x22d9fc[_0x234d('0xc')][_0x234d('0x24')]);})['then'](function(_0x48ecfb){_0x51ca72[_0x234d('0x39')]=_0x48ecfb;return _0x51ca72;})['then'](respondWithFilteredResult(_0x1dda91,_0x5e5a8c))[_0x234d('0x3f')](APIHandleError(_0x1dda91));};
\ No newline at end of file
index 94658ee..577b916 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(_0x1d4868,_0x2b2406){var _0x5eaabe=function(_0x3c4c44){while(--_0x3c4c44){_0x1d4868['push'](_0x1d4868['shift']());}};_0x5eaabe(++_0x2b2406);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x16539a,_0x31409a){_0x16539a=_0x16539a-0x0;var _0x200796=_0xcb91[_0x16539a];return _0x200796;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x43d2d7,_0x5c76da){var _0x4af41a=function(_0xd168df){while(--_0xd168df){_0x43d2d7['push'](_0x43d2d7['shift']());}};_0x4af41a(++_0x5c76da);}(_0xedd9,0xfc));var _0x9edd=function(_0x58addc,_0x9118ff){_0x58addc=_0x58addc-0x0;var _0x33527a=_0xedd9[_0x58addc];return _0x33527a;};'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 83ec262..d619e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f5=['DATE','exports','INTEGER','STRING'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0xc4f5,0xa5));var _0x5c4f=function(_0xf0ab7c,_0x23bbc2){_0xf0ab7c=_0xf0ab7c-0x0;var _0x198144=_0xc4f5[_0xf0ab7c];return _0x198144;};'use strict';var Sequelize=require('sequelize');module[_0x5c4f('0x0')]={'state':{'type':Sequelize[_0x5c4f('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x5c4f('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x5c4f('0x2')]},'starttime':{'type':Sequelize[_0x5c4f('0x3')]},'responsetime':{'type':Sequelize[_0x5c4f('0x3')]},'ringtime':{'type':Sequelize[_0x5c4f('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x5c4f('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5c4f('0x2')]}};
\ No newline at end of file
+var _0x1a61=['DATE','STRING','sequelize','INTEGER'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x1a61,0x1e6));var _0x11a6=function(_0x138682,_0x407051){_0x138682=_0x138682-0x0;var _0x34f907=_0x1a61[_0x138682];return _0x34f907;};'use strict';var Sequelize=require(_0x11a6('0x0'));module['exports']={'state':{'type':Sequelize[_0x11a6('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x11a6('0x2')]},'uniqueid':{'type':Sequelize[_0x11a6('0x3')]},'starttime':{'type':Sequelize[_0x11a6('0x2')]},'responsetime':{'type':Sequelize[_0x11a6('0x2')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x11a6('0x3')]},'membername':{'type':Sequelize[_0x11a6('0x3')]}};
\ No newline at end of file
index c408ffc..6ffe972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f35=['path','rimraf','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','util','../../config/logger','api','bluebird','request-promise'];(function(_0x16f667,_0x46bc24){var _0x38cadb=function(_0x31a064){while(--_0x31a064){_0x16f667['push'](_0x16f667['shift']());}};_0x38cadb(++_0x46bc24);}(_0x3f35,0xf7));var _0x53f3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x3f35[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0x53f3('0x0'));var logger=require(_0x53f3('0x1'))(_0x53f3('0x2'));var moment=require('moment');var BPromise=require(_0x53f3('0x3'));var rp=require(_0x53f3('0x4'));var fs=require('fs');var path=require(_0x53f3('0x5'));var rimraf=require(_0x53f3('0x6'));var config=require('../../config/environment');var attributes=require(_0x53f3('0x7'));module[_0x53f3('0x8')]=function(_0x31db2d,_0x7aedec){return _0x31db2d[_0x53f3('0x9')](_0x53f3('0xa'),attributes,{'tableName':_0x53f3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf821=['request-promise','path','rimraf','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x14ddc6,_0x497e42){var _0x189bd4=function(_0x75cab0){while(--_0x75cab0){_0x14ddc6['push'](_0x14ddc6['shift']());}};_0x189bd4(++_0x497e42);}(_0xf821,0x120));var _0x1f82=function(_0x5b2cff,_0x43db7a){_0x5b2cff=_0x5b2cff-0x0;var _0x1a1288=_0xf821[_0x5b2cff];return _0x1a1288;};'use strict';var _=require(_0x1f82('0x0'));var util=require(_0x1f82('0x1'));var logger=require(_0x1f82('0x2'))(_0x1f82('0x3'));var moment=require(_0x1f82('0x4'));var BPromise=require(_0x1f82('0x5'));var rp=require(_0x1f82('0x6'));var fs=require('fs');var path=require(_0x1f82('0x7'));var rimraf=require(_0x1f82('0x8'));var config=require('../../config/environment');var attributes=require(_0x1f82('0x9'));module[_0x1f82('0xa')]=function(_0x2ca9c0,_0x2f0b87){return _0x2ca9c0[_0x1f82('0xb')](_0x1f82('0xc'),attributes,{'tableName':_0x1f82('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59a32e2..244791e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a1=['result','catch','CreateReportAgentPreview','ReportAgentPreview','create','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x44c200,_0x2cb0ce){var _0x48d35f=function(_0x5b7aa4){while(--_0x5b7aa4){_0x44c200['push'](_0x44c200['shift']());}};_0x48d35f(++_0x2cb0ce);}(_0xf5a1,0x129));var _0x1f5a=function(_0x25c6d,_0x452c8f){_0x25c6d=_0x25c6d-0x0;var _0xe54ba0=_0xf5a1[_0x25c6d];return _0xe54ba0;};'use strict';var _=require(_0x1f5a('0x0'));var util=require(_0x1f5a('0x1'));var moment=require(_0x1f5a('0x2'));var BPromise=require(_0x1f5a('0x3'));var rs=require(_0x1f5a('0x4'));var fs=require('fs');var Redis=require(_0x1f5a('0x5'));var db=require(_0x1f5a('0x6'))['db'];var utils=require(_0x1f5a('0x7'));var logger=require('../../config/logger')(_0x1f5a('0x8'));var config=require(_0x1f5a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1f5a('0xa')][_0x1f5a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26efb2,_0x4b5592,_0x2ef4ea){return new BPromise(function(_0x25a59c,_0x1315df){return client[_0x1f5a('0xc')](_0x26efb2,_0x2ef4ea)['then'](function(_0x48c4d1){logger['info'](_0x1f5a('0xd'),_0x4b5592,'request\x20sent');logger[_0x1f5a('0xe')](_0x1f5a('0xf'),_0x4b5592,_0x1f5a('0x10'),JSON[_0x1f5a('0x11')](_0x48c4d1));if(_0x48c4d1[_0x1f5a('0x12')]){if(_0x48c4d1['error'][_0x1f5a('0x13')]===0x1f4){logger[_0x1f5a('0x12')](_0x1f5a('0xd'),_0x4b5592,_0x48c4d1[_0x1f5a('0x12')][_0x1f5a('0x14')]);return _0x1315df(_0x48c4d1[_0x1f5a('0x12')]['message']);}logger[_0x1f5a('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x4b5592,_0x48c4d1['error'][_0x1f5a('0x14')]);return _0x25a59c(_0x48c4d1[_0x1f5a('0x12')][_0x1f5a('0x14')]);}else{logger[_0x1f5a('0x15')](_0x1f5a('0xd'),_0x4b5592,_0x1f5a('0x10'));_0x25a59c(_0x48c4d1[_0x1f5a('0x16')][_0x1f5a('0x14')]);}})[_0x1f5a('0x17')](function(_0x80615e){logger['error'](_0x1f5a('0xd'),_0x4b5592,_0x80615e);_0x1315df(_0x80615e);});});}exports[_0x1f5a('0x18')]=function(_0x1156fd){var _0x2b0c48=this;return new Promise(function(_0x5d8820,_0x2efad0){return db[_0x1f5a('0x19')][_0x1f5a('0x1a')](_0x1156fd['body'],{'raw':_0x1156fd['options']?_0x1156fd['options'][_0x1f5a('0x1b')]===undefined?!![]:![]:!![]})[_0x1f5a('0x1c')](function(_0x4eeefb){logger[_0x1f5a('0x15')](_0x1f5a('0x18'),_0x1156fd);logger[_0x1f5a('0xe')](_0x1f5a('0x18'),_0x1156fd,JSON[_0x1f5a('0x11')](_0x4eeefb));_0x5d8820(_0x4eeefb);})[_0x1f5a('0x17')](function(_0x41a60c){logger[_0x1f5a('0x12')](_0x1f5a('0x18'),_0x41a60c[_0x1f5a('0x14')],_0x1156fd);_0x2efad0(_0x2b0c48['error'](0x1f4,_0x41a60c[_0x1f5a('0x14')]));});});};
\ No newline at end of file
+var _0xd6be=['info','catch','ReportAgentPreview','body','options','raw','then','CreateReportAgentPreview','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','ReportAgentPreview,\x20%s,\x20%s','message'];(function(_0x4953bc,_0x54fd7a){var _0x4070dc=function(_0x174078){while(--_0x174078){_0x4953bc['push'](_0x4953bc['shift']());}};_0x4070dc(++_0x54fd7a);}(_0xd6be,0x182));var _0xed6b=function(_0x13f05d,_0x215884){_0x13f05d=_0x13f05d-0x0;var _0x2c63be=_0xd6be[_0x13f05d];return _0x2c63be;};'use strict';var _=require(_0xed6b('0x0'));var util=require(_0xed6b('0x1'));var moment=require(_0xed6b('0x2'));var BPromise=require('bluebird');var rs=require(_0xed6b('0x3'));var fs=require('fs');var Redis=require(_0xed6b('0x4'));var db=require(_0xed6b('0x5'))['db'];var utils=require(_0xed6b('0x6'));var logger=require(_0xed6b('0x7'))(_0xed6b('0x8'));var config=require(_0xed6b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xed6b('0xa')][_0xed6b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e31d8,_0x3efa37,_0x224b38){return new BPromise(function(_0x3c5051,_0x2b2b8b){return client[_0xed6b('0xc')](_0x1e31d8,_0x224b38)['then'](function(_0x208045){logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x3efa37,_0xed6b('0xd'));logger[_0xed6b('0xe')](_0xed6b('0xf'),_0x3efa37,_0xed6b('0xd'),JSON['stringify'](_0x208045));if(_0x208045[_0xed6b('0x10')]){if(_0x208045[_0xed6b('0x10')][_0xed6b('0x11')]===0x1f4){logger[_0xed6b('0x10')](_0xed6b('0x12'),_0x3efa37,_0x208045[_0xed6b('0x10')][_0xed6b('0x13')]);return _0x2b2b8b(_0x208045['error'][_0xed6b('0x13')]);}logger[_0xed6b('0x10')](_0xed6b('0x12'),_0x3efa37,_0x208045['error'][_0xed6b('0x13')]);return _0x3c5051(_0x208045[_0xed6b('0x10')][_0xed6b('0x13')]);}else{logger[_0xed6b('0x14')](_0xed6b('0x12'),_0x3efa37,_0xed6b('0xd'));_0x3c5051(_0x208045['result'][_0xed6b('0x13')]);}})[_0xed6b('0x15')](function(_0x4b9765){logger[_0xed6b('0x10')](_0xed6b('0x12'),_0x3efa37,_0x4b9765);_0x2b2b8b(_0x4b9765);});});}exports['CreateReportAgentPreview']=function(_0x1bf51f){var _0x7c640e=this;return new Promise(function(_0x40a856,_0x684abf){return db[_0xed6b('0x16')]['create'](_0x1bf51f[_0xed6b('0x17')],{'raw':_0x1bf51f[_0xed6b('0x18')]?_0x1bf51f[_0xed6b('0x18')][_0xed6b('0x19')]===undefined?!![]:![]:!![]})[_0xed6b('0x1a')](function(_0x4b48d3){logger['info'](_0xed6b('0x1b'),_0x1bf51f);logger['debug'](_0xed6b('0x1b'),_0x1bf51f,JSON[_0xed6b('0x1c')](_0x4b48d3));_0x40a856(_0x4b48d3);})['catch'](function(_0x8be48d){logger[_0xed6b('0x10')](_0xed6b('0x1b'),_0x8be48d[_0xed6b('0x13')],_0x1bf51f);_0x684abf(_0x7c640e['error'](0x1f4,_0x8be48d[_0xed6b('0x13')]));});});};
\ No newline at end of file
index d52ffc2..b4ba918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe4a=['util','path','express','Router','/voice/channels','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','outbound','/outbound/channels','outboundChannels','/agents','agents','put','/agents/:id/capacity','agentCapacity','/trunks','trunks','/campaigns','campaigns','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer'];(function(_0x2ac64f,_0x5ef0fa){var _0x30c30f=function(_0x58dd65){while(--_0x58dd65){_0x2ac64f['push'](_0x2ac64f['shift']());}};_0x30c30f(++_0x5ef0fa);}(_0xbe4a,0xf5));var _0xabe4=function(_0xaf2427,_0x504859){_0xaf2427=_0xaf2427-0x0;var _0x67addb=_0xbe4a[_0xaf2427];return _0x67addb;};'use strict';var multer=require(_0xabe4('0x0'));var util=require(_0xabe4('0x1'));var path=require(_0xabe4('0x2'));var express=require(_0xabe4('0x3'));var router=express[_0xabe4('0x4')]();var auth=require('../../components/auth/service');var controller=require('./rpc.controller');router['get'](_0xabe4('0x5'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x7')]);router[_0xabe4('0x8')](_0xabe4('0x9'),auth[_0xabe4('0x6')](),controller[_0xabe4('0xa')]);router[_0xabe4('0x8')](_0xabe4('0xb'),auth[_0xabe4('0x6')](),controller['voiceChannelStopMixMonitor']);router[_0xabe4('0x8')](_0xabe4('0xc'),auth[_0xabe4('0x6')](),controller[_0xabe4('0xd')]);router[_0xabe4('0x8')](_0xabe4('0xe'),auth[_0xabe4('0x6')](),controller[_0xabe4('0xf')]);router[_0xabe4('0x8')](_0xabe4('0x10'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x11')]);router[_0xabe4('0x8')](_0xabe4('0x12'),auth[_0xabe4('0x6')](),controller['mailAccounts']);router[_0xabe4('0x8')](_0xabe4('0x13'),auth[_0xabe4('0x6')](),controller['openchannelQueues']);router[_0xabe4('0x8')](_0xabe4('0x14'),auth[_0xabe4('0x6')](),controller['smsQueues']);router[_0xabe4('0x8')](_0xabe4('0x15'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x16')]);router['get'](_0xabe4('0x17'),auth['isAuthenticated'](),controller[_0xabe4('0x18')]);router[_0xabe4('0x8')]('/voice/queues/preview/:id',auth[_0xabe4('0x6')](),controller[_0xabe4('0x19')]);router[_0xabe4('0x8')](_0xabe4('0x1a'),auth[_0xabe4('0x6')](),controller['voiceQueuesChannels']);router[_0xabe4('0x8')](_0xabe4('0x1b'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x1c')]);router['get'](_0xabe4('0x1d'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x1e')]);router[_0xabe4('0x8')](_0xabe4('0x1f'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x20')]);router[_0xabe4('0x8')](_0xabe4('0x21'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x22')]);router['put'](_0xabe4('0x21'),auth[_0xabe4('0x6')](),controller['updateVoiceQueue']);router['get']('/outbound',auth['isAuthenticated'](),controller[_0xabe4('0x23')]);router[_0xabe4('0x8')](_0xabe4('0x24'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x25')]);router[_0xabe4('0x8')](_0xabe4('0x26'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x27')]);router[_0xabe4('0x28')](_0xabe4('0x29'),auth['isAuthenticated'](),controller[_0xabe4('0x2a')]);router[_0xabe4('0x8')]('/telephones',auth['isAuthenticated'](),controller['telephones']);router[_0xabe4('0x8')](_0xabe4('0x2b'),auth['isAuthenticated'](),controller[_0xabe4('0x2c')]);router[_0xabe4('0x8')](_0xabe4('0x2d'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x2e')]);router[_0xabe4('0x8')]('/fax/accounts',auth['isAuthenticated'](),controller['faxAccounts']);router[_0xabe4('0x8')](_0xabe4('0x2f'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x30')]);router[_0xabe4('0x8')](_0xabe4('0x31'),auth[_0xabe4('0x6')](),controller['mailQueuesWaitingInteractions']);router[_0xabe4('0x8')](_0xabe4('0x32'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x33')]);router['get'](_0xabe4('0x34'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x35')]);router[_0xabe4('0x8')]('/sms/queues/waitinginteractions',auth[_0xabe4('0x6')](),controller[_0xabe4('0x36')]);router[_0xabe4('0x8')](_0xabe4('0x37'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x38')]);router[_0xabe4('0x8')](_0xabe4('0x39'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x3a')]);router[_0xabe4('0x3b')]('/mail/queues/:id/notify',auth['isAuthenticated'](),controller[_0xabe4('0x3c')](_0xabe4('0x3d')));router[_0xabe4('0x8')](_0xabe4('0x3e'),auth['isAuthenticated'](),controller[_0xabe4('0x3f')]);router[_0xabe4('0x3b')](_0xabe4('0x40'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x3c')]('chat'));router[_0xabe4('0x8')](_0xabe4('0x41'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x42')]);router[_0xabe4('0x3b')](_0xabe4('0x43'),auth[_0xabe4('0x6')](),controller['queueNotify'](_0xabe4('0x44')));router['get']('/fax/queues/:id',auth[_0xabe4('0x6')](),controller[_0xabe4('0x45')]);router[_0xabe4('0x3b')](_0xabe4('0x46'),auth['isAuthenticated'](),controller['queueNotify'](_0xabe4('0x47')));router[_0xabe4('0x8')](_0xabe4('0x48'),auth['isAuthenticated'](),controller[_0xabe4('0x49')]);router[_0xabe4('0x3b')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0xabe4('0x3c')](_0xabe4('0x4a')));router['post']('/whatsapp/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0xabe4('0x4b')));router['get'](_0xabe4('0x4c'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x4d')]);router[_0xabe4('0x8')](_0xabe4('0x4e'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x4f')]);router[_0xabe4('0x3b')](_0xabe4('0x50'),auth[_0xabe4('0x6')](),controller[_0xabe4('0x51')]);module['exports']=router;
\ No newline at end of file
+var _0x3f2f=['/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','queueNotify','/chat/queues/:id','showChatQueues','post','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/outbound/channels','/agents','/agents/:id/capacity','/telephones','telephones','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions'];(function(_0x4ca68f,_0xe534c7){var _0xac84b=function(_0x52d3c5){while(--_0x52d3c5){_0x4ca68f['push'](_0x4ca68f['shift']());}};_0xac84b(++_0xe534c7);}(_0x3f2f,0x177));var _0xf3f2=function(_0x4d533d,_0x138622){_0x4d533d=_0x4d533d-0x0;var _0xe4fc0=_0x3f2f[_0x4d533d];return _0xe4fc0;};'use strict';var multer=require(_0xf3f2('0x0'));var util=require(_0xf3f2('0x1'));var path=require(_0xf3f2('0x2'));var express=require(_0xf3f2('0x3'));var router=express[_0xf3f2('0x4')]();var auth=require(_0xf3f2('0x5'));var controller=require(_0xf3f2('0x6'));router[_0xf3f2('0x7')](_0xf3f2('0x8'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0xa')]);router['get'](_0xf3f2('0xb'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0xc')]);router[_0xf3f2('0x7')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0xf3f2('0xd')]);router[_0xf3f2('0x7')](_0xf3f2('0xe'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0xf')]);router[_0xf3f2('0x7')]('/chat/queues',auth[_0xf3f2('0x9')](),controller['chatQueues']);router[_0xf3f2('0x7')](_0xf3f2('0x10'),auth['isAuthenticated'](),controller[_0xf3f2('0x11')]);router[_0xf3f2('0x7')](_0xf3f2('0x12'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x13')]);router[_0xf3f2('0x7')](_0xf3f2('0x14'),auth['isAuthenticated'](),controller[_0xf3f2('0x15')]);router[_0xf3f2('0x7')](_0xf3f2('0x16'),auth[_0xf3f2('0x9')](),controller['smsQueues']);router['get'](_0xf3f2('0x17'),auth[_0xf3f2('0x9')](),controller['whatsappQueues']);router[_0xf3f2('0x7')](_0xf3f2('0x18'),auth['isAuthenticated'](),controller['faxQueues']);router[_0xf3f2('0x7')](_0xf3f2('0x19'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x1a')]);router['get'](_0xf3f2('0x1b'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x1c')]);router[_0xf3f2('0x7')](_0xf3f2('0x1d'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x1e')]);router['get'](_0xf3f2('0x1f'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x20')]);router['get'](_0xf3f2('0x21'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x22')]);router[_0xf3f2('0x7')](_0xf3f2('0x23'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x24')]);router[_0xf3f2('0x25')]('/voice/queues/:id',auth['isAuthenticated'](),controller[_0xf3f2('0x26')]);router[_0xf3f2('0x7')]('/outbound',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x27')]);router[_0xf3f2('0x7')](_0xf3f2('0x28'),auth['isAuthenticated'](),controller['outboundChannels']);router[_0xf3f2('0x7')](_0xf3f2('0x29'),auth[_0xf3f2('0x9')](),controller['agents']);router[_0xf3f2('0x25')](_0xf3f2('0x2a'),auth[_0xf3f2('0x9')](),controller['agentCapacity']);router['get'](_0xf3f2('0x2b'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x2c')]);router[_0xf3f2('0x7')]('/trunks',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x2d')]);router[_0xf3f2('0x7')]('/campaigns',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x2e')]);router[_0xf3f2('0x7')](_0xf3f2('0x2f'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x30')]);router[_0xf3f2('0x7')](_0xf3f2('0x31'),auth[_0xf3f2('0x9')](),controller['chatQueuesWaitingInteractions']);router[_0xf3f2('0x7')](_0xf3f2('0x32'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x33')]);router[_0xf3f2('0x7')]('/openchannel/queues/waitinginteractions',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x34')]);router['get']('/openchannel/queues/:id/waitinginteractions',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x35')]);router[_0xf3f2('0x7')]('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xf3f2('0x36')]);router['get'](_0xf3f2('0x37'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x38')]);router[_0xf3f2('0x7')](_0xf3f2('0x39'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x3a')]);router['post'](_0xf3f2('0x3b'),auth['isAuthenticated'](),controller['queueNotify'](_0xf3f2('0x3c')));router[_0xf3f2('0x7')](_0xf3f2('0x3d'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x3e')]);router['post'](_0xf3f2('0x3f'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x40')]('chat'));router[_0xf3f2('0x7')](_0xf3f2('0x41'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x42')]);router[_0xf3f2('0x43')](_0xf3f2('0x44'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x40')](_0xf3f2('0x45')));router['get'](_0xf3f2('0x46'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x47')]);router[_0xf3f2('0x43')](_0xf3f2('0x48'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x40')](_0xf3f2('0x49')));router[_0xf3f2('0x7')](_0xf3f2('0x4a'),auth['isAuthenticated'](),controller[_0xf3f2('0x4b')]);router['post'](_0xf3f2('0x4c'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x40')](_0xf3f2('0x4d')));router['post']('/whatsapp/queues/:id/notify',auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x40')](_0xf3f2('0x4e')));router[_0xf3f2('0x7')](_0xf3f2('0x4f'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x50')]);router[_0xf3f2('0x7')](_0xf3f2('0x51'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x52')]);router[_0xf3f2('0x43')](_0xf3f2('0x53'),auth[_0xf3f2('0x9')](),controller[_0xf3f2('0x54')]);module[_0xf3f2('0x55')]=router;
\ No newline at end of file
index 1623fb7..be6b00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['capacity','Telephones','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','OpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','showFaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','QueueId','create','Start','*,*,*,*','agentNotify','channel','capitalize','User','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','moment','lodash','util','../../config/logger','api','jayson/promise','client','http','error','code','message','status','json','sendStatus','stack','name','send','isNil','find','rows','voiceChannels','VoiceChannels','then','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','interface','agent','internal'];(function(_0x516f4f,_0x29f1c6){var _0x10851d=function(_0x2e6dc8){while(--_0x2e6dc8){_0x516f4f['push'](_0x516f4f['shift']());}};_0x10851d(++_0x29f1c6);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x4042f6,_0x59987b){_0x4042f6=_0x4042f6-0x0;var _0x5285ca=_0xd6d6[_0x4042f6];return _0x5285ca;};'use strict';var BPromise=require(_0x6d6d('0x0'));var moment=require(_0x6d6d('0x1'));var _=require(_0x6d6d('0x2'));var util=require(_0x6d6d('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x6d6d('0x4'))(_0x6d6d('0x5'));var jayson=require(_0x6d6d('0x6'));var amiClient=jayson[_0x6d6d('0x7')][_0x6d6d('0x8')]({'port':0x232a});var mailClient=jayson[_0x6d6d('0x7')][_0x6d6d('0x8')]({'port':0x232b});var routingClient=jayson['client'][_0x6d6d('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1bf731,_0x44f83d,_0x18f824){return new BPromise(function(_0xd49f57,_0x408f88){var _0x3e69a4=_0x18f824?_0x18f824:amiClient;return _0x3e69a4['request'](_0x1bf731,_0x44f83d)['then'](function(_0x404c88){if(_0x404c88[_0x6d6d('0x9')]){if(_0x404c88[_0x6d6d('0x9')][_0x6d6d('0xa')]===0x1f4){return _0x408f88(_0x404c88[_0x6d6d('0x9')]['message']);}return _0xd49f57(_0x404c88[_0x6d6d('0x9')][_0x6d6d('0xb')]);}else{_0xd49f57(_0x404c88['result']);}})['catch'](function(_0x176618){_0x408f88(_0x176618);});});}function respondWithResult(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xc8;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0xc')](_0xe61c36)[_0x6d6d('0xd')](_0x3f8542);}return _0x32146d[_0x6d6d('0xe')](0x194);};}function handleError(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0x1f4;return function(_0xd09ea7){logger[_0x6d6d('0x9')](_0xd09ea7[_0x6d6d('0xf')]);if(_0xd09ea7[_0x6d6d('0x10')]){delete _0xd09ea7[_0x6d6d('0x10')];}_0x2cb2dd['status'](_0x5f4154)[_0x6d6d('0x11')](_0xd09ea7);};}function findById(_0x587338){return function(_0x27830d){if(!_[_0x6d6d('0x12')](_0x587338)&&!_[_0x6d6d('0x12')](_0x27830d)&&!_['isNil'](_0x27830d['rows'])){return _[_0x6d6d('0x13')](_0x27830d[_0x6d6d('0x14')],function(_0x2b59d4){return _0x2b59d4['id']==_0x587338;});}return null;};}exports[_0x6d6d('0x15')]=function(_0x51fff6,_0x554392){return respondWithRpcPromise(_0x6d6d('0x16'),_0x51fff6['query'])[_0x6d6d('0x17')](respondWithResult(_0x554392,null))[_0x6d6d('0x18')](handleError(_0x554392,null));};exports[_0x6d6d('0x19')]=function(_0x450352,_0x40d35b){return respondWithRpcPromise(_0x6d6d('0x1a'),_[_0x6d6d('0x1b')](_0x450352[_0x6d6d('0x1c')],_0x450352[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x40d35b,null))[_0x6d6d('0x18')](handleError(_0x40d35b,null));};exports[_0x6d6d('0x1e')]=function(_0x466a29,_0x21b95d){return respondWithRpcPromise(_0x6d6d('0x1f'),_[_0x6d6d('0x1b')](_0x466a29[_0x6d6d('0x1c')],_0x466a29['params']))[_0x6d6d('0x17')](respondWithResult(_0x21b95d,null))[_0x6d6d('0x18')](handleError(_0x21b95d,null));};exports[_0x6d6d('0x20')]=function(_0x97ec9e,_0xf0df7f){return respondWithRpcPromise(_0x6d6d('0x21'),_0x97ec9e['query'])[_0x6d6d('0x17')](respondWithResult(_0xf0df7f,null))[_0x6d6d('0x18')](handleError(_0xf0df7f,null));};exports[_0x6d6d('0x22')]=function(_0x126ac8,_0x25c121){return respondWithRpcPromise(_0x6d6d('0x21'),_0x126ac8[_0x6d6d('0x1c')])['then'](findById(_0x126ac8[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x25c121,null))['catch'](handleError(_0x25c121,null));};exports['updateVoiceQueue']=function(_0x3edcce,_0x5273cd){return respondWithRpcPromise(_0x6d6d('0x23'),_['merge'](_0x3edcce[_0x6d6d('0x24')],_0x3edcce[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x5273cd,null))[_0x6d6d('0x18')](handleError(_0x5273cd,null));};exports[_0x6d6d('0x25')]=function(_0x428c17,_0xdda3f2){return respondWithRpcPromise(_0x6d6d('0x26'),_[_0x6d6d('0x1b')](_0x428c17[_0x6d6d('0x1c')],_0x428c17['params']))[_0x6d6d('0x17')](respondWithResult(_0xdda3f2,null))['catch'](handleError(_0xdda3f2,null));};exports[_0x6d6d('0x27')]=function(_0x1ea9b2,_0xf527da){return respondWithRpcPromise(_0x6d6d('0x28'),_0x1ea9b2['query'])[_0x6d6d('0x17')](respondWithResult(_0xf527da,null))['catch'](handleError(_0xf527da,null));};exports[_0x6d6d('0x29')]=function(_0x219fd4,_0x5be8da){return respondWithRpcPromise(_0x6d6d('0x2a'),_[_0x6d6d('0x1b')](_0x219fd4[_0x6d6d('0x1c')],_0x219fd4[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x5be8da,null))[_0x6d6d('0x18')](handleError(_0x5be8da,null));};exports[_0x6d6d('0x2b')]=function(_0x2d524d,_0x243555){return respondWithRpcPromise(_0x6d6d('0x2c'),_[_0x6d6d('0x1b')](_0x2d524d[_0x6d6d('0x1c')],_0x2d524d[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x243555,null))['catch'](handleError(_0x243555,null));};exports[_0x6d6d('0x2d')]=function(_0xf98bfa,_0x3e2415){return respondWithRpcPromise(_0x6d6d('0x2e'),_['merge'](_0xf98bfa['query'],_0xf98bfa[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x3e2415,null))[_0x6d6d('0x18')](handleError(_0x3e2415,null));};exports['outbound']=function(_0x2a3f67,_0x2607c1){return respondWithRpcPromise(_0x6d6d('0x2f'),_0x2a3f67[_0x6d6d('0x1c')])['then'](respondWithResult(_0x2607c1,null))['catch'](handleError(_0x2607c1,null));};exports['outboundChannels']=function(_0x62620d,_0x4196f0){return respondWithRpcPromise(_0x6d6d('0x30'),_0x62620d[_0x6d6d('0x1c')])['then'](respondWithResult(_0x4196f0,null))[_0x6d6d('0x18')](handleError(_0x4196f0,null));};exports[_0x6d6d('0x31')]=function(_0x344f6f,_0x3c6d23){var _0x3d632c;return respondWithRpcPromise(_0x6d6d('0x32'),_0x344f6f['query'])[_0x6d6d('0x17')](function(_0x3c7292){_0x3d632c=_0x3c7292;return respondWithRpcPromise(_0x6d6d('0x32'),_0x344f6f[_0x6d6d('0x1c')],routingClient);})[_0x6d6d('0x17')](function(_0x3e27b7){return _[_0x6d6d('0x1b')]({},_0x3e27b7,_0x3d632c);})['then'](respondWithResult(_0x3c6d23,null))[_0x6d6d('0x18')](handleError(_0x3c6d23,null));};exports[_0x6d6d('0x33')]=function(_0x16e177,_0x2107e0){if(_0x16e177[_0x6d6d('0x24')]&&_0x16e177['body'][_0x6d6d('0x34')]&&_0x16e177[_0x6d6d('0x35')]&&_0x16e177['user'][_0x6d6d('0x10')]){for(var _0x50dc17 in _0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')]){if(_0x16e177['body'][_0x6d6d('0x34')][_0x6d6d('0x36')](_0x50dc17)){db[_0x6d6d('0x37')][_0x6d6d('0x38')]({'where':{'channel':_0x50dc17,'membername':_0x16e177[_0x6d6d('0x35')]['name'],'type':'INTERACTION','exitAt':null,'uniqueid':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17]&&_0x16e177['body'][_0x6d6d('0x34')][_0x50dc17][_0x6d6d('0x39')]?{'$notIn':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17]}:{'$ne':null}}})[_0x6d6d('0x17')](function(_0x4cff80){var _0x1a2d4c=moment()[_0x6d6d('0x3a')](_0x6d6d('0x3b'));for(var _0x4606eb=0x0,_0x75f298=_0x4cff80[_0x6d6d('0x39')];_0x4606eb<_0x75f298;_0x4606eb+=0x1){_0x4cff80[_0x4606eb][_0x6d6d('0x3c')]({'exitAt':_0x1a2d4c});}});for(var _0x5c0495=0x0;_0x5c0495<_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')][_0x50dc17][_0x6d6d('0x39')];_0x5c0495+=0x1){db[_0x6d6d('0x37')][_0x6d6d('0x3d')]({'where':{'channel':_0x50dc17,'membername':_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x10')],'type':_0x6d6d('0x3e'),'uniqueid':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17][_0x5c0495],'exitAt':null},'defaults':{'channel':_0x50dc17,'membername':_0x16e177['user'][_0x6d6d('0x10')],'interface':_[_0x6d6d('0x12')](_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x3f')])?util[_0x6d6d('0x3a')]('SIP/%s',_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x10')]):_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x3f')],'type':_0x6d6d('0x3e'),'enterAt':moment()[_0x6d6d('0x3a')](_0x6d6d('0x3b')),'role':_0x6d6d('0x40'),'internal':_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x41')],'uniqueid':_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')][_0x50dc17][_0x5c0495]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x16e177[_0x6d6d('0x1d')]['id'],'capacity':_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x42')]},routingClient)[_0x6d6d('0x17')](respondWithResult(_0x2107e0,null))[_0x6d6d('0x18')](handleError(_0x2107e0,null));};exports['telephones']=function(_0x38c307,_0x36bc5a){return respondWithRpcPromise(_0x6d6d('0x43'),_0x38c307['query'])['then'](respondWithResult(_0x36bc5a,null))[_0x6d6d('0x18')](handleError(_0x36bc5a,null));};exports['trunks']=function(_0x3ea57e,_0x995fe2){return respondWithRpcPromise(_0x6d6d('0x44'),_0x3ea57e[_0x6d6d('0x1c')])[_0x6d6d('0x17')](respondWithResult(_0x995fe2,null))[_0x6d6d('0x18')](handleError(_0x995fe2,null));};exports[_0x6d6d('0x45')]=function(_0x26c23a,_0x1a8f33){return respondWithRpcPromise(_0x6d6d('0x46'),_0x26c23a['query'])[_0x6d6d('0x17')](respondWithResult(_0x1a8f33,null))[_0x6d6d('0x18')](handleError(_0x1a8f33,null));};exports[_0x6d6d('0x47')]=function(_0x8000b6,_0x1f98d4){return respondWithRpcPromise(_0x6d6d('0x48'),_0x8000b6[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x1f98d4,null))['catch'](handleError(_0x1f98d4,null));};exports[_0x6d6d('0x49')]=function(_0x122865,_0x5cc644){return respondWithRpcPromise(_0x6d6d('0x48'),_0x122865[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x122865[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x5cc644,null))[_0x6d6d('0x18')](handleError(_0x5cc644,null));};exports[_0x6d6d('0x4a')]=function(_0x1ef7fb,_0x2abd8c){return respondWithRpcPromise(_0x6d6d('0x4b'),_0x1ef7fb[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x2abd8c,null))[_0x6d6d('0x18')](handleError(_0x2abd8c,null));};exports[_0x6d6d('0x4c')]=function(_0x3065ea,_0x50d8dd){return respondWithRpcPromise(_0x6d6d('0x4b'),_0x3065ea[_0x6d6d('0x1c')],routingClient)['then'](findById(_0x3065ea[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x50d8dd,null))[_0x6d6d('0x18')](handleError(_0x50d8dd,null));};exports[_0x6d6d('0x4d')]=function(_0x2d61cc,_0xd0a573){return respondWithRpcPromise(_0x6d6d('0x4e'),_0x2d61cc[_0x6d6d('0x1c')],mailClient)[_0x6d6d('0x17')](respondWithResult(_0xd0a573,null))['catch'](handleError(_0xd0a573,null));};exports['openchannelQueues']=function(_0x22c3a1,_0x325fe2){return respondWithRpcPromise(_0x6d6d('0x4f'),_0x22c3a1['query'],routingClient)['then'](respondWithResult(_0x325fe2,null))[_0x6d6d('0x18')](handleError(_0x325fe2,null));};exports['showOpenchannelQueues']=function(_0x30badc,_0x5b6f58){return respondWithRpcPromise(_0x6d6d('0x4f'),_0x30badc[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x30badc[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x5b6f58,null))[_0x6d6d('0x18')](handleError(_0x5b6f58,null));};exports['smsQueues']=function(_0x41e576,_0x5eb78f){return respondWithRpcPromise(_0x6d6d('0x50'),_0x41e576['query'],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x5eb78f,null))[_0x6d6d('0x18')](handleError(_0x5eb78f,null));};exports[_0x6d6d('0x51')]=function(_0xa71db1,_0x29b68b){return respondWithRpcPromise(_0x6d6d('0x50'),_0xa71db1[_0x6d6d('0x1c')],routingClient)['then'](findById(_0xa71db1['params']['id']))[_0x6d6d('0x17')](respondWithResult(_0x29b68b,null))['catch'](handleError(_0x29b68b,null));};exports[_0x6d6d('0x52')]=function(_0x53b77a,_0xe19d23){return respondWithRpcPromise(_0x6d6d('0x53'),_0x53b77a[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0xe19d23,null))[_0x6d6d('0x18')](handleError(_0xe19d23,null));};exports[_0x6d6d('0x54')]=function(_0x5dd3b0,_0x3cedc0){return respondWithRpcPromise(_0x6d6d('0x53'),_0x5dd3b0[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x5dd3b0[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x3cedc0,null))[_0x6d6d('0x18')](handleError(_0x3cedc0,null));};exports['faxQueues']=function(_0x3fa820,_0x4ec43e){return respondWithRpcPromise(_0x6d6d('0x55'),_0x3fa820[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x4ec43e,null))[_0x6d6d('0x18')](handleError(_0x4ec43e,null));};exports[_0x6d6d('0x56')]=function(_0x1d1d1d,_0x56feda){return respondWithRpcPromise(_0x6d6d('0x55'),_0x1d1d1d[_0x6d6d('0x1c')],routingClient)['then'](findById(_0x1d1d1d['params']['id']))[_0x6d6d('0x17')](respondWithResult(_0x56feda,null))['catch'](handleError(_0x56feda,null));};exports['faxAccounts']=function(_0x5b6ca7,_0x1e3b17){return respondWithRpcPromise(_0x6d6d('0x57'),_0x5b6ca7[_0x6d6d('0x1c')])[_0x6d6d('0x17')](respondWithResult(_0x1e3b17,null))[_0x6d6d('0x18')](handleError(_0x1e3b17,null));};exports[_0x6d6d('0x58')]=function(_0x4d4083,_0x48472d){return respondWithRpcPromise(_0x6d6d('0x59'),_0x4d4083['query'],routingClient)['then'](respondWithResult(_0x48472d,null))['catch'](handleError(_0x48472d,null));};exports[_0x6d6d('0x5a')]=function(_0x5cd494,_0x45a374){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x5cd494[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x45a374,null))['catch'](handleError(_0x45a374,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x167d0c,_0x202bf6){return respondWithRpcPromise(_0x6d6d('0x5b'),_0x167d0c[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x202bf6,null))[_0x6d6d('0x18')](handleError(_0x202bf6,null));};exports[_0x6d6d('0x5c')]=function(_0x1fb21d,_0x2b53eb){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x1fb21d[_0x6d6d('0x1c')],routingClient)['then'](function(_0x4b6594){if(_0x1fb21d['query'][_0x6d6d('0x5d')]!==undefined){var _0x5bcfbd=_(_0x4b6594[_0x6d6d('0x14')])[_0x6d6d('0x5e')]([_0x1fb21d[_0x6d6d('0x1c')]['type'],_0x1fb21d['params']['id']])[_0x6d6d('0x5f')](_0x6d6d('0x60'))['uniq']()['value']();return _0x4b6594[_0x6d6d('0x14')][_0x6d6d('0x5e')](function(_0x14feba){return _0x5bcfbd[_0x6d6d('0x61')](_0x14feba[_0x6d6d('0x60')])>-0x1;});}else{return _0x4b6594[_0x6d6d('0x14')][_0x6d6d('0x5e')](function(_0x52f758){return _0x52f758['queue_id']===parseInt(_0x1fb21d['params']['id']);});}})['then'](respondWithResult(_0x2b53eb,null))['catch'](handleError(_0x2b53eb,null));};exports['smsQueuesWaitingInteractions']=function(_0x87dd34,_0x21e5a8){return respondWithRpcPromise(_0x6d6d('0x62'),_0x87dd34[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x21e5a8,null))['catch'](handleError(_0x21e5a8,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x39b34e,_0xfbad7a){return respondWithRpcPromise(_0x6d6d('0x63'),_0x39b34e[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0xfbad7a,null))['catch'](handleError(_0xfbad7a,null));};exports[_0x6d6d('0x64')]=function(_0x1e1c4e,_0x478ed4){return respondWithRpcPromise(_0x6d6d('0x65'),_0x1e1c4e[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x478ed4,null))[_0x6d6d('0x18')](handleError(_0x478ed4,null));};exports[_0x6d6d('0x66')]=function(_0x581027){return function(_0xf5586f,_0x50eea6){var _0x39f986,_0x5885c5;var _0x108108=_['capitalize'](_0x581027);var _0x445196=_0x581027===_0x6d6d('0x67')?_0x6d6d('0x68'):_0x6d6d('0x69');return db[_0x108108+_0x6d6d('0x6a')][_0x6d6d('0x6b')]({'raw':!![],'where':{'id':_0xf5586f[_0x6d6d('0x1d')]['id']}})[_0x6d6d('0x17')](function(_0x139a7){if(_[_0x6d6d('0x12')](_0x139a7)){throw new Error(_0x108108+_0x6d6d('0x6c'));}_0x39f986=_0x139a7;return db[_0x108108+_0x6d6d('0x6d')][_0x6d6d('0x6b')]({'where':{'id':_0xf5586f[_0x6d6d('0x24')][_0x6d6d('0x6e')]},'include':[{'model':db[_0x108108+_0x6d6d('0x6f')],'as':'Interaction'},{'model':db[_0x108108+_0x445196],'as':'Account'}]});})[_0x6d6d('0x17')](function(_0x5a7b23){if(_[_0x6d6d('0x12')](_0x5a7b23)){throw new Error(_0x108108+_0x6d6d('0x70'));}_0x5885c5=_0x5a7b23;return _0x5a7b23['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x1d2668={'uniqueid':_0x581027+'.'+_0x5885c5['id']+'.'+_0x5885c5['Interaction']['id'],'FromUserId':_0xf5586f[_0x6d6d('0x35')]['id'],'type':_0x6d6d('0x71')};_0x1d2668[_0x108108+_0x6d6d('0x72')]=_0x5885c5['id'];_0x1d2668[_0x108108+_0x6d6d('0x73')]=_0x5885c5[_0x6d6d('0x6f')]['id'];_0x1d2668[_0x6d6d('0x74')+_0x108108+_0x445196+'Id']=_0x5885c5[_0x6d6d('0x69')]['id'];_0x1d2668['To'+_0x108108+_0x6d6d('0x75')]=_0x39f986['id'];return db[_0x108108+'TransferReport'][_0x6d6d('0x76')](_0x1d2668);})[_0x6d6d('0x17')](function(){return respondWithRpcPromise(_0x6d6d('0x77'),{'channel':_0x581027,'interaction':_0x5885c5['Interaction'],'message':_0x5885c5,'account':_0x5885c5['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x6d6d('0x71'),'appdata':_0x39f986[_0x6d6d('0x10')]+','+(_0x5885c5[_0x6d6d('0x69')]['queueTransferTimeout']||0x12c),'interval':_0x6d6d('0x78')}]},routingClient);})[_0x6d6d('0x17')](respondWithResult(_0x50eea6,null))['catch'](handleError(_0x50eea6,null));};};exports[_0x6d6d('0x79')]=function(_0x721d98,_0xa8ec98){var _0x155edb,_0x21057d;if(_['isNil'](_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x7a')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x56825d=_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x7a')];var _0xe80727=_[_0x6d6d('0x7b')](_0x56825d);var _0x5a8974=_0x56825d===_0x6d6d('0x67')?'Website':_0x6d6d('0x69');return db[_0x6d6d('0x7c')][_0x6d6d('0x6b')]({'raw':!![],'where':{'id':_0x721d98[_0x6d6d('0x1d')]['id'],'role':_0x6d6d('0x40')}})[_0x6d6d('0x17')](function(_0x39c1a5){if(_[_0x6d6d('0x12')](_0x39c1a5)){throw new Error(_0x6d6d('0x7d'));}_0x155edb=_0x39c1a5;return db[_0xe80727+_0x6d6d('0x6d')][_0x6d6d('0x6b')]({'where':{'id':_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x6e')]},'include':[{'model':db[_0xe80727+_0x6d6d('0x6f')],'as':_0x6d6d('0x6f')},{'model':db[_0xe80727+_0x5a8974],'as':_0x6d6d('0x69')}]});})[_0x6d6d('0x17')](function(_0xccbc07){if(_[_0x6d6d('0x12')](_0xccbc07)){throw new Error(_0xe80727+_0x6d6d('0x70'));}_0x21057d=_0xccbc07;return _0xccbc07['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3445f5={'uniqueid':_0x56825d+'.'+_0x21057d['id']+'.'+_0x21057d[_0x6d6d('0x6f')]['id'],'FromUserId':_0x721d98[_0x6d6d('0x35')]['id'],'type':_0x6d6d('0x71'),'ToUserId':_0x155edb['id']};_0x3445f5[_0xe80727+_0x6d6d('0x72')]=_0x21057d['id'];_0x3445f5[_0xe80727+_0x6d6d('0x73')]=_0x21057d[_0x6d6d('0x6f')]['id'];_0x3445f5[_0x6d6d('0x74')+_0xe80727+_0x5a8974+'Id']=_0x21057d[_0x6d6d('0x69')]['id'];return db[_0xe80727+_0x6d6d('0x7e')][_0x6d6d('0x76')](_0x3445f5);})[_0x6d6d('0x17')](function(){return respondWithRpcPromise(_0x6d6d('0x77'),{'channel':_0x56825d,'interaction':_0x21057d[_0x6d6d('0x6f')],'message':_0x21057d,'account':_0x21057d[_0x6d6d('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x155edb[_0x6d6d('0x10')]+','+(_0x21057d[_0x6d6d('0x69')][_0x6d6d('0x7f')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0xa8ec98,null))['catch'](handleError(_0xa8ec98,null));};
\ No newline at end of file
+var _0x814b=['whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','MessageId','From','QueueId','create','Start','queue','queueTransferTimeout','Channel\x20field\x20is\x20mandatory','channel','capitalize','chat','User','Agent\x20not\x20found','InteractionId','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','error','code','message','catch','status','json','sendStatus','stack','name','send','isNil','rows','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','query','params','voiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','agents','Agents','agentCapacity','user','interaction','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','interface','SIP/%s','agent','internal','AgentCapacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','MailAccounts','openchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues'];(function(_0x2c1854,_0x520dc5){var _0x386b74=function(_0x147b76){while(--_0x147b76){_0x2c1854['push'](_0x2c1854['shift']());}};_0x386b74(++_0x520dc5);}(_0x814b,0x1a2));var _0xb814=function(_0x5a2299,_0x3e2922){_0x5a2299=_0x5a2299-0x0;var _0xedff0f=_0x814b[_0x5a2299];return _0xedff0f;};'use strict';var BPromise=require(_0xb814('0x0'));var moment=require(_0xb814('0x1'));var _=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var db=require(_0xb814('0x4'))['db'];var logger=require(_0xb814('0x5'))('api');var jayson=require(_0xb814('0x6'));var amiClient=jayson[_0xb814('0x7')][_0xb814('0x8')]({'port':0x232a});var mailClient=jayson[_0xb814('0x7')][_0xb814('0x8')]({'port':0x232b});var routingClient=jayson[_0xb814('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){var _0x186d5a=_0x5c8539?_0x5c8539:amiClient;return _0x186d5a[_0xb814('0x9')](_0x3b0829,_0x2e6272)[_0xb814('0xa')](function(_0x21d4a5){if(_0x21d4a5[_0xb814('0xb')]){if(_0x21d4a5[_0xb814('0xb')][_0xb814('0xc')]===0x1f4){return _0x2913a6(_0x21d4a5[_0xb814('0xb')][_0xb814('0xd')]);}return _0x271af9(_0x21d4a5['error'][_0xb814('0xd')]);}else{_0x271af9(_0x21d4a5['result']);}})[_0xb814('0xe')](function(_0x15d6ef){_0x2913a6(_0x15d6ef);});});}function respondWithResult(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xc8;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0xf')](_0x2cc46b)[_0xb814('0x10')](_0x2ce718);}return _0x35b10d[_0xb814('0x11')](0x194);};}function handleError(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0x1f4;return function(_0x3f4881){logger[_0xb814('0xb')](_0x3f4881[_0xb814('0x12')]);if(_0x3f4881[_0xb814('0x13')]){delete _0x3f4881[_0xb814('0x13')];}_0xa0a2e5[_0xb814('0xf')](_0x2ab627)[_0xb814('0x14')](_0x3f4881);};}function findById(_0x265a83){return function(_0x125ce2){if(!_[_0xb814('0x15')](_0x265a83)&&!_[_0xb814('0x15')](_0x125ce2)&&!_['isNil'](_0x125ce2[_0xb814('0x16')])){return _['find'](_0x125ce2[_0xb814('0x16')],function(_0xfac75b){return _0xfac75b['id']==_0x265a83;});}return null;};}exports['voiceChannels']=function(_0x4b55a7,_0x55d63c){return respondWithRpcPromise(_0xb814('0x17'),_0x4b55a7['query'])['then'](respondWithResult(_0x55d63c,null))[_0xb814('0xe')](handleError(_0x55d63c,null));};exports[_0xb814('0x18')]=function(_0x25b6b6,_0x4e139e){return respondWithRpcPromise(_0xb814('0x19'),_['merge'](_0x25b6b6[_0xb814('0x1a')],_0x25b6b6[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4e139e,null))[_0xb814('0xe')](handleError(_0x4e139e,null));};exports[_0xb814('0x1c')]=function(_0x2bd039,_0x1f5d40){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xb814('0x1d')](_0x2bd039['query'],_0x2bd039[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x1f5d40,null))[_0xb814('0xe')](handleError(_0x1f5d40,null));};exports[_0xb814('0x1e')]=function(_0x1c8a2e,_0xb9e57d){return respondWithRpcPromise(_0xb814('0x1f'),_0x1c8a2e['query'])[_0xb814('0xa')](respondWithResult(_0xb9e57d,null))[_0xb814('0xe')](handleError(_0xb9e57d,null));};exports[_0xb814('0x20')]=function(_0x349394,_0x32ed56){return respondWithRpcPromise(_0xb814('0x1f'),_0x349394[_0xb814('0x1a')])[_0xb814('0xa')](findById(_0x349394['params']['id']))[_0xb814('0xa')](respondWithResult(_0x32ed56,null))[_0xb814('0xe')](handleError(_0x32ed56,null));};exports['updateVoiceQueue']=function(_0x9008b2,_0x37d24d){return respondWithRpcPromise(_0xb814('0x21'),_['merge'](_0x9008b2[_0xb814('0x22')],_0x9008b2[_0xb814('0x1b')]))['then'](respondWithResult(_0x37d24d,null))[_0xb814('0xe')](handleError(_0x37d24d,null));};exports['voiceQueuesPreview']=function(_0x6efe9a,_0x5f3e9b){return respondWithRpcPromise('VoiceQueuesPreview',_[_0xb814('0x1d')](_0x6efe9a['query'],_0x6efe9a[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x5f3e9b,null))[_0xb814('0xe')](handleError(_0x5f3e9b,null));};exports['voiceQueuesChannels']=function(_0x51d5ae,_0x26d3a9){return respondWithRpcPromise(_0xb814('0x23'),_0x51d5ae['query'])[_0xb814('0xa')](respondWithResult(_0x26d3a9,null))[_0xb814('0xe')](handleError(_0x26d3a9,null));};exports[_0xb814('0x24')]=function(_0x217b7e,_0x1b78de){return respondWithRpcPromise(_0xb814('0x25'),_[_0xb814('0x1d')](_0x217b7e['query'],_0x217b7e[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x1b78de,null))[_0xb814('0xe')](handleError(_0x1b78de,null));};exports[_0xb814('0x26')]=function(_0x14100d,_0x4ff31a){return respondWithRpcPromise(_0xb814('0x27'),_['merge'](_0x14100d[_0xb814('0x1a')],_0x14100d[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4ff31a,null))['catch'](handleError(_0x4ff31a,null));};exports[_0xb814('0x28')]=function(_0xbdb3e9,_0x4ea6f8){return respondWithRpcPromise(_0xb814('0x29'),_[_0xb814('0x1d')](_0xbdb3e9[_0xb814('0x1a')],_0xbdb3e9[_0xb814('0x1b')]))[_0xb814('0xa')](respondWithResult(_0x4ea6f8,null))[_0xb814('0xe')](handleError(_0x4ea6f8,null));};exports['outbound']=function(_0xa6ce87,_0x4e4684){return respondWithRpcPromise(_0xb814('0x2a'),_0xa6ce87['query'])[_0xb814('0xa')](respondWithResult(_0x4e4684,null))['catch'](handleError(_0x4e4684,null));};exports[_0xb814('0x2b')]=function(_0x26675a,_0x54a7fb){return respondWithRpcPromise('OutboundChannels',_0x26675a['query'])['then'](respondWithResult(_0x54a7fb,null))[_0xb814('0xe')](handleError(_0x54a7fb,null));};exports[_0xb814('0x2c')]=function(_0x38cdc2,_0x42c2ed){var _0x51cdba;return respondWithRpcPromise('Agents',_0x38cdc2[_0xb814('0x1a')])['then'](function(_0x2a93da){_0x51cdba=_0x2a93da;return respondWithRpcPromise(_0xb814('0x2d'),_0x38cdc2[_0xb814('0x1a')],routingClient);})[_0xb814('0xa')](function(_0x42653f){return _[_0xb814('0x1d')]({},_0x42653f,_0x51cdba);})[_0xb814('0xa')](respondWithResult(_0x42c2ed,null))[_0xb814('0xe')](handleError(_0x42c2ed,null));};exports[_0xb814('0x2e')]=function(_0x4b6ff8,_0x544d36){if(_0x4b6ff8['body']&&_0x4b6ff8[_0xb814('0x22')]['interaction']&&_0x4b6ff8[_0xb814('0x2f')]&&_0x4b6ff8['user'][_0xb814('0x13')]){for(var _0x44ff56 in _0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')]){if(_0x4b6ff8['body'][_0xb814('0x30')][_0xb814('0x31')](_0x44ff56)){db[_0xb814('0x32')][_0xb814('0x33')]({'where':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56]&&_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56][_0xb814('0x34')]?{'$notIn':_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56]}:{'$ne':null}}})['then'](function(_0x4a5e84){var _0xe751c3=moment()[_0xb814('0x35')](_0xb814('0x36'));for(var _0x2bf906=0x0,_0x43f1b=_0x4a5e84[_0xb814('0x34')];_0x2bf906<_0x43f1b;_0x2bf906+=0x1){_0x4a5e84[_0x2bf906][_0xb814('0x37')]({'exitAt':_0xe751c3});}});for(var _0x40af85=0x0;_0x40af85<_0x4b6ff8[_0xb814('0x22')][_0xb814('0x30')][_0x44ff56][_0xb814('0x34')];_0x40af85+=0x1){db['MemberReport'][_0xb814('0x38')]({'where':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')]['name'],'type':_0xb814('0x39'),'uniqueid':_0x4b6ff8['body'][_0xb814('0x30')][_0x44ff56][_0x40af85],'exitAt':null},'defaults':{'channel':_0x44ff56,'membername':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')],'interface':_[_0xb814('0x15')](_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x3a')])?util[_0xb814('0x35')](_0xb814('0x3b'),_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x13')]):_0x4b6ff8['user']['interface'],'type':_0xb814('0x39'),'enterAt':moment()[_0xb814('0x35')](_0xb814('0x36')),'role':_0xb814('0x3c'),'internal':_0x4b6ff8[_0xb814('0x2f')][_0xb814('0x3d')],'uniqueid':_0x4b6ff8[_0xb814('0x22')]['interaction'][_0x44ff56][_0x40af85]}});}}}}return respondWithRpcPromise(_0xb814('0x3e'),{'id':_0x4b6ff8[_0xb814('0x1b')]['id'],'capacity':_0x4b6ff8[_0xb814('0x22')]['capacity']},routingClient)[_0xb814('0xa')](respondWithResult(_0x544d36,null))['catch'](handleError(_0x544d36,null));};exports[_0xb814('0x3f')]=function(_0x5dc28e,_0x403872){return respondWithRpcPromise(_0xb814('0x40'),_0x5dc28e['query'])[_0xb814('0xa')](respondWithResult(_0x403872,null))[_0xb814('0xe')](handleError(_0x403872,null));};exports[_0xb814('0x41')]=function(_0x5209d1,_0x3da050){return respondWithRpcPromise('Trunks',_0x5209d1[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0x3da050,null))['catch'](handleError(_0x3da050,null));};exports[_0xb814('0x42')]=function(_0x4a3f84,_0x539be7){return respondWithRpcPromise(_0xb814('0x43'),_0x4a3f84[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0x539be7,null))['catch'](handleError(_0x539be7,null));};exports[_0xb814('0x44')]=function(_0x538b0f,_0xf88d23){return respondWithRpcPromise(_0xb814('0x45'),_0x538b0f['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0xf88d23,null))['catch'](handleError(_0xf88d23,null));};exports[_0xb814('0x46')]=function(_0x1656ed,_0xb2bd82){return respondWithRpcPromise(_0xb814('0x45'),_0x1656ed[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x1656ed[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0xb2bd82,null))['catch'](handleError(_0xb2bd82,null));};exports[_0xb814('0x47')]=function(_0x5441c5,_0x5d71d5){return respondWithRpcPromise(_0xb814('0x48'),_0x5441c5[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x5d71d5,null))[_0xb814('0xe')](handleError(_0x5d71d5,null));};exports['showMailQueues']=function(_0x48362c,_0x2114ca){return respondWithRpcPromise('MailQueues',_0x48362c[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x48362c[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x2114ca,null))[_0xb814('0xe')](handleError(_0x2114ca,null));};exports['mailAccounts']=function(_0x2ef77d,_0x1e9196){return respondWithRpcPromise(_0xb814('0x49'),_0x2ef77d[_0xb814('0x1a')],mailClient)[_0xb814('0xa')](respondWithResult(_0x1e9196,null))[_0xb814('0xe')](handleError(_0x1e9196,null));};exports[_0xb814('0x4a')]=function(_0x113350,_0x46014f){return respondWithRpcPromise('OpenchannelQueues',_0x113350[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x46014f,null))[_0xb814('0xe')](handleError(_0x46014f,null));};exports[_0xb814('0x4b')]=function(_0x3b35a8,_0x3d4843){return respondWithRpcPromise('OpenchannelQueues',_0x3b35a8[_0xb814('0x1a')],routingClient)['then'](findById(_0x3b35a8[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0x3d4843,null))[_0xb814('0xe')](handleError(_0x3d4843,null));};exports['smsQueues']=function(_0x150e73,_0x579351){return respondWithRpcPromise(_0xb814('0x4c'),_0x150e73['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0x579351,null))[_0xb814('0xe')](handleError(_0x579351,null));};exports[_0xb814('0x4d')]=function(_0x1b024f,_0x3377d4){return respondWithRpcPromise(_0xb814('0x4c'),_0x1b024f[_0xb814('0x1a')],routingClient)['then'](findById(_0x1b024f[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x3377d4,null))[_0xb814('0xe')](handleError(_0x3377d4,null));};exports[_0xb814('0x4e')]=function(_0x1b989d,_0x3dcaeb){return respondWithRpcPromise(_0xb814('0x4f'),_0x1b989d[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x3dcaeb,null))[_0xb814('0xe')](handleError(_0x3dcaeb,null));};exports[_0xb814('0x50')]=function(_0x4a49ba,_0x3bb2b4){return respondWithRpcPromise(_0xb814('0x4f'),_0x4a49ba[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](findById(_0x4a49ba[_0xb814('0x1b')]['id']))['then'](respondWithResult(_0x3bb2b4,null))[_0xb814('0xe')](handleError(_0x3bb2b4,null));};exports['faxQueues']=function(_0x24594a,_0x16f8f2){return respondWithRpcPromise(_0xb814('0x51'),_0x24594a[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x16f8f2,null))[_0xb814('0xe')](handleError(_0x16f8f2,null));};exports['showFaxQueues']=function(_0x506bf2,_0x5d064b){return respondWithRpcPromise(_0xb814('0x51'),_0x506bf2['query'],routingClient)[_0xb814('0xa')](findById(_0x506bf2[_0xb814('0x1b')]['id']))[_0xb814('0xa')](respondWithResult(_0x5d064b,null))['catch'](handleError(_0x5d064b,null));};exports[_0xb814('0x52')]=function(_0x3e5ce8,_0xee204){return respondWithRpcPromise('FaxAccounts',_0x3e5ce8[_0xb814('0x1a')])[_0xb814('0xa')](respondWithResult(_0xee204,null))[_0xb814('0xe')](handleError(_0xee204,null));};exports[_0xb814('0x53')]=function(_0x555be0,_0x5dedd7){return respondWithRpcPromise(_0xb814('0x54'),_0x555be0[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x5dedd7,null))[_0xb814('0xe')](handleError(_0x5dedd7,null));};exports[_0xb814('0x55')]=function(_0xe5fc12,_0x34a0b3){return respondWithRpcPromise(_0xb814('0x56'),_0xe5fc12[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x34a0b3,null))[_0xb814('0xe')](handleError(_0x34a0b3,null));};exports[_0xb814('0x57')]=function(_0x3ef474,_0x21fc41){return respondWithRpcPromise(_0xb814('0x58'),_0x3ef474['query'],routingClient)[_0xb814('0xa')](respondWithResult(_0x21fc41,null))[_0xb814('0xe')](handleError(_0x21fc41,null));};exports[_0xb814('0x59')]=function(_0x357b90,_0xec821a){return respondWithRpcPromise(_0xb814('0x58'),_0x357b90['query'],routingClient)[_0xb814('0xa')](function(_0x52e1fc){if(_0x357b90[_0xb814('0x1a')][_0xb814('0x5a')]!==undefined){var _0x3c5a58=_(_0x52e1fc[_0xb814('0x16')])[_0xb814('0x5b')]([_0x357b90['query']['type'],_0x357b90[_0xb814('0x1b')]['id']])[_0xb814('0x5c')](_0xb814('0x5d'))[_0xb814('0x5e')]()['value']();return _0x52e1fc[_0xb814('0x16')]['filter'](function(_0x39073c){return _0x3c5a58[_0xb814('0x5f')](_0x39073c['queue_id'])>-0x1;});}else{return _0x52e1fc['rows'][_0xb814('0x5b')](function(_0x52e17a){return _0x52e17a[_0xb814('0x5d')]===parseInt(_0x357b90[_0xb814('0x1b')]['id']);});}})[_0xb814('0xa')](respondWithResult(_0xec821a,null))[_0xb814('0xe')](handleError(_0xec821a,null));};exports[_0xb814('0x60')]=function(_0x420bde,_0x40fe4a){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x420bde[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x40fe4a,null))[_0xb814('0xe')](handleError(_0x40fe4a,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x2838cb,_0x43ee60){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x2838cb[_0xb814('0x1a')],routingClient)['then'](respondWithResult(_0x43ee60,null))[_0xb814('0xe')](handleError(_0x43ee60,null));};exports[_0xb814('0x61')]=function(_0x4e15c2,_0x5a0c4a){return respondWithRpcPromise(_0xb814('0x62'),_0x4e15c2[_0xb814('0x1a')],routingClient)[_0xb814('0xa')](respondWithResult(_0x5a0c4a,null))[_0xb814('0xe')](handleError(_0x5a0c4a,null));};exports[_0xb814('0x63')]=function(_0x4394da){return function(_0x2b12a9,_0x314600){var _0x8cb107,_0x34f49c;var _0x53e705=_['capitalize'](_0x4394da);var _0x5bee4d=_0x4394da==='chat'?'Website':_0xb814('0x64');return db[_0x53e705+_0xb814('0x65')][_0xb814('0x66')]({'raw':!![],'where':{'id':_0x2b12a9['params']['id']}})[_0xb814('0xa')](function(_0x1fb1ea){if(_[_0xb814('0x15')](_0x1fb1ea)){throw new Error(_0x53e705+_0xb814('0x67'));}_0x8cb107=_0x1fb1ea;return db[_0x53e705+_0xb814('0x68')][_0xb814('0x66')]({'where':{'id':_0x2b12a9[_0xb814('0x22')][_0xb814('0x69')]},'include':[{'model':db[_0x53e705+'Interaction'],'as':_0xb814('0x6a')},{'model':db[_0x53e705+_0x5bee4d],'as':_0xb814('0x64')}]});})[_0xb814('0xa')](function(_0x30faa0){if(_['isNil'](_0x30faa0)){throw new Error(_0x53e705+_0xb814('0x6b'));}_0x34f49c=_0x30faa0;return _0x30faa0[_0xb814('0x6c')]({'read':0x0,'readAt':null,'UserId':null});})[_0xb814('0xa')](function(){var _0x3037f2={'uniqueid':_0x4394da+'.'+_0x34f49c['id']+'.'+_0x34f49c[_0xb814('0x6a')]['id'],'FromUserId':_0x2b12a9['user']['id'],'type':'queue'};_0x3037f2[_0x53e705+_0xb814('0x6d')]=_0x34f49c['id'];_0x3037f2[_0x53e705+'InteractionId']=_0x34f49c[_0xb814('0x6a')]['id'];_0x3037f2[_0xb814('0x6e')+_0x53e705+_0x5bee4d+'Id']=_0x34f49c['Account']['id'];_0x3037f2['To'+_0x53e705+_0xb814('0x6f')]=_0x8cb107['id'];return db[_0x53e705+'TransferReport'][_0xb814('0x70')](_0x3037f2);})['then'](function(){return respondWithRpcPromise(_0xb814('0x71'),{'channel':_0x4394da,'interaction':_0x34f49c[_0xb814('0x6a')],'message':_0x34f49c,'account':_0x34f49c[_0xb814('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb814('0x72'),'appdata':_0x8cb107[_0xb814('0x13')]+','+(_0x34f49c[_0xb814('0x64')][_0xb814('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x314600,null))[_0xb814('0xe')](handleError(_0x314600,null));};};exports['agentNotify']=function(_0x511e03,_0x2d0061){var _0x8fbda1,_0x25d42d;if(_['isNil'](_0x511e03[_0xb814('0x22')]['channel'])){throw new Error(_0xb814('0x74'));}var _0x19d508=_0x511e03[_0xb814('0x22')][_0xb814('0x75')];var _0x4c8a00=_[_0xb814('0x76')](_0x19d508);var _0xc0ff3c=_0x19d508===_0xb814('0x77')?'Website':_0xb814('0x64');return db[_0xb814('0x78')][_0xb814('0x66')]({'raw':!![],'where':{'id':_0x511e03['params']['id'],'role':_0xb814('0x3c')}})[_0xb814('0xa')](function(_0x9dc06b){if(_[_0xb814('0x15')](_0x9dc06b)){throw new Error(_0xb814('0x79'));}_0x8fbda1=_0x9dc06b;return db[_0x4c8a00+_0xb814('0x68')][_0xb814('0x66')]({'where':{'id':_0x511e03[_0xb814('0x22')][_0xb814('0x69')]},'include':[{'model':db[_0x4c8a00+_0xb814('0x6a')],'as':_0xb814('0x6a')},{'model':db[_0x4c8a00+_0xc0ff3c],'as':_0xb814('0x64')}]});})[_0xb814('0xa')](function(_0x5b8d2e){if(_['isNil'](_0x5b8d2e)){throw new Error(_0x4c8a00+_0xb814('0x6b'));}_0x25d42d=_0x5b8d2e;return _0x5b8d2e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xb814('0xa')](function(){var _0x3949fd={'uniqueid':_0x19d508+'.'+_0x25d42d['id']+'.'+_0x25d42d[_0xb814('0x6a')]['id'],'FromUserId':_0x511e03[_0xb814('0x2f')]['id'],'type':_0xb814('0x72'),'ToUserId':_0x8fbda1['id']};_0x3949fd[_0x4c8a00+_0xb814('0x6d')]=_0x25d42d['id'];_0x3949fd[_0x4c8a00+_0xb814('0x7a')]=_0x25d42d['Interaction']['id'];_0x3949fd['From'+_0x4c8a00+_0xc0ff3c+'Id']=_0x25d42d[_0xb814('0x64')]['id'];return db[_0x4c8a00+'TransferReport'][_0xb814('0x70')](_0x3949fd);})[_0xb814('0xa')](function(){return respondWithRpcPromise(_0xb814('0x71'),{'channel':_0x19d508,'interaction':_0x25d42d['Interaction'],'message':_0x25d42d,'account':_0x25d42d[_0xb814('0x64')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb814('0x3c'),'appdata':_0x8fbda1[_0xb814('0x13')]+','+(_0x25d42d[_0xb814('0x64')][_0xb814('0x7b')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xb814('0xa')](respondWithResult(_0x2d0061,null))[_0xb814('0xe')](handleError(_0x2d0061,null));};
\ No newline at end of file
index f94ff8b..0643232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e2=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/run','post','put','update','delete','destroy','express'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0x06e2,0x176));var _0x206e=function(_0xc9094d,_0xeb60aa){_0xc9094d=_0xc9094d-0x0;var _0x15c344=_0x06e2[_0xc9094d];return _0x15c344;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x206e('0x0'));var router=express[_0x206e('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x206e('0x2'));var interaction=require(_0x206e('0x3'));var config=require(_0x206e('0x4'));var controller=require('./schedule.controller');router[_0x206e('0x5')]('/',auth[_0x206e('0x6')](),controller[_0x206e('0x7')]);router[_0x206e('0x5')](_0x206e('0x8'),auth['isAuthenticated'](),controller['show']);router[_0x206e('0x5')](_0x206e('0x9'),auth[_0x206e('0x6')](),controller['run']);router[_0x206e('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x206e('0xb')](_0x206e('0x8'),auth[_0x206e('0x6')](),controller[_0x206e('0xc')]);router[_0x206e('0xd')](_0x206e('0x8'),auth[_0x206e('0x6')](),controller[_0x206e('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x41ce=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','exports'];(function(_0x308bc6,_0x564ec7){var _0x422fcf=function(_0x8451a8){while(--_0x8451a8){_0x308bc6['push'](_0x308bc6['shift']());}};_0x422fcf(++_0x564ec7);}(_0x41ce,0xfd));var _0xe41c=function(_0x38f65e,_0xef1d00){_0x38f65e=_0x38f65e-0x0;var _0x4350bd=_0x41ce[_0x38f65e];return _0x4350bd;};'use strict';var multer=require(_0xe41c('0x0'));var util=require(_0xe41c('0x1'));var path=require(_0xe41c('0x2'));var timeout=require(_0xe41c('0x3'));var express=require('express');var router=express[_0xe41c('0x4')]();var fs_extra=require(_0xe41c('0x5'));var auth=require(_0xe41c('0x6'));var interaction=require(_0xe41c('0x7'));var config=require(_0xe41c('0x8'));var controller=require(_0xe41c('0x9'));router[_0xe41c('0xa')]('/',auth[_0xe41c('0xb')](),controller['index']);router[_0xe41c('0xa')](_0xe41c('0xc'),auth['isAuthenticated'](),controller[_0xe41c('0xd')]);router['get'](_0xe41c('0xe'),auth['isAuthenticated'](),controller[_0xe41c('0xf')]);router[_0xe41c('0x10')]('/',auth[_0xe41c('0xb')](),controller[_0xe41c('0x11')]);router[_0xe41c('0x12')](_0xe41c('0xc'),auth['isAuthenticated'](),controller[_0xe41c('0x13')]);router[_0xe41c('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xe41c('0x15')]);module[_0xe41c('0x16')]=router;
\ No newline at end of file
index 7e2a42e..e86e3bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bf9=['sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','days','hours','minutes','pdf','xlsx','custom','default','TEXT'];(function(_0x4ef155,_0x528c1a){var _0x31f196=function(_0x17ad04){while(--_0x17ad04){_0x4ef155['push'](_0x4ef155['shift']());}};_0x31f196(++_0x528c1a);}(_0x6bf9,0x77));var _0x96bf=function(_0x547456,_0x1de17e){_0x547456=_0x547456-0x0;var _0xc1fd7b=_0x6bf9[_0x547456];return _0xc1fd7b;};'use strict';var Sequelize=require(_0x96bf('0x0'));module[_0x96bf('0x1')]={'name':{'type':Sequelize[_0x96bf('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x96bf('0x2')]},'active':{'type':Sequelize[_0x96bf('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x96bf('0x4')},'startAt':{'type':Sequelize[_0x96bf('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x96bf('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x96bf('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x96bf('0x7')](_0x96bf('0x8'),'quarters','months','weeks',_0x96bf('0x9'),_0x96bf('0xa'),_0x96bf('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x96bf('0x7')]('csv',_0x96bf('0xc'),_0x96bf('0xd')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x96bf('0x7')](_0x96bf('0xe'),_0x96bf('0xf')),'allowNull':![],'defaultValue':_0x96bf('0xe')},'sendMail':{'type':Sequelize[_0x96bf('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x96bf('0x10')]},'bcc':{'type':Sequelize[_0x96bf('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x96bf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf777=['DATE','INTEGER','ENUM','quarters','months','weeks','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize','STRING','BOOLEAN'];(function(_0xbecd7e,_0x36ae29){var _0x416e81=function(_0x3d3651){while(--_0x3d3651){_0xbecd7e['push'](_0xbecd7e['shift']());}};_0x416e81(++_0x36ae29);}(_0xf777,0x1e3));var _0x7f77=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf777[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x7f77('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x7f77('0x1')]},'active':{'type':Sequelize[_0x7f77('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x7f77('0x1')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x7f77('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0x7f77('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x7f77('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x7f77('0x5')]('years',_0x7f77('0x6'),_0x7f77('0x7'),_0x7f77('0x8'),_0x7f77('0x9'),_0x7f77('0xa'),_0x7f77('0xb')),'allowNull':![],'defaultValue':_0x7f77('0x9')},'output':{'type':Sequelize['ENUM'](_0x7f77('0xc'),_0x7f77('0xd'),_0x7f77('0xe')),'allowNull':![],'defaultValue':_0x7f77('0xc')},'type':{'type':Sequelize['ENUM'](_0x7f77('0xf'),_0x7f77('0x10')),'allowNull':![],'defaultValue':_0x7f77('0xf')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x7f77('0x11')]},'bcc':{'type':Sequelize[_0x7f77('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 1c6b269..afe5298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde06=['rawAttributes','keys','merge','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','UserProfileResource','end','stack','name','send','map','Schedule','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0x5ebb05,_0x3d6d91){var _0x47b01c=function(_0xb7239d){while(--_0xb7239d){_0x5ebb05['push'](_0x5ebb05['shift']());}};_0x47b01c(++_0x3d6d91);}(_0xde06,0x1be));var _0x6de0=function(_0x4c6664,_0x1cea29){_0x4c6664=_0x4c6664-0x0;var _0x5230cf=_0xde06[_0x4c6664];return _0x5230cf;};'use strict';var emlformat=require(_0x6de0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6de0('0x1'));var rp=require(_0x6de0('0x2'));var moment=require(_0x6de0('0x3'));var BPromise=require(_0x6de0('0x4'));var Mustache=require(_0x6de0('0x5'));var util=require(_0x6de0('0x6'));var path=require('path');var sox=require(_0x6de0('0x7'));var csv=require(_0x6de0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6de0('0x9'));var _=require(_0x6de0('0xa'));var squel=require(_0x6de0('0xb'));var crypto=require(_0x6de0('0xc'));var jsforce=require(_0x6de0('0xd'));var deskjs=require(_0x6de0('0xe'));var toCsv=require(_0x6de0('0x8'));var querystring=require(_0x6de0('0xf'));var Papa=require(_0x6de0('0x10'));var Redis=require('ioredis');var authService=require(_0x6de0('0x11'));var qs=require(_0x6de0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6de0('0x13'))(_0x6de0('0x14'));var utils=require(_0x6de0('0x15'));var config=require(_0x6de0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x6de0('0x17'))['db'];function respondWithStatusCode(_0x3c2750,_0x3ea646){_0x3ea646=_0x3ea646||0xcc;return function(_0x456bfe){if(_0x456bfe){return _0x3c2750[_0x6de0('0x18')](_0x3ea646);}return _0x3c2750['status'](_0x3ea646)['end']();};}function respondWithResult(_0x22fe4e,_0x4483c9){_0x4483c9=_0x4483c9||0xc8;return function(_0x4a8919){if(_0x4a8919){return _0x22fe4e[_0x6de0('0x19')](_0x4483c9)[_0x6de0('0x1a')](_0x4a8919);}};}function respondWithFilteredResult(_0x2cd558,_0x101d5a){return function(_0x59f507){if(_0x59f507){var _0x5da41a=typeof _0x101d5a[_0x6de0('0x1b')]===_0x6de0('0x1c')&&typeof _0x101d5a[_0x6de0('0x1d')]===_0x6de0('0x1c');var _0x29194e=_0x59f507[_0x6de0('0x1e')];var _0x2701bb=_0x5da41a?0x0:_0x101d5a[_0x6de0('0x1b')];var _0x2a17e1=_0x5da41a?_0x59f507[_0x6de0('0x1e')]:_0x101d5a[_0x6de0('0x1b')]+_0x101d5a[_0x6de0('0x1d')];var _0x1dec79;if(_0x2a17e1>=_0x29194e){_0x2a17e1=_0x29194e;_0x1dec79=0xc8;}else{_0x1dec79=0xce;}_0x2cd558['status'](_0x1dec79);return _0x2cd558[_0x6de0('0x1f')]('Content-Range',_0x2701bb+'-'+_0x2a17e1+'/'+_0x29194e)['json'](_0x59f507);}return null;};}function patchUpdates(_0x339da4){return function(_0x3ecd3a){try{jsonpatch[_0x6de0('0x20')](_0x3ecd3a,_0x339da4,!![]);}catch(_0x5c63ea){return BPromise[_0x6de0('0x21')](_0x5c63ea);}return _0x3ecd3a[_0x6de0('0x22')]();};}function saveUpdates(_0x7be445,_0x6ad0d1){return function(_0xf089cf){if(_0xf089cf){return _0xf089cf[_0x6de0('0x23')](_0x7be445)[_0x6de0('0x24')](function(_0x2502bb){return _0x2502bb;});}return null;};}function removeEntity(_0x4c8bd7,_0x1b1b93){return function(_0x2ec61f){if(_0x2ec61f){return _0x2ec61f[_0x6de0('0x25')]()['then'](function(){var _0x3ff497=_0x2ec61f['get']({'plain':!![]});var _0x393322='Scheduler';return db[_0x6de0('0x26')][_0x6de0('0x25')]({'where':{'type':_0x393322,'resourceId':_0x3ff497['id']}})[_0x6de0('0x24')](function(){return _0x2ec61f;});})[_0x6de0('0x24')](function(){_0x4c8bd7[_0x6de0('0x19')](0xcc)[_0x6de0('0x27')]();});}};}function handleEntityNotFound(_0x4da526,_0xc711db){return function(_0x585547){if(!_0x585547){_0x4da526[_0x6de0('0x18')](0x194);}return _0x585547;};}function handleError(_0x52f8a8,_0x529532){_0x529532=_0x529532||0x1f4;return function(_0xafa16b){logger['error'](_0xafa16b[_0x6de0('0x28')]);if(_0xafa16b[_0x6de0('0x29')]){delete _0xafa16b['name'];}_0x52f8a8[_0x6de0('0x19')](_0x529532)[_0x6de0('0x2a')](_0xafa16b);};}exports['index']=function(_0x7b8f02,_0x46c17c){var _0x5b2e76={},_0x1e9608={},_0x1f0907={'count':0x0,'rows':[]};var _0x260af2=_[_0x6de0('0x2b')](db[_0x6de0('0x2c')]['rawAttributes'],function(_0x13f34e){return{'name':_0x13f34e[_0x6de0('0x2d')],'type':_0x13f34e[_0x6de0('0x2e')][_0x6de0('0x2f')]};});_0x1e9608[_0x6de0('0x30')]=_[_0x6de0('0x2b')](_0x260af2,_0x6de0('0x29'));_0x1e9608[_0x6de0('0x31')]=_['keys'](_0x7b8f02[_0x6de0('0x31')]);_0x1e9608[_0x6de0('0x32')]=_[_0x6de0('0x33')](_0x1e9608[_0x6de0('0x30')],_0x1e9608[_0x6de0('0x31')]);_0x5b2e76[_0x6de0('0x34')]=_[_0x6de0('0x33')](_0x1e9608[_0x6de0('0x30')],qs[_0x6de0('0x35')](_0x7b8f02[_0x6de0('0x31')][_0x6de0('0x35')]));_0x5b2e76[_0x6de0('0x34')]=_0x5b2e76[_0x6de0('0x34')][_0x6de0('0x36')]?_0x5b2e76['attributes']:_0x1e9608[_0x6de0('0x30')];if(!_0x7b8f02['query'][_0x6de0('0x37')](_0x6de0('0x38'))){_0x5b2e76[_0x6de0('0x1d')]=qs[_0x6de0('0x1d')](_0x7b8f02[_0x6de0('0x31')]['limit']);_0x5b2e76[_0x6de0('0x1b')]=qs['offset'](_0x7b8f02['query'][_0x6de0('0x1b')]);}_0x5b2e76[_0x6de0('0x39')]=qs[_0x6de0('0x3a')](_0x7b8f02['query'][_0x6de0('0x3a')]);_0x5b2e76[_0x6de0('0x3b')]=qs[_0x6de0('0x32')](_[_0x6de0('0x3c')](_0x7b8f02[_0x6de0('0x31')],_0x1e9608[_0x6de0('0x32')]),_0x260af2);if(_0x7b8f02['query'][_0x6de0('0x3d')]){_0x5b2e76['where']=_['merge'](_0x5b2e76[_0x6de0('0x3b')],{'$or':_['map'](_0x260af2,function(_0x384ec8){if(_0x384ec8[_0x6de0('0x2e')]!=='VIRTUAL'){var _0x1c2ccd={};_0x1c2ccd[_0x384ec8['name']]={'$like':'%'+_0x7b8f02[_0x6de0('0x31')]['filter']+'%'};return _0x1c2ccd;}})});}_0x5b2e76=_['merge']({},_0x5b2e76,_0x7b8f02[_0x6de0('0x3e')]);var _0x1e4151={'where':_0x5b2e76[_0x6de0('0x3b')]};return db[_0x6de0('0x2c')][_0x6de0('0x1e')](_0x1e4151)[_0x6de0('0x24')](function(_0x2765a9){_0x1f0907[_0x6de0('0x1e')]=_0x2765a9;if(_0x7b8f02[_0x6de0('0x31')][_0x6de0('0x3f')]){_0x5b2e76[_0x6de0('0x40')]=[{'all':!![]}];}return db[_0x6de0('0x2c')][_0x6de0('0x41')](_0x5b2e76);})[_0x6de0('0x24')](function(_0x375592){_0x1f0907[_0x6de0('0x42')]=_0x375592;return _0x1f0907;})['then'](respondWithFilteredResult(_0x46c17c,_0x5b2e76))[_0x6de0('0x43')](handleError(_0x46c17c,null));};exports[_0x6de0('0x44')]=function(_0x4610e4,_0x431e3f){var _0x4510d0={'raw':![],'where':{'id':_0x4610e4[_0x6de0('0x45')]['id']}},_0x30fbff={};_0x30fbff[_0x6de0('0x30')]=_['keys'](db['Schedule'][_0x6de0('0x46')]);_0x30fbff[_0x6de0('0x31')]=_[_0x6de0('0x47')](_0x4610e4[_0x6de0('0x31')]);_0x30fbff[_0x6de0('0x32')]=_['intersection'](_0x30fbff[_0x6de0('0x30')],_0x30fbff[_0x6de0('0x31')]);_0x4510d0[_0x6de0('0x34')]=_[_0x6de0('0x33')](_0x30fbff[_0x6de0('0x30')],qs['fields'](_0x4610e4[_0x6de0('0x31')]['fields']));_0x4510d0['attributes']=_0x4510d0['attributes'][_0x6de0('0x36')]?_0x4510d0[_0x6de0('0x34')]:_0x30fbff[_0x6de0('0x30')];if(_0x4610e4[_0x6de0('0x31')]['includeAll']){_0x4510d0['include']=[{'all':!![]}];}_0x4510d0=_[_0x6de0('0x48')]({},_0x4510d0,_0x4610e4[_0x6de0('0x3e')]);return db[_0x6de0('0x2c')][_0x6de0('0x49')](_0x4510d0)['then'](handleEntityNotFound(_0x431e3f,null))['then'](respondWithResult(_0x431e3f,null))[_0x6de0('0x43')](handleError(_0x431e3f,null));};exports['create']=function(_0x50ac4d,_0x4ea699){return db[_0x6de0('0x2c')]['create'](_0x50ac4d[_0x6de0('0x4a')],{})[_0x6de0('0x24')](function(_0x398d68){var _0x3c66fb=_0x50ac4d[_0x6de0('0x4b')][_0x6de0('0x4c')]({'plain':!![]});if(!_0x3c66fb)throw new Error(_0x6de0('0x4d'));if(_0x3c66fb[_0x6de0('0x4e')]===_0x6de0('0x4b')){var _0xfa60b8=_0x398d68[_0x6de0('0x4c')]({'plain':!![]});var _0x4bc3bc=_0x6de0('0x4f');return db[_0x6de0('0x50')][_0x6de0('0x49')]({'where':{'name':_0x4bc3bc,'userProfileId':_0x3c66fb[_0x6de0('0x51')]},'raw':!![]})[_0x6de0('0x24')](function(_0x59047e){if(_0x59047e&&_0x59047e[_0x6de0('0x52')]===0x0){return db[_0x6de0('0x26')][_0x6de0('0x53')]({'name':_0xfa60b8[_0x6de0('0x29')],'resourceId':_0xfa60b8['id'],'type':_0x59047e['name'],'sectionId':_0x59047e['id']},{})[_0x6de0('0x24')](function(){return _0x398d68;});}else{return _0x398d68;}})[_0x6de0('0x43')](function(_0x2960dd){logger['error'](_0x6de0('0x54'),_0x2960dd);throw _0x2960dd;});}return _0x398d68;})[_0x6de0('0x24')](respondWithResult(_0x4ea699,0xc9))['catch'](handleError(_0x4ea699,null));};exports['update']=function(_0xce9484,_0x38d2a1){if(_0xce9484[_0x6de0('0x4a')]['id']){delete _0xce9484[_0x6de0('0x4a')]['id'];}return db[_0x6de0('0x2c')][_0x6de0('0x49')]({'where':{'id':_0xce9484['params']['id']}})[_0x6de0('0x24')](handleEntityNotFound(_0x38d2a1,null))[_0x6de0('0x24')](saveUpdates(_0xce9484['body'],null))[_0x6de0('0x24')](respondWithResult(_0x38d2a1,null))[_0x6de0('0x43')](handleError(_0x38d2a1,null));};exports[_0x6de0('0x25')]=function(_0x46c24c,_0x409266){return db['Schedule'][_0x6de0('0x49')]({'where':{'id':_0x46c24c['params']['id']}})[_0x6de0('0x24')](handleEntityNotFound(_0x409266,null))[_0x6de0('0x24')](removeEntity(_0x409266,null))[_0x6de0('0x43')](handleError(_0x409266,null));};exports[_0x6de0('0x55')]=function(_0xa62b07,_0x262bd9,_0x428f1d){var _0x23b2c3=require('../../config/schedule');return db[_0x6de0('0x2c')][_0x6de0('0x49')]({'where':{'id':_0xa62b07[_0x6de0('0x45')]['id']},'raw':!![]})[_0x6de0('0x24')](handleEntityNotFound(_0x262bd9,null))[_0x6de0('0x24')](function(){_0x23b2c3[_0x6de0('0x55')](_0xa62b07[_0x6de0('0x45')]['id']);})[_0x6de0('0x24')](respondWithStatusCode(_0x262bd9,null))[_0x6de0('0x43')](handleError(_0x262bd9,null));};
\ No newline at end of file
+var _0x962b=['to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','get','Scheduler','UserProfileResource','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','Schedule','findAll','rows','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','destroy','run','../../config/schedule','eml-format','fast-json-patch','bluebird','mustache','path','sox'];(function(_0x2d7454,_0x3f68a8){var _0x1aac66=function(_0x5059f3){while(--_0x5059f3){_0x2d7454['push'](_0x2d7454['shift']());}};_0x1aac66(++_0x3f68a8);}(_0x962b,0x152));var _0xb962=function(_0x1b8ec3,_0x570aa9){_0x1b8ec3=_0x1b8ec3-0x0;var _0x357d1d=_0x962b[_0x1b8ec3];return _0x357d1d;};'use strict';var emlformat=require(_0xb962('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb962('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb962('0x2'));var Mustache=require(_0xb962('0x3'));var util=require('util');var path=require(_0xb962('0x4'));var sox=require(_0xb962('0x5'));var csv=require(_0xb962('0x6'));var ejs=require(_0xb962('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb962('0x8'));var squel=require(_0xb962('0x9'));var crypto=require(_0xb962('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xb962('0xb'));var toCsv=require('to-csv');var querystring=require(_0xb962('0xc'));var Papa=require(_0xb962('0xd'));var Redis=require(_0xb962('0xe'));var authService=require(_0xb962('0xf'));var qs=require(_0xb962('0x10'));var as=require(_0xb962('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb962('0x12'))(_0xb962('0x13'));var utils=require(_0xb962('0x14'));var config=require(_0xb962('0x15'));var licenseUtil=require(_0xb962('0x16'));var db=require(_0xb962('0x17'))['db'];function respondWithStatusCode(_0x5a127b,_0x5d5c6d){_0x5d5c6d=_0x5d5c6d||0xcc;return function(_0x50438a){if(_0x50438a){return _0x5a127b[_0xb962('0x18')](_0x5d5c6d);}return _0x5a127b[_0xb962('0x19')](_0x5d5c6d)[_0xb962('0x1a')]();};}function respondWithResult(_0x3d960b,_0x2f5418){_0x2f5418=_0x2f5418||0xc8;return function(_0xc39a43){if(_0xc39a43){return _0x3d960b[_0xb962('0x19')](_0x2f5418)[_0xb962('0x1b')](_0xc39a43);}};}function respondWithFilteredResult(_0x3f2f54,_0x1b29ee){return function(_0x374829){if(_0x374829){var _0x596c31=typeof _0x1b29ee['offset']===_0xb962('0x1c')&&typeof _0x1b29ee[_0xb962('0x1d')]===_0xb962('0x1c');var _0x3e2fad=_0x374829[_0xb962('0x1e')];var _0x56d349=_0x596c31?0x0:_0x1b29ee[_0xb962('0x1f')];var _0x58d4c6=_0x596c31?_0x374829['count']:_0x1b29ee['offset']+_0x1b29ee[_0xb962('0x1d')];var _0x1e39f7;if(_0x58d4c6>=_0x3e2fad){_0x58d4c6=_0x3e2fad;_0x1e39f7=0xc8;}else{_0x1e39f7=0xce;}_0x3f2f54[_0xb962('0x19')](_0x1e39f7);return _0x3f2f54[_0xb962('0x20')](_0xb962('0x21'),_0x56d349+'-'+_0x58d4c6+'/'+_0x3e2fad)['json'](_0x374829);}return null;};}function patchUpdates(_0x1e80ec){return function(_0x3bb10d){try{jsonpatch[_0xb962('0x22')](_0x3bb10d,_0x1e80ec,!![]);}catch(_0x412ca6){return BPromise[_0xb962('0x23')](_0x412ca6);}return _0x3bb10d['save']();};}function saveUpdates(_0x3fb733,_0x876a04){return function(_0x367561){if(_0x367561){return _0x367561[_0xb962('0x24')](_0x3fb733)[_0xb962('0x25')](function(_0x58c15b){return _0x58c15b;});}return null;};}function removeEntity(_0x5efbbb,_0x3cb48e){return function(_0xb94ef8){if(_0xb94ef8){return _0xb94ef8['destroy']()[_0xb962('0x25')](function(){var _0x2a40ff=_0xb94ef8[_0xb962('0x26')]({'plain':!![]});var _0x120664=_0xb962('0x27');return db[_0xb962('0x28')]['destroy']({'where':{'type':_0x120664,'resourceId':_0x2a40ff['id']}})[_0xb962('0x25')](function(){return _0xb94ef8;});})[_0xb962('0x25')](function(){_0x5efbbb[_0xb962('0x19')](0xcc)[_0xb962('0x1a')]();});}};}function handleEntityNotFound(_0x463784,_0x35c41e){return function(_0x2b262f){if(!_0x2b262f){_0x463784[_0xb962('0x18')](0x194);}return _0x2b262f;};}function handleError(_0x21111f,_0x3da175){_0x3da175=_0x3da175||0x1f4;return function(_0x1db6b1){logger[_0xb962('0x29')](_0x1db6b1['stack']);if(_0x1db6b1['name']){delete _0x1db6b1[_0xb962('0x2a')];}_0x21111f[_0xb962('0x19')](_0x3da175)[_0xb962('0x2b')](_0x1db6b1);};}exports[_0xb962('0x2c')]=function(_0x460368,_0x19b803){var _0x1789ad={},_0xe47402={},_0x28aab1={'count':0x0,'rows':[]};var _0x3f1cd6=_['map'](db['Schedule'][_0xb962('0x2d')],function(_0x47f6f9){return{'name':_0x47f6f9[_0xb962('0x2e')],'type':_0x47f6f9[_0xb962('0x2f')][_0xb962('0x30')]};});_0xe47402[_0xb962('0x31')]=_[_0xb962('0x32')](_0x3f1cd6,_0xb962('0x2a'));_0xe47402[_0xb962('0x33')]=_[_0xb962('0x34')](_0x460368[_0xb962('0x33')]);_0xe47402[_0xb962('0x35')]=_[_0xb962('0x36')](_0xe47402['model'],_0xe47402[_0xb962('0x33')]);_0x1789ad[_0xb962('0x37')]=_[_0xb962('0x36')](_0xe47402[_0xb962('0x31')],qs[_0xb962('0x38')](_0x460368[_0xb962('0x33')][_0xb962('0x38')]));_0x1789ad[_0xb962('0x37')]=_0x1789ad[_0xb962('0x37')][_0xb962('0x39')]?_0x1789ad[_0xb962('0x37')]:_0xe47402['model'];if(!_0x460368[_0xb962('0x33')]['hasOwnProperty'](_0xb962('0x3a'))){_0x1789ad[_0xb962('0x1d')]=qs['limit'](_0x460368[_0xb962('0x33')][_0xb962('0x1d')]);_0x1789ad[_0xb962('0x1f')]=qs[_0xb962('0x1f')](_0x460368['query']['offset']);}_0x1789ad['order']=qs['sort'](_0x460368[_0xb962('0x33')][_0xb962('0x3b')]);_0x1789ad[_0xb962('0x3c')]=qs[_0xb962('0x35')](_[_0xb962('0x3d')](_0x460368[_0xb962('0x33')],_0xe47402[_0xb962('0x35')]),_0x3f1cd6);if(_0x460368[_0xb962('0x33')][_0xb962('0x3e')]){_0x1789ad['where']=_[_0xb962('0x3f')](_0x1789ad[_0xb962('0x3c')],{'$or':_['map'](_0x3f1cd6,function(_0x2fe65b){if(_0x2fe65b[_0xb962('0x2f')]!==_0xb962('0x40')){var _0x515e51={};_0x515e51[_0x2fe65b[_0xb962('0x2a')]]={'$like':'%'+_0x460368[_0xb962('0x33')][_0xb962('0x3e')]+'%'};return _0x515e51;}})});}_0x1789ad=_[_0xb962('0x3f')]({},_0x1789ad,_0x460368[_0xb962('0x41')]);var _0x48bdcd={'where':_0x1789ad[_0xb962('0x3c')]};return db['Schedule'][_0xb962('0x1e')](_0x48bdcd)[_0xb962('0x25')](function(_0x693732){_0x28aab1[_0xb962('0x1e')]=_0x693732;if(_0x460368[_0xb962('0x33')][_0xb962('0x42')]){_0x1789ad['include']=[{'all':!![]}];}return db[_0xb962('0x43')][_0xb962('0x44')](_0x1789ad);})['then'](function(_0x567501){_0x28aab1[_0xb962('0x45')]=_0x567501;return _0x28aab1;})[_0xb962('0x25')](respondWithFilteredResult(_0x19b803,_0x1789ad))[_0xb962('0x46')](handleError(_0x19b803,null));};exports[_0xb962('0x47')]=function(_0x22e051,_0x186eba){var _0x3883a3={'raw':![],'where':{'id':_0x22e051[_0xb962('0x48')]['id']}},_0x2b0084={};_0x2b0084[_0xb962('0x31')]=_[_0xb962('0x34')](db[_0xb962('0x43')][_0xb962('0x2d')]);_0x2b0084[_0xb962('0x33')]=_['keys'](_0x22e051['query']);_0x2b0084[_0xb962('0x35')]=_[_0xb962('0x36')](_0x2b0084[_0xb962('0x31')],_0x2b0084[_0xb962('0x33')]);_0x3883a3[_0xb962('0x37')]=_[_0xb962('0x36')](_0x2b0084['model'],qs[_0xb962('0x38')](_0x22e051[_0xb962('0x33')][_0xb962('0x38')]));_0x3883a3[_0xb962('0x37')]=_0x3883a3[_0xb962('0x37')][_0xb962('0x39')]?_0x3883a3[_0xb962('0x37')]:_0x2b0084[_0xb962('0x31')];if(_0x22e051[_0xb962('0x33')]['includeAll']){_0x3883a3[_0xb962('0x49')]=[{'all':!![]}];}_0x3883a3=_[_0xb962('0x3f')]({},_0x3883a3,_0x22e051[_0xb962('0x41')]);return db[_0xb962('0x43')]['find'](_0x3883a3)['then'](handleEntityNotFound(_0x186eba,null))[_0xb962('0x25')](respondWithResult(_0x186eba,null))[_0xb962('0x46')](handleError(_0x186eba,null));};exports[_0xb962('0x4a')]=function(_0x1603d2,_0x548031){return db[_0xb962('0x43')][_0xb962('0x4a')](_0x1603d2[_0xb962('0x4b')],{})[_0xb962('0x25')](function(_0x25947e){var _0xade0ce=_0x1603d2[_0xb962('0x4c')][_0xb962('0x26')]({'plain':!![]});if(!_0xade0ce)throw new Error(_0xb962('0x4d'));if(_0xade0ce[_0xb962('0x4e')]===_0xb962('0x4c')){var _0x147953=_0x25947e[_0xb962('0x26')]({'plain':!![]});var _0x2956d3=_0xb962('0x27');return db[_0xb962('0x4f')][_0xb962('0x50')]({'where':{'name':_0x2956d3,'userProfileId':_0xade0ce[_0xb962('0x51')]},'raw':!![]})['then'](function(_0x59da82){if(_0x59da82&&_0x59da82[_0xb962('0x52')]===0x0){return db[_0xb962('0x28')][_0xb962('0x4a')]({'name':_0x147953[_0xb962('0x2a')],'resourceId':_0x147953['id'],'type':_0x59da82[_0xb962('0x2a')],'sectionId':_0x59da82['id']},{})[_0xb962('0x25')](function(){return _0x25947e;});}else{return _0x25947e;}})[_0xb962('0x46')](function(_0xe389dc){logger[_0xb962('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe389dc);throw _0xe389dc;});}return _0x25947e;})['then'](respondWithResult(_0x548031,0xc9))[_0xb962('0x46')](handleError(_0x548031,null));};exports[_0xb962('0x24')]=function(_0x9a122f,_0x2865ac){if(_0x9a122f[_0xb962('0x4b')]['id']){delete _0x9a122f[_0xb962('0x4b')]['id'];}return db[_0xb962('0x43')][_0xb962('0x50')]({'where':{'id':_0x9a122f[_0xb962('0x48')]['id']}})[_0xb962('0x25')](handleEntityNotFound(_0x2865ac,null))[_0xb962('0x25')](saveUpdates(_0x9a122f[_0xb962('0x4b')],null))['then'](respondWithResult(_0x2865ac,null))[_0xb962('0x46')](handleError(_0x2865ac,null));};exports[_0xb962('0x53')]=function(_0x3cfa9c,_0x31a973){return db[_0xb962('0x43')][_0xb962('0x50')]({'where':{'id':_0x3cfa9c[_0xb962('0x48')]['id']}})[_0xb962('0x25')](handleEntityNotFound(_0x31a973,null))['then'](removeEntity(_0x31a973,null))[_0xb962('0x46')](handleError(_0x31a973,null));};exports[_0xb962('0x54')]=function(_0x59610a,_0x10bfe7,_0x3f0204){var _0x8c9e93=require(_0xb962('0x55'));return db[_0xb962('0x43')][_0xb962('0x50')]({'where':{'id':_0x59610a[_0xb962('0x48')]['id']},'raw':!![]})[_0xb962('0x25')](handleEntityNotFound(_0x10bfe7,null))[_0xb962('0x25')](function(){_0x8c9e93[_0xb962('0x54')](_0x59610a['params']['id']);})[_0xb962('0x25')](respondWithStatusCode(_0x10bfe7,null))[_0xb962('0x46')](handleError(_0x10bfe7,null));};
\ No newline at end of file
index d3a9d1e..40abafa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a28=['moment','request-promise','path','rimraf','../../config/environment','exports','lodash'];(function(_0x42a278,_0x31d5b7){var _0x38f992=function(_0x228608){while(--_0x228608){_0x42a278['push'](_0x42a278['shift']());}};_0x38f992(++_0x31d5b7);}(_0x3a28,0x1f0));var _0x83a2=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x3a28[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x83a2('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x83a2('0x1'));var BPromise=require('bluebird');var rp=require(_0x83a2('0x2'));var fs=require('fs');var path=require(_0x83a2('0x3'));var rimraf=require(_0x83a2('0x4'));var config=require(_0x83a2('0x5'));var attributes=require('./schedule.attributes');module[_0x83a2('0x6')]=function(_0x415bd7,_0x4c69d2){return _0x415bd7['define']('Schedule',attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x482b=['lodash','util','../../config/logger','api','request-promise','path','rimraf','./schedule.attributes','exports','Schedule','tools_schedules'];(function(_0x1fb6e2,_0x3a22ce){var _0x354690=function(_0x51f968){while(--_0x51f968){_0x1fb6e2['push'](_0x1fb6e2['shift']());}};_0x354690(++_0x3a22ce);}(_0x482b,0xb0));var _0xb482=function(_0x1c882c,_0x3940d7){_0x1c882c=_0x1c882c-0x0;var _0xafdc6d=_0x482b[_0x1c882c];return _0xafdc6d;};'use strict';var _=require(_0xb482('0x0'));var util=require(_0xb482('0x1'));var logger=require(_0xb482('0x2'))(_0xb482('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb482('0x4'));var fs=require('fs');var path=require(_0xb482('0x5'));var rimraf=require(_0xb482('0x6'));var config=require('../../config/environment');var attributes=require(_0xb482('0x7'));module[_0xb482('0x8')]=function(_0x231e9c,_0x52ae40){return _0x231e9c['define'](_0xb482('0x9'),attributes,{'tableName':_0xb482('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 323a68b..4b6865f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8392=['then','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x384c03,_0x31d8ba){var _0xad7640=function(_0x1c67c0){while(--_0x1c67c0){_0x384c03['push'](_0x384c03['shift']());}};_0xad7640(++_0x31d8ba);}(_0x8392,0x1ed));var _0x2839=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8392[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x2839('0x0'));var util=require(_0x2839('0x1'));var moment=require('moment');var BPromise=require(_0x2839('0x2'));var rs=require(_0x2839('0x3'));var fs=require('fs');var Redis=require(_0x2839('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2839('0x5'));var logger=require(_0x2839('0x6'))(_0x2839('0x7'));var config=require('../../config/environment');var jayson=require(_0x2839('0x8'));var client=jayson[_0x2839('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e46c7,_0x5a86fa,_0x50c7b9){return new BPromise(function(_0x4b96da,_0x339a50){return client[_0x2839('0xa')](_0x5e46c7,_0x50c7b9)[_0x2839('0xb')](function(_0x555d78){logger[_0x2839('0xc')](_0x2839('0xd'),_0x5a86fa,_0x2839('0xe'));logger['debug'](_0x2839('0xf'),_0x5a86fa,_0x2839('0xe'),JSON[_0x2839('0x10')](_0x555d78));if(_0x555d78[_0x2839('0x11')]){if(_0x555d78[_0x2839('0x11')][_0x2839('0x12')]===0x1f4){logger[_0x2839('0x11')](_0x2839('0xd'),_0x5a86fa,_0x555d78[_0x2839('0x11')][_0x2839('0x13')]);return _0x339a50(_0x555d78[_0x2839('0x11')][_0x2839('0x13')]);}logger[_0x2839('0x11')](_0x2839('0xd'),_0x5a86fa,_0x555d78['error'][_0x2839('0x13')]);return _0x4b96da(_0x555d78[_0x2839('0x11')][_0x2839('0x13')]);}else{logger[_0x2839('0xc')](_0x2839('0xd'),_0x5a86fa,'request\x20sent');_0x4b96da(_0x555d78[_0x2839('0x14')][_0x2839('0x13')]);}})['catch'](function(_0x586c9c){logger[_0x2839('0x11')](_0x2839('0xd'),_0x5a86fa,_0x586c9c);_0x339a50(_0x586c9c);});});}
\ No newline at end of file
+var _0xb7c6=['rpc','../../config/environment','jayson/promise','client','http','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger'];(function(_0x4cebdf,_0xaea813){var _0x386bdc=function(_0x536e41){while(--_0x536e41){_0x4cebdf['push'](_0x4cebdf['shift']());}};_0x386bdc(++_0xaea813);}(_0xb7c6,0x181));var _0x6b7c=function(_0x4af80f,_0x1645d3){_0x4af80f=_0x4af80f-0x0;var _0x3533a1=_0xb7c6[_0x4af80f];return _0x3533a1;};'use strict';var _=require(_0x6b7c('0x0'));var util=require(_0x6b7c('0x1'));var moment=require('moment');var BPromise=require(_0x6b7c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b7c('0x3'));var db=require(_0x6b7c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6b7c('0x5'))(_0x6b7c('0x6'));var config=require(_0x6b7c('0x7'));var jayson=require(_0x6b7c('0x8'));var client=jayson[_0x6b7c('0x9')][_0x6b7c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44de67,_0x5b0123,_0x5e1501){return new BPromise(function(_0x509dff,_0x1cd5ab){return client['request'](_0x44de67,_0x5e1501)[_0x6b7c('0xb')](function(_0x47f340){logger[_0x6b7c('0xc')](_0x6b7c('0xd'),_0x5b0123,_0x6b7c('0xe'));logger[_0x6b7c('0xf')](_0x6b7c('0x10'),_0x5b0123,_0x6b7c('0xe'),JSON[_0x6b7c('0x11')](_0x47f340));if(_0x47f340['error']){if(_0x47f340[_0x6b7c('0x12')][_0x6b7c('0x13')]===0x1f4){logger[_0x6b7c('0x12')]('Schedule,\x20%s,\x20%s',_0x5b0123,_0x47f340[_0x6b7c('0x12')][_0x6b7c('0x14')]);return _0x1cd5ab(_0x47f340[_0x6b7c('0x12')][_0x6b7c('0x14')]);}logger['error'](_0x6b7c('0xd'),_0x5b0123,_0x47f340[_0x6b7c('0x12')]['message']);return _0x509dff(_0x47f340[_0x6b7c('0x12')][_0x6b7c('0x14')]);}else{logger['info']('Schedule,\x20%s,\x20%s',_0x5b0123,'request\x20sent');_0x509dff(_0x47f340[_0x6b7c('0x15')][_0x6b7c('0x14')]);}})[_0x6b7c('0x16')](function(_0x1f09df){logger[_0x6b7c('0x12')](_0x6b7c('0xd'),_0x5b0123,_0x1f09df);_0x1cd5ab(_0x1f09df);});});}
\ No newline at end of file
index f20190c..34676ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b23=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','/:id/download','download','post','create','put','/:id','update','delete'];(function(_0xacd3d,_0x168242){var _0x15c3e5=function(_0x526614){while(--_0x526614){_0xacd3d['push'](_0xacd3d['shift']());}};_0x15c3e5(++_0x168242);}(_0x2b23,0x1e3));var _0x32b2=function(_0x493b05,_0x848e39){_0x493b05=_0x493b05-0x0;var _0x37c778=_0x2b23[_0x493b05];return _0x37c778;};'use strict';var multer=require(_0x32b2('0x0'));var util=require(_0x32b2('0x1'));var path=require(_0x32b2('0x2'));var timeout=require(_0x32b2('0x3'));var express=require(_0x32b2('0x4'));var router=express[_0x32b2('0x5')]();var fs_extra=require(_0x32b2('0x6'));var auth=require(_0x32b2('0x7'));var interaction=require(_0x32b2('0x8'));var config=require(_0x32b2('0x9'));var controller=require('./screenRecording.controller');router[_0x32b2('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32b2('0xa')]('/describe',auth[_0x32b2('0xb')](),controller['describe']);router[_0x32b2('0xa')]('/:id',auth[_0x32b2('0xb')](),controller[_0x32b2('0xc')]);router['get'](_0x32b2('0xd'),auth['isAuthenticated'](),controller[_0x32b2('0xe')]);router[_0x32b2('0xf')]('/',auth['isAuthenticated'](),controller[_0x32b2('0x10')]);router[_0x32b2('0x11')](_0x32b2('0x12'),auth['isAuthenticated'](),controller[_0x32b2('0x13')]);router[_0x32b2('0x14')](_0x32b2('0x12'),auth[_0x32b2('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc2ca=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','describe','/:id','isAuthenticated','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x46911a,_0x581070){var _0x37cb16=function(_0x219d99){while(--_0x219d99){_0x46911a['push'](_0x46911a['shift']());}};_0x37cb16(++_0x581070);}(_0xc2ca,0x18d));var _0xac2c=function(_0x3adc9f,_0x5d49d5){_0x3adc9f=_0x3adc9f-0x0;var _0x432a40=_0xc2ca[_0x3adc9f];return _0x432a40;};'use strict';var multer=require(_0xac2c('0x0'));var util=require(_0xac2c('0x1'));var path=require('path');var timeout=require(_0xac2c('0x2'));var express=require(_0xac2c('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xac2c('0x4'));var interaction=require(_0xac2c('0x5'));var config=require(_0xac2c('0x6'));var controller=require('./screenRecording.controller');router[_0xac2c('0x7')]('/',auth['isAuthenticated'](),controller[_0xac2c('0x8')]);router[_0xac2c('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xac2c('0x9')]);router['get'](_0xac2c('0xa'),auth[_0xac2c('0xb')](),controller['show']);router[_0xac2c('0x7')](_0xac2c('0xc'),auth[_0xac2c('0xb')](),controller[_0xac2c('0xd')]);router[_0xac2c('0xe')]('/',auth[_0xac2c('0xb')](),controller[_0xac2c('0xf')]);router[_0xac2c('0x10')]('/:id',auth[_0xac2c('0xb')](),controller[_0xac2c('0x11')]);router[_0xac2c('0x12')](_0xac2c('0xa'),auth['isAuthenticated'](),controller[_0xac2c('0x13')]);module[_0xac2c('0x14')]=router;
\ No newline at end of file
index fa64afb..8591e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c9=['DATE','toString','createdAt','MM-DD-YYYY\x20HH:mm','updatedAt','format','sequelize','moment','path','exports','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xf4c9,0x1aa));var _0x9f4c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xf4c9[_0x178e48];return _0x440d7e;};'use strict';var Sequelize=require(_0x9f4c('0x0'));var moment=require(_0x9f4c('0x1'));var path=require(_0x9f4c('0x2'));var config=require('../../config/environment');module[_0x9f4c('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x9f4c('0x4')](_0x9f4c('0x5'))?path[_0x9f4c('0x6')](this['getDataValue'](_0x9f4c('0x5'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x9f4c('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x5cf322){var _0x498795=_0x5cf322[_0x9f4c('0x8')](/\\/g,'/');this[_0x9f4c('0x9')](_0x9f4c('0x5'),_0x498795);}},'rating':{'type':Sequelize[_0x9f4c('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x9f4c('0xa')],'set':function(_0x37b693){this['setDataValue'](_0x9f4c('0xb'),moment()[_0x9f4c('0xc')](_0x37b693,'ms'));this[_0x9f4c('0x9')](_0x9f4c('0xd'),moment());this[_0x9f4c('0x9')](_0x9f4c('0xe'),_0x37b693);}},'startedAt':{'type':Sequelize[_0x9f4c('0xf')],'get':function(){return moment(this[_0x9f4c('0x4')]('startedAt'))['format']('MM-DD-YYYY\x20HH:mm')[_0x9f4c('0x10')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x9f4c('0xd')))['format']('MM-DD-YYYY\x20HH:mm')[_0x9f4c('0x10')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x9f4c('0x11')))['format'](_0x9f4c('0x12'))[_0x9f4c('0x10')]();}},'updatedAt':{'type':Sequelize[_0x9f4c('0xf')],'get':function(){return moment(this[_0x9f4c('0x4')](_0x9f4c('0x13')))[_0x9f4c('0x14')]('MM-DD-YYYY\x20HH:mm')[_0x9f4c('0x10')]();}}};
\ No newline at end of file
+var _0x751c=['INTEGER','startedAt','subtract','duration','format','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','updatedAt','sequelize','moment','path','exports','getDataValue','extname','value','STRING','setDataValue'];(function(_0x384076,_0x3412cf){var _0x11291f=function(_0x1e9ef6){while(--_0x1e9ef6){_0x384076['push'](_0x384076['shift']());}};_0x11291f(++_0x3412cf);}(_0x751c,0x69));var _0xc751=function(_0x131480,_0x3e0aca){_0x131480=_0x131480-0x0;var _0x443cef=_0x751c[_0x131480];return _0x443cef;};'use strict';var Sequelize=require(_0xc751('0x0'));var moment=require(_0xc751('0x1'));var path=require(_0xc751('0x2'));var config=require('../../config/environment');module[_0xc751('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xc751('0x4')]('value')?path[_0xc751('0x5')](this[_0xc751('0x4')](_0xc751('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xc751('0x7')]},'channel':{'type':Sequelize[_0xc751('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x12d079){var _0x2df8c6=_0x12d079['replace'](/\\/g,'/');this[_0xc751('0x8')](_0xc751('0x6'),_0x2df8c6);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xc751('0x9')],'set':function(_0xec967e){this[_0xc751('0x8')](_0xc751('0xa'),moment()[_0xc751('0xb')](_0xec967e,'ms'));this['setDataValue']('closedAt',moment());this['setDataValue'](_0xc751('0xc'),_0xec967e);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc751('0x4')]('startedAt'))[_0xc751('0xd')](_0xc751('0xe'))[_0xc751('0xf')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xc751('0x4')]('closedAt'))[_0xc751('0xd')]('MM-DD-YYYY\x20HH:mm')[_0xc751('0xf')]();}},'createdAt':{'type':Sequelize[_0xc751('0x10')],'get':function(){return moment(this[_0xc751('0x4')](_0xc751('0x11')))[_0xc751('0xd')]('MM-DD-YYYY\x20HH:mm')[_0xc751('0xf')]();}},'updatedAt':{'type':Sequelize[_0xc751('0x10')],'get':function(){return moment(this[_0xc751('0x4')](_0xc751('0x12')))[_0xc751('0xd')](_0xc751('0xe'))['toString']();}}};
\ No newline at end of file
index 20f7a0b..318ad8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['limit','count','set','Content-Range','save','then','destroy','error','stack','name','send','map','ScreenRecording','fieldName','type','key','model','differenceBy','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','update','duration','value','find','describe','download','../../components/encryptor','uniqueid','join','root','format','%s.cypher','existsSync','decryptFile','recording','server/files/screen_recordings','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','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'];(function(_0x438578,_0xeccb24){var _0x55f90b=function(_0x2ef1fd){while(--_0x2ef1fd){_0x438578['push'](_0x438578['shift']());}};_0x55f90b(++_0xeccb24);}(_0x9a19,0x114));var _0x99a1=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0x9a19[_0x31ced5];return _0x10d9e5;};'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(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0x3c813,_0x491341){return function(_0x4fe7f7){if(!_0x4fe7f7){_0x3c813[_0x99a1('0x19')](0x194);}return _0x4fe7f7;};}function handleError(_0x5dabd9,_0x5dc733){_0x5dc733=_0x5dc733||0x1f4;return function(_0xafea84){logger[_0x99a1('0x25')](_0xafea84[_0x99a1('0x26')]);if(_0xafea84[_0x99a1('0x27')]){delete _0xafea84[_0x99a1('0x27')];}_0x5dabd9[_0x99a1('0x1a')](_0x5dc733)[_0x99a1('0x28')](_0xafea84);};}exports['index']=function(_0xf41b0d,_0x499eef){var _0x255197={},_0x1137f2={},_0x26fbae={'count':0x0,'rows':[]};var _0x523668=_[_0x99a1('0x29')](db[_0x99a1('0x2a')]['rawAttributes'],function(_0x37514e){return{'name':_0x37514e[_0x99a1('0x2b')],'type':_0x37514e[_0x99a1('0x2c')][_0x99a1('0x2d')]};});_0x1137f2[_0x99a1('0x2e')]=_[_0x99a1('0x2f')](_[_0x99a1('0x29')](_0x523668,_0x99a1('0x27')),['format']);_0x1137f2['query']=_[_0x99a1('0x30')](_0xf41b0d['query']);_0x1137f2[_0x99a1('0x31')]=_[_0x99a1('0x32')](_0x1137f2['model'],_0x1137f2[_0x99a1('0x33')]);_0x255197[_0x99a1('0x34')]=_[_0x99a1('0x32')](_0x1137f2[_0x99a1('0x2e')],qs[_0x99a1('0x35')](_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x35')]));_0x255197[_0x99a1('0x34')]=_0x255197[_0x99a1('0x34')][_0x99a1('0x36')]?_0x255197[_0x99a1('0x34')]:_0x1137f2[_0x99a1('0x2e')];if(!_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x37')]('nolimit')){_0x255197['limit']=qs[_0x99a1('0x1e')](_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x1e')]);_0x255197[_0x99a1('0x1c')]=qs[_0x99a1('0x1c')](_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x1c')]);}_0x255197['order']=qs[_0x99a1('0x38')](_0xf41b0d[_0x99a1('0x33')]['sort']);_0x255197[_0x99a1('0x39')]=qs[_0x99a1('0x31')](_[_0x99a1('0x3a')](_0xf41b0d[_0x99a1('0x33')],_0x1137f2[_0x99a1('0x31')]),_0x523668);if(_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x3b')]){_0x255197[_0x99a1('0x39')]=_[_0x99a1('0x3c')](_0x255197[_0x99a1('0x39')],{'$or':_[_0x99a1('0x29')](_0x523668,function(_0x152969){if(_0x152969[_0x99a1('0x2c')]!=='VIRTUAL'){var _0x5553e4={};_0x5553e4[_0x152969['name']]={'$like':'%'+_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x3b')]+'%'};return _0x5553e4;}})});}_0x255197=_[_0x99a1('0x3c')]({},_0x255197,_0xf41b0d[_0x99a1('0x3d')]);var _0x40613a={'where':_0x255197['where']};return db[_0x99a1('0x2a')][_0x99a1('0x1f')](_0x40613a)[_0x99a1('0x23')](function(_0x51efe5){_0x26fbae['count']=_0x51efe5;if(_0xf41b0d[_0x99a1('0x33')][_0x99a1('0x3e')]){_0x255197[_0x99a1('0x3f')]=[{'all':!![]}];}return db['ScreenRecording'][_0x99a1('0x40')](_0x255197);})[_0x99a1('0x23')](function(_0x1b5d2d){_0x26fbae[_0x99a1('0x41')]=_0x1b5d2d;return _0x26fbae;})[_0x99a1('0x23')](respondWithFilteredResult(_0x499eef,_0x255197))[_0x99a1('0x42')](handleError(_0x499eef,null));};exports[_0x99a1('0x43')]=function(_0x29d0a0,_0x1c4ce4){var _0x2be9e3={'raw':![],'where':{'id':_0x29d0a0[_0x99a1('0x44')]['id']}},_0x4b40e1={};_0x4b40e1[_0x99a1('0x2e')]=_[_0x99a1('0x30')](db['ScreenRecording'][_0x99a1('0x45')]);_0x4b40e1['query']=_[_0x99a1('0x30')](_0x29d0a0[_0x99a1('0x33')]);_0x4b40e1[_0x99a1('0x31')]=_[_0x99a1('0x32')](_0x4b40e1[_0x99a1('0x2e')],_0x4b40e1[_0x99a1('0x33')]);_0x2be9e3['attributes']=_[_0x99a1('0x32')](_0x4b40e1['model'],qs[_0x99a1('0x35')](_0x29d0a0[_0x99a1('0x33')][_0x99a1('0x35')]));_0x2be9e3[_0x99a1('0x34')]=_0x2be9e3[_0x99a1('0x34')][_0x99a1('0x36')]?_0x2be9e3[_0x99a1('0x34')]:_0x4b40e1[_0x99a1('0x2e')];if(_0x29d0a0[_0x99a1('0x33')][_0x99a1('0x3e')]){_0x2be9e3[_0x99a1('0x3f')]=[{'all':!![]}];}_0x2be9e3=_['merge']({},_0x2be9e3,_0x29d0a0[_0x99a1('0x3d')]);return db[_0x99a1('0x2a')]['find'](_0x2be9e3)[_0x99a1('0x23')](handleEntityNotFound(_0x1c4ce4,null))[_0x99a1('0x23')](respondWithResult(_0x1c4ce4,null))[_0x99a1('0x42')](handleError(_0x1c4ce4,null));};exports[_0x99a1('0x46')]=function(_0x113dd9,_0x254c41){return db[_0x99a1('0x2a')]['create'](_0x113dd9[_0x99a1('0x47')],{})['then'](respondWithResult(_0x254c41,0xc9))[_0x99a1('0x42')](handleError(_0x254c41,null));};exports[_0x99a1('0x48')]=function(_0x566442,_0x5433f2){if(_0x566442[_0x99a1('0x47')]['id']){delete _0x566442[_0x99a1('0x47')]['id'];}delete _0x566442[_0x99a1('0x47')][_0x99a1('0x49')];delete _0x566442[_0x99a1('0x47')]['createdAt'];delete _0x566442['body']['closedAt'];delete _0x566442[_0x99a1('0x47')][_0x99a1('0x4a')];return db[_0x99a1('0x2a')][_0x99a1('0x4b')]({'where':{'id':_0x566442[_0x99a1('0x44')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x5433f2,null))[_0x99a1('0x23')](saveUpdates(_0x566442['body'],null))[_0x99a1('0x23')](respondWithResult(_0x5433f2,null))[_0x99a1('0x42')](handleError(_0x5433f2,null));};exports[_0x99a1('0x4c')]=function(_0x5e877f,_0x81e218){return db['ScreenRecording']['describe']()[_0x99a1('0x23')](respondWithResult(_0x81e218,null))[_0x99a1('0x42')](handleError(_0x81e218,null));};exports[_0x99a1('0x4d')]=function(_0x175f6d,_0x11632d,_0xf8208a){var _0x240d2e=require(_0x99a1('0x4e'));var _0x16641e=![];var _0x53e9eb={};if(_0x175f6d[_0x99a1('0x33')]['type']&&_0x175f6d[_0x99a1('0x33')][_0x99a1('0x2c')]==='uniqueid'){_0x53e9eb[_0x99a1('0x4f')]=_0x175f6d[_0x99a1('0x44')]['id'];}else{_0x53e9eb['id']=_0x175f6d[_0x99a1('0x44')]['id'];}return db[_0x99a1('0x2a')][_0x99a1('0x4b')]({'where':_0x53e9eb,'attributes':['id',_0x99a1('0x4a')],'raw':!![]})[_0x99a1('0x23')](handleEntityNotFound(_0x11632d,null))[_0x99a1('0x23')](function(_0x28ba8f){if(_0x28ba8f){var _0x1c2926=path[_0x99a1('0x50')](config[_0x99a1('0x51')],'server/files/screen_recordings',_0x28ba8f['value']);var _0x2e3e08=util[_0x99a1('0x52')](_0x99a1('0x53'),_0x1c2926);if(fs[_0x99a1('0x54')](_0x2e3e08)){_0x16641e=!![];return _0x240d2e[_0x99a1('0x55')](_0x2e3e08,_0x1c2926,config['secrets'][_0x99a1('0x56')])[_0x99a1('0x23')](function(){return _0x28ba8f;});}return _0x28ba8f;}})['then'](function(_0x6107cd){if(_0x6107cd){var _0x95f20a=path[_0x99a1('0x50')](config[_0x99a1('0x51')],_0x99a1('0x57'),_0x6107cd['value']);if(!fs[_0x99a1('0x54')](_0x95f20a)){throw new db[(_0x99a1('0x58'))][(_0x99a1('0x59'))](_0x99a1('0x5a'));}if(_0x6107cd[_0x99a1('0x5b')]){return _0x11632d[_0x99a1('0x4d')](_0x95f20a,_0x6107cd['filename']+path[_0x99a1('0x5c')](_0x95f20a),function(){if(_0x16641e){fs[_0x99a1('0x5d')](_0x95f20a);}});}else{return _0x11632d['download'](_0x95f20a,function(_0x33feb9){if(_0x16641e){fs[_0x99a1('0x5d')](_0x95f20a);}});}}})[_0x99a1('0x42')](function(_0xb126dd){if(_0xb126dd[_0x99a1('0x5e')]==='ScreenRecording\x20not\x20found'){_0x11632d[_0x99a1('0x1a')](0x194)['send']('Not\x20found');}else{return handleError(_0x11632d,null);}});};exports['destroy']=function(_0x38ce3c,_0x3f7c16){return db['ScreenRecording']['find']({'where':{'id':_0x38ce3c[_0x99a1('0x44')]['id']}})['then'](function(_0x21a5f6){if(_[_0x99a1('0x5f')](_0x21a5f6)){throw new ReferenceError(_0x99a1('0x60'));}return _0x21a5f6;})[_0x99a1('0x23')](function(_0x56d6cf){var _0x18f74b=path[_0x99a1('0x50')](config[_0x99a1('0x51')],'server/files/screen_recordings',_0x56d6cf[_0x99a1('0x4a')]);logger['info'](_0x99a1('0x61'),_0x18f74b);if(!_[_0x99a1('0x5f')](_0x56d6cf[_0x99a1('0x4a')])&&fs[_0x99a1('0x54')](_0x18f74b)){logger[_0x99a1('0x62')]('File:\x20\x22'+_0x18f74b+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x18f74b);}_0x18f74b=_0x18f74b+_0x99a1('0x63');if(!_[_0x99a1('0x5f')](_0x56d6cf['value'])&&fs['existsSync'](_0x18f74b)){logger[_0x99a1('0x62')](_0x99a1('0x64')+_0x18f74b+_0x99a1('0x65'));fs['unlinkSync'](_0x18f74b);}return _0x56d6cf;})['then'](function(_0x2b8df8){if(!_0x2b8df8)throw new InternalError();return _0x2b8df8['destroy']();})[_0x99a1('0x23')](function(){_0x3f7c16[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();})['catch'](handleError(_0x3f7c16,null));};
\ No newline at end of file
+var _0x207c=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','duration','createdAt','value','describe','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb'];(function(_0xc94cba,_0x8edc39){var _0x470f99=function(_0x2533e9){while(--_0x2533e9){_0xc94cba['push'](_0xc94cba['shift']());}};_0x470f99(++_0x8edc39);}(_0x207c,0x1e8));var _0xc207=function(_0x4cad64,_0x13a1d1){_0x4cad64=_0x4cad64-0x0;var _0x1ebb2d=_0x207c[_0x4cad64];return _0x1ebb2d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc207('0x0'));var zipdir=require(_0xc207('0x1'));var jsonpatch=require(_0xc207('0x2'));var rp=require(_0xc207('0x3'));var moment=require(_0xc207('0x4'));var BPromise=require(_0xc207('0x5'));var Mustache=require(_0xc207('0x6'));var util=require('util');var path=require(_0xc207('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc207('0x8'));var _=require(_0xc207('0x9'));var squel=require(_0xc207('0xa'));var crypto=require('crypto');var jsforce=require(_0xc207('0xb'));var deskjs=require(_0xc207('0xc'));var toCsv=require(_0xc207('0xd'));var querystring=require('querystring');var Papa=require(_0xc207('0xe'));var Redis=require(_0xc207('0xf'));var authService=require(_0xc207('0x10'));var qs=require(_0xc207('0x11'));var as=require(_0xc207('0x12'));var hardwareService=require(_0xc207('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc207('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc207('0x15'))['db'];function respondWithStatusCode(_0x2782ce,_0x59d401){_0x59d401=_0x59d401||0xcc;return function(_0x3e1108){if(_0x3e1108){return _0x2782ce[_0xc207('0x16')](_0x59d401);}return _0x2782ce[_0xc207('0x17')](_0x59d401)[_0xc207('0x18')]();};}function respondWithResult(_0xe993a0,_0x51e967){_0x51e967=_0x51e967||0xc8;return function(_0xc62672){if(_0xc62672){return _0xe993a0[_0xc207('0x17')](_0x51e967)[_0xc207('0x19')](_0xc62672);}};}function respondWithFilteredResult(_0x4031ad,_0x4ef6c4){return function(_0x564cef){if(_0x564cef){var _0x554e5c=typeof _0x4ef6c4[_0xc207('0x1a')]===_0xc207('0x1b')&&typeof _0x4ef6c4[_0xc207('0x1c')]===_0xc207('0x1b');var _0x4b8f44=_0x564cef[_0xc207('0x1d')];var _0x282595=_0x554e5c?0x0:_0x4ef6c4[_0xc207('0x1a')];var _0x5f288e=_0x554e5c?_0x564cef[_0xc207('0x1d')]:_0x4ef6c4['offset']+_0x4ef6c4[_0xc207('0x1c')];var _0x33ddb1;if(_0x5f288e>=_0x4b8f44){_0x5f288e=_0x4b8f44;_0x33ddb1=0xc8;}else{_0x33ddb1=0xce;}_0x4031ad[_0xc207('0x17')](_0x33ddb1);return _0x4031ad[_0xc207('0x1e')](_0xc207('0x1f'),_0x282595+'-'+_0x5f288e+'/'+_0x4b8f44)[_0xc207('0x19')](_0x564cef);}return null;};}function patchUpdates(_0x35c0b0){return function(_0x464dea){try{jsonpatch[_0xc207('0x20')](_0x464dea,_0x35c0b0,!![]);}catch(_0x2bd2eb){return BPromise[_0xc207('0x21')](_0x2bd2eb);}return _0x464dea[_0xc207('0x22')]();};}function saveUpdates(_0x40de25,_0x4b52a7){return function(_0x163b36){if(_0x163b36){return _0x163b36['update'](_0x40de25)[_0xc207('0x23')](function(_0x3ac142){return _0x3ac142;});}return null;};}function removeEntity(_0x1eabe8,_0x83253f){return function(_0x3539f4){if(_0x3539f4){return _0x3539f4[_0xc207('0x24')]()[_0xc207('0x23')](function(){_0x1eabe8[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();});}};}function handleEntityNotFound(_0x2385f7,_0x25c91e){return function(_0x27df03){if(!_0x27df03){_0x2385f7[_0xc207('0x16')](0x194);}return _0x27df03;};}function handleError(_0x138970,_0x1445d3){_0x1445d3=_0x1445d3||0x1f4;return function(_0x56a066){logger[_0xc207('0x25')](_0x56a066['stack']);if(_0x56a066['name']){delete _0x56a066[_0xc207('0x26')];}_0x138970[_0xc207('0x17')](_0x1445d3)[_0xc207('0x27')](_0x56a066);};}exports[_0xc207('0x28')]=function(_0x6a653d,_0x478af7){var _0xe5e848={},_0x463ac8={},_0x6223ef={'count':0x0,'rows':[]};var _0x1bec3f=_[_0xc207('0x29')](db[_0xc207('0x2a')][_0xc207('0x2b')],function(_0x27bc72){return{'name':_0x27bc72[_0xc207('0x2c')],'type':_0x27bc72[_0xc207('0x2d')][_0xc207('0x2e')]};});_0x463ac8[_0xc207('0x2f')]=_[_0xc207('0x30')](_['map'](_0x1bec3f,_0xc207('0x26')),[_0xc207('0x31')]);_0x463ac8[_0xc207('0x32')]=_[_0xc207('0x33')](_0x6a653d[_0xc207('0x32')]);_0x463ac8[_0xc207('0x34')]=_['intersection'](_0x463ac8[_0xc207('0x2f')],_0x463ac8[_0xc207('0x32')]);_0xe5e848[_0xc207('0x35')]=_[_0xc207('0x36')](_0x463ac8['model'],qs[_0xc207('0x37')](_0x6a653d[_0xc207('0x32')][_0xc207('0x37')]));_0xe5e848[_0xc207('0x35')]=_0xe5e848[_0xc207('0x35')][_0xc207('0x38')]?_0xe5e848[_0xc207('0x35')]:_0x463ac8[_0xc207('0x2f')];if(!_0x6a653d[_0xc207('0x32')]['hasOwnProperty']('nolimit')){_0xe5e848[_0xc207('0x1c')]=qs[_0xc207('0x1c')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1c')]);_0xe5e848['offset']=qs[_0xc207('0x1a')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1a')]);}_0xe5e848[_0xc207('0x39')]=qs[_0xc207('0x3a')](_0x6a653d['query'][_0xc207('0x3a')]);_0xe5e848[_0xc207('0x3b')]=qs['filters'](_[_0xc207('0x3c')](_0x6a653d['query'],_0x463ac8[_0xc207('0x34')]),_0x1bec3f);if(_0x6a653d[_0xc207('0x32')]['filter']){_0xe5e848[_0xc207('0x3b')]=_[_0xc207('0x3d')](_0xe5e848[_0xc207('0x3b')],{'$or':_['map'](_0x1bec3f,function(_0x5b3041){if(_0x5b3041[_0xc207('0x2d')]!==_0xc207('0x3e')){var _0x41d66c={};_0x41d66c[_0x5b3041[_0xc207('0x26')]]={'$like':'%'+_0x6a653d['query'][_0xc207('0x3f')]+'%'};return _0x41d66c;}})});}_0xe5e848=_['merge']({},_0xe5e848,_0x6a653d['options']);var _0x4c10ed={'where':_0xe5e848['where']};return db[_0xc207('0x2a')][_0xc207('0x1d')](_0x4c10ed)[_0xc207('0x23')](function(_0x487f98){_0x6223ef[_0xc207('0x1d')]=_0x487f98;if(_0x6a653d[_0xc207('0x32')][_0xc207('0x40')]){_0xe5e848[_0xc207('0x41')]=[{'all':!![]}];}return db['ScreenRecording'][_0xc207('0x42')](_0xe5e848);})[_0xc207('0x23')](function(_0x123a46){_0x6223ef[_0xc207('0x43')]=_0x123a46;return _0x6223ef;})[_0xc207('0x23')](respondWithFilteredResult(_0x478af7,_0xe5e848))['catch'](handleError(_0x478af7,null));};exports[_0xc207('0x44')]=function(_0x19a67d,_0x3a935a){var _0x471a85={'raw':![],'where':{'id':_0x19a67d[_0xc207('0x45')]['id']}},_0x153490={};_0x153490[_0xc207('0x2f')]=_[_0xc207('0x33')](db[_0xc207('0x2a')]['rawAttributes']);_0x153490[_0xc207('0x32')]=_[_0xc207('0x33')](_0x19a67d['query']);_0x153490[_0xc207('0x34')]=_[_0xc207('0x36')](_0x153490[_0xc207('0x2f')],_0x153490[_0xc207('0x32')]);_0x471a85[_0xc207('0x35')]=_['intersection'](_0x153490[_0xc207('0x2f')],qs[_0xc207('0x37')](_0x19a67d[_0xc207('0x32')]['fields']));_0x471a85[_0xc207('0x35')]=_0x471a85[_0xc207('0x35')][_0xc207('0x38')]?_0x471a85[_0xc207('0x35')]:_0x153490['model'];if(_0x19a67d['query'][_0xc207('0x40')]){_0x471a85[_0xc207('0x41')]=[{'all':!![]}];}_0x471a85=_[_0xc207('0x3d')]({},_0x471a85,_0x19a67d[_0xc207('0x46')]);return db[_0xc207('0x2a')][_0xc207('0x47')](_0x471a85)[_0xc207('0x23')](handleEntityNotFound(_0x3a935a,null))[_0xc207('0x23')](respondWithResult(_0x3a935a,null))[_0xc207('0x48')](handleError(_0x3a935a,null));};exports[_0xc207('0x49')]=function(_0x2afcd1,_0x2fda4f){return db['ScreenRecording']['create'](_0x2afcd1[_0xc207('0x4a')],{})[_0xc207('0x23')](respondWithResult(_0x2fda4f,0xc9))[_0xc207('0x48')](handleError(_0x2fda4f,null));};exports['update']=function(_0x2b89e0,_0x3f712d){if(_0x2b89e0[_0xc207('0x4a')]['id']){delete _0x2b89e0[_0xc207('0x4a')]['id'];}delete _0x2b89e0['body'][_0xc207('0x4b')];delete _0x2b89e0['body'][_0xc207('0x4c')];delete _0x2b89e0['body']['closedAt'];delete _0x2b89e0[_0xc207('0x4a')][_0xc207('0x4d')];return db['ScreenRecording']['find']({'where':{'id':_0x2b89e0['params']['id']}})[_0xc207('0x23')](handleEntityNotFound(_0x3f712d,null))[_0xc207('0x23')](saveUpdates(_0x2b89e0[_0xc207('0x4a')],null))[_0xc207('0x23')](respondWithResult(_0x3f712d,null))[_0xc207('0x48')](handleError(_0x3f712d,null));};exports[_0xc207('0x4e')]=function(_0x3dc457,_0x1dfdee){return db['ScreenRecording'][_0xc207('0x4e')]()[_0xc207('0x23')](respondWithResult(_0x1dfdee,null))['catch'](handleError(_0x1dfdee,null));};exports['download']=function(_0x362001,_0x47c630,_0x49a78b){var _0x2634d6=require(_0xc207('0x4f'));var _0x356c8c=![];var _0x3b2448={};if(_0x362001[_0xc207('0x32')][_0xc207('0x2d')]&&_0x362001[_0xc207('0x32')][_0xc207('0x2d')]===_0xc207('0x50')){_0x3b2448[_0xc207('0x50')]=_0x362001[_0xc207('0x45')]['id'];}else{_0x3b2448['id']=_0x362001['params']['id'];}return db['ScreenRecording'][_0xc207('0x47')]({'where':_0x3b2448,'attributes':['id',_0xc207('0x4d')],'raw':!![]})[_0xc207('0x23')](handleEntityNotFound(_0x47c630,null))[_0xc207('0x23')](function(_0xaff7a0){if(_0xaff7a0){var _0x21c12b=path[_0xc207('0x51')](config[_0xc207('0x52')],_0xc207('0x53'),_0xaff7a0['value']);var _0x1cc4e3=util[_0xc207('0x31')](_0xc207('0x54'),_0x21c12b);if(fs[_0xc207('0x55')](_0x1cc4e3)){_0x356c8c=!![];return _0x2634d6['decryptFile'](_0x1cc4e3,_0x21c12b,config[_0xc207('0x56')][_0xc207('0x57')])[_0xc207('0x23')](function(){return _0xaff7a0;});}return _0xaff7a0;}})[_0xc207('0x23')](function(_0x464263){if(_0x464263){var _0x45ad58=path[_0xc207('0x51')](config['root'],_0xc207('0x53'),_0x464263[_0xc207('0x4d')]);if(!fs[_0xc207('0x55')](_0x45ad58)){throw new db[(_0xc207('0x58'))]['ValidationError'](_0xc207('0x59'));}if(_0x464263['filename']){return _0x47c630['download'](_0x45ad58,_0x464263[_0xc207('0x5a')]+path[_0xc207('0x5b')](_0x45ad58),function(){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}else{return _0x47c630[_0xc207('0x5d')](_0x45ad58,function(_0x441d5f){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}}})[_0xc207('0x48')](function(_0x33c372){if(_0x33c372[_0xc207('0x5e')]===_0xc207('0x59')){_0x47c630[_0xc207('0x17')](0x194)[_0xc207('0x27')](_0xc207('0x5f'));}else{return handleError(_0x47c630,null);}});};exports[_0xc207('0x24')]=function(_0x282ae5,_0x501bca){return db[_0xc207('0x2a')]['find']({'where':{'id':_0x282ae5[_0xc207('0x45')]['id']}})[_0xc207('0x23')](function(_0x2ade23){if(_['isNil'](_0x2ade23)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2ade23;})[_0xc207('0x23')](function(_0x3ac0dd){var _0x2f18a2=path['join'](config[_0xc207('0x52')],_0xc207('0x53'),_0x3ac0dd[_0xc207('0x4d')]);logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x2f18a2);if(!_[_0xc207('0x60')](_0x3ac0dd['value'])&&fs[_0xc207('0x55')](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}_0x2f18a2=_0x2f18a2+_0xc207('0x65');if(!_[_0xc207('0x60')](_0x3ac0dd[_0xc207('0x4d')])&&fs['existsSync'](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}return _0x3ac0dd;})[_0xc207('0x23')](function(_0x14050a){if(!_0x14050a)throw new InternalError();return _0x14050a[_0xc207('0x24')]();})[_0xc207('0x23')](function(){_0x501bca[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();})[_0xc207('0x48')](handleError(_0x501bca,null));};
\ No newline at end of file
index 6fb4e31..1eb7f08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0422=['define','screen_recordings','interactionid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./screenRecording.attributes','exports'];(function(_0xcd3205,_0x2c5d7d){var _0x4a86a0=function(_0x53f8d8){while(--_0x53f8d8){_0xcd3205['push'](_0xcd3205['shift']());}};_0x4a86a0(++_0x2c5d7d);}(_0x0422,0xe3));var _0x2042=function(_0x2a1b33,_0x409f50){_0x2a1b33=_0x2a1b33-0x0;var _0x4c50e7=_0x0422[_0x2a1b33];return _0x4c50e7;};'use strict';var _=require(_0x2042('0x0'));var util=require(_0x2042('0x1'));var logger=require(_0x2042('0x2'))(_0x2042('0x3'));var moment=require(_0x2042('0x4'));var BPromise=require(_0x2042('0x5'));var rp=require(_0x2042('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2042('0x7'));var config=require(_0x2042('0x8'));var attributes=require(_0x2042('0x9'));module[_0x2042('0xa')]=function(_0x2b7663,_0x1d691d){return _0x2b7663[_0x2042('0xb')]('ScreenRecording',attributes,{'tableName':_0x2042('0xc'),'paranoid':![],'indexes':[{'name':_0x2042('0xd'),'fields':[_0x2042('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a76=['interactionid','api','moment','bluebird','path','rimraf','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings'];(function(_0x3cca1d,_0x20d81a){var _0x60adf3=function(_0x23c8ad){while(--_0x23c8ad){_0x3cca1d['push'](_0x3cca1d['shift']());}};_0x60adf3(++_0x20d81a);}(_0x4a76,0x7a));var _0x64a7=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x4a76[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x64a7('0x0'));var moment=require(_0x64a7('0x1'));var BPromise=require(_0x64a7('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x64a7('0x3'));var rimraf=require(_0x64a7('0x4'));var config=require('../../config/environment');var attributes=require(_0x64a7('0x5'));module[_0x64a7('0x6')]=function(_0xf2e82,_0x4b0233){return _0xf2e82[_0x64a7('0x7')](_0x64a7('0x8'),attributes,{'tableName':_0x64a7('0x9'),'paranoid':![],'indexes':[{'name':_0x64a7('0xa'),'fields':[_0x64a7('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 9667584..d0f6d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd52=['http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xcd52,0xdc));var _0x2cd5=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xcd52[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require('lodash');var util=require(_0x2cd5('0x0'));var moment=require(_0x2cd5('0x1'));var BPromise=require(_0x2cd5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2cd5('0x3'));var db=require(_0x2cd5('0x4'))['db'];var utils=require(_0x2cd5('0x5'));var logger=require(_0x2cd5('0x6'))(_0x2cd5('0x7'));var config=require(_0x2cd5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2cd5('0x9')][_0x2cd5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x73420c,_0xd55a8f,_0x2dfef2){return new BPromise(function(_0x57d251,_0x23291d){return client[_0x2cd5('0xb')](_0x73420c,_0x2dfef2)[_0x2cd5('0xc')](function(_0x11c0cc){logger[_0x2cd5('0xd')](_0x2cd5('0xe'),_0xd55a8f,_0x2cd5('0xf'));logger[_0x2cd5('0x10')](_0x2cd5('0x11'),_0xd55a8f,'request\x20sent',JSON['stringify'](_0x11c0cc));if(_0x11c0cc['error']){if(_0x11c0cc[_0x2cd5('0x12')][_0x2cd5('0x13')]===0x1f4){logger[_0x2cd5('0x12')]('ScreenRecording,\x20%s,\x20%s',_0xd55a8f,_0x11c0cc[_0x2cd5('0x12')][_0x2cd5('0x14')]);return _0x23291d(_0x11c0cc[_0x2cd5('0x12')][_0x2cd5('0x14')]);}logger[_0x2cd5('0x12')](_0x2cd5('0xe'),_0xd55a8f,_0x11c0cc['error'][_0x2cd5('0x14')]);return _0x57d251(_0x11c0cc[_0x2cd5('0x12')]['message']);}else{logger['info'](_0x2cd5('0xe'),_0xd55a8f,'request\x20sent');_0x57d251(_0x11c0cc[_0x2cd5('0x15')][_0x2cd5('0x14')]);}})[_0x2cd5('0x16')](function(_0x180cb6){logger[_0x2cd5('0x12')](_0x2cd5('0xe'),_0xd55a8f,_0x180cb6);_0x23291d(_0x180cb6);});});}
\ No newline at end of file
+var _0x2e46=['error','ScreenRecording,\x20%s,\x20%s','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','request','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x8bf471,_0x2e9da0){var _0x3d93d7=function(_0x14b46f){while(--_0x14b46f){_0x8bf471['push'](_0x8bf471['shift']());}};_0x3d93d7(++_0x2e9da0);}(_0x2e46,0x17a));var _0x62e4=function(_0x3ebaf0,_0x2e47af){_0x3ebaf0=_0x3ebaf0-0x0;var _0x4abc4f=_0x2e46[_0x3ebaf0];return _0x4abc4f;};'use strict';var _=require(_0x62e4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x62e4('0x1'));var rs=require(_0x62e4('0x2'));var fs=require('fs');var Redis=require(_0x62e4('0x3'));var db=require(_0x62e4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x62e4('0x5'));var config=require('../../config/environment');var jayson=require(_0x62e4('0x6'));var client=jayson[_0x62e4('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfa8c55,_0x405dfc,_0x171d2c){return new BPromise(function(_0x569fc1,_0x44b3b0){return client[_0x62e4('0x8')](_0xfa8c55,_0x171d2c)['then'](function(_0x57deb6){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x405dfc,_0x62e4('0x9'));logger[_0x62e4('0xa')](_0x62e4('0xb'),_0x405dfc,_0x62e4('0x9'),JSON[_0x62e4('0xc')](_0x57deb6));if(_0x57deb6[_0x62e4('0xd')]){if(_0x57deb6['error']['code']===0x1f4){logger['error'](_0x62e4('0xe'),_0x405dfc,_0x57deb6[_0x62e4('0xd')][_0x62e4('0xf')]);return _0x44b3b0(_0x57deb6['error'][_0x62e4('0xf')]);}logger['error'](_0x62e4('0xe'),_0x405dfc,_0x57deb6[_0x62e4('0xd')]['message']);return _0x569fc1(_0x57deb6[_0x62e4('0xd')]['message']);}else{logger['info'](_0x62e4('0xe'),_0x405dfc,_0x62e4('0x9'));_0x569fc1(_0x57deb6['result'][_0x62e4('0xf')]);}})[_0x62e4('0x10')](function(_0x1b03b1){logger[_0x62e4('0xd')](_0x62e4('0xe'),_0x405dfc,_0x1b03b1);_0x44b3b0(_0x1b03b1);});});}
\ No newline at end of file
index 915edf8..d5175e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a02=['../../config/environment','./setting.controller','get','isAuthenticated','index','getDate','/:id','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','server/files/images/logos/','%s%s','logo','extname','originalname','post','single','addLogo','format','logologin','/:id/logo_login','file','addLogoLogin','root','addPreferred','favicon','addFavicon','put','update','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x5b991d,_0x43499d){var _0x3d1066=function(_0x9b26bc){while(--_0x9b26bc){_0x5b991d['push'](_0x5b991d['shift']());}};_0x3d1066(++_0x43499d);}(_0x0a02,0x19e));var _0x20a0=function(_0x4206f5,_0x21f338){_0x4206f5=_0x4206f5-0x0;var _0xa29cf3=_0x0a02[_0x4206f5];return _0xa29cf3;};'use strict';var multer=require(_0x20a0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x20a0('0x1'));var express=require(_0x20a0('0x2'));var router=express[_0x20a0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x20a0('0x4'));var interaction=require(_0x20a0('0x5'));var config=require(_0x20a0('0x6'));var controller=require(_0x20a0('0x7'));router[_0x20a0('0x8')]('/',auth[_0x20a0('0x9')](),controller[_0x20a0('0xa')]);router[_0x20a0('0x8')]('/now',controller[_0x20a0('0xb')]);router[_0x20a0('0x8')](_0x20a0('0xc'),controller['show']);router['get']('/:id/logo',controller['getLogo']);router['get']('/:id/logo_login',controller[_0x20a0('0xd')]);router[_0x20a0('0x8')](_0x20a0('0xe'),controller[_0x20a0('0xf')]);router[_0x20a0('0x8')](_0x20a0('0x10'),controller[_0x20a0('0x11')]);router['get'](_0x20a0('0x12'),controller[_0x20a0('0x13')]);var upload=multer({'storage':multer[_0x20a0('0x14')]({'destination':function(_0x956f6d,_0xf79518,_0x5e1c0f){_0x5e1c0f(null,path[_0x20a0('0x15')](config['root'],_0x20a0('0x16')));},'filename':function(_0x84e0a4,_0x286998,_0x440637){_0x440637(null,util['format'](_0x20a0('0x17'),_0x20a0('0x18'),path[_0x20a0('0x19')](_0x286998[_0x20a0('0x1a')])));}})});router[_0x20a0('0x1b')]('/:id/logo',upload[_0x20a0('0x1c')]('file'),controller[_0x20a0('0x1d')]);var upload=multer({'storage':multer[_0x20a0('0x14')]({'destination':function(_0x4d4f0e,_0x144f33,_0x2328a7){_0x2328a7(null,path[_0x20a0('0x15')](config['root'],_0x20a0('0x16')));},'filename':function(_0x1acea9,_0x2c844d,_0x42d839){_0x42d839(null,util[_0x20a0('0x1e')]('%s%s',_0x20a0('0x1f'),path['extname'](_0x2c844d[_0x20a0('0x1a')])));}})});router[_0x20a0('0x1b')](_0x20a0('0x20'),upload[_0x20a0('0x1c')](_0x20a0('0x21')),controller[_0x20a0('0x22')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1d4522,_0x51e839,_0x214358){_0x214358(null,path[_0x20a0('0x15')](config[_0x20a0('0x23')],_0x20a0('0x16')));},'filename':function(_0x1a5fdd,_0x373a10,_0x43c7b7){_0x43c7b7(null,util[_0x20a0('0x1e')](_0x20a0('0x17'),'preferred',path['extname'](_0x373a10[_0x20a0('0x1a')])));}})});router['post']('/:id/preferred',upload[_0x20a0('0x1c')](_0x20a0('0x21')),controller[_0x20a0('0x24')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd51d60,_0x192de7,_0x551767){_0x551767(null,path[_0x20a0('0x15')](config['root'],_0x20a0('0x16')));},'filename':function(_0x16a5e3,_0x38b234,_0x4b9c78){_0x4b9c78(null,util['format']('%s%s',_0x20a0('0x25'),path[_0x20a0('0x19')](_0x38b234['originalname'])));}})});router[_0x20a0('0x1b')](_0x20a0('0x12'),upload['single'](_0x20a0('0x21')),controller[_0x20a0('0x26')]);router[_0x20a0('0x27')](_0x20a0('0xc'),auth[_0x20a0('0x9')](),controller[_0x20a0('0x28')]);module[_0x20a0('0x29')]=router;
\ No newline at end of file
+var _0x382b=['root','server/files/images/logos/','%s%s','extname','originalname','post','single','file','addLogo','diskStorage','format','logologin','addLogoLogin','preferred','addPreferred','favicon','/:id/favicon','addFavicon','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/now','/:id','getLogo','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','getFavicon','join'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x382b,0x66));var _0xb382=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x382b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xb382('0x0'));var util=require(_0xb382('0x1'));var path=require(_0xb382('0x2'));var timeout=require(_0xb382('0x3'));var express=require(_0xb382('0x4'));var router=express['Router']();var fs_extra=require(_0xb382('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb382('0x6'));var config=require(_0xb382('0x7'));var controller=require(_0xb382('0x8'));router[_0xb382('0x9')]('/',auth['isAuthenticated'](),controller[_0xb382('0xa')]);router[_0xb382('0x9')](_0xb382('0xb'),controller['getDate']);router[_0xb382('0x9')](_0xb382('0xc'),controller['show']);router[_0xb382('0x9')]('/:id/logo',controller[_0xb382('0xd')]);router['get'](_0xb382('0xe'),controller['getLogoLogin']);router[_0xb382('0x9')](_0xb382('0xf'),controller[_0xb382('0x10')]);router[_0xb382('0x9')](_0xb382('0x11'),controller[_0xb382('0x12')]);router[_0xb382('0x9')]('/:id/favicon',controller[_0xb382('0x13')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x6b5fc4,_0x4aa0d7,_0xe01387){_0xe01387(null,path[_0xb382('0x14')](config[_0xb382('0x15')],_0xb382('0x16')));},'filename':function(_0x23d1c5,_0x22bd8a,_0x4c4c3c){_0x4c4c3c(null,util['format'](_0xb382('0x17'),'logo',path[_0xb382('0x18')](_0x22bd8a[_0xb382('0x19')])));}})});router[_0xb382('0x1a')]('/:id/logo',upload[_0xb382('0x1b')](_0xb382('0x1c')),controller[_0xb382('0x1d')]);var upload=multer({'storage':multer[_0xb382('0x1e')]({'destination':function(_0xd81142,_0x56e217,_0x22c3c8){_0x22c3c8(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0x28a69b,_0x162fe6,_0x4850a6){_0x4850a6(null,util[_0xb382('0x1f')]('%s%s',_0xb382('0x20'),path[_0xb382('0x18')](_0x162fe6[_0xb382('0x19')])));}})});router['post'](_0xb382('0xe'),upload[_0xb382('0x1b')](_0xb382('0x1c')),controller[_0xb382('0x21')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3cc0a8,_0x19b3f0,_0x16651a){_0x16651a(null,path[_0xb382('0x14')](config[_0xb382('0x15')],'server/files/images/logos/'));},'filename':function(_0x171678,_0x1ee75a,_0x1f585b){_0x1f585b(null,util['format'](_0xb382('0x17'),_0xb382('0x22'),path['extname'](_0x1ee75a[_0xb382('0x19')])));}})});router[_0xb382('0x1a')](_0xb382('0x11'),upload['single'](_0xb382('0x1c')),controller[_0xb382('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x47911d,_0x10fe31,_0x41caf1){_0x41caf1(null,path['join'](config[_0xb382('0x15')],_0xb382('0x16')));},'filename':function(_0x21b7ec,_0x159a4c,_0x55d380){_0x55d380(null,util[_0xb382('0x1f')](_0xb382('0x17'),_0xb382('0x24'),path[_0xb382('0x18')](_0x159a4c[_0xb382('0x19')])));}})});router[_0xb382('0x1a')](_0xb382('0x25'),upload[_0xb382('0x1b')](_0xb382('0x1c')),controller[_0xb382('0x26')]);router['put'](_0xb382('0xc'),auth['isAuthenticated'](),controller[_0xb382('0x27')]);module[_0xb382('0x28')]=router;
\ No newline at end of file
index 39f3dc4..4ab101a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x1b8781,_0x414024){var _0x58eb86=function(_0x557b4c){while(--_0x557b4c){_0x1b8781['push'](_0x1b8781['shift']());}};_0x58eb86(++_0x414024);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x524238,_0x91fd90){var _0x3d05be=function(_0x1df397){while(--_0x1df397){_0x524238['push'](_0x524238['shift']());}};_0x3d05be(++_0x91fd90);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
index 774ee6b..c9fc9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17da=['show','params','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','server/files/images/logos','getLicense','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','ValidationError','\x20not\x20found','download','../../config/license/util','getLogoLogin','preferred','defaultPreferred','default_loginLogo.svg','Sequelize','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','favicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','request','then','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','end','json','limit','count','offset','status','Content-Range','apply','reject','save','update','stack','name','Setting','rawAttributes','type','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x227492,_0x4da6fe){var _0x2b3977=function(_0x11b7e1){while(--_0x11b7e1){_0x227492['push'](_0x227492['shift']());}};_0x2b3977(++_0x4da6fe);}(_0x17da,0x18a));var _0xa17d=function(_0xf59bb9,_0x2a2e00){_0xf59bb9=_0xf59bb9-0x0;var _0x46c6c2=_0x17da[_0xf59bb9];return _0x46c6c2;};'use strict';var emlformat=require(_0xa17d('0x0'));var rimraf=require(_0xa17d('0x1'));var zipdir=require(_0xa17d('0x2'));var jsonpatch=require(_0xa17d('0x3'));var rp=require(_0xa17d('0x4'));var moment=require('moment');var BPromise=require(_0xa17d('0x5'));var Mustache=require(_0xa17d('0x6'));var util=require(_0xa17d('0x7'));var path=require(_0xa17d('0x8'));var sox=require('sox');var csv=require(_0xa17d('0x9'));var ejs=require(_0xa17d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa17d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa17d('0xc'));var deskjs=require(_0xa17d('0xd'));var toCsv=require(_0xa17d('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa17d('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xa17d('0xf'));var hardwareService=require(_0xa17d('0x10'));var logger=require('../../config/logger')(_0xa17d('0x11'));var utils=require(_0xa17d('0x12'));var config=require(_0xa17d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xa17d('0x14'))['db'];var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x28ed24,_0x5e377f,_0xc5129d,_0x3593d8){return new BPromise(function(_0x1a1485,_0x2108fd){var _0xd68aa4=_0x3593d8||client;return _0xd68aa4[_0xa17d('0x15')](_0x28ed24,_0xc5129d)[_0xa17d('0x16')](function(_0x2314c1){logger['info'](_0xa17d('0x17'),_0x5e377f,'request\x20sent');logger[_0xa17d('0x18')](_0xa17d('0x19'),_0x5e377f,_0xa17d('0x1a'),JSON[_0xa17d('0x1b')](_0x2314c1));if(_0x2314c1[_0xa17d('0x1c')]){if(_0x2314c1[_0xa17d('0x1c')][_0xa17d('0x1d')]===0x1f4){logger['error'](_0xa17d('0x17'),_0x5e377f,_0x2314c1[_0xa17d('0x1c')]['message']);return _0x2108fd(_0x2314c1[_0xa17d('0x1c')][_0xa17d('0x1e')]);}logger[_0xa17d('0x1c')](_0xa17d('0x17'),_0x5e377f,_0x2314c1[_0xa17d('0x1c')][_0xa17d('0x1e')]);return _0x1a1485(_0x2314c1[_0xa17d('0x1c')][_0xa17d('0x1e')]);}else{logger['info'](_0xa17d('0x17'),_0x5e377f,_0xa17d('0x1a'));_0x1a1485(_0x2314c1['result'][_0xa17d('0x1e')]);}})[_0xa17d('0x1f')](function(_0x4c4296){logger[_0xa17d('0x1c')](_0xa17d('0x17'),_0x5e377f,_0x4c4296);_0x2108fd(_0x4c4296);});});}function respondWithStatusCode(_0x395164,_0x474bd6){_0x474bd6=_0x474bd6||0xcc;return function(_0x17b2f0){if(_0x17b2f0){return _0x395164[_0xa17d('0x20')](_0x474bd6);}return _0x395164['status'](_0x474bd6)[_0xa17d('0x21')]();};}function respondWithResult(_0x40ac2d,_0x480ad4){_0x480ad4=_0x480ad4||0xc8;return function(_0x26ec85){if(_0x26ec85){return _0x40ac2d['status'](_0x480ad4)[_0xa17d('0x22')](_0x26ec85);}};}function respondWithFilteredResult(_0x42321d,_0x2fd5a7){return function(_0x21ae06){if(_0x21ae06){var _0x5a18dd=typeof _0x2fd5a7['offset']==='undefined'&&typeof _0x2fd5a7[_0xa17d('0x23')]==='undefined';var _0x2ae3e2=_0x21ae06[_0xa17d('0x24')];var _0x26312f=_0x5a18dd?0x0:_0x2fd5a7[_0xa17d('0x25')];var _0x4a2973=_0x5a18dd?_0x21ae06[_0xa17d('0x24')]:_0x2fd5a7['offset']+_0x2fd5a7[_0xa17d('0x23')];var _0x1644f2;if(_0x4a2973>=_0x2ae3e2){_0x4a2973=_0x2ae3e2;_0x1644f2=0xc8;}else{_0x1644f2=0xce;}_0x42321d[_0xa17d('0x26')](_0x1644f2);return _0x42321d['set'](_0xa17d('0x27'),_0x26312f+'-'+_0x4a2973+'/'+_0x2ae3e2)[_0xa17d('0x22')](_0x21ae06);}return null;};}function patchUpdates(_0x58cdd6){return function(_0x211c09){try{jsonpatch[_0xa17d('0x28')](_0x211c09,_0x58cdd6,!![]);}catch(_0x13a86c){return BPromise[_0xa17d('0x29')](_0x13a86c);}return _0x211c09[_0xa17d('0x2a')]();};}function saveUpdates(_0x36791b,_0x59ea9f){return function(_0x9780a3){if(_0x9780a3){return _0x9780a3[_0xa17d('0x2b')](_0x36791b)['then'](function(_0x3cbb90){return _0x3cbb90;});}return null;};}function removeEntity(_0x9dfe2b,_0x466bdd){return function(_0x22c543){if(_0x22c543){return _0x22c543['destroy']()[_0xa17d('0x16')](function(){_0x9dfe2b[_0xa17d('0x26')](0xcc)[_0xa17d('0x21')]();});}};}function handleEntityNotFound(_0x56c862,_0x47f3d0){return function(_0x281055){if(!_0x281055){_0x56c862[_0xa17d('0x20')](0x194);}return _0x281055;};}function handleError(_0x3e5a82,_0x348073){_0x348073=_0x348073||0x1f4;return function(_0x149639){logger[_0xa17d('0x1c')](_0x149639[_0xa17d('0x2c')]);if(_0x149639[_0xa17d('0x2d')]){delete _0x149639[_0xa17d('0x2d')];}_0x3e5a82[_0xa17d('0x26')](_0x348073)['send'](_0x149639);};}exports['index']=function(_0x233539,_0x4694f0){var _0x245aef={},_0x48a097={},_0x3115ea={'count':0x0,'rows':[]};var _0x1f75a8=_['map'](db[_0xa17d('0x2e')][_0xa17d('0x2f')],function(_0x3a3e4d){return{'name':_0x3a3e4d['fieldName'],'type':_0x3a3e4d[_0xa17d('0x30')]['key']};});_0x48a097[_0xa17d('0x31')]=_[_0xa17d('0x32')](_0x1f75a8,'name');_0x48a097[_0xa17d('0x33')]=_[_0xa17d('0x34')](_0x233539[_0xa17d('0x33')]);_0x48a097[_0xa17d('0x35')]=_['intersection'](_0x48a097[_0xa17d('0x31')],_0x48a097['query']);_0x245aef[_0xa17d('0x36')]=_[_0xa17d('0x37')](_0x48a097[_0xa17d('0x31')],qs[_0xa17d('0x38')](_0x233539['query']['fields']));_0x245aef[_0xa17d('0x36')]=_0x245aef[_0xa17d('0x36')][_0xa17d('0x39')]?_0x245aef[_0xa17d('0x36')]:_0x48a097[_0xa17d('0x31')];if(!_0x233539[_0xa17d('0x33')][_0xa17d('0x3a')]('nolimit')){_0x245aef['limit']=qs[_0xa17d('0x23')](_0x233539[_0xa17d('0x33')][_0xa17d('0x23')]);_0x245aef['offset']=qs[_0xa17d('0x25')](_0x233539['query'][_0xa17d('0x25')]);}_0x245aef[_0xa17d('0x3b')]=qs[_0xa17d('0x3c')](_0x233539[_0xa17d('0x33')][_0xa17d('0x3c')]);_0x245aef['where']=qs['filters'](_[_0xa17d('0x3d')](_0x233539[_0xa17d('0x33')],_0x48a097['filters']),_0x1f75a8);if(_0x233539[_0xa17d('0x33')][_0xa17d('0x3e')]){_0x245aef[_0xa17d('0x3f')]=_[_0xa17d('0x40')](_0x245aef['where'],{'$or':_[_0xa17d('0x32')](_0x1f75a8,function(_0x1fe045){if(_0x1fe045[_0xa17d('0x30')]!==_0xa17d('0x41')){var _0x4e5c75={};_0x4e5c75[_0x1fe045[_0xa17d('0x2d')]]={'$like':'%'+_0x233539[_0xa17d('0x33')][_0xa17d('0x3e')]+'%'};return _0x4e5c75;}})});}_0x245aef=_[_0xa17d('0x40')]({},_0x245aef,_0x233539[_0xa17d('0x42')]);var _0x295ed0={'where':_0x245aef[_0xa17d('0x3f')]};return db['Setting'][_0xa17d('0x24')](_0x295ed0)[_0xa17d('0x16')](function(_0x4c8df7){_0x3115ea[_0xa17d('0x24')]=_0x4c8df7;if(_0x233539[_0xa17d('0x33')][_0xa17d('0x43')]){_0x245aef[_0xa17d('0x44')]=[{'all':!![]}];}return db[_0xa17d('0x2e')][_0xa17d('0x45')](_0x245aef);})[_0xa17d('0x16')](function(_0x1eeadc){_0x3115ea['rows']=_0x1eeadc;return _0x3115ea;})[_0xa17d('0x16')](respondWithFilteredResult(_0x4694f0,_0x245aef))[_0xa17d('0x1f')](handleError(_0x4694f0,null));};exports[_0xa17d('0x46')]=function(_0x203d25,_0x944223){var _0x43be28={'raw':![],'where':{'id':_0x203d25[_0xa17d('0x47')]['id']}},_0x2f7ebb={};_0x2f7ebb['model']=_[_0xa17d('0x34')](db[_0xa17d('0x2e')][_0xa17d('0x2f')]);_0x2f7ebb['query']=_['keys'](_0x203d25[_0xa17d('0x33')]);_0x2f7ebb[_0xa17d('0x35')]=_[_0xa17d('0x37')](_0x2f7ebb[_0xa17d('0x31')],_0x2f7ebb[_0xa17d('0x33')]);_0x43be28['attributes']=_[_0xa17d('0x37')](_0x2f7ebb['model'],qs[_0xa17d('0x38')](_0x203d25['query'][_0xa17d('0x38')]));_0x43be28[_0xa17d('0x36')]=_0x43be28['attributes'][_0xa17d('0x39')]?_0x43be28[_0xa17d('0x36')]:_0x2f7ebb['model'];if(_0x203d25[_0xa17d('0x33')][_0xa17d('0x43')]){_0x43be28[_0xa17d('0x44')]=[{'all':!![]}];}_0x43be28=_[_0xa17d('0x40')]({},_0x43be28,_0x203d25[_0xa17d('0x42')]);return db[_0xa17d('0x2e')][_0xa17d('0x48')](_0x43be28)['then'](handleEntityNotFound(_0x944223,null))['then'](respondWithResult(_0x944223,null))[_0xa17d('0x1f')](handleError(_0x944223,null));};exports['update']=function(_0x53ff45,_0x19e7de){if(_0x53ff45[_0xa17d('0x49')]['id']){delete _0x53ff45['body']['id'];}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x53ff45[_0xa17d('0x47')]['id']}})['then'](handleEntityNotFound(_0x19e7de,null))['then'](saveUpdates(_0x53ff45['body'],null))[_0xa17d('0x16')](respondWithResult(_0x19e7de,null))[_0xa17d('0x1f')](handleError(_0x19e7de,null));};exports[_0xa17d('0x4a')]=function(_0x3ec12a,_0xf96d5,_0x3a384f){if(_0x3ec12a['file']&&_0x3ec12a[_0xa17d('0x4b')][_0xa17d('0x4c')]){_0x3ec12a[_0xa17d('0x49')][_0xa17d('0x4d')]=_0x3ec12a[_0xa17d('0x4b')][_0xa17d('0x4c')];}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x3ec12a['params']['id']}})[_0xa17d('0x16')](handleEntityNotFound(_0xf96d5,null))[_0xa17d('0x16')](saveUpdates(_0x3ec12a[_0xa17d('0x49')],null))[_0xa17d('0x16')](respondWithResult(_0xf96d5,null))[_0xa17d('0x1f')](handleError(_0xf96d5,null));};exports[_0xa17d('0x4e')]=function(_0x56ef3e,_0x1307e6,_0x6025a7){if(_0x56ef3e['file']&&_0x56ef3e['file'][_0xa17d('0x4c')]){_0x56ef3e[_0xa17d('0x49')][_0xa17d('0x4f')]=_0x56ef3e[_0xa17d('0x4b')][_0xa17d('0x4c')];}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x56ef3e[_0xa17d('0x47')]['id']}})[_0xa17d('0x16')](handleEntityNotFound(_0x1307e6,null))['then'](saveUpdates(_0x56ef3e[_0xa17d('0x49')],null))['then'](respondWithResult(_0x1307e6,null))[_0xa17d('0x1f')](handleError(_0x1307e6,null));};var utilLicense=require('../../config/license/util');exports['getLogo']=function(_0xc47790,_0x5ed8fe,_0x15ae58){var _0x4dd1aa=_0xa17d('0x50');var _0x30bd97={'custom':![]};return utilLicense[_0xa17d('0x51')]()[_0xa17d('0x16')](function(_0x1bd405){if(_0x1bd405){_0x30bd97=_0x1bd405;}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0xc47790[_0xa17d('0x47')]['id']},'attributes':[_0xa17d('0x4d'),_0xa17d('0x4f'),'preferred','favicon',_0xa17d('0x52'),_0xa17d('0x53'),'defaultPreferred',_0xa17d('0x54')],'raw':!![]});})[_0xa17d('0x16')](handleEntityNotFound(_0x5ed8fe,null))[_0xa17d('0x16')](function(_0x5614a5){if(_0x5614a5){var _0x4c95c1=_0x5614a5['logo']&&fs[_0xa17d('0x55')](path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x4dd1aa,_[_0xa17d('0x58')](_0x5614a5[_0xa17d('0x4d')])))?path[_0xa17d('0x56')](config['root'],_0x4dd1aa,_[_0xa17d('0x58')](_0x5614a5[_0xa17d('0x4d')])):path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x4dd1aa,_['toLower'](_0xa17d('0x59')));var _0x5661e0=_0xa17d('0x5a')+_[_0xa17d('0x5b')](_0xa17d('0x4d'));if(_0x5614a5[_0x5661e0]||!_0x30bd97[_0xa17d('0x5c')]){_0x4c95c1=path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x4dd1aa,_[_0xa17d('0x58')](_0xa17d('0x59')));}if(!fs[_0xa17d('0x55')](_0x4c95c1)){throw new db['Sequelize'][(_0xa17d('0x5d'))](_[_0xa17d('0x5b')](_0xa17d('0x4d'))+_0xa17d('0x5e'));}return _0x5ed8fe[_0xa17d('0x5f')](_0x4c95c1);}})['catch'](handleError(_0x5ed8fe,null));};var utilLicense=require(_0xa17d('0x60'));exports[_0xa17d('0x61')]=function(_0x3829da,_0x4376a9,_0x1bd3c3){var _0x21e6f1=_0xa17d('0x50');var _0x4556fd={'custom':![]};return utilLicense[_0xa17d('0x51')]()[_0xa17d('0x16')](function(_0x118232){if(_0x118232){_0x4556fd=_0x118232;}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x3829da[_0xa17d('0x47')]['id']},'attributes':[_0xa17d('0x4d'),_0xa17d('0x4f'),_0xa17d('0x62'),'favicon',_0xa17d('0x52'),'defaultLoginLogo',_0xa17d('0x63'),_0xa17d('0x54')],'raw':!![]});})[_0xa17d('0x16')](handleEntityNotFound(_0x4376a9,null))[_0xa17d('0x16')](function(_0x1c018f){if(_0x1c018f){var _0x25e939=_0x1c018f[_0xa17d('0x4f')]&&fs[_0xa17d('0x55')](path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x21e6f1,_['toLower'](_0x1c018f[_0xa17d('0x4f')])))?path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x21e6f1,_[_0xa17d('0x58')](_0x1c018f['loginLogo'])):path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x21e6f1,_['toLower']('default_loginLogo.svg'));var _0x5763be=_0xa17d('0x5a')+_[_0xa17d('0x5b')](_0xa17d('0x4f'));if(_0x1c018f[_0x5763be]||!_0x4556fd[_0xa17d('0x5c')]){_0x25e939=path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x21e6f1,_[_0xa17d('0x58')](_0xa17d('0x64')));}if(!fs[_0xa17d('0x55')](_0x25e939)){throw new db[(_0xa17d('0x65'))][(_0xa17d('0x5d'))](_[_0xa17d('0x5b')]('loginLogo')+_0xa17d('0x5e'));}return _0x4376a9['download'](_0x25e939);}})[_0xa17d('0x1f')](handleError(_0x4376a9,null));};exports[_0xa17d('0x66')]=function(_0x4cc972,_0x2eb208){return db[_0xa17d('0x2e')]['find']({'where':{'id':_0x4cc972[_0xa17d('0x47')]['id']},'attributes':[_0xa17d('0x67')]})[_0xa17d('0x16')](respondWithResult(_0x2eb208,null))[_0xa17d('0x1f')](handleError(_0x2eb208,null));};exports[_0xa17d('0x68')]=function(_0x1746b1,_0x572aaa,_0x43bf09){if(_0x1746b1['file']&&_0x1746b1[_0xa17d('0x4b')][_0xa17d('0x4c')]){_0x1746b1[_0xa17d('0x49')][_0xa17d('0x62')]=_0x1746b1[_0xa17d('0x4b')][_0xa17d('0x4c')];}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x1746b1[_0xa17d('0x47')]['id']}})['then'](handleEntityNotFound(_0x572aaa,null))['then'](saveUpdates(_0x1746b1[_0xa17d('0x49')],null))[_0xa17d('0x16')](respondWithResult(_0x572aaa,null))['catch'](handleError(_0x572aaa,null));};var utilLicense=require(_0xa17d('0x60'));exports[_0xa17d('0x69')]=function(_0x358ba6,_0x1a9af1,_0x526d96){var _0x20c1fd=_0xa17d('0x50');var _0x5a2cc1={'custom':![]};return utilLicense[_0xa17d('0x51')]()['then'](function(_0x99047d){if(_0x99047d){_0x5a2cc1=_0x99047d;}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x358ba6[_0xa17d('0x47')]['id']},'attributes':[_0xa17d('0x4d'),_0xa17d('0x4f'),_0xa17d('0x62'),'favicon',_0xa17d('0x52'),_0xa17d('0x53'),_0xa17d('0x63'),'defaultFavicon'],'raw':!![]});})[_0xa17d('0x16')](handleEntityNotFound(_0x1a9af1,null))[_0xa17d('0x16')](function(_0x6192cb){if(_0x6192cb){var _0x31dd3f=_0x6192cb['preferred']&&fs[_0xa17d('0x55')](path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x20c1fd,_['toLower'](_0x6192cb['preferred'])))?path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x20c1fd,_[_0xa17d('0x58')](_0x6192cb[_0xa17d('0x62')])):path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x20c1fd,_[_0xa17d('0x58')](_0xa17d('0x6a')));var _0x5d2121=_0xa17d('0x5a')+_[_0xa17d('0x5b')](_0xa17d('0x62'));if(_0x6192cb[_0x5d2121]||!_0x5a2cc1[_0xa17d('0x5c')]||!_0x5a2cc1[_0xa17d('0x62')]){_0x31dd3f=path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0x20c1fd,_['toLower'](_0xa17d('0x6a')));}if(!fs['existsSync'](_0x31dd3f)){throw new db[(_0xa17d('0x65'))][(_0xa17d('0x5d'))](_[_0xa17d('0x5b')]('preferred')+'\x20not\x20found');}return _0x1a9af1[_0xa17d('0x5f')](_0x31dd3f);}})[_0xa17d('0x1f')](handleError(_0x1a9af1,null));};exports[_0xa17d('0x6b')]=function(_0x3a28d4,_0x1ea962,_0x3eaef9){if(_0x3a28d4[_0xa17d('0x4b')]&&_0x3a28d4[_0xa17d('0x4b')][_0xa17d('0x4c')]){_0x3a28d4[_0xa17d('0x49')]['favicon']=_0x3a28d4[_0xa17d('0x4b')][_0xa17d('0x4c')];}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x3a28d4[_0xa17d('0x47')]['id']}})['then'](handleEntityNotFound(_0x1ea962,null))['then'](saveUpdates(_0x3a28d4['body'],null))[_0xa17d('0x16')](respondWithResult(_0x1ea962,null))['catch'](handleError(_0x1ea962,null));};var utilLicense=require(_0xa17d('0x60'));exports[_0xa17d('0x6c')]=function(_0x5e4013,_0x51f292,_0x31ed1a){var _0xa6b7d1=_0xa17d('0x50');var _0x16262f={'custom':![]};return utilLicense['getLicense']()[_0xa17d('0x16')](function(_0x16e6d0){if(_0x16e6d0){_0x16262f=_0x16e6d0;}return db[_0xa17d('0x2e')][_0xa17d('0x48')]({'where':{'id':_0x5e4013[_0xa17d('0x47')]['id']},'attributes':['logo',_0xa17d('0x4f'),_0xa17d('0x62'),_0xa17d('0x6d'),_0xa17d('0x52'),'defaultLoginLogo','defaultPreferred',_0xa17d('0x54')],'raw':!![]});})['then'](handleEntityNotFound(_0x51f292,null))[_0xa17d('0x16')](function(_0x559ea9){if(_0x559ea9){var _0x500524=_0x559ea9[_0xa17d('0x6d')]&&fs[_0xa17d('0x55')](path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0xa6b7d1,_[_0xa17d('0x58')](_0x559ea9['favicon'])))?path[_0xa17d('0x56')](config[_0xa17d('0x57')],_0xa6b7d1,_[_0xa17d('0x58')](_0x559ea9[_0xa17d('0x6d')])):path[_0xa17d('0x56')](config['root'],_0xa6b7d1,_[_0xa17d('0x58')](_0xa17d('0x6e')));var _0x5a88da='default'+_['upperFirst'](_0xa17d('0x6d'));if(_0x559ea9[_0x5a88da]||!_0x16262f[_0xa17d('0x5c')]){_0x500524=path['join'](config[_0xa17d('0x57')],_0xa6b7d1,_[_0xa17d('0x58')]('default_favicon.ico'));}if(!fs['existsSync'](_0x500524)){throw new db['Sequelize'][(_0xa17d('0x5d'))](_[_0xa17d('0x5b')](_0xa17d('0x6d'))+_0xa17d('0x5e'));}return _0x51f292[_0xa17d('0x5f')](_0x500524);}})['catch'](handleError(_0x51f292,null));};exports[_0xa17d('0x6f')]=function(_0x2e6f9b,_0x473e40){var _0x1633b9={'offset':moment()[_0xa17d('0x70')]()};_0x1633b9[_0xa17d('0x71')]=moment()[_0xa17d('0x70')](_0x1633b9['offset'])['format'](_0xa17d('0x72'));return _0x473e40[_0xa17d('0x26')](0xc8)[_0xa17d('0x73')](_0x1633b9);};
\ No newline at end of file
+var _0x953e=['set','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','Setting','rawAttributes','fieldName','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','params','find','body','addLogo','file','filename','logo','loginLogo','../../config/license/util','getLogo','server/files/images/logos','getLicense','preferred','defaultLoginLogo','defaultPreferred','defaultFavicon','join','root','toLower','default_logo.svg','upperFirst','custom','existsSync','download','getLogoLogin','favicon','defaultLogo','default_loginLogo.svg','default','Sequelize','\x20not\x20found','gdpr','getPreferred','ValidationError','getFavicon','default_favicon.ico','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','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','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','count','limit'];(function(_0x368e1c,_0x32a6d4){var _0x22ea88=function(_0x32cd2c){while(--_0x32cd2c){_0x368e1c['push'](_0x368e1c['shift']());}};_0x22ea88(++_0x32a6d4);}(_0x953e,0xc6));var _0xe953=function(_0x22a3df,_0x159f11){_0x22a3df=_0x22a3df-0x0;var _0x26d69c=_0x953e[_0x22a3df];return _0x26d69c;};'use strict';var emlformat=require(_0xe953('0x0'));var rimraf=require(_0xe953('0x1'));var zipdir=require(_0xe953('0x2'));var jsonpatch=require(_0xe953('0x3'));var rp=require(_0xe953('0x4'));var moment=require('moment');var BPromise=require(_0xe953('0x5'));var Mustache=require(_0xe953('0x6'));var util=require(_0xe953('0x7'));var path=require(_0xe953('0x8'));var sox=require(_0xe953('0x9'));var csv=require(_0xe953('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe953('0xb'));var _=require(_0xe953('0xc'));var squel=require(_0xe953('0xd'));var crypto=require(_0xe953('0xe'));var jsforce=require(_0xe953('0xf'));var deskjs=require(_0xe953('0x10'));var toCsv=require(_0xe953('0xa'));var querystring=require(_0xe953('0x11'));var Papa=require(_0xe953('0x12'));var Redis=require(_0xe953('0x13'));var authService=require(_0xe953('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe953('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xe953('0x16'));var config=require(_0xe953('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe953('0x18'))['db'];var jayson=require(_0xe953('0x19'));var client=jayson[_0xe953('0x1a')][_0xe953('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xfcd3b8,_0x254cf8,_0x33c14e,_0x77b73e){return new BPromise(function(_0x3c8f45,_0x491e57){var _0x3156b2=_0x77b73e||client;return _0x3156b2[_0xe953('0x1c')](_0xfcd3b8,_0x33c14e)['then'](function(_0xfa4963){logger[_0xe953('0x1d')](_0xe953('0x1e'),_0x254cf8,_0xe953('0x1f'));logger['debug'](_0xe953('0x20'),_0x254cf8,_0xe953('0x1f'),JSON[_0xe953('0x21')](_0xfa4963));if(_0xfa4963['error']){if(_0xfa4963[_0xe953('0x22')][_0xe953('0x23')]===0x1f4){logger[_0xe953('0x22')]('Setting,\x20%s,\x20%s',_0x254cf8,_0xfa4963['error'][_0xe953('0x24')]);return _0x491e57(_0xfa4963[_0xe953('0x22')][_0xe953('0x24')]);}logger[_0xe953('0x22')](_0xe953('0x1e'),_0x254cf8,_0xfa4963[_0xe953('0x22')][_0xe953('0x24')]);return _0x3c8f45(_0xfa4963[_0xe953('0x22')][_0xe953('0x24')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x254cf8,_0xe953('0x1f'));_0x3c8f45(_0xfa4963[_0xe953('0x25')]['message']);}})[_0xe953('0x26')](function(_0x3808ef){logger[_0xe953('0x22')](_0xe953('0x1e'),_0x254cf8,_0x3808ef);_0x491e57(_0x3808ef);});});}function respondWithStatusCode(_0x6039d6,_0x1871a4){_0x1871a4=_0x1871a4||0xcc;return function(_0x2ebe98){if(_0x2ebe98){return _0x6039d6[_0xe953('0x27')](_0x1871a4);}return _0x6039d6[_0xe953('0x28')](_0x1871a4)[_0xe953('0x29')]();};}function respondWithResult(_0xfa79db,_0x346f94){_0x346f94=_0x346f94||0xc8;return function(_0x845e9c){if(_0x845e9c){return _0xfa79db[_0xe953('0x28')](_0x346f94)['json'](_0x845e9c);}};}function respondWithFilteredResult(_0x12ca92,_0x70b1a){return function(_0x24ec99){if(_0x24ec99){var _0x558e21=typeof _0x70b1a[_0xe953('0x2a')]===_0xe953('0x2b')&&typeof _0x70b1a['limit']==='undefined';var _0x4d71ba=_0x24ec99[_0xe953('0x2c')];var _0x5dd338=_0x558e21?0x0:_0x70b1a[_0xe953('0x2a')];var _0x1acc7=_0x558e21?_0x24ec99['count']:_0x70b1a['offset']+_0x70b1a[_0xe953('0x2d')];var _0x338de7;if(_0x1acc7>=_0x4d71ba){_0x1acc7=_0x4d71ba;_0x338de7=0xc8;}else{_0x338de7=0xce;}_0x12ca92[_0xe953('0x28')](_0x338de7);return _0x12ca92[_0xe953('0x2e')](_0xe953('0x2f'),_0x5dd338+'-'+_0x1acc7+'/'+_0x4d71ba)[_0xe953('0x30')](_0x24ec99);}return null;};}function patchUpdates(_0x40f0af){return function(_0x4bcfae){try{jsonpatch[_0xe953('0x31')](_0x4bcfae,_0x40f0af,!![]);}catch(_0x2d77cc){return BPromise[_0xe953('0x32')](_0x2d77cc);}return _0x4bcfae[_0xe953('0x33')]();};}function saveUpdates(_0x70c5e,_0x1091a4){return function(_0xf0ebea){if(_0xf0ebea){return _0xf0ebea['update'](_0x70c5e)[_0xe953('0x34')](function(_0x1e2105){return _0x1e2105;});}return null;};}function removeEntity(_0x40ddc3,_0x2a6c4b){return function(_0x5e24f3){if(_0x5e24f3){return _0x5e24f3[_0xe953('0x35')]()['then'](function(){_0x40ddc3[_0xe953('0x28')](0xcc)[_0xe953('0x29')]();});}};}function handleEntityNotFound(_0x34d442,_0x165a9c){return function(_0x1fcfe1){if(!_0x1fcfe1){_0x34d442[_0xe953('0x27')](0x194);}return _0x1fcfe1;};}function handleError(_0x2e06b,_0x188315){_0x188315=_0x188315||0x1f4;return function(_0x55246a){logger[_0xe953('0x22')](_0x55246a[_0xe953('0x36')]);if(_0x55246a[_0xe953('0x37')]){delete _0x55246a[_0xe953('0x37')];}_0x2e06b[_0xe953('0x28')](_0x188315)[_0xe953('0x38')](_0x55246a);};}exports[_0xe953('0x39')]=function(_0x409d77,_0x3ee354){var _0x4bc602={},_0x267f9f={},_0x495dd={'count':0x0,'rows':[]};var _0x502e47=_['map'](db[_0xe953('0x3a')][_0xe953('0x3b')],function(_0x2ee824){return{'name':_0x2ee824[_0xe953('0x3c')],'type':_0x2ee824['type'][_0xe953('0x3d')]};});_0x267f9f[_0xe953('0x3e')]=_[_0xe953('0x3f')](_0x502e47,_0xe953('0x37'));_0x267f9f[_0xe953('0x40')]=_[_0xe953('0x41')](_0x409d77['query']);_0x267f9f['filters']=_['intersection'](_0x267f9f[_0xe953('0x3e')],_0x267f9f[_0xe953('0x40')]);_0x4bc602[_0xe953('0x42')]=_[_0xe953('0x43')](_0x267f9f[_0xe953('0x3e')],qs['fields'](_0x409d77['query'][_0xe953('0x44')]));_0x4bc602['attributes']=_0x4bc602[_0xe953('0x42')]['length']?_0x4bc602['attributes']:_0x267f9f[_0xe953('0x3e')];if(!_0x409d77[_0xe953('0x40')][_0xe953('0x45')](_0xe953('0x46'))){_0x4bc602[_0xe953('0x2d')]=qs[_0xe953('0x2d')](_0x409d77['query'][_0xe953('0x2d')]);_0x4bc602[_0xe953('0x2a')]=qs['offset'](_0x409d77[_0xe953('0x40')][_0xe953('0x2a')]);}_0x4bc602['order']=qs[_0xe953('0x47')](_0x409d77[_0xe953('0x40')][_0xe953('0x47')]);_0x4bc602[_0xe953('0x48')]=qs[_0xe953('0x49')](_[_0xe953('0x4a')](_0x409d77[_0xe953('0x40')],_0x267f9f[_0xe953('0x49')]),_0x502e47);if(_0x409d77[_0xe953('0x40')][_0xe953('0x4b')]){_0x4bc602['where']=_[_0xe953('0x4c')](_0x4bc602[_0xe953('0x48')],{'$or':_[_0xe953('0x3f')](_0x502e47,function(_0x3a24af){if(_0x3a24af[_0xe953('0x4d')]!==_0xe953('0x4e')){var _0x107b4e={};_0x107b4e[_0x3a24af[_0xe953('0x37')]]={'$like':'%'+_0x409d77[_0xe953('0x40')][_0xe953('0x4b')]+'%'};return _0x107b4e;}})});}_0x4bc602=_[_0xe953('0x4c')]({},_0x4bc602,_0x409d77[_0xe953('0x4f')]);var _0x5e5caa={'where':_0x4bc602[_0xe953('0x48')]};return db['Setting'][_0xe953('0x2c')](_0x5e5caa)[_0xe953('0x34')](function(_0x392dd3){_0x495dd[_0xe953('0x2c')]=_0x392dd3;if(_0x409d77[_0xe953('0x40')][_0xe953('0x50')]){_0x4bc602[_0xe953('0x51')]=[{'all':!![]}];}return db['Setting'][_0xe953('0x52')](_0x4bc602);})[_0xe953('0x34')](function(_0x165d3d){_0x495dd['rows']=_0x165d3d;return _0x495dd;})[_0xe953('0x34')](respondWithFilteredResult(_0x3ee354,_0x4bc602))[_0xe953('0x26')](handleError(_0x3ee354,null));};exports['show']=function(_0x9d9d8,_0x2e0db1){var _0x49f883={'raw':![],'where':{'id':_0x9d9d8[_0xe953('0x53')]['id']}},_0x3f2a76={};_0x3f2a76[_0xe953('0x3e')]=_['keys'](db[_0xe953('0x3a')][_0xe953('0x3b')]);_0x3f2a76['query']=_['keys'](_0x9d9d8['query']);_0x3f2a76['filters']=_[_0xe953('0x43')](_0x3f2a76[_0xe953('0x3e')],_0x3f2a76[_0xe953('0x40')]);_0x49f883[_0xe953('0x42')]=_['intersection'](_0x3f2a76[_0xe953('0x3e')],qs[_0xe953('0x44')](_0x9d9d8[_0xe953('0x40')]['fields']));_0x49f883['attributes']=_0x49f883[_0xe953('0x42')]['length']?_0x49f883['attributes']:_0x3f2a76[_0xe953('0x3e')];if(_0x9d9d8['query'][_0xe953('0x50')]){_0x49f883[_0xe953('0x51')]=[{'all':!![]}];}_0x49f883=_['merge']({},_0x49f883,_0x9d9d8[_0xe953('0x4f')]);return db['Setting'][_0xe953('0x54')](_0x49f883)['then'](handleEntityNotFound(_0x2e0db1,null))[_0xe953('0x34')](respondWithResult(_0x2e0db1,null))['catch'](handleError(_0x2e0db1,null));};exports['update']=function(_0x35aac6,_0x14393d){if(_0x35aac6['body']['id']){delete _0x35aac6[_0xe953('0x55')]['id'];}return db[_0xe953('0x3a')][_0xe953('0x54')]({'where':{'id':_0x35aac6[_0xe953('0x53')]['id']}})[_0xe953('0x34')](handleEntityNotFound(_0x14393d,null))[_0xe953('0x34')](saveUpdates(_0x35aac6[_0xe953('0x55')],null))[_0xe953('0x34')](respondWithResult(_0x14393d,null))[_0xe953('0x26')](handleError(_0x14393d,null));};exports[_0xe953('0x56')]=function(_0x6d3f1a,_0x414769,_0x36637a){if(_0x6d3f1a[_0xe953('0x57')]&&_0x6d3f1a[_0xe953('0x57')][_0xe953('0x58')]){_0x6d3f1a[_0xe953('0x55')][_0xe953('0x59')]=_0x6d3f1a[_0xe953('0x57')][_0xe953('0x58')];}return db[_0xe953('0x3a')]['find']({'where':{'id':_0x6d3f1a[_0xe953('0x53')]['id']}})[_0xe953('0x34')](handleEntityNotFound(_0x414769,null))[_0xe953('0x34')](saveUpdates(_0x6d3f1a[_0xe953('0x55')],null))[_0xe953('0x34')](respondWithResult(_0x414769,null))['catch'](handleError(_0x414769,null));};exports['addLogoLogin']=function(_0x9509d5,_0x480ffc,_0x2e2b3f){if(_0x9509d5[_0xe953('0x57')]&&_0x9509d5['file'][_0xe953('0x58')]){_0x9509d5['body'][_0xe953('0x5a')]=_0x9509d5[_0xe953('0x57')][_0xe953('0x58')];}return db['Setting'][_0xe953('0x54')]({'where':{'id':_0x9509d5[_0xe953('0x53')]['id']}})[_0xe953('0x34')](handleEntityNotFound(_0x480ffc,null))[_0xe953('0x34')](saveUpdates(_0x9509d5[_0xe953('0x55')],null))[_0xe953('0x34')](respondWithResult(_0x480ffc,null))[_0xe953('0x26')](handleError(_0x480ffc,null));};var utilLicense=require(_0xe953('0x5b'));exports[_0xe953('0x5c')]=function(_0x10de4e,_0x1328e6,_0x801c77){var _0x5656b7=_0xe953('0x5d');var _0x31e27f={'custom':![]};return utilLicense[_0xe953('0x5e')]()[_0xe953('0x34')](function(_0x40d4e5){if(_0x40d4e5){_0x31e27f=_0x40d4e5;}return db['Setting'][_0xe953('0x54')]({'where':{'id':_0x10de4e[_0xe953('0x53')]['id']},'attributes':[_0xe953('0x59'),_0xe953('0x5a'),_0xe953('0x5f'),'favicon','defaultLogo',_0xe953('0x60'),_0xe953('0x61'),_0xe953('0x62')],'raw':!![]});})[_0xe953('0x34')](handleEntityNotFound(_0x1328e6,null))[_0xe953('0x34')](function(_0x25d625){if(_0x25d625){var _0x1abde2=_0x25d625[_0xe953('0x59')]&&fs['existsSync'](path[_0xe953('0x63')](config[_0xe953('0x64')],_0x5656b7,_[_0xe953('0x65')](_0x25d625[_0xe953('0x59')])))?path[_0xe953('0x63')](config[_0xe953('0x64')],_0x5656b7,_['toLower'](_0x25d625[_0xe953('0x59')])):path[_0xe953('0x63')](config['root'],_0x5656b7,_['toLower'](_0xe953('0x66')));var _0x29fa98='default'+_[_0xe953('0x67')](_0xe953('0x59'));if(_0x25d625[_0x29fa98]||!_0x31e27f[_0xe953('0x68')]){_0x1abde2=path['join'](config[_0xe953('0x64')],_0x5656b7,_[_0xe953('0x65')](_0xe953('0x66')));}if(!fs[_0xe953('0x69')](_0x1abde2)){throw new db['Sequelize']['ValidationError'](_[_0xe953('0x67')](_0xe953('0x59'))+'\x20not\x20found');}return _0x1328e6[_0xe953('0x6a')](_0x1abde2);}})['catch'](handleError(_0x1328e6,null));};var utilLicense=require(_0xe953('0x5b'));exports[_0xe953('0x6b')]=function(_0xcec2fb,_0x2df70b,_0x2f4904){var _0x33f75a=_0xe953('0x5d');var _0x1f152c={'custom':![]};return utilLicense['getLicense']()[_0xe953('0x34')](function(_0x2b4226){if(_0x2b4226){_0x1f152c=_0x2b4226;}return db[_0xe953('0x3a')][_0xe953('0x54')]({'where':{'id':_0xcec2fb[_0xe953('0x53')]['id']},'attributes':[_0xe953('0x59'),_0xe953('0x5a'),_0xe953('0x5f'),_0xe953('0x6c'),_0xe953('0x6d'),_0xe953('0x60'),_0xe953('0x61'),'defaultFavicon'],'raw':!![]});})[_0xe953('0x34')](handleEntityNotFound(_0x2df70b,null))[_0xe953('0x34')](function(_0x5cd76a){if(_0x5cd76a){var _0x235dc8=_0x5cd76a[_0xe953('0x5a')]&&fs['existsSync'](path['join'](config[_0xe953('0x64')],_0x33f75a,_[_0xe953('0x65')](_0x5cd76a[_0xe953('0x5a')])))?path['join'](config[_0xe953('0x64')],_0x33f75a,_[_0xe953('0x65')](_0x5cd76a[_0xe953('0x5a')])):path['join'](config[_0xe953('0x64')],_0x33f75a,_[_0xe953('0x65')](_0xe953('0x6e')));var _0x5bbfaa=_0xe953('0x6f')+_[_0xe953('0x67')](_0xe953('0x5a'));if(_0x5cd76a[_0x5bbfaa]||!_0x1f152c[_0xe953('0x68')]){_0x235dc8=path[_0xe953('0x63')](config['root'],_0x33f75a,_[_0xe953('0x65')](_0xe953('0x6e')));}if(!fs[_0xe953('0x69')](_0x235dc8)){throw new db[(_0xe953('0x70'))]['ValidationError'](_[_0xe953('0x67')](_0xe953('0x5a'))+_0xe953('0x71'));}return _0x2df70b[_0xe953('0x6a')](_0x235dc8);}})[_0xe953('0x26')](handleError(_0x2df70b,null));};exports[_0xe953('0x72')]=function(_0x24f55c,_0x2ddb17){return db[_0xe953('0x3a')][_0xe953('0x54')]({'where':{'id':_0x24f55c[_0xe953('0x53')]['id']},'attributes':['securePassword']})[_0xe953('0x34')](respondWithResult(_0x2ddb17,null))['catch'](handleError(_0x2ddb17,null));};exports['addPreferred']=function(_0x32a7eb,_0x1fc63b,_0x44a063){if(_0x32a7eb[_0xe953('0x57')]&&_0x32a7eb[_0xe953('0x57')]['filename']){_0x32a7eb[_0xe953('0x55')][_0xe953('0x5f')]=_0x32a7eb[_0xe953('0x57')][_0xe953('0x58')];}return db[_0xe953('0x3a')][_0xe953('0x54')]({'where':{'id':_0x32a7eb[_0xe953('0x53')]['id']}})[_0xe953('0x34')](handleEntityNotFound(_0x1fc63b,null))['then'](saveUpdates(_0x32a7eb[_0xe953('0x55')],null))[_0xe953('0x34')](respondWithResult(_0x1fc63b,null))[_0xe953('0x26')](handleError(_0x1fc63b,null));};var utilLicense=require(_0xe953('0x5b'));exports[_0xe953('0x73')]=function(_0x462a50,_0x5cb591,_0x4fb3a1){var _0x2e32bc=_0xe953('0x5d');var _0x52daaa={'custom':![]};return utilLicense[_0xe953('0x5e')]()[_0xe953('0x34')](function(_0xdc19fb){if(_0xdc19fb){_0x52daaa=_0xdc19fb;}return db[_0xe953('0x3a')][_0xe953('0x54')]({'where':{'id':_0x462a50[_0xe953('0x53')]['id']},'attributes':[_0xe953('0x59'),_0xe953('0x5a'),_0xe953('0x5f'),_0xe953('0x6c'),_0xe953('0x6d'),_0xe953('0x60'),_0xe953('0x61'),_0xe953('0x62')],'raw':!![]});})[_0xe953('0x34')](handleEntityNotFound(_0x5cb591,null))[_0xe953('0x34')](function(_0x1bb19a){if(_0x1bb19a){var _0x23ee04=_0x1bb19a[_0xe953('0x5f')]&&fs[_0xe953('0x69')](path[_0xe953('0x63')](config['root'],_0x2e32bc,_['toLower'](_0x1bb19a['preferred'])))?path['join'](config[_0xe953('0x64')],_0x2e32bc,_[_0xe953('0x65')](_0x1bb19a['preferred'])):path['join'](config['root'],_0x2e32bc,_[_0xe953('0x65')]('default_preferred.png'));var _0x5910c3='default'+_[_0xe953('0x67')]('preferred');if(_0x1bb19a[_0x5910c3]||!_0x52daaa[_0xe953('0x68')]||!_0x52daaa[_0xe953('0x5f')]){_0x23ee04=path[_0xe953('0x63')](config[_0xe953('0x64')],_0x2e32bc,_[_0xe953('0x65')]('default_preferred.png'));}if(!fs[_0xe953('0x69')](_0x23ee04)){throw new db[(_0xe953('0x70'))][(_0xe953('0x74'))](_['upperFirst'](_0xe953('0x5f'))+_0xe953('0x71'));}return _0x5cb591['download'](_0x23ee04);}})['catch'](handleError(_0x5cb591,null));};exports['addFavicon']=function(_0x2af42a,_0x5d0a86,_0x576264){if(_0x2af42a[_0xe953('0x57')]&&_0x2af42a[_0xe953('0x57')]['filename']){_0x2af42a[_0xe953('0x55')][_0xe953('0x6c')]=_0x2af42a['file'][_0xe953('0x58')];}return db[_0xe953('0x3a')]['find']({'where':{'id':_0x2af42a['params']['id']}})['then'](handleEntityNotFound(_0x5d0a86,null))[_0xe953('0x34')](saveUpdates(_0x2af42a[_0xe953('0x55')],null))['then'](respondWithResult(_0x5d0a86,null))[_0xe953('0x26')](handleError(_0x5d0a86,null));};var utilLicense=require(_0xe953('0x5b'));exports[_0xe953('0x75')]=function(_0x98945e,_0x236ccd,_0x33f2d6){var _0x220409=_0xe953('0x5d');var _0x40fc75={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x348177){if(_0x348177){_0x40fc75=_0x348177;}return db[_0xe953('0x3a')]['find']({'where':{'id':_0x98945e[_0xe953('0x53')]['id']},'attributes':[_0xe953('0x59'),'loginLogo',_0xe953('0x5f'),_0xe953('0x6c'),_0xe953('0x6d'),_0xe953('0x60'),_0xe953('0x61'),_0xe953('0x62')],'raw':!![]});})['then'](handleEntityNotFound(_0x236ccd,null))[_0xe953('0x34')](function(_0x474807){if(_0x474807){var _0xb423d3=_0x474807[_0xe953('0x6c')]&&fs[_0xe953('0x69')](path['join'](config['root'],_0x220409,_[_0xe953('0x65')](_0x474807[_0xe953('0x6c')])))?path['join'](config['root'],_0x220409,_[_0xe953('0x65')](_0x474807['favicon'])):path[_0xe953('0x63')](config[_0xe953('0x64')],_0x220409,_[_0xe953('0x65')](_0xe953('0x76')));var _0x221cfc=_0xe953('0x6f')+_['upperFirst'](_0xe953('0x6c'));if(_0x474807[_0x221cfc]||!_0x40fc75[_0xe953('0x68')]){_0xb423d3=path[_0xe953('0x63')](config[_0xe953('0x64')],_0x220409,_['toLower'](_0xe953('0x76')));}if(!fs[_0xe953('0x69')](_0xb423d3)){throw new db[(_0xe953('0x70'))][(_0xe953('0x74'))](_['upperFirst'](_0xe953('0x6c'))+_0xe953('0x71'));}return _0x236ccd[_0xe953('0x6a')](_0xb423d3);}})[_0xe953('0x26')](handleError(_0x236ccd,null));};exports['getDate']=function(_0x464a8b,_0x38ef45){var _0x381d88={'offset':moment()['utcOffset']()};_0x381d88[_0xe953('0x77')]=moment()['utcOffset'](_0x381d88[_0xe953('0x2a')])[_0xe953('0x78')](_0xe953('0x79'));return _0x38ef45[_0xe953('0x28')](0xc8)[_0xe953('0x38')](_0x381d88);};
\ No newline at end of file
index 5bcaeb3..3f78e74 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(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var 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 _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x26ba34,_0x52bb17){var _0x241945=function(_0x1053bb){while(--_0x1053bb){_0x26ba34['push'](_0x26ba34['shift']());}};_0x241945(++_0x52bb17);}(_0xe14b,0x93));var _0xbe14=function(_0x195825,_0x48ad50){_0x195825=_0x195825-0x0;var _0x2278f4=_0xe14b[_0x195825];return _0x2278f4;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f72b612..dc0e694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe05=['ShowSetting','Setting','find','options','raw','where','attributes','include','model','map','lodash','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x4e80af,_0x2db276){var _0x569d80=function(_0x3e1bb2){while(--_0x3e1bb2){_0x4e80af['push'](_0x4e80af['shift']());}};_0x569d80(++_0x2db276);}(_0xbe05,0xea));var _0x5be0=function(_0x5ae731,_0x3e6456){_0x5ae731=_0x5ae731-0x0;var _0x4afd97=_0xbe05[_0x5ae731];return _0x4afd97;};'use strict';var _=require(_0x5be0('0x0'));var util=require('util');var moment=require(_0x5be0('0x1'));var BPromise=require(_0x5be0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5be0('0x3'));var db=require(_0x5be0('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5be0('0x5'));var config=require(_0x5be0('0x6'));var jayson=require(_0x5be0('0x7'));var client=jayson['client'][_0x5be0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x92c4fb,_0x585f1d,_0x337333){return new BPromise(function(_0x2112fa,_0x1b25d9){return client[_0x5be0('0x9')](_0x92c4fb,_0x337333)[_0x5be0('0xa')](function(_0x55e46c){logger[_0x5be0('0xb')](_0x5be0('0xc'),_0x585f1d,_0x5be0('0xd'));logger[_0x5be0('0xe')](_0x5be0('0xf'),_0x585f1d,_0x5be0('0xd'),JSON[_0x5be0('0x10')](_0x55e46c));if(_0x55e46c[_0x5be0('0x11')]){if(_0x55e46c[_0x5be0('0x11')][_0x5be0('0x12')]===0x1f4){logger[_0x5be0('0x11')](_0x5be0('0xc'),_0x585f1d,_0x55e46c['error'][_0x5be0('0x13')]);return _0x1b25d9(_0x55e46c[_0x5be0('0x11')]['message']);}logger[_0x5be0('0x11')](_0x5be0('0xc'),_0x585f1d,_0x55e46c[_0x5be0('0x11')][_0x5be0('0x13')]);return _0x2112fa(_0x55e46c['error']['message']);}else{logger['info'](_0x5be0('0xc'),_0x585f1d,_0x5be0('0xd'));_0x2112fa(_0x55e46c[_0x5be0('0x14')]['message']);}})[_0x5be0('0x15')](function(_0x2a1f40){logger['error']('Setting,\x20%s,\x20%s',_0x585f1d,_0x2a1f40);_0x1b25d9(_0x2a1f40);});});}exports[_0x5be0('0x16')]=function(_0x3413ee){var _0x12c3df=this;return new Promise(function(_0x4b2a28,_0x1413a8){return db[_0x5be0('0x17')][_0x5be0('0x18')]({'raw':_0x3413ee[_0x5be0('0x19')]?_0x3413ee['options'][_0x5be0('0x1a')]===undefined?!![]:![]:!![],'where':_0x3413ee[_0x5be0('0x19')]?_0x3413ee[_0x5be0('0x19')][_0x5be0('0x1b')]||null:null,'attributes':_0x3413ee[_0x5be0('0x19')]?_0x3413ee[_0x5be0('0x19')][_0x5be0('0x1c')]||null:null,'include':_0x3413ee[_0x5be0('0x19')]?_0x3413ee[_0x5be0('0x19')][_0x5be0('0x1d')]?_['map'](_0x3413ee[_0x5be0('0x19')]['include'],function(_0x37ced4){return{'model':db[_0x37ced4[_0x5be0('0x1e')]],'as':_0x37ced4['as'],'attributes':_0x37ced4['attributes'],'include':_0x37ced4[_0x5be0('0x1d')]?_[_0x5be0('0x1f')](_0x37ced4['include'],function(_0x45f4d6){return{'model':db[_0x45f4d6[_0x5be0('0x1e')]],'as':_0x45f4d6['as'],'attributes':_0x45f4d6['attributes'],'include':_0x45f4d6['include']?_[_0x5be0('0x1f')](_0x45f4d6['include'],function(_0x4fd2bc){return{'model':db[_0x4fd2bc[_0x5be0('0x1e')]],'as':_0x4fd2bc['as'],'attributes':_0x4fd2bc[_0x5be0('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f7cbb){logger[_0x5be0('0xb')](_0x5be0('0x16'),_0x3413ee);logger[_0x5be0('0xe')](_0x5be0('0x16'),_0x3413ee,JSON['stringify'](_0x1f7cbb));_0x4b2a28(_0x1f7cbb);})[_0x5be0('0x15')](function(_0x5a2c45){logger['error'](_0x5be0('0x16'),_0x5a2c45['message'],_0x3413ee);_0x1413a8(_0x12c3df[_0x5be0('0x11')](0x1f4,_0x5a2c45['message']));});});};
\ No newline at end of file
+var _0xea46=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','Setting,\x20%s,\x20%s','message','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','then','stringify','lodash'];(function(_0x548212,_0x6b0277){var _0x4c6cd8=function(_0x3e32dc){while(--_0x3e32dc){_0x548212['push'](_0x548212['shift']());}};_0x4c6cd8(++_0x6b0277);}(_0xea46,0x1b9));var _0x6ea4=function(_0x4b8be4,_0x586e85){_0x4b8be4=_0x4b8be4-0x0;var _0x498b9d=_0xea46[_0x4b8be4];return _0x498b9d;};'use strict';var _=require(_0x6ea4('0x0'));var util=require(_0x6ea4('0x1'));var moment=require(_0x6ea4('0x2'));var BPromise=require(_0x6ea4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ea4('0x4'));var db=require(_0x6ea4('0x5'))['db'];var utils=require(_0x6ea4('0x6'));var logger=require(_0x6ea4('0x7'))('rpc');var config=require(_0x6ea4('0x8'));var jayson=require(_0x6ea4('0x9'));var client=jayson[_0x6ea4('0xa')][_0x6ea4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ad377,_0x8feecc,_0x287ff9){return new BPromise(function(_0x282bb8,_0x5758e5){return client[_0x6ea4('0xc')](_0x5ad377,_0x287ff9)['then'](function(_0xb97787){logger[_0x6ea4('0xd')]('Setting,\x20%s,\x20%s',_0x8feecc,_0x6ea4('0xe'));logger[_0x6ea4('0xf')](_0x6ea4('0x10'),_0x8feecc,_0x6ea4('0xe'),JSON['stringify'](_0xb97787));if(_0xb97787[_0x6ea4('0x11')]){if(_0xb97787[_0x6ea4('0x11')][_0x6ea4('0x12')]===0x1f4){logger[_0x6ea4('0x11')](_0x6ea4('0x13'),_0x8feecc,_0xb97787['error'][_0x6ea4('0x14')]);return _0x5758e5(_0xb97787[_0x6ea4('0x11')]['message']);}logger['error'](_0x6ea4('0x13'),_0x8feecc,_0xb97787[_0x6ea4('0x11')][_0x6ea4('0x14')]);return _0x282bb8(_0xb97787['error']['message']);}else{logger[_0x6ea4('0xd')](_0x6ea4('0x13'),_0x8feecc,_0x6ea4('0xe'));_0x282bb8(_0xb97787['result'][_0x6ea4('0x14')]);}})[_0x6ea4('0x15')](function(_0x2501c4){logger[_0x6ea4('0x11')](_0x6ea4('0x13'),_0x8feecc,_0x2501c4);_0x5758e5(_0x2501c4);});});}exports[_0x6ea4('0x16')]=function(_0x36c562){var _0x26f8b4=this;return new Promise(function(_0x88059c,_0x28334c){return db[_0x6ea4('0x17')][_0x6ea4('0x18')]({'raw':_0x36c562[_0x6ea4('0x19')]?_0x36c562[_0x6ea4('0x19')][_0x6ea4('0x1a')]===undefined?!![]:![]:!![],'where':_0x36c562[_0x6ea4('0x19')]?_0x36c562[_0x6ea4('0x19')][_0x6ea4('0x1b')]||null:null,'attributes':_0x36c562[_0x6ea4('0x19')]?_0x36c562[_0x6ea4('0x19')][_0x6ea4('0x1c')]||null:null,'include':_0x36c562[_0x6ea4('0x19')]?_0x36c562['options'][_0x6ea4('0x1d')]?_[_0x6ea4('0x1e')](_0x36c562[_0x6ea4('0x19')]['include'],function(_0x3c7e4b){return{'model':db[_0x3c7e4b[_0x6ea4('0x1f')]],'as':_0x3c7e4b['as'],'attributes':_0x3c7e4b[_0x6ea4('0x1c')],'include':_0x3c7e4b[_0x6ea4('0x1d')]?_['map'](_0x3c7e4b['include'],function(_0x617c5f){return{'model':db[_0x617c5f[_0x6ea4('0x1f')]],'as':_0x617c5f['as'],'attributes':_0x617c5f[_0x6ea4('0x1c')],'include':_0x617c5f['include']?_[_0x6ea4('0x1e')](_0x617c5f[_0x6ea4('0x1d')],function(_0x313d06){return{'model':db[_0x313d06[_0x6ea4('0x1f')]],'as':_0x313d06['as'],'attributes':_0x313d06[_0x6ea4('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6ea4('0x20')](function(_0x94f470){logger[_0x6ea4('0xd')](_0x6ea4('0x16'),_0x36c562);logger[_0x6ea4('0xf')](_0x6ea4('0x16'),_0x36c562,JSON[_0x6ea4('0x21')](_0x94f470));_0x88059c(_0x94f470);})[_0x6ea4('0x15')](function(_0x34aec9){logger[_0x6ea4('0x11')](_0x6ea4('0x16'),_0x34aec9[_0x6ea4('0x14')],_0x36c562);_0x28334c(_0x26f8b4[_0x6ea4('0x11')](0x1f4,_0x34aec9[_0x6ea4('0x14')]));});});};
\ No newline at end of file
index 0c63095..eb2f95a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['/:id','show','getDispositions','/:id/canned_answers','/:id/applications','getInteractions','/:id/status','statusGet','post','create','/:id/dispositions','addAnswer','/:id/notify','/:id/send','send','status','/:id/users','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','describe'];(function(_0x1bebd9,_0x581038){var _0x5b8287=function(_0x5ab008){while(--_0x5ab008){_0x1bebd9['push'](_0x1bebd9['shift']());}};_0x5b8287(++_0x581038);}(_0x5fc3,0xa8));var _0x35fc=function(_0x239dba,_0x309e95){_0x239dba=_0x239dba-0x0;var _0x1ceb11=_0x5fc3[_0x239dba];return _0x1ceb11;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/dispositions',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getAnswers']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getApplications']);router[_0x35fc('0x9')]('/:id/interactions',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router[_0x35fc('0x9')](_0x35fc('0x12'),controller[_0x35fc('0x13')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x14')]('/',auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x14')](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller['addDisposition']);router[_0x35fc('0x14')](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x14')](_0x35fc('0x18'),controller['notify']);router[_0x35fc('0x14')](_0x35fc('0x10'),auth[_0x35fc('0xa')](),controller['addApplications']);router[_0x35fc('0x14')](_0x35fc('0x19'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1a')]);router[_0x35fc('0x14')](_0x35fc('0x12'),controller[_0x35fc('0x1b')]);router[_0x35fc('0x14')](_0x35fc('0x1c'),auth[_0x35fc('0xa')](),controller['addAgents']);router[_0x35fc('0x1d')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1e')]);router[_0x35fc('0x1f')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x20')]);router['delete'](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x21')]);router['delete'](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x22')]);router[_0x35fc('0x1f')]('/:id/users',auth['isAuthenticated'](),controller[_0x35fc('0x23')]);module['exports']=router;
\ No newline at end of file
+var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x2fbb8c,_0x15bc93){var _0x1005b4=function(_0x1a3f97){while(--_0x1a3f97){_0x2fbb8c['push'](_0x2fbb8c['shift']());}};_0x1005b4(++_0x15bc93);}(_0x326f,0xd1));var _0xf326=function(_0x2ca774,_0x100203){_0x2ca774=_0x2ca774-0x0;var _0x4c2926=_0x326f[_0x2ca774];return _0x4c2926;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
index 24c5ae2..7d3d290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6a8=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM','twilio','skebby','connectel','clickatell','bandwidth','csc','intelepeer','BOOLEAN','TEXT'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xa6a8,0x1b9));var _0x8a6a=function(_0x5e236e,_0x450049){_0x5e236e=_0x5e236e-0x0;var _0x351f07=_0xa6a8[_0x5e236e];return _0x351f07;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x8a6a('0x0'));module[_0x8a6a('0x1')]={'name':{'type':Sequelize[_0x8a6a('0x2')],'unique':_0x8a6a('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x8a6a('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x8a6a('0x4')]();}},'phone':{'type':Sequelize[_0x8a6a('0x2')]},'type':{'type':Sequelize[_0x8a6a('0x5')](_0x8a6a('0x6'),_0x8a6a('0x7'),_0x8a6a('0x8'),'clicksend','plivo',_0x8a6a('0x9'),_0x8a6a('0xa'),_0x8a6a('0xb'),'infobip',_0x8a6a('0xc'))},'accountSid':{'type':Sequelize[_0x8a6a('0x2')]},'authId':{'type':Sequelize[_0x8a6a('0x2')]},'authToken':{'type':Sequelize[_0x8a6a('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x8a6a('0x2')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x8a6a('0x2')]},'accountId':{'type':Sequelize[_0x8a6a('0x2')]},'senderString':{'type':Sequelize[_0x8a6a('0x2')]},'deliveryReport':{'type':Sequelize[_0x8a6a('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x8a6a('0x2')]},'notificationTemplate':{'type':Sequelize[_0x8a6a('0xe')],'defaultValue':function(){return _0x8a6a('0xf');}},'notificationSound':{'type':Sequelize[_0x8a6a('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8a6a('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x8a6a('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8a6a('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8a6a('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x8a6a('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8a6a('0x11'),'set':function(_0x355a36){if(!_0x355a36)this['setDataValue']('mandatoryDispositionPauseId',null);this['setDataValue'](_0x8a6a('0x12'),_0x355a36);}}};
\ No newline at end of file
+var _0xe0d7=['STRING','generate','ENUM','twilio','connectel','clicksend','plivo','csc','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','mandatoryDisposition','sequelize'];(function(_0x1f83a5,_0x59843f){var _0x45edf0=function(_0x431e25){while(--_0x431e25){_0x1f83a5['push'](_0x1f83a5['shift']());}};_0x45edf0(++_0x59843f);}(_0xe0d7,0x167));var _0x7e0d=function(_0x2d2d0e,_0x38313d){_0x2d2d0e=_0x2d2d0e-0x0;var _0x3a21f6=_0xe0d7[_0x2d2d0e];return _0x3a21f6;};'use strict';var Sequelize=require(_0x7e0d('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x7e0d('0x1')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x7e0d('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x7e0d('0x1')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x7e0d('0x2')]();}},'phone':{'type':Sequelize[_0x7e0d('0x1')]},'type':{'type':Sequelize[_0x7e0d('0x3')](_0x7e0d('0x4'),'skebby',_0x7e0d('0x5'),_0x7e0d('0x6'),_0x7e0d('0x7'),'clickatell','bandwidth',_0x7e0d('0x8'),'infobip',_0x7e0d('0x9'))},'accountSid':{'type':Sequelize[_0x7e0d('0x1')]},'authId':{'type':Sequelize[_0x7e0d('0x1')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x7e0d('0x3')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x7e0d('0x1')]},'apiKey':{'type':Sequelize[_0x7e0d('0x1')]},'applicationId':{'type':Sequelize[_0x7e0d('0x1')]},'accountId':{'type':Sequelize[_0x7e0d('0x1')]},'senderString':{'type':Sequelize[_0x7e0d('0x1')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x7e0d('0xa')],'defaultValue':function(){return _0x7e0d('0xb');}},'notificationSound':{'type':Sequelize[_0x7e0d('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7e0d('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7e0d('0xd')],'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[_0x7e0d('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x7e0d('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7e0d('0xd')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4aaf01){if(!_0x4aaf01)this['setDataValue']('mandatoryDispositionPauseId',null);this['setDataValue'](_0x7e0d('0xe'),_0x4aaf01);}}};
\ No newline at end of file
index 5549286..86e854f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a87=['redif','inspect','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','omit','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','update','destroy','SmsAccounts','UserProfileResource','stack','name','send','index','Pause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','rows','catch','show','params','mandatoryDispositionPause','includeAll','include','merge','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','notify','sms','Applications','account','applications','orderBy','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','From','Body','messageId','MessageSid','skebby','from','text','connectel','clicksend','message_id','plivo','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','DESC','Contacts','defaults','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','SmsMessage','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','json','addApplications','sequelize','transaction','READ_COMMITTED','SmsApplication','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','fullname','internal','Tags','color','tag','CmList','List','user','Messages','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','statusInt','status_code','groupName','DELIVERED'];(function(_0x2136d5,_0x4b0479){var _0x3bee2e=function(_0x119e88){while(--_0x119e88){_0x2136d5['push'](_0x2136d5['shift']());}};_0x3bee2e(++_0x4b0479);}(_0x6a87,0xf2));var _0x76a8=function(_0x130cf6,_0xce9a1c){_0x130cf6=_0x130cf6-0x0;var _0xb80f78=_0x6a87[_0x130cf6];return _0xb80f78;};'use strict';var emlformat=require(_0x76a8('0x0'));var rimraf=require(_0x76a8('0x1'));var zipdir=require(_0x76a8('0x2'));var jsonpatch=require(_0x76a8('0x3'));var rp=require('request-promise');var moment=require(_0x76a8('0x4'));var BPromise=require(_0x76a8('0x5'));var Mustache=require(_0x76a8('0x6'));var util=require(_0x76a8('0x7'));var path=require(_0x76a8('0x8'));var sox=require(_0x76a8('0x9'));var csv=require(_0x76a8('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76a8('0xb'));var squel=require(_0x76a8('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x76a8('0xa'));var querystring=require('querystring');var Papa=require(_0x76a8('0xd'));var Redis=require(_0x76a8('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x76a8('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x76a8('0x10'));var logger=require(_0x76a8('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x76a8('0x12'));var db=require('../../mysqldb')['db'];config[_0x76a8('0x13')]=_['defaults'](config[_0x76a8('0x13')],{'host':_0x76a8('0x14'),'port':0x18eb});var socket=require(_0x76a8('0x15'))(new Redis(config[_0x76a8('0x13')]));require(_0x76a8('0x16'))[_0x76a8('0x17')](socket);var jayson=require(_0x76a8('0x18'));var client=jayson[_0x76a8('0x19')][_0x76a8('0x1a')]({'port':0x232c});function respondWithRpcPromise(_0x183853,_0x55293b,_0x3a4e45,_0x414682){return new BPromise(function(_0x4994cb,_0x5da782){var _0x54278f=_0x414682||client;return _0x54278f[_0x76a8('0x1b')](_0x183853,_0x3a4e45)[_0x76a8('0x1c')](function(_0x9df3da){logger[_0x76a8('0x1d')](_0x76a8('0x1e'),_0x55293b,_0x76a8('0x1f'));logger[_0x76a8('0x20')](_0x76a8('0x21'),_0x55293b,_0x76a8('0x1f'),JSON['stringify'](_0x9df3da));if(_0x9df3da[_0x76a8('0x22')]){if(_0x9df3da[_0x76a8('0x22')][_0x76a8('0x23')]===0x1f4){logger['error'](_0x76a8('0x1e'),_0x55293b,_0x9df3da[_0x76a8('0x22')][_0x76a8('0x24')]);return _0x5da782(_0x9df3da['error']['message']);}logger[_0x76a8('0x22')]('SmsAccount,\x20%s,\x20%s',_0x55293b,_0x9df3da[_0x76a8('0x22')][_0x76a8('0x24')]);return _0x4994cb(_0x9df3da[_0x76a8('0x22')][_0x76a8('0x24')]);}else{logger[_0x76a8('0x1d')](_0x76a8('0x1e'),_0x55293b,_0x76a8('0x1f'));_0x4994cb(_0x9df3da[_0x76a8('0x25')][_0x76a8('0x24')]);}})['catch'](function(_0x16ed82){logger[_0x76a8('0x22')]('SmsAccount,\x20%s,\x20%s',_0x55293b,_0x16ed82);_0x5da782(_0x16ed82);});});}function respondWithStatusCode(_0x20ee23,_0x5bb254){_0x5bb254=_0x5bb254||0xcc;return function(_0x445e30){if(_0x445e30){return _0x20ee23[_0x76a8('0x26')](_0x5bb254);}return _0x20ee23[_0x76a8('0x27')](_0x5bb254)[_0x76a8('0x28')]();};}function respondWithResult(_0x19e138,_0x1f8fe5){_0x1f8fe5=_0x1f8fe5||0xc8;return function(_0x2027cc){if(_0x2027cc){return _0x19e138[_0x76a8('0x27')](_0x1f8fe5)['json'](_0x2027cc);}};}function respondWithFilteredResult(_0xdd2a3,_0x38758c){return function(_0x4ce123){if(_0x4ce123){var _0x1dd5c1=typeof _0x38758c[_0x76a8('0x29')]===_0x76a8('0x2a')&&typeof _0x38758c[_0x76a8('0x2b')]===_0x76a8('0x2a');var _0x54b37f=_0x4ce123[_0x76a8('0x2c')];var _0x118749=_0x1dd5c1?0x0:_0x38758c[_0x76a8('0x29')];var _0x225052=_0x1dd5c1?_0x4ce123[_0x76a8('0x2c')]:_0x38758c[_0x76a8('0x29')]+_0x38758c[_0x76a8('0x2b')];var _0x4448df;if(_0x225052>=_0x54b37f){_0x225052=_0x54b37f;_0x4448df=0xc8;}else{_0x4448df=0xce;}_0xdd2a3[_0x76a8('0x27')](_0x4448df);return _0xdd2a3[_0x76a8('0x2d')]('Content-Range',_0x118749+'-'+_0x225052+'/'+_0x54b37f)['json'](_0x4ce123);}return null;};}function patchUpdates(_0x56a104){return function(_0x1fb4da){try{jsonpatch[_0x76a8('0x2e')](_0x1fb4da,_0x56a104,!![]);}catch(_0x447f03){return BPromise[_0x76a8('0x2f')](_0x447f03);}return _0x1fb4da[_0x76a8('0x30')]();};}function saveUpdates(_0x35b14a,_0x2b491d){return function(_0xbfec2f){if(_0xbfec2f){return _0xbfec2f[_0x76a8('0x31')](_0x35b14a)[_0x76a8('0x1c')](function(_0x1fc057){return _0x1fc057;});}return null;};}function removeEntity(_0x1c63cf,_0x5c135c){return function(_0x548ffb){if(_0x548ffb){return _0x548ffb[_0x76a8('0x32')]()[_0x76a8('0x1c')](function(){var _0x205424=_0x548ffb['get']({'plain':!![]});var _0x2dcc35=_0x76a8('0x33');return db[_0x76a8('0x34')][_0x76a8('0x32')]({'where':{'type':_0x2dcc35,'resourceId':_0x205424['id']}})[_0x76a8('0x1c')](function(){return _0x548ffb;});})['then'](function(){_0x1c63cf[_0x76a8('0x27')](0xcc)[_0x76a8('0x28')]();});}};}function handleEntityNotFound(_0x4a748e,_0x252074){return function(_0x2d30c9){if(!_0x2d30c9){_0x4a748e['sendStatus'](0x194);}return _0x2d30c9;};}function handleError(_0x11a6c6,_0x4b28e8){_0x4b28e8=_0x4b28e8||0x1f4;return function(_0x35a8f5){logger['error'](_0x35a8f5[_0x76a8('0x35')]);if(_0x35a8f5[_0x76a8('0x36')]){delete _0x35a8f5[_0x76a8('0x36')];}_0x11a6c6[_0x76a8('0x27')](_0x4b28e8)[_0x76a8('0x37')](_0x35a8f5);};}exports[_0x76a8('0x38')]=function(_0x3b34ce,_0x4d3102){var _0x3451ff={'include':[{'model':db[_0x76a8('0x39')],'as':'mandatoryDispositionPause'}]},_0x23c37d={},_0x30b85f={'count':0x0,'rows':[]};var _0x3659de=_[_0x76a8('0x3a')](db[_0x76a8('0x3b')][_0x76a8('0x3c')],function(_0x2d1af4){return{'name':_0x2d1af4[_0x76a8('0x3d')],'type':_0x2d1af4[_0x76a8('0x3e')][_0x76a8('0x3f')]};});_0x23c37d[_0x76a8('0x40')]=_[_0x76a8('0x3a')](_0x3659de,_0x76a8('0x36'));_0x23c37d[_0x76a8('0x41')]=_[_0x76a8('0x42')](_0x3b34ce[_0x76a8('0x41')]);_0x23c37d[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x23c37d['model'],_0x23c37d['query']);_0x3451ff[_0x76a8('0x45')]=_[_0x76a8('0x44')](_0x23c37d[_0x76a8('0x40')],qs[_0x76a8('0x46')](_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x46')]));_0x3451ff[_0x76a8('0x45')]=_0x3451ff[_0x76a8('0x45')][_0x76a8('0x47')]?_0x3451ff[_0x76a8('0x45')]:_0x23c37d[_0x76a8('0x40')];if(!_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x48')](_0x76a8('0x49'))){_0x3451ff[_0x76a8('0x2b')]=qs[_0x76a8('0x2b')](_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x2b')]);_0x3451ff[_0x76a8('0x29')]=qs[_0x76a8('0x29')](_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x29')]);}_0x3451ff[_0x76a8('0x4a')]=qs['sort'](_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x4b')]);_0x3451ff[_0x76a8('0x4c')]=qs[_0x76a8('0x43')](_[_0x76a8('0x4d')](_0x3b34ce[_0x76a8('0x41')],_0x23c37d[_0x76a8('0x43')]),_0x3659de);if(_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x4e')]){_0x3451ff[_0x76a8('0x4c')]=_['merge'](_0x3451ff['where'],{'$or':_[_0x76a8('0x3a')](_0x3659de,function(_0x2706a4){if(_0x2706a4[_0x76a8('0x3e')]!=='VIRTUAL'){var _0x2a5e21={};_0x2a5e21[_0x2706a4['name']]={'$like':'%'+_0x3b34ce[_0x76a8('0x41')][_0x76a8('0x4e')]+'%'};return _0x2a5e21;}})});}_0x3451ff=_['merge']({},_0x3451ff,_0x3b34ce[_0x76a8('0x4f')]);var _0x5c7487={'where':_0x3451ff[_0x76a8('0x4c')]};return db['SmsAccount'][_0x76a8('0x2c')](_0x5c7487)[_0x76a8('0x1c')](function(_0x4efa0d){_0x30b85f[_0x76a8('0x2c')]=_0x4efa0d;if(_0x3b34ce[_0x76a8('0x41')]['includeAll']){_0x3451ff['include']=[{'all':!![]}];}return db[_0x76a8('0x3b')]['findAll'](_0x3451ff);})[_0x76a8('0x1c')](function(_0x45e5dd){_0x30b85f[_0x76a8('0x50')]=_0x45e5dd;return _0x30b85f;})[_0x76a8('0x1c')](respondWithFilteredResult(_0x4d3102,_0x3451ff))[_0x76a8('0x51')](handleError(_0x4d3102,null));};exports[_0x76a8('0x52')]=function(_0x39ce56,_0x36429a){var _0x358716={'raw':![],'where':{'id':_0x39ce56[_0x76a8('0x53')]['id']},'include':[{'model':db[_0x76a8('0x39')],'as':_0x76a8('0x54')}]},_0x457f1b={};_0x457f1b[_0x76a8('0x40')]=_[_0x76a8('0x42')](db['SmsAccount'][_0x76a8('0x3c')]);_0x457f1b['query']=_['keys'](_0x39ce56['query']);_0x457f1b[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x457f1b['model'],_0x457f1b[_0x76a8('0x41')]);_0x358716['attributes']=_[_0x76a8('0x44')](_0x457f1b['model'],qs[_0x76a8('0x46')](_0x39ce56[_0x76a8('0x41')][_0x76a8('0x46')]));_0x358716['attributes']=_0x358716[_0x76a8('0x45')][_0x76a8('0x47')]?_0x358716[_0x76a8('0x45')]:_0x457f1b['model'];if(_0x39ce56['query'][_0x76a8('0x55')]){_0x358716[_0x76a8('0x56')]=[{'all':!![]}];}_0x358716=_[_0x76a8('0x57')]({},_0x358716,_0x39ce56[_0x76a8('0x4f')]);return db['SmsAccount'][_0x76a8('0x58')](_0x358716)[_0x76a8('0x1c')](handleEntityNotFound(_0x36429a,null))['then'](respondWithResult(_0x36429a,null))['catch'](handleError(_0x36429a,null));};exports['create']=function(_0x500fbd,_0x31464a){return db[_0x76a8('0x3b')]['create'](_0x500fbd[_0x76a8('0x59')],{})[_0x76a8('0x1c')](function(_0x2aa9c6){var _0x10985e=_0x500fbd['user'][_0x76a8('0x5a')]({'plain':!![]});if(!_0x10985e)throw new Error(_0x76a8('0x5b'));if(_0x10985e[_0x76a8('0x5c')]==='user'){var _0xb35529=_0x2aa9c6[_0x76a8('0x5a')]({'plain':!![]});var _0x399839=_0x76a8('0x33');return db['UserProfileSection'][_0x76a8('0x58')]({'where':{'name':_0x399839,'userProfileId':_0x10985e[_0x76a8('0x5d')]},'raw':!![]})[_0x76a8('0x1c')](function(_0x219f71){if(_0x219f71&&_0x219f71[_0x76a8('0x5e')]===0x0){return db['UserProfileResource'][_0x76a8('0x5f')]({'name':_0xb35529[_0x76a8('0x36')],'resourceId':_0xb35529['id'],'type':_0x219f71[_0x76a8('0x36')],'sectionId':_0x219f71['id']},{})[_0x76a8('0x1c')](function(){return _0x2aa9c6;});}else{return _0x2aa9c6;}})[_0x76a8('0x51')](function(_0x2ac382){logger['error'](_0x76a8('0x60'),_0x2ac382);throw _0x2ac382;});}return _0x2aa9c6;})[_0x76a8('0x1c')](respondWithResult(_0x31464a,0xc9))[_0x76a8('0x51')](handleError(_0x31464a,null));};exports[_0x76a8('0x31')]=function(_0x5c6b00,_0x4ed890){if(_0x5c6b00[_0x76a8('0x59')]['id']){delete _0x5c6b00[_0x76a8('0x59')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x5c6b00['params']['id']},'include':[{'model':db[_0x76a8('0x39')],'as':_0x76a8('0x54')}]})[_0x76a8('0x1c')](handleEntityNotFound(_0x4ed890,null))[_0x76a8('0x1c')](saveUpdates(_0x5c6b00[_0x76a8('0x59')],null))['then'](respondWithResult(_0x4ed890,null))[_0x76a8('0x51')](handleError(_0x4ed890,null));};exports['destroy']=function(_0x1ad991,_0x3dfe69){return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x1ad991[_0x76a8('0x53')]['id']}})['then'](handleEntityNotFound(_0x3dfe69,null))['then'](removeEntity(_0x3dfe69,null))[_0x76a8('0x51')](handleError(_0x3dfe69,null));};exports[_0x76a8('0x61')]=function(_0x204f57,_0x298544){return db[_0x76a8('0x3b')][_0x76a8('0x61')]()['then'](respondWithResult(_0x298544,null))[_0x76a8('0x51')](handleError(_0x298544,null));};exports[_0x76a8('0x62')]=function(_0x46efb1,_0x446f3c,_0x5d113d){if(_0x46efb1[_0x76a8('0x59')]['id']){delete _0x46efb1['body']['id'];}return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x46efb1[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x446f3c,null))[_0x76a8('0x1c')](function(_0x2e1724){if(_0x2e1724){_0x46efb1['body'][_0x76a8('0x63')]=_0x2e1724['id'];return db[_0x76a8('0x64')][_0x76a8('0x5f')](_0x46efb1['body']);}})['then'](respondWithResult(_0x446f3c,null))[_0x76a8('0x51')](handleError(_0x446f3c,null));};exports[_0x76a8('0x65')]=function(_0x1ab009,_0xfa6b87,_0x2e1157){var _0x183696={'raw':![],'where':{}};var _0x5807d0={};var _0x26d5e7={'count':0x0,'rows':[]};return db[_0x76a8('0x3b')][_0x76a8('0x66')]({'where':{'id':_0x1ab009[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0xfa6b87,null))[_0x76a8('0x1c')](function(_0xfc2347){if(_0xfc2347){_0x5807d0[_0x76a8('0x40')]=_[_0x76a8('0x42')](db[_0x76a8('0x64')][_0x76a8('0x3c')]);_0x5807d0[_0x76a8('0x41')]=_[_0x76a8('0x42')](_0x1ab009[_0x76a8('0x41')]);_0x5807d0[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x5807d0[_0x76a8('0x40')],_0x5807d0[_0x76a8('0x41')]);_0x183696['attributes']=_[_0x76a8('0x44')](_0x5807d0[_0x76a8('0x40')],qs['fields'](_0x1ab009[_0x76a8('0x41')][_0x76a8('0x46')]));_0x183696[_0x76a8('0x45')]=_0x183696[_0x76a8('0x45')][_0x76a8('0x47')]?_0x183696[_0x76a8('0x45')]:_0x5807d0[_0x76a8('0x40')];if(!_0x1ab009[_0x76a8('0x41')][_0x76a8('0x48')](_0x76a8('0x49'))){_0x183696[_0x76a8('0x2b')]=qs[_0x76a8('0x2b')](_0x1ab009[_0x76a8('0x41')][_0x76a8('0x2b')]);_0x183696[_0x76a8('0x29')]=qs[_0x76a8('0x29')](_0x1ab009[_0x76a8('0x41')][_0x76a8('0x29')]);}_0x183696[_0x76a8('0x4a')]=qs[_0x76a8('0x4b')](_0x1ab009[_0x76a8('0x41')][_0x76a8('0x4b')]);_0x183696[_0x76a8('0x4c')]=qs['filters'](_[_0x76a8('0x4d')](_0x1ab009[_0x76a8('0x41')],_0x5807d0[_0x76a8('0x43')]));_0x183696[_0x76a8('0x4c')][_0x76a8('0x63')]=_0xfc2347['id'];if(_0x1ab009[_0x76a8('0x41')][_0x76a8('0x4e')]){_0x183696[_0x76a8('0x4c')]=_['merge'](_0x183696[_0x76a8('0x4c')],{'$or':_['map'](_0x183696[_0x76a8('0x45')],function(_0x387d70){var _0x17195a={};_0x17195a[_0x387d70]={'$like':'%'+_0x1ab009[_0x76a8('0x41')]['filter']+'%'};return _0x17195a;})});}_0x183696=_[_0x76a8('0x57')]({},_0x183696,_0x1ab009['options']);return db[_0x76a8('0x64')][_0x76a8('0x2c')]({'where':_0x183696['where']})['then'](function(_0x5824d1){_0x26d5e7[_0x76a8('0x2c')]=_0x5824d1;if(_0x1ab009[_0x76a8('0x41')][_0x76a8('0x55')]){_0x183696[_0x76a8('0x56')]=[{'all':!![]}];}return db[_0x76a8('0x64')][_0x76a8('0x67')](_0x183696);})[_0x76a8('0x1c')](function(_0x4826f1){_0x26d5e7[_0x76a8('0x50')]=_0x4826f1;return _0x26d5e7;});}})['then'](respondWithFilteredResult(_0xfa6b87,_0x183696))['catch'](handleError(_0xfa6b87,null));};exports[_0x76a8('0x68')]=function(_0x5ad154,_0x4d6012,_0x4f4c65){return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x5ad154[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x4d6012,null))[_0x76a8('0x1c')](function(_0x28f8a9){if(_0x28f8a9){return _0x28f8a9['removeDispositions'](_0x5ad154[_0x76a8('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x4d6012,null))['catch'](handleError(_0x4d6012,null));};exports[_0x76a8('0x69')]=function(_0x4dab8a,_0x5eea56,_0x3f23f6){if(_0x4dab8a['body']['id']){delete _0x4dab8a[_0x76a8('0x59')]['id'];}return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x4dab8a[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x5eea56,null))['then'](function(_0x30cd92){if(_0x30cd92){_0x4dab8a['body'][_0x76a8('0x63')]=_0x30cd92['id'];return db[_0x76a8('0x6a')][_0x76a8('0x5f')](_0x4dab8a[_0x76a8('0x59')]);}})[_0x76a8('0x1c')](respondWithResult(_0x5eea56,null))['catch'](handleError(_0x5eea56,null));};exports[_0x76a8('0x6b')]=function(_0xe6480d,_0x231004,_0x36f110){var _0x153b68={'raw':![],'where':{}};var _0x3c7974={};var _0x5747bd={'count':0x0,'rows':[]};return db[_0x76a8('0x3b')]['findOne']({'where':{'id':_0xe6480d['params']['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x231004,null))['then'](function(_0x1c2336){if(_0x1c2336){_0x3c7974[_0x76a8('0x40')]=_[_0x76a8('0x42')](db[_0x76a8('0x6a')][_0x76a8('0x3c')]);_0x3c7974[_0x76a8('0x41')]=_[_0x76a8('0x42')](_0xe6480d[_0x76a8('0x41')]);_0x3c7974[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x3c7974[_0x76a8('0x40')],_0x3c7974[_0x76a8('0x41')]);_0x153b68[_0x76a8('0x45')]=_[_0x76a8('0x44')](_0x3c7974[_0x76a8('0x40')],qs[_0x76a8('0x46')](_0xe6480d[_0x76a8('0x41')][_0x76a8('0x46')]));_0x153b68['attributes']=_0x153b68[_0x76a8('0x45')][_0x76a8('0x47')]?_0x153b68[_0x76a8('0x45')]:_0x3c7974[_0x76a8('0x40')];if(!_0xe6480d[_0x76a8('0x41')][_0x76a8('0x48')](_0x76a8('0x49'))){_0x153b68[_0x76a8('0x2b')]=qs[_0x76a8('0x2b')](_0xe6480d[_0x76a8('0x41')][_0x76a8('0x2b')]);_0x153b68[_0x76a8('0x29')]=qs['offset'](_0xe6480d[_0x76a8('0x41')]['offset']);}_0x153b68[_0x76a8('0x4a')]=qs['sort'](_0xe6480d['query'][_0x76a8('0x4b')]);_0x153b68[_0x76a8('0x4c')]=qs[_0x76a8('0x43')](_[_0x76a8('0x4d')](_0xe6480d[_0x76a8('0x41')],_0x3c7974[_0x76a8('0x43')]));_0x153b68[_0x76a8('0x4c')][_0x76a8('0x63')]=_0x1c2336['id'];if(_0xe6480d['query'][_0x76a8('0x4e')]){_0x153b68[_0x76a8('0x4c')]=_[_0x76a8('0x57')](_0x153b68[_0x76a8('0x4c')],{'$or':_[_0x76a8('0x3a')](_0x153b68[_0x76a8('0x45')],function(_0x43ac25){var _0x562def={};_0x562def[_0x43ac25]={'$like':'%'+_0xe6480d[_0x76a8('0x41')]['filter']+'%'};return _0x562def;})});}_0x153b68=_['merge']({},_0x153b68,_0xe6480d[_0x76a8('0x4f')]);return db[_0x76a8('0x6a')][_0x76a8('0x2c')]({'where':_0x153b68[_0x76a8('0x4c')]})[_0x76a8('0x1c')](function(_0x47a84c){_0x5747bd[_0x76a8('0x2c')]=_0x47a84c;if(_0xe6480d[_0x76a8('0x41')][_0x76a8('0x55')]){_0x153b68[_0x76a8('0x56')]=[{'all':!![]}];}return db[_0x76a8('0x6a')][_0x76a8('0x67')](_0x153b68);})[_0x76a8('0x1c')](function(_0x27b670){_0x5747bd[_0x76a8('0x50')]=_0x27b670;return _0x5747bd;});}})['then'](respondWithFilteredResult(_0x231004,_0x153b68))['catch'](handleError(_0x231004,null));};exports[_0x76a8('0x6c')]=function(_0x3455b1,_0x58e2d7,_0x21edc0){return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x3455b1[_0x76a8('0x53')]['id']}})['then'](handleEntityNotFound(_0x58e2d7,null))[_0x76a8('0x1c')](function(_0x122530){if(_0x122530){return _0x122530[_0x76a8('0x6c')](_0x3455b1[_0x76a8('0x41')][_0x76a8('0x6d')]);}})['then'](respondWithStatusCode(_0x58e2d7,null))['catch'](handleError(_0x58e2d7,null));};exports[_0x76a8('0x6e')]=function(_0x306d7d,_0x3598ad,_0x3c6959){var _0xff716e={'channel':_0x76a8('0x6f')};var _0x4af33d=[];var _0x55bfba=[];var _0x383bb9={};return db['SmsAccount'][_0x76a8('0x58')]({'where':{'id':_0x306d7d['params']['id']},'include':[{'model':db['SmsApplication'],'as':_0x76a8('0x70')}]})[_0x76a8('0x1c')](handleEntityNotFound(_0x3598ad,null))['then'](function(_0x32cde1){_0xff716e[_0x76a8('0x71')]=_0x32cde1;_0xff716e[_0x76a8('0x72')]=_[_0x76a8('0x73')](_0x32cde1[_0x76a8('0x70')],['priority'],[_0x76a8('0x74')]);if(_0xff716e[_0x76a8('0x71')][_0x76a8('0x70')]){delete _0xff716e[_0x76a8('0x71')][_0x76a8('0x70')];}return db[_0x76a8('0x75')][_0x76a8('0x61')]();})['then'](function(_0x2caabc){if(!_0x2caabc){throw new db[(_0x76a8('0x76'))]['ValidationError'](_0x76a8('0x77'));}_0x4af33d=_[_0x76a8('0x78')](_['keys'](_0x2caabc),[_0x76a8('0x79'),_0x76a8('0x7a')]);_0x55bfba=_['difference'](_[_0x76a8('0x42')](_0x2caabc),[_0x76a8('0x79'),_0x76a8('0x7a'),_0x76a8('0x7b'),_0x76a8('0x7c')]);_0xff716e['body']={'mapKey':_0x76a8('0x7d')};if(_0xff716e[_0x76a8('0x71')][_0x76a8('0x3e')]){switch(_0xff716e[_0x76a8('0x71')][_0x76a8('0x3e')]){case _0x76a8('0x7e'):_0xff716e['body']['from']=_0x306d7d['body'][_0x76a8('0x7f')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x80')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')]=_0x306d7d['body'][_0x76a8('0x82')];break;case _0x76a8('0x83'):_0xff716e['body'][_0x76a8('0x84')]='+'+_0x306d7d[_0x76a8('0x59')]['sender'];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x85')];break;case _0x76a8('0x86'):_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x84')];_0xff716e[_0x76a8('0x59')]['body']=_0x306d7d['body'][_0x76a8('0x24')];break;case _0x76a8('0x87'):_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x84')];_0xff716e[_0x76a8('0x59')]['body']=_0x306d7d['body'][_0x76a8('0x59')];_0xff716e['body'][_0x76a8('0x81')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x88')];break;case _0x76a8('0x89'):_0xff716e[_0x76a8('0x59')]['from']=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x7f')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d[_0x76a8('0x59')]['Text'];_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')]=_0x306d7d[_0x76a8('0x59')]['MessageUUID'];break;case _0x76a8('0x8a'):_0xff716e[_0x76a8('0x59')]['from']='+'+_0x306d7d[_0x76a8('0x59')][_0x76a8('0x8b')][0x0][_0x76a8('0x84')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d[_0x76a8('0x59')]['results'][0x0][_0x76a8('0x85')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')]=_0x306d7d[_0x76a8('0x59')]['results'][0x0][_0x76a8('0x81')];break;case _0x76a8('0x8c'):_0xff716e['body'][_0x76a8('0x84')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x8d')];_0xff716e['body'][_0x76a8('0x59')]=_0x306d7d['body'][_0x76a8('0x8e')][_0x76a8('0x24')];break;case _0x76a8('0x8f'):_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x90')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x85')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')]=_0x306d7d[_0x76a8('0x59')][_0x76a8('0x91')];break;case _0x76a8('0x92'):_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')]=_0x306d7d['body'][0x0]['message']['id'];_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')]=_0x306d7d['body'][0x0][_0x76a8('0x24')][_0x76a8('0x84')];_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]=_0x306d7d['body'][0x0][_0x76a8('0x24')][_0x76a8('0x85')];break;case _0x76a8('0x93'):_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')]=_0x306d7d[_0x76a8('0x59')]['from'];_0xff716e[_0x76a8('0x59')]['body']=_0x306d7d['body']['message'];_0xff716e[_0x76a8('0x59')]['messageId']=_0x306d7d['body']['refid'];break;}}if(_0xff716e[_0x76a8('0x59')]['id']){delete _0xff716e[_0x76a8('0x59')]['id'];}if(_[_0x76a8('0x94')](_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')])){throw new db[(_0x76a8('0x76'))][(_0x76a8('0x95'))](_0x76a8('0x96'));}if(_[_0x76a8('0x94')](_0xff716e['body'][_0x76a8('0x59')])||_0xff716e[_0x76a8('0x59')][_0x76a8('0x59')]===''){throw new db[(_0x76a8('0x76'))][(_0x76a8('0x95'))](_0x76a8('0x97'));}if(_[_0x76a8('0x94')](_0xff716e[_0x76a8('0x59')][_0x76a8('0x98')])){throw new db[(_0x76a8('0x76'))][(_0x76a8('0x95'))](_0x76a8('0x99')+_0x55bfba);}if(!_['includes'](_0x55bfba,_0xff716e[_0x76a8('0x59')][_0x76a8('0x98')])){throw new db[(_0x76a8('0x76'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55bfba);}_0x383bb9[_0xff716e[_0x76a8('0x59')]['mapKey']]=_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')];return db['CmList'][_0x76a8('0x58')]({'where':{'id':_0xff716e[_0x76a8('0x71')][_0x76a8('0x7c')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x383bb9,'limit':0x1,'order':[['updatedAt',_0x76a8('0x9a')]]}]});})['then'](handleEntityNotFound(_0x3598ad,null))['then'](function(_0x201f71){if(_0x201f71){_0xff716e['list']=_['omit'](_0x201f71,[_0x76a8('0x9b')]);if(_0x201f71['Contacts']['length']){return _0x201f71['Contacts'][0x0];}var _0x1366b4=_[_0x76a8('0x9c')](_0xff716e['body'],{'firstName':_0xff716e['body'][_0x76a8('0x84')],'ListId':_0x201f71['id']});_0x1366b4[_0xff716e[_0x76a8('0x59')]['mapKey']]=_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')];return db[_0x76a8('0x75')][_0x76a8('0x5f')](_0x1366b4,{'fields':_0x4af33d,'raw':!![]});}})[_0x76a8('0x1c')](handleEntityNotFound(_0x3598ad,null))[_0x76a8('0x1c')](function(_0x4b4383){if(_0x4b4383){_0xff716e[_0x76a8('0x9d')]=_0x4b4383;var _0x53438e={'ContactId':_0x4b4383['id'],'phone':_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')],'SmsAccountId':_0x306d7d[_0x76a8('0x53')]['id']};var _0x2b8e29={'ContactId':_0x4b4383['id'],'SmsAccountId':_0x306d7d[_0x76a8('0x53')]['id'],'closed':![]};return db[_0x76a8('0x9e')]['find']({'where':_0x2b8e29})[_0x76a8('0x1c')](function(_0x2de233){if(_0x2de233){return[_0x2de233,![]];}return db['SmsInteraction']['create'](_0x53438e)[_0x76a8('0x1c')](function(_0xe37e37){return[_0xe37e37,!![]];});});}})[_0x76a8('0x9f')](function(_0x5294a7,_0x4ec052){_0xff716e[_0x76a8('0xa0')]=_0x5294a7[_0x76a8('0x5a')]({'plain':!![]});_0xff716e[_0x76a8('0xa0')][_0x76a8('0xa1')]=![];if(_0x4ec052){if(_0xff716e[_0x76a8('0x71')][_0x76a8('0xa2')]){_0xff716e[_0x76a8('0x72')][_0x76a8('0xa3')]({'id':0x0,'priority':_0xff716e['applications'][_0x76a8('0x47')]+0x1,'app':_0x76a8('0xa4'),'appdata':_0x76a8('0xa5'),'interval':'*,*,*,*'});}_0xff716e[_0x76a8('0xa0')][_0x76a8('0xa1')]=!![];}return db[_0x76a8('0xa6')][_0x76a8('0x5f')]({'phone':_0xff716e[_0x76a8('0x59')][_0x76a8('0x84')],'messageId':_0xff716e[_0x76a8('0x59')][_0x76a8('0x81')],'body':_0xff716e[_0x76a8('0x59')]['body'],'SmsAccountId':_0x306d7d[_0x76a8('0x53')]['id'],'SmsInteractionId':_0x5294a7['id'],'direction':'in','ContactId':_0x5294a7[_0x76a8('0xa7')],'AttachmentId':_0xff716e['body']['AttachmentId']});})[_0x76a8('0x1c')](function(_0x2b8875){_0xff716e[_0x76a8('0x24')]=_0x2b8875;if(_0xff716e['interaction'][_0x76a8('0xa8')]){return db[_0x76a8('0xa9')]['find']({'attributes':['id',_0x76a8('0x36')],'where':{'id':_0xff716e[_0x76a8('0xa0')][_0x76a8('0xa8')]}})['then'](function(_0x53466c){if(_0x53466c){_0xff716e[_0x76a8('0x72')][_0x76a8('0xaa')]({'id':0x0,'priority':0x0,'app':_0x76a8('0xab'),'appdata':_0x53466c[_0x76a8('0x36')]+','+(_0xff716e[_0x76a8('0x71')][_0x76a8('0xac')]||0xa),'interval':_0x76a8('0xad')});}return respondWithRpcPromise(_0x76a8('0xae'),_0x76a8('0xaf'),_0xff716e);});}return respondWithRpcPromise(_0x76a8('0xae'),'startRouting',_0xff716e);})[_0x76a8('0x1c')](function(_0x1a5153){if(_0x1a5153){var _0x37778e=0xc8;var _0x8e2ecf=_0x76a8('0xb0');logger[_0x76a8('0x1d')](_0x76a8('0x21'),_0x8e2ecf,_0x37778e,_0x76a8('0xb1'));logger[_0x76a8('0x20')](_0x76a8('0xb2'),_0x8e2ecf,_0x37778e,'entity\x20found',JSON['stringify'](_0x1a5153));if(_0xff716e[_0x76a8('0x71')][_0x76a8('0x3e')]==='twilio'){return _0x3598ad[_0x76a8('0x27')](_0x37778e)[_0x76a8('0x2d')](_0x76a8('0xb3'),_0x76a8('0xb4'))[_0x76a8('0x37')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x3598ad[_0x76a8('0x27')](_0x37778e)[_0x76a8('0xb5')](_0x1a5153);}}})[_0x76a8('0x51')](handleError(_0x3598ad,null));};exports[_0x76a8('0xb6')]=function(_0x2c9a24,_0x550a19){var _0xec51b4=_0x2c9a24[_0x76a8('0x53')]['id'];var _0x116e6f=_0x2c9a24[_0x76a8('0x59')];var _0x12f847=0xc8;var _0x451b36=null;return db[_0x76a8('0xb7')][_0x76a8('0xb8')]({'isolationLevel':db[_0x76a8('0xb7')]['Transaction']['ISOLATION_LEVELS'][_0x76a8('0xb9')]},function(_0x1138fd){return db['SmsAccount']['findOne']({'where':{'id':_0xec51b4},'transaction':_0x1138fd})[_0x76a8('0x1c')](function(_0x44def1){if(_0x44def1){return db[_0x76a8('0xba')][_0x76a8('0x32')]({'where':{'SmsAccountId':_0xec51b4},'transaction':_0x1138fd})[_0x76a8('0x1c')](function(){var _0xbbcb84=_['map'](_0x116e6f,function(_0x5b6ad4){_0x5b6ad4[_0x76a8('0x63')]=_0xec51b4;return _0x5b6ad4;});return db[_0x76a8('0xba')][_0x76a8('0xbb')](_0xbbcb84,{'transaction':_0x1138fd});});}else{_0x12f847=0x194;_0x451b36=[];}});})[_0x76a8('0x1c')](function(){if(_0x12f847!==0x194){return db[_0x76a8('0xba')][_0x76a8('0xbc')]({'where':{'SmsAccountId':_0xec51b4},'order':_0x76a8('0xbd')})[_0x76a8('0x1c')](function(_0x7172da){_0x451b36=_0x7172da;});}})['catch'](function(_0x51a9e2){_0x12f847=0x1f4;logger[_0x76a8('0x22')](_0x51a9e2[_0x76a8('0x35')]);if(_0x51a9e2[_0x76a8('0x36')]){delete _0x51a9e2[_0x76a8('0x36')];}_0x451b36=_0x51a9e2;})['finally'](function(){if(_0x451b36===null){_0x550a19[_0x76a8('0x26')](_0x12f847);}else{if(_0x12f847===0x1f4){_0x550a19['status'](_0x12f847)[_0x76a8('0x37')](_0x451b36);}else{_0x550a19['status'](_0x12f847)[_0x76a8('0xb5')](_0x451b36);}}});};exports['getApplications']=function(_0x5f4d4c,_0x56e1e8,_0x33e22d){var _0x49ebd4={};var _0x3b971d={};var _0x1d1785;var _0x366ce4;return db[_0x76a8('0x3b')][_0x76a8('0x66')]({'where':{'id':_0x5f4d4c[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x56e1e8,null))[_0x76a8('0x1c')](function(_0x322f4a){if(_0x322f4a){_0x1d1785=_0x322f4a;_0x3b971d[_0x76a8('0x40')]=_['keys'](db[_0x76a8('0xba')][_0x76a8('0x3c')]);_0x3b971d[_0x76a8('0x41')]=_['keys'](_0x5f4d4c[_0x76a8('0x41')]);_0x3b971d[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x3b971d[_0x76a8('0x40')],_0x3b971d[_0x76a8('0x41')]);_0x49ebd4[_0x76a8('0x45')]=_['intersection'](_0x3b971d[_0x76a8('0x40')],qs[_0x76a8('0x46')](_0x5f4d4c['query'][_0x76a8('0x46')]));_0x49ebd4['attributes']=_0x49ebd4[_0x76a8('0x45')]['length']?_0x49ebd4[_0x76a8('0x45')]:_0x3b971d[_0x76a8('0x40')];_0x49ebd4[_0x76a8('0x4a')]=qs[_0x76a8('0x4b')](_0x5f4d4c[_0x76a8('0x41')][_0x76a8('0x4b')]);_0x49ebd4['where']=qs[_0x76a8('0x43')](_[_0x76a8('0x4d')](_0x5f4d4c['query'],_0x3b971d[_0x76a8('0x43')]));if(_0x5f4d4c['query']['filter']){_0x49ebd4[_0x76a8('0x4c')]=_[_0x76a8('0x57')](_0x49ebd4[_0x76a8('0x4c')],{'$or':_[_0x76a8('0x3a')](_0x49ebd4[_0x76a8('0x45')],function(_0x2966f7){var _0x5b1f17={};_0x5b1f17[_0x2966f7]={'$like':'%'+_0x5f4d4c[_0x76a8('0x41')]['filter']+'%'};return _0x5b1f17;})});}_0x49ebd4=_[_0x76a8('0x57')]({},_0x49ebd4,_0x5f4d4c[_0x76a8('0x4f')]);return _0x1d1785['getApplications'](_0x49ebd4);}})[_0x76a8('0x1c')](function(_0x8d36d6){if(_0x8d36d6){_0x366ce4=_0x8d36d6[_0x76a8('0x47')];if(!_0x5f4d4c[_0x76a8('0x41')][_0x76a8('0x48')]('nolimit')){_0x49ebd4[_0x76a8('0x2b')]=qs[_0x76a8('0x2b')](_0x5f4d4c[_0x76a8('0x41')]['limit']);_0x49ebd4['offset']=qs[_0x76a8('0x29')](_0x5f4d4c[_0x76a8('0x41')][_0x76a8('0x29')]);}return _0x1d1785[_0x76a8('0xbe')](_0x49ebd4);}})[_0x76a8('0x1c')](function(_0x3e8198){if(_0x3e8198){return _0x3e8198?{'count':_0x366ce4,'rows':_0x3e8198}:null;}})[_0x76a8('0x1c')](respondWithResult(_0x56e1e8,null))[_0x76a8('0x51')](handleError(_0x56e1e8,null));};exports[_0x76a8('0xbf')]=function(_0x12500b,_0x302e4a,_0x464774){var _0x3469f5={'raw':![],'where':{}};var _0x3d2e98={};var _0x192979={'count':0x0,'rows':[]};return db['SmsAccount'][_0x76a8('0x66')]({'where':{'id':_0x12500b['params']['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x302e4a,null))[_0x76a8('0x1c')](function(_0x462e88){if(_0x462e88){_0x3d2e98[_0x76a8('0x40')]=_[_0x76a8('0x42')](db[_0x76a8('0x9e')][_0x76a8('0x3c')]);_0x3d2e98[_0x76a8('0x41')]=_['keys'](_0x12500b['query']);_0x3d2e98[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x3d2e98[_0x76a8('0x40')],_0x3d2e98[_0x76a8('0x41')]);_0x3469f5[_0x76a8('0x45')]=_[_0x76a8('0x44')](_0x3d2e98[_0x76a8('0x40')],qs[_0x76a8('0x46')](_0x12500b[_0x76a8('0x41')]['fields']));_0x3469f5[_0x76a8('0x45')]=_0x3469f5['attributes'][_0x76a8('0x47')]?_0x3469f5[_0x76a8('0x45')]:_0x3d2e98[_0x76a8('0x40')];if(!_0x12500b[_0x76a8('0x41')]['hasOwnProperty']('nolimit')){_0x3469f5[_0x76a8('0x2b')]=qs['limit'](_0x12500b[_0x76a8('0x41')][_0x76a8('0x2b')]);_0x3469f5['offset']=qs[_0x76a8('0x29')](_0x12500b[_0x76a8('0x41')][_0x76a8('0x29')]);}_0x3469f5[_0x76a8('0x4a')]=qs['sort'](_0x12500b[_0x76a8('0x41')]['sort']);_0x3469f5[_0x76a8('0x4c')]=qs['filters'](_[_0x76a8('0x4d')](_0x12500b['query'],_0x3d2e98[_0x76a8('0x43')]));_0x3469f5['where'][_0x76a8('0x63')]=_0x462e88['id'];if(_0x12500b[_0x76a8('0x41')]['filter']){_0x3469f5[_0x76a8('0x4c')]=_[_0x76a8('0x57')](_0x3469f5[_0x76a8('0x4c')],{'$or':_[_0x76a8('0x3a')](_0x3469f5[_0x76a8('0x45')],function(_0x3ca3b9){var _0x480029={};_0x480029[_0x3ca3b9]={'$like':'%'+_0x12500b['query'][_0x76a8('0x4e')]+'%'};return _0x480029;})});}_0x3469f5=_[_0x76a8('0x57')]({},_0x3469f5,_0x12500b[_0x76a8('0x4f')]);return db[_0x76a8('0x9e')][_0x76a8('0x2c')]({'where':_0x3469f5[_0x76a8('0x4c')]})[_0x76a8('0x1c')](function(_0x30a713){_0x192979[_0x76a8('0x2c')]=_0x30a713;if(_0x12500b[_0x76a8('0x41')][_0x76a8('0x55')]){_0x3469f5[_0x76a8('0x56')]=[{'model':db[_0x76a8('0x75')],'as':_0x76a8('0xc0'),'required':![]},{'model':db[_0x76a8('0xa9')],'as':_0x76a8('0xc1'),'attributes':[_0x76a8('0x36'),_0x76a8('0xc2'),_0x76a8('0xc3')],'required':![]},{'model':db['Tag'],'as':_0x76a8('0xc4'),'attributes':['id',_0x76a8('0x36'),_0x76a8('0xc5')],'where':_0x12500b[_0x76a8('0x41')][_0x76a8('0xc6')]?{'id':_0x12500b[_0x76a8('0x41')][_0x76a8('0xc6')]}:undefined,'required':_0x12500b[_0x76a8('0x41')][_0x76a8('0xc6')]?!![]:![]}];}return db['SmsInteraction'][_0x76a8('0x67')](_0x3469f5);})['then'](function(_0xa1afa9){_0x192979[_0x76a8('0x50')]=_0xa1afa9;return _0x192979;});}})[_0x76a8('0x1c')](respondWithFilteredResult(_0x302e4a,_0x3469f5))['catch'](handleError(_0x302e4a,null));};exports['send']=function(_0x341aee,_0x22b02f,_0x2bf672){var _0x190288,_0x49f05b,_0x2cdf38;if(_[_0x76a8('0x94')](_0x341aee[_0x76a8('0x59')]['body'])||_0x341aee[_0x76a8('0x59')][_0x76a8('0x59')]===''){throw new db[(_0x76a8('0x76'))][(_0x76a8('0x95'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x341aee[_0x76a8('0x59')]['to'])){throw new db[(_0x76a8('0x76'))][(_0x76a8('0x95'))]('to\x20is\x20mandatory');}_0x190288=_0x341aee['body']['to'];return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x341aee[_0x76a8('0x53')]['id']},'include':[{'model':db[_0x76a8('0xc7')],'as':_0x76a8('0xc8'),'include':[{'model':db['CmContact'],'as':_0x76a8('0x9b'),'where':{'mobile':_0x190288},'limit':0x1,'order':[[_0x76a8('0x7a'),_0x76a8('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x22b02f,null))['then'](function(_0x247981){if(_0x247981&&_0x247981[_0x76a8('0xc8')]){_0x49f05b=_0x247981[_0x76a8('0x5a')]({'plain':!![]});if(_0x49f05b[_0x76a8('0xc8')]&&_0x49f05b[_0x76a8('0xc8')][_0x76a8('0x9b')][_0x76a8('0x47')]){return _0x49f05b[_0x76a8('0xc8')][_0x76a8('0x9b')][0x0];}return db[_0x76a8('0x75')]['create'](_['defaults'](_0x341aee[_0x76a8('0x59')],{'firstName':_0x190288,'mobile':_0x190288,'phone':_0x190288,'ListId':_0x49f05b[_0x76a8('0x7c')]}));}})[_0x76a8('0x1c')](handleEntityNotFound(_0x22b02f,null))[_0x76a8('0x1c')](function(_0x255bc0){if(_0x255bc0){_0x2cdf38=_0x255bc0;return db['SmsInteraction']['find']({'where':{'ContactId':_0x2cdf38['id'],'closed':![],'SmsAccountId':_0x49f05b['id']}})[_0x76a8('0x1c')](function(_0xfc94b6){if(_0xfc94b6){return[_0xfc94b6,![]];}return db['SmsInteraction'][_0x76a8('0x5f')]({'UserId':_0x341aee[_0x76a8('0xc9')]['id'],'ContactId':_0x2cdf38['id'],'SmsAccountId':_0x49f05b['id'],'phone':_0x190288,'firstMsgDirection':'out','Messages':[_['merge'](_0x341aee[_0x76a8('0x59')],{'read':![],'body':_0x341aee[_0x76a8('0x59')]['body'],'phone':_0x190288,'SmsAccountId':_0x49f05b['id'],'UserId':_0x341aee['user']['id'],'ContactId':_0x2cdf38['id']})]},{'include':[{'model':db[_0x76a8('0xa6')],'as':'Messages'}]})[_0x76a8('0x1c')](function(_0x5c9e92){return[_0x5c9e92,!![]];});});}})[_0x76a8('0x9f')](function(_0x1e8590,_0x28e10a){if(_0x28e10a){return _0x1e8590;}return db[_0x76a8('0xa6')][_0x76a8('0x5f')](_['merge'](_0x341aee[_0x76a8('0x59')],{'read':![],'body':_0x341aee[_0x76a8('0x59')][_0x76a8('0x59')],'phone':_0x190288,'SmsAccountId':_0x49f05b['id'],'SmsInteractionId':_0x1e8590['id'],'UserId':_0x341aee[_0x76a8('0xc9')]['id'],'ContactId':_0x2cdf38['id']}))[_0x76a8('0x1c')](function(_0x2b526e){_0x1e8590['dataValues'][_0x76a8('0xca')]=[];_0x1e8590[_0x76a8('0xcb')]['Messages'][_0x76a8('0xa3')](_0x2b526e[_0x76a8('0xcb')]);return _0x1e8590;});})['then'](respondWithResult(_0x22b02f,null))[_0x76a8('0x51')](handleError(_0x22b02f,null));};exports[_0x76a8('0x27')]=function(_0x2bce50,_0x58e882,_0x5d23ba){if(_0x2bce50['body']['id']){delete _0x2bce50['body']['id'];}var _0x541fa4,_0x25185d,_0x165928;return db[_0x76a8('0x3b')]['find']({'where':{'id':_0x2bce50[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x58e882,null))[_0x76a8('0x1c')](function(_0x51263d){if(_0x51263d){_0x165928=_0x51263d;logger[_0x76a8('0x20')](_0x76a8('0x21'),_0x76a8('0x27'),_0x76a8('0xcc'),_0x51263d[_0x76a8('0x3e')],util['inspect'](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));switch(_0x51263d['type']){case _0x76a8('0x83'):if(_0x2bce50[_0x76a8('0x59')][_0x76a8('0xcd')]&&_0x2bce50[_0x76a8('0x59')][_0x76a8('0x27')]){_0x25185d=_0x2bce50[_0x76a8('0x59')][_0x76a8('0x27')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50[_0x76a8('0x59')][_0x76a8('0xcd')]}});}break;case'connectel':if(_0x2bce50['body']['requestid']&&_0x2bce50[_0x76a8('0x59')]['statusInt']){_0x25185d=_0x2bce50[_0x76a8('0x59')][_0x76a8('0xce')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50[_0x76a8('0x59')]['requestid']}});}break;case'clicksend':if(_0x2bce50[_0x76a8('0x59')]['message_id']&&_0x2bce50[_0x76a8('0x59')][_0x76a8('0xcf')]){_0x25185d=_0x2bce50[_0x76a8('0x59')][_0x76a8('0xcf')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50['body'][_0x76a8('0x88')]}});}break;case'infobip':var _0x394f7c=_0x2bce50[_0x76a8('0x59')][_0x76a8('0x8b')][0x0];if(_0x394f7c[_0x76a8('0x81')]&&_0x394f7c[_0x76a8('0x27')][_0x76a8('0xd0')]===_0x76a8('0xd1')){_0x25185d=_0x394f7c[_0x76a8('0x27')][_0x76a8('0xd0')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x394f7c[_0x76a8('0x81')]}});}break;case _0x76a8('0x8f'):if(_0x2bce50[_0x76a8('0x59')][_0x76a8('0x81')]&&_0x2bce50[_0x76a8('0x59')][_0x76a8('0x27')]){_0x25185d=_0x2bce50['body'][_0x76a8('0x27')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50[_0x76a8('0x59')][_0x76a8('0x81')]}});}break;case _0x76a8('0x92'):if(_0x2bce50['body'][0x0]['message']['id']){_0x25185d=_0x2bce50[_0x76a8('0x59')][0x0][_0x76a8('0x3e')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50[_0x76a8('0x59')][0x0][_0x76a8('0x24')]['id']}});}break;case _0x76a8('0x93'):if(_0x2bce50[_0x76a8('0x59')][_0x76a8('0xd2')]&&_0x2bce50[_0x76a8('0x59')][_0x76a8('0x27')]){_0x25185d=_0x2bce50[_0x76a8('0x59')][_0x76a8('0x27')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x2bce50['body']['redif']}});}break;}}})['then'](handleEntityNotFound(_0x58e882,null))['then'](function(_0x161493){if(_0x161493){_0x541fa4=_0x161493;switch(_0x165928['type']){case _0x76a8('0x83'):if(_0x25185d==='DELIVERED'){return _0x541fa4['update']({'read':!![]});}else{logger['error'](_0x76a8('0x21'),'status',_0x76a8('0x83'),util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case _0x76a8('0x86'):if(_0x25185d==='1'){return _0x541fa4['update']({'read':!![]});}else{logger[_0x76a8('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x76a8('0x27'),_0x76a8('0x83'),util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x2bce50[_0x76a8('0x59')]['error_code']&&_0x25185d>=0xc8&&_0x25185d<=0xce){return _0x541fa4['update']({'read':!![]});}else{logger[_0x76a8('0x22')](_0x76a8('0x21'),_0x76a8('0x27'),'clicksend',util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x3c2ede=_0x2bce50['body'][_0x76a8('0x8b')][0x0];if(_0x3c2ede[_0x76a8('0x27')][_0x76a8('0xd0')]===_0x76a8('0xd1')){return _0x541fa4[_0x76a8('0x31')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x76a8('0x27'),_0x76a8('0x8a'),util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x25185d==_0x76a8('0xd4')||_0x25185d==_0x76a8('0xd5')){return _0x541fa4[_0x76a8('0x31')]({'read':!![]});}else{logger[_0x76a8('0x22')](_0x76a8('0x21'),'status',_0x76a8('0x8f'),util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case _0x76a8('0x92'):if(_0x25185d==_0x76a8('0xd6')){return _0x541fa4[_0x76a8('0x31')]({'read':!![]});}else{logger[_0x76a8('0x22')](_0x76a8('0x21'),_0x76a8('0x27'),'bandwidth',util['inspect'](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;case _0x76a8('0x93'):if(_0x25185d===_0x76a8('0xd7')||_0x25185d===_0x76a8('0xd8')){return _0x541fa4[_0x76a8('0x31')]({'read':!![]});}else{logger['error'](_0x76a8('0x21'),_0x76a8('0x27'),_0x76a8('0x93'),util[_0x76a8('0xd3')](_0x2bce50[_0x76a8('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x541fa4;}})['then'](respondWithResult(_0x58e882,null))[_0x76a8('0x51')](handleError(_0x58e882,null));};exports['statusGet']=function(_0x5542ca,_0x113a9b,_0x1e0878){var _0x35b45f,_0x627ae1,_0x38c9da;return db[_0x76a8('0x3b')][_0x76a8('0x58')]({'where':{'id':_0x5542ca[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x113a9b,null))[_0x76a8('0x1c')](function(_0x3e1e79){if(_0x3e1e79){_0x38c9da=_0x3e1e79;logger[_0x76a8('0x20')](_0x76a8('0x21'),'status',_0x76a8('0xcc'),_0x3e1e79['type'],util['inspect'](_0x5542ca[_0x76a8('0x41')],{'showHidden':![],'depth':null}));switch(_0x3e1e79[_0x76a8('0x3e')]){case _0x76a8('0x8c'):if(_0x5542ca[_0x76a8('0x41')][_0x76a8('0xd9')]&&_0x5542ca[_0x76a8('0x41')]['state']){_0x627ae1=_0x5542ca[_0x76a8('0x41')][_0x76a8('0xda')];return db[_0x76a8('0xa6')][_0x76a8('0x58')]({'where':{'messageId':_0x5542ca[_0x76a8('0x41')][_0x76a8('0xd9')]}});}break;}}})[_0x76a8('0x1c')](handleEntityNotFound(_0x113a9b,null))['then'](function(_0x1344dd){if(_0x1344dd){_0x35b45f=_0x1344dd;switch(_0x38c9da[_0x76a8('0x3e')]){case _0x76a8('0x8c'):if(_0x627ae1==='2'||_0x627ae1==='6'){return _0x35b45f[_0x76a8('0x31')]({'read':!![]});}else{logger['error'](_0x76a8('0x21'),_0x76a8('0x27'),'csc',util['inspect'](_0x5542ca[_0x76a8('0x41')],{'showHidden':![],'depth':null}));};break;}return _0x35b45f;}})[_0x76a8('0x1c')](respondWithResult(_0x113a9b,null))[_0x76a8('0x51')](handleError(_0x113a9b,null));};exports['addAgents']=function(_0x1776de,_0x40474b,_0x35b603){return db[_0x76a8('0x3b')]['find']({'where':{'id':_0x1776de[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x40474b,null))[_0x76a8('0x1c')](function(_0x6e1ee8){if(_0x6e1ee8){return _0x6e1ee8[_0x76a8('0xdb')](_0x1776de[_0x76a8('0x59')][_0x76a8('0x6d')],_[_0x76a8('0xdc')](_0x1776de[_0x76a8('0x59')],[_0x76a8('0x6d'),'id'])||{})['spread'](function(_0x29df74){for(var _0x8faaa7=0x0;_0x8faaa7<_0x1776de[_0x76a8('0x59')][_0x76a8('0x6d')]['length'];_0x8faaa7+=0x1){socket['emit']('userSmsAccount:save',{'UserId':Number(_0x1776de[_0x76a8('0x59')][_0x76a8('0x6d')][_0x8faaa7]),'SmsAccountId':Number(_0x1776de['params']['id'])});}return _0x29df74;});}})[_0x76a8('0x1c')](respondWithResult(_0x40474b,null))[_0x76a8('0x51')](handleError(_0x40474b,null));};exports[_0x76a8('0xdd')]=function(_0x5957f5,_0x24e7e6,_0x3390fa){return db['SmsAccount'][_0x76a8('0x58')]({'where':{'id':_0x5957f5[_0x76a8('0x53')]['id']}})[_0x76a8('0x1c')](handleEntityNotFound(_0x24e7e6,null))[_0x76a8('0x1c')](function(_0x546c7b){if(_0x546c7b){return _0x546c7b[_0x76a8('0xdd')](_0x5957f5['query']['ids'])[_0x76a8('0x1c')](function(){if(_[_0x76a8('0xde')](_0x5957f5[_0x76a8('0x41')]['ids'])){for(var _0x3274cf=0x0;_0x3274cf<_0x5957f5[_0x76a8('0x41')]['ids']['length'];_0x3274cf+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x5957f5[_0x76a8('0x41')]['ids'][_0x3274cf]),'SmsAccountId':Number(_0x5957f5[_0x76a8('0x53')]['id'])});}}else{socket[_0x76a8('0xdf')](_0x76a8('0xe0'),{'UserId':Number(_0x5957f5[_0x76a8('0x41')][_0x76a8('0x6d')]),'SmsAccountId':Number(_0x5957f5[_0x76a8('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x24e7e6,null))[_0x76a8('0x51')](handleError(_0x24e7e6,null));};exports['getAgents']=function(_0x5effe7,_0x58885d,_0x9e8d53){var _0x4bfc98={};var _0x24c19c={};var _0x4e7761;var _0x46cc1b;return db[_0x76a8('0x3b')][_0x76a8('0x66')]({'where':{'id':_0x5effe7[_0x76a8('0x53')]['id']}})['then'](handleEntityNotFound(_0x58885d,null))['then'](function(_0x3ab307){if(_0x3ab307){_0x4e7761=_0x3ab307;_0x24c19c[_0x76a8('0x40')]=_[_0x76a8('0x42')](db['User'][_0x76a8('0x3c')]);_0x24c19c[_0x76a8('0x41')]=_['keys'](_0x5effe7['query']);_0x24c19c[_0x76a8('0x43')]=_[_0x76a8('0x44')](_0x24c19c[_0x76a8('0x40')],_0x24c19c['query']);_0x4bfc98[_0x76a8('0x45')]=_[_0x76a8('0x44')](_0x24c19c[_0x76a8('0x40')],qs['fields'](_0x5effe7[_0x76a8('0x41')]['fields']));_0x4bfc98[_0x76a8('0x45')]=_0x4bfc98[_0x76a8('0x45')]['length']?_0x4bfc98['attributes']:_0x24c19c[_0x76a8('0x40')];_0x4bfc98[_0x76a8('0x4a')]=qs['sort'](_0x5effe7[_0x76a8('0x41')]['sort']);_0x4bfc98[_0x76a8('0x4c')]=qs[_0x76a8('0x43')](_[_0x76a8('0x4d')](_0x5effe7[_0x76a8('0x41')],_0x24c19c[_0x76a8('0x43')]));if(_0x5effe7['query'][_0x76a8('0x4e')]){_0x4bfc98['where']=_[_0x76a8('0x57')](_0x4bfc98[_0x76a8('0x4c')],{'$or':_[_0x76a8('0x3a')](_0x4bfc98[_0x76a8('0x45')],function(_0xb1df0f){var _0x21b524={};_0x21b524[_0xb1df0f]={'$like':'%'+_0x5effe7[_0x76a8('0x41')][_0x76a8('0x4e')]+'%'};return _0x21b524;})});}_0x4bfc98=_[_0x76a8('0x57')]({},_0x4bfc98,_0x5effe7[_0x76a8('0x4f')]);return _0x4e7761[_0x76a8('0xe1')](_0x4bfc98);}})['then'](function(_0x34cf28){if(_0x34cf28){_0x46cc1b=_0x34cf28[_0x76a8('0x47')];if(!_0x5effe7[_0x76a8('0x41')][_0x76a8('0x48')](_0x76a8('0x49'))){_0x4bfc98[_0x76a8('0x2b')]=qs[_0x76a8('0x2b')](_0x5effe7['query'][_0x76a8('0x2b')]);_0x4bfc98[_0x76a8('0x29')]=qs['offset'](_0x5effe7[_0x76a8('0x41')][_0x76a8('0x29')]);}return _0x4e7761[_0x76a8('0xe1')](_0x4bfc98);}})[_0x76a8('0x1c')](function(_0x50bac8){if(_0x50bac8){return _0x50bac8?{'count':_0x46cc1b,'rows':_0x50bac8}:null;}})[_0x76a8('0x1c')](respondWithResult(_0x58885d,null))[_0x76a8('0x51')](handleError(_0x58885d,null));};
\ No newline at end of file
+var _0x3968=['querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','destroy','get','SmsAccounts','name','send','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','options','SmsAccount','includeAll','include','findAll','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','update','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','sort','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','rows','removeAnswers','sms','SmsApplication','Applications','account','orderBy','asc','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','Text','results','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','refid','isNil','Sequelize','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','omit','contact','interaction','push','applications','close','unmanaged','*,*,*,*','created','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','priority','stack','getApplications','getInteractions','SmsInteraction','Contact','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','spread','SmsMessage','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','statusInt','status_code','infobip','DELIVERED','groupName','intelepeer','redif','DELIVERED_TO_GATEWAY','DELIVRD','ACCEPTD','statusGet','csc','message-id','addAgents','emit','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3968,0xdb));var _0x8396=function(_0xcba226,_0xa5454c){_0xcba226=_0xcba226-0x0;var _0x8d319=_0x3968[_0xcba226];return _0x8d319;};'use strict';var emlformat=require(_0x8396('0x0'));var rimraf=require(_0x8396('0x1'));var zipdir=require(_0x8396('0x2'));var jsonpatch=require(_0x8396('0x3'));var rp=require('request-promise');var moment=require(_0x8396('0x4'));var BPromise=require(_0x8396('0x5'));var Mustache=require(_0x8396('0x6'));var util=require(_0x8396('0x7'));var path=require(_0x8396('0x8'));var sox=require('sox');var csv=require(_0x8396('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8396('0xa'));var _=require(_0x8396('0xb'));var squel=require(_0x8396('0xc'));var crypto=require(_0x8396('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8396('0xe'));var toCsv=require(_0x8396('0x9'));var querystring=require(_0x8396('0xf'));var Papa=require(_0x8396('0x10'));var Redis=require('ioredis');var authService=require(_0x8396('0x11'));var qs=require(_0x8396('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8396('0x13'));var logger=require(_0x8396('0x14'))(_0x8396('0x15'));var utils=require(_0x8396('0x16'));var config=require(_0x8396('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8396('0x18'))['db'];config[_0x8396('0x19')]=_[_0x8396('0x1a')](config['redis'],{'host':_0x8396('0x1b'),'port':0x18eb});var socket=require(_0x8396('0x1c'))(new Redis(config['redis']));require(_0x8396('0x1d'))[_0x8396('0x1e')](socket);var jayson=require(_0x8396('0x1f'));var client=jayson[_0x8396('0x20')]['http']({'port':0x232c});function respondWithRpcPromise(_0x139d05,_0x5d645a,_0xacc15f,_0x156db1){return new BPromise(function(_0x57a70a,_0xef0ff3){var _0x35685e=_0x156db1||client;return _0x35685e[_0x8396('0x21')](_0x139d05,_0xacc15f)[_0x8396('0x22')](function(_0x564a20){logger[_0x8396('0x23')](_0x8396('0x24'),_0x5d645a,_0x8396('0x25'));logger[_0x8396('0x26')](_0x8396('0x27'),_0x5d645a,_0x8396('0x25'),JSON[_0x8396('0x28')](_0x564a20));if(_0x564a20[_0x8396('0x29')]){if(_0x564a20[_0x8396('0x29')][_0x8396('0x2a')]===0x1f4){logger['error'](_0x8396('0x24'),_0x5d645a,_0x564a20[_0x8396('0x29')]['message']);return _0xef0ff3(_0x564a20['error'][_0x8396('0x2b')]);}logger[_0x8396('0x29')](_0x8396('0x24'),_0x5d645a,_0x564a20['error'][_0x8396('0x2b')]);return _0x57a70a(_0x564a20[_0x8396('0x29')][_0x8396('0x2b')]);}else{logger['info'](_0x8396('0x24'),_0x5d645a,_0x8396('0x25'));_0x57a70a(_0x564a20['result']['message']);}})[_0x8396('0x2c')](function(_0x4807b1){logger[_0x8396('0x29')](_0x8396('0x24'),_0x5d645a,_0x4807b1);_0xef0ff3(_0x4807b1);});});}function respondWithStatusCode(_0x50a0bf,_0x52c83c){_0x52c83c=_0x52c83c||0xcc;return function(_0x2a5511){if(_0x2a5511){return _0x50a0bf[_0x8396('0x2d')](_0x52c83c);}return _0x50a0bf[_0x8396('0x2e')](_0x52c83c)[_0x8396('0x2f')]();};}function respondWithResult(_0x243776,_0x28d355){_0x28d355=_0x28d355||0xc8;return function(_0x2d97db){if(_0x2d97db){return _0x243776[_0x8396('0x2e')](_0x28d355)['json'](_0x2d97db);}};}function respondWithFilteredResult(_0x589f01,_0x32d449){return function(_0x55f273){if(_0x55f273){var _0x142779=typeof _0x32d449[_0x8396('0x30')]===_0x8396('0x31')&&typeof _0x32d449[_0x8396('0x32')]===_0x8396('0x31');var _0x3153c3=_0x55f273[_0x8396('0x33')];var _0x21fdd9=_0x142779?0x0:_0x32d449[_0x8396('0x30')];var _0x21ac23=_0x142779?_0x55f273[_0x8396('0x33')]:_0x32d449['offset']+_0x32d449[_0x8396('0x32')];var _0x4b3b78;if(_0x21ac23>=_0x3153c3){_0x21ac23=_0x3153c3;_0x4b3b78=0xc8;}else{_0x4b3b78=0xce;}_0x589f01[_0x8396('0x2e')](_0x4b3b78);return _0x589f01['set']('Content-Range',_0x21fdd9+'-'+_0x21ac23+'/'+_0x3153c3)[_0x8396('0x34')](_0x55f273);}return null;};}function patchUpdates(_0x4b2351){return function(_0x5934bd){try{jsonpatch[_0x8396('0x35')](_0x5934bd,_0x4b2351,!![]);}catch(_0x15ed76){return BPromise[_0x8396('0x36')](_0x15ed76);}return _0x5934bd[_0x8396('0x37')]();};}function saveUpdates(_0x48bb6e,_0x31e7ef){return function(_0x3b471e){if(_0x3b471e){return _0x3b471e['update'](_0x48bb6e)[_0x8396('0x22')](function(_0x4f20d1){return _0x4f20d1;});}return null;};}function removeEntity(_0x32018c,_0x24d294){return function(_0x6a39ac){if(_0x6a39ac){return _0x6a39ac[_0x8396('0x38')]()[_0x8396('0x22')](function(){var _0x1fe1e7=_0x6a39ac[_0x8396('0x39')]({'plain':!![]});var _0x5955e5=_0x8396('0x3a');return db['UserProfileResource'][_0x8396('0x38')]({'where':{'type':_0x5955e5,'resourceId':_0x1fe1e7['id']}})[_0x8396('0x22')](function(){return _0x6a39ac;});})['then'](function(){_0x32018c[_0x8396('0x2e')](0xcc)[_0x8396('0x2f')]();});}};}function handleEntityNotFound(_0xd663,_0x3093f0){return function(_0x4a0b1d){if(!_0x4a0b1d){_0xd663[_0x8396('0x2d')](0x194);}return _0x4a0b1d;};}function handleError(_0x52ed3e,_0x5388a1){_0x5388a1=_0x5388a1||0x1f4;return function(_0x231efd){logger['error'](_0x231efd['stack']);if(_0x231efd['name']){delete _0x231efd[_0x8396('0x3b')];}_0x52ed3e[_0x8396('0x2e')](_0x5388a1)[_0x8396('0x3c')](_0x231efd);};}exports['index']=function(_0x27b5b8,_0x1fd896){var _0x3cc12e={'include':[{'model':db[_0x8396('0x3d')],'as':_0x8396('0x3e')}]},_0x106287={},_0x447e05={'count':0x0,'rows':[]};var _0x4b267b=_[_0x8396('0x3f')](db['SmsAccount'][_0x8396('0x40')],function(_0x5f41cc){return{'name':_0x5f41cc[_0x8396('0x41')],'type':_0x5f41cc[_0x8396('0x42')][_0x8396('0x43')]};});_0x106287[_0x8396('0x44')]=_[_0x8396('0x3f')](_0x4b267b,_0x8396('0x3b'));_0x106287[_0x8396('0x45')]=_[_0x8396('0x46')](_0x27b5b8['query']);_0x106287[_0x8396('0x47')]=_[_0x8396('0x48')](_0x106287[_0x8396('0x44')],_0x106287[_0x8396('0x45')]);_0x3cc12e[_0x8396('0x49')]=_[_0x8396('0x48')](_0x106287[_0x8396('0x44')],qs[_0x8396('0x4a')](_0x27b5b8[_0x8396('0x45')]['fields']));_0x3cc12e[_0x8396('0x49')]=_0x3cc12e['attributes'][_0x8396('0x4b')]?_0x3cc12e[_0x8396('0x49')]:_0x106287[_0x8396('0x44')];if(!_0x27b5b8[_0x8396('0x45')][_0x8396('0x4c')](_0x8396('0x4d'))){_0x3cc12e['limit']=qs[_0x8396('0x32')](_0x27b5b8['query'][_0x8396('0x32')]);_0x3cc12e[_0x8396('0x30')]=qs['offset'](_0x27b5b8[_0x8396('0x45')][_0x8396('0x30')]);}_0x3cc12e[_0x8396('0x4e')]=qs['sort'](_0x27b5b8[_0x8396('0x45')]['sort']);_0x3cc12e[_0x8396('0x4f')]=qs[_0x8396('0x47')](_[_0x8396('0x50')](_0x27b5b8[_0x8396('0x45')],_0x106287[_0x8396('0x47')]),_0x4b267b);if(_0x27b5b8[_0x8396('0x45')][_0x8396('0x51')]){_0x3cc12e[_0x8396('0x4f')]=_['merge'](_0x3cc12e[_0x8396('0x4f')],{'$or':_['map'](_0x4b267b,function(_0x58f5d5){if(_0x58f5d5['type']!==_0x8396('0x52')){var _0x5337c2={};_0x5337c2[_0x58f5d5[_0x8396('0x3b')]]={'$like':'%'+_0x27b5b8[_0x8396('0x45')][_0x8396('0x51')]+'%'};return _0x5337c2;}})});}_0x3cc12e=_[_0x8396('0x53')]({},_0x3cc12e,_0x27b5b8[_0x8396('0x54')]);var _0x35f76c={'where':_0x3cc12e['where']};return db[_0x8396('0x55')]['count'](_0x35f76c)['then'](function(_0x172ff4){_0x447e05[_0x8396('0x33')]=_0x172ff4;if(_0x27b5b8[_0x8396('0x45')][_0x8396('0x56')]){_0x3cc12e[_0x8396('0x57')]=[{'all':!![]}];}return db[_0x8396('0x55')][_0x8396('0x58')](_0x3cc12e);})[_0x8396('0x22')](function(_0x5847b5){_0x447e05['rows']=_0x5847b5;return _0x447e05;})[_0x8396('0x22')](respondWithFilteredResult(_0x1fd896,_0x3cc12e))[_0x8396('0x2c')](handleError(_0x1fd896,null));};exports[_0x8396('0x59')]=function(_0x2cdfdf,_0x8474ea){var _0xf83c27={'raw':![],'where':{'id':_0x2cdfdf[_0x8396('0x5a')]['id']},'include':[{'model':db[_0x8396('0x3d')],'as':'mandatoryDispositionPause'}]},_0x489608={};_0x489608[_0x8396('0x44')]=_[_0x8396('0x46')](db[_0x8396('0x55')][_0x8396('0x40')]);_0x489608['query']=_[_0x8396('0x46')](_0x2cdfdf['query']);_0x489608[_0x8396('0x47')]=_[_0x8396('0x48')](_0x489608['model'],_0x489608[_0x8396('0x45')]);_0xf83c27[_0x8396('0x49')]=_['intersection'](_0x489608[_0x8396('0x44')],qs[_0x8396('0x4a')](_0x2cdfdf[_0x8396('0x45')][_0x8396('0x4a')]));_0xf83c27[_0x8396('0x49')]=_0xf83c27['attributes'][_0x8396('0x4b')]?_0xf83c27[_0x8396('0x49')]:_0x489608['model'];if(_0x2cdfdf[_0x8396('0x45')][_0x8396('0x56')]){_0xf83c27[_0x8396('0x57')]=[{'all':!![]}];}_0xf83c27=_[_0x8396('0x53')]({},_0xf83c27,_0x2cdfdf[_0x8396('0x54')]);return db[_0x8396('0x55')]['find'](_0xf83c27)[_0x8396('0x22')](handleEntityNotFound(_0x8474ea,null))[_0x8396('0x22')](respondWithResult(_0x8474ea,null))['catch'](handleError(_0x8474ea,null));};exports[_0x8396('0x5b')]=function(_0x216fc7,_0x2bdc94){return db[_0x8396('0x55')][_0x8396('0x5b')](_0x216fc7[_0x8396('0x5c')],{})[_0x8396('0x22')](function(_0x3d7f61){var _0x302196=_0x216fc7[_0x8396('0x5d')][_0x8396('0x39')]({'plain':!![]});if(!_0x302196)throw new Error(_0x8396('0x5e'));if(_0x302196[_0x8396('0x5f')]==='user'){var _0x453632=_0x3d7f61[_0x8396('0x39')]({'plain':!![]});var _0xc5e65a=_0x8396('0x3a');return db[_0x8396('0x60')][_0x8396('0x61')]({'where':{'name':_0xc5e65a,'userProfileId':_0x302196[_0x8396('0x62')]},'raw':!![]})[_0x8396('0x22')](function(_0x27a17a){if(_0x27a17a&&_0x27a17a[_0x8396('0x63')]===0x0){return db[_0x8396('0x64')]['create']({'name':_0x453632[_0x8396('0x3b')],'resourceId':_0x453632['id'],'type':_0x27a17a[_0x8396('0x3b')],'sectionId':_0x27a17a['id']},{})['then'](function(){return _0x3d7f61;});}else{return _0x3d7f61;}})['catch'](function(_0x12c258){logger[_0x8396('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12c258);throw _0x12c258;});}return _0x3d7f61;})[_0x8396('0x22')](respondWithResult(_0x2bdc94,0xc9))['catch'](handleError(_0x2bdc94,null));};exports[_0x8396('0x65')]=function(_0x2d2f15,_0x4a4c10){if(_0x2d2f15[_0x8396('0x5c')]['id']){delete _0x2d2f15[_0x8396('0x5c')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x2d2f15[_0x8396('0x5a')]['id']},'include':[{'model':db[_0x8396('0x3d')],'as':'mandatoryDispositionPause'}]})[_0x8396('0x22')](handleEntityNotFound(_0x4a4c10,null))['then'](saveUpdates(_0x2d2f15[_0x8396('0x5c')],null))['then'](respondWithResult(_0x4a4c10,null))[_0x8396('0x2c')](handleError(_0x4a4c10,null));};exports['destroy']=function(_0xd3a69e,_0x397c1d){return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0xd3a69e[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x397c1d,null))[_0x8396('0x22')](removeEntity(_0x397c1d,null))['catch'](handleError(_0x397c1d,null));};exports[_0x8396('0x66')]=function(_0x1daee9,_0x115f08){return db['SmsAccount'][_0x8396('0x66')]()['then'](respondWithResult(_0x115f08,null))[_0x8396('0x2c')](handleError(_0x115f08,null));};exports[_0x8396('0x67')]=function(_0x28d2cc,_0x5192c9,_0x361b30){if(_0x28d2cc[_0x8396('0x5c')]['id']){delete _0x28d2cc[_0x8396('0x5c')]['id'];}return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0x28d2cc[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x5192c9,null))[_0x8396('0x22')](function(_0x1ae77b){if(_0x1ae77b){_0x28d2cc[_0x8396('0x5c')][_0x8396('0x68')]=_0x1ae77b['id'];return db[_0x8396('0x69')]['create'](_0x28d2cc[_0x8396('0x5c')]);}})[_0x8396('0x22')](respondWithResult(_0x5192c9,null))[_0x8396('0x2c')](handleError(_0x5192c9,null));};exports[_0x8396('0x6a')]=function(_0x306d07,_0x274049,_0x3e394c){var _0x221465={'raw':![],'where':{}};var _0x5dfd17={};var _0x4b9747={'count':0x0,'rows':[]};return db[_0x8396('0x55')][_0x8396('0x6b')]({'where':{'id':_0x306d07['params']['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x274049,null))['then'](function(_0x3260f1){if(_0x3260f1){_0x5dfd17[_0x8396('0x44')]=_[_0x8396('0x46')](db[_0x8396('0x69')]['rawAttributes']);_0x5dfd17['query']=_['keys'](_0x306d07[_0x8396('0x45')]);_0x5dfd17['filters']=_[_0x8396('0x48')](_0x5dfd17[_0x8396('0x44')],_0x5dfd17[_0x8396('0x45')]);_0x221465[_0x8396('0x49')]=_[_0x8396('0x48')](_0x5dfd17[_0x8396('0x44')],qs[_0x8396('0x4a')](_0x306d07[_0x8396('0x45')][_0x8396('0x4a')]));_0x221465[_0x8396('0x49')]=_0x221465[_0x8396('0x49')][_0x8396('0x4b')]?_0x221465[_0x8396('0x49')]:_0x5dfd17['model'];if(!_0x306d07['query'][_0x8396('0x4c')]('nolimit')){_0x221465[_0x8396('0x32')]=qs[_0x8396('0x32')](_0x306d07[_0x8396('0x45')][_0x8396('0x32')]);_0x221465[_0x8396('0x30')]=qs[_0x8396('0x30')](_0x306d07[_0x8396('0x45')][_0x8396('0x30')]);}_0x221465[_0x8396('0x4e')]=qs['sort'](_0x306d07[_0x8396('0x45')][_0x8396('0x6c')]);_0x221465[_0x8396('0x4f')]=qs['filters'](_['pick'](_0x306d07[_0x8396('0x45')],_0x5dfd17[_0x8396('0x47')]));_0x221465[_0x8396('0x4f')]['SmsAccountId']=_0x3260f1['id'];if(_0x306d07[_0x8396('0x45')][_0x8396('0x51')]){_0x221465['where']=_[_0x8396('0x53')](_0x221465[_0x8396('0x4f')],{'$or':_[_0x8396('0x3f')](_0x221465['attributes'],function(_0x189d9b){var _0x3a3fd9={};_0x3a3fd9[_0x189d9b]={'$like':'%'+_0x306d07[_0x8396('0x45')][_0x8396('0x51')]+'%'};return _0x3a3fd9;})});}_0x221465=_[_0x8396('0x53')]({},_0x221465,_0x306d07['options']);return db[_0x8396('0x69')][_0x8396('0x33')]({'where':_0x221465['where']})[_0x8396('0x22')](function(_0x30de54){_0x4b9747[_0x8396('0x33')]=_0x30de54;if(_0x306d07[_0x8396('0x45')][_0x8396('0x56')]){_0x221465['include']=[{'all':!![]}];}return db['Disposition'][_0x8396('0x58')](_0x221465);})['then'](function(_0x313263){_0x4b9747['rows']=_0x313263;return _0x4b9747;});}})[_0x8396('0x22')](respondWithFilteredResult(_0x274049,_0x221465))['catch'](handleError(_0x274049,null));};exports[_0x8396('0x6d')]=function(_0x21f222,_0x46d54f,_0x10585e){return db['SmsAccount'][_0x8396('0x61')]({'where':{'id':_0x21f222['params']['id']}})['then'](handleEntityNotFound(_0x46d54f,null))[_0x8396('0x22')](function(_0x10a284){if(_0x10a284){return _0x10a284[_0x8396('0x6d')](_0x21f222['query'][_0x8396('0x6e')]);}})['then'](respondWithStatusCode(_0x46d54f,null))[_0x8396('0x2c')](handleError(_0x46d54f,null));};exports[_0x8396('0x6f')]=function(_0x3bd6f2,_0x1b1b6a,_0x5bec91){if(_0x3bd6f2[_0x8396('0x5c')]['id']){delete _0x3bd6f2[_0x8396('0x5c')]['id'];}return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0x3bd6f2[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x1b1b6a,null))['then'](function(_0x10bbce){if(_0x10bbce){_0x3bd6f2['body'][_0x8396('0x68')]=_0x10bbce['id'];return db['CannedAnswer'][_0x8396('0x5b')](_0x3bd6f2[_0x8396('0x5c')]);}})[_0x8396('0x22')](respondWithResult(_0x1b1b6a,null))[_0x8396('0x2c')](handleError(_0x1b1b6a,null));};exports[_0x8396('0x70')]=function(_0x5c1d26,_0x594442,_0x2d1fda){var _0x412cae={'raw':![],'where':{}};var _0x4d99aa={};var _0x5a412d={'count':0x0,'rows':[]};return db[_0x8396('0x55')][_0x8396('0x6b')]({'where':{'id':_0x5c1d26[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x594442,null))[_0x8396('0x22')](function(_0x4b0791){if(_0x4b0791){_0x4d99aa[_0x8396('0x44')]=_[_0x8396('0x46')](db[_0x8396('0x71')]['rawAttributes']);_0x4d99aa[_0x8396('0x45')]=_[_0x8396('0x46')](_0x5c1d26[_0x8396('0x45')]);_0x4d99aa[_0x8396('0x47')]=_[_0x8396('0x48')](_0x4d99aa['model'],_0x4d99aa[_0x8396('0x45')]);_0x412cae['attributes']=_[_0x8396('0x48')](_0x4d99aa[_0x8396('0x44')],qs['fields'](_0x5c1d26[_0x8396('0x45')][_0x8396('0x4a')]));_0x412cae[_0x8396('0x49')]=_0x412cae[_0x8396('0x49')][_0x8396('0x4b')]?_0x412cae[_0x8396('0x49')]:_0x4d99aa['model'];if(!_0x5c1d26['query'][_0x8396('0x4c')](_0x8396('0x4d'))){_0x412cae[_0x8396('0x32')]=qs[_0x8396('0x32')](_0x5c1d26[_0x8396('0x45')][_0x8396('0x32')]);_0x412cae[_0x8396('0x30')]=qs[_0x8396('0x30')](_0x5c1d26[_0x8396('0x45')][_0x8396('0x30')]);}_0x412cae[_0x8396('0x4e')]=qs[_0x8396('0x6c')](_0x5c1d26['query'][_0x8396('0x6c')]);_0x412cae['where']=qs[_0x8396('0x47')](_['pick'](_0x5c1d26[_0x8396('0x45')],_0x4d99aa[_0x8396('0x47')]));_0x412cae[_0x8396('0x4f')][_0x8396('0x68')]=_0x4b0791['id'];if(_0x5c1d26['query']['filter']){_0x412cae[_0x8396('0x4f')]=_[_0x8396('0x53')](_0x412cae['where'],{'$or':_[_0x8396('0x3f')](_0x412cae[_0x8396('0x49')],function(_0x5e072c){var _0x15c662={};_0x15c662[_0x5e072c]={'$like':'%'+_0x5c1d26[_0x8396('0x45')][_0x8396('0x51')]+'%'};return _0x15c662;})});}_0x412cae=_[_0x8396('0x53')]({},_0x412cae,_0x5c1d26[_0x8396('0x54')]);return db[_0x8396('0x71')][_0x8396('0x33')]({'where':_0x412cae['where']})[_0x8396('0x22')](function(_0x1b06ce){_0x5a412d[_0x8396('0x33')]=_0x1b06ce;if(_0x5c1d26['query']['includeAll']){_0x412cae[_0x8396('0x57')]=[{'all':!![]}];}return db[_0x8396('0x71')][_0x8396('0x58')](_0x412cae);})[_0x8396('0x22')](function(_0x5292b3){_0x5a412d[_0x8396('0x72')]=_0x5292b3;return _0x5a412d;});}})[_0x8396('0x22')](respondWithFilteredResult(_0x594442,_0x412cae))[_0x8396('0x2c')](handleError(_0x594442,null));};exports[_0x8396('0x73')]=function(_0x19ea32,_0x191d1b,_0x5577f7){return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0x19ea32[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x191d1b,null))[_0x8396('0x22')](function(_0x447b99){if(_0x447b99){return _0x447b99[_0x8396('0x73')](_0x19ea32['query']['ids']);}})['then'](respondWithStatusCode(_0x191d1b,null))[_0x8396('0x2c')](handleError(_0x191d1b,null));};exports['notify']=function(_0x16bd94,_0x299164,_0x44c58e){var _0x168ec0={'channel':_0x8396('0x74')};var _0x5392aa=[];var _0x19fe87=[];var _0x1e4965={};return db[_0x8396('0x55')]['find']({'where':{'id':_0x16bd94[_0x8396('0x5a')]['id']},'include':[{'model':db[_0x8396('0x75')],'as':_0x8396('0x76')}]})[_0x8396('0x22')](handleEntityNotFound(_0x299164,null))[_0x8396('0x22')](function(_0x52b14c){_0x168ec0[_0x8396('0x77')]=_0x52b14c;_0x168ec0['applications']=_[_0x8396('0x78')](_0x52b14c[_0x8396('0x76')],['priority'],[_0x8396('0x79')]);if(_0x168ec0[_0x8396('0x77')]['Applications']){delete _0x168ec0['account'][_0x8396('0x76')];}return db['CmContact'][_0x8396('0x66')]();})[_0x8396('0x22')](function(_0x29c07d){if(!_0x29c07d){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x5392aa=_[_0x8396('0x7a')](_['keys'](_0x29c07d),[_0x8396('0x7b'),_0x8396('0x7c')]);_0x19fe87=_[_0x8396('0x7a')](_[_0x8396('0x46')](_0x29c07d),[_0x8396('0x7b'),_0x8396('0x7c'),_0x8396('0x7d'),_0x8396('0x7e')]);_0x168ec0['body']={'mapKey':_0x8396('0x7f')};if(_0x168ec0[_0x8396('0x77')]['type']){switch(_0x168ec0[_0x8396('0x77')][_0x8396('0x42')]){case _0x8396('0x80'):_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x82')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94['body'][_0x8396('0x83')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x84')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x85')];break;case'skebby':_0x168ec0[_0x8396('0x5c')]['from']='+'+_0x16bd94['body'][_0x8396('0x86')];_0x168ec0[_0x8396('0x5c')]['body']=_0x16bd94['body'][_0x8396('0x87')];break;case _0x8396('0x88'):_0x168ec0[_0x8396('0x5c')]['from']=_0x16bd94[_0x8396('0x5c')][_0x8396('0x81')];_0x168ec0['body'][_0x8396('0x5c')]=_0x16bd94['body'][_0x8396('0x2b')];break;case _0x8396('0x89'):_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x81')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x5c')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x84')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x8a')];break;case _0x8396('0x8b'):_0x168ec0[_0x8396('0x5c')]['from']=_0x16bd94[_0x8396('0x5c')]['From'];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94['body'][_0x8396('0x8c')];_0x168ec0['body'][_0x8396('0x84')]=_0x16bd94['body']['MessageUUID'];break;case'infobip':_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]='+'+_0x16bd94['body'][_0x8396('0x8d')][0x0]['from'];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94['body'][_0x8396('0x8d')][0x0][_0x8396('0x87')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x84')]=_0x16bd94['body'][_0x8396('0x8d')][0x0][_0x8396('0x84')];break;case'csc':_0x168ec0['body']['from']=_0x16bd94[_0x8396('0x5c')][_0x8396('0x8e')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94['body']['segmentedMessage']['message'];break;case _0x8396('0x8f'):_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x90')];_0x168ec0['body']['body']=_0x16bd94['body'][_0x8396('0x87')];_0x168ec0[_0x8396('0x5c')]['messageId']=_0x16bd94[_0x8396('0x5c')][_0x8396('0x91')];break;case _0x8396('0x92'):_0x168ec0['body'][_0x8396('0x84')]=_0x16bd94['body'][0x0][_0x8396('0x2b')]['id'];_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]=_0x16bd94[_0x8396('0x5c')][0x0][_0x8396('0x2b')]['from'];_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]=_0x16bd94[_0x8396('0x5c')][0x0]['message'][_0x8396('0x87')];break;case'intelepeer':_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x81')];_0x168ec0['body'][_0x8396('0x5c')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x2b')];_0x168ec0[_0x8396('0x5c')][_0x8396('0x84')]=_0x16bd94[_0x8396('0x5c')][_0x8396('0x93')];break;}}if(_0x168ec0['body']['id']){delete _0x168ec0[_0x8396('0x5c')]['id'];}if(_[_0x8396('0x94')](_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')])){throw new db[(_0x8396('0x95'))]['ValidationError'](_0x8396('0x96'));}if(_[_0x8396('0x94')](_0x168ec0['body']['body'])||_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')]===''){throw new db[(_0x8396('0x95'))][(_0x8396('0x97'))](_0x8396('0x98'));}if(_[_0x8396('0x94')](_0x168ec0[_0x8396('0x5c')][_0x8396('0x99')])){throw new db[(_0x8396('0x95'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x19fe87);}if(!_[_0x8396('0x9a')](_0x19fe87,_0x168ec0['body']['mapKey'])){throw new db[(_0x8396('0x95'))][(_0x8396('0x97'))](_0x8396('0x9b')+_0x19fe87);}_0x1e4965[_0x168ec0['body'][_0x8396('0x99')]]=_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')];return db[_0x8396('0x9c')][_0x8396('0x61')]({'where':{'id':_0x168ec0[_0x8396('0x77')][_0x8396('0x7e')]},'include':[{'model':db[_0x8396('0x9d')],'as':_0x8396('0x9e'),'where':_0x1e4965,'limit':0x1,'order':[[_0x8396('0x7c'),_0x8396('0x9f')]]}]});})[_0x8396('0x22')](handleEntityNotFound(_0x299164,null))[_0x8396('0x22')](function(_0x166ba4){if(_0x166ba4){_0x168ec0['list']=_[_0x8396('0xa0')](_0x166ba4,['Contacts']);if(_0x166ba4[_0x8396('0x9e')][_0x8396('0x4b')]){return _0x166ba4[_0x8396('0x9e')][0x0];}var _0x4f6e9c=_['defaults'](_0x168ec0[_0x8396('0x5c')],{'firstName':_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')],'ListId':_0x166ba4['id']});_0x4f6e9c[_0x168ec0[_0x8396('0x5c')][_0x8396('0x99')]]=_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')];return db[_0x8396('0x9d')][_0x8396('0x5b')](_0x4f6e9c,{'fields':_0x5392aa,'raw':!![]});}})[_0x8396('0x22')](handleEntityNotFound(_0x299164,null))[_0x8396('0x22')](function(_0x28edaf){if(_0x28edaf){_0x168ec0[_0x8396('0xa1')]=_0x28edaf;var _0xc8f624={'ContactId':_0x28edaf['id'],'phone':_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')],'SmsAccountId':_0x16bd94[_0x8396('0x5a')]['id']};var _0xae336f={'ContactId':_0x28edaf['id'],'SmsAccountId':_0x16bd94['params']['id'],'closed':![]};return db['SmsInteraction']['find']({'where':_0xae336f})[_0x8396('0x22')](function(_0x10b506){if(_0x10b506){return[_0x10b506,![]];}return db['SmsInteraction']['create'](_0xc8f624)[_0x8396('0x22')](function(_0x4321d1){return[_0x4321d1,!![]];});});}})['spread'](function(_0xca27c0,_0x2a85b9){_0x168ec0['interaction']=_0xca27c0[_0x8396('0x39')]({'plain':!![]});_0x168ec0[_0x8396('0xa2')]['created']=![];if(_0x2a85b9){if(_0x168ec0[_0x8396('0x77')]['autoclose']){_0x168ec0['applications'][_0x8396('0xa3')]({'id':0x0,'priority':_0x168ec0[_0x8396('0xa4')]['length']+0x1,'app':_0x8396('0xa5'),'appdata':_0x8396('0xa6'),'interval':_0x8396('0xa7')});}_0x168ec0['interaction'][_0x8396('0xa8')]=!![];}return db['SmsMessage'][_0x8396('0x5b')]({'phone':_0x168ec0[_0x8396('0x5c')][_0x8396('0x81')],'messageId':_0x168ec0[_0x8396('0x5c')][_0x8396('0x84')],'body':_0x168ec0[_0x8396('0x5c')][_0x8396('0x5c')],'SmsAccountId':_0x16bd94['params']['id'],'SmsInteractionId':_0xca27c0['id'],'direction':'in','ContactId':_0xca27c0[_0x8396('0xa9')],'AttachmentId':_0x168ec0[_0x8396('0x5c')][_0x8396('0xaa')]});})['then'](function(_0x3ac6a9){_0x168ec0[_0x8396('0x2b')]=_0x3ac6a9;if(_0x168ec0[_0x8396('0xa2')]['UserId']){return db[_0x8396('0xab')]['find']({'attributes':['id',_0x8396('0x3b')],'where':{'id':_0x168ec0[_0x8396('0xa2')][_0x8396('0xac')]}})[_0x8396('0x22')](function(_0x209266){if(_0x209266){_0x168ec0[_0x8396('0xa4')][_0x8396('0xad')]({'id':0x0,'priority':0x0,'app':_0x8396('0xae'),'appdata':_0x209266[_0x8396('0x3b')]+','+(_0x168ec0[_0x8396('0x77')][_0x8396('0xaf')]||0xa),'interval':_0x8396('0xa7')});}return respondWithRpcPromise('Start',_0x8396('0xb0'),_0x168ec0);});}return respondWithRpcPromise(_0x8396('0xb1'),'startRouting',_0x168ec0);})[_0x8396('0x22')](function(_0x317d88){if(_0x317d88){var _0x275ffb=0xc8;var _0x5410ab=_0x8396('0xb2');logger['info'](_0x8396('0x27'),_0x5410ab,_0x275ffb,_0x8396('0xb3'));logger[_0x8396('0x26')](_0x8396('0xb4'),_0x5410ab,_0x275ffb,_0x8396('0xb3'),JSON[_0x8396('0x28')](_0x317d88));if(_0x168ec0[_0x8396('0x77')][_0x8396('0x42')]==='twilio'){return _0x299164[_0x8396('0x2e')](_0x275ffb)[_0x8396('0xb5')](_0x8396('0xb6'),_0x8396('0xb7'))[_0x8396('0x3c')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x299164['status'](_0x275ffb)['json'](_0x317d88);}}})[_0x8396('0x2c')](handleError(_0x299164,null));};exports[_0x8396('0xb8')]=function(_0x39f08a,_0x2f7242){var _0xe80a39=_0x39f08a['params']['id'];var _0xffbbd9=_0x39f08a[_0x8396('0x5c')];var _0x3c537c=0xc8;var _0x5dfa17=null;return db['sequelize'][_0x8396('0xb9')]({'isolationLevel':db[_0x8396('0xba')][_0x8396('0xbb')][_0x8396('0xbc')]['READ_COMMITTED']},function(_0x532d76){return db['SmsAccount']['findOne']({'where':{'id':_0xe80a39},'transaction':_0x532d76})[_0x8396('0x22')](function(_0xf40703){if(_0xf40703){return db[_0x8396('0x75')][_0x8396('0x38')]({'where':{'SmsAccountId':_0xe80a39},'transaction':_0x532d76})[_0x8396('0x22')](function(){var _0x4b50cc=_[_0x8396('0x3f')](_0xffbbd9,function(_0x4c7513){_0x4c7513[_0x8396('0x68')]=_0xe80a39;return _0x4c7513;});return db[_0x8396('0x75')][_0x8396('0xbd')](_0x4b50cc,{'transaction':_0x532d76});});}else{_0x3c537c=0x194;_0x5dfa17=[];}});})[_0x8396('0x22')](function(){if(_0x3c537c!==0x194){return db[_0x8396('0x75')][_0x8396('0xbe')]({'where':{'SmsAccountId':_0xe80a39},'order':_0x8396('0xbf')})[_0x8396('0x22')](function(_0x451137){_0x5dfa17=_0x451137;});}})[_0x8396('0x2c')](function(_0x71eb56){_0x3c537c=0x1f4;logger[_0x8396('0x29')](_0x71eb56[_0x8396('0xc0')]);if(_0x71eb56[_0x8396('0x3b')]){delete _0x71eb56[_0x8396('0x3b')];}_0x5dfa17=_0x71eb56;})['finally'](function(){if(_0x5dfa17===null){_0x2f7242[_0x8396('0x2d')](_0x3c537c);}else{if(_0x3c537c===0x1f4){_0x2f7242[_0x8396('0x2e')](_0x3c537c)['send'](_0x5dfa17);}else{_0x2f7242['status'](_0x3c537c)[_0x8396('0x34')](_0x5dfa17);}}});};exports[_0x8396('0xc1')]=function(_0x58ef14,_0x3891fd,_0x22a1f2){var _0x3cebfc={};var _0xe5870d={};var _0x3b2e08;var _0x1e85df;return db[_0x8396('0x55')]['findOne']({'where':{'id':_0x58ef14[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x3891fd,null))[_0x8396('0x22')](function(_0x1a101b){if(_0x1a101b){_0x3b2e08=_0x1a101b;_0xe5870d[_0x8396('0x44')]=_['keys'](db[_0x8396('0x75')][_0x8396('0x40')]);_0xe5870d[_0x8396('0x45')]=_[_0x8396('0x46')](_0x58ef14[_0x8396('0x45')]);_0xe5870d[_0x8396('0x47')]=_[_0x8396('0x48')](_0xe5870d[_0x8396('0x44')],_0xe5870d[_0x8396('0x45')]);_0x3cebfc[_0x8396('0x49')]=_[_0x8396('0x48')](_0xe5870d['model'],qs[_0x8396('0x4a')](_0x58ef14['query'][_0x8396('0x4a')]));_0x3cebfc[_0x8396('0x49')]=_0x3cebfc['attributes'][_0x8396('0x4b')]?_0x3cebfc[_0x8396('0x49')]:_0xe5870d[_0x8396('0x44')];_0x3cebfc['order']=qs[_0x8396('0x6c')](_0x58ef14['query'][_0x8396('0x6c')]);_0x3cebfc['where']=qs[_0x8396('0x47')](_[_0x8396('0x50')](_0x58ef14[_0x8396('0x45')],_0xe5870d[_0x8396('0x47')]));if(_0x58ef14[_0x8396('0x45')][_0x8396('0x51')]){_0x3cebfc[_0x8396('0x4f')]=_[_0x8396('0x53')](_0x3cebfc[_0x8396('0x4f')],{'$or':_['map'](_0x3cebfc[_0x8396('0x49')],function(_0x47cb61){var _0x46e356={};_0x46e356[_0x47cb61]={'$like':'%'+_0x58ef14[_0x8396('0x45')]['filter']+'%'};return _0x46e356;})});}_0x3cebfc=_[_0x8396('0x53')]({},_0x3cebfc,_0x58ef14[_0x8396('0x54')]);return _0x3b2e08[_0x8396('0xc1')](_0x3cebfc);}})['then'](function(_0x3914f4){if(_0x3914f4){_0x1e85df=_0x3914f4[_0x8396('0x4b')];if(!_0x58ef14[_0x8396('0x45')][_0x8396('0x4c')](_0x8396('0x4d'))){_0x3cebfc[_0x8396('0x32')]=qs[_0x8396('0x32')](_0x58ef14[_0x8396('0x45')][_0x8396('0x32')]);_0x3cebfc['offset']=qs[_0x8396('0x30')](_0x58ef14[_0x8396('0x45')][_0x8396('0x30')]);}return _0x3b2e08['getApplications'](_0x3cebfc);}})[_0x8396('0x22')](function(_0x48b8e4){if(_0x48b8e4){return _0x48b8e4?{'count':_0x1e85df,'rows':_0x48b8e4}:null;}})[_0x8396('0x22')](respondWithResult(_0x3891fd,null))[_0x8396('0x2c')](handleError(_0x3891fd,null));};exports[_0x8396('0xc2')]=function(_0x4c1562,_0x3e9caf,_0x27d312){var _0x909a97={'raw':![],'where':{}};var _0x198e1d={};var _0xf59736={'count':0x0,'rows':[]};return db[_0x8396('0x55')]['findOne']({'where':{'id':_0x4c1562['params']['id']}})['then'](handleEntityNotFound(_0x3e9caf,null))[_0x8396('0x22')](function(_0x284c19){if(_0x284c19){_0x198e1d['model']=_['keys'](db[_0x8396('0xc3')]['rawAttributes']);_0x198e1d['query']=_[_0x8396('0x46')](_0x4c1562['query']);_0x198e1d[_0x8396('0x47')]=_[_0x8396('0x48')](_0x198e1d[_0x8396('0x44')],_0x198e1d[_0x8396('0x45')]);_0x909a97[_0x8396('0x49')]=_[_0x8396('0x48')](_0x198e1d[_0x8396('0x44')],qs[_0x8396('0x4a')](_0x4c1562[_0x8396('0x45')][_0x8396('0x4a')]));_0x909a97[_0x8396('0x49')]=_0x909a97[_0x8396('0x49')][_0x8396('0x4b')]?_0x909a97[_0x8396('0x49')]:_0x198e1d['model'];if(!_0x4c1562[_0x8396('0x45')][_0x8396('0x4c')](_0x8396('0x4d'))){_0x909a97['limit']=qs[_0x8396('0x32')](_0x4c1562[_0x8396('0x45')]['limit']);_0x909a97[_0x8396('0x30')]=qs[_0x8396('0x30')](_0x4c1562[_0x8396('0x45')][_0x8396('0x30')]);}_0x909a97[_0x8396('0x4e')]=qs[_0x8396('0x6c')](_0x4c1562['query'][_0x8396('0x6c')]);_0x909a97[_0x8396('0x4f')]=qs[_0x8396('0x47')](_[_0x8396('0x50')](_0x4c1562[_0x8396('0x45')],_0x198e1d['filters']));_0x909a97[_0x8396('0x4f')][_0x8396('0x68')]=_0x284c19['id'];if(_0x4c1562[_0x8396('0x45')]['filter']){_0x909a97[_0x8396('0x4f')]=_[_0x8396('0x53')](_0x909a97[_0x8396('0x4f')],{'$or':_['map'](_0x909a97[_0x8396('0x49')],function(_0x49e1ae){var _0x29ec73={};_0x29ec73[_0x49e1ae]={'$like':'%'+_0x4c1562[_0x8396('0x45')][_0x8396('0x51')]+'%'};return _0x29ec73;})});}_0x909a97=_[_0x8396('0x53')]({},_0x909a97,_0x4c1562[_0x8396('0x54')]);return db[_0x8396('0xc3')][_0x8396('0x33')]({'where':_0x909a97[_0x8396('0x4f')]})[_0x8396('0x22')](function(_0x41ab4d){_0xf59736[_0x8396('0x33')]=_0x41ab4d;if(_0x4c1562[_0x8396('0x45')][_0x8396('0x56')]){_0x909a97[_0x8396('0x57')]=[{'model':db['CmContact'],'as':_0x8396('0xc4'),'required':![]},{'model':db[_0x8396('0xab')],'as':_0x8396('0xc5'),'attributes':[_0x8396('0x3b'),_0x8396('0xc6'),_0x8396('0xc7')],'required':![]},{'model':db[_0x8396('0xc8')],'as':_0x8396('0xc9'),'attributes':['id',_0x8396('0x3b'),_0x8396('0xca')],'where':_0x4c1562[_0x8396('0x45')][_0x8396('0xcb')]?{'id':_0x4c1562[_0x8396('0x45')]['tag']}:undefined,'required':_0x4c1562[_0x8396('0x45')][_0x8396('0xcb')]?!![]:![]}];}return db['SmsInteraction']['findAll'](_0x909a97);})[_0x8396('0x22')](function(_0x5153d1){_0xf59736[_0x8396('0x72')]=_0x5153d1;return _0xf59736;});}})[_0x8396('0x22')](respondWithFilteredResult(_0x3e9caf,_0x909a97))[_0x8396('0x2c')](handleError(_0x3e9caf,null));};exports['send']=function(_0x388cfb,_0x5bbcb7,_0x4194ac){var _0x1c642e,_0x49c847,_0x1ee42f;if(_[_0x8396('0x94')](_0x388cfb['body'][_0x8396('0x5c')])||_0x388cfb[_0x8396('0x5c')]['body']===''){throw new db[(_0x8396('0x95'))][(_0x8396('0x97'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8396('0x94')](_0x388cfb[_0x8396('0x5c')]['to'])){throw new db['Sequelize'][(_0x8396('0x97'))](_0x8396('0xcc'));}_0x1c642e=_0x388cfb[_0x8396('0x5c')]['to'];return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0x388cfb[_0x8396('0x5a')]['id']},'include':[{'model':db[_0x8396('0x9c')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x1c642e},'limit':0x1,'order':[[_0x8396('0x7c'),'DESC']]}]}]})[_0x8396('0x22')](handleEntityNotFound(_0x5bbcb7,null))[_0x8396('0x22')](function(_0x455c4a){if(_0x455c4a&&_0x455c4a[_0x8396('0xcd')]){_0x49c847=_0x455c4a[_0x8396('0x39')]({'plain':!![]});if(_0x49c847[_0x8396('0xcd')]&&_0x49c847['List'][_0x8396('0x9e')]['length']){return _0x49c847[_0x8396('0xcd')][_0x8396('0x9e')][0x0];}return db['CmContact'][_0x8396('0x5b')](_[_0x8396('0x1a')](_0x388cfb[_0x8396('0x5c')],{'firstName':_0x1c642e,'mobile':_0x1c642e,'phone':_0x1c642e,'ListId':_0x49c847[_0x8396('0x7e')]}));}})[_0x8396('0x22')](handleEntityNotFound(_0x5bbcb7,null))[_0x8396('0x22')](function(_0x12f5d8){if(_0x12f5d8){_0x1ee42f=_0x12f5d8;return db[_0x8396('0xc3')]['find']({'where':{'ContactId':_0x1ee42f['id'],'closed':![],'SmsAccountId':_0x49c847['id']}})[_0x8396('0x22')](function(_0x332821){if(_0x332821){return[_0x332821,![]];}return db[_0x8396('0xc3')][_0x8396('0x5b')]({'UserId':_0x388cfb[_0x8396('0x5d')]['id'],'ContactId':_0x1ee42f['id'],'SmsAccountId':_0x49c847['id'],'phone':_0x1c642e,'firstMsgDirection':_0x8396('0xce'),'Messages':[_[_0x8396('0x53')](_0x388cfb['body'],{'read':![],'body':_0x388cfb['body']['body'],'phone':_0x1c642e,'SmsAccountId':_0x49c847['id'],'UserId':_0x388cfb['user']['id'],'ContactId':_0x1ee42f['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})['then'](function(_0x23c5ee){return[_0x23c5ee,!![]];});});}})[_0x8396('0xcf')](function(_0x394bdf,_0x2e3567){if(_0x2e3567){return _0x394bdf;}return db[_0x8396('0xd0')][_0x8396('0x5b')](_[_0x8396('0x53')](_0x388cfb[_0x8396('0x5c')],{'read':![],'body':_0x388cfb['body'][_0x8396('0x5c')],'phone':_0x1c642e,'SmsAccountId':_0x49c847['id'],'SmsInteractionId':_0x394bdf['id'],'UserId':_0x388cfb[_0x8396('0x5d')]['id'],'ContactId':_0x1ee42f['id']}))['then'](function(_0x2893de){_0x394bdf[_0x8396('0xd1')][_0x8396('0xd2')]=[];_0x394bdf[_0x8396('0xd1')][_0x8396('0xd2')][_0x8396('0xa3')](_0x2893de[_0x8396('0xd1')]);return _0x394bdf;});})[_0x8396('0x22')](respondWithResult(_0x5bbcb7,null))[_0x8396('0x2c')](handleError(_0x5bbcb7,null));};exports['status']=function(_0x384f85,_0x2816ee,_0x523ac6){if(_0x384f85['body']['id']){delete _0x384f85[_0x8396('0x5c')]['id'];}var _0x4bbfe4,_0x4373cd,_0x10fbcf;return db['SmsAccount']['find']({'where':{'id':_0x384f85['params']['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x2816ee,null))[_0x8396('0x22')](function(_0x40b675){if(_0x40b675){_0x10fbcf=_0x40b675;logger[_0x8396('0x26')](_0x8396('0x27'),'status',_0x8396('0xd3'),_0x40b675[_0x8396('0x42')],util[_0x8396('0xd4')](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));switch(_0x40b675['type']){case _0x8396('0xd5'):if(_0x384f85[_0x8396('0x5c')][_0x8396('0xd6')]&&_0x384f85['body'][_0x8396('0x2e')]){_0x4373cd=_0x384f85[_0x8396('0x5c')]['status'];return db[_0x8396('0xd0')][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')][_0x8396('0xd6')]}});}break;case _0x8396('0x88'):if(_0x384f85[_0x8396('0x5c')][_0x8396('0xd7')]&&_0x384f85[_0x8396('0x5c')]['statusInt']){_0x4373cd=_0x384f85[_0x8396('0x5c')][_0x8396('0xd8')];return db['SmsMessage'][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')]['requestid']}});}break;case'clicksend':if(_0x384f85[_0x8396('0x5c')][_0x8396('0x8a')]&&_0x384f85[_0x8396('0x5c')][_0x8396('0xd9')]){_0x4373cd=_0x384f85['body'][_0x8396('0xd9')];return db['SmsMessage'][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')][_0x8396('0x8a')]}});}break;case _0x8396('0xda'):var _0x4962bf=_0x384f85[_0x8396('0x5c')][_0x8396('0x8d')][0x0];if(_0x4962bf[_0x8396('0x84')]&&_0x4962bf[_0x8396('0x2e')]['groupName']===_0x8396('0xdb')){_0x4373cd=_0x4962bf[_0x8396('0x2e')][_0x8396('0xdc')];return db['SmsMessage']['find']({'where':{'messageId':_0x4962bf[_0x8396('0x84')]}});}break;case'clickatell':if(_0x384f85['body'][_0x8396('0x84')]&&_0x384f85['body']['status']){_0x4373cd=_0x384f85[_0x8396('0x5c')][_0x8396('0x2e')];return db[_0x8396('0xd0')][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')][_0x8396('0x84')]}});}break;case _0x8396('0x92'):if(_0x384f85[_0x8396('0x5c')][0x0][_0x8396('0x2b')]['id']){_0x4373cd=_0x384f85['body'][0x0][_0x8396('0x42')];return db['SmsMessage'][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')][0x0][_0x8396('0x2b')]['id']}});}break;case _0x8396('0xdd'):if(_0x384f85[_0x8396('0x5c')]['redif']&&_0x384f85['body'][_0x8396('0x2e')]){_0x4373cd=_0x384f85[_0x8396('0x5c')][_0x8396('0x2e')];return db[_0x8396('0xd0')][_0x8396('0x61')]({'where':{'messageId':_0x384f85[_0x8396('0x5c')][_0x8396('0xde')]}});}break;}}})['then'](handleEntityNotFound(_0x2816ee,null))['then'](function(_0x184dba){if(_0x184dba){_0x4bbfe4=_0x184dba;switch(_0x10fbcf[_0x8396('0x42')]){case _0x8396('0xd5'):if(_0x4373cd===_0x8396('0xdb')){return _0x4bbfe4[_0x8396('0x65')]({'read':!![]});}else{logger[_0x8396('0x29')](_0x8396('0x27'),_0x8396('0x2e'),'skebby',util[_0x8396('0xd4')](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x8396('0x88'):if(_0x4373cd==='1'){return _0x4bbfe4[_0x8396('0x65')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8396('0x2e'),_0x8396('0xd5'),util[_0x8396('0xd4')](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x8396('0x89'):if(!_0x384f85[_0x8396('0x5c')]['error_code']&&_0x4373cd>=0xc8&&_0x4373cd<=0xce){return _0x4bbfe4[_0x8396('0x65')]({'read':!![]});}else{logger['error'](_0x8396('0x27'),'status','clicksend',util[_0x8396('0xd4')](_0x384f85['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x2c2efe=_0x384f85[_0x8396('0x5c')][_0x8396('0x8d')][0x0];if(_0x2c2efe[_0x8396('0x2e')][_0x8396('0xdc')]===_0x8396('0xdb')){return _0x4bbfe4[_0x8396('0x65')]({'read':!![]});}else{logger[_0x8396('0x29')](_0x8396('0x27'),_0x8396('0x2e'),_0x8396('0xda'),util['inspect'](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x8396('0x8f'):if(_0x4373cd==_0x8396('0xdf')||_0x4373cd=='RECEIVED_BY_RECIPIENT'){return _0x4bbfe4[_0x8396('0x65')]({'read':!![]});}else{logger[_0x8396('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8396('0x2e'),'clickatell',util[_0x8396('0xd4')](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x8396('0x92'):if(_0x4373cd=='message-delivered'){return _0x4bbfe4['update']({'read':!![]});}else{logger['error'](_0x8396('0x27'),'status',_0x8396('0x92'),util[_0x8396('0xd4')](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x8396('0xdd'):if(_0x4373cd===_0x8396('0xe0')||_0x4373cd===_0x8396('0xe1')){return _0x4bbfe4['update']({'read':!![]});}else{logger[_0x8396('0x29')](_0x8396('0x27'),_0x8396('0x2e'),'intelepeer',util['inspect'](_0x384f85[_0x8396('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x4bbfe4;}})['then'](respondWithResult(_0x2816ee,null))[_0x8396('0x2c')](handleError(_0x2816ee,null));};exports[_0x8396('0xe2')]=function(_0x2d9238,_0xed110,_0x11aac9){var _0x487a1e,_0x49a5d9,_0x13609c;return db['SmsAccount'][_0x8396('0x61')]({'where':{'id':_0x2d9238[_0x8396('0x5a')]['id']}})[_0x8396('0x22')](handleEntityNotFound(_0xed110,null))['then'](function(_0x3a04de){if(_0x3a04de){_0x13609c=_0x3a04de;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x8396('0xd3'),_0x3a04de[_0x8396('0x42')],util[_0x8396('0xd4')](_0x2d9238['query'],{'showHidden':![],'depth':null}));switch(_0x3a04de['type']){case _0x8396('0xe3'):if(_0x2d9238[_0x8396('0x45')][_0x8396('0xe4')]&&_0x2d9238['query']['state']){_0x49a5d9=_0x2d9238[_0x8396('0x45')]['state'];return db['SmsMessage'][_0x8396('0x61')]({'where':{'messageId':_0x2d9238[_0x8396('0x45')][_0x8396('0xe4')]}});}break;}}})[_0x8396('0x22')](handleEntityNotFound(_0xed110,null))[_0x8396('0x22')](function(_0x587387){if(_0x587387){_0x487a1e=_0x587387;switch(_0x13609c['type']){case'csc':if(_0x49a5d9==='2'||_0x49a5d9==='6'){return _0x487a1e['update']({'read':!![]});}else{logger[_0x8396('0x29')](_0x8396('0x27'),'status','csc',util[_0x8396('0xd4')](_0x2d9238['query'],{'showHidden':![],'depth':null}));};break;}return _0x487a1e;}})[_0x8396('0x22')](respondWithResult(_0xed110,null))[_0x8396('0x2c')](handleError(_0xed110,null));};exports[_0x8396('0xe5')]=function(_0xc6f210,_0x57a6ea,_0x935d25){return db[_0x8396('0x55')][_0x8396('0x61')]({'where':{'id':_0xc6f210[_0x8396('0x5a')]['id']}})['then'](handleEntityNotFound(_0x57a6ea,null))['then'](function(_0x60fdb){if(_0x60fdb){return _0x60fdb[_0x8396('0xe5')](_0xc6f210[_0x8396('0x5c')][_0x8396('0x6e')],_[_0x8396('0xa0')](_0xc6f210[_0x8396('0x5c')],[_0x8396('0x6e'),'id'])||{})[_0x8396('0xcf')](function(_0x55ffa5){for(var _0x30f9d5=0x0;_0x30f9d5<_0xc6f210[_0x8396('0x5c')][_0x8396('0x6e')][_0x8396('0x4b')];_0x30f9d5+=0x1){socket[_0x8396('0xe6')]('userSmsAccount:save',{'UserId':Number(_0xc6f210[_0x8396('0x5c')][_0x8396('0x6e')][_0x30f9d5]),'SmsAccountId':Number(_0xc6f210[_0x8396('0x5a')]['id'])});}return _0x55ffa5;});}})[_0x8396('0x22')](respondWithResult(_0x57a6ea,null))[_0x8396('0x2c')](handleError(_0x57a6ea,null));};exports[_0x8396('0xe7')]=function(_0x69132b,_0x4b8e40,_0x16d821){return db[_0x8396('0x55')]['find']({'where':{'id':_0x69132b['params']['id']}})[_0x8396('0x22')](handleEntityNotFound(_0x4b8e40,null))['then'](function(_0x411859){if(_0x411859){return _0x411859[_0x8396('0xe7')](_0x69132b[_0x8396('0x45')]['ids'])[_0x8396('0x22')](function(){if(_['isArray'](_0x69132b['query'][_0x8396('0x6e')])){for(var _0x19be7a=0x0;_0x19be7a<_0x69132b['query'][_0x8396('0x6e')][_0x8396('0x4b')];_0x19be7a+=0x1){socket[_0x8396('0xe6')]('userSmsAccount:remove',{'UserId':Number(_0x69132b['query'][_0x8396('0x6e')][_0x19be7a]),'SmsAccountId':Number(_0x69132b[_0x8396('0x5a')]['id'])});}}else{socket['emit'](_0x8396('0xe8'),{'UserId':Number(_0x69132b[_0x8396('0x45')][_0x8396('0x6e')]),'SmsAccountId':Number(_0x69132b['params']['id'])});}});}})[_0x8396('0x22')](respondWithStatusCode(_0x4b8e40,null))[_0x8396('0x2c')](handleError(_0x4b8e40,null));};exports[_0x8396('0xe9')]=function(_0x3054ae,_0x278d00,_0x58a02e){var _0x405ad9={};var _0xc0c7c6={};var _0xf3ce2a;var _0x803336;return db[_0x8396('0x55')][_0x8396('0x6b')]({'where':{'id':_0x3054ae[_0x8396('0x5a')]['id']}})['then'](handleEntityNotFound(_0x278d00,null))[_0x8396('0x22')](function(_0x4db419){if(_0x4db419){_0xf3ce2a=_0x4db419;_0xc0c7c6['model']=_[_0x8396('0x46')](db[_0x8396('0xab')][_0x8396('0x40')]);_0xc0c7c6[_0x8396('0x45')]=_[_0x8396('0x46')](_0x3054ae[_0x8396('0x45')]);_0xc0c7c6[_0x8396('0x47')]=_[_0x8396('0x48')](_0xc0c7c6['model'],_0xc0c7c6[_0x8396('0x45')]);_0x405ad9[_0x8396('0x49')]=_['intersection'](_0xc0c7c6[_0x8396('0x44')],qs[_0x8396('0x4a')](_0x3054ae[_0x8396('0x45')][_0x8396('0x4a')]));_0x405ad9[_0x8396('0x49')]=_0x405ad9[_0x8396('0x49')][_0x8396('0x4b')]?_0x405ad9['attributes']:_0xc0c7c6[_0x8396('0x44')];_0x405ad9['order']=qs[_0x8396('0x6c')](_0x3054ae['query'][_0x8396('0x6c')]);_0x405ad9[_0x8396('0x4f')]=qs[_0x8396('0x47')](_['pick'](_0x3054ae[_0x8396('0x45')],_0xc0c7c6['filters']));if(_0x3054ae[_0x8396('0x45')][_0x8396('0x51')]){_0x405ad9['where']=_[_0x8396('0x53')](_0x405ad9['where'],{'$or':_[_0x8396('0x3f')](_0x405ad9['attributes'],function(_0x3a5c73){var _0x51faf8={};_0x51faf8[_0x3a5c73]={'$like':'%'+_0x3054ae[_0x8396('0x45')]['filter']+'%'};return _0x51faf8;})});}_0x405ad9=_[_0x8396('0x53')]({},_0x405ad9,_0x3054ae['options']);return _0xf3ce2a[_0x8396('0xe9')](_0x405ad9);}})[_0x8396('0x22')](function(_0x4532e6){if(_0x4532e6){_0x803336=_0x4532e6['length'];if(!_0x3054ae['query']['hasOwnProperty'](_0x8396('0x4d'))){_0x405ad9[_0x8396('0x32')]=qs[_0x8396('0x32')](_0x3054ae[_0x8396('0x45')][_0x8396('0x32')]);_0x405ad9['offset']=qs[_0x8396('0x30')](_0x3054ae[_0x8396('0x45')]['offset']);}return _0xf3ce2a[_0x8396('0xe9')](_0x405ad9);}})[_0x8396('0x22')](function(_0x44910c){if(_0x44910c){return _0x44910c?{'count':_0x803336,'rows':_0x44910c}:null;}})[_0x8396('0x22')](respondWithResult(_0x278d00,null))['catch'](handleError(_0x278d00,null));};
\ No newline at end of file
index 325d85d..dc06b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x331b=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','../../mysqldb','SmsAccount'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x331b,0x16e));var _0xb331=function(_0x2c4375,_0x43d256){_0x2c4375=_0x2c4375-0x0;var _0x5566b7=_0x331b[_0x2c4375];return _0x5566b7;};'use strict';var EventEmitter=require(_0xb331('0x0'));var SmsAccount=require(_0xb331('0x1'))['db'][_0xb331('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xb331('0x3')](0x0);var events={'afterCreate':_0xb331('0x4'),'afterUpdate':'update','afterDestroy':_0xb331('0x5')};function emitEvent(_0x213ca7){return function(_0x5d74d0,_0x1810ef,_0x5c7bda){SmsAccountEvents[_0xb331('0x6')](_0x213ca7+':'+_0x5d74d0['id'],_0x5d74d0);SmsAccountEvents[_0xb331('0x6')](_0x213ca7,_0x5d74d0);_0x5c7bda(null);};}for(var e in events){if(events[_0xb331('0x7')](e)){var event=events[e];SmsAccount[_0xb331('0x8')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0xa605=['../../mysqldb','SmsAccount','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa605,0xd0));var _0x5a60=function(_0x49d88a,_0x50377b){_0x49d88a=_0x49d88a-0x0;var _0x324956=_0xa605[_0x49d88a];return _0x324956;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x5a60('0x0'))['db'][_0x5a60('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x5a60('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5a60('0x3'),'afterDestroy':_0x5a60('0x4')};function emitEvent(_0x18ebe7){return function(_0x25bdb9,_0x273c51,_0x5c7efe){SmsAccountEvents[_0x5a60('0x5')](_0x18ebe7+':'+_0x25bdb9['id'],_0x25bdb9);SmsAccountEvents[_0x5a60('0x5')](_0x18ebe7,_0x25bdb9);_0x5c7efe(null);};}for(var e in events){if(events[_0x5a60('0x6')](e)){var event=events[e];SmsAccount[_0x5a60('0x7')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index 6cefe79..149d746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ef=['SmsAccount','sms_accounts','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsAccount.attributes','exports'];(function(_0x298254,_0x3f9071){var _0x51c68a=function(_0x3a9ced){while(--_0x3a9ced){_0x298254['push'](_0x298254['shift']());}};_0x51c68a(++_0x3f9071);}(_0x71ef,0x1e6));var _0xf71e=function(_0x239dba,_0x309e95){_0x239dba=_0x239dba-0x0;var _0x1ceb11=_0x71ef[_0x239dba];return _0x1ceb11;};'use strict';var _=require('lodash');var util=require(_0xf71e('0x0'));var logger=require(_0xf71e('0x1'))('api');var moment=require(_0xf71e('0x2'));var BPromise=require(_0xf71e('0x3'));var rp=require(_0xf71e('0x4'));var fs=require('fs');var path=require(_0xf71e('0x5'));var rimraf=require(_0xf71e('0x6'));var config=require('../../config/environment');var attributes=require(_0xf71e('0x7'));module[_0xf71e('0x8')]=function(_0x2b7e22,_0x14c433){return _0x2b7e22['define'](_0xf71e('0x9'),attributes,{'tableName':_0xf71e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0398=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','lodash','util'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x0398,0xce));var _0x8039=function(_0x1fbf82,_0x5a47f3){_0x1fbf82=_0x1fbf82-0x0;var _0x2374a5=_0x0398[_0x1fbf82];return _0x2374a5;};'use strict';var _=require(_0x8039('0x0'));var util=require(_0x8039('0x1'));var logger=require(_0x8039('0x2'))(_0x8039('0x3'));var moment=require(_0x8039('0x4'));var BPromise=require(_0x8039('0x5'));var rp=require(_0x8039('0x6'));var fs=require('fs');var path=require(_0x8039('0x7'));var rimraf=require(_0x8039('0x8'));var config=require(_0x8039('0x9'));var attributes=require(_0x8039('0xa'));module[_0x8039('0xb')]=function(_0x253915,_0x4967c7){return _0x253915[_0x8039('0xc')]('SmsAccount',attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87cfd0b..f17b09b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe117=['randomstring','../../config/utils','jayson/promise','client','redis','localhost','request','then','info','debug','request\x20sent','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','catch','ShowSmsAccount','SmsAccount','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird'];(function(_0x48e9e7,_0x32f36f){var _0x4763f8=function(_0x6bef3c){while(--_0x6bef3c){_0x48e9e7['push'](_0x48e9e7['shift']());}};_0x4763f8(++_0x32f36f);}(_0xe117,0x128));var _0x7e11=function(_0x1bb2ca,_0x34a1c3){_0x1bb2ca=_0x1bb2ca-0x0;var _0x143680=_0xe117[_0x1bb2ca];return _0x143680;};'use strict';var _=require(_0x7e11('0x0'));var util=require(_0x7e11('0x1'));var moment=require(_0x7e11('0x2'));var BPromise=require(_0x7e11('0x3'));var rs=require(_0x7e11('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7e11('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x7e11('0x6'));var client=jayson[_0x7e11('0x7')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x7e11('0x8')],{'host':_0x7e11('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7e11('0x8')]));require('./smsAccount.socket')['register'](socket);function respondWithRpcPromise(_0x225ad9,_0x25b182,_0x57bf44){return new BPromise(function(_0x5e6029,_0x2e9f45){return client[_0x7e11('0xa')](_0x225ad9,_0x57bf44)[_0x7e11('0xb')](function(_0x4d31c0){logger[_0x7e11('0xc')]('SmsAccount,\x20%s,\x20%s',_0x25b182,'request\x20sent');logger[_0x7e11('0xd')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x25b182,_0x7e11('0xe'),JSON[_0x7e11('0xf')](_0x4d31c0));if(_0x4d31c0[_0x7e11('0x10')]){if(_0x4d31c0[_0x7e11('0x10')][_0x7e11('0x11')]===0x1f4){logger[_0x7e11('0x10')](_0x7e11('0x12'),_0x25b182,_0x4d31c0['error'][_0x7e11('0x13')]);return _0x2e9f45(_0x4d31c0[_0x7e11('0x10')][_0x7e11('0x13')]);}logger[_0x7e11('0x10')]('SmsAccount,\x20%s,\x20%s',_0x25b182,_0x4d31c0['error'][_0x7e11('0x13')]);return _0x5e6029(_0x4d31c0[_0x7e11('0x10')][_0x7e11('0x13')]);}else{logger[_0x7e11('0xc')](_0x7e11('0x12'),_0x25b182,_0x7e11('0xe'));_0x5e6029(_0x4d31c0['result'][_0x7e11('0x13')]);}})[_0x7e11('0x14')](function(_0x50c2a5){logger[_0x7e11('0x10')](_0x7e11('0x12'),_0x25b182,_0x50c2a5);_0x2e9f45(_0x50c2a5);});});}exports[_0x7e11('0x15')]=function(_0x13b414){var _0x15a38a=this;return new Promise(function(_0x59ffb9,_0x3bf864){return db[_0x7e11('0x16')]['find']({'raw':_0x13b414[_0x7e11('0x17')]?_0x13b414[_0x7e11('0x17')][_0x7e11('0x18')]===undefined?!![]:![]:!![],'where':_0x13b414[_0x7e11('0x17')]?_0x13b414[_0x7e11('0x17')][_0x7e11('0x19')]||null:null,'attributes':_0x13b414[_0x7e11('0x17')]?_0x13b414['options'][_0x7e11('0x1a')]||null:null,'include':_0x13b414[_0x7e11('0x17')]?_0x13b414['options'][_0x7e11('0x1b')]?_['map'](_0x13b414[_0x7e11('0x17')][_0x7e11('0x1b')],function(_0x4ad749){return{'model':db[_0x4ad749['model']],'as':_0x4ad749['as'],'attributes':_0x4ad749[_0x7e11('0x1a')],'include':_0x4ad749[_0x7e11('0x1b')]?_['map'](_0x4ad749[_0x7e11('0x1b')],function(_0x4fa008){return{'model':db[_0x4fa008['model']],'as':_0x4fa008['as'],'attributes':_0x4fa008['attributes'],'include':_0x4fa008[_0x7e11('0x1b')]?_[_0x7e11('0x1c')](_0x4fa008['include'],function(_0x1f6249){return{'model':db[_0x1f6249[_0x7e11('0x1d')]],'as':_0x1f6249['as'],'attributes':_0x1f6249[_0x7e11('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7e11('0xb')](function(_0x4a2c6c){logger[_0x7e11('0xc')](_0x7e11('0x15'),_0x13b414);logger[_0x7e11('0xd')]('ShowSmsAccount',_0x13b414,JSON[_0x7e11('0xf')](_0x4a2c6c));_0x59ffb9(_0x4a2c6c);})[_0x7e11('0x14')](function(_0x835516){logger['error'](_0x7e11('0x15'),_0x835516[_0x7e11('0x13')],_0x13b414);_0x3bf864(_0x15a38a[_0x7e11('0x10')](0x1f4,_0x835516[_0x7e11('0x13')]));});});};
\ No newline at end of file
+var _0x4524=['localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','SmsAccount,\x20%s,\x20%s','message','result','ShowSmsAccount','find','options','raw','where','attributes','include','model','map','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis'];(function(_0x59abcb,_0x56a161){var _0x5302bf=function(_0x207f60){while(--_0x207f60){_0x59abcb['push'](_0x59abcb['shift']());}};_0x5302bf(++_0x56a161);}(_0x4524,0x1c5));var _0x4452=function(_0x43a87b,_0x53f4e4){_0x43a87b=_0x43a87b-0x0;var _0x3f5464=_0x4524[_0x43a87b];return _0x3f5464;};'use strict';var _=require('lodash');var util=require(_0x4452('0x0'));var moment=require(_0x4452('0x1'));var BPromise=require(_0x4452('0x2'));var rs=require(_0x4452('0x3'));var fs=require('fs');var Redis=require(_0x4452('0x4'));var db=require(_0x4452('0x5'))['db'];var utils=require(_0x4452('0x6'));var logger=require(_0x4452('0x7'))(_0x4452('0x8'));var config=require(_0x4452('0x9'));var jayson=require(_0x4452('0xa'));var client=jayson[_0x4452('0xb')][_0x4452('0xc')]({'port':0x232a});config['redis']=_[_0x4452('0xd')](config[_0x4452('0xe')],{'host':_0x4452('0xf'),'port':0x18eb});var socket=require(_0x4452('0x10'))(new Redis(config[_0x4452('0xe')]));require(_0x4452('0x11'))[_0x4452('0x12')](socket);function respondWithRpcPromise(_0x8d5145,_0x49af08,_0x2935be){return new BPromise(function(_0x24c400,_0x4bc35c){return client[_0x4452('0x13')](_0x8d5145,_0x2935be)[_0x4452('0x14')](function(_0x30e9b9){logger[_0x4452('0x15')]('SmsAccount,\x20%s,\x20%s',_0x49af08,_0x4452('0x16'));logger['debug'](_0x4452('0x17'),_0x49af08,_0x4452('0x16'),JSON[_0x4452('0x18')](_0x30e9b9));if(_0x30e9b9[_0x4452('0x19')]){if(_0x30e9b9['error']['code']===0x1f4){logger[_0x4452('0x19')](_0x4452('0x1a'),_0x49af08,_0x30e9b9[_0x4452('0x19')][_0x4452('0x1b')]);return _0x4bc35c(_0x30e9b9[_0x4452('0x19')][_0x4452('0x1b')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x49af08,_0x30e9b9[_0x4452('0x19')][_0x4452('0x1b')]);return _0x24c400(_0x30e9b9['error'][_0x4452('0x1b')]);}else{logger[_0x4452('0x15')](_0x4452('0x1a'),_0x49af08,_0x4452('0x16'));_0x24c400(_0x30e9b9[_0x4452('0x1c')][_0x4452('0x1b')]);}})['catch'](function(_0x4c10ad){logger[_0x4452('0x19')](_0x4452('0x1a'),_0x49af08,_0x4c10ad);_0x4bc35c(_0x4c10ad);});});}exports[_0x4452('0x1d')]=function(_0x573753){var _0x35e7fd=this;return new Promise(function(_0x392f5f,_0x1d8217){return db['SmsAccount'][_0x4452('0x1e')]({'raw':_0x573753[_0x4452('0x1f')]?_0x573753[_0x4452('0x1f')][_0x4452('0x20')]===undefined?!![]:![]:!![],'where':_0x573753['options']?_0x573753['options'][_0x4452('0x21')]||null:null,'attributes':_0x573753[_0x4452('0x1f')]?_0x573753[_0x4452('0x1f')][_0x4452('0x22')]||null:null,'include':_0x573753[_0x4452('0x1f')]?_0x573753[_0x4452('0x1f')][_0x4452('0x23')]?_['map'](_0x573753[_0x4452('0x1f')][_0x4452('0x23')],function(_0xc750d5){return{'model':db[_0xc750d5[_0x4452('0x24')]],'as':_0xc750d5['as'],'attributes':_0xc750d5[_0x4452('0x22')],'include':_0xc750d5[_0x4452('0x23')]?_[_0x4452('0x25')](_0xc750d5['include'],function(_0x467b10){return{'model':db[_0x467b10['model']],'as':_0x467b10['as'],'attributes':_0x467b10[_0x4452('0x22')],'include':_0x467b10[_0x4452('0x23')]?_[_0x4452('0x25')](_0x467b10[_0x4452('0x23')],function(_0x1b7e9d){return{'model':db[_0x1b7e9d[_0x4452('0x24')]],'as':_0x1b7e9d['as'],'attributes':_0x1b7e9d[_0x4452('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4452('0x14')](function(_0x2c4479){logger[_0x4452('0x15')](_0x4452('0x1d'),_0x573753);logger[_0x4452('0x26')](_0x4452('0x1d'),_0x573753,JSON[_0x4452('0x18')](_0x2c4479));_0x392f5f(_0x2c4479);})['catch'](function(_0x5ccbc9){logger[_0x4452('0x19')](_0x4452('0x1d'),_0x5ccbc9[_0x4452('0x1b')],_0x573753);_0x1d8217(_0x35e7fd[_0x4452('0x19')](0x1f4,_0x5ccbc9[_0x4452('0x1b')]));});});};
\ No newline at end of file
index 40243ea..71d4d24 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 e032bab..572e511 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(_0xd6d3c8,_0x5795c4){var _0x2a8307=function(_0x54faf0){while(--_0x54faf0){_0xd6d3c8['push'](_0xd6d3c8['shift']());}};_0x2a8307(++_0x5795c4);}(_0x7217,0x19e));var _0x7721=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0x7217[_0x2f3848];return _0x102668;};'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 _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x262a46,_0x1ea3a1){var _0x3b87ec=function(_0x2a5534){while(--_0x2a5534){_0x262a46['push'](_0x262a46['shift']());}};_0x3b87ec(++_0x1ea3a1);}(_0x008c,0x188));var _0xc008=function(_0x15af6c,_0x47fe2d){_0x15af6c=_0x15af6c-0x0;var _0x13c017=_0x008c[_0x15af6c];return _0x13c017;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
index f676c5e..85b59de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4430=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4430,0x1ab));var _0x0443=function(_0x30a5b5,_0x21e05e){_0x30a5b5=_0x30a5b5-0x0;var _0x58e1c4=_0x4430[_0x30a5b5];return _0x58e1c4;};'use strict';var Sequelize=require('sequelize');module[_0x0443('0x0')]={'priority':{'type':Sequelize[_0x0443('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x0443('0x2')],'allowNull':![],'defaultValue':_0x0443('0x3')},'appdata':{'type':Sequelize[_0x0443('0x4')]()},'description':{'type':Sequelize[_0x0443('0x2')]},'interval':{'type':Sequelize[_0x0443('0x2')],'defaultValue':_0x0443('0x5')}};
\ No newline at end of file
+var _0x817e=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x1ac077,_0x26eccc){var _0x367962=function(_0x563dcc){while(--_0x563dcc){_0x1ac077['push'](_0x1ac077['shift']());}};_0x367962(++_0x26eccc);}(_0x817e,0x169));var _0xe817=function(_0x34f9a4,_0x3a5515){_0x34f9a4=_0x34f9a4-0x0;var _0x2ebda3=_0x817e[_0x34f9a4];return _0x2ebda3;};'use strict';var Sequelize=require(_0xe817('0x0'));module['exports']={'priority':{'type':Sequelize[_0xe817('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe817('0x2')],'allowNull':![],'defaultValue':_0xe817('0x3')},'appdata':{'type':Sequelize[_0xe817('0x4')]()},'description':{'type':Sequelize[_0xe817('0x2')]},'interval':{'type':Sequelize[_0xe817('0x2')],'defaultValue':_0xe817('0x5')}};
\ No newline at end of file
index e112f78..adc4cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5995=['rows','params','rawAttributes','keys','length','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','limit','count','offset','set','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','SmsApplication','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x4e0081,_0x5969d1){var _0x1100d4=function(_0x485f59){while(--_0x485f59){_0x4e0081['push'](_0x4e0081['shift']());}};_0x1100d4(++_0x5969d1);}(_0x5995,0x145));var _0x5599=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x5995[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x5599('0x0'));var rimraf=require(_0x5599('0x1'));var zipdir=require(_0x5599('0x2'));var jsonpatch=require(_0x5599('0x3'));var rp=require(_0x5599('0x4'));var moment=require(_0x5599('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5599('0x6'));var path=require(_0x5599('0x7'));var sox=require(_0x5599('0x8'));var csv=require('to-csv');var ejs=require(_0x5599('0x9'));var fs=require('fs');var fs_extra=require(_0x5599('0xa'));var _=require('lodash');var squel=require(_0x5599('0xb'));var crypto=require(_0x5599('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5599('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5599('0xe'));var Papa=require(_0x5599('0xf'));var Redis=require(_0x5599('0x10'));var authService=require(_0x5599('0x11'));var qs=require(_0x5599('0x12'));var as=require(_0x5599('0x13'));var hardwareService=require(_0x5599('0x14'));var logger=require(_0x5599('0x15'))(_0x5599('0x16'));var utils=require(_0x5599('0x17'));var config=require(_0x5599('0x18'));var licenseUtil=require(_0x5599('0x19'));var db=require(_0x5599('0x1a'))['db'];function respondWithStatusCode(_0x2cbe00,_0x5d5040){_0x5d5040=_0x5d5040||0xcc;return function(_0xa01bef){if(_0xa01bef){return _0x2cbe00['sendStatus'](_0x5d5040);}return _0x2cbe00[_0x5599('0x1b')](_0x5d5040)['end']();};}function respondWithResult(_0x45ea04,_0x569b94){_0x569b94=_0x569b94||0xc8;return function(_0x275d5a){if(_0x275d5a){return _0x45ea04['status'](_0x569b94)[_0x5599('0x1c')](_0x275d5a);}};}function respondWithFilteredResult(_0x11eeae,_0x1f78f4){return function(_0x48343a){if(_0x48343a){var _0x290a95=typeof _0x1f78f4['offset']==='undefined'&&typeof _0x1f78f4[_0x5599('0x1d')]==='undefined';var _0xd0a21c=_0x48343a[_0x5599('0x1e')];var _0x50287a=_0x290a95?0x0:_0x1f78f4['offset'];var _0x23f036=_0x290a95?_0x48343a[_0x5599('0x1e')]:_0x1f78f4[_0x5599('0x1f')]+_0x1f78f4['limit'];var _0x186ff9;if(_0x23f036>=_0xd0a21c){_0x23f036=_0xd0a21c;_0x186ff9=0xc8;}else{_0x186ff9=0xce;}_0x11eeae['status'](_0x186ff9);return _0x11eeae[_0x5599('0x20')]('Content-Range',_0x50287a+'-'+_0x23f036+'/'+_0xd0a21c)[_0x5599('0x1c')](_0x48343a);}return null;};}function patchUpdates(_0x153d78){return function(_0x35e129){try{jsonpatch[_0x5599('0x21')](_0x35e129,_0x153d78,!![]);}catch(_0x2b0a90){return BPromise[_0x5599('0x22')](_0x2b0a90);}return _0x35e129[_0x5599('0x23')]();};}function saveUpdates(_0x3f046e,_0x51e206){return function(_0x2fc0b3){if(_0x2fc0b3){return _0x2fc0b3[_0x5599('0x24')](_0x3f046e)[_0x5599('0x25')](function(_0x2df717){return _0x2df717;});}return null;};}function removeEntity(_0xa0de3,_0xad0f4c){return function(_0x4331b2){if(_0x4331b2){return _0x4331b2[_0x5599('0x26')]()['then'](function(){_0xa0de3[_0x5599('0x1b')](0xcc)[_0x5599('0x27')]();});}};}function handleEntityNotFound(_0x1056fc,_0x33dfdd){return function(_0x13dd94){if(!_0x13dd94){_0x1056fc[_0x5599('0x28')](0x194);}return _0x13dd94;};}function handleError(_0x414fcc,_0x29ae1f){_0x29ae1f=_0x29ae1f||0x1f4;return function(_0x4bbea9){logger[_0x5599('0x29')](_0x4bbea9[_0x5599('0x2a')]);if(_0x4bbea9['name']){delete _0x4bbea9[_0x5599('0x2b')];}_0x414fcc[_0x5599('0x1b')](_0x29ae1f)[_0x5599('0x2c')](_0x4bbea9);};}exports[_0x5599('0x2d')]=function(_0x1fc71c,_0x5e49fd){var _0x3321bb={},_0x31ed1c={},_0x12618c={'count':0x0,'rows':[]};var _0x424b4a=_[_0x5599('0x2e')](db[_0x5599('0x2f')]['rawAttributes'],function(_0x3853db){return{'name':_0x3853db[_0x5599('0x30')],'type':_0x3853db[_0x5599('0x31')][_0x5599('0x32')]};});_0x31ed1c[_0x5599('0x33')]=_[_0x5599('0x2e')](_0x424b4a,'name');_0x31ed1c[_0x5599('0x34')]=_['keys'](_0x1fc71c['query']);_0x31ed1c[_0x5599('0x35')]=_[_0x5599('0x36')](_0x31ed1c[_0x5599('0x33')],_0x31ed1c[_0x5599('0x34')]);_0x3321bb[_0x5599('0x37')]=_[_0x5599('0x36')](_0x31ed1c[_0x5599('0x33')],qs[_0x5599('0x38')](_0x1fc71c['query'][_0x5599('0x38')]));_0x3321bb[_0x5599('0x37')]=_0x3321bb[_0x5599('0x37')]['length']?_0x3321bb[_0x5599('0x37')]:_0x31ed1c['model'];if(!_0x1fc71c['query'][_0x5599('0x39')](_0x5599('0x3a'))){_0x3321bb[_0x5599('0x1d')]=qs[_0x5599('0x1d')](_0x1fc71c[_0x5599('0x34')][_0x5599('0x1d')]);_0x3321bb['offset']=qs[_0x5599('0x1f')](_0x1fc71c[_0x5599('0x34')]['offset']);}_0x3321bb[_0x5599('0x3b')]=qs[_0x5599('0x3c')](_0x1fc71c[_0x5599('0x34')][_0x5599('0x3c')]);_0x3321bb['where']=qs[_0x5599('0x35')](_[_0x5599('0x3d')](_0x1fc71c[_0x5599('0x34')],_0x31ed1c['filters']),_0x424b4a);if(_0x1fc71c[_0x5599('0x34')][_0x5599('0x3e')]){_0x3321bb[_0x5599('0x3f')]=_[_0x5599('0x40')](_0x3321bb['where'],{'$or':_[_0x5599('0x2e')](_0x424b4a,function(_0x3eb7d8){if(_0x3eb7d8[_0x5599('0x31')]!==_0x5599('0x41')){var _0x311d64={};_0x311d64[_0x3eb7d8[_0x5599('0x2b')]]={'$like':'%'+_0x1fc71c[_0x5599('0x34')][_0x5599('0x3e')]+'%'};return _0x311d64;}})});}_0x3321bb=_[_0x5599('0x40')]({},_0x3321bb,_0x1fc71c[_0x5599('0x42')]);var _0x222bbd={'where':_0x3321bb[_0x5599('0x3f')]};return db[_0x5599('0x2f')]['count'](_0x222bbd)[_0x5599('0x25')](function(_0x46d518){_0x12618c[_0x5599('0x1e')]=_0x46d518;if(_0x1fc71c[_0x5599('0x34')][_0x5599('0x43')]){_0x3321bb[_0x5599('0x44')]=[{'all':!![]}];}return db['SmsApplication'][_0x5599('0x45')](_0x3321bb);})['then'](function(_0x168655){_0x12618c[_0x5599('0x46')]=_0x168655;return _0x12618c;})[_0x5599('0x25')](respondWithFilteredResult(_0x5e49fd,_0x3321bb))['catch'](handleError(_0x5e49fd,null));};exports['show']=function(_0x474e4f,_0x408905){var _0x3d43ae={'raw':!![],'where':{'id':_0x474e4f[_0x5599('0x47')]['id']}},_0x1f10df={};_0x1f10df[_0x5599('0x33')]=_['keys'](db['SmsApplication'][_0x5599('0x48')]);_0x1f10df[_0x5599('0x34')]=_[_0x5599('0x49')](_0x474e4f[_0x5599('0x34')]);_0x1f10df[_0x5599('0x35')]=_[_0x5599('0x36')](_0x1f10df['model'],_0x1f10df[_0x5599('0x34')]);_0x3d43ae[_0x5599('0x37')]=_[_0x5599('0x36')](_0x1f10df[_0x5599('0x33')],qs['fields'](_0x474e4f[_0x5599('0x34')]['fields']));_0x3d43ae[_0x5599('0x37')]=_0x3d43ae['attributes'][_0x5599('0x4a')]?_0x3d43ae['attributes']:_0x1f10df[_0x5599('0x33')];if(_0x474e4f[_0x5599('0x34')][_0x5599('0x43')]){_0x3d43ae[_0x5599('0x44')]=[{'all':!![]}];}_0x3d43ae=_[_0x5599('0x40')]({},_0x3d43ae,_0x474e4f[_0x5599('0x42')]);return db[_0x5599('0x2f')][_0x5599('0x4b')](_0x3d43ae)['then'](handleEntityNotFound(_0x408905,null))[_0x5599('0x25')](respondWithResult(_0x408905,null))[_0x5599('0x4c')](handleError(_0x408905,null));};exports[_0x5599('0x4d')]=function(_0x4bd014,_0xb53184){return db[_0x5599('0x2f')][_0x5599('0x4d')](_0x4bd014[_0x5599('0x4e')],{})[_0x5599('0x25')](respondWithResult(_0xb53184,0xc9))['catch'](handleError(_0xb53184,null));};exports['update']=function(_0x5185af,_0xabc154){if(_0x5185af[_0x5599('0x4e')]['id']){delete _0x5185af[_0x5599('0x4e')]['id'];}return db[_0x5599('0x2f')]['find']({'where':{'id':_0x5185af[_0x5599('0x47')]['id']}})[_0x5599('0x25')](handleEntityNotFound(_0xabc154,null))[_0x5599('0x25')](saveUpdates(_0x5185af[_0x5599('0x4e')],null))[_0x5599('0x25')](respondWithResult(_0xabc154,null))[_0x5599('0x4c')](handleError(_0xabc154,null));};exports[_0x5599('0x26')]=function(_0x231f55,_0x3cca33){return db[_0x5599('0x2f')][_0x5599('0x4b')]({'where':{'id':_0x231f55[_0x5599('0x47')]['id']}})[_0x5599('0x25')](handleEntityNotFound(_0x3cca33,null))[_0x5599('0x25')](removeEntity(_0x3cca33,null))[_0x5599('0x4c')](handleError(_0x3cca33,null));};
\ No newline at end of file
+var _0xade8=['json','undefined','count','offset','limit','status','set','Content-Range','update','destroy','then','sendStatus','error','stack','name','send','index','map','SmsApplication','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end'];(function(_0x1a3ca2,_0xe144e7){var _0x30ea08=function(_0x37a9f6){while(--_0x37a9f6){_0x1a3ca2['push'](_0x1a3ca2['shift']());}};_0x30ea08(++_0xe144e7);}(_0xade8,0x162));var _0x8ade=function(_0x250d82,_0x88304a){_0x250d82=_0x250d82-0x0;var _0x47c8a2=_0xade8[_0x250d82];return _0x47c8a2;};'use strict';var emlformat=require(_0x8ade('0x0'));var rimraf=require(_0x8ade('0x1'));var zipdir=require(_0x8ade('0x2'));var jsonpatch=require(_0x8ade('0x3'));var rp=require('request-promise');var moment=require(_0x8ade('0x4'));var BPromise=require(_0x8ade('0x5'));var Mustache=require(_0x8ade('0x6'));var util=require(_0x8ade('0x7'));var path=require(_0x8ade('0x8'));var sox=require(_0x8ade('0x9'));var csv=require(_0x8ade('0xa'));var ejs=require(_0x8ade('0xb'));var fs=require('fs');var fs_extra=require(_0x8ade('0xc'));var _=require(_0x8ade('0xd'));var squel=require(_0x8ade('0xe'));var crypto=require(_0x8ade('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8ade('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8ade('0x10'));var qs=require(_0x8ade('0x11'));var as=require(_0x8ade('0x12'));var hardwareService=require(_0x8ade('0x13'));var logger=require(_0x8ade('0x14'))(_0x8ade('0x15'));var utils=require(_0x8ade('0x16'));var config=require(_0x8ade('0x17'));var licenseUtil=require(_0x8ade('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a6b60,_0x39af25){_0x39af25=_0x39af25||0xcc;return function(_0x4889c5){if(_0x4889c5){return _0x5a6b60['sendStatus'](_0x39af25);}return _0x5a6b60['status'](_0x39af25)[_0x8ade('0x19')]();};}function respondWithResult(_0xa51b96,_0xc037fd){_0xc037fd=_0xc037fd||0xc8;return function(_0x39963b){if(_0x39963b){return _0xa51b96['status'](_0xc037fd)[_0x8ade('0x1a')](_0x39963b);}};}function respondWithFilteredResult(_0x4d53c8,_0x36ec57){return function(_0x443b79){if(_0x443b79){var _0x164bbf=typeof _0x36ec57['offset']===_0x8ade('0x1b')&&typeof _0x36ec57['limit']==='undefined';var _0x256a4b=_0x443b79[_0x8ade('0x1c')];var _0x1855d1=_0x164bbf?0x0:_0x36ec57[_0x8ade('0x1d')];var _0xc81cad=_0x164bbf?_0x443b79[_0x8ade('0x1c')]:_0x36ec57[_0x8ade('0x1d')]+_0x36ec57[_0x8ade('0x1e')];var _0x36c778;if(_0xc81cad>=_0x256a4b){_0xc81cad=_0x256a4b;_0x36c778=0xc8;}else{_0x36c778=0xce;}_0x4d53c8[_0x8ade('0x1f')](_0x36c778);return _0x4d53c8[_0x8ade('0x20')](_0x8ade('0x21'),_0x1855d1+'-'+_0xc81cad+'/'+_0x256a4b)[_0x8ade('0x1a')](_0x443b79);}return null;};}function patchUpdates(_0x3a2d25){return function(_0x545b8b){try{jsonpatch['apply'](_0x545b8b,_0x3a2d25,!![]);}catch(_0x4522b2){return BPromise['reject'](_0x4522b2);}return _0x545b8b['save']();};}function saveUpdates(_0x5000ec,_0x4f9830){return function(_0x52d266){if(_0x52d266){return _0x52d266[_0x8ade('0x22')](_0x5000ec)['then'](function(_0x465a99){return _0x465a99;});}return null;};}function removeEntity(_0x3c5863,_0x3a37a6){return function(_0x17e604){if(_0x17e604){return _0x17e604[_0x8ade('0x23')]()[_0x8ade('0x24')](function(){_0x3c5863[_0x8ade('0x1f')](0xcc)[_0x8ade('0x19')]();});}};}function handleEntityNotFound(_0x4a0524,_0x21e647){return function(_0x4b5433){if(!_0x4b5433){_0x4a0524[_0x8ade('0x25')](0x194);}return _0x4b5433;};}function handleError(_0x2df940,_0x21c940){_0x21c940=_0x21c940||0x1f4;return function(_0x2a940e){logger[_0x8ade('0x26')](_0x2a940e[_0x8ade('0x27')]);if(_0x2a940e[_0x8ade('0x28')]){delete _0x2a940e[_0x8ade('0x28')];}_0x2df940[_0x8ade('0x1f')](_0x21c940)[_0x8ade('0x29')](_0x2a940e);};}exports[_0x8ade('0x2a')]=function(_0x53f5fb,_0x982da9){var _0xb77c3e={},_0x31bd4f={},_0x3e3bbf={'count':0x0,'rows':[]};var _0x3b8b62=_[_0x8ade('0x2b')](db[_0x8ade('0x2c')]['rawAttributes'],function(_0x50e6fe){return{'name':_0x50e6fe[_0x8ade('0x2d')],'type':_0x50e6fe[_0x8ade('0x2e')]['key']};});_0x31bd4f[_0x8ade('0x2f')]=_['map'](_0x3b8b62,_0x8ade('0x28'));_0x31bd4f[_0x8ade('0x30')]=_[_0x8ade('0x31')](_0x53f5fb[_0x8ade('0x30')]);_0x31bd4f[_0x8ade('0x32')]=_[_0x8ade('0x33')](_0x31bd4f[_0x8ade('0x2f')],_0x31bd4f[_0x8ade('0x30')]);_0xb77c3e[_0x8ade('0x34')]=_['intersection'](_0x31bd4f[_0x8ade('0x2f')],qs[_0x8ade('0x35')](_0x53f5fb[_0x8ade('0x30')]['fields']));_0xb77c3e['attributes']=_0xb77c3e[_0x8ade('0x34')][_0x8ade('0x36')]?_0xb77c3e[_0x8ade('0x34')]:_0x31bd4f[_0x8ade('0x2f')];if(!_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x37')](_0x8ade('0x38'))){_0xb77c3e['limit']=qs[_0x8ade('0x1e')](_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x1e')]);_0xb77c3e[_0x8ade('0x1d')]=qs['offset'](_0x53f5fb['query'][_0x8ade('0x1d')]);}_0xb77c3e[_0x8ade('0x39')]=qs[_0x8ade('0x3a')](_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x3a')]);_0xb77c3e[_0x8ade('0x3b')]=qs[_0x8ade('0x32')](_[_0x8ade('0x3c')](_0x53f5fb[_0x8ade('0x30')],_0x31bd4f[_0x8ade('0x32')]),_0x3b8b62);if(_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x3d')]){_0xb77c3e[_0x8ade('0x3b')]=_[_0x8ade('0x3e')](_0xb77c3e[_0x8ade('0x3b')],{'$or':_[_0x8ade('0x2b')](_0x3b8b62,function(_0x460c14){if(_0x460c14[_0x8ade('0x2e')]!==_0x8ade('0x3f')){var _0x561011={};_0x561011[_0x460c14[_0x8ade('0x28')]]={'$like':'%'+_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x3d')]+'%'};return _0x561011;}})});}_0xb77c3e=_[_0x8ade('0x3e')]({},_0xb77c3e,_0x53f5fb[_0x8ade('0x40')]);var _0x1a5f7c={'where':_0xb77c3e[_0x8ade('0x3b')]};return db[_0x8ade('0x2c')][_0x8ade('0x1c')](_0x1a5f7c)[_0x8ade('0x24')](function(_0x41b1c2){_0x3e3bbf[_0x8ade('0x1c')]=_0x41b1c2;if(_0x53f5fb[_0x8ade('0x30')][_0x8ade('0x41')]){_0xb77c3e[_0x8ade('0x42')]=[{'all':!![]}];}return db[_0x8ade('0x2c')][_0x8ade('0x43')](_0xb77c3e);})[_0x8ade('0x24')](function(_0x17f732){_0x3e3bbf[_0x8ade('0x44')]=_0x17f732;return _0x3e3bbf;})['then'](respondWithFilteredResult(_0x982da9,_0xb77c3e))['catch'](handleError(_0x982da9,null));};exports[_0x8ade('0x45')]=function(_0x1074c3,_0x48c5ce){var _0x4eee73={'raw':!![],'where':{'id':_0x1074c3[_0x8ade('0x46')]['id']}},_0x2cc900={};_0x2cc900[_0x8ade('0x2f')]=_[_0x8ade('0x31')](db[_0x8ade('0x2c')][_0x8ade('0x47')]);_0x2cc900[_0x8ade('0x30')]=_[_0x8ade('0x31')](_0x1074c3[_0x8ade('0x30')]);_0x2cc900[_0x8ade('0x32')]=_[_0x8ade('0x33')](_0x2cc900['model'],_0x2cc900[_0x8ade('0x30')]);_0x4eee73['attributes']=_[_0x8ade('0x33')](_0x2cc900[_0x8ade('0x2f')],qs[_0x8ade('0x35')](_0x1074c3[_0x8ade('0x30')][_0x8ade('0x35')]));_0x4eee73[_0x8ade('0x34')]=_0x4eee73[_0x8ade('0x34')][_0x8ade('0x36')]?_0x4eee73[_0x8ade('0x34')]:_0x2cc900[_0x8ade('0x2f')];if(_0x1074c3[_0x8ade('0x30')][_0x8ade('0x41')]){_0x4eee73[_0x8ade('0x42')]=[{'all':!![]}];}_0x4eee73=_[_0x8ade('0x3e')]({},_0x4eee73,_0x1074c3['options']);return db['SmsApplication'][_0x8ade('0x48')](_0x4eee73)[_0x8ade('0x24')](handleEntityNotFound(_0x48c5ce,null))['then'](respondWithResult(_0x48c5ce,null))[_0x8ade('0x49')](handleError(_0x48c5ce,null));};exports[_0x8ade('0x4a')]=function(_0x2e253a,_0x14b303){return db[_0x8ade('0x2c')]['create'](_0x2e253a[_0x8ade('0x4b')],{})[_0x8ade('0x24')](respondWithResult(_0x14b303,0xc9))[_0x8ade('0x49')](handleError(_0x14b303,null));};exports[_0x8ade('0x22')]=function(_0x44ed93,_0x4afb8d){if(_0x44ed93[_0x8ade('0x4b')]['id']){delete _0x44ed93[_0x8ade('0x4b')]['id'];}return db[_0x8ade('0x2c')][_0x8ade('0x48')]({'where':{'id':_0x44ed93[_0x8ade('0x46')]['id']}})[_0x8ade('0x24')](handleEntityNotFound(_0x4afb8d,null))[_0x8ade('0x24')](saveUpdates(_0x44ed93['body'],null))['then'](respondWithResult(_0x4afb8d,null))[_0x8ade('0x49')](handleError(_0x4afb8d,null));};exports[_0x8ade('0x23')]=function(_0x58e3ff,_0x15d106){return db['SmsApplication']['find']({'where':{'id':_0x58e3ff['params']['id']}})[_0x8ade('0x24')](handleEntityNotFound(_0x15d106,null))[_0x8ade('0x24')](removeEntity(_0x15d106,null))['catch'](handleError(_0x15d106,null));};
\ No newline at end of file
index f796fde..b4adb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x636e=['request-promise','path','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','bluebird'];(function(_0x4c0ac9,_0x540ed1){var _0x507a30=function(_0x11422a){while(--_0x11422a){_0x4c0ac9['push'](_0x4c0ac9['shift']());}};_0x507a30(++_0x540ed1);}(_0x636e,0x11b));var _0xe636=function(_0x28bc2e,_0x4930d1){_0x28bc2e=_0x28bc2e-0x0;var _0x53dc3a=_0x636e[_0x28bc2e];return _0x53dc3a;};'use strict';var _=require(_0xe636('0x0'));var util=require('util');var logger=require(_0xe636('0x1'))('api');var moment=require('moment');var BPromise=require(_0xe636('0x2'));var rp=require(_0xe636('0x3'));var fs=require('fs');var path=require(_0xe636('0x4'));var rimraf=require('rimraf');var config=require(_0xe636('0x5'));var attributes=require(_0xe636('0x6'));module[_0xe636('0x7')]=function(_0x4b8e42,_0x429212){return _0x4b8e42['define'](_0xe636('0x8'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe636('0x9'),'collate':_0xe636('0xa')});};
\ No newline at end of file
+var _0x5961=['utf8mb4_unicode_ci','lodash','api','moment','request-promise','path','rimraf','define','SmsApplication','sms_applications','utf8mb4'];(function(_0x23c6f2,_0x4e033c){var _0x4c270b=function(_0x4913f0){while(--_0x4913f0){_0x23c6f2['push'](_0x23c6f2['shift']());}};_0x4c270b(++_0x4e033c);}(_0x5961,0x6f));var _0x1596=function(_0x191154,_0x56f74c){_0x191154=_0x191154-0x0;var _0x3dcd73=_0x5961[_0x191154];return _0x3dcd73;};'use strict';var _=require(_0x1596('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1596('0x1'));var moment=require(_0x1596('0x2'));var BPromise=require('bluebird');var rp=require(_0x1596('0x3'));var fs=require('fs');var path=require(_0x1596('0x4'));var rimraf=require(_0x1596('0x5'));var config=require('../../config/environment');var attributes=require('./smsApplication.attributes');module['exports']=function(_0x2a1d11,_0x2e7fa6){return _0x2a1d11[_0x1596('0x6')](_0x1596('0x7'),attributes,{'tableName':_0x1596('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1596('0x9'),'collate':_0x1596('0xa')});};
\ No newline at end of file
index c922702..770b1dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab9=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x166a40,_0x2da973){var _0x5d9dc2=function(_0x37a5e2){while(--_0x37a5e2){_0x166a40['push'](_0x166a40['shift']());}};_0x5d9dc2(++_0x2da973);}(_0x9ab9,0x19d));var _0x99ab=function(_0x3df223,_0x11a0c8){_0x3df223=_0x3df223-0x0;var _0x5f6e42=_0x9ab9[_0x3df223];return _0x5f6e42;};'use strict';var _=require(_0x99ab('0x0'));var util=require(_0x99ab('0x1'));var moment=require(_0x99ab('0x2'));var BPromise=require(_0x99ab('0x3'));var rs=require(_0x99ab('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99ab('0x5'))['db'];var utils=require(_0x99ab('0x6'));var logger=require('../../config/logger')(_0x99ab('0x7'));var config=require('../../config/environment');var jayson=require(_0x99ab('0x8'));var client=jayson[_0x99ab('0x9')][_0x99ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x249c1f,_0x1d2cb7,_0x513653){return new BPromise(function(_0x5762c1,_0x3f5a2c){return client[_0x99ab('0xb')](_0x249c1f,_0x513653)['then'](function(_0x14d083){logger[_0x99ab('0xc')](_0x99ab('0xd'),_0x1d2cb7,_0x99ab('0xe'));logger[_0x99ab('0xf')](_0x99ab('0x10'),_0x1d2cb7,'request\x20sent',JSON[_0x99ab('0x11')](_0x14d083));if(_0x14d083[_0x99ab('0x12')]){if(_0x14d083[_0x99ab('0x12')]['code']===0x1f4){logger['error'](_0x99ab('0xd'),_0x1d2cb7,_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);return _0x3f5a2c(_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);}logger[_0x99ab('0x12')]('SmsApplication,\x20%s,\x20%s',_0x1d2cb7,_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);return _0x5762c1(_0x14d083['error'][_0x99ab('0x13')]);}else{logger[_0x99ab('0xc')](_0x99ab('0xd'),_0x1d2cb7,'request\x20sent');_0x5762c1(_0x14d083[_0x99ab('0x14')][_0x99ab('0x13')]);}})[_0x99ab('0x15')](function(_0x31b340){logger[_0x99ab('0x12')](_0x99ab('0xd'),_0x1d2cb7,_0x31b340);_0x3f5a2c(_0x31b340);});});}
\ No newline at end of file
+var _0x4a03=['bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsApplication,\x20%s,\x20%s','result','catch','util','moment'];(function(_0x28907a,_0x50ab9e){var _0xef7b93=function(_0xa369ea){while(--_0xa369ea){_0x28907a['push'](_0x28907a['shift']());}};_0xef7b93(++_0x50ab9e);}(_0x4a03,0x16e));var _0x34a0=function(_0x50ad5a,_0x2fa741){_0x50ad5a=_0x50ad5a-0x0;var _0x4b7dfa=_0x4a03[_0x50ad5a];return _0x4b7dfa;};'use strict';var _=require('lodash');var util=require(_0x34a0('0x0'));var moment=require(_0x34a0('0x1'));var BPromise=require(_0x34a0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34a0('0x3'));var db=require(_0x34a0('0x4'))['db'];var utils=require(_0x34a0('0x5'));var logger=require('../../config/logger')(_0x34a0('0x6'));var config=require(_0x34a0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x34a0('0x8')][_0x34a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x491fe8,_0x44d6be,_0x2cf483){return new BPromise(function(_0x592827,_0xb182cc){return client[_0x34a0('0xa')](_0x491fe8,_0x2cf483)[_0x34a0('0xb')](function(_0x176571){logger[_0x34a0('0xc')]('SmsApplication,\x20%s,\x20%s',_0x44d6be,_0x34a0('0xd'));logger[_0x34a0('0xe')](_0x34a0('0xf'),_0x44d6be,_0x34a0('0xd'),JSON[_0x34a0('0x10')](_0x176571));if(_0x176571[_0x34a0('0x11')]){if(_0x176571[_0x34a0('0x11')][_0x34a0('0x12')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x44d6be,_0x176571[_0x34a0('0x11')][_0x34a0('0x13')]);return _0xb182cc(_0x176571['error'][_0x34a0('0x13')]);}logger[_0x34a0('0x11')](_0x34a0('0x14'),_0x44d6be,_0x176571[_0x34a0('0x11')][_0x34a0('0x13')]);return _0x592827(_0x176571[_0x34a0('0x11')][_0x34a0('0x13')]);}else{logger[_0x34a0('0xc')](_0x34a0('0x14'),_0x44d6be,_0x34a0('0xd'));_0x592827(_0x176571[_0x34a0('0x15')][_0x34a0('0x13')]);}})[_0x34a0('0x16')](function(_0x4134f0){logger[_0x34a0('0x11')](_0x34a0('0x14'),_0x44d6be,_0x4134f0);_0xb182cc(_0x4134f0);});});}
\ No newline at end of file
index 4c4d38f..46b4149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['/:id/tags','removeTags','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','getMessages','/:id/download','download','post','create','/:id/messages','addMessage','tracked','sms','smsinteraction:addtags','addTags','put','/:id','smsinteraction:update','delete','destroy'];(function(_0x58fc2f,_0x111399){var _0x3a1312=function(_0x3d2ff2){while(--_0x3d2ff2){_0x58fc2f['push'](_0x58fc2f['shift']());}};_0x3a1312(++_0x111399);}(_0x34b7,0x196));var _0x734b=function(_0x11d541,_0xc8fe9){_0x11d541=_0x11d541-0x0;var _0x3e612a=_0x34b7[_0x11d541];return _0x3e612a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x734b('0x0'));var timeout=require(_0x734b('0x1'));var express=require(_0x734b('0x2'));var router=express[_0x734b('0x3')]();var fs_extra=require(_0x734b('0x4'));var auth=require(_0x734b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x734b('0x6'));router[_0x734b('0x7')]('/',auth[_0x734b('0x8')](),controller[_0x734b('0x9')]);router[_0x734b('0x7')](_0x734b('0xa'),auth['isAuthenticated'](),controller[_0x734b('0xb')]);router[_0x734b('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x734b('0x7')]('/:id/messages',auth[_0x734b('0x8')](),controller[_0x734b('0xc')]);router[_0x734b('0x7')](_0x734b('0xd'),auth[_0x734b('0x8')](),controller[_0x734b('0xe')]);router[_0x734b('0xf')]('/',auth[_0x734b('0x8')](),controller[_0x734b('0x10')]);router[_0x734b('0xf')](_0x734b('0x11'),auth[_0x734b('0x8')](),controller[_0x734b('0x12')]);router[_0x734b('0xf')]('/:id/tags',auth[_0x734b('0x8')](),interaction[_0x734b('0x13')](_0x734b('0x14'),_0x734b('0x15')),controller[_0x734b('0x16')]);router[_0x734b('0x17')](_0x734b('0x18'),auth[_0x734b('0x8')](),interaction[_0x734b('0x13')](_0x734b('0x14'),_0x734b('0x19')),controller['update']);router[_0x734b('0x1a')](_0x734b('0x18'),auth[_0x734b('0x8')](),interaction[_0x734b('0x13')]('sms','smsinteraction:destroy'),controller[_0x734b('0x1b')]);router[_0x734b('0x1a')](_0x734b('0x1c'),auth[_0x734b('0x8')](),controller[_0x734b('0x1d')]);module[_0x734b('0x1e')]=router;
\ No newline at end of file
+var _0xb688=['destroy','/:id/tags','removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','sms'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb688,0xcf));var _0x8b68=function(_0x148b94,_0xe42ebc){_0x148b94=_0x148b94-0x0;var _0x466e88=_0xb688[_0x148b94];return _0x466e88;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x14')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x14')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x16')]);router[_0x8b68('0x14')]('/:id/tags',auth[_0x8b68('0xc')](),interaction['tracked']('sms',_0x8b68('0x17')),controller[_0x8b68('0x18')]);router[_0x8b68('0x19')]('/:id',auth['isAuthenticated'](),interaction[_0x8b68('0x1a')]('sms',_0x8b68('0x1b')),controller[_0x8b68('0x1c')]);router[_0x8b68('0x1d')](_0x8b68('0xe'),auth['isAuthenticated'](),interaction[_0x8b68('0x1a')](_0x8b68('0x1e'),'smsinteraction:destroy'),controller[_0x8b68('0x1f')]);router[_0x8b68('0x1d')](_0x8b68('0x20'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x21')]);module['exports']=router;
\ No newline at end of file
index 72538b7..79f73d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb57=['sequelize','moment','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x5426a7,_0x1b0b27){var _0x216b6c=function(_0x370f07){while(--_0x370f07){_0x5426a7['push'](_0x5426a7['shift']());}};_0x216b6c(++_0x1b0b27);}(_0xcb57,0xa1));var _0x7cb5=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xcb57[_0x4c12ec];return _0x3ae42c;};'use strict';var Sequelize=require(_0x7cb5('0x0'));var moment=require(_0x7cb5('0x1'));module['exports']={'closed':{'type':Sequelize[_0x7cb5('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x7cb5('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x7cb5('0x3')]},'note':{'type':Sequelize[_0x7cb5('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x7cb5('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x7cb5('0x5')]('in',_0x7cb5('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x7cb5('0x5')]('in',_0x7cb5('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7cb5('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbcc7=['STRING','ENUM','out','DATE','sequelize','moment','BOOLEAN'];(function(_0x46257b,_0x4cc0aa){var _0x2fccee=function(_0x1b40ca){while(--_0x1b40ca){_0x46257b['push'](_0x46257b['shift']());}};_0x2fccee(++_0x4cc0aa);}(_0xbcc7,0x19a));var _0x7bcc=function(_0x3daaaf,_0x4f3290){_0x3daaaf=_0x3daaaf-0x0;var _0x37addc=_0xbcc7[_0x3daaaf];return _0x37addc;};'use strict';var Sequelize=require(_0x7bcc('0x0'));var moment=require(_0x7bcc('0x1'));module['exports']={'closed':{'type':Sequelize[_0x7bcc('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x7bcc('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x7bcc('0x3')]},'phone':{'type':Sequelize[_0x7bcc('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7bcc('0x4')]('in',_0x7bcc('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7bcc('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x7bcc('0x4')]('in',_0x7bcc('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7bcc('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 98895c9..a46f05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1cc=['format','transcript-%d-%s.zip','push','User','CmContact','firstName','lastName','Messages','createdAt','direction','read','SmsAccount','mkdirSync','Account','Owner','N.A.','fullname','System','Contact','out','secret','value','renderFile','views','downloadInteraction.ejs','.pdf','Sms','createPdfFromHTML','download','log','err','rimraf','zip-dir','moment','bluebird','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','defaults','localhost','register','sendStatus','status','end','offset','undefined','limit','Content-Range','json','update','then','destroy','name','send','index','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms','query','user','catch','show','params','model','keys','filters','attributes','intersection','fields','includeAll','include','merge','options','create','body','find','describe','addMessage','SmsMessage','ids','omit','getMessages','length','hasOwnProperty','nolimit','order','sort','where','SmsInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','count','rows','addTags','spread','Tag','emit','smsInteractionTags:save','removeTags','toString','join','root','server','tmp'];(function(_0x558b68,_0x240b9c){var _0x3d466b=function(_0x12adf1){while(--_0x12adf1){_0x558b68['push'](_0x558b68['shift']());}};_0x3d466b(++_0x240b9c);}(_0xa1cc,0x93));var _0xca1c=function(_0x2e94a4,_0x357d86){_0x2e94a4=_0x2e94a4-0x0;var _0x147dc1=_0xa1cc[_0x2e94a4];return _0x147dc1;};'use strict';var rimraf=require(_0xca1c('0x0'));var zipdir=require(_0xca1c('0x1'));var moment=require(_0xca1c('0x2'));var BPromise=require(_0xca1c('0x3'));var util=require('util');var path=require('path');var ejs=require(_0xca1c('0x4'));var fs=require('fs');var _=require(_0xca1c('0x5'));var Redis=require(_0xca1c('0x6'));var interaction=require(_0xca1c('0x7'));var qs=require(_0xca1c('0x8'));var pdf=require(_0xca1c('0x9'));var logger=require(_0xca1c('0xa'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_[_0xca1c('0xb')](config['redis'],{'host':_0xca1c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsInteraction.socket')[_0xca1c('0xd')](socket);function respondWithStatusCode(_0x3a0fcb,_0x338b56){_0x338b56=_0x338b56||0xcc;return function(_0x521250){if(_0x521250){return _0x3a0fcb[_0xca1c('0xe')](_0x338b56);}return _0x3a0fcb[_0xca1c('0xf')](_0x338b56)[_0xca1c('0x10')]();};}function respondWithResult(_0x301986,_0x216573){_0x216573=_0x216573||0xc8;return function(_0x4f9698){if(_0x4f9698){return _0x301986[_0xca1c('0xf')](_0x216573)['json'](_0x4f9698);}};}function respondWithFilteredResult(_0x3d711f,_0x35745e){return function(_0x1c3fc8){if(_0x1c3fc8){var _0x463d3d=typeof _0x35745e[_0xca1c('0x11')]===_0xca1c('0x12')&&typeof _0x35745e[_0xca1c('0x13')]==='undefined';var _0x16e9b2=_0x1c3fc8['count'];var _0x140c53=_0x463d3d?0x0:_0x35745e[_0xca1c('0x11')];var _0x2d457e=_0x463d3d?_0x1c3fc8['count']:_0x35745e[_0xca1c('0x11')]+_0x35745e['limit'];var _0x353978;if(_0x2d457e>=_0x16e9b2){_0x2d457e=_0x16e9b2;_0x353978=0xc8;}else{_0x353978=0xce;}_0x3d711f[_0xca1c('0xf')](_0x353978);return _0x3d711f['set'](_0xca1c('0x14'),_0x140c53+'-'+_0x2d457e+'/'+_0x16e9b2)[_0xca1c('0x15')](_0x1c3fc8);}return null;};}function saveUpdates(_0x44e085){return function(_0x54a81f){if(_0x54a81f){return _0x54a81f[_0xca1c('0x16')](_0x44e085)[_0xca1c('0x17')](function(_0x22fa24){return _0x22fa24;});}return null;};}function removeEntity(_0x573a2b){return function(_0x380170){if(_0x380170){return _0x380170[_0xca1c('0x18')]()[_0xca1c('0x17')](function(){_0x573a2b[_0xca1c('0xf')](0xcc)[_0xca1c('0x10')]();});}};}function handleEntityNotFound(_0x51105e){return function(_0x3bd99e){if(!_0x3bd99e){_0x51105e['sendStatus'](0x194);}return _0x3bd99e;};}function handleError(_0x5c60a3,_0x10ac62){_0x10ac62=_0x10ac62||0x1f4;return function(_0x15ea31){logger['error'](_0x15ea31['stack']);if(_0x15ea31[_0xca1c('0x19')]){delete _0x15ea31['name'];}_0x5c60a3[_0xca1c('0xf')](_0x10ac62)[_0xca1c('0x1a')](_0x15ea31);};}exports[_0xca1c('0x1b')]=function(_0xcc34ca,_0x43fcbb){var _0x1dc62d={};var _0x179e21=_[_0xca1c('0x1c')](db[_0xca1c('0x1d')][_0xca1c('0x1e')],function(_0x5a7c4e){return{'name':_0x5a7c4e[_0xca1c('0x1f')],'type':_0x5a7c4e[_0xca1c('0x20')][_0xca1c('0x21')]};});_0x1dc62d=qs[_0xca1c('0x22')](_0x179e21,_0xcc34ca);return interaction[_0xca1c('0x23')](_0xca1c('0x24'),_0xcc34ca[_0xca1c('0x25')],_0xcc34ca[_0xca1c('0x26')],_0x1dc62d,_0x179e21)[_0xca1c('0x17')](respondWithFilteredResult(_0x43fcbb,_0x1dc62d))[_0xca1c('0x27')](handleError(_0x43fcbb,null));};exports[_0xca1c('0x28')]=function(_0x2a1a50,_0x8c84eb){var _0x2570cb={'raw':![],'where':{'id':_0x2a1a50[_0xca1c('0x29')]['id']}},_0x4bb922={};_0x4bb922[_0xca1c('0x2a')]=_[_0xca1c('0x2b')](db[_0xca1c('0x1d')]['rawAttributes']);_0x4bb922[_0xca1c('0x25')]=_[_0xca1c('0x2b')](_0x2a1a50['query']);_0x4bb922[_0xca1c('0x2c')]=_['intersection'](_0x4bb922[_0xca1c('0x2a')],_0x4bb922[_0xca1c('0x25')]);_0x2570cb[_0xca1c('0x2d')]=_[_0xca1c('0x2e')](_0x4bb922[_0xca1c('0x2a')],qs[_0xca1c('0x2f')](_0x2a1a50[_0xca1c('0x25')][_0xca1c('0x2f')]));_0x2570cb[_0xca1c('0x2d')]=_0x2570cb[_0xca1c('0x2d')]['length']?_0x2570cb[_0xca1c('0x2d')]:_0x4bb922['model'];if(_0x2a1a50['query'][_0xca1c('0x30')]){_0x2570cb[_0xca1c('0x31')]=[{'all':!![]}];}_0x2570cb=_[_0xca1c('0x32')]({},_0x2570cb,_0x2a1a50[_0xca1c('0x33')]);return db['SmsInteraction']['find'](_0x2570cb)[_0xca1c('0x17')](handleEntityNotFound(_0x8c84eb,null))['then'](respondWithResult(_0x8c84eb,null))[_0xca1c('0x27')](handleError(_0x8c84eb,null));};exports[_0xca1c('0x34')]=function(_0x1889d1,_0x2ac034){return db[_0xca1c('0x1d')][_0xca1c('0x34')](_0x1889d1[_0xca1c('0x35')],{})[_0xca1c('0x17')](respondWithResult(_0x2ac034,0xc9))[_0xca1c('0x27')](handleError(_0x2ac034,null));};exports['update']=function(_0x107197,_0x57ac07){if(_0x107197[_0xca1c('0x35')]['id']){delete _0x107197[_0xca1c('0x35')]['id'];}return db[_0xca1c('0x1d')][_0xca1c('0x36')]({'where':{'id':_0x107197[_0xca1c('0x29')]['id']}})[_0xca1c('0x17')](handleEntityNotFound(_0x57ac07,null))[_0xca1c('0x17')](saveUpdates(_0x107197['body'],null))['then'](respondWithResult(_0x57ac07,null))['catch'](handleError(_0x57ac07,null));};exports[_0xca1c('0x18')]=function(_0x4c9b0e,_0x8184f2){return db[_0xca1c('0x1d')][_0xca1c('0x36')]({'where':{'id':_0x4c9b0e['params']['id']}})[_0xca1c('0x17')](handleEntityNotFound(_0x8184f2,null))['then'](removeEntity(_0x8184f2,null))[_0xca1c('0x27')](handleError(_0x8184f2,null));};exports['describe']=function(_0x3d0c41,_0x1a7e61){return db[_0xca1c('0x1d')][_0xca1c('0x37')]()[_0xca1c('0x17')](respondWithResult(_0x1a7e61,null))[_0xca1c('0x27')](handleError(_0x1a7e61,null));};exports[_0xca1c('0x38')]=function(_0x566795,_0x5cf269){return db[_0xca1c('0x39')][_0xca1c('0x36')]({'where':{'id':_0x566795['params']['id']}})['then'](handleEntityNotFound(_0x5cf269,null))[_0xca1c('0x17')](function(_0x29c80b){if(_0x29c80b){return _0x29c80b[_0xca1c('0x38')](_0x566795[_0xca1c('0x35')][_0xca1c('0x3a')],_[_0xca1c('0x3b')](_0x566795[_0xca1c('0x35')],[_0xca1c('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x5cf269,null))['catch'](handleError(_0x5cf269,null));};exports[_0xca1c('0x3c')]=function(_0x5cf68a,_0x582d1e){var _0x97ae6e={'raw':![],'where':{}};var _0x10c020={};var _0x15446d={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x5cf68a[_0xca1c('0x29')]['id']}})[_0xca1c('0x17')](handleEntityNotFound(_0x582d1e,null))['then'](function(_0x534899){if(_0x534899){_0x10c020[_0xca1c('0x2a')]=_[_0xca1c('0x2b')](db['SmsMessage'][_0xca1c('0x1e')]);_0x10c020[_0xca1c('0x25')]=_['keys'](_0x5cf68a['query']);_0x10c020[_0xca1c('0x2c')]=_['intersection'](_0x10c020['model'],_0x10c020[_0xca1c('0x25')]);_0x97ae6e[_0xca1c('0x2d')]=_['intersection'](_0x10c020['model'],qs['fields'](_0x5cf68a[_0xca1c('0x25')][_0xca1c('0x2f')]));_0x97ae6e[_0xca1c('0x2d')]=_0x97ae6e[_0xca1c('0x2d')][_0xca1c('0x3d')]?_0x97ae6e['attributes']:_0x10c020[_0xca1c('0x2a')];if(!_0x5cf68a[_0xca1c('0x25')][_0xca1c('0x3e')](_0xca1c('0x3f'))){_0x97ae6e[_0xca1c('0x13')]=qs[_0xca1c('0x13')](_0x5cf68a[_0xca1c('0x25')][_0xca1c('0x13')]);_0x97ae6e['offset']=qs[_0xca1c('0x11')](_0x5cf68a[_0xca1c('0x25')]['offset']);}_0x97ae6e[_0xca1c('0x40')]=qs[_0xca1c('0x41')](_0x5cf68a[_0xca1c('0x25')]['sort']);_0x97ae6e[_0xca1c('0x42')]=qs[_0xca1c('0x2c')](_['pick'](_0x5cf68a[_0xca1c('0x25')],_0x10c020[_0xca1c('0x2c')]));_0x97ae6e['where'][_0xca1c('0x43')]=_0x534899['id'];if(_0x5cf68a[_0xca1c('0x25')][_0xca1c('0x44')]){_0x97ae6e[_0xca1c('0x42')]=_[_0xca1c('0x32')](_0x97ae6e[_0xca1c('0x42')],{'$or':_[_0xca1c('0x1c')](_0x97ae6e[_0xca1c('0x2d')],function(_0x521e0f){var _0x3330ba={};_0x3330ba[_0x521e0f]={'$like':'%'+_0x5cf68a['query'][_0xca1c('0x44')]+'%'};return _0x3330ba;})});}if(_0x5cf68a['query'][_0xca1c('0x45')]){var _0x3e5b6d=_0x5cf68a[_0xca1c('0x25')][_0xca1c('0x45')][_0xca1c('0x46')](',');var _0x5c7308={};_0x5c7308[_0x3e5b6d[0x0]]={'$gte':moment(_0x3e5b6d[0x1])['format'](_0xca1c('0x47'))};_0x97ae6e['where']=_[_0xca1c('0x32')](_0x97ae6e[_0xca1c('0x42')],_0x5c7308);}_0x97ae6e=_['merge']({},_0x97ae6e,_0x5cf68a[_0xca1c('0x33')]);return db[_0xca1c('0x39')][_0xca1c('0x48')]({'where':_0x97ae6e[_0xca1c('0x42')]})[_0xca1c('0x17')](function(_0x2f3e5d){_0x15446d[_0xca1c('0x48')]=_0x2f3e5d;if(_0x5cf68a['query'][_0xca1c('0x30')]){_0x97ae6e['include']=[{'all':!![]}];}return db[_0xca1c('0x39')][_0xca1c('0x23')](_0x97ae6e);})[_0xca1c('0x17')](function(_0x1da34b){_0x15446d[_0xca1c('0x49')]=_0x1da34b;return _0x15446d;});}})['then'](respondWithFilteredResult(_0x582d1e,_0x97ae6e))[_0xca1c('0x27')](handleError(_0x582d1e,null));};exports[_0xca1c('0x4a')]=function(_0xd38ae4,_0x56aae0){return db[_0xca1c('0x1d')][_0xca1c('0x36')]({'where':{'id':_0xd38ae4[_0xca1c('0x29')]['id']}})['then'](handleEntityNotFound(_0x56aae0,null))[_0xca1c('0x17')](function(_0x12ac03){if(_0x12ac03){return _0x12ac03['setTags'](_0xd38ae4[_0xca1c('0x35')][_0xca1c('0x3a')],_[_0xca1c('0x3b')](_0xd38ae4['body'],[_0xca1c('0x3a'),'id'])||{})[_0xca1c('0x4b')](function(){return db[_0xca1c('0x4c')]['findAll']({'attributes':['id',_0xca1c('0x19'),'color'],'where':{'id':_0xd38ae4[_0xca1c('0x35')][_0xca1c('0x3a')]}});})[_0xca1c('0x17')](function(_0x281867){socket[_0xca1c('0x4d')](_0xca1c('0x4e'),{'id':Number(_0xd38ae4['params']['id']),'tags':_0x281867||[]});return{'id':Number(_0xd38ae4[_0xca1c('0x29')]['id']),'tags':_0x281867||[]};});}})[_0xca1c('0x17')](respondWithResult(_0x56aae0,null))['catch'](handleError(_0x56aae0,null));};exports[_0xca1c('0x4f')]=function(_0x4c43fc,_0x5d1936){return db[_0xca1c('0x1d')]['find']({'where':{'id':_0x4c43fc['params']['id']}})['then'](handleEntityNotFound(_0x5d1936,null))['then'](function(_0x2f2d63){if(_0x2f2d63){return _0x2f2d63[_0xca1c('0x4f')](_0x4c43fc[_0xca1c('0x25')][_0xca1c('0x3a')]);}})[_0xca1c('0x17')](respondWithStatusCode(_0x5d1936,null))[_0xca1c('0x27')](handleError(_0x5d1936,null));};exports['download']=function(_0x53a753,_0x4235ee){var _0x1dfb49=moment()['unix']()[_0xca1c('0x50')]();var _0x32bb75=path[_0xca1c('0x51')](config[_0xca1c('0x52')],_0xca1c('0x53'),'files',_0xca1c('0x54'));var _0x561ddb=path[_0xca1c('0x51')](_0x32bb75,_0x1dfb49);var _0x54b0f4=util[_0xca1c('0x55')](_0xca1c('0x56'),_0x53a753[_0xca1c('0x29')]['id'],_0x1dfb49);var _0x3c47de=path[_0xca1c('0x51')](_0x32bb75,_0x54b0f4);var _0x58f3f5=[];_0x58f3f5[_0xca1c('0x57')]({'model':db[_0xca1c('0x58')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x58f3f5[_0xca1c('0x57')]({'model':db[_0xca1c('0x59')],'as':'Contact','attributes':['id',_0xca1c('0x5a'),_0xca1c('0x5b')],'raw':!![]});var _0x159dfe=[{'model':db[_0xca1c('0x39')],'as':_0xca1c('0x5c'),'attributes':['id',_0xca1c('0x35'),_0xca1c('0x5d'),_0xca1c('0x5e'),'secret',_0xca1c('0x5f')],'include':_0x58f3f5}];_0x159dfe['push']({'model':db[_0xca1c('0x60')],'as':'Account','attributes':['id',_0xca1c('0x19')]});_0x159dfe[_0xca1c('0x57')]({'model':db[_0xca1c('0x58')],'as':'Owner','attributes':['id','fullname']});return db['SmsInteraction'][_0xca1c('0x36')]({'where':{'id':_0x53a753['params']['id']},'include':_0x159dfe})[_0xca1c('0x17')](handleEntityNotFound(_0x4235ee,null))[_0xca1c('0x17')](function(_0x344ef6){if(_0x344ef6){var _0x501d7a=_0x344ef6['get']({'plain':!![]});fs[_0xca1c('0x61')](_0x561ddb);var _0x45d95a={'channel':'Sms','account':_0x501d7a[_0xca1c('0x62')][_0xca1c('0x19')],'agent':_0x501d7a[_0xca1c('0x63')]?_0x501d7a[_0xca1c('0x63')]['fullname']:_0xca1c('0x64'),'createdAt':moment(_0x501d7a[_0xca1c('0x5d')])[_0xca1c('0x55')](_0xca1c('0x47'))[_0xca1c('0x50')](),'closedAt':_0x501d7a['closed']?moment(_0x501d7a['closedAt'])[_0xca1c('0x55')]('YYYY-MM-DD\x20HH:mm:ss')[_0xca1c('0x50')]():'','disposition':_0x501d7a['disposition'],'messages':_(_0x501d7a[_0xca1c('0x5c')])[_0xca1c('0x44')]({'secret':![]})[_0xca1c('0x1c')](function(_0x2f0e66){return{'date':moment(_0x2f0e66[_0xca1c('0x5d')])[_0xca1c('0x55')]('YYYY-MM-DD\x20HH:mm:ss')[_0xca1c('0x50')](),'sender':_0x2f0e66[_0xca1c('0x5e')]==='out'?_0x2f0e66[_0xca1c('0x58')]?_0x2f0e66[_0xca1c('0x58')][_0xca1c('0x65')]:_0xca1c('0x66'):_0x2f0e66['Contact'][_0xca1c('0x5a')]+(_0x2f0e66[_0xca1c('0x67')][_0xca1c('0x5b')]?'\x20'+_0x2f0e66[_0xca1c('0x67')][_0xca1c('0x5b')]:''),'body':_0x2f0e66[_0xca1c('0x35')],'direction':_0x2f0e66['direction']===_0xca1c('0x68')?'A':'C','secret':_0x2f0e66[_0xca1c('0x69')],'read':_0x2f0e66[_0xca1c('0x5f')]};})[_0xca1c('0x6a')]()};return ejs[_0xca1c('0x6b')](path[_0xca1c('0x51')](config[_0xca1c('0x52')],'server',_0xca1c('0x6c'),_0xca1c('0x6d')),{'interaction':_0x45d95a})['then'](function(_0x223810){var _0x30fe94=path['join'](_0x561ddb,'transcript-'+_0x501d7a['id']+'-'+_0x1dfb49+_0xca1c('0x6e'));var _0x40ca63={'path':_0x30fe94,'channel':_0xca1c('0x6f'),'interactionId':_0x501d7a['id']};return pdf[_0xca1c('0x70')](_0x223810,_0x40ca63);})[_0xca1c('0x17')](function(){return new BPromise(function(_0x3ec378,_0x186e85){zipdir(_0x561ddb,{'saveTo':_0x3c47de},function(_0x138bad,_0x6e7e62){if(_0x138bad)return _0x186e85(_0x138bad);return _0x3ec378(_0x6e7e62);});})[_0xca1c('0x17')](function(){return new BPromise(function(_0x158549,_0x5863b2){rimraf(_0x561ddb,function(_0x2cc574){if(_0x2cc574)_0x5863b2(_0x2cc574);return _0x158549();});});})['then'](function(){return _0x4235ee[_0xca1c('0x71')](_0x3c47de,_0x54b0f4,function(_0x307ff6){if(_0x307ff6){console[_0xca1c('0x72')](_0xca1c('0x73'),_0x307ff6);}else{fs['unlinkSync'](_0x3c47de);}});});});}else{return _0x4235ee['sendStatus'](0xc8);}})['catch'](handleError(_0x4235ee,null));};
\ No newline at end of file
+var _0x139c=['downloadInteraction.ejs','.pdf','createPdfFromHTML','download','rimraf','zip-dir','moment','bluebird','util','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','SmsInteraction','rawAttributes','fieldName','key','findAll','sms','query','user','catch','show','params','model','keys','filters','intersection','fields','attributes','length','includeAll','include','options','find','create','body','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','setTags','spread','Tag','color','removeTags','unix','toString','join','root','server','files','tmp','push','User','fullname','CmContact','Contact','firstName','lastName','Messages','createdAt','direction','read','Account','Owner','mkdirSync','Sms','N.A.','closed','closedAt','disposition','out','System','value','renderFile','views'];(function(_0x2b14e5,_0x4c6abb){var _0x5af7c2=function(_0x5ef3ac){while(--_0x5ef3ac){_0x2b14e5['push'](_0x2b14e5['shift']());}};_0x5af7c2(++_0x4c6abb);}(_0x139c,0xf2));var _0xc139=function(_0x1707db,_0x253f53){_0x1707db=_0x1707db-0x0;var _0x4c65d9=_0x139c[_0x1707db];return _0x4c65d9;};'use strict';var rimraf=require(_0xc139('0x0'));var zipdir=require(_0xc139('0x1'));var moment=require(_0xc139('0x2'));var BPromise=require(_0xc139('0x3'));var util=require(_0xc139('0x4'));var path=require('path');var ejs=require(_0xc139('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xc139('0x6'));var interaction=require(_0xc139('0x7'));var qs=require(_0xc139('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xc139('0x9'))(_0xc139('0xa'));var config=require(_0xc139('0xb'));var db=require('../../mysqldb')['db'];config[_0xc139('0xc')]=_[_0xc139('0xd')](config[_0xc139('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xc139('0xe'))(new Redis(config[_0xc139('0xc')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x197518,_0x3d8585){_0x3d8585=_0x3d8585||0xcc;return function(_0x1d8128){if(_0x1d8128){return _0x197518[_0xc139('0xf')](_0x3d8585);}return _0x197518[_0xc139('0x10')](_0x3d8585)[_0xc139('0x11')]();};}function respondWithResult(_0x2aa38b,_0x55dd53){_0x55dd53=_0x55dd53||0xc8;return function(_0x23c3fa){if(_0x23c3fa){return _0x2aa38b[_0xc139('0x10')](_0x55dd53)[_0xc139('0x12')](_0x23c3fa);}};}function respondWithFilteredResult(_0x46d3c4,_0x550ec9){return function(_0x598dde){if(_0x598dde){var _0x2e7fdf=typeof _0x550ec9[_0xc139('0x13')]===_0xc139('0x14')&&typeof _0x550ec9[_0xc139('0x15')]==='undefined';var _0x4f61f2=_0x598dde[_0xc139('0x16')];var _0x563531=_0x2e7fdf?0x0:_0x550ec9[_0xc139('0x13')];var _0x3f3302=_0x2e7fdf?_0x598dde[_0xc139('0x16')]:_0x550ec9['offset']+_0x550ec9[_0xc139('0x15')];var _0x21de96;if(_0x3f3302>=_0x4f61f2){_0x3f3302=_0x4f61f2;_0x21de96=0xc8;}else{_0x21de96=0xce;}_0x46d3c4['status'](_0x21de96);return _0x46d3c4[_0xc139('0x17')](_0xc139('0x18'),_0x563531+'-'+_0x3f3302+'/'+_0x4f61f2)[_0xc139('0x12')](_0x598dde);}return null;};}function saveUpdates(_0x587ee7){return function(_0x2f82d1){if(_0x2f82d1){return _0x2f82d1[_0xc139('0x19')](_0x587ee7)[_0xc139('0x1a')](function(_0x1d2e4c){return _0x1d2e4c;});}return null;};}function removeEntity(_0x5c0b5e){return function(_0x1530bb){if(_0x1530bb){return _0x1530bb[_0xc139('0x1b')]()[_0xc139('0x1a')](function(){_0x5c0b5e[_0xc139('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ccbab){return function(_0x16f37d){if(!_0x16f37d){_0x1ccbab[_0xc139('0xf')](0x194);}return _0x16f37d;};}function handleError(_0x2b6b8,_0x509b42){_0x509b42=_0x509b42||0x1f4;return function(_0x591dd5){logger[_0xc139('0x1c')](_0x591dd5[_0xc139('0x1d')]);if(_0x591dd5['name']){delete _0x591dd5[_0xc139('0x1e')];}_0x2b6b8[_0xc139('0x10')](_0x509b42)[_0xc139('0x1f')](_0x591dd5);};}exports[_0xc139('0x20')]=function(_0x4d314f,_0x265499){var _0x3c9053={};var _0x1e7157=_[_0xc139('0x21')](db[_0xc139('0x22')][_0xc139('0x23')],function(_0x2d3f27){return{'name':_0x2d3f27[_0xc139('0x24')],'type':_0x2d3f27['type'][_0xc139('0x25')]};});_0x3c9053=qs['getOptions'](_0x1e7157,_0x4d314f);return interaction[_0xc139('0x26')](_0xc139('0x27'),_0x4d314f[_0xc139('0x28')],_0x4d314f[_0xc139('0x29')],_0x3c9053,_0x1e7157)[_0xc139('0x1a')](respondWithFilteredResult(_0x265499,_0x3c9053))[_0xc139('0x2a')](handleError(_0x265499,null));};exports[_0xc139('0x2b')]=function(_0x21fb37,_0x2553f4){var _0x244e63={'raw':![],'where':{'id':_0x21fb37[_0xc139('0x2c')]['id']}},_0x12ac4f={};_0x12ac4f[_0xc139('0x2d')]=_[_0xc139('0x2e')](db[_0xc139('0x22')]['rawAttributes']);_0x12ac4f[_0xc139('0x28')]=_[_0xc139('0x2e')](_0x21fb37[_0xc139('0x28')]);_0x12ac4f[_0xc139('0x2f')]=_[_0xc139('0x30')](_0x12ac4f[_0xc139('0x2d')],_0x12ac4f['query']);_0x244e63['attributes']=_[_0xc139('0x30')](_0x12ac4f[_0xc139('0x2d')],qs['fields'](_0x21fb37['query'][_0xc139('0x31')]));_0x244e63[_0xc139('0x32')]=_0x244e63['attributes'][_0xc139('0x33')]?_0x244e63[_0xc139('0x32')]:_0x12ac4f[_0xc139('0x2d')];if(_0x21fb37['query'][_0xc139('0x34')]){_0x244e63[_0xc139('0x35')]=[{'all':!![]}];}_0x244e63=_['merge']({},_0x244e63,_0x21fb37[_0xc139('0x36')]);return db[_0xc139('0x22')][_0xc139('0x37')](_0x244e63)[_0xc139('0x1a')](handleEntityNotFound(_0x2553f4,null))[_0xc139('0x1a')](respondWithResult(_0x2553f4,null))[_0xc139('0x2a')](handleError(_0x2553f4,null));};exports[_0xc139('0x38')]=function(_0x25e7dd,_0x5b71c5){return db['SmsInteraction']['create'](_0x25e7dd['body'],{})[_0xc139('0x1a')](respondWithResult(_0x5b71c5,0xc9))[_0xc139('0x2a')](handleError(_0x5b71c5,null));};exports[_0xc139('0x19')]=function(_0x5809d0,_0x340800){if(_0x5809d0['body']['id']){delete _0x5809d0[_0xc139('0x39')]['id'];}return db[_0xc139('0x22')][_0xc139('0x37')]({'where':{'id':_0x5809d0[_0xc139('0x2c')]['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x340800,null))['then'](saveUpdates(_0x5809d0[_0xc139('0x39')],null))[_0xc139('0x1a')](respondWithResult(_0x340800,null))[_0xc139('0x2a')](handleError(_0x340800,null));};exports[_0xc139('0x1b')]=function(_0x57eec8,_0x3e037d){return db[_0xc139('0x22')][_0xc139('0x37')]({'where':{'id':_0x57eec8[_0xc139('0x2c')]['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x3e037d,null))[_0xc139('0x1a')](removeEntity(_0x3e037d,null))[_0xc139('0x2a')](handleError(_0x3e037d,null));};exports[_0xc139('0x3a')]=function(_0x4e4912,_0x45f379){return db[_0xc139('0x22')]['describe']()[_0xc139('0x1a')](respondWithResult(_0x45f379,null))[_0xc139('0x2a')](handleError(_0x45f379,null));};exports[_0xc139('0x3b')]=function(_0x122204,_0x36f62d){return db[_0xc139('0x3c')][_0xc139('0x37')]({'where':{'id':_0x122204[_0xc139('0x2c')]['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x36f62d,null))[_0xc139('0x1a')](function(_0xfafdfa){if(_0xfafdfa){return _0xfafdfa[_0xc139('0x3b')](_0x122204[_0xc139('0x39')][_0xc139('0x3d')],_[_0xc139('0x3e')](_0x122204[_0xc139('0x39')],[_0xc139('0x3d'),'id'])||{});}})[_0xc139('0x1a')](respondWithResult(_0x36f62d,null))[_0xc139('0x2a')](handleError(_0x36f62d,null));};exports[_0xc139('0x3f')]=function(_0xbbe9d9,_0x33d030){var _0x233bda={'raw':![],'where':{}};var _0x2174a3={};var _0x3be569={'count':0x0,'rows':[]};return db[_0xc139('0x22')][_0xc139('0x40')]({'where':{'id':_0xbbe9d9['params']['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x33d030,null))[_0xc139('0x1a')](function(_0x406c4e){if(_0x406c4e){_0x2174a3[_0xc139('0x2d')]=_[_0xc139('0x2e')](db[_0xc139('0x3c')]['rawAttributes']);_0x2174a3['query']=_[_0xc139('0x2e')](_0xbbe9d9['query']);_0x2174a3[_0xc139('0x2f')]=_['intersection'](_0x2174a3[_0xc139('0x2d')],_0x2174a3[_0xc139('0x28')]);_0x233bda[_0xc139('0x32')]=_[_0xc139('0x30')](_0x2174a3[_0xc139('0x2d')],qs[_0xc139('0x31')](_0xbbe9d9[_0xc139('0x28')]['fields']));_0x233bda[_0xc139('0x32')]=_0x233bda[_0xc139('0x32')][_0xc139('0x33')]?_0x233bda[_0xc139('0x32')]:_0x2174a3['model'];if(!_0xbbe9d9['query'][_0xc139('0x41')](_0xc139('0x42'))){_0x233bda[_0xc139('0x15')]=qs[_0xc139('0x15')](_0xbbe9d9[_0xc139('0x28')][_0xc139('0x15')]);_0x233bda[_0xc139('0x13')]=qs[_0xc139('0x13')](_0xbbe9d9['query'][_0xc139('0x13')]);}_0x233bda[_0xc139('0x43')]=qs[_0xc139('0x44')](_0xbbe9d9[_0xc139('0x28')][_0xc139('0x44')]);_0x233bda[_0xc139('0x45')]=qs['filters'](_[_0xc139('0x46')](_0xbbe9d9[_0xc139('0x28')],_0x2174a3[_0xc139('0x2f')]));_0x233bda['where'][_0xc139('0x47')]=_0x406c4e['id'];if(_0xbbe9d9['query'][_0xc139('0x48')]){_0x233bda['where']=_['merge'](_0x233bda[_0xc139('0x45')],{'$or':_[_0xc139('0x21')](_0x233bda[_0xc139('0x32')],function(_0x2910c4){var _0x40f7f3={};_0x40f7f3[_0x2910c4]={'$like':'%'+_0xbbe9d9['query'][_0xc139('0x48')]+'%'};return _0x40f7f3;})});}if(_0xbbe9d9[_0xc139('0x28')][_0xc139('0x49')]){var _0x5de4c2=_0xbbe9d9['query'][_0xc139('0x49')][_0xc139('0x4a')](',');var _0x1d9efb={};_0x1d9efb[_0x5de4c2[0x0]]={'$gte':moment(_0x5de4c2[0x1])[_0xc139('0x4b')](_0xc139('0x4c'))};_0x233bda[_0xc139('0x45')]=_['merge'](_0x233bda[_0xc139('0x45')],_0x1d9efb);}_0x233bda=_[_0xc139('0x4d')]({},_0x233bda,_0xbbe9d9[_0xc139('0x36')]);return db['SmsMessage'][_0xc139('0x16')]({'where':_0x233bda[_0xc139('0x45')]})[_0xc139('0x1a')](function(_0x530059){_0x3be569[_0xc139('0x16')]=_0x530059;if(_0xbbe9d9[_0xc139('0x28')]['includeAll']){_0x233bda[_0xc139('0x35')]=[{'all':!![]}];}return db[_0xc139('0x3c')][_0xc139('0x26')](_0x233bda);})['then'](function(_0xe1c90){_0x3be569[_0xc139('0x4e')]=_0xe1c90;return _0x3be569;});}})[_0xc139('0x1a')](respondWithFilteredResult(_0x33d030,_0x233bda))[_0xc139('0x2a')](handleError(_0x33d030,null));};exports['addTags']=function(_0x41b305,_0x169d58){return db['SmsInteraction'][_0xc139('0x37')]({'where':{'id':_0x41b305['params']['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x169d58,null))[_0xc139('0x1a')](function(_0x5eff49){if(_0x5eff49){return _0x5eff49[_0xc139('0x4f')](_0x41b305[_0xc139('0x39')][_0xc139('0x3d')],_[_0xc139('0x3e')](_0x41b305[_0xc139('0x39')],[_0xc139('0x3d'),'id'])||{})[_0xc139('0x50')](function(){return db[_0xc139('0x51')][_0xc139('0x26')]({'attributes':['id',_0xc139('0x1e'),_0xc139('0x52')],'where':{'id':_0x41b305[_0xc139('0x39')][_0xc139('0x3d')]}});})['then'](function(_0x87c78c){socket['emit']('smsInteractionTags:save',{'id':Number(_0x41b305['params']['id']),'tags':_0x87c78c||[]});return{'id':Number(_0x41b305[_0xc139('0x2c')]['id']),'tags':_0x87c78c||[]};});}})[_0xc139('0x1a')](respondWithResult(_0x169d58,null))[_0xc139('0x2a')](handleError(_0x169d58,null));};exports[_0xc139('0x53')]=function(_0x33f490,_0x2f77b6){return db[_0xc139('0x22')][_0xc139('0x37')]({'where':{'id':_0x33f490[_0xc139('0x2c')]['id']}})[_0xc139('0x1a')](handleEntityNotFound(_0x2f77b6,null))[_0xc139('0x1a')](function(_0x4aa7b9){if(_0x4aa7b9){return _0x4aa7b9[_0xc139('0x53')](_0x33f490[_0xc139('0x28')]['ids']);}})['then'](respondWithStatusCode(_0x2f77b6,null))[_0xc139('0x2a')](handleError(_0x2f77b6,null));};exports['download']=function(_0x31dd75,_0x4481f5){var _0x2360a9=moment()[_0xc139('0x54')]()[_0xc139('0x55')]();var _0x5a324b=path[_0xc139('0x56')](config[_0xc139('0x57')],_0xc139('0x58'),_0xc139('0x59'),_0xc139('0x5a'));var _0x145551=path[_0xc139('0x56')](_0x5a324b,_0x2360a9);var _0x1f11fb=util[_0xc139('0x4b')]('transcript-%d-%s.zip',_0x31dd75[_0xc139('0x2c')]['id'],_0x2360a9);var _0x2ba14c=path[_0xc139('0x56')](_0x5a324b,_0x1f11fb);var _0x93fb08=[];_0x93fb08[_0xc139('0x5b')]({'model':db[_0xc139('0x5c')],'as':_0xc139('0x5c'),'attributes':['id',_0xc139('0x5d')],'raw':!![]});_0x93fb08[_0xc139('0x5b')]({'model':db[_0xc139('0x5e')],'as':_0xc139('0x5f'),'attributes':['id',_0xc139('0x60'),_0xc139('0x61')],'raw':!![]});var _0x3cba35=[{'model':db[_0xc139('0x3c')],'as':_0xc139('0x62'),'attributes':['id','body',_0xc139('0x63'),_0xc139('0x64'),'secret',_0xc139('0x65')],'include':_0x93fb08}];_0x3cba35[_0xc139('0x5b')]({'model':db['SmsAccount'],'as':_0xc139('0x66'),'attributes':['id',_0xc139('0x1e')]});_0x3cba35['push']({'model':db[_0xc139('0x5c')],'as':_0xc139('0x67'),'attributes':['id','fullname']});return db[_0xc139('0x22')][_0xc139('0x37')]({'where':{'id':_0x31dd75[_0xc139('0x2c')]['id']},'include':_0x3cba35})['then'](handleEntityNotFound(_0x4481f5,null))['then'](function(_0xd25f03){if(_0xd25f03){var _0x218d8a=_0xd25f03['get']({'plain':!![]});fs[_0xc139('0x68')](_0x145551);var _0x16494f={'channel':_0xc139('0x69'),'account':_0x218d8a[_0xc139('0x66')][_0xc139('0x1e')],'agent':_0x218d8a[_0xc139('0x67')]?_0x218d8a[_0xc139('0x67')][_0xc139('0x5d')]:_0xc139('0x6a'),'createdAt':moment(_0x218d8a[_0xc139('0x63')])['format'](_0xc139('0x4c'))[_0xc139('0x55')](),'closedAt':_0x218d8a[_0xc139('0x6b')]?moment(_0x218d8a[_0xc139('0x6c')])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x218d8a[_0xc139('0x6d')],'messages':_(_0x218d8a['Messages'])[_0xc139('0x48')]({'secret':![]})[_0xc139('0x21')](function(_0x7f36a2){return{'date':moment(_0x7f36a2['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xc139('0x55')](),'sender':_0x7f36a2['direction']===_0xc139('0x6e')?_0x7f36a2[_0xc139('0x5c')]?_0x7f36a2['User']['fullname']:_0xc139('0x6f'):_0x7f36a2[_0xc139('0x5f')][_0xc139('0x60')]+(_0x7f36a2[_0xc139('0x5f')]['lastName']?'\x20'+_0x7f36a2['Contact'][_0xc139('0x61')]:''),'body':_0x7f36a2[_0xc139('0x39')],'direction':_0x7f36a2['direction']==='out'?'A':'C','secret':_0x7f36a2['secret'],'read':_0x7f36a2['read']};})[_0xc139('0x70')]()};return ejs[_0xc139('0x71')](path[_0xc139('0x56')](config[_0xc139('0x57')],_0xc139('0x58'),_0xc139('0x72'),_0xc139('0x73')),{'interaction':_0x16494f})[_0xc139('0x1a')](function(_0x1d0176){var _0x4fac66=path[_0xc139('0x56')](_0x145551,'transcript-'+_0x218d8a['id']+'-'+_0x2360a9+_0xc139('0x74'));var _0x16cf8a={'path':_0x4fac66,'channel':_0xc139('0x69'),'interactionId':_0x218d8a['id']};return pdf[_0xc139('0x75')](_0x1d0176,_0x16cf8a);})[_0xc139('0x1a')](function(){return new BPromise(function(_0x5acac3,_0x217f6c){zipdir(_0x145551,{'saveTo':_0x2ba14c},function(_0x315a27,_0x16713b){if(_0x315a27)return _0x217f6c(_0x315a27);return _0x5acac3(_0x16713b);});})[_0xc139('0x1a')](function(){return new BPromise(function(_0x4c1d1b,_0x476148){rimraf(_0x145551,function(_0x1f28c2){if(_0x1f28c2)_0x476148(_0x1f28c2);return _0x4c1d1b();});});})[_0xc139('0x1a')](function(){return _0x4481f5[_0xc139('0x76')](_0x2ba14c,_0x1f11fb,function(_0x1f4921){if(_0x1f4921){console['log']('err',_0x1f4921);}else{fs['unlinkSync'](_0x2ba14c);}});});});}else{return _0x4481f5[_0xc139('0xf')](0xc8);}})[_0xc139('0x2a')](handleError(_0x4481f5,null));};
\ No newline at end of file
index fcb7dd3..4ca5067 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','events','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x40a7e5,_0x116a84){var _0x3968ba=function(_0x1962e1){while(--_0x1962e1){_0x40a7e5['push'](_0x40a7e5['shift']());}};_0x3968ba(++_0x116a84);}(_0x4991,0xf7));var _0x1499=function(_0x55f4b3,_0x44ba9f){_0x55f4b3=_0x55f4b3-0x0;var _0x25b124=_0x4991[_0x55f4b3];return _0x25b124;};'use strict';var EventEmitter=require(_0x1499('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0x1499('0x1')];var SmsMessage=require('../../mysqldb')['db'][_0x1499('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x1499('0x3')](0x0);var events={'afterCreate':_0x1499('0x4'),'afterUpdate':_0x1499('0x5'),'afterDestroy':_0x1499('0x6')};function emitEvent(_0x158134){return function(_0x19adff,_0x209616,_0x4b6154){_0x19adff[_0x1499('0x7')]({'attributes':['id'],'raw':!![]})[_0x1499('0x8')](function(_0x1c65c3){_0x19adff[_0x1499('0x9')](_0x1499('0xa'),_0x1c65c3[_0x1499('0xb')](function(_0x3277b3){return{'id':_0x3277b3['id']};}));return SmsMessage[_0x1499('0xc')]({'where':{'SmsInteractionId':_0x19adff['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x16e8ad){_0x19adff[_0x1499('0x9')]('unreadMessages',_0x16e8ad[_0x1499('0xd')]);SmsInteractionEvents[_0x1499('0xe')](_0x158134+':'+_0x19adff['id'],_0x19adff);SmsInteractionEvents['emit'](_0x158134,_0x19adff);_0x4b6154(null);})[_0x1499('0xf')](_0x4b6154(null));};}for(var e in events){if(events[_0x1499('0x10')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x4137=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0xa6769f,_0x4ef19f){var _0x22170f=function(_0x44e803){while(--_0x44e803){_0xa6769f['push'](_0xa6769f['shift']());}};_0x22170f(++_0x4ef19f);}(_0x4137,0xf8));var _0x7413=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4137[_0x4565bf];return _0x5610ba;};'use strict';var EventEmitter=require(_0x7413('0x0'));var SmsInteraction=require(_0x7413('0x1'))['db'][_0x7413('0x2')];var SmsMessage=require(_0x7413('0x1'))['db'][_0x7413('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x7413('0x4')](0x0);var events={'afterCreate':_0x7413('0x5'),'afterUpdate':_0x7413('0x6'),'afterDestroy':_0x7413('0x7')};function emitEvent(_0x3dc48a){return function(_0x451a96,_0x3bb181,_0x4fbade){_0x451a96[_0x7413('0x8')]({'attributes':['id'],'raw':!![]})[_0x7413('0x9')](function(_0x5b39ac){_0x451a96[_0x7413('0xa')]('Users',_0x5b39ac[_0x7413('0xb')](function(_0x120dc2){return{'id':_0x120dc2['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x451a96['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7413('0x9')](function(_0x2f4b54){_0x451a96['setDataValue'](_0x7413('0xc'),_0x2f4b54[_0x7413('0xd')]);SmsInteractionEvents[_0x7413('0xe')](_0x3dc48a+':'+_0x451a96['id'],_0x451a96);SmsInteractionEvents[_0x7413('0xe')](_0x3dc48a,_0x451a96);_0x4fbade(null);})[_0x7413('0xf')](_0x4fbade(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x7413('0x10')](e,emitEvent(event));}}module[_0x7413('0x11')]=SmsInteractionEvents;
\ No newline at end of file
index 33a6287..18cbaf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a1b=['closedAt','api','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','sms_interactions','changed'];(function(_0x31ca37,_0x2b814f){var _0x4300cd=function(_0x5a8d09){while(--_0x5a8d09){_0x31ca37['push'](_0x31ca37['shift']());}};_0x4300cd(++_0x2b814f);}(_0x0a1b,0x1c3));var _0xb0a1=function(_0x7f5922,_0x283b62){_0x7f5922=_0x7f5922-0x0;var _0x1d8b0c=_0x0a1b[_0x7f5922];return _0x1d8b0c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xb0a1('0x0'));var moment=require('moment');var BPromise=require(_0xb0a1('0x1'));var rp=require(_0xb0a1('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb0a1('0x3'));var config=require(_0xb0a1('0x4'));var attributes=require(_0xb0a1('0x5'));module[_0xb0a1('0x6')]=function(_0x2b6db8,_0x290c85){return _0x2b6db8['define']('SmsInteraction',attributes,{'tableName':_0xb0a1('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4e54f3,_0x2a8d79,_0x71270b){if(_0x4e54f3[_0xb0a1('0x8')]('closed')){_0x4e54f3[_0xb0a1('0x9')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x71270b(null,_0x4e54f3);}}});};
\ No newline at end of file
+var _0xc87d=['path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment'];(function(_0x37a7c6,_0x3a84b6){var _0x539905=function(_0xa00c20){while(--_0xa00c20){_0x37a7c6['push'](_0x37a7c6['shift']());}};_0x539905(++_0x3a84b6);}(_0xc87d,0x16c));var _0xdc87=function(_0x24ab61,_0x19dd70){_0x24ab61=_0x24ab61-0x0;var _0x38cf83=_0xc87d[_0x24ab61];return _0x38cf83;};'use strict';var _=require(_0xdc87('0x0'));var util=require('util');var logger=require(_0xdc87('0x1'))(_0xdc87('0x2'));var moment=require(_0xdc87('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xdc87('0x4'));var rimraf=require(_0xdc87('0x5'));var config=require(_0xdc87('0x6'));var attributes=require(_0xdc87('0x7'));module[_0xdc87('0x8')]=function(_0x966003,_0x1a8928){return _0x966003[_0xdc87('0x9')](_0xdc87('0xa'),attributes,{'tableName':_0xdc87('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x997123,_0x51b578,_0xfa6b9b){if(_0x997123[_0xdc87('0xc')](_0xdc87('0xd'))){_0x997123[_0xdc87('0xe')]=moment()['format'](_0xdc87('0xf'));}_0xfa6b9b(null,_0x997123);}}});};
\ No newline at end of file
index 27c5df2..a08b356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x922a=['where','attributes','limit','AddTagsToSmsInteraction','find','addTags','ids','spread','AddTags','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','http','redis','defaults','localhost','./smsInteraction.socket','request','then','info','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsInteraction,\x20%s,\x20%s','message','request\x20sent','catch','UpdateSmsInteraction','SmsInteraction','body','options','raw'];(function(_0x4179e2,_0xf2dbb){var _0x24cb50=function(_0x3b7899){while(--_0x3b7899){_0x4179e2['push'](_0x4179e2['shift']());}};_0x24cb50(++_0xf2dbb);}(_0x922a,0xa1));var _0xa922=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x922a[_0x33032e];return _0x13316b;};'use strict';var _=require('lodash');var util=require(_0xa922('0x0'));var moment=require(_0xa922('0x1'));var BPromise=require(_0xa922('0x2'));var rs=require(_0xa922('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa922('0x4'))['db'];var utils=require(_0xa922('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa922('0x6'));var client=jayson['client'][_0xa922('0x7')]({'port':0x232a});config[_0xa922('0x8')]=_[_0xa922('0x9')](config[_0xa922('0x8')],{'host':_0xa922('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa922('0xb'))['register'](socket);function respondWithRpcPromise(_0x147ee2,_0x20298e,_0x358726){return new BPromise(function(_0x70e5e,_0x2123e1){return client[_0xa922('0xc')](_0x147ee2,_0x358726)[_0xa922('0xd')](function(_0xd7ee47){logger[_0xa922('0xe')]('SmsInteraction,\x20%s,\x20%s',_0x20298e,'request\x20sent');logger[_0xa922('0xf')](_0xa922('0x10'),_0x20298e,'request\x20sent',JSON[_0xa922('0x11')](_0xd7ee47));if(_0xd7ee47[_0xa922('0x12')]){if(_0xd7ee47[_0xa922('0x12')][_0xa922('0x13')]===0x1f4){logger[_0xa922('0x12')](_0xa922('0x14'),_0x20298e,_0xd7ee47['error'][_0xa922('0x15')]);return _0x2123e1(_0xd7ee47[_0xa922('0x12')][_0xa922('0x15')]);}logger[_0xa922('0x12')](_0xa922('0x14'),_0x20298e,_0xd7ee47[_0xa922('0x12')][_0xa922('0x15')]);return _0x70e5e(_0xd7ee47[_0xa922('0x12')][_0xa922('0x15')]);}else{logger[_0xa922('0xe')](_0xa922('0x14'),_0x20298e,_0xa922('0x16'));_0x70e5e(_0xd7ee47['result'][_0xa922('0x15')]);}})[_0xa922('0x17')](function(_0x272615){logger[_0xa922('0x12')](_0xa922('0x14'),_0x20298e,_0x272615);_0x2123e1(_0x272615);});});}exports[_0xa922('0x18')]=function(_0x24d883){var _0x3546bf=this;return new Promise(function(_0x2f309c,_0x18fe2d){return db[_0xa922('0x19')]['update'](_0x24d883[_0xa922('0x1a')],{'raw':_0x24d883['options']?_0x24d883[_0xa922('0x1b')][_0xa922('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24d883[_0xa922('0x1b')]?_0x24d883[_0xa922('0x1b')][_0xa922('0x1d')]||null:null,'attributes':_0x24d883[_0xa922('0x1b')]?_0x24d883[_0xa922('0x1b')][_0xa922('0x1e')]||null:null,'limit':_0x24d883[_0xa922('0x1b')]?_0x24d883[_0xa922('0x1b')][_0xa922('0x1f')]||null:null})[_0xa922('0xd')](function(_0x19c694){logger[_0xa922('0xe')](_0xa922('0x18'),_0x24d883);logger['debug']('UpdateSmsInteraction',_0x24d883,JSON[_0xa922('0x11')](_0x19c694));_0x2f309c(_0x19c694);})['catch'](function(_0x549344){logger[_0xa922('0x12')](_0xa922('0x18'),_0x549344[_0xa922('0x15')],_0x24d883);_0x18fe2d(_0x3546bf[_0xa922('0x12')](0x1f4,_0x549344[_0xa922('0x15')]));});});};exports[_0xa922('0x20')]=function(_0x3dd885){return new Promise(function(_0x2c3b21,_0x245958){return db[_0xa922('0x19')][_0xa922('0x21')]({'where':_0x3dd885[_0xa922('0x1b')]?_0x3dd885['options'][_0xa922('0x1d')]||null:null})[_0xa922('0xd')](function(_0x52b8de){if(_0x52b8de){return _0x52b8de[_0xa922('0x22')](_0x3dd885[_0xa922('0x1a')][_0xa922('0x23')],_['omit'](_0x3dd885['body'],[_0xa922('0x23'),'id'])||{});}})[_0xa922('0x24')](function(_0xc52c9f){logger['info'](_0xa922('0x25'),_0x3dd885);logger[_0xa922('0xf')](_0xa922('0x25'),_0x3dd885,JSON[_0xa922('0x11')](_0xc52c9f));_0x2c3b21(_0xc52c9f);})[_0xa922('0x17')](function(_0x11de0f){logger['error'](_0xa922('0x25'),_0x11de0f[_0xa922('0x15')],_0x3dd885);_0x245958(_this[_0xa922('0x12')](0x1f4,_0x11de0f[_0xa922('0x15')]));});});};
\ No newline at end of file
+var _0x2b8e=['code','message','info','SmsInteraction','options','where','attributes','limit','UpdateSmsInteraction','catch','AddTagsToSmsInteraction','find','addTags','body','ids','omit','spread','AddTags','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x164df2,_0x4083ee){var _0x4abfa1=function(_0x226c9b){while(--_0x226c9b){_0x164df2['push'](_0x164df2['shift']());}};_0x4abfa1(++_0x4083ee);}(_0x2b8e,0x162));var _0xe2b8=function(_0x5959e2,_0x3a8ac3){_0x5959e2=_0x5959e2-0x0;var _0x299a72=_0x2b8e[_0x5959e2];return _0x299a72;};'use strict';var _=require('lodash');var util=require(_0xe2b8('0x0'));var moment=require(_0xe2b8('0x1'));var BPromise=require('bluebird');var rs=require(_0xe2b8('0x2'));var fs=require('fs');var Redis=require(_0xe2b8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe2b8('0x4'));var logger=require(_0xe2b8('0x5'))(_0xe2b8('0x6'));var config=require(_0xe2b8('0x7'));var jayson=require(_0xe2b8('0x8'));var client=jayson['client'][_0xe2b8('0x9')]({'port':0x232a});config[_0xe2b8('0xa')]=_[_0xe2b8('0xb')](config[_0xe2b8('0xa')],{'host':_0xe2b8('0xc'),'port':0x18eb});var socket=require(_0xe2b8('0xd'))(new Redis(config[_0xe2b8('0xa')]));require(_0xe2b8('0xe'))[_0xe2b8('0xf')](socket);function respondWithRpcPromise(_0x2e7a9a,_0x33ac8a,_0x2df119){return new BPromise(function(_0x36e408,_0x6ef935){return client[_0xe2b8('0x10')](_0x2e7a9a,_0x2df119)[_0xe2b8('0x11')](function(_0x214d15){logger['info'](_0xe2b8('0x12'),_0x33ac8a,_0xe2b8('0x13'));logger[_0xe2b8('0x14')](_0xe2b8('0x15'),_0x33ac8a,_0xe2b8('0x13'),JSON[_0xe2b8('0x16')](_0x214d15));if(_0x214d15[_0xe2b8('0x17')]){if(_0x214d15[_0xe2b8('0x17')][_0xe2b8('0x18')]===0x1f4){logger[_0xe2b8('0x17')](_0xe2b8('0x12'),_0x33ac8a,_0x214d15[_0xe2b8('0x17')][_0xe2b8('0x19')]);return _0x6ef935(_0x214d15[_0xe2b8('0x17')][_0xe2b8('0x19')]);}logger[_0xe2b8('0x17')]('SmsInteraction,\x20%s,\x20%s',_0x33ac8a,_0x214d15[_0xe2b8('0x17')][_0xe2b8('0x19')]);return _0x36e408(_0x214d15[_0xe2b8('0x17')][_0xe2b8('0x19')]);}else{logger[_0xe2b8('0x1a')](_0xe2b8('0x12'),_0x33ac8a,_0xe2b8('0x13'));_0x36e408(_0x214d15['result']['message']);}})['catch'](function(_0x429451){logger[_0xe2b8('0x17')](_0xe2b8('0x12'),_0x33ac8a,_0x429451);_0x6ef935(_0x429451);});});}exports['UpdateSmsInteraction']=function(_0x5a625a){var _0x3b6334=this;return new Promise(function(_0x2ee6bc,_0x5615f7){return db[_0xe2b8('0x1b')]['update'](_0x5a625a['body'],{'raw':_0x5a625a[_0xe2b8('0x1c')]?_0x5a625a[_0xe2b8('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a625a[_0xe2b8('0x1c')]?_0x5a625a[_0xe2b8('0x1c')][_0xe2b8('0x1d')]||null:null,'attributes':_0x5a625a[_0xe2b8('0x1c')]?_0x5a625a[_0xe2b8('0x1c')][_0xe2b8('0x1e')]||null:null,'limit':_0x5a625a[_0xe2b8('0x1c')]?_0x5a625a[_0xe2b8('0x1c')][_0xe2b8('0x1f')]||null:null})[_0xe2b8('0x11')](function(_0x3b7467){logger[_0xe2b8('0x1a')]('UpdateSmsInteraction',_0x5a625a);logger[_0xe2b8('0x14')](_0xe2b8('0x20'),_0x5a625a,JSON[_0xe2b8('0x16')](_0x3b7467));_0x2ee6bc(_0x3b7467);})[_0xe2b8('0x21')](function(_0x264f00){logger[_0xe2b8('0x17')](_0xe2b8('0x20'),_0x264f00[_0xe2b8('0x19')],_0x5a625a);_0x5615f7(_0x3b6334['error'](0x1f4,_0x264f00[_0xe2b8('0x19')]));});});};exports[_0xe2b8('0x22')]=function(_0x2efb2c){return new Promise(function(_0x66e7d0,_0x34fcbe){return db[_0xe2b8('0x1b')][_0xe2b8('0x23')]({'where':_0x2efb2c[_0xe2b8('0x1c')]?_0x2efb2c[_0xe2b8('0x1c')][_0xe2b8('0x1d')]||null:null})['then'](function(_0x3657a4){if(_0x3657a4){return _0x3657a4[_0xe2b8('0x24')](_0x2efb2c[_0xe2b8('0x25')][_0xe2b8('0x26')],_[_0xe2b8('0x27')](_0x2efb2c[_0xe2b8('0x25')],[_0xe2b8('0x26'),'id'])||{});}})[_0xe2b8('0x28')](function(_0xbf6572){logger[_0xe2b8('0x1a')](_0xe2b8('0x29'),_0x2efb2c);logger['debug']('AddTags',_0x2efb2c,JSON[_0xe2b8('0x16')](_0xbf6572));_0x66e7d0(_0xbf6572);})[_0xe2b8('0x21')](function(_0x5a101e){logger[_0xe2b8('0x17')](_0xe2b8('0x29'),_0x5a101e[_0xe2b8('0x19')],_0x2efb2c);_0x34fcbe(_this[_0xe2b8('0x17')](0x1f4,_0x5a101e[_0xe2b8('0x19')]));});});};
\ No newline at end of file
index 8ef83e7..47ace6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefdd=['./smsInteraction.events','register'];(function(_0x2aa9c3,_0x5a49ab){var _0x5c242d=function(_0xbdbc35){while(--_0xbdbc35){_0x2aa9c3['push'](_0x2aa9c3['shift']());}};_0x5c242d(++_0x5a49ab);}(_0xefdd,0x182));var _0xdefd=function(_0x2bea75,_0xacc2bc){_0x2bea75=_0x2bea75-0x0;var _0xcf26e3=_0xefdd[_0x2bea75];return _0xcf26e3;};'use strict';var SmsInteractionEvents=require(_0xdefd('0x0'));var events=['save','remove','update'];function createListener(_0x5e1846,_0x5142b6){return function(_0x4651af){_0x5142b6['emit'](_0x5e1846,_0x4651af);};}function removeListener(_0x11cbb5,_0x4cb70f){return function(){SmsInteractionEvents['removeListener'](_0x11cbb5,_0x4cb70f);};}exports[_0xdefd('0x1')]=function(_0x5e4f75){for(var _0x5c8a85=0x0,_0x41efdf=events['length'];_0x5c8a85<_0x41efdf;_0x5c8a85++){var _0x2a6d35=events[_0x5c8a85];var _0xb19d4d=createListener('smsInteraction:'+_0x2a6d35,_0x5e4f75);SmsInteractionEvents['on'](_0x2a6d35,_0xb19d4d);}};
\ No newline at end of file
+var _0x5475=['remove','removeListener','register','smsInteraction:','./smsInteraction.events'];(function(_0x190c0a,_0x4a89ca){var _0x3a09f7=function(_0x587101){while(--_0x587101){_0x190c0a['push'](_0x190c0a['shift']());}};_0x3a09f7(++_0x4a89ca);}(_0x5475,0x135));var _0x5547=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x5475[_0x2641f9];return _0x585741;};'use strict';var SmsInteractionEvents=require(_0x5547('0x0'));var events=['save',_0x5547('0x1'),'update'];function createListener(_0x1079ff,_0x5ecf98){return function(_0x233a0b){_0x5ecf98['emit'](_0x1079ff,_0x233a0b);};}function removeListener(_0xa3f6ba,_0x260073){return function(){SmsInteractionEvents[_0x5547('0x2')](_0xa3f6ba,_0x260073);};}exports[_0x5547('0x3')]=function(_0x31f413){for(var _0x337664=0x0,_0x5167cf=events['length'];_0x337664<_0x5167cf;_0x337664++){var _0x53342a=events[_0x337664];var _0x185807=createListener(_0x5547('0x4')+_0x53342a,_0x31f413);SmsInteractionEvents['on'](_0x53342a,_0x185807);}};
\ No newline at end of file
index 26f0d11..877e208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6888=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','tracked','sms','smsmessage:create','create','post','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','exports'];(function(_0x39daf1,_0x23c753){var _0x5715f6=function(_0x40b9bf){while(--_0x40b9bf){_0x39daf1['push'](_0x39daf1['shift']());}};_0x5715f6(++_0x23c753);}(_0x6888,0xd2));var _0x8688=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x6888[_0x1b2ff7];return _0x31656a;};'use strict';var multer=require(_0x8688('0x0'));var util=require('util');var path=require(_0x8688('0x1'));var timeout=require(_0x8688('0x2'));var express=require(_0x8688('0x3'));var router=express[_0x8688('0x4')]();var fs_extra=require(_0x8688('0x5'));var auth=require(_0x8688('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8688('0x7'));router[_0x8688('0x8')]('/',auth[_0x8688('0x9')](),controller[_0x8688('0xa')]);router[_0x8688('0x8')](_0x8688('0xb'),auth['isAuthenticated'](),controller[_0x8688('0xc')]);router[_0x8688('0x8')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller[_0x8688('0xe')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x8688('0xf')](_0x8688('0x10'),_0x8688('0x11')),controller[_0x8688('0x12')]);router[_0x8688('0x13')](_0x8688('0x14'),controller[_0x8688('0x15')]);router[_0x8688('0x16')](_0x8688('0xd'),auth['isAuthenticated'](),controller[_0x8688('0x17')]);router[_0x8688('0x16')](_0x8688('0x18'),auth[_0x8688('0x9')](),controller[_0x8688('0x19')]);router[_0x8688('0x16')](_0x8688('0x1a'),auth[_0x8688('0x9')](),controller[_0x8688('0x1b')]);router[_0x8688('0x1c')](_0x8688('0xd'),auth[_0x8688('0x9')](),controller['destroy']);module[_0x8688('0x1d')]=router;
\ No newline at end of file
+var _0x4443=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','sms','create','/:id/status','status','update','put','/:id/accept','/:id/reject','reject','destroy','exports','multer','path','connect-timeout'];(function(_0x2f662e,_0x28f6ac){var _0x3a8b70=function(_0x40f6fb){while(--_0x40f6fb){_0x2f662e['push'](_0x2f662e['shift']());}};_0x3a8b70(++_0x28f6ac);}(_0x4443,0x71));var _0x3444=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4443[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x3444('0x0'));var util=require('util');var path=require(_0x3444('0x1'));var timeout=require(_0x3444('0x2'));var express=require(_0x3444('0x3'));var router=express[_0x3444('0x4')]();var fs_extra=require(_0x3444('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3444('0x6'));var config=require(_0x3444('0x7'));var controller=require(_0x3444('0x8'));router[_0x3444('0x9')]('/',auth[_0x3444('0xa')](),controller[_0x3444('0xb')]);router[_0x3444('0x9')](_0x3444('0xc'),auth['isAuthenticated'](),controller[_0x3444('0xd')]);router[_0x3444('0x9')](_0x3444('0xe'),auth['isAuthenticated'](),controller[_0x3444('0xf')]);router[_0x3444('0x10')]('/',auth[_0x3444('0xa')](),interaction[_0x3444('0x11')](_0x3444('0x12'),'smsmessage:create'),controller[_0x3444('0x13')]);router['post'](_0x3444('0x14'),controller[_0x3444('0x15')]);router['put'](_0x3444('0xe'),auth['isAuthenticated'](),controller[_0x3444('0x16')]);router[_0x3444('0x17')](_0x3444('0x18'),auth['isAuthenticated'](),controller['accept']);router[_0x3444('0x17')](_0x3444('0x19'),auth[_0x3444('0xa')](),controller[_0x3444('0x1a')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3444('0x1b')]);module[_0x3444('0x1c')]=router;
\ No newline at end of file
index 38052f7..02ad34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92df=['out','STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x5c7c2e,_0x33a492){var _0x3b2846=function(_0x2f1643){while(--_0x2f1643){_0x5c7c2e['push'](_0x5c7c2e['shift']());}};_0x3b2846(++_0x33a492);}(_0x92df,0xcb));var _0xf92d=function(_0x373f18,_0x387b70){_0x373f18=_0x373f18-0x0;var _0x21b65f=_0x92df[_0x373f18];return _0x21b65f;};'use strict';var Sequelize=require(_0xf92d('0x0'));module[_0xf92d('0x1')]={'body':{'type':Sequelize[_0xf92d('0x2')](_0xf92d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xf92d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xf92d('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xf92d('0x6')]},'readAt':{'type':Sequelize[_0xf92d('0x7')]},'secret':{'type':Sequelize[_0xf92d('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf92d('0x6')]},'providerResponse':{'type':Sequelize[_0xf92d('0x2')]}};
\ No newline at end of file
+var _0xa328=['TEXT','medium','BOOLEAN','ENUM','out','STRING','sequelize','exports'];(function(_0x33a040,_0x450148){var _0xd05bac=function(_0x58263d){while(--_0x58263d){_0x33a040['push'](_0x33a040['shift']());}};_0xd05bac(++_0x450148);}(_0xa328,0x156));var _0x8a32=function(_0xc465f5,_0xa9c358){_0xc465f5=_0xc465f5-0x0;var _0x3dd839=_0xa328[_0xc465f5];return _0x3dd839;};'use strict';var Sequelize=require(_0x8a32('0x0'));module[_0x8a32('0x1')]={'body':{'type':Sequelize[_0x8a32('0x2')](_0x8a32('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x8a32('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8a32('0x5')]('in',_0x8a32('0x6')),'defaultValue':_0x8a32('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8a32('0x7')](0xbe)},'phone':{'type':Sequelize[_0x8a32('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x8a32('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x8a32('0x7')]},'providerResponse':{'type':Sequelize[_0x8a32('0x2')]}};
\ No newline at end of file
index 1794a1a..bcd0317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ed=['options','includeAll','findAll','rows','show','params','find','create','body','describe','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','update','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','SmsInteractionId','interaction','RejectMessage','rejectMessage','ContactId','Sequelize','User','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','plivo','MessageUUID','indexOf','delivered','Status','plivio','infobip','groupName','DELIVERED','eml-format','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','jayson/promise','client','http','request','then','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','destroy','name','send','index','map','SmsMessage','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge'];(function(_0x43f489,_0x2b4fea){var _0x4134b4=function(_0x4365f6){while(--_0x4365f6){_0x43f489['push'](_0x43f489['shift']());}};_0x4134b4(++_0x2b4fea);}(_0x85ed,0x1e7));var _0xd85e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x85ed[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0xd85e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd85e('0x1'));var moment=require(_0xd85e('0x2'));var BPromise=require(_0xd85e('0x3'));var Mustache=require(_0xd85e('0x4'));var util=require(_0xd85e('0x5'));var path=require('path');var sox=require(_0xd85e('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd85e('0x7'));var squel=require(_0xd85e('0x8'));var crypto=require(_0xd85e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd85e('0xa'));var querystring=require(_0xd85e('0xb'));var Papa=require(_0xd85e('0xc'));var Redis=require(_0xd85e('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd85e('0xe'));var as=require(_0xd85e('0xf'));var hardwareService=require(_0xd85e('0x10'));var logger=require(_0xd85e('0x11'))(_0xd85e('0x12'));var utils=require(_0xd85e('0x13'));var config=require(_0xd85e('0x14'));var licenseUtil=require(_0xd85e('0x15'));var db=require(_0xd85e('0x16'))['db'];config[_0xd85e('0x17')]=_[_0xd85e('0x18')](config['redis'],{'host':_0xd85e('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd85e('0x1a'))['register'](socket);var jayson=require(_0xd85e('0x1b'));var client=jayson[_0xd85e('0x1c')][_0xd85e('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xd85e('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xc59173,_0x4df40d,_0x39acb2,_0x447cd5){return new BPromise(function(_0x125f60,_0xccc81f){var _0x3750be=_0x447cd5||client;return _0x3750be[_0xd85e('0x1e')](_0xc59173,_0x39acb2)[_0xd85e('0x1f')](function(_0x12fbf1){logger['info']('SmsMessage,\x20%s,\x20%s',_0x4df40d,_0xd85e('0x20'));logger[_0xd85e('0x21')](_0xd85e('0x22'),_0x4df40d,_0xd85e('0x20'),JSON[_0xd85e('0x23')](_0x12fbf1));if(_0x12fbf1[_0xd85e('0x24')]){if(_0x12fbf1[_0xd85e('0x24')]['code']===0x1f4){logger[_0xd85e('0x24')](_0xd85e('0x25'),_0x4df40d,_0x12fbf1[_0xd85e('0x24')][_0xd85e('0x26')]);return _0xccc81f(_0x12fbf1[_0xd85e('0x24')][_0xd85e('0x26')]);}logger[_0xd85e('0x24')]('SmsMessage,\x20%s,\x20%s',_0x4df40d,_0x12fbf1[_0xd85e('0x24')][_0xd85e('0x26')]);return _0x125f60(_0x12fbf1[_0xd85e('0x24')]['message']);}else{logger[_0xd85e('0x27')]('SmsMessage,\x20%s,\x20%s',_0x4df40d,'request\x20sent');_0x125f60(_0x12fbf1[_0xd85e('0x28')][_0xd85e('0x26')]);}})[_0xd85e('0x29')](function(_0x45baa9){logger[_0xd85e('0x24')](_0xd85e('0x25'),_0x4df40d,_0x45baa9);_0xccc81f(_0x45baa9);});});}function respondWithStatusCode(_0x1c81d9,_0xa92c43){_0xa92c43=_0xa92c43||0xcc;return function(_0x12f40d){if(_0x12f40d){return _0x1c81d9[_0xd85e('0x2a')](_0xa92c43);}return _0x1c81d9['status'](_0xa92c43)[_0xd85e('0x2b')]();};}function respondWithResult(_0x24aeaf,_0x412d45){_0x412d45=_0x412d45||0xc8;return function(_0x28aab4){if(_0x28aab4){return _0x24aeaf[_0xd85e('0x2c')](_0x412d45)[_0xd85e('0x2d')](_0x28aab4);}};}function respondWithFilteredResult(_0x461413,_0x3b9d0c){return function(_0x336e9e){if(_0x336e9e){var _0x12e820=typeof _0x3b9d0c[_0xd85e('0x2e')]==='undefined'&&typeof _0x3b9d0c[_0xd85e('0x2f')]==='undefined';var _0x417229=_0x336e9e['count'];var _0x1ab657=_0x12e820?0x0:_0x3b9d0c['offset'];var _0x1537d1=_0x12e820?_0x336e9e[_0xd85e('0x30')]:_0x3b9d0c[_0xd85e('0x2e')]+_0x3b9d0c[_0xd85e('0x2f')];var _0x3835e7;if(_0x1537d1>=_0x417229){_0x1537d1=_0x417229;_0x3835e7=0xc8;}else{_0x3835e7=0xce;}_0x461413[_0xd85e('0x2c')](_0x3835e7);return _0x461413[_0xd85e('0x31')](_0xd85e('0x32'),_0x1ab657+'-'+_0x1537d1+'/'+_0x417229)['json'](_0x336e9e);}return null;};}function patchUpdates(_0x80c368){return function(_0x3ac3a4){try{jsonpatch[_0xd85e('0x33')](_0x3ac3a4,_0x80c368,!![]);}catch(_0x52aa96){return BPromise[_0xd85e('0x34')](_0x52aa96);}return _0x3ac3a4[_0xd85e('0x35')]();};}function saveUpdates(_0x5d1f1a,_0xd50baf){return function(_0x266a8e){if(_0x266a8e){return _0x266a8e['update'](_0x5d1f1a)[_0xd85e('0x1f')](function(_0x4b8201){return _0x4b8201;});}return null;};}function removeEntity(_0x49c0f0,_0x249651){return function(_0x366e4d){if(_0x366e4d){return _0x366e4d[_0xd85e('0x36')]()[_0xd85e('0x1f')](function(){_0x49c0f0[_0xd85e('0x2c')](0xcc)[_0xd85e('0x2b')]();});}};}function handleEntityNotFound(_0x2deaef,_0x3ea565){return function(_0xa5b3f2){if(!_0xa5b3f2){_0x2deaef[_0xd85e('0x2a')](0x194);}return _0xa5b3f2;};}function handleError(_0x2a8f69,_0x212e00){_0x212e00=_0x212e00||0x1f4;return function(_0x344215){logger[_0xd85e('0x24')](_0x344215['stack']);if(_0x344215[_0xd85e('0x37')]){delete _0x344215['name'];}_0x2a8f69[_0xd85e('0x2c')](_0x212e00)[_0xd85e('0x38')](_0x344215);};}exports[_0xd85e('0x39')]=function(_0x335567,_0x166424){var _0x3bcf8a={},_0x78cfe9={},_0x18641f={'count':0x0,'rows':[]};var _0x1ede3a=_[_0xd85e('0x3a')](db[_0xd85e('0x3b')][_0xd85e('0x3c')],function(_0x1f86f4){return{'name':_0x1f86f4['fieldName'],'type':_0x1f86f4[_0xd85e('0x3d')][_0xd85e('0x3e')]};});_0x78cfe9[_0xd85e('0x3f')]=_[_0xd85e('0x3a')](_0x1ede3a,_0xd85e('0x37'));_0x78cfe9['query']=_[_0xd85e('0x40')](_0x335567[_0xd85e('0x41')]);_0x78cfe9[_0xd85e('0x42')]=_[_0xd85e('0x43')](_0x78cfe9[_0xd85e('0x3f')],_0x78cfe9[_0xd85e('0x41')]);_0x3bcf8a[_0xd85e('0x44')]=_[_0xd85e('0x43')](_0x78cfe9[_0xd85e('0x3f')],qs['fields'](_0x335567[_0xd85e('0x41')][_0xd85e('0x45')]));_0x3bcf8a[_0xd85e('0x44')]=_0x3bcf8a[_0xd85e('0x44')][_0xd85e('0x46')]?_0x3bcf8a[_0xd85e('0x44')]:_0x78cfe9[_0xd85e('0x3f')];if(!_0x335567[_0xd85e('0x41')]['hasOwnProperty']('nolimit')){_0x3bcf8a['limit']=qs[_0xd85e('0x2f')](_0x335567[_0xd85e('0x41')][_0xd85e('0x2f')]);_0x3bcf8a['offset']=qs[_0xd85e('0x2e')](_0x335567[_0xd85e('0x41')][_0xd85e('0x2e')]);}_0x3bcf8a[_0xd85e('0x47')]=qs[_0xd85e('0x48')](_0x335567['query'][_0xd85e('0x48')]);_0x3bcf8a[_0xd85e('0x49')]=qs[_0xd85e('0x42')](_[_0xd85e('0x4a')](_0x335567['query'],_0x78cfe9[_0xd85e('0x42')]),_0x1ede3a);if(_0x335567[_0xd85e('0x41')][_0xd85e('0x4b')]){_0x3bcf8a[_0xd85e('0x49')]=_[_0xd85e('0x4c')](_0x3bcf8a['where'],{'$or':_[_0xd85e('0x3a')](_0x1ede3a,function(_0x1ca963){if(_0x1ca963['type']!=='VIRTUAL'){var _0x2f1173={};_0x2f1173[_0x1ca963['name']]={'$like':'%'+_0x335567[_0xd85e('0x41')][_0xd85e('0x4b')]+'%'};return _0x2f1173;}})});}_0x3bcf8a=_['merge']({},_0x3bcf8a,_0x335567[_0xd85e('0x4d')]);var _0x5c128f={'where':_0x3bcf8a['where']};return db['SmsMessage']['count'](_0x5c128f)[_0xd85e('0x1f')](function(_0x1389e5){_0x18641f['count']=_0x1389e5;if(_0x335567[_0xd85e('0x41')][_0xd85e('0x4e')]){_0x3bcf8a['include']=[{'all':!![]}];}return db[_0xd85e('0x3b')][_0xd85e('0x4f')](_0x3bcf8a);})[_0xd85e('0x1f')](function(_0x33cb8f){_0x18641f[_0xd85e('0x50')]=_0x33cb8f;return _0x18641f;})['then'](respondWithFilteredResult(_0x166424,_0x3bcf8a))[_0xd85e('0x29')](handleError(_0x166424,null));};exports[_0xd85e('0x51')]=function(_0x271953,_0x16b7e4){var _0x25ebfc={'raw':!![],'where':{'id':_0x271953[_0xd85e('0x52')]['id']}},_0x46fa46={};_0x46fa46['model']=_['keys'](db['SmsMessage'][_0xd85e('0x3c')]);_0x46fa46['query']=_['keys'](_0x271953['query']);_0x46fa46[_0xd85e('0x42')]=_[_0xd85e('0x43')](_0x46fa46[_0xd85e('0x3f')],_0x46fa46[_0xd85e('0x41')]);_0x25ebfc[_0xd85e('0x44')]=_[_0xd85e('0x43')](_0x46fa46[_0xd85e('0x3f')],qs['fields'](_0x271953['query'][_0xd85e('0x45')]));_0x25ebfc[_0xd85e('0x44')]=_0x25ebfc['attributes'][_0xd85e('0x46')]?_0x25ebfc['attributes']:_0x46fa46['model'];if(_0x271953[_0xd85e('0x41')]['includeAll']){_0x25ebfc['include']=[{'all':!![]}];}_0x25ebfc=_[_0xd85e('0x4c')]({},_0x25ebfc,_0x271953[_0xd85e('0x4d')]);return db[_0xd85e('0x3b')][_0xd85e('0x53')](_0x25ebfc)[_0xd85e('0x1f')](handleEntityNotFound(_0x16b7e4,null))['then'](respondWithResult(_0x16b7e4,null))[_0xd85e('0x29')](handleError(_0x16b7e4,null));};exports[_0xd85e('0x54')]=function(_0x221863,_0x583c88){return db[_0xd85e('0x3b')][_0xd85e('0x54')](_0x221863[_0xd85e('0x55')],{})[_0xd85e('0x1f')](respondWithResult(_0x583c88,0xc9))['catch'](handleError(_0x583c88,null));};exports['update']=function(_0x17a047,_0x3d0682){if(_0x17a047[_0xd85e('0x55')]['id']){delete _0x17a047[_0xd85e('0x55')]['id'];}return db[_0xd85e('0x3b')][_0xd85e('0x53')]({'where':{'id':_0x17a047['params']['id']}})['then'](handleEntityNotFound(_0x3d0682,null))[_0xd85e('0x1f')](saveUpdates(_0x17a047['body'],null))[_0xd85e('0x1f')](respondWithResult(_0x3d0682,null))['catch'](handleError(_0x3d0682,null));};exports[_0xd85e('0x36')]=function(_0x276d9a,_0x214747){return db[_0xd85e('0x3b')][_0xd85e('0x53')]({'where':{'id':_0x276d9a[_0xd85e('0x52')]['id']}})[_0xd85e('0x1f')](handleEntityNotFound(_0x214747,null))['then'](removeEntity(_0x214747,null))[_0xd85e('0x29')](handleError(_0x214747,null));};exports['describe']=function(_0x11ccea,_0x390185){return db[_0xd85e('0x3b')][_0xd85e('0x56')]()[_0xd85e('0x1f')](respondWithResult(_0x390185,null))['catch'](handleError(_0x390185,null));};var interaction_log=require(_0xd85e('0x11'))(_0xd85e('0x57'));exports[_0xd85e('0x58')]=function(_0x4225ff,_0x2d33a1,_0x513588){var _0x26abbe={'agent':{},'channel':_0xd85e('0x59')};if(_0x4225ff[_0xd85e('0x55')]['id']){delete _0x4225ff[_0xd85e('0x55')]['id'];}_0x4225ff['body'][_0xd85e('0x5a')]=!![];_0x4225ff['body']['readAt']=moment()[_0xd85e('0x5b')](_0xd85e('0x5c'));_0x4225ff[_0xd85e('0x55')][_0xd85e('0x5d')]=_0x4225ff[_0xd85e('0x55')]['UserId']||_0x4225ff[_0xd85e('0x5e')]['id'];_0x26abbe[_0xd85e('0x5f')]['id']=_0x4225ff[_0xd85e('0x55')][_0xd85e('0x5d')];return db[_0xd85e('0x3b')][_0xd85e('0x53')]({'where':{'id':_0x4225ff[_0xd85e('0x52')]['id'],'UserId':null}})[_0xd85e('0x1f')](handleEntityNotFound(_0x2d33a1,null))[_0xd85e('0x1f')](saveUpdates(_0x4225ff[_0xd85e('0x55')],null))[_0xd85e('0x1f')](function(_0x52e7af){if(_0x52e7af){_0x26abbe[_0xd85e('0x26')]=_0x52e7af[_0xd85e('0x60')]({'plain':!![]});return db[_0xd85e('0x61')][_0xd85e('0x53')]({'where':{'id':_0x52e7af['SmsInteractionId']}});}return null;})[_0xd85e('0x1f')](handleEntityNotFound(_0x2d33a1,null))['then'](function(_0x3bd129){if(_0x3bd129){return _0x3bd129[_0xd85e('0x62')]({'UserId':_0x4225ff[_0xd85e('0x55')]['UserId'],'read1stAt':_['isNil'](_0x3bd129['read1stAt'])?moment()[_0xd85e('0x5b')](_0xd85e('0x5c')):undefined});}return null;})[_0xd85e('0x1f')](function(_0x1a963f){if(_0x1a963f){_0x26abbe['interaction']=_0x1a963f[_0xd85e('0x60')]({'plain':!![]});interaction_log[_0xd85e('0x27')](_0xd85e('0x63'),_0x4225ff['user']['id'],_0x4225ff['user'][_0xd85e('0x37')],_0x4225ff[_0xd85e('0x5e')][_0xd85e('0x64')],_0x26abbe['interaction']['id'],_0x4225ff[_0xd85e('0x55')]?JSON['stringify'](_0x4225ff[_0xd85e('0x55')]):_0xd85e('0x65'));return respondWithRpcPromise(_0xd85e('0x66'),_0xd85e('0x67'),_0x26abbe);}return null;})[_0xd85e('0x1f')](function(_0x20c5e0){var _0x425661='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x20c5e0['message']['ContactId'];return db['sequelize'][_0xd85e('0x41')](_0x425661,{'type':db['Sequelize'][_0xd85e('0x68')][_0xd85e('0x69')],'raw':!![]})[_0xd85e('0x1f')](function(_0x5c9f73){return _0x5c9f73;});})[_0xd85e('0x1f')](function(_0x22443f){if(_0x22443f){_0x26abbe[_0xd85e('0x26')][_0xd85e('0x6a')]=_0x22443f[0x0];if(!_0x4225ff[_0xd85e('0x55')]['UserId'])return;return db['User'][_0xd85e('0x53')]({'where':{'id':_0x4225ff['body']['UserId'],'role':'agent'},'attributes':['id','name',_0xd85e('0x6b'),_0xd85e('0x6c'),_0xd85e('0x6d')],'raw':!![]});}return null;})[_0xd85e('0x1f')](function(_0x18b407){if(!_0x18b407)return null;_0x26abbe[_0xd85e('0x26')][_0xd85e('0x5f')]=_0x18b407;return _0x26abbe;})[_0xd85e('0x1f')](function(_0x547d04){if(_0x547d04){if(_0x4225ff['body'][_0xd85e('0x6e')]){_0x26abbe[_0xd85e('0x26')][_0xd85e('0x6f')]=util[_0xd85e('0x5b')](_0xd85e('0x70'),_0x4225ff[_0xd85e('0x5e')][_0xd85e('0x37')]);_0x26abbe[_0xd85e('0x26')][_0xd85e('0x71')]=_0x26abbe[_0xd85e('0x71')];_0x26abbe['message'][_0xd85e('0x72')]=_0x26abbe[_0xd85e('0x71')];_0x26abbe[_0xd85e('0x26')]['event']=_0xd85e('0x58');return respondWithRpcPromise(_0xd85e('0x73'),_0xd85e('0x73'),{'event':_0xd85e('0x74'),'message':_0x26abbe['message']},client9002)[_0xd85e('0x1f')](function(){return _0x26abbe;});}return _0x26abbe;}return null;})['then'](respondWithResult(_0x2d33a1,null))[_0xd85e('0x29')](handleError(_0x2d33a1,null));};var interaction_log=require(_0xd85e('0x11'))(_0xd85e('0x57'));exports[_0xd85e('0x34')]=function(_0x3fe5c6,_0x250488,_0x2c4c03){var _0x23b7ed={'agent':{},'channel':_0xd85e('0x59')};if(_0x3fe5c6['body']['id']){delete _0x3fe5c6[_0xd85e('0x55')]['id'];}_0x3fe5c6[_0xd85e('0x55')][_0xd85e('0x5d')]=_0x3fe5c6['body'][_0xd85e('0x5d')]||_0x3fe5c6['user']['id'];_0x23b7ed[_0xd85e('0x5f')]['id']=_0x3fe5c6[_0xd85e('0x55')][_0xd85e('0x5d')];return db[_0xd85e('0x3b')]['find']({'where':{'id':_0x3fe5c6['params']['id'],'UserId':null}})[_0xd85e('0x1f')](handleEntityNotFound(_0x250488,null))[_0xd85e('0x1f')](function(_0x1cd5c3){if(_0x1cd5c3){_0x23b7ed[_0xd85e('0x26')]=_0x1cd5c3['get']({'plain':!![]});return db['SmsInteraction'][_0xd85e('0x53')]({'where':{'id':_0x1cd5c3[_0xd85e('0x75')]}});}return null;})[_0xd85e('0x1f')](handleEntityNotFound(_0x250488,null))[_0xd85e('0x1f')](function(_0xb2201f){if(_0xb2201f){_0x23b7ed[_0xd85e('0x76')]=_0xb2201f[_0xd85e('0x60')]({'plain':!![]});interaction_log[_0xd85e('0x27')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3fe5c6['user']['id'],_0x3fe5c6[_0xd85e('0x5e')][_0xd85e('0x37')],_0x3fe5c6[_0xd85e('0x5e')]['role'],_0x23b7ed['interaction']['id'],_0x3fe5c6[_0xd85e('0x55')]?JSON[_0xd85e('0x23')](_0x3fe5c6['body']):_0xd85e('0x65'));return respondWithRpcPromise(_0xd85e('0x77'),_0xd85e('0x78'),_0x23b7ed);}return null;})['then'](function(_0x2defd3){var _0x37edfe='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2defd3['message'][_0xd85e('0x79')];return db['sequelize'][_0xd85e('0x41')](_0x37edfe,{'type':db[_0xd85e('0x7a')][_0xd85e('0x68')][_0xd85e('0x69')],'raw':!![]})[_0xd85e('0x1f')](function(_0x111cd0){return _0x111cd0;});})[_0xd85e('0x1f')](function(_0x4ad937){if(_0x4ad937){_0x23b7ed[_0xd85e('0x26')]['contact']=_0x4ad937[0x0];if(!_0x3fe5c6['body'][_0xd85e('0x5d')])return;return db[_0xd85e('0x7b')][_0xd85e('0x53')]({'where':{'id':_0x3fe5c6[_0xd85e('0x55')]['UserId'],'role':_0xd85e('0x5f')},'attributes':['id',_0xd85e('0x37'),_0xd85e('0x6b'),'email',_0xd85e('0x6d')],'raw':!![]});}return null;})[_0xd85e('0x1f')](function(_0x4bef85){if(!_0x4bef85)return null;_0x23b7ed['message'][_0xd85e('0x5f')]=_0x4bef85;return _0x23b7ed;})[_0xd85e('0x1f')](function(_0x409e70){if(_0x409e70){_0x409e70['message'][_0xd85e('0x6f')]=util[_0xd85e('0x5b')](_0xd85e('0x70'),_0x3fe5c6[_0xd85e('0x5e')][_0xd85e('0x37')]);_0x409e70[_0xd85e('0x26')][_0xd85e('0x71')]=_0x23b7ed['channel'];_0x409e70[_0xd85e('0x26')][_0xd85e('0x72')]=_0x23b7ed['channel'];_0x409e70[_0xd85e('0x26')]['event']=_0xd85e('0x34');respondWithRpcPromise(_0xd85e('0x73'),'EventManager',{'event':_0xd85e('0x7c'),'message':_0x409e70['message']},client9002);return _0x23b7ed;}return null;})['then'](respondWithResult(_0x250488,null))[_0xd85e('0x29')](handleError(_0x250488,null));};exports['status']=function(_0x2af69c,_0x3baeee,_0x471dbb){if(_0x2af69c[_0xd85e('0x55')]['id']){delete _0x2af69c['body']['id'];}var _0x22b922;return db[_0xd85e('0x3b')][_0xd85e('0x53')]({'where':{'id':_0x2af69c[_0xd85e('0x52')]['id']}})['then'](handleEntityNotFound(_0x3baeee,null))[_0xd85e('0x1f')](function(_0x5b0180){if(_0x5b0180){_0x22b922=_0x5b0180;return db['SmsAccount']['find']({'where':{'id':_0x5b0180[_0xd85e('0x7d')]}});}})[_0xd85e('0x1f')](handleEntityNotFound(_0x3baeee,null))[_0xd85e('0x1f')](function(_0x49d694){if(_0x49d694){logger[_0xd85e('0x21')](_0xd85e('0x22'),'status',_0xd85e('0x7e'),_0x49d694[_0xd85e('0x3d')],util[_0xd85e('0x7f')](_0x2af69c[_0xd85e('0x55')],{'showHidden':![],'depth':null}));switch(_0x49d694[_0xd85e('0x3d')]){case'twilio':if(_0x2af69c['body'][_0xd85e('0x80')]&&_0x2af69c[_0xd85e('0x55')][_0xd85e('0x80')]===_0x22b922[_0xd85e('0x81')]){return _0x22b922['update']({'read':!![]});}else{logger[_0xd85e('0x24')](_0xd85e('0x82'),_0xd85e('0x2c'),_0xd85e('0x83'),util[_0xd85e('0x7f')](_0x2af69c[_0xd85e('0x55')],{'showHidden':![],'depth':null}));}break;case _0xd85e('0x84'):if(_0x2af69c['body']['MessageUUID']&&_0x2af69c['body'][_0xd85e('0x85')]===_0x22b922[_0xd85e('0x81')]&&_[_0xd85e('0x86')](['sent',_0xd85e('0x87')],_0x2af69c[_0xd85e('0x55')][_0xd85e('0x88')])>=0x0){return _0x22b922['update']({'read':!![]});}else{logger[_0xd85e('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd85e('0x2c'),_0xd85e('0x89'),util[_0xd85e('0x7f')](_0x2af69c[_0xd85e('0x55')],{'showHidden':![],'depth':null}));}break;case _0xd85e('0x8a'):var _0x3c0001=_0x2af69c[_0xd85e('0x55')]['results'][0x0];if(_0x3c0001['status'][_0xd85e('0x8b')]===_0xd85e('0x8c')){return _0x22b922['update']({'read':!![]});}else{logger[_0xd85e('0x24')](_0xd85e('0x82'),'status',_0xd85e('0x8a'),util[_0xd85e('0x7f')](_0x2af69c[_0xd85e('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x22b922;}})['then'](respondWithResult(_0x3baeee,null))['catch'](handleError(_0x3baeee,null));};
\ No newline at end of file
+var _0x4808=['[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','SmsInteraction','RejectMessage','rejectMessage','sequelize','SELECT','rejectmessage','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','delivered','Status','plivio','inspect','infobip','results','groupName','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','http','client','request','debug','request\x20sent','error','code','SmsMessage,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','SmsMessage','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','length','include','create','body','find','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteractionId','read1stAt','interaction'];(function(_0x39871f,_0x42cbeb){var _0x1c1fd0=function(_0x36ae54){while(--_0x36ae54){_0x39871f['push'](_0x39871f['shift']());}};_0x1c1fd0(++_0x42cbeb);}(_0x4808,0x160));var _0x8480=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x4808[_0x21549c];return _0x426cbd;};'use strict';var emlformat=require(_0x8480('0x0'));var rimraf=require(_0x8480('0x1'));var zipdir=require(_0x8480('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8480('0x3'));var moment=require('moment');var BPromise=require(_0x8480('0x4'));var Mustache=require(_0x8480('0x5'));var util=require(_0x8480('0x6'));var path=require('path');var sox=require(_0x8480('0x7'));var csv=require(_0x8480('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8480('0x9'));var _=require('lodash');var squel=require(_0x8480('0xa'));var crypto=require('crypto');var jsforce=require(_0x8480('0xb'));var deskjs=require(_0x8480('0xc'));var toCsv=require(_0x8480('0x8'));var querystring=require(_0x8480('0xd'));var Papa=require(_0x8480('0xe'));var Redis=require('ioredis');var authService=require(_0x8480('0xf'));var qs=require(_0x8480('0x10'));var as=require(_0x8480('0x11'));var hardwareService=require(_0x8480('0x12'));var logger=require(_0x8480('0x13'))(_0x8480('0x14'));var utils=require(_0x8480('0x15'));var config=require(_0x8480('0x16'));var licenseUtil=require(_0x8480('0x17'));var db=require(_0x8480('0x18'))['db'];config[_0x8480('0x19')]=_[_0x8480('0x1a')](config[_0x8480('0x19')],{'host':_0x8480('0x1b'),'port':0x18eb});var socket=require(_0x8480('0x1c'))(new Redis(config[_0x8480('0x19')]));require(_0x8480('0x1d'))[_0x8480('0x1e')](socket);var jayson=require(_0x8480('0x1f'));var client=jayson['client'][_0x8480('0x20')]({'port':0x232c});var client9002=jayson[_0x8480('0x21')][_0x8480('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5d2ee2,_0x12ead9,_0x2b6f56,_0x118b2c){return new BPromise(function(_0x35dd6a,_0x34c687){var _0x3eb3ed=_0x118b2c||client;return _0x3eb3ed[_0x8480('0x22')](_0x5d2ee2,_0x2b6f56)['then'](function(_0x2a55f1){logger['info']('SmsMessage,\x20%s,\x20%s',_0x12ead9,'request\x20sent');logger[_0x8480('0x23')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x12ead9,_0x8480('0x24'),JSON['stringify'](_0x2a55f1));if(_0x2a55f1[_0x8480('0x25')]){if(_0x2a55f1[_0x8480('0x25')][_0x8480('0x26')]===0x1f4){logger['error'](_0x8480('0x27'),_0x12ead9,_0x2a55f1[_0x8480('0x25')][_0x8480('0x28')]);return _0x34c687(_0x2a55f1[_0x8480('0x25')]['message']);}logger['error'](_0x8480('0x27'),_0x12ead9,_0x2a55f1[_0x8480('0x25')][_0x8480('0x28')]);return _0x35dd6a(_0x2a55f1[_0x8480('0x25')]['message']);}else{logger[_0x8480('0x29')]('SmsMessage,\x20%s,\x20%s',_0x12ead9,'request\x20sent');_0x35dd6a(_0x2a55f1[_0x8480('0x2a')][_0x8480('0x28')]);}})[_0x8480('0x2b')](function(_0x49245c){logger[_0x8480('0x25')]('SmsMessage,\x20%s,\x20%s',_0x12ead9,_0x49245c);_0x34c687(_0x49245c);});});}function respondWithStatusCode(_0x19f056,_0x304d17){_0x304d17=_0x304d17||0xcc;return function(_0x5e64eb){if(_0x5e64eb){return _0x19f056[_0x8480('0x2c')](_0x304d17);}return _0x19f056[_0x8480('0x2d')](_0x304d17)[_0x8480('0x2e')]();};}function respondWithResult(_0x45a6a7,_0xd3e0d8){_0xd3e0d8=_0xd3e0d8||0xc8;return function(_0x4e6577){if(_0x4e6577){return _0x45a6a7[_0x8480('0x2d')](_0xd3e0d8)[_0x8480('0x2f')](_0x4e6577);}};}function respondWithFilteredResult(_0x53663c,_0x845033){return function(_0x24f7b4){if(_0x24f7b4){var _0x203981=typeof _0x845033[_0x8480('0x30')]==='undefined'&&typeof _0x845033['limit']==='undefined';var _0x5a1d25=_0x24f7b4[_0x8480('0x31')];var _0x145319=_0x203981?0x0:_0x845033[_0x8480('0x30')];var _0x2286b7=_0x203981?_0x24f7b4['count']:_0x845033[_0x8480('0x30')]+_0x845033['limit'];var _0xea820e;if(_0x2286b7>=_0x5a1d25){_0x2286b7=_0x5a1d25;_0xea820e=0xc8;}else{_0xea820e=0xce;}_0x53663c['status'](_0xea820e);return _0x53663c[_0x8480('0x32')](_0x8480('0x33'),_0x145319+'-'+_0x2286b7+'/'+_0x5a1d25)[_0x8480('0x2f')](_0x24f7b4);}return null;};}function patchUpdates(_0x27ee42){return function(_0x4495b1){try{jsonpatch[_0x8480('0x34')](_0x4495b1,_0x27ee42,!![]);}catch(_0x2a4218){return BPromise[_0x8480('0x35')](_0x2a4218);}return _0x4495b1[_0x8480('0x36')]();};}function saveUpdates(_0xaf0e75,_0x9398f0){return function(_0xb27b3){if(_0xb27b3){return _0xb27b3[_0x8480('0x37')](_0xaf0e75)[_0x8480('0x38')](function(_0x158750){return _0x158750;});}return null;};}function removeEntity(_0x58441c,_0x38c90a){return function(_0x881f3e){if(_0x881f3e){return _0x881f3e[_0x8480('0x39')]()[_0x8480('0x38')](function(){_0x58441c[_0x8480('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13a699,_0xb6284f){return function(_0x16e471){if(!_0x16e471){_0x13a699[_0x8480('0x2c')](0x194);}return _0x16e471;};}function handleError(_0x262e40,_0x150bdb){_0x150bdb=_0x150bdb||0x1f4;return function(_0x36fc10){logger[_0x8480('0x25')](_0x36fc10[_0x8480('0x3a')]);if(_0x36fc10[_0x8480('0x3b')]){delete _0x36fc10[_0x8480('0x3b')];}_0x262e40[_0x8480('0x2d')](_0x150bdb)[_0x8480('0x3c')](_0x36fc10);};}exports[_0x8480('0x3d')]=function(_0x2d7d0c,_0x5cf36b){var _0x57da31={},_0x3038e4={},_0x52fbde={'count':0x0,'rows':[]};var _0x4d5e1f=_['map'](db[_0x8480('0x3e')][_0x8480('0x3f')],function(_0x498c1a){return{'name':_0x498c1a['fieldName'],'type':_0x498c1a[_0x8480('0x40')][_0x8480('0x41')]};});_0x3038e4[_0x8480('0x42')]=_[_0x8480('0x43')](_0x4d5e1f,_0x8480('0x3b'));_0x3038e4[_0x8480('0x44')]=_['keys'](_0x2d7d0c[_0x8480('0x44')]);_0x3038e4[_0x8480('0x45')]=_[_0x8480('0x46')](_0x3038e4[_0x8480('0x42')],_0x3038e4[_0x8480('0x44')]);_0x57da31[_0x8480('0x47')]=_[_0x8480('0x46')](_0x3038e4[_0x8480('0x42')],qs[_0x8480('0x48')](_0x2d7d0c[_0x8480('0x44')]['fields']));_0x57da31[_0x8480('0x47')]=_0x57da31['attributes']['length']?_0x57da31[_0x8480('0x47')]:_0x3038e4['model'];if(!_0x2d7d0c[_0x8480('0x44')][_0x8480('0x49')](_0x8480('0x4a'))){_0x57da31['limit']=qs[_0x8480('0x4b')](_0x2d7d0c[_0x8480('0x44')][_0x8480('0x4b')]);_0x57da31['offset']=qs[_0x8480('0x30')](_0x2d7d0c['query'][_0x8480('0x30')]);}_0x57da31[_0x8480('0x4c')]=qs[_0x8480('0x4d')](_0x2d7d0c['query']['sort']);_0x57da31[_0x8480('0x4e')]=qs[_0x8480('0x45')](_[_0x8480('0x4f')](_0x2d7d0c[_0x8480('0x44')],_0x3038e4['filters']),_0x4d5e1f);if(_0x2d7d0c[_0x8480('0x44')][_0x8480('0x50')]){_0x57da31['where']=_[_0x8480('0x51')](_0x57da31[_0x8480('0x4e')],{'$or':_['map'](_0x4d5e1f,function(_0x4b304e){if(_0x4b304e['type']!==_0x8480('0x52')){var _0x519029={};_0x519029[_0x4b304e[_0x8480('0x3b')]]={'$like':'%'+_0x2d7d0c[_0x8480('0x44')][_0x8480('0x50')]+'%'};return _0x519029;}})});}_0x57da31=_[_0x8480('0x51')]({},_0x57da31,_0x2d7d0c[_0x8480('0x53')]);var _0x57dc93={'where':_0x57da31['where']};return db['SmsMessage'][_0x8480('0x31')](_0x57dc93)[_0x8480('0x38')](function(_0x375a91){_0x52fbde[_0x8480('0x31')]=_0x375a91;if(_0x2d7d0c['query'][_0x8480('0x54')]){_0x57da31['include']=[{'all':!![]}];}return db[_0x8480('0x3e')][_0x8480('0x55')](_0x57da31);})['then'](function(_0x5752dd){_0x52fbde[_0x8480('0x56')]=_0x5752dd;return _0x52fbde;})['then'](respondWithFilteredResult(_0x5cf36b,_0x57da31))[_0x8480('0x2b')](handleError(_0x5cf36b,null));};exports[_0x8480('0x57')]=function(_0x418e95,_0x22c909){var _0x38e97a={'raw':!![],'where':{'id':_0x418e95[_0x8480('0x58')]['id']}},_0x834f34={};_0x834f34[_0x8480('0x42')]=_[_0x8480('0x59')](db[_0x8480('0x3e')][_0x8480('0x3f')]);_0x834f34[_0x8480('0x44')]=_[_0x8480('0x59')](_0x418e95[_0x8480('0x44')]);_0x834f34[_0x8480('0x45')]=_['intersection'](_0x834f34[_0x8480('0x42')],_0x834f34[_0x8480('0x44')]);_0x38e97a[_0x8480('0x47')]=_['intersection'](_0x834f34['model'],qs[_0x8480('0x48')](_0x418e95[_0x8480('0x44')][_0x8480('0x48')]));_0x38e97a[_0x8480('0x47')]=_0x38e97a[_0x8480('0x47')][_0x8480('0x5a')]?_0x38e97a['attributes']:_0x834f34[_0x8480('0x42')];if(_0x418e95[_0x8480('0x44')]['includeAll']){_0x38e97a[_0x8480('0x5b')]=[{'all':!![]}];}_0x38e97a=_[_0x8480('0x51')]({},_0x38e97a,_0x418e95[_0x8480('0x53')]);return db[_0x8480('0x3e')]['find'](_0x38e97a)[_0x8480('0x38')](handleEntityNotFound(_0x22c909,null))[_0x8480('0x38')](respondWithResult(_0x22c909,null))[_0x8480('0x2b')](handleError(_0x22c909,null));};exports[_0x8480('0x5c')]=function(_0x298364,_0x3df56c){return db[_0x8480('0x3e')][_0x8480('0x5c')](_0x298364[_0x8480('0x5d')],{})[_0x8480('0x38')](respondWithResult(_0x3df56c,0xc9))['catch'](handleError(_0x3df56c,null));};exports[_0x8480('0x37')]=function(_0xd7fd0,_0x2f2ee6){if(_0xd7fd0['body']['id']){delete _0xd7fd0[_0x8480('0x5d')]['id'];}return db['SmsMessage'][_0x8480('0x5e')]({'where':{'id':_0xd7fd0[_0x8480('0x58')]['id']}})[_0x8480('0x38')](handleEntityNotFound(_0x2f2ee6,null))[_0x8480('0x38')](saveUpdates(_0xd7fd0[_0x8480('0x5d')],null))[_0x8480('0x38')](respondWithResult(_0x2f2ee6,null))['catch'](handleError(_0x2f2ee6,null));};exports[_0x8480('0x39')]=function(_0x4cf8c5,_0x45416e){return db[_0x8480('0x3e')][_0x8480('0x5e')]({'where':{'id':_0x4cf8c5[_0x8480('0x58')]['id']}})[_0x8480('0x38')](handleEntityNotFound(_0x45416e,null))[_0x8480('0x38')](removeEntity(_0x45416e,null))[_0x8480('0x2b')](handleError(_0x45416e,null));};exports['describe']=function(_0x593b47,_0x4c5de0){return db['SmsMessage'][_0x8480('0x5f')]()['then'](respondWithResult(_0x4c5de0,null))['catch'](handleError(_0x4c5de0,null));};var interaction_log=require(_0x8480('0x13'))(_0x8480('0x60'));exports[_0x8480('0x61')]=function(_0x2a5633,_0x5a29d4,_0x3b6503){var _0x1ac480={'agent':{},'channel':_0x8480('0x62')};if(_0x2a5633[_0x8480('0x5d')]['id']){delete _0x2a5633['body']['id'];}_0x2a5633[_0x8480('0x5d')][_0x8480('0x63')]=!![];_0x2a5633[_0x8480('0x5d')][_0x8480('0x64')]=moment()[_0x8480('0x65')](_0x8480('0x66'));_0x2a5633[_0x8480('0x5d')][_0x8480('0x67')]=_0x2a5633[_0x8480('0x5d')]['UserId']||_0x2a5633[_0x8480('0x68')]['id'];_0x1ac480[_0x8480('0x69')]['id']=_0x2a5633['body'][_0x8480('0x67')];return db[_0x8480('0x3e')]['find']({'where':{'id':_0x2a5633[_0x8480('0x58')]['id'],'UserId':null}})[_0x8480('0x38')](handleEntityNotFound(_0x5a29d4,null))[_0x8480('0x38')](saveUpdates(_0x2a5633[_0x8480('0x5d')],null))['then'](function(_0x468787){if(_0x468787){_0x1ac480[_0x8480('0x28')]=_0x468787[_0x8480('0x6a')]({'plain':!![]});return db['SmsInteraction'][_0x8480('0x5e')]({'where':{'id':_0x468787[_0x8480('0x6b')]}});}return null;})[_0x8480('0x38')](handleEntityNotFound(_0x5a29d4,null))[_0x8480('0x38')](function(_0x8796c3){if(_0x8796c3){return _0x8796c3[_0x8480('0x37')]({'UserId':_0x2a5633[_0x8480('0x5d')][_0x8480('0x67')],'read1stAt':_['isNil'](_0x8796c3[_0x8480('0x6c')])?moment()[_0x8480('0x65')](_0x8480('0x66')):undefined});}return null;})[_0x8480('0x38')](function(_0x254e8d){if(_0x254e8d){_0x1ac480[_0x8480('0x6d')]=_0x254e8d[_0x8480('0x6a')]({'plain':!![]});interaction_log[_0x8480('0x29')](_0x8480('0x6e'),_0x2a5633[_0x8480('0x68')]['id'],_0x2a5633[_0x8480('0x68')][_0x8480('0x3b')],_0x2a5633['user'][_0x8480('0x6f')],_0x1ac480['interaction']['id'],_0x2a5633[_0x8480('0x5d')]?JSON[_0x8480('0x70')](_0x2a5633[_0x8480('0x5d')]):_0x8480('0x71'));return respondWithRpcPromise(_0x8480('0x72'),'acceptMessage',_0x1ac480);}return null;})['then'](function(_0x130ef1){var _0x24fd35=_0x8480('0x73')+_0x130ef1[_0x8480('0x28')][_0x8480('0x74')];return db['sequelize'][_0x8480('0x44')](_0x24fd35,{'type':db[_0x8480('0x75')][_0x8480('0x76')]['SELECT'],'raw':!![]})[_0x8480('0x38')](function(_0x1e49b4){return _0x1e49b4;});})[_0x8480('0x38')](function(_0x5b4be3){if(_0x5b4be3){_0x1ac480[_0x8480('0x28')]['contact']=_0x5b4be3[0x0];if(!_0x2a5633['body'][_0x8480('0x67')])return;return db[_0x8480('0x77')][_0x8480('0x5e')]({'where':{'id':_0x2a5633['body']['UserId'],'role':'agent'},'attributes':['id',_0x8480('0x3b'),_0x8480('0x78'),_0x8480('0x79'),_0x8480('0x7a')],'raw':!![]});}return null;})[_0x8480('0x38')](function(_0x5bc8cf){if(!_0x5bc8cf)return null;_0x1ac480[_0x8480('0x28')]['agent']=_0x5bc8cf;return _0x1ac480;})['then'](function(_0x3dbcc7){if(_0x3dbcc7){if(_0x2a5633['body'][_0x8480('0x7b')]){_0x1ac480[_0x8480('0x28')][_0x8480('0x7c')]=util[_0x8480('0x65')](_0x8480('0x7d'),_0x2a5633[_0x8480('0x68')]['name']);_0x1ac480['message'][_0x8480('0x7e')]=_0x1ac480['channel'];_0x1ac480[_0x8480('0x28')][_0x8480('0x7f')]=_0x1ac480[_0x8480('0x7e')];_0x1ac480['message'][_0x8480('0x80')]='accept';return respondWithRpcPromise(_0x8480('0x81'),_0x8480('0x81'),{'event':_0x8480('0x82'),'message':_0x1ac480['message']},client9002)['then'](function(){return _0x1ac480;});}return _0x1ac480;}return null;})['then'](respondWithResult(_0x5a29d4,null))[_0x8480('0x2b')](handleError(_0x5a29d4,null));};var interaction_log=require(_0x8480('0x13'))(_0x8480('0x60'));exports['reject']=function(_0x358f07,_0x59c62c,_0x1e41cb){var _0x2a1e24={'agent':{},'channel':_0x8480('0x62')};if(_0x358f07['body']['id']){delete _0x358f07[_0x8480('0x5d')]['id'];}_0x358f07[_0x8480('0x5d')][_0x8480('0x67')]=_0x358f07['body'][_0x8480('0x67')]||_0x358f07['user']['id'];_0x2a1e24[_0x8480('0x69')]['id']=_0x358f07[_0x8480('0x5d')][_0x8480('0x67')];return db[_0x8480('0x3e')][_0x8480('0x5e')]({'where':{'id':_0x358f07[_0x8480('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x59c62c,null))[_0x8480('0x38')](function(_0x318b50){if(_0x318b50){_0x2a1e24[_0x8480('0x28')]=_0x318b50[_0x8480('0x6a')]({'plain':!![]});return db[_0x8480('0x83')][_0x8480('0x5e')]({'where':{'id':_0x318b50[_0x8480('0x6b')]}});}return null;})[_0x8480('0x38')](handleEntityNotFound(_0x59c62c,null))[_0x8480('0x38')](function(_0x298032){if(_0x298032){_0x2a1e24[_0x8480('0x6d')]=_0x298032[_0x8480('0x6a')]({'plain':!![]});interaction_log[_0x8480('0x29')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x358f07['user']['id'],_0x358f07[_0x8480('0x68')][_0x8480('0x3b')],_0x358f07[_0x8480('0x68')][_0x8480('0x6f')],_0x2a1e24[_0x8480('0x6d')]['id'],_0x358f07[_0x8480('0x5d')]?JSON[_0x8480('0x70')](_0x358f07['body']):_0x8480('0x71'));return respondWithRpcPromise(_0x8480('0x84'),_0x8480('0x85'),_0x2a1e24);}return null;})[_0x8480('0x38')](function(_0x3ff62b){var _0x431d7a=_0x8480('0x73')+_0x3ff62b['message']['ContactId'];return db[_0x8480('0x86')][_0x8480('0x44')](_0x431d7a,{'type':db[_0x8480('0x75')][_0x8480('0x76')][_0x8480('0x87')],'raw':!![]})['then'](function(_0x241e03){return _0x241e03;});})['then'](function(_0x265314){if(_0x265314){_0x2a1e24[_0x8480('0x28')]['contact']=_0x265314[0x0];if(!_0x358f07['body'][_0x8480('0x67')])return;return db['User']['find']({'where':{'id':_0x358f07[_0x8480('0x5d')][_0x8480('0x67')],'role':_0x8480('0x69')},'attributes':['id','name',_0x8480('0x78'),_0x8480('0x79'),_0x8480('0x7a')],'raw':!![]});}return null;})['then'](function(_0x528494){if(!_0x528494)return null;_0x2a1e24['message']['agent']=_0x528494;return _0x2a1e24;})[_0x8480('0x38')](function(_0x5d06cd){if(_0x5d06cd){_0x5d06cd['message']['interface']=util[_0x8480('0x65')]('SIP/%s',_0x358f07['user'][_0x8480('0x3b')]);_0x5d06cd['message'][_0x8480('0x7e')]=_0x2a1e24[_0x8480('0x7e')];_0x5d06cd[_0x8480('0x28')][_0x8480('0x7f')]=_0x2a1e24[_0x8480('0x7e')];_0x5d06cd['message'][_0x8480('0x80')]='reject';respondWithRpcPromise(_0x8480('0x81'),_0x8480('0x81'),{'event':_0x8480('0x88'),'message':_0x5d06cd[_0x8480('0x28')]},client9002);return _0x2a1e24;}return null;})[_0x8480('0x38')](respondWithResult(_0x59c62c,null))['catch'](handleError(_0x59c62c,null));};exports[_0x8480('0x2d')]=function(_0x5e642f,_0x4aef1c,_0x3dea69){if(_0x5e642f['body']['id']){delete _0x5e642f['body']['id'];}var _0x938f0a;return db[_0x8480('0x3e')][_0x8480('0x5e')]({'where':{'id':_0x5e642f[_0x8480('0x58')]['id']}})[_0x8480('0x38')](handleEntityNotFound(_0x4aef1c,null))[_0x8480('0x38')](function(_0x520216){if(_0x520216){_0x938f0a=_0x520216;return db[_0x8480('0x89')][_0x8480('0x5e')]({'where':{'id':_0x520216[_0x8480('0x8a')]}});}})['then'](handleEntityNotFound(_0x4aef1c,null))['then'](function(_0x22b0bb){if(_0x22b0bb){logger[_0x8480('0x23')](_0x8480('0x8b'),_0x8480('0x2d'),_0x8480('0x8c'),_0x22b0bb[_0x8480('0x40')],util['inspect'](_0x5e642f['body'],{'showHidden':![],'depth':null}));switch(_0x22b0bb['type']){case'twilio':if(_0x5e642f[_0x8480('0x5d')][_0x8480('0x8d')]&&_0x5e642f['body'][_0x8480('0x8d')]===_0x938f0a[_0x8480('0x8e')]){return _0x938f0a[_0x8480('0x37')]({'read':!![]});}else{logger['error'](_0x8480('0x8f'),_0x8480('0x2d'),'twilio',util['inspect'](_0x5e642f[_0x8480('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8480('0x90'):if(_0x5e642f[_0x8480('0x5d')][_0x8480('0x91')]&&_0x5e642f[_0x8480('0x5d')][_0x8480('0x91')]===_0x938f0a[_0x8480('0x8e')]&&_['indexOf']([_0x8480('0x92'),_0x8480('0x93')],_0x5e642f[_0x8480('0x5d')][_0x8480('0x94')])>=0x0){return _0x938f0a[_0x8480('0x37')]({'read':!![]});}else{logger[_0x8480('0x25')](_0x8480('0x8f'),_0x8480('0x2d'),_0x8480('0x95'),util[_0x8480('0x96')](_0x5e642f[_0x8480('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x8480('0x97'):var _0x38f2ba=_0x5e642f['body'][_0x8480('0x98')][0x0];if(_0x38f2ba[_0x8480('0x2d')][_0x8480('0x99')]==='DELIVERED'){return _0x938f0a[_0x8480('0x37')]({'read':!![]});}else{logger[_0x8480('0x25')](_0x8480('0x8f'),_0x8480('0x2d'),_0x8480('0x97'),util[_0x8480('0x96')](_0x5e642f[_0x8480('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0x938f0a;}})[_0x8480('0x38')](respondWithResult(_0x4aef1c,null))[_0x8480('0x2b')](handleError(_0x4aef1c,null));};
\ No newline at end of file
index 61ea25e..54285d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4c9=['events','../../mysqldb','SmsMessage','setMaxListeners','update','emit','hasOwnProperty','hook','exports'];(function(_0x3c8d0c,_0x30b9f6){var _0x47b500=function(_0x29e84a){while(--_0x29e84a){_0x3c8d0c['push'](_0x3c8d0c['shift']());}};_0x47b500(++_0x30b9f6);}(_0xd4c9,0x6c));var _0x9d4c=function(_0x54b062,_0x264bb5){_0x54b062=_0x54b062-0x0;var _0x255e41=_0xd4c9[_0x54b062];return _0x255e41;};'use strict';var EventEmitter=require(_0x9d4c('0x0'));var SmsMessage=require(_0x9d4c('0x1'))['db'][_0x9d4c('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x9d4c('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9d4c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x43e56e){return function(_0xfd165d,_0x170ed9,_0x276a35){SmsMessageEvents[_0x9d4c('0x5')](_0x43e56e+':'+_0xfd165d['id'],_0xfd165d);SmsMessageEvents[_0x9d4c('0x5')](_0x43e56e,_0xfd165d);_0x276a35(null);};}for(var e in events){if(events[_0x9d4c('0x6')](e)){var event=events[e];SmsMessage[_0x9d4c('0x7')](e,emitEvent(event));}}module[_0x9d4c('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x9516=['hook','exports','events','update','remove','emit','hasOwnProperty'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0x9516,0x64));var _0x6951=function(_0x39acf8,_0x158e5a){_0x39acf8=_0x39acf8-0x0;var _0x378ac3=_0x9516[_0x39acf8];return _0x378ac3;};'use strict';var EventEmitter=require(_0x6951('0x0'));var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x6951('0x1'),'afterDestroy':_0x6951('0x2')};function emitEvent(_0x5dd9b3){return function(_0x3481ef,_0x8be8ed,_0x35f179){SmsMessageEvents[_0x6951('0x3')](_0x5dd9b3+':'+_0x3481ef['id'],_0x3481ef);SmsMessageEvents[_0x6951('0x3')](_0x5dd9b3,_0x3481ef);_0x35f179(null);};}for(var e in events){if(events[_0x6951('0x4')](e)){var event=events[e];SmsMessage[_0x6951('0x5')](e,emitEvent(event));}}module[_0x6951('0x6')]=SmsMessageEvents;
\ No newline at end of file
index 174fb80..5086dff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91bd=['login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','body','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data','head','messages','message_id','clickSend','plivo','authId','token','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','remote','/api/sms/messages/','application/json','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','sort','length','md5','digest','hex','signature=','keys','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','intelepeer','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','messageId','FULLTEXT','models','get','toLowerCase','direction','out','isNil','UserId','SmsInteractionId','SmsInteraction','then','update','createdAt','catch','secret','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','/status?token=','sid','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x91bd,0x14c));var _0xd91b=function(_0x2650e9,_0xb91cc){_0x2650e9=_0x2650e9-0x0;var _0x3511c8=_0x91bd[_0x2650e9];return _0x3511c8;};'use strict';var _=require('lodash');var util=require(_0xd91b('0x0'));var logger=require(_0xd91b('0x1'))(_0xd91b('0x2'));var moment=require(_0xd91b('0x3'));var BPromise=require(_0xd91b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd91b('0x5'));var rimraf=require(_0xd91b('0x6'));var config=require(_0xd91b('0x7'));var attributes=require('./smsMessage.attributes');module[_0xd91b('0x8')]=function(_0x333859,_0x292004){return _0x333859[_0xd91b('0x9')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0xd91b('0xa'),'fields':[_0xd91b('0xa')]},{'name':'fti_sms_messages','fields':['body'],'type':_0xd91b('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xc05fae,_0x2d5edb,_0x51e186){var _0x35e8a9=_0x333859[_0xd91b('0xc')];var _0x28f1ae=_0xc05fae[_0xd91b('0xd')]({'plain':!![]});if(_0x28f1ae['direction'][_0xd91b('0xe')]()==='in'||_0x28f1ae[_0xd91b('0xf')][_0xd91b('0xe')]()===_0xd91b('0x10')&&!_0x28f1ae['secret']&&!_[_0xd91b('0x11')](_0x28f1ae[_0xd91b('0x12')])&&!_[_0xd91b('0x11')](_0x28f1ae[_0xd91b('0x13')])){_0x35e8a9[_0xd91b('0x14')]['findOne']({'where':{'id':_0x28f1ae['SmsInteractionId']}})[_0xd91b('0x15')](function(_0x4c69cc){if(_0x4c69cc){_0x4c69cc[_0xd91b('0x16')]({'lastMsgAt':_0x28f1ae[_0xd91b('0x17')],'lastMsgDirection':_0x28f1ae[_0xd91b('0xf')][_0xd91b('0xe')]()});}})[_0xd91b('0x18')](function(_0x3d0b5d){console['error'](_0x3d0b5d);});}if(_0x28f1ae[_0xd91b('0xf')]===_0xd91b('0x10')&&!_0x28f1ae[_0xd91b('0x19')]){var _0x45710d;_0x35e8a9[_0xd91b('0x1a')][_0xd91b('0x1b')]({'where':{'id':_0x28f1ae[_0xd91b('0x1c')]},'raw':!![]})[_0xd91b('0x15')](function(_0xfa8ff4){_0x45710d=_0xfa8ff4;if(_0x45710d&&_0x45710d[_0xd91b('0x1d')]){switch(_0x45710d[_0xd91b('0x1d')]){case _0xd91b('0x1e'):var _0x867194=require(_0xd91b('0x1e'));if(_0x45710d[_0xd91b('0x1f')]&&_0x45710d[_0xd91b('0x20')]&&_0x45710d[_0xd91b('0x21')]){var _0x500485=new _0x867194(_0x45710d[_0xd91b('0x1f')],_0x45710d[_0xd91b('0x20')]);_0x500485['messages']['create']({'body':_0x28f1ae['body'],'to':_0x28f1ae[_0xd91b('0x21')],'from':_0x45710d[_0xd91b('0x21')],'statusCallback':_0x45710d['remote']+'/api/sms/messages/'+_0x28f1ae['id']+_0xd91b('0x22')+_0x45710d['token']})[_0xd91b('0x15')](function(_0x203411){if(_0x203411[_0xd91b('0x23')]){return _0xc05fae[_0xd91b('0x16')]({'messageId':_0x203411[_0xd91b('0x23')]});}})[_0xd91b('0x18')](function(_0x15362f){logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),'twilio',util[_0xd91b('0x27')](_0x15362f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x1e'),_0xd91b('0x28'));}break;case'skebby':var _0x22d315=_0xd91b('0x29');if(_0x45710d[_0xd91b('0x2a')]&&_0x45710d[_0xd91b('0x2b')]){var _0x44fb21={'recipient':[_0x28f1ae['phone']],'message':_0x28f1ae['body'],'message_type':_0x45710d[_0xd91b('0x2c')]};if(_0x45710d[_0xd91b('0x2c')]&&_0x45710d['smsMethod']!=='SI'){_0x44fb21[_0xd91b('0x2d')]=_0x45710d[_0xd91b('0x21')];}var _0x3c7706={'url':_0x22d315+_0xd91b('0x2e')+_0x45710d[_0xd91b('0x2a')]+_0xd91b('0x2f')+_0x45710d[_0xd91b('0x2b')],'method':_0xd91b('0x30')};rp(_0x3c7706)[_0xd91b('0x15')](function(_0x19b272){var _0x18a889=_0x19b272[_0xd91b('0x31')](';');var _0x9872af={'user_key':_0x18a889[0x0],'session_key':_0x18a889[0x1]};_0x3c7706={'url':_0x22d315+_0xd91b('0x32'),'method':_0xd91b('0x33'),'headers':{'user_key':_0x9872af[_0xd91b('0x34')],'Session_key':_0x9872af[_0xd91b('0x35')]},'json':!![],'body':_0x44fb21};return rp(_0x3c7706);})[_0xd91b('0x15')](function(_0xbd456d){if(_0xbd456d[_0xd91b('0x36')]>=0x1){var _0x4794b1={'messageId':_0xbd456d[_0xd91b('0x37')]};if(_0x45710d[_0xd91b('0x2c')]!=='GP'||!_0x45710d[_0xd91b('0x38')]){_0x4794b1[_0xd91b('0x39')]=!![];}return _0xc05fae[_0xd91b('0x16')](_0x4794b1);}else{return logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x3a'),util[_0xd91b('0x27')](_0xbd456d,{'showHidden':![],'depth':null}));}})[_0xd91b('0x18')](function(_0x8edc6f){return logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x3a'),util[_0xd91b('0x27')](_0x8edc6f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x3a'),_0xd91b('0x3b'));}break;case _0xd91b('0x3c'):if(_0x45710d[_0xd91b('0x20')]){var _0xb3d7fd={'recipient':_0x28f1ae[_0xd91b('0x21')],'message':_0x28f1ae[_0xd91b('0x3d')],'sender':_0x45710d['senderString']||_0x45710d[_0xd91b('0x21')],'authorization':_0x45710d[_0xd91b('0x20')]};var _0x2d5edb={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0xb3d7fd,'json':!![]};rp(_0x2d5edb)[_0xd91b('0x15')](function(_0x3e49d2){var _0x3ed61d={'messageId':_0x3e49d2[_0xd91b('0x3e')]};if(!_0x45710d[_0xd91b('0x38')]){_0x3ed61d[_0xd91b('0x39')]=!![];}return _0xc05fae[_0xd91b('0x16')](_0x3ed61d);})[_0xd91b('0x18')](function(_0x1207b2){logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),_0xd91b('0x3c'),util['inspect'](_0x1207b2,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),'afterCreate',_0xd91b('0x3c'),_0xd91b('0x3f'));}break;case _0xd91b('0x40'):if(_0x45710d['username']&&_0x45710d[_0xd91b('0x2b')]){var _0xb3d7fd={'messages':[{'source':_0xd91b('0x41'),'to':_0x28f1ae[_0xd91b('0x21')],'body':_0x28f1ae[_0xd91b('0x3d')],'from':_0x45710d[_0xd91b('0x42')]||_0x45710d['phone']}]};var _0x188a27=util[_0xd91b('0x43')](_0xd91b('0x44'),_0x45710d[_0xd91b('0x2a')],_0x45710d[_0xd91b('0x2b')]);var _0x2d5edb={'method':'POST','uri':_0xd91b('0x45'),'body':_0xb3d7fd,'headers':{'Authorization':util[_0xd91b('0x43')](_0xd91b('0x46'),new Buffer(_0x188a27)['toString'](_0xd91b('0x47')))},'json':!![]};rp(_0x2d5edb)['then'](function(_0x10508c){if(_0x10508c[_0xd91b('0x48')]>=0xc8&&_0x10508c[_0xd91b('0x48')]<=0xce){if(_0x10508c[_0xd91b('0x49')]&&_0x10508c['data']['queued_count']>0x0){var _0x40bfc5=_[_0xd91b('0x4a')](_0x10508c[_0xd91b('0x49')][_0xd91b('0x4b')]);var _0x4c26a5={'messageId':_0x40bfc5[_0xd91b('0x4c')]};if(!_0x45710d[_0xd91b('0x38')]){_0x4c26a5[_0xd91b('0x39')]=!![];}return _0xc05fae[_0xd91b('0x16')](_0x4c26a5);}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x4d'),util[_0xd91b('0x27')](_0x10508c,{'showHidden':![],'depth':null}));}}else{logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xd91b('0x4d'),util['inspect'](_0x10508c,{'showHidden':![],'depth':null}));}})[_0xd91b('0x18')](function(_0x50f6ab){logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x4d'),util['inspect'](_0x50f6ab,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x4d'),_0xd91b('0x3b'));}break;case _0xd91b('0x4e'):if(_0x45710d[_0xd91b('0x4f')]&&_0x45710d[_0xd91b('0x20')]){var _0xb3d7fd={'dst':_0x28f1ae[_0xd91b('0x21')],'text':_0x28f1ae[_0xd91b('0x3d')],'src':_0x45710d[_0xd91b('0x42')]||_0x45710d[_0xd91b('0x21')],'url':_0x45710d['remote']+'/api/sms/messages/'+_0x28f1ae['id']+_0xd91b('0x22')+_0x45710d[_0xd91b('0x50')]};var _0x188a27=util[_0xd91b('0x43')](_0xd91b('0x44'),_0x45710d[_0xd91b('0x4f')],_0x45710d['authToken']);var _0x2d5edb={'method':_0xd91b('0x33'),'uri':util[_0xd91b('0x43')](_0xd91b('0x51'),_0x45710d[_0xd91b('0x4f')]),'body':_0xb3d7fd,'headers':{'Authorization':util['format'](_0xd91b('0x46'),new Buffer(_0x188a27)[_0xd91b('0x52')](_0xd91b('0x47')))},'json':!![]};rp(_0x2d5edb)['then'](function(_0x4ae4b2){var _0x1aafbc={'messageId':_0x4ae4b2[_0xd91b('0x53')][0x0]};return _0xc05fae['update'](_0x1aafbc);})[_0xd91b('0x18')](function(_0x546305){logger[_0xd91b('0x24')](_0xd91b('0x25'),'afterCreate',_0xd91b('0x4e'),util['inspect'](_0x546305,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x4e'),_0xd91b('0x54'));}break;case _0xd91b('0x55'):if(_0x45710d['username']&&_0x45710d[_0xd91b('0x2b')]){if(_0x45710d['baseUrl']){var _0x5900e6={'method':'POST','uri':_0x45710d[_0xd91b('0x56')]+_0xd91b('0x57'),'body':{'username':_0x45710d[_0xd91b('0x2a')],'password':_0x45710d[_0xd91b('0x2b')]},'json':!![]};return rp(_0x5900e6)[_0xd91b('0x15')](function(_0x57c719){var _0x2bb0da={'method':_0xd91b('0x33'),'uri':_0x45710d['baseUrl']+_0xd91b('0x58'),'body':{'messages':[{'from':_0x45710d[_0xd91b('0x21')],'destinations':[{'to':_0x28f1ae['phone']}],'text':_0x28f1ae[_0xd91b('0x3d')],'notifyUrl':_0x45710d[_0xd91b('0x59')]+_0xd91b('0x5a')+_0x28f1ae['id']+_0xd91b('0x22')+_0x45710d[_0xd91b('0x50')],'notifyContentType':_0xd91b('0x5b'),'callbackData':_0x45710d[_0xd91b('0x21')]+';'+_0x28f1ae[_0xd91b('0x3d')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x57c719['token']},'json':!![]};return rp(_0x2bb0da)[_0xd91b('0x15')](function(_0x119025){if(_0x119025[_0xd91b('0x4b')]){var _0x5dd96d={'messageId':_0x119025[_0xd91b('0x4b')][0x0][_0xd91b('0xa')]};if(!_0x45710d['deliveryReport']){_0x5dd96d[_0xd91b('0x39')]=!![];}return _0xc05fae[_0xd91b('0x16')](_0x5dd96d);}else{return logger[_0xd91b('0x24')](_0xd91b('0x25'),'afterCreate',_0xd91b('0x55'),util[_0xd91b('0x27')](_0x119025,{'showHidden':![],'depth':null}));}});})[_0xd91b('0x18')](function(_0x5b8a0e){return logger['error'](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x55'),util[_0xd91b('0x27')](_0x5b8a0e,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),_0xd91b('0x55'),_0xd91b('0x5c'));}}else{logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),'infobip',_0xd91b('0x3b'));}break;case _0xd91b('0x5d'):var _0x1f44ef=require(_0xd91b('0x5e'));if(_0x45710d[_0xd91b('0x5f')]){var _0xb5578b={};_0xb5578b[_0xd91b('0x60')]=_0x45710d[_0xd91b('0x2a')];_0xb5578b[_0xd91b('0x21')]=_0x28f1ae['phone'];_0xb5578b[_0xd91b('0x2d')]=_0x45710d[_0xd91b('0x21')];_0xb5578b[_0xd91b('0x61')]=_0x28f1ae[_0xd91b('0x3d')];_0xb5578b[_0xd91b('0x62')]=+new Date();var _0x47278a='';var _0xb104e9='';var _0x1404bd=Object['keys'](_0xb5578b);_0x1404bd[_0xd91b('0x63')]();for(var _0x10231a=0x0;_0x10231a<_0x1404bd[_0xd91b('0x64')];_0x10231a++){if(_0x47278a!=''){_0x47278a+='&';}_0x47278a+=_0x1404bd[_0x10231a]+'='+encodeURIComponent(_0xb5578b[_0x1404bd[_0x10231a]]);_0xb104e9+=_0xb5578b[_0x1404bd[_0x10231a]];}_0xb104e9+=_0x45710d['apiKey'];_0xb104e9=_0x1f44ef['createHash'](_0xd91b('0x65'))[_0xd91b('0x16')](_0xb104e9)[_0xd91b('0x66')](_0xd91b('0x67'));if(_0x47278a!==''){_0x47278a+='&';}_0x47278a+=_0xd91b('0x68')+_0xb104e9;var _0x3c7706={'method':_0xd91b('0x30'),'uri':_0x45710d[_0xd91b('0x56')]+'/external/get/send.php?'+_0x47278a,'json':!![]};return rp(_0x3c7706)['then'](function(_0x26f7b7){var _0x34022e=Object[_0xd91b('0x69')](_0x26f7b7);if(_0x26f7b7[_0x34022e[0x0]]['error']&&parseInt(_0x26f7b7[_0x34022e[0x0]][_0xd91b('0x24')])===0x0){var _0x624cd7={'messageId':_0x26f7b7[_0x34022e[0x0]][_0xd91b('0x6a')]};if(!_0x45710d[_0xd91b('0x38')]){_0x624cd7['read']=!![];}return _0xc05fae[_0xd91b('0x16')](_0x624cd7);}else{return logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),'csc',util[_0xd91b('0x27')](_0x26f7b7['error'],{'showHidden':![],'depth':null}));}})[_0xd91b('0x18')](function(_0x5d7f40){return logger['error'](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x5d'),util[_0xd91b('0x27')](_0x5d7f40,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x5d'),_0xd91b('0x6b'));}break;case _0xd91b('0x6c'):if(_0x45710d[_0xd91b('0x5f')]){var _0x17c109={'method':_0xd91b('0x33'),'uri':_0xd91b('0x6d'),'headers':{'Authorization':_0x45710d[_0xd91b('0x5f')]},'body':{'content':_0x28f1ae[_0xd91b('0x3d')],'to':[_0x28f1ae['phone']],'from':_0x45710d[_0xd91b('0x21')],'binary':![],'clientMessageId':_0xd91b('0x6e'),'charset':_0xd91b('0x6f')},'json':!![]};rp(_0x17c109)[_0xd91b('0x15')](function(_0x33a90f){if(!_0x33a90f['error']){var _0x2f166d={'messageId':_0x33a90f['messages'][0x0][_0xd91b('0x70')]};if(!_0x45710d['deliveryReport']){_0x2f166d['read']=!![];}return _0xc05fae[_0xd91b('0x16')](_0x2f166d);}else{return logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),_0xd91b('0x6c'),util[_0xd91b('0x27')](_0x33a90f['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x2c7ea3){return logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x6c'),util[_0xd91b('0x27')](_0x2c7ea3,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x6c'),_0xd91b('0x6b'));}break;case _0xd91b('0x71'):if(_0x45710d[_0xd91b('0x2a')]&&_0x45710d[_0xd91b('0x2b')]){var _0x188a27=util[_0xd91b('0x43')](_0xd91b('0x44'),_0x45710d[_0xd91b('0x2a')],_0x45710d[_0xd91b('0x2b')]);var _0x2d5edb={'method':_0xd91b('0x33'),'uri':_0xd91b('0x72')+_0x45710d[_0xd91b('0x73')]+'/messages','body':{'to':[_0x28f1ae[_0xd91b('0x21')]],'text':_0x28f1ae[_0xd91b('0x3d')],'from':_0x45710d[_0xd91b('0x21')],'applicationId':_0x45710d[_0xd91b('0x74')]},'headers':{'Authorization':util[_0xd91b('0x43')](_0xd91b('0x46'),new Buffer(_0x188a27)['toString'](_0xd91b('0x47')))},'json':!![]};rp(_0x2d5edb)['then'](function(_0x140b8b){if(_0x140b8b['id']){var _0xb74c13={'messageId':_0x140b8b['id']};return _0xc05fae[_0xd91b('0x16')](_0xb74c13);}else{logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x71'),util[_0xd91b('0x27')](_0x140b8b,{'showHidden':![],'depth':null}));}})[_0xd91b('0x18')](function(_0x276b32){logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),_0xd91b('0x71'),util[_0xd91b('0x27')](_0x276b32,{'showHidden':![],'depth':null}));});}else{logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),_0xd91b('0x71'),'Missing\x20parameters:\x20username,\x20password');}break;case'intelepeer':if(_0x45710d[_0xd91b('0x5f')]){var _0x25fcff={};var _0x3c7706={'method':_0xd91b('0x33'),'uri':_0xd91b('0x75'),'headers':{'Authorization':_0xd91b('0x76')+_0x45710d['apiKey'],'Content-Type':_0xd91b('0x5b')},'body':{'from':_0x45710d[_0xd91b('0x21')],'to':_0x28f1ae[_0xd91b('0x21')],'text':_0x28f1ae['body']},'json':!![]};return rp(_0x3c7706)[_0xd91b('0x15')](function(_0xe47771){if(_0xe47771[_0xd91b('0x77')]==0xca){_0x25fcff['message']=_0xe47771;var _0x297ea8={'method':_0xd91b('0x33'),'uri':_0xd91b('0x78'),'headers':{'Authorization':_0xd91b('0x76')+_0x45710d[_0xd91b('0x5f')],'Content-Type':_0xd91b('0x5b')},'body':{'refid':_0x25fcff[_0xd91b('0x79')]['refid']},'json':!![]};return rp(_0x297ea8)[_0xd91b('0x15')](function(_0xd35a75){_0x25fcff['status']=_0xd35a75;var _0x420b68={'messageId':_0x25fcff['message']['refid'],'read':!![]};return _0xc05fae[_0xd91b('0x16')](_0x420b68);});}else{return logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),'intelepeer',util[_0xd91b('0x27')](_0xe47771,{'showHidden':![],'depth':null}));}})[_0xd91b('0x18')](function(_0x1c44e5){return logger[_0xd91b('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd91b('0x26'),_0xd91b('0x7a'),util['inspect'](_0x1c44e5,{'showHidden':![],'depth':null}));});}else{return logger[_0xd91b('0x24')](_0xd91b('0x25'),_0xd91b('0x26'),'intelepeer','Token\x20not\x20received');}break;}}})[_0xd91b('0x7b')](function(){_0x51e186();});}else{_0x51e186();}}},'charset':_0xd91b('0x7c'),'collate':_0xd91b('0x7d')});};
\ No newline at end of file
+var _0xd9f1=['uuid','UTF-8','apiMessageId','accountId','/messages','applicationId','toString','bandwidth','https://api.intelepeer.com/_rest/v4/app/sms/send','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','status','refid','intelepeer','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','update','catch','error','SmsAccount','SmsAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','login?username=','&password=','password','GET','split','sms','user_key','total_sent','deliveryReport','read','connectel','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','senderString','%s:%s','format','Basic\x20%s','base64','http_code','data','queued_count','head','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','remote','POST','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','sort','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xd9f1,0x183));var _0x1d9f=function(_0x1a6694,_0x10c892){_0x1a6694=_0x1a6694-0x0;var _0x1b0121=_0xd9f1[_0x1a6694];return _0x1b0121;};'use strict';var _=require(_0x1d9f('0x0'));var util=require(_0x1d9f('0x1'));var logger=require(_0x1d9f('0x2'))(_0x1d9f('0x3'));var moment=require('moment');var BPromise=require(_0x1d9f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1d9f('0x5'));var config=require(_0x1d9f('0x6'));var attributes=require(_0x1d9f('0x7'));module[_0x1d9f('0x8')]=function(_0x50c842,_0x18e3cb){return _0x50c842[_0x1d9f('0x9')](_0x1d9f('0xa'),attributes,{'tableName':_0x1d9f('0xb'),'paranoid':![],'indexes':[{'name':_0x1d9f('0xc'),'fields':[_0x1d9f('0xc')]},{'name':_0x1d9f('0xd'),'fields':[_0x1d9f('0xe')],'type':_0x1d9f('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xcca854,_0x3a6af1,_0x12a58f){var _0x913976=_0x50c842[_0x1d9f('0x10')];var _0x1ccc57=_0xcca854['get']({'plain':!![]});if(_0x1ccc57[_0x1d9f('0x11')][_0x1d9f('0x12')]()==='in'||_0x1ccc57[_0x1d9f('0x11')][_0x1d9f('0x12')]()===_0x1d9f('0x13')&&!_0x1ccc57[_0x1d9f('0x14')]&&!_[_0x1d9f('0x15')](_0x1ccc57[_0x1d9f('0x16')])&&!_[_0x1d9f('0x15')](_0x1ccc57[_0x1d9f('0x17')])){_0x913976[_0x1d9f('0x18')]['findOne']({'where':{'id':_0x1ccc57[_0x1d9f('0x17')]}})['then'](function(_0x53d9cd){if(_0x53d9cd){_0x53d9cd[_0x1d9f('0x19')]({'lastMsgAt':_0x1ccc57['createdAt'],'lastMsgDirection':_0x1ccc57[_0x1d9f('0x11')][_0x1d9f('0x12')]()});}})[_0x1d9f('0x1a')](function(_0x4683c3){console[_0x1d9f('0x1b')](_0x4683c3);});}if(_0x1ccc57[_0x1d9f('0x11')]==='out'&&!_0x1ccc57[_0x1d9f('0x14')]){var _0x46bb14;_0x913976[_0x1d9f('0x1c')]['find']({'where':{'id':_0x1ccc57[_0x1d9f('0x1d')]},'raw':!![]})[_0x1d9f('0x1e')](function(_0x4434bb){_0x46bb14=_0x4434bb;if(_0x46bb14&&_0x46bb14['type']){switch(_0x46bb14[_0x1d9f('0x1f')]){case _0x1d9f('0x20'):var _0x552148=require(_0x1d9f('0x20'));if(_0x46bb14[_0x1d9f('0x21')]&&_0x46bb14[_0x1d9f('0x22')]&&_0x46bb14[_0x1d9f('0x23')]){var _0x3fe9fc=new _0x552148(_0x46bb14[_0x1d9f('0x21')],_0x46bb14[_0x1d9f('0x22')]);_0x3fe9fc[_0x1d9f('0x24')][_0x1d9f('0x25')]({'body':_0x1ccc57['body'],'to':_0x1ccc57[_0x1d9f('0x23')],'from':_0x46bb14[_0x1d9f('0x23')],'statusCallback':_0x46bb14['remote']+_0x1d9f('0x26')+_0x1ccc57['id']+_0x1d9f('0x27')+_0x46bb14[_0x1d9f('0x28')]})['then'](function(_0x2fec36){if(_0x2fec36[_0x1d9f('0x29')]){return _0xcca854['update']({'messageId':_0x2fec36[_0x1d9f('0x29')]});}})[_0x1d9f('0x1a')](function(_0x30f390){logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),'twilio',util[_0x1d9f('0x2c')](_0x30f390,{'showHidden':![],'depth':null}));});}else{logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x1d9f('0x2d'):var _0x32dd5b=_0x1d9f('0x2e');if(_0x46bb14[_0x1d9f('0x2f')]&&_0x46bb14['password']){var _0x3fd09b={'recipient':[_0x1ccc57['phone']],'message':_0x1ccc57[_0x1d9f('0xe')],'message_type':_0x46bb14[_0x1d9f('0x30')]};if(_0x46bb14['smsMethod']&&_0x46bb14['smsMethod']!=='SI'){_0x3fd09b['sender']=_0x46bb14['phone'];}var _0xe56f5b={'url':_0x32dd5b+_0x1d9f('0x31')+_0x46bb14[_0x1d9f('0x2f')]+_0x1d9f('0x32')+_0x46bb14[_0x1d9f('0x33')],'method':_0x1d9f('0x34')};rp(_0xe56f5b)['then'](function(_0x306440){var _0x3d52ed=_0x306440[_0x1d9f('0x35')](';');var _0x2691d5={'user_key':_0x3d52ed[0x0],'session_key':_0x3d52ed[0x1]};_0xe56f5b={'url':_0x32dd5b+_0x1d9f('0x36'),'method':'POST','headers':{'user_key':_0x2691d5[_0x1d9f('0x37')],'Session_key':_0x2691d5['session_key']},'json':!![],'body':_0x3fd09b};return rp(_0xe56f5b);})['then'](function(_0x243b24){if(_0x243b24[_0x1d9f('0x38')]>=0x1){var _0x1197cb={'messageId':_0x243b24['internal_order_id']};if(_0x46bb14[_0x1d9f('0x30')]!=='GP'||!_0x46bb14[_0x1d9f('0x39')]){_0x1197cb[_0x1d9f('0x3a')]=!![];}return _0xcca854[_0x1d9f('0x19')](_0x1197cb);}else{return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),'afterCreate',_0x1d9f('0x2d'),util[_0x1d9f('0x2c')](_0x243b24,{'showHidden':![],'depth':null}));}})[_0x1d9f('0x1a')](function(_0x183532){return logger[_0x1d9f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1d9f('0x2b'),'skebby',util['inspect'](_0x183532,{'showHidden':![],'depth':null}));});}else{logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x2d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x1d9f('0x3b'):if(_0x46bb14[_0x1d9f('0x22')]){var _0x1b9cc1={'recipient':_0x1ccc57[_0x1d9f('0x23')],'message':_0x1ccc57[_0x1d9f('0xe')],'sender':_0x46bb14['senderString']||_0x46bb14[_0x1d9f('0x23')],'authorization':_0x46bb14[_0x1d9f('0x22')]};var _0x3a6af1={'method':'POST','uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x1b9cc1,'json':!![]};rp(_0x3a6af1)[_0x1d9f('0x1e')](function(_0x235458){var _0x545246={'messageId':_0x235458[_0x1d9f('0x3c')]};if(!_0x46bb14[_0x1d9f('0x39')]){_0x545246[_0x1d9f('0x3a')]=!![];}return _0xcca854[_0x1d9f('0x19')](_0x545246);})[_0x1d9f('0x1a')](function(_0x5aad4a){logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x3b'),util['inspect'](_0x5aad4a,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x3b'),_0x1d9f('0x3d'));}break;case _0x1d9f('0x3e'):if(_0x46bb14[_0x1d9f('0x2f')]&&_0x46bb14['password']){var _0x1b9cc1={'messages':[{'source':_0x1d9f('0x3f'),'to':_0x1ccc57['phone'],'body':_0x1ccc57[_0x1d9f('0xe')],'from':_0x46bb14[_0x1d9f('0x40')]||_0x46bb14[_0x1d9f('0x23')]}]};var _0x34dbe9=util['format'](_0x1d9f('0x41'),_0x46bb14['username'],_0x46bb14[_0x1d9f('0x33')]);var _0x3a6af1={'method':'POST','uri':'https://rest.clicksend.com/v3/sms/send','body':_0x1b9cc1,'headers':{'Authorization':util[_0x1d9f('0x42')](_0x1d9f('0x43'),new Buffer(_0x34dbe9)['toString'](_0x1d9f('0x44')))},'json':!![]};rp(_0x3a6af1)['then'](function(_0x5bb88f){if(_0x5bb88f[_0x1d9f('0x45')]>=0xc8&&_0x5bb88f[_0x1d9f('0x45')]<=0xce){if(_0x5bb88f['data']&&_0x5bb88f[_0x1d9f('0x46')][_0x1d9f('0x47')]>0x0){var _0x454e36=_[_0x1d9f('0x48')](_0x5bb88f[_0x1d9f('0x46')][_0x1d9f('0x24')]);var _0x366127={'messageId':_0x454e36['message_id']};if(!_0x46bb14[_0x1d9f('0x39')]){_0x366127[_0x1d9f('0x3a')]=!![];}return _0xcca854[_0x1d9f('0x19')](_0x366127);}else{logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x49'),util[_0x1d9f('0x2c')](_0x5bb88f,{'showHidden':![],'depth':null}));}}else{logger[_0x1d9f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1d9f('0x49'),util[_0x1d9f('0x2c')](_0x5bb88f,{'showHidden':![],'depth':null}));}})[_0x1d9f('0x1a')](function(_0x16cf3e){logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),'afterCreate',_0x1d9f('0x49'),util['inspect'](_0x16cf3e,{'showHidden':![],'depth':null}));});}else{logger[_0x1d9f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1d9f('0x49'),_0x1d9f('0x4a'));}break;case _0x1d9f('0x4b'):if(_0x46bb14[_0x1d9f('0x4c')]&&_0x46bb14['authToken']){var _0x1b9cc1={'dst':_0x1ccc57[_0x1d9f('0x23')],'text':_0x1ccc57['body'],'src':_0x46bb14[_0x1d9f('0x40')]||_0x46bb14['phone'],'url':_0x46bb14[_0x1d9f('0x4d')]+'/api/sms/messages/'+_0x1ccc57['id']+_0x1d9f('0x27')+_0x46bb14[_0x1d9f('0x28')]};var _0x34dbe9=util['format']('%s:%s',_0x46bb14[_0x1d9f('0x4c')],_0x46bb14[_0x1d9f('0x22')]);var _0x3a6af1={'method':_0x1d9f('0x4e'),'uri':util[_0x1d9f('0x42')]('https://api.plivo.com/v1/Account/%s/Message/',_0x46bb14['authId']),'body':_0x1b9cc1,'headers':{'Authorization':util['format'](_0x1d9f('0x43'),new Buffer(_0x34dbe9)['toString'](_0x1d9f('0x44')))},'json':!![]};rp(_0x3a6af1)[_0x1d9f('0x1e')](function(_0x596481){var _0x532698={'messageId':_0x596481[_0x1d9f('0x4f')][0x0]};return _0xcca854['update'](_0x532698);})[_0x1d9f('0x1a')](function(_0x4d2ab3){logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),'plivo',util[_0x1d9f('0x2c')](_0x4d2ab3,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1d9f('0x2b'),_0x1d9f('0x4b'),_0x1d9f('0x50'));}break;case _0x1d9f('0x51'):if(_0x46bb14['username']&&_0x46bb14[_0x1d9f('0x33')]){if(_0x46bb14[_0x1d9f('0x52')]){var _0x28e7b4={'method':_0x1d9f('0x4e'),'uri':_0x46bb14[_0x1d9f('0x52')]+_0x1d9f('0x53'),'body':{'username':_0x46bb14[_0x1d9f('0x2f')],'password':_0x46bb14[_0x1d9f('0x33')]},'json':!![]};return rp(_0x28e7b4)[_0x1d9f('0x1e')](function(_0x417b1d){var _0x5829ff={'method':_0x1d9f('0x4e'),'uri':_0x46bb14['baseUrl']+'/sms/2/text/advanced','body':{'messages':[{'from':_0x46bb14[_0x1d9f('0x23')],'destinations':[{'to':_0x1ccc57['phone']}],'text':_0x1ccc57[_0x1d9f('0xe')],'notifyUrl':_0x46bb14['remote']+_0x1d9f('0x26')+_0x1ccc57['id']+_0x1d9f('0x27')+_0x46bb14['token'],'notifyContentType':_0x1d9f('0x54'),'callbackData':_0x46bb14[_0x1d9f('0x23')]+';'+_0x1ccc57[_0x1d9f('0xe')]}]},'headers':{'Authorization':_0x1d9f('0x55')+_0x417b1d[_0x1d9f('0x28')]},'json':!![]};return rp(_0x5829ff)[_0x1d9f('0x1e')](function(_0x1dca3c){if(_0x1dca3c[_0x1d9f('0x24')]){var _0x37fba5={'messageId':_0x1dca3c[_0x1d9f('0x24')][0x0][_0x1d9f('0xc')]};if(!_0x46bb14[_0x1d9f('0x39')]){_0x37fba5['read']=!![];}return _0xcca854['update'](_0x37fba5);}else{return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x51'),util[_0x1d9f('0x2c')](_0x1dca3c,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x1e7037){return logger[_0x1d9f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1d9f('0x2b'),_0x1d9f('0x51'),util[_0x1d9f('0x2c')](_0x1e7037,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x1d9f('0x2a'),'afterCreate','infobip',_0x1d9f('0x56'));}}else{logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),'afterCreate',_0x1d9f('0x51'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x1d9f('0x57'):var _0x12d4cd=require(_0x1d9f('0x58'));if(_0x46bb14[_0x1d9f('0x59')]){var _0x51e741={};_0x51e741[_0x1d9f('0x5a')]=_0x46bb14[_0x1d9f('0x2f')];_0x51e741[_0x1d9f('0x23')]=_0x1ccc57[_0x1d9f('0x23')];_0x51e741['sender']=_0x46bb14['phone'];_0x51e741[_0x1d9f('0x5b')]=_0x1ccc57[_0x1d9f('0xe')];_0x51e741[_0x1d9f('0x5c')]=+new Date();var _0x582748='';var _0x4486c6='';var _0x449c7f=Object[_0x1d9f('0x5d')](_0x51e741);_0x449c7f[_0x1d9f('0x5e')]();for(var _0x108486=0x0;_0x108486<_0x449c7f['length'];_0x108486++){if(_0x582748!=''){_0x582748+='&';}_0x582748+=_0x449c7f[_0x108486]+'='+encodeURIComponent(_0x51e741[_0x449c7f[_0x108486]]);_0x4486c6+=_0x51e741[_0x449c7f[_0x108486]];}_0x4486c6+=_0x46bb14[_0x1d9f('0x59')];_0x4486c6=_0x12d4cd[_0x1d9f('0x5f')](_0x1d9f('0x60'))[_0x1d9f('0x19')](_0x4486c6)[_0x1d9f('0x61')](_0x1d9f('0x62'));if(_0x582748!==''){_0x582748+='&';}_0x582748+=_0x1d9f('0x63')+_0x4486c6;var _0xe56f5b={'method':_0x1d9f('0x34'),'uri':_0x46bb14[_0x1d9f('0x52')]+_0x1d9f('0x64')+_0x582748,'json':!![]};return rp(_0xe56f5b)[_0x1d9f('0x1e')](function(_0x92f9dc){var _0x37ba06=Object[_0x1d9f('0x5d')](_0x92f9dc);if(_0x92f9dc[_0x37ba06[0x0]][_0x1d9f('0x1b')]&&parseInt(_0x92f9dc[_0x37ba06[0x0]][_0x1d9f('0x1b')])===0x0){var _0x76b19={'messageId':_0x92f9dc[_0x37ba06[0x0]][_0x1d9f('0x65')]};if(!_0x46bb14[_0x1d9f('0x39')]){_0x76b19[_0x1d9f('0x3a')]=!![];}return _0xcca854['update'](_0x76b19);}else{return logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x57'),util[_0x1d9f('0x2c')](_0x92f9dc[_0x1d9f('0x1b')],{'showHidden':![],'depth':null}));}})[_0x1d9f('0x1a')](function(_0x4210c6){return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x57'),util[_0x1d9f('0x2c')](_0x4210c6,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1d9f('0x2b'),_0x1d9f('0x57'),_0x1d9f('0x66'));}break;case _0x1d9f('0x67'):if(_0x46bb14[_0x1d9f('0x59')]){var _0x11d81e={'method':_0x1d9f('0x4e'),'uri':_0x1d9f('0x68'),'headers':{'Authorization':_0x46bb14[_0x1d9f('0x59')]},'body':{'content':_0x1ccc57[_0x1d9f('0xe')],'to':[_0x1ccc57['phone']],'from':_0x46bb14[_0x1d9f('0x23')],'binary':![],'clientMessageId':_0x1d9f('0x69'),'charset':_0x1d9f('0x6a')},'json':!![]};rp(_0x11d81e)[_0x1d9f('0x1e')](function(_0x5d40a3){if(!_0x5d40a3[_0x1d9f('0x1b')]){var _0x9270e4={'messageId':_0x5d40a3[_0x1d9f('0x24')][0x0][_0x1d9f('0x6b')]};if(!_0x46bb14[_0x1d9f('0x39')]){_0x9270e4[_0x1d9f('0x3a')]=!![];}return _0xcca854[_0x1d9f('0x19')](_0x9270e4);}else{return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x67'),util['inspect'](_0x5d40a3[_0x1d9f('0x1b')],{'showHidden':![],'depth':null}));}})[_0x1d9f('0x1a')](function(_0x94da99){return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x67'),util[_0x1d9f('0x2c')](_0x94da99,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),'clickatell','Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x46bb14[_0x1d9f('0x2f')]&&_0x46bb14[_0x1d9f('0x33')]){var _0x34dbe9=util[_0x1d9f('0x42')](_0x1d9f('0x41'),_0x46bb14[_0x1d9f('0x2f')],_0x46bb14[_0x1d9f('0x33')]);var _0x3a6af1={'method':_0x1d9f('0x4e'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x46bb14[_0x1d9f('0x6c')]+_0x1d9f('0x6d'),'body':{'to':[_0x1ccc57[_0x1d9f('0x23')]],'text':_0x1ccc57['body'],'from':_0x46bb14[_0x1d9f('0x23')],'applicationId':_0x46bb14[_0x1d9f('0x6e')]},'headers':{'Authorization':util[_0x1d9f('0x42')](_0x1d9f('0x43'),new Buffer(_0x34dbe9)[_0x1d9f('0x6f')](_0x1d9f('0x44')))},'json':!![]};rp(_0x3a6af1)[_0x1d9f('0x1e')](function(_0x3ac0b1){if(_0x3ac0b1['id']){var _0xb5259a={'messageId':_0x3ac0b1['id']};return _0xcca854['update'](_0xb5259a);}else{logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x70'),util['inspect'](_0x3ac0b1,{'showHidden':![],'depth':null}));}})[_0x1d9f('0x1a')](function(_0x2f78e3){logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x70'),util['inspect'](_0x2f78e3,{'showHidden':![],'depth':null}));});}else{logger[_0x1d9f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1d9f('0x70'),_0x1d9f('0x4a'));}break;case'intelepeer':if(_0x46bb14[_0x1d9f('0x59')]){var _0x3ee13e={};var _0xe56f5b={'method':_0x1d9f('0x4e'),'uri':_0x1d9f('0x71'),'headers':{'Authorization':'Bearer\x20'+_0x46bb14['apiKey'],'Content-Type':_0x1d9f('0x54')},'body':{'from':_0x46bb14[_0x1d9f('0x23')],'to':_0x1ccc57['phone'],'text':_0x1ccc57[_0x1d9f('0xe')]},'json':!![]};return rp(_0xe56f5b)[_0x1d9f('0x1e')](function(_0xac9869){if(_0xac9869[_0x1d9f('0x72')]==0xca){_0x3ee13e['message']=_0xac9869;var _0x25be5a={'method':'POST','uri':_0x1d9f('0x73'),'headers':{'Authorization':_0x1d9f('0x74')+_0x46bb14['apiKey'],'Content-Type':_0x1d9f('0x54')},'body':{'refid':_0x3ee13e['message']['refid']},'json':!![]};return rp(_0x25be5a)[_0x1d9f('0x1e')](function(_0x3ff9b1){_0x3ee13e[_0x1d9f('0x75')]=_0x3ff9b1;var _0x49eec2={'messageId':_0x3ee13e['message'][_0x1d9f('0x76')],'read':!![]};return _0xcca854['update'](_0x49eec2);});}else{return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),'afterCreate','intelepeer',util[_0x1d9f('0x2c')](_0xac9869,{'showHidden':![],'depth':null}));}})['catch'](function(_0x4d5dfb){return logger['error'](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x77'),util[_0x1d9f('0x2c')](_0x4d5dfb,{'showHidden':![],'depth':null}));});}else{return logger[_0x1d9f('0x1b')](_0x1d9f('0x2a'),_0x1d9f('0x2b'),_0x1d9f('0x77'),_0x1d9f('0x78'));}break;}}})['finally'](function(){_0x12a58f();});}else{_0x12a58f();}}},'charset':_0x1d9f('0x79'),'collate':_0x1d9f('0x7a')});};
\ No newline at end of file
index 6a641e0..552faeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ce=['debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsMessage','SmsMessage','body','options','raw','stringify','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','defaults','redis','localhost','socket.io-emitter','./smsMessage.socket','register','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x77ce,0x143));var _0xe77c=function(_0x238ef0,_0x43dd08){_0x238ef0=_0x238ef0-0x0;var _0x1343ba=_0x77ce[_0x238ef0];return _0x1343ba;};'use strict';var _=require('lodash');var util=require(_0xe77c('0x0'));var moment=require(_0xe77c('0x1'));var BPromise=require(_0xe77c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe77c('0x3'));var db=require(_0xe77c('0x4'))['db'];var utils=require(_0xe77c('0x5'));var logger=require('../../config/logger')(_0xe77c('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe77c('0x7')]['http']({'port':0x232a});config['redis']=_[_0xe77c('0x8')](config[_0xe77c('0x9')],{'host':_0xe77c('0xa'),'port':0x18eb});var socket=require(_0xe77c('0xb'))(new Redis(config['redis']));require(_0xe77c('0xc'))[_0xe77c('0xd')](socket);function respondWithRpcPromise(_0x367148,_0x29df71,_0x5a9f9a){return new BPromise(function(_0x336701,_0x5d9998){return client['request'](_0x367148,_0x5a9f9a)[_0xe77c('0xe')](function(_0x2ba65f){logger[_0xe77c('0xf')](_0xe77c('0x10'),_0x29df71,_0xe77c('0x11'));logger[_0xe77c('0x12')](_0xe77c('0x13'),_0x29df71,_0xe77c('0x11'),JSON['stringify'](_0x2ba65f));if(_0x2ba65f[_0xe77c('0x14')]){if(_0x2ba65f[_0xe77c('0x14')][_0xe77c('0x15')]===0x1f4){logger[_0xe77c('0x14')](_0xe77c('0x10'),_0x29df71,_0x2ba65f['error'][_0xe77c('0x16')]);return _0x5d9998(_0x2ba65f[_0xe77c('0x14')]['message']);}logger[_0xe77c('0x14')](_0xe77c('0x10'),_0x29df71,_0x2ba65f['error'][_0xe77c('0x16')]);return _0x336701(_0x2ba65f[_0xe77c('0x14')][_0xe77c('0x16')]);}else{logger[_0xe77c('0xf')](_0xe77c('0x10'),_0x29df71,_0xe77c('0x11'));_0x336701(_0x2ba65f[_0xe77c('0x17')][_0xe77c('0x16')]);}})[_0xe77c('0x18')](function(_0x54da95){logger['error']('SmsMessage,\x20%s,\x20%s',_0x29df71,_0x54da95);_0x5d9998(_0x54da95);});});}exports[_0xe77c('0x19')]=function(_0x1d0304){var _0x19edd2=this;return new Promise(function(_0x83cc22,_0x1f1161){return db[_0xe77c('0x1a')]['create'](_0x1d0304[_0xe77c('0x1b')],{'raw':_0x1d0304['options']?_0x1d0304[_0xe77c('0x1c')][_0xe77c('0x1d')]===undefined?!![]:![]:!![]})[_0xe77c('0xe')](function(_0x5c758){logger[_0xe77c('0xf')](_0xe77c('0x19'),_0x1d0304);logger['debug'](_0xe77c('0x19'),_0x1d0304,JSON[_0xe77c('0x1e')](_0x5c758));_0x83cc22(_0x5c758);})[_0xe77c('0x18')](function(_0x2d3f70){logger[_0xe77c('0x14')](_0xe77c('0x19'),_0x2d3f70[_0xe77c('0x16')],_0x1d0304);_0x1f1161(_0x19edd2[_0xe77c('0x14')](0x1f4,_0x2d3f70[_0xe77c('0x16')]));});});};
\ No newline at end of file
+var _0x07e9=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','CreateSmsMessage','SmsMessage','create','body','options','raw','then','lodash','util','moment'];(function(_0x2664e5,_0x18387d){var _0x3953ea=function(_0x347739){while(--_0x347739){_0x2664e5['push'](_0x2664e5['shift']());}};_0x3953ea(++_0x18387d);}(_0x07e9,0x1b9));var _0x907e=function(_0x4ac56e,_0x17dd51){_0x4ac56e=_0x4ac56e-0x0;var _0x2b0f7e=_0x07e9[_0x4ac56e];return _0x2b0f7e;};'use strict';var _=require(_0x907e('0x0'));var util=require(_0x907e('0x1'));var moment=require(_0x907e('0x2'));var BPromise=require(_0x907e('0x3'));var rs=require(_0x907e('0x4'));var fs=require('fs');var Redis=require(_0x907e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x907e('0x6'))(_0x907e('0x7'));var config=require(_0x907e('0x8'));var jayson=require(_0x907e('0x9'));var client=jayson[_0x907e('0xa')][_0x907e('0xb')]({'port':0x232a});config[_0x907e('0xc')]=_[_0x907e('0xd')](config[_0x907e('0xc')],{'host':_0x907e('0xe'),'port':0x18eb});var socket=require(_0x907e('0xf'))(new Redis(config[_0x907e('0xc')]));require(_0x907e('0x10'))[_0x907e('0x11')](socket);function respondWithRpcPromise(_0x4451bf,_0x14fa2b,_0x1fbd82){return new BPromise(function(_0x1742dc,_0x55e0e0){return client[_0x907e('0x12')](_0x4451bf,_0x1fbd82)['then'](function(_0x1ef33d){logger['info'](_0x907e('0x13'),_0x14fa2b,'request\x20sent');logger[_0x907e('0x14')](_0x907e('0x15'),_0x14fa2b,_0x907e('0x16'),JSON[_0x907e('0x17')](_0x1ef33d));if(_0x1ef33d['error']){if(_0x1ef33d['error'][_0x907e('0x18')]===0x1f4){logger[_0x907e('0x19')](_0x907e('0x13'),_0x14fa2b,_0x1ef33d[_0x907e('0x19')][_0x907e('0x1a')]);return _0x55e0e0(_0x1ef33d['error']['message']);}logger['error'](_0x907e('0x13'),_0x14fa2b,_0x1ef33d['error'][_0x907e('0x1a')]);return _0x1742dc(_0x1ef33d[_0x907e('0x19')][_0x907e('0x1a')]);}else{logger[_0x907e('0x1b')](_0x907e('0x13'),_0x14fa2b,_0x907e('0x16'));_0x1742dc(_0x1ef33d[_0x907e('0x1c')][_0x907e('0x1a')]);}})[_0x907e('0x1d')](function(_0x4aa34d){logger['error'](_0x907e('0x13'),_0x14fa2b,_0x4aa34d);_0x55e0e0(_0x4aa34d);});});}exports[_0x907e('0x1e')]=function(_0x302661){var _0x1c12fa=this;return new Promise(function(_0x5129e3,_0x75c2df){return db[_0x907e('0x1f')][_0x907e('0x20')](_0x302661[_0x907e('0x21')],{'raw':_0x302661[_0x907e('0x22')]?_0x302661[_0x907e('0x22')][_0x907e('0x23')]===undefined?!![]:![]:!![]})[_0x907e('0x24')](function(_0x4287eb){logger[_0x907e('0x1b')](_0x907e('0x1e'),_0x302661);logger[_0x907e('0x14')](_0x907e('0x1e'),_0x302661,JSON['stringify'](_0x4287eb));_0x5129e3(_0x4287eb);})[_0x907e('0x1d')](function(_0x3260a7){logger[_0x907e('0x19')]('CreateSmsMessage',_0x3260a7[_0x907e('0x1a')],_0x302661);_0x75c2df(_0x1c12fa[_0x907e('0x19')](0x1f4,_0x3260a7[_0x907e('0x1a')]));});});};
\ No newline at end of file
index f1f842d..492debf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2522=['emit','removeListener','register','length','smsMessage:','./smsMessage.events','save','remove','update'];(function(_0x28bc36,_0x3dbef9){var _0x13a6d1=function(_0x2d7b03){while(--_0x2d7b03){_0x28bc36['push'](_0x28bc36['shift']());}};_0x13a6d1(++_0x3dbef9);}(_0x2522,0x1f4));var _0x2252=function(_0x435266,_0x229075){_0x435266=_0x435266-0x0;var _0x1800f8=_0x2522[_0x435266];return _0x1800f8;};'use strict';var SmsMessageEvents=require(_0x2252('0x0'));var events=[_0x2252('0x1'),_0x2252('0x2'),_0x2252('0x3')];function createListener(_0x4490af,_0x451a0f){return function(_0xf9b39d){_0x451a0f[_0x2252('0x4')](_0x4490af,_0xf9b39d);};}function removeListener(_0x1b8fb9,_0x4f596c){return function(){SmsMessageEvents[_0x2252('0x5')](_0x1b8fb9,_0x4f596c);};}exports[_0x2252('0x6')]=function(_0x3d1ac0){for(var _0x1f48c0=0x0,_0x58193e=events[_0x2252('0x7')];_0x1f48c0<_0x58193e;_0x1f48c0++){var _0x44c0cc=events[_0x1f48c0];var _0x51eb62=createListener(_0x2252('0x8')+_0x44c0cc,_0x3d1ac0);SmsMessageEvents['on'](_0x44c0cc,_0x51eb62);}};
\ No newline at end of file
+var _0x7bac=['remove','emit','removeListener','length','smsMessage:','./smsMessage.events','save'];(function(_0x529185,_0x5f5ef5){var _0x541314=function(_0x2c64cf){while(--_0x2c64cf){_0x529185['push'](_0x529185['shift']());}};_0x541314(++_0x5f5ef5);}(_0x7bac,0x67));var _0xc7ba=function(_0x1496c1,_0x23cf40){_0x1496c1=_0x1496c1-0x0;var _0x48abc0=_0x7bac[_0x1496c1];return _0x48abc0;};'use strict';var SmsMessageEvents=require(_0xc7ba('0x0'));var events=[_0xc7ba('0x1'),_0xc7ba('0x2'),'update'];function createListener(_0x6e2361,_0x290368){return function(_0x13cddd){_0x290368[_0xc7ba('0x3')](_0x6e2361,_0x13cddd);};}function removeListener(_0x17c5b2,_0x455859){return function(){SmsMessageEvents[_0xc7ba('0x4')](_0x17c5b2,_0x455859);};}exports['register']=function(_0x2b903d){for(var _0x3ccb5a=0x0,_0x492487=events[_0xc7ba('0x5')];_0x3ccb5a<_0x492487;_0x3ccb5a++){var _0x3f8fa6=events[_0x3ccb5a];var _0x49f37e=createListener(_0xc7ba('0x6')+_0x3f8fa6,_0x2b903d);SmsMessageEvents['on'](_0x3f8fa6,_0x49f37e);}};
\ No newline at end of file
index a1efa96..989e1f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9b9=['express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe','show','/:id/members','/:id/teams','getTeams','/:id/users','post','create','addAgents','put','/:id','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x4c4037,_0x15054b){var _0x357862=function(_0x480015){while(--_0x480015){_0x4c4037['push'](_0x4c4037['shift']());}};_0x357862(++_0x15054b);}(_0xe9b9,0xd4));var _0x9e9b=function(_0x5826b9,_0x33996e){_0x5826b9=_0x5826b9-0x0;var _0x2e4805=_0xe9b9[_0x5826b9];return _0x2e4805;};'use strict';var multer=require(_0x9e9b('0x0'));var util=require(_0x9e9b('0x1'));var path=require(_0x9e9b('0x2'));var timeout=require(_0x9e9b('0x3'));var express=require(_0x9e9b('0x4'));var router=express[_0x9e9b('0x5')]();var fs_extra=require(_0x9e9b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9e9b('0x7'));var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0x9e9b('0x8')]('/',auth[_0x9e9b('0x9')](),controller['index']);router['get'](_0x9e9b('0xa'),auth['isAuthenticated'](),controller[_0x9e9b('0xb')]);router[_0x9e9b('0x8')]('/:id',auth[_0x9e9b('0x9')](),controller[_0x9e9b('0xc')]);router[_0x9e9b('0x8')](_0x9e9b('0xd'),auth['isAuthenticated'](),controller['getMembers']);router[_0x9e9b('0x8')](_0x9e9b('0xe'),auth['isAuthenticated'](),controller[_0x9e9b('0xf')]);router['get'](_0x9e9b('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x9e9b('0x11')]('/',auth[_0x9e9b('0x9')](),controller[_0x9e9b('0x12')]);router[_0x9e9b('0x11')](_0x9e9b('0xe'),auth[_0x9e9b('0x9')](),controller['addTeams']);router[_0x9e9b('0x11')]('/:id/users',auth['isAuthenticated'](),controller[_0x9e9b('0x13')]);router[_0x9e9b('0x14')](_0x9e9b('0x15'),auth[_0x9e9b('0x9')](),controller[_0x9e9b('0x16')]);router[_0x9e9b('0x17')](_0x9e9b('0x15'),auth[_0x9e9b('0x9')](),controller[_0x9e9b('0x18')]);router[_0x9e9b('0x17')](_0x9e9b('0xe'),auth[_0x9e9b('0x9')](),controller['removeTeams']);router[_0x9e9b('0x17')]('/:id/users',auth[_0x9e9b('0x9')](),controller[_0x9e9b('0x19')]);module[_0x9e9b('0x1a')]=router;
\ No newline at end of file
+var _0x625c=['/:id/users','removeAgents','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams'];(function(_0x13d21e,_0x5be7e7){var _0x3821d1=function(_0xdaa03f){while(--_0xdaa03f){_0x13d21e['push'](_0x13d21e['shift']());}};_0x3821d1(++_0x5be7e7);}(_0x625c,0x85));var _0xc625=function(_0x40e916,_0x9b2927){_0x40e916=_0x40e916-0x0;var _0x4acaaf=_0x625c[_0x40e916];return _0x4acaaf;};'use strict';var multer=require(_0xc625('0x0'));var util=require(_0xc625('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc625('0x2')]();var fs_extra=require(_0xc625('0x3'));var auth=require(_0xc625('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc625('0x5'));var controller=require(_0xc625('0x6'));router[_0xc625('0x7')]('/',auth[_0xc625('0x8')](),controller[_0xc625('0x9')]);router['get'](_0xc625('0xa'),auth[_0xc625('0x8')](),controller[_0xc625('0xb')]);router['get'](_0xc625('0xc'),auth[_0xc625('0x8')](),controller[_0xc625('0xd')]);router['get']('/:id/members',auth[_0xc625('0x8')](),controller['getMembers']);router[_0xc625('0x7')]('/:id/teams',auth[_0xc625('0x8')](),controller['getTeams']);router[_0xc625('0x7')]('/:id/users',auth[_0xc625('0x8')](),controller['getAgents']);router[_0xc625('0xe')]('/',auth[_0xc625('0x8')](),controller['create']);router[_0xc625('0xe')](_0xc625('0xf'),auth['isAuthenticated'](),controller[_0xc625('0x10')]);router['post']('/:id/users',auth[_0xc625('0x8')](),controller[_0xc625('0x11')]);router[_0xc625('0x12')](_0xc625('0xc'),auth[_0xc625('0x8')](),controller[_0xc625('0x13')]);router[_0xc625('0x14')](_0xc625('0xc'),auth[_0xc625('0x8')](),controller[_0xc625('0x15')]);router[_0xc625('0x14')]('/:id/teams',auth[_0xc625('0x8')](),controller[_0xc625('0x16')]);router['delete'](_0xc625('0x17'),auth['isAuthenticated'](),controller[_0xc625('0x18')]);module[_0xc625('0x19')]=router;
\ No newline at end of file
index 0eaf504..7b2d264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x007c=['rrmemory','beepall','roundrobin','sequelize','exports','name','STRING','ENUM'];(function(_0x11a55c,_0x4eced9){var _0x26c390=function(_0x5b0662){while(--_0x5b0662){_0x11a55c['push'](_0x11a55c['shift']());}};_0x26c390(++_0x4eced9);}(_0x007c,0x133));var _0xc007=function(_0x33a16d,_0x172721){_0x33a16d=_0x33a16d-0x0;var _0x3f66a8=_0x007c[_0x33a16d];return _0x3f66a8;};'use strict';var Sequelize=require(_0xc007('0x0'));module[_0xc007('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc007('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc007('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc007('0x4')](_0xc007('0x5'),_0xc007('0x6'),_0xc007('0x7'))}};
\ No newline at end of file
+var _0x3117=['exports','STRING','INTEGER','ENUM','rrmemory','roundrobin','sequelize'];(function(_0x466b89,_0x5a347d){var _0x807b24=function(_0x282fd7){while(--_0x282fd7){_0x466b89['push'](_0x466b89['shift']());}};_0x807b24(++_0x5a347d);}(_0x3117,0x1e9));var _0x7311=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0x3117[_0x1064bc];return _0x5edc45;};'use strict';var Sequelize=require(_0x7311('0x0'));module[_0x7311('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7311('0x2')]},'timeout':{'type':Sequelize[_0x7311('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7311('0x4')](_0x7311('0x5'),'beepall',_0x7311('0x6'))}};
\ No newline at end of file
index 313caf4..dcd1588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff8=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','destroy','describe','findOne','UserSmsQueue','hasOwnProperty','SmsQueueId','User','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','every','TeamId','includes','all','union','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','userSmsQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./smsQueue.socket','status','end','json','offset','undefined','limit','count','apply','reject','update','then','get','SmsQueues','UserProfileResource','sendStatus','error','name','send','index','map','SmsQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfff8,0xe2));var _0x8fff=function(_0x3b061a,_0x53b89c){_0x3b061a=_0x3b061a-0x0;var _0x4b52c8=_0xfff8[_0x3b061a];return _0x4b52c8;};'use strict';var emlformat=require(_0x8fff('0x0'));var rimraf=require(_0x8fff('0x1'));var zipdir=require(_0x8fff('0x2'));var jsonpatch=require(_0x8fff('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8fff('0x4'));var Mustache=require('mustache');var util=require(_0x8fff('0x5'));var path=require(_0x8fff('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8fff('0x7'));var fs=require('fs');var fs_extra=require(_0x8fff('0x8'));var _=require(_0x8fff('0x9'));var squel=require('squel');var crypto=require(_0x8fff('0xa'));var jsforce=require(_0x8fff('0xb'));var deskjs=require(_0x8fff('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8fff('0xd'));var Papa=require(_0x8fff('0xe'));var Redis=require(_0x8fff('0xf'));var authService=require(_0x8fff('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8fff('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x8fff('0x12'));var config=require(_0x8fff('0x13'));var licenseUtil=require(_0x8fff('0x14'));var db=require('../../mysqldb')['db'];config[_0x8fff('0x15')]=_[_0x8fff('0x16')](config[_0x8fff('0x15')],{'host':_0x8fff('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8fff('0x18'))['register'](socket);function respondWithStatusCode(_0x483946,_0x135913){_0x135913=_0x135913||0xcc;return function(_0x431718){if(_0x431718){return _0x483946['sendStatus'](_0x135913);}return _0x483946[_0x8fff('0x19')](_0x135913)[_0x8fff('0x1a')]();};}function respondWithResult(_0x9a55c7,_0x34b3d3){_0x34b3d3=_0x34b3d3||0xc8;return function(_0x28c5a5){if(_0x28c5a5){return _0x9a55c7[_0x8fff('0x19')](_0x34b3d3)[_0x8fff('0x1b')](_0x28c5a5);}};}function respondWithFilteredResult(_0x599e06,_0x516f47){return function(_0x2a13d2){if(_0x2a13d2){var _0x359c08=typeof _0x516f47[_0x8fff('0x1c')]===_0x8fff('0x1d')&&typeof _0x516f47[_0x8fff('0x1e')]===_0x8fff('0x1d');var _0x207231=_0x2a13d2[_0x8fff('0x1f')];var _0x17b8b2=_0x359c08?0x0:_0x516f47[_0x8fff('0x1c')];var _0x8fa39e=_0x359c08?_0x2a13d2['count']:_0x516f47[_0x8fff('0x1c')]+_0x516f47[_0x8fff('0x1e')];var _0x42430b;if(_0x8fa39e>=_0x207231){_0x8fa39e=_0x207231;_0x42430b=0xc8;}else{_0x42430b=0xce;}_0x599e06['status'](_0x42430b);return _0x599e06['set']('Content-Range',_0x17b8b2+'-'+_0x8fa39e+'/'+_0x207231)['json'](_0x2a13d2);}return null;};}function patchUpdates(_0x125694){return function(_0x49fe97){try{jsonpatch[_0x8fff('0x20')](_0x49fe97,_0x125694,!![]);}catch(_0x5423a6){return BPromise[_0x8fff('0x21')](_0x5423a6);}return _0x49fe97['save']();};}function saveUpdates(_0x2e19c8,_0x4e3361){return function(_0x130cdb){if(_0x130cdb){return _0x130cdb[_0x8fff('0x22')](_0x2e19c8)['then'](function(_0x3b153a){return _0x3b153a;});}return null;};}function removeEntity(_0x5247f8,_0x5551e4){return function(_0x2a4e5e){if(_0x2a4e5e){return _0x2a4e5e['destroy']()[_0x8fff('0x23')](function(){var _0x3d4050=_0x2a4e5e[_0x8fff('0x24')]({'plain':!![]});var _0x3ccada=_0x8fff('0x25');return db[_0x8fff('0x26')]['destroy']({'where':{'type':_0x3ccada,'resourceId':_0x3d4050['id']}})['then'](function(){return _0x2a4e5e;});})['then'](function(){_0x5247f8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c05cb,_0x183003){return function(_0x26119e){if(!_0x26119e){_0x5c05cb[_0x8fff('0x27')](0x194);}return _0x26119e;};}function handleError(_0x9f68e3,_0x3fd126){_0x3fd126=_0x3fd126||0x1f4;return function(_0x549de9){logger[_0x8fff('0x28')](_0x549de9['stack']);if(_0x549de9['name']){delete _0x549de9[_0x8fff('0x29')];}_0x9f68e3['status'](_0x3fd126)[_0x8fff('0x2a')](_0x549de9);};}exports[_0x8fff('0x2b')]=function(_0x239b36,_0x2787d1){var _0x2b4f5a={},_0xf1d68e={},_0x579d68={'count':0x0,'rows':[]};var _0x50672a=_[_0x8fff('0x2c')](db[_0x8fff('0x2d')][_0x8fff('0x2e')],function(_0x33a70b){return{'name':_0x33a70b[_0x8fff('0x2f')],'type':_0x33a70b[_0x8fff('0x30')][_0x8fff('0x31')]};});_0xf1d68e[_0x8fff('0x32')]=_[_0x8fff('0x2c')](_0x50672a,'name');_0xf1d68e[_0x8fff('0x33')]=_['keys'](_0x239b36[_0x8fff('0x33')]);_0xf1d68e[_0x8fff('0x34')]=_[_0x8fff('0x35')](_0xf1d68e[_0x8fff('0x32')],_0xf1d68e[_0x8fff('0x33')]);_0x2b4f5a[_0x8fff('0x36')]=_['intersection'](_0xf1d68e[_0x8fff('0x32')],qs[_0x8fff('0x37')](_0x239b36[_0x8fff('0x33')]['fields']));_0x2b4f5a[_0x8fff('0x36')]=_0x2b4f5a[_0x8fff('0x36')][_0x8fff('0x38')]?_0x2b4f5a['attributes']:_0xf1d68e[_0x8fff('0x32')];if(!_0x239b36['query']['hasOwnProperty'](_0x8fff('0x39'))){_0x2b4f5a[_0x8fff('0x1e')]=qs['limit'](_0x239b36[_0x8fff('0x33')]['limit']);_0x2b4f5a[_0x8fff('0x1c')]=qs['offset'](_0x239b36[_0x8fff('0x33')][_0x8fff('0x1c')]);}_0x2b4f5a[_0x8fff('0x3a')]=qs[_0x8fff('0x3b')](_0x239b36[_0x8fff('0x33')][_0x8fff('0x3b')]);_0x2b4f5a[_0x8fff('0x3c')]=qs['filters'](_[_0x8fff('0x3d')](_0x239b36[_0x8fff('0x33')],_0xf1d68e[_0x8fff('0x34')]),_0x50672a);if(_0x239b36[_0x8fff('0x33')]['filter']){_0x2b4f5a[_0x8fff('0x3c')]=_[_0x8fff('0x3e')](_0x2b4f5a['where'],{'$or':_['map'](_0x50672a,function(_0xaaefeb){if(_0xaaefeb['type']!==_0x8fff('0x3f')){var _0x270987={};_0x270987[_0xaaefeb[_0x8fff('0x29')]]={'$like':'%'+_0x239b36[_0x8fff('0x33')][_0x8fff('0x40')]+'%'};return _0x270987;}})});}_0x2b4f5a=_[_0x8fff('0x3e')]({},_0x2b4f5a,_0x239b36[_0x8fff('0x41')]);var _0x136b0d={'where':_0x2b4f5a[_0x8fff('0x3c')]};return db[_0x8fff('0x2d')][_0x8fff('0x1f')](_0x136b0d)[_0x8fff('0x23')](function(_0x18ee9f){_0x579d68[_0x8fff('0x1f')]=_0x18ee9f;if(_0x239b36[_0x8fff('0x33')][_0x8fff('0x42')]){_0x2b4f5a[_0x8fff('0x43')]=[{'all':!![]}];}return db[_0x8fff('0x2d')][_0x8fff('0x44')](_0x2b4f5a);})[_0x8fff('0x23')](function(_0x5113cb){_0x579d68[_0x8fff('0x45')]=_0x5113cb;return _0x579d68;})[_0x8fff('0x23')](respondWithFilteredResult(_0x2787d1,_0x2b4f5a))[_0x8fff('0x46')](handleError(_0x2787d1,null));};exports[_0x8fff('0x47')]=function(_0x428c81,_0x4d09eb){var _0x374389={'raw':!![],'where':{'id':_0x428c81[_0x8fff('0x48')]['id']}},_0x11aaf1={};_0x11aaf1[_0x8fff('0x32')]=_[_0x8fff('0x49')](db[_0x8fff('0x2d')]['rawAttributes']);_0x11aaf1[_0x8fff('0x33')]=_[_0x8fff('0x49')](_0x428c81[_0x8fff('0x33')]);_0x11aaf1[_0x8fff('0x34')]=_[_0x8fff('0x35')](_0x11aaf1[_0x8fff('0x32')],_0x11aaf1[_0x8fff('0x33')]);_0x374389['attributes']=_['intersection'](_0x11aaf1[_0x8fff('0x32')],qs[_0x8fff('0x37')](_0x428c81['query'][_0x8fff('0x37')]));_0x374389[_0x8fff('0x36')]=_0x374389[_0x8fff('0x36')][_0x8fff('0x38')]?_0x374389[_0x8fff('0x36')]:_0x11aaf1[_0x8fff('0x32')];if(_0x428c81[_0x8fff('0x33')][_0x8fff('0x42')]){_0x374389['include']=[{'all':!![]}];}_0x374389=_[_0x8fff('0x3e')]({},_0x374389,_0x428c81[_0x8fff('0x41')]);return db[_0x8fff('0x2d')][_0x8fff('0x4a')](_0x374389)[_0x8fff('0x23')](handleEntityNotFound(_0x4d09eb,null))[_0x8fff('0x23')](respondWithResult(_0x4d09eb,null))[_0x8fff('0x46')](handleError(_0x4d09eb,null));};exports[_0x8fff('0x4b')]=function(_0x576e4f,_0x3cc2e0){return db['SmsQueue'][_0x8fff('0x4b')](_0x576e4f[_0x8fff('0x4c')],{})[_0x8fff('0x23')](function(_0x1b2937){var _0x1b52ba=_0x576e4f[_0x8fff('0x4d')][_0x8fff('0x24')]({'plain':!![]});if(!_0x1b52ba)throw new Error(_0x8fff('0x4e'));if(_0x1b52ba[_0x8fff('0x4f')]===_0x8fff('0x4d')){var _0x4b4566=_0x1b2937['get']({'plain':!![]});var _0x4eb91e='SmsQueues';return db['UserProfileSection'][_0x8fff('0x4a')]({'where':{'name':_0x4eb91e,'userProfileId':_0x1b52ba[_0x8fff('0x50')]},'raw':!![]})['then'](function(_0x1929c2){if(_0x1929c2&&_0x1929c2[_0x8fff('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x4b4566[_0x8fff('0x29')],'resourceId':_0x4b4566['id'],'type':_0x1929c2[_0x8fff('0x29')],'sectionId':_0x1929c2['id']},{})[_0x8fff('0x23')](function(){return _0x1b2937;});}else{return _0x1b2937;}})[_0x8fff('0x46')](function(_0x4923fa){logger[_0x8fff('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4923fa);throw _0x4923fa;});}return _0x1b2937;})['then'](respondWithResult(_0x3cc2e0,0xc9))['catch'](handleError(_0x3cc2e0,null));};exports['update']=function(_0x2a9658,_0x55540d){if(_0x2a9658[_0x8fff('0x4c')]['id']){delete _0x2a9658[_0x8fff('0x4c')]['id'];}return db[_0x8fff('0x2d')][_0x8fff('0x4a')]({'where':{'id':_0x2a9658[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](handleEntityNotFound(_0x55540d,null))[_0x8fff('0x23')](saveUpdates(_0x2a9658[_0x8fff('0x4c')],null))[_0x8fff('0x23')](respondWithResult(_0x55540d,null))['catch'](handleError(_0x55540d,null));};exports[_0x8fff('0x52')]=function(_0x404c92,_0x17c8fa){return db[_0x8fff('0x2d')][_0x8fff('0x4a')]({'where':{'id':_0x404c92[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](handleEntityNotFound(_0x17c8fa,null))['then'](removeEntity(_0x17c8fa,null))[_0x8fff('0x46')](handleError(_0x17c8fa,null));};exports[_0x8fff('0x53')]=function(_0x7680f3,_0x1e3150){return db[_0x8fff('0x2d')]['describe']()['then'](respondWithResult(_0x1e3150,null))[_0x8fff('0x46')](handleError(_0x1e3150,null));};exports['getMembers']=function(_0x234f07,_0xc9432,_0x4234a5){var _0x393de4={'raw':!![],'where':{}},_0x58706f={},_0x48e963;return db['SmsQueue'][_0x8fff('0x54')]({'where':{'id':_0x234f07[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](handleEntityNotFound(_0xc9432,null))['then'](function(_0x230fbb){if(_0x230fbb){_0x48e963=_0x230fbb[_0x8fff('0x24')]({'plain':!![]});_0x58706f[_0x8fff('0x32')]=_[_0x8fff('0x49')](db[_0x8fff('0x55')]['rawAttributes']);_0x58706f[_0x8fff('0x33')]=_[_0x8fff('0x49')](_0x234f07[_0x8fff('0x33')]);_0x58706f['filters']=_[_0x8fff('0x35')](_0x58706f[_0x8fff('0x32')],_0x58706f['query']);_0x393de4['attributes']=_[_0x8fff('0x35')](_0x58706f[_0x8fff('0x32')],qs[_0x8fff('0x37')](_0x234f07[_0x8fff('0x33')][_0x8fff('0x37')]));_0x393de4[_0x8fff('0x36')]=_0x393de4[_0x8fff('0x36')][_0x8fff('0x38')]?_0x393de4[_0x8fff('0x36')]:_0x58706f[_0x8fff('0x32')];if(!_0x234f07[_0x8fff('0x33')][_0x8fff('0x56')](_0x8fff('0x39'))){_0x393de4[_0x8fff('0x1e')]=qs[_0x8fff('0x1e')](_0x234f07[_0x8fff('0x33')]['limit']);_0x393de4[_0x8fff('0x1c')]=qs['offset'](_0x234f07[_0x8fff('0x33')][_0x8fff('0x1c')]);}_0x393de4[_0x8fff('0x3a')]=qs['sort'](_0x234f07['query'][_0x8fff('0x3b')]);_0x393de4[_0x8fff('0x3c')]=qs[_0x8fff('0x34')](_[_0x8fff('0x3d')](_0x234f07[_0x8fff('0x33')],_0x58706f[_0x8fff('0x34')]));_0x393de4[_0x8fff('0x3c')][_0x8fff('0x57')]=_0x230fbb['id'];if(_0x234f07[_0x8fff('0x33')]['filter']){_0x393de4[_0x8fff('0x3c')]=_[_0x8fff('0x3e')](_0x393de4[_0x8fff('0x3c')],{'$or':_[_0x8fff('0x2c')](_0x393de4[_0x8fff('0x36')],function(_0x58b181){var _0x1c04da={};_0x1c04da[_0x58b181]={'$like':'%'+_0x234f07[_0x8fff('0x33')][_0x8fff('0x40')]+'%'};return _0x1c04da;})});}_0x393de4=_['merge']({},_0x393de4,_0x234f07[_0x8fff('0x41')]);return db['UserSmsQueue'][_0x8fff('0x44')](_0x393de4);}})[_0x8fff('0x23')](function(_0x289bf3){if(_0x289bf3){return db[_0x8fff('0x58')]['findAndCountAll']({'where':{'id':_[_0x8fff('0x2c')](_0x289bf3,_0x8fff('0x59')),'role':_0x8fff('0x5a')},'attributes':['id','name',_0x8fff('0x5b'),_0x8fff('0x5c'),_0x8fff('0x5d')]});}})['then'](function(_0x2d931e){if(_0x2d931e){return{'count':_0x2d931e['count'],'rows':_['map'](_0x2d931e[_0x8fff('0x45')],function(_0x10a9e7){return{'membername':_0x10a9e7['name'],'UserId':_0x10a9e7['id'],'queue_name':_0x48e963[_0x8fff('0x29')],'SmsQueueId':_0x48e963['id'],'interface':util[_0x8fff('0x5e')](_0x8fff('0x5f'),_0x8fff('0x60'),_0x10a9e7[_0x8fff('0x29')]),'penalty':0x0,'paused':_0x10a9e7[_0x8fff('0x5b')],'createdAt':_0x10a9e7['createdAt'],'updatedAt':_0x10a9e7[_0x8fff('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x8fff('0x23')](respondWithFilteredResult(_0xc9432,_0x393de4))[_0x8fff('0x46')](handleError(_0xc9432,null));};exports[_0x8fff('0x61')]=function(_0x3d28f6,_0x3cb4f0,_0x5a5a78){var _0x397ae1={};var _0x555d2f={};var _0x389527;var _0x306ac1;return db[_0x8fff('0x2d')][_0x8fff('0x54')]({'where':{'id':_0x3d28f6[_0x8fff('0x48')]['id']}})['then'](handleEntityNotFound(_0x3cb4f0,null))[_0x8fff('0x23')](function(_0x5eb585){if(_0x5eb585){_0x389527=_0x5eb585;_0x555d2f[_0x8fff('0x32')]=_[_0x8fff('0x49')](db[_0x8fff('0x62')][_0x8fff('0x2e')]);_0x555d2f[_0x8fff('0x33')]=_[_0x8fff('0x49')](_0x3d28f6[_0x8fff('0x33')]);_0x555d2f[_0x8fff('0x34')]=_[_0x8fff('0x35')](_0x555d2f[_0x8fff('0x32')],_0x555d2f[_0x8fff('0x33')]);_0x397ae1[_0x8fff('0x36')]=_['intersection'](_0x555d2f[_0x8fff('0x32')],qs[_0x8fff('0x37')](_0x3d28f6[_0x8fff('0x33')]['fields']));_0x397ae1[_0x8fff('0x36')]=_0x397ae1[_0x8fff('0x36')]['length']?_0x397ae1[_0x8fff('0x36')]:_0x555d2f[_0x8fff('0x32')];_0x397ae1[_0x8fff('0x3a')]=qs[_0x8fff('0x3b')](_0x3d28f6[_0x8fff('0x33')]['sort']);_0x397ae1['where']=qs['filters'](_[_0x8fff('0x3d')](_0x3d28f6[_0x8fff('0x33')],_0x555d2f[_0x8fff('0x34')]));if(_0x3d28f6[_0x8fff('0x33')][_0x8fff('0x40')]){_0x397ae1['where']=_['merge'](_0x397ae1[_0x8fff('0x3c')],{'$or':_[_0x8fff('0x2c')](_0x397ae1[_0x8fff('0x36')],function(_0x1bdafd){var _0x1d8c98={};_0x1d8c98[_0x1bdafd]={'$like':'%'+_0x3d28f6['query'][_0x8fff('0x40')]+'%'};return _0x1d8c98;})});}_0x397ae1=_[_0x8fff('0x3e')]({},_0x397ae1,_0x3d28f6[_0x8fff('0x41')]);return _0x389527[_0x8fff('0x61')](_0x397ae1);}})[_0x8fff('0x23')](function(_0x7ddc5b){if(_0x7ddc5b){_0x306ac1=_0x7ddc5b[_0x8fff('0x38')];if(!_0x3d28f6[_0x8fff('0x33')][_0x8fff('0x56')](_0x8fff('0x39'))){_0x397ae1[_0x8fff('0x1e')]=qs[_0x8fff('0x1e')](_0x3d28f6[_0x8fff('0x33')][_0x8fff('0x1e')]);_0x397ae1[_0x8fff('0x1c')]=qs[_0x8fff('0x1c')](_0x3d28f6[_0x8fff('0x33')][_0x8fff('0x1c')]);}return _0x389527['getTeams'](_0x397ae1);}})['then'](function(_0x23e603){if(_0x23e603){return _0x23e603?{'count':_0x306ac1,'rows':_0x23e603}:null;}})[_0x8fff('0x23')](respondWithResult(_0x3cb4f0,null))[_0x8fff('0x46')](handleError(_0x3cb4f0,null));};exports[_0x8fff('0x63')]=function(_0x57022a,_0x4deb31,_0x53ae1b){var _0x52825b=_0x57022a[_0x8fff('0x4c')][_0x8fff('0x64')];return db[_0x8fff('0x62')]['findAll']({'where':{'id':_0x52825b},'attributes':['id'],'include':[{'model':db[_0x8fff('0x58')],'as':_0x8fff('0x65'),'attributes':['id',_0x8fff('0x29'),_0x8fff('0x66'),_0x8fff('0x67'),'interface'],'raw':!![]}]})[_0x8fff('0x23')](function(_0x3d7de6){if(_0x3d7de6){var _0x15cd56=_[_0x8fff('0x68')](_0x3d7de6,function(_0x5b95ff){var _0x588209=_0x5b95ff['get']({'plain':!![]});return _0x588209['Agents'];});return db[_0x8fff('0x2d')][_0x8fff('0x4a')]({'where':{'id':_0x57022a[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](function(_0x32e6e2){return db[_0x8fff('0x69')][_0x8fff('0x6a')](function(_0x486a9c){return _0x32e6e2[_0x8fff('0x63')](_0x52825b,{'transaction':_0x486a9c})['then'](function(){return BPromise[_0x8fff('0x6b')](_0x15cd56,function(_0xd7c80f){return db[_0x8fff('0x55')][_0x8fff('0x6c')]({'where':{'UserId':_0xd7c80f['id'],'SmsQueueId':_0x57022a[_0x8fff('0x48')]['id']},'transaction':_0x486a9c});});})['then'](function(){_0x15cd56[_0x8fff('0x6d')](function(_0x47c06f){socket[_0x8fff('0x6e')]('userSmsQueue:save',{'UserId':_0x47c06f['id'],'SmsQueueId':_0x32e6e2['id']});});});});});}})[_0x8fff('0x23')](respondWithStatusCode(_0x4deb31,null))[_0x8fff('0x46')](handleError(_0x4deb31,null));};exports[_0x8fff('0x6f')]=function(_0x3c977e,_0x50996e,_0x46e6fc){return db[_0x8fff('0x62')][_0x8fff('0x44')]({'where':{'id':_0x3c977e['query'][_0x8fff('0x64')]},'attributes':['id'],'include':[{'model':db[_0x8fff('0x58')],'as':_0x8fff('0x65'),'attributes':['id'],'raw':!![]}]})[_0x8fff('0x23')](handleEntityNotFound(_0x50996e,null))[_0x8fff('0x23')](function(_0x17f326){var _0x53c3ee=_[_0x8fff('0x2c')](_0x17f326,'id');var _0x5ede88=[];var _0x1386c8=[];var _0x22a152=squel[_0x8fff('0x70')]();_0x22a152[_0x8fff('0x71')](_0x8fff('0x72'))[_0x8fff('0x73')](_0x8fff('0x74'),'tq')['join'](_0x8fff('0x75'),'ut',_0x8fff('0x76'))[_0x8fff('0x3c')](_0x8fff('0x77'),_0x3c977e[_0x8fff('0x48')]['id']);for(var _0x3ea143=0x0;_0x3ea143<_0x17f326[_0x8fff('0x38')];_0x3ea143+=0x1){let _0x262c0d=_0x17f326[_0x3ea143];for(var _0x5d9ad1=0x0;_0x5d9ad1<_0x262c0d[_0x8fff('0x65')][_0x8fff('0x38')];_0x5d9ad1+=0x1){let _0x4d5a49=_0x262c0d[_0x8fff('0x65')][_0x5d9ad1];var _0x326afb=_0x22a152['clone']();_0x326afb[_0x8fff('0x3c')](_0x8fff('0x78'),_0x4d5a49['id']);_0x1386c8[_0x8fff('0x79')](db[_0x8fff('0x69')]['query'](_0x326afb['toString'](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x8fff('0x23')](function(_0x356b29){if(_0x356b29[_0x8fff('0x38')]===0x1){return _0x4d5a49['id'];}else{var _0x2b7d01=_[_0x8fff('0x7a')](_[_0x8fff('0x2c')](_0x356b29,_0x8fff('0x7b')),function(_0xf3a9ba){return _[_0x8fff('0x7c')](_0x53c3ee,_0xf3a9ba);});if(_0x2b7d01){return _0x4d5a49['id'];}}}));}}return BPromise[_0x8fff('0x7d')](_0x1386c8)[_0x8fff('0x23')](function(_0x494251){_0x5ede88=_(_0x5ede88)[_0x8fff('0x7e')](_0x494251)['compact']()[_0x8fff('0x7f')]();return db['SmsQueue'][_0x8fff('0x4a')]({'where':{'id':_0x3c977e[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](function(_0x3c8d08){return db[_0x8fff('0x69')]['transaction'](function(_0x5c25f4){return _0x3c8d08[_0x8fff('0x6f')](_0x3c977e[_0x8fff('0x33')][_0x8fff('0x64')],{'transaction':_0x5c25f4})[_0x8fff('0x23')](function(){if(!_[_0x8fff('0x80')](_0x5ede88)){return _0x3c8d08[_0x8fff('0x81')](_0x5ede88,{'transaction':_0x5c25f4});}})[_0x8fff('0x23')](function(){_0x5ede88['forEach'](function(_0x354590){socket[_0x8fff('0x6e')](_0x8fff('0x82'),{'UserId':_0x354590,'SmsQueueId':_0x3c8d08['id']});});});});});});})['then'](respondWithStatusCode(_0x50996e,null))[_0x8fff('0x46')](handleError(_0x50996e,null));};exports['addAgents']=function(_0x28d808,_0xb62336,_0x3b2d02){return db['SmsQueue']['find']({'where':{'id':_0x28d808[_0x8fff('0x48')]['id']}})['then'](handleEntityNotFound(_0xb62336,null))[_0x8fff('0x23')](function(_0x237339){if(_0x237339){return _0x237339[_0x8fff('0x83')](_0x28d808[_0x8fff('0x4c')]['ids'],_[_0x8fff('0x84')](_0x28d808[_0x8fff('0x4c')],[_0x8fff('0x64'),'id'])||{})['spread'](function(_0x1cb6c1){for(var _0x2c2974=0x0;_0x2c2974<_0x28d808['body'][_0x8fff('0x64')][_0x8fff('0x38')];_0x2c2974+=0x1){socket[_0x8fff('0x6e')](_0x8fff('0x85'),{'UserId':Number(_0x28d808['body'][_0x8fff('0x64')][_0x2c2974]),'SmsQueueId':Number(_0x28d808[_0x8fff('0x48')]['id'])});}return _0x1cb6c1;});}})[_0x8fff('0x23')](respondWithResult(_0xb62336,null))[_0x8fff('0x46')](handleError(_0xb62336,null));};exports[_0x8fff('0x81')]=function(_0x276dc8,_0x3ad18c,_0x3285c2){return db[_0x8fff('0x2d')][_0x8fff('0x4a')]({'where':{'id':_0x276dc8[_0x8fff('0x48')]['id']}})['then'](handleEntityNotFound(_0x3ad18c,null))[_0x8fff('0x23')](function(_0x23c2cd){if(_0x23c2cd){return _0x23c2cd[_0x8fff('0x81')](_0x276dc8[_0x8fff('0x33')][_0x8fff('0x64')])[_0x8fff('0x23')](function(){if(_[_0x8fff('0x86')](_0x276dc8[_0x8fff('0x33')]['ids'])){for(var _0x1e8380=0x0;_0x1e8380<_0x276dc8[_0x8fff('0x33')][_0x8fff('0x64')][_0x8fff('0x38')];_0x1e8380+=0x1){socket[_0x8fff('0x6e')]('userSmsQueue:remove',{'UserId':Number(_0x276dc8[_0x8fff('0x33')][_0x8fff('0x64')][_0x1e8380]),'SmsQueueId':Number(_0x276dc8[_0x8fff('0x48')]['id'])});}}else{socket['emit'](_0x8fff('0x82'),{'UserId':Number(_0x276dc8[_0x8fff('0x33')][_0x8fff('0x64')]),'SmsQueueId':Number(_0x276dc8[_0x8fff('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x3ad18c,null))[_0x8fff('0x46')](handleError(_0x3ad18c,null));};exports['getAgents']=function(_0x34ebcc,_0x16df24,_0x2a2a6a){var _0x2f7ec8={};var _0x24c6da={};var _0x557648;var _0x4ffbf6;return db[_0x8fff('0x2d')]['findOne']({'where':{'id':_0x34ebcc[_0x8fff('0x48')]['id']}})[_0x8fff('0x23')](handleEntityNotFound(_0x16df24,null))[_0x8fff('0x23')](function(_0x1ef196){if(_0x1ef196){_0x557648=_0x1ef196;_0x24c6da[_0x8fff('0x32')]=_['keys'](db[_0x8fff('0x58')][_0x8fff('0x2e')]);_0x24c6da[_0x8fff('0x33')]=_['keys'](_0x34ebcc[_0x8fff('0x33')]);_0x24c6da[_0x8fff('0x34')]=_[_0x8fff('0x35')](_0x24c6da['model'],_0x24c6da[_0x8fff('0x33')]);_0x2f7ec8[_0x8fff('0x36')]=_[_0x8fff('0x35')](_0x24c6da[_0x8fff('0x32')],qs[_0x8fff('0x37')](_0x34ebcc['query'][_0x8fff('0x37')]));_0x2f7ec8[_0x8fff('0x36')]=_0x2f7ec8['attributes'][_0x8fff('0x38')]?_0x2f7ec8['attributes']:_0x24c6da[_0x8fff('0x32')];_0x2f7ec8[_0x8fff('0x3a')]=qs[_0x8fff('0x3b')](_0x34ebcc[_0x8fff('0x33')]['sort']);_0x2f7ec8[_0x8fff('0x3c')]=qs['filters'](_[_0x8fff('0x3d')](_0x34ebcc[_0x8fff('0x33')],_0x24c6da['filters']));if(_0x34ebcc[_0x8fff('0x33')][_0x8fff('0x40')]){_0x2f7ec8['where']=_[_0x8fff('0x3e')](_0x2f7ec8[_0x8fff('0x3c')],{'$or':_[_0x8fff('0x2c')](_0x2f7ec8[_0x8fff('0x36')],function(_0x3a63bb){var _0x13a2ab={};_0x13a2ab[_0x3a63bb]={'$like':'%'+_0x34ebcc['query'][_0x8fff('0x40')]+'%'};return _0x13a2ab;})});}_0x2f7ec8=_[_0x8fff('0x3e')]({},_0x2f7ec8,_0x34ebcc[_0x8fff('0x41')]);return _0x557648[_0x8fff('0x87')](_0x2f7ec8);}})[_0x8fff('0x23')](function(_0x4b76a0){if(_0x4b76a0){_0x4ffbf6=_0x4b76a0['length'];if(!_0x34ebcc[_0x8fff('0x33')][_0x8fff('0x56')]('nolimit')){_0x2f7ec8[_0x8fff('0x1e')]=qs['limit'](_0x34ebcc['query'][_0x8fff('0x1e')]);_0x2f7ec8[_0x8fff('0x1c')]=qs['offset'](_0x34ebcc[_0x8fff('0x33')][_0x8fff('0x1c')]);}return _0x557648[_0x8fff('0x87')](_0x2f7ec8);}})['then'](function(_0x329272){if(_0x329272){return _0x329272?{'count':_0x4ffbf6,'rows':_0x329272}:null;}})[_0x8fff('0x23')](respondWithResult(_0x16df24,null))[_0x8fff('0x46')](handleError(_0x16df24,null));};
\ No newline at end of file
+var _0xa509=['field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','compact','value','isEmpty','userSmsQueue:remove','addAgents','omit','spread','userSmsQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','lodash','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./smsQueue.socket','register','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','params','SmsQueue','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsQueues','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','order','SmsQueueId','User','agent','smsPause','updatedAt','format','SIP','createdAt','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','emit','removeTeams','select'];(function(_0x1a7013,_0x1aea90){var _0x5a93f7=function(_0x1fc712){while(--_0x1fc712){_0x1a7013['push'](_0x1a7013['shift']());}};_0x5a93f7(++_0x1aea90);}(_0xa509,0x12f));var _0x9a50=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa509[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x9a50('0x0'));var rimraf=require(_0x9a50('0x1'));var zipdir=require(_0x9a50('0x2'));var jsonpatch=require(_0x9a50('0x3'));var rp=require('request-promise');var moment=require(_0x9a50('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9a50('0x5'));var util=require(_0x9a50('0x6'));var path=require(_0x9a50('0x7'));var sox=require(_0x9a50('0x8'));var csv=require('to-csv');var ejs=require(_0x9a50('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9a50('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9a50('0xb'));var querystring=require(_0x9a50('0xc'));var Papa=require(_0x9a50('0xd'));var Redis=require(_0x9a50('0xe'));var authService=require(_0x9a50('0xf'));var qs=require(_0x9a50('0x10'));var as=require(_0x9a50('0x11'));var hardwareService=require(_0x9a50('0x12'));var logger=require(_0x9a50('0x13'))(_0x9a50('0x14'));var utils=require(_0x9a50('0x15'));var config=require(_0x9a50('0x16'));var licenseUtil=require(_0x9a50('0x17'));var db=require(_0x9a50('0x18'))['db'];config[_0x9a50('0x19')]=_[_0x9a50('0x1a')](config[_0x9a50('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9a50('0x19')]));require(_0x9a50('0x1b'))[_0x9a50('0x1c')](socket);function respondWithStatusCode(_0x5e16cc,_0x33dffe){_0x33dffe=_0x33dffe||0xcc;return function(_0x5e8a30){if(_0x5e8a30){return _0x5e16cc[_0x9a50('0x1d')](_0x33dffe);}return _0x5e16cc[_0x9a50('0x1e')](_0x33dffe)['end']();};}function respondWithResult(_0xe639b3,_0x52eceb){_0x52eceb=_0x52eceb||0xc8;return function(_0x583d69){if(_0x583d69){return _0xe639b3[_0x9a50('0x1e')](_0x52eceb)['json'](_0x583d69);}};}function respondWithFilteredResult(_0x1c58e4,_0x4594b3){return function(_0x445eef){if(_0x445eef){var _0x4f39e0=typeof _0x4594b3['offset']===_0x9a50('0x1f')&&typeof _0x4594b3[_0x9a50('0x20')]===_0x9a50('0x1f');var _0x4dc9d3=_0x445eef[_0x9a50('0x21')];var _0xafd29f=_0x4f39e0?0x0:_0x4594b3[_0x9a50('0x22')];var _0x52ca00=_0x4f39e0?_0x445eef[_0x9a50('0x21')]:_0x4594b3['offset']+_0x4594b3[_0x9a50('0x20')];var _0x399333;if(_0x52ca00>=_0x4dc9d3){_0x52ca00=_0x4dc9d3;_0x399333=0xc8;}else{_0x399333=0xce;}_0x1c58e4[_0x9a50('0x1e')](_0x399333);return _0x1c58e4[_0x9a50('0x23')](_0x9a50('0x24'),_0xafd29f+'-'+_0x52ca00+'/'+_0x4dc9d3)[_0x9a50('0x25')](_0x445eef);}return null;};}function patchUpdates(_0x54e15f){return function(_0x3736cb){try{jsonpatch[_0x9a50('0x26')](_0x3736cb,_0x54e15f,!![]);}catch(_0x1baea3){return BPromise['reject'](_0x1baea3);}return _0x3736cb[_0x9a50('0x27')]();};}function saveUpdates(_0xe5356d,_0xe73df3){return function(_0x54e3b4){if(_0x54e3b4){return _0x54e3b4[_0x9a50('0x28')](_0xe5356d)[_0x9a50('0x29')](function(_0x1fc74a){return _0x1fc74a;});}return null;};}function removeEntity(_0x4408ef,_0x266c80){return function(_0x497cf0){if(_0x497cf0){return _0x497cf0[_0x9a50('0x2a')]()['then'](function(){var _0x599c0d=_0x497cf0[_0x9a50('0x2b')]({'plain':!![]});var _0x318498='SmsQueues';return db[_0x9a50('0x2c')][_0x9a50('0x2a')]({'where':{'type':_0x318498,'resourceId':_0x599c0d['id']}})[_0x9a50('0x29')](function(){return _0x497cf0;});})[_0x9a50('0x29')](function(){_0x4408ef['status'](0xcc)[_0x9a50('0x2d')]();});}};}function handleEntityNotFound(_0xacaf3c,_0x2eb6e3){return function(_0x227910){if(!_0x227910){_0xacaf3c[_0x9a50('0x1d')](0x194);}return _0x227910;};}function handleError(_0x4ab6e7,_0x3f8022){_0x3f8022=_0x3f8022||0x1f4;return function(_0x6710ba){logger['error'](_0x6710ba[_0x9a50('0x2e')]);if(_0x6710ba['name']){delete _0x6710ba[_0x9a50('0x2f')];}_0x4ab6e7[_0x9a50('0x1e')](_0x3f8022)[_0x9a50('0x30')](_0x6710ba);};}exports['index']=function(_0xfeeb69,_0xb4b742){var _0x50468f={},_0x302df2={},_0x263755={'count':0x0,'rows':[]};var _0x2a334d=_['map'](db['SmsQueue'][_0x9a50('0x31')],function(_0x37c146){return{'name':_0x37c146[_0x9a50('0x32')],'type':_0x37c146[_0x9a50('0x33')][_0x9a50('0x34')]};});_0x302df2[_0x9a50('0x35')]=_[_0x9a50('0x36')](_0x2a334d,_0x9a50('0x2f'));_0x302df2['query']=_[_0x9a50('0x37')](_0xfeeb69[_0x9a50('0x38')]);_0x302df2['filters']=_[_0x9a50('0x39')](_0x302df2[_0x9a50('0x35')],_0x302df2[_0x9a50('0x38')]);_0x50468f['attributes']=_[_0x9a50('0x39')](_0x302df2[_0x9a50('0x35')],qs['fields'](_0xfeeb69['query'][_0x9a50('0x3a')]));_0x50468f[_0x9a50('0x3b')]=_0x50468f['attributes'][_0x9a50('0x3c')]?_0x50468f[_0x9a50('0x3b')]:_0x302df2[_0x9a50('0x35')];if(!_0xfeeb69[_0x9a50('0x38')][_0x9a50('0x3d')](_0x9a50('0x3e'))){_0x50468f[_0x9a50('0x20')]=qs[_0x9a50('0x20')](_0xfeeb69['query'][_0x9a50('0x20')]);_0x50468f[_0x9a50('0x22')]=qs[_0x9a50('0x22')](_0xfeeb69[_0x9a50('0x38')]['offset']);}_0x50468f['order']=qs['sort'](_0xfeeb69[_0x9a50('0x38')][_0x9a50('0x3f')]);_0x50468f[_0x9a50('0x40')]=qs[_0x9a50('0x41')](_[_0x9a50('0x42')](_0xfeeb69['query'],_0x302df2[_0x9a50('0x41')]),_0x2a334d);if(_0xfeeb69[_0x9a50('0x38')]['filter']){_0x50468f[_0x9a50('0x40')]=_[_0x9a50('0x43')](_0x50468f[_0x9a50('0x40')],{'$or':_['map'](_0x2a334d,function(_0x4576bd){if(_0x4576bd[_0x9a50('0x33')]!==_0x9a50('0x44')){var _0x557513={};_0x557513[_0x4576bd['name']]={'$like':'%'+_0xfeeb69[_0x9a50('0x38')][_0x9a50('0x45')]+'%'};return _0x557513;}})});}_0x50468f=_[_0x9a50('0x43')]({},_0x50468f,_0xfeeb69['options']);var _0x2cb27d={'where':_0x50468f[_0x9a50('0x40')]};return db['SmsQueue']['count'](_0x2cb27d)[_0x9a50('0x29')](function(_0x9dc591){_0x263755[_0x9a50('0x21')]=_0x9dc591;if(_0xfeeb69[_0x9a50('0x38')]['includeAll']){_0x50468f[_0x9a50('0x46')]=[{'all':!![]}];}return db['SmsQueue'][_0x9a50('0x47')](_0x50468f);})[_0x9a50('0x29')](function(_0x44be4d){_0x263755[_0x9a50('0x48')]=_0x44be4d;return _0x263755;})[_0x9a50('0x29')](respondWithFilteredResult(_0xb4b742,_0x50468f))[_0x9a50('0x49')](handleError(_0xb4b742,null));};exports['show']=function(_0x189a05,_0x2a583d){var _0x44ed1c={'raw':!![],'where':{'id':_0x189a05[_0x9a50('0x4a')]['id']}},_0x454b1c={};_0x454b1c[_0x9a50('0x35')]=_['keys'](db[_0x9a50('0x4b')][_0x9a50('0x31')]);_0x454b1c[_0x9a50('0x38')]=_['keys'](_0x189a05[_0x9a50('0x38')]);_0x454b1c[_0x9a50('0x41')]=_[_0x9a50('0x39')](_0x454b1c[_0x9a50('0x35')],_0x454b1c[_0x9a50('0x38')]);_0x44ed1c[_0x9a50('0x3b')]=_[_0x9a50('0x39')](_0x454b1c[_0x9a50('0x35')],qs[_0x9a50('0x3a')](_0x189a05[_0x9a50('0x38')]['fields']));_0x44ed1c[_0x9a50('0x3b')]=_0x44ed1c[_0x9a50('0x3b')]['length']?_0x44ed1c[_0x9a50('0x3b')]:_0x454b1c[_0x9a50('0x35')];if(_0x189a05[_0x9a50('0x38')][_0x9a50('0x4c')]){_0x44ed1c[_0x9a50('0x46')]=[{'all':!![]}];}_0x44ed1c=_[_0x9a50('0x43')]({},_0x44ed1c,_0x189a05[_0x9a50('0x4d')]);return db[_0x9a50('0x4b')][_0x9a50('0x4e')](_0x44ed1c)[_0x9a50('0x29')](handleEntityNotFound(_0x2a583d,null))['then'](respondWithResult(_0x2a583d,null))[_0x9a50('0x49')](handleError(_0x2a583d,null));};exports[_0x9a50('0x4f')]=function(_0xf34d84,_0x13af58){return db['SmsQueue']['create'](_0xf34d84[_0x9a50('0x50')],{})[_0x9a50('0x29')](function(_0x13020d){var _0x27d377=_0xf34d84[_0x9a50('0x51')]['get']({'plain':!![]});if(!_0x27d377)throw new Error(_0x9a50('0x52'));if(_0x27d377[_0x9a50('0x53')]==='user'){var _0x24eb06=_0x13020d['get']({'plain':!![]});var _0x318a6b=_0x9a50('0x54');return db[_0x9a50('0x55')][_0x9a50('0x4e')]({'where':{'name':_0x318a6b,'userProfileId':_0x27d377['userProfileId']},'raw':!![]})[_0x9a50('0x29')](function(_0x26b7cc){if(_0x26b7cc&&_0x26b7cc[_0x9a50('0x56')]===0x0){return db[_0x9a50('0x2c')][_0x9a50('0x4f')]({'name':_0x24eb06['name'],'resourceId':_0x24eb06['id'],'type':_0x26b7cc['name'],'sectionId':_0x26b7cc['id']},{})[_0x9a50('0x29')](function(){return _0x13020d;});}else{return _0x13020d;}})[_0x9a50('0x49')](function(_0x8c4ff4){logger['error'](_0x9a50('0x57'),_0x8c4ff4);throw _0x8c4ff4;});}return _0x13020d;})['then'](respondWithResult(_0x13af58,0xc9))[_0x9a50('0x49')](handleError(_0x13af58,null));};exports[_0x9a50('0x28')]=function(_0x55df43,_0x4f540e){if(_0x55df43[_0x9a50('0x50')]['id']){delete _0x55df43[_0x9a50('0x50')]['id'];}return db[_0x9a50('0x4b')]['find']({'where':{'id':_0x55df43['params']['id']}})['then'](handleEntityNotFound(_0x4f540e,null))[_0x9a50('0x29')](saveUpdates(_0x55df43[_0x9a50('0x50')],null))[_0x9a50('0x29')](respondWithResult(_0x4f540e,null))[_0x9a50('0x49')](handleError(_0x4f540e,null));};exports[_0x9a50('0x2a')]=function(_0x48b77b,_0x5d2fc1){return db[_0x9a50('0x4b')][_0x9a50('0x4e')]({'where':{'id':_0x48b77b[_0x9a50('0x4a')]['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x5d2fc1,null))[_0x9a50('0x29')](removeEntity(_0x5d2fc1,null))[_0x9a50('0x49')](handleError(_0x5d2fc1,null));};exports[_0x9a50('0x58')]=function(_0x15bd37,_0x51bffc){return db[_0x9a50('0x4b')][_0x9a50('0x58')]()[_0x9a50('0x29')](respondWithResult(_0x51bffc,null))[_0x9a50('0x49')](handleError(_0x51bffc,null));};exports[_0x9a50('0x59')]=function(_0x30e19c,_0x2bbb29,_0x308806){var _0x382ff9={'raw':!![],'where':{}},_0x3afd8c={},_0x10bd3a;return db[_0x9a50('0x4b')][_0x9a50('0x5a')]({'where':{'id':_0x30e19c[_0x9a50('0x4a')]['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x2bbb29,null))[_0x9a50('0x29')](function(_0x391dc4){if(_0x391dc4){_0x10bd3a=_0x391dc4[_0x9a50('0x2b')]({'plain':!![]});_0x3afd8c['model']=_['keys'](db[_0x9a50('0x5b')][_0x9a50('0x31')]);_0x3afd8c[_0x9a50('0x38')]=_[_0x9a50('0x37')](_0x30e19c[_0x9a50('0x38')]);_0x3afd8c[_0x9a50('0x41')]=_[_0x9a50('0x39')](_0x3afd8c[_0x9a50('0x35')],_0x3afd8c[_0x9a50('0x38')]);_0x382ff9[_0x9a50('0x3b')]=_[_0x9a50('0x39')](_0x3afd8c[_0x9a50('0x35')],qs[_0x9a50('0x3a')](_0x30e19c[_0x9a50('0x38')]['fields']));_0x382ff9[_0x9a50('0x3b')]=_0x382ff9[_0x9a50('0x3b')][_0x9a50('0x3c')]?_0x382ff9[_0x9a50('0x3b')]:_0x3afd8c[_0x9a50('0x35')];if(!_0x30e19c[_0x9a50('0x38')][_0x9a50('0x3d')](_0x9a50('0x3e'))){_0x382ff9[_0x9a50('0x20')]=qs[_0x9a50('0x20')](_0x30e19c[_0x9a50('0x38')][_0x9a50('0x20')]);_0x382ff9[_0x9a50('0x22')]=qs[_0x9a50('0x22')](_0x30e19c[_0x9a50('0x38')][_0x9a50('0x22')]);}_0x382ff9[_0x9a50('0x5c')]=qs[_0x9a50('0x3f')](_0x30e19c[_0x9a50('0x38')]['sort']);_0x382ff9['where']=qs['filters'](_[_0x9a50('0x42')](_0x30e19c['query'],_0x3afd8c['filters']));_0x382ff9[_0x9a50('0x40')][_0x9a50('0x5d')]=_0x391dc4['id'];if(_0x30e19c['query'][_0x9a50('0x45')]){_0x382ff9[_0x9a50('0x40')]=_[_0x9a50('0x43')](_0x382ff9[_0x9a50('0x40')],{'$or':_[_0x9a50('0x36')](_0x382ff9[_0x9a50('0x3b')],function(_0x164141){var _0x23c668={};_0x23c668[_0x164141]={'$like':'%'+_0x30e19c[_0x9a50('0x38')][_0x9a50('0x45')]+'%'};return _0x23c668;})});}_0x382ff9=_[_0x9a50('0x43')]({},_0x382ff9,_0x30e19c[_0x9a50('0x4d')]);return db[_0x9a50('0x5b')][_0x9a50('0x47')](_0x382ff9);}})[_0x9a50('0x29')](function(_0x2e6df1){if(_0x2e6df1){return db[_0x9a50('0x5e')]['findAndCountAll']({'where':{'id':_[_0x9a50('0x36')](_0x2e6df1,'UserId'),'role':_0x9a50('0x5f')},'attributes':['id',_0x9a50('0x2f'),_0x9a50('0x60'),_0x9a50('0x61'),'createdAt']});}})[_0x9a50('0x29')](function(_0x5e3204){if(_0x5e3204){return{'count':_0x5e3204['count'],'rows':_[_0x9a50('0x36')](_0x5e3204[_0x9a50('0x48')],function(_0x379694){return{'membername':_0x379694[_0x9a50('0x2f')],'UserId':_0x379694['id'],'queue_name':_0x10bd3a['name'],'SmsQueueId':_0x10bd3a['id'],'interface':util[_0x9a50('0x62')]('%s/%s',_0x9a50('0x63'),_0x379694[_0x9a50('0x2f')]),'penalty':0x0,'paused':_0x379694[_0x9a50('0x60')],'createdAt':_0x379694[_0x9a50('0x64')],'updatedAt':_0x379694[_0x9a50('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9a50('0x29')](respondWithFilteredResult(_0x2bbb29,_0x382ff9))[_0x9a50('0x49')](handleError(_0x2bbb29,null));};exports[_0x9a50('0x65')]=function(_0x26c13e,_0x1b0763,_0x31a4e5){var _0x35c81a={};var _0x2169ca={};var _0x5675ab;var _0x2c5dcd;return db[_0x9a50('0x4b')][_0x9a50('0x5a')]({'where':{'id':_0x26c13e[_0x9a50('0x4a')]['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x1b0763,null))[_0x9a50('0x29')](function(_0x24ad12){if(_0x24ad12){_0x5675ab=_0x24ad12;_0x2169ca['model']=_['keys'](db[_0x9a50('0x66')]['rawAttributes']);_0x2169ca['query']=_[_0x9a50('0x37')](_0x26c13e[_0x9a50('0x38')]);_0x2169ca[_0x9a50('0x41')]=_[_0x9a50('0x39')](_0x2169ca['model'],_0x2169ca[_0x9a50('0x38')]);_0x35c81a[_0x9a50('0x3b')]=_[_0x9a50('0x39')](_0x2169ca['model'],qs['fields'](_0x26c13e[_0x9a50('0x38')][_0x9a50('0x3a')]));_0x35c81a[_0x9a50('0x3b')]=_0x35c81a[_0x9a50('0x3b')]['length']?_0x35c81a['attributes']:_0x2169ca[_0x9a50('0x35')];_0x35c81a['order']=qs[_0x9a50('0x3f')](_0x26c13e['query'][_0x9a50('0x3f')]);_0x35c81a[_0x9a50('0x40')]=qs[_0x9a50('0x41')](_[_0x9a50('0x42')](_0x26c13e['query'],_0x2169ca[_0x9a50('0x41')]));if(_0x26c13e['query']['filter']){_0x35c81a[_0x9a50('0x40')]=_[_0x9a50('0x43')](_0x35c81a[_0x9a50('0x40')],{'$or':_[_0x9a50('0x36')](_0x35c81a['attributes'],function(_0x54077e){var _0x4e1ac5={};_0x4e1ac5[_0x54077e]={'$like':'%'+_0x26c13e[_0x9a50('0x38')]['filter']+'%'};return _0x4e1ac5;})});}_0x35c81a=_[_0x9a50('0x43')]({},_0x35c81a,_0x26c13e[_0x9a50('0x4d')]);return _0x5675ab[_0x9a50('0x65')](_0x35c81a);}})[_0x9a50('0x29')](function(_0x8fd82f){if(_0x8fd82f){_0x2c5dcd=_0x8fd82f[_0x9a50('0x3c')];if(!_0x26c13e['query'][_0x9a50('0x3d')](_0x9a50('0x3e'))){_0x35c81a[_0x9a50('0x20')]=qs[_0x9a50('0x20')](_0x26c13e[_0x9a50('0x38')][_0x9a50('0x20')]);_0x35c81a['offset']=qs[_0x9a50('0x22')](_0x26c13e['query'][_0x9a50('0x22')]);}return _0x5675ab[_0x9a50('0x65')](_0x35c81a);}})[_0x9a50('0x29')](function(_0x2846c8){if(_0x2846c8){return _0x2846c8?{'count':_0x2c5dcd,'rows':_0x2846c8}:null;}})[_0x9a50('0x29')](respondWithResult(_0x1b0763,null))[_0x9a50('0x49')](handleError(_0x1b0763,null));};exports[_0x9a50('0x67')]=function(_0x5985ff,_0x386db7,_0x2e3ad4){var _0x2f6450=_0x5985ff[_0x9a50('0x50')][_0x9a50('0x68')];return db[_0x9a50('0x66')][_0x9a50('0x47')]({'where':{'id':_0x2f6450},'attributes':['id'],'include':[{'model':db[_0x9a50('0x5e')],'as':'Agents','attributes':['id','name',_0x9a50('0x69'),_0x9a50('0x6a'),_0x9a50('0x6b')],'raw':!![]}]})['then'](function(_0x5c4551){if(_0x5c4551){var _0x219e70=_[_0x9a50('0x6c')](_0x5c4551,function(_0x538178){var _0x58c46f=_0x538178[_0x9a50('0x2b')]({'plain':!![]});return _0x58c46f[_0x9a50('0x6d')];});return db[_0x9a50('0x4b')]['find']({'where':{'id':_0x5985ff['params']['id']}})['then'](function(_0x842d7f){return db[_0x9a50('0x6e')][_0x9a50('0x6f')](function(_0x4324f4){return _0x842d7f[_0x9a50('0x67')](_0x2f6450,{'transaction':_0x4324f4})['then'](function(){return BPromise[_0x9a50('0x70')](_0x219e70,function(_0x37a0f2){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x37a0f2['id'],'SmsQueueId':_0x5985ff[_0x9a50('0x4a')]['id']},'transaction':_0x4324f4});});})[_0x9a50('0x29')](function(){_0x219e70[_0x9a50('0x71')](function(_0xaef8d){socket[_0x9a50('0x72')]('userSmsQueue:save',{'UserId':_0xaef8d['id'],'SmsQueueId':_0x842d7f['id']});});});});});}})[_0x9a50('0x29')](respondWithStatusCode(_0x386db7,null))[_0x9a50('0x49')](handleError(_0x386db7,null));};exports[_0x9a50('0x73')]=function(_0x3edf61,_0x569337,_0x31de5e){return db[_0x9a50('0x66')][_0x9a50('0x47')]({'where':{'id':_0x3edf61[_0x9a50('0x38')][_0x9a50('0x68')]},'attributes':['id'],'include':[{'model':db[_0x9a50('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x569337,null))[_0x9a50('0x29')](function(_0x5bc14c){var _0x794651=_[_0x9a50('0x36')](_0x5bc14c,'id');var _0x45b673=[];var _0x283bf2=[];var _0x17a16a=squel[_0x9a50('0x74')]();_0x17a16a[_0x9a50('0x75')](_0x9a50('0x76'))[_0x9a50('0x77')](_0x9a50('0x78'),'tq')[_0x9a50('0x79')](_0x9a50('0x7a'),'ut',_0x9a50('0x7b'))['where']('SmsQueueId\x20=\x20?',_0x3edf61['params']['id']);for(var _0x286560=0x0;_0x286560<_0x5bc14c['length'];_0x286560+=0x1){let _0x4e154d=_0x5bc14c[_0x286560];for(var _0x22090e=0x0;_0x22090e<_0x4e154d['Agents'][_0x9a50('0x3c')];_0x22090e+=0x1){let _0x1e0b9b=_0x4e154d[_0x9a50('0x6d')][_0x22090e];var _0x2a2bc1=_0x17a16a['clone']();_0x2a2bc1[_0x9a50('0x40')](_0x9a50('0x7c'),_0x1e0b9b['id']);_0x283bf2['push'](db['sequelize']['query'](_0x2a2bc1[_0x9a50('0x7d')](),{'type':db['sequelize'][_0x9a50('0x7e')][_0x9a50('0x7f')]})[_0x9a50('0x29')](function(_0x2d20c3){if(_0x2d20c3[_0x9a50('0x3c')]===0x1){return _0x1e0b9b['id'];}else{var _0x7e0d0f=_['every'](_['map'](_0x2d20c3,_0x9a50('0x80')),function(_0x4ea1c8){return _['includes'](_0x794651,_0x4ea1c8);});if(_0x7e0d0f){return _0x1e0b9b['id'];}}}));}}return BPromise['all'](_0x283bf2)['then'](function(_0x2383fb){_0x45b673=_(_0x45b673)['union'](_0x2383fb)[_0x9a50('0x81')]()[_0x9a50('0x82')]();return db[_0x9a50('0x4b')][_0x9a50('0x4e')]({'where':{'id':_0x3edf61[_0x9a50('0x4a')]['id']}})['then'](function(_0x3709dd){return db[_0x9a50('0x6e')]['transaction'](function(_0x16c754){return _0x3709dd[_0x9a50('0x73')](_0x3edf61[_0x9a50('0x38')]['ids'],{'transaction':_0x16c754})[_0x9a50('0x29')](function(){if(!_[_0x9a50('0x83')](_0x45b673)){return _0x3709dd['removeAgents'](_0x45b673,{'transaction':_0x16c754});}})['then'](function(){_0x45b673[_0x9a50('0x71')](function(_0x5241b8){socket[_0x9a50('0x72')](_0x9a50('0x84'),{'UserId':_0x5241b8,'SmsQueueId':_0x3709dd['id']});});});});});});})[_0x9a50('0x29')](respondWithStatusCode(_0x569337,null))[_0x9a50('0x49')](handleError(_0x569337,null));};exports[_0x9a50('0x85')]=function(_0x39dc54,_0x54295b,_0x368c9d){return db[_0x9a50('0x4b')][_0x9a50('0x4e')]({'where':{'id':_0x39dc54[_0x9a50('0x4a')]['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x54295b,null))[_0x9a50('0x29')](function(_0x2c3eeb){if(_0x2c3eeb){return _0x2c3eeb[_0x9a50('0x85')](_0x39dc54['body'][_0x9a50('0x68')],_[_0x9a50('0x86')](_0x39dc54['body'],['ids','id'])||{})[_0x9a50('0x87')](function(_0x581e50){for(var _0x221b67=0x0;_0x221b67<_0x39dc54[_0x9a50('0x50')][_0x9a50('0x68')][_0x9a50('0x3c')];_0x221b67+=0x1){socket[_0x9a50('0x72')](_0x9a50('0x88'),{'UserId':Number(_0x39dc54[_0x9a50('0x50')][_0x9a50('0x68')][_0x221b67]),'SmsQueueId':Number(_0x39dc54[_0x9a50('0x4a')]['id'])});}return _0x581e50;});}})[_0x9a50('0x29')](respondWithResult(_0x54295b,null))[_0x9a50('0x49')](handleError(_0x54295b,null));};exports[_0x9a50('0x89')]=function(_0x4c3112,_0x5c3b56,_0x499a35){return db[_0x9a50('0x4b')][_0x9a50('0x4e')]({'where':{'id':_0x4c3112[_0x9a50('0x4a')]['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x5c3b56,null))[_0x9a50('0x29')](function(_0x731f3d){if(_0x731f3d){return _0x731f3d[_0x9a50('0x89')](_0x4c3112[_0x9a50('0x38')][_0x9a50('0x68')])[_0x9a50('0x29')](function(){if(_[_0x9a50('0x8a')](_0x4c3112[_0x9a50('0x38')][_0x9a50('0x68')])){for(var _0x10527a=0x0;_0x10527a<_0x4c3112['query'][_0x9a50('0x68')][_0x9a50('0x3c')];_0x10527a+=0x1){socket['emit'](_0x9a50('0x84'),{'UserId':Number(_0x4c3112[_0x9a50('0x38')]['ids'][_0x10527a]),'SmsQueueId':Number(_0x4c3112[_0x9a50('0x4a')]['id'])});}}else{socket['emit'](_0x9a50('0x84'),{'UserId':Number(_0x4c3112[_0x9a50('0x38')]['ids']),'SmsQueueId':Number(_0x4c3112['params']['id'])});}});}})['then'](respondWithStatusCode(_0x5c3b56,null))[_0x9a50('0x49')](handleError(_0x5c3b56,null));};exports[_0x9a50('0x8b')]=function(_0x3e9fa4,_0x1b7d39,_0x2447c1){var _0x1ba306={};var _0x41502d={};var _0x88b0fb;var _0x1d0c97;return db[_0x9a50('0x4b')][_0x9a50('0x5a')]({'where':{'id':_0x3e9fa4['params']['id']}})[_0x9a50('0x29')](handleEntityNotFound(_0x1b7d39,null))[_0x9a50('0x29')](function(_0x16887e){if(_0x16887e){_0x88b0fb=_0x16887e;_0x41502d['model']=_['keys'](db[_0x9a50('0x5e')]['rawAttributes']);_0x41502d[_0x9a50('0x38')]=_[_0x9a50('0x37')](_0x3e9fa4[_0x9a50('0x38')]);_0x41502d[_0x9a50('0x41')]=_[_0x9a50('0x39')](_0x41502d[_0x9a50('0x35')],_0x41502d[_0x9a50('0x38')]);_0x1ba306[_0x9a50('0x3b')]=_[_0x9a50('0x39')](_0x41502d[_0x9a50('0x35')],qs[_0x9a50('0x3a')](_0x3e9fa4[_0x9a50('0x38')][_0x9a50('0x3a')]));_0x1ba306[_0x9a50('0x3b')]=_0x1ba306[_0x9a50('0x3b')]['length']?_0x1ba306['attributes']:_0x41502d[_0x9a50('0x35')];_0x1ba306[_0x9a50('0x5c')]=qs[_0x9a50('0x3f')](_0x3e9fa4[_0x9a50('0x38')][_0x9a50('0x3f')]);_0x1ba306[_0x9a50('0x40')]=qs['filters'](_[_0x9a50('0x42')](_0x3e9fa4['query'],_0x41502d[_0x9a50('0x41')]));if(_0x3e9fa4[_0x9a50('0x38')]['filter']){_0x1ba306[_0x9a50('0x40')]=_[_0x9a50('0x43')](_0x1ba306[_0x9a50('0x40')],{'$or':_[_0x9a50('0x36')](_0x1ba306[_0x9a50('0x3b')],function(_0x547ecb){var _0x44ab24={};_0x44ab24[_0x547ecb]={'$like':'%'+_0x3e9fa4['query'][_0x9a50('0x45')]+'%'};return _0x44ab24;})});}_0x1ba306=_[_0x9a50('0x43')]({},_0x1ba306,_0x3e9fa4[_0x9a50('0x4d')]);return _0x88b0fb[_0x9a50('0x8b')](_0x1ba306);}})['then'](function(_0x39ffa9){if(_0x39ffa9){_0x1d0c97=_0x39ffa9[_0x9a50('0x3c')];if(!_0x3e9fa4[_0x9a50('0x38')][_0x9a50('0x3d')](_0x9a50('0x3e'))){_0x1ba306[_0x9a50('0x20')]=qs['limit'](_0x3e9fa4['query'][_0x9a50('0x20')]);_0x1ba306[_0x9a50('0x22')]=qs[_0x9a50('0x22')](_0x3e9fa4[_0x9a50('0x38')][_0x9a50('0x22')]);}return _0x88b0fb[_0x9a50('0x8b')](_0x1ba306);}})[_0x9a50('0x29')](function(_0x71e5f0){if(_0x71e5f0){return _0x71e5f0?{'count':_0x1d0c97,'rows':_0x71e5f0}:null;}})[_0x9a50('0x29')](respondWithResult(_0x1b7d39,null))[_0x9a50('0x49')](handleError(_0x1b7d39,null));};
\ No newline at end of file
index d8df152..9c9a3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x016e=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x18a1ef,_0x2e0151){var _0x4a28d9=function(_0x215fde){while(--_0x215fde){_0x18a1ef['push'](_0x18a1ef['shift']());}};_0x4a28d9(++_0x2e0151);}(_0x016e,0x155));var _0xe016=function(_0x4bc7e,_0x2c3c57){_0x4bc7e=_0x4bc7e-0x0;var _0x5bf96a=_0x016e[_0x4bc7e];return _0x5bf96a;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xe016('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xe016('0x1')](0x0);var events={'afterCreate':_0xe016('0x2'),'afterUpdate':_0xe016('0x3'),'afterDestroy':'remove'};function emitEvent(_0xa8b03d){return function(_0x5bb574,_0x53307a,_0xf251c9){SmsQueueEvents[_0xe016('0x4')](_0xa8b03d+':'+_0x5bb574['id'],_0x5bb574);SmsQueueEvents[_0xe016('0x4')](_0xa8b03d,_0x5bb574);_0xf251c9(null);};}for(var e in events){if(events[_0xe016('0x5')](e)){var event=events[e];SmsQueue[_0xe016('0x6')](e,emitEvent(event));}}module[_0xe016('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0x2adc=['save','update','remove','emit','hasOwnProperty','exports','SmsQueue','setMaxListeners'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2adc,0x18e));var _0xc2ad=function(_0x2559e1,_0x336f1a){_0x2559e1=_0x2559e1-0x0;var _0x1c55fd=_0x2adc[_0x2559e1];return _0x1c55fd;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0xc2ad('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xc2ad('0x1')](0x0);var events={'afterCreate':_0xc2ad('0x2'),'afterUpdate':_0xc2ad('0x3'),'afterDestroy':_0xc2ad('0x4')};function emitEvent(_0x5303ff){return function(_0x152bf0,_0x21733b,_0x6a2640){SmsQueueEvents[_0xc2ad('0x5')](_0x5303ff+':'+_0x152bf0['id'],_0x152bf0);SmsQueueEvents[_0xc2ad('0x5')](_0x5303ff,_0x152bf0);_0x6a2640(null);};}for(var e in events){if(events[_0xc2ad('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xc2ad('0x7')]=SmsQueueEvents;
\ No newline at end of file
index d556ab6..9971fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ed=['bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x1da9ec,_0x5ba3de){var _0x15e65a=function(_0x55eb0b){while(--_0x55eb0b){_0x1da9ec['push'](_0x1da9ec['shift']());}};_0x15e65a(++_0x5ba3de);}(_0x20ed,0xaf));var _0xd20e=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x20ed[_0x2aec52];return _0x3b8835;};'use strict';var _=require(_0xd20e('0x0'));var util=require(_0xd20e('0x1'));var logger=require(_0xd20e('0x2'))(_0xd20e('0x3'));var moment=require(_0xd20e('0x4'));var BPromise=require(_0xd20e('0x5'));var rp=require(_0xd20e('0x6'));var fs=require('fs');var path=require(_0xd20e('0x7'));var rimraf=require(_0xd20e('0x8'));var config=require(_0xd20e('0x9'));var attributes=require(_0xd20e('0xa'));module[_0xd20e('0xb')]=function(_0x2b6640,_0x7cd53d){return _0x2b6640[_0xd20e('0xc')](_0xd20e('0xd'),attributes,{'tableName':_0xd20e('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x46bc=['bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','sms_queues','lodash','util','../../config/logger','moment'];(function(_0x2ede53,_0xa356bf){var _0x439d8a=function(_0x5ce48a){while(--_0x5ce48a){_0x2ede53['push'](_0x2ede53['shift']());}};_0x439d8a(++_0xa356bf);}(_0x46bc,0xe6));var _0xc46b=function(_0x11ec6c,_0x1a8169){_0x11ec6c=_0x11ec6c-0x0;var _0xb59506=_0x46bc[_0x11ec6c];return _0xb59506;};'use strict';var _=require(_0xc46b('0x0'));var util=require(_0xc46b('0x1'));var logger=require(_0xc46b('0x2'))('api');var moment=require(_0xc46b('0x3'));var BPromise=require(_0xc46b('0x4'));var rp=require(_0xc46b('0x5'));var fs=require('fs');var path=require(_0xc46b('0x6'));var rimraf=require(_0xc46b('0x7'));var config=require(_0xc46b('0x8'));var attributes=require(_0xc46b('0x9'));module[_0xc46b('0xa')]=function(_0x9c7799,_0xc163d6){return _0x9c7799[_0xc46b('0xb')]('SmsQueue',attributes,{'tableName':_0xc46b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 40e0e44..ac2053a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c27=['result','SmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetSmsQueue','stringify','catch','find','ShowSmsQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','socket.io-emitter','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x12d603,_0x170b32){var _0x24c8fe=function(_0x5483d8){while(--_0x5483d8){_0x12d603['push'](_0x12d603['shift']());}};_0x24c8fe(++_0x170b32);}(_0x3c27,0x1f0));var _0x73c2=function(_0x20a618,_0x3d1a7b){_0x20a618=_0x20a618-0x0;var _0x3be658=_0x3c27[_0x20a618];return _0x3be658;};'use strict';var _=require(_0x73c2('0x0'));var util=require(_0x73c2('0x1'));var moment=require(_0x73c2('0x2'));var BPromise=require(_0x73c2('0x3'));var rs=require(_0x73c2('0x4'));var fs=require('fs');var Redis=require(_0x73c2('0x5'));var db=require(_0x73c2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x73c2('0x7'))(_0x73c2('0x8'));var config=require(_0x73c2('0x9'));var jayson=require(_0x73c2('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x73c2('0xb')](config[_0x73c2('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x73c2('0xd'))(new Redis(config[_0x73c2('0xc')]));require(_0x73c2('0xe'))['register'](socket);function respondWithRpcPromise(_0x1d17dd,_0x17962c,_0x457ecb){return new BPromise(function(_0x1ffe6d,_0x46b9ba){return client[_0x73c2('0xf')](_0x1d17dd,_0x457ecb)[_0x73c2('0x10')](function(_0x225caa){logger[_0x73c2('0x11')](_0x73c2('0x12'),_0x17962c,_0x73c2('0x13'));logger[_0x73c2('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x17962c,_0x73c2('0x13'),JSON['stringify'](_0x225caa));if(_0x225caa[_0x73c2('0x15')]){if(_0x225caa['error'][_0x73c2('0x16')]===0x1f4){logger['error']('SmsQueue,\x20%s,\x20%s',_0x17962c,_0x225caa['error'][_0x73c2('0x17')]);return _0x46b9ba(_0x225caa[_0x73c2('0x15')][_0x73c2('0x17')]);}logger[_0x73c2('0x15')](_0x73c2('0x12'),_0x17962c,_0x225caa['error'][_0x73c2('0x17')]);return _0x1ffe6d(_0x225caa[_0x73c2('0x15')][_0x73c2('0x17')]);}else{logger['info'](_0x73c2('0x12'),_0x17962c,_0x73c2('0x13'));_0x1ffe6d(_0x225caa[_0x73c2('0x18')][_0x73c2('0x17')]);}})['catch'](function(_0x5746c3){logger['error'](_0x73c2('0x12'),_0x17962c,_0x5746c3);_0x46b9ba(_0x5746c3);});});}exports['GetSmsQueue']=function(_0x792564){var _0x4f20f9=this;return new Promise(function(_0x4752b6,_0xcc0f1c){return db[_0x73c2('0x19')][_0x73c2('0x1a')]({'raw':_0x792564[_0x73c2('0x1b')]?_0x792564[_0x73c2('0x1b')][_0x73c2('0x1c')]===undefined?!![]:![]:!![],'where':_0x792564[_0x73c2('0x1b')]?_0x792564[_0x73c2('0x1b')][_0x73c2('0x1d')]||null:null,'attributes':_0x792564[_0x73c2('0x1b')]?_0x792564['options'][_0x73c2('0x1e')]||null:null,'limit':_0x792564['options']?_0x792564['options'][_0x73c2('0x1f')]||null:null,'include':_0x792564['options']?_0x792564[_0x73c2('0x1b')][_0x73c2('0x20')]?_[_0x73c2('0x21')](_0x792564[_0x73c2('0x1b')][_0x73c2('0x20')],function(_0xf6c188){return{'model':db[_0xf6c188[_0x73c2('0x22')]],'as':_0xf6c188['as'],'attributes':_0xf6c188['attributes'],'include':_0xf6c188[_0x73c2('0x20')]?_[_0x73c2('0x21')](_0xf6c188['include'],function(_0xe89fd0){return{'model':db[_0xe89fd0['model']],'as':_0xe89fd0['as'],'attributes':_0xe89fd0['attributes'],'include':_0xe89fd0[_0x73c2('0x20')]?_[_0x73c2('0x21')](_0xe89fd0[_0x73c2('0x20')],function(_0x6dc4af){return{'model':db[_0x6dc4af['model']],'as':_0x6dc4af['as'],'attributes':_0x6dc4af['attributes']};}):[]};}):[]};}):[]:[]})[_0x73c2('0x10')](function(_0x3ac9dd){logger['info'](_0x73c2('0x23'),_0x792564);logger[_0x73c2('0x14')](_0x73c2('0x23'),_0x792564,JSON[_0x73c2('0x24')](_0x3ac9dd));_0x4752b6(_0x3ac9dd);})[_0x73c2('0x25')](function(_0x2080f0){logger['error'](_0x73c2('0x23'),_0x2080f0[_0x73c2('0x17')],_0x792564);_0xcc0f1c(_0x4f20f9[_0x73c2('0x15')](0x1f4,_0x2080f0['message']));});});};exports['ShowSmsQueue']=function(_0x526ddc){var _0x5a86c9=this;return new Promise(function(_0x24a6c9,_0x55f2ba){return db[_0x73c2('0x19')][_0x73c2('0x26')]({'raw':_0x526ddc[_0x73c2('0x1b')]?_0x526ddc[_0x73c2('0x1b')][_0x73c2('0x1c')]===undefined?!![]:![]:!![],'where':_0x526ddc[_0x73c2('0x1b')]?_0x526ddc['options'][_0x73c2('0x1d')]||null:null,'attributes':_0x526ddc[_0x73c2('0x1b')]?_0x526ddc['options'][_0x73c2('0x1e')]||null:null,'include':_0x526ddc['options']?_0x526ddc[_0x73c2('0x1b')][_0x73c2('0x20')]?_['map'](_0x526ddc[_0x73c2('0x1b')][_0x73c2('0x20')],function(_0x135907){return{'model':db[_0x135907[_0x73c2('0x22')]],'as':_0x135907['as'],'attributes':_0x135907[_0x73c2('0x1e')],'include':_0x135907[_0x73c2('0x20')]?_[_0x73c2('0x21')](_0x135907['include'],function(_0x585461){return{'model':db[_0x585461[_0x73c2('0x22')]],'as':_0x585461['as'],'attributes':_0x585461[_0x73c2('0x1e')],'include':_0x585461[_0x73c2('0x20')]?_[_0x73c2('0x21')](_0x585461[_0x73c2('0x20')],function(_0x1bf781){return{'model':db[_0x1bf781[_0x73c2('0x22')]],'as':_0x1bf781['as'],'attributes':_0x1bf781[_0x73c2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x73c2('0x10')](function(_0xd5a150){logger[_0x73c2('0x11')](_0x73c2('0x27'),_0x526ddc);logger[_0x73c2('0x14')](_0x73c2('0x27'),_0x526ddc,JSON[_0x73c2('0x24')](_0xd5a150));_0x24a6c9(_0xd5a150);})[_0x73c2('0x25')](function(_0x4b937d){logger['error'](_0x73c2('0x27'),_0x4b937d[_0x73c2('0x17')],_0x526ddc);_0x55f2ba(_0x5a86c9['error'](0x1f4,_0x4b937d['message']));});});};
\ No newline at end of file
+var _0xf453=['debug','stringify','ShowSmsQueue','SmsQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetSmsQueue','findAll','options','raw','where','limit','include','model','attributes','map'];(function(_0x45845e,_0x53cec9){var _0x298660=function(_0x567ecf){while(--_0x567ecf){_0x45845e['push'](_0x45845e['shift']());}};_0x298660(++_0x53cec9);}(_0xf453,0xe1));var _0x3f45=function(_0x14b069,_0x2d0a39){_0x14b069=_0x14b069-0x0;var _0x59058c=_0xf453[_0x14b069];return _0x59058c;};'use strict';var _=require(_0x3f45('0x0'));var util=require(_0x3f45('0x1'));var moment=require('moment');var BPromise=require(_0x3f45('0x2'));var rs=require(_0x3f45('0x3'));var fs=require('fs');var Redis=require(_0x3f45('0x4'));var db=require(_0x3f45('0x5'))['db'];var utils=require(_0x3f45('0x6'));var logger=require(_0x3f45('0x7'))(_0x3f45('0x8'));var config=require(_0x3f45('0x9'));var jayson=require(_0x3f45('0xa'));var client=jayson[_0x3f45('0xb')][_0x3f45('0xc')]({'port':0x232a});config['redis']=_[_0x3f45('0xd')](config[_0x3f45('0xe')],{'host':_0x3f45('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3f45('0x10'))[_0x3f45('0x11')](socket);function respondWithRpcPromise(_0x7f3ef8,_0x160cb0,_0xa00339){return new BPromise(function(_0x3669dc,_0x20ece6){return client[_0x3f45('0x12')](_0x7f3ef8,_0xa00339)[_0x3f45('0x13')](function(_0x3612b9){logger[_0x3f45('0x14')](_0x3f45('0x15'),_0x160cb0,'request\x20sent');logger['debug'](_0x3f45('0x16'),_0x160cb0,_0x3f45('0x17'),JSON['stringify'](_0x3612b9));if(_0x3612b9[_0x3f45('0x18')]){if(_0x3612b9[_0x3f45('0x18')][_0x3f45('0x19')]===0x1f4){logger[_0x3f45('0x18')](_0x3f45('0x15'),_0x160cb0,_0x3612b9[_0x3f45('0x18')][_0x3f45('0x1a')]);return _0x20ece6(_0x3612b9['error'][_0x3f45('0x1a')]);}logger[_0x3f45('0x18')](_0x3f45('0x15'),_0x160cb0,_0x3612b9[_0x3f45('0x18')][_0x3f45('0x1a')]);return _0x3669dc(_0x3612b9['error'][_0x3f45('0x1a')]);}else{logger[_0x3f45('0x14')](_0x3f45('0x15'),_0x160cb0,'request\x20sent');_0x3669dc(_0x3612b9[_0x3f45('0x1b')][_0x3f45('0x1a')]);}})[_0x3f45('0x1c')](function(_0x3a18b0){logger[_0x3f45('0x18')](_0x3f45('0x15'),_0x160cb0,_0x3a18b0);_0x20ece6(_0x3a18b0);});});}exports[_0x3f45('0x1d')]=function(_0x7b6d4d){var _0x464774=this;return new Promise(function(_0xc22475,_0x12bca7){return db['SmsQueue'][_0x3f45('0x1e')]({'raw':_0x7b6d4d['options']?_0x7b6d4d[_0x3f45('0x1f')][_0x3f45('0x20')]===undefined?!![]:![]:!![],'where':_0x7b6d4d[_0x3f45('0x1f')]?_0x7b6d4d[_0x3f45('0x1f')][_0x3f45('0x21')]||null:null,'attributes':_0x7b6d4d[_0x3f45('0x1f')]?_0x7b6d4d[_0x3f45('0x1f')]['attributes']||null:null,'limit':_0x7b6d4d['options']?_0x7b6d4d['options'][_0x3f45('0x22')]||null:null,'include':_0x7b6d4d['options']?_0x7b6d4d[_0x3f45('0x1f')][_0x3f45('0x23')]?_['map'](_0x7b6d4d[_0x3f45('0x1f')][_0x3f45('0x23')],function(_0x54c741){return{'model':db[_0x54c741[_0x3f45('0x24')]],'as':_0x54c741['as'],'attributes':_0x54c741[_0x3f45('0x25')],'include':_0x54c741['include']?_[_0x3f45('0x26')](_0x54c741[_0x3f45('0x23')],function(_0x5cb38f){return{'model':db[_0x5cb38f[_0x3f45('0x24')]],'as':_0x5cb38f['as'],'attributes':_0x5cb38f[_0x3f45('0x25')],'include':_0x5cb38f[_0x3f45('0x23')]?_[_0x3f45('0x26')](_0x5cb38f[_0x3f45('0x23')],function(_0x1f277d){return{'model':db[_0x1f277d[_0x3f45('0x24')]],'as':_0x1f277d['as'],'attributes':_0x1f277d[_0x3f45('0x25')]};}):[]};}):[]};}):[]:[]})[_0x3f45('0x13')](function(_0x4b389e){logger[_0x3f45('0x14')](_0x3f45('0x1d'),_0x7b6d4d);logger[_0x3f45('0x27')](_0x3f45('0x1d'),_0x7b6d4d,JSON[_0x3f45('0x28')](_0x4b389e));_0xc22475(_0x4b389e);})['catch'](function(_0x3a4875){logger[_0x3f45('0x18')](_0x3f45('0x1d'),_0x3a4875[_0x3f45('0x1a')],_0x7b6d4d);_0x12bca7(_0x464774[_0x3f45('0x18')](0x1f4,_0x3a4875[_0x3f45('0x1a')]));});});};exports[_0x3f45('0x29')]=function(_0xcbe608){var _0xc4c256=this;return new Promise(function(_0xe26321,_0x5596ca){return db[_0x3f45('0x2a')][_0x3f45('0x2b')]({'raw':_0xcbe608[_0x3f45('0x1f')]?_0xcbe608[_0x3f45('0x1f')][_0x3f45('0x20')]===undefined?!![]:![]:!![],'where':_0xcbe608[_0x3f45('0x1f')]?_0xcbe608[_0x3f45('0x1f')][_0x3f45('0x21')]||null:null,'attributes':_0xcbe608['options']?_0xcbe608[_0x3f45('0x1f')][_0x3f45('0x25')]||null:null,'include':_0xcbe608[_0x3f45('0x1f')]?_0xcbe608[_0x3f45('0x1f')][_0x3f45('0x23')]?_[_0x3f45('0x26')](_0xcbe608[_0x3f45('0x1f')][_0x3f45('0x23')],function(_0x259b63){return{'model':db[_0x259b63[_0x3f45('0x24')]],'as':_0x259b63['as'],'attributes':_0x259b63[_0x3f45('0x25')],'include':_0x259b63[_0x3f45('0x23')]?_[_0x3f45('0x26')](_0x259b63[_0x3f45('0x23')],function(_0x339597){return{'model':db[_0x339597[_0x3f45('0x24')]],'as':_0x339597['as'],'attributes':_0x339597[_0x3f45('0x25')],'include':_0x339597['include']?_[_0x3f45('0x26')](_0x339597[_0x3f45('0x23')],function(_0x4434d5){return{'model':db[_0x4434d5[_0x3f45('0x24')]],'as':_0x4434d5['as'],'attributes':_0x4434d5[_0x3f45('0x25')]};}):[]};}):[]};}):[]:[]})[_0x3f45('0x13')](function(_0x4638e0){logger[_0x3f45('0x14')](_0x3f45('0x29'),_0xcbe608);logger[_0x3f45('0x27')](_0x3f45('0x29'),_0xcbe608,JSON[_0x3f45('0x28')](_0x4638e0));_0xe26321(_0x4638e0);})[_0x3f45('0x1c')](function(_0x227ef3){logger['error']('ShowSmsQueue',_0x227ef3['message'],_0xcbe608);_0x5596ca(_0xc4c256[_0x3f45('0x18')](0x1f4,_0x227ef3[_0x3f45('0x1a')]));});});};
\ No newline at end of file
index 25be802..1efca87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3693=['remove','update','emit','removeListener','register','length','smsQueue:'];(function(_0x57da13,_0x319c63){var _0x4e3f98=function(_0x5a765f){while(--_0x5a765f){_0x57da13['push'](_0x57da13['shift']());}};_0x4e3f98(++_0x319c63);}(_0x3693,0x118));var _0x3369=function(_0x4ffbc5,_0xbb496b){_0x4ffbc5=_0x4ffbc5-0x0;var _0x1ce5dc=_0x3693[_0x4ffbc5];return _0x1ce5dc;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0x3369('0x0'),_0x3369('0x1')];function createListener(_0x4d819d,_0x37a9b1){return function(_0x21e6c6){_0x37a9b1[_0x3369('0x2')](_0x4d819d,_0x21e6c6);};}function removeListener(_0x512db4,_0x4e0d76){return function(){SmsQueueEvents[_0x3369('0x3')](_0x512db4,_0x4e0d76);};}exports[_0x3369('0x4')]=function(_0x300e9e){for(var _0x46f851=0x0,_0x19db37=events[_0x3369('0x5')];_0x46f851<_0x19db37;_0x46f851++){var _0x5c801c=events[_0x46f851];var _0x498ce9=createListener(_0x3369('0x6')+_0x5c801c,_0x300e9e);SmsQueueEvents['on'](_0x5c801c,_0x498ce9);}};
\ No newline at end of file
+var _0x88f1=['save','remove','update','removeListener','smsQueue:','./smsQueue.events'];(function(_0x1484b7,_0x12a5bc){var _0x3539de=function(_0x1a4453){while(--_0x1a4453){_0x1484b7['push'](_0x1484b7['shift']());}};_0x3539de(++_0x12a5bc);}(_0x88f1,0x1f1));var _0x188f=function(_0x57b6f4,_0x1b4bd7){_0x57b6f4=_0x57b6f4-0x0;var _0x12355f=_0x88f1[_0x57b6f4];return _0x12355f;};'use strict';var SmsQueueEvents=require(_0x188f('0x0'));var events=[_0x188f('0x1'),_0x188f('0x2'),_0x188f('0x3')];function createListener(_0x1ab6ae,_0x5293b9){return function(_0x28edc8){_0x5293b9['emit'](_0x1ab6ae,_0x28edc8);};}function removeListener(_0x52e164,_0x507c19){return function(){SmsQueueEvents[_0x188f('0x4')](_0x52e164,_0x507c19);};}exports['register']=function(_0x37ecc1){for(var _0x2e35a=0x0,_0x3bd584=events['length'];_0x2e35a<_0x3bd584;_0x2e35a++){var _0x8e4a92=events[_0x2e35a];var _0x21800a=createListener(_0x188f('0x5')+_0x8e4a92,_0x37ecc1);SmsQueueEvents['on'](_0x8e4a92,_0x21800a);}};
\ No newline at end of file
index 1b70172..311dbec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd1=['/:id','show','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index'];(function(_0x5774be,_0x2259d3){var _0x4914b4=function(_0x1eebc3){while(--_0x1eebc3){_0x5774be['push'](_0x5774be['shift']());}};_0x4914b4(++_0x2259d3);}(_0x6dd1,0x111));var _0x16dd=function(_0x1d816f,_0xe3dfe){_0x1d816f=_0x1d816f-0x0;var _0x8fd161=_0x6dd1[_0x1d816f];return _0x8fd161;};'use strict';var multer=require(_0x16dd('0x0'));var util=require('util');var path=require(_0x16dd('0x1'));var timeout=require(_0x16dd('0x2'));var express=require('express');var router=express[_0x16dd('0x3')]();var fs_extra=require(_0x16dd('0x4'));var auth=require(_0x16dd('0x5'));var interaction=require(_0x16dd('0x6'));var config=require(_0x16dd('0x7'));var controller=require(_0x16dd('0x8'));router[_0x16dd('0x9')]('/',auth[_0x16dd('0xa')](),controller[_0x16dd('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x16dd('0x9')](_0x16dd('0xc'),auth[_0x16dd('0xa')](),controller[_0x16dd('0xd')]);router['post']('/',auth[_0x16dd('0xa')](),controller['create']);router[_0x16dd('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x16dd('0xf')]);router[_0x16dd('0x10')]('/:id',auth[_0x16dd('0xa')](),controller[_0x16dd('0x11')]);module[_0x16dd('0x12')]=router;
\ No newline at end of file
+var _0x7ece=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id','show','create'];(function(_0x364b32,_0x4dec35){var _0x3f3ea0=function(_0x1911a8){while(--_0x1911a8){_0x364b32['push'](_0x364b32['shift']());}};_0x3f3ea0(++_0x4dec35);}(_0x7ece,0xc9));var _0xe7ec=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x7ece[_0x11005e];return _0x29338f;};'use strict';var multer=require('multer');var util=require(_0xe7ec('0x0'));var path=require(_0xe7ec('0x1'));var timeout=require('connect-timeout');var express=require(_0xe7ec('0x2'));var router=express[_0xe7ec('0x3')]();var fs_extra=require(_0xe7ec('0x4'));var auth=require(_0xe7ec('0x5'));var interaction=require(_0xe7ec('0x6'));var config=require(_0xe7ec('0x7'));var controller=require('./smsQueueReport.controller');router['get']('/',auth[_0xe7ec('0x8')](),controller['index']);router[_0xe7ec('0x9')](_0xe7ec('0xa'),auth[_0xe7ec('0x8')](),controller[_0xe7ec('0xb')]);router[_0xe7ec('0x9')](_0xe7ec('0xc'),auth['isAuthenticated'](),controller[_0xe7ec('0xd')]);router['post']('/',auth[_0xe7ec('0x8')](),controller[_0xe7ec('0xe')]);router['put'](_0xe7ec('0xc'),auth[_0xe7ec('0x8')](),controller['update']);router[_0xe7ec('0xf')](_0xe7ec('0xc'),auth[_0xe7ec('0x8')](),controller[_0xe7ec('0x10')]);module[_0xe7ec('0x11')]=router;
\ No newline at end of file
index e7b52f4..e4ce7d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ad=['sequelize','exports','DATE','STRING'];(function(_0x386247,_0x5dcfa9){var _0x3abf65=function(_0x29d423){while(--_0x29d423){_0x386247['push'](_0x386247['shift']());}};_0x3abf65(++_0x5dcfa9);}(_0xb3ad,0x110));var _0xdb3a=function(_0x30fc33,_0x172aad){_0x30fc33=_0x30fc33-0x0;var _0x265bbf=_0xb3ad[_0x30fc33];return _0x265bbf;};'use strict';var moment=require('moment');var Sequelize=require(_0xdb3a('0x0'));module[_0xdb3a('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xdb3a('0x2')]},'leaveAt':{'type':Sequelize[_0xdb3a('0x2')]},'acceptAt':{'type':Sequelize[_0xdb3a('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xdb3a('0x3')]}};
\ No newline at end of file
+var _0xc734=['sequelize','exports','STRING','DATE','moment'];(function(_0x1b79e6,_0x27e416){var _0x42d0e7=function(_0x57c204){while(--_0x57c204){_0x1b79e6['push'](_0x1b79e6['shift']());}};_0x42d0e7(++_0x27e416);}(_0xc734,0x108));var _0x4c73=function(_0x5cab28,_0x307622){_0x5cab28=_0x5cab28-0x0;var _0xa3554d=_0xc734[_0x5cab28];return _0xa3554d;};'use strict';var moment=require(_0x4c73('0x0'));var Sequelize=require(_0x4c73('0x1'));module[_0x4c73('0x2')]={'uniqueid':{'type':Sequelize[_0x4c73('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x4c73('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x4c73('0x4')]},'acceptAt':{'type':Sequelize[_0x4c73('0x4')]},'exitAt':{'type':Sequelize[_0x4c73('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ddc47b1..e25c2cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe154=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x3bb557,_0x2d4e15){var _0x5eebcb=function(_0x309c44){while(--_0x309c44){_0x3bb557['push'](_0x3bb557['shift']());}};_0x5eebcb(++_0x2d4e15);}(_0xe154,0xd2));var _0x4e15=function(_0x211087,_0x354fdd){_0x211087=_0x211087-0x0;var _0x2a581f=_0xe154[_0x211087];return _0x2a581f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4e15('0x0'));var zipdir=require(_0x4e15('0x1'));var jsonpatch=require(_0x4e15('0x2'));var rp=require(_0x4e15('0x3'));var moment=require(_0x4e15('0x4'));var BPromise=require(_0x4e15('0x5'));var Mustache=require(_0x4e15('0x6'));var util=require(_0x4e15('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4e15('0x8'));var ejs=require(_0x4e15('0x9'));var fs=require('fs');var fs_extra=require(_0x4e15('0xa'));var _=require(_0x4e15('0xb'));var squel=require(_0x4e15('0xc'));var crypto=require(_0x4e15('0xd'));var jsforce=require(_0x4e15('0xe'));var deskjs=require(_0x4e15('0xf'));var toCsv=require(_0x4e15('0x8'));var querystring=require(_0x4e15('0x10'));var Papa=require(_0x4e15('0x11'));var Redis=require(_0x4e15('0x12'));var authService=require(_0x4e15('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4e15('0x14'));var hardwareService=require(_0x4e15('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4e15('0x16'))['db'];function respondWithStatusCode(_0xae6529,_0x1bcea3){_0x1bcea3=_0x1bcea3||0xcc;return function(_0x32dca5){if(_0x32dca5){return _0xae6529['sendStatus'](_0x1bcea3);}return _0xae6529['status'](_0x1bcea3)[_0x4e15('0x17')]();};}function respondWithResult(_0x48030f,_0x4fc3ce){_0x4fc3ce=_0x4fc3ce||0xc8;return function(_0xbe1d33){if(_0xbe1d33){return _0x48030f[_0x4e15('0x18')](_0x4fc3ce)[_0x4e15('0x19')](_0xbe1d33);}};}function respondWithFilteredResult(_0x4210e2,_0x56e4c7){return function(_0xccc202){if(_0xccc202){var _0x16d931=typeof _0x56e4c7[_0x4e15('0x1a')]==='undefined'&&typeof _0x56e4c7[_0x4e15('0x1b')]===_0x4e15('0x1c');var _0x4a07b8=_0xccc202[_0x4e15('0x1d')];var _0x35fb78=_0x16d931?0x0:_0x56e4c7['offset'];var _0x8aab9d=_0x16d931?_0xccc202[_0x4e15('0x1d')]:_0x56e4c7[_0x4e15('0x1a')]+_0x56e4c7[_0x4e15('0x1b')];var _0xcdf263;if(_0x8aab9d>=_0x4a07b8){_0x8aab9d=_0x4a07b8;_0xcdf263=0xc8;}else{_0xcdf263=0xce;}_0x4210e2[_0x4e15('0x18')](_0xcdf263);return _0x4210e2[_0x4e15('0x1e')](_0x4e15('0x1f'),_0x35fb78+'-'+_0x8aab9d+'/'+_0x4a07b8)[_0x4e15('0x19')](_0xccc202);}return null;};}function patchUpdates(_0xbaedbe){return function(_0x2aa56a){try{jsonpatch[_0x4e15('0x20')](_0x2aa56a,_0xbaedbe,!![]);}catch(_0x41c52f){return BPromise[_0x4e15('0x21')](_0x41c52f);}return _0x2aa56a[_0x4e15('0x22')]();};}function saveUpdates(_0x4f04de,_0x41fd1c){return function(_0x29c07b){if(_0x29c07b){return _0x29c07b[_0x4e15('0x23')](_0x4f04de)[_0x4e15('0x24')](function(_0x114003){return _0x114003;});}return null;};}function removeEntity(_0x49797d,_0x304768){return function(_0x177988){if(_0x177988){return _0x177988[_0x4e15('0x25')]()[_0x4e15('0x24')](function(){_0x49797d['status'](0xcc)[_0x4e15('0x17')]();});}};}function handleEntityNotFound(_0x2b2a23,_0x226a72){return function(_0x121ecd){if(!_0x121ecd){_0x2b2a23[_0x4e15('0x26')](0x194);}return _0x121ecd;};}function handleError(_0x26cdce,_0x5eacd7){_0x5eacd7=_0x5eacd7||0x1f4;return function(_0xb841b5){logger['error'](_0xb841b5[_0x4e15('0x27')]);if(_0xb841b5['name']){delete _0xb841b5[_0x4e15('0x28')];}_0x26cdce[_0x4e15('0x18')](_0x5eacd7)[_0x4e15('0x29')](_0xb841b5);};}exports[_0x4e15('0x2a')]=function(_0x20d58e,_0x1dd576){var _0x93144a={},_0x2aeed0={},_0x40b471={'count':0x0,'rows':[]};var _0x116cf1=_[_0x4e15('0x2b')](db[_0x4e15('0x2c')][_0x4e15('0x2d')],function(_0x2f43cf){return{'name':_0x2f43cf[_0x4e15('0x2e')],'type':_0x2f43cf[_0x4e15('0x2f')][_0x4e15('0x30')]};});_0x2aeed0[_0x4e15('0x31')]=_['map'](_0x116cf1,'name');_0x2aeed0['query']=_[_0x4e15('0x32')](_0x20d58e[_0x4e15('0x33')]);_0x2aeed0[_0x4e15('0x34')]=_[_0x4e15('0x35')](_0x2aeed0[_0x4e15('0x31')],_0x2aeed0[_0x4e15('0x33')]);_0x93144a[_0x4e15('0x36')]=_[_0x4e15('0x35')](_0x2aeed0[_0x4e15('0x31')],qs[_0x4e15('0x37')](_0x20d58e[_0x4e15('0x33')][_0x4e15('0x37')]));_0x93144a[_0x4e15('0x36')]=_0x93144a[_0x4e15('0x36')][_0x4e15('0x38')]?_0x93144a[_0x4e15('0x36')]:_0x2aeed0[_0x4e15('0x31')];if(!_0x20d58e[_0x4e15('0x33')][_0x4e15('0x39')]('nolimit')){_0x93144a[_0x4e15('0x1b')]=qs[_0x4e15('0x1b')](_0x20d58e[_0x4e15('0x33')]['limit']);_0x93144a[_0x4e15('0x1a')]=qs['offset'](_0x20d58e[_0x4e15('0x33')][_0x4e15('0x1a')]);}_0x93144a['order']=qs[_0x4e15('0x3a')](_0x20d58e[_0x4e15('0x33')]['sort']);_0x93144a[_0x4e15('0x3b')]=qs[_0x4e15('0x34')](_[_0x4e15('0x3c')](_0x20d58e['query'],_0x2aeed0['filters']),_0x116cf1);if(_0x20d58e[_0x4e15('0x33')][_0x4e15('0x3d')]){_0x93144a[_0x4e15('0x3b')]=_[_0x4e15('0x3e')](_0x93144a[_0x4e15('0x3b')],{'$or':_['map'](_0x116cf1,function(_0x56edd6){if(_0x56edd6[_0x4e15('0x2f')]!==_0x4e15('0x3f')){var _0x31e1a6={};_0x31e1a6[_0x56edd6['name']]={'$like':'%'+_0x20d58e[_0x4e15('0x33')][_0x4e15('0x3d')]+'%'};return _0x31e1a6;}})});}_0x93144a=_[_0x4e15('0x3e')]({},_0x93144a,_0x20d58e[_0x4e15('0x40')]);var _0x435edf={'where':_0x93144a[_0x4e15('0x3b')]};return db[_0x4e15('0x2c')][_0x4e15('0x1d')](_0x435edf)[_0x4e15('0x24')](function(_0x19657e){_0x40b471[_0x4e15('0x1d')]=_0x19657e;if(_0x20d58e[_0x4e15('0x33')][_0x4e15('0x41')]){_0x93144a[_0x4e15('0x42')]=[{'all':!![]}];}return db[_0x4e15('0x2c')][_0x4e15('0x43')](_0x93144a);})[_0x4e15('0x24')](function(_0x4b831d){_0x40b471[_0x4e15('0x44')]=_0x4b831d;return _0x40b471;})['then'](respondWithFilteredResult(_0x1dd576,_0x93144a))['catch'](handleError(_0x1dd576,null));};exports['show']=function(_0xe17a21,_0x1d31d6){var _0x2e24f9={'raw':!![],'where':{'id':_0xe17a21[_0x4e15('0x45')]['id']}},_0x493834={};_0x493834['model']=_[_0x4e15('0x32')](db[_0x4e15('0x2c')][_0x4e15('0x2d')]);_0x493834[_0x4e15('0x33')]=_[_0x4e15('0x32')](_0xe17a21[_0x4e15('0x33')]);_0x493834['filters']=_[_0x4e15('0x35')](_0x493834[_0x4e15('0x31')],_0x493834[_0x4e15('0x33')]);_0x2e24f9[_0x4e15('0x36')]=_['intersection'](_0x493834[_0x4e15('0x31')],qs[_0x4e15('0x37')](_0xe17a21[_0x4e15('0x33')][_0x4e15('0x37')]));_0x2e24f9[_0x4e15('0x36')]=_0x2e24f9[_0x4e15('0x36')]['length']?_0x2e24f9['attributes']:_0x493834[_0x4e15('0x31')];if(_0xe17a21[_0x4e15('0x33')][_0x4e15('0x41')]){_0x2e24f9[_0x4e15('0x42')]=[{'all':!![]}];}_0x2e24f9=_[_0x4e15('0x3e')]({},_0x2e24f9,_0xe17a21['options']);return db[_0x4e15('0x2c')][_0x4e15('0x46')](_0x2e24f9)['then'](handleEntityNotFound(_0x1d31d6,null))[_0x4e15('0x24')](respondWithResult(_0x1d31d6,null))[_0x4e15('0x47')](handleError(_0x1d31d6,null));};exports[_0x4e15('0x48')]=function(_0x4d72a3,_0x4f169a){return db[_0x4e15('0x2c')]['create'](_0x4d72a3[_0x4e15('0x49')],{})[_0x4e15('0x24')](respondWithResult(_0x4f169a,0xc9))['catch'](handleError(_0x4f169a,null));};exports[_0x4e15('0x23')]=function(_0x19dd0f,_0x2bcc38){if(_0x19dd0f[_0x4e15('0x49')]['id']){delete _0x19dd0f[_0x4e15('0x49')]['id'];}return db[_0x4e15('0x2c')][_0x4e15('0x46')]({'where':{'id':_0x19dd0f[_0x4e15('0x45')]['id']}})[_0x4e15('0x24')](handleEntityNotFound(_0x2bcc38,null))['then'](saveUpdates(_0x19dd0f[_0x4e15('0x49')],null))[_0x4e15('0x24')](respondWithResult(_0x2bcc38,null))[_0x4e15('0x47')](handleError(_0x2bcc38,null));};exports[_0x4e15('0x25')]=function(_0x1f67f4,_0x24c654){return db[_0x4e15('0x2c')]['find']({'where':{'id':_0x1f67f4[_0x4e15('0x45')]['id']}})[_0x4e15('0x24')](handleEntityNotFound(_0x24c654,null))[_0x4e15('0x24')](removeEntity(_0x24c654,null))[_0x4e15('0x47')](handleError(_0x24c654,null));};exports[_0x4e15('0x4a')]=function(_0x1a77d8,_0x1a64a7){return db[_0x4e15('0x2c')][_0x4e15('0x4a')]()[_0x4e15('0x24')](respondWithResult(_0x1a64a7,null))[_0x4e15('0x47')](handleError(_0x1a64a7,null));};
\ No newline at end of file
+var _0x9429=['name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','params','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then'];(function(_0x599bec,_0x1fd98e){var _0x3c7b7b=function(_0x92140b){while(--_0x92140b){_0x599bec['push'](_0x599bec['shift']());}};_0x3c7b7b(++_0x1fd98e);}(_0x9429,0x151));var _0x9942=function(_0x196652,_0x587945){_0x196652=_0x196652-0x0;var _0x467ede=_0x9429[_0x196652];return _0x467ede;};'use strict';var emlformat=require(_0x9942('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9942('0x1'));var jsonpatch=require(_0x9942('0x2'));var rp=require(_0x9942('0x3'));var moment=require('moment');var BPromise=require(_0x9942('0x4'));var Mustache=require(_0x9942('0x5'));var util=require(_0x9942('0x6'));var path=require('path');var sox=require(_0x9942('0x7'));var csv=require('to-csv');var ejs=require(_0x9942('0x8'));var fs=require('fs');var fs_extra=require(_0x9942('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9942('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9942('0xb'));var toCsv=require(_0x9942('0xc'));var querystring=require(_0x9942('0xd'));var Papa=require(_0x9942('0xe'));var Redis=require(_0x9942('0xf'));var authService=require(_0x9942('0x10'));var qs=require(_0x9942('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9942('0x12'))(_0x9942('0x13'));var utils=require(_0x9942('0x14'));var config=require(_0x9942('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9942('0x16'))['db'];function respondWithStatusCode(_0x1bf42f,_0x4f8d8e){_0x4f8d8e=_0x4f8d8e||0xcc;return function(_0x1f1536){if(_0x1f1536){return _0x1bf42f[_0x9942('0x17')](_0x4f8d8e);}return _0x1bf42f[_0x9942('0x18')](_0x4f8d8e)[_0x9942('0x19')]();};}function respondWithResult(_0x2cd3e9,_0x33d54d){_0x33d54d=_0x33d54d||0xc8;return function(_0x56a65b){if(_0x56a65b){return _0x2cd3e9[_0x9942('0x18')](_0x33d54d)[_0x9942('0x1a')](_0x56a65b);}};}function respondWithFilteredResult(_0x2d3c40,_0xd4b1d6){return function(_0x491cb7){if(_0x491cb7){var _0x182233=typeof _0xd4b1d6[_0x9942('0x1b')]===_0x9942('0x1c')&&typeof _0xd4b1d6['limit']===_0x9942('0x1c');var _0x40ccc7=_0x491cb7[_0x9942('0x1d')];var _0x4b27be=_0x182233?0x0:_0xd4b1d6[_0x9942('0x1b')];var _0xe3ee27=_0x182233?_0x491cb7[_0x9942('0x1d')]:_0xd4b1d6[_0x9942('0x1b')]+_0xd4b1d6[_0x9942('0x1e')];var _0x27461c;if(_0xe3ee27>=_0x40ccc7){_0xe3ee27=_0x40ccc7;_0x27461c=0xc8;}else{_0x27461c=0xce;}_0x2d3c40['status'](_0x27461c);return _0x2d3c40[_0x9942('0x1f')](_0x9942('0x20'),_0x4b27be+'-'+_0xe3ee27+'/'+_0x40ccc7)[_0x9942('0x1a')](_0x491cb7);}return null;};}function patchUpdates(_0x54eab3){return function(_0x42450b){try{jsonpatch[_0x9942('0x21')](_0x42450b,_0x54eab3,!![]);}catch(_0x16aed8){return BPromise[_0x9942('0x22')](_0x16aed8);}return _0x42450b[_0x9942('0x23')]();};}function saveUpdates(_0x26f480,_0xce6765){return function(_0x23f069){if(_0x23f069){return _0x23f069[_0x9942('0x24')](_0x26f480)[_0x9942('0x25')](function(_0x258848){return _0x258848;});}return null;};}function removeEntity(_0x4f1774,_0x220d04){return function(_0xecfd8b){if(_0xecfd8b){return _0xecfd8b['destroy']()[_0x9942('0x25')](function(){_0x4f1774[_0x9942('0x18')](0xcc)[_0x9942('0x19')]();});}};}function handleEntityNotFound(_0x5786f9,_0x4381ed){return function(_0x64c2ac){if(!_0x64c2ac){_0x5786f9['sendStatus'](0x194);}return _0x64c2ac;};}function handleError(_0xe37d89,_0x46a1ff){_0x46a1ff=_0x46a1ff||0x1f4;return function(_0x3cfec9){logger['error'](_0x3cfec9['stack']);if(_0x3cfec9[_0x9942('0x26')]){delete _0x3cfec9[_0x9942('0x26')];}_0xe37d89[_0x9942('0x18')](_0x46a1ff)[_0x9942('0x27')](_0x3cfec9);};}exports[_0x9942('0x28')]=function(_0x37857a,_0x1634ab){var _0x547106={},_0x194229={},_0x305717={'count':0x0,'rows':[]};var _0x20b1ad=_[_0x9942('0x29')](db[_0x9942('0x2a')][_0x9942('0x2b')],function(_0x158689){return{'name':_0x158689[_0x9942('0x2c')],'type':_0x158689[_0x9942('0x2d')][_0x9942('0x2e')]};});_0x194229[_0x9942('0x2f')]=_[_0x9942('0x29')](_0x20b1ad,'name');_0x194229[_0x9942('0x30')]=_[_0x9942('0x31')](_0x37857a[_0x9942('0x30')]);_0x194229[_0x9942('0x32')]=_[_0x9942('0x33')](_0x194229[_0x9942('0x2f')],_0x194229[_0x9942('0x30')]);_0x547106[_0x9942('0x34')]=_[_0x9942('0x33')](_0x194229[_0x9942('0x2f')],qs[_0x9942('0x35')](_0x37857a['query'][_0x9942('0x35')]));_0x547106[_0x9942('0x34')]=_0x547106[_0x9942('0x34')][_0x9942('0x36')]?_0x547106['attributes']:_0x194229[_0x9942('0x2f')];if(!_0x37857a['query'][_0x9942('0x37')](_0x9942('0x38'))){_0x547106[_0x9942('0x1e')]=qs[_0x9942('0x1e')](_0x37857a[_0x9942('0x30')]['limit']);_0x547106[_0x9942('0x1b')]=qs[_0x9942('0x1b')](_0x37857a[_0x9942('0x30')]['offset']);}_0x547106[_0x9942('0x39')]=qs[_0x9942('0x3a')](_0x37857a[_0x9942('0x30')][_0x9942('0x3a')]);_0x547106['where']=qs['filters'](_[_0x9942('0x3b')](_0x37857a['query'],_0x194229[_0x9942('0x32')]),_0x20b1ad);if(_0x37857a[_0x9942('0x30')][_0x9942('0x3c')]){_0x547106[_0x9942('0x3d')]=_[_0x9942('0x3e')](_0x547106[_0x9942('0x3d')],{'$or':_[_0x9942('0x29')](_0x20b1ad,function(_0x37cc38){if(_0x37cc38[_0x9942('0x2d')]!==_0x9942('0x3f')){var _0x281743={};_0x281743[_0x37cc38['name']]={'$like':'%'+_0x37857a[_0x9942('0x30')][_0x9942('0x3c')]+'%'};return _0x281743;}})});}_0x547106=_[_0x9942('0x3e')]({},_0x547106,_0x37857a[_0x9942('0x40')]);var _0x3334b7={'where':_0x547106[_0x9942('0x3d')]};return db[_0x9942('0x2a')][_0x9942('0x1d')](_0x3334b7)[_0x9942('0x25')](function(_0x308123){_0x305717[_0x9942('0x1d')]=_0x308123;if(_0x37857a[_0x9942('0x30')][_0x9942('0x41')]){_0x547106[_0x9942('0x42')]=[{'all':!![]}];}return db[_0x9942('0x2a')][_0x9942('0x43')](_0x547106);})[_0x9942('0x25')](function(_0x16c298){_0x305717[_0x9942('0x44')]=_0x16c298;return _0x305717;})['then'](respondWithFilteredResult(_0x1634ab,_0x547106))[_0x9942('0x45')](handleError(_0x1634ab,null));};exports['show']=function(_0x345e6a,_0x40028b){var _0x40f2a9={'raw':!![],'where':{'id':_0x345e6a['params']['id']}},_0x1c7a45={};_0x1c7a45['model']=_['keys'](db[_0x9942('0x2a')][_0x9942('0x2b')]);_0x1c7a45[_0x9942('0x30')]=_[_0x9942('0x31')](_0x345e6a['query']);_0x1c7a45[_0x9942('0x32')]=_[_0x9942('0x33')](_0x1c7a45[_0x9942('0x2f')],_0x1c7a45['query']);_0x40f2a9[_0x9942('0x34')]=_[_0x9942('0x33')](_0x1c7a45[_0x9942('0x2f')],qs[_0x9942('0x35')](_0x345e6a[_0x9942('0x30')][_0x9942('0x35')]));_0x40f2a9['attributes']=_0x40f2a9[_0x9942('0x34')]['length']?_0x40f2a9['attributes']:_0x1c7a45[_0x9942('0x2f')];if(_0x345e6a['query'][_0x9942('0x41')]){_0x40f2a9[_0x9942('0x42')]=[{'all':!![]}];}_0x40f2a9=_[_0x9942('0x3e')]({},_0x40f2a9,_0x345e6a[_0x9942('0x40')]);return db[_0x9942('0x2a')][_0x9942('0x46')](_0x40f2a9)[_0x9942('0x25')](handleEntityNotFound(_0x40028b,null))['then'](respondWithResult(_0x40028b,null))[_0x9942('0x45')](handleError(_0x40028b,null));};exports[_0x9942('0x47')]=function(_0x44ee5d,_0x2140f4){return db[_0x9942('0x2a')]['create'](_0x44ee5d[_0x9942('0x48')],{})[_0x9942('0x25')](respondWithResult(_0x2140f4,0xc9))[_0x9942('0x45')](handleError(_0x2140f4,null));};exports[_0x9942('0x24')]=function(_0x16aabf,_0x51382f){if(_0x16aabf[_0x9942('0x48')]['id']){delete _0x16aabf[_0x9942('0x48')]['id'];}return db[_0x9942('0x2a')][_0x9942('0x46')]({'where':{'id':_0x16aabf[_0x9942('0x49')]['id']}})[_0x9942('0x25')](handleEntityNotFound(_0x51382f,null))[_0x9942('0x25')](saveUpdates(_0x16aabf[_0x9942('0x48')],null))[_0x9942('0x25')](respondWithResult(_0x51382f,null))['catch'](handleError(_0x51382f,null));};exports[_0x9942('0x4a')]=function(_0xc7fc57,_0x367786){return db['SmsQueueReport'][_0x9942('0x46')]({'where':{'id':_0xc7fc57[_0x9942('0x49')]['id']}})[_0x9942('0x25')](handleEntityNotFound(_0x367786,null))[_0x9942('0x25')](removeEntity(_0x367786,null))[_0x9942('0x45')](handleError(_0x367786,null));};exports['describe']=function(_0x3fc747,_0x2c3286){return db[_0x9942('0x2a')]['describe']()[_0x9942('0x25')](respondWithResult(_0x2c3286,null))['catch'](handleError(_0x2c3286,null));};
\ No newline at end of file
index 9195ff0..ad6ae3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x5222e3,_0x5c318b){var _0x5f32d6=function(_0x145398){while(--_0x145398){_0x5222e3['push'](_0x5222e3['shift']());}};_0x5f32d6(++_0x5c318b);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb7e7[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','SmsQueueReport','report_sms_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x40e081,_0x8c0484){var _0x23ac55=function(_0x1bb73b){while(--_0x1bb73b){_0x40e081['push'](_0x40e081['shift']());}};_0x23ac55(++_0x8c0484);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'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
index 0649e15..a4f5033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b39=['rpc','client','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','CreateSmsQueueReport','SmsQueueReport','body','options','raw','stringify','UpdateSmsQueueReport','update','where','limit','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x51951b,_0x5d1a16){var _0x17dc1a=function(_0x5d6ea9){while(--_0x5d6ea9){_0x51951b['push'](_0x51951b['shift']());}};_0x17dc1a(++_0x5d1a16);}(_0x0b39,0xea));var _0x90b3=function(_0x353530,_0x392c7e){_0x353530=_0x353530-0x0;var _0x39b68c=_0x0b39[_0x353530];return _0x39b68c;};'use strict';var _=require(_0x90b3('0x0'));var util=require(_0x90b3('0x1'));var moment=require('moment');var BPromise=require(_0x90b3('0x2'));var rs=require(_0x90b3('0x3'));var fs=require('fs');var Redis=require(_0x90b3('0x4'));var db=require(_0x90b3('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x90b3('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x90b3('0x7')][_0x90b3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5d0fc7,_0x539f84,_0x59c370){return new BPromise(function(_0x52f0ec,_0x1401af){return client[_0x90b3('0x9')](_0x5d0fc7,_0x59c370)[_0x90b3('0xa')](function(_0x439303){logger['info'](_0x90b3('0xb'),_0x539f84,_0x90b3('0xc'));logger[_0x90b3('0xd')](_0x90b3('0xe'),_0x539f84,'request\x20sent',JSON['stringify'](_0x439303));if(_0x439303[_0x90b3('0xf')]){if(_0x439303[_0x90b3('0xf')]['code']===0x1f4){logger[_0x90b3('0xf')](_0x90b3('0xb'),_0x539f84,_0x439303[_0x90b3('0xf')]['message']);return _0x1401af(_0x439303[_0x90b3('0xf')][_0x90b3('0x10')]);}logger['error'](_0x90b3('0xb'),_0x539f84,_0x439303[_0x90b3('0xf')]['message']);return _0x52f0ec(_0x439303[_0x90b3('0xf')]['message']);}else{logger[_0x90b3('0x11')](_0x90b3('0xb'),_0x539f84,'request\x20sent');_0x52f0ec(_0x439303[_0x90b3('0x12')][_0x90b3('0x10')]);}})['catch'](function(_0x35c4ab){logger[_0x90b3('0xf')](_0x90b3('0xb'),_0x539f84,_0x35c4ab);_0x1401af(_0x35c4ab);});});}exports[_0x90b3('0x13')]=function(_0x143f02){var _0x342685=this;return new Promise(function(_0x467c14,_0xad32){return db[_0x90b3('0x14')]['create'](_0x143f02[_0x90b3('0x15')],{'raw':_0x143f02[_0x90b3('0x16')]?_0x143f02[_0x90b3('0x16')][_0x90b3('0x17')]===undefined?!![]:![]:!![]})[_0x90b3('0xa')](function(_0x5d5b31){logger['info'](_0x90b3('0x13'),_0x143f02);logger[_0x90b3('0xd')](_0x90b3('0x13'),_0x143f02,JSON[_0x90b3('0x18')](_0x5d5b31));_0x467c14(_0x5d5b31);})['catch'](function(_0x304d74){logger['error'](_0x90b3('0x13'),_0x304d74['message'],_0x143f02);_0xad32(_0x342685['error'](0x1f4,_0x304d74[_0x90b3('0x10')]));});});};exports[_0x90b3('0x19')]=function(_0x2c6860){var _0x521e3d=this;return new Promise(function(_0x177a01,_0xd43365){return db[_0x90b3('0x14')][_0x90b3('0x1a')](_0x2c6860[_0x90b3('0x15')],{'raw':_0x2c6860[_0x90b3('0x16')]?_0x2c6860['options'][_0x90b3('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c6860[_0x90b3('0x16')]?_0x2c6860[_0x90b3('0x16')][_0x90b3('0x1b')]||null:null,'attributes':_0x2c6860['options']?_0x2c6860[_0x90b3('0x16')]['attributes']||null:null,'limit':_0x2c6860[_0x90b3('0x16')]?_0x2c6860[_0x90b3('0x16')][_0x90b3('0x1c')]||null:null})[_0x90b3('0xa')](function(_0x180648){logger[_0x90b3('0x11')](_0x90b3('0x19'),_0x2c6860);logger[_0x90b3('0xd')](_0x90b3('0x19'),_0x2c6860,JSON[_0x90b3('0x18')](_0x180648));_0x177a01(_0x180648);})[_0x90b3('0x1d')](function(_0x730080){logger[_0x90b3('0xf')]('UpdateSmsQueueReport',_0x730080[_0x90b3('0x10')],_0x2c6860);_0xd43365(_0x521e3d[_0x90b3('0xf')](0x1f4,_0x730080['message']));});});};
\ No newline at end of file
+var _0x1788=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','CreateSmsQueueReport','SmsQueueReport','body','options','raw','stringify','catch','UpdateSmsQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x2879ed,_0x986d84){var _0x3babf1=function(_0x4bcc6a){while(--_0x4bcc6a){_0x2879ed['push'](_0x2879ed['shift']());}};_0x3babf1(++_0x986d84);}(_0x1788,0x19f));var _0x8178=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x1788[_0x2070da];return _0x4f9fe1;};'use strict';var _=require(_0x8178('0x0'));var util=require(_0x8178('0x1'));var moment=require(_0x8178('0x2'));var BPromise=require(_0x8178('0x3'));var rs=require(_0x8178('0x4'));var fs=require('fs');var Redis=require(_0x8178('0x5'));var db=require(_0x8178('0x6'))['db'];var utils=require(_0x8178('0x7'));var logger=require(_0x8178('0x8'))(_0x8178('0x9'));var config=require(_0x8178('0xa'));var jayson=require(_0x8178('0xb'));var client=jayson['client'][_0x8178('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x30e40b,_0x34b861,_0x54ab60){return new BPromise(function(_0x271ce4,_0x27af0a){return client[_0x8178('0xd')](_0x30e40b,_0x54ab60)[_0x8178('0xe')](function(_0x498f96){logger[_0x8178('0xf')](_0x8178('0x10'),_0x34b861,_0x8178('0x11'));logger[_0x8178('0x12')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x34b861,_0x8178('0x11'),JSON['stringify'](_0x498f96));if(_0x498f96['error']){if(_0x498f96[_0x8178('0x13')][_0x8178('0x14')]===0x1f4){logger[_0x8178('0x13')](_0x8178('0x10'),_0x34b861,_0x498f96[_0x8178('0x13')][_0x8178('0x15')]);return _0x27af0a(_0x498f96[_0x8178('0x13')][_0x8178('0x15')]);}logger['error'](_0x8178('0x10'),_0x34b861,_0x498f96[_0x8178('0x13')][_0x8178('0x15')]);return _0x271ce4(_0x498f96['error'][_0x8178('0x15')]);}else{logger[_0x8178('0xf')](_0x8178('0x10'),_0x34b861,_0x8178('0x11'));_0x271ce4(_0x498f96[_0x8178('0x16')][_0x8178('0x15')]);}})['catch'](function(_0x3e3255){logger[_0x8178('0x13')](_0x8178('0x10'),_0x34b861,_0x3e3255);_0x27af0a(_0x3e3255);});});}exports[_0x8178('0x17')]=function(_0x160a27){var _0xcd03d9=this;return new Promise(function(_0x4d3f93,_0x2cca43){return db[_0x8178('0x18')]['create'](_0x160a27[_0x8178('0x19')],{'raw':_0x160a27[_0x8178('0x1a')]?_0x160a27[_0x8178('0x1a')][_0x8178('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x5a5cab){logger['info'](_0x8178('0x17'),_0x160a27);logger[_0x8178('0x12')](_0x8178('0x17'),_0x160a27,JSON[_0x8178('0x1c')](_0x5a5cab));_0x4d3f93(_0x5a5cab);})[_0x8178('0x1d')](function(_0xb2d725){logger[_0x8178('0x13')](_0x8178('0x17'),_0xb2d725[_0x8178('0x15')],_0x160a27);_0x2cca43(_0xcd03d9[_0x8178('0x13')](0x1f4,_0xb2d725[_0x8178('0x15')]));});});};exports[_0x8178('0x1e')]=function(_0xc0ab07){var _0x45a9eb=this;return new Promise(function(_0x14e9e1,_0x22f130){return db[_0x8178('0x18')][_0x8178('0x1f')](_0xc0ab07[_0x8178('0x19')],{'raw':_0xc0ab07[_0x8178('0x1a')]?_0xc0ab07[_0x8178('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc0ab07['options']?_0xc0ab07[_0x8178('0x1a')][_0x8178('0x20')]||null:null,'attributes':_0xc0ab07[_0x8178('0x1a')]?_0xc0ab07['options'][_0x8178('0x21')]||null:null,'limit':_0xc0ab07[_0x8178('0x1a')]?_0xc0ab07['options'][_0x8178('0x22')]||null:null})[_0x8178('0xe')](function(_0x3cfdd3){logger[_0x8178('0xf')](_0x8178('0x1e'),_0xc0ab07);logger[_0x8178('0x12')]('UpdateSmsQueueReport',_0xc0ab07,JSON[_0x8178('0x1c')](_0x3cfdd3));_0x14e9e1(_0x3cfdd3);})[_0x8178('0x1d')](function(_0x3d6478){logger['error'](_0x8178('0x1e'),_0x3d6478['message'],_0xc0ab07);_0x22f130(_0x45a9eb[_0x8178('0x13')](0x1f4,_0x3d6478[_0x8178('0x15')]));});});};
\ No newline at end of file
index b678be7..965f4f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a59=['get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsTransferReport.controller'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x7a59,0x16e));var _0x97a5=function(_0x1e4150,_0x55b02a){_0x1e4150=_0x1e4150-0x0;var _0x1ce3ee=_0x7a59[_0x1e4150];return _0x1ce3ee;};'use strict';var multer=require(_0x97a5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x97a5('0x1'));var express=require(_0x97a5('0x2'));var router=express[_0x97a5('0x3')]();var fs_extra=require(_0x97a5('0x4'));var auth=require(_0x97a5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x97a5('0x6'));var controller=require(_0x97a5('0x7'));router[_0x97a5('0x8')]('/',auth['isAuthenticated'](),controller[_0x97a5('0x9')]);router[_0x97a5('0x8')](_0x97a5('0xa'),auth[_0x97a5('0xb')](),controller[_0x97a5('0xc')]);router[_0x97a5('0x8')](_0x97a5('0xd'),auth['isAuthenticated'](),controller[_0x97a5('0xe')]);router[_0x97a5('0xf')]('/',auth[_0x97a5('0xb')](),controller[_0x97a5('0x10')]);router[_0x97a5('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x97a5('0x12')]);router[_0x97a5('0x13')](_0x97a5('0xd'),auth['isAuthenticated'](),controller[_0x97a5('0x14')]);module[_0x97a5('0x15')]=router;
\ No newline at end of file
+var _0x446c=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','describe','get','/:id','post','create','put','update','delete'];(function(_0x47ee02,_0x4ff965){var _0x5aa4df=function(_0x4c398b){while(--_0x4c398b){_0x47ee02['push'](_0x47ee02['shift']());}};_0x5aa4df(++_0x4ff965);}(_0x446c,0x156));var _0xc446=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x446c[_0x2bf141];return _0x48277b;};'use strict';var multer=require(_0xc446('0x0'));var util=require(_0xc446('0x1'));var path=require(_0xc446('0x2'));var timeout=require(_0xc446('0x3'));var express=require('express');var router=express[_0xc446('0x4')]();var fs_extra=require(_0xc446('0x5'));var auth=require(_0xc446('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc446('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth[_0xc446('0x8')](),controller[_0xc446('0x9')]);router['get']('/describe',auth[_0xc446('0x8')](),controller[_0xc446('0xa')]);router[_0xc446('0xb')](_0xc446('0xc'),auth[_0xc446('0x8')](),controller['show']);router[_0xc446('0xd')]('/',auth[_0xc446('0x8')](),controller[_0xc446('0xe')]);router[_0xc446('0xf')]('/:id',auth[_0xc446('0x8')](),controller[_0xc446('0x10')]);router[_0xc446('0x11')](_0xc446('0xc'),auth[_0xc446('0x8')](),controller[_0xc446('0x12')]);module[_0xc446('0x13')]=router;
\ No newline at end of file
index 8c74a7f..c49d86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x125fde,_0x452756){var _0x413ebe=function(_0x151157){while(--_0x151157){_0x125fde['push'](_0x125fde['shift']());}};_0x413ebe(++_0x452756);}(_0xedd9,0xfc));var _0x9edd=function(_0x3d542c,_0x2098ae){_0x3d542c=_0x3d542c-0x0;var _0x4946de=_0xedd9[_0x3d542c];return _0x4946de;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x1f8e33,_0x300371){var _0x37b939=function(_0x4d4fa4){while(--_0x4d4fa4){_0x1f8e33['push'](_0x1f8e33['shift']());}};_0x37b939(++_0x300371);}(_0x9c44,0x178));var _0x49c4=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x9c44[_0x36c5b0];return _0xf19333;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 0d9cdd5..deb96bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb52=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','SmsTransferReport','include','findAll','catch','show','keys','find','create','body','params','describe','eml-format','rimraf'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xeb52,0x92));var _0x2eb5=function(_0xb75ab0,_0x486409){_0xb75ab0=_0xb75ab0-0x0;var _0x19be62=_0xeb52[_0xb75ab0];return _0x19be62;};'use strict';var emlformat=require(_0x2eb5('0x0'));var rimraf=require(_0x2eb5('0x1'));var zipdir=require(_0x2eb5('0x2'));var jsonpatch=require(_0x2eb5('0x3'));var rp=require(_0x2eb5('0x4'));var moment=require(_0x2eb5('0x5'));var BPromise=require(_0x2eb5('0x6'));var Mustache=require(_0x2eb5('0x7'));var util=require(_0x2eb5('0x8'));var path=require(_0x2eb5('0x9'));var sox=require(_0x2eb5('0xa'));var csv=require(_0x2eb5('0xb'));var ejs=require(_0x2eb5('0xc'));var fs=require('fs');var fs_extra=require(_0x2eb5('0xd'));var _=require('lodash');var squel=require(_0x2eb5('0xe'));var crypto=require(_0x2eb5('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x2eb5('0x10'));var toCsv=require(_0x2eb5('0xb'));var querystring=require(_0x2eb5('0x11'));var Papa=require(_0x2eb5('0x12'));var Redis=require(_0x2eb5('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2eb5('0x14'));var as=require(_0x2eb5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2eb5('0x16'))(_0x2eb5('0x17'));var utils=require('../../config/utils');var config=require(_0x2eb5('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2eb5('0x19'))['db'];function respondWithStatusCode(_0x48b1d7,_0x3ddf0a){_0x3ddf0a=_0x3ddf0a||0xcc;return function(_0x2e9706){if(_0x2e9706){return _0x48b1d7[_0x2eb5('0x1a')](_0x3ddf0a);}return _0x48b1d7[_0x2eb5('0x1b')](_0x3ddf0a)[_0x2eb5('0x1c')]();};}function respondWithResult(_0x226d37,_0xa63fd6){_0xa63fd6=_0xa63fd6||0xc8;return function(_0x12aa81){if(_0x12aa81){return _0x226d37[_0x2eb5('0x1b')](_0xa63fd6)[_0x2eb5('0x1d')](_0x12aa81);}};}function respondWithFilteredResult(_0x4e1661,_0x5cd894){return function(_0x586d3c){if(_0x586d3c){var _0x47c0ee=typeof _0x5cd894['offset']===_0x2eb5('0x1e')&&typeof _0x5cd894[_0x2eb5('0x1f')]===_0x2eb5('0x1e');var _0x24c39c=_0x586d3c[_0x2eb5('0x20')];var _0x50c2cd=_0x47c0ee?0x0:_0x5cd894[_0x2eb5('0x21')];var _0x1ee561=_0x47c0ee?_0x586d3c[_0x2eb5('0x20')]:_0x5cd894[_0x2eb5('0x21')]+_0x5cd894[_0x2eb5('0x1f')];var _0x3e1239;if(_0x1ee561>=_0x24c39c){_0x1ee561=_0x24c39c;_0x3e1239=0xc8;}else{_0x3e1239=0xce;}_0x4e1661['status'](_0x3e1239);return _0x4e1661[_0x2eb5('0x22')](_0x2eb5('0x23'),_0x50c2cd+'-'+_0x1ee561+'/'+_0x24c39c)['json'](_0x586d3c);}return null;};}function patchUpdates(_0x2421e5){return function(_0x5ebb8e){try{jsonpatch[_0x2eb5('0x24')](_0x5ebb8e,_0x2421e5,!![]);}catch(_0x2ab597){return BPromise[_0x2eb5('0x25')](_0x2ab597);}return _0x5ebb8e[_0x2eb5('0x26')]();};}function saveUpdates(_0x1d6239,_0x505a8c){return function(_0x1cf676){if(_0x1cf676){return _0x1cf676[_0x2eb5('0x27')](_0x1d6239)[_0x2eb5('0x28')](function(_0x565702){return _0x565702;});}return null;};}function removeEntity(_0x51213b,_0x58eef0){return function(_0x3d2fe9){if(_0x3d2fe9){return _0x3d2fe9['destroy']()[_0x2eb5('0x28')](function(){_0x51213b['status'](0xcc)[_0x2eb5('0x1c')]();});}};}function handleEntityNotFound(_0x2ab91c,_0x2b0e64){return function(_0x36b0ed){if(!_0x36b0ed){_0x2ab91c[_0x2eb5('0x1a')](0x194);}return _0x36b0ed;};}function handleError(_0x2011f1,_0x43b5b1){_0x43b5b1=_0x43b5b1||0x1f4;return function(_0x18ef5c){logger['error'](_0x18ef5c['stack']);if(_0x18ef5c[_0x2eb5('0x29')]){delete _0x18ef5c[_0x2eb5('0x29')];}_0x2011f1[_0x2eb5('0x1b')](_0x43b5b1)[_0x2eb5('0x2a')](_0x18ef5c);};}exports['index']=function(_0x33950c,_0x2b7f76){var _0x20a767={},_0x16cc86={},_0x355037={'count':0x0,'rows':[]};var _0x42f1c8=_[_0x2eb5('0x2b')](db['SmsTransferReport'][_0x2eb5('0x2c')],function(_0x494ba8){return{'name':_0x494ba8[_0x2eb5('0x2d')],'type':_0x494ba8[_0x2eb5('0x2e')][_0x2eb5('0x2f')]};});_0x16cc86[_0x2eb5('0x30')]=_[_0x2eb5('0x2b')](_0x42f1c8,_0x2eb5('0x29'));_0x16cc86[_0x2eb5('0x31')]=_['keys'](_0x33950c[_0x2eb5('0x31')]);_0x16cc86[_0x2eb5('0x32')]=_[_0x2eb5('0x33')](_0x16cc86[_0x2eb5('0x30')],_0x16cc86['query']);_0x20a767[_0x2eb5('0x34')]=_[_0x2eb5('0x33')](_0x16cc86[_0x2eb5('0x30')],qs[_0x2eb5('0x35')](_0x33950c[_0x2eb5('0x31')][_0x2eb5('0x35')]));_0x20a767[_0x2eb5('0x34')]=_0x20a767[_0x2eb5('0x34')][_0x2eb5('0x36')]?_0x20a767['attributes']:_0x16cc86[_0x2eb5('0x30')];if(!_0x33950c['query'][_0x2eb5('0x37')](_0x2eb5('0x38'))){_0x20a767['limit']=qs[_0x2eb5('0x1f')](_0x33950c[_0x2eb5('0x31')]['limit']);_0x20a767[_0x2eb5('0x21')]=qs['offset'](_0x33950c[_0x2eb5('0x31')][_0x2eb5('0x21')]);}_0x20a767['order']=qs[_0x2eb5('0x39')](_0x33950c[_0x2eb5('0x31')][_0x2eb5('0x39')]);_0x20a767[_0x2eb5('0x3a')]=qs[_0x2eb5('0x32')](_[_0x2eb5('0x3b')](_0x33950c[_0x2eb5('0x31')],_0x16cc86[_0x2eb5('0x32')]),_0x42f1c8);if(_0x33950c[_0x2eb5('0x31')][_0x2eb5('0x3c')]){_0x20a767[_0x2eb5('0x3a')]=_[_0x2eb5('0x3d')](_0x20a767[_0x2eb5('0x3a')],{'$or':_[_0x2eb5('0x2b')](_0x42f1c8,function(_0x1bf547){if(_0x1bf547[_0x2eb5('0x2e')]!=='VIRTUAL'){var _0x207a7f={};_0x207a7f[_0x1bf547['name']]={'$like':'%'+_0x33950c[_0x2eb5('0x31')]['filter']+'%'};return _0x207a7f;}})});}_0x20a767=_[_0x2eb5('0x3d')]({},_0x20a767,_0x33950c[_0x2eb5('0x3e')]);var _0x210f53={'where':_0x20a767[_0x2eb5('0x3a')]};return db[_0x2eb5('0x3f')][_0x2eb5('0x20')](_0x210f53)['then'](function(_0x51990d){_0x355037[_0x2eb5('0x20')]=_0x51990d;if(_0x33950c[_0x2eb5('0x31')]['includeAll']){_0x20a767[_0x2eb5('0x40')]=[{'all':!![]}];}return db[_0x2eb5('0x3f')][_0x2eb5('0x41')](_0x20a767);})['then'](function(_0x191f0a){_0x355037['rows']=_0x191f0a;return _0x355037;})[_0x2eb5('0x28')](respondWithFilteredResult(_0x2b7f76,_0x20a767))[_0x2eb5('0x42')](handleError(_0x2b7f76,null));};exports[_0x2eb5('0x43')]=function(_0x4034b2,_0x15cefa){var _0xb937d1={'raw':!![],'where':{'id':_0x4034b2['params']['id']}},_0x499396={};_0x499396['model']=_[_0x2eb5('0x44')](db['SmsTransferReport'][_0x2eb5('0x2c')]);_0x499396[_0x2eb5('0x31')]=_['keys'](_0x4034b2[_0x2eb5('0x31')]);_0x499396[_0x2eb5('0x32')]=_[_0x2eb5('0x33')](_0x499396['model'],_0x499396[_0x2eb5('0x31')]);_0xb937d1['attributes']=_[_0x2eb5('0x33')](_0x499396[_0x2eb5('0x30')],qs['fields'](_0x4034b2['query'][_0x2eb5('0x35')]));_0xb937d1[_0x2eb5('0x34')]=_0xb937d1['attributes'][_0x2eb5('0x36')]?_0xb937d1[_0x2eb5('0x34')]:_0x499396['model'];if(_0x4034b2['query']['includeAll']){_0xb937d1['include']=[{'all':!![]}];}_0xb937d1=_[_0x2eb5('0x3d')]({},_0xb937d1,_0x4034b2['options']);return db[_0x2eb5('0x3f')][_0x2eb5('0x45')](_0xb937d1)[_0x2eb5('0x28')](handleEntityNotFound(_0x15cefa,null))[_0x2eb5('0x28')](respondWithResult(_0x15cefa,null))['catch'](handleError(_0x15cefa,null));};exports[_0x2eb5('0x46')]=function(_0x5a14fd,_0x40dccc){return db[_0x2eb5('0x3f')][_0x2eb5('0x46')](_0x5a14fd['body'],{})[_0x2eb5('0x28')](respondWithResult(_0x40dccc,0xc9))['catch'](handleError(_0x40dccc,null));};exports['update']=function(_0x31af15,_0x1f1267){if(_0x31af15[_0x2eb5('0x47')]['id']){delete _0x31af15[_0x2eb5('0x47')]['id'];}return db['SmsTransferReport'][_0x2eb5('0x45')]({'where':{'id':_0x31af15[_0x2eb5('0x48')]['id']}})['then'](handleEntityNotFound(_0x1f1267,null))[_0x2eb5('0x28')](saveUpdates(_0x31af15[_0x2eb5('0x47')],null))[_0x2eb5('0x28')](respondWithResult(_0x1f1267,null))[_0x2eb5('0x42')](handleError(_0x1f1267,null));};exports['destroy']=function(_0x24e366,_0x55db24){return db[_0x2eb5('0x3f')][_0x2eb5('0x45')]({'where':{'id':_0x24e366[_0x2eb5('0x48')]['id']}})[_0x2eb5('0x28')](handleEntityNotFound(_0x55db24,null))[_0x2eb5('0x28')](removeEntity(_0x55db24,null))[_0x2eb5('0x42')](handleError(_0x55db24,null));};exports['describe']=function(_0x54a302,_0x5eaadf){return db[_0x2eb5('0x3f')][_0x2eb5('0x49')]()[_0x2eb5('0x28')](respondWithResult(_0x5eaadf,null))[_0x2eb5('0x42')](handleError(_0x5eaadf,null));};
\ No newline at end of file
+var _0x402d=['type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsTransferReport','include','findAll','rows','catch','params','keys','length','includeAll','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','rawAttributes'];(function(_0x5289d6,_0x7bd6d2){var _0x52b145=function(_0x11fb06){while(--_0x11fb06){_0x5289d6['push'](_0x5289d6['shift']());}};_0x52b145(++_0x7bd6d2);}(_0x402d,0x6e));var _0xd402=function(_0x127101,_0x556fe3){_0x127101=_0x127101-0x0;var _0x40823a=_0x402d[_0x127101];return _0x40823a;};'use strict';var emlformat=require(_0xd402('0x0'));var rimraf=require(_0xd402('0x1'));var zipdir=require(_0xd402('0x2'));var jsonpatch=require(_0xd402('0x3'));var rp=require('request-promise');var moment=require(_0xd402('0x4'));var BPromise=require(_0xd402('0x5'));var Mustache=require('mustache');var util=require(_0xd402('0x6'));var path=require(_0xd402('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd402('0x8'));var fs=require('fs');var fs_extra=require(_0xd402('0x9'));var _=require(_0xd402('0xa'));var squel=require(_0xd402('0xb'));var crypto=require(_0xd402('0xc'));var jsforce=require(_0xd402('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd402('0xe'));var Papa=require(_0xd402('0xf'));var Redis=require(_0xd402('0x10'));var authService=require(_0xd402('0x11'));var qs=require(_0xd402('0x12'));var as=require(_0xd402('0x13'));var hardwareService=require(_0xd402('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd402('0x15'));var config=require(_0xd402('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd402('0x17'))['db'];function respondWithStatusCode(_0x374e85,_0x4990d3){_0x4990d3=_0x4990d3||0xcc;return function(_0x3e0d4b){if(_0x3e0d4b){return _0x374e85[_0xd402('0x18')](_0x4990d3);}return _0x374e85[_0xd402('0x19')](_0x4990d3)['end']();};}function respondWithResult(_0x360aa2,_0x2ec0b9){_0x2ec0b9=_0x2ec0b9||0xc8;return function(_0x189f9a){if(_0x189f9a){return _0x360aa2[_0xd402('0x19')](_0x2ec0b9)[_0xd402('0x1a')](_0x189f9a);}};}function respondWithFilteredResult(_0x372868,_0x2ec6c0){return function(_0x5335a3){if(_0x5335a3){var _0x1a2775=typeof _0x2ec6c0['offset']===_0xd402('0x1b')&&typeof _0x2ec6c0[_0xd402('0x1c')]===_0xd402('0x1b');var _0x3eb074=_0x5335a3[_0xd402('0x1d')];var _0x2fb0ef=_0x1a2775?0x0:_0x2ec6c0[_0xd402('0x1e')];var _0x468ed6=_0x1a2775?_0x5335a3[_0xd402('0x1d')]:_0x2ec6c0[_0xd402('0x1e')]+_0x2ec6c0['limit'];var _0x43f983;if(_0x468ed6>=_0x3eb074){_0x468ed6=_0x3eb074;_0x43f983=0xc8;}else{_0x43f983=0xce;}_0x372868[_0xd402('0x19')](_0x43f983);return _0x372868[_0xd402('0x1f')](_0xd402('0x20'),_0x2fb0ef+'-'+_0x468ed6+'/'+_0x3eb074)['json'](_0x5335a3);}return null;};}function patchUpdates(_0x428d88){return function(_0x4f3c30){try{jsonpatch[_0xd402('0x21')](_0x4f3c30,_0x428d88,!![]);}catch(_0x163450){return BPromise[_0xd402('0x22')](_0x163450);}return _0x4f3c30[_0xd402('0x23')]();};}function saveUpdates(_0x1750d2,_0x414399){return function(_0x1837a2){if(_0x1837a2){return _0x1837a2[_0xd402('0x24')](_0x1750d2)[_0xd402('0x25')](function(_0xc3fca4){return _0xc3fca4;});}return null;};}function removeEntity(_0x28a5f5,_0x3923b1){return function(_0x58898b){if(_0x58898b){return _0x58898b['destroy']()[_0xd402('0x25')](function(){_0x28a5f5[_0xd402('0x19')](0xcc)[_0xd402('0x26')]();});}};}function handleEntityNotFound(_0x5a6e05,_0x518e5d){return function(_0x1c232d){if(!_0x1c232d){_0x5a6e05[_0xd402('0x18')](0x194);}return _0x1c232d;};}function handleError(_0x50bba3,_0x42cd47){_0x42cd47=_0x42cd47||0x1f4;return function(_0x4614e6){logger[_0xd402('0x27')](_0x4614e6[_0xd402('0x28')]);if(_0x4614e6['name']){delete _0x4614e6[_0xd402('0x29')];}_0x50bba3['status'](_0x42cd47)[_0xd402('0x2a')](_0x4614e6);};}exports[_0xd402('0x2b')]=function(_0x2ad1f9,_0x2088e8){var _0x202337={},_0x3dbb3e={},_0x1efe95={'count':0x0,'rows':[]};var _0x1e3ab4=_[_0xd402('0x2c')](db['SmsTransferReport'][_0xd402('0x2d')],function(_0x56381c){return{'name':_0x56381c['fieldName'],'type':_0x56381c[_0xd402('0x2e')][_0xd402('0x2f')]};});_0x3dbb3e[_0xd402('0x30')]=_[_0xd402('0x2c')](_0x1e3ab4,'name');_0x3dbb3e['query']=_['keys'](_0x2ad1f9[_0xd402('0x31')]);_0x3dbb3e[_0xd402('0x32')]=_[_0xd402('0x33')](_0x3dbb3e['model'],_0x3dbb3e['query']);_0x202337['attributes']=_['intersection'](_0x3dbb3e[_0xd402('0x30')],qs[_0xd402('0x34')](_0x2ad1f9[_0xd402('0x31')]['fields']));_0x202337[_0xd402('0x35')]=_0x202337['attributes']['length']?_0x202337[_0xd402('0x35')]:_0x3dbb3e[_0xd402('0x30')];if(!_0x2ad1f9[_0xd402('0x31')][_0xd402('0x36')](_0xd402('0x37'))){_0x202337[_0xd402('0x1c')]=qs[_0xd402('0x1c')](_0x2ad1f9[_0xd402('0x31')][_0xd402('0x1c')]);_0x202337['offset']=qs[_0xd402('0x1e')](_0x2ad1f9[_0xd402('0x31')][_0xd402('0x1e')]);}_0x202337[_0xd402('0x38')]=qs[_0xd402('0x39')](_0x2ad1f9[_0xd402('0x31')][_0xd402('0x39')]);_0x202337[_0xd402('0x3a')]=qs[_0xd402('0x32')](_[_0xd402('0x3b')](_0x2ad1f9[_0xd402('0x31')],_0x3dbb3e[_0xd402('0x32')]),_0x1e3ab4);if(_0x2ad1f9['query'][_0xd402('0x3c')]){_0x202337[_0xd402('0x3a')]=_[_0xd402('0x3d')](_0x202337['where'],{'$or':_[_0xd402('0x2c')](_0x1e3ab4,function(_0x47c1fa){if(_0x47c1fa[_0xd402('0x2e')]!==_0xd402('0x3e')){var _0x4581b2={};_0x4581b2[_0x47c1fa[_0xd402('0x29')]]={'$like':'%'+_0x2ad1f9[_0xd402('0x31')][_0xd402('0x3c')]+'%'};return _0x4581b2;}})});}_0x202337=_[_0xd402('0x3d')]({},_0x202337,_0x2ad1f9[_0xd402('0x3f')]);var _0x436899={'where':_0x202337['where']};return db[_0xd402('0x40')][_0xd402('0x1d')](_0x436899)[_0xd402('0x25')](function(_0x382097){_0x1efe95[_0xd402('0x1d')]=_0x382097;if(_0x2ad1f9[_0xd402('0x31')]['includeAll']){_0x202337[_0xd402('0x41')]=[{'all':!![]}];}return db[_0xd402('0x40')][_0xd402('0x42')](_0x202337);})[_0xd402('0x25')](function(_0x522005){_0x1efe95[_0xd402('0x43')]=_0x522005;return _0x1efe95;})[_0xd402('0x25')](respondWithFilteredResult(_0x2088e8,_0x202337))[_0xd402('0x44')](handleError(_0x2088e8,null));};exports['show']=function(_0x1a444b,_0x3ed626){var _0x22120a={'raw':!![],'where':{'id':_0x1a444b[_0xd402('0x45')]['id']}},_0x2dc6d2={};_0x2dc6d2[_0xd402('0x30')]=_[_0xd402('0x46')](db[_0xd402('0x40')][_0xd402('0x2d')]);_0x2dc6d2[_0xd402('0x31')]=_['keys'](_0x1a444b[_0xd402('0x31')]);_0x2dc6d2[_0xd402('0x32')]=_[_0xd402('0x33')](_0x2dc6d2[_0xd402('0x30')],_0x2dc6d2[_0xd402('0x31')]);_0x22120a[_0xd402('0x35')]=_[_0xd402('0x33')](_0x2dc6d2['model'],qs[_0xd402('0x34')](_0x1a444b[_0xd402('0x31')][_0xd402('0x34')]));_0x22120a['attributes']=_0x22120a[_0xd402('0x35')][_0xd402('0x47')]?_0x22120a['attributes']:_0x2dc6d2['model'];if(_0x1a444b[_0xd402('0x31')][_0xd402('0x48')]){_0x22120a['include']=[{'all':!![]}];}_0x22120a=_['merge']({},_0x22120a,_0x1a444b['options']);return db[_0xd402('0x40')][_0xd402('0x49')](_0x22120a)[_0xd402('0x25')](handleEntityNotFound(_0x3ed626,null))['then'](respondWithResult(_0x3ed626,null))[_0xd402('0x44')](handleError(_0x3ed626,null));};exports[_0xd402('0x4a')]=function(_0x492393,_0x23c4a4){return db[_0xd402('0x40')][_0xd402('0x4a')](_0x492393[_0xd402('0x4b')],{})[_0xd402('0x25')](respondWithResult(_0x23c4a4,0xc9))[_0xd402('0x44')](handleError(_0x23c4a4,null));};exports['update']=function(_0x286bc9,_0x5c48d6){if(_0x286bc9[_0xd402('0x4b')]['id']){delete _0x286bc9[_0xd402('0x4b')]['id'];}return db[_0xd402('0x40')][_0xd402('0x49')]({'where':{'id':_0x286bc9['params']['id']}})[_0xd402('0x25')](handleEntityNotFound(_0x5c48d6,null))[_0xd402('0x25')](saveUpdates(_0x286bc9[_0xd402('0x4b')],null))[_0xd402('0x25')](respondWithResult(_0x5c48d6,null))['catch'](handleError(_0x5c48d6,null));};exports[_0xd402('0x4c')]=function(_0x3fe588,_0x3dc78b){return db[_0xd402('0x40')][_0xd402('0x49')]({'where':{'id':_0x3fe588[_0xd402('0x45')]['id']}})['then'](handleEntityNotFound(_0x3dc78b,null))[_0xd402('0x25')](removeEntity(_0x3dc78b,null))['catch'](handleError(_0x3dc78b,null));};exports[_0xd402('0x4d')]=function(_0x38634a,_0x346d10){return db['SmsTransferReport'][_0xd402('0x4d')]()[_0xd402('0x25')](respondWithResult(_0x346d10,null))['catch'](handleError(_0x346d10,null));};
\ No newline at end of file
index 0172506..2752350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a25=['lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid'];(function(_0x16ba74,_0x2ebcfa){var _0x4333a6=function(_0x13b137){while(--_0x13b137){_0x16ba74['push'](_0x16ba74['shift']());}};_0x4333a6(++_0x2ebcfa);}(_0x4a25,0x1d4));var _0x54a2=function(_0x440917,_0x20ea7b){_0x440917=_0x440917-0x0;var _0x5e906b=_0x4a25[_0x440917];return _0x5e906b;};'use strict';var _=require(_0x54a2('0x0'));var util=require('util');var logger=require(_0x54a2('0x1'))('api');var moment=require(_0x54a2('0x2'));var BPromise=require(_0x54a2('0x3'));var rp=require(_0x54a2('0x4'));var fs=require('fs');var path=require(_0x54a2('0x5'));var rimraf=require('rimraf');var config=require(_0x54a2('0x6'));var attributes=require(_0x54a2('0x7'));module[_0x54a2('0x8')]=function(_0x3ecde5,_0x472eed){return _0x3ecde5['define'](_0x54a2('0x9'),attributes,{'tableName':_0x54a2('0xa'),'paranoid':![],'indexes':[{'name':_0x54a2('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdcd9=['SmsTransferReport','report_sms_transfer','uniqueid','util','api','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','define'];(function(_0x37efd1,_0x2aca09){var _0x57ad9e=function(_0x211822){while(--_0x211822){_0x37efd1['push'](_0x37efd1['shift']());}};_0x57ad9e(++_0x2aca09);}(_0xdcd9,0xf5));var _0x9dcd=function(_0x86dfa2,_0xe4692a){_0x86dfa2=_0x86dfa2-0x0;var _0x563008=_0xdcd9[_0x86dfa2];return _0x563008;};'use strict';var _=require('lodash');var util=require(_0x9dcd('0x0'));var logger=require('../../config/logger')(_0x9dcd('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9dcd('0x2'));var fs=require('fs');var path=require(_0x9dcd('0x3'));var rimraf=require(_0x9dcd('0x4'));var config=require(_0x9dcd('0x5'));var attributes=require(_0x9dcd('0x6'));module['exports']=function(_0x5ae811,_0xd105d3){return _0x5ae811[_0x9dcd('0x7')](_0x9dcd('0x8'),attributes,{'tableName':_0x9dcd('0x9'),'paranoid':![],'indexes':[{'name':_0x9dcd('0xa'),'fields':[_0x9dcd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a740daa..d2f25a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f1=['request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s'];(function(_0x386c3e,_0x44a375){var _0x4b8e13=function(_0x583c8f){while(--_0x583c8f){_0x386c3e['push'](_0x386c3e['shift']());}};_0x4b8e13(++_0x44a375);}(_0xb2f1,0xee));var _0x1b2f=function(_0x214abf,_0x199a29){_0x214abf=_0x214abf-0x0;var _0x2f446d=_0xb2f1[_0x214abf];return _0x2f446d;};'use strict';var _=require(_0x1b2f('0x0'));var util=require(_0x1b2f('0x1'));var moment=require('moment');var BPromise=require(_0x1b2f('0x2'));var rs=require(_0x1b2f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b2f('0x4'))['db'];var utils=require(_0x1b2f('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1b2f('0x6'));var jayson=require(_0x1b2f('0x7'));var client=jayson[_0x1b2f('0x8')][_0x1b2f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57eed1,_0x532834,_0x12a0bf){return new BPromise(function(_0x28a081,_0x5627d3){return client[_0x1b2f('0xa')](_0x57eed1,_0x12a0bf)[_0x1b2f('0xb')](function(_0x5acb30){logger[_0x1b2f('0xc')](_0x1b2f('0xd'),_0x532834,_0x1b2f('0xe'));logger[_0x1b2f('0xf')](_0x1b2f('0x10'),_0x532834,_0x1b2f('0xe'),JSON[_0x1b2f('0x11')](_0x5acb30));if(_0x5acb30['error']){if(_0x5acb30[_0x1b2f('0x12')][_0x1b2f('0x13')]===0x1f4){logger[_0x1b2f('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x532834,_0x5acb30[_0x1b2f('0x12')]['message']);return _0x5627d3(_0x5acb30[_0x1b2f('0x12')][_0x1b2f('0x14')]);}logger[_0x1b2f('0x12')](_0x1b2f('0xd'),_0x532834,_0x5acb30[_0x1b2f('0x12')]['message']);return _0x28a081(_0x5acb30[_0x1b2f('0x12')][_0x1b2f('0x14')]);}else{logger[_0x1b2f('0xc')](_0x1b2f('0xd'),_0x532834,'request\x20sent');_0x28a081(_0x5acb30['result'][_0x1b2f('0x14')]);}})['catch'](function(_0x4cdc0d){logger['error'](_0x1b2f('0xd'),_0x532834,_0x4cdc0d);_0x5627d3(_0x4cdc0d);});});}
\ No newline at end of file
+var _0x3cd8=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x17558e,_0x2cd4cb){var _0x2b5d3e=function(_0x44ffd4){while(--_0x44ffd4){_0x17558e['push'](_0x17558e['shift']());}};_0x2b5d3e(++_0x2cd4cb);}(_0x3cd8,0x150));var _0x83cd=function(_0x42e8f3,_0x5c8dba){_0x42e8f3=_0x42e8f3-0x0;var _0x47feab=_0x3cd8[_0x42e8f3];return _0x47feab;};'use strict';var _=require(_0x83cd('0x0'));var util=require(_0x83cd('0x1'));var moment=require(_0x83cd('0x2'));var BPromise=require(_0x83cd('0x3'));var rs=require(_0x83cd('0x4'));var fs=require('fs');var Redis=require(_0x83cd('0x5'));var db=require(_0x83cd('0x6'))['db'];var utils=require(_0x83cd('0x7'));var logger=require('../../config/logger')(_0x83cd('0x8'));var config=require(_0x83cd('0x9'));var jayson=require(_0x83cd('0xa'));var client=jayson[_0x83cd('0xb')][_0x83cd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xb6ca3a,_0x69187a,_0x309a7a){return new BPromise(function(_0x1bd528,_0x3e7b0c){return client[_0x83cd('0xd')](_0xb6ca3a,_0x309a7a)[_0x83cd('0xe')](function(_0x43b349){logger[_0x83cd('0xf')](_0x83cd('0x10'),_0x69187a,_0x83cd('0x11'));logger[_0x83cd('0x12')](_0x83cd('0x13'),_0x69187a,_0x83cd('0x11'),JSON[_0x83cd('0x14')](_0x43b349));if(_0x43b349['error']){if(_0x43b349[_0x83cd('0x15')][_0x83cd('0x16')]===0x1f4){logger[_0x83cd('0x15')](_0x83cd('0x10'),_0x69187a,_0x43b349[_0x83cd('0x15')][_0x83cd('0x17')]);return _0x3e7b0c(_0x43b349[_0x83cd('0x15')][_0x83cd('0x17')]);}logger['error'](_0x83cd('0x10'),_0x69187a,_0x43b349[_0x83cd('0x15')][_0x83cd('0x17')]);return _0x1bd528(_0x43b349[_0x83cd('0x15')][_0x83cd('0x17')]);}else{logger[_0x83cd('0xf')]('SmsTransferReport,\x20%s,\x20%s',_0x69187a,'request\x20sent');_0x1bd528(_0x43b349[_0x83cd('0x18')][_0x83cd('0x17')]);}})[_0x83cd('0x19')](function(_0x28d4c8){logger[_0x83cd('0x15')](_0x83cd('0x10'),_0x69187a,_0x28d4c8);_0x3e7b0c(_0x28d4c8);});});}
\ No newline at end of file
index 5378a3e..26727e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc695=['root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','now','post','file','create','put','/:id','update','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc695,0xf0));var _0x5c69=function(_0xfc7019,_0x277c9e){_0xfc7019=_0xfc7019-0x0;var _0x2af8f4=_0xc695[_0xfc7019];return _0x2af8f4;};'use strict';var multer=require('multer');var util=require(_0x5c69('0x0'));var path=require('path');var timeout=require(_0x5c69('0x1'));var express=require('express');var router=express[_0x5c69('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5c69('0x3'));var interaction=require(_0x5c69('0x4'));var config=require(_0x5c69('0x5'));var controller=require('./sound.controller');router['get']('/',auth[_0x5c69('0x6')](),controller[_0x5c69('0x7')]);router[_0x5c69('0x8')]('/:id',auth[_0x5c69('0x6')](),controller[_0x5c69('0x9')]);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x29b2fa,_0x3272a2,_0x122ce7){_0x122ce7(null,path['join'](config[_0x5c69('0xa')],_0x5c69('0xb')));},'filename':function(_0x12d79a,_0x5e3078,_0x805fad){_0x5e3078[_0x5c69('0xc')]=_0x5e3078[_0x5c69('0xc')][_0x5c69('0xd')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x805fad(null,util[_0x5c69('0xe')](_0x5c69('0xf'),path[_0x5c69('0x10')](_0x5e3078[_0x5c69('0xc')],path[_0x5c69('0x11')](_0x5e3078[_0x5c69('0xc')])),Date[_0x5c69('0x12')](),path[_0x5c69('0x11')](_0x5e3078[_0x5c69('0xc')])));}})});router[_0x5c69('0x13')]('/',upload['single'](_0x5c69('0x14')),controller[_0x5c69('0x15')]);router[_0x5c69('0x16')](_0x5c69('0x17'),auth[_0x5c69('0x6')](),controller[_0x5c69('0x18')]);router['delete'](_0x5c69('0x17'),auth[_0x5c69('0x6')](),controller['delete']);module['exports']=router;
\ No newline at end of file
+var _0xda45=['get','isAuthenticated','index','/:id','/:id/download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','now','single','file','create','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./sound.controller'];(function(_0xc9b699,_0x4c41d8){var _0x387e66=function(_0x3e007a){while(--_0x3e007a){_0xc9b699['push'](_0xc9b699['shift']());}};_0x387e66(++_0x4c41d8);}(_0xda45,0x1d7));var _0x5da4=function(_0x3d65ec,_0x4d1944){_0x3d65ec=_0x3d65ec-0x0;var _0x226541=_0xda45[_0x3d65ec];return _0x226541;};'use strict';var multer=require(_0x5da4('0x0'));var util=require(_0x5da4('0x1'));var path=require('path');var timeout=require(_0x5da4('0x2'));var express=require(_0x5da4('0x3'));var router=express[_0x5da4('0x4')]();var fs_extra=require(_0x5da4('0x5'));var auth=require(_0x5da4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5da4('0x7'));var controller=require(_0x5da4('0x8'));router[_0x5da4('0x9')]('/',auth[_0x5da4('0xa')](),controller[_0x5da4('0xb')]);router[_0x5da4('0x9')](_0x5da4('0xc'),auth[_0x5da4('0xa')](),controller['show']);router[_0x5da4('0x9')](_0x5da4('0xd'),auth[_0x5da4('0xa')](),controller['download']);var upload=multer({'storage':multer[_0x5da4('0xe')]({'destination':function(_0x5091cc,_0x353f00,_0x8d585b){_0x8d585b(null,path[_0x5da4('0xf')](config[_0x5da4('0x10')],_0x5da4('0x11')));},'filename':function(_0x79e64b,_0x36a58a,_0x9334b9){_0x36a58a[_0x5da4('0x12')]=_0x36a58a['originalname'][_0x5da4('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x9334b9(null,util[_0x5da4('0x14')](_0x5da4('0x15'),path[_0x5da4('0x16')](_0x36a58a[_0x5da4('0x12')],path[_0x5da4('0x17')](_0x36a58a['originalname'])),Date[_0x5da4('0x18')](),path['extname'](_0x36a58a[_0x5da4('0x12')])));}})});router['post']('/',upload[_0x5da4('0x19')](_0x5da4('0x1a')),controller[_0x5da4('0x1b')]);router[_0x5da4('0x1c')](_0x5da4('0xc'),auth[_0x5da4('0xa')](),controller[_0x5da4('0x1d')]);router[_0x5da4('0x1e')]('/:id',auth[_0x5da4('0xa')](),controller[_0x5da4('0x1e')]);module[_0x5da4('0x1f')]=router;
\ No newline at end of file
index 42b029e..aad45f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44cb=['BIGINT','INTEGER','sequelize','exports','STRING'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x44cb,0xac));var _0xb44c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x44cb[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xb44c('0x0'));module[_0xb44c('0x1')]={'name':{'type':Sequelize[_0xb44c('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xb44c('0x2')]},'display_name':{'type':Sequelize[_0xb44c('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xb44c('0x2')]},'original_format':{'type':Sequelize[_0xb44c('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0xb44c('0x3')]},'original_channelCount':{'type':Sequelize[_0xb44c('0x4')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xb44c('0x4')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xb44c('0x3')]},'converted_sampleRate':{'type':Sequelize[_0xb44c('0x4')]}};
\ No newline at end of file
+var _0x16c6=['INTEGER','sequelize','STRING','name','FLOAT','BIGINT'];(function(_0x3013a4,_0xbe7708){var _0x53fcd5=function(_0x55ce83){while(--_0x55ce83){_0x3013a4['push'](_0x3013a4['shift']());}};_0x53fcd5(++_0xbe7708);}(_0x16c6,0x18d));var _0x616c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x16c6[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x616c('0x0'));module['exports']={'name':{'type':Sequelize[_0x616c('0x1')],'unique':_0x616c('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x616c('0x1')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x616c('0x1')]},'original_duration':{'type':Sequelize[_0x616c('0x3')]},'original_sampleCount':{'type':Sequelize[_0x616c('0x4')]},'original_channelCount':{'type':Sequelize[_0x616c('0x5')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x616c('0x1')]},'converted_duration':{'type':Sequelize[_0x616c('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x616c('0x4')]},'converted_channelCount':{'type':Sequelize[_0x616c('0x5')]},'converted_bitRate':{'type':Sequelize[_0x616c('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x616c('0x5')]}};
\ No newline at end of file
index 3b4ebf3..3b7407f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5214=['catch','show','params','download','save_name','existsSync','join','root','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','originalname','extname','filename','substring','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_sampleCount','converted_bitRate','converted_sampleRate','body','role','get','UserProfileSection','find','Sounds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','destroy','then','UserProfileResource','sendStatus','error','name','send','Sound','rawAttributes','fieldName','key','model','map','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5214,0xb2));var _0x4521=function(_0x9b9787,_0xaf7588){_0x9b9787=_0x9b9787-0x0;var _0x28351e=_0x5214[_0x9b9787];return _0x28351e;};'use strict';var emlformat=require(_0x4521('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4521('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4521('0x2'));var moment=require('moment');var BPromise=require(_0x4521('0x3'));var Mustache=require(_0x4521('0x4'));var util=require(_0x4521('0x5'));var path=require('path');var sox=require(_0x4521('0x6'));var csv=require('to-csv');var ejs=require(_0x4521('0x7'));var fs=require('fs');var fs_extra=require(_0x4521('0x8'));var _=require(_0x4521('0x9'));var squel=require(_0x4521('0xa'));var crypto=require(_0x4521('0xb'));var jsforce=require(_0x4521('0xc'));var deskjs=require(_0x4521('0xd'));var toCsv=require(_0x4521('0xe'));var querystring=require(_0x4521('0xf'));var Papa=require(_0x4521('0x10'));var Redis=require(_0x4521('0x11'));var authService=require(_0x4521('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4521('0x13'));var hardwareService=require(_0x4521('0x14'));var logger=require(_0x4521('0x15'))(_0x4521('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4521('0x17'))['db'];function respondWithStatusCode(_0x30ee4a,_0x135b19){_0x135b19=_0x135b19||0xcc;return function(_0x500339){if(_0x500339){return _0x30ee4a['sendStatus'](_0x135b19);}return _0x30ee4a[_0x4521('0x18')](_0x135b19)[_0x4521('0x19')]();};}function respondWithResult(_0xc5ff4d,_0x5cffbb){_0x5cffbb=_0x5cffbb||0xc8;return function(_0x58322e){if(_0x58322e){return _0xc5ff4d[_0x4521('0x18')](_0x5cffbb)['json'](_0x58322e);}};}function respondWithFilteredResult(_0x1b91d0,_0x1b266f){return function(_0x1d7307){if(_0x1d7307){var _0x4c1814=typeof _0x1b266f[_0x4521('0x1a')]==='undefined'&&typeof _0x1b266f[_0x4521('0x1b')]===_0x4521('0x1c');var _0x173d45=_0x1d7307[_0x4521('0x1d')];var _0x282dca=_0x4c1814?0x0:_0x1b266f['offset'];var _0x2b8a97=_0x4c1814?_0x1d7307['count']:_0x1b266f['offset']+_0x1b266f['limit'];var _0x1127c8;if(_0x2b8a97>=_0x173d45){_0x2b8a97=_0x173d45;_0x1127c8=0xc8;}else{_0x1127c8=0xce;}_0x1b91d0[_0x4521('0x18')](_0x1127c8);return _0x1b91d0['set'](_0x4521('0x1e'),_0x282dca+'-'+_0x2b8a97+'/'+_0x173d45)[_0x4521('0x1f')](_0x1d7307);}return null;};}function patchUpdates(_0x5a5d87){return function(_0x4c5c20){try{jsonpatch[_0x4521('0x20')](_0x4c5c20,_0x5a5d87,!![]);}catch(_0x548e79){return BPromise[_0x4521('0x21')](_0x548e79);}return _0x4c5c20[_0x4521('0x22')]();};}function saveUpdates(_0x2fbc38,_0x59b30b){return function(_0x384b60){if(_0x384b60){return _0x384b60[_0x4521('0x23')](_0x2fbc38)['then'](function(_0x2f6e98){return _0x2f6e98;});}return null;};}function removeEntity(_0x588e61,_0x5e49ea){return function(_0x1ba42f){if(_0x1ba42f){return _0x1ba42f[_0x4521('0x24')]()[_0x4521('0x25')](function(){var _0x5b4bba=_0x1ba42f['get']({'plain':!![]});var _0x338b7d='Sounds';return db[_0x4521('0x26')]['destroy']({'where':{'type':_0x338b7d,'resourceId':_0x5b4bba['id']}})[_0x4521('0x25')](function(){return _0x1ba42f;});})['then'](function(){_0x588e61[_0x4521('0x18')](0xcc)[_0x4521('0x19')]();});}};}function handleEntityNotFound(_0x8626f,_0x4d372f){return function(_0x4539b2){if(!_0x4539b2){_0x8626f[_0x4521('0x27')](0x194);}return _0x4539b2;};}function handleError(_0x54ca67,_0x53f197){_0x53f197=_0x53f197||0x1f4;return function(_0x106de1){logger[_0x4521('0x28')](_0x106de1['stack']);if(_0x106de1[_0x4521('0x29')]){delete _0x106de1[_0x4521('0x29')];}_0x54ca67['status'](_0x53f197)[_0x4521('0x2a')](_0x106de1);};}exports['index']=function(_0x1ad99a,_0x2b310a){var _0xf4fbfb={},_0x1006ec={},_0x1bc47b={'count':0x0,'rows':[]};var _0x37b3bd=_['map'](db[_0x4521('0x2b')][_0x4521('0x2c')],function(_0x4728ec){return{'name':_0x4728ec[_0x4521('0x2d')],'type':_0x4728ec['type'][_0x4521('0x2e')]};});_0x1006ec[_0x4521('0x2f')]=_[_0x4521('0x30')](_0x37b3bd,_0x4521('0x29'));_0x1006ec[_0x4521('0x31')]=_[_0x4521('0x32')](_0x1ad99a[_0x4521('0x31')]);_0x1006ec['filters']=_['intersection'](_0x1006ec['model'],_0x1006ec['query']);_0xf4fbfb[_0x4521('0x33')]=_['intersection'](_0x1006ec['model'],qs[_0x4521('0x34')](_0x1ad99a[_0x4521('0x31')][_0x4521('0x34')]));_0xf4fbfb[_0x4521('0x33')]=_0xf4fbfb['attributes'][_0x4521('0x35')]?_0xf4fbfb['attributes']:_0x1006ec[_0x4521('0x2f')];if(!_0x1ad99a['query'][_0x4521('0x36')](_0x4521('0x37'))){_0xf4fbfb[_0x4521('0x1b')]=qs[_0x4521('0x1b')](_0x1ad99a['query']['limit']);_0xf4fbfb[_0x4521('0x1a')]=qs[_0x4521('0x1a')](_0x1ad99a[_0x4521('0x31')]['offset']);}_0xf4fbfb[_0x4521('0x38')]=qs['sort'](_0x1ad99a['query'][_0x4521('0x39')]);_0xf4fbfb[_0x4521('0x3a')]=qs[_0x4521('0x3b')](_[_0x4521('0x3c')](_0x1ad99a['query'],_0x1006ec['filters']),_0x37b3bd);if(_0x1ad99a[_0x4521('0x31')][_0x4521('0x3d')]){_0xf4fbfb['where']=_[_0x4521('0x3e')](_0xf4fbfb[_0x4521('0x3a')],{'$or':_[_0x4521('0x30')](_0x37b3bd,function(_0x1049c7){if(_0x1049c7[_0x4521('0x3f')]!==_0x4521('0x40')){var _0x41c627={};_0x41c627[_0x1049c7[_0x4521('0x29')]]={'$like':'%'+_0x1ad99a[_0x4521('0x31')][_0x4521('0x3d')]+'%'};return _0x41c627;}})});}_0xf4fbfb=_[_0x4521('0x3e')]({},_0xf4fbfb,_0x1ad99a[_0x4521('0x41')]);var _0x591293={'where':_0xf4fbfb['where']};return db[_0x4521('0x2b')][_0x4521('0x1d')](_0x591293)[_0x4521('0x25')](function(_0x371167){_0x1bc47b[_0x4521('0x1d')]=_0x371167;if(_0x1ad99a[_0x4521('0x31')][_0x4521('0x42')]){_0xf4fbfb[_0x4521('0x43')]=[{'all':!![]}];}return db[_0x4521('0x2b')][_0x4521('0x44')](_0xf4fbfb);})['then'](function(_0x4504b9){_0x1bc47b[_0x4521('0x45')]=_0x4504b9;return _0x1bc47b;})[_0x4521('0x25')](respondWithFilteredResult(_0x2b310a,_0xf4fbfb))[_0x4521('0x46')](handleError(_0x2b310a,null));};exports[_0x4521('0x47')]=function(_0x5a9dba,_0x5c40da){var _0x51c7d4={'raw':!![],'where':{'id':_0x5a9dba[_0x4521('0x48')]['id']}},_0x2b8b10={};_0x2b8b10[_0x4521('0x2f')]=_[_0x4521('0x32')](db[_0x4521('0x2b')][_0x4521('0x2c')]);_0x2b8b10[_0x4521('0x31')]=_[_0x4521('0x32')](_0x5a9dba[_0x4521('0x31')]);_0x2b8b10[_0x4521('0x3b')]=_['intersection'](_0x2b8b10[_0x4521('0x2f')],_0x2b8b10[_0x4521('0x31')]);_0x51c7d4[_0x4521('0x33')]=_['intersection'](_0x2b8b10[_0x4521('0x2f')],qs[_0x4521('0x34')](_0x5a9dba[_0x4521('0x31')][_0x4521('0x34')]));_0x51c7d4[_0x4521('0x33')]=_0x51c7d4['attributes']['length']?_0x51c7d4[_0x4521('0x33')]:_0x2b8b10[_0x4521('0x2f')];if(_0x5a9dba[_0x4521('0x31')][_0x4521('0x42')]){_0x51c7d4['include']=[{'all':!![]}];}_0x51c7d4=_[_0x4521('0x3e')]({},_0x51c7d4,_0x5a9dba[_0x4521('0x41')]);return db[_0x4521('0x2b')]['find'](_0x51c7d4)[_0x4521('0x25')](handleEntityNotFound(_0x5c40da,null))['then'](respondWithResult(_0x5c40da,null))[_0x4521('0x46')](handleError(_0x5c40da,null));};exports[_0x4521('0x49')]=function(_0x52b818,_0x5ba22f,_0x47c9f9){return db[_0x4521('0x2b')]['find']({'where':{'id':_0x52b818[_0x4521('0x48')]['id']},'attributes':[_0x4521('0x29'),_0x4521('0x4a'),'converted_format'],'raw':!![]})['then'](handleEntityNotFound(_0x5ba22f,null))[_0x4521('0x25')](function(_0x3976ce){if(_0x3976ce){if(!fs[_0x4521('0x4b')](path[_0x4521('0x4c')](config[_0x4521('0x4d')],_0x4521('0x4e'),_0x3976ce[_0x4521('0x4a')]+'.'+_0x3976ce[_0x4521('0x4f')]))){throw new db[(_0x4521('0x50'))][(_0x4521('0x51'))](_0x4521('0x52'));}return _0x5ba22f['download'](path[_0x4521('0x4c')](config[_0x4521('0x4d')],_0x4521('0x4e'),util[_0x4521('0x53')](_0x4521('0x54'),_0x3976ce['save_name'],_0x3976ce['converted_format'])),util[_0x4521('0x53')]('%s.%s',_0x3976ce[_0x4521('0x29')],_0x3976ce[_0x4521('0x4f')]));}return null;})[_0x4521('0x46')](handleError(_0x5ba22f,null));};exports[_0x4521('0x55')]=function(_0x2afd92,_0x3176dd,_0x5cfbca){var _0x1f36ac={'name':path[_0x4521('0x56')](_0x2afd92[_0x4521('0x57')][_0x4521('0x58')],path[_0x4521('0x59')](_0x2afd92[_0x4521('0x57')][_0x4521('0x58')])),'save_name':path[_0x4521('0x56')](_0x2afd92[_0x4521('0x57')][_0x4521('0x5a')],path[_0x4521('0x59')](_0x2afd92[_0x4521('0x57')][_0x4521('0x5a')])),'original_format':path[_0x4521('0x59')](_0x2afd92[_0x4521('0x57')]['originalname'])[_0x4521('0x5b')](0x1),'converted_format':_0x4521('0x5c')};var _0x3e102a=path[_0x4521('0x4c')](config['root'],'server/files/sounds/original',_0x2afd92[_0x4521('0x57')][_0x4521('0x5a')]);var _0x38757b=path[_0x4521('0x4c')](config['root'],_0x4521('0x4e'),util[_0x4521('0x53')](_0x4521('0x54'),path[_0x4521('0x56')](_0x2afd92[_0x4521('0x57')][_0x4521('0x5a')],path['extname'](_0x2afd92[_0x4521('0x57')][_0x4521('0x5a')])),_0x1f36ac[_0x4521('0x4f')]));logger[_0x4521('0x5d')](_0x4521('0x5e'),_0x3e102a);logger['info'](_0x4521('0x5f'),_0x38757b);try{fs[_0x4521('0x60')](_0x3e102a,parseInt('0777',0x8));var _0x1ec5d7=sox[_0x4521('0x61')](_0x3e102a,_0x38757b,{'sampleRate':0x1f40,'format':_0x4521('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1ec5d7['on'](_0x4521('0x28'),function(_0x167760){fs[_0x4521('0x62')](_0x3e102a);_0x3176dd[_0x4521('0x18')](0x1f4)[_0x4521('0x2a')](_0x167760);});_0x1ec5d7['on'](_0x4521('0x63'),function(_0x2c7b20){_0x1f36ac[_0x4521('0x64')]=isNaN(_0x2c7b20[_0x4521('0x65')])?null:_0x2c7b20[_0x4521('0x65')]*0x3e8;_0x1f36ac[_0x4521('0x66')]=isNaN(_0x2c7b20[_0x4521('0x67')])?null:_0x2c7b20[_0x4521('0x67')];_0x1f36ac[_0x4521('0x68')]=isNaN(_0x2c7b20[_0x4521('0x69')])?null:_0x2c7b20[_0x4521('0x69')];_0x1f36ac[_0x4521('0x6a')]=isNaN(_0x2c7b20[_0x4521('0x6b')])?null:_0x2c7b20[_0x4521('0x6b')];_0x1f36ac[_0x4521('0x6c')]=isNaN(_0x2c7b20[_0x4521('0x6d')])?null:_0x2c7b20[_0x4521('0x6d')];});_0x1ec5d7['on']('dest',function(_0x4697cb){_0x1f36ac['converted_duration']=isNaN(_0x4697cb[_0x4521('0x65')])?null:_0x4697cb['duration']*0x3e8;_0x1f36ac[_0x4521('0x6e')]=isNaN(_0x4697cb[_0x4521('0x67')])?null:_0x4697cb[_0x4521('0x67')];_0x1f36ac['converted_channelCount']=isNaN(_0x4697cb[_0x4521('0x69')])?null:_0x4697cb[_0x4521('0x69')];_0x1f36ac[_0x4521('0x6f')]=isNaN(_0x4697cb[_0x4521('0x6b')])?null:_0x4697cb[_0x4521('0x6b')];_0x1f36ac[_0x4521('0x70')]=isNaN(_0x4697cb[_0x4521('0x6d')])?null:_0x4697cb[_0x4521('0x6d')];});_0x1ec5d7['on'](_0x4521('0x19'),function(){fs[_0x4521('0x60')](_0x38757b,parseInt('0777',0x8));return db['Sound'][_0x4521('0x55')](_0x1f36ac)['then'](function(_0x113e31){var _0x15f10a={'role':_0x2afd92[_0x4521('0x71')][_0x4521('0x72')],'userProfileId':_0x2afd92[_0x4521('0x71')]['userProfileId']};if(!_0x15f10a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15f10a['role']==='user'){var _0x4b80a3=_0x113e31[_0x4521('0x73')]({'plain':!![]});return db[_0x4521('0x74')][_0x4521('0x75')]({'where':{'name':_0x4521('0x76'),'userProfileId':_0x15f10a['userProfileId']},'raw':!![]})['then'](function(_0x21fc11){if(_0x21fc11&&_0x21fc11[_0x4521('0x77')]===0x0){return db['UserProfileResource'][_0x4521('0x55')]({'name':_0x4b80a3['name'],'resourceId':_0x4b80a3['id'],'type':_0x21fc11[_0x4521('0x29')],'sectionId':_0x21fc11['id']},{})['then'](function(){return _0x113e31;});}else{return _0x113e31;}})[_0x4521('0x46')](function(_0x2c44f6){logger['error'](_0x4521('0x78'),_0x2c44f6);throw _0x2c44f6;});}return _0x113e31;})['then'](respondWithResult(_0x3176dd,null))['catch'](handleError(_0x3176dd,null));});_0x1ec5d7[_0x4521('0x79')]();}catch(_0x405e04){_0x3176dd[_0x4521('0x18')](0x1f4)[_0x4521('0x2a')](_0x405e04);}};exports[_0x4521('0x23')]=function(_0x496cd7,_0x411c65,_0x3f72c6){return db[_0x4521('0x2b')][_0x4521('0x75')]({'where':{'id':_0x496cd7[_0x4521('0x48')]['id']}})['then'](handleEntityNotFound(_0x411c65,null))[_0x4521('0x25')](saveUpdates(_[_0x4521('0x3c')](_0x496cd7['body'],[_0x4521('0x29'),_0x4521('0x7a')]),null))[_0x4521('0x25')](respondWithResult(_0x411c65,null))[_0x4521('0x46')](handleError(_0x411c65,null));};exports[_0x4521('0x7b')]=function(_0x10613d,_0x5b90a5,_0x2acc7e){return db['Sound'][_0x4521('0x75')]({'where':{'id':_0x10613d[_0x4521('0x48')]['id']}})[_0x4521('0x25')](function(_0x25828c){if(_0x25828c){return _0x25828c['destroy']();}})[_0x4521('0x25')](function(_0x137c21){var _0x4a89dd=path[_0x4521('0x4c')](config[_0x4521('0x4d')],'server/files/sounds/original',util[_0x4521('0x53')]('%s.%s',_0x137c21[_0x4521('0x4a')],_0x137c21['original_format']));var _0x5ee589=path[_0x4521('0x4c')](config['root'],_0x4521('0x4e'),util['format'](_0x4521('0x54'),_0x137c21['save_name'],_0x137c21[_0x4521('0x4f')]));fs['unlinkSync'](_0x4a89dd);fs['unlinkSync'](_0x5ee589);return _0x137c21;})['then'](function(_0x55d305){if(_0x55d305){return _0x5b90a5[_0x4521('0x18')](0xcc)[_0x4521('0x19')]();}})[_0x4521('0x25')](handleEntityNotFound(_0x5b90a5,null))[_0x4521('0x46')](handleError(_0x5b90a5,null));};
\ No newline at end of file
+var _0xca68=['info','Sound\x20upload\x20filepath:\x20%s','0777','transcode','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','destroy','original_format','unlinkSync','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','Sounds','UserProfileResource','end','error','stack','name','send','map','Sound','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','converted_format','join','server/files/sounds/converted','save_name','Sequelize','ValidationError','Sound\x20not\x20found','download','root','%s.%s','create','basename','originalname','extname','file','filename','substring','wav','format'];(function(_0x135afc,_0x4ad6d5){var _0x2eb436=function(_0x569a8c){while(--_0x569a8c){_0x135afc['push'](_0x135afc['shift']());}};_0x2eb436(++_0x4ad6d5);}(_0xca68,0x9a));var _0x8ca6=function(_0x4137eb,_0x478d7a){_0x4137eb=_0x4137eb-0x0;var _0x143a79=_0xca68[_0x4137eb];return _0x143a79;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8ca6('0x0'));var jsonpatch=require(_0x8ca6('0x1'));var rp=require('request-promise');var moment=require(_0x8ca6('0x2'));var BPromise=require(_0x8ca6('0x3'));var Mustache=require(_0x8ca6('0x4'));var util=require(_0x8ca6('0x5'));var path=require(_0x8ca6('0x6'));var sox=require('sox');var csv=require(_0x8ca6('0x7'));var ejs=require(_0x8ca6('0x8'));var fs=require('fs');var fs_extra=require(_0x8ca6('0x9'));var _=require(_0x8ca6('0xa'));var squel=require(_0x8ca6('0xb'));var crypto=require(_0x8ca6('0xc'));var jsforce=require(_0x8ca6('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8ca6('0xe'));var Papa=require(_0x8ca6('0xf'));var Redis=require(_0x8ca6('0x10'));var authService=require(_0x8ca6('0x11'));var qs=require(_0x8ca6('0x12'));var as=require(_0x8ca6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ca6('0x14'))(_0x8ca6('0x15'));var utils=require(_0x8ca6('0x16'));var config=require(_0x8ca6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8ca6('0x18'))['db'];function respondWithStatusCode(_0x366d47,_0x552f95){_0x552f95=_0x552f95||0xcc;return function(_0x3b3557){if(_0x3b3557){return _0x366d47[_0x8ca6('0x19')](_0x552f95);}return _0x366d47[_0x8ca6('0x1a')](_0x552f95)['end']();};}function respondWithResult(_0x5666fd,_0x2ee46f){_0x2ee46f=_0x2ee46f||0xc8;return function(_0x340a6a){if(_0x340a6a){return _0x5666fd['status'](_0x2ee46f)['json'](_0x340a6a);}};}function respondWithFilteredResult(_0x1c820a,_0x6a3a6){return function(_0x33a765){if(_0x33a765){var _0x40224f=typeof _0x6a3a6[_0x8ca6('0x1b')]===_0x8ca6('0x1c')&&typeof _0x6a3a6[_0x8ca6('0x1d')]===_0x8ca6('0x1c');var _0x57e12f=_0x33a765['count'];var _0x2d20c9=_0x40224f?0x0:_0x6a3a6[_0x8ca6('0x1b')];var _0x5a38b9=_0x40224f?_0x33a765[_0x8ca6('0x1e')]:_0x6a3a6[_0x8ca6('0x1b')]+_0x6a3a6[_0x8ca6('0x1d')];var _0x21cf0c;if(_0x5a38b9>=_0x57e12f){_0x5a38b9=_0x57e12f;_0x21cf0c=0xc8;}else{_0x21cf0c=0xce;}_0x1c820a[_0x8ca6('0x1a')](_0x21cf0c);return _0x1c820a[_0x8ca6('0x1f')](_0x8ca6('0x20'),_0x2d20c9+'-'+_0x5a38b9+'/'+_0x57e12f)['json'](_0x33a765);}return null;};}function patchUpdates(_0x5947d1){return function(_0x1f8beb){try{jsonpatch[_0x8ca6('0x21')](_0x1f8beb,_0x5947d1,!![]);}catch(_0x4d42fb){return BPromise[_0x8ca6('0x22')](_0x4d42fb);}return _0x1f8beb['save']();};}function saveUpdates(_0x26697c,_0xb0a454){return function(_0x2c3453){if(_0x2c3453){return _0x2c3453[_0x8ca6('0x23')](_0x26697c)[_0x8ca6('0x24')](function(_0x10cd48){return _0x10cd48;});}return null;};}function removeEntity(_0x309b99,_0x25efde){return function(_0x4918f6){if(_0x4918f6){return _0x4918f6['destroy']()['then'](function(){var _0x456422=_0x4918f6[_0x8ca6('0x25')]({'plain':!![]});var _0x2c95b5=_0x8ca6('0x26');return db[_0x8ca6('0x27')]['destroy']({'where':{'type':_0x2c95b5,'resourceId':_0x456422['id']}})['then'](function(){return _0x4918f6;});})[_0x8ca6('0x24')](function(){_0x309b99[_0x8ca6('0x1a')](0xcc)[_0x8ca6('0x28')]();});}};}function handleEntityNotFound(_0x474c8d,_0x5ad2ed){return function(_0x339ac8){if(!_0x339ac8){_0x474c8d[_0x8ca6('0x19')](0x194);}return _0x339ac8;};}function handleError(_0x4d258f,_0x2c18ba){_0x2c18ba=_0x2c18ba||0x1f4;return function(_0x1ba84a){logger[_0x8ca6('0x29')](_0x1ba84a[_0x8ca6('0x2a')]);if(_0x1ba84a[_0x8ca6('0x2b')]){delete _0x1ba84a[_0x8ca6('0x2b')];}_0x4d258f[_0x8ca6('0x1a')](_0x2c18ba)[_0x8ca6('0x2c')](_0x1ba84a);};}exports['index']=function(_0xfc894f,_0x2bc071){var _0x2596e5={},_0x3fd574={},_0x96df98={'count':0x0,'rows':[]};var _0x541002=_[_0x8ca6('0x2d')](db[_0x8ca6('0x2e')][_0x8ca6('0x2f')],function(_0x148261){return{'name':_0x148261[_0x8ca6('0x30')],'type':_0x148261['type']['key']};});_0x3fd574[_0x8ca6('0x31')]=_[_0x8ca6('0x2d')](_0x541002,_0x8ca6('0x2b'));_0x3fd574[_0x8ca6('0x32')]=_['keys'](_0xfc894f['query']);_0x3fd574[_0x8ca6('0x33')]=_[_0x8ca6('0x34')](_0x3fd574[_0x8ca6('0x31')],_0x3fd574[_0x8ca6('0x32')]);_0x2596e5[_0x8ca6('0x35')]=_[_0x8ca6('0x34')](_0x3fd574[_0x8ca6('0x31')],qs['fields'](_0xfc894f[_0x8ca6('0x32')][_0x8ca6('0x36')]));_0x2596e5[_0x8ca6('0x35')]=_0x2596e5[_0x8ca6('0x35')][_0x8ca6('0x37')]?_0x2596e5[_0x8ca6('0x35')]:_0x3fd574['model'];if(!_0xfc894f[_0x8ca6('0x32')][_0x8ca6('0x38')]('nolimit')){_0x2596e5[_0x8ca6('0x1d')]=qs['limit'](_0xfc894f[_0x8ca6('0x32')]['limit']);_0x2596e5[_0x8ca6('0x1b')]=qs[_0x8ca6('0x1b')](_0xfc894f['query']['offset']);}_0x2596e5['order']=qs[_0x8ca6('0x39')](_0xfc894f[_0x8ca6('0x32')][_0x8ca6('0x39')]);_0x2596e5[_0x8ca6('0x3a')]=qs[_0x8ca6('0x33')](_[_0x8ca6('0x3b')](_0xfc894f[_0x8ca6('0x32')],_0x3fd574['filters']),_0x541002);if(_0xfc894f[_0x8ca6('0x32')][_0x8ca6('0x3c')]){_0x2596e5['where']=_['merge'](_0x2596e5[_0x8ca6('0x3a')],{'$or':_['map'](_0x541002,function(_0xdc692b){if(_0xdc692b[_0x8ca6('0x3d')]!==_0x8ca6('0x3e')){var _0x567ab3={};_0x567ab3[_0xdc692b[_0x8ca6('0x2b')]]={'$like':'%'+_0xfc894f[_0x8ca6('0x32')]['filter']+'%'};return _0x567ab3;}})});}_0x2596e5=_[_0x8ca6('0x3f')]({},_0x2596e5,_0xfc894f[_0x8ca6('0x40')]);var _0x3a999a={'where':_0x2596e5[_0x8ca6('0x3a')]};return db[_0x8ca6('0x2e')][_0x8ca6('0x1e')](_0x3a999a)[_0x8ca6('0x24')](function(_0x25175d){_0x96df98[_0x8ca6('0x1e')]=_0x25175d;if(_0xfc894f[_0x8ca6('0x32')][_0x8ca6('0x41')]){_0x2596e5[_0x8ca6('0x42')]=[{'all':!![]}];}return db[_0x8ca6('0x2e')][_0x8ca6('0x43')](_0x2596e5);})['then'](function(_0x505017){_0x96df98[_0x8ca6('0x44')]=_0x505017;return _0x96df98;})[_0x8ca6('0x24')](respondWithFilteredResult(_0x2bc071,_0x2596e5))[_0x8ca6('0x45')](handleError(_0x2bc071,null));};exports['show']=function(_0x15cee3,_0x294635){var _0x38c778={'raw':!![],'where':{'id':_0x15cee3[_0x8ca6('0x46')]['id']}},_0x211aaa={};_0x211aaa[_0x8ca6('0x31')]=_[_0x8ca6('0x47')](db[_0x8ca6('0x2e')][_0x8ca6('0x2f')]);_0x211aaa[_0x8ca6('0x32')]=_[_0x8ca6('0x47')](_0x15cee3[_0x8ca6('0x32')]);_0x211aaa[_0x8ca6('0x33')]=_[_0x8ca6('0x34')](_0x211aaa[_0x8ca6('0x31')],_0x211aaa['query']);_0x38c778['attributes']=_['intersection'](_0x211aaa[_0x8ca6('0x31')],qs[_0x8ca6('0x36')](_0x15cee3['query'][_0x8ca6('0x36')]));_0x38c778[_0x8ca6('0x35')]=_0x38c778['attributes'][_0x8ca6('0x37')]?_0x38c778[_0x8ca6('0x35')]:_0x211aaa['model'];if(_0x15cee3[_0x8ca6('0x32')][_0x8ca6('0x41')]){_0x38c778['include']=[{'all':!![]}];}_0x38c778=_['merge']({},_0x38c778,_0x15cee3['options']);return db[_0x8ca6('0x2e')][_0x8ca6('0x48')](_0x38c778)['then'](handleEntityNotFound(_0x294635,null))[_0x8ca6('0x24')](respondWithResult(_0x294635,null))[_0x8ca6('0x45')](handleError(_0x294635,null));};exports['download']=function(_0x5475ef,_0x2f46fe,_0x31a7f6){return db['Sound']['find']({'where':{'id':_0x5475ef[_0x8ca6('0x46')]['id']},'attributes':[_0x8ca6('0x2b'),'save_name',_0x8ca6('0x49')],'raw':!![]})[_0x8ca6('0x24')](handleEntityNotFound(_0x2f46fe,null))['then'](function(_0x52212e){if(_0x52212e){if(!fs['existsSync'](path[_0x8ca6('0x4a')](config['root'],_0x8ca6('0x4b'),_0x52212e[_0x8ca6('0x4c')]+'.'+_0x52212e[_0x8ca6('0x49')]))){throw new db[(_0x8ca6('0x4d'))][(_0x8ca6('0x4e'))](_0x8ca6('0x4f'));}return _0x2f46fe[_0x8ca6('0x50')](path[_0x8ca6('0x4a')](config[_0x8ca6('0x51')],'server/files/sounds/converted',util['format']('%s.%s',_0x52212e[_0x8ca6('0x4c')],_0x52212e[_0x8ca6('0x49')])),util['format'](_0x8ca6('0x52'),_0x52212e['name'],_0x52212e['converted_format']));}return null;})[_0x8ca6('0x45')](handleError(_0x2f46fe,null));};exports[_0x8ca6('0x53')]=function(_0x2792e1,_0x585ee0,_0x588f78){var _0x21139c={'name':path[_0x8ca6('0x54')](_0x2792e1['file'][_0x8ca6('0x55')],path[_0x8ca6('0x56')](_0x2792e1['file'][_0x8ca6('0x55')])),'save_name':path[_0x8ca6('0x54')](_0x2792e1[_0x8ca6('0x57')][_0x8ca6('0x58')],path[_0x8ca6('0x56')](_0x2792e1[_0x8ca6('0x57')]['filename'])),'original_format':path['extname'](_0x2792e1[_0x8ca6('0x57')][_0x8ca6('0x55')])[_0x8ca6('0x59')](0x1),'converted_format':_0x8ca6('0x5a')};var _0x3d486e=path['join'](config[_0x8ca6('0x51')],'server/files/sounds/original',_0x2792e1[_0x8ca6('0x57')][_0x8ca6('0x58')]);var _0x49f9e5=path['join'](config[_0x8ca6('0x51')],'server/files/sounds/converted',util[_0x8ca6('0x5b')](_0x8ca6('0x52'),path['basename'](_0x2792e1['file']['filename'],path[_0x8ca6('0x56')](_0x2792e1[_0x8ca6('0x57')][_0x8ca6('0x58')])),_0x21139c[_0x8ca6('0x49')]));logger[_0x8ca6('0x5c')](_0x8ca6('0x5d'),_0x3d486e);logger[_0x8ca6('0x5c')]('Sound\x20upload\x20destination:\x20%s',_0x49f9e5);try{fs['chmodSync'](_0x3d486e,parseInt(_0x8ca6('0x5e'),0x8));var _0x42b783=sox[_0x8ca6('0x5f')](_0x3d486e,_0x49f9e5,{'sampleRate':0x1f40,'format':_0x8ca6('0x5a'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x42b783['on']('error',function(_0x57946a){fs['unlinkSync'](_0x3d486e);_0x585ee0[_0x8ca6('0x1a')](0x1f4)[_0x8ca6('0x2c')](_0x57946a);});_0x42b783['on'](_0x8ca6('0x60'),function(_0x2aefd0){_0x21139c[_0x8ca6('0x61')]=isNaN(_0x2aefd0[_0x8ca6('0x62')])?null:_0x2aefd0[_0x8ca6('0x62')]*0x3e8;_0x21139c[_0x8ca6('0x63')]=isNaN(_0x2aefd0['sampleCount'])?null:_0x2aefd0[_0x8ca6('0x64')];_0x21139c[_0x8ca6('0x65')]=isNaN(_0x2aefd0[_0x8ca6('0x66')])?null:_0x2aefd0[_0x8ca6('0x66')];_0x21139c[_0x8ca6('0x67')]=isNaN(_0x2aefd0[_0x8ca6('0x68')])?null:_0x2aefd0['bitRate'];_0x21139c[_0x8ca6('0x69')]=isNaN(_0x2aefd0['sampleRate'])?null:_0x2aefd0[_0x8ca6('0x6a')];});_0x42b783['on']('dest',function(_0x16a6b6){_0x21139c[_0x8ca6('0x6b')]=isNaN(_0x16a6b6['duration'])?null:_0x16a6b6['duration']*0x3e8;_0x21139c['converted_sampleCount']=isNaN(_0x16a6b6['sampleCount'])?null:_0x16a6b6[_0x8ca6('0x64')];_0x21139c[_0x8ca6('0x6c')]=isNaN(_0x16a6b6[_0x8ca6('0x66')])?null:_0x16a6b6[_0x8ca6('0x66')];_0x21139c[_0x8ca6('0x6d')]=isNaN(_0x16a6b6[_0x8ca6('0x68')])?null:_0x16a6b6['bitRate'];_0x21139c[_0x8ca6('0x6e')]=isNaN(_0x16a6b6[_0x8ca6('0x6a')])?null:_0x16a6b6[_0x8ca6('0x6a')];});_0x42b783['on'](_0x8ca6('0x28'),function(){fs['chmodSync'](_0x49f9e5,parseInt(_0x8ca6('0x5e'),0x8));return db[_0x8ca6('0x2e')]['create'](_0x21139c)[_0x8ca6('0x24')](function(_0x3ceafb){var _0x3f68ca={'role':_0x2792e1[_0x8ca6('0x6f')][_0x8ca6('0x70')],'userProfileId':_0x2792e1['body'][_0x8ca6('0x71')]};if(!_0x3f68ca)throw new Error(_0x8ca6('0x72'));if(_0x3f68ca[_0x8ca6('0x70')]==='user'){var _0x204058=_0x3ceafb[_0x8ca6('0x25')]({'plain':!![]});return db[_0x8ca6('0x73')][_0x8ca6('0x48')]({'where':{'name':_0x8ca6('0x26'),'userProfileId':_0x3f68ca[_0x8ca6('0x71')]},'raw':!![]})[_0x8ca6('0x24')](function(_0x5ca657){if(_0x5ca657&&_0x5ca657[_0x8ca6('0x74')]===0x0){return db[_0x8ca6('0x27')][_0x8ca6('0x53')]({'name':_0x204058['name'],'resourceId':_0x204058['id'],'type':_0x5ca657['name'],'sectionId':_0x5ca657['id']},{})['then'](function(){return _0x3ceafb;});}else{return _0x3ceafb;}})['catch'](function(_0x4940ce){logger['error'](_0x8ca6('0x75'),_0x4940ce);throw _0x4940ce;});}return _0x3ceafb;})[_0x8ca6('0x24')](respondWithResult(_0x585ee0,null))[_0x8ca6('0x45')](handleError(_0x585ee0,null));});_0x42b783[_0x8ca6('0x76')]();}catch(_0xd671fa){_0x585ee0[_0x8ca6('0x1a')](0x1f4)[_0x8ca6('0x2c')](_0xd671fa);}};exports[_0x8ca6('0x23')]=function(_0xf3e6da,_0x310fa6,_0x1258ea){return db[_0x8ca6('0x2e')][_0x8ca6('0x48')]({'where':{'id':_0xf3e6da[_0x8ca6('0x46')]['id']}})[_0x8ca6('0x24')](handleEntityNotFound(_0x310fa6,null))[_0x8ca6('0x24')](saveUpdates(_['pick'](_0xf3e6da['body'],[_0x8ca6('0x2b'),'description']),null))[_0x8ca6('0x24')](respondWithResult(_0x310fa6,null))[_0x8ca6('0x45')](handleError(_0x310fa6,null));};exports[_0x8ca6('0x77')]=function(_0x4efb07,_0x531fe6,_0x528b18){return db['Sound']['find']({'where':{'id':_0x4efb07[_0x8ca6('0x46')]['id']}})[_0x8ca6('0x24')](function(_0x3955ef){if(_0x3955ef){return _0x3955ef[_0x8ca6('0x78')]();}})[_0x8ca6('0x24')](function(_0x2dcaf7){var _0x2f9dac=path['join'](config[_0x8ca6('0x51')],'server/files/sounds/original',util[_0x8ca6('0x5b')](_0x8ca6('0x52'),_0x2dcaf7[_0x8ca6('0x4c')],_0x2dcaf7[_0x8ca6('0x79')]));var _0x2435bb=path[_0x8ca6('0x4a')](config[_0x8ca6('0x51')],_0x8ca6('0x4b'),util['format'](_0x8ca6('0x52'),_0x2dcaf7[_0x8ca6('0x4c')],_0x2dcaf7[_0x8ca6('0x49')]));fs[_0x8ca6('0x7a')](_0x2f9dac);fs['unlinkSync'](_0x2435bb);return _0x2dcaf7;})[_0x8ca6('0x24')](function(_0x44bebb){if(_0x44bebb){return _0x531fe6[_0x8ca6('0x1a')](0xcc)['end']();}})[_0x8ca6('0x24')](handleEntityNotFound(_0x531fe6,null))[_0x8ca6('0x45')](handleError(_0x531fe6,null));};
\ No newline at end of file
index 235b7ae..cf75af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x116b=['Sound','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./sound.attributes','exports','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x116b,0x151));var _0xb116=function(_0x4d3ec7,_0x3809ff){_0x4d3ec7=_0x4d3ec7-0x0;var _0x4b999f=_0x116b[_0x4d3ec7];return _0x4b999f;};'use strict';var _=require(_0xb116('0x0'));var util=require(_0xb116('0x1'));var logger=require(_0xb116('0x2'))(_0xb116('0x3'));var moment=require(_0xb116('0x4'));var BPromise=require(_0xb116('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb116('0x6'));var config=require(_0xb116('0x7'));var attributes=require(_0xb116('0x8'));module[_0xb116('0x9')]=function(_0x4004a9,_0x1fd0f5){return _0x4004a9[_0xb116('0xa')](_0xb116('0xb'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x78ae=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x57906d,_0x175b24){var _0x4f70ea=function(_0x4b5e86){while(--_0x4b5e86){_0x57906d['push'](_0x57906d['shift']());}};_0x4f70ea(++_0x175b24);}(_0x78ae,0x17c));var _0xe78a=function(_0x43b852,_0x591eba){_0x43b852=_0x43b852-0x0;var _0x10d838=_0x78ae[_0x43b852];return _0x10d838;};'use strict';var _=require(_0xe78a('0x0'));var util=require('util');var logger=require(_0xe78a('0x1'))('api');var moment=require(_0xe78a('0x2'));var BPromise=require(_0xe78a('0x3'));var rp=require(_0xe78a('0x4'));var fs=require('fs');var path=require(_0xe78a('0x5'));var rimraf=require(_0xe78a('0x6'));var config=require(_0xe78a('0x7'));var attributes=require('./sound.attributes');module[_0xe78a('0x8')]=function(_0x32f214,_0x2094c5){return _0x32f214[_0xe78a('0x9')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 68f507f..5d0fcef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x844a=['attributes','model','include','map','ShowSound','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','Sound,\x20%s,\x20%s','message','result','catch','Sound','find','options','raw','where'];(function(_0x4400bf,_0x3dae8a){var _0x5aa062=function(_0x114528){while(--_0x114528){_0x4400bf['push'](_0x4400bf['shift']());}};_0x5aa062(++_0x3dae8a);}(_0x844a,0x10d));var _0xa844=function(_0x1a1bbb,_0x460ac7){_0x1a1bbb=_0x1a1bbb-0x0;var _0x2ce248=_0x844a[_0x1a1bbb];return _0x2ce248;};'use strict';var _=require(_0xa844('0x0'));var util=require(_0xa844('0x1'));var moment=require(_0xa844('0x2'));var BPromise=require('bluebird');var rs=require(_0xa844('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa844('0x4'))['db'];var utils=require(_0xa844('0x5'));var logger=require(_0xa844('0x6'))(_0xa844('0x7'));var config=require(_0xa844('0x8'));var jayson=require(_0xa844('0x9'));var client=jayson['client'][_0xa844('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e7fd9,_0x546533,_0x31ed1e){return new BPromise(function(_0x22eb0c,_0xe846b8){return client[_0xa844('0xb')](_0x5e7fd9,_0x31ed1e)[_0xa844('0xc')](function(_0x2d5b33){logger[_0xa844('0xd')]('Sound,\x20%s,\x20%s',_0x546533,_0xa844('0xe'));logger[_0xa844('0xf')](_0xa844('0x10'),_0x546533,_0xa844('0xe'),JSON['stringify'](_0x2d5b33));if(_0x2d5b33[_0xa844('0x11')]){if(_0x2d5b33[_0xa844('0x11')][_0xa844('0x12')]===0x1f4){logger[_0xa844('0x11')](_0xa844('0x13'),_0x546533,_0x2d5b33[_0xa844('0x11')]['message']);return _0xe846b8(_0x2d5b33['error']['message']);}logger['error'](_0xa844('0x13'),_0x546533,_0x2d5b33[_0xa844('0x11')][_0xa844('0x14')]);return _0x22eb0c(_0x2d5b33[_0xa844('0x11')][_0xa844('0x14')]);}else{logger[_0xa844('0xd')](_0xa844('0x13'),_0x546533,_0xa844('0xe'));_0x22eb0c(_0x2d5b33[_0xa844('0x15')][_0xa844('0x14')]);}})[_0xa844('0x16')](function(_0x23c178){logger[_0xa844('0x11')]('Sound,\x20%s,\x20%s',_0x546533,_0x23c178);_0xe846b8(_0x23c178);});});}exports['ShowSound']=function(_0x4cba45){var _0x64c908=this;return new Promise(function(_0x3c31a5,_0x3b054f){return db[_0xa844('0x17')][_0xa844('0x18')]({'raw':_0x4cba45['options']?_0x4cba45[_0xa844('0x19')][_0xa844('0x1a')]===undefined?!![]:![]:!![],'where':_0x4cba45[_0xa844('0x19')]?_0x4cba45['options'][_0xa844('0x1b')]||null:null,'attributes':_0x4cba45[_0xa844('0x19')]?_0x4cba45[_0xa844('0x19')][_0xa844('0x1c')]||null:null,'include':_0x4cba45[_0xa844('0x19')]?_0x4cba45[_0xa844('0x19')]['include']?_['map'](_0x4cba45[_0xa844('0x19')]['include'],function(_0x595a0a){return{'model':db[_0x595a0a[_0xa844('0x1d')]],'as':_0x595a0a['as'],'attributes':_0x595a0a[_0xa844('0x1c')],'include':_0x595a0a['include']?_['map'](_0x595a0a[_0xa844('0x1e')],function(_0x94ee28){return{'model':db[_0x94ee28[_0xa844('0x1d')]],'as':_0x94ee28['as'],'attributes':_0x94ee28[_0xa844('0x1c')],'include':_0x94ee28[_0xa844('0x1e')]?_[_0xa844('0x1f')](_0x94ee28['include'],function(_0x10d0ed){return{'model':db[_0x10d0ed['model']],'as':_0x10d0ed['as'],'attributes':_0x10d0ed['attributes']};}):[]};}):[]};}):[]:[]})[_0xa844('0xc')](function(_0x163eb9){logger[_0xa844('0xd')](_0xa844('0x20'),_0x4cba45);logger[_0xa844('0xf')](_0xa844('0x20'),_0x4cba45,JSON['stringify'](_0x163eb9));_0x3c31a5(_0x163eb9);})['catch'](function(_0x965b21){logger[_0xa844('0x11')](_0xa844('0x20'),_0x965b21[_0xa844('0x14')],_0x4cba45);_0x3b054f(_0x64c908[_0xa844('0x11')](0x1f4,_0x965b21[_0xa844('0x14')]));});});};
\ No newline at end of file
+var _0xe1bc=['Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','Sound','options','raw','where','include','map','attributes','model','ShowSound','lodash','util','moment','randomstring','../../config/utils','rpc','jayson/promise','client','request','then'];(function(_0xe68119,_0xf67a62){var _0x39c26a=function(_0x5148b1){while(--_0x5148b1){_0xe68119['push'](_0xe68119['shift']());}};_0x39c26a(++_0xf67a62);}(_0xe1bc,0x87));var _0xce1b=function(_0x1a0b1c,_0x158fb2){_0x1a0b1c=_0x1a0b1c-0x0;var _0x3cc4c4=_0xe1bc[_0x1a0b1c];return _0x3cc4c4;};'use strict';var _=require(_0xce1b('0x0'));var util=require(_0xce1b('0x1'));var moment=require(_0xce1b('0x2'));var BPromise=require('bluebird');var rs=require(_0xce1b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xce1b('0x4'));var logger=require('../../config/logger')(_0xce1b('0x5'));var config=require('../../config/environment');var jayson=require(_0xce1b('0x6'));var client=jayson[_0xce1b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x15b94b,_0x5ee16,_0x2886b5){return new BPromise(function(_0x1f42f6,_0x2611dc){return client[_0xce1b('0x8')](_0x15b94b,_0x2886b5)[_0xce1b('0x9')](function(_0x27bfe0){logger['info'](_0xce1b('0xa'),_0x5ee16,_0xce1b('0xb'));logger[_0xce1b('0xc')](_0xce1b('0xd'),_0x5ee16,_0xce1b('0xb'),JSON['stringify'](_0x27bfe0));if(_0x27bfe0['error']){if(_0x27bfe0[_0xce1b('0xe')][_0xce1b('0xf')]===0x1f4){logger['error'](_0xce1b('0xa'),_0x5ee16,_0x27bfe0['error'][_0xce1b('0x10')]);return _0x2611dc(_0x27bfe0[_0xce1b('0xe')][_0xce1b('0x10')]);}logger[_0xce1b('0xe')](_0xce1b('0xa'),_0x5ee16,_0x27bfe0['error'][_0xce1b('0x10')]);return _0x1f42f6(_0x27bfe0[_0xce1b('0xe')]['message']);}else{logger[_0xce1b('0x11')](_0xce1b('0xa'),_0x5ee16,_0xce1b('0xb'));_0x1f42f6(_0x27bfe0[_0xce1b('0x12')][_0xce1b('0x10')]);}})[_0xce1b('0x13')](function(_0x10350e){logger[_0xce1b('0xe')]('Sound,\x20%s,\x20%s',_0x5ee16,_0x10350e);_0x2611dc(_0x10350e);});});}exports['ShowSound']=function(_0x10e2f1){var _0x4716aa=this;return new Promise(function(_0x69e7ba,_0x466792){return db[_0xce1b('0x14')]['find']({'raw':_0x10e2f1[_0xce1b('0x15')]?_0x10e2f1[_0xce1b('0x15')][_0xce1b('0x16')]===undefined?!![]:![]:!![],'where':_0x10e2f1['options']?_0x10e2f1[_0xce1b('0x15')][_0xce1b('0x17')]||null:null,'attributes':_0x10e2f1[_0xce1b('0x15')]?_0x10e2f1[_0xce1b('0x15')]['attributes']||null:null,'include':_0x10e2f1[_0xce1b('0x15')]?_0x10e2f1['options'][_0xce1b('0x18')]?_[_0xce1b('0x19')](_0x10e2f1[_0xce1b('0x15')][_0xce1b('0x18')],function(_0x3cf07a){return{'model':db[_0x3cf07a['model']],'as':_0x3cf07a['as'],'attributes':_0x3cf07a[_0xce1b('0x1a')],'include':_0x3cf07a['include']?_[_0xce1b('0x19')](_0x3cf07a[_0xce1b('0x18')],function(_0x25ac29){return{'model':db[_0x25ac29[_0xce1b('0x1b')]],'as':_0x25ac29['as'],'attributes':_0x25ac29['attributes'],'include':_0x25ac29[_0xce1b('0x18')]?_['map'](_0x25ac29[_0xce1b('0x18')],function(_0x4a9269){return{'model':db[_0x4a9269[_0xce1b('0x1b')]],'as':_0x4a9269['as'],'attributes':_0x4a9269['attributes']};}):[]};}):[]};}):[]:[]})[_0xce1b('0x9')](function(_0x29c358){logger['info'](_0xce1b('0x1c'),_0x10e2f1);logger[_0xce1b('0xc')](_0xce1b('0x1c'),_0x10e2f1,JSON['stringify'](_0x29c358));_0x69e7ba(_0x29c358);})[_0xce1b('0x13')](function(_0x476768){logger['error']('ShowSound',_0x476768[_0xce1b('0x10')],_0x10e2f1);_0x466792(_0x4716aa[_0xce1b('0xe')](0x1f4,_0x476768[_0xce1b('0x10')]));});});};
\ No newline at end of file
index 40985a2..2a51fb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0xd1d8f1,_0x422f15){var _0x3f758e=function(_0x5ef782){while(--_0x5ef782){_0xd1d8f1['push'](_0xd1d8f1['shift']());}};_0x3f758e(++_0x422f15);}(_0xb7e7,0x121));var _0x7b7e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xb7e7[_0x34bf97];return _0x292719;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0xda3f=['../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','util','path','fs-extra','../../components/interaction/service'];(function(_0x4430f1,_0x1e52cb){var _0x4d3a65=function(_0x5065e5){while(--_0x5065e5){_0x4430f1['push'](_0x4430f1['shift']());}};_0x4d3a65(++_0x1e52cb);}(_0xda3f,0xec));var _0xfda3=function(_0x271d90,_0x48c621){_0x271d90=_0x271d90-0x0;var _0xdcc0df=_0xda3f[_0x271d90];return _0xdcc0df;};'use strict';var multer=require('multer');var util=require(_0xfda3('0x0'));var path=require(_0xfda3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xfda3('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var controller=require('./squareMessage.controller');router[_0xfda3('0x5')]('/',auth[_0xfda3('0x6')](),controller['index']);router['get'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x8')]);router[_0xfda3('0x9')]('/',auth[_0xfda3('0x6')](),controller[_0xfda3('0xa')]);router[_0xfda3('0xb')](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xc')]);router[_0xfda3('0xd')](_0xfda3('0x7'),auth['isAuthenticated'](),controller[_0xfda3('0xe')]);module[_0xfda3('0xf')]=router;
\ No newline at end of file
index a3f2f22..d9f6e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc423=['TEXT','medium','out','STRING'];(function(_0x3a1f57,_0x2d5287){var _0x121d30=function(_0x39540a){while(--_0x39540a){_0x3a1f57['push'](_0x3a1f57['shift']());}};_0x121d30(++_0x2d5287);}(_0xc423,0x1bf));var _0x3c42=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xc423[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x3c42('0x0')]},'body':{'type':Sequelize[_0x3c42('0x1')](_0x3c42('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x3c42('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0x3c42('0x0')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x33d8=['STRING','TEXT','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x33d8,0xaa));var _0x833d=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x33d8[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x833d('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x833d('0x1')]},'body':{'type':Sequelize[_0x833d('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x833d('0x1')]},'providerResponse':{'type':Sequelize[_0x833d('0x2')]}};
\ No newline at end of file
index ebb4bd4..e359107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0bf=['hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','sendStatus','undefined','limit','count','offset','set','Content-Range','json','apply','update','then','destroy','end','error','name','status','send','index','map','SquareMessage','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length'];(function(_0x157495,_0xdfe964){var _0x2b64df=function(_0x3d6647){while(--_0x3d6647){_0x157495['push'](_0x157495['shift']());}};_0x2b64df(++_0xdfe964);}(_0xe0bf,0x168));var _0xfe0b=function(_0x51dd10,_0x544c73){_0x51dd10=_0x51dd10-0x0;var _0x224296=_0xe0bf[_0x51dd10];return _0x224296;};'use strict';var emlformat=require(_0xfe0b('0x0'));var rimraf=require(_0xfe0b('0x1'));var zipdir=require(_0xfe0b('0x2'));var jsonpatch=require(_0xfe0b('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfe0b('0x4'));var util=require(_0xfe0b('0x5'));var path=require(_0xfe0b('0x6'));var sox=require('sox');var csv=require(_0xfe0b('0x7'));var ejs=require(_0xfe0b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfe0b('0x9'));var squel=require('squel');var crypto=require(_0xfe0b('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xfe0b('0xb'));var toCsv=require(_0xfe0b('0x7'));var querystring=require(_0xfe0b('0xc'));var Papa=require(_0xfe0b('0xd'));var Redis=require(_0xfe0b('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xfe0b('0xf'));var as=require(_0xfe0b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xfe0b('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x182a53,_0x2df0fd){_0x2df0fd=_0x2df0fd||0xcc;return function(_0x44f93b){if(_0x44f93b){return _0x182a53[_0xfe0b('0x12')](_0x2df0fd);}return _0x182a53['status'](_0x2df0fd)['end']();};}function respondWithResult(_0x1db234,_0x487cb3){_0x487cb3=_0x487cb3||0xc8;return function(_0x4dda83){if(_0x4dda83){return _0x1db234['status'](_0x487cb3)['json'](_0x4dda83);}};}function respondWithFilteredResult(_0x3f836b,_0x2da179){return function(_0x2ecf5f){if(_0x2ecf5f){var _0x5e949b=typeof _0x2da179['offset']===_0xfe0b('0x13')&&typeof _0x2da179[_0xfe0b('0x14')]===_0xfe0b('0x13');var _0x1758dc=_0x2ecf5f[_0xfe0b('0x15')];var _0x498a34=_0x5e949b?0x0:_0x2da179['offset'];var _0x558c7f=_0x5e949b?_0x2ecf5f['count']:_0x2da179[_0xfe0b('0x16')]+_0x2da179[_0xfe0b('0x14')];var _0x277ba1;if(_0x558c7f>=_0x1758dc){_0x558c7f=_0x1758dc;_0x277ba1=0xc8;}else{_0x277ba1=0xce;}_0x3f836b['status'](_0x277ba1);return _0x3f836b[_0xfe0b('0x17')](_0xfe0b('0x18'),_0x498a34+'-'+_0x558c7f+'/'+_0x1758dc)[_0xfe0b('0x19')](_0x2ecf5f);}return null;};}function patchUpdates(_0x3efa7f){return function(_0x4dc835){try{jsonpatch[_0xfe0b('0x1a')](_0x4dc835,_0x3efa7f,!![]);}catch(_0x572e51){return BPromise['reject'](_0x572e51);}return _0x4dc835['save']();};}function saveUpdates(_0x7eef60,_0x5f4359){return function(_0x175672){if(_0x175672){return _0x175672[_0xfe0b('0x1b')](_0x7eef60)[_0xfe0b('0x1c')](function(_0x37d31b){return _0x37d31b;});}return null;};}function removeEntity(_0x366ade,_0x34554c){return function(_0x143031){if(_0x143031){return _0x143031[_0xfe0b('0x1d')]()[_0xfe0b('0x1c')](function(){_0x366ade['status'](0xcc)[_0xfe0b('0x1e')]();});}};}function handleEntityNotFound(_0x52b77b,_0xa02f96){return function(_0x1dcdf4){if(!_0x1dcdf4){_0x52b77b['sendStatus'](0x194);}return _0x1dcdf4;};}function handleError(_0x28f038,_0x453c93){_0x453c93=_0x453c93||0x1f4;return function(_0x183fbf){logger[_0xfe0b('0x1f')](_0x183fbf['stack']);if(_0x183fbf[_0xfe0b('0x20')]){delete _0x183fbf['name'];}_0x28f038[_0xfe0b('0x21')](_0x453c93)[_0xfe0b('0x22')](_0x183fbf);};}exports[_0xfe0b('0x23')]=function(_0x1dfc47,_0x4f3f56){var _0x4a5533={},_0x570a4e={},_0x516163={'count':0x0,'rows':[]};var _0x10e9a0=_[_0xfe0b('0x24')](db[_0xfe0b('0x25')][_0xfe0b('0x26')],function(_0x59ba11){return{'name':_0x59ba11['fieldName'],'type':_0x59ba11[_0xfe0b('0x27')]['key']};});_0x570a4e[_0xfe0b('0x28')]=_[_0xfe0b('0x24')](_0x10e9a0,_0xfe0b('0x20'));_0x570a4e[_0xfe0b('0x29')]=_[_0xfe0b('0x2a')](_0x1dfc47['query']);_0x570a4e[_0xfe0b('0x2b')]=_['intersection'](_0x570a4e[_0xfe0b('0x28')],_0x570a4e[_0xfe0b('0x29')]);_0x4a5533[_0xfe0b('0x2c')]=_[_0xfe0b('0x2d')](_0x570a4e[_0xfe0b('0x28')],qs[_0xfe0b('0x2e')](_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x2e')]));_0x4a5533[_0xfe0b('0x2c')]=_0x4a5533[_0xfe0b('0x2c')][_0xfe0b('0x2f')]?_0x4a5533[_0xfe0b('0x2c')]:_0x570a4e[_0xfe0b('0x28')];if(!_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x30')](_0xfe0b('0x31'))){_0x4a5533[_0xfe0b('0x14')]=qs[_0xfe0b('0x14')](_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x14')]);_0x4a5533['offset']=qs[_0xfe0b('0x16')](_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x16')]);}_0x4a5533[_0xfe0b('0x32')]=qs[_0xfe0b('0x33')](_0x1dfc47['query'][_0xfe0b('0x33')]);_0x4a5533['where']=qs[_0xfe0b('0x2b')](_[_0xfe0b('0x34')](_0x1dfc47[_0xfe0b('0x29')],_0x570a4e[_0xfe0b('0x2b')]),_0x10e9a0);if(_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x35')]){_0x4a5533[_0xfe0b('0x36')]=_['merge'](_0x4a5533['where'],{'$or':_[_0xfe0b('0x24')](_0x10e9a0,function(_0x56bd26){if(_0x56bd26[_0xfe0b('0x27')]!==_0xfe0b('0x37')){var _0x4c1375={};_0x4c1375[_0x56bd26[_0xfe0b('0x20')]]={'$like':'%'+_0x1dfc47[_0xfe0b('0x29')][_0xfe0b('0x35')]+'%'};return _0x4c1375;}})});}_0x4a5533=_[_0xfe0b('0x38')]({},_0x4a5533,_0x1dfc47['options']);var _0x359cc0={'where':_0x4a5533[_0xfe0b('0x36')]};return db['SquareMessage'][_0xfe0b('0x15')](_0x359cc0)[_0xfe0b('0x1c')](function(_0x44cbbe){_0x516163[_0xfe0b('0x15')]=_0x44cbbe;if(_0x1dfc47[_0xfe0b('0x29')]['includeAll']){_0x4a5533[_0xfe0b('0x39')]=[{'all':!![]}];}return db[_0xfe0b('0x25')][_0xfe0b('0x3a')](_0x4a5533);})[_0xfe0b('0x1c')](function(_0x4cf1ec){_0x516163[_0xfe0b('0x3b')]=_0x4cf1ec;return _0x516163;})[_0xfe0b('0x1c')](respondWithFilteredResult(_0x4f3f56,_0x4a5533))[_0xfe0b('0x3c')](handleError(_0x4f3f56,null));};exports[_0xfe0b('0x3d')]=function(_0x29c610,_0x3962a3){var _0x119181={'raw':!![],'where':{'id':_0x29c610[_0xfe0b('0x3e')]['id']}},_0x3b9195={};_0x3b9195['model']=_[_0xfe0b('0x2a')](db['SquareMessage'][_0xfe0b('0x26')]);_0x3b9195[_0xfe0b('0x29')]=_[_0xfe0b('0x2a')](_0x29c610[_0xfe0b('0x29')]);_0x3b9195['filters']=_[_0xfe0b('0x2d')](_0x3b9195[_0xfe0b('0x28')],_0x3b9195['query']);_0x119181[_0xfe0b('0x2c')]=_[_0xfe0b('0x2d')](_0x3b9195[_0xfe0b('0x28')],qs[_0xfe0b('0x2e')](_0x29c610[_0xfe0b('0x29')][_0xfe0b('0x2e')]));_0x119181[_0xfe0b('0x2c')]=_0x119181[_0xfe0b('0x2c')][_0xfe0b('0x2f')]?_0x119181[_0xfe0b('0x2c')]:_0x3b9195['model'];if(_0x29c610[_0xfe0b('0x29')][_0xfe0b('0x3f')]){_0x119181['include']=[{'all':!![]}];}_0x119181=_['merge']({},_0x119181,_0x29c610[_0xfe0b('0x40')]);return db[_0xfe0b('0x25')][_0xfe0b('0x41')](_0x119181)[_0xfe0b('0x1c')](handleEntityNotFound(_0x3962a3,null))['then'](respondWithResult(_0x3962a3,null))['catch'](handleError(_0x3962a3,null));};exports[_0xfe0b('0x42')]=function(_0x30750a,_0x13b572){return db['SquareMessage']['create'](_0x30750a['body'],{})[_0xfe0b('0x1c')](respondWithResult(_0x13b572,0xc9))[_0xfe0b('0x3c')](handleError(_0x13b572,null));};exports[_0xfe0b('0x1b')]=function(_0x4e371f,_0x39c537){if(_0x4e371f[_0xfe0b('0x43')]['id']){delete _0x4e371f[_0xfe0b('0x43')]['id'];}return db[_0xfe0b('0x25')][_0xfe0b('0x41')]({'where':{'id':_0x4e371f[_0xfe0b('0x3e')]['id']}})[_0xfe0b('0x1c')](handleEntityNotFound(_0x39c537,null))[_0xfe0b('0x1c')](saveUpdates(_0x4e371f['body'],null))[_0xfe0b('0x1c')](respondWithResult(_0x39c537,null))[_0xfe0b('0x3c')](handleError(_0x39c537,null));};exports[_0xfe0b('0x1d')]=function(_0x1c8615,_0x3495c3){return db['SquareMessage'][_0xfe0b('0x41')]({'where':{'id':_0x1c8615[_0xfe0b('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3495c3,null))[_0xfe0b('0x1c')](removeEntity(_0x3495c3,null))[_0xfe0b('0x3c')](handleError(_0x3495c3,null));};
\ No newline at end of file
+var _0x0124=['length','hasOwnProperty','order','sort','where','VIRTUAL','merge','options','includeAll','catch','show','params','keys','include','find','create','body','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','end','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x0124,0xa3));var _0x4012=function(_0x2589a4,_0x5bbc0e){_0x2589a4=_0x2589a4-0x0;var _0x4951f9=_0x0124[_0x2589a4];return _0x4951f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4012('0x0'));var zipdir=require(_0x4012('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4012('0x2'));var moment=require(_0x4012('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4012('0x4'));var util=require(_0x4012('0x5'));var path=require(_0x4012('0x6'));var sox=require(_0x4012('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4012('0x8'));var squel=require(_0x4012('0x9'));var crypto=require(_0x4012('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4012('0xb'));var toCsv=require(_0x4012('0xc'));var querystring=require(_0x4012('0xd'));var Papa=require(_0x4012('0xe'));var Redis=require(_0x4012('0xf'));var authService=require(_0x4012('0x10'));var qs=require(_0x4012('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4012('0x12'));var logger=require(_0x4012('0x13'))(_0x4012('0x14'));var utils=require(_0x4012('0x15'));var config=require(_0x4012('0x16'));var licenseUtil=require(_0x4012('0x17'));var db=require(_0x4012('0x18'))['db'];function respondWithStatusCode(_0x2a3cd1,_0x28bfc8){_0x28bfc8=_0x28bfc8||0xcc;return function(_0x341428){if(_0x341428){return _0x2a3cd1[_0x4012('0x19')](_0x28bfc8);}return _0x2a3cd1['status'](_0x28bfc8)['end']();};}function respondWithResult(_0x1bd70a,_0x566d11){_0x566d11=_0x566d11||0xc8;return function(_0x1c6538){if(_0x1c6538){return _0x1bd70a[_0x4012('0x1a')](_0x566d11)[_0x4012('0x1b')](_0x1c6538);}};}function respondWithFilteredResult(_0x33915c,_0x2d482e){return function(_0x5b0c4a){if(_0x5b0c4a){var _0x22aa9b=typeof _0x2d482e[_0x4012('0x1c')]===_0x4012('0x1d')&&typeof _0x2d482e[_0x4012('0x1e')]===_0x4012('0x1d');var _0x964372=_0x5b0c4a['count'];var _0x5618c0=_0x22aa9b?0x0:_0x2d482e[_0x4012('0x1c')];var _0x2c8cc8=_0x22aa9b?_0x5b0c4a[_0x4012('0x1f')]:_0x2d482e[_0x4012('0x1c')]+_0x2d482e['limit'];var _0x3b85cd;if(_0x2c8cc8>=_0x964372){_0x2c8cc8=_0x964372;_0x3b85cd=0xc8;}else{_0x3b85cd=0xce;}_0x33915c[_0x4012('0x1a')](_0x3b85cd);return _0x33915c[_0x4012('0x20')](_0x4012('0x21'),_0x5618c0+'-'+_0x2c8cc8+'/'+_0x964372)[_0x4012('0x1b')](_0x5b0c4a);}return null;};}function patchUpdates(_0x10cd86){return function(_0x506ffc){try{jsonpatch[_0x4012('0x22')](_0x506ffc,_0x10cd86,!![]);}catch(_0xc8a9e7){return BPromise['reject'](_0xc8a9e7);}return _0x506ffc[_0x4012('0x23')]();};}function saveUpdates(_0x423974,_0x41f723){return function(_0x76c5ec){if(_0x76c5ec){return _0x76c5ec[_0x4012('0x24')](_0x423974)['then'](function(_0x24a011){return _0x24a011;});}return null;};}function removeEntity(_0xf45dad,_0x2c495e){return function(_0x337d13){if(_0x337d13){return _0x337d13[_0x4012('0x25')]()[_0x4012('0x26')](function(){_0xf45dad[_0x4012('0x1a')](0xcc)[_0x4012('0x27')]();});}};}function handleEntityNotFound(_0x3d7380,_0x3e5a27){return function(_0x25aacd){if(!_0x25aacd){_0x3d7380[_0x4012('0x19')](0x194);}return _0x25aacd;};}function handleError(_0xe41077,_0xdd7a7d){_0xdd7a7d=_0xdd7a7d||0x1f4;return function(_0x5985d1){logger[_0x4012('0x28')](_0x5985d1['stack']);if(_0x5985d1[_0x4012('0x29')]){delete _0x5985d1[_0x4012('0x29')];}_0xe41077['status'](_0xdd7a7d)[_0x4012('0x2a')](_0x5985d1);};}exports[_0x4012('0x2b')]=function(_0x594fa9,_0x35e68d){var _0x1d9ee0={},_0x210f50={},_0x4902f6={'count':0x0,'rows':[]};var _0x3e7588=_[_0x4012('0x2c')](db[_0x4012('0x2d')][_0x4012('0x2e')],function(_0x4507bd){return{'name':_0x4507bd[_0x4012('0x2f')],'type':_0x4507bd[_0x4012('0x30')][_0x4012('0x31')]};});_0x210f50[_0x4012('0x32')]=_[_0x4012('0x2c')](_0x3e7588,_0x4012('0x29'));_0x210f50[_0x4012('0x33')]=_['keys'](_0x594fa9['query']);_0x210f50[_0x4012('0x34')]=_[_0x4012('0x35')](_0x210f50['model'],_0x210f50[_0x4012('0x33')]);_0x1d9ee0[_0x4012('0x36')]=_['intersection'](_0x210f50[_0x4012('0x32')],qs[_0x4012('0x37')](_0x594fa9[_0x4012('0x33')][_0x4012('0x37')]));_0x1d9ee0[_0x4012('0x36')]=_0x1d9ee0[_0x4012('0x36')][_0x4012('0x38')]?_0x1d9ee0[_0x4012('0x36')]:_0x210f50[_0x4012('0x32')];if(!_0x594fa9[_0x4012('0x33')][_0x4012('0x39')]('nolimit')){_0x1d9ee0[_0x4012('0x1e')]=qs['limit'](_0x594fa9[_0x4012('0x33')]['limit']);_0x1d9ee0[_0x4012('0x1c')]=qs[_0x4012('0x1c')](_0x594fa9[_0x4012('0x33')][_0x4012('0x1c')]);}_0x1d9ee0[_0x4012('0x3a')]=qs[_0x4012('0x3b')](_0x594fa9[_0x4012('0x33')][_0x4012('0x3b')]);_0x1d9ee0[_0x4012('0x3c')]=qs[_0x4012('0x34')](_['pick'](_0x594fa9[_0x4012('0x33')],_0x210f50['filters']),_0x3e7588);if(_0x594fa9[_0x4012('0x33')]['filter']){_0x1d9ee0['where']=_['merge'](_0x1d9ee0[_0x4012('0x3c')],{'$or':_[_0x4012('0x2c')](_0x3e7588,function(_0x4b3560){if(_0x4b3560[_0x4012('0x30')]!==_0x4012('0x3d')){var _0x3b1c0f={};_0x3b1c0f[_0x4b3560[_0x4012('0x29')]]={'$like':'%'+_0x594fa9[_0x4012('0x33')]['filter']+'%'};return _0x3b1c0f;}})});}_0x1d9ee0=_[_0x4012('0x3e')]({},_0x1d9ee0,_0x594fa9[_0x4012('0x3f')]);var _0x3e42d5={'where':_0x1d9ee0['where']};return db[_0x4012('0x2d')][_0x4012('0x1f')](_0x3e42d5)[_0x4012('0x26')](function(_0x5edcb4){_0x4902f6[_0x4012('0x1f')]=_0x5edcb4;if(_0x594fa9[_0x4012('0x33')][_0x4012('0x40')]){_0x1d9ee0['include']=[{'all':!![]}];}return db[_0x4012('0x2d')]['findAll'](_0x1d9ee0);})[_0x4012('0x26')](function(_0x9c7247){_0x4902f6['rows']=_0x9c7247;return _0x4902f6;})['then'](respondWithFilteredResult(_0x35e68d,_0x1d9ee0))[_0x4012('0x41')](handleError(_0x35e68d,null));};exports[_0x4012('0x42')]=function(_0x2e7331,_0x1e5963){var _0x27fd4b={'raw':!![],'where':{'id':_0x2e7331[_0x4012('0x43')]['id']}},_0x207eef={};_0x207eef[_0x4012('0x32')]=_['keys'](db['SquareMessage']['rawAttributes']);_0x207eef[_0x4012('0x33')]=_[_0x4012('0x44')](_0x2e7331['query']);_0x207eef[_0x4012('0x34')]=_[_0x4012('0x35')](_0x207eef[_0x4012('0x32')],_0x207eef[_0x4012('0x33')]);_0x27fd4b[_0x4012('0x36')]=_[_0x4012('0x35')](_0x207eef[_0x4012('0x32')],qs[_0x4012('0x37')](_0x2e7331[_0x4012('0x33')][_0x4012('0x37')]));_0x27fd4b[_0x4012('0x36')]=_0x27fd4b[_0x4012('0x36')][_0x4012('0x38')]?_0x27fd4b['attributes']:_0x207eef[_0x4012('0x32')];if(_0x2e7331['query'][_0x4012('0x40')]){_0x27fd4b[_0x4012('0x45')]=[{'all':!![]}];}_0x27fd4b=_['merge']({},_0x27fd4b,_0x2e7331['options']);return db[_0x4012('0x2d')][_0x4012('0x46')](_0x27fd4b)[_0x4012('0x26')](handleEntityNotFound(_0x1e5963,null))[_0x4012('0x26')](respondWithResult(_0x1e5963,null))[_0x4012('0x41')](handleError(_0x1e5963,null));};exports[_0x4012('0x47')]=function(_0x9bf642,_0x1851cb){return db[_0x4012('0x2d')][_0x4012('0x47')](_0x9bf642[_0x4012('0x48')],{})[_0x4012('0x26')](respondWithResult(_0x1851cb,0xc9))[_0x4012('0x41')](handleError(_0x1851cb,null));};exports[_0x4012('0x24')]=function(_0x26b3cf,_0x439366){if(_0x26b3cf[_0x4012('0x48')]['id']){delete _0x26b3cf[_0x4012('0x48')]['id'];}return db[_0x4012('0x2d')][_0x4012('0x46')]({'where':{'id':_0x26b3cf[_0x4012('0x43')]['id']}})[_0x4012('0x26')](handleEntityNotFound(_0x439366,null))[_0x4012('0x26')](saveUpdates(_0x26b3cf[_0x4012('0x48')],null))[_0x4012('0x26')](respondWithResult(_0x439366,null))[_0x4012('0x41')](handleError(_0x439366,null));};exports[_0x4012('0x25')]=function(_0x52161f,_0x5b3610){return db[_0x4012('0x2d')][_0x4012('0x46')]({'where':{'id':_0x52161f[_0x4012('0x43')]['id']}})[_0x4012('0x26')](handleEntityNotFound(_0x5b3610,null))[_0x4012('0x26')](removeEntity(_0x5b3610,null))['catch'](handleError(_0x5b3610,null));};
\ No newline at end of file
index b8eaebe..8028a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd21c=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger'];(function(_0x5447aa,_0x3afc00){var _0xb21e53=function(_0x2d05f6){while(--_0x2d05f6){_0x5447aa['push'](_0x5447aa['shift']());}};_0xb21e53(++_0x3afc00);}(_0xd21c,0x1e7));var _0xcd21=function(_0x49372d,_0x21e0bf){_0x49372d=_0x49372d-0x0;var _0x4cccf9=_0xd21c[_0x49372d];return _0x4cccf9;};'use strict';var _=require(_0xcd21('0x0'));var util=require(_0xcd21('0x1'));var logger=require(_0xcd21('0x2'))('api');var moment=require(_0xcd21('0x3'));var BPromise=require(_0xcd21('0x4'));var rp=require(_0xcd21('0x5'));var fs=require('fs');var path=require(_0xcd21('0x6'));var rimraf=require(_0xcd21('0x7'));var config=require(_0xcd21('0x8'));var attributes=require(_0xcd21('0x9'));module[_0xcd21('0xa')]=function(_0x2e533d,_0x3e0d88){return _0x2e533d[_0xcd21('0xb')](_0xcd21('0xc'),attributes,{'tableName':_0xcd21('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf7f8=['lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define','square_messages'];(function(_0x4867c7,_0x1e7333){var _0x688d2f=function(_0x2e6a46){while(--_0x2e6a46){_0x4867c7['push'](_0x4867c7['shift']());}};_0x688d2f(++_0x1e7333);}(_0xf7f8,0xdc));var _0x8f7f=function(_0x4f1984,_0x12faeb){_0x4f1984=_0x4f1984-0x0;var _0x2d57a4=_0xf7f8[_0x4f1984];return _0x2d57a4;};'use strict';var _=require(_0x8f7f('0x0'));var util=require(_0x8f7f('0x1'));var logger=require(_0x8f7f('0x2'))(_0x8f7f('0x3'));var moment=require(_0x8f7f('0x4'));var BPromise=require('bluebird');var rp=require(_0x8f7f('0x5'));var fs=require('fs');var path=require(_0x8f7f('0x6'));var rimraf=require('rimraf');var config=require(_0x8f7f('0x7'));var attributes=require('./squareMessage.attributes');module[_0x8f7f('0x8')]=function(_0x1f81a0,_0x9eafff){return _0x1f81a0[_0x8f7f('0x9')]('SquareMessage',attributes,{'tableName':_0x8f7f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8cb3fc3..9b86b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d0=['SquareMessage','create','body','options','debug','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','result','catch','CreateSquareMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe2d0,0xbb));var _0x0e2d=function(_0x2690d4,_0x52a083){_0x2690d4=_0x2690d4-0x0;var _0x517a4b=_0xe2d0[_0x2690d4];return _0x517a4b;};'use strict';var _=require('lodash');var util=require(_0x0e2d('0x0'));var moment=require('moment');var BPromise=require(_0x0e2d('0x1'));var rs=require(_0x0e2d('0x2'));var fs=require('fs');var Redis=require(_0x0e2d('0x3'));var db=require(_0x0e2d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0e2d('0x5'))(_0x0e2d('0x6'));var config=require('../../config/environment');var jayson=require(_0x0e2d('0x7'));var client=jayson[_0x0e2d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a98b3,_0x2cd4a0,_0xb575eb){return new BPromise(function(_0x1a5c04,_0x4cc5f9){return client[_0x0e2d('0x9')](_0x1a98b3,_0xb575eb)[_0x0e2d('0xa')](function(_0x2aa629){logger[_0x0e2d('0xb')]('SquareMessage,\x20%s,\x20%s',_0x2cd4a0,_0x0e2d('0xc'));logger['debug']('SquareMessage,\x20%s,\x20%s,\x20%s',_0x2cd4a0,_0x0e2d('0xc'),JSON[_0x0e2d('0xd')](_0x2aa629));if(_0x2aa629[_0x0e2d('0xe')]){if(_0x2aa629[_0x0e2d('0xe')][_0x0e2d('0xf')]===0x1f4){logger['error'](_0x0e2d('0x10'),_0x2cd4a0,_0x2aa629['error'][_0x0e2d('0x11')]);return _0x4cc5f9(_0x2aa629[_0x0e2d('0xe')][_0x0e2d('0x11')]);}logger[_0x0e2d('0xe')]('SquareMessage,\x20%s,\x20%s',_0x2cd4a0,_0x2aa629[_0x0e2d('0xe')]['message']);return _0x1a5c04(_0x2aa629[_0x0e2d('0xe')][_0x0e2d('0x11')]);}else{logger[_0x0e2d('0xb')](_0x0e2d('0x10'),_0x2cd4a0,'request\x20sent');_0x1a5c04(_0x2aa629[_0x0e2d('0x12')][_0x0e2d('0x11')]);}})[_0x0e2d('0x13')](function(_0x229cbc){logger[_0x0e2d('0xe')](_0x0e2d('0x10'),_0x2cd4a0,_0x229cbc);_0x4cc5f9(_0x229cbc);});});}exports[_0x0e2d('0x14')]=function(_0x1dd19c){var _0x4588b2=this;return new Promise(function(_0x1704be,_0x12102f){return db[_0x0e2d('0x15')][_0x0e2d('0x16')](_0x1dd19c[_0x0e2d('0x17')],{'raw':_0x1dd19c[_0x0e2d('0x18')]?_0x1dd19c['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x13a36a){logger[_0x0e2d('0xb')](_0x0e2d('0x14'),_0x1dd19c);logger[_0x0e2d('0x19')]('CreateSquareMessage',_0x1dd19c,JSON[_0x0e2d('0xd')](_0x13a36a));_0x1704be(_0x13a36a);})[_0x0e2d('0x13')](function(_0x4edc69){logger[_0x0e2d('0xe')](_0x0e2d('0x14'),_0x4edc69[_0x0e2d('0x11')],_0x1dd19c);_0x12102f(_0x4588b2[_0x0e2d('0xe')](0x1f4,_0x4edc69[_0x0e2d('0x11')]));});});};
\ No newline at end of file
+var _0x285f=['message','result','catch','SquareMessage','create','body','options','raw','then','CreateSquareMessage','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','SquareMessage,\x20%s,\x20%s'];(function(_0x4fb955,_0x481977){var _0x4f9797=function(_0x44f526){while(--_0x44f526){_0x4fb955['push'](_0x4fb955['shift']());}};_0x4f9797(++_0x481977);}(_0x285f,0x14a));var _0xf285=function(_0x4bc14e,_0x4adfb9){_0x4bc14e=_0x4bc14e-0x0;var _0x119586=_0x285f[_0x4bc14e];return _0x119586;};'use strict';var _=require(_0xf285('0x0'));var util=require(_0xf285('0x1'));var moment=require(_0xf285('0x2'));var BPromise=require(_0xf285('0x3'));var rs=require(_0xf285('0x4'));var fs=require('fs');var Redis=require(_0xf285('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf285('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf285('0x7'));var client=jayson[_0xf285('0x8')][_0xf285('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4299e9,_0x3dfc40,_0x195368){return new BPromise(function(_0x4bc614,_0x484f6e){return client[_0xf285('0xa')](_0x4299e9,_0x195368)['then'](function(_0x44cd96){logger[_0xf285('0xb')]('SquareMessage,\x20%s,\x20%s',_0x3dfc40,_0xf285('0xc'));logger[_0xf285('0xd')](_0xf285('0xe'),_0x3dfc40,_0xf285('0xc'),JSON['stringify'](_0x44cd96));if(_0x44cd96[_0xf285('0xf')]){if(_0x44cd96[_0xf285('0xf')][_0xf285('0x10')]===0x1f4){logger[_0xf285('0xf')](_0xf285('0x11'),_0x3dfc40,_0x44cd96[_0xf285('0xf')][_0xf285('0x12')]);return _0x484f6e(_0x44cd96[_0xf285('0xf')][_0xf285('0x12')]);}logger[_0xf285('0xf')](_0xf285('0x11'),_0x3dfc40,_0x44cd96[_0xf285('0xf')][_0xf285('0x12')]);return _0x4bc614(_0x44cd96['error'][_0xf285('0x12')]);}else{logger[_0xf285('0xb')](_0xf285('0x11'),_0x3dfc40,_0xf285('0xc'));_0x4bc614(_0x44cd96[_0xf285('0x13')][_0xf285('0x12')]);}})[_0xf285('0x14')](function(_0x14320c){logger[_0xf285('0xf')](_0xf285('0x11'),_0x3dfc40,_0x14320c);_0x484f6e(_0x14320c);});});}exports['CreateSquareMessage']=function(_0x580a94){var _0x3523ab=this;return new Promise(function(_0x337a9f,_0x1ed2f4){return db[_0xf285('0x15')][_0xf285('0x16')](_0x580a94[_0xf285('0x17')],{'raw':_0x580a94[_0xf285('0x18')]?_0x580a94[_0xf285('0x18')][_0xf285('0x19')]===undefined?!![]:![]:!![]})[_0xf285('0x1a')](function(_0x1e7dc1){logger['info'](_0xf285('0x1b'),_0x580a94);logger[_0xf285('0xd')](_0xf285('0x1b'),_0x580a94,JSON[_0xf285('0x1c')](_0x1e7dc1));_0x337a9f(_0x1e7dc1);})['catch'](function(_0x1bff80){logger[_0xf285('0xf')](_0xf285('0x1b'),_0x1bff80[_0xf285('0x12')],_0x580a94);_0x1ed2f4(_0x3523ab[_0xf285('0xf')](0x1f4,_0x1bff80[_0xf285('0x12')]));});});};
\ No newline at end of file
index 660d560..803db1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b63=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','15s','test','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b63,0xba));var _0x32b6=function(_0x12a44e,_0x381e1a){_0x12a44e=_0x12a44e-0x0;var _0x222ae1=_0x2b63[_0x12a44e];return _0x222ae1;};'use strict';var multer=require('multer');var util=require(_0x32b6('0x0'));var path=require(_0x32b6('0x1'));var timeout=require(_0x32b6('0x2'));var express=require(_0x32b6('0x3'));var router=express[_0x32b6('0x4')]();var fs_extra=require(_0x32b6('0x5'));var auth=require(_0x32b6('0x6'));var interaction=require(_0x32b6('0x7'));var config=require(_0x32b6('0x8'));var controller=require(_0x32b6('0x9'));router[_0x32b6('0xa')]('/',auth[_0x32b6('0xb')](),controller[_0x32b6('0xc')]);router[_0x32b6('0xa')](_0x32b6('0xd'),auth['isAuthenticated'](),controller[_0x32b6('0xe')]);router[_0x32b6('0xa')](_0x32b6('0xf'),auth['isAuthenticated'](),timeout(_0x32b6('0x10')),controller[_0x32b6('0x11')]);router[_0x32b6('0x12')]('/',auth[_0x32b6('0xb')](),controller[_0x32b6('0x13')]);router[_0x32b6('0x14')]('/:id',auth[_0x32b6('0xb')](),controller[_0x32b6('0x15')]);router[_0x32b6('0x16')](_0x32b6('0xd'),auth[_0x32b6('0xb')](),controller['destroy']);module[_0x32b6('0x17')]=router;
\ No newline at end of file
+var _0x2dea=['test','post','delete','destroy','path','connect-timeout','Router','fs-extra','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','/:id/test','15s'];(function(_0x401d67,_0xeb1592){var _0x25076b=function(_0x233577){while(--_0x233577){_0x401d67['push'](_0x401d67['shift']());}};_0x25076b(++_0xeb1592);}(_0x2dea,0x114));var _0xa2de=function(_0x2cb7c7,_0x376fb9){_0x2cb7c7=_0x2cb7c7-0x0;var _0x35f193=_0x2dea[_0x2cb7c7];return _0x35f193;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa2de('0x0'));var timeout=require(_0xa2de('0x1'));var express=require('express');var router=express[_0xa2de('0x2')]();var fs_extra=require(_0xa2de('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa2de('0x4'));var controller=require(_0xa2de('0x5'));router[_0xa2de('0x6')]('/',auth[_0xa2de('0x7')](),controller[_0xa2de('0x8')]);router[_0xa2de('0x6')](_0xa2de('0x9'),auth['isAuthenticated'](),controller['show']);router['get'](_0xa2de('0xa'),auth['isAuthenticated'](),timeout(_0xa2de('0xb')),controller[_0xa2de('0xc')]);router[_0xa2de('0xd')]('/',auth[_0xa2de('0x7')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa2de('0xe')]('/:id',auth[_0xa2de('0x7')](),controller[_0xa2de('0xf')]);module['exports']=router;
\ No newline at end of file
index 225068e..7456923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab17=['STRING','name','exports'];(function(_0x14fc9d,_0x40d839){var _0x2045de=function(_0x28a305){while(--_0x28a305){_0x14fc9d['push'](_0x14fc9d['shift']());}};_0x2045de(++_0x40d839);}(_0xab17,0xb6));var _0x7ab1=function(_0x1b9acc,_0x137afd){_0x1b9acc=_0x1b9acc-0x0;var _0x2bb71e=_0xab17[_0x1b9acc];return _0x2bb71e;};'use strict';var Sequelize=require('sequelize');module[_0x7ab1('0x0')]={'name':{'type':Sequelize[_0x7ab1('0x1')],'unique':_0x7ab1('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x7ab1('0x1')]},'description':{'type':Sequelize[_0x7ab1('0x1')]}};
\ No newline at end of file
+var _0x615e=['STRING','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x615e,0x109));var _0xe615=function(_0x24c2f2,_0x5abe73){_0x24c2f2=_0x24c2f2-0x0;var _0x551844=_0x615e[_0x24c2f2];return _0x551844;};'use strict';var Sequelize=require('sequelize');module[_0xe615('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xe615('0x1')]},'description':{'type':Sequelize[_0xe615('0x1')]}};
\ No newline at end of file
index 255042f..a3fb792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bd2=['name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','SquareOdbc','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','closeSync','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','destroy','error','stack'];(function(_0x23fd7b,_0x394165){var _0x4a4402=function(_0x459761){while(--_0x459761){_0x23fd7b['push'](_0x23fd7b['shift']());}};_0x4a4402(++_0x394165);}(_0x9bd2,0x8b));var _0x29bd=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9bd2[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require(_0x29bd('0x0'));var rimraf=require(_0x29bd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29bd('0x2'));var rp=require(_0x29bd('0x3'));var moment=require(_0x29bd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x29bd('0x5'));var util=require(_0x29bd('0x6'));var path=require('path');var sox=require(_0x29bd('0x7'));var csv=require(_0x29bd('0x8'));var ejs=require(_0x29bd('0x9'));var fs=require('fs');var fs_extra=require(_0x29bd('0xa'));var _=require(_0x29bd('0xb'));var squel=require('squel');var crypto=require(_0x29bd('0xc'));var jsforce=require(_0x29bd('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x29bd('0x8'));var querystring=require(_0x29bd('0xe'));var Papa=require(_0x29bd('0xf'));var Redis=require(_0x29bd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x29bd('0x11'));var as=require(_0x29bd('0x12'));var hardwareService=require(_0x29bd('0x13'));var logger=require(_0x29bd('0x14'))('api');var utils=require(_0x29bd('0x15'));var config=require(_0x29bd('0x16'));var licenseUtil=require(_0x29bd('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x397816,_0x400f3f){_0x400f3f=_0x400f3f||0xcc;return function(_0x2817b4){if(_0x2817b4){return _0x397816[_0x29bd('0x18')](_0x400f3f);}return _0x397816['status'](_0x400f3f)['end']();};}function respondWithResult(_0x2a5a19,_0x176e83){_0x176e83=_0x176e83||0xc8;return function(_0x4949c4){if(_0x4949c4){return _0x2a5a19[_0x29bd('0x19')](_0x176e83)[_0x29bd('0x1a')](_0x4949c4);}};}function respondWithFilteredResult(_0x180062,_0xc83f97){return function(_0xc6f31d){if(_0xc6f31d){var _0x134266=typeof _0xc83f97[_0x29bd('0x1b')]===_0x29bd('0x1c')&&typeof _0xc83f97[_0x29bd('0x1d')]===_0x29bd('0x1c');var _0x4dd818=_0xc6f31d[_0x29bd('0x1e')];var _0x479748=_0x134266?0x0:_0xc83f97[_0x29bd('0x1b')];var _0x4f136a=_0x134266?_0xc6f31d[_0x29bd('0x1e')]:_0xc83f97[_0x29bd('0x1b')]+_0xc83f97[_0x29bd('0x1d')];var _0x3e6cff;if(_0x4f136a>=_0x4dd818){_0x4f136a=_0x4dd818;_0x3e6cff=0xc8;}else{_0x3e6cff=0xce;}_0x180062['status'](_0x3e6cff);return _0x180062['set'](_0x29bd('0x1f'),_0x479748+'-'+_0x4f136a+'/'+_0x4dd818)['json'](_0xc6f31d);}return null;};}function patchUpdates(_0xde7a96){return function(_0x37ae6e){try{jsonpatch[_0x29bd('0x20')](_0x37ae6e,_0xde7a96,!![]);}catch(_0x3c7db3){return BPromise[_0x29bd('0x21')](_0x3c7db3);}return _0x37ae6e[_0x29bd('0x22')]();};}function saveUpdates(_0x115617,_0x2c46a8){return function(_0x20b6c4){if(_0x20b6c4){return _0x20b6c4[_0x29bd('0x23')](_0x115617)[_0x29bd('0x24')](function(_0xa4f818){return _0xa4f818;});}return null;};}function removeEntity(_0x4759bd,_0x15fbbf){return function(_0x38b501){if(_0x38b501){return _0x38b501['destroy']()[_0x29bd('0x24')](function(){var _0x1501be=_0x38b501[_0x29bd('0x25')]({'plain':!![]});var _0x295a4d='ODBC';return db['UserProfileResource'][_0x29bd('0x26')]({'where':{'type':_0x295a4d,'resourceId':_0x1501be['id']}})[_0x29bd('0x24')](function(){return _0x38b501;});})['then'](function(){_0x4759bd[_0x29bd('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc7c1ee,_0x2cb691){return function(_0x5df2cf){if(!_0x5df2cf){_0xc7c1ee['sendStatus'](0x194);}return _0x5df2cf;};}function handleError(_0x55c52e,_0x2d7117){_0x2d7117=_0x2d7117||0x1f4;return function(_0x3c8bd4){logger[_0x29bd('0x27')](_0x3c8bd4[_0x29bd('0x28')]);if(_0x3c8bd4['name']){delete _0x3c8bd4[_0x29bd('0x29')];}_0x55c52e[_0x29bd('0x19')](_0x2d7117)[_0x29bd('0x2a')](_0x3c8bd4);};}exports[_0x29bd('0x2b')]=function(_0x24df19,_0x5e0c89){var _0x38fe54={},_0x30d49d={},_0x3f95ae={'count':0x0,'rows':[]};var _0x448100=_[_0x29bd('0x2c')](db['SquareOdbc'][_0x29bd('0x2d')],function(_0x561b18){return{'name':_0x561b18[_0x29bd('0x2e')],'type':_0x561b18[_0x29bd('0x2f')][_0x29bd('0x30')]};});_0x30d49d[_0x29bd('0x31')]=_[_0x29bd('0x2c')](_0x448100,_0x29bd('0x29'));_0x30d49d['query']=_[_0x29bd('0x32')](_0x24df19[_0x29bd('0x33')]);_0x30d49d[_0x29bd('0x34')]=_[_0x29bd('0x35')](_0x30d49d[_0x29bd('0x31')],_0x30d49d[_0x29bd('0x33')]);_0x38fe54['attributes']=_[_0x29bd('0x35')](_0x30d49d[_0x29bd('0x31')],qs[_0x29bd('0x36')](_0x24df19[_0x29bd('0x33')][_0x29bd('0x36')]));_0x38fe54[_0x29bd('0x37')]=_0x38fe54['attributes'][_0x29bd('0x38')]?_0x38fe54[_0x29bd('0x37')]:_0x30d49d[_0x29bd('0x31')];if(!_0x24df19[_0x29bd('0x33')][_0x29bd('0x39')]('nolimit')){_0x38fe54[_0x29bd('0x1d')]=qs[_0x29bd('0x1d')](_0x24df19[_0x29bd('0x33')][_0x29bd('0x1d')]);_0x38fe54[_0x29bd('0x1b')]=qs[_0x29bd('0x1b')](_0x24df19[_0x29bd('0x33')][_0x29bd('0x1b')]);}_0x38fe54[_0x29bd('0x3a')]=qs['sort'](_0x24df19[_0x29bd('0x33')][_0x29bd('0x3b')]);_0x38fe54['where']=qs['filters'](_[_0x29bd('0x3c')](_0x24df19['query'],_0x30d49d[_0x29bd('0x34')]),_0x448100);if(_0x24df19[_0x29bd('0x33')][_0x29bd('0x3d')]){_0x38fe54[_0x29bd('0x3e')]=_['merge'](_0x38fe54[_0x29bd('0x3e')],{'$or':_[_0x29bd('0x2c')](_0x448100,function(_0x339d40){if(_0x339d40['type']!==_0x29bd('0x3f')){var _0x18d720={};_0x18d720[_0x339d40[_0x29bd('0x29')]]={'$like':'%'+_0x24df19[_0x29bd('0x33')][_0x29bd('0x3d')]+'%'};return _0x18d720;}})});}_0x38fe54=_[_0x29bd('0x40')]({},_0x38fe54,_0x24df19[_0x29bd('0x41')]);var _0x240bd9={'where':_0x38fe54[_0x29bd('0x3e')]};return db[_0x29bd('0x42')][_0x29bd('0x1e')](_0x240bd9)[_0x29bd('0x24')](function(_0x52eb57){_0x3f95ae['count']=_0x52eb57;if(_0x24df19[_0x29bd('0x33')][_0x29bd('0x43')]){_0x38fe54[_0x29bd('0x44')]=[{'all':!![]}];}return db[_0x29bd('0x42')][_0x29bd('0x45')](_0x38fe54);})[_0x29bd('0x24')](function(_0x5600b9){_0x3f95ae[_0x29bd('0x46')]=_0x5600b9;return _0x3f95ae;})['then'](respondWithFilteredResult(_0x5e0c89,_0x38fe54))[_0x29bd('0x47')](handleError(_0x5e0c89,null));};exports[_0x29bd('0x48')]=function(_0x56a472,_0xe18009){var _0x5859a9={'raw':!![],'where':{'id':_0x56a472[_0x29bd('0x49')]['id']}},_0x2a5230={};_0x2a5230[_0x29bd('0x31')]=_[_0x29bd('0x32')](db['SquareOdbc'][_0x29bd('0x2d')]);_0x2a5230[_0x29bd('0x33')]=_['keys'](_0x56a472['query']);_0x2a5230['filters']=_[_0x29bd('0x35')](_0x2a5230[_0x29bd('0x31')],_0x2a5230[_0x29bd('0x33')]);_0x5859a9['attributes']=_[_0x29bd('0x35')](_0x2a5230[_0x29bd('0x31')],qs[_0x29bd('0x36')](_0x56a472['query']['fields']));_0x5859a9[_0x29bd('0x37')]=_0x5859a9[_0x29bd('0x37')][_0x29bd('0x38')]?_0x5859a9[_0x29bd('0x37')]:_0x2a5230['model'];if(_0x56a472[_0x29bd('0x33')]['includeAll']){_0x5859a9['include']=[{'all':!![]}];}_0x5859a9=_[_0x29bd('0x40')]({},_0x5859a9,_0x56a472[_0x29bd('0x41')]);return db[_0x29bd('0x42')][_0x29bd('0x4a')](_0x5859a9)[_0x29bd('0x24')](handleEntityNotFound(_0xe18009,null))[_0x29bd('0x24')](respondWithResult(_0xe18009,null))[_0x29bd('0x47')](handleError(_0xe18009,null));};exports[_0x29bd('0x4b')]=function(_0x3c6a7d,_0x98bef5){return db[_0x29bd('0x42')][_0x29bd('0x4b')](_0x3c6a7d[_0x29bd('0x4c')],{})[_0x29bd('0x24')](function(_0x4ad6dc){var _0x3d819b=_0x3c6a7d[_0x29bd('0x4d')][_0x29bd('0x25')]({'plain':!![]});if(!_0x3d819b)throw new Error(_0x29bd('0x4e'));if(_0x3d819b[_0x29bd('0x4f')]===_0x29bd('0x4d')){var _0x5936a7=_0x4ad6dc[_0x29bd('0x25')]({'plain':!![]});var _0x3201de=_0x29bd('0x50');return db[_0x29bd('0x51')]['find']({'where':{'name':_0x3201de,'userProfileId':_0x3d819b[_0x29bd('0x52')]},'raw':!![]})[_0x29bd('0x24')](function(_0x259a18){if(_0x259a18&&_0x259a18[_0x29bd('0x53')]===0x0){return db[_0x29bd('0x54')][_0x29bd('0x4b')]({'name':_0x5936a7[_0x29bd('0x29')],'resourceId':_0x5936a7['id'],'type':_0x259a18[_0x29bd('0x29')],'sectionId':_0x259a18['id']},{})[_0x29bd('0x24')](function(){return _0x4ad6dc;});}else{return _0x4ad6dc;}})[_0x29bd('0x47')](function(_0x5d6d2e){logger[_0x29bd('0x27')](_0x29bd('0x55'),_0x5d6d2e);throw _0x5d6d2e;});}return _0x4ad6dc;})[_0x29bd('0x24')](respondWithResult(_0x98bef5,0xc9))[_0x29bd('0x47')](handleError(_0x98bef5,null));};exports[_0x29bd('0x23')]=function(_0x39a2fa,_0x59ca73){if(_0x39a2fa['body']['id']){delete _0x39a2fa[_0x29bd('0x4c')]['id'];}return db[_0x29bd('0x42')][_0x29bd('0x4a')]({'where':{'id':_0x39a2fa[_0x29bd('0x49')]['id']}})[_0x29bd('0x24')](handleEntityNotFound(_0x59ca73,null))[_0x29bd('0x24')](saveUpdates(_0x39a2fa[_0x29bd('0x4c')],null))[_0x29bd('0x24')](respondWithResult(_0x59ca73,null))['catch'](handleError(_0x59ca73,null));};exports[_0x29bd('0x26')]=function(_0x152b21,_0x3cbce2){return db['SquareOdbc'][_0x29bd('0x4a')]({'where':{'id':_0x152b21[_0x29bd('0x49')]['id']}})[_0x29bd('0x24')](handleEntityNotFound(_0x3cbce2,null))[_0x29bd('0x24')](removeEntity(_0x3cbce2,null))[_0x29bd('0x47')](handleError(_0x3cbce2,null));};exports[_0x29bd('0x56')]=function(_0x3f1d86,_0x22b901,_0xc7002e){var _0x5d4303;return db[_0x29bd('0x42')][_0x29bd('0x4a')]({'where':{'id':_0x3f1d86[_0x29bd('0x49')]['id']},'attributes':['id',_0x29bd('0x57')]})[_0x29bd('0x24')](handleEntityNotFound(_0x22b901,null))[_0x29bd('0x24')](function(_0x2b6be8){if(_0x2b6be8){var _0x34eb12=require(_0x29bd('0x58'))();_0x34eb12['openSync'](_0x2b6be8['dsn']);_0x34eb12[_0x29bd('0x59')]();return _0x2b6be8;}})[_0x29bd('0x24')](respondWithResult(_0x22b901,null))[_0x29bd('0x47')](handleError(_0x22b901,null));};
\ No newline at end of file
+var _0x8886=['rows','show','params','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','odbc','dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','ODBC','UserProfileResource','error','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count'];(function(_0x197f92,_0x2c0f60){var _0x13bb07=function(_0x45e08f){while(--_0x45e08f){_0x197f92['push'](_0x197f92['shift']());}};_0x13bb07(++_0x2c0f60);}(_0x8886,0x1cb));var _0x6888=function(_0x3e7265,_0x2d953d){_0x3e7265=_0x3e7265-0x0;var _0x588ee9=_0x8886[_0x3e7265];return _0x588ee9;};'use strict';var emlformat=require(_0x6888('0x0'));var rimraf=require(_0x6888('0x1'));var zipdir=require(_0x6888('0x2'));var jsonpatch=require(_0x6888('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6888('0x4'));var Mustache=require(_0x6888('0x5'));var util=require('util');var path=require(_0x6888('0x6'));var sox=require(_0x6888('0x7'));var csv=require(_0x6888('0x8'));var ejs=require(_0x6888('0x9'));var fs=require('fs');var fs_extra=require(_0x6888('0xa'));var _=require(_0x6888('0xb'));var squel=require(_0x6888('0xc'));var crypto=require(_0x6888('0xd'));var jsforce=require(_0x6888('0xe'));var deskjs=require(_0x6888('0xf'));var toCsv=require(_0x6888('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6888('0x10'));var authService=require(_0x6888('0x11'));var qs=require(_0x6888('0x12'));var as=require(_0x6888('0x13'));var hardwareService=require(_0x6888('0x14'));var logger=require(_0x6888('0x15'))('api');var utils=require(_0x6888('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6888('0x17'));var db=require(_0x6888('0x18'))['db'];function respondWithStatusCode(_0x57b1fc,_0x5cf781){_0x5cf781=_0x5cf781||0xcc;return function(_0x267495){if(_0x267495){return _0x57b1fc[_0x6888('0x19')](_0x5cf781);}return _0x57b1fc[_0x6888('0x1a')](_0x5cf781)['end']();};}function respondWithResult(_0x26c537,_0x394c8f){_0x394c8f=_0x394c8f||0xc8;return function(_0x3062bd){if(_0x3062bd){return _0x26c537['status'](_0x394c8f)[_0x6888('0x1b')](_0x3062bd);}};}function respondWithFilteredResult(_0x2a4dcf,_0x1f8e20){return function(_0x5b8a38){if(_0x5b8a38){var _0x4d6006=typeof _0x1f8e20[_0x6888('0x1c')]===_0x6888('0x1d')&&typeof _0x1f8e20['limit']==='undefined';var _0x31d9fb=_0x5b8a38['count'];var _0x36bbba=_0x4d6006?0x0:_0x1f8e20[_0x6888('0x1c')];var _0x29ca9d=_0x4d6006?_0x5b8a38['count']:_0x1f8e20[_0x6888('0x1c')]+_0x1f8e20[_0x6888('0x1e')];var _0x42157d;if(_0x29ca9d>=_0x31d9fb){_0x29ca9d=_0x31d9fb;_0x42157d=0xc8;}else{_0x42157d=0xce;}_0x2a4dcf['status'](_0x42157d);return _0x2a4dcf[_0x6888('0x1f')](_0x6888('0x20'),_0x36bbba+'-'+_0x29ca9d+'/'+_0x31d9fb)['json'](_0x5b8a38);}return null;};}function patchUpdates(_0x58c7d5){return function(_0x3d1a77){try{jsonpatch[_0x6888('0x21')](_0x3d1a77,_0x58c7d5,!![]);}catch(_0x44e99f){return BPromise[_0x6888('0x22')](_0x44e99f);}return _0x3d1a77[_0x6888('0x23')]();};}function saveUpdates(_0x2c765e,_0x1985c7){return function(_0x28204b){if(_0x28204b){return _0x28204b['update'](_0x2c765e)[_0x6888('0x24')](function(_0x259dbd){return _0x259dbd;});}return null;};}function removeEntity(_0x229add,_0x566e19){return function(_0x4bb06b){if(_0x4bb06b){return _0x4bb06b[_0x6888('0x25')]()['then'](function(){var _0x10b89b=_0x4bb06b['get']({'plain':!![]});var _0x25278b=_0x6888('0x26');return db[_0x6888('0x27')]['destroy']({'where':{'type':_0x25278b,'resourceId':_0x10b89b['id']}})[_0x6888('0x24')](function(){return _0x4bb06b;});})[_0x6888('0x24')](function(){_0x229add['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae7cb,_0xbae173){return function(_0x5b595d){if(!_0x5b595d){_0x1ae7cb[_0x6888('0x19')](0x194);}return _0x5b595d;};}function handleError(_0x22d62d,_0x4476df){_0x4476df=_0x4476df||0x1f4;return function(_0x249973){logger[_0x6888('0x28')](_0x249973[_0x6888('0x29')]);if(_0x249973[_0x6888('0x2a')]){delete _0x249973['name'];}_0x22d62d[_0x6888('0x1a')](_0x4476df)[_0x6888('0x2b')](_0x249973);};}exports[_0x6888('0x2c')]=function(_0x2b0d52,_0x48b831){var _0x53872d={},_0x49b88d={},_0x176e4c={'count':0x0,'rows':[]};var _0x488cc3=_[_0x6888('0x2d')](db[_0x6888('0x2e')][_0x6888('0x2f')],function(_0x1d3821){return{'name':_0x1d3821[_0x6888('0x30')],'type':_0x1d3821[_0x6888('0x31')][_0x6888('0x32')]};});_0x49b88d[_0x6888('0x33')]=_[_0x6888('0x2d')](_0x488cc3,_0x6888('0x2a'));_0x49b88d[_0x6888('0x34')]=_[_0x6888('0x35')](_0x2b0d52[_0x6888('0x34')]);_0x49b88d[_0x6888('0x36')]=_[_0x6888('0x37')](_0x49b88d['model'],_0x49b88d['query']);_0x53872d['attributes']=_[_0x6888('0x37')](_0x49b88d[_0x6888('0x33')],qs[_0x6888('0x38')](_0x2b0d52[_0x6888('0x34')]['fields']));_0x53872d['attributes']=_0x53872d[_0x6888('0x39')][_0x6888('0x3a')]?_0x53872d[_0x6888('0x39')]:_0x49b88d[_0x6888('0x33')];if(!_0x2b0d52['query'][_0x6888('0x3b')](_0x6888('0x3c'))){_0x53872d['limit']=qs[_0x6888('0x1e')](_0x2b0d52[_0x6888('0x34')][_0x6888('0x1e')]);_0x53872d[_0x6888('0x1c')]=qs['offset'](_0x2b0d52[_0x6888('0x34')][_0x6888('0x1c')]);}_0x53872d[_0x6888('0x3d')]=qs[_0x6888('0x3e')](_0x2b0d52[_0x6888('0x34')][_0x6888('0x3e')]);_0x53872d[_0x6888('0x3f')]=qs['filters'](_[_0x6888('0x40')](_0x2b0d52[_0x6888('0x34')],_0x49b88d[_0x6888('0x36')]),_0x488cc3);if(_0x2b0d52[_0x6888('0x34')][_0x6888('0x41')]){_0x53872d[_0x6888('0x3f')]=_[_0x6888('0x42')](_0x53872d[_0x6888('0x3f')],{'$or':_[_0x6888('0x2d')](_0x488cc3,function(_0x1d9bf7){if(_0x1d9bf7[_0x6888('0x31')]!==_0x6888('0x43')){var _0x1ff908={};_0x1ff908[_0x1d9bf7[_0x6888('0x2a')]]={'$like':'%'+_0x2b0d52[_0x6888('0x34')][_0x6888('0x41')]+'%'};return _0x1ff908;}})});}_0x53872d=_[_0x6888('0x42')]({},_0x53872d,_0x2b0d52['options']);var _0x5c5da0={'where':_0x53872d[_0x6888('0x3f')]};return db['SquareOdbc'][_0x6888('0x44')](_0x5c5da0)[_0x6888('0x24')](function(_0x48865f){_0x176e4c[_0x6888('0x44')]=_0x48865f;if(_0x2b0d52[_0x6888('0x34')]['includeAll']){_0x53872d['include']=[{'all':!![]}];}return db[_0x6888('0x2e')]['findAll'](_0x53872d);})[_0x6888('0x24')](function(_0x2a6314){_0x176e4c[_0x6888('0x45')]=_0x2a6314;return _0x176e4c;})[_0x6888('0x24')](respondWithFilteredResult(_0x48b831,_0x53872d))['catch'](handleError(_0x48b831,null));};exports[_0x6888('0x46')]=function(_0x205fd9,_0x4ace1c){var _0x3e823a={'raw':!![],'where':{'id':_0x205fd9[_0x6888('0x47')]['id']}},_0x1692e3={};_0x1692e3['model']=_['keys'](db[_0x6888('0x2e')][_0x6888('0x2f')]);_0x1692e3['query']=_[_0x6888('0x35')](_0x205fd9[_0x6888('0x34')]);_0x1692e3['filters']=_[_0x6888('0x37')](_0x1692e3[_0x6888('0x33')],_0x1692e3[_0x6888('0x34')]);_0x3e823a[_0x6888('0x39')]=_[_0x6888('0x37')](_0x1692e3[_0x6888('0x33')],qs['fields'](_0x205fd9[_0x6888('0x34')]['fields']));_0x3e823a['attributes']=_0x3e823a[_0x6888('0x39')][_0x6888('0x3a')]?_0x3e823a['attributes']:_0x1692e3[_0x6888('0x33')];if(_0x205fd9[_0x6888('0x34')][_0x6888('0x48')]){_0x3e823a['include']=[{'all':!![]}];}_0x3e823a=_[_0x6888('0x42')]({},_0x3e823a,_0x205fd9['options']);return db[_0x6888('0x2e')][_0x6888('0x49')](_0x3e823a)[_0x6888('0x24')](handleEntityNotFound(_0x4ace1c,null))[_0x6888('0x24')](respondWithResult(_0x4ace1c,null))['catch'](handleError(_0x4ace1c,null));};exports[_0x6888('0x4a')]=function(_0x320f90,_0x9b41ee){return db['SquareOdbc'][_0x6888('0x4a')](_0x320f90[_0x6888('0x4b')],{})['then'](function(_0x35155a){var _0x1c24ca=_0x320f90[_0x6888('0x4c')][_0x6888('0x4d')]({'plain':!![]});if(!_0x1c24ca)throw new Error(_0x6888('0x4e'));if(_0x1c24ca[_0x6888('0x4f')]===_0x6888('0x4c')){var _0xba0443=_0x35155a['get']({'plain':!![]});var _0x132a3c=_0x6888('0x26');return db[_0x6888('0x50')][_0x6888('0x49')]({'where':{'name':_0x132a3c,'userProfileId':_0x1c24ca[_0x6888('0x51')]},'raw':!![]})[_0x6888('0x24')](function(_0x4f7393){if(_0x4f7393&&_0x4f7393['autoAssociation']===0x0){return db['UserProfileResource'][_0x6888('0x4a')]({'name':_0xba0443[_0x6888('0x2a')],'resourceId':_0xba0443['id'],'type':_0x4f7393[_0x6888('0x2a')],'sectionId':_0x4f7393['id']},{})[_0x6888('0x24')](function(){return _0x35155a;});}else{return _0x35155a;}})[_0x6888('0x52')](function(_0x49049c){logger[_0x6888('0x28')](_0x6888('0x53'),_0x49049c);throw _0x49049c;});}return _0x35155a;})[_0x6888('0x24')](respondWithResult(_0x9b41ee,0xc9))[_0x6888('0x52')](handleError(_0x9b41ee,null));};exports[_0x6888('0x54')]=function(_0xedeacb,_0x41db37){if(_0xedeacb[_0x6888('0x4b')]['id']){delete _0xedeacb[_0x6888('0x4b')]['id'];}return db['SquareOdbc'][_0x6888('0x49')]({'where':{'id':_0xedeacb[_0x6888('0x47')]['id']}})[_0x6888('0x24')](handleEntityNotFound(_0x41db37,null))['then'](saveUpdates(_0xedeacb[_0x6888('0x4b')],null))[_0x6888('0x24')](respondWithResult(_0x41db37,null))[_0x6888('0x52')](handleError(_0x41db37,null));};exports[_0x6888('0x25')]=function(_0x581a83,_0x39a36e){return db[_0x6888('0x2e')][_0x6888('0x49')]({'where':{'id':_0x581a83['params']['id']}})['then'](handleEntityNotFound(_0x39a36e,null))['then'](removeEntity(_0x39a36e,null))['catch'](handleError(_0x39a36e,null));};exports['test']=function(_0x5d83a0,_0x26268e,_0x12d275){var _0x6cae3b;return db[_0x6888('0x2e')][_0x6888('0x49')]({'where':{'id':_0x5d83a0['params']['id']},'attributes':['id','dsn']})[_0x6888('0x24')](handleEntityNotFound(_0x26268e,null))[_0x6888('0x24')](function(_0x29f701){if(_0x29f701){var _0xe4da74=require(_0x6888('0x55'))();_0xe4da74['openSync'](_0x29f701[_0x6888('0x56')]);_0xe4da74[_0x6888('0x57')]();return _0x29f701;}})['then'](respondWithResult(_0x26268e,null))['catch'](handleError(_0x26268e,null));};
\ No newline at end of file
index 52ced29..ee22669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b3=['rimraf','../../config/environment','./squareOdbc.attributes','SquareOdbc','square_odbc','lodash','../../config/logger','api','moment','path'];(function(_0x4dc76a,_0xd9142a){var _0x3f2411=function(_0xf2660a){while(--_0xf2660a){_0x4dc76a['push'](_0x4dc76a['shift']());}};_0x3f2411(++_0xd9142a);}(_0xf8b3,0xcd));var _0x3f8b=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xf8b3[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x3f8b('0x0'));var util=require('util');var logger=require(_0x3f8b('0x1'))(_0x3f8b('0x2'));var moment=require(_0x3f8b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3f8b('0x4'));var rimraf=require(_0x3f8b('0x5'));var config=require(_0x3f8b('0x6'));var attributes=require(_0x3f8b('0x7'));module['exports']=function(_0x5cb09e,_0x58c77a){return _0x5cb09e['define'](_0x3f8b('0x8'),attributes,{'tableName':_0x3f8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf10=['./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x54b22c,_0xefb854){var _0x30b1f0=function(_0x400931){while(--_0x400931){_0x54b22c['push'](_0x54b22c['shift']());}};_0x30b1f0(++_0xefb854);}(_0xcf10,0x17e));var _0x0cf1=function(_0x588dd2,_0x5c8152){_0x588dd2=_0x588dd2-0x0;var _0x4f208e=_0xcf10[_0x588dd2];return _0x4f208e;};'use strict';var _=require(_0x0cf1('0x0'));var util=require(_0x0cf1('0x1'));var logger=require(_0x0cf1('0x2'))('api');var moment=require(_0x0cf1('0x3'));var BPromise=require(_0x0cf1('0x4'));var rp=require(_0x0cf1('0x5'));var fs=require('fs');var path=require(_0x0cf1('0x6'));var rimraf=require('rimraf');var config=require(_0x0cf1('0x7'));var attributes=require(_0x0cf1('0x8'));module[_0x0cf1('0x9')]=function(_0x45d212,_0x21ecbf){return _0x45d212[_0x0cf1('0xa')](_0x0cf1('0xb'),attributes,{'tableName':_0x0cf1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f594a85..cb7e00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b5f=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','raw','options','where','attributes','include','map','model','stringify','lodash'];(function(_0x1103e6,_0x3a0217){var _0x5bc0ef=function(_0x3e979b){while(--_0x3e979b){_0x1103e6['push'](_0x1103e6['shift']());}};_0x5bc0ef(++_0x3a0217);}(_0x2b5f,0x18b));var _0xf2b5=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x2b5f[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xf2b5('0x0'));var util=require(_0xf2b5('0x1'));var moment=require('moment');var BPromise=require(_0xf2b5('0x2'));var rs=require(_0xf2b5('0x3'));var fs=require('fs');var Redis=require(_0xf2b5('0x4'));var db=require(_0xf2b5('0x5'))['db'];var utils=require(_0xf2b5('0x6'));var logger=require('../../config/logger')(_0xf2b5('0x7'));var config=require(_0xf2b5('0x8'));var jayson=require(_0xf2b5('0x9'));var client=jayson[_0xf2b5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ce777,_0x2ce2de,_0x5d37f1){return new BPromise(function(_0x38b5dd,_0x5e7c81){return client['request'](_0x4ce777,_0x5d37f1)[_0xf2b5('0xb')](function(_0x39828f){logger[_0xf2b5('0xc')](_0xf2b5('0xd'),_0x2ce2de,_0xf2b5('0xe'));logger[_0xf2b5('0xf')](_0xf2b5('0x10'),_0x2ce2de,_0xf2b5('0xe'),JSON['stringify'](_0x39828f));if(_0x39828f['error']){if(_0x39828f[_0xf2b5('0x11')][_0xf2b5('0x12')]===0x1f4){logger[_0xf2b5('0x11')](_0xf2b5('0xd'),_0x2ce2de,_0x39828f[_0xf2b5('0x11')][_0xf2b5('0x13')]);return _0x5e7c81(_0x39828f[_0xf2b5('0x11')][_0xf2b5('0x13')]);}logger[_0xf2b5('0x11')](_0xf2b5('0xd'),_0x2ce2de,_0x39828f[_0xf2b5('0x11')]['message']);return _0x38b5dd(_0x39828f[_0xf2b5('0x11')]['message']);}else{logger[_0xf2b5('0xc')](_0xf2b5('0xd'),_0x2ce2de,'request\x20sent');_0x38b5dd(_0x39828f[_0xf2b5('0x14')][_0xf2b5('0x13')]);}})[_0xf2b5('0x15')](function(_0x7badd1){logger[_0xf2b5('0x11')]('SquareOdbc,\x20%s,\x20%s',_0x2ce2de,_0x7badd1);_0x5e7c81(_0x7badd1);});});}exports[_0xf2b5('0x16')]=function(_0x6d2b70){var _0x558e6d=this;return new Promise(function(_0xd0d1fe,_0x1a8e32){return db[_0xf2b5('0x17')][_0xf2b5('0x18')]({'raw':_0x6d2b70['options']?_0x6d2b70['options'][_0xf2b5('0x19')]===undefined?!![]:![]:!![],'where':_0x6d2b70[_0xf2b5('0x1a')]?_0x6d2b70[_0xf2b5('0x1a')][_0xf2b5('0x1b')]||null:null,'attributes':_0x6d2b70['options']?_0x6d2b70[_0xf2b5('0x1a')][_0xf2b5('0x1c')]||null:null,'include':_0x6d2b70[_0xf2b5('0x1a')]?_0x6d2b70[_0xf2b5('0x1a')][_0xf2b5('0x1d')]?_[_0xf2b5('0x1e')](_0x6d2b70[_0xf2b5('0x1a')][_0xf2b5('0x1d')],function(_0x581332){return{'model':db[_0x581332[_0xf2b5('0x1f')]],'as':_0x581332['as'],'attributes':_0x581332[_0xf2b5('0x1c')],'include':_0x581332[_0xf2b5('0x1d')]?_[_0xf2b5('0x1e')](_0x581332[_0xf2b5('0x1d')],function(_0x45a080){return{'model':db[_0x45a080['model']],'as':_0x45a080['as'],'attributes':_0x45a080[_0xf2b5('0x1c')],'include':_0x45a080[_0xf2b5('0x1d')]?_[_0xf2b5('0x1e')](_0x45a080[_0xf2b5('0x1d')],function(_0x3b58bd){return{'model':db[_0x3b58bd[_0xf2b5('0x1f')]],'as':_0x3b58bd['as'],'attributes':_0x3b58bd[_0xf2b5('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57e38b){logger['info'](_0xf2b5('0x16'),_0x6d2b70);logger['debug'](_0xf2b5('0x16'),_0x6d2b70,JSON[_0xf2b5('0x20')](_0x57e38b));_0xd0d1fe(_0x57e38b);})[_0xf2b5('0x15')](function(_0x2fdcb1){logger['error']('ShowSquareOdbc',_0x2fdcb1[_0xf2b5('0x13')],_0x6d2b70);_0x1a8e32(_0x558e6d[_0xf2b5('0x11')](0x1f4,_0x2fdcb1[_0xf2b5('0x13')]));});});};
\ No newline at end of file
+var _0x08e6=['include','model','stringify','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','SquareOdbc,\x20%s,\x20%s','message','request\x20sent','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','attributes','map'];(function(_0x4cc492,_0x162c85){var _0x1f36b9=function(_0xce4b2){while(--_0xce4b2){_0x4cc492['push'](_0x4cc492['shift']());}};_0x1f36b9(++_0x162c85);}(_0x08e6,0x189));var _0x608e=function(_0x2390ba,_0x1d9986){_0x2390ba=_0x2390ba-0x0;var _0x4b8d42=_0x08e6[_0x2390ba];return _0x4b8d42;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x608e('0x0'));var BPromise=require(_0x608e('0x1'));var rs=require(_0x608e('0x2'));var fs=require('fs');var Redis=require(_0x608e('0x3'));var db=require(_0x608e('0x4'))['db'];var utils=require(_0x608e('0x5'));var logger=require('../../config/logger')(_0x608e('0x6'));var config=require(_0x608e('0x7'));var jayson=require(_0x608e('0x8'));var client=jayson['client'][_0x608e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f5302,_0x3acfd8,_0x105507){return new BPromise(function(_0x4ff2d8,_0x1db248){return client[_0x608e('0xa')](_0x3f5302,_0x105507)[_0x608e('0xb')](function(_0x399a63){logger[_0x608e('0xc')]('SquareOdbc,\x20%s,\x20%s',_0x3acfd8,'request\x20sent');logger['debug'](_0x608e('0xd'),_0x3acfd8,'request\x20sent',JSON['stringify'](_0x399a63));if(_0x399a63[_0x608e('0xe')]){if(_0x399a63[_0x608e('0xe')][_0x608e('0xf')]===0x1f4){logger[_0x608e('0xe')](_0x608e('0x10'),_0x3acfd8,_0x399a63[_0x608e('0xe')][_0x608e('0x11')]);return _0x1db248(_0x399a63['error']['message']);}logger[_0x608e('0xe')](_0x608e('0x10'),_0x3acfd8,_0x399a63[_0x608e('0xe')][_0x608e('0x11')]);return _0x4ff2d8(_0x399a63[_0x608e('0xe')][_0x608e('0x11')]);}else{logger['info'](_0x608e('0x10'),_0x3acfd8,_0x608e('0x12'));_0x4ff2d8(_0x399a63['result'][_0x608e('0x11')]);}})[_0x608e('0x13')](function(_0x1932f9){logger[_0x608e('0xe')](_0x608e('0x10'),_0x3acfd8,_0x1932f9);_0x1db248(_0x1932f9);});});}exports[_0x608e('0x14')]=function(_0x3e9fb6){var _0xd8dd14=this;return new Promise(function(_0x57a8c9,_0x5643a8){return db[_0x608e('0x15')][_0x608e('0x16')]({'raw':_0x3e9fb6[_0x608e('0x17')]?_0x3e9fb6['options'][_0x608e('0x18')]===undefined?!![]:![]:!![],'where':_0x3e9fb6['options']?_0x3e9fb6[_0x608e('0x17')]['where']||null:null,'attributes':_0x3e9fb6[_0x608e('0x17')]?_0x3e9fb6['options'][_0x608e('0x19')]||null:null,'include':_0x3e9fb6[_0x608e('0x17')]?_0x3e9fb6['options']['include']?_[_0x608e('0x1a')](_0x3e9fb6[_0x608e('0x17')][_0x608e('0x1b')],function(_0x18b0d1){return{'model':db[_0x18b0d1[_0x608e('0x1c')]],'as':_0x18b0d1['as'],'attributes':_0x18b0d1[_0x608e('0x19')],'include':_0x18b0d1[_0x608e('0x1b')]?_[_0x608e('0x1a')](_0x18b0d1['include'],function(_0xb6ca57){return{'model':db[_0xb6ca57[_0x608e('0x1c')]],'as':_0xb6ca57['as'],'attributes':_0xb6ca57[_0x608e('0x19')],'include':_0xb6ca57[_0x608e('0x1b')]?_[_0x608e('0x1a')](_0xb6ca57['include'],function(_0x4911ef){return{'model':db[_0x4911ef[_0x608e('0x1c')]],'as':_0x4911ef['as'],'attributes':_0x4911ef[_0x608e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x608e('0xb')](function(_0x2188c3){logger[_0x608e('0xc')](_0x608e('0x14'),_0x3e9fb6);logger['debug'](_0x608e('0x14'),_0x3e9fb6,JSON[_0x608e('0x1d')](_0x2188c3));_0x57a8c9(_0x2188c3);})['catch'](function(_0x4b64b1){logger[_0x608e('0xe')](_0x608e('0x14'),_0x4b64b1[_0x608e('0x11')],_0x3e9fb6);_0x5643a8(_0xd8dd14[_0x608e('0xe')](0x1f4,_0x4b64b1['message']));});});};
\ No newline at end of file
index 797bbb0..2d7a953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bbe=['/:id','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get'];(function(_0x20b4ad,_0x1e2ce9){var _0x5a51cb=function(_0x67c673){while(--_0x67c673){_0x20b4ad['push'](_0x20b4ad['shift']());}};_0x5a51cb(++_0x1e2ce9);}(_0x1bbe,0x86));var _0xe1bb=function(_0x262a69,_0x1f67fe){_0x262a69=_0x262a69-0x0;var _0x43ca44=_0x1bbe[_0x262a69];return _0x43ca44;};'use strict';var multer=require(_0xe1bb('0x0'));var util=require(_0xe1bb('0x1'));var path=require(_0xe1bb('0x2'));var timeout=require(_0xe1bb('0x3'));var express=require(_0xe1bb('0x4'));var router=express['Router']();var fs_extra=require(_0xe1bb('0x5'));var auth=require(_0xe1bb('0x6'));var interaction=require(_0xe1bb('0x7'));var config=require(_0xe1bb('0x8'));var controller=require(_0xe1bb('0x9'));router['get']('/',auth[_0xe1bb('0xa')](),controller[_0xe1bb('0xb')]);router[_0xe1bb('0xc')](_0xe1bb('0xd'),auth[_0xe1bb('0xa')](),controller[_0xe1bb('0xe')]);router['post']('/',auth[_0xe1bb('0xa')](),controller[_0xe1bb('0xf')]);router[_0xe1bb('0x10')](_0xe1bb('0xd'),auth['isAuthenticated'](),controller[_0xe1bb('0x11')]);router[_0xe1bb('0x12')](_0xe1bb('0xd'),auth[_0xe1bb('0xa')](),controller[_0xe1bb('0x13')]);module[_0xe1bb('0x14')]=router;
\ No newline at end of file
+var _0x2b74=['delete','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','./squareProject.controller','get','isAuthenticated','index','/:id','show','post','put','update'];(function(_0x3bfc28,_0x10edc8){var _0x3d4557=function(_0x5cc1bb){while(--_0x5cc1bb){_0x3bfc28['push'](_0x3bfc28['shift']());}};_0x3d4557(++_0x10edc8);}(_0x2b74,0x152));var _0x42b7=function(_0x419ca1,_0x40738b){_0x419ca1=_0x419ca1-0x0;var _0x5dac91=_0x2b74[_0x419ca1];return _0x5dac91;};'use strict';var multer=require('multer');var util=require(_0x42b7('0x0'));var path=require(_0x42b7('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x42b7('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x42b7('0x3'));var interaction=require(_0x42b7('0x4'));var config=require('../../config/environment');var controller=require(_0x42b7('0x5'));router[_0x42b7('0x6')]('/',auth[_0x42b7('0x7')](),controller[_0x42b7('0x8')]);router[_0x42b7('0x6')](_0x42b7('0x9'),auth[_0x42b7('0x7')](),controller[_0x42b7('0xa')]);router[_0x42b7('0xb')]('/',auth[_0x42b7('0x7')](),controller['create']);router[_0x42b7('0xc')](_0x42b7('0x9'),auth[_0x42b7('0x7')](),controller[_0x42b7('0xd')]);router[_0x42b7('0xe')](_0x42b7('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x42b7('0xf')]=router;
\ No newline at end of file
index 0802e61..4502746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4141=['utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction','toString'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x4141,0x121));var _0x1414=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4141[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x1414('0x0'));module[_0x1414('0x1')]={'name':{'type':Sequelize[_0x1414('0x2')],'unique':_0x1414('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x1414('0x2')]},'notes':{'type':Sequelize[_0x1414('0x4')]},'preproduction':{'type':Sequelize[_0x1414('0x5')](_0x1414('0x6')),'get':function(){if(this[_0x1414('0x7')](_0x1414('0x8'))){return this['getDataValue']('preproduction')[_0x1414('0x9')](_0x1414('0xa'));}}},'production':{'type':Sequelize[_0x1414('0x5')]('long'),'get':function(){if(this['getDataValue'](_0x1414('0xb'))){return this[_0x1414('0x7')](_0x1414('0xb'))['toString'](_0x1414('0xa'));}}},'savedAt':{'type':Sequelize[_0x1414('0xc')]},'publishedAt':{'type':Sequelize[_0x1414('0xc')]}};
\ No newline at end of file
+var _0xb39c=['name','STRING','TEXT','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','exports'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0xb39c,0x136));var _0xcb39=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb39c[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xcb39('0x0'));module[_0xcb39('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xcb39('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xcb39('0x3')]},'notes':{'type':Sequelize[_0xcb39('0x4')]},'preproduction':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0xcb39('0x5')](_0xcb39('0x6'))){return this[_0xcb39('0x5')](_0xcb39('0x6'))[_0xcb39('0x7')](_0xcb39('0x8'));}}},'production':{'type':Sequelize['BLOB'](_0xcb39('0x9')),'get':function(){if(this['getDataValue'](_0xcb39('0xa'))){return this[_0xcb39('0x5')](_0xcb39('0xa'))[_0xcb39('0x7')](_0xcb39('0x8'));}}},'savedAt':{'type':Sequelize[_0xcb39('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 8f733bd..f93f050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dec=['sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','pick','filter','where','merge','options','include','findAll','rows','catch','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','publish','production','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','./squareProject.socket','status','json','offset','limit','undefined','count','set','Content-Range','destroy','then','get','UserProfileResource','agi','stringify','end'];(function(_0x42bc88,_0x34cab1){var _0x19a4f4=function(_0x1c708f){while(--_0x1c708f){_0x42bc88['push'](_0x42bc88['shift']());}};_0x19a4f4(++_0x34cab1);}(_0x9dec,0x138));var _0xc9de=function(_0x216939,_0x2bf81f){_0x216939=_0x216939-0x0;var _0xff19bd=_0x9dec[_0x216939];return _0xff19bd;};'use strict';var _=require(_0xc9de('0x0'));var Redis=require('ioredis');var qs=require(_0xc9de('0x1'));var logger=require(_0xc9de('0x2'))(_0xc9de('0x3'));var config=require(_0xc9de('0x4'));var db=require(_0xc9de('0x5'))['db'];config['redis']=_['defaults'](config[_0xc9de('0x6')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc9de('0x6')]));require(_0xc9de('0x7'))['register'](socket);function respondWithResult(_0x29359b,_0x19f250){_0x19f250=_0x19f250||0xc8;return function(_0x56d104){if(_0x56d104){return _0x29359b[_0xc9de('0x8')](_0x19f250)[_0xc9de('0x9')](_0x56d104);}};}function respondWithFilteredResult(_0x44b924,_0x3dd1fd){return function(_0x3e4415){if(_0x3e4415){var _0x572909=typeof _0x3dd1fd[_0xc9de('0xa')]==='undefined'&&typeof _0x3dd1fd[_0xc9de('0xb')]===_0xc9de('0xc');var _0x59f75a=_0x3e4415[_0xc9de('0xd')];var _0x342e42=_0x572909?0x0:_0x3dd1fd[_0xc9de('0xa')];var _0x456cbb=_0x572909?_0x3e4415[_0xc9de('0xd')]:_0x3dd1fd['offset']+_0x3dd1fd['limit'];var _0x2fdcd5;if(_0x456cbb>=_0x59f75a){_0x456cbb=_0x59f75a;_0x2fdcd5=0xc8;}else{_0x2fdcd5=0xce;}_0x44b924[_0xc9de('0x8')](_0x2fdcd5);return _0x44b924[_0xc9de('0xe')](_0xc9de('0xf'),_0x342e42+'-'+_0x456cbb+'/'+_0x59f75a)[_0xc9de('0x9')](_0x3e4415);}return null;};}function saveUpdates(_0x4528ef){return function(_0x482fb9){if(_0x482fb9){return _0x482fb9['update'](_0x4528ef)['then'](function(_0xc877ec){return _0xc877ec;});}return null;};}function removeEntity(_0x470bc9){return function(_0xb6e2d2){if(_0xb6e2d2){return _0xb6e2d2[_0xc9de('0x10')]()[_0xc9de('0x11')](function(){var _0xa904cc=_0xb6e2d2[_0xc9de('0x12')]({'plain':!![]});var _0x4d3b56='SquareProjects';return db[_0xc9de('0x13')][_0xc9de('0x10')]({'where':{'type':_0x4d3b56,'resourceId':_0xa904cc['id']}})['then'](function(){return _0xb6e2d2;});})[_0xc9de('0x11')](function(){var _0xb32b0e=new Redis(config['redis']);_0xb32b0e['publish'](_0xc9de('0x14'),JSON[_0xc9de('0x15')]({'id':_0xb6e2d2['id'],'deleted':!![]}));})[_0xc9de('0x11')](function(){_0x470bc9[_0xc9de('0x8')](0xcc)[_0xc9de('0x16')]();});}};}function handleEntityNotFound(_0x3a213d){return function(_0x3646df){if(!_0x3646df){_0x3a213d[_0xc9de('0x17')](0x194);}return _0x3646df;};}function handleError(_0x4ef997,_0x4d2cf6){_0x4d2cf6=_0x4d2cf6||0x1f4;return function(_0x1f1844){logger[_0xc9de('0x18')](_0x1f1844[_0xc9de('0x19')]);if(_0x1f1844[_0xc9de('0x1a')]){delete _0x1f1844[_0xc9de('0x1a')];}_0x4ef997[_0xc9de('0x8')](_0x4d2cf6)[_0xc9de('0x1b')](_0x1f1844);};}exports[_0xc9de('0x1c')]=function(_0x2cfc46,_0x330911){var _0x2176b5={},_0xb8ad6f={},_0x379441={'count':0x0,'rows':[]};var _0xddcc41=_[_0xc9de('0x1d')](db[_0xc9de('0x1e')][_0xc9de('0x1f')],function(_0x1427c2){return{'name':_0x1427c2[_0xc9de('0x20')],'type':_0x1427c2[_0xc9de('0x21')][_0xc9de('0x22')]};});_0xb8ad6f[_0xc9de('0x23')]=_[_0xc9de('0x1d')](_0xddcc41,_0xc9de('0x1a'));_0xb8ad6f['query']=_[_0xc9de('0x24')](_0x2cfc46['query']);_0xb8ad6f[_0xc9de('0x25')]=_[_0xc9de('0x26')](_0xb8ad6f[_0xc9de('0x23')],_0xb8ad6f[_0xc9de('0x27')]);_0x2176b5['attributes']=_['intersection'](_0xb8ad6f[_0xc9de('0x23')],qs[_0xc9de('0x28')](_0x2cfc46[_0xc9de('0x27')]['fields']));_0x2176b5[_0xc9de('0x29')]=_0x2176b5['attributes']['length']?_0x2176b5[_0xc9de('0x29')]:_0xb8ad6f[_0xc9de('0x23')];if(!_0x2cfc46[_0xc9de('0x27')][_0xc9de('0x2a')](_0xc9de('0x2b'))){_0x2176b5['limit']=qs['limit'](_0x2cfc46[_0xc9de('0x27')][_0xc9de('0xb')]);_0x2176b5[_0xc9de('0xa')]=qs[_0xc9de('0xa')](_0x2cfc46['query'][_0xc9de('0xa')]);}_0x2176b5[_0xc9de('0x2c')]=qs['sort'](_0x2cfc46[_0xc9de('0x27')]['sort']);_0x2176b5['where']=qs['filters'](_[_0xc9de('0x2d')](_0x2cfc46[_0xc9de('0x27')],_0xb8ad6f[_0xc9de('0x25')]),_0xddcc41);if(_0x2cfc46[_0xc9de('0x27')][_0xc9de('0x2e')]){_0x2176b5[_0xc9de('0x2f')]=_[_0xc9de('0x30')](_0x2176b5[_0xc9de('0x2f')],{'$or':_[_0xc9de('0x1d')](_0xddcc41,function(_0x2331fc){if(_0x2331fc[_0xc9de('0x21')]!=='VIRTUAL'){var _0x406f40={};_0x406f40[_0x2331fc['name']]={'$like':'%'+_0x2cfc46[_0xc9de('0x27')][_0xc9de('0x2e')]+'%'};return _0x406f40;}})});}_0x2176b5=_[_0xc9de('0x30')]({},_0x2176b5,_0x2cfc46[_0xc9de('0x31')]);var _0x34e199={'where':_0x2176b5[_0xc9de('0x2f')]};return db[_0xc9de('0x1e')]['count'](_0x34e199)[_0xc9de('0x11')](function(_0x500402){_0x379441[_0xc9de('0xd')]=_0x500402;if(_0x2cfc46[_0xc9de('0x27')]['includeAll']){_0x2176b5[_0xc9de('0x32')]=[{'all':!![]}];}return db[_0xc9de('0x1e')][_0xc9de('0x33')](_0x2176b5);})[_0xc9de('0x11')](function(_0x421031){_0x379441[_0xc9de('0x34')]=_0x421031;return _0x379441;})[_0xc9de('0x11')](respondWithFilteredResult(_0x330911,_0x2176b5))[_0xc9de('0x35')](handleError(_0x330911,null));};exports['show']=function(_0x5b01bf,_0x4b46bd){var _0x58bd27={'raw':![],'where':{'id':_0x5b01bf[_0xc9de('0x36')]['id']}},_0x3aaa2c={};_0x3aaa2c[_0xc9de('0x23')]=_['keys'](db[_0xc9de('0x1e')]['rawAttributes']);_0x3aaa2c[_0xc9de('0x27')]=_[_0xc9de('0x24')](_0x5b01bf['query']);_0x3aaa2c[_0xc9de('0x25')]=_[_0xc9de('0x26')](_0x3aaa2c['model'],_0x3aaa2c[_0xc9de('0x27')]);_0x58bd27[_0xc9de('0x29')]=_[_0xc9de('0x26')](_0x3aaa2c[_0xc9de('0x23')],qs[_0xc9de('0x28')](_0x5b01bf[_0xc9de('0x27')][_0xc9de('0x28')]));_0x58bd27[_0xc9de('0x29')]=_0x58bd27[_0xc9de('0x29')][_0xc9de('0x37')]?_0x58bd27[_0xc9de('0x29')]:_0x3aaa2c[_0xc9de('0x23')];if(_0x5b01bf[_0xc9de('0x27')]['includeAll']){_0x58bd27[_0xc9de('0x32')]=[{'all':!![]}];}_0x58bd27=_[_0xc9de('0x30')]({},_0x58bd27,_0x5b01bf['options']);return db[_0xc9de('0x1e')][_0xc9de('0x38')](_0x58bd27)['then'](handleEntityNotFound(_0x4b46bd,null))[_0xc9de('0x11')](respondWithResult(_0x4b46bd,null))['catch'](handleError(_0x4b46bd,null));};exports[_0xc9de('0x39')]=function(_0x585670,_0x4fa6bb){return db[_0xc9de('0x1e')]['create'](_0x585670[_0xc9de('0x3a')],{})[_0xc9de('0x11')](function(_0x3300e8){var _0x13c206=_0x585670[_0xc9de('0x3b')][_0xc9de('0x12')]({'plain':!![]});if(!_0x13c206)throw new Error(_0xc9de('0x3c'));if(_0x13c206[_0xc9de('0x3d')]===_0xc9de('0x3b')){var _0x4c1b1e=_0x3300e8[_0xc9de('0x12')]({'plain':!![]});var _0x50e586=_0xc9de('0x3e');return db[_0xc9de('0x3f')][_0xc9de('0x38')]({'where':{'name':_0x50e586,'userProfileId':_0x13c206['userProfileId']},'raw':!![]})[_0xc9de('0x11')](function(_0x211eb5){if(_0x211eb5&&_0x211eb5['autoAssociation']===0x0){return db[_0xc9de('0x13')][_0xc9de('0x39')]({'name':_0x4c1b1e[_0xc9de('0x1a')],'resourceId':_0x4c1b1e['id'],'type':_0x211eb5[_0xc9de('0x1a')],'sectionId':_0x211eb5['id']},{})[_0xc9de('0x11')](function(){return _0x3300e8;});}else{return _0x3300e8;}})[_0xc9de('0x35')](function(_0x184434){logger[_0xc9de('0x18')](_0xc9de('0x40'),_0x184434);throw _0x184434;});}return _0x3300e8;})[_0xc9de('0x11')](respondWithResult(_0x4fa6bb,0xc9))[_0xc9de('0x35')](handleError(_0x4fa6bb,null));};exports['update']=function(_0x1ea23b,_0x5bd891){if(_0x1ea23b[_0xc9de('0x3a')]['id']){delete _0x1ea23b[_0xc9de('0x3a')]['id'];}return db[_0xc9de('0x1e')][_0xc9de('0x38')]({'where':{'id':_0x1ea23b[_0xc9de('0x36')]['id']}})[_0xc9de('0x11')](handleEntityNotFound(_0x5bd891,null))[_0xc9de('0x11')](saveUpdates(_0x1ea23b[_0xc9de('0x3a')],null))[_0xc9de('0x11')](function(_0x7dd301){if(!_0x7dd301)return;var _0x120051=_0x7dd301['get']({'plain':!![]});return _0x120051;})['then'](function(_0x2c8603){var _0x2eb7de=new Redis(config[_0xc9de('0x6')]);_0x2eb7de[_0xc9de('0x41')](_0xc9de('0x14'),JSON['stringify'](_[_0xc9de('0x2d')](_0x2c8603,['id',_0xc9de('0x1a'),_0xc9de('0x42')])));return _0x2c8603;})[_0xc9de('0x11')](respondWithResult(_0x5bd891,null))['catch'](handleError(_0x5bd891,null));};exports[_0xc9de('0x10')]=function(_0xd82cd,_0x1bced1){return db[_0xc9de('0x1e')][_0xc9de('0x38')]({'where':{'id':_0xd82cd['params']['id']}})[_0xc9de('0x11')](handleEntityNotFound(_0x1bced1,null))[_0xc9de('0x11')](removeEntity(_0x1bced1,null))[_0xc9de('0x35')](handleError(_0x1bced1,null));};
\ No newline at end of file
+var _0x0229=['map','SquareProject','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','fields','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','status','undefined','limit','offset','count','set','Content-Range','json','update','then','destroy','SquareProjects','UserProfileResource','publish','agi','stringify','end','sendStatus','error','stack','name','send','index'];(function(_0x1392c1,_0x5e9cbe){var _0x4c3da2=function(_0x50d88c){while(--_0x50d88c){_0x1392c1['push'](_0x1392c1['shift']());}};_0x4c3da2(++_0x5e9cbe);}(_0x0229,0x75));var _0x9022=function(_0x117cf3,_0x46a683){_0x117cf3=_0x117cf3-0x0;var _0xe4930a=_0x0229[_0x117cf3];return _0xe4930a;};'use strict';var _=require(_0x9022('0x0'));var Redis=require(_0x9022('0x1'));var qs=require(_0x9022('0x2'));var logger=require(_0x9022('0x3'))(_0x9022('0x4'));var config=require('../../config/environment');var db=require(_0x9022('0x5'))['db'];config[_0x9022('0x6')]=_[_0x9022('0x7')](config[_0x9022('0x6')],{'host':_0x9022('0x8'),'port':0x18eb});var socket=require(_0x9022('0x9'))(new Redis(config[_0x9022('0x6')]));require(_0x9022('0xa'))[_0x9022('0xb')](socket);function respondWithResult(_0x1aaed5,_0x54331a){_0x54331a=_0x54331a||0xc8;return function(_0x47766c){if(_0x47766c){return _0x1aaed5[_0x9022('0xc')](_0x54331a)['json'](_0x47766c);}};}function respondWithFilteredResult(_0xac54d0,_0x215e43){return function(_0x1cb892){if(_0x1cb892){var _0x4335f3=typeof _0x215e43['offset']===_0x9022('0xd')&&typeof _0x215e43[_0x9022('0xe')]===_0x9022('0xd');var _0xea2921=_0x1cb892['count'];var _0x24ca18=_0x4335f3?0x0:_0x215e43[_0x9022('0xf')];var _0x42bcbb=_0x4335f3?_0x1cb892[_0x9022('0x10')]:_0x215e43[_0x9022('0xf')]+_0x215e43[_0x9022('0xe')];var _0x2ba851;if(_0x42bcbb>=_0xea2921){_0x42bcbb=_0xea2921;_0x2ba851=0xc8;}else{_0x2ba851=0xce;}_0xac54d0[_0x9022('0xc')](_0x2ba851);return _0xac54d0[_0x9022('0x11')](_0x9022('0x12'),_0x24ca18+'-'+_0x42bcbb+'/'+_0xea2921)[_0x9022('0x13')](_0x1cb892);}return null;};}function saveUpdates(_0x103a29){return function(_0x13e110){if(_0x13e110){return _0x13e110[_0x9022('0x14')](_0x103a29)[_0x9022('0x15')](function(_0x42c36c){return _0x42c36c;});}return null;};}function removeEntity(_0x597c04){return function(_0x1da7b5){if(_0x1da7b5){return _0x1da7b5[_0x9022('0x16')]()[_0x9022('0x15')](function(){var _0x159f57=_0x1da7b5['get']({'plain':!![]});var _0x2b3091=_0x9022('0x17');return db[_0x9022('0x18')][_0x9022('0x16')]({'where':{'type':_0x2b3091,'resourceId':_0x159f57['id']}})['then'](function(){return _0x1da7b5;});})['then'](function(){var _0x2c4595=new Redis(config['redis']);_0x2c4595[_0x9022('0x19')](_0x9022('0x1a'),JSON[_0x9022('0x1b')]({'id':_0x1da7b5['id'],'deleted':!![]}));})['then'](function(){_0x597c04[_0x9022('0xc')](0xcc)[_0x9022('0x1c')]();});}};}function handleEntityNotFound(_0x62f65f){return function(_0x5777d9){if(!_0x5777d9){_0x62f65f[_0x9022('0x1d')](0x194);}return _0x5777d9;};}function handleError(_0x90b69e,_0x3093b7){_0x3093b7=_0x3093b7||0x1f4;return function(_0x59c394){logger[_0x9022('0x1e')](_0x59c394[_0x9022('0x1f')]);if(_0x59c394[_0x9022('0x20')]){delete _0x59c394[_0x9022('0x20')];}_0x90b69e[_0x9022('0xc')](_0x3093b7)[_0x9022('0x21')](_0x59c394);};}exports[_0x9022('0x22')]=function(_0x2ddf07,_0x1eee4f){var _0x501f69={},_0x278434={},_0x4cf1e9={'count':0x0,'rows':[]};var _0x3fd73e=_[_0x9022('0x23')](db[_0x9022('0x24')][_0x9022('0x25')],function(_0x48defd){return{'name':_0x48defd['fieldName'],'type':_0x48defd[_0x9022('0x26')][_0x9022('0x27')]};});_0x278434['model']=_[_0x9022('0x23')](_0x3fd73e,_0x9022('0x20'));_0x278434[_0x9022('0x28')]=_[_0x9022('0x29')](_0x2ddf07[_0x9022('0x28')]);_0x278434[_0x9022('0x2a')]=_['intersection'](_0x278434[_0x9022('0x2b')],_0x278434[_0x9022('0x28')]);_0x501f69[_0x9022('0x2c')]=_[_0x9022('0x2d')](_0x278434[_0x9022('0x2b')],qs['fields'](_0x2ddf07['query']['fields']));_0x501f69[_0x9022('0x2c')]=_0x501f69[_0x9022('0x2c')][_0x9022('0x2e')]?_0x501f69[_0x9022('0x2c')]:_0x278434[_0x9022('0x2b')];if(!_0x2ddf07[_0x9022('0x28')][_0x9022('0x2f')]('nolimit')){_0x501f69[_0x9022('0xe')]=qs[_0x9022('0xe')](_0x2ddf07[_0x9022('0x28')][_0x9022('0xe')]);_0x501f69['offset']=qs[_0x9022('0xf')](_0x2ddf07['query']['offset']);}_0x501f69[_0x9022('0x30')]=qs[_0x9022('0x31')](_0x2ddf07['query'][_0x9022('0x31')]);_0x501f69['where']=qs[_0x9022('0x2a')](_[_0x9022('0x32')](_0x2ddf07[_0x9022('0x28')],_0x278434[_0x9022('0x2a')]),_0x3fd73e);if(_0x2ddf07[_0x9022('0x28')][_0x9022('0x33')]){_0x501f69['where']=_[_0x9022('0x34')](_0x501f69[_0x9022('0x35')],{'$or':_['map'](_0x3fd73e,function(_0x2cbcc9){if(_0x2cbcc9[_0x9022('0x26')]!==_0x9022('0x36')){var _0x57d7b1={};_0x57d7b1[_0x2cbcc9[_0x9022('0x20')]]={'$like':'%'+_0x2ddf07[_0x9022('0x28')][_0x9022('0x33')]+'%'};return _0x57d7b1;}})});}_0x501f69=_[_0x9022('0x34')]({},_0x501f69,_0x2ddf07[_0x9022('0x37')]);var _0x51a659={'where':_0x501f69['where']};return db[_0x9022('0x24')][_0x9022('0x10')](_0x51a659)[_0x9022('0x15')](function(_0xb677b){_0x4cf1e9[_0x9022('0x10')]=_0xb677b;if(_0x2ddf07[_0x9022('0x28')][_0x9022('0x38')]){_0x501f69['include']=[{'all':!![]}];}return db[_0x9022('0x24')][_0x9022('0x39')](_0x501f69);})['then'](function(_0x308da5){_0x4cf1e9[_0x9022('0x3a')]=_0x308da5;return _0x4cf1e9;})[_0x9022('0x15')](respondWithFilteredResult(_0x1eee4f,_0x501f69))[_0x9022('0x3b')](handleError(_0x1eee4f,null));};exports[_0x9022('0x3c')]=function(_0x426c1e,_0x3cc633){var _0x5ac03c={'raw':![],'where':{'id':_0x426c1e[_0x9022('0x3d')]['id']}},_0x5eb47d={};_0x5eb47d['model']=_[_0x9022('0x29')](db[_0x9022('0x24')]['rawAttributes']);_0x5eb47d[_0x9022('0x28')]=_[_0x9022('0x29')](_0x426c1e[_0x9022('0x28')]);_0x5eb47d['filters']=_[_0x9022('0x2d')](_0x5eb47d['model'],_0x5eb47d['query']);_0x5ac03c['attributes']=_['intersection'](_0x5eb47d[_0x9022('0x2b')],qs[_0x9022('0x3e')](_0x426c1e[_0x9022('0x28')][_0x9022('0x3e')]));_0x5ac03c[_0x9022('0x2c')]=_0x5ac03c[_0x9022('0x2c')][_0x9022('0x2e')]?_0x5ac03c[_0x9022('0x2c')]:_0x5eb47d['model'];if(_0x426c1e[_0x9022('0x28')][_0x9022('0x38')]){_0x5ac03c[_0x9022('0x3f')]=[{'all':!![]}];}_0x5ac03c=_[_0x9022('0x34')]({},_0x5ac03c,_0x426c1e['options']);return db['SquareProject'][_0x9022('0x40')](_0x5ac03c)[_0x9022('0x15')](handleEntityNotFound(_0x3cc633,null))['then'](respondWithResult(_0x3cc633,null))[_0x9022('0x3b')](handleError(_0x3cc633,null));};exports[_0x9022('0x41')]=function(_0x32ad12,_0x2dcd64){return db[_0x9022('0x24')][_0x9022('0x41')](_0x32ad12['body'],{})['then'](function(_0x22bb9e){var _0x1c82fd=_0x32ad12[_0x9022('0x42')][_0x9022('0x43')]({'plain':!![]});if(!_0x1c82fd)throw new Error(_0x9022('0x44'));if(_0x1c82fd[_0x9022('0x45')]===_0x9022('0x42')){var _0x15df3c=_0x22bb9e[_0x9022('0x43')]({'plain':!![]});var _0xff23e2=_0x9022('0x17');return db[_0x9022('0x46')]['find']({'where':{'name':_0xff23e2,'userProfileId':_0x1c82fd[_0x9022('0x47')]},'raw':!![]})['then'](function(_0x3ee0bc){if(_0x3ee0bc&&_0x3ee0bc[_0x9022('0x48')]===0x0){return db[_0x9022('0x18')][_0x9022('0x41')]({'name':_0x15df3c[_0x9022('0x20')],'resourceId':_0x15df3c['id'],'type':_0x3ee0bc['name'],'sectionId':_0x3ee0bc['id']},{})[_0x9022('0x15')](function(){return _0x22bb9e;});}else{return _0x22bb9e;}})[_0x9022('0x3b')](function(_0x2ff501){logger[_0x9022('0x1e')](_0x9022('0x49'),_0x2ff501);throw _0x2ff501;});}return _0x22bb9e;})[_0x9022('0x15')](respondWithResult(_0x2dcd64,0xc9))[_0x9022('0x3b')](handleError(_0x2dcd64,null));};exports[_0x9022('0x14')]=function(_0x37b2a2,_0x380656){if(_0x37b2a2[_0x9022('0x4a')]['id']){delete _0x37b2a2[_0x9022('0x4a')]['id'];}return db[_0x9022('0x24')][_0x9022('0x40')]({'where':{'id':_0x37b2a2['params']['id']}})[_0x9022('0x15')](handleEntityNotFound(_0x380656,null))[_0x9022('0x15')](saveUpdates(_0x37b2a2[_0x9022('0x4a')],null))[_0x9022('0x15')](function(_0xed0121){if(!_0xed0121)return;var _0x1e86b1=_0xed0121[_0x9022('0x43')]({'plain':!![]});return _0x1e86b1;})['then'](function(_0x4f5e7f){var _0x5425ab=new Redis(config[_0x9022('0x6')]);_0x5425ab[_0x9022('0x19')](_0x9022('0x1a'),JSON[_0x9022('0x1b')](_[_0x9022('0x32')](_0x4f5e7f,['id',_0x9022('0x20'),_0x9022('0x4b')])));return _0x4f5e7f;})[_0x9022('0x15')](respondWithResult(_0x380656,null))['catch'](handleError(_0x380656,null));};exports['destroy']=function(_0x2e7299,_0x337189){return db[_0x9022('0x24')][_0x9022('0x40')]({'where':{'id':_0x2e7299[_0x9022('0x3d')]['id']}})[_0x9022('0x15')](handleEntityNotFound(_0x337189,null))[_0x9022('0x15')](removeEntity(_0x337189,null))[_0x9022('0x3b')](handleError(_0x337189,null));};
\ No newline at end of file
index 475f505..60412a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0345=['update','remove','exports','events','../../mysqldb','SquareProject','setMaxListeners'];(function(_0x208423,_0x4e1745){var _0x1fba5d=function(_0x585aca){while(--_0x585aca){_0x208423['push'](_0x208423['shift']());}};_0x1fba5d(++_0x4e1745);}(_0x0345,0x168));var _0x5034=function(_0x2c7eda,_0x440c51){_0x2c7eda=_0x2c7eda-0x0;var _0x15839c=_0x0345[_0x2c7eda];return _0x15839c;};'use strict';var EventEmitter=require(_0x5034('0x0'));var SquareProject=require(_0x5034('0x1'))['db'][_0x5034('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x5034('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5034('0x4'),'afterDestroy':_0x5034('0x5')};function emitEvent(_0x4c2559){return function(_0x200b66,_0xfca532,_0x24eae9){SquareProjectEvents['emit'](_0x4c2559+':'+_0x200b66['id'],_0x200b66);SquareProjectEvents['emit'](_0x4c2559,_0x200b66);_0x24eae9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x5034('0x6')]=SquareProjectEvents;
\ No newline at end of file
+var _0xc78c=['../../mysqldb','SquareProject','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x257b9a,_0x140698){var _0x767e97=function(_0x549e7b){while(--_0x549e7b){_0x257b9a['push'](_0x257b9a['shift']());}};_0x767e97(++_0x140698);}(_0xc78c,0x18f));var _0xcc78=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc78c[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require(_0xcc78('0x0'));var SquareProject=require(_0xcc78('0x1'))['db'][_0xcc78('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xcc78('0x3')](0x0);var events={'afterCreate':_0xcc78('0x4'),'afterUpdate':_0xcc78('0x5'),'afterDestroy':'remove'};function emitEvent(_0x351c4c){return function(_0x1e9609,_0x2de93f,_0xe3e345){SquareProjectEvents[_0xcc78('0x6')](_0x351c4c+':'+_0x1e9609['id'],_0x1e9609);SquareProjectEvents[_0xcc78('0x6')](_0x351c4c,_0x1e9609);_0xe3e345(null);};}for(var e in events){if(events[_0xcc78('0x7')](e)){var event=events[e];SquareProject[_0xcc78('0x8')](e,emitEvent(event));}}module[_0xcc78('0x9')]=SquareProjectEvents;
\ No newline at end of file
index 658b6a9..32ac748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c9f=['YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','format','production','publishedAt'];(function(_0x1b674c,_0x3f2397){var _0x21ae00=function(_0x3b16e3){while(--_0x3b16e3){_0x1b674c['push'](_0x1b674c['shift']());}};_0x21ae00(++_0x3f2397);}(_0x8c9f,0x1d5));var _0xf8c9=function(_0x3b2c58,_0x22f82a){_0x3b2c58=_0x3b2c58-0x0;var _0x365939=_0x8c9f[_0x3b2c58];return _0x365939;};'use strict';var _=require('lodash');var util=require(_0xf8c9('0x0'));var logger=require(_0xf8c9('0x1'))(_0xf8c9('0x2'));var moment=require(_0xf8c9('0x3'));var BPromise=require(_0xf8c9('0x4'));var rp=require(_0xf8c9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8c9('0x6'));var config=require(_0xf8c9('0x7'));var attributes=require(_0xf8c9('0x8'));module[_0xf8c9('0x9')]=function(_0x1b77d6,_0x55eb6c){return _0x1b77d6['define'](_0xf8c9('0xa'),attributes,{'tableName':_0xf8c9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4d14aa,_0x896d49,_0x42185e){if(_0x4d14aa[_0xf8c9('0xc')](_0xf8c9('0xd'))){_0x4d14aa['savedAt']=moment()[_0xf8c9('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x4d14aa[_0xf8c9('0xc')](_0xf8c9('0xf'))){_0x4d14aa[_0xf8c9('0x10')]=moment()[_0xf8c9('0xe')](_0xf8c9('0x11'));}_0x42185e(null,_0x4d14aa);}}});};
\ No newline at end of file
+var _0x623e=['production','publishedAt','lodash','../../config/logger','api','moment','bluebird','request-promise','./squareProject.attributes','exports','square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xf58e76,_0x1e1c60){var _0x293543=function(_0x587b80){while(--_0x587b80){_0xf58e76['push'](_0xf58e76['shift']());}};_0x293543(++_0x1e1c60);}(_0x623e,0x182));var _0xe623=function(_0x478349,_0x4e11b2){_0x478349=_0x478349-0x0;var _0x564ad3=_0x623e[_0x478349];return _0x564ad3;};'use strict';var _=require(_0xe623('0x0'));var util=require('util');var logger=require(_0xe623('0x1'))(_0xe623('0x2'));var moment=require(_0xe623('0x3'));var BPromise=require(_0xe623('0x4'));var rp=require(_0xe623('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe623('0x6'));module[_0xe623('0x7')]=function(_0x54c908,_0x2844fb){return _0x54c908['define']('SquareProject',attributes,{'tableName':_0xe623('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xeb9cf0,_0x4602cf,_0x35745f){if(_0xeb9cf0[_0xe623('0x9')](_0xe623('0xa'))){_0xeb9cf0[_0xe623('0xb')]=moment()[_0xe623('0xc')](_0xe623('0xd'));}if(_0xeb9cf0['changed'](_0xe623('0xe'))){_0xeb9cf0[_0xe623('0xf')]=moment()[_0xe623('0xc')](_0xe623('0xd'));}_0x35745f(null,_0xeb9cf0);}}});};
\ No newline at end of file
index 95cf0e9..a5461d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17f=['GetSquareProjects','SquareProject','findAll','options','raw','where','limit','include','map','model','attributes','then','stringify','message','error','ShowSquareProject','find','info','catch','../../mysqldb','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket'];(function(_0x5669b5,_0x3f8d77){var _0x265ffb=function(_0x58faca){while(--_0x58faca){_0x5669b5['push'](_0x5669b5['shift']());}};_0x265ffb(++_0x3f8d77);}(_0xc17f,0x106));var _0xfc17=function(_0x32032a,_0x24e8d1){_0x32032a=_0x32032a-0x0;var _0x5d5792=_0xc17f[_0x32032a];return _0x5d5792;};'use strict';var _=require('lodash');var Redis=require('ioredis');var db=require(_0xfc17('0x0'))['db'];var logger=require(_0xfc17('0x1'))('rpc');var config=require(_0xfc17('0x2'));config[_0xfc17('0x3')]=_[_0xfc17('0x4')](config[_0xfc17('0x3')],{'host':_0xfc17('0x5'),'port':0x18eb});var socket=require(_0xfc17('0x6'))(new Redis(config[_0xfc17('0x3')]));require(_0xfc17('0x7'))['register'](socket);exports[_0xfc17('0x8')]=function(_0x3ea821){var _0x2ce98c=this;return new Promise(function(_0x1b819b,_0x540da5){return db[_0xfc17('0x9')][_0xfc17('0xa')]({'raw':_0x3ea821[_0xfc17('0xb')]?_0x3ea821[_0xfc17('0xb')][_0xfc17('0xc')]===undefined?!![]:![]:!![],'where':_0x3ea821[_0xfc17('0xb')]?_0x3ea821[_0xfc17('0xb')][_0xfc17('0xd')]||null:null,'attributes':_0x3ea821[_0xfc17('0xb')]?_0x3ea821[_0xfc17('0xb')]['attributes']||null:null,'limit':_0x3ea821[_0xfc17('0xb')]?_0x3ea821[_0xfc17('0xb')][_0xfc17('0xe')]||null:null,'include':_0x3ea821[_0xfc17('0xb')]?_0x3ea821[_0xfc17('0xb')][_0xfc17('0xf')]?_[_0xfc17('0x10')](_0x3ea821['options'][_0xfc17('0xf')],function(_0x2f5df9){return{'model':db[_0x2f5df9[_0xfc17('0x11')]],'as':_0x2f5df9['as'],'attributes':_0x2f5df9[_0xfc17('0x12')],'include':_0x2f5df9[_0xfc17('0xf')]?_[_0xfc17('0x10')](_0x2f5df9[_0xfc17('0xf')],function(_0x9d6d41){return{'model':db[_0x9d6d41[_0xfc17('0x11')]],'as':_0x9d6d41['as'],'attributes':_0x9d6d41[_0xfc17('0x12')],'include':_0x9d6d41[_0xfc17('0xf')]?_[_0xfc17('0x10')](_0x9d6d41[_0xfc17('0xf')],function(_0x244da4){return{'model':db[_0x244da4[_0xfc17('0x11')]],'as':_0x244da4['as'],'attributes':_0x244da4[_0xfc17('0x12')]};}):[]};}):[]};}):[]:[]})[_0xfc17('0x13')](function(_0x9216de){logger['info'](_0xfc17('0x8'),_0x3ea821);logger['debug']('GetSquareProjects',_0x3ea821,JSON[_0xfc17('0x14')](_0x9216de));_0x1b819b(_0x9216de);})['catch'](function(_0x2e9afd){logger['error'](_0xfc17('0x8'),_0x2e9afd[_0xfc17('0x15')],_0x3ea821);_0x540da5(_0x2ce98c[_0xfc17('0x16')](0x1f4,_0x2e9afd[_0xfc17('0x15')]));});});};exports[_0xfc17('0x17')]=function(_0x411f3e){var _0x57c076=this;return new Promise(function(_0x5ee6e5,_0x509297){return db[_0xfc17('0x9')][_0xfc17('0x18')]({'raw':_0x411f3e[_0xfc17('0xb')]?_0x411f3e['options'][_0xfc17('0xc')]===undefined?!![]:![]:!![],'where':_0x411f3e[_0xfc17('0xb')]?_0x411f3e[_0xfc17('0xb')][_0xfc17('0xd')]||null:null,'attributes':_0x411f3e[_0xfc17('0xb')]?_0x411f3e['options'][_0xfc17('0x12')]||null:null,'include':_0x411f3e[_0xfc17('0xb')]?_0x411f3e[_0xfc17('0xb')]['include']?_['map'](_0x411f3e[_0xfc17('0xb')][_0xfc17('0xf')],function(_0x91d6cc){return{'model':db[_0x91d6cc['model']],'as':_0x91d6cc['as'],'attributes':_0x91d6cc[_0xfc17('0x12')],'include':_0x91d6cc[_0xfc17('0xf')]?_['map'](_0x91d6cc[_0xfc17('0xf')],function(_0x435497){return{'model':db[_0x435497['model']],'as':_0x435497['as'],'attributes':_0x435497['attributes'],'include':_0x435497[_0xfc17('0xf')]?_['map'](_0x435497[_0xfc17('0xf')],function(_0x2d3a93){return{'model':db[_0x2d3a93['model']],'as':_0x2d3a93['as'],'attributes':_0x2d3a93[_0xfc17('0x12')]};}):[]};}):[]};}):[]:[]})[_0xfc17('0x13')](function(_0x336cbf){logger[_0xfc17('0x19')](_0xfc17('0x17'),_0x411f3e);logger['debug'](_0xfc17('0x17'),_0x411f3e,JSON[_0xfc17('0x14')](_0x336cbf));_0x5ee6e5(_0x336cbf);})[_0xfc17('0x1a')](function(_0x35c4a9){logger['error'](_0xfc17('0x17'),_0x35c4a9[_0xfc17('0x15')],_0x411f3e);_0x509297(_0x57c076[_0xfc17('0x16')](0x1f4,_0x35c4a9[_0xfc17('0x15')]));});});};
\ No newline at end of file
+var _0x4b3b=['stringify','error','ShowSquareProject','find','where','message','lodash','ioredis','../../config/logger','rpc','redis','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','raw','attributes','limit','include','map','model','then','info','debug'];(function(_0x536acc,_0x1835dd){var _0x185c31=function(_0x1c2f9e){while(--_0x1c2f9e){_0x536acc['push'](_0x536acc['shift']());}};_0x185c31(++_0x1835dd);}(_0x4b3b,0x13a));var _0xb4b3=function(_0x18ac2b,_0x686f94){_0x18ac2b=_0x18ac2b-0x0;var _0xb20a40=_0x4b3b[_0x18ac2b];return _0xb20a40;};'use strict';var _=require(_0xb4b3('0x0'));var Redis=require(_0xb4b3('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0xb4b3('0x2'))(_0xb4b3('0x3'));var config=require('../../config/environment');config[_0xb4b3('0x4')]=_['defaults'](config[_0xb4b3('0x4')],{'host':_0xb4b3('0x5'),'port':0x18eb});var socket=require(_0xb4b3('0x6'))(new Redis(config[_0xb4b3('0x4')]));require(_0xb4b3('0x7'))[_0xb4b3('0x8')](socket);exports[_0xb4b3('0x9')]=function(_0x183d6e){var _0x14f6ea=this;return new Promise(function(_0x4d381f,_0x2fc3e0){return db[_0xb4b3('0xa')][_0xb4b3('0xb')]({'raw':_0x183d6e[_0xb4b3('0xc')]?_0x183d6e[_0xb4b3('0xc')][_0xb4b3('0xd')]===undefined?!![]:![]:!![],'where':_0x183d6e[_0xb4b3('0xc')]?_0x183d6e[_0xb4b3('0xc')]['where']||null:null,'attributes':_0x183d6e[_0xb4b3('0xc')]?_0x183d6e[_0xb4b3('0xc')][_0xb4b3('0xe')]||null:null,'limit':_0x183d6e[_0xb4b3('0xc')]?_0x183d6e[_0xb4b3('0xc')][_0xb4b3('0xf')]||null:null,'include':_0x183d6e[_0xb4b3('0xc')]?_0x183d6e[_0xb4b3('0xc')][_0xb4b3('0x10')]?_[_0xb4b3('0x11')](_0x183d6e['options'][_0xb4b3('0x10')],function(_0x24c9aa){return{'model':db[_0x24c9aa['model']],'as':_0x24c9aa['as'],'attributes':_0x24c9aa['attributes'],'include':_0x24c9aa[_0xb4b3('0x10')]?_['map'](_0x24c9aa[_0xb4b3('0x10')],function(_0xb04879){return{'model':db[_0xb04879[_0xb4b3('0x12')]],'as':_0xb04879['as'],'attributes':_0xb04879[_0xb4b3('0xe')],'include':_0xb04879[_0xb4b3('0x10')]?_[_0xb4b3('0x11')](_0xb04879['include'],function(_0x1219d6){return{'model':db[_0x1219d6[_0xb4b3('0x12')]],'as':_0x1219d6['as'],'attributes':_0x1219d6['attributes']};}):[]};}):[]};}):[]:[]})[_0xb4b3('0x13')](function(_0x2553f2){logger[_0xb4b3('0x14')](_0xb4b3('0x9'),_0x183d6e);logger[_0xb4b3('0x15')]('GetSquareProjects',_0x183d6e,JSON[_0xb4b3('0x16')](_0x2553f2));_0x4d381f(_0x2553f2);})['catch'](function(_0x3f1815){logger['error'](_0xb4b3('0x9'),_0x3f1815['message'],_0x183d6e);_0x2fc3e0(_0x14f6ea[_0xb4b3('0x17')](0x1f4,_0x3f1815['message']));});});};exports[_0xb4b3('0x18')]=function(_0x2e83a7){var _0x13ae35=this;return new Promise(function(_0x1a9751,_0x5acbd4){return db[_0xb4b3('0xa')][_0xb4b3('0x19')]({'raw':_0x2e83a7[_0xb4b3('0xc')]?_0x2e83a7[_0xb4b3('0xc')][_0xb4b3('0xd')]===undefined?!![]:![]:!![],'where':_0x2e83a7[_0xb4b3('0xc')]?_0x2e83a7[_0xb4b3('0xc')][_0xb4b3('0x1a')]||null:null,'attributes':_0x2e83a7[_0xb4b3('0xc')]?_0x2e83a7[_0xb4b3('0xc')][_0xb4b3('0xe')]||null:null,'include':_0x2e83a7[_0xb4b3('0xc')]?_0x2e83a7[_0xb4b3('0xc')][_0xb4b3('0x10')]?_[_0xb4b3('0x11')](_0x2e83a7[_0xb4b3('0xc')]['include'],function(_0x56e10d){return{'model':db[_0x56e10d['model']],'as':_0x56e10d['as'],'attributes':_0x56e10d['attributes'],'include':_0x56e10d[_0xb4b3('0x10')]?_[_0xb4b3('0x11')](_0x56e10d[_0xb4b3('0x10')],function(_0x2c6f83){return{'model':db[_0x2c6f83[_0xb4b3('0x12')]],'as':_0x2c6f83['as'],'attributes':_0x2c6f83[_0xb4b3('0xe')],'include':_0x2c6f83[_0xb4b3('0x10')]?_[_0xb4b3('0x11')](_0x2c6f83[_0xb4b3('0x10')],function(_0x4c2428){return{'model':db[_0x4c2428['model']],'as':_0x4c2428['as'],'attributes':_0x4c2428[_0xb4b3('0xe')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ca7d0){logger[_0xb4b3('0x14')](_0xb4b3('0x18'),_0x2e83a7);logger['debug']('ShowSquareProject',_0x2e83a7,JSON[_0xb4b3('0x16')](_0x1ca7d0));_0x1a9751(_0x1ca7d0);})['catch'](function(_0x5e2dfc){logger[_0xb4b3('0x17')](_0xb4b3('0x18'),_0x5e2dfc[_0xb4b3('0x1b')],_0x2e83a7);_0x5acbd4(_0x13ae35[_0xb4b3('0x17')](0x1f4,_0x5e2dfc[_0xb4b3('0x1b')]));});});};
\ No newline at end of file
index a4e1f62..994b598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x384b=['update','emit','register','length','squareProject:','./squareProject.events','save','remove'];(function(_0x357f00,_0x1e8454){var _0x450b67=function(_0x48ee57){while(--_0x48ee57){_0x357f00['push'](_0x357f00['shift']());}};_0x450b67(++_0x1e8454);}(_0x384b,0x1d5));var _0xb384=function(_0x5bd729,_0x15805f){_0x5bd729=_0x5bd729-0x0;var _0x1a1537=_0x384b[_0x5bd729];return _0x1a1537;};'use strict';var SquareProjectEvents=require(_0xb384('0x0'));var events=[_0xb384('0x1'),_0xb384('0x2'),_0xb384('0x3')];function createListener(_0x40d6a8,_0x31a8da){return function(_0xb5b425){_0x31a8da[_0xb384('0x4')](_0x40d6a8,_0xb5b425);};}function removeListener(_0x2298a3,_0x4eb47d){return function(){SquareProjectEvents['removeListener'](_0x2298a3,_0x4eb47d);};}exports[_0xb384('0x5')]=function(_0x32fa13){for(var _0x39154c=0x0,_0x172ff3=events[_0xb384('0x6')];_0x39154c<_0x172ff3;_0x39154c++){var _0x22a8cb=events[_0x39154c];var _0x43cc05=createListener(_0xb384('0x7')+_0x22a8cb,_0x32fa13);SquareProjectEvents['on'](_0x22a8cb,_0x43cc05);}};
\ No newline at end of file
+var _0xa68b=['./squareProject.events','save','remove','emit','register','squareProject:'];(function(_0x582e30,_0x43f8b3){var _0x4a4af4=function(_0x45811f){while(--_0x45811f){_0x582e30['push'](_0x582e30['shift']());}};_0x4a4af4(++_0x43f8b3);}(_0xa68b,0xcc));var _0xba68=function(_0x368bba,_0x1f625b){_0x368bba=_0x368bba-0x0;var _0x409f8f=_0xa68b[_0x368bba];return _0x409f8f;};'use strict';var SquareProjectEvents=require(_0xba68('0x0'));var events=[_0xba68('0x1'),_0xba68('0x2'),'update'];function createListener(_0x59924c,_0x28079d){return function(_0x452280){_0x28079d[_0xba68('0x3')](_0x59924c,_0x452280);};}function removeListener(_0x55d2b7,_0x2aeb75){return function(){SquareProjectEvents['removeListener'](_0x55d2b7,_0x2aeb75);};}exports[_0xba68('0x4')]=function(_0x4c5bb2){for(var _0x54f882=0x0,_0x315faf=events['length'];_0x54f882<_0x315faf;_0x54f882++){var _0x295eda=events[_0x54f882];var _0x1b0fa0=createListener(_0xba68('0x5')+_0x295eda,_0x4c5bb2);SquareProjectEvents['on'](_0x295eda,_0x1b0fa0);}};
\ No newline at end of file
index f9e48df..474bd16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x2b0bec,_0xf00a20){var _0x3baaa0=function(_0x2dad20){while(--_0x2dad20){_0x2b0bec['push'](_0x2b0bec['shift']());}};_0x3baaa0(++_0xf00a20);}(_0xe14b,0x93));var _0xbe14=function(_0x2aec1f,_0x234d35){_0x2aec1f=_0x2aec1f-0x0;var _0x20c0e2=_0xe14b[_0x2aec1f];return _0x20c0e2;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
+var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put'];(function(_0x4c9880,_0x2eec49){var _0x55a72=function(_0x2a9cb3){while(--_0x2a9cb3){_0x4c9880['push'](_0x4c9880['shift']());}};_0x55a72(++_0x2eec49);}(_0x1cb9,0x14e));var _0x91cb=function(_0x46747a,_0x487de3){_0x46747a=_0x46747a-0x0;var _0x455eb4=_0x1cb9[_0x46747a];return _0x455eb4;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0xf')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x11')](_0x91cb('0xb'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
index c98bdbc..3b85bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['STRING','VIRTUAL','savePath','lastIndexOf','sequelize','exports'];(function(_0x46bd99,_0x25c97d){var _0x51903b=function(_0x190f06){while(--_0x190f06){_0x46bd99['push'](_0x46bd99['shift']());}};_0x51903b(++_0x25c97d);}(_0xac31,0xca));var _0x1ac3=function(_0x170d15,_0x5d1bee){_0x170d15=_0x170d15-0x0;var _0xc385f7=_0xac31[_0x170d15];return _0xc385f7;};'use strict';var Sequelize=require(_0x1ac3('0x0'));module[_0x1ac3('0x1')]={'uniqueid':{'type':Sequelize[_0x1ac3('0x2')]},'callerid':{'type':Sequelize[_0x1ac3('0x2')]},'calleridname':{'type':Sequelize[_0x1ac3('0x2')]},'context':{'type':Sequelize[_0x1ac3('0x2')]},'extension':{'type':Sequelize[_0x1ac3('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x1ac3('0x2')]},'dnid':{'type':Sequelize[_0x1ac3('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x1ac3('0x2')]},'savePath':{'type':Sequelize[_0x1ac3('0x2')]},'format':{'type':Sequelize[_0x1ac3('0x3')],'get':function(){var _0x1be223='';var _0x157604=this['getDataValue'](_0x1ac3('0x4'));if(_0x157604){_0x1be223=_0x157604['substring'](_0x157604[_0x1ac3('0x5')]('.'));}return _0x1be223;}}};
\ No newline at end of file
+var _0x6f47=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue'];(function(_0x4f3d0c,_0x787b1){var _0x32f4c1=function(_0xaa4523){while(--_0xaa4523){_0x4f3d0c['push'](_0x4f3d0c['shift']());}};_0x32f4c1(++_0x787b1);}(_0x6f47,0xc7));var _0x76f4=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x6f47[_0x126558];return _0x1f6d14;};'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
index 4018fc5..284f0d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bf3=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','update','then','sendStatus','error','name','send','index','map','SquareRecording','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','keys','create','body','find','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','download','unlink','SquareRecording\x20not\x20found','destroy','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','request-promise','moment','bluebird','mustache','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x2dad1e,_0x76ebd3){var _0x10125b=function(_0xa01038){while(--_0xa01038){_0x2dad1e['push'](_0x2dad1e['shift']());}};_0x10125b(++_0x76ebd3);}(_0x4bf3,0x15c));var _0x34bf=function(_0x4a873a,_0x1b653c){_0x4a873a=_0x4a873a-0x0;var _0x19eef1=_0x4bf3[_0x4a873a];return _0x19eef1;};'use strict';var emlformat=require(_0x34bf('0x0'));var rimraf=require(_0x34bf('0x1'));var zipdir=require(_0x34bf('0x2'));var jsonpatch=require(_0x34bf('0x3'));var rp=require(_0x34bf('0x4'));var moment=require(_0x34bf('0x5'));var BPromise=require(_0x34bf('0x6'));var Mustache=require(_0x34bf('0x7'));var util=require('util');var path=require('path');var sox=require(_0x34bf('0x8'));var csv=require(_0x34bf('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34bf('0xa'));var squel=require(_0x34bf('0xb'));var crypto=require(_0x34bf('0xc'));var jsforce=require(_0x34bf('0xd'));var deskjs=require(_0x34bf('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x34bf('0xf'));var Redis=require(_0x34bf('0x10'));var authService=require(_0x34bf('0x11'));var qs=require(_0x34bf('0x12'));var as=require(_0x34bf('0x13'));var hardwareService=require(_0x34bf('0x14'));var logger=require(_0x34bf('0x15'))(_0x34bf('0x16'));var utils=require('../../config/utils');var config=require(_0x34bf('0x17'));var licenseUtil=require(_0x34bf('0x18'));var db=require(_0x34bf('0x19'))['db'];function respondWithStatusCode(_0x5dbde4,_0x46c882){_0x46c882=_0x46c882||0xcc;return function(_0x40f3cf){if(_0x40f3cf){return _0x5dbde4['sendStatus'](_0x46c882);}return _0x5dbde4[_0x34bf('0x1a')](_0x46c882)[_0x34bf('0x1b')]();};}function respondWithResult(_0x53b73e,_0x5cd17e){_0x5cd17e=_0x5cd17e||0xc8;return function(_0x3131e8){if(_0x3131e8){return _0x53b73e[_0x34bf('0x1a')](_0x5cd17e)[_0x34bf('0x1c')](_0x3131e8);}};}function respondWithFilteredResult(_0x51bff9,_0x580c8c){return function(_0x3cb089){if(_0x3cb089){var _0x1f9787=typeof _0x580c8c[_0x34bf('0x1d')]===_0x34bf('0x1e')&&typeof _0x580c8c['limit']==='undefined';var _0x2ba78b=_0x3cb089['count'];var _0x583103=_0x1f9787?0x0:_0x580c8c[_0x34bf('0x1d')];var _0x3d8a72=_0x1f9787?_0x3cb089[_0x34bf('0x1f')]:_0x580c8c[_0x34bf('0x1d')]+_0x580c8c['limit'];var _0x70c0b7;if(_0x3d8a72>=_0x2ba78b){_0x3d8a72=_0x2ba78b;_0x70c0b7=0xc8;}else{_0x70c0b7=0xce;}_0x51bff9['status'](_0x70c0b7);return _0x51bff9[_0x34bf('0x20')](_0x34bf('0x21'),_0x583103+'-'+_0x3d8a72+'/'+_0x2ba78b)[_0x34bf('0x1c')](_0x3cb089);}return null;};}function patchUpdates(_0x59a910){return function(_0x511e86){try{jsonpatch[_0x34bf('0x22')](_0x511e86,_0x59a910,!![]);}catch(_0x31bd3c){return BPromise['reject'](_0x31bd3c);}return _0x511e86['save']();};}function saveUpdates(_0x372bb3,_0x3bdf98){return function(_0x9114bc){if(_0x9114bc){return _0x9114bc[_0x34bf('0x23')](_0x372bb3)[_0x34bf('0x24')](function(_0x5bf5a9){return _0x5bf5a9;});}return null;};}function removeEntity(_0x40f879,_0x39d8a7){return function(_0x342413){if(_0x342413){return _0x342413['destroy']()[_0x34bf('0x24')](function(){_0x40f879[_0x34bf('0x1a')](0xcc)[_0x34bf('0x1b')]();});}};}function handleEntityNotFound(_0x5ae95e,_0x4b2bb9){return function(_0x7eebf){if(!_0x7eebf){_0x5ae95e[_0x34bf('0x25')](0x194);}return _0x7eebf;};}function handleError(_0x38dd22,_0x53639e){_0x53639e=_0x53639e||0x1f4;return function(_0x20140f){logger[_0x34bf('0x26')](_0x20140f['stack']);if(_0x20140f[_0x34bf('0x27')]){delete _0x20140f[_0x34bf('0x27')];}_0x38dd22[_0x34bf('0x1a')](_0x53639e)[_0x34bf('0x28')](_0x20140f);};}exports[_0x34bf('0x29')]=function(_0x219e27,_0x357c36){var _0x1ffc07={},_0x33f00c={},_0x518c95={'count':0x0,'rows':[]};var _0x32c580=_[_0x34bf('0x2a')](db[_0x34bf('0x2b')][_0x34bf('0x2c')],function(_0x836069){return{'name':_0x836069['fieldName'],'type':_0x836069[_0x34bf('0x2d')]['key']};});_0x33f00c[_0x34bf('0x2e')]=_[_0x34bf('0x2a')](_0x32c580,_0x34bf('0x27'));_0x33f00c[_0x34bf('0x2f')]=_['keys'](_0x219e27[_0x34bf('0x2f')]);_0x33f00c[_0x34bf('0x30')]=_[_0x34bf('0x31')](_0x33f00c['model'],_0x33f00c[_0x34bf('0x2f')]);_0x1ffc07[_0x34bf('0x32')]=_[_0x34bf('0x31')](_0x33f00c['model'],qs[_0x34bf('0x33')](_0x219e27[_0x34bf('0x2f')]['fields']));_0x1ffc07[_0x34bf('0x32')]=_0x1ffc07['attributes'][_0x34bf('0x34')]?_0x1ffc07['attributes']:_0x33f00c[_0x34bf('0x2e')];if(!_0x219e27[_0x34bf('0x2f')]['hasOwnProperty'](_0x34bf('0x35'))){_0x1ffc07['limit']=qs[_0x34bf('0x36')](_0x219e27[_0x34bf('0x2f')][_0x34bf('0x36')]);_0x1ffc07['offset']=qs[_0x34bf('0x1d')](_0x219e27[_0x34bf('0x2f')][_0x34bf('0x1d')]);}_0x1ffc07['order']=qs[_0x34bf('0x37')](_0x219e27[_0x34bf('0x2f')][_0x34bf('0x37')]);_0x1ffc07[_0x34bf('0x38')]=qs[_0x34bf('0x30')](_[_0x34bf('0x39')](_0x219e27[_0x34bf('0x2f')],_0x33f00c[_0x34bf('0x30')]),_0x32c580);if(_0x219e27[_0x34bf('0x2f')][_0x34bf('0x3a')]){_0x1ffc07[_0x34bf('0x38')]=_['merge'](_0x1ffc07[_0x34bf('0x38')],{'$or':_['map'](_0x32c580,function(_0x30e49d){if(_0x30e49d[_0x34bf('0x2d')]!=='VIRTUAL'){var _0x13984b={};_0x13984b[_0x30e49d[_0x34bf('0x27')]]={'$like':'%'+_0x219e27[_0x34bf('0x2f')][_0x34bf('0x3a')]+'%'};return _0x13984b;}})});}_0x1ffc07=_[_0x34bf('0x3b')]({},_0x1ffc07,_0x219e27[_0x34bf('0x3c')]);var _0x212d7a={'where':_0x1ffc07['where']};return db[_0x34bf('0x2b')][_0x34bf('0x1f')](_0x212d7a)[_0x34bf('0x24')](function(_0x5ca303){_0x518c95['count']=_0x5ca303;if(_0x219e27[_0x34bf('0x2f')][_0x34bf('0x3d')]){_0x1ffc07[_0x34bf('0x3e')]=[{'all':!![]}];}return db[_0x34bf('0x2b')]['findAll'](_0x1ffc07);})['then'](function(_0x51ccc3){_0x518c95[_0x34bf('0x3f')]=_0x51ccc3;return _0x518c95;})[_0x34bf('0x24')](respondWithFilteredResult(_0x357c36,_0x1ffc07))[_0x34bf('0x40')](handleError(_0x357c36,null));};exports[_0x34bf('0x41')]=function(_0x51f627,_0x4e8d3d){var _0x463090={'raw':!![],'where':{'id':_0x51f627[_0x34bf('0x42')]['id']}},_0x40d87f={};_0x40d87f[_0x34bf('0x2e')]=_[_0x34bf('0x43')](db[_0x34bf('0x2b')]['rawAttributes']);_0x40d87f[_0x34bf('0x2f')]=_['keys'](_0x51f627[_0x34bf('0x2f')]);_0x40d87f[_0x34bf('0x30')]=_[_0x34bf('0x31')](_0x40d87f['model'],_0x40d87f[_0x34bf('0x2f')]);_0x463090[_0x34bf('0x32')]=_['intersection'](_0x40d87f[_0x34bf('0x2e')],qs[_0x34bf('0x33')](_0x51f627[_0x34bf('0x2f')][_0x34bf('0x33')]));_0x463090[_0x34bf('0x32')]=_0x463090[_0x34bf('0x32')][_0x34bf('0x34')]?_0x463090['attributes']:_0x40d87f[_0x34bf('0x2e')];if(_0x51f627[_0x34bf('0x2f')][_0x34bf('0x3d')]){_0x463090[_0x34bf('0x3e')]=[{'all':!![]}];}_0x463090=_[_0x34bf('0x3b')]({},_0x463090,_0x51f627[_0x34bf('0x3c')]);return db['SquareRecording']['find'](_0x463090)[_0x34bf('0x24')](handleEntityNotFound(_0x4e8d3d,null))[_0x34bf('0x24')](respondWithResult(_0x4e8d3d,null))[_0x34bf('0x40')](handleError(_0x4e8d3d,null));};exports[_0x34bf('0x44')]=function(_0x386847,_0x40dc02){return db[_0x34bf('0x2b')][_0x34bf('0x44')](_0x386847[_0x34bf('0x45')],{})[_0x34bf('0x24')](respondWithResult(_0x40dc02,0xc9))[_0x34bf('0x40')](handleError(_0x40dc02,null));};exports[_0x34bf('0x23')]=function(_0x2c6825,_0x4ea607){if(_0x2c6825[_0x34bf('0x45')]['id']){delete _0x2c6825[_0x34bf('0x45')]['id'];}return db['SquareRecording'][_0x34bf('0x46')]({'where':{'id':_0x2c6825[_0x34bf('0x42')]['id']}})[_0x34bf('0x24')](handleEntityNotFound(_0x4ea607,null))[_0x34bf('0x24')](saveUpdates(_0x2c6825[_0x34bf('0x45')],null))[_0x34bf('0x24')](respondWithResult(_0x4ea607,null))['catch'](handleError(_0x4ea607,null));};exports['download']=function(_0x1d71ff,_0x5515da,_0x2eeee1){var _0x267481=require(_0x34bf('0x47'));var _0x3b678b=![];var _0x37d4c9={};if(_0x1d71ff[_0x34bf('0x2f')][_0x34bf('0x2d')]&&_0x1d71ff[_0x34bf('0x2f')][_0x34bf('0x2d')]==='uniqueid'){_0x37d4c9[_0x34bf('0x48')]=_0x1d71ff[_0x34bf('0x42')]['id'];}else{_0x37d4c9['id']=_0x1d71ff[_0x34bf('0x42')]['id'];}return db[_0x34bf('0x2b')][_0x34bf('0x46')]({'where':_0x37d4c9,'attributes':['id',_0x34bf('0x49'),_0x34bf('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0x5515da,null))[_0x34bf('0x24')](function(_0x6f2fa3){if(_0x6f2fa3){var _0x1af07b=_0x6f2fa3['savePath'];var _0x49604b=util['format'](_0x34bf('0x4b'),_0x1af07b);if(fs[_0x34bf('0x4c')](_0x49604b)){_0x3b678b=!![];return _0x267481[_0x34bf('0x4d')](_0x49604b,_0x1af07b,config['secrets'][_0x34bf('0x4e')])[_0x34bf('0x24')](function(){return _0x6f2fa3;});}return _0x6f2fa3;}})[_0x34bf('0x24')](function(_0x5c556e){if(_0x5c556e){var _0x2f3e3b=_0x5c556e[_0x34bf('0x49')];if(!fs[_0x34bf('0x4c')](_0x2f3e3b)){throw new db[(_0x34bf('0x4f'))][(_0x34bf('0x50'))]('SquareRecording\x20not\x20found');}if(_0x5c556e[_0x34bf('0x4a')]){return _0x5515da[_0x34bf('0x51')](_0x2f3e3b,_0x5c556e['filename']+path['extname'](_0x2f3e3b),function(){if(_0x3b678b){fs[_0x34bf('0x52')](_0x2f3e3b);}});}else{return _0x5515da[_0x34bf('0x51')](_0x2f3e3b,function(_0x5c719a){if(_0x3b678b){fs[_0x34bf('0x52')](_0x2f3e3b);}});}}})['catch'](function(_0x12b14a){if(_0x12b14a['message']===_0x34bf('0x53')){_0x5515da[_0x34bf('0x1a')](0x194)[_0x34bf('0x28')]('Not\x20found');}else{return handleError(_0x5515da,null);}});};exports[_0x34bf('0x54')]=function(_0x219b94,_0x4335b3){return db['SquareRecording'][_0x34bf('0x46')]({'where':{'id':_0x219b94[_0x34bf('0x42')]['id']}})[_0x34bf('0x24')](function(_0x50931f){if(_[_0x34bf('0x55')](_0x50931f)){throw new ReferenceError('Entity\x20not\x20found');}return _0x50931f;})[_0x34bf('0x24')](function(_0x2826ce){var _0x47192d=_0x2826ce[_0x34bf('0x49')];logger[_0x34bf('0x56')](_0x34bf('0x57'),_0x47192d);if(!_[_0x34bf('0x55')](_0x2826ce[_0x34bf('0x49')])&&fs[_0x34bf('0x4c')](_0x47192d)){logger[_0x34bf('0x56')](_0x34bf('0x58')+_0x47192d+_0x34bf('0x59'));fs[_0x34bf('0x5a')](_0x47192d);}_0x47192d=_0x47192d+_0x34bf('0x5b');if(!_[_0x34bf('0x55')](_0x2826ce[_0x34bf('0x49')])&&fs[_0x34bf('0x4c')](_0x47192d)){logger[_0x34bf('0x56')]('File:\x20\x22'+_0x47192d+_0x34bf('0x59'));fs[_0x34bf('0x5a')](_0x47192d);}return _0x2826ce;})[_0x34bf('0x24')](function(_0x161f0e){if(!_0x161f0e)throw new InternalError();return _0x161f0e[_0x34bf('0x54')]();})[_0x34bf('0x24')](function(){_0x4335b3[_0x34bf('0x1a')](0xcc)[_0x34bf('0x1b')]();})[_0x34bf('0x40')](handleError(_0x4335b3,null));};
\ No newline at end of file
+var _0xb21c=['filter','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','secrets','recording','SquareRecording\x20not\x20found','download','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','end','stack','name','send','index','map','SquareRecording','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','order','where','pick','merge','type','VIRTUAL'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb21c,0x148));var _0xcb21=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0xb21c[_0xe8129c];return _0x709fc5;};'use strict';var emlformat=require(_0xcb21('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcb21('0x1'));var jsonpatch=require(_0xcb21('0x2'));var rp=require(_0xcb21('0x3'));var moment=require(_0xcb21('0x4'));var BPromise=require(_0xcb21('0x5'));var Mustache=require(_0xcb21('0x6'));var util=require('util');var path=require(_0xcb21('0x7'));var sox=require(_0xcb21('0x8'));var csv=require(_0xcb21('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb21('0xa'));var squel=require(_0xcb21('0xb'));var crypto=require(_0xcb21('0xc'));var jsforce=require(_0xcb21('0xd'));var deskjs=require(_0xcb21('0xe'));var toCsv=require(_0xcb21('0x9'));var querystring=require(_0xcb21('0xf'));var Papa=require(_0xcb21('0x10'));var Redis=require(_0xcb21('0x11'));var authService=require(_0xcb21('0x12'));var qs=require(_0xcb21('0x13'));var as=require(_0xcb21('0x14'));var hardwareService=require(_0xcb21('0x15'));var logger=require(_0xcb21('0x16'))('api');var utils=require(_0xcb21('0x17'));var config=require(_0xcb21('0x18'));var licenseUtil=require(_0xcb21('0x19'));var db=require(_0xcb21('0x1a'))['db'];function respondWithStatusCode(_0x76a445,_0x57bab1){_0x57bab1=_0x57bab1||0xcc;return function(_0x3dddbd){if(_0x3dddbd){return _0x76a445[_0xcb21('0x1b')](_0x57bab1);}return _0x76a445['status'](_0x57bab1)['end']();};}function respondWithResult(_0x1d1d99,_0x33f70a){_0x33f70a=_0x33f70a||0xc8;return function(_0x2ddac2){if(_0x2ddac2){return _0x1d1d99[_0xcb21('0x1c')](_0x33f70a)[_0xcb21('0x1d')](_0x2ddac2);}};}function respondWithFilteredResult(_0x45d4de,_0x3c3906){return function(_0x4bacd5){if(_0x4bacd5){var _0x25057d=typeof _0x3c3906[_0xcb21('0x1e')]==='undefined'&&typeof _0x3c3906[_0xcb21('0x1f')]===_0xcb21('0x20');var _0x446a7e=_0x4bacd5[_0xcb21('0x21')];var _0x5f3ce8=_0x25057d?0x0:_0x3c3906['offset'];var _0x255056=_0x25057d?_0x4bacd5[_0xcb21('0x21')]:_0x3c3906[_0xcb21('0x1e')]+_0x3c3906[_0xcb21('0x1f')];var _0x5b29f3;if(_0x255056>=_0x446a7e){_0x255056=_0x446a7e;_0x5b29f3=0xc8;}else{_0x5b29f3=0xce;}_0x45d4de[_0xcb21('0x1c')](_0x5b29f3);return _0x45d4de['set'](_0xcb21('0x22'),_0x5f3ce8+'-'+_0x255056+'/'+_0x446a7e)[_0xcb21('0x1d')](_0x4bacd5);}return null;};}function patchUpdates(_0x26eb0a){return function(_0x31be91){try{jsonpatch[_0xcb21('0x23')](_0x31be91,_0x26eb0a,!![]);}catch(_0x31620a){return BPromise[_0xcb21('0x24')](_0x31620a);}return _0x31be91['save']();};}function saveUpdates(_0x2094ce,_0x57de21){return function(_0x16307c){if(_0x16307c){return _0x16307c[_0xcb21('0x25')](_0x2094ce)[_0xcb21('0x26')](function(_0x1139cf){return _0x1139cf;});}return null;};}function removeEntity(_0x34b499,_0x3aef1f){return function(_0x50147f){if(_0x50147f){return _0x50147f[_0xcb21('0x27')]()['then'](function(){_0x34b499[_0xcb21('0x1c')](0xcc)[_0xcb21('0x28')]();});}};}function handleEntityNotFound(_0x5565ea,_0x2b89f3){return function(_0x1f1b39){if(!_0x1f1b39){_0x5565ea[_0xcb21('0x1b')](0x194);}return _0x1f1b39;};}function handleError(_0x2ca020,_0x227ad9){_0x227ad9=_0x227ad9||0x1f4;return function(_0x2cb951){logger['error'](_0x2cb951[_0xcb21('0x29')]);if(_0x2cb951[_0xcb21('0x2a')]){delete _0x2cb951[_0xcb21('0x2a')];}_0x2ca020[_0xcb21('0x1c')](_0x227ad9)[_0xcb21('0x2b')](_0x2cb951);};}exports[_0xcb21('0x2c')]=function(_0x2dc5b4,_0x55abb1){var _0x297196={},_0x275299={},_0x330cb9={'count':0x0,'rows':[]};var _0x5540ff=_[_0xcb21('0x2d')](db[_0xcb21('0x2e')][_0xcb21('0x2f')],function(_0x3e42e1){return{'name':_0x3e42e1[_0xcb21('0x30')],'type':_0x3e42e1['type'][_0xcb21('0x31')]};});_0x275299[_0xcb21('0x32')]=_[_0xcb21('0x2d')](_0x5540ff,'name');_0x275299[_0xcb21('0x33')]=_[_0xcb21('0x34')](_0x2dc5b4[_0xcb21('0x33')]);_0x275299[_0xcb21('0x35')]=_['intersection'](_0x275299['model'],_0x275299[_0xcb21('0x33')]);_0x297196[_0xcb21('0x36')]=_[_0xcb21('0x37')](_0x275299[_0xcb21('0x32')],qs[_0xcb21('0x38')](_0x2dc5b4[_0xcb21('0x33')][_0xcb21('0x38')]));_0x297196[_0xcb21('0x36')]=_0x297196[_0xcb21('0x36')][_0xcb21('0x39')]?_0x297196['attributes']:_0x275299['model'];if(!_0x2dc5b4[_0xcb21('0x33')]['hasOwnProperty']('nolimit')){_0x297196[_0xcb21('0x1f')]=qs[_0xcb21('0x1f')](_0x2dc5b4[_0xcb21('0x33')][_0xcb21('0x1f')]);_0x297196[_0xcb21('0x1e')]=qs['offset'](_0x2dc5b4[_0xcb21('0x33')][_0xcb21('0x1e')]);}_0x297196[_0xcb21('0x3a')]=qs['sort'](_0x2dc5b4[_0xcb21('0x33')]['sort']);_0x297196[_0xcb21('0x3b')]=qs[_0xcb21('0x35')](_[_0xcb21('0x3c')](_0x2dc5b4[_0xcb21('0x33')],_0x275299[_0xcb21('0x35')]),_0x5540ff);if(_0x2dc5b4[_0xcb21('0x33')]['filter']){_0x297196[_0xcb21('0x3b')]=_[_0xcb21('0x3d')](_0x297196['where'],{'$or':_['map'](_0x5540ff,function(_0x336a2e){if(_0x336a2e[_0xcb21('0x3e')]!==_0xcb21('0x3f')){var _0x2e0e60={};_0x2e0e60[_0x336a2e[_0xcb21('0x2a')]]={'$like':'%'+_0x2dc5b4['query'][_0xcb21('0x40')]+'%'};return _0x2e0e60;}})});}_0x297196=_[_0xcb21('0x3d')]({},_0x297196,_0x2dc5b4[_0xcb21('0x41')]);var _0x7f7420={'where':_0x297196[_0xcb21('0x3b')]};return db[_0xcb21('0x2e')][_0xcb21('0x21')](_0x7f7420)[_0xcb21('0x26')](function(_0x519894){_0x330cb9[_0xcb21('0x21')]=_0x519894;if(_0x2dc5b4[_0xcb21('0x33')][_0xcb21('0x42')]){_0x297196['include']=[{'all':!![]}];}return db[_0xcb21('0x2e')][_0xcb21('0x43')](_0x297196);})[_0xcb21('0x26')](function(_0x29e743){_0x330cb9[_0xcb21('0x44')]=_0x29e743;return _0x330cb9;})['then'](respondWithFilteredResult(_0x55abb1,_0x297196))['catch'](handleError(_0x55abb1,null));};exports[_0xcb21('0x45')]=function(_0x36bc43,_0x2061af){var _0x5c9fcc={'raw':!![],'where':{'id':_0x36bc43[_0xcb21('0x46')]['id']}},_0xce6b26={};_0xce6b26[_0xcb21('0x32')]=_[_0xcb21('0x34')](db[_0xcb21('0x2e')][_0xcb21('0x2f')]);_0xce6b26[_0xcb21('0x33')]=_[_0xcb21('0x34')](_0x36bc43[_0xcb21('0x33')]);_0xce6b26[_0xcb21('0x35')]=_[_0xcb21('0x37')](_0xce6b26[_0xcb21('0x32')],_0xce6b26[_0xcb21('0x33')]);_0x5c9fcc['attributes']=_[_0xcb21('0x37')](_0xce6b26[_0xcb21('0x32')],qs[_0xcb21('0x38')](_0x36bc43['query']['fields']));_0x5c9fcc[_0xcb21('0x36')]=_0x5c9fcc[_0xcb21('0x36')][_0xcb21('0x39')]?_0x5c9fcc[_0xcb21('0x36')]:_0xce6b26[_0xcb21('0x32')];if(_0x36bc43['query'][_0xcb21('0x42')]){_0x5c9fcc[_0xcb21('0x47')]=[{'all':!![]}];}_0x5c9fcc=_[_0xcb21('0x3d')]({},_0x5c9fcc,_0x36bc43['options']);return db['SquareRecording'][_0xcb21('0x48')](_0x5c9fcc)['then'](handleEntityNotFound(_0x2061af,null))[_0xcb21('0x26')](respondWithResult(_0x2061af,null))[_0xcb21('0x49')](handleError(_0x2061af,null));};exports[_0xcb21('0x4a')]=function(_0x4453a2,_0x34fa0e){return db[_0xcb21('0x2e')][_0xcb21('0x4a')](_0x4453a2[_0xcb21('0x4b')],{})[_0xcb21('0x26')](respondWithResult(_0x34fa0e,0xc9))['catch'](handleError(_0x34fa0e,null));};exports['update']=function(_0x2250ee,_0x43ffe6){if(_0x2250ee[_0xcb21('0x4b')]['id']){delete _0x2250ee['body']['id'];}return db[_0xcb21('0x2e')][_0xcb21('0x48')]({'where':{'id':_0x2250ee[_0xcb21('0x46')]['id']}})[_0xcb21('0x26')](handleEntityNotFound(_0x43ffe6,null))[_0xcb21('0x26')](saveUpdates(_0x2250ee[_0xcb21('0x4b')],null))['then'](respondWithResult(_0x43ffe6,null))[_0xcb21('0x49')](handleError(_0x43ffe6,null));};exports['download']=function(_0x4c58d6,_0x33c073,_0x56a132){var _0x1e83ae=require(_0xcb21('0x4c'));var _0x32a35a=![];var _0x1b7386={};if(_0x4c58d6[_0xcb21('0x33')][_0xcb21('0x3e')]&&_0x4c58d6[_0xcb21('0x33')][_0xcb21('0x3e')]===_0xcb21('0x4d')){_0x1b7386[_0xcb21('0x4d')]=_0x4c58d6[_0xcb21('0x46')]['id'];}else{_0x1b7386['id']=_0x4c58d6[_0xcb21('0x46')]['id'];}return db[_0xcb21('0x2e')][_0xcb21('0x48')]({'where':_0x1b7386,'attributes':['id',_0xcb21('0x4e'),_0xcb21('0x4f')],'raw':!![]})[_0xcb21('0x26')](handleEntityNotFound(_0x33c073,null))[_0xcb21('0x26')](function(_0x415a80){if(_0x415a80){var _0x5cdb84=_0x415a80['savePath'];var _0x20bb3a=util[_0xcb21('0x50')](_0xcb21('0x51'),_0x5cdb84);if(fs['existsSync'](_0x20bb3a)){_0x32a35a=!![];return _0x1e83ae['decryptFile'](_0x20bb3a,_0x5cdb84,config[_0xcb21('0x52')][_0xcb21('0x53')])[_0xcb21('0x26')](function(){return _0x415a80;});}return _0x415a80;}})[_0xcb21('0x26')](function(_0x5840f9){if(_0x5840f9){var _0x6c4bcb=_0x5840f9['savePath'];if(!fs['existsSync'](_0x6c4bcb)){throw new db['Sequelize']['ValidationError'](_0xcb21('0x54'));}if(_0x5840f9[_0xcb21('0x4f')]){return _0x33c073[_0xcb21('0x55')](_0x6c4bcb,_0x5840f9[_0xcb21('0x4f')]+path[_0xcb21('0x56')](_0x6c4bcb),function(){if(_0x32a35a){fs[_0xcb21('0x57')](_0x6c4bcb);}});}else{return _0x33c073[_0xcb21('0x55')](_0x6c4bcb,function(_0x3dccae){if(_0x32a35a){fs[_0xcb21('0x57')](_0x6c4bcb);}});}}})[_0xcb21('0x49')](function(_0x6ba0c8){if(_0x6ba0c8[_0xcb21('0x58')]===_0xcb21('0x54')){_0x33c073[_0xcb21('0x1c')](0x194)['send'](_0xcb21('0x59'));}else{return handleError(_0x33c073,null);}});};exports[_0xcb21('0x27')]=function(_0x3c3df1,_0x32a9ee){return db[_0xcb21('0x2e')][_0xcb21('0x48')]({'where':{'id':_0x3c3df1['params']['id']}})[_0xcb21('0x26')](function(_0x48448a){if(_[_0xcb21('0x5a')](_0x48448a)){throw new ReferenceError(_0xcb21('0x5b'));}return _0x48448a;})[_0xcb21('0x26')](function(_0x18b3ab){var _0x3b7022=_0x18b3ab[_0xcb21('0x4e')];logger[_0xcb21('0x5c')](_0xcb21('0x5d'),_0x3b7022);if(!_[_0xcb21('0x5a')](_0x18b3ab[_0xcb21('0x4e')])&&fs[_0xcb21('0x5e')](_0x3b7022)){logger[_0xcb21('0x5c')](_0xcb21('0x5f')+_0x3b7022+_0xcb21('0x60'));fs[_0xcb21('0x61')](_0x3b7022);}_0x3b7022=_0x3b7022+'.cypher';if(!_[_0xcb21('0x5a')](_0x18b3ab[_0xcb21('0x4e')])&&fs[_0xcb21('0x5e')](_0x3b7022)){logger['info'](_0xcb21('0x5f')+_0x3b7022+_0xcb21('0x60'));fs[_0xcb21('0x61')](_0x3b7022);}return _0x18b3ab;})[_0xcb21('0x26')](function(_0x24f982){if(!_0x24f982)throw new InternalError();return _0x24f982[_0xcb21('0x27')]();})[_0xcb21('0x26')](function(){_0x32a9ee[_0xcb21('0x1c')](0xcc)[_0xcb21('0x28')]();})[_0xcb21('0x49')](handleError(_0x32a9ee,null));};
\ No newline at end of file
index 62cfbe1..53ffa90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dcb=['path','rimraf','../../config/environment','define','SquareRecording','square_recordings','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4dcb,0x186));var _0xb4dc=function(_0x45617f,_0x3a5d4e){_0x45617f=_0x45617f-0x0;var _0x19f3d1=_0x4dcb[_0x45617f];return _0x19f3d1;};'use strict';var _=require('lodash');var util=require(_0xb4dc('0x0'));var logger=require(_0xb4dc('0x1'))(_0xb4dc('0x2'));var moment=require(_0xb4dc('0x3'));var BPromise=require(_0xb4dc('0x4'));var rp=require(_0xb4dc('0x5'));var fs=require('fs');var path=require(_0xb4dc('0x6'));var rimraf=require(_0xb4dc('0x7'));var config=require(_0xb4dc('0x8'));var attributes=require('./squareRecording.attributes');module['exports']=function(_0x244be0,_0x5be4d1){return _0x244be0[_0xb4dc('0x9')](_0xb4dc('0xa'),attributes,{'tableName':_0xb4dc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5324=['./squareRecording.attributes','exports','define','square_recordings','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x544c32,_0x540745){var _0x4e160f=function(_0x272ed0){while(--_0x272ed0){_0x544c32['push'](_0x544c32['shift']());}};_0x4e160f(++_0x540745);}(_0x5324,0x154));var _0x4532=function(_0x583937,_0x490b77){_0x583937=_0x583937-0x0;var _0x411e87=_0x5324[_0x583937];return _0x411e87;};'use strict';var _=require(_0x4532('0x0'));var util=require(_0x4532('0x1'));var logger=require(_0x4532('0x2'))(_0x4532('0x3'));var moment=require('moment');var BPromise=require(_0x4532('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4532('0x5'));var rimraf=require(_0x4532('0x6'));var config=require(_0x4532('0x7'));var attributes=require(_0x4532('0x8'));module[_0x4532('0x9')]=function(_0x3f68e2,_0x2672ec){return _0x3f68e2[_0x4532('0xa')]('SquareRecording',attributes,{'tableName':_0x4532('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 00ef759..aeb2adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0521=['request','then','info','SquareRecording,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0x0521,0x151));var _0x1052=function(_0xadbfcf,_0x292e16){_0xadbfcf=_0xadbfcf-0x0;var _0x4b3345=_0x0521[_0xadbfcf];return _0x4b3345;};'use strict';var _=require(_0x1052('0x0'));var util=require(_0x1052('0x1'));var moment=require(_0x1052('0x2'));var BPromise=require(_0x1052('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1052('0x4'));var db=require(_0x1052('0x5'))['db'];var utils=require(_0x1052('0x6'));var logger=require(_0x1052('0x7'))('rpc');var config=require(_0x1052('0x8'));var jayson=require(_0x1052('0x9'));var client=jayson[_0x1052('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35e710,_0x1db94a,_0x5e8fc9){return new BPromise(function(_0x56e7f8,_0x16bbc0){return client[_0x1052('0xb')](_0x35e710,_0x5e8fc9)[_0x1052('0xc')](function(_0x3b6853){logger[_0x1052('0xd')](_0x1052('0xe'),_0x1db94a,'request\x20sent');logger[_0x1052('0xf')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x1db94a,_0x1052('0x10'),JSON['stringify'](_0x3b6853));if(_0x3b6853[_0x1052('0x11')]){if(_0x3b6853[_0x1052('0x11')][_0x1052('0x12')]===0x1f4){logger[_0x1052('0x11')](_0x1052('0xe'),_0x1db94a,_0x3b6853['error']['message']);return _0x16bbc0(_0x3b6853[_0x1052('0x11')][_0x1052('0x13')]);}logger[_0x1052('0x11')]('SquareRecording,\x20%s,\x20%s',_0x1db94a,_0x3b6853[_0x1052('0x11')][_0x1052('0x13')]);return _0x56e7f8(_0x3b6853[_0x1052('0x11')]['message']);}else{logger['info'](_0x1052('0xe'),_0x1db94a,'request\x20sent');_0x56e7f8(_0x3b6853[_0x1052('0x14')][_0x1052('0x13')]);}})[_0x1052('0x15')](function(_0x251f6e){logger[_0x1052('0x11')]('SquareRecording,\x20%s,\x20%s',_0x1db94a,_0x251f6e);_0x16bbc0(_0x251f6e);});});}exports[_0x1052('0x16')]=function(_0x4fa3e2){var _0x2cc8fa=this;return new Promise(function(_0x5d79a4,_0x5d65e5){return db[_0x1052('0x17')][_0x1052('0x18')](_0x4fa3e2[_0x1052('0x19')],{'raw':_0x4fa3e2[_0x1052('0x1a')]?_0x4fa3e2['options'][_0x1052('0x1b')]===undefined?!![]:![]:!![]})[_0x1052('0xc')](function(_0x45db08){logger[_0x1052('0xd')](_0x1052('0x16'),_0x4fa3e2);logger[_0x1052('0xf')](_0x1052('0x16'),_0x4fa3e2,JSON[_0x1052('0x1c')](_0x45db08));_0x5d79a4(_0x45db08);})['catch'](function(_0x58d33c){logger['error']('CreateSquareRecording',_0x58d33c[_0x1052('0x13')],_0x4fa3e2);_0x5d65e5(_0x2cc8fa[_0x1052('0x11')](0x1f4,_0x58d33c[_0x1052('0x13')]));});});};
\ No newline at end of file
+var _0x63ad=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','CreateSquareRecording','options','stringify','lodash','util'];(function(_0x43d029,_0x245072){var _0x4ae768=function(_0x435240){while(--_0x435240){_0x43d029['push'](_0x43d029['shift']());}};_0x4ae768(++_0x245072);}(_0x63ad,0x136));var _0xd63a=function(_0x4a2ca4,_0x32362d){_0x4a2ca4=_0x4a2ca4-0x0;var _0x4ab5e1=_0x63ad[_0x4a2ca4];return _0x4ab5e1;};'use strict';var _=require(_0xd63a('0x0'));var util=require(_0xd63a('0x1'));var moment=require('moment');var BPromise=require(_0xd63a('0x2'));var rs=require(_0xd63a('0x3'));var fs=require('fs');var Redis=require(_0xd63a('0x4'));var db=require(_0xd63a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd63a('0x6'));var config=require(_0xd63a('0x7'));var jayson=require(_0xd63a('0x8'));var client=jayson[_0xd63a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ff88f,_0x3ad44a,_0x2c0d03){return new BPromise(function(_0x5199f3,_0x771d23){return client[_0xd63a('0xa')](_0x2ff88f,_0x2c0d03)[_0xd63a('0xb')](function(_0xdf9aaa){logger[_0xd63a('0xc')](_0xd63a('0xd'),_0x3ad44a,_0xd63a('0xe'));logger[_0xd63a('0xf')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x3ad44a,_0xd63a('0xe'),JSON['stringify'](_0xdf9aaa));if(_0xdf9aaa[_0xd63a('0x10')]){if(_0xdf9aaa[_0xd63a('0x10')][_0xd63a('0x11')]===0x1f4){logger[_0xd63a('0x10')]('SquareRecording,\x20%s,\x20%s',_0x3ad44a,_0xdf9aaa[_0xd63a('0x10')][_0xd63a('0x12')]);return _0x771d23(_0xdf9aaa[_0xd63a('0x10')]['message']);}logger['error'](_0xd63a('0xd'),_0x3ad44a,_0xdf9aaa[_0xd63a('0x10')][_0xd63a('0x12')]);return _0x5199f3(_0xdf9aaa[_0xd63a('0x10')]['message']);}else{logger[_0xd63a('0xc')](_0xd63a('0xd'),_0x3ad44a,_0xd63a('0xe'));_0x5199f3(_0xdf9aaa[_0xd63a('0x13')][_0xd63a('0x12')]);}})[_0xd63a('0x14')](function(_0x2d4cc4){logger[_0xd63a('0x10')]('SquareRecording,\x20%s,\x20%s',_0x3ad44a,_0x2d4cc4);_0x771d23(_0x2d4cc4);});});}exports[_0xd63a('0x15')]=function(_0x3794c0){var _0x182841=this;return new Promise(function(_0xf327ad,_0x5b1978){return db['SquareRecording']['create'](_0x3794c0['body'],{'raw':_0x3794c0[_0xd63a('0x16')]?_0x3794c0['options']['raw']===undefined?!![]:![]:!![]})[_0xd63a('0xb')](function(_0x15d3ea){logger[_0xd63a('0xc')]('CreateSquareRecording',_0x3794c0);logger[_0xd63a('0xf')]('CreateSquareRecording',_0x3794c0,JSON[_0xd63a('0x17')](_0x15d3ea));_0xf327ad(_0x15d3ea);})[_0xd63a('0x14')](function(_0x30558a){logger[_0xd63a('0x10')](_0xd63a('0x15'),_0x30558a['message'],_0x3794c0);_0x5b1978(_0x182841['error'](0x1f4,_0x30558a[_0xd63a('0x12')]));});});};
\ No newline at end of file
index 04f3694..f8f42df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x40fc07,_0x2627f4){var _0x30bded=function(_0x5b87fa){while(--_0x5b87fa){_0x40fc07['push'](_0x40fc07['shift']());}};_0x30bded(++_0x2627f4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x855be0,_0x3b9cd2){var _0xe24ded=function(_0x44c5e1){while(--_0x44c5e1){_0x855be0['push'](_0x855be0['shift']());}};_0xe24ded(++_0x3b9cd2);}(_0xe706,0xa3));var _0x6e70=function(_0x2e9280,_0x44d032){_0x2e9280=_0x2e9280-0x0;var _0x17f9e5=_0xe706[_0x2e9280];return _0x17f9e5;};'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 01289df..f0a7edd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba4=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x2d61b2,_0x142947){var _0x12df89=function(_0x31c717){while(--_0x31c717){_0x2d61b2['push'](_0x2d61b2['shift']());}};_0x12df89(++_0x142947);}(_0xdba4,0x97));var _0x4dba=function(_0x7b500f,_0x5a4e54){_0x7b500f=_0x7b500f-0x0;var _0xbcac81=_0xdba4[_0x7b500f];return _0xbcac81;};'use strict';var Sequelize=require(_0x4dba('0x0'));module[_0x4dba('0x1')]={'network':{'type':Sequelize[_0x4dba('0x2')]},'network_script':{'type':Sequelize[_0x4dba('0x2')]},'request':{'type':Sequelize[_0x4dba('0x2')]},'channel':{'type':Sequelize[_0x4dba('0x2')]},'language':{'type':Sequelize[_0x4dba('0x2')]},'type':{'type':Sequelize[_0x4dba('0x2')]},'uniqueid':{'type':Sequelize[_0x4dba('0x2')]},'version':{'type':Sequelize[_0x4dba('0x2')]},'callerid':{'type':Sequelize[_0x4dba('0x2')]},'calleridname':{'type':Sequelize[_0x4dba('0x2')]},'callingpres':{'type':Sequelize[_0x4dba('0x2')]},'callingani2':{'type':Sequelize[_0x4dba('0x2')]},'callington':{'type':Sequelize[_0x4dba('0x2')]},'callingtns':{'type':Sequelize[_0x4dba('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x4dba('0x2')]},'context':{'type':Sequelize[_0x4dba('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x4dba('0x2')]},'enhanced':{'type':Sequelize[_0x4dba('0x2')]},'accountcode':{'type':Sequelize[_0x4dba('0x2')]},'threadid':{'type':Sequelize[_0x4dba('0x2')]},'project_name':{'type':Sequelize[_0x4dba('0x2')]},'joinAt':{'type':Sequelize[_0x4dba('0x3')]},'leaveAt':{'type':Sequelize[_0x4dba('0x3')]},'bot':{'type':Sequelize[_0x4dba('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2dd3=['STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0xac3b20,_0x48e68c){var _0x580caf=function(_0xa07fcd){while(--_0xa07fcd){_0xac3b20['push'](_0xac3b20['shift']());}};_0x580caf(++_0x48e68c);}(_0x2dd3,0x99));var _0x32dd=function(_0x3145fc,_0x455a35){_0x3145fc=_0x3145fc-0x0;var _0x2591e4=_0x2dd3[_0x3145fc];return _0x2591e4;};'use strict';var Sequelize=require(_0x32dd('0x0'));module[_0x32dd('0x1')]={'network':{'type':Sequelize[_0x32dd('0x2')]},'network_script':{'type':Sequelize[_0x32dd('0x2')]},'request':{'type':Sequelize[_0x32dd('0x2')]},'channel':{'type':Sequelize[_0x32dd('0x2')]},'language':{'type':Sequelize[_0x32dd('0x2')]},'type':{'type':Sequelize[_0x32dd('0x2')]},'uniqueid':{'type':Sequelize[_0x32dd('0x2')]},'version':{'type':Sequelize[_0x32dd('0x2')]},'callerid':{'type':Sequelize[_0x32dd('0x2')]},'calleridname':{'type':Sequelize[_0x32dd('0x2')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x32dd('0x2')]},'callington':{'type':Sequelize[_0x32dd('0x2')]},'callingtns':{'type':Sequelize[_0x32dd('0x2')]},'dnid':{'type':Sequelize[_0x32dd('0x2')]},'rdnis':{'type':Sequelize[_0x32dd('0x2')]},'context':{'type':Sequelize[_0x32dd('0x2')]},'extension':{'type':Sequelize[_0x32dd('0x2')]},'priority':{'type':Sequelize[_0x32dd('0x2')]},'enhanced':{'type':Sequelize[_0x32dd('0x2')]},'accountcode':{'type':Sequelize[_0x32dd('0x2')]},'threadid':{'type':Sequelize[_0x32dd('0x2')]},'project_name':{'type':Sequelize[_0x32dd('0x2')]},'joinAt':{'type':Sequelize[_0x32dd('0x3')]},'leaveAt':{'type':Sequelize[_0x32dd('0x3')]},'bot':{'type':Sequelize[_0x32dd('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 8a0c7ce..f53f7be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe27d=['save','update','destroy','then','name','send','index','SquareReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','reject'];(function(_0x541260,_0x4c7f2e){var _0x1dd2b5=function(_0x4140de){while(--_0x4140de){_0x541260['push'](_0x541260['shift']());}};_0x1dd2b5(++_0x4c7f2e);}(_0xe27d,0x1a4));var _0xde27=function(_0x56ba92,_0xb3c986){_0x56ba92=_0x56ba92-0x0;var _0x8fe94d=_0xe27d[_0x56ba92];return _0x8fe94d;};'use strict';var emlformat=require(_0xde27('0x0'));var rimraf=require(_0xde27('0x1'));var zipdir=require(_0xde27('0x2'));var jsonpatch=require(_0xde27('0x3'));var rp=require('request-promise');var moment=require(_0xde27('0x4'));var BPromise=require(_0xde27('0x5'));var Mustache=require(_0xde27('0x6'));var util=require(_0xde27('0x7'));var path=require(_0xde27('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xde27('0x9'));var fs=require('fs');var fs_extra=require(_0xde27('0xa'));var _=require(_0xde27('0xb'));var squel=require(_0xde27('0xc'));var crypto=require(_0xde27('0xd'));var jsforce=require(_0xde27('0xe'));var deskjs=require(_0xde27('0xf'));var toCsv=require(_0xde27('0x10'));var querystring=require('querystring');var Papa=require(_0xde27('0x11'));var Redis=require(_0xde27('0x12'));var authService=require(_0xde27('0x13'));var qs=require(_0xde27('0x14'));var as=require(_0xde27('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xde27('0x16'))(_0xde27('0x17'));var utils=require('../../config/utils');var config=require(_0xde27('0x18'));var licenseUtil=require(_0xde27('0x19'));var db=require(_0xde27('0x1a'))['db'];function respondWithStatusCode(_0x365366,_0x422fa9){_0x422fa9=_0x422fa9||0xcc;return function(_0x3c90da){if(_0x3c90da){return _0x365366[_0xde27('0x1b')](_0x422fa9);}return _0x365366[_0xde27('0x1c')](_0x422fa9)[_0xde27('0x1d')]();};}function respondWithResult(_0x5697ce,_0x3a8c28){_0x3a8c28=_0x3a8c28||0xc8;return function(_0x72d3a2){if(_0x72d3a2){return _0x5697ce[_0xde27('0x1c')](_0x3a8c28)['json'](_0x72d3a2);}};}function respondWithFilteredResult(_0x4c2e62,_0x651a6c){return function(_0x3e3cac){if(_0x3e3cac){var _0x5e2a15=typeof _0x651a6c['offset']==='undefined'&&typeof _0x651a6c[_0xde27('0x1e')]===_0xde27('0x1f');var _0x20f693=_0x3e3cac[_0xde27('0x20')];var _0x2f8b41=_0x5e2a15?0x0:_0x651a6c[_0xde27('0x21')];var _0x4871a6=_0x5e2a15?_0x3e3cac[_0xde27('0x20')]:_0x651a6c['offset']+_0x651a6c[_0xde27('0x1e')];var _0x453c59;if(_0x4871a6>=_0x20f693){_0x4871a6=_0x20f693;_0x453c59=0xc8;}else{_0x453c59=0xce;}_0x4c2e62['status'](_0x453c59);return _0x4c2e62[_0xde27('0x22')]('Content-Range',_0x2f8b41+'-'+_0x4871a6+'/'+_0x20f693)['json'](_0x3e3cac);}return null;};}function patchUpdates(_0x100ccb){return function(_0x2c0c75){try{jsonpatch['apply'](_0x2c0c75,_0x100ccb,!![]);}catch(_0x6b2937){return BPromise[_0xde27('0x23')](_0x6b2937);}return _0x2c0c75[_0xde27('0x24')]();};}function saveUpdates(_0x105903,_0x1c4e5c){return function(_0x80dd19){if(_0x80dd19){return _0x80dd19[_0xde27('0x25')](_0x105903)['then'](function(_0x2d78ef){return _0x2d78ef;});}return null;};}function removeEntity(_0x5a3e5b,_0x5b21df){return function(_0x58618a){if(_0x58618a){return _0x58618a[_0xde27('0x26')]()[_0xde27('0x27')](function(){_0x5a3e5b[_0xde27('0x1c')](0xcc)[_0xde27('0x1d')]();});}};}function handleEntityNotFound(_0x1289a5,_0x34c5db){return function(_0x2acf1c){if(!_0x2acf1c){_0x1289a5['sendStatus'](0x194);}return _0x2acf1c;};}function handleError(_0x253597,_0x9f7c41){_0x9f7c41=_0x9f7c41||0x1f4;return function(_0x46f525){logger['error'](_0x46f525['stack']);if(_0x46f525[_0xde27('0x28')]){delete _0x46f525[_0xde27('0x28')];}_0x253597[_0xde27('0x1c')](_0x9f7c41)[_0xde27('0x29')](_0x46f525);};}exports[_0xde27('0x2a')]=function(_0x2963f6,_0x124deb){var _0x11d103={},_0x49077a={},_0x582b47={'count':0x0,'rows':[]};var _0x371b19=_['map'](db[_0xde27('0x2b')][_0xde27('0x2c')],function(_0x70ead5){return{'name':_0x70ead5[_0xde27('0x2d')],'type':_0x70ead5[_0xde27('0x2e')][_0xde27('0x2f')]};});_0x49077a['model']=_['map'](_0x371b19,'name');_0x49077a[_0xde27('0x30')]=_[_0xde27('0x31')](_0x2963f6[_0xde27('0x30')]);_0x49077a[_0xde27('0x32')]=_[_0xde27('0x33')](_0x49077a[_0xde27('0x34')],_0x49077a['query']);_0x11d103[_0xde27('0x35')]=_[_0xde27('0x33')](_0x49077a['model'],qs[_0xde27('0x36')](_0x2963f6['query']['fields']));_0x11d103[_0xde27('0x35')]=_0x11d103[_0xde27('0x35')][_0xde27('0x37')]?_0x11d103[_0xde27('0x35')]:_0x49077a[_0xde27('0x34')];if(!_0x2963f6['query'][_0xde27('0x38')](_0xde27('0x39'))){_0x11d103['limit']=qs[_0xde27('0x1e')](_0x2963f6[_0xde27('0x30')][_0xde27('0x1e')]);_0x11d103[_0xde27('0x21')]=qs[_0xde27('0x21')](_0x2963f6[_0xde27('0x30')]['offset']);}_0x11d103[_0xde27('0x3a')]=qs[_0xde27('0x3b')](_0x2963f6[_0xde27('0x30')][_0xde27('0x3b')]);_0x11d103[_0xde27('0x3c')]=qs[_0xde27('0x32')](_[_0xde27('0x3d')](_0x2963f6[_0xde27('0x30')],_0x49077a[_0xde27('0x32')]),_0x371b19);if(_0x2963f6[_0xde27('0x30')][_0xde27('0x3e')]){_0x11d103[_0xde27('0x3c')]=_['merge'](_0x11d103[_0xde27('0x3c')],{'$or':_['map'](_0x371b19,function(_0xf16223){if(_0xf16223[_0xde27('0x2e')]!==_0xde27('0x3f')){var _0x1477bf={};_0x1477bf[_0xf16223[_0xde27('0x28')]]={'$like':'%'+_0x2963f6['query']['filter']+'%'};return _0x1477bf;}})});}_0x11d103=_[_0xde27('0x40')]({},_0x11d103,_0x2963f6[_0xde27('0x41')]);var _0x13b79d={'where':_0x11d103[_0xde27('0x3c')]};return db[_0xde27('0x2b')][_0xde27('0x20')](_0x13b79d)['then'](function(_0x50695e){_0x582b47[_0xde27('0x20')]=_0x50695e;if(_0x2963f6[_0xde27('0x30')][_0xde27('0x42')]){_0x11d103[_0xde27('0x43')]=[{'all':!![]}];}return db[_0xde27('0x2b')][_0xde27('0x44')](_0x11d103);})['then'](function(_0x4e3360){_0x582b47['rows']=_0x4e3360;return _0x582b47;})[_0xde27('0x27')](respondWithFilteredResult(_0x124deb,_0x11d103))[_0xde27('0x45')](handleError(_0x124deb,null));};exports[_0xde27('0x46')]=function(_0x4e5827,_0x5458a4){var _0x1dd0b8={'raw':!![],'where':{'id':_0x4e5827[_0xde27('0x47')]['id']}},_0x4f61ab={};_0x4f61ab[_0xde27('0x34')]=_[_0xde27('0x31')](db[_0xde27('0x2b')][_0xde27('0x2c')]);_0x4f61ab[_0xde27('0x30')]=_['keys'](_0x4e5827[_0xde27('0x30')]);_0x4f61ab[_0xde27('0x32')]=_[_0xde27('0x33')](_0x4f61ab['model'],_0x4f61ab[_0xde27('0x30')]);_0x1dd0b8[_0xde27('0x35')]=_['intersection'](_0x4f61ab[_0xde27('0x34')],qs['fields'](_0x4e5827[_0xde27('0x30')]['fields']));_0x1dd0b8[_0xde27('0x35')]=_0x1dd0b8[_0xde27('0x35')]['length']?_0x1dd0b8['attributes']:_0x4f61ab[_0xde27('0x34')];if(_0x4e5827['query']['includeAll']){_0x1dd0b8['include']=[{'all':!![]}];}_0x1dd0b8=_[_0xde27('0x40')]({},_0x1dd0b8,_0x4e5827[_0xde27('0x41')]);return db[_0xde27('0x2b')][_0xde27('0x48')](_0x1dd0b8)[_0xde27('0x27')](handleEntityNotFound(_0x5458a4,null))['then'](respondWithResult(_0x5458a4,null))[_0xde27('0x45')](handleError(_0x5458a4,null));};exports[_0xde27('0x49')]=function(_0x45593f,_0xf903aa){return db[_0xde27('0x2b')][_0xde27('0x49')](_0x45593f['body'],{})[_0xde27('0x27')](respondWithResult(_0xf903aa,0xc9))[_0xde27('0x45')](handleError(_0xf903aa,null));};exports[_0xde27('0x25')]=function(_0x3a3a11,_0x119acb){if(_0x3a3a11[_0xde27('0x4a')]['id']){delete _0x3a3a11['body']['id'];}return db[_0xde27('0x2b')][_0xde27('0x48')]({'where':{'id':_0x3a3a11[_0xde27('0x47')]['id']}})[_0xde27('0x27')](handleEntityNotFound(_0x119acb,null))[_0xde27('0x27')](saveUpdates(_0x3a3a11[_0xde27('0x4a')],null))[_0xde27('0x27')](respondWithResult(_0x119acb,null))['catch'](handleError(_0x119acb,null));};exports[_0xde27('0x26')]=function(_0xcb7336,_0x46ed0c){return db[_0xde27('0x2b')][_0xde27('0x48')]({'where':{'id':_0xcb7336[_0xde27('0x47')]['id']}})['then'](handleEntityNotFound(_0x46ed0c,null))[_0xde27('0x27')](removeEntity(_0x46ed0c,null))[_0xde27('0x45')](handleError(_0x46ed0c,null));};exports[_0xde27('0x4b')]=function(_0x5d8053,_0x2edf8b){return db['SquareReport'][_0xde27('0x4b')]()[_0xde27('0x27')](respondWithResult(_0x2edf8b,null))[_0xde27('0x45')](handleError(_0x2edf8b,null));};
\ No newline at end of file
+var _0x298d=['describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','error','name','send','index','map','SquareReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','includeAll','include','rows','show','params','catch','create','body','find'];(function(_0x53847f,_0x336b11){var _0x592021=function(_0x4ce05b){while(--_0x4ce05b){_0x53847f['push'](_0x53847f['shift']());}};_0x592021(++_0x336b11);}(_0x298d,0x119));var _0xd298=function(_0x3fe749,_0x26363a){_0x3fe749=_0x3fe749-0x0;var _0x2e850f=_0x298d[_0x3fe749];return _0x2e850f;};'use strict';var emlformat=require(_0xd298('0x0'));var rimraf=require(_0xd298('0x1'));var zipdir=require(_0xd298('0x2'));var jsonpatch=require(_0xd298('0x3'));var rp=require('request-promise');var moment=require(_0xd298('0x4'));var BPromise=require(_0xd298('0x5'));var Mustache=require(_0xd298('0x6'));var util=require(_0xd298('0x7'));var path=require(_0xd298('0x8'));var sox=require('sox');var csv=require(_0xd298('0x9'));var ejs=require(_0xd298('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd298('0xb'));var squel=require(_0xd298('0xc'));var crypto=require(_0xd298('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd298('0xe'));var toCsv=require(_0xd298('0x9'));var querystring=require('querystring');var Papa=require(_0xd298('0xf'));var Redis=require(_0xd298('0x10'));var authService=require(_0xd298('0x11'));var qs=require(_0xd298('0x12'));var as=require(_0xd298('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd298('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd298('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc36ef3,_0x459587){_0x459587=_0x459587||0xcc;return function(_0x355341){if(_0x355341){return _0xc36ef3[_0xd298('0x16')](_0x459587);}return _0xc36ef3['status'](_0x459587)[_0xd298('0x17')]();};}function respondWithResult(_0x791918,_0x133461){_0x133461=_0x133461||0xc8;return function(_0x561fbf){if(_0x561fbf){return _0x791918[_0xd298('0x18')](_0x133461)[_0xd298('0x19')](_0x561fbf);}};}function respondWithFilteredResult(_0x28f9b3,_0x39e947){return function(_0x3940b8){if(_0x3940b8){var _0x3ecbd8=typeof _0x39e947['offset']===_0xd298('0x1a')&&typeof _0x39e947[_0xd298('0x1b')]===_0xd298('0x1a');var _0x105557=_0x3940b8['count'];var _0x307011=_0x3ecbd8?0x0:_0x39e947['offset'];var _0x1098af=_0x3ecbd8?_0x3940b8[_0xd298('0x1c')]:_0x39e947[_0xd298('0x1d')]+_0x39e947[_0xd298('0x1b')];var _0x5ccff5;if(_0x1098af>=_0x105557){_0x1098af=_0x105557;_0x5ccff5=0xc8;}else{_0x5ccff5=0xce;}_0x28f9b3['status'](_0x5ccff5);return _0x28f9b3[_0xd298('0x1e')]('Content-Range',_0x307011+'-'+_0x1098af+'/'+_0x105557)[_0xd298('0x19')](_0x3940b8);}return null;};}function patchUpdates(_0xe8f58f){return function(_0x16fd94){try{jsonpatch[_0xd298('0x1f')](_0x16fd94,_0xe8f58f,!![]);}catch(_0x2c52cc){return BPromise['reject'](_0x2c52cc);}return _0x16fd94[_0xd298('0x20')]();};}function saveUpdates(_0x346db1,_0x5625fd){return function(_0x20d413){if(_0x20d413){return _0x20d413[_0xd298('0x21')](_0x346db1)[_0xd298('0x22')](function(_0x41931a){return _0x41931a;});}return null;};}function removeEntity(_0x8df340,_0xf351ad){return function(_0x35433a){if(_0x35433a){return _0x35433a[_0xd298('0x23')]()[_0xd298('0x22')](function(){_0x8df340[_0xd298('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e209f,_0x50efb6){return function(_0x43982f){if(!_0x43982f){_0x5e209f['sendStatus'](0x194);}return _0x43982f;};}function handleError(_0x183dec,_0x15bfe7){_0x15bfe7=_0x15bfe7||0x1f4;return function(_0x2dedab){logger[_0xd298('0x24')](_0x2dedab['stack']);if(_0x2dedab[_0xd298('0x25')]){delete _0x2dedab[_0xd298('0x25')];}_0x183dec[_0xd298('0x18')](_0x15bfe7)[_0xd298('0x26')](_0x2dedab);};}exports[_0xd298('0x27')]=function(_0x3103f3,_0x338b18){var _0x3ac004={},_0x43a105={},_0x44ceca={'count':0x0,'rows':[]};var _0x1a33a0=_[_0xd298('0x28')](db[_0xd298('0x29')][_0xd298('0x2a')],function(_0x44d458){return{'name':_0x44d458['fieldName'],'type':_0x44d458['type'][_0xd298('0x2b')]};});_0x43a105[_0xd298('0x2c')]=_[_0xd298('0x28')](_0x1a33a0,_0xd298('0x25'));_0x43a105[_0xd298('0x2d')]=_[_0xd298('0x2e')](_0x3103f3['query']);_0x43a105[_0xd298('0x2f')]=_[_0xd298('0x30')](_0x43a105['model'],_0x43a105[_0xd298('0x2d')]);_0x3ac004[_0xd298('0x31')]=_[_0xd298('0x30')](_0x43a105[_0xd298('0x2c')],qs[_0xd298('0x32')](_0x3103f3[_0xd298('0x2d')][_0xd298('0x32')]));_0x3ac004[_0xd298('0x31')]=_0x3ac004[_0xd298('0x31')]['length']?_0x3ac004[_0xd298('0x31')]:_0x43a105['model'];if(!_0x3103f3['query'][_0xd298('0x33')](_0xd298('0x34'))){_0x3ac004['limit']=qs[_0xd298('0x1b')](_0x3103f3[_0xd298('0x2d')]['limit']);_0x3ac004[_0xd298('0x1d')]=qs['offset'](_0x3103f3[_0xd298('0x2d')][_0xd298('0x1d')]);}_0x3ac004[_0xd298('0x35')]=qs[_0xd298('0x36')](_0x3103f3[_0xd298('0x2d')][_0xd298('0x36')]);_0x3ac004['where']=qs[_0xd298('0x2f')](_[_0xd298('0x37')](_0x3103f3[_0xd298('0x2d')],_0x43a105['filters']),_0x1a33a0);if(_0x3103f3[_0xd298('0x2d')][_0xd298('0x38')]){_0x3ac004['where']=_[_0xd298('0x39')](_0x3ac004[_0xd298('0x3a')],{'$or':_[_0xd298('0x28')](_0x1a33a0,function(_0x5c143b){if(_0x5c143b['type']!=='VIRTUAL'){var _0x12c8af={};_0x12c8af[_0x5c143b['name']]={'$like':'%'+_0x3103f3['query'][_0xd298('0x38')]+'%'};return _0x12c8af;}})});}_0x3ac004=_[_0xd298('0x39')]({},_0x3ac004,_0x3103f3[_0xd298('0x3b')]);var _0x4a0540={'where':_0x3ac004[_0xd298('0x3a')]};return db[_0xd298('0x29')]['count'](_0x4a0540)[_0xd298('0x22')](function(_0x180fd7){_0x44ceca[_0xd298('0x1c')]=_0x180fd7;if(_0x3103f3['query'][_0xd298('0x3c')]){_0x3ac004[_0xd298('0x3d')]=[{'all':!![]}];}return db[_0xd298('0x29')]['findAll'](_0x3ac004);})[_0xd298('0x22')](function(_0x324744){_0x44ceca[_0xd298('0x3e')]=_0x324744;return _0x44ceca;})['then'](respondWithFilteredResult(_0x338b18,_0x3ac004))['catch'](handleError(_0x338b18,null));};exports[_0xd298('0x3f')]=function(_0x31cbdc,_0x3a2928){var _0x41cbd5={'raw':!![],'where':{'id':_0x31cbdc[_0xd298('0x40')]['id']}},_0x58ffcc={};_0x58ffcc[_0xd298('0x2c')]=_[_0xd298('0x2e')](db[_0xd298('0x29')][_0xd298('0x2a')]);_0x58ffcc[_0xd298('0x2d')]=_[_0xd298('0x2e')](_0x31cbdc[_0xd298('0x2d')]);_0x58ffcc['filters']=_[_0xd298('0x30')](_0x58ffcc[_0xd298('0x2c')],_0x58ffcc['query']);_0x41cbd5[_0xd298('0x31')]=_[_0xd298('0x30')](_0x58ffcc[_0xd298('0x2c')],qs[_0xd298('0x32')](_0x31cbdc[_0xd298('0x2d')][_0xd298('0x32')]));_0x41cbd5[_0xd298('0x31')]=_0x41cbd5[_0xd298('0x31')]['length']?_0x41cbd5[_0xd298('0x31')]:_0x58ffcc['model'];if(_0x31cbdc['query'][_0xd298('0x3c')]){_0x41cbd5['include']=[{'all':!![]}];}_0x41cbd5=_[_0xd298('0x39')]({},_0x41cbd5,_0x31cbdc[_0xd298('0x3b')]);return db['SquareReport']['find'](_0x41cbd5)['then'](handleEntityNotFound(_0x3a2928,null))['then'](respondWithResult(_0x3a2928,null))[_0xd298('0x41')](handleError(_0x3a2928,null));};exports[_0xd298('0x42')]=function(_0x7ffbb9,_0x3e2e14){return db[_0xd298('0x29')][_0xd298('0x42')](_0x7ffbb9[_0xd298('0x43')],{})['then'](respondWithResult(_0x3e2e14,0xc9))[_0xd298('0x41')](handleError(_0x3e2e14,null));};exports[_0xd298('0x21')]=function(_0x1144c8,_0x46bb72){if(_0x1144c8[_0xd298('0x43')]['id']){delete _0x1144c8[_0xd298('0x43')]['id'];}return db[_0xd298('0x29')][_0xd298('0x44')]({'where':{'id':_0x1144c8[_0xd298('0x40')]['id']}})[_0xd298('0x22')](handleEntityNotFound(_0x46bb72,null))[_0xd298('0x22')](saveUpdates(_0x1144c8[_0xd298('0x43')],null))[_0xd298('0x22')](respondWithResult(_0x46bb72,null))[_0xd298('0x41')](handleError(_0x46bb72,null));};exports['destroy']=function(_0x5ce173,_0x4d8c46){return db[_0xd298('0x29')][_0xd298('0x44')]({'where':{'id':_0x5ce173[_0xd298('0x40')]['id']}})[_0xd298('0x22')](handleEntityNotFound(_0x4d8c46,null))[_0xd298('0x22')](removeEntity(_0x4d8c46,null))[_0xd298('0x41')](handleError(_0x4d8c46,null));};exports[_0xd298('0x45')]=function(_0x35d613,_0x1906e9){return db[_0xd298('0x29')][_0xd298('0x45')]()['then'](respondWithResult(_0x1906e9,null))[_0xd298('0x41')](handleError(_0x1906e9,null));};
\ No newline at end of file
index d8b2070..d4aa418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd90b=['exports','define','report_square','uid_pname','uniqueid','project_name','leaveAt','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes'];(function(_0x4aea34,_0x5d1238){var _0x40f14e=function(_0x3d7cd6){while(--_0x3d7cd6){_0x4aea34['push'](_0x4aea34['shift']());}};_0x40f14e(++_0x5d1238);}(_0xd90b,0x177));var _0xbd90=function(_0x1979f8,_0x59ea0a){_0x1979f8=_0x1979f8-0x0;var _0x2ecd38=_0xd90b[_0x1979f8];return _0x2ecd38;};'use strict';var _=require('lodash');var util=require(_0xbd90('0x0'));var logger=require(_0xbd90('0x1'))(_0xbd90('0x2'));var moment=require('moment');var BPromise=require(_0xbd90('0x3'));var rp=require(_0xbd90('0x4'));var fs=require('fs');var path=require(_0xbd90('0x5'));var rimraf=require(_0xbd90('0x6'));var config=require(_0xbd90('0x7'));var attributes=require(_0xbd90('0x8'));module[_0xbd90('0x9')]=function(_0x47f9fc,_0x9d5b32){return _0x47f9fc[_0xbd90('0xa')]('SquareReport',attributes,{'tableName':_0xbd90('0xb'),'paranoid':![],'indexes':[{'name':_0xbd90('0xc'),'fields':[_0xbd90('0xd'),_0xbd90('0xe')]},{'name':_0xbd90('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f83=['project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','SquareReport','report_square','uniqueid'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0x7f83,0xb2));var _0x37f8=function(_0x31a4a2,_0x39c72a){_0x31a4a2=_0x31a4a2-0x0;var _0x53b04e=_0x7f83[_0x31a4a2];return _0x53b04e;};'use strict';var _=require(_0x37f8('0x0'));var util=require(_0x37f8('0x1'));var logger=require(_0x37f8('0x2'))(_0x37f8('0x3'));var moment=require(_0x37f8('0x4'));var BPromise=require(_0x37f8('0x5'));var rp=require(_0x37f8('0x6'));var fs=require('fs');var path=require(_0x37f8('0x7'));var rimraf=require(_0x37f8('0x8'));var config=require('../../config/environment');var attributes=require('./squareReport.attributes');module[_0x37f8('0x9')]=function(_0x56ac52,_0xf5749b){return _0x56ac52[_0x37f8('0xa')](_0x37f8('0xb'),attributes,{'tableName':_0x37f8('0xc'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x37f8('0xd'),_0x37f8('0xe')]},{'name':_0x37f8('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 6fa1469..e5d4105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f4=['then','info','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','SquareReport,\x20%s,\x20%s','message','result','catch','body','options','raw','CreateSquareReport','debug','stringify','UpdateSquareReport','SquareReport','update','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x18d5d7,_0x19074b){var _0x30a9ea=function(_0x514f3f){while(--_0x514f3f){_0x18d5d7['push'](_0x18d5d7['shift']());}};_0x30a9ea(++_0x19074b);}(_0x53f4,0x15f));var _0x453f=function(_0x3481a5,_0x64fd93){_0x3481a5=_0x3481a5-0x0;var _0x2cdefa=_0x53f4[_0x3481a5];return _0x2cdefa;};'use strict';var _=require(_0x453f('0x0'));var util=require('util');var moment=require(_0x453f('0x1'));var BPromise=require(_0x453f('0x2'));var rs=require(_0x453f('0x3'));var fs=require('fs');var Redis=require(_0x453f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x453f('0x5'));var logger=require(_0x453f('0x6'))(_0x453f('0x7'));var config=require('../../config/environment');var jayson=require(_0x453f('0x8'));var client=jayson[_0x453f('0x9')][_0x453f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x351d72,_0xf744f7,_0x3f3b51){return new BPromise(function(_0x4f5db8,_0x5faa34){return client[_0x453f('0xb')](_0x351d72,_0x3f3b51)[_0x453f('0xc')](function(_0x3c6eb6){logger[_0x453f('0xd')]('SquareReport,\x20%s,\x20%s',_0xf744f7,_0x453f('0xe'));logger['debug'](_0x453f('0xf'),_0xf744f7,_0x453f('0xe'),JSON['stringify'](_0x3c6eb6));if(_0x3c6eb6[_0x453f('0x10')]){if(_0x3c6eb6[_0x453f('0x10')]['code']===0x1f4){logger[_0x453f('0x10')](_0x453f('0x11'),_0xf744f7,_0x3c6eb6[_0x453f('0x10')][_0x453f('0x12')]);return _0x5faa34(_0x3c6eb6[_0x453f('0x10')]['message']);}logger[_0x453f('0x10')](_0x453f('0x11'),_0xf744f7,_0x3c6eb6[_0x453f('0x10')][_0x453f('0x12')]);return _0x4f5db8(_0x3c6eb6[_0x453f('0x10')][_0x453f('0x12')]);}else{logger[_0x453f('0xd')](_0x453f('0x11'),_0xf744f7,_0x453f('0xe'));_0x4f5db8(_0x3c6eb6[_0x453f('0x13')][_0x453f('0x12')]);}})[_0x453f('0x14')](function(_0x2571b7){logger[_0x453f('0x10')](_0x453f('0x11'),_0xf744f7,_0x2571b7);_0x5faa34(_0x2571b7);});});}exports['CreateSquareReport']=function(_0x478cf3){var _0x1196b9=this;return new Promise(function(_0x26c9e5,_0x86fbff){return db['SquareReport']['create'](_0x478cf3[_0x453f('0x15')],{'raw':_0x478cf3[_0x453f('0x16')]?_0x478cf3[_0x453f('0x16')][_0x453f('0x17')]===undefined?!![]:![]:!![]})[_0x453f('0xc')](function(_0x2512d4){logger[_0x453f('0xd')](_0x453f('0x18'),_0x478cf3);logger[_0x453f('0x19')](_0x453f('0x18'),_0x478cf3,JSON[_0x453f('0x1a')](_0x2512d4));_0x26c9e5(_0x2512d4);})[_0x453f('0x14')](function(_0x48dd6d){logger['error'](_0x453f('0x18'),_0x48dd6d[_0x453f('0x12')],_0x478cf3);_0x86fbff(_0x1196b9[_0x453f('0x10')](0x1f4,_0x48dd6d[_0x453f('0x12')]));});});};exports[_0x453f('0x1b')]=function(_0x2929ad){var _0x2be3aa=this;return new Promise(function(_0x11991c,_0x4896c6){return db[_0x453f('0x1c')][_0x453f('0x1d')](_0x2929ad[_0x453f('0x15')],{'raw':_0x2929ad[_0x453f('0x16')]?_0x2929ad[_0x453f('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2929ad[_0x453f('0x16')]?_0x2929ad[_0x453f('0x16')][_0x453f('0x1e')]||null:null,'attributes':_0x2929ad[_0x453f('0x16')]?_0x2929ad['options'][_0x453f('0x1f')]||null:null,'limit':_0x2929ad['options']?_0x2929ad['options'][_0x453f('0x20')]||null:null})[_0x453f('0xc')](function(_0x2bc1b5){logger[_0x453f('0xd')](_0x453f('0x1b'),_0x2929ad);logger['debug']('UpdateSquareReport',_0x2929ad,JSON['stringify'](_0x2bc1b5));_0x11991c(_0x2bc1b5);})[_0x453f('0x14')](function(_0xfc39e6){logger[_0x453f('0x10')](_0x453f('0x1b'),_0xfc39e6[_0x453f('0x12')],_0x2929ad);_0x4896c6(_0x2be3aa['error'](0x1f4,_0xfc39e6[_0x453f('0x12')]));});});};
\ No newline at end of file
+var _0x5dae=['SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SquareReport','body','raw','CreateSquareReport','catch','update','options','where','attributes','limit','UpdateSquareReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x263a8a,_0x5c088d){var _0x226a79=function(_0x53a7d1){while(--_0x53a7d1){_0x263a8a['push'](_0x263a8a['shift']());}};_0x226a79(++_0x5c088d);}(_0x5dae,0xca));var _0xe5da=function(_0x192fe2,_0x223608){_0x192fe2=_0x192fe2-0x0;var _0x4fafa4=_0x5dae[_0x192fe2];return _0x4fafa4;};'use strict';var _=require(_0xe5da('0x0'));var util=require(_0xe5da('0x1'));var moment=require(_0xe5da('0x2'));var BPromise=require(_0xe5da('0x3'));var rs=require(_0xe5da('0x4'));var fs=require('fs');var Redis=require(_0xe5da('0x5'));var db=require(_0xe5da('0x6'))['db'];var utils=require(_0xe5da('0x7'));var logger=require(_0xe5da('0x8'))(_0xe5da('0x9'));var config=require(_0xe5da('0xa'));var jayson=require(_0xe5da('0xb'));var client=jayson[_0xe5da('0xc')][_0xe5da('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1d46c4,_0x23557b,_0x37fb76){return new BPromise(function(_0x2e43cd,_0x4c9f42){return client[_0xe5da('0xe')](_0x1d46c4,_0x37fb76)[_0xe5da('0xf')](function(_0x54ccce){logger[_0xe5da('0x10')](_0xe5da('0x11'),_0x23557b,_0xe5da('0x12'));logger[_0xe5da('0x13')](_0xe5da('0x14'),_0x23557b,_0xe5da('0x12'),JSON[_0xe5da('0x15')](_0x54ccce));if(_0x54ccce[_0xe5da('0x16')]){if(_0x54ccce[_0xe5da('0x16')][_0xe5da('0x17')]===0x1f4){logger[_0xe5da('0x16')](_0xe5da('0x11'),_0x23557b,_0x54ccce[_0xe5da('0x16')][_0xe5da('0x18')]);return _0x4c9f42(_0x54ccce[_0xe5da('0x16')][_0xe5da('0x18')]);}logger[_0xe5da('0x16')](_0xe5da('0x11'),_0x23557b,_0x54ccce['error'][_0xe5da('0x18')]);return _0x2e43cd(_0x54ccce['error'][_0xe5da('0x18')]);}else{logger[_0xe5da('0x10')](_0xe5da('0x11'),_0x23557b,_0xe5da('0x12'));_0x2e43cd(_0x54ccce[_0xe5da('0x19')][_0xe5da('0x18')]);}})['catch'](function(_0x3e6308){logger[_0xe5da('0x16')]('SquareReport,\x20%s,\x20%s',_0x23557b,_0x3e6308);_0x4c9f42(_0x3e6308);});});}exports['CreateSquareReport']=function(_0xb2e6a1){var _0x381851=this;return new Promise(function(_0x6853e2,_0x3b47db){return db[_0xe5da('0x1a')]['create'](_0xb2e6a1[_0xe5da('0x1b')],{'raw':_0xb2e6a1['options']?_0xb2e6a1['options'][_0xe5da('0x1c')]===undefined?!![]:![]:!![]})[_0xe5da('0xf')](function(_0x18dcef){logger['info'](_0xe5da('0x1d'),_0xb2e6a1);logger[_0xe5da('0x13')](_0xe5da('0x1d'),_0xb2e6a1,JSON[_0xe5da('0x15')](_0x18dcef));_0x6853e2(_0x18dcef);})[_0xe5da('0x1e')](function(_0x3cee6f){logger[_0xe5da('0x16')](_0xe5da('0x1d'),_0x3cee6f['message'],_0xb2e6a1);_0x3b47db(_0x381851[_0xe5da('0x16')](0x1f4,_0x3cee6f[_0xe5da('0x18')]));});});};exports['UpdateSquareReport']=function(_0x135da9){var _0x15f8a5=this;return new Promise(function(_0x13582a,_0x2fdb22){return db[_0xe5da('0x1a')][_0xe5da('0x1f')](_0x135da9[_0xe5da('0x1b')],{'raw':_0x135da9[_0xe5da('0x20')]?_0x135da9['options'][_0xe5da('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x135da9['options']?_0x135da9[_0xe5da('0x20')][_0xe5da('0x21')]||null:null,'attributes':_0x135da9[_0xe5da('0x20')]?_0x135da9['options'][_0xe5da('0x22')]||null:null,'limit':_0x135da9[_0xe5da('0x20')]?_0x135da9[_0xe5da('0x20')][_0xe5da('0x23')]||null:null})['then'](function(_0x1117f4){logger[_0xe5da('0x10')](_0xe5da('0x24'),_0x135da9);logger[_0xe5da('0x13')](_0xe5da('0x24'),_0x135da9,JSON[_0xe5da('0x15')](_0x1117f4));_0x13582a(_0x1117f4);})[_0xe5da('0x1e')](function(_0x2dd45d){logger['error']('UpdateSquareReport',_0x2dd45d['message'],_0x135da9);_0x2fdb22(_0x15f8a5['error'](0x1f4,_0x2dd45d[_0xe5da('0x18')]));});});};
\ No newline at end of file
index 490b615..9a38b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4389=['../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','show','post','isAuthenticated','create','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x4389,0x76));var _0x9438=function(_0x3ca1df,_0x51a693){_0x3ca1df=_0x3ca1df-0x0;var _0x204237=_0x4389[_0x3ca1df];return _0x204237;};'use strict';var multer=require(_0x9438('0x0'));var util=require(_0x9438('0x1'));var path=require(_0x9438('0x2'));var timeout=require(_0x9438('0x3'));var express=require(_0x9438('0x4'));var router=express[_0x9438('0x5')]();var fs_extra=require(_0x9438('0x6'));var auth=require(_0x9438('0x7'));var interaction=require(_0x9438('0x8'));var config=require(_0x9438('0x9'));var controller=require('./squareReportDetail.controller');router[_0x9438('0xa')]('/',auth['isAuthenticated'](),controller[_0x9438('0xb')]);router['get'](_0x9438('0xc'),auth['isAuthenticated'](),controller[_0x9438('0xd')]);router[_0x9438('0xa')](_0x9438('0xe'),auth['isAuthenticated'](),controller[_0x9438('0xf')]);router[_0x9438('0x10')]('/',auth[_0x9438('0x11')](),controller[_0x9438('0x12')]);router[_0x9438('0x13')](_0x9438('0xe'),auth[_0x9438('0x11')](),controller['update']);router['delete'](_0x9438('0xe'),auth[_0x9438('0x11')](),controller['destroy']);module[_0x9438('0x14')]=router;
\ No newline at end of file
+var _0x6097=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','/:id','post','create','put','update','destroy','multer','util','path'];(function(_0x2c25dd,_0x3076b0){var _0x15558a=function(_0x4b79b2){while(--_0x4b79b2){_0x2c25dd['push'](_0x2c25dd['shift']());}};_0x15558a(++_0x3076b0);}(_0x6097,0xf4));var _0x7609=function(_0x4c2623,_0x4838bb){_0x4c2623=_0x4c2623-0x0;var _0x2be431=_0x6097[_0x4c2623];return _0x2be431;};'use strict';var multer=require(_0x7609('0x0'));var util=require(_0x7609('0x1'));var path=require(_0x7609('0x2'));var timeout=require(_0x7609('0x3'));var express=require(_0x7609('0x4'));var router=express[_0x7609('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7609('0x6'));var interaction=require(_0x7609('0x7'));var config=require(_0x7609('0x8'));var controller=require('./squareReportDetail.controller');router['get']('/',auth[_0x7609('0x9')](),controller[_0x7609('0xa')]);router[_0x7609('0xb')](_0x7609('0xc'),auth[_0x7609('0x9')](),controller['describe']);router['get'](_0x7609('0xd'),auth[_0x7609('0x9')](),controller['show']);router[_0x7609('0xe')]('/',auth[_0x7609('0x9')](),controller[_0x7609('0xf')]);router[_0x7609('0x10')]('/:id',auth[_0x7609('0x9')](),controller[_0x7609('0x11')]);router['delete'](_0x7609('0xd'),auth[_0x7609('0x9')](),controller[_0x7609('0x12')]);module['exports']=router;
\ No newline at end of file
index 3a07b7c..21da748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb085=['TEXT','sequelize','exports','STRING'];(function(_0x4bc7e5,_0xa2bde2){var _0x15d9a5=function(_0x49e7d4){while(--_0x49e7d4){_0x4bc7e5['push'](_0x4bc7e5['shift']());}};_0x15d9a5(++_0xa2bde2);}(_0xb085,0x99));var _0x5b08=function(_0x436f08,_0x2a413c){_0x436f08=_0x436f08-0x0;var _0x325dc4=_0xb085[_0x436f08];return _0x325dc4;};'use strict';var Sequelize=require(_0x5b08('0x0'));module[_0x5b08('0x1')]={'uniqueid':{'type':Sequelize[_0x5b08('0x2')]},'node':{'type':Sequelize[_0x5b08('0x2')]},'application':{'type':Sequelize[_0x5b08('0x2')]},'data':{'type':Sequelize[_0x5b08('0x3')]},'project_name':{'type':Sequelize[_0x5b08('0x2')]},'callerid':{'type':Sequelize[_0x5b08('0x2')]}};
\ No newline at end of file
+var _0xcf10=['exports','STRING','sequelize'];(function(_0xf1ceb4,_0x3443e6){var _0x42ed45=function(_0x9ec7fa){while(--_0x9ec7fa){_0xf1ceb4['push'](_0xf1ceb4['shift']());}};_0x42ed45(++_0x3443e6);}(_0xcf10,0xd4));var _0x0cf1=function(_0x56e32e,_0x9eb2f6){_0x56e32e=_0x56e32e-0x0;var _0x2a757b=_0xcf10[_0x56e32e];return _0x2a757b;};'use strict';var Sequelize=require(_0x0cf1('0x0'));module[_0x0cf1('0x1')]={'uniqueid':{'type':Sequelize[_0x0cf1('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x0cf1('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x0cf1('0x2')]}};
\ No newline at end of file
index cede00d..b905c1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc967=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','limit','undefined','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x5ad794,_0x330eb1){var _0x58d45e=function(_0x28c899){while(--_0x28c899){_0x5ad794['push'](_0x5ad794['shift']());}};_0x58d45e(++_0x330eb1);}(_0xc967,0xe4));var _0x7c96=function(_0x53a6f8,_0x284333){_0x53a6f8=_0x53a6f8-0x0;var _0xa5fd62=_0xc967[_0x53a6f8];return _0xa5fd62;};'use strict';var emlformat=require(_0x7c96('0x0'));var rimraf=require(_0x7c96('0x1'));var zipdir=require(_0x7c96('0x2'));var jsonpatch=require(_0x7c96('0x3'));var rp=require(_0x7c96('0x4'));var moment=require(_0x7c96('0x5'));var BPromise=require(_0x7c96('0x6'));var Mustache=require(_0x7c96('0x7'));var util=require('util');var path=require('path');var sox=require(_0x7c96('0x8'));var csv=require(_0x7c96('0x9'));var ejs=require(_0x7c96('0xa'));var fs=require('fs');var fs_extra=require(_0x7c96('0xb'));var _=require(_0x7c96('0xc'));var squel=require(_0x7c96('0xd'));var crypto=require(_0x7c96('0xe'));var jsforce=require(_0x7c96('0xf'));var deskjs=require(_0x7c96('0x10'));var toCsv=require(_0x7c96('0x9'));var querystring=require(_0x7c96('0x11'));var Papa=require(_0x7c96('0x12'));var Redis=require(_0x7c96('0x13'));var authService=require(_0x7c96('0x14'));var qs=require(_0x7c96('0x15'));var as=require(_0x7c96('0x16'));var hardwareService=require(_0x7c96('0x17'));var logger=require('../../config/logger')(_0x7c96('0x18'));var utils=require(_0x7c96('0x19'));var config=require(_0x7c96('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x36df4e,_0x34c591){_0x34c591=_0x34c591||0xcc;return function(_0x42b305){if(_0x42b305){return _0x36df4e[_0x7c96('0x1b')](_0x34c591);}return _0x36df4e['status'](_0x34c591)[_0x7c96('0x1c')]();};}function respondWithResult(_0x1bc6d8,_0x22fa20){_0x22fa20=_0x22fa20||0xc8;return function(_0x1133a6){if(_0x1133a6){return _0x1bc6d8[_0x7c96('0x1d')](_0x22fa20)[_0x7c96('0x1e')](_0x1133a6);}};}function respondWithFilteredResult(_0x53ba1c,_0x621686){return function(_0x4c91e5){if(_0x4c91e5){var _0x475dce=typeof _0x621686[_0x7c96('0x1f')]==='undefined'&&typeof _0x621686[_0x7c96('0x20')]===_0x7c96('0x21');var _0x1706fa=_0x4c91e5['count'];var _0xe8d360=_0x475dce?0x0:_0x621686[_0x7c96('0x1f')];var _0x5b9b7e=_0x475dce?_0x4c91e5['count']:_0x621686[_0x7c96('0x1f')]+_0x621686[_0x7c96('0x20')];var _0x58efe5;if(_0x5b9b7e>=_0x1706fa){_0x5b9b7e=_0x1706fa;_0x58efe5=0xc8;}else{_0x58efe5=0xce;}_0x53ba1c[_0x7c96('0x1d')](_0x58efe5);return _0x53ba1c[_0x7c96('0x22')](_0x7c96('0x23'),_0xe8d360+'-'+_0x5b9b7e+'/'+_0x1706fa)[_0x7c96('0x1e')](_0x4c91e5);}return null;};}function patchUpdates(_0x1fe1d6){return function(_0x222b53){try{jsonpatch[_0x7c96('0x24')](_0x222b53,_0x1fe1d6,!![]);}catch(_0x1f05e8){return BPromise[_0x7c96('0x25')](_0x1f05e8);}return _0x222b53[_0x7c96('0x26')]();};}function saveUpdates(_0x3c470a,_0x13b283){return function(_0x17745d){if(_0x17745d){return _0x17745d[_0x7c96('0x27')](_0x3c470a)['then'](function(_0x461652){return _0x461652;});}return null;};}function removeEntity(_0x476cbc,_0x695d12){return function(_0x3833a6){if(_0x3833a6){return _0x3833a6[_0x7c96('0x28')]()[_0x7c96('0x29')](function(){_0x476cbc[_0x7c96('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x567179,_0x243f10){return function(_0x301151){if(!_0x301151){_0x567179['sendStatus'](0x194);}return _0x301151;};}function handleError(_0xacf8ec,_0x144d92){_0x144d92=_0x144d92||0x1f4;return function(_0x52550d){logger['error'](_0x52550d[_0x7c96('0x2a')]);if(_0x52550d[_0x7c96('0x2b')]){delete _0x52550d[_0x7c96('0x2b')];}_0xacf8ec[_0x7c96('0x1d')](_0x144d92)[_0x7c96('0x2c')](_0x52550d);};}exports[_0x7c96('0x2d')]=function(_0x15338b,_0x263a39){var _0x36671f={},_0x1d01b0={},_0x5ac08d={'count':0x0,'rows':[]};var _0x8b33f3=_[_0x7c96('0x2e')](db[_0x7c96('0x2f')][_0x7c96('0x30')],function(_0x457dfc){return{'name':_0x457dfc[_0x7c96('0x31')],'type':_0x457dfc[_0x7c96('0x32')][_0x7c96('0x33')]};});_0x1d01b0['model']=_[_0x7c96('0x2e')](_0x8b33f3,_0x7c96('0x2b'));_0x1d01b0[_0x7c96('0x34')]=_[_0x7c96('0x35')](_0x15338b[_0x7c96('0x34')]);_0x1d01b0[_0x7c96('0x36')]=_[_0x7c96('0x37')](_0x1d01b0[_0x7c96('0x38')],_0x1d01b0[_0x7c96('0x34')]);_0x36671f[_0x7c96('0x39')]=_[_0x7c96('0x37')](_0x1d01b0[_0x7c96('0x38')],qs['fields'](_0x15338b[_0x7c96('0x34')][_0x7c96('0x3a')]));_0x36671f[_0x7c96('0x39')]=_0x36671f[_0x7c96('0x39')][_0x7c96('0x3b')]?_0x36671f['attributes']:_0x1d01b0[_0x7c96('0x38')];if(!_0x15338b[_0x7c96('0x34')][_0x7c96('0x3c')](_0x7c96('0x3d'))){_0x36671f[_0x7c96('0x20')]=qs[_0x7c96('0x20')](_0x15338b[_0x7c96('0x34')][_0x7c96('0x20')]);_0x36671f[_0x7c96('0x1f')]=qs[_0x7c96('0x1f')](_0x15338b[_0x7c96('0x34')][_0x7c96('0x1f')]);}_0x36671f[_0x7c96('0x3e')]=qs[_0x7c96('0x3f')](_0x15338b[_0x7c96('0x34')][_0x7c96('0x3f')]);_0x36671f[_0x7c96('0x40')]=qs[_0x7c96('0x36')](_[_0x7c96('0x41')](_0x15338b[_0x7c96('0x34')],_0x1d01b0[_0x7c96('0x36')]),_0x8b33f3);if(_0x15338b[_0x7c96('0x34')][_0x7c96('0x42')]){_0x36671f['where']=_[_0x7c96('0x43')](_0x36671f[_0x7c96('0x40')],{'$or':_[_0x7c96('0x2e')](_0x8b33f3,function(_0x571b4c){if(_0x571b4c[_0x7c96('0x32')]!==_0x7c96('0x44')){var _0x2443af={};_0x2443af[_0x571b4c[_0x7c96('0x2b')]]={'$like':'%'+_0x15338b[_0x7c96('0x34')]['filter']+'%'};return _0x2443af;}})});}_0x36671f=_[_0x7c96('0x43')]({},_0x36671f,_0x15338b['options']);var _0x12e3e4={'where':_0x36671f[_0x7c96('0x40')]};return db[_0x7c96('0x2f')][_0x7c96('0x45')](_0x12e3e4)[_0x7c96('0x29')](function(_0x1f9574){_0x5ac08d[_0x7c96('0x45')]=_0x1f9574;if(_0x15338b[_0x7c96('0x34')]['includeAll']){_0x36671f[_0x7c96('0x46')]=[{'all':!![]}];}return db[_0x7c96('0x2f')][_0x7c96('0x47')](_0x36671f);})[_0x7c96('0x29')](function(_0x53e138){_0x5ac08d[_0x7c96('0x48')]=_0x53e138;return _0x5ac08d;})[_0x7c96('0x29')](respondWithFilteredResult(_0x263a39,_0x36671f))[_0x7c96('0x49')](handleError(_0x263a39,null));};exports[_0x7c96('0x4a')]=function(_0x41afdd,_0x5a6ccb){var _0x8fbc1b={'raw':!![],'where':{'id':_0x41afdd['params']['id']}},_0x46f5b1={};_0x46f5b1['model']=_['keys'](db['SquareDetailsReport'][_0x7c96('0x30')]);_0x46f5b1[_0x7c96('0x34')]=_[_0x7c96('0x35')](_0x41afdd[_0x7c96('0x34')]);_0x46f5b1['filters']=_[_0x7c96('0x37')](_0x46f5b1[_0x7c96('0x38')],_0x46f5b1['query']);_0x8fbc1b['attributes']=_[_0x7c96('0x37')](_0x46f5b1[_0x7c96('0x38')],qs[_0x7c96('0x3a')](_0x41afdd['query']['fields']));_0x8fbc1b['attributes']=_0x8fbc1b[_0x7c96('0x39')][_0x7c96('0x3b')]?_0x8fbc1b['attributes']:_0x46f5b1[_0x7c96('0x38')];if(_0x41afdd[_0x7c96('0x34')][_0x7c96('0x4b')]){_0x8fbc1b['include']=[{'all':!![]}];}_0x8fbc1b=_[_0x7c96('0x43')]({},_0x8fbc1b,_0x41afdd['options']);return db['SquareDetailsReport'][_0x7c96('0x4c')](_0x8fbc1b)[_0x7c96('0x29')](handleEntityNotFound(_0x5a6ccb,null))[_0x7c96('0x29')](respondWithResult(_0x5a6ccb,null))[_0x7c96('0x49')](handleError(_0x5a6ccb,null));};exports[_0x7c96('0x4d')]=function(_0x383333,_0xbc4689){return db[_0x7c96('0x2f')][_0x7c96('0x4d')](_0x383333['body'],{})[_0x7c96('0x29')](respondWithResult(_0xbc4689,0xc9))[_0x7c96('0x49')](handleError(_0xbc4689,null));};exports['update']=function(_0x13f564,_0x1fb8bf){if(_0x13f564[_0x7c96('0x4e')]['id']){delete _0x13f564['body']['id'];}return db[_0x7c96('0x2f')][_0x7c96('0x4c')]({'where':{'id':_0x13f564['params']['id']}})[_0x7c96('0x29')](handleEntityNotFound(_0x1fb8bf,null))[_0x7c96('0x29')](saveUpdates(_0x13f564[_0x7c96('0x4e')],null))[_0x7c96('0x29')](respondWithResult(_0x1fb8bf,null))['catch'](handleError(_0x1fb8bf,null));};exports[_0x7c96('0x28')]=function(_0x3b605a,_0x252e27){return db[_0x7c96('0x2f')][_0x7c96('0x4c')]({'where':{'id':_0x3b605a[_0x7c96('0x4f')]['id']}})[_0x7c96('0x29')](handleEntityNotFound(_0x252e27,null))[_0x7c96('0x29')](removeEntity(_0x252e27,null))[_0x7c96('0x49')](handleError(_0x252e27,null));};exports['describe']=function(_0x385c2c,_0xc903d9){return db['SquareDetailsReport'][_0x7c96('0x50')]()['then'](respondWithResult(_0xc903d9,null))[_0x7c96('0x49')](handleError(_0xc903d9,null));};
\ No newline at end of file
+var _0x5f48=['reject','save','update','then','error','send','index','map','rawAttributes','type','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','SquareDetailsReport','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x5f48,0x154));var _0x85f4=function(_0xd1a169,_0xe3e884){_0xd1a169=_0xd1a169-0x0;var _0x561a19=_0x5f48[_0xd1a169];return _0x561a19;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x85f4('0x0'));var zipdir=require(_0x85f4('0x1'));var jsonpatch=require(_0x85f4('0x2'));var rp=require(_0x85f4('0x3'));var moment=require(_0x85f4('0x4'));var BPromise=require(_0x85f4('0x5'));var Mustache=require(_0x85f4('0x6'));var util=require('util');var path=require(_0x85f4('0x7'));var sox=require(_0x85f4('0x8'));var csv=require(_0x85f4('0x9'));var ejs=require(_0x85f4('0xa'));var fs=require('fs');var fs_extra=require(_0x85f4('0xb'));var _=require(_0x85f4('0xc'));var squel=require(_0x85f4('0xd'));var crypto=require(_0x85f4('0xe'));var jsforce=require(_0x85f4('0xf'));var deskjs=require(_0x85f4('0x10'));var toCsv=require('to-csv');var querystring=require(_0x85f4('0x11'));var Papa=require('papaparse');var Redis=require(_0x85f4('0x12'));var authService=require(_0x85f4('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x85f4('0x14'));var hardwareService=require(_0x85f4('0x15'));var logger=require(_0x85f4('0x16'))('api');var utils=require(_0x85f4('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b2d63,_0x202d33){_0x202d33=_0x202d33||0xcc;return function(_0x2ce7b4){if(_0x2ce7b4){return _0x2b2d63[_0x85f4('0x18')](_0x202d33);}return _0x2b2d63[_0x85f4('0x19')](_0x202d33)[_0x85f4('0x1a')]();};}function respondWithResult(_0x2603a4,_0x291677){_0x291677=_0x291677||0xc8;return function(_0x10fb0e){if(_0x10fb0e){return _0x2603a4[_0x85f4('0x19')](_0x291677)[_0x85f4('0x1b')](_0x10fb0e);}};}function respondWithFilteredResult(_0x2b44ec,_0x508043){return function(_0x838248){if(_0x838248){var _0x169efd=typeof _0x508043[_0x85f4('0x1c')]===_0x85f4('0x1d')&&typeof _0x508043[_0x85f4('0x1e')]===_0x85f4('0x1d');var _0x4e6363=_0x838248[_0x85f4('0x1f')];var _0x2d1a64=_0x169efd?0x0:_0x508043[_0x85f4('0x1c')];var _0x22d5f5=_0x169efd?_0x838248['count']:_0x508043['offset']+_0x508043[_0x85f4('0x1e')];var _0x2aa789;if(_0x22d5f5>=_0x4e6363){_0x22d5f5=_0x4e6363;_0x2aa789=0xc8;}else{_0x2aa789=0xce;}_0x2b44ec[_0x85f4('0x19')](_0x2aa789);return _0x2b44ec[_0x85f4('0x20')](_0x85f4('0x21'),_0x2d1a64+'-'+_0x22d5f5+'/'+_0x4e6363)[_0x85f4('0x1b')](_0x838248);}return null;};}function patchUpdates(_0x239ef3){return function(_0x599b8d){try{jsonpatch[_0x85f4('0x22')](_0x599b8d,_0x239ef3,!![]);}catch(_0x1981f4){return BPromise[_0x85f4('0x23')](_0x1981f4);}return _0x599b8d[_0x85f4('0x24')]();};}function saveUpdates(_0x3ce7ca,_0x516119){return function(_0x493e1a){if(_0x493e1a){return _0x493e1a[_0x85f4('0x25')](_0x3ce7ca)[_0x85f4('0x26')](function(_0x130b11){return _0x130b11;});}return null;};}function removeEntity(_0x9da089,_0x1739f1){return function(_0x2ef7a4){if(_0x2ef7a4){return _0x2ef7a4['destroy']()['then'](function(){_0x9da089[_0x85f4('0x19')](0xcc)[_0x85f4('0x1a')]();});}};}function handleEntityNotFound(_0x159dfe,_0xa92959){return function(_0x429506){if(!_0x429506){_0x159dfe[_0x85f4('0x18')](0x194);}return _0x429506;};}function handleError(_0x4ead5b,_0x1e11f1){_0x1e11f1=_0x1e11f1||0x1f4;return function(_0x44ca63){logger[_0x85f4('0x27')](_0x44ca63['stack']);if(_0x44ca63['name']){delete _0x44ca63['name'];}_0x4ead5b[_0x85f4('0x19')](_0x1e11f1)[_0x85f4('0x28')](_0x44ca63);};}exports[_0x85f4('0x29')]=function(_0x1132ff,_0x5bcdf8){var _0x55cb17={},_0xc5dc3a={},_0xf68e05={'count':0x0,'rows':[]};var _0x35cb5e=_[_0x85f4('0x2a')](db['SquareDetailsReport'][_0x85f4('0x2b')],function(_0x1e8811){return{'name':_0x1e8811['fieldName'],'type':_0x1e8811[_0x85f4('0x2c')][_0x85f4('0x2d')]};});_0xc5dc3a[_0x85f4('0x2e')]=_['map'](_0x35cb5e,_0x85f4('0x2f'));_0xc5dc3a['query']=_['keys'](_0x1132ff[_0x85f4('0x30')]);_0xc5dc3a[_0x85f4('0x31')]=_[_0x85f4('0x32')](_0xc5dc3a['model'],_0xc5dc3a[_0x85f4('0x30')]);_0x55cb17['attributes']=_[_0x85f4('0x32')](_0xc5dc3a['model'],qs[_0x85f4('0x33')](_0x1132ff[_0x85f4('0x30')]['fields']));_0x55cb17[_0x85f4('0x34')]=_0x55cb17[_0x85f4('0x34')][_0x85f4('0x35')]?_0x55cb17[_0x85f4('0x34')]:_0xc5dc3a[_0x85f4('0x2e')];if(!_0x1132ff['query'][_0x85f4('0x36')](_0x85f4('0x37'))){_0x55cb17['limit']=qs['limit'](_0x1132ff[_0x85f4('0x30')]['limit']);_0x55cb17[_0x85f4('0x1c')]=qs[_0x85f4('0x1c')](_0x1132ff[_0x85f4('0x30')][_0x85f4('0x1c')]);}_0x55cb17['order']=qs[_0x85f4('0x38')](_0x1132ff[_0x85f4('0x30')][_0x85f4('0x38')]);_0x55cb17[_0x85f4('0x39')]=qs['filters'](_['pick'](_0x1132ff[_0x85f4('0x30')],_0xc5dc3a[_0x85f4('0x31')]),_0x35cb5e);if(_0x1132ff[_0x85f4('0x30')][_0x85f4('0x3a')]){_0x55cb17['where']=_[_0x85f4('0x3b')](_0x55cb17['where'],{'$or':_['map'](_0x35cb5e,function(_0x27c444){if(_0x27c444[_0x85f4('0x2c')]!==_0x85f4('0x3c')){var _0x3edb7e={};_0x3edb7e[_0x27c444[_0x85f4('0x2f')]]={'$like':'%'+_0x1132ff['query'][_0x85f4('0x3a')]+'%'};return _0x3edb7e;}})});}_0x55cb17=_[_0x85f4('0x3b')]({},_0x55cb17,_0x1132ff[_0x85f4('0x3d')]);var _0x40b6c5={'where':_0x55cb17[_0x85f4('0x39')]};return db[_0x85f4('0x3e')][_0x85f4('0x1f')](_0x40b6c5)[_0x85f4('0x26')](function(_0x2684f8){_0xf68e05[_0x85f4('0x1f')]=_0x2684f8;if(_0x1132ff[_0x85f4('0x30')][_0x85f4('0x3f')]){_0x55cb17[_0x85f4('0x40')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x85f4('0x41')](_0x55cb17);})[_0x85f4('0x26')](function(_0x540f36){_0xf68e05[_0x85f4('0x42')]=_0x540f36;return _0xf68e05;})[_0x85f4('0x26')](respondWithFilteredResult(_0x5bcdf8,_0x55cb17))[_0x85f4('0x43')](handleError(_0x5bcdf8,null));};exports[_0x85f4('0x44')]=function(_0x579b61,_0x4661c1){var _0x2aa2da={'raw':!![],'where':{'id':_0x579b61[_0x85f4('0x45')]['id']}},_0x4dd641={};_0x4dd641['model']=_[_0x85f4('0x46')](db[_0x85f4('0x3e')][_0x85f4('0x2b')]);_0x4dd641[_0x85f4('0x30')]=_['keys'](_0x579b61['query']);_0x4dd641[_0x85f4('0x31')]=_[_0x85f4('0x32')](_0x4dd641[_0x85f4('0x2e')],_0x4dd641['query']);_0x2aa2da[_0x85f4('0x34')]=_['intersection'](_0x4dd641[_0x85f4('0x2e')],qs['fields'](_0x579b61[_0x85f4('0x30')][_0x85f4('0x33')]));_0x2aa2da['attributes']=_0x2aa2da[_0x85f4('0x34')]['length']?_0x2aa2da[_0x85f4('0x34')]:_0x4dd641['model'];if(_0x579b61['query'][_0x85f4('0x3f')]){_0x2aa2da[_0x85f4('0x40')]=[{'all':!![]}];}_0x2aa2da=_[_0x85f4('0x3b')]({},_0x2aa2da,_0x579b61[_0x85f4('0x3d')]);return db[_0x85f4('0x3e')][_0x85f4('0x47')](_0x2aa2da)[_0x85f4('0x26')](handleEntityNotFound(_0x4661c1,null))[_0x85f4('0x26')](respondWithResult(_0x4661c1,null))['catch'](handleError(_0x4661c1,null));};exports['create']=function(_0x55ded2,_0xaec810){return db[_0x85f4('0x3e')][_0x85f4('0x48')](_0x55ded2[_0x85f4('0x49')],{})['then'](respondWithResult(_0xaec810,0xc9))[_0x85f4('0x43')](handleError(_0xaec810,null));};exports[_0x85f4('0x25')]=function(_0x40a6a0,_0x265e07){if(_0x40a6a0[_0x85f4('0x49')]['id']){delete _0x40a6a0['body']['id'];}return db[_0x85f4('0x3e')][_0x85f4('0x47')]({'where':{'id':_0x40a6a0['params']['id']}})[_0x85f4('0x26')](handleEntityNotFound(_0x265e07,null))[_0x85f4('0x26')](saveUpdates(_0x40a6a0[_0x85f4('0x49')],null))[_0x85f4('0x26')](respondWithResult(_0x265e07,null))[_0x85f4('0x43')](handleError(_0x265e07,null));};exports['destroy']=function(_0x50dddf,_0x150a03){return db[_0x85f4('0x3e')][_0x85f4('0x47')]({'where':{'id':_0x50dddf['params']['id']}})[_0x85f4('0x26')](handleEntityNotFound(_0x150a03,null))[_0x85f4('0x26')](removeEntity(_0x150a03,null))[_0x85f4('0x43')](handleError(_0x150a03,null));};exports[_0x85f4('0x4a')]=function(_0x5e058c,_0x3b6aa4){return db[_0x85f4('0x3e')][_0x85f4('0x4a')]()[_0x85f4('0x26')](respondWithResult(_0x3b6aa4,null))[_0x85f4('0x43')](handleError(_0x3b6aa4,null));};
\ No newline at end of file
index 3d44c1c..5217377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c64=['path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5932c4,_0x1b58ab){var _0x53acee=function(_0x2f4c86){while(--_0x2f4c86){_0x5932c4['push'](_0x5932c4['shift']());}};_0x53acee(++_0x1b58ab);}(_0x9c64,0x165));var _0x49c6=function(_0x9757a9,_0x22b828){_0x9757a9=_0x9757a9-0x0;var _0x9954db=_0x9c64[_0x9757a9];return _0x9954db;};'use strict';var _=require(_0x49c6('0x0'));var util=require(_0x49c6('0x1'));var logger=require(_0x49c6('0x2'))(_0x49c6('0x3'));var moment=require(_0x49c6('0x4'));var BPromise=require(_0x49c6('0x5'));var rp=require(_0x49c6('0x6'));var fs=require('fs');var path=require(_0x49c6('0x7'));var rimraf=require(_0x49c6('0x8'));var config=require(_0x49c6('0x9'));var attributes=require(_0x49c6('0xa'));module[_0x49c6('0xb')]=function(_0x473d18,_0xf2a725){return _0x473d18[_0x49c6('0xc')](_0x49c6('0xd'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc2ee=['SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','bluebird','request-promise','exports','define'];(function(_0x43e73e,_0x4b9c69){var _0x4449d2=function(_0x22a32a){while(--_0x22a32a){_0x43e73e['push'](_0x43e73e['shift']());}};_0x4449d2(++_0x4b9c69);}(_0xc2ee,0x7a));var _0xec2e=function(_0x3e8915,_0x26795a){_0x3e8915=_0x3e8915-0x0;var _0x4bcc0d=_0xc2ee[_0x3e8915];return _0x4bcc0d;};'use strict';var _=require(_0xec2e('0x0'));var util=require(_0xec2e('0x1'));var logger=require(_0xec2e('0x2'))(_0xec2e('0x3'));var moment=require('moment');var BPromise=require(_0xec2e('0x4'));var rp=require(_0xec2e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareReportDetail.attributes');module[_0xec2e('0x6')]=function(_0x57865d,_0x53ab2e){return _0x57865d[_0xec2e('0x7')](_0xec2e('0x8'),attributes,{'tableName':_0xec2e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c87d0a4..92186cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['stringify','error','message','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','then','debug','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s'];(function(_0x463165,_0x4d8ea3){var _0x5e0360=function(_0x4128f6){while(--_0x4128f6){_0x463165['push'](_0x463165['shift']());}};_0x5e0360(++_0x4d8ea3);}(_0xd824,0xc2));var _0x4d82=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xd824[_0x4a9fb1];return _0x348672;};'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});function respondWithRpcPromise(_0x4b842f,_0x464caf,_0xb54db2){return new BPromise(function(_0x13d624,_0x5cccb6){return client[_0x4d82('0x9')](_0x4b842f,_0xb54db2)['then'](function(_0x5356cd){logger[_0x4d82('0xa')](_0x4d82('0xb'),_0x464caf,_0x4d82('0xc'));logger['debug'](_0x4d82('0xd'),_0x464caf,'request\x20sent',JSON[_0x4d82('0xe')](_0x5356cd));if(_0x5356cd[_0x4d82('0xf')]){if(_0x5356cd[_0x4d82('0xf')]['code']===0x1f4){logger['error'](_0x4d82('0xb'),_0x464caf,_0x5356cd[_0x4d82('0xf')][_0x4d82('0x10')]);return _0x5cccb6(_0x5356cd[_0x4d82('0xf')]['message']);}logger[_0x4d82('0xf')](_0x4d82('0xb'),_0x464caf,_0x5356cd[_0x4d82('0xf')]['message']);return _0x13d624(_0x5356cd[_0x4d82('0xf')]['message']);}else{logger[_0x4d82('0xa')]('SquareDetailsReport,\x20%s,\x20%s',_0x464caf,_0x4d82('0xc'));_0x13d624(_0x5356cd['result'][_0x4d82('0x10')]);}})[_0x4d82('0x11')](function(_0x461476){logger[_0x4d82('0xf')](_0x4d82('0xb'),_0x464caf,_0x461476);_0x5cccb6(_0x461476);});});}exports[_0x4d82('0x12')]=function(_0x258c59){var _0x217b72=this;return new Promise(function(_0x2f2127,_0x5ef783){return db[_0x4d82('0x13')][_0x4d82('0x14')](_0x258c59[_0x4d82('0x15')],{'raw':_0x258c59[_0x4d82('0x16')]?_0x258c59[_0x4d82('0x16')][_0x4d82('0x17')]===undefined?!![]:![]:!![]})[_0x4d82('0x18')](function(_0x64669c){logger[_0x4d82('0xa')](_0x4d82('0x12'),_0x258c59);logger[_0x4d82('0x19')]('CreateSquareDetailsReport',_0x258c59,JSON[_0x4d82('0xe')](_0x64669c));_0x2f2127(_0x64669c);})[_0x4d82('0x11')](function(_0x5e5bdf){logger[_0x4d82('0xf')](_0x4d82('0x12'),_0x5e5bdf[_0x4d82('0x10')],_0x258c59);_0x5ef783(_0x217b72[_0x4d82('0xf')](0x1f4,_0x5e5bdf[_0x4d82('0x10')]));});});};
\ No newline at end of file
+var _0x4fad=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport','create','body','options','raw','CreateSquareDetailsReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4fad,0xcb));var _0xd4fa=function(_0x2ea4ed,_0x503bbc){_0x2ea4ed=_0x2ea4ed-0x0;var _0x38d249=_0x4fad[_0x2ea4ed];return _0x38d249;};'use strict';var _=require(_0xd4fa('0x0'));var util=require(_0xd4fa('0x1'));var moment=require(_0xd4fa('0x2'));var BPromise=require('bluebird');var rs=require(_0xd4fa('0x3'));var fs=require('fs');var Redis=require(_0xd4fa('0x4'));var db=require(_0xd4fa('0x5'))['db'];var utils=require(_0xd4fa('0x6'));var logger=require(_0xd4fa('0x7'))(_0xd4fa('0x8'));var config=require(_0xd4fa('0x9'));var jayson=require(_0xd4fa('0xa'));var client=jayson['client'][_0xd4fa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52b426,_0x2b9f6a,_0x19a910){return new BPromise(function(_0x155c09,_0x3fff99){return client[_0xd4fa('0xc')](_0x52b426,_0x19a910)['then'](function(_0x26a894){logger[_0xd4fa('0xd')](_0xd4fa('0xe'),_0x2b9f6a,'request\x20sent');logger[_0xd4fa('0xf')](_0xd4fa('0x10'),_0x2b9f6a,_0xd4fa('0x11'),JSON[_0xd4fa('0x12')](_0x26a894));if(_0x26a894['error']){if(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x14')]===0x1f4){logger[_0xd4fa('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x2b9f6a,_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);return _0x3fff99(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);}logger[_0xd4fa('0x13')](_0xd4fa('0xe'),_0x2b9f6a,_0x26a894['error'][_0xd4fa('0x15')]);return _0x155c09(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);}else{logger[_0xd4fa('0xd')](_0xd4fa('0xe'),_0x2b9f6a,_0xd4fa('0x11'));_0x155c09(_0x26a894[_0xd4fa('0x16')]['message']);}})[_0xd4fa('0x17')](function(_0x3a3b8c){logger[_0xd4fa('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x2b9f6a,_0x3a3b8c);_0x3fff99(_0x3a3b8c);});});}exports['CreateSquareDetailsReport']=function(_0x1faa0b){var _0x5601d6=this;return new Promise(function(_0x5df190,_0x1f9be1){return db[_0xd4fa('0x18')][_0xd4fa('0x19')](_0x1faa0b[_0xd4fa('0x1a')],{'raw':_0x1faa0b['options']?_0x1faa0b[_0xd4fa('0x1b')][_0xd4fa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0xbf7dcf){logger['info']('CreateSquareDetailsReport',_0x1faa0b);logger[_0xd4fa('0xf')](_0xd4fa('0x1d'),_0x1faa0b,JSON[_0xd4fa('0x12')](_0xbf7dcf));_0x5df190(_0xbf7dcf);})[_0xd4fa('0x17')](function(_0x586af0){logger[_0xd4fa('0x13')](_0xd4fa('0x1d'),_0x586af0[_0xd4fa('0x15')],_0x1faa0b);_0x1f9be1(_0x5601d6[_0xd4fa('0x13')](0x1f4,_0x586af0[_0xd4fa('0x15')]));});});};
\ No newline at end of file
index 751f21c..ac3b91a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60aa=['exports','express','Router','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x328b40,_0x370642){var _0x556a56=function(_0x467553){while(--_0x467553){_0x328b40['push'](_0x328b40['shift']());}};_0x556a56(++_0x370642);}(_0x60aa,0x127));var _0xa60a=function(_0x1f6fd5,_0x399cb0){_0x1f6fd5=_0x1f6fd5-0x0;var _0x587d12=_0x60aa[_0x1f6fd5];return _0x587d12;};'use strict';var express=require(_0xa60a('0x0'));var router=express[_0xa60a('0x1')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0xa60a('0x2')]('/',auth[_0xa60a('0x3')](),controller[_0xa60a('0x4')]);router['get'](_0xa60a('0x5'),auth[_0xa60a('0x3')](),controller['killProcess']);module[_0xa60a('0x6')]=router;
\ No newline at end of file
+var _0x3dba=['isAuthenticated','index','/process/:pid/kill','Router','../../components/auth/service','./system.controller','get'];(function(_0x34d2f8,_0x39474a){var _0x58676b=function(_0x3350dc){while(--_0x3350dc){_0x34d2f8['push'](_0x34d2f8['shift']());}};_0x58676b(++_0x39474a);}(_0x3dba,0x1ed));var _0xa3db=function(_0x54bc96,_0x20cb68){_0x54bc96=_0x54bc96-0x0;var _0x4685b9=_0x3dba[_0x54bc96];return _0x4685b9;};'use strict';var express=require('express');var router=express[_0xa3db('0x0')]();var auth=require(_0xa3db('0x1'));var controller=require(_0xa3db('0x2'));router[_0xa3db('0x3')]('/',auth[_0xa3db('0x4')](),controller[_0xa3db('0x5')]);router[_0xa3db('0x3')](_0xa3db('0x6'),auth[_0xa3db('0x4')](),controller['killProcess']);module['exports']=router;
\ No newline at end of file
index 9fb0c83..ef5216a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909f=['api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','getAllData','then','json','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','killProcess','child_process','../../config/logger'];(function(_0x44a70e,_0x23ecc0){var _0x24eb99=function(_0x5ebdd1){while(--_0x5ebdd1){_0x44a70e['push'](_0x44a70e['shift']());}};_0x24eb99(++_0x23ecc0);}(_0x909f,0xbb));var _0xf909=function(_0x4a7a2f,_0x10b409){_0x4a7a2f=_0x4a7a2f-0x0;var _0x59dc11=_0x909f[_0x4a7a2f];return _0x59dc11;};'use strict';var info=require('systeminformation');var exec=require(_0xf909('0x0'))['exec'];var logger=require(_0xf909('0x1'))(_0xf909('0x2'));var util=require(_0xf909('0x3'));var BPromise=require(_0xf909('0x4'));var _=require(_0xf909('0x5'));function handleError(_0x37f9d1,_0x5cda5f,_0x377e30){_0x5cda5f=_0x5cda5f||0x1f4;return function(_0xb34bb6){logger[_0xf909('0x6')](_0xf909('0x7'),_0x377e30,_0x5cda5f,util[_0xf909('0x8')](_0xb34bb6,{'showHidden':![],'depth':null}));delete _0xb34bb6[_0xf909('0x9')];_0x37f9d1[_0xf909('0xa')](_0x5cda5f)[_0xf909('0xb')](_0xb34bb6);};}exports[_0xf909('0xc')]=function(_0x4b5a8a,_0x3f0863){return info[_0xf909('0xd')]()[_0xf909('0xe')](function(_0x3f8183){return _0x3f0863['status'](0xc8)[_0xf909('0xf')](_0x3f8183);})['catch'](function(_0x532d1f){return _0x3f0863[_0xf909('0xa')](0x1f4)[_0xf909('0xf')](_0x532d1f);});};exports['killProcess']=function(_0x16739b,_0x1334f8){var _0x22e3df=[_0xf909('0x10')];return new BPromise(function(_0x25d02e,_0x15480e){return exec(util[_0xf909('0x11')](_0xf909('0x12'),_0x16739b['params'][_0xf909('0x13')]),function(_0x1acecd,_0x3a0ce7,_0x8c402d){if(_0x1acecd){return _0x15480e(_0x1acecd);}return _0x25d02e(_0x3a0ce7);});})['then'](function(_0x21c66e){var _0x48f0ee=![];var _0x42ed6f=_0x21c66e['split'](/\n/);for(var _0x406e17=0x0,_0x307555=_0x22e3df['length'];_0x406e17<_0x307555,_0x48f0ee===![];_0x406e17+=0x1){if(_0x21c66e[_0xf909('0x14')](_0x22e3df[_0x406e17])>=0x0){_0x48f0ee=!![];}}if(!_0x48f0ee){throw new Error(util[_0xf909('0x11')](_0xf909('0x15'),_0x16739b[_0xf909('0x16')][_0xf909('0x13')]));}process[_0xf909('0x17')](_0x16739b[_0xf909('0x16')]['pid'],'SIGINT');return _0x1334f8[_0xf909('0xa')](0xc8)[_0xf909('0xf')]({'message':util[_0xf909('0x11')](_0xf909('0x18'),_0x16739b['params'][_0xf909('0x13')])});})[_0xf909('0x19')](handleError(_0x1334f8,null,_0xf909('0x1a')));};
\ No newline at end of file
+var _0x98cb=['child_process','exec','api','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','status','send','index','getAllData','json','killProcess','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','then','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','systeminformation'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x98cb,0x18f));var _0xb98c=function(_0xab6625,_0x4a98b9){_0xab6625=_0xab6625-0x0;var _0x29d910=_0x98cb[_0xab6625];return _0x29d910;};'use strict';var info=require(_0xb98c('0x0'));var exec=require(_0xb98c('0x1'))[_0xb98c('0x2')];var logger=require('../../config/logger')(_0xb98c('0x3'));var util=require('util');var BPromise=require(_0xb98c('0x4'));var _=require(_0xb98c('0x5'));function handleError(_0x41ae00,_0xc98c56,_0x511ef5){_0xc98c56=_0xc98c56||0x1f4;return function(_0x449c9e){logger['error'](_0xb98c('0x6'),_0x511ef5,_0xc98c56,util[_0xb98c('0x7')](_0x449c9e,{'showHidden':![],'depth':null}));delete _0x449c9e['name'];_0x41ae00[_0xb98c('0x8')](_0xc98c56)[_0xb98c('0x9')](_0x449c9e);};}exports[_0xb98c('0xa')]=function(_0x112dd9,_0x4be548){return info[_0xb98c('0xb')]()['then'](function(_0x3962fc){return _0x4be548[_0xb98c('0x8')](0xc8)[_0xb98c('0xc')](_0x3962fc);})['catch'](function(_0x4f9ff4){return _0x4be548[_0xb98c('0x8')](0x1f4)['json'](_0x4f9ff4);});};exports[_0xb98c('0xd')]=function(_0x3cbd97,_0x43d4e3){var _0x2673cf=['components/import/cm'];return new BPromise(function(_0x95f814,_0x2488ab){return exec(util['format'](_0xb98c('0xe'),_0x3cbd97['params'][_0xb98c('0xf')]),function(_0x4560a7,_0x710c62,_0x535083){if(_0x4560a7){return _0x2488ab(_0x4560a7);}return _0x95f814(_0x710c62);});})[_0xb98c('0x10')](function(_0x3b32fb){var _0x2fe357=![];var _0x496480=_0x3b32fb[_0xb98c('0x11')](/\n/);for(var _0x4e5ddc=0x0,_0x156025=_0x2673cf[_0xb98c('0x12')];_0x4e5ddc<_0x156025,_0x2fe357===![];_0x4e5ddc+=0x1){if(_0x3b32fb[_0xb98c('0x13')](_0x2673cf[_0x4e5ddc])>=0x0){_0x2fe357=!![];}}if(!_0x2fe357){throw new Error(util[_0xb98c('0x14')](_0xb98c('0x15'),_0x3cbd97[_0xb98c('0x16')]['pid']));}process[_0xb98c('0x17')](_0x3cbd97[_0xb98c('0x16')]['pid'],_0xb98c('0x18'));return _0x43d4e3[_0xb98c('0x8')](0xc8)[_0xb98c('0xc')]({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x3cbd97[_0xb98c('0x16')][_0xb98c('0xf')])});})['catch'](handleError(_0x43d4e3,null,_0xb98c('0xd')));};
\ No newline at end of file
index 0795df4..cea8f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22a7=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','isAuthenticated','index','get','show','post','create','/:id','update','delete','destroy','multer','util','path'];(function(_0x56e32e,_0x9eb2f6){var _0x2a757b=function(_0x50b7bc){while(--_0x50b7bc){_0x56e32e['push'](_0x56e32e['shift']());}};_0x2a757b(++_0x9eb2f6);}(_0x22a7,0xe4));var _0x722a=function(_0x102da0,_0x539e28){_0x102da0=_0x102da0-0x0;var _0x41361c=_0x22a7[_0x102da0];return _0x41361c;};'use strict';var multer=require(_0x722a('0x0'));var util=require(_0x722a('0x1'));var path=require(_0x722a('0x2'));var timeout=require(_0x722a('0x3'));var express=require(_0x722a('0x4'));var router=express[_0x722a('0x5')]();var fs_extra=require(_0x722a('0x6'));var auth=require(_0x722a('0x7'));var interaction=require(_0x722a('0x8'));var config=require(_0x722a('0x9'));var controller=require(_0x722a('0xa'));router['get']('/',auth[_0x722a('0xb')](),controller[_0x722a('0xc')]);router[_0x722a('0xd')]('/:id',auth[_0x722a('0xb')](),controller[_0x722a('0xe')]);router[_0x722a('0xf')]('/',auth[_0x722a('0xb')](),controller[_0x722a('0x10')]);router['put'](_0x722a('0x11'),auth[_0x722a('0xb')](),controller[_0x722a('0x12')]);router[_0x722a('0x13')](_0x722a('0x11'),auth[_0x722a('0xb')](),controller[_0x722a('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe0e0=['multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./tag.controller','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports'];(function(_0x3703f8,_0x3bdeae){var _0x3b0283=function(_0x4e46ec){while(--_0x4e46ec){_0x3703f8['push'](_0x3703f8['shift']());}};_0x3b0283(++_0x3bdeae);}(_0xe0e0,0x11d));var _0x0e0e=function(_0x2e8634,_0x3f55a5){_0x2e8634=_0x2e8634-0x0;var _0x4e8aed=_0xe0e0[_0x2e8634];return _0x4e8aed;};'use strict';var multer=require(_0x0e0e('0x0'));var util=require(_0x0e0e('0x1'));var path=require(_0x0e0e('0x2'));var timeout=require(_0x0e0e('0x3'));var express=require('express');var router=express[_0x0e0e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0e0e('0x5'));var interaction=require(_0x0e0e('0x6'));var config=require('../../config/environment');var controller=require(_0x0e0e('0x7'));router['get']('/',auth[_0x0e0e('0x8')](),controller[_0x0e0e('0x9')]);router[_0x0e0e('0xa')](_0x0e0e('0xb'),auth[_0x0e0e('0x8')](),controller[_0x0e0e('0xc')]);router['post']('/',auth[_0x0e0e('0x8')](),controller[_0x0e0e('0xd')]);router[_0x0e0e('0xe')](_0x0e0e('0xb'),auth[_0x0e0e('0x8')](),controller[_0x0e0e('0xf')]);router[_0x0e0e('0x10')](_0x0e0e('0xb'),auth[_0x0e0e('0x8')](),controller[_0x0e0e('0x11')]);module[_0x0e0e('0x12')]=router;
\ No newline at end of file
index ee217fa..c0c7492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b4f=['STRING','#0091EA','exports','name'];(function(_0x438513,_0x472928){var _0x14943a=function(_0x48492e){while(--_0x48492e){_0x438513['push'](_0x438513['shift']());}};_0x14943a(++_0x472928);}(_0x2b4f,0x142));var _0xf2b4=function(_0x49b643,_0x27de1f){_0x49b643=_0x49b643-0x0;var _0x46c7d5=_0x2b4f[_0x49b643];return _0x46c7d5;};'use strict';var Sequelize=require('sequelize');module[_0xf2b4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xf2b4('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xf2b4('0x2')],'defaultValue':_0xf2b4('0x3')},'description':{'type':Sequelize[_0xf2b4('0x2')]}};
\ No newline at end of file
+var _0x4e61=['sequelize','exports','STRING','#0091EA'];(function(_0x3a22f5,_0x2efc27){var _0x2aa665=function(_0x15a6c0){while(--_0x15a6c0){_0x3a22f5['push'](_0x3a22f5['shift']());}};_0x2aa665(++_0x2efc27);}(_0x4e61,0x8c));var _0x14e6=function(_0x1d2bc8,_0x2860bc){_0x1d2bc8=_0x1d2bc8-0x0;var _0x1857e1=_0x4e61[_0x1d2bc8];return _0x1857e1;};'use strict';var Sequelize=require(_0x14e6('0x0'));module[_0x14e6('0x1')]={'name':{'type':Sequelize[_0x14e6('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x14e6('0x3')},'description':{'type':Sequelize[_0x14e6('0x2')]}};
\ No newline at end of file
index cf5d84c..bbb7c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','name','send','index','map','Tag','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','sort','pick','filter','where','options','includeAll','include','catch','show','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0xd6a8fd,_0x492504){var _0x427dca=function(_0x4fabe3){while(--_0x4fabe3){_0xd6a8fd['push'](_0xd6a8fd['shift']());}};_0x427dca(++_0x492504);}(_0xbec5,0xe5));var _0x5bec=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xbec5[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];function respondWithStatusCode(_0x1c888f,_0x589d14){_0x589d14=_0x589d14||0xcc;return function(_0x2d2ba2){if(_0x2d2ba2){return _0x1c888f[_0x5bec('0x19')](_0x589d14);}return _0x1c888f[_0x5bec('0x1a')](_0x589d14)[_0x5bec('0x1b')]();};}function respondWithResult(_0x3198e0,_0xcd6d90){_0xcd6d90=_0xcd6d90||0xc8;return function(_0x24dcd6){if(_0x24dcd6){return _0x3198e0[_0x5bec('0x1a')](_0xcd6d90)[_0x5bec('0x1c')](_0x24dcd6);}};}function respondWithFilteredResult(_0x3ebc41,_0x31b9e4){return function(_0x325daf){if(_0x325daf){var _0x11fb8e=typeof _0x31b9e4['offset']==='undefined'&&typeof _0x31b9e4[_0x5bec('0x1d')]===_0x5bec('0x1e');var _0x31ad9c=_0x325daf[_0x5bec('0x1f')];var _0x5cd7ae=_0x11fb8e?0x0:_0x31b9e4['offset'];var _0x3cd354=_0x11fb8e?_0x325daf[_0x5bec('0x1f')]:_0x31b9e4['offset']+_0x31b9e4[_0x5bec('0x1d')];var _0xa7e223;if(_0x3cd354>=_0x31ad9c){_0x3cd354=_0x31ad9c;_0xa7e223=0xc8;}else{_0xa7e223=0xce;}_0x3ebc41[_0x5bec('0x1a')](_0xa7e223);return _0x3ebc41[_0x5bec('0x20')]('Content-Range',_0x5cd7ae+'-'+_0x3cd354+'/'+_0x31ad9c)[_0x5bec('0x1c')](_0x325daf);}return null;};}function patchUpdates(_0x5be91c){return function(_0x191c0f){try{jsonpatch[_0x5bec('0x21')](_0x191c0f,_0x5be91c,!![]);}catch(_0x3e1896){return BPromise[_0x5bec('0x22')](_0x3e1896);}return _0x191c0f[_0x5bec('0x23')]();};}function saveUpdates(_0x5e154e,_0x232584){return function(_0x4cfcb8){if(_0x4cfcb8){return _0x4cfcb8[_0x5bec('0x24')](_0x5e154e)[_0x5bec('0x25')](function(_0x5b2636){return _0x5b2636;});}return null;};}function removeEntity(_0xa414f8,_0xbef70b){return function(_0x4e0ca2){if(_0x4e0ca2){return _0x4e0ca2[_0x5bec('0x26')]()[_0x5bec('0x25')](function(){var _0x43d460=_0x4e0ca2[_0x5bec('0x27')]({'plain':!![]});var _0x226d55=_0x5bec('0x28');return db[_0x5bec('0x29')]['destroy']({'where':{'type':_0x226d55,'resourceId':_0x43d460['id']}})['then'](function(){return _0x4e0ca2;});})['then'](function(){_0xa414f8[_0x5bec('0x1a')](0xcc)[_0x5bec('0x1b')]();});}};}function handleEntityNotFound(_0x338c25,_0x4939a5){return function(_0x2b3b2c){if(!_0x2b3b2c){_0x338c25[_0x5bec('0x19')](0x194);}return _0x2b3b2c;};}function handleError(_0x57331b,_0x29e358){_0x29e358=_0x29e358||0x1f4;return function(_0x63ac8){logger['error'](_0x63ac8['stack']);if(_0x63ac8[_0x5bec('0x2a')]){delete _0x63ac8[_0x5bec('0x2a')];}_0x57331b[_0x5bec('0x1a')](_0x29e358)[_0x5bec('0x2b')](_0x63ac8);};}exports[_0x5bec('0x2c')]=function(_0x3f224c,_0x5d6621){var _0x2987ca={},_0x59b5b6={},_0x45863b={'count':0x0,'rows':[]};var _0xafbd94=_[_0x5bec('0x2d')](db[_0x5bec('0x2e')]['rawAttributes'],function(_0x2b42c8){return{'name':_0x2b42c8[_0x5bec('0x2f')],'type':_0x2b42c8[_0x5bec('0x30')]['key']};});_0x59b5b6[_0x5bec('0x31')]=_['map'](_0xafbd94,_0x5bec('0x2a'));_0x59b5b6[_0x5bec('0x32')]=_[_0x5bec('0x33')](_0x3f224c['query']);_0x59b5b6[_0x5bec('0x34')]=_[_0x5bec('0x35')](_0x59b5b6['model'],_0x59b5b6[_0x5bec('0x32')]);_0x2987ca[_0x5bec('0x36')]=_[_0x5bec('0x35')](_0x59b5b6[_0x5bec('0x31')],qs[_0x5bec('0x37')](_0x3f224c['query'][_0x5bec('0x37')]));_0x2987ca['attributes']=_0x2987ca[_0x5bec('0x36')][_0x5bec('0x38')]?_0x2987ca[_0x5bec('0x36')]:_0x59b5b6[_0x5bec('0x31')];if(!_0x3f224c[_0x5bec('0x32')][_0x5bec('0x39')]('nolimit')){_0x2987ca[_0x5bec('0x1d')]=qs[_0x5bec('0x1d')](_0x3f224c[_0x5bec('0x32')]['limit']);_0x2987ca[_0x5bec('0x3a')]=qs[_0x5bec('0x3a')](_0x3f224c['query'][_0x5bec('0x3a')]);}_0x2987ca['order']=qs[_0x5bec('0x3b')](_0x3f224c[_0x5bec('0x32')][_0x5bec('0x3b')]);_0x2987ca['where']=qs[_0x5bec('0x34')](_[_0x5bec('0x3c')](_0x3f224c[_0x5bec('0x32')],_0x59b5b6[_0x5bec('0x34')]),_0xafbd94);if(_0x3f224c[_0x5bec('0x32')][_0x5bec('0x3d')]){_0x2987ca[_0x5bec('0x3e')]=_['merge'](_0x2987ca[_0x5bec('0x3e')],{'$or':_[_0x5bec('0x2d')](_0xafbd94,function(_0x323812){if(_0x323812[_0x5bec('0x30')]!=='VIRTUAL'){var _0x27863b={};_0x27863b[_0x323812[_0x5bec('0x2a')]]={'$like':'%'+_0x3f224c[_0x5bec('0x32')]['filter']+'%'};return _0x27863b;}})});}_0x2987ca=_['merge']({},_0x2987ca,_0x3f224c[_0x5bec('0x3f')]);var _0x153d02={'where':_0x2987ca[_0x5bec('0x3e')]};return db[_0x5bec('0x2e')][_0x5bec('0x1f')](_0x153d02)['then'](function(_0x4fee8a){_0x45863b[_0x5bec('0x1f')]=_0x4fee8a;if(_0x3f224c['query'][_0x5bec('0x40')]){_0x2987ca[_0x5bec('0x41')]=[{'all':!![]}];}return db[_0x5bec('0x2e')]['findAll'](_0x2987ca);})[_0x5bec('0x25')](function(_0x26a4a5){_0x45863b['rows']=_0x26a4a5;return _0x45863b;})[_0x5bec('0x25')](respondWithFilteredResult(_0x5d6621,_0x2987ca))[_0x5bec('0x42')](handleError(_0x5d6621,null));};exports[_0x5bec('0x43')]=function(_0x2b51f7,_0x3b5631){var _0x2724cf={'raw':!![],'where':{'id':_0x2b51f7['params']['id']}},_0x3a795c={};_0x3a795c['model']=_[_0x5bec('0x33')](db['Tag']['rawAttributes']);_0x3a795c[_0x5bec('0x32')]=_['keys'](_0x2b51f7['query']);_0x3a795c['filters']=_[_0x5bec('0x35')](_0x3a795c[_0x5bec('0x31')],_0x3a795c[_0x5bec('0x32')]);_0x2724cf[_0x5bec('0x36')]=_['intersection'](_0x3a795c[_0x5bec('0x31')],qs[_0x5bec('0x37')](_0x2b51f7[_0x5bec('0x32')][_0x5bec('0x37')]));_0x2724cf['attributes']=_0x2724cf[_0x5bec('0x36')][_0x5bec('0x38')]?_0x2724cf[_0x5bec('0x36')]:_0x3a795c['model'];if(_0x2b51f7[_0x5bec('0x32')]['includeAll']){_0x2724cf[_0x5bec('0x41')]=[{'all':!![]}];}_0x2724cf=_[_0x5bec('0x44')]({},_0x2724cf,_0x2b51f7[_0x5bec('0x3f')]);return db[_0x5bec('0x2e')]['find'](_0x2724cf)[_0x5bec('0x25')](handleEntityNotFound(_0x3b5631,null))[_0x5bec('0x25')](respondWithResult(_0x3b5631,null))[_0x5bec('0x42')](handleError(_0x3b5631,null));};exports[_0x5bec('0x45')]=function(_0x35b250,_0x123758){return db[_0x5bec('0x2e')]['create'](_0x35b250[_0x5bec('0x46')],{})[_0x5bec('0x25')](function(_0x5775ca){var _0x273e09=_0x35b250[_0x5bec('0x47')][_0x5bec('0x27')]({'plain':!![]});if(!_0x273e09)throw new Error(_0x5bec('0x48'));if(_0x273e09[_0x5bec('0x49')]===_0x5bec('0x47')){var _0x3545a5=_0x5775ca['get']({'plain':!![]});var _0x101dcb='Tags';return db[_0x5bec('0x4a')][_0x5bec('0x4b')]({'where':{'name':_0x101dcb,'userProfileId':_0x273e09[_0x5bec('0x4c')]},'raw':!![]})[_0x5bec('0x25')](function(_0x158e8e){if(_0x158e8e&&_0x158e8e[_0x5bec('0x4d')]===0x0){return db[_0x5bec('0x29')][_0x5bec('0x45')]({'name':_0x3545a5[_0x5bec('0x2a')],'resourceId':_0x3545a5['id'],'type':_0x158e8e[_0x5bec('0x2a')],'sectionId':_0x158e8e['id']},{})['then'](function(){return _0x5775ca;});}else{return _0x5775ca;}})[_0x5bec('0x42')](function(_0x51af88){logger['error'](_0x5bec('0x4e'),_0x51af88);throw _0x51af88;});}return _0x5775ca;})['then'](respondWithResult(_0x123758,0xc9))['catch'](handleError(_0x123758,null));};exports[_0x5bec('0x24')]=function(_0x2114e5,_0x416058){if(_0x2114e5['body']['id']){delete _0x2114e5[_0x5bec('0x46')]['id'];}return db[_0x5bec('0x2e')][_0x5bec('0x4b')]({'where':{'id':_0x2114e5[_0x5bec('0x4f')]['id']}})['then'](handleEntityNotFound(_0x416058,null))[_0x5bec('0x25')](saveUpdates(_0x2114e5[_0x5bec('0x46')],null))[_0x5bec('0x25')](respondWithResult(_0x416058,null))[_0x5bec('0x42')](handleError(_0x416058,null));};exports[_0x5bec('0x26')]=function(_0x3ddf28,_0x33b924){return db['Tag']['find']({'where':{'id':_0x3ddf28[_0x5bec('0x4f')]['id']}})['then'](handleEntityNotFound(_0x33b924,null))[_0x5bec('0x25')](removeEntity(_0x33b924,null))[_0x5bec('0x42')](handleError(_0x33b924,null));};
\ No newline at end of file
+var _0xdace=['Tags','UserProfileResource','name','send','map','Tag','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','get'];(function(_0x51f683,_0xbc28cf){var _0x267536=function(_0x48dafe){while(--_0x48dafe){_0x51f683['push'](_0x51f683['shift']());}};_0x267536(++_0xbc28cf);}(_0xdace,0xc5));var _0xedac=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xdace[_0x432fca];return _0x3adba4;};'use strict';var emlformat=require(_0xedac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xedac('0x1'));var jsonpatch=require(_0xedac('0x2'));var rp=require(_0xedac('0x3'));var moment=require('moment');var BPromise=require(_0xedac('0x4'));var Mustache=require(_0xedac('0x5'));var util=require(_0xedac('0x6'));var path=require(_0xedac('0x7'));var sox=require('sox');var csv=require(_0xedac('0x8'));var ejs=require(_0xedac('0x9'));var fs=require('fs');var fs_extra=require(_0xedac('0xa'));var _=require('lodash');var squel=require(_0xedac('0xb'));var crypto=require(_0xedac('0xc'));var jsforce=require(_0xedac('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xedac('0x8'));var querystring=require(_0xedac('0xe'));var Papa=require(_0xedac('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xedac('0x10'));var as=require(_0xedac('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xedac('0x12'));var utils=require(_0xedac('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xedac('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21c6ae,_0x1b0503){_0x1b0503=_0x1b0503||0xcc;return function(_0x306af5){if(_0x306af5){return _0x21c6ae[_0xedac('0x15')](_0x1b0503);}return _0x21c6ae[_0xedac('0x16')](_0x1b0503)[_0xedac('0x17')]();};}function respondWithResult(_0x28444a,_0x11f0b0){_0x11f0b0=_0x11f0b0||0xc8;return function(_0x593030){if(_0x593030){return _0x28444a[_0xedac('0x16')](_0x11f0b0)[_0xedac('0x18')](_0x593030);}};}function respondWithFilteredResult(_0x2f0c7c,_0x2676c3){return function(_0x15068){if(_0x15068){var _0x590e9b=typeof _0x2676c3[_0xedac('0x19')]==='undefined'&&typeof _0x2676c3[_0xedac('0x1a')]===_0xedac('0x1b');var _0xdad128=_0x15068[_0xedac('0x1c')];var _0x4fb540=_0x590e9b?0x0:_0x2676c3['offset'];var _0x2d02d7=_0x590e9b?_0x15068[_0xedac('0x1c')]:_0x2676c3[_0xedac('0x19')]+_0x2676c3[_0xedac('0x1a')];var _0x5a5438;if(_0x2d02d7>=_0xdad128){_0x2d02d7=_0xdad128;_0x5a5438=0xc8;}else{_0x5a5438=0xce;}_0x2f0c7c['status'](_0x5a5438);return _0x2f0c7c[_0xedac('0x1d')](_0xedac('0x1e'),_0x4fb540+'-'+_0x2d02d7+'/'+_0xdad128)[_0xedac('0x18')](_0x15068);}return null;};}function patchUpdates(_0xcc1605){return function(_0x2f5eee){try{jsonpatch[_0xedac('0x1f')](_0x2f5eee,_0xcc1605,!![]);}catch(_0x160be7){return BPromise[_0xedac('0x20')](_0x160be7);}return _0x2f5eee['save']();};}function saveUpdates(_0x4593e8,_0x510005){return function(_0x29cd40){if(_0x29cd40){return _0x29cd40[_0xedac('0x21')](_0x4593e8)['then'](function(_0x46e09d){return _0x46e09d;});}return null;};}function removeEntity(_0x404b8d,_0x1c87bf){return function(_0x1e5e47){if(_0x1e5e47){return _0x1e5e47[_0xedac('0x22')]()[_0xedac('0x23')](function(){var _0x5d7c31=_0x1e5e47[_0xedac('0x24')]({'plain':!![]});var _0x87d343=_0xedac('0x25');return db[_0xedac('0x26')][_0xedac('0x22')]({'where':{'type':_0x87d343,'resourceId':_0x5d7c31['id']}})[_0xedac('0x23')](function(){return _0x1e5e47;});})[_0xedac('0x23')](function(){_0x404b8d[_0xedac('0x16')](0xcc)[_0xedac('0x17')]();});}};}function handleEntityNotFound(_0x4663c0,_0x4c5566){return function(_0x25d7f5){if(!_0x25d7f5){_0x4663c0[_0xedac('0x15')](0x194);}return _0x25d7f5;};}function handleError(_0x19aed3,_0x5dff75){_0x5dff75=_0x5dff75||0x1f4;return function(_0x313e06){logger['error'](_0x313e06['stack']);if(_0x313e06[_0xedac('0x27')]){delete _0x313e06[_0xedac('0x27')];}_0x19aed3[_0xedac('0x16')](_0x5dff75)[_0xedac('0x28')](_0x313e06);};}exports['index']=function(_0x4e25da,_0xe813e6){var _0x32d945={},_0x24b182={},_0x2ee8d7={'count':0x0,'rows':[]};var _0x1b2a93=_[_0xedac('0x29')](db[_0xedac('0x2a')]['rawAttributes'],function(_0x3bc910){return{'name':_0x3bc910[_0xedac('0x2b')],'type':_0x3bc910[_0xedac('0x2c')]['key']};});_0x24b182[_0xedac('0x2d')]=_[_0xedac('0x29')](_0x1b2a93,'name');_0x24b182[_0xedac('0x2e')]=_[_0xedac('0x2f')](_0x4e25da['query']);_0x24b182[_0xedac('0x30')]=_[_0xedac('0x31')](_0x24b182[_0xedac('0x2d')],_0x24b182[_0xedac('0x2e')]);_0x32d945[_0xedac('0x32')]=_[_0xedac('0x31')](_0x24b182[_0xedac('0x2d')],qs[_0xedac('0x33')](_0x4e25da[_0xedac('0x2e')][_0xedac('0x33')]));_0x32d945['attributes']=_0x32d945[_0xedac('0x32')][_0xedac('0x34')]?_0x32d945[_0xedac('0x32')]:_0x24b182[_0xedac('0x2d')];if(!_0x4e25da[_0xedac('0x2e')][_0xedac('0x35')](_0xedac('0x36'))){_0x32d945[_0xedac('0x1a')]=qs[_0xedac('0x1a')](_0x4e25da[_0xedac('0x2e')][_0xedac('0x1a')]);_0x32d945[_0xedac('0x19')]=qs[_0xedac('0x19')](_0x4e25da[_0xedac('0x2e')][_0xedac('0x19')]);}_0x32d945['order']=qs[_0xedac('0x37')](_0x4e25da[_0xedac('0x2e')][_0xedac('0x37')]);_0x32d945[_0xedac('0x38')]=qs['filters'](_[_0xedac('0x39')](_0x4e25da[_0xedac('0x2e')],_0x24b182[_0xedac('0x30')]),_0x1b2a93);if(_0x4e25da['query'][_0xedac('0x3a')]){_0x32d945[_0xedac('0x38')]=_[_0xedac('0x3b')](_0x32d945['where'],{'$or':_[_0xedac('0x29')](_0x1b2a93,function(_0x17b7c3){if(_0x17b7c3['type']!==_0xedac('0x3c')){var _0x2fa832={};_0x2fa832[_0x17b7c3['name']]={'$like':'%'+_0x4e25da[_0xedac('0x2e')]['filter']+'%'};return _0x2fa832;}})});}_0x32d945=_[_0xedac('0x3b')]({},_0x32d945,_0x4e25da[_0xedac('0x3d')]);var _0x2e3fcd={'where':_0x32d945[_0xedac('0x38')]};return db[_0xedac('0x2a')][_0xedac('0x1c')](_0x2e3fcd)['then'](function(_0x2370aa){_0x2ee8d7[_0xedac('0x1c')]=_0x2370aa;if(_0x4e25da[_0xedac('0x2e')][_0xedac('0x3e')]){_0x32d945[_0xedac('0x3f')]=[{'all':!![]}];}return db[_0xedac('0x2a')][_0xedac('0x40')](_0x32d945);})[_0xedac('0x23')](function(_0x2dcff4){_0x2ee8d7[_0xedac('0x41')]=_0x2dcff4;return _0x2ee8d7;})[_0xedac('0x23')](respondWithFilteredResult(_0xe813e6,_0x32d945))[_0xedac('0x42')](handleError(_0xe813e6,null));};exports[_0xedac('0x43')]=function(_0x1418ff,_0x8742ea){var _0x46f025={'raw':!![],'where':{'id':_0x1418ff[_0xedac('0x44')]['id']}},_0x4cbae0={};_0x4cbae0[_0xedac('0x2d')]=_[_0xedac('0x2f')](db['Tag']['rawAttributes']);_0x4cbae0['query']=_[_0xedac('0x2f')](_0x1418ff[_0xedac('0x2e')]);_0x4cbae0['filters']=_[_0xedac('0x31')](_0x4cbae0['model'],_0x4cbae0[_0xedac('0x2e')]);_0x46f025['attributes']=_[_0xedac('0x31')](_0x4cbae0[_0xedac('0x2d')],qs[_0xedac('0x33')](_0x1418ff[_0xedac('0x2e')][_0xedac('0x33')]));_0x46f025['attributes']=_0x46f025['attributes'][_0xedac('0x34')]?_0x46f025['attributes']:_0x4cbae0[_0xedac('0x2d')];if(_0x1418ff[_0xedac('0x2e')][_0xedac('0x3e')]){_0x46f025['include']=[{'all':!![]}];}_0x46f025=_[_0xedac('0x3b')]({},_0x46f025,_0x1418ff[_0xedac('0x3d')]);return db[_0xedac('0x2a')]['find'](_0x46f025)[_0xedac('0x23')](handleEntityNotFound(_0x8742ea,null))[_0xedac('0x23')](respondWithResult(_0x8742ea,null))[_0xedac('0x42')](handleError(_0x8742ea,null));};exports['create']=function(_0x5e6079,_0x2cb3ca){return db[_0xedac('0x2a')]['create'](_0x5e6079['body'],{})[_0xedac('0x23')](function(_0x38425e){var _0x4e81bc=_0x5e6079[_0xedac('0x45')]['get']({'plain':!![]});if(!_0x4e81bc)throw new Error(_0xedac('0x46'));if(_0x4e81bc[_0xedac('0x47')]===_0xedac('0x45')){var _0x104842=_0x38425e[_0xedac('0x24')]({'plain':!![]});var _0x10ad82='Tags';return db[_0xedac('0x48')][_0xedac('0x49')]({'where':{'name':_0x10ad82,'userProfileId':_0x4e81bc['userProfileId']},'raw':!![]})[_0xedac('0x23')](function(_0x2d0846){if(_0x2d0846&&_0x2d0846[_0xedac('0x4a')]===0x0){return db['UserProfileResource']['create']({'name':_0x104842[_0xedac('0x27')],'resourceId':_0x104842['id'],'type':_0x2d0846[_0xedac('0x27')],'sectionId':_0x2d0846['id']},{})['then'](function(){return _0x38425e;});}else{return _0x38425e;}})[_0xedac('0x42')](function(_0x1bb739){logger[_0xedac('0x4b')](_0xedac('0x4c'),_0x1bb739);throw _0x1bb739;});}return _0x38425e;})[_0xedac('0x23')](respondWithResult(_0x2cb3ca,0xc9))[_0xedac('0x42')](handleError(_0x2cb3ca,null));};exports[_0xedac('0x21')]=function(_0x15d582,_0x5a6e3c){if(_0x15d582['body']['id']){delete _0x15d582[_0xedac('0x4d')]['id'];}return db[_0xedac('0x2a')][_0xedac('0x49')]({'where':{'id':_0x15d582['params']['id']}})[_0xedac('0x23')](handleEntityNotFound(_0x5a6e3c,null))[_0xedac('0x23')](saveUpdates(_0x15d582['body'],null))[_0xedac('0x23')](respondWithResult(_0x5a6e3c,null))[_0xedac('0x42')](handleError(_0x5a6e3c,null));};exports['destroy']=function(_0x575620,_0x5ad779){return db[_0xedac('0x2a')]['find']({'where':{'id':_0x575620[_0xedac('0x44')]['id']}})['then'](handleEntityNotFound(_0x5ad779,null))['then'](removeEntity(_0x5ad779,null))[_0xedac('0x42')](handleError(_0x5ad779,null));};
\ No newline at end of file
index 47c8657..720d0a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b6=['lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./tag.attributes','define','Tag','tools_tags'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xa4b6,0x150));var _0x6a4b=function(_0xd423aa,_0x4ff95f){_0xd423aa=_0xd423aa-0x0;var _0x145aab=_0xa4b6[_0xd423aa];return _0x145aab;};'use strict';var _=require(_0x6a4b('0x0'));var util=require(_0x6a4b('0x1'));var logger=require(_0x6a4b('0x2'))(_0x6a4b('0x3'));var moment=require(_0x6a4b('0x4'));var BPromise=require('bluebird');var rp=require(_0x6a4b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6a4b('0x6'));var config=require(_0x6a4b('0x7'));var attributes=require(_0x6a4b('0x8'));module['exports']=function(_0x430306,_0x47bd29){return _0x430306[_0x6a4b('0x9')](_0x6a4b('0xa'),attributes,{'tableName':_0x6a4b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9880=['api','moment','bluebird','request-promise','path','rimraf','define','Tag','tools_tags','lodash','util'];(function(_0x7c2b0d,_0x294387){var _0x1740e9=function(_0x12ef4e){while(--_0x12ef4e){_0x7c2b0d['push'](_0x7c2b0d['shift']());}};_0x1740e9(++_0x294387);}(_0x9880,0x15e));var _0x0988=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x9880[_0x5a2285];return _0x48f6ed;};'use strict';var _=require(_0x0988('0x0'));var util=require(_0x0988('0x1'));var logger=require('../../config/logger')(_0x0988('0x2'));var moment=require(_0x0988('0x3'));var BPromise=require(_0x0988('0x4'));var rp=require(_0x0988('0x5'));var fs=require('fs');var path=require(_0x0988('0x6'));var rimraf=require(_0x0988('0x7'));var config=require('../../config/environment');var attributes=require('./tag.attributes');module['exports']=function(_0x530440,_0x28cdfb){return _0x530440[_0x0988('0x8')](_0x0988('0x9'),attributes,{'tableName':_0x0988('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e85ea3c..8db5bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x28d783,_0x11f116){var _0x5ef4c0=function(_0x53be5f){while(--_0x53be5f){_0x28d783['push'](_0x28d783['shift']());}};_0x5ef4c0(++_0x11f116);}(_0x8ce3,0xc3));var _0x38ce=function(_0x4e63f1,_0x34a2db){_0x4e63f1=_0x4e63f1-0x0;var _0xdbd910=_0x8ce3[_0x4e63f1];return _0xdbd910;};'use strict';var _=require(_0x38ce('0x0'));var util=require(_0x38ce('0x1'));var moment=require('moment');var BPromise=require(_0x38ce('0x2'));var rs=require(_0x38ce('0x3'));var fs=require('fs');var Redis=require(_0x38ce('0x4'));var db=require(_0x38ce('0x5'))['db'];var utils=require(_0x38ce('0x6'));var logger=require(_0x38ce('0x7'))(_0x38ce('0x8'));var config=require(_0x38ce('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38ce('0xa')][_0x38ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x58074c,_0x262b13,_0xbe7332){return new BPromise(function(_0x3f8011,_0x482955){return client[_0x38ce('0xc')](_0x58074c,_0xbe7332)['then'](function(_0x725d27){logger['info'](_0x38ce('0xd'),_0x262b13,_0x38ce('0xe'));logger[_0x38ce('0xf')](_0x38ce('0x10'),_0x262b13,_0x38ce('0xe'),JSON[_0x38ce('0x11')](_0x725d27));if(_0x725d27[_0x38ce('0x12')]){if(_0x725d27[_0x38ce('0x12')][_0x38ce('0x13')]===0x1f4){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);return _0x482955(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}logger[_0x38ce('0x12')]('Tag,\x20%s,\x20%s',_0x262b13,_0x725d27['error'][_0x38ce('0x14')]);return _0x3f8011(_0x725d27[_0x38ce('0x12')][_0x38ce('0x14')]);}else{logger['info'](_0x38ce('0xd'),_0x262b13,'request\x20sent');_0x3f8011(_0x725d27[_0x38ce('0x15')][_0x38ce('0x14')]);}})['catch'](function(_0x5fc115){logger[_0x38ce('0x12')](_0x38ce('0xd'),_0x262b13,_0x5fc115);_0x482955(_0x5fc115);});});}
\ No newline at end of file
+var _0xe181=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x54f3e8,_0x3ed493){var _0x267b37=function(_0x58247e){while(--_0x58247e){_0x54f3e8['push'](_0x54f3e8['shift']());}};_0x267b37(++_0x3ed493);}(_0xe181,0x68));var _0x1e18=function(_0x28ee74,_0x289441){_0x28ee74=_0x28ee74-0x0;var _0x6cc80c=_0xe181[_0x28ee74];return _0x6cc80c;};'use strict';var _=require(_0x1e18('0x0'));var util=require('util');var moment=require(_0x1e18('0x1'));var BPromise=require(_0x1e18('0x2'));var rs=require(_0x1e18('0x3'));var fs=require('fs');var Redis=require(_0x1e18('0x4'));var db=require(_0x1e18('0x5'))['db'];var utils=require(_0x1e18('0x6'));var logger=require(_0x1e18('0x7'))('rpc');var config=require(_0x1e18('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1e18('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x182c98,_0x46ba95,_0x25b786){return new BPromise(function(_0x9f9541,_0x398f77){return client['request'](_0x182c98,_0x25b786)[_0x1e18('0xa')](function(_0x40fda9){logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));logger[_0x1e18('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0x46ba95,_0x1e18('0xd'),JSON[_0x1e18('0xf')](_0x40fda9));if(_0x40fda9[_0x1e18('0x10')]){if(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x11')]===0x1f4){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x40fda9[_0x1e18('0x10')]['message']);return _0x398f77(_0x40fda9[_0x1e18('0x10')]['message']);}logger[_0x1e18('0x10')]('Tag,\x20%s,\x20%s',_0x46ba95,_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);return _0x9f9541(_0x40fda9[_0x1e18('0x10')][_0x1e18('0x12')]);}else{logger[_0x1e18('0xb')](_0x1e18('0xc'),_0x46ba95,_0x1e18('0xd'));_0x9f9541(_0x40fda9[_0x1e18('0x13')][_0x1e18('0x12')]);}})[_0x1e18('0x14')](function(_0x12ef98){logger[_0x1e18('0x10')](_0x1e18('0xc'),_0x46ba95,_0x12ef98);_0x398f77(_0x12ef98);});});}
\ No newline at end of file
index 8b2bc52..3c6dc87 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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 554c365..2c17519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x178856,_0x41f045){var _0x3c7fe7=function(_0x4d9ce4){while(--_0x4d9ce4){_0x178856['push'](_0x178856['shift']());}};_0x3c7fe7(++_0x41f045);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'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
+var _0x0713=['STRING','name'];(function(_0x1ddeba,_0x47a1b0){var _0x276858=function(_0x1f716d){while(--_0x1f716d){_0x1ddeba['push'](_0x1ddeba['shift']());}};_0x276858(++_0x47a1b0);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index 6259f3b..8c922e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f8=['map','Team','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','type','options','include','findAll','show','params','find','catch','create','body','user','get','Teams','UserProfileSection','userProfileId','autoAssociation','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','SELECT','UserId','UserVoiceQueue','destroy','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','OpenchannelQueueId','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','channel','isValidChannel','ValidationError','toLowerCase','Queue','addQueues','Unknown\x20channel','add','capitalize','ids','removeQueues','remove','Queues','addAgents','isArray','Chat','Fax','Openchannel','Whatsapp','Voice','through','QueueId','TeamVoiceQueue','User','findOrCreate','emit','online','interface','UserVoiceQueueRt','upsert','isNil','format','penalty','all','VoicePrefixId','spread','Mail','Sms','Queue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','stack','name','send','index'];(function(_0x13e453,_0x4ab30c){var _0x26aad2=function(_0x3387a1){while(--_0x3387a1){_0x13e453['push'](_0x13e453['shift']());}};_0x26aad2(++_0x4ab30c);}(_0x85f8,0xff));var _0x885f=function(_0x4388e1,_0x5bc3d5){_0x4388e1=_0x4388e1-0x0;var _0x52187a=_0x85f8[_0x4388e1];return _0x52187a;};'use strict';var emlformat=require(_0x885f('0x0'));var rimraf=require(_0x885f('0x1'));var zipdir=require(_0x885f('0x2'));var jsonpatch=require(_0x885f('0x3'));var rp=require(_0x885f('0x4'));var moment=require('moment');var BPromise=require(_0x885f('0x5'));var Mustache=require(_0x885f('0x6'));var util=require('util');var path=require(_0x885f('0x7'));var sox=require(_0x885f('0x8'));var csv=require(_0x885f('0x9'));var ejs=require(_0x885f('0xa'));var fs=require('fs');var fs_extra=require(_0x885f('0xb'));var _=require(_0x885f('0xc'));var squel=require(_0x885f('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x885f('0xe'));var Papa=require(_0x885f('0xf'));var Redis=require('ioredis');var authService=require(_0x885f('0x10'));var qs=require(_0x885f('0x11'));var as=require(_0x885f('0x12'));var hardwareService=require(_0x885f('0x13'));var logger=require(_0x885f('0x14'))('api');var utils=require(_0x885f('0x15'));var config=require(_0x885f('0x16'));var licenseUtil=require(_0x885f('0x17'));var db=require('../../mysqldb')['db'];config[_0x885f('0x18')]=_['defaults'](config['redis'],{'host':_0x885f('0x19'),'port':0x18eb});var socket=require(_0x885f('0x1a'))(new Redis(config[_0x885f('0x18')]));require('./team.socket')[_0x885f('0x1b')](socket);function respondWithStatusCode(_0xb7f7bc,_0x5a5d4e){_0x5a5d4e=_0x5a5d4e||0xcc;return function(_0x395f82){if(_0x395f82){return _0xb7f7bc[_0x885f('0x1c')](_0x5a5d4e);}return _0xb7f7bc[_0x885f('0x1d')](_0x5a5d4e)[_0x885f('0x1e')]();};}function respondWithResult(_0x2d4537,_0x5bcbf9){_0x5bcbf9=_0x5bcbf9||0xc8;return function(_0x3587b5){if(_0x3587b5){return _0x2d4537[_0x885f('0x1d')](_0x5bcbf9)['json'](_0x3587b5);}};}function respondWithFilteredResult(_0x398337,_0x41f844){return function(_0x962b2c){if(_0x962b2c){var _0x2e5e71=typeof _0x41f844[_0x885f('0x1f')]===_0x885f('0x20')&&typeof _0x41f844[_0x885f('0x21')]===_0x885f('0x20');var _0x241daa=_0x962b2c[_0x885f('0x22')];var _0xe6d7c2=_0x2e5e71?0x0:_0x41f844['offset'];var _0x18a1b0=_0x2e5e71?_0x962b2c[_0x885f('0x22')]:_0x41f844['offset']+_0x41f844[_0x885f('0x21')];var _0x2c70f5;if(_0x18a1b0>=_0x241daa){_0x18a1b0=_0x241daa;_0x2c70f5=0xc8;}else{_0x2c70f5=0xce;}_0x398337[_0x885f('0x1d')](_0x2c70f5);return _0x398337[_0x885f('0x23')](_0x885f('0x24'),_0xe6d7c2+'-'+_0x18a1b0+'/'+_0x241daa)[_0x885f('0x25')](_0x962b2c);}return null;};}function patchUpdates(_0x2308af){return function(_0x316b04){try{jsonpatch[_0x885f('0x26')](_0x316b04,_0x2308af,!![]);}catch(_0x15616a){return BPromise[_0x885f('0x27')](_0x15616a);}return _0x316b04[_0x885f('0x28')]();};}function saveUpdates(_0x56c7a1,_0xaa2de8){return function(_0x167f42){if(_0x167f42){return _0x167f42[_0x885f('0x29')](_0x56c7a1)[_0x885f('0x2a')](function(_0x1658ac){return _0x1658ac;});}return null;};}function handleEntityNotFound(_0x1fb76d,_0x32207d){return function(_0x54ef4c){if(!_0x54ef4c){_0x1fb76d[_0x885f('0x1c')](0x194);}return _0x54ef4c;};}function handleError(_0x3440d4,_0xf7a102){_0xf7a102=_0xf7a102||0x1f4;return function(_0x507de5){logger['error'](_0x507de5[_0x885f('0x2b')]);if(_0x507de5[_0x885f('0x2c')]){delete _0x507de5[_0x885f('0x2c')];}_0x3440d4['status'](_0xf7a102)[_0x885f('0x2d')](_0x507de5);};}exports[_0x885f('0x2e')]=function(_0x98c48e,_0x22c678){var _0x48e51d={},_0x595de3={},_0x2382e8={'count':0x0,'rows':[]};var _0x23ce36=_[_0x885f('0x2f')](db[_0x885f('0x30')][_0x885f('0x31')],function(_0x1dfb06){return{'name':_0x1dfb06[_0x885f('0x32')],'type':_0x1dfb06['type'][_0x885f('0x33')]};});_0x595de3['model']=_['map'](_0x23ce36,_0x885f('0x2c'));_0x595de3[_0x885f('0x34')]=_[_0x885f('0x35')](_0x98c48e[_0x885f('0x34')]);_0x595de3[_0x885f('0x36')]=_[_0x885f('0x37')](_0x595de3[_0x885f('0x38')],_0x595de3[_0x885f('0x34')]);_0x48e51d[_0x885f('0x39')]=_[_0x885f('0x37')](_0x595de3[_0x885f('0x38')],qs[_0x885f('0x3a')](_0x98c48e[_0x885f('0x34')][_0x885f('0x3a')]));_0x48e51d[_0x885f('0x39')]=_0x48e51d[_0x885f('0x39')][_0x885f('0x3b')]?_0x48e51d[_0x885f('0x39')]:_0x595de3[_0x885f('0x38')];if(!_0x98c48e[_0x885f('0x34')]['hasOwnProperty'](_0x885f('0x3c'))){_0x48e51d[_0x885f('0x21')]=qs['limit'](_0x98c48e[_0x885f('0x34')][_0x885f('0x21')]);_0x48e51d[_0x885f('0x1f')]=qs[_0x885f('0x1f')](_0x98c48e[_0x885f('0x34')][_0x885f('0x1f')]);}_0x48e51d[_0x885f('0x3d')]=qs[_0x885f('0x3e')](_0x98c48e[_0x885f('0x34')]['sort']);_0x48e51d['where']=qs['filters'](_[_0x885f('0x3f')](_0x98c48e['query'],_0x595de3[_0x885f('0x36')]),_0x23ce36);if(_0x98c48e[_0x885f('0x34')][_0x885f('0x40')]){_0x48e51d[_0x885f('0x41')]=_[_0x885f('0x42')](_0x48e51d['where'],{'$or':_[_0x885f('0x2f')](_0x23ce36,function(_0x42c636){if(_0x42c636[_0x885f('0x43')]!=='VIRTUAL'){var _0x2d17ab={};_0x2d17ab[_0x42c636[_0x885f('0x2c')]]={'$like':'%'+_0x98c48e[_0x885f('0x34')]['filter']+'%'};return _0x2d17ab;}})});}_0x48e51d=_[_0x885f('0x42')]({},_0x48e51d,_0x98c48e[_0x885f('0x44')]);var _0x2a0ce6={'where':_0x48e51d[_0x885f('0x41')]};return db['Team'][_0x885f('0x22')](_0x2a0ce6)[_0x885f('0x2a')](function(_0x5c2318){_0x2382e8[_0x885f('0x22')]=_0x5c2318;if(_0x98c48e[_0x885f('0x34')]['includeAll']){_0x48e51d[_0x885f('0x45')]=[{'all':!![]}];}return db[_0x885f('0x30')][_0x885f('0x46')](_0x48e51d);})[_0x885f('0x2a')](function(_0x24beab){_0x2382e8['rows']=_0x24beab;return _0x2382e8;})[_0x885f('0x2a')](respondWithFilteredResult(_0x22c678,_0x48e51d))['catch'](handleError(_0x22c678,null));};exports[_0x885f('0x47')]=function(_0x2df234,_0x511cfc){var _0x5719dc={'raw':![],'where':{'id':_0x2df234[_0x885f('0x48')]['id']}},_0x445085={};_0x445085[_0x885f('0x38')]=_[_0x885f('0x35')](db[_0x885f('0x30')][_0x885f('0x31')]);_0x445085[_0x885f('0x34')]=_[_0x885f('0x35')](_0x2df234[_0x885f('0x34')]);_0x445085[_0x885f('0x36')]=_[_0x885f('0x37')](_0x445085[_0x885f('0x38')],_0x445085[_0x885f('0x34')]);_0x5719dc[_0x885f('0x39')]=_[_0x885f('0x37')](_0x445085[_0x885f('0x38')],qs[_0x885f('0x3a')](_0x2df234[_0x885f('0x34')][_0x885f('0x3a')]));_0x5719dc[_0x885f('0x39')]=_0x5719dc[_0x885f('0x39')][_0x885f('0x3b')]?_0x5719dc[_0x885f('0x39')]:_0x445085[_0x885f('0x38')];if(_0x2df234[_0x885f('0x34')]['includeAll']){_0x5719dc[_0x885f('0x45')]=[{'all':!![]}];}_0x5719dc=_[_0x885f('0x42')]({},_0x5719dc,_0x2df234['options']);return db[_0x885f('0x30')][_0x885f('0x49')](_0x5719dc)[_0x885f('0x2a')](handleEntityNotFound(_0x511cfc,null))[_0x885f('0x2a')](respondWithResult(_0x511cfc,null))[_0x885f('0x4a')](handleError(_0x511cfc,null));};exports[_0x885f('0x4b')]=function(_0x75e9aa,_0x5c7122){return db[_0x885f('0x30')][_0x885f('0x4b')](_0x75e9aa[_0x885f('0x4c')],{})[_0x885f('0x2a')](function(_0x493bda){var _0x440c7a=_0x75e9aa['user']['get']({'plain':!![]});if(!_0x440c7a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x440c7a['role']===_0x885f('0x4d')){var _0x314b0d=_0x493bda[_0x885f('0x4e')]({'plain':!![]});var _0x32b7fc=_0x885f('0x4f');return db[_0x885f('0x50')]['find']({'where':{'name':_0x32b7fc,'userProfileId':_0x440c7a[_0x885f('0x51')]},'raw':!![]})[_0x885f('0x2a')](function(_0x20f283){if(_0x20f283&&_0x20f283[_0x885f('0x52')]===0x0){return db[_0x885f('0x53')][_0x885f('0x4b')]({'name':_0x314b0d[_0x885f('0x2c')],'resourceId':_0x314b0d['id'],'type':_0x20f283[_0x885f('0x2c')],'sectionId':_0x20f283['id']},{})[_0x885f('0x2a')](function(){return _0x493bda;});}else{return _0x493bda;}})[_0x885f('0x4a')](function(_0x5f3bab){logger[_0x885f('0x54')](_0x885f('0x55'),_0x5f3bab);throw _0x5f3bab;});}return _0x493bda;})[_0x885f('0x2a')](respondWithResult(_0x5c7122,0xc9))[_0x885f('0x4a')](handleError(_0x5c7122,null));};exports['update']=function(_0x121a19,_0x18b545){if(_0x121a19[_0x885f('0x4c')]['id']){delete _0x121a19['body']['id'];}return db[_0x885f('0x30')][_0x885f('0x49')]({'where':{'id':_0x121a19[_0x885f('0x48')]['id']}})[_0x885f('0x2a')](handleEntityNotFound(_0x18b545,null))[_0x885f('0x2a')](saveUpdates(_0x121a19[_0x885f('0x4c')],null))[_0x885f('0x2a')](respondWithResult(_0x18b545,null))[_0x885f('0x4a')](handleError(_0x18b545,null));};exports['destroy']=function(_0x2004ab,_0x4af750){var _0x3fe7c3=_0x2004ab[_0x885f('0x48')]['id'];var _0x1c8788=[];return db[_0x885f('0x56')][_0x885f('0x57')](function(_0x1cb7a7){var _0xa0e3f2=_0x885f('0x58')+_0x3fe7c3;return db[_0x885f('0x56')]['query'](_0xa0e3f2,{'type':db[_0x885f('0x59')][_0x885f('0x5a')][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7})[_0x885f('0x2a')](function(_0xe974eb){_0x1c8788=_[_0x885f('0x2f')](_0xe974eb,function(_0x5877e6){return Number(_0x5877e6[_0x885f('0x5c')]);});})[_0x885f('0x2a')](function(){var _0x5a3ed6='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3fe7c3;return db[_0x885f('0x56')][_0x885f('0x34')](_0x5a3ed6,{'type':db[_0x885f('0x59')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1cb7a7});})['then'](function(_0x1668e2){var _0x403814=_['map'](_0x1668e2,function(_0xd67220){return Number(_0xd67220['VoiceQueueId']);});return db[_0x885f('0x5d')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'VoiceQueueId':{'$in':_0x403814}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){var _0x4e7e9b=_0x885f('0x5f')+_0x3fe7c3;return db['sequelize'][_0x885f('0x34')](_0x4e7e9b,{'type':db[_0x885f('0x59')][_0x885f('0x5a')][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(_0x43f618){var _0x55ae59=_['map'](_0x43f618,function(_0x2edcc5){return Number(_0x2edcc5[_0x885f('0x60')]);});return db[_0x885f('0x61')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'MailQueueId':{'$in':_0x55ae59}},'transaction':_0x1cb7a7});})['then'](function(){var _0x2311a5='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3fe7c3;return db[_0x885f('0x56')][_0x885f('0x34')](_0x2311a5,{'type':db[_0x885f('0x59')][_0x885f('0x5a')][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(_0x39af1b){var _0x4efe32=_[_0x885f('0x2f')](_0x39af1b,function(_0x2d6b3c){return Number(_0x2d6b3c['SmsQueueId']);});return db['UserSmsQueue'][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'SmsQueueId':{'$in':_0x4efe32}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){var _0x3d409c=_0x885f('0x62')+_0x3fe7c3;return db[_0x885f('0x56')][_0x885f('0x34')](_0x3d409c,{'type':db['Sequelize'][_0x885f('0x5a')][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7});})['then'](function(_0x2eec7e){var _0x1a3120=_[_0x885f('0x2f')](_0x2eec7e,function(_0x5581a4){return Number(_0x5581a4[_0x885f('0x63')]);});return db['UserChatQueue'][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'ChatQueueId':{'$in':_0x1a3120}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){var _0x223117=_0x885f('0x64')+_0x3fe7c3;return db['sequelize']['query'](_0x223117,{'type':db[_0x885f('0x59')][_0x885f('0x5a')]['SELECT'],'raw':!![],'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(_0x2325a2){var _0x45fd8b=_[_0x885f('0x2f')](_0x2325a2,function(_0x5ce6af){return Number(_0x5ce6af[_0x885f('0x65')]);});return db[_0x885f('0x66')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'FaxQueueId':{'$in':_0x45fd8b}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){var _0x5a06ac='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3fe7c3;return db['sequelize']['query'](_0x5a06ac,{'type':db[_0x885f('0x59')]['QueryTypes'][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(_0x3ac5dc){var _0x19abaf=_[_0x885f('0x2f')](_0x3ac5dc,function(_0x454ff6){return Number(_0x454ff6[_0x885f('0x67')]);});return db[_0x885f('0x68')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'OpenchannelQueueId':{'$in':_0x19abaf}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){var _0x3a7421='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3fe7c3;return db['sequelize'][_0x885f('0x34')](_0x3a7421,{'type':db[_0x885f('0x59')]['QueryTypes'][_0x885f('0x5b')],'raw':!![],'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(_0x1dbb8e){var _0x1beb5f=_[_0x885f('0x2f')](_0x1dbb8e,function(_0x15149b){return Number(_0x15149b[_0x885f('0x69')]);});return db[_0x885f('0x6a')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'WhatsappQueueId':{'$in':_0x1beb5f}},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){return db[_0x885f('0x6b')]['find']({'where':{'TeamId':_0x3fe7c3}});})[_0x885f('0x2a')](function(_0x11e5e8){if(_0x11e5e8===null){return;}return db[_0x885f('0x6c')][_0x885f('0x5e')]({'where':{'UserId':{'$in':_0x1c8788},'VoicePrefixId':_0x11e5e8['VoicePrefixId']},'transaction':_0x1cb7a7});})[_0x885f('0x2a')](function(){return db[_0x885f('0x30')]['destroy']({'where':{'id':_0x3fe7c3},'cascade':!![],'transaction':_0x1cb7a7});})['then'](function(_0x2c2ee6){if(_0x2c2ee6===0x0){_0x4af750[_0x885f('0x1c')](0x194);}else{return db['UserProfileResource'][_0x885f('0x5e')]({'where':{'type':_0x885f('0x4f'),'resourceId':_0x3fe7c3},'cascade':!![],'transaction':_0x1cb7a7})[_0x885f('0x2a')](function(){_0x4af750[_0x885f('0x1d')](0xcc)[_0x885f('0x1e')]();});}})[_0x885f('0x4a')](function(_0xdf0521){_0x4af750[_0x885f('0x1d')](0x1f4)['send'](_0xdf0521);});});};exports[_0x885f('0x6d')]=function(_0x2c44a7,_0x3cc2ee,_0x361805){return db[_0x885f('0x30')][_0x885f('0x6e')]({'where':{'id':_0x2c44a7[_0x885f('0x48')]['id']}})[_0x885f('0x2a')](handleEntityNotFound(_0x3cc2ee,null))[_0x885f('0x2a')](function(_0x16c3a7){if(!_0x2c44a7[_0x885f('0x34')][_0x885f('0x6f')]||!utils[_0x885f('0x70')](_0x2c44a7[_0x885f('0x34')][_0x885f('0x6f')])){throw new db[(_0x885f('0x59'))][(_0x885f('0x71'))]('Unknown\x20channel');}var _0xb80a7a={};var _0x2e7d51={};_0x2e7d51[_0x885f('0x38')]=_[_0x885f('0x35')](db[_['capitalize'](_0x2c44a7[_0x885f('0x34')]['channel'][_0x885f('0x72')]())+_0x885f('0x73')]['rawAttributes']);_0x2e7d51['query']=_[_0x885f('0x35')](_0x2c44a7[_0x885f('0x34')]);_0x2e7d51[_0x885f('0x36')]=_[_0x885f('0x37')](_0x2e7d51[_0x885f('0x38')],_0x2e7d51[_0x885f('0x34')]);_0xb80a7a['attributes']=_[_0x885f('0x37')](_0x2e7d51[_0x885f('0x38')],qs['fields'](_0x2c44a7[_0x885f('0x34')]['fields']));_0xb80a7a[_0x885f('0x39')]=_0xb80a7a[_0x885f('0x39')]['length']?_0xb80a7a[_0x885f('0x39')]:_0x2e7d51[_0x885f('0x38')];_0xb80a7a[_0x885f('0x21')]=qs['limit'](_0x2c44a7[_0x885f('0x34')]['limit']);_0xb80a7a[_0x885f('0x1f')]=qs['offset'](_0x2c44a7[_0x885f('0x34')]['offset']);_0xb80a7a[_0x885f('0x3d')]=qs[_0x885f('0x3e')](_0x2c44a7[_0x885f('0x34')][_0x885f('0x3e')]);_0xb80a7a[_0x885f('0x41')]=qs[_0x885f('0x36')](_[_0x885f('0x3f')](_0x2c44a7[_0x885f('0x34')],_0x2e7d51['filters']));_0xb80a7a=_['merge']({},_0xb80a7a,_0x2c44a7[_0x885f('0x44')]);return _0x16c3a7[_0x885f('0x4e')+_['capitalize'](_0x2c44a7['query']['channel'][_0x885f('0x72')]())+'Queues'](_0xb80a7a);})[_0x885f('0x2a')](respondWithResult(_0x3cc2ee,null))[_0x885f('0x4a')](handleError(_0x3cc2ee,null));};exports[_0x885f('0x74')]=function(_0x53710e,_0x467df1,_0x103eec){return db[_0x885f('0x30')][_0x885f('0x6e')]({'where':{'id':_0x53710e[_0x885f('0x48')]['id']}})[_0x885f('0x2a')](function(_0x224ed6){if(_0x224ed6){if(!_0x53710e['body']['channel']||!utils['isValidChannel'](_0x53710e['body']['channel'])){throw new db[(_0x885f('0x59'))]['ValidationError'](_0x885f('0x75'));}return _0x224ed6[_0x885f('0x76')+_[_0x885f('0x77')](_0x53710e[_0x885f('0x4c')]['channel']['toLowerCase']())+'Queues'](_0x53710e[_0x885f('0x4c')][_0x885f('0x78')]);}return null;})[_0x885f('0x2a')](handleEntityNotFound(_0x467df1,null))['then'](respondWithStatusCode(_0x467df1,null))[_0x885f('0x4a')](handleError(_0x467df1,null));};exports[_0x885f('0x79')]=function(_0x579fe2,_0x2efc23,_0x41ed47){return db[_0x885f('0x30')][_0x885f('0x6e')]({'where':{'id':_0x579fe2[_0x885f('0x48')]['id']}})[_0x885f('0x2a')](function(_0x1baf5){if(_0x1baf5){if(!_0x579fe2[_0x885f('0x34')][_0x885f('0x6f')]||!utils['isValidChannel'](_0x579fe2['query'][_0x885f('0x6f')])){throw new db[(_0x885f('0x59'))]['ValidationError'](_0x885f('0x75'));}return _0x1baf5[_0x885f('0x7a')+_['capitalize'](_0x579fe2[_0x885f('0x34')]['channel'][_0x885f('0x72')]())+_0x885f('0x7b')](_0x579fe2[_0x885f('0x34')]['ids']);}return null;})[_0x885f('0x2a')](handleEntityNotFound(_0x2efc23,null))['then'](respondWithStatusCode(_0x2efc23,null))['catch'](handleError(_0x2efc23,null));};exports[_0x885f('0x7c')]=function(_0x475201,_0x412c93){var _0x1d8701=_[_0x885f('0x7d')](_0x475201[_0x885f('0x4c')][_0x885f('0x78')])?_0x475201[_0x885f('0x4c')][_0x885f('0x78')]:[_0x475201[_0x885f('0x4c')][_0x885f('0x78')]];var _0x16b62f=_0x475201[_0x885f('0x48')]['id'];return db[_0x885f('0x30')]['find']({'where':{'id':_0x16b62f}})[_0x885f('0x2a')](handleEntityNotFound(_0x412c93,null))[_0x885f('0x2a')](function(_0x5bce9d){if(_0x5bce9d){var _0x4b232c=['Voice',_0x885f('0x7e'),'Mail','Sms',_0x885f('0x7f'),_0x885f('0x80'),_0x885f('0x81')];return db['sequelize'][_0x885f('0x57')](function(_0x2557c6){var _0x20c200=_[_0x885f('0x2f')](_0x4b232c,function(_0x5a7811){var _0x9c93cd={'attributes':['id',_0x885f('0x2c')]};if(_0x5a7811===_0x885f('0x82')){_0x9c93cd[_0x885f('0x83')]={'attributes':['penalty']};}return _0x5bce9d['get'+_0x5a7811+'Queues'](_0x9c93cd)['then'](function(_0x356f82){var _0x5e797f=_[_0x885f('0x2f')](_0x356f82,function(_0x2165ca){var _0x421d7e=_[_0x885f('0x2f')](_0x1d8701,function(_0x53075b){var _0x4bf915={'where':{'UserId':_0x53075b,[_0x5a7811+_0x885f('0x84')]:_0x2165ca['id']},'transaction':_0x2557c6};if(_0x5a7811===_0x885f('0x82')){_0x4bf915['defaults']={'penalty':_0x2165ca[_0x885f('0x85')]['penalty']};}return db[_0x885f('0x86')+_0x5a7811+_0x885f('0x73')][_0x885f('0x87')](_0x4bf915)[_0x885f('0x2a')](function(){socket[_0x885f('0x88')](_0x885f('0x4d')+_0x5a7811+'Queue:save',{'UserId':_0x53075b,[_0x5a7811+_0x885f('0x84')]:_0x2165ca['id']});if(_0x5a7811!==_0x885f('0x82')){return;}return db[_0x885f('0x86')][_0x885f('0x46')]({'where':{'id':_0x1d8701,'online':0x1},'attributes':['id',_0x885f('0x2c'),_0x885f('0x89'),'voicePause',_0x885f('0x8a')],'raw':!![]})[_0x885f('0x2a')](function(_0x42b222){var _0x184d38=_[_0x885f('0x2f')](_0x42b222,function(_0x3bbe65){return db[_0x885f('0x8b')][_0x885f('0x8c')]({'membername':_0x3bbe65['name'],'UserId':_0x3bbe65['id'],'queue_name':_0x2165ca['name'],'VoiceQueueId':_0x2165ca['id'],'interface':_[_0x885f('0x8d')](_0x3bbe65[_0x885f('0x8a')])?util[_0x885f('0x8e')]('SIP/%s',_0x3bbe65[_0x885f('0x2c')]):_0x3bbe65['interface'],'paused':_0x3bbe65['voicePause']||![],'penalty':_0x2165ca[_0x885f('0x85')][_0x885f('0x8f')]},{'transaction':_0x2557c6});});return Promise[_0x885f('0x90')](_0x184d38);});});});return Promise['all'](_0x421d7e);});return Promise[_0x885f('0x90')](_0x5e797f);})['then'](function(){return db[_0x885f('0x6b')][_0x885f('0x6e')]({'where':{'teamId':_0x16b62f}})[_0x885f('0x2a')](function(_0x5d33ba){if(_0x5d33ba){var _0x2a5abf=_['map'](_0x1d8701,function(_0x332d50){db['UserVoicePrefix'][_0x885f('0x8c')]({'UserId':_0x332d50,'VoicePrefixId':_0x5d33ba[_0x885f('0x91')]});});return Promise[_0x885f('0x90')](_0x2a5abf);}});});});return Promise[_0x885f('0x90')](_0x20c200)['then'](function(){return _0x5bce9d[_0x885f('0x7c')](_0x1d8701,{'transaction':_0x2557c6})[_0x885f('0x92')](function(_0x27e7a9){return _0x27e7a9;});});});}})[_0x885f('0x2a')](respondWithResult(_0x412c93,null))[_0x885f('0x4a')](handleError(_0x412c93,null));};exports['removeAgents']=function(_0x311368,_0x3c3260){var _0x3af1ac=_[_0x885f('0x7d')](_0x311368[_0x885f('0x34')][_0x885f('0x78')])?_0x311368[_0x885f('0x34')][_0x885f('0x78')]:[_0x311368[_0x885f('0x34')]['ids']];var _0xd39f40=_0x311368['params']['id'];return db[_0x885f('0x30')][_0x885f('0x49')]({'where':{'id':_0xd39f40}})[_0x885f('0x2a')](handleEntityNotFound(_0x3c3260,null))['then'](function(_0x4837bf){if(_0x4837bf){var _0x162777=[_0x885f('0x82'),_0x885f('0x7e'),_0x885f('0x93'),_0x885f('0x94'),_0x885f('0x7f'),_0x885f('0x80'),_0x885f('0x81')];return db[_0x885f('0x56')][_0x885f('0x57')](function(_0x4277eb){var _0x2df4ec=_[_0x885f('0x2f')](_0x162777,function(_0x4ce58f){var _0x1b7c1a={'attributes':['id',_0x885f('0x2c')]};return _0x4837bf[_0x885f('0x4e')+_0x4ce58f+_0x885f('0x7b')](_0x1b7c1a)[_0x885f('0x2a')](function(_0x1f5784){var _0x2dc18b=_[_0x885f('0x2f')](_0x1f5784,function(_0x45cd0e){return _0x45cd0e['removeAgents'](_0x3af1ac,{'transaction':_0x4277eb})[_0x885f('0x2a')](function(){var _0x12e2a9=_['map'](_0x3af1ac,function(_0x3eb4bb){socket[_0x885f('0x88')](_0x885f('0x4d')+_0x4ce58f+_0x885f('0x95'),{'UserId':Number(_0x3eb4bb),[_0x4ce58f+_0x885f('0x84')]:_0x45cd0e['id']});if(_0x4ce58f!==_0x885f('0x82')){return;}return db[_0x885f('0x8b')][_0x885f('0x5e')]({'where':{'VoiceQueueId':_0x45cd0e['id'],'UserId':_0x3eb4bb},'transaction':_0x4277eb});});return Promise[_0x885f('0x90')](_0x12e2a9);});});return Promise['all'](_0x2dc18b);});});return Promise[_0x885f('0x90')](_0x2df4ec)[_0x885f('0x2a')](function(){return _0x4837bf['removeAgents'](_0x3af1ac,{'transaction':_0x4277eb});})[_0x885f('0x2a')](function(){return db[_0x885f('0x6b')][_0x885f('0x6e')]({'where':{'teamId':_0xd39f40}})['then'](function(_0x73d5c0){if(_0x73d5c0){var _0x48c9a0=_[_0x885f('0x2f')](_0x3af1ac,function(_0x2d4f68){db[_0x885f('0x6c')][_0x885f('0x5e')]({'where':{'UserId':_0x2d4f68,'VoicePrefixId':_0x73d5c0[_0x885f('0x91')]}});});return Promise[_0x885f('0x90')](_0x48c9a0);}});});});}})['then'](respondWithStatusCode(_0x3c3260,null))[_0x885f('0x4a')](handleError(_0x3c3260,null));};exports['getAgents']=function(_0x2dceac,_0x14be5d,_0x36d288){var _0x1fdafb={};var _0x36d4dd={};var _0x560113;var _0x336a27;return db['Team'][_0x885f('0x6e')]({'where':{'id':_0x2dceac[_0x885f('0x48')]['id']}})[_0x885f('0x2a')](handleEntityNotFound(_0x14be5d,null))[_0x885f('0x2a')](function(_0x1ce1dd){if(_0x1ce1dd){_0x560113=_0x1ce1dd;_0x36d4dd['model']=_[_0x885f('0x35')](db[_0x885f('0x86')][_0x885f('0x31')]);_0x36d4dd[_0x885f('0x34')]=_[_0x885f('0x35')](_0x2dceac[_0x885f('0x34')]);_0x36d4dd[_0x885f('0x36')]=_['intersection'](_0x36d4dd['model'],_0x36d4dd[_0x885f('0x34')]);_0x1fdafb[_0x885f('0x39')]=_['intersection'](_0x36d4dd[_0x885f('0x38')],qs[_0x885f('0x3a')](_0x2dceac[_0x885f('0x34')][_0x885f('0x3a')]));_0x1fdafb[_0x885f('0x39')]=_0x1fdafb[_0x885f('0x39')][_0x885f('0x3b')]?_0x1fdafb[_0x885f('0x39')]:_0x36d4dd[_0x885f('0x38')];_0x1fdafb[_0x885f('0x3d')]=qs[_0x885f('0x3e')](_0x2dceac[_0x885f('0x34')][_0x885f('0x3e')]);_0x1fdafb[_0x885f('0x41')]=qs[_0x885f('0x36')](_[_0x885f('0x3f')](_0x2dceac[_0x885f('0x34')],_0x36d4dd[_0x885f('0x36')]));if(_0x2dceac['query'][_0x885f('0x40')]){_0x1fdafb['where']=_[_0x885f('0x42')](_0x1fdafb[_0x885f('0x41')],{'$or':_[_0x885f('0x2f')](_0x1fdafb[_0x885f('0x39')],function(_0x152657){var _0x265150={};_0x265150[_0x152657]={'$like':'%'+_0x2dceac[_0x885f('0x34')][_0x885f('0x40')]+'%'};return _0x265150;})});}_0x1fdafb=_[_0x885f('0x42')]({},_0x1fdafb,_0x2dceac[_0x885f('0x44')]);return _0x560113[_0x885f('0x96')](_0x1fdafb);}})['then'](function(_0x50790e){if(_0x50790e){_0x336a27=_0x50790e['length'];if(!_0x2dceac[_0x885f('0x34')]['hasOwnProperty'](_0x885f('0x3c'))){_0x1fdafb[_0x885f('0x21')]=qs[_0x885f('0x21')](_0x2dceac[_0x885f('0x34')][_0x885f('0x21')]);_0x1fdafb[_0x885f('0x1f')]=qs[_0x885f('0x1f')](_0x2dceac[_0x885f('0x34')][_0x885f('0x1f')]);}return _0x560113[_0x885f('0x96')](_0x1fdafb);}})['then'](function(_0x2470b5){if(_0x2470b5){return _0x2470b5?{'count':_0x336a27,'rows':_0x2470b5}:null;}})[_0x885f('0x2a')](respondWithResult(_0x14be5d,null))[_0x885f('0x4a')](handleError(_0x14be5d,null));};
\ No newline at end of file
+var _0x4e5b=['where','type','VIRTUAL','options','Team','includeAll','include','findAll','then','rows','catch','show','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','UserProfileResource','params','destroy','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','Sequelize','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getQueues','channel','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','pick','addQueues','findOne','add','ids','ValidationError','remove','Queues','isArray','Voice','Sms','Fax','Whatsapp','through','penalty','defaults','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','QueueId','online','voicePause','interface','UserVoiceQueueRt','upsert','format','all','addAgents','removeAgents','Chat','Mail','Openchannel','getAgents','filter','nolimit','eml-format','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','./team.socket','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','save','update','error','stack','name','send','index','map','rawAttributes','fieldName','keys','filters','intersection','model','query','attributes','fields','length','order','sort','merge'];(function(_0x2e9fb6,_0x20ab1a){var _0x35ef14=function(_0x11ec27){while(--_0x11ec27){_0x2e9fb6['push'](_0x2e9fb6['shift']());}};_0x35ef14(++_0x20ab1a);}(_0x4e5b,0xfc));var _0xb4e5=function(_0x41ee1f,_0x31ea45){_0x41ee1f=_0x41ee1f-0x0;var _0x44a42f=_0x4e5b[_0x41ee1f];return _0x44a42f;};'use strict';var emlformat=require(_0xb4e5('0x0'));var rimraf=require(_0xb4e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb4e5('0x2'));var rp=require('request-promise');var moment=require(_0xb4e5('0x3'));var BPromise=require(_0xb4e5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb4e5('0x5'));var sox=require(_0xb4e5('0x6'));var csv=require(_0xb4e5('0x7'));var ejs=require(_0xb4e5('0x8'));var fs=require('fs');var fs_extra=require(_0xb4e5('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb4e5('0xa'));var jsforce=require(_0xb4e5('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb4e5('0x7'));var querystring=require(_0xb4e5('0xc'));var Papa=require(_0xb4e5('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb4e5('0xe'));var as=require(_0xb4e5('0xf'));var hardwareService=require(_0xb4e5('0x10'));var logger=require(_0xb4e5('0x11'))(_0xb4e5('0x12'));var utils=require(_0xb4e5('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xb4e5('0x14'));var db=require(_0xb4e5('0x15'))['db'];config['redis']=_['defaults'](config[_0xb4e5('0x16')],{'host':_0xb4e5('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb4e5('0x16')]));require(_0xb4e5('0x18'))['register'](socket);function respondWithStatusCode(_0x284a92,_0x58e628){_0x58e628=_0x58e628||0xcc;return function(_0x126e58){if(_0x126e58){return _0x284a92[_0xb4e5('0x19')](_0x58e628);}return _0x284a92[_0xb4e5('0x1a')](_0x58e628)[_0xb4e5('0x1b')]();};}function respondWithResult(_0x465bb3,_0x5729b3){_0x5729b3=_0x5729b3||0xc8;return function(_0x3e1faa){if(_0x3e1faa){return _0x465bb3['status'](_0x5729b3)[_0xb4e5('0x1c')](_0x3e1faa);}};}function respondWithFilteredResult(_0x95fbf6,_0x447be8){return function(_0x9e809d){if(_0x9e809d){var _0x1367ff=typeof _0x447be8[_0xb4e5('0x1d')]==='undefined'&&typeof _0x447be8['limit']==='undefined';var _0x5700e4=_0x9e809d[_0xb4e5('0x1e')];var _0x4aed9d=_0x1367ff?0x0:_0x447be8['offset'];var _0x138be9=_0x1367ff?_0x9e809d[_0xb4e5('0x1e')]:_0x447be8[_0xb4e5('0x1d')]+_0x447be8[_0xb4e5('0x1f')];var _0x3da236;if(_0x138be9>=_0x5700e4){_0x138be9=_0x5700e4;_0x3da236=0xc8;}else{_0x3da236=0xce;}_0x95fbf6[_0xb4e5('0x1a')](_0x3da236);return _0x95fbf6[_0xb4e5('0x20')](_0xb4e5('0x21'),_0x4aed9d+'-'+_0x138be9+'/'+_0x5700e4)[_0xb4e5('0x1c')](_0x9e809d);}return null;};}function patchUpdates(_0x58dffe){return function(_0x4f19a7){try{jsonpatch[_0xb4e5('0x22')](_0x4f19a7,_0x58dffe,!![]);}catch(_0x5931e7){return BPromise['reject'](_0x5931e7);}return _0x4f19a7[_0xb4e5('0x23')]();};}function saveUpdates(_0x25199e,_0x210c7f){return function(_0x4d89e5){if(_0x4d89e5){return _0x4d89e5[_0xb4e5('0x24')](_0x25199e)['then'](function(_0x161a94){return _0x161a94;});}return null;};}function handleEntityNotFound(_0x33be6c,_0x14968d){return function(_0x52944c){if(!_0x52944c){_0x33be6c[_0xb4e5('0x19')](0x194);}return _0x52944c;};}function handleError(_0x3ef49a,_0x184bed){_0x184bed=_0x184bed||0x1f4;return function(_0x2560a8){logger[_0xb4e5('0x25')](_0x2560a8[_0xb4e5('0x26')]);if(_0x2560a8[_0xb4e5('0x27')]){delete _0x2560a8[_0xb4e5('0x27')];}_0x3ef49a[_0xb4e5('0x1a')](_0x184bed)[_0xb4e5('0x28')](_0x2560a8);};}exports[_0xb4e5('0x29')]=function(_0x2057f1,_0x274613){var _0x3c1a4e={},_0x150fe0={},_0x680226={'count':0x0,'rows':[]};var _0xa8f6e5=_[_0xb4e5('0x2a')](db['Team'][_0xb4e5('0x2b')],function(_0x5cc508){return{'name':_0x5cc508[_0xb4e5('0x2c')],'type':_0x5cc508['type']['key']};});_0x150fe0['model']=_[_0xb4e5('0x2a')](_0xa8f6e5,'name');_0x150fe0['query']=_[_0xb4e5('0x2d')](_0x2057f1['query']);_0x150fe0[_0xb4e5('0x2e')]=_[_0xb4e5('0x2f')](_0x150fe0[_0xb4e5('0x30')],_0x150fe0[_0xb4e5('0x31')]);_0x3c1a4e[_0xb4e5('0x32')]=_[_0xb4e5('0x2f')](_0x150fe0[_0xb4e5('0x30')],qs[_0xb4e5('0x33')](_0x2057f1[_0xb4e5('0x31')][_0xb4e5('0x33')]));_0x3c1a4e[_0xb4e5('0x32')]=_0x3c1a4e[_0xb4e5('0x32')][_0xb4e5('0x34')]?_0x3c1a4e['attributes']:_0x150fe0[_0xb4e5('0x30')];if(!_0x2057f1[_0xb4e5('0x31')]['hasOwnProperty']('nolimit')){_0x3c1a4e[_0xb4e5('0x1f')]=qs[_0xb4e5('0x1f')](_0x2057f1[_0xb4e5('0x31')][_0xb4e5('0x1f')]);_0x3c1a4e[_0xb4e5('0x1d')]=qs[_0xb4e5('0x1d')](_0x2057f1[_0xb4e5('0x31')]['offset']);}_0x3c1a4e[_0xb4e5('0x35')]=qs[_0xb4e5('0x36')](_0x2057f1['query'][_0xb4e5('0x36')]);_0x3c1a4e['where']=qs['filters'](_['pick'](_0x2057f1['query'],_0x150fe0['filters']),_0xa8f6e5);if(_0x2057f1['query']['filter']){_0x3c1a4e['where']=_[_0xb4e5('0x37')](_0x3c1a4e[_0xb4e5('0x38')],{'$or':_[_0xb4e5('0x2a')](_0xa8f6e5,function(_0x181232){if(_0x181232[_0xb4e5('0x39')]!==_0xb4e5('0x3a')){var _0x258d34={};_0x258d34[_0x181232[_0xb4e5('0x27')]]={'$like':'%'+_0x2057f1['query']['filter']+'%'};return _0x258d34;}})});}_0x3c1a4e=_[_0xb4e5('0x37')]({},_0x3c1a4e,_0x2057f1[_0xb4e5('0x3b')]);var _0x33c4ca={'where':_0x3c1a4e[_0xb4e5('0x38')]};return db[_0xb4e5('0x3c')]['count'](_0x33c4ca)['then'](function(_0x1e8ba9){_0x680226[_0xb4e5('0x1e')]=_0x1e8ba9;if(_0x2057f1['query'][_0xb4e5('0x3d')]){_0x3c1a4e[_0xb4e5('0x3e')]=[{'all':!![]}];}return db['Team'][_0xb4e5('0x3f')](_0x3c1a4e);})[_0xb4e5('0x40')](function(_0x2b39ae){_0x680226[_0xb4e5('0x41')]=_0x2b39ae;return _0x680226;})['then'](respondWithFilteredResult(_0x274613,_0x3c1a4e))[_0xb4e5('0x42')](handleError(_0x274613,null));};exports[_0xb4e5('0x43')]=function(_0x1e0f35,_0x39b4f2){var _0x3e399a={'raw':![],'where':{'id':_0x1e0f35['params']['id']}},_0x111dc7={};_0x111dc7[_0xb4e5('0x30')]=_[_0xb4e5('0x2d')](db['Team']['rawAttributes']);_0x111dc7['query']=_[_0xb4e5('0x2d')](_0x1e0f35['query']);_0x111dc7['filters']=_[_0xb4e5('0x2f')](_0x111dc7[_0xb4e5('0x30')],_0x111dc7['query']);_0x3e399a[_0xb4e5('0x32')]=_[_0xb4e5('0x2f')](_0x111dc7['model'],qs[_0xb4e5('0x33')](_0x1e0f35[_0xb4e5('0x31')]['fields']));_0x3e399a['attributes']=_0x3e399a[_0xb4e5('0x32')][_0xb4e5('0x34')]?_0x3e399a[_0xb4e5('0x32')]:_0x111dc7['model'];if(_0x1e0f35['query']['includeAll']){_0x3e399a[_0xb4e5('0x3e')]=[{'all':!![]}];}_0x3e399a=_[_0xb4e5('0x37')]({},_0x3e399a,_0x1e0f35[_0xb4e5('0x3b')]);return db[_0xb4e5('0x3c')][_0xb4e5('0x44')](_0x3e399a)[_0xb4e5('0x40')](handleEntityNotFound(_0x39b4f2,null))[_0xb4e5('0x40')](respondWithResult(_0x39b4f2,null))['catch'](handleError(_0x39b4f2,null));};exports[_0xb4e5('0x45')]=function(_0xcb43b,_0x12eca2){return db[_0xb4e5('0x3c')][_0xb4e5('0x45')](_0xcb43b[_0xb4e5('0x46')],{})[_0xb4e5('0x40')](function(_0x5145f7){var _0x142ea5=_0xcb43b[_0xb4e5('0x47')][_0xb4e5('0x48')]({'plain':!![]});if(!_0x142ea5)throw new Error(_0xb4e5('0x49'));if(_0x142ea5[_0xb4e5('0x4a')]===_0xb4e5('0x47')){var _0x51d2a5=_0x5145f7[_0xb4e5('0x48')]({'plain':!![]});var _0x10f0ab=_0xb4e5('0x4b');return db[_0xb4e5('0x4c')][_0xb4e5('0x44')]({'where':{'name':_0x10f0ab,'userProfileId':_0x142ea5[_0xb4e5('0x4d')]},'raw':!![]})[_0xb4e5('0x40')](function(_0x54b714){if(_0x54b714&&_0x54b714['autoAssociation']===0x0){return db[_0xb4e5('0x4e')]['create']({'name':_0x51d2a5[_0xb4e5('0x27')],'resourceId':_0x51d2a5['id'],'type':_0x54b714[_0xb4e5('0x27')],'sectionId':_0x54b714['id']},{})['then'](function(){return _0x5145f7;});}else{return _0x5145f7;}})['catch'](function(_0x28b899){logger[_0xb4e5('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x28b899);throw _0x28b899;});}return _0x5145f7;})[_0xb4e5('0x40')](respondWithResult(_0x12eca2,0xc9))[_0xb4e5('0x42')](handleError(_0x12eca2,null));};exports[_0xb4e5('0x24')]=function(_0xc746d3,_0x683479){if(_0xc746d3['body']['id']){delete _0xc746d3[_0xb4e5('0x46')]['id'];}return db[_0xb4e5('0x3c')][_0xb4e5('0x44')]({'where':{'id':_0xc746d3[_0xb4e5('0x4f')]['id']}})[_0xb4e5('0x40')](handleEntityNotFound(_0x683479,null))[_0xb4e5('0x40')](saveUpdates(_0xc746d3['body'],null))[_0xb4e5('0x40')](respondWithResult(_0x683479,null))[_0xb4e5('0x42')](handleError(_0x683479,null));};exports[_0xb4e5('0x50')]=function(_0x519890,_0x555358){var _0x25233b=_0x519890[_0xb4e5('0x4f')]['id'];var _0x238323=[];return db['sequelize'][_0xb4e5('0x51')](function(_0xa183fd){var _0x4501b9=_0xb4e5('0x52')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0x4501b9,{'type':db[_0xb4e5('0x54')][_0xb4e5('0x55')]['SELECT'],'raw':!![],'transaction':_0xa183fd})[_0xb4e5('0x40')](function(_0x30f7ca){_0x238323=_[_0xb4e5('0x2a')](_0x30f7ca,function(_0x51adf6){return Number(_0x51adf6[_0xb4e5('0x56')]);});})[_0xb4e5('0x40')](function(){var _0x2b60b4=_0xb4e5('0x57')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0x2b60b4,{'type':db[_0xb4e5('0x54')]['QueryTypes'][_0xb4e5('0x58')],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x276956){var _0x56ab25=_[_0xb4e5('0x2a')](_0x276956,function(_0x229703){return Number(_0x229703['VoiceQueueId']);});return db[_0xb4e5('0x59')]['destroy']({'where':{'UserId':{'$in':_0x238323},'VoiceQueueId':{'$in':_0x56ab25}},'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(){var _0x1f9c7e=_0xb4e5('0x5a')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0x1f9c7e,{'type':db[_0xb4e5('0x54')][_0xb4e5('0x55')]['SELECT'],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x30e00a){var _0x169015=_[_0xb4e5('0x2a')](_0x30e00a,function(_0x3331bf){return Number(_0x3331bf[_0xb4e5('0x5b')]);});return db[_0xb4e5('0x5c')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'MailQueueId':{'$in':_0x169015}},'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(){var _0x339d73=_0xb4e5('0x5d')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0x339d73,{'type':db[_0xb4e5('0x54')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x998e90){var _0x4492a8=_[_0xb4e5('0x2a')](_0x998e90,function(_0x24f578){return Number(_0x24f578[_0xb4e5('0x5e')]);});return db[_0xb4e5('0x5f')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'SmsQueueId':{'$in':_0x4492a8}},'transaction':_0xa183fd});})['then'](function(){var _0xdb6b36=_0xb4e5('0x60')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0xdb6b36,{'type':db[_0xb4e5('0x54')][_0xb4e5('0x55')][_0xb4e5('0x58')],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x47f16d){var _0x259dfb=_[_0xb4e5('0x2a')](_0x47f16d,function(_0x35fc40){return Number(_0x35fc40[_0xb4e5('0x61')]);});return db[_0xb4e5('0x62')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'ChatQueueId':{'$in':_0x259dfb}},'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(){var _0x29fd19=_0xb4e5('0x63')+_0x25233b;return db['sequelize'][_0xb4e5('0x31')](_0x29fd19,{'type':db[_0xb4e5('0x54')]['QueryTypes'][_0xb4e5('0x58')],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x478834){var _0x1d095e=_[_0xb4e5('0x2a')](_0x478834,function(_0x52890c){return Number(_0x52890c[_0xb4e5('0x64')]);});return db[_0xb4e5('0x65')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'FaxQueueId':{'$in':_0x1d095e}},'transaction':_0xa183fd});})['then'](function(){var _0x1c1ace=_0xb4e5('0x66')+_0x25233b;return db[_0xb4e5('0x53')][_0xb4e5('0x31')](_0x1c1ace,{'type':db[_0xb4e5('0x54')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0xc38d78){var _0x35e256=_[_0xb4e5('0x2a')](_0xc38d78,function(_0x564ca0){return Number(_0x564ca0[_0xb4e5('0x67')]);});return db[_0xb4e5('0x68')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'OpenchannelQueueId':{'$in':_0x35e256}},'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(){var _0xe8a410=_0xb4e5('0x69')+_0x25233b;return db[_0xb4e5('0x53')]['query'](_0xe8a410,{'type':db[_0xb4e5('0x54')][_0xb4e5('0x55')][_0xb4e5('0x58')],'raw':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x3ed247){var _0x226952=_[_0xb4e5('0x2a')](_0x3ed247,function(_0x33bc8b){return Number(_0x33bc8b[_0xb4e5('0x6a')]);});return db[_0xb4e5('0x6b')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'WhatsappQueueId':{'$in':_0x226952}},'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(){return db[_0xb4e5('0x6c')]['find']({'where':{'TeamId':_0x25233b}});})['then'](function(_0x5b5f2b){if(_0x5b5f2b===null){return;}return db[_0xb4e5('0x6d')][_0xb4e5('0x50')]({'where':{'UserId':{'$in':_0x238323},'VoicePrefixId':_0x5b5f2b[_0xb4e5('0x6e')]},'transaction':_0xa183fd});})['then'](function(){return db['Team'][_0xb4e5('0x50')]({'where':{'id':_0x25233b},'cascade':!![],'transaction':_0xa183fd});})[_0xb4e5('0x40')](function(_0x358beb){if(_0x358beb===0x0){_0x555358[_0xb4e5('0x19')](0x194);}else{return db[_0xb4e5('0x4e')][_0xb4e5('0x50')]({'where':{'type':_0xb4e5('0x4b'),'resourceId':_0x25233b},'cascade':!![],'transaction':_0xa183fd})[_0xb4e5('0x40')](function(){_0x555358[_0xb4e5('0x1a')](0xcc)[_0xb4e5('0x1b')]();});}})[_0xb4e5('0x42')](function(_0x2951c4){_0x555358[_0xb4e5('0x1a')](0x1f4)[_0xb4e5('0x28')](_0x2951c4);});});};exports[_0xb4e5('0x6f')]=function(_0x349b6b,_0x9206b6,_0x5f0207){return db[_0xb4e5('0x3c')]['findOne']({'where':{'id':_0x349b6b[_0xb4e5('0x4f')]['id']}})[_0xb4e5('0x40')](handleEntityNotFound(_0x9206b6,null))[_0xb4e5('0x40')](function(_0x5ced11){if(!_0x349b6b[_0xb4e5('0x31')][_0xb4e5('0x70')]||!utils[_0xb4e5('0x71')](_0x349b6b[_0xb4e5('0x31')][_0xb4e5('0x70')])){throw new db[(_0xb4e5('0x54'))]['ValidationError'](_0xb4e5('0x72'));}var _0x2b467b={};var _0x3ccfd6={};_0x3ccfd6[_0xb4e5('0x30')]=_[_0xb4e5('0x2d')](db[_[_0xb4e5('0x73')](_0x349b6b[_0xb4e5('0x31')][_0xb4e5('0x70')][_0xb4e5('0x74')]())+'Queue']['rawAttributes']);_0x3ccfd6[_0xb4e5('0x31')]=_['keys'](_0x349b6b[_0xb4e5('0x31')]);_0x3ccfd6[_0xb4e5('0x2e')]=_[_0xb4e5('0x2f')](_0x3ccfd6['model'],_0x3ccfd6[_0xb4e5('0x31')]);_0x2b467b[_0xb4e5('0x32')]=_['intersection'](_0x3ccfd6[_0xb4e5('0x30')],qs[_0xb4e5('0x33')](_0x349b6b['query'][_0xb4e5('0x33')]));_0x2b467b[_0xb4e5('0x32')]=_0x2b467b['attributes']['length']?_0x2b467b[_0xb4e5('0x32')]:_0x3ccfd6[_0xb4e5('0x30')];_0x2b467b[_0xb4e5('0x1f')]=qs[_0xb4e5('0x1f')](_0x349b6b['query'][_0xb4e5('0x1f')]);_0x2b467b[_0xb4e5('0x1d')]=qs[_0xb4e5('0x1d')](_0x349b6b[_0xb4e5('0x31')][_0xb4e5('0x1d')]);_0x2b467b[_0xb4e5('0x35')]=qs[_0xb4e5('0x36')](_0x349b6b[_0xb4e5('0x31')]['sort']);_0x2b467b[_0xb4e5('0x38')]=qs[_0xb4e5('0x2e')](_[_0xb4e5('0x75')](_0x349b6b[_0xb4e5('0x31')],_0x3ccfd6[_0xb4e5('0x2e')]));_0x2b467b=_[_0xb4e5('0x37')]({},_0x2b467b,_0x349b6b[_0xb4e5('0x3b')]);return _0x5ced11[_0xb4e5('0x48')+_[_0xb4e5('0x73')](_0x349b6b[_0xb4e5('0x31')][_0xb4e5('0x70')][_0xb4e5('0x74')]())+'Queues'](_0x2b467b);})[_0xb4e5('0x40')](respondWithResult(_0x9206b6,null))['catch'](handleError(_0x9206b6,null));};exports[_0xb4e5('0x76')]=function(_0x5716b0,_0x4324c0,_0x1dc345){return db['Team'][_0xb4e5('0x77')]({'where':{'id':_0x5716b0['params']['id']}})[_0xb4e5('0x40')](function(_0x6623a6){if(_0x6623a6){if(!_0x5716b0[_0xb4e5('0x46')]['channel']||!utils[_0xb4e5('0x71')](_0x5716b0[_0xb4e5('0x46')][_0xb4e5('0x70')])){throw new db[(_0xb4e5('0x54'))]['ValidationError'](_0xb4e5('0x72'));}return _0x6623a6[_0xb4e5('0x78')+_['capitalize'](_0x5716b0['body'][_0xb4e5('0x70')][_0xb4e5('0x74')]())+'Queues'](_0x5716b0[_0xb4e5('0x46')][_0xb4e5('0x79')]);}return null;})[_0xb4e5('0x40')](handleEntityNotFound(_0x4324c0,null))[_0xb4e5('0x40')](respondWithStatusCode(_0x4324c0,null))[_0xb4e5('0x42')](handleError(_0x4324c0,null));};exports['removeQueues']=function(_0x54e33c,_0x4a99ac,_0x390a9c){return db['Team'][_0xb4e5('0x77')]({'where':{'id':_0x54e33c[_0xb4e5('0x4f')]['id']}})[_0xb4e5('0x40')](function(_0x472e82){if(_0x472e82){if(!_0x54e33c[_0xb4e5('0x31')][_0xb4e5('0x70')]||!utils[_0xb4e5('0x71')](_0x54e33c[_0xb4e5('0x31')][_0xb4e5('0x70')])){throw new db[(_0xb4e5('0x54'))][(_0xb4e5('0x7a'))](_0xb4e5('0x72'));}return _0x472e82[_0xb4e5('0x7b')+_[_0xb4e5('0x73')](_0x54e33c[_0xb4e5('0x31')][_0xb4e5('0x70')][_0xb4e5('0x74')]())+_0xb4e5('0x7c')](_0x54e33c[_0xb4e5('0x31')][_0xb4e5('0x79')]);}return null;})['then'](handleEntityNotFound(_0x4a99ac,null))['then'](respondWithStatusCode(_0x4a99ac,null))[_0xb4e5('0x42')](handleError(_0x4a99ac,null));};exports['addAgents']=function(_0x17225,_0x20b9ea){var _0xcdbad=_[_0xb4e5('0x7d')](_0x17225[_0xb4e5('0x46')][_0xb4e5('0x79')])?_0x17225[_0xb4e5('0x46')][_0xb4e5('0x79')]:[_0x17225[_0xb4e5('0x46')][_0xb4e5('0x79')]];var _0x3c2da4=_0x17225[_0xb4e5('0x4f')]['id'];return db[_0xb4e5('0x3c')][_0xb4e5('0x44')]({'where':{'id':_0x3c2da4}})[_0xb4e5('0x40')](handleEntityNotFound(_0x20b9ea,null))['then'](function(_0x7b1346){if(_0x7b1346){var _0x545a60=[_0xb4e5('0x7e'),'Chat','Mail',_0xb4e5('0x7f'),_0xb4e5('0x80'),'Openchannel',_0xb4e5('0x81')];return db[_0xb4e5('0x53')]['transaction'](function(_0xf2aee1){var _0x3783ef=_[_0xb4e5('0x2a')](_0x545a60,function(_0x1dd880){var _0x53352d={'attributes':['id',_0xb4e5('0x27')]};if(_0x1dd880===_0xb4e5('0x7e')){_0x53352d[_0xb4e5('0x82')]={'attributes':[_0xb4e5('0x83')]};}return _0x7b1346[_0xb4e5('0x48')+_0x1dd880+_0xb4e5('0x7c')](_0x53352d)[_0xb4e5('0x40')](function(_0x1ee4db){var _0x5bd51b=_[_0xb4e5('0x2a')](_0x1ee4db,function(_0x317e48){var _0x542f91=_[_0xb4e5('0x2a')](_0xcdbad,function(_0x108e15){var _0x15bdc3={'where':{'UserId':_0x108e15,[_0x1dd880+'QueueId']:_0x317e48['id']},'transaction':_0xf2aee1};if(_0x1dd880==='Voice'){_0x15bdc3[_0xb4e5('0x84')]={'penalty':_0x317e48[_0xb4e5('0x85')][_0xb4e5('0x83')]};}return db[_0xb4e5('0x86')+_0x1dd880+'Queue'][_0xb4e5('0x87')](_0x15bdc3)['then'](function(){socket[_0xb4e5('0x88')](_0xb4e5('0x47')+_0x1dd880+_0xb4e5('0x89'),{'UserId':_0x108e15,[_0x1dd880+_0xb4e5('0x8a')]:_0x317e48['id']});if(_0x1dd880!==_0xb4e5('0x7e')){return;}return db[_0xb4e5('0x86')][_0xb4e5('0x3f')]({'where':{'id':_0xcdbad,'online':0x1},'attributes':['id',_0xb4e5('0x27'),_0xb4e5('0x8b'),_0xb4e5('0x8c'),_0xb4e5('0x8d')],'raw':!![]})[_0xb4e5('0x40')](function(_0x47b4f0){var _0x2d2e1b=_[_0xb4e5('0x2a')](_0x47b4f0,function(_0x3a0c95){return db[_0xb4e5('0x8e')][_0xb4e5('0x8f')]({'membername':_0x3a0c95['name'],'UserId':_0x3a0c95['id'],'queue_name':_0x317e48[_0xb4e5('0x27')],'VoiceQueueId':_0x317e48['id'],'interface':_['isNil'](_0x3a0c95[_0xb4e5('0x8d')])?util[_0xb4e5('0x90')]('SIP/%s',_0x3a0c95[_0xb4e5('0x27')]):_0x3a0c95[_0xb4e5('0x8d')],'paused':_0x3a0c95[_0xb4e5('0x8c')]||![],'penalty':_0x317e48[_0xb4e5('0x85')][_0xb4e5('0x83')]},{'transaction':_0xf2aee1});});return Promise[_0xb4e5('0x91')](_0x2d2e1b);});});});return Promise[_0xb4e5('0x91')](_0x542f91);});return Promise[_0xb4e5('0x91')](_0x5bd51b);})[_0xb4e5('0x40')](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x3c2da4}})['then'](function(_0x1c5cd6){if(_0x1c5cd6){var _0x543a2a=_[_0xb4e5('0x2a')](_0xcdbad,function(_0x35a848){db[_0xb4e5('0x6d')][_0xb4e5('0x8f')]({'UserId':_0x35a848,'VoicePrefixId':_0x1c5cd6[_0xb4e5('0x6e')]});});return Promise['all'](_0x543a2a);}});});});return Promise[_0xb4e5('0x91')](_0x3783ef)[_0xb4e5('0x40')](function(){return _0x7b1346[_0xb4e5('0x92')](_0xcdbad,{'transaction':_0xf2aee1})['spread'](function(_0x267102){return _0x267102;});});});}})['then'](respondWithResult(_0x20b9ea,null))[_0xb4e5('0x42')](handleError(_0x20b9ea,null));};exports[_0xb4e5('0x93')]=function(_0xae9b37,_0x18434a){var _0x1e6c5c=_[_0xb4e5('0x7d')](_0xae9b37[_0xb4e5('0x31')][_0xb4e5('0x79')])?_0xae9b37['query'][_0xb4e5('0x79')]:[_0xae9b37['query']['ids']];var _0x5ed816=_0xae9b37['params']['id'];return db[_0xb4e5('0x3c')][_0xb4e5('0x44')]({'where':{'id':_0x5ed816}})[_0xb4e5('0x40')](handleEntityNotFound(_0x18434a,null))['then'](function(_0x57e0f9){if(_0x57e0f9){var _0xabfc60=[_0xb4e5('0x7e'),_0xb4e5('0x94'),_0xb4e5('0x95'),_0xb4e5('0x7f'),_0xb4e5('0x80'),_0xb4e5('0x96'),_0xb4e5('0x81')];return db['sequelize'][_0xb4e5('0x51')](function(_0x2df489){var _0x20e34b=_[_0xb4e5('0x2a')](_0xabfc60,function(_0x3b994a){var _0x7d1488={'attributes':['id',_0xb4e5('0x27')]};return _0x57e0f9[_0xb4e5('0x48')+_0x3b994a+_0xb4e5('0x7c')](_0x7d1488)['then'](function(_0x5f0f46){var _0x56dba6=_['map'](_0x5f0f46,function(_0x28a8de){return _0x28a8de[_0xb4e5('0x93')](_0x1e6c5c,{'transaction':_0x2df489})[_0xb4e5('0x40')](function(){var _0x52b25f=_[_0xb4e5('0x2a')](_0x1e6c5c,function(_0x8053da){socket[_0xb4e5('0x88')](_0xb4e5('0x47')+_0x3b994a+'Queue:remove',{'UserId':Number(_0x8053da),[_0x3b994a+_0xb4e5('0x8a')]:_0x28a8de['id']});if(_0x3b994a!==_0xb4e5('0x7e')){return;}return db[_0xb4e5('0x8e')][_0xb4e5('0x50')]({'where':{'VoiceQueueId':_0x28a8de['id'],'UserId':_0x8053da},'transaction':_0x2df489});});return Promise[_0xb4e5('0x91')](_0x52b25f);});});return Promise[_0xb4e5('0x91')](_0x56dba6);});});return Promise[_0xb4e5('0x91')](_0x20e34b)['then'](function(){return _0x57e0f9[_0xb4e5('0x93')](_0x1e6c5c,{'transaction':_0x2df489});})[_0xb4e5('0x40')](function(){return db[_0xb4e5('0x6c')]['findOne']({'where':{'teamId':_0x5ed816}})['then'](function(_0x19e717){if(_0x19e717){var _0x15617c=_['map'](_0x1e6c5c,function(_0x15c729){db['UserVoicePrefix'][_0xb4e5('0x50')]({'where':{'UserId':_0x15c729,'VoicePrefixId':_0x19e717[_0xb4e5('0x6e')]}});});return Promise[_0xb4e5('0x91')](_0x15617c);}});});});}})[_0xb4e5('0x40')](respondWithStatusCode(_0x18434a,null))[_0xb4e5('0x42')](handleError(_0x18434a,null));};exports[_0xb4e5('0x97')]=function(_0x4177c9,_0x34819f,_0xfb0d){var _0x4e481a={};var _0x23de3f={};var _0x163b3e;var _0x23f4f2;return db[_0xb4e5('0x3c')]['findOne']({'where':{'id':_0x4177c9[_0xb4e5('0x4f')]['id']}})[_0xb4e5('0x40')](handleEntityNotFound(_0x34819f,null))[_0xb4e5('0x40')](function(_0x3d78a9){if(_0x3d78a9){_0x163b3e=_0x3d78a9;_0x23de3f['model']=_[_0xb4e5('0x2d')](db['User'][_0xb4e5('0x2b')]);_0x23de3f[_0xb4e5('0x31')]=_[_0xb4e5('0x2d')](_0x4177c9[_0xb4e5('0x31')]);_0x23de3f['filters']=_[_0xb4e5('0x2f')](_0x23de3f[_0xb4e5('0x30')],_0x23de3f['query']);_0x4e481a[_0xb4e5('0x32')]=_[_0xb4e5('0x2f')](_0x23de3f[_0xb4e5('0x30')],qs[_0xb4e5('0x33')](_0x4177c9[_0xb4e5('0x31')][_0xb4e5('0x33')]));_0x4e481a['attributes']=_0x4e481a[_0xb4e5('0x32')][_0xb4e5('0x34')]?_0x4e481a[_0xb4e5('0x32')]:_0x23de3f['model'];_0x4e481a[_0xb4e5('0x35')]=qs[_0xb4e5('0x36')](_0x4177c9['query'][_0xb4e5('0x36')]);_0x4e481a[_0xb4e5('0x38')]=qs[_0xb4e5('0x2e')](_[_0xb4e5('0x75')](_0x4177c9[_0xb4e5('0x31')],_0x23de3f[_0xb4e5('0x2e')]));if(_0x4177c9[_0xb4e5('0x31')][_0xb4e5('0x98')]){_0x4e481a[_0xb4e5('0x38')]=_[_0xb4e5('0x37')](_0x4e481a[_0xb4e5('0x38')],{'$or':_['map'](_0x4e481a[_0xb4e5('0x32')],function(_0x60e123){var _0x144350={};_0x144350[_0x60e123]={'$like':'%'+_0x4177c9[_0xb4e5('0x31')][_0xb4e5('0x98')]+'%'};return _0x144350;})});}_0x4e481a=_[_0xb4e5('0x37')]({},_0x4e481a,_0x4177c9[_0xb4e5('0x3b')]);return _0x163b3e[_0xb4e5('0x97')](_0x4e481a);}})[_0xb4e5('0x40')](function(_0xb2d940){if(_0xb2d940){_0x23f4f2=_0xb2d940[_0xb4e5('0x34')];if(!_0x4177c9[_0xb4e5('0x31')]['hasOwnProperty'](_0xb4e5('0x99'))){_0x4e481a[_0xb4e5('0x1f')]=qs[_0xb4e5('0x1f')](_0x4177c9[_0xb4e5('0x31')][_0xb4e5('0x1f')]);_0x4e481a[_0xb4e5('0x1d')]=qs[_0xb4e5('0x1d')](_0x4177c9[_0xb4e5('0x31')][_0xb4e5('0x1d')]);}return _0x163b3e[_0xb4e5('0x97')](_0x4e481a);}})['then'](function(_0xf4aaf1){if(_0xf4aaf1){return _0xf4aaf1?{'count':_0x23f4f2,'rows':_0xf4aaf1}:null;}})[_0xb4e5('0x40')](respondWithResult(_0x34819f,null))[_0xb4e5('0x42')](handleError(_0x34819f,null));};
\ No newline at end of file
index bc29920..4ba9e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x560b=['Team','setMaxListeners','save','update','emit','hasOwnProperty','hook','events'];(function(_0x28ce8c,_0x53c0a5){var _0x1fd909=function(_0x283242){while(--_0x283242){_0x28ce8c['push'](_0x28ce8c['shift']());}};_0x1fd909(++_0x53c0a5);}(_0x560b,0x12f));var _0xb560=function(_0x27ca2c,_0x1ee9bc){_0x27ca2c=_0x27ca2c-0x0;var _0x1ce0f9=_0x560b[_0x27ca2c];return _0x1ce0f9;};'use strict';var EventEmitter=require(_0xb560('0x0'));var Team=require('../../mysqldb')['db'][_0xb560('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xb560('0x2')](0x0);var events={'afterCreate':_0xb560('0x3'),'afterUpdate':_0xb560('0x4'),'afterDestroy':'remove'};function emitEvent(_0x34ff51){return function(_0x421534,_0x32cac1,_0x2d216e){TeamEvents[_0xb560('0x5')](_0x34ff51+':'+_0x421534['id'],_0x421534);TeamEvents['emit'](_0x34ff51,_0x421534);_0x2d216e(null);};}for(var e in events){if(events[_0xb560('0x6')](e)){var event=events[e];Team[_0xb560('0x7')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x5066=['events','../../mysqldb','Team','setMaxListeners','save','emit','hasOwnProperty','hook','exports'];(function(_0x1cb176,_0xfd33b2){var _0x136ff8=function(_0x4f1829){while(--_0x4f1829){_0x1cb176['push'](_0x1cb176['shift']());}};_0x136ff8(++_0xfd33b2);}(_0x5066,0xcf));var _0x6506=function(_0x33539a,_0xab9aa5){_0x33539a=_0x33539a-0x0;var _0x1a99a7=_0x5066[_0x33539a];return _0x1a99a7;};'use strict';var EventEmitter=require(_0x6506('0x0'));var Team=require(_0x6506('0x1'))['db'][_0x6506('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x6506('0x3')](0x0);var events={'afterCreate':_0x6506('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x43dc07){return function(_0x53f971,_0x4e3e94,_0x2f28e6){TeamEvents[_0x6506('0x5')](_0x43dc07+':'+_0x53f971['id'],_0x53f971);TeamEvents[_0x6506('0x5')](_0x43dc07,_0x53f971);_0x2f28e6(null);};}for(var e in events){if(events[_0x6506('0x6')](e)){var event=events[e];Team[_0x6506('0x7')](e,emitEvent(event));}}module[_0x6506('0x8')]=TeamEvents;
\ No newline at end of file
index 305c574..0c8e212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x142e=['setDataValue','channel','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Whatsapp','resolve','all','lodash','get','then','map'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x142e,0x18b));var _0xe142=function(_0x517b56,_0x4502a1){_0x517b56=_0x517b56-0x0;var _0x42ebed=_0x142e[_0x517b56];return _0x42ebed;};'use strict';var _=require(_0xe142('0x0'));var attributes=require('./team.attributes');function getQueuesByChannel(_0x386777,_0x499257){var _0x3590f0=_0xe142('0x1')+_0x499257+'Queues';return _0x386777[_0x3590f0]()[_0xe142('0x2')](function(_0x332f8f){return _[_0xe142('0x3')](_0x332f8f,function(_0x263d36){_0x263d36[_0xe142('0x4')](_0xe142('0x5'),_0x499257);return _0x263d36;});})[_0xe142('0x6')](function(_0x161153){throw _0x161153;});}module[_0xe142('0x7')]=function(_0x1e76c7){return _0x1e76c7[_0xe142('0x8')](_0xe142('0x9'),attributes,{'tableName':_0xe142('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x1c7f31=this;var _0x3912a0=[_0xe142('0xb'),_0xe142('0xc'),_0xe142('0xd'),_0xe142('0xe'),_0xe142('0xf'),'Voice',_0xe142('0x10')];return Promise[_0xe142('0x11')]()[_0xe142('0x2')](function(){var _0xd326d=_['map'](_0x3912a0,function(_0x136351){return getQueuesByChannel(_0x1c7f31,_0x136351);});return Promise[_0xe142('0x12')](_0xd326d);})[_0xe142('0x6')](function(_0x24ac60){throw _0x24ac60;});}}});};
\ No newline at end of file
+var _0x4483=['teams','Chat','Fax','Mail','Openchannel','Sms','Voice','all','lodash','./team.attributes','get','Queues','map','setDataValue','catch','exports','define','Team'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4483,0x170));var _0x3448=function(_0x5752d1,_0x35664c){_0x5752d1=_0x5752d1-0x0;var _0x71779e=_0x4483[_0x5752d1];return _0x71779e;};'use strict';var _=require(_0x3448('0x0'));var attributes=require(_0x3448('0x1'));function getQueuesByChannel(_0x11c0e4,_0x57ac55){var _0x5b0a63=_0x3448('0x2')+_0x57ac55+_0x3448('0x3');return _0x11c0e4[_0x5b0a63]()['then'](function(_0xa9c831){return _[_0x3448('0x4')](_0xa9c831,function(_0x120bfc){_0x120bfc[_0x3448('0x5')]('channel',_0x57ac55);return _0x120bfc;});})[_0x3448('0x6')](function(_0x2acd5a){throw _0x2acd5a;});}module[_0x3448('0x7')]=function(_0x1ad0b1){return _0x1ad0b1[_0x3448('0x8')](_0x3448('0x9'),attributes,{'tableName':_0x3448('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x219f11=this;var _0x5f5d6c=[_0x3448('0xb'),_0x3448('0xc'),_0x3448('0xd'),_0x3448('0xe'),_0x3448('0xf'),_0x3448('0x10'),'Whatsapp'];return Promise['resolve']()['then'](function(){var _0x5f8238=_[_0x3448('0x4')](_0x5f5d6c,function(_0x151515){return getQueuesByChannel(_0x219f11,_0x151515);});return Promise[_0x3448('0x11')](_0x5f8238);})[_0x3448('0x6')](function(_0x191f8e){throw _0x191f8e;});}}});};
\ No newline at end of file
index 583490e..6e7922f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1af=['register','request','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0xb0ce7b,_0x25894a){var _0x1e2f01=function(_0x256534){while(--_0x256534){_0xb0ce7b['push'](_0xb0ce7b['shift']());}};_0x1e2f01(++_0x25894a);}(_0xd1af,0xe5));var _0xfd1a=function(_0xa8369a,_0x3d2319){_0xa8369a=_0xa8369a-0x0;var _0x4b74b7=_0xd1af[_0xa8369a];return _0x4b74b7;};'use strict';var _=require(_0xfd1a('0x0'));var util=require(_0xfd1a('0x1'));var moment=require(_0xfd1a('0x2'));var BPromise=require(_0xfd1a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfd1a('0x4'))['db'];var utils=require(_0xfd1a('0x5'));var logger=require(_0xfd1a('0x6'))(_0xfd1a('0x7'));var config=require(_0xfd1a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfd1a('0x9')][_0xfd1a('0xa')]({'port':0x232a});config[_0xfd1a('0xb')]=_[_0xfd1a('0xc')](config[_0xfd1a('0xb')],{'host':_0xfd1a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfd1a('0xb')]));require('./team.socket')[_0xfd1a('0xe')](socket);function respondWithRpcPromise(_0x336271,_0x7a7e50,_0xc58945){return new BPromise(function(_0x2f4dc3,_0x361dae){return client[_0xfd1a('0xf')](_0x336271,_0xc58945)['then'](function(_0x325e76){logger[_0xfd1a('0x10')](_0xfd1a('0x11'),_0x7a7e50,_0xfd1a('0x12'));logger[_0xfd1a('0x13')](_0xfd1a('0x14'),_0x7a7e50,_0xfd1a('0x12'),JSON[_0xfd1a('0x15')](_0x325e76));if(_0x325e76[_0xfd1a('0x16')]){if(_0x325e76[_0xfd1a('0x16')][_0xfd1a('0x17')]===0x1f4){logger[_0xfd1a('0x16')]('Team,\x20%s,\x20%s',_0x7a7e50,_0x325e76[_0xfd1a('0x16')][_0xfd1a('0x18')]);return _0x361dae(_0x325e76[_0xfd1a('0x16')][_0xfd1a('0x18')]);}logger[_0xfd1a('0x16')](_0xfd1a('0x11'),_0x7a7e50,_0x325e76[_0xfd1a('0x16')][_0xfd1a('0x18')]);return _0x2f4dc3(_0x325e76[_0xfd1a('0x16')][_0xfd1a('0x18')]);}else{logger[_0xfd1a('0x10')]('Team,\x20%s,\x20%s',_0x7a7e50,_0xfd1a('0x12'));_0x2f4dc3(_0x325e76[_0xfd1a('0x19')][_0xfd1a('0x18')]);}})[_0xfd1a('0x1a')](function(_0x56d5e9){logger[_0xfd1a('0x16')](_0xfd1a('0x11'),_0x7a7e50,_0x56d5e9);_0x361dae(_0x56d5e9);});});}
\ No newline at end of file
+var _0x4271=['localhost','socket.io-emitter','./team.socket','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults'];(function(_0x437e8a,_0x44dfba){var _0x5e9910=function(_0x3b71e1){while(--_0x3b71e1){_0x437e8a['push'](_0x437e8a['shift']());}};_0x5e9910(++_0x44dfba);}(_0x4271,0x16c));var _0x1427=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x4271[_0x9fd887];return _0x1a54ab;};'use strict';var _=require(_0x1427('0x0'));var util=require(_0x1427('0x1'));var moment=require('moment');var BPromise=require(_0x1427('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1427('0x3'));var db=require(_0x1427('0x4'))['db'];var utils=require(_0x1427('0x5'));var logger=require(_0x1427('0x6'))(_0x1427('0x7'));var config=require(_0x1427('0x8'));var jayson=require(_0x1427('0x9'));var client=jayson['client'][_0x1427('0xa')]({'port':0x232a});config[_0x1427('0xb')]=_[_0x1427('0xc')](config['redis'],{'host':_0x1427('0xd'),'port':0x18eb});var socket=require(_0x1427('0xe'))(new Redis(config[_0x1427('0xb')]));require(_0x1427('0xf'))['register'](socket);function respondWithRpcPromise(_0x286e03,_0x5bbc3e,_0x3af03e){return new BPromise(function(_0x33340a,_0x26cc11){return client[_0x1427('0x10')](_0x286e03,_0x3af03e)[_0x1427('0x11')](function(_0x42545a){logger[_0x1427('0x12')](_0x1427('0x13'),_0x5bbc3e,'request\x20sent');logger[_0x1427('0x14')](_0x1427('0x15'),_0x5bbc3e,'request\x20sent',JSON[_0x1427('0x16')](_0x42545a));if(_0x42545a[_0x1427('0x17')]){if(_0x42545a['error'][_0x1427('0x18')]===0x1f4){logger[_0x1427('0x17')](_0x1427('0x13'),_0x5bbc3e,_0x42545a['error'][_0x1427('0x19')]);return _0x26cc11(_0x42545a[_0x1427('0x17')]['message']);}logger[_0x1427('0x17')](_0x1427('0x13'),_0x5bbc3e,_0x42545a[_0x1427('0x17')][_0x1427('0x19')]);return _0x33340a(_0x42545a[_0x1427('0x17')][_0x1427('0x19')]);}else{logger[_0x1427('0x12')](_0x1427('0x13'),_0x5bbc3e,_0x1427('0x1a'));_0x33340a(_0x42545a[_0x1427('0x1b')][_0x1427('0x19')]);}})[_0x1427('0x1c')](function(_0x2917e2){logger[_0x1427('0x17')](_0x1427('0x13'),_0x5bbc3e,_0x2917e2);_0x26cc11(_0x2917e2);});});}
\ No newline at end of file
index ffa7b3a..b0cbcf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38db=['register','length','./team.events','save','remove','update','emit','removeListener'];(function(_0x12dd11,_0x52b882){var _0x3a502b=function(_0x1a660d){while(--_0x1a660d){_0x12dd11['push'](_0x12dd11['shift']());}};_0x3a502b(++_0x52b882);}(_0x38db,0x6a));var _0xb38d=function(_0x46c3bb,_0x50d510){_0x46c3bb=_0x46c3bb-0x0;var _0x2bbdf8=_0x38db[_0x46c3bb];return _0x2bbdf8;};'use strict';var TeamEvents=require(_0xb38d('0x0'));var events=[_0xb38d('0x1'),_0xb38d('0x2'),_0xb38d('0x3')];function createListener(_0x3f9e3b,_0x2a252a){return function(_0x37ca30){_0x2a252a[_0xb38d('0x4')](_0x3f9e3b,_0x37ca30);};}function removeListener(_0x285532,_0x1e2b0e){return function(){TeamEvents[_0xb38d('0x5')](_0x285532,_0x1e2b0e);};}exports[_0xb38d('0x6')]=function(_0x36db37){for(var _0x3bd4fa=0x0,_0x8cbe00=events[_0xb38d('0x7')];_0x3bd4fa<_0x8cbe00;_0x3bd4fa++){var _0x1e53d3=events[_0x3bd4fa];var _0xc112c=createListener('team:'+_0x1e53d3,_0x36db37);TeamEvents['on'](_0x1e53d3,_0xc112c);}};
\ No newline at end of file
+var _0x5974=['removeListener','register','length','./team.events','save','update','emit'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x5974,0x1d8));var _0x4597=function(_0x57fda8,_0x5e80a0){_0x57fda8=_0x57fda8-0x0;var _0x11c895=_0x5974[_0x57fda8];return _0x11c895;};'use strict';var TeamEvents=require(_0x4597('0x0'));var events=[_0x4597('0x1'),'remove',_0x4597('0x2')];function createListener(_0x5484b3,_0x43fabe){return function(_0x2c6768){_0x43fabe[_0x4597('0x3')](_0x5484b3,_0x2c6768);};}function removeListener(_0x477c3c,_0x195d4e){return function(){TeamEvents[_0x4597('0x4')](_0x477c3c,_0x195d4e);};}exports[_0x4597('0x5')]=function(_0x395673){for(var _0x446b8a=0x0,_0x50fd44=events[_0x4597('0x6')];_0x446b8a<_0x50fd44;_0x446b8a++){var _0x356491=events[_0x446b8a];var _0x31479f=createListener('team:'+_0x356491,_0x395673);TeamEvents['on'](_0x356491,_0x31479f);}};
\ No newline at end of file
index e76ffad..78c973d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a24=['exports','INTEGER','sequelize'];(function(_0x16499c,_0x58a914){var _0x5c5afe=function(_0x1cd8dc){while(--_0x1cd8dc){_0x16499c['push'](_0x16499c['shift']());}};_0x5c5afe(++_0x58a914);}(_0x6a24,0xd1));var _0x46a2=function(_0x15549e,_0x1b09ac){_0x15549e=_0x15549e-0x0;var _0x40f1df=_0x6a24[_0x15549e];return _0x40f1df;};'use strict';var Sequelize=require(_0x46a2('0x0'));module[_0x46a2('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x46a2('0x2')]}};
\ No newline at end of file
+var _0x0ff2=['INTEGER','sequelize'];(function(_0xe2e5cd,_0x3bef1e){var _0x4da556=function(_0xe015f6){while(--_0xe015f6){_0xe2e5cd['push'](_0xe2e5cd['shift']());}};_0x4da556(++_0x3bef1e);}(_0x0ff2,0x197));var _0x20ff=function(_0x364d1a,_0x3fba43){_0x364d1a=_0x364d1a-0x0;var _0x3b9c2e=_0x0ff2[_0x364d1a];return _0x3b9c2e;};'use strict';var Sequelize=require(_0x20ff('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x20ff('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index ad44f33..738beea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd10f=['lodash','util','../../config/logger','api','moment','request-promise','path','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd10f,0x198));var _0xfd10=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xd10f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xfd10('0x0'));var util=require(_0xfd10('0x1'));var logger=require(_0xfd10('0x2'))(_0xfd10('0x3'));var moment=require(_0xfd10('0x4'));var BPromise=require('bluebird');var rp=require(_0xfd10('0x5'));var fs=require('fs');var path=require(_0xfd10('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfd10('0x7'));module[_0xfd10('0x8')]=function(_0x3f9cdd,_0x10a20f){return _0x3f9cdd[_0xfd10('0x9')](_0xfd10('0xa'),attributes,{'tableName':_0xfd10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f4d=['moment','bluebird','request-promise','path','rimraf','./teamVoicePrefix.attributes','define','TeamVoicePrefix','lodash','util','../../config/logger','api'];(function(_0x5d424d,_0x2753b9){var _0x54c6bf=function(_0x21d4a9){while(--_0x21d4a9){_0x5d424d['push'](_0x5d424d['shift']());}};_0x54c6bf(++_0x2753b9);}(_0x9f4d,0xb0));var _0xd9f4=function(_0xc5caf7,_0xc6d31b){_0xc5caf7=_0xc5caf7-0x0;var _0x509351=_0x9f4d[_0xc5caf7];return _0x509351;};'use strict';var _=require(_0xd9f4('0x0'));var util=require(_0xd9f4('0x1'));var logger=require(_0xd9f4('0x2'))(_0xd9f4('0x3'));var moment=require(_0xd9f4('0x4'));var BPromise=require(_0xd9f4('0x5'));var rp=require(_0xd9f4('0x6'));var fs=require('fs');var path=require(_0xd9f4('0x7'));var rimraf=require(_0xd9f4('0x8'));var config=require('../../config/environment');var attributes=require(_0xd9f4('0x9'));module['exports']=function(_0x3d521d,_0x3ebf1b){return _0x3d521d[_0xd9f4('0xa')](_0xd9f4('0xb'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01a2eb0..890d01a 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(_0xd72a5a,_0x5a3173){var _0x11c401=function(_0x32ce84){while(--_0x32ce84){_0xd72a5a['push'](_0xd72a5a['shift']());}};_0x11c401(++_0x5a3173);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x257a28,_0x2cd00d){_0x257a28=_0x257a28-0x0;var _0x13bccc=_0xcb91[_0x257a28];return _0x13bccc;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x356127,_0x4873ac){var _0x5d4c75=function(_0x4fe60c){while(--_0x4fe60c){_0x356127['push'](_0x356127['shift']());}};_0x5d4c75(++_0x4873ac);}(_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 d06c9e3..bd9eaf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7715=['sequelize','exports'];(function(_0x459dd1,_0x38dfa0){var _0xb87e44=function(_0x3ed4de){while(--_0x3ed4de){_0x459dd1['push'](_0x459dd1['shift']());}};_0xb87e44(++_0x38dfa0);}(_0x7715,0x19e));var _0x5771=function(_0x39a5e9,_0x5906dd){_0x39a5e9=_0x39a5e9-0x0;var _0x1d5312=_0x7715[_0x39a5e9];return _0x1d5312;};'use strict';var Sequelize=require(_0x5771('0x0'));module[_0x5771('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd05f=['sequelize','exports'];(function(_0x165a0a,_0x4e126b){var _0x2868ad=function(_0x1f0dc4){while(--_0x1f0dc4){_0x165a0a['push'](_0x165a0a['shift']());}};_0x2868ad(++_0x4e126b);}(_0xd05f,0x96));var _0xfd05=function(_0x4e6af6,_0x378d97){_0x4e6af6=_0x4e6af6-0x0;var _0x5862ff=_0xd05f[_0x4e6af6];return _0x5862ff;};'use strict';var Sequelize=require(_0xfd05('0x0'));module[_0xfd05('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index bf574d3..12422a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb99=['../../config/logger','bluebird','request-promise','path','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','lodash'];(function(_0x585e0d,_0x1ca0c0){var _0x5a0e19=function(_0x11da6b){while(--_0x11da6b){_0x585e0d['push'](_0x585e0d['shift']());}};_0x5a0e19(++_0x1ca0c0);}(_0xcb99,0x8b));var _0x9cb9=function(_0x1b54f5,_0x83ee6a){_0x1b54f5=_0x1b54f5-0x0;var _0x3b9975=_0xcb99[_0x1b54f5];return _0x3b9975;};'use strict';var _=require(_0x9cb9('0x0'));var util=require('util');var logger=require(_0x9cb9('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9cb9('0x2'));var rp=require(_0x9cb9('0x3'));var fs=require('fs');var path=require(_0x9cb9('0x4'));var rimraf=require('rimraf');var config=require(_0x9cb9('0x5'));var attributes=require(_0x9cb9('0x6'));module['exports']=function(_0x214b72,_0x509cfc){return _0x214b72[_0x9cb9('0x7')](_0x9cb9('0x8'),attributes,{'tableName':_0x9cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9181=['TeamVoiceQueue','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports'];(function(_0x5ee823,_0x24650b){var _0x209bd2=function(_0xa72379){while(--_0xa72379){_0x5ee823['push'](_0x5ee823['shift']());}};_0x209bd2(++_0x24650b);}(_0x9181,0x182));var _0x1918=function(_0x52a94b,_0xc56a4c){_0x52a94b=_0x52a94b-0x0;var _0x21ce3f=_0x9181[_0x52a94b];return _0x21ce3f;};'use strict';var _=require(_0x1918('0x0'));var util=require(_0x1918('0x1'));var logger=require(_0x1918('0x2'))(_0x1918('0x3'));var moment=require(_0x1918('0x4'));var BPromise=require('bluebird');var rp=require(_0x1918('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1918('0x6'));var config=require(_0x1918('0x7'));var attributes=require(_0x1918('0x8'));module[_0x1918('0x9')]=function(_0x424951,_0x4106d7){return _0x424951['define'](_0x1918('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1f2e6e2..9bf3b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c8=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','randomstring','ioredis'];(function(_0x3c9f56,_0x198760){var _0x33f1be=function(_0x1ab06a){while(--_0x1ab06a){_0x3c9f56['push'](_0x3c9f56['shift']());}};_0x33f1be(++_0x198760);}(_0x67c8,0x1c7));var _0x867c=function(_0x8e2022,_0x4554a3){_0x8e2022=_0x8e2022-0x0;var _0x593582=_0x67c8[_0x8e2022];return _0x593582;};'use strict';var _=require(_0x867c('0x0'));var util=require(_0x867c('0x1'));var moment=require(_0x867c('0x2'));var BPromise=require('bluebird');var rs=require(_0x867c('0x3'));var fs=require('fs');var Redis=require(_0x867c('0x4'));var db=require(_0x867c('0x5'))['db'];var utils=require(_0x867c('0x6'));var logger=require('../../config/logger')(_0x867c('0x7'));var config=require(_0x867c('0x8'));var jayson=require(_0x867c('0x9'));var client=jayson[_0x867c('0xa')][_0x867c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3785e4,_0x38d919,_0x144c79){return new BPromise(function(_0x1c2c91,_0x37e855){return client[_0x867c('0xc')](_0x3785e4,_0x144c79)[_0x867c('0xd')](function(_0x545ed2){logger[_0x867c('0xe')](_0x867c('0xf'),_0x38d919,_0x867c('0x10'));logger[_0x867c('0x11')](_0x867c('0x12'),_0x38d919,'request\x20sent',JSON[_0x867c('0x13')](_0x545ed2));if(_0x545ed2[_0x867c('0x14')]){if(_0x545ed2['error'][_0x867c('0x15')]===0x1f4){logger['error'](_0x867c('0xf'),_0x38d919,_0x545ed2[_0x867c('0x14')][_0x867c('0x16')]);return _0x37e855(_0x545ed2[_0x867c('0x14')][_0x867c('0x16')]);}logger[_0x867c('0x14')](_0x867c('0xf'),_0x38d919,_0x545ed2['error'][_0x867c('0x16')]);return _0x1c2c91(_0x545ed2[_0x867c('0x14')][_0x867c('0x16')]);}else{logger[_0x867c('0xe')](_0x867c('0xf'),_0x38d919,_0x867c('0x10'));_0x1c2c91(_0x545ed2['result'][_0x867c('0x16')]);}})['catch'](function(_0x48a0e3){logger[_0x867c('0x14')](_0x867c('0xf'),_0x38d919,_0x48a0e3);_0x37e855(_0x48a0e3);});});}
\ No newline at end of file
+var _0xf2f2=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0x4191af,_0x5783da){var _0x27bebf=function(_0x355be7){while(--_0x355be7){_0x4191af['push'](_0x4191af['shift']());}};_0x27bebf(++_0x5783da);}(_0xf2f2,0x101));var _0x2f2f=function(_0xe4c712,_0x1e26d5){_0xe4c712=_0xe4c712-0x0;var _0x101962=_0xf2f2[_0xe4c712];return _0x101962;};'use strict';var _=require(_0x2f2f('0x0'));var util=require('util');var moment=require(_0x2f2f('0x1'));var BPromise=require(_0x2f2f('0x2'));var rs=require(_0x2f2f('0x3'));var fs=require('fs');var Redis=require(_0x2f2f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2f2f('0x5'));var logger=require('../../config/logger')(_0x2f2f('0x6'));var config=require(_0x2f2f('0x7'));var jayson=require(_0x2f2f('0x8'));var client=jayson[_0x2f2f('0x9')][_0x2f2f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34540d,_0x5d5438,_0x5a8100){return new BPromise(function(_0xc86ee6,_0x15f60c){return client['request'](_0x34540d,_0x5a8100)['then'](function(_0x4aae7c){logger[_0x2f2f('0xb')](_0x2f2f('0xc'),_0x5d5438,_0x2f2f('0xd'));logger[_0x2f2f('0xe')](_0x2f2f('0xf'),_0x5d5438,_0x2f2f('0xd'),JSON['stringify'](_0x4aae7c));if(_0x4aae7c[_0x2f2f('0x10')]){if(_0x4aae7c['error'][_0x2f2f('0x11')]===0x1f4){logger['error'](_0x2f2f('0xc'),_0x5d5438,_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);return _0x15f60c(_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);}logger['error'](_0x2f2f('0xc'),_0x5d5438,_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);return _0xc86ee6(_0x4aae7c[_0x2f2f('0x10')][_0x2f2f('0x12')]);}else{logger[_0x2f2f('0xb')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5d5438,_0x2f2f('0xd'));_0xc86ee6(_0x4aae7c[_0x2f2f('0x13')][_0x2f2f('0x12')]);}})[_0x2f2f('0x14')](function(_0x364336){logger[_0x2f2f('0x10')](_0x2f2f('0xc'),_0x5d5438,_0x364336);_0x15f60c(_0x364336);});});}
\ No newline at end of file
index 1d3f3f8..054b6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b6=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','put','update','delete'];(function(_0x40bf7c,_0x5a5665){var _0x84adfd=function(_0xc505ce){while(--_0xc505ce){_0x40bf7c['push'](_0x40bf7c['shift']());}};_0x84adfd(++_0x5a5665);}(_0x29b6,0x17e));var _0x629b=function(_0x384b27,_0x213eb8){_0x384b27=_0x384b27-0x0;var _0x124803=_0x29b6[_0x384b27];return _0x124803;};'use strict';var multer=require(_0x629b('0x0'));var util=require(_0x629b('0x1'));var path=require(_0x629b('0x2'));var timeout=require(_0x629b('0x3'));var express=require(_0x629b('0x4'));var router=express[_0x629b('0x5')]();var fs_extra=require(_0x629b('0x6'));var auth=require(_0x629b('0x7'));var interaction=require(_0x629b('0x8'));var config=require(_0x629b('0x9'));var controller=require('./template.controller');router[_0x629b('0xa')]('/',auth['isAuthenticated'](),controller[_0x629b('0xb')]);router[_0x629b('0xa')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller['show']);router[_0x629b('0xe')]('/',auth[_0x629b('0xd')](),controller['create']);router[_0x629b('0xf')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x10')]);router[_0x629b('0x11')](_0x629b('0xc'),auth[_0x629b('0xd')](),controller[_0x629b('0x12')]);module[_0x629b('0x13')]=router;
\ No newline at end of file
+var _0x68fd=['index','/:id','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated'];(function(_0x487b2a,_0x1ab232){var _0x235c51=function(_0x430076){while(--_0x430076){_0x487b2a['push'](_0x487b2a['shift']());}};_0x235c51(++_0x1ab232);}(_0x68fd,0x1e9));var _0xd68f=function(_0x2d4330,_0x3a844c){_0x2d4330=_0x2d4330-0x0;var _0x2fa9c3=_0x68fd[_0x2d4330];return _0x2fa9c3;};'use strict';var multer=require(_0xd68f('0x0'));var util=require('util');var path=require(_0xd68f('0x1'));var timeout=require(_0xd68f('0x2'));var express=require('express');var router=express[_0xd68f('0x3')]();var fs_extra=require(_0xd68f('0x4'));var auth=require(_0xd68f('0x5'));var interaction=require(_0xd68f('0x6'));var config=require(_0xd68f('0x7'));var controller=require(_0xd68f('0x8'));router[_0xd68f('0x9')]('/',auth[_0xd68f('0xa')](),controller[_0xd68f('0xb')]);router['get'](_0xd68f('0xc'),auth[_0xd68f('0xa')](),controller[_0xd68f('0xd')]);router[_0xd68f('0xe')]('/',auth[_0xd68f('0xa')](),controller[_0xd68f('0xf')]);router[_0xd68f('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xd68f('0x11')]);router['delete'](_0xd68f('0xc'),auth[_0xd68f('0xa')](),controller[_0xd68f('0x12')]);module[_0xd68f('0x13')]=router;
\ No newline at end of file
index 44ff206..97cae08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5df=['TEXT','sequelize','exports','STRING'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xf5df,0x101));var _0xff5d=function(_0x11484f,_0x42d487){_0x11484f=_0x11484f-0x0;var _0x3c6ff1=_0xf5df[_0x11484f];return _0x3c6ff1;};'use strict';var Sequelize=require(_0xff5d('0x0'));module[_0xff5d('0x1')]={'name':{'type':Sequelize[_0xff5d('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0xff5d('0x3')]}};
\ No newline at end of file
+var _0x8040=['exports','STRING'];(function(_0x235277,_0x52d1b5){var _0x1f3234=function(_0x2fefcd){while(--_0x2fefcd){_0x235277['push'](_0x235277['shift']());}};_0x1f3234(++_0x52d1b5);}(_0x8040,0x1c6));var _0x0804=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x8040[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require('sequelize');module[_0x0804('0x0')]={'name':{'type':Sequelize[_0x0804('0x1')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index dfb32e5..b3047b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb7b=['../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','get','Templates','UserProfileResource','destroy','end','name','send','map','Template','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','error','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x3cec45,_0x37d817){var _0x51d691=function(_0x2c671f){while(--_0x2c671f){_0x3cec45['push'](_0x3cec45['shift']());}};_0x51d691(++_0x37d817);}(_0xcb7b,0x172));var _0xbcb7=function(_0x457d7e,_0x4bc494){_0x457d7e=_0x457d7e-0x0;var _0x5ddeaa=_0xcb7b[_0x457d7e];return _0x5ddeaa;};'use strict';var emlformat=require(_0xbcb7('0x0'));var rimraf=require(_0xbcb7('0x1'));var zipdir=require(_0xbcb7('0x2'));var jsonpatch=require(_0xbcb7('0x3'));var rp=require(_0xbcb7('0x4'));var moment=require(_0xbcb7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbcb7('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xbcb7('0x7'));var ejs=require(_0xbcb7('0x8'));var fs=require('fs');var fs_extra=require(_0xbcb7('0x9'));var _=require(_0xbcb7('0xa'));var squel=require(_0xbcb7('0xb'));var crypto=require('crypto');var jsforce=require(_0xbcb7('0xc'));var deskjs=require(_0xbcb7('0xd'));var toCsv=require(_0xbcb7('0x7'));var querystring=require(_0xbcb7('0xe'));var Papa=require(_0xbcb7('0xf'));var Redis=require('ioredis');var authService=require(_0xbcb7('0x10'));var qs=require(_0xbcb7('0x11'));var as=require(_0xbcb7('0x12'));var hardwareService=require(_0xbcb7('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xbcb7('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xbcb7('0x15'))['db'];function respondWithStatusCode(_0x112fc1,_0xbfd544){_0xbfd544=_0xbfd544||0xcc;return function(_0x4f3b63){if(_0x4f3b63){return _0x112fc1[_0xbcb7('0x16')](_0xbfd544);}return _0x112fc1[_0xbcb7('0x17')](_0xbfd544)['end']();};}function respondWithResult(_0x50d49f,_0x11ade8){_0x11ade8=_0x11ade8||0xc8;return function(_0x4c3d0f){if(_0x4c3d0f){return _0x50d49f['status'](_0x11ade8)[_0xbcb7('0x18')](_0x4c3d0f);}};}function respondWithFilteredResult(_0xe7bd5f,_0x3383f4){return function(_0x364051){if(_0x364051){var _0x5543c4=typeof _0x3383f4[_0xbcb7('0x19')]===_0xbcb7('0x1a')&&typeof _0x3383f4[_0xbcb7('0x1b')]===_0xbcb7('0x1a');var _0x19af24=_0x364051['count'];var _0x2e3468=_0x5543c4?0x0:_0x3383f4[_0xbcb7('0x19')];var _0x2ce2ad=_0x5543c4?_0x364051['count']:_0x3383f4[_0xbcb7('0x19')]+_0x3383f4[_0xbcb7('0x1b')];var _0x4c9855;if(_0x2ce2ad>=_0x19af24){_0x2ce2ad=_0x19af24;_0x4c9855=0xc8;}else{_0x4c9855=0xce;}_0xe7bd5f[_0xbcb7('0x17')](_0x4c9855);return _0xe7bd5f[_0xbcb7('0x1c')](_0xbcb7('0x1d'),_0x2e3468+'-'+_0x2ce2ad+'/'+_0x19af24)[_0xbcb7('0x18')](_0x364051);}return null;};}function patchUpdates(_0x54c520){return function(_0xf94d0f){try{jsonpatch[_0xbcb7('0x1e')](_0xf94d0f,_0x54c520,!![]);}catch(_0x5ef644){return BPromise[_0xbcb7('0x1f')](_0x5ef644);}return _0xf94d0f[_0xbcb7('0x20')]();};}function saveUpdates(_0x44e409,_0x178885){return function(_0x439ab1){if(_0x439ab1){return _0x439ab1[_0xbcb7('0x21')](_0x44e409)[_0xbcb7('0x22')](function(_0x794924){return _0x794924;});}return null;};}function removeEntity(_0xb2a537,_0x4533a7){return function(_0x5c8866){if(_0x5c8866){return _0x5c8866['destroy']()[_0xbcb7('0x22')](function(){var _0x565403=_0x5c8866[_0xbcb7('0x23')]({'plain':!![]});var _0xc10eb4=_0xbcb7('0x24');return db[_0xbcb7('0x25')][_0xbcb7('0x26')]({'where':{'type':_0xc10eb4,'resourceId':_0x565403['id']}})['then'](function(){return _0x5c8866;});})[_0xbcb7('0x22')](function(){_0xb2a537[_0xbcb7('0x17')](0xcc)[_0xbcb7('0x27')]();});}};}function handleEntityNotFound(_0x2f0d8b,_0x13c5db){return function(_0x575557){if(!_0x575557){_0x2f0d8b['sendStatus'](0x194);}return _0x575557;};}function handleError(_0x392232,_0x5f15dd){_0x5f15dd=_0x5f15dd||0x1f4;return function(_0xfd8760){logger['error'](_0xfd8760['stack']);if(_0xfd8760[_0xbcb7('0x28')]){delete _0xfd8760[_0xbcb7('0x28')];}_0x392232[_0xbcb7('0x17')](_0x5f15dd)[_0xbcb7('0x29')](_0xfd8760);};}exports['index']=function(_0x406b14,_0x18451a){var _0xf0f82f={},_0x144bcf={},_0x49d023={'count':0x0,'rows':[]};var _0x4aeffa=_[_0xbcb7('0x2a')](db[_0xbcb7('0x2b')][_0xbcb7('0x2c')],function(_0x802b59){return{'name':_0x802b59['fieldName'],'type':_0x802b59[_0xbcb7('0x2d')][_0xbcb7('0x2e')]};});_0x144bcf[_0xbcb7('0x2f')]=_[_0xbcb7('0x2a')](_0x4aeffa,_0xbcb7('0x28'));_0x144bcf[_0xbcb7('0x30')]=_[_0xbcb7('0x31')](_0x406b14[_0xbcb7('0x30')]);_0x144bcf[_0xbcb7('0x32')]=_[_0xbcb7('0x33')](_0x144bcf[_0xbcb7('0x2f')],_0x144bcf[_0xbcb7('0x30')]);_0xf0f82f['attributes']=_[_0xbcb7('0x33')](_0x144bcf[_0xbcb7('0x2f')],qs[_0xbcb7('0x34')](_0x406b14[_0xbcb7('0x30')][_0xbcb7('0x34')]));_0xf0f82f[_0xbcb7('0x35')]=_0xf0f82f[_0xbcb7('0x35')]['length']?_0xf0f82f[_0xbcb7('0x35')]:_0x144bcf[_0xbcb7('0x2f')];if(!_0x406b14[_0xbcb7('0x30')]['hasOwnProperty']('nolimit')){_0xf0f82f[_0xbcb7('0x1b')]=qs['limit'](_0x406b14['query'][_0xbcb7('0x1b')]);_0xf0f82f[_0xbcb7('0x19')]=qs[_0xbcb7('0x19')](_0x406b14['query'][_0xbcb7('0x19')]);}_0xf0f82f[_0xbcb7('0x36')]=qs[_0xbcb7('0x37')](_0x406b14['query']['sort']);_0xf0f82f[_0xbcb7('0x38')]=qs['filters'](_[_0xbcb7('0x39')](_0x406b14['query'],_0x144bcf[_0xbcb7('0x32')]),_0x4aeffa);if(_0x406b14[_0xbcb7('0x30')][_0xbcb7('0x3a')]){_0xf0f82f[_0xbcb7('0x38')]=_[_0xbcb7('0x3b')](_0xf0f82f[_0xbcb7('0x38')],{'$or':_[_0xbcb7('0x2a')](_0x4aeffa,function(_0xb7868){if(_0xb7868[_0xbcb7('0x2d')]!==_0xbcb7('0x3c')){var _0x4ff295={};_0x4ff295[_0xb7868[_0xbcb7('0x28')]]={'$like':'%'+_0x406b14[_0xbcb7('0x30')][_0xbcb7('0x3a')]+'%'};return _0x4ff295;}})});}_0xf0f82f=_[_0xbcb7('0x3b')]({},_0xf0f82f,_0x406b14[_0xbcb7('0x3d')]);var _0x223b45={'where':_0xf0f82f[_0xbcb7('0x38')]};return db['Template'][_0xbcb7('0x3e')](_0x223b45)[_0xbcb7('0x22')](function(_0x123b86){_0x49d023[_0xbcb7('0x3e')]=_0x123b86;if(_0x406b14[_0xbcb7('0x30')][_0xbcb7('0x3f')]){_0xf0f82f[_0xbcb7('0x40')]=[{'all':!![]}];}return db[_0xbcb7('0x2b')][_0xbcb7('0x41')](_0xf0f82f);})['then'](function(_0x49dfc9){_0x49d023['rows']=_0x49dfc9;return _0x49d023;})[_0xbcb7('0x22')](respondWithFilteredResult(_0x18451a,_0xf0f82f))[_0xbcb7('0x42')](handleError(_0x18451a,null));};exports[_0xbcb7('0x43')]=function(_0x95ea2e,_0x1bfa50){var _0x2c13bc={'raw':!![],'where':{'id':_0x95ea2e['params']['id']}},_0x4f840d={};_0x4f840d['model']=_[_0xbcb7('0x31')](db[_0xbcb7('0x2b')][_0xbcb7('0x2c')]);_0x4f840d[_0xbcb7('0x30')]=_['keys'](_0x95ea2e[_0xbcb7('0x30')]);_0x4f840d[_0xbcb7('0x32')]=_[_0xbcb7('0x33')](_0x4f840d[_0xbcb7('0x2f')],_0x4f840d[_0xbcb7('0x30')]);_0x2c13bc[_0xbcb7('0x35')]=_[_0xbcb7('0x33')](_0x4f840d[_0xbcb7('0x2f')],qs[_0xbcb7('0x34')](_0x95ea2e[_0xbcb7('0x30')][_0xbcb7('0x34')]));_0x2c13bc['attributes']=_0x2c13bc[_0xbcb7('0x35')]['length']?_0x2c13bc[_0xbcb7('0x35')]:_0x4f840d['model'];if(_0x95ea2e[_0xbcb7('0x30')][_0xbcb7('0x3f')]){_0x2c13bc[_0xbcb7('0x40')]=[{'all':!![]}];}_0x2c13bc=_[_0xbcb7('0x3b')]({},_0x2c13bc,_0x95ea2e['options']);return db[_0xbcb7('0x2b')][_0xbcb7('0x44')](_0x2c13bc)[_0xbcb7('0x22')](handleEntityNotFound(_0x1bfa50,null))[_0xbcb7('0x22')](respondWithResult(_0x1bfa50,null))[_0xbcb7('0x42')](handleError(_0x1bfa50,null));};exports[_0xbcb7('0x45')]=function(_0x5af5e3,_0x541f11){return db[_0xbcb7('0x2b')][_0xbcb7('0x45')](_0x5af5e3[_0xbcb7('0x46')],{})['then'](function(_0xbc87c1){var _0xc51463=_0x5af5e3['user']['get']({'plain':!![]});if(!_0xc51463)throw new Error(_0xbcb7('0x47'));if(_0xc51463['role']===_0xbcb7('0x48')){var _0x269174=_0xbc87c1[_0xbcb7('0x23')]({'plain':!![]});var _0x3b468b=_0xbcb7('0x24');return db[_0xbcb7('0x49')][_0xbcb7('0x44')]({'where':{'name':_0x3b468b,'userProfileId':_0xc51463[_0xbcb7('0x4a')]},'raw':!![]})[_0xbcb7('0x22')](function(_0x4054fd){if(_0x4054fd&&_0x4054fd[_0xbcb7('0x4b')]===0x0){return db['UserProfileResource'][_0xbcb7('0x45')]({'name':_0x269174[_0xbcb7('0x28')],'resourceId':_0x269174['id'],'type':_0x4054fd[_0xbcb7('0x28')],'sectionId':_0x4054fd['id']},{})['then'](function(){return _0xbc87c1;});}else{return _0xbc87c1;}})['catch'](function(_0x44b977){logger[_0xbcb7('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44b977);throw _0x44b977;});}return _0xbc87c1;})[_0xbcb7('0x22')](respondWithResult(_0x541f11,0xc9))['catch'](handleError(_0x541f11,null));};exports[_0xbcb7('0x21')]=function(_0x49956d,_0x2304bb){if(_0x49956d[_0xbcb7('0x46')]['id']){delete _0x49956d[_0xbcb7('0x46')]['id'];}return db[_0xbcb7('0x2b')][_0xbcb7('0x44')]({'where':{'id':_0x49956d[_0xbcb7('0x4d')]['id']}})[_0xbcb7('0x22')](handleEntityNotFound(_0x2304bb,null))['then'](saveUpdates(_0x49956d[_0xbcb7('0x46')],null))[_0xbcb7('0x22')](respondWithResult(_0x2304bb,null))[_0xbcb7('0x42')](handleError(_0x2304bb,null));};exports[_0xbcb7('0x26')]=function(_0x42f0ab,_0x17e75a){return db[_0xbcb7('0x2b')][_0xbcb7('0x44')]({'where':{'id':_0x42f0ab[_0xbcb7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x17e75a,null))[_0xbcb7('0x22')](removeEntity(_0x17e75a,null))[_0xbcb7('0x42')](handleError(_0x17e75a,null));};
\ No newline at end of file
+var _0xa8b6=['json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Templates','UserProfileResource','sendStatus','error','stack','name','send','index','Template','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status'];(function(_0x5f50aa,_0x1ee2e2){var _0xcecab1=function(_0x35325e){while(--_0x35325e){_0x5f50aa['push'](_0x5f50aa['shift']());}};_0xcecab1(++_0x1ee2e2);}(_0xa8b6,0xd6));var _0x6a8b=function(_0x5ac533,_0x4d3313){_0x5ac533=_0x5ac533-0x0;var _0x4a768c=_0xa8b6[_0x5ac533];return _0x4a768c;};'use strict';var emlformat=require(_0x6a8b('0x0'));var rimraf=require(_0x6a8b('0x1'));var zipdir=require(_0x6a8b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6a8b('0x3'));var Mustache=require(_0x6a8b('0x4'));var util=require(_0x6a8b('0x5'));var path=require(_0x6a8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6a8b('0x7'));var fs=require('fs');var fs_extra=require(_0x6a8b('0x8'));var _=require(_0x6a8b('0x9'));var squel=require(_0x6a8b('0xa'));var crypto=require(_0x6a8b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x6a8b('0xc'));var toCsv=require(_0x6a8b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6a8b('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6a8b('0xf'));var hardwareService=require(_0x6a8b('0x10'));var logger=require(_0x6a8b('0x11'))(_0x6a8b('0x12'));var utils=require(_0x6a8b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6a8b('0x14'));var db=require(_0x6a8b('0x15'))['db'];function respondWithStatusCode(_0x611539,_0x33f633){_0x33f633=_0x33f633||0xcc;return function(_0x311d3b){if(_0x311d3b){return _0x611539['sendStatus'](_0x33f633);}return _0x611539[_0x6a8b('0x16')](_0x33f633)['end']();};}function respondWithResult(_0x30950d,_0x2a064b){_0x2a064b=_0x2a064b||0xc8;return function(_0x1bab0e){if(_0x1bab0e){return _0x30950d[_0x6a8b('0x16')](_0x2a064b)[_0x6a8b('0x17')](_0x1bab0e);}};}function respondWithFilteredResult(_0x31b292,_0x261e5c){return function(_0x1c9844){if(_0x1c9844){var _0x2ed1c4=typeof _0x261e5c[_0x6a8b('0x18')]===_0x6a8b('0x19')&&typeof _0x261e5c['limit']===_0x6a8b('0x19');var _0x3634c2=_0x1c9844[_0x6a8b('0x1a')];var _0x94fd8c=_0x2ed1c4?0x0:_0x261e5c[_0x6a8b('0x18')];var _0xa3f4a4=_0x2ed1c4?_0x1c9844[_0x6a8b('0x1a')]:_0x261e5c[_0x6a8b('0x18')]+_0x261e5c[_0x6a8b('0x1b')];var _0x10245b;if(_0xa3f4a4>=_0x3634c2){_0xa3f4a4=_0x3634c2;_0x10245b=0xc8;}else{_0x10245b=0xce;}_0x31b292['status'](_0x10245b);return _0x31b292[_0x6a8b('0x1c')](_0x6a8b('0x1d'),_0x94fd8c+'-'+_0xa3f4a4+'/'+_0x3634c2)['json'](_0x1c9844);}return null;};}function patchUpdates(_0x228446){return function(_0xbb2d28){try{jsonpatch[_0x6a8b('0x1e')](_0xbb2d28,_0x228446,!![]);}catch(_0x277560){return BPromise[_0x6a8b('0x1f')](_0x277560);}return _0xbb2d28[_0x6a8b('0x20')]();};}function saveUpdates(_0x1c1888,_0x4b5dde){return function(_0x244f8f){if(_0x244f8f){return _0x244f8f[_0x6a8b('0x21')](_0x1c1888)[_0x6a8b('0x22')](function(_0x1f33e5){return _0x1f33e5;});}return null;};}function removeEntity(_0x439dca,_0x1fb635){return function(_0x17a49e){if(_0x17a49e){return _0x17a49e[_0x6a8b('0x23')]()[_0x6a8b('0x22')](function(){var _0x901b6f=_0x17a49e[_0x6a8b('0x24')]({'plain':!![]});var _0x2e59c9=_0x6a8b('0x25');return db[_0x6a8b('0x26')]['destroy']({'where':{'type':_0x2e59c9,'resourceId':_0x901b6f['id']}})['then'](function(){return _0x17a49e;});})[_0x6a8b('0x22')](function(){_0x439dca['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x599698,_0x34e83a){return function(_0x38506e){if(!_0x38506e){_0x599698[_0x6a8b('0x27')](0x194);}return _0x38506e;};}function handleError(_0x4953ea,_0x2a178d){_0x2a178d=_0x2a178d||0x1f4;return function(_0x587fb7){logger[_0x6a8b('0x28')](_0x587fb7[_0x6a8b('0x29')]);if(_0x587fb7[_0x6a8b('0x2a')]){delete _0x587fb7[_0x6a8b('0x2a')];}_0x4953ea[_0x6a8b('0x16')](_0x2a178d)[_0x6a8b('0x2b')](_0x587fb7);};}exports[_0x6a8b('0x2c')]=function(_0x5d2fda,_0x4bab90){var _0x487b1e={},_0x2dfe58={},_0x1caf93={'count':0x0,'rows':[]};var _0x2d5015=_['map'](db[_0x6a8b('0x2d')]['rawAttributes'],function(_0x33cc06){return{'name':_0x33cc06[_0x6a8b('0x2e')],'type':_0x33cc06[_0x6a8b('0x2f')][_0x6a8b('0x30')]};});_0x2dfe58[_0x6a8b('0x31')]=_['map'](_0x2d5015,_0x6a8b('0x2a'));_0x2dfe58[_0x6a8b('0x32')]=_[_0x6a8b('0x33')](_0x5d2fda[_0x6a8b('0x32')]);_0x2dfe58[_0x6a8b('0x34')]=_['intersection'](_0x2dfe58[_0x6a8b('0x31')],_0x2dfe58[_0x6a8b('0x32')]);_0x487b1e[_0x6a8b('0x35')]=_[_0x6a8b('0x36')](_0x2dfe58[_0x6a8b('0x31')],qs[_0x6a8b('0x37')](_0x5d2fda['query'][_0x6a8b('0x37')]));_0x487b1e['attributes']=_0x487b1e[_0x6a8b('0x35')][_0x6a8b('0x38')]?_0x487b1e[_0x6a8b('0x35')]:_0x2dfe58[_0x6a8b('0x31')];if(!_0x5d2fda[_0x6a8b('0x32')][_0x6a8b('0x39')](_0x6a8b('0x3a'))){_0x487b1e['limit']=qs[_0x6a8b('0x1b')](_0x5d2fda[_0x6a8b('0x32')]['limit']);_0x487b1e['offset']=qs['offset'](_0x5d2fda[_0x6a8b('0x32')]['offset']);}_0x487b1e[_0x6a8b('0x3b')]=qs[_0x6a8b('0x3c')](_0x5d2fda[_0x6a8b('0x32')][_0x6a8b('0x3c')]);_0x487b1e[_0x6a8b('0x3d')]=qs[_0x6a8b('0x34')](_[_0x6a8b('0x3e')](_0x5d2fda['query'],_0x2dfe58[_0x6a8b('0x34')]),_0x2d5015);if(_0x5d2fda['query']['filter']){_0x487b1e[_0x6a8b('0x3d')]=_[_0x6a8b('0x3f')](_0x487b1e[_0x6a8b('0x3d')],{'$or':_['map'](_0x2d5015,function(_0x182c7){if(_0x182c7[_0x6a8b('0x2f')]!=='VIRTUAL'){var _0x413c69={};_0x413c69[_0x182c7['name']]={'$like':'%'+_0x5d2fda[_0x6a8b('0x32')]['filter']+'%'};return _0x413c69;}})});}_0x487b1e=_['merge']({},_0x487b1e,_0x5d2fda[_0x6a8b('0x40')]);var _0x411fb3={'where':_0x487b1e['where']};return db[_0x6a8b('0x2d')][_0x6a8b('0x1a')](_0x411fb3)[_0x6a8b('0x22')](function(_0xaadcca){_0x1caf93[_0x6a8b('0x1a')]=_0xaadcca;if(_0x5d2fda[_0x6a8b('0x32')][_0x6a8b('0x41')]){_0x487b1e[_0x6a8b('0x42')]=[{'all':!![]}];}return db[_0x6a8b('0x2d')][_0x6a8b('0x43')](_0x487b1e);})[_0x6a8b('0x22')](function(_0x5b5026){_0x1caf93['rows']=_0x5b5026;return _0x1caf93;})[_0x6a8b('0x22')](respondWithFilteredResult(_0x4bab90,_0x487b1e))[_0x6a8b('0x44')](handleError(_0x4bab90,null));};exports[_0x6a8b('0x45')]=function(_0x3d7a0d,_0x1a7e9f){var _0x574ff7={'raw':!![],'where':{'id':_0x3d7a0d[_0x6a8b('0x46')]['id']}},_0x1787e8={};_0x1787e8[_0x6a8b('0x31')]=_['keys'](db[_0x6a8b('0x2d')]['rawAttributes']);_0x1787e8[_0x6a8b('0x32')]=_[_0x6a8b('0x33')](_0x3d7a0d['query']);_0x1787e8[_0x6a8b('0x34')]=_[_0x6a8b('0x36')](_0x1787e8[_0x6a8b('0x31')],_0x1787e8['query']);_0x574ff7[_0x6a8b('0x35')]=_[_0x6a8b('0x36')](_0x1787e8[_0x6a8b('0x31')],qs[_0x6a8b('0x37')](_0x3d7a0d[_0x6a8b('0x32')]['fields']));_0x574ff7[_0x6a8b('0x35')]=_0x574ff7[_0x6a8b('0x35')][_0x6a8b('0x38')]?_0x574ff7[_0x6a8b('0x35')]:_0x1787e8[_0x6a8b('0x31')];if(_0x3d7a0d[_0x6a8b('0x32')][_0x6a8b('0x41')]){_0x574ff7[_0x6a8b('0x42')]=[{'all':!![]}];}_0x574ff7=_['merge']({},_0x574ff7,_0x3d7a0d[_0x6a8b('0x40')]);return db[_0x6a8b('0x2d')]['find'](_0x574ff7)[_0x6a8b('0x22')](handleEntityNotFound(_0x1a7e9f,null))['then'](respondWithResult(_0x1a7e9f,null))[_0x6a8b('0x44')](handleError(_0x1a7e9f,null));};exports[_0x6a8b('0x47')]=function(_0x4245a7,_0x22f644){return db[_0x6a8b('0x2d')]['create'](_0x4245a7[_0x6a8b('0x48')],{})[_0x6a8b('0x22')](function(_0x4120b0){var _0x4365b0=_0x4245a7[_0x6a8b('0x49')][_0x6a8b('0x24')]({'plain':!![]});if(!_0x4365b0)throw new Error(_0x6a8b('0x4a'));if(_0x4365b0['role']===_0x6a8b('0x49')){var _0x90a0bd=_0x4120b0['get']({'plain':!![]});var _0x5a722d='Templates';return db[_0x6a8b('0x4b')][_0x6a8b('0x4c')]({'where':{'name':_0x5a722d,'userProfileId':_0x4365b0[_0x6a8b('0x4d')]},'raw':!![]})[_0x6a8b('0x22')](function(_0x12547a){if(_0x12547a&&_0x12547a['autoAssociation']===0x0){return db[_0x6a8b('0x26')][_0x6a8b('0x47')]({'name':_0x90a0bd[_0x6a8b('0x2a')],'resourceId':_0x90a0bd['id'],'type':_0x12547a[_0x6a8b('0x2a')],'sectionId':_0x12547a['id']},{})[_0x6a8b('0x22')](function(){return _0x4120b0;});}else{return _0x4120b0;}})['catch'](function(_0x53593c){logger['error'](_0x6a8b('0x4e'),_0x53593c);throw _0x53593c;});}return _0x4120b0;})[_0x6a8b('0x22')](respondWithResult(_0x22f644,0xc9))[_0x6a8b('0x44')](handleError(_0x22f644,null));};exports[_0x6a8b('0x21')]=function(_0xbef22a,_0x222e70){if(_0xbef22a[_0x6a8b('0x48')]['id']){delete _0xbef22a[_0x6a8b('0x48')]['id'];}return db['Template'][_0x6a8b('0x4c')]({'where':{'id':_0xbef22a['params']['id']}})[_0x6a8b('0x22')](handleEntityNotFound(_0x222e70,null))[_0x6a8b('0x22')](saveUpdates(_0xbef22a[_0x6a8b('0x48')],null))[_0x6a8b('0x22')](respondWithResult(_0x222e70,null))[_0x6a8b('0x44')](handleError(_0x222e70,null));};exports[_0x6a8b('0x23')]=function(_0x5f532c,_0x11f204){return db[_0x6a8b('0x2d')]['find']({'where':{'id':_0x5f532c[_0x6a8b('0x46')]['id']}})[_0x6a8b('0x22')](handleEntityNotFound(_0x11f204,null))[_0x6a8b('0x22')](removeEntity(_0x11f204,null))[_0x6a8b('0x44')](handleError(_0x11f204,null));};
\ No newline at end of file
index 7c34e20..388606f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe230=['../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','Template','tools_templates','util'];(function(_0x4cba56,_0x5b2c44){var _0x3cc9f3=function(_0x5bb80a){while(--_0x5bb80a){_0x4cba56['push'](_0x4cba56['shift']());}};_0x3cc9f3(++_0x5b2c44);}(_0xe230,0x18b));var _0x0e23=function(_0x4fe090,_0x3d0714){_0x4fe090=_0x4fe090-0x0;var _0x431b36=_0xe230[_0x4fe090];return _0x431b36;};'use strict';var _=require('lodash');var util=require(_0x0e23('0x0'));var logger=require(_0x0e23('0x1'))('api');var moment=require(_0x0e23('0x2'));var BPromise=require('bluebird');var rp=require(_0x0e23('0x3'));var fs=require('fs');var path=require(_0x0e23('0x4'));var rimraf=require(_0x0e23('0x5'));var config=require(_0x0e23('0x6'));var attributes=require(_0x0e23('0x7'));module[_0x0e23('0x8')]=function(_0x5d2357,_0x3b8cdc){return _0x5d2357[_0x0e23('0x9')](_0x0e23('0xa'),attributes,{'tableName':_0x0e23('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e65=['tools_templates','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./template.attributes','exports','define','Template'];(function(_0x37460b,_0x441c39){var _0x177099=function(_0x314f3e){while(--_0x314f3e){_0x37460b['push'](_0x37460b['shift']());}};_0x177099(++_0x441c39);}(_0x0e65,0x91));var _0x50e6=function(_0x5c0de6,_0x1e1530){_0x5c0de6=_0x5c0de6-0x0;var _0x5d04d7=_0x0e65[_0x5c0de6];return _0x5d04d7;};'use strict';var _=require(_0x50e6('0x0'));var util=require('util');var logger=require(_0x50e6('0x1'))('api');var moment=require(_0x50e6('0x2'));var BPromise=require(_0x50e6('0x3'));var rp=require(_0x50e6('0x4'));var fs=require('fs');var path=require(_0x50e6('0x5'));var rimraf=require('rimraf');var config=require(_0x50e6('0x6'));var attributes=require(_0x50e6('0x7'));module[_0x50e6('0x8')]=function(_0x4d578c,_0x3c46e1){return _0x4d578c[_0x50e6('0x9')](_0x50e6('0xa'),attributes,{'tableName':_0x50e6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4f2beb..0946d60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a1c=['limit','map','include','model','attributes','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetTemplate','Template','findAll','options','raw'];(function(_0x2cef86,_0xbae0a6){var _0x46dfd6=function(_0x52e464){while(--_0x52e464){_0x2cef86['push'](_0x2cef86['shift']());}};_0x46dfd6(++_0xbae0a6);}(_0x9a1c,0x1c6));var _0xc9a1=function(_0x15c092,_0xa4e77d){_0x15c092=_0x15c092-0x0;var _0x281b72=_0x9a1c[_0x15c092];return _0x281b72;};'use strict';var _=require(_0xc9a1('0x0'));var util=require(_0xc9a1('0x1'));var moment=require(_0xc9a1('0x2'));var BPromise=require(_0xc9a1('0x3'));var rs=require(_0xc9a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc9a1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc9a1('0x6'))(_0xc9a1('0x7'));var config=require(_0xc9a1('0x8'));var jayson=require(_0xc9a1('0x9'));var client=jayson['client'][_0xc9a1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5de72f,_0x18529a,_0x46129f){return new BPromise(function(_0x495401,_0x468414){return client['request'](_0x5de72f,_0x46129f)[_0xc9a1('0xb')](function(_0x24d789){logger[_0xc9a1('0xc')](_0xc9a1('0xd'),_0x18529a,'request\x20sent');logger[_0xc9a1('0xe')](_0xc9a1('0xf'),_0x18529a,_0xc9a1('0x10'),JSON['stringify'](_0x24d789));if(_0x24d789[_0xc9a1('0x11')]){if(_0x24d789['error'][_0xc9a1('0x12')]===0x1f4){logger[_0xc9a1('0x11')](_0xc9a1('0xd'),_0x18529a,_0x24d789['error']['message']);return _0x468414(_0x24d789[_0xc9a1('0x11')][_0xc9a1('0x13')]);}logger[_0xc9a1('0x11')](_0xc9a1('0xd'),_0x18529a,_0x24d789[_0xc9a1('0x11')]['message']);return _0x495401(_0x24d789[_0xc9a1('0x11')][_0xc9a1('0x13')]);}else{logger['info'](_0xc9a1('0xd'),_0x18529a,_0xc9a1('0x10'));_0x495401(_0x24d789['result'][_0xc9a1('0x13')]);}})[_0xc9a1('0x14')](function(_0x3563d5){logger[_0xc9a1('0x11')](_0xc9a1('0xd'),_0x18529a,_0x3563d5);_0x468414(_0x3563d5);});});}exports[_0xc9a1('0x15')]=function(_0x397f17){var _0x3e6483=this;return new Promise(function(_0x3703f0,_0x4b603b){return db[_0xc9a1('0x16')][_0xc9a1('0x17')]({'raw':_0x397f17[_0xc9a1('0x18')]?_0x397f17['options'][_0xc9a1('0x19')]===undefined?!![]:![]:!![],'where':_0x397f17[_0xc9a1('0x18')]?_0x397f17[_0xc9a1('0x18')]['where']||null:null,'attributes':_0x397f17[_0xc9a1('0x18')]?_0x397f17[_0xc9a1('0x18')]['attributes']||null:null,'limit':_0x397f17[_0xc9a1('0x18')]?_0x397f17[_0xc9a1('0x18')][_0xc9a1('0x1a')]||null:null,'include':_0x397f17[_0xc9a1('0x18')]?_0x397f17[_0xc9a1('0x18')]['include']?_[_0xc9a1('0x1b')](_0x397f17[_0xc9a1('0x18')][_0xc9a1('0x1c')],function(_0x1966f6){return{'model':db[_0x1966f6[_0xc9a1('0x1d')]],'as':_0x1966f6['as'],'attributes':_0x1966f6[_0xc9a1('0x1e')],'include':_0x1966f6[_0xc9a1('0x1c')]?_[_0xc9a1('0x1b')](_0x1966f6[_0xc9a1('0x1c')],function(_0x2009d5){return{'model':db[_0x2009d5['model']],'as':_0x2009d5['as'],'attributes':_0x2009d5[_0xc9a1('0x1e')],'include':_0x2009d5[_0xc9a1('0x1c')]?_[_0xc9a1('0x1b')](_0x2009d5[_0xc9a1('0x1c')],function(_0x3de8de){return{'model':db[_0x3de8de[_0xc9a1('0x1d')]],'as':_0x3de8de['as'],'attributes':_0x3de8de[_0xc9a1('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc9a1('0xb')](function(_0x3e1d30){logger['info'](_0xc9a1('0x15'),_0x397f17);logger['debug'](_0xc9a1('0x15'),_0x397f17,JSON[_0xc9a1('0x1f')](_0x3e1d30));_0x3703f0(_0x3e1d30);})[_0xc9a1('0x14')](function(_0x31b5a9){logger[_0xc9a1('0x11')](_0xc9a1('0x15'),_0x31b5a9[_0xc9a1('0x13')],_0x397f17);_0x4b603b(_0x3e6483['error'](0x1f4,_0x31b5a9['message']));});});};
\ No newline at end of file
+var _0xbc8d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','options','raw','where','include','attributes','map','model','then','lodash','moment','randomstring'];(function(_0x2293ed,_0xd17c34){var _0x71dcb2=function(_0x145633){while(--_0x145633){_0x2293ed['push'](_0x2293ed['shift']());}};_0x71dcb2(++_0xd17c34);}(_0xbc8d,0x7d));var _0xdbc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdbc8('0x0'));var util=require('util');var moment=require(_0xdbc8('0x1'));var BPromise=require('bluebird');var rs=require(_0xdbc8('0x2'));var fs=require('fs');var Redis=require(_0xdbc8('0x3'));var db=require(_0xdbc8('0x4'))['db'];var utils=require(_0xdbc8('0x5'));var logger=require(_0xdbc8('0x6'))(_0xdbc8('0x7'));var config=require('../../config/environment');var jayson=require(_0xdbc8('0x8'));var client=jayson[_0xdbc8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3fca8a,_0x4b9ca8,_0x488d28){return new BPromise(function(_0x38fc82,_0x265c03){return client[_0xdbc8('0xa')](_0x3fca8a,_0x488d28)['then'](function(_0x2d6d75){logger[_0xdbc8('0xb')](_0xdbc8('0xc'),_0x4b9ca8,_0xdbc8('0xd'));logger[_0xdbc8('0xe')](_0xdbc8('0xf'),_0x4b9ca8,_0xdbc8('0xd'),JSON[_0xdbc8('0x10')](_0x2d6d75));if(_0x2d6d75['error']){if(_0x2d6d75[_0xdbc8('0x11')][_0xdbc8('0x12')]===0x1f4){logger[_0xdbc8('0x11')](_0xdbc8('0xc'),_0x4b9ca8,_0x2d6d75[_0xdbc8('0x11')][_0xdbc8('0x13')]);return _0x265c03(_0x2d6d75[_0xdbc8('0x11')][_0xdbc8('0x13')]);}logger['error'](_0xdbc8('0xc'),_0x4b9ca8,_0x2d6d75[_0xdbc8('0x11')][_0xdbc8('0x13')]);return _0x38fc82(_0x2d6d75[_0xdbc8('0x11')][_0xdbc8('0x13')]);}else{logger[_0xdbc8('0xb')](_0xdbc8('0xc'),_0x4b9ca8,'request\x20sent');_0x38fc82(_0x2d6d75[_0xdbc8('0x14')][_0xdbc8('0x13')]);}})[_0xdbc8('0x15')](function(_0x4a292a){logger[_0xdbc8('0x11')](_0xdbc8('0xc'),_0x4b9ca8,_0x4a292a);_0x265c03(_0x4a292a);});});}exports[_0xdbc8('0x16')]=function(_0x1c2d0c){var _0x2df160=this;return new Promise(function(_0x4ae146,_0x58c14f){return db[_0xdbc8('0x17')]['findAll']({'raw':_0x1c2d0c[_0xdbc8('0x18')]?_0x1c2d0c[_0xdbc8('0x18')][_0xdbc8('0x19')]===undefined?!![]:![]:!![],'where':_0x1c2d0c['options']?_0x1c2d0c[_0xdbc8('0x18')][_0xdbc8('0x1a')]||null:null,'attributes':_0x1c2d0c['options']?_0x1c2d0c['options']['attributes']||null:null,'limit':_0x1c2d0c[_0xdbc8('0x18')]?_0x1c2d0c[_0xdbc8('0x18')]['limit']||null:null,'include':_0x1c2d0c[_0xdbc8('0x18')]?_0x1c2d0c[_0xdbc8('0x18')][_0xdbc8('0x1b')]?_['map'](_0x1c2d0c[_0xdbc8('0x18')][_0xdbc8('0x1b')],function(_0x48c169){return{'model':db[_0x48c169['model']],'as':_0x48c169['as'],'attributes':_0x48c169[_0xdbc8('0x1c')],'include':_0x48c169['include']?_[_0xdbc8('0x1d')](_0x48c169['include'],function(_0x220a82){return{'model':db[_0x220a82[_0xdbc8('0x1e')]],'as':_0x220a82['as'],'attributes':_0x220a82[_0xdbc8('0x1c')],'include':_0x220a82[_0xdbc8('0x1b')]?_[_0xdbc8('0x1d')](_0x220a82[_0xdbc8('0x1b')],function(_0x31696c){return{'model':db[_0x31696c[_0xdbc8('0x1e')]],'as':_0x31696c['as'],'attributes':_0x31696c[_0xdbc8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdbc8('0x1f')](function(_0x5b1436){logger[_0xdbc8('0xb')](_0xdbc8('0x16'),_0x1c2d0c);logger[_0xdbc8('0xe')](_0xdbc8('0x16'),_0x1c2d0c,JSON[_0xdbc8('0x10')](_0x5b1436));_0x4ae146(_0x5b1436);})[_0xdbc8('0x15')](function(_0x219b44){logger[_0xdbc8('0x11')](_0xdbc8('0x16'),_0x219b44[_0xdbc8('0x13')],_0x1c2d0c);_0x58c14f(_0x2df160[_0xdbc8('0x11')](0x1f4,_0x219b44['message']));});});};
\ No newline at end of file
index 38938d4..0c193e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180a=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','/:id','isAuthenticated','show','/:id/all_conditions','get','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xce512b,_0x3163eb){var _0x44b7c5=function(_0x165eb1){while(--_0x165eb1){_0xce512b['push'](_0xce512b['shift']());}};_0x44b7c5(++_0x3163eb);}(_0x180a,0xd4));var _0xa180=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x180a[_0x56482c];return _0x5aae7a;};'use strict';var multer=require(_0xa180('0x0'));var util=require(_0xa180('0x1'));var path=require(_0xa180('0x2'));var timeout=require(_0xa180('0x3'));var express=require(_0xa180('0x4'));var router=express[_0xa180('0x5')]();var fs_extra=require(_0xa180('0x6'));var auth=require(_0xa180('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa180('0x8'));var controller=require(_0xa180('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa180('0xa'),auth[_0xa180('0xb')](),controller[_0xa180('0xc')]);router['get'](_0xa180('0xd'),auth[_0xa180('0xb')](),controller['getAllConditions']);router[_0xa180('0xe')](_0xa180('0xf'),auth[_0xa180('0xb')](),controller[_0xa180('0x10')]);router[_0xa180('0xe')](_0xa180('0x11'),auth[_0xa180('0xb')](),controller[_0xa180('0x12')]);router[_0xa180('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xa180('0xd'),auth[_0xa180('0xb')](),controller['addAllCondition']);router['post'](_0xa180('0xf'),auth[_0xa180('0xb')](),controller[_0xa180('0x14')]);router[_0xa180('0x13')](_0xa180('0x11'),auth[_0xa180('0xb')](),controller[_0xa180('0x15')]);router[_0xa180('0x16')](_0xa180('0xa'),auth[_0xa180('0xb')](),controller[_0xa180('0x17')]);router[_0xa180('0x18')](_0xa180('0xa'),auth[_0xa180('0xb')](),controller[_0xa180('0x19')]);module[_0xa180('0x1a')]=router;
\ No newline at end of file
+var _0xa65e=['getAnyConditions','/:id/actions','getActions','create','post','addAllCondition','addAnyCondition','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions'];(function(_0xb3b4b1,_0x11b2d8){var _0xdff458=function(_0xe6e421){while(--_0xe6e421){_0xb3b4b1['push'](_0xb3b4b1['shift']());}};_0xdff458(++_0x11b2d8);}(_0xa65e,0xb4));var _0xea65=function(_0x41648f,_0x4a8936){_0x41648f=_0x41648f-0x0;var _0x20340a=_0xa65e[_0x41648f];return _0x20340a;};'use strict';var multer=require(_0xea65('0x0'));var util=require(_0xea65('0x1'));var path=require(_0xea65('0x2'));var timeout=require(_0xea65('0x3'));var express=require(_0xea65('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xea65('0x5'));var interaction=require(_0xea65('0x6'));var config=require(_0xea65('0x7'));var controller=require('./trigger.controller');router[_0xea65('0x8')]('/',auth[_0xea65('0x9')](),controller[_0xea65('0xa')]);router[_0xea65('0x8')](_0xea65('0xb'),auth['isAuthenticated'](),controller[_0xea65('0xc')]);router['get'](_0xea65('0xd'),auth[_0xea65('0x9')](),controller[_0xea65('0xe')]);router[_0xea65('0x8')](_0xea65('0xf'),auth[_0xea65('0x9')](),controller[_0xea65('0x10')]);router[_0xea65('0x8')](_0xea65('0x11'),auth['isAuthenticated'](),controller[_0xea65('0x12')]);router['post']('/',auth[_0xea65('0x9')](),controller[_0xea65('0x13')]);router[_0xea65('0x14')](_0xea65('0xd'),auth[_0xea65('0x9')](),controller[_0xea65('0x15')]);router['post'](_0xea65('0xf'),auth[_0xea65('0x9')](),controller[_0xea65('0x16')]);router['post']('/:id/actions',auth[_0xea65('0x9')](),controller['addAction']);router[_0xea65('0x17')](_0xea65('0xb'),auth[_0xea65('0x9')](),controller[_0xea65('0x18')]);router[_0xea65('0x19')](_0xea65('0xb'),auth[_0xea65('0x9')](),controller[_0xea65('0x1a')]);module[_0xea65('0x1b')]=router;
\ No newline at end of file
index a77d382..9385b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d99=['exports','STRING','BOOLEAN','sequelize'];(function(_0x54cb68,_0x5b6889){var _0x1102df=function(_0x3b592c){while(--_0x3b592c){_0x54cb68['push'](_0x54cb68['shift']());}};_0x1102df(++_0x5b6889);}(_0x5d99,0x1b7));var _0x95d9=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0x5d99[_0xbc2974];return _0x3a5b4f;};'use strict';var Sequelize=require(_0x95d9('0x0'));module[_0x95d9('0x1')]={'name':{'type':Sequelize[_0x95d9('0x2')]},'channel':{'type':Sequelize[_0x95d9('0x2')]},'description':{'type':Sequelize[_0x95d9('0x2')]},'status':{'type':Sequelize[_0x95d9('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7b5b=['sequelize','STRING','BOOLEAN'];(function(_0x54b283,_0x5eb8a6){var _0x2462b3=function(_0x13fca7){while(--_0x13fca7){_0x54b283['push'](_0x54b283['shift']());}};_0x2462b3(++_0x5eb8a6);}(_0x7b5b,0x153));var _0xb7b5=function(_0x80ec97,_0x108cd0){_0x80ec97=_0x80ec97-0x0;var _0x17ee73=_0x7b5b[_0x80ec97];return _0x17ee73;};'use strict';var Sequelize=require(_0xb7b5('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb7b5('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xb7b5('0x2')],'defaultValue':![]}};
\ No newline at end of file
index f1b2e57..fb116a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c1=['hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','addAction','Action','getActions','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Triggers','UserProfileResource','end','error','stack','name','index','map','Trigger','fieldName','type','key','model','query','intersection','attributes','fields'];(function(_0x3bef2c,_0x5a86fd){var _0x331503=function(_0x463430){while(--_0x463430){_0x3bef2c['push'](_0x3bef2c['shift']());}};_0x331503(++_0x5a86fd);}(_0xc4c1,0x145));var _0x1c4c=function(_0x11d1c1,_0x4e47a4){_0x11d1c1=_0x11d1c1-0x0;var _0x4c5bdd=_0xc4c1[_0x11d1c1];return _0x4c5bdd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1c4c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1c4c('0x1'));var moment=require(_0x1c4c('0x2'));var BPromise=require(_0x1c4c('0x3'));var Mustache=require(_0x1c4c('0x4'));var util=require(_0x1c4c('0x5'));var path=require(_0x1c4c('0x6'));var sox=require(_0x1c4c('0x7'));var csv=require(_0x1c4c('0x8'));var ejs=require(_0x1c4c('0x9'));var fs=require('fs');var fs_extra=require(_0x1c4c('0xa'));var _=require(_0x1c4c('0xb'));var squel=require(_0x1c4c('0xc'));var crypto=require('crypto');var jsforce=require(_0x1c4c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1c4c('0xe'));var authService=require(_0x1c4c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x1c4c('0x10'));var hardwareService=require(_0x1c4c('0x11'));var logger=require(_0x1c4c('0x12'))(_0x1c4c('0x13'));var utils=require(_0x1c4c('0x14'));var config=require(_0x1c4c('0x15'));var licenseUtil=require(_0x1c4c('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c6fda,_0x5ac57f){_0x5ac57f=_0x5ac57f||0xcc;return function(_0x30b93f){if(_0x30b93f){return _0x4c6fda[_0x1c4c('0x17')](_0x5ac57f);}return _0x4c6fda[_0x1c4c('0x18')](_0x5ac57f)['end']();};}function respondWithResult(_0x4ea243,_0x38e938){_0x38e938=_0x38e938||0xc8;return function(_0x54352b){if(_0x54352b){return _0x4ea243[_0x1c4c('0x18')](_0x38e938)['json'](_0x54352b);}};}function respondWithFilteredResult(_0x457d77,_0x1237bb){return function(_0x5732b4){if(_0x5732b4){var _0x21d5d1=typeof _0x1237bb['offset']===_0x1c4c('0x19')&&typeof _0x1237bb[_0x1c4c('0x1a')]===_0x1c4c('0x19');var _0x3eccc6=_0x5732b4[_0x1c4c('0x1b')];var _0x31635a=_0x21d5d1?0x0:_0x1237bb['offset'];var _0x2ae3e3=_0x21d5d1?_0x5732b4[_0x1c4c('0x1b')]:_0x1237bb[_0x1c4c('0x1c')]+_0x1237bb[_0x1c4c('0x1a')];var _0x38b575;if(_0x2ae3e3>=_0x3eccc6){_0x2ae3e3=_0x3eccc6;_0x38b575=0xc8;}else{_0x38b575=0xce;}_0x457d77['status'](_0x38b575);return _0x457d77[_0x1c4c('0x1d')](_0x1c4c('0x1e'),_0x31635a+'-'+_0x2ae3e3+'/'+_0x3eccc6)['json'](_0x5732b4);}return null;};}function patchUpdates(_0x352394){return function(_0xacbee){try{jsonpatch[_0x1c4c('0x1f')](_0xacbee,_0x352394,!![]);}catch(_0x1c7d49){return BPromise[_0x1c4c('0x20')](_0x1c7d49);}return _0xacbee[_0x1c4c('0x21')]();};}function saveUpdates(_0x5ed761,_0x41ed1f){return function(_0x1742b0){if(_0x1742b0){return _0x1742b0[_0x1c4c('0x22')](_0x5ed761)[_0x1c4c('0x23')](function(_0x36661d){return _0x36661d;});}return null;};}function removeEntity(_0x2b91dc,_0x4980d2){return function(_0x14f52b){if(_0x14f52b){return _0x14f52b[_0x1c4c('0x24')]()[_0x1c4c('0x23')](function(){var _0x26efc6=_0x14f52b[_0x1c4c('0x25')]({'plain':!![]});var _0x3dbf0c=_0x1c4c('0x26');return db[_0x1c4c('0x27')][_0x1c4c('0x24')]({'where':{'type':_0x3dbf0c,'resourceId':_0x26efc6['id']}})[_0x1c4c('0x23')](function(){return _0x14f52b;});})[_0x1c4c('0x23')](function(){_0x2b91dc[_0x1c4c('0x18')](0xcc)[_0x1c4c('0x28')]();});}};}function handleEntityNotFound(_0x359d80,_0x264bfe){return function(_0x14d2bf){if(!_0x14d2bf){_0x359d80[_0x1c4c('0x17')](0x194);}return _0x14d2bf;};}function handleError(_0x4ba0ca,_0x3c9eac){_0x3c9eac=_0x3c9eac||0x1f4;return function(_0x4fc2d1){logger[_0x1c4c('0x29')](_0x4fc2d1[_0x1c4c('0x2a')]);if(_0x4fc2d1['name']){delete _0x4fc2d1[_0x1c4c('0x2b')];}_0x4ba0ca[_0x1c4c('0x18')](_0x3c9eac)['send'](_0x4fc2d1);};}exports[_0x1c4c('0x2c')]=function(_0x59cf88,_0x3bac09){var _0x3e70dc={},_0x34813f={},_0x643859={'count':0x0,'rows':[]};var _0x1d3eb6=_[_0x1c4c('0x2d')](db[_0x1c4c('0x2e')]['rawAttributes'],function(_0x58d847){return{'name':_0x58d847[_0x1c4c('0x2f')],'type':_0x58d847[_0x1c4c('0x30')][_0x1c4c('0x31')]};});_0x34813f[_0x1c4c('0x32')]=_[_0x1c4c('0x2d')](_0x1d3eb6,_0x1c4c('0x2b'));_0x34813f[_0x1c4c('0x33')]=_['keys'](_0x59cf88[_0x1c4c('0x33')]);_0x34813f['filters']=_[_0x1c4c('0x34')](_0x34813f[_0x1c4c('0x32')],_0x34813f[_0x1c4c('0x33')]);_0x3e70dc[_0x1c4c('0x35')]=_[_0x1c4c('0x34')](_0x34813f['model'],qs[_0x1c4c('0x36')](_0x59cf88['query'][_0x1c4c('0x36')]));_0x3e70dc['attributes']=_0x3e70dc[_0x1c4c('0x35')]['length']?_0x3e70dc[_0x1c4c('0x35')]:_0x34813f[_0x1c4c('0x32')];if(!_0x59cf88['query'][_0x1c4c('0x37')](_0x1c4c('0x38'))){_0x3e70dc[_0x1c4c('0x1a')]=qs[_0x1c4c('0x1a')](_0x59cf88[_0x1c4c('0x33')][_0x1c4c('0x1a')]);_0x3e70dc['offset']=qs['offset'](_0x59cf88[_0x1c4c('0x33')][_0x1c4c('0x1c')]);}_0x3e70dc[_0x1c4c('0x39')]=qs[_0x1c4c('0x3a')](_0x59cf88['query'][_0x1c4c('0x3a')]);_0x3e70dc[_0x1c4c('0x3b')]=qs[_0x1c4c('0x3c')](_[_0x1c4c('0x3d')](_0x59cf88[_0x1c4c('0x33')],_0x34813f[_0x1c4c('0x3c')]),_0x1d3eb6);if(_0x59cf88[_0x1c4c('0x33')]['filter']){_0x3e70dc[_0x1c4c('0x3b')]=_[_0x1c4c('0x3e')](_0x3e70dc['where'],{'$or':_[_0x1c4c('0x2d')](_0x1d3eb6,function(_0x3da060){if(_0x3da060[_0x1c4c('0x30')]!==_0x1c4c('0x3f')){var _0x2f62ff={};_0x2f62ff[_0x3da060[_0x1c4c('0x2b')]]={'$like':'%'+_0x59cf88[_0x1c4c('0x33')][_0x1c4c('0x40')]+'%'};return _0x2f62ff;}})});}_0x3e70dc=_[_0x1c4c('0x3e')]({},_0x3e70dc,_0x59cf88[_0x1c4c('0x41')]);var _0xb189c0={'where':_0x3e70dc[_0x1c4c('0x3b')]};return db[_0x1c4c('0x2e')]['count'](_0xb189c0)[_0x1c4c('0x23')](function(_0x239998){_0x643859[_0x1c4c('0x1b')]=_0x239998;if(_0x59cf88[_0x1c4c('0x33')][_0x1c4c('0x42')]){_0x3e70dc[_0x1c4c('0x43')]=[{'all':!![]}];}return db[_0x1c4c('0x2e')][_0x1c4c('0x44')](_0x3e70dc);})[_0x1c4c('0x23')](function(_0x214a9d){_0x643859['rows']=_0x214a9d;return _0x643859;})[_0x1c4c('0x23')](respondWithFilteredResult(_0x3bac09,_0x3e70dc))[_0x1c4c('0x45')](handleError(_0x3bac09,null));};exports[_0x1c4c('0x46')]=function(_0x4ee4af,_0x1bb8eb){var _0xe473d9={'raw':![],'where':{'id':_0x4ee4af[_0x1c4c('0x47')]['id']}},_0x48f58a={};_0x48f58a[_0x1c4c('0x32')]=_[_0x1c4c('0x48')](db['Trigger'][_0x1c4c('0x49')]);_0x48f58a[_0x1c4c('0x33')]=_['keys'](_0x4ee4af['query']);_0x48f58a[_0x1c4c('0x3c')]=_['intersection'](_0x48f58a[_0x1c4c('0x32')],_0x48f58a[_0x1c4c('0x33')]);_0xe473d9[_0x1c4c('0x35')]=_[_0x1c4c('0x34')](_0x48f58a[_0x1c4c('0x32')],qs[_0x1c4c('0x36')](_0x4ee4af[_0x1c4c('0x33')][_0x1c4c('0x36')]));_0xe473d9[_0x1c4c('0x35')]=_0xe473d9[_0x1c4c('0x35')][_0x1c4c('0x4a')]?_0xe473d9[_0x1c4c('0x35')]:_0x48f58a[_0x1c4c('0x32')];if(_0x4ee4af[_0x1c4c('0x33')][_0x1c4c('0x42')]){_0xe473d9['include']=[{'all':!![]}];}_0xe473d9=_['merge']({},_0xe473d9,_0x4ee4af[_0x1c4c('0x41')]);return db[_0x1c4c('0x2e')][_0x1c4c('0x4b')](_0xe473d9)[_0x1c4c('0x23')](handleEntityNotFound(_0x1bb8eb,null))[_0x1c4c('0x23')](respondWithResult(_0x1bb8eb,null))[_0x1c4c('0x45')](handleError(_0x1bb8eb,null));};exports[_0x1c4c('0x4c')]=function(_0x20cf36,_0x40decc){return db[_0x1c4c('0x2e')][_0x1c4c('0x4c')](_0x20cf36[_0x1c4c('0x4d')],{})[_0x1c4c('0x23')](function(_0x555fe3){var _0x2476f7=_0x20cf36[_0x1c4c('0x4e')][_0x1c4c('0x25')]({'plain':!![]});if(!_0x2476f7)throw new Error(_0x1c4c('0x4f'));if(_0x2476f7[_0x1c4c('0x50')]===_0x1c4c('0x4e')){var _0x251796=_0x555fe3['get']({'plain':!![]});var _0x29fb7a=_0x1c4c('0x26');return db[_0x1c4c('0x51')][_0x1c4c('0x4b')]({'where':{'name':_0x29fb7a,'userProfileId':_0x2476f7[_0x1c4c('0x52')]},'raw':!![]})[_0x1c4c('0x23')](function(_0x432888){if(_0x432888&&_0x432888['autoAssociation']===0x0){return db[_0x1c4c('0x27')][_0x1c4c('0x4c')]({'name':_0x251796[_0x1c4c('0x2b')],'resourceId':_0x251796['id'],'type':_0x432888[_0x1c4c('0x2b')],'sectionId':_0x432888['id']},{})['then'](function(){return _0x555fe3;});}else{return _0x555fe3;}})[_0x1c4c('0x45')](function(_0x120773){logger[_0x1c4c('0x29')](_0x1c4c('0x53'),_0x120773);throw _0x120773;});}return _0x555fe3;})[_0x1c4c('0x23')](respondWithResult(_0x40decc,0xc9))[_0x1c4c('0x45')](handleError(_0x40decc,null));};exports[_0x1c4c('0x22')]=function(_0x8f3dd6,_0x84f0d2){if(_0x8f3dd6['body']['id']){delete _0x8f3dd6['body']['id'];}return db[_0x1c4c('0x2e')][_0x1c4c('0x4b')]({'where':{'id':_0x8f3dd6[_0x1c4c('0x47')]['id']}})[_0x1c4c('0x23')](handleEntityNotFound(_0x84f0d2,null))['then'](saveUpdates(_0x8f3dd6[_0x1c4c('0x4d')],null))[_0x1c4c('0x23')](respondWithResult(_0x84f0d2,null))[_0x1c4c('0x45')](handleError(_0x84f0d2,null));};exports['destroy']=function(_0x3ca276,_0x233069){return db[_0x1c4c('0x2e')][_0x1c4c('0x4b')]({'where':{'id':_0x3ca276[_0x1c4c('0x47')]['id']}})[_0x1c4c('0x23')](handleEntityNotFound(_0x233069,null))[_0x1c4c('0x23')](removeEntity(_0x233069,null))['catch'](handleError(_0x233069,null));};exports[_0x1c4c('0x54')]=function(_0x2e2014,_0x5a0efc,_0x4dd770){if(_0x2e2014[_0x1c4c('0x4d')]['id']){delete _0x2e2014[_0x1c4c('0x4d')]['id'];}return db['Trigger']['find']({'where':{'id':_0x2e2014[_0x1c4c('0x47')]['id']}})[_0x1c4c('0x23')](handleEntityNotFound(_0x5a0efc,null))['then'](function(_0x275a9e){if(_0x275a9e){_0x2e2014[_0x1c4c('0x4d')][_0x1c4c('0x55')]=_0x275a9e['id'];return db[_0x1c4c('0x56')][_0x1c4c('0x4c')](_0x2e2014[_0x1c4c('0x4d')]);}})[_0x1c4c('0x23')](respondWithResult(_0x5a0efc,null))[_0x1c4c('0x45')](handleError(_0x5a0efc,null));};exports[_0x1c4c('0x57')]=function(_0x27caac,_0x2c14cc,_0x3261ef){if(_0x27caac[_0x1c4c('0x4d')]['id']){delete _0x27caac[_0x1c4c('0x4d')]['id'];}return db['Trigger']['find']({'where':{'id':_0x27caac[_0x1c4c('0x47')]['id']}})['then'](handleEntityNotFound(_0x2c14cc,null))[_0x1c4c('0x23')](function(_0x43cdf6){if(_0x43cdf6){_0x27caac[_0x1c4c('0x4d')][_0x1c4c('0x58')]=_0x43cdf6['id'];return db[_0x1c4c('0x56')]['create'](_0x27caac[_0x1c4c('0x4d')]);}})[_0x1c4c('0x23')](respondWithResult(_0x2c14cc,null))[_0x1c4c('0x45')](handleError(_0x2c14cc,null));};exports[_0x1c4c('0x59')]=function(_0x360bf3,_0x5adec4,_0x42073b){var _0x2cba11={};var _0x14dc89={};var _0x4b361f;var _0x4afa94;return db[_0x1c4c('0x2e')][_0x1c4c('0x5a')]({'where':{'id':_0x360bf3['params']['id']}})[_0x1c4c('0x23')](handleEntityNotFound(_0x5adec4,null))[_0x1c4c('0x23')](function(_0x64762b){if(_0x64762b){_0x4b361f=_0x64762b;_0x14dc89[_0x1c4c('0x32')]=_[_0x1c4c('0x48')](db[_0x1c4c('0x56')][_0x1c4c('0x49')]);_0x14dc89[_0x1c4c('0x33')]=_[_0x1c4c('0x48')](_0x360bf3[_0x1c4c('0x33')]);_0x14dc89[_0x1c4c('0x3c')]=_[_0x1c4c('0x34')](_0x14dc89[_0x1c4c('0x32')],_0x14dc89['query']);_0x2cba11[_0x1c4c('0x35')]=_[_0x1c4c('0x34')](_0x14dc89[_0x1c4c('0x32')],qs[_0x1c4c('0x36')](_0x360bf3[_0x1c4c('0x33')][_0x1c4c('0x36')]));_0x2cba11[_0x1c4c('0x35')]=_0x2cba11[_0x1c4c('0x35')]['length']?_0x2cba11[_0x1c4c('0x35')]:_0x14dc89[_0x1c4c('0x32')];_0x2cba11[_0x1c4c('0x39')]=qs[_0x1c4c('0x3a')](_0x360bf3[_0x1c4c('0x33')][_0x1c4c('0x3a')]);_0x2cba11[_0x1c4c('0x3b')]=qs[_0x1c4c('0x3c')](_['pick'](_0x360bf3[_0x1c4c('0x33')],_0x14dc89[_0x1c4c('0x3c')]));if(_0x360bf3[_0x1c4c('0x33')][_0x1c4c('0x40')]){_0x2cba11[_0x1c4c('0x3b')]=_[_0x1c4c('0x3e')](_0x2cba11[_0x1c4c('0x3b')],{'$or':_[_0x1c4c('0x2d')](_0x2cba11[_0x1c4c('0x35')],function(_0x40442d){var _0x4ba188={};_0x4ba188[_0x40442d]={'$like':'%'+_0x360bf3['query'][_0x1c4c('0x40')]+'%'};return _0x4ba188;})});}_0x2cba11=_[_0x1c4c('0x3e')]({},_0x2cba11,_0x360bf3[_0x1c4c('0x41')]);return _0x4b361f[_0x1c4c('0x59')](_0x2cba11);}})['then'](function(_0x3bf1a0){if(_0x3bf1a0){_0x4afa94=_0x3bf1a0[_0x1c4c('0x4a')];if(!_0x360bf3['query'][_0x1c4c('0x37')](_0x1c4c('0x38'))){_0x2cba11[_0x1c4c('0x1a')]=qs[_0x1c4c('0x1a')](_0x360bf3[_0x1c4c('0x33')][_0x1c4c('0x1a')]);_0x2cba11['offset']=qs[_0x1c4c('0x1c')](_0x360bf3[_0x1c4c('0x33')][_0x1c4c('0x1c')]);}return _0x4b361f[_0x1c4c('0x59')](_0x2cba11);}})[_0x1c4c('0x23')](function(_0x1950c0){if(_0x1950c0){return _0x1950c0?{'count':_0x4afa94,'rows':_0x1950c0}:null;}})[_0x1c4c('0x23')](respondWithResult(_0x5adec4,null))[_0x1c4c('0x45')](handleError(_0x5adec4,null));};exports['getAnyConditions']=function(_0x53ebed,_0x1bc413,_0x58985f){var _0x150114={};var _0x1404ec={};var _0x1bb25a;var _0x4d73fd;return db['Trigger'][_0x1c4c('0x5a')]({'where':{'id':_0x53ebed[_0x1c4c('0x47')]['id']}})['then'](handleEntityNotFound(_0x1bc413,null))['then'](function(_0x1c6ffe){if(_0x1c6ffe){_0x1bb25a=_0x1c6ffe;_0x1404ec['model']=_[_0x1c4c('0x48')](db[_0x1c4c('0x56')][_0x1c4c('0x49')]);_0x1404ec[_0x1c4c('0x33')]=_[_0x1c4c('0x48')](_0x53ebed[_0x1c4c('0x33')]);_0x1404ec['filters']=_[_0x1c4c('0x34')](_0x1404ec[_0x1c4c('0x32')],_0x1404ec[_0x1c4c('0x33')]);_0x150114['attributes']=_[_0x1c4c('0x34')](_0x1404ec[_0x1c4c('0x32')],qs[_0x1c4c('0x36')](_0x53ebed[_0x1c4c('0x33')]['fields']));_0x150114['attributes']=_0x150114['attributes'][_0x1c4c('0x4a')]?_0x150114[_0x1c4c('0x35')]:_0x1404ec[_0x1c4c('0x32')];_0x150114[_0x1c4c('0x39')]=qs[_0x1c4c('0x3a')](_0x53ebed[_0x1c4c('0x33')]['sort']);_0x150114[_0x1c4c('0x3b')]=qs[_0x1c4c('0x3c')](_['pick'](_0x53ebed[_0x1c4c('0x33')],_0x1404ec[_0x1c4c('0x3c')]));if(_0x53ebed[_0x1c4c('0x33')][_0x1c4c('0x40')]){_0x150114[_0x1c4c('0x3b')]=_[_0x1c4c('0x3e')](_0x150114['where'],{'$or':_[_0x1c4c('0x2d')](_0x150114[_0x1c4c('0x35')],function(_0x5ae760){var _0x42cb9a={};_0x42cb9a[_0x5ae760]={'$like':'%'+_0x53ebed['query']['filter']+'%'};return _0x42cb9a;})});}_0x150114=_[_0x1c4c('0x3e')]({},_0x150114,_0x53ebed['options']);return _0x1bb25a[_0x1c4c('0x5b')](_0x150114);}})[_0x1c4c('0x23')](function(_0x55bce2){if(_0x55bce2){_0x4d73fd=_0x55bce2[_0x1c4c('0x4a')];if(!_0x53ebed[_0x1c4c('0x33')]['hasOwnProperty']('nolimit')){_0x150114[_0x1c4c('0x1a')]=qs[_0x1c4c('0x1a')](_0x53ebed[_0x1c4c('0x33')]['limit']);_0x150114[_0x1c4c('0x1c')]=qs['offset'](_0x53ebed[_0x1c4c('0x33')][_0x1c4c('0x1c')]);}return _0x1bb25a[_0x1c4c('0x5b')](_0x150114);}})[_0x1c4c('0x23')](function(_0x1a9987){if(_0x1a9987){return _0x1a9987?{'count':_0x4d73fd,'rows':_0x1a9987}:null;}})[_0x1c4c('0x23')](respondWithResult(_0x1bc413,null))[_0x1c4c('0x45')](handleError(_0x1bc413,null));};exports[_0x1c4c('0x5c')]=function(_0x291e27,_0x34c72b,_0x292ae9){if(_0x291e27['body']['id']){delete _0x291e27[_0x1c4c('0x4d')]['id'];}return db[_0x1c4c('0x2e')][_0x1c4c('0x4b')]({'where':{'id':_0x291e27['params']['id']}})[_0x1c4c('0x23')](handleEntityNotFound(_0x34c72b,null))[_0x1c4c('0x23')](function(_0x10788c){if(_0x10788c){_0x291e27[_0x1c4c('0x4d')]['TriggerId']=_0x10788c['id'];return db[_0x1c4c('0x5d')][_0x1c4c('0x4c')](_0x291e27[_0x1c4c('0x4d')]);}})['then'](respondWithResult(_0x34c72b,null))[_0x1c4c('0x45')](handleError(_0x34c72b,null));};exports[_0x1c4c('0x5e')]=function(_0xfbd32e,_0x44d8f9,_0x69f7e0){var _0x21e9e6={};var _0x549073={};var _0x48627e;var _0x172eb1;return db[_0x1c4c('0x2e')]['findOne']({'where':{'id':_0xfbd32e[_0x1c4c('0x47')]['id']}})['then'](handleEntityNotFound(_0x44d8f9,null))[_0x1c4c('0x23')](function(_0x373ea9){if(_0x373ea9){_0x48627e=_0x373ea9;_0x549073[_0x1c4c('0x32')]=_[_0x1c4c('0x48')](db[_0x1c4c('0x5d')]['rawAttributes']);_0x549073['query']=_[_0x1c4c('0x48')](_0xfbd32e[_0x1c4c('0x33')]);_0x549073['filters']=_[_0x1c4c('0x34')](_0x549073[_0x1c4c('0x32')],_0x549073[_0x1c4c('0x33')]);_0x21e9e6['attributes']=_[_0x1c4c('0x34')](_0x549073['model'],qs[_0x1c4c('0x36')](_0xfbd32e[_0x1c4c('0x33')][_0x1c4c('0x36')]));_0x21e9e6['attributes']=_0x21e9e6[_0x1c4c('0x35')][_0x1c4c('0x4a')]?_0x21e9e6[_0x1c4c('0x35')]:_0x549073['model'];_0x21e9e6[_0x1c4c('0x39')]=qs[_0x1c4c('0x3a')](_0xfbd32e[_0x1c4c('0x33')][_0x1c4c('0x3a')]);_0x21e9e6[_0x1c4c('0x3b')]=qs[_0x1c4c('0x3c')](_['pick'](_0xfbd32e[_0x1c4c('0x33')],_0x549073['filters']));if(_0xfbd32e[_0x1c4c('0x33')][_0x1c4c('0x40')]){_0x21e9e6[_0x1c4c('0x3b')]=_['merge'](_0x21e9e6['where'],{'$or':_[_0x1c4c('0x2d')](_0x21e9e6[_0x1c4c('0x35')],function(_0xdfe41c){var _0x5da0f4={};_0x5da0f4[_0xdfe41c]={'$like':'%'+_0xfbd32e['query'][_0x1c4c('0x40')]+'%'};return _0x5da0f4;})});}_0x21e9e6=_[_0x1c4c('0x3e')]({},_0x21e9e6,_0xfbd32e['options']);return _0x48627e[_0x1c4c('0x5e')](_0x21e9e6);}})[_0x1c4c('0x23')](function(_0xfb7e35){if(_0xfb7e35){_0x172eb1=_0xfb7e35[_0x1c4c('0x4a')];if(!_0xfbd32e[_0x1c4c('0x33')][_0x1c4c('0x37')](_0x1c4c('0x38'))){_0x21e9e6['limit']=qs[_0x1c4c('0x1a')](_0xfbd32e[_0x1c4c('0x33')]['limit']);_0x21e9e6[_0x1c4c('0x1c')]=qs['offset'](_0xfbd32e[_0x1c4c('0x33')]['offset']);}return _0x48627e[_0x1c4c('0x5e')](_0x21e9e6);}})[_0x1c4c('0x23')](function(_0x3585dc){if(_0x3585dc){return _0x3585dc?{'count':_0x172eb1,'rows':_0x3585dc}:null;}})['then'](respondWithResult(_0x44d8f9,null))['catch'](handleError(_0x44d8f9,null));};
\ No newline at end of file
+var _0xd77f=['update','destroy','get','Triggers','then','stack','name','map','Trigger','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addAllCondition','Condition','TriggerAnyId','getAllConditions','pick','getAnyConditions','hasOwnProperty','Action','getActions','findOne','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save'];(function(_0x305486,_0x24acd4){var _0xa04940=function(_0x29e866){while(--_0x29e866){_0x305486['push'](_0x305486['shift']());}};_0xa04940(++_0x24acd4);}(_0xd77f,0x8e));var _0xfd77=function(_0x5e7967,_0x156930){_0x5e7967=_0x5e7967-0x0;var _0x2c8cf2=_0xd77f[_0x5e7967];return _0x2c8cf2;};'use strict';var emlformat=require(_0xfd77('0x0'));var rimraf=require(_0xfd77('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfd77('0x2'));var rp=require(_0xfd77('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfd77('0x4'));var util=require('util');var path=require(_0xfd77('0x5'));var sox=require('sox');var csv=require(_0xfd77('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd77('0x7'));var squel=require(_0xfd77('0x8'));var crypto=require(_0xfd77('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xfd77('0xa'));var toCsv=require(_0xfd77('0x6'));var querystring=require('querystring');var Papa=require(_0xfd77('0xb'));var Redis=require('ioredis');var authService=require(_0xfd77('0xc'));var qs=require(_0xfd77('0xd'));var as=require(_0xfd77('0xe'));var hardwareService=require(_0xfd77('0xf'));var logger=require(_0xfd77('0x10'))(_0xfd77('0x11'));var utils=require(_0xfd77('0x12'));var config=require(_0xfd77('0x13'));var licenseUtil=require(_0xfd77('0x14'));var db=require(_0xfd77('0x15'))['db'];function respondWithStatusCode(_0x2f121f,_0x5c518b){_0x5c518b=_0x5c518b||0xcc;return function(_0x19896d){if(_0x19896d){return _0x2f121f[_0xfd77('0x16')](_0x5c518b);}return _0x2f121f[_0xfd77('0x17')](_0x5c518b)[_0xfd77('0x18')]();};}function respondWithResult(_0x573491,_0x1dd243){_0x1dd243=_0x1dd243||0xc8;return function(_0x1db299){if(_0x1db299){return _0x573491[_0xfd77('0x17')](_0x1dd243)[_0xfd77('0x19')](_0x1db299);}};}function respondWithFilteredResult(_0x493b30,_0x568aec){return function(_0x3c3514){if(_0x3c3514){var _0x4b696a=typeof _0x568aec[_0xfd77('0x1a')]===_0xfd77('0x1b')&&typeof _0x568aec['limit']==='undefined';var _0x5d4d38=_0x3c3514[_0xfd77('0x1c')];var _0x553728=_0x4b696a?0x0:_0x568aec[_0xfd77('0x1a')];var _0x16e722=_0x4b696a?_0x3c3514[_0xfd77('0x1c')]:_0x568aec[_0xfd77('0x1a')]+_0x568aec['limit'];var _0x4f06e0;if(_0x16e722>=_0x5d4d38){_0x16e722=_0x5d4d38;_0x4f06e0=0xc8;}else{_0x4f06e0=0xce;}_0x493b30[_0xfd77('0x17')](_0x4f06e0);return _0x493b30[_0xfd77('0x1d')](_0xfd77('0x1e'),_0x553728+'-'+_0x16e722+'/'+_0x5d4d38)[_0xfd77('0x19')](_0x3c3514);}return null;};}function patchUpdates(_0x55b1b4){return function(_0x48842f){try{jsonpatch[_0xfd77('0x1f')](_0x48842f,_0x55b1b4,!![]);}catch(_0x56f881){return BPromise[_0xfd77('0x20')](_0x56f881);}return _0x48842f[_0xfd77('0x21')]();};}function saveUpdates(_0x1f5ccd,_0x14c7d3){return function(_0x10df0a){if(_0x10df0a){return _0x10df0a[_0xfd77('0x22')](_0x1f5ccd)['then'](function(_0x534a3d){return _0x534a3d;});}return null;};}function removeEntity(_0x20bbf9,_0x4e0dd0){return function(_0x102074){if(_0x102074){return _0x102074[_0xfd77('0x23')]()['then'](function(){var _0x5a823e=_0x102074[_0xfd77('0x24')]({'plain':!![]});var _0x563ed7=_0xfd77('0x25');return db['UserProfileResource'][_0xfd77('0x23')]({'where':{'type':_0x563ed7,'resourceId':_0x5a823e['id']}})['then'](function(){return _0x102074;});})[_0xfd77('0x26')](function(){_0x20bbf9['status'](0xcc)[_0xfd77('0x18')]();});}};}function handleEntityNotFound(_0x5e65c2,_0x278383){return function(_0xa0b33a){if(!_0xa0b33a){_0x5e65c2[_0xfd77('0x16')](0x194);}return _0xa0b33a;};}function handleError(_0xd64961,_0x4c4a5d){_0x4c4a5d=_0x4c4a5d||0x1f4;return function(_0x1b219c){logger['error'](_0x1b219c[_0xfd77('0x27')]);if(_0x1b219c[_0xfd77('0x28')]){delete _0x1b219c[_0xfd77('0x28')];}_0xd64961[_0xfd77('0x17')](_0x4c4a5d)['send'](_0x1b219c);};}exports['index']=function(_0x193061,_0x2d821a){var _0x1598b8={},_0x14992b={},_0x53ff76={'count':0x0,'rows':[]};var _0x9db927=_[_0xfd77('0x29')](db[_0xfd77('0x2a')]['rawAttributes'],function(_0x4ee245){return{'name':_0x4ee245['fieldName'],'type':_0x4ee245['type']['key']};});_0x14992b[_0xfd77('0x2b')]=_[_0xfd77('0x29')](_0x9db927,_0xfd77('0x28'));_0x14992b[_0xfd77('0x2c')]=_[_0xfd77('0x2d')](_0x193061[_0xfd77('0x2c')]);_0x14992b[_0xfd77('0x2e')]=_[_0xfd77('0x2f')](_0x14992b[_0xfd77('0x2b')],_0x14992b[_0xfd77('0x2c')]);_0x1598b8[_0xfd77('0x30')]=_[_0xfd77('0x2f')](_0x14992b[_0xfd77('0x2b')],qs['fields'](_0x193061[_0xfd77('0x2c')][_0xfd77('0x31')]));_0x1598b8[_0xfd77('0x30')]=_0x1598b8['attributes'][_0xfd77('0x32')]?_0x1598b8[_0xfd77('0x30')]:_0x14992b[_0xfd77('0x2b')];if(!_0x193061[_0xfd77('0x2c')]['hasOwnProperty'](_0xfd77('0x33'))){_0x1598b8[_0xfd77('0x34')]=qs['limit'](_0x193061['query']['limit']);_0x1598b8[_0xfd77('0x1a')]=qs[_0xfd77('0x1a')](_0x193061['query']['offset']);}_0x1598b8[_0xfd77('0x35')]=qs[_0xfd77('0x36')](_0x193061[_0xfd77('0x2c')][_0xfd77('0x36')]);_0x1598b8[_0xfd77('0x37')]=qs['filters'](_['pick'](_0x193061[_0xfd77('0x2c')],_0x14992b[_0xfd77('0x2e')]),_0x9db927);if(_0x193061['query'][_0xfd77('0x38')]){_0x1598b8[_0xfd77('0x37')]=_[_0xfd77('0x39')](_0x1598b8[_0xfd77('0x37')],{'$or':_[_0xfd77('0x29')](_0x9db927,function(_0x507797){if(_0x507797['type']!=='VIRTUAL'){var _0x42780e={};_0x42780e[_0x507797['name']]={'$like':'%'+_0x193061[_0xfd77('0x2c')]['filter']+'%'};return _0x42780e;}})});}_0x1598b8=_['merge']({},_0x1598b8,_0x193061[_0xfd77('0x3a')]);var _0x149609={'where':_0x1598b8[_0xfd77('0x37')]};return db['Trigger']['count'](_0x149609)[_0xfd77('0x26')](function(_0x160b9c){_0x53ff76['count']=_0x160b9c;if(_0x193061[_0xfd77('0x2c')][_0xfd77('0x3b')]){_0x1598b8[_0xfd77('0x3c')]=[{'all':!![]}];}return db[_0xfd77('0x2a')][_0xfd77('0x3d')](_0x1598b8);})['then'](function(_0x134c75){_0x53ff76[_0xfd77('0x3e')]=_0x134c75;return _0x53ff76;})[_0xfd77('0x26')](respondWithFilteredResult(_0x2d821a,_0x1598b8))[_0xfd77('0x3f')](handleError(_0x2d821a,null));};exports[_0xfd77('0x40')]=function(_0x55a041,_0x1b0054){var _0x18eae6={'raw':![],'where':{'id':_0x55a041['params']['id']}},_0x603522={};_0x603522[_0xfd77('0x2b')]=_[_0xfd77('0x2d')](db[_0xfd77('0x2a')][_0xfd77('0x41')]);_0x603522[_0xfd77('0x2c')]=_[_0xfd77('0x2d')](_0x55a041[_0xfd77('0x2c')]);_0x603522['filters']=_[_0xfd77('0x2f')](_0x603522[_0xfd77('0x2b')],_0x603522[_0xfd77('0x2c')]);_0x18eae6[_0xfd77('0x30')]=_[_0xfd77('0x2f')](_0x603522[_0xfd77('0x2b')],qs[_0xfd77('0x31')](_0x55a041['query'][_0xfd77('0x31')]));_0x18eae6['attributes']=_0x18eae6[_0xfd77('0x30')]['length']?_0x18eae6['attributes']:_0x603522[_0xfd77('0x2b')];if(_0x55a041[_0xfd77('0x2c')][_0xfd77('0x3b')]){_0x18eae6[_0xfd77('0x3c')]=[{'all':!![]}];}_0x18eae6=_[_0xfd77('0x39')]({},_0x18eae6,_0x55a041[_0xfd77('0x3a')]);return db[_0xfd77('0x2a')]['find'](_0x18eae6)[_0xfd77('0x26')](handleEntityNotFound(_0x1b0054,null))['then'](respondWithResult(_0x1b0054,null))['catch'](handleError(_0x1b0054,null));};exports[_0xfd77('0x42')]=function(_0x15ae28,_0x1f9338){return db[_0xfd77('0x2a')][_0xfd77('0x42')](_0x15ae28[_0xfd77('0x43')],{})[_0xfd77('0x26')](function(_0x2ed16b){var _0x50314d=_0x15ae28[_0xfd77('0x44')][_0xfd77('0x24')]({'plain':!![]});if(!_0x50314d)throw new Error(_0xfd77('0x45'));if(_0x50314d[_0xfd77('0x46')]===_0xfd77('0x44')){var _0x12c94b=_0x2ed16b[_0xfd77('0x24')]({'plain':!![]});var _0x552139=_0xfd77('0x25');return db['UserProfileSection'][_0xfd77('0x47')]({'where':{'name':_0x552139,'userProfileId':_0x50314d[_0xfd77('0x48')]},'raw':!![]})[_0xfd77('0x26')](function(_0x36b042){if(_0x36b042&&_0x36b042[_0xfd77('0x49')]===0x0){return db[_0xfd77('0x4a')][_0xfd77('0x42')]({'name':_0x12c94b['name'],'resourceId':_0x12c94b['id'],'type':_0x36b042[_0xfd77('0x28')],'sectionId':_0x36b042['id']},{})[_0xfd77('0x26')](function(){return _0x2ed16b;});}else{return _0x2ed16b;}})['catch'](function(_0x104e50){logger[_0xfd77('0x4b')](_0xfd77('0x4c'),_0x104e50);throw _0x104e50;});}return _0x2ed16b;})[_0xfd77('0x26')](respondWithResult(_0x1f9338,0xc9))[_0xfd77('0x3f')](handleError(_0x1f9338,null));};exports[_0xfd77('0x22')]=function(_0x1a3212,_0x785399){if(_0x1a3212['body']['id']){delete _0x1a3212['body']['id'];}return db['Trigger'][_0xfd77('0x47')]({'where':{'id':_0x1a3212[_0xfd77('0x4d')]['id']}})['then'](handleEntityNotFound(_0x785399,null))[_0xfd77('0x26')](saveUpdates(_0x1a3212[_0xfd77('0x43')],null))[_0xfd77('0x26')](respondWithResult(_0x785399,null))[_0xfd77('0x3f')](handleError(_0x785399,null));};exports[_0xfd77('0x23')]=function(_0x53c12e,_0x202476){return db['Trigger']['find']({'where':{'id':_0x53c12e[_0xfd77('0x4d')]['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x202476,null))[_0xfd77('0x26')](removeEntity(_0x202476,null))[_0xfd77('0x3f')](handleError(_0x202476,null));};exports[_0xfd77('0x4e')]=function(_0x433925,_0x1ab33d,_0x1afadd){if(_0x433925[_0xfd77('0x43')]['id']){delete _0x433925[_0xfd77('0x43')]['id'];}return db[_0xfd77('0x2a')][_0xfd77('0x47')]({'where':{'id':_0x433925[_0xfd77('0x4d')]['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x1ab33d,null))[_0xfd77('0x26')](function(_0x197609){if(_0x197609){_0x433925[_0xfd77('0x43')]['TriggerAllId']=_0x197609['id'];return db[_0xfd77('0x4f')][_0xfd77('0x42')](_0x433925['body']);}})['then'](respondWithResult(_0x1ab33d,null))[_0xfd77('0x3f')](handleError(_0x1ab33d,null));};exports['addAnyCondition']=function(_0x4e8c60,_0x2aead8,_0x5ecd85){if(_0x4e8c60['body']['id']){delete _0x4e8c60[_0xfd77('0x43')]['id'];}return db[_0xfd77('0x2a')][_0xfd77('0x47')]({'where':{'id':_0x4e8c60[_0xfd77('0x4d')]['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x2aead8,null))[_0xfd77('0x26')](function(_0x4c50a2){if(_0x4c50a2){_0x4e8c60[_0xfd77('0x43')][_0xfd77('0x50')]=_0x4c50a2['id'];return db[_0xfd77('0x4f')][_0xfd77('0x42')](_0x4e8c60[_0xfd77('0x43')]);}})['then'](respondWithResult(_0x2aead8,null))[_0xfd77('0x3f')](handleError(_0x2aead8,null));};exports[_0xfd77('0x51')]=function(_0x3b724b,_0x12e204,_0x73a0a2){var _0x65ddcf={};var _0x87bc83={};var _0x3946f4;var _0x43c82e;return db['Trigger']['findOne']({'where':{'id':_0x3b724b[_0xfd77('0x4d')]['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x12e204,null))[_0xfd77('0x26')](function(_0x2b03ae){if(_0x2b03ae){_0x3946f4=_0x2b03ae;_0x87bc83[_0xfd77('0x2b')]=_[_0xfd77('0x2d')](db[_0xfd77('0x4f')]['rawAttributes']);_0x87bc83[_0xfd77('0x2c')]=_['keys'](_0x3b724b[_0xfd77('0x2c')]);_0x87bc83[_0xfd77('0x2e')]=_[_0xfd77('0x2f')](_0x87bc83[_0xfd77('0x2b')],_0x87bc83['query']);_0x65ddcf[_0xfd77('0x30')]=_['intersection'](_0x87bc83[_0xfd77('0x2b')],qs[_0xfd77('0x31')](_0x3b724b['query']['fields']));_0x65ddcf[_0xfd77('0x30')]=_0x65ddcf[_0xfd77('0x30')][_0xfd77('0x32')]?_0x65ddcf[_0xfd77('0x30')]:_0x87bc83[_0xfd77('0x2b')];_0x65ddcf[_0xfd77('0x35')]=qs[_0xfd77('0x36')](_0x3b724b['query'][_0xfd77('0x36')]);_0x65ddcf[_0xfd77('0x37')]=qs['filters'](_[_0xfd77('0x52')](_0x3b724b[_0xfd77('0x2c')],_0x87bc83[_0xfd77('0x2e')]));if(_0x3b724b[_0xfd77('0x2c')][_0xfd77('0x38')]){_0x65ddcf['where']=_['merge'](_0x65ddcf['where'],{'$or':_[_0xfd77('0x29')](_0x65ddcf[_0xfd77('0x30')],function(_0x5e5354){var _0x357264={};_0x357264[_0x5e5354]={'$like':'%'+_0x3b724b[_0xfd77('0x2c')][_0xfd77('0x38')]+'%'};return _0x357264;})});}_0x65ddcf=_[_0xfd77('0x39')]({},_0x65ddcf,_0x3b724b[_0xfd77('0x3a')]);return _0x3946f4[_0xfd77('0x51')](_0x65ddcf);}})[_0xfd77('0x26')](function(_0x3d7c4a){if(_0x3d7c4a){_0x43c82e=_0x3d7c4a[_0xfd77('0x32')];if(!_0x3b724b[_0xfd77('0x2c')]['hasOwnProperty']('nolimit')){_0x65ddcf[_0xfd77('0x34')]=qs[_0xfd77('0x34')](_0x3b724b[_0xfd77('0x2c')][_0xfd77('0x34')]);_0x65ddcf[_0xfd77('0x1a')]=qs[_0xfd77('0x1a')](_0x3b724b['query']['offset']);}return _0x3946f4[_0xfd77('0x51')](_0x65ddcf);}})[_0xfd77('0x26')](function(_0x3cc223){if(_0x3cc223){return _0x3cc223?{'count':_0x43c82e,'rows':_0x3cc223}:null;}})['then'](respondWithResult(_0x12e204,null))[_0xfd77('0x3f')](handleError(_0x12e204,null));};exports[_0xfd77('0x53')]=function(_0x2324e0,_0x5f16d1,_0x18501b){var _0x108b85={};var _0x2d94f7={};var _0x20001d;var _0x4e332e;return db[_0xfd77('0x2a')]['findOne']({'where':{'id':_0x2324e0['params']['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x5f16d1,null))['then'](function(_0xbc6ec3){if(_0xbc6ec3){_0x20001d=_0xbc6ec3;_0x2d94f7[_0xfd77('0x2b')]=_[_0xfd77('0x2d')](db[_0xfd77('0x4f')][_0xfd77('0x41')]);_0x2d94f7[_0xfd77('0x2c')]=_[_0xfd77('0x2d')](_0x2324e0[_0xfd77('0x2c')]);_0x2d94f7['filters']=_[_0xfd77('0x2f')](_0x2d94f7['model'],_0x2d94f7[_0xfd77('0x2c')]);_0x108b85['attributes']=_['intersection'](_0x2d94f7[_0xfd77('0x2b')],qs[_0xfd77('0x31')](_0x2324e0['query']['fields']));_0x108b85[_0xfd77('0x30')]=_0x108b85[_0xfd77('0x30')][_0xfd77('0x32')]?_0x108b85[_0xfd77('0x30')]:_0x2d94f7['model'];_0x108b85['order']=qs[_0xfd77('0x36')](_0x2324e0['query']['sort']);_0x108b85[_0xfd77('0x37')]=qs[_0xfd77('0x2e')](_[_0xfd77('0x52')](_0x2324e0[_0xfd77('0x2c')],_0x2d94f7[_0xfd77('0x2e')]));if(_0x2324e0[_0xfd77('0x2c')]['filter']){_0x108b85[_0xfd77('0x37')]=_[_0xfd77('0x39')](_0x108b85[_0xfd77('0x37')],{'$or':_[_0xfd77('0x29')](_0x108b85[_0xfd77('0x30')],function(_0x230e4f){var _0x262e04={};_0x262e04[_0x230e4f]={'$like':'%'+_0x2324e0[_0xfd77('0x2c')][_0xfd77('0x38')]+'%'};return _0x262e04;})});}_0x108b85=_[_0xfd77('0x39')]({},_0x108b85,_0x2324e0['options']);return _0x20001d['getAnyConditions'](_0x108b85);}})[_0xfd77('0x26')](function(_0x4ea9a8){if(_0x4ea9a8){_0x4e332e=_0x4ea9a8[_0xfd77('0x32')];if(!_0x2324e0['query'][_0xfd77('0x54')](_0xfd77('0x33'))){_0x108b85[_0xfd77('0x34')]=qs[_0xfd77('0x34')](_0x2324e0[_0xfd77('0x2c')][_0xfd77('0x34')]);_0x108b85[_0xfd77('0x1a')]=qs['offset'](_0x2324e0['query']['offset']);}return _0x20001d[_0xfd77('0x53')](_0x108b85);}})[_0xfd77('0x26')](function(_0x3af310){if(_0x3af310){return _0x3af310?{'count':_0x4e332e,'rows':_0x3af310}:null;}})[_0xfd77('0x26')](respondWithResult(_0x5f16d1,null))[_0xfd77('0x3f')](handleError(_0x5f16d1,null));};exports['addAction']=function(_0x157374,_0x250aa8,_0x12f3e4){if(_0x157374[_0xfd77('0x43')]['id']){delete _0x157374[_0xfd77('0x43')]['id'];}return db[_0xfd77('0x2a')]['find']({'where':{'id':_0x157374['params']['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x250aa8,null))['then'](function(_0xb47097){if(_0xb47097){_0x157374[_0xfd77('0x43')]['TriggerId']=_0xb47097['id'];return db[_0xfd77('0x55')][_0xfd77('0x42')](_0x157374[_0xfd77('0x43')]);}})[_0xfd77('0x26')](respondWithResult(_0x250aa8,null))[_0xfd77('0x3f')](handleError(_0x250aa8,null));};exports[_0xfd77('0x56')]=function(_0x4de094,_0x4b91a1,_0x2f51a1){var _0x212bd2={};var _0xcc6d0d={};var _0x1926ff;var _0x5dd2e5;return db['Trigger'][_0xfd77('0x57')]({'where':{'id':_0x4de094[_0xfd77('0x4d')]['id']}})[_0xfd77('0x26')](handleEntityNotFound(_0x4b91a1,null))['then'](function(_0x5377b6){if(_0x5377b6){_0x1926ff=_0x5377b6;_0xcc6d0d[_0xfd77('0x2b')]=_[_0xfd77('0x2d')](db[_0xfd77('0x55')][_0xfd77('0x41')]);_0xcc6d0d[_0xfd77('0x2c')]=_[_0xfd77('0x2d')](_0x4de094[_0xfd77('0x2c')]);_0xcc6d0d[_0xfd77('0x2e')]=_[_0xfd77('0x2f')](_0xcc6d0d[_0xfd77('0x2b')],_0xcc6d0d['query']);_0x212bd2[_0xfd77('0x30')]=_[_0xfd77('0x2f')](_0xcc6d0d['model'],qs[_0xfd77('0x31')](_0x4de094[_0xfd77('0x2c')][_0xfd77('0x31')]));_0x212bd2[_0xfd77('0x30')]=_0x212bd2['attributes']['length']?_0x212bd2['attributes']:_0xcc6d0d[_0xfd77('0x2b')];_0x212bd2[_0xfd77('0x35')]=qs[_0xfd77('0x36')](_0x4de094[_0xfd77('0x2c')][_0xfd77('0x36')]);_0x212bd2[_0xfd77('0x37')]=qs['filters'](_[_0xfd77('0x52')](_0x4de094[_0xfd77('0x2c')],_0xcc6d0d['filters']));if(_0x4de094[_0xfd77('0x2c')][_0xfd77('0x38')]){_0x212bd2[_0xfd77('0x37')]=_[_0xfd77('0x39')](_0x212bd2[_0xfd77('0x37')],{'$or':_['map'](_0x212bd2[_0xfd77('0x30')],function(_0x2491fa){var _0x529e4d={};_0x529e4d[_0x2491fa]={'$like':'%'+_0x4de094['query']['filter']+'%'};return _0x529e4d;})});}_0x212bd2=_['merge']({},_0x212bd2,_0x4de094['options']);return _0x1926ff[_0xfd77('0x56')](_0x212bd2);}})[_0xfd77('0x26')](function(_0x11e5d6){if(_0x11e5d6){_0x5dd2e5=_0x11e5d6['length'];if(!_0x4de094[_0xfd77('0x2c')]['hasOwnProperty'](_0xfd77('0x33'))){_0x212bd2[_0xfd77('0x34')]=qs[_0xfd77('0x34')](_0x4de094['query'][_0xfd77('0x34')]);_0x212bd2[_0xfd77('0x1a')]=qs['offset'](_0x4de094[_0xfd77('0x2c')]['offset']);}return _0x1926ff['getActions'](_0x212bd2);}})[_0xfd77('0x26')](function(_0x370d37){if(_0x370d37){return _0x370d37?{'count':_0x5dd2e5,'rows':_0x370d37}:null;}})[_0xfd77('0x26')](respondWithResult(_0x4b91a1,null))[_0xfd77('0x3f')](handleError(_0x4b91a1,null));};
\ No newline at end of file
index 2f3639b..3f8726d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ea=['Trigger','tools_triggers','lodash','../../config/logger','api','moment','path','../../config/environment','./trigger.attributes','exports','define'];(function(_0x4f8d67,_0x345c88){var _0x1a27f7=function(_0x28c686){while(--_0x28c686){_0x4f8d67['push'](_0x4f8d67['shift']());}};_0x1a27f7(++_0x345c88);}(_0x48ea,0x9c));var _0xa48e=function(_0x32a2be,_0x4784a3){_0x32a2be=_0x32a2be-0x0;var _0x1b62c7=_0x48ea[_0x32a2be];return _0x1b62c7;};'use strict';var _=require(_0xa48e('0x0'));var util=require('util');var logger=require(_0xa48e('0x1'))(_0xa48e('0x2'));var moment=require(_0xa48e('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa48e('0x4'));var rimraf=require('rimraf');var config=require(_0xa48e('0x5'));var attributes=require(_0xa48e('0x6'));module[_0xa48e('0x7')]=function(_0x4387b5,_0x2b058d){return _0x4387b5[_0xa48e('0x8')](_0xa48e('0x9'),attributes,{'tableName':_0xa48e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d6a=['./trigger.attributes','exports','define','Trigger','tools_triggers','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x7b7d33,_0x45bab9){var _0x161fc0=function(_0x5e2b45){while(--_0x5e2b45){_0x7b7d33['push'](_0x7b7d33['shift']());}};_0x161fc0(++_0x45bab9);}(_0x0d6a,0xc9));var _0xa0d6=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x0d6a[_0x5f0089];return _0x193892;};'use strict';var _=require(_0xa0d6('0x0'));var util=require(_0xa0d6('0x1'));var logger=require('../../config/logger')(_0xa0d6('0x2'));var moment=require(_0xa0d6('0x3'));var BPromise=require(_0xa0d6('0x4'));var rp=require(_0xa0d6('0x5'));var fs=require('fs');var path=require(_0xa0d6('0x6'));var rimraf=require(_0xa0d6('0x7'));var config=require(_0xa0d6('0x8'));var attributes=require(_0xa0d6('0x9'));module[_0xa0d6('0xa')]=function(_0x179a70,_0x4857ce){return _0x179a70[_0xa0d6('0xb')](_0xa0d6('0xc'),attributes,{'tableName':_0xa0d6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c63de43..99e9936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa583=['client','request','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetTrigger','findAll','options','where','attributes','limit','include','map','model','then','catch','ShowTrigger','Trigger','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x37faaf,_0x24fd0c){var _0x360231=function(_0x55379e){while(--_0x55379e){_0x37faaf['push'](_0x37faaf['shift']());}};_0x360231(++_0x24fd0c);}(_0xa583,0x158));var _0x3a58=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa583[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x3a58('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3a58('0x1'));var fs=require('fs');var Redis=require(_0x3a58('0x2'));var db=require(_0x3a58('0x3'))['db'];var utils=require(_0x3a58('0x4'));var logger=require(_0x3a58('0x5'))(_0x3a58('0x6'));var config=require(_0x3a58('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3a58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cdf5a,_0x58a301,_0x1660a3){return new BPromise(function(_0x5a90d8,_0xb81d63){return client[_0x3a58('0x9')](_0x2cdf5a,_0x1660a3)['then'](function(_0x15469e){logger[_0x3a58('0xa')](_0x3a58('0xb'),_0x58a301,_0x3a58('0xc'));logger[_0x3a58('0xd')]('Trigger,\x20%s,\x20%s,\x20%s',_0x58a301,_0x3a58('0xc'),JSON[_0x3a58('0xe')](_0x15469e));if(_0x15469e['error']){if(_0x15469e[_0x3a58('0xf')][_0x3a58('0x10')]===0x1f4){logger['error'](_0x3a58('0xb'),_0x58a301,_0x15469e[_0x3a58('0xf')][_0x3a58('0x11')]);return _0xb81d63(_0x15469e[_0x3a58('0xf')][_0x3a58('0x11')]);}logger[_0x3a58('0xf')](_0x3a58('0xb'),_0x58a301,_0x15469e[_0x3a58('0xf')][_0x3a58('0x11')]);return _0x5a90d8(_0x15469e['error'][_0x3a58('0x11')]);}else{logger[_0x3a58('0xa')](_0x3a58('0xb'),_0x58a301,_0x3a58('0xc'));_0x5a90d8(_0x15469e[_0x3a58('0x12')][_0x3a58('0x11')]);}})['catch'](function(_0x16b84e){logger[_0x3a58('0xf')]('Trigger,\x20%s,\x20%s',_0x58a301,_0x16b84e);_0xb81d63(_0x16b84e);});});}exports[_0x3a58('0x13')]=function(_0x1dc869){var _0x4286c4=this;return new Promise(function(_0x3f419e,_0x33b234){return db['Trigger'][_0x3a58('0x14')]({'raw':_0x1dc869[_0x3a58('0x15')]?_0x1dc869[_0x3a58('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1dc869[_0x3a58('0x15')]?_0x1dc869[_0x3a58('0x15')][_0x3a58('0x16')]||null:null,'attributes':_0x1dc869[_0x3a58('0x15')]?_0x1dc869[_0x3a58('0x15')][_0x3a58('0x17')]||null:null,'limit':_0x1dc869[_0x3a58('0x15')]?_0x1dc869[_0x3a58('0x15')][_0x3a58('0x18')]||null:null,'include':_0x1dc869['options']?_0x1dc869[_0x3a58('0x15')][_0x3a58('0x19')]?_[_0x3a58('0x1a')](_0x1dc869[_0x3a58('0x15')][_0x3a58('0x19')],function(_0x293ccd){return{'model':db[_0x293ccd[_0x3a58('0x1b')]],'as':_0x293ccd['as'],'attributes':_0x293ccd[_0x3a58('0x17')],'include':_0x293ccd['include']?_[_0x3a58('0x1a')](_0x293ccd[_0x3a58('0x19')],function(_0x2ee018){return{'model':db[_0x2ee018[_0x3a58('0x1b')]],'as':_0x2ee018['as'],'attributes':_0x2ee018[_0x3a58('0x17')],'include':_0x2ee018[_0x3a58('0x19')]?_[_0x3a58('0x1a')](_0x2ee018[_0x3a58('0x19')],function(_0x30feb5){return{'model':db[_0x30feb5[_0x3a58('0x1b')]],'as':_0x30feb5['as'],'attributes':_0x30feb5[_0x3a58('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3a58('0x1c')](function(_0x34be26){logger[_0x3a58('0xa')](_0x3a58('0x13'),_0x1dc869);logger['debug'](_0x3a58('0x13'),_0x1dc869,JSON[_0x3a58('0xe')](_0x34be26));_0x3f419e(_0x34be26);})[_0x3a58('0x1d')](function(_0x2f7c42){logger['error'](_0x3a58('0x13'),_0x2f7c42[_0x3a58('0x11')],_0x1dc869);_0x33b234(_0x4286c4['error'](0x1f4,_0x2f7c42[_0x3a58('0x11')]));});});};exports[_0x3a58('0x1e')]=function(_0x3c3bf6){var _0x415659=this;return new Promise(function(_0x1773bf,_0x2308a3){return db[_0x3a58('0x1f')]['find']({'raw':_0x3c3bf6[_0x3a58('0x15')]?_0x3c3bf6['options']['raw']===undefined?!![]:![]:!![],'where':_0x3c3bf6[_0x3a58('0x15')]?_0x3c3bf6[_0x3a58('0x15')][_0x3a58('0x16')]||null:null,'attributes':_0x3c3bf6[_0x3a58('0x15')]?_0x3c3bf6[_0x3a58('0x15')]['attributes']||null:null,'include':_0x3c3bf6[_0x3a58('0x15')]?_0x3c3bf6[_0x3a58('0x15')][_0x3a58('0x19')]?_[_0x3a58('0x1a')](_0x3c3bf6[_0x3a58('0x15')]['include'],function(_0x2a995a){return{'model':db[_0x2a995a[_0x3a58('0x1b')]],'as':_0x2a995a['as'],'attributes':_0x2a995a[_0x3a58('0x17')],'include':_0x2a995a[_0x3a58('0x19')]?_[_0x3a58('0x1a')](_0x2a995a[_0x3a58('0x19')],function(_0x1e6ece){return{'model':db[_0x1e6ece[_0x3a58('0x1b')]],'as':_0x1e6ece['as'],'attributes':_0x1e6ece[_0x3a58('0x17')],'include':_0x1e6ece[_0x3a58('0x19')]?_[_0x3a58('0x1a')](_0x1e6ece['include'],function(_0x4ceddb){return{'model':db[_0x4ceddb[_0x3a58('0x1b')]],'as':_0x4ceddb['as'],'attributes':_0x4ceddb[_0x3a58('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3a58('0x1c')](function(_0x3bc44a){logger[_0x3a58('0xa')](_0x3a58('0x1e'),_0x3c3bf6);logger[_0x3a58('0xd')](_0x3a58('0x1e'),_0x3c3bf6,JSON[_0x3a58('0xe')](_0x3bc44a));_0x1773bf(_0x3bc44a);})[_0x3a58('0x1d')](function(_0x2f7611){logger['error'](_0x3a58('0x1e'),_0x2f7611['message'],_0x3c3bf6);_0x2308a3(_0x415659['error'](0x1f4,_0x2f7611[_0x3a58('0x11')]));});});};
\ No newline at end of file
+var _0x15c5=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','limit','map','model','include','ShowTrigger','find','lodash','util','moment'];(function(_0x1a9112,_0x4b2e0f){var _0x313246=function(_0x38d774){while(--_0x38d774){_0x1a9112['push'](_0x1a9112['shift']());}};_0x313246(++_0x4b2e0f);}(_0x15c5,0xb6));var _0x515c=function(_0x5aef17,_0x592cd4){_0x5aef17=_0x5aef17-0x0;var _0x43f9d0=_0x15c5[_0x5aef17];return _0x43f9d0;};'use strict';var _=require(_0x515c('0x0'));var util=require(_0x515c('0x1'));var moment=require(_0x515c('0x2'));var BPromise=require('bluebird');var rs=require(_0x515c('0x3'));var fs=require('fs');var Redis=require(_0x515c('0x4'));var db=require(_0x515c('0x5'))['db'];var utils=require(_0x515c('0x6'));var logger=require(_0x515c('0x7'))(_0x515c('0x8'));var config=require(_0x515c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x515c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43ef07,_0x1893b8,_0xe42f07){return new BPromise(function(_0x2cb2f6,_0x52e082){return client[_0x515c('0xb')](_0x43ef07,_0xe42f07)[_0x515c('0xc')](function(_0x248fec){logger[_0x515c('0xd')](_0x515c('0xe'),_0x1893b8,'request\x20sent');logger[_0x515c('0xf')](_0x515c('0x10'),_0x1893b8,'request\x20sent',JSON[_0x515c('0x11')](_0x248fec));if(_0x248fec[_0x515c('0x12')]){if(_0x248fec[_0x515c('0x12')][_0x515c('0x13')]===0x1f4){logger[_0x515c('0x12')](_0x515c('0xe'),_0x1893b8,_0x248fec[_0x515c('0x12')][_0x515c('0x14')]);return _0x52e082(_0x248fec[_0x515c('0x12')][_0x515c('0x14')]);}logger[_0x515c('0x12')]('Trigger,\x20%s,\x20%s',_0x1893b8,_0x248fec[_0x515c('0x12')][_0x515c('0x14')]);return _0x2cb2f6(_0x248fec['error']['message']);}else{logger['info'](_0x515c('0xe'),_0x1893b8,_0x515c('0x15'));_0x2cb2f6(_0x248fec[_0x515c('0x16')][_0x515c('0x14')]);}})[_0x515c('0x17')](function(_0x31a3a2){logger['error'](_0x515c('0xe'),_0x1893b8,_0x31a3a2);_0x52e082(_0x31a3a2);});});}exports[_0x515c('0x18')]=function(_0x296af6){var _0x2d9f2f=this;return new Promise(function(_0x2e89fc,_0x1521a7){return db[_0x515c('0x19')][_0x515c('0x1a')]({'raw':_0x296af6[_0x515c('0x1b')]?_0x296af6[_0x515c('0x1b')][_0x515c('0x1c')]===undefined?!![]:![]:!![],'where':_0x296af6[_0x515c('0x1b')]?_0x296af6[_0x515c('0x1b')][_0x515c('0x1d')]||null:null,'attributes':_0x296af6['options']?_0x296af6['options'][_0x515c('0x1e')]||null:null,'limit':_0x296af6[_0x515c('0x1b')]?_0x296af6[_0x515c('0x1b')][_0x515c('0x1f')]||null:null,'include':_0x296af6['options']?_0x296af6[_0x515c('0x1b')]['include']?_[_0x515c('0x20')](_0x296af6[_0x515c('0x1b')]['include'],function(_0x361d44){return{'model':db[_0x361d44[_0x515c('0x21')]],'as':_0x361d44['as'],'attributes':_0x361d44[_0x515c('0x1e')],'include':_0x361d44[_0x515c('0x22')]?_['map'](_0x361d44['include'],function(_0x265871){return{'model':db[_0x265871['model']],'as':_0x265871['as'],'attributes':_0x265871[_0x515c('0x1e')],'include':_0x265871[_0x515c('0x22')]?_[_0x515c('0x20')](_0x265871['include'],function(_0x3e55de){return{'model':db[_0x3e55de[_0x515c('0x21')]],'as':_0x3e55de['as'],'attributes':_0x3e55de[_0x515c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x515c('0xc')](function(_0x1fc84c){logger[_0x515c('0xd')](_0x515c('0x18'),_0x296af6);logger[_0x515c('0xf')]('GetTrigger',_0x296af6,JSON['stringify'](_0x1fc84c));_0x2e89fc(_0x1fc84c);})[_0x515c('0x17')](function(_0x41cdb0){logger['error'](_0x515c('0x18'),_0x41cdb0[_0x515c('0x14')],_0x296af6);_0x1521a7(_0x2d9f2f[_0x515c('0x12')](0x1f4,_0x41cdb0['message']));});});};exports[_0x515c('0x23')]=function(_0x5988e5){var _0x346d21=this;return new Promise(function(_0x9a4ab2,_0x9a0f93){return db[_0x515c('0x19')][_0x515c('0x24')]({'raw':_0x5988e5[_0x515c('0x1b')]?_0x5988e5[_0x515c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5988e5[_0x515c('0x1b')]?_0x5988e5[_0x515c('0x1b')]['where']||null:null,'attributes':_0x5988e5[_0x515c('0x1b')]?_0x5988e5[_0x515c('0x1b')]['attributes']||null:null,'include':_0x5988e5[_0x515c('0x1b')]?_0x5988e5['options']['include']?_[_0x515c('0x20')](_0x5988e5[_0x515c('0x1b')][_0x515c('0x22')],function(_0x41cd2f){return{'model':db[_0x41cd2f[_0x515c('0x21')]],'as':_0x41cd2f['as'],'attributes':_0x41cd2f[_0x515c('0x1e')],'include':_0x41cd2f[_0x515c('0x22')]?_[_0x515c('0x20')](_0x41cd2f[_0x515c('0x22')],function(_0x445e57){return{'model':db[_0x445e57[_0x515c('0x21')]],'as':_0x445e57['as'],'attributes':_0x445e57['attributes'],'include':_0x445e57['include']?_['map'](_0x445e57[_0x515c('0x22')],function(_0x5abad1){return{'model':db[_0x5abad1[_0x515c('0x21')]],'as':_0x5abad1['as'],'attributes':_0x5abad1['attributes']};}):[]};}):[]};}):[]:[]})[_0x515c('0xc')](function(_0x29335d){logger[_0x515c('0xd')]('ShowTrigger',_0x5988e5);logger[_0x515c('0xf')](_0x515c('0x23'),_0x5988e5,JSON[_0x515c('0x11')](_0x29335d));_0x9a4ab2(_0x29335d);})[_0x515c('0x17')](function(_0x896db4){logger[_0x515c('0x12')](_0x515c('0x23'),_0x896db4[_0x515c('0x14')],_0x5988e5);_0x9a0f93(_0x346d21[_0x515c('0x12')](0x1f4,_0x896db4['message']));});});};
\ No newline at end of file
index 7be0034..eb6588c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f7=['isAuthenticated','post','/:id/clone','clone','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','index','/:id'];(function(_0x48dad2,_0x8d4555){var _0x4f2cc9=function(_0x130283){while(--_0x130283){_0x48dad2['push'](_0x48dad2['shift']());}};_0x4f2cc9(++_0x8d4555);}(_0x32f7,0x144));var _0x732f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x32f7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x732f('0x0'));var path=require(_0x732f('0x1'));var timeout=require(_0x732f('0x2'));var express=require(_0x732f('0x3'));var router=express[_0x732f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x732f('0x5'));var interaction=require(_0x732f('0x6'));var config=require(_0x732f('0x7'));var controller=require(_0x732f('0x8'));router[_0x732f('0x9')]('/',auth['isAuthenticated'](),controller[_0x732f('0xa')]);router[_0x732f('0x9')](_0x732f('0xb'),auth[_0x732f('0xc')](),controller['show']);router[_0x732f('0xd')](_0x732f('0xe'),auth[_0x732f('0xc')](),controller[_0x732f('0xf')]);router[_0x732f('0xd')]('/',auth[_0x732f('0xc')](),controller[_0x732f('0x10')]);router['put'](_0x732f('0xb'),auth[_0x732f('0xc')](),controller[_0x732f('0x11')]);router[_0x732f('0x12')](_0x732f('0xb'),auth[_0x732f('0xc')](),controller[_0x732f('0x13')]);module[_0x732f('0x14')]=router;
\ No newline at end of file
+var _0x65cd=['clone','create','put','update','delete','exports','multer','util','path','connect-timeout','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x2acda3,_0x493016){var _0x4f2dd4=function(_0x378a56){while(--_0x378a56){_0x2acda3['push'](_0x2acda3['shift']());}};_0x4f2dd4(++_0x493016);}(_0x65cd,0xcc));var _0xd65c=function(_0x485865,_0x11d29a){_0x485865=_0x485865-0x0;var _0x11ef06=_0x65cd[_0x485865];return _0x11ef06;};'use strict';var multer=require(_0xd65c('0x0'));var util=require(_0xd65c('0x1'));var path=require(_0xd65c('0x2'));var timeout=require(_0xd65c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd65c('0x4'));var controller=require(_0xd65c('0x5'));router['get']('/',auth[_0xd65c('0x6')](),controller[_0xd65c('0x7')]);router[_0xd65c('0x8')](_0xd65c('0x9'),auth[_0xd65c('0x6')](),controller[_0xd65c('0xa')]);router[_0xd65c('0xb')]('/:id/clone',auth[_0xd65c('0x6')](),controller[_0xd65c('0xc')]);router[_0xd65c('0xb')]('/',auth[_0xd65c('0x6')](),controller[_0xd65c('0xd')]);router[_0xd65c('0xe')]('/:id',auth[_0xd65c('0x6')](),controller[_0xd65c('0xf')]);router[_0xd65c('0x10')](_0xd65c('0x9'),auth[_0xd65c('0x6')](),controller['destroy']);module[_0xd65c('0x11')]=router;
\ No newline at end of file
index e0ae831..b64fcf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d2=['uac','uas','pai','fingerprint','active','passive','actpass','dynamic','nonat','update','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','auto','rfc2833','outgoing','yes','force_rport,comedia','nat','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate'];(function(_0x5dc45d,_0x55f90f){var _0x4ce697=function(_0x4e6e21){while(--_0x4e6e21){_0x5dc45d['push'](_0x5dc45d['shift']());}};_0x4ce697(++_0x55f90f);}(_0xb5d2,0x183));var _0x2b5d=function(_0x1f0b68,_0x4ac25b){_0x1f0b68=_0x1f0b68-0x0;var _0x398288=_0xb5d2[_0x1f0b68];return _0x398288;};'use strict';var Sequelize=require(_0x2b5d('0x0'));module[_0x2b5d('0x1')]={'name':{'type':Sequelize[_0x2b5d('0x2')],'allowNull':![],'unique':_0x2b5d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x5'),'user',_0x2b5d('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x2b5d('0x2')],'allowNull':![],'defaultValue':_0x2b5d('0x7')},'callingpres':{'type':Sequelize[_0x2b5d('0x4')]('ALLOWED_NOT_SCREENED',_0x2b5d('0x8'),'ALLOWED_FAILED_SCREEN',_0x2b5d('0x9'),'PROHIB_NOT_SCREENED',_0x2b5d('0xa'),_0x2b5d('0xb'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0x2b5d('0x2')]},'secret':{'type':Sequelize[_0x2b5d('0x2')]},'md5secret':{'type':Sequelize[_0x2b5d('0x2')]},'remotesecret':{'type':Sequelize[_0x2b5d('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0x2b5d('0xc'),'set':function(_0x4131d0){this[_0x2b5d('0xd')](_0x2b5d('0xe'),_0x4131d0?_0x4131d0[_0x2b5d('0xf')](','):null);},'get':function(){return this[_0x2b5d('0x10')](_0x2b5d('0xe'))?this[_0x2b5d('0x10')](_0x2b5d('0xe'))[_0x2b5d('0x11')](','):null;},'comment':_0x2b5d('0x12')},'dtmfmode':{'type':Sequelize[_0x2b5d('0x4')]('rfc2833',_0x2b5d('0x13'),'shortinfo','inband',_0x2b5d('0x14')),'defaultValue':_0x2b5d('0x15')},'directmedia':{'type':Sequelize[_0x2b5d('0x4')]('yes','no','nonat','update',_0x2b5d('0x16')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x2b5d('0x2')]},'directmediadeny':{'type':Sequelize[_0x2b5d('0x2')]},'nat':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':_0x2b5d('0x18'),'set':function(_0x32d445){this[_0x2b5d('0xd')]('nat',_0x32d445?_0x32d445[_0x2b5d('0xf')](','):null);},'get':function(){return this[_0x2b5d('0x10')]('nat')?this['getDataValue'](_0x2b5d('0x19'))[_0x2b5d('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x2b5d('0x2')]},'pickupgroup':{'type':Sequelize[_0x2b5d('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x2b5d('0x2')]},'language':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x2b5d('0x2')],'allowNull':![],'defaultValue':_0x2b5d('0x1a'),'set':function(_0xd52d12){this[_0x2b5d('0xd')](_0x2b5d('0x1b'),_0xd52d12?_0xd52d12[_0x2b5d('0xf')](';'):_0x2b5d('0x1a'));},'get':function(){return this[_0x2b5d('0x10')](_0x2b5d('0x1b'))?this[_0x2b5d('0x10')](_0x2b5d('0x1b'))[_0x2b5d('0x11')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'insecure':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':'port,invite','set':function(_0x4bfeac){this[_0x2b5d('0xd')](_0x2b5d('0x1c'),_0x4bfeac?_0x4bfeac[_0x2b5d('0xf')](','):null);},'get':function(){return this[_0x2b5d('0x10')](_0x2b5d('0x1c'))?this[_0x2b5d('0x10')](_0x2b5d('0x1c'))[_0x2b5d('0x11')](','):null;},'comment':_0x2b5d('0x1d')},'trustrpid':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no',_0x2b5d('0x1e'))},'promiscredir':{'type':Sequelize[_0x2b5d('0x4')]('yes','no')},'useclientcode':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'accountcode':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'setvar':{'type':Sequelize[_0x2b5d('0x2')]},'callerid':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'allowoverlap':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'allowsubscribe':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'allowtransfer':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'ignoresdpversion':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0x2b5d('0x2')]},'template':{'type':Sequelize[_0x2b5d('0x2')]},'videosupport':{'type':Sequelize[_0x2b5d('0x4')]('yes','no',_0x2b5d('0x20')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'mailbox':{'type':Sequelize[_0x2b5d('0x2')]},'session_timers':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x21'),_0x2b5d('0x22'),_0x2b5d('0x23'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'session_refresher':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x24'),'uas'),'defaultValue':_0x2b5d('0x25')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x2b5d('0x2')]},'fromdomain':{'type':Sequelize[_0x2b5d('0x2')]},'fromuser':{'type':Sequelize[_0x2b5d('0x2')]},'port':{'type':Sequelize[_0x2b5d('0x1f')](0x5)},'qualify':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':_0x2b5d('0x17')},'keepalive':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'defaultip':{'type':Sequelize[_0x2b5d('0x2')]},'defaultuser':{'type':Sequelize[_0x2b5d('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'sendrpid':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no',_0x2b5d('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x2b5d('0x2')]},'timert1':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'timerb':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0x2b5d('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x2b5d('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x2b5d('0x2')]},'use_q850_reason':{'type':Sequelize[_0x2b5d('0x2')]},'maxforwards':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'encryption':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'icesupport':{'type':Sequelize['ENUM']('yes','no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x2b5d('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no',_0x2b5d('0x27'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x2b5d('0x1f')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x2b5d('0x2')]},'dtlscapath':{'type':Sequelize[_0x2b5d('0x2')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x2b5d('0x28'),_0x2b5d('0x29'),_0x2b5d('0x2a')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x2b5d('0x2')]},'recordofffeature':{'type':Sequelize[_0x2b5d('0x2')]},'call_limit':{'type':Sequelize[_0x2b5d('0x1f')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x2b5d('0x17'),'no')},'subscribemwi':{'type':Sequelize[_0x2b5d('0x4')](_0x2b5d('0x17'),'no')},'vmexten':{'type':Sequelize[_0x2b5d('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x2b5d('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':_0x2b5d('0x2b')},'canreinvite':{'type':Sequelize[_0x2b5d('0x4')]('yes','no',_0x2b5d('0x2c'),_0x2b5d('0x2d'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x2b5d('0x2')]},'otherFields':{'type':Sequelize[_0x2b5d('0x2')]},'active':{'type':Sequelize[_0x2b5d('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2b5d('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x8bbd=['actpass','dynamic','nonat','update,nonat','sequelize','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','update','setDataValue','join','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','INTEGER','accept','refuse','uac','uas','pai','fingerprint','certificate','active','passive'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8bbd,0x9d));var _0xd8bb=function(_0x4faab5,_0x3474c0){_0x4faab5=_0x4faab5-0x0;var _0xc0f008=_0x8bbd[_0x4faab5];return _0xc0f008;};'use strict';var Sequelize=require(_0xd8bb('0x0'));module['exports']={'name':{'type':Sequelize[_0xd8bb('0x1')],'allowNull':![],'unique':_0xd8bb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x4'),_0xd8bb('0x5'),_0xd8bb('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xd8bb('0x1')],'allowNull':![],'defaultValue':_0xd8bb('0x7')},'callingpres':{'type':Sequelize[_0xd8bb('0x3')]('ALLOWED_NOT_SCREENED',_0xd8bb('0x8'),_0xd8bb('0x9'),_0xd8bb('0xa'),_0xd8bb('0xb'),_0xd8bb('0xc'),_0xd8bb('0xd'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xd8bb('0x1')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':_0xd8bb('0xe'),'set':function(_0x4c37a1){this['setDataValue'](_0xd8bb('0xf'),_0x4c37a1?_0x4c37a1['join'](','):null);},'get':function(){return this[_0xd8bb('0x10')]('transport')?this['getDataValue']('transport')[_0xd8bb('0x11')](','):null;},'comment':_0xd8bb('0x12')},'dtmfmode':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x13'),'info',_0xd8bb('0x14'),_0xd8bb('0x15'),'auto'),'defaultValue':_0xd8bb('0x13')},'directmedia':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no','nonat',_0xd8bb('0x17'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xd8bb('0x1')]},'directmediadeny':{'type':Sequelize[_0xd8bb('0x1')]},'nat':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':'force_rport,comedia','set':function(_0xe29e47){this[_0xd8bb('0x18')]('nat',_0xe29e47?_0xe29e47[_0xd8bb('0x19')](','):null);},'get':function(){return this[_0xd8bb('0x10')](_0xd8bb('0x1a'))?this[_0xd8bb('0x10')](_0xd8bb('0x1a'))[_0xd8bb('0x11')](','):null;},'comment':_0xd8bb('0x1b')},'callgroup':{'type':Sequelize[_0xd8bb('0x1')]},'namedcallgroup':{'type':Sequelize[_0xd8bb('0x1')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xd8bb('0x1')]},'language':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xd8bb('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':_0xd8bb('0x1c')},'allow':{'type':Sequelize[_0xd8bb('0x1')],'allowNull':![],'defaultValue':_0xd8bb('0x1d'),'set':function(_0x185f6f){this[_0xd8bb('0x18')](_0xd8bb('0x1e'),_0x185f6f?_0x185f6f[_0xd8bb('0x19')](';'):_0xd8bb('0x1d'));},'get':function(){return this[_0xd8bb('0x10')](_0xd8bb('0x1e'))?this[_0xd8bb('0x10')](_0xd8bb('0x1e'))[_0xd8bb('0x11')](';'):null;},'comment':_0xd8bb('0x1f')},'autoframing':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':'port,invite','set':function(_0x29cd3d){this['setDataValue'](_0xd8bb('0x20'),_0x29cd3d?_0x29cd3d[_0xd8bb('0x19')](','):null);},'get':function(){return this[_0xd8bb('0x10')](_0xd8bb('0x20'))?this['getDataValue'](_0xd8bb('0x20'))[_0xd8bb('0x11')](','):null;},'comment':_0xd8bb('0x21')},'trustrpid':{'type':Sequelize[_0xd8bb('0x3')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xd8bb('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no',_0xd8bb('0x22'))},'promiscredir':{'type':Sequelize[_0xd8bb('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xd8bb('0x1')]},'callerid':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':_0xd8bb('0x23')},'amaflags':{'type':Sequelize[_0xd8bb('0x1')]},'callcounter':{'type':Sequelize[_0xd8bb('0x3')]('yes','no'),'defaultValue':_0xd8bb('0x16')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0xd8bb('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xd8bb('0x1')]},'template':{'type':Sequelize[_0xd8bb('0x1')]},'videosupport':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no',_0xd8bb('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x26'),_0xd8bb('0x27'),'originate')},'session_expires':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x28'),_0xd8bb('0x29')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0xd8bb('0x1')]},'fromdomain':{'type':Sequelize[_0xd8bb('0x1')]},'fromuser':{'type':Sequelize[_0xd8bb('0x1')]},'port':{'type':Sequelize[_0xd8bb('0x25')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xd8bb('0x16'),'no'),'defaultValue':_0xd8bb('0x16')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xd8bb('0x1')]},'defaultuser':{'type':Sequelize[_0xd8bb('0x1')]},'rtptimeout':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no',_0xd8bb('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xd8bb('0x1')]},'callbackextension':{'type':Sequelize[_0xd8bb('0x1')]},'timert1':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'timerb':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xd8bb('0x1')]},'use_q850_reason':{'type':Sequelize[_0xd8bb('0x1')]},'maxforwards':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0xd8bb('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0xd8bb('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0xd8bb('0x3')]('yes','no',_0xd8bb('0x2b'),_0xd8bb('0x2c'))},'dtlsrekey':{'type':Sequelize[_0xd8bb('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0xd8bb('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0xd8bb('0x1')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xd8bb('0x1')]},'dtlssetup':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x2d'),_0xd8bb('0x2e'),_0xd8bb('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xd8bb('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0xd8bb('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xd8bb('0x1')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0xd8bb('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no')},'vmexten':{'type':Sequelize[_0xd8bb('0x1')]},'mohinterpret':{'type':Sequelize[_0xd8bb('0x1')]},'mohsuggest':{'type':Sequelize[_0xd8bb('0x1')]},'parkinglot':{'type':Sequelize[_0xd8bb('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0xd8bb('0x30')},'canreinvite':{'type':Sequelize[_0xd8bb('0x3')](_0xd8bb('0x16'),'no',_0xd8bb('0x31'),'update',_0xd8bb('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xd8bb('0x1')]},'otherFields':{'type':Sequelize[_0xd8bb('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xd8bb('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index 14f227e..d5cd154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','Trunks','UserProfileResource','destroy','stack','name','send','map','Trunk','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','attributes','find','clone','get','omit','updatedAt','body','createdAt','create','user','role','UserProfileSection','userProfileId','autoAssociation','join','server/files/templates/trunk.ejs','utf8'];(function(_0x440bb1,_0x49ea67){var _0x1116e5=function(_0x183042){while(--_0x183042){_0x440bb1['push'](_0x440bb1['shift']());}};_0x1116e5(++_0x49ea67);}(_0xbec5,0xe5));var _0x5bec=function(_0x254076,_0x5e7b8d){_0x254076=_0x254076-0x0;var _0x21a93e=_0xbec5[_0x254076];return _0x21a93e;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];var jayson=require(_0x5bec('0x19'));var client=jayson['client'][_0x5bec('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xaa984d,_0x35393a,_0x6888a4,_0x3198e0){return new BPromise(function(_0xcd6d90,_0x24dcd6){var _0x43fd2a=_0x3198e0||client;return _0x43fd2a[_0x5bec('0x1b')](_0xaa984d,_0x6888a4)[_0x5bec('0x1c')](function(_0x31b9e4){logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,'request\x20sent');logger['debug'](_0x5bec('0x1f'),_0x35393a,_0x5bec('0x20'),JSON[_0x5bec('0x21')](_0x31b9e4));if(_0x31b9e4[_0x5bec('0x22')]){if(_0x31b9e4['error']['code']===0x1f4){logger[_0x5bec('0x22')](_0x5bec('0x1e'),_0x35393a,_0x31b9e4['error'][_0x5bec('0x23')]);return _0x24dcd6(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x31b9e4[_0x5bec('0x22')]['message']);return _0xcd6d90(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}else{logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,_0x5bec('0x20'));_0xcd6d90(_0x31b9e4['result'][_0x5bec('0x23')]);}})['catch'](function(_0x2b2d26){logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x2b2d26);_0x24dcd6(_0x2b2d26);});});}function respondWithStatusCode(_0xa414f8,_0xbef70b){_0xbef70b=_0xbef70b||0xcc;return function(_0x4e0ca2){if(_0x4e0ca2){return _0xa414f8[_0x5bec('0x24')](_0xbef70b);}return _0xa414f8[_0x5bec('0x25')](_0xbef70b)[_0x5bec('0x26')]();};}function respondWithResult(_0x20da89,_0x226d55){_0x226d55=_0x226d55||0xc8;return function(_0x131143){if(_0x131143){return _0x20da89[_0x5bec('0x25')](_0x226d55)['json'](_0x131143);}};}function respondWithFilteredResult(_0x5b63ab,_0x5e44b3){return function(_0x2961bd){if(_0x2961bd){var _0x2cdd2f=typeof _0x5e44b3[_0x5bec('0x27')]==='undefined'&&typeof _0x5e44b3[_0x5bec('0x28')]===_0x5bec('0x29');var _0x57331b=_0x2961bd[_0x5bec('0x2a')];var _0x63ac8=_0x2cdd2f?0x0:_0x5e44b3['offset'];var _0x5336b3=_0x2cdd2f?_0x2961bd[_0x5bec('0x2a')]:_0x5e44b3[_0x5bec('0x27')]+_0x5e44b3[_0x5bec('0x28')];var _0x2c7a7b;if(_0x5336b3>=_0x57331b){_0x5336b3=_0x57331b;_0x2c7a7b=0xc8;}else{_0x2c7a7b=0xce;}_0x5b63ab[_0x5bec('0x25')](_0x2c7a7b);return _0x5b63ab[_0x5bec('0x2b')]('Content-Range',_0x63ac8+'-'+_0x5336b3+'/'+_0x57331b)[_0x5bec('0x2c')](_0x2961bd);}return null;};}function patchUpdates(_0x59b5b6){return function(_0x45863b){try{jsonpatch[_0x5bec('0x2d')](_0x45863b,_0x59b5b6,!![]);}catch(_0x3034c9){return BPromise[_0x5bec('0x2e')](_0x3034c9);}return _0x45863b['save']();};}function saveUpdates(_0x2b42c8,_0x1aba46){return function(_0xfc7d41){if(_0xfc7d41){return _0xfc7d41['update'](_0x2b42c8)[_0x5bec('0x1c')](function(_0x4cfb89){return _0x4cfb89;});}return null;};}function removeEntity(_0x14cdbf,_0x207192){return function(_0x29df14){if(_0x29df14){return _0x29df14['destroy']()[_0x5bec('0x1c')](function(){var _0x420ad4=_0x29df14['get']({'plain':!![]});var _0x34b441=_0x5bec('0x2f');return db[_0x5bec('0x30')][_0x5bec('0x31')]({'where':{'type':_0x34b441,'resourceId':_0x420ad4['id']}})[_0x5bec('0x1c')](function(){return _0x29df14;});})['then'](function(){_0x14cdbf[_0x5bec('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d3793,_0x384f04){return function(_0x182b86){if(!_0x182b86){_0x2d3793[_0x5bec('0x24')](0x194);}return _0x182b86;};}function handleError(_0x2e421e,_0x1923fc){_0x1923fc=_0x1923fc||0x1f4;return function(_0x49c8ef){logger[_0x5bec('0x22')](_0x49c8ef[_0x5bec('0x32')]);if(_0x49c8ef[_0x5bec('0x33')]){delete _0x49c8ef['name'];}_0x2e421e[_0x5bec('0x25')](_0x1923fc)[_0x5bec('0x34')](_0x49c8ef);};}exports['index']=function(_0xdb0430,_0x58c34e){var _0x400e22={},_0x2c0b08={},_0x402e5d={'count':0x0,'rows':[]};var _0x49cdfa=_[_0x5bec('0x35')](db[_0x5bec('0x36')][_0x5bec('0x37')],function(_0x139859){return{'name':_0x139859[_0x5bec('0x38')],'type':_0x139859[_0x5bec('0x39')][_0x5bec('0x3a')]};});_0x2c0b08['model']=_[_0x5bec('0x35')](_0x49cdfa,_0x5bec('0x33'));_0x2c0b08[_0x5bec('0x3b')]=_[_0x5bec('0x3c')](_0xdb0430['query']);_0x2c0b08[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],_0x2c0b08['query']);_0x400e22['attributes']=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x40')]));_0x400e22['attributes']=_0x400e22['attributes'][_0x5bec('0x41')]?_0x400e22['attributes']:_0x2c0b08[_0x5bec('0x3f')];if(!_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x42')]('nolimit')){_0x400e22[_0x5bec('0x28')]=qs[_0x5bec('0x28')](_0xdb0430['query'][_0x5bec('0x28')]);_0x400e22[_0x5bec('0x27')]=qs[_0x5bec('0x27')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x27')]);}_0x400e22[_0x5bec('0x43')]=qs[_0x5bec('0x44')](_0xdb0430['query']['sort']);_0x400e22[_0x5bec('0x45')]=qs['filters'](_['pick'](_0xdb0430[_0x5bec('0x3b')],_0x2c0b08['filters']),_0x49cdfa);if(_0xdb0430['query']['filter']){_0x400e22[_0x5bec('0x45')]=_[_0x5bec('0x46')](_0x400e22[_0x5bec('0x45')],{'$or':_[_0x5bec('0x35')](_0x49cdfa,function(_0x48858a){if(_0x48858a[_0x5bec('0x39')]!==_0x5bec('0x47')){var _0xa4d32={};_0xa4d32[_0x48858a[_0x5bec('0x33')]]={'$like':'%'+_0xdb0430['query'][_0x5bec('0x48')]+'%'};return _0xa4d32;}})});}_0x400e22=_[_0x5bec('0x46')]({},_0x400e22,_0xdb0430[_0x5bec('0x49')]);var _0x51a3f9={'where':_0x400e22[_0x5bec('0x45')]};return db['Trunk'][_0x5bec('0x2a')](_0x51a3f9)[_0x5bec('0x1c')](function(_0x133d5c){_0x402e5d[_0x5bec('0x2a')]=_0x133d5c;if(_0xdb0430['query'][_0x5bec('0x4a')]){_0x400e22[_0x5bec('0x4b')]=[{'all':!![]}];}return db[_0x5bec('0x36')][_0x5bec('0x4c')](_0x400e22);})[_0x5bec('0x1c')](function(_0x123758){_0x402e5d[_0x5bec('0x4d')]=_0x123758;return _0x402e5d;})['then'](respondWithFilteredResult(_0x58c34e,_0x400e22))[_0x5bec('0x4e')](handleError(_0x58c34e,null));};exports[_0x5bec('0x4f')]=function(_0x5775ca,_0x273e09){var _0x3e6180={'raw':![],'where':{'id':_0x5775ca[_0x5bec('0x50')]['id']}},_0x34ee24={};_0x34ee24[_0x5bec('0x3f')]=_[_0x5bec('0x3c')](db[_0x5bec('0x36')]['rawAttributes']);_0x34ee24[_0x5bec('0x3b')]=_['keys'](_0x5775ca[_0x5bec('0x3b')]);_0x34ee24[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],_0x34ee24[_0x5bec('0x3b')]);_0x3e6180[_0x5bec('0x51')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0x5775ca[_0x5bec('0x3b')]['fields']));_0x3e6180[_0x5bec('0x51')]=_0x3e6180['attributes']['length']?_0x3e6180[_0x5bec('0x51')]:_0x34ee24['model'];if(_0x5775ca['query'][_0x5bec('0x4a')]){_0x3e6180[_0x5bec('0x4b')]=[{'all':!![]}];}_0x3e6180=_[_0x5bec('0x46')]({},_0x3e6180,_0x5775ca['options']);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0x3e6180)[_0x5bec('0x1c')](handleEntityNotFound(_0x273e09,null))[_0x5bec('0x1c')](respondWithResult(_0x273e09,null))['catch'](handleError(_0x273e09,null));};exports[_0x5bec('0x53')]=function(_0x209da3,_0x9cae50){var _0xc8563a={'where':{'id':_0x209da3[_0x5bec('0x50')]['id']}},_0x2f736c={};_0x2f736c[_0x5bec('0x3f')]=_['keys'](db['Trunk'][_0x5bec('0x37')]);_0xc8563a['attributes']=_[_0x5bec('0x3e')](_0x2f736c[_0x5bec('0x3f')],qs['fields'](_0x209da3[_0x5bec('0x3b')]['fields']));_0xc8563a[_0x5bec('0x51')]=_0xc8563a[_0x5bec('0x51')][_0x5bec('0x41')]?_0xc8563a[_0x5bec('0x51')]:_0x2f736c[_0x5bec('0x3f')];if(_0x209da3[_0x5bec('0x3b')][_0x5bec('0x4a')]){_0xc8563a[_0x5bec('0x4b')]=[{'all':!![]}];}_0xc8563a=_[_0x5bec('0x46')]({},_0xc8563a,_0x209da3[_0x5bec('0x49')]);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0xc8563a)[_0x5bec('0x1c')](handleEntityNotFound(_0x9cae50,null))[_0x5bec('0x1c')](function(_0x51b25d){if(_0x51b25d){var _0x2e33a7=_0x51b25d[_0x5bec('0x54')]({'plain':!![]});_0x2e33a7=qs[_0x5bec('0x55')](_0x2e33a7,['id','createdAt',_0x5bec('0x56')]);_0x209da3[_0x5bec('0x57')]=_[_0x5bec('0x55')](_0x209da3[_0x5bec('0x57')],['id',_0x5bec('0x58'),'updatedAt']);return db[_0x5bec('0x36')][_0x5bec('0x59')](_[_0x5bec('0x46')](_0x2e33a7,_0x209da3[_0x5bec('0x57')]),{'include':_0x209da3['query'][_0x5bec('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x2b701f){var _0x38deb0=_0x209da3[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0x38deb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38deb0[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x1b3c40=_0x2b701f[_0x5bec('0x54')]({'plain':!![]});var _0xc3e3df=_0x5bec('0x2f');return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0xc3e3df,'userProfileId':_0x38deb0[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0xfa751f){if(_0xfa751f&&_0xfa751f[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x1b3c40[_0x5bec('0x33')],'resourceId':_0x1b3c40['id'],'type':_0xfa751f['name'],'sectionId':_0xfa751f['id']},{})[_0x5bec('0x1c')](function(){return _0x2b701f;});}else{return _0x2b701f;}})[_0x5bec('0x4e')](function(_0x4e899c){logger[_0x5bec('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e899c);throw _0x4e899c;});}return _0x2b701f;});}})[_0x5bec('0x1c')](respondWithResult(_0x9cae50,0xc9))[_0x5bec('0x4e')](handleError(_0x9cae50,null));};exports['create']=function(_0x5a2a85,_0xd54be0,_0xcac51d){var _0xb6cf85;return db[_0x5bec('0x36')][_0x5bec('0x59')](_0x5a2a85['body'],{'raw':!![]})[_0x5bec('0x1c')](function(_0x39cb06){_0xb6cf85=_0x39cb06;return db['Trunk'][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x44a945){var _0x34f31c=fs['readFileSync'](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),_0x5bec('0x61'));var _0x3ede1d=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x1ee139=ejs[_0x5bec('0x65')](_0x34f31c,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1ee139);if(_0xb6cf85['registry']){var _0x3c305e=ejs[_0x5bec('0x65')](_0x3ede1d,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0x3c305e);}})[_0x5bec('0x1c')](function(){return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x59'),{'module':'chan_sip.so'});})['then'](function(){var _0xc81e8f=_0x5a2a85[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0xc81e8f)throw new Error(_0x5bec('0x69'));if(_0xc81e8f[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x17cd00=_0xb6cf85[_0x5bec('0x54')]({'plain':!![]});return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0x5bec('0x2f'),'userProfileId':_0xc81e8f[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0x325044){if(_0x325044&&_0x325044[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x17cd00[_0x5bec('0x33')],'resourceId':_0x17cd00['id'],'type':_0x325044[_0x5bec('0x33')],'sectionId':_0x325044['id']},{})[_0x5bec('0x1c')](function(){return _0xb6cf85;});}else{return _0xb6cf85;}})['catch'](function(_0x2e76c0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e76c0);throw _0x2e76c0;});}return _0xb6cf85;})[_0x5bec('0x1c')](respondWithResult(_0xd54be0,0xc9))['catch'](handleError(_0xd54be0,null));};exports[_0x5bec('0x6a')]=function(_0x5d6af3,_0x5ca280,_0x2e849b){var _0x1b5ec0;return db['Trunk'][_0x5bec('0x52')]({'where':{'id':_0x5d6af3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x5ca280,null))[_0x5bec('0x1c')](saveUpdates(_0x5d6af3[_0x5bec('0x57')],null))[_0x5bec('0x1c')](function(_0xb76af2){if(_0xb76af2){_0x1b5ec0=_0xb76af2;return db[_0x5bec('0x36')]['findAll']({'raw':!![]});}})['then'](function(_0x2e8cd3){if(_0x2e8cd3){var _0x122c7f=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),'utf8');var _0x44ceec=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x38be2d=ejs[_0x5bec('0x65')](_0x122c7f,{'trunks':_0x2e8cd3||[]});fs['writeFileSync'](_0x5bec('0x6b'),_0x38be2d);var _0xe5f9e5=ejs[_0x5bec('0x65')](_0x44ceec,{'trunks':_0x2e8cd3||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0xe5f9e5);return respondWithRpcPromise('Reload',_0x5bec('0x6a'),{'module':_0x5bec('0x6c')});}return null;})['then'](function(_0x195c12){if(_0x195c12){return _0x1b5ec0;}})['then'](respondWithResult(_0x5ca280,null))[_0x5bec('0x4e')](handleError(_0x5ca280,null));};exports[_0x5bec('0x31')]=function(_0x4646a3,_0x313e1c,_0x437c3e){var _0x3d7600;return db[_0x5bec('0x36')][_0x5bec('0x52')]({'where':{'id':_0x4646a3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x313e1c,null))[_0x5bec('0x1c')](removeEntity(_0x313e1c,null))[_0x5bec('0x1c')](function(){return db[_0x5bec('0x36')][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x1eaf2f){var _0x317e2a=fs[_0x5bec('0x62')](path['join'](config[_0x5bec('0x63')],'server/files/templates/trunk.ejs'),_0x5bec('0x61'));var _0xfcef92=fs['readFileSync'](path['join'](config[_0x5bec('0x63')],'server/files/templates/registry.ejs'),_0x5bec('0x61'));var _0x4b70df=ejs[_0x5bec('0x65')](_0x317e2a,{'trunks':_0x1eaf2f});var _0x27b40b=ejs['render'](_0xfcef92,{'trunks':_0x1eaf2f});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4b70df);fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_registers.conf',_0x27b40b);return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x31'),{'module':'chan_sip.so'});})[_0x5bec('0x4e')](handleError(_0x313e1c,null));};
\ No newline at end of file
+var _0xbec5=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','Trunks','UserProfileResource','destroy','stack','name','send','map','Trunk','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','attributes','find','clone','get','omit','updatedAt','body','createdAt','create','user','role','UserProfileSection','userProfileId','autoAssociation','join','server/files/templates/trunk.ejs','utf8'];(function(_0x1e8762,_0x27f92b){var _0x2f0f17=function(_0x1f7ae1){while(--_0x1f7ae1){_0x1e8762['push'](_0x1e8762['shift']());}};_0x2f0f17(++_0x27f92b);}(_0xbec5,0xe5));var _0x5bec=function(_0x3f55de,_0x3ae98f){_0x3f55de=_0x3f55de-0x0;var _0x2698de=_0xbec5[_0x3f55de];return _0x2698de;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];var jayson=require(_0x5bec('0x19'));var client=jayson['client'][_0x5bec('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xaa984d,_0x35393a,_0x6888a4,_0x3198e0){return new BPromise(function(_0xcd6d90,_0x24dcd6){var _0x43fd2a=_0x3198e0||client;return _0x43fd2a[_0x5bec('0x1b')](_0xaa984d,_0x6888a4)[_0x5bec('0x1c')](function(_0x31b9e4){logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,'request\x20sent');logger['debug'](_0x5bec('0x1f'),_0x35393a,_0x5bec('0x20'),JSON[_0x5bec('0x21')](_0x31b9e4));if(_0x31b9e4[_0x5bec('0x22')]){if(_0x31b9e4['error']['code']===0x1f4){logger[_0x5bec('0x22')](_0x5bec('0x1e'),_0x35393a,_0x31b9e4['error'][_0x5bec('0x23')]);return _0x24dcd6(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x31b9e4[_0x5bec('0x22')]['message']);return _0xcd6d90(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}else{logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,_0x5bec('0x20'));_0xcd6d90(_0x31b9e4['result'][_0x5bec('0x23')]);}})['catch'](function(_0x2b2d26){logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x2b2d26);_0x24dcd6(_0x2b2d26);});});}function respondWithStatusCode(_0xa414f8,_0xbef70b){_0xbef70b=_0xbef70b||0xcc;return function(_0x4e0ca2){if(_0x4e0ca2){return _0xa414f8[_0x5bec('0x24')](_0xbef70b);}return _0xa414f8[_0x5bec('0x25')](_0xbef70b)[_0x5bec('0x26')]();};}function respondWithResult(_0x20da89,_0x226d55){_0x226d55=_0x226d55||0xc8;return function(_0x131143){if(_0x131143){return _0x20da89[_0x5bec('0x25')](_0x226d55)['json'](_0x131143);}};}function respondWithFilteredResult(_0x5b63ab,_0x5e44b3){return function(_0x2961bd){if(_0x2961bd){var _0x2cdd2f=typeof _0x5e44b3[_0x5bec('0x27')]==='undefined'&&typeof _0x5e44b3[_0x5bec('0x28')]===_0x5bec('0x29');var _0x57331b=_0x2961bd[_0x5bec('0x2a')];var _0x63ac8=_0x2cdd2f?0x0:_0x5e44b3['offset'];var _0x5336b3=_0x2cdd2f?_0x2961bd[_0x5bec('0x2a')]:_0x5e44b3[_0x5bec('0x27')]+_0x5e44b3[_0x5bec('0x28')];var _0x2c7a7b;if(_0x5336b3>=_0x57331b){_0x5336b3=_0x57331b;_0x2c7a7b=0xc8;}else{_0x2c7a7b=0xce;}_0x5b63ab[_0x5bec('0x25')](_0x2c7a7b);return _0x5b63ab[_0x5bec('0x2b')]('Content-Range',_0x63ac8+'-'+_0x5336b3+'/'+_0x57331b)[_0x5bec('0x2c')](_0x2961bd);}return null;};}function patchUpdates(_0x59b5b6){return function(_0x45863b){try{jsonpatch[_0x5bec('0x2d')](_0x45863b,_0x59b5b6,!![]);}catch(_0x3034c9){return BPromise[_0x5bec('0x2e')](_0x3034c9);}return _0x45863b['save']();};}function saveUpdates(_0x2b42c8,_0x1aba46){return function(_0xfc7d41){if(_0xfc7d41){return _0xfc7d41['update'](_0x2b42c8)[_0x5bec('0x1c')](function(_0x4cfb89){return _0x4cfb89;});}return null;};}function removeEntity(_0x14cdbf,_0x207192){return function(_0x29df14){if(_0x29df14){return _0x29df14['destroy']()[_0x5bec('0x1c')](function(){var _0x420ad4=_0x29df14['get']({'plain':!![]});var _0x34b441=_0x5bec('0x2f');return db[_0x5bec('0x30')][_0x5bec('0x31')]({'where':{'type':_0x34b441,'resourceId':_0x420ad4['id']}})[_0x5bec('0x1c')](function(){return _0x29df14;});})['then'](function(){_0x14cdbf[_0x5bec('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d3793,_0x384f04){return function(_0x182b86){if(!_0x182b86){_0x2d3793[_0x5bec('0x24')](0x194);}return _0x182b86;};}function handleError(_0x2e421e,_0x1923fc){_0x1923fc=_0x1923fc||0x1f4;return function(_0x49c8ef){logger[_0x5bec('0x22')](_0x49c8ef[_0x5bec('0x32')]);if(_0x49c8ef[_0x5bec('0x33')]){delete _0x49c8ef['name'];}_0x2e421e[_0x5bec('0x25')](_0x1923fc)[_0x5bec('0x34')](_0x49c8ef);};}exports['index']=function(_0xdb0430,_0x58c34e){var _0x400e22={},_0x2c0b08={},_0x402e5d={'count':0x0,'rows':[]};var _0x49cdfa=_[_0x5bec('0x35')](db[_0x5bec('0x36')][_0x5bec('0x37')],function(_0x139859){return{'name':_0x139859[_0x5bec('0x38')],'type':_0x139859[_0x5bec('0x39')][_0x5bec('0x3a')]};});_0x2c0b08['model']=_[_0x5bec('0x35')](_0x49cdfa,_0x5bec('0x33'));_0x2c0b08[_0x5bec('0x3b')]=_[_0x5bec('0x3c')](_0xdb0430['query']);_0x2c0b08[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],_0x2c0b08['query']);_0x400e22['attributes']=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x40')]));_0x400e22['attributes']=_0x400e22['attributes'][_0x5bec('0x41')]?_0x400e22['attributes']:_0x2c0b08[_0x5bec('0x3f')];if(!_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x42')]('nolimit')){_0x400e22[_0x5bec('0x28')]=qs[_0x5bec('0x28')](_0xdb0430['query'][_0x5bec('0x28')]);_0x400e22[_0x5bec('0x27')]=qs[_0x5bec('0x27')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x27')]);}_0x400e22[_0x5bec('0x43')]=qs[_0x5bec('0x44')](_0xdb0430['query']['sort']);_0x400e22[_0x5bec('0x45')]=qs['filters'](_['pick'](_0xdb0430[_0x5bec('0x3b')],_0x2c0b08['filters']),_0x49cdfa);if(_0xdb0430['query']['filter']){_0x400e22[_0x5bec('0x45')]=_[_0x5bec('0x46')](_0x400e22[_0x5bec('0x45')],{'$or':_[_0x5bec('0x35')](_0x49cdfa,function(_0x48858a){if(_0x48858a[_0x5bec('0x39')]!==_0x5bec('0x47')){var _0xa4d32={};_0xa4d32[_0x48858a[_0x5bec('0x33')]]={'$like':'%'+_0xdb0430['query'][_0x5bec('0x48')]+'%'};return _0xa4d32;}})});}_0x400e22=_[_0x5bec('0x46')]({},_0x400e22,_0xdb0430[_0x5bec('0x49')]);var _0x51a3f9={'where':_0x400e22[_0x5bec('0x45')]};return db['Trunk'][_0x5bec('0x2a')](_0x51a3f9)[_0x5bec('0x1c')](function(_0x133d5c){_0x402e5d[_0x5bec('0x2a')]=_0x133d5c;if(_0xdb0430['query'][_0x5bec('0x4a')]){_0x400e22[_0x5bec('0x4b')]=[{'all':!![]}];}return db[_0x5bec('0x36')][_0x5bec('0x4c')](_0x400e22);})[_0x5bec('0x1c')](function(_0x123758){_0x402e5d[_0x5bec('0x4d')]=_0x123758;return _0x402e5d;})['then'](respondWithFilteredResult(_0x58c34e,_0x400e22))[_0x5bec('0x4e')](handleError(_0x58c34e,null));};exports[_0x5bec('0x4f')]=function(_0x5775ca,_0x273e09){var _0x3e6180={'raw':![],'where':{'id':_0x5775ca[_0x5bec('0x50')]['id']}},_0x34ee24={};_0x34ee24[_0x5bec('0x3f')]=_[_0x5bec('0x3c')](db[_0x5bec('0x36')]['rawAttributes']);_0x34ee24[_0x5bec('0x3b')]=_['keys'](_0x5775ca[_0x5bec('0x3b')]);_0x34ee24[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],_0x34ee24[_0x5bec('0x3b')]);_0x3e6180[_0x5bec('0x51')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0x5775ca[_0x5bec('0x3b')]['fields']));_0x3e6180[_0x5bec('0x51')]=_0x3e6180['attributes']['length']?_0x3e6180[_0x5bec('0x51')]:_0x34ee24['model'];if(_0x5775ca['query'][_0x5bec('0x4a')]){_0x3e6180[_0x5bec('0x4b')]=[{'all':!![]}];}_0x3e6180=_[_0x5bec('0x46')]({},_0x3e6180,_0x5775ca['options']);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0x3e6180)[_0x5bec('0x1c')](handleEntityNotFound(_0x273e09,null))[_0x5bec('0x1c')](respondWithResult(_0x273e09,null))['catch'](handleError(_0x273e09,null));};exports[_0x5bec('0x53')]=function(_0x209da3,_0x9cae50){var _0xc8563a={'where':{'id':_0x209da3[_0x5bec('0x50')]['id']}},_0x2f736c={};_0x2f736c[_0x5bec('0x3f')]=_['keys'](db['Trunk'][_0x5bec('0x37')]);_0xc8563a['attributes']=_[_0x5bec('0x3e')](_0x2f736c[_0x5bec('0x3f')],qs['fields'](_0x209da3[_0x5bec('0x3b')]['fields']));_0xc8563a[_0x5bec('0x51')]=_0xc8563a[_0x5bec('0x51')][_0x5bec('0x41')]?_0xc8563a[_0x5bec('0x51')]:_0x2f736c[_0x5bec('0x3f')];if(_0x209da3[_0x5bec('0x3b')][_0x5bec('0x4a')]){_0xc8563a[_0x5bec('0x4b')]=[{'all':!![]}];}_0xc8563a=_[_0x5bec('0x46')]({},_0xc8563a,_0x209da3[_0x5bec('0x49')]);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0xc8563a)[_0x5bec('0x1c')](handleEntityNotFound(_0x9cae50,null))[_0x5bec('0x1c')](function(_0x51b25d){if(_0x51b25d){var _0x2e33a7=_0x51b25d[_0x5bec('0x54')]({'plain':!![]});_0x2e33a7=qs[_0x5bec('0x55')](_0x2e33a7,['id','createdAt',_0x5bec('0x56')]);_0x209da3[_0x5bec('0x57')]=_[_0x5bec('0x55')](_0x209da3[_0x5bec('0x57')],['id',_0x5bec('0x58'),'updatedAt']);return db[_0x5bec('0x36')][_0x5bec('0x59')](_[_0x5bec('0x46')](_0x2e33a7,_0x209da3[_0x5bec('0x57')]),{'include':_0x209da3['query'][_0x5bec('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x2b701f){var _0x38deb0=_0x209da3[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0x38deb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38deb0[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x1b3c40=_0x2b701f[_0x5bec('0x54')]({'plain':!![]});var _0xc3e3df=_0x5bec('0x2f');return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0xc3e3df,'userProfileId':_0x38deb0[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0xfa751f){if(_0xfa751f&&_0xfa751f[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x1b3c40[_0x5bec('0x33')],'resourceId':_0x1b3c40['id'],'type':_0xfa751f['name'],'sectionId':_0xfa751f['id']},{})[_0x5bec('0x1c')](function(){return _0x2b701f;});}else{return _0x2b701f;}})[_0x5bec('0x4e')](function(_0x4e899c){logger[_0x5bec('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e899c);throw _0x4e899c;});}return _0x2b701f;});}})[_0x5bec('0x1c')](respondWithResult(_0x9cae50,0xc9))[_0x5bec('0x4e')](handleError(_0x9cae50,null));};exports['create']=function(_0x5a2a85,_0xd54be0,_0xcac51d){var _0xb6cf85;return db[_0x5bec('0x36')][_0x5bec('0x59')](_0x5a2a85['body'],{'raw':!![]})[_0x5bec('0x1c')](function(_0x39cb06){_0xb6cf85=_0x39cb06;return db['Trunk'][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x44a945){var _0x34f31c=fs['readFileSync'](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),_0x5bec('0x61'));var _0x3ede1d=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x1ee139=ejs[_0x5bec('0x65')](_0x34f31c,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1ee139);if(_0xb6cf85['registry']){var _0x3c305e=ejs[_0x5bec('0x65')](_0x3ede1d,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0x3c305e);}})[_0x5bec('0x1c')](function(){return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x59'),{'module':'chan_sip.so'});})['then'](function(){var _0xc81e8f=_0x5a2a85[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0xc81e8f)throw new Error(_0x5bec('0x69'));if(_0xc81e8f[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x17cd00=_0xb6cf85[_0x5bec('0x54')]({'plain':!![]});return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0x5bec('0x2f'),'userProfileId':_0xc81e8f[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0x325044){if(_0x325044&&_0x325044[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x17cd00[_0x5bec('0x33')],'resourceId':_0x17cd00['id'],'type':_0x325044[_0x5bec('0x33')],'sectionId':_0x325044['id']},{})[_0x5bec('0x1c')](function(){return _0xb6cf85;});}else{return _0xb6cf85;}})['catch'](function(_0x2e76c0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e76c0);throw _0x2e76c0;});}return _0xb6cf85;})[_0x5bec('0x1c')](respondWithResult(_0xd54be0,0xc9))['catch'](handleError(_0xd54be0,null));};exports[_0x5bec('0x6a')]=function(_0x5d6af3,_0x5ca280,_0x2e849b){var _0x1b5ec0;return db['Trunk'][_0x5bec('0x52')]({'where':{'id':_0x5d6af3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x5ca280,null))[_0x5bec('0x1c')](saveUpdates(_0x5d6af3[_0x5bec('0x57')],null))[_0x5bec('0x1c')](function(_0xb76af2){if(_0xb76af2){_0x1b5ec0=_0xb76af2;return db[_0x5bec('0x36')]['findAll']({'raw':!![]});}})['then'](function(_0x2e8cd3){if(_0x2e8cd3){var _0x122c7f=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),'utf8');var _0x44ceec=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x38be2d=ejs[_0x5bec('0x65')](_0x122c7f,{'trunks':_0x2e8cd3||[]});fs['writeFileSync'](_0x5bec('0x6b'),_0x38be2d);var _0xe5f9e5=ejs[_0x5bec('0x65')](_0x44ceec,{'trunks':_0x2e8cd3||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0xe5f9e5);return respondWithRpcPromise('Reload',_0x5bec('0x6a'),{'module':_0x5bec('0x6c')});}return null;})['then'](function(_0x195c12){if(_0x195c12){return _0x1b5ec0;}})['then'](respondWithResult(_0x5ca280,null))[_0x5bec('0x4e')](handleError(_0x5ca280,null));};exports[_0x5bec('0x31')]=function(_0x4646a3,_0x313e1c,_0x437c3e){var _0x3d7600;return db[_0x5bec('0x36')][_0x5bec('0x52')]({'where':{'id':_0x4646a3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x313e1c,null))[_0x5bec('0x1c')](removeEntity(_0x313e1c,null))[_0x5bec('0x1c')](function(){return db[_0x5bec('0x36')][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x1eaf2f){var _0x317e2a=fs[_0x5bec('0x62')](path['join'](config[_0x5bec('0x63')],'server/files/templates/trunk.ejs'),_0x5bec('0x61'));var _0xfcef92=fs['readFileSync'](path['join'](config[_0x5bec('0x63')],'server/files/templates/registry.ejs'),_0x5bec('0x61'));var _0x4b70df=ejs[_0x5bec('0x65')](_0x317e2a,{'trunks':_0x1eaf2f});var _0x27b40b=ejs['render'](_0xfcef92,{'trunks':_0x1eaf2f});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4b70df);fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_registers.conf',_0x27b40b);return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x31'),{'module':'chan_sip.so'});})[_0x5bec('0x4e')](handleError(_0x313e1c,null));};
\ No newline at end of file
index 81fe083..882fb6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb51=['define','Trunk','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes','exports'];(function(_0xf667d3,_0x124111){var _0x4f633e=function(_0x8f8682){while(--_0x8f8682){_0xf667d3['push'](_0xf667d3['shift']());}};_0x4f633e(++_0x124111);}(_0xbb51,0x1a6));var _0x1bb5=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xbb51[_0x45bf86];return _0x1f02b7;};'use strict';var _=require(_0x1bb5('0x0'));var util=require(_0x1bb5('0x1'));var logger=require(_0x1bb5('0x2'))(_0x1bb5('0x3'));var moment=require('moment');var BPromise=require(_0x1bb5('0x4'));var rp=require(_0x1bb5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1bb5('0x6'));var config=require(_0x1bb5('0x7'));var attributes=require(_0x1bb5('0x8'));module[_0x1bb5('0x9')]=function(_0xda2424,_0x1b7158){return _0xda2424[_0x1bb5('0xa')](_0x1bb5('0xb'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3054=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','Trunk','tools_trunks','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3054,0x14f));var _0x4305=function(_0x38f532,_0x5317ed){_0x38f532=_0x38f532-0x0;var _0x12be51=_0x3054[_0x38f532];return _0x12be51;};'use strict';var _=require(_0x4305('0x0'));var util=require(_0x4305('0x1'));var logger=require(_0x4305('0x2'))(_0x4305('0x3'));var moment=require(_0x4305('0x4'));var BPromise=require(_0x4305('0x5'));var rp=require(_0x4305('0x6'));var fs=require('fs');var path=require(_0x4305('0x7'));var rimraf=require(_0x4305('0x8'));var config=require(_0x4305('0x9'));var attributes=require(_0x4305('0xa'));module[_0x4305('0xb')]=function(_0x589e26,_0x514e28){return _0x589e26['define'](_0x4305('0xc'),attributes,{'tableName':_0x4305('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0b5b2e..2fe7615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3a0=['limit','include','map','model','GetTrunk','ShowTrunk','Trunk','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','options','raw','where','attributes'];(function(_0x29ce14,_0x334166){var _0x48f289=function(_0x288d11){while(--_0x288d11){_0x29ce14['push'](_0x29ce14['shift']());}};_0x48f289(++_0x334166);}(_0xb3a0,0x120));var _0x0b3a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xb3a0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x0b3a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0b3a('0x1'));var rs=require(_0x0b3a('0x2'));var fs=require('fs');var Redis=require(_0x0b3a('0x3'));var db=require(_0x0b3a('0x4'))['db'];var utils=require(_0x0b3a('0x5'));var logger=require(_0x0b3a('0x6'))(_0x0b3a('0x7'));var config=require(_0x0b3a('0x8'));var jayson=require(_0x0b3a('0x9'));var client=jayson[_0x0b3a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8b14b0,_0x2005f5,_0x60dc2d){return new BPromise(function(_0x2014c8,_0x3b7cf8){return client[_0x0b3a('0xb')](_0x8b14b0,_0x60dc2d)[_0x0b3a('0xc')](function(_0x271dc1){logger['info'](_0x0b3a('0xd'),_0x2005f5,'request\x20sent');logger[_0x0b3a('0xe')](_0x0b3a('0xf'),_0x2005f5,'request\x20sent',JSON[_0x0b3a('0x10')](_0x271dc1));if(_0x271dc1[_0x0b3a('0x11')]){if(_0x271dc1[_0x0b3a('0x11')][_0x0b3a('0x12')]===0x1f4){logger[_0x0b3a('0x11')](_0x0b3a('0xd'),_0x2005f5,_0x271dc1[_0x0b3a('0x11')]['message']);return _0x3b7cf8(_0x271dc1[_0x0b3a('0x11')][_0x0b3a('0x13')]);}logger['error'](_0x0b3a('0xd'),_0x2005f5,_0x271dc1[_0x0b3a('0x11')][_0x0b3a('0x13')]);return _0x2014c8(_0x271dc1['error'][_0x0b3a('0x13')]);}else{logger[_0x0b3a('0x14')]('Trunk,\x20%s,\x20%s',_0x2005f5,'request\x20sent');_0x2014c8(_0x271dc1[_0x0b3a('0x15')][_0x0b3a('0x13')]);}})[_0x0b3a('0x16')](function(_0x176443){logger[_0x0b3a('0x11')](_0x0b3a('0xd'),_0x2005f5,_0x176443);_0x3b7cf8(_0x176443);});});}exports['GetTrunk']=function(_0x3bb482){var _0x5e4acb=this;return new Promise(function(_0x2dc1af,_0x1fcd50){return db['Trunk']['findAll']({'raw':_0x3bb482['options']?_0x3bb482[_0x0b3a('0x17')][_0x0b3a('0x18')]===undefined?!![]:![]:!![],'where':_0x3bb482['options']?_0x3bb482[_0x0b3a('0x17')][_0x0b3a('0x19')]||null:null,'attributes':_0x3bb482[_0x0b3a('0x17')]?_0x3bb482[_0x0b3a('0x17')][_0x0b3a('0x1a')]||null:null,'limit':_0x3bb482[_0x0b3a('0x17')]?_0x3bb482[_0x0b3a('0x17')][_0x0b3a('0x1b')]||null:null,'include':_0x3bb482['options']?_0x3bb482['options'][_0x0b3a('0x1c')]?_[_0x0b3a('0x1d')](_0x3bb482[_0x0b3a('0x17')][_0x0b3a('0x1c')],function(_0xd62ed9){return{'model':db[_0xd62ed9['model']],'as':_0xd62ed9['as'],'attributes':_0xd62ed9[_0x0b3a('0x1a')],'include':_0xd62ed9['include']?_[_0x0b3a('0x1d')](_0xd62ed9[_0x0b3a('0x1c')],function(_0x4d8823){return{'model':db[_0x4d8823[_0x0b3a('0x1e')]],'as':_0x4d8823['as'],'attributes':_0x4d8823[_0x0b3a('0x1a')],'include':_0x4d8823[_0x0b3a('0x1c')]?_[_0x0b3a('0x1d')](_0x4d8823[_0x0b3a('0x1c')],function(_0x34856c){return{'model':db[_0x34856c[_0x0b3a('0x1e')]],'as':_0x34856c['as'],'attributes':_0x34856c['attributes']};}):[]};}):[]};}):[]:[]})[_0x0b3a('0xc')](function(_0x1e2106){logger[_0x0b3a('0x14')](_0x0b3a('0x1f'),_0x3bb482);logger[_0x0b3a('0xe')](_0x0b3a('0x1f'),_0x3bb482,JSON[_0x0b3a('0x10')](_0x1e2106));_0x2dc1af(_0x1e2106);})[_0x0b3a('0x16')](function(_0x567861){logger[_0x0b3a('0x11')](_0x0b3a('0x1f'),_0x567861[_0x0b3a('0x13')],_0x3bb482);_0x1fcd50(_0x5e4acb[_0x0b3a('0x11')](0x1f4,_0x567861[_0x0b3a('0x13')]));});});};exports[_0x0b3a('0x20')]=function(_0x5a31de){var _0x2709b5=this;return new Promise(function(_0x3f009f,_0x32f92a){return db[_0x0b3a('0x21')][_0x0b3a('0x22')]({'raw':_0x5a31de[_0x0b3a('0x17')]?_0x5a31de[_0x0b3a('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5a31de[_0x0b3a('0x17')]?_0x5a31de[_0x0b3a('0x17')][_0x0b3a('0x19')]||null:null,'attributes':_0x5a31de[_0x0b3a('0x17')]?_0x5a31de[_0x0b3a('0x17')][_0x0b3a('0x1a')]||null:null,'include':_0x5a31de['options']?_0x5a31de[_0x0b3a('0x17')]['include']?_['map'](_0x5a31de[_0x0b3a('0x17')]['include'],function(_0x549fc4){return{'model':db[_0x549fc4[_0x0b3a('0x1e')]],'as':_0x549fc4['as'],'attributes':_0x549fc4[_0x0b3a('0x1a')],'include':_0x549fc4[_0x0b3a('0x1c')]?_[_0x0b3a('0x1d')](_0x549fc4[_0x0b3a('0x1c')],function(_0x595575){return{'model':db[_0x595575[_0x0b3a('0x1e')]],'as':_0x595575['as'],'attributes':_0x595575[_0x0b3a('0x1a')],'include':_0x595575[_0x0b3a('0x1c')]?_[_0x0b3a('0x1d')](_0x595575[_0x0b3a('0x1c')],function(_0x1389d6){return{'model':db[_0x1389d6[_0x0b3a('0x1e')]],'as':_0x1389d6['as'],'attributes':_0x1389d6[_0x0b3a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0b3a('0xc')](function(_0x3e77c1){logger[_0x0b3a('0x14')](_0x0b3a('0x20'),_0x5a31de);logger[_0x0b3a('0xe')]('ShowTrunk',_0x5a31de,JSON['stringify'](_0x3e77c1));_0x3f009f(_0x3e77c1);})[_0x0b3a('0x16')](function(_0x2c0d48){logger['error']('ShowTrunk',_0x2c0d48[_0x0b3a('0x13')],_0x5a31de);_0x32f92a(_0x2709b5[_0x0b3a('0x11')](0x1f4,_0x2c0d48['message']));});});};
\ No newline at end of file
+var _0xd0fd=['error','code','Trunk,\x20%s,\x20%s','message','request\x20sent','catch','GetTrunk','Trunk','findAll','options','raw','limit','map','model','include','attributes','debug','where','ShowTrunk','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','stringify'];(function(_0x318172,_0x36ca3b){var _0x5abc91=function(_0x21de2e){while(--_0x21de2e){_0x318172['push'](_0x318172['shift']());}};_0x5abc91(++_0x36ca3b);}(_0xd0fd,0x17e));var _0xdd0f=function(_0x4d257c,_0x102074){_0x4d257c=_0x4d257c-0x0;var _0x4e55c5=_0xd0fd[_0x4d257c];return _0x4e55c5;};'use strict';var _=require(_0xdd0f('0x0'));var util=require(_0xdd0f('0x1'));var moment=require('moment');var BPromise=require(_0xdd0f('0x2'));var rs=require(_0xdd0f('0x3'));var fs=require('fs');var Redis=require(_0xdd0f('0x4'));var db=require(_0xdd0f('0x5'))['db'];var utils=require(_0xdd0f('0x6'));var logger=require(_0xdd0f('0x7'))(_0xdd0f('0x8'));var config=require('../../config/environment');var jayson=require(_0xdd0f('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf3c254,_0x4de6ba,_0x404289){return new BPromise(function(_0x28b56f,_0x223eeb){return client[_0xdd0f('0xa')](_0xf3c254,_0x404289)[_0xdd0f('0xb')](function(_0x5c759e){logger[_0xdd0f('0xc')]('Trunk,\x20%s,\x20%s',_0x4de6ba,'request\x20sent');logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x4de6ba,'request\x20sent',JSON[_0xdd0f('0xd')](_0x5c759e));if(_0x5c759e[_0xdd0f('0xe')]){if(_0x5c759e[_0xdd0f('0xe')][_0xdd0f('0xf')]===0x1f4){logger['error'](_0xdd0f('0x10'),_0x4de6ba,_0x5c759e[_0xdd0f('0xe')][_0xdd0f('0x11')]);return _0x223eeb(_0x5c759e[_0xdd0f('0xe')][_0xdd0f('0x11')]);}logger[_0xdd0f('0xe')](_0xdd0f('0x10'),_0x4de6ba,_0x5c759e[_0xdd0f('0xe')][_0xdd0f('0x11')]);return _0x28b56f(_0x5c759e[_0xdd0f('0xe')][_0xdd0f('0x11')]);}else{logger[_0xdd0f('0xc')]('Trunk,\x20%s,\x20%s',_0x4de6ba,_0xdd0f('0x12'));_0x28b56f(_0x5c759e['result'][_0xdd0f('0x11')]);}})[_0xdd0f('0x13')](function(_0x16bc46){logger['error'](_0xdd0f('0x10'),_0x4de6ba,_0x16bc46);_0x223eeb(_0x16bc46);});});}exports[_0xdd0f('0x14')]=function(_0x445e34){var _0x117ebb=this;return new Promise(function(_0x5317d2,_0x5ced6b){return db[_0xdd0f('0x15')][_0xdd0f('0x16')]({'raw':_0x445e34['options']?_0x445e34[_0xdd0f('0x17')][_0xdd0f('0x18')]===undefined?!![]:![]:!![],'where':_0x445e34[_0xdd0f('0x17')]?_0x445e34['options']['where']||null:null,'attributes':_0x445e34['options']?_0x445e34[_0xdd0f('0x17')]['attributes']||null:null,'limit':_0x445e34[_0xdd0f('0x17')]?_0x445e34[_0xdd0f('0x17')][_0xdd0f('0x19')]||null:null,'include':_0x445e34[_0xdd0f('0x17')]?_0x445e34[_0xdd0f('0x17')]['include']?_[_0xdd0f('0x1a')](_0x445e34['options']['include'],function(_0x3d1ab1){return{'model':db[_0x3d1ab1[_0xdd0f('0x1b')]],'as':_0x3d1ab1['as'],'attributes':_0x3d1ab1['attributes'],'include':_0x3d1ab1[_0xdd0f('0x1c')]?_[_0xdd0f('0x1a')](_0x3d1ab1[_0xdd0f('0x1c')],function(_0x25402e){return{'model':db[_0x25402e[_0xdd0f('0x1b')]],'as':_0x25402e['as'],'attributes':_0x25402e[_0xdd0f('0x1d')],'include':_0x25402e[_0xdd0f('0x1c')]?_[_0xdd0f('0x1a')](_0x25402e[_0xdd0f('0x1c')],function(_0x28ae36){return{'model':db[_0x28ae36[_0xdd0f('0x1b')]],'as':_0x28ae36['as'],'attributes':_0x28ae36[_0xdd0f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdd0f('0xb')](function(_0x32b462){logger['info'](_0xdd0f('0x14'),_0x445e34);logger[_0xdd0f('0x1e')](_0xdd0f('0x14'),_0x445e34,JSON[_0xdd0f('0xd')](_0x32b462));_0x5317d2(_0x32b462);})[_0xdd0f('0x13')](function(_0x2630a5){logger[_0xdd0f('0xe')]('GetTrunk',_0x2630a5[_0xdd0f('0x11')],_0x445e34);_0x5ced6b(_0x117ebb[_0xdd0f('0xe')](0x1f4,_0x2630a5[_0xdd0f('0x11')]));});});};exports['ShowTrunk']=function(_0x375f74){var _0x1a0c79=this;return new Promise(function(_0x4b6121,_0x52a7af){return db[_0xdd0f('0x15')]['find']({'raw':_0x375f74[_0xdd0f('0x17')]?_0x375f74[_0xdd0f('0x17')][_0xdd0f('0x18')]===undefined?!![]:![]:!![],'where':_0x375f74[_0xdd0f('0x17')]?_0x375f74[_0xdd0f('0x17')][_0xdd0f('0x1f')]||null:null,'attributes':_0x375f74[_0xdd0f('0x17')]?_0x375f74[_0xdd0f('0x17')]['attributes']||null:null,'include':_0x375f74['options']?_0x375f74[_0xdd0f('0x17')][_0xdd0f('0x1c')]?_[_0xdd0f('0x1a')](_0x375f74['options']['include'],function(_0x4aaac3){return{'model':db[_0x4aaac3[_0xdd0f('0x1b')]],'as':_0x4aaac3['as'],'attributes':_0x4aaac3['attributes'],'include':_0x4aaac3['include']?_[_0xdd0f('0x1a')](_0x4aaac3['include'],function(_0x2235d5){return{'model':db[_0x2235d5['model']],'as':_0x2235d5['as'],'attributes':_0x2235d5[_0xdd0f('0x1d')],'include':_0x2235d5[_0xdd0f('0x1c')]?_[_0xdd0f('0x1a')](_0x2235d5['include'],function(_0x19befc){return{'model':db[_0x19befc[_0xdd0f('0x1b')]],'as':_0x19befc['as'],'attributes':_0x19befc[_0xdd0f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdd0f('0xb')](function(_0x5673e2){logger['info'](_0xdd0f('0x20'),_0x375f74);logger[_0xdd0f('0x1e')](_0xdd0f('0x20'),_0x375f74,JSON[_0xdd0f('0xd')](_0x5673e2));_0x4b6121(_0x5673e2);})[_0xdd0f('0x13')](function(_0x3577cf){logger[_0xdd0f('0xe')](_0xdd0f('0x20'),_0x3577cf[_0xdd0f('0x11')],_0x375f74);_0x52a7af(_0x1a0c79[_0xdd0f('0xe')](0x1f4,_0x3577cf[_0xdd0f('0x11')]));});});};
\ No newline at end of file
index cfc5346..e7e3966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff78=['Router','put','/:id','isAuthenticated','update','exports','express'];(function(_0x31e584,_0x4d9f7f){var _0x5686d0=function(_0x1f9e99){while(--_0x1f9e99){_0x31e584['push'](_0x31e584['shift']());}};_0x5686d0(++_0x4d9f7f);}(_0xff78,0xe6));var _0x8ff7=function(_0x45fe9c,_0x55e0d7){_0x45fe9c=_0x45fe9c-0x0;var _0x233d48=_0xff78[_0x45fe9c];return _0x233d48;};'use strict';var express=require(_0x8ff7('0x0'));var router=express[_0x8ff7('0x1')]();var auth=require('../../components/auth/service');var controller=require('./user-setting.controller');router[_0x8ff7('0x2')](_0x8ff7('0x3'),auth[_0x8ff7('0x4')](),controller[_0x8ff7('0x5')]);module[_0x8ff7('0x6')]=router;
\ No newline at end of file
+var _0xb5b1=['update','exports','express','Router','../../components/auth/service','./user-setting.controller','/:id','isAuthenticated'];(function(_0x5ae574,_0x50cce5){var _0x1a3dc3=function(_0x4bb88c){while(--_0x4bb88c){_0x5ae574['push'](_0x5ae574['shift']());}};_0x1a3dc3(++_0x50cce5);}(_0xb5b1,0x1d2));var _0x1b5b=function(_0x5ecba8,_0x333a0e){_0x5ecba8=_0x5ecba8-0x0;var _0x415474=_0xb5b1[_0x5ecba8];return _0x415474;};'use strict';var express=require(_0x1b5b('0x0'));var router=express[_0x1b5b('0x1')]();var auth=require(_0x1b5b('0x2'));var controller=require(_0x1b5b('0x3'));router['put'](_0x1b5b('0x4'),auth[_0x1b5b('0x5')](),controller[_0x1b5b('0x6')]);module[_0x1b5b('0x7')]=router;
\ No newline at end of file
index 252361c..3224547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f57=['DATE','INTEGER','UserId','error','warning','debug','ENUM','BOOLEAN','TEXT'];(function(_0x32a790,_0x2beb23){var _0x24fc83=function(_0x23be13){while(--_0x23be13){_0x32a790['push'](_0x32a790['shift']());}};_0x24fc83(++_0x2beb23);}(_0x2f57,0x1aa));var _0x72f5=function(_0x23df94,_0x2762f5){_0x23df94=_0x23df94-0x0;var _0x56422f=_0x2f57[_0x23df94];return _0x56422f;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=[_0x72f5('0x0'),_0x72f5('0x1'),'info',_0x72f5('0x2')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0x72f5('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x72f5('0x0'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x72f5('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x72f5('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x72f5('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x72f5('0x7')],'unique':_0x72f5('0x8')}};
\ No newline at end of file
+var _0x186b=['error','exports','ENUM','BOOLEAN','TEXT','INTEGER','UserId','sequelize'];(function(_0x44dc70,_0x1a5826){var _0x1950ee=function(_0x12fd4b){while(--_0x12fd4b){_0x44dc70['push'](_0x44dc70['shift']());}};_0x1950ee(++_0x1a5826);}(_0x186b,0x17f));var _0xb186=function(_0x5e77db,_0x356d1c){_0x5e77db=_0x5e77db-0x0;var _0x34b675=_0x186b[_0x5e77db];return _0x34b675;};'use strict';var Sequelize=require(_0xb186('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0xb186('0x1'),'warning','info','debug'];module[_0xb186('0x2')]={'clientSideLoggingLevel':{'type':Sequelize[_0xb186('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xb186('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0xb186('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xb186('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0xb186('0x6')],'unique':_0xb186('0x7')}};
\ No newline at end of file
index 640e1ac..7bf012d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b2=['UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults','status','json','then','sendStatus','error','stack','name','update','user','role','Unauthorized','params','Invalid\x20user\x20setting\x20id'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x34b2,0x11c));var _0x234b=function(_0x4742d0,_0x3667bd){_0x4742d0=_0x4742d0-0x0;var _0x43bc00=_0x34b2[_0x4742d0];return _0x43bc00;};'use strict';var _=require(_0x234b('0x0'));var Redis=require(_0x234b('0x1'));var logger=require(_0x234b('0x2'))(_0x234b('0x3'));var config=require(_0x234b('0x4'));var db=require(_0x234b('0x5'))['db'];var socket=require(_0x234b('0x6'))(new Redis(config[_0x234b('0x7')]));require(_0x234b('0x8'))[_0x234b('0x9')](socket);config[_0x234b('0x7')]=_[_0x234b('0xa')](config[_0x234b('0x7')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x52fac7,_0x5e71ac){_0x5e71ac=_0x5e71ac||0xc8;return function(_0x2eb07e){if(_0x2eb07e){return _0x52fac7[_0x234b('0xb')](_0x5e71ac)[_0x234b('0xc')](_0x2eb07e);}};}function saveUpdates(_0x36d33f){return function(_0x4e4c50){if(_0x4e4c50){return _0x4e4c50['update'](_0x36d33f)[_0x234b('0xd')](function(_0x3a900b){return _0x3a900b;});}return null;};}function handleEntityNotFound(_0x277a27){return function(_0x30b17b){if(!_0x30b17b){_0x277a27[_0x234b('0xe')](0x194);}return _0x30b17b;};}function handleError(_0x1bd00f,_0x3e4f17){_0x3e4f17=_0x3e4f17||0x1f4;return function(_0x9dcfd3){logger[_0x234b('0xf')](_0x9dcfd3[_0x234b('0x10')]);if(_0x9dcfd3[_0x234b('0x11')]){delete _0x9dcfd3[_0x234b('0x11')];}_0x1bd00f[_0x234b('0xb')](_0x3e4f17)['send'](_0x9dcfd3);};}exports[_0x234b('0x12')]=function(_0x2f72d9,_0x4abf92){if(_0x2f72d9[_0x234b('0x13')][_0x234b('0x14')]!=='admin')throw new Error(_0x234b('0x15'));if(isNaN(Number(_0x2f72d9[_0x234b('0x16')]['id'])))throw new Error(_0x234b('0x17'));return db[_0x234b('0x18')][_0x234b('0x19')]({'where':{'id':_0x2f72d9[_0x234b('0x16')]['id']}})[_0x234b('0xd')](handleEntityNotFound(_0x4abf92,null))[_0x234b('0xd')](saveUpdates(_0x2f72d9[_0x234b('0x1a')],null))['then'](respondWithResult(_0x4abf92,null))[_0x234b('0x1b')](handleError(_0x4abf92,null));};
\ No newline at end of file
+var _0xca66=['catch','lodash','api','../../config/environment','../../mysqldb','redis','register','defaults','localhost','status','update','then','error','stack','name','send','user','role','admin','Unauthorized','find','params','body'];(function(_0xe1c06f,_0x598646){var _0x18fa1c=function(_0x48602e){while(--_0x48602e){_0xe1c06f['push'](_0xe1c06f['shift']());}};_0x18fa1c(++_0x598646);}(_0xca66,0x8b));var _0x6ca6=function(_0x5cae69,_0x42f132){_0x5cae69=_0x5cae69-0x0;var _0xf38c01=_0xca66[_0x5cae69];return _0xf38c01;};'use strict';var _=require(_0x6ca6('0x0'));var Redis=require('ioredis');var logger=require('../../config/logger')(_0x6ca6('0x1'));var config=require(_0x6ca6('0x2'));var db=require(_0x6ca6('0x3'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x6ca6('0x4')]));require('./user-setting.socket')[_0x6ca6('0x5')](socket);config['redis']=_[_0x6ca6('0x6')](config[_0x6ca6('0x4')],{'host':_0x6ca6('0x7'),'port':0x18eb});function respondWithResult(_0x44019c,_0x407e66){_0x407e66=_0x407e66||0xc8;return function(_0x27a210){if(_0x27a210){return _0x44019c[_0x6ca6('0x8')](_0x407e66)['json'](_0x27a210);}};}function saveUpdates(_0xf69e0f){return function(_0x115635){if(_0x115635){return _0x115635[_0x6ca6('0x9')](_0xf69e0f)[_0x6ca6('0xa')](function(_0x231f4c){return _0x231f4c;});}return null;};}function handleEntityNotFound(_0x4198dc){return function(_0x22f0f3){if(!_0x22f0f3){_0x4198dc['sendStatus'](0x194);}return _0x22f0f3;};}function handleError(_0x38678e,_0xe39235){_0xe39235=_0xe39235||0x1f4;return function(_0x25d276){logger[_0x6ca6('0xb')](_0x25d276[_0x6ca6('0xc')]);if(_0x25d276[_0x6ca6('0xd')]){delete _0x25d276['name'];}_0x38678e[_0x6ca6('0x8')](_0xe39235)[_0x6ca6('0xe')](_0x25d276);};}exports['update']=function(_0x412986,_0x29c7d3){if(_0x412986[_0x6ca6('0xf')][_0x6ca6('0x10')]!==_0x6ca6('0x11'))throw new Error(_0x6ca6('0x12'));if(isNaN(Number(_0x412986['params']['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db['UserSetting'][_0x6ca6('0x13')]({'where':{'id':_0x412986[_0x6ca6('0x14')]['id']}})[_0x6ca6('0xa')](handleEntityNotFound(_0x29c7d3,null))[_0x6ca6('0xa')](saveUpdates(_0x412986[_0x6ca6('0x15')],null))[_0x6ca6('0xa')](respondWithResult(_0x29c7d3,null))[_0x6ca6('0x16')](handleError(_0x29c7d3,null));};
\ No newline at end of file
index ab06658..778d8cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa81c=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x428f32,_0xba79ad){var _0x9e6f89=function(_0x5cf6c8){while(--_0x5cf6c8){_0x428f32['push'](_0x428f32['shift']());}};_0x9e6f89(++_0xba79ad);}(_0xa81c,0x109));var _0xca81=function(_0x383ecc,_0x30d20a){_0x383ecc=_0x383ecc-0x0;var _0x1595a8=_0xa81c[_0x383ecc];return _0x1595a8;};'use strict';var EventEmitter=require(_0xca81('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xca81('0x1')](0x0);var events={'afterCreate':_0xca81('0x2'),'afterUpdate':_0xca81('0x3'),'afterDestroy':_0xca81('0x4')};function emitEvent(_0x3c2fa6){return function(_0x58af39,_0x471389,_0x8d4998){UserSettingEvents[_0xca81('0x5')](_0x3c2fa6+':'+_0x58af39['id'],_0x58af39);UserSettingEvents[_0xca81('0x5')](_0x3c2fa6,_0x58af39);_0x8d4998(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0xca81('0x6')](e,emitEvent(event));}}module[_0xca81('0x7')]=UserSettingEvents;
\ No newline at end of file
+var _0x0ffb=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','../../mysqldb','UserSetting'];(function(_0x36909d,_0x2795f1){var _0x1fd29d=function(_0x27d0fa){while(--_0x27d0fa){_0x36909d['push'](_0x36909d['shift']());}};_0x1fd29d(++_0x2795f1);}(_0x0ffb,0xee));var _0xb0ff=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0ffb[_0xa464c9];return _0x3d73c4;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0xb0ff('0x0'))['db'][_0xb0ff('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xb0ff('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb0ff('0x3'),'afterDestroy':_0xb0ff('0x4')};function emitEvent(_0x5383dd){return function(_0x2d1ac2,_0x528a46,_0x527e11){UserSettingEvents[_0xb0ff('0x5')](_0x5383dd+':'+_0x2d1ac2['id'],_0x2d1ac2);UserSettingEvents[_0xb0ff('0x5')](_0x5383dd,_0x2d1ac2);_0x527e11(null);};}for(var e in events){if(events[_0xb0ff('0x6')](e)){var event=events[e];UserSetting[_0xb0ff('0x7')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
index 36c0027..077c393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0427=['user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','define'];(function(_0x917d72,_0x183318){var _0x568af8=function(_0x377581){while(--_0x377581){_0x917d72['push'](_0x917d72['shift']());}};_0x568af8(++_0x183318);}(_0x0427,0x137));var _0x7042=function(_0x51195a,_0x4b037f){_0x51195a=_0x51195a-0x0;var _0x528541=_0x0427[_0x51195a];return _0x528541;};'use strict';var attributes=require('./user-setting.attributes');module['exports']=function(_0x1295ad){return _0x1295ad[_0x7042('0x0')]('UserSetting',attributes,{'tableName':_0x7042('0x1'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x7c5b2d){if(!_0x7c5b2d[_0x7042('0x2')])_0x7c5b2d[_0x7042('0x3')]=null;else if(_0x7c5b2d[_0x7042('0x3')]===null)_0x7c5b2d[_0x7042('0x3')]=new Date();}}});};
\ No newline at end of file
+var _0x803f=['./user-setting.attributes','define','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x803f,0x64));var _0xf803=function(_0x193736,_0x29b12f){_0x193736=_0x193736-0x0;var _0x4dffd2=_0x803f[_0x193736];return _0x4dffd2;};'use strict';var attributes=require(_0xf803('0x0'));module['exports']=function(_0x328b90){return _0x328b90[_0xf803('0x1')]('UserSetting',attributes,{'tableName':_0xf803('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x43fb3b){if(!_0x43fb3b[_0xf803('0x3')])_0x43fb3b[_0xf803('0x4')]=null;else if(_0x43fb3b[_0xf803('0x4')]===null)_0x43fb3b['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index 988048e..23859aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f82=['remove','update','emit','user-setting:update','user-setting:update:user-','UserId','register','length','user-setting:','save'];(function(_0x4134a3,_0x5f4adb){var _0x5a2772=function(_0x3e34e4){while(--_0x3e34e4){_0x4134a3['push'](_0x4134a3['shift']());}};_0x5a2772(++_0x5f4adb);}(_0x2f82,0xf9));var _0x22f8=function(_0x363b81,_0x81e6ca){_0x363b81=_0x363b81-0x0;var _0x1d92fb=_0x2f82[_0x363b81];return _0x1d92fb;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=[_0x22f8('0x0'),_0x22f8('0x1'),_0x22f8('0x2')];function createListener(_0x39049a,_0x48d6ab){return function(_0x98d443){_0x48d6ab[_0x22f8('0x3')](_0x39049a,_0x98d443);if(_0x39049a===_0x22f8('0x4')){_0x48d6ab['emit'](_0x22f8('0x5')+_0x98d443[_0x22f8('0x6')],_0x98d443);}};}exports[_0x22f8('0x7')]=function(_0x5e90c1){for(var _0x336aad=0x0,_0x268449=events[_0x22f8('0x8')];_0x336aad<_0x268449;_0x336aad++){var _0x399bd4=events[_0x336aad];var _0x5b92a1=createListener(_0x22f8('0x9')+_0x399bd4,_0x5e90c1);UserSettingEvents['on'](_0x399bd4,_0x5b92a1);}};
\ No newline at end of file
+var _0xf08e=['UserId','length','user-setting:','./user-setting.events','remove','update','emit','user-setting:update','user-setting:update:user-'];(function(_0x47010d,_0x47cc80){var _0x31466f=function(_0x1e2a3e){while(--_0x1e2a3e){_0x47010d['push'](_0x47010d['shift']());}};_0x31466f(++_0x47cc80);}(_0xf08e,0xf6));var _0xef08=function(_0x1701de,_0x586ae9){_0x1701de=_0x1701de-0x0;var _0x259d37=_0xf08e[_0x1701de];return _0x259d37;};'use strict';var UserSettingEvents=require(_0xef08('0x0'));var events=['save',_0xef08('0x1'),_0xef08('0x2')];function createListener(_0x58631b,_0x148d69){return function(_0x181288){_0x148d69[_0xef08('0x3')](_0x58631b,_0x181288);if(_0x58631b===_0xef08('0x4')){_0x148d69[_0xef08('0x3')](_0xef08('0x5')+_0x181288[_0xef08('0x6')],_0x181288);}};}exports['register']=function(_0x100270){for(var _0x4feee9=0x0,_0x2c43ab=events[_0xef08('0x7')];_0x4feee9<_0x2c43ab;_0x4feee9++){var _0x3390bc=events[_0x4feee9];var _0x714b2c=createListener(_0xef08('0x8')+_0x3390bc,_0x100270);UserSettingEvents['on'](_0x3390bc,_0x714b2c);}};
\ No newline at end of file
index 7d97eeb..e83b6ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4046=['getVoicePrefixes','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','create','bulkCreate','/:id/queues','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','/:id/login','login','/:id/pause','pause','/:id/unpause','addTeams','/:id/chat_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addWhatsappAccounts','createApiKey','put','update','/:id/password','changePassword','delete','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','util','path','connect-timeout','express','Router','./user.controller','get','isAuthenticated','index','describe','/whoami','whoami','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','/:id/contacts','getQueues','/:id/queues_rt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/prefixes'];(function(_0x3b13eb,_0x50a25d){var _0x16b0bd=function(_0x59b69c){while(--_0x59b69c){_0x3b13eb['push'](_0x3b13eb['shift']());}};_0x16b0bd(++_0x50a25d);}(_0x4046,0x126));var _0x6404=function(_0x20c23f,_0x39b686){_0x20c23f=_0x20c23f-0x0;var _0x1c6c78=_0x4046[_0x20c23f];return _0x1c6c78;};'use strict';var multer=require('multer');var util=require(_0x6404('0x0'));var path=require(_0x6404('0x1'));var timeout=require(_0x6404('0x2'));var express=require(_0x6404('0x3'));var router=express[_0x6404('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6404('0x5'));router[_0x6404('0x6')]('/',auth[_0x6404('0x7')](),controller[_0x6404('0x8')]);router[_0x6404('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x6404('0x9')]);router['get'](_0x6404('0xa'),auth[_0x6404('0x7')](),controller[_0x6404('0xb')]);router[_0x6404('0x6')]('/presence',auth['isAuthenticated'](),controller[_0x6404('0xc')]);router[_0x6404('0x6')](_0x6404('0xd'),auth[_0x6404('0x7')](),controller[_0x6404('0xe')]);router[_0x6404('0x6')](_0x6404('0xf'),controller[_0x6404('0x10')]);router[_0x6404('0x6')](_0x6404('0x11'),auth[_0x6404('0x7')](),controller['getOpenTabs']);router[_0x6404('0x6')](_0x6404('0x12'),auth[_0x6404('0x7')](),controller['getContacts']);router[_0x6404('0x6')]('/:id/queues',auth[_0x6404('0x7')](),controller[_0x6404('0x13')]);router['get'](_0x6404('0x14'),auth[_0x6404('0x7')](),controller['getVoiceQueuesRt']);router[_0x6404('0x6')](_0x6404('0x15'),auth[_0x6404('0x7')](),controller[_0x6404('0x16')]);router[_0x6404('0x6')](_0x6404('0x17'),auth[_0x6404('0x7')](),controller[_0x6404('0x18')]);router['get'](_0x6404('0x19'),auth[_0x6404('0x7')](),controller[_0x6404('0x1a')]);router[_0x6404('0x6')](_0x6404('0x1b'),auth[_0x6404('0x7')](),controller[_0x6404('0x1c')]);router['get']('/:id/openchannel/interactions',auth[_0x6404('0x7')](),controller[_0x6404('0x1d')]);router[_0x6404('0x6')](_0x6404('0x1e'),auth[_0x6404('0x7')](),controller['getMailInteractions']);router[_0x6404('0x6')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0x6404('0x1f')]);router[_0x6404('0x6')](_0x6404('0x20'),auth[_0x6404('0x7')](),controller[_0x6404('0x21')]);router['get'](_0x6404('0x22'),auth[_0x6404('0x7')](),controller[_0x6404('0x23')]);router[_0x6404('0x6')](_0x6404('0x24'),auth[_0x6404('0x7')](),controller[_0x6404('0x25')]);router[_0x6404('0x6')](_0x6404('0x26'),auth[_0x6404('0x7')](),controller[_0x6404('0x27')]);router[_0x6404('0x6')](_0x6404('0x28'),auth['isAuthenticated'](),controller['getAgents']);router['get'](_0x6404('0x29'),auth[_0x6404('0x7')](),controller[_0x6404('0x2a')]);router[_0x6404('0x6')]('/:id/fax_accounts',auth[_0x6404('0x7')](),controller['getFaxAccounts']);router[_0x6404('0x6')](_0x6404('0x2b'),auth[_0x6404('0x7')](),controller[_0x6404('0x2c')]);router[_0x6404('0x6')](_0x6404('0x2d'),auth[_0x6404('0x7')](),controller[_0x6404('0x2e')]);router['get'](_0x6404('0x2f'),auth[_0x6404('0x7')](),controller[_0x6404('0x30')]);router[_0x6404('0x6')]('/:id/chat_websites',auth[_0x6404('0x7')](),controller[_0x6404('0x31')]);router[_0x6404('0x6')](_0x6404('0x32'),auth[_0x6404('0x7')](),controller['getWhatsappAccounts']);router['get'](_0x6404('0x33'),auth[_0x6404('0x7')](),controller[_0x6404('0x34')]);router[_0x6404('0x6')](_0x6404('0x35'),auth[_0x6404('0x7')](),controller['getApiKey']);router[_0x6404('0x36')]('/:id/contacts',auth['isAuthenticated'](),controller['addContacts']);router[_0x6404('0x36')]('/',auth['isAuthenticated'](),controller[_0x6404('0x37')]);router['post']('/create_many',auth[_0x6404('0x7')](),controller[_0x6404('0x38')]);router['post'](_0x6404('0x39'),auth[_0x6404('0x7')](),controller[_0x6404('0x3a')]);var upload=multer({'storage':multer[_0x6404('0x3b')]({'destination':function(_0x5b6fed,_0x4fef1a,_0x2fc68d){_0x2fc68d(null,path[_0x6404('0x3c')](config[_0x6404('0x3d')],_0x6404('0x3e')));},'filename':function(_0x196a49,_0x19c501,_0x77bfac){_0x77bfac(null,util[_0x6404('0x3f')](_0x6404('0x40'),Date[_0x6404('0x41')](),_0x19c501[_0x6404('0x42')]));}})});router[_0x6404('0x36')](_0x6404('0xf'),upload[_0x6404('0x43')](_0x6404('0x44')),controller[_0x6404('0x45')]);router[_0x6404('0x36')](_0x6404('0x46'),auth[_0x6404('0x7')](),controller[_0x6404('0x47')]);router['post']('/:id/logout',auth[_0x6404('0x7')](),controller['logout']);router[_0x6404('0x36')](_0x6404('0x48'),auth[_0x6404('0x7')](),controller[_0x6404('0x49')]);router[_0x6404('0x36')](_0x6404('0x4a'),auth[_0x6404('0x7')](),controller['unpause']);router['post'](_0x6404('0x24'),auth[_0x6404('0x7')](),controller[_0x6404('0x4b')]);router[_0x6404('0x36')](_0x6404('0x4c'),auth[_0x6404('0x7')](),controller['addChatInteractions']);router['post']('/:id/mail_interactions',auth[_0x6404('0x7')](),controller[_0x6404('0x4d')]);router['post'](_0x6404('0x4e'),auth[_0x6404('0x7')](),controller[_0x6404('0x4f')]);router[_0x6404('0x36')](_0x6404('0x50'),auth[_0x6404('0x7')](),controller[_0x6404('0x51')]);router[_0x6404('0x36')]('/:id/openchannel_interactions',auth[_0x6404('0x7')](),controller[_0x6404('0x52')]);router[_0x6404('0x36')](_0x6404('0x53'),auth[_0x6404('0x7')](),controller['addWhatsappInteractions']);router[_0x6404('0x36')](_0x6404('0x54'),auth['isAuthenticated'](),controller[_0x6404('0x55')]);router[_0x6404('0x36')](_0x6404('0x2b'),auth[_0x6404('0x7')](),controller[_0x6404('0x56')]);router[_0x6404('0x36')](_0x6404('0x2d'),auth['isAuthenticated'](),controller[_0x6404('0x57')]);router[_0x6404('0x36')]('/:id/sms_accounts',auth['isAuthenticated'](),controller[_0x6404('0x58')]);router[_0x6404('0x36')](_0x6404('0x59'),auth['isAuthenticated'](),controller['addChatWebsites']);router[_0x6404('0x36')](_0x6404('0x32'),auth[_0x6404('0x7')](),controller[_0x6404('0x5a')]);router[_0x6404('0x36')]('/:id/api_key',auth[_0x6404('0x7')](),controller[_0x6404('0x5b')]);router[_0x6404('0x5c')](_0x6404('0xd'),auth[_0x6404('0x7')](),controller[_0x6404('0x5d')]);router[_0x6404('0x5c')](_0x6404('0x5e'),auth[_0x6404('0x7')](),controller[_0x6404('0x5f')]);router[_0x6404('0x60')](_0x6404('0x39'),auth[_0x6404('0x7')](),controller['removeQueues']);router['delete'](_0x6404('0x24'),auth[_0x6404('0x7')](),controller[_0x6404('0x61')]);router['delete']('/:id',auth[_0x6404('0x7')](),controller[_0x6404('0x62')]);router[_0x6404('0x60')](_0x6404('0x4c'),auth[_0x6404('0x7')](),controller[_0x6404('0x63')]);router[_0x6404('0x60')](_0x6404('0x64'),auth[_0x6404('0x7')](),controller[_0x6404('0x65')]);router[_0x6404('0x60')](_0x6404('0x4e'),auth[_0x6404('0x7')](),controller[_0x6404('0x66')]);router['delete'](_0x6404('0x50'),auth['isAuthenticated'](),controller['removeSmsInteractions']);router['delete'](_0x6404('0x67'),auth[_0x6404('0x7')](),controller[_0x6404('0x68')]);router[_0x6404('0x60')](_0x6404('0x53'),auth['isAuthenticated'](),controller[_0x6404('0x69')]);router[_0x6404('0x60')](_0x6404('0x54'),auth[_0x6404('0x7')](),controller[_0x6404('0x6a')]);router[_0x6404('0x60')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x6404('0x6b')]);router[_0x6404('0x60')](_0x6404('0x2d'),auth[_0x6404('0x7')](),controller[_0x6404('0x6c')]);router['delete'](_0x6404('0x2f'),auth[_0x6404('0x7')](),controller['removeSmsAccounts']);router[_0x6404('0x60')](_0x6404('0x59'),auth[_0x6404('0x7')](),controller[_0x6404('0x6d')]);router['delete'](_0x6404('0x32'),auth[_0x6404('0x7')](),controller[_0x6404('0x6e')]);router[_0x6404('0x60')]('/:id/api_key',auth[_0x6404('0x7')](),controller[_0x6404('0x6f')]);module['exports']=router;
\ No newline at end of file
+var _0x69d3=['/presence','getPresence','show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getQueues','getVoiceQueuesRt','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','/:id/agents','getAgents','/:id/prefixes','getFaxAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','/:id/queues','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','file','addAvatar','/:id/login','login','/:id/logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','createApiKey','put','/:id','update','/:id/password','changePassword','removeQueues','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','multer','util','path','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/whoami'];(function(_0x3310f9,_0x4a3aba){var _0x2d03db=function(_0x15e499){while(--_0x15e499){_0x3310f9['push'](_0x3310f9['shift']());}};_0x2d03db(++_0x4a3aba);}(_0x69d3,0xda));var _0x369d=function(_0x487237,_0x389806){_0x487237=_0x487237-0x0;var _0x7cad8c=_0x69d3[_0x487237];return _0x7cad8c;};'use strict';var multer=require(_0x369d('0x0'));var util=require(_0x369d('0x1'));var path=require(_0x369d('0x2'));var timeout=require('connect-timeout');var express=require(_0x369d('0x3'));var router=express[_0x369d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x369d('0x5'));var config=require('../../config/environment');var controller=require('./user.controller');router[_0x369d('0x6')]('/',auth[_0x369d('0x7')](),controller[_0x369d('0x8')]);router[_0x369d('0x6')](_0x369d('0x9'),auth[_0x369d('0x7')](),controller[_0x369d('0xa')]);router[_0x369d('0x6')](_0x369d('0xb'),auth['isAuthenticated'](),controller['whoami']);router[_0x369d('0x6')](_0x369d('0xc'),auth[_0x369d('0x7')](),controller[_0x369d('0xd')]);router['get']('/:id',auth[_0x369d('0x7')](),controller[_0x369d('0xe')]);router[_0x369d('0x6')](_0x369d('0xf'),controller[_0x369d('0x10')]);router[_0x369d('0x6')]('/:id/open_tabs',auth[_0x369d('0x7')](),controller[_0x369d('0x11')]);router[_0x369d('0x6')](_0x369d('0x12'),auth[_0x369d('0x7')](),controller['getContacts']);router['get']('/:id/queues',auth[_0x369d('0x7')](),controller[_0x369d('0x13')]);router[_0x369d('0x6')]('/:id/queues_rt',auth[_0x369d('0x7')](),controller[_0x369d('0x14')]);router[_0x369d('0x6')]('/:id/groups',auth[_0x369d('0x7')](),controller[_0x369d('0x15')]);router['get']('/:id/recordings',auth['isAuthenticated'](),controller[_0x369d('0x16')]);router[_0x369d('0x6')](_0x369d('0x17'),auth['isAuthenticated'](),controller[_0x369d('0x18')]);router[_0x369d('0x6')](_0x369d('0x19'),auth[_0x369d('0x7')](),controller[_0x369d('0x1a')]);router['get'](_0x369d('0x1b'),auth[_0x369d('0x7')](),controller[_0x369d('0x1c')]);router[_0x369d('0x6')](_0x369d('0x1d'),auth[_0x369d('0x7')](),controller[_0x369d('0x1e')]);router[_0x369d('0x6')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0x369d('0x1f')]);router[_0x369d('0x6')](_0x369d('0x20'),auth[_0x369d('0x7')](),controller[_0x369d('0x21')]);router[_0x369d('0x6')](_0x369d('0x22'),auth['isAuthenticated'](),controller['getWhatsappInteractions']);router[_0x369d('0x6')](_0x369d('0x23'),auth[_0x369d('0x7')](),controller[_0x369d('0x24')]);router[_0x369d('0x6')](_0x369d('0x25'),auth[_0x369d('0x7')](),controller['getLists']);router[_0x369d('0x6')](_0x369d('0x26'),auth[_0x369d('0x7')](),controller[_0x369d('0x27')]);router[_0x369d('0x6')](_0x369d('0x28'),auth[_0x369d('0x7')](),controller['getVoicePrefixes']);router[_0x369d('0x6')]('/:id/fax_accounts',auth['isAuthenticated'](),controller[_0x369d('0x29')]);router[_0x369d('0x6')]('/:id/mail_accounts',auth[_0x369d('0x7')](),controller['getMailAccounts']);router[_0x369d('0x6')](_0x369d('0x2a'),auth[_0x369d('0x7')](),controller[_0x369d('0x2b')]);router[_0x369d('0x6')](_0x369d('0x2c'),auth[_0x369d('0x7')](),controller['getSmsAccounts']);router[_0x369d('0x6')](_0x369d('0x2d'),auth[_0x369d('0x7')](),controller[_0x369d('0x2e')]);router[_0x369d('0x6')](_0x369d('0x2f'),auth[_0x369d('0x7')](),controller[_0x369d('0x30')]);router['get'](_0x369d('0x31'),auth[_0x369d('0x7')](),controller[_0x369d('0x32')]);router[_0x369d('0x6')](_0x369d('0x33'),auth['isAuthenticated'](),controller[_0x369d('0x34')]);router[_0x369d('0x35')](_0x369d('0x12'),auth[_0x369d('0x7')](),controller[_0x369d('0x36')]);router[_0x369d('0x35')]('/',auth['isAuthenticated'](),controller[_0x369d('0x37')]);router[_0x369d('0x35')](_0x369d('0x38'),auth[_0x369d('0x7')](),controller[_0x369d('0x39')]);router[_0x369d('0x35')](_0x369d('0x3a'),auth[_0x369d('0x7')](),controller[_0x369d('0x3b')]);var upload=multer({'storage':multer[_0x369d('0x3c')]({'destination':function(_0xddb3c1,_0x1edb38,_0x2374b5){_0x2374b5(null,path[_0x369d('0x3d')](config[_0x369d('0x3e')],_0x369d('0x3f')));},'filename':function(_0x2ef7ae,_0x69c7af,_0x410974){_0x410974(null,util[_0x369d('0x40')](_0x369d('0x41'),Date[_0x369d('0x42')](),_0x69c7af[_0x369d('0x43')]));}})});router[_0x369d('0x35')]('/:id/avatar',upload['single'](_0x369d('0x44')),controller[_0x369d('0x45')]);router[_0x369d('0x35')](_0x369d('0x46'),auth[_0x369d('0x7')](),controller[_0x369d('0x47')]);router[_0x369d('0x35')](_0x369d('0x48'),auth[_0x369d('0x7')](),controller['logout']);router[_0x369d('0x35')](_0x369d('0x49'),auth[_0x369d('0x7')](),controller[_0x369d('0x4a')]);router[_0x369d('0x35')](_0x369d('0x4b'),auth[_0x369d('0x7')](),controller[_0x369d('0x4c')]);router['post']('/:id/teams',auth[_0x369d('0x7')](),controller[_0x369d('0x4d')]);router[_0x369d('0x35')]('/:id/chat_interactions',auth['isAuthenticated'](),controller['addChatInteractions']);router[_0x369d('0x35')](_0x369d('0x4e'),auth['isAuthenticated'](),controller[_0x369d('0x4f')]);router[_0x369d('0x35')](_0x369d('0x50'),auth[_0x369d('0x7')](),controller['addFaxInteractions']);router[_0x369d('0x35')]('/:id/sms_interactions',auth[_0x369d('0x7')](),controller['addSmsInteractions']);router[_0x369d('0x35')](_0x369d('0x51'),auth[_0x369d('0x7')](),controller['addOpenchannelInteractions']);router['post'](_0x369d('0x52'),auth[_0x369d('0x7')](),controller[_0x369d('0x53')]);router['post'](_0x369d('0x54'),auth[_0x369d('0x7')](),controller[_0x369d('0x55')]);router[_0x369d('0x35')](_0x369d('0x56'),auth[_0x369d('0x7')](),controller[_0x369d('0x57')]);router[_0x369d('0x35')](_0x369d('0x2a'),auth['isAuthenticated'](),controller[_0x369d('0x58')]);router[_0x369d('0x35')](_0x369d('0x2c'),auth[_0x369d('0x7')](),controller[_0x369d('0x59')]);router[_0x369d('0x35')]('/:id/chat_websites',auth[_0x369d('0x7')](),controller[_0x369d('0x5a')]);router[_0x369d('0x35')](_0x369d('0x2f'),auth[_0x369d('0x7')](),controller[_0x369d('0x5b')]);router[_0x369d('0x35')](_0x369d('0x33'),auth[_0x369d('0x7')](),controller[_0x369d('0x5c')]);router[_0x369d('0x5d')](_0x369d('0x5e'),auth['isAuthenticated'](),controller[_0x369d('0x5f')]);router[_0x369d('0x5d')](_0x369d('0x60'),auth[_0x369d('0x7')](),controller[_0x369d('0x61')]);router['delete'](_0x369d('0x3a'),auth['isAuthenticated'](),controller[_0x369d('0x62')]);router[_0x369d('0x63')](_0x369d('0x23'),auth[_0x369d('0x7')](),controller[_0x369d('0x64')]);router[_0x369d('0x63')](_0x369d('0x5e'),auth[_0x369d('0x7')](),controller[_0x369d('0x65')]);router[_0x369d('0x63')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0x369d('0x66')]);router[_0x369d('0x63')](_0x369d('0x4e'),auth[_0x369d('0x7')](),controller[_0x369d('0x67')]);router['delete']('/:id/fax_interactions',auth[_0x369d('0x7')](),controller[_0x369d('0x68')]);router['delete'](_0x369d('0x69'),auth['isAuthenticated'](),controller[_0x369d('0x6a')]);router[_0x369d('0x63')](_0x369d('0x51'),auth['isAuthenticated'](),controller[_0x369d('0x6b')]);router[_0x369d('0x63')](_0x369d('0x52'),auth[_0x369d('0x7')](),controller['removeWhatsappInteractions']);router['delete'](_0x369d('0x54'),auth[_0x369d('0x7')](),controller[_0x369d('0x6c')]);router['delete'](_0x369d('0x56'),auth[_0x369d('0x7')](),controller[_0x369d('0x6d')]);router['delete']('/:id/openchannel_accounts',auth[_0x369d('0x7')](),controller[_0x369d('0x6e')]);router[_0x369d('0x63')](_0x369d('0x2c'),auth['isAuthenticated'](),controller[_0x369d('0x6f')]);router[_0x369d('0x63')](_0x369d('0x2d'),auth[_0x369d('0x7')](),controller[_0x369d('0x70')]);router['delete'](_0x369d('0x2f'),auth[_0x369d('0x7')](),controller[_0x369d('0x71')]);router['delete'](_0x369d('0x33'),auth['isAuthenticated'](),controller[_0x369d('0x72')]);module['exports']=router;
\ No newline at end of file
index 94c1712..20f5ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['certificate','passive','nonat','update,nonat','TEXT','showWebBar','wss','encryption','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','rtcp_mux','avpf','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','setDataValue','name','defaultuser','callerid','getDataValue','internal','email','admin','user','agent','telephone','INTEGER','format','fullname','BOOLEAN','DATE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','update','outgoing','force_rport,comedia','nat','split','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas'];(function(_0x349367,_0x1cede2){var _0x14179b=function(_0x38a191){while(--_0x38a191){_0x349367['push'](_0x349367['shift']());}};_0x14179b(++_0x1cede2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x333808){this[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x333808);this[_0x0a9e('0x4')](_0x0a9e('0x6'),_0x333808);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'set':function(_0x441e3a){this[_0x0a9e('0x4')]('fullname',_0x441e3a);this['setDataValue'](_0x0a9e('0x7'),util['format']('\x22%s\x22\x20<%s>',_0x441e3a,this[_0x0a9e('0x8')](_0x0a9e('0x9'))));}},'alias':{'type':Sequelize[_0x0a9e('0x3')]},'email':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':_0x0a9e('0xa'),'validate':{'isEmail':!![]},'set':function(_0xbd1168){if(_0xbd1168){this['setDataValue']('email',_0xbd1168['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe')),'allowNull':![]},'password':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':![],'unique':_0x0a9e('0x9'),'set':function(_0x2b4227){this[_0x0a9e('0x4')](_0x0a9e('0x9'),_0x2b4227);this[_0x0a9e('0x4')]('accountcode',_0x2b4227);this[_0x0a9e('0x4')]('callerid',util[_0x0a9e('0x10')]('\x22%s\x22\x20<%s>',this[_0x0a9e('0x8')](_0x0a9e('0x11')),_0x2b4227));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0a9e('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x0a9e('0x3')]},'zipcode':{'type':Sequelize[_0x0a9e('0x3')]},'userpic':{'type':Sequelize[_0x0a9e('0x3')]},'city':{'type':Sequelize[_0x0a9e('0x3')]},'country':{'type':Sequelize[_0x0a9e('0x3')]},'online':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x0a9e('0x13')]},'voicePause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x0a9e('0x13')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x14')},'ipaddr':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x0a9e('0xf')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x16'),_0x0a9e('0xc'),_0x0a9e('0x17')),'allowNull':!![],'defaultValue':_0x0a9e('0x16')},'context':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x18')},'callingpres':{'type':Sequelize[_0x0a9e('0x15')]('ALLOWED_NOT_SCREENED',_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),_0x0a9e('0x1c'),'PROHIB_PASSED_SCREEN',_0x0a9e('0x1d'),_0x0a9e('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x1f'),'set':function(_0x540530){this[_0x0a9e('0x4')]('transport',_0x540530?_0x540530[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x21'))?this[_0x0a9e('0x8')](_0x0a9e('0x21'))['split'](','):null;},'comment':_0x0a9e('0x22')},'dtmfmode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x23'),_0x0a9e('0x24'),_0x0a9e('0x25'),_0x0a9e('0x26'),_0x0a9e('0x27')),'allowNull':!![],'defaultValue':_0x0a9e('0x23')},'directmedia':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no','nonat',_0x0a9e('0x29'),_0x0a9e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x2b'),'set':function(_0x15de0e){this['setDataValue']('nat',_0x15de0e?_0x15de0e[_0x0a9e('0x20')](','):null);},'get':function(){return this['getDataValue'](_0x0a9e('0x2c'))?this[_0x0a9e('0x8')](_0x0a9e('0x2c'))[_0x0a9e('0x2d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x0a9e('0x3')]},'pickupgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0a9e('0x3')]},'disallow':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0a9e('0x2e'),'set':function(_0x40d766){this['setDataValue'](_0x0a9e('0x2f'),_0x40d766?_0x40d766[_0x0a9e('0x20')](';'):_0x0a9e('0x2e'));},'get':function(){return this[_0x0a9e('0x8')]('allow')?this['getDataValue'](_0x0a9e('0x2f'))[_0x0a9e('0x2d')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'set':function(_0x5b4f5e){this[_0x0a9e('0x4')](_0x0a9e('0x30'),_0x5b4f5e?_0x5b4f5e[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x30'))?this[_0x0a9e('0x8')](_0x0a9e('0x30'))[_0x0a9e('0x2d')](','):null;},'comment':_0x0a9e('0x31')},'trustrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x32')},'amaflags':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':_0x0a9e('0x28')},'busylevel':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0a9e('0x15')]('yes','no',_0x0a9e('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x34'),_0x0a9e('0x35'),_0x0a9e('0x36')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x0a9e('0x37'),_0x0a9e('0x38')),'allowNull':!![],'defaultValue':_0x0a9e('0x38')},'t38pt_usertpsource':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','fingerprint',_0x0a9e('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0a9e('0x15')]('active',_0x0a9e('0x3a'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no',_0x0a9e('0x3b'),_0x0a9e('0x29'),_0x0a9e('0x3c')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0a9e('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x0a9e('0x13')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0a9e('0x3d')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x3649cc){this['setDataValue'](_0x0a9e('0x3e'),_0x3649cc);var _0x5ba1f9=this['get']({'plain':!![]});switch(_0x3649cc){case 0x0:case 0x1:var _0x5674ee=_0x5ba1f9[_0x0a9e('0x21')]?_['isArray'](_0x5ba1f9[_0x0a9e('0x21')])?_0x5ba1f9[_0x0a9e('0x21')][_0x0a9e('0x20')]():_0x5ba1f9[_0x0a9e('0x21')]:_0x0a9e('0x1f');if(_0x5674ee===_0x0a9e('0x3f')){_0x5674ee='udp';}this[_0x0a9e('0x4')]('transport',_0x5674ee);this[_0x0a9e('0x4')](_0x0a9e('0x40'),'no');this[_0x0a9e('0x4')]('avpf',null);this[_0x0a9e('0x4')](_0x0a9e('0x41'),null);this[_0x0a9e('0x4')](_0x0a9e('0x42'),null);this['setDataValue'](_0x0a9e('0x43'),null);this[_0x0a9e('0x4')]('dtlsverify',null);this[_0x0a9e('0x4')](_0x0a9e('0x44'),null);this[_0x0a9e('0x4')](_0x0a9e('0x45'),null);this[_0x0a9e('0x4')]('dtlsprivatekey',null);this[_0x0a9e('0x4')](_0x0a9e('0x46'),'no');break;case 0x2:this[_0x0a9e('0x4')]('transport',_0x0a9e('0x3f'));this['setDataValue']('encryption',_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x47'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x41'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x42'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x43'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x48'),'no');this[_0x0a9e('0x4')](_0x0a9e('0x44'),_0x0a9e('0x49'));this['setDataValue'](_0x0a9e('0x45'),_0x5ba1f9[_0x0a9e('0x45')]||_0x0a9e('0x4a'));this['setDataValue'](_0x0a9e('0x4b'),_0x5ba1f9[_0x0a9e('0x4b')]||'/etc/pki/tls/private/motion.key');this[_0x0a9e('0x4')](_0x0a9e('0x46'),_0x0a9e('0x28'));break;default:}}},'permissions':{'type':Sequelize[_0x0a9e('0x3d')],'set':function(_0x13b5c0){this['setDataValue']('permissions',_0x13b5c0?_0x13b5c0['join'](','):[]);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x4c'))?_[_0x0a9e('0x4d')](this[_0x0a9e('0x8')](_0x0a9e('0x4c'))[_0x0a9e('0x2d')](','),function(_0xeef20){return parseInt(_0xeef20,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0a9e('0x4e')],'get':function(){return this[_0x0a9e('0x8')]('phoneBarEnableScreenRecordingByAgent')?this[_0x0a9e('0x8')](_0x0a9e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![],'set':function(_0xdb98ca){if(typeof _0xdb98ca===_0x0a9e('0x50')){var _0x3df0e3=_0xdb98ca==='1'?!![]:_0xdb98ca==='0'?![]:_0xdb98ca===_0x0a9e('0x51')?!![]:_0xdb98ca===_0x0a9e('0x52')?![]:![];this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0x3df0e3);}else{this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0xdb98ca);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0xf4120f){this[_0x0a9e('0x4')](_0x0a9e('0x54'),_0xf4120f);if(_0xf4120f===!![]){this['setDataValue'](_0x0a9e('0x55'),moment());this[_0x0a9e('0x4')](_0x0a9e('0x56'),0x0);}else{this[_0x0a9e('0x4')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0a9e('0xf')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['admin','user','agent','telephone','local','accountcode','BOOLEAN','DATE','INTEGER','dynamic','friend','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]','rfc2833','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','insecure','\x22\x22\x20<>','always','accept','uac','uas','certificate','active','passive','actpass','update,nonat','showWebBar','get','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','wss','avpf','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','rtcp_mux','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','blocked','blockedAt','UNSIGNED','sequelize','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM'];(function(_0x12994a,_0x47ebbb){var _0x504157=function(_0x347df7){while(--_0x347df7){_0x12994a['push'](_0x12994a['shift']());}};_0x504157(++_0x47ebbb);}(_0xe706,0xa3));var _0x6e70=function(_0x2c7341,_0x293a18){_0x2c7341=_0x2c7341-0x0;var _0x23f3fc=_0xe706[_0x2c7341];return _0x23f3fc;};'use strict';var Sequelize=require(_0x6e70('0x0'));var moment=require(_0x6e70('0x1'));var util=require(_0x6e70('0x2'));var _=require('lodash');module[_0x6e70('0x3')]={'name':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'unique':_0x6e70('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x7dfbc3){this[_0x6e70('0x6')](_0x6e70('0x5'),_0x7dfbc3);this[_0x6e70('0x6')](_0x6e70('0x7'),_0x7dfbc3);},'comment':_0x6e70('0x8')},'fullname':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'set':function(_0x36357b){this[_0x6e70('0x6')](_0x6e70('0x9'),_0x36357b);this[_0x6e70('0x6')](_0x6e70('0xa'),util[_0x6e70('0xb')](_0x6e70('0xc'),_0x36357b,this[_0x6e70('0xd')](_0x6e70('0xe'))));}},'alias':{'type':Sequelize[_0x6e70('0x4')]},'email':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'unique':_0x6e70('0xf'),'validate':{'isEmail':!![]},'set':function(_0x37b3e0){if(_0x37b3e0){this[_0x6e70('0x6')]('email',_0x37b3e0['toLowerCase']());}}},'role':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x11'),_0x6e70('0x12'),_0x6e70('0x13'),_0x6e70('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':_0x6e70('0x15')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':'internal','set':function(_0x48bc72){this[_0x6e70('0x6')]('internal',_0x48bc72);this['setDataValue'](_0x6e70('0x16'),_0x48bc72);this[_0x6e70('0x6')]('callerid',util[_0x6e70('0xb')]('\x22%s\x22\x20<%s>',this[_0x6e70('0xd')](_0x6e70('0x9')),_0x48bc72));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x6e70('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x6e70('0x4')]},'userpic':{'type':Sequelize[_0x6e70('0x4')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x6e70('0x18')]},'voicePause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x6e70('0x18')]},'chatCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'description':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x1a')},'ipaddr':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x6e70('0x19')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x1b'),'user',_0x6e70('0x1c')),'allowNull':!![],'defaultValue':_0x6e70('0x1b')},'context':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'defaultValue':_0x6e70('0x1d')},'callingpres':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x1e'),_0x6e70('0x1f'),_0x6e70('0x20'),_0x6e70('0x21'),_0x6e70('0x22'),'PROHIB_PASSED_SCREEN',_0x6e70('0x23'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x24'),'set':function(_0x42b094){this['setDataValue'](_0x6e70('0x25'),_0x42b094?_0x42b094[_0x6e70('0x26')](','):null);},'get':function(){return this['getDataValue'](_0x6e70('0x25'))?this[_0x6e70('0xd')](_0x6e70('0x25'))[_0x6e70('0x27')](','):null;},'comment':_0x6e70('0x28')},'dtmfmode':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x29'),_0x6e70('0x2a'),_0x6e70('0x2b'),_0x6e70('0x2c'),'auto'),'allowNull':!![],'defaultValue':_0x6e70('0x29')},'directmedia':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no',_0x6e70('0x2e'),_0x6e70('0x2f'),_0x6e70('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'defaultValue':_0x6e70('0x31'),'set':function(_0x2a5444){this[_0x6e70('0x6')](_0x6e70('0x32'),_0x2a5444?_0x2a5444['join'](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x6e70('0xd')](_0x6e70('0x32'))[_0x6e70('0x27')](','):null;},'comment':_0x6e70('0x33')},'callgroup':{'type':Sequelize[_0x6e70('0x4')]},'namedcallgroup':{'type':Sequelize[_0x6e70('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x6e70('0x4')]},'language':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x6e70('0x4')]},'disallow':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':_0x6e70('0x34')},'allow':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':_0x6e70('0x35'),'set':function(_0x16fc7d){this['setDataValue'](_0x6e70('0x36'),_0x16fc7d?_0x16fc7d[_0x6e70('0x26')](';'):_0x6e70('0x35'));},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x36'))?this[_0x6e70('0xd')](_0x6e70('0x36'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'set':function(_0x83847b){this[_0x6e70('0x6')](_0x6e70('0x37'),_0x83847b?_0x83847b['join'](','):null);},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x37'))?this[_0x6e70('0xd')]('insecure')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x38')},'amaflags':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x6e70('0x2d')},'busylevel':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x6e70('0x10')]('yes','no',_0x6e70('0x39')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3a'),'refuse','originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3b'),_0x6e70('0x3c')),'allowNull':!![],'defaultValue':_0x6e70('0x3c')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','fingerprint',_0x6e70('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3e'),_0x6e70('0x3f'),_0x6e70('0x40')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','nonat',_0x6e70('0x2f'),_0x6e70('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x6e70('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x6e70('0x18')]},'passwordResetAt':{'type':Sequelize[_0x6e70('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x2f9be4){this[_0x6e70('0x6')](_0x6e70('0x42'),_0x2f9be4);var _0x41a861=this[_0x6e70('0x43')]({'plain':!![]});switch(_0x2f9be4){case 0x0:case 0x1:var _0x739946=_0x41a861[_0x6e70('0x25')]?_['isArray'](_0x41a861['transport'])?_0x41a861[_0x6e70('0x25')][_0x6e70('0x26')]():_0x41a861[_0x6e70('0x25')]:_0x6e70('0x24');if(_0x739946==='wss'){_0x739946='udp';}this[_0x6e70('0x6')](_0x6e70('0x25'),_0x739946);this['setDataValue']('encryption','no');this[_0x6e70('0x6')]('avpf',null);this[_0x6e70('0x6')](_0x6e70('0x44'),null);this[_0x6e70('0x6')](_0x6e70('0x45'),null);this[_0x6e70('0x6')](_0x6e70('0x46'),null);this[_0x6e70('0x6')](_0x6e70('0x47'),null);this['setDataValue'](_0x6e70('0x48'),null);this[_0x6e70('0x6')](_0x6e70('0x49'),null);this[_0x6e70('0x6')](_0x6e70('0x4a'),null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x6e70('0x25'),_0x6e70('0x4b'));this[_0x6e70('0x6')]('encryption','yes');this[_0x6e70('0x6')](_0x6e70('0x4c'),_0x6e70('0x2d'));this[_0x6e70('0x6')](_0x6e70('0x44'),_0x6e70('0x2d'));this['setDataValue'](_0x6e70('0x45'),_0x6e70('0x2d'));this[_0x6e70('0x6')](_0x6e70('0x46'),'yes');this[_0x6e70('0x6')]('dtlsverify','no');this['setDataValue'](_0x6e70('0x48'),_0x6e70('0x40'));this[_0x6e70('0x6')](_0x6e70('0x49'),_0x41a861[_0x6e70('0x49')]||_0x6e70('0x4d'));this['setDataValue'](_0x6e70('0x4a'),_0x41a861[_0x6e70('0x4a')]||_0x6e70('0x4e'));this[_0x6e70('0x6')](_0x6e70('0x4f'),_0x6e70('0x2d'));break;default:}}},'permissions':{'type':Sequelize[_0x6e70('0x50')],'set':function(_0xd9b4a9){this[_0x6e70('0x6')](_0x6e70('0x51'),_0xd9b4a9?_0xd9b4a9['join'](','):[]);},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x51'))?_[_0x6e70('0x52')](this['getDataValue']('permissions')[_0x6e70('0x27')](','),function(_0x18ecf0){return parseInt(_0x18ecf0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x6e70('0x53')],'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x54'))?this[_0x6e70('0xd')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x576069){if(typeof _0x576069===_0x6e70('0x55')){var _0x21e4c2=_0x576069==='1'?!![]:_0x576069==='0'?![]:_0x576069===_0x6e70('0x56')?!![]:_0x576069==='false'?![]:![];this['setDataValue']('screenrecording',_0x21e4c2);}else{this[_0x6e70('0x6')]('screenrecording',_0x576069);}}},'blocked':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![],'set':function(_0x34237d){this[_0x6e70('0x6')](_0x6e70('0x57'),_0x34237d);if(_0x34237d===!![]){this[_0x6e70('0x6')](_0x6e70('0x58'),moment());this[_0x6e70('0x6')]('loginAttempts',0x0);}else{this[_0x6e70('0x6')](_0x6e70('0x58'),null);}}},'blockedAt':{'type':Sequelize[_0x6e70('0x18')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x6e70('0x19')](0x5)[_0x6e70('0x59')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0}};
\ No newline at end of file
index 0d22351..e1cba75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc4=['findOne','order','sort','where','pick','hasOwnProperty','Tag','Tags','color','tag','nolimit','getQueues','Queue','Queues','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','format','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','socket','remoteAddress','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','LOGININPAUSE','concat','isMiddleware','resolve','pause','QueuePause','PAUSE','type','DEFAULT\x20PAUSE','Channel\x20parameter\x20%s\x20is\x20invalid','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','getTeams','addTeams','transaction','Team','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','TeamVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeAgent','UserVoicePrefix','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','user_has_chat_interactions:remove','addMailInteractions','spread','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','omit','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','$and','$or','$gt','$gte','$lt','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$iLike','$notILike','$overlap','$contains','$contained','$any','firstName','CmContact','dialActive','VoiceQueue','CmHopper','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','flatten','col','toString','asc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','APIBadRequestError','../../errors/api','APINotFoundError','../../mysqldb','socket.io-emitter','register','redis','defaults','localhost','http','request','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','emit','userNotification:recalc:','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','name','stack','send','index','User','fieldName','key','password','query','includeAll','include','UserSetting','userSetting','attributes','push','findAll','rows','chat','dataValues','fax','mail','openchannel','whatsapp','show','params','model','differenceBy','keys','rawAttributes','salt','filters','intersection','fields','length','true','merge','options','openTabs','sms','all','body','find','describe','addContacts','ids','Setting','securePassword','max','isNil','internal','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','103','113','105','107','108','100','111','114','115','create','Unauthorized','checkUserLimits','settingsEnabled','UserProfileSection','autoAssociation','UserProfileResource','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','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','telephone','isEmpty','compact','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','Queue:save','voice','SIP/%s','penalty','UserVoiceQueueRt','upsert','removeQueues','Unknown\x20channel','isArray','QueueId','Queue:remove','destroy','addAvatar','userpic','file','filename','getAvatar','join','download','existsSync','root','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','getContacts'];(function(_0x23b655,_0x4feb2b){var _0x364b32=function(_0x4e41ac){while(--_0x4e41ac){_0x23b655['push'](_0x23b655['shift']());}};_0x364b32(++_0x4feb2b);}(_0xdfc4,0xca));var _0x4dfc=function(_0x597009,_0x254949){_0x597009=_0x597009-0x0;var _0x4e88bd=_0xdfc4[_0x597009];return _0x4e88bd;};'use strict';var moment=require('moment');var util=require(_0x4dfc('0x0'));var path=require(_0x4dfc('0x1'));var fs=require('fs');var _=require(_0x4dfc('0x2'));var squel=require(_0x4dfc('0x3'));var jayson=require(_0x4dfc('0x4'));var Redis=require(_0x4dfc('0x5'));var authService=require(_0x4dfc('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x4dfc('0x7'))(_0x4dfc('0x8'));var utils=require('../../config/utils');var config=require(_0x4dfc('0x9'));var licenseUtil=require('../../config/license/util');var APIBadRequestError=require('../../errors/api')[_0x4dfc('0xa')];var APINotFoundError=require(_0x4dfc('0xb'))[_0x4dfc('0xc')];var APIHandleError=require(_0x4dfc('0xb'))['handleError'];var db=require(_0x4dfc('0xd'))['db'];var socket=require(_0x4dfc('0xe'))(new Redis(config['redis']));require('./user.socket')[_0x4dfc('0xf')](socket);config[_0x4dfc('0x10')]=_[_0x4dfc('0x11')](config[_0x4dfc('0x10')],{'host':_0x4dfc('0x12'),'port':0x18eb});var amiClient=jayson['client'][_0x4dfc('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0xf24a90,_0x241a55,_0x1d4042,_0x37a440){return new Promise(function(_0x52879a,_0x584d49){var _0x216e04=_0x37a440||amiClient;return _0x216e04[_0x4dfc('0x14')](_0xf24a90,_0x1d4042)['then'](function(_0x595864){logger[_0x4dfc('0x15')](_0x4dfc('0x16'),_0x241a55,'request\x20sent');logger['debug'](_0x4dfc('0x17'),_0x241a55,_0x4dfc('0x18'),JSON[_0x4dfc('0x19')](_0x595864));if(_0x595864[_0x4dfc('0x1a')]){if(_0x595864['error'][_0x4dfc('0x1b')]===0x1f4){logger[_0x4dfc('0x1a')](_0x4dfc('0x16'),_0x241a55,_0x595864[_0x4dfc('0x1a')]['message']);return _0x584d49(_0x595864[_0x4dfc('0x1a')][_0x4dfc('0x1c')]);}logger['error']('User,\x20%s,\x20%s',_0x241a55,_0x595864[_0x4dfc('0x1a')][_0x4dfc('0x1c')]);return _0x52879a(_0x595864[_0x4dfc('0x1a')][_0x4dfc('0x1c')]);}else{logger[_0x4dfc('0x15')]('User,\x20%s,\x20%s',_0x241a55,_0x4dfc('0x18'));_0x52879a(_0x595864[_0x4dfc('0x1d')][_0x4dfc('0x1c')]);}})[_0x4dfc('0x1e')](function(_0xf84f5){logger['error'](_0x4dfc('0x16'),_0x241a55,_0xf84f5);_0x584d49(_0xf84f5);});});}function respondWithStatusCode(_0x4da20d,_0x11f2d8){_0x11f2d8=_0x11f2d8||0xcc;return function(_0x1037aa){if(_0x1037aa){return _0x4da20d[_0x4dfc('0x1f')](_0x11f2d8);}return _0x4da20d[_0x4dfc('0x20')](_0x11f2d8)[_0x4dfc('0x21')]();};}function respondWithResult(_0x5beab4,_0x57d447){_0x57d447=_0x57d447||0xc8;return function(_0x2ef360){if(_0x2ef360){return _0x5beab4[_0x4dfc('0x20')](_0x57d447)[_0x4dfc('0x22')](_0x2ef360);}};}function respondWithFilteredResult(_0x1a6c3b,_0xb6b54b){return function(_0x3fa96a){if(_0x3fa96a){var _0x1c57ed=typeof _0xb6b54b[_0x4dfc('0x23')]===_0x4dfc('0x24')&&typeof _0xb6b54b[_0x4dfc('0x25')]==='undefined';var _0x1884bc=_0x3fa96a[_0x4dfc('0x26')];var _0x4707ab=_0x1c57ed?0x0:_0xb6b54b[_0x4dfc('0x23')];var _0x4419a6=_0x1c57ed?_0x3fa96a['count']:_0xb6b54b['offset']+_0xb6b54b[_0x4dfc('0x25')];var _0x4b1676;if(_0x4419a6>=_0x1884bc){_0x4419a6=_0x1884bc;_0x4b1676=0xc8;}else{_0x4b1676=0xce;}_0x1a6c3b[_0x4dfc('0x20')](_0x4b1676);return _0x1a6c3b['set'](_0x4dfc('0x27'),_0x4707ab+'-'+_0x4419a6+'/'+_0x1884bc)['json'](_0x3fa96a);}return null;};}function saveUpdates(_0x481041){return function(_0x105d30){if(_0x105d30){return _0x105d30[_0x4dfc('0x28')](_0x481041)[_0x4dfc('0x29')](function(_0x1a2c88){socket[_0x4dfc('0x2a')](_0x4dfc('0x2b')+_0x1a2c88['id'],{});return _0x1a2c88;});}return null;};}function removeEntity(_0x49b9d9){return function(_0x590575){if(_0x590575){return _0x590575['destroy']()['then'](function(){var _0x101d0f=_0x590575[_0x4dfc('0x2c')]({'plain':!![]});if(_0x101d0f[_0x4dfc('0x2d')]===_0x4dfc('0x2e'))return;var _0x436034=[{'name':_0x4dfc('0x2f'),'value':_0x4dfc('0x30'),'ignore':!![]},{'name':_0x4dfc('0x31'),'value':_0x4dfc('0x32'),'ignore':![]},{'name':_0x4dfc('0x33'),'value':'telephone','ignore':![]}];var _0x1c3c1b=_(_0x436034)[_0x4dfc('0x34')](_0x4dfc('0x35'))[_0x4dfc('0x36')]('value')[_0x4dfc('0x37')]();if(_[_0x4dfc('0x38')](_0x1c3c1b,_0x101d0f[_0x4dfc('0x2d')])){return;}var _0x2d0457=_['find'](_0x436034,['value',_0x101d0f['role']])[_0x4dfc('0x39')];return db['UserProfileResource']['destroy']({'where':{'type':_0x2d0457,'resourceId':_0x101d0f['id']}})['then'](function(){return _0x590575;});})['then'](function(){_0x49b9d9[_0x4dfc('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4830ec){return function(_0x2b4ad6){if(!_0x2b4ad6){_0x4830ec[_0x4dfc('0x1f')](0x194);}return _0x2b4ad6;};}function handleError(_0x329b82,_0x585b3a){_0x585b3a=_0x585b3a||0x1f4;return function(_0x5e2d59){logger['error'](_0x5e2d59[_0x4dfc('0x3a')]);if(_0x5e2d59[_0x4dfc('0x39')]){delete _0x5e2d59[_0x4dfc('0x39')];}_0x329b82[_0x4dfc('0x20')](_0x585b3a)[_0x4dfc('0x3b')](_0x5e2d59);};}exports[_0x4dfc('0x3c')]=function(_0xd5cfb5,_0x8de7bf){var _0x52e15a={},_0x4bd9fe={'count':0x0,'rows':[]};var _0x20fd59=_(db[_0x4dfc('0x3d')]['rawAttributes'])['map'](function(_0x917f4c){return{'name':_0x917f4c[_0x4dfc('0x3e')],'type':_0x917f4c['type'][_0x4dfc('0x3f')]};})['filter'](function(_0x46b314){return!_['includes']([_0x4dfc('0x40'),'salt'],_0x46b314[_0x4dfc('0x39')]);})['value']();_0x52e15a=qs['getOptions'](_0x20fd59,_0xd5cfb5);var _0x21894f={'where':_0x52e15a['where']};return db[_0x4dfc('0x3d')]['count'](_0x21894f)[_0x4dfc('0x29')](function(_0xc38151){_0x4bd9fe[_0x4dfc('0x26')]=_0xc38151;if(_0xd5cfb5[_0x4dfc('0x41')][_0x4dfc('0x42')]){_0x52e15a['include']=[{'all':!![]}];}if(_0xd5cfb5['query']['userSetting']==='true'){_0x52e15a[_0x4dfc('0x43')]=[{'model':db[_0x4dfc('0x44')],'as':_0x4dfc('0x45')}];}if(!_[_0x4dfc('0x38')](_0x52e15a[_0x4dfc('0x46')],'id')){_0x52e15a[_0x4dfc('0x46')][_0x4dfc('0x47')]('id');}return db[_0x4dfc('0x3d')][_0x4dfc('0x48')](_0x52e15a);})['then'](function(_0x49be65){_0x4bd9fe[_0x4dfc('0x49')]=_0x49be65;if(_0xd5cfb5['query']['openTabs']==='true'){var _0x2df2a0=[];for(var _0x4c5fb8=0x0;_0x4c5fb8<_0x4bd9fe['rows']['length'];_0x4c5fb8++){_0x2df2a0[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4a'),_0x4bd9fe[_0x4dfc('0x49')][_0x4c5fb8][_0x4dfc('0x4b')]));_0x2df2a0[_0x4dfc('0x47')](get_open_tabs('sms',_0x4bd9fe[_0x4dfc('0x49')][_0x4c5fb8][_0x4dfc('0x4b')]));_0x2df2a0['push'](get_open_tabs(_0x4dfc('0x4c'),_0x4bd9fe[_0x4dfc('0x49')][_0x4c5fb8]['dataValues']));_0x2df2a0[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4d'),_0x4bd9fe[_0x4dfc('0x49')][_0x4c5fb8][_0x4dfc('0x4b')]));_0x2df2a0[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4e'),_0x4bd9fe['rows'][_0x4c5fb8]['dataValues']));_0x2df2a0[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4f'),_0x4bd9fe[_0x4dfc('0x49')][_0x4c5fb8][_0x4dfc('0x4b')]));}return Promise['all'](_0x2df2a0)['then'](function(){return _0x4bd9fe;});}else{return _0x4bd9fe;}})['then'](respondWithFilteredResult(_0x8de7bf,_0x52e15a))[_0x4dfc('0x1e')](handleError(_0x8de7bf,null));};exports[_0x4dfc('0x50')]=function(_0x56d95f,_0x53499e){var _0x30767d={'raw':![],'where':{'id':_0x56d95f[_0x4dfc('0x51')]['id']}},_0x187908={};_0x187908[_0x4dfc('0x52')]=_[_0x4dfc('0x53')](_[_0x4dfc('0x54')](db['User'][_0x4dfc('0x55')]),[_0x4dfc('0x40'),_0x4dfc('0x56')]);_0x187908['query']=_[_0x4dfc('0x54')](_0x56d95f[_0x4dfc('0x41')]);_0x187908[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x187908['model'],_0x187908[_0x4dfc('0x41')]);_0x30767d[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x187908[_0x4dfc('0x52')],qs['fields'](_0x56d95f['query'][_0x4dfc('0x59')]));_0x30767d[_0x4dfc('0x46')]=_0x30767d[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x30767d[_0x4dfc('0x46')]:_0x187908[_0x4dfc('0x52')];if(_0x56d95f['query'][_0x4dfc('0x42')]){_0x30767d[_0x4dfc('0x43')]=[{'all':!![]}];}if(_0x56d95f[_0x4dfc('0x41')][_0x4dfc('0x45')]===_0x4dfc('0x5b')){_0x30767d[_0x4dfc('0x43')]=[{'model':db[_0x4dfc('0x44')],'as':_0x4dfc('0x45')}];}_0x30767d=_[_0x4dfc('0x5c')]({},_0x30767d,_0x56d95f[_0x4dfc('0x5d')]);if(!_[_0x4dfc('0x38')](_0x30767d[_0x4dfc('0x46')],'id')){_0x30767d[_0x4dfc('0x46')]['push']('id');}return db['User']['find'](_0x30767d)[_0x4dfc('0x29')](handleEntityNotFound(_0x53499e,null))[_0x4dfc('0x29')](function(_0x4209a8){var _0x5040f6=[];values=_0x4209a8;if(_0x56d95f[_0x4dfc('0x41')][_0x4dfc('0x5e')]==='true'){_0x5040f6['push'](get_open_tabs(_0x4dfc('0x4a'),_0x4209a8[_0x4dfc('0x4b')]));_0x5040f6[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x5f'),_0x4209a8[_0x4dfc('0x4b')]));_0x5040f6[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4e'),_0x4209a8[_0x4dfc('0x4b')]));_0x5040f6[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4f'),_0x4209a8[_0x4dfc('0x4b')]));_0x5040f6[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4c'),_0x4209a8[_0x4dfc('0x4b')]));_0x5040f6[_0x4dfc('0x47')](get_open_tabs('mail',_0x4209a8[_0x4dfc('0x4b')]));return Promise[_0x4dfc('0x60')](_0x5040f6);}else{return values;}})[_0x4dfc('0x29')](function(){return values;})[_0x4dfc('0x29')](respondWithResult(_0x53499e,null))['catch'](handleError(_0x53499e,null));};exports['update']=function(_0x188ed6,_0x57a85a){if(_0x188ed6[_0x4dfc('0x61')]['id']){delete _0x188ed6[_0x4dfc('0x61')]['id'];}delete _0x188ed6['body'][_0x4dfc('0x2d')];return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x188ed6[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x57a85a,null))[_0x4dfc('0x29')](saveUpdates(_0x188ed6[_0x4dfc('0x61')],null))[_0x4dfc('0x29')](respondWithResult(_0x57a85a,null))[_0x4dfc('0x1e')](handleError(_0x57a85a,null));};exports[_0x4dfc('0x63')]=function(_0x13c124,_0x1b8965){return db[_0x4dfc('0x3d')][_0x4dfc('0x63')]()['then'](respondWithResult(_0x1b8965,null))[_0x4dfc('0x1e')](handleError(_0x1b8965,null));};exports[_0x4dfc('0x64')]=function(_0x12eba3,_0x2bd729){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x12eba3[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x2bd729,null))[_0x4dfc('0x29')](function(_0x244220){if(_0x244220){return _0x244220['addContacts'](_0x12eba3[_0x4dfc('0x61')][_0x4dfc('0x65')],_['omit'](_0x12eba3[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x2bd729,null))['catch'](handleError(_0x2bd729,null));};function validateUser(_0x3d3d96){return new Promise(function(_0x244b59,_0x2d0f32){if(_0x3d3d96['internal'])return _0x244b59(_0x3d3d96);return db[_0x4dfc('0x66')]['findById'](0x1)[_0x4dfc('0x29')](function(_0x20a4a4){if(_0x20a4a4[_0x4dfc('0x67')])authService['validatePasswordPattern'](_0x3d3d96[_0x4dfc('0x40')]);db[_0x4dfc('0x3d')][_0x4dfc('0x68')]('internal')[_0x4dfc('0x29')](function(_0x15b01e){if(_[_0x4dfc('0x69')](_0x15b01e)){_0x3d3d96[_0x4dfc('0x6a')]=_0x20a4a4['min_internal']||0x1;return;}if(_[_0x4dfc('0x69')](_0x20a4a4['min_internal'])||_0x20a4a4[_0x4dfc('0x6b')]===_0x15b01e){_0x3d3d96[_0x4dfc('0x6a')]=_0x15b01e+0x1;return;}if(_0x20a4a4['min_internal']>_0x15b01e){_0x3d3d96['internal']=_0x20a4a4[_0x4dfc('0x6b')];return;}return db[_0x4dfc('0x6c')][_0x4dfc('0x41')]('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[_0x4dfc('0x6c')][_0x4dfc('0x6d')][_0x4dfc('0x6e')]})[_0x4dfc('0x29')](function(_0x4509bc){if(_0x4509bc&&_0x4509bc[_0x4dfc('0x5a')]){for(var _0x41e9c2=0x0,_0x363d71=_0x4509bc['length'];_0x41e9c2<_0x363d71&&_[_0x4dfc('0x69')](_0x3d3d96[_0x4dfc('0x6a')]);_0x41e9c2++){if(_0x20a4a4[_0x4dfc('0x6b')]<=_0x4509bc[_0x41e9c2][_0x4dfc('0x6f')]){_0x3d3d96[_0x4dfc('0x6a')]=_0x4509bc[_0x41e9c2]['from'];}else if(_0x20a4a4['min_internal']>_0x4509bc[_0x41e9c2]['from']&&_0x20a4a4[_0x4dfc('0x6b')]<=_0x4509bc[_0x41e9c2]['to']){_0x3d3d96[_0x4dfc('0x6a')]=_0x20a4a4[_0x4dfc('0x6b')];}}}if(_[_0x4dfc('0x69')](_0x3d3d96[_0x4dfc('0x6a')])){_0x3d3d96['internal']=_0x15b01e+0x1;}return _0x244b59(_0x3d3d96);});});})[_0x4dfc('0x1e')](function(_0x471716){_0x2d0f32(_0x471716);});});}function updateUser(_0x137729){return new Promise(function(_0x73cb9,_0x47c113){try{if(_0x137729[_0x4dfc('0x70')]){_0x137729[_0x4dfc('0x71')]=_0x137729[_0x4dfc('0x6a')];_0x137729[_0x4dfc('0x72')]={'mailbox':_0x137729['internal'],'password':_0x137729[_0x4dfc('0x40')],'fullname':_0x137729[_0x4dfc('0x73')],'email':_0x137729[_0x4dfc('0x74')]};}if(_0x137729[_0x4dfc('0x2d')]==='agent'){if(!_0x137729[_0x4dfc('0x75')])_0x137729['permissions']=[_0x4dfc('0x76'),'102',_0x4dfc('0x77'),_0x4dfc('0x78'),'110','104',_0x4dfc('0x79'),'106',_0x4dfc('0x7a'),_0x4dfc('0x7b'),'109',_0x4dfc('0x7c'),_0x4dfc('0x7d'),_0x4dfc('0x7e'),_0x4dfc('0x7f')];}_0x73cb9(_0x137729);}catch(_0x1fc934){_0x47c113(_0x1fc934);}});}exports[_0x4dfc('0x80')]=function(_0x5ca778,_0x4508cb){if(_0x5ca778['user'][_0x4dfc('0x2d')]==='agent')throw new Error(_0x4dfc('0x81'));if(_0x5ca778['body'][_0x4dfc('0x2d')]===_0x4dfc('0x30')&&_0x5ca778[_0x4dfc('0x30')][_0x4dfc('0x2d')]!==_0x4dfc('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x5ca778['body']['role']===_0x4dfc('0x2e')&&_0x5ca778[_0x4dfc('0x30')][_0x4dfc('0x2d')]!==_0x4dfc('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x4dfc('0x82')]([_0x5ca778[_0x4dfc('0x61')]])[_0x4dfc('0x29')](function(){return validateUser(_0x5ca778[_0x4dfc('0x61')]);})['then'](function(_0x7ec09c){return updateUser(_0x7ec09c)[_0x4dfc('0x29')](function(_0x33fe12){if(_0x33fe12[_0x4dfc('0x2d')]==='admin'){_0x33fe12[_0x4dfc('0x83')]=_0x5ca778[_0x4dfc('0x30')][_0x4dfc('0x83')];delete _0x33fe12['userProfileId'];}return _0x33fe12;});})[_0x4dfc('0x29')](function(_0x5c455a){return db[_0x4dfc('0x3d')][_0x4dfc('0x80')](_0x5c455a,{'include':[{'model':db[_0x4dfc('0x72')],'as':_0x4dfc('0x72')}]});})[_0x4dfc('0x29')](function(_0x48dc17){if(_0x5ca778[_0x4dfc('0x61')][_0x4dfc('0x2d')]===_0x4dfc('0x30'))return _0x48dc17;if(_0x5ca778[_0x4dfc('0x30')]['role']!=='user')return _0x48dc17;return db[_0x4dfc('0x84')][_0x4dfc('0x62')]({'where':{'name':_0x48dc17[_0x4dfc('0x2d')]===_0x4dfc('0x32')?_0x4dfc('0x31'):_0x4dfc('0x33'),'userProfileId':_0x5ca778[_0x4dfc('0x30')]['userProfileId']},'raw':!![]})['then'](function(_0x3a7b6c){if(!_0x3a7b6c||_0x3a7b6c[_0x4dfc('0x85')]!=0x0)return _0x48dc17;return db[_0x4dfc('0x86')][_0x4dfc('0x80')]({'name':_0x48dc17['name'],'resourceId':_0x48dc17['id'],'type':_0x3a7b6c['name'],'sectionId':_0x3a7b6c['id']},{})['then'](function(){return _0x48dc17;});})[_0x4dfc('0x1e')](function(_0x574fc7){logger['error'](_0x4dfc('0x87'),_0x574fc7);throw _0x574fc7;});})['then'](respondWithResult(_0x4508cb,0xc9))[_0x4dfc('0x1e')](handleError(_0x4508cb,null));};exports[_0x4dfc('0x88')]=function(_0x264fad,_0x48660d){var _0x592a85=_0x264fad[_0x4dfc('0x61')];var _0x24ceed=[];if(_0x264fad[_0x4dfc('0x30')]['role']==='agent')throw new Error(_0x4dfc('0x81'));if(_[_0x4dfc('0x89')](_0x592a85,[_0x4dfc('0x2d'),'user'])&&_0x264fad['user'][_0x4dfc('0x2d')]!=='admin'){throw new Error(_0x4dfc('0x8a'));}if(_[_0x4dfc('0x89')](_0x592a85,[_0x4dfc('0x2d'),'admin'])&&_0x264fad[_0x4dfc('0x30')][_0x4dfc('0x2d')]!==_0x4dfc('0x2e')){throw new Error(_0x4dfc('0x8b'));}return licenseUtil[_0x4dfc('0x82')](_0x592a85)[_0x4dfc('0x29')](function(){return validateUser(_0x592a85[0x0]);})[_0x4dfc('0x29')](function(){for(var _0x8120e8=0x1;_0x8120e8<_0x592a85['length'];_0x8120e8++){var _0x4d8afa=_0x592a85[_0x8120e8-0x1][_0x4dfc('0x6a')];if(!_0x592a85[_0x8120e8]['internal'])_0x592a85[_0x8120e8]['internal']=_0x4d8afa+0x1;_0x24ceed[_0x4dfc('0x47')](validateUser(_0x592a85[_0x8120e8]));}return Promise['all'](_0x24ceed);})[_0x4dfc('0x29')](function(){_0x24ceed=[];for(var _0x54a95f=0x0;_0x54a95f<_0x592a85[_0x4dfc('0x5a')];_0x54a95f++){_0x24ceed[_0x4dfc('0x47')](updateUser(_0x592a85[_0x54a95f]));}return Promise[_0x4dfc('0x60')](_0x24ceed);})[_0x4dfc('0x29')](function(){_0x24ceed=_0x592a85[_0x4dfc('0x36')](function(_0x54d310){return db[_0x4dfc('0x3d')][_0x4dfc('0x80')](_0x54d310,{'include':[{'model':db['VoiceMail'],'as':_0x4dfc('0x72')}]})[_0x4dfc('0x29')](function(_0x107351){_0x54d310['id']=_0x107351['id'];return _0x54d310;});});return Promise[_0x4dfc('0x60')](_0x24ceed);})[_0x4dfc('0x29')](function(_0x5bd484){if(_0x264fad[_0x4dfc('0x61')][_0x4dfc('0x2d')]===_0x4dfc('0x30'))return _0x5bd484;if(_0x264fad[_0x4dfc('0x30')][_0x4dfc('0x2d')]!=='user')return _0x5bd484;var _0x2bce8a=_[_0x4dfc('0x89')](_0x5bd484,function(_0x222c23){return _0x222c23[_0x4dfc('0x2d')]===_0x4dfc('0x32')||_0x222c23[_0x4dfc('0x2d')]===_0x4dfc('0x8c');});if(!_0x2bce8a)return _0x5bd484;return db[_0x4dfc('0x84')][_0x4dfc('0x48')]({'where':{'name':{'$or':['Agents','Telephones']},'userProfileId':_0x264fad[_0x4dfc('0x30')]['userProfileId']},'raw':!![]})[_0x4dfc('0x29')](function(_0x2361e4){if(_[_0x4dfc('0x8d')](_0x2361e4)||!_['some'](_0x2361e4,[_0x4dfc('0x85'),0x0]))return _0x5bd484;_0x24ceed=[];var _0x4ebeed=_(_0x2361e4)[_0x4dfc('0x36')](function(_0x3fc632){if(_0x3fc632['autoAssociation']===0x1)return;return _0x3fc632[_0x4dfc('0x39')]===_0x4dfc('0x31')?_0x4dfc('0x32'):'telephone';})[_0x4dfc('0x8e')]()[_0x4dfc('0x37')]();for(var _0x40417f=0x0;_0x40417f<_0x5bd484[_0x4dfc('0x5a')];_0x40417f++){if(!_['includes'](_0x4ebeed,_0x5bd484[_0x40417f][_0x4dfc('0x2d')]))return;var _0x275611=_0x5bd484[_0x40417f]['role']===_0x4dfc('0x32')?_0x4dfc('0x31'):'Telephones';_0x24ceed[_0x4dfc('0x47')](db[_0x4dfc('0x86')][_0x4dfc('0x80')]({'name':_0x5bd484[_0x40417f][_0x4dfc('0x39')],'resourceId':_0x5bd484[_0x40417f]['id'],'type':_0x275611,'sectionId':_[_0x4dfc('0x62')](_0x2361e4,[_0x4dfc('0x39'),_0x275611])['id']},{}));}return Promise[_0x4dfc('0x60')](_0x24ceed);});})[_0x4dfc('0x29')](respondWithResult(_0x48660d,0xc9))[_0x4dfc('0x1e')](handleError(_0x48660d,null));};exports['changePassword']=function(_0x1c219f,_0x56d503){if(_0x1c219f[_0x4dfc('0x61')]['id']){delete _0x1c219f[_0x4dfc('0x61')]['id'];}return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x1c219f['params']['id']}})[_0x4dfc('0x29')](function(_0x20933f){if(!_0x20933f)return null;if(_0x20933f['id']===_0x1c219f['user']['id']){if(!_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x8f')]||!_0x1c219f['body'][_0x4dfc('0x90')]){throw new db[(_0x4dfc('0x91'))]['ValidationError'](_0x4dfc('0x92'));}if(!_0x20933f[_0x4dfc('0x93')](_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x8f')])){throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))](_0x4dfc('0x95'));}if(_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x8f')]===_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')]){throw new db['Sequelize'][(_0x4dfc('0x94'))](_0x4dfc('0x96'));}}else if(_0x1c219f['user'][_0x4dfc('0x2d')]===_0x4dfc('0x2e')){if(!_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')]){throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))](_0x4dfc('0x97'));}}else if(_0x1c219f[_0x4dfc('0x30')][_0x4dfc('0x2d')]===_0x4dfc('0x30')){if(!_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')]){throw new db['Sequelize'][(_0x4dfc('0x94'))](_0x4dfc('0x97'));}if(_0x20933f['role']!==_0x4dfc('0x32')){throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))]('Unauthorized');}}else{throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))]('Unauthorized');}return _0x20933f;})['then'](handleEntityNotFound(_0x56d503,null))[_0x4dfc('0x29')](function(_0x3999ce){return db['Setting']['findOne']({'attributes':['id',_0x4dfc('0x67'),_0x4dfc('0x98'),_0x4dfc('0x99')]})[_0x4dfc('0x29')](function(_0x18483d){if(_0x18483d['securePassword'])authService[_0x4dfc('0x9a')](_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')]);if(!_0x18483d[_0x4dfc('0x98')]||!_0x3999ce[_0x4dfc('0x9b')])return _0x3999ce;authService[_0x4dfc('0x9c')](_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')],_0x3999ce[_0x4dfc('0x9b')],_0x18483d[_0x4dfc('0x99')]);return _0x3999ce;})[_0x4dfc('0x29')](saveUpdates({'password':_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')],'passwordResetAt':_0x1c219f[_0x4dfc('0x30')]['id']==_0x1c219f[_0x4dfc('0x51')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x1c219f[_0x4dfc('0x61')][_0x4dfc('0x90')],_0x3999ce[_0x4dfc('0x9b')])},null));})[_0x4dfc('0x29')](respondWithResult(_0x56d503,null))[_0x4dfc('0x1e')](handleError(_0x56d503,null));};exports[_0x4dfc('0x9d')]=function(_0x58e0d0,_0x33b99b){var _0x2c1aef=_0x58e0d0[_0x4dfc('0x61')][_0x4dfc('0x9e')];return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x58e0d0['params']['id']},'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x2d'),_0x4dfc('0x9f'),_0x4dfc('0xa0'),_0x4dfc('0xa1'),_0x4dfc('0xa2')]})[_0x4dfc('0x29')](handleEntityNotFound(_0x33b99b,null))['then'](function(_0x38a118){if(_0x38a118){if(!utils[_0x4dfc('0xa3')](_0x2c1aef)){throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))]('Unknown\x20channel');}return _0x38a118[_0x4dfc('0xa4')+_[_0x4dfc('0xa5')](_0x2c1aef['toLowerCase']())+'Queues'](_0x58e0d0[_0x4dfc('0x61')][_0x4dfc('0x65')],{'penalty':_0x58e0d0['body']['penalty']||0x0})['spread'](function(_0x33a48f){for(var _0x1616f8=0x0;_0x1616f8<_0x58e0d0[_0x4dfc('0x61')]['ids']['length'];_0x1616f8+=0x1){var _0x29a53d={'UserId':Number(_0x58e0d0[_0x4dfc('0x51')]['id'])};_0x29a53d[_[_0x4dfc('0xa5')](_0x2c1aef[_0x4dfc('0xa6')]())+'QueueId']=Number(_0x58e0d0[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x1616f8]);socket[_0x4dfc('0x2a')]('user'+_[_0x4dfc('0xa5')](_0x2c1aef['toLowerCase']())+_0x4dfc('0xa7'),_0x29a53d);}return _0x33a48f;})['then'](function(){if(_0x2c1aef===_0x4dfc('0xa8')){return db['VoiceQueue'][_0x4dfc('0x48')]({'where':{'id':_0x58e0d0[_0x4dfc('0x61')][_0x4dfc('0x65')]||[]},'raw':!![],'attributes':['id',_0x4dfc('0x39')]});}})['then'](function(_0xe6e278){var _0x4fa14a=_0x38a118['get']({'plain':!![]});var _0x363191=[];if(_0x2c1aef===_0x4dfc('0xa8')&&_0x4fa14a[_0x4dfc('0x2d')]==='agent'&&_0x4fa14a[_0x4dfc('0x9f')]){for(let _0x360108=0x0;_0x360108<_0xe6e278['length'];_0x360108+=0x1){_0x363191['push']({'membername':_0x4fa14a[_0x4dfc('0x39')],'UserId':_0x4fa14a['id'],'queue_name':_0xe6e278[_0x360108][_0x4dfc('0x39')],'VoiceQueueId':_0xe6e278[_0x360108]['id'],'interface':_[_0x4dfc('0x69')](_0x4fa14a[_0x4dfc('0xa2')])?util['format'](_0x4dfc('0xa9'),_0x4fa14a[_0x4dfc('0x39')]):_0x4fa14a[_0x4dfc('0xa2')],'paused':_0x4fa14a[_0x4dfc('0xa1')]||![],'penalty':_0x58e0d0[_0x4dfc('0x61')][_0x4dfc('0xaa')]||0x0});}return Promise[_0x4dfc('0x60')](_0x363191[_0x4dfc('0x36')](function(_0x47853e){return db[_0x4dfc('0xab')][_0x4dfc('0xac')](_0x47853e);}));}return _0x38a118;});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x33b99b,null))[_0x4dfc('0x1e')](handleError(_0x33b99b,null));};exports[_0x4dfc('0xad')]=function(_0x3865dc,_0x4888ca){var _0x2cbe76,_0x4a7861;return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x3865dc['params']['id']},'attributes':['id',_0x4dfc('0x39'),'role']})[_0x4dfc('0x29')](handleEntityNotFound(_0x4888ca,null))[_0x4dfc('0x29')](function(_0x33b69b){if(_0x33b69b){_0x2cbe76=_0x33b69b;if(!_0x3865dc['query'][_0x4dfc('0x9e')]||!utils[_0x4dfc('0xa3')](_0x3865dc['query'][_0x4dfc('0x9e')])){throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))](_0x4dfc('0xae'));}return _0x33b69b['remove'+_[_0x4dfc('0xa5')](_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x9e')][_0x4dfc('0xa6')]())+'Queues'](_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x65')]);}})[_0x4dfc('0x29')](function(_0x2b8e82){if(_[_0x4dfc('0xaf')](_0x3865dc[_0x4dfc('0x41')]['ids'])){for(var _0x3066a1=0x0;_0x3066a1<_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0x3066a1+=0x1){_0x4a7861={'UserId':Number(_0x3865dc['params']['id'])};_0x4a7861[_[_0x4dfc('0xa5')](_0x3865dc['query'][_0x4dfc('0x9e')][_0x4dfc('0xa6')]())+_0x4dfc('0xb0')]=Number(_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x3066a1]);socket[_0x4dfc('0x2a')](_0x4dfc('0x30')+_[_0x4dfc('0xa5')](_0x3865dc['query'][_0x4dfc('0x9e')][_0x4dfc('0xa6')]())+'Queue:remove',_0x4a7861);}}else{_0x4a7861={'UserId':Number(_0x3865dc[_0x4dfc('0x51')]['id'])};_0x4a7861[_[_0x4dfc('0xa5')](_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x9e')]['toLowerCase']())+_0x4dfc('0xb0')]=Number(_0x3865dc[_0x4dfc('0x41')]['ids']);socket[_0x4dfc('0x2a')](_0x4dfc('0x30')+_[_0x4dfc('0xa5')](_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x9e')]['toLowerCase']())+_0x4dfc('0xb1'),_0x4a7861);}return _0x2b8e82;})[_0x4dfc('0x29')](function(){if(_0x3865dc[_0x4dfc('0x41')][_0x4dfc('0x9e')]===_0x4dfc('0xa8')){return db[_0x4dfc('0xab')][_0x4dfc('0xb2')]({'where':{'UserId':_0x3865dc[_0x4dfc('0x51')]['id'],'VoiceQueueId':_0x3865dc['query'][_0x4dfc('0x65')]},'individualHooks':!![]})['then'](function(){return _0x2cbe76;});}return _0x2cbe76;})[_0x4dfc('0x29')](respondWithStatusCode(_0x4888ca,null))['catch'](handleError(_0x4888ca,null));};exports[_0x4dfc('0xb3')]=function(_0x3adfa5,_0x18970e){_0x3adfa5['body'][_0x4dfc('0xb4')]=_0x3adfa5[_0x4dfc('0xb5')][_0x4dfc('0xb6')];return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x3adfa5[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x18970e,null))['then'](saveUpdates(_0x3adfa5[_0x4dfc('0x61')],null))[_0x4dfc('0x29')](respondWithResult(_0x18970e,null))[_0x4dfc('0x1e')](handleError(_0x18970e,null));};exports[_0x4dfc('0xb7')]=function(_0x309efa,_0x503eb4){var _0x1f9702=path[_0x4dfc('0xb8')](config['root'],'server/files/images/logos/default_profile.png');return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x309efa[_0x4dfc('0x51')]['id']},'attributes':['id',_0x4dfc('0xb4')],'raw':!![]})[_0x4dfc('0x29')](handleEntityNotFound(_0x503eb4,null))[_0x4dfc('0x29')](function(_0x5ecf89){if(_0x5ecf89){if(_[_0x4dfc('0x69')](_0x5ecf89[_0x4dfc('0xb4')])){return _0x503eb4[_0x4dfc('0xb9')](_0x1f9702);}else{if(!fs[_0x4dfc('0xba')](path[_0x4dfc('0xb8')](config[_0x4dfc('0xbb')],_0x4dfc('0xbc'),_0x5ecf89['userpic']))){return _0x503eb4[_0x4dfc('0xb9')](_0x1f9702);}return _0x503eb4[_0x4dfc('0xb9')](path[_0x4dfc('0xb8')](config[_0x4dfc('0xbb')],_0x4dfc('0xbc'),_0x5ecf89[_0x4dfc('0xb4')]));}}})['catch'](handleError(_0x503eb4,null));};exports[_0x4dfc('0xbd')]=function(_0x3e53e3,_0x59b835){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x3e53e3[_0x4dfc('0x51')]['id']},'attributes':['id']})[_0x4dfc('0x29')](handleEntityNotFound(_0x59b835,null))[_0x4dfc('0x29')](function(_0x4451cd){var _0x5256e3=[];values=_0x4451cd[_0x4dfc('0x4b')];_0x5256e3[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4a'),_0x4451cd[_0x4dfc('0x4b')]));_0x5256e3[_0x4dfc('0x47')](get_open_tabs('sms',_0x4451cd[_0x4dfc('0x4b')]));_0x5256e3['push'](get_open_tabs('openchannel',_0x4451cd[_0x4dfc('0x4b')]));_0x5256e3['push'](get_open_tabs('whatsapp',_0x4451cd[_0x4dfc('0x4b')]));_0x5256e3[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4c'),_0x4451cd[_0x4dfc('0x4b')]));_0x5256e3[_0x4dfc('0x47')](get_open_tabs(_0x4dfc('0x4d'),_0x4451cd[_0x4dfc('0x4b')]));return Promise[_0x4dfc('0x60')](_0x5256e3);})[_0x4dfc('0x29')](function(_0x3f2b86){if(_0x3f2b86){var _0x5cbeee=_[_0x4dfc('0x36')](values[_0x4dfc('0xbe')],function(_0x462966){return{'channel':_0x4dfc('0xbf'),'id':_0x462966['id'],'createdAt':_0x462966['createdAt']};});var _0x4c83e1=_[_0x4dfc('0x36')](values[_0x4dfc('0xc0')],function(_0xd0d7db){return{'channel':_0x4dfc('0xc1'),'id':_0xd0d7db['id'],'createdAt':_0xd0d7db[_0x4dfc('0xc2')]};});var _0x115ac6=_[_0x4dfc('0x36')](values[_0x4dfc('0xc3')],function(_0x28a195){return{'channel':_0x4dfc('0xc4'),'id':_0x28a195['id'],'createdAt':_0x28a195[_0x4dfc('0xc2')]};});var _0x3d10ae=_[_0x4dfc('0x36')](values[_0x4dfc('0xc5')],function(_0x2c69f8){return{'channel':_0x4dfc('0xc6'),'id':_0x2c69f8['id'],'createdAt':_0x2c69f8[_0x4dfc('0xc2')]};});var _0xfcc3f7=_[_0x4dfc('0x36')](values[_0x4dfc('0xc7')],function(_0x1f6cff){return{'channel':'SMS','id':_0x1f6cff['id'],'createdAt':_0x1f6cff['createdAt']};});var _0x46f528=_[_0x4dfc('0x36')](values[_0x4dfc('0xc8')],function(_0x367424){return{'channel':'WHATSAPP','id':_0x367424['id'],'createdAt':_0x367424[_0x4dfc('0xc2')]};});var _0x1b58f4=_['concat'](_0x5cbeee,_0x4c83e1,_0x115ac6,_0x3d10ae,_0xfcc3f7,_0x46f528);var _0x5f512c={'count':_0x1b58f4[_0x4dfc('0x5a')],'rows':_0x1b58f4};return _0x5f512c;}else return null;})[_0x4dfc('0x29')](respondWithResult(_0x59b835,null))['catch'](handleError(_0x59b835,null));};exports[_0x4dfc('0xc9')]=function(_0x16a081,_0x4552ca){var _0xabf7d0={};var _0x3489d2={};var _0x57876e;var _0xeeddf9;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x16a081['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x4552ca,null))[_0x4dfc('0x29')](function(_0x201081){if(_0x201081){_0x57876e=_0x201081;_0x3489d2['model']=_[_0x4dfc('0x54')](db['CmContact'][_0x4dfc('0x55')]);_0x3489d2[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x16a081[_0x4dfc('0x41')]);_0x3489d2[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x3489d2[_0x4dfc('0x52')],_0x3489d2[_0x4dfc('0x41')]);_0xabf7d0[_0x4dfc('0x46')]=_['intersection'](_0x3489d2['model'],qs[_0x4dfc('0x59')](_0x16a081[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0xabf7d0[_0x4dfc('0x46')]=_0xabf7d0[_0x4dfc('0x46')]['length']?_0xabf7d0[_0x4dfc('0x46')]:_0x3489d2[_0x4dfc('0x52')];_0xabf7d0[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x16a081[_0x4dfc('0x41')]['sort']);_0xabf7d0[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x16a081[_0x4dfc('0x41')],_0x3489d2['filters']));if(_0x16a081[_0x4dfc('0x41')]['filter']){_0xabf7d0[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0xabf7d0[_0x4dfc('0xcd')],{'$or':_['map'](_0xabf7d0['attributes'],function(_0x58bb78){var _0x2cbef2={};_0x2cbef2[_0x58bb78]={'$like':'%'+_0x16a081[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x2cbef2;})});}_0xabf7d0=_[_0x4dfc('0x5c')]({},_0xabf7d0,_0x16a081[_0x4dfc('0x5d')]);return _0x57876e['getContacts'](_0xabf7d0);}})['then'](function(_0xa5fdd1){if(_0xa5fdd1){_0xeeddf9=_0xa5fdd1[_0x4dfc('0x5a')];if(_0x16a081[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0x42'))){_0xabf7d0[_0x4dfc('0x43')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db[_0x4dfc('0xd0')],'as':_0x4dfc('0xd1'),'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0xd2')],'where':_0x16a081['query'][_0x4dfc('0xd3')]?{'id':_0x16a081[_0x4dfc('0x41')][_0x4dfc('0xd3')]}:undefined,'required':_0x16a081['query'][_0x4dfc('0xd3')]?!![]:![]}];}if(!_0x16a081['query'][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0xabf7d0[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x16a081[_0x4dfc('0x41')]['limit']);_0xabf7d0[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x16a081[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x57876e[_0x4dfc('0xc9')](_0xabf7d0);}})[_0x4dfc('0x29')](function(_0x330c83){if(_0x330c83){return _0x330c83?{'count':_0xeeddf9,'rows':_0x330c83}:null;}})['then'](respondWithResult(_0x4552ca,null))[_0x4dfc('0x1e')](handleError(_0x4552ca,null));};exports[_0x4dfc('0xd5')]=function(_0x515f83,_0x1ef730){var _0x39bac8;var _0x4964bf={};var _0x38328f;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x515f83['params']['id']},'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x2d')]})[_0x4dfc('0x29')](handleEntityNotFound(_0x1ef730,null))[_0x4dfc('0x29')](function(_0x519f8b){if(!utils['isValidChannel'](_0x515f83[_0x4dfc('0x41')]['channel'])){throw new db[(_0x4dfc('0x91'))]['ValidationError'](_0x4dfc('0xae'));}_0x39bac8=_0x519f8b;var _0x2ec230={};_0x2ec230[_0x4dfc('0x52')]=_['keys'](db[_[_0x4dfc('0xa5')](_0x515f83[_0x4dfc('0x41')][_0x4dfc('0x9e')])+_0x4dfc('0xd6')][_0x4dfc('0x55')]);_0x2ec230[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x515f83[_0x4dfc('0x41')]);_0x2ec230[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x2ec230['model'],_0x2ec230[_0x4dfc('0x41')]);_0x4964bf[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x2ec230['model'],qs[_0x4dfc('0x59')](_0x515f83[_0x4dfc('0x41')]['fields']));_0x4964bf[_0x4dfc('0x46')]=_0x4964bf[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x4964bf[_0x4dfc('0x46')]:_0x2ec230[_0x4dfc('0x52')];_0x4964bf[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x515f83[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x4964bf[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x515f83[_0x4dfc('0x41')],_0x2ec230[_0x4dfc('0x57')]));if(_0x515f83['query']['filter']){_0x4964bf[_0x4dfc('0xcd')]=_['merge'](_0x4964bf['where'],{'$or':_[_0x4dfc('0x36')](_0x4964bf[_0x4dfc('0x46')],function(_0x1295da){var _0x42fd73={};_0x42fd73[_0x1295da]={'$like':'%'+_0x515f83['query'][_0x4dfc('0x34')]+'%'};return _0x42fd73;})});}_0x4964bf=_[_0x4dfc('0x5c')]({},_0x4964bf,_0x515f83[_0x4dfc('0x5d')]);switch(_0x39bac8[_0x4dfc('0x2d')]){case'admin':return db[_[_0x4dfc('0xa5')](_0x515f83[_0x4dfc('0x41')][_0x4dfc('0x9e')])+_0x4dfc('0xd6')][_0x4dfc('0x48')](_0x4964bf);case _0x4dfc('0x30'):case'agent':return _0x39bac8[_0x4dfc('0x2c')+_[_0x4dfc('0xa5')](_0x515f83[_0x4dfc('0x41')]['channel'])+_0x4dfc('0xd7')](_0x4964bf);default:throw new db['Sequelize'][(_0x4dfc('0x94'))](_0x4dfc('0xd8'));}})[_0x4dfc('0x29')](function(_0x495d67){_0x38328f=_0x495d67[_0x4dfc('0x5a')];if(!_0x515f83[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x4964bf[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x515f83[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x4964bf[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x515f83['query'][_0x4dfc('0x23')]);}switch(_0x39bac8[_0x4dfc('0x2d')]){case _0x4dfc('0x2e'):return db[_[_0x4dfc('0xa5')](_0x515f83[_0x4dfc('0x41')]['channel'])+_0x4dfc('0xd6')]['findAll'](_0x4964bf);case _0x4dfc('0x30'):case'agent':return _0x39bac8[_0x4dfc('0x2c')+_[_0x4dfc('0xa5')](_0x515f83[_0x4dfc('0x41')]['channel'])+'Queues'](_0x4964bf);}})[_0x4dfc('0x29')](function(_0x35fec2){return{'count':_0x38328f,'rows':_0x35fec2};})[_0x4dfc('0x29')](respondWithResult(_0x1ef730,null))[_0x4dfc('0x1e')](handleError(_0x1ef730,null));};exports[_0x4dfc('0xd9')]=function(_0xaabe44,_0x2d242a){var _0x98c505={};var _0x28a2b7={};var _0x1523d0;var _0x5606a0;return db['User']['findOne']({'where':{'id':_0xaabe44[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x2d242a,null))[_0x4dfc('0x29')](function(_0x5bd21c){if(_0x5bd21c){_0x1523d0=_0x5bd21c;_0x28a2b7[_0x4dfc('0x52')]=_['keys'](db[_0x4dfc('0xab')][_0x4dfc('0x55')]);_0x28a2b7[_0x4dfc('0x41')]=_['keys'](_0xaabe44[_0x4dfc('0x41')]);_0x28a2b7[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x28a2b7[_0x4dfc('0x52')],_0x28a2b7[_0x4dfc('0x41')]);_0x98c505[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x28a2b7[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0xaabe44['query'][_0x4dfc('0x59')]));_0x98c505['attributes']=_0x98c505['attributes'][_0x4dfc('0x5a')]?_0x98c505[_0x4dfc('0x46')]:_0x28a2b7['model'];_0x98c505['order']=qs[_0x4dfc('0xcc')](_0xaabe44[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x98c505[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0xaabe44['query'],_0x28a2b7['filters']));if(_0xaabe44[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x98c505[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x98c505[_0x4dfc('0xcd')],{'$or':_['map'](_0x98c505[_0x4dfc('0x46')],function(_0x5bcd4a){var _0x323734={};_0x323734[_0x5bcd4a]={'$like':'%'+_0xaabe44[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x323734;})});}_0x98c505=_[_0x4dfc('0x5c')]({},_0x98c505,_0xaabe44[_0x4dfc('0x5d')]);return _0x1523d0[_0x4dfc('0xd9')](_0x98c505);}})['then'](function(_0x2c30d4){if(_0x2c30d4){_0x5606a0=_0x2c30d4[_0x4dfc('0x5a')];if(!_0xaabe44[_0x4dfc('0x41')][_0x4dfc('0xcf')]('nolimit')){_0x98c505[_0x4dfc('0x25')]=qs['limit'](_0xaabe44[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x98c505[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0xaabe44['query'][_0x4dfc('0x23')]);}return _0x1523d0['getVoiceQueuesRt'](_0x98c505);}})[_0x4dfc('0x29')](function(_0x2823b6){if(_0x2823b6){return _0x2823b6?{'count':_0x5606a0,'rows':_0x2823b6}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x2d242a,null))[_0x4dfc('0x1e')](handleError(_0x2d242a,null));};exports[_0x4dfc('0xda')]=function(_0x28b042,_0x467a9a){var _0xb75b73={};var _0x36025f={};var _0x11ce66;var _0x447f8f;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x28b042[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x467a9a,null))[_0x4dfc('0x29')](function(_0x5a7a1f){if(_0x5a7a1f){_0x11ce66=_0x5a7a1f;_0x36025f[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db[_0x4dfc('0xdb')][_0x4dfc('0x55')]);_0x36025f[_0x4dfc('0x41')]=_['keys'](_0x28b042[_0x4dfc('0x41')]);_0x36025f[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x36025f['model'],_0x36025f[_0x4dfc('0x41')]);_0xb75b73[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x36025f['model'],qs[_0x4dfc('0x59')](_0x28b042[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0xb75b73[_0x4dfc('0x46')]=_0xb75b73[_0x4dfc('0x46')]['length']?_0xb75b73['attributes']:_0x36025f[_0x4dfc('0x52')];_0xb75b73[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x28b042[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0xb75b73[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x28b042['query'],_0x36025f[_0x4dfc('0x57')]));if(_0x28b042[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0xb75b73[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0xb75b73[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0xb75b73['attributes'],function(_0x5a8e37){var _0x28799a={};_0x28799a[_0x5a8e37]={'$like':'%'+_0x28b042[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x28799a;})});}_0xb75b73=_[_0x4dfc('0x5c')]({},_0xb75b73,_0x28b042[_0x4dfc('0x5d')]);return _0x11ce66[_0x4dfc('0xda')](_0xb75b73);}})[_0x4dfc('0x29')](function(_0x9451ff){if(_0x9451ff){_0x447f8f=_0x9451ff['length'];if(!_0x28b042[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0xb75b73[_0x4dfc('0x25')]=qs['limit'](_0x28b042[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0xb75b73[_0x4dfc('0x23')]=qs['offset'](_0x28b042[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x11ce66[_0x4dfc('0xda')](_0xb75b73);}})['then'](function(_0x3d0c6d){if(_0x3d0c6d){return _0x3d0c6d?{'count':_0x447f8f,'rows':_0x3d0c6d}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x467a9a,null))[_0x4dfc('0x1e')](handleError(_0x467a9a,null));};exports[_0x4dfc('0xdc')]=function(_0x4de263,_0x40ef6a){var _0x4d9727={'raw':!![],'where':{}};var _0x382678={};var _0x186556={'count':0x0,'rows':[]};return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x4de263[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x40ef6a,null))[_0x4dfc('0x29')](function(_0x352a46){if(_0x352a46){_0x382678[_0x4dfc('0x52')]=_['keys'](db[_0x4dfc('0xdd')]['rawAttributes']);_0x382678[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x4de263['query']);_0x382678[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x382678['model'],_0x382678[_0x4dfc('0x41')]);_0x4d9727[_0x4dfc('0x46')]=_['intersection'](_0x382678['model'],qs[_0x4dfc('0x59')](_0x4de263[_0x4dfc('0x41')]['fields']));_0x4d9727[_0x4dfc('0x46')]=_0x4d9727[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x4d9727['attributes']:_0x382678['model'];if(!_0x4de263[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x4d9727['limit']=qs[_0x4dfc('0x25')](_0x4de263[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x4d9727[_0x4dfc('0x23')]=qs['offset'](_0x4de263['query'][_0x4dfc('0x23')]);}_0x4d9727[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x4de263[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x4d9727[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x4de263[_0x4dfc('0x41')],_0x382678[_0x4dfc('0x57')]));_0x4d9727[_0x4dfc('0xcd')]['UserId']=_0x352a46['id'];if(_0x4de263[_0x4dfc('0x41')]['filter']){_0x4d9727['where']=_[_0x4dfc('0x5c')](_0x4d9727[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x4d9727[_0x4dfc('0x46')],function(_0x2b561a){var _0x4f4e02={};_0x4f4e02[_0x2b561a]={'$like':'%'+_0x4de263['query'][_0x4dfc('0x34')]+'%'};return _0x4f4e02;})});}_0x4d9727=_[_0x4dfc('0x5c')]({},_0x4d9727,_0x4de263['options']);return db[_0x4dfc('0xdd')][_0x4dfc('0x26')]({'where':_0x4d9727[_0x4dfc('0xcd')]})[_0x4dfc('0x29')](function(_0x1a7b00){_0x186556[_0x4dfc('0x26')]=_0x1a7b00;if(_0x4de263[_0x4dfc('0x41')][_0x4dfc('0x42')]){_0x4d9727[_0x4dfc('0x43')]=[{'all':!![]}];}return db[_0x4dfc('0xdd')][_0x4dfc('0x48')](_0x4d9727);})['then'](function(_0x417359){_0x186556[_0x4dfc('0x49')]=_0x417359;return _0x186556;});}})[_0x4dfc('0x29')](respondWithFilteredResult(_0x40ef6a,_0x4d9727))[_0x4dfc('0x1e')](handleError(_0x40ef6a,null));};exports[_0x4dfc('0xde')]=function(_0x48ccea,_0x1b4718){var _0x361dd3={'raw':!![],'where':{}};var _0xedc776={};var _0x5a491b={'count':0x0,'rows':[]};return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x48ccea[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x1b4718,null))['then'](function(_0x3d40b8){if(_0x3d40b8){_0xedc776['model']=_[_0x4dfc('0x54')](db[_0x4dfc('0xdf')][_0x4dfc('0x55')]);_0xedc776['query']=_[_0x4dfc('0x54')](_0x48ccea[_0x4dfc('0x41')]);_0xedc776[_0x4dfc('0x57')]=_['intersection'](_0xedc776[_0x4dfc('0x52')],_0xedc776[_0x4dfc('0x41')]);_0x361dd3[_0x4dfc('0x46')]=_['intersection'](_0xedc776[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x48ccea[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x361dd3[_0x4dfc('0x46')]=_0x361dd3['attributes'][_0x4dfc('0x5a')]?_0x361dd3['attributes']:_0xedc776[_0x4dfc('0x52')];if(!_0x48ccea[_0x4dfc('0x41')][_0x4dfc('0xcf')]('nolimit')){_0x361dd3[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x48ccea[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x361dd3[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x48ccea['query'][_0x4dfc('0x23')]);}_0x361dd3['order']=qs[_0x4dfc('0xcc')](_0x48ccea[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x361dd3[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_['pick'](_0x48ccea['query'],_0xedc776[_0x4dfc('0x57')]));_0x361dd3['where'][_0x4dfc('0xe0')]=_0x3d40b8['id'];if(_0x48ccea[_0x4dfc('0x41')]['filter']){_0x361dd3['where']=_['merge'](_0x361dd3[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x361dd3['attributes'],function(_0x1f8e5c){var _0x5b481a={};_0x5b481a[_0x1f8e5c]={'$like':'%'+_0x48ccea['query'][_0x4dfc('0x34')]+'%'};return _0x5b481a;})});}_0x361dd3=_[_0x4dfc('0x5c')]({},_0x361dd3,_0x48ccea['options']);return db[_0x4dfc('0xdf')]['count']({'where':_0x361dd3[_0x4dfc('0xcd')]})[_0x4dfc('0x29')](function(_0x34a7a5){_0x5a491b[_0x4dfc('0x26')]=_0x34a7a5;if(_0x48ccea['query']['includeAll']){_0x361dd3[_0x4dfc('0x43')]=[{'all':!![]}];}return db['ScreenRecording'][_0x4dfc('0x48')](_0x361dd3);})[_0x4dfc('0x29')](function(_0x454182){_0x5a491b['rows']=_0x454182;return _0x5a491b;});}})['then'](respondWithFilteredResult(_0x1b4718,_0x361dd3))['catch'](handleError(_0x1b4718,null));};exports[_0x4dfc('0xe1')]=function(_0x3eca92,_0x1067b9){var _0x467f9e={};var _0x2cf6a1={};var _0x3e9f8f;var _0x672f7f;return db['User']['findOne']({'where':{'id':_0x3eca92[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x1067b9,null))[_0x4dfc('0x29')](function(_0xfc224a){if(_0xfc224a){_0x3e9f8f=_0xfc224a;_0x2cf6a1[_0x4dfc('0x52')]=_['keys'](db['ChatInteraction'][_0x4dfc('0x55')]);_0x2cf6a1['query']=_[_0x4dfc('0x54')](_0x3eca92[_0x4dfc('0x41')]);_0x2cf6a1[_0x4dfc('0x57')]=_['intersection'](_0x2cf6a1['model'],_0x2cf6a1['query']);_0x467f9e[_0x4dfc('0x46')]=_['intersection'](_0x2cf6a1[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x3eca92[_0x4dfc('0x41')]['fields']));_0x467f9e[_0x4dfc('0x46')]=_0x467f9e[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x467f9e[_0x4dfc('0x46')]:_0x2cf6a1['model'];_0x467f9e[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x3eca92[_0x4dfc('0x41')]['sort']);_0x467f9e[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_['pick'](_0x3eca92[_0x4dfc('0x41')],_0x2cf6a1['filters']));if(_0x3eca92['query'][_0x4dfc('0x34')]){_0x467f9e[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x467f9e[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x467f9e[_0x4dfc('0x46')],function(_0x5085de){var _0x56c54a={};_0x56c54a[_0x5085de]={'$like':'%'+_0x3eca92[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x56c54a;})});}_0x467f9e=_[_0x4dfc('0x5c')]({},_0x467f9e,_0x3eca92['options']);return _0x3e9f8f[_0x4dfc('0xe1')](_0x467f9e);}})[_0x4dfc('0x29')](function(_0xa37e58){if(_0xa37e58){_0x672f7f=_0xa37e58[_0x4dfc('0x5a')];if(!_0x3eca92['query'][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x467f9e[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x3eca92[_0x4dfc('0x41')]['limit']);_0x467f9e['offset']=qs[_0x4dfc('0x23')](_0x3eca92['query'][_0x4dfc('0x23')]);}return _0x3e9f8f['getChatInteractions'](_0x467f9e);}})[_0x4dfc('0x29')](function(_0x376352){if(_0x376352){return _0x376352?{'count':_0x672f7f,'rows':_0x376352}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x1067b9,null))[_0x4dfc('0x1e')](handleError(_0x1067b9,null));};exports[_0x4dfc('0xe2')]=function(_0x5bc96c,_0x2e01ae){var _0x19c1d3={};var _0x3e95a2={};var _0x2a5258;var _0x318d14;return db['User']['findOne']({'where':{'id':_0x5bc96c['params']['id']}})['then'](handleEntityNotFound(_0x2e01ae,null))[_0x4dfc('0x29')](function(_0x58cf0e){if(_0x58cf0e){_0x2a5258=_0x58cf0e;_0x3e95a2[_0x4dfc('0x52')]=_['keys'](db[_0x4dfc('0xe3')]['rawAttributes']);_0x3e95a2[_0x4dfc('0x41')]=_['keys'](_0x5bc96c['query']);_0x3e95a2[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x3e95a2[_0x4dfc('0x52')],_0x3e95a2[_0x4dfc('0x41')]);_0x19c1d3[_0x4dfc('0x46')]=_['intersection'](_0x3e95a2[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x5bc96c[_0x4dfc('0x41')]['fields']));_0x19c1d3['attributes']=_0x19c1d3[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x19c1d3[_0x4dfc('0x46')]:_0x3e95a2[_0x4dfc('0x52')];_0x19c1d3['order']=qs[_0x4dfc('0xcc')](_0x5bc96c['query']['sort']);_0x19c1d3['where']=qs[_0x4dfc('0x57')](_['pick'](_0x5bc96c['query'],_0x3e95a2[_0x4dfc('0x57')]));if(_0x5bc96c[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x19c1d3[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x19c1d3[_0x4dfc('0xcd')],{'$or':_['map'](_0x19c1d3[_0x4dfc('0x46')],function(_0x44c876){var _0x3c20a7={};_0x3c20a7[_0x44c876]={'$like':'%'+_0x5bc96c[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x3c20a7;})});}_0x19c1d3=_[_0x4dfc('0x5c')]({},_0x19c1d3,_0x5bc96c[_0x4dfc('0x5d')]);return _0x2a5258[_0x4dfc('0xe2')](_0x19c1d3);}})[_0x4dfc('0x29')](function(_0x4a59c6){if(_0x4a59c6){_0x318d14=_0x4a59c6['length'];if(!_0x5bc96c['query']['hasOwnProperty'](_0x4dfc('0xd4'))){_0x19c1d3[_0x4dfc('0x25')]=qs['limit'](_0x5bc96c[_0x4dfc('0x41')]['limit']);_0x19c1d3['offset']=qs['offset'](_0x5bc96c[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x2a5258[_0x4dfc('0xe2')](_0x19c1d3);}})[_0x4dfc('0x29')](function(_0x4eb05b){if(_0x4eb05b){return _0x4eb05b?{'count':_0x318d14,'rows':_0x4eb05b}:null;}})['then'](respondWithResult(_0x2e01ae,null))[_0x4dfc('0x1e')](handleError(_0x2e01ae,null));};exports['getMailInteractions']=function(_0x4a8101,_0x472e5e){var _0x5ca789={'raw':!![],'where':{}};var _0x424573={};var _0x3e0ca5={'count':0x0,'rows':[]};return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x4a8101[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x472e5e,null))[_0x4dfc('0x29')](function(_0x4a207d){if(_0x4a207d){_0x424573[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db[_0x4dfc('0xe4')][_0x4dfc('0x55')]);_0x424573[_0x4dfc('0x41')]=_['keys'](_0x4a8101[_0x4dfc('0x41')]);_0x424573['filters']=_[_0x4dfc('0x58')](_0x424573[_0x4dfc('0x52')],_0x424573['query']);_0x5ca789[_0x4dfc('0x46')]=_['intersection'](_0x424573['model'],qs[_0x4dfc('0x59')](_0x4a8101[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x5ca789[_0x4dfc('0x46')]=_0x5ca789[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x5ca789[_0x4dfc('0x46')]:_0x424573[_0x4dfc('0x52')];if(!_0x4a8101[_0x4dfc('0x41')]['hasOwnProperty']('nolimit')){_0x5ca789['limit']=qs[_0x4dfc('0x25')](_0x4a8101[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x5ca789[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x4a8101[_0x4dfc('0x41')]['offset']);}_0x5ca789[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x4a8101[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x5ca789[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x4a8101[_0x4dfc('0x41')],_0x424573[_0x4dfc('0x57')]));_0x5ca789[_0x4dfc('0xcd')][_0x4dfc('0xe0')]=_0x4a207d['id'];if(_0x4a8101[_0x4dfc('0x41')]['filter']){_0x5ca789[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x5ca789[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x5ca789['attributes'],function(_0x1b9b0c){var _0x433503={};_0x433503[_0x1b9b0c]={'$like':'%'+_0x4a8101[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x433503;})});}_0x5ca789=_[_0x4dfc('0x5c')]({},_0x5ca789,_0x4a8101[_0x4dfc('0x5d')]);return db[_0x4dfc('0xe4')][_0x4dfc('0x26')]({'where':_0x5ca789[_0x4dfc('0xcd')]})[_0x4dfc('0x29')](function(_0x1a88c6){_0x3e0ca5[_0x4dfc('0x26')]=_0x1a88c6;if(_0x4a8101['query'][_0x4dfc('0x42')]){_0x5ca789['include']=[{'all':!![]}];}return db[_0x4dfc('0xe4')][_0x4dfc('0x48')](_0x5ca789);})[_0x4dfc('0x29')](function(_0x350395){_0x3e0ca5[_0x4dfc('0x49')]=_0x350395;return _0x3e0ca5;});}})[_0x4dfc('0x29')](respondWithFilteredResult(_0x472e5e,_0x5ca789))[_0x4dfc('0x1e')](handleError(_0x472e5e,null));};exports[_0x4dfc('0xe5')]=function(_0x352584,_0x4795f6){var _0x4df493={};var _0x501263={};var _0x1a51d0;var _0x1b067f;return db['User']['findOne']({'where':{'id':_0x352584[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x4795f6,null))['then'](function(_0x4181ed){if(_0x4181ed){_0x1a51d0=_0x4181ed;_0x501263[_0x4dfc('0x52')]=_['keys'](db[_0x4dfc('0xe6')][_0x4dfc('0x55')]);_0x501263[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x352584['query']);_0x501263[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x501263[_0x4dfc('0x52')],_0x501263['query']);_0x4df493['attributes']=_[_0x4dfc('0x58')](_0x501263[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x352584[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x4df493['attributes']=_0x4df493[_0x4dfc('0x46')]['length']?_0x4df493[_0x4dfc('0x46')]:_0x501263[_0x4dfc('0x52')];_0x4df493[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x352584[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x4df493[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x352584[_0x4dfc('0x41')],_0x501263[_0x4dfc('0x57')]));if(_0x352584[_0x4dfc('0x41')]['filter']){_0x4df493[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x4df493[_0x4dfc('0xcd')],{'$or':_['map'](_0x4df493[_0x4dfc('0x46')],function(_0x514b22){var _0x2b6372={};_0x2b6372[_0x514b22]={'$like':'%'+_0x352584[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x2b6372;})});}_0x4df493=_[_0x4dfc('0x5c')]({},_0x4df493,_0x352584['options']);return _0x1a51d0['getSmsInteractions'](_0x4df493);}})['then'](function(_0x5a6b8e){if(_0x5a6b8e){_0x1b067f=_0x5a6b8e[_0x4dfc('0x5a')];if(!_0x352584[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x4df493[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x352584[_0x4dfc('0x41')]['limit']);_0x4df493['offset']=qs[_0x4dfc('0x23')](_0x352584['query'][_0x4dfc('0x23')]);}return _0x1a51d0[_0x4dfc('0xe5')](_0x4df493);}})[_0x4dfc('0x29')](function(_0x2ec25a){if(_0x2ec25a){return _0x2ec25a?{'count':_0x1b067f,'rows':_0x2ec25a}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x4795f6,null))['catch'](handleError(_0x4795f6,null));};exports[_0x4dfc('0xe7')]=function(_0x173cac,_0x416719){var _0x3ae3ac={};var _0x46257a={};var _0x1c6f47;var _0x5c9f97;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x173cac[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x416719,null))[_0x4dfc('0x29')](function(_0x5486e8){if(_0x5486e8){_0x1c6f47=_0x5486e8;_0x46257a['model']=_[_0x4dfc('0x54')](db[_0x4dfc('0xe8')]['rawAttributes']);_0x46257a[_0x4dfc('0x41')]=_['keys'](_0x173cac[_0x4dfc('0x41')]);_0x46257a[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x46257a[_0x4dfc('0x52')],_0x46257a[_0x4dfc('0x41')]);_0x3ae3ac[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x46257a['model'],qs[_0x4dfc('0x59')](_0x173cac['query'][_0x4dfc('0x59')]));_0x3ae3ac[_0x4dfc('0x46')]=_0x3ae3ac[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x3ae3ac[_0x4dfc('0x46')]:_0x46257a[_0x4dfc('0x52')];_0x3ae3ac[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x173cac['query'][_0x4dfc('0xcc')]);_0x3ae3ac[_0x4dfc('0xcd')]=qs['filters'](_[_0x4dfc('0xce')](_0x173cac[_0x4dfc('0x41')],_0x46257a[_0x4dfc('0x57')]));if(_0x173cac[_0x4dfc('0x41')]['filter']){_0x3ae3ac[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x3ae3ac[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x3ae3ac[_0x4dfc('0x46')],function(_0x3a983){var _0x13ce3d={};_0x13ce3d[_0x3a983]={'$like':'%'+_0x173cac[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x13ce3d;})});}_0x3ae3ac=_[_0x4dfc('0x5c')]({},_0x3ae3ac,_0x173cac[_0x4dfc('0x5d')]);return _0x1c6f47[_0x4dfc('0xe7')](_0x3ae3ac);}})['then'](function(_0x2c4007){if(_0x2c4007){_0x5c9f97=_0x2c4007[_0x4dfc('0x5a')];if(!_0x173cac[_0x4dfc('0x41')]['hasOwnProperty'](_0x4dfc('0xd4'))){_0x3ae3ac[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x173cac[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x3ae3ac['offset']=qs['offset'](_0x173cac[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x1c6f47['getFaxInteractions'](_0x3ae3ac);}})[_0x4dfc('0x29')](function(_0x3b1940){if(_0x3b1940){return _0x3b1940?{'count':_0x5c9f97,'rows':_0x3b1940}:null;}})['then'](respondWithResult(_0x416719,null))[_0x4dfc('0x1e')](handleError(_0x416719,null));};exports[_0x4dfc('0xe9')]=function(_0x3af153,_0x430b2e){var _0x422111={};var _0x1eebc9={};var _0xa90e97;var _0x396e07;return db[_0x4dfc('0x3d')]['findOne']({'where':{'id':_0x3af153['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x430b2e,null))[_0x4dfc('0x29')](function(_0x5d1825){if(_0x5d1825){_0xa90e97=_0x5d1825;_0x1eebc9['model']=_[_0x4dfc('0x54')](db[_0x4dfc('0xea')]['rawAttributes']);_0x1eebc9[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x3af153[_0x4dfc('0x41')]);_0x1eebc9[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x1eebc9[_0x4dfc('0x52')],_0x1eebc9[_0x4dfc('0x41')]);_0x422111[_0x4dfc('0x46')]=_['intersection'](_0x1eebc9[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x3af153[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x422111[_0x4dfc('0x46')]=_0x422111['attributes'][_0x4dfc('0x5a')]?_0x422111['attributes']:_0x1eebc9[_0x4dfc('0x52')];_0x422111[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x3af153['query']['sort']);_0x422111['where']=qs['filters'](_[_0x4dfc('0xce')](_0x3af153[_0x4dfc('0x41')],_0x1eebc9[_0x4dfc('0x57')]));if(_0x3af153['query'][_0x4dfc('0x34')]){_0x422111[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x422111[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x422111[_0x4dfc('0x46')],function(_0x2e1e64){var _0x1304ca={};_0x1304ca[_0x2e1e64]={'$like':'%'+_0x3af153[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x1304ca;})});}_0x422111=_[_0x4dfc('0x5c')]({},_0x422111,_0x3af153['options']);return _0xa90e97[_0x4dfc('0xe9')](_0x422111);}})[_0x4dfc('0x29')](function(_0x130d5e){if(_0x130d5e){_0x396e07=_0x130d5e[_0x4dfc('0x5a')];if(!_0x3af153['query'][_0x4dfc('0xcf')]('nolimit')){_0x422111[_0x4dfc('0x25')]=qs['limit'](_0x3af153[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x422111[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x3af153[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0xa90e97['getWhatsappInteractions'](_0x422111);}})[_0x4dfc('0x29')](function(_0x3c0681){if(_0x3c0681){return _0x3c0681?{'count':_0x396e07,'rows':_0x3c0681}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x430b2e,null))[_0x4dfc('0x1e')](handleError(_0x430b2e,null));};exports[_0x4dfc('0xeb')]=function(_0x34474f,_0x18853c,_0xf6856c){var _0x4f6400;var _0x1a1efc;var _0x26383f;var _0xd5224f=!_[_0x4dfc('0x69')](_0x34474f[_0x4dfc('0x51')]['id'])?_0x34474f['params']['id']:!_[_0x4dfc('0x69')](_0x34474f[_0x4dfc('0x30')]['id'])?_0x34474f['user']['id']:null;return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0xd5224f,'role':{'$or':['admin','user','agent']}},'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0xec'),'mobile','role',_0x4dfc('0x6a'),_0x4dfc('0xa0')]})[_0x4dfc('0x29')](function(_0x89a35e){if(_0x89a35e){if(_0x89a35e[_0x4dfc('0x2d')]==='agent'){_0x4f6400=_0x89a35e;if(_0x34474f[_0x4dfc('0x61')][_0x4dfc('0xa2')]){_0x26383f=util[_0x4dfc('0xed')](_0x4dfc('0xee'),_0x4f6400[_0x34474f[_0x4dfc('0x61')][_0x4dfc('0xa2')]]);}else if(_0x34474f[_0x4dfc('0x61')][_0x4dfc('0xef')]){_0x26383f=util[_0x4dfc('0xed')](_0x4dfc('0xa9'),_0x34474f[_0x4dfc('0x61')]['intrf']);}else{_0x26383f=util['format'](_0x4dfc('0xa9'),_0x4f6400['name']);}socket['to'](util['format'](_0x4dfc('0xf0'),_0x4f6400['name']))[_0x4dfc('0x2a')](_0x4dfc('0xf1'),{'user':{'id':_0x4f6400['id'],'name':_0x4f6400[_0x4dfc('0x39')]},'ip':_0x34474f[_0x4dfc('0xf2')][_0x4dfc('0xf3')]||_0x34474f[_0x4dfc('0xf4')]['remoteAddress']||_0x34474f[_0x4dfc('0xf5')][_0x4dfc('0xf6')]||_0x34474f[_0x4dfc('0xf4')][_0x4dfc('0xf5')][_0x4dfc('0xf6')]});return db['UserVoiceQueueRt'][_0x4dfc('0xb2')]({'where':{'membername':_0x4f6400[_0x4dfc('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0x4dfc('0x91'))][(_0x4dfc('0x94'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x4dfc('0x29')](function(){if(_0x4f6400){return _0x4f6400[_0x4dfc('0xf7')]({'raw':!![]});}})[_0x4dfc('0x29')](function(_0x2e664f){if(_0x4f6400){if(_0x2e664f){_0x1a1efc=_0x2e664f;if(_0x1a1efc[_0x4dfc('0x5a')]){var _0x1a74d2=_0x1a1efc['map'](function(_0x27b464){var _0xdc7422={'membername':_0x4f6400[_0x4dfc('0x39')],'UserId':_0x4f6400['id'],'queue_name':_0x27b464['name'],'VoiceQueueId':_0x27b464['id'],'interface':_0x26383f,'paused':_0x4f6400[_0x4dfc('0xa0')]||![],'penalty':_0x27b464[_0x4dfc('0xf8')]||0x0};return db['UserVoiceQueueRt']['upsert'](_0xdc7422);});return Promise[_0x4dfc('0x60')](_0x1a74d2);}}}})[_0x4dfc('0x29')](function(){if(_0x4f6400){return db[_0x4dfc('0xf9')][_0x4dfc('0x48')]({'where':{'membername':_0x4f6400['name'],'exitAt':null}});}})[_0x4dfc('0x29')](function(_0x3892fc){if(_0x4f6400){var _0x2ff78b=[];_0x3892fc[_0x4dfc('0xfa')](function(_0x2e0bfc){_0x2ff78b['push'](_0x2e0bfc['update']({'exitAt':moment()['format'](_0x4dfc('0xfb'))}));});return Promise[_0x4dfc('0x60')](_0x2ff78b);}})[_0x4dfc('0x29')](function(){if(_0x4f6400){var _0x2d61f8=[];var _0x7cf2eb=[];var _0x6219b7=utils[_0x4dfc('0xfc')]();var _0x40cfd9={'membername':_0x4f6400[_0x4dfc('0x39')],'interface':_0x26383f,'enterAt':moment()[_0x4dfc('0xed')](_0x4dfc('0xfb')),'role':_0x4f6400[_0x4dfc('0x2d')],'internal':_0x4f6400[_0x4dfc('0x6a')]};_0x6219b7['forEach'](function(_0x5f55ee){_0x2d61f8['push'](_[_0x4dfc('0x5c')]({'channel':_0x5f55ee,'type':_0x4dfc('0xfd'),'data1':_0x34474f[_0x4dfc('0x61')][_0x4dfc('0xfe')],'data2':_0x26383f},_0x40cfd9));if(_0x4f6400[_0x4dfc('0xa0')]){_0x7cf2eb[_0x4dfc('0x47')](_[_0x4dfc('0x5c')]({'channel':_0x5f55ee,'type':'PAUSE','data1':_0x4dfc('0xff')},_0x40cfd9));}});return db[_0x4dfc('0xf9')]['bulkCreate'](_0x2d61f8[_0x4dfc('0x100')](_0x7cf2eb),{'individualHooks':!![]});}})[_0x4dfc('0x29')](function(){if(_0x4f6400){return _0x4f6400[_0x4dfc('0x28')]({'online':!![],'lastLoginAt':moment()[_0x4dfc('0xed')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x4f6400['loginInPause']||![],'mailPause':_0x4f6400[_0x4dfc('0xa0')]||![],'chatPause':_0x4f6400[_0x4dfc('0xa0')]||![],'faxPause':_0x4f6400[_0x4dfc('0xa0')]||![],'smsPause':_0x4f6400[_0x4dfc('0xa0')]||![],'openchannelPause':_0x4f6400[_0x4dfc('0xa0')]||![],'whatsappPause':_0x4f6400[_0x4dfc('0xa0')]||![],'pauseType':_0x4f6400['loginInPause']?_0x4dfc('0xff'):null,'interface':_0x26383f,'lastPauseAt':moment()[_0x4dfc('0xed')](_0x4dfc('0xfb'))});}})['then'](function(_0x40b0fe){if(_0x34474f[_0x4dfc('0x101')]){return _0xf6856c();}else{return Promise[_0x4dfc('0x102')](_0x40b0fe)[_0x4dfc('0x29')](respondWithResult(_0x18853c,null));}})['catch'](handleError(_0x18853c,null));};exports['logout']=function(_0x1001cf,_0x155e3f){var _0x438ca7;return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x1001cf[_0x4dfc('0x51')]['id'],'role':'agent'},'attributes':['id',_0x4dfc('0x39'),'role']})[_0x4dfc('0x29')](handleEntityNotFound(_0x155e3f,null))['then'](function(_0x358c4f){if(_0x358c4f){_0x438ca7=_0x358c4f;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x438ca7[_0x4dfc('0x39')]},'individualHooks':!![]});}})[_0x4dfc('0x29')](function(){return db['MemberReport'][_0x4dfc('0x48')]({'where':{'membername':_0x438ca7[_0x4dfc('0x39')],'exitAt':null}});})[_0x4dfc('0x29')](function(_0x1f7b57){var _0x41896c=[];_0x1f7b57[_0x4dfc('0xfa')](function(_0x5c5a50){_0x41896c['push'](_0x5c5a50[_0x4dfc('0x28')]({'exitAt':moment()[_0x4dfc('0xed')](_0x4dfc('0xfb'))}));});return Promise['all'](_0x41896c);})[_0x4dfc('0x29')](function(){return _0x438ca7[_0x4dfc('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x4dfc('0x29')](respondWithResult(_0x155e3f,null))['catch'](handleError(_0x155e3f,null));};exports[_0x4dfc('0x103')]=function(_0x13086a,_0x1731d2){var _0x146f7b;return db[_0x4dfc('0xab')][_0x4dfc('0x28')]({'paused':0x1},{'where':{'UserId':_0x13086a[_0x4dfc('0x51')]['id']},'individualHooks':!![]})[_0x4dfc('0x29')](function(){return db['User']['find']({'where':{'id':_0x13086a[_0x4dfc('0x51')]['id'],'role':_0x4dfc('0x32')},'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x2d'),_0x4dfc('0x6a'),_0x4dfc('0xa2'),_0x4dfc('0x9f')]});})[_0x4dfc('0x29')](handleEntityNotFound(_0x1731d2,null))['then'](function(_0x5e00fd){if(_0x5e00fd){_0x146f7b=_0x5e00fd;return respondWithRpcPromise(_0x4dfc('0x104'),_0x4dfc('0x103'),{'id':_0x146f7b['id'],'name':_0x146f7b[_0x4dfc('0x39')],'pause':!![]});}})[_0x4dfc('0x29')](function(){if(_0x146f7b){return db[_0x4dfc('0xf9')]['findAll']({'where':{'membername':_0x146f7b['name'],'type':_0x4dfc('0x105'),'exitAt':null}});}})['then'](function(_0x21f016){if(_0x21f016['length']){var _0x937a4b=moment()[_0x4dfc('0xed')](_0x4dfc('0xfb'));for(var _0x584eea=0x0,_0x24d977=_0x21f016[_0x4dfc('0x5a')];_0x584eea<_0x24d977;_0x584eea++){_0x21f016[_0x584eea]['updateAttributes']({'exitAt':_0x937a4b});}}})['then'](function(){var _0x39fc2b=[];var _0x42722c=utils[_0x4dfc('0xfc')]();_0x42722c['forEach'](function(_0x13e3ac){_0x39fc2b['push']({'channel':_0x13e3ac,'membername':_0x146f7b[_0x4dfc('0x39')],'interface':_[_0x4dfc('0x69')](_0x146f7b['interface'])?util[_0x4dfc('0xed')](_0x4dfc('0xa9'),_0x146f7b[_0x4dfc('0x39')]):_0x146f7b[_0x4dfc('0xa2')],'type':_0x4dfc('0x105'),'enterAt':moment()[_0x4dfc('0xed')](_0x4dfc('0xfb')),'data1':_0x13086a[_0x4dfc('0x61')][_0x4dfc('0x106')]||_0x4dfc('0x107'),'role':_0x146f7b['role'],'internal':_0x146f7b[_0x4dfc('0x6a')]});});return db[_0x4dfc('0xf9')][_0x4dfc('0x88')](_0x39fc2b,{'individualHooks':!![]});})[_0x4dfc('0x29')](function(){return _0x146f7b['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x13086a[_0x4dfc('0x61')][_0x4dfc('0x106')]||_0x4dfc('0x107'),'lastPauseAt':moment()['format'](_0x4dfc('0xfb'))});})[_0x4dfc('0x29')](respondWithResult(_0x1731d2,null))[_0x4dfc('0x1e')](handleError(_0x1731d2,null));};exports['unpause']=function(_0x3c5505,_0x39014a){if(_0x3c5505[_0x4dfc('0x61')][_0x4dfc('0x9e')]&&!utils[_0x4dfc('0xa3')](_0x3c5505['body'][_0x4dfc('0x9e')])){throw new APIBadRequestError(util[_0x4dfc('0xed')](_0x4dfc('0x108'),_0x3c5505[_0x4dfc('0x61')][_0x4dfc('0x9e')]));}return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x3c5505[_0x4dfc('0x51')]['id']},'attributes':['id','name',_0x4dfc('0x2d'),_0x4dfc('0x6a'),'interface',_0x4dfc('0x9f'),_0x4dfc('0xa1'),'mailPause',_0x4dfc('0x109'),_0x4dfc('0x10a'),_0x4dfc('0x10b'),_0x4dfc('0x10c'),_0x4dfc('0x10d'),_0x4dfc('0x10e'),_0x4dfc('0x10f')]})[_0x4dfc('0x29')](function(_0x1cdaf8){if(!_0x1cdaf8){throw new APINotFoundError(util['format'](_0x4dfc('0x110'),_0x3c5505[_0x4dfc('0x51')]['id']));}return _0x1cdaf8['unpause'](_0x3c5505['body']['channel']);})['then'](respondWithResult(_0x39014a,null))[_0x4dfc('0x1e')](APIHandleError(_0x39014a));};exports[_0x4dfc('0x111')]=function(_0xe8696f,_0x498d6d){var _0x13f2f6={};var _0x2ca110={};var _0x284f51;var _0x3001e5;return db['User']['findOne']({'where':{'id':_0xe8696f[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x498d6d,null))[_0x4dfc('0x29')](function(_0x4e6293){if(_0x4e6293){_0x284f51=_0x4e6293;_0x2ca110['model']=_['keys'](db['Team']['rawAttributes']);_0x2ca110['query']=_['keys'](_0xe8696f[_0x4dfc('0x41')]);_0x2ca110[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x2ca110['model'],_0x2ca110[_0x4dfc('0x41')]);_0x13f2f6[_0x4dfc('0x46')]=_['intersection'](_0x2ca110[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0xe8696f[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x13f2f6[_0x4dfc('0x46')]=_0x13f2f6['attributes'][_0x4dfc('0x5a')]?_0x13f2f6['attributes']:_0x2ca110[_0x4dfc('0x52')];_0x13f2f6[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0xe8696f[_0x4dfc('0x41')]['sort']);_0x13f2f6['where']=qs['filters'](_['pick'](_0xe8696f[_0x4dfc('0x41')],_0x2ca110[_0x4dfc('0x57')]));if(_0xe8696f[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x13f2f6[_0x4dfc('0xcd')]=_['merge'](_0x13f2f6[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x13f2f6[_0x4dfc('0x46')],function(_0x509ca0){var _0xed9c83={};_0xed9c83[_0x509ca0]={'$like':'%'+_0xe8696f['query'][_0x4dfc('0x34')]+'%'};return _0xed9c83;})});}_0x13f2f6=_[_0x4dfc('0x5c')]({},_0x13f2f6,_0xe8696f[_0x4dfc('0x5d')]);return _0x284f51[_0x4dfc('0x111')](_0x13f2f6);}})[_0x4dfc('0x29')](function(_0x1085f7){if(_0x1085f7){_0x3001e5=_0x1085f7['length'];if(!_0xe8696f[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x13f2f6['limit']=qs[_0x4dfc('0x25')](_0xe8696f[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x13f2f6[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0xe8696f[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x284f51[_0x4dfc('0x111')](_0x13f2f6);}})[_0x4dfc('0x29')](function(_0xbfad5f){if(_0xbfad5f){return _0xbfad5f?{'count':_0x3001e5,'rows':_0xbfad5f}:null;}})['then'](respondWithResult(_0x498d6d,null))['catch'](handleError(_0x498d6d,null));};exports[_0x4dfc('0x112')]=function(_0x324022,_0x247e10){var _0x21866b=_0x324022[_0x4dfc('0x51')]['id'];var _0x593ea5=_0x324022[_0x4dfc('0x61')]?_0x324022[_0x4dfc('0x61')]['ids']:null;var _0x45107e=[];return Promise[_0x4dfc('0x102')]()[_0x4dfc('0x29')](function(){if(!_0x593ea5)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x4dfc('0x29')](function(){return db[_0x4dfc('0x3d')]['findOne']({'where':{'id':_0x21866b}});})[_0x4dfc('0x29')](function(_0x258696){if(!_0x258696)throw new APINotFoundError(util[_0x4dfc('0xed')](_0x4dfc('0x110'),_0x324022[_0x4dfc('0x51')]['id']));return db[_0x4dfc('0x6c')][_0x4dfc('0x113')](function(_0xa74d63){return _0x258696['addTeams'](_0x593ea5,{'transaction':_0xa74d63})[_0x4dfc('0x29')](function(){return db[_0x4dfc('0x114')]['findAll']({'where':{'id':{'$in':_0x593ea5}}});})['then'](function(_0x59e45f){var _0x398aba=_['map'](_0x59e45f,function(_0x56223b){return _0x56223b[_0x4dfc('0x115')]();});return Promise[_0x4dfc('0x60')](_0x398aba);})[_0x4dfc('0x29')](function(_0x241efe){_0x45107e=_[_0x4dfc('0x116')](_0x241efe);var _0x5288ec=_['map'](_0x45107e,function(_0x575bfc){return _0x575bfc[_0x4dfc('0x117')](_0x258696['id'],{'transaction':_0xa74d63});});return Promise[_0x4dfc('0x60')](_0x5288ec);})['then'](function(){if(!_0x258696['online'])return;var _0x3beb25=_[_0x4dfc('0x34')](_0x45107e,function(_0x28a0cd){return _0x28a0cd[_0x4dfc('0x118')](_0x4dfc('0x9e'))===_0x4dfc('0x119');});var _0x56f667=_[_0x4dfc('0x36')](_0x3beb25,function(_0x26d1b5){return db['UserVoiceQueueRt'][_0x4dfc('0xac')]({'membername':_0x258696[_0x4dfc('0x39')],'UserId':_0x258696['id'],'queue_name':_0x26d1b5[_0x4dfc('0x39')],'VoiceQueueId':_0x26d1b5['id'],'interface':_[_0x4dfc('0x69')](_0x258696[_0x4dfc('0xa2')])?util[_0x4dfc('0xed')](_0x4dfc('0xa9'),_0x258696[_0x4dfc('0x39')]):_0x258696['interface'],'paused':_0x258696[_0x4dfc('0xa1')]||![],'penalty':_0x258696[_0x4dfc('0xaa')]},{'transaction':_0xa74d63});});return Promise[_0x4dfc('0x60')](_0x56f667);})['then'](function(){return db[_0x4dfc('0x11a')][_0x4dfc('0x48')]({'where':{'teamId':{'$in':_0x593ea5}}});})['then'](function(_0x590be5){var _0x314bd6=_['map'](_0x590be5,function(_0x4eedb2){return db['UserVoicePrefix'][_0x4dfc('0x80')]({'UserId':_0x258696['id'],'VoicePrefixId':_0x4eedb2[_0x4dfc('0x11b')]},{'transaction':_0xa74d63});});return Promise['all'](_0x314bd6);});});})['then'](function(){for(var _0x23ba55=0x0;_0x23ba55<_0x45107e[_0x4dfc('0x5a')];_0x23ba55++){var _0x58a2be=_0x45107e[_0x23ba55][_0x4dfc('0x118')](_0x4dfc('0x9e'));var _0x11f0b4=_0x58a2be+_0x4dfc('0xb0');socket[_0x4dfc('0x2a')](_0x4dfc('0x30')+_0x58a2be+_0x4dfc('0xa7'),{'UserId':_0x21866b,['queueField']:_0x45107e[_0x23ba55]['id']});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x247e10,null))[_0x4dfc('0x1e')](APIHandleError(_0x247e10));};exports[_0x4dfc('0x11c')]=function(_0x2b8452,_0x5d6f13){var _0x307b47=_0x2b8452['params']['id'];var _0x138912=null;if(_0x2b8452[_0x4dfc('0x41')]['ids']){_0x138912=_[_0x4dfc('0xaf')](_0x2b8452[_0x4dfc('0x41')][_0x4dfc('0x65')])?_0x2b8452['query'][_0x4dfc('0x65')]:[_0x2b8452['query']['ids']];}var _0x2bc48e=[];return Promise[_0x4dfc('0x102')]()[_0x4dfc('0x29')](function(){if(!_0x138912)throw new APIBadRequestError(_0x4dfc('0x11d'));})[_0x4dfc('0x29')](function(){return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x307b47}});})['then'](function(_0x126932){if(!_0x126932)throw new APINotFoundError(util[_0x4dfc('0xed')](_0x4dfc('0x110'),_0x2b8452[_0x4dfc('0x51')]['id']));return db[_0x4dfc('0x6c')][_0x4dfc('0x113')](function(_0x115b5b){return _0x126932[_0x4dfc('0x11c')](_0x138912,{'transaction':_0x115b5b})['then'](function(){return db[_0x4dfc('0x114')][_0x4dfc('0x48')]({'where':{'id':{'$in':_0x138912}}});})[_0x4dfc('0x29')](function(_0x55bbd4){var _0x44f0c1=_[_0x4dfc('0x36')](_0x55bbd4,function(_0x448e24){return _0x448e24['getAssociatedQueues']();});return Promise[_0x4dfc('0x60')](_0x44f0c1);})[_0x4dfc('0x29')](function(_0x446126){_0x2bc48e=_[_0x4dfc('0x116')](_0x446126);var _0x5a19a9=_[_0x4dfc('0x36')](_0x2bc48e,function(_0x58f04f){return _0x58f04f[_0x4dfc('0x11e')](_0x126932['id'],{'transaction':_0x115b5b});});return Promise[_0x4dfc('0x60')](_0x5a19a9);})['then'](function(){if(!_0x126932[_0x4dfc('0x9f')])return;var _0x20c4b5=_[_0x4dfc('0x34')](_0x2bc48e,function(_0x142764){return _0x142764[_0x4dfc('0x118')]('channel')===_0x4dfc('0x119');});var _0x4b24f6=_[_0x4dfc('0x36')](_0x20c4b5,function(_0x3f8d51){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x3f8d51['id'],'UserId':_0x126932['id']},'transaction':_0x115b5b});});return Promise[_0x4dfc('0x60')](_0x4b24f6);})[_0x4dfc('0x29')](function(){return db[_0x4dfc('0x11a')][_0x4dfc('0x48')]({'where':{'teamId':{'$in':_0x138912}}});})['then'](function(_0x453427){var _0x4ad205=_[_0x4dfc('0x36')](_0x453427,function(_0x32e65b){return db[_0x4dfc('0x11f')][_0x4dfc('0xb2')]({'where':{'UserId':_0x126932['id'],'VoicePrefixId':_0x32e65b[_0x4dfc('0x11b')]}},{'transaction':_0x115b5b});});return Promise[_0x4dfc('0x60')](_0x4ad205);});});})[_0x4dfc('0x29')](function(){for(var _0x146835=0x0;_0x146835<_0x2bc48e[_0x4dfc('0x5a')];_0x146835++){var _0x25b529=_0x2bc48e[_0x146835][_0x4dfc('0x118')](_0x4dfc('0x9e'));var _0x3b9641=_0x25b529+'QueueId';socket[_0x4dfc('0x2a')]('user'+_0x25b529+_0x4dfc('0xb1'),{'UserId':_0x307b47,['queueField']:_0x2bc48e[_0x146835]['id']});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x5d6f13,null))[_0x4dfc('0x1e')](APIHandleError(_0x5d6f13));};exports[_0x4dfc('0x120')]=function(_0x2c2002,_0x312f4e){var _0x521460={};var _0x22b4b1={};var _0x4e20ab;var _0x5a11fb;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x2c2002['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x312f4e,null))['then'](function(_0x51025d){if(_0x51025d){_0x4e20ab=_0x51025d;_0x22b4b1[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db['CmList'][_0x4dfc('0x55')]);_0x22b4b1['query']=_['keys'](_0x2c2002[_0x4dfc('0x41')]);_0x22b4b1[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x22b4b1[_0x4dfc('0x52')],_0x22b4b1[_0x4dfc('0x41')]);_0x521460[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x22b4b1[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x521460[_0x4dfc('0x46')]=_0x521460[_0x4dfc('0x46')]['length']?_0x521460['attributes']:_0x22b4b1['model'];_0x521460[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x521460['where']=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x2c2002['query'],_0x22b4b1[_0x4dfc('0x57')]));if(_0x2c2002[_0x4dfc('0x41')]['filter']){_0x521460[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x521460[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x521460['attributes'],function(_0x4549b5){var _0x4b919d={};_0x4b919d[_0x4549b5]={'$like':'%'+_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x4b919d;})});}_0x521460=_['merge']({},_0x521460,_0x2c2002['options']);return _0x4e20ab[_0x4dfc('0x120')](_0x521460);}})['then'](function(_0x2bb5f9){if(_0x2bb5f9){_0x5a11fb=_0x2bb5f9[_0x4dfc('0x5a')];if(!_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x521460[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x521460[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x2c2002[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x4e20ab[_0x4dfc('0x120')](_0x521460);}})[_0x4dfc('0x29')](function(_0x24ab62){if(_0x24ab62){return _0x24ab62?{'count':_0x5a11fb,'rows':_0x24ab62}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x312f4e,null))[_0x4dfc('0x1e')](handleError(_0x312f4e,null));};exports[_0x4dfc('0x121')]=function(_0x1cb052,_0x3b1892){var _0x598e41={};var _0x3f90b1={};var _0x310432;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x1cb052[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3b1892,null))[_0x4dfc('0x29')](function(_0x40369d){if(_0x40369d){_0x310432=_0x40369d;_0x3f90b1[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db[_0x4dfc('0x3d')][_0x4dfc('0x55')]);_0x3f90b1[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x1cb052[_0x4dfc('0x41')]);_0x3f90b1[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x3f90b1['model'],_0x3f90b1['query']);_0x598e41[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x3f90b1[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x1cb052['query'][_0x4dfc('0x59')]));_0x598e41[_0x4dfc('0x46')]=_0x598e41[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x598e41[_0x4dfc('0x46')]:_0x3f90b1[_0x4dfc('0x52')];_0x598e41[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x1cb052[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x598e41[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_['pick'](_0x1cb052[_0x4dfc('0x41')],_0x3f90b1['filters']));if(_0x1cb052['query']['filter']){_0x598e41['where']=_[_0x4dfc('0x5c')](_0x598e41['where'],{'$or':_[_0x4dfc('0x36')](_0x598e41[_0x4dfc('0x46')],function(_0x301851){var _0x3b72a6={};_0x3b72a6[_0x301851]={'$like':'%'+_0x1cb052[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x3b72a6;})});}_0x598e41[_0x4dfc('0x52')]=db[_0x4dfc('0x3d')];_0x598e41['as']=_0x4dfc('0x31');_0x598e41=_['merge']({},_0x598e41,_0x1cb052[_0x4dfc('0x5d')]);return _0x310432[_0x4dfc('0xf7')]({'include':[_0x598e41]});}})[_0x4dfc('0x29')](function(_0x2118ae){if(_0x2118ae){var _0x4ad58e={},_0x34b277=[];for(var _0x1495b2=0x0;_0x1495b2<_0x2118ae[_0x4dfc('0x5a')];_0x1495b2+=0x1){for(var _0x32b1c3=0x0,_0x5147b6;_0x32b1c3<_0x2118ae[_0x1495b2][_0x4dfc('0x31')][_0x4dfc('0x5a')];_0x32b1c3+=0x1){_0x5147b6=_0x2118ae[_0x1495b2]['Agents'][_0x32b1c3][_0x4dfc('0x2c')]({'plain':!![]});_0x4ad58e[_0x5147b6['id']]=_0x5147b6;}}_0x4ad58e=_[_0x4dfc('0x122')](_0x4ad58e);for(var _0x45da9b=qs[_0x4dfc('0x23')](_0x1cb052[_0x4dfc('0x41')][_0x4dfc('0x23')]);_0x45da9b<_0x4ad58e[_0x4dfc('0x5a')]&&_0x34b277['length']<qs[_0x4dfc('0x25')](_0x1cb052['query'][_0x4dfc('0x25')]);_0x45da9b+=0x1){if(_0x4ad58e[_0x45da9b]){_0x34b277[_0x4dfc('0x47')](_0x4ad58e[_0x45da9b]);}}return{'count':_0x4ad58e[_0x4dfc('0x5a')],'rows':_0x34b277};}})['then'](respondWithResult(_0x3b1892,null))['catch'](handleError(_0x3b1892,null));};exports[_0x4dfc('0xb2')]=function(_0x351c4e,_0x51da6e){if(_0x351c4e['user']['id']==_0x351c4e[_0x4dfc('0x51')]['id']){return _0x51da6e[_0x4dfc('0x20')](0x1f4)[_0x4dfc('0x3b')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x351c4e[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x51da6e,null))['then'](removeEntity(_0x51da6e,null))[_0x4dfc('0x1e')](handleError(_0x51da6e,null));};exports[_0x4dfc('0x123')]=function(_0x46c774,_0x71abf4){return db['User']['find']({'where':{'id':_0x46c774[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x71abf4,null))[_0x4dfc('0x29')](function(_0x28f512){if(_0x28f512){return _0x28f512[_0x4dfc('0x123')](_0x46c774[_0x4dfc('0x61')][_0x4dfc('0x65')],_['omit'](_0x46c774[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{})['spread'](function(){for(var _0x383c83=0x0;_0x383c83<_0x46c774[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0x383c83+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x124'),{'ChatInteractionId':Number(_0x46c774[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x383c83]),'UserId':Number(_0x46c774['params']['id'])});}return _0x46c774[_0x4dfc('0x61')][_0x4dfc('0x65')];});}})[_0x4dfc('0x29')](respondWithResult(_0x71abf4,null))[_0x4dfc('0x1e')](handleError(_0x71abf4,null));};exports['removeChatInteractions']=function(_0x5d5ebf,_0x24ca65){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x5d5ebf['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x24ca65,null))[_0x4dfc('0x29')](function(_0x32b62d){if(_0x32b62d){return _0x32b62d['removeChatInteractions'](_0x5d5ebf[_0x4dfc('0x41')][_0x4dfc('0x65')])[_0x4dfc('0x29')](function(){if(_[_0x4dfc('0xaf')](_0x5d5ebf[_0x4dfc('0x41')][_0x4dfc('0x65')])){for(var _0x2f76ec=0x0;_0x2f76ec<_0x5d5ebf[_0x4dfc('0x41')]['ids']['length'];_0x2f76ec+=0x1){socket[_0x4dfc('0x2a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x5d5ebf['query'][_0x4dfc('0x65')][_0x2f76ec]),'UserId':Number(_0x5d5ebf[_0x4dfc('0x51')]['id'])});}}else{socket[_0x4dfc('0x2a')](_0x4dfc('0x125'),{'ChatInteractionId':Number(_0x5d5ebf['query'][_0x4dfc('0x65')]),'UserId':Number(_0x5d5ebf[_0x4dfc('0x51')]['id'])});}});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x24ca65,null))['catch'](handleError(_0x24ca65,null));};exports[_0x4dfc('0x126')]=function(_0x5e4b90,_0x22676c){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x5e4b90[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x22676c,null))[_0x4dfc('0x29')](function(_0x1d0098){if(_0x1d0098){return _0x1d0098[_0x4dfc('0x126')](_0x5e4b90[_0x4dfc('0x61')][_0x4dfc('0x65')],_['omit'](_0x5e4b90['body'],['ids','id'])||{})[_0x4dfc('0x127')](function(){for(var _0x2299cd=0x0;_0x2299cd<_0x5e4b90[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0x2299cd+=0x1){socket[_0x4dfc('0x2a')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x5e4b90['body'][_0x4dfc('0x65')][_0x2299cd]),'UserId':Number(_0x5e4b90[_0x4dfc('0x51')]['id'])});}return _0x5e4b90[_0x4dfc('0x61')][_0x4dfc('0x65')];});}})[_0x4dfc('0x29')](respondWithResult(_0x22676c,null))[_0x4dfc('0x1e')](handleError(_0x22676c,null));};exports[_0x4dfc('0x128')]=function(_0x36ea96,_0x3fa6fe){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x36ea96['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3fa6fe,null))['then'](function(_0x2e9b81){if(_0x2e9b81){return _0x2e9b81[_0x4dfc('0x128')](_0x36ea96[_0x4dfc('0x41')][_0x4dfc('0x65')])[_0x4dfc('0x29')](function(){if(_['isArray'](_0x36ea96[_0x4dfc('0x41')][_0x4dfc('0x65')])){for(var _0xaf0e91=0x0;_0xaf0e91<_0x36ea96['query'][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0xaf0e91+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x129'),{'MailInteractionId':Number(_0x36ea96[_0x4dfc('0x41')]['ids'][_0xaf0e91]),'UserId':Number(_0x36ea96[_0x4dfc('0x51')]['id'])});}}else{socket[_0x4dfc('0x2a')](_0x4dfc('0x129'),{'MailInteractionId':Number(_0x36ea96[_0x4dfc('0x41')][_0x4dfc('0x65')]),'UserId':Number(_0x36ea96['params']['id'])});}});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x3fa6fe,null))[_0x4dfc('0x1e')](handleError(_0x3fa6fe,null));};exports[_0x4dfc('0x12a')]=function(_0x5052b5,_0x328cdc){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x5052b5[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x328cdc,null))[_0x4dfc('0x29')](function(_0x1b5022){if(_0x1b5022){return _0x1b5022[_0x4dfc('0x12a')](_0x5052b5['body'][_0x4dfc('0x65')],_['omit'](_0x5052b5[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{})[_0x4dfc('0x127')](function(){for(var _0x1bea37=0x0;_0x1bea37<_0x5052b5[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0x1bea37+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x12b'),{'FaxInteractionId':Number(_0x5052b5[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x1bea37]),'UserId':Number(_0x5052b5['params']['id'])});}return _0x5052b5[_0x4dfc('0x61')][_0x4dfc('0x65')];});}})[_0x4dfc('0x29')](respondWithResult(_0x328cdc,null))['catch'](handleError(_0x328cdc,null));};exports[_0x4dfc('0x12c')]=function(_0x50b408,_0x43f6b6){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x50b408[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x43f6b6,null))['then'](function(_0x11aff5){if(_0x11aff5){return _0x11aff5[_0x4dfc('0x12c')](_0x50b408[_0x4dfc('0x41')][_0x4dfc('0x65')])[_0x4dfc('0x29')](function(){if(_[_0x4dfc('0xaf')](_0x50b408[_0x4dfc('0x41')][_0x4dfc('0x65')])){for(var _0x40c640=0x0;_0x40c640<_0x50b408[_0x4dfc('0x41')][_0x4dfc('0x65')]['length'];_0x40c640+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x12d'),{'FaxInteractionId':Number(_0x50b408[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x40c640]),'UserId':Number(_0x50b408[_0x4dfc('0x51')]['id'])});}}else{socket[_0x4dfc('0x2a')](_0x4dfc('0x12d'),{'FaxInteractionId':Number(_0x50b408[_0x4dfc('0x41')]['ids']),'UserId':Number(_0x50b408[_0x4dfc('0x51')]['id'])});}});}})['then'](respondWithStatusCode(_0x43f6b6,null))['catch'](handleError(_0x43f6b6,null));};exports[_0x4dfc('0x12e')]=function(_0x246424,_0x1c4f9c){return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x246424[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x1c4f9c,null))[_0x4dfc('0x29')](function(_0x4837f7){if(_0x4837f7){return _0x4837f7[_0x4dfc('0x12e')](_0x246424[_0x4dfc('0x61')][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x246424[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{})[_0x4dfc('0x127')](function(){for(var _0x12101e=0x0;_0x12101e<_0x246424[_0x4dfc('0x61')][_0x4dfc('0x65')]['length'];_0x12101e+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x130'),{'SmsInteractionId':Number(_0x246424['body'][_0x4dfc('0x65')][_0x12101e]),'UserId':Number(_0x246424['params']['id'])});}return _0x246424[_0x4dfc('0x61')][_0x4dfc('0x65')];});}})[_0x4dfc('0x29')](respondWithResult(_0x1c4f9c,null))['catch'](handleError(_0x1c4f9c,null));};exports[_0x4dfc('0x131')]=function(_0x4e87a8,_0xe233aa){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x4e87a8['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0xe233aa,null))[_0x4dfc('0x29')](function(_0x24b845){if(_0x24b845){return _0x24b845[_0x4dfc('0x131')](_0x4e87a8[_0x4dfc('0x41')][_0x4dfc('0x65')])[_0x4dfc('0x29')](function(){if(_[_0x4dfc('0xaf')](_0x4e87a8['query']['ids'])){for(var _0x54e0a5=0x0;_0x54e0a5<_0x4e87a8[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0x54e0a5+=0x1){socket['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x4e87a8[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x54e0a5]),'UserId':Number(_0x4e87a8['params']['id'])});}}else{socket[_0x4dfc('0x2a')](_0x4dfc('0x132'),{'SmsInteractionId':Number(_0x4e87a8[_0x4dfc('0x41')][_0x4dfc('0x65')]),'UserId':Number(_0x4e87a8[_0x4dfc('0x51')]['id'])});}});}})[_0x4dfc('0x29')](respondWithStatusCode(_0xe233aa,null))[_0x4dfc('0x1e')](handleError(_0xe233aa,null));};exports[_0x4dfc('0x133')]=function(_0x530c03,_0x198a2d){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x530c03[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x198a2d,null))[_0x4dfc('0x29')](function(_0x6113e4){if(_0x6113e4){return _0x6113e4['addOpenchannelInteractions'](_0x530c03['body'][_0x4dfc('0x65')],_['omit'](_0x530c03[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{})['spread'](function(){for(var _0xfaf134=0x0;_0xfaf134<_0x530c03['body'][_0x4dfc('0x65')][_0x4dfc('0x5a')];_0xfaf134+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x134'),{'OpenchannelInteractionId':Number(_0x530c03[_0x4dfc('0x61')][_0x4dfc('0x65')][_0xfaf134]),'UserId':Number(_0x530c03[_0x4dfc('0x51')]['id'])});}return _0x530c03[_0x4dfc('0x61')]['ids'];});}})[_0x4dfc('0x29')](respondWithResult(_0x198a2d,null))[_0x4dfc('0x1e')](handleError(_0x198a2d,null));};exports['removeOpenchannelInteractions']=function(_0x1f06dd,_0x5a1f91){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x1f06dd[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x5a1f91,null))[_0x4dfc('0x29')](function(_0xad5487){if(_0xad5487){return _0xad5487[_0x4dfc('0x135')](_0x1f06dd[_0x4dfc('0x41')]['ids'])[_0x4dfc('0x29')](function(){if(_[_0x4dfc('0xaf')](_0x1f06dd[_0x4dfc('0x41')][_0x4dfc('0x65')])){for(var _0x3a1778=0x0;_0x3a1778<_0x1f06dd[_0x4dfc('0x41')][_0x4dfc('0x65')]['length'];_0x3a1778+=0x1){socket[_0x4dfc('0x2a')](_0x4dfc('0x136'),{'OpenchannelInteractionId':Number(_0x1f06dd[_0x4dfc('0x41')][_0x4dfc('0x65')][_0x3a1778]),'UserId':Number(_0x1f06dd[_0x4dfc('0x51')]['id'])});}}else{socket[_0x4dfc('0x2a')](_0x4dfc('0x136'),{'OpenchannelInteractionId':Number(_0x1f06dd[_0x4dfc('0x41')][_0x4dfc('0x65')]),'UserId':Number(_0x1f06dd['params']['id'])});}});}})[_0x4dfc('0x29')](respondWithStatusCode(_0x5a1f91,null))[_0x4dfc('0x1e')](handleError(_0x5a1f91,null));};exports[_0x4dfc('0x137')]=function(_0x2e9ced,_0x50150b){return db['User']['find']({'where':{'id':_0x2e9ced[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x50150b,null))['then'](function(_0x1d781f){if(_0x1d781f){return _0x1d781f['addWhatsappInteractions'](_0x2e9ced[_0x4dfc('0x61')][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x2e9ced[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{})['spread'](function(){for(var _0x34988a=0x0;_0x34988a<_0x2e9ced['body'][_0x4dfc('0x65')]['length'];_0x34988a+=0x1){socket['emit'](_0x4dfc('0x138'),{'WhatsappInteractionId':Number(_0x2e9ced[_0x4dfc('0x61')][_0x4dfc('0x65')][_0x34988a]),'UserId':Number(_0x2e9ced['params']['id'])});}return _0x2e9ced[_0x4dfc('0x61')][_0x4dfc('0x65')];});}})[_0x4dfc('0x29')](respondWithResult(_0x50150b,null))['catch'](handleError(_0x50150b,null));};exports[_0x4dfc('0x139')]=function(_0x3a5b45,_0x8e9f0f){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x3a5b45[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x8e9f0f,null))['then'](function(_0x4c7236){if(_0x4c7236){return _0x4c7236[_0x4dfc('0x139')](_0x3a5b45['query'][_0x4dfc('0x65')]);}})[_0x4dfc('0x29')](respondWithStatusCode(_0x8e9f0f,null))['catch'](handleError(_0x8e9f0f,null));};exports[_0x4dfc('0x13a')]=function(_0xb30fa9,_0x838bf2){var _0x10e8ff={};var _0x42ffc9={};var _0x78e32e;var _0x516311;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0xb30fa9[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x838bf2,null))[_0x4dfc('0x29')](function(_0x247edc){if(_0x247edc){_0x78e32e=_0x247edc;_0x42ffc9[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db['VoicePrefix'][_0x4dfc('0x55')]);_0x42ffc9['query']=_[_0x4dfc('0x54')](_0xb30fa9[_0x4dfc('0x41')]);_0x42ffc9[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x42ffc9['model'],_0x42ffc9[_0x4dfc('0x41')]);_0x10e8ff[_0x4dfc('0x46')]=_['intersection'](_0x42ffc9[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0xb30fa9[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x10e8ff[_0x4dfc('0x46')]=_0x10e8ff[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x10e8ff['attributes']:_0x42ffc9[_0x4dfc('0x52')];_0x10e8ff[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0xb30fa9[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x10e8ff[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0xb30fa9[_0x4dfc('0x41')],_0x42ffc9[_0x4dfc('0x57')]));if(_0xb30fa9[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x10e8ff[_0x4dfc('0xcd')]=_['merge'](_0x10e8ff[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x10e8ff[_0x4dfc('0x46')],function(_0x1d49a4){var _0x49bc3f={};_0x49bc3f[_0x1d49a4]={'$like':'%'+_0xb30fa9[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x49bc3f;})});}_0x10e8ff=_[_0x4dfc('0x5c')]({},_0x10e8ff,_0xb30fa9[_0x4dfc('0x5d')]);return _0x78e32e['getVoicePrefixes'](_0x10e8ff);}})['then'](function(_0x302bd9){if(_0x302bd9){_0x516311=_0x302bd9[_0x4dfc('0x5a')];if(!_0xb30fa9[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x10e8ff['limit']=qs['limit'](_0xb30fa9[_0x4dfc('0x41')]['limit']);_0x10e8ff[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0xb30fa9['query'][_0x4dfc('0x23')]);}return _0x78e32e[_0x4dfc('0x13a')](_0x10e8ff);}})[_0x4dfc('0x29')](function(_0xf6ae5a){if(_0xf6ae5a){return _0xf6ae5a?{'count':_0x516311,'rows':_0xf6ae5a}:null;}})['then'](respondWithResult(_0x838bf2,null))[_0x4dfc('0x1e')](handleError(_0x838bf2,null));};exports[_0x4dfc('0x13b')]=function(_0x43d97e,_0x3f632c){var _0x37658c={};var _0x46cc7a={};var _0x56228a;var _0x27bcb4;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x43d97e[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3f632c,null))[_0x4dfc('0x29')](function(_0x675fd7){if(_0x675fd7){_0x56228a=_0x675fd7;_0x46cc7a[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db[_0x4dfc('0x13c')][_0x4dfc('0x55')]);_0x46cc7a[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x43d97e[_0x4dfc('0x41')]);_0x46cc7a['filters']=_[_0x4dfc('0x58')](_0x46cc7a[_0x4dfc('0x52')],_0x46cc7a[_0x4dfc('0x41')]);_0x37658c[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x46cc7a[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x43d97e['query'][_0x4dfc('0x59')]));_0x37658c[_0x4dfc('0x46')]=_0x37658c[_0x4dfc('0x46')]['length']?_0x37658c['attributes']:_0x46cc7a['model'];_0x37658c[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x43d97e['query'][_0x4dfc('0xcc')]);_0x37658c[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x43d97e[_0x4dfc('0x41')],_0x46cc7a[_0x4dfc('0x57')]));if(_0x43d97e[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x37658c[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x37658c[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x37658c[_0x4dfc('0x46')],function(_0x2a3b15){var _0x29f0f7={};_0x29f0f7[_0x2a3b15]={'$like':'%'+_0x43d97e[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x29f0f7;})});}_0x37658c=_[_0x4dfc('0x5c')]({},_0x37658c,_0x43d97e[_0x4dfc('0x5d')]);return _0x56228a[_0x4dfc('0x13b')](_0x37658c);}})[_0x4dfc('0x29')](function(_0x4ca94a){if(_0x4ca94a){_0x27bcb4=_0x4ca94a[_0x4dfc('0x5a')];if(!_0x43d97e[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x37658c[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x43d97e[_0x4dfc('0x41')]['limit']);_0x37658c[_0x4dfc('0x23')]=qs['offset'](_0x43d97e[_0x4dfc('0x41')]['offset']);}return _0x56228a[_0x4dfc('0x13b')](_0x37658c);}})[_0x4dfc('0x29')](function(_0x1c5a8c){if(_0x1c5a8c){return _0x1c5a8c?{'count':_0x27bcb4,'rows':_0x1c5a8c}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x3f632c,null))[_0x4dfc('0x1e')](handleError(_0x3f632c,null));};exports[_0x4dfc('0x13d')]=function(_0x461959,_0x3294f2){return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x461959['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3294f2,null))[_0x4dfc('0x29')](function(_0xefad57){if(_0xefad57){return _0xefad57[_0x4dfc('0x13d')](_0x461959[_0x4dfc('0x61')][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x461959[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x3294f2,null))[_0x4dfc('0x1e')](handleError(_0x3294f2,null));};exports[_0x4dfc('0x13e')]=function(_0x505ba3,_0x47242d){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x505ba3[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x47242d,null))[_0x4dfc('0x29')](function(_0x59ee31){if(_0x59ee31){return _0x59ee31['removeFaxAccounts'](_0x505ba3['query']['ids']);}})['then'](respondWithStatusCode(_0x47242d,null))[_0x4dfc('0x1e')](handleError(_0x47242d,null));};exports['getMailAccounts']=function(_0x3cf90a,_0x5102d3){var _0x1b7626={};var _0x3a2407={};var _0x9969d1;var _0x107f92;return db[_0x4dfc('0x3d')]['findOne']({'where':{'id':_0x3cf90a[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x5102d3,null))[_0x4dfc('0x29')](function(_0x3b5530){if(_0x3b5530){_0x9969d1=_0x3b5530;_0x3a2407[_0x4dfc('0x52')]=_['keys'](db['MailAccount'][_0x4dfc('0x55')]);_0x3a2407[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x3cf90a[_0x4dfc('0x41')]);_0x3a2407[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x3a2407['model'],_0x3a2407[_0x4dfc('0x41')]);_0x1b7626[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x3a2407[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x3cf90a[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x1b7626['attributes']=_0x1b7626[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x1b7626[_0x4dfc('0x46')]:_0x3a2407[_0x4dfc('0x52')];_0x1b7626[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x3cf90a['query'][_0x4dfc('0xcc')]);_0x1b7626[_0x4dfc('0xcd')]=qs['filters'](_['pick'](_0x3cf90a[_0x4dfc('0x41')],_0x3a2407[_0x4dfc('0x57')]));if(_0x3cf90a['query'][_0x4dfc('0x34')]){_0x1b7626['where']=_[_0x4dfc('0x5c')](_0x1b7626[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x1b7626['attributes'],function(_0x58dccf){var _0x457e96={};_0x457e96[_0x58dccf]={'$like':'%'+_0x3cf90a['query'][_0x4dfc('0x34')]+'%'};return _0x457e96;})});}_0x1b7626=_['merge']({},_0x1b7626,_0x3cf90a[_0x4dfc('0x5d')]);return _0x9969d1['getMailAccounts'](_0x1b7626);}})[_0x4dfc('0x29')](function(_0x4bb208){if(_0x4bb208){_0x107f92=_0x4bb208[_0x4dfc('0x5a')];if(!_0x3cf90a[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x1b7626['limit']=qs['limit'](_0x3cf90a[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x1b7626[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x3cf90a[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x9969d1[_0x4dfc('0x13f')](_0x1b7626);}})['then'](function(_0x44dba4){if(_0x44dba4){return _0x44dba4?{'count':_0x107f92,'rows':_0x44dba4}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x5102d3,null))['catch'](handleError(_0x5102d3,null));};exports[_0x4dfc('0x140')]=function(_0x93ff2e,_0x44322f){return db['User']['find']({'where':{'id':_0x93ff2e[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x44322f,null))['then'](function(_0x5c7eff){if(_0x5c7eff){return _0x5c7eff[_0x4dfc('0x140')](_0x93ff2e[_0x4dfc('0x61')][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x93ff2e[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x44322f,null))[_0x4dfc('0x1e')](handleError(_0x44322f,null));};exports['removeMailAccounts']=function(_0x48366d,_0x51f883){return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x48366d[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x51f883,null))[_0x4dfc('0x29')](function(_0x422a81){if(_0x422a81){return _0x422a81[_0x4dfc('0x141')](_0x48366d['query'][_0x4dfc('0x65')]);}})[_0x4dfc('0x29')](respondWithStatusCode(_0x51f883,null))[_0x4dfc('0x1e')](handleError(_0x51f883,null));};exports['getOpenchannelAccounts']=function(_0x1bdf90,_0x15089){var _0x2587ac={};var _0xa3c6aa={};var _0x5aa131;var _0x177747;return db[_0x4dfc('0x3d')][_0x4dfc('0xca')]({'where':{'id':_0x1bdf90['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x15089,null))['then'](function(_0x347e07){if(_0x347e07){_0x5aa131=_0x347e07;_0xa3c6aa['model']=_['keys'](db['OpenchannelAccount'][_0x4dfc('0x55')]);_0xa3c6aa[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x1bdf90[_0x4dfc('0x41')]);_0xa3c6aa[_0x4dfc('0x57')]=_['intersection'](_0xa3c6aa[_0x4dfc('0x52')],_0xa3c6aa[_0x4dfc('0x41')]);_0x2587ac[_0x4dfc('0x46')]=_['intersection'](_0xa3c6aa[_0x4dfc('0x52')],qs['fields'](_0x1bdf90[_0x4dfc('0x41')][_0x4dfc('0x59')]));_0x2587ac[_0x4dfc('0x46')]=_0x2587ac['attributes'][_0x4dfc('0x5a')]?_0x2587ac[_0x4dfc('0x46')]:_0xa3c6aa[_0x4dfc('0x52')];_0x2587ac[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x1bdf90[_0x4dfc('0x41')]['sort']);_0x2587ac['where']=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x1bdf90[_0x4dfc('0x41')],_0xa3c6aa[_0x4dfc('0x57')]));if(_0x1bdf90[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x2587ac[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x2587ac[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x2587ac[_0x4dfc('0x46')],function(_0x312c90){var _0x4d6e58={};_0x4d6e58[_0x312c90]={'$like':'%'+_0x1bdf90[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x4d6e58;})});}_0x2587ac=_['merge']({},_0x2587ac,_0x1bdf90['options']);return _0x5aa131[_0x4dfc('0x142')](_0x2587ac);}})[_0x4dfc('0x29')](function(_0x897270){if(_0x897270){_0x177747=_0x897270[_0x4dfc('0x5a')];if(!_0x1bdf90[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x2587ac[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x1bdf90['query']['limit']);_0x2587ac[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x1bdf90[_0x4dfc('0x41')]['offset']);}return _0x5aa131[_0x4dfc('0x142')](_0x2587ac);}})[_0x4dfc('0x29')](function(_0x32696b){if(_0x32696b){return _0x32696b?{'count':_0x177747,'rows':_0x32696b}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x15089,null))[_0x4dfc('0x1e')](handleError(_0x15089,null));};exports['addOpenchannelAccounts']=function(_0x1cfaa2,_0x5deec1){return db[_0x4dfc('0x3d')]['find']({'where':{'id':_0x1cfaa2['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x5deec1,null))[_0x4dfc('0x29')](function(_0x58ba26){if(_0x58ba26){return _0x58ba26[_0x4dfc('0x143')](_0x1cfaa2['body'][_0x4dfc('0x65')],_['omit'](_0x1cfaa2[_0x4dfc('0x61')],['ids','id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x5deec1,null))[_0x4dfc('0x1e')](handleError(_0x5deec1,null));};exports[_0x4dfc('0x144')]=function(_0x2389ae,_0x57ee30){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x2389ae['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x57ee30,null))[_0x4dfc('0x29')](function(_0x50b06c){if(_0x50b06c){return _0x50b06c[_0x4dfc('0x144')](_0x2389ae['query'][_0x4dfc('0x65')]);}})['then'](respondWithStatusCode(_0x57ee30,null))[_0x4dfc('0x1e')](handleError(_0x57ee30,null));};exports['getSmsAccounts']=function(_0x2ea8b3,_0x291fee){var _0x24565d={};var _0x30a8a0={};var _0x3a69a8;var _0x2d4701;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x2ea8b3[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x291fee,null))[_0x4dfc('0x29')](function(_0x3da291){if(_0x3da291){_0x3a69a8=_0x3da291;_0x30a8a0[_0x4dfc('0x52')]=_[_0x4dfc('0x54')](db['SmsAccount']['rawAttributes']);_0x30a8a0[_0x4dfc('0x41')]=_[_0x4dfc('0x54')](_0x2ea8b3[_0x4dfc('0x41')]);_0x30a8a0[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x30a8a0[_0x4dfc('0x52')],_0x30a8a0[_0x4dfc('0x41')]);_0x24565d[_0x4dfc('0x46')]=_['intersection'](_0x30a8a0[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x2ea8b3['query'][_0x4dfc('0x59')]));_0x24565d[_0x4dfc('0x46')]=_0x24565d[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x24565d[_0x4dfc('0x46')]:_0x30a8a0[_0x4dfc('0x52')];_0x24565d['order']=qs[_0x4dfc('0xcc')](_0x2ea8b3[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x24565d['where']=qs['filters'](_['pick'](_0x2ea8b3[_0x4dfc('0x41')],_0x30a8a0[_0x4dfc('0x57')]));if(_0x2ea8b3[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x24565d['where']=_[_0x4dfc('0x5c')](_0x24565d[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x24565d[_0x4dfc('0x46')],function(_0x3319c4){var _0x14d493={};_0x14d493[_0x3319c4]={'$like':'%'+_0x2ea8b3['query']['filter']+'%'};return _0x14d493;})});}_0x24565d=_[_0x4dfc('0x5c')]({},_0x24565d,_0x2ea8b3[_0x4dfc('0x5d')]);return _0x3a69a8[_0x4dfc('0x145')](_0x24565d);}})['then'](function(_0x559252){if(_0x559252){_0x2d4701=_0x559252[_0x4dfc('0x5a')];if(!_0x2ea8b3[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x24565d[_0x4dfc('0x25')]=qs['limit'](_0x2ea8b3['query'][_0x4dfc('0x25')]);_0x24565d['offset']=qs[_0x4dfc('0x23')](_0x2ea8b3[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0x3a69a8[_0x4dfc('0x145')](_0x24565d);}})[_0x4dfc('0x29')](function(_0x3a50c7){if(_0x3a50c7){return _0x3a50c7?{'count':_0x2d4701,'rows':_0x3a50c7}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x291fee,null))['catch'](handleError(_0x291fee,null));};exports['addSmsAccounts']=function(_0x3b13d3,_0x14b111){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x3b13d3[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x14b111,null))[_0x4dfc('0x29')](function(_0x2f5529){if(_0x2f5529){return _0x2f5529[_0x4dfc('0x146')](_0x3b13d3[_0x4dfc('0x61')][_0x4dfc('0x65')],_['omit'](_0x3b13d3['body'],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x14b111,null))[_0x4dfc('0x1e')](handleError(_0x14b111,null));};exports['removeSmsAccounts']=function(_0x425189,_0x1edc61){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x425189['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x1edc61,null))[_0x4dfc('0x29')](function(_0x3780c6){if(_0x3780c6){return _0x3780c6[_0x4dfc('0x147')](_0x425189['query']['ids']);}})[_0x4dfc('0x29')](respondWithStatusCode(_0x1edc61,null))[_0x4dfc('0x1e')](handleError(_0x1edc61,null));};exports['getChatWebsites']=function(_0x5a9bd7,_0x3a50c9){var _0x5a2fd1={};var _0x2a598f={};var _0x4e4015;var _0x3fd144;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x5a9bd7[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a50c9,null))[_0x4dfc('0x29')](function(_0x46037f){if(_0x46037f){_0x4e4015=_0x46037f;_0x2a598f['model']=_['keys'](db[_0x4dfc('0x148')][_0x4dfc('0x55')]);_0x2a598f[_0x4dfc('0x41')]=_['keys'](_0x5a9bd7[_0x4dfc('0x41')]);_0x2a598f[_0x4dfc('0x57')]=_['intersection'](_0x2a598f[_0x4dfc('0x52')],_0x2a598f[_0x4dfc('0x41')]);_0x5a2fd1[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x2a598f[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x5a9bd7[_0x4dfc('0x41')]['fields']));_0x5a2fd1['attributes']=_0x5a2fd1[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x5a2fd1[_0x4dfc('0x46')]:_0x2a598f[_0x4dfc('0x52')];_0x5a2fd1['order']=qs[_0x4dfc('0xcc')](_0x5a9bd7[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x5a2fd1[_0x4dfc('0xcd')]=qs['filters'](_[_0x4dfc('0xce')](_0x5a9bd7[_0x4dfc('0x41')],_0x2a598f[_0x4dfc('0x57')]));if(_0x5a9bd7['query'][_0x4dfc('0x34')]){_0x5a2fd1[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x5a2fd1['where'],{'$or':_[_0x4dfc('0x36')](_0x5a2fd1[_0x4dfc('0x46')],function(_0x3e8720){var _0x52b51e={};_0x52b51e[_0x3e8720]={'$like':'%'+_0x5a9bd7[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x52b51e;})});}_0x5a2fd1=_[_0x4dfc('0x5c')]({},_0x5a2fd1,_0x5a9bd7[_0x4dfc('0x5d')]);return _0x4e4015[_0x4dfc('0x149')](_0x5a2fd1);}})[_0x4dfc('0x29')](function(_0x51e724){if(_0x51e724){_0x3fd144=_0x51e724[_0x4dfc('0x5a')];if(!_0x5a9bd7['query'][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x5a2fd1[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x5a9bd7[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x5a2fd1[_0x4dfc('0x23')]=qs['offset'](_0x5a9bd7[_0x4dfc('0x41')]['offset']);}return _0x4e4015[_0x4dfc('0x149')](_0x5a2fd1);}})['then'](function(_0x50fbc1){if(_0x50fbc1){return _0x50fbc1?{'count':_0x3fd144,'rows':_0x50fbc1}:null;}})[_0x4dfc('0x29')](respondWithResult(_0x3a50c9,null))[_0x4dfc('0x1e')](handleError(_0x3a50c9,null));};exports[_0x4dfc('0x14a')]=function(_0x139459,_0x47d708){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x139459[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x47d708,null))['then'](function(_0x20be78){if(_0x20be78){return _0x20be78['addChatWebsites'](_0x139459[_0x4dfc('0x61')][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x139459[_0x4dfc('0x61')],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x47d708,null))[_0x4dfc('0x1e')](handleError(_0x47d708,null));};exports[_0x4dfc('0x14b')]=function(_0xdd7f64,_0x3fa9c6){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0xdd7f64[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3fa9c6,null))[_0x4dfc('0x29')](function(_0x2cdc38){if(_0x2cdc38){return _0x2cdc38[_0x4dfc('0x14b')](_0xdd7f64[_0x4dfc('0x41')][_0x4dfc('0x65')]);}})[_0x4dfc('0x29')](respondWithStatusCode(_0x3fa9c6,null))[_0x4dfc('0x1e')](handleError(_0x3fa9c6,null));};exports['getWhatsappAccounts']=function(_0x455644,_0x3ec7c3){var _0x283885={};var _0x5dd3ce={};var _0xde9913;var _0x2855cd;return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x455644[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x3ec7c3,null))[_0x4dfc('0x29')](function(_0x52dceb){if(_0x52dceb){_0xde9913=_0x52dceb;_0x5dd3ce[_0x4dfc('0x52')]=_['keys'](db[_0x4dfc('0x14c')]['rawAttributes']);_0x5dd3ce[_0x4dfc('0x41')]=_['keys'](_0x455644[_0x4dfc('0x41')]);_0x5dd3ce[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x5dd3ce[_0x4dfc('0x52')],_0x5dd3ce[_0x4dfc('0x41')]);_0x283885[_0x4dfc('0x46')]=_[_0x4dfc('0x58')](_0x5dd3ce[_0x4dfc('0x52')],qs[_0x4dfc('0x59')](_0x455644['query'][_0x4dfc('0x59')]));_0x283885[_0x4dfc('0x46')]=_0x283885[_0x4dfc('0x46')][_0x4dfc('0x5a')]?_0x283885['attributes']:_0x5dd3ce[_0x4dfc('0x52')];_0x283885[_0x4dfc('0xcb')]=qs[_0x4dfc('0xcc')](_0x455644[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x283885[_0x4dfc('0xcd')]=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x455644[_0x4dfc('0x41')],_0x5dd3ce[_0x4dfc('0x57')]));if(_0x455644[_0x4dfc('0x41')][_0x4dfc('0x34')]){_0x283885[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x283885[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x283885[_0x4dfc('0x46')],function(_0x4cf76b){var _0x50ca02={};_0x50ca02[_0x4cf76b]={'$like':'%'+_0x455644[_0x4dfc('0x41')][_0x4dfc('0x34')]+'%'};return _0x50ca02;})});}_0x283885=_['merge']({},_0x283885,_0x455644[_0x4dfc('0x5d')]);return _0xde9913[_0x4dfc('0x14d')](_0x283885);}})[_0x4dfc('0x29')](function(_0x2dba52){if(_0x2dba52){_0x2855cd=_0x2dba52['length'];if(!_0x455644['query']['hasOwnProperty']('nolimit')){_0x283885['limit']=qs[_0x4dfc('0x25')](_0x455644[_0x4dfc('0x41')]['limit']);_0x283885[_0x4dfc('0x23')]=qs['offset'](_0x455644[_0x4dfc('0x41')][_0x4dfc('0x23')]);}return _0xde9913[_0x4dfc('0x14d')](_0x283885);}})[_0x4dfc('0x29')](function(_0x14ecb3){if(_0x14ecb3){return _0x14ecb3?{'count':_0x2855cd,'rows':_0x14ecb3}:null;}})['then'](respondWithResult(_0x3ec7c3,null))[_0x4dfc('0x1e')](handleError(_0x3ec7c3,null));};exports['addWhatsappAccounts']=function(_0x47856d,_0x5e3840){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x47856d[_0x4dfc('0x51')]['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x5e3840,null))['then'](function(_0x265958){if(_0x265958){return _0x265958[_0x4dfc('0x14e')](_0x47856d['body'][_0x4dfc('0x65')],_[_0x4dfc('0x12f')](_0x47856d['body'],[_0x4dfc('0x65'),'id'])||{});}})[_0x4dfc('0x29')](respondWithResult(_0x5e3840,null))['catch'](handleError(_0x5e3840,null));};exports[_0x4dfc('0x14f')]=function(_0x9dc6d9,_0x1c1853){return db['User'][_0x4dfc('0x62')]({'where':{'id':_0x9dc6d9['params']['id']}})[_0x4dfc('0x29')](handleEntityNotFound(_0x1c1853,null))[_0x4dfc('0x29')](function(_0x16b10e){if(_0x16b10e){return _0x16b10e[_0x4dfc('0x14f')](_0x9dc6d9[_0x4dfc('0x41')][_0x4dfc('0x65')]);}})['then'](respondWithStatusCode(_0x1c1853,null))['catch'](handleError(_0x1c1853,null));};exports[_0x4dfc('0x150')]=function(_0x42806c,_0x157600){var _0x97ec05={},_0x2b3321={},_0x32986e={'count':0x0,'rows':[]};var _0x41d394=db['CmHopper'][_0x4dfc('0x55')];_0x2b3321['model']=_[_0x4dfc('0x54')](_0x41d394);_0x2b3321[_0x4dfc('0x41')]=_['keys'](_0x42806c[_0x4dfc('0x41')]);_0x2b3321[_0x4dfc('0x57')]=_[_0x4dfc('0x58')](_0x2b3321['model'],_0x2b3321['query']);_0x2b3321[_0x4dfc('0x57')]=_[_0x4dfc('0x100')](_0x2b3321[_0x4dfc('0x57')],[_0x4dfc('0x151'),_0x4dfc('0x152'),_0x4dfc('0x153'),_0x4dfc('0x154'),_0x4dfc('0x155'),'$lte',_0x4dfc('0x156'),_0x4dfc('0x157'),_0x4dfc('0x158'),_0x4dfc('0x159'),_0x4dfc('0x15a'),'$in',_0x4dfc('0x15b'),_0x4dfc('0x15c'),'$notLike',_0x4dfc('0x15d'),_0x4dfc('0x15e'),_0x4dfc('0x15c'),_0x4dfc('0x15f'),_0x4dfc('0x160'),_0x4dfc('0x161'),_0x4dfc('0x162')]);_0x97ec05['attributes']=_[_0x4dfc('0x58')](_0x2b3321['model'],qs[_0x4dfc('0x59')](_0x42806c[_0x4dfc('0x41')]['fields']));_0x97ec05[_0x4dfc('0x46')]=_0x97ec05[_0x4dfc('0x46')]['length']?_0x97ec05['attributes']:_0x2b3321[_0x4dfc('0x52')];if(!_0x42806c[_0x4dfc('0x41')][_0x4dfc('0xcf')](_0x4dfc('0xd4'))){_0x97ec05['limit']=qs[_0x4dfc('0x25')](_0x42806c[_0x4dfc('0x41')][_0x4dfc('0x25')]);_0x97ec05[_0x4dfc('0x23')]=qs['offset'](_0x42806c[_0x4dfc('0x41')][_0x4dfc('0x23')]);}_0x97ec05['order']=qs[_0x4dfc('0xcc')](_0x42806c[_0x4dfc('0x41')][_0x4dfc('0xcc')]);_0x97ec05['where']=qs[_0x4dfc('0x57')](_[_0x4dfc('0xce')](_0x42806c[_0x4dfc('0x41')],_0x2b3321['filters']));if(_0x42806c[_0x4dfc('0x41')]['filter']){_0x97ec05[_0x4dfc('0xcd')]=_[_0x4dfc('0x5c')](_0x97ec05[_0x4dfc('0xcd')],{'$or':_[_0x4dfc('0x36')](_0x97ec05['attributes'],function(_0x3cb84b){var _0x2d59b3={};_0x2d59b3[_0x3cb84b]={'$like':'%'+_0x42806c[_0x4dfc('0x41')]['filter']+'%'};return _0x2d59b3;})});}_0x97ec05['where']={'$and':[_0x97ec05[_0x4dfc('0xcd')],{'$or':[{'UserId':_0x42806c[_0x4dfc('0x51')]['id']},{'OwnerId':_0x42806c[_0x4dfc('0x51')]['id']}]}]};_0x97ec05=_[_0x4dfc('0x5c')]({},_0x97ec05,_0x42806c[_0x4dfc('0x5d')]);var _0x3fd0e5={'where':_0x97ec05[_0x4dfc('0xcd')]};return db['CmHopper'][_0x4dfc('0x26')](_0x3fd0e5)[_0x4dfc('0x29')](function(_0x2be2e2){_0x32986e[_0x4dfc('0x26')]=_0x2be2e2;if(_0x42806c[_0x4dfc('0x41')][_0x4dfc('0x42')]){_0x97ec05[_0x4dfc('0x43')]=[{'attributes':['id',_0x4dfc('0x163'),'lastName','phone'],'model':db[_0x4dfc('0x164')],'as':'Contact'},{'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x165')],'model':db[_0x4dfc('0x166')],'as':'Queue'}];}return db[_0x4dfc('0x167')][_0x4dfc('0x48')](_0x97ec05);})[_0x4dfc('0x29')](function(_0x27f619){_0x32986e[_0x4dfc('0x49')]=_0x27f619;return _0x32986e;})[_0x4dfc('0x29')](respondWithFilteredResult(_0x157600,_0x97ec05))[_0x4dfc('0x1e')](handleError(_0x157600,null));};exports[_0x4dfc('0x168')]=function(_0x2bed41,_0x57442b){if(!_[_0x4dfc('0x69')](_0x2bed41[_0x4dfc('0x30')]['id'])&&(_0x2bed41[_0x4dfc('0x30')][_0x4dfc('0x2d')]==_0x4dfc('0x2e')||_0x2bed41['user'][_0x4dfc('0x2d')]=='user')){return db['User'][_0x4dfc('0xca')]({'where':{'id':_0x2bed41['params']['id']},'raw':!![]})['then'](function(_0x2291af){return authService[_0x4dfc('0x169')](_0x2291af);})[_0x4dfc('0x29')](function(_0x34f6dd){if(_0x34f6dd){return _0x57442b[_0x4dfc('0x20')](0xc8)[_0x4dfc('0x22')]({'api_key':_0x34f6dd[_0x4dfc('0x16a')]});}else{return _0x57442b[_0x4dfc('0x20')](0xcc)[_0x4dfc('0x22')]({'message':_0x4dfc('0x16b')});}})[_0x4dfc('0x1e')](handleError(_0x57442b,0x193));}else{return _0x57442b['status'](0x191)[_0x4dfc('0x22')]({'message':_0x4dfc('0x16c')});}};exports[_0x4dfc('0x16d')]=function(_0x222d58,_0x3ef708){if(!_['isNil'](_0x222d58['user']['id'])&&(_0x222d58[_0x4dfc('0x30')]['role']==_0x4dfc('0x2e')||_0x222d58[_0x4dfc('0x30')][_0x4dfc('0x2d')]==_0x4dfc('0x30'))){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x222d58['params']['id']}})[_0x4dfc('0x29')](function(_0x1320f7){return authService[_0x4dfc('0x16e')](_0x1320f7);})['then'](function(_0x4892a6){return db['User'][_0x4dfc('0x28')]({'apiKeyIat':_0x4892a6[_0x4dfc('0x16f')],'apiKeyNonce':_0x4892a6[_0x4dfc('0x170')]},{'where':{'id':_0x222d58['params']['id']}})[_0x4dfc('0x29')](function(){return _0x3ef708[_0x4dfc('0x20')](0xc8)[_0x4dfc('0x22')]({'api_key':_0x4892a6['token']});});})['catch'](handleError(_0x3ef708,0x193));}else{return _0x3ef708[_0x4dfc('0x20')](0x191)[_0x4dfc('0x22')]({'message':_0x4dfc('0x16c')});}};exports[_0x4dfc('0x171')]=function(_0x44008a,_0x348664){if(!_[_0x4dfc('0x69')](_0x44008a[_0x4dfc('0x30')]['id'])&&(_0x44008a[_0x4dfc('0x30')]['role']==_0x4dfc('0x2e')||_0x44008a[_0x4dfc('0x30')][_0x4dfc('0x2d')]==_0x4dfc('0x30'))){return db[_0x4dfc('0x3d')][_0x4dfc('0x62')]({'where':{'id':_0x44008a[_0x4dfc('0x51')]['id']}})['then'](handleEntityNotFound(_0x348664,null))[_0x4dfc('0x29')](function(_0x1c1003){if(_0x1c1003&&_0x1c1003['apiKeyNonce']&&_0x1c1003[_0x4dfc('0x172')])return _0x1c1003;else throw{'message':_0x4dfc('0x173')};})['then'](function(){return db[_0x4dfc('0x3d')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x44008a[_0x4dfc('0x51')]['id']}});})[_0x4dfc('0x29')](respondWithStatusCode(_0x348664,0xc8))[_0x4dfc('0x1e')](handleError(_0x348664,0x193));}else{return _0x348664['status'](0x191)['json']({'message':_0x4dfc('0x16c')});}};exports['whoami']=function(_0x2f467b,_0x334274){var _0x272ba2=_0x2f467b[_0x4dfc('0x30')][_0x4dfc('0x2c')]({'plain':!![]});if(!_0x272ba2){return _0x334274[_0x4dfc('0x20')](0x191)['send'](_0x4dfc('0x174'));}else{Promise[_0x4dfc('0x102')]()[_0x4dfc('0x29')](function(){if(_0x2f467b['query'][_0x4dfc('0x45')]!==_0x4dfc('0x5b'))return;return _0x2f467b['user'][_0x4dfc('0x175')]();})['then'](function(_0x39b135){if(!_0x39b135)return;return _0x39b135['get']({'plain':!![]});})[_0x4dfc('0x29')](function(_0x2c9e57){_0x272ba2[_0x4dfc('0x45')]=_0x2c9e57;return _0x334274['status'](0xc8)[_0x4dfc('0x22')](_0x272ba2);});}};exports[_0x4dfc('0x176')]=function(_0x58c9bb,_0x5afbe8){var _0x2873ca={'offset':0x0},_0x52efa6={'count':0x0,'rows':[]};Promise[_0x4dfc('0x102')]()['then'](function(){if(!_0x58c9bb[_0x4dfc('0x41')][_0x4dfc('0x34')]&&!_0x58c9bb['query'][_0x4dfc('0x177')]&&!_0x58c9bb['query'][_0x4dfc('0x178')])return[];return Promise[_0x4dfc('0x102')]()[_0x4dfc('0x29')](function(){var _0x5b1957=[];if(!_[_0x4dfc('0x8d')](_0x58c9bb[_0x4dfc('0x41')][_0x4dfc('0x177')])){_0x5b1957[_0x4dfc('0x47')](db[_0x4dfc('0x114')][_0x4dfc('0x48')]({'attributes':['id',_0x4dfc('0x39')],'where':{'id':_0x58c9bb['query'][_0x4dfc('0x177')]}}));}if(!_[_0x4dfc('0x8d')](_0x58c9bb[_0x4dfc('0x41')]['queues'])){_0x5b1957[_0x4dfc('0x47')](db['VoiceQueue'][_0x4dfc('0x48')]({'attributes':['id',_0x4dfc('0x39')],'type':_0x4dfc('0x179'),'where':{'id':_0x58c9bb[_0x4dfc('0x41')]['queues']}}));}return Promise['all'](_0x5b1957);})[_0x4dfc('0x29')](function(_0x14a167){var _0x4891ba=_[_0x4dfc('0x17a')](_0x14a167)[_0x4dfc('0x36')](function(_0x346590){return _0x346590[_0x4dfc('0x121')]({'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x6a'),_0x4dfc('0x9f')],'raw':!![]});});return Promise[_0x4dfc('0x60')](_0x4891ba);})['then'](function(_0x552cee){var _0x320b4a=_['flatten'](_0x552cee);if(!_0x58c9bb[_0x4dfc('0x41')]['filter'])return _0x320b4a;if(_[_0x4dfc('0x8d')](_0x320b4a)){return db[_0x4dfc('0x3d')][_0x4dfc('0x48')]({'attributes':['id',_0x4dfc('0x39'),_0x4dfc('0x6a'),'online'],'where':{'role':_0x4dfc('0x32'),'$or':[db[_0x4dfc('0x6c')][_0x4dfc('0xcd')](db['sequelize']['fn']('lower',db[_0x4dfc('0x6c')][_0x4dfc('0x17b')](_0x4dfc('0x39'))),{'$like':'%'+_0x58c9bb['query'][_0x4dfc('0x34')][_0x4dfc('0xa6')]()+'%'}),{'internal':{'$like':'%'+_0x58c9bb[_0x4dfc('0x41')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x320b4a)['flatten']()[_0x4dfc('0x34')](function(_0x2b4f7b){return _0x2b4f7b[_0x4dfc('0x39')][_0x4dfc('0xa6')]()[_0x4dfc('0x38')](_0x58c9bb[_0x4dfc('0x41')][_0x4dfc('0x34')][_0x4dfc('0xa6')]())||_0x2b4f7b[_0x4dfc('0x6a')][_0x4dfc('0x17c')]()[_0x4dfc('0x38')](_0x58c9bb['query']['filter']);})[_0x4dfc('0x37')]();}})[_0x4dfc('0x29')](function(_0x3f5e1b){var _0x304ad5=_0x4dfc('0x39');var _0x266ed8=_0x4dfc('0x17d');if(_0x58c9bb['query'][_0x4dfc('0xcc')]){_0x266ed8=_0x58c9bb[_0x4dfc('0x41')][_0x4dfc('0xcc')][0x0]==='-'?'desc':_0x4dfc('0x17d');_0x304ad5=_0x266ed8===_0x4dfc('0x17d')?_0x58c9bb[_0x4dfc('0x41')]['sort']:_0x58c9bb[_0x4dfc('0x41')]['sort'][_0x4dfc('0x17e')](0x1);}return _(_0x3f5e1b)[_0x4dfc('0x17f')]('id')[_0x4dfc('0x180')]([function(_0x46ab48){return _0x304ad5===_0x4dfc('0x39')?_0x46ab48[_0x304ad5][_0x4dfc('0xa6')]():_0x46ab48[_0x304ad5];}],[_0x266ed8])[_0x4dfc('0x36')](function(_0x26f25){return _[_0x4dfc('0xce')](_0x26f25,['id',_0x4dfc('0x39'),_0x4dfc('0x6a'),_0x4dfc('0x9f')]);})['value']();})[_0x4dfc('0x29')](function(_0xb060cb){return amiClient[_0x4dfc('0x14')](_0x4dfc('0x31'),_0x58c9bb)[_0x4dfc('0x29')](function(_0x536466){if(_0x536466['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x45d7c4=_0x536466[_0x4dfc('0x1d')];var _0x1b9550=jayson['client'][_0x4dfc('0x13')]({'port':0x232c});return _0x1b9550[_0x4dfc('0x14')](_0x4dfc('0x31'),_0x58c9bb)[_0x4dfc('0x29')](function(_0x401344){if(_0x401344[_0x4dfc('0x1a')])throw new Error(_0x4dfc('0x181'));var _0x2aaec5=_0x401344['result'];return _['merge']({},_0x2aaec5,_0x45d7c4);});})[_0x4dfc('0x29')](function(_0x5abc3e){return _[_0x4dfc('0x36')](_0xb060cb,function(_0x36e44a){var _0x3719b5=_[_0x4dfc('0x62')](_0x5abc3e['rows'],['id',_0x36e44a['id']]);if(!_0x3719b5||!_0x36e44a[_0x4dfc('0x9f')]){_0x36e44a['status']=_0x4dfc('0x182');}else if(_0x3719b5['voicePause']){_0x36e44a[_0x4dfc('0x20')]=_0x4dfc('0x103');}else{_0x36e44a[_0x4dfc('0x20')]=_[_0x4dfc('0x38')]([_0x4dfc('0x183'),_0x4dfc('0x184'),_0x4dfc('0x185'),_0x4dfc('0x186'),null,undefined],_0x3719b5[_0x4dfc('0x187')])?'online':'busy';}return _0x36e44a;});});});})[_0x4dfc('0x29')](function(_0x4806d5){if(!_0x58c9bb[_0x4dfc('0x41')]['hasOwnProperty']('nolimit')){_0x2873ca[_0x4dfc('0x25')]=qs[_0x4dfc('0x25')](_0x58c9bb[_0x4dfc('0x41')]['limit']||0xa);_0x2873ca[_0x4dfc('0x23')]=qs[_0x4dfc('0x23')](_0x58c9bb[_0x4dfc('0x41')][_0x4dfc('0x23')]);}_0x52efa6[_0x4dfc('0x26')]=_0x4806d5[_0x4dfc('0x5a')];_0x52efa6[_0x4dfc('0x49')]=_0x2873ca[_0x4dfc('0x25')]?_0x4806d5[_0x4dfc('0x188')](_0x2873ca[_0x4dfc('0x23')],_0x2873ca[_0x4dfc('0x23')]+_0x2873ca[_0x4dfc('0x25')]):_0x4806d5;return _0x52efa6;})[_0x4dfc('0x29')](respondWithFilteredResult(_0x5afbe8,_0x2873ca))[_0x4dfc('0x1e')](handleError(_0x5afbe8,null));};function get_open_tabs(_0x1d4948,_0x4c0969){var _0x410279=_0x1d4948[_0x4dfc('0x189')](0x0)[_0x4dfc('0x18a')]()+_0x1d4948['slice'](0x1);var _0x1c3511={'type':db[_0x4dfc('0x91')][_0x4dfc('0x6d')]['SELECT'],'raw':!![]};return new Promise(function(_0x4bffb9,_0x640ddc){var _0x11d425=squel[_0x4dfc('0x18b')]()[_0x4dfc('0x18c')](_0x4dfc('0x18d')+_0x410279+_0x4dfc('0x18e'),'id')[_0x4dfc('0x18c')](_0x4dfc('0x18f'))[_0x4dfc('0x6f')](_0x4dfc('0x190')+_0x1d4948+_0x4dfc('0x191'),'ui')[_0x4dfc('0xcd')](_0x4dfc('0x192'),_0x4c0969['id']);return db[_0x4dfc('0x6c')][_0x4dfc('0x41')](_0x11d425[_0x4dfc('0x17c')](),_0x1c3511)[_0x4dfc('0x29')](function(_0x2b0aea){_0x4c0969[_0x410279+_0x4dfc('0x193')]=_0x2b0aea;_0x4bffb9(_0x2b0aea);})[_0x4dfc('0x1e')](function(_0x283622){_0x640ddc(_0x283622);});});}
\ No newline at end of file
+var _0x20bb=['stringify','error','message','result','catch','sendStatus','status','offset','limit','undefined','count','set','json','agent','userNotification:recalc:','get','admin','Users','user','Agents','Telephones','filter','ignore','map','value','includes','role','find','name','UserProfileResource','end','stack','send','User','rawAttributes','fieldName','type','password','salt','getOptions','where','query','includeAll','include','true','UserSetting','userSetting','attributes','push','findAll','rows','openTabs','chat','dataValues','sms','mail','openchannel','whatsapp','all','params','model','differenceBy','keys','intersection','fields','length','options','fax','update','body','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','102','103','113','110','105','106','108','100','111','114','create','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Unauthorized','some','UserProfileSection','isEmpty','telephone','compact','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','addQueues','channel','online','loginInPause','voicePause','interface','Unknown\x20channel','Queues','penalty','spread','capitalize','toLowerCase','QueueId','voice','VoiceQueue','UserVoiceQueueRt','upsert','isValidChannel','remove','emit','Queue:remove','destroy','addAvatar','userpic','file','getAvatar','server/files/images/logos/default_profile.png','download','existsSync','join','server/files/images/','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','CmContact','filters','sort','pick','merge','getContacts','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','getQueues','Queue','order','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','format','intrf','SIP/%s','user:%s','user:forcelogout','headers','x-forwarded-for','socket','remoteAddress','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','bulkCreate','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','openchannelPause','whatsappPause','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','getAssociatedQueues','flattenDeep','addAgent','Voice','TeamVoicePrefix','getDataValue','isArray','resolve','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','UserVoicePrefix','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','$and','$or','$gt','$gte','$lte','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$contains','CmHopper','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','generateApiKey','iat','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','queues','teams','inbound','getAgents','flatten','lower','col','toString','asc','desc','substring','orderBy','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','SELECT','select','field','ui.','InteractionId','ui.createdAt','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','defaults','localhost','client','request','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x20bb,0x16f));var _0xb20b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x20bb[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xb20b('0x0'));var util=require(_0xb20b('0x1'));var path=require(_0xb20b('0x2'));var fs=require('fs');var _=require(_0xb20b('0x3'));var squel=require(_0xb20b('0x4'));var jayson=require(_0xb20b('0x5'));var Redis=require(_0xb20b('0x6'));var authService=require(_0xb20b('0x7'));var qs=require(_0xb20b('0x8'));var logger=require(_0xb20b('0x9'))('api');var utils=require(_0xb20b('0xa'));var config=require(_0xb20b('0xb'));var licenseUtil=require(_0xb20b('0xc'));var APIBadRequestError=require(_0xb20b('0xd'))[_0xb20b('0xe')];var APINotFoundError=require(_0xb20b('0xd'))[_0xb20b('0xf')];var APIHandleError=require(_0xb20b('0xd'))[_0xb20b('0x10')];var db=require(_0xb20b('0x11'))['db'];var socket=require(_0xb20b('0x12'))(new Redis(config[_0xb20b('0x13')]));require(_0xb20b('0x14'))['register'](socket);config['redis']=_[_0xb20b('0x15')](config[_0xb20b('0x13')],{'host':_0xb20b('0x16'),'port':0x18eb});var amiClient=jayson[_0xb20b('0x17')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x547a90,_0x4ce81d,_0x125ecf,_0x22f5c6){return new Promise(function(_0x774c,_0x271f20){var _0x3b4e00=_0x22f5c6||amiClient;return _0x3b4e00[_0xb20b('0x18')](_0x547a90,_0x125ecf)[_0xb20b('0x19')](function(_0x859c22){logger[_0xb20b('0x1a')](_0xb20b('0x1b'),_0x4ce81d,_0xb20b('0x1c'));logger['debug'](_0xb20b('0x1d'),_0x4ce81d,'request\x20sent',JSON[_0xb20b('0x1e')](_0x859c22));if(_0x859c22[_0xb20b('0x1f')]){if(_0x859c22[_0xb20b('0x1f')]['code']===0x1f4){logger[_0xb20b('0x1f')]('User,\x20%s,\x20%s',_0x4ce81d,_0x859c22[_0xb20b('0x1f')][_0xb20b('0x20')]);return _0x271f20(_0x859c22[_0xb20b('0x1f')][_0xb20b('0x20')]);}logger[_0xb20b('0x1f')](_0xb20b('0x1b'),_0x4ce81d,_0x859c22['error'][_0xb20b('0x20')]);return _0x774c(_0x859c22[_0xb20b('0x1f')][_0xb20b('0x20')]);}else{logger[_0xb20b('0x1a')](_0xb20b('0x1b'),_0x4ce81d,_0xb20b('0x1c'));_0x774c(_0x859c22[_0xb20b('0x21')][_0xb20b('0x20')]);}})[_0xb20b('0x22')](function(_0x28a8ec){logger['error']('User,\x20%s,\x20%s',_0x4ce81d,_0x28a8ec);_0x271f20(_0x28a8ec);});});}function respondWithStatusCode(_0x4d5117,_0x2244c0){_0x2244c0=_0x2244c0||0xcc;return function(_0x8cf14f){if(_0x8cf14f){return _0x4d5117[_0xb20b('0x23')](_0x2244c0);}return _0x4d5117[_0xb20b('0x24')](_0x2244c0)['end']();};}function respondWithResult(_0x40145e,_0x1f6c72){_0x1f6c72=_0x1f6c72||0xc8;return function(_0x18f286){if(_0x18f286){return _0x40145e[_0xb20b('0x24')](_0x1f6c72)['json'](_0x18f286);}};}function respondWithFilteredResult(_0x4b6d12,_0x39e4b3){return function(_0x1ac22b){if(_0x1ac22b){var _0x382d21=typeof _0x39e4b3[_0xb20b('0x25')]==='undefined'&&typeof _0x39e4b3[_0xb20b('0x26')]===_0xb20b('0x27');var _0x52679c=_0x1ac22b[_0xb20b('0x28')];var _0x5cd026=_0x382d21?0x0:_0x39e4b3[_0xb20b('0x25')];var _0x22f285=_0x382d21?_0x1ac22b[_0xb20b('0x28')]:_0x39e4b3[_0xb20b('0x25')]+_0x39e4b3[_0xb20b('0x26')];var _0x39ca5c;if(_0x22f285>=_0x52679c){_0x22f285=_0x52679c;_0x39ca5c=0xc8;}else{_0x39ca5c=0xce;}_0x4b6d12[_0xb20b('0x24')](_0x39ca5c);return _0x4b6d12[_0xb20b('0x29')]('Content-Range',_0x5cd026+'-'+_0x22f285+'/'+_0x52679c)[_0xb20b('0x2a')](_0x1ac22b);}return null;};}function saveUpdates(_0x52dc47){return function(_0xeec515){if(_0xeec515){return _0xeec515['update'](_0x52dc47)[_0xb20b('0x19')](function(_0x2b99a8){if(_0x2b99a8['role']===_0xb20b('0x2b')){socket['emit'](_0xb20b('0x2c')+_0x2b99a8['id'],_0x2b99a8);}return _0x2b99a8;});}return null;};}function removeEntity(_0x545244){return function(_0x14a8bd){if(_0x14a8bd){return _0x14a8bd['destroy']()[_0xb20b('0x19')](function(){var _0x321b23=_0x14a8bd[_0xb20b('0x2d')]({'plain':!![]});if(_0x321b23['role']===_0xb20b('0x2e'))return;var _0x2357d9=[{'name':_0xb20b('0x2f'),'value':_0xb20b('0x30'),'ignore':!![]},{'name':_0xb20b('0x31'),'value':_0xb20b('0x2b'),'ignore':![]},{'name':_0xb20b('0x32'),'value':'telephone','ignore':![]}];var _0x4ce598=_(_0x2357d9)[_0xb20b('0x33')](_0xb20b('0x34'))[_0xb20b('0x35')](_0xb20b('0x36'))[_0xb20b('0x36')]();if(_[_0xb20b('0x37')](_0x4ce598,_0x321b23[_0xb20b('0x38')])){return;}var _0x17438c=_[_0xb20b('0x39')](_0x2357d9,[_0xb20b('0x36'),_0x321b23[_0xb20b('0x38')]])[_0xb20b('0x3a')];return db[_0xb20b('0x3b')]['destroy']({'where':{'type':_0x17438c,'resourceId':_0x321b23['id']}})[_0xb20b('0x19')](function(){return _0x14a8bd;});})[_0xb20b('0x19')](function(){_0x545244[_0xb20b('0x24')](0xcc)[_0xb20b('0x3c')]();});}};}function handleEntityNotFound(_0x17ee9e){return function(_0x1b2571){if(!_0x1b2571){_0x17ee9e['sendStatus'](0x194);}return _0x1b2571;};}function handleError(_0x142cdf,_0x1615e4){_0x1615e4=_0x1615e4||0x1f4;return function(_0x52e111){logger['error'](_0x52e111[_0xb20b('0x3d')]);if(_0x52e111[_0xb20b('0x3a')]){delete _0x52e111['name'];}_0x142cdf[_0xb20b('0x24')](_0x1615e4)[_0xb20b('0x3e')](_0x52e111);};}exports['index']=function(_0x53d3d3,_0x4836ab){var _0xe292d4={},_0x18bd42={'count':0x0,'rows':[]};var _0x32cd1c=_(db[_0xb20b('0x3f')][_0xb20b('0x40')])['map'](function(_0x3ce4fc){return{'name':_0x3ce4fc[_0xb20b('0x41')],'type':_0x3ce4fc[_0xb20b('0x42')]['key']};})[_0xb20b('0x33')](function(_0x16aac3){return!_['includes']([_0xb20b('0x43'),_0xb20b('0x44')],_0x16aac3[_0xb20b('0x3a')]);})[_0xb20b('0x36')]();_0xe292d4=qs[_0xb20b('0x45')](_0x32cd1c,_0x53d3d3);var _0x52e6a8={'where':_0xe292d4[_0xb20b('0x46')]};return db[_0xb20b('0x3f')][_0xb20b('0x28')](_0x52e6a8)[_0xb20b('0x19')](function(_0x3ac652){_0x18bd42[_0xb20b('0x28')]=_0x3ac652;if(_0x53d3d3[_0xb20b('0x47')][_0xb20b('0x48')]){_0xe292d4[_0xb20b('0x49')]=[{'all':!![]}];}if(_0x53d3d3['query']['userSetting']===_0xb20b('0x4a')){_0xe292d4[_0xb20b('0x49')]=[{'model':db[_0xb20b('0x4b')],'as':_0xb20b('0x4c')}];}if(!_[_0xb20b('0x37')](_0xe292d4[_0xb20b('0x4d')],'id')){_0xe292d4['attributes'][_0xb20b('0x4e')]('id');}return db[_0xb20b('0x3f')][_0xb20b('0x4f')](_0xe292d4);})[_0xb20b('0x19')](function(_0x1057b5){_0x18bd42[_0xb20b('0x50')]=_0x1057b5;if(_0x53d3d3[_0xb20b('0x47')][_0xb20b('0x51')]===_0xb20b('0x4a')){var _0x120a24=[];for(var _0x20b729=0x0;_0x20b729<_0x18bd42[_0xb20b('0x50')]['length'];_0x20b729++){_0x120a24['push'](get_open_tabs(_0xb20b('0x52'),_0x18bd42[_0xb20b('0x50')][_0x20b729][_0xb20b('0x53')]));_0x120a24[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x54'),_0x18bd42['rows'][_0x20b729]['dataValues']));_0x120a24['push'](get_open_tabs('fax',_0x18bd42['rows'][_0x20b729][_0xb20b('0x53')]));_0x120a24[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x55'),_0x18bd42[_0xb20b('0x50')][_0x20b729]['dataValues']));_0x120a24[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x56'),_0x18bd42[_0xb20b('0x50')][_0x20b729]['dataValues']));_0x120a24[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x57'),_0x18bd42['rows'][_0x20b729][_0xb20b('0x53')]));}return Promise[_0xb20b('0x58')](_0x120a24)[_0xb20b('0x19')](function(){return _0x18bd42;});}else{return _0x18bd42;}})[_0xb20b('0x19')](respondWithFilteredResult(_0x4836ab,_0xe292d4))[_0xb20b('0x22')](handleError(_0x4836ab,null));};exports['show']=function(_0x673355,_0x4cf300){var _0x12b8c3={'raw':![],'where':{'id':_0x673355[_0xb20b('0x59')]['id']}},_0x34e4ab={};_0x34e4ab[_0xb20b('0x5a')]=_[_0xb20b('0x5b')](_[_0xb20b('0x5c')](db[_0xb20b('0x3f')][_0xb20b('0x40')]),[_0xb20b('0x43'),_0xb20b('0x44')]);_0x34e4ab[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x673355['query']);_0x34e4ab['filters']=_['intersection'](_0x34e4ab[_0xb20b('0x5a')],_0x34e4ab['query']);_0x12b8c3[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x34e4ab[_0xb20b('0x5a')],qs['fields'](_0x673355[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x12b8c3[_0xb20b('0x4d')]=_0x12b8c3[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x12b8c3[_0xb20b('0x4d')]:_0x34e4ab[_0xb20b('0x5a')];if(_0x673355[_0xb20b('0x47')][_0xb20b('0x48')]){_0x12b8c3[_0xb20b('0x49')]=[{'all':!![]}];}if(_0x673355['query']['userSetting']===_0xb20b('0x4a')){_0x12b8c3[_0xb20b('0x49')]=[{'model':db['UserSetting'],'as':'userSetting'}];}_0x12b8c3=_['merge']({},_0x12b8c3,_0x673355[_0xb20b('0x60')]);if(!_[_0xb20b('0x37')](_0x12b8c3[_0xb20b('0x4d')],'id')){_0x12b8c3['attributes'][_0xb20b('0x4e')]('id');}return db['User'][_0xb20b('0x39')](_0x12b8c3)[_0xb20b('0x19')](handleEntityNotFound(_0x4cf300,null))[_0xb20b('0x19')](function(_0x54b1f3){var _0x3beec5=[];values=_0x54b1f3;if(_0x673355[_0xb20b('0x47')][_0xb20b('0x51')]===_0xb20b('0x4a')){_0x3beec5[_0xb20b('0x4e')](get_open_tabs('chat',_0x54b1f3[_0xb20b('0x53')]));_0x3beec5[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x54'),_0x54b1f3[_0xb20b('0x53')]));_0x3beec5['push'](get_open_tabs('openchannel',_0x54b1f3[_0xb20b('0x53')]));_0x3beec5[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x57'),_0x54b1f3[_0xb20b('0x53')]));_0x3beec5['push'](get_open_tabs(_0xb20b('0x61'),_0x54b1f3['dataValues']));_0x3beec5[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x55'),_0x54b1f3[_0xb20b('0x53')]));return Promise['all'](_0x3beec5);}else{return values;}})[_0xb20b('0x19')](function(){return values;})[_0xb20b('0x19')](respondWithResult(_0x4cf300,null))[_0xb20b('0x22')](handleError(_0x4cf300,null));};exports[_0xb20b('0x62')]=function(_0x54d30a,_0xf21593){if(_0x54d30a['body']['id']){delete _0x54d30a[_0xb20b('0x63')]['id'];}delete _0x54d30a['body'][_0xb20b('0x38')];return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x54d30a[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0xf21593,null))[_0xb20b('0x19')](saveUpdates(_0x54d30a[_0xb20b('0x63')],null))[_0xb20b('0x19')](respondWithResult(_0xf21593,null))['catch'](handleError(_0xf21593,null));};exports[_0xb20b('0x64')]=function(_0x25e835,_0xb703c3){return db[_0xb20b('0x3f')][_0xb20b('0x64')]()[_0xb20b('0x19')](respondWithResult(_0xb703c3,null))['catch'](handleError(_0xb703c3,null));};exports[_0xb20b('0x65')]=function(_0x513a1f,_0xe3864e){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x513a1f['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0xe3864e,null))[_0xb20b('0x19')](function(_0x33c2e8){if(_0x33c2e8){return _0x33c2e8[_0xb20b('0x65')](_0x513a1f['body'][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x513a1f[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{});}})[_0xb20b('0x19')](respondWithResult(_0xe3864e,null))[_0xb20b('0x22')](handleError(_0xe3864e,null));};function validateUser(_0x4369ea){return new Promise(function(_0x442141,_0x39c025){if(_0x4369ea[_0xb20b('0x68')])return _0x442141(_0x4369ea);return db[_0xb20b('0x69')][_0xb20b('0x6a')](0x1)[_0xb20b('0x19')](function(_0x1f8b0a){if(_0x1f8b0a[_0xb20b('0x6b')])authService[_0xb20b('0x6c')](_0x4369ea[_0xb20b('0x43')]);db[_0xb20b('0x3f')][_0xb20b('0x6d')](_0xb20b('0x68'))[_0xb20b('0x19')](function(_0x1dc5a7){if(_[_0xb20b('0x6e')](_0x1dc5a7)){_0x4369ea[_0xb20b('0x68')]=_0x1f8b0a[_0xb20b('0x6f')]||0x1;return;}if(_[_0xb20b('0x6e')](_0x1f8b0a[_0xb20b('0x6f')])||_0x1f8b0a['min_internal']===_0x1dc5a7){_0x4369ea[_0xb20b('0x68')]=_0x1dc5a7+0x1;return;}if(_0x1f8b0a[_0xb20b('0x6f')]>_0x1dc5a7){_0x4369ea['internal']=_0x1f8b0a[_0xb20b('0x6f')];return;}return db['sequelize'][_0xb20b('0x47')](_0xb20b('0x70'),{'type':db[_0xb20b('0x71')][_0xb20b('0x72')]['SELECT']})[_0xb20b('0x19')](function(_0x89f31c){if(_0x89f31c&&_0x89f31c['length']){for(var _0x52aff3=0x0,_0x15f949=_0x89f31c['length'];_0x52aff3<_0x15f949&&_[_0xb20b('0x6e')](_0x4369ea[_0xb20b('0x68')]);_0x52aff3++){if(_0x1f8b0a[_0xb20b('0x6f')]<=_0x89f31c[_0x52aff3]['from']){_0x4369ea[_0xb20b('0x68')]=_0x89f31c[_0x52aff3][_0xb20b('0x73')];}else if(_0x1f8b0a[_0xb20b('0x6f')]>_0x89f31c[_0x52aff3][_0xb20b('0x73')]&&_0x1f8b0a['min_internal']<=_0x89f31c[_0x52aff3]['to']){_0x4369ea[_0xb20b('0x68')]=_0x1f8b0a[_0xb20b('0x6f')];}}}if(_[_0xb20b('0x6e')](_0x4369ea[_0xb20b('0x68')])){_0x4369ea[_0xb20b('0x68')]=_0x1dc5a7+0x1;}return _0x442141(_0x4369ea);});});})[_0xb20b('0x22')](function(_0xba6a7c){_0x39c025(_0xba6a7c);});});}function updateUser(_0x5eb510){return new Promise(function(_0x28dca0,_0x3c340a){try{if(_0x5eb510[_0xb20b('0x74')]){_0x5eb510[_0xb20b('0x75')]=_0x5eb510['internal'];_0x5eb510[_0xb20b('0x76')]={'mailbox':_0x5eb510[_0xb20b('0x68')],'password':_0x5eb510[_0xb20b('0x43')],'fullname':_0x5eb510[_0xb20b('0x77')],'email':_0x5eb510[_0xb20b('0x78')]};}if(_0x5eb510['role']===_0xb20b('0x2b')){if(!_0x5eb510[_0xb20b('0x79')])_0x5eb510[_0xb20b('0x79')]=['101',_0xb20b('0x7a'),_0xb20b('0x7b'),_0xb20b('0x7c'),_0xb20b('0x7d'),'104',_0xb20b('0x7e'),_0xb20b('0x7f'),'107',_0xb20b('0x80'),'109',_0xb20b('0x81'),_0xb20b('0x82'),_0xb20b('0x83'),'115'];}_0x28dca0(_0x5eb510);}catch(_0x94dd03){_0x3c340a(_0x94dd03);}});}exports[_0xb20b('0x84')]=function(_0x40ded8,_0x188463){if(_0x40ded8[_0xb20b('0x30')][_0xb20b('0x38')]==='agent')throw new Error('Unauthorized');if(_0x40ded8[_0xb20b('0x63')]['role']===_0xb20b('0x30')&&_0x40ded8[_0xb20b('0x30')][_0xb20b('0x38')]!=='admin'){throw new Error(_0xb20b('0x85'));}if(_0x40ded8[_0xb20b('0x63')][_0xb20b('0x38')]===_0xb20b('0x2e')&&_0x40ded8[_0xb20b('0x30')][_0xb20b('0x38')]!=='admin'){throw new Error(_0xb20b('0x86'));}return licenseUtil[_0xb20b('0x87')]([_0x40ded8[_0xb20b('0x63')]])[_0xb20b('0x19')](function(){return validateUser(_0x40ded8[_0xb20b('0x63')]);})[_0xb20b('0x19')](function(_0x4d5f8d){return updateUser(_0x4d5f8d)[_0xb20b('0x19')](function(_0x45eec3){if(_0x45eec3[_0xb20b('0x38')]===_0xb20b('0x2e')){_0x45eec3['settingsEnabled']=_0x40ded8['user']['settingsEnabled'];delete _0x45eec3[_0xb20b('0x88')];}return _0x45eec3;});})[_0xb20b('0x19')](function(_0x3daf74){return db[_0xb20b('0x3f')]['create'](_0x3daf74,{'include':[{'model':db[_0xb20b('0x76')],'as':'VoiceMail'}]});})[_0xb20b('0x19')](function(_0x3dbd3e){if(_0x40ded8['body'][_0xb20b('0x38')]===_0xb20b('0x30'))return _0x3dbd3e;if(_0x40ded8[_0xb20b('0x30')][_0xb20b('0x38')]!=='user')return _0x3dbd3e;return db['UserProfileSection'][_0xb20b('0x39')]({'where':{'name':_0x3dbd3e[_0xb20b('0x38')]===_0xb20b('0x2b')?_0xb20b('0x31'):_0xb20b('0x32'),'userProfileId':_0x40ded8[_0xb20b('0x30')]['userProfileId']},'raw':!![]})[_0xb20b('0x19')](function(_0x3cd5c6){if(!_0x3cd5c6||_0x3cd5c6[_0xb20b('0x89')]!=0x0)return _0x3dbd3e;return db['UserProfileResource']['create']({'name':_0x3dbd3e[_0xb20b('0x3a')],'resourceId':_0x3dbd3e['id'],'type':_0x3cd5c6['name'],'sectionId':_0x3cd5c6['id']},{})[_0xb20b('0x19')](function(){return _0x3dbd3e;});})['catch'](function(_0x5f37d7){logger[_0xb20b('0x1f')](_0xb20b('0x8a'),_0x5f37d7);throw _0x5f37d7;});})[_0xb20b('0x19')](respondWithResult(_0x188463,0xc9))['catch'](handleError(_0x188463,null));};exports['bulkCreate']=function(_0x19ee47,_0x5d119a){var _0x5de725=_0x19ee47[_0xb20b('0x63')];var _0x48035b=[];if(_0x19ee47[_0xb20b('0x30')][_0xb20b('0x38')]==='agent')throw new Error(_0xb20b('0x8b'));if(_[_0xb20b('0x8c')](_0x5de725,[_0xb20b('0x38'),_0xb20b('0x30')])&&_0x19ee47[_0xb20b('0x30')][_0xb20b('0x38')]!==_0xb20b('0x2e')){throw new Error(_0xb20b('0x85'));}if(_[_0xb20b('0x8c')](_0x5de725,[_0xb20b('0x38'),'admin'])&&_0x19ee47['user'][_0xb20b('0x38')]!==_0xb20b('0x2e')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xb20b('0x87')](_0x5de725)['then'](function(){return validateUser(_0x5de725[0x0]);})[_0xb20b('0x19')](function(){for(var _0x3a3e2c=0x1;_0x3a3e2c<_0x5de725[_0xb20b('0x5f')];_0x3a3e2c++){var _0x551294=_0x5de725[_0x3a3e2c-0x1]['internal'];if(!_0x5de725[_0x3a3e2c]['internal'])_0x5de725[_0x3a3e2c]['internal']=_0x551294+0x1;_0x48035b[_0xb20b('0x4e')](validateUser(_0x5de725[_0x3a3e2c]));}return Promise[_0xb20b('0x58')](_0x48035b);})[_0xb20b('0x19')](function(){_0x48035b=[];for(var _0x6edcb4=0x0;_0x6edcb4<_0x5de725['length'];_0x6edcb4++){_0x48035b[_0xb20b('0x4e')](updateUser(_0x5de725[_0x6edcb4]));}return Promise[_0xb20b('0x58')](_0x48035b);})[_0xb20b('0x19')](function(){_0x48035b=_0x5de725['map'](function(_0x573ef4){return db[_0xb20b('0x3f')][_0xb20b('0x84')](_0x573ef4,{'include':[{'model':db[_0xb20b('0x76')],'as':'VoiceMail'}]})[_0xb20b('0x19')](function(_0xd78cda){_0x573ef4['id']=_0xd78cda['id'];return _0x573ef4;});});return Promise[_0xb20b('0x58')](_0x48035b);})[_0xb20b('0x19')](function(_0x1d2c0a){if(_0x19ee47[_0xb20b('0x63')][_0xb20b('0x38')]===_0xb20b('0x30'))return _0x1d2c0a;if(_0x19ee47['user'][_0xb20b('0x38')]!==_0xb20b('0x30'))return _0x1d2c0a;var _0x58e523=_[_0xb20b('0x8c')](_0x1d2c0a,function(_0x33ac94){return _0x33ac94[_0xb20b('0x38')]===_0xb20b('0x2b')||_0x33ac94[_0xb20b('0x38')]==='telephone';});if(!_0x58e523)return _0x1d2c0a;return db[_0xb20b('0x8d')][_0xb20b('0x4f')]({'where':{'name':{'$or':['Agents',_0xb20b('0x32')]},'userProfileId':_0x19ee47[_0xb20b('0x30')][_0xb20b('0x88')]},'raw':!![]})[_0xb20b('0x19')](function(_0x4080d7){if(_[_0xb20b('0x8e')](_0x4080d7)||!_[_0xb20b('0x8c')](_0x4080d7,[_0xb20b('0x89'),0x0]))return _0x1d2c0a;_0x48035b=[];var _0x3b1f83=_(_0x4080d7)[_0xb20b('0x35')](function(_0x512009){if(_0x512009['autoAssociation']===0x1)return;return _0x512009[_0xb20b('0x3a')]===_0xb20b('0x31')?_0xb20b('0x2b'):_0xb20b('0x8f');})[_0xb20b('0x90')]()[_0xb20b('0x36')]();for(var _0xefbe89=0x0;_0xefbe89<_0x1d2c0a[_0xb20b('0x5f')];_0xefbe89++){if(!_[_0xb20b('0x37')](_0x3b1f83,_0x1d2c0a[_0xefbe89][_0xb20b('0x38')]))return;var _0x4af542=_0x1d2c0a[_0xefbe89][_0xb20b('0x38')]===_0xb20b('0x2b')?'Agents':'Telephones';_0x48035b['push'](db['UserProfileResource']['create']({'name':_0x1d2c0a[_0xefbe89]['name'],'resourceId':_0x1d2c0a[_0xefbe89]['id'],'type':_0x4af542,'sectionId':_[_0xb20b('0x39')](_0x4080d7,['name',_0x4af542])['id']},{}));}return Promise[_0xb20b('0x58')](_0x48035b);});})[_0xb20b('0x19')](respondWithResult(_0x5d119a,0xc9))[_0xb20b('0x22')](handleError(_0x5d119a,null));};exports[_0xb20b('0x91')]=function(_0x95a704,_0x438052){if(_0x95a704[_0xb20b('0x63')]['id']){delete _0x95a704[_0xb20b('0x63')]['id'];}return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x95a704[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](function(_0x28a817){if(!_0x28a817)return null;if(_0x28a817['id']===_0x95a704[_0xb20b('0x30')]['id']){if(!_0x95a704['body'][_0xb20b('0x92')]||!_0x95a704[_0xb20b('0x63')][_0xb20b('0x93')]){throw new db['Sequelize'][(_0xb20b('0x94'))](_0xb20b('0x95'));}if(!_0x28a817['authenticate'](_0x95a704['body'][_0xb20b('0x92')])){throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0x97'));}if(_0x95a704[_0xb20b('0x63')][_0xb20b('0x92')]===_0x95a704['body'][_0xb20b('0x93')]){throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0x98'));}}else if(_0x95a704[_0xb20b('0x30')][_0xb20b('0x38')]==='admin'){if(!_0x95a704[_0xb20b('0x63')][_0xb20b('0x93')]){throw new db['Sequelize'][(_0xb20b('0x94'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x95a704['user'][_0xb20b('0x38')]===_0xb20b('0x30')){if(!_0x95a704[_0xb20b('0x63')][_0xb20b('0x93')]){throw new db[(_0xb20b('0x96'))]['ValidationError'](_0xb20b('0x99'));}if(_0x28a817[_0xb20b('0x38')]!=='agent'){throw new db[(_0xb20b('0x96'))]['ValidationError'](_0xb20b('0x8b'));}}else{throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))]('Unauthorized');}return _0x28a817;})[_0xb20b('0x19')](handleEntityNotFound(_0x438052,null))[_0xb20b('0x19')](function(_0x4a4ebe){return db[_0xb20b('0x69')][_0xb20b('0x9a')]({'attributes':['id','securePassword',_0xb20b('0x9b'),_0xb20b('0x9c')]})[_0xb20b('0x19')](function(_0xaa9d28){if(_0xaa9d28[_0xb20b('0x6b')])authService[_0xb20b('0x6c')](_0x95a704[_0xb20b('0x63')][_0xb20b('0x93')]);if(!_0xaa9d28[_0xb20b('0x9b')]||!_0x4a4ebe[_0xb20b('0x9d')])return _0x4a4ebe;authService['validatePasswordHistory'](_0x95a704['body'][_0xb20b('0x93')],_0x4a4ebe['previousPasswords'],_0xaa9d28[_0xb20b('0x9c')]);return _0x4a4ebe;})['then'](saveUpdates({'password':_0x95a704['body']['newPassword'],'passwordResetAt':_0x95a704[_0xb20b('0x30')]['id']==_0x95a704[_0xb20b('0x59')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x95a704[_0xb20b('0x63')][_0xb20b('0x93')],_0x4a4ebe['previousPasswords'])},null));})['then'](respondWithResult(_0x438052,null))[_0xb20b('0x22')](handleError(_0x438052,null));};exports[_0xb20b('0x9e')]=function(_0x4063a8,_0x397b68){var _0xcc7203=_0x4063a8['body'][_0xb20b('0x9f')];return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x4063a8[_0xb20b('0x59')]['id']},'attributes':['id',_0xb20b('0x3a'),_0xb20b('0x38'),_0xb20b('0xa0'),_0xb20b('0xa1'),_0xb20b('0xa2'),_0xb20b('0xa3')]})[_0xb20b('0x19')](handleEntityNotFound(_0x397b68,null))[_0xb20b('0x19')](function(_0x2984cf){if(_0x2984cf){if(!utils['isValidChannel'](_0xcc7203)){throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0xa4'));}return _0x2984cf['add'+_['capitalize'](_0xcc7203['toLowerCase']())+_0xb20b('0xa5')](_0x4063a8[_0xb20b('0x63')][_0xb20b('0x66')],{'penalty':_0x4063a8[_0xb20b('0x63')][_0xb20b('0xa6')]||0x0})[_0xb20b('0xa7')](function(_0x1f260a){for(var _0x1241fa=0x0;_0x1241fa<_0x4063a8[_0xb20b('0x63')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x1241fa+=0x1){var _0x529099={'UserId':Number(_0x4063a8['params']['id'])};_0x529099[_[_0xb20b('0xa8')](_0xcc7203[_0xb20b('0xa9')]())+_0xb20b('0xaa')]=Number(_0x4063a8[_0xb20b('0x63')][_0xb20b('0x66')][_0x1241fa]);socket['emit']('user'+_[_0xb20b('0xa8')](_0xcc7203[_0xb20b('0xa9')]())+'Queue:save',_0x529099);}return _0x1f260a;})[_0xb20b('0x19')](function(){if(_0xcc7203===_0xb20b('0xab')){return db[_0xb20b('0xac')]['findAll']({'where':{'id':_0x4063a8[_0xb20b('0x63')][_0xb20b('0x66')]||[]},'raw':!![],'attributes':['id',_0xb20b('0x3a')]});}})[_0xb20b('0x19')](function(_0xe577be){var _0x433b14=_0x2984cf[_0xb20b('0x2d')]({'plain':!![]});var _0x1ed4d5=[];if(_0xcc7203===_0xb20b('0xab')&&_0x433b14[_0xb20b('0x38')]==='agent'&&_0x433b14[_0xb20b('0xa0')]){for(let _0x1f425a=0x0;_0x1f425a<_0xe577be[_0xb20b('0x5f')];_0x1f425a+=0x1){_0x1ed4d5[_0xb20b('0x4e')]({'membername':_0x433b14[_0xb20b('0x3a')],'UserId':_0x433b14['id'],'queue_name':_0xe577be[_0x1f425a][_0xb20b('0x3a')],'VoiceQueueId':_0xe577be[_0x1f425a]['id'],'interface':_['isNil'](_0x433b14['interface'])?util['format']('SIP/%s',_0x433b14[_0xb20b('0x3a')]):_0x433b14[_0xb20b('0xa3')],'paused':_0x433b14['voicePause']||![],'penalty':_0x4063a8['body']['penalty']||0x0});}return Promise[_0xb20b('0x58')](_0x1ed4d5[_0xb20b('0x35')](function(_0x1ea767){return db[_0xb20b('0xad')][_0xb20b('0xae')](_0x1ea767);}));}return _0x2984cf;});}})[_0xb20b('0x19')](respondWithStatusCode(_0x397b68,null))['catch'](handleError(_0x397b68,null));};exports['removeQueues']=function(_0x50e134,_0x573356){var _0x579f1b,_0x3d837d;return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x50e134['params']['id']},'attributes':['id',_0xb20b('0x3a'),'role']})[_0xb20b('0x19')](handleEntityNotFound(_0x573356,null))[_0xb20b('0x19')](function(_0x75a346){if(_0x75a346){_0x579f1b=_0x75a346;if(!_0x50e134['query']['channel']||!utils[_0xb20b('0xaf')](_0x50e134[_0xb20b('0x47')][_0xb20b('0x9f')])){throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0xa4'));}return _0x75a346[_0xb20b('0xb0')+_[_0xb20b('0xa8')](_0x50e134[_0xb20b('0x47')]['channel'][_0xb20b('0xa9')]())+_0xb20b('0xa5')](_0x50e134[_0xb20b('0x47')][_0xb20b('0x66')]);}})['then'](function(_0x151ba3){if(_['isArray'](_0x50e134[_0xb20b('0x47')]['ids'])){for(var _0x2f1515=0x0;_0x2f1515<_0x50e134[_0xb20b('0x47')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x2f1515+=0x1){_0x3d837d={'UserId':Number(_0x50e134[_0xb20b('0x59')]['id'])};_0x3d837d[_[_0xb20b('0xa8')](_0x50e134[_0xb20b('0x47')][_0xb20b('0x9f')]['toLowerCase']())+_0xb20b('0xaa')]=Number(_0x50e134[_0xb20b('0x47')][_0xb20b('0x66')][_0x2f1515]);socket[_0xb20b('0xb1')](_0xb20b('0x30')+_[_0xb20b('0xa8')](_0x50e134['query'][_0xb20b('0x9f')]['toLowerCase']())+_0xb20b('0xb2'),_0x3d837d);}}else{_0x3d837d={'UserId':Number(_0x50e134[_0xb20b('0x59')]['id'])};_0x3d837d[_[_0xb20b('0xa8')](_0x50e134[_0xb20b('0x47')][_0xb20b('0x9f')][_0xb20b('0xa9')]())+_0xb20b('0xaa')]=Number(_0x50e134[_0xb20b('0x47')][_0xb20b('0x66')]);socket[_0xb20b('0xb1')]('user'+_['capitalize'](_0x50e134['query'][_0xb20b('0x9f')][_0xb20b('0xa9')]())+'Queue:remove',_0x3d837d);}return _0x151ba3;})[_0xb20b('0x19')](function(){if(_0x50e134[_0xb20b('0x47')][_0xb20b('0x9f')]==='voice'){return db[_0xb20b('0xad')][_0xb20b('0xb3')]({'where':{'UserId':_0x50e134[_0xb20b('0x59')]['id'],'VoiceQueueId':_0x50e134[_0xb20b('0x47')][_0xb20b('0x66')]},'individualHooks':!![]})[_0xb20b('0x19')](function(){return _0x579f1b;});}return _0x579f1b;})[_0xb20b('0x19')](respondWithStatusCode(_0x573356,null))[_0xb20b('0x22')](handleError(_0x573356,null));};exports[_0xb20b('0xb4')]=function(_0x14a102,_0x4c5d43){_0x14a102[_0xb20b('0x63')][_0xb20b('0xb5')]=_0x14a102[_0xb20b('0xb6')]['filename'];return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x14a102[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x4c5d43,null))[_0xb20b('0x19')](saveUpdates(_0x14a102[_0xb20b('0x63')],null))[_0xb20b('0x19')](respondWithResult(_0x4c5d43,null))[_0xb20b('0x22')](handleError(_0x4c5d43,null));};exports[_0xb20b('0xb7')]=function(_0x3c7481,_0x1dd956){var _0x18614b=path['join'](config['root'],_0xb20b('0xb8'));return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x3c7481[_0xb20b('0x59')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xb20b('0x19')](handleEntityNotFound(_0x1dd956,null))[_0xb20b('0x19')](function(_0x329008){if(_0x329008){if(_[_0xb20b('0x6e')](_0x329008['userpic'])){return _0x1dd956[_0xb20b('0xb9')](_0x18614b);}else{if(!fs[_0xb20b('0xba')](path[_0xb20b('0xbb')](config['root'],_0xb20b('0xbc'),_0x329008[_0xb20b('0xb5')]))){return _0x1dd956[_0xb20b('0xb9')](_0x18614b);}return _0x1dd956[_0xb20b('0xb9')](path[_0xb20b('0xbb')](config['root'],_0xb20b('0xbc'),_0x329008['userpic']));}}})[_0xb20b('0x22')](handleError(_0x1dd956,null));};exports['getOpenTabs']=function(_0x24234d,_0xbcea7b){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x24234d[_0xb20b('0x59')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0xbcea7b,null))[_0xb20b('0x19')](function(_0xb17aad){var _0x4237ac=[];values=_0xb17aad[_0xb20b('0x53')];_0x4237ac[_0xb20b('0x4e')](get_open_tabs('chat',_0xb17aad[_0xb20b('0x53')]));_0x4237ac[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x54'),_0xb17aad[_0xb20b('0x53')]));_0x4237ac[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x56'),_0xb17aad[_0xb20b('0x53')]));_0x4237ac[_0xb20b('0x4e')](get_open_tabs('whatsapp',_0xb17aad['dataValues']));_0x4237ac[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x61'),_0xb17aad['dataValues']));_0x4237ac[_0xb20b('0x4e')](get_open_tabs(_0xb20b('0x55'),_0xb17aad[_0xb20b('0x53')]));return Promise['all'](_0x4237ac);})[_0xb20b('0x19')](function(_0xfc6c6c){if(_0xfc6c6c){var _0x22f8ed=_[_0xb20b('0x35')](values[_0xb20b('0xbd')],function(_0x5591c8){return{'channel':_0xb20b('0xbe'),'id':_0x5591c8['id'],'createdAt':_0x5591c8[_0xb20b('0xbf')]};});var _0x40d6a2=_[_0xb20b('0x35')](values[_0xb20b('0xc0')],function(_0x1286eb){return{'channel':_0xb20b('0xc1'),'id':_0x1286eb['id'],'createdAt':_0x1286eb[_0xb20b('0xbf')]};});var _0x22f8c5=_[_0xb20b('0x35')](values[_0xb20b('0xc2')],function(_0x5bd4b3){return{'channel':_0xb20b('0xc3'),'id':_0x5bd4b3['id'],'createdAt':_0x5bd4b3[_0xb20b('0xbf')]};});var _0x51c205=_['map'](values[_0xb20b('0xc4')],function(_0x4801e4){return{'channel':_0xb20b('0xc5'),'id':_0x4801e4['id'],'createdAt':_0x4801e4[_0xb20b('0xbf')]};});var _0x58f3ef=_['map'](values[_0xb20b('0xc6')],function(_0x478dd5){return{'channel':_0xb20b('0xc7'),'id':_0x478dd5['id'],'createdAt':_0x478dd5['createdAt']};});var _0x517059=_[_0xb20b('0x35')](values[_0xb20b('0xc8')],function(_0x10316a){return{'channel':_0xb20b('0xc9'),'id':_0x10316a['id'],'createdAt':_0x10316a[_0xb20b('0xbf')]};});var _0x2034d4=_[_0xb20b('0xca')](_0x22f8ed,_0x40d6a2,_0x22f8c5,_0x51c205,_0x58f3ef,_0x517059);var _0x38b697={'count':_0x2034d4[_0xb20b('0x5f')],'rows':_0x2034d4};return _0x38b697;}else return null;})[_0xb20b('0x19')](respondWithResult(_0xbcea7b,null))[_0xb20b('0x22')](handleError(_0xbcea7b,null));};exports['getContacts']=function(_0x22c9eb,_0x4de9b0){var _0x4ec646={};var _0x9c494c={};var _0x3e9ace;var _0x900216;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x22c9eb['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x4de9b0,null))[_0xb20b('0x19')](function(_0x4c8c8b){if(_0x4c8c8b){_0x3e9ace=_0x4c8c8b;_0x9c494c['model']=_[_0xb20b('0x5c')](db[_0xb20b('0xcb')][_0xb20b('0x40')]);_0x9c494c['query']=_[_0xb20b('0x5c')](_0x22c9eb[_0xb20b('0x47')]);_0x9c494c[_0xb20b('0xcc')]=_['intersection'](_0x9c494c[_0xb20b('0x5a')],_0x9c494c['query']);_0x4ec646['attributes']=_['intersection'](_0x9c494c[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x22c9eb[_0xb20b('0x47')]['fields']));_0x4ec646[_0xb20b('0x4d')]=_0x4ec646[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x4ec646[_0xb20b('0x4d')]:_0x9c494c[_0xb20b('0x5a')];_0x4ec646['order']=qs[_0xb20b('0xcd')](_0x22c9eb['query'][_0xb20b('0xcd')]);_0x4ec646[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x22c9eb[_0xb20b('0x47')],_0x9c494c['filters']));if(_0x22c9eb['query'][_0xb20b('0x33')]){_0x4ec646['where']=_[_0xb20b('0xcf')](_0x4ec646['where'],{'$or':_['map'](_0x4ec646[_0xb20b('0x4d')],function(_0xf8c27f){var _0x35b83b={};_0x35b83b[_0xf8c27f]={'$like':'%'+_0x22c9eb[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x35b83b;})});}_0x4ec646=_[_0xb20b('0xcf')]({},_0x4ec646,_0x22c9eb[_0xb20b('0x60')]);return _0x3e9ace[_0xb20b('0xd0')](_0x4ec646);}})[_0xb20b('0x19')](function(_0x250015){if(_0x250015){_0x900216=_0x250015['length'];if(_0x22c9eb[_0xb20b('0x47')]['hasOwnProperty'](_0xb20b('0x48'))){_0x4ec646[_0xb20b('0x49')]=[{'model':db[_0xb20b('0xd1')],'as':_0xb20b('0xd2'),'required':![]},{'model':db[_0xb20b('0xd3')],'as':_0xb20b('0xd4'),'attributes':['id','name',_0xb20b('0xd5')],'where':_0x22c9eb[_0xb20b('0x47')][_0xb20b('0xd6')]?{'id':_0x22c9eb['query']['tag']}:undefined,'required':_0x22c9eb[_0xb20b('0x47')][_0xb20b('0xd6')]?!![]:![]}];}if(!_0x22c9eb[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x4ec646[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x22c9eb[_0xb20b('0x47')][_0xb20b('0x26')]);_0x4ec646['offset']=qs[_0xb20b('0x25')](_0x22c9eb['query'][_0xb20b('0x25')]);}return _0x3e9ace[_0xb20b('0xd0')](_0x4ec646);}})['then'](function(_0x85b856){if(_0x85b856){return _0x85b856?{'count':_0x900216,'rows':_0x85b856}:null;}})['then'](respondWithResult(_0x4de9b0,null))[_0xb20b('0x22')](handleError(_0x4de9b0,null));};exports[_0xb20b('0xd9')]=function(_0x7675e3,_0x343457){var _0x2010a7;var _0x88ffb={};var _0x11befd;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x7675e3[_0xb20b('0x59')]['id']},'attributes':['id',_0xb20b('0x3a'),_0xb20b('0x38')]})['then'](handleEntityNotFound(_0x343457,null))[_0xb20b('0x19')](function(_0x104ac2){if(!utils[_0xb20b('0xaf')](_0x7675e3[_0xb20b('0x47')][_0xb20b('0x9f')])){throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0xa4'));}_0x2010a7=_0x104ac2;var _0x1ef5c0={};_0x1ef5c0[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_['capitalize'](_0x7675e3[_0xb20b('0x47')]['channel'])+_0xb20b('0xda')]['rawAttributes']);_0x1ef5c0['query']=_[_0xb20b('0x5c')](_0x7675e3[_0xb20b('0x47')]);_0x1ef5c0['filters']=_[_0xb20b('0x5d')](_0x1ef5c0[_0xb20b('0x5a')],_0x1ef5c0[_0xb20b('0x47')]);_0x88ffb[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x1ef5c0[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x7675e3[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x88ffb[_0xb20b('0x4d')]=_0x88ffb[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x88ffb[_0xb20b('0x4d')]:_0x1ef5c0[_0xb20b('0x5a')];_0x88ffb[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x7675e3['query'][_0xb20b('0xcd')]);_0x88ffb[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x7675e3[_0xb20b('0x47')],_0x1ef5c0[_0xb20b('0xcc')]));if(_0x7675e3[_0xb20b('0x47')][_0xb20b('0x33')]){_0x88ffb['where']=_[_0xb20b('0xcf')](_0x88ffb['where'],{'$or':_['map'](_0x88ffb['attributes'],function(_0x41f168){var _0x102348={};_0x102348[_0x41f168]={'$like':'%'+_0x7675e3['query'][_0xb20b('0x33')]+'%'};return _0x102348;})});}_0x88ffb=_[_0xb20b('0xcf')]({},_0x88ffb,_0x7675e3[_0xb20b('0x60')]);switch(_0x2010a7['role']){case _0xb20b('0x2e'):return db[_[_0xb20b('0xa8')](_0x7675e3[_0xb20b('0x47')][_0xb20b('0x9f')])+_0xb20b('0xda')][_0xb20b('0x4f')](_0x88ffb);case _0xb20b('0x30'):case _0xb20b('0x2b'):return _0x2010a7[_0xb20b('0x2d')+_[_0xb20b('0xa8')](_0x7675e3[_0xb20b('0x47')][_0xb20b('0x9f')])+_0xb20b('0xa5')](_0x88ffb);default:throw new db[(_0xb20b('0x96'))][(_0xb20b('0x94'))](_0xb20b('0xdc'));}})[_0xb20b('0x19')](function(_0x379079){_0x11befd=_0x379079['length'];if(!_0x7675e3['query']['hasOwnProperty'](_0xb20b('0xd8'))){_0x88ffb[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x7675e3['query'][_0xb20b('0x26')]);_0x88ffb[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x7675e3[_0xb20b('0x47')]['offset']);}switch(_0x2010a7['role']){case'admin':return db[_[_0xb20b('0xa8')](_0x7675e3[_0xb20b('0x47')][_0xb20b('0x9f')])+_0xb20b('0xda')][_0xb20b('0x4f')](_0x88ffb);case _0xb20b('0x30'):case _0xb20b('0x2b'):return _0x2010a7[_0xb20b('0x2d')+_[_0xb20b('0xa8')](_0x7675e3['query']['channel'])+'Queues'](_0x88ffb);}})[_0xb20b('0x19')](function(_0xb72a3e){return{'count':_0x11befd,'rows':_0xb72a3e};})[_0xb20b('0x19')](respondWithResult(_0x343457,null))[_0xb20b('0x22')](handleError(_0x343457,null));};exports['getVoiceQueuesRt']=function(_0x16ccf6,_0x5f3d8f){var _0x4d1805={};var _0x5b7785={};var _0x2ed206;var _0x43bfe4;return db[_0xb20b('0x3f')]['findOne']({'where':{'id':_0x16ccf6[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x5f3d8f,null))[_0xb20b('0x19')](function(_0x50ae88){if(_0x50ae88){_0x2ed206=_0x50ae88;_0x5b7785[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xad')][_0xb20b('0x40')]);_0x5b7785['query']=_[_0xb20b('0x5c')](_0x16ccf6[_0xb20b('0x47')]);_0x5b7785[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x5b7785[_0xb20b('0x5a')],_0x5b7785[_0xb20b('0x47')]);_0x4d1805[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x5b7785[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x16ccf6[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x4d1805[_0xb20b('0x4d')]=_0x4d1805[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x4d1805[_0xb20b('0x4d')]:_0x5b7785[_0xb20b('0x5a')];_0x4d1805[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x16ccf6['query'][_0xb20b('0xcd')]);_0x4d1805['where']=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x16ccf6[_0xb20b('0x47')],_0x5b7785[_0xb20b('0xcc')]));if(_0x16ccf6[_0xb20b('0x47')][_0xb20b('0x33')]){_0x4d1805[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x4d1805[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x4d1805[_0xb20b('0x4d')],function(_0x427d66){var _0x2d661d={};_0x2d661d[_0x427d66]={'$like':'%'+_0x16ccf6[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x2d661d;})});}_0x4d1805=_[_0xb20b('0xcf')]({},_0x4d1805,_0x16ccf6[_0xb20b('0x60')]);return _0x2ed206['getVoiceQueuesRt'](_0x4d1805);}})[_0xb20b('0x19')](function(_0x4caa94){if(_0x4caa94){_0x43bfe4=_0x4caa94[_0xb20b('0x5f')];if(!_0x16ccf6[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x4d1805[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x16ccf6['query'][_0xb20b('0x26')]);_0x4d1805['offset']=qs['offset'](_0x16ccf6[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x2ed206[_0xb20b('0xdd')](_0x4d1805);}})['then'](function(_0x57e4be){if(_0x57e4be){return _0x57e4be?{'count':_0x43bfe4,'rows':_0x57e4be}:null;}})[_0xb20b('0x19')](respondWithResult(_0x5f3d8f,null))['catch'](handleError(_0x5f3d8f,null));};exports[_0xb20b('0xde')]=function(_0x1bdd1f,_0x208315){var _0x2e463a={};var _0xb89483={};var _0x2a95ea;var _0x193fb2;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x1bdd1f[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x208315,null))['then'](function(_0x2f1338){if(_0x2f1338){_0x2a95ea=_0x2f1338;_0xb89483[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xdf')][_0xb20b('0x40')]);_0xb89483[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x1bdd1f[_0xb20b('0x47')]);_0xb89483['filters']=_['intersection'](_0xb89483['model'],_0xb89483['query']);_0x2e463a[_0xb20b('0x4d')]=_['intersection'](_0xb89483[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x2e463a['attributes']=_0x2e463a['attributes'][_0xb20b('0x5f')]?_0x2e463a[_0xb20b('0x4d')]:_0xb89483[_0xb20b('0x5a')];_0x2e463a[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x2e463a[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x1bdd1f[_0xb20b('0x47')],_0xb89483['filters']));if(_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0x33')]){_0x2e463a['where']=_[_0xb20b('0xcf')](_0x2e463a[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x2e463a['attributes'],function(_0x3ae004){var _0x48a104={};_0x48a104[_0x3ae004]={'$like':'%'+_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x48a104;})});}_0x2e463a=_['merge']({},_0x2e463a,_0x1bdd1f[_0xb20b('0x60')]);return _0x2a95ea[_0xb20b('0xde')](_0x2e463a);}})[_0xb20b('0x19')](function(_0x3a25c0){if(_0x3a25c0){_0x193fb2=_0x3a25c0[_0xb20b('0x5f')];if(!_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0xd7')]('nolimit')){_0x2e463a[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x1bdd1f['query']['limit']);_0x2e463a['offset']=qs['offset'](_0x1bdd1f[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x2a95ea['getGroups'](_0x2e463a);}})[_0xb20b('0x19')](function(_0xc5102a){if(_0xc5102a){return _0xc5102a?{'count':_0x193fb2,'rows':_0xc5102a}:null;}})[_0xb20b('0x19')](respondWithResult(_0x208315,null))[_0xb20b('0x22')](handleError(_0x208315,null));};exports[_0xb20b('0xe0')]=function(_0x2be553,_0x3c215e){var _0x5005ed={'raw':!![],'where':{}};var _0x9db726={};var _0x2dade1={'count':0x0,'rows':[]};return db['User'][_0xb20b('0x9a')]({'where':{'id':_0x2be553['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x3c215e,null))[_0xb20b('0x19')](function(_0x112b99){if(_0x112b99){_0x9db726[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xe1')]['rawAttributes']);_0x9db726[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x2be553['query']);_0x9db726['filters']=_[_0xb20b('0x5d')](_0x9db726[_0xb20b('0x5a')],_0x9db726[_0xb20b('0x47')]);_0x5005ed[_0xb20b('0x4d')]=_['intersection'](_0x9db726[_0xb20b('0x5a')],qs['fields'](_0x2be553['query'][_0xb20b('0x5e')]));_0x5005ed[_0xb20b('0x4d')]=_0x5005ed[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x5005ed[_0xb20b('0x4d')]:_0x9db726[_0xb20b('0x5a')];if(!_0x2be553[_0xb20b('0x47')]['hasOwnProperty'](_0xb20b('0xd8'))){_0x5005ed[_0xb20b('0x26')]=qs['limit'](_0x2be553[_0xb20b('0x47')][_0xb20b('0x26')]);_0x5005ed['offset']=qs[_0xb20b('0x25')](_0x2be553[_0xb20b('0x47')][_0xb20b('0x25')]);}_0x5005ed['order']=qs[_0xb20b('0xcd')](_0x2be553[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x5005ed['where']=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x2be553['query'],_0x9db726[_0xb20b('0xcc')]));_0x5005ed['where'][_0xb20b('0xe2')]=_0x112b99['id'];if(_0x2be553[_0xb20b('0x47')][_0xb20b('0x33')]){_0x5005ed[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x5005ed[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x5005ed['attributes'],function(_0x5963ca){var _0x3f3c2c={};_0x3f3c2c[_0x5963ca]={'$like':'%'+_0x2be553[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x3f3c2c;})});}_0x5005ed=_[_0xb20b('0xcf')]({},_0x5005ed,_0x2be553[_0xb20b('0x60')]);return db[_0xb20b('0xe1')][_0xb20b('0x28')]({'where':_0x5005ed[_0xb20b('0x46')]})[_0xb20b('0x19')](function(_0x26a323){_0x2dade1['count']=_0x26a323;if(_0x2be553[_0xb20b('0x47')][_0xb20b('0x48')]){_0x5005ed['include']=[{'all':!![]}];}return db[_0xb20b('0xe1')]['findAll'](_0x5005ed);})[_0xb20b('0x19')](function(_0x26d4a7){_0x2dade1[_0xb20b('0x50')]=_0x26d4a7;return _0x2dade1;});}})[_0xb20b('0x19')](respondWithFilteredResult(_0x3c215e,_0x5005ed))[_0xb20b('0x22')](handleError(_0x3c215e,null));};exports['getScreenRecordings']=function(_0x2c81be,_0x390b82){var _0x2d3e07={'raw':!![],'where':{}};var _0x2a5fee={};var _0x59f7a6={'count':0x0,'rows':[]};return db['User'][_0xb20b('0x9a')]({'where':{'id':_0x2c81be['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x390b82,null))[_0xb20b('0x19')](function(_0x34c3dc){if(_0x34c3dc){_0x2a5fee[_0xb20b('0x5a')]=_['keys'](db[_0xb20b('0xe3')][_0xb20b('0x40')]);_0x2a5fee[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x2c81be['query']);_0x2a5fee[_0xb20b('0xcc')]=_['intersection'](_0x2a5fee['model'],_0x2a5fee[_0xb20b('0x47')]);_0x2d3e07[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x2a5fee[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x2c81be['query'][_0xb20b('0x5e')]));_0x2d3e07[_0xb20b('0x4d')]=_0x2d3e07[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x2d3e07[_0xb20b('0x4d')]:_0x2a5fee['model'];if(!_0x2c81be[_0xb20b('0x47')]['hasOwnProperty']('nolimit')){_0x2d3e07[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x2c81be[_0xb20b('0x47')][_0xb20b('0x26')]);_0x2d3e07[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x2c81be[_0xb20b('0x47')][_0xb20b('0x25')]);}_0x2d3e07[_0xb20b('0xdb')]=qs['sort'](_0x2c81be[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x2d3e07[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_['pick'](_0x2c81be[_0xb20b('0x47')],_0x2a5fee[_0xb20b('0xcc')]));_0x2d3e07[_0xb20b('0x46')][_0xb20b('0xe2')]=_0x34c3dc['id'];if(_0x2c81be[_0xb20b('0x47')][_0xb20b('0x33')]){_0x2d3e07[_0xb20b('0x46')]=_['merge'](_0x2d3e07[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x2d3e07[_0xb20b('0x4d')],function(_0x37eeac){var _0xed753b={};_0xed753b[_0x37eeac]={'$like':'%'+_0x2c81be[_0xb20b('0x47')]['filter']+'%'};return _0xed753b;})});}_0x2d3e07=_[_0xb20b('0xcf')]({},_0x2d3e07,_0x2c81be[_0xb20b('0x60')]);return db[_0xb20b('0xe3')][_0xb20b('0x28')]({'where':_0x2d3e07[_0xb20b('0x46')]})[_0xb20b('0x19')](function(_0x512fe7){_0x59f7a6[_0xb20b('0x28')]=_0x512fe7;if(_0x2c81be[_0xb20b('0x47')][_0xb20b('0x48')]){_0x2d3e07[_0xb20b('0x49')]=[{'all':!![]}];}return db['ScreenRecording']['findAll'](_0x2d3e07);})['then'](function(_0x88359e){_0x59f7a6[_0xb20b('0x50')]=_0x88359e;return _0x59f7a6;});}})[_0xb20b('0x19')](respondWithFilteredResult(_0x390b82,_0x2d3e07))[_0xb20b('0x22')](handleError(_0x390b82,null));};exports[_0xb20b('0xe4')]=function(_0x176bb1,_0x1763a3){var _0x48b07c={};var _0x304776={};var _0x1eaa0d;var _0x1f08a1;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x176bb1[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x1763a3,null))['then'](function(_0x188e94){if(_0x188e94){_0x1eaa0d=_0x188e94;_0x304776[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xe5')][_0xb20b('0x40')]);_0x304776[_0xb20b('0x47')]=_['keys'](_0x176bb1[_0xb20b('0x47')]);_0x304776[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x304776['model'],_0x304776[_0xb20b('0x47')]);_0x48b07c['attributes']=_['intersection'](_0x304776['model'],qs[_0xb20b('0x5e')](_0x176bb1[_0xb20b('0x47')]['fields']));_0x48b07c[_0xb20b('0x4d')]=_0x48b07c[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x48b07c['attributes']:_0x304776['model'];_0x48b07c[_0xb20b('0xdb')]=qs['sort'](_0x176bb1[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x48b07c[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x176bb1[_0xb20b('0x47')],_0x304776[_0xb20b('0xcc')]));if(_0x176bb1['query'][_0xb20b('0x33')]){_0x48b07c[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x48b07c[_0xb20b('0x46')],{'$or':_['map'](_0x48b07c['attributes'],function(_0x390c28){var _0x219efe={};_0x219efe[_0x390c28]={'$like':'%'+_0x176bb1[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x219efe;})});}_0x48b07c=_[_0xb20b('0xcf')]({},_0x48b07c,_0x176bb1[_0xb20b('0x60')]);return _0x1eaa0d['getChatInteractions'](_0x48b07c);}})[_0xb20b('0x19')](function(_0xb8fc58){if(_0xb8fc58){_0x1f08a1=_0xb8fc58[_0xb20b('0x5f')];if(!_0x176bb1[_0xb20b('0x47')]['hasOwnProperty'](_0xb20b('0xd8'))){_0x48b07c[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x176bb1['query']['limit']);_0x48b07c[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x176bb1[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x1eaa0d[_0xb20b('0xe4')](_0x48b07c);}})[_0xb20b('0x19')](function(_0x31f5f0){if(_0x31f5f0){return _0x31f5f0?{'count':_0x1f08a1,'rows':_0x31f5f0}:null;}})[_0xb20b('0x19')](respondWithResult(_0x1763a3,null))['catch'](handleError(_0x1763a3,null));};exports[_0xb20b('0xe6')]=function(_0x468274,_0x2eede9){var _0x4dd897={};var _0x4f43f3={};var _0x245778;var _0x184f8c;return db['User']['findOne']({'where':{'id':_0x468274['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x2eede9,null))['then'](function(_0x5e41b6){if(_0x5e41b6){_0x245778=_0x5e41b6;_0x4f43f3[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xe7')][_0xb20b('0x40')]);_0x4f43f3[_0xb20b('0x47')]=_['keys'](_0x468274[_0xb20b('0x47')]);_0x4f43f3[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x4f43f3[_0xb20b('0x5a')],_0x4f43f3[_0xb20b('0x47')]);_0x4dd897['attributes']=_[_0xb20b('0x5d')](_0x4f43f3[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x468274['query'][_0xb20b('0x5e')]));_0x4dd897['attributes']=_0x4dd897['attributes'][_0xb20b('0x5f')]?_0x4dd897['attributes']:_0x4f43f3['model'];_0x4dd897[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x468274[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x4dd897[_0xb20b('0x46')]=qs['filters'](_[_0xb20b('0xce')](_0x468274['query'],_0x4f43f3[_0xb20b('0xcc')]));if(_0x468274[_0xb20b('0x47')][_0xb20b('0x33')]){_0x4dd897[_0xb20b('0x46')]=_['merge'](_0x4dd897[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x4dd897[_0xb20b('0x4d')],function(_0x3bd92e){var _0x315aa7={};_0x315aa7[_0x3bd92e]={'$like':'%'+_0x468274[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x315aa7;})});}_0x4dd897=_[_0xb20b('0xcf')]({},_0x4dd897,_0x468274[_0xb20b('0x60')]);return _0x245778[_0xb20b('0xe6')](_0x4dd897);}})[_0xb20b('0x19')](function(_0x504d67){if(_0x504d67){_0x184f8c=_0x504d67[_0xb20b('0x5f')];if(!_0x468274[_0xb20b('0x47')]['hasOwnProperty'](_0xb20b('0xd8'))){_0x4dd897[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x468274[_0xb20b('0x47')][_0xb20b('0x26')]);_0x4dd897['offset']=qs[_0xb20b('0x25')](_0x468274[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x245778[_0xb20b('0xe6')](_0x4dd897);}})[_0xb20b('0x19')](function(_0x3ee604){if(_0x3ee604){return _0x3ee604?{'count':_0x184f8c,'rows':_0x3ee604}:null;}})['then'](respondWithResult(_0x2eede9,null))[_0xb20b('0x22')](handleError(_0x2eede9,null));};exports[_0xb20b('0xe8')]=function(_0x22d6c5,_0x433ba1){var _0x1e8c03={'raw':!![],'where':{}};var _0xcdc0f1={};var _0x595548={'count':0x0,'rows':[]};return db['User'][_0xb20b('0x9a')]({'where':{'id':_0x22d6c5[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x433ba1,null))['then'](function(_0xfa0ed0){if(_0xfa0ed0){_0xcdc0f1[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xe9')][_0xb20b('0x40')]);_0xcdc0f1[_0xb20b('0x47')]=_['keys'](_0x22d6c5[_0xb20b('0x47')]);_0xcdc0f1[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0xcdc0f1[_0xb20b('0x5a')],_0xcdc0f1[_0xb20b('0x47')]);_0x1e8c03[_0xb20b('0x4d')]=_['intersection'](_0xcdc0f1[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x22d6c5[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x1e8c03[_0xb20b('0x4d')]=_0x1e8c03[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x1e8c03[_0xb20b('0x4d')]:_0xcdc0f1['model'];if(!_0x22d6c5[_0xb20b('0x47')][_0xb20b('0xd7')]('nolimit')){_0x1e8c03[_0xb20b('0x26')]=qs['limit'](_0x22d6c5[_0xb20b('0x47')][_0xb20b('0x26')]);_0x1e8c03[_0xb20b('0x25')]=qs['offset'](_0x22d6c5[_0xb20b('0x47')][_0xb20b('0x25')]);}_0x1e8c03[_0xb20b('0xdb')]=qs['sort'](_0x22d6c5[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x1e8c03[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x22d6c5[_0xb20b('0x47')],_0xcdc0f1[_0xb20b('0xcc')]));_0x1e8c03[_0xb20b('0x46')][_0xb20b('0xe2')]=_0xfa0ed0['id'];if(_0x22d6c5[_0xb20b('0x47')][_0xb20b('0x33')]){_0x1e8c03[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x1e8c03[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x1e8c03[_0xb20b('0x4d')],function(_0x16c387){var _0x310817={};_0x310817[_0x16c387]={'$like':'%'+_0x22d6c5[_0xb20b('0x47')]['filter']+'%'};return _0x310817;})});}_0x1e8c03=_['merge']({},_0x1e8c03,_0x22d6c5[_0xb20b('0x60')]);return db['MailInteraction'][_0xb20b('0x28')]({'where':_0x1e8c03['where']})[_0xb20b('0x19')](function(_0x109c83){_0x595548['count']=_0x109c83;if(_0x22d6c5['query'][_0xb20b('0x48')]){_0x1e8c03['include']=[{'all':!![]}];}return db[_0xb20b('0xe9')]['findAll'](_0x1e8c03);})[_0xb20b('0x19')](function(_0x2a7a54){_0x595548['rows']=_0x2a7a54;return _0x595548;});}})[_0xb20b('0x19')](respondWithFilteredResult(_0x433ba1,_0x1e8c03))[_0xb20b('0x22')](handleError(_0x433ba1,null));};exports['getSmsInteractions']=function(_0x1a4509,_0x5c9f71){var _0x282659={};var _0x36a36f={};var _0x4a0ccb;var _0x5f03df;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x1a4509[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x5c9f71,null))[_0xb20b('0x19')](function(_0x105fea){if(_0x105fea){_0x4a0ccb=_0x105fea;_0x36a36f['model']=_[_0xb20b('0x5c')](db[_0xb20b('0xea')][_0xb20b('0x40')]);_0x36a36f[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x1a4509['query']);_0x36a36f[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x36a36f[_0xb20b('0x5a')],_0x36a36f[_0xb20b('0x47')]);_0x282659[_0xb20b('0x4d')]=_['intersection'](_0x36a36f[_0xb20b('0x5a')],qs['fields'](_0x1a4509['query'][_0xb20b('0x5e')]));_0x282659['attributes']=_0x282659[_0xb20b('0x4d')]['length']?_0x282659[_0xb20b('0x4d')]:_0x36a36f[_0xb20b('0x5a')];_0x282659['order']=qs[_0xb20b('0xcd')](_0x1a4509[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x282659['where']=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x1a4509['query'],_0x36a36f[_0xb20b('0xcc')]));if(_0x1a4509[_0xb20b('0x47')][_0xb20b('0x33')]){_0x282659[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x282659['where'],{'$or':_[_0xb20b('0x35')](_0x282659[_0xb20b('0x4d')],function(_0x39b27f){var _0x59dc45={};_0x59dc45[_0x39b27f]={'$like':'%'+_0x1a4509[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x59dc45;})});}_0x282659=_[_0xb20b('0xcf')]({},_0x282659,_0x1a4509[_0xb20b('0x60')]);return _0x4a0ccb[_0xb20b('0xeb')](_0x282659);}})['then'](function(_0x339726){if(_0x339726){_0x5f03df=_0x339726[_0xb20b('0x5f')];if(!_0x1a4509['query']['hasOwnProperty'](_0xb20b('0xd8'))){_0x282659[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x1a4509[_0xb20b('0x47')][_0xb20b('0x26')]);_0x282659[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x1a4509['query'][_0xb20b('0x25')]);}return _0x4a0ccb[_0xb20b('0xeb')](_0x282659);}})[_0xb20b('0x19')](function(_0xb1973c){if(_0xb1973c){return _0xb1973c?{'count':_0x5f03df,'rows':_0xb1973c}:null;}})['then'](respondWithResult(_0x5c9f71,null))[_0xb20b('0x22')](handleError(_0x5c9f71,null));};exports[_0xb20b('0xec')]=function(_0x52bf05,_0x110eb6){var _0x542823={};var _0x40e403={};var _0x4c5c74;var _0x27d55f;return db['User']['findOne']({'where':{'id':_0x52bf05[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x110eb6,null))[_0xb20b('0x19')](function(_0x2b87be){if(_0x2b87be){_0x4c5c74=_0x2b87be;_0x40e403[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xed')]['rawAttributes']);_0x40e403[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x52bf05[_0xb20b('0x47')]);_0x40e403[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x40e403[_0xb20b('0x5a')],_0x40e403[_0xb20b('0x47')]);_0x542823[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x40e403[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x52bf05['query'][_0xb20b('0x5e')]));_0x542823['attributes']=_0x542823[_0xb20b('0x4d')]['length']?_0x542823[_0xb20b('0x4d')]:_0x40e403[_0xb20b('0x5a')];_0x542823[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x52bf05['query'][_0xb20b('0xcd')]);_0x542823[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_['pick'](_0x52bf05['query'],_0x40e403[_0xb20b('0xcc')]));if(_0x52bf05['query'][_0xb20b('0x33')]){_0x542823[_0xb20b('0x46')]=_['merge'](_0x542823[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x542823[_0xb20b('0x4d')],function(_0x15c435){var _0x42fd33={};_0x42fd33[_0x15c435]={'$like':'%'+_0x52bf05[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x42fd33;})});}_0x542823=_[_0xb20b('0xcf')]({},_0x542823,_0x52bf05[_0xb20b('0x60')]);return _0x4c5c74[_0xb20b('0xec')](_0x542823);}})[_0xb20b('0x19')](function(_0x12fa07){if(_0x12fa07){_0x27d55f=_0x12fa07['length'];if(!_0x52bf05['query'][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x542823['limit']=qs[_0xb20b('0x26')](_0x52bf05['query']['limit']);_0x542823[_0xb20b('0x25')]=qs['offset'](_0x52bf05['query']['offset']);}return _0x4c5c74['getFaxInteractions'](_0x542823);}})['then'](function(_0x44bf8f){if(_0x44bf8f){return _0x44bf8f?{'count':_0x27d55f,'rows':_0x44bf8f}:null;}})['then'](respondWithResult(_0x110eb6,null))[_0xb20b('0x22')](handleError(_0x110eb6,null));};exports[_0xb20b('0xee')]=function(_0x427164,_0x51ae81){var _0x2f4489={};var _0x29bc60={};var _0x15ce23;var _0x24572a;return db[_0xb20b('0x3f')]['findOne']({'where':{'id':_0x427164[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x51ae81,null))['then'](function(_0x39b532){if(_0x39b532){_0x15ce23=_0x39b532;_0x29bc60[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db['WhatsappInteraction'][_0xb20b('0x40')]);_0x29bc60[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x427164['query']);_0x29bc60[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x29bc60[_0xb20b('0x5a')],_0x29bc60['query']);_0x2f4489['attributes']=_[_0xb20b('0x5d')](_0x29bc60[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x427164['query']['fields']));_0x2f4489['attributes']=_0x2f4489[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x2f4489['attributes']:_0x29bc60['model'];_0x2f4489[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x427164[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x2f4489[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_['pick'](_0x427164['query'],_0x29bc60['filters']));if(_0x427164['query']['filter']){_0x2f4489[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x2f4489[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x2f4489[_0xb20b('0x4d')],function(_0x400bac){var _0x5efef5={};_0x5efef5[_0x400bac]={'$like':'%'+_0x427164[_0xb20b('0x47')]['filter']+'%'};return _0x5efef5;})});}_0x2f4489=_['merge']({},_0x2f4489,_0x427164[_0xb20b('0x60')]);return _0x15ce23['getWhatsappInteractions'](_0x2f4489);}})[_0xb20b('0x19')](function(_0xb7320e){if(_0xb7320e){_0x24572a=_0xb7320e[_0xb20b('0x5f')];if(!_0x427164[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x2f4489[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x427164['query']['limit']);_0x2f4489[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x427164[_0xb20b('0x47')]['offset']);}return _0x15ce23[_0xb20b('0xee')](_0x2f4489);}})[_0xb20b('0x19')](function(_0x30a32f){if(_0x30a32f){return _0x30a32f?{'count':_0x24572a,'rows':_0x30a32f}:null;}})[_0xb20b('0x19')](respondWithResult(_0x51ae81,null))[_0xb20b('0x22')](handleError(_0x51ae81,null));};exports[_0xb20b('0xef')]=function(_0x4c613e,_0x1cee0a,_0x33b007){var _0x3d66f5;var _0x219fa8;var _0x339a87;var _0x38262a=!_[_0xb20b('0x6e')](_0x4c613e[_0xb20b('0x59')]['id'])?_0x4c613e[_0xb20b('0x59')]['id']:!_[_0xb20b('0x6e')](_0x4c613e[_0xb20b('0x30')]['id'])?_0x4c613e['user']['id']:null;return db['User'][_0xb20b('0x39')]({'where':{'id':_0x38262a,'role':{'$or':[_0xb20b('0x2e'),_0xb20b('0x30'),_0xb20b('0x2b')]}},'attributes':['id',_0xb20b('0x3a'),_0xb20b('0xf0'),_0xb20b('0xf1'),'role',_0xb20b('0x68'),_0xb20b('0xa1')]})[_0xb20b('0x19')](function(_0x5507a1){if(_0x5507a1){if(_0x5507a1[_0xb20b('0x38')]==='agent'){_0x3d66f5=_0x5507a1;if(_0x4c613e[_0xb20b('0x63')][_0xb20b('0xa3')]){_0x339a87=util[_0xb20b('0xf2')]('LOCAL/%s@from-sip/n',_0x3d66f5[_0x4c613e['body']['interface']]);}else if(_0x4c613e[_0xb20b('0x63')][_0xb20b('0xf3')]){_0x339a87=util['format'](_0xb20b('0xf4'),_0x4c613e[_0xb20b('0x63')][_0xb20b('0xf3')]);}else{_0x339a87=util['format'](_0xb20b('0xf4'),_0x3d66f5[_0xb20b('0x3a')]);}socket['to'](util[_0xb20b('0xf2')](_0xb20b('0xf5'),_0x3d66f5[_0xb20b('0x3a')]))[_0xb20b('0xb1')](_0xb20b('0xf6'),{'user':{'id':_0x3d66f5['id'],'name':_0x3d66f5[_0xb20b('0x3a')]},'ip':_0x4c613e[_0xb20b('0xf7')][_0xb20b('0xf8')]||_0x4c613e['connection']['remoteAddress']||_0x4c613e[_0xb20b('0xf9')][_0xb20b('0xfa')]||_0x4c613e['connection'][_0xb20b('0xf9')][_0xb20b('0xfa')]});return db[_0xb20b('0xad')][_0xb20b('0xb3')]({'where':{'membername':_0x3d66f5['name']},'individualHooks':!![]});}}else{throw new db['Sequelize']['ValidationError']('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0xb20b('0x19')](function(){if(_0x3d66f5){return _0x3d66f5[_0xb20b('0xfb')]({'raw':!![]});}})[_0xb20b('0x19')](function(_0x13b5d4){if(_0x3d66f5){if(_0x13b5d4){_0x219fa8=_0x13b5d4;if(_0x219fa8[_0xb20b('0x5f')]){var _0x3f25ed=_0x219fa8[_0xb20b('0x35')](function(_0x3fcadd){var _0x4e6e67={'membername':_0x3d66f5['name'],'UserId':_0x3d66f5['id'],'queue_name':_0x3fcadd[_0xb20b('0x3a')],'VoiceQueueId':_0x3fcadd['id'],'interface':_0x339a87,'paused':_0x3d66f5[_0xb20b('0xa1')]||![],'penalty':_0x3fcadd['UserVoiceQueue.penalty']||0x0};return db[_0xb20b('0xad')][_0xb20b('0xae')](_0x4e6e67);});return Promise[_0xb20b('0x58')](_0x3f25ed);}}}})['then'](function(){if(_0x3d66f5){return db[_0xb20b('0xfc')][_0xb20b('0x4f')]({'where':{'membername':_0x3d66f5[_0xb20b('0x3a')],'exitAt':null}});}})[_0xb20b('0x19')](function(_0xf8baed){if(_0x3d66f5){var _0x54f02d=[];_0xf8baed[_0xb20b('0xfd')](function(_0x437bd8){_0x54f02d[_0xb20b('0x4e')](_0x437bd8[_0xb20b('0x62')]({'exitAt':moment()[_0xb20b('0xf2')](_0xb20b('0xfe'))}));});return Promise[_0xb20b('0x58')](_0x54f02d);}})[_0xb20b('0x19')](function(){if(_0x3d66f5){var _0x2c2f61=[];var _0xa1fbf7=[];var _0x14c9e1=utils['getChannels']();var _0x49b46e={'membername':_0x3d66f5[_0xb20b('0x3a')],'interface':_0x339a87,'enterAt':moment()[_0xb20b('0xf2')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x3d66f5['role'],'internal':_0x3d66f5[_0xb20b('0x68')]};_0x14c9e1[_0xb20b('0xfd')](function(_0x105c13){_0x2c2f61[_0xb20b('0x4e')](_['merge']({'channel':_0x105c13,'type':_0xb20b('0xff'),'data1':_0x4c613e[_0xb20b('0x63')][_0xb20b('0x100')],'data2':_0x339a87},_0x49b46e));if(_0x3d66f5[_0xb20b('0xa1')]){_0xa1fbf7[_0xb20b('0x4e')](_[_0xb20b('0xcf')]({'channel':_0x105c13,'type':_0xb20b('0x101'),'data1':_0xb20b('0x102')},_0x49b46e));}});return db[_0xb20b('0xfc')][_0xb20b('0x103')](_0x2c2f61['concat'](_0xa1fbf7),{'individualHooks':!![]});}})[_0xb20b('0x19')](function(){if(_0x3d66f5){return _0x3d66f5[_0xb20b('0x62')]({'online':!![],'lastLoginAt':moment()['format'](_0xb20b('0xfe')),'voicePause':_0x3d66f5['loginInPause']||![],'mailPause':_0x3d66f5[_0xb20b('0xa1')]||![],'chatPause':_0x3d66f5[_0xb20b('0xa1')]||![],'faxPause':_0x3d66f5['loginInPause']||![],'smsPause':_0x3d66f5['loginInPause']||![],'openchannelPause':_0x3d66f5[_0xb20b('0xa1')]||![],'whatsappPause':_0x3d66f5['loginInPause']||![],'pauseType':_0x3d66f5[_0xb20b('0xa1')]?_0xb20b('0x102'):null,'interface':_0x339a87,'lastPauseAt':moment()[_0xb20b('0xf2')](_0xb20b('0xfe'))});}})['then'](function(_0x44ffe5){if(_0x4c613e['isMiddleware']){return _0x33b007();}else{return Promise['resolve'](_0x44ffe5)[_0xb20b('0x19')](respondWithResult(_0x1cee0a,null));}})[_0xb20b('0x22')](handleError(_0x1cee0a,null));};exports['logout']=function(_0x108cd1,_0x2b4fa4){var _0x41fbca;return db['User'][_0xb20b('0x39')]({'where':{'id':_0x108cd1[_0xb20b('0x59')]['id'],'role':_0xb20b('0x2b')},'attributes':['id',_0xb20b('0x3a'),'role']})[_0xb20b('0x19')](handleEntityNotFound(_0x2b4fa4,null))[_0xb20b('0x19')](function(_0x3d09b6){if(_0x3d09b6){_0x41fbca=_0x3d09b6;return db[_0xb20b('0xad')][_0xb20b('0xb3')]({'where':{'membername':_0x41fbca[_0xb20b('0x3a')]},'individualHooks':!![]});}})[_0xb20b('0x19')](function(){return db['MemberReport'][_0xb20b('0x4f')]({'where':{'membername':_0x41fbca[_0xb20b('0x3a')],'exitAt':null}});})[_0xb20b('0x19')](function(_0x2380ef){var _0x55df92=[];_0x2380ef[_0xb20b('0xfd')](function(_0x4969c7){_0x55df92[_0xb20b('0x4e')](_0x4969c7[_0xb20b('0x62')]({'exitAt':moment()[_0xb20b('0xf2')](_0xb20b('0xfe'))}));});return Promise[_0xb20b('0x58')](_0x55df92);})[_0xb20b('0x19')](function(){return _0x41fbca[_0xb20b('0x62')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xb20b('0x19')](respondWithResult(_0x2b4fa4,null))[_0xb20b('0x22')](handleError(_0x2b4fa4,null));};exports[_0xb20b('0x104')]=function(_0xd1c403,_0x2b3fd0){var _0x1fcb6f;return db['UserVoiceQueueRt'][_0xb20b('0x62')]({'paused':0x1},{'where':{'UserId':_0xd1c403[_0xb20b('0x59')]['id']},'individualHooks':!![]})[_0xb20b('0x19')](function(){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0xd1c403['params']['id'],'role':_0xb20b('0x2b')},'attributes':['id','name',_0xb20b('0x38'),_0xb20b('0x68'),_0xb20b('0xa3'),_0xb20b('0xa0')]});})[_0xb20b('0x19')](handleEntityNotFound(_0x2b3fd0,null))['then'](function(_0x5bfd50){if(_0x5bfd50){_0x1fcb6f=_0x5bfd50;return respondWithRpcPromise(_0xb20b('0x105'),_0xb20b('0x104'),{'id':_0x1fcb6f['id'],'name':_0x1fcb6f[_0xb20b('0x3a')],'pause':!![]});}})[_0xb20b('0x19')](function(){if(_0x1fcb6f){return db[_0xb20b('0xfc')][_0xb20b('0x4f')]({'where':{'membername':_0x1fcb6f[_0xb20b('0x3a')],'type':_0xb20b('0x101'),'exitAt':null}});}})[_0xb20b('0x19')](function(_0x1d0c8a){if(_0x1d0c8a[_0xb20b('0x5f')]){var _0x2a9639=moment()[_0xb20b('0xf2')](_0xb20b('0xfe'));for(var _0x38160c=0x0,_0x13dc20=_0x1d0c8a['length'];_0x38160c<_0x13dc20;_0x38160c++){_0x1d0c8a[_0x38160c][_0xb20b('0x106')]({'exitAt':_0x2a9639});}}})['then'](function(){var _0x555f36=[];var _0x28b480=utils[_0xb20b('0x107')]();_0x28b480['forEach'](function(_0x4bbb28){_0x555f36[_0xb20b('0x4e')]({'channel':_0x4bbb28,'membername':_0x1fcb6f[_0xb20b('0x3a')],'interface':_[_0xb20b('0x6e')](_0x1fcb6f[_0xb20b('0xa3')])?util[_0xb20b('0xf2')](_0xb20b('0xf4'),_0x1fcb6f[_0xb20b('0x3a')]):_0x1fcb6f[_0xb20b('0xa3')],'type':_0xb20b('0x101'),'enterAt':moment()[_0xb20b('0xf2')](_0xb20b('0xfe')),'data1':_0xd1c403['body']['type']||_0xb20b('0x108'),'role':_0x1fcb6f[_0xb20b('0x38')],'internal':_0x1fcb6f[_0xb20b('0x68')]});});return db['MemberReport']['bulkCreate'](_0x555f36,{'individualHooks':!![]});})[_0xb20b('0x19')](function(){return _0x1fcb6f[_0xb20b('0x62')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0xd1c403['body']['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xb20b('0xf2')](_0xb20b('0xfe'))});})[_0xb20b('0x19')](respondWithResult(_0x2b3fd0,null))[_0xb20b('0x22')](handleError(_0x2b3fd0,null));};exports[_0xb20b('0x109')]=function(_0x17f5ed,_0x5c268e){if(_0x17f5ed[_0xb20b('0x63')][_0xb20b('0x9f')]&&!utils[_0xb20b('0xaf')](_0x17f5ed[_0xb20b('0x63')]['channel'])){throw new APIBadRequestError(util['format'](_0xb20b('0x10a'),_0x17f5ed['body'][_0xb20b('0x9f')]));}return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x17f5ed[_0xb20b('0x59')]['id']},'attributes':['id','name',_0xb20b('0x38'),'internal',_0xb20b('0xa3'),_0xb20b('0xa0'),_0xb20b('0xa2'),_0xb20b('0x10b'),'chatPause',_0xb20b('0x10c'),_0xb20b('0x10d'),'smsPause',_0xb20b('0x10e'),'pauseType','lastPauseAt']})[_0xb20b('0x19')](function(_0x42888d){if(!_0x42888d){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x17f5ed[_0xb20b('0x59')]['id']));}return _0x42888d[_0xb20b('0x109')](_0x17f5ed['body'][_0xb20b('0x9f')]);})[_0xb20b('0x19')](respondWithResult(_0x5c268e,null))['catch'](APIHandleError(_0x5c268e));};exports[_0xb20b('0x10f')]=function(_0x5534a1,_0x12a7ff){var _0x13103b={};var _0x49ba47={};var _0x4a85e7;var _0x5d4fe1;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x5534a1[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x12a7ff,null))[_0xb20b('0x19')](function(_0x59bf94){if(_0x59bf94){_0x4a85e7=_0x59bf94;_0x49ba47[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0x110')][_0xb20b('0x40')]);_0x49ba47[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x5534a1['query']);_0x49ba47['filters']=_[_0xb20b('0x5d')](_0x49ba47[_0xb20b('0x5a')],_0x49ba47[_0xb20b('0x47')]);_0x13103b[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x49ba47[_0xb20b('0x5a')],qs['fields'](_0x5534a1['query'][_0xb20b('0x5e')]));_0x13103b[_0xb20b('0x4d')]=_0x13103b['attributes'][_0xb20b('0x5f')]?_0x13103b['attributes']:_0x49ba47[_0xb20b('0x5a')];_0x13103b[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x5534a1[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x13103b[_0xb20b('0x46')]=qs['filters'](_[_0xb20b('0xce')](_0x5534a1[_0xb20b('0x47')],_0x49ba47[_0xb20b('0xcc')]));if(_0x5534a1[_0xb20b('0x47')][_0xb20b('0x33')]){_0x13103b[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x13103b[_0xb20b('0x46')],{'$or':_['map'](_0x13103b[_0xb20b('0x4d')],function(_0x30cb3e){var _0x43266e={};_0x43266e[_0x30cb3e]={'$like':'%'+_0x5534a1[_0xb20b('0x47')]['filter']+'%'};return _0x43266e;})});}_0x13103b=_['merge']({},_0x13103b,_0x5534a1['options']);return _0x4a85e7['getTeams'](_0x13103b);}})[_0xb20b('0x19')](function(_0x3b4990){if(_0x3b4990){_0x5d4fe1=_0x3b4990[_0xb20b('0x5f')];if(!_0x5534a1['query'][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x13103b[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x5534a1['query']['limit']);_0x13103b[_0xb20b('0x25')]=qs['offset'](_0x5534a1['query'][_0xb20b('0x25')]);}return _0x4a85e7[_0xb20b('0x10f')](_0x13103b);}})[_0xb20b('0x19')](function(_0x4e87ca){if(_0x4e87ca){return _0x4e87ca?{'count':_0x5d4fe1,'rows':_0x4e87ca}:null;}})[_0xb20b('0x19')](respondWithResult(_0x12a7ff,null))['catch'](handleError(_0x12a7ff,null));};exports[_0xb20b('0x111')]=function(_0x747705,_0x3983e8){var _0xd984dc=_0x747705[_0xb20b('0x59')]['id'];var _0x38b92b=_0x747705[_0xb20b('0x63')]?_0x747705[_0xb20b('0x63')][_0xb20b('0x66')]:null;var _0x1cf3bd=[];return Promise['resolve']()[_0xb20b('0x19')](function(){if(!_0x38b92b)throw new APIBadRequestError(_0xb20b('0x112'));})[_0xb20b('0x19')](function(){return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0xd984dc}});})[_0xb20b('0x19')](function(_0x203a0f){if(!_0x203a0f)throw new APINotFoundError(util[_0xb20b('0xf2')](_0xb20b('0x113'),_0x747705[_0xb20b('0x59')]['id']));return db[_0xb20b('0x71')][_0xb20b('0x114')](function(_0x6e99e5){return _0x203a0f[_0xb20b('0x111')](_0x38b92b,{'transaction':_0x6e99e5})[_0xb20b('0x19')](function(){return db[_0xb20b('0x110')][_0xb20b('0x4f')]({'where':{'id':{'$in':_0x38b92b}}});})['then'](function(_0x563f02){var _0x14c8b0=_[_0xb20b('0x35')](_0x563f02,function(_0x42312a){return _0x42312a[_0xb20b('0x115')]();});return Promise[_0xb20b('0x58')](_0x14c8b0);})['then'](function(_0x5dc7bc){_0x1cf3bd=_[_0xb20b('0x116')](_0x5dc7bc);var _0x46c70c=_[_0xb20b('0x35')](_0x1cf3bd,function(_0x5e9b6b){return _0x5e9b6b[_0xb20b('0x117')](_0x203a0f['id'],{'transaction':_0x6e99e5});});return Promise[_0xb20b('0x58')](_0x46c70c);})['then'](function(){if(!_0x203a0f[_0xb20b('0xa0')])return;var _0x3e2f62=_['filter'](_0x1cf3bd,function(_0x2300ec){return _0x2300ec['getDataValue'](_0xb20b('0x9f'))===_0xb20b('0x118');});var _0x2f92d1=_[_0xb20b('0x35')](_0x3e2f62,function(_0x17a11a){return db[_0xb20b('0xad')][_0xb20b('0xae')]({'membername':_0x203a0f[_0xb20b('0x3a')],'UserId':_0x203a0f['id'],'queue_name':_0x17a11a[_0xb20b('0x3a')],'VoiceQueueId':_0x17a11a['id'],'interface':_[_0xb20b('0x6e')](_0x203a0f[_0xb20b('0xa3')])?util[_0xb20b('0xf2')](_0xb20b('0xf4'),_0x203a0f[_0xb20b('0x3a')]):_0x203a0f[_0xb20b('0xa3')],'paused':_0x203a0f[_0xb20b('0xa2')]||![],'penalty':_0x203a0f[_0xb20b('0xa6')]},{'transaction':_0x6e99e5});});return Promise['all'](_0x2f92d1);})[_0xb20b('0x19')](function(){return db[_0xb20b('0x119')][_0xb20b('0x4f')]({'where':{'teamId':{'$in':_0x38b92b}}});})[_0xb20b('0x19')](function(_0x15cdfc){var _0x329b1a=_[_0xb20b('0x35')](_0x15cdfc,function(_0x65a88){return db['UserVoicePrefix']['create']({'UserId':_0x203a0f['id'],'VoicePrefixId':_0x65a88['VoicePrefixId']},{'transaction':_0x6e99e5});});return Promise[_0xb20b('0x58')](_0x329b1a);});});})[_0xb20b('0x19')](function(){for(var _0x2dc0c5=0x0;_0x2dc0c5<_0x1cf3bd[_0xb20b('0x5f')];_0x2dc0c5++){var _0x523b36=_0x1cf3bd[_0x2dc0c5][_0xb20b('0x11a')](_0xb20b('0x9f'));var _0x36a0b5=_0x523b36+_0xb20b('0xaa');socket[_0xb20b('0xb1')](_0xb20b('0x30')+_0x523b36+'Queue:save',{'UserId':_0xd984dc,['queueField']:_0x1cf3bd[_0x2dc0c5]['id']});}})['then'](respondWithStatusCode(_0x3983e8,null))[_0xb20b('0x22')](APIHandleError(_0x3983e8));};exports['removeTeams']=function(_0x20df37,_0x9cf152){var _0x3dad11=_0x20df37[_0xb20b('0x59')]['id'];var _0x20d0f0=null;if(_0x20df37[_0xb20b('0x47')][_0xb20b('0x66')]){_0x20d0f0=_[_0xb20b('0x11b')](_0x20df37[_0xb20b('0x47')][_0xb20b('0x66')])?_0x20df37[_0xb20b('0x47')][_0xb20b('0x66')]:[_0x20df37[_0xb20b('0x47')]['ids']];}var _0xca57c2=[];return Promise[_0xb20b('0x11c')]()[_0xb20b('0x19')](function(){if(!_0x20d0f0)throw new APIBadRequestError(_0xb20b('0x11d'));})['then'](function(){return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x3dad11}});})[_0xb20b('0x19')](function(_0x3fce56){if(!_0x3fce56)throw new APINotFoundError(util[_0xb20b('0xf2')]('User\x20with\x20id\x20%s\x20not\x20found',_0x20df37[_0xb20b('0x59')]['id']));return db['sequelize'][_0xb20b('0x114')](function(_0x559789){return _0x3fce56[_0xb20b('0x11e')](_0x20d0f0,{'transaction':_0x559789})[_0xb20b('0x19')](function(){return db[_0xb20b('0x110')][_0xb20b('0x4f')]({'where':{'id':{'$in':_0x20d0f0}}});})[_0xb20b('0x19')](function(_0xec4ae0){var _0x2e281c=_[_0xb20b('0x35')](_0xec4ae0,function(_0x53a2ba){return _0x53a2ba['getAssociatedQueues']();});return Promise[_0xb20b('0x58')](_0x2e281c);})[_0xb20b('0x19')](function(_0x282aca){_0xca57c2=_[_0xb20b('0x116')](_0x282aca);var _0x1cdbde=_['map'](_0xca57c2,function(_0x2e9632){return _0x2e9632['removeAgent'](_0x3fce56['id'],{'transaction':_0x559789});});return Promise['all'](_0x1cdbde);})[_0xb20b('0x19')](function(){if(!_0x3fce56['online'])return;var _0x42390d=_[_0xb20b('0x33')](_0xca57c2,function(_0x4250d1){return _0x4250d1[_0xb20b('0x11a')](_0xb20b('0x9f'))===_0xb20b('0x118');});var _0x1f306a=_['map'](_0x42390d,function(_0x6412bb){return db['UserVoiceQueueRt'][_0xb20b('0xb3')]({'where':{'VoiceQueueId':_0x6412bb['id'],'UserId':_0x3fce56['id']},'transaction':_0x559789});});return Promise[_0xb20b('0x58')](_0x1f306a);})[_0xb20b('0x19')](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x20d0f0}}});})['then'](function(_0x10af51){var _0x105e69=_[_0xb20b('0x35')](_0x10af51,function(_0x3ecb82){return db[_0xb20b('0x11f')][_0xb20b('0xb3')]({'where':{'UserId':_0x3fce56['id'],'VoicePrefixId':_0x3ecb82['VoicePrefixId']}},{'transaction':_0x559789});});return Promise['all'](_0x105e69);});});})[_0xb20b('0x19')](function(){for(var _0x1b3b72=0x0;_0x1b3b72<_0xca57c2[_0xb20b('0x5f')];_0x1b3b72++){var _0x296a37=_0xca57c2[_0x1b3b72][_0xb20b('0x11a')](_0xb20b('0x9f'));var _0x289a75=_0x296a37+_0xb20b('0xaa');socket['emit'](_0xb20b('0x30')+_0x296a37+_0xb20b('0xb2'),{'UserId':_0x3dad11,['queueField']:_0xca57c2[_0x1b3b72]['id']});}})[_0xb20b('0x19')](respondWithStatusCode(_0x9cf152,null))[_0xb20b('0x22')](APIHandleError(_0x9cf152));};exports[_0xb20b('0x120')]=function(_0x1e38fb,_0x36c808){var _0x190257={};var _0x5d3a27={};var _0x4a8cb2;var _0x486474;return db[_0xb20b('0x3f')]['findOne']({'where':{'id':_0x1e38fb['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x36c808,null))[_0xb20b('0x19')](function(_0x16526e){if(_0x16526e){_0x4a8cb2=_0x16526e;_0x5d3a27[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0xd1')][_0xb20b('0x40')]);_0x5d3a27[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x1e38fb[_0xb20b('0x47')]);_0x5d3a27[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x5d3a27[_0xb20b('0x5a')],_0x5d3a27[_0xb20b('0x47')]);_0x190257[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x5d3a27[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x1e38fb[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x190257[_0xb20b('0x4d')]=_0x190257[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x190257[_0xb20b('0x4d')]:_0x5d3a27[_0xb20b('0x5a')];_0x190257[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x1e38fb[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x190257[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x1e38fb['query'],_0x5d3a27['filters']));if(_0x1e38fb[_0xb20b('0x47')][_0xb20b('0x33')]){_0x190257[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x190257[_0xb20b('0x46')],{'$or':_['map'](_0x190257[_0xb20b('0x4d')],function(_0x1a2a99){var _0x56e84b={};_0x56e84b[_0x1a2a99]={'$like':'%'+_0x1e38fb['query'][_0xb20b('0x33')]+'%'};return _0x56e84b;})});}_0x190257=_[_0xb20b('0xcf')]({},_0x190257,_0x1e38fb[_0xb20b('0x60')]);return _0x4a8cb2[_0xb20b('0x120')](_0x190257);}})[_0xb20b('0x19')](function(_0x4d10e3){if(_0x4d10e3){_0x486474=_0x4d10e3[_0xb20b('0x5f')];if(!_0x1e38fb[_0xb20b('0x47')][_0xb20b('0xd7')]('nolimit')){_0x190257[_0xb20b('0x26')]=qs['limit'](_0x1e38fb[_0xb20b('0x47')]['limit']);_0x190257[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x1e38fb[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x4a8cb2['getLists'](_0x190257);}})['then'](function(_0x2b84c8){if(_0x2b84c8){return _0x2b84c8?{'count':_0x486474,'rows':_0x2b84c8}:null;}})['then'](respondWithResult(_0x36c808,null))[_0xb20b('0x22')](handleError(_0x36c808,null));};exports['getAgents']=function(_0x4dea39,_0x222de0){var _0x28e9b5={};var _0x3b159a={};var _0x3075ee;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x4dea39['params']['id']}})['then'](handleEntityNotFound(_0x222de0,null))['then'](function(_0x411c2f){if(_0x411c2f){_0x3075ee=_0x411c2f;_0x3b159a['model']=_[_0xb20b('0x5c')](db[_0xb20b('0x3f')][_0xb20b('0x40')]);_0x3b159a['query']=_[_0xb20b('0x5c')](_0x4dea39[_0xb20b('0x47')]);_0x3b159a[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x3b159a['model'],_0x3b159a[_0xb20b('0x47')]);_0x28e9b5[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x3b159a['model'],qs[_0xb20b('0x5e')](_0x4dea39[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x28e9b5[_0xb20b('0x4d')]=_0x28e9b5[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x28e9b5['attributes']:_0x3b159a['model'];_0x28e9b5[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x4dea39[_0xb20b('0x47')]['sort']);_0x28e9b5[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x4dea39[_0xb20b('0x47')],_0x3b159a[_0xb20b('0xcc')]));if(_0x4dea39[_0xb20b('0x47')][_0xb20b('0x33')]){_0x28e9b5['where']=_[_0xb20b('0xcf')](_0x28e9b5[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x28e9b5[_0xb20b('0x4d')],function(_0x29ee93){var _0x504880={};_0x504880[_0x29ee93]={'$like':'%'+_0x4dea39[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x504880;})});}_0x28e9b5['model']=db[_0xb20b('0x3f')];_0x28e9b5['as']=_0xb20b('0x31');_0x28e9b5=_[_0xb20b('0xcf')]({},_0x28e9b5,_0x4dea39[_0xb20b('0x60')]);return _0x3075ee[_0xb20b('0xfb')]({'include':[_0x28e9b5]});}})[_0xb20b('0x19')](function(_0x350401){if(_0x350401){var _0x56fe0f={},_0x112da8=[];for(var _0x12a971=0x0;_0x12a971<_0x350401[_0xb20b('0x5f')];_0x12a971+=0x1){for(var _0x2e3182=0x0,_0xbf4393;_0x2e3182<_0x350401[_0x12a971][_0xb20b('0x31')][_0xb20b('0x5f')];_0x2e3182+=0x1){_0xbf4393=_0x350401[_0x12a971]['Agents'][_0x2e3182]['get']({'plain':!![]});_0x56fe0f[_0xbf4393['id']]=_0xbf4393;}}_0x56fe0f=_[_0xb20b('0x121')](_0x56fe0f);for(var _0x2378d1=qs['offset'](_0x4dea39[_0xb20b('0x47')][_0xb20b('0x25')]);_0x2378d1<_0x56fe0f[_0xb20b('0x5f')]&&_0x112da8[_0xb20b('0x5f')]<qs['limit'](_0x4dea39[_0xb20b('0x47')][_0xb20b('0x26')]);_0x2378d1+=0x1){if(_0x56fe0f[_0x2378d1]){_0x112da8[_0xb20b('0x4e')](_0x56fe0f[_0x2378d1]);}}return{'count':_0x56fe0f[_0xb20b('0x5f')],'rows':_0x112da8};}})[_0xb20b('0x19')](respondWithResult(_0x222de0,null))[_0xb20b('0x22')](handleError(_0x222de0,null));};exports[_0xb20b('0xb3')]=function(_0x1f9679,_0xfff5c3){if(_0x1f9679[_0xb20b('0x30')]['id']==_0x1f9679['params']['id']){return _0xfff5c3[_0xb20b('0x24')](0x1f4)[_0xb20b('0x3e')]({'message':_0xb20b('0x122')});}return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x1f9679[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0xfff5c3,null))[_0xb20b('0x19')](removeEntity(_0xfff5c3,null))[_0xb20b('0x22')](handleError(_0xfff5c3,null));};exports['addChatInteractions']=function(_0x3d86c3,_0x1e7b0c){return db['User'][_0xb20b('0x39')]({'where':{'id':_0x3d86c3[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x1e7b0c,null))[_0xb20b('0x19')](function(_0x520543){if(_0x520543){return _0x520543[_0xb20b('0x123')](_0x3d86c3[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x3d86c3[_0xb20b('0x63')],['ids','id'])||{})[_0xb20b('0xa7')](function(){for(var _0x4b7b6f=0x0;_0x4b7b6f<_0x3d86c3[_0xb20b('0x63')]['ids']['length'];_0x4b7b6f+=0x1){socket[_0xb20b('0xb1')](_0xb20b('0x124'),{'ChatInteractionId':Number(_0x3d86c3[_0xb20b('0x63')][_0xb20b('0x66')][_0x4b7b6f]),'UserId':Number(_0x3d86c3[_0xb20b('0x59')]['id'])});}return _0x3d86c3['body'][_0xb20b('0x66')];});}})[_0xb20b('0x19')](respondWithResult(_0x1e7b0c,null))[_0xb20b('0x22')](handleError(_0x1e7b0c,null));};exports[_0xb20b('0x125')]=function(_0x566717,_0x3af656){return db['User']['find']({'where':{'id':_0x566717[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x3af656,null))[_0xb20b('0x19')](function(_0x2b5bf6){if(_0x2b5bf6){return _0x2b5bf6['removeChatInteractions'](_0x566717[_0xb20b('0x47')][_0xb20b('0x66')])[_0xb20b('0x19')](function(){if(_['isArray'](_0x566717['query']['ids'])){for(var _0x46dabf=0x0;_0x46dabf<_0x566717[_0xb20b('0x47')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x46dabf+=0x1){socket['emit'](_0xb20b('0x126'),{'ChatInteractionId':Number(_0x566717[_0xb20b('0x47')][_0xb20b('0x66')][_0x46dabf]),'UserId':Number(_0x566717[_0xb20b('0x59')]['id'])});}}else{socket['emit'](_0xb20b('0x126'),{'ChatInteractionId':Number(_0x566717['query'][_0xb20b('0x66')]),'UserId':Number(_0x566717[_0xb20b('0x59')]['id'])});}});}})[_0xb20b('0x19')](respondWithStatusCode(_0x3af656,null))['catch'](handleError(_0x3af656,null));};exports[_0xb20b('0x127')]=function(_0x30e9ac,_0x596e14){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x30e9ac[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x596e14,null))[_0xb20b('0x19')](function(_0x26630e){if(_0x26630e){return _0x26630e['addMailInteractions'](_0x30e9ac[_0xb20b('0x63')][_0xb20b('0x66')],_['omit'](_0x30e9ac[_0xb20b('0x63')],['ids','id'])||{})['spread'](function(){for(var _0xb5ae6c=0x0;_0xb5ae6c<_0x30e9ac[_0xb20b('0x63')][_0xb20b('0x66')][_0xb20b('0x5f')];_0xb5ae6c+=0x1){socket[_0xb20b('0xb1')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x30e9ac[_0xb20b('0x63')][_0xb20b('0x66')][_0xb5ae6c]),'UserId':Number(_0x30e9ac[_0xb20b('0x59')]['id'])});}return _0x30e9ac[_0xb20b('0x63')][_0xb20b('0x66')];});}})[_0xb20b('0x19')](respondWithResult(_0x596e14,null))[_0xb20b('0x22')](handleError(_0x596e14,null));};exports['removeMailInteractions']=function(_0x3dc918,_0x375d41){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x3dc918[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x375d41,null))[_0xb20b('0x19')](function(_0x1f467a){if(_0x1f467a){return _0x1f467a[_0xb20b('0x128')](_0x3dc918['query'][_0xb20b('0x66')])[_0xb20b('0x19')](function(){if(_['isArray'](_0x3dc918[_0xb20b('0x47')][_0xb20b('0x66')])){for(var _0x29851f=0x0;_0x29851f<_0x3dc918[_0xb20b('0x47')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x29851f+=0x1){socket[_0xb20b('0xb1')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x3dc918[_0xb20b('0x47')][_0xb20b('0x66')][_0x29851f]),'UserId':Number(_0x3dc918[_0xb20b('0x59')]['id'])});}}else{socket[_0xb20b('0xb1')](_0xb20b('0x129'),{'MailInteractionId':Number(_0x3dc918[_0xb20b('0x47')][_0xb20b('0x66')]),'UserId':Number(_0x3dc918[_0xb20b('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x375d41,null))[_0xb20b('0x22')](handleError(_0x375d41,null));};exports[_0xb20b('0x12a')]=function(_0x40e372,_0x5ad170){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x40e372[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x5ad170,null))[_0xb20b('0x19')](function(_0x1311f4){if(_0x1311f4){return _0x1311f4[_0xb20b('0x12a')](_0x40e372['body'][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x40e372[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{})[_0xb20b('0xa7')](function(){for(var _0x3c1640=0x0;_0x3c1640<_0x40e372[_0xb20b('0x63')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x3c1640+=0x1){socket['emit'](_0xb20b('0x12b'),{'FaxInteractionId':Number(_0x40e372[_0xb20b('0x63')][_0xb20b('0x66')][_0x3c1640]),'UserId':Number(_0x40e372[_0xb20b('0x59')]['id'])});}return _0x40e372['body'][_0xb20b('0x66')];});}})[_0xb20b('0x19')](respondWithResult(_0x5ad170,null))[_0xb20b('0x22')](handleError(_0x5ad170,null));};exports['removeFaxInteractions']=function(_0xdfed73,_0x271842){return db['User']['find']({'where':{'id':_0xdfed73[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x271842,null))['then'](function(_0x4f018d){if(_0x4f018d){return _0x4f018d['removeFaxInteractions'](_0xdfed73[_0xb20b('0x47')][_0xb20b('0x66')])[_0xb20b('0x19')](function(){if(_['isArray'](_0xdfed73[_0xb20b('0x47')]['ids'])){for(var _0x5c9d70=0x0;_0x5c9d70<_0xdfed73['query'][_0xb20b('0x66')][_0xb20b('0x5f')];_0x5c9d70+=0x1){socket['emit'](_0xb20b('0x12c'),{'FaxInteractionId':Number(_0xdfed73[_0xb20b('0x47')][_0xb20b('0x66')][_0x5c9d70]),'UserId':Number(_0xdfed73[_0xb20b('0x59')]['id'])});}}else{socket[_0xb20b('0xb1')](_0xb20b('0x12c'),{'FaxInteractionId':Number(_0xdfed73[_0xb20b('0x47')][_0xb20b('0x66')]),'UserId':Number(_0xdfed73[_0xb20b('0x59')]['id'])});}});}})[_0xb20b('0x19')](respondWithStatusCode(_0x271842,null))[_0xb20b('0x22')](handleError(_0x271842,null));};exports[_0xb20b('0x12d')]=function(_0x351ea2,_0x2d77c0){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x351ea2['params']['id']}})['then'](handleEntityNotFound(_0x2d77c0,null))[_0xb20b('0x19')](function(_0x31fd4f){if(_0x31fd4f){return _0x31fd4f[_0xb20b('0x12d')](_0x351ea2[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x351ea2[_0xb20b('0x63')],['ids','id'])||{})[_0xb20b('0xa7')](function(){for(var _0x3dafa2=0x0;_0x3dafa2<_0x351ea2[_0xb20b('0x63')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x3dafa2+=0x1){socket[_0xb20b('0xb1')](_0xb20b('0x12e'),{'SmsInteractionId':Number(_0x351ea2[_0xb20b('0x63')]['ids'][_0x3dafa2]),'UserId':Number(_0x351ea2[_0xb20b('0x59')]['id'])});}return _0x351ea2[_0xb20b('0x63')][_0xb20b('0x66')];});}})['then'](respondWithResult(_0x2d77c0,null))[_0xb20b('0x22')](handleError(_0x2d77c0,null));};exports[_0xb20b('0x12f')]=function(_0xe7cb4c,_0x49af32){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0xe7cb4c[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x49af32,null))['then'](function(_0x35528f){if(_0x35528f){return _0x35528f['removeSmsInteractions'](_0xe7cb4c[_0xb20b('0x47')][_0xb20b('0x66')])[_0xb20b('0x19')](function(){if(_[_0xb20b('0x11b')](_0xe7cb4c[_0xb20b('0x47')][_0xb20b('0x66')])){for(var _0x1c42da=0x0;_0x1c42da<_0xe7cb4c['query']['ids'][_0xb20b('0x5f')];_0x1c42da+=0x1){socket['emit'](_0xb20b('0x130'),{'SmsInteractionId':Number(_0xe7cb4c[_0xb20b('0x47')][_0xb20b('0x66')][_0x1c42da]),'UserId':Number(_0xe7cb4c[_0xb20b('0x59')]['id'])});}}else{socket[_0xb20b('0xb1')](_0xb20b('0x130'),{'SmsInteractionId':Number(_0xe7cb4c[_0xb20b('0x47')]['ids']),'UserId':Number(_0xe7cb4c[_0xb20b('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x49af32,null))[_0xb20b('0x22')](handleError(_0x49af32,null));};exports[_0xb20b('0x131')]=function(_0x1a8e2b,_0x366910){return db['User']['find']({'where':{'id':_0x1a8e2b[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x366910,null))['then'](function(_0x505204){if(_0x505204){return _0x505204[_0xb20b('0x131')](_0x1a8e2b['body'][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x1a8e2b[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{})['spread'](function(){for(var _0x5d03df=0x0;_0x5d03df<_0x1a8e2b[_0xb20b('0x63')]['ids'][_0xb20b('0x5f')];_0x5d03df+=0x1){socket[_0xb20b('0xb1')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x1a8e2b[_0xb20b('0x63')][_0xb20b('0x66')][_0x5d03df]),'UserId':Number(_0x1a8e2b[_0xb20b('0x59')]['id'])});}return _0x1a8e2b['body']['ids'];});}})['then'](respondWithResult(_0x366910,null))[_0xb20b('0x22')](handleError(_0x366910,null));};exports[_0xb20b('0x132')]=function(_0x222e24,_0x28d8a2){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x222e24[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x28d8a2,null))[_0xb20b('0x19')](function(_0x429efd){if(_0x429efd){return _0x429efd[_0xb20b('0x132')](_0x222e24[_0xb20b('0x47')][_0xb20b('0x66')])[_0xb20b('0x19')](function(){if(_[_0xb20b('0x11b')](_0x222e24[_0xb20b('0x47')][_0xb20b('0x66')])){for(var _0x54e510=0x0;_0x54e510<_0x222e24[_0xb20b('0x47')][_0xb20b('0x66')][_0xb20b('0x5f')];_0x54e510+=0x1){socket[_0xb20b('0xb1')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x222e24[_0xb20b('0x47')][_0xb20b('0x66')][_0x54e510]),'UserId':Number(_0x222e24[_0xb20b('0x59')]['id'])});}}else{socket[_0xb20b('0xb1')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x222e24[_0xb20b('0x47')][_0xb20b('0x66')]),'UserId':Number(_0x222e24['params']['id'])});}});}})[_0xb20b('0x19')](respondWithStatusCode(_0x28d8a2,null))[_0xb20b('0x22')](handleError(_0x28d8a2,null));};exports[_0xb20b('0x133')]=function(_0x1ecbed,_0x124b95){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x1ecbed['params']['id']}})['then'](handleEntityNotFound(_0x124b95,null))[_0xb20b('0x19')](function(_0x1b886f){if(_0x1b886f){return _0x1b886f['addWhatsappInteractions'](_0x1ecbed[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x1ecbed[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{})[_0xb20b('0xa7')](function(){for(var _0x3c9e62=0x0;_0x3c9e62<_0x1ecbed['body'][_0xb20b('0x66')]['length'];_0x3c9e62+=0x1){socket[_0xb20b('0xb1')](_0xb20b('0x134'),{'WhatsappInteractionId':Number(_0x1ecbed['body'][_0xb20b('0x66')][_0x3c9e62]),'UserId':Number(_0x1ecbed[_0xb20b('0x59')]['id'])});}return _0x1ecbed[_0xb20b('0x63')][_0xb20b('0x66')];});}})['then'](respondWithResult(_0x124b95,null))[_0xb20b('0x22')](handleError(_0x124b95,null));};exports[_0xb20b('0x135')]=function(_0xa897ae,_0x419de8){return db['User'][_0xb20b('0x39')]({'where':{'id':_0xa897ae[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x419de8,null))[_0xb20b('0x19')](function(_0x3c95e0){if(_0x3c95e0){return _0x3c95e0[_0xb20b('0x135')](_0xa897ae[_0xb20b('0x47')][_0xb20b('0x66')]);}})[_0xb20b('0x19')](respondWithStatusCode(_0x419de8,null))[_0xb20b('0x22')](handleError(_0x419de8,null));};exports[_0xb20b('0x136')]=function(_0x2e64a5,_0x5d1cc7){var _0x49dcb7={};var _0xa1dc93={};var _0x1215e9;var _0x1aee0a;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x2e64a5[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x5d1cc7,null))[_0xb20b('0x19')](function(_0x54e3b0){if(_0x54e3b0){_0x1215e9=_0x54e3b0;_0xa1dc93['model']=_[_0xb20b('0x5c')](db['VoicePrefix']['rawAttributes']);_0xa1dc93[_0xb20b('0x47')]=_['keys'](_0x2e64a5[_0xb20b('0x47')]);_0xa1dc93['filters']=_[_0xb20b('0x5d')](_0xa1dc93['model'],_0xa1dc93[_0xb20b('0x47')]);_0x49dcb7['attributes']=_[_0xb20b('0x5d')](_0xa1dc93['model'],qs[_0xb20b('0x5e')](_0x2e64a5[_0xb20b('0x47')]['fields']));_0x49dcb7[_0xb20b('0x4d')]=_0x49dcb7[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x49dcb7[_0xb20b('0x4d')]:_0xa1dc93['model'];_0x49dcb7[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x2e64a5[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x49dcb7[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x2e64a5['query'],_0xa1dc93[_0xb20b('0xcc')]));if(_0x2e64a5[_0xb20b('0x47')]['filter']){_0x49dcb7['where']=_[_0xb20b('0xcf')](_0x49dcb7[_0xb20b('0x46')],{'$or':_['map'](_0x49dcb7[_0xb20b('0x4d')],function(_0x3a5fa1){var _0x3e670a={};_0x3e670a[_0x3a5fa1]={'$like':'%'+_0x2e64a5[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x3e670a;})});}_0x49dcb7=_[_0xb20b('0xcf')]({},_0x49dcb7,_0x2e64a5['options']);return _0x1215e9[_0xb20b('0x136')](_0x49dcb7);}})[_0xb20b('0x19')](function(_0x6e1d86){if(_0x6e1d86){_0x1aee0a=_0x6e1d86['length'];if(!_0x2e64a5[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x49dcb7[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x2e64a5[_0xb20b('0x47')][_0xb20b('0x26')]);_0x49dcb7[_0xb20b('0x25')]=qs['offset'](_0x2e64a5[_0xb20b('0x47')]['offset']);}return _0x1215e9[_0xb20b('0x136')](_0x49dcb7);}})[_0xb20b('0x19')](function(_0xa2419c){if(_0xa2419c){return _0xa2419c?{'count':_0x1aee0a,'rows':_0xa2419c}:null;}})['then'](respondWithResult(_0x5d1cc7,null))[_0xb20b('0x22')](handleError(_0x5d1cc7,null));};exports[_0xb20b('0x137')]=function(_0x2ca894,_0x423f88){var _0x788c12={};var _0xadefa1={};var _0x2bb2a4;var _0x52f36c;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x2ca894[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x423f88,null))[_0xb20b('0x19')](function(_0x156430){if(_0x156430){_0x2bb2a4=_0x156430;_0xadefa1[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0x138')][_0xb20b('0x40')]);_0xadefa1['query']=_['keys'](_0x2ca894[_0xb20b('0x47')]);_0xadefa1[_0xb20b('0xcc')]=_['intersection'](_0xadefa1[_0xb20b('0x5a')],_0xadefa1['query']);_0x788c12[_0xb20b('0x4d')]=_['intersection'](_0xadefa1[_0xb20b('0x5a')],qs['fields'](_0x2ca894[_0xb20b('0x47')]['fields']));_0x788c12[_0xb20b('0x4d')]=_0x788c12[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x788c12[_0xb20b('0x4d')]:_0xadefa1[_0xb20b('0x5a')];_0x788c12['order']=qs['sort'](_0x2ca894['query'][_0xb20b('0xcd')]);_0x788c12[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_['pick'](_0x2ca894[_0xb20b('0x47')],_0xadefa1[_0xb20b('0xcc')]));if(_0x2ca894[_0xb20b('0x47')][_0xb20b('0x33')]){_0x788c12[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x788c12[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x788c12[_0xb20b('0x4d')],function(_0x597ea0){var _0x46101f={};_0x46101f[_0x597ea0]={'$like':'%'+_0x2ca894['query']['filter']+'%'};return _0x46101f;})});}_0x788c12=_['merge']({},_0x788c12,_0x2ca894[_0xb20b('0x60')]);return _0x2bb2a4[_0xb20b('0x137')](_0x788c12);}})[_0xb20b('0x19')](function(_0x4103d4){if(_0x4103d4){_0x52f36c=_0x4103d4['length'];if(!_0x2ca894[_0xb20b('0x47')]['hasOwnProperty'](_0xb20b('0xd8'))){_0x788c12[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x2ca894[_0xb20b('0x47')][_0xb20b('0x26')]);_0x788c12['offset']=qs['offset'](_0x2ca894[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x2bb2a4[_0xb20b('0x137')](_0x788c12);}})[_0xb20b('0x19')](function(_0x37948c){if(_0x37948c){return _0x37948c?{'count':_0x52f36c,'rows':_0x37948c}:null;}})[_0xb20b('0x19')](respondWithResult(_0x423f88,null))[_0xb20b('0x22')](handleError(_0x423f88,null));};exports[_0xb20b('0x139')]=function(_0x3bac91,_0x198ffc){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x3bac91[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x198ffc,null))[_0xb20b('0x19')](function(_0x27447e){if(_0x27447e){return _0x27447e['addFaxAccounts'](_0x3bac91[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x3bac91['body'],[_0xb20b('0x66'),'id'])||{});}})[_0xb20b('0x19')](respondWithResult(_0x198ffc,null))[_0xb20b('0x22')](handleError(_0x198ffc,null));};exports['removeFaxAccounts']=function(_0x202b92,_0x5e0f6b){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x202b92[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x5e0f6b,null))[_0xb20b('0x19')](function(_0xb2d2f4){if(_0xb2d2f4){return _0xb2d2f4[_0xb20b('0x13a')](_0x202b92[_0xb20b('0x47')][_0xb20b('0x66')]);}})[_0xb20b('0x19')](respondWithStatusCode(_0x5e0f6b,null))[_0xb20b('0x22')](handleError(_0x5e0f6b,null));};exports[_0xb20b('0x13b')]=function(_0x121770,_0x1a4fd1){var _0x286b4c={};var _0x5a95bd={};var _0x49af0b;var _0x261ef1;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x121770[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x1a4fd1,null))[_0xb20b('0x19')](function(_0x3a28b0){if(_0x3a28b0){_0x49af0b=_0x3a28b0;_0x5a95bd[_0xb20b('0x5a')]=_['keys'](db['MailAccount'][_0xb20b('0x40')]);_0x5a95bd[_0xb20b('0x47')]=_['keys'](_0x121770[_0xb20b('0x47')]);_0x5a95bd[_0xb20b('0xcc')]=_['intersection'](_0x5a95bd['model'],_0x5a95bd[_0xb20b('0x47')]);_0x286b4c[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x5a95bd[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x121770['query'][_0xb20b('0x5e')]));_0x286b4c['attributes']=_0x286b4c[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x286b4c[_0xb20b('0x4d')]:_0x5a95bd[_0xb20b('0x5a')];_0x286b4c[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x121770[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x286b4c[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x121770[_0xb20b('0x47')],_0x5a95bd['filters']));if(_0x121770[_0xb20b('0x47')][_0xb20b('0x33')]){_0x286b4c[_0xb20b('0x46')]=_['merge'](_0x286b4c[_0xb20b('0x46')],{'$or':_['map'](_0x286b4c[_0xb20b('0x4d')],function(_0x41c6fb){var _0x4e802f={};_0x4e802f[_0x41c6fb]={'$like':'%'+_0x121770[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x4e802f;})});}_0x286b4c=_[_0xb20b('0xcf')]({},_0x286b4c,_0x121770[_0xb20b('0x60')]);return _0x49af0b[_0xb20b('0x13b')](_0x286b4c);}})[_0xb20b('0x19')](function(_0x1630e1){if(_0x1630e1){_0x261ef1=_0x1630e1[_0xb20b('0x5f')];if(!_0x121770[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x286b4c['limit']=qs[_0xb20b('0x26')](_0x121770['query']['limit']);_0x286b4c['offset']=qs[_0xb20b('0x25')](_0x121770['query'][_0xb20b('0x25')]);}return _0x49af0b[_0xb20b('0x13b')](_0x286b4c);}})['then'](function(_0x13aa36){if(_0x13aa36){return _0x13aa36?{'count':_0x261ef1,'rows':_0x13aa36}:null;}})[_0xb20b('0x19')](respondWithResult(_0x1a4fd1,null))['catch'](handleError(_0x1a4fd1,null));};exports[_0xb20b('0x13c')]=function(_0x2b318e,_0x3ed300){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x2b318e[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x3ed300,null))['then'](function(_0x26e117){if(_0x26e117){return _0x26e117[_0xb20b('0x13c')](_0x2b318e[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x2b318e['body'],[_0xb20b('0x66'),'id'])||{});}})[_0xb20b('0x19')](respondWithResult(_0x3ed300,null))['catch'](handleError(_0x3ed300,null));};exports[_0xb20b('0x13d')]=function(_0x459e32,_0x435c2a){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x459e32['params']['id']}})['then'](handleEntityNotFound(_0x435c2a,null))[_0xb20b('0x19')](function(_0x31efb0){if(_0x31efb0){return _0x31efb0[_0xb20b('0x13d')](_0x459e32[_0xb20b('0x47')][_0xb20b('0x66')]);}})[_0xb20b('0x19')](respondWithStatusCode(_0x435c2a,null))[_0xb20b('0x22')](handleError(_0x435c2a,null));};exports[_0xb20b('0x13e')]=function(_0x4782df,_0x35a801){var _0x1dac58={};var _0x3ad29e={};var _0x586399;var _0x30d1c8;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x4782df[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x35a801,null))[_0xb20b('0x19')](function(_0x3f019f){if(_0x3f019f){_0x586399=_0x3f019f;_0x3ad29e[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0x13f')][_0xb20b('0x40')]);_0x3ad29e[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x4782df[_0xb20b('0x47')]);_0x3ad29e[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x3ad29e[_0xb20b('0x5a')],_0x3ad29e[_0xb20b('0x47')]);_0x1dac58['attributes']=_[_0xb20b('0x5d')](_0x3ad29e[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x4782df[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x1dac58['attributes']=_0x1dac58['attributes'][_0xb20b('0x5f')]?_0x1dac58[_0xb20b('0x4d')]:_0x3ad29e[_0xb20b('0x5a')];_0x1dac58[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x4782df[_0xb20b('0x47')]['sort']);_0x1dac58['where']=qs['filters'](_[_0xb20b('0xce')](_0x4782df['query'],_0x3ad29e[_0xb20b('0xcc')]));if(_0x4782df['query'][_0xb20b('0x33')]){_0x1dac58[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x1dac58['where'],{'$or':_['map'](_0x1dac58['attributes'],function(_0x16a4a1){var _0x51127c={};_0x51127c[_0x16a4a1]={'$like':'%'+_0x4782df['query'][_0xb20b('0x33')]+'%'};return _0x51127c;})});}_0x1dac58=_[_0xb20b('0xcf')]({},_0x1dac58,_0x4782df['options']);return _0x586399['getOpenchannelAccounts'](_0x1dac58);}})['then'](function(_0x4f3477){if(_0x4f3477){_0x30d1c8=_0x4f3477[_0xb20b('0x5f')];if(!_0x4782df[_0xb20b('0x47')]['hasOwnProperty']('nolimit')){_0x1dac58[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x4782df['query'][_0xb20b('0x26')]);_0x1dac58[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x4782df['query'][_0xb20b('0x25')]);}return _0x586399[_0xb20b('0x13e')](_0x1dac58);}})[_0xb20b('0x19')](function(_0xa295c){if(_0xa295c){return _0xa295c?{'count':_0x30d1c8,'rows':_0xa295c}:null;}})['then'](respondWithResult(_0x35a801,null))[_0xb20b('0x22')](handleError(_0x35a801,null));};exports[_0xb20b('0x140')]=function(_0x49c5e5,_0x4d4827){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x49c5e5[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x4d4827,null))['then'](function(_0x486820){if(_0x486820){return _0x486820[_0xb20b('0x140')](_0x49c5e5[_0xb20b('0x63')][_0xb20b('0x66')],_['omit'](_0x49c5e5[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{});}})['then'](respondWithResult(_0x4d4827,null))[_0xb20b('0x22')](handleError(_0x4d4827,null));};exports[_0xb20b('0x141')]=function(_0x27faa2,_0x1e95b7){return db['User'][_0xb20b('0x39')]({'where':{'id':_0x27faa2[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x1e95b7,null))[_0xb20b('0x19')](function(_0x110da0){if(_0x110da0){return _0x110da0[_0xb20b('0x141')](_0x27faa2[_0xb20b('0x47')]['ids']);}})[_0xb20b('0x19')](respondWithStatusCode(_0x1e95b7,null))[_0xb20b('0x22')](handleError(_0x1e95b7,null));};exports[_0xb20b('0x142')]=function(_0x5cb16b,_0x769c11){var _0x23cd28={};var _0xd559de={};var _0x2cdae4;var _0x232bd6;return db[_0xb20b('0x3f')][_0xb20b('0x9a')]({'where':{'id':_0x5cb16b[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x769c11,null))[_0xb20b('0x19')](function(_0x35d7c0){if(_0x35d7c0){_0x2cdae4=_0x35d7c0;_0xd559de[_0xb20b('0x5a')]=_['keys'](db['SmsAccount'][_0xb20b('0x40')]);_0xd559de['query']=_[_0xb20b('0x5c')](_0x5cb16b['query']);_0xd559de[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0xd559de[_0xb20b('0x5a')],_0xd559de[_0xb20b('0x47')]);_0x23cd28[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0xd559de[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x5cb16b[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x23cd28[_0xb20b('0x4d')]=_0x23cd28[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x23cd28['attributes']:_0xd559de[_0xb20b('0x5a')];_0x23cd28[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x5cb16b[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x23cd28[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_['pick'](_0x5cb16b[_0xb20b('0x47')],_0xd559de[_0xb20b('0xcc')]));if(_0x5cb16b['query']['filter']){_0x23cd28[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x23cd28[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x23cd28[_0xb20b('0x4d')],function(_0x122de9){var _0x1ac0fb={};_0x1ac0fb[_0x122de9]={'$like':'%'+_0x5cb16b[_0xb20b('0x47')]['filter']+'%'};return _0x1ac0fb;})});}_0x23cd28=_[_0xb20b('0xcf')]({},_0x23cd28,_0x5cb16b['options']);return _0x2cdae4[_0xb20b('0x142')](_0x23cd28);}})[_0xb20b('0x19')](function(_0xcada12){if(_0xcada12){_0x232bd6=_0xcada12[_0xb20b('0x5f')];if(!_0x5cb16b[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x23cd28[_0xb20b('0x26')]=qs['limit'](_0x5cb16b[_0xb20b('0x47')][_0xb20b('0x26')]);_0x23cd28[_0xb20b('0x25')]=qs['offset'](_0x5cb16b[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x2cdae4[_0xb20b('0x142')](_0x23cd28);}})['then'](function(_0x585e2a){if(_0x585e2a){return _0x585e2a?{'count':_0x232bd6,'rows':_0x585e2a}:null;}})[_0xb20b('0x19')](respondWithResult(_0x769c11,null))['catch'](handleError(_0x769c11,null));};exports[_0xb20b('0x143')]=function(_0x10695e,_0x55c17a){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x10695e[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x55c17a,null))[_0xb20b('0x19')](function(_0x6b13e8){if(_0x6b13e8){return _0x6b13e8['addSmsAccounts'](_0x10695e[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x10695e[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{});}})['then'](respondWithResult(_0x55c17a,null))[_0xb20b('0x22')](handleError(_0x55c17a,null));};exports[_0xb20b('0x144')]=function(_0x13293c,_0x2d4189){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x13293c[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x2d4189,null))['then'](function(_0x444598){if(_0x444598){return _0x444598['removeSmsAccounts'](_0x13293c[_0xb20b('0x47')][_0xb20b('0x66')]);}})['then'](respondWithStatusCode(_0x2d4189,null))['catch'](handleError(_0x2d4189,null));};exports['getChatWebsites']=function(_0x3de589,_0x325371){var _0x5410d0={};var _0x5c6858={};var _0x313e02;var _0x8c5910;return db['User'][_0xb20b('0x9a')]({'where':{'id':_0x3de589[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x325371,null))['then'](function(_0x284be1){if(_0x284be1){_0x313e02=_0x284be1;_0x5c6858['model']=_['keys'](db[_0xb20b('0x145')][_0xb20b('0x40')]);_0x5c6858[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x3de589[_0xb20b('0x47')]);_0x5c6858[_0xb20b('0xcc')]=_[_0xb20b('0x5d')](_0x5c6858[_0xb20b('0x5a')],_0x5c6858[_0xb20b('0x47')]);_0x5410d0[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x5c6858[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x3de589[_0xb20b('0x47')][_0xb20b('0x5e')]));_0x5410d0[_0xb20b('0x4d')]=_0x5410d0[_0xb20b('0x4d')][_0xb20b('0x5f')]?_0x5410d0[_0xb20b('0x4d')]:_0x5c6858[_0xb20b('0x5a')];_0x5410d0[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0x3de589['query'][_0xb20b('0xcd')]);_0x5410d0[_0xb20b('0x46')]=qs['filters'](_[_0xb20b('0xce')](_0x3de589[_0xb20b('0x47')],_0x5c6858['filters']));if(_0x3de589[_0xb20b('0x47')][_0xb20b('0x33')]){_0x5410d0[_0xb20b('0x46')]=_['merge'](_0x5410d0[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x5410d0['attributes'],function(_0x5721aa){var _0x7516d0={};_0x7516d0[_0x5721aa]={'$like':'%'+_0x3de589['query']['filter']+'%'};return _0x7516d0;})});}_0x5410d0=_['merge']({},_0x5410d0,_0x3de589[_0xb20b('0x60')]);return _0x313e02[_0xb20b('0x146')](_0x5410d0);}})[_0xb20b('0x19')](function(_0xfe1356){if(_0xfe1356){_0x8c5910=_0xfe1356[_0xb20b('0x5f')];if(!_0x3de589[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x5410d0[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x3de589[_0xb20b('0x47')]['limit']);_0x5410d0[_0xb20b('0x25')]=qs['offset'](_0x3de589['query'][_0xb20b('0x25')]);}return _0x313e02['getChatWebsites'](_0x5410d0);}})['then'](function(_0x2310ff){if(_0x2310ff){return _0x2310ff?{'count':_0x8c5910,'rows':_0x2310ff}:null;}})[_0xb20b('0x19')](respondWithResult(_0x325371,null))[_0xb20b('0x22')](handleError(_0x325371,null));};exports[_0xb20b('0x147')]=function(_0x51d14f,_0x15bf45){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x51d14f[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x15bf45,null))[_0xb20b('0x19')](function(_0x4370bc){if(_0x4370bc){return _0x4370bc[_0xb20b('0x147')](_0x51d14f[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x51d14f[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{});}})[_0xb20b('0x19')](respondWithResult(_0x15bf45,null))[_0xb20b('0x22')](handleError(_0x15bf45,null));};exports[_0xb20b('0x148')]=function(_0x3280ab,_0x29054d){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x3280ab['params']['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x29054d,null))['then'](function(_0x4e635f){if(_0x4e635f){return _0x4e635f['removeChatWebsites'](_0x3280ab['query'][_0xb20b('0x66')]);}})['then'](respondWithStatusCode(_0x29054d,null))[_0xb20b('0x22')](handleError(_0x29054d,null));};exports[_0xb20b('0x149')]=function(_0xd4dfd0,_0x4e887d){var _0x4189d3={};var _0x22bbf8={};var _0x57fb2a;var _0x4c3d41;return db[_0xb20b('0x3f')]['findOne']({'where':{'id':_0xd4dfd0[_0xb20b('0x59')]['id']}})['then'](handleEntityNotFound(_0x4e887d,null))[_0xb20b('0x19')](function(_0x3a12d4){if(_0x3a12d4){_0x57fb2a=_0x3a12d4;_0x22bbf8[_0xb20b('0x5a')]=_[_0xb20b('0x5c')](db[_0xb20b('0x14a')]['rawAttributes']);_0x22bbf8[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0xd4dfd0[_0xb20b('0x47')]);_0x22bbf8['filters']=_[_0xb20b('0x5d')](_0x22bbf8[_0xb20b('0x5a')],_0x22bbf8[_0xb20b('0x47')]);_0x4189d3['attributes']=_[_0xb20b('0x5d')](_0x22bbf8[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0xd4dfd0['query']['fields']));_0x4189d3[_0xb20b('0x4d')]=_0x4189d3['attributes'][_0xb20b('0x5f')]?_0x4189d3[_0xb20b('0x4d')]:_0x22bbf8[_0xb20b('0x5a')];_0x4189d3[_0xb20b('0xdb')]=qs[_0xb20b('0xcd')](_0xd4dfd0[_0xb20b('0x47')]['sort']);_0x4189d3[_0xb20b('0x46')]=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0xd4dfd0[_0xb20b('0x47')],_0x22bbf8[_0xb20b('0xcc')]));if(_0xd4dfd0['query'][_0xb20b('0x33')]){_0x4189d3['where']=_[_0xb20b('0xcf')](_0x4189d3[_0xb20b('0x46')],{'$or':_[_0xb20b('0x35')](_0x4189d3[_0xb20b('0x4d')],function(_0x43454e){var _0x43a59a={};_0x43a59a[_0x43454e]={'$like':'%'+_0xd4dfd0[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x43a59a;})});}_0x4189d3=_[_0xb20b('0xcf')]({},_0x4189d3,_0xd4dfd0['options']);return _0x57fb2a[_0xb20b('0x149')](_0x4189d3);}})[_0xb20b('0x19')](function(_0x20c4af){if(_0x20c4af){_0x4c3d41=_0x20c4af[_0xb20b('0x5f')];if(!_0xd4dfd0[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x4189d3[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0xd4dfd0['query'][_0xb20b('0x26')]);_0x4189d3[_0xb20b('0x25')]=qs['offset'](_0xd4dfd0[_0xb20b('0x47')][_0xb20b('0x25')]);}return _0x57fb2a[_0xb20b('0x149')](_0x4189d3);}})['then'](function(_0x1b3437){if(_0x1b3437){return _0x1b3437?{'count':_0x4c3d41,'rows':_0x1b3437}:null;}})[_0xb20b('0x19')](respondWithResult(_0x4e887d,null))[_0xb20b('0x22')](handleError(_0x4e887d,null));};exports['addWhatsappAccounts']=function(_0x298e07,_0x17bc5f){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x298e07[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x17bc5f,null))[_0xb20b('0x19')](function(_0x43c3b3){if(_0x43c3b3){return _0x43c3b3[_0xb20b('0x14b')](_0x298e07[_0xb20b('0x63')][_0xb20b('0x66')],_[_0xb20b('0x67')](_0x298e07[_0xb20b('0x63')],[_0xb20b('0x66'),'id'])||{});}})[_0xb20b('0x19')](respondWithResult(_0x17bc5f,null))[_0xb20b('0x22')](handleError(_0x17bc5f,null));};exports[_0xb20b('0x14c')]=function(_0x54eba9,_0x385433){return db[_0xb20b('0x3f')][_0xb20b('0x39')]({'where':{'id':_0x54eba9['params']['id']}})['then'](handleEntityNotFound(_0x385433,null))[_0xb20b('0x19')](function(_0x1bfb1c){if(_0x1bfb1c){return _0x1bfb1c[_0xb20b('0x14c')](_0x54eba9[_0xb20b('0x47')][_0xb20b('0x66')]);}})[_0xb20b('0x19')](respondWithStatusCode(_0x385433,null))[_0xb20b('0x22')](handleError(_0x385433,null));};exports[_0xb20b('0x14d')]=function(_0x13bb64,_0x3ed017){var _0x431379={},_0x11db0f={},_0x45aa2c={'count':0x0,'rows':[]};var _0x3bc08c=db['CmHopper'][_0xb20b('0x40')];_0x11db0f['model']=_['keys'](_0x3bc08c);_0x11db0f[_0xb20b('0x47')]=_[_0xb20b('0x5c')](_0x13bb64['query']);_0x11db0f[_0xb20b('0xcc')]=_['intersection'](_0x11db0f[_0xb20b('0x5a')],_0x11db0f[_0xb20b('0x47')]);_0x11db0f[_0xb20b('0xcc')]=_[_0xb20b('0xca')](_0x11db0f['filters'],[_0xb20b('0x14e'),_0xb20b('0x14f'),_0xb20b('0x150'),_0xb20b('0x151'),'$lt',_0xb20b('0x152'),'$ne',_0xb20b('0x153'),_0xb20b('0x154'),'$between',_0xb20b('0x155'),_0xb20b('0x156'),'$notIn',_0xb20b('0x157'),_0xb20b('0x158'),_0xb20b('0x159'),_0xb20b('0x15a'),'$like','$overlap',_0xb20b('0x15b'),'$contained','$any']);_0x431379[_0xb20b('0x4d')]=_[_0xb20b('0x5d')](_0x11db0f[_0xb20b('0x5a')],qs[_0xb20b('0x5e')](_0x13bb64[_0xb20b('0x47')]['fields']));_0x431379['attributes']=_0x431379[_0xb20b('0x4d')]['length']?_0x431379['attributes']:_0x11db0f[_0xb20b('0x5a')];if(!_0x13bb64[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x431379[_0xb20b('0x26')]=qs['limit'](_0x13bb64['query'][_0xb20b('0x26')]);_0x431379[_0xb20b('0x25')]=qs['offset'](_0x13bb64[_0xb20b('0x47')][_0xb20b('0x25')]);}_0x431379['order']=qs[_0xb20b('0xcd')](_0x13bb64[_0xb20b('0x47')][_0xb20b('0xcd')]);_0x431379['where']=qs[_0xb20b('0xcc')](_[_0xb20b('0xce')](_0x13bb64[_0xb20b('0x47')],_0x11db0f[_0xb20b('0xcc')]));if(_0x13bb64['query'][_0xb20b('0x33')]){_0x431379[_0xb20b('0x46')]=_[_0xb20b('0xcf')](_0x431379[_0xb20b('0x46')],{'$or':_['map'](_0x431379['attributes'],function(_0x10bb52){var _0x5d003b={};_0x5d003b[_0x10bb52]={'$like':'%'+_0x13bb64[_0xb20b('0x47')][_0xb20b('0x33')]+'%'};return _0x5d003b;})});}_0x431379[_0xb20b('0x46')]={'$and':[_0x431379[_0xb20b('0x46')],{'$or':[{'UserId':_0x13bb64[_0xb20b('0x59')]['id']},{'OwnerId':_0x13bb64[_0xb20b('0x59')]['id']}]}]};_0x431379=_[_0xb20b('0xcf')]({},_0x431379,_0x13bb64[_0xb20b('0x60')]);var _0x5318c0={'where':_0x431379['where']};return db[_0xb20b('0x15c')][_0xb20b('0x28')](_0x5318c0)['then'](function(_0x30df69){_0x45aa2c[_0xb20b('0x28')]=_0x30df69;if(_0x13bb64[_0xb20b('0x47')]['includeAll']){_0x431379[_0xb20b('0x49')]=[{'attributes':['id',_0xb20b('0x15d'),_0xb20b('0x15e'),_0xb20b('0xf0')],'model':db[_0xb20b('0xcb')],'as':_0xb20b('0x15f')},{'attributes':['id',_0xb20b('0x3a'),_0xb20b('0x160')],'model':db[_0xb20b('0xac')],'as':'Queue'}];}return db[_0xb20b('0x15c')][_0xb20b('0x4f')](_0x431379);})['then'](function(_0x14acd9){_0x45aa2c[_0xb20b('0x50')]=_0x14acd9;return _0x45aa2c;})[_0xb20b('0x19')](respondWithFilteredResult(_0x3ed017,_0x431379))[_0xb20b('0x22')](handleError(_0x3ed017,null));};exports[_0xb20b('0x161')]=function(_0x5aed47,_0x418d99){if(!_[_0xb20b('0x6e')](_0x5aed47[_0xb20b('0x30')]['id'])&&(_0x5aed47[_0xb20b('0x30')]['role']==_0xb20b('0x2e')||_0x5aed47[_0xb20b('0x30')]['role']==_0xb20b('0x30'))){return db['User'][_0xb20b('0x9a')]({'where':{'id':_0x5aed47[_0xb20b('0x59')]['id']},'raw':!![]})['then'](function(_0x43af24){return authService[_0xb20b('0x162')](_0x43af24);})['then'](function(_0x17850f){if(_0x17850f){return _0x418d99['status'](0xc8)[_0xb20b('0x2a')]({'api_key':_0x17850f[_0xb20b('0x163')]});}else{return _0x418d99[_0xb20b('0x24')](0xcc)['json']({'message':_0xb20b('0x164')});}})['catch'](handleError(_0x418d99,0x193));}else{return _0x418d99[_0xb20b('0x24')](0x191)[_0xb20b('0x2a')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xb20b('0x165')]=function(_0x2f75f1,_0x22837b){if(!_['isNil'](_0x2f75f1[_0xb20b('0x30')]['id'])&&(_0x2f75f1['user']['role']==_0xb20b('0x2e')||_0x2f75f1['user'][_0xb20b('0x38')]==_0xb20b('0x30'))){return db[_0xb20b('0x3f')]['find']({'where':{'id':_0x2f75f1[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](function(_0x59c889){return authService[_0xb20b('0x166')](_0x59c889);})[_0xb20b('0x19')](function(_0x55b25d){return db['User'][_0xb20b('0x62')]({'apiKeyIat':_0x55b25d[_0xb20b('0x167')],'apiKeyNonce':_0x55b25d['nonce']},{'where':{'id':_0x2f75f1[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](function(){return _0x22837b['status'](0xc8)[_0xb20b('0x2a')]({'api_key':_0x55b25d['token']});});})[_0xb20b('0x22')](handleError(_0x22837b,0x193));}else{return _0x22837b[_0xb20b('0x24')](0x191)[_0xb20b('0x2a')]({'message':_0xb20b('0x168')});}};exports[_0xb20b('0x169')]=function(_0x24547c,_0x59a814){if(!_[_0xb20b('0x6e')](_0x24547c[_0xb20b('0x30')]['id'])&&(_0x24547c['user']['role']==_0xb20b('0x2e')||_0x24547c['user'][_0xb20b('0x38')]=='user')){return db['User'][_0xb20b('0x39')]({'where':{'id':_0x24547c[_0xb20b('0x59')]['id']}})[_0xb20b('0x19')](handleEntityNotFound(_0x59a814,null))[_0xb20b('0x19')](function(_0x31bfda){if(_0x31bfda&&_0x31bfda['apiKeyNonce']&&_0x31bfda['apiKeyIat'])return _0x31bfda;else throw{'message':_0xb20b('0x16a')};})[_0xb20b('0x19')](function(){return db[_0xb20b('0x3f')][_0xb20b('0x62')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x24547c[_0xb20b('0x59')]['id']}});})[_0xb20b('0x19')](respondWithStatusCode(_0x59a814,0xc8))[_0xb20b('0x22')](handleError(_0x59a814,0x193));}else{return _0x59a814[_0xb20b('0x24')](0x191)[_0xb20b('0x2a')]({'message':_0xb20b('0x168')});}};exports[_0xb20b('0x16b')]=function(_0x87ea0b,_0x45d880){var _0x14a5a1=_0x87ea0b[_0xb20b('0x30')][_0xb20b('0x2d')]({'plain':!![]});if(!_0x14a5a1){return _0x45d880[_0xb20b('0x24')](0x191)['send'](_0xb20b('0x16c'));}else{Promise[_0xb20b('0x11c')]()[_0xb20b('0x19')](function(){if(_0x87ea0b[_0xb20b('0x47')][_0xb20b('0x4c')]!==_0xb20b('0x4a'))return;return _0x87ea0b[_0xb20b('0x30')][_0xb20b('0x16d')]();})['then'](function(_0x7b02a4){if(!_0x7b02a4)return;return _0x7b02a4[_0xb20b('0x2d')]({'plain':!![]});})['then'](function(_0x43681b){_0x14a5a1[_0xb20b('0x4c')]=_0x43681b;return _0x45d880[_0xb20b('0x24')](0xc8)[_0xb20b('0x2a')](_0x14a5a1);});}};exports[_0xb20b('0x16e')]=function(_0x4831ab,_0x5a9833){var _0x1e6e4b={'offset':0x0},_0x31b812={'count':0x0,'rows':[]};Promise[_0xb20b('0x11c')]()[_0xb20b('0x19')](function(){if(!_0x4831ab['query']['filter']&&!_0x4831ab[_0xb20b('0x47')]['teams']&&!_0x4831ab['query'][_0xb20b('0x16f')])return[];return Promise[_0xb20b('0x11c')]()[_0xb20b('0x19')](function(){var _0x55bcfc=[];if(!_['isEmpty'](_0x4831ab[_0xb20b('0x47')][_0xb20b('0x170')])){_0x55bcfc[_0xb20b('0x4e')](db[_0xb20b('0x110')][_0xb20b('0x4f')]({'attributes':['id',_0xb20b('0x3a')],'where':{'id':_0x4831ab[_0xb20b('0x47')]['teams']}}));}if(!_[_0xb20b('0x8e')](_0x4831ab['query'][_0xb20b('0x16f')])){_0x55bcfc['push'](db[_0xb20b('0xac')][_0xb20b('0x4f')]({'attributes':['id',_0xb20b('0x3a')],'type':_0xb20b('0x171'),'where':{'id':_0x4831ab[_0xb20b('0x47')][_0xb20b('0x16f')]}}));}return Promise[_0xb20b('0x58')](_0x55bcfc);})[_0xb20b('0x19')](function(_0x54b004){var _0x5e9322=_['flatten'](_0x54b004)[_0xb20b('0x35')](function(_0x5a56a6){return _0x5a56a6[_0xb20b('0x172')]({'attributes':['id',_0xb20b('0x3a'),_0xb20b('0x68'),_0xb20b('0xa0')],'raw':!![]});});return Promise[_0xb20b('0x58')](_0x5e9322);})[_0xb20b('0x19')](function(_0x5db3d2){var _0x42e68f=_[_0xb20b('0x173')](_0x5db3d2);if(!_0x4831ab[_0xb20b('0x47')]['filter'])return _0x42e68f;if(_[_0xb20b('0x8e')](_0x42e68f)){return db[_0xb20b('0x3f')][_0xb20b('0x4f')]({'attributes':['id',_0xb20b('0x3a'),_0xb20b('0x68'),'online'],'where':{'role':'agent','$or':[db[_0xb20b('0x71')][_0xb20b('0x46')](db[_0xb20b('0x71')]['fn'](_0xb20b('0x174'),db[_0xb20b('0x71')][_0xb20b('0x175')](_0xb20b('0x3a'))),{'$like':'%'+_0x4831ab['query'][_0xb20b('0x33')][_0xb20b('0xa9')]()+'%'}),{'internal':{'$like':'%'+_0x4831ab['query'][_0xb20b('0x33')]+'%'}}]},'raw':!![]});}else{return _(_0x42e68f)[_0xb20b('0x173')]()[_0xb20b('0x33')](function(_0x20cd94){return _0x20cd94[_0xb20b('0x3a')][_0xb20b('0xa9')]()[_0xb20b('0x37')](_0x4831ab[_0xb20b('0x47')][_0xb20b('0x33')][_0xb20b('0xa9')]())||_0x20cd94[_0xb20b('0x68')][_0xb20b('0x176')]()[_0xb20b('0x37')](_0x4831ab['query']['filter']);})['value']();}})[_0xb20b('0x19')](function(_0x3edb40){var _0xf5057d=_0xb20b('0x3a');var _0x53da82=_0xb20b('0x177');if(_0x4831ab[_0xb20b('0x47')][_0xb20b('0xcd')]){_0x53da82=_0x4831ab[_0xb20b('0x47')][_0xb20b('0xcd')][0x0]==='-'?_0xb20b('0x178'):'asc';_0xf5057d=_0x53da82===_0xb20b('0x177')?_0x4831ab[_0xb20b('0x47')]['sort']:_0x4831ab[_0xb20b('0x47')][_0xb20b('0xcd')][_0xb20b('0x179')](0x1);}return _(_0x3edb40)['uniqBy']('id')[_0xb20b('0x17a')]([function(_0x3f2424){return _0xf5057d===_0xb20b('0x3a')?_0x3f2424[_0xf5057d][_0xb20b('0xa9')]():_0x3f2424[_0xf5057d];}],[_0x53da82])[_0xb20b('0x35')](function(_0x36374c){return _[_0xb20b('0xce')](_0x36374c,['id',_0xb20b('0x3a'),_0xb20b('0x68'),_0xb20b('0xa0')]);})[_0xb20b('0x36')]();})['then'](function(_0x48f724){return amiClient[_0xb20b('0x18')](_0xb20b('0x31'),_0x4831ab)['then'](function(_0xbfdba1){if(_0xbfdba1[_0xb20b('0x1f')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x54e241=_0xbfdba1[_0xb20b('0x21')];var _0x13e566=jayson[_0xb20b('0x17')][_0xb20b('0x17b')]({'port':0x232c});return _0x13e566[_0xb20b('0x18')]('Agents',_0x4831ab)[_0xb20b('0x19')](function(_0x24b0c8){if(_0x24b0c8[_0xb20b('0x1f')])throw new Error(_0xb20b('0x17c'));var _0x47b4e6=_0x24b0c8[_0xb20b('0x21')];return _[_0xb20b('0xcf')]({},_0x47b4e6,_0x54e241);});})[_0xb20b('0x19')](function(_0x2860e9){return _[_0xb20b('0x35')](_0x48f724,function(_0x5a72c9){var _0x47ccfe=_[_0xb20b('0x39')](_0x2860e9[_0xb20b('0x50')],['id',_0x5a72c9['id']]);if(!_0x47ccfe||!_0x5a72c9[_0xb20b('0xa0')]){_0x5a72c9[_0xb20b('0x24')]=_0xb20b('0x17d');}else if(_0x47ccfe['voicePause']){_0x5a72c9[_0xb20b('0x24')]=_0xb20b('0x104');}else{_0x5a72c9[_0xb20b('0x24')]=_[_0xb20b('0x37')](['idle','unknown',_0xb20b('0x17e'),_0xb20b('0x17f'),null,undefined],_0x47ccfe[_0xb20b('0x180')])?_0xb20b('0xa0'):'busy';}return _0x5a72c9;});});});})[_0xb20b('0x19')](function(_0x382840){if(!_0x4831ab[_0xb20b('0x47')][_0xb20b('0xd7')](_0xb20b('0xd8'))){_0x1e6e4b[_0xb20b('0x26')]=qs[_0xb20b('0x26')](_0x4831ab['query'][_0xb20b('0x26')]||0xa);_0x1e6e4b[_0xb20b('0x25')]=qs[_0xb20b('0x25')](_0x4831ab['query'][_0xb20b('0x25')]);}_0x31b812[_0xb20b('0x28')]=_0x382840[_0xb20b('0x5f')];_0x31b812[_0xb20b('0x50')]=_0x1e6e4b['limit']?_0x382840[_0xb20b('0x181')](_0x1e6e4b[_0xb20b('0x25')],_0x1e6e4b['offset']+_0x1e6e4b[_0xb20b('0x26')]):_0x382840;return _0x31b812;})[_0xb20b('0x19')](respondWithFilteredResult(_0x5a9833,_0x1e6e4b))[_0xb20b('0x22')](handleError(_0x5a9833,null));};function get_open_tabs(_0x4f9ac3,_0x5c7e54){var _0x6df30=_0x4f9ac3[_0xb20b('0x182')](0x0)[_0xb20b('0x183')]()+_0x4f9ac3[_0xb20b('0x181')](0x1);var _0x335a06={'type':db['Sequelize'][_0xb20b('0x72')][_0xb20b('0x184')],'raw':!![]};return new Promise(function(_0x1c899e,_0x424e5f){var _0x22259e=squel[_0xb20b('0x185')]()[_0xb20b('0x186')](_0xb20b('0x187')+_0x6df30+_0xb20b('0x188'),'id')['field'](_0xb20b('0x189'))['from']('user_has_'+_0x4f9ac3+_0xb20b('0x18a'),'ui')[_0xb20b('0x46')](_0xb20b('0x18b'),_0x5c7e54['id']);return db[_0xb20b('0x71')][_0xb20b('0x47')](_0x22259e[_0xb20b('0x176')](),_0x335a06)[_0xb20b('0x19')](function(_0x541963){_0x5c7e54[_0x6df30+_0xb20b('0x18c')]=_0x541963;_0x1c899e(_0x541963);})[_0xb20b('0x22')](function(_0x1b0eb8){_0x424e5f(_0x1b0eb8);});});}
\ No newline at end of file
index 7a2ca24..2b83345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7e4=['../../mysqldb','User','setMaxListeners','save','update','hasOwnProperty','hook','exports','events'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0xa7e4,0x1dc));var _0x4a7e=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa7e4[_0x42cae2];return _0x5f256f;};'use strict';var EventEmitter=require(_0x4a7e('0x0'));var User=require(_0x4a7e('0x1'))['db'][_0x4a7e('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x4a7e('0x3')](0x0);var events={'afterCreate':_0x4a7e('0x4'),'afterUpdate':_0x4a7e('0x5'),'afterDestroy':'remove'};function emitEvent(_0xa403c5){return function(_0xd458a7,_0x3309e8,_0x2435c1){UserEvents['emit'](_0xa403c5+':'+_0xd458a7['id'],_0xd458a7);UserEvents['emit'](_0xa403c5,_0xd458a7);_0x2435c1(null);};}for(var e in events){if(events[_0x4a7e('0x6')](e)){var event=events[e];User[_0x4a7e('0x7')](e,emitEvent(event));}}module[_0x4a7e('0x8')]=UserEvents;
\ No newline at end of file
+var _0xbe2f=['User','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0xb4d0dc,_0x1da4fd){var _0x107070=function(_0x4617b4){while(--_0x4617b4){_0xb4d0dc['push'](_0xb4d0dc['shift']());}};_0x107070(++_0x1da4fd);}(_0xbe2f,0x75));var _0xfbe2=function(_0x3d7c4c,_0x45d244){_0x3d7c4c=_0x3d7c4c-0x0;var _0x3573fc=_0xbe2f[_0x3d7c4c];return _0x3573fc;};'use strict';var EventEmitter=require(_0xfbe2('0x0'));var User=require(_0xfbe2('0x1'))['db'][_0xfbe2('0x2')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xfbe2('0x3')};function emitEvent(_0x2da5f4){return function(_0x2f7089,_0x3a753a,_0x12be14){UserEvents[_0xfbe2('0x4')](_0x2da5f4+':'+_0x2f7089['id'],_0x2f7089);UserEvents['emit'](_0x2da5f4,_0x2f7089);_0x12be14(null);};}for(var e in events){if(events[_0xfbe2('0x5')](e)){var event=events[e];User[_0xfbe2('0x6')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 2dd2ae7..da5b043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3be=['VoiceChanSpy','findAll','then','concat','exports','models','User','utf8','utf8_bin','userProfileId','resolve','find','privacyEnabled','updatePassword','catch','changed','UserProfile','internal','createUserSetting','VoiceExtension','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','indexOf','md5secret','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','client','QueuePause','message','findOne','PAUSE','channel','MemberReport','isArray','map','update','YYYY-MM-DD\x20HH:mm:ss','voicePause','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','forEach','Status','setDataValue','bluebird','crypto','util','md5','lodash','length','context','from-sip','system','format','%s%s','prefix','merge','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','Set','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','priority','defaults'];(function(_0x490be3,_0xf0fca3){var _0x3f5140=function(_0x15fa80){while(--_0x15fa80){_0x490be3['push'](_0x490be3['shift']());}};_0x3f5140(++_0xf0fca3);}(_0xf3be,0x1e1));var _0xef3b=function(_0x45959c,_0x162c6e){_0x45959c=_0x45959c-0x0;var _0x299a81=_0xf3be[_0x45959c];return _0x299a81;};'use strict';var BPromise=require(_0xef3b('0x0'));var crypto=require(_0xef3b('0x1'));var util=require(_0xef3b('0x2'));var md5=require(_0xef3b('0x3'));var moment=require('moment');var _=require(_0xef3b('0x4'));var jayson=require('jayson/promise');var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x4bfc98){return _0x4bfc98&&_0x4bfc98[_0xef3b('0x5')];};var getChanSpyApplications=function(_0x40dd26,_0x48f499,_0x3dfcc2){var _0x3f7873={'context':_0x40dd26[_0xef3b('0x6')]||_0xef3b('0x7'),'type':_0xef3b('0x8'),'isApp':![],'UserId':_0x40dd26['id']};var _0x3a36db=[];for(var _0x5af366=0x0,_0x5b5f2c=0x1;_0x5af366<_0x3dfcc2[_0xef3b('0x5')];_0x5af366++,_0x5b5f2c=0x1){var _0x5d7b56={'exten':util[_0xef3b('0x9')](_0xef3b('0xa'),_0x3dfcc2[_0x5af366][_0xef3b('0xb')],_0x48f499),'ChanSpyId':_0x3dfcc2[_0x5af366]['id']};_0x3a36db['push'](_[_0xef3b('0xc')]({'app':'Set','appdata':util[_0xef3b('0x9')](_0xef3b('0xd'),_0xef3b('0xe')),'priority':_0x5b5f2c++},_0x3f7873,_0x5d7b56));if(_0x3dfcc2[_0x5af366][_0xef3b('0xf')]){_0x3a36db[_0xef3b('0x10')](_[_0xef3b('0xc')]({'app':_0xef3b('0x11'),'appdata':util[_0xef3b('0x9')](_0xef3b('0x12'),_0x3dfcc2[_0x5af366][_0xef3b('0x13')]),'priority':_0x5b5f2c++},_0x3f7873,_0x5d7b56));}if(_0x3dfcc2[_0x5af366]['auth']){_0x3a36db['push'](_[_0xef3b('0xc')]({'app':_0xef3b('0x14'),'appdata':_0x3dfcc2[_0x5af366][_0xef3b('0x15')],'priority':_0x5b5f2c++},_0x3f7873,_0x5d7b56));}_0x3a36db[_0xef3b('0x10')](_[_0xef3b('0xc')]({'app':'ChanSpy','appdata':util[_0xef3b('0x9')](_0xef3b('0x16'),_0x40dd26[_0xef3b('0x17')],_0x3dfcc2[_0x5af366][_0xef3b('0x18')]?_0x3dfcc2[_0x5af366][_0xef3b('0x18')]['join'](''):''),'priority':_0x5b5f2c++},_0x3f7873,_0x5d7b56));if(_0x3dfcc2[_0x5af366][_0xef3b('0xf')]){_0x3a36db[_0xef3b('0x10')](_['merge']({'app':_0xef3b('0x19'),'priority':_0x5b5f2c++},_0x3f7873,_0x5d7b56));}}return _0x3a36db;};var getUserApplications=function(_0x57ab0b,_0x30b2d8){var _0x594f96=[_0xef3b('0x1a'),_0xef3b('0x1b'),_0xef3b('0x1c')];var _0x1a7498={'context':_0x57ab0b[_0xef3b('0x6')]||_0xef3b('0x7'),'exten':_0x30b2d8,'type':_0xef3b('0x8'),'isApp':![],'UserId':_0x57ab0b['id']};var _0x21b75a=[{'app':'Set','appdata':_0xef3b('0x1d')}];if(_0x57ab0b[_0xef3b('0x1e')]&&_[_0xef3b('0x1f')](_0x594f96,_0x57ab0b[_0xef3b('0x1e')])){_0x21b75a[_0xef3b('0x10')]({'app':_0xef3b('0x20'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x21b75a[_0xef3b('0x10')]({'app':'Set','appdata':util['format'](_0xef3b('0x21'),_0x57ab0b[_0xef3b('0x1e')])});_0x21b75a[_0xef3b('0x10')]({'app':_0xef3b('0x22'),'appdata':util[_0xef3b('0x9')](_0xef3b('0x23'),_0x57ab0b['name'])});}else{_0x21b75a['push']({'app':_0xef3b('0x22'),'appdata':util['format']('SIP/%s,,tTxX',_0x57ab0b[_0xef3b('0x17')])});}_0x21b75a[_0xef3b('0x10')]({'app':_0xef3b('0x24')});for(var _0x61dd9c=0x0;_0x61dd9c<_0x21b75a[_0xef3b('0x5')];_0x61dd9c++){_0x21b75a[_0x61dd9c][_0xef3b('0x25')]=_0x61dd9c+0x1;_0x21b75a[_0x61dd9c]=_[_0xef3b('0x26')](_0x21b75a[_0x61dd9c],_0x1a7498);}return _0x21b75a;};var getChanSpyPromise=function(_0x2c4097,_0x556c5c){return new BPromise(function(_0xded00b,_0x2b073b){return _0x2c4097[_0xef3b('0x27')][_0xef3b('0x28')]()[_0xef3b('0x29')](function(_0x108725){if(_0x108725){var _0xc1f29c=getChanSpyApplications(_0x556c5c,_0x556c5c['internal'],_0x108725);if(_0x556c5c['internal']!=_0x556c5c[_0xef3b('0x17')]){_0xc1f29c=_0xc1f29c[_0xef3b('0x2a')](getChanSpyApplications(_0x556c5c,_0x556c5c[_0xef3b('0x17')],_0x108725));}return _0xded00b(_0xc1f29c);}return _0xded00b([]);})['catch'](function(_0xb0ed1e){_0x2b073b(_0xb0ed1e);});});};module[_0xef3b('0x2b')]=function(_0x43d191){var _0x281112=_0x43d191[_0xef3b('0x2c')];return _0x43d191['define'](_0xef3b('0x2d'),attributes,{'tableName':'users','charset':_0xef3b('0x2e'),'collate':_0xef3b('0x2f'),'hooks':{'beforeCreate':function(_0x34bb64,_0x4ffcd8,_0x2a158f){var _0x26ef9=typeof _0x34bb64[_0xef3b('0x30')]==='undefined'?BPromise[_0xef3b('0x31')](null):_0x281112['UserProfile'][_0xef3b('0x32')]({'where':{'id':_0x34bb64[_0xef3b('0x30')]}});_0x26ef9['then'](function(_0x4f6288){if(_0x4f6288){_0x34bb64[_0xef3b('0x33')]=_0x4f6288[_0xef3b('0x33')];}})[_0xef3b('0x29')](function(){_0x34bb64['updateMd5Password']();_0x34bb64[_0xef3b('0x34')](_0x2a158f);})[_0xef3b('0x35')](function(_0x134672){_0x2a158f(_0x134672);});},'beforeUpdate':function(_0x52c9a7,_0x2753e6,_0x12fd8c){Promise['resolve']()['then'](function(){if(_0x52c9a7[_0xef3b('0x36')](_0xef3b('0x30'))===![])return;return _0x281112[_0xef3b('0x37')][_0xef3b('0x32')]({'where':{'id':_0x52c9a7[_0xef3b('0x30')]}})[_0xef3b('0x29')](function(_0x54449e){if(_0x54449e)_0x52c9a7[_0xef3b('0x33')]=_0x54449e[_0xef3b('0x33')];return;});})[_0xef3b('0x29')](function(){if(_0x52c9a7['changed'](_0xef3b('0x15'))){_0x52c9a7['updateMd5Password']();return _0x52c9a7[_0xef3b('0x34')](_0x12fd8c);}_0x12fd8c();})['catch'](function(_0x3a361f){_0x12fd8c(_0x3a361f);});},'afterCreate':function(_0x48f268,_0x2f5392,_0x5766d9){var _0x1cd13a=getUserApplications(_0x48f268,_0x48f268[_0xef3b('0x38')]);if(_0x48f268[_0xef3b('0x38')]!=_0x48f268[_0xef3b('0x17')]){_0x1cd13a=_0x1cd13a[_0xef3b('0x2a')](getUserApplications(_0x48f268,_0x48f268[_0xef3b('0x17')]));}return Promise[_0xef3b('0x31')]()[_0xef3b('0x29')](function(){if(!_0x48f268['userSetting']){return _0x48f268[_0xef3b('0x39')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xef3b('0x29')](function(){return _0x281112[_0xef3b('0x3a')]['bulkCreate'](_0x1cd13a);})['then'](function(){if(_0x48f268['chanspy']){return getChanSpyPromise(_0x281112,_0x48f268);}})[_0xef3b('0x29')](function(_0x49c777){if(_0x49c777&&_0x49c777[_0xef3b('0x5')]){return _0x281112['VoiceExtension']['bulkCreate'](_0x49c777);}})['then'](function(){_0x5766d9();})['catch'](function(_0x48699a){_0x5766d9(_0x48699a);});},'afterUpdate':function(_0x4d7323,_0x5586a5,_0x1f3731){return BPromise[_0xef3b('0x31')]()[_0xef3b('0x29')](function(){if(_0x4d7323['changed']('chanspy')||_0x4d7323[_0xef3b('0x36')](_0xef3b('0x6'))){return _0x281112[_0xef3b('0x3a')][_0xef3b('0x3b')]({'where':{'UserId':_0x4d7323['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xef3b('0x29')](function(){if(_0x4d7323['chanspy']){return getChanSpyPromise(_0x281112,_0x4d7323)[_0xef3b('0x29')](function(_0x164d05){if(_0x164d05&&_0x164d05[_0xef3b('0x5')]){return _0x281112[_0xef3b('0x3a')][_0xef3b('0x3c')](_0x164d05);}});}});}})['then'](function(){if(_0x4d7323[_0xef3b('0x36')](_0xef3b('0x1e'))||_0x4d7323[_0xef3b('0x36')](_0xef3b('0x6'))){return _0x281112[_0xef3b('0x3a')][_0xef3b('0x3b')]({'where':{'UserId':_0x4d7323['id'],'type':_0xef3b('0x8'),'ChanSpyId':null}})[_0xef3b('0x29')](function(){var _0x2f3004=getUserApplications(_0x4d7323,_0x4d7323['internal']);if(_0x4d7323[_0xef3b('0x38')]!=_0x4d7323[_0xef3b('0x17')]){_0x2f3004=_0x2f3004[_0xef3b('0x2a')](getUserApplications(_0x4d7323,_0x4d7323['name']));}return _0x281112[_0xef3b('0x3a')]['bulkCreate'](_0x2f3004);});}})[_0xef3b('0x29')](function(){_0x1f3731();})[_0xef3b('0x35')](function(_0x397636){_0x1f3731(_0x397636);});},'afterDestroy':function(_0x53ebd9){return _0x281112['VoiceExtension'][_0xef3b('0x3b')]({'where':{'UserId':_0x53ebd9['id'],'type':_0xef3b('0x8')}});}},'instanceMethods':{'authenticate':function(_0x4b368c,_0x1df962){if(!_0x1df962){return this[_0xef3b('0x15')]===this[_0xef3b('0x3d')](_0x4b368c);}var _0x38f5cd=this;this['encryptPassword'](_0x4b368c,function(_0x856e68,_0x435495){if(_0x856e68){_0x1df962(_0x856e68);}if(_0x38f5cd[_0xef3b('0x15')]===_0x435495){_0x1df962(null,!![]);}else{_0x1df962(null,![]);}});},'makeSalt':function(_0x25e9f5,_0x37b8f7){var _0x3d0d01=0x10;if(typeof arguments[0x0]==='function'){_0x37b8f7=arguments[0x0];_0x25e9f5=_0x3d0d01;}else if(typeof arguments[0x1]===_0xef3b('0x3e')){_0x37b8f7=arguments[0x1];}else{throw new Error(_0xef3b('0x3f'));}if(!_0x25e9f5){_0x25e9f5=_0x3d0d01;}return crypto[_0xef3b('0x40')](_0x25e9f5,function(_0x3ae416,_0x307f56){if(_0x3ae416){_0x37b8f7(_0x3ae416);}return _0x37b8f7(null,_0x307f56[_0xef3b('0x41')](_0xef3b('0x42')));});},'encryptPassword':function(_0x2e5742,_0x3995b9){if(!_0x2e5742||!this[_0xef3b('0x43')]){return _0x3995b9?_0x3995b9(null):null;}var _0x2a69b8=0x2710;var _0x92b573=0x40;var _0x77ae0c=Buffer['from'](this[_0xef3b('0x43')],_0xef3b('0x42'));if(!_0x3995b9){return crypto[_0xef3b('0x44')](_0x2e5742,_0x77ae0c,_0x2a69b8,_0x92b573,_0xef3b('0x45'))[_0xef3b('0x41')](_0xef3b('0x42'));}return crypto['pbkdf2'](_0x2e5742,_0x77ae0c,_0x2a69b8,_0x92b573,_0xef3b('0x45'),function(_0x1a5c36,_0x2a30e0){if(_0x1a5c36){_0x3995b9(_0x1a5c36);}return _0x3995b9(null,_0x2a30e0['toString']('base64'));});},'updatePassword':function(_0x5b5e80){if(!this[_0xef3b('0x15')]){return _0x5b5e80(null);}if(!validatePresenceOf(this[_0xef3b('0x15')])&&authTypes[_0xef3b('0x46')](this['provider'])===-0x1){_0x5b5e80(new Error('Invalid\x20password'));}var _0xbd559a=this;this['makeSalt'](function(_0x5e3ef9,_0x292a1b){if(_0x5e3ef9){return _0x5b5e80(_0x5e3ef9);}_0xbd559a[_0xef3b('0x43')]=_0x292a1b;_0xbd559a[_0xef3b('0x3d')](_0xbd559a[_0xef3b('0x15')],function(_0x364430,_0x583db8){if(_0x364430){_0x5b5e80(_0x364430);}_0xbd559a[_0xef3b('0x15')]=_0x583db8;_0x5b5e80(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+':asterisk:'+this['password']);return this[_0xef3b('0x47')];},'getRealtimeData':function(){var _0x4b7243={'id':this['id']};var _0x3df00c=jayson['client'][_0xef3b('0x48')]({'port':0x232a});var _0x4fe416=jayson['client'][_0xef3b('0x48')]({'port':0x232c});var _0x578192={};var _0x3d6c5b={};return _0x3df00c[_0xef3b('0x49')](_0xef3b('0x4a'),_0x4b7243)['then'](function(_0x4453d9){if(_0x4453d9[_0xef3b('0x4b')]){throw new Error(_0xef3b('0x4c'));}_0x578192=_0x4453d9[_0xef3b('0x4d')];return _0x4fe416[_0xef3b('0x49')]('Agents',_0x4b7243);})[_0xef3b('0x29')](function(_0x4b3c63){if(_0x4b3c63[_0xef3b('0x4b')]){throw new Error(_0xef3b('0x4e'));}_0x3d6c5b=_0x4b3c63['result'];var _0x2d75ed=_[_0xef3b('0xc')]({},_0x578192,_0x3d6c5b);return _0x2d75ed;})[_0xef3b('0x35')](function(_0x13b9ec){throw _0x13b9ec;});},'unpause':function(_0x569437,_0x2256ea=_0xef3b('0x4f')){var _0x42af9b=this;var _0x3dc881={};return Promise[_0xef3b('0x31')]()['then'](function(){if(!_0x569437||_0x569437===_0xef3b('0x50')&&_0x2256ea===_0xef3b('0x4f')){var _0x32511c=jayson[_0xef3b('0x51')][_0xef3b('0x48')]({'port':0x232a});return _0x32511c['request'](_0xef3b('0x52'),{'id':_0x42af9b['id'],'name':_0x42af9b[_0xef3b('0x17')],'pause':![]})['then'](function(_0x594dd1){if(_0x594dd1[_0xef3b('0x4b')]){throw new Error(util[_0xef3b('0x9')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x42af9b['id'],_0x42af9b['name']));}return _0x594dd1[_0xef3b('0x4d')][_0xef3b('0x53')];});}})['then'](function(){if(!_0x569437||_0x569437===_0xef3b('0x50')){return _0x281112['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x42af9b['id']},'individualHooks':!![]});}})[_0xef3b('0x29')](function(){var _0x1bc241=!_0x569437?_0xef3b('0x28'):_0xef3b('0x54');var _0x4de0ac={'membername':_0x42af9b[_0xef3b('0x17')],'type':_0xef3b('0x55'),'exitAt':null};if(_0x569437){_0x4de0ac[_0xef3b('0x56')]=_0x569437;}return _0x281112[_0xef3b('0x57')][_0x1bc241]({'where':_0x4de0ac});})['then'](function(_0x28b338){if(_0x28b338){var _0x432953=Array[_0xef3b('0x58')](_0x28b338)?_0x28b338:[_0x28b338];var _0x5e226a=_0x432953[_0xef3b('0x59')](function(_0x5325e6){return _0x5325e6[_0xef3b('0x5a')]({'exitAt':moment()[_0xef3b('0x9')](_0xef3b('0x5b')),'data2':_0x2256ea});});return Promise['all'](_0x5e226a);}})[_0xef3b('0x29')](function(){if(!_0x569437){_0x3dc881[_0xef3b('0x5c')]=![];_0x3dc881['mailPause']=![];_0x3dc881[_0xef3b('0x5d')]=![];_0x3dc881[_0xef3b('0x5e')]=![];_0x3dc881[_0xef3b('0x5f')]=![];_0x3dc881[_0xef3b('0x60')]=![];_0x3dc881[_0xef3b('0x61')]=![];}else{_0x3dc881[_0x569437+_0xef3b('0x62')]=![];}return _0x42af9b[_0xef3b('0x63')]();})[_0xef3b('0x29')](function(_0x546352){var _0x12b441=require(_0xef3b('0x64'));var _0x3e12c8=_0x12b441['getChannels']();_0x3e12c8[_0xef3b('0x65')](function(_0x568a43){var _0x4f8339=_0x568a43+_0xef3b('0x66');_0x42af9b[_0xef3b('0x67')]([_0x4f8339],_0x546352[_0x4f8339]);});return _0x42af9b[_0xef3b('0x5a')](_0x3dc881);})[_0xef3b('0x35')](function(_0x35ce2b){throw _0x35ce2b;});}}});};
\ No newline at end of file
+var _0x06f4=['length','from-sip','system','format','prefix','merge','CDR(type)=%s','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','name','join','wav','Set','CDR(type)=internal','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','extensionMonitor','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','internal','catch','models','define','User','users','utf8','utf8_bin','userProfileId','resolve','UserProfile','find','then','privacyEnabled','updateMd5Password','changed','password','updatePassword','concat','createUserSetting','error','bulkCreate','chanspy','destroy','context','VoiceExtension','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','result','manual','voice','UserVoiceQueueRt','findAll','findOne','channel','MemberReport','map','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','bluebird','crypto','md5','moment','./user.attributes'];(function(_0x12ee5d,_0x4ea510){var _0x2a3674=function(_0x1b96aa){while(--_0x1b96aa){_0x12ee5d['push'](_0x12ee5d['shift']());}};_0x2a3674(++_0x4ea510);}(_0x06f4,0x136));var _0x406f=function(_0x1e0019,_0x4f24df){_0x1e0019=_0x1e0019-0x0;var _0x5dbec5=_0x06f4[_0x1e0019];return _0x5dbec5;};'use strict';var BPromise=require(_0x406f('0x0'));var crypto=require(_0x406f('0x1'));var util=require('util');var md5=require(_0x406f('0x2'));var moment=require(_0x406f('0x3'));var _=require('lodash');var jayson=require('jayson/promise');var attributes=require(_0x406f('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x32abfd){return _0x32abfd&&_0x32abfd[_0x406f('0x5')];};var getChanSpyApplications=function(_0x3ab3d4,_0x32b2bd,_0x59821c){var _0x1d2886={'context':_0x3ab3d4['context']||_0x406f('0x6'),'type':_0x406f('0x7'),'isApp':![],'UserId':_0x3ab3d4['id']};var _0xc2f682=[];for(var _0x54eb68=0x0,_0x407936=0x1;_0x54eb68<_0x59821c['length'];_0x54eb68++,_0x407936=0x1){var _0x5b46bf={'exten':util[_0x406f('0x8')]('%s%s',_0x59821c[_0x54eb68][_0x406f('0x9')],_0x32b2bd),'ChanSpyId':_0x59821c[_0x54eb68]['id']};_0xc2f682['push'](_[_0x406f('0xa')]({'app':'Set','appdata':util[_0x406f('0x8')](_0x406f('0xb'),'chanspy'),'priority':_0x407936++},_0x1d2886,_0x5b46bf));if(_0x59821c[_0x54eb68][_0x406f('0xc')]){_0xc2f682[_0x406f('0xd')](_[_0x406f('0xa')]({'app':_0x406f('0xe'),'appdata':util[_0x406f('0x8')](_0x406f('0xf'),_0x59821c[_0x54eb68][_0x406f('0x10')]),'priority':_0x407936++},_0x1d2886,_0x5b46bf));}if(_0x59821c[_0x54eb68][_0x406f('0x11')]){_0xc2f682[_0x406f('0xd')](_[_0x406f('0xa')]({'app':_0x406f('0x12'),'appdata':_0x59821c[_0x54eb68]['password'],'priority':_0x407936++},_0x1d2886,_0x5b46bf));}_0xc2f682[_0x406f('0xd')](_[_0x406f('0xa')]({'app':_0x406f('0x13'),'appdata':util['format'](_0x406f('0x14'),_0x3ab3d4[_0x406f('0x15')],_0x59821c[_0x54eb68]['options']?_0x59821c[_0x54eb68]['options'][_0x406f('0x16')](''):''),'priority':_0x407936++},_0x1d2886,_0x5b46bf));if(_0x59821c[_0x54eb68][_0x406f('0xc')]){_0xc2f682['push'](_[_0x406f('0xa')]({'app':'StopMixMonitor','priority':_0x407936++},_0x1d2886,_0x5b46bf));}}return _0xc2f682;};var getUserApplications=function(_0xe186fb,_0x3ad3fe){var _0x1da473=[_0x406f('0x17'),'WAV','gsm'];var _0x422fe2={'context':_0xe186fb['context']||_0x406f('0x6'),'exten':_0x3ad3fe,'type':'system','isApp':![],'UserId':_0xe186fb['id']};var _0x38254b=[{'app':_0x406f('0x18'),'appdata':_0x406f('0x19')}];if(_0xe186fb['extensionMonitor']&&_['includes'](_0x1da473,_0xe186fb['extensionMonitor'])){_0x38254b[_0x406f('0xd')]({'app':_0x406f('0x18'),'appdata':_0x406f('0x1a')});_0x38254b['push']({'app':_0x406f('0x18'),'appdata':util['format'](_0x406f('0x1b'),_0xe186fb[_0x406f('0x1c')])});_0x38254b[_0x406f('0xd')]({'app':_0x406f('0x1d'),'appdata':util[_0x406f('0x8')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0xe186fb['name'])});}else{_0x38254b[_0x406f('0xd')]({'app':'Dial','appdata':util[_0x406f('0x8')](_0x406f('0x1e'),_0xe186fb['name'])});}_0x38254b['push']({'app':_0x406f('0x1f')});for(var _0x484f7c=0x0;_0x484f7c<_0x38254b[_0x406f('0x5')];_0x484f7c++){_0x38254b[_0x484f7c][_0x406f('0x20')]=_0x484f7c+0x1;_0x38254b[_0x484f7c]=_[_0x406f('0x21')](_0x38254b[_0x484f7c],_0x422fe2);}return _0x38254b;};var getChanSpyPromise=function(_0x27f988,_0x2c439b){return new BPromise(function(_0x174e47,_0x224bd0){return _0x27f988[_0x406f('0x22')]['findAll']()['then'](function(_0x315869){if(_0x315869){var _0x1a4567=getChanSpyApplications(_0x2c439b,_0x2c439b[_0x406f('0x23')],_0x315869);if(_0x2c439b[_0x406f('0x23')]!=_0x2c439b['name']){_0x1a4567=_0x1a4567['concat'](getChanSpyApplications(_0x2c439b,_0x2c439b[_0x406f('0x15')],_0x315869));}return _0x174e47(_0x1a4567);}return _0x174e47([]);})[_0x406f('0x24')](function(_0x4fb304){_0x224bd0(_0x4fb304);});});};module['exports']=function(_0x4430c5){var _0x378cc3=_0x4430c5[_0x406f('0x25')];return _0x4430c5[_0x406f('0x26')](_0x406f('0x27'),attributes,{'tableName':_0x406f('0x28'),'charset':_0x406f('0x29'),'collate':_0x406f('0x2a'),'hooks':{'beforeCreate':function(_0x29360b,_0xe72baf,_0x25bd98){var _0x449c79=typeof _0x29360b[_0x406f('0x2b')]==='undefined'?BPromise[_0x406f('0x2c')](null):_0x378cc3[_0x406f('0x2d')][_0x406f('0x2e')]({'where':{'id':_0x29360b[_0x406f('0x2b')]}});_0x449c79[_0x406f('0x2f')](function(_0x137f62){if(_0x137f62){_0x29360b[_0x406f('0x30')]=_0x137f62[_0x406f('0x30')];}})[_0x406f('0x2f')](function(){_0x29360b[_0x406f('0x31')]();_0x29360b['updatePassword'](_0x25bd98);})[_0x406f('0x24')](function(_0x1062ef){_0x25bd98(_0x1062ef);});},'beforeUpdate':function(_0x36a17a,_0x444387,_0x4268d2){Promise[_0x406f('0x2c')]()['then'](function(){if(_0x36a17a['changed'](_0x406f('0x2b'))===![])return;return _0x378cc3[_0x406f('0x2d')]['find']({'where':{'id':_0x36a17a[_0x406f('0x2b')]}})['then'](function(_0x43fb4f){if(_0x43fb4f)_0x36a17a[_0x406f('0x30')]=_0x43fb4f[_0x406f('0x30')];return;});})['then'](function(){if(_0x36a17a[_0x406f('0x32')](_0x406f('0x33'))){_0x36a17a[_0x406f('0x31')]();return _0x36a17a[_0x406f('0x34')](_0x4268d2);}_0x4268d2();})[_0x406f('0x24')](function(_0x2666f1){_0x4268d2(_0x2666f1);});},'afterCreate':function(_0x7bcff3,_0x2547c7,_0x39122d){var _0x14c27f=getUserApplications(_0x7bcff3,_0x7bcff3[_0x406f('0x23')]);if(_0x7bcff3[_0x406f('0x23')]!=_0x7bcff3[_0x406f('0x15')]){_0x14c27f=_0x14c27f[_0x406f('0x35')](getUserApplications(_0x7bcff3,_0x7bcff3[_0x406f('0x15')]));}return Promise['resolve']()['then'](function(){if(!_0x7bcff3['userSetting']){return _0x7bcff3[_0x406f('0x36')]({'clientSideLoggingLevel':_0x406f('0x37'),'clientSideLoggingEnabled':![]});}})[_0x406f('0x2f')](function(){return _0x378cc3['VoiceExtension'][_0x406f('0x38')](_0x14c27f);})[_0x406f('0x2f')](function(){if(_0x7bcff3[_0x406f('0x39')]){return getChanSpyPromise(_0x378cc3,_0x7bcff3);}})[_0x406f('0x2f')](function(_0x1c079a){if(_0x1c079a&&_0x1c079a[_0x406f('0x5')]){return _0x378cc3['VoiceExtension'][_0x406f('0x38')](_0x1c079a);}})[_0x406f('0x2f')](function(){_0x39122d();})['catch'](function(_0xe4a559){_0x39122d(_0xe4a559);});},'afterUpdate':function(_0x53fb67,_0x529be6,_0x43da09){return BPromise[_0x406f('0x2c')]()[_0x406f('0x2f')](function(){if(_0x53fb67[_0x406f('0x32')](_0x406f('0x39'))||_0x53fb67[_0x406f('0x32')]('context')){return _0x378cc3['VoiceExtension'][_0x406f('0x3a')]({'where':{'UserId':_0x53fb67['id'],'type':_0x406f('0x7'),'ChanSpyId':{'$ne':null}}})[_0x406f('0x2f')](function(){if(_0x53fb67[_0x406f('0x39')]){return getChanSpyPromise(_0x378cc3,_0x53fb67)[_0x406f('0x2f')](function(_0x2b226e){if(_0x2b226e&&_0x2b226e[_0x406f('0x5')]){return _0x378cc3['VoiceExtension'][_0x406f('0x38')](_0x2b226e);}});}});}})[_0x406f('0x2f')](function(){if(_0x53fb67[_0x406f('0x32')](_0x406f('0x1c'))||_0x53fb67[_0x406f('0x32')](_0x406f('0x3b'))){return _0x378cc3[_0x406f('0x3c')][_0x406f('0x3a')]({'where':{'UserId':_0x53fb67['id'],'type':_0x406f('0x7'),'ChanSpyId':null}})[_0x406f('0x2f')](function(){var _0x1152ec=getUserApplications(_0x53fb67,_0x53fb67['internal']);if(_0x53fb67[_0x406f('0x23')]!=_0x53fb67[_0x406f('0x15')]){_0x1152ec=_0x1152ec['concat'](getUserApplications(_0x53fb67,_0x53fb67['name']));}return _0x378cc3[_0x406f('0x3c')][_0x406f('0x38')](_0x1152ec);});}})[_0x406f('0x2f')](function(){_0x43da09();})[_0x406f('0x24')](function(_0x5e20a2){_0x43da09(_0x5e20a2);});},'afterDestroy':function(_0xf35d5b){return _0x378cc3['VoiceExtension'][_0x406f('0x3a')]({'where':{'UserId':_0xf35d5b['id'],'type':_0x406f('0x7')}});}},'instanceMethods':{'authenticate':function(_0x5b1143,_0x5a91dd){if(!_0x5a91dd){return this[_0x406f('0x33')]===this[_0x406f('0x3d')](_0x5b1143);}var _0x382482=this;this[_0x406f('0x3d')](_0x5b1143,function(_0x56339a,_0x331485){if(_0x56339a){_0x5a91dd(_0x56339a);}if(_0x382482[_0x406f('0x33')]===_0x331485){_0x5a91dd(null,!![]);}else{_0x5a91dd(null,![]);}});},'makeSalt':function(_0x8ef14b,_0x275bc8){var _0x578f4c=0x10;if(typeof arguments[0x0]==='function'){_0x275bc8=arguments[0x0];_0x8ef14b=_0x578f4c;}else if(typeof arguments[0x1]===_0x406f('0x3e')){_0x275bc8=arguments[0x1];}else{throw new Error(_0x406f('0x3f'));}if(!_0x8ef14b){_0x8ef14b=_0x578f4c;}return crypto[_0x406f('0x40')](_0x8ef14b,function(_0x154c42,_0x2a9a61){if(_0x154c42){_0x275bc8(_0x154c42);}return _0x275bc8(null,_0x2a9a61['toString'](_0x406f('0x41')));});},'encryptPassword':function(_0x23026d,_0x4a5a01){if(!_0x23026d||!this['salt']){return _0x4a5a01?_0x4a5a01(null):null;}var _0x27fd3f=0x2710;var _0x19d671=0x40;var _0x41c678=Buffer['from'](this[_0x406f('0x42')],_0x406f('0x41'));if(!_0x4a5a01){return crypto[_0x406f('0x43')](_0x23026d,_0x41c678,_0x27fd3f,_0x19d671,_0x406f('0x44'))[_0x406f('0x45')](_0x406f('0x41'));}return crypto[_0x406f('0x46')](_0x23026d,_0x41c678,_0x27fd3f,_0x19d671,_0x406f('0x44'),function(_0x6bd455,_0x523295){if(_0x6bd455){_0x4a5a01(_0x6bd455);}return _0x4a5a01(null,_0x523295['toString'](_0x406f('0x41')));});},'updatePassword':function(_0x42bf3b){if(!this[_0x406f('0x33')]){return _0x42bf3b(null);}if(!validatePresenceOf(this[_0x406f('0x33')])&&authTypes[_0x406f('0x47')](this[_0x406f('0x48')])===-0x1){_0x42bf3b(new Error(_0x406f('0x49')));}var _0x3f83f7=this;this[_0x406f('0x4a')](function(_0x1bd758,_0x5e7676){if(_0x1bd758){return _0x42bf3b(_0x1bd758);}_0x3f83f7['salt']=_0x5e7676;_0x3f83f7[_0x406f('0x3d')](_0x3f83f7[_0x406f('0x33')],function(_0x3039a4,_0x17a796){if(_0x3039a4){_0x42bf3b(_0x3039a4);}_0x3f83f7[_0x406f('0x33')]=_0x17a796;_0x42bf3b(null);});});},'updateMd5Password':function(){this[_0x406f('0x4b')]=md5(this['name']+_0x406f('0x4c')+this[_0x406f('0x33')]);return this[_0x406f('0x4b')];},'getRealtimeData':function(){var _0x6e2d0b={'id':this['id']};var _0x4471d9=jayson[_0x406f('0x4d')][_0x406f('0x4e')]({'port':0x232a});var _0x10db69=jayson[_0x406f('0x4d')][_0x406f('0x4e')]({'port':0x232c});var _0x5538d3={};var _0x494955={};return _0x4471d9[_0x406f('0x4f')](_0x406f('0x50'),_0x6e2d0b)['then'](function(_0x177c23){if(_0x177c23['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x5538d3=_0x177c23[_0x406f('0x51')];return _0x10db69[_0x406f('0x4f')]('Agents',_0x6e2d0b);})[_0x406f('0x2f')](function(_0x580ff4){if(_0x580ff4[_0x406f('0x37')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x494955=_0x580ff4[_0x406f('0x51')];var _0x48bca4=_[_0x406f('0xa')]({},_0x5538d3,_0x494955);return _0x48bca4;})[_0x406f('0x24')](function(_0x5cd209){throw _0x5cd209;});},'unpause':function(_0x5dd1e8,_0xd044e1=_0x406f('0x52')){var _0x21c703=this;var _0x34254b={};return Promise['resolve']()[_0x406f('0x2f')](function(){if(!_0x5dd1e8||_0x5dd1e8===_0x406f('0x53')&&_0xd044e1===_0x406f('0x52')){var _0x41839a=jayson[_0x406f('0x4d')][_0x406f('0x4e')]({'port':0x232a});return _0x41839a[_0x406f('0x4f')]('QueuePause',{'id':_0x21c703['id'],'name':_0x21c703[_0x406f('0x15')],'pause':![]})['then'](function(_0x3d77a2){if(_0x3d77a2[_0x406f('0x37')]){throw new Error(util[_0x406f('0x8')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x21c703['id'],_0x21c703[_0x406f('0x15')]));}return _0x3d77a2[_0x406f('0x51')]['message'];});}})['then'](function(){if(!_0x5dd1e8||_0x5dd1e8===_0x406f('0x53')){return _0x378cc3[_0x406f('0x54')]['update']({'paused':0x0},{'where':{'UserId':_0x21c703['id']},'individualHooks':!![]});}})['then'](function(){var _0x4c0597=!_0x5dd1e8?_0x406f('0x55'):_0x406f('0x56');var _0x329977={'membername':_0x21c703['name'],'type':'PAUSE','exitAt':null};if(_0x5dd1e8){_0x329977[_0x406f('0x57')]=_0x5dd1e8;}return _0x378cc3[_0x406f('0x58')][_0x4c0597]({'where':_0x329977});})[_0x406f('0x2f')](function(_0x35306a){if(_0x35306a){var _0x2b97ad=Array['isArray'](_0x35306a)?_0x35306a:[_0x35306a];var _0xcd8003=_0x2b97ad[_0x406f('0x59')](function(_0x456569){return _0x456569[_0x406f('0x5a')]({'exitAt':moment()[_0x406f('0x8')](_0x406f('0x5b')),'data2':_0xd044e1});});return Promise[_0x406f('0x5c')](_0xcd8003);}})[_0x406f('0x2f')](function(){if(!_0x5dd1e8){_0x34254b[_0x406f('0x5d')]=![];_0x34254b[_0x406f('0x5e')]=![];_0x34254b[_0x406f('0x5f')]=![];_0x34254b[_0x406f('0x60')]=![];_0x34254b[_0x406f('0x61')]=![];_0x34254b[_0x406f('0x62')]=![];_0x34254b[_0x406f('0x63')]=![];}else{_0x34254b[_0x5dd1e8+_0x406f('0x64')]=![];}return _0x21c703[_0x406f('0x65')]();})['then'](function(_0x1d857a){var _0x13ba46=require(_0x406f('0x66'));var _0x58a0d0=_0x13ba46[_0x406f('0x67')]();_0x58a0d0[_0x406f('0x68')](function(_0x519052){var _0x276258=_0x519052+'Status';_0x21c703['setDataValue']([_0x276258],_0x1d857a[_0x276258]);});return _0x21c703[_0x406f('0x5a')](_0x34254b);})[_0x406f('0x24')](function(_0x56d8ff){throw _0x56d8ff;});}}});};
\ No newline at end of file
index 73174d7..c76df95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad88=['system','UserVoiceQueueRt','destroy','all','mobile','phone','loginInPause','SIP/%s','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','merge','callysquare','LOGININPAUSE','bulkCreate','concat','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','socket.io-emitter','register','GetUser','User','findAll','options','raw','where','attributes','limit','map','include','model','info','debug','stringify','catch','error','message','ShowUser','find','PauseUser','name','role','internal','interface','update','then','MemberReport','PAUSE','length','format','getChannels','forEach','push','isNil','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','UnpauseUser','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','channel','findOne','voicePause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','params','unpause'];(function(_0x446e3b,_0x180958){var _0x4d39fd=function(_0x2676a5){while(--_0x2676a5){_0x446e3b['push'](_0x446e3b['shift']());}};_0x4d39fd(++_0x180958);}(_0xad88,0x1be));var _0x8ad8=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xad88[_0x5f309e];return _0x487b5e;};'use strict';var _=require(_0x8ad8('0x0'));var util=require('util');var moment=require(_0x8ad8('0x1'));var BPromise=require(_0x8ad8('0x2'));var Redis=require('ioredis');var db=require(_0x8ad8('0x3'))['db'];var utils=require(_0x8ad8('0x4'));var logger=require(_0x8ad8('0x5'))(_0x8ad8('0x6'));var config=require(_0x8ad8('0x7'));config[_0x8ad8('0x8')]=_[_0x8ad8('0x9')](config[_0x8ad8('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x8ad8('0xa'))(new Redis(config[_0x8ad8('0x8')]));require('./user.socket')[_0x8ad8('0xb')](socket);exports[_0x8ad8('0xc')]=function(_0xe353f3){var _0x209c5d=this;return new Promise(function(_0x16c13a,_0x31a935){return db[_0x8ad8('0xd')][_0x8ad8('0xe')]({'raw':_0xe353f3[_0x8ad8('0xf')]?_0xe353f3[_0x8ad8('0xf')][_0x8ad8('0x10')]===undefined?!![]:![]:!![],'where':_0xe353f3[_0x8ad8('0xf')]?_0xe353f3['options'][_0x8ad8('0x11')]||null:null,'attributes':_0xe353f3[_0x8ad8('0xf')]?_0xe353f3[_0x8ad8('0xf')][_0x8ad8('0x12')]||null:null,'limit':_0xe353f3[_0x8ad8('0xf')]?_0xe353f3[_0x8ad8('0xf')][_0x8ad8('0x13')]||null:null,'include':_0xe353f3['options']?_0xe353f3[_0x8ad8('0xf')]['include']?_[_0x8ad8('0x14')](_0xe353f3[_0x8ad8('0xf')][_0x8ad8('0x15')],function(_0x547e50){return{'model':db[_0x547e50[_0x8ad8('0x16')]],'as':_0x547e50['as'],'attributes':_0x547e50[_0x8ad8('0x12')],'include':_0x547e50['include']?_['map'](_0x547e50[_0x8ad8('0x15')],function(_0x305004){return{'model':db[_0x305004[_0x8ad8('0x16')]],'as':_0x305004['as'],'attributes':_0x305004[_0x8ad8('0x12')],'include':_0x305004[_0x8ad8('0x15')]?_['map'](_0x305004['include'],function(_0x5265a4){return{'model':db[_0x5265a4[_0x8ad8('0x16')]],'as':_0x5265a4['as'],'attributes':_0x5265a4[_0x8ad8('0x12')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x600cec){logger[_0x8ad8('0x17')](_0x8ad8('0xc'),_0xe353f3);logger[_0x8ad8('0x18')](_0x8ad8('0xc'),_0xe353f3,JSON[_0x8ad8('0x19')](_0x600cec));_0x16c13a(_0x600cec);})[_0x8ad8('0x1a')](function(_0x596e9e){logger[_0x8ad8('0x1b')](_0x8ad8('0xc'),_0x596e9e['message'],_0xe353f3);_0x31a935(_0x209c5d[_0x8ad8('0x1b')](0x1f4,_0x596e9e[_0x8ad8('0x1c')]));});});};exports[_0x8ad8('0x1d')]=function(_0x349a87){var _0x48e292=this;return new Promise(function(_0x5de405,_0x4bbe67){return db[_0x8ad8('0xd')][_0x8ad8('0x1e')]({'raw':_0x349a87['options']?_0x349a87[_0x8ad8('0xf')][_0x8ad8('0x10')]===undefined?!![]:![]:!![],'where':_0x349a87[_0x8ad8('0xf')]?_0x349a87[_0x8ad8('0xf')]['where']||null:null,'attributes':_0x349a87['options']?_0x349a87['options'][_0x8ad8('0x12')]||null:null,'include':_0x349a87[_0x8ad8('0xf')]?_0x349a87['options'][_0x8ad8('0x15')]?_[_0x8ad8('0x14')](_0x349a87['options'][_0x8ad8('0x15')],function(_0x5075d1){return{'model':db[_0x5075d1[_0x8ad8('0x16')]],'as':_0x5075d1['as'],'attributes':_0x5075d1['attributes'],'include':_0x5075d1[_0x8ad8('0x15')]?_[_0x8ad8('0x14')](_0x5075d1[_0x8ad8('0x15')],function(_0x553c66){return{'model':db[_0x553c66['model']],'as':_0x553c66['as'],'attributes':_0x553c66[_0x8ad8('0x12')],'include':_0x553c66[_0x8ad8('0x15')]?_[_0x8ad8('0x14')](_0x553c66[_0x8ad8('0x15')],function(_0x32dd1e){return{'model':db[_0x32dd1e[_0x8ad8('0x16')]],'as':_0x32dd1e['as'],'attributes':_0x32dd1e[_0x8ad8('0x12')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4684b5){logger['info'](_0x8ad8('0x1d'),_0x349a87);logger[_0x8ad8('0x18')]('ShowUser',_0x349a87,JSON[_0x8ad8('0x19')](_0x4684b5));_0x5de405(_0x4684b5);})[_0x8ad8('0x1a')](function(_0x7b06cd){logger[_0x8ad8('0x1b')](_0x8ad8('0x1d'),_0x7b06cd[_0x8ad8('0x1c')],_0x349a87);_0x4bbe67(_0x48e292[_0x8ad8('0x1b')](0x1f4,_0x7b06cd[_0x8ad8('0x1c')]));});});};exports[_0x8ad8('0x1f')]=function(_0x29bf68){var _0x12e7a4=this;return new Promise(function(_0x32fea6,_0x24b82d){var _0x1dad88;return db[_0x8ad8('0xd')][_0x8ad8('0x1e')]({'where':_0x29bf68[_0x8ad8('0xf')]['where']||{},'attributes':['id',_0x8ad8('0x20'),_0x8ad8('0x21'),_0x8ad8('0x22'),_0x8ad8('0x23')]})['then'](function(_0x51d564){if(_0x51d564){_0x1dad88=_0x51d564;return db['UserVoiceQueueRt'][_0x8ad8('0x24')]({'paused':0x1},{'where':{'UserId':_0x1dad88['id']},'individualHooks':!![]});}})[_0x8ad8('0x25')](function(){if(_0x1dad88){return db[_0x8ad8('0x26')][_0x8ad8('0xe')]({'where':{'membername':_0x1dad88[_0x8ad8('0x20')],'type':_0x8ad8('0x27'),'exitAt':null}});}})['then'](function(_0xc22031){if(_0x1dad88){if(_0xc22031&&_0xc22031[_0x8ad8('0x28')]){var _0x2f6df3=moment()[_0x8ad8('0x29')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x4ca9d1=0x0,_0x146d02=_0xc22031[_0x8ad8('0x28')];_0x4ca9d1<_0x146d02;_0x4ca9d1++){_0xc22031[_0x4ca9d1]['updateAttributes']({'exitAt':_0x2f6df3});}}}})['then'](function(){if(_0x1dad88){var _0x8989a6=[];var _0x1e4a34=utils[_0x8ad8('0x2a')]();_0x1e4a34[_0x8ad8('0x2b')](function(_0x2f7eb8){_0x8989a6[_0x8ad8('0x2c')]({'channel':_0x2f7eb8,'membername':_0x1dad88[_0x8ad8('0x20')],'interface':_[_0x8ad8('0x2d')](_0x1dad88[_0x8ad8('0x23')])?util['format']('SIP/%s',_0x1dad88['name']):_0x1dad88[_0x8ad8('0x23')],'type':_0x8ad8('0x27'),'enterAt':moment()[_0x8ad8('0x29')](_0x8ad8('0x2e')),'data1':_0x29bf68[_0x8ad8('0x2f')][_0x8ad8('0x30')]||_0x8ad8('0x31'),'role':_0x1dad88['role'],'internal':_0x1dad88[_0x8ad8('0x22')],'uniqueid':_0x29bf68[_0x8ad8('0x2f')][_0x8ad8('0x32')]||null});});return db[_0x8ad8('0x26')]['bulkCreate'](_0x8989a6,{'individualHooks':!![]});}})[_0x8ad8('0x25')](function(){if(_0x1dad88){return _0x1dad88[_0x8ad8('0x24')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x29bf68[_0x8ad8('0x2f')][_0x8ad8('0x30')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x8ad8('0x29')](_0x8ad8('0x2e'))});}})[_0x8ad8('0x25')](function(_0x35e05c){_0x32fea6(_0x35e05c);})['catch'](function(_0x20ae9b){_0x24b82d(_0x12e7a4['error'](0x1f4,_0x20ae9b['message']));});});};exports[_0x8ad8('0x33')]=function(_0x49fc66){var _0x22d337=this;return new Promise(function(_0x120223,_0x35e027){if(_0x49fc66['body']['channel']&&!utils[_0x8ad8('0x34')](_0x49fc66['body']['channel'])){throw new Error(util[_0x8ad8('0x29')](_0x8ad8('0x35'),_0x49fc66['body'][_0x8ad8('0x36')]));}return db['User'][_0x8ad8('0x37')]({'where':_0x49fc66[_0x8ad8('0xf')][_0x8ad8('0x11')]||{},'attributes':['id',_0x8ad8('0x20'),_0x8ad8('0x21'),_0x8ad8('0x22'),_0x8ad8('0x23'),'online',_0x8ad8('0x38'),'mailPause','chatPause','faxPause',_0x8ad8('0x39'),_0x8ad8('0x3a'),_0x8ad8('0x3b'),_0x8ad8('0x3c'),_0x8ad8('0x3d')]})[_0x8ad8('0x25')](function(_0xb8f9e4){if(!_0xb8f9e4){throw new Error(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x49fc66[_0x8ad8('0x3e')]['id']));}return _0xb8f9e4[_0x8ad8('0x3f')](_0x49fc66['body'][_0x8ad8('0x36')],_0x8ad8('0x40'));})[_0x8ad8('0x25')](function(_0x4f4c96){_0x120223(_0x4f4c96);})[_0x8ad8('0x1a')](function(_0x11726e){_0x35e027(_0x22d337[_0x8ad8('0x1b')](0x1f4,_0x11726e['message']));});});};exports['LogoutUser']=function(_0x346234){var _0x2e649b=this;return new Promise(function(_0x375716,_0x5dd657){var _0x1c87b3;return db[_0x8ad8('0xd')]['findOne']({'where':_0x346234['options']['where']||{},'attributes':['id',_0x8ad8('0x20')]})[_0x8ad8('0x25')](function(_0x1bea83){if(_0x1bea83){_0x1c87b3=_0x1bea83;return db[_0x8ad8('0x41')][_0x8ad8('0x42')]({'where':{'membername':_0x1c87b3['name']},'individualHooks':!![]});}})[_0x8ad8('0x25')](function(){if(_0x1c87b3){return db[_0x8ad8('0x26')][_0x8ad8('0xe')]({'where':{'membername':_0x1c87b3['name'],'exitAt':null}});}})['then'](function(_0x23b09e){if(_0x1c87b3){if(_0x23b09e&&_0x23b09e['length']){var _0x4a5743=[];_0x23b09e['forEach'](function(_0x2ac396){_0x4a5743[_0x8ad8('0x2c')](_0x2ac396[_0x8ad8('0x24')]({'exitAt':moment()[_0x8ad8('0x29')](_0x8ad8('0x2e'))}));});return BPromise[_0x8ad8('0x43')](_0x4a5743);}}})[_0x8ad8('0x25')](function(){if(_0x1c87b3){return _0x1c87b3[_0x8ad8('0x24')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x8ad8('0x25')](function(_0x211bd5){_0x375716(_0x211bd5);})[_0x8ad8('0x1a')](function(_0x22b350){_0x5dd657(_0x2e649b[_0x8ad8('0x1b')](0x1f4,_0x22b350[_0x8ad8('0x1c')]));});});};exports['LoginUser']=function(_0x54fb0b){var _0x27c553=this;return new Promise(function(_0x7d8ae1,_0x283241){var _0x138c01;var _0x46c7e2;var _0x1284d1;var _0x37fcf9;return db[_0x8ad8('0xd')]['findOne']({'where':_0x54fb0b[_0x8ad8('0xf')]['where']||{},'attributes':['id','name',_0x8ad8('0x21'),_0x8ad8('0x44'),_0x8ad8('0x45'),_0x8ad8('0x22'),_0x8ad8('0x46'),_0x8ad8('0x23')]})[_0x8ad8('0x25')](function(_0x4f4155){if(_0x4f4155){_0x138c01=_0x4f4155;_0x37fcf9=_0x54fb0b[_0x8ad8('0x2f')]['interface']?_0x54fb0b[_0x8ad8('0x2f')][_0x8ad8('0x23')]:util[_0x8ad8('0x29')](_0x8ad8('0x47'),_0x138c01[_0x8ad8('0x20')]);return db[_0x8ad8('0xd')][_0x8ad8('0x48')]({'where':{'role':_0x8ad8('0x49'),'online':!![],'id':{'$ne':_0x138c01['id']}}});}})[_0x8ad8('0x25')](function(_0x28c331){if(_0x28c331){_0x1284d1=_0x28c331;return require(_0x8ad8('0x4a'))[_0x8ad8('0x4b')]();}})[_0x8ad8('0x25')](function(_0x253a36){if(_0x253a36&&_0x253a36[_0x8ad8('0x4c')]&&_0x1284d1>=_0x253a36['agents']){throw new Error(_0x8ad8('0x4d'));}})[_0x8ad8('0x25')](function(){if(_0x138c01){return db[_0x8ad8('0x41')]['destroy']({'where':{'membername':_0x138c01[_0x8ad8('0x20')]},'individualHooks':!![]});}})['then'](function(){if(_0x138c01){return _0x138c01[_0x8ad8('0x4e')]({'raw':!![]});}})[_0x8ad8('0x25')](function(_0xe102b0){if(_0x138c01){if(_0xe102b0){var _0x28f67f=[];_0x46c7e2=_0xe102b0;if(_0x46c7e2[_0x8ad8('0x28')]){for(var _0x137f93=0x0;_0x137f93<_0x46c7e2['length'];_0x137f93++){_0x28f67f[_0x8ad8('0x2c')](db[_0x8ad8('0x41')][_0x8ad8('0x4f')]({'membername':_0x138c01['name'],'UserId':_0x138c01['id'],'queue_name':_0x46c7e2[_0x137f93][_0x8ad8('0x20')],'VoiceQueueId':_0x46c7e2[_0x137f93]['id'],'interface':_0x37fcf9,'paused':_0x138c01[_0x8ad8('0x46')]||![],'penalty':_0x46c7e2[_0x137f93]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x8ad8('0x43')](_0x28f67f);}}}})['then'](function(){if(_0x138c01){return db[_0x8ad8('0x26')][_0x8ad8('0xe')]({'where':{'membername':_0x138c01[_0x8ad8('0x20')],'exitAt':null}});}})[_0x8ad8('0x25')](function(_0x3019f9){if(_0x138c01){if(_0x3019f9&&_0x3019f9[_0x8ad8('0x28')]){var _0x34bae4=[];_0x3019f9[_0x8ad8('0x2b')](function(_0x4ca282){_0x34bae4[_0x8ad8('0x2c')](_0x4ca282[_0x8ad8('0x24')]({'exitAt':moment()[_0x8ad8('0x29')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x8ad8('0x43')](_0x34bae4);}}})[_0x8ad8('0x25')](function(){if(_0x138c01){var _0x105052=[];var _0xd76580=[];var _0x13543d=utils['getChannels']();var _0x2e9592={'membername':_0x138c01[_0x8ad8('0x20')],'interface':_0x37fcf9,'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x138c01[_0x8ad8('0x21')],'internal':_0x138c01[_0x8ad8('0x22')]};_0x13543d[_0x8ad8('0x2b')](function(_0x3f1989){_0x105052[_0x8ad8('0x2c')](_[_0x8ad8('0x50')]({'channel':_0x3f1989,'type':'LOGIN','data1':_0x8ad8('0x51'),'data2':_0x37fcf9},_0x2e9592));if(_0x138c01[_0x8ad8('0x46')]){_0xd76580['push'](_[_0x8ad8('0x50')]({'channel':_0x3f1989,'type':_0x8ad8('0x27'),'data1':_0x8ad8('0x52')},_0x2e9592));}});return db['MemberReport'][_0x8ad8('0x53')](_0x105052[_0x8ad8('0x54')](_0xd76580),{'individualHooks':!![]});}})[_0x8ad8('0x25')](function(){if(_0x138c01){return _0x138c01['update']({'online':!![],'lastLoginAt':moment()[_0x8ad8('0x29')](_0x8ad8('0x2e')),'voicePause':_0x138c01[_0x8ad8('0x46')]||![],'mailPause':_0x138c01[_0x8ad8('0x46')]||![],'chatPause':_0x138c01[_0x8ad8('0x46')]||![],'faxPause':_0x138c01['loginInPause']||![],'smsPause':_0x138c01[_0x8ad8('0x46')]||![],'openchannelPause':_0x138c01['loginInPause']||![],'pauseType':_0x138c01[_0x8ad8('0x46')]?_0x8ad8('0x52'):null,'lastPauseAt':moment()['format'](_0x8ad8('0x2e')),'interface':_0x37fcf9});}})[_0x8ad8('0x25')](function(_0x5b4432){_0x7d8ae1(_0x5b4432);})['catch'](function(_0x30033f){_0x283241(_0x27c553['error'](0x1f4,_0x30033f['message']));});});};
\ No newline at end of file
+var _0xdc17=['length','forEach','push','isNil','interface','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','MemberReport','bulkCreate','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','faxPause','openchannelPause','whatsappPause','unpause','system','UserVoiceQueueRt','destroy','all','mobile','phone','loginInPause','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','LOGIN','callysquare','merge','LOGININPAUSE','concat','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','localhost','./user.socket','register','GetUser','User','findAll','options','raw','attributes','limit','include','map','model','then','info','debug','catch','message','error','ShowUser','find','stringify','PauseUser','where','name','role','internal','format','User\x20with\x20id\x20%s\x20not\x20found','params','update','PAUSE','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2d49cc,_0x343660){var _0x32daeb=function(_0x134732){while(--_0x134732){_0x2d49cc['push'](_0x2d49cc['shift']());}};_0x32daeb(++_0x343660);}(_0xdc17,0x12e));var _0x7dc1=function(_0x12b8b3,_0x5dfb2e){_0x12b8b3=_0x12b8b3-0x0;var _0x1b883f=_0xdc17[_0x12b8b3];return _0x1b883f;};'use strict';var _=require('lodash');var util=require(_0x7dc1('0x0'));var moment=require(_0x7dc1('0x1'));var BPromise=require('bluebird');var Redis=require(_0x7dc1('0x2'));var db=require(_0x7dc1('0x3'))['db'];var utils=require(_0x7dc1('0x4'));var logger=require(_0x7dc1('0x5'))(_0x7dc1('0x6'));var config=require(_0x7dc1('0x7'));config[_0x7dc1('0x8')]=_['defaults'](config['redis'],{'host':_0x7dc1('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7dc1('0xa'))[_0x7dc1('0xb')](socket);exports[_0x7dc1('0xc')]=function(_0x4f9d2b){var _0xa353e9=this;return new Promise(function(_0x1035ca,_0x9a1ca){return db[_0x7dc1('0xd')][_0x7dc1('0xe')]({'raw':_0x4f9d2b[_0x7dc1('0xf')]?_0x4f9d2b['options'][_0x7dc1('0x10')]===undefined?!![]:![]:!![],'where':_0x4f9d2b[_0x7dc1('0xf')]?_0x4f9d2b[_0x7dc1('0xf')]['where']||null:null,'attributes':_0x4f9d2b[_0x7dc1('0xf')]?_0x4f9d2b[_0x7dc1('0xf')][_0x7dc1('0x11')]||null:null,'limit':_0x4f9d2b[_0x7dc1('0xf')]?_0x4f9d2b[_0x7dc1('0xf')][_0x7dc1('0x12')]||null:null,'include':_0x4f9d2b[_0x7dc1('0xf')]?_0x4f9d2b[_0x7dc1('0xf')][_0x7dc1('0x13')]?_['map'](_0x4f9d2b[_0x7dc1('0xf')][_0x7dc1('0x13')],function(_0xfac3e0){return{'model':db[_0xfac3e0['model']],'as':_0xfac3e0['as'],'attributes':_0xfac3e0[_0x7dc1('0x11')],'include':_0xfac3e0[_0x7dc1('0x13')]?_[_0x7dc1('0x14')](_0xfac3e0['include'],function(_0x370cf2){return{'model':db[_0x370cf2[_0x7dc1('0x15')]],'as':_0x370cf2['as'],'attributes':_0x370cf2[_0x7dc1('0x11')],'include':_0x370cf2[_0x7dc1('0x13')]?_[_0x7dc1('0x14')](_0x370cf2[_0x7dc1('0x13')],function(_0x140833){return{'model':db[_0x140833[_0x7dc1('0x15')]],'as':_0x140833['as'],'attributes':_0x140833[_0x7dc1('0x11')]};}):[]};}):[]};}):[]:[]})[_0x7dc1('0x16')](function(_0x4d216d){logger[_0x7dc1('0x17')](_0x7dc1('0xc'),_0x4f9d2b);logger[_0x7dc1('0x18')](_0x7dc1('0xc'),_0x4f9d2b,JSON['stringify'](_0x4d216d));_0x1035ca(_0x4d216d);})[_0x7dc1('0x19')](function(_0x400935){logger['error']('GetUser',_0x400935[_0x7dc1('0x1a')],_0x4f9d2b);_0x9a1ca(_0xa353e9[_0x7dc1('0x1b')](0x1f4,_0x400935[_0x7dc1('0x1a')]));});});};exports[_0x7dc1('0x1c')]=function(_0x1e944c){var _0x145cfe=this;return new Promise(function(_0x3a1c26,_0x58142f){return db[_0x7dc1('0xd')][_0x7dc1('0x1d')]({'raw':_0x1e944c[_0x7dc1('0xf')]?_0x1e944c[_0x7dc1('0xf')][_0x7dc1('0x10')]===undefined?!![]:![]:!![],'where':_0x1e944c[_0x7dc1('0xf')]?_0x1e944c[_0x7dc1('0xf')]['where']||null:null,'attributes':_0x1e944c['options']?_0x1e944c['options'][_0x7dc1('0x11')]||null:null,'include':_0x1e944c[_0x7dc1('0xf')]?_0x1e944c[_0x7dc1('0xf')][_0x7dc1('0x13')]?_[_0x7dc1('0x14')](_0x1e944c[_0x7dc1('0xf')][_0x7dc1('0x13')],function(_0x512fad){return{'model':db[_0x512fad[_0x7dc1('0x15')]],'as':_0x512fad['as'],'attributes':_0x512fad[_0x7dc1('0x11')],'include':_0x512fad[_0x7dc1('0x13')]?_[_0x7dc1('0x14')](_0x512fad[_0x7dc1('0x13')],function(_0xf5362b){return{'model':db[_0xf5362b[_0x7dc1('0x15')]],'as':_0xf5362b['as'],'attributes':_0xf5362b[_0x7dc1('0x11')],'include':_0xf5362b[_0x7dc1('0x13')]?_[_0x7dc1('0x14')](_0xf5362b[_0x7dc1('0x13')],function(_0x3fdfbc){return{'model':db[_0x3fdfbc['model']],'as':_0x3fdfbc['as'],'attributes':_0x3fdfbc['attributes']};}):[]};}):[]};}):[]:[]})[_0x7dc1('0x16')](function(_0x1e46d8){logger['info']('ShowUser',_0x1e944c);logger[_0x7dc1('0x18')](_0x7dc1('0x1c'),_0x1e944c,JSON[_0x7dc1('0x1e')](_0x1e46d8));_0x3a1c26(_0x1e46d8);})[_0x7dc1('0x19')](function(_0xd6ff9d){logger[_0x7dc1('0x1b')]('ShowUser',_0xd6ff9d[_0x7dc1('0x1a')],_0x1e944c);_0x58142f(_0x145cfe[_0x7dc1('0x1b')](0x1f4,_0xd6ff9d[_0x7dc1('0x1a')]));});});};exports[_0x7dc1('0x1f')]=function(_0x4d6491){var _0x206bf2;return db[_0x7dc1('0xd')]['find']({'where':_0x4d6491[_0x7dc1('0xf')][_0x7dc1('0x20')]||{},'attributes':['id',_0x7dc1('0x21'),_0x7dc1('0x22'),_0x7dc1('0x23'),'interface']})['then'](function(_0x2bfc15){if(!_0x2bfc15){throw new Error(util[_0x7dc1('0x24')](_0x7dc1('0x25'),_0x4d6491[_0x7dc1('0x26')]['id']));}_0x206bf2=_0x2bfc15;return db['UserVoiceQueueRt'][_0x7dc1('0x27')]({'paused':0x1},{'where':{'UserId':_0x206bf2['id']},'individualHooks':!![]});})['then'](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x206bf2[_0x7dc1('0x21')],'type':_0x7dc1('0x28'),'exitAt':null}});})[_0x7dc1('0x16')](function(_0x243459){if(_0x243459&&_0x243459['length']){var _0x384d79=moment()['format'](_0x7dc1('0x29'));for(var _0x3ae7bd=0x0,_0xd855cd=_0x243459[_0x7dc1('0x2a')];_0x3ae7bd<_0xd855cd;_0x3ae7bd++){_0x243459[_0x3ae7bd]['updateAttributes']({'exitAt':_0x384d79});}}})['then'](function(){var _0x33bb40=[];var _0x3328d9=utils['getChannels']();_0x3328d9[_0x7dc1('0x2b')](function(_0x1fb0a4){_0x33bb40[_0x7dc1('0x2c')]({'channel':_0x1fb0a4,'membername':_0x206bf2[_0x7dc1('0x21')],'interface':_[_0x7dc1('0x2d')](_0x206bf2[_0x7dc1('0x2e')])?util['format'](_0x7dc1('0x2f'),_0x206bf2[_0x7dc1('0x21')]):_0x206bf2[_0x7dc1('0x2e')],'type':_0x7dc1('0x28'),'enterAt':moment()[_0x7dc1('0x24')](_0x7dc1('0x29')),'data1':_0x4d6491[_0x7dc1('0x30')][_0x7dc1('0x31')]||_0x7dc1('0x32'),'role':_0x206bf2[_0x7dc1('0x22')],'internal':_0x206bf2[_0x7dc1('0x23')],'uniqueid':_0x4d6491[_0x7dc1('0x30')][_0x7dc1('0x33')]||null});});return db[_0x7dc1('0x34')][_0x7dc1('0x35')](_0x33bb40,{'individualHooks':!![]});})[_0x7dc1('0x16')](function(){return _0x206bf2['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4d6491[_0x7dc1('0x30')][_0x7dc1('0x31')]||_0x7dc1('0x32'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0x7dc1('0x19')](function(_0xc8b15c){throw _0xc8b15c;});};exports[_0x7dc1('0x36')]=function(_0x354a93){return Promise['resolve']()[_0x7dc1('0x16')](function(){if(_0x354a93['body'][_0x7dc1('0x37')]&&!utils[_0x7dc1('0x38')](_0x354a93['body'][_0x7dc1('0x37')])){throw new Error(util[_0x7dc1('0x24')](_0x7dc1('0x39'),_0x354a93[_0x7dc1('0x30')][_0x7dc1('0x37')]));}return db['User'][_0x7dc1('0x3a')]({'where':_0x354a93[_0x7dc1('0xf')][_0x7dc1('0x20')]||{},'attributes':['id','name','role',_0x7dc1('0x23'),_0x7dc1('0x2e'),_0x7dc1('0x3b'),_0x7dc1('0x3c'),_0x7dc1('0x3d'),'chatPause',_0x7dc1('0x3e'),_0x7dc1('0x3f'),'smsPause',_0x7dc1('0x40'),'pauseType','lastPauseAt']});})[_0x7dc1('0x16')](function(_0x2c2b76){if(!_0x2c2b76){throw new Error(util['format'](_0x7dc1('0x25'),_0x354a93[_0x7dc1('0x26')]['id']));}return _0x2c2b76[_0x7dc1('0x41')](_0x354a93[_0x7dc1('0x30')]['channel'],_0x7dc1('0x42'));})['catch'](function(_0x126dad){throw _0x126dad;});};exports['LogoutUser']=function(_0x1ce53a){var _0xebd541=this;return new Promise(function(_0x4e20cc,_0x31ff6d){var _0x5c8061;return db['User'][_0x7dc1('0x3a')]({'where':_0x1ce53a[_0x7dc1('0xf')][_0x7dc1('0x20')]||{},'attributes':['id','name']})[_0x7dc1('0x16')](function(_0x11b2ce){if(_0x11b2ce){_0x5c8061=_0x11b2ce;return db[_0x7dc1('0x43')][_0x7dc1('0x44')]({'where':{'membername':_0x5c8061[_0x7dc1('0x21')]},'individualHooks':!![]});}})[_0x7dc1('0x16')](function(){if(_0x5c8061){return db[_0x7dc1('0x34')]['findAll']({'where':{'membername':_0x5c8061[_0x7dc1('0x21')],'exitAt':null}});}})['then'](function(_0x555380){if(_0x5c8061){if(_0x555380&&_0x555380[_0x7dc1('0x2a')]){var _0x3449ba=[];_0x555380['forEach'](function(_0x5a101c){_0x3449ba[_0x7dc1('0x2c')](_0x5a101c['update']({'exitAt':moment()[_0x7dc1('0x24')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7dc1('0x45')](_0x3449ba);}}})[_0x7dc1('0x16')](function(){if(_0x5c8061){return _0x5c8061['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x179442){_0x4e20cc(_0x179442);})[_0x7dc1('0x19')](function(_0x547fee){_0x31ff6d(_0xebd541[_0x7dc1('0x1b')](0x1f4,_0x547fee[_0x7dc1('0x1a')]));});});};exports['LoginUser']=function(_0x11e7f8){var _0x28c5f0=this;return new Promise(function(_0x271cbf,_0x533194){var _0x2dc82e;var _0x170427;var _0xfead9e;var _0x13bb2c;return db['User'][_0x7dc1('0x3a')]({'where':_0x11e7f8[_0x7dc1('0xf')][_0x7dc1('0x20')]||{},'attributes':['id',_0x7dc1('0x21'),'role',_0x7dc1('0x46'),_0x7dc1('0x47'),_0x7dc1('0x23'),_0x7dc1('0x48'),_0x7dc1('0x2e')]})[_0x7dc1('0x16')](function(_0x1f9eda){if(_0x1f9eda){_0x2dc82e=_0x1f9eda;_0x13bb2c=_0x11e7f8[_0x7dc1('0x30')][_0x7dc1('0x2e')]?_0x11e7f8[_0x7dc1('0x30')][_0x7dc1('0x2e')]:util[_0x7dc1('0x24')](_0x7dc1('0x2f'),_0x2dc82e[_0x7dc1('0x21')]);return db[_0x7dc1('0xd')][_0x7dc1('0x49')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x2dc82e['id']}}});}})[_0x7dc1('0x16')](function(_0x4830ac){if(_0x4830ac){_0xfead9e=_0x4830ac;return require('../../config/license/util')[_0x7dc1('0x4a')]();}})[_0x7dc1('0x16')](function(_0x1d17ae){if(_0x1d17ae&&_0x1d17ae[_0x7dc1('0x4b')]&&_0xfead9e>=_0x1d17ae[_0x7dc1('0x4b')]){throw new Error(_0x7dc1('0x4c'));}})[_0x7dc1('0x16')](function(){if(_0x2dc82e){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x2dc82e[_0x7dc1('0x21')]},'individualHooks':!![]});}})[_0x7dc1('0x16')](function(){if(_0x2dc82e){return _0x2dc82e[_0x7dc1('0x4d')]({'raw':!![]});}})['then'](function(_0xe852f4){if(_0x2dc82e){if(_0xe852f4){var _0x41675e=[];_0x170427=_0xe852f4;if(_0x170427['length']){for(var _0x5f51bb=0x0;_0x5f51bb<_0x170427['length'];_0x5f51bb++){_0x41675e['push'](db['UserVoiceQueueRt'][_0x7dc1('0x4e')]({'membername':_0x2dc82e['name'],'UserId':_0x2dc82e['id'],'queue_name':_0x170427[_0x5f51bb][_0x7dc1('0x21')],'VoiceQueueId':_0x170427[_0x5f51bb]['id'],'interface':_0x13bb2c,'paused':_0x2dc82e[_0x7dc1('0x48')]||![],'penalty':_0x170427[_0x5f51bb][_0x7dc1('0x4f')]||0x0}));}return BPromise['all'](_0x41675e);}}}})['then'](function(){if(_0x2dc82e){return db[_0x7dc1('0x34')][_0x7dc1('0xe')]({'where':{'membername':_0x2dc82e[_0x7dc1('0x21')],'exitAt':null}});}})['then'](function(_0x324879){if(_0x2dc82e){if(_0x324879&&_0x324879[_0x7dc1('0x2a')]){var _0x358b0f=[];_0x324879[_0x7dc1('0x2b')](function(_0x5bb9b2){_0x358b0f[_0x7dc1('0x2c')](_0x5bb9b2[_0x7dc1('0x27')]({'exitAt':moment()['format'](_0x7dc1('0x29'))}));});return BPromise[_0x7dc1('0x45')](_0x358b0f);}}})[_0x7dc1('0x16')](function(){if(_0x2dc82e){var _0x553a7e=[];var _0x4970aa=[];var _0x1af83f=utils[_0x7dc1('0x50')]();var _0x27626b={'membername':_0x2dc82e[_0x7dc1('0x21')],'interface':_0x13bb2c,'enterAt':moment()['format'](_0x7dc1('0x29')),'role':_0x2dc82e['role'],'internal':_0x2dc82e['internal']};_0x1af83f['forEach'](function(_0x42d481){_0x553a7e[_0x7dc1('0x2c')](_['merge']({'channel':_0x42d481,'type':_0x7dc1('0x51'),'data1':_0x7dc1('0x52'),'data2':_0x13bb2c},_0x27626b));if(_0x2dc82e[_0x7dc1('0x48')]){_0x4970aa[_0x7dc1('0x2c')](_[_0x7dc1('0x53')]({'channel':_0x42d481,'type':_0x7dc1('0x28'),'data1':_0x7dc1('0x54')},_0x27626b));}});return db['MemberReport'][_0x7dc1('0x35')](_0x553a7e[_0x7dc1('0x55')](_0x4970aa),{'individualHooks':!![]});}})[_0x7dc1('0x16')](function(){if(_0x2dc82e){return _0x2dc82e[_0x7dc1('0x27')]({'online':!![],'lastLoginAt':moment()[_0x7dc1('0x24')](_0x7dc1('0x29')),'voicePause':_0x2dc82e['loginInPause']||![],'mailPause':_0x2dc82e['loginInPause']||![],'chatPause':_0x2dc82e['loginInPause']||![],'faxPause':_0x2dc82e[_0x7dc1('0x48')]||![],'smsPause':_0x2dc82e[_0x7dc1('0x48')]||![],'openchannelPause':_0x2dc82e[_0x7dc1('0x48')]||![],'pauseType':_0x2dc82e[_0x7dc1('0x48')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x7dc1('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x13bb2c});}})[_0x7dc1('0x16')](function(_0x33d4a1){_0x271cbf(_0x33d4a1);})[_0x7dc1('0x19')](function(_0x57205f){_0x533194(_0x28c5f0[_0x7dc1('0x1b')](0x1f4,_0x57205f[_0x7dc1('0x1a')]));});});};
\ No newline at end of file
index e9e78b1..ef191d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x416a=['removeListener','length','user:','./user.events','update','emit'];(function(_0x4ae9b4,_0x408720){var _0x4cc544=function(_0x54a64a){while(--_0x54a64a){_0x4ae9b4['push'](_0x4ae9b4['shift']());}};_0x4cc544(++_0x408720);}(_0x416a,0x153));var _0xa416=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x416a[_0x3dd15e];return _0x231fd0;};'use strict';var UserEvents=require(_0xa416('0x0'));var events=['save','remove',_0xa416('0x1')];function createListener(_0x4a27c0,_0x3aa141){return function(_0x277c2e){_0x3aa141[_0xa416('0x2')](_0x4a27c0,_0x277c2e);};}function removeListener(_0x227796,_0x200c3a){return function(){UserEvents[_0xa416('0x3')](_0x227796,_0x200c3a);};}exports['register']=function(_0x385e67){for(var _0xa36d95=0x0,_0x466612=events[_0xa416('0x4')];_0xa36d95<_0x466612;_0xa36d95++){var _0x36a2e5=events[_0xa36d95];var _0xb28a17=createListener(_0xa416('0x5')+_0x36a2e5,_0x385e67);UserEvents['on'](_0x36a2e5,_0xb28a17);}};
\ No newline at end of file
+var _0x5f18=['emit','removeListener','register','length','user:','remove'];(function(_0x57c83c,_0x1028c0){var _0x4ac758=function(_0x12a6b1){while(--_0x12a6b1){_0x57c83c['push'](_0x57c83c['shift']());}};_0x4ac758(++_0x1028c0);}(_0x5f18,0x185));var _0x85f1=function(_0x1b455f,_0x4cfd39){_0x1b455f=_0x1b455f-0x0;var _0xe59ed5=_0x5f18[_0x1b455f];return _0xe59ed5;};'use strict';var UserEvents=require('./user.events');var events=['save',_0x85f1('0x0'),'update'];function createListener(_0x120d40,_0x33207d){return function(_0x3954e2){_0x33207d[_0x85f1('0x1')](_0x120d40,_0x3954e2);};}function removeListener(_0x332489,_0x3b3f34){return function(){UserEvents[_0x85f1('0x2')](_0x332489,_0x3b3f34);};}exports[_0x85f1('0x3')]=function(_0x3896e7){for(var _0x135aef=0x0,_0x5df275=events[_0x85f1('0x4')];_0x135aef<_0x5df275;_0x135aef++){var _0x406e87=events[_0x135aef];var _0x5a948e=createListener(_0x85f1('0x5')+_0x406e87,_0x3896e7);UserEvents['on'](_0x406e87,_0x5a948e);}};
\ No newline at end of file
index f6eaf06..b4b8745 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(_0x2f0428,_0x2f780f){var _0x2f9e54=function(_0x25352a){while(--_0x25352a){_0x2f0428['push'](_0x2f0428['shift']());}};_0x2f9e54(++_0x2f780f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0xcb91[_0x5dfc2a];return _0x3f1a71;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x429a2c,_0x382ddb){var _0x3e7604=function(_0x188c80){while(--_0x188c80){_0x429a2c['push'](_0x429a2c['shift']());}};_0x3e7604(++_0x382ddb);}(_0x70e0,0x17b));var _0x070e=function(_0xc8e919,_0x2b6cd5){_0xc8e919=_0xc8e919-0x0;var _0x5db11a=_0x70e0[_0xc8e919];return _0x5db11a;};'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 4dcf2dc..0f4c341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22b9=['INTEGER','sequelize','exports'];(function(_0x19856d,_0x5e5a6d){var _0x2a9dd6=function(_0x4fc62d){while(--_0x4fc62d){_0x19856d['push'](_0x19856d['shift']());}};_0x2a9dd6(++_0x5e5a6d);}(_0x22b9,0x9a));var _0x922b=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0x22b9[_0x4a3898];return _0x25ceb0;};'use strict';var Sequelize=require(_0x922b('0x0'));module[_0x922b('0x1')]={'penalty':{'type':Sequelize[_0x922b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x64f0=['sequelize'];(function(_0x3f73bd,_0x4e182d){var _0x223919=function(_0x181b44){while(--_0x181b44){_0x3f73bd['push'](_0x3f73bd['shift']());}};_0x223919(++_0x4e182d);}(_0x64f0,0x1a0));var _0x064f=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x64f0[_0x279d37];return _0x530173;};'use strict';var Sequelize=require(_0x064f('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 5f0c411..73861ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['exports','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xf483,0xd5));var _0x3f48=function(_0x50b15b,_0x71ac13){_0x50b15b=_0x50b15b-0x0;var _0x1334e2=_0xf483[_0x50b15b];return _0x1334e2;};'use strict';var _=require(_0x3f48('0x0'));var util=require(_0x3f48('0x1'));var logger=require(_0x3f48('0x2'))(_0x3f48('0x3'));var moment=require(_0x3f48('0x4'));var BPromise=require(_0x3f48('0x5'));var rp=require(_0x3f48('0x6'));var fs=require('fs');var path=require(_0x3f48('0x7'));var rimraf=require(_0x3f48('0x8'));var config=require(_0x3f48('0x9'));var attributes=require(_0x3f48('0xa'));module[_0x3f48('0xb')]=function(_0x67143,_0xf09b0f){return _0x67143['define'](_0x3f48('0xc'),attributes,{'tableName':_0x3f48('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1053=['bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment'];(function(_0x5cca92,_0x2cd267){var _0x34d1e0=function(_0x4ee751){while(--_0x4ee751){_0x5cca92['push'](_0x5cca92['shift']());}};_0x34d1e0(++_0x2cd267);}(_0x1053,0x114));var _0x3105=function(_0x2a0183,_0x3fc93c){_0x2a0183=_0x2a0183-0x0;var _0x158c3a=_0x1053[_0x2a0183];return _0x158c3a;};'use strict';var _=require(_0x3105('0x0'));var util=require('util');var logger=require(_0x3105('0x1'))(_0x3105('0x2'));var moment=require(_0x3105('0x3'));var BPromise=require(_0x3105('0x4'));var rp=require(_0x3105('0x5'));var fs=require('fs');var path=require(_0x3105('0x6'));var rimraf=require(_0x3105('0x7'));var config=require(_0x3105('0x8'));var attributes=require(_0x3105('0x9'));module[_0x3105('0xa')]=function(_0x24819e,_0x452012){return _0x24819e[_0x3105('0xb')](_0x3105('0xc'),attributes,{'tableName':_0x3105('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc13464..0c43533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b68=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','UserChatQueue,\x20%s,\x20%s','UserChatQueue,\x20%s,\x20%s,\x20%s'];(function(_0x585d81,_0xf6d74f){var _0x1aca0d=function(_0x3782d3){while(--_0x3782d3){_0x585d81['push'](_0x585d81['shift']());}};_0x1aca0d(++_0xf6d74f);}(_0x7b68,0x13b));var _0x87b6=function(_0x4e217a,_0x320c92){_0x4e217a=_0x4e217a-0x0;var _0x43f0ab=_0x7b68[_0x4e217a];return _0x43f0ab;};'use strict';var _=require(_0x87b6('0x0'));var util=require(_0x87b6('0x1'));var moment=require('moment');var BPromise=require(_0x87b6('0x2'));var rs=require(_0x87b6('0x3'));var fs=require('fs');var Redis=require(_0x87b6('0x4'));var db=require(_0x87b6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x87b6('0x6'))(_0x87b6('0x7'));var config=require(_0x87b6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x87b6('0x9')][_0x87b6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x366411,_0x31590d,_0x5a13af){return new BPromise(function(_0x582470,_0x34fb9f){return client[_0x87b6('0xb')](_0x366411,_0x5a13af)['then'](function(_0x48dbb5){logger[_0x87b6('0xc')](_0x87b6('0xd'),_0x31590d,'request\x20sent');logger['debug'](_0x87b6('0xe'),_0x31590d,_0x87b6('0xf'),JSON[_0x87b6('0x10')](_0x48dbb5));if(_0x48dbb5[_0x87b6('0x11')]){if(_0x48dbb5['error'][_0x87b6('0x12')]===0x1f4){logger[_0x87b6('0x11')](_0x87b6('0xd'),_0x31590d,_0x48dbb5[_0x87b6('0x11')][_0x87b6('0x13')]);return _0x34fb9f(_0x48dbb5[_0x87b6('0x11')][_0x87b6('0x13')]);}logger[_0x87b6('0x11')](_0x87b6('0xd'),_0x31590d,_0x48dbb5[_0x87b6('0x11')]['message']);return _0x582470(_0x48dbb5[_0x87b6('0x11')][_0x87b6('0x13')]);}else{logger['info'](_0x87b6('0xd'),_0x31590d,_0x87b6('0xf'));_0x582470(_0x48dbb5[_0x87b6('0x14')]['message']);}})[_0x87b6('0x15')](function(_0x253092){logger['error'](_0x87b6('0xd'),_0x31590d,_0x253092);_0x34fb9f(_0x253092);});});}
\ No newline at end of file
+var _0xa21d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment'];(function(_0x407b45,_0x2b54c5){var _0x2f5a01=function(_0x40a0e8){while(--_0x40a0e8){_0x407b45['push'](_0x407b45['shift']());}};_0x2f5a01(++_0x2b54c5);}(_0xa21d,0x1d2));var _0xda21=function(_0x349d7f,_0x3b4f75){_0x349d7f=_0x349d7f-0x0;var _0x4a39ae=_0xa21d[_0x349d7f];return _0x4a39ae;};'use strict';var _=require('lodash');var util=require(_0xda21('0x0'));var moment=require(_0xda21('0x1'));var BPromise=require(_0xda21('0x2'));var rs=require(_0xda21('0x3'));var fs=require('fs');var Redis=require(_0xda21('0x4'));var db=require(_0xda21('0x5'))['db'];var utils=require(_0xda21('0x6'));var logger=require(_0xda21('0x7'))(_0xda21('0x8'));var config=require(_0xda21('0x9'));var jayson=require(_0xda21('0xa'));var client=jayson[_0xda21('0xb')][_0xda21('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x98231a,_0x2b9c4c,_0x5db90f){return new BPromise(function(_0x238052,_0x3d3244){return client[_0xda21('0xd')](_0x98231a,_0x5db90f)[_0xda21('0xe')](function(_0x3cd499){logger[_0xda21('0xf')](_0xda21('0x10'),_0x2b9c4c,_0xda21('0x11'));logger[_0xda21('0x12')](_0xda21('0x13'),_0x2b9c4c,'request\x20sent',JSON[_0xda21('0x14')](_0x3cd499));if(_0x3cd499[_0xda21('0x15')]){if(_0x3cd499[_0xda21('0x15')][_0xda21('0x16')]===0x1f4){logger[_0xda21('0x15')](_0xda21('0x10'),_0x2b9c4c,_0x3cd499[_0xda21('0x15')][_0xda21('0x17')]);return _0x3d3244(_0x3cd499[_0xda21('0x15')][_0xda21('0x17')]);}logger[_0xda21('0x15')](_0xda21('0x10'),_0x2b9c4c,_0x3cd499[_0xda21('0x15')]['message']);return _0x238052(_0x3cd499[_0xda21('0x15')]['message']);}else{logger[_0xda21('0xf')](_0xda21('0x10'),_0x2b9c4c,_0xda21('0x11'));_0x238052(_0x3cd499[_0xda21('0x18')][_0xda21('0x17')]);}})[_0xda21('0x19')](function(_0xd483d8){logger[_0xda21('0x15')](_0xda21('0x10'),_0x2b9c4c,_0xd483d8);_0x3d3244(_0xd483d8);});});}
\ No newline at end of file
index b967ef7..100461f 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(_0xb12603,_0x142505){var _0x2bdc24=function(_0x5dca90){while(--_0x5dca90){_0xb12603['push'](_0xb12603['shift']());}};_0x2bdc24(++_0x142505);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x37d03e,_0x449873){var _0x203c3a=function(_0x299b99){while(--_0x299b99){_0x37d03e['push'](_0x37d03e['shift']());}};_0x203c3a(++_0x449873);}(_0xe706,0xa3));var _0x6e70=function(_0x2b2c53,_0x4bcf9b){_0x2b2c53=_0x2b2c53-0x0;var _0x311ec2=_0xe706[_0x2b2c53];return _0x311ec2;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index b8f9cd3..0437d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a6b=['sequelize','exports','INTEGER','STRING'];(function(_0x317f96,_0x54bd3d){var _0x3ed0f7=function(_0x5e5514){while(--_0x5e5514){_0x317f96['push'](_0x317f96['shift']());}};_0x3ed0f7(++_0x54bd3d);}(_0x1a6b,0x198));var _0xb1a6=function(_0x463865,_0x516711){_0x463865=_0x463865-0x0;var _0x53a60a=_0x1a6b[_0x463865];return _0x53a60a;};'use strict';var Sequelize=require(_0xb1a6('0x0'));module[_0xb1a6('0x1')]={'penalty':{'type':Sequelize[_0xb1a6('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xb1a6('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xb1a6('0x3')]}};
\ No newline at end of file
+var _0x1e6e=['STRING','sequelize','INTEGER'];(function(_0x38ce08,_0x1e3cbb){var _0x53a008=function(_0x43b059){while(--_0x43b059){_0x38ce08['push'](_0x38ce08['shift']());}};_0x53a008(++_0x1e3cbb);}(_0x1e6e,0x193));var _0xe1e6=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x1e6e[_0x35885a];return _0xe86249;};'use strict';var Sequelize=require(_0xe1e6('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xe1e6('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xe1e6('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xe1e6('0x2')]}};
\ No newline at end of file
index 3f98b86..fdbbdea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d70=['moment','bluebird','request-promise','path','../../config/environment','UserFaxQueue','util','api'];(function(_0x34ccfe,_0x4e6de8){var _0x50d168=function(_0x477c9a){while(--_0x477c9a){_0x34ccfe['push'](_0x34ccfe['shift']());}};_0x50d168(++_0x4e6de8);}(_0x7d70,0x12e));var _0x07d7=function(_0x515060,_0xb5d49d){_0x515060=_0x515060-0x0;var _0x193a88=_0x7d70[_0x515060];return _0x193a88;};'use strict';var _=require('lodash');var util=require(_0x07d7('0x0'));var logger=require('../../config/logger')(_0x07d7('0x1'));var moment=require(_0x07d7('0x2'));var BPromise=require(_0x07d7('0x3'));var rp=require(_0x07d7('0x4'));var fs=require('fs');var path=require(_0x07d7('0x5'));var rimraf=require('rimraf');var config=require(_0x07d7('0x6'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x520081,_0x46cff7){return _0x520081['define'](_0x07d7('0x7'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a00=['request-promise','path','rimraf','../../config/environment','exports','define','user_has_fax_queues','util','../../config/logger','api','moment','bluebird'];(function(_0x5eac82,_0x29f881){var _0x76bde2=function(_0x16fae5){while(--_0x16fae5){_0x5eac82['push'](_0x5eac82['shift']());}};_0x76bde2(++_0x29f881);}(_0x6a00,0x127));var _0x06a0=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x6a00[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x06a0('0x0'));var logger=require(_0x06a0('0x1'))(_0x06a0('0x2'));var moment=require(_0x06a0('0x3'));var BPromise=require(_0x06a0('0x4'));var rp=require(_0x06a0('0x5'));var fs=require('fs');var path=require(_0x06a0('0x6'));var rimraf=require(_0x06a0('0x7'));var config=require(_0x06a0('0x8'));var attributes=require('./userFaxQueue.attributes');module[_0x06a0('0x9')]=function(_0x3b6cd8,_0x2992a3){return _0x3b6cd8[_0x06a0('0xa')]('UserFaxQueue',attributes,{'tableName':_0x06a0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 731e85a..c6d01c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4016=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserFaxQueue,\x20%s,\x20%s','result'];(function(_0x25ab1f,_0x2d186a){var _0xc4a7b3=function(_0x45f334){while(--_0x45f334){_0x25ab1f['push'](_0x25ab1f['shift']());}};_0xc4a7b3(++_0x2d186a);}(_0x4016,0x9a));var _0x6401=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x4016[_0x126558];return _0x1f6d14;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6401('0x0'));var BPromise=require(_0x6401('0x1'));var rs=require(_0x6401('0x2'));var fs=require('fs');var Redis=require(_0x6401('0x3'));var db=require(_0x6401('0x4'))['db'];var utils=require(_0x6401('0x5'));var logger=require(_0x6401('0x6'))(_0x6401('0x7'));var config=require(_0x6401('0x8'));var jayson=require(_0x6401('0x9'));var client=jayson[_0x6401('0xa')][_0x6401('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x59ab41,_0x33c55f,_0xbdf7c0){return new BPromise(function(_0x576587,_0x3270ca){return client['request'](_0x59ab41,_0xbdf7c0)['then'](function(_0x4a8b2a){logger[_0x6401('0xc')]('UserFaxQueue,\x20%s,\x20%s',_0x33c55f,_0x6401('0xd'));logger[_0x6401('0xe')](_0x6401('0xf'),_0x33c55f,_0x6401('0xd'),JSON[_0x6401('0x10')](_0x4a8b2a));if(_0x4a8b2a[_0x6401('0x11')]){if(_0x4a8b2a[_0x6401('0x11')][_0x6401('0x12')]===0x1f4){logger[_0x6401('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x33c55f,_0x4a8b2a['error'][_0x6401('0x13')]);return _0x3270ca(_0x4a8b2a['error']['message']);}logger['error'](_0x6401('0x14'),_0x33c55f,_0x4a8b2a[_0x6401('0x11')][_0x6401('0x13')]);return _0x576587(_0x4a8b2a[_0x6401('0x11')][_0x6401('0x13')]);}else{logger[_0x6401('0xc')](_0x6401('0x14'),_0x33c55f,_0x6401('0xd'));_0x576587(_0x4a8b2a[_0x6401('0x15')][_0x6401('0x13')]);}})['catch'](function(_0x90ff7c){logger[_0x6401('0x11')](_0x6401('0x14'),_0x33c55f,_0x90ff7c);_0x3270ca(_0x90ff7c);});});}
\ No newline at end of file
+var _0x4205=['stringify','error','message','info','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x1cd9c7,_0x8cc9b7){var _0x577167=function(_0xe034ed){while(--_0xe034ed){_0x1cd9c7['push'](_0x1cd9c7['shift']());}};_0x577167(++_0x8cc9b7);}(_0x4205,0x182));var _0x5420=function(_0x235d43,_0x1019cf){_0x235d43=_0x235d43-0x0;var _0x11a7cc=_0x4205[_0x235d43];return _0x11a7cc;};'use strict';var _=require(_0x5420('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5420('0x1'));var fs=require('fs');var Redis=require(_0x5420('0x2'));var db=require(_0x5420('0x3'))['db'];var utils=require(_0x5420('0x4'));var logger=require('../../config/logger')(_0x5420('0x5'));var config=require('../../config/environment');var jayson=require(_0x5420('0x6'));var client=jayson[_0x5420('0x7')][_0x5420('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x54e4f3,_0x52a89b,_0xb2ba4d){return new BPromise(function(_0x434de9,_0x2e992d){return client['request'](_0x54e4f3,_0xb2ba4d)[_0x5420('0x9')](function(_0x32290d){logger['info'](_0x5420('0xa'),_0x52a89b,_0x5420('0xb'));logger['debug'](_0x5420('0xc'),_0x52a89b,_0x5420('0xb'),JSON[_0x5420('0xd')](_0x32290d));if(_0x32290d[_0x5420('0xe')]){if(_0x32290d[_0x5420('0xe')]['code']===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x52a89b,_0x32290d[_0x5420('0xe')][_0x5420('0xf')]);return _0x2e992d(_0x32290d[_0x5420('0xe')][_0x5420('0xf')]);}logger[_0x5420('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x52a89b,_0x32290d[_0x5420('0xe')][_0x5420('0xf')]);return _0x434de9(_0x32290d[_0x5420('0xe')][_0x5420('0xf')]);}else{logger[_0x5420('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x52a89b,_0x5420('0xb'));_0x434de9(_0x32290d[_0x5420('0x11')]['message']);}})[_0x5420('0x12')](function(_0x311529){logger[_0x5420('0xe')](_0x5420('0xa'),_0x52a89b,_0x311529);_0x2e992d(_0x311529);});});}
\ No newline at end of file
index e446d4d..8d07785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x1e1858,_0x2bc0ec){var _0x4d8d7a=function(_0x2145eb){while(--_0x2145eb){_0x1e1858['push'](_0x1e1858['shift']());}};_0x4d8d7a(++_0x2bc0ec);}(_0x9c44,0x178));var _0x49c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x9c44[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x1d8d06,_0x1d8898){var _0x1a7237=function(_0x2cf70c){while(--_0x2cf70c){_0x1d8d06['push'](_0x1d8d06['shift']());}};_0x1a7237(++_0x1d8898);}(_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 564d414..2de2de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66d2=['exports','INTEGER'];(function(_0x1fa9cc,_0x1022df){var _0x90686=function(_0x439c23){while(--_0x439c23){_0x1fa9cc['push'](_0x1fa9cc['shift']());}};_0x90686(++_0x1022df);}(_0x66d2,0x1da));var _0x266d=function(_0x31d767,_0x1471c9){_0x31d767=_0x31d767-0x0;var _0x56bab0=_0x66d2[_0x31d767];return _0x56bab0;};'use strict';var Sequelize=require('sequelize');module[_0x266d('0x0')]={'penalty':{'type':Sequelize[_0x266d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xac47=['exports','INTEGER','sequelize'];(function(_0x28014d,_0x383e2f){var _0x2572cc=function(_0x17aabd){while(--_0x17aabd){_0x28014d['push'](_0x28014d['shift']());}};_0x2572cc(++_0x383e2f);}(_0xac47,0xef));var _0x7ac4=function(_0x5f5495,_0x30d087){_0x5f5495=_0x5f5495-0x0;var _0x14d8a3=_0xac47[_0x5f5495];return _0x14d8a3;};'use strict';var Sequelize=require(_0x7ac4('0x0'));module[_0x7ac4('0x1')]={'penalty':{'type':Sequelize[_0x7ac4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ad90e65..c8bde12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f0=['request-promise','path','rimraf','../../config/environment','exports','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x56dac6,_0x291782){var _0x5766f1=function(_0x17a719){while(--_0x17a719){_0x56dac6['push'](_0x56dac6['shift']());}};_0x5766f1(++_0x291782);}(_0xb5f0,0x144));var _0x0b5f=function(_0xc35608,_0x6f0a34){_0xc35608=_0xc35608-0x0;var _0x4be993=_0xb5f0[_0xc35608];return _0x4be993;};'use strict';var _=require(_0x0b5f('0x0'));var util=require(_0x0b5f('0x1'));var logger=require(_0x0b5f('0x2'))(_0x0b5f('0x3'));var moment=require(_0x0b5f('0x4'));var BPromise=require(_0x0b5f('0x5'));var rp=require(_0x0b5f('0x6'));var fs=require('fs');var path=require(_0x0b5f('0x7'));var rimraf=require(_0x0b5f('0x8'));var config=require(_0x0b5f('0x9'));var attributes=require('./userMailQueue.attributes');module[_0x0b5f('0xa')]=function(_0x4d225c,_0x1c7222){return _0x4d225c['define']('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a71=['request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x297c50,_0x448d97){var _0x36f0e1=function(_0x498b0c){while(--_0x498b0c){_0x297c50['push'](_0x297c50['shift']());}};_0x36f0e1(++_0x448d97);}(_0x0a71,0x94));var _0x10a7=function(_0x2e792b,_0x4b0cbb){_0x2e792b=_0x2e792b-0x0;var _0x2ca5f7=_0x0a71[_0x2e792b];return _0x2ca5f7;};'use strict';var _=require(_0x10a7('0x0'));var util=require(_0x10a7('0x1'));var logger=require(_0x10a7('0x2'))(_0x10a7('0x3'));var moment=require(_0x10a7('0x4'));var BPromise=require(_0x10a7('0x5'));var rp=require(_0x10a7('0x6'));var fs=require('fs');var path=require(_0x10a7('0x7'));var rimraf=require(_0x10a7('0x8'));var config=require(_0x10a7('0x9'));var attributes=require(_0x10a7('0xa'));module[_0x10a7('0xb')]=function(_0x575a40,_0xc3525b){return _0x575a40['define'](_0x10a7('0xc'),attributes,{'tableName':_0x10a7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35008a9..ec0d170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x9a681d,_0x1e7e89){var _0x432153=function(_0x30416e){while(--_0x30416e){_0x9a681d['push'](_0x9a681d['shift']());}};_0x432153(++_0x1e7e89);}(_0xe14b,0x93));var _0xbe14=function(_0x3ec3a6,_0x10cb7f){_0x3ec3a6=_0x3ec3a6-0x0;var _0x4ce546=_0xe14b[_0x3ec3a6];return _0x4ce546;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x530d81,_0x2dc674){var _0x3ed0cb=function(_0x3fe60d){while(--_0x3fe60d){_0x530d81['push'](_0x530d81['shift']());}};_0x3ed0cb(++_0x2dc674);}(_0xe14b,0x93));var _0xbe14=function(_0x2669ee,_0x236170){_0x2669ee=_0x2669ee-0x0;var _0x5d9245=_0xe14b[_0x2669ee];return _0x5d9245;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
index 22c3b21..b055678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x044c=['isAuthenticated','sendUserNotification','path','connect-timeout','express','Router','fs-extra','../../config/environment','./userNotification.controller','post'];(function(_0x4f187d,_0x336808){var _0xfe8881=function(_0x30f7f0){while(--_0x30f7f0){_0x4f187d['push'](_0x4f187d['shift']());}};_0xfe8881(++_0x336808);}(_0x044c,0x17e));var _0xc044=function(_0x2e4df8,_0x172be4){_0x2e4df8=_0x2e4df8-0x0;var _0x3195b4=_0x044c[_0x2e4df8];return _0x3195b4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc044('0x0'));var timeout=require(_0xc044('0x1'));var express=require(_0xc044('0x2'));var router=express[_0xc044('0x3')]();var fs_extra=require(_0xc044('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc044('0x5'));var controller=require(_0xc044('0x6'));router[_0xc044('0x7')]('/',auth[_0xc044('0x8')](),controller[_0xc044('0x9')]);module['exports']=router;
\ No newline at end of file
+var _0x0184=['../../components/interaction/service','../../config/environment','./userNotification.controller','post','sendUserNotification','exports','multer','util','path','express','Router','fs-extra'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0184,0xc6));var _0x4018=function(_0x5cb4f0,_0xb16665){_0x5cb4f0=_0x5cb4f0-0x0;var _0x22208=_0x0184[_0x5cb4f0];return _0x22208;};'use strict';var multer=require(_0x4018('0x0'));var util=require(_0x4018('0x1'));var path=require(_0x4018('0x2'));var timeout=require('connect-timeout');var express=require(_0x4018('0x3'));var router=express[_0x4018('0x4')]();var fs_extra=require(_0x4018('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4018('0x6'));var config=require(_0x4018('0x7'));var controller=require(_0x4018('0x8'));router[_0x4018('0x9')]('/',auth['isAuthenticated'](),controller[_0x4018('0xa')]);module[_0x4018('0xb')]=router;
\ No newline at end of file
index 2e16f0d..b144bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d71=['STRING'];(function(_0x4cbf20,_0x1bfa66){var _0x582ae4=function(_0x5eca38){while(--_0x5eca38){_0x4cbf20['push'](_0x4cbf20['shift']());}};_0x582ae4(++_0x1bfa66);}(_0x2d71,0x10b));var _0x12d7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2d71[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x12d7('0x0')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x12d7('0x0')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x1a06=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x4ad0f7,_0x1920b0){var _0x30f5c8=function(_0x2aa6b6){while(--_0x2aa6b6){_0x4ad0f7['push'](_0x4ad0f7['shift']());}};_0x30f5c8(++_0x1920b0);}(_0x1a06,0xd7));var _0x61a0=function(_0x32c8f1,_0x2945df){_0x32c8f1=_0x32c8f1-0x0;var _0x577066=_0x1a06[_0x32c8f1];return _0x577066;};'use strict';var Sequelize=require(_0x61a0('0x0'));module[_0x61a0('0x1')]={'body':{'type':Sequelize[_0x61a0('0x2')]},'senderName':{'type':Sequelize[_0x61a0('0x3')]},'recipientsId':{'type':Sequelize[_0x61a0('0x2')]},'recipientsDescription':{'type':Sequelize[_0x61a0('0x3')]},'beep':{'type':Sequelize[_0x61a0('0x4')]}};
\ No newline at end of file
index e65c82f..76bbce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4b=['localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','error','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','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','UserNotification','create','forEach','emit','userNotification:send','catch','findOne','html','render','startCase','User','ids','queue','replace','Queue','push','all','union','flatten','getAgents','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','redis'];(function(_0x5dd777,_0x2d3c5c){var _0x559e8f=function(_0x12f4fb){while(--_0x12f4fb){_0x5dd777['push'](_0x5dd777['shift']());}};_0x559e8f(++_0x2d3c5c);}(_0x5c4b,0x116));var _0xb5c4=function(_0x74ae,_0x1e312a){_0x74ae=_0x74ae-0x0;var _0x37a11e=_0x5c4b[_0x74ae];return _0x37a11e;};'use strict';var emlformat=require(_0xb5c4('0x0'));var rimraf=require(_0xb5c4('0x1'));var zipdir=require(_0xb5c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb5c4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb5c4('0x4'));var util=require(_0xb5c4('0x5'));var path=require(_0xb5c4('0x6'));var sox=require(_0xb5c4('0x7'));var csv=require(_0xb5c4('0x8'));var ejs=require(_0xb5c4('0x9'));var fs=require('fs');var fs_extra=require(_0xb5c4('0xa'));var _=require(_0xb5c4('0xb'));var squel=require(_0xb5c4('0xc'));var crypto=require(_0xb5c4('0xd'));var jsforce=require(_0xb5c4('0xe'));var deskjs=require(_0xb5c4('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb5c4('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb5c4('0x11'));var qs=require(_0xb5c4('0x12'));var as=require(_0xb5c4('0x13'));var hardwareService=require(_0xb5c4('0x14'));var logger=require(_0xb5c4('0x15'))(_0xb5c4('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb5c4('0x17'))['db'];config[_0xb5c4('0x18')]=_['defaults'](config[_0xb5c4('0x18')],{'host':_0xb5c4('0x19'),'port':0x18eb});var socket=require(_0xb5c4('0x1a'))(new Redis(config[_0xb5c4('0x18')]));require(_0xb5c4('0x1b'))[_0xb5c4('0x1c')](socket);function respondWithStatusCode(_0x135d6e,_0x9e9507){_0x9e9507=_0x9e9507||0xcc;return function(_0x962171){if(_0x962171){return _0x135d6e[_0xb5c4('0x1d')](_0x9e9507);}return _0x135d6e[_0xb5c4('0x1e')](_0x9e9507)[_0xb5c4('0x1f')]();};}function respondWithResult(_0x1140e5,_0x48b5ee){_0x48b5ee=_0x48b5ee||0xc8;return function(_0x5a2efb){if(_0x5a2efb){return _0x1140e5[_0xb5c4('0x1e')](_0x48b5ee)[_0xb5c4('0x20')](_0x5a2efb);}};}function respondWithFilteredResult(_0x51a8d5,_0x14b4a8){return function(_0x3a0d5d){if(_0x3a0d5d){var _0xe297c3=typeof _0x14b4a8[_0xb5c4('0x21')]===_0xb5c4('0x22')&&typeof _0x14b4a8[_0xb5c4('0x23')]===_0xb5c4('0x22');var _0x3a1a13=_0x3a0d5d[_0xb5c4('0x24')];var _0x24802f=_0xe297c3?0x0:_0x14b4a8[_0xb5c4('0x21')];var _0x1a350a=_0xe297c3?_0x3a0d5d[_0xb5c4('0x24')]:_0x14b4a8[_0xb5c4('0x21')]+_0x14b4a8[_0xb5c4('0x23')];var _0x16c749;if(_0x1a350a>=_0x3a1a13){_0x1a350a=_0x3a1a13;_0x16c749=0xc8;}else{_0x16c749=0xce;}_0x51a8d5['status'](_0x16c749);return _0x51a8d5['set'](_0xb5c4('0x25'),_0x24802f+'-'+_0x1a350a+'/'+_0x3a1a13)[_0xb5c4('0x20')](_0x3a0d5d);}return null;};}function patchUpdates(_0xc7b98){return function(_0x73a1ec){try{jsonpatch[_0xb5c4('0x26')](_0x73a1ec,_0xc7b98,!![]);}catch(_0x4bd3e2){return BPromise['reject'](_0x4bd3e2);}return _0x73a1ec[_0xb5c4('0x27')]();};}function saveUpdates(_0x3e5137,_0x2149ff){return function(_0x1b80cb){if(_0x1b80cb){return _0x1b80cb[_0xb5c4('0x28')](_0x3e5137)[_0xb5c4('0x29')](function(_0x189bdc){return _0x189bdc;});}return null;};}function removeEntity(_0x2c19a0,_0x14f0b7){return function(_0x485605){if(_0x485605){return _0x485605['destroy']()[_0xb5c4('0x29')](function(){_0x2c19a0[_0xb5c4('0x1e')](0xcc)[_0xb5c4('0x1f')]();});}};}function handleEntityNotFound(_0x953119,_0x64a727){return function(_0x4cfef4){if(!_0x4cfef4){_0x953119[_0xb5c4('0x1d')](0x194);}return _0x4cfef4;};}function handleError(_0x43016e,_0x5e10c6){_0x5e10c6=_0x5e10c6||0x1f4;return function(_0x27648d){logger[_0xb5c4('0x2a')](_0x27648d['stack']);if(_0x27648d[_0xb5c4('0x2b')]){delete _0x27648d['name'];}_0x43016e[_0xb5c4('0x1e')](_0x5e10c6)[_0xb5c4('0x2c')](_0x27648d);};}exports[_0xb5c4('0x2d')]=function(_0x1801d8,_0x19c546,_0x4620eb){if(!_0x1801d8[_0xb5c4('0x2e')][_0xb5c4('0x2f')](_0xb5c4('0x30'))&&!_0x1801d8['body'][_0xb5c4('0x2f')]('TemplateId')){throw new db[(_0xb5c4('0x31'))][(_0xb5c4('0x32'))](_0xb5c4('0x33'));}else{if(_0x1801d8[_0xb5c4('0x2e')][_0xb5c4('0x2f')](_0xb5c4('0x34'))&&!_0x1801d8[_0xb5c4('0x2e')]['hasOwnProperty'](_0xb5c4('0x35'))){throw new db[(_0xb5c4('0x31'))][(_0xb5c4('0x32'))](_0xb5c4('0x36'));}if(!_0x1801d8[_0xb5c4('0x2e')]['hasOwnProperty'](_0xb5c4('0x37'))){throw new db[(_0xb5c4('0x31'))][(_0xb5c4('0x32'))](_0xb5c4('0x38'));}else{try{var _0x18d662=JSON[_0xb5c4('0x39')](_0x1801d8['body'][_0xb5c4('0x37')]);}catch(_0x25055b){logger[_0xb5c4('0x2a')](_0x25055b);throw new db['Sequelize'][(_0xb5c4('0x32'))](_0xb5c4('0x3a'));}var _0x1786a2=[_0xb5c4('0x3b'),_0xb5c4('0x3c'),_0xb5c4('0x3d'),_0xb5c4('0x3e'),_0xb5c4('0x3f'),_0xb5c4('0x40'),_0xb5c4('0x41'),_0xb5c4('0x42'),_0xb5c4('0x43')];if(_[_0xb5c4('0x44')](_0x18d662,function(_0xab37e){return!_['includes'](_0x1786a2,_0xab37e[_0xb5c4('0x45')][_0xb5c4('0x46')]());})){throw new db[(_0xb5c4('0x31'))]['ValidationError'](_0xb5c4('0x47'));}}}var _0x44a6db={};_0x44a6db[_0xb5c4('0x48')]=_0x1801d8[_0xb5c4('0x2e')]['hasOwnProperty'](_0xb5c4('0x48'))?_0x1801d8[_0xb5c4('0x2e')]['senderName']:_0x1801d8[_0xb5c4('0x43')][_0xb5c4('0x49')];_0x44a6db[_0xb5c4('0x4a')]=_[_0xb5c4('0x4b')](_0x1801d8[_0xb5c4('0x2e')]['recipientsDescription'])?null:_0x1801d8[_0xb5c4('0x2e')][_0xb5c4('0x4a')];_0x44a6db[_0xb5c4('0x4c')]=_0x1801d8[_0xb5c4('0x2e')][_0xb5c4('0x4c')]||![];_0x44a6db[_0xb5c4('0x4d')]=_0x1801d8['user']['id'];return getContent(_0x1801d8['body'])[_0xb5c4('0x29')](function(_0xd0b892){_0x44a6db[_0xb5c4('0x2e')]=_0xd0b892;return getRecipients(_0x18d662);})[_0xb5c4('0x29')](function(_0x46ae0d){_0x44a6db[_0xb5c4('0x4e')]=_[_0xb5c4('0x4f')](_0x46ae0d)[_0xb5c4('0x50')](',');return db['sequelize']['transaction'](function(_0x4ba46f){return db[_0xb5c4('0x51')][_0xb5c4('0x52')](_0x44a6db,{'raw':!![],'transaction':_0x4ba46f})[_0xb5c4('0x29')](function(_0x47d925){var _0x3e7da1={'sender':_0x44a6db[_0xb5c4('0x48')],'description':_0x44a6db[_0xb5c4('0x4a')],'content':_0x44a6db['body'],'beep':_0x44a6db[_0xb5c4('0x4c')]};_0x46ae0d[_0xb5c4('0x53')](function(_0x5c2400){_0x3e7da1['recipient']=_0x5c2400;socket[_0xb5c4('0x54')](_0xb5c4('0x55'),_0x3e7da1);});return _0x47d925;});});})[_0xb5c4('0x29')](respondWithResult(_0x19c546,0xc9))[_0xb5c4('0x56')](handleError(_0x19c546,null));};function getContent(_0x4ff0a8){return new BPromise(function(_0xd5778b,_0x2d3ec2){if(_0x4ff0a8[_0xb5c4('0x30')]){_0xd5778b(_0x4ff0a8[_0xb5c4('0x30')]);return;}return db['Template'][_0xb5c4('0x57')]({'attributes':[_0xb5c4('0x58')],'where':{'id':_0x4ff0a8[_0xb5c4('0x34')]},'raw':!![]})[_0xb5c4('0x29')](function(_0x242188){if(!_0x242188)throw new db['Sequelize'][(_0xb5c4('0x32'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x25599d=Mustache[_0xb5c4('0x59')](_0x242188[_0xb5c4('0x58')],_0x4ff0a8['view']);_0xd5778b(_0x25599d);})['catch'](function(_0xb87bf){_0x2d3ec2(_0xb87bf);});});}function getRecipients(_0x480df4){return new BPromise(function(_0x308707,_0x325b4e){var _0x1a4384=[];var _0x5ae7ff=[];_0x480df4[_0xb5c4('0x53')](function(_0x4c2e14){var _0x1f60b2=_[_0xb5c4('0x5a')](_0x4c2e14[_0xb5c4('0x45')][_0xb5c4('0x46')]());if(_0x1f60b2===_0xb5c4('0x5b')){_0x1a4384=_['union'](_0x1a4384,_0x4c2e14[_0xb5c4('0x5c')]);}else{if(_['includes'](_0x1f60b2,_0xb5c4('0x5d')))_0x1f60b2=_0x1f60b2[_0xb5c4('0x5e')](_0xb5c4('0x5d'),_0xb5c4('0x5f'));_0x4c2e14[_0xb5c4('0x5c')]['forEach'](function(_0xcf1aac){_0x5ae7ff[_0xb5c4('0x60')](getAgents(_0x1f60b2,_0xcf1aac));});}});return BPromise[_0xb5c4('0x61')](_0x5ae7ff)[_0xb5c4('0x29')](function(_0x2fc0df){_0x1a4384=_[_0xb5c4('0x62')](_0x1a4384,_[_0xb5c4('0x63')](_0x2fc0df));_0x308707(_0x1a4384);})[_0xb5c4('0x56')](function(_0x5d5e99){_0x325b4e(_0x5d5e99);});});}function getAgents(_0x58bab5,_0x45545f){return new BPromise(function(_0xb5b8a8,_0x39c07a){return db[_0x58bab5]['findOne']({'where':{'id':_0x45545f}})[_0xb5c4('0x29')](function(_0xe6b71b){return _0xe6b71b[_0xb5c4('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0x477b28){var _0x99587f=_['map'](_0x477b28,'id');_0xb5b8a8(_0x99587f);});})[_0xb5c4('0x56')](function(_0x14c1cd){_0x39c07a(_0x14c1cd);});});}
\ No newline at end of file
+var _0x88d1=['catch','startCase','model','ids','includes','queue','replace','all','union','flatten','map','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','body','hasOwnProperty','text','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','user','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','transaction','create','forEach','recipient','userNotification:send','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render'];(function(_0x6015e6,_0x50d031){var _0x5197ae=function(_0x3a9564){while(--_0x3a9564){_0x6015e6['push'](_0x6015e6['shift']());}};_0x5197ae(++_0x50d031);}(_0x88d1,0x18f));var _0x188d=function(_0x1551af,_0x5223c3){_0x1551af=_0x1551af-0x0;var _0xd8eb82=_0x88d1[_0x1551af];return _0xd8eb82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x188d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x188d('0x1'));var rp=require(_0x188d('0x2'));var moment=require('moment');var BPromise=require(_0x188d('0x3'));var Mustache=require(_0x188d('0x4'));var util=require('util');var path=require(_0x188d('0x5'));var sox=require(_0x188d('0x6'));var csv=require(_0x188d('0x7'));var ejs=require(_0x188d('0x8'));var fs=require('fs');var fs_extra=require(_0x188d('0x9'));var _=require(_0x188d('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x188d('0xb'));var toCsv=require(_0x188d('0x7'));var querystring=require(_0x188d('0xc'));var Papa=require(_0x188d('0xd'));var Redis=require('ioredis');var authService=require(_0x188d('0xe'));var qs=require(_0x188d('0xf'));var as=require(_0x188d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x188d('0x11'));var utils=require(_0x188d('0x12'));var config=require(_0x188d('0x13'));var licenseUtil=require(_0x188d('0x14'));var db=require('../../mysqldb')['db'];config[_0x188d('0x15')]=_[_0x188d('0x16')](config[_0x188d('0x15')],{'host':_0x188d('0x17'),'port':0x18eb});var socket=require(_0x188d('0x18'))(new Redis(config[_0x188d('0x15')]));require(_0x188d('0x19'))[_0x188d('0x1a')](socket);function respondWithStatusCode(_0x337061,_0x366c76){_0x366c76=_0x366c76||0xcc;return function(_0x2313d5){if(_0x2313d5){return _0x337061[_0x188d('0x1b')](_0x366c76);}return _0x337061[_0x188d('0x1c')](_0x366c76)[_0x188d('0x1d')]();};}function respondWithResult(_0x391499,_0x2639a1){_0x2639a1=_0x2639a1||0xc8;return function(_0x3ed2b3){if(_0x3ed2b3){return _0x391499['status'](_0x2639a1)[_0x188d('0x1e')](_0x3ed2b3);}};}function respondWithFilteredResult(_0x23d622,_0x20d3bb){return function(_0x41c802){if(_0x41c802){var _0x1ef877=typeof _0x20d3bb['offset']===_0x188d('0x1f')&&typeof _0x20d3bb[_0x188d('0x20')]===_0x188d('0x1f');var _0x35e0ba=_0x41c802[_0x188d('0x21')];var _0xabc94=_0x1ef877?0x0:_0x20d3bb['offset'];var _0x51206e=_0x1ef877?_0x41c802[_0x188d('0x21')]:_0x20d3bb[_0x188d('0x22')]+_0x20d3bb['limit'];var _0x3240fa;if(_0x51206e>=_0x35e0ba){_0x51206e=_0x35e0ba;_0x3240fa=0xc8;}else{_0x3240fa=0xce;}_0x23d622[_0x188d('0x1c')](_0x3240fa);return _0x23d622[_0x188d('0x23')](_0x188d('0x24'),_0xabc94+'-'+_0x51206e+'/'+_0x35e0ba)['json'](_0x41c802);}return null;};}function patchUpdates(_0x211d33){return function(_0x3d4344){try{jsonpatch[_0x188d('0x25')](_0x3d4344,_0x211d33,!![]);}catch(_0x402057){return BPromise[_0x188d('0x26')](_0x402057);}return _0x3d4344[_0x188d('0x27')]();};}function saveUpdates(_0x2f3923,_0x422b4d){return function(_0x59915c){if(_0x59915c){return _0x59915c[_0x188d('0x28')](_0x2f3923)[_0x188d('0x29')](function(_0x319472){return _0x319472;});}return null;};}function removeEntity(_0x3bec05,_0x433d52){return function(_0x4b64b5){if(_0x4b64b5){return _0x4b64b5[_0x188d('0x2a')]()[_0x188d('0x29')](function(){_0x3bec05['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x130fd6,_0xd38ebd){return function(_0x9ad6e7){if(!_0x9ad6e7){_0x130fd6['sendStatus'](0x194);}return _0x9ad6e7;};}function handleError(_0xdd95ad,_0x5d3f3a){_0x5d3f3a=_0x5d3f3a||0x1f4;return function(_0x2153fc){logger[_0x188d('0x2b')](_0x2153fc[_0x188d('0x2c')]);if(_0x2153fc[_0x188d('0x2d')]){delete _0x2153fc[_0x188d('0x2d')];}_0xdd95ad[_0x188d('0x1c')](_0x5d3f3a)[_0x188d('0x2e')](_0x2153fc);};}exports['sendUserNotification']=function(_0x17777d,_0x4761b7,_0x139ea3){if(!_0x17777d[_0x188d('0x2f')][_0x188d('0x30')](_0x188d('0x31'))&&!_0x17777d[_0x188d('0x2f')][_0x188d('0x30')](_0x188d('0x32'))){throw new db[(_0x188d('0x33'))]['ValidationError'](_0x188d('0x34'));}else{if(_0x17777d[_0x188d('0x2f')]['hasOwnProperty'](_0x188d('0x32'))&&!_0x17777d[_0x188d('0x2f')][_0x188d('0x30')](_0x188d('0x35'))){throw new db[(_0x188d('0x33'))][(_0x188d('0x36'))](_0x188d('0x37'));}if(!_0x17777d[_0x188d('0x2f')][_0x188d('0x30')](_0x188d('0x38'))){throw new db[(_0x188d('0x33'))]['ValidationError'](_0x188d('0x39'));}else{try{var _0x32a0ea=JSON[_0x188d('0x3a')](_0x17777d['body'][_0x188d('0x38')]);}catch(_0x30f470){logger[_0x188d('0x2b')](_0x30f470);throw new db[(_0x188d('0x33'))][(_0x188d('0x36'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x464964=[_0x188d('0x3b'),_0x188d('0x3c'),_0x188d('0x3d'),_0x188d('0x3e'),_0x188d('0x3f'),_0x188d('0x40'),'whatsappqueue',_0x188d('0x41'),_0x188d('0x42')];if(_['some'](_0x32a0ea,function(_0x39c518){return!_['includes'](_0x464964,_0x39c518['model'][_0x188d('0x43')]());})){throw new db[(_0x188d('0x33'))][(_0x188d('0x36'))](_0x188d('0x44'));}}}var _0x42ea42={};_0x42ea42[_0x188d('0x45')]=_0x17777d[_0x188d('0x2f')]['hasOwnProperty']('senderName')?_0x17777d[_0x188d('0x2f')][_0x188d('0x45')]:_0x17777d[_0x188d('0x42')][_0x188d('0x46')];_0x42ea42[_0x188d('0x47')]=_[_0x188d('0x48')](_0x17777d[_0x188d('0x2f')][_0x188d('0x47')])?null:_0x17777d[_0x188d('0x2f')][_0x188d('0x47')];_0x42ea42[_0x188d('0x49')]=_0x17777d[_0x188d('0x2f')]['beep']||![];_0x42ea42[_0x188d('0x4a')]=_0x17777d[_0x188d('0x42')]['id'];return getContent(_0x17777d[_0x188d('0x2f')])[_0x188d('0x29')](function(_0x37293c){_0x42ea42['body']=_0x37293c;return getRecipients(_0x32a0ea);})[_0x188d('0x29')](function(_0x3a8640){_0x42ea42[_0x188d('0x4b')]=_['sortBy'](_0x3a8640)['join'](',');return db['sequelize'][_0x188d('0x4c')](function(_0x180227){return db['UserNotification'][_0x188d('0x4d')](_0x42ea42,{'raw':!![],'transaction':_0x180227})[_0x188d('0x29')](function(_0x403a8d){var _0x3f3897={'sender':_0x42ea42['senderName'],'description':_0x42ea42[_0x188d('0x47')],'content':_0x42ea42[_0x188d('0x2f')],'beep':_0x42ea42[_0x188d('0x49')]};_0x3a8640[_0x188d('0x4e')](function(_0xe73764){_0x3f3897[_0x188d('0x4f')]=_0xe73764;socket['emit'](_0x188d('0x50'),_0x3f3897);});return _0x403a8d;});});})['then'](respondWithResult(_0x4761b7,0xc9))['catch'](handleError(_0x4761b7,null));};function getContent(_0x2fc8c5){return new BPromise(function(_0x4fd59e,_0xb09d69){if(_0x2fc8c5['text']){_0x4fd59e(_0x2fc8c5[_0x188d('0x31')]);return;}return db[_0x188d('0x51')][_0x188d('0x52')]({'attributes':[_0x188d('0x53')],'where':{'id':_0x2fc8c5['TemplateId']},'raw':!![]})[_0x188d('0x29')](function(_0x51f79e){if(!_0x51f79e)throw new db[(_0x188d('0x33'))][(_0x188d('0x36'))](_0x188d('0x54'));var _0x2d9687=Mustache[_0x188d('0x55')](_0x51f79e[_0x188d('0x53')],_0x2fc8c5[_0x188d('0x35')]);_0x4fd59e(_0x2d9687);})[_0x188d('0x56')](function(_0x3d5ec1){_0xb09d69(_0x3d5ec1);});});}function getRecipients(_0x517349){return new BPromise(function(_0x224842,_0x1bdaf1){var _0x4c77ed=[];var _0x108ae3=[];_0x517349['forEach'](function(_0x15b19d){var _0x345b85=_[_0x188d('0x57')](_0x15b19d[_0x188d('0x58')][_0x188d('0x43')]());if(_0x345b85==='User'){_0x4c77ed=_['union'](_0x4c77ed,_0x15b19d[_0x188d('0x59')]);}else{if(_[_0x188d('0x5a')](_0x345b85,_0x188d('0x5b')))_0x345b85=_0x345b85[_0x188d('0x5c')]('queue','Queue');_0x15b19d[_0x188d('0x59')][_0x188d('0x4e')](function(_0x518425){_0x108ae3['push'](getAgents(_0x345b85,_0x518425));});}});return BPromise[_0x188d('0x5d')](_0x108ae3)[_0x188d('0x29')](function(_0x30266e){_0x4c77ed=_[_0x188d('0x5e')](_0x4c77ed,_[_0x188d('0x5f')](_0x30266e));_0x224842(_0x4c77ed);})['catch'](function(_0x5d6610){_0x1bdaf1(_0x5d6610);});});}function getAgents(_0x14161a,_0x500cb7){return new BPromise(function(_0x2fc417,_0x3ee23f){return db[_0x14161a]['findOne']({'where':{'id':_0x500cb7}})[_0x188d('0x29')](function(_0x2af938){return _0x2af938['getAgents']({'attributes':['id'],'raw':!![]})[_0x188d('0x29')](function(_0x42ff1b){var _0x130304=_[_0x188d('0x60')](_0x42ff1b,'id');_0x2fc417(_0x130304);});})[_0x188d('0x56')](function(_0x471cf6){_0x3ee23f(_0x471cf6);});});}
\ No newline at end of file
index ec20b4a..6c4bf62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba5=['UserNotification','setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x3e2e80,_0x379a91){var _0x14230f=function(_0x51f4a9){while(--_0x51f4a9){_0x3e2e80['push'](_0x3e2e80['shift']());}};_0x14230f(++_0x379a91);}(_0xcba5,0x107));var _0x5cba=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xcba5[_0xdea41a];return _0x15d0d8;};'use strict';var EventEmitter=require(_0x5cba('0x0'));var UserNotification=require('../../mysqldb')['db'][_0x5cba('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x5cba('0x2')](0x0);var events={'afterCreate':_0x5cba('0x3'),'afterUpdate':'update','afterDestroy':_0x5cba('0x4')};function emitEvent(_0x18bb2b){return function(_0x53ab4b,_0x579246,_0x22dd0a){UserNotificationEvents[_0x5cba('0x5')](_0x18bb2b+':'+_0x53ab4b['id'],_0x53ab4b);UserNotificationEvents['emit'](_0x18bb2b,_0x53ab4b);_0x22dd0a(null);};}for(var e in events){if(events[_0x5cba('0x6')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x5cba('0x7')]=UserNotificationEvents;
\ No newline at end of file
+var _0x6820=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3e8869,_0x4b8fd1){var _0x13c937=function(_0x4c2e86){while(--_0x4c2e86){_0x3e8869['push'](_0x3e8869['shift']());}};_0x13c937(++_0x4b8fd1);}(_0x6820,0x1cc));var _0x0682=function(_0x393f25,_0x2e8e07){_0x393f25=_0x393f25-0x0;var _0x454ae0=_0x6820[_0x393f25];return _0x454ae0;};'use strict';var EventEmitter=require(_0x0682('0x0'));var UserNotification=require(_0x0682('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x0682('0x2')](0x0);var events={'afterCreate':_0x0682('0x3'),'afterUpdate':_0x0682('0x4'),'afterDestroy':_0x0682('0x5')};function emitEvent(_0x3eb63f){return function(_0x7ef65d,_0x541b19,_0x307886){UserNotificationEvents[_0x0682('0x6')](_0x3eb63f+':'+_0x7ef65d['id'],_0x7ef65d);UserNotificationEvents[_0x0682('0x6')](_0x3eb63f,_0x7ef65d);_0x307886(null);};}for(var e in events){if(events[_0x0682('0x7')](e)){var event=events[e];UserNotification[_0x0682('0x8')](e,emitEvent(event));}}module[_0x0682('0x9')]=UserNotificationEvents;
\ No newline at end of file
index d73ede9..173e3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a1=['moment','bluebird','request-promise','rimraf','../../config/environment','./userNotification.attributes','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x399cd0,_0x3e4df6){var _0x36f4a6=function(_0x40db77){while(--_0x40db77){_0x399cd0['push'](_0x399cd0['shift']());}};_0x36f4a6(++_0x3e4df6);}(_0x51a1,0x1b7));var _0x151a=function(_0x5c3c64,_0x5868f9){_0x5c3c64=_0x5c3c64-0x0;var _0x658de1=_0x51a1[_0x5c3c64];return _0x658de1;};'use strict';var _=require(_0x151a('0x0'));var util=require(_0x151a('0x1'));var logger=require('../../config/logger')(_0x151a('0x2'));var moment=require(_0x151a('0x3'));var BPromise=require(_0x151a('0x4'));var rp=require(_0x151a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x151a('0x6'));var config=require(_0x151a('0x7'));var attributes=require(_0x151a('0x8'));module['exports']=function(_0x2d8fba,_0x5cf0e7){return _0x2d8fba['define'](_0x151a('0x9'),attributes,{'tableName':_0x151a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x151a('0xb'),'collate':_0x151a('0xc')});};
\ No newline at end of file
+var _0x3f83=['../../config/logger','api','moment','bluebird','request-promise','rimraf','define','UserNotification','userNotifications','lodash','util'];(function(_0x1a7697,_0x469f4e){var _0x4d2dc8=function(_0x1f6849){while(--_0x1f6849){_0x1a7697['push'](_0x1a7697['shift']());}};_0x4d2dc8(++_0x469f4e);}(_0x3f83,0x153));var _0x33f8=function(_0x4d8fad,_0x546810){_0x4d8fad=_0x4d8fad-0x0;var _0x3d879c=_0x3f83[_0x4d8fad];return _0x3d879c;};'use strict';var _=require(_0x33f8('0x0'));var util=require(_0x33f8('0x1'));var logger=require(_0x33f8('0x2'))(_0x33f8('0x3'));var moment=require(_0x33f8('0x4'));var BPromise=require(_0x33f8('0x5'));var rp=require(_0x33f8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33f8('0x7'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module['exports']=function(_0x557da2,_0xccac){return _0x557da2[_0x33f8('0x8')](_0x33f8('0x9'),attributes,{'tableName':_0x33f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cd5cf8f..b2b85de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb1=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','../../mysqldb'];(function(_0x3cd9b9,_0x3ab0bd){var _0x12a304=function(_0x213a15){while(--_0x213a15){_0x3cd9b9['push'](_0x3cd9b9['shift']());}};_0x12a304(++_0x3ab0bd);}(_0xebb1,0xde));var _0x1ebb=function(_0x40b8b5,_0x4ae34b){_0x40b8b5=_0x40b8b5-0x0;var _0xab4caa=_0xebb1[_0x40b8b5];return _0xab4caa;};'use strict';var _=require('lodash');var util=require(_0x1ebb('0x0'));var moment=require(_0x1ebb('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1ebb('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ebb('0x3'))('rpc');var config=require(_0x1ebb('0x4'));var jayson=require(_0x1ebb('0x5'));var client=jayson[_0x1ebb('0x6')][_0x1ebb('0x7')]({'port':0x232a});config[_0x1ebb('0x8')]=_[_0x1ebb('0x9')](config[_0x1ebb('0x8')],{'host':_0x1ebb('0xa'),'port':0x18eb});var socket=require(_0x1ebb('0xb'))(new Redis(config[_0x1ebb('0x8')]));require(_0x1ebb('0xc'))[_0x1ebb('0xd')](socket);function respondWithRpcPromise(_0x397304,_0x59aab0,_0x506913){return new BPromise(function(_0x5b7610,_0x465492){return client[_0x1ebb('0xe')](_0x397304,_0x506913)['then'](function(_0x60fb73){logger[_0x1ebb('0xf')](_0x1ebb('0x10'),_0x59aab0,_0x1ebb('0x11'));logger[_0x1ebb('0x12')](_0x1ebb('0x13'),_0x59aab0,'request\x20sent',JSON[_0x1ebb('0x14')](_0x60fb73));if(_0x60fb73['error']){if(_0x60fb73[_0x1ebb('0x15')][_0x1ebb('0x16')]===0x1f4){logger['error'](_0x1ebb('0x10'),_0x59aab0,_0x60fb73[_0x1ebb('0x15')][_0x1ebb('0x17')]);return _0x465492(_0x60fb73[_0x1ebb('0x15')][_0x1ebb('0x17')]);}logger[_0x1ebb('0x15')](_0x1ebb('0x10'),_0x59aab0,_0x60fb73[_0x1ebb('0x15')]['message']);return _0x5b7610(_0x60fb73['error'][_0x1ebb('0x17')]);}else{logger['info'](_0x1ebb('0x10'),_0x59aab0,_0x1ebb('0x11'));_0x5b7610(_0x60fb73['result'][_0x1ebb('0x17')]);}})[_0x1ebb('0x18')](function(_0x2c31b4){logger[_0x1ebb('0x15')]('UserNotification,\x20%s,\x20%s',_0x59aab0,_0x2c31b4);_0x465492(_0x2c31b4);});});}
\ No newline at end of file
+var _0x576e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','register','request','then','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3ff431,_0x36cdec){var _0x298422=function(_0x6d001e){while(--_0x6d001e){_0x3ff431['push'](_0x3ff431['shift']());}};_0x298422(++_0x36cdec);}(_0x576e,0x182));var _0xe576=function(_0x478c8a,_0x9afc92){_0x478c8a=_0x478c8a-0x0;var _0x3b6b3e=_0x576e[_0x478c8a];return _0x3b6b3e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe576('0x0'));var BPromise=require('bluebird');var rs=require(_0xe576('0x1'));var fs=require('fs');var Redis=require(_0xe576('0x2'));var db=require(_0xe576('0x3'))['db'];var utils=require(_0xe576('0x4'));var logger=require(_0xe576('0x5'))(_0xe576('0x6'));var config=require(_0xe576('0x7'));var jayson=require(_0xe576('0x8'));var client=jayson[_0xe576('0x9')][_0xe576('0xa')]({'port':0x232a});config['redis']=_[_0xe576('0xb')](config['redis'],{'host':_0xe576('0xc'),'port':0x18eb});var socket=require(_0xe576('0xd'))(new Redis(config[_0xe576('0xe')]));require(_0xe576('0xf'))[_0xe576('0x10')](socket);function respondWithRpcPromise(_0x4d614e,_0x46b636,_0x538e9d){return new BPromise(function(_0x5e6bbd,_0x1d1bf7){return client[_0xe576('0x11')](_0x4d614e,_0x538e9d)[_0xe576('0x12')](function(_0x101e08){logger['info'](_0xe576('0x13'),_0x46b636,_0xe576('0x14'));logger[_0xe576('0x15')](_0xe576('0x16'),_0x46b636,_0xe576('0x14'),JSON[_0xe576('0x17')](_0x101e08));if(_0x101e08[_0xe576('0x18')]){if(_0x101e08['error'][_0xe576('0x19')]===0x1f4){logger[_0xe576('0x18')]('UserNotification,\x20%s,\x20%s',_0x46b636,_0x101e08[_0xe576('0x18')]['message']);return _0x1d1bf7(_0x101e08[_0xe576('0x18')][_0xe576('0x1a')]);}logger['error'](_0xe576('0x13'),_0x46b636,_0x101e08[_0xe576('0x18')][_0xe576('0x1a')]);return _0x5e6bbd(_0x101e08[_0xe576('0x18')][_0xe576('0x1a')]);}else{logger[_0xe576('0x1b')](_0xe576('0x13'),_0x46b636,_0xe576('0x14'));_0x5e6bbd(_0x101e08[_0xe576('0x1c')][_0xe576('0x1a')]);}})[_0xe576('0x1d')](function(_0x43113b){logger[_0xe576('0x18')]('UserNotification,\x20%s,\x20%s',_0x46b636,_0x43113b);_0x1d1bf7(_0x43113b);});});}
\ No newline at end of file
index 4810f5d..1dc30e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d4=['emit','register','./userNotification.events','save'];(function(_0x380858,_0x35763a){var _0x5538ad=function(_0x2d43e3){while(--_0x2d43e3){_0x380858['push'](_0x380858['shift']());}};_0x5538ad(++_0x35763a);}(_0x55d4,0x14e));var _0x455d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x55d4[_0x59ee6f];return _0x4c0979;};'use strict';var UserNotificationEvents=require(_0x455d('0x0'));var events=[_0x455d('0x1'),'remove','update'];function createListener(_0x34a225,_0x3cd71b){return function(_0x322bb7){_0x3cd71b[_0x455d('0x2')](_0x34a225,_0x322bb7);};}function removeListener(_0x51d9f5,_0x3f9460){return function(){UserNotificationEvents['removeListener'](_0x51d9f5,_0x3f9460);};}exports[_0x455d('0x3')]=function(_0x5602df){for(var _0x1342e1=0x0,_0x58f01a=events['length'];_0x1342e1<_0x58f01a;_0x1342e1++){var _0x47ea3e=events[_0x1342e1];var _0x73fc00=createListener('userNotification:'+_0x47ea3e,_0x5602df);UserNotificationEvents['on'](_0x47ea3e,_0x73fc00);}};
\ No newline at end of file
+var _0xeb0f=['save','remove','update','emit','removeListener','register','length','userNotification:','./userNotification.events'];(function(_0x4ab005,_0x2b89ec){var _0x4b145d=function(_0x375362){while(--_0x375362){_0x4ab005['push'](_0x4ab005['shift']());}};_0x4b145d(++_0x2b89ec);}(_0xeb0f,0xf2));var _0xfeb0=function(_0xa8dc69,_0x1fd102){_0xa8dc69=_0xa8dc69-0x0;var _0xf745f5=_0xeb0f[_0xa8dc69];return _0xf745f5;};'use strict';var UserNotificationEvents=require(_0xfeb0('0x0'));var events=[_0xfeb0('0x1'),_0xfeb0('0x2'),_0xfeb0('0x3')];function createListener(_0x20e651,_0x2446e9){return function(_0x17d04e){_0x2446e9[_0xfeb0('0x4')](_0x20e651,_0x17d04e);};}function removeListener(_0x4b4ae3,_0x330485){return function(){UserNotificationEvents[_0xfeb0('0x5')](_0x4b4ae3,_0x330485);};}exports[_0xfeb0('0x6')]=function(_0x4e072b){for(var _0x4d6481=0x0,_0x28042e=events[_0xfeb0('0x7')];_0x4d6481<_0x28042e;_0x4d6481++){var _0x84e985=events[_0x4d6481];var _0x2b3315=createListener(_0xfeb0('0x8')+_0x84e985,_0x4e072b);UserNotificationEvents['on'](_0x84e985,_0x2b3315);}};
\ No newline at end of file
index b39c8a9..d6eeaca 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(_0x482d2d,_0x42f02c){var _0x56a956=function(_0x1fa1d3){while(--_0x1fa1d3){_0x482d2d['push'](_0x482d2d['shift']());}};_0x56a956(++_0x42f02c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2181fc,_0x7283aa){_0x2181fc=_0x2181fc-0x0;var _0x315da1=_0xcb91[_0x2181fc];return _0x315da1;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x58c7ee,_0x3f7d3e){var _0x2fbe85=function(_0x4e6edd){while(--_0x4e6edd){_0x58c7ee['push'](_0x58c7ee['shift']());}};_0x2fbe85(++_0x3f7d3e);}(_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 2699bfa..55f472f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d59=['sequelize','INTEGER'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x1d59,0xa6));var _0x91d5=function(_0xf73d44,_0x25a6ca){_0xf73d44=_0xf73d44-0x0;var _0x87bd17=_0x1d59[_0xf73d44];return _0x87bd17;};'use strict';var Sequelize=require(_0x91d5('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x91d5('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8417=['INTEGER','sequelize','exports'];(function(_0xbba421,_0x81d172){var _0x420880=function(_0x264b93){while(--_0x264b93){_0xbba421['push'](_0xbba421['shift']());}};_0x420880(++_0x81d172);}(_0x8417,0x1d8));var _0x7841=function(_0x4ed955,_0xabd42e){_0x4ed955=_0x4ed955-0x0;var _0xa17954=_0x8417[_0x4ed955];return _0xa17954;};'use strict';var Sequelize=require(_0x7841('0x0'));module[_0x7841('0x1')]={'penalty':{'type':Sequelize[_0x7841('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e3daba7..abb2ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccfc=['../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x55a740,_0x5dd8ba){var _0x5702f8=function(_0x1873a4){while(--_0x1873a4){_0x55a740['push'](_0x55a740['shift']());}};_0x5702f8(++_0x5dd8ba);}(_0xccfc,0xad));var _0xcccf=function(_0xa37d48,_0x4b7572){_0xa37d48=_0xa37d48-0x0;var _0x897678=_0xccfc[_0xa37d48];return _0x897678;};'use strict';var _=require(_0xcccf('0x0'));var util=require(_0xcccf('0x1'));var logger=require(_0xcccf('0x2'))(_0xcccf('0x3'));var moment=require(_0xcccf('0x4'));var BPromise=require(_0xcccf('0x5'));var rp=require(_0xcccf('0x6'));var fs=require('fs');var path=require(_0xcccf('0x7'));var rimraf=require(_0xcccf('0x8'));var config=require(_0xcccf('0x9'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xcccf('0xa')]=function(_0x240362,_0x221059){return _0x240362[_0xcccf('0xb')](_0xcccf('0xc'),attributes,{'tableName':_0xcccf('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc25=['path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','lodash','util','api','moment','bluebird'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xdc25,0xc1));var _0x5dc2=function(_0x178e90,_0x2a6b47){_0x178e90=_0x178e90-0x0;var _0x1361b2=_0xdc25[_0x178e90];return _0x1361b2;};'use strict';var _=require(_0x5dc2('0x0'));var util=require(_0x5dc2('0x1'));var logger=require('../../config/logger')(_0x5dc2('0x2'));var moment=require(_0x5dc2('0x3'));var BPromise=require(_0x5dc2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5dc2('0x5'));var rimraf=require(_0x5dc2('0x6'));var config=require(_0x5dc2('0x7'));var attributes=require(_0x5dc2('0x8'));module['exports']=function(_0x560824,_0x359b73){return _0x560824[_0x5dc2('0x9')](_0x5dc2('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4988111..8633ec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd364=['UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x34b802,_0x1267be){var _0x2eab82=function(_0x1b09e4){while(--_0x1b09e4){_0x34b802['push'](_0x34b802['shift']());}};_0x2eab82(++_0x1267be);}(_0xd364,0x162));var _0x4d36=function(_0x501136,_0x9e843){_0x501136=_0x501136-0x0;var _0x5e7acd=_0xd364[_0x501136];return _0x5e7acd;};'use strict';var _=require(_0x4d36('0x0'));var util=require(_0x4d36('0x1'));var moment=require(_0x4d36('0x2'));var BPromise=require('bluebird');var rs=require(_0x4d36('0x3'));var fs=require('fs');var Redis=require(_0x4d36('0x4'));var db=require(_0x4d36('0x5'))['db'];var utils=require(_0x4d36('0x6'));var logger=require(_0x4d36('0x7'))('rpc');var config=require(_0x4d36('0x8'));var jayson=require(_0x4d36('0x9'));var client=jayson[_0x4d36('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb830af,_0x485a5d,_0xf62386){return new BPromise(function(_0x25cae4,_0x597d2d){return client[_0x4d36('0xb')](_0xb830af,_0xf62386)[_0x4d36('0xc')](function(_0x546f6a){logger[_0x4d36('0xd')](_0x4d36('0xe'),_0x485a5d,_0x4d36('0xf'));logger[_0x4d36('0x10')](_0x4d36('0x11'),_0x485a5d,'request\x20sent',JSON[_0x4d36('0x12')](_0x546f6a));if(_0x546f6a[_0x4d36('0x13')]){if(_0x546f6a[_0x4d36('0x13')][_0x4d36('0x14')]===0x1f4){logger[_0x4d36('0x13')](_0x4d36('0xe'),_0x485a5d,_0x546f6a[_0x4d36('0x13')][_0x4d36('0x15')]);return _0x597d2d(_0x546f6a[_0x4d36('0x13')][_0x4d36('0x15')]);}logger[_0x4d36('0x13')](_0x4d36('0xe'),_0x485a5d,_0x546f6a[_0x4d36('0x13')][_0x4d36('0x15')]);return _0x25cae4(_0x546f6a['error'][_0x4d36('0x15')]);}else{logger['info'](_0x4d36('0xe'),_0x485a5d,'request\x20sent');_0x25cae4(_0x546f6a[_0x4d36('0x16')]['message']);}})['catch'](function(_0x3d7a87){logger[_0x4d36('0x13')](_0x4d36('0xe'),_0x485a5d,_0x3d7a87);_0x597d2d(_0x3d7a87);});});}
\ No newline at end of file
+var _0x011c=['moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash'];(function(_0xe1783c,_0x317b35){var _0x16d146=function(_0x3bfd7a){while(--_0x3bfd7a){_0xe1783c['push'](_0xe1783c['shift']());}};_0x16d146(++_0x317b35);}(_0x011c,0xb3));var _0xc011=function(_0x454c5f,_0x38b709){_0x454c5f=_0x454c5f-0x0;var _0x457ca2=_0x011c[_0x454c5f];return _0x457ca2;};'use strict';var _=require(_0xc011('0x0'));var util=require('util');var moment=require(_0xc011('0x1'));var BPromise=require(_0xc011('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc011('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc011('0x4'));var logger=require(_0xc011('0x5'))(_0xc011('0x6'));var config=require('../../config/environment');var jayson=require(_0xc011('0x7'));var client=jayson[_0xc011('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa8816c,_0xf876c5,_0xc5aa93){return new BPromise(function(_0x5a364c,_0x2ea5c3){return client[_0xc011('0x9')](_0xa8816c,_0xc5aa93)['then'](function(_0x558108){logger['info'](_0xc011('0xa'),_0xf876c5,_0xc011('0xb'));logger[_0xc011('0xc')](_0xc011('0xd'),_0xf876c5,_0xc011('0xb'),JSON[_0xc011('0xe')](_0x558108));if(_0x558108[_0xc011('0xf')]){if(_0x558108['error']['code']===0x1f4){logger[_0xc011('0xf')](_0xc011('0xa'),_0xf876c5,_0x558108[_0xc011('0xf')][_0xc011('0x10')]);return _0x2ea5c3(_0x558108[_0xc011('0xf')][_0xc011('0x10')]);}logger['error'](_0xc011('0xa'),_0xf876c5,_0x558108['error'][_0xc011('0x10')]);return _0x5a364c(_0x558108[_0xc011('0xf')][_0xc011('0x10')]);}else{logger[_0xc011('0x11')](_0xc011('0xa'),_0xf876c5,_0xc011('0xb'));_0x5a364c(_0x558108[_0xc011('0x12')]['message']);}})[_0xc011('0x13')](function(_0x513ac5){logger[_0xc011('0xf')](_0xc011('0xa'),_0xf876c5,_0x513ac5);_0x2ea5c3(_0x513ac5);});});}
\ No newline at end of file
index 5c40f01..1239bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6910=['../../components/auth/service','./userProfile.controller','get','index','/describe','describe','/:id','isAuthenticated','getSections','/:id/resources','getResources','post','create','/:id/clone','addResources','put','update','delete','/:id/sections','removeSections','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x1ad926,_0x3e1fed){var _0x1b81dc=function(_0x506f83){while(--_0x506f83){_0x1ad926['push'](_0x1ad926['shift']());}};_0x1b81dc(++_0x3e1fed);}(_0x6910,0x159));var _0x0691=function(_0x322306,_0x31fc80){_0x322306=_0x322306-0x0;var _0x4f9152=_0x6910[_0x322306];return _0x4f9152;};'use strict';var multer=require(_0x0691('0x0'));var util=require('util');var path=require(_0x0691('0x1'));var timeout=require(_0x0691('0x2'));var express=require(_0x0691('0x3'));var router=express[_0x0691('0x4')]();var fs_extra=require(_0x0691('0x5'));var auth=require(_0x0691('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0691('0x7'));router[_0x0691('0x8')]('/',auth['isAuthenticated'](),controller[_0x0691('0x9')]);router[_0x0691('0x8')](_0x0691('0xa'),auth['isAuthenticated'](),controller[_0x0691('0xb')]);router[_0x0691('0x8')](_0x0691('0xc'),auth[_0x0691('0xd')](),controller['show']);router['get']('/:id/sections',auth[_0x0691('0xd')](),controller[_0x0691('0xe')]);router[_0x0691('0x8')](_0x0691('0xf'),auth[_0x0691('0xd')](),controller[_0x0691('0x10')]);router[_0x0691('0x11')]('/',auth[_0x0691('0xd')](),controller[_0x0691('0x12')]);router[_0x0691('0x11')](_0x0691('0x13'),auth['isAuthenticated'](),controller['clone']);router[_0x0691('0x11')]('/:id/sections',auth[_0x0691('0xd')](),controller['addSections']);router[_0x0691('0x11')](_0x0691('0xf'),auth[_0x0691('0xd')](),controller[_0x0691('0x14')]);router[_0x0691('0x15')](_0x0691('0xc'),auth[_0x0691('0xd')](),controller[_0x0691('0x16')]);router[_0x0691('0x17')]('/:id',auth[_0x0691('0xd')](),controller['destroy']);router[_0x0691('0x17')](_0x0691('0x18'),auth[_0x0691('0xd')](),controller[_0x0691('0x19')]);router[_0x0691('0x17')](_0x0691('0xf'),auth[_0x0691('0xd')](),controller['removeResources']);module[_0x0691('0x1a')]=router;
\ No newline at end of file
+var _0x5296=['isAuthenticated','index','describe','/:id','show','/:id/sections','getSections','/:id/resources','post','/:id/clone','clone','addSections','put','update','delete','removeSections','removeResources','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get'];(function(_0x54107a,_0xf1ec72){var _0x35738c=function(_0x1ab569){while(--_0x1ab569){_0x54107a['push'](_0x54107a['shift']());}};_0x35738c(++_0xf1ec72);}(_0x5296,0x17d));var _0x6529=function(_0x4b0947,_0x25b412){_0x4b0947=_0x4b0947-0x0;var _0x44ef2a=_0x5296[_0x4b0947];return _0x44ef2a;};'use strict';var multer=require(_0x6529('0x0'));var util=require(_0x6529('0x1'));var path=require(_0x6529('0x2'));var timeout=require(_0x6529('0x3'));var express=require(_0x6529('0x4'));var router=express['Router']();var fs_extra=require(_0x6529('0x5'));var auth=require(_0x6529('0x6'));var interaction=require(_0x6529('0x7'));var config=require(_0x6529('0x8'));var controller=require(_0x6529('0x9'));router[_0x6529('0xa')]('/',auth[_0x6529('0xb')](),controller[_0x6529('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x6529('0xd')]);router['get'](_0x6529('0xe'),auth[_0x6529('0xb')](),controller[_0x6529('0xf')]);router[_0x6529('0xa')](_0x6529('0x10'),auth[_0x6529('0xb')](),controller[_0x6529('0x11')]);router[_0x6529('0xa')](_0x6529('0x12'),auth['isAuthenticated'](),controller['getResources']);router[_0x6529('0x13')]('/',auth[_0x6529('0xb')](),controller['create']);router[_0x6529('0x13')](_0x6529('0x14'),auth['isAuthenticated'](),controller[_0x6529('0x15')]);router[_0x6529('0x13')](_0x6529('0x10'),auth[_0x6529('0xb')](),controller[_0x6529('0x16')]);router[_0x6529('0x13')](_0x6529('0x12'),auth[_0x6529('0xb')](),controller['addResources']);router[_0x6529('0x17')](_0x6529('0xe'),auth[_0x6529('0xb')](),controller[_0x6529('0x18')]);router[_0x6529('0x19')](_0x6529('0xe'),auth[_0x6529('0xb')](),controller['destroy']);router[_0x6529('0x19')](_0x6529('0x10'),auth[_0x6529('0xb')](),controller[_0x6529('0x1a')]);router[_0x6529('0x19')](_0x6529('0x12'),auth[_0x6529('0xb')](),controller[_0x6529('0x1b')]);module['exports']=router;
\ No newline at end of file
index 070d472..e237d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0e=['crudPermissions','getDataValue','split','BOOLEAN','exports','STRING'];(function(_0x31e159,_0x476ca2){var _0x5144c0=function(_0x1c9de0){while(--_0x1c9de0){_0x31e159['push'](_0x31e159['shift']());}};_0x5144c0(++_0x476ca2);}(_0x2c0e,0x112));var _0xe2c0=function(_0x2d892a,_0x59e61a){_0x2d892a=_0x2d892a-0x0;var _0x367765=_0x2c0e[_0x2d892a];return _0x367765;};'use strict';var Sequelize=require('sequelize');module[_0xe2c0('0x0')]={'name':{'type':Sequelize[_0xe2c0('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x5d0d5a){this['setDataValue'](_0xe2c0('0x2'),_0x5d0d5a?_0x5d0d5a['join'](''):[]);},'get':function(){return this['getDataValue'](_0xe2c0('0x2'))?this[_0xe2c0('0x3')](_0xe2c0('0x2'))[_0xe2c0('0x4')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe2c0('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe2c0('0x5')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xcaf6=['BOOLEAN','sequelize','STRING','setDataValue','crudPermissions','getDataValue','split'];(function(_0x1f336d,_0x5d0bee){var _0x49199d=function(_0x3ea45c){while(--_0x3ea45c){_0x1f336d['push'](_0x1f336d['shift']());}};_0x49199d(++_0x5d0bee);}(_0xcaf6,0x104));var _0x6caf=function(_0x45bcb1,_0x46cad0){_0x45bcb1=_0x45bcb1-0x0;var _0x4bd6a3=_0xcaf6[_0x45bcb1];return _0x4bd6a3;};'use strict';var Sequelize=require(_0x6caf('0x0'));module['exports']={'name':{'type':Sequelize[_0x6caf('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x6caf('0x1')],'set':function(_0x9dbb3){this[_0x6caf('0x2')](_0x6caf('0x3'),_0x9dbb3?_0x9dbb3['join'](''):[]);},'get':function(){return this[_0x6caf('0x4')](_0x6caf('0x3'))?this[_0x6caf('0x4')](_0x6caf('0x3'))[_0x6caf('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x6caf('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x6caf('0x6')],'defaultValue':!![]}};
\ No newline at end of file
index ddf5b24..fe2f236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937d=['fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','catch','params','length','find','create','body','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','removeSections','ids','enabled','includes','isEmpty','subsections','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','sendStatus','error','stack','name','index','map','UserProfile','rawAttributes'];(function(_0xd84b59,_0x5beeee){var _0x4366f9=function(_0x54dcf9){while(--_0x54dcf9){_0xd84b59['push'](_0xd84b59['shift']());}};_0x4366f9(++_0x5beeee);}(_0x937d,0x1f4));var _0xd937=function(_0x1282d2,_0x346ec6){_0x1282d2=_0x1282d2-0x0;var _0x5aa36c=_0x937d[_0x1282d2];return _0x5aa36c;};'use strict';var emlformat=require(_0xd937('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd937('0x1'));var moment=require(_0xd937('0x2'));var BPromise=require(_0xd937('0x3'));var Mustache=require(_0xd937('0x4'));var util=require(_0xd937('0x5'));var path=require(_0xd937('0x6'));var sox=require('sox');var csv=require(_0xd937('0x7'));var ejs=require(_0xd937('0x8'));var fs=require('fs');var fs_extra=require(_0xd937('0x9'));var _=require('lodash');var squel=require(_0xd937('0xa'));var crypto=require(_0xd937('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd937('0xc'));var toCsv=require(_0xd937('0x7'));var querystring=require(_0xd937('0xd'));var Papa=require(_0xd937('0xe'));var Redis=require(_0xd937('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd937('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd937('0x11'));var logger=require('../../config/logger')(_0xd937('0x12'));var utils=require(_0xd937('0x13'));var config=require(_0xd937('0x14'));var licenseUtil=require(_0xd937('0x15'));var db=require(_0xd937('0x16'))['db'];config['redis']=_[_0xd937('0x17')](config[_0xd937('0x18')],{'host':_0xd937('0x19'),'port':0x18eb});var socket=require(_0xd937('0x1a'))(new Redis(config[_0xd937('0x18')]));require(_0xd937('0x1b'))[_0xd937('0x1c')](socket);function respondWithStatusCode(_0x174ddf,_0x29b598){_0x29b598=_0x29b598||0xcc;return function(_0x21b87d){if(_0x21b87d){return _0x174ddf['sendStatus'](_0x29b598);}return _0x174ddf[_0xd937('0x1d')](_0x29b598)[_0xd937('0x1e')]();};}function respondWithResult(_0x295a82,_0x569a9e){_0x569a9e=_0x569a9e||0xc8;return function(_0x3786f1){if(_0x3786f1){return _0x295a82[_0xd937('0x1d')](_0x569a9e)[_0xd937('0x1f')](_0x3786f1);}};}function respondWithFilteredResult(_0x4e72fe,_0x43ab41){return function(_0x3d6b1c){if(_0x3d6b1c){var _0x1d1b8b=typeof _0x43ab41[_0xd937('0x20')]===_0xd937('0x21')&&typeof _0x43ab41[_0xd937('0x22')]===_0xd937('0x21');var _0x311f08=_0x3d6b1c[_0xd937('0x23')];var _0x31fc09=_0x1d1b8b?0x0:_0x43ab41[_0xd937('0x20')];var _0x302723=_0x1d1b8b?_0x3d6b1c[_0xd937('0x23')]:_0x43ab41[_0xd937('0x20')]+_0x43ab41[_0xd937('0x22')];var _0x2699e8;if(_0x302723>=_0x311f08){_0x302723=_0x311f08;_0x2699e8=0xc8;}else{_0x2699e8=0xce;}_0x4e72fe[_0xd937('0x1d')](_0x2699e8);return _0x4e72fe['set'](_0xd937('0x24'),_0x31fc09+'-'+_0x302723+'/'+_0x311f08)[_0xd937('0x1f')](_0x3d6b1c);}return null;};}function patchUpdates(_0x86c492){return function(_0x28703a){try{jsonpatch[_0xd937('0x25')](_0x28703a,_0x86c492,!![]);}catch(_0x31ff83){return BPromise[_0xd937('0x26')](_0x31ff83);}return _0x28703a[_0xd937('0x27')]();};}function saveUpdates(_0x194fe5,_0x14b350){return function(_0x2bbbd4){if(_0x2bbbd4){return _0x2bbbd4['update'](_0x194fe5)['then'](function(_0x541ded){return _0x541ded;});}return null;};}function removeEntity(_0x22ed55,_0x1d5a26){return function(_0x5ef39f){if(_0x5ef39f){return _0x5ef39f[_0xd937('0x28')]()[_0xd937('0x29')](function(){_0x22ed55[_0xd937('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d822f,_0x375351){return function(_0x21794d){if(!_0x21794d){_0x5d822f[_0xd937('0x2a')](0x194);}return _0x21794d;};}function handleError(_0x27f120,_0xef145){_0xef145=_0xef145||0x1f4;return function(_0x46c855){logger[_0xd937('0x2b')](_0x46c855[_0xd937('0x2c')]);if(_0x46c855[_0xd937('0x2d')]){delete _0x46c855[_0xd937('0x2d')];}_0x27f120[_0xd937('0x1d')](_0xef145)['send'](_0x46c855);};}exports[_0xd937('0x2e')]=function(_0x23b4ef,_0xaba6e0){var _0x11de50={},_0x59f741={},_0xa0e55c={'count':0x0,'rows':[]};var _0x11decc=_[_0xd937('0x2f')](db[_0xd937('0x30')][_0xd937('0x31')],function(_0x94af31){return{'name':_0x94af31[_0xd937('0x32')],'type':_0x94af31[_0xd937('0x33')][_0xd937('0x34')]};});_0x59f741[_0xd937('0x35')]=_[_0xd937('0x2f')](_0x11decc,_0xd937('0x2d'));_0x59f741[_0xd937('0x36')]=_[_0xd937('0x37')](_0x23b4ef['query']);_0x59f741['filters']=_[_0xd937('0x38')](_0x59f741[_0xd937('0x35')],_0x59f741[_0xd937('0x36')]);_0x11de50[_0xd937('0x39')]=_[_0xd937('0x38')](_0x59f741[_0xd937('0x35')],qs[_0xd937('0x3a')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x3a')]));_0x11de50[_0xd937('0x39')]=_0x11de50[_0xd937('0x39')]['length']?_0x11de50['attributes']:_0x59f741['model'];if(!_0x23b4ef[_0xd937('0x36')]['hasOwnProperty'](_0xd937('0x3b'))){_0x11de50['limit']=qs[_0xd937('0x22')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x22')]);_0x11de50[_0xd937('0x20')]=qs[_0xd937('0x20')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x20')]);}_0x11de50[_0xd937('0x3c')]=qs[_0xd937('0x3d')](_0x23b4ef[_0xd937('0x36')][_0xd937('0x3d')]);_0x11de50[_0xd937('0x3e')]=qs[_0xd937('0x3f')](_[_0xd937('0x40')](_0x23b4ef[_0xd937('0x36')],_0x59f741[_0xd937('0x3f')]),_0x11decc);if(_0x23b4ef[_0xd937('0x36')]['filter']){_0x11de50[_0xd937('0x3e')]=_[_0xd937('0x41')](_0x11de50[_0xd937('0x3e')],{'$or':_[_0xd937('0x2f')](_0x11decc,function(_0x39e413){if(_0x39e413[_0xd937('0x33')]!=='VIRTUAL'){var _0xd9a1ce={};_0xd9a1ce[_0x39e413['name']]={'$like':'%'+_0x23b4ef[_0xd937('0x36')][_0xd937('0x42')]+'%'};return _0xd9a1ce;}})});}_0x11de50=_[_0xd937('0x41')]({},_0x11de50,_0x23b4ef[_0xd937('0x43')]);var _0x56d1e1={'where':_0x11de50[_0xd937('0x3e')]};return db[_0xd937('0x30')]['count'](_0x56d1e1)[_0xd937('0x29')](function(_0x3a1eb3){_0xa0e55c[_0xd937('0x23')]=_0x3a1eb3;if(_0x23b4ef[_0xd937('0x36')][_0xd937('0x44')]){_0x11de50[_0xd937('0x45')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x11de50);})[_0xd937('0x29')](function(_0x26b615){_0xa0e55c['rows']=_0x26b615;return _0xa0e55c;})['then'](respondWithFilteredResult(_0xaba6e0,_0x11de50))[_0xd937('0x46')](handleError(_0xaba6e0,null));};exports['show']=function(_0x37e9ae,_0x3287b1){var _0x386e01={'raw':![],'where':{'id':_0x37e9ae[_0xd937('0x47')]['id']}},_0x239edd={};_0x239edd[_0xd937('0x35')]=_[_0xd937('0x37')](db[_0xd937('0x30')][_0xd937('0x31')]);_0x239edd[_0xd937('0x36')]=_['keys'](_0x37e9ae[_0xd937('0x36')]);_0x239edd[_0xd937('0x3f')]=_[_0xd937('0x38')](_0x239edd[_0xd937('0x35')],_0x239edd[_0xd937('0x36')]);_0x386e01['attributes']=_['intersection'](_0x239edd['model'],qs[_0xd937('0x3a')](_0x37e9ae[_0xd937('0x36')][_0xd937('0x3a')]));_0x386e01[_0xd937('0x39')]=_0x386e01[_0xd937('0x39')][_0xd937('0x48')]?_0x386e01[_0xd937('0x39')]:_0x239edd[_0xd937('0x35')];if(_0x37e9ae[_0xd937('0x36')]['includeAll']){_0x386e01['include']=[{'all':!![]}];}_0x386e01=_[_0xd937('0x41')]({},_0x386e01,_0x37e9ae['options']);return db[_0xd937('0x30')][_0xd937('0x49')](_0x386e01)[_0xd937('0x29')](handleEntityNotFound(_0x3287b1,null))[_0xd937('0x29')](respondWithResult(_0x3287b1,null))[_0xd937('0x46')](handleError(_0x3287b1,null));};exports[_0xd937('0x4a')]=function(_0x27c5eb,_0x463da0){return db[_0xd937('0x30')][_0xd937('0x4a')](_0x27c5eb[_0xd937('0x4b')],{})['then'](respondWithResult(_0x463da0,0xc9))[_0xd937('0x46')](handleError(_0x463da0,null));};exports['clone']=function(_0x104442,_0x29a143){var _0x37b870={'where':{'id':_0x104442['params']['id']}},_0x87758e={};_0x87758e[_0xd937('0x35')]=_[_0xd937('0x37')](db[_0xd937('0x30')][_0xd937('0x31')]);_0x37b870[_0xd937('0x39')]=_[_0xd937('0x38')](_0x87758e[_0xd937('0x35')],qs[_0xd937('0x3a')](_0x104442[_0xd937('0x36')]['fields']));_0x37b870[_0xd937('0x39')]=_0x37b870[_0xd937('0x39')]['length']?_0x37b870[_0xd937('0x39')]:_0x87758e[_0xd937('0x35')];if(_0x104442['query'][_0xd937('0x44')]){_0x37b870[_0xd937('0x45')]=[{'all':!![]}];}_0x37b870=_['merge']({},_0x37b870,_0x104442['options']);return db[_0xd937('0x30')][_0xd937('0x49')](_0x37b870)[_0xd937('0x29')](handleEntityNotFound(_0x29a143,null))[_0xd937('0x29')](function(_0x68158){if(_0x68158){var _0x3d6ee6=_0x68158[_0xd937('0x4c')]({'plain':!![]});_0x3d6ee6=qs[_0xd937('0x4d')](_0x3d6ee6,['id',_0xd937('0x4e'),_0xd937('0x4f'),_0xd937('0x50')]);_0x104442[_0xd937('0x4b')]=_['omit'](_0x104442['body'],['id','createdAt',_0xd937('0x4f')]);return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x4eb351){return db[_0xd937('0x30')][_0xd937('0x4a')](_['merge'](_0x3d6ee6,_0x104442['body']),{'include':_0x104442[_0xd937('0x36')][_0xd937('0x44')]?[{'all':!![]}]:undefined,'transaction':_0x4eb351})['then'](function(_0x1f269b){var _0x59323e=_0x1f269b['get']({'plain':!![]});return db[_0xd937('0x53')][_0xd937('0x54')]({'where':{'userProfileId':_0x104442[_0xd937('0x47')]['id']},'raw':!![]})[_0xd937('0x29')](function(_0x3ffe5a){if(_0x3ffe5a){return BPromise[_0xd937('0x55')](_0x3ffe5a,function(_0x1d876a){return new BPromise(function(_0x4e29c3,_0x1b4841){if(_0x1d876a[_0xd937('0x56')]===null||_0x1d876a[_0xd937('0x56')]===0x1)_0x4e29c3(null);return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x1d876a['id']},'raw':!![]})[_0xd937('0x29')](function(_0x130653){var _0x4b5232=_[_0xd937('0x2f')](_0x130653,function(_0x15f84b){return qs['omit'](_0x15f84b,['id',_0xd937('0x4e'),_0xd937('0x4f'),_0xd937('0x58')]);});_0x4e29c3(_0x4b5232);})[_0xd937('0x46')](function(_0x3fcf7c){_0x1b4841(_0x3fcf7c);});})[_0xd937('0x29')](function(_0x2627ca){var _0x1050e8=qs[_0xd937('0x4d')](_0x1d876a,['id',_0xd937('0x4e'),_0xd937('0x4f')]);_0x1050e8[_0xd937('0x59')]=_0x59323e['id'];if(_0x2627ca)_0x1050e8[_0xd937('0x5a')]=_0x2627ca;return _0x1050e8;})[_0xd937('0x29')](function(_0x2977b7){return db[_0xd937('0x53')][_0xd937('0x4a')](_0x2977b7,{'include':[{'model':db['UserProfileResource'],'as':_0xd937('0x5a')}],'raw':!![],'transaction':_0x4eb351});});})['then'](function(){return _0x59323e;});}});});});}})['then'](respondWithResult(_0x29a143,0xc9))['catch'](handleError(_0x29a143,null));};exports['update']=function(_0x325c8c,_0x1cd08c){if(_0x325c8c[_0xd937('0x4b')]['id']){delete _0x325c8c[_0xd937('0x4b')]['id'];}return db['UserProfile'][_0xd937('0x49')]({'where':{'id':_0x325c8c[_0xd937('0x47')]['id']}})['then'](handleEntityNotFound(_0x1cd08c,null))[_0xd937('0x29')](saveUpdates(_0x325c8c[_0xd937('0x4b')],null))[_0xd937('0x29')](respondWithResult(_0x1cd08c,null))[_0xd937('0x46')](handleError(_0x1cd08c,null));};exports['destroy']=function(_0x13280e,_0x5e7e5c){return db[_0xd937('0x30')]['find']({'where':{'id':_0x13280e[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x5e7e5c,null))[_0xd937('0x29')](removeEntity(_0x5e7e5c,null))[_0xd937('0x46')](handleError(_0x5e7e5c,null));};exports['describe']=function(_0x12a8ee,_0x3cbaf0){return db['UserProfile'][_0xd937('0x5b')]()[_0xd937('0x29')](respondWithResult(_0x3cbaf0,null))[_0xd937('0x46')](handleError(_0x3cbaf0,null));};exports[_0xd937('0x5c')]=function(_0x314ea3,_0x444391){var _0x5b07a4=_0x314ea3[_0xd937('0x4b')];return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x314ea3[_0xd937('0x47')]['id']}})['then'](handleEntityNotFound(_0x444391,null))[_0xd937('0x29')](function(_0x2663fc){if(_0x2663fc){return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x3f4701){return db[_0xd937('0x53')]['destroy']({'where':{'userProfileId':_0x314ea3[_0xd937('0x47')]['id'],'sectionId':_[_0xd937('0x2f')](_0x5b07a4,function(_0x46d067){return _0x46d067[_0xd937('0x58')];})},'transaction':_0x3f4701})['then'](function(){var _0x30139c=_[_0xd937('0x2f')](_0x5b07a4,function(_0xaf2448){_0xaf2448[_0xd937('0x59')]=_0x314ea3[_0xd937('0x47')]['id'];return _0xaf2448;});var _0x1e54b7=[];return BPromise[_0xd937('0x55')](_0x30139c,function(_0x133331){return db[_0xd937('0x53')][_0xd937('0x4a')](_0x133331,{'include':[{'model':db[_0xd937('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x3f4701})[_0xd937('0x29')](function(_0x74e5dd){_0x1e54b7[_0xd937('0x5d')](_0x74e5dd[_0xd937('0x4c')]({'plain':!![]}));});})[_0xd937('0x29')](function(){return _0x1e54b7;});});});}})[_0xd937('0x29')](function(_0x24d7d3){return _0x24d7d3;})['then'](respondWithResult(_0x444391,null))[_0xd937('0x46')](handleError(_0x444391,null));};exports[_0xd937('0x5e')]=function(_0x504cef,_0xc3fca0){var _0xaf0a1c;return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x504cef[_0xd937('0x47')]['id']},'attributes':['id',_0xd937('0x2d')]})[_0xd937('0x29')](handleEntityNotFound(_0xc3fca0,null))[_0xd937('0x29')](function(_0x30593e){if(_0x30593e){_0xaf0a1c=_0x30593e;return db['UserProfileSection'][_0xd937('0x28')]({'where':{'userProfileId':_0x504cef[_0xd937('0x47')]['id'],'sectionId':_0x504cef[_0xd937('0x36')][_0xd937('0x5f')]}});}})[_0xd937('0x29')](function(){return _0xaf0a1c;})['then'](respondWithStatusCode(_0xc3fca0,null))['catch'](handleError(_0xc3fca0,null));};exports['getSections']=function(_0x349071,_0x398912){var _0x5779a6=[];var _0x19de27=[];return db['UserProfileSection'][_0xd937('0x54')]({'where':{'userProfileId':_0x349071[_0xd937('0x47')]['id']},'raw':!![]})[_0xd937('0x29')](function(_0x5c47cb){_0x5779a6=_[_0xd937('0x42')](_0x5c47cb,function(_0xb9184b){return _0xb9184b[_0xd937('0x60')]===0x1||_[_0xd937('0x61')]([0x3eb,0x709],_0xb9184b['sectionId']);});if(!_[_0xd937('0x62')](_0x5779a6)){return _['map'](_0x5779a6,function(_0x3e67a0){return _0x3e67a0['sectionId'];});}else{return;}})[_0xd937('0x29')](function(_0x2bf3b0){if(_0x2bf3b0)_0x19de27=_0x2bf3b0;if(_['includes'](_0x19de27,0x64)){var _0x1a87df=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x64});return hasDefaultDashboard(_0x1a87df)['then'](function(_0x29fc71){return _[_0xd937('0x2f')](_0x5779a6,function(_0x3a9f37){if(_0x3a9f37[_0xd937('0x58')]===0x64){_0x3a9f37[_0xd937('0x63')]=_0x29fc71;}return _0x3a9f37;});});}else{return;}})[_0xd937('0x29')](function(_0x1c6abf){if(_0x1c6abf)_0x5779a6=_0x1c6abf;if(_[_0xd937('0x61')](_0x19de27,0x3eb)){var _0xb0d19a=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x3eb});return getCustomDashboards(_0xb0d19a)[_0xd937('0x29')](function(_0x2742a3){return _[_0xd937('0x2f')](_0x5779a6,function(_0x4df709){if(_0xb0d19a['enabled']){if(_0x4df709[_0xd937('0x58')]===0x3eb){_0x4df709[_0xd937('0x63')]=_0x2742a3;}}else{if(_0x4df709['sectionId']===0x64){_0x4df709[_0xd937('0x63')]=_0x2742a3;}}return _0x4df709;});});}else{return;}})[_0xd937('0x29')](function(_0x2bd83a){if(_0x2bd83a)_0x5779a6=_0x2bd83a;if(_[_0xd937('0x61')](_0x19de27,0x709)){var _0x23b1f6=_[_0xd937('0x49')](_0x5779a6,{'sectionId':0x709});return getPlugins(_0x23b1f6)[_0xd937('0x29')](function(_0x57959a){if(_0x23b1f6[_0xd937('0x60')]){return _[_0xd937('0x2f')](_0x5779a6,function(_0x34935f){if(_0x34935f['sectionId']===0x709){_0x34935f['subsections']=_0x57959a;}return _0x34935f;});}else{var _0x468e6e={'sectionId':0x76c,'enabled':0x1,'subsections':_0x57959a};var _0xe4dee6=_[_0xd937('0x2f')](_0x5779a6);_0xe4dee6[_0xd937('0x5d')](_0x468e6e);return _0xe4dee6;}});}else{return;}})[_0xd937('0x29')](function(_0x3d5a05){if(_0x3d5a05)_0x5779a6=_0x3d5a05;return _['filter'](_0x5779a6,['enabled',0x1]);})[_0xd937('0x29')](respondWithResult(_0x398912,null))[_0xd937('0x46')](handleError(_0x398912,null));};function hasDefaultDashboard(_0x48f16e){var _0x5a492e=[0x65];return new BPromise(function(_0x51080e,_0x28b88f){try{if(_0x48f16e['autoAssociation']){_0x51080e(_0x5a492e);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x48f16e['id']},'raw':!![]})[_0xd937('0x29')](function(_0x477ac4){_0x477ac4?_0x51080e(_0x5a492e):_0x51080e();});}}catch(_0x5ed2ca){_0x28b88f(_0x5ed2ca);}});}function getCustomDashboards(_0x30b02){var _0x2ec0de=[];return new BPromise(function(_0x244574,_0x5102ae){try{if(_0x30b02[_0xd937('0x56')]){return db[_0xd937('0x64')][_0xd937('0x54')]({'raw':!![]})[_0xd937('0x29')](function(_0x45adc3){_0x45adc3['forEach'](function(_0x53e067){_0x2ec0de[_0xd937('0x5d')](_0x53e067['id']+0x1869f);});_0x244574(_0x2ec0de);});}else{return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x30b02['id']},'raw':!![]})['then'](function(_0x124c15){_0x124c15[_0xd937('0x65')](function(_0xeb1d14){_0x2ec0de['push'](_0xeb1d14[_0xd937('0x66')]+0x1869f);});_0x244574(_0x2ec0de);});}}catch(_0x3608aa){_0x5102ae(_0x3608aa);}});}function getPlugins(_0x2cd0a0){var _0x210113=[];return new BPromise(function(_0x5a153a,_0x2f5743){try{if(_0x2cd0a0[_0xd937('0x56')]){return db[_0xd937('0x67')][_0xd937('0x54')]({'raw':!![]})[_0xd937('0x29')](function(_0x5be2ff){_0x5be2ff[_0xd937('0x65')](function(_0x25abc0){_0x210113['push'](_0x25abc0['id']+0x15b38);});_0x5a153a(_0x210113);});}else{return db[_0xd937('0x57')][_0xd937('0x54')]({'where':{'sectionId':_0x2cd0a0['id']},'raw':!![]})[_0xd937('0x29')](function(_0x6ef7ae){_0x6ef7ae['forEach'](function(_0x32928c){_0x210113['push'](_0x32928c[_0xd937('0x66')]+0x15b38);});_0x5a153a(_0x210113);});}}catch(_0x1be807){_0x2f5743(_0x1be807);}});}exports[_0xd937('0x68')]=function(_0x56b301,_0x279ffe){return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x56b301[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x279ffe,null))[_0xd937('0x29')](function(_0x5058da){if(_0x5058da){return db[_0xd937('0x51')][_0xd937('0x52')](function(_0x380c9d){return db[_0xd937('0x53')][_0xd937('0x54')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x152d3d){if(_0x152d3d){return db[_0xd937('0x53')][_0xd937('0x28')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id'],'id':_[_0xd937('0x2f')](_0x152d3d,function(_0x5b0f36){return _0x5b0f36['id'];})},'transaction':_0x380c9d});}})[_0xd937('0x29')](function(_0x46ed16){var _0x3f506c=_[_0xd937('0x2f')](_0x56b301[_0xd937('0x4b')],function(_0x506c22){_0x506c22[_0xd937('0x59')]=_0x56b301[_0xd937('0x47')]['id'];return _0x506c22;});return db[_0xd937('0x53')][_0xd937('0x69')](_0x3f506c,{'raw':!![],'transaction':_0x380c9d});})[_0xd937('0x29')](function(_0xcf1b51){var _0x289be1=_[_0xd937('0x42')](_['map'](_0xcf1b51,function(_0x52ce47){return _0x52ce47[_0xd937('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x289be1){return db['UserProfileSection'][_0xd937('0x54')]({'where':{'userProfileId':_0x56b301[_0xd937('0x47')]['id'],'sectionId':_[_0xd937('0x2f')](_0x289be1,function(_0x28caba){return _0x28caba[_0xd937('0x58')];})},'attributes':['id',_0xd937('0x58')],'raw':!![]})['then'](function(_0x262671){var _0x310733=_[_0xd937('0x2f')](_0x56b301[_0xd937('0x4b')],function(_0x3ea365){_0x3ea365[_0xd937('0x59')]=_0x56b301['params']['id'];return _0x3ea365;});return db[_0xd937('0x57')][_0xd937('0x69')](_0x310733,{'raw':!![],'transaction':_0x380c9d});});}})[_0xd937('0x46')](handleError(_0x279ffe,null));});}})[_0xd937('0x29')](function(_0x220b4a){var _0x46c85f=_['map'](_0x220b4a,function(_0x404f37){return _0x404f37[_0xd937('0x4c')]({'plain':!![]});});})[_0xd937('0x29')](respondWithResult(_0x279ffe,null))['catch'](handleError(_0x279ffe,null));};exports[_0xd937('0x6a')]=function(_0x51bd0e,_0x5c6849,_0x2eb0f1){return db['UserProfile'][_0xd937('0x49')]({'where':{'id':_0x51bd0e[_0xd937('0x47')]['id']}})[_0xd937('0x29')](handleEntityNotFound(_0x5c6849,null))[_0xd937('0x29')](function(_0x35b7ad){if(_0x35b7ad){return _0x35b7ad[_0xd937('0x6a')](_0x51bd0e[_0xd937('0x36')][_0xd937('0x5f')]);}})[_0xd937('0x29')](respondWithStatusCode(_0x5c6849,null))[_0xd937('0x46')](handleError(_0x5c6849,null));};exports['getResources']=function(_0x13f0ce,_0x173342){var _0x1850a4={};if(!_0x13f0ce['query']['section'])throw new Error(_0xd937('0x6b'));if(!_0x13f0ce[_0xd937('0x36')][_0xd937('0x6c')](_0xd937('0x3b'))){_0x1850a4[_0xd937('0x22')]=qs[_0xd937('0x22')](_0x13f0ce[_0xd937('0x36')][_0xd937('0x22')]);_0x1850a4[_0xd937('0x20')]=qs[_0xd937('0x20')](_0x13f0ce['query'][_0xd937('0x20')]);}return db[_0xd937('0x30')][_0xd937('0x49')]({'where':{'id':_0x13f0ce[_0xd937('0x47')]['id']}})[_0xd937('0x29')](function(_0x10c3bd){if(!_0x10c3bd)throw new Error(_0xd937('0x6d')+_0x13f0ce[_0xd937('0x47')]['id']);return db[_0xd937('0x30')]['getResources'](_0x13f0ce);})[_0xd937('0x29')](respondWithFilteredResult(_0x173342,_0x1850a4))[_0xd937('0x46')](handleError(_0x173342,null));};
\ No newline at end of file
+var _0x800f=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','error','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','UserProfile','then','includeAll','include','findAll','rows','catch','params','intersection','find','create','body','clone','omit','updatedAt','crudPermissions','createdAt','transaction','get','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','UserProfileSection','update','describe','sequelize','push','removeSections','getSections','enabled','includes','subsections','concat','findOne','forEach','resourceId','addResources','bulkCreate','removeResources','ids','section','Missing\x20section\x20parameter','eml-format','fast-json-patch','bluebird','util','path','ejs'];(function(_0x5403bf,_0x5104ed){var _0x444b57=function(_0x7ec717){while(--_0x7ec717){_0x5403bf['push'](_0x5403bf['shift']());}};_0x444b57(++_0x5104ed);}(_0x800f,0x1a6));var _0xf800=function(_0x4d6b77,_0x1372ce){_0x4d6b77=_0x4d6b77-0x0;var _0x27b0fd=_0x800f[_0x4d6b77];return _0x27b0fd;};'use strict';var emlformat=require(_0xf800('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf800('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf800('0x2'));var Mustache=require('mustache');var util=require(_0xf800('0x3'));var path=require(_0xf800('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf800('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf800('0x6'));var squel=require(_0xf800('0x7'));var crypto=require(_0xf800('0x8'));var jsforce=require(_0xf800('0x9'));var deskjs=require(_0xf800('0xa'));var toCsv=require('to-csv');var querystring=require(_0xf800('0xb'));var Papa=require(_0xf800('0xc'));var Redis=require(_0xf800('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xf800('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf800('0xf'));var logger=require(_0xf800('0x10'))(_0xf800('0x11'));var utils=require(_0xf800('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf800('0x13'));var db=require(_0xf800('0x14'))['db'];config[_0xf800('0x15')]=_['defaults'](config[_0xf800('0x15')],{'host':_0xf800('0x16'),'port':0x18eb});var socket=require(_0xf800('0x17'))(new Redis(config[_0xf800('0x15')]));require(_0xf800('0x18'))[_0xf800('0x19')](socket);function respondWithStatusCode(_0x59e6fd,_0x2416f2){_0x2416f2=_0x2416f2||0xcc;return function(_0x31f99a){if(_0x31f99a){return _0x59e6fd[_0xf800('0x1a')](_0x2416f2);}return _0x59e6fd[_0xf800('0x1b')](_0x2416f2)[_0xf800('0x1c')]();};}function respondWithResult(_0x329032,_0x8bdd4a){_0x8bdd4a=_0x8bdd4a||0xc8;return function(_0xe84585){if(_0xe84585){return _0x329032[_0xf800('0x1b')](_0x8bdd4a)[_0xf800('0x1d')](_0xe84585);}};}function respondWithFilteredResult(_0x52444a,_0x53864c){return function(_0x40b269){if(_0x40b269){var _0x386735=typeof _0x53864c[_0xf800('0x1e')]===_0xf800('0x1f')&&typeof _0x53864c[_0xf800('0x20')]===_0xf800('0x1f');var _0x1b7483=_0x40b269[_0xf800('0x21')];var _0x5d04cc=_0x386735?0x0:_0x53864c['offset'];var _0x7626f3=_0x386735?_0x40b269[_0xf800('0x21')]:_0x53864c[_0xf800('0x1e')]+_0x53864c[_0xf800('0x20')];var _0x5d175f;if(_0x7626f3>=_0x1b7483){_0x7626f3=_0x1b7483;_0x5d175f=0xc8;}else{_0x5d175f=0xce;}_0x52444a[_0xf800('0x1b')](_0x5d175f);return _0x52444a[_0xf800('0x22')](_0xf800('0x23'),_0x5d04cc+'-'+_0x7626f3+'/'+_0x1b7483)[_0xf800('0x1d')](_0x40b269);}return null;};}function patchUpdates(_0x3255a7){return function(_0x57497d){try{jsonpatch[_0xf800('0x24')](_0x57497d,_0x3255a7,!![]);}catch(_0xeb5d87){return BPromise['reject'](_0xeb5d87);}return _0x57497d['save']();};}function saveUpdates(_0x5ee83,_0x449ba7){return function(_0x3ef3d9){if(_0x3ef3d9){return _0x3ef3d9['update'](_0x5ee83)['then'](function(_0x45e551){return _0x45e551;});}return null;};}function removeEntity(_0x38e75d,_0x1b06eb){return function(_0x1838db){if(_0x1838db){return _0x1838db[_0xf800('0x25')]()['then'](function(){_0x38e75d['status'](0xcc)[_0xf800('0x1c')]();});}};}function handleEntityNotFound(_0x28a9e7,_0x4f2935){return function(_0x57069f){if(!_0x57069f){_0x28a9e7[_0xf800('0x1a')](0x194);}return _0x57069f;};}function handleError(_0x4c6749,_0x210391){_0x210391=_0x210391||0x1f4;return function(_0x3ebe25){logger[_0xf800('0x26')](_0x3ebe25['stack']);if(_0x3ebe25[_0xf800('0x27')]){delete _0x3ebe25[_0xf800('0x27')];}_0x4c6749[_0xf800('0x1b')](_0x210391)[_0xf800('0x28')](_0x3ebe25);};}exports[_0xf800('0x29')]=function(_0x294386,_0x458fe3){var _0x1aa40b={},_0x400486={},_0x1892de={'count':0x0,'rows':[]};var _0x473828=_['map'](db['UserProfile'][_0xf800('0x2a')],function(_0x5aa1a9){return{'name':_0x5aa1a9[_0xf800('0x2b')],'type':_0x5aa1a9[_0xf800('0x2c')]['key']};});_0x400486[_0xf800('0x2d')]=_[_0xf800('0x2e')](_0x473828,_0xf800('0x27'));_0x400486[_0xf800('0x2f')]=_[_0xf800('0x30')](_0x294386[_0xf800('0x2f')]);_0x400486[_0xf800('0x31')]=_['intersection'](_0x400486[_0xf800('0x2d')],_0x400486[_0xf800('0x2f')]);_0x1aa40b[_0xf800('0x32')]=_['intersection'](_0x400486[_0xf800('0x2d')],qs['fields'](_0x294386['query'][_0xf800('0x33')]));_0x1aa40b[_0xf800('0x32')]=_0x1aa40b[_0xf800('0x32')][_0xf800('0x34')]?_0x1aa40b['attributes']:_0x400486['model'];if(!_0x294386['query'][_0xf800('0x35')](_0xf800('0x36'))){_0x1aa40b[_0xf800('0x20')]=qs[_0xf800('0x20')](_0x294386[_0xf800('0x2f')][_0xf800('0x20')]);_0x1aa40b[_0xf800('0x1e')]=qs[_0xf800('0x1e')](_0x294386[_0xf800('0x2f')][_0xf800('0x1e')]);}_0x1aa40b[_0xf800('0x37')]=qs['sort'](_0x294386['query'][_0xf800('0x38')]);_0x1aa40b[_0xf800('0x39')]=qs['filters'](_['pick'](_0x294386[_0xf800('0x2f')],_0x400486['filters']),_0x473828);if(_0x294386[_0xf800('0x2f')][_0xf800('0x3a')]){_0x1aa40b['where']=_[_0xf800('0x3b')](_0x1aa40b[_0xf800('0x39')],{'$or':_[_0xf800('0x2e')](_0x473828,function(_0x54bb76){if(_0x54bb76[_0xf800('0x2c')]!==_0xf800('0x3c')){var _0x1d92d4={};_0x1d92d4[_0x54bb76[_0xf800('0x27')]]={'$like':'%'+_0x294386[_0xf800('0x2f')]['filter']+'%'};return _0x1d92d4;}})});}_0x1aa40b=_[_0xf800('0x3b')]({},_0x1aa40b,_0x294386[_0xf800('0x3d')]);var _0xbec29f={'where':_0x1aa40b['where']};return db[_0xf800('0x3e')]['count'](_0xbec29f)[_0xf800('0x3f')](function(_0x249fbd){_0x1892de['count']=_0x249fbd;if(_0x294386['query'][_0xf800('0x40')]){_0x1aa40b[_0xf800('0x41')]=[{'all':!![]}];}return db[_0xf800('0x3e')][_0xf800('0x42')](_0x1aa40b);})[_0xf800('0x3f')](function(_0x514aff){_0x1892de[_0xf800('0x43')]=_0x514aff;return _0x1892de;})[_0xf800('0x3f')](respondWithFilteredResult(_0x458fe3,_0x1aa40b))[_0xf800('0x44')](handleError(_0x458fe3,null));};exports['show']=function(_0x73318a,_0x4f519){var _0x575df8={'raw':![],'where':{'id':_0x73318a[_0xf800('0x45')]['id']}},_0x2c0e56={};_0x2c0e56[_0xf800('0x2d')]=_[_0xf800('0x30')](db[_0xf800('0x3e')][_0xf800('0x2a')]);_0x2c0e56[_0xf800('0x2f')]=_[_0xf800('0x30')](_0x73318a['query']);_0x2c0e56[_0xf800('0x31')]=_['intersection'](_0x2c0e56[_0xf800('0x2d')],_0x2c0e56[_0xf800('0x2f')]);_0x575df8['attributes']=_[_0xf800('0x46')](_0x2c0e56[_0xf800('0x2d')],qs[_0xf800('0x33')](_0x73318a[_0xf800('0x2f')][_0xf800('0x33')]));_0x575df8[_0xf800('0x32')]=_0x575df8[_0xf800('0x32')][_0xf800('0x34')]?_0x575df8['attributes']:_0x2c0e56[_0xf800('0x2d')];if(_0x73318a[_0xf800('0x2f')]['includeAll']){_0x575df8[_0xf800('0x41')]=[{'all':!![]}];}_0x575df8=_[_0xf800('0x3b')]({},_0x575df8,_0x73318a['options']);return db[_0xf800('0x3e')][_0xf800('0x47')](_0x575df8)['then'](handleEntityNotFound(_0x4f519,null))[_0xf800('0x3f')](respondWithResult(_0x4f519,null))['catch'](handleError(_0x4f519,null));};exports[_0xf800('0x48')]=function(_0x3faef3,_0x27dcaf){return db[_0xf800('0x3e')]['create'](_0x3faef3[_0xf800('0x49')],{})['then'](respondWithResult(_0x27dcaf,0xc9))[_0xf800('0x44')](handleError(_0x27dcaf,null));};exports[_0xf800('0x4a')]=function(_0x73abaf,_0x541661){var _0x4150fd={'where':{'id':_0x73abaf['params']['id']}},_0x3454fa={};_0x3454fa[_0xf800('0x2d')]=_[_0xf800('0x30')](db[_0xf800('0x3e')][_0xf800('0x2a')]);_0x4150fd['attributes']=_[_0xf800('0x46')](_0x3454fa[_0xf800('0x2d')],qs[_0xf800('0x33')](_0x73abaf[_0xf800('0x2f')][_0xf800('0x33')]));_0x4150fd[_0xf800('0x32')]=_0x4150fd['attributes'][_0xf800('0x34')]?_0x4150fd[_0xf800('0x32')]:_0x3454fa[_0xf800('0x2d')];if(_0x73abaf['query'][_0xf800('0x40')]){_0x4150fd[_0xf800('0x41')]=[{'all':!![]}];}_0x4150fd=_[_0xf800('0x3b')]({},_0x4150fd,_0x73abaf[_0xf800('0x3d')]);return db[_0xf800('0x3e')]['find'](_0x4150fd)[_0xf800('0x3f')](handleEntityNotFound(_0x541661,null))[_0xf800('0x3f')](function(_0x35c4b6){if(_0x35c4b6){var _0x3273b8=_0x35c4b6['get']({'plain':!![]});_0x3273b8=qs[_0xf800('0x4b')](_0x3273b8,['id','createdAt',_0xf800('0x4c'),_0xf800('0x4d')]);_0x73abaf[_0xf800('0x49')]=_[_0xf800('0x4b')](_0x73abaf['body'],['id',_0xf800('0x4e'),_0xf800('0x4c')]);return db['sequelize'][_0xf800('0x4f')](function(_0x3f2633){return db[_0xf800('0x3e')][_0xf800('0x48')](_[_0xf800('0x3b')](_0x3273b8,_0x73abaf[_0xf800('0x49')]),{'include':_0x73abaf[_0xf800('0x2f')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x3f2633})[_0xf800('0x3f')](function(_0x146b25){var _0x7d3199=_0x146b25[_0xf800('0x50')]({'plain':!![]});return db['UserProfileSection'][_0xf800('0x42')]({'where':{'userProfileId':_0x73abaf['params']['id']},'raw':!![]})[_0xf800('0x3f')](function(_0x21a0c9){if(_0x21a0c9){return BPromise[_0xf800('0x51')](_0x21a0c9,function(_0x3a373d){return new BPromise(function(_0x1b8a54,_0x880320){if(_0x3a373d[_0xf800('0x52')]===null||_0x3a373d['autoAssociation']===0x1)_0x1b8a54(null);return db[_0xf800('0x53')][_0xf800('0x42')]({'where':{'sectionId':_0x3a373d['id']},'raw':!![]})[_0xf800('0x3f')](function(_0x5ccde5){var _0xfad872=_[_0xf800('0x2e')](_0x5ccde5,function(_0x326598){return qs[_0xf800('0x4b')](_0x326598,['id','createdAt',_0xf800('0x4c'),_0xf800('0x54')]);});_0x1b8a54(_0xfad872);})['catch'](function(_0x23746f){_0x880320(_0x23746f);});})[_0xf800('0x3f')](function(_0x4e5edf){var _0x104b8e=qs[_0xf800('0x4b')](_0x3a373d,['id',_0xf800('0x4e'),_0xf800('0x4c')]);_0x104b8e[_0xf800('0x55')]=_0x7d3199['id'];if(_0x4e5edf)_0x104b8e[_0xf800('0x56')]=_0x4e5edf;return _0x104b8e;})[_0xf800('0x3f')](function(_0x36c850){return db[_0xf800('0x57')][_0xf800('0x48')](_0x36c850,{'include':[{'model':db['UserProfileResource'],'as':_0xf800('0x56')}],'raw':!![],'transaction':_0x3f2633});});})[_0xf800('0x3f')](function(){return _0x7d3199;});}});});});}})[_0xf800('0x3f')](respondWithResult(_0x541661,0xc9))[_0xf800('0x44')](handleError(_0x541661,null));};exports[_0xf800('0x58')]=function(_0x22b043,_0xf7e547){if(_0x22b043['body']['id']){delete _0x22b043['body']['id'];}return db[_0xf800('0x3e')]['find']({'where':{'id':_0x22b043[_0xf800('0x45')]['id']}})[_0xf800('0x3f')](handleEntityNotFound(_0xf7e547,null))[_0xf800('0x3f')](saveUpdates(_0x22b043['body'],null))[_0xf800('0x3f')](respondWithResult(_0xf7e547,null))[_0xf800('0x44')](handleError(_0xf7e547,null));};exports[_0xf800('0x25')]=function(_0x30335e,_0x2fe57c){return db[_0xf800('0x3e')]['find']({'where':{'id':_0x30335e[_0xf800('0x45')]['id']}})['then'](handleEntityNotFound(_0x2fe57c,null))[_0xf800('0x3f')](removeEntity(_0x2fe57c,null))[_0xf800('0x44')](handleError(_0x2fe57c,null));};exports[_0xf800('0x59')]=function(_0x4b1fbd,_0x182937){return db[_0xf800('0x3e')][_0xf800('0x59')]()[_0xf800('0x3f')](respondWithResult(_0x182937,null))[_0xf800('0x44')](handleError(_0x182937,null));};exports['addSections']=function(_0x140b36,_0x1d9d3b){var _0x463e6d=_0x140b36[_0xf800('0x49')];return db['UserProfile'][_0xf800('0x47')]({'where':{'id':_0x140b36[_0xf800('0x45')]['id']}})[_0xf800('0x3f')](handleEntityNotFound(_0x1d9d3b,null))[_0xf800('0x3f')](function(_0x18aa2d){if(_0x18aa2d){return db[_0xf800('0x5a')][_0xf800('0x4f')](function(_0x26a057){return db[_0xf800('0x57')][_0xf800('0x25')]({'where':{'userProfileId':_0x140b36[_0xf800('0x45')]['id'],'sectionId':_['map'](_0x463e6d,function(_0x172b05){return _0x172b05['sectionId'];})},'transaction':_0x26a057})[_0xf800('0x3f')](function(){var _0x1aa60c=_['map'](_0x463e6d,function(_0x31e678){_0x31e678[_0xf800('0x55')]=_0x140b36[_0xf800('0x45')]['id'];return _0x31e678;});var _0x3596b1=[];return BPromise['each'](_0x1aa60c,function(_0x368339){return db[_0xf800('0x57')]['create'](_0x368339,{'include':[{'model':db[_0xf800('0x53')],'as':_0xf800('0x56')}],'raw':!![],'transaction':_0x26a057})[_0xf800('0x3f')](function(_0x410c15){_0x3596b1[_0xf800('0x5b')](_0x410c15['get']({'plain':!![]}));});})[_0xf800('0x3f')](function(){return _0x3596b1;});});});}})[_0xf800('0x3f')](function(_0x2e1c86){return _0x2e1c86;})['then'](respondWithResult(_0x1d9d3b,null))['catch'](handleError(_0x1d9d3b,null));};exports[_0xf800('0x5c')]=function(_0x373019,_0x3316f3){var _0xde56a7;return db[_0xf800('0x3e')][_0xf800('0x47')]({'where':{'id':_0x373019['params']['id']},'attributes':['id',_0xf800('0x27')]})['then'](handleEntityNotFound(_0x3316f3,null))[_0xf800('0x3f')](function(_0x83698d){if(_0x83698d){_0xde56a7=_0x83698d;return db[_0xf800('0x57')][_0xf800('0x25')]({'where':{'userProfileId':_0x373019[_0xf800('0x45')]['id'],'sectionId':_0x373019[_0xf800('0x2f')]['ids']}});}})['then'](function(){return _0xde56a7;})[_0xf800('0x3f')](respondWithStatusCode(_0x3316f3,null))[_0xf800('0x44')](handleError(_0x3316f3,null));};exports[_0xf800('0x5d')]=function(_0x3b089a,_0x490958){var _0x1d1362=[];var _0x5155d8=[];return db[_0xf800('0x57')][_0xf800('0x42')]({'where':{'userProfileId':_0x3b089a[_0xf800('0x45')]['id']},'raw':!![]})['then'](function(_0x2aa40c){_0x1d1362=_[_0xf800('0x3a')](_0x2aa40c,function(_0x38eaeb){return _0x38eaeb[_0xf800('0x5e')]===0x1||_[_0xf800('0x5f')]([0x3eb,0x709],_0x38eaeb[_0xf800('0x54')]);});if(!_['isEmpty'](_0x1d1362)){return _['map'](_0x1d1362,function(_0x34d1a4){return _0x34d1a4[_0xf800('0x54')];});}else{return;}})[_0xf800('0x3f')](function(_0x108d69){if(_0x108d69)_0x5155d8=_0x108d69;if(_[_0xf800('0x5f')](_0x5155d8,0x64)){var _0x472591=_[_0xf800('0x47')](_0x1d1362,{'sectionId':0x64});return hasDefaultDashboard(_0x472591)[_0xf800('0x3f')](function(_0x244cba){return _[_0xf800('0x2e')](_0x1d1362,function(_0x5c356d){if(_0x5c356d[_0xf800('0x54')]===0x64){_0x5c356d[_0xf800('0x60')]=_0x244cba;}return _0x5c356d;});});}else{return;}})[_0xf800('0x3f')](function(_0xc93502){if(_0xc93502)_0x1d1362=_0xc93502;if(_[_0xf800('0x5f')](_0x5155d8,0x3eb)){var _0x2ce271=_[_0xf800('0x47')](_0x1d1362,{'sectionId':0x3eb});return getCustomDashboards(_0x2ce271)[_0xf800('0x3f')](function(_0x7985ae){return _[_0xf800('0x2e')](_0x1d1362,function(_0x25b01b){if(_0x2ce271[_0xf800('0x5e')]){if(_0x25b01b[_0xf800('0x54')]===0x3eb){_0x25b01b[_0xf800('0x60')]=_0x7985ae;}}else{if(_0x25b01b[_0xf800('0x54')]===0x64){if(!_0x25b01b['subsections']){_0x25b01b[_0xf800('0x60')]=[];}_0x25b01b[_0xf800('0x60')]=_0x25b01b['subsections'][_0xf800('0x61')](_0x7985ae);}}return _0x25b01b;});});}else{return;}})[_0xf800('0x3f')](function(_0x10e9a6){if(_0x10e9a6)_0x1d1362=_0x10e9a6;if(_[_0xf800('0x5f')](_0x5155d8,0x709)){var _0x4b9123=_[_0xf800('0x47')](_0x1d1362,{'sectionId':0x709});return getPlugins(_0x4b9123)[_0xf800('0x3f')](function(_0x37bda8){if(_0x4b9123[_0xf800('0x5e')]){return _[_0xf800('0x2e')](_0x1d1362,function(_0x1b1017){if(_0x1b1017[_0xf800('0x54')]===0x709){_0x1b1017[_0xf800('0x60')]=_0x37bda8;}return _0x1b1017;});}else{var _0x6735d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x37bda8};var _0x7b8388=_[_0xf800('0x2e')](_0x1d1362);_0x7b8388[_0xf800('0x5b')](_0x6735d);return _0x7b8388;}});}else{return;}})[_0xf800('0x3f')](function(_0x5207c6){if(_0x5207c6)_0x1d1362=_0x5207c6;return _['filter'](_0x1d1362,[_0xf800('0x5e'),0x1]);})[_0xf800('0x3f')](respondWithResult(_0x490958,null))[_0xf800('0x44')](handleError(_0x490958,null));};function hasDefaultDashboard(_0x4f773c){var _0x43556c=[0x65];return new BPromise(function(_0x5bcfdd,_0x3218d1){try{if(_0x4f773c[_0xf800('0x52')]){_0x5bcfdd(_0x43556c);}else{return db[_0xf800('0x53')][_0xf800('0x62')]({'where':{'sectionId':_0x4f773c['id']},'raw':!![]})['then'](function(_0x5a6a31){_0x5a6a31?_0x5bcfdd(_0x43556c):_0x5bcfdd();});}}catch(_0x515dab){_0x3218d1(_0x515dab);}});}function getCustomDashboards(_0x5ae651){var _0x58d33e=[];return new BPromise(function(_0x383381,_0x4d8f54){try{if(_0x5ae651[_0xf800('0x52')]){return db['Dashboard']['findAll']({'raw':!![]})[_0xf800('0x3f')](function(_0xc526dd){_0xc526dd['forEach'](function(_0x552c1b){_0x58d33e['push'](_0x552c1b['id']+0x1869f);});_0x383381(_0x58d33e);});}else{return db['UserProfileResource'][_0xf800('0x42')]({'where':{'sectionId':_0x5ae651['id']},'raw':!![]})[_0xf800('0x3f')](function(_0x25228a){_0x25228a[_0xf800('0x63')](function(_0x2c31fa){_0x58d33e[_0xf800('0x5b')](_0x2c31fa[_0xf800('0x64')]+0x1869f);});_0x383381(_0x58d33e);});}}catch(_0x20779c){_0x4d8f54(_0x20779c);}});}function getPlugins(_0x369bb5){var _0x29c2f3=[];return new BPromise(function(_0x2c1fe8,_0x5b09d3){try{if(_0x369bb5[_0xf800('0x52')]){return db['Plugin']['findAll']({'raw':!![]})[_0xf800('0x3f')](function(_0x224ee6){_0x224ee6['forEach'](function(_0x49580c){_0x29c2f3['push'](_0x49580c['id']+0x15b38);});_0x2c1fe8(_0x29c2f3);});}else{return db['UserProfileResource'][_0xf800('0x42')]({'where':{'sectionId':_0x369bb5['id']},'raw':!![]})[_0xf800('0x3f')](function(_0xedca57){_0xedca57['forEach'](function(_0x2446b6){_0x29c2f3[_0xf800('0x5b')](_0x2446b6[_0xf800('0x64')]+0x15b38);});_0x2c1fe8(_0x29c2f3);});}}catch(_0x228816){_0x5b09d3(_0x228816);}});}exports[_0xf800('0x65')]=function(_0x27018d,_0x12a89d){return db[_0xf800('0x3e')][_0xf800('0x47')]({'where':{'id':_0x27018d[_0xf800('0x45')]['id']}})[_0xf800('0x3f')](handleEntityNotFound(_0x12a89d,null))[_0xf800('0x3f')](function(_0xb3dd98){if(_0xb3dd98){return db[_0xf800('0x5a')][_0xf800('0x4f')](function(_0x3e9844){return db[_0xf800('0x57')][_0xf800('0x42')]({'where':{'userProfileId':_0x27018d[_0xf800('0x45')]['id']},'attributes':['id'],'raw':!![]})[_0xf800('0x3f')](function(_0x95d8d1){if(_0x95d8d1){return db['UserProfileSection'][_0xf800('0x25')]({'where':{'userProfileId':_0x27018d[_0xf800('0x45')]['id'],'id':_['map'](_0x95d8d1,function(_0x4efc9b){return _0x4efc9b['id'];})},'transaction':_0x3e9844});}})[_0xf800('0x3f')](function(_0x3b3ab9){var _0x5a84af=_[_0xf800('0x2e')](_0x27018d[_0xf800('0x49')],function(_0xbb02fc){_0xbb02fc[_0xf800('0x55')]=_0x27018d[_0xf800('0x45')]['id'];return _0xbb02fc;});return db[_0xf800('0x57')]['bulkCreate'](_0x5a84af,{'raw':!![],'transaction':_0x3e9844});})['then'](function(_0x2720c2){var _0x598258=_[_0xf800('0x3a')](_['map'](_0x2720c2,function(_0x48f6b2){return _0x48f6b2['get']({'plain':!![]});}),{'includeAll':![]});if(_0x598258){return db[_0xf800('0x57')][_0xf800('0x42')]({'where':{'userProfileId':_0x27018d['params']['id'],'sectionId':_[_0xf800('0x2e')](_0x598258,function(_0x56efe7){return _0x56efe7[_0xf800('0x54')];})},'attributes':['id',_0xf800('0x54')],'raw':!![]})[_0xf800('0x3f')](function(_0x91c89e){var _0x48a1fc=_[_0xf800('0x2e')](_0x27018d[_0xf800('0x49')],function(_0x20209f){_0x20209f[_0xf800('0x55')]=_0x27018d[_0xf800('0x45')]['id'];return _0x20209f;});return db['UserProfileResource'][_0xf800('0x66')](_0x48a1fc,{'raw':!![],'transaction':_0x3e9844});});}})[_0xf800('0x44')](handleError(_0x12a89d,null));});}})[_0xf800('0x3f')](function(_0x10a5e5){var _0x1674d0=_[_0xf800('0x2e')](_0x10a5e5,function(_0x57fb8d){return _0x57fb8d[_0xf800('0x50')]({'plain':!![]});});})[_0xf800('0x3f')](respondWithResult(_0x12a89d,null))[_0xf800('0x44')](handleError(_0x12a89d,null));};exports['removeResources']=function(_0x10e6f6,_0x1be5fb,_0x596dfc){return db[_0xf800('0x3e')][_0xf800('0x47')]({'where':{'id':_0x10e6f6[_0xf800('0x45')]['id']}})[_0xf800('0x3f')](handleEntityNotFound(_0x1be5fb,null))['then'](function(_0x107fbc){if(_0x107fbc){return _0x107fbc[_0xf800('0x67')](_0x10e6f6[_0xf800('0x2f')][_0xf800('0x68')]);}})['then'](respondWithStatusCode(_0x1be5fb,null))['catch'](handleError(_0x1be5fb,null));};exports['getResources']=function(_0x41378e,_0x5bb5bf){var _0x49a8eb={};if(!_0x41378e[_0xf800('0x2f')][_0xf800('0x69')])throw new Error(_0xf800('0x6a'));if(!_0x41378e[_0xf800('0x2f')][_0xf800('0x35')](_0xf800('0x36'))){_0x49a8eb[_0xf800('0x20')]=qs['limit'](_0x41378e['query'][_0xf800('0x20')]);_0x49a8eb[_0xf800('0x1e')]=qs[_0xf800('0x1e')](_0x41378e['query'][_0xf800('0x1e')]);}return db['UserProfile'][_0xf800('0x47')]({'where':{'id':_0x41378e['params']['id']}})[_0xf800('0x3f')](function(_0x3eef1f){if(!_0x3eef1f)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x41378e[_0xf800('0x45')]['id']);return db[_0xf800('0x3e')]['getResources'](_0x41378e);})['then'](respondWithFilteredResult(_0x5bb5bf,_0x49a8eb))[_0xf800('0x44')](handleError(_0x5bb5bf,null));};
\ No newline at end of file
index 095d217..2ae16cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa56=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','../../mysqldb','UserProfile'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa56,0xc6));var _0x6aa5=function(_0x15aa20,_0x2a2852){_0x15aa20=_0x15aa20-0x0;var _0x7c31e8=_0xaa56[_0x15aa20];return _0x7c31e8;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x6aa5('0x0'))['db'][_0x6aa5('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x6aa5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6aa5('0x3'),'afterDestroy':_0x6aa5('0x4')};function emitEvent(_0x34842d){return function(_0x39e1a6,_0x1662ee,_0x52b3d3){UserProfileEvents[_0x6aa5('0x5')](_0x34842d+':'+_0x39e1a6['id'],_0x39e1a6);UserProfileEvents['emit'](_0x34842d,_0x39e1a6);_0x52b3d3(null);};}for(var e in events){if(events[_0x6aa5('0x6')](e)){var event=events[e];UserProfile[_0x6aa5('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0xeda8=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xeda8,0x104));var _0x8eda=function(_0x5be728,_0x1082b7){_0x5be728=_0x5be728-0x0;var _0x2388b9=_0xeda8[_0x5be728];return _0x2388b9;};'use strict';var EventEmitter=require(_0x8eda('0x0'));var UserProfile=require(_0x8eda('0x1'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x8eda('0x2')](0x0);var events={'afterCreate':_0x8eda('0x3'),'afterUpdate':_0x8eda('0x4'),'afterDestroy':_0x8eda('0x5')};function emitEvent(_0x37ab2c){return function(_0x94b83f,_0x25b19a,_0x3eb7b1){UserProfileEvents[_0x8eda('0x6')](_0x37ab2c+':'+_0x94b83f['id'],_0x94b83f);UserProfileEvents[_0x8eda('0x6')](_0x37ab2c,_0x94b83f);_0x3eb7b1(null);};}for(var e in events){if(events[_0x8eda('0x7')](e)){var event=events[e];UserProfile[_0x8eda('0x8')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 093bbe8..f576ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8497=['chatwebsites','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','VoiceMail','voicerecordings','User','agent','Telephones','role','telephone','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoicePrefix','Campaign','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','queuecampaigns','VoiceQueues','users','agents','telephones','Users','user','Agents','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','Tag','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','then','OpenTabs','define','UserProfile','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','params','all','ignore','keys','attributes','intersection','fields','hasOwnProperty','limit','offset','order','sort','filters','pick','merge','key','VIRTUAL','foreignKey','find','forEach','options','autoAssociation','includeAll','reportType','reportId','DefaultReports','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','include','Tags','tag','chat','dataValues','sms','mail','openchannel','whatsapp','lodash','./userProfile.attributes','squel','models','filter','field','associatedResources','catch','value','model','findAll','map','name','resolve','UserProfileResource','AnalyticExtractedReport','toLowerCase','odbc','childModel','SquareOdbc','SquareRecording','parentSections','projects','contacts','CmContact','Lists','ListId','lists','CmList','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue'];(function(_0x2cb2da,_0x1e3773){var _0x4d8135=function(_0x9b9675){while(--_0x9b9675){_0x2cb2da['push'](_0x2cb2da['shift']());}};_0x4d8135(++_0x1e3773);}(_0x8497,0x95));var _0x7849=function(_0x109faf,_0x24f932){_0x109faf=_0x109faf-0x0;var _0x592da1=_0x8497[_0x109faf];return _0x592da1;};'use strict';var _=require(_0x7849('0x0'));var attributes=require(_0x7849('0x1'));var qs=require('../../components/parsers/qs');var squel=require(_0x7849('0x2'));module['exports']=function(_0x13aff3){var _0x51436c=_0x13aff3[_0x7849('0x3')];function _0x2afa32(_0x4b2fbd,_0x21e9df){return new Promise(function(_0x44c931,_0x38f0e1){if(!_0x21e9df)return _0x44c931(null);var _0x4ee08f=_0x21e9df[_0x7849('0x4')]?{[_0x21e9df[_0x7849('0x4')][_0x7849('0x5')]]:_0x21e9df['filter']['value']}:undefined;return _0x51436c[_0x4b2fbd]['findAll']({'where':_0x4ee08f,'raw':!![]})['then'](function(_0x4f2de){_0x21e9df[_0x7849('0x6')]=_['map'](_0x4f2de,'id');_0x44c931(_0x21e9df);})[_0x7849('0x7')](function(_0x178a10){_0x38f0e1(_0x178a10);});});}function _0x5ba0ea(_0x21747b,_0x13ed84){return new Promise(function(_0xcb9b0e,_0x42c459){var _0x4d27b6=_0x21747b['filter']?{[_0x21747b[_0x7849('0x4')]['field']]:_0x21747b[_0x7849('0x4')][_0x7849('0x8')]}:undefined;return _0x51436c[_0x21747b[_0x7849('0x9')]][_0x7849('0xa')]({'where':_0x4d27b6,'raw':!![]})['then'](function(_0xf0b874){_0x13ed84['associatedResources']=_[_0x7849('0xb')](_0xf0b874,function(_0x4f249e){return _0x4f249e[_0x7849('0xc')];});_0xcb9b0e(_0x13ed84);})[_0x7849('0x7')](function(_0x15d707){_0x42c459(_0x15d707);});});}function _0x2146a1(_0x566009,_0x2480f4,_0x487e89){if(!_0x2480f4)return Promise[_0x7849('0xd')](null);return new Promise(function(_0x24dbed,_0x40f943){return _0x51436c[_0x7849('0xe')][_0x7849('0xa')]({'where':{'sectionId':_0x2480f4['id']},'raw':!![]})['then'](function(_0x98bd06){if(_0x566009[_0x7849('0x5')]&&_0x566009['field']!=='id'){_0x2480f4[_0x7849('0x6')]=_[_0x7849('0xb')](_0x98bd06,function(_0x10bbf5){return _0x10bbf5[_0x566009[_0x7849('0x5')]];});}else{if(_0x487e89===_0x7849('0xf')){_0x2480f4[_0x7849('0x6')]=_[_0x7849('0xb')](_0x98bd06,function(_0x466f17){return{'id':_0x466f17['resourceId'],'type':_0x466f17['type']};});}else{_0x2480f4['associatedResources']=_['map'](_0x98bd06,function(_0x1abc6d){return _0x1abc6d['resourceId'];});}}_0x24dbed(_0x2480f4);})[_0x7849('0x7')](function(_0x2c9347){_0x40f943(_0x2c9347);});});}function _0x26c126(_0x9eb0c1,_0x1e464d){var _0x9a9fd6={'parentSections':[]};switch(_0x9eb0c1[_0x7849('0x10')]()){case'squareprojects':_0x9a9fd6['childModel']='SquareProject';break;case _0x7849('0x11'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x13');break;case'squarerecordings':_0x9a9fd6['childModel']=_0x7849('0x14');_0x9a9fd6[_0x7849('0x15')]=[{'name':'SquareProjects','field':_0x7849('0xc'),'foreignKey':'projectName'}];break;case _0x7849('0x16'):_0x9a9fd6[_0x7849('0x12')]='JscriptyProject';break;case _0x7849('0x17'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x18');_0x9a9fd6['parentSections']=[{'name':_0x7849('0x19'),'field':'id','foreignKey':_0x7849('0x1a')}];break;case _0x7849('0x1b'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x1c');break;case'companies':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x1d');break;case _0x7849('0x1e'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x1f');break;case _0x7849('0x20'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x21');break;case _0x7849('0x22'):_0x9a9fd6[_0x7849('0x12')]='ChatWebsite';break;case _0x7849('0x23'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x24');break;case _0x7849('0x25'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x26');break;case _0x7849('0x27'):case _0x7849('0x28'):case _0x7849('0x29'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x2a');break;case'contexts':_0x9a9fd6['childModel']='VoiceContext';break;case'voicemails':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x2b');break;case _0x7849('0x2c'):_0x9a9fd6[_0x7849('0x12')]='VoiceRecording';_0x9a9fd6[_0x7849('0x15')]=[{'name':'Agents','field':_0x7849('0xc'),'foreignKey':'membername','model':_0x7849('0x2d'),'filter':{'field':'role','value':[_0x7849('0x2e')]}},{'name':_0x7849('0x2f'),'field':'name','foreignKey':'membername','model':_0x7849('0x2d'),'filter':{'field':_0x7849('0x30'),'value':[_0x7849('0x31')]}},{'name':'VoiceQueues','field':_0x7849('0xc'),'foreignKey':_0x7849('0x32'),'model':_0x7849('0x33'),'filter':{'field':_0x7849('0x34'),'value':[_0x7849('0x35')]}},{'name':_0x7849('0x36'),'field':'name','foreignKey':'queue','model':_0x7849('0x33'),'filter':{'field':_0x7849('0x34'),'value':[_0x7849('0x37')]}}];break;case _0x7849('0x38'):_0x9a9fd6['childModel']=_0x7849('0x39');break;case _0x7849('0x3a'):_0x9a9fd6[_0x7849('0x12')]='VoiceChanSpy';break;case'voiceprefixes':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x3b');break;case'ivrcampaigns':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x3c');break;case'mailqueues':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x3d');break;case _0x7849('0x3e'):_0x9a9fd6[_0x7849('0x12')]='MailAccount';break;case _0x7849('0x3f'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x40');break;case _0x7849('0x41'):_0x9a9fd6['childModel']=_0x7849('0x42');break;case'openchannelaccounts':_0x9a9fd6[_0x7849('0x12')]='OpenchannelAccount';break;case _0x7849('0x43'):_0x9a9fd6[_0x7849('0x12')]='SmsQueue';break;case _0x7849('0x44'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x45');break;case _0x7849('0x46'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x47');break;case _0x7849('0x48'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x49');break;case'teams':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x4a');break;case'voicequeues':case _0x7849('0x4b'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x33');if(_0x1e464d){_0x9a9fd6['parentSections']=[{'name':_0x7849('0x4c')},{'name':_0x7849('0x36')}];}break;case _0x7849('0x4d'):case _0x7849('0x4e'):case _0x7849('0x4f'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x2d');if(_0x1e464d){_0x9a9fd6[_0x7849('0x15')]=[{'name':_0x7849('0x50'),'filter':{'field':_0x7849('0x30'),'value':['admin',_0x7849('0x51')]},'ignore':!![]},{'name':_0x7849('0x52')},{'name':'Telephones'}];}break;case _0x7849('0x53'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x54');break;case _0x7849('0x55'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x56');break;case _0x7849('0x57'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x58');break;case'sugarcrmaccounts':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x59');break;case _0x7849('0x5a'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x5b');break;case _0x7849('0x5c'):_0x9a9fd6[_0x7849('0x12')]='ZohoAccount';break;case'vtigeraccounts':_0x9a9fd6[_0x7849('0x12')]='User';break;case'cannedanswers':_0x9a9fd6[_0x7849('0x12')]='CannedAnswer';break;case'dispositions':_0x9a9fd6[_0x7849('0x12')]='Disposition';break;case'customdashboards':_0x9a9fd6[_0x7849('0x12')]='Dashboard';break;case'intervals':_0x9a9fd6['childModel']=_0x7849('0x5d');break;case _0x7849('0x5e'):_0x9a9fd6['childModel']=_0x7849('0x5f');break;case _0x7849('0x60'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x61');break;case _0x7849('0x62'):_0x9a9fd6['childModel']=_0x7849('0x63');break;case'tags':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x64');break;case'templates':_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x65');break;case _0x7849('0x66'):_0x9a9fd6['childModel']=_0x7849('0x67');break;case _0x7849('0x68'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x69');break;case _0x7849('0x6a'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x6b');break;case _0x7849('0x6c'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x6d');break;case _0x7849('0x6e'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0xf');_0x9a9fd6['parentSections']=[{'name':_0x7849('0x6f'),'field':'id','foreignKey':'reportId'}];break;case _0x7849('0x70'):_0x9a9fd6[_0x7849('0x12')]=_0x7849('0x71');break;}return _0x9a9fd6;}function _0x5c803b(_0x4d1de3,_0x453dc7){var _0x136061=_0x4d1de3[_0x7849('0x72')](0x0)[_0x7849('0x73')]()+_0x4d1de3[_0x7849('0x74')](0x1);var _0x12466f={'type':_0x51436c[_0x7849('0x75')][_0x7849('0x76')][_0x7849('0x77')],'raw':!![]};return new Promise(function(_0x40b433,_0x14478c){var _0x50358f=squel['select']()['field'](_0x7849('0x78')+_0x136061+_0x7849('0x79'),'id')[_0x7849('0x5')](_0x7849('0x7a'))['from'](_0x7849('0x7b')+_0x4d1de3+_0x7849('0x7c'),'ui')[_0x7849('0x7d')](_0x7849('0x7e'),_0x453dc7['id']);return _0x51436c[_0x7849('0x7f')][_0x7849('0x80')](_0x50358f['toString'](),_0x12466f)[_0x7849('0x81')](function(_0x59ccd9){_0x453dc7[_0x136061+_0x7849('0x82')]=_0x59ccd9;_0x40b433(_0x59ccd9);})[_0x7849('0x7')](function(_0x5ab562){_0x14478c(_0x5ab562);});});}return _0x13aff3[_0x7849('0x83')](_0x7849('0x84'),attributes,{'tableName':_0x7849('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2e0a2c){var _0x4c2a68={'raw':_0x2e0a2c['query'][_0x7849('0x86')],'where':{}};var _0x47eebc={};var _0x4eb219={'count':0x0,'rows':[]};var _0x5350db=_0x2e0a2c[_0x7849('0x80')][_0x7849('0x87')];var _0x164c60=_0x2e0a2c[_0x7849('0x80')][_0x7849('0x88')]||![];var _0x4ecee5=_0x26c126(_0x5350db,_0x164c60);if(!_0x4ecee5[_0x7849('0x12')])throw new Error(_0x7849('0x89')+_0x5350db+'\x27');var _0x538eaa=[{'name':_0x5350db}];if(!_[_0x7849('0x8a')](_0x4ecee5['parentSections']))_0x538eaa=_0x4ecee5[_0x7849('0x15')];var _0x34b843=[];for(var _0x10ca94=0x0;_0x10ca94<_0x538eaa[_0x7849('0x8b')];_0x10ca94++){_0x34b843[_0x7849('0x8c')](_0x51436c['UserProfileSection']['find']({'where':{'userProfileId':_0x2e0a2c[_0x7849('0x8d')]['id'],'name':_0x538eaa[_0x10ca94][_0x7849('0xc')]},'raw':!![]}));}return Promise[_0x7849('0x8e')](_0x34b843)[_0x7849('0x81')](function(_0x22ae5b){var _0x44f935=_[_0x7849('0x4')](_0x22ae5b,function(_0x460ae7){return _0x460ae7?_0x460ae7:undefined;});var _0x98d181=_[_0x7849('0x4')](_0x538eaa,[_0x7849('0x8f'),!![]]);var _0x5646f9=_[_0x7849('0x8a')](_0x44f935)&&_[_0x7849('0x8a')](_0x98d181)?null:_['union'](_0x98d181,_0x44f935);if(!_0x5646f9)return null;var _0x3324de=[];for(var _0x106e3a=0x0;_0x106e3a<_0x5646f9[_0x7849('0x8b')];_0x106e3a++){var _0x463f49=_['find'](_0x538eaa,function(_0x553eef){return _0x5646f9[_0x106e3a]?_0x553eef['name']===_0x5646f9[_0x106e3a][_0x7849('0xc')]:null;});if(_0x463f49){if(_0x5646f9[_0x106e3a]['ignore']){_0x3324de['push'](_0x2afa32(_0x4ecee5[_0x7849('0x12')],_0x5646f9[_0x106e3a]));}else{if(!_0x5646f9[_0x106e3a]['autoAssociation']){_0x3324de[_0x7849('0x8c')](_0x2146a1(_0x463f49,_0x5646f9[_0x106e3a],_0x4ecee5[_0x7849('0x12')]));}else{if(_0x463f49['model']){_0x3324de[_0x7849('0x8c')](_0x5ba0ea(_0x463f49,_0x5646f9[_0x106e3a]));}}}}}return Promise[_0x7849('0x8e')](_0x3324de);})['then'](function(_0x59c149){var _0x3681bc=_0x59c149;var _0x2a46f0=null;if(_0x3681bc){_0x2a46f0=_0x3681bc[_0x7849('0x8b')]===0x1?_0x3681bc[0x0]:null;}if(!_0x2a46f0&&!_0x3681bc)return _0x4eb219;var _0xd3c427=_0x51436c[_0x4ecee5['childModel']]['rawAttributes'];_0x47eebc[_0x7849('0x9')]=_['keys'](_0xd3c427);_0x47eebc['query']=_[_0x7849('0x90')](_0x2e0a2c[_0x7849('0x80')]);_0x47eebc['filters']=_['intersection'](_0x47eebc[_0x7849('0x9')],_0x47eebc[_0x7849('0x80')]);_0x4c2a68[_0x7849('0x91')]=_[_0x7849('0x92')](_0x47eebc['model'],qs['fields'](_0x2e0a2c[_0x7849('0x80')][_0x7849('0x93')]));_0x4c2a68[_0x7849('0x91')]=_0x4c2a68[_0x7849('0x91')][_0x7849('0x8b')]?_0x4c2a68[_0x7849('0x91')]:_0x47eebc[_0x7849('0x9')];if(!_0x2e0a2c['query'][_0x7849('0x94')]('nolimit')){_0x4c2a68[_0x7849('0x95')]=qs[_0x7849('0x95')](_0x2e0a2c['query'][_0x7849('0x95')]);_0x4c2a68[_0x7849('0x96')]=qs[_0x7849('0x96')](_0x2e0a2c['query'][_0x7849('0x96')]);}_0x4c2a68[_0x7849('0x97')]=qs[_0x7849('0x98')](_0x2e0a2c[_0x7849('0x80')][_0x7849('0x98')]);_0x4c2a68[_0x7849('0x7d')]=qs[_0x7849('0x99')](_[_0x7849('0x9a')](_0x2e0a2c['query'],_0x47eebc[_0x7849('0x99')]));if(_0x2e0a2c[_0x7849('0x80')][_0x7849('0x4')]){_0x4c2a68[_0x7849('0x7d')]=_[_0x7849('0x9b')](_0x4c2a68[_0x7849('0x7d')],{'$or':_[_0x7849('0xb')](_0xd3c427,function(_0x1074bd){if(_0x1074bd[_0x7849('0x34')][_0x7849('0x9c')]!==_0x7849('0x9d')){var _0x249993={};_0x249993[_0x1074bd[_0x7849('0x5')]]={'$like':'%'+_0x2e0a2c[_0x7849('0x80')]['filter']+'%'};return _0x249993;}})});}var _0x53c7af=[];var _0x348549=null;var _0x612f2c={};if(_0x2a46f0){_0x348549=_['find'](_0x538eaa,[_0x7849('0xc'),_0x2a46f0[_0x7849('0xc')]]);if(_0x348549['field']){_0x612f2c={};if(_0x4ecee5[_0x7849('0x12')]===_0x7849('0xf')){_0x612f2c[_0x348549[_0x7849('0x9e')]]=_[_0x7849('0xb')](_0x2a46f0[_0x7849('0x6')],'id');}else{_0x612f2c[_0x348549[_0x7849('0x9e')]]=_0x2a46f0[_0x7849('0x6')];}_0x53c7af['push'](_0x612f2c);}else{_0x4c2a68['where']['id']=_0x2a46f0[_0x7849('0x6')];}}else{for(var _0x5f0ddc=0x0;_0x5f0ddc<_0x3681bc['length'];_0x5f0ddc++){_0x348549=_[_0x7849('0x9f')](_0x538eaa,['name',_0x3681bc[_0x5f0ddc][_0x7849('0xc')]]);if(_0x348549[_0x7849('0x5')]){_0x612f2c={};_0x612f2c[_0x348549[_0x7849('0x9e')]]=_0x3681bc[_0x5f0ddc][_0x7849('0x6')];_0x53c7af[_0x7849('0x8c')](_0x612f2c);}else{if(!_0x4c2a68[_0x7849('0x7d')]['id'])_0x4c2a68['where']['id']=[];_0x3681bc[_0x5f0ddc][_0x7849('0x6')][_0x7849('0xa0')](function(_0x52913f){_0x4c2a68[_0x7849('0x7d')]['id'][_0x7849('0x8c')](_0x52913f);});}}}if(!_[_0x7849('0x8a')](_0x53c7af)){_0x4c2a68['where']=_['merge'](_0x4c2a68['where'],{'$and':{'$or':_0x53c7af}});}_0x4c2a68=_['merge']({},_0x4c2a68,_0x2e0a2c[_0x7849('0xa1')]);if(_0x2a46f0&&!_0x2a46f0[_0x7849('0xa2')]&&_0x4ecee5[_0x7849('0x12')]===_0x7849('0xf')){if(_0x2e0a2c[_0x7849('0x80')][_0x7849('0xa3')]){_0x4c2a68['include']=[{'all':!![]}];}return _0x51436c[_0x4ecee5[_0x7849('0x12')]]['findAll'](_0x4c2a68)['then'](function(_0x2b68da){var _0x32534b=[];_0x2b68da[_0x7849('0xa0')](function(_0x5634ea){var _0x487b22;switch(_0x5634ea[_0x7849('0xa4')]){case'default':_0x487b22=_[_0x7849('0x9f')](_0x2a46f0[_0x7849('0x6')],function(_0x20b064){return _0x20b064['id']===_0x5634ea[_0x7849('0xa5')]&&_0x20b064[_0x7849('0x34')]===_0x7849('0xa6');});break;case _0x7849('0xa7'):_0x487b22=_[_0x7849('0x9f')](_0x2a46f0['associatedResources'],function(_0x1fc1b1){return _0x1fc1b1['id']===_0x5634ea['reportId']&&_0x1fc1b1[_0x7849('0x34')]===_0x7849('0xa8');});break;}if(_0x487b22)_0x32534b[_0x7849('0x8c')](_0x5634ea);});_0x4eb219[_0x7849('0xa9')]=_0x32534b['length'];_0x4eb219[_0x7849('0xaa')]=_0x32534b;return _0x4eb219;});}else{if(!_[_0x7849('0x8a')](_0x2e0a2c[_0x7849('0x80')]['ids'])){_0x4c2a68['where']['id']=_0x4c2a68['where']['id']?_[_0x7849('0x92')](_0x4c2a68[_0x7849('0x7d')]['id'],_0x2e0a2c['query'][_0x7849('0xab')]):_0x2e0a2c['query'][_0x7849('0xab')];if(_0x2e0a2c['query'][_0x7849('0xac')]){_0x4c2a68[_0x7849('0x97')]=_0x2e0a2c[_0x7849('0x80')]['customSorting'];}}if(_0x2e0a2c[_0x7849('0x80')][_0x7849('0xad')]){_0x4c2a68[_0x7849('0x7d')]=_[_0x7849('0x9b')](_0x4c2a68[_0x7849('0x7d')],{'$and':_0x2e0a2c['query']['extraQueryConditions']});}return _0x51436c[_0x4ecee5[_0x7849('0x12')]][_0x7849('0xa9')]({'where':_0x4c2a68[_0x7849('0x7d')]})[_0x7849('0x81')](function(_0x2f6dfe){_0x4eb219[_0x7849('0xa9')]=_0x2f6dfe;if(_0x2e0a2c[_0x7849('0x80')][_0x7849('0xa3')]){if(_0x4ecee5[_0x7849('0x12')]===_0x7849('0x18')){_0x4c2a68[_0x7849('0xae')]=[{'model':_0x51436c[_0x7849('0x64')],'as':_0x7849('0xaf'),'attributes':['id',_0x7849('0xc'),'color'],'required':_0x2e0a2c[_0x7849('0x80')][_0x7849('0xb0')]?!![]:![]},{'model':_0x51436c[_0x7849('0x64')],'as':'ThroughTags','attributes':['id',_0x7849('0xc'),'color'],'through':_0x2e0a2c[_0x7849('0x80')]['tag']?{'attributes':[],'where':{'TagId':_0x2e0a2c[_0x7849('0x80')][_0x7849('0xb0')]||undefined}}:{},'required':_0x2e0a2c['query']['tag']?!![]:![]}];}else{_0x4c2a68[_0x7849('0xae')]=[{'all':!![]}];}}return _0x51436c[_0x4ecee5[_0x7849('0x12')]][_0x7849('0xa')](_0x4c2a68);})[_0x7849('0x81')](function(_0x2a571b){_0x4eb219[_0x7849('0xaa')]=_0x2a571b;if(_0x5350db===_0x7849('0x52')&&_0x2e0a2c['query']['openTabs']==='true'){var _0x2aa5b8=[];for(var _0xbc3bc0=0x0;_0xbc3bc0<_0x4eb219[_0x7849('0xaa')][_0x7849('0x8b')];_0xbc3bc0++){_0x2aa5b8[_0x7849('0x8c')](_0x5c803b(_0x7849('0xb1'),_0x4eb219['rows'][_0xbc3bc0][_0x7849('0xb2')]));_0x2aa5b8[_0x7849('0x8c')](_0x5c803b(_0x7849('0xb3'),_0x4eb219[_0x7849('0xaa')][_0xbc3bc0]['dataValues']));_0x2aa5b8[_0x7849('0x8c')](_0x5c803b('fax',_0x4eb219[_0x7849('0xaa')][_0xbc3bc0][_0x7849('0xb2')]));_0x2aa5b8[_0x7849('0x8c')](_0x5c803b(_0x7849('0xb4'),_0x4eb219[_0x7849('0xaa')][_0xbc3bc0]['dataValues']));_0x2aa5b8[_0x7849('0x8c')](_0x5c803b(_0x7849('0xb5'),_0x4eb219[_0x7849('0xaa')][_0xbc3bc0][_0x7849('0xb2')]));_0x2aa5b8['push'](_0x5c803b(_0x7849('0xb6'),_0x4eb219[_0x7849('0xaa')][_0xbc3bc0][_0x7849('0xb2')]));}return Promise[_0x7849('0x8e')](_0x2aa5b8)[_0x7849('0x81')](function(){return _0x4eb219;});}return _0x4eb219;});}});}}});};
\ No newline at end of file
+var _0x5f82=['merge','VIRTUAL','foreignKey','forEach','options','autoAssociation','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','includeAll','Tag','Tags','color','tag','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','then','associatedResources','map','catch','value','model','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','odbc','childModel','SquareOdbc','squarerecordings','SquareRecording','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','companies','chatqueues','ChatQueue','chatwebsites','faxqueues','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','VoiceRecording','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','MailSubstatus','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','Users','admin','Agents','zendeskaccounts','ZendeskAccount','salesforceaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','Disposition','Dashboard','intervals','Interval','Pause','scheduler','sounds','Sound','templates','triggers','Trigger','trunks','variables','Variable','Plugin','Reports','reportId','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','ignore','length','rawAttributes','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','pick'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0x5f82,0xdf));var _0x25f8=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x5f82[_0x38537f];return _0x141e23;};'use strict';var _=require(_0x25f8('0x0'));var attributes=require(_0x25f8('0x1'));var qs=require(_0x25f8('0x2'));var squel=require(_0x25f8('0x3'));module[_0x25f8('0x4')]=function(_0xf87560){var _0x39372e=_0xf87560[_0x25f8('0x5')];function _0x2fdc25(_0x3741b5,_0x518992){return new Promise(function(_0x1be1ac,_0x4126a3){if(!_0x518992)return _0x1be1ac(null);var _0x23d5ce=_0x518992['filter']?{[_0x518992[_0x25f8('0x6')][_0x25f8('0x7')]]:_0x518992[_0x25f8('0x6')]['value']}:undefined;return _0x39372e[_0x3741b5][_0x25f8('0x8')]({'where':_0x23d5ce,'raw':!![]})[_0x25f8('0x9')](function(_0x786e02){_0x518992[_0x25f8('0xa')]=_[_0x25f8('0xb')](_0x786e02,'id');_0x1be1ac(_0x518992);})[_0x25f8('0xc')](function(_0x167a74){_0x4126a3(_0x167a74);});});}function _0x55939f(_0x200f24,_0x2f4525){return new Promise(function(_0x12bdca,_0xf7a011){var _0x29c2a5=_0x200f24['filter']?{[_0x200f24[_0x25f8('0x6')][_0x25f8('0x7')]]:_0x200f24[_0x25f8('0x6')][_0x25f8('0xd')]}:undefined;return _0x39372e[_0x200f24[_0x25f8('0xe')]][_0x25f8('0x8')]({'where':_0x29c2a5,'raw':!![]})['then'](function(_0x1c8b27){_0x2f4525['associatedResources']=_[_0x25f8('0xb')](_0x1c8b27,function(_0x34b1d6){return _0x34b1d6[_0x25f8('0xf')];});_0x12bdca(_0x2f4525);})[_0x25f8('0xc')](function(_0x2d9918){_0xf7a011(_0x2d9918);});});}function _0x9d0c12(_0x414568,_0x25f27f,_0x29c612){if(!_0x25f27f)return Promise[_0x25f8('0x10')](null);return new Promise(function(_0x277fbf,_0x26b015){return _0x39372e[_0x25f8('0x11')][_0x25f8('0x8')]({'where':{'sectionId':_0x25f27f['id']},'raw':!![]})[_0x25f8('0x9')](function(_0x3d956c){if(_0x414568[_0x25f8('0x7')]&&_0x414568[_0x25f8('0x7')]!=='id'){_0x25f27f[_0x25f8('0xa')]=_['map'](_0x3d956c,function(_0x473016){return _0x473016[_0x414568['field']];});}else{if(_0x29c612===_0x25f8('0x12')){_0x25f27f[_0x25f8('0xa')]=_['map'](_0x3d956c,function(_0x7b9089){return{'id':_0x7b9089['resourceId'],'type':_0x7b9089['type']};});}else{_0x25f27f[_0x25f8('0xa')]=_[_0x25f8('0xb')](_0x3d956c,function(_0x381400){return _0x381400[_0x25f8('0x13')];});}}_0x277fbf(_0x25f27f);})[_0x25f8('0xc')](function(_0x56a8bf){_0x26b015(_0x56a8bf);});});}function _0x37ad55(_0x34503e,_0x1b038e){var _0x5ea2fa={'parentSections':[]};switch(_0x34503e[_0x25f8('0x14')]()){case _0x25f8('0x15'):_0x5ea2fa['childModel']='SquareProject';break;case _0x25f8('0x16'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x18');break;case _0x25f8('0x19'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x1a');_0x5ea2fa['parentSections']=[{'name':_0x25f8('0x1b'),'field':_0x25f8('0xf'),'foreignKey':_0x25f8('0x1c')}];break;case _0x25f8('0x1d'):_0x5ea2fa['childModel']=_0x25f8('0x1e');break;case _0x25f8('0x1f'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x20');_0x5ea2fa[_0x25f8('0x21')]=[{'name':_0x25f8('0x22'),'field':'id','foreignKey':_0x25f8('0x23')}];break;case _0x25f8('0x24'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x25');break;case _0x25f8('0x26'):_0x5ea2fa[_0x25f8('0x17')]='CmCompany';break;case'globalcustomfields':_0x5ea2fa[_0x25f8('0x17')]='CmCustomField';break;case _0x25f8('0x27'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x28');break;case _0x25f8('0x29'):_0x5ea2fa['childModel']='ChatWebsite';break;case _0x25f8('0x2a'):_0x5ea2fa['childModel']='FaxQueue';break;case'faxaccounts':_0x5ea2fa[_0x25f8('0x17')]='FaxAccount';break;case _0x25f8('0x2b'):case _0x25f8('0x2c'):case _0x25f8('0x2d'):_0x5ea2fa['childModel']=_0x25f8('0x2e');break;case _0x25f8('0x2f'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x30');break;case'voicemails':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x31');break;case'voicerecordings':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x32');_0x5ea2fa[_0x25f8('0x21')]=[{'name':'Agents','field':_0x25f8('0xf'),'foreignKey':_0x25f8('0x33'),'model':'User','filter':{'field':_0x25f8('0x34'),'value':[_0x25f8('0x35')]}},{'name':_0x25f8('0x36'),'field':_0x25f8('0xf'),'foreignKey':_0x25f8('0x33'),'model':_0x25f8('0x37'),'filter':{'field':_0x25f8('0x34'),'value':[_0x25f8('0x38')]}},{'name':_0x25f8('0x39'),'field':_0x25f8('0xf'),'foreignKey':_0x25f8('0x3a'),'model':_0x25f8('0x3b'),'filter':{'field':_0x25f8('0x3c'),'value':[_0x25f8('0x3d')]}},{'name':_0x25f8('0x3e'),'field':'name','foreignKey':_0x25f8('0x3a'),'model':_0x25f8('0x3b'),'filter':{'field':_0x25f8('0x3c'),'value':[_0x25f8('0x3f')]}}];break;case _0x25f8('0x40'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x41');break;case _0x25f8('0x42'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x43');break;case _0x25f8('0x44'):_0x5ea2fa[_0x25f8('0x17')]='VoicePrefix';break;case _0x25f8('0x45'):_0x5ea2fa['childModel']='Campaign';break;case _0x25f8('0x46'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x47');break;case _0x25f8('0x48'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x49');break;case'mailsubstatuses':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x4a');break;case'openchannelqueues':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x4b');break;case'openchannelaccounts':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x4c');break;case _0x25f8('0x4d'):_0x5ea2fa['childModel']='SmsQueue';break;case'smsaccounts':_0x5ea2fa['childModel']=_0x25f8('0x4e');break;case'whatsappqueues':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x4f');break;case _0x25f8('0x50'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x51');break;case _0x25f8('0x52'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x53');break;case _0x25f8('0x54'):case _0x25f8('0x55'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x3b');if(_0x1b038e){_0x5ea2fa[_0x25f8('0x21')]=[{'name':'VoiceQueues'},{'name':_0x25f8('0x3e')}];}break;case _0x25f8('0x56'):case _0x25f8('0x57'):case _0x25f8('0x58'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x37');if(_0x1b038e){_0x5ea2fa[_0x25f8('0x21')]=[{'name':_0x25f8('0x59'),'filter':{'field':_0x25f8('0x34'),'value':[_0x25f8('0x5a'),'user']},'ignore':!![]},{'name':_0x25f8('0x5b')},{'name':_0x25f8('0x36')}];}break;case _0x25f8('0x5c'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x5d');break;case _0x25f8('0x5e'):_0x5ea2fa['childModel']='SalesforceAccount';break;case'freshdeskaccounts':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x5f');break;case _0x25f8('0x60'):_0x5ea2fa['childModel']='SugarcrmAccount';break;case _0x25f8('0x61'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x62');break;case _0x25f8('0x63'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x64');break;case'vtigeraccounts':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x37');break;case _0x25f8('0x65'):_0x5ea2fa['childModel']=_0x25f8('0x66');break;case'dispositions':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x67');break;case'customdashboards':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x68');break;case _0x25f8('0x69'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x6a');break;case'pauses':_0x5ea2fa['childModel']=_0x25f8('0x6b');break;case _0x25f8('0x6c'):_0x5ea2fa[_0x25f8('0x17')]='Schedule';break;case _0x25f8('0x6d'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x6e');break;case'tags':_0x5ea2fa[_0x25f8('0x17')]='Tag';break;case _0x25f8('0x6f'):_0x5ea2fa['childModel']='Template';break;case _0x25f8('0x70'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x71');break;case _0x25f8('0x72'):_0x5ea2fa[_0x25f8('0x17')]='Trunk';break;case _0x25f8('0x73'):_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x74');break;case'plugins':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x75');break;case'extractedreports':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x12');_0x5ea2fa[_0x25f8('0x21')]=[{'name':_0x25f8('0x76'),'field':'id','foreignKey':_0x25f8('0x77')}];break;case'metrics':_0x5ea2fa[_0x25f8('0x17')]=_0x25f8('0x78');break;}return _0x5ea2fa;}function _0x3c4023(_0x495256,_0x20f24d){var _0x3fd404=_0x495256['charAt'](0x0)[_0x25f8('0x79')]()+_0x495256[_0x25f8('0x7a')](0x1);var _0x1225b8={'type':_0x39372e[_0x25f8('0x7b')][_0x25f8('0x7c')]['SELECT'],'raw':!![]};return new Promise(function(_0xc85be9,_0x23ef67){var _0x32c3da=squel[_0x25f8('0x7d')]()[_0x25f8('0x7')](_0x25f8('0x7e')+_0x3fd404+_0x25f8('0x7f'),'id')[_0x25f8('0x7')](_0x25f8('0x80'))[_0x25f8('0x81')](_0x25f8('0x82')+_0x495256+_0x25f8('0x83'),'ui')[_0x25f8('0x84')](_0x25f8('0x85'),_0x20f24d['id']);return _0x39372e[_0x25f8('0x86')][_0x25f8('0x87')](_0x32c3da[_0x25f8('0x88')](),_0x1225b8)[_0x25f8('0x9')](function(_0x506303){_0x20f24d[_0x3fd404+_0x25f8('0x89')]=_0x506303;_0xc85be9(_0x506303);})[_0x25f8('0xc')](function(_0x381640){_0x23ef67(_0x381640);});});}return _0xf87560[_0x25f8('0x8a')]('UserProfile',attributes,{'tableName':_0x25f8('0x8b'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x34ebdb){var _0xb36170={'raw':_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x8c')],'where':{}};var _0xe1276a={};var _0x33cda0={'count':0x0,'rows':[]};var _0x16fe59=_0x34ebdb['query'][_0x25f8('0x8d')];var _0x55d00b=_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x8e')]||![];var _0x3943e5=_0x37ad55(_0x16fe59,_0x55d00b);if(!_0x3943e5[_0x25f8('0x17')])throw new Error(_0x25f8('0x8f')+_0x16fe59+'\x27');var _0x10a4f0=[{'name':_0x16fe59}];if(!_[_0x25f8('0x90')](_0x3943e5[_0x25f8('0x21')]))_0x10a4f0=_0x3943e5['parentSections'];var _0x3c7b9b=[];for(var _0x2aab1e=0x0;_0x2aab1e<_0x10a4f0['length'];_0x2aab1e++){_0x3c7b9b[_0x25f8('0x91')](_0x39372e[_0x25f8('0x92')][_0x25f8('0x93')]({'where':{'userProfileId':_0x34ebdb[_0x25f8('0x94')]['id'],'name':_0x10a4f0[_0x2aab1e]['name']},'raw':!![]}));}return Promise[_0x25f8('0x95')](_0x3c7b9b)[_0x25f8('0x9')](function(_0x4b85aa){var _0x3f2895=_[_0x25f8('0x6')](_0x4b85aa,function(_0x390713){return _0x390713?_0x390713:undefined;});var _0x42ba9e=_[_0x25f8('0x6')](_0x10a4f0,[_0x25f8('0x96'),!![]]);var _0x2a6f72=_['isEmpty'](_0x3f2895)&&_[_0x25f8('0x90')](_0x42ba9e)?null:_['union'](_0x42ba9e,_0x3f2895);if(!_0x2a6f72)return null;var _0x70381d=[];for(var _0x1ffcbd=0x0;_0x1ffcbd<_0x2a6f72['length'];_0x1ffcbd++){var _0x18d3f9=_[_0x25f8('0x93')](_0x10a4f0,function(_0xfb0b3e){return _0x2a6f72[_0x1ffcbd]?_0xfb0b3e['name']===_0x2a6f72[_0x1ffcbd]['name']:null;});if(_0x18d3f9){if(_0x2a6f72[_0x1ffcbd][_0x25f8('0x96')]){_0x70381d[_0x25f8('0x91')](_0x2fdc25(_0x3943e5['childModel'],_0x2a6f72[_0x1ffcbd]));}else{if(!_0x2a6f72[_0x1ffcbd]['autoAssociation']){_0x70381d[_0x25f8('0x91')](_0x9d0c12(_0x18d3f9,_0x2a6f72[_0x1ffcbd],_0x3943e5[_0x25f8('0x17')]));}else{if(_0x18d3f9[_0x25f8('0xe')]){_0x70381d[_0x25f8('0x91')](_0x55939f(_0x18d3f9,_0x2a6f72[_0x1ffcbd]));}}}}}return Promise['all'](_0x70381d);})['then'](function(_0x479f9b){var _0x2a29a9=_0x479f9b;var _0x755d61=null;if(_0x2a29a9){_0x755d61=_0x2a29a9[_0x25f8('0x97')]===0x1?_0x2a29a9[0x0]:null;}if(!_0x755d61&&!_0x2a29a9)return _0x33cda0;var _0x19862b=_0x39372e[_0x3943e5[_0x25f8('0x17')]][_0x25f8('0x98')];_0xe1276a[_0x25f8('0xe')]=_[_0x25f8('0x99')](_0x19862b);_0xe1276a[_0x25f8('0x87')]=_[_0x25f8('0x99')](_0x34ebdb[_0x25f8('0x87')]);_0xe1276a[_0x25f8('0x9a')]=_[_0x25f8('0x9b')](_0xe1276a[_0x25f8('0xe')],_0xe1276a['query']);_0xb36170['attributes']=_[_0x25f8('0x9b')](_0xe1276a[_0x25f8('0xe')],qs[_0x25f8('0x9c')](_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x9c')]));_0xb36170[_0x25f8('0x9d')]=_0xb36170[_0x25f8('0x9d')][_0x25f8('0x97')]?_0xb36170[_0x25f8('0x9d')]:_0xe1276a[_0x25f8('0xe')];if(!_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x9e')](_0x25f8('0x9f'))){_0xb36170[_0x25f8('0xa0')]=qs[_0x25f8('0xa0')](_0x34ebdb['query'][_0x25f8('0xa0')]);_0xb36170['offset']=qs['offset'](_0x34ebdb['query'][_0x25f8('0xa1')]);}_0xb36170[_0x25f8('0xa2')]=qs[_0x25f8('0xa3')](_0x34ebdb['query'][_0x25f8('0xa3')]);_0xb36170['where']=qs['filters'](_[_0x25f8('0xa4')](_0x34ebdb[_0x25f8('0x87')],_0xe1276a['filters']));if(_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x6')]){_0xb36170[_0x25f8('0x84')]=_[_0x25f8('0xa5')](_0xb36170[_0x25f8('0x84')],{'$or':_[_0x25f8('0xb')](_0x19862b,function(_0x426b3c){if(_0x426b3c[_0x25f8('0x3c')]['key']!==_0x25f8('0xa6')){var _0x5c1713={};_0x5c1713[_0x426b3c[_0x25f8('0x7')]]={'$like':'%'+_0x34ebdb[_0x25f8('0x87')][_0x25f8('0x6')]+'%'};return _0x5c1713;}})});}var _0x151ba4=[];var _0x4bf269=null;var _0xd91f96={};if(_0x755d61){_0x4bf269=_[_0x25f8('0x93')](_0x10a4f0,[_0x25f8('0xf'),_0x755d61['name']]);if(_0x4bf269[_0x25f8('0x7')]){_0xd91f96={};if(_0x3943e5[_0x25f8('0x17')]===_0x25f8('0x12')){_0xd91f96[_0x4bf269[_0x25f8('0xa7')]]=_['map'](_0x755d61[_0x25f8('0xa')],'id');}else{_0xd91f96[_0x4bf269['foreignKey']]=_0x755d61['associatedResources'];}_0x151ba4[_0x25f8('0x91')](_0xd91f96);}else{_0xb36170[_0x25f8('0x84')]['id']=_0x755d61[_0x25f8('0xa')];}}else{for(var _0x2fbd63=0x0;_0x2fbd63<_0x2a29a9['length'];_0x2fbd63++){_0x4bf269=_[_0x25f8('0x93')](_0x10a4f0,[_0x25f8('0xf'),_0x2a29a9[_0x2fbd63][_0x25f8('0xf')]]);if(_0x4bf269[_0x25f8('0x7')]){_0xd91f96={};_0xd91f96[_0x4bf269[_0x25f8('0xa7')]]=_0x2a29a9[_0x2fbd63]['associatedResources'];_0x151ba4[_0x25f8('0x91')](_0xd91f96);}else{if(!_0xb36170['where']['id'])_0xb36170[_0x25f8('0x84')]['id']=[];_0x2a29a9[_0x2fbd63][_0x25f8('0xa')][_0x25f8('0xa8')](function(_0x35b5fa){_0xb36170[_0x25f8('0x84')]['id'][_0x25f8('0x91')](_0x35b5fa);});}}}if(!_[_0x25f8('0x90')](_0x151ba4)){_0xb36170[_0x25f8('0x84')]=_[_0x25f8('0xa5')](_0xb36170[_0x25f8('0x84')],{'$and':{'$or':_0x151ba4}});}_0xb36170=_['merge']({},_0xb36170,_0x34ebdb[_0x25f8('0xa9')]);if(_0x755d61&&!_0x755d61[_0x25f8('0xaa')]&&_0x3943e5[_0x25f8('0x17')]===_0x25f8('0x12')){if(_0x34ebdb[_0x25f8('0x87')]['includeAll']){_0xb36170[_0x25f8('0xab')]=[{'all':!![]}];}return _0x39372e[_0x3943e5['childModel']][_0x25f8('0x8')](_0xb36170)['then'](function(_0x525657){var _0x353898=[];_0x525657['forEach'](function(_0x1c2c6a){var _0x4b4165;switch(_0x1c2c6a[_0x25f8('0xac')]){case _0x25f8('0xad'):_0x4b4165=_[_0x25f8('0x93')](_0x755d61['associatedResources'],function(_0x11c8ed){return _0x11c8ed['id']===_0x1c2c6a['reportId']&&_0x11c8ed[_0x25f8('0x3c')]===_0x25f8('0xae');});break;case _0x25f8('0xaf'):_0x4b4165=_[_0x25f8('0x93')](_0x755d61[_0x25f8('0xa')],function(_0x31cbc9){return _0x31cbc9['id']===_0x1c2c6a[_0x25f8('0x77')]&&_0x31cbc9[_0x25f8('0x3c')]===_0x25f8('0xb0');});break;}if(_0x4b4165)_0x353898[_0x25f8('0x91')](_0x1c2c6a);});_0x33cda0[_0x25f8('0xb1')]=_0x353898[_0x25f8('0x97')];_0x33cda0[_0x25f8('0xb2')]=_0x353898;return _0x33cda0;});}else{if(!_[_0x25f8('0x90')](_0x34ebdb[_0x25f8('0x87')][_0x25f8('0xb3')])){_0xb36170[_0x25f8('0x84')]['id']=_0xb36170[_0x25f8('0x84')]['id']?_[_0x25f8('0x9b')](_0xb36170['where']['id'],_0x34ebdb[_0x25f8('0x87')]['ids']):_0x34ebdb[_0x25f8('0x87')]['ids'];if(_0x34ebdb['query'][_0x25f8('0xb4')]){_0xb36170[_0x25f8('0xa2')]=_0x34ebdb[_0x25f8('0x87')]['customSorting'];}}if(_0x34ebdb[_0x25f8('0x87')][_0x25f8('0xb5')]){_0xb36170[_0x25f8('0x84')]=_[_0x25f8('0xa5')](_0xb36170[_0x25f8('0x84')],{'$and':_0x34ebdb[_0x25f8('0x87')]['extraQueryConditions']});}return _0x39372e[_0x3943e5[_0x25f8('0x17')]]['count']({'where':_0xb36170[_0x25f8('0x84')]})['then'](function(_0x339557){_0x33cda0[_0x25f8('0xb1')]=_0x339557;if(_0x34ebdb[_0x25f8('0x87')][_0x25f8('0xb6')]){if(_0x3943e5[_0x25f8('0x17')]==='CmContact'){_0xb36170[_0x25f8('0xab')]=[{'model':_0x39372e[_0x25f8('0xb7')],'as':_0x25f8('0xb8'),'attributes':['id',_0x25f8('0xf'),_0x25f8('0xb9')],'required':_0x34ebdb[_0x25f8('0x87')][_0x25f8('0xba')]?!![]:![]},{'model':_0x39372e[_0x25f8('0xb7')],'as':'ThroughTags','attributes':['id',_0x25f8('0xf'),_0x25f8('0xb9')],'through':_0x34ebdb[_0x25f8('0x87')]['tag']?{'attributes':[],'where':{'TagId':_0x34ebdb['query'][_0x25f8('0xba')]||undefined}}:{},'required':_0x34ebdb[_0x25f8('0x87')][_0x25f8('0xba')]?!![]:![]}];}else{_0xb36170[_0x25f8('0xab')]=[{'all':!![]}];}}return _0x39372e[_0x3943e5['childModel']][_0x25f8('0x8')](_0xb36170);})[_0x25f8('0x9')](function(_0x597036){_0x33cda0[_0x25f8('0xb2')]=_0x597036;if(_0x16fe59==='Agents'&&_0x34ebdb[_0x25f8('0x87')]['openTabs']==='true'){var _0x51624a=[];for(var _0x35950c=0x0;_0x35950c<_0x33cda0['rows']['length'];_0x35950c++){_0x51624a[_0x25f8('0x91')](_0x3c4023(_0x25f8('0xbb'),_0x33cda0['rows'][_0x35950c][_0x25f8('0xbc')]));_0x51624a['push'](_0x3c4023(_0x25f8('0xbd'),_0x33cda0[_0x25f8('0xb2')][_0x35950c][_0x25f8('0xbc')]));_0x51624a[_0x25f8('0x91')](_0x3c4023(_0x25f8('0xbe'),_0x33cda0[_0x25f8('0xb2')][_0x35950c]['dataValues']));_0x51624a[_0x25f8('0x91')](_0x3c4023(_0x25f8('0xbf'),_0x33cda0['rows'][_0x35950c]['dataValues']));_0x51624a[_0x25f8('0x91')](_0x3c4023(_0x25f8('0xc0'),_0x33cda0[_0x25f8('0xb2')][_0x35950c][_0x25f8('0xbc')]));_0x51624a['push'](_0x3c4023(_0x25f8('0xc1'),_0x33cda0['rows'][_0x35950c][_0x25f8('0xbc')]));}return Promise[_0x25f8('0x95')](_0x51624a)[_0x25f8('0x9')](function(){return _0x33cda0;});}return _0x33cda0;});}});}}});};
\ No newline at end of file
index 91e2d00..6e039e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe978=['error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xe978,0x70));var _0x8e97=function(_0x32c6e7,_0x529c70){_0x32c6e7=_0x32c6e7-0x0;var _0x28c5f9=_0xe978[_0x32c6e7];return _0x28c5f9;};'use strict';var _=require(_0x8e97('0x0'));var util=require(_0x8e97('0x1'));var moment=require(_0x8e97('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e97('0x3'));var db=require(_0x8e97('0x4'))['db'];var utils=require(_0x8e97('0x5'));var logger=require(_0x8e97('0x6'))(_0x8e97('0x7'));var config=require('../../config/environment');var jayson=require(_0x8e97('0x8'));var client=jayson[_0x8e97('0x9')][_0x8e97('0xa')]({'port':0x232a});config[_0x8e97('0xb')]=_[_0x8e97('0xc')](config['redis'],{'host':_0x8e97('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8e97('0xb')]));require(_0x8e97('0xe'))[_0x8e97('0xf')](socket);function respondWithRpcPromise(_0x515bc2,_0x3149de,_0x1d2aa1){return new BPromise(function(_0x4406ad,_0x37b212){return client[_0x8e97('0x10')](_0x515bc2,_0x1d2aa1)[_0x8e97('0x11')](function(_0xa97614){logger[_0x8e97('0x12')](_0x8e97('0x13'),_0x3149de,_0x8e97('0x14'));logger[_0x8e97('0x15')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x3149de,_0x8e97('0x14'),JSON[_0x8e97('0x16')](_0xa97614));if(_0xa97614[_0x8e97('0x17')]){if(_0xa97614[_0x8e97('0x17')]['code']===0x1f4){logger['error']('UserProfile,\x20%s,\x20%s',_0x3149de,_0xa97614['error']['message']);return _0x37b212(_0xa97614['error'][_0x8e97('0x18')]);}logger['error'](_0x8e97('0x13'),_0x3149de,_0xa97614[_0x8e97('0x17')]['message']);return _0x4406ad(_0xa97614['error'][_0x8e97('0x18')]);}else{logger[_0x8e97('0x12')](_0x8e97('0x13'),_0x3149de,_0x8e97('0x14'));_0x4406ad(_0xa97614[_0x8e97('0x19')][_0x8e97('0x18')]);}})[_0x8e97('0x1a')](function(_0x2a0800){logger[_0x8e97('0x17')]('UserProfile,\x20%s,\x20%s',_0x3149de,_0x2a0800);_0x37b212(_0x2a0800);});});}
\ No newline at end of file
+var _0x1921=['then','info','UserProfile,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','request'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x1921,0xf2));var _0x1192=function(_0xc567d0,_0x1101d5){_0xc567d0=_0xc567d0-0x0;var _0x5afc6c=_0x1921[_0xc567d0];return _0x5afc6c;};'use strict';var _=require(_0x1192('0x0'));var util=require('util');var moment=require(_0x1192('0x1'));var BPromise=require(_0x1192('0x2'));var rs=require(_0x1192('0x3'));var fs=require('fs');var Redis=require(_0x1192('0x4'));var db=require(_0x1192('0x5'))['db'];var utils=require(_0x1192('0x6'));var logger=require(_0x1192('0x7'))(_0x1192('0x8'));var config=require(_0x1192('0x9'));var jayson=require(_0x1192('0xa'));var client=jayson[_0x1192('0xb')]['http']({'port':0x232a});config['redis']=_[_0x1192('0xc')](config[_0x1192('0xd')],{'host':_0x1192('0xe'),'port':0x18eb});var socket=require(_0x1192('0xf'))(new Redis(config[_0x1192('0xd')]));require(_0x1192('0x10'))[_0x1192('0x11')](socket);function respondWithRpcPromise(_0x34002b,_0x50af83,_0x53a796){return new BPromise(function(_0x403518,_0x27b5b2){return client[_0x1192('0x12')](_0x34002b,_0x53a796)[_0x1192('0x13')](function(_0x46465c){logger[_0x1192('0x14')](_0x1192('0x15'),_0x50af83,'request\x20sent');logger[_0x1192('0x16')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x50af83,_0x1192('0x17'),JSON[_0x1192('0x18')](_0x46465c));if(_0x46465c['error']){if(_0x46465c[_0x1192('0x19')][_0x1192('0x1a')]===0x1f4){logger[_0x1192('0x19')]('UserProfile,\x20%s,\x20%s',_0x50af83,_0x46465c[_0x1192('0x19')][_0x1192('0x1b')]);return _0x27b5b2(_0x46465c['error'][_0x1192('0x1b')]);}logger[_0x1192('0x19')](_0x1192('0x15'),_0x50af83,_0x46465c['error'][_0x1192('0x1b')]);return _0x403518(_0x46465c['error'][_0x1192('0x1b')]);}else{logger[_0x1192('0x14')](_0x1192('0x15'),_0x50af83,_0x1192('0x17'));_0x403518(_0x46465c[_0x1192('0x1c')][_0x1192('0x1b')]);}})['catch'](function(_0x4f72d7){logger[_0x1192('0x19')](_0x1192('0x15'),_0x50af83,_0x4f72d7);_0x27b5b2(_0x4f72d7);});});}
\ No newline at end of file
index 86e3fd4..31258ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c0=['save','remove','emit','removeListener','register','length','userProfile:','./userProfile.events'];(function(_0x2459c4,_0x7f42e4){var _0x5b92e4=function(_0x113090){while(--_0x113090){_0x2459c4['push'](_0x2459c4['shift']());}};_0x5b92e4(++_0x7f42e4);}(_0xb0c0,0x1cf));var _0x0b0c=function(_0xa66559,_0x466ee4){_0xa66559=_0xa66559-0x0;var _0x2be33f=_0xb0c0[_0xa66559];return _0x2be33f;};'use strict';var UserProfileEvents=require(_0x0b0c('0x0'));var events=[_0x0b0c('0x1'),_0x0b0c('0x2'),'update'];function createListener(_0x2e732a,_0x2d0d53){return function(_0x42aa24){_0x2d0d53[_0x0b0c('0x3')](_0x2e732a,_0x42aa24);};}function removeListener(_0x1046b1,_0x35defa){return function(){UserProfileEvents[_0x0b0c('0x4')](_0x1046b1,_0x35defa);};}exports[_0x0b0c('0x5')]=function(_0x569d09){for(var _0x284a89=0x0,_0x47299a=events[_0x0b0c('0x6')];_0x284a89<_0x47299a;_0x284a89++){var _0x3ebd0b=events[_0x284a89];var _0x203f4e=createListener(_0x0b0c('0x7')+_0x3ebd0b,_0x569d09);UserProfileEvents['on'](_0x3ebd0b,_0x203f4e);}};
\ No newline at end of file
+var _0xbd98=['length','userProfile:','./userProfile.events','save','remove','update','removeListener'];(function(_0x3b58c9,_0x1f46c3){var _0x5b653a=function(_0xecac3b){while(--_0xecac3b){_0x3b58c9['push'](_0x3b58c9['shift']());}};_0x5b653a(++_0x1f46c3);}(_0xbd98,0x1b4));var _0x8bd9=function(_0x9056a2,_0x5b5ba2){_0x9056a2=_0x9056a2-0x0;var _0x16156e=_0xbd98[_0x9056a2];return _0x16156e;};'use strict';var UserProfileEvents=require(_0x8bd9('0x0'));var events=[_0x8bd9('0x1'),_0x8bd9('0x2'),_0x8bd9('0x3')];function createListener(_0x4bc23e,_0xe40a09){return function(_0x256041){_0xe40a09['emit'](_0x4bc23e,_0x256041);};}function removeListener(_0x32b7c4,_0x287f01){return function(){UserProfileEvents[_0x8bd9('0x4')](_0x32b7c4,_0x287f01);};}exports['register']=function(_0x269f1b){for(var _0x4feee5=0x0,_0x5a037e=events[_0x8bd9('0x5')];_0x4feee5<_0x5a037e;_0x4feee5++){var _0x5c288a=events[_0x4feee5];var _0x9e75ae=createListener(_0x8bd9('0x6')+_0x5c288a,_0x269f1b);UserProfileEvents['on'](_0x5c288a,_0x9e75ae);}};
\ No newline at end of file
index ba993f0..07c23f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7821=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','express','../../components/auth/service','../../config/environment','get'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7821,0x9c));var _0x1782=function(_0x589f71,_0x212326){_0x589f71=_0x589f71-0x0;var _0x5763bd=_0x7821[_0x589f71];return _0x5763bd;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1782('0x0'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1782('0x1'));var interaction=require('../../components/interaction/service');var config=require(_0x1782('0x2'));var controller=require('./userProfileResource.controller');router[_0x1782('0x3')]('/',auth[_0x1782('0x4')](),controller[_0x1782('0x5')]);router['get'](_0x1782('0x6'),auth['isAuthenticated'](),controller[_0x1782('0x7')]);router[_0x1782('0x3')](_0x1782('0x8'),auth['isAuthenticated'](),controller[_0x1782('0x9')]);router[_0x1782('0xa')]('/',auth['isAuthenticated'](),controller[_0x1782('0xb')]);router[_0x1782('0xc')]('/:id',auth[_0x1782('0x4')](),controller['update']);router[_0x1782('0xd')](_0x1782('0x8'),auth[_0x1782('0x4')](),controller[_0x1782('0xe')]);module[_0x1782('0xf')]=router;
\ No newline at end of file
+var _0x304a=['create','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','./userProfileResource.controller','get','index','/describe','isAuthenticated','show','post'];(function(_0x1051f5,_0x13bccf){var _0x29e75b=function(_0x4de350){while(--_0x4de350){_0x1051f5['push'](_0x1051f5['shift']());}};_0x29e75b(++_0x13bccf);}(_0x304a,0x96));var _0xa304=function(_0x5810b2,_0x355cbd){_0x5810b2=_0x5810b2-0x0;var _0x587ace=_0x304a[_0x5810b2];return _0x587ace;};'use strict';var multer=require(_0xa304('0x0'));var util=require(_0xa304('0x1'));var path=require('path');var timeout=require(_0xa304('0x2'));var express=require(_0xa304('0x3'));var router=express[_0xa304('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa304('0x5'));router[_0xa304('0x6')]('/',auth['isAuthenticated'](),controller[_0xa304('0x7')]);router[_0xa304('0x6')](_0xa304('0x8'),auth[_0xa304('0x9')](),controller['describe']);router[_0xa304('0x6')]('/:id',auth[_0xa304('0x9')](),controller[_0xa304('0xa')]);router[_0xa304('0xb')]('/',auth['isAuthenticated'](),controller[_0xa304('0xc')]);router[_0xa304('0xd')](_0xa304('0xe'),auth[_0xa304('0x9')](),controller[_0xa304('0xf')]);router[_0xa304('0x10')](_0xa304('0xe'),auth[_0xa304('0x9')](),controller[_0xa304('0x11')]);module['exports']=router;
\ No newline at end of file
index c77477a..5e04722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab4=['INTEGER','STRING','sequelize','exports'];(function(_0x1e5f6c,_0x274467){var _0x256adb=function(_0x4b4688){while(--_0x4b4688){_0x1e5f6c['push'](_0x1e5f6c['shift']());}};_0x256adb(++_0x274467);}(_0x4ab4,0x1ba));var _0x44ab=function(_0x456fa8,_0x21b4e6){_0x456fa8=_0x456fa8-0x0;var _0x237f95=_0x4ab4[_0x456fa8];return _0x237f95;};'use strict';var Sequelize=require(_0x44ab('0x0'));module[_0x44ab('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x44ab('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x44ab('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xf9d8=['INTEGER','STRING'];(function(_0x597759,_0x1fef9c){var _0x557396=function(_0x395b39){while(--_0x395b39){_0x597759['push'](_0x597759['shift']());}};_0x557396(++_0x1fef9c);}(_0xf9d8,0x105));var _0x8f9d=function(_0x38fadb,_0xd22060){_0x38fadb=_0x38fadb-0x0;var _0x5640d9=_0xf9d8[_0x38fadb];return _0x5640d9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8f9d('0x0')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8f9d('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 4792e1b..8820a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['VIRTUAL','options','UserProfileResource','then','rows','catch','show','params','keys','includeAll','include','create','body','find','describe','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','hasOwnProperty','nolimit','order','where','filter','merge'];(function(_0x334651,_0x6e99f6){var _0x29657c=function(_0x420a94){while(--_0x420a94){_0x334651['push'](_0x334651['shift']());}};_0x29657c(++_0x6e99f6);}(_0x6343,0x168));var _0x3634=function(_0x41c834,_0x5806a1){_0x41c834=_0x41c834-0x0;var _0x50cadd=_0x6343[_0x41c834];return _0x50cadd;};'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['UserProfileResource'][_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));};exports[_0x3634('0x44')]=function(_0x1943a5,_0x1834a3){return db['UserProfileResource'][_0x3634('0x44')]()[_0x3634('0x39')](respondWithResult(_0x1834a3,null))[_0x3634('0x3b')](handleError(_0x1834a3,null));};
\ No newline at end of file
+var _0x8952=['filter','VIRTUAL','merge','options','findAll','rows','show','params','keys','includeAll','include','catch','create','body','destroy','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','stack','name','map','UserProfileResource','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x8952,0x17e));var _0x2895=function(_0x5e54fc,_0x554cc0){_0x5e54fc=_0x5e54fc-0x0;var _0x4f2637=_0x8952[_0x5e54fc];return _0x4f2637;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2895('0x0'));var zipdir=require(_0x2895('0x1'));var jsonpatch=require(_0x2895('0x2'));var rp=require(_0x2895('0x3'));var moment=require(_0x2895('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2895('0x5'));var util=require(_0x2895('0x6'));var path=require(_0x2895('0x7'));var sox=require('sox');var csv=require(_0x2895('0x8'));var ejs=require(_0x2895('0x9'));var fs=require('fs');var fs_extra=require(_0x2895('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2895('0xb'));var jsforce=require(_0x2895('0xc'));var deskjs=require(_0x2895('0xd'));var toCsv=require(_0x2895('0x8'));var querystring=require(_0x2895('0xe'));var Papa=require('papaparse');var Redis=require(_0x2895('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2895('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2895('0x11'));var utils=require(_0x2895('0x12'));var config=require(_0x2895('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2895('0x14'))['db'];function respondWithStatusCode(_0x3924be,_0x4b1342){_0x4b1342=_0x4b1342||0xcc;return function(_0x32574c){if(_0x32574c){return _0x3924be[_0x2895('0x15')](_0x4b1342);}return _0x3924be['status'](_0x4b1342)['end']();};}function respondWithResult(_0x1d1493,_0x2ca2ac){_0x2ca2ac=_0x2ca2ac||0xc8;return function(_0x5777a0){if(_0x5777a0){return _0x1d1493[_0x2895('0x16')](_0x2ca2ac)[_0x2895('0x17')](_0x5777a0);}};}function respondWithFilteredResult(_0x27b50e,_0x1ae013){return function(_0x1d3659){if(_0x1d3659){var _0x2627e6=typeof _0x1ae013[_0x2895('0x18')]===_0x2895('0x19')&&typeof _0x1ae013[_0x2895('0x1a')]===_0x2895('0x19');var _0x10a1bf=_0x1d3659[_0x2895('0x1b')];var _0xbf8b63=_0x2627e6?0x0:_0x1ae013[_0x2895('0x18')];var _0x155124=_0x2627e6?_0x1d3659[_0x2895('0x1b')]:_0x1ae013[_0x2895('0x18')]+_0x1ae013[_0x2895('0x1a')];var _0x5a8eab;if(_0x155124>=_0x10a1bf){_0x155124=_0x10a1bf;_0x5a8eab=0xc8;}else{_0x5a8eab=0xce;}_0x27b50e['status'](_0x5a8eab);return _0x27b50e['set'](_0x2895('0x1c'),_0xbf8b63+'-'+_0x155124+'/'+_0x10a1bf)[_0x2895('0x17')](_0x1d3659);}return null;};}function patchUpdates(_0x3ec4da){return function(_0x593e47){try{jsonpatch[_0x2895('0x1d')](_0x593e47,_0x3ec4da,!![]);}catch(_0x190b79){return BPromise[_0x2895('0x1e')](_0x190b79);}return _0x593e47[_0x2895('0x1f')]();};}function saveUpdates(_0x8b75e0,_0x5dbbfe){return function(_0x30c6c3){if(_0x30c6c3){return _0x30c6c3[_0x2895('0x20')](_0x8b75e0)['then'](function(_0x142e58){return _0x142e58;});}return null;};}function removeEntity(_0x384357,_0x6f8ad4){return function(_0x511286){if(_0x511286){return _0x511286['destroy']()[_0x2895('0x21')](function(){_0x384357[_0x2895('0x16')](0xcc)[_0x2895('0x22')]();});}};}function handleEntityNotFound(_0x4a21cf,_0x3d3320){return function(_0x3690ce){if(!_0x3690ce){_0x4a21cf['sendStatus'](0x194);}return _0x3690ce;};}function handleError(_0x293ad3,_0x127540){_0x127540=_0x127540||0x1f4;return function(_0x2cd4df){logger['error'](_0x2cd4df[_0x2895('0x23')]);if(_0x2cd4df[_0x2895('0x24')]){delete _0x2cd4df['name'];}_0x293ad3[_0x2895('0x16')](_0x127540)['send'](_0x2cd4df);};}exports['index']=function(_0x18a935,_0x4ee2cc){var _0xfa4f85={},_0x381538={},_0x4fdd94={'count':0x0,'rows':[]};var _0x5574bf=_[_0x2895('0x25')](db[_0x2895('0x26')][_0x2895('0x27')],function(_0x14e343){return{'name':_0x14e343[_0x2895('0x28')],'type':_0x14e343[_0x2895('0x29')][_0x2895('0x2a')]};});_0x381538['model']=_[_0x2895('0x25')](_0x5574bf,_0x2895('0x24'));_0x381538[_0x2895('0x2b')]=_['keys'](_0x18a935[_0x2895('0x2b')]);_0x381538[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],_0x381538['query']);_0xfa4f85[_0x2895('0x2f')]=_[_0x2895('0x2d')](_0x381538[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x18a935[_0x2895('0x2b')]['fields']));_0xfa4f85['attributes']=_0xfa4f85[_0x2895('0x2f')][_0x2895('0x31')]?_0xfa4f85['attributes']:_0x381538[_0x2895('0x2e')];if(!_0x18a935['query'][_0x2895('0x32')](_0x2895('0x33'))){_0xfa4f85['limit']=qs[_0x2895('0x1a')](_0x18a935['query'][_0x2895('0x1a')]);_0xfa4f85['offset']=qs['offset'](_0x18a935[_0x2895('0x2b')][_0x2895('0x18')]);}_0xfa4f85[_0x2895('0x34')]=qs['sort'](_0x18a935[_0x2895('0x2b')][_0x2895('0x35')]);_0xfa4f85[_0x2895('0x36')]=qs[_0x2895('0x2c')](_[_0x2895('0x37')](_0x18a935[_0x2895('0x2b')],_0x381538[_0x2895('0x2c')]),_0x5574bf);if(_0x18a935[_0x2895('0x2b')][_0x2895('0x38')]){_0xfa4f85[_0x2895('0x36')]=_['merge'](_0xfa4f85[_0x2895('0x36')],{'$or':_[_0x2895('0x25')](_0x5574bf,function(_0x47413d){if(_0x47413d[_0x2895('0x29')]!==_0x2895('0x39')){var _0x12d7d8={};_0x12d7d8[_0x47413d[_0x2895('0x24')]]={'$like':'%'+_0x18a935['query']['filter']+'%'};return _0x12d7d8;}})});}_0xfa4f85=_[_0x2895('0x3a')]({},_0xfa4f85,_0x18a935[_0x2895('0x3b')]);var _0x24b9e0={'where':_0xfa4f85[_0x2895('0x36')]};return db[_0x2895('0x26')][_0x2895('0x1b')](_0x24b9e0)['then'](function(_0x5d18ef){_0x4fdd94[_0x2895('0x1b')]=_0x5d18ef;if(_0x18a935[_0x2895('0x2b')]['includeAll']){_0xfa4f85['include']=[{'all':!![]}];}return db[_0x2895('0x26')][_0x2895('0x3c')](_0xfa4f85);})[_0x2895('0x21')](function(_0x28967f){_0x4fdd94[_0x2895('0x3d')]=_0x28967f;return _0x4fdd94;})[_0x2895('0x21')](respondWithFilteredResult(_0x4ee2cc,_0xfa4f85))['catch'](handleError(_0x4ee2cc,null));};exports[_0x2895('0x3e')]=function(_0x2cfb24,_0x18ca24){var _0x1537fd={'raw':![],'where':{'id':_0x2cfb24[_0x2895('0x3f')]['id']}},_0x4af6d6={};_0x4af6d6[_0x2895('0x2e')]=_[_0x2895('0x40')](db[_0x2895('0x26')]['rawAttributes']);_0x4af6d6['query']=_[_0x2895('0x40')](_0x2cfb24[_0x2895('0x2b')]);_0x4af6d6[_0x2895('0x2c')]=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],_0x4af6d6['query']);_0x1537fd['attributes']=_[_0x2895('0x2d')](_0x4af6d6[_0x2895('0x2e')],qs[_0x2895('0x30')](_0x2cfb24[_0x2895('0x2b')][_0x2895('0x30')]));_0x1537fd[_0x2895('0x2f')]=_0x1537fd[_0x2895('0x2f')]['length']?_0x1537fd[_0x2895('0x2f')]:_0x4af6d6[_0x2895('0x2e')];if(_0x2cfb24[_0x2895('0x2b')][_0x2895('0x41')]){_0x1537fd[_0x2895('0x42')]=[{'all':!![]}];}_0x1537fd=_[_0x2895('0x3a')]({},_0x1537fd,_0x2cfb24[_0x2895('0x3b')]);return db[_0x2895('0x26')]['find'](_0x1537fd)[_0x2895('0x21')](handleEntityNotFound(_0x18ca24,null))[_0x2895('0x21')](respondWithResult(_0x18ca24,null))[_0x2895('0x43')](handleError(_0x18ca24,null));};exports['create']=function(_0xc85aa1,_0x5307a9){return db['UserProfileResource'][_0x2895('0x44')](_0xc85aa1[_0x2895('0x45')],{})[_0x2895('0x21')](respondWithResult(_0x5307a9,0xc9))[_0x2895('0x43')](handleError(_0x5307a9,null));};exports[_0x2895('0x20')]=function(_0x3cc331,_0x11e53a){if(_0x3cc331['body']['id']){delete _0x3cc331[_0x2895('0x45')]['id'];}return db[_0x2895('0x26')]['find']({'where':{'id':_0x3cc331['params']['id']}})['then'](handleEntityNotFound(_0x11e53a,null))[_0x2895('0x21')](saveUpdates(_0x3cc331[_0x2895('0x45')],null))[_0x2895('0x21')](respondWithResult(_0x11e53a,null))[_0x2895('0x43')](handleError(_0x11e53a,null));};exports[_0x2895('0x46')]=function(_0x3c5261,_0xaca46c){return db[_0x2895('0x26')][_0x2895('0x47')]({'where':{'id':_0x3c5261[_0x2895('0x3f')]['id']}})[_0x2895('0x21')](handleEntityNotFound(_0xaca46c,null))[_0x2895('0x21')](removeEntity(_0xaca46c,null))[_0x2895('0x43')](handleError(_0xaca46c,null));};exports[_0x2895('0x48')]=function(_0x356d35,_0x3c1135){return db[_0x2895('0x26')][_0x2895('0x48')]()[_0x2895('0x21')](respondWithResult(_0x3c1135,null))[_0x2895('0x43')](handleError(_0x3c1135,null));};
\ No newline at end of file
index a53e6c5..d789d70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7084=['user_profile_has_resources','compositeIndex','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource'];(function(_0x2dd3aa,_0x439111){var _0xfeab52=function(_0x4593af){while(--_0x4593af){_0x2dd3aa['push'](_0x2dd3aa['shift']());}};_0xfeab52(++_0x439111);}(_0x7084,0x136));var _0x4708=function(_0x75c3dd,_0xd5d01){_0x75c3dd=_0x75c3dd-0x0;var _0x36079a=_0x7084[_0x75c3dd];return _0x36079a;};'use strict';var _=require(_0x4708('0x0'));var util=require(_0x4708('0x1'));var logger=require(_0x4708('0x2'))(_0x4708('0x3'));var moment=require(_0x4708('0x4'));var BPromise=require(_0x4708('0x5'));var rp=require(_0x4708('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4708('0x7'));var attributes=require(_0x4708('0x8'));module[_0x4708('0x9')]=function(_0xbe2007,_0x343276){return _0xbe2007[_0x4708('0xa')](_0x4708('0xb'),attributes,{'tableName':_0x4708('0xc'),'paranoid':![],'indexes':[{'name':_0x4708('0xd'),'fields':['resourceId','sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xad5a=['api','moment','bluebird','request-promise','exports','define','compositeIndex','sectionId'];(function(_0x1e3a60,_0x3d2fc6){var _0xe7b21f=function(_0x45a4c2){while(--_0x45a4c2){_0x1e3a60['push'](_0x1e3a60['shift']());}};_0xe7b21f(++_0x3d2fc6);}(_0xad5a,0xa8));var _0xaad5=function(_0x4239f9,_0x3e0a1c){_0x4239f9=_0x4239f9-0x0;var _0x51e2c4=_0xad5a[_0x4239f9];return _0x51e2c4;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xaad5('0x0'));var moment=require(_0xaad5('0x1'));var BPromise=require(_0xaad5('0x2'));var rp=require(_0xaad5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userProfileResource.attributes');module[_0xaad5('0x4')]=function(_0x724e91,_0x134ffc){return _0x724e91[_0xaad5('0x5')]('UserProfileResource',attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0xaad5('0x6'),'fields':['resourceId',_0xaad5('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
index 92ad8d9..f89790b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6772=['UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x6772,0x8e));var _0x2677=function(_0x180fd8,_0x5446d8){_0x180fd8=_0x180fd8-0x0;var _0x503581=_0x6772[_0x180fd8];return _0x503581;};'use strict';var _=require(_0x2677('0x0'));var util=require(_0x2677('0x1'));var moment=require(_0x2677('0x2'));var BPromise=require('bluebird');var rs=require(_0x2677('0x3'));var fs=require('fs');var Redis=require(_0x2677('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2677('0x5'));var logger=require(_0x2677('0x6'))(_0x2677('0x7'));var config=require('../../config/environment');var jayson=require(_0x2677('0x8'));var client=jayson[_0x2677('0x9')][_0x2677('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11c5d7,_0x3ab534,_0x22deb8){return new BPromise(function(_0x441e7f,_0x549011){return client['request'](_0x11c5d7,_0x22deb8)[_0x2677('0xb')](function(_0x27d71e){logger[_0x2677('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x3ab534,_0x2677('0xd'));logger[_0x2677('0xe')](_0x2677('0xf'),_0x3ab534,_0x2677('0xd'),JSON[_0x2677('0x10')](_0x27d71e));if(_0x27d71e[_0x2677('0x11')]){if(_0x27d71e['error'][_0x2677('0x12')]===0x1f4){logger[_0x2677('0x11')](_0x2677('0x13'),_0x3ab534,_0x27d71e[_0x2677('0x11')]['message']);return _0x549011(_0x27d71e[_0x2677('0x11')]['message']);}logger[_0x2677('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x3ab534,_0x27d71e[_0x2677('0x11')][_0x2677('0x14')]);return _0x441e7f(_0x27d71e[_0x2677('0x11')][_0x2677('0x14')]);}else{logger[_0x2677('0xc')](_0x2677('0x13'),_0x3ab534,'request\x20sent');_0x441e7f(_0x27d71e[_0x2677('0x15')][_0x2677('0x14')]);}})[_0x2677('0x16')](function(_0x36a30b){logger['error'](_0x2677('0x13'),_0x3ab534,_0x36a30b);_0x549011(_0x36a30b);});});}
\ No newline at end of file
+var _0x6667=['UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x6667,0x1d4));var _0x7666=function(_0x34ad72,_0x1e43f6){_0x34ad72=_0x34ad72-0x0;var _0x5c9aa8=_0x6667[_0x34ad72];return _0x5c9aa8;};'use strict';var _=require(_0x7666('0x0'));var util=require(_0x7666('0x1'));var moment=require('moment');var BPromise=require(_0x7666('0x2'));var rs=require(_0x7666('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7666('0x4'));var logger=require(_0x7666('0x5'))('rpc');var config=require(_0x7666('0x6'));var jayson=require(_0x7666('0x7'));var client=jayson[_0x7666('0x8')][_0x7666('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x42f033,_0x6ae951,_0xcd8d7e){return new BPromise(function(_0x48c567,_0x184ac2){return client[_0x7666('0xa')](_0x42f033,_0xcd8d7e)[_0x7666('0xb')](function(_0xcc99d0){logger[_0x7666('0xc')](_0x7666('0xd'),_0x6ae951,_0x7666('0xe'));logger[_0x7666('0xf')](_0x7666('0x10'),_0x6ae951,_0x7666('0xe'),JSON[_0x7666('0x11')](_0xcc99d0));if(_0xcc99d0[_0x7666('0x12')]){if(_0xcc99d0[_0x7666('0x12')][_0x7666('0x13')]===0x1f4){logger['error'](_0x7666('0xd'),_0x6ae951,_0xcc99d0[_0x7666('0x12')][_0x7666('0x14')]);return _0x184ac2(_0xcc99d0[_0x7666('0x12')][_0x7666('0x14')]);}logger[_0x7666('0x12')](_0x7666('0xd'),_0x6ae951,_0xcc99d0[_0x7666('0x12')][_0x7666('0x14')]);return _0x48c567(_0xcc99d0[_0x7666('0x12')][_0x7666('0x14')]);}else{logger[_0x7666('0xc')](_0x7666('0xd'),_0x6ae951,_0x7666('0xe'));_0x48c567(_0xcc99d0['result'][_0x7666('0x14')]);}})[_0x7666('0x15')](function(_0x17172a){logger[_0x7666('0x12')](_0x7666('0xd'),_0x6ae951,_0x17172a);_0x184ac2(_0x17172a);});});}
\ No newline at end of file
index 6324014..46057ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ed3=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','/describe','isAuthenticated','describe','show','create','put','/:id','destroy','exports','multer'];(function(_0x25e196,_0x338e4c){var _0x5c1356=function(_0x5d12b9){while(--_0x5d12b9){_0x25e196['push'](_0x25e196['shift']());}};_0x5c1356(++_0x338e4c);}(_0x6ed3,0x142));var _0x36ed=function(_0x36e20c,_0x43caa5){_0x36e20c=_0x36e20c-0x0;var _0x48eba2=_0x6ed3[_0x36e20c];return _0x48eba2;};'use strict';var multer=require(_0x36ed('0x0'));var util=require(_0x36ed('0x1'));var path=require(_0x36ed('0x2'));var timeout=require('connect-timeout');var express=require(_0x36ed('0x3'));var router=express['Router']();var fs_extra=require(_0x36ed('0x4'));var auth=require(_0x36ed('0x5'));var interaction=require(_0x36ed('0x6'));var config=require(_0x36ed('0x7'));var controller=require(_0x36ed('0x8'));router[_0x36ed('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x36ed('0x9')](_0x36ed('0xa'),auth[_0x36ed('0xb')](),controller[_0x36ed('0xc')]);router['get']('/:id',auth[_0x36ed('0xb')](),controller[_0x36ed('0xd')]);router['post']('/',auth[_0x36ed('0xb')](),controller[_0x36ed('0xe')]);router[_0x36ed('0xf')](_0x36ed('0x10'),auth[_0x36ed('0xb')](),controller['update']);router['delete']('/:id',auth[_0x36ed('0xb')](),controller[_0x36ed('0x11')]);module[_0x36ed('0x12')]=router;
\ No newline at end of file
+var _0x37a3=['delete','destroy','exports','multer','path','Router','fs-extra','../../config/environment','./userProfileSection.controller','get','isAuthenticated','/describe','show','post','create','put','/:id'];(function(_0x24fa1a,_0x16d9c2){var _0xc5621f=function(_0x5616ac){while(--_0x5616ac){_0x24fa1a['push'](_0x24fa1a['shift']());}};_0xc5621f(++_0x16d9c2);}(_0x37a3,0x1df));var _0x337a=function(_0x554514,_0x4e40aa){_0x554514=_0x554514-0x0;var _0x5849a5=_0x37a3[_0x554514];return _0x5849a5;};'use strict';var multer=require(_0x337a('0x0'));var util=require('util');var path=require(_0x337a('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x337a('0x2')]();var fs_extra=require(_0x337a('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x337a('0x4'));var controller=require(_0x337a('0x5'));router[_0x337a('0x6')]('/',auth[_0x337a('0x7')](),controller['index']);router['get'](_0x337a('0x8'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x337a('0x7')](),controller[_0x337a('0x9')]);router[_0x337a('0xa')]('/',auth[_0x337a('0x7')](),controller[_0x337a('0xb')]);router[_0x337a('0xc')](_0x337a('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x337a('0xe')](_0x337a('0xd'),auth[_0x337a('0x7')](),controller[_0x337a('0xf')]);module[_0x337a('0x10')]=router;
\ No newline at end of file
index 199bba3..d07e9b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','STRING'];(function(_0xbea5b4,_0x336457){var _0x27300a=function(_0x2ed83a){while(--_0x2ed83a){_0xbea5b4['push'](_0xbea5b4['shift']());}};_0x27300a(++_0x336457);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x355fac,_0x57cb37){_0x355fac=_0x355fac-0x0;var _0x7cdc3b=_0xcf2f[_0x355fac];return _0x7cdc3b;};'use strict';var Sequelize=require(_0xfcf2('0x0'));module[_0xfcf2('0x1')]={'name':{'type':Sequelize[_0xfcf2('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xfcf2('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0xfcf2('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xfcf2('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xfcf2('0x2')],'set':function(_0x1e3661){this[_0xfcf2('0x5')](_0xfcf2('0x6'),_0x1e3661?_0x1e3661[_0xfcf2('0x7')](''):[]);},'get':function(){return this[_0xfcf2('0x8')](_0xfcf2('0x6'))?this[_0xfcf2('0x8')](_0xfcf2('0x6'))[_0xfcf2('0x9')](''):[];}}};
\ No newline at end of file
+var _0x087b=['getDataValue','split','sequelize','exports','INTEGER','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x087b,0x11a));var _0xb087=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x087b[_0x46d0c9];return _0x174506;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xb087('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xb087('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xb087('0x4')],'set':function(_0x1d3299){this[_0xb087('0x5')](_0xb087('0x6'),_0x1d3299?_0x1d3299[_0xb087('0x7')](''):[]);},'get':function(){return this[_0xb087('0x8')](_0xb087('0x6'))?this[_0xb087('0x8')](_0xb087('0x6'))[_0xb087('0x9')](''):[];}}};
\ No newline at end of file
index f268fa3..ad091ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efa=['json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','UserProfileSection','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','keys','rawAttributes','find','create','body','params','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x10b553,_0x4563a9){var _0x3bac9b=function(_0x13ea4b){while(--_0x13ea4b){_0x10b553['push'](_0x10b553['shift']());}};_0x3bac9b(++_0x4563a9);}(_0x8efa,0x76));var _0xa8ef=function(_0x5ece6e,_0x3a04e2){_0x5ece6e=_0x5ece6e-0x0;var _0x3691f9=_0x8efa[_0x5ece6e];return _0x3691f9;};'use strict';var emlformat=require(_0xa8ef('0x0'));var rimraf=require(_0xa8ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa8ef('0x2'));var moment=require('moment');var BPromise=require(_0xa8ef('0x3'));var Mustache=require(_0xa8ef('0x4'));var util=require(_0xa8ef('0x5'));var path=require('path');var sox=require(_0xa8ef('0x6'));var csv=require('to-csv');var ejs=require(_0xa8ef('0x7'));var fs=require('fs');var fs_extra=require(_0xa8ef('0x8'));var _=require(_0xa8ef('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa8ef('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xa8ef('0xb'));var querystring=require(_0xa8ef('0xc'));var Papa=require(_0xa8ef('0xd'));var Redis=require(_0xa8ef('0xe'));var authService=require(_0xa8ef('0xf'));var qs=require(_0xa8ef('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8ef('0x11'));var logger=require(_0xa8ef('0x12'))(_0xa8ef('0x13'));var utils=require(_0xa8ef('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9b2051,_0x1f1f0f){_0x1f1f0f=_0x1f1f0f||0xcc;return function(_0x558596){if(_0x558596){return _0x9b2051[_0xa8ef('0x15')](_0x1f1f0f);}return _0x9b2051[_0xa8ef('0x16')](_0x1f1f0f)[_0xa8ef('0x17')]();};}function respondWithResult(_0x4e454c,_0x1fe760){_0x1fe760=_0x1fe760||0xc8;return function(_0x4c8df7){if(_0x4c8df7){return _0x4e454c['status'](_0x1fe760)[_0xa8ef('0x18')](_0x4c8df7);}};}function respondWithFilteredResult(_0x3921cf,_0x1e6cef){return function(_0x32bed0){if(_0x32bed0){var _0x2c888f=typeof _0x1e6cef[_0xa8ef('0x19')]===_0xa8ef('0x1a')&&typeof _0x1e6cef[_0xa8ef('0x1b')]===_0xa8ef('0x1a');var _0x5a114e=_0x32bed0['count'];var _0x49602d=_0x2c888f?0x0:_0x1e6cef[_0xa8ef('0x19')];var _0x355a6b=_0x2c888f?_0x32bed0[_0xa8ef('0x1c')]:_0x1e6cef['offset']+_0x1e6cef[_0xa8ef('0x1b')];var _0x196a52;if(_0x355a6b>=_0x5a114e){_0x355a6b=_0x5a114e;_0x196a52=0xc8;}else{_0x196a52=0xce;}_0x3921cf[_0xa8ef('0x16')](_0x196a52);return _0x3921cf[_0xa8ef('0x1d')](_0xa8ef('0x1e'),_0x49602d+'-'+_0x355a6b+'/'+_0x5a114e)[_0xa8ef('0x18')](_0x32bed0);}return null;};}function patchUpdates(_0x3230c5){return function(_0x3d7d1f){try{jsonpatch[_0xa8ef('0x1f')](_0x3d7d1f,_0x3230c5,!![]);}catch(_0x3ba149){return BPromise['reject'](_0x3ba149);}return _0x3d7d1f[_0xa8ef('0x20')]();};}function saveUpdates(_0x1bbbd8,_0x177601){return function(_0x29d0d4){if(_0x29d0d4){return _0x29d0d4['update'](_0x1bbbd8)['then'](function(_0x21cae1){return _0x21cae1;});}return null;};}function removeEntity(_0x2eefdc,_0xbb3bdd){return function(_0x50a2d3){if(_0x50a2d3){return _0x50a2d3[_0xa8ef('0x21')]()[_0xa8ef('0x22')](function(){_0x2eefdc[_0xa8ef('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3200e5,_0x2fa2b2){return function(_0x43ff34){if(!_0x43ff34){_0x3200e5['sendStatus'](0x194);}return _0x43ff34;};}function handleError(_0x2c63df,_0x31dbe5){_0x31dbe5=_0x31dbe5||0x1f4;return function(_0x4d8f0f){logger[_0xa8ef('0x23')](_0x4d8f0f[_0xa8ef('0x24')]);if(_0x4d8f0f[_0xa8ef('0x25')]){delete _0x4d8f0f['name'];}_0x2c63df[_0xa8ef('0x16')](_0x31dbe5)[_0xa8ef('0x26')](_0x4d8f0f);};}exports[_0xa8ef('0x27')]=function(_0x5ea905,_0x14974c){var _0xc40187={},_0x5010a7={},_0x4738fb={'count':0x0,'rows':[]};var _0x127851=_[_0xa8ef('0x28')](db[_0xa8ef('0x29')]['rawAttributes'],function(_0x3eda97){return{'name':_0x3eda97[_0xa8ef('0x2a')],'type':_0x3eda97[_0xa8ef('0x2b')][_0xa8ef('0x2c')]};});_0x5010a7['model']=_[_0xa8ef('0x28')](_0x127851,_0xa8ef('0x25'));_0x5010a7[_0xa8ef('0x2d')]=_['keys'](_0x5ea905[_0xa8ef('0x2d')]);_0x5010a7[_0xa8ef('0x2e')]=_[_0xa8ef('0x2f')](_0x5010a7[_0xa8ef('0x30')],_0x5010a7['query']);_0xc40187['attributes']=_['intersection'](_0x5010a7[_0xa8ef('0x30')],qs[_0xa8ef('0x31')](_0x5ea905[_0xa8ef('0x2d')][_0xa8ef('0x31')]));_0xc40187[_0xa8ef('0x32')]=_0xc40187[_0xa8ef('0x32')][_0xa8ef('0x33')]?_0xc40187['attributes']:_0x5010a7[_0xa8ef('0x30')];if(!_0x5ea905['query']['hasOwnProperty'](_0xa8ef('0x34'))){_0xc40187[_0xa8ef('0x1b')]=qs[_0xa8ef('0x1b')](_0x5ea905[_0xa8ef('0x2d')][_0xa8ef('0x1b')]);_0xc40187[_0xa8ef('0x19')]=qs[_0xa8ef('0x19')](_0x5ea905[_0xa8ef('0x2d')]['offset']);}_0xc40187[_0xa8ef('0x35')]=qs[_0xa8ef('0x36')](_0x5ea905[_0xa8ef('0x2d')][_0xa8ef('0x36')]);_0xc40187[_0xa8ef('0x37')]=qs[_0xa8ef('0x2e')](_[_0xa8ef('0x38')](_0x5ea905['query'],_0x5010a7['filters']),_0x127851);if(_0x5ea905['query']['filter']){_0xc40187[_0xa8ef('0x37')]=_[_0xa8ef('0x39')](_0xc40187['where'],{'$or':_['map'](_0x127851,function(_0xe3da6){if(_0xe3da6[_0xa8ef('0x2b')]!==_0xa8ef('0x3a')){var _0x29862a={};_0x29862a[_0xe3da6[_0xa8ef('0x25')]]={'$like':'%'+_0x5ea905[_0xa8ef('0x2d')]['filter']+'%'};return _0x29862a;}})});}_0xc40187=_[_0xa8ef('0x39')]({},_0xc40187,_0x5ea905[_0xa8ef('0x3b')]);var _0x1cdbaf={'where':_0xc40187[_0xa8ef('0x37')]};return db[_0xa8ef('0x29')][_0xa8ef('0x1c')](_0x1cdbaf)[_0xa8ef('0x22')](function(_0x46407e){_0x4738fb[_0xa8ef('0x1c')]=_0x46407e;if(_0x5ea905['query'][_0xa8ef('0x3c')]){_0xc40187[_0xa8ef('0x3d')]=[{'all':!![]}];}return db[_0xa8ef('0x29')]['findAll'](_0xc40187);})[_0xa8ef('0x22')](function(_0xc88267){_0x4738fb[_0xa8ef('0x3e')]=_0xc88267;return _0x4738fb;})[_0xa8ef('0x22')](respondWithFilteredResult(_0x14974c,_0xc40187))[_0xa8ef('0x3f')](handleError(_0x14974c,null));};exports['show']=function(_0x4318af,_0x54d9ea){var _0x51fd1f={'raw':![],'where':{'id':_0x4318af['params']['id']}},_0x572152={};_0x572152['model']=_[_0xa8ef('0x40')](db[_0xa8ef('0x29')][_0xa8ef('0x41')]);_0x572152[_0xa8ef('0x2d')]=_['keys'](_0x4318af['query']);_0x572152[_0xa8ef('0x2e')]=_['intersection'](_0x572152['model'],_0x572152[_0xa8ef('0x2d')]);_0x51fd1f[_0xa8ef('0x32')]=_[_0xa8ef('0x2f')](_0x572152[_0xa8ef('0x30')],qs[_0xa8ef('0x31')](_0x4318af[_0xa8ef('0x2d')][_0xa8ef('0x31')]));_0x51fd1f[_0xa8ef('0x32')]=_0x51fd1f[_0xa8ef('0x32')][_0xa8ef('0x33')]?_0x51fd1f['attributes']:_0x572152[_0xa8ef('0x30')];if(_0x4318af[_0xa8ef('0x2d')][_0xa8ef('0x3c')]){_0x51fd1f[_0xa8ef('0x3d')]=[{'all':!![]}];}_0x51fd1f=_[_0xa8ef('0x39')]({},_0x51fd1f,_0x4318af[_0xa8ef('0x3b')]);return db[_0xa8ef('0x29')][_0xa8ef('0x42')](_0x51fd1f)[_0xa8ef('0x22')](handleEntityNotFound(_0x54d9ea,null))[_0xa8ef('0x22')](respondWithResult(_0x54d9ea,null))[_0xa8ef('0x3f')](handleError(_0x54d9ea,null));};exports[_0xa8ef('0x43')]=function(_0x13d4ec,_0x2cd970){return db[_0xa8ef('0x29')][_0xa8ef('0x43')](_0x13d4ec[_0xa8ef('0x44')],{})['then'](respondWithResult(_0x2cd970,0xc9))[_0xa8ef('0x3f')](handleError(_0x2cd970,null));};exports['update']=function(_0x21ddcd,_0xb1650d){if(_0x21ddcd['body']['id']){delete _0x21ddcd[_0xa8ef('0x44')]['id'];}return db['UserProfileSection'][_0xa8ef('0x42')]({'where':{'id':_0x21ddcd[_0xa8ef('0x45')]['id']}})[_0xa8ef('0x22')](handleEntityNotFound(_0xb1650d,null))[_0xa8ef('0x22')](saveUpdates(_0x21ddcd[_0xa8ef('0x44')],null))[_0xa8ef('0x22')](respondWithResult(_0xb1650d,null))[_0xa8ef('0x3f')](handleError(_0xb1650d,null));};exports[_0xa8ef('0x21')]=function(_0x1ca87a,_0x3d9ddf){return db['UserProfileSection'][_0xa8ef('0x42')]({'where':{'id':_0x1ca87a['params']['id']}})[_0xa8ef('0x22')](handleEntityNotFound(_0x3d9ddf,null))['then'](removeEntity(_0x3d9ddf,null))[_0xa8ef('0x3f')](handleError(_0x3d9ddf,null));};exports[_0xa8ef('0x46')]=function(_0x489cfc,_0x5bc305){return db['UserProfileSection']['describe']()[_0xa8ef('0x22')](respondWithResult(_0x5bc305,null))[_0xa8ef('0x3f')](handleError(_0x5bc305,null));};
\ No newline at end of file
+var _0xb37d=['sendStatus','error','name','send','index','UserProfileSection','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end'];(function(_0x4cedf2,_0x57a6dc){var _0x433bcb=function(_0x307637){while(--_0x307637){_0x4cedf2['push'](_0x4cedf2['shift']());}};_0x433bcb(++_0x57a6dc);}(_0xb37d,0x19d));var _0xdb37=function(_0xe91999,_0x245fb7){_0xe91999=_0xe91999-0x0;var _0x44b41b=_0xb37d[_0xe91999];return _0x44b41b;};'use strict';var emlformat=require(_0xdb37('0x0'));var rimraf=require(_0xdb37('0x1'));var zipdir=require(_0xdb37('0x2'));var jsonpatch=require(_0xdb37('0x3'));var rp=require(_0xdb37('0x4'));var moment=require(_0xdb37('0x5'));var BPromise=require(_0xdb37('0x6'));var Mustache=require(_0xdb37('0x7'));var util=require('util');var path=require('path');var sox=require(_0xdb37('0x8'));var csv=require(_0xdb37('0x9'));var ejs=require(_0xdb37('0xa'));var fs=require('fs');var fs_extra=require(_0xdb37('0xb'));var _=require(_0xdb37('0xc'));var squel=require(_0xdb37('0xd'));var crypto=require(_0xdb37('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xdb37('0xf'));var toCsv=require('to-csv');var querystring=require(_0xdb37('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdb37('0x11'));var qs=require(_0xdb37('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb37('0x13'));var logger=require(_0xdb37('0x14'))('api');var utils=require(_0xdb37('0x15'));var config=require(_0xdb37('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdb37('0x17'))['db'];function respondWithStatusCode(_0x41b7fc,_0x657892){_0x657892=_0x657892||0xcc;return function(_0x3ac458){if(_0x3ac458){return _0x41b7fc['sendStatus'](_0x657892);}return _0x41b7fc[_0xdb37('0x18')](_0x657892)['end']();};}function respondWithResult(_0x32caac,_0x6f097f){_0x6f097f=_0x6f097f||0xc8;return function(_0x4063f1){if(_0x4063f1){return _0x32caac[_0xdb37('0x18')](_0x6f097f)[_0xdb37('0x19')](_0x4063f1);}};}function respondWithFilteredResult(_0x3d5f9f,_0x348f85){return function(_0xd1fd6e){if(_0xd1fd6e){var _0x24aa1b=typeof _0x348f85[_0xdb37('0x1a')]===_0xdb37('0x1b')&&typeof _0x348f85[_0xdb37('0x1c')]===_0xdb37('0x1b');var _0x4d1ea7=_0xd1fd6e[_0xdb37('0x1d')];var _0x3a8bac=_0x24aa1b?0x0:_0x348f85[_0xdb37('0x1a')];var _0x3acad7=_0x24aa1b?_0xd1fd6e[_0xdb37('0x1d')]:_0x348f85[_0xdb37('0x1a')]+_0x348f85['limit'];var _0x2887d5;if(_0x3acad7>=_0x4d1ea7){_0x3acad7=_0x4d1ea7;_0x2887d5=0xc8;}else{_0x2887d5=0xce;}_0x3d5f9f[_0xdb37('0x18')](_0x2887d5);return _0x3d5f9f['set'](_0xdb37('0x1e'),_0x3a8bac+'-'+_0x3acad7+'/'+_0x4d1ea7)[_0xdb37('0x19')](_0xd1fd6e);}return null;};}function patchUpdates(_0x423c00){return function(_0x15cb50){try{jsonpatch[_0xdb37('0x1f')](_0x15cb50,_0x423c00,!![]);}catch(_0x2a4bf4){return BPromise[_0xdb37('0x20')](_0x2a4bf4);}return _0x15cb50[_0xdb37('0x21')]();};}function saveUpdates(_0x3b6aef,_0x40c1d8){return function(_0x3cfaa0){if(_0x3cfaa0){return _0x3cfaa0['update'](_0x3b6aef)[_0xdb37('0x22')](function(_0x30025a){return _0x30025a;});}return null;};}function removeEntity(_0x16c2bf,_0x592bee){return function(_0x24ae58){if(_0x24ae58){return _0x24ae58[_0xdb37('0x23')]()[_0xdb37('0x22')](function(){_0x16c2bf[_0xdb37('0x18')](0xcc)[_0xdb37('0x24')]();});}};}function handleEntityNotFound(_0x32b57a,_0x1a1bff){return function(_0x1f5156){if(!_0x1f5156){_0x32b57a[_0xdb37('0x25')](0x194);}return _0x1f5156;};}function handleError(_0x4ba261,_0x5df105){_0x5df105=_0x5df105||0x1f4;return function(_0x4fe74a){logger[_0xdb37('0x26')](_0x4fe74a['stack']);if(_0x4fe74a[_0xdb37('0x27')]){delete _0x4fe74a[_0xdb37('0x27')];}_0x4ba261[_0xdb37('0x18')](_0x5df105)[_0xdb37('0x28')](_0x4fe74a);};}exports[_0xdb37('0x29')]=function(_0x4d4ce8,_0x544e86){var _0x1f54ec={},_0x1390c5={},_0x362e08={'count':0x0,'rows':[]};var _0x24a1f6=_['map'](db[_0xdb37('0x2a')][_0xdb37('0x2b')],function(_0x47c6fc){return{'name':_0x47c6fc['fieldName'],'type':_0x47c6fc[_0xdb37('0x2c')][_0xdb37('0x2d')]};});_0x1390c5[_0xdb37('0x2e')]=_[_0xdb37('0x2f')](_0x24a1f6,'name');_0x1390c5[_0xdb37('0x30')]=_[_0xdb37('0x31')](_0x4d4ce8[_0xdb37('0x30')]);_0x1390c5[_0xdb37('0x32')]=_['intersection'](_0x1390c5[_0xdb37('0x2e')],_0x1390c5[_0xdb37('0x30')]);_0x1f54ec[_0xdb37('0x33')]=_[_0xdb37('0x34')](_0x1390c5[_0xdb37('0x2e')],qs[_0xdb37('0x35')](_0x4d4ce8[_0xdb37('0x30')][_0xdb37('0x35')]));_0x1f54ec['attributes']=_0x1f54ec['attributes'][_0xdb37('0x36')]?_0x1f54ec['attributes']:_0x1390c5[_0xdb37('0x2e')];if(!_0x4d4ce8['query'][_0xdb37('0x37')](_0xdb37('0x38'))){_0x1f54ec[_0xdb37('0x1c')]=qs[_0xdb37('0x1c')](_0x4d4ce8[_0xdb37('0x30')]['limit']);_0x1f54ec[_0xdb37('0x1a')]=qs[_0xdb37('0x1a')](_0x4d4ce8[_0xdb37('0x30')]['offset']);}_0x1f54ec[_0xdb37('0x39')]=qs[_0xdb37('0x3a')](_0x4d4ce8[_0xdb37('0x30')]['sort']);_0x1f54ec[_0xdb37('0x3b')]=qs[_0xdb37('0x32')](_[_0xdb37('0x3c')](_0x4d4ce8[_0xdb37('0x30')],_0x1390c5[_0xdb37('0x32')]),_0x24a1f6);if(_0x4d4ce8[_0xdb37('0x30')][_0xdb37('0x3d')]){_0x1f54ec[_0xdb37('0x3b')]=_[_0xdb37('0x3e')](_0x1f54ec[_0xdb37('0x3b')],{'$or':_[_0xdb37('0x2f')](_0x24a1f6,function(_0x289915){if(_0x289915[_0xdb37('0x2c')]!=='VIRTUAL'){var _0x41e257={};_0x41e257[_0x289915[_0xdb37('0x27')]]={'$like':'%'+_0x4d4ce8['query'][_0xdb37('0x3d')]+'%'};return _0x41e257;}})});}_0x1f54ec=_[_0xdb37('0x3e')]({},_0x1f54ec,_0x4d4ce8[_0xdb37('0x3f')]);var _0x8f6c06={'where':_0x1f54ec[_0xdb37('0x3b')]};return db[_0xdb37('0x2a')][_0xdb37('0x1d')](_0x8f6c06)[_0xdb37('0x22')](function(_0x4f6291){_0x362e08[_0xdb37('0x1d')]=_0x4f6291;if(_0x4d4ce8['query'][_0xdb37('0x40')]){_0x1f54ec[_0xdb37('0x41')]=[{'all':!![]}];}return db[_0xdb37('0x2a')][_0xdb37('0x42')](_0x1f54ec);})[_0xdb37('0x22')](function(_0x40f3be){_0x362e08[_0xdb37('0x43')]=_0x40f3be;return _0x362e08;})[_0xdb37('0x22')](respondWithFilteredResult(_0x544e86,_0x1f54ec))[_0xdb37('0x44')](handleError(_0x544e86,null));};exports[_0xdb37('0x45')]=function(_0x5a2ea8,_0x34c55e){var _0x581262={'raw':![],'where':{'id':_0x5a2ea8['params']['id']}},_0x14ea41={};_0x14ea41['model']=_[_0xdb37('0x31')](db[_0xdb37('0x2a')][_0xdb37('0x2b')]);_0x14ea41['query']=_['keys'](_0x5a2ea8[_0xdb37('0x30')]);_0x14ea41[_0xdb37('0x32')]=_[_0xdb37('0x34')](_0x14ea41['model'],_0x14ea41[_0xdb37('0x30')]);_0x581262[_0xdb37('0x33')]=_['intersection'](_0x14ea41[_0xdb37('0x2e')],qs[_0xdb37('0x35')](_0x5a2ea8['query'][_0xdb37('0x35')]));_0x581262['attributes']=_0x581262[_0xdb37('0x33')][_0xdb37('0x36')]?_0x581262['attributes']:_0x14ea41[_0xdb37('0x2e')];if(_0x5a2ea8[_0xdb37('0x30')]['includeAll']){_0x581262[_0xdb37('0x41')]=[{'all':!![]}];}_0x581262=_[_0xdb37('0x3e')]({},_0x581262,_0x5a2ea8[_0xdb37('0x3f')]);return db['UserProfileSection']['find'](_0x581262)[_0xdb37('0x22')](handleEntityNotFound(_0x34c55e,null))[_0xdb37('0x22')](respondWithResult(_0x34c55e,null))[_0xdb37('0x44')](handleError(_0x34c55e,null));};exports[_0xdb37('0x46')]=function(_0xdcb894,_0x315cc5){return db[_0xdb37('0x2a')][_0xdb37('0x46')](_0xdcb894['body'],{})[_0xdb37('0x22')](respondWithResult(_0x315cc5,0xc9))[_0xdb37('0x44')](handleError(_0x315cc5,null));};exports['update']=function(_0xca5c2a,_0x3c769c){if(_0xca5c2a[_0xdb37('0x47')]['id']){delete _0xca5c2a['body']['id'];}return db[_0xdb37('0x2a')][_0xdb37('0x48')]({'where':{'id':_0xca5c2a[_0xdb37('0x49')]['id']}})[_0xdb37('0x22')](handleEntityNotFound(_0x3c769c,null))[_0xdb37('0x22')](saveUpdates(_0xca5c2a[_0xdb37('0x47')],null))['then'](respondWithResult(_0x3c769c,null))[_0xdb37('0x44')](handleError(_0x3c769c,null));};exports[_0xdb37('0x23')]=function(_0x500402,_0x588fd9){return db[_0xdb37('0x2a')][_0xdb37('0x48')]({'where':{'id':_0x500402[_0xdb37('0x49')]['id']}})[_0xdb37('0x22')](handleEntityNotFound(_0x588fd9,null))[_0xdb37('0x22')](removeEntity(_0x588fd9,null))[_0xdb37('0x44')](handleError(_0x588fd9,null));};exports[_0xdb37('0x4a')]=function(_0x44b6b5,_0xa49667){return db['UserProfileSection'][_0xdb37('0x4a')]()[_0xdb37('0x22')](respondWithResult(_0xa49667,null))[_0xdb37('0x44')](handleError(_0xa49667,null));};
\ No newline at end of file
index 5214b33..1a285fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4d=['lodash','util','moment','bluebird','request-promise','path','rimraf','./userProfileSection.attributes','exports','define','user_profile_has_sections','sectionId','userProfileId'];(function(_0x5d48f6,_0x2f0fbd){var _0x31858e=function(_0x1da1c2){while(--_0x1da1c2){_0x5d48f6['push'](_0x5d48f6['shift']());}};_0x31858e(++_0x2f0fbd);}(_0x5f4d,0x1e1));var _0xd5f4=function(_0x302e35,_0x197af1){_0x302e35=_0x302e35-0x0;var _0x31d5f9=_0x5f4d[_0x302e35];return _0x31d5f9;};'use strict';var _=require(_0xd5f4('0x0'));var util=require(_0xd5f4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd5f4('0x2'));var BPromise=require(_0xd5f4('0x3'));var rp=require(_0xd5f4('0x4'));var fs=require('fs');var path=require(_0xd5f4('0x5'));var rimraf=require(_0xd5f4('0x6'));var config=require('../../config/environment');var attributes=require(_0xd5f4('0x7'));module[_0xd5f4('0x8')]=function(_0x4e3d3f,_0x1d00a1){return _0x4e3d3f[_0xd5f4('0x9')]('UserProfileSection',attributes,{'tableName':_0xd5f4('0xa'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xd5f4('0xb'),_0xd5f4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33f8=['rimraf','../../config/environment','exports','define','UserProfileSection','compositeIndex','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2d8691,_0x508608){var _0x18b596=function(_0x129934){while(--_0x129934){_0x2d8691['push'](_0x2d8691['shift']());}};_0x18b596(++_0x508608);}(_0x33f8,0x172));var _0x833f=function(_0x534188,_0x1e86e0){_0x534188=_0x534188-0x0;var _0x3552ca=_0x33f8[_0x534188];return _0x3552ca;};'use strict';var _=require(_0x833f('0x0'));var util=require(_0x833f('0x1'));var logger=require(_0x833f('0x2'))(_0x833f('0x3'));var moment=require(_0x833f('0x4'));var BPromise=require(_0x833f('0x5'));var rp=require(_0x833f('0x6'));var fs=require('fs');var path=require(_0x833f('0x7'));var rimraf=require(_0x833f('0x8'));var config=require(_0x833f('0x9'));var attributes=require('./userProfileSection.attributes');module[_0x833f('0xa')]=function(_0x5099b0,_0x1f623a){return _0x5099b0[_0x833f('0xb')](_0x833f('0xc'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x833f('0xd'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index d17d035..c80c922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['http','request','then','info','UserProfileSection,\x20%s,\x20%s','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0xb9be,0x124));var _0xeb9b=function(_0x1793de,_0x4d7233){_0x1793de=_0x1793de-0x0;var _0x4f0309=_0xb9be[_0x1793de];return _0x4f0309;};'use strict';var _=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var moment=require(_0xeb9b('0x2'));var BPromise=require(_0xeb9b('0x3'));var rs=require(_0xeb9b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeb9b('0x5'));var logger=require(_0xeb9b('0x6'))('rpc');var config=require(_0xeb9b('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xeb9b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x22e0f0,_0x29eddc,_0x39759e){return new BPromise(function(_0x4fe8f4,_0xf11780){return client[_0xeb9b('0x9')](_0x22e0f0,_0x39759e)[_0xeb9b('0xa')](function(_0x5baef8){logger[_0xeb9b('0xb')](_0xeb9b('0xc'),_0x29eddc,'request\x20sent');logger['debug'](_0xeb9b('0xd'),_0x29eddc,_0xeb9b('0xe'),JSON[_0xeb9b('0xf')](_0x5baef8));if(_0x5baef8[_0xeb9b('0x10')]){if(_0x5baef8[_0xeb9b('0x10')]['code']===0x1f4){logger[_0xeb9b('0x10')](_0xeb9b('0xc'),_0x29eddc,_0x5baef8[_0xeb9b('0x10')][_0xeb9b('0x11')]);return _0xf11780(_0x5baef8[_0xeb9b('0x10')][_0xeb9b('0x11')]);}logger[_0xeb9b('0x10')]('UserProfileSection,\x20%s,\x20%s',_0x29eddc,_0x5baef8[_0xeb9b('0x10')][_0xeb9b('0x11')]);return _0x4fe8f4(_0x5baef8[_0xeb9b('0x10')][_0xeb9b('0x11')]);}else{logger[_0xeb9b('0xb')](_0xeb9b('0xc'),_0x29eddc,_0xeb9b('0xe'));_0x4fe8f4(_0x5baef8[_0xeb9b('0x12')][_0xeb9b('0x11')]);}})[_0xeb9b('0x13')](function(_0x27462f){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x29eddc,_0x27462f);_0xf11780(_0x27462f);});});}
\ No newline at end of file
+var _0x757c=['UserProfileSection,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x581e01,_0x241cbd){var _0x558b54=function(_0x22a370){while(--_0x22a370){_0x581e01['push'](_0x581e01['shift']());}};_0x558b54(++_0x241cbd);}(_0x757c,0xc9));var _0xc757=function(_0x5462ca,_0x4ab7ac){_0x5462ca=_0x5462ca-0x0;var _0x1ae5b8=_0x757c[_0x5462ca];return _0x1ae5b8;};'use strict';var _=require(_0xc757('0x0'));var util=require(_0xc757('0x1'));var moment=require('moment');var BPromise=require(_0xc757('0x2'));var rs=require(_0xc757('0x3'));var fs=require('fs');var Redis=require(_0xc757('0x4'));var db=require(_0xc757('0x5'))['db'];var utils=require(_0xc757('0x6'));var logger=require(_0xc757('0x7'))(_0xc757('0x8'));var config=require(_0xc757('0x9'));var jayson=require(_0xc757('0xa'));var client=jayson[_0xc757('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d5777,_0x14a9ca,_0xe6caa5){return new BPromise(function(_0xa7a346,_0x5643f3){return client[_0xc757('0xc')](_0x1d5777,_0xe6caa5)['then'](function(_0x3c7d47){logger[_0xc757('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x14a9ca,_0xc757('0xe'));logger[_0xc757('0xf')](_0xc757('0x10'),_0x14a9ca,_0xc757('0xe'),JSON[_0xc757('0x11')](_0x3c7d47));if(_0x3c7d47[_0xc757('0x12')]){if(_0x3c7d47['error']['code']===0x1f4){logger[_0xc757('0x12')](_0xc757('0x13'),_0x14a9ca,_0x3c7d47[_0xc757('0x12')][_0xc757('0x14')]);return _0x5643f3(_0x3c7d47['error'][_0xc757('0x14')]);}logger[_0xc757('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x14a9ca,_0x3c7d47[_0xc757('0x12')][_0xc757('0x14')]);return _0xa7a346(_0x3c7d47[_0xc757('0x12')][_0xc757('0x14')]);}else{logger[_0xc757('0xd')](_0xc757('0x13'),_0x14a9ca,'request\x20sent');_0xa7a346(_0x3c7d47[_0xc757('0x15')][_0xc757('0x14')]);}})['catch'](function(_0x33e314){logger[_0xc757('0x12')](_0xc757('0x13'),_0x14a9ca,_0x33e314);_0x5643f3(_0x33e314);});});}
\ No newline at end of file
index de42ee9..9f1f201 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(_0x178318,_0x56b403){var _0x243ceb=function(_0x56d924){while(--_0x56d924){_0x178318['push'](_0x178318['shift']());}};_0x243ceb(++_0x56b403);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2e6544,_0x168aef){var _0x8dceb5=function(_0x54d448){while(--_0x54d448){_0x2e6544['push'](_0x2e6544['shift']());}};_0x8dceb5(++_0x168aef);}(_0x9c44,0x178));var _0x49c4=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x9c44[_0x3b0731];return _0x4204d7;};'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 6baba3d..7ff64b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5804=['INTEGER','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5804,0x8d));var _0x4580=function(_0x353cd6,_0xc795f6){_0x353cd6=_0x353cd6-0x0;var _0x55712a=_0x5804[_0x353cd6];return _0x55712a;};'use strict';var Sequelize=require('sequelize');module[_0x4580('0x0')]={'penalty':{'type':Sequelize[_0x4580('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe362=['sequelize','INTEGER'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0xe362,0x194));var _0x2e36=function(_0x7729b1,_0x468322){_0x7729b1=_0x7729b1-0x0;var _0x349504=_0xe362[_0x7729b1];return _0x349504;};'use strict';var Sequelize=require(_0x2e36('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x2e36('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 04a1502..e566dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x2484be,_0x12368d){var _0x2953f1=function(_0x550863){while(--_0x550863){_0x2484be['push'](_0x2484be['shift']());}};_0x2953f1(++_0x12368d);}(_0xba34,0x119));var _0x4ba3=function(_0x38de7d,_0x5da61a){_0x38de7d=_0x38de7d-0x0;var _0x25d9cb=_0xba34[_0x38de7d];return _0x25d9cb;};'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')]('UserSmsQueue',attributes,{'tableName':_0x4ba3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fb4=['./userSmsQueue.attributes','exports','define','UserSmsQueue','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x4fb4,0x190));var _0x44fb=function(_0x5dcc38,_0x1cc681){_0x5dcc38=_0x5dcc38-0x0;var _0x370133=_0x4fb4[_0x5dcc38];return _0x370133;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var logger=require(_0x44fb('0x1'))(_0x44fb('0x2'));var moment=require(_0x44fb('0x3'));var BPromise=require(_0x44fb('0x4'));var rp=require(_0x44fb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var attributes=require(_0x44fb('0x8'));module[_0x44fb('0x9')]=function(_0x375d33,_0x173e70){return _0x375d33[_0x44fb('0xa')](_0x44fb('0xb'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e485a1..543a25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x334a=['message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x15bb23,_0x5a9d53){var _0x385555=function(_0x3c4790){while(--_0x3c4790){_0x15bb23['push'](_0x15bb23['shift']());}};_0x385555(++_0x5a9d53);}(_0x334a,0x153));var _0xa334=function(_0x528036,_0x3fd182){_0x528036=_0x528036-0x0;var _0x4c83ea=_0x334a[_0x528036];return _0x4c83ea;};'use strict';var _=require(_0xa334('0x0'));var util=require(_0xa334('0x1'));var moment=require('moment');var BPromise=require(_0xa334('0x2'));var rs=require(_0xa334('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa334('0x4'))['db'];var utils=require(_0xa334('0x5'));var logger=require(_0xa334('0x6'))(_0xa334('0x7'));var config=require(_0xa334('0x8'));var jayson=require(_0xa334('0x9'));var client=jayson['client'][_0xa334('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26a914,_0x53ca01,_0x4edb86){return new BPromise(function(_0x1ba171,_0x496776){return client[_0xa334('0xb')](_0x26a914,_0x4edb86)[_0xa334('0xc')](function(_0x177800){logger[_0xa334('0xd')](_0xa334('0xe'),_0x53ca01,'request\x20sent');logger[_0xa334('0xf')](_0xa334('0x10'),_0x53ca01,_0xa334('0x11'),JSON[_0xa334('0x12')](_0x177800));if(_0x177800[_0xa334('0x13')]){if(_0x177800[_0xa334('0x13')][_0xa334('0x14')]===0x1f4){logger[_0xa334('0x13')]('UserSmsQueue,\x20%s,\x20%s',_0x53ca01,_0x177800[_0xa334('0x13')][_0xa334('0x15')]);return _0x496776(_0x177800[_0xa334('0x13')][_0xa334('0x15')]);}logger[_0xa334('0x13')](_0xa334('0xe'),_0x53ca01,_0x177800['error'][_0xa334('0x15')]);return _0x1ba171(_0x177800[_0xa334('0x13')][_0xa334('0x15')]);}else{logger['info'](_0xa334('0xe'),_0x53ca01,'request\x20sent');_0x1ba171(_0x177800[_0xa334('0x16')][_0xa334('0x15')]);}})[_0xa334('0x17')](function(_0x498703){logger[_0xa334('0x13')](_0xa334('0xe'),_0x53ca01,_0x498703);_0x496776(_0x498703);});});}
\ No newline at end of file
+var _0xbb4d=['then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x19b5c0,_0x18ca6d){var _0x2fb804=function(_0x4384bf){while(--_0x4384bf){_0x19b5c0['push'](_0x19b5c0['shift']());}};_0x2fb804(++_0x18ca6d);}(_0xbb4d,0xe4));var _0xdbb4=function(_0x4a96ca,_0x13754e){_0x4a96ca=_0x4a96ca-0x0;var _0x2aed48=_0xbb4d[_0x4a96ca];return _0x2aed48;};'use strict';var _=require(_0xdbb4('0x0'));var util=require(_0xdbb4('0x1'));var moment=require(_0xdbb4('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdbb4('0x3'));var db=require(_0xdbb4('0x4'))['db'];var utils=require(_0xdbb4('0x5'));var logger=require('../../config/logger')(_0xdbb4('0x6'));var config=require(_0xdbb4('0x7'));var jayson=require(_0xdbb4('0x8'));var client=jayson[_0xdbb4('0x9')][_0xdbb4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4dd28b,_0x51f5e4,_0x4e0707){return new BPromise(function(_0xd33f4d,_0x5c5401){return client[_0xdbb4('0xb')](_0x4dd28b,_0x4e0707)[_0xdbb4('0xc')](function(_0x494d9f){logger[_0xdbb4('0xd')](_0xdbb4('0xe'),_0x51f5e4,_0xdbb4('0xf'));logger[_0xdbb4('0x10')](_0xdbb4('0x11'),_0x51f5e4,_0xdbb4('0xf'),JSON[_0xdbb4('0x12')](_0x494d9f));if(_0x494d9f[_0xdbb4('0x13')]){if(_0x494d9f[_0xdbb4('0x13')][_0xdbb4('0x14')]===0x1f4){logger[_0xdbb4('0x13')](_0xdbb4('0xe'),_0x51f5e4,_0x494d9f[_0xdbb4('0x13')][_0xdbb4('0x15')]);return _0x5c5401(_0x494d9f[_0xdbb4('0x13')][_0xdbb4('0x15')]);}logger['error'](_0xdbb4('0xe'),_0x51f5e4,_0x494d9f[_0xdbb4('0x13')][_0xdbb4('0x15')]);return _0xd33f4d(_0x494d9f['error']['message']);}else{logger[_0xdbb4('0xd')](_0xdbb4('0xe'),_0x51f5e4,_0xdbb4('0xf'));_0xd33f4d(_0x494d9f[_0xdbb4('0x16')][_0xdbb4('0x15')]);}})[_0xdbb4('0x17')](function(_0x8cae09){logger[_0xdbb4('0x13')](_0xdbb4('0xe'),_0x51f5e4,_0x8cae09);_0x5c5401(_0x8cae09);});});}
\ No newline at end of file
index a63095d..d9dea5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x986f=['INTEGER','sequelize','exports'];(function(_0x41d432,_0x20e878){var _0x1650f9=function(_0x27f177){while(--_0x27f177){_0x41d432['push'](_0x41d432['shift']());}};_0x1650f9(++_0x20e878);}(_0x986f,0x1cc));var _0xf986=function(_0x52dd31,_0x40973b){_0x52dd31=_0x52dd31-0x0;var _0x4720b2=_0x986f[_0x52dd31];return _0x4720b2;};'use strict';var Sequelize=require(_0xf986('0x0'));module[_0xf986('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0xf986('0x2')]}};
\ No newline at end of file
+var _0x4401=['INTEGER'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0x4401,0x146));var _0x1440=function(_0x16d3fc,_0x82ba3c){_0x16d3fc=_0x16d3fc-0x0;var _0x7e490a=_0x4401[_0x16d3fc];return _0x7e490a;};'use strict';var Sequelize=require('sequelize');module['exports']={'UserId':{'type':Sequelize[_0x1440('0x0')]},'VoicePrefixId':{'type':Sequelize[_0x1440('0x0')]}};
\ No newline at end of file
index c3c7b01..1839b3a 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(_0x56cdee,_0x42193e){var _0x1cf9eb=function(_0x2bfa80){while(--_0x2bfa80){_0x56cdee['push'](_0x56cdee['shift']());}};_0x1cf9eb(++_0x42193e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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(_0x3850cd,_0x321575){var _0x346bfd=function(_0x321b49){while(--_0x321b49){_0x3850cd['push'](_0x3850cd['shift']());}};_0x346bfd(++_0x321575);}(_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 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 d121062..eda4a2a 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(_0xeb3c25,_0x2f3991){var _0x1b1614=function(_0x1497e5){while(--_0x1497e5){_0xeb3c25['push'](_0xeb3c25['shift']());}};_0x1b1614(++_0x2f3991);}(_0x70e0,0x17b));var _0x070e=function(_0x2cec58,_0x204296){_0x2cec58=_0x2cec58-0x0;var _0x4f500a=_0x70e0[_0x2cec58];return _0x4f500a;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x2ddc4a,_0xdcf87){var _0x44bd44=function(_0x3e8b79){while(--_0x3e8b79){_0x2ddc4a['push'](_0x2ddc4a['shift']());}};_0x44bd44(++_0xdcf87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 4200e58..ae338fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8457=['INTEGER','sequelize','exports'];(function(_0x61bb05,_0x47421f){var _0x3ceb3e=function(_0x54b8f7){while(--_0x54b8f7){_0x61bb05['push'](_0x61bb05['shift']());}};_0x3ceb3e(++_0x47421f);}(_0x8457,0x142));var _0x7845=function(_0x4e7a69,_0x5250c0){_0x4e7a69=_0x4e7a69-0x0;var _0x2efbaf=_0x8457[_0x4e7a69];return _0x2efbaf;};'use strict';var Sequelize=require(_0x7845('0x0'));module[_0x7845('0x1')]={'penalty':{'type':Sequelize[_0x7845('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd943=['sequelize','exports','INTEGER'];(function(_0x585d81,_0xf6d74f){var _0x1aca0d=function(_0x3782d3){while(--_0x3782d3){_0x585d81['push'](_0x585d81['shift']());}};_0x1aca0d(++_0xf6d74f);}(_0xd943,0x14a));var _0x3d94=function(_0xca570b,_0x2b7557){_0xca570b=_0xca570b-0x0;var _0x2741ed=_0xd943[_0xca570b];return _0x2741ed;};'use strict';var Sequelize=require(_0x3d94('0x0'));module[_0x3d94('0x1')]={'penalty':{'type':Sequelize[_0x3d94('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 54fc99b..0d2028b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb42=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','user_has_voice_queues','lodash'];(function(_0x542a4e,_0x23f7ef){var _0x11d75d=function(_0x12c1c7){while(--_0x12c1c7){_0x542a4e['push'](_0x542a4e['shift']());}};_0x11d75d(++_0x23f7ef);}(_0xdb42,0x1b1));var _0x2db4=function(_0x206f54,_0x442f00){_0x206f54=_0x206f54-0x0;var _0x1b6be4=_0xdb42[_0x206f54];return _0x1b6be4;};'use strict';var _=require(_0x2db4('0x0'));var util=require(_0x2db4('0x1'));var logger=require(_0x2db4('0x2'))(_0x2db4('0x3'));var moment=require(_0x2db4('0x4'));var BPromise=require(_0x2db4('0x5'));var rp=require(_0x2db4('0x6'));var fs=require('fs');var path=require(_0x2db4('0x7'));var rimraf=require(_0x2db4('0x8'));var config=require(_0x2db4('0x9'));var attributes=require(_0x2db4('0xa'));module[_0x2db4('0xb')]=function(_0x18ce5a,_0x15e6c1){return _0x18ce5a[_0x2db4('0xc')]('UserVoiceQueue',attributes,{'tableName':_0x2db4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba4c=['UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./userVoiceQueue.attributes','exports','define'];(function(_0x3c9881,_0x3570e7){var _0x1e2735=function(_0x2dc870){while(--_0x2dc870){_0x3c9881['push'](_0x3c9881['shift']());}};_0x1e2735(++_0x3570e7);}(_0xba4c,0x1e2));var _0xcba4=function(_0x510fbe,_0x1ea012){_0x510fbe=_0x510fbe-0x0;var _0x490459=_0xba4c[_0x510fbe];return _0x490459;};'use strict';var _=require(_0xcba4('0x0'));var util=require(_0xcba4('0x1'));var logger=require(_0xcba4('0x2'))('api');var moment=require(_0xcba4('0x3'));var BPromise=require(_0xcba4('0x4'));var rp=require(_0xcba4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcba4('0x6'));var attributes=require(_0xcba4('0x7'));module[_0xcba4('0x8')]=function(_0x434c7c,_0x403b96){return _0x434c7c[_0xcba4('0x9')](_0xcba4('0xa'),attributes,{'tableName':_0xcba4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba6e215..522096d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aee=['stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5445cb,_0x1a3460){var _0x16a23b=function(_0x237b26){while(--_0x237b26){_0x5445cb['push'](_0x5445cb['shift']());}};_0x16a23b(++_0x1a3460);}(_0x1aee,0x1e9));var _0xe1ae=function(_0x191154,_0x56f74c){_0x191154=_0x191154-0x0;var _0x3dcd73=_0x1aee[_0x191154];return _0x3dcd73;};'use strict';var _=require(_0xe1ae('0x0'));var util=require(_0xe1ae('0x1'));var moment=require(_0xe1ae('0x2'));var BPromise=require(_0xe1ae('0x3'));var rs=require(_0xe1ae('0x4'));var fs=require('fs');var Redis=require(_0xe1ae('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1ae('0x6'));var logger=require(_0xe1ae('0x7'))(_0xe1ae('0x8'));var config=require(_0xe1ae('0x9'));var jayson=require(_0xe1ae('0xa'));var client=jayson['client'][_0xe1ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x455fa1,_0x122460,_0x3e3431){return new BPromise(function(_0x3d3333,_0x240609){return client[_0xe1ae('0xc')](_0x455fa1,_0x3e3431)[_0xe1ae('0xd')](function(_0x12f741){logger['info'](_0xe1ae('0xe'),_0x122460,_0xe1ae('0xf'));logger[_0xe1ae('0x10')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x122460,'request\x20sent',JSON[_0xe1ae('0x11')](_0x12f741));if(_0x12f741[_0xe1ae('0x12')]){if(_0x12f741['error']['code']===0x1f4){logger[_0xe1ae('0x12')](_0xe1ae('0xe'),_0x122460,_0x12f741[_0xe1ae('0x12')][_0xe1ae('0x13')]);return _0x240609(_0x12f741[_0xe1ae('0x12')]['message']);}logger[_0xe1ae('0x12')](_0xe1ae('0xe'),_0x122460,_0x12f741[_0xe1ae('0x12')][_0xe1ae('0x13')]);return _0x3d3333(_0x12f741[_0xe1ae('0x12')][_0xe1ae('0x13')]);}else{logger[_0xe1ae('0x14')](_0xe1ae('0xe'),_0x122460,_0xe1ae('0xf'));_0x3d3333(_0x12f741[_0xe1ae('0x15')][_0xe1ae('0x13')]);}})[_0xe1ae('0x16')](function(_0x580198){logger[_0xe1ae('0x12')](_0xe1ae('0xe'),_0x122460,_0x580198);_0x240609(_0x580198);});});}
\ No newline at end of file
+var _0x0888=['then','UserVoiceQueue,\x20%s,\x20%s','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x0888,0xad));var _0x8088=function(_0x302b69,_0x508e87){_0x302b69=_0x302b69-0x0;var _0x473666=_0x0888[_0x302b69];return _0x473666;};'use strict';var _=require(_0x8088('0x0'));var util=require(_0x8088('0x1'));var moment=require(_0x8088('0x2'));var BPromise=require(_0x8088('0x3'));var rs=require(_0x8088('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8088('0x5'));var config=require(_0x8088('0x6'));var jayson=require(_0x8088('0x7'));var client=jayson[_0x8088('0x8')][_0x8088('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1a995b,_0x2389eb,_0x3562b0){return new BPromise(function(_0x2901d0,_0x477655){return client[_0x8088('0xa')](_0x1a995b,_0x3562b0)[_0x8088('0xb')](function(_0x3ad6e1){logger['info'](_0x8088('0xc'),_0x2389eb,'request\x20sent');logger[_0x8088('0xd')](_0x8088('0xe'),_0x2389eb,'request\x20sent',JSON[_0x8088('0xf')](_0x3ad6e1));if(_0x3ad6e1[_0x8088('0x10')]){if(_0x3ad6e1[_0x8088('0x10')][_0x8088('0x11')]===0x1f4){logger[_0x8088('0x10')](_0x8088('0xc'),_0x2389eb,_0x3ad6e1[_0x8088('0x10')][_0x8088('0x12')]);return _0x477655(_0x3ad6e1[_0x8088('0x10')][_0x8088('0x12')]);}logger[_0x8088('0x10')](_0x8088('0xc'),_0x2389eb,_0x3ad6e1[_0x8088('0x10')][_0x8088('0x12')]);return _0x2901d0(_0x3ad6e1['error'][_0x8088('0x12')]);}else{logger[_0x8088('0x13')](_0x8088('0xc'),_0x2389eb,_0x8088('0x14'));_0x2901d0(_0x3ad6e1[_0x8088('0x15')][_0x8088('0x12')]);}})[_0x8088('0x16')](function(_0x107ea4){logger[_0x8088('0x10')](_0x8088('0xc'),_0x2389eb,_0x107ea4);_0x477655(_0x107ea4);});});}
\ No newline at end of file
index 35064a1..952d381 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(_0x19f457,_0x46d202){var _0x482bfc=function(_0x5925d9){while(--_0x5925d9){_0x19f457['push'](_0x19f457['shift']());}};_0x482bfc(++_0x46d202);}(_0x70e0,0x17b));var _0x070e=function(_0x53a90f,_0x572706){_0x53a90f=_0x53a90f-0x0;var _0x30241a=_0x70e0[_0x53a90f];return _0x30241a;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3ea9f9,_0x33f0e3){var _0x1f3133=function(_0x331ac0){while(--_0x331ac0){_0x3ea9f9['push'](_0x3ea9f9['shift']());}};_0x1f3133(++_0x33f0e3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c9380,_0x2fefc0){_0x4c9380=_0x4c9380-0x0;var _0x49a523=_0xcb91[_0x4c9380];return _0x49a523;};'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 fbe7d0f..e56fc9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c38=['queue_interface','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x108f7e,_0x34c1a4){var _0x490f26=function(_0x4dc84e){while(--_0x4dc84e){_0x108f7e['push'](_0x108f7e['shift']());}};_0x490f26(++_0x34c1a4);}(_0x8c38,0x105));var _0x88c3=function(_0x3a4733,_0x6344e3){_0x3a4733=_0x3a4733-0x0;var _0x46c86e=_0x8c38[_0x3a4733];return _0x46c86e;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x88c3('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x88c3('0x1')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x88c3('0x1')},'UserId':{'type':Sequelize[_0x88c3('0x0')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x88c3('0x2')],'allowNull':![],'unique':_0x88c3('0x3'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0x88c3('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0x88c3('0x2')],'allowNull':![],'unique':_0x88c3('0x3'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x88c3('0x0')](0xb),'defaultValue':0x0,'comment':_0x88c3('0x1')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x88c3('0x1')}};
\ No newline at end of file
+var _0x52a8=['queue_interface','Required\x20by\x20Asterisk','INTEGER','STRING'];(function(_0x506091,_0x12f86f){var _0xdab9ab=function(_0xab63c8){while(--_0xab63c8){_0x506091['push'](_0x506091['shift']());}};_0xdab9ab(++_0x12f86f);}(_0x52a8,0x141));var _0x852a=function(_0x521083,_0x26aef2){_0x521083=_0x521083-0x0;var _0x574c75=_0x52a8[_0x521083];return _0x574c75;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x852a('0x0')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x852a('0x0')},'UserId':{'type':Sequelize[_0x852a('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x852a('0x2')],'allowNull':![],'unique':_0x852a('0x3'),'comment':_0x852a('0x0')},'VoiceQueueId':{'type':Sequelize[_0x852a('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x852a('0x2')],'allowNull':![],'unique':_0x852a('0x3'),'comment':_0x852a('0x0')},'penalty':{'type':Sequelize[_0x852a('0x1')](0xb),'defaultValue':0x0,'comment':_0x852a('0x0')},'paused':{'type':Sequelize[_0x852a('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index e9ba0c8..6aff099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3b3=['emit','hasOwnProperty','hook','exports','setMaxListeners','save','update','remove'];(function(_0x181e12,_0x96dfed){var _0x1644af=function(_0x435f35){while(--_0x435f35){_0x181e12['push'](_0x181e12['shift']());}};_0x1644af(++_0x96dfed);}(_0xa3b3,0x7c));var _0x3a3b=function(_0x467a1a,_0x366d45){_0x467a1a=_0x467a1a-0x0;var _0x66ca13=_0xa3b3[_0x467a1a];return _0x66ca13;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x3a3b('0x0')](0x0);var events={'afterCreate':_0x3a3b('0x1'),'afterUpdate':_0x3a3b('0x2'),'afterDestroy':_0x3a3b('0x3')};function emitEvent(_0x3eb0a5){return function(_0x4c3904,_0x333546,_0x62b7a1){UserVoiceQueueRtEvents['emit'](_0x3eb0a5+':'+_0x4c3904['id'],_0x4c3904);UserVoiceQueueRtEvents[_0x3a3b('0x4')](_0x3eb0a5,_0x4c3904);_0x62b7a1(null);};}for(var e in events){if(events[_0x3a3b('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x3a3b('0x6')](e,emitEvent(event));}}module[_0x3a3b('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xa2f8=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners','save'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xa2f8,0xcd));var _0x8a2f=function(_0x23c9d3,_0x2f8d5f){_0x23c9d3=_0x23c9d3-0x0;var _0x25fabd=_0xa2f8[_0x23c9d3];return _0x25fabd;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x8a2f('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x8a2f('0x1')](0x0);var events={'afterCreate':_0x8a2f('0x2'),'afterUpdate':_0x8a2f('0x3'),'afterDestroy':_0x8a2f('0x4')};function emitEvent(_0x3998ee){return function(_0x348c18,_0x51aa6f,_0x21222c){UserVoiceQueueRtEvents['emit'](_0x3998ee+':'+_0x348c18['id'],_0x348c18);UserVoiceQueueRtEvents[_0x8a2f('0x5')](_0x3998ee,_0x348c18);_0x21222c(null);};}for(var e in events){if(events[_0x8a2f('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0x8a2f('0x7')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index fcd08bb..3558743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d5f=['path','rimraf','../../config/environment','exports','define','UserVoiceQueueRt','lodash','../../config/logger','api','bluebird'];(function(_0x3dabe3,_0x4ea9a5){var _0x2a03e4=function(_0x3164ae){while(--_0x3164ae){_0x3dabe3['push'](_0x3dabe3['shift']());}};_0x2a03e4(++_0x4ea9a5);}(_0x9d5f,0x18c));var _0xf9d5=function(_0x52f59c,_0x5ae957){_0x52f59c=_0x52f59c-0x0;var _0x465932=_0x9d5f[_0x52f59c];return _0x465932;};'use strict';var _=require(_0xf9d5('0x0'));var util=require('util');var logger=require(_0xf9d5('0x1'))(_0xf9d5('0x2'));var moment=require('moment');var BPromise=require(_0xf9d5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf9d5('0x4'));var rimraf=require(_0xf9d5('0x5'));var config=require(_0xf9d5('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xf9d5('0x7')]=function(_0x2809da,_0x1b04b2){return _0x2809da[_0xf9d5('0x8')](_0xf9d5('0x9'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c51=['bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','define','user_has_voice_queues_rt','../../config/logger','api','moment'];(function(_0x4a5217,_0x29b6ea){var _0x383ae7=function(_0x152f88){while(--_0x152f88){_0x4a5217['push'](_0x4a5217['shift']());}};_0x383ae7(++_0x29b6ea);}(_0x2c51,0x81));var _0x12c5=function(_0x289675,_0xd14dff){_0x289675=_0x289675-0x0;var _0x25df38=_0x2c51[_0x289675];return _0x25df38;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x12c5('0x0'))(_0x12c5('0x1'));var moment=require(_0x12c5('0x2'));var BPromise=require(_0x12c5('0x3'));var rp=require(_0x12c5('0x4'));var fs=require('fs');var path=require(_0x12c5('0x5'));var rimraf=require(_0x12c5('0x6'));var config=require(_0x12c5('0x7'));var attributes=require(_0x12c5('0x8'));module['exports']=function(_0x50eda5,_0x4599ab){return _0x50eda5[_0x12c5('0x9')]('UserVoiceQueueRt',attributes,{'tableName':_0x12c5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e73167f..8a3f512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95a7=['redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UserVoiceQueueRt','findAll','options','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','GetVoiceQueueRtPauses','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0xeb1b7b,_0xf8231a){var _0x5458b9=function(_0xf8c907){while(--_0xf8c907){_0xeb1b7b['push'](_0xeb1b7b['shift']());}};_0x5458b9(++_0xf8231a);}(_0x95a7,0x17a));var _0x795a=function(_0x176765,_0x203ba2){_0x176765=_0x176765-0x0;var _0x5db122=_0x95a7[_0x176765];return _0x5db122;};'use strict';var _=require(_0x795a('0x0'));var util=require(_0x795a('0x1'));var moment=require(_0x795a('0x2'));var BPromise=require(_0x795a('0x3'));var rs=require(_0x795a('0x4'));var fs=require('fs');var Redis=require(_0x795a('0x5'));var db=require(_0x795a('0x6'))['db'];var utils=require(_0x795a('0x7'));var logger=require(_0x795a('0x8'))('rpc');var config=require(_0x795a('0x9'));var jayson=require(_0x795a('0xa'));var client=jayson[_0x795a('0xb')]['http']({'port':0x232a});config[_0x795a('0xc')]=_[_0x795a('0xd')](config[_0x795a('0xc')],{'host':_0x795a('0xe'),'port':0x18eb});var socket=require(_0x795a('0xf'))(new Redis(config[_0x795a('0xc')]));require(_0x795a('0x10'))[_0x795a('0x11')](socket);function respondWithRpcPromise(_0x578d30,_0x24553,_0x550d4c){return new BPromise(function(_0x1c1ecc,_0x4f620b){return client['request'](_0x578d30,_0x550d4c)['then'](function(_0x56f82f){logger[_0x795a('0x12')](_0x795a('0x13'),_0x24553,_0x795a('0x14'));logger['debug'](_0x795a('0x15'),_0x24553,_0x795a('0x14'),JSON[_0x795a('0x16')](_0x56f82f));if(_0x56f82f[_0x795a('0x17')]){if(_0x56f82f[_0x795a('0x17')][_0x795a('0x18')]===0x1f4){logger[_0x795a('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x24553,_0x56f82f[_0x795a('0x17')][_0x795a('0x19')]);return _0x4f620b(_0x56f82f[_0x795a('0x17')][_0x795a('0x19')]);}logger['error'](_0x795a('0x13'),_0x24553,_0x56f82f[_0x795a('0x17')]['message']);return _0x1c1ecc(_0x56f82f[_0x795a('0x17')][_0x795a('0x19')]);}else{logger[_0x795a('0x12')](_0x795a('0x13'),_0x24553,'request\x20sent');_0x1c1ecc(_0x56f82f[_0x795a('0x1a')][_0x795a('0x19')]);}})['catch'](function(_0x4e9caa){logger[_0x795a('0x17')](_0x795a('0x13'),_0x24553,_0x4e9caa);_0x4f620b(_0x4e9caa);});});}exports['GetVoiceQueueRtPauses']=function(_0x4b7f32){var _0x40ce6a=this;return new Promise(function(_0x385aab,_0x125b3e){return db[_0x795a('0x1b')][_0x795a('0x1c')]({'raw':_0x4b7f32[_0x795a('0x1d')]?_0x4b7f32[_0x795a('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x4b7f32[_0x795a('0x1d')]?_0x4b7f32[_0x795a('0x1d')][_0x795a('0x1e')]||null:null,'attributes':[[db['sequelize']['fn'](_0x795a('0x1f'),db[_0x795a('0x20')]['fn']('IF',db[_0x795a('0x20')][_0x795a('0x21')](_0x795a('0x22')))),_0x795a('0x23')]]})[_0x795a('0x24')](function(_0x1939d5){logger[_0x795a('0x12')](_0x795a('0x25'),_0x4b7f32);logger['debug'](_0x795a('0x25'),_0x4b7f32,JSON[_0x795a('0x16')](_0x1939d5));_0x385aab(_0x1939d5);})[_0x795a('0x26')](function(_0x5c70e7){logger[_0x795a('0x17')]('GetVoiceQueueRtPauses',_0x5c70e7[_0x795a('0x19')],_0x4b7f32);_0x125b3e(_0x40ce6a[_0x795a('0x17')](0x1f4,_0x5c70e7[_0x795a('0x19')]));});});};
\ No newline at end of file
+var _0x6c69=['info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then'];(function(_0x5f3ec8,_0x2243dd){var _0x1fee5f=function(_0x2c737a){while(--_0x2c737a){_0x5f3ec8['push'](_0x5f3ec8['shift']());}};_0x1fee5f(++_0x2243dd);}(_0x6c69,0x1c2));var _0x96c6=function(_0x36a073,_0x2ce3ce){_0x36a073=_0x36a073-0x0;var _0xc9762b=_0x6c69[_0x36a073];return _0xc9762b;};'use strict';var _=require('lodash');var util=require(_0x96c6('0x0'));var moment=require(_0x96c6('0x1'));var BPromise=require(_0x96c6('0x2'));var rs=require(_0x96c6('0x3'));var fs=require('fs');var Redis=require(_0x96c6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x96c6('0x5'));var logger=require(_0x96c6('0x6'))('rpc');var config=require(_0x96c6('0x7'));var jayson=require(_0x96c6('0x8'));var client=jayson[_0x96c6('0x9')]['http']({'port':0x232a});config[_0x96c6('0xa')]=_[_0x96c6('0xb')](config[_0x96c6('0xa')],{'host':_0x96c6('0xc'),'port':0x18eb});var socket=require(_0x96c6('0xd'))(new Redis(config[_0x96c6('0xa')]));require(_0x96c6('0xe'))[_0x96c6('0xf')](socket);function respondWithRpcPromise(_0xd58161,_0xfe11db,_0x5cbf75){return new BPromise(function(_0x46c2c1,_0x2605ee){return client[_0x96c6('0x10')](_0xd58161,_0x5cbf75)[_0x96c6('0x11')](function(_0x2798a6){logger[_0x96c6('0x12')](_0x96c6('0x13'),_0xfe11db,_0x96c6('0x14'));logger[_0x96c6('0x15')](_0x96c6('0x16'),_0xfe11db,_0x96c6('0x14'),JSON[_0x96c6('0x17')](_0x2798a6));if(_0x2798a6[_0x96c6('0x18')]){if(_0x2798a6[_0x96c6('0x18')][_0x96c6('0x19')]===0x1f4){logger[_0x96c6('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0xfe11db,_0x2798a6[_0x96c6('0x18')][_0x96c6('0x1a')]);return _0x2605ee(_0x2798a6[_0x96c6('0x18')]['message']);}logger[_0x96c6('0x18')](_0x96c6('0x13'),_0xfe11db,_0x2798a6[_0x96c6('0x18')][_0x96c6('0x1a')]);return _0x46c2c1(_0x2798a6[_0x96c6('0x18')]['message']);}else{logger[_0x96c6('0x12')](_0x96c6('0x13'),_0xfe11db,_0x96c6('0x14'));_0x46c2c1(_0x2798a6[_0x96c6('0x1b')][_0x96c6('0x1a')]);}})['catch'](function(_0x1ab319){logger[_0x96c6('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0xfe11db,_0x1ab319);_0x2605ee(_0x1ab319);});});}exports['GetVoiceQueueRtPauses']=function(_0x54013f){var _0x445af4=this;return new Promise(function(_0x18b2d7,_0x2b5d9d){return db['UserVoiceQueueRt'][_0x96c6('0x1c')]({'raw':_0x54013f[_0x96c6('0x1d')]?_0x54013f[_0x96c6('0x1d')][_0x96c6('0x1e')]===undefined?!![]:![]:!![],'where':_0x54013f[_0x96c6('0x1d')]?_0x54013f[_0x96c6('0x1d')][_0x96c6('0x1f')]||null:null,'attributes':[[db[_0x96c6('0x20')]['fn'](_0x96c6('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x96c6('0x22')](_0x96c6('0x23')))),_0x96c6('0x24')]]})[_0x96c6('0x11')](function(_0x22071d){logger[_0x96c6('0x12')](_0x96c6('0x25'),_0x54013f);logger[_0x96c6('0x15')](_0x96c6('0x25'),_0x54013f,JSON[_0x96c6('0x17')](_0x22071d));_0x18b2d7(_0x22071d);})[_0x96c6('0x26')](function(_0x3bbc57){logger[_0x96c6('0x18')](_0x96c6('0x25'),_0x3bbc57['message'],_0x54013f);_0x2b5d9d(_0x445af4[_0x96c6('0x18')](0x1f4,_0x3bbc57[_0x96c6('0x1a')]));});});};
\ No newline at end of file
index 9e02ab8..99105b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869e=['remove','emit','removeListener','register','userVoiceQueueRt:','./userVoiceQueueRt.events','save'];(function(_0x5998c7,_0x514254){var _0x321421=function(_0x2f0987){while(--_0x2f0987){_0x5998c7['push'](_0x5998c7['shift']());}};_0x321421(++_0x514254);}(_0x869e,0x15c));var _0xe869=function(_0x1c3fec,_0x3e8006){_0x1c3fec=_0x1c3fec-0x0;var _0x5a6b7b=_0x869e[_0x1c3fec];return _0x5a6b7b;};'use strict';var UserVoiceQueueRtEvents=require(_0xe869('0x0'));var events=[_0xe869('0x1'),_0xe869('0x2'),'update'];function createListener(_0x1984e4,_0x14dd86){return function(_0xb2e42a){_0x14dd86[_0xe869('0x3')](_0x1984e4,_0xb2e42a);};}function removeListener(_0x39fee6,_0x597771){return function(){UserVoiceQueueRtEvents[_0xe869('0x4')](_0x39fee6,_0x597771);};}exports[_0xe869('0x5')]=function(_0x26a223){for(var _0x26afde=0x0,_0x587ead=events['length'];_0x26afde<_0x587ead;_0x26afde++){var _0xb3936=events[_0x26afde];var _0x296feb=createListener(_0xe869('0x6')+_0xb3936,_0x26a223);UserVoiceQueueRtEvents['on'](_0xb3936,_0x296feb);}};
\ No newline at end of file
+var _0xe015=['emit','removeListener','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove'];(function(_0x2ed254,_0x4c469a){var _0x3ff1bd=function(_0x5dc84a){while(--_0x5dc84a){_0x2ed254['push'](_0x2ed254['shift']());}};_0x3ff1bd(++_0x4c469a);}(_0xe015,0x13b));var _0x5e01=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xe015[_0x138adb];return _0x1b27f2;};'use strict';var UserVoiceQueueRtEvents=require(_0x5e01('0x0'));var events=[_0x5e01('0x1'),_0x5e01('0x2'),'update'];function createListener(_0x51f689,_0x46ed0d){return function(_0x4e3569){_0x46ed0d[_0x5e01('0x3')](_0x51f689,_0x4e3569);};}function removeListener(_0x420f00,_0x7ce4b9){return function(){UserVoiceQueueRtEvents[_0x5e01('0x4')](_0x420f00,_0x7ce4b9);};}exports['register']=function(_0x1814cb){for(var _0x3d2da2=0x0,_0x4de678=events['length'];_0x3d2da2<_0x4de678;_0x3d2da2++){var _0x414f73=events[_0x3d2da2];var _0x3aeaef=createListener(_0x5e01('0x5')+_0x414f73,_0x1814cb);UserVoiceQueueRtEvents['on'](_0x414f73,_0x3aeaef);}};
\ No newline at end of file
index 691d38a..9aab137 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(_0x2d4ba9,_0x14314c){var _0x168d72=function(_0x472ae2){while(--_0x472ae2){_0x2d4ba9['push'](_0x2d4ba9['shift']());}};_0x168d72(++_0x14314c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0xf06ac2,_0x594f67){var _0x5bcc5a=function(_0x1ebf38){while(--_0x1ebf38){_0xf06ac2['push'](_0xf06ac2['shift']());}};_0x5bcc5a(++_0x594f67);}(_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 c6d5125..cadc6a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50e=['sequelize'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0xb50e,0xc6));var _0xeb50=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0xb50e[_0xd22d95];return _0x15d7a3;};'use strict';var Sequelize=require(_0xeb50('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfd8e=['sequelize','INTEGER'];(function(_0x437b02,_0x34b630){var _0xf8c681=function(_0x28f83e){while(--_0x28f83e){_0x437b02['push'](_0x437b02['shift']());}};_0xf8c681(++_0x34b630);}(_0xfd8e,0x1dc));var _0xefd8=function(_0x51f710,_0x5a5976){_0x51f710=_0x51f710-0x0;var _0x18647a=_0xfd8e[_0x51f710];return _0x18647a;};'use strict';var Sequelize=require(_0xefd8('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xefd8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 6a78f55..518e274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86e=['UserWhatsappQueue','user_has_whatsapp_queues','util','api','moment','bluebird','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define'];(function(_0x152563,_0x320b3e){var _0x4c9c55=function(_0x19a857){while(--_0x19a857){_0x152563['push'](_0x152563['shift']());}};_0x4c9c55(++_0x320b3e);}(_0xd86e,0x1ee));var _0xed86=function(_0x2d7e09,_0x16be83){_0x2d7e09=_0x2d7e09-0x0;var _0x1ba707=_0xd86e[_0x2d7e09];return _0x1ba707;};'use strict';var _=require('lodash');var util=require(_0xed86('0x0'));var logger=require('../../config/logger')(_0xed86('0x1'));var moment=require(_0xed86('0x2'));var BPromise=require(_0xed86('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed86('0x4'));var rimraf=require(_0xed86('0x5'));var config=require(_0xed86('0x6'));var attributes=require(_0xed86('0x7'));module[_0xed86('0x8')]=function(_0x126d93,_0x546693){return _0x126d93[_0xed86('0x9')](_0xed86('0xa'),attributes,{'tableName':_0xed86('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa57a=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userWhatsappQueue.attributes','exports','UserWhatsappQueue','user_has_whatsapp_queues','lodash'];(function(_0xeeb9db,_0x447a36){var _0x3cd5d1=function(_0x24449b){while(--_0x24449b){_0xeeb9db['push'](_0xeeb9db['shift']());}};_0x3cd5d1(++_0x447a36);}(_0xa57a,0x1e0));var _0xaa57=function(_0x3a0b2b,_0x298e60){_0x3a0b2b=_0x3a0b2b-0x0;var _0x3fc1ae=_0xa57a[_0x3a0b2b];return _0x3fc1ae;};'use strict';var _=require(_0xaa57('0x0'));var util=require(_0xaa57('0x1'));var logger=require(_0xaa57('0x2'))(_0xaa57('0x3'));var moment=require(_0xaa57('0x4'));var BPromise=require(_0xaa57('0x5'));var rp=require(_0xaa57('0x6'));var fs=require('fs');var path=require(_0xaa57('0x7'));var rimraf=require('rimraf');var config=require(_0xaa57('0x8'));var attributes=require(_0xaa57('0x9'));module[_0xaa57('0xa')]=function(_0x23c9c7,_0x1e7224){return _0x23c9c7['define'](_0xaa57('0xb'),attributes,{'tableName':_0xaa57('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc5a1c0..9b23462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd20=['request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x58fe86,_0x19655f){var _0x3f0732=function(_0x1d0b4a){while(--_0x1d0b4a){_0x58fe86['push'](_0x58fe86['shift']());}};_0x3f0732(++_0x19655f);}(_0xbd20,0xc4));var _0x0bd2=function(_0x21a2b3,_0x5d6564){_0x21a2b3=_0x21a2b3-0x0;var _0x4651a7=_0xbd20[_0x21a2b3];return _0x4651a7;};'use strict';var _=require(_0x0bd2('0x0'));var util=require(_0x0bd2('0x1'));var moment=require('moment');var BPromise=require(_0x0bd2('0x2'));var rs=require(_0x0bd2('0x3'));var fs=require('fs');var Redis=require(_0x0bd2('0x4'));var db=require(_0x0bd2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0bd2('0x6'))(_0x0bd2('0x7'));var config=require(_0x0bd2('0x8'));var jayson=require(_0x0bd2('0x9'));var client=jayson[_0x0bd2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2131b2,_0x2e10d7,_0x554f99){return new BPromise(function(_0xe8e85f,_0x3e2ecd){return client[_0x0bd2('0xb')](_0x2131b2,_0x554f99)[_0x0bd2('0xc')](function(_0x2dca95){logger[_0x0bd2('0xd')](_0x0bd2('0xe'),_0x2e10d7,_0x0bd2('0xf'));logger['debug'](_0x0bd2('0x10'),_0x2e10d7,_0x0bd2('0xf'),JSON[_0x0bd2('0x11')](_0x2dca95));if(_0x2dca95[_0x0bd2('0x12')]){if(_0x2dca95['error'][_0x0bd2('0x13')]===0x1f4){logger[_0x0bd2('0x12')](_0x0bd2('0xe'),_0x2e10d7,_0x2dca95[_0x0bd2('0x12')][_0x0bd2('0x14')]);return _0x3e2ecd(_0x2dca95[_0x0bd2('0x12')][_0x0bd2('0x14')]);}logger[_0x0bd2('0x12')](_0x0bd2('0xe'),_0x2e10d7,_0x2dca95[_0x0bd2('0x12')]['message']);return _0xe8e85f(_0x2dca95['error']['message']);}else{logger['info'](_0x0bd2('0xe'),_0x2e10d7,_0x0bd2('0xf'));_0xe8e85f(_0x2dca95[_0x0bd2('0x15')][_0x0bd2('0x14')]);}})[_0x0bd2('0x16')](function(_0x57b551){logger[_0x0bd2('0x12')](_0x0bd2('0xe'),_0x2e10d7,_0x57b551);_0x3e2ecd(_0x57b551);});});}
\ No newline at end of file
+var _0xb7c7=['moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash'];(function(_0x6fa53f,_0x146a55){var _0xe97124=function(_0x1450a8){while(--_0x1450a8){_0x6fa53f['push'](_0x6fa53f['shift']());}};_0xe97124(++_0x146a55);}(_0xb7c7,0x1a3));var _0x7b7c=function(_0x13137e,_0x29c0f3){_0x13137e=_0x13137e-0x0;var _0x346261=_0xb7c7[_0x13137e];return _0x346261;};'use strict';var _=require(_0x7b7c('0x0'));var util=require('util');var moment=require(_0x7b7c('0x1'));var BPromise=require(_0x7b7c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7b7c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7b7c('0x4'));var logger=require(_0x7b7c('0x5'))(_0x7b7c('0x6'));var config=require(_0x7b7c('0x7'));var jayson=require(_0x7b7c('0x8'));var client=jayson['client'][_0x7b7c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc0f5ee,_0x7d7f5d,_0x3e4eaf){return new BPromise(function(_0x40bb76,_0x570433){return client[_0x7b7c('0xa')](_0xc0f5ee,_0x3e4eaf)[_0x7b7c('0xb')](function(_0x38769a){logger[_0x7b7c('0xc')](_0x7b7c('0xd'),_0x7d7f5d,_0x7b7c('0xe'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x7d7f5d,'request\x20sent',JSON[_0x7b7c('0xf')](_0x38769a));if(_0x38769a[_0x7b7c('0x10')]){if(_0x38769a[_0x7b7c('0x10')]['code']===0x1f4){logger[_0x7b7c('0x10')](_0x7b7c('0xd'),_0x7d7f5d,_0x38769a[_0x7b7c('0x10')][_0x7b7c('0x11')]);return _0x570433(_0x38769a[_0x7b7c('0x10')]['message']);}logger[_0x7b7c('0x10')](_0x7b7c('0xd'),_0x7d7f5d,_0x38769a[_0x7b7c('0x10')][_0x7b7c('0x11')]);return _0x40bb76(_0x38769a[_0x7b7c('0x10')][_0x7b7c('0x11')]);}else{logger[_0x7b7c('0xc')](_0x7b7c('0xd'),_0x7d7f5d,_0x7b7c('0xe'));_0x40bb76(_0x38769a[_0x7b7c('0x12')][_0x7b7c('0x11')]);}})[_0x7b7c('0x13')](function(_0x200441){logger['error'](_0x7b7c('0xd'),_0x7d7f5d,_0x200441);_0x570433(_0x200441);});});}
\ No newline at end of file
index 42fd8c8..1aec820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202c=['../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','connect-timeout','express','Router'];(function(_0xf482c1,_0x32cbca){var _0x184548=function(_0x2f8086){while(--_0x2f8086){_0xf482c1['push'](_0xf482c1['shift']());}};_0x184548(++_0x32cbca);}(_0x202c,0x178));var _0xc202=function(_0x416ca3,_0x22ed17){_0x416ca3=_0x416ca3-0x0;var _0x894f17=_0x202c[_0x416ca3];return _0x894f17;};'use strict';var multer=require(_0xc202('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc202('0x1'));var express=require(_0xc202('0x2'));var router=express[_0xc202('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc202('0x4'));var interaction=require(_0xc202('0x5'));var config=require(_0xc202('0x6'));var controller=require(_0xc202('0x7'));router['get']('/',auth[_0xc202('0x8')](),controller[_0xc202('0x9')]);router['get'](_0xc202('0xa'),auth['isAuthenticated'](),controller[_0xc202('0xb')]);router[_0xc202('0xc')]('/',auth[_0xc202('0x8')](),controller[_0xc202('0xd')]);router[_0xc202('0xe')](_0xc202('0xa'),auth[_0xc202('0x8')](),controller[_0xc202('0xf')]);router[_0xc202('0x10')](_0xc202('0xa'),auth[_0xc202('0x8')](),controller[_0xc202('0x11')]);module[_0xc202('0x12')]=router;
\ No newline at end of file
+var _0xa7dc=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','post','create','update','delete','destroy','multer','util','path'];(function(_0x13d6d4,_0x466bfe){var _0x4fe709=function(_0x4e40ce){while(--_0x4e40ce){_0x13d6d4['push'](_0x13d6d4['shift']());}};_0x4fe709(++_0x466bfe);}(_0xa7dc,0x11d));var _0xca7d=function(_0x46aff6,_0x1881cf){_0x46aff6=_0x46aff6-0x0;var _0x3d2037=_0xa7dc[_0x46aff6];return _0x3d2037;};'use strict';var multer=require(_0xca7d('0x0'));var util=require(_0xca7d('0x1'));var path=require(_0xca7d('0x2'));var timeout=require('connect-timeout');var express=require(_0xca7d('0x3'));var router=express['Router']();var fs_extra=require(_0xca7d('0x4'));var auth=require(_0xca7d('0x5'));var interaction=require(_0xca7d('0x6'));var config=require(_0xca7d('0x7'));var controller=require(_0xca7d('0x8'));router[_0xca7d('0x9')]('/',auth[_0xca7d('0xa')](),controller[_0xca7d('0xb')]);router['get'](_0xca7d('0xc'),auth[_0xca7d('0xa')](),controller['show']);router[_0xca7d('0xd')]('/',auth[_0xca7d('0xa')](),controller[_0xca7d('0xe')]);router['put'](_0xca7d('0xc'),auth[_0xca7d('0xa')](),controller[_0xca7d('0xf')]);router[_0xca7d('0x10')](_0xca7d('0xc'),auth['isAuthenticated'](),controller[_0xca7d('0x11')]);module['exports']=router;
\ No newline at end of file
index 88b791b..d963383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed5a=['STRING','name','sequelize','exports'];(function(_0x56813d,_0x446e5e){var _0x1ed1da=function(_0x169360){while(--_0x169360){_0x56813d['push'](_0x56813d['shift']());}};_0x1ed1da(++_0x446e5e);}(_0xed5a,0xb6));var _0xaed5=function(_0x507403,_0x3f954d){_0x507403=_0x507403-0x0;var _0x1327c=_0xed5a[_0x507403];return _0x1327c;};'use strict';var Sequelize=require(_0xaed5('0x0'));module[_0xaed5('0x1')]={'name':{'type':Sequelize[_0xaed5('0x2')],'unique':_0xaed5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xaed5('0x2')]}};
\ No newline at end of file
+var _0xe50f=['sequelize','name','STRING'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xe50f,0x1b9));var _0xfe50=function(_0x5ae3e4,_0x1a2ec4){_0x5ae3e4=_0x5ae3e4-0x0;var _0x1fd763=_0xe50f[_0x5ae3e4];return _0x1fd763;};'use strict';var Sequelize=require(_0xfe50('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xfe50('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xfe50('0x2')]}};
\ No newline at end of file
index 3c23d19..8ab126c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea5a=['role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Variables','UserProfileResource','error','stack','name','index','map','Variable','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','length','find','catch','create','body','user'];(function(_0x409ef8,_0x238031){var _0x39b747=function(_0x290810){while(--_0x290810){_0x409ef8['push'](_0x409ef8['shift']());}};_0x39b747(++_0x238031);}(_0xea5a,0x16e));var _0xaea5=function(_0x4df6ba,_0x477c3e){_0x4df6ba=_0x4df6ba-0x0;var _0x472acf=_0xea5a[_0x4df6ba];return _0x472acf;};'use strict';var emlformat=require(_0xaea5('0x0'));var rimraf=require(_0xaea5('0x1'));var zipdir=require(_0xaea5('0x2'));var jsonpatch=require(_0xaea5('0x3'));var rp=require(_0xaea5('0x4'));var moment=require(_0xaea5('0x5'));var BPromise=require(_0xaea5('0x6'));var Mustache=require(_0xaea5('0x7'));var util=require(_0xaea5('0x8'));var path=require(_0xaea5('0x9'));var sox=require('sox');var csv=require(_0xaea5('0xa'));var ejs=require(_0xaea5('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaea5('0xc'));var squel=require(_0xaea5('0xd'));var crypto=require(_0xaea5('0xe'));var jsforce=require(_0xaea5('0xf'));var deskjs=require(_0xaea5('0x10'));var toCsv=require(_0xaea5('0xa'));var querystring=require(_0xaea5('0x11'));var Papa=require(_0xaea5('0x12'));var Redis=require(_0xaea5('0x13'));var authService=require(_0xaea5('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xaea5('0x15'));var hardwareService=require(_0xaea5('0x16'));var logger=require('../../config/logger')(_0xaea5('0x17'));var utils=require(_0xaea5('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xaea5('0x19'));var db=require(_0xaea5('0x1a'))['db'];function respondWithStatusCode(_0x4b3f3a,_0x54cdc6){_0x54cdc6=_0x54cdc6||0xcc;return function(_0x5124e7){if(_0x5124e7){return _0x4b3f3a[_0xaea5('0x1b')](_0x54cdc6);}return _0x4b3f3a[_0xaea5('0x1c')](_0x54cdc6)[_0xaea5('0x1d')]();};}function respondWithResult(_0x2bcdba,_0x2b3f08){_0x2b3f08=_0x2b3f08||0xc8;return function(_0x4adff9){if(_0x4adff9){return _0x2bcdba[_0xaea5('0x1c')](_0x2b3f08)[_0xaea5('0x1e')](_0x4adff9);}};}function respondWithFilteredResult(_0x45c816,_0x36a959){return function(_0x2a8683){if(_0x2a8683){var _0xcdabb6=typeof _0x36a959[_0xaea5('0x1f')]===_0xaea5('0x20')&&typeof _0x36a959[_0xaea5('0x21')]===_0xaea5('0x20');var _0x874c1d=_0x2a8683[_0xaea5('0x22')];var _0x2986db=_0xcdabb6?0x0:_0x36a959[_0xaea5('0x1f')];var _0x18af42=_0xcdabb6?_0x2a8683[_0xaea5('0x22')]:_0x36a959['offset']+_0x36a959['limit'];var _0x18ba8d;if(_0x18af42>=_0x874c1d){_0x18af42=_0x874c1d;_0x18ba8d=0xc8;}else{_0x18ba8d=0xce;}_0x45c816[_0xaea5('0x1c')](_0x18ba8d);return _0x45c816[_0xaea5('0x23')](_0xaea5('0x24'),_0x2986db+'-'+_0x18af42+'/'+_0x874c1d)[_0xaea5('0x1e')](_0x2a8683);}return null;};}function patchUpdates(_0x1609a4){return function(_0xe9a358){try{jsonpatch[_0xaea5('0x25')](_0xe9a358,_0x1609a4,!![]);}catch(_0x539be4){return BPromise[_0xaea5('0x26')](_0x539be4);}return _0xe9a358[_0xaea5('0x27')]();};}function saveUpdates(_0x3fcb32,_0x13f69b){return function(_0x2c7ccc){if(_0x2c7ccc){return _0x2c7ccc[_0xaea5('0x28')](_0x3fcb32)[_0xaea5('0x29')](function(_0x5071f5){return _0x5071f5;});}return null;};}function removeEntity(_0x22a902,_0x3fe6e4){return function(_0x2b145f){if(_0x2b145f){return _0x2b145f[_0xaea5('0x2a')]()[_0xaea5('0x29')](function(){var _0x1f7e45=_0x2b145f[_0xaea5('0x2b')]({'plain':!![]});var _0x5b1217=_0xaea5('0x2c');return db[_0xaea5('0x2d')][_0xaea5('0x2a')]({'where':{'type':_0x5b1217,'resourceId':_0x1f7e45['id']}})[_0xaea5('0x29')](function(){return _0x2b145f;});})[_0xaea5('0x29')](function(){_0x22a902['status'](0xcc)[_0xaea5('0x1d')]();});}};}function handleEntityNotFound(_0x268b9b,_0x1833ff){return function(_0x19e6f1){if(!_0x19e6f1){_0x268b9b[_0xaea5('0x1b')](0x194);}return _0x19e6f1;};}function handleError(_0x53ea83,_0xae5fb0){_0xae5fb0=_0xae5fb0||0x1f4;return function(_0x47fc6b){logger[_0xaea5('0x2e')](_0x47fc6b[_0xaea5('0x2f')]);if(_0x47fc6b[_0xaea5('0x30')]){delete _0x47fc6b[_0xaea5('0x30')];}_0x53ea83[_0xaea5('0x1c')](_0xae5fb0)['send'](_0x47fc6b);};}exports[_0xaea5('0x31')]=function(_0x57418f,_0x57b73e){var _0x5c9f0e={},_0x197921={},_0x856711={'count':0x0,'rows':[]};var _0x557873=_[_0xaea5('0x32')](db[_0xaea5('0x33')][_0xaea5('0x34')],function(_0x3fe535){return{'name':_0x3fe535[_0xaea5('0x35')],'type':_0x3fe535[_0xaea5('0x36')][_0xaea5('0x37')]};});_0x197921[_0xaea5('0x38')]=_[_0xaea5('0x32')](_0x557873,_0xaea5('0x30'));_0x197921[_0xaea5('0x39')]=_['keys'](_0x57418f['query']);_0x197921['filters']=_[_0xaea5('0x3a')](_0x197921[_0xaea5('0x38')],_0x197921[_0xaea5('0x39')]);_0x5c9f0e[_0xaea5('0x3b')]=_[_0xaea5('0x3a')](_0x197921[_0xaea5('0x38')],qs[_0xaea5('0x3c')](_0x57418f['query'][_0xaea5('0x3c')]));_0x5c9f0e[_0xaea5('0x3b')]=_0x5c9f0e['attributes']['length']?_0x5c9f0e[_0xaea5('0x3b')]:_0x197921[_0xaea5('0x38')];if(!_0x57418f[_0xaea5('0x39')][_0xaea5('0x3d')](_0xaea5('0x3e'))){_0x5c9f0e[_0xaea5('0x21')]=qs[_0xaea5('0x21')](_0x57418f['query'][_0xaea5('0x21')]);_0x5c9f0e[_0xaea5('0x1f')]=qs[_0xaea5('0x1f')](_0x57418f[_0xaea5('0x39')]['offset']);}_0x5c9f0e[_0xaea5('0x3f')]=qs[_0xaea5('0x40')](_0x57418f[_0xaea5('0x39')]['sort']);_0x5c9f0e['where']=qs[_0xaea5('0x41')](_[_0xaea5('0x42')](_0x57418f[_0xaea5('0x39')],_0x197921[_0xaea5('0x41')]),_0x557873);if(_0x57418f[_0xaea5('0x39')][_0xaea5('0x43')]){_0x5c9f0e[_0xaea5('0x44')]=_[_0xaea5('0x45')](_0x5c9f0e[_0xaea5('0x44')],{'$or':_[_0xaea5('0x32')](_0x557873,function(_0x1eb5ee){if(_0x1eb5ee[_0xaea5('0x36')]!==_0xaea5('0x46')){var _0x1420e1={};_0x1420e1[_0x1eb5ee['name']]={'$like':'%'+_0x57418f[_0xaea5('0x39')][_0xaea5('0x43')]+'%'};return _0x1420e1;}})});}_0x5c9f0e=_['merge']({},_0x5c9f0e,_0x57418f[_0xaea5('0x47')]);var _0x1a6c6a={'where':_0x5c9f0e[_0xaea5('0x44')]};return db[_0xaea5('0x33')]['count'](_0x1a6c6a)[_0xaea5('0x29')](function(_0x4d000d){_0x856711[_0xaea5('0x22')]=_0x4d000d;if(_0x57418f[_0xaea5('0x39')][_0xaea5('0x48')]){_0x5c9f0e[_0xaea5('0x49')]=[{'all':!![]}];}return db['Variable'][_0xaea5('0x4a')](_0x5c9f0e);})[_0xaea5('0x29')](function(_0x56c413){_0x856711[_0xaea5('0x4b')]=_0x56c413;return _0x856711;})[_0xaea5('0x29')](respondWithFilteredResult(_0x57b73e,_0x5c9f0e))['catch'](handleError(_0x57b73e,null));};exports[_0xaea5('0x4c')]=function(_0x282de8,_0x14e9a8){var _0x3fc49c={'raw':!![],'where':{'id':_0x282de8['params']['id']}},_0x329526={};_0x329526[_0xaea5('0x38')]=_[_0xaea5('0x4d')](db[_0xaea5('0x33')][_0xaea5('0x34')]);_0x329526['query']=_[_0xaea5('0x4d')](_0x282de8[_0xaea5('0x39')]);_0x329526[_0xaea5('0x41')]=_[_0xaea5('0x3a')](_0x329526[_0xaea5('0x38')],_0x329526['query']);_0x3fc49c[_0xaea5('0x3b')]=_['intersection'](_0x329526[_0xaea5('0x38')],qs[_0xaea5('0x3c')](_0x282de8[_0xaea5('0x39')]['fields']));_0x3fc49c[_0xaea5('0x3b')]=_0x3fc49c['attributes'][_0xaea5('0x4e')]?_0x3fc49c[_0xaea5('0x3b')]:_0x329526[_0xaea5('0x38')];if(_0x282de8[_0xaea5('0x39')][_0xaea5('0x48')]){_0x3fc49c['include']=[{'all':!![]}];}_0x3fc49c=_[_0xaea5('0x45')]({},_0x3fc49c,_0x282de8[_0xaea5('0x47')]);return db[_0xaea5('0x33')][_0xaea5('0x4f')](_0x3fc49c)['then'](handleEntityNotFound(_0x14e9a8,null))[_0xaea5('0x29')](respondWithResult(_0x14e9a8,null))[_0xaea5('0x50')](handleError(_0x14e9a8,null));};exports['create']=function(_0x2d6181,_0x145887){return db[_0xaea5('0x33')][_0xaea5('0x51')](_0x2d6181[_0xaea5('0x52')],{})[_0xaea5('0x29')](function(_0x1278fb){var _0x1e0b88=_0x2d6181[_0xaea5('0x53')][_0xaea5('0x2b')]({'plain':!![]});if(!_0x1e0b88)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e0b88[_0xaea5('0x54')]==='user'){var _0x235b28=_0x1278fb[_0xaea5('0x2b')]({'plain':!![]});var _0x5140dd=_0xaea5('0x2c');return db[_0xaea5('0x55')][_0xaea5('0x4f')]({'where':{'name':_0x5140dd,'userProfileId':_0x1e0b88[_0xaea5('0x56')]},'raw':!![]})[_0xaea5('0x29')](function(_0x483cd9){if(_0x483cd9&&_0x483cd9[_0xaea5('0x57')]===0x0){return db[_0xaea5('0x2d')][_0xaea5('0x51')]({'name':_0x235b28[_0xaea5('0x30')],'resourceId':_0x235b28['id'],'type':_0x483cd9['name'],'sectionId':_0x483cd9['id']},{})[_0xaea5('0x29')](function(){return _0x1278fb;});}else{return _0x1278fb;}})[_0xaea5('0x50')](function(_0x10127c){logger[_0xaea5('0x2e')](_0xaea5('0x58'),_0x10127c);throw _0x10127c;});}return _0x1278fb;})[_0xaea5('0x29')](respondWithResult(_0x145887,0xc9))[_0xaea5('0x50')](handleError(_0x145887,null));};exports[_0xaea5('0x28')]=function(_0x139e10,_0x9f4551){if(_0x139e10[_0xaea5('0x52')]['id']){delete _0x139e10[_0xaea5('0x52')]['id'];}return db[_0xaea5('0x33')][_0xaea5('0x4f')]({'where':{'id':_0x139e10[_0xaea5('0x59')]['id']}})[_0xaea5('0x29')](handleEntityNotFound(_0x9f4551,null))['then'](saveUpdates(_0x139e10[_0xaea5('0x52')],null))[_0xaea5('0x29')](respondWithResult(_0x9f4551,null))[_0xaea5('0x50')](handleError(_0x9f4551,null));};exports[_0xaea5('0x2a')]=function(_0x5358b9,_0x1f7e6c){return db['Variable'][_0xaea5('0x4f')]({'where':{'id':_0x5358b9[_0xaea5('0x59')]['id']}})[_0xaea5('0x29')](handleEntityNotFound(_0x1f7e6c,null))[_0xaea5('0x29')](removeEntity(_0x1f7e6c,null))[_0xaea5('0x50')](handleError(_0x1f7e6c,null));};
\ No newline at end of file
+var _0xa6d6=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','get','Variables','error','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','Variable','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x8a4c7f,_0x22a75d){var _0x2a86e0=function(_0x10bc63){while(--_0x10bc63){_0x8a4c7f['push'](_0x8a4c7f['shift']());}};_0x2a86e0(++_0x22a75d);}(_0xa6d6,0x94));var _0x6a6d=function(_0x5e064f,_0x2018e9){_0x5e064f=_0x5e064f-0x0;var _0x5d4780=_0xa6d6[_0x5e064f];return _0x5d4780;};'use strict';var emlformat=require(_0x6a6d('0x0'));var rimraf=require(_0x6a6d('0x1'));var zipdir=require(_0x6a6d('0x2'));var jsonpatch=require(_0x6a6d('0x3'));var rp=require(_0x6a6d('0x4'));var moment=require(_0x6a6d('0x5'));var BPromise=require(_0x6a6d('0x6'));var Mustache=require('mustache');var util=require(_0x6a6d('0x7'));var path=require(_0x6a6d('0x8'));var sox=require(_0x6a6d('0x9'));var csv=require(_0x6a6d('0xa'));var ejs=require(_0x6a6d('0xb'));var fs=require('fs');var fs_extra=require(_0x6a6d('0xc'));var _=require('lodash');var squel=require(_0x6a6d('0xd'));var crypto=require('crypto');var jsforce=require(_0x6a6d('0xe'));var deskjs=require(_0x6a6d('0xf'));var toCsv=require(_0x6a6d('0xa'));var querystring=require(_0x6a6d('0x10'));var Papa=require(_0x6a6d('0x11'));var Redis=require(_0x6a6d('0x12'));var authService=require(_0x6a6d('0x13'));var qs=require(_0x6a6d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6a6d('0x15'));var logger=require(_0x6a6d('0x16'))('api');var utils=require(_0x6a6d('0x17'));var config=require(_0x6a6d('0x18'));var licenseUtil=require(_0x6a6d('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x167eff,_0x2dd0dd){_0x2dd0dd=_0x2dd0dd||0xcc;return function(_0x7679dd){if(_0x7679dd){return _0x167eff[_0x6a6d('0x1a')](_0x2dd0dd);}return _0x167eff[_0x6a6d('0x1b')](_0x2dd0dd)[_0x6a6d('0x1c')]();};}function respondWithResult(_0x18434a,_0x4a6226){_0x4a6226=_0x4a6226||0xc8;return function(_0x498d7c){if(_0x498d7c){return _0x18434a[_0x6a6d('0x1b')](_0x4a6226)['json'](_0x498d7c);}};}function respondWithFilteredResult(_0x1a45d7,_0x3862b7){return function(_0x15430d){if(_0x15430d){var _0x4e20b7=typeof _0x3862b7[_0x6a6d('0x1d')]===_0x6a6d('0x1e')&&typeof _0x3862b7[_0x6a6d('0x1f')]===_0x6a6d('0x1e');var _0xf95f97=_0x15430d[_0x6a6d('0x20')];var _0x2b9685=_0x4e20b7?0x0:_0x3862b7['offset'];var _0x2d342b=_0x4e20b7?_0x15430d[_0x6a6d('0x20')]:_0x3862b7['offset']+_0x3862b7[_0x6a6d('0x1f')];var _0xb8bb23;if(_0x2d342b>=_0xf95f97){_0x2d342b=_0xf95f97;_0xb8bb23=0xc8;}else{_0xb8bb23=0xce;}_0x1a45d7[_0x6a6d('0x1b')](_0xb8bb23);return _0x1a45d7['set'](_0x6a6d('0x21'),_0x2b9685+'-'+_0x2d342b+'/'+_0xf95f97)[_0x6a6d('0x22')](_0x15430d);}return null;};}function patchUpdates(_0x4893fa){return function(_0x5349bc){try{jsonpatch[_0x6a6d('0x23')](_0x5349bc,_0x4893fa,!![]);}catch(_0x9c31dc){return BPromise[_0x6a6d('0x24')](_0x9c31dc);}return _0x5349bc['save']();};}function saveUpdates(_0x5494f8,_0x231e6b){return function(_0x490119){if(_0x490119){return _0x490119[_0x6a6d('0x25')](_0x5494f8)['then'](function(_0x10b05e){return _0x10b05e;});}return null;};}function removeEntity(_0x12087b,_0x15f1f4){return function(_0x54c86f){if(_0x54c86f){return _0x54c86f[_0x6a6d('0x26')]()[_0x6a6d('0x27')](function(){var _0x4ceb4a=_0x54c86f[_0x6a6d('0x28')]({'plain':!![]});var _0x59bbbb=_0x6a6d('0x29');return db['UserProfileResource'][_0x6a6d('0x26')]({'where':{'type':_0x59bbbb,'resourceId':_0x4ceb4a['id']}})[_0x6a6d('0x27')](function(){return _0x54c86f;});})[_0x6a6d('0x27')](function(){_0x12087b['status'](0xcc)[_0x6a6d('0x1c')]();});}};}function handleEntityNotFound(_0x2339dd,_0x2655ef){return function(_0x3eb9cd){if(!_0x3eb9cd){_0x2339dd[_0x6a6d('0x1a')](0x194);}return _0x3eb9cd;};}function handleError(_0x4a9df1,_0x2b1d60){_0x2b1d60=_0x2b1d60||0x1f4;return function(_0x5609c2){logger[_0x6a6d('0x2a')](_0x5609c2['stack']);if(_0x5609c2[_0x6a6d('0x2b')]){delete _0x5609c2[_0x6a6d('0x2b')];}_0x4a9df1['status'](_0x2b1d60)[_0x6a6d('0x2c')](_0x5609c2);};}exports[_0x6a6d('0x2d')]=function(_0x3f999e,_0x3ec98d){var _0x44e4cf={},_0x22ecfb={},_0x50343d={'count':0x0,'rows':[]};var _0x331f35=_['map'](db['Variable'][_0x6a6d('0x2e')],function(_0x164219){return{'name':_0x164219[_0x6a6d('0x2f')],'type':_0x164219[_0x6a6d('0x30')][_0x6a6d('0x31')]};});_0x22ecfb[_0x6a6d('0x32')]=_['map'](_0x331f35,_0x6a6d('0x2b'));_0x22ecfb[_0x6a6d('0x33')]=_[_0x6a6d('0x34')](_0x3f999e[_0x6a6d('0x33')]);_0x22ecfb[_0x6a6d('0x35')]=_[_0x6a6d('0x36')](_0x22ecfb[_0x6a6d('0x32')],_0x22ecfb[_0x6a6d('0x33')]);_0x44e4cf[_0x6a6d('0x37')]=_[_0x6a6d('0x36')](_0x22ecfb['model'],qs[_0x6a6d('0x38')](_0x3f999e['query'][_0x6a6d('0x38')]));_0x44e4cf[_0x6a6d('0x37')]=_0x44e4cf[_0x6a6d('0x37')]['length']?_0x44e4cf[_0x6a6d('0x37')]:_0x22ecfb['model'];if(!_0x3f999e['query'][_0x6a6d('0x39')]('nolimit')){_0x44e4cf[_0x6a6d('0x1f')]=qs[_0x6a6d('0x1f')](_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x1f')]);_0x44e4cf[_0x6a6d('0x1d')]=qs[_0x6a6d('0x1d')](_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x1d')]);}_0x44e4cf[_0x6a6d('0x3a')]=qs[_0x6a6d('0x3b')](_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x3b')]);_0x44e4cf[_0x6a6d('0x3c')]=qs['filters'](_[_0x6a6d('0x3d')](_0x3f999e['query'],_0x22ecfb['filters']),_0x331f35);if(_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x3e')]){_0x44e4cf[_0x6a6d('0x3c')]=_['merge'](_0x44e4cf[_0x6a6d('0x3c')],{'$or':_['map'](_0x331f35,function(_0x2e5a54){if(_0x2e5a54[_0x6a6d('0x30')]!==_0x6a6d('0x3f')){var _0x4e7110={};_0x4e7110[_0x2e5a54[_0x6a6d('0x2b')]]={'$like':'%'+_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x3e')]+'%'};return _0x4e7110;}})});}_0x44e4cf=_[_0x6a6d('0x40')]({},_0x44e4cf,_0x3f999e['options']);var _0x33d62a={'where':_0x44e4cf[_0x6a6d('0x3c')]};return db[_0x6a6d('0x41')]['count'](_0x33d62a)[_0x6a6d('0x27')](function(_0x4e5b92){_0x50343d[_0x6a6d('0x20')]=_0x4e5b92;if(_0x3f999e[_0x6a6d('0x33')][_0x6a6d('0x42')]){_0x44e4cf[_0x6a6d('0x43')]=[{'all':!![]}];}return db[_0x6a6d('0x41')][_0x6a6d('0x44')](_0x44e4cf);})[_0x6a6d('0x27')](function(_0x46797a){_0x50343d[_0x6a6d('0x45')]=_0x46797a;return _0x50343d;})['then'](respondWithFilteredResult(_0x3ec98d,_0x44e4cf))[_0x6a6d('0x46')](handleError(_0x3ec98d,null));};exports[_0x6a6d('0x47')]=function(_0x24002b,_0x45a57f){var _0x7a8c07={'raw':!![],'where':{'id':_0x24002b[_0x6a6d('0x48')]['id']}},_0x15da9b={};_0x15da9b[_0x6a6d('0x32')]=_[_0x6a6d('0x34')](db[_0x6a6d('0x41')]['rawAttributes']);_0x15da9b[_0x6a6d('0x33')]=_[_0x6a6d('0x34')](_0x24002b[_0x6a6d('0x33')]);_0x15da9b['filters']=_['intersection'](_0x15da9b[_0x6a6d('0x32')],_0x15da9b[_0x6a6d('0x33')]);_0x7a8c07[_0x6a6d('0x37')]=_[_0x6a6d('0x36')](_0x15da9b[_0x6a6d('0x32')],qs[_0x6a6d('0x38')](_0x24002b[_0x6a6d('0x33')][_0x6a6d('0x38')]));_0x7a8c07[_0x6a6d('0x37')]=_0x7a8c07[_0x6a6d('0x37')]['length']?_0x7a8c07[_0x6a6d('0x37')]:_0x15da9b['model'];if(_0x24002b[_0x6a6d('0x33')][_0x6a6d('0x42')]){_0x7a8c07[_0x6a6d('0x43')]=[{'all':!![]}];}_0x7a8c07=_[_0x6a6d('0x40')]({},_0x7a8c07,_0x24002b[_0x6a6d('0x49')]);return db[_0x6a6d('0x41')][_0x6a6d('0x4a')](_0x7a8c07)[_0x6a6d('0x27')](handleEntityNotFound(_0x45a57f,null))[_0x6a6d('0x27')](respondWithResult(_0x45a57f,null))[_0x6a6d('0x46')](handleError(_0x45a57f,null));};exports[_0x6a6d('0x4b')]=function(_0x99d8e0,_0x20ac3c){return db[_0x6a6d('0x41')][_0x6a6d('0x4b')](_0x99d8e0[_0x6a6d('0x4c')],{})[_0x6a6d('0x27')](function(_0xc21bdb){var _0x2f0d20=_0x99d8e0[_0x6a6d('0x4d')][_0x6a6d('0x28')]({'plain':!![]});if(!_0x2f0d20)throw new Error(_0x6a6d('0x4e'));if(_0x2f0d20[_0x6a6d('0x4f')]===_0x6a6d('0x4d')){var _0x5bab91=_0xc21bdb[_0x6a6d('0x28')]({'plain':!![]});var _0x5306d8=_0x6a6d('0x29');return db['UserProfileSection'][_0x6a6d('0x4a')]({'where':{'name':_0x5306d8,'userProfileId':_0x2f0d20[_0x6a6d('0x50')]},'raw':!![]})['then'](function(_0x35f001){if(_0x35f001&&_0x35f001[_0x6a6d('0x51')]===0x0){return db[_0x6a6d('0x52')]['create']({'name':_0x5bab91[_0x6a6d('0x2b')],'resourceId':_0x5bab91['id'],'type':_0x35f001[_0x6a6d('0x2b')],'sectionId':_0x35f001['id']},{})[_0x6a6d('0x27')](function(){return _0xc21bdb;});}else{return _0xc21bdb;}})['catch'](function(_0x2e35da){logger[_0x6a6d('0x2a')](_0x6a6d('0x53'),_0x2e35da);throw _0x2e35da;});}return _0xc21bdb;})[_0x6a6d('0x27')](respondWithResult(_0x20ac3c,0xc9))[_0x6a6d('0x46')](handleError(_0x20ac3c,null));};exports[_0x6a6d('0x25')]=function(_0x25e4fa,_0x5545d1){if(_0x25e4fa[_0x6a6d('0x4c')]['id']){delete _0x25e4fa[_0x6a6d('0x4c')]['id'];}return db['Variable'][_0x6a6d('0x4a')]({'where':{'id':_0x25e4fa[_0x6a6d('0x48')]['id']}})[_0x6a6d('0x27')](handleEntityNotFound(_0x5545d1,null))['then'](saveUpdates(_0x25e4fa['body'],null))['then'](respondWithResult(_0x5545d1,null))[_0x6a6d('0x46')](handleError(_0x5545d1,null));};exports[_0x6a6d('0x26')]=function(_0x3e06a7,_0x4c1687){return db['Variable'][_0x6a6d('0x4a')]({'where':{'id':_0x3e06a7[_0x6a6d('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c1687,null))['then'](removeEntity(_0x4c1687,null))[_0x6a6d('0x46')](handleError(_0x4c1687,null));};
\ No newline at end of file
index 25f2a19..ca787a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ee8=['exports','define','lodash','util','moment','bluebird','path','rimraf','./variable.attributes'];(function(_0x53e37a,_0x1528b9){var _0x53e8da=function(_0x15cf28){while(--_0x15cf28){_0x53e37a['push'](_0x53e37a['shift']());}};_0x53e8da(++_0x1528b9);}(_0x5ee8,0xa4));var _0x85ee=function(_0x45feab,_0x955863){_0x45feab=_0x45feab-0x0;var _0x1d2f44=_0x5ee8[_0x45feab];return _0x1d2f44;};'use strict';var _=require(_0x85ee('0x0'));var util=require(_0x85ee('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x85ee('0x2'));var BPromise=require(_0x85ee('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85ee('0x4'));var rimraf=require(_0x85ee('0x5'));var config=require('../../config/environment');var attributes=require(_0x85ee('0x6'));module[_0x85ee('0x7')]=function(_0x1d11f4,_0x11003d){return _0x1d11f4[_0x85ee('0x8')]('Variable',attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe99e=['Variable','tools_variables','lodash','util','../../config/logger','api','path','rimraf','../../config/environment','./variable.attributes'];(function(_0x4c67f2,_0x473cbd){var _0x5c9eab=function(_0x1d958c){while(--_0x1d958c){_0x4c67f2['push'](_0x4c67f2['shift']());}};_0x5c9eab(++_0x473cbd);}(_0xe99e,0xac));var _0xee99=function(_0x4beb99,_0x11fa63){_0x4beb99=_0x4beb99-0x0;var _0x3f8491=_0xe99e[_0x4beb99];return _0x3f8491;};'use strict';var _=require(_0xee99('0x0'));var util=require(_0xee99('0x1'));var logger=require(_0xee99('0x2'))(_0xee99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xee99('0x4'));var rimraf=require(_0xee99('0x5'));var config=require(_0xee99('0x6'));var attributes=require(_0xee99('0x7'));module['exports']=function(_0x54b906,_0x3e691d){return _0x54b906['define'](_0xee99('0x8'),attributes,{'tableName':_0xee99('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d30b0a7..0197078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x39f811,_0x3d53b8){var _0x14fb75=function(_0xd59372){while(--_0xd59372){_0x39f811['push'](_0x39f811['shift']());}};_0x14fb75(++_0x3d53b8);}(_0x814b,0x1a2));var _0xb814=function(_0x360739,_0x2ec1b2){_0x360739=_0x360739-0x0;var _0x3e23a1=_0x814b[_0x360739];return _0x3e23a1;};'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
+var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x4a248b,_0x29e290){var _0x565f8c=function(_0x3944b1){while(--_0x3944b1){_0x4a248b['push'](_0x4a248b['shift']());}};_0x565f8c(++_0x29e290);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2984d0,_0x1a7211){_0x2984d0=_0x2984d0-0x0;var _0x2885f2=_0x5fc3[_0x2984d0];return _0x2885f2;};'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')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\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']('Variable,\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);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
index 6bcd18a..7f10c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e82=['/fetch','isAuthenticated','canUpdate','/reset','pull','/restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x2e82,0x18f));var _0x22e8=function(_0x2b2826,_0x43e63f){_0x2b2826=_0x2b2826-0x0;var _0x33daaa=_0x2e82[_0x2b2826];return _0x33daaa;};'use strict';var express=require(_0x22e8('0x0'));var router=express[_0x22e8('0x1')]();var auth=require(_0x22e8('0x2'));var controller=require(_0x22e8('0x3'));router[_0x22e8('0x4')]('/',controller[_0x22e8('0x5')]);router[_0x22e8('0x4')](_0x22e8('0x6'),auth[_0x22e8('0x7')](),auth[_0x22e8('0x8')](),controller['fetch']);router[_0x22e8('0x4')](_0x22e8('0x9'),auth[_0x22e8('0x7')](),auth[_0x22e8('0x8')](),controller['reset']);router[_0x22e8('0x4')]('/pull',auth[_0x22e8('0x7')](),auth[_0x22e8('0x8')](),controller[_0x22e8('0xa')]);router['get'](_0x22e8('0xb'),auth[_0x22e8('0x7')](),controller['restart']);router[_0x22e8('0x4')](_0x22e8('0xc'),controller[_0x22e8('0xd')]);module[_0x22e8('0xe')]=router;
\ No newline at end of file
+var _0x18ed=['/fetch','canUpdate','fetch','/reset','isAuthenticated','/pull','/restart','restart','migrations','exports','express','../../components/auth/service','get','index'];(function(_0x598b78,_0xf4ee7e){var _0x6392fa=function(_0x810353){while(--_0x810353){_0x598b78['push'](_0x598b78['shift']());}};_0x6392fa(++_0xf4ee7e);}(_0x18ed,0xf8));var _0xd18e=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x18ed[_0x209941];return _0x1e8729;};'use strict';var express=require(_0xd18e('0x0'));var router=express['Router']();var auth=require(_0xd18e('0x1'));var controller=require('./version.controller');router[_0xd18e('0x2')]('/',controller[_0xd18e('0x3')]);router[_0xd18e('0x2')](_0xd18e('0x4'),auth['isAuthenticated'](),auth[_0xd18e('0x5')](),controller[_0xd18e('0x6')]);router[_0xd18e('0x2')](_0xd18e('0x7'),auth[_0xd18e('0x8')](),auth['canUpdate'](),controller['reset']);router[_0xd18e('0x2')](_0xd18e('0x9'),auth[_0xd18e('0x8')](),auth[_0xd18e('0x5')](),controller['pull']);router[_0xd18e('0x2')](_0xd18e('0xa'),auth['isAuthenticated'](),controller[_0xd18e('0xb')]);router[_0xd18e('0x2')]('/migrations',controller[_0xd18e('0xc')]);module[_0xd18e('0xd')]=router;
\ No newline at end of file
index debd4eb..49f1a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ee=['Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','../../mysqldb','../../config/environment','../../config/logger','update','simple-git','root','query','latest','fetch','tags','exports','2.0.0','status','json','origin','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','info','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','server','migrations','length','.js','push','sort','sequelize'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xb9ee,0x1b9));var _0xeb9e=function(_0x345aab,_0x18b7af){_0x345aab=_0x345aab-0x0;var _0x37d787=_0xb9ee[_0x345aab];return _0x37d787;};'use strict';var Umzug=require(_0xeb9e('0x0'));var path=require(_0xeb9e('0x1'));var fs=require('fs');var _=require(_0xeb9e('0x2'));var pkginfo=require(_0xeb9e('0x3'))(module,_0xeb9e('0x4'));var compareVersions=require(_0xeb9e('0x5'));var exec=require('child_process')['exec'];var db=require(_0xeb9e('0x6'))['db'];var config=require(_0xeb9e('0x7'));var pm2=require('../../config/pm2');var logger=require(_0xeb9e('0x8'))(_0xeb9e('0x9'));var git=require(_0xeb9e('0xa'))(config[_0xeb9e('0xb')]);exports['index']=function(_0x3e8323,_0x14c91b){var _0x34ce2a={'current':module['exports'][_0xeb9e('0x4')],'phonebar':0x2};if(_0x3e8323[_0xeb9e('0xc')]&&_0x3e8323[_0xeb9e('0xc')][_0xeb9e('0xd')]){return git[_0xeb9e('0xe')]()[_0xeb9e('0xf')](function(_0x474901,_0x53a60a){_0x34ce2a['latest']=(_0x474901?module[_0xeb9e('0x10')]['version']:_0x53a60a[_0xeb9e('0xd')])||_0xeb9e('0x11');return _0x14c91b[_0xeb9e('0x12')](0xc8)[_0xeb9e('0x13')](_0x34ce2a);});}else{return _0x14c91b[_0xeb9e('0x12')](0xc8)['json'](_0x34ce2a);}};exports['fetch']=function(_0x26d242,_0x32ff59){return git['fetch']([_0xeb9e('0x14'),_0xeb9e('0x15')],function(_0x2f51be){if(_0x2f51be){logger[_0xeb9e('0x16')](_0x2f51be);return _0x32ff59[_0xeb9e('0x12')](0x1f4)[_0xeb9e('0x13')](_0x2f51be);}logger['info'](_0xeb9e('0x17'));return _0x32ff59[_0xeb9e('0x12')](0xc8)['json']({'output':_0xeb9e('0x18')});});};exports[_0xeb9e('0x19')]=function(_0x29c956,_0x53877e){return git[_0xeb9e('0x19')]([_0xeb9e('0x1a'),_0xeb9e('0x1b')],function(_0x5aaba5){if(_0x5aaba5){logger[_0xeb9e('0x16')](_0x5aaba5);return _0x53877e[_0xeb9e('0x12')](0x1f4)['json'](_0x5aaba5);}logger['info'](_0xeb9e('0x1c'));return _0x53877e[_0xeb9e('0x12')](0xc8)['json']({'output':_0xeb9e('0x1d')});});};exports['pull']=function(_0x3c6316,_0x173880){exec(_0xeb9e('0x1e'),function(_0x369a61,_0x2fa03f,_0x4d170d){logger['info'](_0x2fa03f);logger[_0xeb9e('0x1f')](_0x4d170d);if(_0x369a61){logger[_0xeb9e('0x16')](_0x369a61);return _0x173880['status'](0x1f4)[_0xeb9e('0x13')](_0x369a61);}return _0x173880[_0xeb9e('0x12')](0xc8)['json']({'output':_0x2fa03f});});};exports[_0xeb9e('0x20')]=function(_0x43082a,_0x5ca504){return pm2[_0xeb9e('0x20')](_0xeb9e('0x21'))[_0xeb9e('0x22')](function(_0x3d92b8){logger['info'](_0xeb9e('0x23'),_0x3d92b8);return _0x5ca504['status'](0xc8)[_0xeb9e('0x13')]({'output':_0xeb9e('0x24')});})[_0xeb9e('0x25')](function(_0x4d0b78){logger[_0xeb9e('0x16')](_0x4d0b78);return _0x5ca504[_0xeb9e('0x12')](0x1f4)[_0xeb9e('0x13')](_0x4d0b78);});};exports['migrations']=function(_0x7b6def,_0x21b5f3){var _0x17fff3=fs['readdirSync'](path['join'](config[_0xeb9e('0xb')],_0xeb9e('0x26'),_0xeb9e('0x27')));var _0x3e0a02=[];for(var _0x1b2db3=0x0;_0x1b2db3<_0x17fff3[_0xeb9e('0x28')];_0x1b2db3++){var _0x189979=_0x17fff3[_0x1b2db3]['replace'](_0xeb9e('0x29'),'');if(compareVersions(module[_0xeb9e('0x10')][_0xeb9e('0x4')],_0x189979)===-0x1){_0x3e0a02[_0xeb9e('0x2a')](_0x189979);}}if(_0x3e0a02[_0xeb9e('0x28')]){var _0x23ed21=_0x3e0a02[_0xeb9e('0x2b')](compareVersions);var _0x58ae59=new Umzug({'storage':_0xeb9e('0x2c'),'storageOptions':{'model':db[_0xeb9e('0x2d')],'modelName':_0xeb9e('0x2d'),'columnName':_0xeb9e('0x4')},'migrations':{'params':[db['sequelize'][_0xeb9e('0x2e')](),db[_0xeb9e('0x2c')][_0xeb9e('0x2f')],function(){throw new Error(_0xeb9e('0x30'));}],'path':path[_0xeb9e('0x31')](config['root'],_0xeb9e('0x26'),_0xeb9e('0x27')),'pattern':/\.js$/}});_0x58ae59['up']({'migrations':_['map'](_0x23ed21,function(_0x13c410){return _0x13c410+_0xeb9e('0x29');})})[_0xeb9e('0x22')](function(){return _0x21b5f3['status'](0xc8)[_0xeb9e('0x13')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0xeb9e('0x4')]+_0xeb9e('0x32')+_[_0xeb9e('0x33')](_0x23ed21),'migrations':_[_0xeb9e('0x31')](_0x23ed21)});})[_0xeb9e('0x25')](function(_0x90045e){if(_0x90045e instanceof db[_0xeb9e('0x2c')][_0xeb9e('0x34')]){return _0x21b5f3['status'](0xc8)['json']({'output':_0xeb9e('0x35')});}else{return _0x21b5f3[_0xeb9e('0x12')](0x1f4)['json'](_0x90045e);}});}else{return _0x21b5f3[_0xeb9e('0x12')](0xc8)[_0xeb9e('0x13')]({'output':_0xeb9e('0x35')});}};
\ No newline at end of file
+var _0x49a2=['root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','error','npm\x20install\x20--production','info','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','push','length','sort','sequelize','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','last','Database\x20already\x20up-to-date','umzug','path','version','child_process','../../config/environment','../../config/pm2','../../config/logger'];(function(_0x3d93c6,_0x5b9eaa){var _0x4c31a6=function(_0x16967d){while(--_0x16967d){_0x3d93c6['push'](_0x3d93c6['shift']());}};_0x4c31a6(++_0x5b9eaa);}(_0x49a2,0x161));var _0x249a=function(_0x4fadb8,_0x11b539){_0x4fadb8=_0x4fadb8-0x0;var _0x3c9e20=_0x49a2[_0x4fadb8];return _0x3c9e20;};'use strict';var Umzug=require(_0x249a('0x0'));var path=require(_0x249a('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require('pkginfo')(module,_0x249a('0x2'));var compareVersions=require('compare-versions');var exec=require(_0x249a('0x3'))['exec'];var db=require('../../mysqldb')['db'];var config=require(_0x249a('0x4'));var pm2=require(_0x249a('0x5'));var logger=require(_0x249a('0x6'))('update');var git=require('simple-git')(config[_0x249a('0x7')]);exports[_0x249a('0x8')]=function(_0x2257bb,_0x31e97e){var _0x9424c6={'current':module[_0x249a('0x9')][_0x249a('0x2')],'phonebar':0x2};if(_0x2257bb['query']&&_0x2257bb[_0x249a('0xa')][_0x249a('0xb')]){return git[_0x249a('0xc')]()[_0x249a('0xd')](function(_0x2d7543,_0x3a5429){_0x9424c6[_0x249a('0xb')]=(_0x2d7543?module[_0x249a('0x9')][_0x249a('0x2')]:_0x3a5429[_0x249a('0xb')])||_0x249a('0xe');return _0x31e97e[_0x249a('0xf')](0xc8)['json'](_0x9424c6);});}else{return _0x31e97e[_0x249a('0xf')](0xc8)[_0x249a('0x10')](_0x9424c6);}};exports[_0x249a('0xc')]=function(_0x900a07,_0x357ed8){return git[_0x249a('0xc')]([_0x249a('0x11'),_0x249a('0x12')],function(_0x3ecccf){if(_0x3ecccf){logger['error'](_0x3ecccf);return _0x357ed8['status'](0x1f4)[_0x249a('0x10')](_0x3ecccf);}logger['info'](_0x249a('0x13'));return _0x357ed8[_0x249a('0xf')](0xc8)[_0x249a('0x10')]({'output':_0x249a('0x14')});});};exports[_0x249a('0x15')]=function(_0x2386f6,_0x362130){return git[_0x249a('0x15')]([_0x249a('0x16'),'FETCH_HEAD'],function(_0x85ef00){if(_0x85ef00){logger[_0x249a('0x17')](_0x85ef00);return _0x362130['status'](0x1f4)[_0x249a('0x10')](_0x85ef00);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x362130[_0x249a('0xf')](0xc8)[_0x249a('0x10')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x3e6326,_0x4bd1d2){exec(_0x249a('0x18'),function(_0xf2d6f0,_0x5b1431,_0x552297){logger[_0x249a('0x19')](_0x5b1431);logger['info'](_0x552297);if(_0xf2d6f0){logger[_0x249a('0x17')](_0xf2d6f0);return _0x4bd1d2[_0x249a('0xf')](0x1f4)[_0x249a('0x10')](_0xf2d6f0);}return _0x4bd1d2[_0x249a('0xf')](0xc8)[_0x249a('0x10')]({'output':_0x5b1431});});};exports[_0x249a('0x1a')]=function(_0x225b49,_0x1a11c3){return pm2[_0x249a('0x1a')](_0x249a('0x1b'))['then'](function(_0x4a95d1){logger[_0x249a('0x19')](_0x249a('0x1c'),_0x4a95d1);return _0x1a11c3['status'](0xc8)['json']({'output':_0x249a('0x1d')});})[_0x249a('0x1e')](function(_0x27b0a5){logger[_0x249a('0x17')](_0x27b0a5);return _0x1a11c3[_0x249a('0xf')](0x1f4)[_0x249a('0x10')](_0x27b0a5);});};exports[_0x249a('0x1f')]=function(_0x23ea66,_0x2849f0){var _0x50c231=fs[_0x249a('0x20')](path[_0x249a('0x21')](config[_0x249a('0x7')],_0x249a('0x22'),'migrations'));var _0x5a1e18=[];for(var _0x2045e3=0x0;_0x2045e3<_0x50c231['length'];_0x2045e3++){var _0x1f7b9a=_0x50c231[_0x2045e3]['replace']('.js','');if(compareVersions(module[_0x249a('0x9')][_0x249a('0x2')],_0x1f7b9a)===-0x1){_0x5a1e18[_0x249a('0x23')](_0x1f7b9a);}}if(_0x5a1e18[_0x249a('0x24')]){var _0x2ab3bf=_0x5a1e18[_0x249a('0x25')](compareVersions);var _0x5b74a0=new Umzug({'storage':'sequelize','storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':_0x249a('0x2')},'migrations':{'params':[db[_0x249a('0x26')]['getQueryInterface'](),db['sequelize']['constructor'],function(){throw new Error(_0x249a('0x27'));}],'path':path[_0x249a('0x21')](config['root'],_0x249a('0x22'),_0x249a('0x1f')),'pattern':/\.js$/}});_0x5b74a0['up']({'migrations':_[_0x249a('0x28')](_0x2ab3bf,function(_0x131e25){return _0x131e25+_0x249a('0x29');})})['then'](function(){return _0x2849f0['status'](0xc8)[_0x249a('0x10')]({'output':_0x249a('0x2a')+module[_0x249a('0x9')][_0x249a('0x2')]+'\x20to\x20'+_[_0x249a('0x2b')](_0x2ab3bf),'migrations':_[_0x249a('0x21')](_0x2ab3bf)});})[_0x249a('0x1e')](function(_0x267870){if(_0x267870 instanceof db[_0x249a('0x26')]['UniqueConstraintError']){return _0x2849f0[_0x249a('0xf')](0xc8)[_0x249a('0x10')]({'output':_0x249a('0x2c')});}else{return _0x2849f0[_0x249a('0xf')](0x1f4)[_0x249a('0x10')](_0x267870);}});}else{return _0x2849f0[_0x249a('0xf')](0xc8)[_0x249a('0x10')]({'output':_0x249a('0x2c')});}};
\ No newline at end of file
index bfd9fd9..013f2c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9732=['/:id','destroy','multer','util','path','express','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','/describe','describe','post','create','delete'];(function(_0x37f4d8,_0x4ec257){var _0x10ebd8=function(_0x189b79){while(--_0x189b79){_0x37f4d8['push'](_0x37f4d8['shift']());}};_0x10ebd8(++_0x4ec257);}(_0x9732,0x1c2));var _0x2973=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9732[_0x3511d3];return _0x5d6321;};'use strict';var multer=require(_0x2973('0x0'));var util=require(_0x2973('0x1'));var path=require(_0x2973('0x2'));var timeout=require('connect-timeout');var express=require(_0x2973('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2973('0x4'));var config=require(_0x2973('0x5'));var controller=require(_0x2973('0x6'));router[_0x2973('0x7')]('/',auth[_0x2973('0x8')](),controller['index']);router[_0x2973('0x7')](_0x2973('0x9'),auth[_0x2973('0x8')](),controller[_0x2973('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x2973('0xb')]('/',auth['isAuthenticated'](),controller[_0x2973('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x2973('0xd')](_0x2973('0xe'),auth[_0x2973('0x8')](),controller[_0x2973('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x8c93=['delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','update'];(function(_0x2df724,_0x411382){var _0x1b2504=function(_0x1d3cd1){while(--_0x1d3cd1){_0x2df724['push'](_0x2df724['shift']());}};_0x1b2504(++_0x411382);}(_0x8c93,0xd4));var _0x38c9=function(_0xa38417,_0xa8babf){_0xa38417=_0xa38417-0x0;var _0x5b397f=_0x8c93[_0xa38417];return _0x5b397f;};'use strict';var multer=require(_0x38c9('0x0'));var util=require(_0x38c9('0x1'));var path=require(_0x38c9('0x2'));var timeout=require(_0x38c9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x38c9('0x4'));var interaction=require(_0x38c9('0x5'));var config=require(_0x38c9('0x6'));var controller=require(_0x38c9('0x7'));router[_0x38c9('0x8')]('/',auth['isAuthenticated'](),controller[_0x38c9('0x9')]);router[_0x38c9('0x8')](_0x38c9('0xa'),auth[_0x38c9('0xb')](),controller[_0x38c9('0xc')]);router[_0x38c9('0x8')](_0x38c9('0xd'),auth[_0x38c9('0xb')](),controller[_0x38c9('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x38c9('0xd'),auth[_0x38c9('0xb')](),controller[_0x38c9('0xf')]);router[_0x38c9('0x10')]('/:id',auth[_0x38c9('0xb')](),controller[_0x38c9('0x11')]);module[_0x38c9('0x12')]=router;
\ No newline at end of file
index 130049e..6a2fbae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20df=['STRING','DATE','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x2d9f8f,_0x40bc79){var _0x240df4=function(_0x397d13){while(--_0x397d13){_0x2d9f8f['push'](_0x2d9f8f['shift']());}};_0x240df4(++_0x40bc79);}(_0x20df,0x7c));var _0xf20d=function(_0x38f737,_0x54f685){_0x38f737=_0x38f737-0x0;var _0x7afda3=_0x20df[_0x38f737];return _0x7afda3;};'use strict';var Sequelize=require(_0xf20d('0x0'));module[_0xf20d('0x1')]={'type':{'type':Sequelize[_0xf20d('0x2')]},'uniqueid':{'type':Sequelize[_0xf20d('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf20d('0x2')]},'queue':{'type':Sequelize[_0xf20d('0x2')]},'interface':{'type':Sequelize[_0xf20d('0x2')]},'membername':{'type':Sequelize[_0xf20d('0x2')]},'agentcalledAt':{'type':Sequelize[_0xf20d('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xf20d('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0xf20d('0x3')]},'holdtime':{'type':Sequelize[_0xf20d('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xf20d('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xf20d('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf20d('0x4')]},'reason':{'type':Sequelize[_0xf20d('0x2')]},'lastevent':{'type':Sequelize[_0xf20d('0x2')]},'channel':{'type':Sequelize[_0xf20d('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xf20d('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf20d('0x2')]},'connectedlinename':{'type':Sequelize[_0xf20d('0x2')]},'language':{'type':Sequelize[_0xf20d('0x2')]},'accountcode':{'type':Sequelize[_0xf20d('0x2')]},'context':{'type':Sequelize[_0xf20d('0x2')]},'exten':{'type':Sequelize[_0xf20d('0x2')]},'priority':{'type':Sequelize[_0xf20d('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xf20d('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xf20d('0x2')]},'destcalleridname':{'type':Sequelize[_0xf20d('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xf20d('0x2')]},'destlanguage':{'type':Sequelize[_0xf20d('0x2')]},'destaccountcode':{'type':Sequelize[_0xf20d('0x2')]},'destcontext':{'type':Sequelize[_0xf20d('0x2')]},'destexten':{'type':Sequelize[_0xf20d('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xf20d('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xf20d('0x2')]},'transfer':{'type':Sequelize[_0xf20d('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xf20d('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0xf20d('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0xf20d('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc692=['DATE','BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xc692,0x15f));var _0x2c69=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc692[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x2c69('0x0'));module[_0x2c69('0x1')]={'type':{'type':Sequelize[_0x2c69('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x2c69('0x2')]},'queue':{'type':Sequelize[_0x2c69('0x2')]},'interface':{'type':Sequelize[_0x2c69('0x2')]},'membername':{'type':Sequelize[_0x2c69('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2c69('0x3')]},'agentconnectAt':{'type':Sequelize[_0x2c69('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x2c69('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0x2c69('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x2c69('0x5')]},'agentacw':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2c69('0x5')]},'reason':{'type':Sequelize[_0x2c69('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2c69('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x2c69('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2c69('0x2')]},'language':{'type':Sequelize[_0x2c69('0x2')]},'accountcode':{'type':Sequelize[_0x2c69('0x2')]},'context':{'type':Sequelize[_0x2c69('0x2')]},'exten':{'type':Sequelize[_0x2c69('0x2')]},'priority':{'type':Sequelize[_0x2c69('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x2c69('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x2c69('0x2')]},'destcalleridname':{'type':Sequelize[_0x2c69('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x2c69('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x2c69('0x2')]},'destlanguage':{'type':Sequelize[_0x2c69('0x2')]},'destaccountcode':{'type':Sequelize[_0x2c69('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x2c69('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x2c69('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2c69('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2c69('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x2c69('0x2')]},'agententerreason':{'type':Sequelize[_0x2c69('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index ee9182b..63f2e27 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(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 6dbe391..274f98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a7=['VoiceAgentReport','report_agent','destuniqueid','lodash','moment','bluebird','request-promise','rimraf','./voiceAgentReport.attributes','define'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xd8a7,0xdf));var _0x7d8a=function(_0x3b1628,_0x592492){_0x3b1628=_0x3b1628-0x0;var _0x5c6a95=_0xd8a7[_0x3b1628];return _0x5c6a95;};'use strict';var _=require(_0x7d8a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x7d8a('0x1'));var BPromise=require(_0x7d8a('0x2'));var rp=require(_0x7d8a('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7d8a('0x4'));var config=require('../../config/environment');var attributes=require(_0x7d8a('0x5'));module['exports']=function(_0x27ef8e,_0x530308){return _0x27ef8e[_0x7d8a('0x6')](_0x7d8a('0x7'),attributes,{'tableName':_0x7d8a('0x8'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x7d8a('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d6d=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','lodash'];(function(_0x498bdb,_0x3f0f12){var _0x8b4400=function(_0x14f925){while(--_0x14f925){_0x498bdb['push'](_0x498bdb['shift']());}};_0x8b4400(++_0x3f0f12);}(_0x3d6d,0xb3));var _0xd3d6=function(_0x4e4315,_0x5d7615){_0x4e4315=_0x4e4315-0x0;var _0x31f97a=_0x3d6d[_0x4e4315];return _0x31f97a;};'use strict';var _=require(_0xd3d6('0x0'));var util=require(_0xd3d6('0x1'));var logger=require(_0xd3d6('0x2'))(_0xd3d6('0x3'));var moment=require(_0xd3d6('0x4'));var BPromise=require(_0xd3d6('0x5'));var rp=require(_0xd3d6('0x6'));var fs=require('fs');var path=require(_0xd3d6('0x7'));var rimraf=require(_0xd3d6('0x8'));var config=require(_0xd3d6('0x9'));var attributes=require(_0xd3d6('0xa'));module['exports']=function(_0x5400f8,_0x3f36){return _0x5400f8[_0xd3d6('0xb')](_0xd3d6('0xc'),attributes,{'tableName':_0xd3d6('0xd'),'paranoid':![],'indexes':[{'fields':[_0xd3d6('0xe'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f070a5b..de071e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x237c=['client','http','request','info','request\x20sent','debug','error','code','VoiceAgentReport,\x20%s,\x20%s','message','CreateVoiceAgentReport','VoiceAgentReport','body','options','raw','then','stringify','catch','UpdateVoiceAgentReport','where','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x237c,0x154));var _0xc237=function(_0x262914,_0x22f664){_0x262914=_0x262914-0x0;var _0x18e2c9=_0x237c[_0x262914];return _0x18e2c9;};'use strict';var _=require('lodash');var util=require(_0xc237('0x0'));var moment=require(_0xc237('0x1'));var BPromise=require(_0xc237('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc237('0x3'));var db=require(_0xc237('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc237('0x5'))('rpc');var config=require(_0xc237('0x6'));var jayson=require(_0xc237('0x7'));var client=jayson[_0xc237('0x8')][_0xc237('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb259af,_0x29566c,_0xbb0520){return new BPromise(function(_0x2f8ac6,_0x22b0e6){return client[_0xc237('0xa')](_0xb259af,_0xbb0520)['then'](function(_0x58300c){logger[_0xc237('0xb')]('VoiceAgentReport,\x20%s,\x20%s',_0x29566c,_0xc237('0xc'));logger[_0xc237('0xd')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x29566c,_0xc237('0xc'),JSON['stringify'](_0x58300c));if(_0x58300c['error']){if(_0x58300c[_0xc237('0xe')][_0xc237('0xf')]===0x1f4){logger[_0xc237('0xe')](_0xc237('0x10'),_0x29566c,_0x58300c['error'][_0xc237('0x11')]);return _0x22b0e6(_0x58300c[_0xc237('0xe')]['message']);}logger[_0xc237('0xe')](_0xc237('0x10'),_0x29566c,_0x58300c[_0xc237('0xe')][_0xc237('0x11')]);return _0x2f8ac6(_0x58300c[_0xc237('0xe')][_0xc237('0x11')]);}else{logger[_0xc237('0xb')]('VoiceAgentReport,\x20%s,\x20%s',_0x29566c,_0xc237('0xc'));_0x2f8ac6(_0x58300c['result']['message']);}})['catch'](function(_0x3be21d){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x29566c,_0x3be21d);_0x22b0e6(_0x3be21d);});});}exports[_0xc237('0x12')]=function(_0x30fad6){var _0x1d6533=this;return new Promise(function(_0xcc6b50,_0x50ab52){return db[_0xc237('0x13')]['create'](_0x30fad6[_0xc237('0x14')],{'raw':_0x30fad6['options']?_0x30fad6[_0xc237('0x15')][_0xc237('0x16')]===undefined?!![]:![]:!![]})[_0xc237('0x17')](function(_0x4ad30a){logger[_0xc237('0xb')](_0xc237('0x12'),_0x30fad6);logger[_0xc237('0xd')](_0xc237('0x12'),_0x30fad6,JSON[_0xc237('0x18')](_0x4ad30a));_0xcc6b50(_0x4ad30a);})[_0xc237('0x19')](function(_0x26ecb5){logger[_0xc237('0xe')](_0xc237('0x12'),_0x26ecb5[_0xc237('0x11')],_0x30fad6);_0x50ab52(_0x1d6533['error'](0x1f4,_0x26ecb5[_0xc237('0x11')]));});});};exports[_0xc237('0x1a')]=function(_0x1596d9){var _0x50042b=this;return new Promise(function(_0x92d02a,_0x4f7719){return db['VoiceAgentReport']['update'](_0x1596d9['body'],{'raw':_0x1596d9['options']?_0x1596d9[_0xc237('0x15')][_0xc237('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1596d9[_0xc237('0x15')]?_0x1596d9['options'][_0xc237('0x1b')]||null:null,'attributes':_0x1596d9[_0xc237('0x15')]?_0x1596d9[_0xc237('0x15')]['attributes']||null:null,'limit':_0x1596d9[_0xc237('0x15')]?_0x1596d9[_0xc237('0x15')][_0xc237('0x1c')]||null:null})[_0xc237('0x17')](function(_0x14982f){logger[_0xc237('0xb')](_0xc237('0x1a'),_0x1596d9);logger['debug'](_0xc237('0x1a'),_0x1596d9,JSON[_0xc237('0x18')](_0x14982f));_0x92d02a(_0x14982f);})[_0xc237('0x19')](function(_0x21c021){logger['error'](_0xc237('0x1a'),_0x21c021[_0xc237('0x11')],_0x1596d9);_0x4f7719(_0x50042b[_0xc237('0xe')](0x1f4,_0x21c021[_0xc237('0x11')]));});});};
\ No newline at end of file
+var _0xb6f9=['CreateVoiceAgentReport','where','attributes','UpdateVoiceAgentReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceAgentReport','body','options','raw'];(function(_0x258e27,_0x3bf7bc){var _0x193859=function(_0xd1d39d){while(--_0xd1d39d){_0x258e27['push'](_0x258e27['shift']());}};_0x193859(++_0x3bf7bc);}(_0xb6f9,0xd6));var _0x9b6f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb6f9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9b6f('0x0'));var util=require(_0x9b6f('0x1'));var moment=require(_0x9b6f('0x2'));var BPromise=require(_0x9b6f('0x3'));var rs=require(_0x9b6f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b6f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9b6f('0x6'))(_0x9b6f('0x7'));var config=require('../../config/environment');var jayson=require(_0x9b6f('0x8'));var client=jayson['client'][_0x9b6f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xe6a060,_0x4bab69,_0x5ed636){return new BPromise(function(_0x4ccc7a,_0x41ef7d){return client[_0x9b6f('0xa')](_0xe6a060,_0x5ed636)[_0x9b6f('0xb')](function(_0x48da9b){logger[_0x9b6f('0xc')](_0x9b6f('0xd'),_0x4bab69,_0x9b6f('0xe'));logger[_0x9b6f('0xf')](_0x9b6f('0x10'),_0x4bab69,'request\x20sent',JSON[_0x9b6f('0x11')](_0x48da9b));if(_0x48da9b[_0x9b6f('0x12')]){if(_0x48da9b[_0x9b6f('0x12')][_0x9b6f('0x13')]===0x1f4){logger[_0x9b6f('0x12')](_0x9b6f('0xd'),_0x4bab69,_0x48da9b[_0x9b6f('0x12')][_0x9b6f('0x14')]);return _0x41ef7d(_0x48da9b[_0x9b6f('0x12')]['message']);}logger[_0x9b6f('0x12')]('VoiceAgentReport,\x20%s,\x20%s',_0x4bab69,_0x48da9b[_0x9b6f('0x12')][_0x9b6f('0x14')]);return _0x4ccc7a(_0x48da9b[_0x9b6f('0x12')][_0x9b6f('0x14')]);}else{logger[_0x9b6f('0xc')](_0x9b6f('0xd'),_0x4bab69,'request\x20sent');_0x4ccc7a(_0x48da9b['result']['message']);}})[_0x9b6f('0x15')](function(_0x1d6630){logger[_0x9b6f('0x12')](_0x9b6f('0xd'),_0x4bab69,_0x1d6630);_0x41ef7d(_0x1d6630);});});}exports['CreateVoiceAgentReport']=function(_0x38a4a9){var _0xe13a41=this;return new Promise(function(_0x3c4567,_0x495b3c){return db[_0x9b6f('0x16')]['create'](_0x38a4a9[_0x9b6f('0x17')],{'raw':_0x38a4a9[_0x9b6f('0x18')]?_0x38a4a9['options'][_0x9b6f('0x19')]===undefined?!![]:![]:!![]})[_0x9b6f('0xb')](function(_0x1c3a40){logger['info']('CreateVoiceAgentReport',_0x38a4a9);logger['debug'](_0x9b6f('0x1a'),_0x38a4a9,JSON[_0x9b6f('0x11')](_0x1c3a40));_0x3c4567(_0x1c3a40);})[_0x9b6f('0x15')](function(_0x278b3a){logger[_0x9b6f('0x12')](_0x9b6f('0x1a'),_0x278b3a[_0x9b6f('0x14')],_0x38a4a9);_0x495b3c(_0xe13a41[_0x9b6f('0x12')](0x1f4,_0x278b3a[_0x9b6f('0x14')]));});});};exports['UpdateVoiceAgentReport']=function(_0x22f697){var _0x165859=this;return new Promise(function(_0x5a9099,_0x1a74a7){return db[_0x9b6f('0x16')]['update'](_0x22f697[_0x9b6f('0x17')],{'raw':_0x22f697['options']?_0x22f697[_0x9b6f('0x18')][_0x9b6f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22f697[_0x9b6f('0x18')]?_0x22f697[_0x9b6f('0x18')][_0x9b6f('0x1b')]||null:null,'attributes':_0x22f697[_0x9b6f('0x18')]?_0x22f697['options'][_0x9b6f('0x1c')]||null:null,'limit':_0x22f697[_0x9b6f('0x18')]?_0x22f697['options']['limit']||null:null})[_0x9b6f('0xb')](function(_0x3383a2){logger[_0x9b6f('0xc')](_0x9b6f('0x1d'),_0x22f697);logger[_0x9b6f('0xf')](_0x9b6f('0x1d'),_0x22f697,JSON[_0x9b6f('0x11')](_0x3383a2));_0x5a9099(_0x3383a2);})[_0x9b6f('0x15')](function(_0x351b2e){logger['error'](_0x9b6f('0x1d'),_0x351b2e[_0x9b6f('0x14')],_0x22f697);_0x1a74a7(_0x165859[_0x9b6f('0x12')](0x1f4,_0x351b2e[_0x9b6f('0x14')]));});});};
\ No newline at end of file
index c3254cd..0b3da3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaba6=['destroy','exports','multer','util','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','describe','/:id','post','create','put','update'];(function(_0x28f5af,_0x3deb07){var _0x1fac50=function(_0x2dc19a){while(--_0x2dc19a){_0x28f5af['push'](_0x28f5af['shift']());}};_0x1fac50(++_0x3deb07);}(_0xaba6,0xe2));var _0x6aba=function(_0x4dd15b,_0x1d880a){_0x4dd15b=_0x4dd15b-0x0;var _0x2445f2=_0xaba6[_0x4dd15b];return _0x2445f2;};'use strict';var multer=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6aba('0x2'));var auth=require(_0x6aba('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6aba('0x4'));var controller=require(_0x6aba('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6aba('0x6')]('/describe',auth[_0x6aba('0x7')](),controller[_0x6aba('0x8')]);router['get'](_0x6aba('0x9'),auth[_0x6aba('0x7')](),controller['show']);router[_0x6aba('0xa')]('/',auth[_0x6aba('0x7')](),controller[_0x6aba('0xb')]);router[_0x6aba('0xc')](_0x6aba('0x9'),auth[_0x6aba('0x7')](),controller[_0x6aba('0xd')]);router['delete'](_0x6aba('0x9'),auth[_0x6aba('0x7')](),controller[_0x6aba('0xe')]);module[_0x6aba('0xf')]=router;
\ No newline at end of file
+var _0x3435=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','create','put','delete','exports','multer','util'];(function(_0x49f3ac,_0x3b0b84){var _0x293e97=function(_0x4929a7){while(--_0x4929a7){_0x49f3ac['push'](_0x49f3ac['shift']());}};_0x293e97(++_0x3b0b84);}(_0x3435,0xfa));var _0x5343=function(_0x11a220,_0x4e470a){_0x11a220=_0x11a220-0x0;var _0x20d8fe=_0x3435[_0x11a220];return _0x20d8fe;};'use strict';var multer=require(_0x5343('0x0'));var util=require(_0x5343('0x1'));var path=require(_0x5343('0x2'));var timeout=require(_0x5343('0x3'));var express=require(_0x5343('0x4'));var router=express[_0x5343('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5343('0x6'));var interaction=require(_0x5343('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router[_0x5343('0x8')]('/',auth[_0x5343('0x9')](),controller['index']);router['get'](_0x5343('0xa'),auth[_0x5343('0x9')](),controller[_0x5343('0xb')]);router[_0x5343('0x8')](_0x5343('0xc'),auth['isAuthenticated'](),controller[_0x5343('0xd')]);router['post']('/',auth[_0x5343('0x9')](),controller[_0x5343('0xe')]);router[_0x5343('0xf')](_0x5343('0xc'),auth[_0x5343('0x9')](),controller['update']);router[_0x5343('0x10')](_0x5343('0xc'),auth[_0x5343('0x9')](),controller['destroy']);module[_0x5343('0x11')]=router;
\ No newline at end of file
index 48eaab1..9c85194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7462=['inbound-fax','outbound-fax','STRING','DATE','INTEGER','sequelize','exports','inbound'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0x7462,0x165));var _0x2746=function(_0x4a0f16,_0x21ba18){_0x4a0f16=_0x4a0f16-0x0;var _0x45d653=_0x7462[_0x4a0f16];return _0x45d653;};'use strict';var Sequelize=require(_0x2746('0x0'));module[_0x2746('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x2746('0x2'),'internal','outbound',_0x2746('0x3'),_0x2746('0x4'),'dialer')},'tag':{'type':Sequelize[_0x2746('0x5')]},'accountcode':{'type':Sequelize[_0x2746('0x5')]},'source':{'type':Sequelize[_0x2746('0x5')]},'destination':{'type':Sequelize[_0x2746('0x5')]},'destinationcontext':{'type':Sequelize[_0x2746('0x5')]},'callerid':{'type':Sequelize[_0x2746('0x5')]},'channel':{'type':Sequelize[_0x2746('0x5')]},'destinationchannel':{'type':Sequelize[_0x2746('0x5')]},'lastapplication':{'type':Sequelize[_0x2746('0x5')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x2746('0x6')]},'systemanswertime':{'type':Sequelize[_0x2746('0x6')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x2746('0x6')]},'duration':{'type':Sequelize[_0x2746('0x7')]},'billableseconds':{'type':Sequelize[_0x2746('0x7')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x2746('0x5')]},'amaflags':{'type':Sequelize[_0x2746('0x5')]},'userfield':{'type':Sequelize[_0x2746('0x5')]},'userDisposition':{'type':Sequelize[_0x2746('0x5')]},'userSecondDisposition':{'type':Sequelize[_0x2746('0x5')]},'userThirdDisposition':{'type':Sequelize[_0x2746('0x5')]},'note':{'type':Sequelize[_0x2746('0x5')]},'prefix':{'type':Sequelize[_0x2746('0x5')]},'routeid':{'type':Sequelize[_0x2746('0x7')]},'sipcallid':{'type':Sequelize[_0x2746('0x5')]}};
\ No newline at end of file
+var _0x2761=['outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','STRING','ENUM','inbound','internal','outbound','inbound-fax'];(function(_0x5e51f5,_0x3ebcc0){var _0x208fca=function(_0x1b41c7){while(--_0x1b41c7){_0x5e51f5['push'](_0x5e51f5['shift']());}};_0x208fca(++_0x3ebcc0);}(_0x2761,0x1c1));var _0x1276=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2761[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x1276('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x1276('0x1')]},'type':{'type':Sequelize[_0x1276('0x2')](_0x1276('0x3'),_0x1276('0x4'),_0x1276('0x5'),_0x1276('0x6'),_0x1276('0x7'),_0x1276('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x1276('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0x1276('0x1')]},'destinationcontext':{'type':Sequelize[_0x1276('0x1')]},'callerid':{'type':Sequelize[_0x1276('0x1')]},'channel':{'type':Sequelize[_0x1276('0x1')]},'destinationchannel':{'type':Sequelize[_0x1276('0x1')]},'lastapplication':{'type':Sequelize[_0x1276('0x1')]},'lastdata':{'type':Sequelize[_0x1276('0x9')]},'starttime':{'type':Sequelize[_0x1276('0xa')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x1276('0xa')]},'endtime':{'type':Sequelize[_0x1276('0xa')]},'duration':{'type':Sequelize[_0x1276('0xb')]},'billableseconds':{'type':Sequelize[_0x1276('0xb')]},'mohtime':{'type':Sequelize[_0x1276('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1276('0x1')]},'amaflags':{'type':Sequelize[_0x1276('0x1')]},'userfield':{'type':Sequelize[_0x1276('0x1')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x1276('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1276('0x1')]},'prefix':{'type':Sequelize[_0x1276('0x1')]},'routeid':{'type':Sequelize[_0x1276('0xb')]},'sipcallid':{'type':Sequelize[_0x1276('0x1')]}};
\ No newline at end of file
index 470829c..7db4a55 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(_0x28bafe,_0x23ada9){var _0x888a65=function(_0x2eba07){while(--_0x2eba07){_0x28bafe['push'](_0x28bafe['shift']());}};_0x888a65(++_0x23ada9);}(_0xdb28,0x106));var _0x8db2=function(_0x399494,_0x2230e9){_0x399494=_0x399494-0x0;var _0x4ed462=_0xdb28[_0x399494];return _0x4ed462;};'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 _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x214266,_0x1f6f52){var _0x568f75=function(_0x541904){while(--_0x541904){_0x214266['push'](_0x214266['shift']());}};_0x568f75(++_0x1f6f52);}(_0xadb5,0xad));var _0x5adb=function(_0x50faa5,_0x57c044){_0x50faa5=_0x50faa5-0x0;var _0xa25d99=_0xadb5[_0x50faa5];return _0xa25d99;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
index 31d569f..b737808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b42=['../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x2b42,0xe7));var _0x22b4=function(_0x3babb2,_0x4e832d){_0x3babb2=_0x3babb2-0x0;var _0x43e8fd=_0x2b42[_0x3babb2];return _0x43e8fd;};'use strict';var _=require('lodash');var util=require(_0x22b4('0x0'));var logger=require('../../config/logger')(_0x22b4('0x1'));var moment=require(_0x22b4('0x2'));var BPromise=require(_0x22b4('0x3'));var rp=require(_0x22b4('0x4'));var fs=require('fs');var path=require(_0x22b4('0x5'));var rimraf=require(_0x22b4('0x6'));var config=require(_0x22b4('0x7'));var attributes=require(_0x22b4('0x8'));module[_0x22b4('0x9')]=function(_0x4a6328,_0x44f3a2){return _0x4a6328[_0x22b4('0xa')](_0x22b4('0xb'),attributes,{'tableName':_0x22b4('0xc'),'paranoid':![],'indexes':[{'fields':[_0x22b4('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf84a=['util','../../config/logger','api','moment','bluebird','request-promise','path','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid'];(function(_0x55fa03,_0xcb96c2){var _0x2cd7cd=function(_0x56611f){while(--_0x56611f){_0x55fa03['push'](_0x55fa03['shift']());}};_0x2cd7cd(++_0xcb96c2);}(_0xf84a,0x1c7));var _0xaf84=function(_0x32549a,_0x34ea1f){_0x32549a=_0x32549a-0x0;var _0x19fc1a=_0xf84a[_0x32549a];return _0x19fc1a;};'use strict';var _=require('lodash');var util=require(_0xaf84('0x0'));var logger=require(_0xaf84('0x1'))(_0xaf84('0x2'));var moment=require(_0xaf84('0x3'));var BPromise=require(_0xaf84('0x4'));var rp=require(_0xaf84('0x5'));var fs=require('fs');var path=require(_0xaf84('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xaf84('0x7'));module[_0xaf84('0x8')]=function(_0x5e5e79,_0x4c14ea){return _0x5e5e79[_0xaf84('0x9')](_0xaf84('0xa'),attributes,{'tableName':_0xaf84('0xb'),'paranoid':![],'indexes':[{'fields':[_0xaf84('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 2ed7207..7b3c7a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a73=['http','request','then','request\x20sent','debug','stringify','error','code','VoiceCallReport,\x20%s,\x20%s','message','result','VoiceCallReport','findAll','raw','options','where','include','map','model','attributes','info','GetVoiceCallReport','catch','CreateVoiceCallReport','create','UpdateVoiceCallReport','update','body','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xb725be,_0x45bd01){var _0x2f2424=function(_0x2566ca){while(--_0x2566ca){_0xb725be['push'](_0xb725be['shift']());}};_0x2f2424(++_0x45bd01);}(_0x7a73,0x65));var _0x37a7=function(_0x22d8bc,_0x129a20){_0x22d8bc=_0x22d8bc-0x0;var _0x5ed782=_0x7a73[_0x22d8bc];return _0x5ed782;};'use strict';var _=require(_0x37a7('0x0'));var util=require(_0x37a7('0x1'));var moment=require(_0x37a7('0x2'));var BPromise=require(_0x37a7('0x3'));var rs=require(_0x37a7('0x4'));var fs=require('fs');var Redis=require(_0x37a7('0x5'));var db=require(_0x37a7('0x6'))['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['client'][_0x37a7('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2894cc,_0x335de1,_0x47d22b){return new BPromise(function(_0x4705b0,_0x58a2db){return client[_0x37a7('0x8')](_0x2894cc,_0x47d22b)[_0x37a7('0x9')](function(_0x560c39){logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x335de1,_0x37a7('0xa'));logger[_0x37a7('0xb')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x335de1,_0x37a7('0xa'),JSON[_0x37a7('0xc')](_0x560c39));if(_0x560c39[_0x37a7('0xd')]){if(_0x560c39[_0x37a7('0xd')][_0x37a7('0xe')]===0x1f4){logger[_0x37a7('0xd')](_0x37a7('0xf'),_0x335de1,_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);return _0x58a2db(_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);}logger[_0x37a7('0xd')](_0x37a7('0xf'),_0x335de1,_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);return _0x4705b0(_0x560c39[_0x37a7('0xd')][_0x37a7('0x10')]);}else{logger['info'](_0x37a7('0xf'),_0x335de1,_0x37a7('0xa'));_0x4705b0(_0x560c39[_0x37a7('0x11')][_0x37a7('0x10')]);}})['catch'](function(_0x89914){logger['error'](_0x37a7('0xf'),_0x335de1,_0x89914);_0x58a2db(_0x89914);});});}exports['GetVoiceCallReport']=function(_0xf526a6){var _0x111d52=this;return new Promise(function(_0x549802,_0x406c12){return db[_0x37a7('0x12')][_0x37a7('0x13')]({'raw':_0xf526a6['options']?_0xf526a6['options'][_0x37a7('0x14')]===undefined?!![]:![]:!![],'where':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')][_0x37a7('0x16')]||null:null,'attributes':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')]['attributes']||null:null,'limit':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')]['limit']||null:null,'include':_0xf526a6[_0x37a7('0x15')]?_0xf526a6[_0x37a7('0x15')][_0x37a7('0x17')]?_[_0x37a7('0x18')](_0xf526a6[_0x37a7('0x15')][_0x37a7('0x17')],function(_0x879003){return{'model':db[_0x879003[_0x37a7('0x19')]],'as':_0x879003['as'],'attributes':_0x879003[_0x37a7('0x1a')],'include':_0x879003[_0x37a7('0x17')]?_[_0x37a7('0x18')](_0x879003[_0x37a7('0x17')],function(_0x175a29){return{'model':db[_0x175a29['model']],'as':_0x175a29['as'],'attributes':_0x175a29[_0x37a7('0x1a')],'include':_0x175a29['include']?_[_0x37a7('0x18')](_0x175a29[_0x37a7('0x17')],function(_0x4f516b){return{'model':db[_0x4f516b[_0x37a7('0x19')]],'as':_0x4f516b['as'],'attributes':_0x4f516b[_0x37a7('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x37a7('0x9')](function(_0x113d6a){logger[_0x37a7('0x1b')](_0x37a7('0x1c'),_0xf526a6);logger[_0x37a7('0xb')](_0x37a7('0x1c'),_0xf526a6,JSON[_0x37a7('0xc')](_0x113d6a));_0x549802(_0x113d6a);})[_0x37a7('0x1d')](function(_0x125412){logger[_0x37a7('0xd')](_0x37a7('0x1c'),_0x125412[_0x37a7('0x10')],_0xf526a6);_0x406c12(_0x111d52[_0x37a7('0xd')](0x1f4,_0x125412[_0x37a7('0x10')]));});});};exports[_0x37a7('0x1e')]=function(_0x476937){var _0x3d75b3=this;return new Promise(function(_0x3f5d62,_0x3ac8d9){return db[_0x37a7('0x12')][_0x37a7('0x1f')](_0x476937['body'],{'raw':_0x476937[_0x37a7('0x15')]?_0x476937[_0x37a7('0x15')][_0x37a7('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x2f0063){logger['info']('CreateVoiceCallReport',_0x476937);logger[_0x37a7('0xb')](_0x37a7('0x1e'),_0x476937,JSON[_0x37a7('0xc')](_0x2f0063));_0x3f5d62(_0x2f0063);})[_0x37a7('0x1d')](function(_0x1b3b55){logger['error']('CreateVoiceCallReport',_0x1b3b55[_0x37a7('0x10')],_0x476937);_0x3ac8d9(_0x3d75b3[_0x37a7('0xd')](0x1f4,_0x1b3b55[_0x37a7('0x10')]));});});};exports[_0x37a7('0x20')]=function(_0x3ed079){var _0x4e5bd6=this;return new Promise(function(_0x494b46,_0x14395d){return db[_0x37a7('0x12')][_0x37a7('0x21')](_0x3ed079[_0x37a7('0x22')],{'raw':_0x3ed079[_0x37a7('0x15')]?_0x3ed079['options'][_0x37a7('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ed079['options']?_0x3ed079[_0x37a7('0x15')][_0x37a7('0x16')]||null:null,'attributes':_0x3ed079[_0x37a7('0x15')]?_0x3ed079['options'][_0x37a7('0x1a')]||null:null,'limit':_0x3ed079[_0x37a7('0x15')]?_0x3ed079[_0x37a7('0x15')][_0x37a7('0x23')]||null:null})['then'](function(_0x4c4969){logger[_0x37a7('0x1b')](_0x37a7('0x20'),_0x3ed079);logger[_0x37a7('0xb')](_0x37a7('0x20'),_0x3ed079,JSON[_0x37a7('0xc')](_0x4c4969));_0x494b46(_0x4c4969);})[_0x37a7('0x1d')](function(_0x23df8a){logger[_0x37a7('0xd')](_0x37a7('0x20'),_0x23df8a['message'],_0x3ed079);_0x14395d(_0x4e5bd6[_0x37a7('0xd')](0x1f4,_0x23df8a['message']));});});};
\ No newline at end of file
+var _0xc3cf=['debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceCallReport','findAll','options','where','attributes','limit','include','model','map','GetVoiceCallReport','CreateVoiceCallReport','raw','UpdateVoiceCallReport','update','body','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xc3cf,0x119));var _0xfc3c=function(_0x150b1b,_0x52d206){_0x150b1b=_0x150b1b-0x0;var _0x4b1e3c=_0xc3cf[_0x150b1b];return _0x4b1e3c;};'use strict';var _=require(_0xfc3c('0x0'));var util=require(_0xfc3c('0x1'));var moment=require(_0xfc3c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfc3c('0x3'));var db=require(_0xfc3c('0x4'))['db'];var utils=require(_0xfc3c('0x5'));var logger=require(_0xfc3c('0x6'))(_0xfc3c('0x7'));var config=require(_0xfc3c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfc3c('0x9')][_0xfc3c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfa9547,_0x3f58c6,_0x341f01){return new BPromise(function(_0x467f34,_0x2f8a3f){return client['request'](_0xfa9547,_0x341f01)[_0xfc3c('0xb')](function(_0x3edc37){logger[_0xfc3c('0xc')](_0xfc3c('0xd'),_0x3f58c6,_0xfc3c('0xe'));logger[_0xfc3c('0xf')](_0xfc3c('0x10'),_0x3f58c6,_0xfc3c('0xe'),JSON[_0xfc3c('0x11')](_0x3edc37));if(_0x3edc37[_0xfc3c('0x12')]){if(_0x3edc37['error'][_0xfc3c('0x13')]===0x1f4){logger['error'](_0xfc3c('0xd'),_0x3f58c6,_0x3edc37[_0xfc3c('0x12')][_0xfc3c('0x14')]);return _0x2f8a3f(_0x3edc37[_0xfc3c('0x12')][_0xfc3c('0x14')]);}logger[_0xfc3c('0x12')](_0xfc3c('0xd'),_0x3f58c6,_0x3edc37['error']['message']);return _0x467f34(_0x3edc37[_0xfc3c('0x12')][_0xfc3c('0x14')]);}else{logger['info'](_0xfc3c('0xd'),_0x3f58c6,_0xfc3c('0xe'));_0x467f34(_0x3edc37['result'][_0xfc3c('0x14')]);}})[_0xfc3c('0x15')](function(_0x587e40){logger[_0xfc3c('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x3f58c6,_0x587e40);_0x2f8a3f(_0x587e40);});});}exports['GetVoiceCallReport']=function(_0x545150){var _0x35c412=this;return new Promise(function(_0x93b606,_0x1fce2a){return db[_0xfc3c('0x16')][_0xfc3c('0x17')]({'raw':_0x545150['options']?_0x545150['options']['raw']===undefined?!![]:![]:!![],'where':_0x545150[_0xfc3c('0x18')]?_0x545150[_0xfc3c('0x18')][_0xfc3c('0x19')]||null:null,'attributes':_0x545150[_0xfc3c('0x18')]?_0x545150[_0xfc3c('0x18')][_0xfc3c('0x1a')]||null:null,'limit':_0x545150['options']?_0x545150['options'][_0xfc3c('0x1b')]||null:null,'include':_0x545150['options']?_0x545150[_0xfc3c('0x18')][_0xfc3c('0x1c')]?_['map'](_0x545150[_0xfc3c('0x18')][_0xfc3c('0x1c')],function(_0x5a11c7){return{'model':db[_0x5a11c7[_0xfc3c('0x1d')]],'as':_0x5a11c7['as'],'attributes':_0x5a11c7[_0xfc3c('0x1a')],'include':_0x5a11c7['include']?_[_0xfc3c('0x1e')](_0x5a11c7[_0xfc3c('0x1c')],function(_0x12f544){return{'model':db[_0x12f544[_0xfc3c('0x1d')]],'as':_0x12f544['as'],'attributes':_0x12f544['attributes'],'include':_0x12f544[_0xfc3c('0x1c')]?_[_0xfc3c('0x1e')](_0x12f544[_0xfc3c('0x1c')],function(_0x56813b){return{'model':db[_0x56813b[_0xfc3c('0x1d')]],'as':_0x56813b['as'],'attributes':_0x56813b[_0xfc3c('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfc3c('0xb')](function(_0x6825c3){logger[_0xfc3c('0xc')](_0xfc3c('0x1f'),_0x545150);logger['debug']('GetVoiceCallReport',_0x545150,JSON[_0xfc3c('0x11')](_0x6825c3));_0x93b606(_0x6825c3);})[_0xfc3c('0x15')](function(_0xf186a7){logger[_0xfc3c('0x12')](_0xfc3c('0x1f'),_0xf186a7[_0xfc3c('0x14')],_0x545150);_0x1fce2a(_0x35c412[_0xfc3c('0x12')](0x1f4,_0xf186a7[_0xfc3c('0x14')]));});});};exports[_0xfc3c('0x20')]=function(_0x1f95c4){var _0x3eb7c7=this;return new Promise(function(_0x4cfde1,_0x533ce3){return db[_0xfc3c('0x16')]['create'](_0x1f95c4['body'],{'raw':_0x1f95c4[_0xfc3c('0x18')]?_0x1f95c4[_0xfc3c('0x18')][_0xfc3c('0x21')]===undefined?!![]:![]:!![]})[_0xfc3c('0xb')](function(_0x2fad66){logger[_0xfc3c('0xc')](_0xfc3c('0x20'),_0x1f95c4);logger[_0xfc3c('0xf')](_0xfc3c('0x20'),_0x1f95c4,JSON[_0xfc3c('0x11')](_0x2fad66));_0x4cfde1(_0x2fad66);})['catch'](function(_0x4ea51c){logger[_0xfc3c('0x12')](_0xfc3c('0x20'),_0x4ea51c[_0xfc3c('0x14')],_0x1f95c4);_0x533ce3(_0x3eb7c7[_0xfc3c('0x12')](0x1f4,_0x4ea51c[_0xfc3c('0x14')]));});});};exports[_0xfc3c('0x22')]=function(_0x33aa07){var _0xd5f02e=this;return new Promise(function(_0x371c08,_0x5e63a6){return db[_0xfc3c('0x16')][_0xfc3c('0x23')](_0x33aa07[_0xfc3c('0x24')],{'raw':_0x33aa07[_0xfc3c('0x18')]?_0x33aa07[_0xfc3c('0x18')][_0xfc3c('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33aa07[_0xfc3c('0x18')]?_0x33aa07[_0xfc3c('0x18')][_0xfc3c('0x19')]||null:null,'attributes':_0x33aa07[_0xfc3c('0x18')]?_0x33aa07['options'][_0xfc3c('0x1a')]||null:null,'limit':_0x33aa07[_0xfc3c('0x18')]?_0x33aa07[_0xfc3c('0x18')][_0xfc3c('0x1b')]||null:null})[_0xfc3c('0xb')](function(_0xc08ae2){logger[_0xfc3c('0xc')](_0xfc3c('0x22'),_0x33aa07);logger[_0xfc3c('0xf')](_0xfc3c('0x22'),_0x33aa07,JSON[_0xfc3c('0x11')](_0xc08ae2));_0x371c08(_0xc08ae2);})[_0xfc3c('0x15')](function(_0x2497e0){logger[_0xfc3c('0x12')](_0xfc3c('0x22'),_0x2497e0['message'],_0x33aa07);_0x5e63a6(_0xd5f02e[_0xfc3c('0x12')](0x1f4,_0x2497e0[_0xfc3c('0x14')]));});});};
\ No newline at end of file
index 81ff5c8..0b6dda2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dc5=['post','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show'];(function(_0x3b8222,_0x923d4e){var _0x19bdba=function(_0x1b03c1){while(--_0x1b03c1){_0x3b8222['push'](_0x3b8222['shift']());}};_0x19bdba(++_0x923d4e);}(_0x9dc5,0x1c7));var _0x59dc=function(_0x56b6ce,_0x39626e){_0x56b6ce=_0x56b6ce-0x0;var _0x6b30d5=_0x9dc5[_0x56b6ce];return _0x6b30d5;};'use strict';var multer=require(_0x59dc('0x0'));var util=require(_0x59dc('0x1'));var path=require(_0x59dc('0x2'));var timeout=require('connect-timeout');var express=require(_0x59dc('0x3'));var router=express[_0x59dc('0x4')]();var fs_extra=require(_0x59dc('0x5'));var auth=require(_0x59dc('0x6'));var interaction=require(_0x59dc('0x7'));var config=require(_0x59dc('0x8'));var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0x59dc('0x9')](),controller[_0x59dc('0xa')]);router['get'](_0x59dc('0xb'),auth[_0x59dc('0x9')](),controller[_0x59dc('0xc')]);router[_0x59dc('0xd')]('/',auth[_0x59dc('0x9')](),controller['create']);router[_0x59dc('0xe')]('/:id',auth[_0x59dc('0x9')](),controller[_0x59dc('0xf')]);router[_0x59dc('0x10')](_0x59dc('0xb'),auth[_0x59dc('0x9')](),controller['destroy']);module[_0x59dc('0x11')]=router;
\ No newline at end of file
+var _0x8982=['isAuthenticated','create','put','delete','/:id','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get'];(function(_0x579f50,_0x18bc66){var _0x1a04c3=function(_0xcd0a21){while(--_0xcd0a21){_0x579f50['push'](_0x579f50['shift']());}};_0x1a04c3(++_0x18bc66);}(_0x8982,0x76));var _0x2898=function(_0x5ae5e0,_0x34f0bb){_0x5ae5e0=_0x5ae5e0-0x0;var _0x33fba8=_0x8982[_0x5ae5e0];return _0x33fba8;};'use strict';var multer=require(_0x2898('0x0'));var util=require(_0x2898('0x1'));var path=require(_0x2898('0x2'));var timeout=require('connect-timeout');var express=require(_0x2898('0x3'));var router=express[_0x2898('0x4')]();var fs_extra=require(_0x2898('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2898('0x6'));var config=require(_0x2898('0x7'));var controller=require(_0x2898('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2898('0x9')]('/:id',auth[_0x2898('0xa')](),controller['show']);router['post']('/',auth[_0x2898('0xa')](),controller[_0x2898('0xb')]);router[_0x2898('0xc')]('/:id',auth[_0x2898('0xa')](),controller['update']);router[_0x2898('0xd')](_0x2898('0xe'),auth['isAuthenticated'](),controller[_0x2898('0xf')]);module['exports']=router;
\ No newline at end of file
index 51ae4ad..b7ca2ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff53=['split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join','getDataValue'];(function(_0x10b862,_0x1089bf){var _0x2885dd=function(_0x594d13){while(--_0x594d13){_0x10b862['push'](_0x10b862['shift']());}};_0x2885dd(++_0x1089bf);}(_0xff53,0x11a));var _0x3ff5=function(_0x1e0e55,_0x239050){_0x1e0e55=_0x1e0e55-0x0;var _0x1c4963=_0xff53[_0x1e0e55];return _0x1c4963;};'use strict';var Sequelize=require(_0x3ff5('0x0'));module[_0x3ff5('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x3ff5('0x2')],'unique':_0x3ff5('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x3ff5('0x2')],'set':function(_0x37f58a){this[_0x3ff5('0x4')](_0x3ff5('0x5'),_0x37f58a?_0x37f58a[_0x3ff5('0x6')](''):[]);},'get':function(){return this[_0x3ff5('0x7')](_0x3ff5('0x5'))?this[_0x3ff5('0x7')](_0x3ff5('0x5'))[_0x3ff5('0x8')](''):[];}},'auth':{'type':Sequelize[_0x3ff5('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x3ff5('0x2')]},'record':{'type':Sequelize[_0x3ff5('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x3ff5('0x2')]},'description':{'type':Sequelize[_0x3ff5('0x2')]}};
\ No newline at end of file
+var _0xad8c=['split','BOOLEAN','sequelize','exports','STRING','options','join','getDataValue'];(function(_0x57efca,_0x328f39){var _0x469ceb=function(_0x17fc0e){while(--_0x17fc0e){_0x57efca['push'](_0x57efca['shift']());}};_0x469ceb(++_0x328f39);}(_0xad8c,0xaa));var _0xcad8=function(_0x42e4d7,_0x4bd202){_0x42e4d7=_0x42e4d7-0x0;var _0x346cd8=_0xad8c[_0x42e4d7];return _0x346cd8;};'use strict';var Sequelize=require(_0xcad8('0x0'));module[_0xcad8('0x1')]={'name':{'type':Sequelize[_0xcad8('0x2')]},'prefix':{'type':Sequelize[_0xcad8('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x5c1e90){this['setDataValue'](_0xcad8('0x3'),_0x5c1e90?_0x5c1e90[_0xcad8('0x4')](''):[]);},'get':function(){return this[_0xcad8('0x5')](_0xcad8('0x3'))?this[_0xcad8('0x5')](_0xcad8('0x3'))[_0xcad8('0x6')](''):[];}},'auth':{'type':Sequelize[_0xcad8('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xcad8('0x2')]},'record':{'type':Sequelize[_0xcad8('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xcad8('0x2')]},'description':{'type':Sequelize[_0xcad8('0x2')]}};
\ No newline at end of file
index 1d9f386..4639312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65d2=['order','sort','where','filters','filter','type','VIRTUAL','merge','options','include','rows','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','params','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','update','destroy','then','get','ChanSpies','UserProfileResource','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','key','keys','query','intersection','model','attributes','length','hasOwnProperty'];(function(_0xd0429a,_0x41c289){var _0xf89938=function(_0x5898d8){while(--_0x5898d8){_0xd0429a['push'](_0xd0429a['shift']());}};_0xf89938(++_0x41c289);}(_0x65d2,0xb8));var _0x265d=function(_0x2773d9,_0x52742a){_0x2773d9=_0x2773d9-0x0;var _0x48399c=_0x65d2[_0x2773d9];return _0x48399c;};'use strict';var emlformat=require(_0x265d('0x0'));var rimraf=require(_0x265d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x265d('0x2'));var rp=require(_0x265d('0x3'));var moment=require(_0x265d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x265d('0x5'));var util=require(_0x265d('0x6'));var path=require(_0x265d('0x7'));var sox=require('sox');var csv=require(_0x265d('0x8'));var ejs=require(_0x265d('0x9'));var fs=require('fs');var fs_extra=require(_0x265d('0xa'));var _=require(_0x265d('0xb'));var squel=require(_0x265d('0xc'));var crypto=require('crypto');var jsforce=require(_0x265d('0xd'));var deskjs=require(_0x265d('0xe'));var toCsv=require(_0x265d('0x8'));var querystring=require(_0x265d('0xf'));var Papa=require(_0x265d('0x10'));var Redis=require('ioredis');var authService=require(_0x265d('0x11'));var qs=require(_0x265d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x265d('0x13'));var logger=require(_0x265d('0x14'))(_0x265d('0x15'));var utils=require(_0x265d('0x16'));var config=require(_0x265d('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x265d('0x18'))['db'];function respondWithStatusCode(_0x5540fa,_0x4c1ea2){_0x4c1ea2=_0x4c1ea2||0xcc;return function(_0x24cb9d){if(_0x24cb9d){return _0x5540fa[_0x265d('0x19')](_0x4c1ea2);}return _0x5540fa[_0x265d('0x1a')](_0x4c1ea2)[_0x265d('0x1b')]();};}function respondWithResult(_0x181344,_0x5e04f6){_0x5e04f6=_0x5e04f6||0xc8;return function(_0x97bfdf){if(_0x97bfdf){return _0x181344[_0x265d('0x1a')](_0x5e04f6)[_0x265d('0x1c')](_0x97bfdf);}};}function respondWithFilteredResult(_0x34eb0b,_0x21e99b){return function(_0x183f31){if(_0x183f31){var _0x29a163=typeof _0x21e99b[_0x265d('0x1d')]===_0x265d('0x1e')&&typeof _0x21e99b[_0x265d('0x1f')]===_0x265d('0x1e');var _0x74d2e7=_0x183f31[_0x265d('0x20')];var _0x1ab38c=_0x29a163?0x0:_0x21e99b[_0x265d('0x1d')];var _0x3e2dbe=_0x29a163?_0x183f31['count']:_0x21e99b[_0x265d('0x1d')]+_0x21e99b[_0x265d('0x1f')];var _0x2f8932;if(_0x3e2dbe>=_0x74d2e7){_0x3e2dbe=_0x74d2e7;_0x2f8932=0xc8;}else{_0x2f8932=0xce;}_0x34eb0b[_0x265d('0x1a')](_0x2f8932);return _0x34eb0b[_0x265d('0x21')]('Content-Range',_0x1ab38c+'-'+_0x3e2dbe+'/'+_0x74d2e7)['json'](_0x183f31);}return null;};}function patchUpdates(_0x3dc44b){return function(_0x1ff5b6){try{jsonpatch['apply'](_0x1ff5b6,_0x3dc44b,!![]);}catch(_0x408840){return BPromise['reject'](_0x408840);}return _0x1ff5b6['save']();};}function saveUpdates(_0x31be87,_0x24245b){return function(_0x36a480){if(_0x36a480){return _0x36a480[_0x265d('0x22')](_0x31be87)['then'](function(_0x1da376){return _0x1da376;});}return null;};}function removeEntity(_0xc821d2,_0x3304e5){return function(_0xf807aa){if(_0xf807aa){return _0xf807aa[_0x265d('0x23')]()[_0x265d('0x24')](function(){var _0x26e598=_0xf807aa[_0x265d('0x25')]({'plain':!![]});var _0x53301f=_0x265d('0x26');return db[_0x265d('0x27')][_0x265d('0x23')]({'where':{'type':_0x53301f,'resourceId':_0x26e598['id']}})[_0x265d('0x24')](function(){return _0xf807aa;});})[_0x265d('0x24')](function(){_0xc821d2[_0x265d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24391c,_0x1e6352){return function(_0x5d0126){if(!_0x5d0126){_0x24391c[_0x265d('0x19')](0x194);}return _0x5d0126;};}function handleError(_0x3e061b,_0x52b8d1){_0x52b8d1=_0x52b8d1||0x1f4;return function(_0x310904){logger['error'](_0x310904[_0x265d('0x28')]);if(_0x310904[_0x265d('0x29')]){delete _0x310904[_0x265d('0x29')];}_0x3e061b[_0x265d('0x1a')](_0x52b8d1)[_0x265d('0x2a')](_0x310904);};}exports[_0x265d('0x2b')]=function(_0xd09f13,_0x10cd43){var _0x213933={},_0x54a188={},_0x3f4acd={'count':0x0,'rows':[]};var _0x593f50=_[_0x265d('0x2c')](db[_0x265d('0x2d')][_0x265d('0x2e')],function(_0x3d271c){return{'name':_0x3d271c[_0x265d('0x2f')],'type':_0x3d271c['type'][_0x265d('0x30')]};});_0x54a188['model']=_[_0x265d('0x2c')](_0x593f50,_0x265d('0x29'));_0x54a188['query']=_[_0x265d('0x31')](_0xd09f13[_0x265d('0x32')]);_0x54a188['filters']=_[_0x265d('0x33')](_0x54a188[_0x265d('0x34')],_0x54a188[_0x265d('0x32')]);_0x213933[_0x265d('0x35')]=_[_0x265d('0x33')](_0x54a188['model'],qs['fields'](_0xd09f13[_0x265d('0x32')]['fields']));_0x213933[_0x265d('0x35')]=_0x213933[_0x265d('0x35')][_0x265d('0x36')]?_0x213933[_0x265d('0x35')]:_0x54a188[_0x265d('0x34')];if(!_0xd09f13['query'][_0x265d('0x37')]('nolimit')){_0x213933[_0x265d('0x1f')]=qs[_0x265d('0x1f')](_0xd09f13[_0x265d('0x32')]['limit']);_0x213933[_0x265d('0x1d')]=qs[_0x265d('0x1d')](_0xd09f13[_0x265d('0x32')][_0x265d('0x1d')]);}_0x213933[_0x265d('0x38')]=qs['sort'](_0xd09f13['query'][_0x265d('0x39')]);_0x213933[_0x265d('0x3a')]=qs[_0x265d('0x3b')](_['pick'](_0xd09f13['query'],_0x54a188[_0x265d('0x3b')]),_0x593f50);if(_0xd09f13[_0x265d('0x32')][_0x265d('0x3c')]){_0x213933['where']=_['merge'](_0x213933['where'],{'$or':_['map'](_0x593f50,function(_0xc8d8a9){if(_0xc8d8a9[_0x265d('0x3d')]!==_0x265d('0x3e')){var _0x312204={};_0x312204[_0xc8d8a9['name']]={'$like':'%'+_0xd09f13['query'][_0x265d('0x3c')]+'%'};return _0x312204;}})});}_0x213933=_[_0x265d('0x3f')]({},_0x213933,_0xd09f13[_0x265d('0x40')]);var _0xe927ee={'where':_0x213933['where']};return db['VoiceChanSpy'][_0x265d('0x20')](_0xe927ee)[_0x265d('0x24')](function(_0x159cab){_0x3f4acd['count']=_0x159cab;if(_0xd09f13['query']['includeAll']){_0x213933[_0x265d('0x41')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x213933);})[_0x265d('0x24')](function(_0x3329b9){_0x3f4acd[_0x265d('0x42')]=_0x3329b9;return _0x3f4acd;})[_0x265d('0x24')](respondWithFilteredResult(_0x10cd43,_0x213933))['catch'](handleError(_0x10cd43,null));};exports['show']=function(_0x225d1b,_0x54b16d){var _0x429242={'raw':![],'where':{'id':_0x225d1b['params']['id']}},_0x233dd2={};_0x233dd2[_0x265d('0x34')]=_[_0x265d('0x31')](db[_0x265d('0x2d')]['rawAttributes']);_0x233dd2['query']=_[_0x265d('0x31')](_0x225d1b[_0x265d('0x32')]);_0x233dd2[_0x265d('0x3b')]=_['intersection'](_0x233dd2[_0x265d('0x34')],_0x233dd2[_0x265d('0x32')]);_0x429242['attributes']=_[_0x265d('0x33')](_0x233dd2[_0x265d('0x34')],qs['fields'](_0x225d1b[_0x265d('0x32')][_0x265d('0x43')]));_0x429242[_0x265d('0x35')]=_0x429242[_0x265d('0x35')][_0x265d('0x36')]?_0x429242[_0x265d('0x35')]:_0x233dd2[_0x265d('0x34')];if(_0x225d1b[_0x265d('0x32')]['includeAll']){_0x429242[_0x265d('0x41')]=[{'all':!![]}];}_0x429242=_[_0x265d('0x3f')]({},_0x429242,_0x225d1b[_0x265d('0x40')]);return db[_0x265d('0x2d')][_0x265d('0x44')](_0x429242)[_0x265d('0x24')](handleEntityNotFound(_0x54b16d,null))[_0x265d('0x24')](respondWithResult(_0x54b16d,null))['catch'](handleError(_0x54b16d,null));};exports[_0x265d('0x45')]=function(_0x3affc9,_0x3d2acf){return db[_0x265d('0x2d')][_0x265d('0x45')](_0x3affc9[_0x265d('0x46')],{})[_0x265d('0x24')](function(_0x4afe7c){var _0x20eec8=_0x3affc9[_0x265d('0x47')][_0x265d('0x25')]({'plain':!![]});if(!_0x20eec8)throw new Error(_0x265d('0x48'));if(_0x20eec8[_0x265d('0x49')]==='user'){var _0x676c31=_0x4afe7c[_0x265d('0x25')]({'plain':!![]});var _0x467634=_0x265d('0x26');return db[_0x265d('0x4a')][_0x265d('0x44')]({'where':{'name':_0x467634,'userProfileId':_0x20eec8[_0x265d('0x4b')]},'raw':!![]})[_0x265d('0x24')](function(_0x1ad983){if(_0x1ad983&&_0x1ad983['autoAssociation']===0x0){return db['UserProfileResource'][_0x265d('0x45')]({'name':_0x676c31[_0x265d('0x29')],'resourceId':_0x676c31['id'],'type':_0x1ad983[_0x265d('0x29')],'sectionId':_0x1ad983['id']},{})[_0x265d('0x24')](function(){return _0x4afe7c;});}else{return _0x4afe7c;}})['catch'](function(_0x17b2c5){logger[_0x265d('0x4c')](_0x265d('0x4d'),_0x17b2c5);throw _0x17b2c5;});}return _0x4afe7c;})['then'](respondWithResult(_0x3d2acf,0xc9))[_0x265d('0x4e')](handleError(_0x3d2acf,null));};exports[_0x265d('0x22')]=function(_0x589817,_0x40b167){if(_0x589817[_0x265d('0x46')]['id']){delete _0x589817['body']['id'];}return db[_0x265d('0x2d')][_0x265d('0x44')]({'where':{'id':_0x589817['params']['id']}})[_0x265d('0x24')](handleEntityNotFound(_0x40b167,null))['then'](saveUpdates(_0x589817[_0x265d('0x46')],null))[_0x265d('0x24')](respondWithResult(_0x40b167,null))[_0x265d('0x4e')](handleError(_0x40b167,null));};exports['destroy']=function(_0x5b1a03,_0x124e58){return db['VoiceChanSpy'][_0x265d('0x44')]({'where':{'id':_0x5b1a03[_0x265d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x124e58,null))[_0x265d('0x24')](removeEntity(_0x124e58,null))[_0x265d('0x4e')](handleError(_0x124e58,null));};
\ No newline at end of file
+var _0x4058=['count','set','Content-Range','apply','reject','save','then','get','ChanSpies','UserProfileResource','destroy','end','error','stack','name','send','index','VoiceChanSpy','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','keys','options','find','catch','create','body','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','status','json','offset','undefined','limit'];(function(_0x52f1e6,_0xf70489){var _0x21f104=function(_0xb89f9e){while(--_0xb89f9e){_0x52f1e6['push'](_0x52f1e6['shift']());}};_0x21f104(++_0xf70489);}(_0x4058,0x129));var _0x8405=function(_0x1f6092,_0x41ae11){_0x1f6092=_0x1f6092-0x0;var _0x266cb3=_0x4058[_0x1f6092];return _0x266cb3;};'use strict';var emlformat=require(_0x8405('0x0'));var rimraf=require(_0x8405('0x1'));var zipdir=require(_0x8405('0x2'));var jsonpatch=require(_0x8405('0x3'));var rp=require(_0x8405('0x4'));var moment=require(_0x8405('0x5'));var BPromise=require(_0x8405('0x6'));var Mustache=require(_0x8405('0x7'));var util=require(_0x8405('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8405('0x9'));var fs=require('fs');var fs_extra=require(_0x8405('0xa'));var _=require(_0x8405('0xb'));var squel=require(_0x8405('0xc'));var crypto=require(_0x8405('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8405('0xe'));var toCsv=require(_0x8405('0xf'));var querystring=require(_0x8405('0x10'));var Papa=require('papaparse');var Redis=require(_0x8405('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8405('0x12'));var as=require(_0x8405('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8405('0x14'))(_0x8405('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x262d32,_0x575fcb){_0x575fcb=_0x575fcb||0xcc;return function(_0x495190){if(_0x495190){return _0x262d32['sendStatus'](_0x575fcb);}return _0x262d32['status'](_0x575fcb)['end']();};}function respondWithResult(_0x1321d3,_0x238633){_0x238633=_0x238633||0xc8;return function(_0x5a3776){if(_0x5a3776){return _0x1321d3[_0x8405('0x16')](_0x238633)[_0x8405('0x17')](_0x5a3776);}};}function respondWithFilteredResult(_0x221cf8,_0x422822){return function(_0x58eb66){if(_0x58eb66){var _0x218fe7=typeof _0x422822[_0x8405('0x18')]===_0x8405('0x19')&&typeof _0x422822[_0x8405('0x1a')]===_0x8405('0x19');var _0x15a189=_0x58eb66[_0x8405('0x1b')];var _0x358633=_0x218fe7?0x0:_0x422822[_0x8405('0x18')];var _0x1e608f=_0x218fe7?_0x58eb66[_0x8405('0x1b')]:_0x422822[_0x8405('0x18')]+_0x422822[_0x8405('0x1a')];var _0x241000;if(_0x1e608f>=_0x15a189){_0x1e608f=_0x15a189;_0x241000=0xc8;}else{_0x241000=0xce;}_0x221cf8[_0x8405('0x16')](_0x241000);return _0x221cf8[_0x8405('0x1c')](_0x8405('0x1d'),_0x358633+'-'+_0x1e608f+'/'+_0x15a189)[_0x8405('0x17')](_0x58eb66);}return null;};}function patchUpdates(_0x2483ab){return function(_0x1f42e5){try{jsonpatch[_0x8405('0x1e')](_0x1f42e5,_0x2483ab,!![]);}catch(_0x3d5271){return BPromise[_0x8405('0x1f')](_0x3d5271);}return _0x1f42e5[_0x8405('0x20')]();};}function saveUpdates(_0x1ceff7,_0x1e8d08){return function(_0x57130a){if(_0x57130a){return _0x57130a['update'](_0x1ceff7)[_0x8405('0x21')](function(_0x2e021a){return _0x2e021a;});}return null;};}function removeEntity(_0x14436a,_0x4b1c6b){return function(_0x5e3849){if(_0x5e3849){return _0x5e3849['destroy']()[_0x8405('0x21')](function(){var _0x480ad2=_0x5e3849[_0x8405('0x22')]({'plain':!![]});var _0x162c03=_0x8405('0x23');return db[_0x8405('0x24')][_0x8405('0x25')]({'where':{'type':_0x162c03,'resourceId':_0x480ad2['id']}})[_0x8405('0x21')](function(){return _0x5e3849;});})[_0x8405('0x21')](function(){_0x14436a[_0x8405('0x16')](0xcc)[_0x8405('0x26')]();});}};}function handleEntityNotFound(_0x24b88d,_0x1eb4f6){return function(_0x293789){if(!_0x293789){_0x24b88d['sendStatus'](0x194);}return _0x293789;};}function handleError(_0x132c0f,_0x51396d){_0x51396d=_0x51396d||0x1f4;return function(_0x48a425){logger[_0x8405('0x27')](_0x48a425[_0x8405('0x28')]);if(_0x48a425[_0x8405('0x29')]){delete _0x48a425[_0x8405('0x29')];}_0x132c0f[_0x8405('0x16')](_0x51396d)[_0x8405('0x2a')](_0x48a425);};}exports[_0x8405('0x2b')]=function(_0xa1efa2,_0x7e216b){var _0xe019ff={},_0x20bca3={},_0x3b14e5={'count':0x0,'rows':[]};var _0xcbee2b=_['map'](db[_0x8405('0x2c')][_0x8405('0x2d')],function(_0x52bac7){return{'name':_0x52bac7[_0x8405('0x2e')],'type':_0x52bac7[_0x8405('0x2f')][_0x8405('0x30')]};});_0x20bca3['model']=_[_0x8405('0x31')](_0xcbee2b,_0x8405('0x29'));_0x20bca3[_0x8405('0x32')]=_['keys'](_0xa1efa2[_0x8405('0x32')]);_0x20bca3[_0x8405('0x33')]=_['intersection'](_0x20bca3[_0x8405('0x34')],_0x20bca3['query']);_0xe019ff[_0x8405('0x35')]=_[_0x8405('0x36')](_0x20bca3[_0x8405('0x34')],qs[_0x8405('0x37')](_0xa1efa2[_0x8405('0x32')][_0x8405('0x37')]));_0xe019ff[_0x8405('0x35')]=_0xe019ff[_0x8405('0x35')][_0x8405('0x38')]?_0xe019ff[_0x8405('0x35')]:_0x20bca3[_0x8405('0x34')];if(!_0xa1efa2[_0x8405('0x32')]['hasOwnProperty'](_0x8405('0x39'))){_0xe019ff['limit']=qs['limit'](_0xa1efa2[_0x8405('0x32')][_0x8405('0x1a')]);_0xe019ff['offset']=qs[_0x8405('0x18')](_0xa1efa2[_0x8405('0x32')][_0x8405('0x18')]);}_0xe019ff[_0x8405('0x3a')]=qs[_0x8405('0x3b')](_0xa1efa2['query'][_0x8405('0x3b')]);_0xe019ff[_0x8405('0x3c')]=qs[_0x8405('0x33')](_[_0x8405('0x3d')](_0xa1efa2[_0x8405('0x32')],_0x20bca3['filters']),_0xcbee2b);if(_0xa1efa2[_0x8405('0x32')][_0x8405('0x3e')]){_0xe019ff[_0x8405('0x3c')]=_[_0x8405('0x3f')](_0xe019ff[_0x8405('0x3c')],{'$or':_[_0x8405('0x31')](_0xcbee2b,function(_0x550c9c){if(_0x550c9c[_0x8405('0x2f')]!==_0x8405('0x40')){var _0x23e559={};_0x23e559[_0x550c9c[_0x8405('0x29')]]={'$like':'%'+_0xa1efa2[_0x8405('0x32')][_0x8405('0x3e')]+'%'};return _0x23e559;}})});}_0xe019ff=_[_0x8405('0x3f')]({},_0xe019ff,_0xa1efa2['options']);var _0x2c2b49={'where':_0xe019ff['where']};return db[_0x8405('0x2c')][_0x8405('0x1b')](_0x2c2b49)['then'](function(_0x4a13f7){_0x3b14e5[_0x8405('0x1b')]=_0x4a13f7;if(_0xa1efa2[_0x8405('0x32')][_0x8405('0x41')]){_0xe019ff[_0x8405('0x42')]=[{'all':!![]}];}return db[_0x8405('0x2c')][_0x8405('0x43')](_0xe019ff);})[_0x8405('0x21')](function(_0x11bce5){_0x3b14e5[_0x8405('0x44')]=_0x11bce5;return _0x3b14e5;})['then'](respondWithFilteredResult(_0x7e216b,_0xe019ff))['catch'](handleError(_0x7e216b,null));};exports[_0x8405('0x45')]=function(_0x572044,_0x21bc90){var _0x45c09c={'raw':![],'where':{'id':_0x572044['params']['id']}},_0x10e974={};_0x10e974[_0x8405('0x34')]=_[_0x8405('0x46')](db['VoiceChanSpy'][_0x8405('0x2d')]);_0x10e974[_0x8405('0x32')]=_[_0x8405('0x46')](_0x572044[_0x8405('0x32')]);_0x10e974[_0x8405('0x33')]=_[_0x8405('0x36')](_0x10e974[_0x8405('0x34')],_0x10e974['query']);_0x45c09c['attributes']=_['intersection'](_0x10e974[_0x8405('0x34')],qs[_0x8405('0x37')](_0x572044[_0x8405('0x32')][_0x8405('0x37')]));_0x45c09c['attributes']=_0x45c09c['attributes'][_0x8405('0x38')]?_0x45c09c[_0x8405('0x35')]:_0x10e974[_0x8405('0x34')];if(_0x572044[_0x8405('0x32')][_0x8405('0x41')]){_0x45c09c[_0x8405('0x42')]=[{'all':!![]}];}_0x45c09c=_[_0x8405('0x3f')]({},_0x45c09c,_0x572044[_0x8405('0x47')]);return db['VoiceChanSpy'][_0x8405('0x48')](_0x45c09c)['then'](handleEntityNotFound(_0x21bc90,null))[_0x8405('0x21')](respondWithResult(_0x21bc90,null))[_0x8405('0x49')](handleError(_0x21bc90,null));};exports[_0x8405('0x4a')]=function(_0x3e0861,_0x9a0ffe){return db[_0x8405('0x2c')][_0x8405('0x4a')](_0x3e0861[_0x8405('0x4b')],{})['then'](function(_0x20f520){var _0x1cc41f=_0x3e0861[_0x8405('0x4c')][_0x8405('0x22')]({'plain':!![]});if(!_0x1cc41f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1cc41f['role']===_0x8405('0x4c')){var _0x30b761=_0x20f520[_0x8405('0x22')]({'plain':!![]});var _0x2c8432=_0x8405('0x23');return db[_0x8405('0x4d')][_0x8405('0x48')]({'where':{'name':_0x2c8432,'userProfileId':_0x1cc41f['userProfileId']},'raw':!![]})['then'](function(_0x340c54){if(_0x340c54&&_0x340c54['autoAssociation']===0x0){return db[_0x8405('0x24')][_0x8405('0x4a')]({'name':_0x30b761[_0x8405('0x29')],'resourceId':_0x30b761['id'],'type':_0x340c54['name'],'sectionId':_0x340c54['id']},{})['then'](function(){return _0x20f520;});}else{return _0x20f520;}})[_0x8405('0x49')](function(_0x4d4e37){logger[_0x8405('0x27')](_0x8405('0x4e'),_0x4d4e37);throw _0x4d4e37;});}return _0x20f520;})[_0x8405('0x21')](respondWithResult(_0x9a0ffe,0xc9))[_0x8405('0x49')](handleError(_0x9a0ffe,null));};exports[_0x8405('0x4f')]=function(_0x302abc,_0x1f720c){if(_0x302abc[_0x8405('0x4b')]['id']){delete _0x302abc[_0x8405('0x4b')]['id'];}return db['VoiceChanSpy'][_0x8405('0x48')]({'where':{'id':_0x302abc[_0x8405('0x50')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0x1f720c,null))[_0x8405('0x21')](saveUpdates(_0x302abc['body'],null))[_0x8405('0x21')](respondWithResult(_0x1f720c,null))[_0x8405('0x49')](handleError(_0x1f720c,null));};exports[_0x8405('0x25')]=function(_0x22d378,_0xf007f8){return db[_0x8405('0x2c')]['find']({'where':{'id':_0x22d378[_0x8405('0x50')]['id']}})[_0x8405('0x21')](handleEntityNotFound(_0xf007f8,null))[_0x8405('0x21')](removeEntity(_0xf007f8,null))['catch'](handleError(_0xf007f8,null));};
\ No newline at end of file
index 02444ec..40381b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d8=['./voiceChanSpy.attributes','from-sip','%s%s','prefix','system','push','merge','format','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','length','concat','internal','User','findAll','then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x76d8,0x101));var _0x876d=function(_0x36421e,_0x10eadc){_0x36421e=_0x36421e-0x0;var _0xd2e87e=_0x76d8[_0x36421e];return _0xd2e87e;};'use strict';var _=require(_0x876d('0x0'));var util=require(_0x876d('0x1'));var BPromise=require('bluebird');var attributes=require(_0x876d('0x2'));var getUserApplications=function(_0x4b0431,_0x257c0a,_0x4d4233){var _0xc7a81b=0x1;var _0x5c313b=[];var _0x37ea2d={'context':_0x257c0a['context']||_0x876d('0x3'),'exten':util['format'](_0x876d('0x4'),_0x4b0431[_0x876d('0x5')],_0x4d4233),'type':_0x876d('0x6'),'isApp':![],'ChanSpyId':_0x4b0431['id'],'UserId':_0x257c0a['id']};_0x5c313b[_0x876d('0x7')](_[_0x876d('0x8')]({'app':'Set','appdata':util[_0x876d('0x9')](_0x876d('0xa'),_0x876d('0xb')),'priority':_0xc7a81b++},_0x37ea2d));if(_0x4b0431[_0x876d('0xc')]){_0x5c313b[_0x876d('0x7')](_[_0x876d('0x8')]({'app':'MixMonitor','appdata':util[_0x876d('0x9')](_0x876d('0xd'),_0x4b0431[_0x876d('0xe')]),'priority':_0xc7a81b++},_0x37ea2d));}if(_0x4b0431[_0x876d('0xf')]){_0x5c313b['push'](_[_0x876d('0x8')]({'app':_0x876d('0x10'),'appdata':_0x4b0431[_0x876d('0x11')],'priority':_0xc7a81b++},_0x37ea2d));}_0x5c313b[_0x876d('0x7')](_[_0x876d('0x8')]({'app':_0x876d('0x12'),'appdata':util[_0x876d('0x9')](_0x876d('0x13'),_0x257c0a[_0x876d('0x14')],_0x4b0431['options']?_0x4b0431[_0x876d('0x15')]['join'](''):''),'priority':_0xc7a81b++},_0x37ea2d));if(_0x4b0431[_0x876d('0xc')]){_0x5c313b[_0x876d('0x7')](_[_0x876d('0x8')]({'app':'StopMixMonitor','priority':_0xc7a81b++},_0x37ea2d));}return _0x5c313b;};var getChanSpyApplications=function(_0x1519da,_0x25ca6a){var _0x5cd9b9=[];for(var _0x3182a2=0x0,_0x1e82d5=0x1;_0x3182a2<_0x25ca6a[_0x876d('0x16')];_0x3182a2++,_0x1e82d5=0x1){_0x5cd9b9=_0x5cd9b9[_0x876d('0x17')](getUserApplications(_0x1519da,_0x25ca6a[_0x3182a2],_0x25ca6a[_0x3182a2][_0x876d('0x18')]));if(_0x25ca6a[_0x3182a2]['internal']!=_0x25ca6a[_0x3182a2][_0x876d('0x14')]){_0x5cd9b9=_0x5cd9b9[_0x876d('0x17')](getUserApplications(_0x1519da,_0x25ca6a[_0x3182a2],_0x25ca6a[_0x3182a2][_0x876d('0x14')]));}}return _0x5cd9b9;};var getChanSpyPromise=function(_0x295caa,_0x541abe){return new BPromise(function(_0x40deb1,_0x53ea8e){return _0x295caa[_0x876d('0x19')][_0x876d('0x1a')]({'attributes':['id',_0x876d('0x14'),_0x876d('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0x876d('0x1b')](function(_0x242336){if(_0x242336){return _0x40deb1(getChanSpyApplications(_0x541abe,_0x242336));}return _0x40deb1([]);})[_0x876d('0x1c')](function(_0x57d0a1){_0x53ea8e(_0x57d0a1);});});};module[_0x876d('0x1d')]=function(_0x3d2ad2,_0x224e44){var _0x5f3b67=_0x3d2ad2[_0x876d('0x1e')];return _0x3d2ad2[_0x876d('0x1f')](_0x876d('0x20'),attributes,{'tableName':_0x876d('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x52453c,_0x4bccd3,_0x167638){return getChanSpyPromise(_0x5f3b67,_0x52453c)['then'](function(_0x5cfdad){if(_0x5cfdad&&_0x5cfdad['length']){return _0x5f3b67[_0x876d('0x22')][_0x876d('0x23')](_0x5cfdad);}})['then'](function(){_0x167638();})[_0x876d('0x1c')](function(_0x28981d){_0x167638(_0x28981d);});},'afterUpdate':function(_0x4329dd,_0x36fc3c,_0x45bb38){return _0x5f3b67[_0x876d('0x22')]['destroy']({'where':{'ChanSpyId':_0x4329dd['id']}})[_0x876d('0x1b')](function(){return getChanSpyPromise(_0x5f3b67,_0x4329dd);})[_0x876d('0x1b')](function(_0x4995cb){if(_0x4995cb&&_0x4995cb['length']){return _0x5f3b67[_0x876d('0x22')]['bulkCreate'](_0x4995cb);}})['then'](function(){_0x45bb38();})[_0x876d('0x1c')](function(_0x15fe7e){_0x45bb38(_0x15fe7e);});},'afterDestroy':function(_0x5f36a0,_0x406265,_0x327352){return _0x5f3b67['VoiceExtension'][_0x876d('0x24')]({'where':{'ChanSpyId':_0x5f36a0['id']}})[_0x876d('0x1b')](function(){_0x327352();})[_0x876d('0x1c')](function(_0x2d2c54){_0x327352(_0x2d2c54);});}}});};
\ No newline at end of file
+var _0x395f=['./voiceChanSpy.attributes','prefix','system','push','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','merge','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','User','findAll','agent','catch','exports','models','define','VoiceChanSpy','then','VoiceExtension','destroy','bulkCreate','lodash','util'];(function(_0x2e824d,_0x2283e6){var _0x270198=function(_0x3d5007){while(--_0x3d5007){_0x2e824d['push'](_0x2e824d['shift']());}};_0x270198(++_0x2283e6);}(_0x395f,0xe8));var _0xf395=function(_0x31653c,_0x94e67b){_0x31653c=_0x31653c-0x0;var _0x31f63a=_0x395f[_0x31653c];return _0x31f63a;};'use strict';var _=require(_0xf395('0x0'));var util=require(_0xf395('0x1'));var BPromise=require('bluebird');var attributes=require(_0xf395('0x2'));var getUserApplications=function(_0x127d01,_0x19060c,_0x449f13){var _0xf1df40=0x1;var _0x53ec8e=[];var _0x1ba162={'context':_0x19060c['context']||'from-sip','exten':util['format']('%s%s',_0x127d01[_0xf395('0x3')],_0x449f13),'type':_0xf395('0x4'),'isApp':![],'ChanSpyId':_0x127d01['id'],'UserId':_0x19060c['id']};_0x53ec8e[_0xf395('0x5')](_['merge']({'app':_0xf395('0x6'),'appdata':util[_0xf395('0x7')](_0xf395('0x8'),_0xf395('0x9')),'priority':_0xf1df40++},_0x1ba162));if(_0x127d01[_0xf395('0xa')]){_0x53ec8e['push'](_['merge']({'app':_0xf395('0xb'),'appdata':util[_0xf395('0x7')](_0xf395('0xc'),_0x127d01[_0xf395('0xd')]),'priority':_0xf1df40++},_0x1ba162));}if(_0x127d01[_0xf395('0xe')]){_0x53ec8e[_0xf395('0x5')](_[_0xf395('0xf')]({'app':_0xf395('0x10'),'appdata':_0x127d01[_0xf395('0x11')],'priority':_0xf1df40++},_0x1ba162));}_0x53ec8e[_0xf395('0x5')](_[_0xf395('0xf')]({'app':_0xf395('0x12'),'appdata':util[_0xf395('0x7')](_0xf395('0x13'),_0x19060c[_0xf395('0x14')],_0x127d01[_0xf395('0x15')]?_0x127d01[_0xf395('0x15')][_0xf395('0x16')](''):''),'priority':_0xf1df40++},_0x1ba162));if(_0x127d01[_0xf395('0xa')]){_0x53ec8e[_0xf395('0x5')](_['merge']({'app':_0xf395('0x17'),'priority':_0xf1df40++},_0x1ba162));}return _0x53ec8e;};var getChanSpyApplications=function(_0x3f2119,_0x5ddf79){var _0x4f80d1=[];for(var _0xccce55=0x0,_0xa77a16=0x1;_0xccce55<_0x5ddf79[_0xf395('0x18')];_0xccce55++,_0xa77a16=0x1){_0x4f80d1=_0x4f80d1[_0xf395('0x19')](getUserApplications(_0x3f2119,_0x5ddf79[_0xccce55],_0x5ddf79[_0xccce55][_0xf395('0x1a')]));if(_0x5ddf79[_0xccce55][_0xf395('0x1a')]!=_0x5ddf79[_0xccce55][_0xf395('0x14')]){_0x4f80d1=_0x4f80d1[_0xf395('0x19')](getUserApplications(_0x3f2119,_0x5ddf79[_0xccce55],_0x5ddf79[_0xccce55][_0xf395('0x14')]));}}return _0x4f80d1;};var getChanSpyPromise=function(_0x4020c3,_0x569974){return new BPromise(function(_0x467079,_0x36dfd0){return _0x4020c3[_0xf395('0x1b')][_0xf395('0x1c')]({'attributes':['id',_0xf395('0x14'),_0xf395('0x1a')],'where':{'role':_0xf395('0x1d'),'chanspy':!![]},'raw':!![]})['then'](function(_0x3876aa){if(_0x3876aa){return _0x467079(getChanSpyApplications(_0x569974,_0x3876aa));}return _0x467079([]);})[_0xf395('0x1e')](function(_0x14153f){_0x36dfd0(_0x14153f);});});};module[_0xf395('0x1f')]=function(_0x42e390,_0x5d55e0){var _0x33761b=_0x42e390[_0xf395('0x20')];return _0x42e390[_0xf395('0x21')](_0xf395('0x22'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x92dd4c,_0x5002bb,_0x3e06a7){return getChanSpyPromise(_0x33761b,_0x92dd4c)[_0xf395('0x23')](function(_0x16a105){if(_0x16a105&&_0x16a105['length']){return _0x33761b[_0xf395('0x24')]['bulkCreate'](_0x16a105);}})[_0xf395('0x23')](function(){_0x3e06a7();})['catch'](function(_0x71516a){_0x3e06a7(_0x71516a);});},'afterUpdate':function(_0x426d33,_0x58baf8,_0x3fc5d1){return _0x33761b[_0xf395('0x24')][_0xf395('0x25')]({'where':{'ChanSpyId':_0x426d33['id']}})[_0xf395('0x23')](function(){return getChanSpyPromise(_0x33761b,_0x426d33);})['then'](function(_0x582803){if(_0x582803&&_0x582803[_0xf395('0x18')]){return _0x33761b['VoiceExtension'][_0xf395('0x26')](_0x582803);}})[_0xf395('0x23')](function(){_0x3fc5d1();})['catch'](function(_0x404db2){_0x3fc5d1(_0x404db2);});},'afterDestroy':function(_0x387bf8,_0x2f5349,_0x41dfe5){return _0x33761b[_0xf395('0x24')]['destroy']({'where':{'ChanSpyId':_0x387bf8['id']}})[_0xf395('0x23')](function(){_0x41dfe5();})[_0xf395('0x1e')](function(_0x4dee12){_0x41dfe5(_0x4dee12);});}}});};
\ No newline at end of file
index 04151ea..71db578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b24=['client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../config/logger','../../config/environment'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x6b24,0x1ce));var _0x46b2=function(_0x51ec61,_0xf9d1e3){_0x51ec61=_0x51ec61-0x0;var _0x223200=_0x6b24[_0x51ec61];return _0x223200;};'use strict';var _=require('lodash');var util=require(_0x46b2('0x0'));var moment=require(_0x46b2('0x1'));var BPromise=require(_0x46b2('0x2'));var rs=require(_0x46b2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x46b2('0x4'))('rpc');var config=require(_0x46b2('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x46b2('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x512905,_0x326eb7,_0x233ccf){return new BPromise(function(_0x1f81b8,_0x1531c){return client[_0x46b2('0x7')](_0x512905,_0x233ccf)[_0x46b2('0x8')](function(_0x3144df){logger[_0x46b2('0x9')](_0x46b2('0xa'),_0x326eb7,'request\x20sent');logger['debug'](_0x46b2('0xb'),_0x326eb7,_0x46b2('0xc'),JSON[_0x46b2('0xd')](_0x3144df));if(_0x3144df['error']){if(_0x3144df[_0x46b2('0xe')][_0x46b2('0xf')]===0x1f4){logger[_0x46b2('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x326eb7,_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);return _0x1531c(_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);}logger[_0x46b2('0xe')](_0x46b2('0xa'),_0x326eb7,_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);return _0x1f81b8(_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);}else{logger['info'](_0x46b2('0xa'),_0x326eb7,_0x46b2('0xc'));_0x1f81b8(_0x3144df['result'][_0x46b2('0x10')]);}})[_0x46b2('0x11')](function(_0xe3d3d9){logger[_0x46b2('0xe')](_0x46b2('0xa'),_0x326eb7,_0xe3d3d9);_0x1531c(_0xe3d3d9);});});}
\ No newline at end of file
+var _0x4e81=['VoiceChanSpy,\x20%s,\x20%s','message','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x36b897,_0x136d24){var _0x1653e1=function(_0x5549ea){while(--_0x5549ea){_0x36b897['push'](_0x36b897['shift']());}};_0x1653e1(++_0x136d24);}(_0x4e81,0x1bc));var _0x14e8=function(_0x547e20,_0x284545){_0x547e20=_0x547e20-0x0;var _0x359171=_0x4e81[_0x547e20];return _0x359171;};'use strict';var _=require(_0x14e8('0x0'));var util=require(_0x14e8('0x1'));var moment=require(_0x14e8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14e8('0x3'))['db'];var utils=require(_0x14e8('0x4'));var logger=require(_0x14e8('0x5'))(_0x14e8('0x6'));var config=require(_0x14e8('0x7'));var jayson=require(_0x14e8('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3e73d2,_0x449fa3,_0x21f860){return new BPromise(function(_0x3c1b93,_0x11ec3b){return client[_0x14e8('0x9')](_0x3e73d2,_0x21f860)[_0x14e8('0xa')](function(_0x1d8402){logger[_0x14e8('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0x449fa3,_0x14e8('0xc'));logger[_0x14e8('0xd')](_0x14e8('0xe'),_0x449fa3,_0x14e8('0xc'),JSON[_0x14e8('0xf')](_0x1d8402));if(_0x1d8402[_0x14e8('0x10')]){if(_0x1d8402[_0x14e8('0x10')][_0x14e8('0x11')]===0x1f4){logger['error'](_0x14e8('0x12'),_0x449fa3,_0x1d8402['error'][_0x14e8('0x13')]);return _0x11ec3b(_0x1d8402[_0x14e8('0x10')][_0x14e8('0x13')]);}logger['error'](_0x14e8('0x12'),_0x449fa3,_0x1d8402['error'][_0x14e8('0x13')]);return _0x3c1b93(_0x1d8402['error'][_0x14e8('0x13')]);}else{logger[_0x14e8('0xb')](_0x14e8('0x12'),_0x449fa3,_0x14e8('0xc'));_0x3c1b93(_0x1d8402['result'][_0x14e8('0x13')]);}})[_0x14e8('0x14')](function(_0x30581){logger[_0x14e8('0x10')](_0x14e8('0x12'),_0x449fa3,_0x30581);_0x11ec3b(_0x30581);});});}
\ No newline at end of file
index 0033077..22bfa2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd4=['exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','index','get','/:id','show','post','put','delete','isAuthenticated','destroy'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x5cd4,0x9a));var _0x45cd=function(_0x56b171,_0x233718){_0x56b171=_0x56b171-0x0;var _0x223800=_0x5cd4[_0x56b171];return _0x223800;};'use strict';var multer=require(_0x45cd('0x0'));var util=require('util');var path=require(_0x45cd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x45cd('0x2'));var auth=require(_0x45cd('0x3'));var interaction=require(_0x45cd('0x4'));var config=require(_0x45cd('0x5'));var controller=require(_0x45cd('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x45cd('0x7')]);router[_0x45cd('0x8')](_0x45cd('0x9'),auth['isAuthenticated'](),controller[_0x45cd('0xa')]);router[_0x45cd('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x45cd('0xc')](_0x45cd('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x45cd('0xd')](_0x45cd('0x9'),auth[_0x45cd('0xe')](),controller[_0x45cd('0xf')]);module[_0x45cd('0x10')]=router;
\ No newline at end of file
+var _0xd7b0=['post','create','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceContext.controller','get','index','/:id','isAuthenticated','show'];(function(_0x943a34,_0x219629){var _0x3428ea=function(_0x43bd95){while(--_0x43bd95){_0x943a34['push'](_0x943a34['shift']());}};_0x3428ea(++_0x219629);}(_0xd7b0,0x1a6));var _0x0d7b=function(_0x3577fc,_0x5de0bc){_0x3577fc=_0x3577fc-0x0;var _0x1b83f9=_0xd7b0[_0x3577fc];return _0x1b83f9;};'use strict';var multer=require(_0x0d7b('0x0'));var util=require(_0x0d7b('0x1'));var path=require(_0x0d7b('0x2'));var timeout=require(_0x0d7b('0x3'));var express=require(_0x0d7b('0x4'));var router=express[_0x0d7b('0x5')]();var fs_extra=require(_0x0d7b('0x6'));var auth=require(_0x0d7b('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0d7b('0x8'));var controller=require(_0x0d7b('0x9'));router[_0x0d7b('0xa')]('/',auth['isAuthenticated'](),controller[_0x0d7b('0xb')]);router[_0x0d7b('0xa')](_0x0d7b('0xc'),auth[_0x0d7b('0xd')](),controller[_0x0d7b('0xe')]);router[_0x0d7b('0xf')]('/',auth[_0x0d7b('0xd')](),controller[_0x0d7b('0x10')]);router[_0x0d7b('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x0d7b('0x12')]);router['delete'](_0x0d7b('0xc'),auth[_0x0d7b('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 30cb07f..ed107b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e82=['STRING','name','BOOLEAN','exports'];(function(_0x366776,_0x48f0bf){var _0x34e2ad=function(_0xb7dfb0){while(--_0xb7dfb0){_0x366776['push'](_0x366776['shift']());}};_0x34e2ad(++_0x48f0bf);}(_0x6e82,0x1a7));var _0x26e8=function(_0x834bb6,_0x1c5e35){_0x834bb6=_0x834bb6-0x0;var _0xa35d00=_0x6e82[_0x834bb6];return _0xa35d00;};'use strict';var Sequelize=require('sequelize');module[_0x26e8('0x0')]={'name':{'type':Sequelize[_0x26e8('0x1')],'unique':_0x26e8('0x2')},'description':{'type':Sequelize[_0x26e8('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x26e8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x09da=['exports','STRING','name','BOOLEAN','sequelize'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x09da,0x1df));var _0xa09d=function(_0x5cde20,_0x58eafb){_0x5cde20=_0x5cde20-0x0;var _0x2202d3=_0x09da[_0x5cde20];return _0x2202d3;};'use strict';var Sequelize=require(_0xa09d('0x0'));module[_0xa09d('0x1')]={'name':{'type':Sequelize[_0xa09d('0x2')],'unique':_0xa09d('0x3')},'description':{'type':Sequelize[_0xa09d('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xa09d('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 230eecf..14c54da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b7=['crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','info','catch','sendStatus','end','json','limit','count','offset','status','set','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','stack','name','send','index','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','filter','where','merge','VIRTUAL','options','VoiceContext','includeAll','include','findAll','rows','params','rawAttributes','find','create','body','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','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x99b7,0x18b));var _0x799b=function(_0x35af23,_0x9190f6){_0x35af23=_0x35af23-0x0;var _0x340506=_0x99b7[_0x35af23];return _0x340506;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x799b('0x0'));var jsonpatch=require(_0x799b('0x1'));var rp=require(_0x799b('0x2'));var moment=require(_0x799b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x799b('0x4'));var util=require(_0x799b('0x5'));var path=require(_0x799b('0x6'));var sox=require(_0x799b('0x7'));var csv=require(_0x799b('0x8'));var ejs=require(_0x799b('0x9'));var fs=require('fs');var fs_extra=require(_0x799b('0xa'));var _=require(_0x799b('0xb'));var squel=require(_0x799b('0xc'));var crypto=require(_0x799b('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x799b('0xe'));var Papa=require(_0x799b('0xf'));var Redis=require(_0x799b('0x10'));var authService=require(_0x799b('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x799b('0x12'));var logger=require(_0x799b('0x13'))('api');var utils=require(_0x799b('0x14'));var config=require(_0x799b('0x15'));var licenseUtil=require(_0x799b('0x16'));var db=require(_0x799b('0x17'))['db'];var jayson=require(_0x799b('0x18'));var client=jayson[_0x799b('0x19')][_0x799b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x496fcf,_0x501aaf,_0xa38fc6,_0x3ed600){return new BPromise(function(_0x11e84d,_0x4561d4){var _0x4767c0=_0x3ed600||client;return _0x4767c0['request'](_0x496fcf,_0xa38fc6)[_0x799b('0x1b')](function(_0x28bd23){logger['info'](_0x799b('0x1c'),_0x501aaf,'request\x20sent');logger[_0x799b('0x1d')](_0x799b('0x1e'),_0x501aaf,_0x799b('0x1f'),JSON['stringify'](_0x28bd23));if(_0x28bd23['error']){if(_0x28bd23['error'][_0x799b('0x20')]===0x1f4){logger[_0x799b('0x21')](_0x799b('0x1c'),_0x501aaf,_0x28bd23[_0x799b('0x21')][_0x799b('0x22')]);return _0x4561d4(_0x28bd23[_0x799b('0x21')][_0x799b('0x22')]);}logger[_0x799b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x501aaf,_0x28bd23[_0x799b('0x21')]['message']);return _0x11e84d(_0x28bd23[_0x799b('0x21')][_0x799b('0x22')]);}else{logger[_0x799b('0x23')](_0x799b('0x1c'),_0x501aaf,_0x799b('0x1f'));_0x11e84d(_0x28bd23['result'][_0x799b('0x22')]);}})[_0x799b('0x24')](function(_0x3ff15c){logger[_0x799b('0x21')]('VoiceContext,\x20%s,\x20%s',_0x501aaf,_0x3ff15c);_0x4561d4(_0x3ff15c);});});}function respondWithStatusCode(_0x5606bf,_0x362828){_0x362828=_0x362828||0xcc;return function(_0x59a251){if(_0x59a251){return _0x5606bf[_0x799b('0x25')](_0x362828);}return _0x5606bf['status'](_0x362828)[_0x799b('0x26')]();};}function respondWithResult(_0x239a3c,_0x221333){_0x221333=_0x221333||0xc8;return function(_0x2a9397){if(_0x2a9397){return _0x239a3c['status'](_0x221333)[_0x799b('0x27')](_0x2a9397);}};}function respondWithFilteredResult(_0x54c7fd,_0x36806d){return function(_0x409a83){if(_0x409a83){var _0x696294=typeof _0x36806d['offset']==='undefined'&&typeof _0x36806d[_0x799b('0x28')]==='undefined';var _0x25e5b4=_0x409a83[_0x799b('0x29')];var _0x5726e9=_0x696294?0x0:_0x36806d[_0x799b('0x2a')];var _0x493b2c=_0x696294?_0x409a83['count']:_0x36806d[_0x799b('0x2a')]+_0x36806d[_0x799b('0x28')];var _0x370021;if(_0x493b2c>=_0x25e5b4){_0x493b2c=_0x25e5b4;_0x370021=0xc8;}else{_0x370021=0xce;}_0x54c7fd[_0x799b('0x2b')](_0x370021);return _0x54c7fd[_0x799b('0x2c')](_0x799b('0x2d'),_0x5726e9+'-'+_0x493b2c+'/'+_0x25e5b4)[_0x799b('0x27')](_0x409a83);}return null;};}function patchUpdates(_0x2484e9){return function(_0x4303db){try{jsonpatch[_0x799b('0x2e')](_0x4303db,_0x2484e9,!![]);}catch(_0x2e251e){return BPromise[_0x799b('0x2f')](_0x2e251e);}return _0x4303db[_0x799b('0x30')]();};}function saveUpdates(_0x19eece,_0x328566){return function(_0x52c66a){if(_0x52c66a){return _0x52c66a[_0x799b('0x31')](_0x19eece)[_0x799b('0x1b')](function(_0x22c102){return _0x22c102;});}return null;};}function removeEntity(_0x3a6d73,_0x2a408d){return function(_0x465059){if(_0x465059){return _0x465059[_0x799b('0x32')]()['then'](function(){var _0x2f56f0=_0x465059[_0x799b('0x33')]({'plain':!![]});var _0x3dce94=_0x799b('0x34');return db[_0x799b('0x35')]['destroy']({'where':{'type':_0x3dce94,'resourceId':_0x2f56f0['id']}})['then'](function(){return _0x465059;});})[_0x799b('0x1b')](function(){_0x3a6d73[_0x799b('0x2b')](0xcc)[_0x799b('0x26')]();});}};}function handleEntityNotFound(_0x55eb0e,_0x33aee8){return function(_0x1a82cb){if(!_0x1a82cb){_0x55eb0e[_0x799b('0x25')](0x194);}return _0x1a82cb;};}function handleError(_0x515e74,_0x4399e2){_0x4399e2=_0x4399e2||0x1f4;return function(_0x4c219e){logger[_0x799b('0x21')](_0x4c219e[_0x799b('0x36')]);if(_0x4c219e[_0x799b('0x37')]){delete _0x4c219e[_0x799b('0x37')];}_0x515e74['status'](_0x4399e2)[_0x799b('0x38')](_0x4c219e);};}exports[_0x799b('0x39')]=function(_0x35a154,_0x11cd73){var _0x5283fd={},_0x5d95d0={},_0x38c280={'count':0x0,'rows':[]};var _0x17f981=_['map'](db['VoiceContext']['rawAttributes'],function(_0x14652d){return{'name':_0x14652d[_0x799b('0x3a')],'type':_0x14652d[_0x799b('0x3b')][_0x799b('0x3c')]};});_0x5d95d0[_0x799b('0x3d')]=_[_0x799b('0x3e')](_0x17f981,_0x799b('0x37'));_0x5d95d0[_0x799b('0x3f')]=_[_0x799b('0x40')](_0x35a154['query']);_0x5d95d0['filters']=_[_0x799b('0x41')](_0x5d95d0['model'],_0x5d95d0['query']);_0x5283fd[_0x799b('0x42')]=_[_0x799b('0x41')](_0x5d95d0[_0x799b('0x3d')],qs[_0x799b('0x43')](_0x35a154[_0x799b('0x3f')]['fields']));_0x5283fd['attributes']=_0x5283fd[_0x799b('0x42')][_0x799b('0x44')]?_0x5283fd[_0x799b('0x42')]:_0x5d95d0[_0x799b('0x3d')];if(!_0x35a154['query'][_0x799b('0x45')]('nolimit')){_0x5283fd[_0x799b('0x28')]=qs[_0x799b('0x28')](_0x35a154[_0x799b('0x3f')][_0x799b('0x28')]);_0x5283fd[_0x799b('0x2a')]=qs[_0x799b('0x2a')](_0x35a154[_0x799b('0x3f')][_0x799b('0x2a')]);}_0x5283fd['order']=qs[_0x799b('0x46')](_0x35a154['query']['sort']);_0x5283fd['where']=qs[_0x799b('0x47')](_[_0x799b('0x48')](_0x35a154[_0x799b('0x3f')],_0x5d95d0['filters']),_0x17f981);if(_0x35a154[_0x799b('0x3f')][_0x799b('0x49')]){_0x5283fd[_0x799b('0x4a')]=_[_0x799b('0x4b')](_0x5283fd[_0x799b('0x4a')],{'$or':_[_0x799b('0x3e')](_0x17f981,function(_0x270bc8){if(_0x270bc8[_0x799b('0x3b')]!==_0x799b('0x4c')){var _0x4f614e={};_0x4f614e[_0x270bc8[_0x799b('0x37')]]={'$like':'%'+_0x35a154[_0x799b('0x3f')]['filter']+'%'};return _0x4f614e;}})});}_0x5283fd=_[_0x799b('0x4b')]({},_0x5283fd,_0x35a154[_0x799b('0x4d')]);var _0x4d29f9={'where':_0x5283fd[_0x799b('0x4a')]};return db[_0x799b('0x4e')][_0x799b('0x29')](_0x4d29f9)[_0x799b('0x1b')](function(_0x30a15b){_0x38c280[_0x799b('0x29')]=_0x30a15b;if(_0x35a154['query'][_0x799b('0x4f')]){_0x5283fd[_0x799b('0x50')]=[{'all':!![]}];}return db[_0x799b('0x4e')][_0x799b('0x51')](_0x5283fd);})[_0x799b('0x1b')](function(_0x223de6){_0x38c280[_0x799b('0x52')]=_0x223de6;return _0x38c280;})['then'](respondWithFilteredResult(_0x11cd73,_0x5283fd))['catch'](handleError(_0x11cd73,null));};exports['show']=function(_0x435115,_0x58bee5){var _0x590d8d={'raw':![],'where':{'id':_0x435115[_0x799b('0x53')]['id']}},_0x373ece={};_0x373ece[_0x799b('0x3d')]=_[_0x799b('0x40')](db[_0x799b('0x4e')][_0x799b('0x54')]);_0x373ece[_0x799b('0x3f')]=_['keys'](_0x435115[_0x799b('0x3f')]);_0x373ece[_0x799b('0x47')]=_[_0x799b('0x41')](_0x373ece[_0x799b('0x3d')],_0x373ece['query']);_0x590d8d[_0x799b('0x42')]=_['intersection'](_0x373ece[_0x799b('0x3d')],qs[_0x799b('0x43')](_0x435115[_0x799b('0x3f')][_0x799b('0x43')]));_0x590d8d[_0x799b('0x42')]=_0x590d8d['attributes'][_0x799b('0x44')]?_0x590d8d[_0x799b('0x42')]:_0x373ece['model'];if(_0x435115[_0x799b('0x3f')][_0x799b('0x4f')]){_0x590d8d['include']=[{'all':!![]}];}_0x590d8d=_[_0x799b('0x4b')]({},_0x590d8d,_0x435115[_0x799b('0x4d')]);return db[_0x799b('0x4e')][_0x799b('0x55')](_0x590d8d)[_0x799b('0x1b')](handleEntityNotFound(_0x58bee5,null))[_0x799b('0x1b')](respondWithResult(_0x58bee5,null))[_0x799b('0x24')](handleError(_0x58bee5,null));};exports[_0x799b('0x56')]=function(_0x523c82,_0x4b8095,_0x5708bc){var _0x5afe5e;return db['VoiceContext'][_0x799b('0x56')](_0x523c82[_0x799b('0x57')],{'raw':!![]})['then'](function(_0x35aca0){_0x5afe5e=_0x35aca0;return db[_0x799b('0x4e')][_0x799b('0x51')]({'raw':!![]});})[_0x799b('0x1b')](function(_0x6305ff){var _0x5dcc7a=fs['readFileSync'](path[_0x799b('0x58')](config[_0x799b('0x59')],_0x799b('0x5a')),_0x799b('0x5b'));var _0x3fb771=ejs[_0x799b('0x5c')](_0x5dcc7a,{'contexts':_0x6305ff||[]});fs[_0x799b('0x5d')](_0x799b('0x5e'),_0x3fb771);})[_0x799b('0x1b')](function(){return respondWithRpcPromise(_0x799b('0x5f'),_0x799b('0x56'),{'module':_0x799b('0x60')});})[_0x799b('0x1b')](function(){var _0x2ecc2a=_0x523c82[_0x799b('0x61')][_0x799b('0x33')]({'plain':!![]});if(!_0x2ecc2a)throw new Error(_0x799b('0x62'));if(_0x2ecc2a['role']==='user'){var _0x38dcea=_0x5afe5e['get']({'plain':!![]});return db['UserProfileSection'][_0x799b('0x55')]({'where':{'name':'Contexts','userProfileId':_0x2ecc2a[_0x799b('0x63')]},'raw':!![]})[_0x799b('0x1b')](function(_0x3d0e78){if(_0x3d0e78&&_0x3d0e78['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x38dcea[_0x799b('0x37')],'resourceId':_0x38dcea['id'],'type':_0x3d0e78[_0x799b('0x37')],'sectionId':_0x3d0e78['id']},{})['then'](function(){return _0x5afe5e;});}else{return _0x5afe5e;}})[_0x799b('0x24')](function(_0x3a23d2){logger[_0x799b('0x21')](_0x799b('0x64'),_0x3a23d2);throw _0x3a23d2;});}return _0x5afe5e;})[_0x799b('0x1b')](respondWithResult(_0x4b8095,0xc9))[_0x799b('0x24')](handleError(_0x4b8095,null));};exports[_0x799b('0x31')]=function(_0x5cb22c,_0x50d6b1,_0x219775){var _0xcf4a90;return db[_0x799b('0x4e')][_0x799b('0x55')]({'where':{'id':_0x5cb22c[_0x799b('0x53')]['id']}})['then'](handleEntityNotFound(_0x50d6b1,null))['then'](saveUpdates(_0x5cb22c['body'],null))[_0x799b('0x1b')](function(_0x5bc360){if(_0x5bc360){_0xcf4a90=_0x5bc360;return db[_0x799b('0x4e')][_0x799b('0x51')]({'raw':!![]});}})['then'](function(_0x3b1e31){var _0x57107d=fs[_0x799b('0x65')](path['join'](config[_0x799b('0x59')],_0x799b('0x5a')),_0x799b('0x5b'));var _0x644c33=ejs[_0x799b('0x5c')](_0x57107d,{'contexts':_0x3b1e31||[]});fs[_0x799b('0x5d')](_0x799b('0x5e'),_0x644c33);})[_0x799b('0x1b')](function(){return respondWithRpcPromise('Reload',_0x799b('0x31'),{'module':_0x799b('0x60')});})[_0x799b('0x1b')](function(){return _0xcf4a90;})[_0x799b('0x1b')](respondWithResult(_0x50d6b1,null))[_0x799b('0x24')](handleError(_0x50d6b1,null));};exports['destroy']=function(_0xe9b71b,_0x3cb825,_0x560e10){var _0x272cdd;return db[_0x799b('0x4e')][_0x799b('0x55')]({'where':{'id':_0xe9b71b[_0x799b('0x53')]['id']}})[_0x799b('0x1b')](handleEntityNotFound(_0x3cb825,null))[_0x799b('0x1b')](removeEntity(_0x3cb825,null))['then'](function(){return db[_0x799b('0x4e')][_0x799b('0x51')]({'raw':!![]});})[_0x799b('0x1b')](function(_0xd05252){var _0x3e0381=fs[_0x799b('0x65')](path['join'](config[_0x799b('0x59')],_0x799b('0x5a')),_0x799b('0x5b'));var _0x4fee7b=ejs['render'](_0x3e0381,{'contexts':_0xd05252});fs['writeFileSync'](_0x799b('0x5e'),_0x4fee7b);return respondWithRpcPromise('Reload',_0x799b('0x32'),{'module':'chan_sip.so'});})[_0x799b('0x24')](handleError(_0x3cb825,null));};
\ No newline at end of file
+var _0x5ea8=['type','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','catch','create','readFileSync','utf8','render','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','root','join','server/files/templates/context.ejs','/etc/asterisk/extensions_xcally_contexts.conf','eml-format','zip-dir','fast-json-patch','mustache','util','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/environment','../../config/license/util','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','then','destroy','get','Contexts','UserProfileResource','name','send','index','map','VoiceContext','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge'];(function(_0x1af046,_0x218baa){var _0x479abf=function(_0x250048){while(--_0x250048){_0x1af046['push'](_0x1af046['shift']());}};_0x479abf(++_0x218baa);}(_0x5ea8,0x8a));var _0x85ea=function(_0x960423,_0x133518){_0x960423=_0x960423-0x0;var _0x1b25e5=_0x5ea8[_0x960423];return _0x1b25e5;};'use strict';var emlformat=require(_0x85ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x85ea('0x1'));var jsonpatch=require(_0x85ea('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x85ea('0x3'));var util=require(_0x85ea('0x4'));var path=require('path');var sox=require(_0x85ea('0x5'));var csv=require(_0x85ea('0x6'));var ejs=require(_0x85ea('0x7'));var fs=require('fs');var fs_extra=require(_0x85ea('0x8'));var _=require(_0x85ea('0x9'));var squel=require(_0x85ea('0xa'));var crypto=require(_0x85ea('0xb'));var jsforce=require(_0x85ea('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x85ea('0x6'));var querystring=require(_0x85ea('0xd'));var Papa=require(_0x85ea('0xe'));var Redis=require(_0x85ea('0xf'));var authService=require(_0x85ea('0x10'));var qs=require(_0x85ea('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x85ea('0x12'));var logger=require(_0x85ea('0x13'))(_0x85ea('0x14'));var utils=require('../../config/utils');var config=require(_0x85ea('0x15'));var licenseUtil=require(_0x85ea('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x85ea('0x17'));var client=jayson[_0x85ea('0x18')][_0x85ea('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x42f3a8,_0x592abe,_0x375170,_0x8de3e0){return new BPromise(function(_0x3918ad,_0x1969f5){var _0x45e78f=_0x8de3e0||client;return _0x45e78f[_0x85ea('0x1a')](_0x42f3a8,_0x375170)['then'](function(_0x53ad4e){logger[_0x85ea('0x1b')](_0x85ea('0x1c'),_0x592abe,_0x85ea('0x1d'));logger[_0x85ea('0x1e')](_0x85ea('0x1f'),_0x592abe,_0x85ea('0x1d'),JSON[_0x85ea('0x20')](_0x53ad4e));if(_0x53ad4e['error']){if(_0x53ad4e[_0x85ea('0x21')][_0x85ea('0x22')]===0x1f4){logger['error'](_0x85ea('0x1c'),_0x592abe,_0x53ad4e[_0x85ea('0x21')][_0x85ea('0x23')]);return _0x1969f5(_0x53ad4e[_0x85ea('0x21')][_0x85ea('0x23')]);}logger[_0x85ea('0x21')](_0x85ea('0x1c'),_0x592abe,_0x53ad4e[_0x85ea('0x21')][_0x85ea('0x23')]);return _0x3918ad(_0x53ad4e[_0x85ea('0x21')][_0x85ea('0x23')]);}else{logger[_0x85ea('0x1b')](_0x85ea('0x1c'),_0x592abe,_0x85ea('0x1d'));_0x3918ad(_0x53ad4e[_0x85ea('0x24')][_0x85ea('0x23')]);}})['catch'](function(_0x44b324){logger[_0x85ea('0x21')](_0x85ea('0x1c'),_0x592abe,_0x44b324);_0x1969f5(_0x44b324);});});}function respondWithStatusCode(_0xcff464,_0x11d02d){_0x11d02d=_0x11d02d||0xcc;return function(_0x4ec36e){if(_0x4ec36e){return _0xcff464['sendStatus'](_0x11d02d);}return _0xcff464[_0x85ea('0x25')](_0x11d02d)[_0x85ea('0x26')]();};}function respondWithResult(_0x547abc,_0x298480){_0x298480=_0x298480||0xc8;return function(_0x56e20c){if(_0x56e20c){return _0x547abc[_0x85ea('0x25')](_0x298480)[_0x85ea('0x27')](_0x56e20c);}};}function respondWithFilteredResult(_0x5bcca2,_0x38e613){return function(_0xff0fe4){if(_0xff0fe4){var _0x1e2236=typeof _0x38e613['offset']===_0x85ea('0x28')&&typeof _0x38e613[_0x85ea('0x29')]===_0x85ea('0x28');var _0x2ce864=_0xff0fe4[_0x85ea('0x2a')];var _0x55e0e8=_0x1e2236?0x0:_0x38e613[_0x85ea('0x2b')];var _0x6bfe8e=_0x1e2236?_0xff0fe4[_0x85ea('0x2a')]:_0x38e613[_0x85ea('0x2b')]+_0x38e613[_0x85ea('0x29')];var _0x589aad;if(_0x6bfe8e>=_0x2ce864){_0x6bfe8e=_0x2ce864;_0x589aad=0xc8;}else{_0x589aad=0xce;}_0x5bcca2['status'](_0x589aad);return _0x5bcca2['set'](_0x85ea('0x2c'),_0x55e0e8+'-'+_0x6bfe8e+'/'+_0x2ce864)[_0x85ea('0x27')](_0xff0fe4);}return null;};}function patchUpdates(_0x167de9){return function(_0x37d3b8){try{jsonpatch[_0x85ea('0x2d')](_0x37d3b8,_0x167de9,!![]);}catch(_0x510aa5){return BPromise['reject'](_0x510aa5);}return _0x37d3b8[_0x85ea('0x2e')]();};}function saveUpdates(_0x1bd311,_0x5dcdf9){return function(_0x3f52f7){if(_0x3f52f7){return _0x3f52f7[_0x85ea('0x2f')](_0x1bd311)[_0x85ea('0x30')](function(_0x393ff2){return _0x393ff2;});}return null;};}function removeEntity(_0x57902f,_0x4ad65e){return function(_0x11bef1){if(_0x11bef1){return _0x11bef1[_0x85ea('0x31')]()[_0x85ea('0x30')](function(){var _0x3e08fd=_0x11bef1[_0x85ea('0x32')]({'plain':!![]});var _0x55ce01=_0x85ea('0x33');return db[_0x85ea('0x34')][_0x85ea('0x31')]({'where':{'type':_0x55ce01,'resourceId':_0x3e08fd['id']}})[_0x85ea('0x30')](function(){return _0x11bef1;});})['then'](function(){_0x57902f[_0x85ea('0x25')](0xcc)[_0x85ea('0x26')]();});}};}function handleEntityNotFound(_0x5c9b70,_0x4b95aa){return function(_0x2d5f10){if(!_0x2d5f10){_0x5c9b70['sendStatus'](0x194);}return _0x2d5f10;};}function handleError(_0x5e97a4,_0x281497){_0x281497=_0x281497||0x1f4;return function(_0x98d7d0){logger['error'](_0x98d7d0['stack']);if(_0x98d7d0[_0x85ea('0x35')]){delete _0x98d7d0['name'];}_0x5e97a4[_0x85ea('0x25')](_0x281497)[_0x85ea('0x36')](_0x98d7d0);};}exports[_0x85ea('0x37')]=function(_0x5219ae,_0x46f9c2){var _0x3554ac={},_0x5f54a6={},_0x2cb197={'count':0x0,'rows':[]};var _0x4e8877=_[_0x85ea('0x38')](db[_0x85ea('0x39')][_0x85ea('0x3a')],function(_0x5adfa5){return{'name':_0x5adfa5[_0x85ea('0x3b')],'type':_0x5adfa5['type'][_0x85ea('0x3c')]};});_0x5f54a6[_0x85ea('0x3d')]=_[_0x85ea('0x38')](_0x4e8877,_0x85ea('0x35'));_0x5f54a6[_0x85ea('0x3e')]=_[_0x85ea('0x3f')](_0x5219ae[_0x85ea('0x3e')]);_0x5f54a6[_0x85ea('0x40')]=_[_0x85ea('0x41')](_0x5f54a6[_0x85ea('0x3d')],_0x5f54a6[_0x85ea('0x3e')]);_0x3554ac[_0x85ea('0x42')]=_[_0x85ea('0x41')](_0x5f54a6['model'],qs[_0x85ea('0x43')](_0x5219ae[_0x85ea('0x3e')]['fields']));_0x3554ac[_0x85ea('0x42')]=_0x3554ac[_0x85ea('0x42')]['length']?_0x3554ac[_0x85ea('0x42')]:_0x5f54a6[_0x85ea('0x3d')];if(!_0x5219ae[_0x85ea('0x3e')][_0x85ea('0x44')](_0x85ea('0x45'))){_0x3554ac[_0x85ea('0x29')]=qs[_0x85ea('0x29')](_0x5219ae[_0x85ea('0x3e')][_0x85ea('0x29')]);_0x3554ac[_0x85ea('0x2b')]=qs[_0x85ea('0x2b')](_0x5219ae[_0x85ea('0x3e')][_0x85ea('0x2b')]);}_0x3554ac[_0x85ea('0x46')]=qs[_0x85ea('0x47')](_0x5219ae['query'][_0x85ea('0x47')]);_0x3554ac['where']=qs[_0x85ea('0x40')](_[_0x85ea('0x48')](_0x5219ae[_0x85ea('0x3e')],_0x5f54a6[_0x85ea('0x40')]),_0x4e8877);if(_0x5219ae['query'][_0x85ea('0x49')]){_0x3554ac[_0x85ea('0x4a')]=_[_0x85ea('0x4b')](_0x3554ac[_0x85ea('0x4a')],{'$or':_[_0x85ea('0x38')](_0x4e8877,function(_0xbe3db2){if(_0xbe3db2[_0x85ea('0x4c')]!==_0x85ea('0x4d')){var _0x562995={};_0x562995[_0xbe3db2[_0x85ea('0x35')]]={'$like':'%'+_0x5219ae['query']['filter']+'%'};return _0x562995;}})});}_0x3554ac=_['merge']({},_0x3554ac,_0x5219ae[_0x85ea('0x4e')]);var _0x39e93d={'where':_0x3554ac[_0x85ea('0x4a')]};return db[_0x85ea('0x39')]['count'](_0x39e93d)[_0x85ea('0x30')](function(_0x49e595){_0x2cb197[_0x85ea('0x2a')]=_0x49e595;if(_0x5219ae[_0x85ea('0x3e')][_0x85ea('0x4f')]){_0x3554ac['include']=[{'all':!![]}];}return db[_0x85ea('0x39')][_0x85ea('0x50')](_0x3554ac);})['then'](function(_0x4d143e){_0x2cb197[_0x85ea('0x51')]=_0x4d143e;return _0x2cb197;})[_0x85ea('0x30')](respondWithFilteredResult(_0x46f9c2,_0x3554ac))['catch'](handleError(_0x46f9c2,null));};exports[_0x85ea('0x52')]=function(_0x170853,_0x578087){var _0x397bce={'raw':![],'where':{'id':_0x170853[_0x85ea('0x53')]['id']}},_0x181eb4={};_0x181eb4[_0x85ea('0x3d')]=_['keys'](db[_0x85ea('0x39')][_0x85ea('0x3a')]);_0x181eb4[_0x85ea('0x3e')]=_['keys'](_0x170853[_0x85ea('0x3e')]);_0x181eb4['filters']=_[_0x85ea('0x41')](_0x181eb4[_0x85ea('0x3d')],_0x181eb4['query']);_0x397bce[_0x85ea('0x42')]=_[_0x85ea('0x41')](_0x181eb4[_0x85ea('0x3d')],qs[_0x85ea('0x43')](_0x170853[_0x85ea('0x3e')][_0x85ea('0x43')]));_0x397bce[_0x85ea('0x42')]=_0x397bce['attributes'][_0x85ea('0x54')]?_0x397bce['attributes']:_0x181eb4['model'];if(_0x170853['query']['includeAll']){_0x397bce[_0x85ea('0x55')]=[{'all':!![]}];}_0x397bce=_[_0x85ea('0x4b')]({},_0x397bce,_0x170853[_0x85ea('0x4e')]);return db['VoiceContext']['find'](_0x397bce)[_0x85ea('0x30')](handleEntityNotFound(_0x578087,null))[_0x85ea('0x30')](respondWithResult(_0x578087,null))[_0x85ea('0x56')](handleError(_0x578087,null));};exports['create']=function(_0xbd44b0,_0x287fd4,_0x25f6ad){var _0x15e71e;return db['VoiceContext'][_0x85ea('0x57')](_0xbd44b0['body'],{'raw':!![]})['then'](function(_0x900115){_0x15e71e=_0x900115;return db[_0x85ea('0x39')][_0x85ea('0x50')]({'raw':!![]});})[_0x85ea('0x30')](function(_0x245245){var _0x5ad06f=fs[_0x85ea('0x58')](path['join'](config['root'],'server/files/templates/context.ejs'),_0x85ea('0x59'));var _0x12ecb3=ejs[_0x85ea('0x5a')](_0x5ad06f,{'contexts':_0x245245||[]});fs[_0x85ea('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x12ecb3);})[_0x85ea('0x30')](function(){return respondWithRpcPromise(_0x85ea('0x5c'),_0x85ea('0x57'),{'module':_0x85ea('0x5d')});})[_0x85ea('0x30')](function(){var _0x32f3de=_0xbd44b0[_0x85ea('0x5e')]['get']({'plain':!![]});if(!_0x32f3de)throw new Error(_0x85ea('0x5f'));if(_0x32f3de[_0x85ea('0x60')]===_0x85ea('0x5e')){var _0x265041=_0x15e71e[_0x85ea('0x32')]({'plain':!![]});return db[_0x85ea('0x61')][_0x85ea('0x62')]({'where':{'name':_0x85ea('0x33'),'userProfileId':_0x32f3de[_0x85ea('0x63')]},'raw':!![]})[_0x85ea('0x30')](function(_0x4e42e9){if(_0x4e42e9&&_0x4e42e9[_0x85ea('0x64')]===0x0){return db[_0x85ea('0x34')][_0x85ea('0x57')]({'name':_0x265041[_0x85ea('0x35')],'resourceId':_0x265041['id'],'type':_0x4e42e9[_0x85ea('0x35')],'sectionId':_0x4e42e9['id']},{})[_0x85ea('0x30')](function(){return _0x15e71e;});}else{return _0x15e71e;}})['catch'](function(_0x16f03c){logger[_0x85ea('0x21')](_0x85ea('0x65'),_0x16f03c);throw _0x16f03c;});}return _0x15e71e;})['then'](respondWithResult(_0x287fd4,0xc9))[_0x85ea('0x56')](handleError(_0x287fd4,null));};exports[_0x85ea('0x2f')]=function(_0x320034,_0x4fcf5,_0x520c94){var _0x402f67;return db[_0x85ea('0x39')][_0x85ea('0x62')]({'where':{'id':_0x320034['params']['id']}})['then'](handleEntityNotFound(_0x4fcf5,null))[_0x85ea('0x30')](saveUpdates(_0x320034[_0x85ea('0x66')],null))[_0x85ea('0x30')](function(_0x1c929c){if(_0x1c929c){_0x402f67=_0x1c929c;return db[_0x85ea('0x39')][_0x85ea('0x50')]({'raw':!![]});}})[_0x85ea('0x30')](function(_0x3545fa){var _0x38848b=fs[_0x85ea('0x58')](path['join'](config[_0x85ea('0x67')],'server/files/templates/context.ejs'),_0x85ea('0x59'));var _0x477d5b=ejs['render'](_0x38848b,{'contexts':_0x3545fa||[]});fs[_0x85ea('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x477d5b);})[_0x85ea('0x30')](function(){return respondWithRpcPromise(_0x85ea('0x5c'),_0x85ea('0x2f'),{'module':'chan_sip.so'});})[_0x85ea('0x30')](function(){return _0x402f67;})[_0x85ea('0x30')](respondWithResult(_0x4fcf5,null))[_0x85ea('0x56')](handleError(_0x4fcf5,null));};exports['destroy']=function(_0x435528,_0x597d3d,_0x421247){var _0x46d2cf;return db[_0x85ea('0x39')][_0x85ea('0x62')]({'where':{'id':_0x435528[_0x85ea('0x53')]['id']}})[_0x85ea('0x30')](handleEntityNotFound(_0x597d3d,null))[_0x85ea('0x30')](removeEntity(_0x597d3d,null))[_0x85ea('0x30')](function(){return db[_0x85ea('0x39')][_0x85ea('0x50')]({'raw':!![]});})['then'](function(_0x2b7d85){var _0x1c8d17=fs[_0x85ea('0x58')](path[_0x85ea('0x68')](config[_0x85ea('0x67')],_0x85ea('0x69')),_0x85ea('0x59'));var _0x2408c4=ejs[_0x85ea('0x5a')](_0x1c8d17,{'contexts':_0x2b7d85});fs[_0x85ea('0x5b')](_0x85ea('0x6a'),_0x2408c4);return respondWithRpcPromise(_0x85ea('0x5c'),_0x85ea('0x31'),{'module':'chan_sip.so'});})[_0x85ea('0x56')](handleError(_0x597d3d,null));};
\ No newline at end of file
index 8b6a1e8..3e22971 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0dd=['voice_contexts','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./voiceContext.attributes','exports','define','VoiceContext'];(function(_0x983683,_0x5d9a25){var _0x3ea281=function(_0x5e7e45){while(--_0x5e7e45){_0x983683['push'](_0x983683['shift']());}};_0x3ea281(++_0x5d9a25);}(_0xb0dd,0xc1));var _0xdb0d=function(_0xd81023,_0x4bbcb2){_0xd81023=_0xd81023-0x0;var _0x324c6d=_0xb0dd[_0xd81023];return _0x324c6d;};'use strict';var _=require(_0xdb0d('0x0'));var util=require(_0xdb0d('0x1'));var logger=require(_0xdb0d('0x2'))('api');var moment=require(_0xdb0d('0x3'));var BPromise=require(_0xdb0d('0x4'));var rp=require(_0xdb0d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb0d('0x6'));var config=require('../../config/environment');var attributes=require(_0xdb0d('0x7'));module[_0xdb0d('0x8')]=function(_0x43d9f8,_0xd69e1c){return _0x43d9f8[_0xdb0d('0x9')](_0xdb0d('0xa'),attributes,{'tableName':_0xdb0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfeff=['./voiceContext.attributes','define','VoiceContext','voice_contexts','lodash','util','api','moment','path','../../config/environment'];(function(_0xd1b4d7,_0x28b2c1){var _0x3002ec=function(_0x3d95ce){while(--_0x3d95ce){_0xd1b4d7['push'](_0xd1b4d7['shift']());}};_0x3002ec(++_0x28b2c1);}(_0xfeff,0x1d0));var _0xffef=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xfeff[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0xffef('0x0'));var util=require(_0xffef('0x1'));var logger=require('../../config/logger')(_0xffef('0x2'));var moment=require(_0xffef('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xffef('0x4'));var rimraf=require('rimraf');var config=require(_0xffef('0x5'));var attributes=require(_0xffef('0x6'));module['exports']=function(_0x4a2cb8,_0xb3b126){return _0x4a2cb8[_0xffef('0x7')](_0xffef('0x8'),attributes,{'tableName':_0xffef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4040709..a9187bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa321=['bluebird','ioredis','../../mysqldb','../../config/logger','rpc','http','request','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','catch','lodash','util','moment'];(function(_0x56dbc3,_0x41c87a){var _0x58cf7f=function(_0x5a06e7){while(--_0x5a06e7){_0x56dbc3['push'](_0x56dbc3['shift']());}};_0x58cf7f(++_0x41c87a);}(_0xa321,0x9d));var _0x1a32=function(_0x509c83,_0x511882){_0x509c83=_0x509c83-0x0;var _0x534626=_0xa321[_0x509c83];return _0x534626;};'use strict';var _=require(_0x1a32('0x0'));var util=require(_0x1a32('0x1'));var moment=require(_0x1a32('0x2'));var BPromise=require(_0x1a32('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a32('0x4'));var db=require(_0x1a32('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a32('0x6'))(_0x1a32('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x1a32('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4859d6,_0x13b4d2,_0x1fa204){return new BPromise(function(_0xdfa9fe,_0x3f4723){return client[_0x1a32('0x9')](_0x4859d6,_0x1fa204)['then'](function(_0x343faf){logger[_0x1a32('0xa')]('VoiceContext,\x20%s,\x20%s',_0x13b4d2,_0x1a32('0xb'));logger[_0x1a32('0xc')](_0x1a32('0xd'),_0x13b4d2,_0x1a32('0xb'),JSON[_0x1a32('0xe')](_0x343faf));if(_0x343faf[_0x1a32('0xf')]){if(_0x343faf['error'][_0x1a32('0x10')]===0x1f4){logger[_0x1a32('0xf')](_0x1a32('0x11'),_0x13b4d2,_0x343faf['error'][_0x1a32('0x12')]);return _0x3f4723(_0x343faf[_0x1a32('0xf')][_0x1a32('0x12')]);}logger[_0x1a32('0xf')](_0x1a32('0x11'),_0x13b4d2,_0x343faf['error'][_0x1a32('0x12')]);return _0xdfa9fe(_0x343faf[_0x1a32('0xf')][_0x1a32('0x12')]);}else{logger[_0x1a32('0xa')](_0x1a32('0x11'),_0x13b4d2,_0x1a32('0xb'));_0xdfa9fe(_0x343faf['result'][_0x1a32('0x12')]);}})[_0x1a32('0x13')](function(_0x47bb8e){logger[_0x1a32('0xf')](_0x1a32('0x11'),_0x13b4d2,_0x47bb8e);_0x3f4723(_0x47bb8e);});});}
\ No newline at end of file
+var _0xc9ed=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch'];(function(_0x3b5d85,_0x368d0f){var _0x41aa22=function(_0x4b882e){while(--_0x4b882e){_0x3b5d85['push'](_0x3b5d85['shift']());}};_0x41aa22(++_0x368d0f);}(_0xc9ed,0x12b));var _0xdc9e=function(_0x50e7c0,_0x433edc){_0x50e7c0=_0x50e7c0-0x0;var _0x14c0ef=_0xc9ed[_0x50e7c0];return _0x14c0ef;};'use strict';var _=require(_0xdc9e('0x0'));var util=require(_0xdc9e('0x1'));var moment=require(_0xdc9e('0x2'));var BPromise=require('bluebird');var rs=require(_0xdc9e('0x3'));var fs=require('fs');var Redis=require(_0xdc9e('0x4'));var db=require(_0xdc9e('0x5'))['db'];var utils=require(_0xdc9e('0x6'));var logger=require(_0xdc9e('0x7'))(_0xdc9e('0x8'));var config=require(_0xdc9e('0x9'));var jayson=require(_0xdc9e('0xa'));var client=jayson['client'][_0xdc9e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1fa334,_0x64904,_0x4469fc){return new BPromise(function(_0x46e68b,_0xcdf465){return client[_0xdc9e('0xc')](_0x1fa334,_0x4469fc)[_0xdc9e('0xd')](function(_0xa8814f){logger[_0xdc9e('0xe')]('VoiceContext,\x20%s,\x20%s',_0x64904,_0xdc9e('0xf'));logger['debug'](_0xdc9e('0x10'),_0x64904,_0xdc9e('0xf'),JSON['stringify'](_0xa8814f));if(_0xa8814f[_0xdc9e('0x11')]){if(_0xa8814f[_0xdc9e('0x11')][_0xdc9e('0x12')]===0x1f4){logger[_0xdc9e('0x11')](_0xdc9e('0x13'),_0x64904,_0xa8814f[_0xdc9e('0x11')][_0xdc9e('0x14')]);return _0xcdf465(_0xa8814f[_0xdc9e('0x11')][_0xdc9e('0x14')]);}logger['error'](_0xdc9e('0x13'),_0x64904,_0xa8814f['error'][_0xdc9e('0x14')]);return _0x46e68b(_0xa8814f[_0xdc9e('0x11')]['message']);}else{logger[_0xdc9e('0xe')](_0xdc9e('0x13'),_0x64904,'request\x20sent');_0x46e68b(_0xa8814f[_0xdc9e('0x15')][_0xdc9e('0x14')]);}})[_0xdc9e('0x16')](function(_0x181dcb){logger[_0xdc9e('0x11')](_0xdc9e('0x13'),_0x64904,_0x181dcb);_0xcdf465(_0x181dcb);});});}
\ No newline at end of file
index b9066ff..7bf89ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fc=['destroy','exports','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','./voiceDialReport.controller','get','isAuthenticated','index','/describe','create','put','update','delete'];(function(_0x23c0a6,_0x3529f8){var _0x460869=function(_0x30f8ef){while(--_0x30f8ef){_0x23c0a6['push'](_0x23c0a6['shift']());}};_0x460869(++_0x3529f8);}(_0xb6fc,0x72));var _0xcb6f=function(_0x4035c7,_0x188c0a){_0x4035c7=_0x4035c7-0x0;var _0x22d774=_0xb6fc[_0x4035c7];return _0x22d774;};'use strict';var multer=require(_0xcb6f('0x0'));var util=require(_0xcb6f('0x1'));var path=require('path');var timeout=require(_0xcb6f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xcb6f('0x3'));var interaction=require(_0xcb6f('0x4'));var config=require('../../config/environment');var controller=require(_0xcb6f('0x5'));router[_0xcb6f('0x6')]('/',auth[_0xcb6f('0x7')](),controller[_0xcb6f('0x8')]);router['get'](_0xcb6f('0x9'),auth[_0xcb6f('0x7')](),controller['describe']);router[_0xcb6f('0x6')]('/:id',auth[_0xcb6f('0x7')](),controller['show']);router['post']('/',auth[_0xcb6f('0x7')](),controller[_0xcb6f('0xa')]);router[_0xcb6f('0xb')]('/:id',auth[_0xcb6f('0x7')](),controller[_0xcb6f('0xc')]);router[_0xcb6f('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xcb6f('0xe')]);module[_0xcb6f('0xf')]=router;
\ No newline at end of file
+var _0x60bb=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','/:id','show','put','delete','multer','util','path','connect-timeout','express'];(function(_0x4c4042,_0x1ea485){var _0xbd10dc=function(_0x164b20){while(--_0x164b20){_0x4c4042['push'](_0x4c4042['shift']());}};_0xbd10dc(++_0x1ea485);}(_0x60bb,0x164));var _0xb60b=function(_0x1f7201,_0x141b79){_0x1f7201=_0x1f7201-0x0;var _0x289fd2=_0x60bb[_0x1f7201];return _0x289fd2;};'use strict';var multer=require(_0xb60b('0x0'));var util=require(_0xb60b('0x1'));var path=require(_0xb60b('0x2'));var timeout=require(_0xb60b('0x3'));var express=require(_0xb60b('0x4'));var router=express[_0xb60b('0x5')]();var fs_extra=require(_0xb60b('0x6'));var auth=require(_0xb60b('0x7'));var interaction=require(_0xb60b('0x8'));var config=require(_0xb60b('0x9'));var controller=require(_0xb60b('0xa'));router[_0xb60b('0xb')]('/',auth[_0xb60b('0xc')](),controller['index']);router[_0xb60b('0xb')](_0xb60b('0xd'),auth[_0xb60b('0xc')](),controller[_0xb60b('0xe')]);router[_0xb60b('0xb')](_0xb60b('0xf'),auth['isAuthenticated'](),controller[_0xb60b('0x10')]);router['post']('/',auth[_0xb60b('0xc')](),controller['create']);router[_0xb60b('0x11')](_0xb60b('0xf'),auth[_0xb60b('0xc')](),controller['update']);router[_0xb60b('0x12')](_0xb60b('0xf'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 79d8dc1..2d203b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x7d7194,_0x2ab6d8){var _0x25b172=function(_0x156553){while(--_0x156553){_0x7d7194['push'](_0x7d7194['shift']());}};_0x25b172(++_0x2ab6d8);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x22593d,_0x19999b){_0x22593d=_0x22593d-0x0;var _0x4e2e0c=_0x8d0e[_0x22593d];return _0x4e2e0c;};'use strict';var Sequelize=require(_0xe8d0('0x0'));module[_0xe8d0('0x1')]={'privilege':{'type':Sequelize[_0xe8d0('0x2')]},'channel':{'type':Sequelize[_0xe8d0('0x2')]},'channelstate':{'type':Sequelize[_0xe8d0('0x3')]},'channelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'calleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'calleridname':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe8d0('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe8d0('0x2')]},'priority':{'type':Sequelize[_0xe8d0('0x3')]},'uniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'linkedid':{'type':Sequelize[_0xe8d0('0x2')]},'destchannel':{'type':Sequelize[_0xe8d0('0x2')]},'destchannelstate':{'type':Sequelize[_0xe8d0('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xe8d0('0x2')]},'destlanguage':{'type':Sequelize[_0xe8d0('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe8d0('0x2')]},'destpriority':{'type':Sequelize[_0xe8d0('0x3')]},'destuniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'destlinkedid':{'type':Sequelize[_0xe8d0('0x2')]},'dialstring':{'type':Sequelize[_0xe8d0('0x2')]},'dialstatus':{'type':Sequelize[_0xe8d0('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe8d0('0x4')]},'endtime':{'type':Sequelize[_0xe8d0('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0xe8d0('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xe8d0('0x3')]},'billableseconds':{'type':Sequelize[_0xe8d0('0x3')]}};
\ No newline at end of file
+var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
index bb41f34..1d1a263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1deb=['body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','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','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','VoiceDialReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','find','create'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x1deb,0x17e));var _0xb1de=function(_0x12d3ae,_0x793889){_0x12d3ae=_0x12d3ae-0x0;var _0x52107d=_0x1deb[_0x12d3ae];return _0x52107d;};'use strict';var emlformat=require(_0xb1de('0x0'));var rimraf=require(_0xb1de('0x1'));var zipdir=require(_0xb1de('0x2'));var jsonpatch=require(_0xb1de('0x3'));var rp=require(_0xb1de('0x4'));var moment=require(_0xb1de('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb1de('0x6'));var util=require(_0xb1de('0x7'));var path=require('path');var sox=require(_0xb1de('0x8'));var csv=require(_0xb1de('0x9'));var ejs=require(_0xb1de('0xa'));var fs=require('fs');var fs_extra=require(_0xb1de('0xb'));var _=require(_0xb1de('0xc'));var squel=require(_0xb1de('0xd'));var crypto=require(_0xb1de('0xe'));var jsforce=require(_0xb1de('0xf'));var deskjs=require(_0xb1de('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb1de('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb1de('0x12'));var as=require(_0xb1de('0x13'));var hardwareService=require(_0xb1de('0x14'));var logger=require(_0xb1de('0x15'))(_0xb1de('0x16'));var utils=require(_0xb1de('0x17'));var config=require(_0xb1de('0x18'));var licenseUtil=require(_0xb1de('0x19'));var db=require(_0xb1de('0x1a'))['db'];function respondWithStatusCode(_0xb1319e,_0x51acbf){_0x51acbf=_0x51acbf||0xcc;return function(_0x1a4df9){if(_0x1a4df9){return _0xb1319e[_0xb1de('0x1b')](_0x51acbf);}return _0xb1319e[_0xb1de('0x1c')](_0x51acbf)[_0xb1de('0x1d')]();};}function respondWithResult(_0xa74203,_0x2f07c3){_0x2f07c3=_0x2f07c3||0xc8;return function(_0x42384c){if(_0x42384c){return _0xa74203['status'](_0x2f07c3)[_0xb1de('0x1e')](_0x42384c);}};}function respondWithFilteredResult(_0x29dfd1,_0x3cc531){return function(_0x432836){if(_0x432836){var _0x46702c=typeof _0x3cc531[_0xb1de('0x1f')]===_0xb1de('0x20')&&typeof _0x3cc531[_0xb1de('0x21')]===_0xb1de('0x20');var _0x2783fb=_0x432836[_0xb1de('0x22')];var _0xeaa5f0=_0x46702c?0x0:_0x3cc531[_0xb1de('0x1f')];var _0x4ffdce=_0x46702c?_0x432836[_0xb1de('0x22')]:_0x3cc531['offset']+_0x3cc531['limit'];var _0x4f9d4b;if(_0x4ffdce>=_0x2783fb){_0x4ffdce=_0x2783fb;_0x4f9d4b=0xc8;}else{_0x4f9d4b=0xce;}_0x29dfd1['status'](_0x4f9d4b);return _0x29dfd1['set'](_0xb1de('0x23'),_0xeaa5f0+'-'+_0x4ffdce+'/'+_0x2783fb)[_0xb1de('0x1e')](_0x432836);}return null;};}function patchUpdates(_0x28d95a){return function(_0x4ddc22){try{jsonpatch[_0xb1de('0x24')](_0x4ddc22,_0x28d95a,!![]);}catch(_0x15e1c3){return BPromise[_0xb1de('0x25')](_0x15e1c3);}return _0x4ddc22['save']();};}function saveUpdates(_0x330b5c,_0x13ccf8){return function(_0x516c03){if(_0x516c03){return _0x516c03[_0xb1de('0x26')](_0x330b5c)[_0xb1de('0x27')](function(_0x35e6d1){return _0x35e6d1;});}return null;};}function removeEntity(_0x4bd11f,_0x9b8eaa){return function(_0x201df7){if(_0x201df7){return _0x201df7[_0xb1de('0x28')]()['then'](function(){_0x4bd11f[_0xb1de('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1deec4,_0x108d56){return function(_0x5f0f82){if(!_0x5f0f82){_0x1deec4[_0xb1de('0x1b')](0x194);}return _0x5f0f82;};}function handleError(_0x4da5ee,_0x298942){_0x298942=_0x298942||0x1f4;return function(_0x5031b4){logger[_0xb1de('0x29')](_0x5031b4[_0xb1de('0x2a')]);if(_0x5031b4[_0xb1de('0x2b')]){delete _0x5031b4[_0xb1de('0x2b')];}_0x4da5ee['status'](_0x298942)[_0xb1de('0x2c')](_0x5031b4);};}exports['index']=function(_0x26cf0c,_0x10090a){var _0x318af5={},_0x2c3e89={},_0x55a37f={'count':0x0,'rows':[]};var _0x383743=_[_0xb1de('0x2d')](db[_0xb1de('0x2e')]['rawAttributes'],function(_0xcf8b4d){return{'name':_0xcf8b4d[_0xb1de('0x2f')],'type':_0xcf8b4d[_0xb1de('0x30')]['key']};});_0x2c3e89[_0xb1de('0x31')]=_[_0xb1de('0x2d')](_0x383743,_0xb1de('0x2b'));_0x2c3e89[_0xb1de('0x32')]=_[_0xb1de('0x33')](_0x26cf0c[_0xb1de('0x32')]);_0x2c3e89[_0xb1de('0x34')]=_[_0xb1de('0x35')](_0x2c3e89[_0xb1de('0x31')],_0x2c3e89[_0xb1de('0x32')]);_0x318af5[_0xb1de('0x36')]=_[_0xb1de('0x35')](_0x2c3e89[_0xb1de('0x31')],qs[_0xb1de('0x37')](_0x26cf0c[_0xb1de('0x32')][_0xb1de('0x37')]));_0x318af5['attributes']=_0x318af5[_0xb1de('0x36')][_0xb1de('0x38')]?_0x318af5[_0xb1de('0x36')]:_0x2c3e89[_0xb1de('0x31')];if(!_0x26cf0c['query'][_0xb1de('0x39')](_0xb1de('0x3a'))){_0x318af5[_0xb1de('0x21')]=qs[_0xb1de('0x21')](_0x26cf0c[_0xb1de('0x32')][_0xb1de('0x21')]);_0x318af5['offset']=qs[_0xb1de('0x1f')](_0x26cf0c[_0xb1de('0x32')][_0xb1de('0x1f')]);}_0x318af5['order']=qs['sort'](_0x26cf0c['query'][_0xb1de('0x3b')]);_0x318af5[_0xb1de('0x3c')]=qs[_0xb1de('0x34')](_[_0xb1de('0x3d')](_0x26cf0c[_0xb1de('0x32')],_0x2c3e89['filters']),_0x383743);if(_0x26cf0c[_0xb1de('0x32')]['filter']){_0x318af5[_0xb1de('0x3c')]=_[_0xb1de('0x3e')](_0x318af5['where'],{'$or':_['map'](_0x383743,function(_0x32caa6){if(_0x32caa6[_0xb1de('0x30')]!==_0xb1de('0x3f')){var _0xf8015c={};_0xf8015c[_0x32caa6[_0xb1de('0x2b')]]={'$like':'%'+_0x26cf0c['query'][_0xb1de('0x40')]+'%'};return _0xf8015c;}})});}_0x318af5=_['merge']({},_0x318af5,_0x26cf0c['options']);var _0xb50ef8={'where':_0x318af5[_0xb1de('0x3c')]};return db[_0xb1de('0x2e')][_0xb1de('0x22')](_0xb50ef8)['then'](function(_0x3d52de){_0x55a37f[_0xb1de('0x22')]=_0x3d52de;if(_0x26cf0c[_0xb1de('0x32')][_0xb1de('0x41')]){_0x318af5[_0xb1de('0x42')]=[{'all':!![]}];}return db[_0xb1de('0x2e')][_0xb1de('0x43')](_0x318af5);})[_0xb1de('0x27')](function(_0x5d7a73){_0x55a37f[_0xb1de('0x44')]=_0x5d7a73;return _0x55a37f;})[_0xb1de('0x27')](respondWithFilteredResult(_0x10090a,_0x318af5))[_0xb1de('0x45')](handleError(_0x10090a,null));};exports[_0xb1de('0x46')]=function(_0x397b75,_0x39eee9){var _0x247f30={'raw':!![],'where':{'id':_0x397b75[_0xb1de('0x47')]['id']}},_0x8e16e9={};_0x8e16e9[_0xb1de('0x31')]=_[_0xb1de('0x33')](db[_0xb1de('0x2e')]['rawAttributes']);_0x8e16e9[_0xb1de('0x32')]=_[_0xb1de('0x33')](_0x397b75['query']);_0x8e16e9[_0xb1de('0x34')]=_[_0xb1de('0x35')](_0x8e16e9['model'],_0x8e16e9[_0xb1de('0x32')]);_0x247f30[_0xb1de('0x36')]=_[_0xb1de('0x35')](_0x8e16e9[_0xb1de('0x31')],qs[_0xb1de('0x37')](_0x397b75[_0xb1de('0x32')][_0xb1de('0x37')]));_0x247f30[_0xb1de('0x36')]=_0x247f30[_0xb1de('0x36')][_0xb1de('0x38')]?_0x247f30['attributes']:_0x8e16e9[_0xb1de('0x31')];if(_0x397b75[_0xb1de('0x32')]['includeAll']){_0x247f30[_0xb1de('0x42')]=[{'all':!![]}];}_0x247f30=_[_0xb1de('0x3e')]({},_0x247f30,_0x397b75['options']);return db[_0xb1de('0x2e')][_0xb1de('0x48')](_0x247f30)['then'](handleEntityNotFound(_0x39eee9,null))[_0xb1de('0x27')](respondWithResult(_0x39eee9,null))[_0xb1de('0x45')](handleError(_0x39eee9,null));};exports[_0xb1de('0x49')]=function(_0x5000dd,_0x2603af){return db[_0xb1de('0x2e')][_0xb1de('0x49')](_0x5000dd[_0xb1de('0x4a')],{})[_0xb1de('0x27')](respondWithResult(_0x2603af,0xc9))[_0xb1de('0x45')](handleError(_0x2603af,null));};exports[_0xb1de('0x26')]=function(_0x173a49,_0x44fe9d){if(_0x173a49[_0xb1de('0x4a')]['id']){delete _0x173a49[_0xb1de('0x4a')]['id'];}return db[_0xb1de('0x2e')]['find']({'where':{'id':_0x173a49[_0xb1de('0x47')]['id']}})[_0xb1de('0x27')](handleEntityNotFound(_0x44fe9d,null))[_0xb1de('0x27')](saveUpdates(_0x173a49[_0xb1de('0x4a')],null))[_0xb1de('0x27')](respondWithResult(_0x44fe9d,null))['catch'](handleError(_0x44fe9d,null));};exports[_0xb1de('0x28')]=function(_0x25bcc0,_0x33690d){return db['VoiceDialReport'][_0xb1de('0x48')]({'where':{'id':_0x25bcc0[_0xb1de('0x47')]['id']}})[_0xb1de('0x27')](handleEntityNotFound(_0x33690d,null))[_0xb1de('0x27')](removeEntity(_0x33690d,null))[_0xb1de('0x45')](handleError(_0x33690d,null));};exports['describe']=function(_0x1f5f44,_0x3e50c3){return db['VoiceDialReport'][_0xb1de('0x4b')]()[_0xb1de('0x27')](respondWithResult(_0x3e50c3,null))[_0xb1de('0x45')](handleError(_0x3e50c3,null));};
\ No newline at end of file
+var _0xf0b2=['name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','count','includeAll','findAll','rows','catch','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','offset','set','Content-Range','reject','update','then','destroy','sendStatus','error','stack'];(function(_0x4652c4,_0x481855){var _0x57f001=function(_0x1c763c){while(--_0x1c763c){_0x4652c4['push'](_0x4652c4['shift']());}};_0x57f001(++_0x481855);}(_0xf0b2,0x190));var _0x2f0b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf0b2[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x2f0b('0x0'));var rimraf=require(_0x2f0b('0x1'));var zipdir=require(_0x2f0b('0x2'));var jsonpatch=require(_0x2f0b('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2f0b('0x4'));var Mustache=require(_0x2f0b('0x5'));var util=require('util');var path=require('path');var sox=require(_0x2f0b('0x6'));var csv=require('to-csv');var ejs=require(_0x2f0b('0x7'));var fs=require('fs');var fs_extra=require(_0x2f0b('0x8'));var _=require(_0x2f0b('0x9'));var squel=require('squel');var crypto=require(_0x2f0b('0xa'));var jsforce=require(_0x2f0b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x2f0b('0xc'));var querystring=require('querystring');var Papa=require(_0x2f0b('0xd'));var Redis=require(_0x2f0b('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2f0b('0xf'));var hardwareService=require(_0x2f0b('0x10'));var logger=require(_0x2f0b('0x11'))(_0x2f0b('0x12'));var utils=require(_0x2f0b('0x13'));var config=require(_0x2f0b('0x14'));var licenseUtil=require(_0x2f0b('0x15'));var db=require(_0x2f0b('0x16'))['db'];function respondWithStatusCode(_0x210f73,_0xb50280){_0xb50280=_0xb50280||0xcc;return function(_0x3712fb){if(_0x3712fb){return _0x210f73['sendStatus'](_0xb50280);}return _0x210f73['status'](_0xb50280)[_0x2f0b('0x17')]();};}function respondWithResult(_0x29cff3,_0x40a757){_0x40a757=_0x40a757||0xc8;return function(_0x4e901d){if(_0x4e901d){return _0x29cff3[_0x2f0b('0x18')](_0x40a757)[_0x2f0b('0x19')](_0x4e901d);}};}function respondWithFilteredResult(_0x496ea9,_0x951c15){return function(_0x4e5fe3){if(_0x4e5fe3){var _0x42d54c=typeof _0x951c15['offset']===_0x2f0b('0x1a')&&typeof _0x951c15[_0x2f0b('0x1b')]===_0x2f0b('0x1a');var _0x2e3101=_0x4e5fe3['count'];var _0x3000fa=_0x42d54c?0x0:_0x951c15[_0x2f0b('0x1c')];var _0x4e8d1d=_0x42d54c?_0x4e5fe3['count']:_0x951c15['offset']+_0x951c15[_0x2f0b('0x1b')];var _0x14ce40;if(_0x4e8d1d>=_0x2e3101){_0x4e8d1d=_0x2e3101;_0x14ce40=0xc8;}else{_0x14ce40=0xce;}_0x496ea9['status'](_0x14ce40);return _0x496ea9[_0x2f0b('0x1d')](_0x2f0b('0x1e'),_0x3000fa+'-'+_0x4e8d1d+'/'+_0x2e3101)['json'](_0x4e5fe3);}return null;};}function patchUpdates(_0x2217bb){return function(_0x536771){try{jsonpatch['apply'](_0x536771,_0x2217bb,!![]);}catch(_0x4e0321){return BPromise[_0x2f0b('0x1f')](_0x4e0321);}return _0x536771['save']();};}function saveUpdates(_0x313740,_0x285fb2){return function(_0x4ea98b){if(_0x4ea98b){return _0x4ea98b[_0x2f0b('0x20')](_0x313740)[_0x2f0b('0x21')](function(_0x472c7b){return _0x472c7b;});}return null;};}function removeEntity(_0x3366e5,_0x351c05){return function(_0x23bae5){if(_0x23bae5){return _0x23bae5[_0x2f0b('0x22')]()[_0x2f0b('0x21')](function(){_0x3366e5[_0x2f0b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ed1d7,_0x596665){return function(_0x3bf463){if(!_0x3bf463){_0x2ed1d7[_0x2f0b('0x23')](0x194);}return _0x3bf463;};}function handleError(_0x40bf90,_0x10d73b){_0x10d73b=_0x10d73b||0x1f4;return function(_0x4afc0d){logger[_0x2f0b('0x24')](_0x4afc0d[_0x2f0b('0x25')]);if(_0x4afc0d['name']){delete _0x4afc0d[_0x2f0b('0x26')];}_0x40bf90[_0x2f0b('0x18')](_0x10d73b)[_0x2f0b('0x27')](_0x4afc0d);};}exports[_0x2f0b('0x28')]=function(_0x4c453c,_0x455771){var _0x74dc43={},_0x322f9a={},_0x87de51={'count':0x0,'rows':[]};var _0x50305b=_[_0x2f0b('0x29')](db[_0x2f0b('0x2a')][_0x2f0b('0x2b')],function(_0x54d95e){return{'name':_0x54d95e[_0x2f0b('0x2c')],'type':_0x54d95e[_0x2f0b('0x2d')][_0x2f0b('0x2e')]};});_0x322f9a[_0x2f0b('0x2f')]=_[_0x2f0b('0x29')](_0x50305b,'name');_0x322f9a['query']=_['keys'](_0x4c453c[_0x2f0b('0x30')]);_0x322f9a[_0x2f0b('0x31')]=_[_0x2f0b('0x32')](_0x322f9a[_0x2f0b('0x2f')],_0x322f9a[_0x2f0b('0x30')]);_0x74dc43['attributes']=_[_0x2f0b('0x32')](_0x322f9a['model'],qs[_0x2f0b('0x33')](_0x4c453c[_0x2f0b('0x30')][_0x2f0b('0x33')]));_0x74dc43[_0x2f0b('0x34')]=_0x74dc43[_0x2f0b('0x34')][_0x2f0b('0x35')]?_0x74dc43['attributes']:_0x322f9a['model'];if(!_0x4c453c[_0x2f0b('0x30')]['hasOwnProperty'](_0x2f0b('0x36'))){_0x74dc43[_0x2f0b('0x1b')]=qs[_0x2f0b('0x1b')](_0x4c453c[_0x2f0b('0x30')][_0x2f0b('0x1b')]);_0x74dc43[_0x2f0b('0x1c')]=qs['offset'](_0x4c453c[_0x2f0b('0x30')]['offset']);}_0x74dc43[_0x2f0b('0x37')]=qs[_0x2f0b('0x38')](_0x4c453c[_0x2f0b('0x30')][_0x2f0b('0x38')]);_0x74dc43['where']=qs[_0x2f0b('0x31')](_['pick'](_0x4c453c['query'],_0x322f9a[_0x2f0b('0x31')]),_0x50305b);if(_0x4c453c[_0x2f0b('0x30')][_0x2f0b('0x39')]){_0x74dc43[_0x2f0b('0x3a')]=_[_0x2f0b('0x3b')](_0x74dc43[_0x2f0b('0x3a')],{'$or':_[_0x2f0b('0x29')](_0x50305b,function(_0xcc6021){if(_0xcc6021[_0x2f0b('0x2d')]!==_0x2f0b('0x3c')){var _0x514c72={};_0x514c72[_0xcc6021[_0x2f0b('0x26')]]={'$like':'%'+_0x4c453c[_0x2f0b('0x30')][_0x2f0b('0x39')]+'%'};return _0x514c72;}})});}_0x74dc43=_[_0x2f0b('0x3b')]({},_0x74dc43,_0x4c453c[_0x2f0b('0x3d')]);var _0x156c85={'where':_0x74dc43['where']};return db[_0x2f0b('0x2a')][_0x2f0b('0x3e')](_0x156c85)['then'](function(_0x18a046){_0x87de51[_0x2f0b('0x3e')]=_0x18a046;if(_0x4c453c['query'][_0x2f0b('0x3f')]){_0x74dc43['include']=[{'all':!![]}];}return db[_0x2f0b('0x2a')][_0x2f0b('0x40')](_0x74dc43);})[_0x2f0b('0x21')](function(_0x19ab7d){_0x87de51[_0x2f0b('0x41')]=_0x19ab7d;return _0x87de51;})[_0x2f0b('0x21')](respondWithFilteredResult(_0x455771,_0x74dc43))[_0x2f0b('0x42')](handleError(_0x455771,null));};exports['show']=function(_0x15bdc6,_0x3ca5ab){var _0x3dfc2d={'raw':!![],'where':{'id':_0x15bdc6[_0x2f0b('0x43')]['id']}},_0x55fdf2={};_0x55fdf2[_0x2f0b('0x2f')]=_[_0x2f0b('0x44')](db['VoiceDialReport']['rawAttributes']);_0x55fdf2[_0x2f0b('0x30')]=_[_0x2f0b('0x44')](_0x15bdc6[_0x2f0b('0x30')]);_0x55fdf2[_0x2f0b('0x31')]=_[_0x2f0b('0x32')](_0x55fdf2[_0x2f0b('0x2f')],_0x55fdf2[_0x2f0b('0x30')]);_0x3dfc2d['attributes']=_[_0x2f0b('0x32')](_0x55fdf2[_0x2f0b('0x2f')],qs['fields'](_0x15bdc6['query'][_0x2f0b('0x33')]));_0x3dfc2d[_0x2f0b('0x34')]=_0x3dfc2d[_0x2f0b('0x34')][_0x2f0b('0x35')]?_0x3dfc2d[_0x2f0b('0x34')]:_0x55fdf2[_0x2f0b('0x2f')];if(_0x15bdc6[_0x2f0b('0x30')][_0x2f0b('0x3f')]){_0x3dfc2d['include']=[{'all':!![]}];}_0x3dfc2d=_[_0x2f0b('0x3b')]({},_0x3dfc2d,_0x15bdc6[_0x2f0b('0x3d')]);return db[_0x2f0b('0x2a')][_0x2f0b('0x45')](_0x3dfc2d)[_0x2f0b('0x21')](handleEntityNotFound(_0x3ca5ab,null))['then'](respondWithResult(_0x3ca5ab,null))[_0x2f0b('0x42')](handleError(_0x3ca5ab,null));};exports['create']=function(_0x38009e,_0x33af99){return db[_0x2f0b('0x2a')][_0x2f0b('0x46')](_0x38009e['body'],{})[_0x2f0b('0x21')](respondWithResult(_0x33af99,0xc9))[_0x2f0b('0x42')](handleError(_0x33af99,null));};exports[_0x2f0b('0x20')]=function(_0x217083,_0x5dd3b5){if(_0x217083[_0x2f0b('0x47')]['id']){delete _0x217083[_0x2f0b('0x47')]['id'];}return db['VoiceDialReport'][_0x2f0b('0x45')]({'where':{'id':_0x217083[_0x2f0b('0x43')]['id']}})[_0x2f0b('0x21')](handleEntityNotFound(_0x5dd3b5,null))[_0x2f0b('0x21')](saveUpdates(_0x217083[_0x2f0b('0x47')],null))[_0x2f0b('0x21')](respondWithResult(_0x5dd3b5,null))[_0x2f0b('0x42')](handleError(_0x5dd3b5,null));};exports[_0x2f0b('0x22')]=function(_0x5f3111,_0xbf28bc){return db[_0x2f0b('0x2a')]['find']({'where':{'id':_0x5f3111['params']['id']}})[_0x2f0b('0x21')](handleEntityNotFound(_0xbf28bc,null))[_0x2f0b('0x21')](removeEntity(_0xbf28bc,null))['catch'](handleError(_0xbf28bc,null));};exports[_0x2f0b('0x48')]=function(_0x5b5107,_0x40f431){return db[_0x2f0b('0x2a')][_0x2f0b('0x48')]()[_0x2f0b('0x21')](respondWithResult(_0x40f431,null))[_0x2f0b('0x42')](handleError(_0x40f431,null));};
\ No newline at end of file
index df90d9f..42ff036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94a1=['request-promise','path','rimraf','exports','define','report_dial','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x419e2d,_0x4c516f){var _0x3029bb=function(_0x56bf5a){while(--_0x56bf5a){_0x419e2d['push'](_0x419e2d['shift']());}};_0x3029bb(++_0x4c516f);}(_0x94a1,0x8b));var _0x194a=function(_0x144f72,_0x560350){_0x144f72=_0x144f72-0x0;var _0x3b768e=_0x94a1[_0x144f72];return _0x3b768e;};'use strict';var _=require(_0x194a('0x0'));var util=require('util');var logger=require(_0x194a('0x1'))(_0x194a('0x2'));var moment=require(_0x194a('0x3'));var BPromise=require(_0x194a('0x4'));var rp=require(_0x194a('0x5'));var fs=require('fs');var path=require(_0x194a('0x6'));var rimraf=require(_0x194a('0x7'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0x194a('0x8')]=function(_0x9c26c2,_0x41007b){return _0x9c26c2[_0x194a('0x9')]('VoiceDialReport',attributes,{'tableName':_0x194a('0xa'),'paranoid':![],'indexes':[{'fields':[_0x194a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x596c=['request-promise','path','exports','define','report_dial','moment'];(function(_0x4e0d45,_0x55f937){var _0xb25758=function(_0x18d517){while(--_0x18d517){_0x4e0d45['push'](_0x4e0d45['shift']());}};_0xb25758(++_0x55f937);}(_0x596c,0x1cd));var _0xc596=function(_0x2ecd72,_0xb6f7d4){_0x2ecd72=_0x2ecd72-0x0;var _0x586778=_0x596c[_0x2ecd72];return _0x586778;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xc596('0x0'));var BPromise=require('bluebird');var rp=require(_0xc596('0x1'));var fs=require('fs');var path=require(_0xc596('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0xc596('0x3')]=function(_0x511ac2,_0x1db019){return _0x511ac2[_0xc596('0x4')]('VoiceDialReport',attributes,{'tableName':_0xc596('0x5'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index a0ff5da..4f89da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8bd=['body','options','raw','stringify','UpdateVoiceDialReport','update','where','attributes','then','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create'];(function(_0x555dde,_0x5ac695){var _0x1b7e71=function(_0x28119b){while(--_0x28119b){_0x555dde['push'](_0x555dde['shift']());}};_0x1b7e71(++_0x5ac695);}(_0xe8bd,0x169));var _0xde8b=function(_0x1fe024,_0x1bc26c){_0x1fe024=_0x1fe024-0x0;var _0x20f4b4=_0xe8bd[_0x1fe024];return _0x20f4b4;};'use strict';var _=require('lodash');var util=require(_0xde8b('0x0'));var moment=require(_0xde8b('0x1'));var BPromise=require(_0xde8b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde8b('0x3'));var db=require(_0xde8b('0x4'))['db'];var utils=require(_0xde8b('0x5'));var logger=require(_0xde8b('0x6'))(_0xde8b('0x7'));var config=require('../../config/environment');var jayson=require(_0xde8b('0x8'));var client=jayson[_0xde8b('0x9')][_0xde8b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48cd3e,_0x4ef59d,_0x5883f1){return new BPromise(function(_0xedbd69,_0x5bbf2b){return client['request'](_0x48cd3e,_0x5883f1)['then'](function(_0x29baef){logger[_0xde8b('0xb')](_0xde8b('0xc'),_0x4ef59d,_0xde8b('0xd'));logger[_0xde8b('0xe')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x4ef59d,_0xde8b('0xd'),JSON['stringify'](_0x29baef));if(_0x29baef['error']){if(_0x29baef[_0xde8b('0xf')][_0xde8b('0x10')]===0x1f4){logger[_0xde8b('0xf')](_0xde8b('0xc'),_0x4ef59d,_0x29baef[_0xde8b('0xf')]['message']);return _0x5bbf2b(_0x29baef[_0xde8b('0xf')][_0xde8b('0x11')]);}logger[_0xde8b('0xf')](_0xde8b('0xc'),_0x4ef59d,_0x29baef[_0xde8b('0xf')][_0xde8b('0x11')]);return _0xedbd69(_0x29baef[_0xde8b('0xf')][_0xde8b('0x11')]);}else{logger['info'](_0xde8b('0xc'),_0x4ef59d,_0xde8b('0xd'));_0xedbd69(_0x29baef[_0xde8b('0x12')][_0xde8b('0x11')]);}})[_0xde8b('0x13')](function(_0x180b48){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x4ef59d,_0x180b48);_0x5bbf2b(_0x180b48);});});}exports[_0xde8b('0x14')]=function(_0x4765ef){var _0x1869b5=this;return new Promise(function(_0x5232bc,_0x5cb174){return db[_0xde8b('0x15')][_0xde8b('0x16')](_0x4765ef[_0xde8b('0x17')],{'raw':_0x4765ef['options']?_0x4765ef[_0xde8b('0x18')][_0xde8b('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x46b2d8){logger[_0xde8b('0xb')]('CreateVoiceDialReport',_0x4765ef);logger[_0xde8b('0xe')](_0xde8b('0x14'),_0x4765ef,JSON[_0xde8b('0x1a')](_0x46b2d8));_0x5232bc(_0x46b2d8);})[_0xde8b('0x13')](function(_0x5d88d7){logger[_0xde8b('0xf')](_0xde8b('0x14'),_0x5d88d7[_0xde8b('0x11')],_0x4765ef);_0x5cb174(_0x1869b5['error'](0x1f4,_0x5d88d7['message']));});});};exports[_0xde8b('0x1b')]=function(_0x5ed1e0){var _0x144d8f=this;return new Promise(function(_0x19ddd6,_0x31dcab){return db[_0xde8b('0x15')][_0xde8b('0x1c')](_0x5ed1e0['body'],{'raw':_0x5ed1e0['options']?_0x5ed1e0[_0xde8b('0x18')][_0xde8b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ed1e0[_0xde8b('0x18')]?_0x5ed1e0['options'][_0xde8b('0x1d')]||null:null,'attributes':_0x5ed1e0[_0xde8b('0x18')]?_0x5ed1e0[_0xde8b('0x18')][_0xde8b('0x1e')]||null:null,'limit':_0x5ed1e0[_0xde8b('0x18')]?_0x5ed1e0['options']['limit']||null:null})[_0xde8b('0x1f')](function(_0x416dd3){logger[_0xde8b('0xb')](_0xde8b('0x1b'),_0x5ed1e0);logger['debug'](_0xde8b('0x1b'),_0x5ed1e0,JSON[_0xde8b('0x1a')](_0x416dd3));_0x19ddd6(_0x416dd3);})[_0xde8b('0x13')](function(_0x279dd8){logger['error'](_0xde8b('0x1b'),_0x279dd8[_0xde8b('0x11')],_0x5ed1e0);_0x31dcab(_0x144d8f[_0xde8b('0xf')](0x1f4,_0x279dd8[_0xde8b('0x11')]));});});};
\ No newline at end of file
+var _0xa73d=['bluebird','../../config/logger','../../config/environment','client','http','then','info','debug','request\x20sent','stringify','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment'];(function(_0x456e47,_0x1bfc8f){var _0x45cdc7=function(_0x105d06){while(--_0x105d06){_0x456e47['push'](_0x456e47['shift']());}};_0x45cdc7(++_0x1bfc8f);}(_0xa73d,0x1dd));var _0xda73=function(_0x12fb9e,_0x3c927f){_0x12fb9e=_0x12fb9e-0x0;var _0x12f297=_0xa73d[_0x12fb9e];return _0x12f297;};'use strict';var _=require(_0xda73('0x0'));var util=require(_0xda73('0x1'));var moment=require(_0xda73('0x2'));var BPromise=require(_0xda73('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(_0xda73('0x4'))('rpc');var config=require(_0xda73('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xda73('0x6')][_0xda73('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x24f2b6,_0x24eb38,_0x4207ea){return new BPromise(function(_0x87b5b3,_0x11c92a){return client['request'](_0x24f2b6,_0x4207ea)[_0xda73('0x8')](function(_0x1a14c1){logger[_0xda73('0x9')]('VoiceDialReport,\x20%s,\x20%s',_0x24eb38,'request\x20sent');logger[_0xda73('0xa')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x24eb38,_0xda73('0xb'),JSON[_0xda73('0xc')](_0x1a14c1));if(_0x1a14c1[_0xda73('0xd')]){if(_0x1a14c1[_0xda73('0xd')][_0xda73('0xe')]===0x1f4){logger['error'](_0xda73('0xf'),_0x24eb38,_0x1a14c1[_0xda73('0xd')][_0xda73('0x10')]);return _0x11c92a(_0x1a14c1[_0xda73('0xd')]['message']);}logger[_0xda73('0xd')](_0xda73('0xf'),_0x24eb38,_0x1a14c1[_0xda73('0xd')][_0xda73('0x10')]);return _0x87b5b3(_0x1a14c1[_0xda73('0xd')][_0xda73('0x10')]);}else{logger[_0xda73('0x9')](_0xda73('0xf'),_0x24eb38,_0xda73('0xb'));_0x87b5b3(_0x1a14c1[_0xda73('0x11')][_0xda73('0x10')]);}})[_0xda73('0x12')](function(_0x4c5ee9){logger[_0xda73('0xd')](_0xda73('0xf'),_0x24eb38,_0x4c5ee9);_0x11c92a(_0x4c5ee9);});});}exports[_0xda73('0x13')]=function(_0x8f7aa5){var _0x290ae7=this;return new Promise(function(_0x327fc4,_0x3e04bb){return db[_0xda73('0x14')][_0xda73('0x15')](_0x8f7aa5[_0xda73('0x16')],{'raw':_0x8f7aa5[_0xda73('0x17')]?_0x8f7aa5[_0xda73('0x17')][_0xda73('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x162457){logger['info'](_0xda73('0x13'),_0x8f7aa5);logger['debug']('CreateVoiceDialReport',_0x8f7aa5,JSON[_0xda73('0xc')](_0x162457));_0x327fc4(_0x162457);})['catch'](function(_0x3909d2){logger[_0xda73('0xd')](_0xda73('0x13'),_0x3909d2['message'],_0x8f7aa5);_0x3e04bb(_0x290ae7[_0xda73('0xd')](0x1f4,_0x3909d2[_0xda73('0x10')]));});});};exports[_0xda73('0x19')]=function(_0x164087){var _0x1938fc=this;return new Promise(function(_0xc2069b,_0x29fdfb){return db[_0xda73('0x14')][_0xda73('0x1a')](_0x164087[_0xda73('0x16')],{'raw':_0x164087[_0xda73('0x17')]?_0x164087['options'][_0xda73('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x164087[_0xda73('0x17')]?_0x164087[_0xda73('0x17')][_0xda73('0x1b')]||null:null,'attributes':_0x164087['options']?_0x164087[_0xda73('0x17')][_0xda73('0x1c')]||null:null,'limit':_0x164087['options']?_0x164087[_0xda73('0x17')][_0xda73('0x1d')]||null:null})['then'](function(_0x4cfad5){logger[_0xda73('0x9')](_0xda73('0x19'),_0x164087);logger['debug']('UpdateVoiceDialReport',_0x164087,JSON['stringify'](_0x4cfad5));_0xc2069b(_0x4cfad5);})['catch'](function(_0x52de07){logger[_0xda73('0xd')](_0xda73('0x19'),_0x52de07[_0xda73('0x10')],_0x164087);_0x29fdfb(_0x1938fc[_0xda73('0xd')](0x1f4,_0x52de07[_0xda73('0x10')]));});});};
\ No newline at end of file
index 93c4e67..448927b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf339=['./voiceExtension.controller','get','isAuthenticated','index','/:id','post','create','/:id/applications','put','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x32226e,_0x399b40){var _0x6c2cdc=function(_0x6ba0a8){while(--_0x6ba0a8){_0x32226e['push'](_0x32226e['shift']());}};_0x6c2cdc(++_0x399b40);}(_0xf339,0x1c0));var _0x9f33=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf339[_0x1cc8fe];return _0x230054;};'use strict';var multer=require(_0x9f33('0x0'));var util=require(_0x9f33('0x1'));var path=require('path');var timeout=require(_0x9f33('0x2'));var express=require(_0x9f33('0x3'));var router=express[_0x9f33('0x4')]();var fs_extra=require(_0x9f33('0x5'));var auth=require(_0x9f33('0x6'));var interaction=require(_0x9f33('0x7'));var config=require('../../config/environment');var controller=require(_0x9f33('0x8'));router[_0x9f33('0x9')]('/',auth[_0x9f33('0xa')](),controller[_0x9f33('0xb')]);router[_0x9f33('0x9')](_0x9f33('0xc'),auth[_0x9f33('0xa')](),controller['show']);router[_0x9f33('0xd')]('/',auth['isAuthenticated'](),controller[_0x9f33('0xe')]);router['post'](_0x9f33('0xf'),auth['isAuthenticated'](),controller['addApplications']);router[_0x9f33('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9f33('0x11')]);router['delete'](_0x9f33('0xc'),auth['isAuthenticated'](),controller[_0x9f33('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xccc2=['index','/:id','show','post','create','/:id/applications','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xccc2,0xd1));var _0x2ccc=function(_0x449acc,_0x416458){_0x449acc=_0x449acc-0x0;var _0x15d15d=_0xccc2[_0x449acc];return _0x15d15d;};'use strict';var multer=require(_0x2ccc('0x0'));var util=require(_0x2ccc('0x1'));var path=require(_0x2ccc('0x2'));var timeout=require(_0x2ccc('0x3'));var express=require(_0x2ccc('0x4'));var router=express[_0x2ccc('0x5')]();var fs_extra=require(_0x2ccc('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2ccc('0x7'));var config=require(_0x2ccc('0x8'));var controller=require('./voiceExtension.controller');router[_0x2ccc('0x9')]('/',auth[_0x2ccc('0xa')](),controller[_0x2ccc('0xb')]);router[_0x2ccc('0x9')](_0x2ccc('0xc'),auth[_0x2ccc('0xa')](),controller[_0x2ccc('0xd')]);router[_0x2ccc('0xe')]('/',auth['isAuthenticated'](),controller[_0x2ccc('0xf')]);router[_0x2ccc('0xe')](_0x2ccc('0x10'),auth['isAuthenticated'](),controller['addApplications']);router[_0x2ccc('0x11')](_0x2ccc('0xc'),auth[_0x2ccc('0xa')](),controller[_0x2ccc('0x12')]);router[_0x2ccc('0x13')]('/:id',auth[_0x2ccc('0xa')](),controller[_0x2ccc('0x14')]);module[_0x2ccc('0x15')]=router;
\ No newline at end of file
index 6f19c01..4786a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4978=['*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','any'];(function(_0x348ea7,_0x591405){var _0x5eafdf=function(_0x4c9f49){while(--_0x4c9f49){_0x348ea7['push'](_0x348ea7['shift']());}};_0x5eafdf(++_0x591405);}(_0x4978,0x114));var _0x8497=function(_0x1cc4e1,_0x1629d4){_0x1cc4e1=_0x1cc4e1-0x0;var _0x192d47=_0x4978[_0x1cc4e1];return _0x192d47;};'use strict';var Sequelize=require(_0x8497('0x0'));module[_0x8497('0x1')]={'context':{'type':Sequelize[_0x8497('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x8497('0x2')],'allowNull':![],'unique':_0x8497('0x3')},'priority':{'type':Sequelize[_0x8497('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x8497('0x3')},'tag':{'type':Sequelize[_0x8497('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x8497('0x2')],'allowNull':![],'defaultValue':_0x8497('0x4')},'appdata':{'type':Sequelize[_0x8497('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x8497('0x5')](_0x8497('0x6'),_0x8497('0x7'),_0x8497('0x8'),_0x8497('0x9'),_0x8497('0xa'),'system',_0x8497('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x8497('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8497('0xc')},'IntervalId':{'type':Sequelize[_0x8497('0xd')]},'isApp':{'type':Sequelize[_0x8497('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x8497('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x8497('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x8497('0xd')]},'recordingFormat':{'type':Sequelize[_0x8497('0x2')],'defaultValue':_0x8497('0xf')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x8497('0x10')],'get':function(_0x5a1b3c){return this[_0x8497('0x11')]('exten');}},'alias':{'type':Sequelize[_0x8497('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xbe9e=['compositeIndex','ENUM','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','BOOLEAN','wav','getDataValue','exports','STRING'];(function(_0x373096,_0x4d37aa){var _0x14a6d0=function(_0xb3b614){while(--_0xb3b614){_0x373096['push'](_0x373096['shift']());}};_0x14a6d0(++_0x4d37aa);}(_0xbe9e,0x1b0));var _0xebe9=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xbe9e[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require('sequelize');module[_0xebe9('0x0')]={'context':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'unique':_0xebe9('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'unique':_0xebe9('0x2')},'priority':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xebe9('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xebe9('0x3')]('inbound',_0xebe9('0x4'),_0xebe9('0x5'),_0xebe9('0x6'),_0xebe9('0x7'),_0xebe9('0x8'),_0xebe9('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xebe9('0x1')]},'interval':{'type':Sequelize[_0xebe9('0x1')],'allowNull':![],'defaultValue':_0xebe9('0xa')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xebe9('0x1')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xebe9('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0xebe9('0x1')],'defaultValue':_0xebe9('0xc')},'answer':{'type':Sequelize[_0xebe9('0xb')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xc28aee){return this[_0xebe9('0xd')]('exten');}},'alias':{'type':Sequelize[_0xebe9('0x1')],'allowNull':!![]}};
\ No newline at end of file
index a351302..4537104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7745=['UserProfileResource','stack','name','send','index','VoiceExtension','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','VIRTUAL','options','where','includeAll','include','findAll','catch','show','params','create','body','outbound','startsWith','exten','concat','get','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','destroy','then','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','ignore','map','value','includes','type','find'];(function(_0x46c8bb,_0x25ecba){var _0x194042=function(_0x1272a1){while(--_0x1272a1){_0x46c8bb['push'](_0x46c8bb['shift']());}};_0x194042(++_0x25ecba);}(_0x7745,0x9c));var _0x5774=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x7745[_0x139a3c];return _0x2b375b;};'use strict';var _=require('lodash');var Redis=require(_0x5774('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0x5774('0x1'))(_0x5774('0x2'));var config=require(_0x5774('0x3'));var db=require(_0x5774('0x4'))['db'];config[_0x5774('0x5')]=_[_0x5774('0x6')](config[_0x5774('0x5')],{'host':_0x5774('0x7'),'port':0x18eb});var socket=require(_0x5774('0x8'))(new Redis(config[_0x5774('0x5')]));require(_0x5774('0x9'))[_0x5774('0xa')](socket);function respondWithStatusCode(_0x501261,_0xef7ec1){_0xef7ec1=_0xef7ec1||0xcc;return function(_0x364b74){if(_0x364b74){return _0x501261[_0x5774('0xb')](_0xef7ec1);}return _0x501261['status'](_0xef7ec1)[_0x5774('0xc')]();};}function respondWithResult(_0x1a2496,_0x45c4d5){_0x45c4d5=_0x45c4d5||0xc8;return function(_0x474402){if(_0x474402){return _0x1a2496[_0x5774('0xd')](_0x45c4d5)['json'](_0x474402);}};}function respondWithFilteredResult(_0x48486d,_0x151967){return function(_0x146c9d){if(_0x146c9d){var _0x1473b5=typeof _0x151967[_0x5774('0xe')]===_0x5774('0xf')&&typeof _0x151967[_0x5774('0x10')]===_0x5774('0xf');var _0x3c5986=_0x146c9d['count'];var _0x4ff839=_0x1473b5?0x0:_0x151967[_0x5774('0xe')];var _0x1c5df0=_0x1473b5?_0x146c9d[_0x5774('0x11')]:_0x151967[_0x5774('0xe')]+_0x151967['limit'];var _0x5797b6;if(_0x1c5df0>=_0x3c5986){_0x1c5df0=_0x3c5986;_0x5797b6=0xc8;}else{_0x5797b6=0xce;}_0x48486d[_0x5774('0xd')](_0x5797b6);return _0x48486d['set'](_0x5774('0x12'),_0x4ff839+'-'+_0x1c5df0+'/'+_0x3c5986)[_0x5774('0x13')](_0x146c9d);}return null;};}function removeEntity(_0x292951){return function(_0x45bfa7){if(_0x45bfa7){return _0x45bfa7[_0x5774('0x14')]()[_0x5774('0x15')](function(){var _0x4cfdd3=_0x45bfa7['get']({'plain':!![]});var _0x57b39d=[{'name':_0x5774('0x16'),'value':_0x5774('0x17'),'ignore':![]},{'name':_0x5774('0x18'),'value':'outbound','ignore':![]},{'name':_0x5774('0x19'),'value':_0x5774('0x1a'),'ignore':![]}];var _0x18ef11=_(_0x57b39d)[_0x5774('0x1b')](_0x5774('0x1c'))[_0x5774('0x1d')](_0x5774('0x1e'))[_0x5774('0x1e')]();if(_[_0x5774('0x1f')](_0x18ef11,_0x4cfdd3[_0x5774('0x20')])){return;}var _0x2d0030=_[_0x5774('0x21')](_0x57b39d,[_0x5774('0x1e'),_0x4cfdd3[_0x5774('0x20')]])['name'];return db[_0x5774('0x22')][_0x5774('0x14')]({'where':{'type':_0x2d0030,'resourceId':_0x4cfdd3['id']}})['then'](function(){return _0x45bfa7;});})[_0x5774('0x15')](function(){_0x292951[_0x5774('0xd')](0xcc)[_0x5774('0xc')]();});}};}function handleEntityNotFound(_0x10a577){return function(_0x7d527){if(!_0x7d527){_0x10a577[_0x5774('0xb')](0x194);}return _0x7d527;};}function handleError(_0x2b978f,_0x1e08c0){_0x1e08c0=_0x1e08c0||0x1f4;return function(_0x3caa20){logger['error'](_0x3caa20[_0x5774('0x23')]);if(_0x3caa20[_0x5774('0x24')]){delete _0x3caa20['name'];}_0x2b978f[_0x5774('0xd')](_0x1e08c0)[_0x5774('0x25')](_0x3caa20);};}exports[_0x5774('0x26')]=function(_0x3837ca,_0x163e9a){var _0x4c4191={},_0x34c595={},_0x3023cd={'count':0x0,'rows':[]};var _0x4330fb=_[_0x5774('0x1d')](db[_0x5774('0x27')][_0x5774('0x28')],function(_0x66ea54){return{'name':_0x66ea54['fieldName'],'type':_0x66ea54[_0x5774('0x20')][_0x5774('0x29')]};});_0x34c595[_0x5774('0x2a')]=_['map'](_0x4330fb,'name');_0x34c595[_0x5774('0x2b')]=_[_0x5774('0x2c')](_0x3837ca[_0x5774('0x2b')]);_0x34c595[_0x5774('0x2d')]=_[_0x5774('0x2e')](_0x34c595['model'],_0x34c595[_0x5774('0x2b')]);_0x4c4191[_0x5774('0x2f')]=_[_0x5774('0x2e')](_0x34c595[_0x5774('0x2a')],qs['fields'](_0x3837ca[_0x5774('0x2b')][_0x5774('0x30')]));_0x4c4191[_0x5774('0x2f')]=_0x4c4191[_0x5774('0x2f')][_0x5774('0x31')]?_0x4c4191[_0x5774('0x2f')]:_0x34c595[_0x5774('0x2a')];if(!_0x3837ca[_0x5774('0x2b')][_0x5774('0x32')](_0x5774('0x33'))){_0x4c4191['limit']=qs[_0x5774('0x10')](_0x3837ca[_0x5774('0x2b')][_0x5774('0x10')]);_0x4c4191[_0x5774('0xe')]=qs[_0x5774('0xe')](_0x3837ca['query'][_0x5774('0xe')]);}_0x4c4191['order']=qs[_0x5774('0x34')](_0x3837ca[_0x5774('0x2b')][_0x5774('0x34')]);_0x4c4191['where']=qs[_0x5774('0x2d')](_[_0x5774('0x35')](_0x3837ca[_0x5774('0x2b')],_0x34c595[_0x5774('0x2d')]),_0x4330fb);if(_0x3837ca[_0x5774('0x2b')][_0x5774('0x1b')]){_0x4c4191['where']=_[_0x5774('0x36')](_0x4c4191['where'],{'$or':_[_0x5774('0x1d')](_0x4330fb,function(_0x54b72f){if(_0x54b72f[_0x5774('0x20')]!==_0x5774('0x37')){var _0x3b06ca={};_0x3b06ca[_0x54b72f[_0x5774('0x24')]]={'$like':'%'+_0x3837ca[_0x5774('0x2b')][_0x5774('0x1b')]+'%'};return _0x3b06ca;}})});}_0x4c4191=_[_0x5774('0x36')]({},_0x4c4191,_0x3837ca[_0x5774('0x38')]);var _0x236948={'where':_0x4c4191[_0x5774('0x39')]};return db[_0x5774('0x27')]['count'](_0x236948)['then'](function(_0x8760f){_0x3023cd[_0x5774('0x11')]=_0x8760f;if(_0x3837ca[_0x5774('0x2b')][_0x5774('0x3a')]){_0x4c4191[_0x5774('0x3b')]=[{'all':!![]}];}return db[_0x5774('0x27')][_0x5774('0x3c')](_0x4c4191);})[_0x5774('0x15')](function(_0x12d77e){_0x3023cd['rows']=_0x12d77e;return _0x3023cd;})[_0x5774('0x15')](respondWithFilteredResult(_0x163e9a,_0x4c4191))[_0x5774('0x3d')](handleError(_0x163e9a,null));};exports[_0x5774('0x3e')]=function(_0x402ff7,_0x376e62){var _0xbc3a21={'raw':![],'where':{'id':_0x402ff7[_0x5774('0x3f')]['id']}},_0x127038={};_0x127038[_0x5774('0x2a')]=_['keys'](db['VoiceExtension'][_0x5774('0x28')]);_0x127038['query']=_[_0x5774('0x2c')](_0x402ff7['query']);_0x127038['filters']=_['intersection'](_0x127038[_0x5774('0x2a')],_0x127038[_0x5774('0x2b')]);_0xbc3a21[_0x5774('0x2f')]=_[_0x5774('0x2e')](_0x127038[_0x5774('0x2a')],qs[_0x5774('0x30')](_0x402ff7[_0x5774('0x2b')][_0x5774('0x30')]));_0xbc3a21[_0x5774('0x2f')]=_0xbc3a21[_0x5774('0x2f')][_0x5774('0x31')]?_0xbc3a21[_0x5774('0x2f')]:_0x127038[_0x5774('0x2a')];if(_0x402ff7['query']['includeAll']){_0xbc3a21[_0x5774('0x3b')]=[{'all':!![]}];}_0xbc3a21=_[_0x5774('0x36')]({},_0xbc3a21,_0x402ff7[_0x5774('0x38')]);return db['VoiceExtension'][_0x5774('0x21')](_0xbc3a21)[_0x5774('0x15')](handleEntityNotFound(_0x376e62,null))[_0x5774('0x15')](respondWithResult(_0x376e62,null))['catch'](handleError(_0x376e62,null));};exports[_0x5774('0x14')]=function(_0x5ca6f6,_0x2c8619){return db[_0x5774('0x27')][_0x5774('0x21')]({'where':{'id':_0x5ca6f6[_0x5774('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2c8619,null))[_0x5774('0x15')](removeEntity(_0x2c8619,null))[_0x5774('0x3d')](handleError(_0x2c8619,null));};exports[_0x5774('0x40')]=function(_0x4f6a44,_0x18600c){if(_0x4f6a44[_0x5774('0x41')][_0x5774('0x20')]===_0x5774('0x42')&&!_[_0x5774('0x43')](_0x4f6a44[_0x5774('0x41')][_0x5774('0x44')],'_')){_0x4f6a44[_0x5774('0x41')][_0x5774('0x44')]='_'[_0x5774('0x45')](_0x4f6a44[_0x5774('0x41')][_0x5774('0x44')]);}return db[_0x5774('0x27')][_0x5774('0x40')](_0x4f6a44[_0x5774('0x41')],{'raw':![]})['then'](function(_0x4070a2){var _0x543d63=_0x4f6a44['user'][_0x5774('0x46')]({'plain':!![]});if(!_0x543d63)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x543d63[_0x5774('0x47')]===_0x5774('0x48')){var _0xe50e85=_0x4070a2[_0x5774('0x46')]({'plain':!![]});var _0x10c2da=[{'name':'InboundRoutes','value':_0x5774('0x17')},{'name':_0x5774('0x18'),'value':_0x5774('0x42')},{'name':'InternalRoutes','value':_0x5774('0x1a')}];var _0x196fce=_['find'](_0x10c2da,['value',_0xe50e85['type']])[_0x5774('0x24')];return db[_0x5774('0x49')][_0x5774('0x21')]({'where':{'name':_0x196fce,'userProfileId':_0x543d63[_0x5774('0x4a')]},'raw':!![]})[_0x5774('0x15')](function(_0x4b9fd7){if(_0x4b9fd7&&_0x4b9fd7[_0x5774('0x4b')]===0x0){return db[_0x5774('0x22')]['create']({'name':_0xe50e85[_0x5774('0x24')],'resourceId':_0xe50e85['id'],'type':_0x4b9fd7[_0x5774('0x24')],'sectionId':_0x4b9fd7['id']},{})[_0x5774('0x15')](function(){return _0x4070a2;});}else{return _0x4070a2;}})[_0x5774('0x3d')](function(_0x4a1b9d){logger[_0x5774('0x4c')](_0x5774('0x4d'),_0x4a1b9d);throw _0x4a1b9d;});}return _0x4070a2;})[_0x5774('0x15')](respondWithResult(_0x18600c,0xc9))[_0x5774('0x3d')](handleError(_0x18600c,null));};exports['update']=function(_0x31d735,_0x219e2c){if(_0x31d735[_0x5774('0x41')]['id']){delete _0x31d735['body']['id'];}return db[_0x5774('0x27')]['find']({'where':{'id':_0x31d735[_0x5774('0x3f')]['id']}})[_0x5774('0x15')](handleEntityNotFound(_0x219e2c,null))['then'](function(_0x4c19a4){if(_0x4c19a4){return db['VoiceExtension'][_0x5774('0x4e')](_[_0x5774('0x35')](_0x31d735['body'],[_0x5774('0x44'),'context',_0x5774('0x4f'),'recordingFormat','cutdigits',_0x5774('0x50'),_0x5774('0x51')]),{'where':{'context':_0x4c19a4['context'],'exten':_0x4c19a4[_0x5774('0x44')]},'individualHooks':!![]})[_0x5774('0x15')](function(_0x1347e6){return _0x1347e6;});}return null;})[_0x5774('0x15')](respondWithStatusCode(_0x219e2c,null))['catch'](handleError(_0x219e2c,null));};exports[_0x5774('0x52')]=function(_0x129c3c,_0x1cb592){var _0x51a87f=_0x129c3c[_0x5774('0x3f')]['id'];var _0x3e6d2a=_0x129c3c[_0x5774('0x41')];var _0x3eaa2b=0xc8;var _0x1525f3=null;return db[_0x5774('0x53')][_0x5774('0x54')]({'isolationLevel':db['sequelize'][_0x5774('0x55')]['ISOLATION_LEVELS'][_0x5774('0x56')]},function(_0xfd98da){return db[_0x5774('0x27')][_0x5774('0x57')]({'where':{'id':_0x51a87f},'transaction':_0xfd98da})[_0x5774('0x15')](function(_0x38b88e){if(_0x38b88e){return db[_0x5774('0x27')][_0x5774('0x14')]({'where':{'VoiceExtensionId':_0x51a87f},'transaction':_0xfd98da})[_0x5774('0x15')](function(){var _0x316ae3=_[_0x5774('0x1d')](_0x3e6d2a,function(_0x2b330e){_0x2b330e[_0x5774('0x58')]=_0x51a87f;_0x2b330e[_0x5774('0x59')]=!![];return _0x2b330e;});return _0x38b88e[_0x5774('0x5a')](_0x316ae3);})['then'](function(_0x319406){return db[_0x5774('0x27')][_0x5774('0x5b')](_0x319406,{'transaction':_0xfd98da});});}else{_0x3eaa2b=0x194;_0x1525f3=[];}});})[_0x5774('0x15')](function(){if(_0x3eaa2b!==0x194){return db[_0x5774('0x27')][_0x5774('0x5c')]({'where':{'isApp':!![],'VoiceExtensionId':_0x51a87f},'order':_0x5774('0x5d')})[_0x5774('0x15')](function(_0x1c8c16){_0x1525f3=_0x1c8c16;});}})[_0x5774('0x3d')](function(_0x3b9ad6){_0x3eaa2b=0x1f4;logger[_0x5774('0x4c')](_0x3b9ad6[_0x5774('0x23')]);if(_0x3b9ad6['name']){delete _0x3b9ad6[_0x5774('0x24')];}_0x1525f3=_0x3b9ad6;})[_0x5774('0x5e')](function(){if(_0x1525f3===null){_0x1cb592[_0x5774('0xb')](_0x3eaa2b);}else{if(_0x3eaa2b===0x1f4){_0x1cb592[_0x5774('0xd')](_0x3eaa2b)[_0x5774('0x25')](_0x1525f3);}else{_0x1cb592[_0x5774('0xd')](_0x3eaa2b)[_0x5774('0x13')](_0x1525f3);}}});};
\ No newline at end of file
+var _0xa7df=['Content-Range','destroy','then','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','ignore','value','includes','type','find','name','error','stack','send','index','map','VoiceExtension','rawAttributes','fieldName','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','catch','create','startsWith','body','exten','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','../../components/parsers/qs','../../config/logger','api','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x5660d3,_0xf3c39a){var _0x85b11f=function(_0x3208c2){while(--_0x3208c2){_0x5660d3['push'](_0x5660d3['shift']());}};_0x85b11f(++_0xf3c39a);}(_0xa7df,0xac));var _0xfa7d=function(_0xfd1d2c,_0x210aa8){_0xfd1d2c=_0xfd1d2c-0x0;var _0x38d892=_0xa7df[_0xfd1d2c];return _0x38d892;};'use strict';var _=require(_0xfa7d('0x0'));var Redis=require('ioredis');var qs=require(_0xfa7d('0x1'));var logger=require(_0xfa7d('0x2'))(_0xfa7d('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xfa7d('0x4')]=_[_0xfa7d('0x5')](config[_0xfa7d('0x4')],{'host':_0xfa7d('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfa7d('0x7'))[_0xfa7d('0x8')](socket);function respondWithStatusCode(_0x3e1ea9,_0x333b4b){_0x333b4b=_0x333b4b||0xcc;return function(_0x26c612){if(_0x26c612){return _0x3e1ea9[_0xfa7d('0x9')](_0x333b4b);}return _0x3e1ea9[_0xfa7d('0xa')](_0x333b4b)[_0xfa7d('0xb')]();};}function respondWithResult(_0x4570f2,_0x2cbb6a){_0x2cbb6a=_0x2cbb6a||0xc8;return function(_0xf8ca52){if(_0xf8ca52){return _0x4570f2[_0xfa7d('0xa')](_0x2cbb6a)[_0xfa7d('0xc')](_0xf8ca52);}};}function respondWithFilteredResult(_0x41df1c,_0xa7fcb){return function(_0x1dcfa9){if(_0x1dcfa9){var _0x2225f8=typeof _0xa7fcb[_0xfa7d('0xd')]===_0xfa7d('0xe')&&typeof _0xa7fcb[_0xfa7d('0xf')]===_0xfa7d('0xe');var _0x11bf81=_0x1dcfa9['count'];var _0x2612ad=_0x2225f8?0x0:_0xa7fcb[_0xfa7d('0xd')];var _0x4b8786=_0x2225f8?_0x1dcfa9[_0xfa7d('0x10')]:_0xa7fcb[_0xfa7d('0xd')]+_0xa7fcb['limit'];var _0x5013a1;if(_0x4b8786>=_0x11bf81){_0x4b8786=_0x11bf81;_0x5013a1=0xc8;}else{_0x5013a1=0xce;}_0x41df1c[_0xfa7d('0xa')](_0x5013a1);return _0x41df1c[_0xfa7d('0x11')](_0xfa7d('0x12'),_0x2612ad+'-'+_0x4b8786+'/'+_0x11bf81)[_0xfa7d('0xc')](_0x1dcfa9);}return null;};}function removeEntity(_0x1acec2){return function(_0x34b026){if(_0x34b026){return _0x34b026[_0xfa7d('0x13')]()[_0xfa7d('0x14')](function(){var _0x302b52=_0x34b026['get']({'plain':!![]});var _0x1bfd66=[{'name':_0xfa7d('0x15'),'value':_0xfa7d('0x16'),'ignore':![]},{'name':_0xfa7d('0x17'),'value':_0xfa7d('0x18'),'ignore':![]},{'name':_0xfa7d('0x19'),'value':_0xfa7d('0x1a'),'ignore':![]}];var _0x26c90b=_(_0x1bfd66)['filter'](_0xfa7d('0x1b'))['map']('value')[_0xfa7d('0x1c')]();if(_[_0xfa7d('0x1d')](_0x26c90b,_0x302b52[_0xfa7d('0x1e')])){return;}var _0xbf4fcc=_[_0xfa7d('0x1f')](_0x1bfd66,[_0xfa7d('0x1c'),_0x302b52['type']])[_0xfa7d('0x20')];return db['UserProfileResource']['destroy']({'where':{'type':_0xbf4fcc,'resourceId':_0x302b52['id']}})[_0xfa7d('0x14')](function(){return _0x34b026;});})[_0xfa7d('0x14')](function(){_0x1acec2[_0xfa7d('0xa')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe263b3){return function(_0xf76108){if(!_0xf76108){_0xe263b3[_0xfa7d('0x9')](0x194);}return _0xf76108;};}function handleError(_0x534145,_0x564da2){_0x564da2=_0x564da2||0x1f4;return function(_0x2bac77){logger[_0xfa7d('0x21')](_0x2bac77[_0xfa7d('0x22')]);if(_0x2bac77['name']){delete _0x2bac77[_0xfa7d('0x20')];}_0x534145[_0xfa7d('0xa')](_0x564da2)[_0xfa7d('0x23')](_0x2bac77);};}exports[_0xfa7d('0x24')]=function(_0x2b09f4,_0xecd6e8){var _0x23a6c6={},_0x553f2b={},_0x2c96a6={'count':0x0,'rows':[]};var _0x450cb9=_[_0xfa7d('0x25')](db[_0xfa7d('0x26')][_0xfa7d('0x27')],function(_0xf710c7){return{'name':_0xf710c7[_0xfa7d('0x28')],'type':_0xf710c7[_0xfa7d('0x1e')]['key']};});_0x553f2b['model']=_[_0xfa7d('0x25')](_0x450cb9,_0xfa7d('0x20'));_0x553f2b['query']=_[_0xfa7d('0x29')](_0x2b09f4[_0xfa7d('0x2a')]);_0x553f2b[_0xfa7d('0x2b')]=_[_0xfa7d('0x2c')](_0x553f2b[_0xfa7d('0x2d')],_0x553f2b['query']);_0x23a6c6[_0xfa7d('0x2e')]=_[_0xfa7d('0x2c')](_0x553f2b[_0xfa7d('0x2d')],qs['fields'](_0x2b09f4[_0xfa7d('0x2a')][_0xfa7d('0x2f')]));_0x23a6c6[_0xfa7d('0x2e')]=_0x23a6c6[_0xfa7d('0x2e')][_0xfa7d('0x30')]?_0x23a6c6[_0xfa7d('0x2e')]:_0x553f2b[_0xfa7d('0x2d')];if(!_0x2b09f4['query'][_0xfa7d('0x31')](_0xfa7d('0x32'))){_0x23a6c6[_0xfa7d('0xf')]=qs[_0xfa7d('0xf')](_0x2b09f4[_0xfa7d('0x2a')][_0xfa7d('0xf')]);_0x23a6c6[_0xfa7d('0xd')]=qs[_0xfa7d('0xd')](_0x2b09f4[_0xfa7d('0x2a')][_0xfa7d('0xd')]);}_0x23a6c6[_0xfa7d('0x33')]=qs[_0xfa7d('0x34')](_0x2b09f4['query'][_0xfa7d('0x34')]);_0x23a6c6['where']=qs['filters'](_[_0xfa7d('0x35')](_0x2b09f4['query'],_0x553f2b['filters']),_0x450cb9);if(_0x2b09f4['query']['filter']){_0x23a6c6[_0xfa7d('0x36')]=_[_0xfa7d('0x37')](_0x23a6c6[_0xfa7d('0x36')],{'$or':_[_0xfa7d('0x25')](_0x450cb9,function(_0x385134){if(_0x385134['type']!==_0xfa7d('0x38')){var _0x2e87b7={};_0x2e87b7[_0x385134['name']]={'$like':'%'+_0x2b09f4[_0xfa7d('0x2a')]['filter']+'%'};return _0x2e87b7;}})});}_0x23a6c6=_[_0xfa7d('0x37')]({},_0x23a6c6,_0x2b09f4[_0xfa7d('0x39')]);var _0x474262={'where':_0x23a6c6['where']};return db['VoiceExtension']['count'](_0x474262)[_0xfa7d('0x14')](function(_0x52e2cb){_0x2c96a6[_0xfa7d('0x10')]=_0x52e2cb;if(_0x2b09f4['query'][_0xfa7d('0x3a')]){_0x23a6c6['include']=[{'all':!![]}];}return db['VoiceExtension'][_0xfa7d('0x3b')](_0x23a6c6);})[_0xfa7d('0x14')](function(_0x27c730){_0x2c96a6[_0xfa7d('0x3c')]=_0x27c730;return _0x2c96a6;})[_0xfa7d('0x14')](respondWithFilteredResult(_0xecd6e8,_0x23a6c6))['catch'](handleError(_0xecd6e8,null));};exports[_0xfa7d('0x3d')]=function(_0x240271,_0x203344){var _0x436744={'raw':![],'where':{'id':_0x240271[_0xfa7d('0x3e')]['id']}},_0x5075e0={};_0x5075e0[_0xfa7d('0x2d')]=_['keys'](db[_0xfa7d('0x26')][_0xfa7d('0x27')]);_0x5075e0['query']=_[_0xfa7d('0x29')](_0x240271[_0xfa7d('0x2a')]);_0x5075e0['filters']=_['intersection'](_0x5075e0[_0xfa7d('0x2d')],_0x5075e0['query']);_0x436744['attributes']=_[_0xfa7d('0x2c')](_0x5075e0[_0xfa7d('0x2d')],qs[_0xfa7d('0x2f')](_0x240271['query'][_0xfa7d('0x2f')]));_0x436744[_0xfa7d('0x2e')]=_0x436744[_0xfa7d('0x2e')][_0xfa7d('0x30')]?_0x436744[_0xfa7d('0x2e')]:_0x5075e0[_0xfa7d('0x2d')];if(_0x240271['query'][_0xfa7d('0x3a')]){_0x436744['include']=[{'all':!![]}];}_0x436744=_[_0xfa7d('0x37')]({},_0x436744,_0x240271['options']);return db[_0xfa7d('0x26')][_0xfa7d('0x1f')](_0x436744)[_0xfa7d('0x14')](handleEntityNotFound(_0x203344,null))['then'](respondWithResult(_0x203344,null))[_0xfa7d('0x3f')](handleError(_0x203344,null));};exports[_0xfa7d('0x13')]=function(_0x3520ae,_0x27fcd1){return db[_0xfa7d('0x26')][_0xfa7d('0x1f')]({'where':{'id':_0x3520ae[_0xfa7d('0x3e')]['id']}})[_0xfa7d('0x14')](handleEntityNotFound(_0x27fcd1,null))[_0xfa7d('0x14')](removeEntity(_0x27fcd1,null))[_0xfa7d('0x3f')](handleError(_0x27fcd1,null));};exports[_0xfa7d('0x40')]=function(_0x31a3f8,_0x56bd96){if(_0x31a3f8['body']['type']==='outbound'&&!_[_0xfa7d('0x41')](_0x31a3f8[_0xfa7d('0x42')]['exten'],'_')){_0x31a3f8[_0xfa7d('0x42')][_0xfa7d('0x43')]='_'['concat'](_0x31a3f8[_0xfa7d('0x42')][_0xfa7d('0x43')]);}return db[_0xfa7d('0x26')]['create'](_0x31a3f8[_0xfa7d('0x42')],{'raw':![]})[_0xfa7d('0x14')](function(_0x54862c){var _0x23c25c=_0x31a3f8[_0xfa7d('0x44')][_0xfa7d('0x45')]({'plain':!![]});if(!_0x23c25c)throw new Error(_0xfa7d('0x46'));if(_0x23c25c[_0xfa7d('0x47')]===_0xfa7d('0x44')){var _0x4c7343=_0x54862c[_0xfa7d('0x45')]({'plain':!![]});var _0x19a842=[{'name':'InboundRoutes','value':_0xfa7d('0x16')},{'name':_0xfa7d('0x17'),'value':_0xfa7d('0x18')},{'name':_0xfa7d('0x19'),'value':_0xfa7d('0x1a')}];var _0x2be855=_[_0xfa7d('0x1f')](_0x19a842,[_0xfa7d('0x1c'),_0x4c7343['type']])[_0xfa7d('0x20')];return db['UserProfileSection'][_0xfa7d('0x1f')]({'where':{'name':_0x2be855,'userProfileId':_0x23c25c[_0xfa7d('0x48')]},'raw':!![]})[_0xfa7d('0x14')](function(_0x22cf1d){if(_0x22cf1d&&_0x22cf1d[_0xfa7d('0x49')]===0x0){return db[_0xfa7d('0x4a')][_0xfa7d('0x40')]({'name':_0x4c7343[_0xfa7d('0x20')],'resourceId':_0x4c7343['id'],'type':_0x22cf1d['name'],'sectionId':_0x22cf1d['id']},{})[_0xfa7d('0x14')](function(){return _0x54862c;});}else{return _0x54862c;}})[_0xfa7d('0x3f')](function(_0x186586){logger[_0xfa7d('0x21')](_0xfa7d('0x4b'),_0x186586);throw _0x186586;});}return _0x54862c;})[_0xfa7d('0x14')](respondWithResult(_0x56bd96,0xc9))[_0xfa7d('0x3f')](handleError(_0x56bd96,null));};exports[_0xfa7d('0x4c')]=function(_0x17283d,_0x3ccf48){if(_0x17283d[_0xfa7d('0x42')]['id']){delete _0x17283d[_0xfa7d('0x42')]['id'];}return db[_0xfa7d('0x26')]['find']({'where':{'id':_0x17283d[_0xfa7d('0x3e')]['id']}})[_0xfa7d('0x14')](handleEntityNotFound(_0x3ccf48,null))['then'](function(_0x56ca4a){if(_0x56ca4a){return db['VoiceExtension'][_0xfa7d('0x4c')](_['pick'](_0x17283d[_0xfa7d('0x42')],[_0xfa7d('0x43'),_0xfa7d('0x4d'),_0xfa7d('0x4e'),_0xfa7d('0x4f'),'cutdigits',_0xfa7d('0x50'),_0xfa7d('0x51')]),{'where':{'context':_0x56ca4a[_0xfa7d('0x4d')],'exten':_0x56ca4a['exten']},'individualHooks':!![]})[_0xfa7d('0x14')](function(_0x382a23){return _0x382a23;});}return null;})[_0xfa7d('0x14')](respondWithStatusCode(_0x3ccf48,null))[_0xfa7d('0x3f')](handleError(_0x3ccf48,null));};exports[_0xfa7d('0x52')]=function(_0x2bbe17,_0x7b2900){var _0x5900b5=_0x2bbe17[_0xfa7d('0x3e')]['id'];var _0xc872c2=_0x2bbe17[_0xfa7d('0x42')];var _0x27dff9=0xc8;var _0x313eef=null;return db[_0xfa7d('0x53')][_0xfa7d('0x54')]({'isolationLevel':db[_0xfa7d('0x53')][_0xfa7d('0x55')][_0xfa7d('0x56')]['READ_COMMITTED']},function(_0x3a0b57){return db[_0xfa7d('0x26')][_0xfa7d('0x57')]({'where':{'id':_0x5900b5},'transaction':_0x3a0b57})[_0xfa7d('0x14')](function(_0x59ad87){if(_0x59ad87){return db['VoiceExtension'][_0xfa7d('0x13')]({'where':{'VoiceExtensionId':_0x5900b5},'transaction':_0x3a0b57})[_0xfa7d('0x14')](function(){var _0x2a892b=_[_0xfa7d('0x25')](_0xc872c2,function(_0x4864b9){_0x4864b9[_0xfa7d('0x58')]=_0x5900b5;_0x4864b9[_0xfa7d('0x59')]=!![];return _0x4864b9;});return _0x59ad87[_0xfa7d('0x5a')](_0x2a892b);})['then'](function(_0x401490){return db['VoiceExtension'][_0xfa7d('0x5b')](_0x401490,{'transaction':_0x3a0b57});});}else{_0x27dff9=0x194;_0x313eef=[];}});})[_0xfa7d('0x14')](function(){if(_0x27dff9!==0x194){return db[_0xfa7d('0x26')][_0xfa7d('0x5c')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5900b5},'order':_0xfa7d('0x5d')})[_0xfa7d('0x14')](function(_0x55887b){_0x313eef=_0x55887b;});}})[_0xfa7d('0x3f')](function(_0x96ea37){_0x27dff9=0x1f4;logger[_0xfa7d('0x21')](_0x96ea37['stack']);if(_0x96ea37[_0xfa7d('0x20')]){delete _0x96ea37['name'];}_0x313eef=_0x96ea37;})[_0xfa7d('0x5e')](function(){if(_0x313eef===null){_0x7b2900[_0xfa7d('0x9')](_0x27dff9);}else{if(_0x27dff9===0x1f4){_0x7b2900['status'](_0x27dff9)[_0xfa7d('0x23')](_0x313eef);}else{_0x7b2900[_0xfa7d('0xa')](_0x27dff9)[_0xfa7d('0xc')](_0x313eef);}}});};
\ No newline at end of file
index 1672b95..f49a5d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb2=['VoiceExtension','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1c470d,_0x81d66b){var _0x12141b=function(_0x45bfd3){while(--_0x45bfd3){_0x1c470d['push'](_0x1c470d['shift']());}};_0x12141b(++_0x81d66b);}(_0x4fb2,0xf1));var _0x24fb=function(_0x49b9ac,_0x8f3e2b){_0x49b9ac=_0x49b9ac-0x0;var _0x434131=_0x4fb2[_0x49b9ac];return _0x434131;};'use strict';var EventEmitter=require(_0x24fb('0x0'));var VoiceExtension=require(_0x24fb('0x1'))['db'][_0x24fb('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x24fb('0x3'),'afterUpdate':'update','afterDestroy':_0x24fb('0x4')};function emitEvent(_0xe60f14){return function(_0x4fd0a9,_0x1fb9b7,_0x2afe52){VoiceExtensionEvents[_0x24fb('0x5')](_0xe60f14+':'+_0x4fd0a9['id'],_0x4fd0a9);VoiceExtensionEvents[_0x24fb('0x5')](_0xe60f14,_0x4fd0a9);_0x2afe52(null);};}for(var e in events){if(events[_0x24fb('0x6')](e)){var event=events[e];VoiceExtension[_0x24fb('0x7')](e,emitEvent(event));}}module[_0x24fb('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x8445=['events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x183c67,_0x5443f1){var _0x469b44=function(_0x3bb7e8){while(--_0x3bb7e8){_0x183c67['push'](_0x183c67['shift']());}};_0x469b44(++_0x5443f1);}(_0x8445,0x197));var _0x5844=function(_0x2369de,_0x5e3e41){_0x2369de=_0x2369de-0x0;var _0x5cf9b2=_0x8445[_0x2369de];return _0x5cf9b2;};'use strict';var EventEmitter=require(_0x5844('0x0'));var VoiceExtension=require(_0x5844('0x1'))['db'][_0x5844('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x5844('0x3')](0x0);var events={'afterCreate':_0x5844('0x4'),'afterUpdate':_0x5844('0x5'),'afterDestroy':_0x5844('0x6')};function emitEvent(_0xe56e71){return function(_0x5a7829,_0x1d9b56,_0xe5430c){VoiceExtensionEvents[_0x5844('0x7')](_0xe56e71+':'+_0x5a7829['id'],_0x5a7829);VoiceExtensionEvents[_0x5844('0x7')](_0xe56e71,_0x5a7829);_0xe5430c(null);};}for(var e in events){if(events[_0x5844('0x8')](e)){var event=events[e];VoiceExtension[_0x5844('0x9')](e,emitEvent(event));}}module[_0x5844('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
index 1757d53..6ff5be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d66=['inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','options','split','length','name','trunk','phone','param','prefix','${EXTEN:','SIP','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','IntervalId','interval','*,*,*,*','intervals','map','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','then','Hangup','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','NoOp','CDR(routeAlias)='];(function(_0x5bdf8e,_0x45d970){var _0x3e0750=function(_0x41298b){while(--_0x41298b){_0x5bdf8e['push'](_0x5bdf8e['shift']());}};_0x3e0750(++_0x45d970);}(_0x5d66,0x130));var _0x65d6=function(_0x50fe4f,_0x3b99a7){_0x50fe4f=_0x50fe4f-0x0;var _0x36c023=_0x5d66[_0x50fe4f];return _0x36c023;};'use strict';var _=require(_0x65d6('0x0'));var attributes=require(_0x65d6('0x1'));module[_0x65d6('0x2')]=function(_0x2f4967){var _0x560dbf=_0x2f4967[_0x65d6('0x3')];function _0x43d8a6(_0x4aff50){var _0x5c339b=0x2;var _0xd94f91=[{'type':_0x4aff50[_0x65d6('0x4')],'app':_0x65d6('0x5'),'appdata':_0x65d6('0x6')+_0x4aff50[_0x65d6('0x4')],'context':_0x4aff50[_0x65d6('0x7')],'exten':_0x4aff50[_0x65d6('0x8')],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']},{'type':_0x4aff50['type'],'app':_0x4aff50[_0x65d6('0x9')]?_0x65d6('0x5'):_0x65d6('0xa'),'appdata':_0x4aff50[_0x65d6('0x9')]?_0x65d6('0xb')+_0x4aff50['alias']:'No\x20alias\x20set','context':_0x4aff50[_0x65d6('0x7')],'exten':_0x4aff50[_0x65d6('0x8')],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']}];if(_0x4aff50['type']===_0x65d6('0xc')){_0xd94f91[_0x65d6('0xd')]({'type':'inbound','app':_0x65d6('0x5'),'appdata':'CDR(routeid)='+_0x4aff50['id'],'context':_0x4aff50['context'],'exten':_0x4aff50[_0x65d6('0x8')],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']});}_0xd94f91['push']({'type':_0x4aff50[_0x65d6('0x4')],'app':_0x65d6('0x5'),'appdata':_0x65d6('0xe'),'context':_0x4aff50[_0x65d6('0x7')],'exten':_0x4aff50[_0x65d6('0x8')],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']},{'type':_0x4aff50[_0x65d6('0x4')],'app':'Set','appdata':_0x65d6('0xf'),'context':_0x4aff50[_0x65d6('0x7')],'exten':_0x4aff50[_0x65d6('0x8')],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']},{'type':_0x4aff50['type'],'app':_0x65d6('0x5'),'appdata':_0x65d6('0x10'),'context':_0x4aff50[_0x65d6('0x7')],'exten':_0x4aff50['exten'],'priority':_0x5c339b++,'VoiceExtensionId':_0x4aff50['id']});return _0xd94f91;}function _0x41a46f(_0x42cce3){var _0x566422=0x2;var _0x4ec1e1=[{'type':'outbound','app':'Set','appdata':'CDR(type)=outbound','context':_0x42cce3['context'],'exten':_0x42cce3['exten'],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x42cce3['alias']?_0x65d6('0x5'):_0x65d6('0xa'),'appdata':_0x42cce3[_0x65d6('0x9')]?_0x65d6('0xb')+_0x42cce3['alias']:_0x65d6('0x12'),'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':'outbound','app':_0x65d6('0x5'),'appdata':_0x65d6('0x13')+(_0x42cce3['cutdigits']?'${EXTEN:'+_0x42cce3[_0x65d6('0x14')]+'}':_0x65d6('0x15')),'context':_0x42cce3['context'],'exten':_0x42cce3['exten'],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x65d6('0x5'),'appdata':_0x65d6('0x16')+_0x42cce3['id'],'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x65d6('0x17'),'appdata':_0x65d6('0x18')+(_0x566422+0x2)+_0x65d6('0x19')+(_0x566422+0x1)+')','context':_0x42cce3['context'],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x65d6('0x5'),'appdata':_0x42cce3[_0x65d6('0x14')]?_0x65d6('0x1a')+_0x42cce3['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':'outbound','app':_0x65d6('0x5'),'appdata':_0x65d6('0xe'),'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':'Set','appdata':_0x65d6('0xf'),'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3['exten'],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':'outbound','app':_0x65d6('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x65d6('0x5'),'appdata':_0x65d6('0x1b')+_0x42cce3['id'],'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']}];if(_0x42cce3[_0x65d6('0x1c')](_0x65d6('0x1d'))&&_0x42cce3[_0x65d6('0x1d')]!==_0x65d6('0x1e')){_0x4ec1e1[_0x65d6('0xd')]({'type':_0x65d6('0x11'),'app':_0x65d6('0x5'),'appdata':_0x65d6('0x1f'),'context':_0x42cce3[_0x65d6('0x7')],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']},{'type':_0x65d6('0x11'),'app':_0x65d6('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x42cce3[_0x65d6('0x1d')]||'wav','context':_0x42cce3['context'],'exten':_0x42cce3[_0x65d6('0x8')],'priority':_0x566422++,'VoiceExtensionId':_0x42cce3['id']});}return _0x4ec1e1;}function _0x59fc9a(_0x57463f,_0x31de7f){var _0x1a4f13=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0x65d6('0x20'),'param':0x2},{'name':'url','param':0x3}];var _0x1dc50b={};var _0x51a5a8=_0x31de7f[_0x65d6('0x21')](',');var _0x1352e2=[];for(var _0x486c0f=0x0;_0x486c0f<_0x1a4f13[_0x65d6('0x22')];_0x486c0f++){switch(_0x1a4f13[_0x486c0f][_0x65d6('0x23')]){case'trunk':_0x1dc50b[_0x65d6('0x24')]=_0x51a5a8[_0x1a4f13[_0x486c0f]['param']]['split']('/')[0x1];_0x1dc50b[_0x65d6('0x25')]=_0x51a5a8[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]][_0x65d6('0x21')]('/')[0x2];_0x1dc50b[_0x65d6('0x27')]=_0x1dc50b[_0x65d6('0x25')]?_0x1dc50b[_0x65d6('0x25')][_0x65d6('0x21')]('$')[0x0]:undefined;_0x1dc50b[_0x65d6('0x25')]=_0x57463f[_0x65d6('0x14')]?(_0x1dc50b['prefix']||'')+_0x65d6('0x28')+_0x57463f[_0x65d6('0x14')]+'}':(_0x1dc50b[_0x65d6('0x27')]||'')+_0x65d6('0x15');_0x1352e2[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]]=[_0x65d6('0x29'),_0x1dc50b['trunk'],_0x1dc50b[_0x65d6('0x25')]]['join']('/');break;case _0x65d6('0x20'):_0x1dc50b[_0x65d6('0x20')]=_0x51a5a8[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]];if(_0x57463f['recordingFormat']!=='none'){if(_0x1dc50b['options']['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x1dc50b[_0x65d6('0x20')]+=_0x65d6('0x2a');}}else{_0x1dc50b[_0x65d6('0x20')]=_0x1dc50b[_0x65d6('0x20')][_0x65d6('0x2b')](_0x65d6('0x2a'),'');}_0x1352e2[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]]=_0x1dc50b[_0x65d6('0x20')];break;default:_0x1352e2[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]]=_0x51a5a8[_0x1a4f13[_0x486c0f][_0x65d6('0x26')]];}}return _0x1352e2['join'](',');}function _0x170227(_0x32a007,_0x5eafaa,_0x4780af){return new Promise(function(_0x53df89,_0xad5ae1){var _0x46629d=[];if(_[_0x65d6('0x2c')](_0x5eafaa))return _0x53df89(_0x46629d);_0x560dbf[_0x65d6('0x2d')][_0x65d6('0x2e')]({'attributes':['id','interval',_0x65d6('0x2f')],'raw':!![]})['then'](function(_0x3a6076){for(var _0x61fded=0x0,_0x88e981=0x0;_0x61fded<_0x5eafaa[_0x65d6('0x22')];_0x61fded++,_0x88e981=0x0){var _0x453ef6=_0x5eafaa[_0x61fded];var _0x28918e=[];var _0x388dfe=[];delete _0x453ef6['id'];if(_0x453ef6[_0x65d6('0x30')]!==_0x65d6('0x31')){_0x453ef6[_0x65d6('0x32')]=[_0x453ef6[_0x65d6('0x30')]];}else{_0x453ef6[_0x65d6('0x32')]=_0x453ef6[_0x65d6('0x2f')]?_[_0x65d6('0x33')](_[_0x65d6('0x34')](_0x3a6076,{'IntervalId':_0x453ef6[_0x65d6('0x2f')]}),_0x65d6('0x30')):[];}_0x453ef6[_0x65d6('0x7')]=_0x32a007['context'];_0x453ef6['exten']=_0x32a007[_0x65d6('0x8')];if(_0x453ef6['type'])_0x453ef6['type']=_0x453ef6[_0x65d6('0x4')][_0x65d6('0x35')]();if(_0x32a007[_0x65d6('0x4')]===_0x65d6('0x11')){if(_0x453ef6[_0x65d6('0x1c')](_0x65d6('0x36'))&&_0x453ef6['tag']&&_0x453ef6[_0x65d6('0x36')]!=='--'){_0x28918e[_0x65d6('0xd')]({'type':_0x453ef6[_0x65d6('0x4')][_0x65d6('0x35')](),'app':_0x65d6('0x5'),'appdata':'CDR(tag)='+_0x453ef6[_0x65d6('0x36')],'context':_0x32a007['context'],'exten':_0x32a007[_0x65d6('0x8')],'priority':_0x453ef6[_0x65d6('0x32')][_0x65d6('0x22')]+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});}_0x28918e['push']({'type':_0x453ef6[_0x65d6('0x4')][_0x65d6('0x35')](),'app':'ExecIf','appdata':_0x65d6('0x37')+(_0x453ef6['callerID']?'Set(CALLERID(all)='+_0x453ef6['callerID']+')':_0x65d6('0x38')),'context':_0x32a007['context'],'exten':_0x32a007[_0x65d6('0x8')],'priority':_0x453ef6['intervals'][_0x65d6('0x22')]+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});}else{if(_0x453ef6['hasOwnProperty'](_0x65d6('0x39'))){if(['queue',_0x65d6('0x3a')][_0x65d6('0x3b')](_0x453ef6[_0x65d6('0x3c')][_0x65d6('0x35')]())&&_0x453ef6[_0x65d6('0x3d')]!==_0x65d6('0x3e')){if(_0x453ef6[_0x65d6('0x39')]){_0x28918e[_0x65d6('0xd')]({'type':_0x453ef6[_0x65d6('0x4')][_0x65d6('0x35')](),'app':_0x65d6('0x17'),'appdata':_0x65d6('0x3f'),'context':_0x32a007['context'],'exten':_0x32a007['exten'],'priority':_0x453ef6[_0x65d6('0x32')][_0x65d6('0x22')]+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});_0x28918e['push']({'type':_0x453ef6['type']['toLowerCase'](),'app':_0x65d6('0x5'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x32a007['context'],'exten':_0x32a007[_0x65d6('0x8')],'priority':_0x453ef6[_0x65d6('0x32')]['length']+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});}else{_0x28918e[_0x65d6('0xd')]({'type':_0x453ef6['type'][_0x65d6('0x35')](),'app':_0x65d6('0x17'),'appdata':_0x65d6('0x40'),'context':_0x32a007[_0x65d6('0x7')],'exten':_0x32a007['exten'],'priority':_0x453ef6['intervals'][_0x65d6('0x22')]+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});_0x28918e['push']({'type':_0x453ef6['type'][_0x65d6('0x35')](),'app':_0x65d6('0x5'),'appdata':_0x65d6('0x41'),'context':_0x32a007[_0x65d6('0x7')],'exten':_0x32a007[_0x65d6('0x8')],'priority':_0x453ef6[_0x65d6('0x32')][_0x65d6('0x22')]+_0x4780af+_0x88e981++,'VoiceExtensionId':_0x32a007['id']});}}}}for(var _0x4a168c=0x0;_0x4a168c<_0x453ef6[_0x65d6('0x32')]['length'];_0x4a168c++){var _0x2c1e71=_0x4780af+_0x453ef6[_0x65d6('0x32')]['length'];var _0x5a3bbc=_0x4a168c===_0x453ef6['intervals'][_0x65d6('0x22')]-0x1?_0x4780af+_0x28918e['length']+_0x388dfe[_0x65d6('0x22')]+0x2:_0x4780af+_0x4a168c+0x1;_0x28918e[_0x65d6('0x42')](_0x4a168c,0x0,{'type':_0x32a007['type'],'app':'GotoIfTime','appdata':_0x453ef6[_0x65d6('0x32')][_0x4a168c]+'?'+_0x32a007[_0x65d6('0x7')]+_0x65d6('0x43')+_0x2c1e71+':'+_0x32a007[_0x65d6('0x7')]+_0x65d6('0x43')+_0x5a3bbc,'exten':_0x32a007['exten'],'context':_0x32a007[_0x65d6('0x7')],'priority':_0x4780af+_0x4a168c,'VoiceExtensionId':_0x32a007['id']});}if(_0x453ef6[_0x65d6('0x3d')]==='outboundDial')_0x453ef6[_0x65d6('0x44')]=_0x59fc9a(_0x32a007,_0x453ef6[_0x65d6('0x44')]);_0x453ef6[_0x65d6('0x45')]=_0x28918e[_0x65d6('0x22')]?_[_0x65d6('0x46')](_0x28918e)[_0x65d6('0x45')]+0x1:_0x4780af;_0x46629d=_[_0x65d6('0x47')](_0x46629d,_0x28918e,[_0x453ef6],_0x388dfe);_0x4780af=_[_0x65d6('0x46')](_0x46629d)[_0x65d6('0x45')]+0x1;}return _0x53df89(_0x46629d);})[_0x65d6('0x48')](function(_0x3f47d0){_0xad5ae1(_0x3f47d0);});});}return _0x2f4967[_0x65d6('0x49')](_0x65d6('0x4a'),attributes,{'tableName':_0x65d6('0x4b'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x23aeb9){var _0x44cb3f=this[_0x65d6('0x4c')]({'plain':!![]});var _0x9f8ee0=_0x44cb3f[_0x65d6('0x4')]===_0x65d6('0x11')?_0x41a46f(_0x44cb3f):_0x43d8a6(_0x44cb3f);return _0x170227(_0x44cb3f,_0x23aeb9,_[_0x65d6('0x46')](_0x9f8ee0)[_0x65d6('0x45')]+0x1)[_0x65d6('0x4d')](function(_0x42bd51){var _0x11f4d1=_[_0x65d6('0x47')](_0x9f8ee0,_0x42bd51);_0x11f4d1[_0x65d6('0xd')]({'type':_0x44cb3f[_0x65d6('0x4')],'app':_0x65d6('0x4e'),'exten':_0x44cb3f[_0x65d6('0x8')],'context':_0x44cb3f[_0x65d6('0x7')],'priority':_[_0x65d6('0x46')](_0x11f4d1)[_0x65d6('0x45')]+0x1,'VoiceExtensionId':_0x44cb3f['id']});return _0x11f4d1;});}}});};
\ No newline at end of file
+var _0x2444=['timeout','url','split','length','name','param','prefix','phone','${EXTEN}','SIP','join','options','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','intervals','IntervalId','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','answer','queue','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','voice_extensions','get','lodash','./voiceExtension.attributes','exports','models','type','CDR(type)=','exten','Set','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','context','inbound','CDR(routeid)=','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk'];(function(_0x17772e,_0x3d4d93){var _0x21e766=function(_0x474f74){while(--_0x474f74){_0x17772e['push'](_0x17772e['shift']());}};_0x21e766(++_0x3d4d93);}(_0x2444,0x170));var _0x4244=function(_0x2d7a82,_0x25c994){_0x2d7a82=_0x2d7a82-0x0;var _0x3a3b7b=_0x2444[_0x2d7a82];return _0x3a3b7b;};'use strict';var _=require(_0x4244('0x0'));var attributes=require(_0x4244('0x1'));module[_0x4244('0x2')]=function(_0x147332){var _0x15bd8f=_0x147332[_0x4244('0x3')];function _0x58dda7(_0x44e387){var _0x48b93c=0x2;var _0xe12e50=[{'type':_0x44e387[_0x4244('0x4')],'app':'Set','appdata':_0x4244('0x5')+_0x44e387[_0x4244('0x4')],'context':_0x44e387['context'],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']},{'type':_0x44e387[_0x4244('0x4')],'app':_0x44e387['alias']?_0x4244('0x7'):_0x4244('0x8'),'appdata':_0x44e387[_0x4244('0x9')]?_0x4244('0xa')+_0x44e387['alias']:_0x4244('0xb'),'context':_0x44e387[_0x4244('0xc')],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']}];if(_0x44e387[_0x4244('0x4')]==='inbound'){_0xe12e50['push']({'type':_0x4244('0xd'),'app':_0x4244('0x7'),'appdata':_0x4244('0xe')+_0x44e387['id'],'context':_0x44e387[_0x4244('0xc')],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']});}_0xe12e50[_0x4244('0xf')]({'type':_0x44e387['type'],'app':_0x4244('0x7'),'appdata':_0x4244('0x10'),'context':_0x44e387[_0x4244('0xc')],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']},{'type':_0x44e387[_0x4244('0x4')],'app':_0x4244('0x7'),'appdata':_0x4244('0x11'),'context':_0x44e387[_0x4244('0xc')],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']},{'type':_0x44e387[_0x4244('0x4')],'app':_0x4244('0x7'),'appdata':_0x4244('0x12'),'context':_0x44e387[_0x4244('0xc')],'exten':_0x44e387[_0x4244('0x6')],'priority':_0x48b93c++,'VoiceExtensionId':_0x44e387['id']});return _0xe12e50;}function _0x5d8494(_0x13a93e){var _0x1d3cd3=0x2;var _0x391dbe=[{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x4244('0x14'),'context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x13a93e[_0x4244('0x9')]?_0x4244('0x7'):'NoOp','appdata':_0x13a93e[_0x4244('0x9')]?_0x4244('0xa')+_0x13a93e['alias']:_0x4244('0xb'),'context':_0x13a93e['context'],'exten':_0x13a93e['exten'],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':'outbound','app':'Set','appdata':'CDR(destination)='+(_0x13a93e[_0x4244('0x15')]?_0x4244('0x16')+_0x13a93e[_0x4244('0x15')]+'}':'${EXTEN}'),'context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x4244('0xe')+_0x13a93e['id'],'context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x17'),'appdata':_0x4244('0x18')+(_0x1d3cd3+0x2)+_0x4244('0x19')+(_0x1d3cd3+0x1)+')','context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e['exten'],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x13a93e[_0x4244('0x15')]?'CDR(prefix)=${EXTEN:0:'+_0x13a93e[_0x4244('0x15')]+'}':'CDR(prefix)=noprefix','context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':'Set','appdata':_0x4244('0x10'),'context':_0x13a93e['context'],'exten':_0x13a93e['exten'],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x4244('0x11'),'context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x4244('0x12'),'context':_0x13a93e['context'],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':_0x4244('0x13'),'app':_0x4244('0x7'),'appdata':_0x4244('0x1a')+_0x13a93e['id'],'context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']}];if(_0x13a93e[_0x4244('0x1b')](_0x4244('0x1c'))&&_0x13a93e['recordingFormat']!=='none'){_0x391dbe[_0x4244('0xf')]({'type':'outbound','app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x13a93e[_0x4244('0xc')],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']},{'type':'outbound','app':_0x4244('0x7'),'appdata':_0x4244('0x1d')+_0x13a93e[_0x4244('0x1c')]||_0x4244('0x1e'),'context':_0x13a93e['context'],'exten':_0x13a93e[_0x4244('0x6')],'priority':_0x1d3cd3++,'VoiceExtensionId':_0x13a93e['id']});}return _0x391dbe;}function _0x1a51b8(_0x2f9f4d,_0x1fc18a){var _0x3c5671=[{'name':_0x4244('0x1f'),'param':0x0},{'name':_0x4244('0x20'),'param':0x1},{'name':'options','param':0x2},{'name':_0x4244('0x21'),'param':0x3}];var _0xde171e={};var _0x498733=_0x1fc18a[_0x4244('0x22')](',');var _0x97374e=[];for(var _0x2fc9ee=0x0;_0x2fc9ee<_0x3c5671[_0x4244('0x23')];_0x2fc9ee++){switch(_0x3c5671[_0x2fc9ee][_0x4244('0x24')]){case _0x4244('0x1f'):_0xde171e[_0x4244('0x1f')]=_0x498733[_0x3c5671[_0x2fc9ee][_0x4244('0x25')]][_0x4244('0x22')]('/')[0x1];_0xde171e['phone']=_0x498733[_0x3c5671[_0x2fc9ee]['param']][_0x4244('0x22')]('/')[0x2];_0xde171e[_0x4244('0x26')]=_0xde171e[_0x4244('0x27')]?_0xde171e[_0x4244('0x27')]['split']('$')[0x0]:undefined;_0xde171e[_0x4244('0x27')]=_0x2f9f4d[_0x4244('0x15')]?(_0xde171e[_0x4244('0x26')]||'')+_0x4244('0x16')+_0x2f9f4d[_0x4244('0x15')]+'}':(_0xde171e['prefix']||'')+_0x4244('0x28');_0x97374e[_0x3c5671[_0x2fc9ee]['param']]=[_0x4244('0x29'),_0xde171e[_0x4244('0x1f')],_0xde171e[_0x4244('0x27')]][_0x4244('0x2a')]('/');break;case'options':_0xde171e[_0x4244('0x2b')]=_0x498733[_0x3c5671[_0x2fc9ee][_0x4244('0x25')]];if(_0x2f9f4d[_0x4244('0x1c')]!=='none'){if(_0xde171e[_0x4244('0x2b')][_0x4244('0x2c')]('U(xcally-mixmonitor-context)')<0x0){_0xde171e['options']+=_0x4244('0x2d');}}else{_0xde171e[_0x4244('0x2b')]=_0xde171e[_0x4244('0x2b')][_0x4244('0x2e')](_0x4244('0x2d'),'');}_0x97374e[_0x3c5671[_0x2fc9ee]['param']]=_0xde171e[_0x4244('0x2b')];break;default:_0x97374e[_0x3c5671[_0x2fc9ee][_0x4244('0x25')]]=_0x498733[_0x3c5671[_0x2fc9ee][_0x4244('0x25')]];}}return _0x97374e[_0x4244('0x2a')](',');}function _0x3f652a(_0x5bc2df,_0x26fb1b,_0x1816c1){return new Promise(function(_0x3e9658,_0x4008e8){var _0xb18c21=[];if(_[_0x4244('0x2f')](_0x26fb1b))return _0x3e9658(_0xb18c21);_0x15bd8f[_0x4244('0x30')][_0x4244('0x31')]({'attributes':['id',_0x4244('0x32'),'IntervalId'],'raw':!![]})['then'](function(_0x51f933){for(var _0x1dd46d=0x0,_0x6cd2c=0x0;_0x1dd46d<_0x26fb1b[_0x4244('0x23')];_0x1dd46d++,_0x6cd2c=0x0){var _0x5bace7=_0x26fb1b[_0x1dd46d];var _0x25d35a=[];var _0x1ed365=[];delete _0x5bace7['id'];if(_0x5bace7[_0x4244('0x32')]!=='*,*,*,*'){_0x5bace7[_0x4244('0x33')]=[_0x5bace7[_0x4244('0x32')]];}else{_0x5bace7[_0x4244('0x33')]=_0x5bace7[_0x4244('0x34')]?_['map'](_['filter'](_0x51f933,{'IntervalId':_0x5bace7[_0x4244('0x34')]}),_0x4244('0x32')):[];}_0x5bace7['context']=_0x5bc2df[_0x4244('0xc')];_0x5bace7[_0x4244('0x6')]=_0x5bc2df[_0x4244('0x6')];if(_0x5bace7['type'])_0x5bace7[_0x4244('0x4')]=_0x5bace7[_0x4244('0x4')]['toLowerCase']();if(_0x5bc2df[_0x4244('0x4')]===_0x4244('0x13')){if(_0x5bace7[_0x4244('0x1b')]('tag')&&_0x5bace7[_0x4244('0x35')]&&_0x5bace7['tag']!=='--'){_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7['type'][_0x4244('0x36')](),'app':'Set','appdata':_0x4244('0x37')+_0x5bace7[_0x4244('0x35')],'context':_0x5bc2df['context'],'exten':_0x5bc2df[_0x4244('0x6')],'priority':_0x5bace7[_0x4244('0x33')][_0x4244('0x23')]+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});}_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7['type'][_0x4244('0x36')](),'app':_0x4244('0x17'),'appdata':_0x4244('0x38')+(_0x5bace7[_0x4244('0x39')]?'Set(CALLERID(all)='+_0x5bace7[_0x4244('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0x5bc2df[_0x4244('0xc')],'exten':_0x5bc2df[_0x4244('0x6')],'priority':_0x5bace7[_0x4244('0x33')][_0x4244('0x23')]+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});}else{if(_0x5bace7['hasOwnProperty'](_0x4244('0x3a'))){if([_0x4244('0x3b'),_0x4244('0x3c')][_0x4244('0x3d')](_0x5bace7[_0x4244('0x3e')][_0x4244('0x36')]())&&_0x5bace7[_0x4244('0x3f')]!==_0x4244('0x40')){if(_0x5bace7['answer']){_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7[_0x4244('0x4')]['toLowerCase'](),'app':_0x4244('0x17'),'appdata':_0x4244('0x41'),'context':_0x5bc2df[_0x4244('0xc')],'exten':_0x5bc2df[_0x4244('0x6')],'priority':_0x5bace7[_0x4244('0x33')]['length']+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7[_0x4244('0x4')]['toLowerCase'](),'app':_0x4244('0x7'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5bc2df[_0x4244('0xc')],'exten':_0x5bc2df['exten'],'priority':_0x5bace7[_0x4244('0x33')][_0x4244('0x23')]+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});}else{_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7[_0x4244('0x4')]['toLowerCase'](),'app':_0x4244('0x17'),'appdata':_0x4244('0x42'),'context':_0x5bc2df['context'],'exten':_0x5bc2df['exten'],'priority':_0x5bace7[_0x4244('0x33')]['length']+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});_0x25d35a[_0x4244('0xf')]({'type':_0x5bace7[_0x4244('0x4')][_0x4244('0x36')](),'app':_0x4244('0x7'),'appdata':_0x4244('0x43'),'context':_0x5bc2df[_0x4244('0xc')],'exten':_0x5bc2df[_0x4244('0x6')],'priority':_0x5bace7['intervals'][_0x4244('0x23')]+_0x1816c1+_0x6cd2c++,'VoiceExtensionId':_0x5bc2df['id']});}}}}for(var _0x1ea3e5=0x0;_0x1ea3e5<_0x5bace7['intervals'][_0x4244('0x23')];_0x1ea3e5++){var _0x553960=_0x1816c1+_0x5bace7['intervals'][_0x4244('0x23')];var _0x5d2e69=_0x1ea3e5===_0x5bace7[_0x4244('0x33')][_0x4244('0x23')]-0x1?_0x1816c1+_0x25d35a[_0x4244('0x23')]+_0x1ed365[_0x4244('0x23')]+0x2:_0x1816c1+_0x1ea3e5+0x1;_0x25d35a[_0x4244('0x44')](_0x1ea3e5,0x0,{'type':_0x5bc2df[_0x4244('0x4')],'app':_0x4244('0x45'),'appdata':_0x5bace7[_0x4244('0x33')][_0x1ea3e5]+'?'+_0x5bc2df[_0x4244('0xc')]+',${EXTEN},'+_0x553960+':'+_0x5bc2df[_0x4244('0xc')]+_0x4244('0x46')+_0x5d2e69,'exten':_0x5bc2df['exten'],'context':_0x5bc2df[_0x4244('0xc')],'priority':_0x1816c1+_0x1ea3e5,'VoiceExtensionId':_0x5bc2df['id']});}if(_0x5bace7[_0x4244('0x3f')]===_0x4244('0x47'))_0x5bace7[_0x4244('0x48')]=_0x1a51b8(_0x5bc2df,_0x5bace7[_0x4244('0x48')]);_0x5bace7[_0x4244('0x49')]=_0x25d35a[_0x4244('0x23')]?_[_0x4244('0x4a')](_0x25d35a)[_0x4244('0x49')]+0x1:_0x1816c1;_0xb18c21=_[_0x4244('0x4b')](_0xb18c21,_0x25d35a,[_0x5bace7],_0x1ed365);_0x1816c1=_[_0x4244('0x4a')](_0xb18c21)[_0x4244('0x49')]+0x1;}return _0x3e9658(_0xb18c21);})[_0x4244('0x4c')](function(_0xaa2bf3){_0x4008e8(_0xaa2bf3);});});}return _0x147332[_0x4244('0x4d')]('VoiceExtension',attributes,{'tableName':_0x4244('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x24ed3f){var _0x5dc2c6=this[_0x4244('0x4f')]({'plain':!![]});var _0x24bbaf=_0x5dc2c6[_0x4244('0x4')]===_0x4244('0x13')?_0x5d8494(_0x5dc2c6):_0x58dda7(_0x5dc2c6);return _0x3f652a(_0x5dc2c6,_0x24ed3f,_['last'](_0x24bbaf)[_0x4244('0x49')]+0x1)['then'](function(_0x53d4ae){var _0x5a3a55=_['concat'](_0x24bbaf,_0x53d4ae);_0x5a3a55['push']({'type':_0x5dc2c6[_0x4244('0x4')],'app':'Hangup','exten':_0x5dc2c6[_0x4244('0x6')],'context':_0x5dc2c6[_0x4244('0xc')],'priority':_['last'](_0x5a3a55)[_0x4244('0x49')]+0x1,'VoiceExtensionId':_0x5dc2c6['id']});return _0x5a3a55;});}}});};
\ No newline at end of file
index 83561bf..94e2d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['then','info','request\x20sent','debug','stringify','error','VoiceExtension,\x20%s,\x20%s','message','result','catch','options','raw','where','limit','include','map','attributes','model','GetVoiceExtension','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request'];(function(_0x2fe319,_0x5b32c9){var _0xaf1ab2=function(_0x24db69){while(--_0x24db69){_0x2fe319['push'](_0x2fe319['shift']());}};_0xaf1ab2(++_0x5b32c9);}(_0x1cb9,0x14e));var _0x91cb=function(_0x2942db,_0x4cf5a6){_0x2942db=_0x2942db-0x0;var _0x265b0f=_0x1cb9[_0x2942db];return _0x265b0f;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});config[_0x91cb('0xb')]=_[_0x91cb('0xc')](config['redis'],{'host':_0x91cb('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x91cb('0xb')]));require('./voiceExtension.socket')[_0x91cb('0xe')](socket);function respondWithRpcPromise(_0x317df0,_0x45317f,_0x4a631d){return new BPromise(function(_0x429928,_0x23ba9a){return client[_0x91cb('0xf')](_0x317df0,_0x4a631d)[_0x91cb('0x10')](function(_0x2465be){logger[_0x91cb('0x11')]('VoiceExtension,\x20%s,\x20%s',_0x45317f,_0x91cb('0x12'));logger[_0x91cb('0x13')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x45317f,_0x91cb('0x12'),JSON[_0x91cb('0x14')](_0x2465be));if(_0x2465be[_0x91cb('0x15')]){if(_0x2465be[_0x91cb('0x15')]['code']===0x1f4){logger['error'](_0x91cb('0x16'),_0x45317f,_0x2465be[_0x91cb('0x15')]['message']);return _0x23ba9a(_0x2465be['error'][_0x91cb('0x17')]);}logger[_0x91cb('0x15')](_0x91cb('0x16'),_0x45317f,_0x2465be['error'][_0x91cb('0x17')]);return _0x429928(_0x2465be[_0x91cb('0x15')]['message']);}else{logger[_0x91cb('0x11')](_0x91cb('0x16'),_0x45317f,_0x91cb('0x12'));_0x429928(_0x2465be[_0x91cb('0x18')]['message']);}})[_0x91cb('0x19')](function(_0x7dcf60){logger['error'](_0x91cb('0x16'),_0x45317f,_0x7dcf60);_0x23ba9a(_0x7dcf60);});});}exports['GetVoiceExtension']=function(_0x55042a){var _0x281ff3=this;return new Promise(function(_0x160ded,_0x56e409){return db['VoiceExtension']['findAll']({'raw':_0x55042a[_0x91cb('0x1a')]?_0x55042a[_0x91cb('0x1a')][_0x91cb('0x1b')]===undefined?!![]:![]:!![],'where':_0x55042a[_0x91cb('0x1a')]?_0x55042a['options'][_0x91cb('0x1c')]||null:null,'attributes':_0x55042a[_0x91cb('0x1a')]?_0x55042a[_0x91cb('0x1a')]['attributes']||null:null,'limit':_0x55042a[_0x91cb('0x1a')]?_0x55042a[_0x91cb('0x1a')][_0x91cb('0x1d')]||null:null,'include':_0x55042a[_0x91cb('0x1a')]?_0x55042a[_0x91cb('0x1a')][_0x91cb('0x1e')]?_[_0x91cb('0x1f')](_0x55042a[_0x91cb('0x1a')][_0x91cb('0x1e')],function(_0x4c8438){return{'model':db[_0x4c8438['model']],'as':_0x4c8438['as'],'attributes':_0x4c8438[_0x91cb('0x20')],'include':_0x4c8438['include']?_[_0x91cb('0x1f')](_0x4c8438[_0x91cb('0x1e')],function(_0x318031){return{'model':db[_0x318031['model']],'as':_0x318031['as'],'attributes':_0x318031[_0x91cb('0x20')],'include':_0x318031['include']?_[_0x91cb('0x1f')](_0x318031[_0x91cb('0x1e')],function(_0x3b3ee6){return{'model':db[_0x3b3ee6[_0x91cb('0x21')]],'as':_0x3b3ee6['as'],'attributes':_0x3b3ee6[_0x91cb('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f04a3){logger['info'](_0x91cb('0x22'),_0x55042a);logger[_0x91cb('0x13')](_0x91cb('0x22'),_0x55042a,JSON['stringify'](_0x2f04a3));_0x160ded(_0x2f04a3);})[_0x91cb('0x19')](function(_0x146e1f){logger[_0x91cb('0x15')](_0x91cb('0x22'),_0x146e1f[_0x91cb('0x17')],_0x55042a);_0x56e409(_0x281ff3[_0x91cb('0x15')](0x1f4,_0x146e1f[_0x91cb('0x17')]));});});};
\ No newline at end of file
+var _0x5785=['findAll','options','raw','attributes','limit','map','include','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceExtension','VoiceExtension'];(function(_0x21a6da,_0x5dfe9a){var _0x2f1108=function(_0x298f45){while(--_0x298f45){_0x21a6da['push'](_0x21a6da['shift']());}};_0x2f1108(++_0x5dfe9a);}(_0x5785,0x119));var _0x5578=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0x5785[_0x3740fe];return _0x55492b;};'use strict';var _=require(_0x5578('0x0'));var util=require(_0x5578('0x1'));var moment=require(_0x5578('0x2'));var BPromise=require(_0x5578('0x3'));var rs=require(_0x5578('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5578('0x5'))['db'];var utils=require(_0x5578('0x6'));var logger=require(_0x5578('0x7'))(_0x5578('0x8'));var config=require(_0x5578('0x9'));var jayson=require(_0x5578('0xa'));var client=jayson[_0x5578('0xb')][_0x5578('0xc')]({'port':0x232a});config[_0x5578('0xd')]=_[_0x5578('0xe')](config['redis'],{'host':_0x5578('0xf'),'port':0x18eb});var socket=require(_0x5578('0x10'))(new Redis(config[_0x5578('0xd')]));require('./voiceExtension.socket')[_0x5578('0x11')](socket);function respondWithRpcPromise(_0x5e9263,_0x3edb9f,_0x5a95e7){return new BPromise(function(_0xe3ae44,_0x3fcf85){return client[_0x5578('0x12')](_0x5e9263,_0x5a95e7)['then'](function(_0x51c232){logger[_0x5578('0x13')](_0x5578('0x14'),_0x3edb9f,_0x5578('0x15'));logger[_0x5578('0x16')](_0x5578('0x17'),_0x3edb9f,_0x5578('0x15'),JSON[_0x5578('0x18')](_0x51c232));if(_0x51c232[_0x5578('0x19')]){if(_0x51c232[_0x5578('0x19')][_0x5578('0x1a')]===0x1f4){logger['error'](_0x5578('0x14'),_0x3edb9f,_0x51c232[_0x5578('0x19')][_0x5578('0x1b')]);return _0x3fcf85(_0x51c232[_0x5578('0x19')][_0x5578('0x1b')]);}logger[_0x5578('0x19')](_0x5578('0x14'),_0x3edb9f,_0x51c232[_0x5578('0x19')][_0x5578('0x1b')]);return _0xe3ae44(_0x51c232[_0x5578('0x19')]['message']);}else{logger[_0x5578('0x13')](_0x5578('0x14'),_0x3edb9f,'request\x20sent');_0xe3ae44(_0x51c232['result'][_0x5578('0x1b')]);}})[_0x5578('0x1c')](function(_0x5744c4){logger[_0x5578('0x19')](_0x5578('0x14'),_0x3edb9f,_0x5744c4);_0x3fcf85(_0x5744c4);});});}exports[_0x5578('0x1d')]=function(_0xdd1957){var _0x419bc4=this;return new Promise(function(_0x2d7d70,_0x3dfadd){return db[_0x5578('0x1e')][_0x5578('0x1f')]({'raw':_0xdd1957[_0x5578('0x20')]?_0xdd1957[_0x5578('0x20')][_0x5578('0x21')]===undefined?!![]:![]:!![],'where':_0xdd1957[_0x5578('0x20')]?_0xdd1957[_0x5578('0x20')]['where']||null:null,'attributes':_0xdd1957[_0x5578('0x20')]?_0xdd1957['options'][_0x5578('0x22')]||null:null,'limit':_0xdd1957[_0x5578('0x20')]?_0xdd1957[_0x5578('0x20')][_0x5578('0x23')]||null:null,'include':_0xdd1957[_0x5578('0x20')]?_0xdd1957[_0x5578('0x20')]['include']?_[_0x5578('0x24')](_0xdd1957['options']['include'],function(_0x16cea){return{'model':db[_0x16cea['model']],'as':_0x16cea['as'],'attributes':_0x16cea[_0x5578('0x22')],'include':_0x16cea[_0x5578('0x25')]?_[_0x5578('0x24')](_0x16cea['include'],function(_0x27380f){return{'model':db[_0x27380f[_0x5578('0x26')]],'as':_0x27380f['as'],'attributes':_0x27380f['attributes'],'include':_0x27380f['include']?_[_0x5578('0x24')](_0x27380f[_0x5578('0x25')],function(_0x807da6){return{'model':db[_0x807da6[_0x5578('0x26')]],'as':_0x807da6['as'],'attributes':_0x807da6[_0x5578('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d28d5){logger[_0x5578('0x13')](_0x5578('0x1d'),_0xdd1957);logger[_0x5578('0x16')](_0x5578('0x1d'),_0xdd1957,JSON[_0x5578('0x18')](_0x2d28d5));_0x2d7d70(_0x2d28d5);})[_0x5578('0x1c')](function(_0x2d6ea1){logger['error']('GetVoiceExtension',_0x2d6ea1['message'],_0xdd1957);_0x3dfadd(_0x419bc4[_0x5578('0x19')](0x1f4,_0x2d6ea1['message']));});});};
\ No newline at end of file
index 92de716..094ef00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x17406e,_0x1049fd){var _0x2bfc5a=function(_0x2aae05){while(--_0x2aae05){_0x17406e['push'](_0x17406e['shift']());}};_0x2bfc5a(++_0x1049fd);}(_0x814b,0x1a2));var _0xb814=function(_0x263b0e,_0xc6479f){_0x263b0e=_0x263b0e-0x0;var _0x113fee=_0x814b[_0x263b0e];return _0x113fee;};'use strict';var VoiceExtensionEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){VoiceExtensionEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);VoiceExtensionEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
+var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x448cbc,_0x4cb982){var _0x214b4f=function(_0xb6d3d0){while(--_0xb6d3d0){_0x448cbc['push'](_0x448cbc['shift']());}};_0x214b4f(++_0x4cb982);}(_0x1261,0x144));var _0x1126=function(_0x4a0066,_0x16fb7e){_0x4a0066=_0x4a0066-0x0;var _0x611761=_0x1261[_0x4a0066];return _0x611761;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}};
\ No newline at end of file
index 353bf8f..c241c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['exports','multer','util','path','connect-timeout','Router','./voiceMail.controller','get','isAuthenticated','index','/:id','/:id/messages','getMessages','put','update','destroy'];(function(_0x1b8c1b,_0x16023d){var _0x69322f=function(_0x250bf5){while(--_0x250bf5){_0x1b8c1b['push'](_0x1b8c1b['shift']());}};_0x69322f(++_0x16023d);}(_0x4c60,0xc1));var _0x04c6=function(_0x46b927,_0x1e6703){_0x46b927=_0x46b927-0x0;var _0x1b50d9=_0x4c60[_0x46b927];return _0x1b50d9;};'use strict';var multer=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var path=require(_0x04c6('0x2'));var timeout=require(_0x04c6('0x3'));var express=require('express');var router=express[_0x04c6('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x04c6('0x5'));router[_0x04c6('0x6')]('/',auth[_0x04c6('0x7')](),controller[_0x04c6('0x8')]);router[_0x04c6('0x6')](_0x04c6('0x9'),auth[_0x04c6('0x7')](),controller['show']);router[_0x04c6('0x6')](_0x04c6('0xa'),auth[_0x04c6('0x7')](),controller[_0x04c6('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x04c6('0xc')]('/:id',auth[_0x04c6('0x7')](),controller[_0x04c6('0xd')]);router['delete'](_0x04c6('0x9'),auth[_0x04c6('0x7')](),controller[_0x04c6('0xe')]);module[_0x04c6('0xf')]=router;
\ No newline at end of file
+var _0xed1c=['get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','create','update','delete','destroy','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller'];(function(_0x1b9132,_0x5ab496){var _0xc1042b=function(_0xe160cf){while(--_0xe160cf){_0x1b9132['push'](_0x1b9132['shift']());}};_0xc1042b(++_0x5ab496);}(_0xed1c,0xe4));var _0xced1=function(_0x673dac,_0x26a5ed){_0x673dac=_0x673dac-0x0;var _0x357029=_0xed1c[_0x673dac];return _0x357029;};'use strict';var multer=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xced1('0x2'));var auth=require(_0xced1('0x3'));var interaction=require(_0xced1('0x4'));var config=require('../../config/environment');var controller=require(_0xced1('0x5'));router[_0xced1('0x6')]('/',auth[_0xced1('0x7')](),controller[_0xced1('0x8')]);router['get'](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0xa')]);router[_0xced1('0x6')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xc')]);router[_0xced1('0xd')]('/',auth['isAuthenticated'](),controller[_0xced1('0xe')]);router['put'](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0xf')]);router[_0xced1('0x10')](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0x11')]);module['exports']=router;
\ No newline at end of file
index ef55134..6b4a111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf4d=['trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','mailbox','sequelize','exports','contest_mailbox','STRING','setDataValue','string'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xaf4d,0x14a));var _0xdaf4=function(_0x1065ba,_0x285205){_0x1065ba=_0x1065ba-0x0;var _0x47e14b=_0xaf4d[_0x1065ba];return _0x47e14b;};'use strict';var Sequelize=require(_0xdaf4('0x0'));module[_0xdaf4('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0xdaf4('0x2')},'mailbox':{'type':Sequelize[_0xdaf4('0x3')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xdaf4('0x3')]},'fullname':{'type':Sequelize[_0xdaf4('0x3')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x123dc6){this[_0xdaf4('0x4')]('email',typeof _0x123dc6===_0xdaf4('0x5')&&_0x123dc6[_0xdaf4('0x6')]()?_0x123dc6['trim']():null);}},'pager':{'type':Sequelize[_0xdaf4('0x3')]},'tz':{'type':Sequelize[_0xdaf4('0x3')],'defaultValue':_0xdaf4('0x7')},'attach':{'type':Sequelize[_0xdaf4('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':_0xdaf4('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xdaf4('0x3')]},'review':{'type':Sequelize[_0xdaf4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xdaf4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xdaf4('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':_0xdaf4('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xdaf4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xdaf4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xdaf4('0x8')](_0xdaf4('0x9'),'no'),'defaultValue':_0xdaf4('0x9'),'allowNull':![]},'stamp':{'type':_0xdaf4('0xb')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0xdaf4('0x3')]},'maxsecs':{'type':Sequelize[_0xdaf4('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xdaf4('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xdaf4('0xd')],'get':function(){return this['getDataValue']('fullname')+_0xdaf4('0xe')+this['getDataValue'](_0xdaf4('0xf'));}}};
\ No newline at end of file
+var _0x3258=['ENUM','yes','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','sequelize','exports','STRING','contest_mailbox','setDataValue','string','trim'];(function(_0x5d91bb,_0x4f0d8b){var _0x5ec3a3=function(_0x3bd164){while(--_0x3bd164){_0x5d91bb['push'](_0x5d91bb['shift']());}};_0x5ec3a3(++_0x4f0d8b);}(_0x3258,0x1f1));var _0x8325=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3258[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8325('0x0'));module[_0x8325('0x1')]={'customer_id':{'type':Sequelize[_0x8325('0x2')]},'context':{'type':Sequelize[_0x8325('0x2')],'defaultValue':'from-voicemail','unique':_0x8325('0x3')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x8325('0x2')]},'fullname':{'type':Sequelize[_0x8325('0x2')]},'email':{'type':Sequelize[_0x8325('0x2')],'validate':{'isEmail':!![]},'set':function(_0x182497){this[_0x8325('0x4')]('email',typeof _0x182497===_0x8325('0x5')&&_0x182497[_0x8325('0x6')]()?_0x182497[_0x8325('0x6')]():null);}},'pager':{'type':Sequelize[_0x8325('0x2')]},'tz':{'type':Sequelize[_0x8325('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize[_0x8325('0x7')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize[_0x8325('0x2')]},'callback':{'type':Sequelize[_0x8325('0x2')]},'review':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x8325('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':_0x8325('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x8325('0x7')](_0x8325('0x8'),'no'),'defaultValue':_0x8325('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x8325('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x8325('0x9')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x8325('0xa')],'get':function(){return this[_0x8325('0xb')](_0x8325('0xc'))+_0x8325('0xd')+this[_0x8325('0xb')]('mailbox');}}};
\ No newline at end of file
index 3f6ced6..63ff2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['map','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceMail','includeAll','include','findAll','rows','catch','rawAttributes','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','findOne','nolimit','order','mailbox','findAndCountAll','rimraf','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','end','error','stack','name','send','index'];(function(_0x59b085,_0x28d113){var _0x57cb3f=function(_0xd81b6c){while(--_0xd81b6c){_0x59b085['push'](_0x59b085['shift']());}};_0x57cb3f(++_0x28d113);}(_0xbee3,0xd5));var _0x3bee=function(_0x2cf116,_0x1287d5){_0x2cf116=_0x2cf116-0x0;var _0x24fcb7=_0xbee3[_0x2cf116];return _0x24fcb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bee('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3bee('0x1'));var moment=require(_0x3bee('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3bee('0x3'));var util=require(_0x3bee('0x4'));var path=require(_0x3bee('0x5'));var sox=require('sox');var csv=require(_0x3bee('0x6'));var ejs=require(_0x3bee('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bee('0x8'));var squel=require(_0x3bee('0x9'));var crypto=require(_0x3bee('0xa'));var jsforce=require(_0x3bee('0xb'));var deskjs=require(_0x3bee('0xc'));var toCsv=require(_0x3bee('0x6'));var querystring=require(_0x3bee('0xd'));var Papa=require('papaparse');var Redis=require(_0x3bee('0xe'));var authService=require(_0x3bee('0xf'));var qs=require(_0x3bee('0x10'));var as=require(_0x3bee('0x11'));var hardwareService=require(_0x3bee('0x12'));var logger=require(_0x3bee('0x13'))('api');var utils=require(_0x3bee('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3bee('0x15'));var db=require(_0x3bee('0x16'))['db'];function respondWithStatusCode(_0x407526,_0x6950d0){_0x6950d0=_0x6950d0||0xcc;return function(_0x410124){if(_0x410124){return _0x407526[_0x3bee('0x17')](_0x6950d0);}return _0x407526[_0x3bee('0x18')](_0x6950d0)['end']();};}function respondWithResult(_0xad01f9,_0x33504d){_0x33504d=_0x33504d||0xc8;return function(_0x31ac52){if(_0x31ac52){return _0xad01f9[_0x3bee('0x18')](_0x33504d)[_0x3bee('0x19')](_0x31ac52);}};}function respondWithFilteredResult(_0x5b9473,_0x558436){return function(_0x346767){if(_0x346767){var _0x515397=typeof _0x558436[_0x3bee('0x1a')]===_0x3bee('0x1b')&&typeof _0x558436['limit']==='undefined';var _0x1582a4=_0x346767[_0x3bee('0x1c')];var _0xfdba3b=_0x515397?0x0:_0x558436[_0x3bee('0x1a')];var _0x49095a=_0x515397?_0x346767[_0x3bee('0x1c')]:_0x558436[_0x3bee('0x1a')]+_0x558436[_0x3bee('0x1d')];var _0x49b32d;if(_0x49095a>=_0x1582a4){_0x49095a=_0x1582a4;_0x49b32d=0xc8;}else{_0x49b32d=0xce;}_0x5b9473[_0x3bee('0x18')](_0x49b32d);return _0x5b9473[_0x3bee('0x1e')](_0x3bee('0x1f'),_0xfdba3b+'-'+_0x49095a+'/'+_0x1582a4)['json'](_0x346767);}return null;};}function patchUpdates(_0x4f36af){return function(_0x1afd0f){try{jsonpatch[_0x3bee('0x20')](_0x1afd0f,_0x4f36af,!![]);}catch(_0x57aba4){return BPromise[_0x3bee('0x21')](_0x57aba4);}return _0x1afd0f[_0x3bee('0x22')]();};}function saveUpdates(_0x2eea75,_0x179e62){return function(_0x28c248){if(_0x28c248){return _0x28c248[_0x3bee('0x23')](_0x2eea75)[_0x3bee('0x24')](function(_0x582fa9){return _0x582fa9;});}return null;};}function removeEntity(_0x8ae4ca,_0x1ed0c1){return function(_0x1fed5a){if(_0x1fed5a){return _0x1fed5a[_0x3bee('0x25')]()['then'](function(){var _0x45249c=_0x1fed5a[_0x3bee('0x26')]({'plain':!![]});var _0x1e0111='Voicemails';return db['UserProfileResource'][_0x3bee('0x25')]({'where':{'type':_0x1e0111,'resourceId':_0x45249c['id']}})[_0x3bee('0x24')](function(){return _0x1fed5a;});})['then'](function(){_0x8ae4ca[_0x3bee('0x18')](0xcc)[_0x3bee('0x27')]();});}};}function handleEntityNotFound(_0x2e666a,_0x5b1eec){return function(_0x1984c4){if(!_0x1984c4){_0x2e666a[_0x3bee('0x17')](0x194);}return _0x1984c4;};}function handleError(_0x150766,_0x4f2066){_0x4f2066=_0x4f2066||0x1f4;return function(_0x239fa4){logger[_0x3bee('0x28')](_0x239fa4[_0x3bee('0x29')]);if(_0x239fa4['name']){delete _0x239fa4[_0x3bee('0x2a')];}_0x150766[_0x3bee('0x18')](_0x4f2066)[_0x3bee('0x2b')](_0x239fa4);};}exports[_0x3bee('0x2c')]=function(_0x3433aa,_0x559c2b){var _0x564e45={},_0x3fbc8c={},_0x1e1529={'count':0x0,'rows':[]};var _0x10bae0=_[_0x3bee('0x2d')](db['VoiceMail']['rawAttributes'],function(_0x38f93c){return{'name':_0x38f93c[_0x3bee('0x2e')],'type':_0x38f93c['type']['key']};});_0x3fbc8c[_0x3bee('0x2f')]=_[_0x3bee('0x2d')](_0x10bae0,_0x3bee('0x2a'));_0x3fbc8c[_0x3bee('0x30')]=_[_0x3bee('0x31')](_0x3433aa[_0x3bee('0x30')]);_0x3fbc8c[_0x3bee('0x32')]=_[_0x3bee('0x33')](_0x3fbc8c[_0x3bee('0x2f')],_0x3fbc8c[_0x3bee('0x30')]);_0x564e45['attributes']=_['intersection'](_0x3fbc8c[_0x3bee('0x2f')],qs['fields'](_0x3433aa['query'][_0x3bee('0x34')]));_0x564e45[_0x3bee('0x35')]=_0x564e45[_0x3bee('0x35')][_0x3bee('0x36')]?_0x564e45[_0x3bee('0x35')]:_0x3fbc8c[_0x3bee('0x2f')];if(!_0x3433aa[_0x3bee('0x30')][_0x3bee('0x37')]('nolimit')){_0x564e45[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x3433aa['query'][_0x3bee('0x1d')]);_0x564e45[_0x3bee('0x1a')]=qs[_0x3bee('0x1a')](_0x3433aa[_0x3bee('0x30')][_0x3bee('0x1a')]);}_0x564e45['order']=qs['sort'](_0x3433aa[_0x3bee('0x30')][_0x3bee('0x38')]);_0x564e45[_0x3bee('0x39')]=qs[_0x3bee('0x32')](_[_0x3bee('0x3a')](_0x3433aa[_0x3bee('0x30')],_0x3fbc8c[_0x3bee('0x32')]),_0x10bae0);if(_0x3433aa[_0x3bee('0x30')][_0x3bee('0x3b')]){_0x564e45[_0x3bee('0x39')]=_[_0x3bee('0x3c')](_0x564e45[_0x3bee('0x39')],{'$or':_['map'](_0x10bae0,function(_0xaceed4){if(_0xaceed4[_0x3bee('0x3d')]!==_0x3bee('0x3e')){var _0x45cf81={};_0x45cf81[_0xaceed4[_0x3bee('0x2a')]]={'$like':'%'+_0x3433aa[_0x3bee('0x30')][_0x3bee('0x3b')]+'%'};return _0x45cf81;}})});}_0x564e45=_[_0x3bee('0x3c')]({},_0x564e45,_0x3433aa[_0x3bee('0x3f')]);var _0x12ba6f={'where':_0x564e45[_0x3bee('0x39')]};return db[_0x3bee('0x40')][_0x3bee('0x1c')](_0x12ba6f)['then'](function(_0x2b773d){_0x1e1529[_0x3bee('0x1c')]=_0x2b773d;if(_0x3433aa[_0x3bee('0x30')][_0x3bee('0x41')]){_0x564e45[_0x3bee('0x42')]=[{'all':!![]}];}return db[_0x3bee('0x40')][_0x3bee('0x43')](_0x564e45);})[_0x3bee('0x24')](function(_0x5d9e1b){_0x1e1529[_0x3bee('0x44')]=_0x5d9e1b;return _0x1e1529;})[_0x3bee('0x24')](respondWithFilteredResult(_0x559c2b,_0x564e45))[_0x3bee('0x45')](handleError(_0x559c2b,null));};exports['show']=function(_0x4567f2,_0x57113b){var _0x2b1677={'raw':!![],'where':{'id':_0x4567f2['params']['id']}},_0x48325e={};_0x48325e[_0x3bee('0x2f')]=_[_0x3bee('0x31')](db[_0x3bee('0x40')][_0x3bee('0x46')]);_0x48325e[_0x3bee('0x30')]=_['keys'](_0x4567f2['query']);_0x48325e[_0x3bee('0x32')]=_['intersection'](_0x48325e[_0x3bee('0x2f')],_0x48325e['query']);_0x2b1677[_0x3bee('0x35')]=_['intersection'](_0x48325e[_0x3bee('0x2f')],qs[_0x3bee('0x34')](_0x4567f2[_0x3bee('0x30')][_0x3bee('0x34')]));_0x2b1677['attributes']=_0x2b1677['attributes'][_0x3bee('0x36')]?_0x2b1677['attributes']:_0x48325e['model'];if(_0x4567f2['query'][_0x3bee('0x41')]){_0x2b1677['include']=[{'all':!![]}];}_0x2b1677=_[_0x3bee('0x3c')]({},_0x2b1677,_0x4567f2[_0x3bee('0x3f')]);return db[_0x3bee('0x40')]['find'](_0x2b1677)[_0x3bee('0x24')](handleEntityNotFound(_0x57113b,null))['then'](respondWithResult(_0x57113b,null))[_0x3bee('0x45')](handleError(_0x57113b,null));};exports['create']=function(_0x26ccd7,_0x16b096){return db[_0x3bee('0x40')]['create'](_0x26ccd7[_0x3bee('0x47')],{})[_0x3bee('0x24')](function(_0x477de2){var _0x504382=_0x26ccd7['user'][_0x3bee('0x26')]({'plain':!![]});if(!_0x504382)throw new Error(_0x3bee('0x48'));if(_0x504382[_0x3bee('0x49')]===_0x3bee('0x4a')){var _0x3b5d7a=_0x477de2[_0x3bee('0x26')]({'plain':!![]});var _0x4005a3='Voicemails';return db[_0x3bee('0x4b')][_0x3bee('0x4c')]({'where':{'name':_0x4005a3,'userProfileId':_0x504382['userProfileId']},'raw':!![]})['then'](function(_0x3730c5){if(_0x3730c5&&_0x3730c5['autoAssociation']===0x0){return db[_0x3bee('0x4d')][_0x3bee('0x4e')]({'name':_0x3b5d7a[_0x3bee('0x2a')],'resourceId':_0x3b5d7a['id'],'type':_0x3730c5['name'],'sectionId':_0x3730c5['id']},{})[_0x3bee('0x24')](function(){return _0x477de2;});}else{return _0x477de2;}})[_0x3bee('0x45')](function(_0x127cb8){logger['error'](_0x3bee('0x4f'),_0x127cb8);throw _0x127cb8;});}return _0x477de2;})[_0x3bee('0x24')](respondWithResult(_0x16b096,0xc9))['catch'](handleError(_0x16b096,null));};exports[_0x3bee('0x23')]=function(_0x14940e,_0x53c881){if(_0x14940e[_0x3bee('0x47')]['id']){delete _0x14940e[_0x3bee('0x47')]['id'];}return db[_0x3bee('0x40')][_0x3bee('0x4c')]({'where':{'id':_0x14940e[_0x3bee('0x50')]['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x53c881,null))[_0x3bee('0x24')](saveUpdates(_0x14940e[_0x3bee('0x47')],null))['then'](respondWithResult(_0x53c881,null))['catch'](handleError(_0x53c881,null));};exports[_0x3bee('0x25')]=function(_0x5e13e8,_0x38b82a){return db[_0x3bee('0x40')][_0x3bee('0x4c')]({'where':{'id':_0x5e13e8['params']['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x38b82a,null))[_0x3bee('0x24')](removeEntity(_0x38b82a,null))[_0x3bee('0x45')](handleError(_0x38b82a,null));};exports['getMessages']=function(_0x19cbb8,_0x52a327,_0x3cb900){return db[_0x3bee('0x40')][_0x3bee('0x51')]({'where':{'id':_0x19cbb8['params']['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x52a327,null))[_0x3bee('0x24')](function(_0x282300){var _0x526551;var _0x5d95a7={},_0xb9f53e={};_0xb9f53e[_0x3bee('0x2f')]=_[_0x3bee('0x31')](db['VoiceMailMessage']['rawAttributes']);_0xb9f53e[_0x3bee('0x30')]=_['keys'](_0x19cbb8['query']);_0xb9f53e[_0x3bee('0x32')]=_[_0x3bee('0x33')](_0xb9f53e[_0x3bee('0x2f')],_0xb9f53e['query']);_0x5d95a7['attributes']=_[_0x3bee('0x33')](_0xb9f53e[_0x3bee('0x2f')],qs['fields'](_0x19cbb8[_0x3bee('0x30')]['fields']));_0x5d95a7[_0x3bee('0x35')]=_0x5d95a7[_0x3bee('0x35')][_0x3bee('0x36')]?_0x5d95a7[_0x3bee('0x35')]:_0xb9f53e[_0x3bee('0x2f')];if(!_0x19cbb8[_0x3bee('0x30')][_0x3bee('0x37')](_0x3bee('0x52'))){_0x5d95a7[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x19cbb8[_0x3bee('0x30')]['limit']);_0x5d95a7['offset']=qs['offset'](_0x19cbb8[_0x3bee('0x30')][_0x3bee('0x1a')]);}_0x5d95a7[_0x3bee('0x53')]=qs[_0x3bee('0x38')](_0x19cbb8['query'][_0x3bee('0x38')]);_0x5d95a7[_0x3bee('0x39')]=qs['filters'](_['pick'](_0x19cbb8[_0x3bee('0x30')],_0xb9f53e[_0x3bee('0x32')]));if(_0x19cbb8[_0x3bee('0x30')]['filter']){_0x5d95a7[_0x3bee('0x39')]=_[_0x3bee('0x3c')](_0x5d95a7[_0x3bee('0x39')],{'$or':_['map'](_0x5d95a7[_0x3bee('0x35')],function(_0x412e0d){var _0x1bfb3a={};_0x1bfb3a[_0x412e0d]={'$like':'%'+_0x19cbb8[_0x3bee('0x30')]['filter']+'%'};return _0x1bfb3a;})});}_0x5d95a7['where']=_[_0x3bee('0x3c')](_0x5d95a7[_0x3bee('0x39')],{'mailboxuser':_0x282300[_0x3bee('0x54')]});_0x5d95a7=_[_0x3bee('0x3c')]({},_0x5d95a7,_0x19cbb8[_0x3bee('0x3f')]);return db['VoiceMailMessage'][_0x3bee('0x55')](_0x5d95a7)['then'](respondWithFilteredResult(_0x52a327,_0x5d95a7));})[_0x3bee('0x45')](handleError(_0x52a327,null));};
\ No newline at end of file
+var _0xf4eb=['fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','Voicemails','UserProfileResource','error','stack','name','send','index','map','VoiceMail','fieldName','key','model','keys','filters','intersection','attributes','fields','query','length','order','sort','pick','where','merge','type','VIRTUAL','filter','options','include','rows','catch','show','rawAttributes','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','getMessages','VoiceMailMessage','hasOwnProperty','nolimit','mailbox','eml-format','moment','util','path','sox','to-csv','ejs'];(function(_0x421ff6,_0x40f195){var _0x177051=function(_0x254bdf){while(--_0x254bdf){_0x421ff6['push'](_0x421ff6['shift']());}};_0x177051(++_0x40f195);}(_0xf4eb,0xec));var _0xbf4e=function(_0x11a856,_0x139ca7){_0x11a856=_0x11a856-0x0;var _0x1b67a4=_0xf4eb[_0x11a856];return _0x1b67a4;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){var _0x3a5d72=_0x30994d['get']({'plain':!![]});var _0x90635e=_0xbf4e('0x21');return db[_0xbf4e('0x22')]['destroy']({'where':{'type':_0x90635e,'resourceId':_0x3a5d72['id']}})[_0xbf4e('0x1f')](function(){return _0x30994d;});})['then'](function(){_0x51648c['status'](0xcc)[_0xbf4e('0x15')]();});}};}function handleEntityNotFound(_0x5a0a9b,_0x38c923){return function(_0x315df3){if(!_0x315df3){_0x5a0a9b[_0xbf4e('0x13')](0x194);}return _0x315df3;};}function handleError(_0x41f918,_0x5c912f){_0x5c912f=_0x5c912f||0x1f4;return function(_0x2d4686){logger[_0xbf4e('0x23')](_0x2d4686[_0xbf4e('0x24')]);if(_0x2d4686['name']){delete _0x2d4686[_0xbf4e('0x25')];}_0x41f918['status'](_0x5c912f)[_0xbf4e('0x26')](_0x2d4686);};}exports[_0xbf4e('0x27')]=function(_0xb8b58e,_0x498dbd){var _0x1d12e2={},_0x362716={},_0x2f3cf8={'count':0x0,'rows':[]};var _0xc7ca87=_[_0xbf4e('0x28')](db[_0xbf4e('0x29')]['rawAttributes'],function(_0x35c82d){return{'name':_0x35c82d[_0xbf4e('0x2a')],'type':_0x35c82d['type'][_0xbf4e('0x2b')]};});_0x362716[_0xbf4e('0x2c')]=_['map'](_0xc7ca87,_0xbf4e('0x25'));_0x362716['query']=_[_0xbf4e('0x2d')](_0xb8b58e['query']);_0x362716[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],_0x362716['query']);_0x1d12e2[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],qs[_0xbf4e('0x31')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x1d12e2['attributes']=_0x1d12e2[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x1d12e2[_0xbf4e('0x30')]:_0x362716[_0xbf4e('0x2c')];if(!_0xb8b58e[_0xbf4e('0x32')]['hasOwnProperty']('nolimit')){_0x1d12e2['limit']=qs['limit'](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x18')]);_0x1d12e2[_0xbf4e('0x16')]=qs[_0xbf4e('0x16')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x1d12e2[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0xb8b58e[_0xbf4e('0x32')]['sort']);_0x1d12e2['where']=qs[_0xbf4e('0x2e')](_[_0xbf4e('0x36')](_0xb8b58e[_0xbf4e('0x32')],_0x362716['filters']),_0xc7ca87);if(_0xb8b58e[_0xbf4e('0x32')]['filter']){_0x1d12e2[_0xbf4e('0x37')]=_[_0xbf4e('0x38')](_0x1d12e2[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0xc7ca87,function(_0x5ce339){if(_0x5ce339[_0xbf4e('0x39')]!==_0xbf4e('0x3a')){var _0x3aa308={};_0x3aa308[_0x5ce339[_0xbf4e('0x25')]]={'$like':'%'+_0xb8b58e['query'][_0xbf4e('0x3b')]+'%'};return _0x3aa308;}})});}_0x1d12e2=_[_0xbf4e('0x38')]({},_0x1d12e2,_0xb8b58e[_0xbf4e('0x3c')]);var _0x29fe9d={'where':_0x1d12e2[_0xbf4e('0x37')]};return db[_0xbf4e('0x29')][_0xbf4e('0x19')](_0x29fe9d)['then'](function(_0x176166){_0x2f3cf8[_0xbf4e('0x19')]=_0x176166;if(_0xb8b58e['query']['includeAll']){_0x1d12e2[_0xbf4e('0x3d')]=[{'all':!![]}];}return db[_0xbf4e('0x29')]['findAll'](_0x1d12e2);})['then'](function(_0x2b1bf4){_0x2f3cf8[_0xbf4e('0x3e')]=_0x2b1bf4;return _0x2f3cf8;})[_0xbf4e('0x1f')](respondWithFilteredResult(_0x498dbd,_0x1d12e2))[_0xbf4e('0x3f')](handleError(_0x498dbd,null));};exports[_0xbf4e('0x40')]=function(_0x3ad0a4,_0x5a03c6){var _0x3ecc15={'raw':!![],'where':{'id':_0x3ad0a4['params']['id']}},_0x7bd91={};_0x7bd91['model']=_['keys'](db['VoiceMail'][_0xbf4e('0x41')]);_0x7bd91['query']=_[_0xbf4e('0x2d')](_0x3ad0a4[_0xbf4e('0x32')]);_0x7bd91['filters']=_['intersection'](_0x7bd91[_0xbf4e('0x2c')],_0x7bd91[_0xbf4e('0x32')]);_0x3ecc15[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x7bd91[_0xbf4e('0x2c')],qs['fields'](_0x3ad0a4[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x3ecc15[_0xbf4e('0x30')]=_0x3ecc15[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x3ecc15[_0xbf4e('0x30')]:_0x7bd91[_0xbf4e('0x2c')];if(_0x3ad0a4[_0xbf4e('0x32')]['includeAll']){_0x3ecc15[_0xbf4e('0x3d')]=[{'all':!![]}];}_0x3ecc15=_[_0xbf4e('0x38')]({},_0x3ecc15,_0x3ad0a4[_0xbf4e('0x3c')]);return db[_0xbf4e('0x29')][_0xbf4e('0x42')](_0x3ecc15)[_0xbf4e('0x1f')](handleEntityNotFound(_0x5a03c6,null))[_0xbf4e('0x1f')](respondWithResult(_0x5a03c6,null))[_0xbf4e('0x3f')](handleError(_0x5a03c6,null));};exports[_0xbf4e('0x43')]=function(_0x3447ab,_0x2fdba9){return db[_0xbf4e('0x29')][_0xbf4e('0x43')](_0x3447ab[_0xbf4e('0x44')],{})[_0xbf4e('0x1f')](function(_0x2892ce){var _0x10bc23=_0x3447ab['user'][_0xbf4e('0x45')]({'plain':!![]});if(!_0x10bc23)throw new Error(_0xbf4e('0x46'));if(_0x10bc23[_0xbf4e('0x47')]==='user'){var _0x33ab9a=_0x2892ce['get']({'plain':!![]});var _0x4a050e=_0xbf4e('0x21');return db[_0xbf4e('0x48')]['find']({'where':{'name':_0x4a050e,'userProfileId':_0x10bc23[_0xbf4e('0x49')]},'raw':!![]})[_0xbf4e('0x1f')](function(_0x31d779){if(_0x31d779&&_0x31d779[_0xbf4e('0x4a')]===0x0){return db[_0xbf4e('0x22')][_0xbf4e('0x43')]({'name':_0x33ab9a[_0xbf4e('0x25')],'resourceId':_0x33ab9a['id'],'type':_0x31d779[_0xbf4e('0x25')],'sectionId':_0x31d779['id']},{})[_0xbf4e('0x1f')](function(){return _0x2892ce;});}else{return _0x2892ce;}})[_0xbf4e('0x3f')](function(_0x271ad2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x271ad2);throw _0x271ad2;});}return _0x2892ce;})[_0xbf4e('0x1f')](respondWithResult(_0x2fdba9,0xc9))[_0xbf4e('0x3f')](handleError(_0x2fdba9,null));};exports[_0xbf4e('0x4b')]=function(_0x586f5d,_0x339ce6){if(_0x586f5d[_0xbf4e('0x44')]['id']){delete _0x586f5d['body']['id'];}return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x586f5d['params']['id']}})['then'](handleEntityNotFound(_0x339ce6,null))[_0xbf4e('0x1f')](saveUpdates(_0x586f5d[_0xbf4e('0x44')],null))[_0xbf4e('0x1f')](respondWithResult(_0x339ce6,null))[_0xbf4e('0x3f')](handleError(_0x339ce6,null));};exports[_0xbf4e('0x20')]=function(_0x5ec2d9,_0x242a75){return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x5ec2d9['params']['id']}})[_0xbf4e('0x1f')](handleEntityNotFound(_0x242a75,null))['then'](removeEntity(_0x242a75,null))[_0xbf4e('0x3f')](handleError(_0x242a75,null));};exports[_0xbf4e('0x4c')]=function(_0x3e60e7,_0x16592f,_0xfd54c){return db['VoiceMail']['findOne']({'where':{'id':_0x3e60e7['params']['id']}})['then'](handleEntityNotFound(_0x16592f,null))[_0xbf4e('0x1f')](function(_0x453411){var _0x5cfc26;var _0x200096={},_0x23c335={};_0x23c335[_0xbf4e('0x2c')]=_[_0xbf4e('0x2d')](db[_0xbf4e('0x4d')][_0xbf4e('0x41')]);_0x23c335[_0xbf4e('0x32')]=_['keys'](_0x3e60e7[_0xbf4e('0x32')]);_0x23c335[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x23c335['model'],_0x23c335['query']);_0x200096[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x23c335[_0xbf4e('0x2c')],qs['fields'](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x200096[_0xbf4e('0x30')]=_0x200096[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x200096[_0xbf4e('0x30')]:_0x23c335[_0xbf4e('0x2c')];if(!_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x4e')](_0xbf4e('0x4f'))){_0x200096[_0xbf4e('0x18')]=qs[_0xbf4e('0x18')](_0x3e60e7['query'][_0xbf4e('0x18')]);_0x200096['offset']=qs[_0xbf4e('0x16')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x200096[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x35')]);_0x200096[_0xbf4e('0x37')]=qs['filters'](_[_0xbf4e('0x36')](_0x3e60e7[_0xbf4e('0x32')],_0x23c335[_0xbf4e('0x2e')]));if(_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x3b')]){_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0x200096[_0xbf4e('0x30')],function(_0x12f19f){var _0x2c606b={};_0x2c606b[_0x12f19f]={'$like':'%'+_0x3e60e7['query'][_0xbf4e('0x3b')]+'%'};return _0x2c606b;})});}_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'mailboxuser':_0x453411[_0xbf4e('0x50')]});_0x200096=_[_0xbf4e('0x38')]({},_0x200096,_0x3e60e7['options']);return db[_0xbf4e('0x4d')]['findAndCountAll'](_0x200096)['then'](respondWithFilteredResult(_0x16592f,_0x200096));})[_0xbf4e('0x3f')](handleError(_0x16592f,null));};
\ No newline at end of file
index 5cbba46..bdd1c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6a=['mailbox','context','util','api','moment','bluebird','rimraf','../../config/environment','./voiceMail.attributes','exports','VoiceMail','mailbox_context'];(function(_0x4ce35c,_0x1cf5cd){var _0x554eaa=function(_0xc1ff26){while(--_0xc1ff26){_0x4ce35c['push'](_0x4ce35c['shift']());}};_0x554eaa(++_0x1cf5cd);}(_0xcc6a,0xfe));var _0xacc6=function(_0x691d42,_0x5b25d3){_0x691d42=_0x691d42-0x0;var _0x2fdccf=_0xcc6a[_0x691d42];return _0x2fdccf;};'use strict';var _=require('lodash');var util=require(_0xacc6('0x0'));var logger=require('../../config/logger')(_0xacc6('0x1'));var moment=require(_0xacc6('0x2'));var BPromise=require(_0xacc6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xacc6('0x4'));var config=require(_0xacc6('0x5'));var attributes=require(_0xacc6('0x6'));module[_0xacc6('0x7')]=function(_0x19842e,_0x5d83fd){return _0x19842e['define'](_0xacc6('0x8'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xacc6('0x9'),'fields':[_0xacc6('0xa'),_0xacc6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd9ab=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','VoiceMail','voice_voicemail','mailbox_context','context'];(function(_0x5c15f0,_0x275e37){var _0x222822=function(_0x41fe12){while(--_0x41fe12){_0x5c15f0['push'](_0x5c15f0['shift']());}};_0x222822(++_0x275e37);}(_0xd9ab,0x1c2));var _0xbd9a=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xd9ab[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0xbd9a('0x0'));var util=require(_0xbd9a('0x1'));var logger=require(_0xbd9a('0x2'))(_0xbd9a('0x3'));var moment=require(_0xbd9a('0x4'));var BPromise=require(_0xbd9a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd9a('0x6'));var rimraf=require(_0xbd9a('0x7'));var config=require(_0xbd9a('0x8'));var attributes=require('./voiceMail.attributes');module[_0xbd9a('0x9')]=function(_0x4bd1ac,_0x28e081){return _0x4bd1ac[_0xbd9a('0xa')](_0xbd9a('0xb'),attributes,{'tableName':_0xbd9a('0xc'),'paranoid':![],'indexes':[{'name':_0xbd9a('0xd'),'fields':['mailbox',_0xbd9a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 8257131..59502fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1dc=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','info','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','moment'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0xa1dc,0x163));var _0xca1d=function(_0x42ac88,_0x369d9b){_0x42ac88=_0x42ac88-0x0;var _0x123993=_0xa1dc[_0x42ac88];return _0x123993;};'use strict';var _=require(_0xca1d('0x0'));var util=require('util');var moment=require(_0xca1d('0x1'));var BPromise=require(_0xca1d('0x2'));var rs=require(_0xca1d('0x3'));var fs=require('fs');var Redis=require(_0xca1d('0x4'));var db=require(_0xca1d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xca1d('0x6'));var config=require(_0xca1d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xca1d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x74b8d7,_0x43dac1,_0x3c3eda){return new BPromise(function(_0x5ceec0,_0x10c63f){return client[_0xca1d('0x9')](_0x74b8d7,_0x3c3eda)['then'](function(_0x59c6a7){logger[_0xca1d('0xa')]('VoiceMail,\x20%s,\x20%s',_0x43dac1,'request\x20sent');logger[_0xca1d('0xb')](_0xca1d('0xc'),_0x43dac1,_0xca1d('0xd'),JSON[_0xca1d('0xe')](_0x59c6a7));if(_0x59c6a7['error']){if(_0x59c6a7[_0xca1d('0xf')][_0xca1d('0x10')]===0x1f4){logger[_0xca1d('0xf')](_0xca1d('0x11'),_0x43dac1,_0x59c6a7[_0xca1d('0xf')][_0xca1d('0x12')]);return _0x10c63f(_0x59c6a7[_0xca1d('0xf')][_0xca1d('0x12')]);}logger[_0xca1d('0xf')](_0xca1d('0x11'),_0x43dac1,_0x59c6a7[_0xca1d('0xf')]['message']);return _0x5ceec0(_0x59c6a7[_0xca1d('0xf')][_0xca1d('0x12')]);}else{logger[_0xca1d('0xa')](_0xca1d('0x11'),_0x43dac1,_0xca1d('0xd'));_0x5ceec0(_0x59c6a7[_0xca1d('0x13')][_0xca1d('0x12')]);}})[_0xca1d('0x14')](function(_0x5c0046){logger['error'](_0xca1d('0x11'),_0x43dac1,_0x5c0046);_0x10c63f(_0x5c0046);});});}
\ No newline at end of file
+var _0x6d9d=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','then','info','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','VoiceMail,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x1dcb62,_0x590205){var _0x1db794=function(_0x2fac88){while(--_0x2fac88){_0x1dcb62['push'](_0x1dcb62['shift']());}};_0x1db794(++_0x590205);}(_0x6d9d,0x13f));var _0xd6d9=function(_0x1d3553,_0x27e96e){_0x1d3553=_0x1d3553-0x0;var _0x1657ae=_0x6d9d[_0x1d3553];return _0x1657ae;};'use strict';var _=require('lodash');var util=require(_0xd6d9('0x0'));var moment=require(_0xd6d9('0x1'));var BPromise=require(_0xd6d9('0x2'));var rs=require(_0xd6d9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd6d9('0x4'))['db'];var utils=require(_0xd6d9('0x5'));var logger=require(_0xd6d9('0x6'))('rpc');var config=require(_0xd6d9('0x7'));var jayson=require(_0xd6d9('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x281f5c,_0x44293b,_0x3a4c4f){return new BPromise(function(_0xd976ba,_0xadabaf){return client['request'](_0x281f5c,_0x3a4c4f)[_0xd6d9('0x9')](function(_0x2a27dc){logger[_0xd6d9('0xa')]('VoiceMail,\x20%s,\x20%s',_0x44293b,_0xd6d9('0xb'));logger['debug'](_0xd6d9('0xc'),_0x44293b,'request\x20sent',JSON['stringify'](_0x2a27dc));if(_0x2a27dc[_0xd6d9('0xd')]){if(_0x2a27dc[_0xd6d9('0xd')][_0xd6d9('0xe')]===0x1f4){logger['error'](_0xd6d9('0xf'),_0x44293b,_0x2a27dc[_0xd6d9('0xd')][_0xd6d9('0x10')]);return _0xadabaf(_0x2a27dc[_0xd6d9('0xd')][_0xd6d9('0x10')]);}logger[_0xd6d9('0xd')](_0xd6d9('0xf'),_0x44293b,_0x2a27dc['error'][_0xd6d9('0x10')]);return _0xd976ba(_0x2a27dc[_0xd6d9('0xd')][_0xd6d9('0x10')]);}else{logger[_0xd6d9('0xa')](_0xd6d9('0xf'),_0x44293b,_0xd6d9('0xb'));_0xd976ba(_0x2a27dc[_0xd6d9('0x11')]['message']);}})[_0xd6d9('0x12')](function(_0x122a2e){logger[_0xd6d9('0xd')](_0xd6d9('0xf'),_0x44293b,_0x122a2e);_0xadabaf(_0x122a2e);});});}
\ No newline at end of file
index ebe35cb..ab305fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafbd=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','path','express','Router'];(function(_0x492e32,_0x2e0a93){var _0x4a335e=function(_0x1f4998){while(--_0x1f4998){_0x492e32['push'](_0x492e32['shift']());}};_0x4a335e(++_0x2e0a93);}(_0xafbd,0x1a0));var _0xdafb=function(_0x47242d,_0x13f993){_0x47242d=_0x47242d-0x0;var _0x30273a=_0xafbd[_0x47242d];return _0x30273a;};'use strict';var multer=require(_0xdafb('0x0'));var util=require('util');var path=require(_0xdafb('0x1'));var timeout=require('connect-timeout');var express=require(_0xdafb('0x2'));var router=express[_0xdafb('0x3')]();var fs_extra=require(_0xdafb('0x4'));var auth=require(_0xdafb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xdafb('0x6'));var controller=require('./voiceMailMessage.controller');router[_0xdafb('0x7')]('/',auth[_0xdafb('0x8')](),controller[_0xdafb('0x9')]);router['get'](_0xdafb('0xa'),auth[_0xdafb('0x8')](),controller[_0xdafb('0xb')]);router[_0xdafb('0x7')](_0xdafb('0xc'),auth['isAuthenticated'](),controller[_0xdafb('0xd')]);router[_0xdafb('0xe')]('/',auth[_0xdafb('0x8')](),controller[_0xdafb('0xf')]);router[_0xdafb('0x10')](_0xdafb('0xa'),auth['isAuthenticated'](),controller[_0xdafb('0x11')]);router[_0xdafb('0x12')](_0xdafb('0xa'),auth[_0xdafb('0x8')](),controller[_0xdafb('0x13')]);module[_0xdafb('0x14')]=router;
\ No newline at end of file
+var _0x42fa=['put','update','delete','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create'];(function(_0x318160,_0xeb9d29){var _0x23b43b=function(_0x4e6ae5){while(--_0x4e6ae5){_0x318160['push'](_0x318160['shift']());}};_0x23b43b(++_0xeb9d29);}(_0x42fa,0x88));var _0xa42f=function(_0x62b202,_0x1a9a72){_0x62b202=_0x62b202-0x0;var _0x504cd5=_0x42fa[_0x62b202];return _0x504cd5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa42f('0x0'));var timeout=require(_0xa42f('0x1'));var express=require(_0xa42f('0x2'));var router=express[_0xa42f('0x3')]();var fs_extra=require(_0xa42f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa42f('0x5'));var config=require(_0xa42f('0x6'));var controller=require(_0xa42f('0x7'));router[_0xa42f('0x8')]('/',auth[_0xa42f('0x9')](),controller['index']);router[_0xa42f('0x8')](_0xa42f('0xa'),auth['isAuthenticated'](),controller[_0xa42f('0xb')]);router[_0xa42f('0x8')](_0xa42f('0xc'),auth[_0xa42f('0x9')](),controller[_0xa42f('0xd')]);router[_0xa42f('0xe')]('/',auth[_0xa42f('0x9')](),controller[_0xa42f('0xf')]);router[_0xa42f('0x10')](_0xa42f('0xa'),auth[_0xa42f('0x9')](),controller[_0xa42f('0x11')]);router[_0xa42f('0x12')](_0xa42f('0xa'),auth[_0xa42f('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 465eb86..3aee7f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe556=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','literal'];(function(_0x30c634,_0x405ef1){var _0x1ff1d6=function(_0x104700){while(--_0x104700){_0x30c634['push'](_0x30c634['shift']());}};_0x1ff1d6(++_0x405ef1);}(_0xe556,0xc9));var _0x6e55=function(_0x59c774,_0x42109c){_0x59c774=_0x59c774-0x0;var _0x19b8a1=_0xe556[_0x59c774];return _0x19b8a1;};'use strict';var Sequelize=require(_0x6e55('0x0'));module['exports']={'name':{'type':Sequelize[_0x6e55('0x1')],'get':function(_0x3715ce){return this[_0x6e55('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x6e55('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x6e55('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x6e55('0x4')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x6e55('0x6')](_0x6e55('0x7'))}};
\ No newline at end of file
+var _0xe1e0=['BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','INTEGER','STRING'];(function(_0x4df005,_0xdc2b86){var _0x415d05=function(_0x2af2fd){while(--_0x2af2fd){_0x4df005['push'](_0x4df005['shift']());}};_0x415d05(++_0xdc2b86);}(_0xe1e0,0x152));var _0x0e1e=function(_0x948328,_0x1e008a){_0x948328=_0x948328-0x0;var _0x3037cd=_0xe1e0[_0x948328];return _0x3037cd;};'use strict';var Sequelize=require(_0x0e1e('0x0'));module[_0x0e1e('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3f6f78){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x0e1e('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x0e1e('0x4')](_0x0e1e('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0e1e('0x3')],'defaultValue':''},'stamp':{'type':_0x0e1e('0x6'),'defaultValue':Sequelize[_0x0e1e('0x7')](_0x0e1e('0x8'))}};
\ No newline at end of file
index 6b9f227..049a8c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa418=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','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','VIRTUAL','options','VoiceMailMessage','includeAll','findAll','catch','show','include','find','create','body','params','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','desk.js','papaparse','ioredis'];(function(_0x11ce54,_0x11837b){var _0x1b0229=function(_0x143aed){while(--_0x143aed){_0x11ce54['push'](_0x11ce54['shift']());}};_0x1b0229(++_0x11837b);}(_0xa418,0xf2));var _0x8a41=function(_0x2c1289,_0x2de3dd){_0x2c1289=_0x2c1289-0x0;var _0x49a3a5=_0xa418[_0x2c1289];return _0x49a3a5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8a41('0x0'));var zipdir=require(_0x8a41('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8a41('0x2'));var moment=require('moment');var BPromise=require(_0x8a41('0x3'));var Mustache=require('mustache');var util=require(_0x8a41('0x4'));var path=require(_0x8a41('0x5'));var sox=require(_0x8a41('0x6'));var csv=require(_0x8a41('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8a41('0x8'));var _=require('lodash');var squel=require(_0x8a41('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x8a41('0xa'));var toCsv=require(_0x8a41('0x7'));var querystring=require('querystring');var Papa=require(_0x8a41('0xb'));var Redis=require(_0x8a41('0xc'));var authService=require(_0x8a41('0xd'));var qs=require(_0x8a41('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8a41('0xf'));var logger=require(_0x8a41('0x10'))(_0x8a41('0x11'));var utils=require(_0x8a41('0x12'));var config=require(_0x8a41('0x13'));var licenseUtil=require(_0x8a41('0x14'));var db=require(_0x8a41('0x15'))['db'];function respondWithStatusCode(_0x328e2e,_0x5f2965){_0x5f2965=_0x5f2965||0xcc;return function(_0x35e522){if(_0x35e522){return _0x328e2e[_0x8a41('0x16')](_0x5f2965);}return _0x328e2e[_0x8a41('0x17')](_0x5f2965)[_0x8a41('0x18')]();};}function respondWithResult(_0x516db6,_0x15dae9){_0x15dae9=_0x15dae9||0xc8;return function(_0x4cce45){if(_0x4cce45){return _0x516db6[_0x8a41('0x17')](_0x15dae9)[_0x8a41('0x19')](_0x4cce45);}};}function respondWithFilteredResult(_0xec500f,_0x4555e9){return function(_0x144cfb){if(_0x144cfb){var _0x2cb9b6=typeof _0x4555e9[_0x8a41('0x1a')]===_0x8a41('0x1b')&&typeof _0x4555e9[_0x8a41('0x1c')]===_0x8a41('0x1b');var _0x24e2de=_0x144cfb[_0x8a41('0x1d')];var _0xa43f9b=_0x2cb9b6?0x0:_0x4555e9[_0x8a41('0x1a')];var _0x346ae2=_0x2cb9b6?_0x144cfb[_0x8a41('0x1d')]:_0x4555e9[_0x8a41('0x1a')]+_0x4555e9[_0x8a41('0x1c')];var _0x25a9a9;if(_0x346ae2>=_0x24e2de){_0x346ae2=_0x24e2de;_0x25a9a9=0xc8;}else{_0x25a9a9=0xce;}_0xec500f[_0x8a41('0x17')](_0x25a9a9);return _0xec500f[_0x8a41('0x1e')](_0x8a41('0x1f'),_0xa43f9b+'-'+_0x346ae2+'/'+_0x24e2de)[_0x8a41('0x19')](_0x144cfb);}return null;};}function patchUpdates(_0x1e1e22){return function(_0x3f15d7){try{jsonpatch['apply'](_0x3f15d7,_0x1e1e22,!![]);}catch(_0x138102){return BPromise[_0x8a41('0x20')](_0x138102);}return _0x3f15d7[_0x8a41('0x21')]();};}function saveUpdates(_0xe61cc1,_0x336d24){return function(_0x5ecd1a){if(_0x5ecd1a){return _0x5ecd1a[_0x8a41('0x22')](_0xe61cc1)['then'](function(_0xeb7013){return _0xeb7013;});}return null;};}function removeEntity(_0x113663,_0x55e8fb){return function(_0x45d30d){if(_0x45d30d){return _0x45d30d[_0x8a41('0x23')]()[_0x8a41('0x24')](function(){_0x113663[_0x8a41('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c4074,_0x986c2d){return function(_0x3b9f2b){if(!_0x3b9f2b){_0x1c4074['sendStatus'](0x194);}return _0x3b9f2b;};}function handleError(_0x4dc547,_0x114b00){_0x114b00=_0x114b00||0x1f4;return function(_0x365d86){logger[_0x8a41('0x25')](_0x365d86[_0x8a41('0x26')]);if(_0x365d86[_0x8a41('0x27')]){delete _0x365d86['name'];}_0x4dc547['status'](_0x114b00)[_0x8a41('0x28')](_0x365d86);};}exports[_0x8a41('0x29')]=function(_0x3fa646,_0x200c0c){var _0x390c0d={},_0xa1bcc3={},_0x45f759={'count':0x0,'rows':[]};var _0xa6ffa1=_[_0x8a41('0x2a')](db['VoiceMailMessage'][_0x8a41('0x2b')],function(_0x45ed9f){return{'name':_0x45ed9f[_0x8a41('0x2c')],'type':_0x45ed9f[_0x8a41('0x2d')][_0x8a41('0x2e')]};});_0xa1bcc3[_0x8a41('0x2f')]=_['differenceBy'](_['map'](_0xa6ffa1,'name'),[_0x8a41('0x27')]);_0xa1bcc3[_0x8a41('0x30')]=_[_0x8a41('0x31')](_0x3fa646[_0x8a41('0x30')]);_0xa1bcc3[_0x8a41('0x32')]=_['intersection'](_0xa1bcc3[_0x8a41('0x2f')],_0xa1bcc3[_0x8a41('0x30')]);_0x390c0d[_0x8a41('0x33')]=_[_0x8a41('0x34')](_0xa1bcc3[_0x8a41('0x2f')],qs['fields'](_0x3fa646[_0x8a41('0x30')][_0x8a41('0x35')]));_0x390c0d[_0x8a41('0x33')]=_0x390c0d[_0x8a41('0x33')][_0x8a41('0x36')]?_0x390c0d[_0x8a41('0x33')]:_0xa1bcc3[_0x8a41('0x2f')];if(!_0x3fa646['query'][_0x8a41('0x37')](_0x8a41('0x38'))){_0x390c0d['limit']=qs['limit'](_0x3fa646[_0x8a41('0x30')][_0x8a41('0x1c')]);_0x390c0d['offset']=qs[_0x8a41('0x1a')](_0x3fa646[_0x8a41('0x30')][_0x8a41('0x1a')]);}_0x390c0d[_0x8a41('0x39')]=qs[_0x8a41('0x3a')](_0x3fa646['query'][_0x8a41('0x3a')]);_0x390c0d[_0x8a41('0x3b')]=qs['filters'](_[_0x8a41('0x3c')](_0x3fa646[_0x8a41('0x30')],_0xa1bcc3[_0x8a41('0x32')]),_0xa6ffa1);if(_0x3fa646['query'][_0x8a41('0x3d')]){_0x390c0d[_0x8a41('0x3b')]=_[_0x8a41('0x3e')](_0x390c0d[_0x8a41('0x3b')],{'$or':_[_0x8a41('0x2a')](_0xa6ffa1,function(_0x5c92e3){if(_0x5c92e3[_0x8a41('0x2d')]!==_0x8a41('0x3f')){var _0x36e63d={};_0x36e63d[_0x5c92e3[_0x8a41('0x27')]]={'$like':'%'+_0x3fa646[_0x8a41('0x30')][_0x8a41('0x3d')]+'%'};return _0x36e63d;}})});}_0x390c0d=_[_0x8a41('0x3e')]({},_0x390c0d,_0x3fa646[_0x8a41('0x40')]);var _0x21b9e6={'where':_0x390c0d[_0x8a41('0x3b')]};return db[_0x8a41('0x41')]['count'](_0x21b9e6)[_0x8a41('0x24')](function(_0x1d8107){_0x45f759[_0x8a41('0x1d')]=_0x1d8107;if(_0x3fa646[_0x8a41('0x30')][_0x8a41('0x42')]){_0x390c0d['include']=[{'all':!![]}];}return db[_0x8a41('0x41')][_0x8a41('0x43')](_0x390c0d);})[_0x8a41('0x24')](function(_0x429c84){_0x45f759['rows']=_0x429c84;return _0x45f759;})['then'](respondWithFilteredResult(_0x200c0c,_0x390c0d))[_0x8a41('0x44')](handleError(_0x200c0c,null));};exports[_0x8a41('0x45')]=function(_0x1f842b,_0x5a760c){var _0x446089={'raw':!![],'where':{'id':_0x1f842b['params']['id']}},_0x3cd196={};_0x3cd196['model']=_['keys'](db[_0x8a41('0x41')][_0x8a41('0x2b')]);_0x3cd196['query']=_[_0x8a41('0x31')](_0x1f842b[_0x8a41('0x30')]);_0x3cd196['filters']=_[_0x8a41('0x34')](_0x3cd196[_0x8a41('0x2f')],_0x3cd196[_0x8a41('0x30')]);_0x446089[_0x8a41('0x33')]=_[_0x8a41('0x34')](_0x3cd196[_0x8a41('0x2f')],qs[_0x8a41('0x35')](_0x1f842b['query'][_0x8a41('0x35')]));_0x446089['attributes']=_0x446089[_0x8a41('0x33')][_0x8a41('0x36')]?_0x446089['attributes']:_0x3cd196[_0x8a41('0x2f')];if(_0x1f842b[_0x8a41('0x30')][_0x8a41('0x42')]){_0x446089[_0x8a41('0x46')]=[{'all':!![]}];}_0x446089=_[_0x8a41('0x3e')]({},_0x446089,_0x1f842b[_0x8a41('0x40')]);return db[_0x8a41('0x41')][_0x8a41('0x47')](_0x446089)['then'](handleEntityNotFound(_0x5a760c,null))[_0x8a41('0x24')](respondWithResult(_0x5a760c,null))['catch'](handleError(_0x5a760c,null));};exports[_0x8a41('0x48')]=function(_0x564553,_0x29161e){return db['VoiceMailMessage'][_0x8a41('0x48')](_0x564553[_0x8a41('0x49')],{})[_0x8a41('0x24')](respondWithResult(_0x29161e,0xc9))[_0x8a41('0x44')](handleError(_0x29161e,null));};exports[_0x8a41('0x22')]=function(_0x574e1d,_0x409f6d){if(_0x574e1d[_0x8a41('0x49')]['id']){delete _0x574e1d[_0x8a41('0x49')]['id'];}return db[_0x8a41('0x41')]['find']({'where':{'id':_0x574e1d[_0x8a41('0x4a')]['id']}})['then'](handleEntityNotFound(_0x409f6d,null))[_0x8a41('0x24')](saveUpdates(_0x574e1d['body'],null))[_0x8a41('0x24')](respondWithResult(_0x409f6d,null))['catch'](handleError(_0x409f6d,null));};exports[_0x8a41('0x23')]=function(_0x5ed386,_0x3fd6f2){return db[_0x8a41('0x41')][_0x8a41('0x47')]({'where':{'id':_0x5ed386[_0x8a41('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3fd6f2,null))[_0x8a41('0x24')](removeEntity(_0x3fd6f2,null))[_0x8a41('0x44')](handleError(_0x3fd6f2,null));};exports[_0x8a41('0x4b')]=function(_0x5654fb,_0x3921d8,_0x16246e){return db[_0x8a41('0x41')][_0x8a41('0x47')]({'where':{'id':_0x5654fb[_0x8a41('0x4a')]['id']},'attributes':['id',_0x8a41('0x4c'),_0x8a41('0x4d')]})['then'](handleEntityNotFound(_0x3921d8,null))[_0x8a41('0x24')](function(_0x50e795){if(_0x50e795){if(!_0x50e795[_0x8a41('0x4c')]){throw new db[(_0x8a41('0x4e'))][(_0x8a41('0x4f'))](_0x8a41('0x50'));}var _0xb680b3={'Content-Type':_0x8a41('0x51'),'Content-Disposition':'attachment'};if(_0x50e795[_0x8a41('0x4d')]){_0xb680b3[_0x8a41('0x52')]=_0x8a41('0x53')+_0x50e795[_0x8a41('0x4d')]+_0x8a41('0x54');}_0x3921d8['set'](_0xb680b3);return _0x3921d8[_0x8a41('0x28')](new Buffer(_0x50e795['recording']));}})[_0x8a41('0x44')](handleError(_0x3921d8,null));};
\ No newline at end of file
+var _0xe01d=['limit','order','sort','where','pick','merge','VIRTUAL','filter','then','findAll','rows','show','params','VoiceMailMessage','includeAll','include','options','find','catch','create','body','destroy','download','recording','msg_id','ValidationError','attachment','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','offset','count','status','Content-Range','apply','reject','save','update','error','stack','name','send','rawAttributes','fieldName','type','model','differenceBy','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x40a7b7,_0x589fd5){var _0x9a430f=function(_0x3393eb){while(--_0x3393eb){_0x40a7b7['push'](_0x40a7b7['shift']());}};_0x9a430f(++_0x589fd5);}(_0xe01d,0x172));var _0xde01=function(_0x2ccab9,_0x42969d){_0x2ccab9=_0x2ccab9-0x0;var _0x20e296=_0xe01d[_0x2ccab9];return _0x20e296;};'use strict';var emlformat=require(_0xde01('0x0'));var rimraf=require(_0xde01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xde01('0x2'));var rp=require(_0xde01('0x3'));var moment=require(_0xde01('0x4'));var BPromise=require(_0xde01('0x5'));var Mustache=require(_0xde01('0x6'));var util=require('util');var path=require(_0xde01('0x7'));var sox=require(_0xde01('0x8'));var csv=require('to-csv');var ejs=require(_0xde01('0x9'));var fs=require('fs');var fs_extra=require(_0xde01('0xa'));var _=require(_0xde01('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xde01('0xc'));var deskjs=require(_0xde01('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xde01('0xe'));var Redis=require(_0xde01('0xf'));var authService=require(_0xde01('0x10'));var qs=require(_0xde01('0x11'));var as=require(_0xde01('0x12'));var hardwareService=require(_0xde01('0x13'));var logger=require('../../config/logger')(_0xde01('0x14'));var utils=require('../../config/utils');var config=require(_0xde01('0x15'));var licenseUtil=require(_0xde01('0x16'));var db=require(_0xde01('0x17'))['db'];function respondWithStatusCode(_0x5b7bde,_0x4b91f4){_0x4b91f4=_0x4b91f4||0xcc;return function(_0x2bc7dc){if(_0x2bc7dc){return _0x5b7bde[_0xde01('0x18')](_0x4b91f4);}return _0x5b7bde['status'](_0x4b91f4)[_0xde01('0x19')]();};}function respondWithResult(_0xc8568,_0x984af){_0x984af=_0x984af||0xc8;return function(_0x19d571){if(_0x19d571){return _0xc8568['status'](_0x984af)[_0xde01('0x1a')](_0x19d571);}};}function respondWithFilteredResult(_0x8618a3,_0x56e980){return function(_0xadeb76){if(_0xadeb76){var _0x5547bc=typeof _0x56e980['offset']===_0xde01('0x1b')&&typeof _0x56e980['limit']===_0xde01('0x1b');var _0x4eb462=_0xadeb76['count'];var _0x34e608=_0x5547bc?0x0:_0x56e980[_0xde01('0x1c')];var _0x5a4d48=_0x5547bc?_0xadeb76[_0xde01('0x1d')]:_0x56e980[_0xde01('0x1c')]+_0x56e980['limit'];var _0x232e33;if(_0x5a4d48>=_0x4eb462){_0x5a4d48=_0x4eb462;_0x232e33=0xc8;}else{_0x232e33=0xce;}_0x8618a3[_0xde01('0x1e')](_0x232e33);return _0x8618a3['set'](_0xde01('0x1f'),_0x34e608+'-'+_0x5a4d48+'/'+_0x4eb462)[_0xde01('0x1a')](_0xadeb76);}return null;};}function patchUpdates(_0x1344b0){return function(_0x38f0a6){try{jsonpatch[_0xde01('0x20')](_0x38f0a6,_0x1344b0,!![]);}catch(_0xd8f044){return BPromise[_0xde01('0x21')](_0xd8f044);}return _0x38f0a6[_0xde01('0x22')]();};}function saveUpdates(_0x424b59,_0x1637f3){return function(_0x342bc7){if(_0x342bc7){return _0x342bc7[_0xde01('0x23')](_0x424b59)['then'](function(_0x2a9d87){return _0x2a9d87;});}return null;};}function removeEntity(_0xb5d5b9,_0x296921){return function(_0x16f352){if(_0x16f352){return _0x16f352['destroy']()['then'](function(){_0xb5d5b9[_0xde01('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x268712,_0x35218c){return function(_0x24c073){if(!_0x24c073){_0x268712[_0xde01('0x18')](0x194);}return _0x24c073;};}function handleError(_0x3487cd,_0x2a412e){_0x2a412e=_0x2a412e||0x1f4;return function(_0x21bea9){logger[_0xde01('0x24')](_0x21bea9[_0xde01('0x25')]);if(_0x21bea9[_0xde01('0x26')]){delete _0x21bea9['name'];}_0x3487cd['status'](_0x2a412e)[_0xde01('0x27')](_0x21bea9);};}exports['index']=function(_0x293b67,_0x559e21){var _0x573c0e={},_0x49d06a={},_0x254285={'count':0x0,'rows':[]};var _0x11dcb9=_['map'](db['VoiceMailMessage'][_0xde01('0x28')],function(_0x2d5c7b){return{'name':_0x2d5c7b[_0xde01('0x29')],'type':_0x2d5c7b[_0xde01('0x2a')]['key']};});_0x49d06a[_0xde01('0x2b')]=_[_0xde01('0x2c')](_[_0xde01('0x2d')](_0x11dcb9,_0xde01('0x26')),[_0xde01('0x26')]);_0x49d06a[_0xde01('0x2e')]=_[_0xde01('0x2f')](_0x293b67[_0xde01('0x2e')]);_0x49d06a[_0xde01('0x30')]=_[_0xde01('0x31')](_0x49d06a['model'],_0x49d06a['query']);_0x573c0e[_0xde01('0x32')]=_[_0xde01('0x31')](_0x49d06a['model'],qs['fields'](_0x293b67[_0xde01('0x2e')][_0xde01('0x33')]));_0x573c0e['attributes']=_0x573c0e[_0xde01('0x32')][_0xde01('0x34')]?_0x573c0e[_0xde01('0x32')]:_0x49d06a['model'];if(!_0x293b67[_0xde01('0x2e')][_0xde01('0x35')](_0xde01('0x36'))){_0x573c0e[_0xde01('0x37')]=qs[_0xde01('0x37')](_0x293b67[_0xde01('0x2e')][_0xde01('0x37')]);_0x573c0e[_0xde01('0x1c')]=qs['offset'](_0x293b67['query'][_0xde01('0x1c')]);}_0x573c0e[_0xde01('0x38')]=qs[_0xde01('0x39')](_0x293b67[_0xde01('0x2e')][_0xde01('0x39')]);_0x573c0e[_0xde01('0x3a')]=qs[_0xde01('0x30')](_[_0xde01('0x3b')](_0x293b67[_0xde01('0x2e')],_0x49d06a[_0xde01('0x30')]),_0x11dcb9);if(_0x293b67['query']['filter']){_0x573c0e[_0xde01('0x3a')]=_[_0xde01('0x3c')](_0x573c0e[_0xde01('0x3a')],{'$or':_[_0xde01('0x2d')](_0x11dcb9,function(_0x161d6d){if(_0x161d6d[_0xde01('0x2a')]!==_0xde01('0x3d')){var _0x3c9a07={};_0x3c9a07[_0x161d6d['name']]={'$like':'%'+_0x293b67['query'][_0xde01('0x3e')]+'%'};return _0x3c9a07;}})});}_0x573c0e=_[_0xde01('0x3c')]({},_0x573c0e,_0x293b67['options']);var _0xa36100={'where':_0x573c0e[_0xde01('0x3a')]};return db['VoiceMailMessage'][_0xde01('0x1d')](_0xa36100)[_0xde01('0x3f')](function(_0x18be3d){_0x254285['count']=_0x18be3d;if(_0x293b67[_0xde01('0x2e')]['includeAll']){_0x573c0e['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0xde01('0x40')](_0x573c0e);})['then'](function(_0x37527a){_0x254285[_0xde01('0x41')]=_0x37527a;return _0x254285;})[_0xde01('0x3f')](respondWithFilteredResult(_0x559e21,_0x573c0e))['catch'](handleError(_0x559e21,null));};exports[_0xde01('0x42')]=function(_0x3f7cc3,_0x5bc488){var _0x3e85aa={'raw':!![],'where':{'id':_0x3f7cc3[_0xde01('0x43')]['id']}},_0x33873b={};_0x33873b['model']=_[_0xde01('0x2f')](db[_0xde01('0x44')][_0xde01('0x28')]);_0x33873b[_0xde01('0x2e')]=_[_0xde01('0x2f')](_0x3f7cc3[_0xde01('0x2e')]);_0x33873b[_0xde01('0x30')]=_[_0xde01('0x31')](_0x33873b[_0xde01('0x2b')],_0x33873b['query']);_0x3e85aa[_0xde01('0x32')]=_[_0xde01('0x31')](_0x33873b[_0xde01('0x2b')],qs[_0xde01('0x33')](_0x3f7cc3[_0xde01('0x2e')][_0xde01('0x33')]));_0x3e85aa['attributes']=_0x3e85aa[_0xde01('0x32')][_0xde01('0x34')]?_0x3e85aa['attributes']:_0x33873b[_0xde01('0x2b')];if(_0x3f7cc3[_0xde01('0x2e')][_0xde01('0x45')]){_0x3e85aa[_0xde01('0x46')]=[{'all':!![]}];}_0x3e85aa=_['merge']({},_0x3e85aa,_0x3f7cc3[_0xde01('0x47')]);return db[_0xde01('0x44')][_0xde01('0x48')](_0x3e85aa)['then'](handleEntityNotFound(_0x5bc488,null))['then'](respondWithResult(_0x5bc488,null))[_0xde01('0x49')](handleError(_0x5bc488,null));};exports[_0xde01('0x4a')]=function(_0x2b85b0,_0x5ab56c){return db[_0xde01('0x44')][_0xde01('0x4a')](_0x2b85b0[_0xde01('0x4b')],{})['then'](respondWithResult(_0x5ab56c,0xc9))[_0xde01('0x49')](handleError(_0x5ab56c,null));};exports[_0xde01('0x23')]=function(_0x438f3f,_0x26635b){if(_0x438f3f['body']['id']){delete _0x438f3f[_0xde01('0x4b')]['id'];}return db['VoiceMailMessage'][_0xde01('0x48')]({'where':{'id':_0x438f3f['params']['id']}})['then'](handleEntityNotFound(_0x26635b,null))[_0xde01('0x3f')](saveUpdates(_0x438f3f[_0xde01('0x4b')],null))[_0xde01('0x3f')](respondWithResult(_0x26635b,null))[_0xde01('0x49')](handleError(_0x26635b,null));};exports[_0xde01('0x4c')]=function(_0x2fe8b6,_0x53d040){return db['VoiceMailMessage'][_0xde01('0x48')]({'where':{'id':_0x2fe8b6[_0xde01('0x43')]['id']}})['then'](handleEntityNotFound(_0x53d040,null))[_0xde01('0x3f')](removeEntity(_0x53d040,null))[_0xde01('0x49')](handleError(_0x53d040,null));};exports[_0xde01('0x4d')]=function(_0x43c63b,_0x29b58b,_0x117df4){return db[_0xde01('0x44')]['find']({'where':{'id':_0x43c63b[_0xde01('0x43')]['id']},'attributes':['id',_0xde01('0x4e'),_0xde01('0x4f')]})['then'](handleEntityNotFound(_0x29b58b,null))[_0xde01('0x3f')](function(_0x19277d){if(_0x19277d){if(!_0x19277d[_0xde01('0x4e')]){throw new db['Sequelize'][(_0xde01('0x50'))]('VoiceMailMessage\x20not\x20found');}var _0x45d649={'Content-Type':'audio/wav','Content-Disposition':_0xde01('0x51')};if(_0x19277d[_0xde01('0x4f')]){_0x45d649['Content-Disposition']=_0xde01('0x52')+_0x19277d[_0xde01('0x4f')]+_0xde01('0x53');}_0x29b58b[_0xde01('0x54')](_0x45d649);return _0x29b58b['send'](new Buffer(_0x19277d[_0xde01('0x4e')]));}})['catch'](handleError(_0x29b58b,null));};
\ No newline at end of file
index d4338da..421d864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x264a=['path','../../config/environment','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x458140,_0x20964a){var _0x5e4ba1=function(_0x240ca4){while(--_0x240ca4){_0x458140['push'](_0x458140['shift']());}};_0x5e4ba1(++_0x20964a);}(_0x264a,0x1f2));var _0xa264=function(_0x24c1bb,_0x18298a){_0x24c1bb=_0x24c1bb-0x0;var _0x4c932d=_0x264a[_0x24c1bb];return _0x4c932d;};'use strict';var _=require(_0xa264('0x0'));var util=require('util');var logger=require(_0xa264('0x1'))(_0xa264('0x2'));var moment=require(_0xa264('0x3'));var BPromise=require(_0xa264('0x4'));var rp=require(_0xa264('0x5'));var fs=require('fs');var path=require(_0xa264('0x6'));var rimraf=require('rimraf');var config=require(_0xa264('0x7'));var attributes=require('./voiceMailMessage.attributes');module['exports']=function(_0x139d67,_0x49eae9){return _0x139d67[_0xa264('0x8')](_0xa264('0x9'),attributes,{'tableName':_0xa264('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xa264('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xa5cc=['dir','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages'];(function(_0xaf25ae,_0x2001c1){var _0x49732d=function(_0x5b764d){while(--_0x5b764d){_0xaf25ae['push'](_0xaf25ae['shift']());}};_0x49732d(++_0x2001c1);}(_0xa5cc,0xc1));var _0xca5c=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xa5cc[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0xca5c('0x0'));var util=require('util');var logger=require(_0xca5c('0x1'))(_0xca5c('0x2'));var moment=require(_0xca5c('0x3'));var BPromise=require(_0xca5c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xca5c('0x5'));var rimraf=require('rimraf');var config=require(_0xca5c('0x6'));var attributes=require(_0xca5c('0x7'));module['exports']=function(_0x10dfde,_0x4e95ab){return _0x10dfde[_0xca5c('0x8')](_0xca5c('0x9'),attributes,{'tableName':_0xca5c('0xa'),'paranoid':![],'indexes':[{'name':_0xca5c('0xb'),'fields':[_0xca5c('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 021da1d..a88a248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92e8=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','VoiceMailMessage,\x20%s,\x20%s','catch','lodash','util','moment'];(function(_0x170e53,_0x4cd7ef){var _0x95af1a=function(_0x3a4117){while(--_0x3a4117){_0x170e53['push'](_0x170e53['shift']());}};_0x95af1a(++_0x4cd7ef);}(_0x92e8,0x1b6));var _0x892e=function(_0x73b80e,_0x4daa4a){_0x73b80e=_0x73b80e-0x0;var _0x4c31cd=_0x92e8[_0x73b80e];return _0x4c31cd;};'use strict';var _=require(_0x892e('0x0'));var util=require(_0x892e('0x1'));var moment=require(_0x892e('0x2'));var BPromise=require('bluebird');var rs=require(_0x892e('0x3'));var fs=require('fs');var Redis=require(_0x892e('0x4'));var db=require(_0x892e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x892e('0x6'))(_0x892e('0x7'));var config=require(_0x892e('0x8'));var jayson=require(_0x892e('0x9'));var client=jayson[_0x892e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2dde60,_0x42d7be,_0x4ac141){return new BPromise(function(_0x39ac14,_0x4c182a){return client[_0x892e('0xb')](_0x2dde60,_0x4ac141)['then'](function(_0xafb2d5){logger[_0x892e('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x42d7be,'request\x20sent');logger[_0x892e('0xd')](_0x892e('0xe'),_0x42d7be,_0x892e('0xf'),JSON[_0x892e('0x10')](_0xafb2d5));if(_0xafb2d5[_0x892e('0x11')]){if(_0xafb2d5[_0x892e('0x11')]['code']===0x1f4){logger[_0x892e('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x42d7be,_0xafb2d5[_0x892e('0x11')][_0x892e('0x12')]);return _0x4c182a(_0xafb2d5[_0x892e('0x11')][_0x892e('0x12')]);}logger[_0x892e('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x42d7be,_0xafb2d5[_0x892e('0x11')][_0x892e('0x12')]);return _0x39ac14(_0xafb2d5[_0x892e('0x11')][_0x892e('0x12')]);}else{logger[_0x892e('0xc')](_0x892e('0x13'),_0x42d7be,'request\x20sent');_0x39ac14(_0xafb2d5['result'][_0x892e('0x12')]);}})[_0x892e('0x14')](function(_0x408279){logger[_0x892e('0x11')](_0x892e('0x13'),_0x42d7be,_0x408279);_0x4c182a(_0x408279);});});}
\ No newline at end of file
+var _0x0c5c=['rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','VoiceMailMessage,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','../../config/logger'];(function(_0x5637f5,_0x1082c5){var _0x2f1873=function(_0x5ac507){while(--_0x5ac507){_0x5637f5['push'](_0x5637f5['shift']());}};_0x2f1873(++_0x1082c5);}(_0x0c5c,0x160));var _0xc0c5=function(_0x1999db,_0x40f5ee){_0x1999db=_0x1999db-0x0;var _0x5d143e=_0x0c5c[_0x1999db];return _0x5d143e;};'use strict';var _=require(_0xc0c5('0x0'));var util=require('util');var moment=require(_0xc0c5('0x1'));var BPromise=require(_0xc0c5('0x2'));var rs=require(_0xc0c5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc0c5('0x4'))(_0xc0c5('0x5'));var config=require(_0xc0c5('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc0c5('0x7')][_0xc0c5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x27dc9c,_0x4a8231,_0x2f7652){return new BPromise(function(_0x390915,_0x1347ef){return client[_0xc0c5('0x9')](_0x27dc9c,_0x2f7652)[_0xc0c5('0xa')](function(_0x25f2c1){logger[_0xc0c5('0xb')]('VoiceMailMessage,\x20%s,\x20%s',_0x4a8231,_0xc0c5('0xc'));logger[_0xc0c5('0xd')](_0xc0c5('0xe'),_0x4a8231,_0xc0c5('0xc'),JSON[_0xc0c5('0xf')](_0x25f2c1));if(_0x25f2c1[_0xc0c5('0x10')]){if(_0x25f2c1[_0xc0c5('0x10')]['code']===0x1f4){logger[_0xc0c5('0x10')](_0xc0c5('0x11'),_0x4a8231,_0x25f2c1['error'][_0xc0c5('0x12')]);return _0x1347ef(_0x25f2c1[_0xc0c5('0x10')]['message']);}logger['error'](_0xc0c5('0x11'),_0x4a8231,_0x25f2c1['error'][_0xc0c5('0x12')]);return _0x390915(_0x25f2c1[_0xc0c5('0x10')][_0xc0c5('0x12')]);}else{logger[_0xc0c5('0xb')](_0xc0c5('0x11'),_0x4a8231,'request\x20sent');_0x390915(_0x25f2c1[_0xc0c5('0x13')]['message']);}})[_0xc0c5('0x14')](function(_0x4f66e7){logger[_0xc0c5('0x10')]('VoiceMailMessage,\x20%s,\x20%s',_0x4a8231,_0x4f66e7);_0x1347ef(_0x4f66e7);});});}
\ No newline at end of file
index e9c51ec..20f28ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08fa=['update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','connect-timeout','express','Router','fs-extra','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','/:id','show','/:id/sounds','getSounds','post','create','addSound','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x08fa,0x176));var _0xa08f=function(_0x18af2d,_0x2a789a){_0x18af2d=_0x18af2d-0x0;var _0x399479=_0x08fa[_0x18af2d];return _0x399479;};'use strict';var multer=require(_0xa08f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa08f('0x1'));var express=require(_0xa08f('0x2'));var router=express[_0xa08f('0x3')]();var fs_extra=require(_0xa08f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa08f('0x5'));var controller=require(_0xa08f('0x6'));router[_0xa08f('0x7')]('/',auth[_0xa08f('0x8')](),controller['index']);router[_0xa08f('0x7')](_0xa08f('0x9'),auth['isAuthenticated'](),controller[_0xa08f('0xa')]);router[_0xa08f('0x7')](_0xa08f('0xb'),auth['isAuthenticated'](),controller[_0xa08f('0xc')]);router[_0xa08f('0xd')]('/',auth[_0xa08f('0x8')](),controller[_0xa08f('0xe')]);router[_0xa08f('0xd')]('/:id/sounds',auth[_0xa08f('0x8')](),controller[_0xa08f('0xf')]);router[_0xa08f('0x10')](_0xa08f('0x9'),auth[_0xa08f('0x8')](),controller[_0xa08f('0x11')]);router[_0xa08f('0x12')](_0xa08f('0x9'),auth['isAuthenticated'](),controller[_0xa08f('0x13')]);router[_0xa08f('0x12')](_0xa08f('0x14'),auth[_0xa08f('0x8')](),controller[_0xa08f('0x15')]);module[_0xa08f('0x16')]=router;
\ No newline at end of file
+var _0xa761=['/:id','show','/:id/sounds','getSounds','create','post','addSound','put','update','delete','destroy','removeSound','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index'];(function(_0x54bbe1,_0x3502ff){var _0x57f529=function(_0x102fef){while(--_0x102fef){_0x54bbe1['push'](_0x54bbe1['shift']());}};_0x57f529(++_0x3502ff);}(_0xa761,0x145));var _0x1a76=function(_0x43f3e7,_0x3b0cf5){_0x43f3e7=_0x43f3e7-0x0;var _0x59932c=_0xa761[_0x43f3e7];return _0x59932c;};'use strict';var multer=require('multer');var util=require(_0x1a76('0x0'));var path=require(_0x1a76('0x1'));var timeout=require('connect-timeout');var express=require(_0x1a76('0x2'));var router=express[_0x1a76('0x3')]();var fs_extra=require(_0x1a76('0x4'));var auth=require(_0x1a76('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1a76('0x6'));var controller=require(_0x1a76('0x7'));router[_0x1a76('0x8')]('/',auth[_0x1a76('0x9')](),controller[_0x1a76('0xa')]);router[_0x1a76('0x8')](_0x1a76('0xb'),auth[_0x1a76('0x9')](),controller[_0x1a76('0xc')]);router['get'](_0x1a76('0xd'),auth[_0x1a76('0x9')](),controller[_0x1a76('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1a76('0xf')]);router[_0x1a76('0x10')](_0x1a76('0xd'),auth[_0x1a76('0x9')](),controller[_0x1a76('0x11')]);router[_0x1a76('0x12')](_0x1a76('0xb'),auth[_0x1a76('0x9')](),controller[_0x1a76('0x13')]);router[_0x1a76('0x14')](_0x1a76('0xb'),auth[_0x1a76('0x9')](),controller[_0x1a76('0x15')]);router[_0x1a76('0x14')]('/:id/sounds/:id2',auth[_0x1a76('0x9')](),controller[_0x1a76('0x16')]);module[_0x1a76('0x17')]=router;
\ No newline at end of file
index 92ecd5e..56a0e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a5=['TIMESTAMP','BOOLEAN','sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha'];(function(_0x32f011,_0x3c4b35){var _0x2ac6c8=function(_0x11efd4){while(--_0x11efd4){_0x32f011['push'](_0x32f011['shift']());}};_0x2ac6c8(++_0x3c4b35);}(_0x48a5,0x1af));var _0x548a=function(_0x5cf3c6,_0x14d7ad){_0x5cf3c6=_0x5cf3c6-0x0;var _0x17eab4=_0x48a5[_0x5cf3c6];return _0x17eab4;};'use strict';var Sequelize=require(_0x548a('0x0'));module['exports']={'name':{'type':Sequelize[_0x548a('0x1')],'allowNull':![],'unique':_0x548a('0x2')},'mode':{'type':Sequelize[_0x548a('0x3')](_0x548a('0x4'),_0x548a('0x5'),_0x548a('0x6'),_0x548a('0x7'),_0x548a('0x8'),_0x548a('0x9')),'allowNull':!![],'defaultValue':_0x548a('0x5')},'directory':{'type':Sequelize[_0x548a('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0x548a('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x548a('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x548a('0x1')],'allowNull':!![],'defaultValue':_0x548a('0xa')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x548a('0xb')},'defaultEntry':{'type':Sequelize[_0x548a('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdfbc=['ENUM','files','quietmp3nb','alpha','TIMESTAMP','exports','STRING'];(function(_0x32bb9b,_0x232e46){var _0x4e4562=function(_0x562513){while(--_0x562513){_0x32bb9b['push'](_0x32bb9b['shift']());}};_0x4e4562(++_0x232e46);}(_0xdfbc,0x7c));var _0xcdfb=function(_0xe86227,_0x49e551){_0xe86227=_0xe86227-0x0;var _0xca66c8=_0xdfbc[_0xe86227];return _0xca66c8;};'use strict';var Sequelize=require('sequelize');module[_0xcdfb('0x0')]={'name':{'type':Sequelize[_0xcdfb('0x1')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0xcdfb('0x2')]('custom',_0xcdfb('0x3'),'mp3nb',_0xcdfb('0x4'),'quietmp3','mp3'),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0xcdfb('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0xcdfb('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0xcdfb('0x1')],'allowNull':!![],'defaultValue':_0xcdfb('0x5')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0xcdfb('0x6')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 7f45d9a..6e3eecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x703a=['type','key','keys','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','body','find','create','mode','files','directory','root','server/files/moh','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','sequelize','transaction','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','message','addSound','Sound','findOne','save_name','converted_format','createdAt','join','format','extname','ValidationError','removeSound','getSounds','pick','filter','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName'];(function(_0x291139,_0x7f30de){var _0x3c42c0=function(_0x5832e3){while(--_0x5832e3){_0x291139['push'](_0x291139['shift']());}};_0x3c42c0(++_0x7f30de);}(_0x703a,0x11d));var _0xa703=function(_0x3db25a,_0x13155b){_0x3db25a=_0x3db25a-0x0;var _0x57dd62=_0x703a[_0x3db25a];return _0x57dd62;};'use strict';var emlformat=require(_0xa703('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa703('0x1'));var jsonpatch=require(_0xa703('0x2'));var rp=require(_0xa703('0x3'));var moment=require(_0xa703('0x4'));var BPromise=require(_0xa703('0x5'));var Mustache=require('mustache');var util=require(_0xa703('0x6'));var path=require(_0xa703('0x7'));var sox=require(_0xa703('0x8'));var csv=require(_0xa703('0x9'));var ejs=require(_0xa703('0xa'));var fs=require('fs');var fs_extra=require(_0xa703('0xb'));var _=require(_0xa703('0xc'));var squel=require(_0xa703('0xd'));var crypto=require(_0xa703('0xe'));var jsforce=require(_0xa703('0xf'));var deskjs=require(_0xa703('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa703('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa703('0x12'));var hardwareService=require(_0xa703('0x13'));var logger=require(_0xa703('0x14'))('api');var utils=require(_0xa703('0x15'));var config=require(_0xa703('0x16'));var licenseUtil=require(_0xa703('0x17'));var db=require(_0xa703('0x18'))['db'];function respondWithStatusCode(_0x400fc4,_0x44b120){_0x44b120=_0x44b120||0xcc;return function(_0x3f00a1){if(_0x3f00a1){return _0x400fc4['sendStatus'](_0x44b120);}return _0x400fc4[_0xa703('0x19')](_0x44b120)[_0xa703('0x1a')]();};}function respondWithResult(_0x2ec1b0,_0x4d3e00){_0x4d3e00=_0x4d3e00||0xc8;return function(_0x1302f0){if(_0x1302f0){return _0x2ec1b0[_0xa703('0x19')](_0x4d3e00)[_0xa703('0x1b')](_0x1302f0);}};}function respondWithFilteredResult(_0x253742,_0x153128){return function(_0x3075b8){if(_0x3075b8){var _0x59bb63=typeof _0x153128[_0xa703('0x1c')]==='undefined'&&typeof _0x153128[_0xa703('0x1d')]==='undefined';var _0x512111=_0x3075b8[_0xa703('0x1e')];var _0x40f56b=_0x59bb63?0x0:_0x153128['offset'];var _0x5e4a05=_0x59bb63?_0x3075b8[_0xa703('0x1e')]:_0x153128[_0xa703('0x1c')]+_0x153128[_0xa703('0x1d')];var _0x153e4a;if(_0x5e4a05>=_0x512111){_0x5e4a05=_0x512111;_0x153e4a=0xc8;}else{_0x153e4a=0xce;}_0x253742[_0xa703('0x19')](_0x153e4a);return _0x253742[_0xa703('0x1f')](_0xa703('0x20'),_0x40f56b+'-'+_0x5e4a05+'/'+_0x512111)[_0xa703('0x1b')](_0x3075b8);}return null;};}function patchUpdates(_0x1c58cf){return function(_0x572d79){try{jsonpatch[_0xa703('0x21')](_0x572d79,_0x1c58cf,!![]);}catch(_0x3fa536){return BPromise[_0xa703('0x22')](_0x3fa536);}return _0x572d79[_0xa703('0x23')]();};}function saveUpdates(_0x2793b6,_0xbbb0cb){return function(_0x1a8614){if(_0x1a8614){return _0x1a8614[_0xa703('0x24')](_0x2793b6)[_0xa703('0x25')](function(_0x1b19b5){return _0x1b19b5;});}return null;};}function removeEntity(_0x4cd76f,_0x4a6658){return function(_0x3316e3){if(_0x3316e3){return _0x3316e3[_0xa703('0x26')]()[_0xa703('0x25')](function(){var _0x581380=_0x3316e3[_0xa703('0x27')]({'plain':!![]});var _0x296396='MusicOnHolds';return db[_0xa703('0x28')][_0xa703('0x26')]({'where':{'type':_0x296396,'resourceId':_0x581380['id']}})[_0xa703('0x25')](function(){return _0x3316e3;});})[_0xa703('0x25')](function(){_0x4cd76f[_0xa703('0x19')](0xcc)[_0xa703('0x1a')]();});}};}function handleEntityNotFound(_0x359206,_0x3be32b){return function(_0xd9a4e9){if(!_0xd9a4e9){_0x359206[_0xa703('0x29')](0x194);}return _0xd9a4e9;};}function handleError(_0xa9b804,_0x65f95c){_0x65f95c=_0x65f95c||0x1f4;return function(_0x45a68f){logger[_0xa703('0x2a')](_0x45a68f[_0xa703('0x2b')]);if(_0x45a68f[_0xa703('0x2c')]){delete _0x45a68f[_0xa703('0x2c')];}_0xa9b804[_0xa703('0x19')](_0x65f95c)[_0xa703('0x2d')](_0x45a68f);};}exports[_0xa703('0x2e')]=function(_0x3c6c55,_0x4f5dff){var _0x2dd658={},_0x1f65ea={},_0x35be91={'count':0x0,'rows':[]};var _0x5766=_[_0xa703('0x2f')](db[_0xa703('0x30')][_0xa703('0x31')],function(_0xb5bed5){return{'name':_0xb5bed5[_0xa703('0x32')],'type':_0xb5bed5[_0xa703('0x33')][_0xa703('0x34')]};});_0x1f65ea['model']=_[_0xa703('0x2f')](_0x5766,_0xa703('0x2c'));_0x1f65ea['query']=_[_0xa703('0x35')](_0x3c6c55[_0xa703('0x36')]);_0x1f65ea['filters']=_[_0xa703('0x37')](_0x1f65ea[_0xa703('0x38')],_0x1f65ea[_0xa703('0x36')]);_0x2dd658['attributes']=_[_0xa703('0x37')](_0x1f65ea[_0xa703('0x38')],qs[_0xa703('0x39')](_0x3c6c55['query'][_0xa703('0x39')]));_0x2dd658[_0xa703('0x3a')]=_0x2dd658[_0xa703('0x3a')][_0xa703('0x3b')]?_0x2dd658[_0xa703('0x3a')]:_0x1f65ea[_0xa703('0x38')];if(!_0x3c6c55[_0xa703('0x36')][_0xa703('0x3c')](_0xa703('0x3d'))){_0x2dd658[_0xa703('0x1d')]=qs['limit'](_0x3c6c55[_0xa703('0x36')][_0xa703('0x1d')]);_0x2dd658[_0xa703('0x1c')]=qs[_0xa703('0x1c')](_0x3c6c55[_0xa703('0x36')][_0xa703('0x1c')]);}_0x2dd658[_0xa703('0x3e')]=qs[_0xa703('0x3f')](_0x3c6c55[_0xa703('0x36')][_0xa703('0x3f')]);delete _0x3c6c55['query'][_0xa703('0x3f')];_0x2dd658[_0xa703('0x40')]=qs[_0xa703('0x41')](_['pick'](_0x3c6c55[_0xa703('0x36')],_0x1f65ea[_0xa703('0x41')]),_0x5766);if(_0x3c6c55[_0xa703('0x36')]['filter']){_0x2dd658[_0xa703('0x40')]=_[_0xa703('0x42')](_0x2dd658[_0xa703('0x40')],{'$or':_[_0xa703('0x2f')](_0x5766,function(_0x1b71eb){if(_0x1b71eb[_0xa703('0x33')]!==_0xa703('0x43')){var _0x3f7999={};_0x3f7999[_0x1b71eb[_0xa703('0x2c')]]={'$like':'%'+_0x3c6c55['query']['filter']+'%'};return _0x3f7999;}})});}_0x2dd658=_['merge']({},_0x2dd658,_0x3c6c55[_0xa703('0x44')]);var _0x5ebbb4={'where':_0x2dd658[_0xa703('0x40')]};return db['VoiceMusicOnHold'][_0xa703('0x1e')](_0x5ebbb4)[_0xa703('0x25')](function(_0x473f5b){_0x35be91[_0xa703('0x1e')]=_0x473f5b;if(_0x3c6c55[_0xa703('0x36')][_0xa703('0x45')]){_0x2dd658[_0xa703('0x46')]=[{'all':!![]}];}return db[_0xa703('0x30')][_0xa703('0x47')](_0x2dd658);})[_0xa703('0x25')](function(_0x588d6d){_0x35be91[_0xa703('0x48')]=_0x588d6d;return _0x35be91;})['then'](respondWithFilteredResult(_0x4f5dff,_0x2dd658))[_0xa703('0x49')](handleError(_0x4f5dff,null));};exports[_0xa703('0x4a')]=function(_0xc3a7f7,_0x5f1f0e){var _0xc22dee={'raw':![],'where':{'id':_0xc3a7f7[_0xa703('0x4b')]['id']}},_0x5865ab={};_0x5865ab[_0xa703('0x38')]=_[_0xa703('0x35')](db[_0xa703('0x30')][_0xa703('0x31')]);_0x5865ab[_0xa703('0x36')]=_[_0xa703('0x35')](_0xc3a7f7['query']);_0x5865ab[_0xa703('0x41')]=_[_0xa703('0x37')](_0x5865ab[_0xa703('0x38')],_0x5865ab['query']);_0xc22dee[_0xa703('0x3a')]=_['intersection'](_0x5865ab[_0xa703('0x38')],qs[_0xa703('0x39')](_0xc3a7f7['query'][_0xa703('0x39')]));_0xc22dee['attributes']=_0xc22dee[_0xa703('0x3a')][_0xa703('0x3b')]?_0xc22dee[_0xa703('0x3a')]:_0x5865ab[_0xa703('0x38')];if(_0xc3a7f7['query'][_0xa703('0x45')]){_0xc22dee[_0xa703('0x46')]=[{'all':!![]}];}_0xc22dee=_[_0xa703('0x42')]({},_0xc22dee,_0xc3a7f7[_0xa703('0x44')]);return db[_0xa703('0x30')]['find'](_0xc22dee)['then'](handleEntityNotFound(_0x5f1f0e,null))[_0xa703('0x25')](respondWithResult(_0x5f1f0e,null))[_0xa703('0x49')](handleError(_0x5f1f0e,null));};exports[_0xa703('0x24')]=function(_0x54241e,_0x539a3f){if(_0x54241e[_0xa703('0x4c')]['id']){delete _0x54241e[_0xa703('0x4c')]['id'];}return db[_0xa703('0x30')][_0xa703('0x4d')]({'where':{'id':_0x54241e['params']['id']}})[_0xa703('0x25')](handleEntityNotFound(_0x539a3f,null))['then'](saveUpdates(_0x54241e[_0xa703('0x4c')],null))[_0xa703('0x25')](respondWithResult(_0x539a3f,null))[_0xa703('0x49')](handleError(_0x539a3f,null));};exports[_0xa703('0x4e')]=function(_0x46d2c8,_0x32c885,_0xc3f84a){return db['sequelize']['transaction'](function(_0x2e6e4c){if(_0x46d2c8[_0xa703('0x4c')][_0xa703('0x4f')]===_0xa703('0x50')){_0x46d2c8['body'][_0xa703('0x51')]=path['join'](config[_0xa703('0x52')],_0xa703('0x53'),_0x46d2c8[_0xa703('0x4c')][_0xa703('0x2c')]);}return db[_0xa703('0x30')][_0xa703('0x4e')](_0x46d2c8[_0xa703('0x4c')],{'transaction':_0x2e6e4c})['then'](function(_0x2aa07f){if(_0x46d2c8[_0xa703('0x4c')][_0xa703('0x4f')]===_0xa703('0x50')){fs[_0xa703('0x54')](_0x2aa07f['directory'],parseInt('0777',0x8));}var _0x2f25c5=_0x46d2c8[_0xa703('0x55')][_0xa703('0x27')]({'plain':!![]});if(!_0x2f25c5)throw new Error(_0xa703('0x56'));if(_0x2f25c5[_0xa703('0x57')]===_0xa703('0x55')){var _0xff15ce=_0x2aa07f[_0xa703('0x27')]({'plain':!![]});return db[_0xa703('0x58')][_0xa703('0x4d')]({'where':{'name':'MusicOnHolds','userProfileId':_0x2f25c5[_0xa703('0x59')]},'raw':!![]})[_0xa703('0x25')](function(_0x4b6ea1){if(_0x4b6ea1&&_0x4b6ea1['autoAssociation']===0x0){return db[_0xa703('0x28')]['create']({'name':_0xff15ce[_0xa703('0x2c')],'resourceId':_0xff15ce['id'],'type':_0x4b6ea1[_0xa703('0x2c')],'sectionId':_0x4b6ea1['id']},{})[_0xa703('0x25')](function(){return _0x2aa07f;});}else{return _0x2aa07f;}})[_0xa703('0x49')](function(_0x249b1c){logger[_0xa703('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x249b1c);});}return _0x2aa07f;});})['then'](respondWithResult(_0x32c885,0xc9))[_0xa703('0x49')](handleError(_0x32c885,null));};exports[_0xa703('0x26')]=function(_0x68a4a4,_0x3a3a2a,_0x148ec8){var _0x2c342c;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x68a4a4['params']['id']}})[_0xa703('0x25')](function(_0x4816c4){if(_0x4816c4){return db[_0xa703('0x5a')][_0xa703('0x5b')](function(_0x2832d5){return _0x4816c4[_0xa703('0x26')]({'transaction':_0x2832d5,'raw':!![]})['then'](function(_0x4f8212){if(_0x4f8212[_0xa703('0x51')]){fs[_0xa703('0x5c')](_0x4f8212[_0xa703('0x51')])[_0xa703('0x5d')](function(_0x162458){fs[_0xa703('0x5e')](path['join'](_0x4f8212[_0xa703('0x51')],_0x162458));});fs[_0xa703('0x5f')](_0x4f8212['directory']);}return _0x4f8212;});})['catch'](function(_0x544959){throw new db[(_0xa703('0x60'))]['ValidationError'](_0x544959[_0xa703('0x61')]);});}})['then'](handleEntityNotFound(_0x3a3a2a,null))['then'](removeEntity(_0x3a3a2a,null))[_0xa703('0x49')](handleError(_0x3a3a2a,null));};exports[_0xa703('0x62')]=function(_0x345a93,_0x471e9c,_0x2c8661){return db[_0xa703('0x5a')][_0xa703('0x5b')](function(_0x56a1d7){var _0x411640;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x345a93[_0xa703('0x4b')]['id']}})[_0xa703('0x25')](function(_0x38be4c){if(_0x38be4c){_0x411640=_0x38be4c;return _0x38be4c['addSound'](_0x345a93[_0xa703('0x4c')]['id'],{'transaction':_0x56a1d7});}})['then'](function(_0x4ddf27){if(_0x4ddf27){return db[_0xa703('0x63')][_0xa703('0x64')]({'where':{'id':_0x345a93[_0xa703('0x4c')]['id']},'attributes':['id',_0xa703('0x2c'),_0xa703('0x65'),_0xa703('0x66'),_0xa703('0x67')],'raw':!![]});}})[_0xa703('0x25')](function(_0x779468){if(_0x779468){var _0x50e988=path[_0xa703('0x68')](config['root'],'server/files/sounds/converted',util[_0xa703('0x69')]('%s.%s',path['basename'](_0x779468[_0xa703('0x65')],path[_0xa703('0x6a')](_0x779468['save_name'])),_0x779468[_0xa703('0x66')]));var _0xfca479=path[_0xa703('0x68')](config[_0xa703('0x52')],_0xa703('0x53'),_0x411640[_0xa703('0x2c')],util['format']('%s.%s',_0x779468[_0xa703('0x2c')],_0x779468['converted_format']));fs['symlinkSync'](_0x50e988,_0xfca479);return _0x779468;}})[_0xa703('0x49')](function(_0x184b60){throw new db[(_0xa703('0x60'))][(_0xa703('0x6b'))](_0x184b60[_0xa703('0x61')]);});})[_0xa703('0x25')](handleEntityNotFound(_0x471e9c,null))[_0xa703('0x25')](respondWithResult(_0x471e9c,0xc9))[_0xa703('0x49')](handleError(_0x471e9c,null));};exports[_0xa703('0x6c')]=function(_0x2f4235,_0x1ac30d,_0x2f167c){return db[_0xa703('0x5a')][_0xa703('0x5b')](function(_0x169171){var _0x1aed61;return db['VoiceMusicOnHold'][_0xa703('0x64')]({'where':{'id':_0x2f4235['params']['id']}})['then'](handleEntityNotFound(_0x1ac30d,null))[_0xa703('0x25')](function(_0xf94c7c){if(_0xf94c7c){_0x1aed61=_0xf94c7c;return _0xf94c7c[_0xa703('0x6c')](_0x2f4235[_0xa703('0x4b')]['id2']);}})[_0xa703('0x25')](function(_0x1629a4){if(_0x1629a4){return db[_0xa703('0x63')]['findOne']({'where':{'id':_0x2f4235[_0xa703('0x4b')]['id2']},'attributes':['id',_0xa703('0x2c'),_0xa703('0x65'),'converted_format','createdAt'],'raw':!![]});}})[_0xa703('0x25')](function(_0x341555){if(_0x341555){fs[_0xa703('0x5e')](path[_0xa703('0x68')](_0x1aed61[_0xa703('0x51')],util[_0xa703('0x69')]('%s.%s',_0x341555[_0xa703('0x2c')],_0x341555[_0xa703('0x66')])));return _0x341555;}})['catch'](function(_0x15bc15){throw new db[(_0xa703('0x60'))][(_0xa703('0x6b'))](_0x15bc15[_0xa703('0x61')]);});})[_0xa703('0x25')](handleEntityNotFound(_0x1ac30d,null))['then'](respondWithStatusCode(_0x1ac30d,0xcc))[_0xa703('0x49')](handleError(_0x1ac30d,null));};exports[_0xa703('0x6d')]=function(_0x1ce8b7,_0x235bc7,_0x55d065){var _0x2273a7={};var _0x309f5b={};var _0x3d3634;var _0x15bb0b;return db[_0xa703('0x30')][_0xa703('0x64')]({'where':{'id':_0x1ce8b7['params']['id']}})['then'](handleEntityNotFound(_0x235bc7,null))[_0xa703('0x25')](function(_0x22a829){if(_0x22a829){_0x3d3634=_0x22a829;_0x309f5b[_0xa703('0x38')]=_[_0xa703('0x35')](db[_0xa703('0x63')]['rawAttributes']);_0x309f5b[_0xa703('0x36')]=_['keys'](_0x1ce8b7['query']);_0x309f5b[_0xa703('0x41')]=_[_0xa703('0x37')](_0x309f5b[_0xa703('0x38')],_0x309f5b[_0xa703('0x36')]);_0x2273a7['attributes']=_[_0xa703('0x37')](_0x309f5b[_0xa703('0x38')],qs[_0xa703('0x39')](_0x1ce8b7[_0xa703('0x36')][_0xa703('0x39')]));_0x2273a7[_0xa703('0x3a')]=_0x2273a7[_0xa703('0x3a')][_0xa703('0x3b')]?_0x2273a7[_0xa703('0x3a')]:_0x309f5b[_0xa703('0x38')];_0x2273a7[_0xa703('0x3e')]=qs['sort'](_0x1ce8b7[_0xa703('0x36')]['sort']);_0x2273a7['where']=qs[_0xa703('0x41')](_[_0xa703('0x6e')](_0x1ce8b7['query'],_0x309f5b['filters']));if(_0x1ce8b7['query'][_0xa703('0x6f')]){_0x2273a7[_0xa703('0x40')]=_[_0xa703('0x42')](_0x2273a7[_0xa703('0x40')],{'$or':_[_0xa703('0x2f')](_0x2273a7[_0xa703('0x3a')],function(_0x20aee4){var _0x261d6e={};_0x261d6e[_0x20aee4]={'$like':'%'+_0x1ce8b7[_0xa703('0x36')]['filter']+'%'};return _0x261d6e;})});}_0x2273a7=_[_0xa703('0x42')]({},_0x2273a7,_0x1ce8b7[_0xa703('0x44')]);return _0x3d3634[_0xa703('0x6d')](_0x2273a7);}})[_0xa703('0x25')](function(_0x2a3751){if(_0x2a3751){_0x15bb0b=_0x2a3751['length'];if(!_0x1ce8b7[_0xa703('0x36')][_0xa703('0x3c')]('nolimit')){_0x2273a7[_0xa703('0x1d')]=qs[_0xa703('0x1d')](_0x1ce8b7[_0xa703('0x36')][_0xa703('0x1d')]);_0x2273a7[_0xa703('0x1c')]=qs[_0xa703('0x1c')](_0x1ce8b7[_0xa703('0x36')][_0xa703('0x1c')]);}return _0x3d3634['getSounds'](_0x2273a7);}})['then'](function(_0x351fe7){if(_0x351fe7){return _0x351fe7?{'count':_0x15bb0b,'rows':_0x351fe7}:null;}})[_0xa703('0x25')](respondWithResult(_0x235bc7,null))[_0xa703('0x49')](handleError(_0x235bc7,null));};
\ No newline at end of file
+var _0xa4b0=['filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','body','create','sequelize','transaction','mode','files','join','root','server/files/moh','directory','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','readdirSync','forEach','rmdirSync','Sequelize','message','Sound','findOne','converted_format','createdAt','format','%s.%s','basename','save_name','extname','symlinkSync','ValidationError','removeSound','id2','unlinkSync','pick','getSounds','eml-format','rimraf','mustache','util','path','sox','to-csv','ejs','fs-extra','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','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','get','MusicOnHolds','UserProfileResource','stack','send','index','map','VoiceMusicOnHold','rawAttributes','type','key','name','query','keys'];(function(_0x190a46,_0xe5b0e){var _0xba5779=function(_0x4be0a6){while(--_0x4be0a6){_0x190a46['push'](_0x190a46['shift']());}};_0xba5779(++_0xe5b0e);}(_0xa4b0,0x11d));var _0x0a4b=function(_0x1a309e,_0x25860d){_0x1a309e=_0x1a309e-0x0;var _0x13995e=_0xa4b0[_0x1a309e];return _0x13995e;};'use strict';var emlformat=require(_0x0a4b('0x0'));var rimraf=require(_0x0a4b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0a4b('0x2'));var util=require(_0x0a4b('0x3'));var path=require(_0x0a4b('0x4'));var sox=require(_0x0a4b('0x5'));var csv=require(_0x0a4b('0x6'));var ejs=require(_0x0a4b('0x7'));var fs=require('fs');var fs_extra=require(_0x0a4b('0x8'));var _=require('lodash');var squel=require(_0x0a4b('0x9'));var crypto=require(_0x0a4b('0xa'));var jsforce=require(_0x0a4b('0xb'));var deskjs=require(_0x0a4b('0xc'));var toCsv=require(_0x0a4b('0x6'));var querystring=require(_0x0a4b('0xd'));var Papa=require(_0x0a4b('0xe'));var Redis=require('ioredis');var authService=require(_0x0a4b('0xf'));var qs=require(_0x0a4b('0x10'));var as=require(_0x0a4b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0a4b('0x12'))(_0x0a4b('0x13'));var utils=require('../../config/utils');var config=require(_0x0a4b('0x14'));var licenseUtil=require(_0x0a4b('0x15'));var db=require(_0x0a4b('0x16'))['db'];function respondWithStatusCode(_0x9a5d21,_0x6db734){_0x6db734=_0x6db734||0xcc;return function(_0x52c3e4){if(_0x52c3e4){return _0x9a5d21[_0x0a4b('0x17')](_0x6db734);}return _0x9a5d21[_0x0a4b('0x18')](_0x6db734)[_0x0a4b('0x19')]();};}function respondWithResult(_0x24936e,_0x1d36ae){_0x1d36ae=_0x1d36ae||0xc8;return function(_0x225808){if(_0x225808){return _0x24936e[_0x0a4b('0x18')](_0x1d36ae)[_0x0a4b('0x1a')](_0x225808);}};}function respondWithFilteredResult(_0xced051,_0x11c3dd){return function(_0x1aa4ae){if(_0x1aa4ae){var _0x56f769=typeof _0x11c3dd[_0x0a4b('0x1b')]===_0x0a4b('0x1c')&&typeof _0x11c3dd['limit']===_0x0a4b('0x1c');var _0x49d469=_0x1aa4ae['count'];var _0x22b165=_0x56f769?0x0:_0x11c3dd['offset'];var _0x465090=_0x56f769?_0x1aa4ae[_0x0a4b('0x1d')]:_0x11c3dd[_0x0a4b('0x1b')]+_0x11c3dd[_0x0a4b('0x1e')];var _0x4f3dd8;if(_0x465090>=_0x49d469){_0x465090=_0x49d469;_0x4f3dd8=0xc8;}else{_0x4f3dd8=0xce;}_0xced051['status'](_0x4f3dd8);return _0xced051[_0x0a4b('0x1f')](_0x0a4b('0x20'),_0x22b165+'-'+_0x465090+'/'+_0x49d469)[_0x0a4b('0x1a')](_0x1aa4ae);}return null;};}function patchUpdates(_0x5e039c){return function(_0x5735b4){try{jsonpatch[_0x0a4b('0x21')](_0x5735b4,_0x5e039c,!![]);}catch(_0x390beb){return BPromise['reject'](_0x390beb);}return _0x5735b4[_0x0a4b('0x22')]();};}function saveUpdates(_0x5dc814,_0x10d597){return function(_0x17421c){if(_0x17421c){return _0x17421c[_0x0a4b('0x23')](_0x5dc814)[_0x0a4b('0x24')](function(_0x25eaa3){return _0x25eaa3;});}return null;};}function removeEntity(_0x218eb0,_0x311984){return function(_0xaddb9a){if(_0xaddb9a){return _0xaddb9a['destroy']()[_0x0a4b('0x24')](function(){var _0x3b7adb=_0xaddb9a[_0x0a4b('0x25')]({'plain':!![]});var _0x1f13ea=_0x0a4b('0x26');return db[_0x0a4b('0x27')]['destroy']({'where':{'type':_0x1f13ea,'resourceId':_0x3b7adb['id']}})[_0x0a4b('0x24')](function(){return _0xaddb9a;});})[_0x0a4b('0x24')](function(){_0x218eb0['status'](0xcc)[_0x0a4b('0x19')]();});}};}function handleEntityNotFound(_0x15e07c,_0x32588f){return function(_0x14fa91){if(!_0x14fa91){_0x15e07c['sendStatus'](0x194);}return _0x14fa91;};}function handleError(_0x2ba217,_0xec95b1){_0xec95b1=_0xec95b1||0x1f4;return function(_0x5e30cd){logger['error'](_0x5e30cd[_0x0a4b('0x28')]);if(_0x5e30cd['name']){delete _0x5e30cd['name'];}_0x2ba217[_0x0a4b('0x18')](_0xec95b1)[_0x0a4b('0x29')](_0x5e30cd);};}exports[_0x0a4b('0x2a')]=function(_0x479adf,_0x52856c){var _0x318477={},_0x4862fa={},_0x30d285={'count':0x0,'rows':[]};var _0x2fc8c2=_[_0x0a4b('0x2b')](db[_0x0a4b('0x2c')][_0x0a4b('0x2d')],function(_0x16a5a3){return{'name':_0x16a5a3['fieldName'],'type':_0x16a5a3[_0x0a4b('0x2e')][_0x0a4b('0x2f')]};});_0x4862fa['model']=_[_0x0a4b('0x2b')](_0x2fc8c2,_0x0a4b('0x30'));_0x4862fa[_0x0a4b('0x31')]=_[_0x0a4b('0x32')](_0x479adf['query']);_0x4862fa[_0x0a4b('0x33')]=_[_0x0a4b('0x34')](_0x4862fa[_0x0a4b('0x35')],_0x4862fa[_0x0a4b('0x31')]);_0x318477[_0x0a4b('0x36')]=_[_0x0a4b('0x34')](_0x4862fa['model'],qs['fields'](_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x37')]));_0x318477[_0x0a4b('0x36')]=_0x318477['attributes'][_0x0a4b('0x38')]?_0x318477['attributes']:_0x4862fa['model'];if(!_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x39')](_0x0a4b('0x3a'))){_0x318477[_0x0a4b('0x1e')]=qs['limit'](_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x1e')]);_0x318477[_0x0a4b('0x1b')]=qs[_0x0a4b('0x1b')](_0x479adf['query'][_0x0a4b('0x1b')]);}_0x318477[_0x0a4b('0x3b')]=qs[_0x0a4b('0x3c')](_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x3c')]);delete _0x479adf['query']['sort'];_0x318477[_0x0a4b('0x3d')]=qs['filters'](_['pick'](_0x479adf[_0x0a4b('0x31')],_0x4862fa[_0x0a4b('0x33')]),_0x2fc8c2);if(_0x479adf['query']['filter']){_0x318477[_0x0a4b('0x3d')]=_[_0x0a4b('0x3e')](_0x318477[_0x0a4b('0x3d')],{'$or':_['map'](_0x2fc8c2,function(_0x47f4e6){if(_0x47f4e6[_0x0a4b('0x2e')]!==_0x0a4b('0x3f')){var _0x4377a7={};_0x4377a7[_0x47f4e6['name']]={'$like':'%'+_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x40')]+'%'};return _0x4377a7;}})});}_0x318477=_[_0x0a4b('0x3e')]({},_0x318477,_0x479adf[_0x0a4b('0x41')]);var _0x36b552={'where':_0x318477[_0x0a4b('0x3d')]};return db['VoiceMusicOnHold'][_0x0a4b('0x1d')](_0x36b552)[_0x0a4b('0x24')](function(_0x991039){_0x30d285['count']=_0x991039;if(_0x479adf[_0x0a4b('0x31')][_0x0a4b('0x42')]){_0x318477[_0x0a4b('0x43')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x0a4b('0x44')](_0x318477);})[_0x0a4b('0x24')](function(_0x35579a){_0x30d285[_0x0a4b('0x45')]=_0x35579a;return _0x30d285;})['then'](respondWithFilteredResult(_0x52856c,_0x318477))[_0x0a4b('0x46')](handleError(_0x52856c,null));};exports[_0x0a4b('0x47')]=function(_0xd26daf,_0xd91d74){var _0x32e553={'raw':![],'where':{'id':_0xd26daf[_0x0a4b('0x48')]['id']}},_0x11bde1={};_0x11bde1['model']=_[_0x0a4b('0x32')](db[_0x0a4b('0x2c')]['rawAttributes']);_0x11bde1['query']=_[_0x0a4b('0x32')](_0xd26daf[_0x0a4b('0x31')]);_0x11bde1[_0x0a4b('0x33')]=_[_0x0a4b('0x34')](_0x11bde1[_0x0a4b('0x35')],_0x11bde1['query']);_0x32e553[_0x0a4b('0x36')]=_[_0x0a4b('0x34')](_0x11bde1[_0x0a4b('0x35')],qs[_0x0a4b('0x37')](_0xd26daf[_0x0a4b('0x31')]['fields']));_0x32e553[_0x0a4b('0x36')]=_0x32e553[_0x0a4b('0x36')][_0x0a4b('0x38')]?_0x32e553[_0x0a4b('0x36')]:_0x11bde1[_0x0a4b('0x35')];if(_0xd26daf[_0x0a4b('0x31')][_0x0a4b('0x42')]){_0x32e553[_0x0a4b('0x43')]=[{'all':!![]}];}_0x32e553=_[_0x0a4b('0x3e')]({},_0x32e553,_0xd26daf[_0x0a4b('0x41')]);return db[_0x0a4b('0x2c')][_0x0a4b('0x49')](_0x32e553)[_0x0a4b('0x24')](handleEntityNotFound(_0xd91d74,null))[_0x0a4b('0x24')](respondWithResult(_0xd91d74,null))['catch'](handleError(_0xd91d74,null));};exports[_0x0a4b('0x23')]=function(_0x21d892,_0x503c6b){if(_0x21d892[_0x0a4b('0x4a')]['id']){delete _0x21d892['body']['id'];}return db[_0x0a4b('0x2c')][_0x0a4b('0x49')]({'where':{'id':_0x21d892[_0x0a4b('0x48')]['id']}})[_0x0a4b('0x24')](handleEntityNotFound(_0x503c6b,null))['then'](saveUpdates(_0x21d892['body'],null))[_0x0a4b('0x24')](respondWithResult(_0x503c6b,null))[_0x0a4b('0x46')](handleError(_0x503c6b,null));};exports[_0x0a4b('0x4b')]=function(_0x8a0e51,_0x3fddd8,_0x49dde9){return db[_0x0a4b('0x4c')][_0x0a4b('0x4d')](function(_0x5d8995){if(_0x8a0e51[_0x0a4b('0x4a')][_0x0a4b('0x4e')]===_0x0a4b('0x4f')){_0x8a0e51['body']['directory']=path[_0x0a4b('0x50')](config[_0x0a4b('0x51')],_0x0a4b('0x52'),_0x8a0e51[_0x0a4b('0x4a')][_0x0a4b('0x30')]);}return db[_0x0a4b('0x2c')]['create'](_0x8a0e51[_0x0a4b('0x4a')],{'transaction':_0x5d8995})[_0x0a4b('0x24')](function(_0x1a18e2){if(_0x8a0e51[_0x0a4b('0x4a')][_0x0a4b('0x4e')]===_0x0a4b('0x4f')){fs['mkdirSync'](_0x1a18e2[_0x0a4b('0x53')],parseInt(_0x0a4b('0x54'),0x8));}var _0x31a15d=_0x8a0e51[_0x0a4b('0x55')][_0x0a4b('0x25')]({'plain':!![]});if(!_0x31a15d)throw new Error(_0x0a4b('0x56'));if(_0x31a15d[_0x0a4b('0x57')]===_0x0a4b('0x55')){var _0x26f679=_0x1a18e2[_0x0a4b('0x25')]({'plain':!![]});return db[_0x0a4b('0x58')]['find']({'where':{'name':_0x0a4b('0x26'),'userProfileId':_0x31a15d['userProfileId']},'raw':!![]})[_0x0a4b('0x24')](function(_0x385538){if(_0x385538&&_0x385538['autoAssociation']===0x0){return db[_0x0a4b('0x27')][_0x0a4b('0x4b')]({'name':_0x26f679['name'],'resourceId':_0x26f679['id'],'type':_0x385538[_0x0a4b('0x30')],'sectionId':_0x385538['id']},{})[_0x0a4b('0x24')](function(){return _0x1a18e2;});}else{return _0x1a18e2;}})['catch'](function(_0x2f9aa7){logger['error'](_0x0a4b('0x59'),_0x2f9aa7);});}return _0x1a18e2;});})[_0x0a4b('0x24')](respondWithResult(_0x3fddd8,0xc9))[_0x0a4b('0x46')](handleError(_0x3fddd8,null));};exports[_0x0a4b('0x5a')]=function(_0x3d30a7,_0x191323,_0x2e85f6){var _0x667589;return db[_0x0a4b('0x2c')][_0x0a4b('0x49')]({'where':{'id':_0x3d30a7[_0x0a4b('0x48')]['id']}})[_0x0a4b('0x24')](function(_0x28255e){if(_0x28255e){return db['sequelize'][_0x0a4b('0x4d')](function(_0x2ef7ca){return _0x28255e[_0x0a4b('0x5a')]({'transaction':_0x2ef7ca,'raw':!![]})[_0x0a4b('0x24')](function(_0x26a042){if(_0x26a042['directory']){fs[_0x0a4b('0x5b')](_0x26a042[_0x0a4b('0x53')])[_0x0a4b('0x5c')](function(_0x4c3dc7){fs['unlinkSync'](path[_0x0a4b('0x50')](_0x26a042[_0x0a4b('0x53')],_0x4c3dc7));});fs[_0x0a4b('0x5d')](_0x26a042[_0x0a4b('0x53')]);}return _0x26a042;});})[_0x0a4b('0x46')](function(_0xcbd240){throw new db[(_0x0a4b('0x5e'))]['ValidationError'](_0xcbd240[_0x0a4b('0x5f')]);});}})[_0x0a4b('0x24')](handleEntityNotFound(_0x191323,null))[_0x0a4b('0x24')](removeEntity(_0x191323,null))[_0x0a4b('0x46')](handleError(_0x191323,null));};exports['addSound']=function(_0x5d0d0e,_0x68f10c,_0x5de17c){return db[_0x0a4b('0x4c')][_0x0a4b('0x4d')](function(_0x1d95c6){var _0x3ac361;return db[_0x0a4b('0x2c')][_0x0a4b('0x49')]({'where':{'id':_0x5d0d0e[_0x0a4b('0x48')]['id']}})[_0x0a4b('0x24')](function(_0x32ec1e){if(_0x32ec1e){_0x3ac361=_0x32ec1e;return _0x32ec1e['addSound'](_0x5d0d0e[_0x0a4b('0x4a')]['id'],{'transaction':_0x1d95c6});}})[_0x0a4b('0x24')](function(_0x42a7aa){if(_0x42a7aa){return db[_0x0a4b('0x60')][_0x0a4b('0x61')]({'where':{'id':_0x5d0d0e[_0x0a4b('0x4a')]['id']},'attributes':['id','name','save_name',_0x0a4b('0x62'),_0x0a4b('0x63')],'raw':!![]});}})['then'](function(_0x1500f4){if(_0x1500f4){var _0x2831d2=path[_0x0a4b('0x50')](config[_0x0a4b('0x51')],'server/files/sounds/converted',util[_0x0a4b('0x64')](_0x0a4b('0x65'),path[_0x0a4b('0x66')](_0x1500f4[_0x0a4b('0x67')],path[_0x0a4b('0x68')](_0x1500f4[_0x0a4b('0x67')])),_0x1500f4[_0x0a4b('0x62')]));var _0x1d0d79=path['join'](config['root'],_0x0a4b('0x52'),_0x3ac361[_0x0a4b('0x30')],util['format'](_0x0a4b('0x65'),_0x1500f4[_0x0a4b('0x30')],_0x1500f4[_0x0a4b('0x62')]));fs[_0x0a4b('0x69')](_0x2831d2,_0x1d0d79);return _0x1500f4;}})['catch'](function(_0x2dd46d){throw new db[(_0x0a4b('0x5e'))][(_0x0a4b('0x6a'))](_0x2dd46d['message']);});})[_0x0a4b('0x24')](handleEntityNotFound(_0x68f10c,null))[_0x0a4b('0x24')](respondWithResult(_0x68f10c,0xc9))['catch'](handleError(_0x68f10c,null));};exports[_0x0a4b('0x6b')]=function(_0x130439,_0x28f9ec,_0x59c9ca){return db['sequelize']['transaction'](function(_0x88a906){var _0x4e0379;return db[_0x0a4b('0x2c')][_0x0a4b('0x61')]({'where':{'id':_0x130439[_0x0a4b('0x48')]['id']}})[_0x0a4b('0x24')](handleEntityNotFound(_0x28f9ec,null))[_0x0a4b('0x24')](function(_0x5f3ff9){if(_0x5f3ff9){_0x4e0379=_0x5f3ff9;return _0x5f3ff9[_0x0a4b('0x6b')](_0x130439[_0x0a4b('0x48')][_0x0a4b('0x6c')]);}})['then'](function(_0xdf4e46){if(_0xdf4e46){return db['Sound'][_0x0a4b('0x61')]({'where':{'id':_0x130439['params']['id2']},'attributes':['id','name','save_name',_0x0a4b('0x62'),_0x0a4b('0x63')],'raw':!![]});}})[_0x0a4b('0x24')](function(_0x47aa84){if(_0x47aa84){fs[_0x0a4b('0x6d')](path[_0x0a4b('0x50')](_0x4e0379[_0x0a4b('0x53')],util[_0x0a4b('0x64')]('%s.%s',_0x47aa84['name'],_0x47aa84[_0x0a4b('0x62')])));return _0x47aa84;}})[_0x0a4b('0x46')](function(_0x178b28){throw new db[(_0x0a4b('0x5e'))]['ValidationError'](_0x178b28[_0x0a4b('0x5f')]);});})[_0x0a4b('0x24')](handleEntityNotFound(_0x28f9ec,null))[_0x0a4b('0x24')](respondWithStatusCode(_0x28f9ec,0xcc))[_0x0a4b('0x46')](handleError(_0x28f9ec,null));};exports['getSounds']=function(_0x36212b,_0x231cd7,_0x418e36){var _0x4541e9={};var _0x360c05={};var _0x3ec409;var _0x1d6708;return db['VoiceMusicOnHold'][_0x0a4b('0x61')]({'where':{'id':_0x36212b[_0x0a4b('0x48')]['id']}})[_0x0a4b('0x24')](handleEntityNotFound(_0x231cd7,null))[_0x0a4b('0x24')](function(_0x37babe){if(_0x37babe){_0x3ec409=_0x37babe;_0x360c05[_0x0a4b('0x35')]=_['keys'](db[_0x0a4b('0x60')][_0x0a4b('0x2d')]);_0x360c05['query']=_[_0x0a4b('0x32')](_0x36212b[_0x0a4b('0x31')]);_0x360c05[_0x0a4b('0x33')]=_[_0x0a4b('0x34')](_0x360c05[_0x0a4b('0x35')],_0x360c05['query']);_0x4541e9[_0x0a4b('0x36')]=_[_0x0a4b('0x34')](_0x360c05[_0x0a4b('0x35')],qs[_0x0a4b('0x37')](_0x36212b['query'][_0x0a4b('0x37')]));_0x4541e9[_0x0a4b('0x36')]=_0x4541e9['attributes'][_0x0a4b('0x38')]?_0x4541e9[_0x0a4b('0x36')]:_0x360c05['model'];_0x4541e9[_0x0a4b('0x3b')]=qs[_0x0a4b('0x3c')](_0x36212b[_0x0a4b('0x31')]['sort']);_0x4541e9[_0x0a4b('0x3d')]=qs[_0x0a4b('0x33')](_[_0x0a4b('0x6e')](_0x36212b['query'],_0x360c05[_0x0a4b('0x33')]));if(_0x36212b[_0x0a4b('0x31')]['filter']){_0x4541e9[_0x0a4b('0x3d')]=_['merge'](_0x4541e9[_0x0a4b('0x3d')],{'$or':_[_0x0a4b('0x2b')](_0x4541e9['attributes'],function(_0x4854a3){var _0x3b083f={};_0x3b083f[_0x4854a3]={'$like':'%'+_0x36212b[_0x0a4b('0x31')][_0x0a4b('0x40')]+'%'};return _0x3b083f;})});}_0x4541e9=_[_0x0a4b('0x3e')]({},_0x4541e9,_0x36212b[_0x0a4b('0x41')]);return _0x3ec409[_0x0a4b('0x6f')](_0x4541e9);}})['then'](function(_0x3789b9){if(_0x3789b9){_0x1d6708=_0x3789b9['length'];if(!_0x36212b[_0x0a4b('0x31')]['hasOwnProperty'](_0x0a4b('0x3a'))){_0x4541e9[_0x0a4b('0x1e')]=qs['limit'](_0x36212b[_0x0a4b('0x31')][_0x0a4b('0x1e')]);_0x4541e9[_0x0a4b('0x1b')]=qs['offset'](_0x36212b['query'][_0x0a4b('0x1b')]);}return _0x3ec409[_0x0a4b('0x6f')](_0x4541e9);}})[_0x0a4b('0x24')](function(_0x2d656c){if(_0x2d656c){return _0x2d656c?{'count':_0x1d6708,'rows':_0x2d656c}:null;}})[_0x0a4b('0x24')](respondWithResult(_0x231cd7,null))[_0x0a4b('0x46')](handleError(_0x231cd7,null));};
\ No newline at end of file
index 40333cf..8a6f052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e53=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./voiceMusicOnHold.attributes','define','voice_musiconhold','lodash'];(function(_0x523adf,_0x3e1620){var _0x283870=function(_0xa0e816){while(--_0xa0e816){_0x523adf['push'](_0x523adf['shift']());}};_0x283870(++_0x3e1620);}(_0x0e53,0x15d));var _0x30e5=function(_0x6acf8e,_0x1c87b3){_0x6acf8e=_0x6acf8e-0x0;var _0x52a4ba=_0x0e53[_0x6acf8e];return _0x52a4ba;};'use strict';var _=require(_0x30e5('0x0'));var util=require('util');var logger=require(_0x30e5('0x1'))(_0x30e5('0x2'));var moment=require(_0x30e5('0x3'));var BPromise=require(_0x30e5('0x4'));var rp=require(_0x30e5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x30e5('0x6'));var config=require('../../config/environment');var attributes=require(_0x30e5('0x7'));module['exports']=function(_0x34acf5,_0x5d7ed8){return _0x34acf5[_0x30e5('0x8')]('VoiceMusicOnHold',attributes,{'tableName':_0x30e5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4934=['VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define'];(function(_0x1feb65,_0x59d59b){var _0xb2dbb3=function(_0x13c353){while(--_0x13c353){_0x1feb65['push'](_0x1feb65['shift']());}};_0xb2dbb3(++_0x59d59b);}(_0x4934,0x10c));var _0x4493=function(_0x252c6d,_0x5a69be){_0x252c6d=_0x252c6d-0x0;var _0x53ec8f=_0x4934[_0x252c6d];return _0x53ec8f;};'use strict';var _=require(_0x4493('0x0'));var util=require(_0x4493('0x1'));var logger=require(_0x4493('0x2'))(_0x4493('0x3'));var moment=require(_0x4493('0x4'));var BPromise=require('bluebird');var rp=require(_0x4493('0x5'));var fs=require('fs');var path=require(_0x4493('0x6'));var rimraf=require(_0x4493('0x7'));var config=require(_0x4493('0x8'));var attributes=require(_0x4493('0x9'));module[_0x4493('0xa')]=function(_0x523b87,_0x2383eb){return _0x523b87[_0x4493('0xb')](_0x4493('0xc'),attributes,{'tableName':_0x4493('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7bab5e..2991e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\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(_0x3a9763,_0x2687d4){var _0x1645bc=function(_0x295295){while(--_0x295295){_0x3a9763['push'](_0x3a9763['shift']());}};_0x1645bc(++_0x2687d4);}(_0xe706,0xa3));var _0x6e70=function(_0x573773,_0x36caa2){_0x573773=_0x573773-0x0;var _0x2b56af=_0xe706[_0x573773];return _0x2b56af;};'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']('VoiceMusicOnHold,\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']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3faa0d,_0x1fd28d){var _0x48c083=function(_0x40b05a){while(--_0x40b05a){_0x3faa0d['push'](_0x3faa0d['shift']());}};_0x48c083(++_0x1fd28d);}(_0x70e0,0x17b));var _0x070e=function(_0x18a2bb,_0x321df9){_0x18a2bb=_0x18a2bb-0x0;var _0x57b3d2=_0x70e0[_0x18a2bb];return _0x57b3d2;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 5436f00..152a6d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7429=['describe','isAuthenticated','show','/:id/teams','getTeams','post','/:id/users','addTeams','put','/:id','update','destroy','delete','removeAgents','exports','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','/describe'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x7429,0x6f));var _0x9742=function(_0x377891,_0x147b5d){_0x377891=_0x377891-0x0;var _0x21a539=_0x7429[_0x377891];return _0x21a539;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9742('0x0'));var timeout=require('connect-timeout');var express=require(_0x9742('0x1'));var router=express[_0x9742('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x9742('0x3'));var interaction=require(_0x9742('0x4'));var config=require(_0x9742('0x5'));var controller=require(_0x9742('0x6'));router[_0x9742('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9742('0x7')](_0x9742('0x8'),auth['isAuthenticated'](),controller[_0x9742('0x9')]);router[_0x9742('0x7')]('/:id',auth[_0x9742('0xa')](),controller[_0x9742('0xb')]);router[_0x9742('0x7')]('/:id/users',auth[_0x9742('0xa')](),controller['getAgents']);router[_0x9742('0x7')](_0x9742('0xc'),auth['isAuthenticated'](),controller[_0x9742('0xd')]);router[_0x9742('0xe')]('/',auth[_0x9742('0xa')](),controller['create']);router[_0x9742('0xe')](_0x9742('0xf'),auth[_0x9742('0xa')](),controller['addAgents']);router[_0x9742('0xe')](_0x9742('0xc'),auth['isAuthenticated'](),controller[_0x9742('0x10')]);router[_0x9742('0x11')](_0x9742('0x12'),auth[_0x9742('0xa')](),controller[_0x9742('0x13')]);router['delete'](_0x9742('0x12'),auth['isAuthenticated'](),controller[_0x9742('0x14')]);router[_0x9742('0x15')](_0x9742('0xf'),auth[_0x9742('0xa')](),controller[_0x9742('0x16')]);router['delete']('/:id/teams',auth[_0x9742('0xa')](),controller['removeTeams']);module[_0x9742('0x17')]=router;
\ No newline at end of file
+var _0xa61f=['post','create','addTeams','put','update','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','/:id','show','/:id/users','/:id/teams','getTeams'];(function(_0x5e8fc,_0x1ccc06){var _0x41c58c=function(_0x495f2c){while(--_0x495f2c){_0x5e8fc['push'](_0x5e8fc['shift']());}};_0x41c58c(++_0x1ccc06);}(_0xa61f,0x14d));var _0xfa61=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa61f[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0xfa61('0x0'));var util=require(_0xfa61('0x1'));var path=require(_0xfa61('0x2'));var timeout=require(_0xfa61('0x3'));var express=require(_0xfa61('0x4'));var router=express[_0xfa61('0x5')]();var fs_extra=require(_0xfa61('0x6'));var auth=require(_0xfa61('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xfa61('0x8'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0xfa61('0x9')](),controller[_0xfa61('0xa')]);router[_0xfa61('0xb')](_0xfa61('0xc'),auth[_0xfa61('0x9')](),controller['describe']);router[_0xfa61('0xb')](_0xfa61('0xd'),auth[_0xfa61('0x9')](),controller[_0xfa61('0xe')]);router['get'](_0xfa61('0xf'),auth[_0xfa61('0x9')](),controller['getAgents']);router[_0xfa61('0xb')](_0xfa61('0x10'),auth[_0xfa61('0x9')](),controller[_0xfa61('0x11')]);router[_0xfa61('0x12')]('/',auth['isAuthenticated'](),controller[_0xfa61('0x13')]);router[_0xfa61('0x12')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xfa61('0x12')]('/:id/teams',auth['isAuthenticated'](),controller[_0xfa61('0x14')]);router[_0xfa61('0x15')](_0xfa61('0xd'),auth['isAuthenticated'](),controller[_0xfa61('0x16')]);router[_0xfa61('0x17')](_0xfa61('0xd'),auth[_0xfa61('0x9')](),controller[_0xfa61('0x18')]);router[_0xfa61('0x17')](_0xfa61('0xf'),auth[_0xfa61('0x9')](),controller['removeAgents']);router['delete'](_0xfa61('0x10'),auth[_0xfa61('0x9')](),controller[_0xfa61('0x19')]);module[_0xfa61('0x1a')]=router;
\ No newline at end of file
index 7024fd1..7169257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa54e=['exports','STRING','name','system-','getDataValue','sequelize'];(function(_0x33a7c2,_0x1209be){var _0x38f16a=function(_0x34dcf0){while(--_0x34dcf0){_0x33a7c2['push'](_0x33a7c2['shift']());}};_0x38f16a(++_0x1209be);}(_0xa54e,0x1d3));var _0xea54=function(_0x119e7a,_0x3949d3){_0x119e7a=_0x119e7a-0x0;var _0x1fb90a=_0xa54e[_0x119e7a];return _0x1fb90a;};'use strict';var Sequelize=require(_0xea54('0x0'));module[_0xea54('0x1')]={'name':{'type':Sequelize[_0xea54('0x2')],'allowNull':![],'unique':_0xea54('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0xa9032a){return _0xea54('0x4')+this[_0xea54('0x5')](_0xea54('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xea54('0x2')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x07d3=['STRING','name','VIRTUAL','system-','getDataValue','INTEGER','sequelize','exports'];(function(_0x5b47d9,_0x1327ce){var _0x4151f0=function(_0x24bda2){while(--_0x24bda2){_0x5b47d9['push'](_0x5b47d9['shift']());}};_0x4151f0(++_0x1327ce);}(_0x07d3,0x106));var _0x307d=function(_0x4e50a5,_0x8e0f5){_0x4e50a5=_0x4e50a5-0x0;var _0x285c2b=_0x07d3[_0x4e50a5];return _0x285c2b;};'use strict';var Sequelize=require(_0x307d('0x0'));module[_0x307d('0x1')]={'name':{'type':Sequelize[_0x307d('0x2')],'allowNull':![],'unique':_0x307d('0x3')},'prefix':{'type':Sequelize[_0x307d('0x4')],'get':function(_0x352cd9){return _0x307d('0x5')+this[_0x307d('0x6')](_0x307d('0x3'))+'-';}},'description':{'type':Sequelize[_0x307d('0x2')]},'callerIdAll':{'type':Sequelize[_0x307d('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x307d('0x7')]}};
\ No newline at end of file
index 3e99b77..1ef69b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','sort','pick','filter','where','type','VIRTUAL','merge','options','catch','show','params','fields','includeAll','find','describe','create','sequelize','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','system','description','Voice\x20Prefix\x20Extension','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','prefix','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','push','No\x20callerid\x20available','goto','${EXTEN:','charAt','transaction','addAgents','omit','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','order','getTeams','Team','nolimit','addTeams','User','Agents','online','voicePause','interface','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xb10b,0x12a));var _0xbb10=function(_0x77cbc3,_0x3f2d07){_0x77cbc3=_0x77cbc3-0x0;var _0x263ee5=_0xb10b[_0x77cbc3];return _0x263ee5;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];config[_0xbb10('0x18')]=_[_0xbb10('0x19')](config[_0xbb10('0x18')],{'host':_0xbb10('0x1a'),'port':0x18eb});var socket=require(_0xbb10('0x1b'))(new Redis(config['redis']));require(_0xbb10('0x1c'))[_0xbb10('0x1d')](socket);function respondWithStatusCode(_0x45b9d6,_0x17fd46){_0x17fd46=_0x17fd46||0xcc;return function(_0x3df17b){if(_0x3df17b){return _0x45b9d6[_0xbb10('0x1e')](_0x17fd46);}return _0x45b9d6[_0xbb10('0x1f')](_0x17fd46)[_0xbb10('0x20')]();};}function respondWithResult(_0x3e26f4,_0x2b184e){_0x2b184e=_0x2b184e||0xc8;return function(_0x4a2bfc){if(_0x4a2bfc){return _0x3e26f4[_0xbb10('0x1f')](_0x2b184e)[_0xbb10('0x21')](_0x4a2bfc);}};}function respondWithFilteredResult(_0x133ac2,_0x42db98){return function(_0x378da8){if(_0x378da8){var _0x1682a4=typeof _0x42db98[_0xbb10('0x22')]===_0xbb10('0x23')&&typeof _0x42db98[_0xbb10('0x24')]===_0xbb10('0x23');var _0x48b6e9=_0x378da8[_0xbb10('0x25')];var _0x19f48d=_0x1682a4?0x0:_0x42db98[_0xbb10('0x22')];var _0x109908=_0x1682a4?_0x378da8[_0xbb10('0x25')]:_0x42db98[_0xbb10('0x22')]+_0x42db98['limit'];var _0x12f888;if(_0x109908>=_0x48b6e9){_0x109908=_0x48b6e9;_0x12f888=0xc8;}else{_0x12f888=0xce;}_0x133ac2[_0xbb10('0x1f')](_0x12f888);return _0x133ac2['set']('Content-Range',_0x19f48d+'-'+_0x109908+'/'+_0x48b6e9)[_0xbb10('0x21')](_0x378da8);}return null;};}function patchUpdates(_0x311abe){return function(_0x2e911d){try{jsonpatch[_0xbb10('0x26')](_0x2e911d,_0x311abe,!![]);}catch(_0x445761){return BPromise[_0xbb10('0x27')](_0x445761);}return _0x2e911d[_0xbb10('0x28')]();};}function saveUpdates(_0x436104,_0x7f2377){return function(_0x395404){if(_0x395404){return _0x395404[_0xbb10('0x29')](_0x436104)[_0xbb10('0x2a')](function(_0x537898){return _0x537898;});}return null;};}function removeEntity(_0x4fedac,_0x4fb5e0){return function(_0xc93a04){if(_0xc93a04){return _0xc93a04[_0xbb10('0x2b')]()[_0xbb10('0x2a')](function(){var _0x4e25ff=_0xc93a04[_0xbb10('0x2c')]({'plain':!![]});var _0x24d586=_0xbb10('0x2d');return db[_0xbb10('0x2e')][_0xbb10('0x2b')]({'where':{'type':_0x24d586,'resourceId':_0x4e25ff['id']}})[_0xbb10('0x2a')](function(){return _0xc93a04;});})[_0xbb10('0x2a')](function(){_0x4fedac['status'](0xcc)[_0xbb10('0x20')]();});}};}function handleEntityNotFound(_0x21ac54,_0xfc3595){return function(_0x2e0249){if(!_0x2e0249){_0x21ac54[_0xbb10('0x1e')](0x194);}return _0x2e0249;};}function handleError(_0x2ff4c1,_0x5d5c80){_0x5d5c80=_0x5d5c80||0x1f4;return function(_0x221624){logger['error'](_0x221624[_0xbb10('0x2f')]);if(_0x221624['name']){delete _0x221624[_0xbb10('0x30')];}_0x2ff4c1[_0xbb10('0x1f')](_0x5d5c80)[_0xbb10('0x31')](_0x221624);};}exports['index']=function(_0x518d47,_0x4c3744){var _0x34f65e={},_0x4f590d={},_0x359ad4={'count':0x0,'rows':[]};var _0x37dde7=_[_0xbb10('0x32')](db[_0xbb10('0x33')][_0xbb10('0x34')],function(_0x138bc6){return{'name':_0x138bc6[_0xbb10('0x35')],'type':_0x138bc6['type'][_0xbb10('0x36')]};});_0x4f590d[_0xbb10('0x37')]=_[_0xbb10('0x32')](_0x37dde7,_0xbb10('0x30'));_0x4f590d[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0x518d47[_0xbb10('0x38')]);_0x4f590d[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x4f590d['model'],_0x4f590d[_0xbb10('0x38')]);_0x34f65e[_0xbb10('0x3c')]=_[_0xbb10('0x3b')](_0x4f590d[_0xbb10('0x37')],qs['fields'](_0x518d47[_0xbb10('0x38')]['fields']));_0x34f65e['attributes']=_0x34f65e[_0xbb10('0x3c')][_0xbb10('0x3d')]?_0x34f65e[_0xbb10('0x3c')]:_0x4f590d[_0xbb10('0x37')];if(!_0x518d47[_0xbb10('0x38')][_0xbb10('0x3e')]('nolimit')){_0x34f65e[_0xbb10('0x24')]=qs[_0xbb10('0x24')](_0x518d47['query']['limit']);_0x34f65e['offset']=qs[_0xbb10('0x22')](_0x518d47[_0xbb10('0x38')][_0xbb10('0x22')]);}_0x34f65e['order']=qs[_0xbb10('0x3f')](_0x518d47[_0xbb10('0x38')][_0xbb10('0x3f')]);_0x34f65e['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0x518d47[_0xbb10('0x38')],_0x4f590d[_0xbb10('0x3a')]),_0x37dde7);if(_0x518d47['query'][_0xbb10('0x41')]){_0x34f65e[_0xbb10('0x42')]=_['merge'](_0x34f65e[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x37dde7,function(_0x44d6ae){if(_0x44d6ae[_0xbb10('0x43')]!==_0xbb10('0x44')){var _0x185a52={};_0x185a52[_0x44d6ae['name']]={'$like':'%'+_0x518d47[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0x185a52;}})});}_0x34f65e=_[_0xbb10('0x45')]({},_0x34f65e,_0x518d47[_0xbb10('0x46')]);var _0x4943d9={'where':_0x34f65e[_0xbb10('0x42')]};return db[_0xbb10('0x33')][_0xbb10('0x25')](_0x4943d9)[_0xbb10('0x2a')](function(_0x5e2cfa){_0x359ad4[_0xbb10('0x25')]=_0x5e2cfa;if(_0x518d47[_0xbb10('0x38')]['includeAll']){_0x34f65e['include']=[{'all':!![]}];}return db[_0xbb10('0x33')]['findAll'](_0x34f65e);})[_0xbb10('0x2a')](function(_0x180933){_0x359ad4['rows']=_0x180933;return _0x359ad4;})[_0xbb10('0x2a')](respondWithFilteredResult(_0x4c3744,_0x34f65e))[_0xbb10('0x47')](handleError(_0x4c3744,null));};exports[_0xbb10('0x48')]=function(_0x5cf4f8,_0x2dd02b){var _0xebd70c={'raw':![],'where':{'id':_0x5cf4f8[_0xbb10('0x49')]['id']}},_0x3b9fdf={};_0x3b9fdf[_0xbb10('0x37')]=_[_0xbb10('0x39')](db[_0xbb10('0x33')][_0xbb10('0x34')]);_0x3b9fdf[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0x5cf4f8[_0xbb10('0x38')]);_0x3b9fdf[_0xbb10('0x3a')]=_['intersection'](_0x3b9fdf[_0xbb10('0x37')],_0x3b9fdf[_0xbb10('0x38')]);_0xebd70c['attributes']=_[_0xbb10('0x3b')](_0x3b9fdf[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0x5cf4f8[_0xbb10('0x38')][_0xbb10('0x4a')]));_0xebd70c[_0xbb10('0x3c')]=_0xebd70c[_0xbb10('0x3c')]['length']?_0xebd70c['attributes']:_0x3b9fdf[_0xbb10('0x37')];if(_0x5cf4f8[_0xbb10('0x38')][_0xbb10('0x4b')]){_0xebd70c['include']=[{'all':!![]}];}_0xebd70c=_['merge']({},_0xebd70c,_0x5cf4f8[_0xbb10('0x46')]);return db[_0xbb10('0x33')][_0xbb10('0x4c')](_0xebd70c)[_0xbb10('0x2a')](handleEntityNotFound(_0x2dd02b,null))[_0xbb10('0x2a')](respondWithResult(_0x2dd02b,null))[_0xbb10('0x47')](handleError(_0x2dd02b,null));};exports[_0xbb10('0x2b')]=function(_0x460788,_0x2626d8){return db[_0xbb10('0x33')]['find']({'where':{'id':_0x460788['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x2626d8,null))[_0xbb10('0x2a')](removeEntity(_0x2626d8,null))[_0xbb10('0x47')](handleError(_0x2626d8,null));};exports[_0xbb10('0x4d')]=function(_0x36aa7d,_0x440f9e){return db[_0xbb10('0x33')][_0xbb10('0x4d')]()[_0xbb10('0x2a')](respondWithResult(_0x440f9e,null))[_0xbb10('0x47')](handleError(_0x440f9e,null));};exports[_0xbb10('0x4e')]=function(_0x20e18a,_0x61e689){var _0x2e6fd9;return db[_0xbb10('0x4f')]['transaction'](function(_0x124052){return db['VoicePrefix'][_0xbb10('0x4e')](_0x20e18a[_0xbb10('0x50')],{'transaction':_0x124052})[_0xbb10('0x2a')](function(_0x3f27ce){_0x2e6fd9=_0x3f27ce[_0xbb10('0x2c')]({'plain':!![]});return db[_0xbb10('0x51')][_0xbb10('0x4c')]({'where':{'id':_0x2e6fd9[_0xbb10('0x52')]},'raw':!![]})[_0xbb10('0x2a')](function(_0x3d71e){return createVoicePrefixExtensions(_0x2e6fd9,_0x3d71e,_0x124052);});});})[_0xbb10('0x2a')](function(){var _0x1c2dce=_0x20e18a[_0xbb10('0x53')][_0xbb10('0x2c')]({'plain':!![]});if(!_0x1c2dce)throw new Error(_0xbb10('0x54'));if(_0x1c2dce['role']===_0xbb10('0x53')){var _0x466eb7=_0x2e6fd9;return db[_0xbb10('0x55')][_0xbb10('0x4c')]({'where':{'name':_0xbb10('0x2d'),'userProfileId':_0x1c2dce[_0xbb10('0x56')]},'raw':!![]})['then'](function(_0x120bda){if(_0x120bda&&_0x120bda[_0xbb10('0x57')]===0x0){return db[_0xbb10('0x2e')][_0xbb10('0x4e')]({'name':_0x466eb7[_0xbb10('0x30')],'resourceId':_0x466eb7['id'],'type':_0x120bda[_0xbb10('0x30')],'sectionId':_0x120bda['id']},{})[_0xbb10('0x2a')](function(){return _0x2e6fd9;});}else{return _0x2e6fd9;}})[_0xbb10('0x47')](function(_0x205e01){logger[_0xbb10('0x58')](_0xbb10('0x59'),_0x205e01);throw _0x205e01;});}return _0x2e6fd9;})[_0xbb10('0x2a')](respondWithResult(_0x61e689,null))[_0xbb10('0x47')](handleError(_0x61e689,null));};function Extension(_0x4e7fac,_0x4ea1a6,_0x16272d,_0x3e6338){this[_0xbb10('0x5a')]=_0xbb10('0x5b');this['exten']=_0x4e7fac;this['app']=_0x16272d;this[_0xbb10('0x43')]=_0xbb10('0x5c');this[_0xbb10('0x5d')]=_0xbb10('0x5e');this[_0xbb10('0x5f')]=_0x4ea1a6;this[_0xbb10('0x60')]=_0x3e6338;}function createVoicePrefixExtensions(_0x45c0dc,_0x4a5fb9,_0x117e84){return new BPromise(function(_0x216cff,_0x4917a5){var _0x5e03cb=new Extension(formatPrefixName(_0x45c0dc['prefix']),0x1,_0xbb10('0x61'),_0xbb10('0x62'));_0x5e03cb[_0xbb10('0x63')]=_0x45c0dc['id'];return db['VoiceExtension']['create'](_0x5e03cb,{'transaction':_0x117e84})['then'](function(_0x3ebc5f){var _0x249b33=_0x3ebc5f[_0xbb10('0x2c')]({'plain':!![]});var _0x4e9fbd=_[_0xbb10('0x32')](addVoicePrefixExtensions(_0x45c0dc,_0x4a5fb9),function(_0x13131c){_0x13131c['VoiceExtensionId']=_0x249b33['id'];_0x13131c['VoicePrefixId']=_0x45c0dc['id'];return _0x13131c;});return db[_0xbb10('0x51')][_0xbb10('0x64')](_0x4e9fbd,{'transaction':_0x117e84})[_0xbb10('0x2a')](function(_0x237246){if(!_0x237246){return _0x4917a5('Extensions\x20creation\x20failed');}else{return _0x216cff(_0x237246);}})[_0xbb10('0x47')](function(_0xec48ac){return _0x4917a5(_0xec48ac);});});;});};function addVoicePrefixExtensions(_0xa7179d,_0x5202d7){var _0x402a01=[];var _0x2f05bc=formatPrefixName(_0xa7179d[_0xbb10('0x65')]);_0x402a01['push'](new Extension(_0x2f05bc,0x2,_0xbb10('0x66'),_0xbb10('0x67')+_0xa7179d[_0xbb10('0x30')]));if(_0xa7179d[_0xbb10('0x68')]){_0x402a01['push'](new Extension(_0x2f05bc,0x3,_0xbb10('0x66'),_0xbb10('0x69')+_0xa7179d[_0xbb10('0x68')]));}else{_0x402a01[_0xbb10('0x6a')](new Extension(_0x2f05bc,0x3,'NoOp',_0xbb10('0x6b')));}_0x402a01[_0xbb10('0x6a')](new Extension(_0x2f05bc,0x4,_0xbb10('0x6c'),_0x5202d7[_0xbb10('0x5a')]+','+_0xbb10('0x6d')+(0x8+_0xa7179d[_0xbb10('0x30')][_0xbb10('0x3d')])+'}'+','+0x1));return _0x402a01;}function formatPrefixName(_0x4a30c5){var _0x4a13d7='_';for(var _0x5acd5e=0x0;_0x5acd5e<_0x4a30c5[_0xbb10('0x3d')];_0x5acd5e++){if(_0x4a30c5[_0xbb10('0x6e')](_0x5acd5e)=='-'){_0x4a13d7+=_0x4a30c5[_0xbb10('0x6e')](_0x5acd5e);}else{_0x4a13d7+='['+_0x4a30c5['charAt'](_0x5acd5e)+']';}}_0x4a13d7+='.';return _0x4a13d7;}exports['update']=function(_0x46f462,_0x1b11c0,_0xd9e743){var _0x3a9677=_0x46f462[_0xbb10('0x50')];_0x3a9677[_0xbb10('0x65')]='system-'+_0x3a9677[_0xbb10('0x30')]+'-';return db[_0xbb10('0x4f')][_0xbb10('0x6f')](function(_0x14f16b){return db[_0xbb10('0x33')]['update'](_0x3a9677,{'where':{'id':_0x3a9677['id']},'transaction':_0x14f16b})['then'](function(){return db['VoiceExtension'][_0xbb10('0x2b')]({'where':{'VoicePrefixId':_0x3a9677['id']},'transaction':_0x14f16b})[_0xbb10('0x2a')](function(){return db[_0xbb10('0x51')][_0xbb10('0x4c')]({'where':{'id':_0x3a9677[_0xbb10('0x52')]},'raw':!![]})[_0xbb10('0x2a')](function(_0x5d942d){return createVoicePrefixExtensions(_0x3a9677,_0x5d942d,_0x14f16b);});});});})[_0xbb10('0x2a')](function(){return db['VoicePrefix']['findById'](_0x3a9677['id']);})['then'](respondWithResult(_0x1b11c0,null))[_0xbb10('0x47')](handleError(_0x1b11c0,null));};exports[_0xbb10('0x70')]=function(_0x23b1d5,_0x108f99,_0x5ce94f){return db[_0xbb10('0x33')]['find']({'where':{'id':_0x23b1d5['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x108f99,null))[_0xbb10('0x2a')](function(_0x29529c){if(_0x29529c){return _0x29529c[_0xbb10('0x70')](_0x23b1d5[_0xbb10('0x50')]['ids'],_[_0xbb10('0x71')](_0x23b1d5[_0xbb10('0x50')],[_0xbb10('0x72'),'id'])||{})[_0xbb10('0x73')](function(_0x43cdb7){for(var _0x27f42f=0x0;_0x27f42f<_0x23b1d5[_0xbb10('0x50')]['ids'][_0xbb10('0x3d')];_0x27f42f+=0x1){socket[_0xbb10('0x74')](_0xbb10('0x75'),{'UserId':Number(_0x23b1d5[_0xbb10('0x50')][_0xbb10('0x72')][_0x27f42f]),'VoicePrefixId':Number(_0x23b1d5[_0xbb10('0x49')]['id'])});}return _0x43cdb7;});}})[_0xbb10('0x2a')](respondWithResult(_0x108f99,null))[_0xbb10('0x47')](handleError(_0x108f99,null));};exports['removeAgents']=function(_0x428146,_0x218690,_0x145baf){return db['VoicePrefix']['find']({'where':{'id':_0x428146['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x218690,null))['then'](function(_0x4e3d6a){if(_0x4e3d6a){return _0x4e3d6a[_0xbb10('0x76')](_0x428146[_0xbb10('0x38')][_0xbb10('0x72')])[_0xbb10('0x2a')](function(){if(_[_0xbb10('0x77')](_0x428146[_0xbb10('0x38')][_0xbb10('0x72')])){for(var _0x417304=0x0;_0x417304<_0x428146[_0xbb10('0x38')]['ids'][_0xbb10('0x3d')];_0x417304+=0x1){socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':Number(_0x428146[_0xbb10('0x38')]['ids'][_0x417304]),'VoicePrefixId':Number(_0x428146['params']['id'])});}}else{socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':Number(_0x428146[_0xbb10('0x38')][_0xbb10('0x72')]),'VoicePrefixId':Number(_0x428146['params']['id'])});}});}})[_0xbb10('0x2a')](respondWithStatusCode(_0x218690,null))[_0xbb10('0x47')](handleError(_0x218690,null));};exports[_0xbb10('0x79')]=function(_0xf7b3e1,_0x35c1e8,_0x517185){var _0x5f0691={};var _0x372636={};var _0x53c698;var _0x22c030;return db['VoicePrefix'][_0xbb10('0x7a')]({'where':{'id':_0xf7b3e1[_0xbb10('0x49')]['id']}})['then'](handleEntityNotFound(_0x35c1e8,null))['then'](function(_0x2f667f){if(_0x2f667f){_0x53c698=_0x2f667f;_0x372636[_0xbb10('0x37')]=_[_0xbb10('0x39')](db['User'][_0xbb10('0x34')]);_0x372636[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0xf7b3e1[_0xbb10('0x38')]);_0x372636[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x372636[_0xbb10('0x37')],_0x372636[_0xbb10('0x38')]);_0x5f0691[_0xbb10('0x3c')]=_['intersection'](_0x372636[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x4a')]));_0x5f0691[_0xbb10('0x3c')]=_0x5f0691[_0xbb10('0x3c')][_0xbb10('0x3d')]?_0x5f0691[_0xbb10('0x3c')]:_0x372636[_0xbb10('0x37')];_0x5f0691[_0xbb10('0x7b')]=qs[_0xbb10('0x3f')](_0xf7b3e1[_0xbb10('0x38')]['sort']);_0x5f0691['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0xf7b3e1[_0xbb10('0x38')],_0x372636[_0xbb10('0x3a')]));if(_0xf7b3e1[_0xbb10('0x38')]['filter']){_0x5f0691[_0xbb10('0x42')]=_[_0xbb10('0x45')](_0x5f0691[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x5f0691[_0xbb10('0x3c')],function(_0x379d49){var _0x546db5={};_0x546db5[_0x379d49]={'$like':'%'+_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0x546db5;})});}_0x5f0691=_['merge']({},_0x5f0691,_0xf7b3e1[_0xbb10('0x46')]);return _0x53c698['getAgents'](_0x5f0691);}})[_0xbb10('0x2a')](function(_0x28bd76){if(_0x28bd76){_0x22c030=_0x28bd76[_0xbb10('0x3d')];if(!_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x3e')]('nolimit')){_0x5f0691[_0xbb10('0x24')]=qs['limit'](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x24')]);_0x5f0691['offset']=qs['offset'](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x22')]);}return _0x53c698[_0xbb10('0x79')](_0x5f0691);}})[_0xbb10('0x2a')](function(_0x18d18d){if(_0x18d18d){return _0x18d18d?{'count':_0x22c030,'rows':_0x18d18d}:null;}})[_0xbb10('0x2a')](respondWithResult(_0x35c1e8,null))[_0xbb10('0x47')](handleError(_0x35c1e8,null));};exports[_0xbb10('0x7c')]=function(_0x252ab8,_0xbccd46,_0x2bf9dd){var _0x4c0b83={};var _0x2b9a50={};var _0x3eeceb;var _0x1b0a6c;return db[_0xbb10('0x33')][_0xbb10('0x7a')]({'where':{'id':_0x252ab8[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0xbccd46,null))[_0xbb10('0x2a')](function(_0x3e6fe2){if(_0x3e6fe2){_0x3eeceb=_0x3e6fe2;_0x2b9a50[_0xbb10('0x37')]=_[_0xbb10('0x39')](db[_0xbb10('0x7d')]['rawAttributes']);_0x2b9a50[_0xbb10('0x38')]=_['keys'](_0x252ab8[_0xbb10('0x38')]);_0x2b9a50[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x2b9a50[_0xbb10('0x37')],_0x2b9a50[_0xbb10('0x38')]);_0x4c0b83['attributes']=_[_0xbb10('0x3b')](_0x2b9a50[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x4a')]));_0x4c0b83[_0xbb10('0x3c')]=_0x4c0b83['attributes']['length']?_0x4c0b83[_0xbb10('0x3c')]:_0x2b9a50[_0xbb10('0x37')];_0x4c0b83[_0xbb10('0x7b')]=qs['sort'](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x3f')]);_0x4c0b83['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0x252ab8['query'],_0x2b9a50[_0xbb10('0x3a')]));if(_0x252ab8['query'][_0xbb10('0x41')]){_0x4c0b83[_0xbb10('0x42')]=_['merge'](_0x4c0b83[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x4c0b83['attributes'],function(_0x5dae56){var _0xea6bf2={};_0xea6bf2[_0x5dae56]={'$like':'%'+_0x252ab8[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0xea6bf2;})});}_0x4c0b83=_[_0xbb10('0x45')]({},_0x4c0b83,_0x252ab8[_0xbb10('0x46')]);return _0x3eeceb['getTeams'](_0x4c0b83);}})[_0xbb10('0x2a')](function(_0x9f2e0f){if(_0x9f2e0f){_0x1b0a6c=_0x9f2e0f[_0xbb10('0x3d')];if(!_0x252ab8['query'][_0xbb10('0x3e')](_0xbb10('0x7e'))){_0x4c0b83[_0xbb10('0x24')]=qs[_0xbb10('0x24')](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x24')]);_0x4c0b83[_0xbb10('0x22')]=qs[_0xbb10('0x22')](_0x252ab8[_0xbb10('0x38')]['offset']);}return _0x3eeceb['getTeams'](_0x4c0b83);}})[_0xbb10('0x2a')](function(_0xe7238b){if(_0xe7238b){return _0xe7238b?{'count':_0x1b0a6c,'rows':_0xe7238b}:null;}})[_0xbb10('0x2a')](respondWithResult(_0xbccd46,null))[_0xbb10('0x47')](handleError(_0xbccd46,null));};exports[_0xbb10('0x7f')]=function(_0x363b81,_0x1cccec,_0x1674f7){var _0x3ede66=_0x363b81[_0xbb10('0x50')][_0xbb10('0x72')];var _0x167734;return db[_0xbb10('0x7d')]['findAll']({'where':{'id':_0x3ede66},'attributes':['id'],'include':[{'model':db[_0xbb10('0x80')],'as':_0xbb10('0x81'),'attributes':['id',_0xbb10('0x30'),_0xbb10('0x82'),_0xbb10('0x83'),_0xbb10('0x84')],'raw':!![]}]})[_0xbb10('0x2a')](function(_0x1421e2){if(_0x1421e2){_0x167734=_0x1421e2;var _0x3c6c45=_[_0xbb10('0x85')](_0x1421e2,function(_0x2a1c53){var _0x57f4a3=_0x2a1c53[_0xbb10('0x2c')]({'plain':!![]});return _0x57f4a3['Agents'];});return db[_0xbb10('0x33')][_0xbb10('0x4c')]({'where':{'id':_0x363b81[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](function(_0x2b6e27){return db[_0xbb10('0x4f')]['transaction'](function(_0x2d8a25){return _0x2b6e27['addTeams'](_0x3ede66,{'transaction':_0x2d8a25})[_0xbb10('0x2a')](function(){return BPromise[_0xbb10('0x86')](_0x167734,function(_0xda122){return db[_0xbb10('0x87')][_0xbb10('0x88')]({'TeamId':_0xda122['id'],'VoicePrefixId':_0x363b81[_0xbb10('0x49')]['id']},{'transaction':_0x2d8a25});});})[_0xbb10('0x2a')](function(){return BPromise[_0xbb10('0x86')](_0x3c6c45,function(_0x25c5b2){return db[_0xbb10('0x89')][_0xbb10('0x8a')]({'where':{'UserId':_0x25c5b2['id'],'VoicePrefixId':_0x363b81[_0xbb10('0x49')]['id']},'transaction':_0x2d8a25});});})['then'](function(){_0x3c6c45[_0xbb10('0x8b')](function(_0x516520){socket[_0xbb10('0x74')](_0xbb10('0x75'),{'UserId':_0x516520['id'],'VoicePrefixId':_0x2b6e27['id']});});});});});}})[_0xbb10('0x2a')](respondWithStatusCode(_0x1cccec,null))[_0xbb10('0x47')](handleError(_0x1cccec,null));};exports[_0xbb10('0x8c')]=function(_0x40271f,_0x185ec9,_0x5e9888){return db[_0xbb10('0x7d')]['findAll']({'where':{'id':_0x40271f['query'][_0xbb10('0x72')]},'attributes':['id'],'include':[{'model':db[_0xbb10('0x80')],'as':_0xbb10('0x81'),'attributes':['id'],'raw':!![]}]})[_0xbb10('0x2a')](handleEntityNotFound(_0x185ec9,null))[_0xbb10('0x2a')](function(_0x16b8c1){var _0x5d1077=_[_0xbb10('0x32')](_0x16b8c1,'id');var _0x2c25ab=[];var _0x39aa9e=[];var _0xb1b7c8=squel[_0xbb10('0x8d')]();_0xb1b7c8[_0xbb10('0x8e')]('tq.TeamId')[_0xbb10('0x8f')](_0xbb10('0x90'),'tq')[_0xbb10('0x91')](_0xbb10('0x92'),'ut',_0xbb10('0x93'))[_0xbb10('0x42')](_0xbb10('0x94'),_0x40271f['params']['id']);for(var _0x33a43e=0x0;_0x33a43e<_0x16b8c1['length'];_0x33a43e+=0x1){let _0x3afbcf=_0x16b8c1[_0x33a43e];for(var _0x4a6660=0x0;_0x4a6660<_0x3afbcf['Agents'][_0xbb10('0x3d')];_0x4a6660+=0x1){let _0x225064=_0x3afbcf[_0xbb10('0x81')][_0x4a6660];var _0x3b7552=_0xb1b7c8[_0xbb10('0x95')]();_0x3b7552['where'](_0xbb10('0x96'),_0x225064['id']);_0x39aa9e['push'](db['sequelize']['query'](_0x3b7552[_0xbb10('0x97')](),{'type':db[_0xbb10('0x4f')][_0xbb10('0x98')][_0xbb10('0x99')]})[_0xbb10('0x2a')](function(_0x5abedf){if(_0x5abedf[_0xbb10('0x3d')]===0x1){return _0x225064['id'];}else{var _0x42a2d7=_[_0xbb10('0x9a')](_[_0xbb10('0x32')](_0x5abedf,_0xbb10('0x9b')),function(_0x37ff15){return _[_0xbb10('0x9c')](_0x5d1077,_0x37ff15);});if(_0x42a2d7){return _0x225064['id'];}}}));}}return BPromise['all'](_0x39aa9e)['then'](function(_0x584a62){_0x2c25ab=_(_0x2c25ab)[_0xbb10('0x9d')](_0x584a62)[_0xbb10('0x9e')]()[_0xbb10('0x9f')]();return db[_0xbb10('0x33')][_0xbb10('0x4c')]({'where':{'id':_0x40271f[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](function(_0x423628){return db[_0xbb10('0x4f')][_0xbb10('0x6f')](function(_0x4cc8d4){return _0x423628['removeTeams'](_0x40271f['query'][_0xbb10('0x72')],{'transaction':_0x4cc8d4})[_0xbb10('0x2a')](function(){if(!_[_0xbb10('0xa0')](_0x2c25ab)){return _0x423628['removeAgents'](_0x2c25ab,{'transaction':_0x4cc8d4});}})[_0xbb10('0x2a')](function(){_0x2c25ab[_0xbb10('0x8b')](function(_0x2c638d){socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':_0x2c638d,'VoicePrefixId':_0x423628['id']});});});});});});})[_0xbb10('0x2a')](respondWithStatusCode(_0x185ec9,null))['catch'](handleError(_0x185ec9,null));};
\ No newline at end of file
+var _0xb10b=['redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','sort','pick','filter','where','type','VIRTUAL','merge','options','catch','show','params','fields','includeAll','find','describe','create','sequelize','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','system','description','Voice\x20Prefix\x20Extension','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','prefix','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','push','No\x20callerid\x20available','goto','${EXTEN:','charAt','transaction','addAgents','omit','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','order','getTeams','Team','nolimit','addTeams','User','Agents','online','voicePause','interface','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xb10b,0x12a));var _0xbb10=function(_0x1cb9bd,_0x37af34){_0x1cb9bd=_0x1cb9bd-0x0;var _0x7065c7=_0xb10b[_0x1cb9bd];return _0x7065c7;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];config[_0xbb10('0x18')]=_[_0xbb10('0x19')](config[_0xbb10('0x18')],{'host':_0xbb10('0x1a'),'port':0x18eb});var socket=require(_0xbb10('0x1b'))(new Redis(config['redis']));require(_0xbb10('0x1c'))[_0xbb10('0x1d')](socket);function respondWithStatusCode(_0x45b9d6,_0x17fd46){_0x17fd46=_0x17fd46||0xcc;return function(_0x3df17b){if(_0x3df17b){return _0x45b9d6[_0xbb10('0x1e')](_0x17fd46);}return _0x45b9d6[_0xbb10('0x1f')](_0x17fd46)[_0xbb10('0x20')]();};}function respondWithResult(_0x3e26f4,_0x2b184e){_0x2b184e=_0x2b184e||0xc8;return function(_0x4a2bfc){if(_0x4a2bfc){return _0x3e26f4[_0xbb10('0x1f')](_0x2b184e)[_0xbb10('0x21')](_0x4a2bfc);}};}function respondWithFilteredResult(_0x133ac2,_0x42db98){return function(_0x378da8){if(_0x378da8){var _0x1682a4=typeof _0x42db98[_0xbb10('0x22')]===_0xbb10('0x23')&&typeof _0x42db98[_0xbb10('0x24')]===_0xbb10('0x23');var _0x48b6e9=_0x378da8[_0xbb10('0x25')];var _0x19f48d=_0x1682a4?0x0:_0x42db98[_0xbb10('0x22')];var _0x109908=_0x1682a4?_0x378da8[_0xbb10('0x25')]:_0x42db98[_0xbb10('0x22')]+_0x42db98['limit'];var _0x12f888;if(_0x109908>=_0x48b6e9){_0x109908=_0x48b6e9;_0x12f888=0xc8;}else{_0x12f888=0xce;}_0x133ac2[_0xbb10('0x1f')](_0x12f888);return _0x133ac2['set']('Content-Range',_0x19f48d+'-'+_0x109908+'/'+_0x48b6e9)[_0xbb10('0x21')](_0x378da8);}return null;};}function patchUpdates(_0x311abe){return function(_0x2e911d){try{jsonpatch[_0xbb10('0x26')](_0x2e911d,_0x311abe,!![]);}catch(_0x445761){return BPromise[_0xbb10('0x27')](_0x445761);}return _0x2e911d[_0xbb10('0x28')]();};}function saveUpdates(_0x436104,_0x7f2377){return function(_0x395404){if(_0x395404){return _0x395404[_0xbb10('0x29')](_0x436104)[_0xbb10('0x2a')](function(_0x537898){return _0x537898;});}return null;};}function removeEntity(_0x4fedac,_0x4fb5e0){return function(_0xc93a04){if(_0xc93a04){return _0xc93a04[_0xbb10('0x2b')]()[_0xbb10('0x2a')](function(){var _0x4e25ff=_0xc93a04[_0xbb10('0x2c')]({'plain':!![]});var _0x24d586=_0xbb10('0x2d');return db[_0xbb10('0x2e')][_0xbb10('0x2b')]({'where':{'type':_0x24d586,'resourceId':_0x4e25ff['id']}})[_0xbb10('0x2a')](function(){return _0xc93a04;});})[_0xbb10('0x2a')](function(){_0x4fedac['status'](0xcc)[_0xbb10('0x20')]();});}};}function handleEntityNotFound(_0x21ac54,_0xfc3595){return function(_0x2e0249){if(!_0x2e0249){_0x21ac54[_0xbb10('0x1e')](0x194);}return _0x2e0249;};}function handleError(_0x2ff4c1,_0x5d5c80){_0x5d5c80=_0x5d5c80||0x1f4;return function(_0x221624){logger['error'](_0x221624[_0xbb10('0x2f')]);if(_0x221624['name']){delete _0x221624[_0xbb10('0x30')];}_0x2ff4c1[_0xbb10('0x1f')](_0x5d5c80)[_0xbb10('0x31')](_0x221624);};}exports['index']=function(_0x518d47,_0x4c3744){var _0x34f65e={},_0x4f590d={},_0x359ad4={'count':0x0,'rows':[]};var _0x37dde7=_[_0xbb10('0x32')](db[_0xbb10('0x33')][_0xbb10('0x34')],function(_0x138bc6){return{'name':_0x138bc6[_0xbb10('0x35')],'type':_0x138bc6['type'][_0xbb10('0x36')]};});_0x4f590d[_0xbb10('0x37')]=_[_0xbb10('0x32')](_0x37dde7,_0xbb10('0x30'));_0x4f590d[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0x518d47[_0xbb10('0x38')]);_0x4f590d[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x4f590d['model'],_0x4f590d[_0xbb10('0x38')]);_0x34f65e[_0xbb10('0x3c')]=_[_0xbb10('0x3b')](_0x4f590d[_0xbb10('0x37')],qs['fields'](_0x518d47[_0xbb10('0x38')]['fields']));_0x34f65e['attributes']=_0x34f65e[_0xbb10('0x3c')][_0xbb10('0x3d')]?_0x34f65e[_0xbb10('0x3c')]:_0x4f590d[_0xbb10('0x37')];if(!_0x518d47[_0xbb10('0x38')][_0xbb10('0x3e')]('nolimit')){_0x34f65e[_0xbb10('0x24')]=qs[_0xbb10('0x24')](_0x518d47['query']['limit']);_0x34f65e['offset']=qs[_0xbb10('0x22')](_0x518d47[_0xbb10('0x38')][_0xbb10('0x22')]);}_0x34f65e['order']=qs[_0xbb10('0x3f')](_0x518d47[_0xbb10('0x38')][_0xbb10('0x3f')]);_0x34f65e['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0x518d47[_0xbb10('0x38')],_0x4f590d[_0xbb10('0x3a')]),_0x37dde7);if(_0x518d47['query'][_0xbb10('0x41')]){_0x34f65e[_0xbb10('0x42')]=_['merge'](_0x34f65e[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x37dde7,function(_0x44d6ae){if(_0x44d6ae[_0xbb10('0x43')]!==_0xbb10('0x44')){var _0x185a52={};_0x185a52[_0x44d6ae['name']]={'$like':'%'+_0x518d47[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0x185a52;}})});}_0x34f65e=_[_0xbb10('0x45')]({},_0x34f65e,_0x518d47[_0xbb10('0x46')]);var _0x4943d9={'where':_0x34f65e[_0xbb10('0x42')]};return db[_0xbb10('0x33')][_0xbb10('0x25')](_0x4943d9)[_0xbb10('0x2a')](function(_0x5e2cfa){_0x359ad4[_0xbb10('0x25')]=_0x5e2cfa;if(_0x518d47[_0xbb10('0x38')]['includeAll']){_0x34f65e['include']=[{'all':!![]}];}return db[_0xbb10('0x33')]['findAll'](_0x34f65e);})[_0xbb10('0x2a')](function(_0x180933){_0x359ad4['rows']=_0x180933;return _0x359ad4;})[_0xbb10('0x2a')](respondWithFilteredResult(_0x4c3744,_0x34f65e))[_0xbb10('0x47')](handleError(_0x4c3744,null));};exports[_0xbb10('0x48')]=function(_0x5cf4f8,_0x2dd02b){var _0xebd70c={'raw':![],'where':{'id':_0x5cf4f8[_0xbb10('0x49')]['id']}},_0x3b9fdf={};_0x3b9fdf[_0xbb10('0x37')]=_[_0xbb10('0x39')](db[_0xbb10('0x33')][_0xbb10('0x34')]);_0x3b9fdf[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0x5cf4f8[_0xbb10('0x38')]);_0x3b9fdf[_0xbb10('0x3a')]=_['intersection'](_0x3b9fdf[_0xbb10('0x37')],_0x3b9fdf[_0xbb10('0x38')]);_0xebd70c['attributes']=_[_0xbb10('0x3b')](_0x3b9fdf[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0x5cf4f8[_0xbb10('0x38')][_0xbb10('0x4a')]));_0xebd70c[_0xbb10('0x3c')]=_0xebd70c[_0xbb10('0x3c')]['length']?_0xebd70c['attributes']:_0x3b9fdf[_0xbb10('0x37')];if(_0x5cf4f8[_0xbb10('0x38')][_0xbb10('0x4b')]){_0xebd70c['include']=[{'all':!![]}];}_0xebd70c=_['merge']({},_0xebd70c,_0x5cf4f8[_0xbb10('0x46')]);return db[_0xbb10('0x33')][_0xbb10('0x4c')](_0xebd70c)[_0xbb10('0x2a')](handleEntityNotFound(_0x2dd02b,null))[_0xbb10('0x2a')](respondWithResult(_0x2dd02b,null))[_0xbb10('0x47')](handleError(_0x2dd02b,null));};exports[_0xbb10('0x2b')]=function(_0x460788,_0x2626d8){return db[_0xbb10('0x33')]['find']({'where':{'id':_0x460788['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x2626d8,null))[_0xbb10('0x2a')](removeEntity(_0x2626d8,null))[_0xbb10('0x47')](handleError(_0x2626d8,null));};exports[_0xbb10('0x4d')]=function(_0x36aa7d,_0x440f9e){return db[_0xbb10('0x33')][_0xbb10('0x4d')]()[_0xbb10('0x2a')](respondWithResult(_0x440f9e,null))[_0xbb10('0x47')](handleError(_0x440f9e,null));};exports[_0xbb10('0x4e')]=function(_0x20e18a,_0x61e689){var _0x2e6fd9;return db[_0xbb10('0x4f')]['transaction'](function(_0x124052){return db['VoicePrefix'][_0xbb10('0x4e')](_0x20e18a[_0xbb10('0x50')],{'transaction':_0x124052})[_0xbb10('0x2a')](function(_0x3f27ce){_0x2e6fd9=_0x3f27ce[_0xbb10('0x2c')]({'plain':!![]});return db[_0xbb10('0x51')][_0xbb10('0x4c')]({'where':{'id':_0x2e6fd9[_0xbb10('0x52')]},'raw':!![]})[_0xbb10('0x2a')](function(_0x3d71e){return createVoicePrefixExtensions(_0x2e6fd9,_0x3d71e,_0x124052);});});})[_0xbb10('0x2a')](function(){var _0x1c2dce=_0x20e18a[_0xbb10('0x53')][_0xbb10('0x2c')]({'plain':!![]});if(!_0x1c2dce)throw new Error(_0xbb10('0x54'));if(_0x1c2dce['role']===_0xbb10('0x53')){var _0x466eb7=_0x2e6fd9;return db[_0xbb10('0x55')][_0xbb10('0x4c')]({'where':{'name':_0xbb10('0x2d'),'userProfileId':_0x1c2dce[_0xbb10('0x56')]},'raw':!![]})['then'](function(_0x120bda){if(_0x120bda&&_0x120bda[_0xbb10('0x57')]===0x0){return db[_0xbb10('0x2e')][_0xbb10('0x4e')]({'name':_0x466eb7[_0xbb10('0x30')],'resourceId':_0x466eb7['id'],'type':_0x120bda[_0xbb10('0x30')],'sectionId':_0x120bda['id']},{})[_0xbb10('0x2a')](function(){return _0x2e6fd9;});}else{return _0x2e6fd9;}})[_0xbb10('0x47')](function(_0x205e01){logger[_0xbb10('0x58')](_0xbb10('0x59'),_0x205e01);throw _0x205e01;});}return _0x2e6fd9;})[_0xbb10('0x2a')](respondWithResult(_0x61e689,null))[_0xbb10('0x47')](handleError(_0x61e689,null));};function Extension(_0x4e7fac,_0x4ea1a6,_0x16272d,_0x3e6338){this[_0xbb10('0x5a')]=_0xbb10('0x5b');this['exten']=_0x4e7fac;this['app']=_0x16272d;this[_0xbb10('0x43')]=_0xbb10('0x5c');this[_0xbb10('0x5d')]=_0xbb10('0x5e');this[_0xbb10('0x5f')]=_0x4ea1a6;this[_0xbb10('0x60')]=_0x3e6338;}function createVoicePrefixExtensions(_0x45c0dc,_0x4a5fb9,_0x117e84){return new BPromise(function(_0x216cff,_0x4917a5){var _0x5e03cb=new Extension(formatPrefixName(_0x45c0dc['prefix']),0x1,_0xbb10('0x61'),_0xbb10('0x62'));_0x5e03cb[_0xbb10('0x63')]=_0x45c0dc['id'];return db['VoiceExtension']['create'](_0x5e03cb,{'transaction':_0x117e84})['then'](function(_0x3ebc5f){var _0x249b33=_0x3ebc5f[_0xbb10('0x2c')]({'plain':!![]});var _0x4e9fbd=_[_0xbb10('0x32')](addVoicePrefixExtensions(_0x45c0dc,_0x4a5fb9),function(_0x13131c){_0x13131c['VoiceExtensionId']=_0x249b33['id'];_0x13131c['VoicePrefixId']=_0x45c0dc['id'];return _0x13131c;});return db[_0xbb10('0x51')][_0xbb10('0x64')](_0x4e9fbd,{'transaction':_0x117e84})[_0xbb10('0x2a')](function(_0x237246){if(!_0x237246){return _0x4917a5('Extensions\x20creation\x20failed');}else{return _0x216cff(_0x237246);}})[_0xbb10('0x47')](function(_0xec48ac){return _0x4917a5(_0xec48ac);});});;});};function addVoicePrefixExtensions(_0xa7179d,_0x5202d7){var _0x402a01=[];var _0x2f05bc=formatPrefixName(_0xa7179d[_0xbb10('0x65')]);_0x402a01['push'](new Extension(_0x2f05bc,0x2,_0xbb10('0x66'),_0xbb10('0x67')+_0xa7179d[_0xbb10('0x30')]));if(_0xa7179d[_0xbb10('0x68')]){_0x402a01['push'](new Extension(_0x2f05bc,0x3,_0xbb10('0x66'),_0xbb10('0x69')+_0xa7179d[_0xbb10('0x68')]));}else{_0x402a01[_0xbb10('0x6a')](new Extension(_0x2f05bc,0x3,'NoOp',_0xbb10('0x6b')));}_0x402a01[_0xbb10('0x6a')](new Extension(_0x2f05bc,0x4,_0xbb10('0x6c'),_0x5202d7[_0xbb10('0x5a')]+','+_0xbb10('0x6d')+(0x8+_0xa7179d[_0xbb10('0x30')][_0xbb10('0x3d')])+'}'+','+0x1));return _0x402a01;}function formatPrefixName(_0x4a30c5){var _0x4a13d7='_';for(var _0x5acd5e=0x0;_0x5acd5e<_0x4a30c5[_0xbb10('0x3d')];_0x5acd5e++){if(_0x4a30c5[_0xbb10('0x6e')](_0x5acd5e)=='-'){_0x4a13d7+=_0x4a30c5[_0xbb10('0x6e')](_0x5acd5e);}else{_0x4a13d7+='['+_0x4a30c5['charAt'](_0x5acd5e)+']';}}_0x4a13d7+='.';return _0x4a13d7;}exports['update']=function(_0x46f462,_0x1b11c0,_0xd9e743){var _0x3a9677=_0x46f462[_0xbb10('0x50')];_0x3a9677[_0xbb10('0x65')]='system-'+_0x3a9677[_0xbb10('0x30')]+'-';return db[_0xbb10('0x4f')][_0xbb10('0x6f')](function(_0x14f16b){return db[_0xbb10('0x33')]['update'](_0x3a9677,{'where':{'id':_0x3a9677['id']},'transaction':_0x14f16b})['then'](function(){return db['VoiceExtension'][_0xbb10('0x2b')]({'where':{'VoicePrefixId':_0x3a9677['id']},'transaction':_0x14f16b})[_0xbb10('0x2a')](function(){return db[_0xbb10('0x51')][_0xbb10('0x4c')]({'where':{'id':_0x3a9677[_0xbb10('0x52')]},'raw':!![]})[_0xbb10('0x2a')](function(_0x5d942d){return createVoicePrefixExtensions(_0x3a9677,_0x5d942d,_0x14f16b);});});});})[_0xbb10('0x2a')](function(){return db['VoicePrefix']['findById'](_0x3a9677['id']);})['then'](respondWithResult(_0x1b11c0,null))[_0xbb10('0x47')](handleError(_0x1b11c0,null));};exports[_0xbb10('0x70')]=function(_0x23b1d5,_0x108f99,_0x5ce94f){return db[_0xbb10('0x33')]['find']({'where':{'id':_0x23b1d5['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x108f99,null))[_0xbb10('0x2a')](function(_0x29529c){if(_0x29529c){return _0x29529c[_0xbb10('0x70')](_0x23b1d5[_0xbb10('0x50')]['ids'],_[_0xbb10('0x71')](_0x23b1d5[_0xbb10('0x50')],[_0xbb10('0x72'),'id'])||{})[_0xbb10('0x73')](function(_0x43cdb7){for(var _0x27f42f=0x0;_0x27f42f<_0x23b1d5[_0xbb10('0x50')]['ids'][_0xbb10('0x3d')];_0x27f42f+=0x1){socket[_0xbb10('0x74')](_0xbb10('0x75'),{'UserId':Number(_0x23b1d5[_0xbb10('0x50')][_0xbb10('0x72')][_0x27f42f]),'VoicePrefixId':Number(_0x23b1d5[_0xbb10('0x49')]['id'])});}return _0x43cdb7;});}})[_0xbb10('0x2a')](respondWithResult(_0x108f99,null))[_0xbb10('0x47')](handleError(_0x108f99,null));};exports['removeAgents']=function(_0x428146,_0x218690,_0x145baf){return db['VoicePrefix']['find']({'where':{'id':_0x428146['params']['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0x218690,null))['then'](function(_0x4e3d6a){if(_0x4e3d6a){return _0x4e3d6a[_0xbb10('0x76')](_0x428146[_0xbb10('0x38')][_0xbb10('0x72')])[_0xbb10('0x2a')](function(){if(_[_0xbb10('0x77')](_0x428146[_0xbb10('0x38')][_0xbb10('0x72')])){for(var _0x417304=0x0;_0x417304<_0x428146[_0xbb10('0x38')]['ids'][_0xbb10('0x3d')];_0x417304+=0x1){socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':Number(_0x428146[_0xbb10('0x38')]['ids'][_0x417304]),'VoicePrefixId':Number(_0x428146['params']['id'])});}}else{socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':Number(_0x428146[_0xbb10('0x38')][_0xbb10('0x72')]),'VoicePrefixId':Number(_0x428146['params']['id'])});}});}})[_0xbb10('0x2a')](respondWithStatusCode(_0x218690,null))[_0xbb10('0x47')](handleError(_0x218690,null));};exports[_0xbb10('0x79')]=function(_0xf7b3e1,_0x35c1e8,_0x517185){var _0x5f0691={};var _0x372636={};var _0x53c698;var _0x22c030;return db['VoicePrefix'][_0xbb10('0x7a')]({'where':{'id':_0xf7b3e1[_0xbb10('0x49')]['id']}})['then'](handleEntityNotFound(_0x35c1e8,null))['then'](function(_0x2f667f){if(_0x2f667f){_0x53c698=_0x2f667f;_0x372636[_0xbb10('0x37')]=_[_0xbb10('0x39')](db['User'][_0xbb10('0x34')]);_0x372636[_0xbb10('0x38')]=_[_0xbb10('0x39')](_0xf7b3e1[_0xbb10('0x38')]);_0x372636[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x372636[_0xbb10('0x37')],_0x372636[_0xbb10('0x38')]);_0x5f0691[_0xbb10('0x3c')]=_['intersection'](_0x372636[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x4a')]));_0x5f0691[_0xbb10('0x3c')]=_0x5f0691[_0xbb10('0x3c')][_0xbb10('0x3d')]?_0x5f0691[_0xbb10('0x3c')]:_0x372636[_0xbb10('0x37')];_0x5f0691[_0xbb10('0x7b')]=qs[_0xbb10('0x3f')](_0xf7b3e1[_0xbb10('0x38')]['sort']);_0x5f0691['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0xf7b3e1[_0xbb10('0x38')],_0x372636[_0xbb10('0x3a')]));if(_0xf7b3e1[_0xbb10('0x38')]['filter']){_0x5f0691[_0xbb10('0x42')]=_[_0xbb10('0x45')](_0x5f0691[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x5f0691[_0xbb10('0x3c')],function(_0x379d49){var _0x546db5={};_0x546db5[_0x379d49]={'$like':'%'+_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0x546db5;})});}_0x5f0691=_['merge']({},_0x5f0691,_0xf7b3e1[_0xbb10('0x46')]);return _0x53c698['getAgents'](_0x5f0691);}})[_0xbb10('0x2a')](function(_0x28bd76){if(_0x28bd76){_0x22c030=_0x28bd76[_0xbb10('0x3d')];if(!_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x3e')]('nolimit')){_0x5f0691[_0xbb10('0x24')]=qs['limit'](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x24')]);_0x5f0691['offset']=qs['offset'](_0xf7b3e1[_0xbb10('0x38')][_0xbb10('0x22')]);}return _0x53c698[_0xbb10('0x79')](_0x5f0691);}})[_0xbb10('0x2a')](function(_0x18d18d){if(_0x18d18d){return _0x18d18d?{'count':_0x22c030,'rows':_0x18d18d}:null;}})[_0xbb10('0x2a')](respondWithResult(_0x35c1e8,null))[_0xbb10('0x47')](handleError(_0x35c1e8,null));};exports[_0xbb10('0x7c')]=function(_0x252ab8,_0xbccd46,_0x2bf9dd){var _0x4c0b83={};var _0x2b9a50={};var _0x3eeceb;var _0x1b0a6c;return db[_0xbb10('0x33')][_0xbb10('0x7a')]({'where':{'id':_0x252ab8[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](handleEntityNotFound(_0xbccd46,null))[_0xbb10('0x2a')](function(_0x3e6fe2){if(_0x3e6fe2){_0x3eeceb=_0x3e6fe2;_0x2b9a50[_0xbb10('0x37')]=_[_0xbb10('0x39')](db[_0xbb10('0x7d')]['rawAttributes']);_0x2b9a50[_0xbb10('0x38')]=_['keys'](_0x252ab8[_0xbb10('0x38')]);_0x2b9a50[_0xbb10('0x3a')]=_[_0xbb10('0x3b')](_0x2b9a50[_0xbb10('0x37')],_0x2b9a50[_0xbb10('0x38')]);_0x4c0b83['attributes']=_[_0xbb10('0x3b')](_0x2b9a50[_0xbb10('0x37')],qs[_0xbb10('0x4a')](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x4a')]));_0x4c0b83[_0xbb10('0x3c')]=_0x4c0b83['attributes']['length']?_0x4c0b83[_0xbb10('0x3c')]:_0x2b9a50[_0xbb10('0x37')];_0x4c0b83[_0xbb10('0x7b')]=qs['sort'](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x3f')]);_0x4c0b83['where']=qs[_0xbb10('0x3a')](_[_0xbb10('0x40')](_0x252ab8['query'],_0x2b9a50[_0xbb10('0x3a')]));if(_0x252ab8['query'][_0xbb10('0x41')]){_0x4c0b83[_0xbb10('0x42')]=_['merge'](_0x4c0b83[_0xbb10('0x42')],{'$or':_[_0xbb10('0x32')](_0x4c0b83['attributes'],function(_0x5dae56){var _0xea6bf2={};_0xea6bf2[_0x5dae56]={'$like':'%'+_0x252ab8[_0xbb10('0x38')][_0xbb10('0x41')]+'%'};return _0xea6bf2;})});}_0x4c0b83=_[_0xbb10('0x45')]({},_0x4c0b83,_0x252ab8[_0xbb10('0x46')]);return _0x3eeceb['getTeams'](_0x4c0b83);}})[_0xbb10('0x2a')](function(_0x9f2e0f){if(_0x9f2e0f){_0x1b0a6c=_0x9f2e0f[_0xbb10('0x3d')];if(!_0x252ab8['query'][_0xbb10('0x3e')](_0xbb10('0x7e'))){_0x4c0b83[_0xbb10('0x24')]=qs[_0xbb10('0x24')](_0x252ab8[_0xbb10('0x38')][_0xbb10('0x24')]);_0x4c0b83[_0xbb10('0x22')]=qs[_0xbb10('0x22')](_0x252ab8[_0xbb10('0x38')]['offset']);}return _0x3eeceb['getTeams'](_0x4c0b83);}})[_0xbb10('0x2a')](function(_0xe7238b){if(_0xe7238b){return _0xe7238b?{'count':_0x1b0a6c,'rows':_0xe7238b}:null;}})[_0xbb10('0x2a')](respondWithResult(_0xbccd46,null))[_0xbb10('0x47')](handleError(_0xbccd46,null));};exports[_0xbb10('0x7f')]=function(_0x363b81,_0x1cccec,_0x1674f7){var _0x3ede66=_0x363b81[_0xbb10('0x50')][_0xbb10('0x72')];var _0x167734;return db[_0xbb10('0x7d')]['findAll']({'where':{'id':_0x3ede66},'attributes':['id'],'include':[{'model':db[_0xbb10('0x80')],'as':_0xbb10('0x81'),'attributes':['id',_0xbb10('0x30'),_0xbb10('0x82'),_0xbb10('0x83'),_0xbb10('0x84')],'raw':!![]}]})[_0xbb10('0x2a')](function(_0x1421e2){if(_0x1421e2){_0x167734=_0x1421e2;var _0x3c6c45=_[_0xbb10('0x85')](_0x1421e2,function(_0x2a1c53){var _0x57f4a3=_0x2a1c53[_0xbb10('0x2c')]({'plain':!![]});return _0x57f4a3['Agents'];});return db[_0xbb10('0x33')][_0xbb10('0x4c')]({'where':{'id':_0x363b81[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](function(_0x2b6e27){return db[_0xbb10('0x4f')]['transaction'](function(_0x2d8a25){return _0x2b6e27['addTeams'](_0x3ede66,{'transaction':_0x2d8a25})[_0xbb10('0x2a')](function(){return BPromise[_0xbb10('0x86')](_0x167734,function(_0xda122){return db[_0xbb10('0x87')][_0xbb10('0x88')]({'TeamId':_0xda122['id'],'VoicePrefixId':_0x363b81[_0xbb10('0x49')]['id']},{'transaction':_0x2d8a25});});})[_0xbb10('0x2a')](function(){return BPromise[_0xbb10('0x86')](_0x3c6c45,function(_0x25c5b2){return db[_0xbb10('0x89')][_0xbb10('0x8a')]({'where':{'UserId':_0x25c5b2['id'],'VoicePrefixId':_0x363b81[_0xbb10('0x49')]['id']},'transaction':_0x2d8a25});});})['then'](function(){_0x3c6c45[_0xbb10('0x8b')](function(_0x516520){socket[_0xbb10('0x74')](_0xbb10('0x75'),{'UserId':_0x516520['id'],'VoicePrefixId':_0x2b6e27['id']});});});});});}})[_0xbb10('0x2a')](respondWithStatusCode(_0x1cccec,null))[_0xbb10('0x47')](handleError(_0x1cccec,null));};exports[_0xbb10('0x8c')]=function(_0x40271f,_0x185ec9,_0x5e9888){return db[_0xbb10('0x7d')]['findAll']({'where':{'id':_0x40271f['query'][_0xbb10('0x72')]},'attributes':['id'],'include':[{'model':db[_0xbb10('0x80')],'as':_0xbb10('0x81'),'attributes':['id'],'raw':!![]}]})[_0xbb10('0x2a')](handleEntityNotFound(_0x185ec9,null))[_0xbb10('0x2a')](function(_0x16b8c1){var _0x5d1077=_[_0xbb10('0x32')](_0x16b8c1,'id');var _0x2c25ab=[];var _0x39aa9e=[];var _0xb1b7c8=squel[_0xbb10('0x8d')]();_0xb1b7c8[_0xbb10('0x8e')]('tq.TeamId')[_0xbb10('0x8f')](_0xbb10('0x90'),'tq')[_0xbb10('0x91')](_0xbb10('0x92'),'ut',_0xbb10('0x93'))[_0xbb10('0x42')](_0xbb10('0x94'),_0x40271f['params']['id']);for(var _0x33a43e=0x0;_0x33a43e<_0x16b8c1['length'];_0x33a43e+=0x1){let _0x3afbcf=_0x16b8c1[_0x33a43e];for(var _0x4a6660=0x0;_0x4a6660<_0x3afbcf['Agents'][_0xbb10('0x3d')];_0x4a6660+=0x1){let _0x225064=_0x3afbcf[_0xbb10('0x81')][_0x4a6660];var _0x3b7552=_0xb1b7c8[_0xbb10('0x95')]();_0x3b7552['where'](_0xbb10('0x96'),_0x225064['id']);_0x39aa9e['push'](db['sequelize']['query'](_0x3b7552[_0xbb10('0x97')](),{'type':db[_0xbb10('0x4f')][_0xbb10('0x98')][_0xbb10('0x99')]})[_0xbb10('0x2a')](function(_0x5abedf){if(_0x5abedf[_0xbb10('0x3d')]===0x1){return _0x225064['id'];}else{var _0x42a2d7=_[_0xbb10('0x9a')](_[_0xbb10('0x32')](_0x5abedf,_0xbb10('0x9b')),function(_0x37ff15){return _[_0xbb10('0x9c')](_0x5d1077,_0x37ff15);});if(_0x42a2d7){return _0x225064['id'];}}}));}}return BPromise['all'](_0x39aa9e)['then'](function(_0x584a62){_0x2c25ab=_(_0x2c25ab)[_0xbb10('0x9d')](_0x584a62)[_0xbb10('0x9e')]()[_0xbb10('0x9f')]();return db[_0xbb10('0x33')][_0xbb10('0x4c')]({'where':{'id':_0x40271f[_0xbb10('0x49')]['id']}})[_0xbb10('0x2a')](function(_0x423628){return db[_0xbb10('0x4f')][_0xbb10('0x6f')](function(_0x4cc8d4){return _0x423628['removeTeams'](_0x40271f['query'][_0xbb10('0x72')],{'transaction':_0x4cc8d4})[_0xbb10('0x2a')](function(){if(!_[_0xbb10('0xa0')](_0x2c25ab)){return _0x423628['removeAgents'](_0x2c25ab,{'transaction':_0x4cc8d4});}})[_0xbb10('0x2a')](function(){_0x2c25ab[_0xbb10('0x8b')](function(_0x2c638d){socket[_0xbb10('0x74')](_0xbb10('0x78'),{'UserId':_0x2c638d,'VoicePrefixId':_0x423628['id']});});});});});});})[_0xbb10('0x2a')](respondWithStatusCode(_0x185ec9,null))['catch'](handleError(_0x185ec9,null));};
\ No newline at end of file
index e5604f2..20dda62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9814=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoicePrefix'];(function(_0x3a676f,_0x27ed85){var _0x572071=function(_0x3ce3b3){while(--_0x3ce3b3){_0x3a676f['push'](_0x3a676f['shift']());}};_0x572071(++_0x27ed85);}(_0x9814,0xe8));var _0x4981=function(_0x6f980b,_0x2a6660){_0x6f980b=_0x6f980b-0x0;var _0x5a6bb7=_0x9814[_0x6f980b];return _0x5a6bb7;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x4981('0x0'))['db'][_0x4981('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4981('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4981('0x3'),'afterDestroy':_0x4981('0x4')};function emitEvent(_0x4f1179){return function(_0x409b5b,_0xfa40af,_0x483175){VoicePrefixEvents[_0x4981('0x5')](_0x4f1179+':'+_0x409b5b['id'],_0x409b5b);VoicePrefixEvents[_0x4981('0x5')](_0x4f1179,_0x409b5b);_0x483175(null);};}for(var e in events){if(events[_0x4981('0x6')](e)){var event=events[e];VoicePrefix[_0x4981('0x7')](e,emitEvent(event));}}module[_0x4981('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x227d=['hook','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x4a25e3,_0xffc2aa){var _0xc2ac02=function(_0x1f0eba){while(--_0x1f0eba){_0x4a25e3['push'](_0x4a25e3['shift']());}};_0xc2ac02(++_0xffc2aa);}(_0x227d,0x1ce));var _0xd227=function(_0x1df7b8,_0x2fe5e5){_0x1df7b8=_0x1df7b8-0x0;var _0x29d911=_0x227d[_0x1df7b8];return _0x29d911;};'use strict';var EventEmitter=require(_0xd227('0x0'));var VoicePrefix=require(_0xd227('0x1'))['db'][_0xd227('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xd227('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd227('0x4'),'afterDestroy':_0xd227('0x5')};function emitEvent(_0x1cefb4){return function(_0x329723,_0x26df62,_0x4896b6){VoicePrefixEvents[_0xd227('0x6')](_0x1cefb4+':'+_0x329723['id'],_0x329723);VoicePrefixEvents['emit'](_0x1cefb4,_0x329723);_0x4896b6(null);};}for(var e in events){if(events[_0xd227('0x7')](e)){var event=events[e];VoicePrefix[_0xd227('0x8')](e,emitEvent(event));}}module[_0xd227('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index 4cafeef..e3ad42b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ad=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes'];(function(_0x57cb1c,_0x6720b1){var _0x46801c=function(_0x326afa){while(--_0x326afa){_0x57cb1c['push'](_0x57cb1c['shift']());}};_0x46801c(++_0x6720b1);}(_0x68ad,0x8f));var _0xd68a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x68ad[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd68a('0x0'));var util=require('util');var logger=require(_0xd68a('0x1'))(_0xd68a('0x2'));var moment=require(_0xd68a('0x3'));var BPromise=require(_0xd68a('0x4'));var rp=require(_0xd68a('0x5'));var fs=require('fs');var path=require(_0xd68a('0x6'));var rimraf=require(_0xd68a('0x7'));var config=require('../../config/environment');var attributes=require(_0xd68a('0x8'));module[_0xd68a('0x9')]=function(_0x2887cd,_0x51691b){return _0x2887cd[_0xd68a('0xa')](_0xd68a('0xb'),attributes,{'tableName':_0xd68a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x324f=['define','VoicePrefix','voice_prefixes','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x5d88c0,_0x5d7d83){var _0x1b40f0=function(_0x3fde10){while(--_0x3fde10){_0x5d88c0['push'](_0x5d88c0['shift']());}};_0x1b40f0(++_0x5d7d83);}(_0x324f,0x155));var _0xf324=function(_0x2b607e,_0x2bd81d){_0x2b607e=_0x2b607e-0x0;var _0x2b286e=_0x324f[_0x2b607e];return _0x2b286e;};'use strict';var _=require(_0xf324('0x0'));var util=require(_0xf324('0x1'));var logger=require('../../config/logger')(_0xf324('0x2'));var moment=require(_0xf324('0x3'));var BPromise=require(_0xf324('0x4'));var rp=require(_0xf324('0x5'));var fs=require('fs');var path=require(_0xf324('0x6'));var rimraf=require(_0xf324('0x7'));var config=require(_0xf324('0x8'));var attributes=require('./voicePrefix.attributes');module[_0xf324('0x9')]=function(_0x212b89,_0x239280){return _0x212b89[_0xf324('0xa')](_0xf324('0xb'),attributes,{'tableName':_0xf324('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1299b2..f575ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x600f=['jayson/promise','client','http','defaults','localhost','redis','./voicePrefix.socket','register','request','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x600f,0xb4));var _0xf600=function(_0x237c45,_0x55cf99){_0x237c45=_0x237c45-0x0;var _0x2942f6=_0x600f[_0x237c45];return _0x2942f6;};'use strict';var _=require(_0xf600('0x0'));var util=require(_0xf600('0x1'));var moment=require(_0xf600('0x2'));var BPromise=require('bluebird');var rs=require(_0xf600('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf600('0x4'))['db'];var utils=require(_0xf600('0x5'));var logger=require(_0xf600('0x6'))(_0xf600('0x7'));var config=require(_0xf600('0x8'));var jayson=require(_0xf600('0x9'));var client=jayson[_0xf600('0xa')][_0xf600('0xb')]({'port':0x232a});config['redis']=_[_0xf600('0xc')](config['redis'],{'host':_0xf600('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf600('0xe')]));require(_0xf600('0xf'))[_0xf600('0x10')](socket);function respondWithRpcPromise(_0x3583db,_0x585840,_0x3c92d8){return new BPromise(function(_0x415018,_0x430e8e){return client[_0xf600('0x11')](_0x3583db,_0x3c92d8)['then'](function(_0x107180){logger['info'](_0xf600('0x12'),_0x585840,_0xf600('0x13'));logger[_0xf600('0x14')](_0xf600('0x15'),_0x585840,_0xf600('0x13'),JSON[_0xf600('0x16')](_0x107180));if(_0x107180[_0xf600('0x17')]){if(_0x107180[_0xf600('0x17')]['code']===0x1f4){logger[_0xf600('0x17')](_0xf600('0x12'),_0x585840,_0x107180[_0xf600('0x17')]['message']);return _0x430e8e(_0x107180[_0xf600('0x17')]['message']);}logger['error'](_0xf600('0x12'),_0x585840,_0x107180[_0xf600('0x17')][_0xf600('0x18')]);return _0x415018(_0x107180[_0xf600('0x17')][_0xf600('0x18')]);}else{logger['info'](_0xf600('0x12'),_0x585840,_0xf600('0x13'));_0x415018(_0x107180[_0xf600('0x19')][_0xf600('0x18')]);}})[_0xf600('0x1a')](function(_0x1caa85){logger[_0xf600('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x585840,_0x1caa85);_0x430e8e(_0x1caa85);});});}
\ No newline at end of file
+var _0x6c99=['jayson/promise','http','redis','defaults','localhost','./voicePrefix.socket','request','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','moment','../../config/logger','rpc','../../config/environment'];(function(_0x1197ae,_0x4072e0){var _0x220043=function(_0x46e948){while(--_0x46e948){_0x1197ae['push'](_0x1197ae['shift']());}};_0x220043(++_0x4072e0);}(_0x6c99,0x9b));var _0x96c9=function(_0x390a19,_0x5dd137){_0x390a19=_0x390a19-0x0;var _0x5d8230=_0x6c99[_0x390a19];return _0x5d8230;};'use strict';var _=require(_0x96c9('0x0'));var util=require('util');var moment=require(_0x96c9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x96c9('0x2'))(_0x96c9('0x3'));var config=require(_0x96c9('0x4'));var jayson=require(_0x96c9('0x5'));var client=jayson['client'][_0x96c9('0x6')]({'port':0x232a});config[_0x96c9('0x7')]=_[_0x96c9('0x8')](config[_0x96c9('0x7')],{'host':_0x96c9('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x96c9('0xa'))['register'](socket);function respondWithRpcPromise(_0x12b2e2,_0x50d3da,_0x2e05a5){return new BPromise(function(_0x38ab10,_0x1cf516){return client[_0x96c9('0xb')](_0x12b2e2,_0x2e05a5)['then'](function(_0x35164d){logger[_0x96c9('0xc')](_0x96c9('0xd'),_0x50d3da,_0x96c9('0xe'));logger[_0x96c9('0xf')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x50d3da,_0x96c9('0xe'),JSON[_0x96c9('0x10')](_0x35164d));if(_0x35164d[_0x96c9('0x11')]){if(_0x35164d[_0x96c9('0x11')]['code']===0x1f4){logger['error'](_0x96c9('0xd'),_0x50d3da,_0x35164d[_0x96c9('0x11')][_0x96c9('0x12')]);return _0x1cf516(_0x35164d[_0x96c9('0x11')]['message']);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x50d3da,_0x35164d[_0x96c9('0x11')]['message']);return _0x38ab10(_0x35164d[_0x96c9('0x11')]['message']);}else{logger[_0x96c9('0xc')](_0x96c9('0xd'),_0x50d3da,_0x96c9('0xe'));_0x38ab10(_0x35164d[_0x96c9('0x13')][_0x96c9('0x12')]);}})['catch'](function(_0x34bba8){logger['error'](_0x96c9('0xd'),_0x50d3da,_0x34bba8);_0x1cf516(_0x34bba8);});});}
\ No newline at end of file
index 169c34c..209797c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92d7=['register','length','voicePrefix:','./voicePrefix.events','remove','update','emit','removeListener'];(function(_0x1c8333,_0x543ec9){var _0x2a2d2=function(_0x14da43){while(--_0x14da43){_0x1c8333['push'](_0x1c8333['shift']());}};_0x2a2d2(++_0x543ec9);}(_0x92d7,0x17b));var _0x792d=function(_0x584b55,_0x327e77){_0x584b55=_0x584b55-0x0;var _0x47b94a=_0x92d7[_0x584b55];return _0x47b94a;};'use strict';var VoicePrefixEvents=require(_0x792d('0x0'));var events=['save',_0x792d('0x1'),_0x792d('0x2')];function createListener(_0x27f06d,_0xed6481){return function(_0x46982d){_0xed6481[_0x792d('0x3')](_0x27f06d,_0x46982d);};}function removeListener(_0x1b7394,_0x1c052c){return function(){VoicePrefixEvents[_0x792d('0x4')](_0x1b7394,_0x1c052c);};}exports[_0x792d('0x5')]=function(_0x54374f){for(var _0x3e95c4=0x0,_0x238cab=events[_0x792d('0x6')];_0x3e95c4<_0x238cab;_0x3e95c4++){var _0x11240a=events[_0x3e95c4];var _0x56f730=createListener(_0x792d('0x7')+_0x11240a,_0x54374f);VoicePrefixEvents['on'](_0x11240a,_0x56f730);}};
\ No newline at end of file
+var _0x9189=['remove','update','emit','removeListener','register','length'];(function(_0x1eb5df,_0x441d2e){var _0x52ae30=function(_0x2397c4){while(--_0x2397c4){_0x1eb5df['push'](_0x1eb5df['shift']());}};_0x52ae30(++_0x441d2e);}(_0x9189,0x1b0));var _0x9918=function(_0xd4ab98,_0x2c824c){_0xd4ab98=_0xd4ab98-0x0;var _0x44e4ad=_0x9189[_0xd4ab98];return _0x44e4ad;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0x9918('0x0'),_0x9918('0x1')];function createListener(_0x27ad29,_0x204232){return function(_0x56e470){_0x204232[_0x9918('0x2')](_0x27ad29,_0x56e470);};}function removeListener(_0x568567,_0x4cb5a2){return function(){VoicePrefixEvents[_0x9918('0x3')](_0x568567,_0x4cb5a2);};}exports[_0x9918('0x4')]=function(_0x4a47d4){for(var _0x3ba4a8=0x0,_0x3cb556=events[_0x9918('0x5')];_0x3ba4a8<_0x3cb556;_0x3ba4a8++){var _0x5c926e=events[_0x3ba4a8];var _0x5a0552=createListener('voicePrefix:'+_0x5c926e,_0x4a47d4);VoicePrefixEvents['on'](_0x5c926e,_0x5a0552);}};
\ No newline at end of file
index d849b37..20d4982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x233cb1,_0x8ca9a2){var _0x29ee7e=function(_0x20e277){while(--_0x20e277){_0x233cb1['push'](_0x233cb1['shift']());}};_0x29ee7e(++_0x8ca9a2);}(_0xb10b,0x12a));var _0xbb10=function(_0x36bf88,_0x15c459){_0x36bf88=_0x36bf88-0x0;var _0x332914=_0xb10b[_0x36bf88];return _0x332914;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _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(_0xa143ad,_0x3ca604){var _0x7058ac=function(_0x37a0d1){while(--_0x37a0d1){_0xa143ad['push'](_0xa143ad['shift']());}};_0x7058ac(++_0x3ca604);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index d5cef0e..3674238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93c=['FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\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','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','ENUM','inbound','outbound','default','ringall','fewestcalls','random','rrmemory','linear','wrandom','rrordered','setDataValue','getDataValue','type','dialMethod','roundrobin','progressive','predictive','power','INTEGER','yes','all','join','periodic_announce','joinempty','split','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','booked','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xe93c,0xcf));var _0xce93=function(_0x3583ef,_0x3edc83){_0x3583ef=_0x3583ef-0x0;var _0x3c123c=_0xe93c[_0x3583ef];return _0x3c123c;};'use strict';var Sequelize=require(_0xce93('0x0'));module[_0xce93('0x1')]={'name':{'type':Sequelize[_0xce93('0x2')],'allowNull':![],'unique':_0xce93('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x5'),_0xce93('0x6')),'allowNull':![],'defaultValue':_0xce93('0x5')},'musiconhold':{'type':Sequelize[_0xce93('0x2')],'defaultValue':_0xce93('0x7')},'announce':{'type':Sequelize[_0xce93('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xce93('0x4')]('rr',_0xce93('0x8'),'leastrecent',_0xce93('0x9'),_0xce93('0xa'),_0xce93('0xb'),_0xce93('0xc'),_0xce93('0xd'),_0xce93('0xe')),'allowNull':![],'defaultValue':_0xce93('0x8'),'set':function(_0x30812d){this[_0xce93('0xf')]('strategy',_0x30812d?_0x30812d:_0xce93('0xb'));},'get':function(){var _0x4c66ad=this[_0xce93('0x10')](_0xce93('0x11'));var _0x163738=this['getDataValue'](_0xce93('0x12'));var _0x166aa7=this[_0xce93('0x10')]('strategy');if(_0x4c66ad===_0xce93('0x5')){return _0x166aa7;}if(_0x163738==='booked'&&_0x166aa7===_0xce93('0xb')||_0x163738==='booked'&&_0x166aa7===_0xce93('0x13')){return _0x166aa7;}if(_0x163738===_0xce93('0x14')||_0x163738===_0xce93('0x15')||_0x163738===_0xce93('0x16')){return _0x166aa7;}return null;}},'servicelevel':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xce93('0x17')](0xb)},'timeout':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xce93('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xce93('0x4')]('yes','no'),'defaultValue':_0xce93('0x18')},'autopause':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no',_0xce93('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xce93('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0xce93('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xce93('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xce93('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xce93('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':_0xce93('0x18')},'announce_holdtime':{'type':Sequelize[_0xce93('0x4')]('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xce93('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xce93('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xce93('0x17')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xce93('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xce93('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xce93('0x2')]},'queue_youarenext':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xce93('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xce93('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xce93('0x2')]},'queue_less_than':{'type':Sequelize[_0xce93('0x2')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x47f53b){this[_0xce93('0xf')]('periodic_announce',_0x47f53b?_0x47f53b[_0xce93('0x1a')](','):[]);},'get':function(){return this[_0xce93('0x10')](_0xce93('0x1b'))?this[_0xce93('0x10')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0xce93('0x2')],'defaultValue':_0xce93('0x18'),'set':function(_0x2a5941){this[_0xce93('0xf')]('joinempty',_0x2a5941?_0x2a5941[_0xce93('0x1a')](','):undefined);},'get':function(){return this[_0xce93('0x10')](_0xce93('0x1c'))?this[_0xce93('0x10')](_0xce93('0x1c'))[_0xce93('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x4f95c5){this[_0xce93('0xf')]('leavewhenempty',_0x4f95c5?_0x4f95c5[_0xce93('0x1a')](','):undefined);},'get':function(){return this[_0xce93('0x10')]('leavewhenempty')?this[_0xce93('0x10')](_0xce93('0x1e'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xce93('0x4')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xce93('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xce93('0x2')]},'acw':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':0x0,'set':function(_0x300c8f){this[_0xce93('0xf')]('acw',_0x300c8f);if(_0x300c8f){if(this['getDataValue'](_0xce93('0x20'))<0x2){this[_0xce93('0xf')](_0xce93('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xce93('0x21')},'dialMethod':{'type':Sequelize['ENUM']('preview',_0xce93('0x14'),'power',_0xce93('0x15'),_0xce93('0x22')),'defaultValue':_0xce93('0x14'),'comment':_0xce93('0x23')},'dialLimitChannel':{'type':Sequelize[_0xce93('0x17')](0x4)[_0xce93('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xce93('0x25')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xce93('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xce93('0x26')},'dialPowerLevel':{'type':Sequelize[_0xce93('0x27')](0x2)[_0xce93('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xce93('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x29'),_0xce93('0x2a')),'defaultValue':'dropRate','comment':_0xce93('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xce93('0x27')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xce93('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xce93('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xce93('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xce93('0x2d'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xce93('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x2e')},'dialQueueProject':{'type':Sequelize[_0xce93('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x2f')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x30')},'dialBusyMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x31')},'dialBusyRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x32')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xce93('0x24')],'defaultValue':0x3,'comment':_0xce93('0x33')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x34')},'dialGlobalMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xce93('0x35')},'dialTimezone':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xce93('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x36'),_0xce93('0x37'),_0xce93('0x38')),'defaultValue':_0xce93('0x36')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xce93('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xce93('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xce93('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xce93('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xce93('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0xce93('0x17')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xce93('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xce93('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xce93('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xce93('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xce93('0x17')](0x5)[_0xce93('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xce93('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xce93('0x17')](0x9)[_0xce93('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xce93('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xce93('0x17')](0x5)[_0xce93('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xce93('0x4')](_0xce93('0x43'),_0xce93('0x44')),'defaultValue':_0xce93('0x43')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xce93('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xce93('0x45')},'dialCutDigit':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xce93('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xce93('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x48')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x4a')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x4b')},'dialMachineMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x4c')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xce93('0x4d')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xce93('0x4e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xce93('0x17')](0x5)[_0xce93('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0xce93('0x17')],'allowNull':!![],'comment':_0xce93('0x4f')},'mandatoryDisposition':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':![],'comment':_0xce93('0x50'),'set':function(_0x369666){if(!_0x369666)this[_0xce93('0xf')](_0xce93('0x51'),null);this[_0xce93('0xf')]('mandatoryDisposition',_0x369666);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xce93('0x17')](0x3)[_0xce93('0x24')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xce93('0x1f')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8adf=['Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','ASC','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','inbound','outbound','ENUM','ringall','fewestcalls','rrmemory','rrordered','getDataValue','strategy','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','join','joinempty','split','leavewhenempty','BOOLEAN','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate'];(function(_0x5c6144,_0x17df6b){var _0x5c3ef4=function(_0x3e7655){while(--_0x3e7655){_0x5c6144['push'](_0x5c6144['shift']());}};_0x5c3ef4(++_0x17df6b);}(_0x8adf,0xae));var _0xf8ad=function(_0x4e7a90,_0x5e49bb){_0x4e7a90=_0x4e7a90-0x0;var _0x1cf526=_0x8adf[_0x4e7a90];return _0x1cf526;};'use strict';var Sequelize=require('sequelize');module[_0xf8ad('0x0')]={'name':{'type':Sequelize[_0xf8ad('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xf8ad('0x2'),_0xf8ad('0x3')),'allowNull':![],'defaultValue':_0xf8ad('0x2')},'musiconhold':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0xf8ad('0x4')]('rr',_0xf8ad('0x5'),'leastrecent',_0xf8ad('0x6'),'random',_0xf8ad('0x7'),'linear','wrandom',_0xf8ad('0x8')),'allowNull':![],'defaultValue':_0xf8ad('0x5'),'set':function(_0x4a728b){this['setDataValue']('strategy',_0x4a728b?_0x4a728b:_0xf8ad('0x7'));},'get':function(){var _0x543ebb=this[_0xf8ad('0x9')]('type');var _0x4ecf6f=this['getDataValue']('dialMethod');var _0x4eb83c=this[_0xf8ad('0x9')](_0xf8ad('0xa'));if(_0x543ebb===_0xf8ad('0x2')){return _0x4eb83c;}if(_0x4ecf6f==='booked'&&_0x4eb83c===_0xf8ad('0x7')||_0x4ecf6f===_0xf8ad('0xb')&&_0x4eb83c===_0xf8ad('0xc')){return _0x4eb83c;}if(_0x4ecf6f===_0xf8ad('0xd')||_0x4ecf6f===_0xf8ad('0xe')||_0x4ecf6f===_0xf8ad('0xf')){return _0x4eb83c;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xf8ad('0x1')]},'weight':{'type':Sequelize[_0xf8ad('0x10')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defaultValue':_0xf8ad('0x11')},'autopause':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no',_0xf8ad('0x12')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xf8ad('0x10')](0xb)},'autopausebusy':{'type':Sequelize[_0xf8ad('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xf8ad('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xf8ad('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xf8ad('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no',_0xf8ad('0x13')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no')},'announce_position_limit':{'type':Sequelize[_0xf8ad('0x10')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xf8ad('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xf8ad('0x1')]},'queue_youarenext':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xf8ad('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xf8ad('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xf8ad('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xf8ad('0x1')]},'queue_less_than':{'type':Sequelize[_0xf8ad('0x1')]},'periodic_announce':{'type':Sequelize[_0xf8ad('0x14')],'set':function(_0x238cac){this[_0xf8ad('0x15')](_0xf8ad('0x16'),_0x238cac?_0x238cac[_0xf8ad('0x17')](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0xf8ad('0x9')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':_0xf8ad('0x11'),'set':function(_0x145332){this[_0xf8ad('0x15')](_0xf8ad('0x18'),_0x145332?_0x145332[_0xf8ad('0x17')](','):undefined);},'get':function(){return this[_0xf8ad('0x9')](_0xf8ad('0x18'))?this[_0xf8ad('0x9')](_0xf8ad('0x18'))[_0xf8ad('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':'no','set':function(_0x49d06c){this[_0xf8ad('0x15')](_0xf8ad('0x1a'),_0x49d06c?_0x49d06c[_0xf8ad('0x17')](','):undefined);},'get':function(){return this['getDataValue'](_0xf8ad('0x1a'))?this[_0xf8ad('0x9')](_0xf8ad('0x1a'))[_0xf8ad('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xf8ad('0x4')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xf8ad('0x11'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xf8ad('0x1')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':0x0,'set':function(_0x171b25){this[_0xf8ad('0x15')]('acw',_0x171b25);if(_0x171b25){if(this[_0xf8ad('0x9')](_0xf8ad('0x1c'))<0x2){this[_0xf8ad('0x15')](_0xf8ad('0x1c'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xf8ad('0x10')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0xf8ad('0x4')](_0xf8ad('0x1d'),'progressive',_0xf8ad('0xf'),_0xf8ad('0xe'),_0xf8ad('0xb')),'defaultValue':'progressive','comment':_0xf8ad('0x1e')},'dialLimitChannel':{'type':Sequelize[_0xf8ad('0x10')](0x4)[_0xf8ad('0x1f')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf8ad('0x20')},'dialLimitQueue':{'type':Sequelize[_0xf8ad('0x10')](0x4)[_0xf8ad('0x1f')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0xf8ad('0x21')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xf8ad('0x22'),'dropRate'),'defaultValue':_0xf8ad('0x23'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xf8ad('0x21')](0x2)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xf8ad('0x24')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0xf8ad('0x1f')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xf8ad('0x25')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf8ad('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf8ad('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf8ad('0x26')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xf8ad('0x27'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xf8ad('0x1')],'comment':_0xf8ad('0x28')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x29')},'dialBusyMaxRetry':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf8ad('0x2a')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x2b')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x2c')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf8ad('0x2d')},'dialTimezone':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':_0xf8ad('0x2e')},'dialPrefix':{'type':Sequelize[_0xf8ad('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0xf8ad('0x2f'),_0xf8ad('0x30')),'defaultValue':_0xf8ad('0x31')},'dialAMDActive':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':0x0,'comment':_0xf8ad('0x32')},'dialAMDInitialSilence':{'type':Sequelize[_0xf8ad('0x10')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf8ad('0x33')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xf8ad('0x1f')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf8ad('0x34')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf8ad('0x35')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf8ad('0x36')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf8ad('0x37')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf8ad('0x10')](0x9)[_0xf8ad('0x1f')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf8ad('0x38')},'dialRecallMeTimeout':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xf8ad('0x4')]('DESC',_0xf8ad('0x39')),'defaultValue':_0xf8ad('0x3a')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf8ad('0x3b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x3c')},'dialDropMaxRetry':{'type':Sequelize[_0xf8ad('0x10')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf8ad('0x3d')},'dialDropRetryFrequency':{'type':Sequelize[_0xf8ad('0x10')](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x3e')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf8ad('0x3f')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x40')},'dialMachineMaxRetry':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf8ad('0x41')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf8ad('0x10')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf8ad('0x1f')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf8ad('0x42')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf8ad('0x10')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':![],'comment':_0xf8ad('0x43'),'set':function(_0x2424a4){if(!_0x2424a4)this['setDataValue'](_0xf8ad('0x44'),null);this[_0xf8ad('0x15')](_0xf8ad('0x45'),_0x2424a4);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xf8ad('0x10')](0x3)[_0xf8ad('0x1f')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xf8ad('0x1b')],'defaultValue':![]}};
\ No newline at end of file
index c5dc0aa..93d222a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe55d=['UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','params','getHoppers','findOne','CmHopper','VoiceQueueId','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','Team','teams','Agents','online','interface','flatMap','forEach','penalty','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','UserVoiceQueueRt','voicePause','emit','userVoiceQueue:save','removeTeams','ids','User','select','field','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','compact','isEmpty','addAgents','spread','isNil','format','SIP/%s','removeAgents','isArray','userVoiceQueue:remove','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','into','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','insert','cm_hopper','deletedAt\x20IS\x20NULL','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','NOW()','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','ignore','map','value','includes','type','find','error','stack','name','send','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceQueue','includeAll','findAll','include','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','outbound','UserProfileSection','userProfileId','autoAssociation'];(function(_0x58fae8,_0x104d38){var _0x18f808=function(_0x47c43d){while(--_0x47c43d){_0x58fae8['push'](_0x58fae8['shift']());}};_0x18f808(++_0x104d38);}(_0xe55d,0x126));var _0xde55=function(_0x13a880,_0x3e4e6b){_0x13a880=_0x13a880-0x0;var _0x3331c=_0xe55d[_0x13a880];return _0x3331c;};'use strict';var emlformat=require(_0xde55('0x0'));var rimraf=require(_0xde55('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xde55('0x2'));var rp=require(_0xde55('0x3'));var moment=require(_0xde55('0x4'));var BPromise=require(_0xde55('0x5'));var Mustache=require(_0xde55('0x6'));var util=require(_0xde55('0x7'));var path=require('path');var sox=require(_0xde55('0x8'));var csv=require(_0xde55('0x9'));var ejs=require(_0xde55('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xde55('0xb'));var squel=require(_0xde55('0xc'));var crypto=require(_0xde55('0xd'));var jsforce=require(_0xde55('0xe'));var deskjs=require(_0xde55('0xf'));var toCsv=require(_0xde55('0x9'));var querystring=require('querystring');var Papa=require(_0xde55('0x10'));var Redis=require(_0xde55('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xde55('0x12'));var hardwareService=require(_0xde55('0x13'));var logger=require('../../config/logger')(_0xde55('0x14'));var utils=require(_0xde55('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xde55('0x16'));var db=require(_0xde55('0x17'))['db'];config[_0xde55('0x18')]=_['defaults'](config[_0xde55('0x18')],{'host':_0xde55('0x19'),'port':0x18eb});var socket=require(_0xde55('0x1a'))(new Redis(config[_0xde55('0x18')]));require(_0xde55('0x1b'))[_0xde55('0x1c')](socket);function respondWithStatusCode(_0x5844c9,_0x5ac66e){_0x5ac66e=_0x5ac66e||0xcc;return function(_0x246d37){if(_0x246d37){return _0x5844c9[_0xde55('0x1d')](_0x5ac66e);}return _0x5844c9['status'](_0x5ac66e)[_0xde55('0x1e')]();};}function respondWithResult(_0x3dbdcb,_0x2de955){_0x2de955=_0x2de955||0xc8;return function(_0x40c59a){if(_0x40c59a){return _0x3dbdcb[_0xde55('0x1f')](_0x2de955)[_0xde55('0x20')](_0x40c59a);}};}function respondWithFilteredResult(_0x2411a4,_0x400635){return function(_0x4a97e2){if(_0x4a97e2){var _0x1abffb=typeof _0x400635[_0xde55('0x21')]===_0xde55('0x22')&&typeof _0x400635[_0xde55('0x23')]==='undefined';var _0x4113f4=_0x4a97e2['count'];var _0x45a7e5=_0x1abffb?0x0:_0x400635[_0xde55('0x21')];var _0x5c0a7e=_0x1abffb?_0x4a97e2[_0xde55('0x24')]:_0x400635['offset']+_0x400635[_0xde55('0x23')];var _0x5597a4;if(_0x5c0a7e>=_0x4113f4){_0x5c0a7e=_0x4113f4;_0x5597a4=0xc8;}else{_0x5597a4=0xce;}_0x2411a4[_0xde55('0x1f')](_0x5597a4);return _0x2411a4['set'](_0xde55('0x25'),_0x45a7e5+'-'+_0x5c0a7e+'/'+_0x4113f4)[_0xde55('0x20')](_0x4a97e2);}return null;};}function patchUpdates(_0x415463){return function(_0x2dacc6){try{jsonpatch[_0xde55('0x26')](_0x2dacc6,_0x415463,!![]);}catch(_0x29e69c){return BPromise[_0xde55('0x27')](_0x29e69c);}return _0x2dacc6[_0xde55('0x28')]();};}function saveUpdates(_0x2e5595,_0x4ea2dd){return function(_0x4bce65){if(_0x4bce65){return _0x4bce65[_0xde55('0x29')](_0x2e5595)[_0xde55('0x2a')](function(_0x15a04b){return _0x15a04b;});}return null;};}function removeEntity(_0x36488b,_0x2ece31){return function(_0x4370e6){if(_0x4370e6){return _0x4370e6[_0xde55('0x2b')]()[_0xde55('0x2a')](function(){var _0x35f246=_0x4370e6[_0xde55('0x2c')]({'plain':!![]});var _0xee8062=[{'name':_0xde55('0x2d'),'value':_0xde55('0x2e'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x2073c1=_(_0xee8062)['filter'](_0xde55('0x2f'))[_0xde55('0x30')](_0xde55('0x31'))['value']();if(_[_0xde55('0x32')](_0x2073c1,_0x35f246[_0xde55('0x33')])){return;}var _0x5babe1=_[_0xde55('0x34')](_0xee8062,[_0xde55('0x31'),_0x35f246[_0xde55('0x33')]])['name'];return db['UserProfileResource'][_0xde55('0x2b')]({'where':{'type':_0x5babe1,'resourceId':_0x35f246['id']}})[_0xde55('0x2a')](function(){return _0x4370e6;});})[_0xde55('0x2a')](function(){_0x36488b[_0xde55('0x1f')](0xcc)[_0xde55('0x1e')]();});}};}function handleEntityNotFound(_0x2f0e00,_0x576a03){return function(_0x2467e2){if(!_0x2467e2){_0x2f0e00[_0xde55('0x1d')](0x194);}return _0x2467e2;};}function handleError(_0xfb293c,_0x485c88){_0x485c88=_0x485c88||0x1f4;return function(_0x3ee702){logger[_0xde55('0x35')](_0x3ee702[_0xde55('0x36')]);if(_0x3ee702[_0xde55('0x37')]){delete _0x3ee702[_0xde55('0x37')];}_0xfb293c[_0xde55('0x1f')](_0x485c88)[_0xde55('0x38')](_0x3ee702);};}exports['index']=function(_0x43c8eb,_0x3daf72){var _0x3dc778={},_0x557097={},_0x17a0c5={'count':0x0,'rows':[]};var _0x4e50dd=_[_0xde55('0x30')](db['VoiceQueue'][_0xde55('0x39')],function(_0x1dab76){return{'name':_0x1dab76['fieldName'],'type':_0x1dab76['type']['key']};});_0x557097[_0xde55('0x3a')]=_[_0xde55('0x30')](_0x4e50dd,_0xde55('0x37'));_0x557097[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x43c8eb[_0xde55('0x3b')]);_0x557097[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x557097['model'],_0x557097['query']);_0x3dc778[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x557097[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x43c8eb[_0xde55('0x3b')][_0xde55('0x40')]));_0x3dc778[_0xde55('0x3f')]=_0x3dc778[_0xde55('0x3f')][_0xde55('0x41')]?_0x3dc778[_0xde55('0x3f')]:_0x557097[_0xde55('0x3a')];if(!_0x43c8eb[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x3dc778[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x43c8eb[_0xde55('0x3b')][_0xde55('0x23')]);_0x3dc778[_0xde55('0x21')]=qs['offset'](_0x43c8eb[_0xde55('0x3b')]['offset']);}_0x3dc778[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x43c8eb[_0xde55('0x3b')][_0xde55('0x45')]);_0x3dc778[_0xde55('0x46')]=qs[_0xde55('0x3d')](_[_0xde55('0x47')](_0x43c8eb[_0xde55('0x3b')],_0x557097['filters']),_0x4e50dd);if(_0x43c8eb[_0xde55('0x3b')][_0xde55('0x48')]){_0x3dc778[_0xde55('0x46')]=_['merge'](_0x3dc778[_0xde55('0x46')],{'$or':_[_0xde55('0x30')](_0x4e50dd,function(_0x5f183a){if(_0x5f183a[_0xde55('0x33')]!=='VIRTUAL'){var _0x4703f3={};_0x4703f3[_0x5f183a[_0xde55('0x37')]]={'$like':'%'+_0x43c8eb[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x4703f3;}})});}_0x3dc778=_[_0xde55('0x49')]({},_0x3dc778,_0x43c8eb[_0xde55('0x4a')]);var _0x3b5ad5={'where':_0x3dc778[_0xde55('0x46')]};return db[_0xde55('0x4b')][_0xde55('0x24')](_0x3b5ad5)['then'](function(_0x6a05a1){_0x17a0c5['count']=_0x6a05a1;if(_0x43c8eb[_0xde55('0x3b')][_0xde55('0x4c')]){_0x3dc778['include']=[{'all':!![]}];}return db[_0xde55('0x4b')][_0xde55('0x4d')](_0x3dc778);})[_0xde55('0x2a')](function(_0x38a9a0){_0x17a0c5['rows']=_0x38a9a0;return _0x17a0c5;})['then'](respondWithFilteredResult(_0x3daf72,_0x3dc778))['catch'](handleError(_0x3daf72,null));};exports['show']=function(_0x382a21,_0xab1c10){var _0x5ef7e1={'raw':![],'where':{'id':_0x382a21['params']['id']}},_0x14e9fb={};_0x14e9fb['model']=_[_0xde55('0x3c')](db[_0xde55('0x4b')]['rawAttributes']);_0x14e9fb['query']=_[_0xde55('0x3c')](_0x382a21[_0xde55('0x3b')]);_0x14e9fb[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x14e9fb[_0xde55('0x3a')],_0x14e9fb[_0xde55('0x3b')]);_0x5ef7e1[_0xde55('0x3f')]=_['intersection'](_0x14e9fb[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x382a21['query'][_0xde55('0x40')]));_0x5ef7e1[_0xde55('0x3f')]=_0x5ef7e1[_0xde55('0x3f')][_0xde55('0x41')]?_0x5ef7e1[_0xde55('0x3f')]:_0x14e9fb[_0xde55('0x3a')];if(_0x382a21[_0xde55('0x3b')][_0xde55('0x4c')]){_0x5ef7e1[_0xde55('0x4e')]=[{'all':!![]}];}_0x5ef7e1=_[_0xde55('0x49')]({},_0x5ef7e1,_0x382a21[_0xde55('0x4a')]);return db[_0xde55('0x4b')][_0xde55('0x34')](_0x5ef7e1)[_0xde55('0x2a')](handleEntityNotFound(_0xab1c10,null))[_0xde55('0x2a')](respondWithResult(_0xab1c10,null))[_0xde55('0x4f')](handleError(_0xab1c10,null));};exports['create']=function(_0x5630f3,_0x58d52e){return db[_0xde55('0x4b')]['create'](_0x5630f3[_0xde55('0x50')],{})[_0xde55('0x2a')](function(_0x5d3754){var _0x2abfa5=_0x5630f3[_0xde55('0x51')]['get']({'plain':!![]});if(!_0x2abfa5)throw new Error(_0xde55('0x52'));if(_0x2abfa5[_0xde55('0x53')]===_0xde55('0x51')){var _0x32838a=_0x5d3754['get']({'plain':!![]});var _0x318980=[{'name':_0xde55('0x2d'),'value':_0xde55('0x2e')},{'name':'QueueCampaigns','value':_0xde55('0x54')}];var _0x3d118a=_[_0xde55('0x34')](_0x318980,[_0xde55('0x31'),_0x32838a['type']])['name'];return db[_0xde55('0x55')][_0xde55('0x34')]({'where':{'name':_0x3d118a,'userProfileId':_0x2abfa5[_0xde55('0x56')]},'raw':!![]})[_0xde55('0x2a')](function(_0x424ad4){if(_0x424ad4&&_0x424ad4[_0xde55('0x57')]===0x0){return db[_0xde55('0x58')]['create']({'name':_0x32838a[_0xde55('0x37')],'resourceId':_0x32838a['id'],'type':_0x424ad4[_0xde55('0x37')],'sectionId':_0x424ad4['id']},{})[_0xde55('0x2a')](function(){return _0x5d3754;});}else{return _0x5d3754;}})[_0xde55('0x4f')](function(_0x283066){logger[_0xde55('0x35')](_0xde55('0x59'),_0x283066);throw _0x283066;});}return _0x5d3754;})[_0xde55('0x2a')](respondWithResult(_0x58d52e,0xc9))[_0xde55('0x4f')](handleError(_0x58d52e,null));};exports['clone']=function(_0x41fc15,_0x354cbd){var _0x7ccd55={'where':{'id':_0x41fc15['params']['id']}},_0x5d5c8f={};_0x5d5c8f[_0xde55('0x3a')]=_['keys'](db[_0xde55('0x4b')]['rawAttributes']);_0x7ccd55[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x5d5c8f[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x41fc15['query'][_0xde55('0x40')]));_0x7ccd55['attributes']=_0x7ccd55[_0xde55('0x3f')][_0xde55('0x41')]?_0x7ccd55['attributes']:_0x5d5c8f['model'];if(_0x41fc15[_0xde55('0x3b')][_0xde55('0x4c')]){_0x7ccd55[_0xde55('0x4e')]=[{'all':!![]}];}_0x7ccd55=_[_0xde55('0x49')]({},_0x7ccd55,_0x41fc15[_0xde55('0x4a')]);return db['VoiceQueue'][_0xde55('0x34')](_0x7ccd55)['then'](handleEntityNotFound(_0x354cbd,null))[_0xde55('0x2a')](function(_0x444103){if(_0x444103){var _0x31f08e=_0x444103[_0xde55('0x2c')]({'plain':!![]});_0x31f08e=qs['omit'](_0x31f08e,['id',_0xde55('0x5a'),_0xde55('0x5b')]);_0x41fc15[_0xde55('0x50')]=_[_0xde55('0x5c')](_0x41fc15['body'],['id','createdAt',_0xde55('0x5b')]);return db[_0xde55('0x4b')]['create'](_['merge'](_0x31f08e,_0x41fc15[_0xde55('0x50')]),{'include':_0x41fc15[_0xde55('0x3b')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x3a2610){var _0x1dedd1=_0x41fc15['user']['get']({'plain':!![]});if(!_0x1dedd1)throw new Error(_0xde55('0x52'));if(_0x1dedd1[_0xde55('0x53')]==='user'){var _0x44648a=_0x3a2610[_0xde55('0x2c')]({'plain':!![]});var _0x4e5ffd=[{'name':_0xde55('0x2d'),'value':'inbound'},{'name':'QueueCampaigns','value':_0xde55('0x54')}];var _0x3bd0ce=_[_0xde55('0x34')](_0x4e5ffd,[_0xde55('0x31'),_0x44648a['type']])[_0xde55('0x37')];return db[_0xde55('0x55')][_0xde55('0x34')]({'where':{'name':_0x3bd0ce,'userProfileId':_0x1dedd1[_0xde55('0x56')]},'raw':!![]})[_0xde55('0x2a')](function(_0x594ad7){if(_0x594ad7&&_0x594ad7[_0xde55('0x57')]===0x0){return db[_0xde55('0x58')]['create']({'name':_0x44648a[_0xde55('0x37')],'resourceId':_0x44648a['id'],'type':_0x594ad7[_0xde55('0x37')],'sectionId':_0x594ad7['id']},{})[_0xde55('0x2a')](function(){return _0x3a2610;});}else{return _0x3a2610;}})[_0xde55('0x4f')](function(_0x22a6e5){logger[_0xde55('0x35')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x22a6e5);throw _0x22a6e5;});}return _0x3a2610;});}})[_0xde55('0x2a')](respondWithResult(_0x354cbd,0xc9))[_0xde55('0x4f')](handleError(_0x354cbd,null));};exports[_0xde55('0x29')]=function(_0x233e1b,_0x18b01d){if(_0x233e1b[_0xde55('0x50')]['id']){delete _0x233e1b['body']['id'];}return db[_0xde55('0x4b')]['find']({'where':{'id':_0x233e1b[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x18b01d,null))['then'](saveUpdates(_0x233e1b[_0xde55('0x50')],null))['then'](respondWithResult(_0x18b01d,null))['catch'](handleError(_0x18b01d,null));};exports[_0xde55('0x2b')]=function(_0xf22dda,_0x503e9d){return db['VoiceQueue'][_0xde55('0x34')]({'where':{'id':_0xf22dda['params']['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x503e9d,null))[_0xde55('0x2a')](removeEntity(_0x503e9d,null))['catch'](handleError(_0x503e9d,null));};exports[_0xde55('0x5e')]=function(_0x1f07ec,_0x4198db,_0x1771d4){var _0x395151={'raw':![],'where':{}};var _0x5d16fc={};var _0x5c5311={'count':0x0,'rows':[]};return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x1f07ec[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x4198db,null))[_0xde55('0x2a')](function(_0x3e5e80){if(_0x3e5e80){_0x5d16fc['model']=_[_0xde55('0x3c')](db[_0xde55('0x60')][_0xde55('0x39')]);_0x5d16fc['query']=_[_0xde55('0x3c')](_0x1f07ec[_0xde55('0x3b')]);_0x5d16fc['filters']=_[_0xde55('0x3e')](_0x5d16fc[_0xde55('0x3a')],_0x5d16fc[_0xde55('0x3b')]);_0x395151[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x5d16fc[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x1f07ec['query'][_0xde55('0x40')]));_0x395151[_0xde55('0x3f')]=_0x395151[_0xde55('0x3f')][_0xde55('0x41')]?_0x395151[_0xde55('0x3f')]:_0x5d16fc[_0xde55('0x3a')];if(!_0x1f07ec[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x395151[_0xde55('0x23')]=qs['limit'](_0x1f07ec[_0xde55('0x3b')][_0xde55('0x23')]);_0x395151[_0xde55('0x21')]=qs[_0xde55('0x21')](_0x1f07ec[_0xde55('0x3b')][_0xde55('0x21')]);}_0x395151[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x1f07ec[_0xde55('0x3b')]['sort']);_0x395151['where']=qs['filters'](_[_0xde55('0x47')](_0x1f07ec[_0xde55('0x3b')],_0x5d16fc[_0xde55('0x3d')]));_0x395151[_0xde55('0x46')][_0xde55('0x61')]=_0x3e5e80['id'];if(_0x1f07ec[_0xde55('0x3b')][_0xde55('0x48')]){_0x395151['where']=_[_0xde55('0x49')](_0x395151[_0xde55('0x46')],{'$or':_['map'](_0x395151[_0xde55('0x3f')],function(_0x8d6e4a){var _0x1d2fd1={};_0x1d2fd1[_0x8d6e4a]={'$like':'%'+_0x1f07ec['query'][_0xde55('0x48')]+'%'};return _0x1d2fd1;})});}_0x395151=_[_0xde55('0x49')]({},_0x395151,_0x1f07ec[_0xde55('0x4a')]);return db[_0xde55('0x60')][_0xde55('0x24')]({'where':_0x395151[_0xde55('0x46')]})['then'](function(_0x4439e4){_0x5c5311['count']=_0x4439e4;if(_0x1f07ec[_0xde55('0x3b')]['includeAll']){_0x395151[_0xde55('0x4e')]=[{'all':!![]}];}return db['CmHopper'][_0xde55('0x4d')](_0x395151);})[_0xde55('0x2a')](function(_0xc30d61){_0x5c5311['rows']=_0xc30d61;return _0x5c5311;});}})['then'](respondWithFilteredResult(_0x4198db,_0x395151))[_0xde55('0x4f')](handleError(_0x4198db,null));};exports['getHopperHistories']=function(_0x4e1a7a,_0x594d0b,_0x1bca28){var _0x36bca5={'raw':!![],'where':{}};var _0xe1b093={};var _0x29ffed={'count':0x0,'rows':[]};return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x4e1a7a[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x594d0b,null))[_0xde55('0x2a')](function(_0x1c8a80){if(_0x1c8a80){_0xe1b093[_0xde55('0x3a')]=_['keys'](db[_0xde55('0x62')][_0xde55('0x39')]);_0xe1b093[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x4e1a7a[_0xde55('0x3b')]);_0xe1b093['filters']=_[_0xde55('0x3e')](_0xe1b093[_0xde55('0x3a')],_0xe1b093[_0xde55('0x3b')]);_0x36bca5[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0xe1b093['model'],qs[_0xde55('0x40')](_0x4e1a7a['query'][_0xde55('0x40')]));_0x36bca5[_0xde55('0x3f')]=_0x36bca5[_0xde55('0x3f')]['length']?_0x36bca5['attributes']:_0xe1b093['model'];if(!_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x36bca5[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x4e1a7a['query'][_0xde55('0x23')]);_0x36bca5['offset']=qs[_0xde55('0x21')](_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x21')]);}_0x36bca5['order']=qs[_0xde55('0x45')](_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x45')]);_0x36bca5['where']=qs['filters'](_[_0xde55('0x47')](_0x4e1a7a[_0xde55('0x3b')],_0xe1b093['filters']));_0x36bca5[_0xde55('0x46')]['VoiceQueueId']=_0x1c8a80['id'];if(_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x48')]){_0x36bca5[_0xde55('0x46')]=_[_0xde55('0x49')](_0x36bca5[_0xde55('0x46')],{'$or':_[_0xde55('0x30')](_0x36bca5['attributes'],function(_0x2a5c73){var _0x33dd3a={};_0x33dd3a[_0x2a5c73]={'$like':'%'+_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x33dd3a;})});}_0x36bca5=_[_0xde55('0x49')]({},_0x36bca5,_0x4e1a7a[_0xde55('0x4a')]);return db[_0xde55('0x62')]['count']({'where':_0x36bca5[_0xde55('0x46')]})[_0xde55('0x2a')](function(_0x449109){_0x29ffed[_0xde55('0x24')]=_0x449109;if(_0x4e1a7a[_0xde55('0x3b')][_0xde55('0x4c')]){_0x36bca5[_0xde55('0x4e')]=[{'all':!![]}];}return db[_0xde55('0x62')][_0xde55('0x4d')](_0x36bca5);})['then'](function(_0x284878){_0x29ffed[_0xde55('0x63')]=_0x284878;return _0x29ffed;});}})['then'](respondWithFilteredResult(_0x594d0b,_0x36bca5))[_0xde55('0x4f')](handleError(_0x594d0b,null));};exports[_0xde55('0x64')]=function(_0x523414,_0x51da1c,_0x1138a3){var _0x57e4ff={'raw':!![],'where':{}};var _0x48d183={};var _0x178262={'count':0x0,'rows':[]};return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x523414['params']['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x51da1c,null))[_0xde55('0x2a')](function(_0x496aa7){if(_0x496aa7){_0x48d183[_0xde55('0x3a')]=_[_0xde55('0x3c')](db[_0xde55('0x65')][_0xde55('0x39')]);_0x48d183[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x523414[_0xde55('0x3b')]);_0x48d183[_0xde55('0x3d')]=_['intersection'](_0x48d183['model'],_0x48d183[_0xde55('0x3b')]);_0x57e4ff[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x48d183[_0xde55('0x3a')],qs['fields'](_0x523414[_0xde55('0x3b')][_0xde55('0x40')]));_0x57e4ff[_0xde55('0x3f')]=_0x57e4ff[_0xde55('0x3f')][_0xde55('0x41')]?_0x57e4ff['attributes']:_0x48d183['model'];if(!_0x523414[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x57e4ff[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x523414[_0xde55('0x3b')][_0xde55('0x23')]);_0x57e4ff['offset']=qs[_0xde55('0x21')](_0x523414['query'][_0xde55('0x21')]);}_0x57e4ff[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x523414[_0xde55('0x3b')][_0xde55('0x45')]);_0x57e4ff['where']=qs[_0xde55('0x3d')](_['pick'](_0x523414['query'],_0x48d183['filters']));_0x57e4ff[_0xde55('0x46')][_0xde55('0x61')]=_0x496aa7['id'];if(_0x523414[_0xde55('0x3b')][_0xde55('0x48')]){_0x57e4ff[_0xde55('0x46')]=_[_0xde55('0x49')](_0x57e4ff['where'],{'$or':_[_0xde55('0x30')](_0x57e4ff[_0xde55('0x3f')],function(_0x457fde){var _0x5e7195={};_0x5e7195[_0x457fde]={'$like':'%'+_0x523414[_0xde55('0x3b')]['filter']+'%'};return _0x5e7195;})});}_0x57e4ff=_[_0xde55('0x49')]({},_0x57e4ff,_0x523414[_0xde55('0x4a')]);return db[_0xde55('0x65')][_0xde55('0x24')]({'where':_0x57e4ff['where']})[_0xde55('0x2a')](function(_0x1668fe){_0x178262[_0xde55('0x24')]=_0x1668fe;if(_0x523414[_0xde55('0x3b')][_0xde55('0x4c')]){_0x57e4ff['include']=[{'all':!![]}];}return db[_0xde55('0x65')][_0xde55('0x4d')](_0x57e4ff);})[_0xde55('0x2a')](function(_0x4ce5ab){_0x178262[_0xde55('0x63')]=_0x4ce5ab;return _0x178262;});}})[_0xde55('0x2a')](respondWithFilteredResult(_0x51da1c,_0x57e4ff))[_0xde55('0x4f')](handleError(_0x51da1c,null));};exports['getHopperBlacks']=function(_0x26bd73,_0x5c9fc9,_0x394303){var _0x46981a={'raw':!![],'where':{}};var _0x1b560d={};var _0x36d229={'count':0x0,'rows':[]};return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x26bd73[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x5c9fc9,null))['then'](function(_0x34a99d){if(_0x34a99d){_0x1b560d[_0xde55('0x3a')]=_[_0xde55('0x3c')](db[_0xde55('0x66')][_0xde55('0x39')]);_0x1b560d[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x26bd73[_0xde55('0x3b')]);_0x1b560d[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x1b560d[_0xde55('0x3a')],_0x1b560d[_0xde55('0x3b')]);_0x46981a[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x1b560d[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x26bd73[_0xde55('0x3b')][_0xde55('0x40')]));_0x46981a[_0xde55('0x3f')]=_0x46981a[_0xde55('0x3f')]['length']?_0x46981a[_0xde55('0x3f')]:_0x1b560d[_0xde55('0x3a')];if(!_0x26bd73[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x46981a['limit']=qs[_0xde55('0x23')](_0x26bd73['query'][_0xde55('0x23')]);_0x46981a['offset']=qs[_0xde55('0x21')](_0x26bd73['query'][_0xde55('0x21')]);}_0x46981a[_0xde55('0x44')]=qs['sort'](_0x26bd73['query']['sort']);_0x46981a[_0xde55('0x46')]=qs[_0xde55('0x3d')](_[_0xde55('0x47')](_0x26bd73[_0xde55('0x3b')],_0x1b560d['filters']));_0x46981a['where']['VoiceQueueId']=_0x34a99d['id'];if(_0x26bd73['query'][_0xde55('0x48')]){_0x46981a['where']=_[_0xde55('0x49')](_0x46981a[_0xde55('0x46')],{'$or':_['map'](_0x46981a[_0xde55('0x3f')],function(_0x5644cf){var _0x2d096f={};_0x2d096f[_0x5644cf]={'$like':'%'+_0x26bd73['query'][_0xde55('0x48')]+'%'};return _0x2d096f;})});}_0x46981a=_[_0xde55('0x49')]({},_0x46981a,_0x26bd73[_0xde55('0x4a')]);return db[_0xde55('0x66')][_0xde55('0x24')]({'where':_0x46981a[_0xde55('0x46')]})[_0xde55('0x2a')](function(_0x20f704){_0x36d229[_0xde55('0x24')]=_0x20f704;if(_0x26bd73['query'][_0xde55('0x4c')]){_0x46981a[_0xde55('0x4e')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xde55('0x4d')](_0x46981a);})[_0xde55('0x2a')](function(_0x38beb0){_0x36d229['rows']=_0x38beb0;return _0x36d229;});}})['then'](respondWithFilteredResult(_0x5c9fc9,_0x46981a))['catch'](handleError(_0x5c9fc9,null));};exports[_0xde55('0x67')]=function(_0x2b3a18,_0x4ecc5c,_0x887580){var _0x398b98={};var _0x5b3633={};var _0x176152;var _0x2db2c2;return db[_0xde55('0x4b')]['findOne']({'where':{'id':_0x2b3a18['params']['id']}})['then'](handleEntityNotFound(_0x4ecc5c,null))[_0xde55('0x2a')](function(_0x4738ed){if(_0x4738ed){_0x176152=_0x4738ed;_0x5b3633[_0xde55('0x3a')]=_[_0xde55('0x3c')](db[_0xde55('0x68')][_0xde55('0x39')]);_0x5b3633[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x2b3a18[_0xde55('0x3b')]);_0x5b3633['filters']=_['intersection'](_0x5b3633[_0xde55('0x3a')],_0x5b3633['query']);_0x398b98[_0xde55('0x3f')]=_[_0xde55('0x3e')](_0x5b3633[_0xde55('0x3a')],qs['fields'](_0x2b3a18[_0xde55('0x3b')][_0xde55('0x40')]));_0x398b98[_0xde55('0x3f')]=_0x398b98[_0xde55('0x3f')][_0xde55('0x41')]?_0x398b98[_0xde55('0x3f')]:_0x5b3633[_0xde55('0x3a')];_0x398b98[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x2b3a18[_0xde55('0x3b')]['sort']);_0x398b98[_0xde55('0x46')]=qs[_0xde55('0x3d')](_[_0xde55('0x47')](_0x2b3a18[_0xde55('0x3b')],_0x5b3633['filters']));if(_0x2b3a18['query'][_0xde55('0x48')]){_0x398b98[_0xde55('0x46')]=_[_0xde55('0x49')](_0x398b98[_0xde55('0x46')],{'$or':_['map'](_0x398b98[_0xde55('0x3f')],function(_0x4d6b3d){var _0x110b50={};_0x110b50[_0x4d6b3d]={'$like':'%'+_0x2b3a18[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x110b50;})});}_0x398b98=_[_0xde55('0x49')]({},_0x398b98,_0x2b3a18[_0xde55('0x4a')]);return _0x176152['getTeams'](_0x398b98);}})[_0xde55('0x2a')](function(_0x1e4b13){if(_0x1e4b13){_0x2db2c2=_0x1e4b13[_0xde55('0x41')];if(!_0x2b3a18[_0xde55('0x3b')][_0xde55('0x42')]('nolimit')){_0x398b98[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x2b3a18[_0xde55('0x3b')][_0xde55('0x23')]);_0x398b98[_0xde55('0x21')]=qs[_0xde55('0x21')](_0x2b3a18[_0xde55('0x3b')][_0xde55('0x21')]);}return _0x176152[_0xde55('0x67')](_0x398b98);}})[_0xde55('0x2a')](function(_0x130502){if(_0x130502){return _0x130502?{'count':_0x2db2c2,'rows':_0x130502}:null;}})[_0xde55('0x2a')](respondWithResult(_0x4ecc5c,null))[_0xde55('0x4f')](handleError(_0x4ecc5c,null));};exports['addTeams']=function(_0x71e3c3,_0x3c48fb,_0x39b128){var _0x20764b=_0x71e3c3[_0xde55('0x50')][_0xde55('0x69')];var _0x1d805e=_[_0xde55('0x30')](_0x20764b,'id');return db['Team']['findAll']({'where':{'id':_0x1d805e},'attributes':['id'],'include':[{'model':db['User'],'as':_0xde55('0x6a'),'attributes':['id',_0xde55('0x37'),_0xde55('0x6b'),'voicePause',_0xde55('0x6c')],'raw':!![]}]})[_0xde55('0x2a')](function(_0xb2abb3){if(_0xb2abb3){var _0x4b7429=_[_0xde55('0x6d')](_0xb2abb3,function(_0x4e6b51){var _0x5d9e55=_0x4e6b51[_0xde55('0x2c')]({'plain':!![]});_0x5d9e55[_0xde55('0x6a')][_0xde55('0x6e')](function(_0x524d64){_0x524d64[_0xde55('0x6f')]=_[_0xde55('0x34')](_0x20764b,{'id':_0x5d9e55['id']})['penalty'];});return _0x5d9e55[_0xde55('0x6a')];});return db['VoiceQueue'][_0xde55('0x34')]({'where':{'id':_0x71e3c3[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](function(_0x5e925b){return db['sequelize'][_0xde55('0x70')](function(_0x27540e){return _0x5e925b['addTeams'](_0x1d805e,{'transaction':_0x27540e})['then'](function(){return BPromise[_0xde55('0x71')](_0x20764b,function(_0x532fa2){return db[_0xde55('0x72')][_0xde55('0x73')]({'TeamId':_0x532fa2['id'],'VoiceQueueId':_0x71e3c3[_0xde55('0x5d')]['id'],'penalty':_0x532fa2['penalty']},{'transaction':_0x27540e});});})[_0xde55('0x2a')](function(){return BPromise[_0xde55('0x71')](_0x4b7429,function(_0x58a40f){return db[_0xde55('0x74')]['findOrCreate']({'where':{'UserId':_0x58a40f['id'],'VoiceQueueId':_0x71e3c3[_0xde55('0x5d')]['id']},'defaults':{'penalty':_0x58a40f['penalty']},'transaction':_0x27540e});});})[_0xde55('0x2a')](function(){return BPromise[_0xde55('0x71')](_[_0xde55('0x48')](_0x4b7429,{'online':!![]}),function(_0x44428e){return db[_0xde55('0x75')][_0xde55('0x73')]({'membername':_0x44428e[_0xde55('0x37')],'UserId':_0x44428e['id'],'queue_name':_0x5e925b['name'],'VoiceQueueId':_0x5e925b['id'],'interface':_['isNil'](_0x44428e[_0xde55('0x6c')])?util['format']('SIP/%s',_0x44428e[_0xde55('0x37')]):_0x44428e[_0xde55('0x6c')],'paused':_0x44428e[_0xde55('0x76')]||![],'penalty':_0x44428e[_0xde55('0x6f')]},{'transaction':_0x27540e});});})['then'](function(){_0x4b7429[_0xde55('0x6e')](function(_0x56b5ce){socket[_0xde55('0x77')](_0xde55('0x78'),{'UserId':_0x56b5ce['id'],'VoiceQueueId':_0x5e925b['id']});});});});});}})['then'](respondWithStatusCode(_0x3c48fb,null))['catch'](handleError(_0x3c48fb,null));};exports[_0xde55('0x79')]=function(_0x54da1b,_0x5ef2fa,_0x6874e6){return db[_0xde55('0x68')][_0xde55('0x4d')]({'where':{'id':_0x54da1b[_0xde55('0x3b')][_0xde55('0x7a')]},'attributes':['id'],'include':[{'model':db[_0xde55('0x7b')],'as':_0xde55('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xde55('0x2a')](handleEntityNotFound(_0x5ef2fa,null))['then'](function(_0x5182db){var _0x1a8b4f=_[_0xde55('0x30')](_0x5182db,'id');var _0x6126ef=[];var _0x33d5b6=[];var _0x2c3ddd=squel[_0xde55('0x7c')]();_0x2c3ddd[_0xde55('0x7d')](_0xde55('0x7e'))['from'](_0xde55('0x7f'),'tq')[_0xde55('0x80')](_0xde55('0x81'),'ut',_0xde55('0x82'))['where'](_0xde55('0x83'),_0x54da1b['params']['id']);for(var _0xaed3e9=0x0;_0xaed3e9<_0x5182db[_0xde55('0x41')];_0xaed3e9+=0x1){let _0x5a39d1=_0x5182db[_0xaed3e9];for(var _0x5c31b2=0x0;_0x5c31b2<_0x5a39d1[_0xde55('0x6a')][_0xde55('0x41')];_0x5c31b2+=0x1){let _0x2465d9=_0x5a39d1[_0xde55('0x6a')][_0x5c31b2];var _0x42e3fa=_0x2c3ddd[_0xde55('0x84')]();_0x42e3fa['where'](_0xde55('0x85'),_0x2465d9['id']);_0x33d5b6[_0xde55('0x86')](db[_0xde55('0x87')][_0xde55('0x3b')](_0x42e3fa[_0xde55('0x88')](),{'type':db[_0xde55('0x87')][_0xde55('0x89')][_0xde55('0x8a')]})[_0xde55('0x2a')](function(_0x41ca8e){if(_0x41ca8e[_0xde55('0x41')]===0x1){return _0x2465d9['id'];}else{var _0x108f00=_[_0xde55('0x8b')](_['map'](_0x41ca8e,_0xde55('0x8c')),function(_0x4779ce){return _['includes'](_0x1a8b4f,_0x4779ce);});if(_0x108f00){return _0x2465d9['id'];}}}));}}return BPromise[_0xde55('0x8d')](_0x33d5b6)[_0xde55('0x2a')](function(_0x4713a4){_0x6126ef=_(_0x6126ef)['union'](_0x4713a4)[_0xde55('0x8e')]()[_0xde55('0x31')]();return db[_0xde55('0x4b')]['find']({'where':{'id':_0x54da1b[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](function(_0x362093){return db[_0xde55('0x87')][_0xde55('0x70')](function(_0x4e6fad){return _0x362093[_0xde55('0x79')](_0x54da1b['query'][_0xde55('0x7a')],{'transaction':_0x4e6fad})[_0xde55('0x2a')](function(){if(!_[_0xde55('0x8f')](_0x6126ef)){return _0x362093['removeAgents'](_0x6126ef,{'transaction':_0x4e6fad})[_0xde55('0x2a')](function(){return db[_0xde55('0x75')]['destroy']({'where':{'VoiceQueueId':_0x54da1b[_0xde55('0x5d')]['id'],'UserId':_0x6126ef},'transaction':_0x4e6fad});});}})['then'](function(){_0x6126ef[_0xde55('0x6e')](function(_0x11b564){socket[_0xde55('0x77')]('userVoiceQueue:remove',{'UserId':_0x11b564,'VoiceQueueId':_0x362093['id']});});});});});});})['then'](respondWithStatusCode(_0x5ef2fa,null))['catch'](handleError(_0x5ef2fa,null));};exports[_0xde55('0x90')]=function(_0x4f915b,_0x1ef8c7,_0x16a222){var _0x167fa0,_0x1fc3d5;return db[_0xde55('0x4b')][_0xde55('0x34')]({'where':{'id':_0x4f915b[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x1ef8c7,null))[_0xde55('0x2a')](function(_0x476d61){if(_0x476d61){_0x1fc3d5=_0x476d61;return _0x476d61[_0xde55('0x90')](_0x4f915b[_0xde55('0x50')][_0xde55('0x7a')],_[_0xde55('0x5c')](_0x4f915b[_0xde55('0x50')],[_0xde55('0x7a'),'id'])||{})[_0xde55('0x91')](function(_0x4828c5){for(var _0x5c6c4e=0x0;_0x5c6c4e<_0x4f915b[_0xde55('0x50')][_0xde55('0x7a')][_0xde55('0x41')];_0x5c6c4e+=0x1){socket[_0xde55('0x77')](_0xde55('0x78'),{'UserId':Number(_0x4f915b[_0xde55('0x50')][_0xde55('0x7a')][_0x5c6c4e]),'VoiceQueueId':Number(_0x4f915b[_0xde55('0x5d')]['id'])});}return _0x4828c5;});}})[_0xde55('0x2a')](function(_0x381b92){_0x167fa0=_0x381b92||[];if(_0x1fc3d5){return db[_0xde55('0x7b')]['findAll']({'where':{'id':_0x4f915b[_0xde55('0x50')]['ids']},'attributes':['id',_0xde55('0x37'),_0xde55('0x6b'),'voicePause',_0xde55('0x6c')],'raw':!![]});}})['then'](function(_0x4d0765){if(!_['isEmpty'](_0x4d0765)){var _0x2a61c6=[];for(var _0x6016b7=0x0;_0x6016b7<_0x4d0765['length'];_0x6016b7++){if(_0x4d0765[_0x6016b7][_0xde55('0x6b')]){_0x2a61c6[_0xde55('0x86')](db[_0xde55('0x75')][_0xde55('0x73')]({'membername':_0x4d0765[_0x6016b7][_0xde55('0x37')],'UserId':_0x4d0765[_0x6016b7]['id'],'queue_name':_0x1fc3d5[_0xde55('0x37')],'VoiceQueueId':_0x1fc3d5['id'],'interface':_[_0xde55('0x92')](_0x4d0765[_0x6016b7][_0xde55('0x6c')])?util[_0xde55('0x93')](_0xde55('0x94'),_0x4d0765[_0x6016b7][_0xde55('0x37')]):_0x4d0765[_0x6016b7][_0xde55('0x6c')],'paused':_0x4d0765[_0x6016b7][_0xde55('0x76')]||![],'penalty':_0x4f915b['body'][_0xde55('0x6f')]||0x0}));}}return BPromise['all'](_0x2a61c6);}})[_0xde55('0x2a')](function(){return _0x167fa0;})['then'](respondWithResult(_0x1ef8c7,null))[_0xde55('0x4f')](handleError(_0x1ef8c7,null));};exports[_0xde55('0x95')]=function(_0x115f79,_0x463968,_0x1e6cd4){return db['VoiceQueue'][_0xde55('0x34')]({'where':{'id':_0x115f79[_0xde55('0x5d')]['id']}})['then'](handleEntityNotFound(_0x463968,null))[_0xde55('0x2a')](function(_0x5ae1b0){if(_0x5ae1b0){return _0x5ae1b0[_0xde55('0x95')](_0x115f79['query']['ids'])[_0xde55('0x2a')](function(){if(_[_0xde55('0x96')](_0x115f79[_0xde55('0x3b')][_0xde55('0x7a')])){for(var _0x1875fa=0x0;_0x1875fa<_0x115f79[_0xde55('0x3b')][_0xde55('0x7a')][_0xde55('0x41')];_0x1875fa+=0x1){socket['emit'](_0xde55('0x97'),{'UserId':Number(_0x115f79[_0xde55('0x3b')]['ids'][_0x1875fa]),'VoiceQueueId':Number(_0x115f79[_0xde55('0x5d')]['id'])});}}else{socket[_0xde55('0x77')]('userVoiceQueue:remove',{'UserId':Number(_0x115f79[_0xde55('0x3b')][_0xde55('0x7a')]),'VoiceQueueId':Number(_0x115f79[_0xde55('0x5d')]['id'])});}});}})[_0xde55('0x2a')](function(_0x354aba){return db[_0xde55('0x75')]['destroy']({'where':{'VoiceQueueId':_0x115f79[_0xde55('0x5d')]['id'],'UserId':_0x115f79[_0xde55('0x3b')][_0xde55('0x7a')]}})[_0xde55('0x2a')](function(){return _0x354aba;});})[_0xde55('0x2a')](respondWithStatusCode(_0x463968,null))[_0xde55('0x4f')](handleError(_0x463968,null));};exports['getAgents']=function(_0x279c36,_0x2d7442,_0x59dabe){var _0x368d39={};var _0x58886e={};var _0x1951e3;var _0x2cc7b9;return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x279c36[_0xde55('0x5d')]['id']}})['then'](handleEntityNotFound(_0x2d7442,null))[_0xde55('0x2a')](function(_0x23b833){if(_0x23b833){_0x1951e3=_0x23b833;_0x58886e[_0xde55('0x3a')]=_[_0xde55('0x3c')](db['User']['rawAttributes']);_0x58886e[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x279c36[_0xde55('0x3b')]);_0x58886e[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x58886e[_0xde55('0x3a')],_0x58886e[_0xde55('0x3b')]);_0x368d39[_0xde55('0x3f')]=_['intersection'](_0x58886e['model'],qs[_0xde55('0x40')](_0x279c36[_0xde55('0x3b')]['fields']));_0x368d39['attributes']=_0x368d39[_0xde55('0x3f')][_0xde55('0x41')]?_0x368d39[_0xde55('0x3f')]:_0x58886e[_0xde55('0x3a')];_0x368d39[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x279c36[_0xde55('0x3b')][_0xde55('0x45')]);_0x368d39[_0xde55('0x46')]=qs[_0xde55('0x3d')](_['pick'](_0x279c36[_0xde55('0x3b')],_0x58886e[_0xde55('0x3d')]));if(_0x279c36[_0xde55('0x3b')][_0xde55('0x48')]){_0x368d39['where']=_[_0xde55('0x49')](_0x368d39[_0xde55('0x46')],{'$or':_[_0xde55('0x30')](_0x368d39['attributes'],function(_0x241141){var _0x5b73fb={};_0x5b73fb[_0x241141]={'$like':'%'+_0x279c36[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x5b73fb;})});}_0x368d39=_[_0xde55('0x49')]({},_0x368d39,_0x279c36[_0xde55('0x4a')]);return _0x1951e3['getAgents'](_0x368d39);}})[_0xde55('0x2a')](function(_0x4eab27){if(_0x4eab27){_0x2cc7b9=_0x4eab27[_0xde55('0x41')];if(!_0x279c36[_0xde55('0x3b')][_0xde55('0x42')](_0xde55('0x43'))){_0x368d39[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x279c36[_0xde55('0x3b')]['limit']);_0x368d39[_0xde55('0x21')]=qs[_0xde55('0x21')](_0x279c36['query']['offset']);}return _0x1951e3['getAgents'](_0x368d39);}})['then'](function(_0x3a27ce){if(_0x3a27ce){return _0x3a27ce?{'count':_0x2cc7b9,'rows':_0x3a27ce}:null;}})['then'](respondWithResult(_0x2d7442,null))['catch'](handleError(_0x2d7442,null));};exports[_0xde55('0x98')]=function(_0x215de0,_0x3f1397,_0x53a6fb){var _0x5b2787={};var _0x50e273={};var _0x174088;var _0x51da58;return db['VoiceQueue'][_0xde55('0x5f')]({'where':{'id':_0x215de0[_0xde55('0x5d')]['id']}})['then'](handleEntityNotFound(_0x3f1397,null))[_0xde55('0x2a')](function(_0x1b4b67){if(_0x1b4b67){_0x174088=_0x1b4b67;_0x50e273[_0xde55('0x3a')]=_[_0xde55('0x3c')](db['UserVoiceQueueRt']['rawAttributes']);_0x50e273[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x215de0['query']);_0x50e273[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x50e273[_0xde55('0x3a')],_0x50e273[_0xde55('0x3b')]);_0x5b2787['attributes']=_[_0xde55('0x3e')](_0x50e273[_0xde55('0x3a')],qs[_0xde55('0x40')](_0x215de0[_0xde55('0x3b')][_0xde55('0x40')]));_0x5b2787['attributes']=_0x5b2787[_0xde55('0x3f')]['length']?_0x5b2787[_0xde55('0x3f')]:_0x50e273[_0xde55('0x3a')];_0x5b2787['order']=qs[_0xde55('0x45')](_0x215de0[_0xde55('0x3b')][_0xde55('0x45')]);_0x5b2787['where']=qs[_0xde55('0x3d')](_[_0xde55('0x47')](_0x215de0[_0xde55('0x3b')],_0x50e273[_0xde55('0x3d')]));if(_0x215de0[_0xde55('0x3b')][_0xde55('0x48')]){_0x5b2787[_0xde55('0x46')]=_[_0xde55('0x49')](_0x5b2787[_0xde55('0x46')],{'$or':_[_0xde55('0x30')](_0x5b2787['attributes'],function(_0x16a168){var _0x2e1d9d={};_0x2e1d9d[_0x16a168]={'$like':'%'+_0x215de0[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x2e1d9d;})});}_0x5b2787=_['merge']({},_0x5b2787,_0x215de0['options']);return _0x174088['getMembers'](_0x5b2787);}})[_0xde55('0x2a')](function(_0x3b225a){if(_0x3b225a){_0x51da58=_0x3b225a[_0xde55('0x41')];if(!_0x215de0['query'][_0xde55('0x42')](_0xde55('0x43'))){_0x5b2787[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x215de0[_0xde55('0x3b')][_0xde55('0x23')]);_0x5b2787['offset']=qs['offset'](_0x215de0[_0xde55('0x3b')][_0xde55('0x21')]);}return _0x174088[_0xde55('0x98')](_0x5b2787);}})[_0xde55('0x2a')](function(_0x282433){return _0x282433?{'count':_0x51da58,'rows':_0x282433}:null;})['then'](respondWithResult(_0x3f1397,null))[_0xde55('0x4f')](handleError(_0x3f1397,null));};exports[_0xde55('0x99')]=function(_0x5a29e5,_0x5d0b70,_0x48b3e6){var _0x3a749f={};var _0x3b2d64={};var _0x1fa1aa;var _0x1a2eb4;return db['VoiceQueue'][_0xde55('0x5f')]({'where':{'id':_0x5a29e5[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x5d0b70,null))[_0xde55('0x2a')](function(_0x125b48){if(_0x125b48){_0x1fa1aa=_0x125b48;_0x3b2d64[_0xde55('0x3a')]=_[_0xde55('0x3c')](db[_0xde55('0x9a')][_0xde55('0x39')]);_0x3b2d64[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x5a29e5['query']);_0x3b2d64[_0xde55('0x3d')]=_['intersection'](_0x3b2d64[_0xde55('0x3a')],_0x3b2d64['query']);_0x3a749f['attributes']=_[_0xde55('0x3e')](_0x3b2d64['model'],qs['fields'](_0x5a29e5['query'][_0xde55('0x40')]));_0x3a749f[_0xde55('0x3f')]=_0x3a749f[_0xde55('0x3f')][_0xde55('0x41')]?_0x3a749f[_0xde55('0x3f')]:_0x3b2d64['model'];_0x3a749f[_0xde55('0x44')]=qs[_0xde55('0x45')](_0x5a29e5[_0xde55('0x3b')][_0xde55('0x45')]);_0x3a749f[_0xde55('0x46')]=qs['filters'](_[_0xde55('0x47')](_0x5a29e5[_0xde55('0x3b')],_0x3b2d64[_0xde55('0x3d')]));if(_0x5a29e5[_0xde55('0x3b')][_0xde55('0x48')]){_0x3a749f[_0xde55('0x46')]=_['merge'](_0x3a749f[_0xde55('0x46')],{'$or':_[_0xde55('0x30')](_0x3a749f[_0xde55('0x3f')],function(_0x45e5ef){var _0x1c01ea={};_0x1c01ea[_0x45e5ef]={'$like':'%'+_0x5a29e5[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x1c01ea;})});}_0x3a749f=_['merge']({},_0x3a749f,_0x5a29e5[_0xde55('0x4a')]);return _0x1fa1aa['getLists'](_0x3a749f);}})[_0xde55('0x2a')](function(_0x49a782){if(_0x49a782){_0x1a2eb4=_0x49a782['length'];if(!_0x5a29e5['query'][_0xde55('0x42')](_0xde55('0x43'))){_0x3a749f[_0xde55('0x23')]=qs[_0xde55('0x23')](_0x5a29e5[_0xde55('0x3b')][_0xde55('0x23')]);_0x3a749f[_0xde55('0x21')]=qs[_0xde55('0x21')](_0x5a29e5[_0xde55('0x3b')]['offset']);}return _0x1fa1aa[_0xde55('0x99')](_0x3a749f);}})[_0xde55('0x2a')](function(_0x140747){if(_0x140747){return _0x140747?{'count':_0x1a2eb4,'rows':_0x140747}:null;}})[_0xde55('0x2a')](respondWithResult(_0x5d0b70,null))[_0xde55('0x4f')](handleError(_0x5d0b70,null));};exports[_0xde55('0x9b')]=function(_0x4ecb58,_0x3686bd,_0x3f44d0){var _0x51f1cc=moment()[_0xde55('0x93')](_0xde55('0x9c'));var _0x41056f,_0x59947d;return db['VoiceQueue']['find']({'where':{'id':_0x4ecb58[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x3686bd,null))['then'](function(_0x4f87bb){if(_0x4f87bb){_0x59947d=_0x4f87bb;return _0x4f87bb[_0xde55('0x9b')](_0x4ecb58[_0xde55('0x50')][_0xde55('0x7a')],_[_0xde55('0x5c')](_0x4ecb58[_0xde55('0x50')],['ids','id'])||{});}return null;})[_0xde55('0x91')](function(_0x58c0ee){var _0x3e93d4;_0x41056f=_0x58c0ee||[];var _0x5d87d8=[];if(_0x58c0ee){for(var _0x24eeb8=0x0;_0x24eeb8<_0x58c0ee[_0xde55('0x41')];_0x24eeb8+=0x1){var _0x39a235=_0x58c0ee[_0x24eeb8][_0xde55('0x2c')]({'plain':!![]});_0x59947d['dialCheckDuplicateType']=_0x4ecb58[_0xde55('0x50')][_0xde55('0x9d')]?_0x4ecb58['body'][_0xde55('0x9d')]:_0x59947d['dialCheckDuplicateType'];switch(_0x59947d['dialCheckDuplicateType']){case _0xde55('0x9e'):_0x3e93d4=squel['insert']()[_0xde55('0x9f')]('cm_hopper')[_0xde55('0xa0')]([_0xde55('0xa1'),_0xde55('0xa2'),_0xde55('0xa3'),_0xde55('0xa4'),'VoiceQueueId','createdAt','updatedAt'],squel[_0xde55('0x7c')]()[_0xde55('0x7d')](_0xde55('0xa1'),_0xde55('0xa1'))['field']('\x27'+_0x51f1cc+'\x27',_0xde55('0xa2'))[_0xde55('0x7d')]('id','ContactId')[_0xde55('0x7d')](_0x39a235[_0xde55('0xa5')][_0xde55('0x88')](),_0xde55('0xa4'))['field'](_0x4ecb58[_0xde55('0x5d')]['id'][_0xde55('0x88')](),_0xde55('0x61'))[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27',_0xde55('0x5a'))[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27',_0xde55('0x5b'))[_0xde55('0xa6')](_0xde55('0xa7'))[_0xde55('0x46')]('deletedAt\x20IS\x20NULL')[_0xde55('0x46')](_0xde55('0xa8'),_0x39a235[_0xde55('0xa5')][_0xde55('0x88')]())[_0xde55('0x46')](_0xde55('0xa9'))['where'](_0xde55('0xaa'),squel['select']()['field'](_0xde55('0xab'))[_0xde55('0xa6')]('cm_hopper_final')[_0xde55('0x46')](_0xde55('0x83'),_0x4ecb58[_0xde55('0x5d')]['id'][_0xde55('0x88')]()))[_0xde55('0x46')]('phone\x20NOT\x20IN\x20(?)',squel[_0xde55('0x7c')]()['field'](_0xde55('0xac'))['from']('cm_hopper')[_0xde55('0x46')](_0xde55('0x83'),_0x4ecb58[_0xde55('0x5d')]['id']['toString']())))[_0xde55('0x88')]();break;case'onlyIfOpen':_0x3e93d4=squel[_0xde55('0xad')]()[_0xde55('0x9f')](_0xde55('0xae'))[_0xde55('0xa0')]([_0xde55('0xa1'),_0xde55('0xa2'),_0xde55('0xa3'),_0xde55('0xa4'),'VoiceQueueId',_0xde55('0x5a'),'updatedAt'],squel[_0xde55('0x7c')]()[_0xde55('0x7d')](_0xde55('0xa1'),'phone')['field']('\x27'+_0x51f1cc+'\x27','scheduledAt')['field']('id',_0xde55('0xa3'))[_0xde55('0x7d')](_0x39a235[_0xde55('0xa5')]['toString'](),_0xde55('0xa4'))['field'](_0x4ecb58['params']['id'][_0xde55('0x88')](),'VoiceQueueId')[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27','createdAt')[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27',_0xde55('0x5b'))[_0xde55('0xa6')]('cm_contacts')['where'](_0xde55('0xaf'))[_0xde55('0x46')](_0xde55('0xa8'),_0x39a235[_0xde55('0xa5')][_0xde55('0x88')]())[_0xde55('0x46')]('phone\x20IS\x20NOT\x20NULL')[_0xde55('0x46')](_0xde55('0xaa'),squel[_0xde55('0x7c')]()[_0xde55('0x7d')](_0xde55('0xac'))[_0xde55('0xa6')](_0xde55('0xae'))[_0xde55('0x46')]('VoiceQueueId\x20=\x20?',_0x4ecb58[_0xde55('0x5d')]['id'][_0xde55('0x88')]())))[_0xde55('0x88')]();break;default:_0x3e93d4=squel[_0xde55('0xad')]()[_0xde55('0x9f')](_0xde55('0xae'))['fromQuery']([_0xde55('0xa1'),'scheduledAt',_0xde55('0xa3'),'ListId','VoiceQueueId',_0xde55('0x5a'),_0xde55('0x5b')],squel[_0xde55('0x7c')]()[_0xde55('0x7d')]('phone','phone')[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27',_0xde55('0xa2'))[_0xde55('0x7d')]('id',_0xde55('0xa3'))[_0xde55('0x7d')](_0x39a235[_0xde55('0xa5')][_0xde55('0x88')](),'ListId')[_0xde55('0x7d')](_0x4ecb58[_0xde55('0x5d')]['id'][_0xde55('0x88')](),'VoiceQueueId')['field']('\x27'+_0x51f1cc+'\x27',_0xde55('0x5a'))[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27',_0xde55('0x5b'))['from'](_0xde55('0xa7'))[_0xde55('0x46')]('deletedAt\x20IS\x20NULL')[_0xde55('0x46')](_0xde55('0xa8'),_0x39a235['CmListId'][_0xde55('0x88')]())[_0xde55('0x46')](_0xde55('0xa9')))[_0xde55('0x88')]();}_0x5d87d8[_0xde55('0x86')](db[_0xde55('0x87')][_0xde55('0x3b')](_0x3e93d4));}return BPromise[_0xde55('0x8d')](_0x5d87d8);}})[_0xde55('0x2a')](function(){var _0x53b538=[];var _0x295703=squel['insert']()[_0xde55('0x9f')](_0xde55('0xb0'))[_0xde55('0xa0')]([_0xde55('0xb1'),_0xde55('0xa1'),_0xde55('0xb2'),_0xde55('0x5a'),'updatedAt'],squel['select']()[_0xde55('0x7d')]('h.id')[_0xde55('0x7d')](_0xde55('0xb3'))['field'](_0xde55('0xb4'))[_0xde55('0x7d')]('\x27'+_0x51f1cc+'\x27','createdAt')['field']('\x27'+_0x51f1cc+'\x27',_0xde55('0x5b'))['from'](_0xde55('0xb5'),'ci')[_0xde55('0x80')](_0xde55('0xae'),'h',_0xde55('0xb6'))[_0xde55('0x46')](_0xde55('0xb7'),_0x51f1cc)[_0xde55('0x46')](_0xde55('0xb8'),_0xde55('0xb9')))['toString']();_0x53b538[_0xde55('0x86')](db[_0xde55('0x87')]['query'](_0x295703));return BPromise[_0xde55('0x8d')](_0x53b538);})[_0xde55('0x2a')](function(){return _0x41056f;})[_0xde55('0x2a')](respondWithResult(_0x3686bd,null))[_0xde55('0x4f')](handleError(_0x3686bd,null));};exports['removeLists']=function(_0x2fc56d,_0x2761ba,_0x5ca793){return db['VoiceQueue'][_0xde55('0x34')]({'where':{'id':_0x2fc56d[_0xde55('0x5d')]['id']}})['then'](handleEntityNotFound(_0x2761ba,null))[_0xde55('0x2a')](function(_0x212c67){if(_0x212c67){return _0x212c67[_0xde55('0xba')](_0x2fc56d[_0xde55('0x3b')][_0xde55('0x7a')]);}})['then'](function(_0x25dc8b){if(_0x25dc8b){return db[_0xde55('0x60')][_0xde55('0x2b')]({'where':{'ListId':_0x2fc56d[_0xde55('0x3b')][_0xde55('0x7a')],'VoiceQueueId':_0x2fc56d[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](function(){return _0x25dc8b;});}})[_0xde55('0x2a')](respondWithStatusCode(_0x2761ba,null))[_0xde55('0x4f')](handleError(_0x2761ba,null));};exports['getBlackLists']=function(_0x35b935,_0x2b0fd6,_0x5c64ab){var _0x2d85cb={};var _0x2aae72={};var _0x51b430;var _0x39cb6a;return db[_0xde55('0x4b')][_0xde55('0x5f')]({'where':{'id':_0x35b935[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x2b0fd6,null))[_0xde55('0x2a')](function(_0x365de9){if(_0x365de9){_0x51b430=_0x365de9;_0x2aae72['model']=_[_0xde55('0x3c')](db[_0xde55('0x9a')][_0xde55('0x39')]);_0x2aae72[_0xde55('0x3b')]=_[_0xde55('0x3c')](_0x35b935[_0xde55('0x3b')]);_0x2aae72[_0xde55('0x3d')]=_[_0xde55('0x3e')](_0x2aae72[_0xde55('0x3a')],_0x2aae72['query']);_0x2d85cb[_0xde55('0x3f')]=_['intersection'](_0x2aae72['model'],qs[_0xde55('0x40')](_0x35b935['query'][_0xde55('0x40')]));_0x2d85cb[_0xde55('0x3f')]=_0x2d85cb[_0xde55('0x3f')][_0xde55('0x41')]?_0x2d85cb[_0xde55('0x3f')]:_0x2aae72['model'];_0x2d85cb[_0xde55('0x44')]=qs['sort'](_0x35b935[_0xde55('0x3b')][_0xde55('0x45')]);_0x2d85cb[_0xde55('0x46')]=qs[_0xde55('0x3d')](_[_0xde55('0x47')](_0x35b935['query'],_0x2aae72[_0xde55('0x3d')]));if(_0x35b935['query'][_0xde55('0x48')]){_0x2d85cb['where']=_[_0xde55('0x49')](_0x2d85cb['where'],{'$or':_[_0xde55('0x30')](_0x2d85cb[_0xde55('0x3f')],function(_0x5531b6){var _0x49a322={};_0x49a322[_0x5531b6]={'$like':'%'+_0x35b935[_0xde55('0x3b')][_0xde55('0x48')]+'%'};return _0x49a322;})});}_0x2d85cb=_[_0xde55('0x49')]({},_0x2d85cb,_0x35b935[_0xde55('0x4a')]);return _0x51b430[_0xde55('0xbb')](_0x2d85cb);}})[_0xde55('0x2a')](function(_0x2addfe){if(_0x2addfe){_0x39cb6a=_0x2addfe['length'];if(!_0x35b935[_0xde55('0x3b')]['hasOwnProperty'](_0xde55('0x43'))){_0x2d85cb['limit']=qs[_0xde55('0x23')](_0x35b935[_0xde55('0x3b')][_0xde55('0x23')]);_0x2d85cb[_0xde55('0x21')]=qs['offset'](_0x35b935[_0xde55('0x3b')][_0xde55('0x21')]);}return _0x51b430['getBlackLists'](_0x2d85cb);}})['then'](function(_0x2dd004){if(_0x2dd004){return _0x2dd004?{'count':_0x39cb6a,'rows':_0x2dd004}:null;}})['then'](respondWithResult(_0x2b0fd6,null))[_0xde55('0x4f')](handleError(_0x2b0fd6,null));};exports['addBlackLists']=function(_0x18fcfb,_0x4f700f,_0xfea7b6){var _0x1ec81d,_0x178812;return db[_0xde55('0x4b')][_0xde55('0x34')]({'where':{'id':_0x18fcfb[_0xde55('0x5d')]['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x4f700f,null))[_0xde55('0x2a')](function(_0x4f887b){if(_0x4f887b){_0x178812=_0x4f887b;return _0x4f887b[_0xde55('0xbc')](_0x18fcfb[_0xde55('0x50')]['ids'],_['omit'](_0x18fcfb['body'],['ids','id'])||{});}return null;})['spread'](function(_0x456440){var _0x2bfee5;_0x1ec81d=_0x456440||[];var _0x5e5cff=[];if(_0x456440){for(var _0x4dd810=0x0;_0x4dd810<_0x456440[_0xde55('0x41')];_0x4dd810+=0x1){var _0x37812f=_0x456440[_0x4dd810]['get']({'plain':!![]});_0x2bfee5=squel[_0xde55('0xad')]()['into']('cm_hopper_black')[_0xde55('0xa0')]([_0xde55('0xa1'),_0xde55('0xa3'),_0xde55('0xa4'),_0xde55('0x61'),_0xde55('0x5a'),_0xde55('0x5b')],squel[_0xde55('0x7c')]()['field'](_0xde55('0xa1'),_0xde55('0xa1'))[_0xde55('0x7d')]('id',_0xde55('0xa3'))['field'](_0x37812f['CmListId'][_0xde55('0x88')](),_0xde55('0xa4'))[_0xde55('0x7d')](_0x18fcfb[_0xde55('0x5d')]['id']['toString'](),'VoiceQueueId')['field'](_0xde55('0xbd'),_0xde55('0x5a'))[_0xde55('0x7d')](_0xde55('0xbd'),_0xde55('0x5b'))['from'](_0xde55('0xa7'))[_0xde55('0x46')]('deletedAt\x20IS\x20NULL')[_0xde55('0x46')]('ListId\x20=\x20?',_0x37812f[_0xde55('0xa5')][_0xde55('0x88')]())[_0xde55('0x46')](_0xde55('0xa9')))['toString']();_0x5e5cff[_0xde55('0x86')](db[_0xde55('0x87')][_0xde55('0x3b')](_0x2bfee5));}return BPromise[_0xde55('0x8d')](_0x5e5cff);}})['then'](function(){return _0x1ec81d;})['then'](respondWithResult(_0x4f700f,null))['catch'](handleError(_0x4f700f,null));};exports[_0xde55('0xbe')]=function(_0x55f527,_0x4383e9,_0x29add8){return db[_0xde55('0x4b')][_0xde55('0x34')]({'where':{'id':_0x55f527['params']['id']}})[_0xde55('0x2a')](handleEntityNotFound(_0x4383e9,null))[_0xde55('0x2a')](function(_0x479fc3){if(_0x479fc3){return _0x479fc3['removeBlackLists'](_0x55f527[_0xde55('0x3b')][_0xde55('0x7a')]);}})[_0xde55('0x2a')](function(_0xf98f28){if(_0xf98f28){return db[_0xde55('0x66')][_0xde55('0x2b')]({'where':{'ListId':_0x55f527['query'][_0xde55('0x7a')],'VoiceQueueId':_0x55f527['params']['id']}})[_0xde55('0x2a')](function(){return _0xf98f28;});}})[_0xde55('0x2a')](respondWithStatusCode(_0x4383e9,null))[_0xde55('0x4f')](handleError(_0x4383e9,null));};
\ No newline at end of file
+var _0xc9c3=['map','value','includes','find','type','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','query','filters','attributes','intersection','fields','model','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','VoiceQueue','findAll','rows','catch','show','params','keys','length','includeAll','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','QueueCampaigns','outbound','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','body','updatedAt','getHoppers','findOne','CmHopper','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','teams','User','Agents','online','voicePause','interface','flatMap','forEach','penalty','sequelize','addTeams','TeamVoiceQueue','upsert','UserVoiceQueue','each','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','every','TeamId','all','transaction','removeAgents','userVoiceQueue:remove','addAgents','spread','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','CmListId','cm_contacts','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','fromQuery','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','h.ContactId=ci.CmContactId','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','get','inbound','filter','ignore'];(function(_0x435435,_0x4b4653){var _0x399acd=function(_0x4a34be){while(--_0x4a34be){_0x435435['push'](_0x435435['shift']());}};_0x399acd(++_0x4b4653);}(_0xc9c3,0x96));var _0x3c9c=function(_0x9eb6a5,_0x11a8d6){_0x9eb6a5=_0x9eb6a5-0x0;var _0x416b87=_0xc9c3[_0x9eb6a5];return _0x416b87;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3c9c('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3c9c('0x1'));var moment=require(_0x3c9c('0x2'));var BPromise=require(_0x3c9c('0x3'));var Mustache=require(_0x3c9c('0x4'));var util=require(_0x3c9c('0x5'));var path=require(_0x3c9c('0x6'));var sox=require(_0x3c9c('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c9c('0x8'));var squel=require(_0x3c9c('0x9'));var crypto=require(_0x3c9c('0xa'));var jsforce=require(_0x3c9c('0xb'));var deskjs=require(_0x3c9c('0xc'));var toCsv=require(_0x3c9c('0xd'));var querystring=require(_0x3c9c('0xe'));var Papa=require(_0x3c9c('0xf'));var Redis=require(_0x3c9c('0x10'));var authService=require(_0x3c9c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3c9c('0x12'));var hardwareService=require(_0x3c9c('0x13'));var logger=require('../../config/logger')(_0x3c9c('0x14'));var utils=require('../../config/utils');var config=require(_0x3c9c('0x15'));var licenseUtil=require(_0x3c9c('0x16'));var db=require(_0x3c9c('0x17'))['db'];config[_0x3c9c('0x18')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3c9c('0x19'))(new Redis(config['redis']));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x22c495,_0x59d169){_0x59d169=_0x59d169||0xcc;return function(_0x3f1881){if(_0x3f1881){return _0x22c495[_0x3c9c('0x1a')](_0x59d169);}return _0x22c495[_0x3c9c('0x1b')](_0x59d169)[_0x3c9c('0x1c')]();};}function respondWithResult(_0x4a43d2,_0x265cc2){_0x265cc2=_0x265cc2||0xc8;return function(_0x490383){if(_0x490383){return _0x4a43d2['status'](_0x265cc2)['json'](_0x490383);}};}function respondWithFilteredResult(_0x3200a3,_0x32d94a){return function(_0x216fd8){if(_0x216fd8){var _0x3eee19=typeof _0x32d94a[_0x3c9c('0x1d')]===_0x3c9c('0x1e')&&typeof _0x32d94a[_0x3c9c('0x1f')]==='undefined';var _0x15a90a=_0x216fd8['count'];var _0x461711=_0x3eee19?0x0:_0x32d94a['offset'];var _0x164fde=_0x3eee19?_0x216fd8[_0x3c9c('0x20')]:_0x32d94a['offset']+_0x32d94a[_0x3c9c('0x1f')];var _0x29e4ac;if(_0x164fde>=_0x15a90a){_0x164fde=_0x15a90a;_0x29e4ac=0xc8;}else{_0x29e4ac=0xce;}_0x3200a3[_0x3c9c('0x1b')](_0x29e4ac);return _0x3200a3['set'](_0x3c9c('0x21'),_0x461711+'-'+_0x164fde+'/'+_0x15a90a)[_0x3c9c('0x22')](_0x216fd8);}return null;};}function patchUpdates(_0x2d5ffc){return function(_0x937abf){try{jsonpatch[_0x3c9c('0x23')](_0x937abf,_0x2d5ffc,!![]);}catch(_0x3bc5c4){return BPromise[_0x3c9c('0x24')](_0x3bc5c4);}return _0x937abf[_0x3c9c('0x25')]();};}function saveUpdates(_0x509bf7,_0x6ed08a){return function(_0x4d58b9){if(_0x4d58b9){return _0x4d58b9[_0x3c9c('0x26')](_0x509bf7)[_0x3c9c('0x27')](function(_0x4ca078){return _0x4ca078;});}return null;};}function removeEntity(_0x527bb9,_0x379880){return function(_0x1e8589){if(_0x1e8589){return _0x1e8589[_0x3c9c('0x28')]()[_0x3c9c('0x27')](function(){var _0x4c283d=_0x1e8589[_0x3c9c('0x29')]({'plain':!![]});var _0x65b831=[{'name':'VoiceQueues','value':_0x3c9c('0x2a'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x3aeb60=_(_0x65b831)[_0x3c9c('0x2b')](_0x3c9c('0x2c'))[_0x3c9c('0x2d')](_0x3c9c('0x2e'))['value']();if(_[_0x3c9c('0x2f')](_0x3aeb60,_0x4c283d['type'])){return;}var _0x18b434=_[_0x3c9c('0x30')](_0x65b831,[_0x3c9c('0x2e'),_0x4c283d[_0x3c9c('0x31')]])['name'];return db[_0x3c9c('0x32')][_0x3c9c('0x28')]({'where':{'type':_0x18b434,'resourceId':_0x4c283d['id']}})[_0x3c9c('0x27')](function(){return _0x1e8589;});})[_0x3c9c('0x27')](function(){_0x527bb9[_0x3c9c('0x1b')](0xcc)[_0x3c9c('0x1c')]();});}};}function handleEntityNotFound(_0x314403,_0x317209){return function(_0x4d9c55){if(!_0x4d9c55){_0x314403[_0x3c9c('0x1a')](0x194);}return _0x4d9c55;};}function handleError(_0x1b36a8,_0x1b5226){_0x1b5226=_0x1b5226||0x1f4;return function(_0x38ca2e){logger[_0x3c9c('0x33')](_0x38ca2e[_0x3c9c('0x34')]);if(_0x38ca2e[_0x3c9c('0x35')]){delete _0x38ca2e[_0x3c9c('0x35')];}_0x1b36a8[_0x3c9c('0x1b')](_0x1b5226)[_0x3c9c('0x36')](_0x38ca2e);};}exports[_0x3c9c('0x37')]=function(_0xb86ddc,_0x394a50){var _0x1662ac={},_0x5f4f64={},_0xa1d0f={'count':0x0,'rows':[]};var _0x34266f=_[_0x3c9c('0x2d')](db['VoiceQueue'][_0x3c9c('0x38')],function(_0x7a3545){return{'name':_0x7a3545[_0x3c9c('0x39')],'type':_0x7a3545[_0x3c9c('0x31')]['key']};});_0x5f4f64['model']=_[_0x3c9c('0x2d')](_0x34266f,_0x3c9c('0x35'));_0x5f4f64[_0x3c9c('0x3a')]=_['keys'](_0xb86ddc['query']);_0x5f4f64[_0x3c9c('0x3b')]=_['intersection'](_0x5f4f64['model'],_0x5f4f64[_0x3c9c('0x3a')]);_0x1662ac[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x5f4f64['model'],qs[_0x3c9c('0x3e')](_0xb86ddc[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x1662ac['attributes']=_0x1662ac['attributes']['length']?_0x1662ac[_0x3c9c('0x3c')]:_0x5f4f64[_0x3c9c('0x3f')];if(!_0xb86ddc[_0x3c9c('0x3a')][_0x3c9c('0x40')](_0x3c9c('0x41'))){_0x1662ac[_0x3c9c('0x1f')]=qs['limit'](_0xb86ddc['query'][_0x3c9c('0x1f')]);_0x1662ac[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0xb86ddc['query'][_0x3c9c('0x1d')]);}_0x1662ac[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0xb86ddc['query']['sort']);_0x1662ac[_0x3c9c('0x44')]=qs[_0x3c9c('0x3b')](_[_0x3c9c('0x45')](_0xb86ddc['query'],_0x5f4f64[_0x3c9c('0x3b')]),_0x34266f);if(_0xb86ddc[_0x3c9c('0x3a')][_0x3c9c('0x2b')]){_0x1662ac[_0x3c9c('0x44')]=_['merge'](_0x1662ac[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x34266f,function(_0x55496a){if(_0x55496a['type']!==_0x3c9c('0x46')){var _0xe92b80={};_0xe92b80[_0x55496a['name']]={'$like':'%'+_0xb86ddc[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0xe92b80;}})});}_0x1662ac=_[_0x3c9c('0x47')]({},_0x1662ac,_0xb86ddc[_0x3c9c('0x48')]);var _0x40b45c={'where':_0x1662ac[_0x3c9c('0x44')]};return db['VoiceQueue'][_0x3c9c('0x20')](_0x40b45c)[_0x3c9c('0x27')](function(_0xae0088){_0xa1d0f[_0x3c9c('0x20')]=_0xae0088;if(_0xb86ddc[_0x3c9c('0x3a')]['includeAll']){_0x1662ac['include']=[{'all':!![]}];}return db[_0x3c9c('0x49')][_0x3c9c('0x4a')](_0x1662ac);})[_0x3c9c('0x27')](function(_0x25285d){_0xa1d0f[_0x3c9c('0x4b')]=_0x25285d;return _0xa1d0f;})['then'](respondWithFilteredResult(_0x394a50,_0x1662ac))[_0x3c9c('0x4c')](handleError(_0x394a50,null));};exports[_0x3c9c('0x4d')]=function(_0x27a013,_0x222ffa){var _0xcd7ebc={'raw':![],'where':{'id':_0x27a013[_0x3c9c('0x4e')]['id']}},_0x58f6b7={};_0x58f6b7[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x49')][_0x3c9c('0x38')]);_0x58f6b7[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x27a013['query']);_0x58f6b7[_0x3c9c('0x3b')]=_[_0x3c9c('0x3d')](_0x58f6b7[_0x3c9c('0x3f')],_0x58f6b7[_0x3c9c('0x3a')]);_0xcd7ebc[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x58f6b7['model'],qs[_0x3c9c('0x3e')](_0x27a013[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0xcd7ebc[_0x3c9c('0x3c')]=_0xcd7ebc[_0x3c9c('0x3c')][_0x3c9c('0x50')]?_0xcd7ebc[_0x3c9c('0x3c')]:_0x58f6b7[_0x3c9c('0x3f')];if(_0x27a013[_0x3c9c('0x3a')][_0x3c9c('0x51')]){_0xcd7ebc[_0x3c9c('0x52')]=[{'all':!![]}];}_0xcd7ebc=_[_0x3c9c('0x47')]({},_0xcd7ebc,_0x27a013[_0x3c9c('0x48')]);return db[_0x3c9c('0x49')][_0x3c9c('0x30')](_0xcd7ebc)[_0x3c9c('0x27')](handleEntityNotFound(_0x222ffa,null))['then'](respondWithResult(_0x222ffa,null))['catch'](handleError(_0x222ffa,null));};exports['create']=function(_0xff4ef7,_0x3d9301){return db[_0x3c9c('0x49')][_0x3c9c('0x53')](_0xff4ef7['body'],{})[_0x3c9c('0x27')](function(_0x5b98da){var _0x4a4be4=_0xff4ef7[_0x3c9c('0x54')][_0x3c9c('0x29')]({'plain':!![]});if(!_0x4a4be4)throw new Error(_0x3c9c('0x55'));if(_0x4a4be4[_0x3c9c('0x56')]===_0x3c9c('0x54')){var _0x1f961b=_0x5b98da[_0x3c9c('0x29')]({'plain':!![]});var _0x149f42=[{'name':_0x3c9c('0x57'),'value':'inbound'},{'name':_0x3c9c('0x58'),'value':_0x3c9c('0x59')}];var _0x437ff5=_[_0x3c9c('0x30')](_0x149f42,[_0x3c9c('0x2e'),_0x1f961b[_0x3c9c('0x31')]])[_0x3c9c('0x35')];return db['UserProfileSection']['find']({'where':{'name':_0x437ff5,'userProfileId':_0x4a4be4[_0x3c9c('0x5a')]},'raw':!![]})[_0x3c9c('0x27')](function(_0x3f6347){if(_0x3f6347&&_0x3f6347[_0x3c9c('0x5b')]===0x0){return db[_0x3c9c('0x32')][_0x3c9c('0x53')]({'name':_0x1f961b[_0x3c9c('0x35')],'resourceId':_0x1f961b['id'],'type':_0x3f6347[_0x3c9c('0x35')],'sectionId':_0x3f6347['id']},{})[_0x3c9c('0x27')](function(){return _0x5b98da;});}else{return _0x5b98da;}})[_0x3c9c('0x4c')](function(_0x13ae81){logger[_0x3c9c('0x33')](_0x3c9c('0x5c'),_0x13ae81);throw _0x13ae81;});}return _0x5b98da;})[_0x3c9c('0x27')](respondWithResult(_0x3d9301,0xc9))['catch'](handleError(_0x3d9301,null));};exports[_0x3c9c('0x5d')]=function(_0x4306fe,_0x1b6f0a){var _0x1573f2={'where':{'id':_0x4306fe['params']['id']}},_0x16fbcf={};_0x16fbcf[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db['VoiceQueue']['rawAttributes']);_0x1573f2[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x16fbcf['model'],qs[_0x3c9c('0x3e')](_0x4306fe[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x1573f2[_0x3c9c('0x3c')]=_0x1573f2[_0x3c9c('0x3c')][_0x3c9c('0x50')]?_0x1573f2[_0x3c9c('0x3c')]:_0x16fbcf[_0x3c9c('0x3f')];if(_0x4306fe[_0x3c9c('0x3a')][_0x3c9c('0x51')]){_0x1573f2[_0x3c9c('0x52')]=[{'all':!![]}];}_0x1573f2=_['merge']({},_0x1573f2,_0x4306fe[_0x3c9c('0x48')]);return db['VoiceQueue']['find'](_0x1573f2)[_0x3c9c('0x27')](handleEntityNotFound(_0x1b6f0a,null))[_0x3c9c('0x27')](function(_0x1a1485){if(_0x1a1485){var _0x4695a7=_0x1a1485[_0x3c9c('0x29')]({'plain':!![]});_0x4695a7=qs[_0x3c9c('0x5e')](_0x4695a7,['id',_0x3c9c('0x5f'),'updatedAt']);_0x4306fe[_0x3c9c('0x60')]=_[_0x3c9c('0x5e')](_0x4306fe[_0x3c9c('0x60')],['id',_0x3c9c('0x5f'),_0x3c9c('0x61')]);return db['VoiceQueue']['create'](_[_0x3c9c('0x47')](_0x4695a7,_0x4306fe[_0x3c9c('0x60')]),{'include':_0x4306fe[_0x3c9c('0x3a')][_0x3c9c('0x51')]?[{'all':!![]}]:undefined})[_0x3c9c('0x27')](function(_0x990934){var _0x332503=_0x4306fe[_0x3c9c('0x54')][_0x3c9c('0x29')]({'plain':!![]});if(!_0x332503)throw new Error(_0x3c9c('0x55'));if(_0x332503[_0x3c9c('0x56')]===_0x3c9c('0x54')){var _0x4311c0=_0x990934[_0x3c9c('0x29')]({'plain':!![]});var _0xd46ccf=[{'name':_0x3c9c('0x57'),'value':_0x3c9c('0x2a')},{'name':'QueueCampaigns','value':_0x3c9c('0x59')}];var _0x56a197=_['find'](_0xd46ccf,[_0x3c9c('0x2e'),_0x4311c0[_0x3c9c('0x31')]])[_0x3c9c('0x35')];return db['UserProfileSection'][_0x3c9c('0x30')]({'where':{'name':_0x56a197,'userProfileId':_0x332503[_0x3c9c('0x5a')]},'raw':!![]})['then'](function(_0x23cb34){if(_0x23cb34&&_0x23cb34[_0x3c9c('0x5b')]===0x0){return db['UserProfileResource']['create']({'name':_0x4311c0['name'],'resourceId':_0x4311c0['id'],'type':_0x23cb34[_0x3c9c('0x35')],'sectionId':_0x23cb34['id']},{})[_0x3c9c('0x27')](function(){return _0x990934;});}else{return _0x990934;}})[_0x3c9c('0x4c')](function(_0x3d94da){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d94da);throw _0x3d94da;});}return _0x990934;});}})[_0x3c9c('0x27')](respondWithResult(_0x1b6f0a,0xc9))[_0x3c9c('0x4c')](handleError(_0x1b6f0a,null));};exports[_0x3c9c('0x26')]=function(_0x94bc44,_0x4342a9){if(_0x94bc44[_0x3c9c('0x60')]['id']){delete _0x94bc44[_0x3c9c('0x60')]['id'];}return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x94bc44['params']['id']}})['then'](handleEntityNotFound(_0x4342a9,null))[_0x3c9c('0x27')](saveUpdates(_0x94bc44['body'],null))['then'](respondWithResult(_0x4342a9,null))['catch'](handleError(_0x4342a9,null));};exports[_0x3c9c('0x28')]=function(_0x1159c0,_0x5c4237){return db['VoiceQueue'][_0x3c9c('0x30')]({'where':{'id':_0x1159c0['params']['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x5c4237,null))['then'](removeEntity(_0x5c4237,null))[_0x3c9c('0x4c')](handleError(_0x5c4237,null));};exports[_0x3c9c('0x62')]=function(_0x2cbb5f,_0x587598,_0x4c0093){var _0x27c3f9={'raw':![],'where':{}};var _0x5ca292={};var _0x1d2c9d={'count':0x0,'rows':[]};return db[_0x3c9c('0x49')][_0x3c9c('0x63')]({'where':{'id':_0x2cbb5f[_0x3c9c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x587598,null))[_0x3c9c('0x27')](function(_0xbeaf58){if(_0xbeaf58){_0x5ca292['model']=_[_0x3c9c('0x4f')](db[_0x3c9c('0x64')]['rawAttributes']);_0x5ca292[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x2cbb5f['query']);_0x5ca292[_0x3c9c('0x3b')]=_[_0x3c9c('0x3d')](_0x5ca292[_0x3c9c('0x3f')],_0x5ca292['query']);_0x27c3f9['attributes']=_[_0x3c9c('0x3d')](_0x5ca292[_0x3c9c('0x3f')],qs['fields'](_0x2cbb5f[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x27c3f9[_0x3c9c('0x3c')]=_0x27c3f9['attributes'][_0x3c9c('0x50')]?_0x27c3f9[_0x3c9c('0x3c')]:_0x5ca292['model'];if(!_0x2cbb5f[_0x3c9c('0x3a')][_0x3c9c('0x40')](_0x3c9c('0x41'))){_0x27c3f9[_0x3c9c('0x1f')]=qs[_0x3c9c('0x1f')](_0x2cbb5f[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x27c3f9[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0x2cbb5f[_0x3c9c('0x3a')]['offset']);}_0x27c3f9[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0x2cbb5f['query'][_0x3c9c('0x43')]);_0x27c3f9[_0x3c9c('0x44')]=qs['filters'](_[_0x3c9c('0x45')](_0x2cbb5f[_0x3c9c('0x3a')],_0x5ca292[_0x3c9c('0x3b')]));_0x27c3f9[_0x3c9c('0x44')][_0x3c9c('0x65')]=_0xbeaf58['id'];if(_0x2cbb5f['query'][_0x3c9c('0x2b')]){_0x27c3f9[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x27c3f9[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x27c3f9[_0x3c9c('0x3c')],function(_0x3ef3d1){var _0x2de80a={};_0x2de80a[_0x3ef3d1]={'$like':'%'+_0x2cbb5f[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0x2de80a;})});}_0x27c3f9=_[_0x3c9c('0x47')]({},_0x27c3f9,_0x2cbb5f[_0x3c9c('0x48')]);return db[_0x3c9c('0x64')]['count']({'where':_0x27c3f9[_0x3c9c('0x44')]})[_0x3c9c('0x27')](function(_0x508903){_0x1d2c9d[_0x3c9c('0x20')]=_0x508903;if(_0x2cbb5f[_0x3c9c('0x3a')][_0x3c9c('0x51')]){_0x27c3f9['include']=[{'all':!![]}];}return db[_0x3c9c('0x64')][_0x3c9c('0x4a')](_0x27c3f9);})[_0x3c9c('0x27')](function(_0x285ebc){_0x1d2c9d[_0x3c9c('0x4b')]=_0x285ebc;return _0x1d2c9d;});}})[_0x3c9c('0x27')](respondWithFilteredResult(_0x587598,_0x27c3f9))['catch'](handleError(_0x587598,null));};exports[_0x3c9c('0x66')]=function(_0x4ca0b7,_0x2265e8,_0x48a57f){var _0x4950c3={'raw':!![],'where':{}};var _0x263270={};var _0x5391a7={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x3c9c('0x63')]({'where':{'id':_0x4ca0b7[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x2265e8,null))[_0x3c9c('0x27')](function(_0x2f4e79){if(_0x2f4e79){_0x263270[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x67')][_0x3c9c('0x38')]);_0x263270[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x4ca0b7['query']);_0x263270['filters']=_[_0x3c9c('0x3d')](_0x263270['model'],_0x263270['query']);_0x4950c3[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x263270[_0x3c9c('0x3f')],qs[_0x3c9c('0x3e')](_0x4ca0b7[_0x3c9c('0x3a')]['fields']));_0x4950c3[_0x3c9c('0x3c')]=_0x4950c3[_0x3c9c('0x3c')]['length']?_0x4950c3['attributes']:_0x263270[_0x3c9c('0x3f')];if(!_0x4ca0b7['query'][_0x3c9c('0x40')](_0x3c9c('0x41'))){_0x4950c3[_0x3c9c('0x1f')]=qs[_0x3c9c('0x1f')](_0x4ca0b7[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x4950c3[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0x4ca0b7[_0x3c9c('0x3a')][_0x3c9c('0x1d')]);}_0x4950c3['order']=qs[_0x3c9c('0x43')](_0x4ca0b7[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x4950c3[_0x3c9c('0x44')]=qs['filters'](_[_0x3c9c('0x45')](_0x4ca0b7['query'],_0x263270[_0x3c9c('0x3b')]));_0x4950c3[_0x3c9c('0x44')]['VoiceQueueId']=_0x2f4e79['id'];if(_0x4ca0b7[_0x3c9c('0x3a')]['filter']){_0x4950c3['where']=_[_0x3c9c('0x47')](_0x4950c3[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x4950c3[_0x3c9c('0x3c')],function(_0x17e5ce){var _0x5c96ad={};_0x5c96ad[_0x17e5ce]={'$like':'%'+_0x4ca0b7[_0x3c9c('0x3a')]['filter']+'%'};return _0x5c96ad;})});}_0x4950c3=_[_0x3c9c('0x47')]({},_0x4950c3,_0x4ca0b7['options']);return db[_0x3c9c('0x67')][_0x3c9c('0x20')]({'where':_0x4950c3[_0x3c9c('0x44')]})[_0x3c9c('0x27')](function(_0x126e3d){_0x5391a7[_0x3c9c('0x20')]=_0x126e3d;if(_0x4ca0b7[_0x3c9c('0x3a')][_0x3c9c('0x51')]){_0x4950c3['include']=[{'all':!![]}];}return db[_0x3c9c('0x67')][_0x3c9c('0x4a')](_0x4950c3);})[_0x3c9c('0x27')](function(_0x5614df){_0x5391a7[_0x3c9c('0x4b')]=_0x5614df;return _0x5391a7;});}})[_0x3c9c('0x27')](respondWithFilteredResult(_0x2265e8,_0x4950c3))[_0x3c9c('0x4c')](handleError(_0x2265e8,null));};exports[_0x3c9c('0x68')]=function(_0x107f4f,_0xdfe4f7,_0x58e1e8){var _0x10b6b9={'raw':!![],'where':{}};var _0x2ba1f1={};var _0x2e158c={'count':0x0,'rows':[]};return db[_0x3c9c('0x49')]['findOne']({'where':{'id':_0x107f4f[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0xdfe4f7,null))[_0x3c9c('0x27')](function(_0x517fa2){if(_0x517fa2){_0x2ba1f1['model']=_[_0x3c9c('0x4f')](db[_0x3c9c('0x69')][_0x3c9c('0x38')]);_0x2ba1f1[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x107f4f[_0x3c9c('0x3a')]);_0x2ba1f1[_0x3c9c('0x3b')]=_[_0x3c9c('0x3d')](_0x2ba1f1[_0x3c9c('0x3f')],_0x2ba1f1[_0x3c9c('0x3a')]);_0x10b6b9[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x2ba1f1['model'],qs['fields'](_0x107f4f[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x10b6b9[_0x3c9c('0x3c')]=_0x10b6b9[_0x3c9c('0x3c')][_0x3c9c('0x50')]?_0x10b6b9[_0x3c9c('0x3c')]:_0x2ba1f1[_0x3c9c('0x3f')];if(!_0x107f4f['query']['hasOwnProperty'](_0x3c9c('0x41'))){_0x10b6b9['limit']=qs[_0x3c9c('0x1f')](_0x107f4f[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x10b6b9[_0x3c9c('0x1d')]=qs['offset'](_0x107f4f[_0x3c9c('0x3a')][_0x3c9c('0x1d')]);}_0x10b6b9[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0x107f4f[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x10b6b9['where']=qs['filters'](_[_0x3c9c('0x45')](_0x107f4f[_0x3c9c('0x3a')],_0x2ba1f1[_0x3c9c('0x3b')]));_0x10b6b9[_0x3c9c('0x44')][_0x3c9c('0x65')]=_0x517fa2['id'];if(_0x107f4f[_0x3c9c('0x3a')]['filter']){_0x10b6b9[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x10b6b9[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x10b6b9['attributes'],function(_0x73dcda){var _0x5460ca={};_0x5460ca[_0x73dcda]={'$like':'%'+_0x107f4f['query'][_0x3c9c('0x2b')]+'%'};return _0x5460ca;})});}_0x10b6b9=_['merge']({},_0x10b6b9,_0x107f4f[_0x3c9c('0x48')]);return db[_0x3c9c('0x69')]['count']({'where':_0x10b6b9[_0x3c9c('0x44')]})[_0x3c9c('0x27')](function(_0x189663){_0x2e158c[_0x3c9c('0x20')]=_0x189663;if(_0x107f4f[_0x3c9c('0x3a')]['includeAll']){_0x10b6b9['include']=[{'all':!![]}];}return db[_0x3c9c('0x69')][_0x3c9c('0x4a')](_0x10b6b9);})[_0x3c9c('0x27')](function(_0xf86c09){_0x2e158c[_0x3c9c('0x4b')]=_0xf86c09;return _0x2e158c;});}})[_0x3c9c('0x27')](respondWithFilteredResult(_0xdfe4f7,_0x10b6b9))[_0x3c9c('0x4c')](handleError(_0xdfe4f7,null));};exports[_0x3c9c('0x6a')]=function(_0x12f53,_0x1352fa,_0x441c95){var _0x258dd7={'raw':!![],'where':{}};var _0x4b6a24={};var _0x2e9535={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x3c9c('0x63')]({'where':{'id':_0x12f53['params']['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x1352fa,null))[_0x3c9c('0x27')](function(_0x2c5246){if(_0x2c5246){_0x4b6a24[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x6b')]['rawAttributes']);_0x4b6a24[_0x3c9c('0x3a')]=_['keys'](_0x12f53[_0x3c9c('0x3a')]);_0x4b6a24['filters']=_[_0x3c9c('0x3d')](_0x4b6a24[_0x3c9c('0x3f')],_0x4b6a24[_0x3c9c('0x3a')]);_0x258dd7['attributes']=_['intersection'](_0x4b6a24['model'],qs[_0x3c9c('0x3e')](_0x12f53['query']['fields']));_0x258dd7['attributes']=_0x258dd7[_0x3c9c('0x3c')]['length']?_0x258dd7['attributes']:_0x4b6a24['model'];if(!_0x12f53[_0x3c9c('0x3a')]['hasOwnProperty'](_0x3c9c('0x41'))){_0x258dd7[_0x3c9c('0x1f')]=qs[_0x3c9c('0x1f')](_0x12f53['query'][_0x3c9c('0x1f')]);_0x258dd7['offset']=qs[_0x3c9c('0x1d')](_0x12f53[_0x3c9c('0x3a')]['offset']);}_0x258dd7[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0x12f53['query'][_0x3c9c('0x43')]);_0x258dd7[_0x3c9c('0x44')]=qs[_0x3c9c('0x3b')](_[_0x3c9c('0x45')](_0x12f53[_0x3c9c('0x3a')],_0x4b6a24[_0x3c9c('0x3b')]));_0x258dd7[_0x3c9c('0x44')][_0x3c9c('0x65')]=_0x2c5246['id'];if(_0x12f53[_0x3c9c('0x3a')]['filter']){_0x258dd7[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x258dd7[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x258dd7[_0x3c9c('0x3c')],function(_0x5559d7){var _0x5973d9={};_0x5973d9[_0x5559d7]={'$like':'%'+_0x12f53[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0x5973d9;})});}_0x258dd7=_[_0x3c9c('0x47')]({},_0x258dd7,_0x12f53[_0x3c9c('0x48')]);return db[_0x3c9c('0x6b')]['count']({'where':_0x258dd7[_0x3c9c('0x44')]})['then'](function(_0x45811b){_0x2e9535['count']=_0x45811b;if(_0x12f53[_0x3c9c('0x3a')]['includeAll']){_0x258dd7['include']=[{'all':!![]}];}return db[_0x3c9c('0x6b')][_0x3c9c('0x4a')](_0x258dd7);})[_0x3c9c('0x27')](function(_0x50ea44){_0x2e9535[_0x3c9c('0x4b')]=_0x50ea44;return _0x2e9535;});}})[_0x3c9c('0x27')](respondWithFilteredResult(_0x1352fa,_0x258dd7))[_0x3c9c('0x4c')](handleError(_0x1352fa,null));};exports[_0x3c9c('0x6c')]=function(_0x4b9eb2,_0xc6b2cf,_0x5cc313){var _0x42c9f3={};var _0x47ee15={};var _0x50d273;var _0x2aabae;return db['VoiceQueue'][_0x3c9c('0x63')]({'where':{'id':_0x4b9eb2['params']['id']}})['then'](handleEntityNotFound(_0xc6b2cf,null))['then'](function(_0x3e00ce){if(_0x3e00ce){_0x50d273=_0x3e00ce;_0x47ee15[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x6d')]['rawAttributes']);_0x47ee15[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x4b9eb2['query']);_0x47ee15['filters']=_[_0x3c9c('0x3d')](_0x47ee15['model'],_0x47ee15[_0x3c9c('0x3a')]);_0x42c9f3[_0x3c9c('0x3c')]=_['intersection'](_0x47ee15[_0x3c9c('0x3f')],qs[_0x3c9c('0x3e')](_0x4b9eb2[_0x3c9c('0x3a')]['fields']));_0x42c9f3['attributes']=_0x42c9f3[_0x3c9c('0x3c')][_0x3c9c('0x50')]?_0x42c9f3['attributes']:_0x47ee15[_0x3c9c('0x3f')];_0x42c9f3['order']=qs['sort'](_0x4b9eb2[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x42c9f3['where']=qs['filters'](_[_0x3c9c('0x45')](_0x4b9eb2[_0x3c9c('0x3a')],_0x47ee15[_0x3c9c('0x3b')]));if(_0x4b9eb2[_0x3c9c('0x3a')][_0x3c9c('0x2b')]){_0x42c9f3[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x42c9f3[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x42c9f3['attributes'],function(_0x46602e){var _0x1b3d08={};_0x1b3d08[_0x46602e]={'$like':'%'+_0x4b9eb2[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0x1b3d08;})});}_0x42c9f3=_[_0x3c9c('0x47')]({},_0x42c9f3,_0x4b9eb2['options']);return _0x50d273[_0x3c9c('0x6c')](_0x42c9f3);}})[_0x3c9c('0x27')](function(_0x1498f2){if(_0x1498f2){_0x2aabae=_0x1498f2[_0x3c9c('0x50')];if(!_0x4b9eb2['query']['hasOwnProperty'](_0x3c9c('0x41'))){_0x42c9f3[_0x3c9c('0x1f')]=qs['limit'](_0x4b9eb2[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x42c9f3[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0x4b9eb2[_0x3c9c('0x3a')][_0x3c9c('0x1d')]);}return _0x50d273[_0x3c9c('0x6c')](_0x42c9f3);}})[_0x3c9c('0x27')](function(_0x3c98b5){if(_0x3c98b5){return _0x3c98b5?{'count':_0x2aabae,'rows':_0x3c98b5}:null;}})[_0x3c9c('0x27')](respondWithResult(_0xc6b2cf,null))[_0x3c9c('0x4c')](handleError(_0xc6b2cf,null));};exports['addTeams']=function(_0x5abab5,_0x140449,_0x2ab056){var _0x56eb48=_0x5abab5[_0x3c9c('0x60')][_0x3c9c('0x6e')];var _0x31c02b=_['map'](_0x56eb48,'id');return db['Team'][_0x3c9c('0x4a')]({'where':{'id':_0x31c02b},'attributes':['id'],'include':[{'model':db[_0x3c9c('0x6f')],'as':_0x3c9c('0x70'),'attributes':['id',_0x3c9c('0x35'),_0x3c9c('0x71'),_0x3c9c('0x72'),_0x3c9c('0x73')],'raw':!![]}]})['then'](function(_0x5f21c1){if(_0x5f21c1){var _0x32b5b2=_[_0x3c9c('0x74')](_0x5f21c1,function(_0x29a73d){var _0x8bfdea=_0x29a73d['get']({'plain':!![]});_0x8bfdea['Agents'][_0x3c9c('0x75')](function(_0x5c7233){_0x5c7233[_0x3c9c('0x76')]=_[_0x3c9c('0x30')](_0x56eb48,{'id':_0x8bfdea['id']})[_0x3c9c('0x76')];});return _0x8bfdea[_0x3c9c('0x70')];});return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x5abab5[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](function(_0x575a0e){return db[_0x3c9c('0x77')]['transaction'](function(_0x19484b){return _0x575a0e[_0x3c9c('0x78')](_0x31c02b,{'transaction':_0x19484b})[_0x3c9c('0x27')](function(){return BPromise['each'](_0x56eb48,function(_0x328a43){return db[_0x3c9c('0x79')][_0x3c9c('0x7a')]({'TeamId':_0x328a43['id'],'VoiceQueueId':_0x5abab5[_0x3c9c('0x4e')]['id'],'penalty':_0x328a43[_0x3c9c('0x76')]},{'transaction':_0x19484b});});})['then'](function(){return BPromise['each'](_0x32b5b2,function(_0xc5ed4){return db[_0x3c9c('0x7b')]['findOrCreate']({'where':{'UserId':_0xc5ed4['id'],'VoiceQueueId':_0x5abab5[_0x3c9c('0x4e')]['id']},'defaults':{'penalty':_0xc5ed4[_0x3c9c('0x76')]},'transaction':_0x19484b});});})[_0x3c9c('0x27')](function(){return BPromise[_0x3c9c('0x7c')](_['filter'](_0x32b5b2,{'online':!![]}),function(_0x52c484){return db[_0x3c9c('0x7d')]['upsert']({'membername':_0x52c484[_0x3c9c('0x35')],'UserId':_0x52c484['id'],'queue_name':_0x575a0e[_0x3c9c('0x35')],'VoiceQueueId':_0x575a0e['id'],'interface':_[_0x3c9c('0x7e')](_0x52c484[_0x3c9c('0x73')])?util[_0x3c9c('0x7f')](_0x3c9c('0x80'),_0x52c484[_0x3c9c('0x35')]):_0x52c484[_0x3c9c('0x73')],'paused':_0x52c484[_0x3c9c('0x72')]||![],'penalty':_0x52c484[_0x3c9c('0x76')]},{'transaction':_0x19484b});});})[_0x3c9c('0x27')](function(){_0x32b5b2['forEach'](function(_0x1efa7f){socket[_0x3c9c('0x81')](_0x3c9c('0x82'),{'UserId':_0x1efa7f['id'],'VoiceQueueId':_0x575a0e['id']});});});});});}})['then'](respondWithStatusCode(_0x140449,null))[_0x3c9c('0x4c')](handleError(_0x140449,null));};exports[_0x3c9c('0x83')]=function(_0x172dd9,_0x104299,_0x5341fe){return db[_0x3c9c('0x6d')][_0x3c9c('0x4a')]({'where':{'id':_0x172dd9[_0x3c9c('0x3a')][_0x3c9c('0x84')]},'attributes':['id'],'include':[{'model':db[_0x3c9c('0x6f')],'as':_0x3c9c('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x104299,null))[_0x3c9c('0x27')](function(_0x2471ce){var _0x25e1e7=_['map'](_0x2471ce,'id');var _0x4a1d36=[];var _0x52086d=[];var _0x7d182c=squel[_0x3c9c('0x85')]();_0x7d182c[_0x3c9c('0x86')](_0x3c9c('0x87'))[_0x3c9c('0x88')](_0x3c9c('0x89'),'tq')['join'](_0x3c9c('0x8a'),'ut',_0x3c9c('0x8b'))['where'](_0x3c9c('0x8c'),_0x172dd9[_0x3c9c('0x4e')]['id']);for(var _0x592f68=0x0;_0x592f68<_0x2471ce[_0x3c9c('0x50')];_0x592f68+=0x1){let _0x2e1c83=_0x2471ce[_0x592f68];for(var _0x2cbcd7=0x0;_0x2cbcd7<_0x2e1c83[_0x3c9c('0x70')][_0x3c9c('0x50')];_0x2cbcd7+=0x1){let _0x23c89e=_0x2e1c83[_0x3c9c('0x70')][_0x2cbcd7];var _0x17be35=_0x7d182c[_0x3c9c('0x5d')]();_0x17be35[_0x3c9c('0x44')](_0x3c9c('0x8d'),_0x23c89e['id']);_0x52086d[_0x3c9c('0x8e')](db[_0x3c9c('0x77')][_0x3c9c('0x3a')](_0x17be35[_0x3c9c('0x8f')](),{'type':db[_0x3c9c('0x77')]['QueryTypes']['SELECT']})[_0x3c9c('0x27')](function(_0x1f8f97){if(_0x1f8f97[_0x3c9c('0x50')]===0x1){return _0x23c89e['id'];}else{var _0x3ccfcf=_[_0x3c9c('0x90')](_[_0x3c9c('0x2d')](_0x1f8f97,_0x3c9c('0x91')),function(_0x161f4e){return _[_0x3c9c('0x2f')](_0x25e1e7,_0x161f4e);});if(_0x3ccfcf){return _0x23c89e['id'];}}}));}}return BPromise[_0x3c9c('0x92')](_0x52086d)[_0x3c9c('0x27')](function(_0x288c1c){_0x4a1d36=_(_0x4a1d36)['union'](_0x288c1c)['compact']()['value']();return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x172dd9[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](function(_0x5e5d3e){return db[_0x3c9c('0x77')][_0x3c9c('0x93')](function(_0x569d4a){return _0x5e5d3e['removeTeams'](_0x172dd9['query'][_0x3c9c('0x84')],{'transaction':_0x569d4a})[_0x3c9c('0x27')](function(){if(!_['isEmpty'](_0x4a1d36)){return _0x5e5d3e[_0x3c9c('0x94')](_0x4a1d36,{'transaction':_0x569d4a})[_0x3c9c('0x27')](function(){return db[_0x3c9c('0x7d')][_0x3c9c('0x28')]({'where':{'VoiceQueueId':_0x172dd9[_0x3c9c('0x4e')]['id'],'UserId':_0x4a1d36},'transaction':_0x569d4a});});}})[_0x3c9c('0x27')](function(){_0x4a1d36[_0x3c9c('0x75')](function(_0x1b4a1a){socket['emit'](_0x3c9c('0x95'),{'UserId':_0x1b4a1a,'VoiceQueueId':_0x5e5d3e['id']});});});});});});})[_0x3c9c('0x27')](respondWithStatusCode(_0x104299,null))['catch'](handleError(_0x104299,null));};exports[_0x3c9c('0x96')]=function(_0x2a5517,_0x3573d5,_0x5d5578){var _0x17d65a,_0x1cf94d;return db['VoiceQueue']['find']({'where':{'id':_0x2a5517[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x3573d5,null))[_0x3c9c('0x27')](function(_0x294f08){if(_0x294f08){_0x1cf94d=_0x294f08;return _0x294f08[_0x3c9c('0x96')](_0x2a5517[_0x3c9c('0x60')][_0x3c9c('0x84')],_['omit'](_0x2a5517[_0x3c9c('0x60')],[_0x3c9c('0x84'),'id'])||{})[_0x3c9c('0x97')](function(_0x184d45){for(var _0x36c8bb=0x0;_0x36c8bb<_0x2a5517[_0x3c9c('0x60')][_0x3c9c('0x84')][_0x3c9c('0x50')];_0x36c8bb+=0x1){socket[_0x3c9c('0x81')](_0x3c9c('0x82'),{'UserId':Number(_0x2a5517[_0x3c9c('0x60')][_0x3c9c('0x84')][_0x36c8bb]),'VoiceQueueId':Number(_0x2a5517[_0x3c9c('0x4e')]['id'])});}return _0x184d45;});}})[_0x3c9c('0x27')](function(_0x4e1681){_0x17d65a=_0x4e1681||[];if(_0x1cf94d){return db['User']['findAll']({'where':{'id':_0x2a5517[_0x3c9c('0x60')][_0x3c9c('0x84')]},'attributes':['id',_0x3c9c('0x35'),_0x3c9c('0x71'),'voicePause',_0x3c9c('0x73')],'raw':!![]});}})[_0x3c9c('0x27')](function(_0x67c740){if(!_['isEmpty'](_0x67c740)){var _0x3a3397=[];for(var _0x5ab1ed=0x0;_0x5ab1ed<_0x67c740['length'];_0x5ab1ed++){if(_0x67c740[_0x5ab1ed]['online']){_0x3a3397[_0x3c9c('0x8e')](db[_0x3c9c('0x7d')][_0x3c9c('0x7a')]({'membername':_0x67c740[_0x5ab1ed]['name'],'UserId':_0x67c740[_0x5ab1ed]['id'],'queue_name':_0x1cf94d[_0x3c9c('0x35')],'VoiceQueueId':_0x1cf94d['id'],'interface':_['isNil'](_0x67c740[_0x5ab1ed][_0x3c9c('0x73')])?util[_0x3c9c('0x7f')](_0x3c9c('0x80'),_0x67c740[_0x5ab1ed]['name']):_0x67c740[_0x5ab1ed][_0x3c9c('0x73')],'paused':_0x67c740[_0x5ab1ed]['voicePause']||![],'penalty':_0x2a5517['body']['penalty']||0x0}));}}return BPromise[_0x3c9c('0x92')](_0x3a3397);}})[_0x3c9c('0x27')](function(){return _0x17d65a;})['then'](respondWithResult(_0x3573d5,null))['catch'](handleError(_0x3573d5,null));};exports['removeAgents']=function(_0x24ab12,_0x56acd6,_0x1240f2){return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x24ab12[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x56acd6,null))[_0x3c9c('0x27')](function(_0x5ed78a){if(_0x5ed78a){return _0x5ed78a['removeAgents'](_0x24ab12['query']['ids'])['then'](function(){if(_[_0x3c9c('0x98')](_0x24ab12[_0x3c9c('0x3a')]['ids'])){for(var _0x42838a=0x0;_0x42838a<_0x24ab12[_0x3c9c('0x3a')][_0x3c9c('0x84')][_0x3c9c('0x50')];_0x42838a+=0x1){socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x24ab12['query'][_0x3c9c('0x84')][_0x42838a]),'VoiceQueueId':Number(_0x24ab12[_0x3c9c('0x4e')]['id'])});}}else{socket['emit'](_0x3c9c('0x95'),{'UserId':Number(_0x24ab12['query'][_0x3c9c('0x84')]),'VoiceQueueId':Number(_0x24ab12[_0x3c9c('0x4e')]['id'])});}});}})['then'](function(_0x15239c){return db[_0x3c9c('0x7d')][_0x3c9c('0x28')]({'where':{'VoiceQueueId':_0x24ab12[_0x3c9c('0x4e')]['id'],'UserId':_0x24ab12[_0x3c9c('0x3a')][_0x3c9c('0x84')]}})['then'](function(){return _0x15239c;});})['then'](respondWithStatusCode(_0x56acd6,null))['catch'](handleError(_0x56acd6,null));};exports[_0x3c9c('0x99')]=function(_0xcdc42b,_0x3b6090,_0x5d852a){var _0x6bf4c6={};var _0x59c6c8={};var _0x28f510;var _0x33b65c;return db[_0x3c9c('0x49')][_0x3c9c('0x63')]({'where':{'id':_0xcdc42b[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x3b6090,null))[_0x3c9c('0x27')](function(_0x58b3c8){if(_0x58b3c8){_0x28f510=_0x58b3c8;_0x59c6c8[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x6f')][_0x3c9c('0x38')]);_0x59c6c8[_0x3c9c('0x3a')]=_['keys'](_0xcdc42b[_0x3c9c('0x3a')]);_0x59c6c8['filters']=_[_0x3c9c('0x3d')](_0x59c6c8[_0x3c9c('0x3f')],_0x59c6c8['query']);_0x6bf4c6['attributes']=_['intersection'](_0x59c6c8[_0x3c9c('0x3f')],qs[_0x3c9c('0x3e')](_0xcdc42b['query'][_0x3c9c('0x3e')]));_0x6bf4c6[_0x3c9c('0x3c')]=_0x6bf4c6['attributes'][_0x3c9c('0x50')]?_0x6bf4c6[_0x3c9c('0x3c')]:_0x59c6c8[_0x3c9c('0x3f')];_0x6bf4c6[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0xcdc42b[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x6bf4c6[_0x3c9c('0x44')]=qs[_0x3c9c('0x3b')](_[_0x3c9c('0x45')](_0xcdc42b[_0x3c9c('0x3a')],_0x59c6c8['filters']));if(_0xcdc42b['query']['filter']){_0x6bf4c6[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x6bf4c6[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x6bf4c6[_0x3c9c('0x3c')],function(_0x4f1a9a){var _0x38d941={};_0x38d941[_0x4f1a9a]={'$like':'%'+_0xcdc42b['query'][_0x3c9c('0x2b')]+'%'};return _0x38d941;})});}_0x6bf4c6=_['merge']({},_0x6bf4c6,_0xcdc42b[_0x3c9c('0x48')]);return _0x28f510[_0x3c9c('0x99')](_0x6bf4c6);}})[_0x3c9c('0x27')](function(_0x2adcb2){if(_0x2adcb2){_0x33b65c=_0x2adcb2[_0x3c9c('0x50')];if(!_0xcdc42b[_0x3c9c('0x3a')]['hasOwnProperty'](_0x3c9c('0x41'))){_0x6bf4c6['limit']=qs[_0x3c9c('0x1f')](_0xcdc42b[_0x3c9c('0x3a')]['limit']);_0x6bf4c6[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0xcdc42b['query'][_0x3c9c('0x1d')]);}return _0x28f510[_0x3c9c('0x99')](_0x6bf4c6);}})[_0x3c9c('0x27')](function(_0x3b8781){if(_0x3b8781){return _0x3b8781?{'count':_0x33b65c,'rows':_0x3b8781}:null;}})[_0x3c9c('0x27')](respondWithResult(_0x3b6090,null))[_0x3c9c('0x4c')](handleError(_0x3b6090,null));};exports[_0x3c9c('0x9a')]=function(_0x2b6495,_0x21b27b,_0x3fcec9){var _0x13b386={};var _0x13de89={};var _0x52828e;var _0x247a4d;return db[_0x3c9c('0x49')][_0x3c9c('0x63')]({'where':{'id':_0x2b6495['params']['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x21b27b,null))[_0x3c9c('0x27')](function(_0x236c5e){if(_0x236c5e){_0x52828e=_0x236c5e;_0x13de89[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x7d')][_0x3c9c('0x38')]);_0x13de89[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x2b6495[_0x3c9c('0x3a')]);_0x13de89[_0x3c9c('0x3b')]=_[_0x3c9c('0x3d')](_0x13de89['model'],_0x13de89[_0x3c9c('0x3a')]);_0x13b386['attributes']=_['intersection'](_0x13de89['model'],qs['fields'](_0x2b6495[_0x3c9c('0x3a')]['fields']));_0x13b386[_0x3c9c('0x3c')]=_0x13b386[_0x3c9c('0x3c')]['length']?_0x13b386[_0x3c9c('0x3c')]:_0x13de89[_0x3c9c('0x3f')];_0x13b386['order']=qs[_0x3c9c('0x43')](_0x2b6495[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x13b386[_0x3c9c('0x44')]=qs[_0x3c9c('0x3b')](_[_0x3c9c('0x45')](_0x2b6495['query'],_0x13de89[_0x3c9c('0x3b')]));if(_0x2b6495[_0x3c9c('0x3a')][_0x3c9c('0x2b')]){_0x13b386['where']=_[_0x3c9c('0x47')](_0x13b386[_0x3c9c('0x44')],{'$or':_[_0x3c9c('0x2d')](_0x13b386[_0x3c9c('0x3c')],function(_0x24a412){var _0x264827={};_0x264827[_0x24a412]={'$like':'%'+_0x2b6495[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0x264827;})});}_0x13b386=_[_0x3c9c('0x47')]({},_0x13b386,_0x2b6495[_0x3c9c('0x48')]);return _0x52828e['getMembers'](_0x13b386);}})[_0x3c9c('0x27')](function(_0x38d305){if(_0x38d305){_0x247a4d=_0x38d305[_0x3c9c('0x50')];if(!_0x2b6495[_0x3c9c('0x3a')]['hasOwnProperty'](_0x3c9c('0x41'))){_0x13b386['limit']=qs[_0x3c9c('0x1f')](_0x2b6495[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x13b386[_0x3c9c('0x1d')]=qs[_0x3c9c('0x1d')](_0x2b6495[_0x3c9c('0x3a')][_0x3c9c('0x1d')]);}return _0x52828e[_0x3c9c('0x9a')](_0x13b386);}})[_0x3c9c('0x27')](function(_0x4dbb61){return _0x4dbb61?{'count':_0x247a4d,'rows':_0x4dbb61}:null;})[_0x3c9c('0x27')](respondWithResult(_0x21b27b,null))[_0x3c9c('0x4c')](handleError(_0x21b27b,null));};exports[_0x3c9c('0x9b')]=function(_0x45cd5d,_0x52e16d,_0x1c2779){var _0x5670f0={};var _0xbbcc4f={};var _0x4debfb;var _0x32ae5a;return db['VoiceQueue'][_0x3c9c('0x63')]({'where':{'id':_0x45cd5d[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x52e16d,null))[_0x3c9c('0x27')](function(_0x38dfab){if(_0x38dfab){_0x4debfb=_0x38dfab;_0xbbcc4f[_0x3c9c('0x3f')]=_['keys'](db[_0x3c9c('0x9c')][_0x3c9c('0x38')]);_0xbbcc4f[_0x3c9c('0x3a')]=_['keys'](_0x45cd5d[_0x3c9c('0x3a')]);_0xbbcc4f[_0x3c9c('0x3b')]=_[_0x3c9c('0x3d')](_0xbbcc4f['model'],_0xbbcc4f[_0x3c9c('0x3a')]);_0x5670f0[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0xbbcc4f[_0x3c9c('0x3f')],qs[_0x3c9c('0x3e')](_0x45cd5d[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x5670f0['attributes']=_0x5670f0['attributes'][_0x3c9c('0x50')]?_0x5670f0[_0x3c9c('0x3c')]:_0xbbcc4f[_0x3c9c('0x3f')];_0x5670f0[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0x45cd5d[_0x3c9c('0x3a')][_0x3c9c('0x43')]);_0x5670f0['where']=qs[_0x3c9c('0x3b')](_['pick'](_0x45cd5d[_0x3c9c('0x3a')],_0xbbcc4f[_0x3c9c('0x3b')]));if(_0x45cd5d[_0x3c9c('0x3a')][_0x3c9c('0x2b')]){_0x5670f0[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x5670f0['where'],{'$or':_[_0x3c9c('0x2d')](_0x5670f0['attributes'],function(_0x5dfc52){var _0x2d0c01={};_0x2d0c01[_0x5dfc52]={'$like':'%'+_0x45cd5d[_0x3c9c('0x3a')]['filter']+'%'};return _0x2d0c01;})});}_0x5670f0=_[_0x3c9c('0x47')]({},_0x5670f0,_0x45cd5d[_0x3c9c('0x48')]);return _0x4debfb[_0x3c9c('0x9b')](_0x5670f0);}})[_0x3c9c('0x27')](function(_0x4d79b1){if(_0x4d79b1){_0x32ae5a=_0x4d79b1[_0x3c9c('0x50')];if(!_0x45cd5d['query'][_0x3c9c('0x40')](_0x3c9c('0x41'))){_0x5670f0[_0x3c9c('0x1f')]=qs['limit'](_0x45cd5d[_0x3c9c('0x3a')]['limit']);_0x5670f0[_0x3c9c('0x1d')]=qs['offset'](_0x45cd5d[_0x3c9c('0x3a')]['offset']);}return _0x4debfb[_0x3c9c('0x9b')](_0x5670f0);}})[_0x3c9c('0x27')](function(_0xb893de){if(_0xb893de){return _0xb893de?{'count':_0x32ae5a,'rows':_0xb893de}:null;}})[_0x3c9c('0x27')](respondWithResult(_0x52e16d,null))[_0x3c9c('0x4c')](handleError(_0x52e16d,null));};exports[_0x3c9c('0x9d')]=function(_0x1cbf6c,_0x1815dc,_0x110f4c){var _0x2702ac=moment()[_0x3c9c('0x7f')](_0x3c9c('0x9e'));var _0x48b0ea,_0x4d3420;return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x1cbf6c[_0x3c9c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1815dc,null))[_0x3c9c('0x27')](function(_0x2e02ce){if(_0x2e02ce){_0x4d3420=_0x2e02ce;return _0x2e02ce[_0x3c9c('0x9d')](_0x1cbf6c[_0x3c9c('0x60')][_0x3c9c('0x84')],_['omit'](_0x1cbf6c[_0x3c9c('0x60')],[_0x3c9c('0x84'),'id'])||{});}return null;})['spread'](function(_0x2b152d){var _0x4ab3bb;_0x48b0ea=_0x2b152d||[];var _0x32d1d3=[];if(_0x2b152d){for(var _0x2f5596=0x0;_0x2f5596<_0x2b152d[_0x3c9c('0x50')];_0x2f5596+=0x1){var _0x1af3ad=_0x2b152d[_0x2f5596]['get']({'plain':!![]});_0x4d3420['dialCheckDuplicateType']=_0x1cbf6c['body'][_0x3c9c('0x9f')]?_0x1cbf6c['body']['dialCheckDuplicateType']:_0x4d3420['dialCheckDuplicateType'];switch(_0x4d3420[_0x3c9c('0x9f')]){case _0x3c9c('0xa0'):_0x4ab3bb=squel[_0x3c9c('0xa1')]()[_0x3c9c('0xa2')](_0x3c9c('0xa3'))['fromQuery']([_0x3c9c('0xa4'),_0x3c9c('0xa5'),_0x3c9c('0xa6'),_0x3c9c('0xa7'),_0x3c9c('0x65'),'createdAt',_0x3c9c('0x61')],squel[_0x3c9c('0x85')]()[_0x3c9c('0x86')](_0x3c9c('0xa4'),_0x3c9c('0xa4'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0xa5'))[_0x3c9c('0x86')]('id',_0x3c9c('0xa6'))[_0x3c9c('0x86')](_0x1af3ad[_0x3c9c('0xa8')][_0x3c9c('0x8f')](),_0x3c9c('0xa7'))[_0x3c9c('0x86')](_0x1cbf6c['params']['id'][_0x3c9c('0x8f')](),_0x3c9c('0x65'))['field']('\x27'+_0x2702ac+'\x27',_0x3c9c('0x5f'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0x61'))[_0x3c9c('0x88')](_0x3c9c('0xa9'))[_0x3c9c('0x44')]('deletedAt\x20IS\x20NULL')[_0x3c9c('0x44')]('ListId\x20=\x20?',_0x1af3ad[_0x3c9c('0xa8')][_0x3c9c('0x8f')]())[_0x3c9c('0x44')](_0x3c9c('0xaa'))['where'](_0x3c9c('0xab'),squel['select']()[_0x3c9c('0x86')](_0x3c9c('0xac'))[_0x3c9c('0x88')](_0x3c9c('0xad'))[_0x3c9c('0x44')](_0x3c9c('0x8c'),_0x1cbf6c[_0x3c9c('0x4e')]['id']['toString']()))[_0x3c9c('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x3c9c('0x85')]()[_0x3c9c('0x86')](_0x3c9c('0xae'))[_0x3c9c('0x88')]('cm_hopper')[_0x3c9c('0x44')](_0x3c9c('0x8c'),_0x1cbf6c[_0x3c9c('0x4e')]['id']['toString']())))[_0x3c9c('0x8f')]();break;case'onlyIfOpen':_0x4ab3bb=squel[_0x3c9c('0xa1')]()[_0x3c9c('0xa2')](_0x3c9c('0xa3'))[_0x3c9c('0xaf')]([_0x3c9c('0xa4'),_0x3c9c('0xa5'),'ContactId',_0x3c9c('0xa7'),'VoiceQueueId',_0x3c9c('0x5f'),_0x3c9c('0x61')],squel[_0x3c9c('0x85')]()[_0x3c9c('0x86')]('phone',_0x3c9c('0xa4'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0xa5'))[_0x3c9c('0x86')]('id',_0x3c9c('0xa6'))['field'](_0x1af3ad[_0x3c9c('0xa8')]['toString'](),_0x3c9c('0xa7'))[_0x3c9c('0x86')](_0x1cbf6c[_0x3c9c('0x4e')]['id']['toString'](),_0x3c9c('0x65'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0x5f'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0x61'))[_0x3c9c('0x88')](_0x3c9c('0xa9'))[_0x3c9c('0x44')](_0x3c9c('0xb0'))[_0x3c9c('0x44')](_0x3c9c('0xb1'),_0x1af3ad['CmListId'][_0x3c9c('0x8f')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x3c9c('0x44')](_0x3c9c('0xab'),squel[_0x3c9c('0x85')]()[_0x3c9c('0x86')](_0x3c9c('0xae'))[_0x3c9c('0x88')](_0x3c9c('0xa3'))[_0x3c9c('0x44')](_0x3c9c('0x8c'),_0x1cbf6c[_0x3c9c('0x4e')]['id'][_0x3c9c('0x8f')]())))[_0x3c9c('0x8f')]();break;default:_0x4ab3bb=squel[_0x3c9c('0xa1')]()[_0x3c9c('0xa2')](_0x3c9c('0xa3'))[_0x3c9c('0xaf')]([_0x3c9c('0xa4'),_0x3c9c('0xa5'),_0x3c9c('0xa6'),_0x3c9c('0xa7'),_0x3c9c('0x65'),_0x3c9c('0x5f'),_0x3c9c('0x61')],squel[_0x3c9c('0x85')]()[_0x3c9c('0x86')](_0x3c9c('0xa4'),_0x3c9c('0xa4'))['field']('\x27'+_0x2702ac+'\x27','scheduledAt')[_0x3c9c('0x86')]('id','ContactId')['field'](_0x1af3ad[_0x3c9c('0xa8')]['toString'](),'ListId')[_0x3c9c('0x86')](_0x1cbf6c[_0x3c9c('0x4e')]['id'][_0x3c9c('0x8f')](),_0x3c9c('0x65'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27',_0x3c9c('0x5f'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27','updatedAt')[_0x3c9c('0x88')](_0x3c9c('0xa9'))[_0x3c9c('0x44')](_0x3c9c('0xb0'))[_0x3c9c('0x44')](_0x3c9c('0xb1'),_0x1af3ad[_0x3c9c('0xa8')][_0x3c9c('0x8f')]())['where'](_0x3c9c('0xaa')))[_0x3c9c('0x8f')]();}_0x32d1d3['push'](db[_0x3c9c('0x77')][_0x3c9c('0x3a')](_0x4ab3bb));}return BPromise[_0x3c9c('0x92')](_0x32d1d3);}})[_0x3c9c('0x27')](function(){var _0x9a85c0=[];var _0x10ff69=squel[_0x3c9c('0xa1')]()[_0x3c9c('0xa2')](_0x3c9c('0xb2'))[_0x3c9c('0xaf')]([_0x3c9c('0xb3'),_0x3c9c('0xa4'),_0x3c9c('0xb4'),_0x3c9c('0x5f'),_0x3c9c('0x61')],squel[_0x3c9c('0x85')]()['field'](_0x3c9c('0xb5'))[_0x3c9c('0x86')](_0x3c9c('0xb6'))['field'](_0x3c9c('0xb7'))['field']('\x27'+_0x2702ac+'\x27',_0x3c9c('0x5f'))[_0x3c9c('0x86')]('\x27'+_0x2702ac+'\x27','updatedAt')['from'](_0x3c9c('0xb8'),'ci')[_0x3c9c('0xb9')](_0x3c9c('0xa3'),'h',_0x3c9c('0xba'))[_0x3c9c('0x44')](_0x3c9c('0xbb'),_0x2702ac)[_0x3c9c('0x44')]('ci.ItemClass=?',_0x3c9c('0xbc')))[_0x3c9c('0x8f')]();_0x9a85c0['push'](db[_0x3c9c('0x77')][_0x3c9c('0x3a')](_0x10ff69));return BPromise['all'](_0x9a85c0);})['then'](function(){return _0x48b0ea;})['then'](respondWithResult(_0x1815dc,null))[_0x3c9c('0x4c')](handleError(_0x1815dc,null));};exports[_0x3c9c('0xbd')]=function(_0x25b8e1,_0x1bfe77,_0x48183e){return db['VoiceQueue'][_0x3c9c('0x30')]({'where':{'id':_0x25b8e1[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x1bfe77,null))['then'](function(_0x1dc4bd){if(_0x1dc4bd){return _0x1dc4bd['removeLists'](_0x25b8e1['query'][_0x3c9c('0x84')]);}})[_0x3c9c('0x27')](function(_0xecbeb4){if(_0xecbeb4){return db[_0x3c9c('0x64')]['destroy']({'where':{'ListId':_0x25b8e1[_0x3c9c('0x3a')][_0x3c9c('0x84')],'VoiceQueueId':_0x25b8e1[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](function(){return _0xecbeb4;});}})[_0x3c9c('0x27')](respondWithStatusCode(_0x1bfe77,null))[_0x3c9c('0x4c')](handleError(_0x1bfe77,null));};exports[_0x3c9c('0xbe')]=function(_0x218d51,_0x99501f,_0x2b49c0){var _0x2f52a8={};var _0x4ea6b9={};var _0x1fad28;var _0x3175c4;return db[_0x3c9c('0x49')][_0x3c9c('0x63')]({'where':{'id':_0x218d51[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x99501f,null))[_0x3c9c('0x27')](function(_0x161d53){if(_0x161d53){_0x1fad28=_0x161d53;_0x4ea6b9[_0x3c9c('0x3f')]=_[_0x3c9c('0x4f')](db[_0x3c9c('0x9c')][_0x3c9c('0x38')]);_0x4ea6b9[_0x3c9c('0x3a')]=_[_0x3c9c('0x4f')](_0x218d51[_0x3c9c('0x3a')]);_0x4ea6b9['filters']=_[_0x3c9c('0x3d')](_0x4ea6b9[_0x3c9c('0x3f')],_0x4ea6b9[_0x3c9c('0x3a')]);_0x2f52a8[_0x3c9c('0x3c')]=_[_0x3c9c('0x3d')](_0x4ea6b9[_0x3c9c('0x3f')],qs[_0x3c9c('0x3e')](_0x218d51[_0x3c9c('0x3a')][_0x3c9c('0x3e')]));_0x2f52a8[_0x3c9c('0x3c')]=_0x2f52a8[_0x3c9c('0x3c')][_0x3c9c('0x50')]?_0x2f52a8[_0x3c9c('0x3c')]:_0x4ea6b9[_0x3c9c('0x3f')];_0x2f52a8[_0x3c9c('0x42')]=qs[_0x3c9c('0x43')](_0x218d51['query'][_0x3c9c('0x43')]);_0x2f52a8[_0x3c9c('0x44')]=qs[_0x3c9c('0x3b')](_[_0x3c9c('0x45')](_0x218d51[_0x3c9c('0x3a')],_0x4ea6b9[_0x3c9c('0x3b')]));if(_0x218d51['query'][_0x3c9c('0x2b')]){_0x2f52a8[_0x3c9c('0x44')]=_[_0x3c9c('0x47')](_0x2f52a8[_0x3c9c('0x44')],{'$or':_['map'](_0x2f52a8[_0x3c9c('0x3c')],function(_0x589a5b){var _0x377010={};_0x377010[_0x589a5b]={'$like':'%'+_0x218d51[_0x3c9c('0x3a')][_0x3c9c('0x2b')]+'%'};return _0x377010;})});}_0x2f52a8=_['merge']({},_0x2f52a8,_0x218d51[_0x3c9c('0x48')]);return _0x1fad28['getBlackLists'](_0x2f52a8);}})['then'](function(_0x4e727d){if(_0x4e727d){_0x3175c4=_0x4e727d[_0x3c9c('0x50')];if(!_0x218d51[_0x3c9c('0x3a')][_0x3c9c('0x40')](_0x3c9c('0x41'))){_0x2f52a8[_0x3c9c('0x1f')]=qs['limit'](_0x218d51[_0x3c9c('0x3a')][_0x3c9c('0x1f')]);_0x2f52a8[_0x3c9c('0x1d')]=qs['offset'](_0x218d51[_0x3c9c('0x3a')]['offset']);}return _0x1fad28[_0x3c9c('0xbe')](_0x2f52a8);}})[_0x3c9c('0x27')](function(_0x585794){if(_0x585794){return _0x585794?{'count':_0x3175c4,'rows':_0x585794}:null;}})[_0x3c9c('0x27')](respondWithResult(_0x99501f,null))[_0x3c9c('0x4c')](handleError(_0x99501f,null));};exports[_0x3c9c('0xbf')]=function(_0x998d43,_0x62e103,_0x2de18b){var _0x10d2c2,_0x4e5c3c;return db[_0x3c9c('0x49')][_0x3c9c('0x30')]({'where':{'id':_0x998d43['params']['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0x62e103,null))[_0x3c9c('0x27')](function(_0x481933){if(_0x481933){_0x4e5c3c=_0x481933;return _0x481933['addBlackLists'](_0x998d43[_0x3c9c('0x60')][_0x3c9c('0x84')],_[_0x3c9c('0x5e')](_0x998d43[_0x3c9c('0x60')],['ids','id'])||{});}return null;})[_0x3c9c('0x97')](function(_0x1cf0e9){var _0x4da5a9;_0x10d2c2=_0x1cf0e9||[];var _0x52123d=[];if(_0x1cf0e9){for(var _0x295147=0x0;_0x295147<_0x1cf0e9[_0x3c9c('0x50')];_0x295147+=0x1){var _0x6ef991=_0x1cf0e9[_0x295147][_0x3c9c('0x29')]({'plain':!![]});_0x4da5a9=squel[_0x3c9c('0xa1')]()[_0x3c9c('0xa2')](_0x3c9c('0xc0'))[_0x3c9c('0xaf')]([_0x3c9c('0xa4'),'ContactId',_0x3c9c('0xa7'),_0x3c9c('0x65'),_0x3c9c('0x5f'),_0x3c9c('0x61')],squel['select']()['field'](_0x3c9c('0xa4'),_0x3c9c('0xa4'))[_0x3c9c('0x86')]('id',_0x3c9c('0xa6'))[_0x3c9c('0x86')](_0x6ef991[_0x3c9c('0xa8')][_0x3c9c('0x8f')](),_0x3c9c('0xa7'))[_0x3c9c('0x86')](_0x998d43[_0x3c9c('0x4e')]['id']['toString'](),_0x3c9c('0x65'))[_0x3c9c('0x86')](_0x3c9c('0xc1'),'createdAt')[_0x3c9c('0x86')](_0x3c9c('0xc1'),_0x3c9c('0x61'))[_0x3c9c('0x88')]('cm_contacts')[_0x3c9c('0x44')](_0x3c9c('0xb0'))['where'](_0x3c9c('0xb1'),_0x6ef991[_0x3c9c('0xa8')]['toString']())[_0x3c9c('0x44')](_0x3c9c('0xaa')))[_0x3c9c('0x8f')]();_0x52123d['push'](db['sequelize'][_0x3c9c('0x3a')](_0x4da5a9));}return BPromise[_0x3c9c('0x92')](_0x52123d);}})[_0x3c9c('0x27')](function(){return _0x10d2c2;})['then'](respondWithResult(_0x62e103,null))[_0x3c9c('0x4c')](handleError(_0x62e103,null));};exports[_0x3c9c('0xc2')]=function(_0x1fbed7,_0xea27c,_0x16066f){return db[_0x3c9c('0x49')]['find']({'where':{'id':_0x1fbed7[_0x3c9c('0x4e')]['id']}})[_0x3c9c('0x27')](handleEntityNotFound(_0xea27c,null))['then'](function(_0xe84648){if(_0xe84648){return _0xe84648['removeBlackLists'](_0x1fbed7['query'][_0x3c9c('0x84')]);}})[_0x3c9c('0x27')](function(_0xfc7a4c){if(_0xfc7a4c){return db[_0x3c9c('0x6b')][_0x3c9c('0x28')]({'where':{'ListId':_0x1fbed7[_0x3c9c('0x3a')][_0x3c9c('0x84')],'VoiceQueueId':_0x1fbed7[_0x3c9c('0x4e')]['id']}})['then'](function(){return _0xfc7a4c;});}})[_0x3c9c('0x27')](respondWithStatusCode(_0xea27c,null))[_0x3c9c('0x4c')](handleError(_0xea27c,null));};
\ No newline at end of file
index 9cb62ff..08d2543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x059c=['VoiceQueue','setMaxListeners','save','remove','emit','hasOwnProperty','../../mysqldb'];(function(_0x36f007,_0x557822){var _0x555d8e=function(_0x1e184f){while(--_0x1e184f){_0x36f007['push'](_0x36f007['shift']());}};_0x555d8e(++_0x557822);}(_0x059c,0x156));var _0xc059=function(_0x2971e6,_0x4a962e){_0x2971e6=_0x2971e6-0x0;var _0x5e6392=_0x059c[_0x2971e6];return _0x5e6392;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0xc059('0x0'))['db'][_0xc059('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xc059('0x2')](0x0);var events={'afterCreate':_0xc059('0x3'),'afterUpdate':'update','afterDestroy':_0xc059('0x4')};function emitEvent(_0x275467){return function(_0x4a7cf1,_0x46b1a7,_0x4ca0dd){VoiceQueueEvents[_0xc059('0x5')](_0x275467+':'+_0x4a7cf1['id'],_0x4a7cf1);VoiceQueueEvents[_0xc059('0x5')](_0x275467,_0x4a7cf1);_0x4ca0dd(null);};}for(var e in events){if(events[_0xc059('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0x8ca7=['VoiceQueue','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x8ca7,0x10c));var _0x78ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ca7[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x78ca('0x0'));var VoiceQueue=require(_0x78ca('0x1'))['db'][_0x78ca('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x78ca('0x3'),'afterUpdate':_0x78ca('0x4'),'afterDestroy':_0x78ca('0x5')};function emitEvent(_0x5af412){return function(_0x36eff8,_0x1749d0,_0x78ba66){VoiceQueueEvents['emit'](_0x5af412+':'+_0x36eff8['id'],_0x36eff8);VoiceQueueEvents[_0x78ca('0x6')](_0x5af412,_0x36eff8);_0x78ba66(null);};}for(var e in events){if(events[_0x78ca('0x7')](e)){var event=events[e];VoiceQueue[_0x78ca('0x8')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index 98b5e89..ff09d05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x320687,_0x14ecb9){var _0x3bdebc=function(_0x5b073a){while(--_0x5b073a){_0x320687['push'](_0x320687['shift']());}};_0x3bdebc(++_0x14ecb9);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'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
+var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x53361f,_0x3b2cb6){var _0x279237=function(_0x317757){while(--_0x317757){_0x53361f['push'](_0x53361f['shift']());}};_0x279237(++_0x3b2cb6);}(_0x008c,0x188));var _0xc008=function(_0x48cb1f,_0x5ca68d){_0x48cb1f=_0x48cb1f-0x0;var _0x172c4d=_0x008c[_0x48cb1f];return _0x172c4d;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2d41c3..b398d53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f4=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./voiceQueue.socket','register','request','then','VoiceQueue,\x20%s,\x20%s','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','limit','include','map','attributes','model','ShowVoiceQueue','find','lodash'];(function(_0x22cd9c,_0x536c21){var _0x6e17d3=function(_0x1d980e){while(--_0x1d980e){_0x22cd9c['push'](_0x22cd9c['shift']());}};_0x6e17d3(++_0x536c21);}(_0x35f4,0xdb));var _0x435f=function(_0x2351c4,_0x1dca54){_0x2351c4=_0x2351c4-0x0;var _0x1dd3f8=_0x35f4[_0x2351c4];return _0x1dd3f8;};'use strict';var _=require(_0x435f('0x0'));var util=require(_0x435f('0x1'));var moment=require(_0x435f('0x2'));var BPromise=require(_0x435f('0x3'));var rs=require(_0x435f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x435f('0x5'))['db'];var utils=require(_0x435f('0x6'));var logger=require(_0x435f('0x7'))(_0x435f('0x8'));var config=require(_0x435f('0x9'));var jayson=require(_0x435f('0xa'));var client=jayson[_0x435f('0xb')]['http']({'port':0x232a});config['redis']=_[_0x435f('0xc')](config['redis'],{'host':_0x435f('0xd'),'port':0x18eb});var socket=require(_0x435f('0xe'))(new Redis(config[_0x435f('0xf')]));require(_0x435f('0x10'))[_0x435f('0x11')](socket);function respondWithRpcPromise(_0x2735c8,_0x3c4a44,_0x4a9340){return new BPromise(function(_0x5eabb0,_0x1fb64e){return client[_0x435f('0x12')](_0x2735c8,_0x4a9340)[_0x435f('0x13')](function(_0x369367){logger['info'](_0x435f('0x14'),_0x3c4a44,'request\x20sent');logger[_0x435f('0x15')](_0x435f('0x16'),_0x3c4a44,_0x435f('0x17'),JSON[_0x435f('0x18')](_0x369367));if(_0x369367[_0x435f('0x19')]){if(_0x369367[_0x435f('0x19')][_0x435f('0x1a')]===0x1f4){logger[_0x435f('0x19')](_0x435f('0x14'),_0x3c4a44,_0x369367[_0x435f('0x19')]['message']);return _0x1fb64e(_0x369367[_0x435f('0x19')]['message']);}logger[_0x435f('0x19')](_0x435f('0x14'),_0x3c4a44,_0x369367[_0x435f('0x19')][_0x435f('0x1b')]);return _0x5eabb0(_0x369367['error'][_0x435f('0x1b')]);}else{logger[_0x435f('0x1c')](_0x435f('0x14'),_0x3c4a44,'request\x20sent');_0x5eabb0(_0x369367[_0x435f('0x1d')]['message']);}})[_0x435f('0x1e')](function(_0x55248d){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x3c4a44,_0x55248d);_0x1fb64e(_0x55248d);});});}exports[_0x435f('0x1f')]=function(_0x4c6088){var _0x5079d1=this;return new Promise(function(_0x20fd0a,_0x5dc4ad){return db[_0x435f('0x20')][_0x435f('0x21')]({'raw':_0x4c6088[_0x435f('0x22')]?_0x4c6088[_0x435f('0x22')][_0x435f('0x23')]===undefined?!![]:![]:!![],'where':_0x4c6088[_0x435f('0x22')]?_0x4c6088[_0x435f('0x22')][_0x435f('0x24')]||null:null,'attributes':_0x4c6088['options']?_0x4c6088[_0x435f('0x22')]['attributes']||null:null,'limit':_0x4c6088[_0x435f('0x22')]?_0x4c6088[_0x435f('0x22')][_0x435f('0x25')]||null:null,'include':_0x4c6088[_0x435f('0x22')]?_0x4c6088[_0x435f('0x22')][_0x435f('0x26')]?_[_0x435f('0x27')](_0x4c6088['options'][_0x435f('0x26')],function(_0x15209e){return{'model':db[_0x15209e['model']],'as':_0x15209e['as'],'attributes':_0x15209e[_0x435f('0x28')],'include':_0x15209e[_0x435f('0x26')]?_[_0x435f('0x27')](_0x15209e[_0x435f('0x26')],function(_0x4e56c6){return{'model':db[_0x4e56c6[_0x435f('0x29')]],'as':_0x4e56c6['as'],'attributes':_0x4e56c6[_0x435f('0x28')],'include':_0x4e56c6[_0x435f('0x26')]?_['map'](_0x4e56c6['include'],function(_0xb6e4be){return{'model':db[_0xb6e4be[_0x435f('0x29')]],'as':_0xb6e4be['as'],'attributes':_0xb6e4be[_0x435f('0x28')]};}):[]};}):[]};}):[]:[]})[_0x435f('0x13')](function(_0x5bf6f9){logger[_0x435f('0x1c')](_0x435f('0x1f'),_0x4c6088);logger['debug'](_0x435f('0x1f'),_0x4c6088,JSON[_0x435f('0x18')](_0x5bf6f9));_0x20fd0a(_0x5bf6f9);})[_0x435f('0x1e')](function(_0x1f6dc1){logger[_0x435f('0x19')](_0x435f('0x1f'),_0x1f6dc1[_0x435f('0x1b')],_0x4c6088);_0x5dc4ad(_0x5079d1[_0x435f('0x19')](0x1f4,_0x1f6dc1[_0x435f('0x1b')]));});});};exports[_0x435f('0x2a')]=function(_0x3fba8d){var _0x31ab1c=this;return new Promise(function(_0x3e462d,_0x34b905){return db[_0x435f('0x20')][_0x435f('0x2b')]({'raw':_0x3fba8d[_0x435f('0x22')]?_0x3fba8d[_0x435f('0x22')][_0x435f('0x23')]===undefined?!![]:![]:!![],'where':_0x3fba8d[_0x435f('0x22')]?_0x3fba8d[_0x435f('0x22')][_0x435f('0x24')]||null:null,'attributes':_0x3fba8d[_0x435f('0x22')]?_0x3fba8d[_0x435f('0x22')]['attributes']||null:null,'include':_0x3fba8d[_0x435f('0x22')]?_0x3fba8d[_0x435f('0x22')][_0x435f('0x26')]?_[_0x435f('0x27')](_0x3fba8d[_0x435f('0x22')][_0x435f('0x26')],function(_0x18a8a4){return{'model':db[_0x18a8a4[_0x435f('0x29')]],'as':_0x18a8a4['as'],'attributes':_0x18a8a4[_0x435f('0x28')],'include':_0x18a8a4[_0x435f('0x26')]?_[_0x435f('0x27')](_0x18a8a4[_0x435f('0x26')],function(_0x2b7a77){return{'model':db[_0x2b7a77[_0x435f('0x29')]],'as':_0x2b7a77['as'],'attributes':_0x2b7a77[_0x435f('0x28')],'include':_0x2b7a77[_0x435f('0x26')]?_[_0x435f('0x27')](_0x2b7a77[_0x435f('0x26')],function(_0x1fa068){return{'model':db[_0x1fa068[_0x435f('0x29')]],'as':_0x1fa068['as'],'attributes':_0x1fa068[_0x435f('0x28')]};}):[]};}):[]};}):[]:[]})[_0x435f('0x13')](function(_0x556a41){logger[_0x435f('0x1c')](_0x435f('0x2a'),_0x3fba8d);logger[_0x435f('0x15')](_0x435f('0x2a'),_0x3fba8d,JSON['stringify'](_0x556a41));_0x3e462d(_0x556a41);})[_0x435f('0x1e')](function(_0x153f33){logger[_0x435f('0x19')](_0x435f('0x2a'),_0x153f33[_0x435f('0x1b')],_0x3fba8d);_0x34b905(_0x31ab1c[_0x435f('0x19')](0x1f4,_0x153f33['message']));});});};
\ No newline at end of file
+var _0xf3b5=['redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','request','then','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','VoiceQueue,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueue','findAll','options','where','attributes','limit','map','include','model','stringify','VoiceQueue','find','ShowVoiceQueue','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x32bdc6,_0x2a4e13){var _0x10caea=function(_0x10b316){while(--_0x10b316){_0x32bdc6['push'](_0x32bdc6['shift']());}};_0x10caea(++_0x2a4e13);}(_0xf3b5,0x6e));var _0x5f3b=function(_0x443b38,_0x2e3af6){_0x443b38=_0x443b38-0x0;var _0x4c596b=_0xf3b5[_0x443b38];return _0x4c596b;};'use strict';var _=require(_0x5f3b('0x0'));var util=require('util');var moment=require(_0x5f3b('0x1'));var BPromise=require(_0x5f3b('0x2'));var rs=require(_0x5f3b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f3b('0x4'))['db'];var utils=require(_0x5f3b('0x5'));var logger=require(_0x5f3b('0x6'))(_0x5f3b('0x7'));var config=require(_0x5f3b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5f3b('0x9')]['http']({'port':0x232a});config[_0x5f3b('0xa')]=_[_0x5f3b('0xb')](config[_0x5f3b('0xa')],{'host':_0x5f3b('0xc'),'port':0x18eb});var socket=require(_0x5f3b('0xd'))(new Redis(config[_0x5f3b('0xa')]));require(_0x5f3b('0xe'))['register'](socket);function respondWithRpcPromise(_0x518fc2,_0x5673cd,_0x43cabe){return new BPromise(function(_0x55b64b,_0x78613b){return client[_0x5f3b('0xf')](_0x518fc2,_0x43cabe)[_0x5f3b('0x10')](function(_0x571d53){logger['info']('VoiceQueue,\x20%s,\x20%s',_0x5673cd,_0x5f3b('0x11'));logger[_0x5f3b('0x12')](_0x5f3b('0x13'),_0x5673cd,_0x5f3b('0x11'),JSON['stringify'](_0x571d53));if(_0x571d53['error']){if(_0x571d53[_0x5f3b('0x14')][_0x5f3b('0x15')]===0x1f4){logger[_0x5f3b('0x14')](_0x5f3b('0x16'),_0x5673cd,_0x571d53[_0x5f3b('0x14')]['message']);return _0x78613b(_0x571d53[_0x5f3b('0x14')][_0x5f3b('0x17')]);}logger[_0x5f3b('0x14')](_0x5f3b('0x16'),_0x5673cd,_0x571d53[_0x5f3b('0x14')][_0x5f3b('0x17')]);return _0x55b64b(_0x571d53['error'][_0x5f3b('0x17')]);}else{logger[_0x5f3b('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x5673cd,_0x5f3b('0x11'));_0x55b64b(_0x571d53[_0x5f3b('0x19')]['message']);}})[_0x5f3b('0x1a')](function(_0x200fca){logger[_0x5f3b('0x14')](_0x5f3b('0x16'),_0x5673cd,_0x200fca);_0x78613b(_0x200fca);});});}exports[_0x5f3b('0x1b')]=function(_0x47c21c){var _0x3cacf3=this;return new Promise(function(_0xcc1ee5,_0xe2e74a){return db['VoiceQueue'][_0x5f3b('0x1c')]({'raw':_0x47c21c[_0x5f3b('0x1d')]?_0x47c21c[_0x5f3b('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x47c21c[_0x5f3b('0x1d')]?_0x47c21c[_0x5f3b('0x1d')][_0x5f3b('0x1e')]||null:null,'attributes':_0x47c21c[_0x5f3b('0x1d')]?_0x47c21c[_0x5f3b('0x1d')][_0x5f3b('0x1f')]||null:null,'limit':_0x47c21c['options']?_0x47c21c[_0x5f3b('0x1d')][_0x5f3b('0x20')]||null:null,'include':_0x47c21c[_0x5f3b('0x1d')]?_0x47c21c[_0x5f3b('0x1d')]['include']?_[_0x5f3b('0x21')](_0x47c21c[_0x5f3b('0x1d')]['include'],function(_0x3e227f){return{'model':db[_0x3e227f['model']],'as':_0x3e227f['as'],'attributes':_0x3e227f[_0x5f3b('0x1f')],'include':_0x3e227f[_0x5f3b('0x22')]?_['map'](_0x3e227f['include'],function(_0x43d4b7){return{'model':db[_0x43d4b7['model']],'as':_0x43d4b7['as'],'attributes':_0x43d4b7[_0x5f3b('0x1f')],'include':_0x43d4b7[_0x5f3b('0x22')]?_[_0x5f3b('0x21')](_0x43d4b7[_0x5f3b('0x22')],function(_0x49f4e5){return{'model':db[_0x49f4e5[_0x5f3b('0x23')]],'as':_0x49f4e5['as'],'attributes':_0x49f4e5[_0x5f3b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5f3b('0x10')](function(_0x3ac63f){logger[_0x5f3b('0x18')](_0x5f3b('0x1b'),_0x47c21c);logger[_0x5f3b('0x12')](_0x5f3b('0x1b'),_0x47c21c,JSON[_0x5f3b('0x24')](_0x3ac63f));_0xcc1ee5(_0x3ac63f);})[_0x5f3b('0x1a')](function(_0x579351){logger[_0x5f3b('0x14')](_0x5f3b('0x1b'),_0x579351[_0x5f3b('0x17')],_0x47c21c);_0xe2e74a(_0x3cacf3[_0x5f3b('0x14')](0x1f4,_0x579351[_0x5f3b('0x17')]));});});};exports['ShowVoiceQueue']=function(_0x4d77c0){var _0x1511b8=this;return new Promise(function(_0x14edfc,_0x5d97d5){return db[_0x5f3b('0x25')][_0x5f3b('0x26')]({'raw':_0x4d77c0['options']?_0x4d77c0[_0x5f3b('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x4d77c0[_0x5f3b('0x1d')]?_0x4d77c0[_0x5f3b('0x1d')][_0x5f3b('0x1e')]||null:null,'attributes':_0x4d77c0[_0x5f3b('0x1d')]?_0x4d77c0[_0x5f3b('0x1d')][_0x5f3b('0x1f')]||null:null,'include':_0x4d77c0['options']?_0x4d77c0[_0x5f3b('0x1d')]['include']?_['map'](_0x4d77c0[_0x5f3b('0x1d')][_0x5f3b('0x22')],function(_0x1ca2bc){return{'model':db[_0x1ca2bc['model']],'as':_0x1ca2bc['as'],'attributes':_0x1ca2bc[_0x5f3b('0x1f')],'include':_0x1ca2bc['include']?_[_0x5f3b('0x21')](_0x1ca2bc[_0x5f3b('0x22')],function(_0x2c3173){return{'model':db[_0x2c3173['model']],'as':_0x2c3173['as'],'attributes':_0x2c3173[_0x5f3b('0x1f')],'include':_0x2c3173['include']?_[_0x5f3b('0x21')](_0x2c3173[_0x5f3b('0x22')],function(_0x5df847){return{'model':db[_0x5df847[_0x5f3b('0x23')]],'as':_0x5df847['as'],'attributes':_0x5df847['attributes']};}):[]};}):[]};}):[]:[]})[_0x5f3b('0x10')](function(_0xac4dca){logger[_0x5f3b('0x18')](_0x5f3b('0x27'),_0x4d77c0);logger[_0x5f3b('0x12')](_0x5f3b('0x27'),_0x4d77c0,JSON['stringify'](_0xac4dca));_0x14edfc(_0xac4dca);})['catch'](function(_0x4a3218){logger[_0x5f3b('0x14')](_0x5f3b('0x27'),_0x4a3218[_0x5f3b('0x17')],_0x4d77c0);_0x5d97d5(_0x1511b8[_0x5f3b('0x14')](0x1f4,_0x4a3218[_0x5f3b('0x17')]));});});};
\ No newline at end of file
index d653f3e..fea423b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d31=['register','./voiceQueue.events','save','remove','update','emit','removeListener'];(function(_0x570a0c,_0x1b77cc){var _0x4d3c4e=function(_0x256980){while(--_0x256980){_0x570a0c['push'](_0x570a0c['shift']());}};_0x4d3c4e(++_0x1b77cc);}(_0x4d31,0x13c));var _0x14d3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4d31[_0x321bb2];return _0x9c12ed;};'use strict';var VoiceQueueEvents=require(_0x14d3('0x0'));var events=[_0x14d3('0x1'),_0x14d3('0x2'),_0x14d3('0x3')];function createListener(_0xfca718,_0x3dca1c){return function(_0x2060e8){_0x3dca1c[_0x14d3('0x4')](_0xfca718,_0x2060e8);};}function removeListener(_0x3d579e,_0x21c081){return function(){VoiceQueueEvents[_0x14d3('0x5')](_0x3d579e,_0x21c081);};}exports[_0x14d3('0x6')]=function(_0x37b611){for(var _0xe96991=0x0,_0x252c0a=events['length'];_0xe96991<_0x252c0a;_0xe96991++){var _0x470cb6=events[_0xe96991];var _0x2cd649=createListener('voiceQueue:'+_0x470cb6,_0x37b611);VoiceQueueEvents['on'](_0x470cb6,_0x2cd649);}};
\ No newline at end of file
+var _0xc86b=['register','voiceQueue:','./voiceQueue.events','remove','emit'];(function(_0x54c69b,_0x2c7fc0){var _0x4f6475=function(_0x31a710){while(--_0x31a710){_0x54c69b['push'](_0x54c69b['shift']());}};_0x4f6475(++_0x2c7fc0);}(_0xc86b,0x11f));var _0xbc86=function(_0x25f850,_0x527cbc){_0x25f850=_0x25f850-0x0;var _0x386a65=_0xc86b[_0x25f850];return _0x386a65;};'use strict';var VoiceQueueEvents=require(_0xbc86('0x0'));var events=['save',_0xbc86('0x1'),'update'];function createListener(_0x5ba43a,_0x374337){return function(_0x6e80b9){_0x374337[_0xbc86('0x2')](_0x5ba43a,_0x6e80b9);};}function removeListener(_0x4de755,_0x5d8239){return function(){VoiceQueueEvents['removeListener'](_0x4de755,_0x5d8239);};}exports[_0xbc86('0x3')]=function(_0x147e98){for(var _0x1ae248=0x0,_0x1a79e8=events['length'];_0x1ae248<_0x1a79e8;_0x1ae248++){var _0x3018dc=events[_0x1ae248];var _0x598135=createListener(_0xbc86('0x4')+_0x3018dc,_0x147e98);VoiceQueueEvents['on'](_0x3018dc,_0x598135);}};
\ No newline at end of file
index 53b37cf..4a88dab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aaf=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','show','post','create','put','/:id','update','delete','destroy','util','path','connect-timeout','Router'];(function(_0x2529bf,_0x43d865){var _0x45443e=function(_0x4cdaa2){while(--_0x4cdaa2){_0x2529bf['push'](_0x2529bf['shift']());}};_0x45443e(++_0x43d865);}(_0x1aaf,0xf9));var _0xf1aa=function(_0x578705,_0x2c46d2){_0x578705=_0x578705-0x0;var _0x5200c0=_0x1aaf[_0x578705];return _0x5200c0;};'use strict';var multer=require('multer');var util=require(_0xf1aa('0x0'));var path=require(_0xf1aa('0x1'));var timeout=require(_0xf1aa('0x2'));var express=require('express');var router=express[_0xf1aa('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf1aa('0x4'));var interaction=require(_0xf1aa('0x5'));var config=require(_0xf1aa('0x6'));var controller=require(_0xf1aa('0x7'));router[_0xf1aa('0x8')]('/',auth[_0xf1aa('0x9')](),controller[_0xf1aa('0xa')]);router[_0xf1aa('0x8')](_0xf1aa('0xb'),auth['isAuthenticated'](),controller[_0xf1aa('0xc')]);router[_0xf1aa('0x8')](_0xf1aa('0xd'),auth['isAuthenticated'](),controller[_0xf1aa('0xe')]);router[_0xf1aa('0x8')]('/:id',auth[_0xf1aa('0x9')](),controller[_0xf1aa('0xf')]);router[_0xf1aa('0x10')]('/',auth[_0xf1aa('0x9')](),controller[_0xf1aa('0x11')]);router[_0xf1aa('0x12')](_0xf1aa('0x13'),auth[_0xf1aa('0x9')](),controller[_0xf1aa('0x14')]);router[_0xf1aa('0x15')](_0xf1aa('0x13'),auth['isAuthenticated'](),controller[_0xf1aa('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xac67=['update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','getVoiceQueuesReport','/:id','post','create','put'];(function(_0x519978,_0x1b63cd){var _0x54a90c=function(_0x516f79){while(--_0x516f79){_0x519978['push'](_0x519978['shift']());}};_0x54a90c(++_0x1b63cd);}(_0xac67,0xff));var _0x7ac6=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xac67[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0x7ac6('0x0'));var util=require('util');var path=require(_0x7ac6('0x1'));var timeout=require(_0x7ac6('0x2'));var express=require(_0x7ac6('0x3'));var router=express[_0x7ac6('0x4')]();var fs_extra=require(_0x7ac6('0x5'));var auth=require(_0x7ac6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7ac6('0x7'));var controller=require('./voiceQueueReport.controller');router[_0x7ac6('0x8')]('/',auth[_0x7ac6('0x9')](),controller[_0x7ac6('0xa')]);router[_0x7ac6('0x8')](_0x7ac6('0xb'),auth[_0x7ac6('0x9')](),controller[_0x7ac6('0xc')]);router[_0x7ac6('0x8')]('/index',auth[_0x7ac6('0x9')](),controller[_0x7ac6('0xd')]);router[_0x7ac6('0x8')](_0x7ac6('0xe'),auth[_0x7ac6('0x9')](),controller['show']);router[_0x7ac6('0xf')]('/',auth[_0x7ac6('0x9')](),controller[_0x7ac6('0x10')]);router[_0x7ac6('0x11')]('/:id',auth[_0x7ac6('0x9')](),controller[_0x7ac6('0x12')]);router[_0x7ac6('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7ac6('0x14')]);module['exports']=router;
\ No newline at end of file
index 96e30c3..3d8e0b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6749=['FORWARD,\x20BLIND,\x20ATTENDED','moment','STRING','DATE','getDataValue','format','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0x6749,0x1c8));var _0x9674=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6749[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9674('0x0'));module['exports']={'type':{'type':Sequelize[_0x9674('0x1')]},'uniqueid':{'type':Sequelize[_0x9674('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x9674('0x1')]},'queuecallerjoinAt':{'type':Sequelize[_0x9674('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0x9674('0x2')],'set':function(_0x391cc1){var _0x70a985=moment(_0x391cc1);var _0x4f919a=moment(this[_0x9674('0x3')]('queuecallerjoinAt'))[_0x9674('0x4')]('YYYY-MM-DD\x20HH:mm:ss');var _0x30198f=_0x70a985['diff'](_0x4f919a,_0x9674('0x5'));this[_0x9674('0x6')](_0x9674('0x7'),_0x391cc1);this[_0x9674('0x6')](_0x9674('0x8'),_0x30198f||null);}},'position':{'type':Sequelize[_0x9674('0x9')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x9674('0x2')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x9674('0x2')]},'queuecallerexit':{'type':Sequelize[_0x9674('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x9674('0x2')]},'queuecallerexitreason':{'type':Sequelize[_0x9674('0x1')],'comment':_0x9674('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x9674('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9674('0x1')]},'connectedlinename':{'type':Sequelize[_0x9674('0x1')]},'accountcode':{'type':Sequelize[_0x9674('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x9674('0x1')]},'priority':{'type':Sequelize[_0x9674('0x1')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x9674('0x9')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9674('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x9674('0x1')]},'transfer':{'type':Sequelize[_0x9674('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x9674('0xc')},'transferexten':{'type':Sequelize[_0x9674('0x1')]},'transferuniqueid':{'type':Sequelize[_0x9674('0x1')]},'disposition':{'type':Sequelize[_0x9674('0x1')]},'secondDisposition':{'type':Sequelize[_0x9674('0x1')]},'thirdDisposition':{'type':Sequelize[_0x9674('0x1')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize[_0x9674('0x1')]}};
\ No newline at end of file
+var _0xcac4=['sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN'];(function(_0x4d82a2,_0x38d72e){var _0x505f75=function(_0x4f9640){while(--_0x4f9640){_0x4d82a2['push'](_0x4d82a2['shift']());}};_0x505f75(++_0x38d72e);}(_0xcac4,0xff));var _0x4cac=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xcac4[_0x110c3d];return _0x226d67;};'use strict';var Sequelize=require(_0x4cac('0x0'));var moment=require(_0x4cac('0x1'));module[_0x4cac('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4cac('0x3')]},'calleridname':{'type':Sequelize[_0x4cac('0x3')]},'queue':{'type':Sequelize[_0x4cac('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x4cac('0x4')],'set':function(_0x3ab055){var _0x5a5bc3=moment(_0x3ab055);var _0x35d767=moment(this[_0x4cac('0x5')](_0x4cac('0x6')))[_0x4cac('0x7')](_0x4cac('0x8'));var _0x1fab65=_0x5a5bc3[_0x4cac('0x9')](_0x35d767,_0x4cac('0xa'));this[_0x4cac('0xb')]('queuecallerleaveAt',_0x3ab055);this[_0x4cac('0xb')](_0x4cac('0xc'),_0x1fab65||null);}},'position':{'type':Sequelize[_0x4cac('0xd')]},'count':{'type':Sequelize[_0x4cac('0xd')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x4cac('0x4')]},'queuecallerexit':{'type':Sequelize[_0x4cac('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x4cac('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x4cac('0x3')]},'connectedlinename':{'type':Sequelize[_0x4cac('0x3')]},'accountcode':{'type':Sequelize[_0x4cac('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x4cac('0x3')]},'holdtime':{'type':Sequelize[_0x4cac('0xd')]},'mohtime':{'type':Sequelize[_0x4cac('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4cac('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x4cac('0x3')]},'transfer':{'type':Sequelize[_0x4cac('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x4cac('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x4cac('0x3')]},'disposition':{'type':Sequelize[_0x4cac('0x3')]},'secondDisposition':{'type':Sequelize[_0x4cac('0x3')]},'thirdDisposition':{'type':Sequelize[_0x4cac('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x4cac('0xd')],'defaultValue':0x0},'note':{'type':Sequelize[_0x4cac('0x3')]}};
\ No newline at end of file
index 21855a4..e8a3ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51aa=['../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','getVoiceQueuesReport','order','rimraf','zip-dir','bluebird','util','sox','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x5793dc,_0x460604){var _0x449d6a=function(_0x44029d){while(--_0x44029d){_0x5793dc['push'](_0x5793dc['shift']());}};_0x449d6a(++_0x460604);}(_0x51aa,0x12d));var _0xa51a=function(_0x404b66,_0x3a3f21){_0x404b66=_0x404b66-0x0;var _0x3ccc05=_0x51aa[_0x404b66];return _0x3ccc05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa51a('0x0'));var zipdir=require(_0xa51a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa51a('0x2'));var Mustache=require('mustache');var util=require(_0xa51a('0x3'));var path=require('path');var sox=require(_0xa51a('0x4'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa51a('0x5'));var crypto=require(_0xa51a('0x6'));var jsforce=require(_0xa51a('0x7'));var deskjs=require(_0xa51a('0x8'));var toCsv=require(_0xa51a('0x9'));var querystring=require(_0xa51a('0xa'));var Papa=require(_0xa51a('0xb'));var Redis=require(_0xa51a('0xc'));var authService=require(_0xa51a('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xa51a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa51a('0xf'))(_0xa51a('0x10'));var utils=require(_0xa51a('0x11'));var config=require(_0xa51a('0x12'));var licenseUtil=require(_0xa51a('0x13'));var db=require(_0xa51a('0x14'))['db'];config[_0xa51a('0x15')]=_[_0xa51a('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xa51a('0x17'))(new Redis(config[_0xa51a('0x15')]));require('./voiceQueueReport.socket')[_0xa51a('0x18')](socket);function respondWithStatusCode(_0x40ae3d,_0x4dab72){_0x4dab72=_0x4dab72||0xcc;return function(_0x4b1c20){if(_0x4b1c20){return _0x40ae3d[_0xa51a('0x19')](_0x4dab72);}return _0x40ae3d[_0xa51a('0x1a')](_0x4dab72)[_0xa51a('0x1b')]();};}function respondWithResult(_0x190368,_0x728115){_0x728115=_0x728115||0xc8;return function(_0x53da10){if(_0x53da10){return _0x190368['status'](_0x728115)[_0xa51a('0x1c')](_0x53da10);}};}function respondWithFilteredResult(_0x2f8b7b,_0x556f29){return function(_0x3f3b5c){if(_0x3f3b5c){var _0x4dac78=typeof _0x556f29[_0xa51a('0x1d')]===_0xa51a('0x1e')&&typeof _0x556f29[_0xa51a('0x1f')]==='undefined';var _0x145577=_0x3f3b5c[_0xa51a('0x20')];var _0x15fc4b=_0x4dac78?0x0:_0x556f29[_0xa51a('0x1d')];var _0x231183=_0x4dac78?_0x3f3b5c['count']:_0x556f29[_0xa51a('0x1d')]+_0x556f29[_0xa51a('0x1f')];var _0x946915;if(_0x231183>=_0x145577){_0x231183=_0x145577;_0x946915=0xc8;}else{_0x946915=0xce;}_0x2f8b7b['status'](_0x946915);return _0x2f8b7b['set'](_0xa51a('0x21'),_0x15fc4b+'-'+_0x231183+'/'+_0x145577)[_0xa51a('0x1c')](_0x3f3b5c);}return null;};}function patchUpdates(_0x1f8c5b){return function(_0x21ccaa){try{jsonpatch[_0xa51a('0x22')](_0x21ccaa,_0x1f8c5b,!![]);}catch(_0x3e91b9){return BPromise[_0xa51a('0x23')](_0x3e91b9);}return _0x21ccaa[_0xa51a('0x24')]();};}function saveUpdates(_0x2e7c83,_0x31781e){return function(_0x557099){if(_0x557099){return _0x557099[_0xa51a('0x25')](_0x2e7c83)['then'](function(_0x572648){return _0x572648;});}return null;};}function removeEntity(_0x4ed58c,_0x46a0df){return function(_0x45bfab){if(_0x45bfab){return _0x45bfab[_0xa51a('0x26')]()[_0xa51a('0x27')](function(){_0x4ed58c[_0xa51a('0x1a')](0xcc)[_0xa51a('0x1b')]();});}};}function handleEntityNotFound(_0x57b19b,_0x2f19de){return function(_0x37d261){if(!_0x37d261){_0x57b19b['sendStatus'](0x194);}return _0x37d261;};}function handleError(_0x5b0638,_0x3d8394){_0x3d8394=_0x3d8394||0x1f4;return function(_0x43a2a4){logger[_0xa51a('0x28')](_0x43a2a4[_0xa51a('0x29')]);if(_0x43a2a4[_0xa51a('0x2a')]){delete _0x43a2a4[_0xa51a('0x2a')];}_0x5b0638['status'](_0x3d8394)[_0xa51a('0x2b')](_0x43a2a4);};}exports[_0xa51a('0x2c')]=function(_0x5134bb,_0x1cfef1){var _0x429028={},_0x46932a={},_0x5d29da={'count':0x0,'rows':[]};var _0x56a0ab=_[_0xa51a('0x2d')](db[_0xa51a('0x2e')][_0xa51a('0x2f')],function(_0x41913d){return{'name':_0x41913d[_0xa51a('0x30')],'type':_0x41913d[_0xa51a('0x31')]['key']};});_0x46932a[_0xa51a('0x32')]=_[_0xa51a('0x2d')](_0x56a0ab,'name');_0x46932a['query']=_[_0xa51a('0x33')](_0x5134bb['query']);_0x46932a[_0xa51a('0x34')]=_[_0xa51a('0x35')](_0x46932a[_0xa51a('0x32')],_0x46932a[_0xa51a('0x36')]);_0x429028[_0xa51a('0x37')]=_[_0xa51a('0x35')](_0x46932a['model'],qs[_0xa51a('0x38')](_0x5134bb[_0xa51a('0x36')][_0xa51a('0x38')]));_0x429028[_0xa51a('0x37')]=_0x429028[_0xa51a('0x37')][_0xa51a('0x39')]?_0x429028[_0xa51a('0x37')]:_0x46932a[_0xa51a('0x32')];if(!_0x5134bb['query'][_0xa51a('0x3a')](_0xa51a('0x3b'))){_0x429028[_0xa51a('0x1f')]=qs[_0xa51a('0x1f')](_0x5134bb[_0xa51a('0x36')][_0xa51a('0x1f')]);_0x429028['offset']=qs['offset'](_0x5134bb[_0xa51a('0x36')][_0xa51a('0x1d')]);}_0x429028['order']=qs[_0xa51a('0x3c')](_0x5134bb[_0xa51a('0x36')][_0xa51a('0x3c')]);_0x429028[_0xa51a('0x3d')]=qs[_0xa51a('0x34')](_[_0xa51a('0x3e')](_0x5134bb[_0xa51a('0x36')],_0x46932a[_0xa51a('0x34')]),_0x56a0ab);if(_0x5134bb[_0xa51a('0x36')][_0xa51a('0x3f')]){_0x429028[_0xa51a('0x3d')]=_['merge'](_0x429028[_0xa51a('0x3d')],{'$or':_[_0xa51a('0x2d')](_0x56a0ab,function(_0x2676dc){if(_0x2676dc['type']!==_0xa51a('0x40')){var _0x3400ef={};_0x3400ef[_0x2676dc[_0xa51a('0x2a')]]={'$like':'%'+_0x5134bb[_0xa51a('0x36')][_0xa51a('0x3f')]+'%'};return _0x3400ef;}})});}_0x429028=_[_0xa51a('0x41')]({},_0x429028,_0x5134bb['options']);var _0x2fb204={'where':_0x429028[_0xa51a('0x3d')]};return db['VoiceQueueReport'][_0xa51a('0x20')](_0x2fb204)['then'](function(_0x2b45fd){_0x5d29da[_0xa51a('0x20')]=_0x2b45fd;if(_0x5134bb['query'][_0xa51a('0x42')]){_0x429028[_0xa51a('0x43')]=[{'all':!![]}];}return db[_0xa51a('0x2e')][_0xa51a('0x44')](_0x429028);})[_0xa51a('0x27')](function(_0x171493){_0x5d29da[_0xa51a('0x45')]=_0x171493;return _0x5d29da;})[_0xa51a('0x27')](respondWithFilteredResult(_0x1cfef1,_0x429028))[_0xa51a('0x46')](handleError(_0x1cfef1,null));};exports[_0xa51a('0x47')]=function(_0x545fa8,_0x578747){var _0x58f1ed={'raw':![],'where':{'id':_0x545fa8[_0xa51a('0x48')]['id']}},_0xc4a5f={};_0xc4a5f[_0xa51a('0x32')]=_['keys'](db['VoiceQueueReport'][_0xa51a('0x2f')]);_0xc4a5f[_0xa51a('0x36')]=_['keys'](_0x545fa8[_0xa51a('0x36')]);_0xc4a5f[_0xa51a('0x34')]=_[_0xa51a('0x35')](_0xc4a5f[_0xa51a('0x32')],_0xc4a5f[_0xa51a('0x36')]);_0x58f1ed[_0xa51a('0x37')]=_['intersection'](_0xc4a5f[_0xa51a('0x32')],qs['fields'](_0x545fa8[_0xa51a('0x36')][_0xa51a('0x38')]));_0x58f1ed['attributes']=_0x58f1ed[_0xa51a('0x37')][_0xa51a('0x39')]?_0x58f1ed['attributes']:_0xc4a5f[_0xa51a('0x32')];if(_0x545fa8[_0xa51a('0x36')][_0xa51a('0x42')]){_0x58f1ed[_0xa51a('0x43')]=[{'all':!![]}];}_0x58f1ed=_['merge']({},_0x58f1ed,_0x545fa8[_0xa51a('0x49')]);return db[_0xa51a('0x2e')][_0xa51a('0x4a')](_0x58f1ed)[_0xa51a('0x27')](handleEntityNotFound(_0x578747,null))[_0xa51a('0x27')](respondWithResult(_0x578747,null))[_0xa51a('0x46')](handleError(_0x578747,null));};exports[_0xa51a('0x4b')]=function(_0x1d19a9,_0x79beb4){return db[_0xa51a('0x2e')]['create'](_0x1d19a9['body'],{})[_0xa51a('0x27')](respondWithResult(_0x79beb4,0xc9))[_0xa51a('0x46')](handleError(_0x79beb4,null));};exports[_0xa51a('0x25')]=function(_0x398576,_0x30321d){if(_0x398576[_0xa51a('0x4c')]['id']){delete _0x398576[_0xa51a('0x4c')]['id'];}return db[_0xa51a('0x2e')]['find']({'where':{'id':_0x398576[_0xa51a('0x48')]['id']}})[_0xa51a('0x27')](handleEntityNotFound(_0x30321d,null))[_0xa51a('0x27')](saveUpdates(_0x398576['body'],null))['then'](respondWithResult(_0x30321d,null))[_0xa51a('0x46')](handleError(_0x30321d,null));};exports[_0xa51a('0x26')]=function(_0x1e4f44,_0x3f8fe8){return db['VoiceQueueReport']['find']({'where':{'id':_0x1e4f44['params']['id']}})['then'](handleEntityNotFound(_0x3f8fe8,null))[_0xa51a('0x27')](removeEntity(_0x3f8fe8,null))['catch'](handleError(_0x3f8fe8,null));};exports[_0xa51a('0x4d')]=function(_0x5ec721,_0x19d041){return db[_0xa51a('0x2e')][_0xa51a('0x4d')]()['then'](respondWithResult(_0x19d041,null))['catch'](handleError(_0x19d041,null));};exports[_0xa51a('0x4e')]=function(_0x33a74b,_0x10fbf3){var _0x7e8996={},_0x57a430={},_0x38fcbd={'count':0x0,'rows':[]};_0x57a430[_0xa51a('0x32')]=_[_0xa51a('0x33')](db['VoiceQueueReport'][_0xa51a('0x2f')]);_0x57a430[_0xa51a('0x36')]=_[_0xa51a('0x33')](_0x33a74b[_0xa51a('0x36')]);_0x57a430[_0xa51a('0x34')]=_['intersection'](_0x57a430[_0xa51a('0x32')],_0x57a430[_0xa51a('0x36')]);_0x7e8996[_0xa51a('0x37')]=_[_0xa51a('0x35')](_0x57a430[_0xa51a('0x32')],qs[_0xa51a('0x38')](_0x33a74b[_0xa51a('0x36')][_0xa51a('0x38')]));_0x7e8996[_0xa51a('0x37')]=_0x7e8996[_0xa51a('0x37')][_0xa51a('0x39')]?_0x7e8996[_0xa51a('0x37')]:_0x57a430[_0xa51a('0x32')];if(!_0x33a74b['query'][_0xa51a('0x3a')](_0xa51a('0x3b'))){_0x7e8996[_0xa51a('0x1f')]=qs[_0xa51a('0x1f')](_0x33a74b[_0xa51a('0x36')]['limit']);_0x7e8996[_0xa51a('0x1d')]=qs[_0xa51a('0x1d')](_0x33a74b[_0xa51a('0x36')][_0xa51a('0x1d')]);}_0x7e8996[_0xa51a('0x4f')]=qs[_0xa51a('0x3c')](_0x33a74b[_0xa51a('0x36')][_0xa51a('0x3c')]);_0x7e8996[_0xa51a('0x3d')]=qs[_0xa51a('0x34')](_[_0xa51a('0x3e')](_0x33a74b['query'],_0x57a430['filters']));if(_0x33a74b[_0xa51a('0x36')][_0xa51a('0x3f')]){_0x7e8996[_0xa51a('0x3d')]=_[_0xa51a('0x41')](_0x7e8996[_0xa51a('0x3d')],{'$or':_[_0xa51a('0x2d')](_0x7e8996[_0xa51a('0x37')],function(_0x42a688){var _0x2b3dff={};_0x2b3dff[_0x42a688]={'$like':'%'+_0x33a74b[_0xa51a('0x36')][_0xa51a('0x3f')]+'%'};return _0x2b3dff;})});}_0x7e8996=_[_0xa51a('0x41')]({},_0x7e8996,_0x33a74b['options']);var _0x4468d6={'where':_0x7e8996[_0xa51a('0x3d')]};return db['VoiceQueueReport'][_0xa51a('0x20')](_0x4468d6)[_0xa51a('0x27')](function(_0x5a211d){_0x38fcbd['count']=_0x5a211d;if(_0x33a74b[_0xa51a('0x36')]['includeAll']){_0x7e8996[_0xa51a('0x43')]=[{'all':!![]}];}return db[_0xa51a('0x2e')][_0xa51a('0x44')](_0x7e8996);})[_0xa51a('0x27')](function(_0x15affd){_0x38fcbd[_0xa51a('0x45')]=_0x15affd;return _0x38fcbd;})[_0xa51a('0x27')](respondWithFilteredResult(_0x10fbf3,_0x7e8996,'getVoiceQueuesReport'))['catch'](handleError(_0x10fbf3,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xf248=['redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','name','send','index','map','VoiceQueueReport','rawAttributes','type','keys','filters','intersection','query','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','catch','find','create','body','params','destroy','describe','nolimit','merge','rows','getVoiceQueuesReport','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','lodash','squel','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','../../mysqldb'];(function(_0x5693b6,_0x1fca92){var _0x1e1310=function(_0x5d20be){while(--_0x5d20be){_0x5693b6['push'](_0x5693b6['shift']());}};_0x1e1310(++_0x1fca92);}(_0xf248,0x177));var _0x8f24=function(_0x235e30,_0x2b7ac3){_0x235e30=_0x235e30-0x0;var _0x18a903=_0xf248[_0x235e30];return _0x18a903;};'use strict';var emlformat=require(_0x8f24('0x0'));var rimraf=require(_0x8f24('0x1'));var zipdir=require(_0x8f24('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f24('0x3'));var moment=require(_0x8f24('0x4'));var BPromise=require(_0x8f24('0x5'));var Mustache=require(_0x8f24('0x6'));var util=require('util');var path=require(_0x8f24('0x7'));var sox=require('sox');var csv=require(_0x8f24('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8f24('0x9'));var squel=require(_0x8f24('0xa'));var crypto=require(_0x8f24('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8f24('0xc'));var toCsv=require(_0x8f24('0x8'));var querystring=require('querystring');var Papa=require(_0x8f24('0xd'));var Redis=require(_0x8f24('0xe'));var authService=require(_0x8f24('0xf'));var qs=require(_0x8f24('0x10'));var as=require(_0x8f24('0x11'));var hardwareService=require(_0x8f24('0x12'));var logger=require(_0x8f24('0x13'))(_0x8f24('0x14'));var utils=require(_0x8f24('0x15'));var config=require(_0x8f24('0x16'));var licenseUtil=require(_0x8f24('0x17'));var db=require(_0x8f24('0x18'))['db'];config[_0x8f24('0x19')]=_[_0x8f24('0x1a')](config[_0x8f24('0x19')],{'host':_0x8f24('0x1b'),'port':0x18eb});var socket=require(_0x8f24('0x1c'))(new Redis(config[_0x8f24('0x19')]));require(_0x8f24('0x1d'))['register'](socket);function respondWithStatusCode(_0x1a7c94,_0x208769){_0x208769=_0x208769||0xcc;return function(_0x3d382a){if(_0x3d382a){return _0x1a7c94[_0x8f24('0x1e')](_0x208769);}return _0x1a7c94[_0x8f24('0x1f')](_0x208769)[_0x8f24('0x20')]();};}function respondWithResult(_0x2339fc,_0x2e1ce7){_0x2e1ce7=_0x2e1ce7||0xc8;return function(_0x225add){if(_0x225add){return _0x2339fc[_0x8f24('0x1f')](_0x2e1ce7)['json'](_0x225add);}};}function respondWithFilteredResult(_0x1897b1,_0x4a3221){return function(_0x33e009){if(_0x33e009){var _0x242630=typeof _0x4a3221[_0x8f24('0x21')]==='undefined'&&typeof _0x4a3221[_0x8f24('0x22')]===_0x8f24('0x23');var _0x4ac793=_0x33e009[_0x8f24('0x24')];var _0x5b5610=_0x242630?0x0:_0x4a3221[_0x8f24('0x21')];var _0x51c7d6=_0x242630?_0x33e009[_0x8f24('0x24')]:_0x4a3221[_0x8f24('0x21')]+_0x4a3221[_0x8f24('0x22')];var _0x274aca;if(_0x51c7d6>=_0x4ac793){_0x51c7d6=_0x4ac793;_0x274aca=0xc8;}else{_0x274aca=0xce;}_0x1897b1[_0x8f24('0x1f')](_0x274aca);return _0x1897b1[_0x8f24('0x25')](_0x8f24('0x26'),_0x5b5610+'-'+_0x51c7d6+'/'+_0x4ac793)['json'](_0x33e009);}return null;};}function patchUpdates(_0x354986){return function(_0x4e40bf){try{jsonpatch[_0x8f24('0x27')](_0x4e40bf,_0x354986,!![]);}catch(_0x1b1d29){return BPromise[_0x8f24('0x28')](_0x1b1d29);}return _0x4e40bf['save']();};}function saveUpdates(_0x25a864,_0x337a9a){return function(_0xf960c5){if(_0xf960c5){return _0xf960c5[_0x8f24('0x29')](_0x25a864)['then'](function(_0x3d996){return _0x3d996;});}return null;};}function removeEntity(_0xec4c79,_0x468763){return function(_0x555ec3){if(_0x555ec3){return _0x555ec3['destroy']()[_0x8f24('0x2a')](function(){_0xec4c79['status'](0xcc)[_0x8f24('0x20')]();});}};}function handleEntityNotFound(_0x3da226,_0x344fa8){return function(_0x3704f8){if(!_0x3704f8){_0x3da226['sendStatus'](0x194);}return _0x3704f8;};}function handleError(_0x5db3e5,_0x456301){_0x456301=_0x456301||0x1f4;return function(_0x4bf24c){logger['error'](_0x4bf24c['stack']);if(_0x4bf24c['name']){delete _0x4bf24c[_0x8f24('0x2b')];}_0x5db3e5['status'](_0x456301)[_0x8f24('0x2c')](_0x4bf24c);};}exports[_0x8f24('0x2d')]=function(_0x22fb42,_0x387227){var _0x5ba2f1={},_0x2ba442={},_0x5b08c9={'count':0x0,'rows':[]};var _0xd9de48=_[_0x8f24('0x2e')](db[_0x8f24('0x2f')][_0x8f24('0x30')],function(_0x2f462b){return{'name':_0x2f462b['fieldName'],'type':_0x2f462b[_0x8f24('0x31')]['key']};});_0x2ba442['model']=_[_0x8f24('0x2e')](_0xd9de48,_0x8f24('0x2b'));_0x2ba442['query']=_[_0x8f24('0x32')](_0x22fb42['query']);_0x2ba442[_0x8f24('0x33')]=_[_0x8f24('0x34')](_0x2ba442['model'],_0x2ba442[_0x8f24('0x35')]);_0x5ba2f1[_0x8f24('0x36')]=_['intersection'](_0x2ba442[_0x8f24('0x37')],qs[_0x8f24('0x38')](_0x22fb42[_0x8f24('0x35')][_0x8f24('0x38')]));_0x5ba2f1['attributes']=_0x5ba2f1['attributes'][_0x8f24('0x39')]?_0x5ba2f1[_0x8f24('0x36')]:_0x2ba442[_0x8f24('0x37')];if(!_0x22fb42[_0x8f24('0x35')][_0x8f24('0x3a')]('nolimit')){_0x5ba2f1[_0x8f24('0x22')]=qs['limit'](_0x22fb42[_0x8f24('0x35')]['limit']);_0x5ba2f1[_0x8f24('0x21')]=qs[_0x8f24('0x21')](_0x22fb42[_0x8f24('0x35')][_0x8f24('0x21')]);}_0x5ba2f1[_0x8f24('0x3b')]=qs[_0x8f24('0x3c')](_0x22fb42[_0x8f24('0x35')][_0x8f24('0x3c')]);_0x5ba2f1[_0x8f24('0x3d')]=qs[_0x8f24('0x33')](_[_0x8f24('0x3e')](_0x22fb42['query'],_0x2ba442[_0x8f24('0x33')]),_0xd9de48);if(_0x22fb42['query'][_0x8f24('0x3f')]){_0x5ba2f1[_0x8f24('0x3d')]=_['merge'](_0x5ba2f1[_0x8f24('0x3d')],{'$or':_[_0x8f24('0x2e')](_0xd9de48,function(_0x4b32e0){if(_0x4b32e0['type']!==_0x8f24('0x40')){var _0x37c4ca={};_0x37c4ca[_0x4b32e0['name']]={'$like':'%'+_0x22fb42[_0x8f24('0x35')]['filter']+'%'};return _0x37c4ca;}})});}_0x5ba2f1=_['merge']({},_0x5ba2f1,_0x22fb42[_0x8f24('0x41')]);var _0x37b059={'where':_0x5ba2f1[_0x8f24('0x3d')]};return db[_0x8f24('0x2f')][_0x8f24('0x24')](_0x37b059)[_0x8f24('0x2a')](function(_0x92a479){_0x5b08c9[_0x8f24('0x24')]=_0x92a479;if(_0x22fb42['query'][_0x8f24('0x42')]){_0x5ba2f1[_0x8f24('0x43')]=[{'all':!![]}];}return db[_0x8f24('0x2f')][_0x8f24('0x44')](_0x5ba2f1);})['then'](function(_0x4f7914){_0x5b08c9['rows']=_0x4f7914;return _0x5b08c9;})['then'](respondWithFilteredResult(_0x387227,_0x5ba2f1))[_0x8f24('0x45')](handleError(_0x387227,null));};exports['show']=function(_0x5dddcb,_0x326c25){var _0x4638a0={'raw':![],'where':{'id':_0x5dddcb['params']['id']}},_0x5a5d7c={};_0x5a5d7c[_0x8f24('0x37')]=_[_0x8f24('0x32')](db[_0x8f24('0x2f')][_0x8f24('0x30')]);_0x5a5d7c[_0x8f24('0x35')]=_['keys'](_0x5dddcb[_0x8f24('0x35')]);_0x5a5d7c['filters']=_['intersection'](_0x5a5d7c[_0x8f24('0x37')],_0x5a5d7c[_0x8f24('0x35')]);_0x4638a0['attributes']=_['intersection'](_0x5a5d7c[_0x8f24('0x37')],qs[_0x8f24('0x38')](_0x5dddcb[_0x8f24('0x35')][_0x8f24('0x38')]));_0x4638a0[_0x8f24('0x36')]=_0x4638a0['attributes'][_0x8f24('0x39')]?_0x4638a0[_0x8f24('0x36')]:_0x5a5d7c['model'];if(_0x5dddcb[_0x8f24('0x35')][_0x8f24('0x42')]){_0x4638a0[_0x8f24('0x43')]=[{'all':!![]}];}_0x4638a0=_['merge']({},_0x4638a0,_0x5dddcb[_0x8f24('0x41')]);return db[_0x8f24('0x2f')][_0x8f24('0x46')](_0x4638a0)[_0x8f24('0x2a')](handleEntityNotFound(_0x326c25,null))[_0x8f24('0x2a')](respondWithResult(_0x326c25,null))['catch'](handleError(_0x326c25,null));};exports['create']=function(_0x488a5f,_0x55b921){return db[_0x8f24('0x2f')][_0x8f24('0x47')](_0x488a5f['body'],{})['then'](respondWithResult(_0x55b921,0xc9))[_0x8f24('0x45')](handleError(_0x55b921,null));};exports[_0x8f24('0x29')]=function(_0x13b78d,_0x408ef9){if(_0x13b78d[_0x8f24('0x48')]['id']){delete _0x13b78d['body']['id'];}return db[_0x8f24('0x2f')]['find']({'where':{'id':_0x13b78d[_0x8f24('0x49')]['id']}})['then'](handleEntityNotFound(_0x408ef9,null))['then'](saveUpdates(_0x13b78d[_0x8f24('0x48')],null))[_0x8f24('0x2a')](respondWithResult(_0x408ef9,null))['catch'](handleError(_0x408ef9,null));};exports[_0x8f24('0x4a')]=function(_0x4980c4,_0x41699a){return db[_0x8f24('0x2f')][_0x8f24('0x46')]({'where':{'id':_0x4980c4['params']['id']}})[_0x8f24('0x2a')](handleEntityNotFound(_0x41699a,null))[_0x8f24('0x2a')](removeEntity(_0x41699a,null))[_0x8f24('0x45')](handleError(_0x41699a,null));};exports[_0x8f24('0x4b')]=function(_0x57c7ad,_0x24a256){return db['VoiceQueueReport'][_0x8f24('0x4b')]()[_0x8f24('0x2a')](respondWithResult(_0x24a256,null))[_0x8f24('0x45')](handleError(_0x24a256,null));};exports['getVoiceQueuesReport']=function(_0x431df6,_0x21d8f1){var _0x6a95e={},_0x2af8a8={},_0x540f07={'count':0x0,'rows':[]};_0x2af8a8['model']=_[_0x8f24('0x32')](db['VoiceQueueReport'][_0x8f24('0x30')]);_0x2af8a8['query']=_[_0x8f24('0x32')](_0x431df6['query']);_0x2af8a8['filters']=_[_0x8f24('0x34')](_0x2af8a8[_0x8f24('0x37')],_0x2af8a8[_0x8f24('0x35')]);_0x6a95e[_0x8f24('0x36')]=_[_0x8f24('0x34')](_0x2af8a8[_0x8f24('0x37')],qs[_0x8f24('0x38')](_0x431df6['query'][_0x8f24('0x38')]));_0x6a95e['attributes']=_0x6a95e[_0x8f24('0x36')]['length']?_0x6a95e['attributes']:_0x2af8a8[_0x8f24('0x37')];if(!_0x431df6[_0x8f24('0x35')][_0x8f24('0x3a')](_0x8f24('0x4c'))){_0x6a95e[_0x8f24('0x22')]=qs[_0x8f24('0x22')](_0x431df6[_0x8f24('0x35')]['limit']);_0x6a95e[_0x8f24('0x21')]=qs[_0x8f24('0x21')](_0x431df6[_0x8f24('0x35')]['offset']);}_0x6a95e[_0x8f24('0x3b')]=qs[_0x8f24('0x3c')](_0x431df6[_0x8f24('0x35')][_0x8f24('0x3c')]);_0x6a95e[_0x8f24('0x3d')]=qs['filters'](_[_0x8f24('0x3e')](_0x431df6[_0x8f24('0x35')],_0x2af8a8[_0x8f24('0x33')]));if(_0x431df6[_0x8f24('0x35')][_0x8f24('0x3f')]){_0x6a95e['where']=_[_0x8f24('0x4d')](_0x6a95e['where'],{'$or':_[_0x8f24('0x2e')](_0x6a95e['attributes'],function(_0x407866){var _0x20e23f={};_0x20e23f[_0x407866]={'$like':'%'+_0x431df6['query']['filter']+'%'};return _0x20e23f;})});}_0x6a95e=_['merge']({},_0x6a95e,_0x431df6['options']);var _0x3fb499={'where':_0x6a95e[_0x8f24('0x3d')]};return db[_0x8f24('0x2f')][_0x8f24('0x24')](_0x3fb499)['then'](function(_0x404202){_0x540f07[_0x8f24('0x24')]=_0x404202;if(_0x431df6[_0x8f24('0x35')][_0x8f24('0x42')]){_0x6a95e['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0x8f24('0x44')](_0x6a95e);})['then'](function(_0x3a8904){_0x540f07[_0x8f24('0x4e')]=_0x3a8904;return _0x540f07;})[_0x8f24('0x2a')](respondWithFilteredResult(_0x21d8f1,_0x6a95e,_0x8f24('0x4f')))[_0x8f24('0x45')](handleError(_0x21d8f1,null,_0x8f24('0x4f')));};
\ No newline at end of file
index 81890bd..4e1aecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf344=['emit','hasOwnProperty','hook','exports','events','VoiceQueueReport','save','update','remove'];(function(_0x5bbd9a,_0x598515){var _0x45e28d=function(_0x1a728f){while(--_0x1a728f){_0x5bbd9a['push'](_0x5bbd9a['shift']());}};_0x45e28d(++_0x598515);}(_0xf344,0xa6));var _0x4f34=function(_0x57c9f9,_0x3a9ddd){_0x57c9f9=_0x57c9f9-0x0;var _0x3ac587=_0xf344[_0x57c9f9];return _0x3ac587;};'use strict';var EventEmitter=require(_0x4f34('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0x4f34('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f34('0x2'),'afterUpdate':_0x4f34('0x3'),'afterDestroy':_0x4f34('0x4')};function emitEvent(_0xbcc2c7){return function(_0x47eade,_0x176940,_0x28a1c4){VoiceQueueReportEvents['emit'](_0xbcc2c7+':'+_0x47eade['id'],_0x47eade);VoiceQueueReportEvents[_0x4f34('0x5')](_0xbcc2c7,_0x47eade);_0x28a1c4(null);};}for(var e in events){if(events[_0x4f34('0x6')](e)){var event=events[e];VoiceQueueReport[_0x4f34('0x7')](e,emitEvent(event));}}module[_0x4f34('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x8cbd=['setMaxListeners','update','remove','emit','hook','exports','VoiceQueueReport'];(function(_0x1f335d,_0x2973bf){var _0x238e34=function(_0x18eb32){while(--_0x18eb32){_0x1f335d['push'](_0x1f335d['shift']());}};_0x238e34(++_0x2973bf);}(_0x8cbd,0x11e));var _0xd8cb=function(_0x1f239e,_0x367b43){_0x1f239e=_0x1f239e-0x0;var _0x826971=_0x8cbd[_0x1f239e];return _0x826971;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require('../../mysqldb')['db'][_0xd8cb('0x0')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xd8cb('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd8cb('0x2'),'afterDestroy':_0xd8cb('0x3')};function emitEvent(_0x19ed7a){return function(_0x2ad5dd,_0x400e6a,_0x5ba793){VoiceQueueReportEvents[_0xd8cb('0x4')](_0x19ed7a+':'+_0x2ad5dd['id'],_0x2ad5dd);VoiceQueueReportEvents[_0xd8cb('0x4')](_0x19ed7a,_0x2ad5dd);_0x5ba793(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xd8cb('0x5')](e,emitEvent(event));}}module[_0xd8cb('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index 69ce782..7fe84e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a95=['exports','define','VoiceQueueReport','uniqueid','calleridnum','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceQueueReport.attributes'];(function(_0x3bcc87,_0x2200ec){var _0x45c6e4=function(_0x458b6e){while(--_0x458b6e){_0x3bcc87['push'](_0x3bcc87['shift']());}};_0x45c6e4(++_0x2200ec);}(_0x7a95,0x113));var _0x57a9=function(_0x3ec2b4,_0x2bb341){_0x3ec2b4=_0x3ec2b4-0x0;var _0xd85882=_0x7a95[_0x3ec2b4];return _0xd85882;};'use strict';var _=require(_0x57a9('0x0'));var util=require(_0x57a9('0x1'));var logger=require(_0x57a9('0x2'))(_0x57a9('0x3'));var moment=require(_0x57a9('0x4'));var BPromise=require(_0x57a9('0x5'));var rp=require(_0x57a9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x57a9('0x7'));var config=require(_0x57a9('0x8'));var attributes=require(_0x57a9('0x9'));module[_0x57a9('0xa')]=function(_0x421a5e,_0x3708a7){return _0x421a5e[_0x57a9('0xb')](_0x57a9('0xc'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0x57a9('0xd')]},{'fields':[_0x57a9('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa192=['api','moment','bluebird','path','rimraf','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','../../config/logger'];(function(_0x414b80,_0x183af6){var _0x16b108=function(_0x5d7264){while(--_0x5d7264){_0x414b80['push'](_0x414b80['shift']());}};_0x16b108(++_0x183af6);}(_0xa192,0x1cb));var _0x2a19=function(_0x32b096,_0x1c84e4){_0x32b096=_0x32b096-0x0;var _0x466244=_0xa192[_0x32b096];return _0x466244;};'use strict';var _=require(_0x2a19('0x0'));var util=require(_0x2a19('0x1'));var logger=require(_0x2a19('0x2'))(_0x2a19('0x3'));var moment=require(_0x2a19('0x4'));var BPromise=require(_0x2a19('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2a19('0x6'));var rimraf=require(_0x2a19('0x7'));var config=require('../../config/environment');var attributes=require(_0x2a19('0x8'));module['exports']=function(_0xfcae55,_0x3b21ad){return _0xfcae55[_0x2a19('0x9')](_0x2a19('0xa'),attributes,{'tableName':_0x2a19('0xb'),'paranoid':![],'indexes':[{'fields':[_0x2a19('0xc')]},{'fields':[_0x2a19('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 93fcdf4..a9b2a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1150=['http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','then','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','raw','options','where','attributes','limit','include','map','model','CreateVoiceQueueReport','create','update','body','UpdateVoiceQueueReport','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x3d3a54,_0x24847c){var _0x360126=function(_0x40269d){while(--_0x40269d){_0x3d3a54['push'](_0x3d3a54['shift']());}};_0x360126(++_0x24847c);}(_0x1150,0x131));var _0x0115=function(_0x95675b,_0x88d868){_0x95675b=_0x95675b-0x0;var _0x2279e0=_0x1150[_0x95675b];return _0x2279e0;};'use strict';var _=require(_0x0115('0x0'));var util=require(_0x0115('0x1'));var moment=require(_0x0115('0x2'));var BPromise=require('bluebird');var rs=require(_0x0115('0x3'));var fs=require('fs');var Redis=require(_0x0115('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0115('0x5'));var logger=require(_0x0115('0x6'))(_0x0115('0x7'));var config=require('../../config/environment');var jayson=require(_0x0115('0x8'));var client=jayson[_0x0115('0x9')][_0x0115('0xa')]({'port':0x232a});config[_0x0115('0xb')]=_[_0x0115('0xc')](config[_0x0115('0xb')],{'host':_0x0115('0xd'),'port':0x18eb});var socket=require(_0x0115('0xe'))(new Redis(config[_0x0115('0xb')]));require(_0x0115('0xf'))[_0x0115('0x10')](socket);function respondWithRpcPromise(_0x51bccb,_0x5aa63c,_0x190d00){return new BPromise(function(_0x988851,_0x4d1f52){return client['request'](_0x51bccb,_0x190d00)[_0x0115('0x11')](function(_0x33a825){logger[_0x0115('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x5aa63c,_0x0115('0x13'));logger[_0x0115('0x14')](_0x0115('0x15'),_0x5aa63c,_0x0115('0x13'),JSON[_0x0115('0x16')](_0x33a825));if(_0x33a825[_0x0115('0x17')]){if(_0x33a825[_0x0115('0x17')][_0x0115('0x18')]===0x1f4){logger['error'](_0x0115('0x19'),_0x5aa63c,_0x33a825[_0x0115('0x17')][_0x0115('0x1a')]);return _0x4d1f52(_0x33a825['error'][_0x0115('0x1a')]);}logger[_0x0115('0x17')](_0x0115('0x19'),_0x5aa63c,_0x33a825[_0x0115('0x17')][_0x0115('0x1a')]);return _0x988851(_0x33a825['error'][_0x0115('0x1a')]);}else{logger[_0x0115('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x5aa63c,'request\x20sent');_0x988851(_0x33a825[_0x0115('0x1b')]['message']);}})[_0x0115('0x1c')](function(_0x1f74ae){logger['error'](_0x0115('0x19'),_0x5aa63c,_0x1f74ae);_0x4d1f52(_0x1f74ae);});});}exports[_0x0115('0x1d')]=function(_0x48d704){var _0x186a57=this;return new Promise(function(_0x1de872,_0x1b2b10){return db[_0x0115('0x1e')][_0x0115('0x1f')]({'raw':_0x48d704['options']?_0x48d704['options'][_0x0115('0x20')]===undefined?!![]:![]:!![],'where':_0x48d704[_0x0115('0x21')]?_0x48d704[_0x0115('0x21')][_0x0115('0x22')]||null:null,'attributes':_0x48d704['options']?_0x48d704[_0x0115('0x21')][_0x0115('0x23')]||null:null,'limit':_0x48d704[_0x0115('0x21')]?_0x48d704['options'][_0x0115('0x24')]||null:null,'include':_0x48d704[_0x0115('0x21')]?_0x48d704[_0x0115('0x21')][_0x0115('0x25')]?_[_0x0115('0x26')](_0x48d704[_0x0115('0x21')]['include'],function(_0x14d83c){return{'model':db[_0x14d83c['model']],'as':_0x14d83c['as'],'attributes':_0x14d83c[_0x0115('0x23')],'include':_0x14d83c[_0x0115('0x25')]?_[_0x0115('0x26')](_0x14d83c['include'],function(_0x422a61){return{'model':db[_0x422a61[_0x0115('0x27')]],'as':_0x422a61['as'],'attributes':_0x422a61[_0x0115('0x23')],'include':_0x422a61[_0x0115('0x25')]?_[_0x0115('0x26')](_0x422a61[_0x0115('0x25')],function(_0x343bd1){return{'model':db[_0x343bd1[_0x0115('0x27')]],'as':_0x343bd1['as'],'attributes':_0x343bd1[_0x0115('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x9978de){logger[_0x0115('0x12')](_0x0115('0x1d'),_0x48d704);logger[_0x0115('0x14')](_0x0115('0x1d'),_0x48d704,JSON['stringify'](_0x9978de));_0x1de872(_0x9978de);})[_0x0115('0x1c')](function(_0x4bb88e){logger['error']('GetVoiceQueueReport',_0x4bb88e[_0x0115('0x1a')],_0x48d704);_0x1b2b10(_0x186a57[_0x0115('0x17')](0x1f4,_0x4bb88e[_0x0115('0x1a')]));});});};exports[_0x0115('0x28')]=function(_0x28233d){var _0x56882e=this;return new Promise(function(_0x4e5f42,_0x557a9b){return db[_0x0115('0x1e')][_0x0115('0x29')](_0x28233d['body'],{'raw':_0x28233d[_0x0115('0x21')]?_0x28233d[_0x0115('0x21')][_0x0115('0x20')]===undefined?!![]:![]:!![]})[_0x0115('0x11')](function(_0x5780ba){logger[_0x0115('0x12')](_0x0115('0x28'),_0x28233d);logger[_0x0115('0x14')](_0x0115('0x28'),_0x28233d,JSON['stringify'](_0x5780ba));_0x4e5f42(_0x5780ba);})[_0x0115('0x1c')](function(_0x1cb814){logger['error']('CreateVoiceQueueReport',_0x1cb814[_0x0115('0x1a')],_0x28233d);_0x557a9b(_0x56882e[_0x0115('0x17')](0x1f4,_0x1cb814[_0x0115('0x1a')]));});});};exports['UpdateVoiceQueueReport']=function(_0x535bfa){var _0x825ee5=this;return new Promise(function(_0xe04544,_0x485699){return db[_0x0115('0x1e')][_0x0115('0x2a')](_0x535bfa[_0x0115('0x2b')],{'raw':_0x535bfa[_0x0115('0x21')]?_0x535bfa[_0x0115('0x21')][_0x0115('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x535bfa[_0x0115('0x21')]?_0x535bfa[_0x0115('0x21')]['where']||null:null,'attributes':_0x535bfa[_0x0115('0x21')]?_0x535bfa['options'][_0x0115('0x23')]||null:null,'limit':_0x535bfa[_0x0115('0x21')]?_0x535bfa[_0x0115('0x21')][_0x0115('0x24')]||null:null})[_0x0115('0x11')](function(_0x1b575d){logger[_0x0115('0x12')]('UpdateVoiceQueueReport',_0x535bfa);logger['debug'](_0x0115('0x2c'),_0x535bfa,JSON[_0x0115('0x16')](_0x1b575d));_0xe04544(_0x1b575d);})[_0x0115('0x1c')](function(_0x19fd14){logger['error'](_0x0115('0x2c'),_0x19fd14[_0x0115('0x1a')],_0x535bfa);_0x485699(_0x825ee5[_0x0115('0x17')](0x1f4,_0x19fd14['message']));});});};
\ No newline at end of file
+var _0x9a11=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','then','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','VoiceQueueReport,\x20%s,\x20%s','message','info','result','VoiceQueueReport','options','raw','where','limit','include','model','attributes','map','GetVoiceQueueReport','CreateVoiceQueueReport','create','catch','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x6c072,_0x3aa681){var _0x593f27=function(_0x209d50){while(--_0x209d50){_0x6c072['push'](_0x6c072['shift']());}};_0x593f27(++_0x3aa681);}(_0x9a11,0xaa));var _0x19a1=function(_0x1b3d5e,_0x5aebd3){_0x1b3d5e=_0x1b3d5e-0x0;var _0x163313=_0x9a11[_0x1b3d5e];return _0x163313;};'use strict';var _=require(_0x19a1('0x0'));var util=require(_0x19a1('0x1'));var moment=require(_0x19a1('0x2'));var BPromise=require(_0x19a1('0x3'));var rs=require(_0x19a1('0x4'));var fs=require('fs');var Redis=require(_0x19a1('0x5'));var db=require(_0x19a1('0x6'))['db'];var utils=require(_0x19a1('0x7'));var logger=require(_0x19a1('0x8'))(_0x19a1('0x9'));var config=require(_0x19a1('0xa'));var jayson=require(_0x19a1('0xb'));var client=jayson['client'][_0x19a1('0xc')]({'port':0x232a});config[_0x19a1('0xd')]=_[_0x19a1('0xe')](config[_0x19a1('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x19a1('0xf'))(new Redis(config['redis']));require(_0x19a1('0x10'))[_0x19a1('0x11')](socket);function respondWithRpcPromise(_0x41c08b,_0x1362b7,_0x309b5b){return new BPromise(function(_0x54c7a8,_0x370fc1){return client['request'](_0x41c08b,_0x309b5b)[_0x19a1('0x12')](function(_0x382f03){logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x1362b7,'request\x20sent');logger[_0x19a1('0x13')](_0x19a1('0x14'),_0x1362b7,_0x19a1('0x15'),JSON[_0x19a1('0x16')](_0x382f03));if(_0x382f03['error']){if(_0x382f03['error'][_0x19a1('0x17')]===0x1f4){logger[_0x19a1('0x18')](_0x19a1('0x19'),_0x1362b7,_0x382f03[_0x19a1('0x18')][_0x19a1('0x1a')]);return _0x370fc1(_0x382f03[_0x19a1('0x18')][_0x19a1('0x1a')]);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x1362b7,_0x382f03[_0x19a1('0x18')][_0x19a1('0x1a')]);return _0x54c7a8(_0x382f03['error']['message']);}else{logger[_0x19a1('0x1b')](_0x19a1('0x19'),_0x1362b7,_0x19a1('0x15'));_0x54c7a8(_0x382f03[_0x19a1('0x1c')][_0x19a1('0x1a')]);}})['catch'](function(_0x30376a){logger[_0x19a1('0x18')](_0x19a1('0x19'),_0x1362b7,_0x30376a);_0x370fc1(_0x30376a);});});}exports['GetVoiceQueueReport']=function(_0x38a576){var _0x1c2129=this;return new Promise(function(_0x5b1482,_0x100b98){return db[_0x19a1('0x1d')]['findAll']({'raw':_0x38a576[_0x19a1('0x1e')]?_0x38a576[_0x19a1('0x1e')][_0x19a1('0x1f')]===undefined?!![]:![]:!![],'where':_0x38a576[_0x19a1('0x1e')]?_0x38a576['options'][_0x19a1('0x20')]||null:null,'attributes':_0x38a576[_0x19a1('0x1e')]?_0x38a576[_0x19a1('0x1e')]['attributes']||null:null,'limit':_0x38a576['options']?_0x38a576[_0x19a1('0x1e')][_0x19a1('0x21')]||null:null,'include':_0x38a576['options']?_0x38a576[_0x19a1('0x1e')][_0x19a1('0x22')]?_['map'](_0x38a576[_0x19a1('0x1e')][_0x19a1('0x22')],function(_0x40d353){return{'model':db[_0x40d353[_0x19a1('0x23')]],'as':_0x40d353['as'],'attributes':_0x40d353[_0x19a1('0x24')],'include':_0x40d353['include']?_['map'](_0x40d353['include'],function(_0x2fadc2){return{'model':db[_0x2fadc2[_0x19a1('0x23')]],'as':_0x2fadc2['as'],'attributes':_0x2fadc2[_0x19a1('0x24')],'include':_0x2fadc2[_0x19a1('0x22')]?_[_0x19a1('0x25')](_0x2fadc2[_0x19a1('0x22')],function(_0x21995c){return{'model':db[_0x21995c[_0x19a1('0x23')]],'as':_0x21995c['as'],'attributes':_0x21995c[_0x19a1('0x24')]};}):[]};}):[]};}):[]:[]})[_0x19a1('0x12')](function(_0x541939){logger[_0x19a1('0x1b')](_0x19a1('0x26'),_0x38a576);logger['debug'](_0x19a1('0x26'),_0x38a576,JSON[_0x19a1('0x16')](_0x541939));_0x5b1482(_0x541939);})['catch'](function(_0x1fc6e8){logger[_0x19a1('0x18')]('GetVoiceQueueReport',_0x1fc6e8[_0x19a1('0x1a')],_0x38a576);_0x100b98(_0x1c2129[_0x19a1('0x18')](0x1f4,_0x1fc6e8[_0x19a1('0x1a')]));});});};exports[_0x19a1('0x27')]=function(_0x3a68ed){var _0xa37867=this;return new Promise(function(_0x452211,_0x24d61a){return db[_0x19a1('0x1d')][_0x19a1('0x28')](_0x3a68ed['body'],{'raw':_0x3a68ed[_0x19a1('0x1e')]?_0x3a68ed[_0x19a1('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x92a90f){logger['info'](_0x19a1('0x27'),_0x3a68ed);logger[_0x19a1('0x13')]('CreateVoiceQueueReport',_0x3a68ed,JSON[_0x19a1('0x16')](_0x92a90f));_0x452211(_0x92a90f);})[_0x19a1('0x29')](function(_0x1d0c6b){logger[_0x19a1('0x18')](_0x19a1('0x27'),_0x1d0c6b[_0x19a1('0x1a')],_0x3a68ed);_0x24d61a(_0xa37867[_0x19a1('0x18')](0x1f4,_0x1d0c6b[_0x19a1('0x1a')]));});});};exports[_0x19a1('0x2a')]=function(_0x2ddaa){var _0x1a8456=this;return new Promise(function(_0xe4f33c,_0x8d7b8e){return db[_0x19a1('0x1d')][_0x19a1('0x2b')](_0x2ddaa['body'],{'raw':_0x2ddaa[_0x19a1('0x1e')]?_0x2ddaa[_0x19a1('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2ddaa[_0x19a1('0x1e')]?_0x2ddaa[_0x19a1('0x1e')][_0x19a1('0x20')]||null:null,'attributes':_0x2ddaa['options']?_0x2ddaa[_0x19a1('0x1e')][_0x19a1('0x24')]||null:null,'limit':_0x2ddaa['options']?_0x2ddaa[_0x19a1('0x1e')][_0x19a1('0x21')]||null:null})[_0x19a1('0x12')](function(_0x4fa7a3){logger[_0x19a1('0x1b')](_0x19a1('0x2a'),_0x2ddaa);logger[_0x19a1('0x13')](_0x19a1('0x2a'),_0x2ddaa,JSON['stringify'](_0x4fa7a3));_0xe4f33c(_0x4fa7a3);})[_0x19a1('0x29')](function(_0x30247a){logger[_0x19a1('0x18')](_0x19a1('0x2a'),_0x30247a[_0x19a1('0x1a')],_0x2ddaa);_0x8d7b8e(_0x1a8456[_0x19a1('0x18')](0x1f4,_0x30247a[_0x19a1('0x1a')]));});});};
\ No newline at end of file
index 5a58ccc..1c4cc0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc15b=['update','removeListener','length','./voiceQueueReport.events','remove'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0xc15b,0xe4));var _0xbc15=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0xc15b[_0x15c421];return _0x5e5ed5;};'use strict';var VoiceQueueReportEvents=require(_0xbc15('0x0'));var events=['save',_0xbc15('0x1'),_0xbc15('0x2')];function createListener(_0x3365d4,_0xdb6b6e){return function(_0x4ebf9d){_0xdb6b6e['emit'](_0x3365d4,_0x4ebf9d);};}function removeListener(_0x31884e,_0x44f7ca){return function(){VoiceQueueReportEvents[_0xbc15('0x3')](_0x31884e,_0x44f7ca);};}exports['register']=function(_0x55885f){for(var _0x54f394=0x0,_0x1231f0=events[_0xbc15('0x4')];_0x54f394<_0x1231f0;_0x54f394++){var _0x3cb4b5=events[_0x54f394];var _0x50a276=createListener('voiceQueueReport:'+_0x3cb4b5,_0x55885f);VoiceQueueReportEvents['on'](_0x3cb4b5,_0x50a276);}};
\ No newline at end of file
+var _0x3379=['remove','update','emit','removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x3379,0x115));var _0x9337=function(_0x2de252,_0x48247e){_0x2de252=_0x2de252-0x0;var _0x43bc95=_0x3379[_0x2de252];return _0x43bc95;};'use strict';var VoiceQueueReportEvents=require(_0x9337('0x0'));var events=[_0x9337('0x1'),_0x9337('0x2'),_0x9337('0x3')];function createListener(_0x5a6194,_0x369104){return function(_0x39545){_0x369104[_0x9337('0x4')](_0x5a6194,_0x39545);};}function removeListener(_0x30dcfe,_0x49ce9a){return function(){VoiceQueueReportEvents[_0x9337('0x5')](_0x30dcfe,_0x49ce9a);};}exports[_0x9337('0x6')]=function(_0x390772){for(var _0x677c38=0x0,_0x5a59ab=events[_0x9337('0x7')];_0x677c38<_0x5a59ab;_0x677c38++){var _0x5b1986=events[_0x677c38];var _0x268943=createListener(_0x9337('0x8')+_0x5b1986,_0x390772);VoiceQueueReportEvents['on'](_0x5b1986,_0x268943);}};
\ No newline at end of file
index e8c93da..6e7d449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d92=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','/:id','post','create','delete','exports','multer','connect-timeout'];(function(_0x188cc8,_0xd39746){var _0x4cb155=function(_0x2d2a6c){while(--_0x2d2a6c){_0x188cc8['push'](_0x188cc8['shift']());}};_0x4cb155(++_0xd39746);}(_0x9d92,0xdf));var _0x29d9=function(_0x386c3e,_0x44a375){_0x386c3e=_0x386c3e-0x0;var _0x4b8e13=_0x9d92[_0x386c3e];return _0x4b8e13;};'use strict';var multer=require(_0x29d9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x29d9('0x1'));var express=require(_0x29d9('0x2'));var router=express['Router']();var fs_extra=require(_0x29d9('0x3'));var auth=require(_0x29d9('0x4'));var interaction=require(_0x29d9('0x5'));var config=require(_0x29d9('0x6'));var controller=require(_0x29d9('0x7'));router[_0x29d9('0x8')]('/',auth[_0x29d9('0x9')](),controller['index']);router[_0x29d9('0x8')](_0x29d9('0xa'),auth[_0x29d9('0x9')](),controller['show']);router[_0x29d9('0xb')]('/',auth[_0x29d9('0x9')](),controller[_0x29d9('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x29d9('0xd')](_0x29d9('0xa'),auth[_0x29d9('0x9')](),controller['destroy']);module[_0x29d9('0xe')]=router;
\ No newline at end of file
+var _0xabfc=['util','path','connect-timeout','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','put','update','destroy','multer'];(function(_0x22ed67,_0x1f3f3d){var _0x5a3c92=function(_0x1b3206){while(--_0x1b3206){_0x22ed67['push'](_0x22ed67['shift']());}};_0x5a3c92(++_0x1f3f3d);}(_0xabfc,0x194));var _0xcabf=function(_0x5cc8b9,_0x20e3c3){_0x5cc8b9=_0x5cc8b9-0x0;var _0x58892e=_0xabfc[_0x5cc8b9];return _0x58892e;};'use strict';var multer=require(_0xcabf('0x0'));var util=require(_0xcabf('0x1'));var path=require(_0xcabf('0x2'));var timeout=require(_0xcabf('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xcabf('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcabf('0x5'));var controller=require(_0xcabf('0x6'));router[_0xcabf('0x7')]('/',auth[_0xcabf('0x8')](),controller[_0xcabf('0x9')]);router[_0xcabf('0x7')](_0xcabf('0xa'),auth[_0xcabf('0x8')](),controller[_0xcabf('0xb')]);router['post']('/',auth[_0xcabf('0x8')](),controller['create']);router[_0xcabf('0xc')](_0xcabf('0xa'),auth[_0xcabf('0x8')](),controller[_0xcabf('0xd')]);router['delete'](_0xcabf('0xa'),auth['isAuthenticated'](),controller[_0xcabf('0xe')]);module['exports']=router;
\ No newline at end of file
index 302133e..0a1f905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e22=['moment','exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0xc9671e,_0x5ae235){var _0x54957a=function(_0x17b799){while(--_0x17b799){_0xc9671e['push'](_0xc9671e['shift']());}};_0x54957a(++_0x5ae235);}(_0x3e22,0x168));var _0x23e2=function(_0x43a5cd,_0x1bf484){_0x43a5cd=_0x43a5cd-0x0;var _0x10d186=_0x3e22[_0x43a5cd];return _0x10d186;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x23e2('0x0'));module[_0x23e2('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x23e2('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x23e2('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x23e2('0x4')](_0x23e2('0x5'))}};
\ No newline at end of file
+var _0x867e=['sequelize','moment','STRING','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x552192,_0x4d9370){var _0x6b7953=function(_0x4bccbf){while(--_0x4bccbf){_0x552192['push'](_0x552192['shift']());}};_0x6b7953(++_0x4d9370);}(_0x867e,0x10e));var _0xe867=function(_0x16d4e2,_0x58c546){_0x16d4e2=_0x16d4e2-0x0;var _0x521c8c=_0x867e[_0x16d4e2];return _0x521c8c;};'use strict';var Sequelize=require(_0xe867('0x0'));var moment=require(_0xe867('0x1'));module['exports']={'time':{'type':Sequelize[_0xe867('0x2')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xe867('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0xe867('0x3')](_0xe867('0x4'))}};
\ No newline at end of file
index 938da0d..eab9a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62aa=['rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','stack','name','index','map','VoiceQueuesLog'];(function(_0x178856,_0x41f045){var _0x3c7fe7=function(_0x4d9ce4){while(--_0x4d9ce4){_0x178856['push'](_0x178856['shift']());}};_0x3c7fe7(++_0x41f045);}(_0x62aa,0x1cf));var _0xa62a=function(_0x5304ce,_0x48455a){_0x5304ce=_0x5304ce-0x0;var _0x31a8c1=_0x62aa[_0x5304ce];return _0x31a8c1;};'use strict';var emlformat=require(_0xa62a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa62a('0x1'));var jsonpatch=require(_0xa62a('0x2'));var rp=require(_0xa62a('0x3'));var moment=require('moment');var BPromise=require(_0xa62a('0x4'));var Mustache=require('mustache');var util=require(_0xa62a('0x5'));var path=require(_0xa62a('0x6'));var sox=require(_0xa62a('0x7'));var csv=require(_0xa62a('0x8'));var ejs=require(_0xa62a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa62a('0xa'));var squel=require(_0xa62a('0xb'));var crypto=require('crypto');var jsforce=require(_0xa62a('0xc'));var deskjs=require(_0xa62a('0xd'));var toCsv=require(_0xa62a('0x8'));var querystring=require('querystring');var Papa=require(_0xa62a('0xe'));var Redis=require(_0xa62a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa62a('0x10'));var as=require(_0xa62a('0x11'));var hardwareService=require(_0xa62a('0x12'));var logger=require(_0xa62a('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xa62a('0x14'));var licenseUtil=require(_0xa62a('0x15'));var db=require(_0xa62a('0x16'))['db'];function respondWithStatusCode(_0x38bcce,_0xf676ca){_0xf676ca=_0xf676ca||0xcc;return function(_0x30bd0b){if(_0x30bd0b){return _0x38bcce[_0xa62a('0x17')](_0xf676ca);}return _0x38bcce[_0xa62a('0x18')](_0xf676ca)[_0xa62a('0x19')]();};}function respondWithResult(_0x5999a9,_0xc60d1a){_0xc60d1a=_0xc60d1a||0xc8;return function(_0x1b2a66){if(_0x1b2a66){return _0x5999a9['status'](_0xc60d1a)[_0xa62a('0x1a')](_0x1b2a66);}};}function respondWithFilteredResult(_0x20a42f,_0x3bdb81){return function(_0x535b07){if(_0x535b07){var _0x5821b2=typeof _0x3bdb81[_0xa62a('0x1b')]===_0xa62a('0x1c')&&typeof _0x3bdb81[_0xa62a('0x1d')]===_0xa62a('0x1c');var _0x2b4252=_0x535b07[_0xa62a('0x1e')];var _0x3310bd=_0x5821b2?0x0:_0x3bdb81[_0xa62a('0x1b')];var _0x31701b=_0x5821b2?_0x535b07[_0xa62a('0x1e')]:_0x3bdb81[_0xa62a('0x1b')]+_0x3bdb81['limit'];var _0x5d959d;if(_0x31701b>=_0x2b4252){_0x31701b=_0x2b4252;_0x5d959d=0xc8;}else{_0x5d959d=0xce;}_0x20a42f['status'](_0x5d959d);return _0x20a42f['set'](_0xa62a('0x1f'),_0x3310bd+'-'+_0x31701b+'/'+_0x2b4252)['json'](_0x535b07);}return null;};}function patchUpdates(_0x19287a){return function(_0x47c78a){try{jsonpatch[_0xa62a('0x20')](_0x47c78a,_0x19287a,!![]);}catch(_0x281b1f){return BPromise[_0xa62a('0x21')](_0x281b1f);}return _0x47c78a['save']();};}function saveUpdates(_0x55d76c,_0x4c8874){return function(_0x2d4400){if(_0x2d4400){return _0x2d4400[_0xa62a('0x22')](_0x55d76c)[_0xa62a('0x23')](function(_0x447c9d){return _0x447c9d;});}return null;};}function removeEntity(_0x4e804f,_0x1dfef8){return function(_0x166877){if(_0x166877){return _0x166877['destroy']()[_0xa62a('0x23')](function(){_0x4e804f[_0xa62a('0x18')](0xcc)[_0xa62a('0x19')]();});}};}function handleEntityNotFound(_0x552b67,_0x315479){return function(_0x19b554){if(!_0x19b554){_0x552b67['sendStatus'](0x194);}return _0x19b554;};}function handleError(_0x3a94de,_0xe1a229){_0xe1a229=_0xe1a229||0x1f4;return function(_0x39248c){logger['error'](_0x39248c[_0xa62a('0x24')]);if(_0x39248c[_0xa62a('0x25')]){delete _0x39248c[_0xa62a('0x25')];}_0x3a94de['status'](_0xe1a229)['send'](_0x39248c);};}exports[_0xa62a('0x26')]=function(_0x13d4fb,_0x2e89f1){var _0x52bb9a={},_0x51e252={},_0x13bf97={'count':0x0,'rows':[]};var _0x2a8cce=_[_0xa62a('0x27')](db[_0xa62a('0x28')][_0xa62a('0x29')],function(_0x25da70){return{'name':_0x25da70[_0xa62a('0x2a')],'type':_0x25da70['type'][_0xa62a('0x2b')]};});_0x51e252[_0xa62a('0x2c')]=_[_0xa62a('0x27')](_0x2a8cce,'name');_0x51e252[_0xa62a('0x2d')]=_[_0xa62a('0x2e')](_0x13d4fb[_0xa62a('0x2d')]);_0x51e252[_0xa62a('0x2f')]=_['intersection'](_0x51e252[_0xa62a('0x2c')],_0x51e252[_0xa62a('0x2d')]);_0x52bb9a[_0xa62a('0x30')]=_[_0xa62a('0x31')](_0x51e252[_0xa62a('0x2c')],qs[_0xa62a('0x32')](_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x32')]));_0x52bb9a[_0xa62a('0x30')]=_0x52bb9a[_0xa62a('0x30')][_0xa62a('0x33')]?_0x52bb9a['attributes']:_0x51e252[_0xa62a('0x2c')];if(!_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x34')](_0xa62a('0x35'))){_0x52bb9a[_0xa62a('0x1d')]=qs[_0xa62a('0x1d')](_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x1d')]);_0x52bb9a[_0xa62a('0x1b')]=qs['offset'](_0x13d4fb[_0xa62a('0x2d')]['offset']);}_0x52bb9a[_0xa62a('0x36')]=qs[_0xa62a('0x37')](_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x37')]);_0x52bb9a[_0xa62a('0x38')]=qs[_0xa62a('0x2f')](_[_0xa62a('0x39')](_0x13d4fb[_0xa62a('0x2d')],_0x51e252[_0xa62a('0x2f')]),_0x2a8cce);if(_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x3a')]){_0x52bb9a['where']=_['merge'](_0x52bb9a[_0xa62a('0x38')],{'$or':_[_0xa62a('0x27')](_0x2a8cce,function(_0x4d6e0c){if(_0x4d6e0c['type']!==_0xa62a('0x3b')){var _0x516057={};_0x516057[_0x4d6e0c['name']]={'$like':'%'+_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x3a')]+'%'};return _0x516057;}})});}_0x52bb9a=_[_0xa62a('0x3c')]({},_0x52bb9a,_0x13d4fb[_0xa62a('0x3d')]);var _0x6ca592={'where':_0x52bb9a[_0xa62a('0x38')]};return db[_0xa62a('0x28')][_0xa62a('0x1e')](_0x6ca592)[_0xa62a('0x23')](function(_0x5f3b3a){_0x13bf97[_0xa62a('0x1e')]=_0x5f3b3a;if(_0x13d4fb[_0xa62a('0x2d')][_0xa62a('0x3e')]){_0x52bb9a[_0xa62a('0x3f')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xa62a('0x40')](_0x52bb9a);})['then'](function(_0x498f0d){_0x13bf97[_0xa62a('0x41')]=_0x498f0d;return _0x13bf97;})['then'](respondWithFilteredResult(_0x2e89f1,_0x52bb9a))[_0xa62a('0x42')](handleError(_0x2e89f1,null));};exports[_0xa62a('0x43')]=function(_0x5ad179,_0x394841){var _0x31f22a={'raw':!![],'where':{'id':_0x5ad179['params']['id']}},_0x26ae3e={};_0x26ae3e['model']=_[_0xa62a('0x2e')](db[_0xa62a('0x28')][_0xa62a('0x29')]);_0x26ae3e[_0xa62a('0x2d')]=_[_0xa62a('0x2e')](_0x5ad179[_0xa62a('0x2d')]);_0x26ae3e[_0xa62a('0x2f')]=_['intersection'](_0x26ae3e[_0xa62a('0x2c')],_0x26ae3e[_0xa62a('0x2d')]);_0x31f22a[_0xa62a('0x30')]=_[_0xa62a('0x31')](_0x26ae3e[_0xa62a('0x2c')],qs['fields'](_0x5ad179['query'][_0xa62a('0x32')]));_0x31f22a[_0xa62a('0x30')]=_0x31f22a[_0xa62a('0x30')][_0xa62a('0x33')]?_0x31f22a[_0xa62a('0x30')]:_0x26ae3e[_0xa62a('0x2c')];if(_0x5ad179[_0xa62a('0x2d')][_0xa62a('0x3e')]){_0x31f22a['include']=[{'all':!![]}];}_0x31f22a=_['merge']({},_0x31f22a,_0x5ad179[_0xa62a('0x3d')]);return db['VoiceQueuesLog']['find'](_0x31f22a)[_0xa62a('0x23')](handleEntityNotFound(_0x394841,null))[_0xa62a('0x23')](respondWithResult(_0x394841,null))[_0xa62a('0x42')](handleError(_0x394841,null));};exports[_0xa62a('0x44')]=function(_0x54fcf5,_0x280dbd){return db[_0xa62a('0x28')][_0xa62a('0x44')](_0x54fcf5[_0xa62a('0x45')],{})[_0xa62a('0x23')](respondWithResult(_0x280dbd,0xc9))[_0xa62a('0x42')](handleError(_0x280dbd,null));};exports['update']=function(_0x195c9e,_0x59c951){if(_0x195c9e[_0xa62a('0x45')]['id']){delete _0x195c9e[_0xa62a('0x45')]['id'];}return db[_0xa62a('0x28')][_0xa62a('0x46')]({'where':{'id':_0x195c9e['params']['id']}})[_0xa62a('0x23')](handleEntityNotFound(_0x59c951,null))[_0xa62a('0x23')](saveUpdates(_0x195c9e[_0xa62a('0x45')],null))[_0xa62a('0x23')](respondWithResult(_0x59c951,null))[_0xa62a('0x42')](handleError(_0x59c951,null));};exports['destroy']=function(_0x38dd6d,_0x1ca635){return db['VoiceQueuesLog'][_0xa62a('0x46')]({'where':{'id':_0x38dd6d[_0xa62a('0x47')]['id']}})[_0xa62a('0x23')](handleEntityNotFound(_0x1ca635,null))[_0xa62a('0x23')](removeEntity(_0x1ca635,null))['catch'](handleError(_0x1ca635,null));};
\ No newline at end of file
+var _0xfc0d=['stack','name','send','rawAttributes','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','type','VIRTUAL','options','VoiceQueuesLog','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error'];(function(_0x2311e1,_0x2cc608){var _0x3850b4=function(_0x22f210){while(--_0x22f210){_0x2311e1['push'](_0x2311e1['shift']());}};_0x3850b4(++_0x2cc608);}(_0xfc0d,0x6f));var _0xdfc0=function(_0x422743,_0x424588){_0x422743=_0x422743-0x0;var _0x132268=_0xfc0d[_0x422743];return _0x132268;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xdfc0('0x0'));var jsonpatch=require(_0xdfc0('0x1'));var rp=require(_0xdfc0('0x2'));var moment=require(_0xdfc0('0x3'));var BPromise=require(_0xdfc0('0x4'));var Mustache=require(_0xdfc0('0x5'));var util=require(_0xdfc0('0x6'));var path=require('path');var sox=require(_0xdfc0('0x7'));var csv=require(_0xdfc0('0x8'));var ejs=require(_0xdfc0('0x9'));var fs=require('fs');var fs_extra=require(_0xdfc0('0xa'));var _=require(_0xdfc0('0xb'));var squel=require('squel');var crypto=require(_0xdfc0('0xc'));var jsforce=require(_0xdfc0('0xd'));var deskjs=require(_0xdfc0('0xe'));var toCsv=require(_0xdfc0('0x8'));var querystring=require(_0xdfc0('0xf'));var Papa=require(_0xdfc0('0x10'));var Redis=require(_0xdfc0('0x11'));var authService=require(_0xdfc0('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdfc0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdfc0('0x14'))(_0xdfc0('0x15'));var utils=require(_0xdfc0('0x16'));var config=require(_0xdfc0('0x17'));var licenseUtil=require(_0xdfc0('0x18'));var db=require(_0xdfc0('0x19'))['db'];function respondWithStatusCode(_0x3e53bb,_0x543fa8){_0x543fa8=_0x543fa8||0xcc;return function(_0x2cd5a2){if(_0x2cd5a2){return _0x3e53bb[_0xdfc0('0x1a')](_0x543fa8);}return _0x3e53bb[_0xdfc0('0x1b')](_0x543fa8)[_0xdfc0('0x1c')]();};}function respondWithResult(_0x150383,_0xf24ef5){_0xf24ef5=_0xf24ef5||0xc8;return function(_0xa9fb82){if(_0xa9fb82){return _0x150383['status'](_0xf24ef5)[_0xdfc0('0x1d')](_0xa9fb82);}};}function respondWithFilteredResult(_0x15dcfb,_0x21045a){return function(_0x2da3f2){if(_0x2da3f2){var _0x64d4f8=typeof _0x21045a[_0xdfc0('0x1e')]===_0xdfc0('0x1f')&&typeof _0x21045a[_0xdfc0('0x20')]==='undefined';var _0x49c8bd=_0x2da3f2[_0xdfc0('0x21')];var _0x124826=_0x64d4f8?0x0:_0x21045a[_0xdfc0('0x1e')];var _0xd74955=_0x64d4f8?_0x2da3f2[_0xdfc0('0x21')]:_0x21045a[_0xdfc0('0x1e')]+_0x21045a[_0xdfc0('0x20')];var _0xa55bad;if(_0xd74955>=_0x49c8bd){_0xd74955=_0x49c8bd;_0xa55bad=0xc8;}else{_0xa55bad=0xce;}_0x15dcfb[_0xdfc0('0x1b')](_0xa55bad);return _0x15dcfb['set']('Content-Range',_0x124826+'-'+_0xd74955+'/'+_0x49c8bd)[_0xdfc0('0x1d')](_0x2da3f2);}return null;};}function patchUpdates(_0xbc24fc){return function(_0x1b1d3b){try{jsonpatch[_0xdfc0('0x22')](_0x1b1d3b,_0xbc24fc,!![]);}catch(_0x82dcce){return BPromise[_0xdfc0('0x23')](_0x82dcce);}return _0x1b1d3b[_0xdfc0('0x24')]();};}function saveUpdates(_0x374a79,_0x555b0a){return function(_0x58f9d2){if(_0x58f9d2){return _0x58f9d2[_0xdfc0('0x25')](_0x374a79)[_0xdfc0('0x26')](function(_0x32f072){return _0x32f072;});}return null;};}function removeEntity(_0x3c2bb6,_0x4c69fd){return function(_0x369980){if(_0x369980){return _0x369980[_0xdfc0('0x27')]()[_0xdfc0('0x26')](function(){_0x3c2bb6[_0xdfc0('0x1b')](0xcc)[_0xdfc0('0x1c')]();});}};}function handleEntityNotFound(_0xd0979e,_0x263c0d){return function(_0x229988){if(!_0x229988){_0xd0979e['sendStatus'](0x194);}return _0x229988;};}function handleError(_0x4dbdb5,_0x3a2d77){_0x3a2d77=_0x3a2d77||0x1f4;return function(_0x68327e){logger[_0xdfc0('0x28')](_0x68327e[_0xdfc0('0x29')]);if(_0x68327e[_0xdfc0('0x2a')]){delete _0x68327e[_0xdfc0('0x2a')];}_0x4dbdb5[_0xdfc0('0x1b')](_0x3a2d77)[_0xdfc0('0x2b')](_0x68327e);};}exports['index']=function(_0x43fed4,_0x57c970){var _0x45f0de={},_0x51639f={},_0x5c6650={'count':0x0,'rows':[]};var _0x26e3ec=_['map'](db['VoiceQueuesLog'][_0xdfc0('0x2c')],function(_0x5263f5){return{'name':_0x5263f5['fieldName'],'type':_0x5263f5['type'][_0xdfc0('0x2d')]};});_0x51639f[_0xdfc0('0x2e')]=_['map'](_0x26e3ec,'name');_0x51639f[_0xdfc0('0x2f')]=_[_0xdfc0('0x30')](_0x43fed4[_0xdfc0('0x2f')]);_0x51639f['filters']=_[_0xdfc0('0x31')](_0x51639f[_0xdfc0('0x2e')],_0x51639f[_0xdfc0('0x2f')]);_0x45f0de['attributes']=_[_0xdfc0('0x31')](_0x51639f[_0xdfc0('0x2e')],qs['fields'](_0x43fed4['query']['fields']));_0x45f0de['attributes']=_0x45f0de[_0xdfc0('0x32')][_0xdfc0('0x33')]?_0x45f0de[_0xdfc0('0x32')]:_0x51639f['model'];if(!_0x43fed4[_0xdfc0('0x2f')][_0xdfc0('0x34')](_0xdfc0('0x35'))){_0x45f0de[_0xdfc0('0x20')]=qs['limit'](_0x43fed4['query'][_0xdfc0('0x20')]);_0x45f0de[_0xdfc0('0x1e')]=qs[_0xdfc0('0x1e')](_0x43fed4[_0xdfc0('0x2f')][_0xdfc0('0x1e')]);}_0x45f0de[_0xdfc0('0x36')]=qs[_0xdfc0('0x37')](_0x43fed4['query'][_0xdfc0('0x37')]);_0x45f0de['where']=qs['filters'](_[_0xdfc0('0x38')](_0x43fed4['query'],_0x51639f[_0xdfc0('0x39')]),_0x26e3ec);if(_0x43fed4[_0xdfc0('0x2f')][_0xdfc0('0x3a')]){_0x45f0de[_0xdfc0('0x3b')]=_[_0xdfc0('0x3c')](_0x45f0de[_0xdfc0('0x3b')],{'$or':_['map'](_0x26e3ec,function(_0x2e01a3){if(_0x2e01a3[_0xdfc0('0x3d')]!==_0xdfc0('0x3e')){var _0x5ef53a={};_0x5ef53a[_0x2e01a3['name']]={'$like':'%'+_0x43fed4[_0xdfc0('0x2f')][_0xdfc0('0x3a')]+'%'};return _0x5ef53a;}})});}_0x45f0de=_[_0xdfc0('0x3c')]({},_0x45f0de,_0x43fed4[_0xdfc0('0x3f')]);var _0xa34209={'where':_0x45f0de['where']};return db[_0xdfc0('0x40')]['count'](_0xa34209)['then'](function(_0xdf7226){_0x5c6650['count']=_0xdf7226;if(_0x43fed4['query'][_0xdfc0('0x41')]){_0x45f0de[_0xdfc0('0x42')]=[{'all':!![]}];}return db[_0xdfc0('0x40')][_0xdfc0('0x43')](_0x45f0de);})[_0xdfc0('0x26')](function(_0x9f68a5){_0x5c6650[_0xdfc0('0x44')]=_0x9f68a5;return _0x5c6650;})['then'](respondWithFilteredResult(_0x57c970,_0x45f0de))[_0xdfc0('0x45')](handleError(_0x57c970,null));};exports[_0xdfc0('0x46')]=function(_0x3ed53f,_0x3edc03){var _0x4b709a={'raw':!![],'where':{'id':_0x3ed53f[_0xdfc0('0x47')]['id']}},_0x598da8={};_0x598da8['model']=_[_0xdfc0('0x30')](db['VoiceQueuesLog']['rawAttributes']);_0x598da8[_0xdfc0('0x2f')]=_['keys'](_0x3ed53f[_0xdfc0('0x2f')]);_0x598da8[_0xdfc0('0x39')]=_[_0xdfc0('0x31')](_0x598da8[_0xdfc0('0x2e')],_0x598da8[_0xdfc0('0x2f')]);_0x4b709a[_0xdfc0('0x32')]=_[_0xdfc0('0x31')](_0x598da8[_0xdfc0('0x2e')],qs[_0xdfc0('0x48')](_0x3ed53f[_0xdfc0('0x2f')][_0xdfc0('0x48')]));_0x4b709a[_0xdfc0('0x32')]=_0x4b709a[_0xdfc0('0x32')][_0xdfc0('0x33')]?_0x4b709a['attributes']:_0x598da8[_0xdfc0('0x2e')];if(_0x3ed53f['query'][_0xdfc0('0x41')]){_0x4b709a['include']=[{'all':!![]}];}_0x4b709a=_['merge']({},_0x4b709a,_0x3ed53f[_0xdfc0('0x3f')]);return db[_0xdfc0('0x40')][_0xdfc0('0x49')](_0x4b709a)[_0xdfc0('0x26')](handleEntityNotFound(_0x3edc03,null))[_0xdfc0('0x26')](respondWithResult(_0x3edc03,null))[_0xdfc0('0x45')](handleError(_0x3edc03,null));};exports['create']=function(_0x5cc806,_0x5caab7){return db['VoiceQueuesLog'][_0xdfc0('0x4a')](_0x5cc806['body'],{})[_0xdfc0('0x26')](respondWithResult(_0x5caab7,0xc9))['catch'](handleError(_0x5caab7,null));};exports[_0xdfc0('0x25')]=function(_0x4935b4,_0x122b46){if(_0x4935b4[_0xdfc0('0x4b')]['id']){delete _0x4935b4['body']['id'];}return db[_0xdfc0('0x40')][_0xdfc0('0x49')]({'where':{'id':_0x4935b4[_0xdfc0('0x47')]['id']}})[_0xdfc0('0x26')](handleEntityNotFound(_0x122b46,null))[_0xdfc0('0x26')](saveUpdates(_0x4935b4[_0xdfc0('0x4b')],null))[_0xdfc0('0x26')](respondWithResult(_0x122b46,null))[_0xdfc0('0x45')](handleError(_0x122b46,null));};exports[_0xdfc0('0x27')]=function(_0x5ea963,_0x1606eb){return db[_0xdfc0('0x40')][_0xdfc0('0x49')]({'where':{'id':_0x5ea963[_0xdfc0('0x47')]['id']}})['then'](handleEntityNotFound(_0x1606eb,null))[_0xdfc0('0x26')](removeEntity(_0x1606eb,null))[_0xdfc0('0x45')](handleError(_0x1606eb,null));};
\ No newline at end of file
index 9a03b3d..702718b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0214=['dtm','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','VoiceQueuesLog','event_dtm','event'];(function(_0x1cec47,_0x544ca3){var _0x44ba2e=function(_0xa4d126){while(--_0xa4d126){_0x1cec47['push'](_0x1cec47['shift']());}};_0x44ba2e(++_0x544ca3);}(_0x0214,0x15f));var _0x4021=function(_0x30b145,_0x5b1406){_0x30b145=_0x30b145-0x0;var _0x5acce4=_0x0214[_0x30b145];return _0x5acce4;};'use strict';var _=require(_0x4021('0x0'));var util=require(_0x4021('0x1'));var logger=require(_0x4021('0x2'))(_0x4021('0x3'));var moment=require(_0x4021('0x4'));var BPromise=require(_0x4021('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4021('0x6'));var rimraf=require(_0x4021('0x7'));var config=require(_0x4021('0x8'));var attributes=require(_0x4021('0x9'));module['exports']=function(_0x48996c,_0x352f4e){return _0x48996c['define'](_0x4021('0xa'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x4021('0xb'),'fields':[_0x4021('0xc'),_0x4021('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xf54b=['moment','request-promise','path','../../config/environment','./voiceQueuesLog.attributes','exports','voice_queues_log','event_dtm','event','dtm','util','../../config/logger','api'];(function(_0x246148,_0x418283){var _0x39ec99=function(_0x569714){while(--_0x569714){_0x246148['push'](_0x246148['shift']());}};_0x39ec99(++_0x418283);}(_0xf54b,0xa6));var _0xbf54=function(_0x13f0a2,_0x1b3623){_0x13f0a2=_0x13f0a2-0x0;var _0x4cd0b4=_0xf54b[_0x13f0a2];return _0x4cd0b4;};'use strict';var _=require('lodash');var util=require(_0xbf54('0x0'));var logger=require(_0xbf54('0x1'))(_0xbf54('0x2'));var moment=require(_0xbf54('0x3'));var BPromise=require('bluebird');var rp=require(_0xbf54('0x4'));var fs=require('fs');var path=require(_0xbf54('0x5'));var rimraf=require('rimraf');var config=require(_0xbf54('0x6'));var attributes=require(_0xbf54('0x7'));module[_0xbf54('0x8')]=function(_0xcdebb4,_0x1bdc8a){return _0xcdebb4['define']('VoiceQueuesLog',attributes,{'tableName':_0xbf54('0x9'),'paranoid':![],'indexes':[{'name':_0xbf54('0xa'),'fields':[_0xbf54('0xb'),_0xbf54('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 730140d..4e4692e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46b9=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x46b9,0x199));var _0x946b=function(_0x3b3810,_0x16ee8c){_0x3b3810=_0x3b3810-0x0;var _0x2830b9=_0x46b9[_0x3b3810];return _0x2830b9;};'use strict';var _=require(_0x946b('0x0'));var util=require('util');var moment=require(_0x946b('0x1'));var BPromise=require(_0x946b('0x2'));var rs=require(_0x946b('0x3'));var fs=require('fs');var Redis=require(_0x946b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x946b('0x5'));var logger=require(_0x946b('0x6'))(_0x946b('0x7'));var config=require(_0x946b('0x8'));var jayson=require(_0x946b('0x9'));var client=jayson[_0x946b('0xa')][_0x946b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23cec8,_0xfded5d,_0x24a92e){return new BPromise(function(_0x4d2f0d,_0x572ea3){return client[_0x946b('0xc')](_0x23cec8,_0x24a92e)[_0x946b('0xd')](function(_0x3fc05a){logger[_0x946b('0xe')](_0x946b('0xf'),_0xfded5d,'request\x20sent');logger[_0x946b('0x10')](_0x946b('0x11'),_0xfded5d,_0x946b('0x12'),JSON[_0x946b('0x13')](_0x3fc05a));if(_0x3fc05a[_0x946b('0x14')]){if(_0x3fc05a[_0x946b('0x14')]['code']===0x1f4){logger[_0x946b('0x14')](_0x946b('0xf'),_0xfded5d,_0x3fc05a[_0x946b('0x14')][_0x946b('0x15')]);return _0x572ea3(_0x3fc05a[_0x946b('0x14')][_0x946b('0x15')]);}logger[_0x946b('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0xfded5d,_0x3fc05a[_0x946b('0x14')][_0x946b('0x15')]);return _0x4d2f0d(_0x3fc05a[_0x946b('0x14')][_0x946b('0x15')]);}else{logger[_0x946b('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0xfded5d,_0x946b('0x12'));_0x4d2f0d(_0x3fc05a[_0x946b('0x16')][_0x946b('0x15')]);}})['catch'](function(_0x4ab0ba){logger[_0x946b('0x14')]('VoiceQueuesLog,\x20%s,\x20%s',_0xfded5d,_0x4ab0ba);_0x572ea3(_0x4ab0ba);});});}
\ No newline at end of file
+var _0xe62a=['catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x5e46cf,_0x3e538b){var _0x3f850a=function(_0x3eb0cd){while(--_0x3eb0cd){_0x5e46cf['push'](_0x5e46cf['shift']());}};_0x3f850a(++_0x3e538b);}(_0xe62a,0x143));var _0xae62=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe62a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xae62('0x0'));var util=require(_0xae62('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae62('0x2'));var db=require(_0xae62('0x3'))['db'];var utils=require(_0xae62('0x4'));var logger=require(_0xae62('0x5'))(_0xae62('0x6'));var config=require(_0xae62('0x7'));var jayson=require(_0xae62('0x8'));var client=jayson[_0xae62('0x9')][_0xae62('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x362244,_0x2ef966,_0x2a8d24){return new BPromise(function(_0x891ab3,_0x1b9f67){return client[_0xae62('0xb')](_0x362244,_0x2a8d24)[_0xae62('0xc')](function(_0x17e9e2){logger[_0xae62('0xd')](_0xae62('0xe'),_0x2ef966,_0xae62('0xf'));logger[_0xae62('0x10')](_0xae62('0x11'),_0x2ef966,_0xae62('0xf'),JSON[_0xae62('0x12')](_0x17e9e2));if(_0x17e9e2[_0xae62('0x13')]){if(_0x17e9e2[_0xae62('0x13')]['code']===0x1f4){logger[_0xae62('0x13')](_0xae62('0xe'),_0x2ef966,_0x17e9e2[_0xae62('0x13')][_0xae62('0x14')]);return _0x1b9f67(_0x17e9e2[_0xae62('0x13')]['message']);}logger['error'](_0xae62('0xe'),_0x2ef966,_0x17e9e2[_0xae62('0x13')][_0xae62('0x14')]);return _0x891ab3(_0x17e9e2['error'][_0xae62('0x14')]);}else{logger[_0xae62('0xd')](_0xae62('0xe'),_0x2ef966,_0xae62('0xf'));_0x891ab3(_0x17e9e2[_0xae62('0x15')]['message']);}})[_0xae62('0x16')](function(_0x50d730){logger[_0xae62('0x13')](_0xae62('0xe'),_0x2ef966,_0x50d730);_0x1b9f67(_0x50d730);});});}
\ No newline at end of file
index ffc507a..b5de629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1b=['create','runTranscribe','put','delete','destroy','util','connect-timeout','express','Router','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','index','/:id','download','/:id/downloads','downloadTranscribe','post'];(function(_0x316af9,_0x4120f8){var _0x7f6dd9=function(_0x129cdf){while(--_0x129cdf){_0x316af9['push'](_0x316af9['shift']());}};_0x7f6dd9(++_0x4120f8);}(_0x6f1b,0x135));var _0xb6f1=function(_0x42dc1a,_0x3f2b2a){_0x42dc1a=_0x42dc1a-0x0;var _0x131a7a=_0x6f1b[_0x42dc1a];return _0x131a7a;};'use strict';var multer=require('multer');var util=require(_0xb6f1('0x0'));var path=require('path');var timeout=require(_0xb6f1('0x1'));var express=require(_0xb6f1('0x2'));var router=express[_0xb6f1('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb6f1('0x4'));var config=require('../../config/environment');var controller=require(_0xb6f1('0x5'));router[_0xb6f1('0x6')]('/',auth[_0xb6f1('0x7')](),controller[_0xb6f1('0x8')]);router[_0xb6f1('0x6')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xb6f1('0x6')](_0xb6f1('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xb6f1('0x6')]('/:id/download',auth[_0xb6f1('0x7')](),controller[_0xb6f1('0xa')]);router['get'](_0xb6f1('0xb'),controller['downloads']);router[_0xb6f1('0x6')]('/:id/transcribe',auth[_0xb6f1('0x7')](),controller[_0xb6f1('0xc')]);router[_0xb6f1('0xd')]('/',auth['isAuthenticated'](),controller[_0xb6f1('0xe')]);router[_0xb6f1('0xd')]('/:id/transcribe',auth[_0xb6f1('0x7')](),controller[_0xb6f1('0xf')]);router[_0xb6f1('0x10')](_0xb6f1('0x9'),auth[_0xb6f1('0x7')](),controller['update']);router[_0xb6f1('0x11')](_0xb6f1('0x9'),auth[_0xb6f1('0x7')](),controller[_0xb6f1('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xd24b=['exports','multer','path','connect-timeout','fs-extra','../../config/environment','isAuthenticated','get','/describe','describe','/:id','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','create','put','update','destroy'];(function(_0x511bd1,_0x223e5b){var _0x4c48ec=function(_0x31814e){while(--_0x31814e){_0x511bd1['push'](_0x511bd1['shift']());}};_0x4c48ec(++_0x223e5b);}(_0xd24b,0x85));var _0xbd24=function(_0x39fcf9,_0x26f83f){_0x39fcf9=_0x39fcf9-0x0;var _0x35fcce=_0xd24b[_0x39fcf9];return _0x35fcce;};'use strict';var multer=require(_0xbd24('0x0'));var util=require('util');var path=require(_0xbd24('0x1'));var timeout=require(_0xbd24('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbd24('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbd24('0x4'));var controller=require('./voiceRecording.controller');router['get']('/',auth[_0xbd24('0x5')](),controller['index']);router[_0xbd24('0x6')](_0xbd24('0x7'),auth[_0xbd24('0x5')](),controller[_0xbd24('0x8')]);router['get'](_0xbd24('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xbd24('0x6')](_0xbd24('0xa'),auth[_0xbd24('0x5')](),controller[_0xbd24('0xb')]);router[_0xbd24('0x6')](_0xbd24('0xc'),controller[_0xbd24('0xd')]);router[_0xbd24('0x6')](_0xbd24('0xe'),auth[_0xbd24('0x5')](),controller[_0xbd24('0xf')]);router[_0xbd24('0x10')]('/',auth[_0xbd24('0x5')](),controller[_0xbd24('0x11')]);router[_0xbd24('0x10')](_0xbd24('0xe'),auth[_0xbd24('0x5')](),controller['runTranscribe']);router[_0xbd24('0x12')]('/:id',auth[_0xbd24('0x5')](),controller[_0xbd24('0x13')]);router['delete'](_0xbd24('0x9'),auth[_0xbd24('0x5')](),controller[_0xbd24('0x14')]);module[_0xbd24('0x15')]=router;
\ No newline at end of file
index 2c52c7e..c79b815 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(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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 d59d21f..8d6e130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfb8=['Sequelize','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','File:\x20\x22','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','findOne','Setting','transcribe','transcribeAccountId','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','data1','transcribeRegion','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','updateAttributes','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','aws-sdk','ioredis','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','update','destroy','then','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','differenceBy','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','VoiceRecording','findAll','rows','show','include','find','catch','create','body','describe','../../components/encryptor','uniqueid','params','value','format','%s.cypher','decryptFile','secrets','recording','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','download','downloads','sequelize','MD5','col','$and','push','existsSync'];(function(_0x57fd1f,_0x124056){var _0x59ee7c=function(_0xcdaf66){while(--_0xcdaf66){_0x57fd1f['push'](_0x57fd1f['shift']());}};_0x59ee7c(++_0x124056);}(_0xcfb8,0x1ec));var _0x8cfb=function(_0x2bee57,_0x43a2d2){_0x2bee57=_0x2bee57-0x0;var _0x2015a2=_0xcfb8[_0x2bee57];return _0x2015a2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8cfb('0x0'));var zipdir=require(_0x8cfb('0x1'));var jsonpatch=require(_0x8cfb('0x2'));var rp=require(_0x8cfb('0x3'));var moment=require(_0x8cfb('0x4'));var BPromise=require(_0x8cfb('0x5'));var Mustache=require(_0x8cfb('0x6'));var util=require(_0x8cfb('0x7'));var path=require(_0x8cfb('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8cfb('0x9'));var _=require(_0x8cfb('0xa'));var squel=require(_0x8cfb('0xb'));var crypto=require(_0x8cfb('0xc'));var jsforce=require(_0x8cfb('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8cfb('0xe'));var Papa=require(_0x8cfb('0xf'));var AWS=require(_0x8cfb('0x10'));var uuidv4=require('uuid/v4');var Redis=require(_0x8cfb('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8cfb('0x12'))(_0x8cfb('0x13'));var utils=require(_0x8cfb('0x14'));var config=require(_0x8cfb('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x380987,_0x218ff1){_0x218ff1=_0x218ff1||0xcc;return function(_0x18409c){if(_0x18409c){return _0x380987['sendStatus'](_0x218ff1);}return _0x380987[_0x8cfb('0x16')](_0x218ff1)[_0x8cfb('0x17')]();};}function respondWithResult(_0x381430,_0x2c1075){_0x2c1075=_0x2c1075||0xc8;return function(_0x5f3674){if(_0x5f3674){return _0x381430[_0x8cfb('0x16')](_0x2c1075)[_0x8cfb('0x18')](_0x5f3674);}};}function respondWithFilteredResult(_0x99cda1,_0x70b217){return function(_0x3722e8){if(_0x3722e8){var _0x37a6fc=typeof _0x70b217['offset']===_0x8cfb('0x19')&&typeof _0x70b217['limit']==='undefined';var _0x5ae646=_0x3722e8[_0x8cfb('0x1a')];var _0x5bbc45=_0x37a6fc?0x0:_0x70b217[_0x8cfb('0x1b')];var _0x17ddd8=_0x37a6fc?_0x3722e8['count']:_0x70b217[_0x8cfb('0x1b')]+_0x70b217[_0x8cfb('0x1c')];var _0x3fcda3;if(_0x17ddd8>=_0x5ae646){_0x17ddd8=_0x5ae646;_0x3fcda3=0xc8;}else{_0x3fcda3=0xce;}_0x99cda1[_0x8cfb('0x16')](_0x3fcda3);return _0x99cda1[_0x8cfb('0x1d')](_0x8cfb('0x1e'),_0x5bbc45+'-'+_0x17ddd8+'/'+_0x5ae646)['json'](_0x3722e8);}return null;};}function patchUpdates(_0x5231af){return function(_0x531dca){try{jsonpatch['apply'](_0x531dca,_0x5231af,!![]);}catch(_0x5e479f){return BPromise[_0x8cfb('0x1f')](_0x5e479f);}return _0x531dca['save']();};}function saveUpdates(_0x555283,_0x466e7e){return function(_0x226574){if(_0x226574){return _0x226574[_0x8cfb('0x20')](_0x555283)['then'](function(_0x3901c4){return _0x3901c4;});}return null;};}function removeEntity(_0x120dfd,_0x105c2b){return function(_0x10441a){if(_0x10441a){return _0x10441a[_0x8cfb('0x21')]()[_0x8cfb('0x22')](function(){_0x120dfd[_0x8cfb('0x16')](0xcc)[_0x8cfb('0x17')]();});}};}function handleEntityNotFound(_0x31cdaf,_0x4b6c71){return function(_0x13481b){if(!_0x13481b){_0x31cdaf[_0x8cfb('0x23')](0x194);}return _0x13481b;};}function handleError(_0x1cf448,_0x5d9da4){_0x5d9da4=_0x5d9da4||0x1f4;return function(_0x51d36a){logger['error'](_0x51d36a[_0x8cfb('0x24')]);if(_0x51d36a['name']){delete _0x51d36a[_0x8cfb('0x25')];}_0x1cf448['status'](_0x5d9da4)[_0x8cfb('0x26')](_0x51d36a);};}exports[_0x8cfb('0x27')]=function(_0x4aab1e,_0x241dd1){var _0x18faca={},_0x1e2596={},_0x5e0bfe={'count':0x0,'rows':[]};var _0x3f232a=_[_0x8cfb('0x28')](db['VoiceRecording'][_0x8cfb('0x29')],function(_0x4206ba){return{'name':_0x4206ba[_0x8cfb('0x2a')],'type':_0x4206ba[_0x8cfb('0x2b')]['key']};});_0x1e2596['model']=_[_0x8cfb('0x2c')](_[_0x8cfb('0x28')](_0x3f232a,_0x8cfb('0x25')),['format']);_0x1e2596[_0x8cfb('0x2d')]=_[_0x8cfb('0x2e')](_0x4aab1e[_0x8cfb('0x2d')]);_0x1e2596[_0x8cfb('0x2f')]=_['intersection'](_0x1e2596[_0x8cfb('0x30')],_0x1e2596[_0x8cfb('0x2d')]);_0x18faca['attributes']=_[_0x8cfb('0x31')](_0x1e2596['model'],qs[_0x8cfb('0x32')](_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x32')]));_0x18faca[_0x8cfb('0x33')]=_0x18faca[_0x8cfb('0x33')][_0x8cfb('0x34')]?_0x18faca['attributes']:_0x1e2596[_0x8cfb('0x30')];if(!_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x35')](_0x8cfb('0x36'))){_0x18faca['limit']=qs['limit'](_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x1c')]);_0x18faca[_0x8cfb('0x1b')]=qs[_0x8cfb('0x1b')](_0x4aab1e['query']['offset']);}_0x18faca[_0x8cfb('0x37')]=qs[_0x8cfb('0x38')](_0x4aab1e[_0x8cfb('0x2d')]['sort']);_0x18faca[_0x8cfb('0x39')]=qs[_0x8cfb('0x2f')](_[_0x8cfb('0x3a')](_0x4aab1e[_0x8cfb('0x2d')],_0x1e2596['filters']),_0x3f232a);if(_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x3b')]){_0x18faca[_0x8cfb('0x39')]=_['merge'](_0x18faca[_0x8cfb('0x39')],{'$or':_[_0x8cfb('0x28')](_0x3f232a,function(_0x59cc19){if(_0x59cc19[_0x8cfb('0x2b')]!==_0x8cfb('0x3c')){var _0x3ae1e3={};_0x3ae1e3[_0x59cc19[_0x8cfb('0x25')]]={'$like':'%'+_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x3b')]+'%'};return _0x3ae1e3;}})});}_0x18faca=_[_0x8cfb('0x3d')]({},_0x18faca,_0x4aab1e[_0x8cfb('0x3e')]);var _0x214aab={'where':_0x18faca['where']};return db['VoiceRecording'][_0x8cfb('0x1a')](_0x214aab)[_0x8cfb('0x22')](function(_0x1e2fc6){_0x5e0bfe[_0x8cfb('0x1a')]=_0x1e2fc6;if(_0x4aab1e[_0x8cfb('0x2d')][_0x8cfb('0x3f')]){_0x18faca['include']=[{'all':!![]}];}return db[_0x8cfb('0x40')][_0x8cfb('0x41')](_0x18faca);})['then'](function(_0x3f9390){_0x5e0bfe[_0x8cfb('0x42')]=_0x3f9390;return _0x5e0bfe;})[_0x8cfb('0x22')](respondWithFilteredResult(_0x241dd1,_0x18faca))['catch'](handleError(_0x241dd1,null));};exports[_0x8cfb('0x43')]=function(_0x2fe1ef,_0x162a54){var _0x15fec2={'raw':![],'where':{'id':_0x2fe1ef['params']['id']}},_0x323432={};_0x323432[_0x8cfb('0x30')]=_[_0x8cfb('0x2e')](db[_0x8cfb('0x40')][_0x8cfb('0x29')]);_0x323432['query']=_['keys'](_0x2fe1ef['query']);_0x323432[_0x8cfb('0x2f')]=_[_0x8cfb('0x31')](_0x323432[_0x8cfb('0x30')],_0x323432['query']);_0x15fec2[_0x8cfb('0x33')]=_[_0x8cfb('0x31')](_0x323432['model'],qs[_0x8cfb('0x32')](_0x2fe1ef[_0x8cfb('0x2d')]['fields']));_0x15fec2[_0x8cfb('0x33')]=_0x15fec2[_0x8cfb('0x33')][_0x8cfb('0x34')]?_0x15fec2[_0x8cfb('0x33')]:_0x323432['model'];if(_0x2fe1ef[_0x8cfb('0x2d')][_0x8cfb('0x3f')]){_0x15fec2[_0x8cfb('0x44')]=[{'all':!![]}];}_0x15fec2=_[_0x8cfb('0x3d')]({},_0x15fec2,_0x2fe1ef[_0x8cfb('0x3e')]);return db[_0x8cfb('0x40')][_0x8cfb('0x45')](_0x15fec2)[_0x8cfb('0x22')](handleEntityNotFound(_0x162a54,null))[_0x8cfb('0x22')](respondWithResult(_0x162a54,null))[_0x8cfb('0x46')](handleError(_0x162a54,null));};exports[_0x8cfb('0x47')]=function(_0x213738,_0xd372d3){return db[_0x8cfb('0x40')][_0x8cfb('0x47')](_0x213738['body'],{})[_0x8cfb('0x22')](respondWithResult(_0xd372d3,0xc9))[_0x8cfb('0x46')](handleError(_0xd372d3,null));};exports['update']=function(_0x29e52f,_0x383371){if(_0x29e52f[_0x8cfb('0x48')]['id']){delete _0x29e52f[_0x8cfb('0x48')]['id'];}return db[_0x8cfb('0x40')]['find']({'where':{'id':_0x29e52f['params']['id']}})[_0x8cfb('0x22')](handleEntityNotFound(_0x383371,null))[_0x8cfb('0x22')](saveUpdates(_0x29e52f['body'],null))[_0x8cfb('0x22')](respondWithResult(_0x383371,null))[_0x8cfb('0x46')](handleError(_0x383371,null));};exports[_0x8cfb('0x49')]=function(_0x1d74e1,_0x55478f){return db['VoiceRecording'][_0x8cfb('0x49')]()['then'](respondWithResult(_0x55478f,null))[_0x8cfb('0x46')](handleError(_0x55478f,null));};exports['download']=function(_0x156764,_0x398c7f,_0x15a492){var _0xbc81a7=require(_0x8cfb('0x4a'));var _0x26354a=![];var _0xb1b1a4={};if(_0x156764['query']['type']&&_0x156764[_0x8cfb('0x2d')][_0x8cfb('0x2b')]===_0x8cfb('0x4b')){_0xb1b1a4['uniqueid']=_0x156764[_0x8cfb('0x4c')]['id'];}else{_0xb1b1a4['id']=_0x156764['params']['id'];}return db[_0x8cfb('0x40')][_0x8cfb('0x45')]({'where':_0xb1b1a4,'attributes':['id',_0x8cfb('0x4d')],'raw':!![]})[_0x8cfb('0x22')](handleEntityNotFound(_0x398c7f,null))[_0x8cfb('0x22')](function(_0x540ced){if(_0x540ced){var _0x1caf2c=_0x540ced[_0x8cfb('0x4d')];var _0x5278d6=util[_0x8cfb('0x4e')](_0x8cfb('0x4f'),_0x1caf2c);if(fs['existsSync'](_0x5278d6)){_0x26354a=!![];return _0xbc81a7[_0x8cfb('0x50')](_0x5278d6,_0x1caf2c,config[_0x8cfb('0x51')][_0x8cfb('0x52')])['then'](function(){return _0x540ced;});}return _0x540ced;}})[_0x8cfb('0x22')](function(_0x38e61c){if(_0x38e61c){var _0x3f89bf=_0x38e61c[_0x8cfb('0x4d')];if(!fs['existsSync'](_0x3f89bf)){throw new db['Sequelize'][(_0x8cfb('0x53'))](_0x8cfb('0x54'));}if(_0x38e61c['filename']){return _0x398c7f['download'](_0x3f89bf,_0x38e61c[_0x8cfb('0x55')]+path[_0x8cfb('0x56')](_0x3f89bf),function(){if(_0x26354a){fs[_0x8cfb('0x57')](_0x3f89bf);}});}else{return _0x398c7f[_0x8cfb('0x58')](_0x3f89bf,function(_0x460407){if(_0x26354a){fs[_0x8cfb('0x57')](_0x3f89bf);}});}}})[_0x8cfb('0x46')](function(_0x463ea7){if(_0x463ea7['message']===_0x8cfb('0x54')){_0x398c7f[_0x8cfb('0x16')](0x194)[_0x8cfb('0x26')]('Not\x20found');}else{return handleError(_0x398c7f,null);}});};exports[_0x8cfb('0x59')]=function(_0x52eba8,_0x508bab,_0x4dd91f){var _0x2bad75=require(_0x8cfb('0x4a'));var _0x3fb1dc=![];var _0x5e9191={'$and':[db['sequelize'][_0x8cfb('0x39')](db[_0x8cfb('0x5a')]['fn'](_0x8cfb('0x5b'),db[_0x8cfb('0x5a')][_0x8cfb('0x5c')](_0x8cfb('0x4b'))),_0x52eba8[_0x8cfb('0x2d')]['token'])]};if(_0x52eba8[_0x8cfb('0x2d')][_0x8cfb('0x2b')]&&_0x52eba8[_0x8cfb('0x2d')][_0x8cfb('0x2b')]===_0x8cfb('0x4b')){_0x5e9191[_0x8cfb('0x5d')]['push']({'uniqueid':_0x52eba8['params']['id']});}else{_0x5e9191[_0x8cfb('0x5d')][_0x8cfb('0x5e')]({'id':_0x52eba8[_0x8cfb('0x4c')]['id']});}return db[_0x8cfb('0x40')]['find']({'where':_0x5e9191,'attributes':['id',_0x8cfb('0x4d')],'raw':!![]})[_0x8cfb('0x22')](handleEntityNotFound(_0x508bab,null))[_0x8cfb('0x22')](function(_0x3e5f88){if(_0x3e5f88){var _0x2c39a9=util[_0x8cfb('0x4e')]('%s.cypher',_0x3e5f88[_0x8cfb('0x4d')]);if(fs[_0x8cfb('0x5f')](_0x2c39a9)){_0x3fb1dc=!![];return _0x2bad75[_0x8cfb('0x50')](_0x2c39a9,_0x3e5f88[_0x8cfb('0x4d')],config[_0x8cfb('0x51')][_0x8cfb('0x52')])[_0x8cfb('0x22')](function(){return _0x3e5f88;});}return _0x3e5f88;}})[_0x8cfb('0x22')](function(_0x60fed2){if(_0x60fed2){if(!fs['existsSync'](_0x60fed2[_0x8cfb('0x4d')])){throw new db[(_0x8cfb('0x60'))][(_0x8cfb('0x53'))](_0x8cfb('0x54'));}if(_0x60fed2[_0x8cfb('0x55')]){return _0x508bab[_0x8cfb('0x58')](_0x60fed2[_0x8cfb('0x4d')],_0x60fed2[_0x8cfb('0x55')]+path[_0x8cfb('0x56')](_0x60fed2[_0x8cfb('0x4d')]),function(){if(_0x3fb1dc){fs[_0x8cfb('0x57')](_0x60fed2[_0x8cfb('0x4d')]);}});}else{return _0x508bab[_0x8cfb('0x58')](_0x60fed2['value'],function(_0x3628e4){if(_0x3fb1dc){fs[_0x8cfb('0x57')](_0x60fed2[_0x8cfb('0x4d')]);}});}}})[_0x8cfb('0x46')](handleError(_0x508bab,null));};exports[_0x8cfb('0x21')]=function(_0xece45a,_0x51365b){return db[_0x8cfb('0x40')][_0x8cfb('0x45')]({'where':{'id':_0xece45a[_0x8cfb('0x4c')]['id']}})[_0x8cfb('0x22')](function(_0x262632){if(_['isNil'](_0x262632)){throw new ReferenceError('Entity\x20not\x20found');}return _0x262632;})[_0x8cfb('0x22')](function(_0xbdc993){var _0x1bea90=_0xbdc993[_0x8cfb('0x4d')];logger[_0x8cfb('0x61')](_0x8cfb('0x62'),_0x1bea90);if(!_['isNil'](_0xbdc993[_0x8cfb('0x4d')])&&fs['existsSync'](_0x1bea90)){logger['info']('File:\x20\x22'+_0x1bea90+_0x8cfb('0x63'));fs[_0x8cfb('0x64')](_0x1bea90);}_0x1bea90=_0x1bea90+_0x8cfb('0x65');if(!_[_0x8cfb('0x66')](_0xbdc993['value'])&&fs['existsSync'](_0x1bea90)){logger[_0x8cfb('0x61')](_0x8cfb('0x67')+_0x1bea90+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x8cfb('0x64')](_0x1bea90);}return _0xbdc993;})[_0x8cfb('0x22')](function(_0x47f248){if(!_0x47f248)throw new InternalError();return _0x47f248[_0x8cfb('0x21')]();})['then'](function(){_0x51365b[_0x8cfb('0x16')](0xcc)['end']();})[_0x8cfb('0x46')](handleError(_0x51365b,null));};function getBucketslist(_0x3219eb,_0x4c4b4b,_0x36a87a){return new Promise(function(_0x3012f5,_0x139803){var _0x2b71e5=new AWS['S3']({'accessKeyId':_0x4c4b4b,'secretAccessKey':_0x3219eb,'region':_0x36a87a});_0x2b71e5['listBuckets']({},function(_0x31ff87,_0x4a78e7){if(_0x31ff87){return _0x139803(_0x31ff87);}else{return _0x3012f5(_0x4a78e7);}});});}function createBucket(_0x22f60b,_0x114797,_0x561001,_0x37b9f6){return new Promise(function(_0x37a183,_0x57d55a){var _0x40164d=new AWS['S3']({'accessKeyId':_0x114797,'secretAccessKey':_0x22f60b,'region':_0x561001});_0x40164d[_0x8cfb('0x68')]({'Bucket':_0x37b9f6},function(_0x201225,_0x75c7e8){if(_0x201225){return _0x57d55a(_0x201225);}else{return _0x37a183(_0x75c7e8);}});});}function uploadFile(_0x541f92,_0x3729df,_0x376684,_0x1dcabf,_0x2efb09,_0x809808){return new Promise(function(_0x2f0a47,_0x5eb1a8){var _0x12ac2c=new AWS['S3']({'accessKeyId':_0x3729df,'secretAccessKey':_0x541f92,'region':_0x376684});_0x12ac2c[_0x8cfb('0x69')]({'Bucket':_0x1dcabf,'Key':_0x2efb09,'Body':_0x809808},function(_0x42a880,_0x27ac47){if(_0x42a880){return _0x5eb1a8(_0x42a880);}else{return _0x2f0a47(_0x27ac47);}});});}function startTranscribe(_0x2d7a26,_0x418d74,_0x2786cf,_0x2651a5,_0x1666d3,_0x132785){return new Promise(function(_0x10cbef,_0x243758){var _0x1a544e=new AWS[(_0x8cfb('0x6a'))]({'accessKeyId':_0x418d74,'secretAccessKey':_0x2d7a26,'region':_0x2786cf});_0x1a544e[_0x8cfb('0x6b')]({'TranscriptionJobName':_0x2651a5,'LanguageCode':_0x1666d3,'Media':{'MediaFileUri':_0x132785}},function(_0x15067f,_0x3ab385){if(_0x15067f){return _0x243758(_0x15067f);}else{return _0x10cbef(_0x3ab385);}});});}function transcribe(_0x41c2be,_0x51afe3,_0x1819d8,_0x80cf3,_0x430b73,_0x2e6d19,_0x58aea0){return new Promise(function(_0x23c2c8,_0x36cee2){var _0x150d24={};logger[_0x8cfb('0x61')](util['format'](_0x8cfb('0x6c'),_0x41c2be,_0x430b73));return uploadFile(_0x51afe3,_0x1819d8,_0x80cf3,_0x430b73,path['basename'](_0x2e6d19),fs[_0x8cfb('0x6d')](_0x2e6d19))['then'](function(_0x42bdfc){logger[_0x8cfb('0x61')](util['format'](_0x8cfb('0x6e'),_0x41c2be,_0x430b73,_0x42bdfc['Location']));_0x150d24[_0x8cfb('0x6f')]=_0x42bdfc['Bucket'];_0x150d24[_0x8cfb('0x70')]=_0x42bdfc[_0x8cfb('0x71')];logger[_0x8cfb('0x61')](util[_0x8cfb('0x4e')](_0x8cfb('0x72'),_0x41c2be));return startTranscribe(_0x51afe3,_0x1819d8,_0x80cf3,uuidv4(),_0x58aea0,_0x42bdfc[_0x8cfb('0x71')]);})[_0x8cfb('0x22')](function(_0x577e22){logger['info'](util[_0x8cfb('0x4e')](_0x8cfb('0x73'),_0x41c2be,_0x577e22[_0x8cfb('0x74')][_0x8cfb('0x75')]));_0x150d24[_0x8cfb('0x76')]=_0x577e22['TranscriptionJob']['TranscriptionJobName'];_0x150d24[_0x8cfb('0x77')]=_0x577e22[_0x8cfb('0x74')]['TranscriptionJobStatus'];return _0x23c2c8(_0x150d24);})['catch'](function(_0x469b48){return _0x36cee2(_0x469b48);});});}exports[_0x8cfb('0x78')]=function(_0x1f1d24,_0x2d82ae,_0x36e742){var _0x48ba49;var _0x346a49;var _0x1fc2f5;var _0x17732a=require(_0x8cfb('0x4a'));return db[_0x8cfb('0x40')][_0x8cfb('0x79')]({'where':{'id':_0x1f1d24[_0x8cfb('0x4c')]['id']}})[_0x8cfb('0x22')](function(_0x4e16ec){if(_0x4e16ec){var _0x11ee69=util[_0x8cfb('0x4e')](_0x8cfb('0x4f'),_0x4e16ec['value']);if(fs[_0x8cfb('0x5f')](_0x11ee69)){cypher=!![];return _0x17732a[_0x8cfb('0x50')](_0x11ee69,_0x4e16ec[_0x8cfb('0x4d')],config['secrets']['recording'])[_0x8cfb('0x22')](function(){return _0x4e16ec;});}return _0x4e16ec;}})['then'](function(_0x5ce40a){if(!_0x5ce40a){throw new db[(_0x8cfb('0x60'))]['ValidationError']('Voice\x20Recording\x20not\x20found');}_0x346a49=_0x5ce40a;return db[_0x8cfb('0x7a')][_0x8cfb('0x79')]({'where':{'id':0x1}});})[_0x8cfb('0x22')](handleEntityNotFound(_0x2d82ae,null))[_0x8cfb('0x22')](function(_0x341968){if(_0x341968){_0x48ba49=_0x341968;if(!_0x48ba49[_0x8cfb('0x7b')]||!_0x48ba49[_0x8cfb('0x7c')]||!_0x48ba49['transcribeRegion']||!_0x48ba49[_0x8cfb('0x7d')]||!_0x48ba49['bucket']){throw new db[(_0x8cfb('0x60'))][(_0x8cfb('0x53'))](_0x8cfb('0x7e'));}if(_0x1f1d24['body'][_0x8cfb('0x7f')]&&(!_0x48ba49[_0x8cfb('0x80')]||!_0x48ba49[_0x8cfb('0x81')]||!_0x48ba49[_0x8cfb('0x82')]||!_0x48ba49['language']||!_0x48ba49['bucket'])){throw new db[(_0x8cfb('0x60'))][(_0x8cfb('0x53'))](_0x8cfb('0x83'));}return db[_0x8cfb('0x84')][_0x8cfb('0x79')]({'where':{'id':_0x48ba49[_0x8cfb('0x7c')]}});}})[_0x8cfb('0x22')](function(_0x54f056){if(!_0x54f056){throw new db['Sequelize'][(_0x8cfb('0x53'))](_0x8cfb('0x85'));}if(!_0x54f056['data1']||!_0x54f056[_0x8cfb('0x86')]){throw new db['Sequelize'][(_0x8cfb('0x53'))]('Cloud\x20Provider\x20not\x20configured');}_0x1fc2f5=_0x54f056;return getBucketslist(_0x1fc2f5[_0x8cfb('0x87')],_0x1fc2f5['data2'],_0x48ba49[_0x8cfb('0x88')]);})[_0x8cfb('0x22')](function(_0x48e673){if(_0x48e673&&_0x48e673['Buckets']){var _0x2cbe03=_['find'](_0x48e673['Buckets'],function(_0x3b86e8){return _0x3b86e8[_0x8cfb('0x89')]===_0x48ba49[_0x8cfb('0x6f')];});if(!_0x2cbe03){logger[_0x8cfb('0x61')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x1f1d24[_0x8cfb('0x4c')]['id'],_0x48ba49[_0x8cfb('0x6f')]));return createBucket(_0x1fc2f5[_0x8cfb('0x87')],_0x1fc2f5[_0x8cfb('0x86')],_0x48ba49[_0x8cfb('0x88')],_0x48ba49[_0x8cfb('0x6f')]);}logger['info'](util['format'](_0x8cfb('0x8a'),_0x1f1d24[_0x8cfb('0x4c')]['id'],_0x48ba49[_0x8cfb('0x6f')]));return;}})[_0x8cfb('0x22')](function(_0xff8469){if(_0x346a49[_0x8cfb('0x77')]===_0x8cfb('0x8b')){return transcribe(_0x1f1d24[_0x8cfb('0x4c')]['id'],_0x1fc2f5[_0x8cfb('0x87')],_0x1fc2f5[_0x8cfb('0x86')],_0x48ba49['transcribeRegion'],_0x48ba49['bucket'],_0x346a49[_0x8cfb('0x4d')],_0x48ba49[_0x8cfb('0x7d')]);}else{logger[_0x8cfb('0x61')](util[_0x8cfb('0x4e')](_0x8cfb('0x8c'),_0x1f1d24[_0x8cfb('0x4c')]['id']));return{'transcribeStatus':_0x8cfb('0x8d')};}})[_0x8cfb('0x22')](function(_0x322ac8){if(_0x322ac8){_0x322ac8['tempSentiment']=_0x1f1d24[_0x8cfb('0x48')][_0x8cfb('0x7f')];return _0x346a49[_0x8cfb('0x8e')](_0x322ac8);}})[_0x8cfb('0x22')](respondWithResult(_0x2d82ae,null))[_0x8cfb('0x46')](handleError(_0x2d82ae,null));};function writeFile(_0x464fd9,_0x53e386){return new Promise(function(_0x22d3e4,_0x44e68c){fs['writeFile'](_0x53e386,_0x464fd9,function(_0x4019c0,_0x398731){if(_0x4019c0){return _0x44e68c(_0x4019c0);}else{return _0x22d3e4(_0x398731);}});});}exports[_0x8cfb('0x8f')]=function(_0x523967,_0x1ad256,_0xe2354a){return db[_0x8cfb('0x40')][_0x8cfb('0x79')]({'where':{'id':_0x523967[_0x8cfb('0x4c')]['id']}})[_0x8cfb('0x22')](handleEntityNotFound(_0x1ad256))[_0x8cfb('0x22')](function(_0x1d5ce6){if(_0x1d5ce6&&_0x1d5ce6[_0x8cfb('0x90')]){var _0x196791=_0x1d5ce6[_0x8cfb('0x90')];var _0x1aea00=config[_0x8cfb('0x91')]+_0x8cfb('0x92')+_0x1d5ce6['id']+'.txt';if(fs[_0x8cfb('0x5f')](_0x1aea00)){return _0x1aea00;}return writeFile(_0x196791,_0x1aea00)['then'](function(){return _0x1aea00;});}else{throw new db[(_0x8cfb('0x60'))][(_0x8cfb('0x53'))]('Transcript\x20not\x20available');}})[_0x8cfb('0x22')](function(_0x557242){return _0x1ad256[_0x8cfb('0x58')](_0x557242);})['catch'](handleError(_0x1ad256));};
\ No newline at end of file
+var _0xcaf7=['Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','map','VoiceRecording','rawAttributes','fieldName','type','key','differenceBy','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','catch','show','params','find','create','body','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','filename','unlink','message','Not\x20found','sequelize','MD5','$and','push','ValidationError','extname','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','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','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','findOne','Voice\x20Recording\x20not\x20found','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2'];(function(_0x145b0f,_0x262fe5){var _0x485251=function(_0x4ea9c2){while(--_0x4ea9c2){_0x145b0f['push'](_0x145b0f['shift']());}};_0x485251(++_0x262fe5);}(_0xcaf7,0xa1));var _0x7caf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xcaf7[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7caf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7caf('0x1'));var rp=require(_0x7caf('0x2'));var moment=require(_0x7caf('0x3'));var BPromise=require(_0x7caf('0x4'));var Mustache=require(_0x7caf('0x5'));var util=require('util');var path=require(_0x7caf('0x6'));var sox=require('sox');var csv=require(_0x7caf('0x7'));var ejs=require(_0x7caf('0x8'));var fs=require('fs');var fs_extra=require(_0x7caf('0x9'));var _=require(_0x7caf('0xa'));var squel=require(_0x7caf('0xb'));var crypto=require(_0x7caf('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7caf('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var AWS=require(_0x7caf('0xd'));var uuidv4=require(_0x7caf('0xe'));var Redis=require(_0x7caf('0xf'));var authService=require(_0x7caf('0x10'));var qs=require(_0x7caf('0x11'));var as=require(_0x7caf('0x12'));var hardwareService=require(_0x7caf('0x13'));var logger=require(_0x7caf('0x14'))(_0x7caf('0x15'));var utils=require(_0x7caf('0x16'));var config=require(_0x7caf('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e383e,_0x245f0a){_0x245f0a=_0x245f0a||0xcc;return function(_0x5638bb){if(_0x5638bb){return _0x5e383e[_0x7caf('0x18')](_0x245f0a);}return _0x5e383e[_0x7caf('0x19')](_0x245f0a)[_0x7caf('0x1a')]();};}function respondWithResult(_0x4932da,_0x2e270b){_0x2e270b=_0x2e270b||0xc8;return function(_0x19dd60){if(_0x19dd60){return _0x4932da['status'](_0x2e270b)[_0x7caf('0x1b')](_0x19dd60);}};}function respondWithFilteredResult(_0x10ef13,_0x37a1de){return function(_0x21fb6b){if(_0x21fb6b){var _0x1aa394=typeof _0x37a1de[_0x7caf('0x1c')]===_0x7caf('0x1d')&&typeof _0x37a1de[_0x7caf('0x1e')]===_0x7caf('0x1d');var _0x326952=_0x21fb6b[_0x7caf('0x1f')];var _0x42c650=_0x1aa394?0x0:_0x37a1de[_0x7caf('0x1c')];var _0xfaef4=_0x1aa394?_0x21fb6b[_0x7caf('0x1f')]:_0x37a1de[_0x7caf('0x1c')]+_0x37a1de['limit'];var _0x374e7e;if(_0xfaef4>=_0x326952){_0xfaef4=_0x326952;_0x374e7e=0xc8;}else{_0x374e7e=0xce;}_0x10ef13[_0x7caf('0x19')](_0x374e7e);return _0x10ef13[_0x7caf('0x20')](_0x7caf('0x21'),_0x42c650+'-'+_0xfaef4+'/'+_0x326952)[_0x7caf('0x1b')](_0x21fb6b);}return null;};}function patchUpdates(_0x8bc84e){return function(_0x246e7b){try{jsonpatch[_0x7caf('0x22')](_0x246e7b,_0x8bc84e,!![]);}catch(_0x242a37){return BPromise['reject'](_0x242a37);}return _0x246e7b['save']();};}function saveUpdates(_0x1b7aa0,_0x189422){return function(_0x216d37){if(_0x216d37){return _0x216d37[_0x7caf('0x23')](_0x1b7aa0)[_0x7caf('0x24')](function(_0x5dbfa5){return _0x5dbfa5;});}return null;};}function removeEntity(_0x7bbbfb,_0x57e844){return function(_0x77baa5){if(_0x77baa5){return _0x77baa5[_0x7caf('0x25')]()['then'](function(){_0x7bbbfb[_0x7caf('0x19')](0xcc)[_0x7caf('0x1a')]();});}};}function handleEntityNotFound(_0x62e9ee,_0x16fd08){return function(_0x4bb2bd){if(!_0x4bb2bd){_0x62e9ee[_0x7caf('0x18')](0x194);}return _0x4bb2bd;};}function handleError(_0x5b44ea,_0x5f4d45){_0x5f4d45=_0x5f4d45||0x1f4;return function(_0x46cdbd){logger[_0x7caf('0x26')](_0x46cdbd[_0x7caf('0x27')]);if(_0x46cdbd[_0x7caf('0x28')]){delete _0x46cdbd[_0x7caf('0x28')];}_0x5b44ea[_0x7caf('0x19')](_0x5f4d45)['send'](_0x46cdbd);};}exports['index']=function(_0x364566,_0x1cf512){var _0x2efc86={},_0x270bad={},_0x1e5492={'count':0x0,'rows':[]};var _0x4559ce=_[_0x7caf('0x29')](db[_0x7caf('0x2a')][_0x7caf('0x2b')],function(_0x441a16){return{'name':_0x441a16[_0x7caf('0x2c')],'type':_0x441a16[_0x7caf('0x2d')][_0x7caf('0x2e')]};});_0x270bad['model']=_[_0x7caf('0x2f')](_['map'](_0x4559ce,_0x7caf('0x28')),['format']);_0x270bad[_0x7caf('0x30')]=_[_0x7caf('0x31')](_0x364566[_0x7caf('0x30')]);_0x270bad[_0x7caf('0x32')]=_[_0x7caf('0x33')](_0x270bad[_0x7caf('0x34')],_0x270bad[_0x7caf('0x30')]);_0x2efc86[_0x7caf('0x35')]=_[_0x7caf('0x33')](_0x270bad[_0x7caf('0x34')],qs[_0x7caf('0x36')](_0x364566[_0x7caf('0x30')][_0x7caf('0x36')]));_0x2efc86[_0x7caf('0x35')]=_0x2efc86[_0x7caf('0x35')][_0x7caf('0x37')]?_0x2efc86['attributes']:_0x270bad[_0x7caf('0x34')];if(!_0x364566[_0x7caf('0x30')]['hasOwnProperty'](_0x7caf('0x38'))){_0x2efc86['limit']=qs['limit'](_0x364566[_0x7caf('0x30')]['limit']);_0x2efc86['offset']=qs[_0x7caf('0x1c')](_0x364566[_0x7caf('0x30')][_0x7caf('0x1c')]);}_0x2efc86[_0x7caf('0x39')]=qs[_0x7caf('0x3a')](_0x364566[_0x7caf('0x30')][_0x7caf('0x3a')]);_0x2efc86[_0x7caf('0x3b')]=qs['filters'](_['pick'](_0x364566['query'],_0x270bad['filters']),_0x4559ce);if(_0x364566[_0x7caf('0x30')][_0x7caf('0x3c')]){_0x2efc86[_0x7caf('0x3b')]=_[_0x7caf('0x3d')](_0x2efc86[_0x7caf('0x3b')],{'$or':_['map'](_0x4559ce,function(_0x378635){if(_0x378635[_0x7caf('0x2d')]!==_0x7caf('0x3e')){var _0x567fc6={};_0x567fc6[_0x378635['name']]={'$like':'%'+_0x364566['query']['filter']+'%'};return _0x567fc6;}})});}_0x2efc86=_['merge']({},_0x2efc86,_0x364566[_0x7caf('0x3f')]);var _0x29e026={'where':_0x2efc86[_0x7caf('0x3b')]};return db[_0x7caf('0x2a')][_0x7caf('0x1f')](_0x29e026)['then'](function(_0x38a00f){_0x1e5492['count']=_0x38a00f;if(_0x364566[_0x7caf('0x30')][_0x7caf('0x40')]){_0x2efc86['include']=[{'all':!![]}];}return db[_0x7caf('0x2a')]['findAll'](_0x2efc86);})['then'](function(_0x530b67){_0x1e5492['rows']=_0x530b67;return _0x1e5492;})[_0x7caf('0x24')](respondWithFilteredResult(_0x1cf512,_0x2efc86))[_0x7caf('0x41')](handleError(_0x1cf512,null));};exports[_0x7caf('0x42')]=function(_0x7fcc77,_0x4a549f){var _0x28c820={'raw':![],'where':{'id':_0x7fcc77[_0x7caf('0x43')]['id']}},_0x16fdb0={};_0x16fdb0['model']=_[_0x7caf('0x31')](db[_0x7caf('0x2a')][_0x7caf('0x2b')]);_0x16fdb0[_0x7caf('0x30')]=_[_0x7caf('0x31')](_0x7fcc77[_0x7caf('0x30')]);_0x16fdb0[_0x7caf('0x32')]=_[_0x7caf('0x33')](_0x16fdb0[_0x7caf('0x34')],_0x16fdb0[_0x7caf('0x30')]);_0x28c820['attributes']=_[_0x7caf('0x33')](_0x16fdb0[_0x7caf('0x34')],qs['fields'](_0x7fcc77[_0x7caf('0x30')][_0x7caf('0x36')]));_0x28c820[_0x7caf('0x35')]=_0x28c820[_0x7caf('0x35')][_0x7caf('0x37')]?_0x28c820[_0x7caf('0x35')]:_0x16fdb0[_0x7caf('0x34')];if(_0x7fcc77['query']['includeAll']){_0x28c820['include']=[{'all':!![]}];}_0x28c820=_['merge']({},_0x28c820,_0x7fcc77['options']);return db[_0x7caf('0x2a')][_0x7caf('0x44')](_0x28c820)[_0x7caf('0x24')](handleEntityNotFound(_0x4a549f,null))[_0x7caf('0x24')](respondWithResult(_0x4a549f,null))[_0x7caf('0x41')](handleError(_0x4a549f,null));};exports[_0x7caf('0x45')]=function(_0x46f8eb,_0x50a231){return db[_0x7caf('0x2a')]['create'](_0x46f8eb[_0x7caf('0x46')],{})[_0x7caf('0x24')](respondWithResult(_0x50a231,0xc9))[_0x7caf('0x41')](handleError(_0x50a231,null));};exports[_0x7caf('0x23')]=function(_0x2e40b1,_0xe925a7){if(_0x2e40b1['body']['id']){delete _0x2e40b1['body']['id'];}return db[_0x7caf('0x2a')][_0x7caf('0x44')]({'where':{'id':_0x2e40b1[_0x7caf('0x43')]['id']}})[_0x7caf('0x24')](handleEntityNotFound(_0xe925a7,null))['then'](saveUpdates(_0x2e40b1[_0x7caf('0x46')],null))[_0x7caf('0x24')](respondWithResult(_0xe925a7,null))[_0x7caf('0x41')](handleError(_0xe925a7,null));};exports[_0x7caf('0x47')]=function(_0x2cc15d,_0x1cd7c7){return db[_0x7caf('0x2a')]['describe']()['then'](respondWithResult(_0x1cd7c7,null))[_0x7caf('0x41')](handleError(_0x1cd7c7,null));};exports[_0x7caf('0x48')]=function(_0x59760c,_0x30b140,_0x4810c5){var _0x359c45=require(_0x7caf('0x49'));var _0x3befed=![];var _0x439353={};if(_0x59760c[_0x7caf('0x30')][_0x7caf('0x2d')]&&_0x59760c[_0x7caf('0x30')][_0x7caf('0x2d')]===_0x7caf('0x4a')){_0x439353[_0x7caf('0x4a')]=_0x59760c['params']['id'];}else{_0x439353['id']=_0x59760c[_0x7caf('0x43')]['id'];}return db[_0x7caf('0x2a')][_0x7caf('0x44')]({'where':_0x439353,'attributes':['id',_0x7caf('0x4b')],'raw':!![]})[_0x7caf('0x24')](handleEntityNotFound(_0x30b140,null))[_0x7caf('0x24')](function(_0x356e0e){if(_0x356e0e){var _0x4cf558=_0x356e0e[_0x7caf('0x4b')];var _0x39aa59=util[_0x7caf('0x4c')](_0x7caf('0x4d'),_0x4cf558);if(fs[_0x7caf('0x4e')](_0x39aa59)){_0x3befed=!![];return _0x359c45[_0x7caf('0x4f')](_0x39aa59,_0x4cf558,config[_0x7caf('0x50')][_0x7caf('0x51')])[_0x7caf('0x24')](function(){return _0x356e0e;});}return _0x356e0e;}})[_0x7caf('0x24')](function(_0x2635e6){if(_0x2635e6){var _0x4f6300=_0x2635e6[_0x7caf('0x4b')];if(!fs[_0x7caf('0x4e')](_0x4f6300)){throw new db[(_0x7caf('0x52'))]['ValidationError'](_0x7caf('0x53'));}if(_0x2635e6[_0x7caf('0x54')]){return _0x30b140['download'](_0x4f6300,_0x2635e6[_0x7caf('0x54')]+path['extname'](_0x4f6300),function(){if(_0x3befed){fs[_0x7caf('0x55')](_0x4f6300);}});}else{return _0x30b140[_0x7caf('0x48')](_0x4f6300,function(_0x7945ee){if(_0x3befed){fs[_0x7caf('0x55')](_0x4f6300);}});}}})[_0x7caf('0x41')](function(_0x565a5d){if(_0x565a5d[_0x7caf('0x56')]==='VoiceRecording\x20not\x20found'){_0x30b140[_0x7caf('0x19')](0x194)['send'](_0x7caf('0x57'));}else{return handleError(_0x30b140,null);}});};exports['downloads']=function(_0x28682b,_0x4aeafa,_0x43106b){var _0x56d13f=require('../../components/encryptor');var _0x78a099=![];var _0x364612={'$and':[db[_0x7caf('0x58')][_0x7caf('0x3b')](db['sequelize']['fn'](_0x7caf('0x59'),db[_0x7caf('0x58')]['col'](_0x7caf('0x4a'))),_0x28682b['query']['token'])]};if(_0x28682b[_0x7caf('0x30')][_0x7caf('0x2d')]&&_0x28682b[_0x7caf('0x30')][_0x7caf('0x2d')]===_0x7caf('0x4a')){_0x364612[_0x7caf('0x5a')]['push']({'uniqueid':_0x28682b[_0x7caf('0x43')]['id']});}else{_0x364612[_0x7caf('0x5a')][_0x7caf('0x5b')]({'id':_0x28682b[_0x7caf('0x43')]['id']});}return db['VoiceRecording'][_0x7caf('0x44')]({'where':_0x364612,'attributes':['id',_0x7caf('0x4b')],'raw':!![]})[_0x7caf('0x24')](handleEntityNotFound(_0x4aeafa,null))[_0x7caf('0x24')](function(_0x1f6621){if(_0x1f6621){var _0x10908b=util['format'](_0x7caf('0x4d'),_0x1f6621[_0x7caf('0x4b')]);if(fs[_0x7caf('0x4e')](_0x10908b)){_0x78a099=!![];return _0x56d13f[_0x7caf('0x4f')](_0x10908b,_0x1f6621[_0x7caf('0x4b')],config[_0x7caf('0x50')][_0x7caf('0x51')])['then'](function(){return _0x1f6621;});}return _0x1f6621;}})[_0x7caf('0x24')](function(_0x4ce4ca){if(_0x4ce4ca){if(!fs[_0x7caf('0x4e')](_0x4ce4ca[_0x7caf('0x4b')])){throw new db[(_0x7caf('0x52'))][(_0x7caf('0x5c'))](_0x7caf('0x53'));}if(_0x4ce4ca[_0x7caf('0x54')]){return _0x4aeafa['download'](_0x4ce4ca[_0x7caf('0x4b')],_0x4ce4ca[_0x7caf('0x54')]+path[_0x7caf('0x5d')](_0x4ce4ca[_0x7caf('0x4b')]),function(){if(_0x78a099){fs[_0x7caf('0x55')](_0x4ce4ca[_0x7caf('0x4b')]);}});}else{return _0x4aeafa[_0x7caf('0x48')](_0x4ce4ca[_0x7caf('0x4b')],function(_0x14cb0d){if(_0x78a099){fs[_0x7caf('0x55')](_0x4ce4ca[_0x7caf('0x4b')]);}});}}})[_0x7caf('0x41')](handleError(_0x4aeafa,null));};exports['destroy']=function(_0x5acf21,_0x24aab4){return db['VoiceRecording'][_0x7caf('0x44')]({'where':{'id':_0x5acf21[_0x7caf('0x43')]['id']}})[_0x7caf('0x24')](function(_0x3602af){if(_[_0x7caf('0x5e')](_0x3602af)){throw new ReferenceError('Entity\x20not\x20found');}return _0x3602af;})[_0x7caf('0x24')](function(_0x29224d){var _0x8a8767=_0x29224d['value'];logger[_0x7caf('0x5f')](_0x7caf('0x60'),_0x8a8767);if(!_[_0x7caf('0x5e')](_0x29224d[_0x7caf('0x4b')])&&fs[_0x7caf('0x4e')](_0x8a8767)){logger[_0x7caf('0x5f')](_0x7caf('0x61')+_0x8a8767+_0x7caf('0x62'));fs[_0x7caf('0x63')](_0x8a8767);}_0x8a8767=_0x8a8767+_0x7caf('0x64');if(!_['isNil'](_0x29224d[_0x7caf('0x4b')])&&fs[_0x7caf('0x4e')](_0x8a8767)){logger[_0x7caf('0x5f')](_0x7caf('0x61')+_0x8a8767+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x7caf('0x63')](_0x8a8767);}return _0x29224d;})[_0x7caf('0x24')](function(_0x4ba3cb){if(!_0x4ba3cb)throw new InternalError();return _0x4ba3cb[_0x7caf('0x25')]();})[_0x7caf('0x24')](function(){_0x24aab4[_0x7caf('0x19')](0xcc)[_0x7caf('0x1a')]();})[_0x7caf('0x41')](handleError(_0x24aab4,null));};function getBucketslist(_0x1a222e,_0x4290b2,_0x5ccf70){return new Promise(function(_0x415b10,_0x59dd7f){var _0x92c154=new AWS['S3']({'accessKeyId':_0x4290b2,'secretAccessKey':_0x1a222e,'region':_0x5ccf70});_0x92c154[_0x7caf('0x65')]({},function(_0x1ca562,_0x43bb98){if(_0x1ca562){return _0x59dd7f(_0x1ca562);}else{return _0x415b10(_0x43bb98);}});});}function createBucket(_0x4118a3,_0x49c8cd,_0x4d89cb,_0x20a0e2){return new Promise(function(_0xb8b5c,_0x162231){var _0xe95809=new AWS['S3']({'accessKeyId':_0x49c8cd,'secretAccessKey':_0x4118a3,'region':_0x4d89cb});_0xe95809[_0x7caf('0x66')]({'Bucket':_0x20a0e2},function(_0x440b5a,_0x5b4aad){if(_0x440b5a){return _0x162231(_0x440b5a);}else{return _0xb8b5c(_0x5b4aad);}});});}function uploadFile(_0x2347d1,_0x10dd98,_0x26ddd4,_0x2a2bea,_0x107ed5,_0x5b7173){return new Promise(function(_0x1b867d,_0x3dc260){var _0x5812e6=new AWS['S3']({'accessKeyId':_0x10dd98,'secretAccessKey':_0x2347d1,'region':_0x26ddd4});_0x5812e6[_0x7caf('0x67')]({'Bucket':_0x2a2bea,'Key':_0x107ed5,'Body':_0x5b7173},function(_0x3522e4,_0xc81e73){if(_0x3522e4){return _0x3dc260(_0x3522e4);}else{return _0x1b867d(_0xc81e73);}});});}function startTranscribe(_0x58fc19,_0xfaf591,_0x7f1ee,_0x3d5fd3,_0x417325,_0x4278b2){return new Promise(function(_0x2fe350,_0x266590){var _0x42fad8=new AWS[(_0x7caf('0x68'))]({'accessKeyId':_0xfaf591,'secretAccessKey':_0x58fc19,'region':_0x7f1ee});_0x42fad8[_0x7caf('0x69')]({'TranscriptionJobName':_0x3d5fd3,'LanguageCode':_0x417325,'Media':{'MediaFileUri':_0x4278b2}},function(_0x500631,_0x126e58){if(_0x500631){return _0x266590(_0x500631);}else{return _0x2fe350(_0x126e58);}});});}function transcribe(_0x4eb30d,_0x261961,_0x3c18dd,_0x354d5b,_0x2f8b94,_0x2ad9c0,_0x2f353d){return new Promise(function(_0x4a6e65,_0x1c4af2){var _0x4415db={};logger[_0x7caf('0x5f')](util['format'](_0x7caf('0x6a'),_0x4eb30d,_0x2f8b94));return uploadFile(_0x261961,_0x3c18dd,_0x354d5b,_0x2f8b94,path[_0x7caf('0x6b')](_0x2ad9c0),fs[_0x7caf('0x6c')](_0x2ad9c0))[_0x7caf('0x24')](function(_0x2a6bcb){logger['info'](util[_0x7caf('0x4c')](_0x7caf('0x6d'),_0x4eb30d,_0x2f8b94,_0x2a6bcb[_0x7caf('0x6e')]));_0x4415db[_0x7caf('0x6f')]=_0x2a6bcb['Bucket'];_0x4415db[_0x7caf('0x70')]=_0x2a6bcb['Location'];logger['info'](util[_0x7caf('0x4c')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x4eb30d));return startTranscribe(_0x261961,_0x3c18dd,_0x354d5b,uuidv4(),_0x2f353d,_0x2a6bcb[_0x7caf('0x6e')]);})[_0x7caf('0x24')](function(_0x44bdfd){logger[_0x7caf('0x5f')](util[_0x7caf('0x4c')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x4eb30d,_0x44bdfd[_0x7caf('0x71')][_0x7caf('0x72')]));_0x4415db[_0x7caf('0x73')]=_0x44bdfd['TranscriptionJob'][_0x7caf('0x72')];_0x4415db[_0x7caf('0x74')]=_0x44bdfd[_0x7caf('0x71')][_0x7caf('0x75')];return _0x4a6e65(_0x4415db);})['catch'](function(_0x218348){return _0x1c4af2(_0x218348);});});}exports['runTranscribe']=function(_0x29bf99,_0xf0233e,_0x22107f){var _0x421162;var _0x3d4591;var _0x4ee928;var _0x400587=require(_0x7caf('0x49'));return db[_0x7caf('0x2a')][_0x7caf('0x76')]({'where':{'id':_0x29bf99[_0x7caf('0x43')]['id']}})[_0x7caf('0x24')](function(_0x4645af){if(_0x4645af){var _0xfa4034=util[_0x7caf('0x4c')](_0x7caf('0x4d'),_0x4645af[_0x7caf('0x4b')]);if(fs[_0x7caf('0x4e')](_0xfa4034)){cypher=!![];return _0x400587[_0x7caf('0x4f')](_0xfa4034,_0x4645af[_0x7caf('0x4b')],config[_0x7caf('0x50')][_0x7caf('0x51')])[_0x7caf('0x24')](function(){return _0x4645af;});}return _0x4645af;}})[_0x7caf('0x24')](function(_0x241dbb){if(!_0x241dbb){throw new db[(_0x7caf('0x52'))][(_0x7caf('0x5c'))](_0x7caf('0x77'));}_0x3d4591=_0x241dbb;return db['Setting']['findOne']({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0xf0233e,null))['then'](function(_0x326db2){if(_0x326db2){_0x421162=_0x326db2;if(!_0x421162[_0x7caf('0x78')]||!_0x421162['transcribeAccountId']||!_0x421162[_0x7caf('0x79')]||!_0x421162[_0x7caf('0x7a')]||!_0x421162['bucket']){throw new db[(_0x7caf('0x52'))][(_0x7caf('0x5c'))](_0x7caf('0x7b'));}if(_0x29bf99[_0x7caf('0x46')][_0x7caf('0x7c')]&&(!_0x421162[_0x7caf('0x7d')]||!_0x421162[_0x7caf('0x7e')]||!_0x421162[_0x7caf('0x7f')]||!_0x421162[_0x7caf('0x7a')]||!_0x421162[_0x7caf('0x6f')])){throw new db['Sequelize'][(_0x7caf('0x5c'))](_0x7caf('0x80'));}return db[_0x7caf('0x81')][_0x7caf('0x76')]({'where':{'id':_0x421162['transcribeAccountId']}});}})['then'](function(_0x37bc05){if(!_0x37bc05){throw new db[(_0x7caf('0x52'))][(_0x7caf('0x5c'))](_0x7caf('0x82'));}if(!_0x37bc05[_0x7caf('0x83')]||!_0x37bc05[_0x7caf('0x84')]){throw new db[(_0x7caf('0x52'))][(_0x7caf('0x5c'))](_0x7caf('0x85'));}_0x4ee928=_0x37bc05;return getBucketslist(_0x4ee928['data1'],_0x4ee928['data2'],_0x421162[_0x7caf('0x79')]);})[_0x7caf('0x24')](function(_0xc272af){if(_0xc272af&&_0xc272af[_0x7caf('0x86')]){var _0x45b97a=_[_0x7caf('0x44')](_0xc272af[_0x7caf('0x86')],function(_0x5b7a12){return _0x5b7a12[_0x7caf('0x87')]===_0x421162['bucket'];});if(!_0x45b97a){logger[_0x7caf('0x5f')](util['format'](_0x7caf('0x88'),_0x29bf99[_0x7caf('0x43')]['id'],_0x421162[_0x7caf('0x6f')]));return createBucket(_0x4ee928[_0x7caf('0x83')],_0x4ee928[_0x7caf('0x84')],_0x421162[_0x7caf('0x79')],_0x421162[_0x7caf('0x6f')]);}logger['info'](util[_0x7caf('0x4c')](_0x7caf('0x89'),_0x29bf99[_0x7caf('0x43')]['id'],_0x421162[_0x7caf('0x6f')]));return;}})['then'](function(_0x2cc87c){if(_0x3d4591[_0x7caf('0x74')]===_0x7caf('0x8a')){return transcribe(_0x29bf99['params']['id'],_0x4ee928[_0x7caf('0x83')],_0x4ee928['data2'],_0x421162['transcribeRegion'],_0x421162[_0x7caf('0x6f')],_0x3d4591[_0x7caf('0x4b')],_0x421162['language']);}else{logger['info'](util[_0x7caf('0x4c')](_0x7caf('0x8b'),_0x29bf99[_0x7caf('0x43')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x7caf('0x24')](function(_0x4d008f){if(_0x4d008f){_0x4d008f[_0x7caf('0x8c')]=_0x29bf99[_0x7caf('0x46')][_0x7caf('0x7c')];return _0x3d4591[_0x7caf('0x8d')](_0x4d008f);}})['then'](respondWithResult(_0xf0233e,null))[_0x7caf('0x41')](handleError(_0xf0233e,null));};function writeFile(_0x23d3ba,_0x387546){return new Promise(function(_0x416642,_0x1c3fae){fs[_0x7caf('0x8e')](_0x387546,_0x23d3ba,function(_0x490599,_0x3c2f0b){if(_0x490599){return _0x1c3fae(_0x490599);}else{return _0x416642(_0x3c2f0b);}});});}exports[_0x7caf('0x8f')]=function(_0x38dc9d,_0x2cb80c,_0x1ad50b){return db[_0x7caf('0x2a')][_0x7caf('0x76')]({'where':{'id':_0x38dc9d[_0x7caf('0x43')]['id']}})['then'](handleEntityNotFound(_0x2cb80c))[_0x7caf('0x24')](function(_0x1f5448){if(_0x1f5448&&_0x1f5448['fileText']){var _0x311f06=_0x1f5448[_0x7caf('0x90')];var _0x32ab67=config['root']+_0x7caf('0x91')+_0x1f5448['id']+_0x7caf('0x92');if(fs['existsSync'](_0x32ab67)){return _0x32ab67;}return writeFile(_0x311f06,_0x32ab67)['then'](function(){return _0x32ab67;});}else{throw new db[(_0x7caf('0x52'))]['ValidationError']('Transcript\x20not\x20available');}})['then'](function(_0xc2ab79){return _0x2cb80c[_0x7caf('0x48')](_0xc2ab79);})[_0x7caf('0x41')](handleError(_0x2cb80c));};
\ No newline at end of file
index 955c656..563f4a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['transcribeStatus','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid'];(function(_0x2fde14,_0xb161dc){var _0x36bc78=function(_0xbd2420){while(--_0xbd2420){_0x2fde14['push'](_0x2fde14['shift']());}};_0x36bc78(++_0xb161dc);}(_0xe920,0xbe));var _0x0e92=function(_0x2ca2d0,_0x3ea8e4){_0x2ca2d0=_0x2ca2d0-0x0;var _0x521c23=_0xe920[_0x2ca2d0];return _0x521c23;};'use strict';var attributes=require(_0x0e92('0x0'));module[_0x0e92('0x1')]=function(_0x203091,_0x19781b){return _0x203091[_0x0e92('0x2')](_0x0e92('0x3'),attributes,{'tableName':_0x0e92('0x4'),'paranoid':![],'indexes':[{'name':_0x0e92('0x5'),'fields':[_0x0e92('0x5')]},{'name':_0x0e92('0x6'),'fields':['transcribeStatus']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd66c=['uniqueid','transcribeStatus','./voiceRecording.attributes','define','VoiceRecording'];(function(_0x566da6,_0x1db6a1){var _0x35dd63=function(_0x4670a8){while(--_0x4670a8){_0x566da6['push'](_0x566da6['shift']());}};_0x35dd63(++_0x1db6a1);}(_0xd66c,0x106));var _0xcd66=function(_0x4856ba,_0x3ab16d){_0x4856ba=_0x4856ba-0x0;var _0x3eed74=_0xd66c[_0x4856ba];return _0x3eed74;};'use strict';var attributes=require(_0xcd66('0x0'));module['exports']=function(_0x35f78b,_0x3d20e6){return _0x35f78b[_0xcd66('0x1')](_0xcd66('0x2'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0xcd66('0x3'),'fields':[_0xcd66('0x3')]},{'name':_0xcd66('0x4'),'fields':[_0xcd66('0x4')]}],'timestamps':!![]});};
\ No newline at end of file
index 4b91115..e6e51d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583c=['options','raw','where','attributes','limit','debug','stringify','catch','Setting','callRecordingEncryption','create','value','format','%s.cypher','encryptFile','secrets','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','error','message','result','UpdateVoiceRecording','VoiceRecording','body'];(function(_0x5e757c,_0x317644){var _0x2a0c4b=function(_0x4a0597){while(--_0x4a0597){_0x5e757c['push'](_0x5e757c['shift']());}};_0x2a0c4b(++_0x317644);}(_0x583c,0x12b));var _0xc583=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0x583c[_0x3ed054];return _0x16dd95;};'use strict';var _=require(_0xc583('0x0'));var util=require(_0xc583('0x1'));var moment=require(_0xc583('0x2'));var BPromise=require(_0xc583('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc583('0x4'));var db=require(_0xc583('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc583('0x6'));var config=require(_0xc583('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc583('0x8')][_0xc583('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2719df,_0x1dd37c,_0x48a8d4){return new BPromise(function(_0x21ed88,_0x26cec0){return client['request'](_0x2719df,_0x48a8d4)[_0xc583('0xa')](function(_0x24ab4f){logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,_0xc583('0xd'));logger['debug'](_0xc583('0xe'),_0x1dd37c,_0xc583('0xd'),JSON['stringify'](_0x24ab4f));if(_0x24ab4f[_0xc583('0xf')]){if(_0x24ab4f[_0xc583('0xf')]['code']===0x1f4){logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);return _0x26cec0(_0x24ab4f[_0xc583('0xf')][_0xc583('0x10')]);}logger[_0xc583('0xf')](_0xc583('0xc'),_0x1dd37c,_0x24ab4f[_0xc583('0xf')]['message']);return _0x21ed88(_0x24ab4f[_0xc583('0xf')]['message']);}else{logger[_0xc583('0xb')](_0xc583('0xc'),_0x1dd37c,'request\x20sent');_0x21ed88(_0x24ab4f[_0xc583('0x11')][_0xc583('0x10')]);}})['catch'](function(_0x7d1690){logger[_0xc583('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x1dd37c,_0x7d1690);_0x26cec0(_0x7d1690);});});}exports[_0xc583('0x12')]=function(_0x8a2d84){var _0x12aac2=this;return new Promise(function(_0x36e0fd,_0x5433ec){return db[_0xc583('0x13')]['update'](_0x8a2d84[_0xc583('0x14')],{'raw':_0x8a2d84[_0xc583('0x15')]?_0x8a2d84[_0xc583('0x15')][_0xc583('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8a2d84[_0xc583('0x15')]?_0x8a2d84[_0xc583('0x15')][_0xc583('0x17')]||null:null,'attributes':_0x8a2d84[_0xc583('0x15')]?_0x8a2d84[_0xc583('0x15')][_0xc583('0x18')]||null:null,'limit':_0x8a2d84[_0xc583('0x15')]?_0x8a2d84[_0xc583('0x15')][_0xc583('0x19')]||null:null})['then'](function(_0x542256){logger[_0xc583('0xb')](_0xc583('0x12'),_0x8a2d84);logger[_0xc583('0x1a')]('UpdateVoiceRecording',_0x8a2d84,JSON[_0xc583('0x1b')](_0x542256));_0x36e0fd(_0x542256);})[_0xc583('0x1c')](function(_0x37f156){logger[_0xc583('0xf')](_0xc583('0x12'),_0x37f156['message'],_0x8a2d84);_0x5433ec(_0x12aac2['error'](0x1f4,_0x37f156[_0xc583('0x10')]));});});};exports['CreateVoiceRecording']=function(_0x45ef74){var _0xcbe9b2=this;return new Promise(function(_0xbabf24,_0x1e7809){var _0x24aab5=require('../../components/encryptor');var _0x2dafb4;return db[_0xc583('0x1d')]['findOne']({'attributes':['id',_0xc583('0x1e')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x2c9088){_0x2dafb4=_0x2c9088;return db[_0xc583('0x13')][_0xc583('0x1f')](_0x45ef74[_0xc583('0x14')]);})[_0xc583('0xa')](function(_0x19079b){if(_0x2dafb4[_0xc583('0x1e')]&&fs['existsSync'](_0x19079b[_0xc583('0x20')])){var _0x390bc3=util[_0xc583('0x21')](_0xc583('0x22'),_0x19079b[_0xc583('0x20')]);return _0x24aab5[_0xc583('0x23')](_0x19079b['value'],_0x390bc3,config[_0xc583('0x24')]['recording'])['then'](function(){fs[_0xc583('0x25')](_0x19079b[_0xc583('0x20')]);logger[_0xc583('0xb')](_0xc583('0x26'));return _0x19079b;});}return _0x19079b;})[_0xc583('0xa')](function(_0x4a9679){logger[_0xc583('0xb')](_0xc583('0x27'),_0x45ef74);logger[_0xc583('0x1a')]('CreateVoiceRecording',_0x45ef74,JSON[_0xc583('0x1b')](_0x4a9679));_0xbabf24(_0x4a9679);})['catch'](function(_0x1aa62a){logger[_0xc583('0xf')](_0xc583('0x27'),_0x1aa62a[_0xc583('0x10')],_0x45ef74);_0x1e7809(_0xcbe9b2[_0xc583('0xf')](0x1f4,_0x1aa62a['message']));});});};
\ No newline at end of file
+var _0x3d04=['result','VoiceRecording','body','options','raw','where','attributes','limit','UpdateVoiceRecording','debug','catch','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','format','%s.cypher','value','encryptFile','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','stringify','error','VoiceRecording,\x20%s,\x20%s','message','info'];(function(_0x2730da,_0x1098bd){var _0xfe9991=function(_0x2ea521){while(--_0x2ea521){_0x2730da['push'](_0x2730da['shift']());}};_0xfe9991(++_0x1098bd);}(_0x3d04,0xbe));var _0x43d0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3d04[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var moment=require(_0x43d0('0x2'));var BPromise=require(_0x43d0('0x3'));var rs=require(_0x43d0('0x4'));var fs=require('fs');var Redis=require(_0x43d0('0x5'));var db=require(_0x43d0('0x6'))['db'];var utils=require(_0x43d0('0x7'));var logger=require('../../config/logger')(_0x43d0('0x8'));var config=require(_0x43d0('0x9'));var jayson=require(_0x43d0('0xa'));var client=jayson[_0x43d0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x484271,_0x50919e,_0x5efb95){return new BPromise(function(_0x457550,_0x3344d3){return client[_0x43d0('0xc')](_0x484271,_0x5efb95)[_0x43d0('0xd')](function(_0x44a763){logger['info']('VoiceRecording,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'));logger['debug']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x50919e,_0x43d0('0xe'),JSON[_0x43d0('0xf')](_0x44a763));if(_0x44a763[_0x43d0('0x10')]){if(_0x44a763[_0x43d0('0x10')]['code']===0x1f4){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x44a763['error'][_0x43d0('0x12')]);return _0x3344d3(_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);}logger['error'](_0x43d0('0x11'),_0x50919e,_0x44a763[_0x43d0('0x10')][_0x43d0('0x12')]);return _0x457550(_0x44a763['error'][_0x43d0('0x12')]);}else{logger[_0x43d0('0x13')](_0x43d0('0x11'),_0x50919e,_0x43d0('0xe'));_0x457550(_0x44a763[_0x43d0('0x14')]['message']);}})['catch'](function(_0x1e91a7){logger[_0x43d0('0x10')](_0x43d0('0x11'),_0x50919e,_0x1e91a7);_0x3344d3(_0x1e91a7);});});}exports['UpdateVoiceRecording']=function(_0x2c641e){var _0x532402=this;return new Promise(function(_0x2c9d06,_0x468ca2){return db[_0x43d0('0x15')]['update'](_0x2c641e[_0x43d0('0x16')],{'raw':_0x2c641e[_0x43d0('0x17')]?_0x2c641e['options'][_0x43d0('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x19')]||null:null,'attributes':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x1a')]||null:null,'limit':_0x2c641e[_0x43d0('0x17')]?_0x2c641e[_0x43d0('0x17')][_0x43d0('0x1b')]||null:null})[_0x43d0('0xd')](function(_0x19d2ff){logger[_0x43d0('0x13')](_0x43d0('0x1c'),_0x2c641e);logger[_0x43d0('0x1d')]('UpdateVoiceRecording',_0x2c641e,JSON[_0x43d0('0xf')](_0x19d2ff));_0x2c9d06(_0x19d2ff);})[_0x43d0('0x1e')](function(_0x509041){logger[_0x43d0('0x10')]('UpdateVoiceRecording',_0x509041[_0x43d0('0x12')],_0x2c641e);_0x468ca2(_0x532402[_0x43d0('0x10')](0x1f4,_0x509041['message']));});});};exports[_0x43d0('0x1f')]=function(_0x238c64){var _0x5ac4c0=this;return new Promise(function(_0x12df30,_0x4692bc){var _0x22ae3c=require('../../components/encryptor');var _0x447725;return db[_0x43d0('0x20')][_0x43d0('0x21')]({'attributes':['id',_0x43d0('0x22')],'where':{'id':0x1},'raw':!![]})[_0x43d0('0xd')](function(_0x440ecb){_0x447725=_0x440ecb;return db[_0x43d0('0x15')]['create'](_0x238c64[_0x43d0('0x16')]);})[_0x43d0('0xd')](function(_0x6bc471){if(_0x447725['callRecordingEncryption']&&fs['existsSync'](_0x6bc471['value'])){var _0x3c1ea3=util[_0x43d0('0x23')](_0x43d0('0x24'),_0x6bc471[_0x43d0('0x25')]);return _0x22ae3c[_0x43d0('0x26')](_0x6bc471[_0x43d0('0x25')],_0x3c1ea3,config['secrets'][_0x43d0('0x27')])[_0x43d0('0xd')](function(){fs[_0x43d0('0x28')](_0x6bc471[_0x43d0('0x25')]);logger[_0x43d0('0x13')](_0x43d0('0x29'));return _0x6bc471;});}return _0x6bc471;})[_0x43d0('0xd')](function(_0x1bdd74){logger[_0x43d0('0x13')](_0x43d0('0x1f'),_0x238c64);logger[_0x43d0('0x1d')]('CreateVoiceRecording',_0x238c64,JSON[_0x43d0('0xf')](_0x1bdd74));_0x12df30(_0x1bdd74);})[_0x43d0('0x1e')](function(_0x45ec78){logger[_0x43d0('0x10')]('CreateVoiceRecording',_0x45ec78[_0x43d0('0x12')],_0x238c64);_0x4692bc(_0x5ac4c0['error'](0x1f4,_0x45ec78[_0x43d0('0x12')]));});});};
\ No newline at end of file
index 21c164d..7401e5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f36=['isAuthenticated','index','/:id','post','create','put','update','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get'];(function(_0x1887a2,_0x4b5762){var _0x4755d4=function(_0x398455){while(--_0x398455){_0x1887a2['push'](_0x1887a2['shift']());}};_0x4755d4(++_0x4b5762);}(_0x2f36,0x6d));var _0x62f3=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x2f36[_0xae7c2f];return _0x5d7001;};'use strict';var multer=require('multer');var util=require(_0x62f3('0x0'));var path=require(_0x62f3('0x1'));var timeout=require(_0x62f3('0x2'));var express=require(_0x62f3('0x3'));var router=express[_0x62f3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x62f3('0x5'));var interaction=require(_0x62f3('0x6'));var config=require(_0x62f3('0x7'));var controller=require(_0x62f3('0x8'));router[_0x62f3('0x9')]('/',auth[_0x62f3('0xa')](),controller[_0x62f3('0xb')]);router[_0x62f3('0x9')]('/describe',auth[_0x62f3('0xa')](),controller['describe']);router[_0x62f3('0x9')](_0x62f3('0xc'),auth[_0x62f3('0xa')](),controller['show']);router[_0x62f3('0xd')]('/',auth['isAuthenticated'](),controller[_0x62f3('0xe')]);router[_0x62f3('0xf')]('/:id',auth[_0x62f3('0xa')](),controller[_0x62f3('0x10')]);router['delete'](_0x62f3('0xc'),auth[_0x62f3('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3e4e=['describe','/:id','show','create','put','update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','/describe'];(function(_0x418f0a,_0x21137f){var _0xa6b49=function(_0x3b6802){while(--_0x3b6802){_0x418f0a['push'](_0x418f0a['shift']());}};_0xa6b49(++_0x21137f);}(_0x3e4e,0xc3));var _0xe3e4=function(_0x5ba395,_0xf96adf){_0x5ba395=_0x5ba395-0x0;var _0x2b1f90=_0x3e4e[_0x5ba395];return _0x2b1f90;};'use strict';var multer=require(_0xe3e4('0x0'));var util=require('util');var path=require(_0xe3e4('0x1'));var timeout=require(_0xe3e4('0x2'));var express=require(_0xe3e4('0x3'));var router=express['Router']();var fs_extra=require(_0xe3e4('0x4'));var auth=require(_0xe3e4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceTransferReport.controller');router[_0xe3e4('0x6')]('/',auth[_0xe3e4('0x7')](),controller['index']);router[_0xe3e4('0x6')](_0xe3e4('0x8'),auth[_0xe3e4('0x7')](),controller[_0xe3e4('0x9')]);router[_0xe3e4('0x6')](_0xe3e4('0xa'),auth['isAuthenticated'](),controller[_0xe3e4('0xb')]);router['post']('/',auth[_0xe3e4('0x7')](),controller[_0xe3e4('0xc')]);router[_0xe3e4('0xd')](_0xe3e4('0xa'),auth['isAuthenticated'](),controller[_0xe3e4('0xe')]);router[_0xe3e4('0xf')]('/:id',auth[_0xe3e4('0x7')](),controller[_0xe3e4('0x10')]);module['exports']=router;
\ No newline at end of file
index e7113e1..02cb3fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda4f=['sequelize','moment','STRING','ENUM'];(function(_0x69d6c5,_0x26d921){var _0x19b1e7=function(_0x46a259){while(--_0x46a259){_0x69d6c5['push'](_0x69d6c5['shift']());}};_0x19b1e7(++_0x26d921);}(_0xda4f,0x1cc));var _0xfda4=function(_0x45368c,_0x338d45){_0x45368c=_0x45368c-0x0;var _0x298f9e=_0xda4f[_0x45368c];return _0x298f9e;};'use strict';var Sequelize=require(_0xfda4('0x0'));var moment=require(_0xfda4('0x1'));module['exports']={'type':{'type':Sequelize['ENUM']('blind','attended')},'result':{'type':Sequelize[_0xfda4('0x2')]},'transfererchannel':{'type':Sequelize[_0xfda4('0x2')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xfda4('0x2')]},'transfererconnectedlinenum':{'type':Sequelize[_0xfda4('0x2')]},'transfererconnectedlinename':{'type':Sequelize[_0xfda4('0x2')]},'transfereraccountcode':{'type':Sequelize[_0xfda4('0x2')]},'transferercontext':{'type':Sequelize[_0xfda4('0x2')]},'transfererexten':{'type':Sequelize[_0xfda4('0x2')]},'transfererlinkedid':{'type':Sequelize[_0xfda4('0x2')]},'transfereechannel':{'type':Sequelize[_0xfda4('0x2')]},'transfereecalleridnum':{'type':Sequelize[_0xfda4('0x2')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xfda4('0x2')]},'transfereeconnectedlinename':{'type':Sequelize[_0xfda4('0x2')]},'transfereeaccountcode':{'type':Sequelize[_0xfda4('0x2')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xfda4('0x2')]},'transfereelinkedid':{'type':Sequelize[_0xfda4('0x2')]},'isexternal':{'type':Sequelize[_0xfda4('0x3')]('Yes','No')},'context':{'type':Sequelize[_0xfda4('0x2')]},'extension':{'type':Sequelize[_0xfda4('0x2')]}};
\ No newline at end of file
+var _0xacee=['STRING','sequelize','moment','exports','ENUM'];(function(_0x258724,_0x401ecf){var _0x1e9362=function(_0x3f78eb){while(--_0x3f78eb){_0x258724['push'](_0x258724['shift']());}};_0x1e9362(++_0x401ecf);}(_0xacee,0x9c));var _0xeace=function(_0xe38a23,_0x317f94){_0xe38a23=_0xe38a23-0x0;var _0x52b846=_0xacee[_0xe38a23];return _0x52b846;};'use strict';var Sequelize=require(_0xeace('0x0'));var moment=require(_0xeace('0x1'));module[_0xeace('0x2')]={'type':{'type':Sequelize[_0xeace('0x3')]('blind','attended')},'result':{'type':Sequelize[_0xeace('0x4')]},'transfererchannel':{'type':Sequelize[_0xeace('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xeace('0x4')]},'transferercalleridname':{'type':Sequelize[_0xeace('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xeace('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0xeace('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xeace('0x4')]},'transferercontext':{'type':Sequelize[_0xeace('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0xeace('0x4')]},'transfereechannel':{'type':Sequelize[_0xeace('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0xeace('0x4')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xeace('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0xeace('0x4')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0xeace('0x4')]},'transfereeexten':{'type':Sequelize[_0xeace('0x4')]},'transfereelinkedid':{'type':Sequelize[_0xeace('0x4')]},'isexternal':{'type':Sequelize[_0xeace('0x3')]('Yes','No')},'context':{'type':Sequelize[_0xeace('0x4')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ec9c699..cf6c015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af2=['desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','VoiceTransferReport','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','crypto'];(function(_0x467746,_0x52f989){var _0x1222e2=function(_0x30febe){while(--_0x30febe){_0x467746['push'](_0x467746['shift']());}};_0x1222e2(++_0x52f989);}(_0x4af2,0x1f3));var _0x24af=function(_0x24101d,_0x5f0411){_0x24101d=_0x24101d-0x0;var _0x4c484c=_0x4af2[_0x24101d];return _0x4c484c;};'use strict';var emlformat=require(_0x24af('0x0'));var rimraf=require(_0x24af('0x1'));var zipdir=require(_0x24af('0x2'));var jsonpatch=require(_0x24af('0x3'));var rp=require('request-promise');var moment=require(_0x24af('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x24af('0x5'));var path=require(_0x24af('0x6'));var sox=require(_0x24af('0x7'));var csv=require(_0x24af('0x8'));var ejs=require(_0x24af('0x9'));var fs=require('fs');var fs_extra=require(_0x24af('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x24af('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x24af('0xc'));var toCsv=require(_0x24af('0x8'));var querystring=require('querystring');var Papa=require(_0x24af('0xd'));var Redis=require(_0x24af('0xe'));var authService=require(_0x24af('0xf'));var qs=require(_0x24af('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x24af('0x11'));var logger=require(_0x24af('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x24af('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x24af('0x14'))['db'];function respondWithStatusCode(_0x1dc9d8,_0xce7855){_0xce7855=_0xce7855||0xcc;return function(_0x47b272){if(_0x47b272){return _0x1dc9d8[_0x24af('0x15')](_0xce7855);}return _0x1dc9d8[_0x24af('0x16')](_0xce7855)[_0x24af('0x17')]();};}function respondWithResult(_0x242ad9,_0x42fd93){_0x42fd93=_0x42fd93||0xc8;return function(_0x450747){if(_0x450747){return _0x242ad9['status'](_0x42fd93)[_0x24af('0x18')](_0x450747);}};}function respondWithFilteredResult(_0xa5f441,_0x47bf82){return function(_0x121a08){if(_0x121a08){var _0x33159e=typeof _0x47bf82[_0x24af('0x19')]==='undefined'&&typeof _0x47bf82[_0x24af('0x1a')]===_0x24af('0x1b');var _0xa85827=_0x121a08[_0x24af('0x1c')];var _0x333bc6=_0x33159e?0x0:_0x47bf82[_0x24af('0x19')];var _0x10cd3f=_0x33159e?_0x121a08[_0x24af('0x1c')]:_0x47bf82[_0x24af('0x19')]+_0x47bf82[_0x24af('0x1a')];var _0x575e91;if(_0x10cd3f>=_0xa85827){_0x10cd3f=_0xa85827;_0x575e91=0xc8;}else{_0x575e91=0xce;}_0xa5f441[_0x24af('0x16')](_0x575e91);return _0xa5f441[_0x24af('0x1d')](_0x24af('0x1e'),_0x333bc6+'-'+_0x10cd3f+'/'+_0xa85827)['json'](_0x121a08);}return null;};}function patchUpdates(_0x1c2da7){return function(_0x22ab56){try{jsonpatch[_0x24af('0x1f')](_0x22ab56,_0x1c2da7,!![]);}catch(_0x4a4ce4){return BPromise[_0x24af('0x20')](_0x4a4ce4);}return _0x22ab56['save']();};}function saveUpdates(_0x330c08,_0x5187a7){return function(_0x4a6ca6){if(_0x4a6ca6){return _0x4a6ca6[_0x24af('0x21')](_0x330c08)['then'](function(_0x5e3385){return _0x5e3385;});}return null;};}function removeEntity(_0x4ad7d1,_0x88e5a6){return function(_0x4d185f){if(_0x4d185f){return _0x4d185f[_0x24af('0x22')]()[_0x24af('0x23')](function(){_0x4ad7d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23b8e1,_0x20489e){return function(_0x47b8ad){if(!_0x47b8ad){_0x23b8e1[_0x24af('0x15')](0x194);}return _0x47b8ad;};}function handleError(_0x267c92,_0x4047a7){_0x4047a7=_0x4047a7||0x1f4;return function(_0x32e71f){logger[_0x24af('0x24')](_0x32e71f[_0x24af('0x25')]);if(_0x32e71f[_0x24af('0x26')]){delete _0x32e71f[_0x24af('0x26')];}_0x267c92[_0x24af('0x16')](_0x4047a7)[_0x24af('0x27')](_0x32e71f);};}exports[_0x24af('0x28')]=function(_0x3746c6,_0x19caf7){var _0xfb7554={},_0x25ccdb={},_0x34dc69={'count':0x0,'rows':[]};var _0x34739e=_[_0x24af('0x29')](db['VoiceTransferReport']['rawAttributes'],function(_0x2cb8b5){return{'name':_0x2cb8b5[_0x24af('0x2a')],'type':_0x2cb8b5[_0x24af('0x2b')]['key']};});_0x25ccdb['model']=_[_0x24af('0x29')](_0x34739e,'name');_0x25ccdb[_0x24af('0x2c')]=_[_0x24af('0x2d')](_0x3746c6[_0x24af('0x2c')]);_0x25ccdb[_0x24af('0x2e')]=_[_0x24af('0x2f')](_0x25ccdb[_0x24af('0x30')],_0x25ccdb[_0x24af('0x2c')]);_0xfb7554[_0x24af('0x31')]=_['intersection'](_0x25ccdb[_0x24af('0x30')],qs[_0x24af('0x32')](_0x3746c6['query'][_0x24af('0x32')]));_0xfb7554[_0x24af('0x31')]=_0xfb7554['attributes'][_0x24af('0x33')]?_0xfb7554[_0x24af('0x31')]:_0x25ccdb['model'];if(!_0x3746c6['query'][_0x24af('0x34')]('nolimit')){_0xfb7554[_0x24af('0x1a')]=qs[_0x24af('0x1a')](_0x3746c6[_0x24af('0x2c')][_0x24af('0x1a')]);_0xfb7554[_0x24af('0x19')]=qs[_0x24af('0x19')](_0x3746c6['query'][_0x24af('0x19')]);}_0xfb7554[_0x24af('0x35')]=qs[_0x24af('0x36')](_0x3746c6['query']['sort']);_0xfb7554[_0x24af('0x37')]=qs[_0x24af('0x2e')](_[_0x24af('0x38')](_0x3746c6['query'],_0x25ccdb['filters']),_0x34739e);if(_0x3746c6['query'][_0x24af('0x39')]){_0xfb7554[_0x24af('0x37')]=_[_0x24af('0x3a')](_0xfb7554[_0x24af('0x37')],{'$or':_[_0x24af('0x29')](_0x34739e,function(_0x48dbc4){if(_0x48dbc4[_0x24af('0x2b')]!==_0x24af('0x3b')){var _0x4a1023={};_0x4a1023[_0x48dbc4[_0x24af('0x26')]]={'$like':'%'+_0x3746c6['query'][_0x24af('0x39')]+'%'};return _0x4a1023;}})});}_0xfb7554=_['merge']({},_0xfb7554,_0x3746c6['options']);var _0x56a998={'where':_0xfb7554[_0x24af('0x37')]};return db['VoiceTransferReport'][_0x24af('0x1c')](_0x56a998)[_0x24af('0x23')](function(_0x23e362){_0x34dc69['count']=_0x23e362;if(_0x3746c6[_0x24af('0x2c')]['includeAll']){_0xfb7554[_0x24af('0x3c')]=[{'all':!![]}];}return db[_0x24af('0x3d')]['findAll'](_0xfb7554);})['then'](function(_0xaacffe){_0x34dc69[_0x24af('0x3e')]=_0xaacffe;return _0x34dc69;})[_0x24af('0x23')](respondWithFilteredResult(_0x19caf7,_0xfb7554))[_0x24af('0x3f')](handleError(_0x19caf7,null));};exports[_0x24af('0x40')]=function(_0x101f86,_0x48f621){var _0x1b40e7={'raw':!![],'where':{'id':_0x101f86[_0x24af('0x41')]['id']}},_0x30e893={};_0x30e893[_0x24af('0x30')]=_[_0x24af('0x2d')](db[_0x24af('0x3d')][_0x24af('0x42')]);_0x30e893[_0x24af('0x2c')]=_['keys'](_0x101f86[_0x24af('0x2c')]);_0x30e893['filters']=_['intersection'](_0x30e893['model'],_0x30e893[_0x24af('0x2c')]);_0x1b40e7['attributes']=_['intersection'](_0x30e893[_0x24af('0x30')],qs[_0x24af('0x32')](_0x101f86[_0x24af('0x2c')][_0x24af('0x32')]));_0x1b40e7[_0x24af('0x31')]=_0x1b40e7[_0x24af('0x31')][_0x24af('0x33')]?_0x1b40e7['attributes']:_0x30e893[_0x24af('0x30')];if(_0x101f86[_0x24af('0x2c')][_0x24af('0x43')]){_0x1b40e7[_0x24af('0x3c')]=[{'all':!![]}];}_0x1b40e7=_[_0x24af('0x3a')]({},_0x1b40e7,_0x101f86[_0x24af('0x44')]);return db[_0x24af('0x3d')][_0x24af('0x45')](_0x1b40e7)[_0x24af('0x23')](handleEntityNotFound(_0x48f621,null))[_0x24af('0x23')](respondWithResult(_0x48f621,null))['catch'](handleError(_0x48f621,null));};exports['create']=function(_0x39f892,_0x470ac0){return db[_0x24af('0x3d')][_0x24af('0x46')](_0x39f892[_0x24af('0x47')],{})['then'](respondWithResult(_0x470ac0,0xc9))[_0x24af('0x3f')](handleError(_0x470ac0,null));};exports[_0x24af('0x21')]=function(_0x1ae9ce,_0x4dae7d){if(_0x1ae9ce['body']['id']){delete _0x1ae9ce[_0x24af('0x47')]['id'];}return db[_0x24af('0x3d')][_0x24af('0x45')]({'where':{'id':_0x1ae9ce[_0x24af('0x41')]['id']}})[_0x24af('0x23')](handleEntityNotFound(_0x4dae7d,null))['then'](saveUpdates(_0x1ae9ce[_0x24af('0x47')],null))[_0x24af('0x23')](respondWithResult(_0x4dae7d,null))[_0x24af('0x3f')](handleError(_0x4dae7d,null));};exports[_0x24af('0x22')]=function(_0x159b5e,_0x1a6bd2){return db[_0x24af('0x3d')][_0x24af('0x45')]({'where':{'id':_0x159b5e[_0x24af('0x41')]['id']}})[_0x24af('0x23')](handleEntityNotFound(_0x1a6bd2,null))['then'](removeEntity(_0x1a6bd2,null))[_0x24af('0x3f')](handleError(_0x1a6bd2,null));};exports[_0x24af('0x48')]=function(_0xd9a330,_0x215a28){return db[_0x24af('0x3d')][_0x24af('0x48')]()[_0x24af('0x23')](respondWithResult(_0x215a28,null))['catch'](handleError(_0x215a28,null));};
\ No newline at end of file
+var _0x737a=['api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','send','index','map','VoiceTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','name','options','includeAll','findAll','catch','show','params','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x37d7f5,_0x478e72){var _0x582bc7=function(_0x33448f){while(--_0x33448f){_0x37d7f5['push'](_0x37d7f5['shift']());}};_0x582bc7(++_0x478e72);}(_0x737a,0xcd));var _0xa737=function(_0x302a7f,_0x4e86fd){_0x302a7f=_0x302a7f-0x0;var _0x2fac93=_0x737a[_0x302a7f];return _0x2fac93;};'use strict';var emlformat=require(_0xa737('0x0'));var rimraf=require(_0xa737('0x1'));var zipdir=require(_0xa737('0x2'));var jsonpatch=require(_0xa737('0x3'));var rp=require('request-promise');var moment=require(_0xa737('0x4'));var BPromise=require(_0xa737('0x5'));var Mustache=require(_0xa737('0x6'));var util=require('util');var path=require(_0xa737('0x7'));var sox=require('sox');var csv=require(_0xa737('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa737('0x9'));var _=require(_0xa737('0xa'));var squel=require('squel');var crypto=require(_0xa737('0xb'));var jsforce=require(_0xa737('0xc'));var deskjs=require(_0xa737('0xd'));var toCsv=require(_0xa737('0x8'));var querystring=require(_0xa737('0xe'));var Papa=require('papaparse');var Redis=require(_0xa737('0xf'));var authService=require(_0xa737('0x10'));var qs=require(_0xa737('0x11'));var as=require(_0xa737('0x12'));var hardwareService=require(_0xa737('0x13'));var logger=require('../../config/logger')(_0xa737('0x14'));var utils=require('../../config/utils');var config=require(_0xa737('0x15'));var licenseUtil=require(_0xa737('0x16'));var db=require(_0xa737('0x17'))['db'];function respondWithStatusCode(_0x64657d,_0x101ad8){_0x101ad8=_0x101ad8||0xcc;return function(_0x5e7ddf){if(_0x5e7ddf){return _0x64657d[_0xa737('0x18')](_0x101ad8);}return _0x64657d[_0xa737('0x19')](_0x101ad8)[_0xa737('0x1a')]();};}function respondWithResult(_0x290869,_0x5286e5){_0x5286e5=_0x5286e5||0xc8;return function(_0xef1a2a){if(_0xef1a2a){return _0x290869[_0xa737('0x19')](_0x5286e5)[_0xa737('0x1b')](_0xef1a2a);}};}function respondWithFilteredResult(_0x1bef6b,_0x5308d8){return function(_0xcde0af){if(_0xcde0af){var _0xbe5bb=typeof _0x5308d8[_0xa737('0x1c')]==='undefined'&&typeof _0x5308d8[_0xa737('0x1d')]==='undefined';var _0x1297af=_0xcde0af[_0xa737('0x1e')];var _0x44a8af=_0xbe5bb?0x0:_0x5308d8[_0xa737('0x1c')];var _0x71be3c=_0xbe5bb?_0xcde0af[_0xa737('0x1e')]:_0x5308d8['offset']+_0x5308d8['limit'];var _0x19cf6e;if(_0x71be3c>=_0x1297af){_0x71be3c=_0x1297af;_0x19cf6e=0xc8;}else{_0x19cf6e=0xce;}_0x1bef6b[_0xa737('0x19')](_0x19cf6e);return _0x1bef6b[_0xa737('0x1f')](_0xa737('0x20'),_0x44a8af+'-'+_0x71be3c+'/'+_0x1297af)['json'](_0xcde0af);}return null;};}function patchUpdates(_0x47ab7e){return function(_0x38205f){try{jsonpatch[_0xa737('0x21')](_0x38205f,_0x47ab7e,!![]);}catch(_0x566acd){return BPromise[_0xa737('0x22')](_0x566acd);}return _0x38205f['save']();};}function saveUpdates(_0x428b9b,_0xb4294f){return function(_0x52d065){if(_0x52d065){return _0x52d065[_0xa737('0x23')](_0x428b9b)[_0xa737('0x24')](function(_0x323ebc){return _0x323ebc;});}return null;};}function removeEntity(_0x3cf1e2,_0x5ef36e){return function(_0x2bff13){if(_0x2bff13){return _0x2bff13[_0xa737('0x25')]()[_0xa737('0x24')](function(){_0x3cf1e2[_0xa737('0x19')](0xcc)[_0xa737('0x1a')]();});}};}function handleEntityNotFound(_0x76cb26,_0x2706e0){return function(_0x4438cb){if(!_0x4438cb){_0x76cb26[_0xa737('0x18')](0x194);}return _0x4438cb;};}function handleError(_0x1e2add,_0x57cc5c){_0x57cc5c=_0x57cc5c||0x1f4;return function(_0x44bc44){logger[_0xa737('0x26')](_0x44bc44[_0xa737('0x27')]);if(_0x44bc44['name']){delete _0x44bc44['name'];}_0x1e2add[_0xa737('0x19')](_0x57cc5c)[_0xa737('0x28')](_0x44bc44);};}exports[_0xa737('0x29')]=function(_0x24ae7c,_0x2a1bac){var _0x5f3ce8={},_0x5e2112={},_0x2fe27b={'count':0x0,'rows':[]};var _0x2fb47e=_[_0xa737('0x2a')](db[_0xa737('0x2b')][_0xa737('0x2c')],function(_0xdab56f){return{'name':_0xdab56f['fieldName'],'type':_0xdab56f[_0xa737('0x2d')][_0xa737('0x2e')]};});_0x5e2112[_0xa737('0x2f')]=_[_0xa737('0x2a')](_0x2fb47e,'name');_0x5e2112[_0xa737('0x30')]=_[_0xa737('0x31')](_0x24ae7c['query']);_0x5e2112[_0xa737('0x32')]=_[_0xa737('0x33')](_0x5e2112[_0xa737('0x2f')],_0x5e2112[_0xa737('0x30')]);_0x5f3ce8[_0xa737('0x34')]=_[_0xa737('0x33')](_0x5e2112[_0xa737('0x2f')],qs['fields'](_0x24ae7c['query'][_0xa737('0x35')]));_0x5f3ce8[_0xa737('0x34')]=_0x5f3ce8[_0xa737('0x34')]['length']?_0x5f3ce8[_0xa737('0x34')]:_0x5e2112[_0xa737('0x2f')];if(!_0x24ae7c['query'][_0xa737('0x36')](_0xa737('0x37'))){_0x5f3ce8[_0xa737('0x1d')]=qs[_0xa737('0x1d')](_0x24ae7c[_0xa737('0x30')][_0xa737('0x1d')]);_0x5f3ce8[_0xa737('0x1c')]=qs[_0xa737('0x1c')](_0x24ae7c['query'][_0xa737('0x1c')]);}_0x5f3ce8[_0xa737('0x38')]=qs[_0xa737('0x39')](_0x24ae7c['query'][_0xa737('0x39')]);_0x5f3ce8['where']=qs[_0xa737('0x32')](_['pick'](_0x24ae7c[_0xa737('0x30')],_0x5e2112[_0xa737('0x32')]),_0x2fb47e);if(_0x24ae7c[_0xa737('0x30')][_0xa737('0x3a')]){_0x5f3ce8[_0xa737('0x3b')]=_[_0xa737('0x3c')](_0x5f3ce8[_0xa737('0x3b')],{'$or':_[_0xa737('0x2a')](_0x2fb47e,function(_0x19fa98){if(_0x19fa98[_0xa737('0x2d')]!==_0xa737('0x3d')){var _0x3d20e7={};_0x3d20e7[_0x19fa98[_0xa737('0x3e')]]={'$like':'%'+_0x24ae7c[_0xa737('0x30')][_0xa737('0x3a')]+'%'};return _0x3d20e7;}})});}_0x5f3ce8=_['merge']({},_0x5f3ce8,_0x24ae7c[_0xa737('0x3f')]);var _0x337c98={'where':_0x5f3ce8['where']};return db[_0xa737('0x2b')][_0xa737('0x1e')](_0x337c98)[_0xa737('0x24')](function(_0x41c30d){_0x2fe27b[_0xa737('0x1e')]=_0x41c30d;if(_0x24ae7c['query'][_0xa737('0x40')]){_0x5f3ce8['include']=[{'all':!![]}];}return db[_0xa737('0x2b')][_0xa737('0x41')](_0x5f3ce8);})[_0xa737('0x24')](function(_0x12bfc7){_0x2fe27b['rows']=_0x12bfc7;return _0x2fe27b;})[_0xa737('0x24')](respondWithFilteredResult(_0x2a1bac,_0x5f3ce8))[_0xa737('0x42')](handleError(_0x2a1bac,null));};exports[_0xa737('0x43')]=function(_0x5c4d49,_0x1c6c9b){var _0x4a9629={'raw':!![],'where':{'id':_0x5c4d49[_0xa737('0x44')]['id']}},_0x56ed5b={};_0x56ed5b[_0xa737('0x2f')]=_[_0xa737('0x31')](db[_0xa737('0x2b')]['rawAttributes']);_0x56ed5b['query']=_[_0xa737('0x31')](_0x5c4d49[_0xa737('0x30')]);_0x56ed5b[_0xa737('0x32')]=_[_0xa737('0x33')](_0x56ed5b[_0xa737('0x2f')],_0x56ed5b[_0xa737('0x30')]);_0x4a9629[_0xa737('0x34')]=_['intersection'](_0x56ed5b[_0xa737('0x2f')],qs['fields'](_0x5c4d49[_0xa737('0x30')]['fields']));_0x4a9629[_0xa737('0x34')]=_0x4a9629[_0xa737('0x34')][_0xa737('0x45')]?_0x4a9629[_0xa737('0x34')]:_0x56ed5b['model'];if(_0x5c4d49[_0xa737('0x30')][_0xa737('0x40')]){_0x4a9629[_0xa737('0x46')]=[{'all':!![]}];}_0x4a9629=_[_0xa737('0x3c')]({},_0x4a9629,_0x5c4d49[_0xa737('0x3f')]);return db[_0xa737('0x2b')][_0xa737('0x47')](_0x4a9629)['then'](handleEntityNotFound(_0x1c6c9b,null))['then'](respondWithResult(_0x1c6c9b,null))[_0xa737('0x42')](handleError(_0x1c6c9b,null));};exports[_0xa737('0x48')]=function(_0x4e1443,_0x2305a2){return db[_0xa737('0x2b')][_0xa737('0x48')](_0x4e1443['body'],{})[_0xa737('0x24')](respondWithResult(_0x2305a2,0xc9))[_0xa737('0x42')](handleError(_0x2305a2,null));};exports[_0xa737('0x23')]=function(_0x3d32da,_0x36a125){if(_0x3d32da[_0xa737('0x49')]['id']){delete _0x3d32da['body']['id'];}return db[_0xa737('0x2b')][_0xa737('0x47')]({'where':{'id':_0x3d32da[_0xa737('0x44')]['id']}})[_0xa737('0x24')](handleEntityNotFound(_0x36a125,null))[_0xa737('0x24')](saveUpdates(_0x3d32da[_0xa737('0x49')],null))[_0xa737('0x24')](respondWithResult(_0x36a125,null))[_0xa737('0x42')](handleError(_0x36a125,null));};exports[_0xa737('0x25')]=function(_0x16df64,_0x26ecba){return db[_0xa737('0x2b')]['find']({'where':{'id':_0x16df64[_0xa737('0x44')]['id']}})[_0xa737('0x24')](handleEntityNotFound(_0x26ecba,null))[_0xa737('0x24')](removeEntity(_0x26ecba,null))[_0xa737('0x42')](handleError(_0x26ecba,null));};exports[_0xa737('0x4a')]=function(_0x266775,_0x2f35e6){return db[_0xa737('0x2b')]['describe']()[_0xa737('0x24')](respondWithResult(_0x2f35e6,null))[_0xa737('0x42')](handleError(_0x2f35e6,null));};
\ No newline at end of file
index f7b5f6f..0cd2937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be8=['./voiceTransferReport.attributes','exports','define','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2a9b9b,_0x14c245){var _0x5139a8=function(_0x2c72a3){while(--_0x2c72a3){_0x2a9b9b['push'](_0x2a9b9b['shift']());}};_0x5139a8(++_0x14c245);}(_0x2be8,0x146));var _0x82be=function(_0x429948,_0x1a6851){_0x429948=_0x429948-0x0;var _0x35d5d1=_0x2be8[_0x429948];return _0x35d5d1;};'use strict';var _=require(_0x82be('0x0'));var util=require(_0x82be('0x1'));var logger=require(_0x82be('0x2'))(_0x82be('0x3'));var moment=require(_0x82be('0x4'));var BPromise=require(_0x82be('0x5'));var rp=require(_0x82be('0x6'));var fs=require('fs');var path=require(_0x82be('0x7'));var rimraf=require(_0x82be('0x8'));var config=require(_0x82be('0x9'));var attributes=require(_0x82be('0xa'));module[_0x82be('0xb')]=function(_0x453c36,_0x1186c2){return _0x453c36[_0x82be('0xc')]('VoiceTransferReport',attributes,{'tableName':_0x82be('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x001b=['report_call_transfer','util','moment','request-promise','path','../../config/environment','./voiceTransferReport.attributes','exports'];(function(_0xb5ea2a,_0x32c5c9){var _0x531c8c=function(_0x3c1aec){while(--_0x3c1aec){_0xb5ea2a['push'](_0xb5ea2a['shift']());}};_0x531c8c(++_0x32c5c9);}(_0x001b,0x71));var _0xb001=function(_0x7e674a,_0x46493c){_0x7e674a=_0x7e674a-0x0;var _0x3bc791=_0x001b[_0x7e674a];return _0x3bc791;};'use strict';var _=require('lodash');var util=require(_0xb001('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb001('0x1'));var BPromise=require('bluebird');var rp=require(_0xb001('0x2'));var fs=require('fs');var path=require(_0xb001('0x3'));var rimraf=require('rimraf');var config=require(_0xb001('0x4'));var attributes=require(_0xb001('0x5'));module[_0xb001('0x6')]=function(_0x487ac1,_0x272e36){return _0x487ac1['define']('VoiceTransferReport',attributes,{'tableName':_0xb001('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb624e5..9cb401b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a55=['catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','then','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x32c961,_0x170cc7){var _0x5779e7=function(_0x43dc17){while(--_0x43dc17){_0x32c961['push'](_0x32c961['shift']());}};_0x5779e7(++_0x170cc7);}(_0x5a55,0x1b7));var _0x55a5=function(_0x4f0c2b,_0x2c9d14){_0x4f0c2b=_0x4f0c2b-0x0;var _0x526436=_0x5a55[_0x4f0c2b];return _0x526436;};'use strict';var _=require(_0x55a5('0x0'));var util=require(_0x55a5('0x1'));var moment=require(_0x55a5('0x2'));var BPromise=require(_0x55a5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x55a5('0x4'));var db=require(_0x55a5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x55a5('0x6'))(_0x55a5('0x7'));var config=require(_0x55a5('0x8'));var jayson=require(_0x55a5('0x9'));var client=jayson[_0x55a5('0xa')][_0x55a5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31534b,_0x1d61fb,_0x20ac40){return new BPromise(function(_0x1f7ac9,_0x133d5e){return client['request'](_0x31534b,_0x20ac40)['then'](function(_0x4d582b){logger[_0x55a5('0xc')](_0x55a5('0xd'),_0x1d61fb,_0x55a5('0xe'));logger['debug'](_0x55a5('0xf'),_0x1d61fb,_0x55a5('0xe'),JSON['stringify'](_0x4d582b));if(_0x4d582b[_0x55a5('0x10')]){if(_0x4d582b[_0x55a5('0x10')][_0x55a5('0x11')]===0x1f4){logger[_0x55a5('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x1d61fb,_0x4d582b[_0x55a5('0x10')][_0x55a5('0x12')]);return _0x133d5e(_0x4d582b['error']['message']);}logger['error'](_0x55a5('0xd'),_0x1d61fb,_0x4d582b[_0x55a5('0x10')][_0x55a5('0x12')]);return _0x1f7ac9(_0x4d582b[_0x55a5('0x10')][_0x55a5('0x12')]);}else{logger[_0x55a5('0xc')](_0x55a5('0xd'),_0x1d61fb,'request\x20sent');_0x1f7ac9(_0x4d582b[_0x55a5('0x13')][_0x55a5('0x12')]);}})[_0x55a5('0x14')](function(_0x1a5323){logger[_0x55a5('0x10')](_0x55a5('0xd'),_0x1d61fb,_0x1a5323);_0x133d5e(_0x1a5323);});});}exports[_0x55a5('0x15')]=function(_0x453b1e){var _0x201c42=this;return new Promise(function(_0x4569ce,_0x28de4e){return db[_0x55a5('0x16')]['create'](_0x453b1e[_0x55a5('0x17')],{'raw':_0x453b1e[_0x55a5('0x18')]?_0x453b1e[_0x55a5('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x55a5('0x19')](function(_0x394ca7){logger[_0x55a5('0xc')](_0x55a5('0x15'),_0x453b1e);logger['debug'](_0x55a5('0x15'),_0x453b1e,JSON[_0x55a5('0x1a')](_0x394ca7));_0x4569ce(_0x394ca7);})[_0x55a5('0x14')](function(_0x3a4fc3){logger[_0x55a5('0x10')](_0x55a5('0x15'),_0x3a4fc3[_0x55a5('0x12')],_0x453b1e);_0x28de4e(_0x201c42['error'](0x1f4,_0x3a4fc3[_0x55a5('0x12')]));});});};
\ No newline at end of file
+var _0xfcea=['options','then','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceTransferReport,\x20%s,\x20%s','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xfcea,0xea));var _0xafce=function(_0x37b065,_0x5afc8d){_0x37b065=_0x37b065-0x0;var _0x5e368a=_0xfcea[_0x37b065];return _0x5e368a;};'use strict';var _=require('lodash');var util=require(_0xafce('0x0'));var moment=require('moment');var BPromise=require(_0xafce('0x1'));var rs=require(_0xafce('0x2'));var fs=require('fs');var Redis=require(_0xafce('0x3'));var db=require(_0xafce('0x4'))['db'];var utils=require(_0xafce('0x5'));var logger=require(_0xafce('0x6'))(_0xafce('0x7'));var config=require(_0xafce('0x8'));var jayson=require(_0xafce('0x9'));var client=jayson['client'][_0xafce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4790fe,_0x2cffc6,_0x2b63f5){return new BPromise(function(_0x121c30,_0x4515f8){return client[_0xafce('0xb')](_0x4790fe,_0x2b63f5)['then'](function(_0x133eb7){logger[_0xafce('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x2cffc6,_0xafce('0xd'));logger[_0xafce('0xe')](_0xafce('0xf'),_0x2cffc6,_0xafce('0xd'),JSON[_0xafce('0x10')](_0x133eb7));if(_0x133eb7['error']){if(_0x133eb7[_0xafce('0x11')][_0xafce('0x12')]===0x1f4){logger[_0xafce('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x2cffc6,_0x133eb7['error']['message']);return _0x4515f8(_0x133eb7[_0xafce('0x11')][_0xafce('0x13')]);}logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x2cffc6,_0x133eb7['error'][_0xafce('0x13')]);return _0x121c30(_0x133eb7['error'][_0xafce('0x13')]);}else{logger['info'](_0xafce('0x14'),_0x2cffc6,_0xafce('0xd'));_0x121c30(_0x133eb7[_0xafce('0x15')][_0xafce('0x13')]);}})[_0xafce('0x16')](function(_0x3e11bb){logger[_0xafce('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x2cffc6,_0x3e11bb);_0x4515f8(_0x3e11bb);});});}exports[_0xafce('0x17')]=function(_0x13adb2){var _0x29d34f=this;return new Promise(function(_0x41239a,_0xd6bdab){return db[_0xafce('0x18')][_0xafce('0x19')](_0x13adb2[_0xafce('0x1a')],{'raw':_0x13adb2[_0xafce('0x1b')]?_0x13adb2[_0xafce('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xafce('0x1c')](function(_0x24064a){logger['info'](_0xafce('0x17'),_0x13adb2);logger[_0xafce('0xe')](_0xafce('0x17'),_0x13adb2,JSON[_0xafce('0x10')](_0x24064a));_0x41239a(_0x24064a);})[_0xafce('0x16')](function(_0x3f69ae){logger[_0xafce('0x11')](_0xafce('0x17'),_0x3f69ae[_0xafce('0x13')],_0x13adb2);_0xd6bdab(_0x29d34f[_0xafce('0x11')](0x1f4,_0x3f69ae[_0xafce('0x13')]));});});};
\ No newline at end of file
index 0bd3ea7..59f3304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['/hold','/unhold','/calls','calls','transfer','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','isWebrtcLicence','originate','post','/hangup','hangup','/answer','answer'];(function(_0xbc3c04,_0x4ca068){var _0x47d64b=function(_0x4332d1){while(--_0x4332d1){_0xbc3c04['push'](_0xbc3c04['shift']());}};_0x47d64b(++_0x4ca068);}(_0xaa88,0x137));var _0x8aa8=function(_0xbb9dbf,_0x5dafa4){_0xbb9dbf=_0xbb9dbf-0x0;var _0x30223c=_0xaa88[_0xbb9dbf];return _0x30223c;};'use strict';var express=require(_0x8aa8('0x0'));var router=express[_0x8aa8('0x1')]();var auth=require(_0x8aa8('0x2'));var controller=require(_0x8aa8('0x3'));router['post'](_0x8aa8('0x4'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x7')]);router[_0x8aa8('0x8')](_0x8aa8('0x9'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x8aa8('0xa')]);router['post'](_0x8aa8('0xb'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0xc')]);router['post'](_0x8aa8('0xd'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller['hold']);router[_0x8aa8('0x8')](_0x8aa8('0xe'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller['unhold']);router[_0x8aa8('0x8')](_0x8aa8('0xf'),auth['isAuthenticated'](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x10')]);router[_0x8aa8('0x8')]('/transfer',auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xcb91=['/unhold','unhold','/calls','transfer','exports','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','/hangup','isAuthenticated','hangup','hold'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x218972,_0x1f9794){_0x218972=_0x218972-0x0;var _0x1bb1a8=_0xcb91[_0x218972];return _0x1bb1a8;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x1cb9('0x0'));var controller=require(_0x1cb9('0x1'));router[_0x1cb9('0x2')](_0x1cb9('0x3'),auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x5')]);router['post'](_0x1cb9('0x6'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x2')]('/answer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['answer']);router[_0x1cb9('0x2')]('/hold',auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x9')]);router[_0x1cb9('0x2')](_0x1cb9('0xa'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0xb')]);router[_0x1cb9('0x2')](_0x1cb9('0xc'),auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['calls']);router['post']('/transfer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0xd')]);module[_0x1cb9('0xe')]=router;
\ No newline at end of file
index 6a88cb4..e5adbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','body','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup','json','userId','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','calls','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber'];(function(_0x43d58e,_0xf624a5){var _0x561951=function(_0x511374){while(--_0x511374){_0x43d58e['push'](_0x43d58e['shift']());}};_0x561951(++_0xf624a5);}(_0xa8a8,0xec));var _0x8a8a=function(_0xba3bb7,_0x994199){_0xba3bb7=_0xba3bb7-0x0;var _0x183e31=_0xa8a8[_0xba3bb7];return _0x183e31;};'use strict';var path=require(_0x8a8a('0x0'));var fs=require('fs');var _=require(_0x8a8a('0x1'));var db=require(_0x8a8a('0x2'))['db'];var config=require(_0x8a8a('0x3'));var util=require('util');var BPromise=require(_0x8a8a('0x4'));var jayson=require(_0x8a8a('0x5'));var amiClient=jayson[_0x8a8a('0x6')][_0x8a8a('0x7')]({'port':0x232a});var logger=require(_0x8a8a('0x8'))(_0x8a8a('0x9'));var Redis=require(_0x8a8a('0xa'));config[_0x8a8a('0xb')]=_[_0x8a8a('0xc')](config[_0x8a8a('0xb')],{'host':_0x8a8a('0xd'),'port':0x18eb});var io=require(_0x8a8a('0xe'))(new Redis(config[_0x8a8a('0xb')]));var Schema=require(_0x8a8a('0xf'));var originateValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x8a8a('0x11')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x8a8a('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':[!![],_0x8a8a('0x14')]},'transferNumber':{'type':'string','required':[!![],_0x8a8a('0x15')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8a8a('0x13')]}});function emit(_0x568b83,_0x1f36b6,_0x3046ae){logger[_0x8a8a('0x16')](_0x568b83,_0x1f36b6,JSON[_0x8a8a('0x17')](_0x3046ae));io['to'](_0x568b83)[_0x8a8a('0x18')](_0x1f36b6,_0x3046ae);}function handleError(_0x5dd616){return function(_0x9d55f9){console[_0x8a8a('0x19')](_0x8a8a('0x1a'),_0x9d55f9,_0x9d55f9 instanceof RangeError);logger[_0x8a8a('0x1b')](_0x9d55f9[_0x8a8a('0x1c')]);if(_0x9d55f9 instanceof RangeError){if(_0x9d55f9[_0x8a8a('0x1d')]){delete _0x9d55f9['name'];}_0x5dd616['status'](0x194)['send'](_0x9d55f9);}else{if(_0x9d55f9['name']){delete _0x9d55f9['name'];}_0x5dd616[_0x8a8a('0x1e')](0x1f4)[_0x8a8a('0x1f')](_0x9d55f9);}};}function checkError(){return function(_0xe0f449){if(!_0xe0f449){throw new RangeError(_0x8a8a('0x20'));}return _0xe0f449;};}function respondWithRpcPromise(_0x22ebd4,_0x2f6af2){return new BPromise(function(_0x242bac,_0xe0321c){var _0x25d5d4=amiClient;return _0x25d5d4[_0x8a8a('0x21')](_0x22ebd4,_0x2f6af2)[_0x8a8a('0x22')](function(_0x3aa2bb){if(_0x3aa2bb[_0x8a8a('0x1b')]){if(_0x3aa2bb[_0x8a8a('0x1b')][_0x8a8a('0x23')]===0x1f4){return _0xe0321c(_0x3aa2bb['error'][_0x8a8a('0x24')]);}return _0x242bac(_0x3aa2bb[_0x8a8a('0x1b')][_0x8a8a('0x24')]);}else{_0x242bac(_0x3aa2bb[_0x8a8a('0x25')]);}})[_0x8a8a('0x26')](function(_0x251315){_0xe0321c(_0x251315);});});}function getAgent(_0x3aa46d){return db['User'][_0x8a8a('0x27')]({'where':{'id':_0x3aa46d,'role':_0x8a8a('0x28')}})[_0x8a8a('0x22')](checkError());}function getAgentCheckSession(_0x54ff7e,_0x58f42b){return new BPromise(function(_0x2dafcd,_0x129d11){var _0x5c70bd=respondWithRpcPromise('VoiceChannels');var _0x4b3bc5=getAgent(_0x54ff7e);Promise[_0x8a8a('0x29')]([_0x5c70bd,_0x4b3bc5])['then'](function(_0x10b916){var _0xdd6221=_0x10b916[0x0];var _0x49ea81=_0x10b916[0x1];var _0x36c7f8=_[_0x8a8a('0x2a')](_0xdd6221[_0x8a8a('0x2b')],function(_0x8df0cb){return _0x8df0cb[_0x8a8a('0x2c')]==_0x49ea81['id']&&_0x8df0cb[_0x8a8a('0x2d')]==_0x58f42b;});if(_0x36c7f8[_0x8a8a('0x2e')]==0x1){_0x2dafcd(_0x49ea81);}else{_0x129d11(new RangeError(_0x8a8a('0x2f')+_0x58f42b+'\x20not\x20found!'));}});});}exports['originate']=function(_0x56e79e,_0x2a00a7){logger[_0x8a8a('0x16')]('originate\x20fired:',_0x56e79e[_0x8a8a('0x30')]);var _0x304e83=originateValidation['validate'](_0x56e79e[_0x8a8a('0x30')]);if(_0x304e83[_0x8a8a('0x2e')]>0x0){return _0x2a00a7[_0x8a8a('0x1e')](0x190)['json'](_0x304e83);}var _0x5bee53=_0x56e79e[_0x8a8a('0x30')]['userId'];var _0x2a3198=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x31')];var _0x196698=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x32')];var _0x37ce45=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x33')];return getAgent(_0x5bee53)[_0x8a8a('0x22')](function(_0x27de26){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x27de26[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x27de26[_0x8a8a('0x1d')]),_0x8a8a('0x37'),{'callNumber':_0x2a3198,'callerId':_0x196698,'callbackUrl':_0x37ce45});return _0x2a00a7['status'](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0x8a8a('0x26')](handleError(_0x2a00a7));};exports[_0x8a8a('0x38')]=function(_0x376de3,_0x117a5c){logger[_0x8a8a('0x16')]('hangup\x20fired:',_0x376de3['body']);var _0x8d8481=hangupValidation['validate'](_0x376de3[_0x8a8a('0x30')]);if(_0x8d8481['length']>0x0){return _0x117a5c['status'](0x190)[_0x8a8a('0x39')](_0x8d8481);}var _0x1ac761=_0x376de3[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x31307c=_0x376de3[_0x8a8a('0x30')][_0x8a8a('0x2d')];return getAgent(_0x1ac761)['then'](function(_0x40d509){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x40d509['name']);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x40d509[_0x8a8a('0x1d')]),'webbar:hangup',{'sessionId':_0x31307c});return _0x117a5c[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x3b')});})[_0x8a8a('0x26')](handleError(_0x117a5c));};exports[_0x8a8a('0x3c')]=function(_0x3e5b15,_0x4ffdd9){logger['info'](_0x8a8a('0x3d'),_0x3e5b15['body']);var _0x13e0d4=answerValidation[_0x8a8a('0xf')](_0x3e5b15['body']);if(_0x13e0d4['length']>0x0){return _0x4ffdd9[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x13e0d4);}var _0x41d986=_0x3e5b15[_0x8a8a('0x30')]['userId'];var _0x103223=_0x3e5b15['body'][_0x8a8a('0x2d')];return getAgent(_0x41d986)[_0x8a8a('0x22')](function(_0x4c19ff){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x4c19ff[_0x8a8a('0x1d')]);emit(util['format'](_0x8a8a('0x36'),_0x4c19ff[_0x8a8a('0x1d')]),_0x8a8a('0x3e'),{'sessionId':_0x103223});return _0x4ffdd9['status'](0xc8)['json']({'error':![],'message':_0x8a8a('0x3f')});})[_0x8a8a('0x26')](handleError(_0x4ffdd9));};exports[_0x8a8a('0x40')]=function(_0x5c6c98,_0x18449b){logger[_0x8a8a('0x16')](_0x8a8a('0x41'),_0x5c6c98[_0x8a8a('0x30')]);var _0x2d4c11=holdValidation[_0x8a8a('0xf')](_0x5c6c98[_0x8a8a('0x30')]);if(_0x2d4c11[_0x8a8a('0x2e')]>0x0){return _0x18449b[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x2d4c11);}var _0x150b42=_0x5c6c98['body'][_0x8a8a('0x3a')];var _0x3ba9d9=_0x5c6c98[_0x8a8a('0x30')][_0x8a8a('0x2d')];return getAgent(_0x150b42)[_0x8a8a('0x22')](function(_0x2e22b0){logger['info'](_0x8a8a('0x34'),_0x2e22b0[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x2e22b0['name']),_0x8a8a('0x42'),{'sessionId':_0x3ba9d9});return _0x18449b[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x18449b));};exports[_0x8a8a('0x43')]=function(_0x39a8e0,_0xf4b6ee){logger[_0x8a8a('0x16')](_0x8a8a('0x44'),_0x39a8e0[_0x8a8a('0x30')]);var _0x1d1b5c=unholdValidation[_0x8a8a('0xf')](_0x39a8e0[_0x8a8a('0x30')]);if(_0x1d1b5c['length']>0x0){return _0xf4b6ee['status'](0x190)[_0x8a8a('0x39')](_0x1d1b5c);}var _0x10f689=_0x39a8e0['body']['userId'];var _0x171463=_0x39a8e0['body'][_0x8a8a('0x2d')];return getAgent(_0x10f689)['then'](function(_0x4642d5){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x4642d5[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x4642d5[_0x8a8a('0x1d')]),_0x8a8a('0x45'),{'sessionId':_0x171463});return _0xf4b6ee[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':'unhold\x20executed!'});})[_0x8a8a('0x26')](handleError(_0xf4b6ee));};exports[_0x8a8a('0x46')]=function(_0x32a4ed,_0x1e3bf5){logger[_0x8a8a('0x16')]('calls\x20fired:',_0x1e3bf5[_0x8a8a('0x30')]);var _0x140673=callsValidation['validate'](_0x32a4ed['body']);if(_0x140673[_0x8a8a('0x2e')]>0x0){return _0x1e3bf5[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x140673);}var _0x2ba3bf=_0x32a4ed[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x5ed59c=respondWithRpcPromise('VoiceChannels');var _0x495371=getAgent(_0x2ba3bf);return Promise[_0x8a8a('0x29')]([_0x5ed59c,_0x495371])['then'](function(_0x3984dd){var _0xb84ee7=_0x3984dd[0x0];var _0x4e1ca8=_0x3984dd[0x1];var _0x225801=_[_0x8a8a('0x2a')](_0xb84ee7[_0x8a8a('0x2b')],function(_0x119fb5){return _0x119fb5['UserId']==_0x4e1ca8['id'];});return _0x1e3bf5[_0x8a8a('0x1e')](0xc8)['json']({'count':_0x225801[_0x8a8a('0x2e')],'rows':_0x225801});})[_0x8a8a('0x26')](handleError(_0x1e3bf5));};exports['conference']=function(_0x254e4c,_0x101543){logger[_0x8a8a('0x16')](_0x8a8a('0x47'),_0x254e4c['body']);var _0x2b9e36=conferenceValidation[_0x8a8a('0xf')](_0x254e4c[_0x8a8a('0x30')]);if(_0x2b9e36['length']>0x0){return _0x101543['status'](0x190)[_0x8a8a('0x39')](_0x2b9e36);}var _0x4a18fb=_0x254e4c['body']['userId'];return getAgent(_0x4a18fb)[_0x8a8a('0x22')](function(_0x7d79a4){logger['info'](_0x8a8a('0x34'),_0x7d79a4['name']);emit(util['format'](_0x8a8a('0x36'),_0x7d79a4[_0x8a8a('0x1d')]),'webbar:conference');return _0x101543[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x48')});})[_0x8a8a('0x26')](handleError(_0x101543));};exports[_0x8a8a('0x49')]=function(_0x126dba,_0x4c8272){logger[_0x8a8a('0x16')](_0x8a8a('0x4a'),_0x126dba['body']);var _0x2ce579=transferValidation[_0x8a8a('0xf')](_0x126dba[_0x8a8a('0x30')]);if(_0x2ce579[_0x8a8a('0x2e')]>0x0){return _0x4c8272[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x2ce579);}var _0x81c1dd=_0x126dba[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x176ad3=_0x126dba['body'][_0x8a8a('0x2d')];var _0x2f7537=_0x126dba['body'][_0x8a8a('0x4b')];return getAgent(_0x81c1dd)[_0x8a8a('0x22')](function(_0x2640e3){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x2640e3['name']);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x2640e3[_0x8a8a('0x1d')]),_0x8a8a('0x4c'),{'sessionId':_0x176ad3,'transferNumber':_0x2f7537});return _0x4c8272[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x4d')});})['catch'](handleError(_0x4c8272));};
\ No newline at end of file
+var _0x4522=['callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup','hangup\x20fired:','sessionId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','../../mysqldb','../../config/environment','util','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','info','emit','handleError:','error','stack','name','status','send','request','then','code','message','result','catch','User','findOne','agent','all','rows','UserId','length','sessionId\x20','originate','originate\x20fired:','body','json','userId','callNumber'];(function(_0x508454,_0x12cf42){var _0x54d2ca=function(_0x54f1a6){while(--_0x54f1a6){_0x508454['push'](_0x508454['shift']());}};_0x54d2ca(++_0x12cf42);}(_0x4522,0x1a0));var _0x2452=function(_0x54d3ba,_0x4ace88){_0x54d3ba=_0x54d3ba-0x0;var _0x143328=_0x4522[_0x54d3ba];return _0x143328;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require(_0x2452('0x0'))['db'];var config=require(_0x2452('0x1'));var util=require(_0x2452('0x2'));var BPromise=require('bluebird');var jayson=require(_0x2452('0x3'));var amiClient=jayson[_0x2452('0x4')][_0x2452('0x5')]({'port':0x232a});var logger=require(_0x2452('0x6'))(_0x2452('0x7'));var Redis=require(_0x2452('0x8'));config[_0x2452('0x9')]=_[_0x2452('0xa')](config[_0x2452('0x9')],{'host':_0x2452('0xb'),'port':0x18eb});var io=require(_0x2452('0xc'))(new Redis(config[_0x2452('0x9')]));var Schema=require(_0x2452('0xd'));var originateValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],_0x2452('0xf')]},'callNumber':{'type':_0x2452('0x10'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x2452('0x10')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x2452('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],_0x2452('0xf')]},'sessionId':{'type':_0x2452('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],_0x2452('0xf')]},'sessionId':{'type':_0x2452('0x10'),'required':[!![],_0x2452('0x11')]},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x2452('0xf')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x2452('0x10'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x2452('0xe'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x3dd8cc,_0x734b88,_0x461d2b){logger[_0x2452('0x12')](_0x3dd8cc,_0x734b88,JSON['stringify'](_0x461d2b));io['to'](_0x3dd8cc)[_0x2452('0x13')](_0x734b88,_0x461d2b);}function handleError(_0x16e33a){return function(_0x59d89a){console['log'](_0x2452('0x14'),_0x59d89a,_0x59d89a instanceof RangeError);logger[_0x2452('0x15')](_0x59d89a[_0x2452('0x16')]);if(_0x59d89a instanceof RangeError){if(_0x59d89a['name']){delete _0x59d89a[_0x2452('0x17')];}_0x16e33a[_0x2452('0x18')](0x194)[_0x2452('0x19')](_0x59d89a);}else{if(_0x59d89a[_0x2452('0x17')]){delete _0x59d89a[_0x2452('0x17')];}_0x16e33a[_0x2452('0x18')](0x1f4)[_0x2452('0x19')](_0x59d89a);}};}function checkError(){return function(_0xea452e){if(!_0xea452e){throw new RangeError('NotFound');}return _0xea452e;};}function respondWithRpcPromise(_0x48f356,_0x1f060d){return new BPromise(function(_0x32dfe7,_0x4bb3ff){var _0x17d0a0=amiClient;return _0x17d0a0[_0x2452('0x1a')](_0x48f356,_0x1f060d)[_0x2452('0x1b')](function(_0x617ba7){if(_0x617ba7[_0x2452('0x15')]){if(_0x617ba7[_0x2452('0x15')][_0x2452('0x1c')]===0x1f4){return _0x4bb3ff(_0x617ba7['error'][_0x2452('0x1d')]);}return _0x32dfe7(_0x617ba7[_0x2452('0x15')][_0x2452('0x1d')]);}else{_0x32dfe7(_0x617ba7[_0x2452('0x1e')]);}})[_0x2452('0x1f')](function(_0x516fcf){_0x4bb3ff(_0x516fcf);});});}function getAgent(_0x48783a){return db[_0x2452('0x20')][_0x2452('0x21')]({'where':{'id':_0x48783a,'role':_0x2452('0x22')}})[_0x2452('0x1b')](checkError());}function getAgentCheckSession(_0x1aac19,_0x48b313){return new BPromise(function(_0x3fba00,_0x118db1){var _0x5e9184=respondWithRpcPromise('VoiceChannels');var _0x332878=getAgent(_0x1aac19);Promise[_0x2452('0x23')]([_0x5e9184,_0x332878])[_0x2452('0x1b')](function(_0x28e6ea){var _0x43fde0=_0x28e6ea[0x0];var _0x258fa6=_0x28e6ea[0x1];var _0x504162=_['filter'](_0x43fde0[_0x2452('0x24')],function(_0x454e0a){return _0x454e0a[_0x2452('0x25')]==_0x258fa6['id']&&_0x454e0a['sessionId']==_0x48b313;});if(_0x504162[_0x2452('0x26')]==0x1){_0x3fba00(_0x258fa6);}else{_0x118db1(new RangeError(_0x2452('0x27')+_0x48b313+'\x20not\x20found!'));}});});}exports[_0x2452('0x28')]=function(_0x450112,_0x37b5e6){logger[_0x2452('0x12')](_0x2452('0x29'),_0x450112[_0x2452('0x2a')]);var _0x312f1b=originateValidation[_0x2452('0xd')](_0x450112[_0x2452('0x2a')]);if(_0x312f1b[_0x2452('0x26')]>0x0){return _0x37b5e6[_0x2452('0x18')](0x190)[_0x2452('0x2b')](_0x312f1b);}var _0x26e841=_0x450112['body'][_0x2452('0x2c')];var _0x1689cd=_0x450112['body'][_0x2452('0x2d')];var _0x48dc9a=_0x450112[_0x2452('0x2a')][_0x2452('0x2e')];var _0x4d6343=_0x450112[_0x2452('0x2a')][_0x2452('0x2f')];return getAgent(_0x26e841)[_0x2452('0x1b')](function(_0x5ce5fb){logger[_0x2452('0x12')](_0x2452('0x30'),_0x5ce5fb['name']);emit(util[_0x2452('0x31')](_0x2452('0x32'),_0x5ce5fb[_0x2452('0x17')]),_0x2452('0x33'),{'callNumber':_0x1689cd,'callerId':_0x48dc9a,'callbackUrl':_0x4d6343});return _0x37b5e6[_0x2452('0x18')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})['catch'](handleError(_0x37b5e6));};exports[_0x2452('0x34')]=function(_0x36bd19,_0x64965c){logger[_0x2452('0x12')](_0x2452('0x35'),_0x36bd19['body']);var _0x22120a=hangupValidation['validate'](_0x36bd19['body']);if(_0x22120a[_0x2452('0x26')]>0x0){return _0x64965c['status'](0x190)[_0x2452('0x2b')](_0x22120a);}var _0xac3b74=_0x36bd19['body'][_0x2452('0x2c')];var _0x2cc8a4=_0x36bd19[_0x2452('0x2a')][_0x2452('0x36')];return getAgent(_0xac3b74)[_0x2452('0x1b')](function(_0x112849){logger[_0x2452('0x12')](_0x2452('0x30'),_0x112849['name']);emit(util[_0x2452('0x31')]('user:%s',_0x112849[_0x2452('0x17')]),_0x2452('0x37'),{'sessionId':_0x2cc8a4});return _0x64965c['status'](0xc8)[_0x2452('0x2b')]({'error':![],'message':_0x2452('0x38')});})[_0x2452('0x1f')](handleError(_0x64965c));};exports[_0x2452('0x39')]=function(_0x3d8bcb,_0x5af887){logger[_0x2452('0x12')](_0x2452('0x3a'),_0x3d8bcb['body']);var _0xfabbd8=answerValidation[_0x2452('0xd')](_0x3d8bcb[_0x2452('0x2a')]);if(_0xfabbd8[_0x2452('0x26')]>0x0){return _0x5af887['status'](0x190)[_0x2452('0x2b')](_0xfabbd8);}var _0x304942=_0x3d8bcb[_0x2452('0x2a')][_0x2452('0x2c')];var _0x40a413=_0x3d8bcb[_0x2452('0x2a')]['sessionId'];return getAgent(_0x304942)[_0x2452('0x1b')](function(_0x5e3364){logger[_0x2452('0x12')](_0x2452('0x30'),_0x5e3364['name']);emit(util['format']('user:%s',_0x5e3364['name']),_0x2452('0x3b'),{'sessionId':_0x40a413});return _0x5af887['status'](0xc8)[_0x2452('0x2b')]({'error':![],'message':'answer\x20executed!'});})[_0x2452('0x1f')](handleError(_0x5af887));};exports[_0x2452('0x3c')]=function(_0x55de3d,_0x4c6b8a){logger[_0x2452('0x12')]('hold\x20fired:',_0x55de3d[_0x2452('0x2a')]);var _0x1cb30a=holdValidation[_0x2452('0xd')](_0x55de3d[_0x2452('0x2a')]);if(_0x1cb30a['length']>0x0){return _0x4c6b8a['status'](0x190)[_0x2452('0x2b')](_0x1cb30a);}var _0x38615e=_0x55de3d[_0x2452('0x2a')][_0x2452('0x2c')];var _0x453373=_0x55de3d['body'][_0x2452('0x36')];return getAgent(_0x38615e)['then'](function(_0x3634f7){logger['info'](_0x2452('0x30'),_0x3634f7[_0x2452('0x17')]);emit(util['format'](_0x2452('0x32'),_0x3634f7['name']),_0x2452('0x3d'),{'sessionId':_0x453373});return _0x4c6b8a['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})[_0x2452('0x1f')](handleError(_0x4c6b8a));};exports[_0x2452('0x3e')]=function(_0x36ebcb,_0x4b705f){logger[_0x2452('0x12')](_0x2452('0x3f'),_0x36ebcb[_0x2452('0x2a')]);var _0x2aeb74=unholdValidation[_0x2452('0xd')](_0x36ebcb['body']);if(_0x2aeb74[_0x2452('0x26')]>0x0){return _0x4b705f['status'](0x190)[_0x2452('0x2b')](_0x2aeb74);}var _0x44a6f=_0x36ebcb[_0x2452('0x2a')][_0x2452('0x2c')];var _0x6ee99d=_0x36ebcb[_0x2452('0x2a')][_0x2452('0x36')];return getAgent(_0x44a6f)[_0x2452('0x1b')](function(_0x3629d3){logger['info'](_0x2452('0x30'),_0x3629d3['name']);emit(util[_0x2452('0x31')]('user:%s',_0x3629d3[_0x2452('0x17')]),_0x2452('0x40'),{'sessionId':_0x6ee99d});return _0x4b705f['status'](0xc8)[_0x2452('0x2b')]({'error':![],'message':_0x2452('0x41')});})[_0x2452('0x1f')](handleError(_0x4b705f));};exports[_0x2452('0x42')]=function(_0x258510,_0x96a22e){logger[_0x2452('0x12')](_0x2452('0x43'),_0x96a22e[_0x2452('0x2a')]);var _0x207df7=callsValidation[_0x2452('0xd')](_0x258510['body']);if(_0x207df7[_0x2452('0x26')]>0x0){return _0x96a22e['status'](0x190)[_0x2452('0x2b')](_0x207df7);}var _0x4959a7=_0x258510[_0x2452('0x2a')][_0x2452('0x2c')];var _0x34966b=respondWithRpcPromise(_0x2452('0x44'));var _0x321092=getAgent(_0x4959a7);return Promise[_0x2452('0x23')]([_0x34966b,_0x321092])[_0x2452('0x1b')](function(_0x34ff4d){var _0x3740b4=_0x34ff4d[0x0];var _0x2d615e=_0x34ff4d[0x1];var _0x1def15=_['filter'](_0x3740b4[_0x2452('0x24')],function(_0x101106){return _0x101106[_0x2452('0x25')]==_0x2d615e['id'];});return _0x96a22e[_0x2452('0x18')](0xc8)[_0x2452('0x2b')]({'count':_0x1def15[_0x2452('0x26')],'rows':_0x1def15});})['catch'](handleError(_0x96a22e));};exports[_0x2452('0x45')]=function(_0x41aba2,_0x4bce9e){logger[_0x2452('0x12')](_0x2452('0x46'),_0x41aba2[_0x2452('0x2a')]);var _0x234468=conferenceValidation[_0x2452('0xd')](_0x41aba2[_0x2452('0x2a')]);if(_0x234468[_0x2452('0x26')]>0x0){return _0x4bce9e[_0x2452('0x18')](0x190)[_0x2452('0x2b')](_0x234468);}var _0x34f31a=_0x41aba2[_0x2452('0x2a')]['userId'];return getAgent(_0x34f31a)['then'](function(_0x288bbc){logger['info'](_0x2452('0x30'),_0x288bbc[_0x2452('0x17')]);emit(util[_0x2452('0x31')](_0x2452('0x32'),_0x288bbc[_0x2452('0x17')]),_0x2452('0x47'));return _0x4bce9e['status'](0xc8)['json']({'error':![],'message':_0x2452('0x48')});})['catch'](handleError(_0x4bce9e));};exports[_0x2452('0x49')]=function(_0x59e9b3,_0x224cc0){logger[_0x2452('0x12')](_0x2452('0x4a'),_0x59e9b3[_0x2452('0x2a')]);var _0x4b9f76=transferValidation['validate'](_0x59e9b3['body']);if(_0x4b9f76[_0x2452('0x26')]>0x0){return _0x224cc0[_0x2452('0x18')](0x190)['json'](_0x4b9f76);}var _0x4f1891=_0x59e9b3['body']['userId'];var _0x4b563d=_0x59e9b3[_0x2452('0x2a')]['sessionId'];var _0x513815=_0x59e9b3[_0x2452('0x2a')][_0x2452('0x4b')];return getAgent(_0x4f1891)[_0x2452('0x1b')](function(_0x6cf3d0){logger[_0x2452('0x12')](_0x2452('0x30'),_0x6cf3d0['name']);emit(util[_0x2452('0x31')](_0x2452('0x32'),_0x6cf3d0[_0x2452('0x17')]),'webbar:transfer',{'sessionId':_0x4b563d,'transferNumber':_0x513815});return _0x224cc0['status'](0xc8)[_0x2452('0x2b')]({'error':![],'message':_0x2452('0x4c')});})[_0x2452('0x1f')](handleError(_0x224cc0));};
\ No newline at end of file
index 8c84b93..f53a83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['/:id','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','util','path','connect-timeout','express','Router','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addApplications','/:id/notify','notify','/:id/send','send','put','delete'];(function(_0x24a318,_0x55ba75){var _0x3aa629=function(_0x55f062){while(--_0x55f062){_0x24a318['push'](_0x24a318['shift']());}};_0x3aa629(++_0x55ba75);}(_0xda2d,0x102));var _0xdda2=function(_0x1e2ed5,_0x55acfe){_0x1e2ed5=_0x1e2ed5-0x0;var _0x5bcb50=_0xda2d[_0x1e2ed5];return _0x5bcb50;};'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/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xdda2('0x7')](_0xdda2('0x11'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x12')]);router[_0xdda2('0x13')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x14')]);router['post'](_0xdda2('0xd'),auth['isAuthenticated'](),controller[_0xdda2('0x15')]);router[_0xdda2('0x13')](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x16')]);router['post']('/:id/users',auth[_0xdda2('0x8')](),controller['addAgents']);router[_0xdda2('0x13')](_0xdda2('0x11'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x17')]);router[_0xdda2('0x13')](_0xdda2('0x18'),controller[_0xdda2('0x19')]);router[_0xdda2('0x13')](_0xdda2('0x1a'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x1b')]);router[_0xdda2('0x1c')]('/:id',auth[_0xdda2('0x8')](),controller['update']);router[_0xdda2('0x1d')](_0xdda2('0x1e'),auth[_0xdda2('0x8')](),controller['destroy']);router[_0xdda2('0x1d')]('/:id/dispositions',auth[_0xdda2('0x8')](),controller[_0xdda2('0x1f')]);router['delete'](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x20')]);router[_0xdda2('0x1d')](_0xdda2('0x21'),auth['isAuthenticated'](),controller[_0xdda2('0x22')]);module[_0xdda2('0x23')]=router;
\ No newline at end of file
+var _0x8e3f=['addDisposition','addAgents','addApplications','/:id/notify','/:id/send','send','put','update','destroy','delete','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x518c3e,_0x1d906f){var _0x54236f=function(_0x28dc67){while(--_0x28dc67){_0x518c3e['push'](_0x518c3e['shift']());}};_0x54236f(++_0x1d906f);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8e3f[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var path=require(_0xf8e3('0x2'));var timeout=require('connect-timeout');var express=require(_0xf8e3('0x3'));var router=express[_0xf8e3('0x4')]();var fs_extra=require(_0xf8e3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var controller=require('./whatsappAccount.controller');router[_0xf8e3('0x8')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xa')]);router[_0xf8e3('0x8')]('/describe',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xb')]);router[_0xf8e3('0x8')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xd')]);router[_0xf8e3('0x8')](_0xf8e3('0xe'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xf')]);router[_0xf8e3('0x8')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller[_0xf8e3('0x11')]);router[_0xf8e3('0x8')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x13')]);router[_0xf8e3('0x8')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller['getApplications']);router[_0xf8e3('0x15')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x16')]);router['post'](_0xf8e3('0xe'),auth['isAuthenticated'](),controller[_0xf8e3('0x17')]);router[_0xf8e3('0x15')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller['addAnswer']);router[_0xf8e3('0x15')](_0xf8e3('0x12'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x18')]);router[_0xf8e3('0x15')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x19')]);router[_0xf8e3('0x15')](_0xf8e3('0x1a'),controller['notify']);router[_0xf8e3('0x15')](_0xf8e3('0x1b'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1c')]);router[_0xf8e3('0x1d')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1e')]);router['delete'](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1f')]);router[_0xf8e3('0x20')]('/:id/dispositions',auth[_0xf8e3('0x9')](),controller['removeDispositions']);router[_0xf8e3('0x20')](_0xf8e3('0x10'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x21')]);router[_0xf8e3('0x20')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x22')]);module[_0xf8e3('0x23')]=router;
\ No newline at end of file
index 7e6fcc3..567737a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb06=['setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','name','STRING','generate','ENUM','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x181c02,_0x2f21e6){var _0x17e08c=function(_0x5cd3ba){while(--_0x5cd3ba){_0x181c02['push'](_0x181c02['shift']());}};_0x17e08c(++_0x2f21e6);}(_0xcb06,0x1b5));var _0x6cb0=function(_0x59bd3b,_0x53eff9){_0x59bd3b=_0x59bd3b-0x0;var _0x586c53=_0xcb06[_0x59bd3b];return _0x586c53;};'use strict';var Sequelize=require(_0x6cb0('0x0'));var rs=require(_0x6cb0('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x6cb0('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x6cb0('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x6cb0('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x6cb0('0x3')],'defaultValue':function(){return rs[_0x6cb0('0x4')]();}},'phone':{'type':Sequelize[_0x6cb0('0x3')]},'type':{'type':Sequelize[_0x6cb0('0x5')]('twilio',_0x6cb0('0x6'))},'accountSid':{'type':Sequelize[_0x6cb0('0x3')]},'baseUrl':{'type':Sequelize[_0x6cb0('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x6cb0('0x7')],'defaultValue':function(){return _0x6cb0('0x8');}},'notificationSound':{'type':Sequelize[_0x6cb0('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6cb0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6cb0('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6cb0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6cb0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6cb0('0xa')],'comment':_0x6cb0('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x6cb0('0x9')],'defaultValue':![],'comment':_0x6cb0('0xc'),'set':function(_0x32686d){if(!_0x32686d){this[_0x6cb0('0xd')](_0x6cb0('0xe'),null);}this['setDataValue']('mandatoryDisposition',_0x32686d);}},'description':{'type':Sequelize[_0x6cb0('0x3')]}};
\ No newline at end of file
+var _0x112c=['sequelize','randomstring','exports','name','STRING','generate','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x4c373a,_0x4046c1){var _0x4d7c2d=function(_0x175f02){while(--_0x175f02){_0x4c373a['push'](_0x4c373a['shift']());}};_0x4d7c2d(++_0x4046c1);}(_0x112c,0x1d0));var _0xc112=function(_0x228af7,_0x4e0fe6){_0x228af7=_0x228af7-0x0;var _0x1e88f4=_0x112c[_0x228af7];return _0x1e88f4;};'use strict';var Sequelize=require(_0xc112('0x0'));var rs=require(_0xc112('0x1'));module[_0xc112('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xc112('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xc112('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0xc112('0x4')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xc112('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc112('0x6')](_0xc112('0x7'),_0xc112('0x8'))},'accountSid':{'type':Sequelize[_0xc112('0x4')]},'baseUrl':{'type':Sequelize[_0xc112('0x4')]},'authToken':{'type':Sequelize[_0xc112('0x4')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc112('0x9');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc112('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc112('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc112('0xb')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc112('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc112('0xa')],'comment':_0xc112('0xc')},'mandatoryDisposition':{'type':Sequelize[_0xc112('0xb')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x29b6d5){if(!_0x29b6d5){this[_0xc112('0xd')](_0xc112('0xe'),null);}this[_0xc112('0xd')](_0xc112('0xf'),_0x29b6d5);}},'description':{'type':Sequelize[_0xc112('0x4')]}};
\ No newline at end of file
index 516d2dc..be9bc7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3979=['receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','CmList','List','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','get','WhatsappAccounts','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','order','pick','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','nolimit','addApplications','sequelize','transaction','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','priority','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','WhatsappMessage','applications','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','list','omit','Contacts','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','UserId','unshift','waitForTheAssignedAgent','Start'];(function(_0x552261,_0x4d33c5){var _0xff718c=function(_0x5922a5){while(--_0x5922a5){_0x552261['push'](_0x552261['shift']());}};_0xff718c(++_0x4d33c5);}(_0x3979,0xcf));var _0x9397=function(_0x497a0c,_0x35fa19){_0x497a0c=_0x497a0c-0x0;var _0x8073da=_0x3979[_0x497a0c];return _0x8073da;};'use strict';var emlformat=require(_0x9397('0x0'));var rimraf=require(_0x9397('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9397('0x2'));var rp=require(_0x9397('0x3'));var moment=require(_0x9397('0x4'));var BPromise=require(_0x9397('0x5'));var Mustache=require('mustache');var util=require(_0x9397('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x9397('0x7'));var ejs=require(_0x9397('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9397('0x9'));var squel=require('squel');var crypto=require(_0x9397('0xa'));var jsforce=require(_0x9397('0xb'));var deskjs=require(_0x9397('0xc'));var toCsv=require(_0x9397('0x7'));var querystring=require(_0x9397('0xd'));var Papa=require(_0x9397('0xe'));var Redis=require(_0x9397('0xf'));var authService=require(_0x9397('0x10'));var qs=require(_0x9397('0x11'));var as=require(_0x9397('0x12'));var hardwareService=require(_0x9397('0x13'));var logger=require(_0x9397('0x14'))(_0x9397('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9397('0x16'))['db'];config[_0x9397('0x17')]=_[_0x9397('0x18')](config[_0x9397('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x9397('0x19'))(new Redis(config[_0x9397('0x17')]));require('./whatsappAccount.socket')[_0x9397('0x1a')](socket);var jayson=require(_0x9397('0x1b'));var client=jayson[_0x9397('0x1c')][_0x9397('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x168246,_0x487dcc,_0x486125,_0x5b7c24){return new BPromise(function(_0x3a2081,_0x418154){var _0x262750=_0x5b7c24||client;return _0x262750[_0x9397('0x1e')](_0x168246,_0x486125)[_0x9397('0x1f')](function(_0x1f3786){logger[_0x9397('0x20')](_0x9397('0x21'),_0x487dcc,_0x9397('0x22'));logger[_0x9397('0x23')](_0x9397('0x24'),_0x487dcc,_0x9397('0x22'),JSON[_0x9397('0x25')](_0x1f3786));if(_0x1f3786[_0x9397('0x26')]){if(_0x1f3786['error'][_0x9397('0x27')]===0x1f4){logger[_0x9397('0x26')](_0x9397('0x21'),_0x487dcc,_0x1f3786['error'][_0x9397('0x28')]);return _0x418154(_0x1f3786[_0x9397('0x26')]['message']);}logger[_0x9397('0x26')](_0x9397('0x21'),_0x487dcc,_0x1f3786[_0x9397('0x26')][_0x9397('0x28')]);return _0x3a2081(_0x1f3786['error'][_0x9397('0x28')]);}else{logger[_0x9397('0x20')](_0x9397('0x21'),_0x487dcc,_0x9397('0x22'));_0x3a2081(_0x1f3786[_0x9397('0x29')][_0x9397('0x28')]);}})[_0x9397('0x2a')](function(_0x5ceb5f){logger[_0x9397('0x26')](_0x9397('0x21'),_0x487dcc,_0x5ceb5f);_0x418154(_0x5ceb5f);});});}function respondWithStatusCode(_0x1098ea,_0x3d88ac){_0x3d88ac=_0x3d88ac||0xcc;return function(_0x5d7d41){if(_0x5d7d41){return _0x1098ea[_0x9397('0x2b')](_0x3d88ac);}return _0x1098ea[_0x9397('0x2c')](_0x3d88ac)['end']();};}function respondWithResult(_0x25c636,_0x18b9ce){_0x18b9ce=_0x18b9ce||0xc8;return function(_0xd16345){if(_0xd16345){return _0x25c636[_0x9397('0x2c')](_0x18b9ce)[_0x9397('0x2d')](_0xd16345);}};}function respondWithFilteredResult(_0x315694,_0x101514){return function(_0xb70a74){if(_0xb70a74){var _0x554c61=typeof _0x101514[_0x9397('0x2e')]===_0x9397('0x2f')&&typeof _0x101514[_0x9397('0x30')]===_0x9397('0x2f');var _0x599bf6=_0xb70a74[_0x9397('0x31')];var _0x58036e=_0x554c61?0x0:_0x101514[_0x9397('0x2e')];var _0x28fc7e=_0x554c61?_0xb70a74[_0x9397('0x31')]:_0x101514[_0x9397('0x2e')]+_0x101514[_0x9397('0x30')];var _0x52e5b4;if(_0x28fc7e>=_0x599bf6){_0x28fc7e=_0x599bf6;_0x52e5b4=0xc8;}else{_0x52e5b4=0xce;}_0x315694['status'](_0x52e5b4);return _0x315694[_0x9397('0x32')]('Content-Range',_0x58036e+'-'+_0x28fc7e+'/'+_0x599bf6)[_0x9397('0x2d')](_0xb70a74);}return null;};}function patchUpdates(_0x2e3477){return function(_0x3c5193){try{jsonpatch[_0x9397('0x33')](_0x3c5193,_0x2e3477,!![]);}catch(_0x487561){return BPromise[_0x9397('0x34')](_0x487561);}return _0x3c5193[_0x9397('0x35')]();};}function saveUpdates(_0x444988,_0x145ce4){return function(_0xfe8f97){if(_0xfe8f97){return _0xfe8f97[_0x9397('0x36')](_0x444988)['then'](function(_0x36ea33){return _0x36ea33;});}return null;};}function removeEntity(_0x224f0f,_0x4d3271){return function(_0x284fe4){if(_0x284fe4){return _0x284fe4[_0x9397('0x37')]()[_0x9397('0x1f')](function(){var _0x4111e6=_0x284fe4[_0x9397('0x38')]({'plain':!![]});var _0x356d5d=_0x9397('0x39');return db[_0x9397('0x3a')]['destroy']({'where':{'type':_0x356d5d,'resourceId':_0x4111e6['id']}})[_0x9397('0x1f')](function(){return _0x284fe4;});})[_0x9397('0x1f')](function(){_0x224f0f[_0x9397('0x2c')](0xcc)[_0x9397('0x3b')]();});}};}function handleEntityNotFound(_0x4b6d80,_0xc6e00){return function(_0x3ce913){if(!_0x3ce913){_0x4b6d80[_0x9397('0x2b')](0x194);}return _0x3ce913;};}function handleError(_0x4feca2,_0x89b74a){_0x89b74a=_0x89b74a||0x1f4;return function(_0x24e6e2){logger[_0x9397('0x26')](_0x24e6e2[_0x9397('0x3c')]);if(_0x24e6e2[_0x9397('0x3d')]){delete _0x24e6e2['name'];}_0x4feca2[_0x9397('0x2c')](_0x89b74a)[_0x9397('0x3e')](_0x24e6e2);};}exports[_0x9397('0x3f')]=function(_0xda368,_0x1a127a){var _0x3381f2={'include':[{'model':db[_0x9397('0x40')],'as':_0x9397('0x41')}]},_0x1e14f9={},_0x3098a7={'count':0x0,'rows':[]};var _0x5de033=_[_0x9397('0x42')](db[_0x9397('0x43')][_0x9397('0x44')],function(_0x1e4895){return{'name':_0x1e4895['fieldName'],'type':_0x1e4895['type'][_0x9397('0x45')]};});_0x1e14f9[_0x9397('0x46')]=_[_0x9397('0x42')](_0x5de033,'name');_0x1e14f9[_0x9397('0x47')]=_[_0x9397('0x48')](_0xda368['query']);_0x1e14f9[_0x9397('0x49')]=_[_0x9397('0x4a')](_0x1e14f9[_0x9397('0x46')],_0x1e14f9[_0x9397('0x47')]);_0x3381f2[_0x9397('0x4b')]=_[_0x9397('0x4a')](_0x1e14f9[_0x9397('0x46')],qs[_0x9397('0x4c')](_0xda368[_0x9397('0x47')][_0x9397('0x4c')]));_0x3381f2[_0x9397('0x4b')]=_0x3381f2['attributes'][_0x9397('0x4d')]?_0x3381f2[_0x9397('0x4b')]:_0x1e14f9['model'];if(!_0xda368['query'][_0x9397('0x4e')]('nolimit')){_0x3381f2['limit']=qs[_0x9397('0x30')](_0xda368[_0x9397('0x47')]['limit']);_0x3381f2[_0x9397('0x2e')]=qs[_0x9397('0x2e')](_0xda368[_0x9397('0x47')][_0x9397('0x2e')]);}_0x3381f2['order']=qs[_0x9397('0x4f')](_0xda368[_0x9397('0x47')][_0x9397('0x4f')]);_0x3381f2[_0x9397('0x50')]=qs[_0x9397('0x49')](_['pick'](_0xda368[_0x9397('0x47')],_0x1e14f9[_0x9397('0x49')]),_0x5de033);if(_0xda368[_0x9397('0x47')][_0x9397('0x51')]){_0x3381f2[_0x9397('0x50')]=_['merge'](_0x3381f2[_0x9397('0x50')],{'$or':_[_0x9397('0x42')](_0x5de033,function(_0x35b4d4){if(_0x35b4d4[_0x9397('0x52')]!==_0x9397('0x53')){var _0x14dce1={};_0x14dce1[_0x35b4d4['name']]={'$like':'%'+_0xda368[_0x9397('0x47')][_0x9397('0x51')]+'%'};return _0x14dce1;}})});}_0x3381f2=_['merge']({},_0x3381f2,_0xda368[_0x9397('0x54')]);var _0x38c5ee={'where':_0x3381f2[_0x9397('0x50')]};return db[_0x9397('0x43')]['count'](_0x38c5ee)[_0x9397('0x1f')](function(_0x5412f5){_0x3098a7[_0x9397('0x31')]=_0x5412f5;if(_0xda368[_0x9397('0x47')][_0x9397('0x55')]){_0x3381f2[_0x9397('0x56')]=[{'all':!![]}];}return db['WhatsappAccount'][_0x9397('0x57')](_0x3381f2);})['then'](function(_0x39716c){_0x3098a7[_0x9397('0x58')]=_0x39716c;return _0x3098a7;})[_0x9397('0x1f')](respondWithFilteredResult(_0x1a127a,_0x3381f2))[_0x9397('0x2a')](handleError(_0x1a127a,null));};exports['show']=function(_0x51a017,_0xeb5a7a){var _0x1975b2={'raw':![],'where':{'id':_0x51a017['params']['id']},'include':[{'model':db['Pause'],'as':_0x9397('0x41')}]},_0x261b2a={};_0x261b2a[_0x9397('0x46')]=_[_0x9397('0x48')](db[_0x9397('0x43')]['rawAttributes']);_0x261b2a[_0x9397('0x47')]=_[_0x9397('0x48')](_0x51a017[_0x9397('0x47')]);_0x261b2a['filters']=_[_0x9397('0x4a')](_0x261b2a[_0x9397('0x46')],_0x261b2a[_0x9397('0x47')]);_0x1975b2[_0x9397('0x4b')]=_['intersection'](_0x261b2a[_0x9397('0x46')],qs['fields'](_0x51a017[_0x9397('0x47')]['fields']));_0x1975b2[_0x9397('0x4b')]=_0x1975b2[_0x9397('0x4b')][_0x9397('0x4d')]?_0x1975b2['attributes']:_0x261b2a['model'];if(_0x51a017[_0x9397('0x47')][_0x9397('0x55')]){_0x1975b2[_0x9397('0x56')]=[{'all':!![]}];}_0x1975b2=_[_0x9397('0x59')]({},_0x1975b2,_0x51a017[_0x9397('0x54')]);return db[_0x9397('0x43')][_0x9397('0x5a')](_0x1975b2)[_0x9397('0x1f')](handleEntityNotFound(_0xeb5a7a,null))['then'](respondWithResult(_0xeb5a7a,null))['catch'](handleError(_0xeb5a7a,null));};exports['create']=function(_0x472f33,_0x50510a){return db['WhatsappAccount'][_0x9397('0x5b')](_0x472f33[_0x9397('0x5c')],{})[_0x9397('0x1f')](function(_0x2c18ee){var _0x2d5f72=_0x472f33[_0x9397('0x5d')]['get']({'plain':!![]});if(!_0x2d5f72)throw new Error(_0x9397('0x5e'));if(_0x2d5f72[_0x9397('0x5f')]===_0x9397('0x5d')){var _0x1c0e52=_0x2c18ee[_0x9397('0x38')]({'plain':!![]});var _0x101a2a=_0x9397('0x39');return db[_0x9397('0x60')][_0x9397('0x5a')]({'where':{'name':_0x101a2a,'userProfileId':_0x2d5f72[_0x9397('0x61')]},'raw':!![]})['then'](function(_0x387f4a){if(_0x387f4a&&_0x387f4a['autoAssociation']===0x0){return db[_0x9397('0x3a')][_0x9397('0x5b')]({'name':_0x1c0e52[_0x9397('0x3d')],'resourceId':_0x1c0e52['id'],'type':_0x387f4a[_0x9397('0x3d')],'sectionId':_0x387f4a['id']},{})[_0x9397('0x1f')](function(){return _0x2c18ee;});}else{return _0x2c18ee;}})[_0x9397('0x2a')](function(_0x356291){logger['error'](_0x9397('0x62'),_0x356291);throw _0x356291;});}return _0x2c18ee;})[_0x9397('0x1f')](respondWithResult(_0x50510a,0xc9))[_0x9397('0x2a')](handleError(_0x50510a,null));};exports['update']=function(_0x12c34c,_0x167a77){if(_0x12c34c['body']['id']){delete _0x12c34c[_0x9397('0x5c')]['id'];}return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x12c34c[_0x9397('0x63')]['id']},'include':[{'model':db[_0x9397('0x40')],'as':_0x9397('0x41')}]})[_0x9397('0x1f')](handleEntityNotFound(_0x167a77,null))[_0x9397('0x1f')](saveUpdates(_0x12c34c[_0x9397('0x5c')],null))['then'](respondWithResult(_0x167a77,null))[_0x9397('0x2a')](handleError(_0x167a77,null));};exports[_0x9397('0x37')]=function(_0x2209f1,_0x3bb1dc){return db['WhatsappAccount']['find']({'where':{'id':_0x2209f1[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x3bb1dc,null))[_0x9397('0x1f')](removeEntity(_0x3bb1dc,null))[_0x9397('0x2a')](handleError(_0x3bb1dc,null));};exports[_0x9397('0x64')]=function(_0xfbf740,_0x511104){return db[_0x9397('0x43')][_0x9397('0x64')]()[_0x9397('0x1f')](respondWithResult(_0x511104,null))[_0x9397('0x2a')](handleError(_0x511104,null));};exports[_0x9397('0x65')]=function(_0x49a653,_0x474447,_0x3efb64){if(_0x49a653['body']['id']){delete _0x49a653[_0x9397('0x5c')]['id'];}return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x49a653[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x474447,null))[_0x9397('0x1f')](function(_0x3ec577){if(_0x3ec577){_0x49a653[_0x9397('0x5c')][_0x9397('0x66')]=_0x3ec577['id'];return db[_0x9397('0x67')][_0x9397('0x5b')](_0x49a653['body']);}})[_0x9397('0x1f')](respondWithResult(_0x474447,null))[_0x9397('0x2a')](handleError(_0x474447,null));};exports[_0x9397('0x68')]=function(_0x53b8a6,_0x2eaa89,_0x5e1ae9){var _0x1fefb4={'raw':![],'where':{}};var _0x5891fc={};var _0x2e2844={'count':0x0,'rows':[]};return db[_0x9397('0x43')][_0x9397('0x69')]({'where':{'id':_0x53b8a6[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x2eaa89,null))[_0x9397('0x1f')](function(_0x1ef3ef){if(_0x1ef3ef){_0x5891fc['model']=_[_0x9397('0x48')](db[_0x9397('0x67')][_0x9397('0x44')]);_0x5891fc[_0x9397('0x47')]=_[_0x9397('0x48')](_0x53b8a6[_0x9397('0x47')]);_0x5891fc[_0x9397('0x49')]=_[_0x9397('0x4a')](_0x5891fc['model'],_0x5891fc[_0x9397('0x47')]);_0x1fefb4['attributes']=_[_0x9397('0x4a')](_0x5891fc[_0x9397('0x46')],qs[_0x9397('0x4c')](_0x53b8a6[_0x9397('0x47')][_0x9397('0x4c')]));_0x1fefb4[_0x9397('0x4b')]=_0x1fefb4['attributes']['length']?_0x1fefb4[_0x9397('0x4b')]:_0x5891fc['model'];if(!_0x53b8a6[_0x9397('0x47')][_0x9397('0x4e')]('nolimit')){_0x1fefb4[_0x9397('0x30')]=qs[_0x9397('0x30')](_0x53b8a6[_0x9397('0x47')][_0x9397('0x30')]);_0x1fefb4[_0x9397('0x2e')]=qs[_0x9397('0x2e')](_0x53b8a6[_0x9397('0x47')][_0x9397('0x2e')]);}_0x1fefb4['order']=qs[_0x9397('0x4f')](_0x53b8a6[_0x9397('0x47')]['sort']);_0x1fefb4[_0x9397('0x50')]=qs[_0x9397('0x49')](_['pick'](_0x53b8a6[_0x9397('0x47')],_0x5891fc[_0x9397('0x49')]));_0x1fefb4[_0x9397('0x50')][_0x9397('0x66')]=_0x1ef3ef['id'];if(_0x53b8a6[_0x9397('0x47')]['filter']){_0x1fefb4[_0x9397('0x50')]=_[_0x9397('0x59')](_0x1fefb4[_0x9397('0x50')],{'$or':_['map'](_0x1fefb4[_0x9397('0x4b')],function(_0x4acc3e){var _0x5becc8={};_0x5becc8[_0x4acc3e]={'$like':'%'+_0x53b8a6[_0x9397('0x47')]['filter']+'%'};return _0x5becc8;})});}_0x1fefb4=_[_0x9397('0x59')]({},_0x1fefb4,_0x53b8a6[_0x9397('0x54')]);return db[_0x9397('0x67')][_0x9397('0x31')]({'where':_0x1fefb4[_0x9397('0x50')]})[_0x9397('0x1f')](function(_0x561c6d){_0x2e2844[_0x9397('0x31')]=_0x561c6d;if(_0x53b8a6[_0x9397('0x47')]['includeAll']){_0x1fefb4[_0x9397('0x56')]=[{'all':!![]}];}return db['Disposition'][_0x9397('0x57')](_0x1fefb4);})[_0x9397('0x1f')](function(_0x11860d){_0x2e2844[_0x9397('0x58')]=_0x11860d;return _0x2e2844;});}})['then'](respondWithFilteredResult(_0x2eaa89,_0x1fefb4))['catch'](handleError(_0x2eaa89,null));};exports[_0x9397('0x6a')]=function(_0x4edefb,_0x135219,_0x5e715f){return db['WhatsappAccount'][_0x9397('0x5a')]({'where':{'id':_0x4edefb[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x135219,null))[_0x9397('0x1f')](function(_0x23a66c){if(_0x23a66c){return _0x23a66c['removeDispositions'](_0x4edefb['query'][_0x9397('0x6b')]);}})[_0x9397('0x1f')](respondWithStatusCode(_0x135219,null))['catch'](handleError(_0x135219,null));};exports[_0x9397('0x6c')]=function(_0x2175a6,_0x192ccd,_0x4cce73){if(_0x2175a6['body']['id']){delete _0x2175a6[_0x9397('0x5c')]['id'];}return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x2175a6[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x192ccd,null))[_0x9397('0x1f')](function(_0x4c819d){if(_0x4c819d){_0x2175a6['body'][_0x9397('0x66')]=_0x4c819d['id'];return db[_0x9397('0x6d')][_0x9397('0x5b')](_0x2175a6['body']);}})[_0x9397('0x1f')](respondWithResult(_0x192ccd,null))[_0x9397('0x2a')](handleError(_0x192ccd,null));};exports['getAnswers']=function(_0x469078,_0x315315,_0x279f84){var _0x5be73e={'raw':![],'where':{}};var _0x137c07={};var _0x3f1c00={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x9397('0x69')]({'where':{'id':_0x469078['params']['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x315315,null))[_0x9397('0x1f')](function(_0x2bbb37){if(_0x2bbb37){_0x137c07[_0x9397('0x46')]=_[_0x9397('0x48')](db[_0x9397('0x6d')][_0x9397('0x44')]);_0x137c07[_0x9397('0x47')]=_['keys'](_0x469078[_0x9397('0x47')]);_0x137c07[_0x9397('0x49')]=_[_0x9397('0x4a')](_0x137c07['model'],_0x137c07['query']);_0x5be73e[_0x9397('0x4b')]=_['intersection'](_0x137c07['model'],qs[_0x9397('0x4c')](_0x469078[_0x9397('0x47')][_0x9397('0x4c')]));_0x5be73e[_0x9397('0x4b')]=_0x5be73e['attributes'][_0x9397('0x4d')]?_0x5be73e[_0x9397('0x4b')]:_0x137c07[_0x9397('0x46')];if(!_0x469078[_0x9397('0x47')]['hasOwnProperty']('nolimit')){_0x5be73e[_0x9397('0x30')]=qs[_0x9397('0x30')](_0x469078[_0x9397('0x47')][_0x9397('0x30')]);_0x5be73e['offset']=qs['offset'](_0x469078[_0x9397('0x47')][_0x9397('0x2e')]);}_0x5be73e[_0x9397('0x6e')]=qs['sort'](_0x469078['query']['sort']);_0x5be73e['where']=qs['filters'](_[_0x9397('0x6f')](_0x469078[_0x9397('0x47')],_0x137c07[_0x9397('0x49')]));_0x5be73e[_0x9397('0x50')][_0x9397('0x66')]=_0x2bbb37['id'];if(_0x469078[_0x9397('0x47')]['filter']){_0x5be73e[_0x9397('0x50')]=_[_0x9397('0x59')](_0x5be73e[_0x9397('0x50')],{'$or':_[_0x9397('0x42')](_0x5be73e[_0x9397('0x4b')],function(_0x1a8b92){var _0xb24633={};_0xb24633[_0x1a8b92]={'$like':'%'+_0x469078[_0x9397('0x47')][_0x9397('0x51')]+'%'};return _0xb24633;})});}_0x5be73e=_[_0x9397('0x59')]({},_0x5be73e,_0x469078['options']);return db[_0x9397('0x6d')][_0x9397('0x31')]({'where':_0x5be73e[_0x9397('0x50')]})[_0x9397('0x1f')](function(_0xee25b2){_0x3f1c00[_0x9397('0x31')]=_0xee25b2;if(_0x469078['query'][_0x9397('0x55')]){_0x5be73e[_0x9397('0x56')]=[{'all':!![]}];}return db[_0x9397('0x6d')]['findAll'](_0x5be73e);})[_0x9397('0x1f')](function(_0x213c0f){_0x3f1c00[_0x9397('0x58')]=_0x213c0f;return _0x3f1c00;});}})[_0x9397('0x1f')](respondWithFilteredResult(_0x315315,_0x5be73e))[_0x9397('0x2a')](handleError(_0x315315,null));};exports[_0x9397('0x70')]=function(_0x505970,_0x46d611,_0x3433c7){return db['WhatsappAccount'][_0x9397('0x5a')]({'where':{'id':_0x505970['params']['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x46d611,null))[_0x9397('0x1f')](function(_0x4e86f5){if(_0x4e86f5){return _0x4e86f5[_0x9397('0x70')](_0x505970[_0x9397('0x47')][_0x9397('0x6b')]);}})['then'](respondWithStatusCode(_0x46d611,null))[_0x9397('0x2a')](handleError(_0x46d611,null));};exports[_0x9397('0x71')]=function(_0x250d3f,_0x3bab3b,_0x1363d9){return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x250d3f[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x3bab3b,null))[_0x9397('0x1f')](function(_0x25ca2d){if(_0x25ca2d){return _0x25ca2d[_0x9397('0x71')](_0x250d3f[_0x9397('0x5c')][_0x9397('0x6b')],_['omit'](_0x250d3f['body'],['ids','id'])||{})[_0x9397('0x72')](function(_0x3d564e){for(var _0x799529=0x0;_0x799529<_0x250d3f[_0x9397('0x5c')][_0x9397('0x6b')]['length'];_0x799529+=0x1){socket[_0x9397('0x73')](_0x9397('0x74'),{'UserId':Number(_0x250d3f[_0x9397('0x5c')][_0x9397('0x6b')][_0x799529]),'WhatsappAccountId':Number(_0x250d3f[_0x9397('0x63')]['id'])});}return _0x3d564e;});}})[_0x9397('0x1f')](respondWithResult(_0x3bab3b,null))['catch'](handleError(_0x3bab3b,null));};exports[_0x9397('0x75')]=function(_0x38312b,_0x52454d,_0x140d02){return db[_0x9397('0x43')]['find']({'where':{'id':_0x38312b[_0x9397('0x63')]['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x52454d,null))[_0x9397('0x1f')](function(_0xbc10f){if(_0xbc10f){return _0xbc10f[_0x9397('0x75')](_0x38312b[_0x9397('0x47')][_0x9397('0x6b')])[_0x9397('0x1f')](function(){if(_[_0x9397('0x76')](_0x38312b[_0x9397('0x47')]['ids'])){for(var _0x21d38a=0x0;_0x21d38a<_0x38312b['query'][_0x9397('0x6b')][_0x9397('0x4d')];_0x21d38a+=0x1){socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0x38312b[_0x9397('0x47')][_0x9397('0x6b')][_0x21d38a]),'WhatsappAccountId':Number(_0x38312b['params']['id'])});}}else{socket[_0x9397('0x73')](_0x9397('0x77'),{'UserId':Number(_0x38312b[_0x9397('0x47')]['ids']),'WhatsappAccountId':Number(_0x38312b[_0x9397('0x63')]['id'])});}});}})[_0x9397('0x1f')](respondWithStatusCode(_0x52454d,null))[_0x9397('0x2a')](handleError(_0x52454d,null));};exports[_0x9397('0x78')]=function(_0x350fdd,_0x422431,_0x2b83a9){var _0x524917={};var _0x159ee5={};var _0x369b87;var _0x4c47a2;return db[_0x9397('0x43')]['findOne']({'where':{'id':_0x350fdd['params']['id']}})['then'](handleEntityNotFound(_0x422431,null))[_0x9397('0x1f')](function(_0x152212){if(_0x152212){_0x369b87=_0x152212;_0x159ee5[_0x9397('0x46')]=_['keys'](db[_0x9397('0x79')][_0x9397('0x44')]);_0x159ee5[_0x9397('0x47')]=_[_0x9397('0x48')](_0x350fdd[_0x9397('0x47')]);_0x159ee5[_0x9397('0x49')]=_[_0x9397('0x4a')](_0x159ee5[_0x9397('0x46')],_0x159ee5[_0x9397('0x47')]);_0x524917[_0x9397('0x4b')]=_['intersection'](_0x159ee5['model'],qs[_0x9397('0x4c')](_0x350fdd[_0x9397('0x47')][_0x9397('0x4c')]));_0x524917[_0x9397('0x4b')]=_0x524917[_0x9397('0x4b')]['length']?_0x524917['attributes']:_0x159ee5[_0x9397('0x46')];_0x524917[_0x9397('0x6e')]=qs[_0x9397('0x4f')](_0x350fdd[_0x9397('0x47')][_0x9397('0x4f')]);_0x524917['where']=qs[_0x9397('0x49')](_[_0x9397('0x6f')](_0x350fdd[_0x9397('0x47')],_0x159ee5[_0x9397('0x49')]));if(_0x350fdd[_0x9397('0x47')][_0x9397('0x51')]){_0x524917[_0x9397('0x50')]=_[_0x9397('0x59')](_0x524917[_0x9397('0x50')],{'$or':_[_0x9397('0x42')](_0x524917[_0x9397('0x4b')],function(_0x2b2bc6){var _0x6dda87={};_0x6dda87[_0x2b2bc6]={'$like':'%'+_0x350fdd[_0x9397('0x47')]['filter']+'%'};return _0x6dda87;})});}_0x524917=_[_0x9397('0x59')]({},_0x524917,_0x350fdd[_0x9397('0x54')]);return _0x369b87[_0x9397('0x78')](_0x524917);}})[_0x9397('0x1f')](function(_0x1562d8){if(_0x1562d8){_0x4c47a2=_0x1562d8[_0x9397('0x4d')];if(!_0x350fdd[_0x9397('0x47')][_0x9397('0x4e')](_0x9397('0x7a'))){_0x524917[_0x9397('0x30')]=qs[_0x9397('0x30')](_0x350fdd['query'][_0x9397('0x30')]);_0x524917[_0x9397('0x2e')]=qs[_0x9397('0x2e')](_0x350fdd[_0x9397('0x47')]['offset']);}return _0x369b87['getAgents'](_0x524917);}})['then'](function(_0x507740){if(_0x507740){return _0x507740?{'count':_0x4c47a2,'rows':_0x507740}:null;}})[_0x9397('0x1f')](respondWithResult(_0x422431,null))['catch'](handleError(_0x422431,null));};exports[_0x9397('0x7b')]=function(_0x15b210,_0x2da2cc){var _0x52b950=_0x15b210['params']['id'];var _0x22699b=_0x15b210[_0x9397('0x5c')];var _0x2ffab9=0xc8;var _0x3b1f8f=null;return db[_0x9397('0x7c')][_0x9397('0x7d')]({'isolationLevel':db[_0x9397('0x7c')]['Transaction'][_0x9397('0x7e')]['READ_COMMITTED']},function(_0x53f0ed){return db[_0x9397('0x43')]['findOne']({'where':{'id':_0x52b950},'transaction':_0x53f0ed})[_0x9397('0x1f')](function(_0x55f219){if(_0x55f219){return db[_0x9397('0x7f')]['destroy']({'where':{'WhatsappAccountId':_0x52b950},'transaction':_0x53f0ed})['then'](function(){var _0x5e0d86=_[_0x9397('0x42')](_0x22699b,function(_0x415ac2){_0x415ac2[_0x9397('0x66')]=_0x52b950;return _0x415ac2;});return db['WhatsappApplication'][_0x9397('0x80')](_0x5e0d86,{'transaction':_0x53f0ed});});}else{_0x2ffab9=0x194;_0x3b1f8f=[];}});})[_0x9397('0x1f')](function(){if(_0x2ffab9!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x52b950},'order':_0x9397('0x81')})['then'](function(_0x3bd4c1){_0x3b1f8f=_0x3bd4c1;});}})['catch'](function(_0xd4201a){_0x2ffab9=0x1f4;logger[_0x9397('0x26')](_0xd4201a[_0x9397('0x3c')]);if(_0xd4201a[_0x9397('0x3d')]){delete _0xd4201a[_0x9397('0x3d')];}_0x3b1f8f=_0xd4201a;})[_0x9397('0x82')](function(){if(_0x3b1f8f===null){_0x2da2cc[_0x9397('0x2b')](_0x2ffab9);}else{if(_0x2ffab9===0x1f4){_0x2da2cc['status'](_0x2ffab9)['send'](_0x3b1f8f);}else{_0x2da2cc[_0x9397('0x2c')](_0x2ffab9)[_0x9397('0x2d')](_0x3b1f8f);}}});};exports[_0x9397('0x83')]=function(_0x4cb283,_0x4968f7,_0x1d422f){var _0x3d92cc={};var _0x3fcfec={};var _0x5ee00f;var _0x5eaa45;return db[_0x9397('0x43')]['findOne']({'where':{'id':_0x4cb283['params']['id']}})[_0x9397('0x1f')](handleEntityNotFound(_0x4968f7,null))[_0x9397('0x1f')](function(_0x316fe9){if(_0x316fe9){_0x5ee00f=_0x316fe9;_0x3fcfec[_0x9397('0x46')]=_['keys'](db[_0x9397('0x7f')][_0x9397('0x44')]);_0x3fcfec['query']=_[_0x9397('0x48')](_0x4cb283[_0x9397('0x47')]);_0x3fcfec[_0x9397('0x49')]=_[_0x9397('0x4a')](_0x3fcfec[_0x9397('0x46')],_0x3fcfec[_0x9397('0x47')]);_0x3d92cc['attributes']=_[_0x9397('0x4a')](_0x3fcfec[_0x9397('0x46')],qs[_0x9397('0x4c')](_0x4cb283['query'][_0x9397('0x4c')]));_0x3d92cc[_0x9397('0x4b')]=_0x3d92cc[_0x9397('0x4b')]['length']?_0x3d92cc[_0x9397('0x4b')]:_0x3fcfec[_0x9397('0x46')];_0x3d92cc[_0x9397('0x6e')]=qs[_0x9397('0x4f')](_0x4cb283['query'][_0x9397('0x4f')]);_0x3d92cc[_0x9397('0x50')]=qs['filters'](_[_0x9397('0x6f')](_0x4cb283[_0x9397('0x47')],_0x3fcfec[_0x9397('0x49')]));if(_0x4cb283[_0x9397('0x47')][_0x9397('0x51')]){_0x3d92cc['where']=_[_0x9397('0x59')](_0x3d92cc[_0x9397('0x50')],{'$or':_[_0x9397('0x42')](_0x3d92cc['attributes'],function(_0x188a3a){var _0x5f5a53={};_0x5f5a53[_0x188a3a]={'$like':'%'+_0x4cb283['query'][_0x9397('0x51')]+'%'};return _0x5f5a53;})});}_0x3d92cc=_['merge']({},_0x3d92cc,_0x4cb283[_0x9397('0x54')]);return _0x5ee00f[_0x9397('0x83')](_0x3d92cc);}})[_0x9397('0x1f')](function(_0x556fa9){if(_0x556fa9){_0x5eaa45=_0x556fa9[_0x9397('0x4d')];if(!_0x4cb283['query'][_0x9397('0x4e')]('nolimit')){_0x3d92cc[_0x9397('0x30')]=qs['limit'](_0x4cb283[_0x9397('0x47')][_0x9397('0x30')]);_0x3d92cc[_0x9397('0x2e')]=qs[_0x9397('0x2e')](_0x4cb283[_0x9397('0x47')][_0x9397('0x2e')]);}return _0x5ee00f[_0x9397('0x83')](_0x3d92cc);}})['then'](function(_0x504304){if(_0x504304){return _0x504304?{'count':_0x5eaa45,'rows':_0x504304}:null;}})['then'](respondWithResult(_0x4968f7,null))[_0x9397('0x2a')](handleError(_0x4968f7,null));};exports[_0x9397('0x84')]=function(_0x11dac8,_0x1d0424,_0x5051e8){var _0x4c9968={'channel':_0x9397('0x85')};var _0x550982=[];var _0x346db0=[];var _0x39b7fc={};return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x11dac8['params']['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x9397('0x86')}]})['then'](handleEntityNotFound(_0x1d0424,null))[_0x9397('0x1f')](function(_0x14b968){_0x4c9968[_0x9397('0x87')]=_0x14b968;if(_0x4c9968[_0x9397('0x87')]&&_0x4c9968['account'][_0x9397('0x52')]===_0x9397('0x88')&&_0x11dac8[_0x9397('0x5c')][_0x9397('0x89')]){if(_0x11dac8[_0x9397('0x5c')][_0x9397('0x89')][_0x9397('0x4d')]===0x0)return;if(_0x11dac8[_0x9397('0x5c')]['statuses'][0x0][_0x9397('0x8a')]!=='read')return;return db[_0x9397('0x8b')][_0x9397('0x36')]({'read':!![],'readAt':_0x11dac8[_0x9397('0x5c')]['statuses'][0x0]['timestamp']},{'where':{'messageId':_0x11dac8['body'][_0x9397('0x89')][0x0]['message_id']},'individualHooks':!![]})[_0x9397('0x1f')](function(_0x32096e){return _0x1d0424['status'](0xc8)['json'](_0x32096e);});}_0x4c9968[_0x9397('0x8c')]=_[_0x9397('0x8d')](_0x14b968[_0x9397('0x86')],['priority'],[_0x9397('0x8e')]);if(_0x4c9968[_0x9397('0x87')][_0x9397('0x86')]){delete _0x4c9968['account'][_0x9397('0x86')];}return db[_0x9397('0x8f')][_0x9397('0x64')]()['then'](function(_0x52ff3b){if(!_0x52ff3b){throw new db[(_0x9397('0x90'))][(_0x9397('0x91'))](_0x9397('0x92'));}_0x550982=_[_0x9397('0x93')](_[_0x9397('0x48')](_0x52ff3b),['createdAt',_0x9397('0x94')]);_0x346db0=_[_0x9397('0x93')](_[_0x9397('0x48')](_0x52ff3b),[_0x9397('0x95'),_0x9397('0x94'),_0x9397('0x96'),_0x9397('0x97')]);_0x4c9968['body']={'mapKey':_0x9397('0x98')};if(_0x4c9968[_0x9397('0x87')]&&_0x4c9968[_0x9397('0x87')][_0x9397('0x52')]===_0x9397('0x99')){_0x4c9968[_0x9397('0x5c')][_0x9397('0x9a')]=_0x11dac8[_0x9397('0x5c')][_0x9397('0x9b')][_0x9397('0x9c')](_0x9397('0x9d'),'');_0x4c9968[_0x9397('0x5c')][_0x9397('0x5c')]=_0x11dac8['body'][_0x9397('0x9e')];_0x4c9968['body'][_0x9397('0x9f')]=_0x11dac8[_0x9397('0x5c')][_0x9397('0xa0')];}if(_0x4c9968[_0x9397('0x87')]&&_0x4c9968[_0x9397('0x87')]['type']===_0x9397('0x88')){_0x4c9968[_0x9397('0x5c')][_0x9397('0x9a')]=_0x11dac8[_0x9397('0x5c')][_0x9397('0xa1')][0x0]['from'];_0x4c9968[_0x9397('0x5c')][_0x9397('0x5c')]=_0x11dac8[_0x9397('0x5c')][_0x9397('0xa1')][0x0][_0x9397('0x28')]['body'];_0x4c9968[_0x9397('0x5c')][_0x9397('0x9f')]=_0x11dac8['body'][_0x9397('0xa1')][0x0]['message_id'];}if(_0x4c9968[_0x9397('0x5c')]['id']){delete _0x4c9968[_0x9397('0x5c')]['id'];}if(_[_0x9397('0xa2')](_0x4c9968['body']['from'])){throw new db['Sequelize'][(_0x9397('0x91'))](_0x9397('0xa3'));}if(_[_0x9397('0xa2')](_0x4c9968[_0x9397('0x5c')][_0x9397('0x5c')])||_0x4c9968[_0x9397('0x5c')][_0x9397('0x5c')]===''){throw new db[(_0x9397('0x90'))][(_0x9397('0x91'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9397('0xa2')](_0x4c9968['body']['mapKey'])){throw new db[(_0x9397('0x90'))]['ValidationError'](_0x9397('0xa4')+_0x346db0);}if(!_[_0x9397('0xa5')](_0x346db0,_0x4c9968[_0x9397('0x5c')][_0x9397('0xa6')])){throw new db[(_0x9397('0x90'))][(_0x9397('0x91'))](_0x9397('0xa7')+_0x346db0);}_0x39b7fc[_0x4c9968[_0x9397('0x5c')]['mapKey']]=_0x4c9968[_0x9397('0x5c')][_0x9397('0x9a')];return db['CmList'][_0x9397('0x5a')]({'where':{'id':_0x4c9968[_0x9397('0x87')]['ListId']},'include':[{'model':db[_0x9397('0x8f')],'as':'Contacts','where':_0x39b7fc,'limit':0x1,'order':[['updatedAt','DESC']]}]});})['then'](handleEntityNotFound(_0x1d0424,null))[_0x9397('0x1f')](function(_0x2f21a4){if(_0x2f21a4){_0x4c9968[_0x9397('0xa8')]=_[_0x9397('0xa9')](_0x2f21a4,[_0x9397('0xaa')]);if(_0x2f21a4['Contacts']['length']){return _0x2f21a4[_0x9397('0xaa')][0x0];}var _0x38434f=_[_0x9397('0x18')](_0x4c9968[_0x9397('0x5c')],{'firstName':_0x4c9968['body']['from'],'ListId':_0x2f21a4['id']});_0x38434f[_0x4c9968['body'][_0x9397('0xa6')]]=_0x4c9968[_0x9397('0x5c')][_0x9397('0x9a')];return db[_0x9397('0x8f')][_0x9397('0x5b')](_0x38434f,{'fields':_0x550982,'raw':!![]});}})[_0x9397('0x1f')](handleEntityNotFound(_0x1d0424,null))['then'](function(_0xd95bba){if(_0xd95bba){_0x4c9968[_0x9397('0xab')]=_0xd95bba;var _0x3d6d79={'ContactId':_0xd95bba['id'],'phone':_0x4c9968['body'][_0x9397('0x9a')],'WhatsappAccountId':_0x11dac8[_0x9397('0x63')]['id']};var _0x1d4df0={'ContactId':_0xd95bba['id'],'WhatsappAccountId':_0x11dac8[_0x9397('0x63')]['id'],'closed':![]};return db[_0x9397('0xac')][_0x9397('0x5a')]({'where':_0x1d4df0})[_0x9397('0x1f')](function(_0x13d103){if(_0x13d103){return[_0x13d103,![]];}return db[_0x9397('0xac')][_0x9397('0x5b')](_0x3d6d79)[_0x9397('0x1f')](function(_0x2d725e){return[_0x2d725e,!![]];});});}})[_0x9397('0x72')](function(_0x2446ab,_0x26a46e){_0x4c9968[_0x9397('0xad')]=_0x2446ab[_0x9397('0x38')]({'plain':!![]});_0x4c9968[_0x9397('0xad')][_0x9397('0xae')]=![];if(_0x26a46e){if(_0x4c9968['account'][_0x9397('0xaf')]){_0x4c9968[_0x9397('0x8c')][_0x9397('0xb0')]({'id':0x0,'priority':_0x4c9968['applications'][_0x9397('0x4d')]+0x1,'app':_0x9397('0xb1'),'appdata':_0x9397('0xb2'),'interval':_0x9397('0xb3')});}_0x4c9968[_0x9397('0xad')]['created']=!![];}return db[_0x9397('0x8b')][_0x9397('0x5b')]({'phone':_0x4c9968[_0x9397('0x5c')][_0x9397('0x9a')],'messageId':_0x4c9968[_0x9397('0x5c')][_0x9397('0x9f')],'body':_0x4c9968[_0x9397('0x5c')]['body'],'WhatsappAccountId':_0x11dac8[_0x9397('0x63')]['id'],'WhatsappInteractionId':_0x2446ab['id'],'direction':'in','ContactId':_0x2446ab[_0x9397('0xb4')],'AttachmentId':_0x4c9968[_0x9397('0x5c')]['AttachmentId']});})[_0x9397('0x1f')](function(_0xc00c8f){_0x4c9968[_0x9397('0x28')]=_0xc00c8f;if(_0x4c9968[_0x9397('0xad')][_0x9397('0xb5')]){return db[_0x9397('0x79')][_0x9397('0x5a')]({'attributes':['id',_0x9397('0x3d')],'where':{'id':_0x4c9968[_0x9397('0xad')][_0x9397('0xb5')]}})[_0x9397('0x1f')](function(_0x4116bc){if(_0x4116bc){_0x4c9968[_0x9397('0x8c')][_0x9397('0xb6')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4116bc[_0x9397('0x3d')]+','+(_0x4c9968['account'][_0x9397('0xb7')]||0xa),'interval':_0x9397('0xb3')});}return respondWithRpcPromise(_0x9397('0xb8'),'startRouting',_0x4c9968);});}return respondWithRpcPromise(_0x9397('0xb8'),'startRouting',_0x4c9968);})['then'](function(_0x2c4b76){if(_0x2c4b76){var _0x252a3b=0xc8;var _0x3d074b=_0x9397('0xb9');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3d074b,_0x252a3b,'entity\x20found');logger[_0x9397('0x23')](_0x9397('0xba'),_0x3d074b,_0x252a3b,'entity\x20found',JSON[_0x9397('0x25')](_0x2c4b76));if(_0x4c9968[_0x9397('0x87')]['type']===_0x9397('0x99')){return _0x1d0424[_0x9397('0x2c')](_0x252a3b)[_0x9397('0x32')](_0x9397('0xbb'),_0x9397('0xbc'))['send'](_0x9397('0xbd'));}else{return _0x1d0424[_0x9397('0x2c')](_0x252a3b)[_0x9397('0x2d')](_0x2c4b76);}}});})['catch'](handleError(_0x1d0424,null));};exports[_0x9397('0x3e')]=function(_0x53c7d5,_0x19469b,_0x28a746){var _0xf55b20,_0x3ec04a,_0x3837fd;if(_[_0x9397('0xa2')](_0x53c7d5[_0x9397('0x5c')]['body'])||_0x53c7d5['body'][_0x9397('0x5c')]===''){throw new db[(_0x9397('0x90'))][(_0x9397('0x91'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x53c7d5['body']['to'])){throw new db[(_0x9397('0x90'))][(_0x9397('0x91'))](_0x9397('0xbe'));}_0xf55b20=_0x53c7d5[_0x9397('0x5c')]['to'];return db[_0x9397('0x43')][_0x9397('0x5a')]({'where':{'id':_0x53c7d5[_0x9397('0x63')]['id']},'include':[{'model':db[_0x9397('0xbf')],'as':_0x9397('0xc0'),'include':[{'model':db[_0x9397('0x8f')],'as':'Contacts','where':{'mobile':_0xf55b20},'limit':0x1,'order':[[_0x9397('0x94'),'DESC']]}]}]})[_0x9397('0x1f')](handleEntityNotFound(_0x19469b,null))['then'](function(_0x4a1fed){if(_0x4a1fed&&_0x4a1fed['List']){_0x3ec04a=_0x4a1fed['get']({'plain':!![]});if(_0x3ec04a[_0x9397('0xc0')]&&_0x3ec04a[_0x9397('0xc0')]['Contacts'][_0x9397('0x4d')]){return _0x3ec04a[_0x9397('0xc0')][_0x9397('0xaa')][0x0];}return db['CmContact'][_0x9397('0x5b')](_[_0x9397('0x18')](_0x53c7d5[_0x9397('0x5c')],{'firstName':_0xf55b20,'mobile':_0xf55b20,'phone':_0xf55b20,'ListId':_0x3ec04a[_0x9397('0x97')]}));}})['then'](handleEntityNotFound(_0x19469b,null))[_0x9397('0x1f')](function(_0x42933d){if(_0x42933d){_0x3837fd=_0x42933d;return db[_0x9397('0xac')][_0x9397('0x5a')]({'where':{'ContactId':_0x3837fd['id'],'closed':![],'WhatsappAccountId':_0x3ec04a['id']}})[_0x9397('0x1f')](function(_0x53577c){if(_0x53577c){return[_0x53577c,![]];}return db[_0x9397('0xac')][_0x9397('0x5b')]({'UserId':_0x53c7d5[_0x9397('0x5d')]['id'],'ContactId':_0x3837fd['id'],'WhatsappAccountId':_0x3ec04a['id'],'phone':_0xf55b20,'firstMsgDirection':_0x9397('0xc1'),'Messages':[_[_0x9397('0x59')](_0x53c7d5[_0x9397('0x5c')],{'read':![],'body':_0x53c7d5[_0x9397('0x5c')][_0x9397('0x5c')],'phone':_0xf55b20,'WhatsappAccountId':_0x3ec04a['id'],'UserId':_0x53c7d5['user']['id'],'ContactId':_0x3837fd['id']})]},{'include':[{'model':db[_0x9397('0x8b')],'as':_0x9397('0xc2')}]})[_0x9397('0x1f')](function(_0xced8c3){return[_0xced8c3,!![]];});});}})[_0x9397('0x72')](function(_0xf8cd73,_0x55cb20){if(_0x55cb20){return _0xf8cd73;}return db[_0x9397('0x8b')][_0x9397('0x5b')](_[_0x9397('0x59')](_0x53c7d5[_0x9397('0x5c')],{'read':![],'body':_0x53c7d5[_0x9397('0x5c')][_0x9397('0x5c')],'phone':_0xf55b20,'WhatsappAccountId':_0x3ec04a['id'],'WhatsappInteractionId':_0xf8cd73['id'],'UserId':_0x53c7d5[_0x9397('0x5d')]['id'],'ContactId':_0x3837fd['id']}))[_0x9397('0x1f')](function(_0x9848dd){_0xf8cd73['dataValues'][_0x9397('0xc2')]=[];_0xf8cd73['dataValues'][_0x9397('0xc2')][_0x9397('0xb0')](_0x9848dd[_0x9397('0xc3')]);return _0xf8cd73;});})[_0x9397('0x1f')](respondWithResult(_0x19469b,null))[_0x9397('0x2a')](handleError(_0x19469b,null));};
\ No newline at end of file
+var _0x1c61=['DESC','list','contact','WhatsappInteraction','interaction','autoclose','push','close','unmanaged','*,*,*,*','created','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./whatsappAccount.socket','register','client','http','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','sendStatus','status','json','offset','set','Content-Range','apply','reject','save','update','destroy','get','WhatsappAccounts','end','stack','name','send','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','merge','VIRTUAL','filter','count','findAll','rows','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','findOne','Disposition','options','includeAll','removeDispositions','CannedAnswer','getAnswers','removeAnswers','ids','addAgents','omit','spread','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','WhatsappApplication','findAndCountAll','priority','finally','getApplications','notify','Applications','account','statuses','state','read','WhatsappMessage','timestamp','applications','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','MessageSid','sinch','notifications','messageId','message_id','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts'];(function(_0x41cef5,_0x30f3ac){var _0x163e9c=function(_0xfeabcb){while(--_0xfeabcb){_0x41cef5['push'](_0x41cef5['shift']());}};_0x163e9c(++_0x30f3ac);}(_0x1c61,0xe0));var _0x11c6=function(_0x2bbc07,_0x1e2168){_0x2bbc07=_0x2bbc07-0x0;var _0x6879e4=_0x1c61[_0x2bbc07];return _0x6879e4;};'use strict';var emlformat=require(_0x11c6('0x0'));var rimraf=require(_0x11c6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x11c6('0x2'));var rp=require('request-promise');var moment=require(_0x11c6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x11c6('0x4'));var util=require(_0x11c6('0x5'));var path=require(_0x11c6('0x6'));var sox=require('sox');var csv=require(_0x11c6('0x7'));var ejs=require(_0x11c6('0x8'));var fs=require('fs');var fs_extra=require(_0x11c6('0x9'));var _=require(_0x11c6('0xa'));var squel=require(_0x11c6('0xb'));var crypto=require('crypto');var jsforce=require(_0x11c6('0xc'));var deskjs=require(_0x11c6('0xd'));var toCsv=require('to-csv');var querystring=require(_0x11c6('0xe'));var Papa=require(_0x11c6('0xf'));var Redis=require(_0x11c6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x11c6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x11c6('0x12'));var logger=require(_0x11c6('0x13'))(_0x11c6('0x14'));var utils=require(_0x11c6('0x15'));var config=require(_0x11c6('0x16'));var licenseUtil=require(_0x11c6('0x17'));var db=require('../../mysqldb')['db'];config[_0x11c6('0x18')]=_[_0x11c6('0x19')](config[_0x11c6('0x18')],{'host':_0x11c6('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x11c6('0x18')]));require(_0x11c6('0x1b'))[_0x11c6('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x11c6('0x1d')][_0x11c6('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0xb5a37c,_0x576466,_0x4cffce,_0x1aeb3f){return new BPromise(function(_0x8dec44,_0x3338e6){var _0x3be23a=_0x1aeb3f||client;return _0x3be23a['request'](_0xb5a37c,_0x4cffce)[_0x11c6('0x1f')](function(_0x38a595){logger['info'](_0x11c6('0x20'),_0x576466,_0x11c6('0x21'));logger[_0x11c6('0x22')](_0x11c6('0x23'),_0x576466,_0x11c6('0x21'),JSON[_0x11c6('0x24')](_0x38a595));if(_0x38a595[_0x11c6('0x25')]){if(_0x38a595[_0x11c6('0x25')]['code']===0x1f4){logger[_0x11c6('0x25')](_0x11c6('0x20'),_0x576466,_0x38a595[_0x11c6('0x25')][_0x11c6('0x26')]);return _0x3338e6(_0x38a595[_0x11c6('0x25')]['message']);}logger[_0x11c6('0x25')](_0x11c6('0x20'),_0x576466,_0x38a595['error'][_0x11c6('0x26')]);return _0x8dec44(_0x38a595[_0x11c6('0x25')]['message']);}else{logger[_0x11c6('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x576466,_0x11c6('0x21'));_0x8dec44(_0x38a595['result'][_0x11c6('0x26')]);}})[_0x11c6('0x28')](function(_0x1c0fea){logger[_0x11c6('0x25')](_0x11c6('0x20'),_0x576466,_0x1c0fea);_0x3338e6(_0x1c0fea);});});}function respondWithStatusCode(_0x4ad632,_0x2d178b){_0x2d178b=_0x2d178b||0xcc;return function(_0x496bf7){if(_0x496bf7){return _0x4ad632[_0x11c6('0x29')](_0x2d178b);}return _0x4ad632[_0x11c6('0x2a')](_0x2d178b)['end']();};}function respondWithResult(_0xa6aa60,_0x1712b2){_0x1712b2=_0x1712b2||0xc8;return function(_0xc6383e){if(_0xc6383e){return _0xa6aa60['status'](_0x1712b2)[_0x11c6('0x2b')](_0xc6383e);}};}function respondWithFilteredResult(_0x2e21ba,_0x2c6926){return function(_0x1a0a54){if(_0x1a0a54){var _0x555de1=typeof _0x2c6926[_0x11c6('0x2c')]==='undefined'&&typeof _0x2c6926['limit']==='undefined';var _0x3dc100=_0x1a0a54['count'];var _0x352f86=_0x555de1?0x0:_0x2c6926[_0x11c6('0x2c')];var _0x516a5=_0x555de1?_0x1a0a54['count']:_0x2c6926[_0x11c6('0x2c')]+_0x2c6926['limit'];var _0x47054f;if(_0x516a5>=_0x3dc100){_0x516a5=_0x3dc100;_0x47054f=0xc8;}else{_0x47054f=0xce;}_0x2e21ba[_0x11c6('0x2a')](_0x47054f);return _0x2e21ba[_0x11c6('0x2d')](_0x11c6('0x2e'),_0x352f86+'-'+_0x516a5+'/'+_0x3dc100)['json'](_0x1a0a54);}return null;};}function patchUpdates(_0x32a7fd){return function(_0x4c8ff9){try{jsonpatch[_0x11c6('0x2f')](_0x4c8ff9,_0x32a7fd,!![]);}catch(_0x136886){return BPromise[_0x11c6('0x30')](_0x136886);}return _0x4c8ff9[_0x11c6('0x31')]();};}function saveUpdates(_0x5e01b2,_0x3bc283){return function(_0x1b7b06){if(_0x1b7b06){return _0x1b7b06[_0x11c6('0x32')](_0x5e01b2)[_0x11c6('0x1f')](function(_0x2bd7ca){return _0x2bd7ca;});}return null;};}function removeEntity(_0x1002b7,_0x6a84a3){return function(_0x1c5233){if(_0x1c5233){return _0x1c5233[_0x11c6('0x33')]()[_0x11c6('0x1f')](function(){var _0x1cdc08=_0x1c5233[_0x11c6('0x34')]({'plain':!![]});var _0x1f347a=_0x11c6('0x35');return db['UserProfileResource'][_0x11c6('0x33')]({'where':{'type':_0x1f347a,'resourceId':_0x1cdc08['id']}})['then'](function(){return _0x1c5233;});})[_0x11c6('0x1f')](function(){_0x1002b7[_0x11c6('0x2a')](0xcc)[_0x11c6('0x36')]();});}};}function handleEntityNotFound(_0xfe9894,_0x302360){return function(_0x34f33c){if(!_0x34f33c){_0xfe9894['sendStatus'](0x194);}return _0x34f33c;};}function handleError(_0x3155a4,_0xb6e880){_0xb6e880=_0xb6e880||0x1f4;return function(_0x1377a8){logger[_0x11c6('0x25')](_0x1377a8[_0x11c6('0x37')]);if(_0x1377a8[_0x11c6('0x38')]){delete _0x1377a8[_0x11c6('0x38')];}_0x3155a4['status'](_0xb6e880)[_0x11c6('0x39')](_0x1377a8);};}exports['index']=function(_0x270053,_0x2483d9){var _0x3cdcce={'include':[{'model':db[_0x11c6('0x3a')],'as':_0x11c6('0x3b')}]},_0x9c7260={},_0x4287b6={'count':0x0,'rows':[]};var _0xabc19c=_['map'](db[_0x11c6('0x3c')][_0x11c6('0x3d')],function(_0x13e3e2){return{'name':_0x13e3e2[_0x11c6('0x3e')],'type':_0x13e3e2[_0x11c6('0x3f')]['key']};});_0x9c7260[_0x11c6('0x40')]=_[_0x11c6('0x41')](_0xabc19c,_0x11c6('0x38'));_0x9c7260[_0x11c6('0x42')]=_[_0x11c6('0x43')](_0x270053[_0x11c6('0x42')]);_0x9c7260['filters']=_[_0x11c6('0x44')](_0x9c7260[_0x11c6('0x40')],_0x9c7260['query']);_0x3cdcce[_0x11c6('0x45')]=_[_0x11c6('0x44')](_0x9c7260[_0x11c6('0x40')],qs[_0x11c6('0x46')](_0x270053[_0x11c6('0x42')][_0x11c6('0x46')]));_0x3cdcce[_0x11c6('0x45')]=_0x3cdcce[_0x11c6('0x45')][_0x11c6('0x47')]?_0x3cdcce[_0x11c6('0x45')]:_0x9c7260[_0x11c6('0x40')];if(!_0x270053[_0x11c6('0x42')][_0x11c6('0x48')](_0x11c6('0x49'))){_0x3cdcce[_0x11c6('0x4a')]=qs['limit'](_0x270053['query'][_0x11c6('0x4a')]);_0x3cdcce['offset']=qs[_0x11c6('0x2c')](_0x270053[_0x11c6('0x42')]['offset']);}_0x3cdcce[_0x11c6('0x4b')]=qs[_0x11c6('0x4c')](_0x270053['query'][_0x11c6('0x4c')]);_0x3cdcce[_0x11c6('0x4d')]=qs[_0x11c6('0x4e')](_[_0x11c6('0x4f')](_0x270053[_0x11c6('0x42')],_0x9c7260[_0x11c6('0x4e')]),_0xabc19c);if(_0x270053[_0x11c6('0x42')]['filter']){_0x3cdcce[_0x11c6('0x4d')]=_[_0x11c6('0x50')](_0x3cdcce[_0x11c6('0x4d')],{'$or':_[_0x11c6('0x41')](_0xabc19c,function(_0x33ec7f){if(_0x33ec7f[_0x11c6('0x3f')]!==_0x11c6('0x51')){var _0xd17fe5={};_0xd17fe5[_0x33ec7f['name']]={'$like':'%'+_0x270053['query'][_0x11c6('0x52')]+'%'};return _0xd17fe5;}})});}_0x3cdcce=_[_0x11c6('0x50')]({},_0x3cdcce,_0x270053['options']);var _0x454c61={'where':_0x3cdcce[_0x11c6('0x4d')]};return db['WhatsappAccount'][_0x11c6('0x53')](_0x454c61)['then'](function(_0x28957e){_0x4287b6[_0x11c6('0x53')]=_0x28957e;if(_0x270053[_0x11c6('0x42')]['includeAll']){_0x3cdcce['include']=[{'all':!![]}];}return db[_0x11c6('0x3c')][_0x11c6('0x54')](_0x3cdcce);})[_0x11c6('0x1f')](function(_0x4e0fcf){_0x4287b6[_0x11c6('0x55')]=_0x4e0fcf;return _0x4287b6;})[_0x11c6('0x1f')](respondWithFilteredResult(_0x2483d9,_0x3cdcce))[_0x11c6('0x28')](handleError(_0x2483d9,null));};exports['show']=function(_0x5e269b,_0x3ca028){var _0x4162f0={'raw':![],'where':{'id':_0x5e269b[_0x11c6('0x56')]['id']},'include':[{'model':db[_0x11c6('0x3a')],'as':_0x11c6('0x3b')}]},_0x1f64b7={};_0x1f64b7[_0x11c6('0x40')]=_['keys'](db[_0x11c6('0x3c')]['rawAttributes']);_0x1f64b7['query']=_[_0x11c6('0x43')](_0x5e269b['query']);_0x1f64b7[_0x11c6('0x4e')]=_[_0x11c6('0x44')](_0x1f64b7['model'],_0x1f64b7[_0x11c6('0x42')]);_0x4162f0[_0x11c6('0x45')]=_[_0x11c6('0x44')](_0x1f64b7[_0x11c6('0x40')],qs[_0x11c6('0x46')](_0x5e269b[_0x11c6('0x42')][_0x11c6('0x46')]));_0x4162f0[_0x11c6('0x45')]=_0x4162f0[_0x11c6('0x45')][_0x11c6('0x47')]?_0x4162f0[_0x11c6('0x45')]:_0x1f64b7[_0x11c6('0x40')];if(_0x5e269b[_0x11c6('0x42')]['includeAll']){_0x4162f0[_0x11c6('0x57')]=[{'all':!![]}];}_0x4162f0=_['merge']({},_0x4162f0,_0x5e269b['options']);return db['WhatsappAccount'][_0x11c6('0x58')](_0x4162f0)[_0x11c6('0x1f')](handleEntityNotFound(_0x3ca028,null))[_0x11c6('0x1f')](respondWithResult(_0x3ca028,null))[_0x11c6('0x28')](handleError(_0x3ca028,null));};exports[_0x11c6('0x59')]=function(_0xe67a22,_0x1523e8){return db[_0x11c6('0x3c')][_0x11c6('0x59')](_0xe67a22[_0x11c6('0x5a')],{})[_0x11c6('0x1f')](function(_0x3455c9){var _0x447394=_0xe67a22[_0x11c6('0x5b')]['get']({'plain':!![]});if(!_0x447394)throw new Error(_0x11c6('0x5c'));if(_0x447394[_0x11c6('0x5d')]===_0x11c6('0x5b')){var _0x57ce53=_0x3455c9['get']({'plain':!![]});var _0x2cee64='WhatsappAccounts';return db[_0x11c6('0x5e')][_0x11c6('0x58')]({'where':{'name':_0x2cee64,'userProfileId':_0x447394[_0x11c6('0x5f')]},'raw':!![]})[_0x11c6('0x1f')](function(_0x39c6a6){if(_0x39c6a6&&_0x39c6a6[_0x11c6('0x60')]===0x0){return db['UserProfileResource'][_0x11c6('0x59')]({'name':_0x57ce53['name'],'resourceId':_0x57ce53['id'],'type':_0x39c6a6[_0x11c6('0x38')],'sectionId':_0x39c6a6['id']},{})[_0x11c6('0x1f')](function(){return _0x3455c9;});}else{return _0x3455c9;}})[_0x11c6('0x28')](function(_0x24f8bb){logger[_0x11c6('0x25')](_0x11c6('0x61'),_0x24f8bb);throw _0x24f8bb;});}return _0x3455c9;})[_0x11c6('0x1f')](respondWithResult(_0x1523e8,0xc9))[_0x11c6('0x28')](handleError(_0x1523e8,null));};exports[_0x11c6('0x32')]=function(_0x36f558,_0x1181dd){if(_0x36f558['body']['id']){delete _0x36f558['body']['id'];}return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x36f558[_0x11c6('0x56')]['id']},'include':[{'model':db[_0x11c6('0x3a')],'as':_0x11c6('0x3b')}]})[_0x11c6('0x1f')](handleEntityNotFound(_0x1181dd,null))[_0x11c6('0x1f')](saveUpdates(_0x36f558[_0x11c6('0x5a')],null))[_0x11c6('0x1f')](respondWithResult(_0x1181dd,null))['catch'](handleError(_0x1181dd,null));};exports[_0x11c6('0x33')]=function(_0x519f27,_0x5b051a){return db[_0x11c6('0x3c')]['find']({'where':{'id':_0x519f27['params']['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x5b051a,null))['then'](removeEntity(_0x5b051a,null))[_0x11c6('0x28')](handleError(_0x5b051a,null));};exports[_0x11c6('0x62')]=function(_0x445c6b,_0x18396c){return db[_0x11c6('0x3c')][_0x11c6('0x62')]()[_0x11c6('0x1f')](respondWithResult(_0x18396c,null))[_0x11c6('0x28')](handleError(_0x18396c,null));};exports[_0x11c6('0x63')]=function(_0x114ab7,_0x59c769,_0x2cf10e){if(_0x114ab7[_0x11c6('0x5a')]['id']){delete _0x114ab7[_0x11c6('0x5a')]['id'];}return db[_0x11c6('0x3c')]['find']({'where':{'id':_0x114ab7[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x59c769,null))[_0x11c6('0x1f')](function(_0xff2cbc){if(_0xff2cbc){_0x114ab7[_0x11c6('0x5a')][_0x11c6('0x64')]=_0xff2cbc['id'];return db['Disposition'][_0x11c6('0x59')](_0x114ab7[_0x11c6('0x5a')]);}})['then'](respondWithResult(_0x59c769,null))['catch'](handleError(_0x59c769,null));};exports['getDispositions']=function(_0x4f8f86,_0x60bbec,_0x18f5c6){var _0x1d92a2={'raw':![],'where':{}};var _0x424cd7={};var _0x3ce53f={'count':0x0,'rows':[]};return db[_0x11c6('0x3c')][_0x11c6('0x65')]({'where':{'id':_0x4f8f86['params']['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x60bbec,null))[_0x11c6('0x1f')](function(_0x713672){if(_0x713672){_0x424cd7['model']=_['keys'](db[_0x11c6('0x66')][_0x11c6('0x3d')]);_0x424cd7[_0x11c6('0x42')]=_[_0x11c6('0x43')](_0x4f8f86[_0x11c6('0x42')]);_0x424cd7[_0x11c6('0x4e')]=_['intersection'](_0x424cd7[_0x11c6('0x40')],_0x424cd7[_0x11c6('0x42')]);_0x1d92a2[_0x11c6('0x45')]=_[_0x11c6('0x44')](_0x424cd7[_0x11c6('0x40')],qs['fields'](_0x4f8f86['query'][_0x11c6('0x46')]));_0x1d92a2[_0x11c6('0x45')]=_0x1d92a2[_0x11c6('0x45')][_0x11c6('0x47')]?_0x1d92a2[_0x11c6('0x45')]:_0x424cd7[_0x11c6('0x40')];if(!_0x4f8f86['query'][_0x11c6('0x48')](_0x11c6('0x49'))){_0x1d92a2[_0x11c6('0x4a')]=qs[_0x11c6('0x4a')](_0x4f8f86[_0x11c6('0x42')]['limit']);_0x1d92a2[_0x11c6('0x2c')]=qs[_0x11c6('0x2c')](_0x4f8f86['query'][_0x11c6('0x2c')]);}_0x1d92a2['order']=qs[_0x11c6('0x4c')](_0x4f8f86[_0x11c6('0x42')][_0x11c6('0x4c')]);_0x1d92a2['where']=qs[_0x11c6('0x4e')](_['pick'](_0x4f8f86[_0x11c6('0x42')],_0x424cd7[_0x11c6('0x4e')]));_0x1d92a2[_0x11c6('0x4d')][_0x11c6('0x64')]=_0x713672['id'];if(_0x4f8f86[_0x11c6('0x42')][_0x11c6('0x52')]){_0x1d92a2['where']=_['merge'](_0x1d92a2['where'],{'$or':_[_0x11c6('0x41')](_0x1d92a2[_0x11c6('0x45')],function(_0x17c366){var _0x498cc0={};_0x498cc0[_0x17c366]={'$like':'%'+_0x4f8f86[_0x11c6('0x42')][_0x11c6('0x52')]+'%'};return _0x498cc0;})});}_0x1d92a2=_[_0x11c6('0x50')]({},_0x1d92a2,_0x4f8f86[_0x11c6('0x67')]);return db[_0x11c6('0x66')]['count']({'where':_0x1d92a2[_0x11c6('0x4d')]})[_0x11c6('0x1f')](function(_0x940a25){_0x3ce53f['count']=_0x940a25;if(_0x4f8f86[_0x11c6('0x42')][_0x11c6('0x68')]){_0x1d92a2[_0x11c6('0x57')]=[{'all':!![]}];}return db[_0x11c6('0x66')][_0x11c6('0x54')](_0x1d92a2);})['then'](function(_0x56b84d){_0x3ce53f[_0x11c6('0x55')]=_0x56b84d;return _0x3ce53f;});}})[_0x11c6('0x1f')](respondWithFilteredResult(_0x60bbec,_0x1d92a2))[_0x11c6('0x28')](handleError(_0x60bbec,null));};exports[_0x11c6('0x69')]=function(_0x1dc0cb,_0x33a018,_0xd29cb4){return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x1dc0cb[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x33a018,null))['then'](function(_0x4f192f){if(_0x4f192f){return _0x4f192f[_0x11c6('0x69')](_0x1dc0cb[_0x11c6('0x42')]['ids']);}})['then'](respondWithStatusCode(_0x33a018,null))[_0x11c6('0x28')](handleError(_0x33a018,null));};exports['addAnswer']=function(_0x6b1e3,_0x14a15e,_0x23efec){if(_0x6b1e3['body']['id']){delete _0x6b1e3[_0x11c6('0x5a')]['id'];}return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x6b1e3[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x14a15e,null))[_0x11c6('0x1f')](function(_0x32b8fa){if(_0x32b8fa){_0x6b1e3[_0x11c6('0x5a')][_0x11c6('0x64')]=_0x32b8fa['id'];return db[_0x11c6('0x6a')][_0x11c6('0x59')](_0x6b1e3[_0x11c6('0x5a')]);}})['then'](respondWithResult(_0x14a15e,null))[_0x11c6('0x28')](handleError(_0x14a15e,null));};exports[_0x11c6('0x6b')]=function(_0x497a11,_0xfdc4f1,_0x3aded8){var _0x302496={'raw':![],'where':{}};var _0x42300a={};var _0x182e90={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x11c6('0x65')]({'where':{'id':_0x497a11[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0xfdc4f1,null))[_0x11c6('0x1f')](function(_0x12c0c4){if(_0x12c0c4){_0x42300a['model']=_[_0x11c6('0x43')](db[_0x11c6('0x6a')][_0x11c6('0x3d')]);_0x42300a[_0x11c6('0x42')]=_['keys'](_0x497a11[_0x11c6('0x42')]);_0x42300a[_0x11c6('0x4e')]=_['intersection'](_0x42300a['model'],_0x42300a['query']);_0x302496['attributes']=_[_0x11c6('0x44')](_0x42300a['model'],qs[_0x11c6('0x46')](_0x497a11[_0x11c6('0x42')]['fields']));_0x302496[_0x11c6('0x45')]=_0x302496[_0x11c6('0x45')][_0x11c6('0x47')]?_0x302496['attributes']:_0x42300a[_0x11c6('0x40')];if(!_0x497a11[_0x11c6('0x42')][_0x11c6('0x48')](_0x11c6('0x49'))){_0x302496[_0x11c6('0x4a')]=qs[_0x11c6('0x4a')](_0x497a11['query']['limit']);_0x302496[_0x11c6('0x2c')]=qs[_0x11c6('0x2c')](_0x497a11[_0x11c6('0x42')][_0x11c6('0x2c')]);}_0x302496['order']=qs['sort'](_0x497a11[_0x11c6('0x42')][_0x11c6('0x4c')]);_0x302496[_0x11c6('0x4d')]=qs[_0x11c6('0x4e')](_[_0x11c6('0x4f')](_0x497a11[_0x11c6('0x42')],_0x42300a[_0x11c6('0x4e')]));_0x302496[_0x11c6('0x4d')][_0x11c6('0x64')]=_0x12c0c4['id'];if(_0x497a11[_0x11c6('0x42')][_0x11c6('0x52')]){_0x302496[_0x11c6('0x4d')]=_[_0x11c6('0x50')](_0x302496[_0x11c6('0x4d')],{'$or':_['map'](_0x302496[_0x11c6('0x45')],function(_0x5c6956){var _0x488371={};_0x488371[_0x5c6956]={'$like':'%'+_0x497a11[_0x11c6('0x42')][_0x11c6('0x52')]+'%'};return _0x488371;})});}_0x302496=_[_0x11c6('0x50')]({},_0x302496,_0x497a11[_0x11c6('0x67')]);return db[_0x11c6('0x6a')][_0x11c6('0x53')]({'where':_0x302496[_0x11c6('0x4d')]})[_0x11c6('0x1f')](function(_0x57d1ea){_0x182e90[_0x11c6('0x53')]=_0x57d1ea;if(_0x497a11[_0x11c6('0x42')][_0x11c6('0x68')]){_0x302496[_0x11c6('0x57')]=[{'all':!![]}];}return db['CannedAnswer'][_0x11c6('0x54')](_0x302496);})['then'](function(_0x4b56b9){_0x182e90[_0x11c6('0x55')]=_0x4b56b9;return _0x182e90;});}})['then'](respondWithFilteredResult(_0xfdc4f1,_0x302496))['catch'](handleError(_0xfdc4f1,null));};exports[_0x11c6('0x6c')]=function(_0x30fe40,_0x4cb2cf,_0x357d3a){return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x30fe40[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x4cb2cf,null))[_0x11c6('0x1f')](function(_0x1c1dd6){if(_0x1c1dd6){return _0x1c1dd6['removeAnswers'](_0x30fe40[_0x11c6('0x42')][_0x11c6('0x6d')]);}})[_0x11c6('0x1f')](respondWithStatusCode(_0x4cb2cf,null))['catch'](handleError(_0x4cb2cf,null));};exports['addAgents']=function(_0x43e191,_0x4f9363,_0x3129d2){return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x43e191['params']['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x4f9363,null))[_0x11c6('0x1f')](function(_0x4c08bc){if(_0x4c08bc){return _0x4c08bc[_0x11c6('0x6e')](_0x43e191[_0x11c6('0x5a')][_0x11c6('0x6d')],_[_0x11c6('0x6f')](_0x43e191[_0x11c6('0x5a')],[_0x11c6('0x6d'),'id'])||{})[_0x11c6('0x70')](function(_0x41516d){for(var _0x1a03b1=0x0;_0x1a03b1<_0x43e191[_0x11c6('0x5a')][_0x11c6('0x6d')][_0x11c6('0x47')];_0x1a03b1+=0x1){socket['emit'](_0x11c6('0x71'),{'UserId':Number(_0x43e191[_0x11c6('0x5a')][_0x11c6('0x6d')][_0x1a03b1]),'WhatsappAccountId':Number(_0x43e191[_0x11c6('0x56')]['id'])});}return _0x41516d;});}})['then'](respondWithResult(_0x4f9363,null))[_0x11c6('0x28')](handleError(_0x4f9363,null));};exports[_0x11c6('0x72')]=function(_0x31f32d,_0x4d943c,_0x523d60){return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x31f32d['params']['id']}})['then'](handleEntityNotFound(_0x4d943c,null))[_0x11c6('0x1f')](function(_0x550b85){if(_0x550b85){return _0x550b85[_0x11c6('0x72')](_0x31f32d['query'][_0x11c6('0x6d')])[_0x11c6('0x1f')](function(){if(_[_0x11c6('0x73')](_0x31f32d[_0x11c6('0x42')]['ids'])){for(var _0xc91219=0x0;_0xc91219<_0x31f32d['query'][_0x11c6('0x6d')][_0x11c6('0x47')];_0xc91219+=0x1){socket[_0x11c6('0x74')](_0x11c6('0x75'),{'UserId':Number(_0x31f32d[_0x11c6('0x42')][_0x11c6('0x6d')][_0xc91219]),'WhatsappAccountId':Number(_0x31f32d[_0x11c6('0x56')]['id'])});}}else{socket[_0x11c6('0x74')](_0x11c6('0x75'),{'UserId':Number(_0x31f32d[_0x11c6('0x42')][_0x11c6('0x6d')]),'WhatsappAccountId':Number(_0x31f32d[_0x11c6('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x4d943c,null))[_0x11c6('0x28')](handleError(_0x4d943c,null));};exports[_0x11c6('0x76')]=function(_0x5dfeef,_0x53457c,_0x239598){var _0x434010={};var _0x7a3dbc={};var _0x530754;var _0x18f1e1;return db[_0x11c6('0x3c')]['findOne']({'where':{'id':_0x5dfeef['params']['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x53457c,null))['then'](function(_0x5b2f3d){if(_0x5b2f3d){_0x530754=_0x5b2f3d;_0x7a3dbc[_0x11c6('0x40')]=_['keys'](db[_0x11c6('0x77')]['rawAttributes']);_0x7a3dbc[_0x11c6('0x42')]=_[_0x11c6('0x43')](_0x5dfeef['query']);_0x7a3dbc['filters']=_[_0x11c6('0x44')](_0x7a3dbc[_0x11c6('0x40')],_0x7a3dbc[_0x11c6('0x42')]);_0x434010['attributes']=_[_0x11c6('0x44')](_0x7a3dbc[_0x11c6('0x40')],qs[_0x11c6('0x46')](_0x5dfeef['query'][_0x11c6('0x46')]));_0x434010[_0x11c6('0x45')]=_0x434010[_0x11c6('0x45')]['length']?_0x434010[_0x11c6('0x45')]:_0x7a3dbc[_0x11c6('0x40')];_0x434010['order']=qs['sort'](_0x5dfeef[_0x11c6('0x42')]['sort']);_0x434010[_0x11c6('0x4d')]=qs[_0x11c6('0x4e')](_[_0x11c6('0x4f')](_0x5dfeef[_0x11c6('0x42')],_0x7a3dbc[_0x11c6('0x4e')]));if(_0x5dfeef['query'][_0x11c6('0x52')]){_0x434010[_0x11c6('0x4d')]=_['merge'](_0x434010[_0x11c6('0x4d')],{'$or':_[_0x11c6('0x41')](_0x434010[_0x11c6('0x45')],function(_0x47c570){var _0x5112df={};_0x5112df[_0x47c570]={'$like':'%'+_0x5dfeef[_0x11c6('0x42')][_0x11c6('0x52')]+'%'};return _0x5112df;})});}_0x434010=_[_0x11c6('0x50')]({},_0x434010,_0x5dfeef['options']);return _0x530754[_0x11c6('0x76')](_0x434010);}})['then'](function(_0xd64ba5){if(_0xd64ba5){_0x18f1e1=_0xd64ba5[_0x11c6('0x47')];if(!_0x5dfeef[_0x11c6('0x42')][_0x11c6('0x48')](_0x11c6('0x49'))){_0x434010[_0x11c6('0x4a')]=qs[_0x11c6('0x4a')](_0x5dfeef[_0x11c6('0x42')][_0x11c6('0x4a')]);_0x434010['offset']=qs[_0x11c6('0x2c')](_0x5dfeef[_0x11c6('0x42')][_0x11c6('0x2c')]);}return _0x530754[_0x11c6('0x76')](_0x434010);}})[_0x11c6('0x1f')](function(_0x4a2db4){if(_0x4a2db4){return _0x4a2db4?{'count':_0x18f1e1,'rows':_0x4a2db4}:null;}})[_0x11c6('0x1f')](respondWithResult(_0x53457c,null))[_0x11c6('0x28')](handleError(_0x53457c,null));};exports[_0x11c6('0x78')]=function(_0xaf5379,_0xec7635){var _0x15f261=_0xaf5379['params']['id'];var _0x239faf=_0xaf5379[_0x11c6('0x5a')];var _0x1b7c46=0xc8;var _0x4c48df=null;return db[_0x11c6('0x79')][_0x11c6('0x7a')]({'isolationLevel':db[_0x11c6('0x79')][_0x11c6('0x7b')][_0x11c6('0x7c')]['READ_COMMITTED']},function(_0x5a0455){return db['WhatsappAccount']['findOne']({'where':{'id':_0x15f261},'transaction':_0x5a0455})[_0x11c6('0x1f')](function(_0x3854dd){if(_0x3854dd){return db[_0x11c6('0x7d')]['destroy']({'where':{'WhatsappAccountId':_0x15f261},'transaction':_0x5a0455})[_0x11c6('0x1f')](function(){var _0x3b28a2=_[_0x11c6('0x41')](_0x239faf,function(_0x2777e2){_0x2777e2[_0x11c6('0x64')]=_0x15f261;return _0x2777e2;});return db[_0x11c6('0x7d')]['bulkCreate'](_0x3b28a2,{'transaction':_0x5a0455});});}else{_0x1b7c46=0x194;_0x4c48df=[];}});})[_0x11c6('0x1f')](function(){if(_0x1b7c46!==0x194){return db[_0x11c6('0x7d')][_0x11c6('0x7e')]({'where':{'WhatsappAccountId':_0x15f261},'order':_0x11c6('0x7f')})['then'](function(_0x344962){_0x4c48df=_0x344962;});}})[_0x11c6('0x28')](function(_0x2732d5){_0x1b7c46=0x1f4;logger[_0x11c6('0x25')](_0x2732d5[_0x11c6('0x37')]);if(_0x2732d5[_0x11c6('0x38')]){delete _0x2732d5[_0x11c6('0x38')];}_0x4c48df=_0x2732d5;})[_0x11c6('0x80')](function(){if(_0x4c48df===null){_0xec7635[_0x11c6('0x29')](_0x1b7c46);}else{if(_0x1b7c46===0x1f4){_0xec7635['status'](_0x1b7c46)['send'](_0x4c48df);}else{_0xec7635[_0x11c6('0x2a')](_0x1b7c46)[_0x11c6('0x2b')](_0x4c48df);}}});};exports[_0x11c6('0x81')]=function(_0x3f7de3,_0x4581c0,_0x10c04c){var _0x4f6462={};var _0x4939ee={};var _0x34d9eb;var _0x195d48;return db['WhatsappAccount'][_0x11c6('0x65')]({'where':{'id':_0x3f7de3[_0x11c6('0x56')]['id']}})[_0x11c6('0x1f')](handleEntityNotFound(_0x4581c0,null))[_0x11c6('0x1f')](function(_0x4ddc7e){if(_0x4ddc7e){_0x34d9eb=_0x4ddc7e;_0x4939ee[_0x11c6('0x40')]=_[_0x11c6('0x43')](db['WhatsappApplication'][_0x11c6('0x3d')]);_0x4939ee[_0x11c6('0x42')]=_[_0x11c6('0x43')](_0x3f7de3[_0x11c6('0x42')]);_0x4939ee[_0x11c6('0x4e')]=_['intersection'](_0x4939ee['model'],_0x4939ee[_0x11c6('0x42')]);_0x4f6462['attributes']=_[_0x11c6('0x44')](_0x4939ee[_0x11c6('0x40')],qs[_0x11c6('0x46')](_0x3f7de3[_0x11c6('0x42')]['fields']));_0x4f6462[_0x11c6('0x45')]=_0x4f6462[_0x11c6('0x45')][_0x11c6('0x47')]?_0x4f6462[_0x11c6('0x45')]:_0x4939ee[_0x11c6('0x40')];_0x4f6462[_0x11c6('0x4b')]=qs[_0x11c6('0x4c')](_0x3f7de3['query']['sort']);_0x4f6462[_0x11c6('0x4d')]=qs['filters'](_[_0x11c6('0x4f')](_0x3f7de3[_0x11c6('0x42')],_0x4939ee['filters']));if(_0x3f7de3[_0x11c6('0x42')][_0x11c6('0x52')]){_0x4f6462[_0x11c6('0x4d')]=_[_0x11c6('0x50')](_0x4f6462['where'],{'$or':_[_0x11c6('0x41')](_0x4f6462['attributes'],function(_0x21eb25){var _0x16ee16={};_0x16ee16[_0x21eb25]={'$like':'%'+_0x3f7de3[_0x11c6('0x42')][_0x11c6('0x52')]+'%'};return _0x16ee16;})});}_0x4f6462=_[_0x11c6('0x50')]({},_0x4f6462,_0x3f7de3[_0x11c6('0x67')]);return _0x34d9eb[_0x11c6('0x81')](_0x4f6462);}})[_0x11c6('0x1f')](function(_0x18853c){if(_0x18853c){_0x195d48=_0x18853c[_0x11c6('0x47')];if(!_0x3f7de3[_0x11c6('0x42')][_0x11c6('0x48')](_0x11c6('0x49'))){_0x4f6462['limit']=qs[_0x11c6('0x4a')](_0x3f7de3[_0x11c6('0x42')][_0x11c6('0x4a')]);_0x4f6462[_0x11c6('0x2c')]=qs[_0x11c6('0x2c')](_0x3f7de3[_0x11c6('0x42')][_0x11c6('0x2c')]);}return _0x34d9eb[_0x11c6('0x81')](_0x4f6462);}})['then'](function(_0x2d7edb){if(_0x2d7edb){return _0x2d7edb?{'count':_0x195d48,'rows':_0x2d7edb}:null;}})[_0x11c6('0x1f')](respondWithResult(_0x4581c0,null))['catch'](handleError(_0x4581c0,null));};exports[_0x11c6('0x82')]=function(_0x1bfd4e,_0x2c766f,_0x37562c){var _0x1e680b={'channel':'whatsapp'};var _0x4d075f=[];var _0x39960d=[];var _0x5baca7={};return db[_0x11c6('0x3c')][_0x11c6('0x58')]({'where':{'id':_0x1bfd4e[_0x11c6('0x56')]['id']},'include':[{'model':db[_0x11c6('0x7d')],'as':_0x11c6('0x83')}]})['then'](handleEntityNotFound(_0x2c766f,null))[_0x11c6('0x1f')](function(_0x4ef748){_0x1e680b[_0x11c6('0x84')]=_0x4ef748;if(_0x1e680b[_0x11c6('0x84')]&&_0x1e680b['account'][_0x11c6('0x3f')]==='sinch'&&_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x85')]){if(_0x1bfd4e[_0x11c6('0x5a')]['statuses'][_0x11c6('0x47')]===0x0)return;if(_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x85')][0x0][_0x11c6('0x86')]!==_0x11c6('0x87'))return;return db[_0x11c6('0x88')][_0x11c6('0x32')]({'read':!![],'readAt':_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x85')][0x0][_0x11c6('0x89')]},{'where':{'messageId':_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x85')][0x0]['message_id']},'individualHooks':!![]})[_0x11c6('0x1f')](function(_0x17a29a){return _0x2c766f[_0x11c6('0x2a')](0xc8)['json'](_0x17a29a);});}_0x1e680b[_0x11c6('0x8a')]=_[_0x11c6('0x8b')](_0x4ef748[_0x11c6('0x83')],[_0x11c6('0x7f')],[_0x11c6('0x8c')]);if(_0x1e680b[_0x11c6('0x84')][_0x11c6('0x83')]){delete _0x1e680b[_0x11c6('0x84')][_0x11c6('0x83')];}return db[_0x11c6('0x8d')][_0x11c6('0x62')]()['then'](function(_0x521e90){if(!_0x521e90){throw new db[(_0x11c6('0x8e'))][(_0x11c6('0x8f'))](_0x11c6('0x90'));}_0x4d075f=_['difference'](_[_0x11c6('0x43')](_0x521e90),[_0x11c6('0x91'),_0x11c6('0x92')]);_0x39960d=_[_0x11c6('0x93')](_[_0x11c6('0x43')](_0x521e90),['createdAt',_0x11c6('0x92'),_0x11c6('0x94'),_0x11c6('0x95')]);_0x1e680b[_0x11c6('0x5a')]={'mapKey':_0x11c6('0x96')};if(_0x1e680b['account']&&_0x1e680b[_0x11c6('0x84')][_0x11c6('0x3f')]===_0x11c6('0x97')){_0x1e680b['body'][_0x11c6('0x98')]=_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x99')][_0x11c6('0x9a')](_0x11c6('0x9b'),'');_0x1e680b[_0x11c6('0x5a')]['body']=_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x9c')];_0x1e680b['body']['messageId']=_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x9d')];}if(_0x1e680b[_0x11c6('0x84')]&&_0x1e680b[_0x11c6('0x84')][_0x11c6('0x3f')]===_0x11c6('0x9e')){_0x1e680b[_0x11c6('0x5a')]['from']=_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x9f')][0x0][_0x11c6('0x98')];_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x5a')]=_0x1bfd4e['body']['notifications'][0x0]['message']['body'];_0x1e680b[_0x11c6('0x5a')][_0x11c6('0xa0')]=_0x1bfd4e[_0x11c6('0x5a')][_0x11c6('0x9f')][0x0][_0x11c6('0xa1')];}if(_0x1e680b[_0x11c6('0x5a')]['id']){delete _0x1e680b[_0x11c6('0x5a')]['id'];}if(_[_0x11c6('0xa2')](_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x98')])){throw new db[(_0x11c6('0x8e'))]['ValidationError'](_0x11c6('0xa3'));}if(_[_0x11c6('0xa2')](_0x1e680b[_0x11c6('0x5a')]['body'])||_0x1e680b['body'][_0x11c6('0x5a')]===''){throw new db[(_0x11c6('0x8e'))]['ValidationError'](_0x11c6('0xa4'));}if(_[_0x11c6('0xa2')](_0x1e680b['body'][_0x11c6('0xa5')])){throw new db['Sequelize']['ValidationError'](_0x11c6('0xa6')+_0x39960d);}if(!_['includes'](_0x39960d,_0x1e680b[_0x11c6('0x5a')][_0x11c6('0xa5')])){throw new db[(_0x11c6('0x8e'))]['ValidationError'](_0x11c6('0xa7')+_0x39960d);}_0x5baca7[_0x1e680b[_0x11c6('0x5a')][_0x11c6('0xa5')]]=_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x98')];return db[_0x11c6('0xa8')][_0x11c6('0x58')]({'where':{'id':_0x1e680b[_0x11c6('0x84')][_0x11c6('0x95')]},'include':[{'model':db[_0x11c6('0x8d')],'as':_0x11c6('0xa9'),'where':_0x5baca7,'limit':0x1,'order':[['updatedAt',_0x11c6('0xaa')]]}]});})[_0x11c6('0x1f')](handleEntityNotFound(_0x2c766f,null))['then'](function(_0x24c325){if(_0x24c325){_0x1e680b[_0x11c6('0xab')]=_[_0x11c6('0x6f')](_0x24c325,[_0x11c6('0xa9')]);if(_0x24c325[_0x11c6('0xa9')][_0x11c6('0x47')]){return _0x24c325[_0x11c6('0xa9')][0x0];}var _0x5ca707=_['defaults'](_0x1e680b['body'],{'firstName':_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x98')],'ListId':_0x24c325['id']});_0x5ca707[_0x1e680b[_0x11c6('0x5a')][_0x11c6('0xa5')]]=_0x1e680b['body']['from'];return db[_0x11c6('0x8d')]['create'](_0x5ca707,{'fields':_0x4d075f,'raw':!![]});}})[_0x11c6('0x1f')](handleEntityNotFound(_0x2c766f,null))['then'](function(_0x333433){if(_0x333433){_0x1e680b[_0x11c6('0xac')]=_0x333433;var _0x584176={'ContactId':_0x333433['id'],'phone':_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x98')],'WhatsappAccountId':_0x1bfd4e[_0x11c6('0x56')]['id']};var _0x5994ca={'ContactId':_0x333433['id'],'WhatsappAccountId':_0x1bfd4e[_0x11c6('0x56')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x11c6('0x58')]({'where':_0x5994ca})[_0x11c6('0x1f')](function(_0x3f9a97){if(_0x3f9a97){return[_0x3f9a97,![]];}return db[_0x11c6('0xad')][_0x11c6('0x59')](_0x584176)['then'](function(_0x419a43){return[_0x419a43,!![]];});});}})[_0x11c6('0x70')](function(_0x5ee416,_0x36e18a){_0x1e680b['interaction']=_0x5ee416[_0x11c6('0x34')]({'plain':!![]});_0x1e680b[_0x11c6('0xae')]['created']=![];if(_0x36e18a){if(_0x1e680b[_0x11c6('0x84')][_0x11c6('0xaf')]){_0x1e680b['applications'][_0x11c6('0xb0')]({'id':0x0,'priority':_0x1e680b[_0x11c6('0x8a')][_0x11c6('0x47')]+0x1,'app':_0x11c6('0xb1'),'appdata':_0x11c6('0xb2'),'interval':_0x11c6('0xb3')});}_0x1e680b[_0x11c6('0xae')][_0x11c6('0xb4')]=!![];}return db[_0x11c6('0x88')][_0x11c6('0x59')]({'phone':_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x98')],'messageId':_0x1e680b[_0x11c6('0x5a')][_0x11c6('0xa0')],'body':_0x1e680b[_0x11c6('0x5a')][_0x11c6('0x5a')],'WhatsappAccountId':_0x1bfd4e[_0x11c6('0x56')]['id'],'WhatsappInteractionId':_0x5ee416['id'],'direction':'in','ContactId':_0x5ee416[_0x11c6('0xb5')],'AttachmentId':_0x1e680b[_0x11c6('0x5a')]['AttachmentId']});})['then'](function(_0x106587){_0x1e680b['message']=_0x106587;if(_0x1e680b[_0x11c6('0xae')][_0x11c6('0xb6')]){return db['User'][_0x11c6('0x58')]({'attributes':['id',_0x11c6('0x38')],'where':{'id':_0x1e680b[_0x11c6('0xae')][_0x11c6('0xb6')]}})[_0x11c6('0x1f')](function(_0x5bdace){if(_0x5bdace){_0x1e680b[_0x11c6('0x8a')][_0x11c6('0xb7')]({'id':0x0,'priority':0x0,'app':_0x11c6('0xb8'),'appdata':_0x5bdace[_0x11c6('0x38')]+','+(_0x1e680b[_0x11c6('0x84')][_0x11c6('0xb9')]||0xa),'interval':_0x11c6('0xb3')});}return respondWithRpcPromise('Start','startRouting',_0x1e680b);});}return respondWithRpcPromise(_0x11c6('0xba'),_0x11c6('0xbb'),_0x1e680b);})['then'](function(_0x3afe69){if(_0x3afe69){var _0x467347=0xc8;var _0x32aacc='receiveMessage';logger[_0x11c6('0x27')](_0x11c6('0x23'),_0x32aacc,_0x467347,_0x11c6('0xbc'));logger[_0x11c6('0x22')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x32aacc,_0x467347,'entity\x20found',JSON['stringify'](_0x3afe69));if(_0x1e680b[_0x11c6('0x84')]['type']===_0x11c6('0x97')){return _0x2c766f[_0x11c6('0x2a')](_0x467347)[_0x11c6('0x2d')](_0x11c6('0xbd'),_0x11c6('0xbe'))['send'](_0x11c6('0xbf'));}else{return _0x2c766f[_0x11c6('0x2a')](_0x467347)[_0x11c6('0x2b')](_0x3afe69);}}});})[_0x11c6('0x28')](handleError(_0x2c766f,null));};exports[_0x11c6('0x39')]=function(_0x1924f4,_0x7076a8,_0x274562){var _0x1ef0ba,_0x23095c,_0x2bd6a3;if(_[_0x11c6('0xa2')](_0x1924f4['body'][_0x11c6('0x5a')])||_0x1924f4['body'][_0x11c6('0x5a')]===''){throw new db[(_0x11c6('0x8e'))][(_0x11c6('0x8f'))](_0x11c6('0xa4'));}if(_[_0x11c6('0xa2')](_0x1924f4[_0x11c6('0x5a')]['to'])){throw new db[(_0x11c6('0x8e'))][(_0x11c6('0x8f'))](_0x11c6('0xc0'));}_0x1ef0ba=_0x1924f4[_0x11c6('0x5a')]['to'];return db[_0x11c6('0x3c')]['find']({'where':{'id':_0x1924f4['params']['id']},'include':[{'model':db[_0x11c6('0xa8')],'as':_0x11c6('0xc1'),'include':[{'model':db['CmContact'],'as':_0x11c6('0xa9'),'where':{'mobile':_0x1ef0ba},'limit':0x1,'order':[['updatedAt',_0x11c6('0xaa')]]}]}]})[_0x11c6('0x1f')](handleEntityNotFound(_0x7076a8,null))[_0x11c6('0x1f')](function(_0x30c32a){if(_0x30c32a&&_0x30c32a[_0x11c6('0xc1')]){_0x23095c=_0x30c32a['get']({'plain':!![]});if(_0x23095c['List']&&_0x23095c[_0x11c6('0xc1')][_0x11c6('0xa9')][_0x11c6('0x47')]){return _0x23095c[_0x11c6('0xc1')][_0x11c6('0xa9')][0x0];}return db[_0x11c6('0x8d')][_0x11c6('0x59')](_['defaults'](_0x1924f4[_0x11c6('0x5a')],{'firstName':_0x1ef0ba,'mobile':_0x1ef0ba,'phone':_0x1ef0ba,'ListId':_0x23095c[_0x11c6('0x95')]}));}})['then'](handleEntityNotFound(_0x7076a8,null))[_0x11c6('0x1f')](function(_0x4ba3fb){if(_0x4ba3fb){_0x2bd6a3=_0x4ba3fb;return db['WhatsappInteraction']['find']({'where':{'ContactId':_0x2bd6a3['id'],'closed':![],'WhatsappAccountId':_0x23095c['id']}})[_0x11c6('0x1f')](function(_0x5675cc){if(_0x5675cc){return[_0x5675cc,![]];}return db[_0x11c6('0xad')]['create']({'UserId':_0x1924f4['user']['id'],'ContactId':_0x2bd6a3['id'],'WhatsappAccountId':_0x23095c['id'],'phone':_0x1ef0ba,'firstMsgDirection':_0x11c6('0xc2'),'Messages':[_[_0x11c6('0x50')](_0x1924f4['body'],{'read':![],'body':_0x1924f4['body'][_0x11c6('0x5a')],'phone':_0x1ef0ba,'WhatsappAccountId':_0x23095c['id'],'UserId':_0x1924f4[_0x11c6('0x5b')]['id'],'ContactId':_0x2bd6a3['id']})]},{'include':[{'model':db[_0x11c6('0x88')],'as':_0x11c6('0xc3')}]})[_0x11c6('0x1f')](function(_0x154fd0){return[_0x154fd0,!![]];});});}})[_0x11c6('0x70')](function(_0x4bb753,_0x173c88){if(_0x173c88){return _0x4bb753;}return db[_0x11c6('0x88')]['create'](_[_0x11c6('0x50')](_0x1924f4['body'],{'read':![],'body':_0x1924f4[_0x11c6('0x5a')][_0x11c6('0x5a')],'phone':_0x1ef0ba,'WhatsappAccountId':_0x23095c['id'],'WhatsappInteractionId':_0x4bb753['id'],'UserId':_0x1924f4['user']['id'],'ContactId':_0x2bd6a3['id']}))[_0x11c6('0x1f')](function(_0x1168c1){_0x4bb753[_0x11c6('0xc4')][_0x11c6('0xc3')]=[];_0x4bb753['dataValues']['Messages']['push'](_0x1168c1['dataValues']);return _0x4bb753;});})[_0x11c6('0x1f')](respondWithResult(_0x7076a8,null))[_0x11c6('0x28')](handleError(_0x7076a8,null));};
\ No newline at end of file
index 3a4f30c..3f51d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x395d=['WhatsappAccount','setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0x29585f,_0x18c739){var _0x15d0fd=function(_0x4ace84){while(--_0x4ace84){_0x29585f['push'](_0x29585f['shift']());}};_0x15d0fd(++_0x18c739);}(_0x395d,0xa9));var _0xd395=function(_0x16fc17,_0x5f5112){_0x16fc17=_0x16fc17-0x0;var _0x277a0f=_0x395d[_0x16fc17];return _0x277a0f;};'use strict';var EventEmitter=require(_0xd395('0x0'));var WhatsappAccount=require(_0xd395('0x1'))['db'][_0xd395('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xd395('0x3')](0x0);var events={'afterCreate':_0xd395('0x4'),'afterUpdate':_0xd395('0x5'),'afterDestroy':_0xd395('0x6')};function emitEvent(_0x2c72e8){return function(_0x4df7a2,_0x4e0434,_0x53b8ca){WhatsappAccountEvents[_0xd395('0x7')](_0x2c72e8+':'+_0x4df7a2['id'],_0x4df7a2);WhatsappAccountEvents[_0xd395('0x7')](_0x2c72e8,_0x4df7a2);_0x53b8ca(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0xd395('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x8c3d=['../../mysqldb','WhatsappAccount','setMaxListeners','save','emit','hasOwnProperty','hook','exports','events'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x8c3d,0xfb));var _0xd8c3=function(_0x55e099,_0x9fa64a){_0x55e099=_0x55e099-0x0;var _0x551a58=_0x8c3d[_0x55e099];return _0x551a58;};'use strict';var EventEmitter=require(_0xd8c3('0x0'));var WhatsappAccount=require(_0xd8c3('0x1'))['db'][_0xd8c3('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xd8c3('0x3')](0x0);var events={'afterCreate':_0xd8c3('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x374db8){return function(_0x397c35,_0xad1032,_0x15ef4a){WhatsappAccountEvents[_0xd8c3('0x5')](_0x374db8+':'+_0x397c35['id'],_0x397c35);WhatsappAccountEvents[_0xd8c3('0x5')](_0x374db8,_0x397c35);_0x15ef4a(null);};}for(var e in events){if(events[_0xd8c3('0x6')](e)){var event=events[e];WhatsappAccount[_0xd8c3('0x7')](e,emitEvent(event));}}module[_0xd8c3('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
index 7508ad0..6f72d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8e=['whatsapp_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./whatsappAccount.attributes','exports','define','WhatsappAccount'];(function(_0x641f18,_0x2919e8){var _0x16eefe=function(_0x578a89){while(--_0x578a89){_0x641f18['push'](_0x641f18['shift']());}};_0x16eefe(++_0x2919e8);}(_0xbc8e,0xc1));var _0xebc8=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbc8e[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xebc8('0x0'));var util=require('util');var logger=require(_0xebc8('0x1'))(_0xebc8('0x2'));var moment=require(_0xebc8('0x3'));var BPromise=require(_0xebc8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xebc8('0x5'));var rimraf=require(_0xebc8('0x6'));var config=require('../../config/environment');var attributes=require(_0xebc8('0x7'));module[_0xebc8('0x8')]=function(_0x59718f,_0x53cb1e){return _0x59718f[_0xebc8('0x9')](_0xebc8('0xa'),attributes,{'tableName':_0xebc8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeb2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xdeb2,0x72));var _0x2deb=function(_0xfb9d2d,_0x4067c9){_0xfb9d2d=_0xfb9d2d-0x0;var _0xd2eac7=_0xdeb2[_0xfb9d2d];return _0xd2eac7;};'use strict';var _=require(_0x2deb('0x0'));var util=require(_0x2deb('0x1'));var logger=require(_0x2deb('0x2'))(_0x2deb('0x3'));var moment=require(_0x2deb('0x4'));var BPromise=require(_0x2deb('0x5'));var rp=require(_0x2deb('0x6'));var fs=require('fs');var path=require(_0x2deb('0x7'));var rimraf=require(_0x2deb('0x8'));var config=require(_0x2deb('0x9'));var attributes=require('./whatsappAccount.attributes');module[_0x2deb('0xa')]=function(_0x598043,_0x1a3890){return _0x598043['define'](_0x2deb('0xb'),attributes,{'tableName':_0x2deb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 12c7876..42c81e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa508=['message','info','result','catch','WhatsappAccount','find','options','raw','where','attributes','include','map','model','ShowWhatsappAccount','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x5ec3f3,_0x3df416){var _0xf0bb05=function(_0x508eaa){while(--_0x508eaa){_0x5ec3f3['push'](_0x5ec3f3['shift']());}};_0xf0bb05(++_0x3df416);}(_0xa508,0x83));var _0x8a50=function(_0x5ec893,_0x55a18b){_0x5ec893=_0x5ec893-0x0;var _0x4497e5=_0xa508[_0x5ec893];return _0x4497e5;};'use strict';var _=require(_0x8a50('0x0'));var util=require(_0x8a50('0x1'));var moment=require('moment');var BPromise=require(_0x8a50('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a50('0x3'));var db=require(_0x8a50('0x4'))['db'];var utils=require(_0x8a50('0x5'));var logger=require(_0x8a50('0x6'))(_0x8a50('0x7'));var config=require(_0x8a50('0x8'));var jayson=require(_0x8a50('0x9'));var client=jayson[_0x8a50('0xa')]['http']({'port':0x232a});config[_0x8a50('0xb')]=_[_0x8a50('0xc')](config[_0x8a50('0xb')],{'host':_0x8a50('0xd'),'port':0x18eb});var socket=require(_0x8a50('0xe'))(new Redis(config[_0x8a50('0xb')]));require(_0x8a50('0xf'))['register'](socket);function respondWithRpcPromise(_0x44e6ee,_0x169c59,_0x164835){return new BPromise(function(_0x394ffa,_0x4829d1){return client[_0x8a50('0x10')](_0x44e6ee,_0x164835)[_0x8a50('0x11')](function(_0x5c2449){logger['info'](_0x8a50('0x12'),_0x169c59,_0x8a50('0x13'));logger[_0x8a50('0x14')](_0x8a50('0x15'),_0x169c59,_0x8a50('0x13'),JSON[_0x8a50('0x16')](_0x5c2449));if(_0x5c2449['error']){if(_0x5c2449[_0x8a50('0x17')][_0x8a50('0x18')]===0x1f4){logger[_0x8a50('0x17')](_0x8a50('0x12'),_0x169c59,_0x5c2449[_0x8a50('0x17')]['message']);return _0x4829d1(_0x5c2449[_0x8a50('0x17')]['message']);}logger[_0x8a50('0x17')](_0x8a50('0x12'),_0x169c59,_0x5c2449['error'][_0x8a50('0x19')]);return _0x394ffa(_0x5c2449[_0x8a50('0x17')][_0x8a50('0x19')]);}else{logger[_0x8a50('0x1a')]('WhatsappAccount,\x20%s,\x20%s',_0x169c59,_0x8a50('0x13'));_0x394ffa(_0x5c2449[_0x8a50('0x1b')][_0x8a50('0x19')]);}})[_0x8a50('0x1c')](function(_0x4c6830){logger[_0x8a50('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x169c59,_0x4c6830);_0x4829d1(_0x4c6830);});});}exports['ShowWhatsappAccount']=function(_0x19a621){var _0x34ed92=this;return new Promise(function(_0xdd7401,_0x34b4bf){return db[_0x8a50('0x1d')][_0x8a50('0x1e')]({'raw':_0x19a621[_0x8a50('0x1f')]?_0x19a621[_0x8a50('0x1f')][_0x8a50('0x20')]===undefined?!![]:![]:!![],'where':_0x19a621[_0x8a50('0x1f')]?_0x19a621[_0x8a50('0x1f')][_0x8a50('0x21')]||null:null,'attributes':_0x19a621[_0x8a50('0x1f')]?_0x19a621[_0x8a50('0x1f')][_0x8a50('0x22')]||null:null,'include':_0x19a621[_0x8a50('0x1f')]?_0x19a621['options'][_0x8a50('0x23')]?_[_0x8a50('0x24')](_0x19a621['options'][_0x8a50('0x23')],function(_0x4298c0){return{'model':db[_0x4298c0[_0x8a50('0x25')]],'as':_0x4298c0['as'],'attributes':_0x4298c0[_0x8a50('0x22')],'include':_0x4298c0[_0x8a50('0x23')]?_[_0x8a50('0x24')](_0x4298c0[_0x8a50('0x23')],function(_0x6061e9){return{'model':db[_0x6061e9[_0x8a50('0x25')]],'as':_0x6061e9['as'],'attributes':_0x6061e9[_0x8a50('0x22')],'include':_0x6061e9[_0x8a50('0x23')]?_[_0x8a50('0x24')](_0x6061e9[_0x8a50('0x23')],function(_0x402d7c){return{'model':db[_0x402d7c[_0x8a50('0x25')]],'as':_0x402d7c['as'],'attributes':_0x402d7c[_0x8a50('0x22')]};}):[]};}):[]};}):[]:[]})[_0x8a50('0x11')](function(_0x5f2c67){logger[_0x8a50('0x1a')]('ShowWhatsappAccount',_0x19a621);logger[_0x8a50('0x14')](_0x8a50('0x26'),_0x19a621,JSON[_0x8a50('0x16')](_0x5f2c67));_0xdd7401(_0x5f2c67);})[_0x8a50('0x1c')](function(_0x42ee41){logger[_0x8a50('0x17')](_0x8a50('0x26'),_0x42ee41[_0x8a50('0x19')],_0x19a621);_0x34b4bf(_0x34ed92['error'](0x1f4,_0x42ee41['message']));});});};
\ No newline at end of file
+var _0x445a=['socket.io-emitter','./whatsappAccount.socket','register','request','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','ShowWhatsappAccount','WhatsappAccount','find','options','attributes','include','map','model','then','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x445a,0x1de));var _0xa445=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x445a[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xa445('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa445('0x1'));var rs=require(_0xa445('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa445('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa445('0x4'))(_0xa445('0x5'));var config=require(_0xa445('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa445('0x7')][_0xa445('0x8')]({'port':0x232a});config[_0xa445('0x9')]=_[_0xa445('0xa')](config['redis'],{'host':_0xa445('0xb'),'port':0x18eb});var socket=require(_0xa445('0xc'))(new Redis(config[_0xa445('0x9')]));require(_0xa445('0xd'))[_0xa445('0xe')](socket);function respondWithRpcPromise(_0x4e3130,_0x24f8a9,_0x5ab660){return new BPromise(function(_0x3ec634,_0x2f95e8){return client[_0xa445('0xf')](_0x4e3130,_0x5ab660)['then'](function(_0x200ccb){logger[_0xa445('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x24f8a9,_0xa445('0x11'));logger[_0xa445('0x12')](_0xa445('0x13'),_0x24f8a9,_0xa445('0x11'),JSON[_0xa445('0x14')](_0x200ccb));if(_0x200ccb[_0xa445('0x15')]){if(_0x200ccb[_0xa445('0x15')][_0xa445('0x16')]===0x1f4){logger[_0xa445('0x15')](_0xa445('0x17'),_0x24f8a9,_0x200ccb['error'][_0xa445('0x18')]);return _0x2f95e8(_0x200ccb[_0xa445('0x15')][_0xa445('0x18')]);}logger[_0xa445('0x15')](_0xa445('0x17'),_0x24f8a9,_0x200ccb[_0xa445('0x15')][_0xa445('0x18')]);return _0x3ec634(_0x200ccb[_0xa445('0x15')][_0xa445('0x18')]);}else{logger[_0xa445('0x10')](_0xa445('0x17'),_0x24f8a9,'request\x20sent');_0x3ec634(_0x200ccb['result'][_0xa445('0x18')]);}})['catch'](function(_0x552e17){logger[_0xa445('0x15')](_0xa445('0x17'),_0x24f8a9,_0x552e17);_0x2f95e8(_0x552e17);});});}exports[_0xa445('0x19')]=function(_0x59fd56){var _0x33ff6a=this;return new Promise(function(_0x4d72d0,_0x53cbdc){return db[_0xa445('0x1a')][_0xa445('0x1b')]({'raw':_0x59fd56['options']?_0x59fd56['options']['raw']===undefined?!![]:![]:!![],'where':_0x59fd56[_0xa445('0x1c')]?_0x59fd56['options']['where']||null:null,'attributes':_0x59fd56[_0xa445('0x1c')]?_0x59fd56[_0xa445('0x1c')][_0xa445('0x1d')]||null:null,'include':_0x59fd56[_0xa445('0x1c')]?_0x59fd56['options'][_0xa445('0x1e')]?_[_0xa445('0x1f')](_0x59fd56['options'][_0xa445('0x1e')],function(_0x49f5dc){return{'model':db[_0x49f5dc[_0xa445('0x20')]],'as':_0x49f5dc['as'],'attributes':_0x49f5dc[_0xa445('0x1d')],'include':_0x49f5dc[_0xa445('0x1e')]?_[_0xa445('0x1f')](_0x49f5dc[_0xa445('0x1e')],function(_0x39dfef){return{'model':db[_0x39dfef[_0xa445('0x20')]],'as':_0x39dfef['as'],'attributes':_0x39dfef[_0xa445('0x1d')],'include':_0x39dfef[_0xa445('0x1e')]?_[_0xa445('0x1f')](_0x39dfef[_0xa445('0x1e')],function(_0x17510c){return{'model':db[_0x17510c[_0xa445('0x20')]],'as':_0x17510c['as'],'attributes':_0x17510c[_0xa445('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa445('0x21')](function(_0x1165e1){logger[_0xa445('0x10')](_0xa445('0x19'),_0x59fd56);logger[_0xa445('0x12')]('ShowWhatsappAccount',_0x59fd56,JSON['stringify'](_0x1165e1));_0x4d72d0(_0x1165e1);})[_0xa445('0x22')](function(_0x1fd389){logger['error'](_0xa445('0x19'),_0x1fd389[_0xa445('0x18')],_0x59fd56);_0x53cbdc(_0x33ff6a[_0xa445('0x15')](0x1f4,_0x1fd389['message']));});});};
\ No newline at end of file
index 0a7deda..a9bdb31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe787=['update','emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save','remove'];(function(_0x3270ac,_0x2b6e53){var _0x1c3e32=function(_0x1f1202){while(--_0x1f1202){_0x3270ac['push'](_0x3270ac['shift']());}};_0x1c3e32(++_0x2b6e53);}(_0xe787,0x72));var _0x7e78=function(_0x3f2fea,_0x3c4ea8){_0x3f2fea=_0x3f2fea-0x0;var _0x69a4d5=_0xe787[_0x3f2fea];return _0x69a4d5;};'use strict';var WhatsappAccountEvents=require(_0x7e78('0x0'));var events=[_0x7e78('0x1'),_0x7e78('0x2'),_0x7e78('0x3')];function createListener(_0x19f8e7,_0x339e14){return function(_0x27c65a){_0x339e14[_0x7e78('0x4')](_0x19f8e7,_0x27c65a);};}function removeListener(_0x737c54,_0x3c76a4){return function(){WhatsappAccountEvents[_0x7e78('0x5')](_0x737c54,_0x3c76a4);};}exports[_0x7e78('0x6')]=function(_0x3adb17){for(var _0x2f6695=0x0,_0x365981=events[_0x7e78('0x7')];_0x2f6695<_0x365981;_0x2f6695++){var _0x3ebcf0=events[_0x2f6695];var _0x47579a=createListener(_0x7e78('0x8')+_0x3ebcf0,_0x3adb17);WhatsappAccountEvents['on'](_0x3ebcf0,_0x47579a);}};
\ No newline at end of file
+var _0x878f=['save','update','emit','removeListener','register','length','whatsappAccount:'];(function(_0x360971,_0x458b9c){var _0x40672a=function(_0xa931a7){while(--_0xa931a7){_0x360971['push'](_0x360971['shift']());}};_0x40672a(++_0x458b9c);}(_0x878f,0xf5));var _0xf878=function(_0x12c9f4,_0x5777b6){_0x12c9f4=_0x12c9f4-0x0;var _0x4650f9=_0x878f[_0x12c9f4];return _0x4650f9;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0xf878('0x0'),'remove',_0xf878('0x1')];function createListener(_0xa03599,_0x49621b){return function(_0x18a787){_0x49621b[_0xf878('0x2')](_0xa03599,_0x18a787);};}function removeListener(_0x4a350b,_0x55165e){return function(){WhatsappAccountEvents[_0xf878('0x3')](_0x4a350b,_0x55165e);};}exports[_0xf878('0x4')]=function(_0x15ca30){for(var _0x34c575=0x0,_0x27b52a=events[_0xf878('0x5')];_0x34c575<_0x27b52a;_0x34c575++){var _0x13c9a9=events[_0x34c575];var _0x16a3f1=createListener(_0xf878('0x6')+_0x13c9a9,_0x15ca30);WhatsappAccountEvents['on'](_0x13c9a9,_0x16a3f1);}};
\ No newline at end of file
index 974ec8a..7f69230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5807=['util','connect-timeout','express','Router','../../components/interaction/service','index','get','/:id','isAuthenticated','show','create','delete','destroy','multer'];(function(_0x1ccbcc,_0x5c948b){var _0x1e873f=function(_0x4f232e){while(--_0x4f232e){_0x1ccbcc['push'](_0x1ccbcc['shift']());}};_0x1e873f(++_0x5c948b);}(_0x5807,0x109));var _0x7580=function(_0x52b7b9,_0x43ed4b){_0x52b7b9=_0x52b7b9-0x0;var _0x5b5d30=_0x5807[_0x52b7b9];return _0x5b5d30;};'use strict';var multer=require(_0x7580('0x0'));var util=require(_0x7580('0x1'));var path=require('path');var timeout=require(_0x7580('0x2'));var express=require(_0x7580('0x3'));var router=express[_0x7580('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7580('0x5'));var config=require('../../config/environment');var controller=require('./whatsappApplication.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x7580('0x6')]);router[_0x7580('0x7')](_0x7580('0x8'),auth[_0x7580('0x9')](),controller[_0x7580('0xa')]);router['post']('/',auth[_0x7580('0x9')](),controller[_0x7580('0xb')]);router['put'](_0x7580('0x8'),auth[_0x7580('0x9')](),controller['update']);router[_0x7580('0xc')](_0x7580('0x8'),auth[_0x7580('0x9')](),controller[_0x7580('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xb7ab=['../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer','path','express','fs-extra','../../components/auth/service'];(function(_0x47ce3c,_0x3cdf4f){var _0x162d11=function(_0x398ebb){while(--_0x398ebb){_0x47ce3c['push'](_0x47ce3c['shift']());}};_0x162d11(++_0x3cdf4f);}(_0xb7ab,0x93));var _0xbb7a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb7ab[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xbb7a('0x0'));var util=require('util');var path=require(_0xbb7a('0x1'));var timeout=require('connect-timeout');var express=require(_0xbb7a('0x2'));var router=express['Router']();var fs_extra=require(_0xbb7a('0x3'));var auth=require(_0xbb7a('0x4'));var interaction=require(_0xbb7a('0x5'));var config=require(_0xbb7a('0x6'));var controller=require(_0xbb7a('0x7'));router[_0xbb7a('0x8')]('/',auth[_0xbb7a('0x9')](),controller[_0xbb7a('0xa')]);router['get']('/:id',auth[_0xbb7a('0x9')](),controller[_0xbb7a('0xb')]);router[_0xbb7a('0xc')]('/',auth[_0xbb7a('0x9')](),controller[_0xbb7a('0xd')]);router[_0xbb7a('0xe')](_0xbb7a('0xf'),auth[_0xbb7a('0x9')](),controller[_0xbb7a('0x10')]);router[_0xbb7a('0x11')](_0xbb7a('0xf'),auth[_0xbb7a('0x9')](),controller[_0xbb7a('0x12')]);module['exports']=router;
\ No newline at end of file
index 9612f0e..183b3aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7286=['noop','TEXT','*,*,*,*','exports','STRING'];(function(_0x4b775b,_0x2aadc6){var _0xf84d39=function(_0x55ac96){while(--_0x55ac96){_0x4b775b['push'](_0x4b775b['shift']());}};_0xf84d39(++_0x2aadc6);}(_0x7286,0xa3));var _0x6728=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x7286[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require('sequelize');module[_0x6728('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x6728('0x1')],'allowNull':![],'defaultValue':_0x6728('0x2')},'appdata':{'type':Sequelize[_0x6728('0x3')]()},'description':{'type':Sequelize[_0x6728('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x6728('0x4')}};
\ No newline at end of file
+var _0x448e=['*,*,*,*','exports','INTEGER','STRING','TEXT'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x448e,0x191));var _0xe448=function(_0x451ef3,_0x4331d7){_0x451ef3=_0x451ef3-0x0;var _0x257295=_0x448e[_0x451ef3];return _0x257295;};'use strict';var Sequelize=require('sequelize');module[_0xe448('0x0')]={'priority':{'type':Sequelize[_0xe448('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe448('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xe448('0x3')]()},'description':{'type':Sequelize[_0xe448('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xe448('0x4')}};
\ No newline at end of file
index 94abad7..8d24597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8e8=['undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','keys','query','attributes','intersection','model','length','nolimit','order','sort','filters','pick','where','VIRTUAL','filter','merge','options','include','findAll','rows','catch','params','fields','includeAll','create','body','find','eml-format','rimraf','request-promise','moment','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x21a1a6,_0x1474bf){var _0x5cec0e=function(_0x13abb9){while(--_0x13abb9){_0x21a1a6['push'](_0x21a1a6['shift']());}};_0x5cec0e(++_0x1474bf);}(_0xe8e8,0xc6));var _0x8e8e=function(_0x4eaebd,_0x213075){_0x4eaebd=_0x4eaebd-0x0;var _0x4d4823=_0xe8e8[_0x4eaebd];return _0x4d4823;};'use strict';var emlformat=require(_0x8e8e('0x0'));var rimraf=require(_0x8e8e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8e8e('0x2'));var moment=require(_0x8e8e('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8e8e('0x4'));var path=require('path');var sox=require(_0x8e8e('0x5'));var csv=require(_0x8e8e('0x6'));var ejs=require(_0x8e8e('0x7'));var fs=require('fs');var fs_extra=require(_0x8e8e('0x8'));var _=require('lodash');var squel=require(_0x8e8e('0x9'));var crypto=require('crypto');var jsforce=require(_0x8e8e('0xa'));var deskjs=require(_0x8e8e('0xb'));var toCsv=require(_0x8e8e('0x6'));var querystring=require(_0x8e8e('0xc'));var Papa=require(_0x8e8e('0xd'));var Redis=require(_0x8e8e('0xe'));var authService=require(_0x8e8e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8e8e('0x10'));var hardwareService=require(_0x8e8e('0x11'));var logger=require(_0x8e8e('0x12'))(_0x8e8e('0x13'));var utils=require('../../config/utils');var config=require(_0x8e8e('0x14'));var licenseUtil=require(_0x8e8e('0x15'));var db=require(_0x8e8e('0x16'))['db'];function respondWithStatusCode(_0xb6501e,_0x1f5aa2){_0x1f5aa2=_0x1f5aa2||0xcc;return function(_0x17e222){if(_0x17e222){return _0xb6501e[_0x8e8e('0x17')](_0x1f5aa2);}return _0xb6501e[_0x8e8e('0x18')](_0x1f5aa2)[_0x8e8e('0x19')]();};}function respondWithResult(_0x176ae6,_0x548774){_0x548774=_0x548774||0xc8;return function(_0x320c42){if(_0x320c42){return _0x176ae6[_0x8e8e('0x18')](_0x548774)['json'](_0x320c42);}};}function respondWithFilteredResult(_0x45a15a,_0x23c61b){return function(_0x5d8be1){if(_0x5d8be1){var _0x439288=typeof _0x23c61b[_0x8e8e('0x1a')]===_0x8e8e('0x1b')&&typeof _0x23c61b[_0x8e8e('0x1c')]===_0x8e8e('0x1b');var _0x36c329=_0x5d8be1[_0x8e8e('0x1d')];var _0x27f7f6=_0x439288?0x0:_0x23c61b[_0x8e8e('0x1a')];var _0xdbde13=_0x439288?_0x5d8be1['count']:_0x23c61b[_0x8e8e('0x1a')]+_0x23c61b[_0x8e8e('0x1c')];var _0x5c2a85;if(_0xdbde13>=_0x36c329){_0xdbde13=_0x36c329;_0x5c2a85=0xc8;}else{_0x5c2a85=0xce;}_0x45a15a[_0x8e8e('0x18')](_0x5c2a85);return _0x45a15a[_0x8e8e('0x1e')](_0x8e8e('0x1f'),_0x27f7f6+'-'+_0xdbde13+'/'+_0x36c329)[_0x8e8e('0x20')](_0x5d8be1);}return null;};}function patchUpdates(_0x572c19){return function(_0x586b7e){try{jsonpatch['apply'](_0x586b7e,_0x572c19,!![]);}catch(_0x2676f3){return BPromise[_0x8e8e('0x21')](_0x2676f3);}return _0x586b7e[_0x8e8e('0x22')]();};}function saveUpdates(_0x21efa0,_0x59f008){return function(_0x32ff35){if(_0x32ff35){return _0x32ff35[_0x8e8e('0x23')](_0x21efa0)[_0x8e8e('0x24')](function(_0x585743){return _0x585743;});}return null;};}function removeEntity(_0x3d42c2,_0x4c685e){return function(_0x5f2a24){if(_0x5f2a24){return _0x5f2a24[_0x8e8e('0x25')]()[_0x8e8e('0x24')](function(){_0x3d42c2['status'](0xcc)[_0x8e8e('0x19')]();});}};}function handleEntityNotFound(_0x338f91,_0x32899c){return function(_0x110c70){if(!_0x110c70){_0x338f91['sendStatus'](0x194);}return _0x110c70;};}function handleError(_0x344830,_0x1dfed4){_0x1dfed4=_0x1dfed4||0x1f4;return function(_0x1ca842){logger[_0x8e8e('0x26')](_0x1ca842[_0x8e8e('0x27')]);if(_0x1ca842[_0x8e8e('0x28')]){delete _0x1ca842[_0x8e8e('0x28')];}_0x344830[_0x8e8e('0x18')](_0x1dfed4)[_0x8e8e('0x29')](_0x1ca842);};}exports[_0x8e8e('0x2a')]=function(_0x56424b,_0x3fca96){var _0x408ed6={},_0x2536df={},_0x4929ab={'count':0x0,'rows':[]};var _0xaba2cc=_[_0x8e8e('0x2b')](db[_0x8e8e('0x2c')][_0x8e8e('0x2d')],function(_0x5edf41){return{'name':_0x5edf41[_0x8e8e('0x2e')],'type':_0x5edf41[_0x8e8e('0x2f')][_0x8e8e('0x30')]};});_0x2536df['model']=_[_0x8e8e('0x2b')](_0xaba2cc,_0x8e8e('0x28'));_0x2536df['query']=_[_0x8e8e('0x31')](_0x56424b[_0x8e8e('0x32')]);_0x2536df['filters']=_['intersection'](_0x2536df['model'],_0x2536df[_0x8e8e('0x32')]);_0x408ed6[_0x8e8e('0x33')]=_[_0x8e8e('0x34')](_0x2536df[_0x8e8e('0x35')],qs['fields'](_0x56424b[_0x8e8e('0x32')]['fields']));_0x408ed6['attributes']=_0x408ed6[_0x8e8e('0x33')][_0x8e8e('0x36')]?_0x408ed6['attributes']:_0x2536df[_0x8e8e('0x35')];if(!_0x56424b[_0x8e8e('0x32')]['hasOwnProperty'](_0x8e8e('0x37'))){_0x408ed6[_0x8e8e('0x1c')]=qs[_0x8e8e('0x1c')](_0x56424b[_0x8e8e('0x32')][_0x8e8e('0x1c')]);_0x408ed6[_0x8e8e('0x1a')]=qs[_0x8e8e('0x1a')](_0x56424b[_0x8e8e('0x32')][_0x8e8e('0x1a')]);}_0x408ed6[_0x8e8e('0x38')]=qs[_0x8e8e('0x39')](_0x56424b['query'][_0x8e8e('0x39')]);_0x408ed6['where']=qs[_0x8e8e('0x3a')](_[_0x8e8e('0x3b')](_0x56424b[_0x8e8e('0x32')],_0x2536df[_0x8e8e('0x3a')]),_0xaba2cc);if(_0x56424b[_0x8e8e('0x32')]['filter']){_0x408ed6[_0x8e8e('0x3c')]=_['merge'](_0x408ed6[_0x8e8e('0x3c')],{'$or':_[_0x8e8e('0x2b')](_0xaba2cc,function(_0x3f60d1){if(_0x3f60d1['type']!==_0x8e8e('0x3d')){var _0x19fd04={};_0x19fd04[_0x3f60d1['name']]={'$like':'%'+_0x56424b[_0x8e8e('0x32')][_0x8e8e('0x3e')]+'%'};return _0x19fd04;}})});}_0x408ed6=_[_0x8e8e('0x3f')]({},_0x408ed6,_0x56424b[_0x8e8e('0x40')]);var _0x409981={'where':_0x408ed6[_0x8e8e('0x3c')]};return db['WhatsappApplication'][_0x8e8e('0x1d')](_0x409981)[_0x8e8e('0x24')](function(_0x1402d8){_0x4929ab[_0x8e8e('0x1d')]=_0x1402d8;if(_0x56424b[_0x8e8e('0x32')]['includeAll']){_0x408ed6[_0x8e8e('0x41')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x8e8e('0x42')](_0x408ed6);})['then'](function(_0x549dd6){_0x4929ab[_0x8e8e('0x43')]=_0x549dd6;return _0x4929ab;})[_0x8e8e('0x24')](respondWithFilteredResult(_0x3fca96,_0x408ed6))[_0x8e8e('0x44')](handleError(_0x3fca96,null));};exports['show']=function(_0x610892,_0x58aa71){var _0x12009c={'raw':!![],'where':{'id':_0x610892[_0x8e8e('0x45')]['id']}},_0x5dafb1={};_0x5dafb1[_0x8e8e('0x35')]=_[_0x8e8e('0x31')](db['WhatsappApplication'][_0x8e8e('0x2d')]);_0x5dafb1['query']=_[_0x8e8e('0x31')](_0x610892['query']);_0x5dafb1[_0x8e8e('0x3a')]=_[_0x8e8e('0x34')](_0x5dafb1[_0x8e8e('0x35')],_0x5dafb1[_0x8e8e('0x32')]);_0x12009c[_0x8e8e('0x33')]=_[_0x8e8e('0x34')](_0x5dafb1[_0x8e8e('0x35')],qs[_0x8e8e('0x46')](_0x610892[_0x8e8e('0x32')][_0x8e8e('0x46')]));_0x12009c[_0x8e8e('0x33')]=_0x12009c['attributes'][_0x8e8e('0x36')]?_0x12009c[_0x8e8e('0x33')]:_0x5dafb1[_0x8e8e('0x35')];if(_0x610892[_0x8e8e('0x32')][_0x8e8e('0x47')]){_0x12009c['include']=[{'all':!![]}];}_0x12009c=_[_0x8e8e('0x3f')]({},_0x12009c,_0x610892[_0x8e8e('0x40')]);return db[_0x8e8e('0x2c')]['find'](_0x12009c)[_0x8e8e('0x24')](handleEntityNotFound(_0x58aa71,null))[_0x8e8e('0x24')](respondWithResult(_0x58aa71,null))[_0x8e8e('0x44')](handleError(_0x58aa71,null));};exports[_0x8e8e('0x48')]=function(_0x132bcf,_0xae770c){return db[_0x8e8e('0x2c')]['create'](_0x132bcf['body'],{})[_0x8e8e('0x24')](respondWithResult(_0xae770c,0xc9))[_0x8e8e('0x44')](handleError(_0xae770c,null));};exports[_0x8e8e('0x23')]=function(_0x150a7d,_0x4bc828){if(_0x150a7d[_0x8e8e('0x49')]['id']){delete _0x150a7d[_0x8e8e('0x49')]['id'];}return db[_0x8e8e('0x2c')][_0x8e8e('0x4a')]({'where':{'id':_0x150a7d[_0x8e8e('0x45')]['id']}})['then'](handleEntityNotFound(_0x4bc828,null))['then'](saveUpdates(_0x150a7d['body'],null))[_0x8e8e('0x24')](respondWithResult(_0x4bc828,null))[_0x8e8e('0x44')](handleError(_0x4bc828,null));};exports[_0x8e8e('0x25')]=function(_0x5d8181,_0x310bc8){return db[_0x8e8e('0x2c')][_0x8e8e('0x4a')]({'where':{'id':_0x5d8181['params']['id']}})[_0x8e8e('0x24')](handleEntityNotFound(_0x310bc8,null))[_0x8e8e('0x24')](removeEntity(_0x310bc8,null))[_0x8e8e('0x44')](handleError(_0x310bc8,null));};
\ No newline at end of file
+var _0x3f35=['include','findAll','rows','show','includeAll','create','body','catch','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','status','end','json','offset','undefined','count','limit','set','apply','reject','update','then','destroy','sendStatus','error','name','send','index','WhatsappApplication','rawAttributes','fieldName','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','type','VIRTUAL','options'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x3f35,0x1ae));var _0x53f3=function(_0x1ed116,_0x23bc80){_0x1ed116=_0x1ed116-0x0;var _0x574066=_0x3f35[_0x1ed116];return _0x574066;};'use strict';var emlformat=require(_0x53f3('0x0'));var rimraf=require(_0x53f3('0x1'));var zipdir=require(_0x53f3('0x2'));var jsonpatch=require(_0x53f3('0x3'));var rp=require(_0x53f3('0x4'));var moment=require(_0x53f3('0x5'));var BPromise=require(_0x53f3('0x6'));var Mustache=require('mustache');var util=require(_0x53f3('0x7'));var path=require('path');var sox=require(_0x53f3('0x8'));var csv=require('to-csv');var ejs=require(_0x53f3('0x9'));var fs=require('fs');var fs_extra=require(_0x53f3('0xa'));var _=require(_0x53f3('0xb'));var squel=require(_0x53f3('0xc'));var crypto=require('crypto');var jsforce=require(_0x53f3('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x53f3('0xe'));var Redis=require(_0x53f3('0xf'));var authService=require(_0x53f3('0x10'));var qs=require(_0x53f3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x53f3('0x12'))(_0x53f3('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x53f3('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x486bf9,_0x2225dd){_0x2225dd=_0x2225dd||0xcc;return function(_0x57888b){if(_0x57888b){return _0x486bf9['sendStatus'](_0x2225dd);}return _0x486bf9[_0x53f3('0x15')](_0x2225dd)[_0x53f3('0x16')]();};}function respondWithResult(_0x59e7c5,_0x490b27){_0x490b27=_0x490b27||0xc8;return function(_0xfd9652){if(_0xfd9652){return _0x59e7c5['status'](_0x490b27)[_0x53f3('0x17')](_0xfd9652);}};}function respondWithFilteredResult(_0x3d485c,_0x27db9a){return function(_0x2319cd){if(_0x2319cd){var _0x3f2dc3=typeof _0x27db9a[_0x53f3('0x18')]===_0x53f3('0x19')&&typeof _0x27db9a['limit']===_0x53f3('0x19');var _0x1d2319=_0x2319cd[_0x53f3('0x1a')];var _0x5ae118=_0x3f2dc3?0x0:_0x27db9a['offset'];var _0x924dae=_0x3f2dc3?_0x2319cd['count']:_0x27db9a[_0x53f3('0x18')]+_0x27db9a[_0x53f3('0x1b')];var _0x58c850;if(_0x924dae>=_0x1d2319){_0x924dae=_0x1d2319;_0x58c850=0xc8;}else{_0x58c850=0xce;}_0x3d485c[_0x53f3('0x15')](_0x58c850);return _0x3d485c[_0x53f3('0x1c')]('Content-Range',_0x5ae118+'-'+_0x924dae+'/'+_0x1d2319)[_0x53f3('0x17')](_0x2319cd);}return null;};}function patchUpdates(_0x30b6a8){return function(_0x102517){try{jsonpatch[_0x53f3('0x1d')](_0x102517,_0x30b6a8,!![]);}catch(_0x36e191){return BPromise[_0x53f3('0x1e')](_0x36e191);}return _0x102517['save']();};}function saveUpdates(_0xef4593,_0x268a0a){return function(_0x2ba5db){if(_0x2ba5db){return _0x2ba5db[_0x53f3('0x1f')](_0xef4593)[_0x53f3('0x20')](function(_0x5055ce){return _0x5055ce;});}return null;};}function removeEntity(_0x1ab104,_0x41be9b){return function(_0x3bad5b){if(_0x3bad5b){return _0x3bad5b[_0x53f3('0x21')]()[_0x53f3('0x20')](function(){_0x1ab104[_0x53f3('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11bb9d,_0x5902b7){return function(_0x513d2d){if(!_0x513d2d){_0x11bb9d[_0x53f3('0x22')](0x194);}return _0x513d2d;};}function handleError(_0x51b74b,_0x1772da){_0x1772da=_0x1772da||0x1f4;return function(_0x36aa64){logger[_0x53f3('0x23')](_0x36aa64['stack']);if(_0x36aa64['name']){delete _0x36aa64[_0x53f3('0x24')];}_0x51b74b[_0x53f3('0x15')](_0x1772da)[_0x53f3('0x25')](_0x36aa64);};}exports[_0x53f3('0x26')]=function(_0x173bf8,_0x5a4b2f){var _0x1b172b={},_0x1ccd36={},_0x27d692={'count':0x0,'rows':[]};var _0x17f510=_['map'](db[_0x53f3('0x27')][_0x53f3('0x28')],function(_0x5afd83){return{'name':_0x5afd83[_0x53f3('0x29')],'type':_0x5afd83['type']['key']};});_0x1ccd36[_0x53f3('0x2a')]=_[_0x53f3('0x2b')](_0x17f510,'name');_0x1ccd36['query']=_[_0x53f3('0x2c')](_0x173bf8['query']);_0x1ccd36[_0x53f3('0x2d')]=_[_0x53f3('0x2e')](_0x1ccd36[_0x53f3('0x2a')],_0x1ccd36[_0x53f3('0x2f')]);_0x1b172b[_0x53f3('0x30')]=_[_0x53f3('0x2e')](_0x1ccd36['model'],qs['fields'](_0x173bf8['query'][_0x53f3('0x31')]));_0x1b172b[_0x53f3('0x30')]=_0x1b172b[_0x53f3('0x30')][_0x53f3('0x32')]?_0x1b172b['attributes']:_0x1ccd36[_0x53f3('0x2a')];if(!_0x173bf8['query'][_0x53f3('0x33')](_0x53f3('0x34'))){_0x1b172b[_0x53f3('0x1b')]=qs[_0x53f3('0x1b')](_0x173bf8['query'][_0x53f3('0x1b')]);_0x1b172b['offset']=qs[_0x53f3('0x18')](_0x173bf8['query']['offset']);}_0x1b172b['order']=qs[_0x53f3('0x35')](_0x173bf8[_0x53f3('0x2f')]['sort']);_0x1b172b['where']=qs[_0x53f3('0x2d')](_['pick'](_0x173bf8[_0x53f3('0x2f')],_0x1ccd36['filters']),_0x17f510);if(_0x173bf8['query'][_0x53f3('0x36')]){_0x1b172b['where']=_[_0x53f3('0x37')](_0x1b172b[_0x53f3('0x38')],{'$or':_[_0x53f3('0x2b')](_0x17f510,function(_0x5cdfc1){if(_0x5cdfc1[_0x53f3('0x39')]!==_0x53f3('0x3a')){var _0x502ff1={};_0x502ff1[_0x5cdfc1[_0x53f3('0x24')]]={'$like':'%'+_0x173bf8['query'][_0x53f3('0x36')]+'%'};return _0x502ff1;}})});}_0x1b172b=_[_0x53f3('0x37')]({},_0x1b172b,_0x173bf8[_0x53f3('0x3b')]);var _0x412a0f={'where':_0x1b172b[_0x53f3('0x38')]};return db['WhatsappApplication']['count'](_0x412a0f)[_0x53f3('0x20')](function(_0x4ce79e){_0x27d692[_0x53f3('0x1a')]=_0x4ce79e;if(_0x173bf8[_0x53f3('0x2f')]['includeAll']){_0x1b172b[_0x53f3('0x3c')]=[{'all':!![]}];}return db[_0x53f3('0x27')][_0x53f3('0x3d')](_0x1b172b);})[_0x53f3('0x20')](function(_0x13ac07){_0x27d692[_0x53f3('0x3e')]=_0x13ac07;return _0x27d692;})[_0x53f3('0x20')](respondWithFilteredResult(_0x5a4b2f,_0x1b172b))['catch'](handleError(_0x5a4b2f,null));};exports[_0x53f3('0x3f')]=function(_0x2cc2c9,_0x20a6c0){var _0x41dc94={'raw':!![],'where':{'id':_0x2cc2c9['params']['id']}},_0x1eab17={};_0x1eab17[_0x53f3('0x2a')]=_[_0x53f3('0x2c')](db[_0x53f3('0x27')]['rawAttributes']);_0x1eab17['query']=_[_0x53f3('0x2c')](_0x2cc2c9[_0x53f3('0x2f')]);_0x1eab17['filters']=_['intersection'](_0x1eab17[_0x53f3('0x2a')],_0x1eab17['query']);_0x41dc94[_0x53f3('0x30')]=_[_0x53f3('0x2e')](_0x1eab17[_0x53f3('0x2a')],qs[_0x53f3('0x31')](_0x2cc2c9[_0x53f3('0x2f')][_0x53f3('0x31')]));_0x41dc94[_0x53f3('0x30')]=_0x41dc94[_0x53f3('0x30')][_0x53f3('0x32')]?_0x41dc94[_0x53f3('0x30')]:_0x1eab17['model'];if(_0x2cc2c9[_0x53f3('0x2f')][_0x53f3('0x40')]){_0x41dc94[_0x53f3('0x3c')]=[{'all':!![]}];}_0x41dc94=_[_0x53f3('0x37')]({},_0x41dc94,_0x2cc2c9[_0x53f3('0x3b')]);return db[_0x53f3('0x27')]['find'](_0x41dc94)['then'](handleEntityNotFound(_0x20a6c0,null))['then'](respondWithResult(_0x20a6c0,null))['catch'](handleError(_0x20a6c0,null));};exports[_0x53f3('0x41')]=function(_0x263df8,_0x11dddc){return db[_0x53f3('0x27')][_0x53f3('0x41')](_0x263df8[_0x53f3('0x42')],{})[_0x53f3('0x20')](respondWithResult(_0x11dddc,0xc9))[_0x53f3('0x43')](handleError(_0x11dddc,null));};exports[_0x53f3('0x1f')]=function(_0x2a02bd,_0x3488f0){if(_0x2a02bd['body']['id']){delete _0x2a02bd['body']['id'];}return db[_0x53f3('0x27')][_0x53f3('0x44')]({'where':{'id':_0x2a02bd[_0x53f3('0x45')]['id']}})[_0x53f3('0x20')](handleEntityNotFound(_0x3488f0,null))[_0x53f3('0x20')](saveUpdates(_0x2a02bd[_0x53f3('0x42')],null))[_0x53f3('0x20')](respondWithResult(_0x3488f0,null))[_0x53f3('0x43')](handleError(_0x3488f0,null));};exports[_0x53f3('0x21')]=function(_0x27f2f4,_0xdb5dd8){return db[_0x53f3('0x27')]['find']({'where':{'id':_0x27f2f4[_0x53f3('0x45')]['id']}})[_0x53f3('0x20')](handleEntityNotFound(_0xdb5dd8,null))[_0x53f3('0x20')](removeEntity(_0xdb5dd8,null))['catch'](handleError(_0xdb5dd8,null));};
\ No newline at end of file
index f2477a1..6bdfd4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc7=['define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','request-promise','path','rimraf'];(function(_0x3c701e,_0x376b23){var _0x3dad16=function(_0x27d1ea){while(--_0x27d1ea){_0x3c701e['push'](_0x3c701e['shift']());}};_0x3dad16(++_0x376b23);}(_0x1cc7,0x15a));var _0x71cc=function(_0x3afb3e,_0x150c4d){_0x3afb3e=_0x3afb3e-0x0;var _0xae8e2e=_0x1cc7[_0x3afb3e];return _0xae8e2e;};'use strict';var _=require(_0x71cc('0x0'));var util=require(_0x71cc('0x1'));var logger=require(_0x71cc('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x71cc('0x3'));var fs=require('fs');var path=require(_0x71cc('0x4'));var rimraf=require(_0x71cc('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module['exports']=function(_0x27a175,_0x4ecf81){return _0x27a175[_0x71cc('0x6')](_0x71cc('0x7'),attributes,{'tableName':_0x71cc('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x71cc('0x9'),'collate':_0x71cc('0xa')});};
\ No newline at end of file
+var _0x6c32=['exports','define','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./whatsappApplication.attributes'];(function(_0x1911ed,_0x4e8c73){var _0x11edaa=function(_0x216008){while(--_0x216008){_0x1911ed['push'](_0x1911ed['shift']());}};_0x11edaa(++_0x4e8c73);}(_0x6c32,0x6e));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x26c3('0x0'));var util=require(_0x26c3('0x1'));var logger=require(_0x26c3('0x2'))(_0x26c3('0x3'));var moment=require(_0x26c3('0x4'));var BPromise=require(_0x26c3('0x5'));var rp=require(_0x26c3('0x6'));var fs=require('fs');var path=require(_0x26c3('0x7'));var rimraf=require(_0x26c3('0x8'));var config=require('../../config/environment');var attributes=require(_0x26c3('0x9'));module[_0x26c3('0xa')]=function(_0x15ac36,_0x57d915){return _0x15ac36[_0x26c3('0xb')]('WhatsappApplication',attributes,{'tableName':_0x26c3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x26c3('0xd'),'collate':_0x26c3('0xe')});};
\ No newline at end of file
index aee3750..86ac6d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x58a1c9,_0x16b9e8){var _0x3d3eb7=function(_0x41caca){while(--_0x41caca){_0x58a1c9['push'](_0x58a1c9['shift']());}};_0x3d3eb7(++_0x16b9e8);}(_0x54ef,0x112));var _0xf54e=function(_0x1b7ba3,_0x42e87e){_0x1b7ba3=_0x1b7ba3-0x0;var _0x46e666=_0x54ef[_0x1b7ba3];return _0x46e666;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x99cf9,_0x2464ae,_0x561870){return new BPromise(function(_0x27e69b,_0x57a1ce){return client[_0xf54e('0xb')](_0x99cf9,_0x561870)[_0xf54e('0xc')](function(_0x47c5e1){logger[_0xf54e('0xd')](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));logger[_0xf54e('0x10')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x2464ae,_0xf54e('0xf'),JSON[_0xf54e('0x11')](_0x47c5e1));if(_0x47c5e1[_0xf54e('0x12')]){if(_0x47c5e1[_0xf54e('0x12')]['code']===0x1f4){logger[_0xf54e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x2464ae,_0x47c5e1['error'][_0xf54e('0x13')]);return _0x57a1ce(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}logger[_0xf54e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x2464ae,_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);return _0x27e69b(_0x47c5e1[_0xf54e('0x12')][_0xf54e('0x13')]);}else{logger['info'](_0xf54e('0xe'),_0x2464ae,_0xf54e('0xf'));_0x27e69b(_0x47c5e1[_0xf54e('0x14')]['message']);}})['catch'](function(_0xd87020){logger[_0xf54e('0x12')](_0xf54e('0xe'),_0x2464ae,_0xd87020);_0x57a1ce(_0xd87020);});});}
\ No newline at end of file
+var _0xa8a8=['stringify','error','code','WhatsappApplication,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug'];(function(_0x46dea1,_0x44ba57){var _0x2f0b12=function(_0x308720){while(--_0x308720){_0x46dea1['push'](_0x46dea1['shift']());}};_0x2f0b12(++_0x44ba57);}(_0xa8a8,0xec));var _0x8a8a=function(_0x16f8e7,_0x41b2ee){_0x16f8e7=_0x16f8e7-0x0;var _0x496675=_0xa8a8[_0x16f8e7];return _0x496675;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var moment=require(_0x8a8a('0x2'));var BPromise=require(_0x8a8a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a8a('0x4'));var db=require(_0x8a8a('0x5'))['db'];var utils=require(_0x8a8a('0x6'));var logger=require(_0x8a8a('0x7'))(_0x8a8a('0x8'));var config=require(_0x8a8a('0x9'));var jayson=require(_0x8a8a('0xa'));var client=jayson[_0x8a8a('0xb')][_0x8a8a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x315fe9,_0x1d7121,_0x8e7aa0){return new BPromise(function(_0x4225b9,_0xecaa6f){return client[_0x8a8a('0xd')](_0x315fe9,_0x8e7aa0)['then'](function(_0x576ef9){logger[_0x8a8a('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));logger[_0x8a8a('0x10')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'),JSON[_0x8a8a('0x11')](_0x576ef9));if(_0x576ef9[_0x8a8a('0x12')]){if(_0x576ef9['error'][_0x8a8a('0x13')]===0x1f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')]['message']);return _0xecaa6f(_0x576ef9[_0x8a8a('0x12')]['message']);}logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);return _0x4225b9(_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);}else{logger[_0x8a8a('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));_0x4225b9(_0x576ef9['result'][_0x8a8a('0x15')]);}})[_0x8a8a('0x16')](function(_0x46a4f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x46a4f4);_0xecaa6f(_0x46a4f4);});});}
\ No newline at end of file
index 87faca7..9dbca8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['get','index','/:id','isAuthenticated','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x41d319,_0x43b8fc){var _0x466f55=function(_0x20fbab){while(--_0x20fbab){_0x41d319['push'](_0x41d319['shift']());}};_0x466f55(++_0x43b8fc);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x3cb8b1,_0x2508b7){_0x3cb8b1=_0x3cb8b1-0x0;var _0x3edfe7=_0x3c6c[_0x3cb8b1];return _0x3edfe7;};'use strict';var multer=require(_0xc3c6('0x0'));var util=require('util');var path=require(_0xc3c6('0x1'));var timeout=require(_0xc3c6('0x2'));var express=require(_0xc3c6('0x3'));var router=express[_0xc3c6('0x4')]();var fs_extra=require(_0xc3c6('0x5'));var auth=require(_0xc3c6('0x6'));var interaction=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var controller=require('./whatsappInteraction.controller');router[_0xc3c6('0x9')]('/',auth['isAuthenticated'](),controller[_0xc3c6('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0xc3c6('0xb'),auth[_0xc3c6('0xc')](),controller['show']);router[_0xc3c6('0x9')](_0xc3c6('0xd'),auth[_0xc3c6('0xc')](),controller[_0xc3c6('0xe')]);router['get'](_0xc3c6('0xf'),auth[_0xc3c6('0xc')](),controller[_0xc3c6('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc3c6('0x11')]);router[_0xc3c6('0x12')](_0xc3c6('0xd'),auth[_0xc3c6('0xc')](),controller[_0xc3c6('0x13')]);router[_0xc3c6('0x12')](_0xc3c6('0x14'),auth[_0xc3c6('0xc')](),interaction[_0xc3c6('0x15')](_0xc3c6('0x16'),_0xc3c6('0x17')),controller[_0xc3c6('0x18')]);router[_0xc3c6('0x19')](_0xc3c6('0xb'),auth[_0xc3c6('0xc')](),interaction[_0xc3c6('0x15')](_0xc3c6('0x16'),_0xc3c6('0x1a')),controller[_0xc3c6('0x1b')]);router[_0xc3c6('0x1c')](_0xc3c6('0xb'),auth[_0xc3c6('0xc')](),interaction[_0xc3c6('0x15')](_0xc3c6('0x16'),_0xc3c6('0x1d')),controller[_0xc3c6('0x1e')]);router['delete'](_0xc3c6('0x14'),auth[_0xc3c6('0xc')](),controller[_0xc3c6('0x1f')]);module[_0xc3c6('0x20')]=router;
\ No newline at end of file
+var _0x029b=['connect-timeout','express','fs-extra','../../components/auth/service','./whatsappInteraction.controller','get','isAuthenticated','index','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','put','/:id','whatsappinteraction:update','update','delete','destroy','exports','multer','util'];(function(_0x3c2666,_0x15fd23){var _0x10c814=function(_0x4660c0){while(--_0x4660c0){_0x3c2666['push'](_0x3c2666['shift']());}};_0x10c814(++_0x15fd23);}(_0x029b,0x66));var _0xb029=function(_0xd0b3d9,_0xf1c014){_0xd0b3d9=_0xd0b3d9-0x0;var _0x4c924f=_0x029b[_0xd0b3d9];return _0x4c924f;};'use strict';var multer=require(_0xb029('0x0'));var util=require(_0xb029('0x1'));var path=require('path');var timeout=require(_0xb029('0x2'));var express=require(_0xb029('0x3'));var router=express['Router']();var fs_extra=require(_0xb029('0x4'));var auth=require(_0xb029('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb029('0x6'));router[_0xb029('0x7')]('/',auth[_0xb029('0x8')](),controller[_0xb029('0x9')]);router[_0xb029('0x7')]('/describe',auth[_0xb029('0x8')](),controller['describe']);router[_0xb029('0x7')]('/:id',auth[_0xb029('0x8')](),controller['show']);router[_0xb029('0x7')]('/:id/messages',auth[_0xb029('0x8')](),controller[_0xb029('0xa')]);router['get'](_0xb029('0xb'),auth[_0xb029('0x8')](),controller[_0xb029('0xc')]);router[_0xb029('0xd')]('/',auth[_0xb029('0x8')](),controller['create']);router[_0xb029('0xd')]('/:id/messages',auth[_0xb029('0x8')](),controller[_0xb029('0xe')]);router[_0xb029('0xd')](_0xb029('0xf'),auth['isAuthenticated'](),interaction[_0xb029('0x10')](_0xb029('0x11'),_0xb029('0x12')),controller['addTags']);router[_0xb029('0x13')](_0xb029('0x14'),auth[_0xb029('0x8')](),interaction[_0xb029('0x10')](_0xb029('0x11'),_0xb029('0x15')),controller[_0xb029('0x16')]);router[_0xb029('0x17')](_0xb029('0x14'),auth['isAuthenticated'](),interaction['tracked'](_0xb029('0x11'),'whatsappinteraction:destroy'),controller[_0xb029('0x18')]);router[_0xb029('0x17')](_0xb029('0xf'),auth['isAuthenticated'](),controller['removeTags']);module[_0xb029('0x19')]=router;
\ No newline at end of file
index 90e26a2..90478cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['STRING','ENUM','out','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2e65,0x193));var _0x52e6=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x2e65[_0x1ccdf7];return _0x52a0ae;};'use strict';var Sequelize=require(_0x52e6('0x0'));var moment=require(_0x52e6('0x1'));module[_0x52e6('0x2')]={'closed':{'type':Sequelize[_0x52e6('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x52e6('0x4')]},'disposition':{'type':Sequelize[_0x52e6('0x5')]},'secondDisposition':{'type':Sequelize[_0x52e6('0x5')]},'thirdDisposition':{'type':Sequelize[_0x52e6('0x5')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x52e6('0x5')]},'read1stAt':{'type':Sequelize[_0x52e6('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x52e6('0x6')]('in',_0x52e6('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x52e6('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x52e6('0x6')]('in',_0x52e6('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x52e6('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3561=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0xd6d64a,_0x356d0a){var _0x34e6ab=function(_0x10b755){while(--_0x10b755){_0xd6d64a['push'](_0xd6d64a['shift']());}};_0x34e6ab(++_0x356d0a);}(_0x3561,0x94));var _0x1356=function(_0x45c523,_0x4b1166){_0x45c523=_0x45c523-0x0;var _0x1c9bde=_0x3561[_0x45c523];return _0x1c9bde;};'use strict';var Sequelize=require(_0x1356('0x0'));var moment=require('moment');module[_0x1356('0x1')]={'closed':{'type':Sequelize[_0x1356('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1356('0x3')]},'disposition':{'type':Sequelize[_0x1356('0x4')]},'secondDisposition':{'type':Sequelize[_0x1356('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1356('0x4')]},'note':{'type':Sequelize[_0x1356('0x4')]},'phone':{'type':Sequelize[_0x1356('0x4')]},'read1stAt':{'type':Sequelize[_0x1356('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x1356('0x5')]('in',_0x1356('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1356('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x1356('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1356('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 83adc89..2fedd91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0c=['name','index','map','WhatsappInteraction','type','key','getOptions','findAll','whatsapp','query','user','catch','show','model','keys','rawAttributes','filters','intersection','fields','attributes','includeAll','include','options','find','body','update','params','describe','addMessage','ids','findOne','WhatsappMessage','length','hasOwnProperty','order','sort','where','pick','WhatsappInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','omit','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','toString','join','server','files','tmp','root','attachments','User','fullname','push','CmContact','firstName','lastName','Attachment','Messages','createdAt','secret','Owner','mkdirSync','Whatsapp','Account','N.A.','closed','closedAt','disposition','basename','existsSync','pipe','createWriteStream','direction','out','Contact','read','value','renderFile','views','downloadInteraction.ejs','.pdf','log','err','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','defaults','localhost','register','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','sendStatus','error'];(function(_0x4c4f97,_0x1b17f6){var _0x3f193b=function(_0x1a19ea){while(--_0x1a19ea){_0x4c4f97['push'](_0x4c4f97['shift']());}};_0x3f193b(++_0x1b17f6);}(_0x1a0c,0x15e));var _0xc1a0=function(_0x519c88,_0xb84103){_0x519c88=_0x519c88-0x0;var _0x4668d7=_0x1a0c[_0x519c88];return _0x4668d7;};'use strict';var rimraf=require(_0xc1a0('0x0'));var zipdir=require(_0xc1a0('0x1'));var moment=require(_0xc1a0('0x2'));var BPromise=require(_0xc1a0('0x3'));var util=require(_0xc1a0('0x4'));var path=require(_0xc1a0('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc1a0('0x6'));var Redis=require(_0xc1a0('0x7'));var interaction=require(_0xc1a0('0x8'));var qs=require(_0xc1a0('0x9'));var pdf=require(_0xc1a0('0xa'));var logger=require(_0xc1a0('0xb'))(_0xc1a0('0xc'));var config=require(_0xc1a0('0xd'));var db=require('../../mysqldb')['db'];config[_0xc1a0('0xe')]=_[_0xc1a0('0xf')](config[_0xc1a0('0xe')],{'host':_0xc1a0('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc1a0('0xe')]));require('./whatsappInteraction.socket')[_0xc1a0('0x11')](socket);function respondWithStatusCode(_0x35dacc,_0x51359d){_0x51359d=_0x51359d||0xcc;return function(_0x222d09){if(_0x222d09){return _0x35dacc['sendStatus'](_0x51359d);}return _0x35dacc[_0xc1a0('0x12')](_0x51359d)[_0xc1a0('0x13')]();};}function respondWithResult(_0x1e514c,_0x1b2bbd){_0x1b2bbd=_0x1b2bbd||0xc8;return function(_0x1ea7e5){if(_0x1ea7e5){return _0x1e514c[_0xc1a0('0x12')](_0x1b2bbd)[_0xc1a0('0x14')](_0x1ea7e5);}};}function respondWithFilteredResult(_0x43a568,_0x1b01b3){return function(_0x4eb6b2){if(_0x4eb6b2){var _0x2d36e2=typeof _0x1b01b3[_0xc1a0('0x15')]===_0xc1a0('0x16')&&typeof _0x1b01b3['limit']==='undefined';var _0x949998=_0x4eb6b2[_0xc1a0('0x17')];var _0x48ef12=_0x2d36e2?0x0:_0x1b01b3[_0xc1a0('0x15')];var _0x1e7e83=_0x2d36e2?_0x4eb6b2[_0xc1a0('0x17')]:_0x1b01b3[_0xc1a0('0x15')]+_0x1b01b3[_0xc1a0('0x18')];var _0xf8e978;if(_0x1e7e83>=_0x949998){_0x1e7e83=_0x949998;_0xf8e978=0xc8;}else{_0xf8e978=0xce;}_0x43a568[_0xc1a0('0x12')](_0xf8e978);return _0x43a568[_0xc1a0('0x19')](_0xc1a0('0x1a'),_0x48ef12+'-'+_0x1e7e83+'/'+_0x949998)[_0xc1a0('0x14')](_0x4eb6b2);}return null;};}function saveUpdates(_0x34e6d2){return function(_0x53b534){if(_0x53b534){return _0x53b534['update'](_0x34e6d2)[_0xc1a0('0x1b')](function(_0x383d66){return _0x383d66;});}return null;};}function removeEntity(_0x20b12e){return function(_0x373a11){if(_0x373a11){return _0x373a11[_0xc1a0('0x1c')]()['then'](function(){_0x20b12e[_0xc1a0('0x12')](0xcc)[_0xc1a0('0x13')]();});}};}function handleEntityNotFound(_0x4b8f2c){return function(_0x47e300){if(!_0x47e300){_0x4b8f2c[_0xc1a0('0x1d')](0x194);}return _0x47e300;};}function handleError(_0x3217db,_0x5d50ae){_0x5d50ae=_0x5d50ae||0x1f4;return function(_0x3a36fb){logger[_0xc1a0('0x1e')](_0x3a36fb['stack']);if(_0x3a36fb[_0xc1a0('0x1f')]){delete _0x3a36fb['name'];}_0x3217db[_0xc1a0('0x12')](_0x5d50ae)['send'](_0x3a36fb);};}exports[_0xc1a0('0x20')]=function(_0x76d122,_0x20dd8f){var _0x175a19={};var _0x2b4ada=_[_0xc1a0('0x21')](db[_0xc1a0('0x22')]['rawAttributes'],function(_0xef922c){return{'name':_0xef922c['fieldName'],'type':_0xef922c[_0xc1a0('0x23')][_0xc1a0('0x24')]};});_0x175a19=qs[_0xc1a0('0x25')](_0x2b4ada,_0x76d122);return interaction[_0xc1a0('0x26')](_0xc1a0('0x27'),_0x76d122[_0xc1a0('0x28')],_0x76d122[_0xc1a0('0x29')],_0x175a19,_0x2b4ada)[_0xc1a0('0x1b')](respondWithFilteredResult(_0x20dd8f,_0x175a19))[_0xc1a0('0x2a')](handleError(_0x20dd8f,null));};exports[_0xc1a0('0x2b')]=function(_0x537e8e,_0x1d47d6){var _0x1330fc={'raw':![],'where':{'id':_0x537e8e['params']['id']}},_0x43f5e9={};_0x43f5e9[_0xc1a0('0x2c')]=_[_0xc1a0('0x2d')](db[_0xc1a0('0x22')][_0xc1a0('0x2e')]);_0x43f5e9[_0xc1a0('0x28')]=_['keys'](_0x537e8e[_0xc1a0('0x28')]);_0x43f5e9[_0xc1a0('0x2f')]=_['intersection'](_0x43f5e9[_0xc1a0('0x2c')],_0x43f5e9[_0xc1a0('0x28')]);_0x1330fc['attributes']=_[_0xc1a0('0x30')](_0x43f5e9[_0xc1a0('0x2c')],qs['fields'](_0x537e8e['query'][_0xc1a0('0x31')]));_0x1330fc[_0xc1a0('0x32')]=_0x1330fc[_0xc1a0('0x32')]['length']?_0x1330fc['attributes']:_0x43f5e9[_0xc1a0('0x2c')];if(_0x537e8e['query'][_0xc1a0('0x33')]){_0x1330fc[_0xc1a0('0x34')]=[{'all':!![]}];}_0x1330fc=_['merge']({},_0x1330fc,_0x537e8e[_0xc1a0('0x35')]);return db['WhatsappInteraction'][_0xc1a0('0x36')](_0x1330fc)[_0xc1a0('0x1b')](handleEntityNotFound(_0x1d47d6,null))[_0xc1a0('0x1b')](respondWithResult(_0x1d47d6,null))[_0xc1a0('0x2a')](handleError(_0x1d47d6,null));};exports['create']=function(_0x146295,_0x377f30){return db[_0xc1a0('0x22')]['create'](_0x146295[_0xc1a0('0x37')],{})[_0xc1a0('0x1b')](respondWithResult(_0x377f30,0xc9))[_0xc1a0('0x2a')](handleError(_0x377f30,null));};exports[_0xc1a0('0x38')]=function(_0x1f7c17,_0x160c63){if(_0x1f7c17[_0xc1a0('0x37')]['id']){delete _0x1f7c17['body']['id'];}return db[_0xc1a0('0x22')]['find']({'where':{'id':_0x1f7c17['params']['id']}})[_0xc1a0('0x1b')](handleEntityNotFound(_0x160c63,null))[_0xc1a0('0x1b')](saveUpdates(_0x1f7c17[_0xc1a0('0x37')],null))[_0xc1a0('0x1b')](respondWithResult(_0x160c63,null))['catch'](handleError(_0x160c63,null));};exports[_0xc1a0('0x1c')]=function(_0x3c3fd2,_0x5fcc11){return db[_0xc1a0('0x22')][_0xc1a0('0x36')]({'where':{'id':_0x3c3fd2[_0xc1a0('0x39')]['id']}})[_0xc1a0('0x1b')](handleEntityNotFound(_0x5fcc11,null))['then'](removeEntity(_0x5fcc11,null))[_0xc1a0('0x2a')](handleError(_0x5fcc11,null));};exports[_0xc1a0('0x3a')]=function(_0x2a9321,_0x62f66c){return db[_0xc1a0('0x22')][_0xc1a0('0x3a')]()[_0xc1a0('0x1b')](respondWithResult(_0x62f66c,null))[_0xc1a0('0x2a')](handleError(_0x62f66c,null));};exports[_0xc1a0('0x3b')]=function(_0x36a536,_0x5d38c3){return db['WhatsappMessage'][_0xc1a0('0x36')]({'where':{'id':_0x36a536[_0xc1a0('0x39')]['id']}})['then'](handleEntityNotFound(_0x5d38c3,null))[_0xc1a0('0x1b')](function(_0x141b06){if(_0x141b06){return _0x141b06[_0xc1a0('0x3b')](_0x36a536['body'][_0xc1a0('0x3c')],_['omit'](_0x36a536[_0xc1a0('0x37')],[_0xc1a0('0x3c'),'id'])||{});}})[_0xc1a0('0x1b')](respondWithResult(_0x5d38c3,null))[_0xc1a0('0x2a')](handleError(_0x5d38c3,null));};exports['getMessages']=function(_0x151384,_0x4e7671){var _0x4a1fd5={'raw':![],'where':{}};var _0x22a537={};var _0x2665ea={'count':0x0,'rows':[]};return db[_0xc1a0('0x22')][_0xc1a0('0x3d')]({'where':{'id':_0x151384[_0xc1a0('0x39')]['id']}})['then'](handleEntityNotFound(_0x4e7671,null))['then'](function(_0x3afcef){if(_0x3afcef){_0x22a537['model']=_[_0xc1a0('0x2d')](db[_0xc1a0('0x3e')][_0xc1a0('0x2e')]);_0x22a537['query']=_[_0xc1a0('0x2d')](_0x151384[_0xc1a0('0x28')]);_0x22a537['filters']=_[_0xc1a0('0x30')](_0x22a537[_0xc1a0('0x2c')],_0x22a537[_0xc1a0('0x28')]);_0x4a1fd5['attributes']=_[_0xc1a0('0x30')](_0x22a537[_0xc1a0('0x2c')],qs[_0xc1a0('0x31')](_0x151384[_0xc1a0('0x28')][_0xc1a0('0x31')]));_0x4a1fd5[_0xc1a0('0x32')]=_0x4a1fd5[_0xc1a0('0x32')][_0xc1a0('0x3f')]?_0x4a1fd5[_0xc1a0('0x32')]:_0x22a537['model'];if(!_0x151384[_0xc1a0('0x28')][_0xc1a0('0x40')]('nolimit')){_0x4a1fd5[_0xc1a0('0x18')]=qs[_0xc1a0('0x18')](_0x151384[_0xc1a0('0x28')][_0xc1a0('0x18')]);_0x4a1fd5['offset']=qs[_0xc1a0('0x15')](_0x151384['query'][_0xc1a0('0x15')]);}_0x4a1fd5[_0xc1a0('0x41')]=qs[_0xc1a0('0x42')](_0x151384[_0xc1a0('0x28')][_0xc1a0('0x42')]);_0x4a1fd5[_0xc1a0('0x43')]=qs[_0xc1a0('0x2f')](_[_0xc1a0('0x44')](_0x151384[_0xc1a0('0x28')],_0x22a537[_0xc1a0('0x2f')]));_0x4a1fd5['where'][_0xc1a0('0x45')]=_0x3afcef['id'];if(_0x151384[_0xc1a0('0x28')][_0xc1a0('0x46')]){_0x4a1fd5[_0xc1a0('0x43')]=_[_0xc1a0('0x47')](_0x4a1fd5[_0xc1a0('0x43')],{'$or':_[_0xc1a0('0x21')](_0x4a1fd5[_0xc1a0('0x32')],function(_0x9f86f1){var _0x281a05={};_0x281a05[_0x9f86f1]={'$like':'%'+_0x151384[_0xc1a0('0x28')]['filter']+'%'};return _0x281a05;})});}if(_0x151384[_0xc1a0('0x28')][_0xc1a0('0x48')]){var _0x304937=_0x151384[_0xc1a0('0x28')][_0xc1a0('0x48')][_0xc1a0('0x49')](',');var _0x539f10={};_0x539f10[_0x304937[0x0]]={'$gte':moment(_0x304937[0x1])[_0xc1a0('0x4a')](_0xc1a0('0x4b'))};_0x4a1fd5['where']=_[_0xc1a0('0x47')](_0x4a1fd5[_0xc1a0('0x43')],_0x539f10);}_0x4a1fd5=_[_0xc1a0('0x47')]({},_0x4a1fd5,_0x151384[_0xc1a0('0x35')]);return db[_0xc1a0('0x3e')][_0xc1a0('0x17')]({'where':_0x4a1fd5[_0xc1a0('0x43')]})[_0xc1a0('0x1b')](function(_0x58de5c){_0x2665ea[_0xc1a0('0x17')]=_0x58de5c;if(_0x151384['query'][_0xc1a0('0x33')]){_0x4a1fd5[_0xc1a0('0x34')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xc1a0('0x26')](_0x4a1fd5);})[_0xc1a0('0x1b')](function(_0x5f0c58){_0x2665ea[_0xc1a0('0x4c')]=_0x5f0c58;return _0x2665ea;});}})[_0xc1a0('0x1b')](respondWithFilteredResult(_0x4e7671,_0x4a1fd5))[_0xc1a0('0x2a')](handleError(_0x4e7671,null));};exports[_0xc1a0('0x4d')]=function(_0x25be49,_0x164315){return db[_0xc1a0('0x22')][_0xc1a0('0x36')]({'where':{'id':_0x25be49[_0xc1a0('0x39')]['id']}})[_0xc1a0('0x1b')](handleEntityNotFound(_0x164315,null))[_0xc1a0('0x1b')](function(_0x5e2ebe){if(_0x5e2ebe){return _0x5e2ebe[_0xc1a0('0x4e')](_0x25be49[_0xc1a0('0x37')]['ids'],_[_0xc1a0('0x4f')](_0x25be49['body'],[_0xc1a0('0x3c'),'id'])||{})[_0xc1a0('0x50')](function(){return db[_0xc1a0('0x51')][_0xc1a0('0x26')]({'attributes':['id','name',_0xc1a0('0x52')],'where':{'id':_0x25be49['body'][_0xc1a0('0x3c')]}});})[_0xc1a0('0x1b')](function(_0x295510){socket[_0xc1a0('0x53')](_0xc1a0('0x54'),{'id':Number(_0x25be49[_0xc1a0('0x39')]['id']),'tags':_0x295510||[]});return{'id':Number(_0x25be49[_0xc1a0('0x39')]['id']),'tags':_0x295510||[]};});}})[_0xc1a0('0x1b')](respondWithResult(_0x164315,null))[_0xc1a0('0x2a')](handleError(_0x164315,null));};exports[_0xc1a0('0x55')]=function(_0xb58f5b,_0x2609ea){return db['WhatsappInteraction'][_0xc1a0('0x36')]({'where':{'id':_0xb58f5b[_0xc1a0('0x39')]['id']}})[_0xc1a0('0x1b')](handleEntityNotFound(_0x2609ea,null))[_0xc1a0('0x1b')](function(_0x1e8d6f){if(_0x1e8d6f){return _0x1e8d6f[_0xc1a0('0x55')](_0xb58f5b['query'][_0xc1a0('0x3c')]);}})[_0xc1a0('0x1b')](respondWithStatusCode(_0x2609ea,null))[_0xc1a0('0x2a')](handleError(_0x2609ea,null));};exports[_0xc1a0('0x56')]=function(_0x5e1989,_0x51cfd8){var _0x48d81f=moment()['unix']()[_0xc1a0('0x57')]();var _0x4a2122=path[_0xc1a0('0x58')](config['root'],_0xc1a0('0x59'),_0xc1a0('0x5a'),_0xc1a0('0x5b'));var _0x2e1625=path[_0xc1a0('0x58')](config[_0xc1a0('0x5c')],_0xc1a0('0x59'),_0xc1a0('0x5a'),_0xc1a0('0x5d'));var _0x45b9b9=path[_0xc1a0('0x58')](_0x4a2122,_0x48d81f);var _0x4a405f=util[_0xc1a0('0x4a')]('transcript-%d-%s.zip',_0x5e1989['params']['id'],_0x48d81f);var _0x25bebe=path[_0xc1a0('0x58')](_0x4a2122,_0x4a405f);var _0x221d4a=[];_0x221d4a['push']({'model':db[_0xc1a0('0x5e')],'as':_0xc1a0('0x5e'),'attributes':['id',_0xc1a0('0x5f')],'raw':!![]});_0x221d4a[_0xc1a0('0x60')]({'model':db[_0xc1a0('0x61')],'as':'Contact','attributes':['id',_0xc1a0('0x62'),_0xc1a0('0x63')],'raw':!![]});if(_0x5e1989[_0xc1a0('0x28')][_0xc1a0('0x5d')]){_0x221d4a[_0xc1a0('0x60')]({'model':db['Attachment'],'as':_0xc1a0('0x64'),'raw':!![]});}var _0x21d1d8=[{'model':db[_0xc1a0('0x3e')],'as':_0xc1a0('0x65'),'attributes':['id',_0xc1a0('0x37'),_0xc1a0('0x66'),'direction',_0xc1a0('0x67'),'read'],'include':_0x221d4a}];_0x21d1d8[_0xc1a0('0x60')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0xc1a0('0x1f')]});_0x21d1d8[_0xc1a0('0x60')]({'model':db['User'],'as':_0xc1a0('0x68'),'attributes':['id',_0xc1a0('0x5f')]});return db[_0xc1a0('0x22')][_0xc1a0('0x36')]({'where':{'id':_0x5e1989[_0xc1a0('0x39')]['id']},'include':_0x21d1d8})[_0xc1a0('0x1b')](handleEntityNotFound(_0x51cfd8,null))['then'](function(_0x277976){if(_0x277976){var _0x50493c=_0x277976['get']({'plain':!![]});fs[_0xc1a0('0x69')](_0x45b9b9);var _0x50e4c7={'channel':_0xc1a0('0x6a'),'account':_0x50493c[_0xc1a0('0x6b')][_0xc1a0('0x1f')],'agent':_0x50493c[_0xc1a0('0x68')]?_0x50493c[_0xc1a0('0x68')][_0xc1a0('0x5f')]:_0xc1a0('0x6c'),'createdAt':moment(_0x50493c[_0xc1a0('0x66')])[_0xc1a0('0x4a')](_0xc1a0('0x4b'))[_0xc1a0('0x57')](),'closedAt':_0x50493c[_0xc1a0('0x6d')]?moment(_0x50493c[_0xc1a0('0x6e')])[_0xc1a0('0x4a')](_0xc1a0('0x4b'))['toString']():'','disposition':_0x50493c[_0xc1a0('0x6f')],'messages':_(_0x50493c[_0xc1a0('0x65')])[_0xc1a0('0x46')]({'secret':![]})[_0xc1a0('0x21')](function(_0x3c5e24){if(_0x3c5e24['Attachment']){var _0x2d0b26=path[_0xc1a0('0x58')](_0x2e1625,_0x3c5e24['Attachment'][_0xc1a0('0x70')]);if(fs[_0xc1a0('0x71')](_0x2d0b26)){fs['createReadStream'](_0x2d0b26)[_0xc1a0('0x72')](fs[_0xc1a0('0x73')](path['join'](_0x45b9b9,_0x3c5e24['Attachment'][_0xc1a0('0x70')])));}}return{'date':moment(_0x3c5e24['createdAt'])[_0xc1a0('0x4a')](_0xc1a0('0x4b'))[_0xc1a0('0x57')](),'sender':_0x3c5e24[_0xc1a0('0x74')]===_0xc1a0('0x75')?_0x3c5e24['User']?_0x3c5e24[_0xc1a0('0x5e')][_0xc1a0('0x5f')]:'System':_0x3c5e24[_0xc1a0('0x76')][_0xc1a0('0x62')]+(_0x3c5e24['Contact'][_0xc1a0('0x63')]?'\x20'+_0x3c5e24[_0xc1a0('0x76')]['lastName']:''),'body':_0x3c5e24[_0xc1a0('0x64')]?_0x3c5e24[_0xc1a0('0x64')][_0xc1a0('0x70')]:_0x3c5e24[_0xc1a0('0x37')],'direction':_0x3c5e24[_0xc1a0('0x74')]===_0xc1a0('0x75')?'A':'C','secret':_0x3c5e24[_0xc1a0('0x67')],'read':_0x3c5e24[_0xc1a0('0x77')],'attachment':_0x3c5e24['Attachment']};})[_0xc1a0('0x78')]()};return ejs[_0xc1a0('0x79')](path[_0xc1a0('0x58')](config[_0xc1a0('0x5c')],_0xc1a0('0x59'),_0xc1a0('0x7a'),_0xc1a0('0x7b')),{'interaction':_0x50e4c7})[_0xc1a0('0x1b')](function(_0x2241fc){var _0x152647=path[_0xc1a0('0x58')](_0x45b9b9,'transcript-'+_0x50493c['id']+'-'+_0x48d81f+_0xc1a0('0x7c'));var _0xd024c4={'path':_0x152647,'channel':_0xc1a0('0x6a'),'interactionId':_0x50493c['id']};return pdf['createPdfFromHTML'](_0x2241fc,_0xd024c4);})[_0xc1a0('0x1b')](function(){return new BPromise(function(_0x14e428,_0x211ca2){zipdir(_0x45b9b9,{'saveTo':_0x25bebe},function(_0x5b574c,_0x31df6e){if(_0x5b574c)return _0x211ca2(_0x5b574c);return _0x14e428(_0x31df6e);});})[_0xc1a0('0x1b')](function(){return new BPromise(function(_0x2fb038,_0x16cc5c){rimraf(_0x45b9b9,function(_0x1bbf51){if(_0x1bbf51)_0x16cc5c(_0x1bbf51);return _0x2fb038();});});})['then'](function(){return _0x51cfd8[_0xc1a0('0x56')](_0x25bebe,_0x4a405f,function(_0x5f4c2c){if(_0x5f4c2c){console[_0xc1a0('0x7d')](_0xc1a0('0x7e'),_0x5f4c2c);}else{fs['unlinkSync'](_0x25bebe);}});});});}else{return _0x51cfd8[_0xc1a0('0x1d')](0xc8);}})['catch'](handleError(_0x51cfd8,null));};
\ No newline at end of file
+var _0x1878=['register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','query','user','show','keys','WhatsappInteraction','filters','model','attributes','intersection','length','includeAll','merge','options','find','catch','body','params','describe','addMessage','WhatsappMessage','ids','omit','findOne','fields','hasOwnProperty','nolimit','order','sort','where','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','spread','Tag','whatsappInteractionTags:save','removeTags','download','toString','join','root','server','tmp','files','transcript-%d-%s.zip','push','fullname','CmContact','firstName','lastName','attachments','Attachment','Messages','direction','read','Account','User','Owner','N.A.','createdAt','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','Contact','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','moment','bluebird','util','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket'];(function(_0x11d966,_0x166660){var _0x32f6f1=function(_0x2486aa){while(--_0x2486aa){_0x11d966['push'](_0x11d966['shift']());}};_0x32f6f1(++_0x166660);}(_0x1878,0x1e5));var _0x8187=function(_0x5185bb,_0x4d99eb){_0x5185bb=_0x5185bb-0x0;var _0x2de647=_0x1878[_0x5185bb];return _0x2de647;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0x8187('0x0'));var BPromise=require(_0x8187('0x1'));var util=require(_0x8187('0x2'));var path=require('path');var ejs=require(_0x8187('0x3'));var fs=require('fs');var _=require(_0x8187('0x4'));var Redis=require(_0x8187('0x5'));var interaction=require(_0x8187('0x6'));var qs=require(_0x8187('0x7'));var pdf=require('../../components/export/pdf');var logger=require(_0x8187('0x8'))(_0x8187('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x8187('0xa')]=_[_0x8187('0xb')](config[_0x8187('0xa')],{'host':_0x8187('0xc'),'port':0x18eb});var socket=require(_0x8187('0xd'))(new Redis(config[_0x8187('0xa')]));require(_0x8187('0xe'))[_0x8187('0xf')](socket);function respondWithStatusCode(_0x27b7a7,_0x62b66e){_0x62b66e=_0x62b66e||0xcc;return function(_0x54ad73){if(_0x54ad73){return _0x27b7a7[_0x8187('0x10')](_0x62b66e);}return _0x27b7a7['status'](_0x62b66e)['end']();};}function respondWithResult(_0x495345,_0x40b9e8){_0x40b9e8=_0x40b9e8||0xc8;return function(_0x20277a){if(_0x20277a){return _0x495345[_0x8187('0x11')](_0x40b9e8)[_0x8187('0x12')](_0x20277a);}};}function respondWithFilteredResult(_0x12dbec,_0x73317){return function(_0x5a1a94){if(_0x5a1a94){var _0x4ad39c=typeof _0x73317[_0x8187('0x13')]===_0x8187('0x14')&&typeof _0x73317[_0x8187('0x15')]===_0x8187('0x14');var _0xcb4fe=_0x5a1a94[_0x8187('0x16')];var _0x4188c7=_0x4ad39c?0x0:_0x73317['offset'];var _0x5aadc5=_0x4ad39c?_0x5a1a94[_0x8187('0x16')]:_0x73317[_0x8187('0x13')]+_0x73317[_0x8187('0x15')];var _0x513eff;if(_0x5aadc5>=_0xcb4fe){_0x5aadc5=_0xcb4fe;_0x513eff=0xc8;}else{_0x513eff=0xce;}_0x12dbec[_0x8187('0x11')](_0x513eff);return _0x12dbec[_0x8187('0x17')](_0x8187('0x18'),_0x4188c7+'-'+_0x5aadc5+'/'+_0xcb4fe)['json'](_0x5a1a94);}return null;};}function saveUpdates(_0x21184d){return function(_0xc121d7){if(_0xc121d7){return _0xc121d7[_0x8187('0x19')](_0x21184d)[_0x8187('0x1a')](function(_0x349ceb){return _0x349ceb;});}return null;};}function removeEntity(_0x17315d){return function(_0x86043f){if(_0x86043f){return _0x86043f[_0x8187('0x1b')]()[_0x8187('0x1a')](function(){_0x17315d[_0x8187('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b6d01){return function(_0x514ef2){if(!_0x514ef2){_0x2b6d01[_0x8187('0x10')](0x194);}return _0x514ef2;};}function handleError(_0x1dd311,_0x2e6322){_0x2e6322=_0x2e6322||0x1f4;return function(_0x37ca17){logger[_0x8187('0x1c')](_0x37ca17[_0x8187('0x1d')]);if(_0x37ca17[_0x8187('0x1e')]){delete _0x37ca17[_0x8187('0x1e')];}_0x1dd311[_0x8187('0x11')](_0x2e6322)[_0x8187('0x1f')](_0x37ca17);};}exports['index']=function(_0x3a79ac,_0x206dbf){var _0x33a968={};var _0x464a3f=_['map'](db['WhatsappInteraction'][_0x8187('0x20')],function(_0xa87afa){return{'name':_0xa87afa[_0x8187('0x21')],'type':_0xa87afa[_0x8187('0x22')][_0x8187('0x23')]};});_0x33a968=qs[_0x8187('0x24')](_0x464a3f,_0x3a79ac);return interaction[_0x8187('0x25')](_0x8187('0x26'),_0x3a79ac[_0x8187('0x27')],_0x3a79ac[_0x8187('0x28')],_0x33a968,_0x464a3f)[_0x8187('0x1a')](respondWithFilteredResult(_0x206dbf,_0x33a968))['catch'](handleError(_0x206dbf,null));};exports[_0x8187('0x29')]=function(_0x19bc8a,_0xe3618){var _0x17a154={'raw':![],'where':{'id':_0x19bc8a['params']['id']}},_0xa9e869={};_0xa9e869['model']=_[_0x8187('0x2a')](db[_0x8187('0x2b')][_0x8187('0x20')]);_0xa9e869[_0x8187('0x27')]=_[_0x8187('0x2a')](_0x19bc8a[_0x8187('0x27')]);_0xa9e869[_0x8187('0x2c')]=_['intersection'](_0xa9e869[_0x8187('0x2d')],_0xa9e869[_0x8187('0x27')]);_0x17a154[_0x8187('0x2e')]=_[_0x8187('0x2f')](_0xa9e869[_0x8187('0x2d')],qs['fields'](_0x19bc8a['query']['fields']));_0x17a154['attributes']=_0x17a154[_0x8187('0x2e')][_0x8187('0x30')]?_0x17a154[_0x8187('0x2e')]:_0xa9e869[_0x8187('0x2d')];if(_0x19bc8a['query'][_0x8187('0x31')]){_0x17a154['include']=[{'all':!![]}];}_0x17a154=_[_0x8187('0x32')]({},_0x17a154,_0x19bc8a[_0x8187('0x33')]);return db[_0x8187('0x2b')][_0x8187('0x34')](_0x17a154)[_0x8187('0x1a')](handleEntityNotFound(_0xe3618,null))['then'](respondWithResult(_0xe3618,null))[_0x8187('0x35')](handleError(_0xe3618,null));};exports['create']=function(_0x270744,_0xfbcd5e){return db[_0x8187('0x2b')]['create'](_0x270744[_0x8187('0x36')],{})[_0x8187('0x1a')](respondWithResult(_0xfbcd5e,0xc9))[_0x8187('0x35')](handleError(_0xfbcd5e,null));};exports[_0x8187('0x19')]=function(_0x1b2499,_0x219b32){if(_0x1b2499['body']['id']){delete _0x1b2499[_0x8187('0x36')]['id'];}return db['WhatsappInteraction'][_0x8187('0x34')]({'where':{'id':_0x1b2499['params']['id']}})['then'](handleEntityNotFound(_0x219b32,null))[_0x8187('0x1a')](saveUpdates(_0x1b2499['body'],null))[_0x8187('0x1a')](respondWithResult(_0x219b32,null))[_0x8187('0x35')](handleError(_0x219b32,null));};exports['destroy']=function(_0x15d11f,_0x3f65ac){return db[_0x8187('0x2b')][_0x8187('0x34')]({'where':{'id':_0x15d11f[_0x8187('0x37')]['id']}})[_0x8187('0x1a')](handleEntityNotFound(_0x3f65ac,null))[_0x8187('0x1a')](removeEntity(_0x3f65ac,null))['catch'](handleError(_0x3f65ac,null));};exports[_0x8187('0x38')]=function(_0x12bd6f,_0x578679){return db['WhatsappInteraction']['describe']()[_0x8187('0x1a')](respondWithResult(_0x578679,null))[_0x8187('0x35')](handleError(_0x578679,null));};exports[_0x8187('0x39')]=function(_0x274c81,_0x1961e9){return db[_0x8187('0x3a')][_0x8187('0x34')]({'where':{'id':_0x274c81['params']['id']}})[_0x8187('0x1a')](handleEntityNotFound(_0x1961e9,null))[_0x8187('0x1a')](function(_0x47f7ee){if(_0x47f7ee){return _0x47f7ee['addMessage'](_0x274c81['body'][_0x8187('0x3b')],_[_0x8187('0x3c')](_0x274c81[_0x8187('0x36')],[_0x8187('0x3b'),'id'])||{});}})[_0x8187('0x1a')](respondWithResult(_0x1961e9,null))[_0x8187('0x35')](handleError(_0x1961e9,null));};exports['getMessages']=function(_0xb98522,_0x3adc26){var _0x49fab7={'raw':![],'where':{}};var _0x2d5655={};var _0x3ded2e={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x8187('0x3d')]({'where':{'id':_0xb98522[_0x8187('0x37')]['id']}})[_0x8187('0x1a')](handleEntityNotFound(_0x3adc26,null))['then'](function(_0x41c572){if(_0x41c572){_0x2d5655[_0x8187('0x2d')]=_[_0x8187('0x2a')](db['WhatsappMessage'][_0x8187('0x20')]);_0x2d5655['query']=_[_0x8187('0x2a')](_0xb98522['query']);_0x2d5655[_0x8187('0x2c')]=_['intersection'](_0x2d5655['model'],_0x2d5655['query']);_0x49fab7[_0x8187('0x2e')]=_[_0x8187('0x2f')](_0x2d5655['model'],qs[_0x8187('0x3e')](_0xb98522[_0x8187('0x27')][_0x8187('0x3e')]));_0x49fab7[_0x8187('0x2e')]=_0x49fab7[_0x8187('0x2e')][_0x8187('0x30')]?_0x49fab7['attributes']:_0x2d5655[_0x8187('0x2d')];if(!_0xb98522['query'][_0x8187('0x3f')](_0x8187('0x40'))){_0x49fab7[_0x8187('0x15')]=qs[_0x8187('0x15')](_0xb98522[_0x8187('0x27')][_0x8187('0x15')]);_0x49fab7[_0x8187('0x13')]=qs[_0x8187('0x13')](_0xb98522['query'][_0x8187('0x13')]);}_0x49fab7[_0x8187('0x41')]=qs[_0x8187('0x42')](_0xb98522[_0x8187('0x27')]['sort']);_0x49fab7['where']=qs['filters'](_['pick'](_0xb98522[_0x8187('0x27')],_0x2d5655[_0x8187('0x2c')]));_0x49fab7[_0x8187('0x43')][_0x8187('0x44')]=_0x41c572['id'];if(_0xb98522[_0x8187('0x27')][_0x8187('0x45')]){_0x49fab7[_0x8187('0x43')]=_[_0x8187('0x32')](_0x49fab7[_0x8187('0x43')],{'$or':_['map'](_0x49fab7['attributes'],function(_0x1d86e3){var _0x16045c={};_0x16045c[_0x1d86e3]={'$like':'%'+_0xb98522['query'][_0x8187('0x45')]+'%'};return _0x16045c;})});}if(_0xb98522[_0x8187('0x27')]['$gte']){var _0x52b837=_0xb98522[_0x8187('0x27')][_0x8187('0x46')][_0x8187('0x47')](',');var _0x365a14={};_0x365a14[_0x52b837[0x0]]={'$gte':moment(_0x52b837[0x1])[_0x8187('0x48')](_0x8187('0x49'))};_0x49fab7[_0x8187('0x43')]=_['merge'](_0x49fab7[_0x8187('0x43')],_0x365a14);}_0x49fab7=_['merge']({},_0x49fab7,_0xb98522[_0x8187('0x33')]);return db[_0x8187('0x3a')][_0x8187('0x16')]({'where':_0x49fab7[_0x8187('0x43')]})[_0x8187('0x1a')](function(_0x43b457){_0x3ded2e[_0x8187('0x16')]=_0x43b457;if(_0xb98522[_0x8187('0x27')][_0x8187('0x31')]){_0x49fab7[_0x8187('0x4a')]=[{'all':!![]}];}return db[_0x8187('0x3a')]['findAll'](_0x49fab7);})[_0x8187('0x1a')](function(_0x46c50d){_0x3ded2e[_0x8187('0x4b')]=_0x46c50d;return _0x3ded2e;});}})[_0x8187('0x1a')](respondWithFilteredResult(_0x3adc26,_0x49fab7))[_0x8187('0x35')](handleError(_0x3adc26,null));};exports[_0x8187('0x4c')]=function(_0x24fc55,_0x4663cd){return db[_0x8187('0x2b')][_0x8187('0x34')]({'where':{'id':_0x24fc55['params']['id']}})[_0x8187('0x1a')](handleEntityNotFound(_0x4663cd,null))[_0x8187('0x1a')](function(_0x3feb68){if(_0x3feb68){return _0x3feb68[_0x8187('0x4d')](_0x24fc55['body']['ids'],_[_0x8187('0x3c')](_0x24fc55[_0x8187('0x36')],[_0x8187('0x3b'),'id'])||{})[_0x8187('0x4e')](function(){return db[_0x8187('0x4f')][_0x8187('0x25')]({'attributes':['id',_0x8187('0x1e'),'color'],'where':{'id':_0x24fc55['body'][_0x8187('0x3b')]}});})[_0x8187('0x1a')](function(_0x4fb712){socket['emit'](_0x8187('0x50'),{'id':Number(_0x24fc55[_0x8187('0x37')]['id']),'tags':_0x4fb712||[]});return{'id':Number(_0x24fc55[_0x8187('0x37')]['id']),'tags':_0x4fb712||[]};});}})[_0x8187('0x1a')](respondWithResult(_0x4663cd,null))[_0x8187('0x35')](handleError(_0x4663cd,null));};exports['removeTags']=function(_0xe8585e,_0x58d634){return db[_0x8187('0x2b')][_0x8187('0x34')]({'where':{'id':_0xe8585e[_0x8187('0x37')]['id']}})['then'](handleEntityNotFound(_0x58d634,null))['then'](function(_0x36dc9b){if(_0x36dc9b){return _0x36dc9b[_0x8187('0x51')](_0xe8585e[_0x8187('0x27')][_0x8187('0x3b')]);}})['then'](respondWithStatusCode(_0x58d634,null))[_0x8187('0x35')](handleError(_0x58d634,null));};exports[_0x8187('0x52')]=function(_0x378fac,_0x4dbca0){var _0x4acb20=moment()['unix']()[_0x8187('0x53')]();var _0x1cc87c=path[_0x8187('0x54')](config[_0x8187('0x55')],_0x8187('0x56'),'files',_0x8187('0x57'));var _0x4eb390=path[_0x8187('0x54')](config[_0x8187('0x55')],_0x8187('0x56'),_0x8187('0x58'),'attachments');var _0x485b2c=path[_0x8187('0x54')](_0x1cc87c,_0x4acb20);var _0xbce032=util[_0x8187('0x48')](_0x8187('0x59'),_0x378fac[_0x8187('0x37')]['id'],_0x4acb20);var _0x4e5039=path[_0x8187('0x54')](_0x1cc87c,_0xbce032);var _0x3db943=[];_0x3db943[_0x8187('0x5a')]({'model':db['User'],'as':'User','attributes':['id',_0x8187('0x5b')],'raw':!![]});_0x3db943['push']({'model':db[_0x8187('0x5c')],'as':'Contact','attributes':['id',_0x8187('0x5d'),_0x8187('0x5e')],'raw':!![]});if(_0x378fac[_0x8187('0x27')][_0x8187('0x5f')]){_0x3db943[_0x8187('0x5a')]({'model':db[_0x8187('0x60')],'as':_0x8187('0x60'),'raw':!![]});}var _0x3f3d6f=[{'model':db[_0x8187('0x3a')],'as':_0x8187('0x61'),'attributes':['id',_0x8187('0x36'),'createdAt',_0x8187('0x62'),'secret',_0x8187('0x63')],'include':_0x3db943}];_0x3f3d6f['push']({'model':db['WhatsappAccount'],'as':_0x8187('0x64'),'attributes':['id',_0x8187('0x1e')]});_0x3f3d6f[_0x8187('0x5a')]({'model':db[_0x8187('0x65')],'as':_0x8187('0x66'),'attributes':['id',_0x8187('0x5b')]});return db[_0x8187('0x2b')][_0x8187('0x34')]({'where':{'id':_0x378fac[_0x8187('0x37')]['id']},'include':_0x3f3d6f})[_0x8187('0x1a')](handleEntityNotFound(_0x4dbca0,null))['then'](function(_0x4e8341){if(_0x4e8341){var _0x4da43a=_0x4e8341['get']({'plain':!![]});fs['mkdirSync'](_0x485b2c);var _0x2c0ce3={'channel':'Whatsapp','account':_0x4da43a[_0x8187('0x64')][_0x8187('0x1e')],'agent':_0x4da43a[_0x8187('0x66')]?_0x4da43a['Owner']['fullname']:_0x8187('0x67'),'createdAt':moment(_0x4da43a[_0x8187('0x68')])[_0x8187('0x48')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8187('0x53')](),'closedAt':_0x4da43a[_0x8187('0x69')]?moment(_0x4da43a[_0x8187('0x6a')])['format'](_0x8187('0x49'))[_0x8187('0x53')]():'','disposition':_0x4da43a[_0x8187('0x6b')],'messages':_(_0x4da43a['Messages'])[_0x8187('0x45')]({'secret':![]})['map'](function(_0x16a306){if(_0x16a306[_0x8187('0x60')]){var _0x9de94d=path[_0x8187('0x54')](_0x4eb390,_0x16a306[_0x8187('0x60')][_0x8187('0x6c')]);if(fs[_0x8187('0x6d')](_0x9de94d)){fs[_0x8187('0x6e')](_0x9de94d)[_0x8187('0x6f')](fs[_0x8187('0x70')](path['join'](_0x485b2c,_0x16a306['Attachment']['basename'])));}}return{'date':moment(_0x16a306[_0x8187('0x68')])[_0x8187('0x48')](_0x8187('0x49'))[_0x8187('0x53')](),'sender':_0x16a306['direction']===_0x8187('0x71')?_0x16a306['User']?_0x16a306[_0x8187('0x65')][_0x8187('0x5b')]:'System':_0x16a306[_0x8187('0x72')][_0x8187('0x5d')]+(_0x16a306['Contact'][_0x8187('0x5e')]?'\x20'+_0x16a306[_0x8187('0x72')][_0x8187('0x5e')]:''),'body':_0x16a306['Attachment']?_0x16a306[_0x8187('0x60')][_0x8187('0x6c')]:_0x16a306[_0x8187('0x36')],'direction':_0x16a306[_0x8187('0x62')]===_0x8187('0x71')?'A':'C','secret':_0x16a306[_0x8187('0x73')],'read':_0x16a306[_0x8187('0x63')],'attachment':_0x16a306[_0x8187('0x60')]};})[_0x8187('0x74')]()};return ejs[_0x8187('0x75')](path[_0x8187('0x54')](config[_0x8187('0x55')],_0x8187('0x56'),_0x8187('0x76'),_0x8187('0x77')),{'interaction':_0x2c0ce3})[_0x8187('0x1a')](function(_0xa61f11){var _0x5084e7=path[_0x8187('0x54')](_0x485b2c,_0x8187('0x78')+_0x4da43a['id']+'-'+_0x4acb20+'.pdf');var _0x3fac4c={'path':_0x5084e7,'channel':'Whatsapp','interactionId':_0x4da43a['id']};return pdf[_0x8187('0x79')](_0xa61f11,_0x3fac4c);})[_0x8187('0x1a')](function(){return new BPromise(function(_0x206a06,_0x1c00b6){zipdir(_0x485b2c,{'saveTo':_0x4e5039},function(_0x25338e,_0x426bf1){if(_0x25338e)return _0x1c00b6(_0x25338e);return _0x206a06(_0x426bf1);});})[_0x8187('0x1a')](function(){return new BPromise(function(_0x13ec33,_0x592ee6){rimraf(_0x485b2c,function(_0x346232){if(_0x346232)_0x592ee6(_0x346232);return _0x13ec33();});});})[_0x8187('0x1a')](function(){return _0x4dbca0['download'](_0x4e5039,_0xbce032,function(_0x4e8958){if(_0x4e8958){console[_0x8187('0x7a')](_0x8187('0x7b'),_0x4e8958);}else{fs[_0x8187('0x7c')](_0x4e5039);}});});});}else{return _0x4dbca0[_0x8187('0x10')](0xc8);}})[_0x8187('0x35')](handleError(_0x4dbca0,null));};
\ No newline at end of file
index 25ed154..abf98a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1782=['save','remove','getUsers','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','../../mysqldb','WhatsappMessage','setMaxListeners'];(function(_0x7cd276,_0x35db85){var _0x599999=function(_0x4f1e5d){while(--_0x4f1e5d){_0x7cd276['push'](_0x7cd276['shift']());}};_0x599999(++_0x35db85);}(_0x1782,0x13e));var _0x2178=function(_0x2337cf,_0xf7cda7){_0x2337cf=_0x2337cf-0x0;var _0x121622=_0x1782[_0x2337cf];return _0x121622;};'use strict';var EventEmitter=require(_0x2178('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x2178('0x1')];var WhatsappMessage=require(_0x2178('0x2'))['db'][_0x2178('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x2178('0x4')](0x0);var events={'afterCreate':_0x2178('0x5'),'afterUpdate':'update','afterDestroy':_0x2178('0x6')};function emitEvent(_0x1659a1){return function(_0x5f44d6,_0x59ebf6,_0x3c4dd1){_0x5f44d6[_0x2178('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x53b9f9){_0x5f44d6['setDataValue'](_0x2178('0x8'),_0x53b9f9[_0x2178('0x9')](function(_0xdd790e){return{'id':_0xdd790e['id']};}));return WhatsappMessage[_0x2178('0xa')]({'where':{'WhatsappInteractionId':_0x5f44d6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2178('0xb')](function(_0x5ac52e){_0x5f44d6['setDataValue'](_0x2178('0xc'),_0x5ac52e[_0x2178('0xd')]);WhatsappInteractionEvents[_0x2178('0xe')](_0x1659a1+':'+_0x5f44d6['id'],_0x5f44d6);WhatsappInteractionEvents[_0x2178('0xe')](_0x1659a1,_0x5f44d6);_0x3c4dd1(null);})[_0x2178('0xf')](_0x3c4dd1(null));};}for(var e in events){if(events[_0x2178('0x10')](e)){var event=events[e];WhatsappInteraction[_0x2178('0x11')](e,emitEvent(event));}}module[_0x2178('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xa4db=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa4db,0x139));var _0xba4d=function(_0x339128,_0x440695){_0x339128=_0x339128-0x0;var _0xab4405=_0xa4db[_0x339128];return _0xab4405;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require('../../mysqldb')['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xba4d('0x0'))['db'][_0xba4d('0x1')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xba4d('0x2')](0x0);var events={'afterCreate':_0xba4d('0x3'),'afterUpdate':_0xba4d('0x4'),'afterDestroy':_0xba4d('0x5')};function emitEvent(_0x5870ff){return function(_0x100cff,_0x4f8bbe,_0x1c798c){_0x100cff[_0xba4d('0x6')]({'attributes':['id'],'raw':!![]})[_0xba4d('0x7')](function(_0x14b2fd){_0x100cff[_0xba4d('0x8')](_0xba4d('0x9'),_0x14b2fd[_0xba4d('0xa')](function(_0x229b56){return{'id':_0x229b56['id']};}));return WhatsappMessage[_0xba4d('0xb')]({'where':{'WhatsappInteractionId':_0x100cff['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3a7804){_0x100cff[_0xba4d('0x8')](_0xba4d('0xc'),_0x3a7804[_0xba4d('0xd')]);WhatsappInteractionEvents[_0xba4d('0xe')](_0x5870ff+':'+_0x100cff['id'],_0x100cff);WhatsappInteractionEvents[_0xba4d('0xe')](_0x5870ff,_0x100cff);_0x1c798c(null);})[_0xba4d('0xf')](_0x1c798c(null));};}for(var e in events){if(events[_0xba4d('0x10')](e)){var event=events[e];WhatsappInteraction[_0xba4d('0x11')](e,emitEvent(event));}}module[_0xba4d('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
index 3f31ea1..3939de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe231=['moment','bluebird','request-promise','path','rimraf','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','closed','format','lodash','util','../../config/logger','api'];(function(_0x49fc97,_0x3a7d34){var _0x5b3e26=function(_0x2ea02d){while(--_0x2ea02d){_0x49fc97['push'](_0x49fc97['shift']());}};_0x5b3e26(++_0x3a7d34);}(_0xe231,0x92));var _0x1e23=function(_0x49aed9,_0x4a7b44){_0x49aed9=_0x49aed9-0x0;var _0x5c913e=_0xe231[_0x49aed9];return _0x5c913e;};'use strict';var _=require(_0x1e23('0x0'));var util=require(_0x1e23('0x1'));var logger=require(_0x1e23('0x2'))(_0x1e23('0x3'));var moment=require(_0x1e23('0x4'));var BPromise=require(_0x1e23('0x5'));var rp=require(_0x1e23('0x6'));var fs=require('fs');var path=require(_0x1e23('0x7'));var rimraf=require(_0x1e23('0x8'));var config=require('../../config/environment');var attributes=require(_0x1e23('0x9'));module[_0x1e23('0xa')]=function(_0x2a08df,_0x4f5126){return _0x2a08df[_0x1e23('0xb')]('WhatsappInteraction',attributes,{'tableName':_0x1e23('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4d9a13,_0x2b8059,_0x108878){if(_0x4d9a13['changed'](_0x1e23('0xd'))){_0x4d9a13['closedAt']=moment()[_0x1e23('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x108878(null,_0x4d9a13);}}});};
\ No newline at end of file
+var _0x4eb6=['./whatsappInteraction.attributes','exports','WhatsappInteraction','whatsapp_interactions','changed','closed','format','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x44aac2,_0x336163){var _0x38a6bc=function(_0x423444){while(--_0x423444){_0x44aac2['push'](_0x44aac2['shift']());}};_0x38a6bc(++_0x336163);}(_0x4eb6,0x13b));var _0x64eb=function(_0x4e4923,_0x368319){_0x4e4923=_0x4e4923-0x0;var _0x8a25db=_0x4eb6[_0x4e4923];return _0x8a25db;};'use strict';var _=require('lodash');var util=require(_0x64eb('0x0'));var logger=require(_0x64eb('0x1'))(_0x64eb('0x2'));var moment=require('moment');var BPromise=require(_0x64eb('0x3'));var rp=require(_0x64eb('0x4'));var fs=require('fs');var path=require(_0x64eb('0x5'));var rimraf=require('rimraf');var config=require(_0x64eb('0x6'));var attributes=require(_0x64eb('0x7'));module[_0x64eb('0x8')]=function(_0x2e29e0,_0x7740ea){return _0x2e29e0['define'](_0x64eb('0x9'),attributes,{'tableName':_0x64eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2c02e0,_0xdddd8d,_0x1ee096){if(_0x2c02e0[_0x64eb('0xb')](_0x64eb('0xc'))){_0x2c02e0['closedAt']=moment()[_0x64eb('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1ee096(null,_0x2c02e0);}}});};
\ No newline at end of file
index 9fd22cf..13b5ca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de9=['register','then','info','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','update','body','options','raw','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','find','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket'];(function(_0x3a58c9,_0x18f9e8){var _0x228fe2=function(_0x2b3034){while(--_0x2b3034){_0x3a58c9['push'](_0x3a58c9['shift']());}};_0x228fe2(++_0x18f9e8);}(_0x4de9,0x180));var _0x94de=function(_0x20d54d,_0x1adc8e){_0x20d54d=_0x20d54d-0x0;var _0x516e8b=_0x4de9[_0x20d54d];return _0x516e8b;};'use strict';var _=require(_0x94de('0x0'));var util=require(_0x94de('0x1'));var moment=require(_0x94de('0x2'));var BPromise=require(_0x94de('0x3'));var rs=require(_0x94de('0x4'));var fs=require('fs');var Redis=require(_0x94de('0x5'));var db=require(_0x94de('0x6'))['db'];var utils=require(_0x94de('0x7'));var logger=require('../../config/logger')(_0x94de('0x8'));var config=require(_0x94de('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x94de('0xa')]['http']({'port':0x232a});config['redis']=_[_0x94de('0xb')](config[_0x94de('0xc')],{'host':_0x94de('0xd'),'port':0x18eb});var socket=require(_0x94de('0xe'))(new Redis(config[_0x94de('0xc')]));require(_0x94de('0xf'))[_0x94de('0x10')](socket);function respondWithRpcPromise(_0x1c80a2,_0x36ee24,_0x4bc52c){return new BPromise(function(_0x27d657,_0x570e6b){return client['request'](_0x1c80a2,_0x4bc52c)[_0x94de('0x11')](function(_0x902885){logger[_0x94de('0x12')](_0x94de('0x13'),_0x36ee24,'request\x20sent');logger[_0x94de('0x14')](_0x94de('0x15'),_0x36ee24,_0x94de('0x16'),JSON[_0x94de('0x17')](_0x902885));if(_0x902885[_0x94de('0x18')]){if(_0x902885[_0x94de('0x18')][_0x94de('0x19')]===0x1f4){logger['error'](_0x94de('0x13'),_0x36ee24,_0x902885[_0x94de('0x18')]['message']);return _0x570e6b(_0x902885[_0x94de('0x18')][_0x94de('0x1a')]);}logger[_0x94de('0x18')](_0x94de('0x13'),_0x36ee24,_0x902885[_0x94de('0x18')][_0x94de('0x1a')]);return _0x27d657(_0x902885[_0x94de('0x18')][_0x94de('0x1a')]);}else{logger['info'](_0x94de('0x13'),_0x36ee24,_0x94de('0x16'));_0x27d657(_0x902885['result']['message']);}})['catch'](function(_0x38caba){logger[_0x94de('0x18')](_0x94de('0x13'),_0x36ee24,_0x38caba);_0x570e6b(_0x38caba);});});}exports['UpdateWhatsappInteraction']=function(_0x56f771){var _0x510dfa=this;return new Promise(function(_0xf39a66,_0x2fca27){return db['WhatsappInteraction'][_0x94de('0x1b')](_0x56f771[_0x94de('0x1c')],{'raw':_0x56f771['options']?_0x56f771[_0x94de('0x1d')][_0x94de('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56f771['options']?_0x56f771[_0x94de('0x1d')][_0x94de('0x1f')]||null:null,'attributes':_0x56f771[_0x94de('0x1d')]?_0x56f771[_0x94de('0x1d')][_0x94de('0x20')]||null:null,'limit':_0x56f771[_0x94de('0x1d')]?_0x56f771[_0x94de('0x1d')][_0x94de('0x21')]||null:null})[_0x94de('0x11')](function(_0x116d71){logger['info'](_0x94de('0x22'),_0x56f771);logger[_0x94de('0x14')](_0x94de('0x22'),_0x56f771,JSON['stringify'](_0x116d71));_0xf39a66(_0x116d71);})['catch'](function(_0x3eb600){logger[_0x94de('0x18')](_0x94de('0x22'),_0x3eb600[_0x94de('0x1a')],_0x56f771);_0x2fca27(_0x510dfa[_0x94de('0x18')](0x1f4,_0x3eb600[_0x94de('0x1a')]));});});};exports[_0x94de('0x23')]=function(_0x53241d){return new Promise(function(_0x558b7f,_0x258a71){return db['WhatsappInteraction'][_0x94de('0x24')]({'where':_0x53241d[_0x94de('0x1d')]?_0x53241d[_0x94de('0x1d')][_0x94de('0x1f')]||null:null})[_0x94de('0x11')](function(_0x3d0981){if(_0x3d0981){return _0x3d0981['addTags'](_0x53241d['body'][_0x94de('0x25')],_['omit'](_0x53241d['body'],[_0x94de('0x25'),'id'])||{});}})[_0x94de('0x26')](function(_0x21dc58){logger[_0x94de('0x12')]('AddTags',_0x53241d);logger[_0x94de('0x14')](_0x94de('0x27'),_0x53241d,JSON[_0x94de('0x17')](_0x21dc58));_0x558b7f(_0x21dc58);})['catch'](function(_0x7c73db){logger[_0x94de('0x18')](_0x94de('0x27'),_0x7c73db[_0x94de('0x1a')],_0x53241d);_0x258a71(_this[_0x94de('0x18')](0x1f4,_0x7c73db[_0x94de('0x1a')]));});});};
\ No newline at end of file
+var _0x76bd=['stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','result','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','debug','catch','AddTagsToWhatsappInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','socket.io-emitter','redis','./whatsappInteraction.socket','register','request','then','info','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0x76bd,0x165));var _0xd76b=function(_0x3717f1,_0x1b0bb0){_0x3717f1=_0x3717f1-0x0;var _0xdaa937=_0x76bd[_0x3717f1];return _0xdaa937;};'use strict';var _=require(_0xd76b('0x0'));var util=require(_0xd76b('0x1'));var moment=require(_0xd76b('0x2'));var BPromise=require(_0xd76b('0x3'));var rs=require(_0xd76b('0x4'));var fs=require('fs');var Redis=require(_0xd76b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd76b('0x6'));var logger=require('../../config/logger')(_0xd76b('0x7'));var config=require(_0xd76b('0x8'));var jayson=require(_0xd76b('0x9'));var client=jayson['client'][_0xd76b('0xa')]({'port':0x232a});config['redis']=_[_0xd76b('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd76b('0xc'))(new Redis(config[_0xd76b('0xd')]));require(_0xd76b('0xe'))[_0xd76b('0xf')](socket);function respondWithRpcPromise(_0x168cb5,_0x6dbcc5,_0x4375c7){return new BPromise(function(_0x3ed50d,_0x4a6b4e){return client[_0xd76b('0x10')](_0x168cb5,_0x4375c7)[_0xd76b('0x11')](function(_0x44d33f){logger[_0xd76b('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x6dbcc5,_0xd76b('0x13'));logger['debug'](_0xd76b('0x14'),_0x6dbcc5,_0xd76b('0x13'),JSON[_0xd76b('0x15')](_0x44d33f));if(_0x44d33f[_0xd76b('0x16')]){if(_0x44d33f[_0xd76b('0x16')][_0xd76b('0x17')]===0x1f4){logger[_0xd76b('0x16')](_0xd76b('0x18'),_0x6dbcc5,_0x44d33f['error'][_0xd76b('0x19')]);return _0x4a6b4e(_0x44d33f[_0xd76b('0x16')][_0xd76b('0x19')]);}logger[_0xd76b('0x16')](_0xd76b('0x18'),_0x6dbcc5,_0x44d33f[_0xd76b('0x16')][_0xd76b('0x19')]);return _0x3ed50d(_0x44d33f[_0xd76b('0x16')]['message']);}else{logger['info'](_0xd76b('0x18'),_0x6dbcc5,_0xd76b('0x13'));_0x3ed50d(_0x44d33f[_0xd76b('0x1a')][_0xd76b('0x19')]);}})['catch'](function(_0x1d5293){logger[_0xd76b('0x16')](_0xd76b('0x18'),_0x6dbcc5,_0x1d5293);_0x4a6b4e(_0x1d5293);});});}exports[_0xd76b('0x1b')]=function(_0x11d75a){var _0x1c1f49=this;return new Promise(function(_0x188071,_0x1b340e){return db[_0xd76b('0x1c')][_0xd76b('0x1d')](_0x11d75a[_0xd76b('0x1e')],{'raw':_0x11d75a['options']?_0x11d75a[_0xd76b('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11d75a[_0xd76b('0x1f')]?_0x11d75a[_0xd76b('0x1f')][_0xd76b('0x20')]||null:null,'attributes':_0x11d75a[_0xd76b('0x1f')]?_0x11d75a[_0xd76b('0x1f')][_0xd76b('0x21')]||null:null,'limit':_0x11d75a['options']?_0x11d75a[_0xd76b('0x1f')]['limit']||null:null})[_0xd76b('0x11')](function(_0x728607){logger[_0xd76b('0x12')]('UpdateWhatsappInteraction',_0x11d75a);logger[_0xd76b('0x22')](_0xd76b('0x1b'),_0x11d75a,JSON[_0xd76b('0x15')](_0x728607));_0x188071(_0x728607);})[_0xd76b('0x23')](function(_0x554bd4){logger[_0xd76b('0x16')](_0xd76b('0x1b'),_0x554bd4[_0xd76b('0x19')],_0x11d75a);_0x1b340e(_0x1c1f49[_0xd76b('0x16')](0x1f4,_0x554bd4[_0xd76b('0x19')]));});});};exports[_0xd76b('0x24')]=function(_0x2d9c95){return new Promise(function(_0x393888,_0x44a5e2){return db[_0xd76b('0x1c')][_0xd76b('0x25')]({'where':_0x2d9c95[_0xd76b('0x1f')]?_0x2d9c95[_0xd76b('0x1f')][_0xd76b('0x20')]||null:null})[_0xd76b('0x11')](function(_0x47d1e4){if(_0x47d1e4){return _0x47d1e4[_0xd76b('0x26')](_0x2d9c95['body'][_0xd76b('0x27')],_[_0xd76b('0x28')](_0x2d9c95[_0xd76b('0x1e')],[_0xd76b('0x27'),'id'])||{});}})['spread'](function(_0x3c33ef){logger[_0xd76b('0x12')](_0xd76b('0x29'),_0x2d9c95);logger[_0xd76b('0x22')](_0xd76b('0x29'),_0x2d9c95,JSON[_0xd76b('0x15')](_0x3c33ef));_0x393888(_0x3c33ef);})['catch'](function(_0x464c68){logger[_0xd76b('0x16')](_0xd76b('0x29'),_0x464c68[_0xd76b('0x19')],_0x2d9c95);_0x44a5e2(_this[_0xd76b('0x16')](0x1f4,_0x464c68['message']));});});};
\ No newline at end of file
index 1d66818..e136c9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aff=['length','whatsappInteraction:','save','remove','update','emit','removeListener'];(function(_0x1dde53,_0x2e93c7){var _0x46ac20=function(_0x42a041){while(--_0x42a041){_0x1dde53['push'](_0x1dde53['shift']());}};_0x46ac20(++_0x2e93c7);}(_0x2aff,0x1c9));var _0xf2af=function(_0x5148ca,_0x3cb213){_0x5148ca=_0x5148ca-0x0;var _0x455e04=_0x2aff[_0x5148ca];return _0x455e04;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0xf2af('0x0'),_0xf2af('0x1'),_0xf2af('0x2')];function createListener(_0x5f3648,_0x286f08){return function(_0x997121){_0x286f08[_0xf2af('0x3')](_0x5f3648,_0x997121);};}function removeListener(_0x1a43b6,_0x439425){return function(){WhatsappInteractionEvents[_0xf2af('0x4')](_0x1a43b6,_0x439425);};}exports['register']=function(_0xfb1d67){for(var _0x4765f2=0x0,_0xdb60cb=events[_0xf2af('0x5')];_0x4765f2<_0xdb60cb;_0x4765f2++){var _0x403e4e=events[_0x4765f2];var _0x37ef06=createListener(_0xf2af('0x6')+_0x403e4e,_0xfb1d67);WhatsappInteractionEvents['on'](_0x403e4e,_0x37ef06);}};
\ No newline at end of file
+var _0x74ab=['save','remove','update','removeListener','register','length','./whatsappInteraction.events'];(function(_0x736bf,_0x117302){var _0x3e5081=function(_0x3aa366){while(--_0x3aa366){_0x736bf['push'](_0x736bf['shift']());}};_0x3e5081(++_0x117302);}(_0x74ab,0x1cd));var _0xb74a=function(_0xa6b91b,_0x2139b4){_0xa6b91b=_0xa6b91b-0x0;var _0x2987d7=_0x74ab[_0xa6b91b];return _0x2987d7;};'use strict';var WhatsappInteractionEvents=require(_0xb74a('0x0'));var events=[_0xb74a('0x1'),_0xb74a('0x2'),_0xb74a('0x3')];function createListener(_0x548297,_0x4d34c4){return function(_0x3f78da){_0x4d34c4['emit'](_0x548297,_0x3f78da);};}function removeListener(_0x143174,_0x368d6b){return function(){WhatsappInteractionEvents[_0xb74a('0x4')](_0x143174,_0x368d6b);};}exports[_0xb74a('0x5')]=function(_0x2d47cb){for(var _0x5eb45c=0x0,_0x42ea06=events[_0xb74a('0x6')];_0x5eb45c<_0x42ea06;_0x5eb45c++){var _0x41c032=events[_0x5eb45c];var _0xb71f1f=createListener('whatsappInteraction:'+_0x41c032,_0x2d47cb);WhatsappInteractionEvents['on'](_0x41c032,_0xb71f1f);}};
\ No newline at end of file
index 2dfcf64..31e5fb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5a=['/:id/accept','accept','put','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','update'];(function(_0x15acf7,_0x5db7fa){var _0x1b6a6c=function(_0x459a8e){while(--_0x459a8e){_0x15acf7['push'](_0x15acf7['shift']());}};_0x1b6a6c(++_0x5db7fa);}(_0x6c5a,0x83));var _0xa6c5=function(_0x54bde1,_0x2befa3){_0x54bde1=_0x54bde1-0x0;var _0x2e2d07=_0x6c5a[_0x54bde1];return _0x2e2d07;};'use strict';var multer=require(_0xa6c5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa6c5('0x1'));var express=require(_0xa6c5('0x2'));var router=express['Router']();var fs_extra=require(_0xa6c5('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa6c5('0x4'));var config=require(_0xa6c5('0x5'));var controller=require('./whatsappMessage.controller');router[_0xa6c5('0x6')]('/',auth[_0xa6c5('0x7')](),controller[_0xa6c5('0x8')]);router[_0xa6c5('0x6')]('/describe',auth[_0xa6c5('0x7')](),controller[_0xa6c5('0x9')]);router['get'](_0xa6c5('0xa'),auth[_0xa6c5('0x7')](),controller[_0xa6c5('0xb')]);router[_0xa6c5('0xc')]('/',auth[_0xa6c5('0x7')](),interaction['tracked'](_0xa6c5('0xd'),_0xa6c5('0xe')),controller[_0xa6c5('0xf')]);router[_0xa6c5('0xc')](_0xa6c5('0x10'),controller[_0xa6c5('0x11')]);router['put']('/:id',auth[_0xa6c5('0x7')](),controller[_0xa6c5('0x12')]);router['put'](_0xa6c5('0x13'),auth[_0xa6c5('0x7')](),controller[_0xa6c5('0x14')]);router[_0xa6c5('0x15')]('/:id/reject',auth['isAuthenticated'](),controller['reject']);router[_0xa6c5('0x16')](_0xa6c5('0xa'),auth[_0xa6c5('0x7')](),controller[_0xa6c5('0x17')]);module[_0xa6c5('0x18')]=router;
\ No newline at end of file
+var _0xa413=['update','accept','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','isAuthenticated','describe','/:id','show','post','whatsapp','/:id/status','status','put'];(function(_0x5ed63c,_0x55b1f3){var _0x5cdf92=function(_0x3dc2da){while(--_0x3dc2da){_0x5ed63c['push'](_0x5ed63c['shift']());}};_0x5cdf92(++_0x55b1f3);}(_0xa413,0xbd));var _0x3a41=function(_0xfb87ad,_0x19ebf5){_0xfb87ad=_0xfb87ad-0x0;var _0x511549=_0xa413[_0xfb87ad];return _0x511549;};'use strict';var multer=require(_0x3a41('0x0'));var util=require('util');var path=require(_0x3a41('0x1'));var timeout=require(_0x3a41('0x2'));var express=require(_0x3a41('0x3'));var router=express['Router']();var fs_extra=require(_0x3a41('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3a41('0x5'));var config=require(_0x3a41('0x6'));var controller=require(_0x3a41('0x7'));router[_0x3a41('0x8')]('/',auth['isAuthenticated'](),controller[_0x3a41('0x9')]);router[_0x3a41('0x8')]('/describe',auth[_0x3a41('0xa')](),controller[_0x3a41('0xb')]);router[_0x3a41('0x8')](_0x3a41('0xc'),auth[_0x3a41('0xa')](),controller[_0x3a41('0xd')]);router[_0x3a41('0xe')]('/',auth[_0x3a41('0xa')](),interaction['tracked'](_0x3a41('0xf'),'whatsappmessage:create'),controller['create']);router[_0x3a41('0xe')](_0x3a41('0x10'),controller[_0x3a41('0x11')]);router[_0x3a41('0x12')](_0x3a41('0xc'),auth[_0x3a41('0xa')](),controller[_0x3a41('0x13')]);router['put']('/:id/accept',auth[_0x3a41('0xa')](),controller[_0x3a41('0x14')]);router[_0x3a41('0x12')](_0x3a41('0x15'),auth['isAuthenticated'](),controller[_0x3a41('0x16')]);router[_0x3a41('0x17')](_0x3a41('0xc'),auth[_0x3a41('0xa')](),controller[_0x3a41('0x18')]);module[_0x3a41('0x19')]=router;
\ No newline at end of file
index 36269bf..7cceffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7a6=['STRING','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4e0cdf,_0x5865bc){var _0x1fea3b=function(_0x5b4814){while(--_0x5b4814){_0x4e0cdf['push'](_0x4e0cdf['shift']());}};_0x1fea3b(++_0x5865bc);}(_0xb7a6,0x189));var _0x6b7a=function(_0x1f0da7,_0x5cee4d){_0x1f0da7=_0x1f0da7-0x0;var _0x4ea985=_0xb7a6[_0x1f0da7];return _0x4ea985;};'use strict';var Sequelize=require('sequelize');module[_0x6b7a('0x0')]={'body':{'type':Sequelize[_0x6b7a('0x1')](_0x6b7a('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x6b7a('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6b7a('0x4')]('in',_0x6b7a('0x5')),'defaultValue':_0x6b7a('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x6b7a('0x6')](0xbe)},'phone':{'type':Sequelize[_0x6b7a('0x6')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x6b7a('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x6b7a('0x6')]},'providerResponse':{'type':Sequelize[_0x6b7a('0x1')]}};
\ No newline at end of file
+var _0x7387=['STRING','DATE','BOOLEAN','sequelize','exports','TEXT','ENUM','out'];(function(_0x2c6d0e,_0x50a9dd){var _0x4711b6=function(_0x1545b6){while(--_0x1545b6){_0x2c6d0e['push'](_0x2c6d0e['shift']());}};_0x4711b6(++_0x50a9dd);}(_0x7387,0x7b));var _0x7738=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x7387[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require(_0x7738('0x0'));module[_0x7738('0x1')]={'body':{'type':Sequelize[_0x7738('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x7738('0x3')]('in',_0x7738('0x4')),'defaultValue':_0x7738('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x7738('0x5')](0xbe)},'phone':{'type':Sequelize[_0x7738('0x5')]},'readAt':{'type':Sequelize[_0x7738('0x6')]},'secret':{'type':Sequelize[_0x7738('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x7738('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 3fe9ff5..1975da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11c2=['show','params','length','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteraction','WhatsappInteractionId','read1stAt','format','interaction','get','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','ContactId','sequelize','rejectmessage','WhatsappAccount','WhatsappAccountId','debug','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','request','WhatsappMessage,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x11c2,0x156));var _0x211c=function(_0x51dfd0,_0xf0e072){_0x51dfd0=_0x51dfd0-0x0;var _0x2468c0=_0x11c2[_0x51dfd0];return _0x2468c0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x211c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x211c('0x1'));var rp=require('request-promise');var moment=require(_0x211c('0x2'));var BPromise=require(_0x211c('0x3'));var Mustache=require(_0x211c('0x4'));var util=require(_0x211c('0x5'));var path=require(_0x211c('0x6'));var sox=require(_0x211c('0x7'));var csv=require('to-csv');var ejs=require(_0x211c('0x8'));var fs=require('fs');var fs_extra=require(_0x211c('0x9'));var _=require(_0x211c('0xa'));var squel=require('squel');var crypto=require(_0x211c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x211c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x211c('0xd'));var Papa=require(_0x211c('0xe'));var Redis=require(_0x211c('0xf'));var authService=require(_0x211c('0x10'));var qs=require(_0x211c('0x11'));var as=require(_0x211c('0x12'));var hardwareService=require(_0x211c('0x13'));var logger=require(_0x211c('0x14'))(_0x211c('0x15'));var utils=require(_0x211c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x211c('0x17'));var db=require('../../mysqldb')['db'];config[_0x211c('0x18')]=_[_0x211c('0x19')](config[_0x211c('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x211c('0x1a'))(new Redis(config[_0x211c('0x18')]));require(_0x211c('0x1b'))[_0x211c('0x1c')](socket);var jayson=require(_0x211c('0x1d'));var client=jayson['client'][_0x211c('0x1e')]({'port':0x232c});var client9002=jayson[_0x211c('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54c391,_0x408c1d,_0x5c9ce7,_0x558e1e){return new BPromise(function(_0x33d8ce,_0x5e2c05){var _0xa4845=_0x558e1e||client;return _0xa4845[_0x211c('0x20')](_0x54c391,_0x5c9ce7)['then'](function(_0x3c3e21){logger['info'](_0x211c('0x21'),_0x408c1d,'request\x20sent');logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x408c1d,_0x211c('0x22'),JSON['stringify'](_0x3c3e21));if(_0x3c3e21[_0x211c('0x23')]){if(_0x3c3e21[_0x211c('0x23')][_0x211c('0x24')]===0x1f4){logger['error'](_0x211c('0x21'),_0x408c1d,_0x3c3e21[_0x211c('0x23')]['message']);return _0x5e2c05(_0x3c3e21[_0x211c('0x23')][_0x211c('0x25')]);}logger['error'](_0x211c('0x21'),_0x408c1d,_0x3c3e21[_0x211c('0x23')]['message']);return _0x33d8ce(_0x3c3e21[_0x211c('0x23')][_0x211c('0x25')]);}else{logger[_0x211c('0x26')](_0x211c('0x21'),_0x408c1d,_0x211c('0x22'));_0x33d8ce(_0x3c3e21[_0x211c('0x27')][_0x211c('0x25')]);}})['catch'](function(_0x44c568){logger[_0x211c('0x23')]('WhatsappMessage,\x20%s,\x20%s',_0x408c1d,_0x44c568);_0x5e2c05(_0x44c568);});});}function respondWithStatusCode(_0x4adda6,_0x2be6c5){_0x2be6c5=_0x2be6c5||0xcc;return function(_0x411fd5){if(_0x411fd5){return _0x4adda6[_0x211c('0x28')](_0x2be6c5);}return _0x4adda6[_0x211c('0x29')](_0x2be6c5)[_0x211c('0x2a')]();};}function respondWithResult(_0x2cf7fa,_0x191e13){_0x191e13=_0x191e13||0xc8;return function(_0x5dcd88){if(_0x5dcd88){return _0x2cf7fa[_0x211c('0x29')](_0x191e13)[_0x211c('0x2b')](_0x5dcd88);}};}function respondWithFilteredResult(_0x3d1c82,_0x2c68da){return function(_0x293c22){if(_0x293c22){var _0x55fd4d=typeof _0x2c68da[_0x211c('0x2c')]===_0x211c('0x2d')&&typeof _0x2c68da[_0x211c('0x2e')]===_0x211c('0x2d');var _0x1eb20b=_0x293c22['count'];var _0x5715ea=_0x55fd4d?0x0:_0x2c68da[_0x211c('0x2c')];var _0x586ec7=_0x55fd4d?_0x293c22[_0x211c('0x2f')]:_0x2c68da['offset']+_0x2c68da[_0x211c('0x2e')];var _0x4a38f7;if(_0x586ec7>=_0x1eb20b){_0x586ec7=_0x1eb20b;_0x4a38f7=0xc8;}else{_0x4a38f7=0xce;}_0x3d1c82[_0x211c('0x29')](_0x4a38f7);return _0x3d1c82[_0x211c('0x30')](_0x211c('0x31'),_0x5715ea+'-'+_0x586ec7+'/'+_0x1eb20b)[_0x211c('0x2b')](_0x293c22);}return null;};}function patchUpdates(_0x30fe27){return function(_0xfad158){try{jsonpatch[_0x211c('0x32')](_0xfad158,_0x30fe27,!![]);}catch(_0x20cdfb){return BPromise[_0x211c('0x33')](_0x20cdfb);}return _0xfad158['save']();};}function saveUpdates(_0x38ad3d,_0x3e054d){return function(_0x3a5f56){if(_0x3a5f56){return _0x3a5f56[_0x211c('0x34')](_0x38ad3d)[_0x211c('0x35')](function(_0x2daf40){return _0x2daf40;});}return null;};}function removeEntity(_0x29f528,_0x21f21f){return function(_0x3e6b53){if(_0x3e6b53){return _0x3e6b53['destroy']()[_0x211c('0x35')](function(){_0x29f528['status'](0xcc)[_0x211c('0x2a')]();});}};}function handleEntityNotFound(_0x5da086,_0x3863f9){return function(_0x6b944b){if(!_0x6b944b){_0x5da086[_0x211c('0x28')](0x194);}return _0x6b944b;};}function handleError(_0x1c8e11,_0x438c5d){_0x438c5d=_0x438c5d||0x1f4;return function(_0x2ad6b5){logger[_0x211c('0x23')](_0x2ad6b5[_0x211c('0x36')]);if(_0x2ad6b5[_0x211c('0x37')]){delete _0x2ad6b5[_0x211c('0x37')];}_0x1c8e11['status'](_0x438c5d)[_0x211c('0x38')](_0x2ad6b5);};}exports[_0x211c('0x39')]=function(_0x1b3e52,_0x3d27c1){var _0x498836={},_0x4d36a6={},_0x39a646={'count':0x0,'rows':[]};var _0x4c1f1d=_[_0x211c('0x3a')](db[_0x211c('0x3b')][_0x211c('0x3c')],function(_0x194233){return{'name':_0x194233['fieldName'],'type':_0x194233[_0x211c('0x3d')][_0x211c('0x3e')]};});_0x4d36a6['model']=_[_0x211c('0x3a')](_0x4c1f1d,_0x211c('0x37'));_0x4d36a6[_0x211c('0x3f')]=_[_0x211c('0x40')](_0x1b3e52[_0x211c('0x3f')]);_0x4d36a6[_0x211c('0x41')]=_[_0x211c('0x42')](_0x4d36a6[_0x211c('0x43')],_0x4d36a6['query']);_0x498836[_0x211c('0x44')]=_[_0x211c('0x42')](_0x4d36a6[_0x211c('0x43')],qs[_0x211c('0x45')](_0x1b3e52['query'][_0x211c('0x45')]));_0x498836[_0x211c('0x44')]=_0x498836[_0x211c('0x44')]['length']?_0x498836[_0x211c('0x44')]:_0x4d36a6['model'];if(!_0x1b3e52[_0x211c('0x3f')][_0x211c('0x46')](_0x211c('0x47'))){_0x498836[_0x211c('0x2e')]=qs[_0x211c('0x2e')](_0x1b3e52[_0x211c('0x3f')]['limit']);_0x498836['offset']=qs[_0x211c('0x2c')](_0x1b3e52['query'][_0x211c('0x2c')]);}_0x498836[_0x211c('0x48')]=qs['sort'](_0x1b3e52[_0x211c('0x3f')]['sort']);_0x498836['where']=qs[_0x211c('0x41')](_[_0x211c('0x49')](_0x1b3e52[_0x211c('0x3f')],_0x4d36a6[_0x211c('0x41')]),_0x4c1f1d);if(_0x1b3e52[_0x211c('0x3f')][_0x211c('0x4a')]){_0x498836[_0x211c('0x4b')]=_[_0x211c('0x4c')](_0x498836[_0x211c('0x4b')],{'$or':_[_0x211c('0x3a')](_0x4c1f1d,function(_0xde466d){if(_0xde466d['type']!==_0x211c('0x4d')){var _0x17f935={};_0x17f935[_0xde466d[_0x211c('0x37')]]={'$like':'%'+_0x1b3e52[_0x211c('0x3f')][_0x211c('0x4a')]+'%'};return _0x17f935;}})});}_0x498836=_[_0x211c('0x4c')]({},_0x498836,_0x1b3e52[_0x211c('0x4e')]);var _0xe696b5={'where':_0x498836[_0x211c('0x4b')]};return db[_0x211c('0x3b')][_0x211c('0x2f')](_0xe696b5)[_0x211c('0x35')](function(_0x468408){_0x39a646[_0x211c('0x2f')]=_0x468408;if(_0x1b3e52[_0x211c('0x3f')][_0x211c('0x4f')]){_0x498836[_0x211c('0x50')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x211c('0x51')](_0x498836);})[_0x211c('0x35')](function(_0x3f863d){_0x39a646[_0x211c('0x52')]=_0x3f863d;return _0x39a646;})['then'](respondWithFilteredResult(_0x3d27c1,_0x498836))[_0x211c('0x53')](handleError(_0x3d27c1,null));};exports[_0x211c('0x54')]=function(_0x131e0a,_0x3f4b68){var _0x5404a8={'raw':!![],'where':{'id':_0x131e0a[_0x211c('0x55')]['id']}},_0x34b4e1={};_0x34b4e1[_0x211c('0x43')]=_[_0x211c('0x40')](db[_0x211c('0x3b')]['rawAttributes']);_0x34b4e1[_0x211c('0x3f')]=_['keys'](_0x131e0a[_0x211c('0x3f')]);_0x34b4e1[_0x211c('0x41')]=_[_0x211c('0x42')](_0x34b4e1[_0x211c('0x43')],_0x34b4e1[_0x211c('0x3f')]);_0x5404a8[_0x211c('0x44')]=_[_0x211c('0x42')](_0x34b4e1[_0x211c('0x43')],qs[_0x211c('0x45')](_0x131e0a[_0x211c('0x3f')][_0x211c('0x45')]));_0x5404a8['attributes']=_0x5404a8[_0x211c('0x44')][_0x211c('0x56')]?_0x5404a8['attributes']:_0x34b4e1[_0x211c('0x43')];if(_0x131e0a['query'][_0x211c('0x4f')]){_0x5404a8[_0x211c('0x50')]=[{'all':!![]}];}_0x5404a8=_[_0x211c('0x4c')]({},_0x5404a8,_0x131e0a['options']);return db[_0x211c('0x3b')][_0x211c('0x57')](_0x5404a8)[_0x211c('0x35')](handleEntityNotFound(_0x3f4b68,null))['then'](respondWithResult(_0x3f4b68,null))['catch'](handleError(_0x3f4b68,null));};exports['create']=function(_0x194fcd,_0x17f3f5){return db[_0x211c('0x3b')][_0x211c('0x58')](_0x194fcd['body'],{})[_0x211c('0x35')](respondWithResult(_0x17f3f5,0xc9))[_0x211c('0x53')](handleError(_0x17f3f5,null));};exports[_0x211c('0x34')]=function(_0x5ba921,_0x39cac7){if(_0x5ba921[_0x211c('0x59')]['id']){delete _0x5ba921['body']['id'];}return db[_0x211c('0x3b')]['find']({'where':{'id':_0x5ba921[_0x211c('0x55')]['id']}})[_0x211c('0x35')](handleEntityNotFound(_0x39cac7,null))[_0x211c('0x35')](saveUpdates(_0x5ba921['body'],null))['then'](respondWithResult(_0x39cac7,null))[_0x211c('0x53')](handleError(_0x39cac7,null));};exports['destroy']=function(_0x47ee93,_0x56e180){return db[_0x211c('0x3b')][_0x211c('0x57')]({'where':{'id':_0x47ee93[_0x211c('0x55')]['id']}})[_0x211c('0x35')](handleEntityNotFound(_0x56e180,null))['then'](removeEntity(_0x56e180,null))[_0x211c('0x53')](handleError(_0x56e180,null));};exports[_0x211c('0x5a')]=function(_0x1c0fb0,_0x3acde8){return db[_0x211c('0x3b')][_0x211c('0x5a')]()[_0x211c('0x35')](respondWithResult(_0x3acde8,null))['catch'](handleError(_0x3acde8,null));};var interaction_log=require(_0x211c('0x14'))(_0x211c('0x5b'));exports[_0x211c('0x5c')]=function(_0x381f25,_0x4da6fd,_0x4d0d9e){var _0x42fec4={'agent':{},'channel':_0x211c('0x5d')};if(_0x381f25[_0x211c('0x59')]['id']){delete _0x381f25[_0x211c('0x59')]['id'];}_0x381f25[_0x211c('0x59')][_0x211c('0x5e')]=!![];_0x381f25[_0x211c('0x59')]['readAt']=moment()['format'](_0x211c('0x5f'));_0x381f25['body'][_0x211c('0x60')]=_0x381f25[_0x211c('0x59')][_0x211c('0x60')]||_0x381f25[_0x211c('0x61')]['id'];_0x42fec4[_0x211c('0x62')]['id']=_0x381f25[_0x211c('0x59')][_0x211c('0x60')];return db[_0x211c('0x3b')]['find']({'where':{'id':_0x381f25[_0x211c('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4da6fd,null))[_0x211c('0x35')](saveUpdates(_0x381f25[_0x211c('0x59')],null))[_0x211c('0x35')](function(_0x52289f){if(_0x52289f){_0x42fec4[_0x211c('0x25')]=_0x52289f['get']({'plain':!![]});return db[_0x211c('0x63')][_0x211c('0x57')]({'where':{'id':_0x52289f[_0x211c('0x64')]}});}return null;})[_0x211c('0x35')](handleEntityNotFound(_0x4da6fd,null))[_0x211c('0x35')](function(_0x285643){if(_0x285643){return _0x285643['update']({'UserId':_0x381f25[_0x211c('0x59')][_0x211c('0x60')],'read1stAt':_['isNil'](_0x285643[_0x211c('0x65')])?moment()[_0x211c('0x66')](_0x211c('0x5f')):undefined});}return null;})[_0x211c('0x35')](function(_0x52af4b){if(_0x52af4b){_0x42fec4[_0x211c('0x67')]=_0x52af4b[_0x211c('0x68')]({'plain':!![]});interaction_log[_0x211c('0x26')](_0x211c('0x69'),_0x381f25[_0x211c('0x61')]['id'],_0x381f25[_0x211c('0x61')][_0x211c('0x37')],_0x381f25[_0x211c('0x61')]['role'],_0x42fec4['interaction']['id'],_0x381f25[_0x211c('0x59')]?JSON[_0x211c('0x6a')](_0x381f25[_0x211c('0x59')]):'null');return respondWithRpcPromise(_0x211c('0x6b'),_0x211c('0x6c'),_0x42fec4);}return null;})[_0x211c('0x35')](function(_0x446e28){var _0x211e11=_0x211c('0x6d')+_0x446e28[_0x211c('0x25')]['ContactId'];return db['sequelize'][_0x211c('0x3f')](_0x211e11,{'type':db[_0x211c('0x6e')][_0x211c('0x6f')][_0x211c('0x70')],'raw':!![]})[_0x211c('0x35')](function(_0x58839f){return _0x58839f;});})[_0x211c('0x35')](function(_0x3c9384){if(_0x3c9384){_0x42fec4['message'][_0x211c('0x71')]=_0x3c9384[0x0];if(!_0x381f25[_0x211c('0x59')][_0x211c('0x60')])return;return db[_0x211c('0x72')][_0x211c('0x57')]({'where':{'id':_0x381f25['body'][_0x211c('0x60')],'role':_0x211c('0x62')},'attributes':['id',_0x211c('0x37'),_0x211c('0x73'),_0x211c('0x74'),_0x211c('0x75')],'raw':!![]});}return null;})[_0x211c('0x35')](function(_0x4945e5){if(!_0x4945e5)return null;_0x42fec4[_0x211c('0x25')][_0x211c('0x62')]=_0x4945e5;return _0x42fec4;})['then'](function(_0x116092){if(_0x116092){if(_0x381f25[_0x211c('0x59')]['manual']){_0x42fec4[_0x211c('0x25')][_0x211c('0x76')]=util[_0x211c('0x66')](_0x211c('0x77'),_0x381f25[_0x211c('0x61')][_0x211c('0x37')]);_0x42fec4['message'][_0x211c('0x78')]=_0x42fec4[_0x211c('0x78')];_0x42fec4[_0x211c('0x25')][_0x211c('0x79')]=_0x42fec4['channel'];_0x42fec4[_0x211c('0x25')][_0x211c('0x7a')]='accept';return respondWithRpcPromise(_0x211c('0x7b'),_0x211c('0x7b'),{'event':_0x211c('0x7c'),'message':_0x42fec4[_0x211c('0x25')]},client9002)[_0x211c('0x35')](function(){return _0x42fec4;});}return _0x42fec4;}return null;})[_0x211c('0x35')](respondWithResult(_0x4da6fd,null))['catch'](handleError(_0x4da6fd,null));};var interaction_log=require(_0x211c('0x14'))(_0x211c('0x5b'));exports[_0x211c('0x33')]=function(_0x41f6a7,_0x2ca62b,_0x5be91b){var _0xe2b8ec={'agent':{},'channel':_0x211c('0x5d')};if(_0x41f6a7[_0x211c('0x59')]['id']){delete _0x41f6a7[_0x211c('0x59')]['id'];}_0x41f6a7[_0x211c('0x59')][_0x211c('0x60')]=_0x41f6a7[_0x211c('0x59')][_0x211c('0x60')]||_0x41f6a7[_0x211c('0x61')]['id'];_0xe2b8ec[_0x211c('0x62')]['id']=_0x41f6a7[_0x211c('0x59')][_0x211c('0x60')];return db[_0x211c('0x3b')][_0x211c('0x57')]({'where':{'id':_0x41f6a7[_0x211c('0x55')]['id'],'UserId':null}})[_0x211c('0x35')](handleEntityNotFound(_0x2ca62b,null))['then'](function(_0x2ef7c0){if(_0x2ef7c0){_0xe2b8ec[_0x211c('0x25')]=_0x2ef7c0[_0x211c('0x68')]({'plain':!![]});return db[_0x211c('0x63')][_0x211c('0x57')]({'where':{'id':_0x2ef7c0[_0x211c('0x64')]}});}return null;})[_0x211c('0x35')](handleEntityNotFound(_0x2ca62b,null))[_0x211c('0x35')](function(_0x277cb3){if(_0x277cb3){_0xe2b8ec['interaction']=_0x277cb3['get']({'plain':!![]});interaction_log['info'](_0x211c('0x7d'),_0x41f6a7[_0x211c('0x61')]['id'],_0x41f6a7['user'][_0x211c('0x37')],_0x41f6a7[_0x211c('0x61')][_0x211c('0x7e')],_0xe2b8ec[_0x211c('0x67')]['id'],_0x41f6a7[_0x211c('0x59')]?JSON[_0x211c('0x6a')](_0x41f6a7[_0x211c('0x59')]):_0x211c('0x7f'));return respondWithRpcPromise(_0x211c('0x80'),_0x211c('0x81'),_0xe2b8ec);}return null;})[_0x211c('0x35')](function(_0xd11460){var _0x1aaf01=_0x211c('0x6d')+_0xd11460[_0x211c('0x25')][_0x211c('0x82')];return db[_0x211c('0x83')][_0x211c('0x3f')](_0x1aaf01,{'type':db[_0x211c('0x6e')][_0x211c('0x6f')]['SELECT'],'raw':!![]})[_0x211c('0x35')](function(_0x41c660){return _0x41c660;});})['then'](function(_0x2d7dfd){if(_0x2d7dfd){_0xe2b8ec['message'][_0x211c('0x71')]=_0x2d7dfd[0x0];if(!_0x41f6a7['body'][_0x211c('0x60')])return;return db[_0x211c('0x72')][_0x211c('0x57')]({'where':{'id':_0x41f6a7[_0x211c('0x59')][_0x211c('0x60')],'role':_0x211c('0x62')},'attributes':['id',_0x211c('0x37'),_0x211c('0x73'),_0x211c('0x74'),_0x211c('0x75')],'raw':!![]});}return null;})[_0x211c('0x35')](function(_0x2ea3b0){if(!_0x2ea3b0)return null;_0xe2b8ec[_0x211c('0x25')][_0x211c('0x62')]=_0x2ea3b0;return _0xe2b8ec;})[_0x211c('0x35')](function(_0x15ddc3){if(_0x15ddc3){_0x15ddc3[_0x211c('0x25')][_0x211c('0x76')]=util[_0x211c('0x66')](_0x211c('0x77'),_0x41f6a7['user'][_0x211c('0x37')]);_0x15ddc3[_0x211c('0x25')]['channel']=_0xe2b8ec[_0x211c('0x78')];_0x15ddc3[_0x211c('0x25')][_0x211c('0x79')]=_0xe2b8ec[_0x211c('0x78')];_0x15ddc3['message'][_0x211c('0x7a')]=_0x211c('0x33');respondWithRpcPromise(_0x211c('0x7b'),'EventManager',{'event':_0x211c('0x84'),'message':_0x15ddc3[_0x211c('0x25')]},client9002);return _0xe2b8ec;}return null;})[_0x211c('0x35')](respondWithResult(_0x2ca62b,null))[_0x211c('0x53')](handleError(_0x2ca62b,null));};exports[_0x211c('0x29')]=function(_0x407ba4,_0x45a993,_0x39481b){if(_0x407ba4['body']['id']){delete _0x407ba4[_0x211c('0x59')]['id'];}var _0x5118b3;return db[_0x211c('0x3b')][_0x211c('0x57')]({'where':{'id':_0x407ba4['params']['id']}})[_0x211c('0x35')](handleEntityNotFound(_0x45a993,null))[_0x211c('0x35')](function(_0x1753d5){if(_0x1753d5){_0x5118b3=_0x1753d5;return db[_0x211c('0x85')][_0x211c('0x57')]({'where':{'id':_0x1753d5[_0x211c('0x86')]}});}})[_0x211c('0x35')](handleEntityNotFound(_0x45a993,null))['then'](function(_0x2691f5){if(_0x2691f5){logger[_0x211c('0x87')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0x211c('0x29'),_0x211c('0x88'),_0x2691f5['type'],util['inspect'](_0x407ba4[_0x211c('0x59')],{'showHidden':![],'depth':null}));switch(_0x2691f5[_0x211c('0x3d')]){case _0x211c('0x89'):if(_0x407ba4[_0x211c('0x59')][_0x211c('0x8a')]&&_0x407ba4[_0x211c('0x59')][_0x211c('0x8a')]===_0x5118b3[_0x211c('0x8b')]&&_0x407ba4[_0x211c('0x59')]['MessageStatus']&&_0x407ba4[_0x211c('0x59')]['MessageStatus']===_0x211c('0x5e')){return _0x5118b3[_0x211c('0x34')]({'read':!![]});}else{logger[_0x211c('0x23')](_0x211c('0x8c'),_0x211c('0x29'),'twilio',util[_0x211c('0x8d')](_0x407ba4['body'],{'showHidden':![],'depth':null}));}break;}return _0x5118b3;}})['then'](respondWithResult(_0x45a993,null))['catch'](handleError(_0x45a993,null));};
\ No newline at end of file
+var _0x3e25=['end','stack','send','index','WhatsappMessage','rawAttributes','fieldName','type','map','name','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','includeAll','create','body','update','params','destroy','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteractionId','isNil','read1stAt','interaction','info','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','find','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','rejectmessage','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','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','../../mysqldb','defaults','redis','localhost','./whatsappMessage.socket','register','http','client','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','save'];(function(_0x121c2c,_0x4ba1fe){var _0x2be204=function(_0x60ab3b){while(--_0x60ab3b){_0x121c2c['push'](_0x121c2c['shift']());}};_0x2be204(++_0x4ba1fe);}(_0x3e25,0xe5));var _0x53e2=function(_0x552bd4,_0x435861){_0x552bd4=_0x552bd4-0x0;var _0x98cbe3=_0x3e25[_0x552bd4];return _0x98cbe3;};'use strict';var emlformat=require(_0x53e2('0x0'));var rimraf=require(_0x53e2('0x1'));var zipdir=require(_0x53e2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x53e2('0x3'));var moment=require(_0x53e2('0x4'));var BPromise=require(_0x53e2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x53e2('0x6'));var sox=require(_0x53e2('0x7'));var csv=require(_0x53e2('0x8'));var ejs=require(_0x53e2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x53e2('0xa'));var jsforce=require(_0x53e2('0xb'));var deskjs=require(_0x53e2('0xc'));var toCsv=require(_0x53e2('0x8'));var querystring=require('querystring');var Papa=require(_0x53e2('0xd'));var Redis=require('ioredis');var authService=require(_0x53e2('0xe'));var qs=require(_0x53e2('0xf'));var as=require(_0x53e2('0x10'));var hardwareService=require(_0x53e2('0x11'));var logger=require(_0x53e2('0x12'))(_0x53e2('0x13'));var utils=require(_0x53e2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x53e2('0x15'));var db=require(_0x53e2('0x16'))['db'];config['redis']=_[_0x53e2('0x17')](config[_0x53e2('0x18')],{'host':_0x53e2('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x53e2('0x1a'))[_0x53e2('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x53e2('0x1c')]({'port':0x232c});var client9002=jayson[_0x53e2('0x1d')][_0x53e2('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xa83f33,_0x509c89,_0x4b1d0c,_0x2cba18){return new BPromise(function(_0x4e0894,_0xa8b642){var _0x1705df=_0x2cba18||client;return _0x1705df[_0x53e2('0x1e')](_0xa83f33,_0x4b1d0c)[_0x53e2('0x1f')](function(_0x5d8275){logger['info'](_0x53e2('0x20'),_0x509c89,_0x53e2('0x21'));logger[_0x53e2('0x22')](_0x53e2('0x23'),_0x509c89,_0x53e2('0x21'),JSON['stringify'](_0x5d8275));if(_0x5d8275[_0x53e2('0x24')]){if(_0x5d8275['error'][_0x53e2('0x25')]===0x1f4){logger[_0x53e2('0x24')](_0x53e2('0x20'),_0x509c89,_0x5d8275[_0x53e2('0x24')][_0x53e2('0x26')]);return _0xa8b642(_0x5d8275[_0x53e2('0x24')][_0x53e2('0x26')]);}logger[_0x53e2('0x24')](_0x53e2('0x20'),_0x509c89,_0x5d8275[_0x53e2('0x24')][_0x53e2('0x26')]);return _0x4e0894(_0x5d8275[_0x53e2('0x24')][_0x53e2('0x26')]);}else{logger['info'](_0x53e2('0x20'),_0x509c89,_0x53e2('0x21'));_0x4e0894(_0x5d8275[_0x53e2('0x27')][_0x53e2('0x26')]);}})[_0x53e2('0x28')](function(_0x410a03){logger[_0x53e2('0x24')](_0x53e2('0x20'),_0x509c89,_0x410a03);_0xa8b642(_0x410a03);});});}function respondWithStatusCode(_0x24129d,_0x378ed8){_0x378ed8=_0x378ed8||0xcc;return function(_0x5a35f6){if(_0x5a35f6){return _0x24129d[_0x53e2('0x29')](_0x378ed8);}return _0x24129d[_0x53e2('0x2a')](_0x378ed8)['end']();};}function respondWithResult(_0x15cf35,_0x82c990){_0x82c990=_0x82c990||0xc8;return function(_0x52a0a1){if(_0x52a0a1){return _0x15cf35['status'](_0x82c990)[_0x53e2('0x2b')](_0x52a0a1);}};}function respondWithFilteredResult(_0x2304bc,_0x56304a){return function(_0x201ec7){if(_0x201ec7){var _0x29656b=typeof _0x56304a[_0x53e2('0x2c')]==='undefined'&&typeof _0x56304a[_0x53e2('0x2d')]===_0x53e2('0x2e');var _0x4be1e6=_0x201ec7[_0x53e2('0x2f')];var _0x49dcea=_0x29656b?0x0:_0x56304a['offset'];var _0x30c770=_0x29656b?_0x201ec7['count']:_0x56304a['offset']+_0x56304a['limit'];var _0x36e108;if(_0x30c770>=_0x4be1e6){_0x30c770=_0x4be1e6;_0x36e108=0xc8;}else{_0x36e108=0xce;}_0x2304bc[_0x53e2('0x2a')](_0x36e108);return _0x2304bc['set'](_0x53e2('0x30'),_0x49dcea+'-'+_0x30c770+'/'+_0x4be1e6)[_0x53e2('0x2b')](_0x201ec7);}return null;};}function patchUpdates(_0x396fc3){return function(_0x1829c8){try{jsonpatch[_0x53e2('0x31')](_0x1829c8,_0x396fc3,!![]);}catch(_0x21cbc1){return BPromise['reject'](_0x21cbc1);}return _0x1829c8[_0x53e2('0x32')]();};}function saveUpdates(_0x124a53,_0x5d8f04){return function(_0x420e25){if(_0x420e25){return _0x420e25['update'](_0x124a53)[_0x53e2('0x1f')](function(_0xb233f){return _0xb233f;});}return null;};}function removeEntity(_0xdfebcd,_0x36bd0f){return function(_0x271a53){if(_0x271a53){return _0x271a53['destroy']()[_0x53e2('0x1f')](function(){_0xdfebcd[_0x53e2('0x2a')](0xcc)[_0x53e2('0x33')]();});}};}function handleEntityNotFound(_0x274711,_0x641a07){return function(_0x20435e){if(!_0x20435e){_0x274711[_0x53e2('0x29')](0x194);}return _0x20435e;};}function handleError(_0x1fa0d9,_0x18781f){_0x18781f=_0x18781f||0x1f4;return function(_0x5a1496){logger[_0x53e2('0x24')](_0x5a1496[_0x53e2('0x34')]);if(_0x5a1496['name']){delete _0x5a1496['name'];}_0x1fa0d9[_0x53e2('0x2a')](_0x18781f)[_0x53e2('0x35')](_0x5a1496);};}exports[_0x53e2('0x36')]=function(_0x583203,_0x303c19){var _0xb86d84={},_0x45446a={},_0x6f4a5d={'count':0x0,'rows':[]};var _0x534df8=_['map'](db[_0x53e2('0x37')][_0x53e2('0x38')],function(_0x4a15b1){return{'name':_0x4a15b1[_0x53e2('0x39')],'type':_0x4a15b1[_0x53e2('0x3a')]['key']};});_0x45446a['model']=_[_0x53e2('0x3b')](_0x534df8,_0x53e2('0x3c'));_0x45446a[_0x53e2('0x3d')]=_[_0x53e2('0x3e')](_0x583203[_0x53e2('0x3d')]);_0x45446a[_0x53e2('0x3f')]=_[_0x53e2('0x40')](_0x45446a[_0x53e2('0x41')],_0x45446a[_0x53e2('0x3d')]);_0xb86d84[_0x53e2('0x42')]=_[_0x53e2('0x40')](_0x45446a[_0x53e2('0x41')],qs[_0x53e2('0x43')](_0x583203[_0x53e2('0x3d')]['fields']));_0xb86d84[_0x53e2('0x42')]=_0xb86d84['attributes'][_0x53e2('0x44')]?_0xb86d84[_0x53e2('0x42')]:_0x45446a[_0x53e2('0x41')];if(!_0x583203[_0x53e2('0x3d')]['hasOwnProperty'](_0x53e2('0x45'))){_0xb86d84[_0x53e2('0x2d')]=qs[_0x53e2('0x2d')](_0x583203[_0x53e2('0x3d')][_0x53e2('0x2d')]);_0xb86d84[_0x53e2('0x2c')]=qs[_0x53e2('0x2c')](_0x583203[_0x53e2('0x3d')][_0x53e2('0x2c')]);}_0xb86d84[_0x53e2('0x46')]=qs['sort'](_0x583203[_0x53e2('0x3d')][_0x53e2('0x47')]);_0xb86d84['where']=qs['filters'](_[_0x53e2('0x48')](_0x583203[_0x53e2('0x3d')],_0x45446a['filters']),_0x534df8);if(_0x583203['query'][_0x53e2('0x49')]){_0xb86d84['where']=_[_0x53e2('0x4a')](_0xb86d84[_0x53e2('0x4b')],{'$or':_[_0x53e2('0x3b')](_0x534df8,function(_0x227505){if(_0x227505[_0x53e2('0x3a')]!==_0x53e2('0x4c')){var _0x140da4={};_0x140da4[_0x227505[_0x53e2('0x3c')]]={'$like':'%'+_0x583203[_0x53e2('0x3d')][_0x53e2('0x49')]+'%'};return _0x140da4;}})});}_0xb86d84=_['merge']({},_0xb86d84,_0x583203[_0x53e2('0x4d')]);var _0x15d848={'where':_0xb86d84[_0x53e2('0x4b')]};return db[_0x53e2('0x37')]['count'](_0x15d848)[_0x53e2('0x1f')](function(_0x55584c){_0x6f4a5d[_0x53e2('0x2f')]=_0x55584c;if(_0x583203[_0x53e2('0x3d')]['includeAll']){_0xb86d84[_0x53e2('0x4e')]=[{'all':!![]}];}return db[_0x53e2('0x37')][_0x53e2('0x4f')](_0xb86d84);})['then'](function(_0xd7371c){_0x6f4a5d[_0x53e2('0x50')]=_0xd7371c;return _0x6f4a5d;})[_0x53e2('0x1f')](respondWithFilteredResult(_0x303c19,_0xb86d84))['catch'](handleError(_0x303c19,null));};exports['show']=function(_0x478891,_0x25561b){var _0x55f538={'raw':!![],'where':{'id':_0x478891['params']['id']}},_0x138eee={};_0x138eee[_0x53e2('0x41')]=_[_0x53e2('0x3e')](db[_0x53e2('0x37')][_0x53e2('0x38')]);_0x138eee[_0x53e2('0x3d')]=_['keys'](_0x478891[_0x53e2('0x3d')]);_0x138eee[_0x53e2('0x3f')]=_[_0x53e2('0x40')](_0x138eee[_0x53e2('0x41')],_0x138eee[_0x53e2('0x3d')]);_0x55f538[_0x53e2('0x42')]=_[_0x53e2('0x40')](_0x138eee['model'],qs[_0x53e2('0x43')](_0x478891[_0x53e2('0x3d')][_0x53e2('0x43')]));_0x55f538[_0x53e2('0x42')]=_0x55f538[_0x53e2('0x42')][_0x53e2('0x44')]?_0x55f538[_0x53e2('0x42')]:_0x138eee[_0x53e2('0x41')];if(_0x478891[_0x53e2('0x3d')][_0x53e2('0x51')]){_0x55f538['include']=[{'all':!![]}];}_0x55f538=_[_0x53e2('0x4a')]({},_0x55f538,_0x478891[_0x53e2('0x4d')]);return db['WhatsappMessage']['find'](_0x55f538)[_0x53e2('0x1f')](handleEntityNotFound(_0x25561b,null))[_0x53e2('0x1f')](respondWithResult(_0x25561b,null))[_0x53e2('0x28')](handleError(_0x25561b,null));};exports[_0x53e2('0x52')]=function(_0x2ba8b6,_0x4a73eb){return db[_0x53e2('0x37')][_0x53e2('0x52')](_0x2ba8b6[_0x53e2('0x53')],{})['then'](respondWithResult(_0x4a73eb,0xc9))[_0x53e2('0x28')](handleError(_0x4a73eb,null));};exports[_0x53e2('0x54')]=function(_0x1c2bff,_0x3c5ab9){if(_0x1c2bff[_0x53e2('0x53')]['id']){delete _0x1c2bff[_0x53e2('0x53')]['id'];}return db[_0x53e2('0x37')]['find']({'where':{'id':_0x1c2bff[_0x53e2('0x55')]['id']}})['then'](handleEntityNotFound(_0x3c5ab9,null))['then'](saveUpdates(_0x1c2bff[_0x53e2('0x53')],null))[_0x53e2('0x1f')](respondWithResult(_0x3c5ab9,null))[_0x53e2('0x28')](handleError(_0x3c5ab9,null));};exports[_0x53e2('0x56')]=function(_0x4aa084,_0x46c0c2){return db[_0x53e2('0x37')]['find']({'where':{'id':_0x4aa084[_0x53e2('0x55')]['id']}})['then'](handleEntityNotFound(_0x46c0c2,null))[_0x53e2('0x1f')](removeEntity(_0x46c0c2,null))[_0x53e2('0x28')](handleError(_0x46c0c2,null));};exports[_0x53e2('0x57')]=function(_0x3cf769,_0x55f3de){return db[_0x53e2('0x37')]['describe']()[_0x53e2('0x1f')](respondWithResult(_0x55f3de,null))[_0x53e2('0x28')](handleError(_0x55f3de,null));};var interaction_log=require(_0x53e2('0x12'))(_0x53e2('0x58'));exports[_0x53e2('0x59')]=function(_0x58b97e,_0x257d42,_0x8efc67){var _0x59df3c={'agent':{},'channel':_0x53e2('0x5a')};if(_0x58b97e[_0x53e2('0x53')]['id']){delete _0x58b97e[_0x53e2('0x53')]['id'];}_0x58b97e[_0x53e2('0x53')][_0x53e2('0x5b')]=!![];_0x58b97e[_0x53e2('0x53')][_0x53e2('0x5c')]=moment()[_0x53e2('0x5d')](_0x53e2('0x5e'));_0x58b97e[_0x53e2('0x53')][_0x53e2('0x5f')]=_0x58b97e[_0x53e2('0x53')][_0x53e2('0x5f')]||_0x58b97e[_0x53e2('0x60')]['id'];_0x59df3c[_0x53e2('0x61')]['id']=_0x58b97e[_0x53e2('0x53')]['UserId'];return db['WhatsappMessage']['find']({'where':{'id':_0x58b97e[_0x53e2('0x55')]['id'],'UserId':null}})[_0x53e2('0x1f')](handleEntityNotFound(_0x257d42,null))[_0x53e2('0x1f')](saveUpdates(_0x58b97e[_0x53e2('0x53')],null))[_0x53e2('0x1f')](function(_0x344082){if(_0x344082){_0x59df3c[_0x53e2('0x26')]=_0x344082[_0x53e2('0x62')]({'plain':!![]});return db['WhatsappInteraction']['find']({'where':{'id':_0x344082[_0x53e2('0x63')]}});}return null;})[_0x53e2('0x1f')](handleEntityNotFound(_0x257d42,null))[_0x53e2('0x1f')](function(_0x3a64b8){if(_0x3a64b8){return _0x3a64b8[_0x53e2('0x54')]({'UserId':_0x58b97e[_0x53e2('0x53')]['UserId'],'read1stAt':_[_0x53e2('0x64')](_0x3a64b8[_0x53e2('0x65')])?moment()[_0x53e2('0x5d')](_0x53e2('0x5e')):undefined});}return null;})[_0x53e2('0x1f')](function(_0x212528){if(_0x212528){_0x59df3c[_0x53e2('0x66')]=_0x212528['get']({'plain':!![]});interaction_log[_0x53e2('0x67')](_0x53e2('0x68'),_0x58b97e['user']['id'],_0x58b97e[_0x53e2('0x60')][_0x53e2('0x3c')],_0x58b97e['user'][_0x53e2('0x69')],_0x59df3c['interaction']['id'],_0x58b97e[_0x53e2('0x53')]?JSON[_0x53e2('0x6a')](_0x58b97e[_0x53e2('0x53')]):'null');return respondWithRpcPromise('AcceptMessage',_0x53e2('0x6b'),_0x59df3c);}return null;})[_0x53e2('0x1f')](function(_0x2cc6cf){var _0x41e84=_0x53e2('0x6c')+_0x2cc6cf[_0x53e2('0x26')][_0x53e2('0x6d')];return db[_0x53e2('0x6e')][_0x53e2('0x3d')](_0x41e84,{'type':db[_0x53e2('0x6f')][_0x53e2('0x70')][_0x53e2('0x71')],'raw':!![]})[_0x53e2('0x1f')](function(_0x17e8d0){return _0x17e8d0;});})[_0x53e2('0x1f')](function(_0x3bd77f){if(_0x3bd77f){_0x59df3c['message'][_0x53e2('0x72')]=_0x3bd77f[0x0];if(!_0x58b97e[_0x53e2('0x53')][_0x53e2('0x5f')])return;return db[_0x53e2('0x73')][_0x53e2('0x74')]({'where':{'id':_0x58b97e[_0x53e2('0x53')]['UserId'],'role':_0x53e2('0x61')},'attributes':['id',_0x53e2('0x3c'),_0x53e2('0x75'),_0x53e2('0x76'),_0x53e2('0x77')],'raw':!![]});}return null;})[_0x53e2('0x1f')](function(_0x455712){if(!_0x455712)return null;_0x59df3c[_0x53e2('0x26')][_0x53e2('0x61')]=_0x455712;return _0x59df3c;})[_0x53e2('0x1f')](function(_0x12acba){if(_0x12acba){if(_0x58b97e[_0x53e2('0x53')]['manual']){_0x59df3c[_0x53e2('0x26')][_0x53e2('0x78')]=util[_0x53e2('0x5d')](_0x53e2('0x79'),_0x58b97e['user'][_0x53e2('0x3c')]);_0x59df3c[_0x53e2('0x26')]['channel']=_0x59df3c[_0x53e2('0x7a')];_0x59df3c[_0x53e2('0x26')][_0x53e2('0x7b')]=_0x59df3c['channel'];_0x59df3c[_0x53e2('0x26')][_0x53e2('0x7c')]=_0x53e2('0x59');return respondWithRpcPromise(_0x53e2('0x7d'),'EventManager',{'event':_0x53e2('0x7e'),'message':_0x59df3c['message']},client9002)[_0x53e2('0x1f')](function(){return _0x59df3c;});}return _0x59df3c;}return null;})[_0x53e2('0x1f')](respondWithResult(_0x257d42,null))[_0x53e2('0x28')](handleError(_0x257d42,null));};var interaction_log=require(_0x53e2('0x12'))(_0x53e2('0x58'));exports[_0x53e2('0x7f')]=function(_0x17dd55,_0x5afcea,_0x5c17cb){var _0x5e8017={'agent':{},'channel':_0x53e2('0x5a')};if(_0x17dd55['body']['id']){delete _0x17dd55['body']['id'];}_0x17dd55['body'][_0x53e2('0x5f')]=_0x17dd55[_0x53e2('0x53')][_0x53e2('0x5f')]||_0x17dd55[_0x53e2('0x60')]['id'];_0x5e8017[_0x53e2('0x61')]['id']=_0x17dd55[_0x53e2('0x53')][_0x53e2('0x5f')];return db['WhatsappMessage']['find']({'where':{'id':_0x17dd55[_0x53e2('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5afcea,null))[_0x53e2('0x1f')](function(_0x356390){if(_0x356390){_0x5e8017[_0x53e2('0x26')]=_0x356390[_0x53e2('0x62')]({'plain':!![]});return db[_0x53e2('0x80')][_0x53e2('0x74')]({'where':{'id':_0x356390[_0x53e2('0x63')]}});}return null;})[_0x53e2('0x1f')](handleEntityNotFound(_0x5afcea,null))[_0x53e2('0x1f')](function(_0x4b91d6){if(_0x4b91d6){_0x5e8017[_0x53e2('0x66')]=_0x4b91d6[_0x53e2('0x62')]({'plain':!![]});interaction_log[_0x53e2('0x67')](_0x53e2('0x81'),_0x17dd55[_0x53e2('0x60')]['id'],_0x17dd55[_0x53e2('0x60')][_0x53e2('0x3c')],_0x17dd55[_0x53e2('0x60')][_0x53e2('0x69')],_0x5e8017[_0x53e2('0x66')]['id'],_0x17dd55[_0x53e2('0x53')]?JSON[_0x53e2('0x6a')](_0x17dd55['body']):_0x53e2('0x82'));return respondWithRpcPromise('RejectMessage',_0x53e2('0x83'),_0x5e8017);}return null;})[_0x53e2('0x1f')](function(_0x3a36e1){var _0xe0a191=_0x53e2('0x6c')+_0x3a36e1[_0x53e2('0x26')][_0x53e2('0x6d')];return db[_0x53e2('0x6e')][_0x53e2('0x3d')](_0xe0a191,{'type':db[_0x53e2('0x6f')][_0x53e2('0x70')][_0x53e2('0x71')],'raw':!![]})['then'](function(_0x3a8683){return _0x3a8683;});})['then'](function(_0x2eae74){if(_0x2eae74){_0x5e8017[_0x53e2('0x26')][_0x53e2('0x72')]=_0x2eae74[0x0];if(!_0x17dd55['body'][_0x53e2('0x5f')])return;return db[_0x53e2('0x73')]['find']({'where':{'id':_0x17dd55['body'][_0x53e2('0x5f')],'role':_0x53e2('0x61')},'attributes':['id','name',_0x53e2('0x75'),_0x53e2('0x76'),_0x53e2('0x77')],'raw':!![]});}return null;})['then'](function(_0x4a153e){if(!_0x4a153e)return null;_0x5e8017[_0x53e2('0x26')][_0x53e2('0x61')]=_0x4a153e;return _0x5e8017;})[_0x53e2('0x1f')](function(_0x10aea7){if(_0x10aea7){_0x10aea7[_0x53e2('0x26')][_0x53e2('0x78')]=util['format']('SIP/%s',_0x17dd55['user']['name']);_0x10aea7['message'][_0x53e2('0x7a')]=_0x5e8017[_0x53e2('0x7a')];_0x10aea7['message'][_0x53e2('0x7b')]=_0x5e8017['channel'];_0x10aea7['message'][_0x53e2('0x7c')]=_0x53e2('0x7f');respondWithRpcPromise(_0x53e2('0x7d'),_0x53e2('0x7d'),{'event':_0x53e2('0x84'),'message':_0x10aea7[_0x53e2('0x26')]},client9002);return _0x5e8017;}return null;})['then'](respondWithResult(_0x5afcea,null))[_0x53e2('0x28')](handleError(_0x5afcea,null));};exports[_0x53e2('0x2a')]=function(_0x5d3ea1,_0x300dd6,_0x487244){if(_0x5d3ea1[_0x53e2('0x53')]['id']){delete _0x5d3ea1[_0x53e2('0x53')]['id'];}var _0x5e1aae;return db[_0x53e2('0x37')][_0x53e2('0x74')]({'where':{'id':_0x5d3ea1['params']['id']}})[_0x53e2('0x1f')](handleEntityNotFound(_0x300dd6,null))['then'](function(_0xc19c35){if(_0xc19c35){_0x5e1aae=_0xc19c35;return db['WhatsappAccount'][_0x53e2('0x74')]({'where':{'id':_0xc19c35[_0x53e2('0x85')]}});}})[_0x53e2('0x1f')](handleEntityNotFound(_0x300dd6,null))[_0x53e2('0x1f')](function(_0x344c4e){if(_0x344c4e){logger[_0x53e2('0x22')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0x53e2('0x86'),_0x344c4e['type'],util[_0x53e2('0x87')](_0x5d3ea1[_0x53e2('0x53')],{'showHidden':![],'depth':null}));switch(_0x344c4e[_0x53e2('0x3a')]){case _0x53e2('0x88'):if(_0x5d3ea1[_0x53e2('0x53')]['MessageSid']&&_0x5d3ea1[_0x53e2('0x53')][_0x53e2('0x89')]===_0x5e1aae['messageId']&&_0x5d3ea1[_0x53e2('0x53')][_0x53e2('0x8a')]&&_0x5d3ea1['body'][_0x53e2('0x8a')]==='read'){return _0x5e1aae[_0x53e2('0x54')]({'read':!![]});}else{logger['error'](_0x53e2('0x8b'),_0x53e2('0x2a'),'twilio',util[_0x53e2('0x87')](_0x5d3ea1[_0x53e2('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x5e1aae;}})[_0x53e2('0x1f')](respondWithResult(_0x300dd6,null))['catch'](handleError(_0x300dd6,null));};
\ No newline at end of file
index b4f64d2..f99ed4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1752=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x18889d,_0x3e8f9e){var _0x158a70=function(_0x5bc10e){while(--_0x5bc10e){_0x18889d['push'](_0x18889d['shift']());}};_0x158a70(++_0x3e8f9e);}(_0x1752,0xa5));var _0x2175=function(_0x24736c,_0x3d1e1b){_0x24736c=_0x24736c-0x0;var _0x34008e=_0x1752[_0x24736c];return _0x34008e;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x2175('0x0'))['db'][_0x2175('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2175('0x2')](0x0);var events={'afterCreate':_0x2175('0x3'),'afterUpdate':_0x2175('0x4'),'afterDestroy':_0x2175('0x5')};function emitEvent(_0x56c315){return function(_0x1ee277,_0x22c167,_0x12b8d9){WhatsappMessageEvents[_0x2175('0x6')](_0x56c315+':'+_0x1ee277['id'],_0x1ee277);WhatsappMessageEvents[_0x2175('0x6')](_0x56c315,_0x1ee277);_0x12b8d9(null);};}for(var e in events){if(events[_0x2175('0x7')](e)){var event=events[e];WhatsappMessage[_0x2175('0x8')](e,emitEvent(event));}}module[_0x2175('0x9')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x8d05=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','emit','hasOwnProperty','exports'];(function(_0x2d486b,_0x5f213c){var _0x4291d1=function(_0x2cebcb){while(--_0x2cebcb){_0x2d486b['push'](_0x2d486b['shift']());}};_0x4291d1(++_0x5f213c);}(_0x8d05,0xe8));var _0x58d0=function(_0xa8f24a,_0x48d7d3){_0xa8f24a=_0xa8f24a-0x0;var _0x3a1471=_0x8d05[_0xa8f24a];return _0x3a1471;};'use strict';var EventEmitter=require(_0x58d0('0x0'));var WhatsappMessage=require(_0x58d0('0x1'))['db'][_0x58d0('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x58d0('0x3')](0x0);var events={'afterCreate':_0x58d0('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x276e0a){return function(_0x3de956,_0x1a2d82,_0x55f391){WhatsappMessageEvents['emit'](_0x276e0a+':'+_0x3de956['id'],_0x3de956);WhatsappMessageEvents[_0x58d0('0x5')](_0x276e0a,_0x3de956);_0x55f391(null);};}for(var e in events){if(events[_0x58d0('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x58d0('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 7941099..9e23d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe59a=['rimraf','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','toLowerCase','error','find','WhatsappAccountId','type','twilio','accountSid','authToken','create','whatsapp:','phone','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','message_id','err','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','node-fetch','path'];(function(_0x8ef497,_0x40b65d){var _0x1442f1=function(_0x623b25){while(--_0x623b25){_0x8ef497['push'](_0x8ef497['shift']());}};_0x1442f1(++_0x40b65d);}(_0xe59a,0x19f));var _0xae59=function(_0x527ce7,_0x52a5db){_0x527ce7=_0x527ce7-0x0;var _0x223c17=_0xe59a[_0x527ce7];return _0x223c17;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xae59('0x0'))('api');var moment=require(_0xae59('0x1'));var BPromise=require(_0xae59('0x2'));var rp=require('request-promise');var fetch=require(_0xae59('0x3'));var fs=require('fs');var path=require(_0xae59('0x4'));var rimraf=require(_0xae59('0x5'));var config=require('../../config/environment');var attributes=require(_0xae59('0x6'));module[_0xae59('0x7')]=function(_0x5a763c,_0x16b4d3){return _0x5a763c[_0xae59('0x8')](_0xae59('0x9'),attributes,{'tableName':_0xae59('0xa'),'paranoid':![],'indexes':[{'name':_0xae59('0xb'),'fields':[_0xae59('0xb')]},{'name':_0xae59('0xc'),'fields':[_0xae59('0xd')],'type':_0xae59('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x153d37,_0x1bdcdd,_0x4f70bc){var _0x3f102d=_0x5a763c[_0xae59('0xf')];var _0x555051=_0x153d37[_0xae59('0x10')]({'plain':!![]});if(_0x555051[_0xae59('0x11')]['toLowerCase']()==='in'||_0x555051[_0xae59('0x11')]['toLowerCase']()===_0xae59('0x12')&&!_0x555051[_0xae59('0x13')]&&!_[_0xae59('0x14')](_0x555051[_0xae59('0x15')])){_0x3f102d[_0xae59('0x16')]['findOne']({'where':{'id':_0x555051[_0xae59('0x17')]}})[_0xae59('0x18')](function(_0x56a9cf){if(_0x56a9cf){_0x56a9cf[_0xae59('0x19')]({'lastMsgAt':_0x555051[_0xae59('0x1a')],'lastMsgDirection':_0x555051[_0xae59('0x11')][_0xae59('0x1b')]()});}})['catch'](function(_0x47d684){console[_0xae59('0x1c')](_0x47d684);});}if(_0x555051[_0xae59('0x11')]===_0xae59('0x12')&&!_0x555051[_0xae59('0x13')]){var _0x2652cc;_0x3f102d['WhatsappAccount'][_0xae59('0x1d')]({'where':{'id':_0x555051[_0xae59('0x1e')]},'raw':!![]})[_0xae59('0x18')](function(_0x6d4967){_0x2652cc=_0x6d4967;if(_0x2652cc&&_0x2652cc[_0xae59('0x1f')]){switch(_0x2652cc[_0xae59('0x1f')]){case _0xae59('0x20'):var _0x553a49=require(_0xae59('0x20'));if(_0x2652cc[_0xae59('0x21')]&&_0x2652cc[_0xae59('0x22')]&&_0x2652cc['phone']){var _0x401e8d=new _0x553a49(_0x2652cc[_0xae59('0x21')],_0x2652cc[_0xae59('0x22')]);_0x401e8d['messages'][_0xae59('0x23')]({'body':_0x555051[_0xae59('0xd')],'to':_0xae59('0x24')+_0x555051[_0xae59('0x25')],'from':_0xae59('0x24')+_0x2652cc[_0xae59('0x25')],'statusCallback':_0x2652cc[_0xae59('0x26')]+_0xae59('0x27')+_0x555051['id']+_0xae59('0x28')+_0x2652cc[_0xae59('0x29')]})[_0xae59('0x18')](function(_0xcfb97a){if(_0xcfb97a['sid']){return _0x153d37[_0xae59('0x19')]({'messageId':_0xcfb97a[_0xae59('0x2a')]});}})[_0xae59('0x2b')](function(_0x438ba2){logger[_0xae59('0x1c')](_0xae59('0x2c'),'afterCreate',_0xae59('0x20'),util[_0xae59('0x2d')](_0x438ba2,{'showHidden':![],'depth':null}));});}else{logger[_0xae59('0x1c')](_0xae59('0x2c'),'afterCreate',_0xae59('0x20'),_0xae59('0x2e'));}break;case _0xae59('0x2f'):var _0x3127cb=_0x2652cc[_0xae59('0x21')];var _0x32d78b=_0x2652cc[_0xae59('0x22')];var _0x270253=_0x2652cc[_0xae59('0x30')]+_0xae59('0x31')+_0x3127cb+_0xae59('0x32');var _0x44e4cc={'to':[_0x555051[_0xae59('0x25')]],'message':{'type':'text','text':_0x555051[_0xae59('0xd')]}};var _0x252cad={'method':_0xae59('0x33'),'uri':_0x270253,'headers':{'Authorization':_0xae59('0x34')+_0x32d78b,'Content-Type':_0xae59('0x35')},'body':_0x44e4cc,'json':!![]};rp(_0x252cad)[_0xae59('0x18')](function(_0x74aa83){if(_0x74aa83[_0xae59('0x36')][0x0][_0xae59('0x37')]){return _0x153d37[_0xae59('0x19')]({'messageId':_0x74aa83['statuses'][0x0]['message_id']});}})[_0xae59('0x2b')](function(_0x230ffb){logger[_0xae59('0x38')]('WhatsappMessage,\x20%s',_0x230ffb);});break;}}})[_0xae59('0x39')](function(){_0x4f70bc();});}else{_0x4f70bc();}}},'charset':_0xae59('0x3a'),'collate':_0xae59('0x3b')});};
\ No newline at end of file
+var _0x7d0e=['remote','/api/whatsapp/messages/','/status?token=','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','text','Bearer\x20','application/json','statuses','message_id','err','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','catch','error','WhatsappAccount','type','twilio','accountSid','authToken','messages','phone','whatsapp:'];(function(_0x543320,_0x4cf937){var _0x55ce90=function(_0x483ffd){while(--_0x483ffd){_0x543320['push'](_0x543320['shift']());}};_0x55ce90(++_0x4cf937);}(_0x7d0e,0xb2));var _0xe7d0=function(_0x40bac6,_0x3a53c3){_0x40bac6=_0x40bac6-0x0;var _0x4390f7=_0x7d0e[_0x40bac6];return _0x4390f7;};'use strict';var _=require(_0xe7d0('0x0'));var util=require(_0xe7d0('0x1'));var logger=require(_0xe7d0('0x2'))(_0xe7d0('0x3'));var moment=require(_0xe7d0('0x4'));var BPromise=require('bluebird');var rp=require(_0xe7d0('0x5'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xe7d0('0x6'));var rimraf=require(_0xe7d0('0x7'));var config=require('../../config/environment');var attributes=require('./whatsappMessage.attributes');module[_0xe7d0('0x8')]=function(_0x4b9482,_0x52bcf9){return _0x4b9482['define'](_0xe7d0('0x9'),attributes,{'tableName':_0xe7d0('0xa'),'paranoid':![],'indexes':[{'name':_0xe7d0('0xb'),'fields':[_0xe7d0('0xb')]},{'name':_0xe7d0('0xc'),'fields':[_0xe7d0('0xd')],'type':_0xe7d0('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x27474e,_0x5d5be9,_0x3dfe83){var _0x128a07=_0x4b9482[_0xe7d0('0xf')];var _0x339f4e=_0x27474e[_0xe7d0('0x10')]({'plain':!![]});if(_0x339f4e[_0xe7d0('0x11')]['toLowerCase']()==='in'||_0x339f4e[_0xe7d0('0x11')][_0xe7d0('0x12')]()==='out'&&!_0x339f4e[_0xe7d0('0x13')]&&!_[_0xe7d0('0x14')](_0x339f4e[_0xe7d0('0x15')])){_0x128a07[_0xe7d0('0x16')][_0xe7d0('0x17')]({'where':{'id':_0x339f4e[_0xe7d0('0x18')]}})[_0xe7d0('0x19')](function(_0x5b27da){if(_0x5b27da){_0x5b27da[_0xe7d0('0x1a')]({'lastMsgAt':_0x339f4e[_0xe7d0('0x1b')],'lastMsgDirection':_0x339f4e[_0xe7d0('0x11')]['toLowerCase']()});}})[_0xe7d0('0x1c')](function(_0x5a8674){console[_0xe7d0('0x1d')](_0x5a8674);});}if(_0x339f4e[_0xe7d0('0x11')]==='out'&&!_0x339f4e[_0xe7d0('0x13')]){var _0xb0a650;_0x128a07[_0xe7d0('0x1e')]['find']({'where':{'id':_0x339f4e['WhatsappAccountId']},'raw':!![]})[_0xe7d0('0x19')](function(_0x285e23){_0xb0a650=_0x285e23;if(_0xb0a650&&_0xb0a650[_0xe7d0('0x1f')]){switch(_0xb0a650[_0xe7d0('0x1f')]){case _0xe7d0('0x20'):var _0x491191=require(_0xe7d0('0x20'));if(_0xb0a650[_0xe7d0('0x21')]&&_0xb0a650[_0xe7d0('0x22')]&&_0xb0a650['phone']){var _0x110cd6=new _0x491191(_0xb0a650[_0xe7d0('0x21')],_0xb0a650[_0xe7d0('0x22')]);_0x110cd6[_0xe7d0('0x23')]['create']({'body':_0x339f4e['body'],'to':'whatsapp:'+_0x339f4e[_0xe7d0('0x24')],'from':_0xe7d0('0x25')+_0xb0a650[_0xe7d0('0x24')],'statusCallback':_0xb0a650[_0xe7d0('0x26')]+_0xe7d0('0x27')+_0x339f4e['id']+_0xe7d0('0x28')+_0xb0a650['token']})[_0xe7d0('0x19')](function(_0x1c385a){if(_0x1c385a[_0xe7d0('0x29')]){return _0x27474e['update']({'messageId':_0x1c385a['sid']});}})[_0xe7d0('0x1c')](function(_0x3d87ba){logger['error'](_0xe7d0('0x2a'),_0xe7d0('0x2b'),_0xe7d0('0x20'),util['inspect'](_0x3d87ba,{'showHidden':![],'depth':null}));});}else{logger[_0xe7d0('0x1d')](_0xe7d0('0x2a'),'afterCreate','twilio',_0xe7d0('0x2c'));}break;case _0xe7d0('0x2d'):var _0x59fd06=_0xb0a650[_0xe7d0('0x21')];var _0x2b2eb3=_0xb0a650[_0xe7d0('0x22')];var _0x38862d=_0xb0a650[_0xe7d0('0x2e')]+_0xe7d0('0x2f')+_0x59fd06+'/messages/';var _0x14d0d0={'to':[_0x339f4e['phone']],'message':{'type':_0xe7d0('0x30'),'text':_0x339f4e['body']}};var _0x1bffc5={'method':'POST','uri':_0x38862d,'headers':{'Authorization':_0xe7d0('0x31')+_0x2b2eb3,'Content-Type':_0xe7d0('0x32')},'body':_0x14d0d0,'json':!![]};rp(_0x1bffc5)[_0xe7d0('0x19')](function(_0x52e12a){if(_0x52e12a['statuses'][0x0]['message_id']){return _0x27474e[_0xe7d0('0x1a')]({'messageId':_0x52e12a[_0xe7d0('0x33')][0x0][_0xe7d0('0x34')]});}})[_0xe7d0('0x1c')](function(_0x4c6578){logger[_0xe7d0('0x35')]('WhatsappMessage,\x20%s',_0x4c6578);});break;}}})['finally'](function(){_0x3dfe83();});}else{_0x3dfe83();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 58856fb..f4024db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25cb=['request\x20sent','result','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s'];(function(_0x398a22,_0x501fe2){var _0x37467a=function(_0x15e266){while(--_0x15e266){_0x398a22['push'](_0x398a22['shift']());}};_0x37467a(++_0x501fe2);}(_0x25cb,0x17e));var _0xb25c=function(_0x1ac53b,_0x31c1f1){_0x1ac53b=_0x1ac53b-0x0;var _0x6dcc75=_0x25cb[_0x1ac53b];return _0x6dcc75;};'use strict';var _=require(_0xb25c('0x0'));var util=require(_0xb25c('0x1'));var moment=require('moment');var BPromise=require(_0xb25c('0x2'));var rs=require(_0xb25c('0x3'));var fs=require('fs');var Redis=require(_0xb25c('0x4'));var db=require(_0xb25c('0x5'))['db'];var utils=require(_0xb25c('0x6'));var logger=require('../../config/logger')(_0xb25c('0x7'));var config=require('../../config/environment');var jayson=require(_0xb25c('0x8'));var client=jayson[_0xb25c('0x9')][_0xb25c('0xa')]({'port':0x232a});config[_0xb25c('0xb')]=_[_0xb25c('0xc')](config[_0xb25c('0xb')],{'host':_0xb25c('0xd'),'port':0x18eb});var socket=require(_0xb25c('0xe'))(new Redis(config[_0xb25c('0xb')]));require(_0xb25c('0xf'))[_0xb25c('0x10')](socket);function respondWithRpcPromise(_0x2627c8,_0x15b44d,_0x4516d4){return new BPromise(function(_0x598636,_0x391aa){return client['request'](_0x2627c8,_0x4516d4)[_0xb25c('0x11')](function(_0x8d8fcb){logger[_0xb25c('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x15b44d,'request\x20sent');logger[_0xb25c('0x13')](_0xb25c('0x14'),_0x15b44d,'request\x20sent',JSON[_0xb25c('0x15')](_0x8d8fcb));if(_0x8d8fcb[_0xb25c('0x16')]){if(_0x8d8fcb[_0xb25c('0x16')][_0xb25c('0x17')]===0x1f4){logger[_0xb25c('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x15b44d,_0x8d8fcb[_0xb25c('0x16')][_0xb25c('0x18')]);return _0x391aa(_0x8d8fcb[_0xb25c('0x16')][_0xb25c('0x18')]);}logger[_0xb25c('0x16')](_0xb25c('0x19'),_0x15b44d,_0x8d8fcb[_0xb25c('0x16')]['message']);return _0x598636(_0x8d8fcb[_0xb25c('0x16')][_0xb25c('0x18')]);}else{logger[_0xb25c('0x12')](_0xb25c('0x19'),_0x15b44d,_0xb25c('0x1a'));_0x598636(_0x8d8fcb[_0xb25c('0x1b')]['message']);}})[_0xb25c('0x1c')](function(_0x4fe565){logger[_0xb25c('0x16')](_0xb25c('0x19'),_0x15b44d,_0x4fe565);_0x391aa(_0x4fe565);});});}exports[_0xb25c('0x1d')]=function(_0x59debe){var _0x41f1cb=this;return new Promise(function(_0x7100d3,_0x57a6e0){return db[_0xb25c('0x1e')][_0xb25c('0x1f')](_0x59debe['body'],{'raw':_0x59debe[_0xb25c('0x20')]?_0x59debe['options'][_0xb25c('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x23d5ac){logger[_0xb25c('0x12')]('CreateWhatsappMessage',_0x59debe);logger[_0xb25c('0x13')](_0xb25c('0x1d'),_0x59debe,JSON['stringify'](_0x23d5ac));_0x7100d3(_0x23d5ac);})[_0xb25c('0x1c')](function(_0x5916a3){logger[_0xb25c('0x16')](_0xb25c('0x1d'),_0x5916a3['message'],_0x59debe);_0x57a6e0(_0x41f1cb[_0xb25c('0x16')](0x1f4,_0x5916a3[_0xb25c('0x18')]));});});};
\ No newline at end of file
+var _0xa98e=['redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1c38cd,_0x11e41e){var _0x1dbf6f=function(_0x6fb0bf){while(--_0x6fb0bf){_0x1c38cd['push'](_0x1c38cd['shift']());}};_0x1dbf6f(++_0x11e41e);}(_0xa98e,0x152));var _0xea98=function(_0xf5dcda,_0x36afd8){_0xf5dcda=_0xf5dcda-0x0;var _0x1bc0a1=_0xa98e[_0xf5dcda];return _0x1bc0a1;};'use strict';var _=require(_0xea98('0x0'));var util=require(_0xea98('0x1'));var moment=require(_0xea98('0x2'));var BPromise=require(_0xea98('0x3'));var rs=require(_0xea98('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xea98('0x5'))['db'];var utils=require(_0xea98('0x6'));var logger=require(_0xea98('0x7'))(_0xea98('0x8'));var config=require(_0xea98('0x9'));var jayson=require(_0xea98('0xa'));var client=jayson[_0xea98('0xb')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xea98('0xc')],{'host':_0xea98('0xd'),'port':0x18eb});var socket=require(_0xea98('0xe'))(new Redis(config[_0xea98('0xc')]));require(_0xea98('0xf'))[_0xea98('0x10')](socket);function respondWithRpcPromise(_0x2fbad3,_0x1ff486,_0x70aa90){return new BPromise(function(_0x20c213,_0x230f0b){return client['request'](_0x2fbad3,_0x70aa90)['then'](function(_0x4b7000){logger[_0xea98('0x11')]('WhatsappMessage,\x20%s,\x20%s',_0x1ff486,_0xea98('0x12'));logger[_0xea98('0x13')](_0xea98('0x14'),_0x1ff486,_0xea98('0x12'),JSON[_0xea98('0x15')](_0x4b7000));if(_0x4b7000[_0xea98('0x16')]){if(_0x4b7000[_0xea98('0x16')][_0xea98('0x17')]===0x1f4){logger[_0xea98('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x1ff486,_0x4b7000['error']['message']);return _0x230f0b(_0x4b7000[_0xea98('0x16')][_0xea98('0x18')]);}logger['error'](_0xea98('0x19'),_0x1ff486,_0x4b7000[_0xea98('0x16')]['message']);return _0x20c213(_0x4b7000[_0xea98('0x16')][_0xea98('0x18')]);}else{logger[_0xea98('0x11')](_0xea98('0x19'),_0x1ff486,_0xea98('0x12'));_0x20c213(_0x4b7000[_0xea98('0x1a')][_0xea98('0x18')]);}})[_0xea98('0x1b')](function(_0xe690){logger['error'](_0xea98('0x19'),_0x1ff486,_0xe690);_0x230f0b(_0xe690);});});}exports[_0xea98('0x1c')]=function(_0x152e69){var _0x1d2ff9=this;return new Promise(function(_0x3f6617,_0x1f9780){return db[_0xea98('0x1d')][_0xea98('0x1e')](_0x152e69[_0xea98('0x1f')],{'raw':_0x152e69[_0xea98('0x20')]?_0x152e69[_0xea98('0x20')][_0xea98('0x21')]===undefined?!![]:![]:!![]})[_0xea98('0x22')](function(_0x18806a){logger[_0xea98('0x11')](_0xea98('0x1c'),_0x152e69);logger[_0xea98('0x13')](_0xea98('0x1c'),_0x152e69,JSON[_0xea98('0x15')](_0x18806a));_0x3f6617(_0x18806a);})[_0xea98('0x1b')](function(_0x182c01){logger[_0xea98('0x16')](_0xea98('0x1c'),_0x182c01[_0xea98('0x18')],_0x152e69);_0x1f9780(_0x1d2ff9[_0xea98('0x16')](0x1f4,_0x182c01[_0xea98('0x18')]));});});};
\ No newline at end of file
index 12d2f76..c9ccf5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9ed=['save','remove','removeListener','register','whatsappMessage:'];(function(_0x3a28df,_0x32976c){var _0x1aba1b=function(_0x444b34){while(--_0x444b34){_0x3a28df['push'](_0x3a28df['shift']());}};_0x1aba1b(++_0x32976c);}(_0xe9ed,0x16d));var _0xde9e=function(_0x4ac13c,_0x343348){_0x4ac13c=_0x4ac13c-0x0;var _0x173400=_0xe9ed[_0x4ac13c];return _0x173400;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0xde9e('0x0'),_0xde9e('0x1'),'update'];function createListener(_0x3daf18,_0x3048d2){return function(_0x1bc4d2){_0x3048d2['emit'](_0x3daf18,_0x1bc4d2);};}function removeListener(_0x327f1e,_0x5747df){return function(){WhatsappMessageEvents[_0xde9e('0x2')](_0x327f1e,_0x5747df);};}exports[_0xde9e('0x3')]=function(_0x5d2e59){for(var _0xf04e7a=0x0,_0x3dcd02=events['length'];_0xf04e7a<_0x3dcd02;_0xf04e7a++){var _0x8a8a73=events[_0xf04e7a];var _0x396bdb=createListener(_0xde9e('0x4')+_0x8a8a73,_0x5d2e59);WhatsappMessageEvents['on'](_0x8a8a73,_0x396bdb);}};
\ No newline at end of file
+var _0x2b04=['emit','removeListener','register','length','whatsappMessage:','save','update'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x2b04,0x16a));var _0x42b0=function(_0x2176b1,_0x43f3e8){_0x2176b1=_0x2176b1-0x0;var _0x133241=_0x2b04[_0x2176b1];return _0x133241;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x42b0('0x0'),'remove',_0x42b0('0x1')];function createListener(_0xc14877,_0x5f12da){return function(_0x1c817d){_0x5f12da[_0x42b0('0x2')](_0xc14877,_0x1c817d);};}function removeListener(_0x126e3e,_0x5eac87){return function(){WhatsappMessageEvents[_0x42b0('0x3')](_0x126e3e,_0x5eac87);};}exports[_0x42b0('0x4')]=function(_0x343585){for(var _0x5e10d4=0x0,_0x23e2f2=events[_0x42b0('0x5')];_0x5e10d4<_0x23e2f2;_0x5e10d4++){var _0x3b984c=events[_0x5e10d4];var _0x451f0f=createListener(_0x42b0('0x6')+_0x3b984c,_0x343585);WhatsappMessageEvents['on'](_0x3b984c,_0x451f0f);}};
\ No newline at end of file
index 54f1625..7a346f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2908=['getTeams','/:id/users','getAgents','create','post','put','update','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x2c9bd3,_0x234524){var _0x25af6a=function(_0x20cdbd){while(--_0x20cdbd){_0x2c9bd3['push'](_0x2c9bd3['shift']());}};_0x25af6a(++_0x234524);}(_0x2908,0x1be));var _0x8290=function(_0x20bb2c,_0x1f953f){_0x20bb2c=_0x20bb2c-0x0;var _0xc572e7=_0x2908[_0x20bb2c];return _0xc572e7;};'use strict';var multer=require(_0x8290('0x0'));var util=require(_0x8290('0x1'));var path=require(_0x8290('0x2'));var timeout=require(_0x8290('0x3'));var express=require(_0x8290('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8290('0x5'));var interaction=require(_0x8290('0x6'));var config=require(_0x8290('0x7'));var controller=require(_0x8290('0x8'));router[_0x8290('0x9')]('/',auth[_0x8290('0xa')](),controller[_0x8290('0xb')]);router[_0x8290('0x9')](_0x8290('0xc'),auth[_0x8290('0xa')](),controller['describe']);router[_0x8290('0x9')](_0x8290('0xd'),auth[_0x8290('0xa')](),controller[_0x8290('0xe')]);router[_0x8290('0x9')](_0x8290('0xf'),auth[_0x8290('0xa')](),controller[_0x8290('0x10')]);router[_0x8290('0x9')](_0x8290('0x11'),auth[_0x8290('0xa')](),controller[_0x8290('0x12')]);router['get'](_0x8290('0x13'),auth[_0x8290('0xa')](),controller[_0x8290('0x14')]);router['post']('/',auth[_0x8290('0xa')](),controller[_0x8290('0x15')]);router[_0x8290('0x16')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router['post']('/:id/users',auth[_0x8290('0xa')](),controller['addAgents']);router[_0x8290('0x17')]('/:id',auth[_0x8290('0xa')](),controller[_0x8290('0x18')]);router[_0x8290('0x19')](_0x8290('0xd'),auth[_0x8290('0xa')](),controller['destroy']);router[_0x8290('0x19')](_0x8290('0x11'),auth[_0x8290('0xa')](),controller[_0x8290('0x1a')]);router[_0x8290('0x19')]('/:id/users',auth['isAuthenticated'](),controller[_0x8290('0x1b')]);module[_0x8290('0x1c')]=router;
\ No newline at end of file
+var _0xd56c=['destroy','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','/describe','isAuthenticated','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete'];(function(_0x5e9f20,_0x545f7b){var _0x13aeaa=function(_0x1a5f9a){while(--_0x1a5f9a){_0x5e9f20['push'](_0x5e9f20['shift']());}};_0x13aeaa(++_0x545f7b);}(_0xd56c,0x1f0));var _0xcd56=function(_0x209d1b,_0x197cc8){_0x209d1b=_0x209d1b-0x0;var _0x2a80e9=_0xd56c[_0x209d1b];return _0x2a80e9;};'use strict';var multer=require(_0xcd56('0x0'));var util=require(_0xcd56('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcd56('0x2'));var router=express[_0xcd56('0x3')]();var fs_extra=require(_0xcd56('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcd56('0x5'));var config=require(_0xcd56('0x6'));var controller=require(_0xcd56('0x7'));router[_0xcd56('0x8')]('/',auth['isAuthenticated'](),controller[_0xcd56('0x9')]);router[_0xcd56('0x8')](_0xcd56('0xa'),auth[_0xcd56('0xb')](),controller['describe']);router[_0xcd56('0x8')](_0xcd56('0xc'),auth[_0xcd56('0xb')](),controller['show']);router['get'](_0xcd56('0xd'),auth[_0xcd56('0xb')](),controller[_0xcd56('0xe')]);router[_0xcd56('0x8')](_0xcd56('0xf'),auth[_0xcd56('0xb')](),controller[_0xcd56('0x10')]);router[_0xcd56('0x8')](_0xcd56('0x11'),auth['isAuthenticated'](),controller[_0xcd56('0x12')]);router[_0xcd56('0x13')]('/',auth[_0xcd56('0xb')](),controller[_0xcd56('0x14')]);router[_0xcd56('0x13')](_0xcd56('0xf'),auth[_0xcd56('0xb')](),controller[_0xcd56('0x15')]);router['post'](_0xcd56('0x11'),auth[_0xcd56('0xb')](),controller[_0xcd56('0x16')]);router[_0xcd56('0x17')](_0xcd56('0xc'),auth[_0xcd56('0xb')](),controller[_0xcd56('0x18')]);router[_0xcd56('0x19')]('/:id',auth[_0xcd56('0xb')](),controller[_0xcd56('0x1a')]);router[_0xcd56('0x19')](_0xcd56('0xf'),auth['isAuthenticated'](),controller['removeTeams']);router['delete']('/:id/users',auth[_0xcd56('0xb')](),controller[_0xcd56('0x1b')]);module[_0xcd56('0x1c')]=router;
\ No newline at end of file
index 5aa4caa..075fab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b7=['STRING','rrmemory','beepall','roundrobin','sequelize'];(function(_0x445101,_0x2414bf){var _0x3c3d04=function(_0x249067){while(--_0x249067){_0x445101['push'](_0x445101['shift']());}};_0x3c3d04(++_0x2414bf);}(_0x99b7,0x14e));var _0x799b=function(_0x3c504b,_0x437693){_0x3c504b=_0x3c504b-0x0;var _0x2e5354=_0x99b7[_0x3c504b];return _0x2e5354;};'use strict';var Sequelize=require(_0x799b('0x0'));module['exports']={'name':{'type':Sequelize[_0x799b('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x799b('0x2'),_0x799b('0x3'),_0x799b('0x4'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x34b2=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x146ad2,_0x11d2fc){var _0x56b9fa=function(_0xf7695a){while(--_0xf7695a){_0x146ad2['push'](_0x146ad2['shift']());}};_0x56b9fa(++_0x11d2fc);}(_0x34b2,0x11c));var _0x234b=function(_0x57f802,_0x51b159){_0x57f802=_0x57f802-0x0;var _0x324c9b=_0x34b2[_0x57f802];return _0x324c9b;};'use strict';var Sequelize=require(_0x234b('0x0'));module[_0x234b('0x1')]={'name':{'type':Sequelize[_0x234b('0x2')],'unique':_0x234b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x234b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x234b('0x5')](_0x234b('0x6'),_0x234b('0x7'),_0x234b('0x8'))},'description':{'type':Sequelize[_0x234b('0x2')]}};
\ No newline at end of file
index caeadf8..1af9e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eed=['format','%s/%s','whatsappPause','Team','getTeams','addTeams','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','select','field','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','ids','isEmpty','removeAgents','addAgents','omit','spread','userWhatsappQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','WhatsappQueues','end','error','name','send','index','map','WhatsappQueue','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','create','body','user','get','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getMembers','UserWhatsappQueue','order','sort','User','findAndCountAll','UserId','agent','updatedAt','createdAt'];(function(_0x49f899,_0x1f3e7d){var _0x5c0402=function(_0x4960d0){while(--_0x4960d0){_0x49f899['push'](_0x49f899['shift']());}};_0x5c0402(++_0x1f3e7d);}(_0x5eed,0x1ce));var _0xd5ee=function(_0x44054a,_0x348230){_0x44054a=_0x44054a-0x0;var _0x4cb9f0=_0x5eed[_0x44054a];return _0x4cb9f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd5ee('0x0'));var zipdir=require(_0xd5ee('0x1'));var jsonpatch=require(_0xd5ee('0x2'));var rp=require(_0xd5ee('0x3'));var moment=require(_0xd5ee('0x4'));var BPromise=require(_0xd5ee('0x5'));var Mustache=require(_0xd5ee('0x6'));var util=require(_0xd5ee('0x7'));var path=require(_0xd5ee('0x8'));var sox=require(_0xd5ee('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd5ee('0xa'));var _=require(_0xd5ee('0xb'));var squel=require(_0xd5ee('0xc'));var crypto=require(_0xd5ee('0xd'));var jsforce=require(_0xd5ee('0xe'));var deskjs=require(_0xd5ee('0xf'));var toCsv=require(_0xd5ee('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd5ee('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd5ee('0x12'));var as=require(_0xd5ee('0x13'));var hardwareService=require(_0xd5ee('0x14'));var logger=require(_0xd5ee('0x15'))('api');var utils=require(_0xd5ee('0x16'));var config=require(_0xd5ee('0x17'));var licenseUtil=require(_0xd5ee('0x18'));var db=require(_0xd5ee('0x19'))['db'];config[_0xd5ee('0x1a')]=_[_0xd5ee('0x1b')](config['redis'],{'host':_0xd5ee('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappQueue.socket')[_0xd5ee('0x1d')](socket);function respondWithStatusCode(_0x15ec9e,_0x4a0d1d){_0x4a0d1d=_0x4a0d1d||0xcc;return function(_0x5c8d71){if(_0x5c8d71){return _0x15ec9e[_0xd5ee('0x1e')](_0x4a0d1d);}return _0x15ec9e[_0xd5ee('0x1f')](_0x4a0d1d)['end']();};}function respondWithResult(_0x5886f6,_0x48912d){_0x48912d=_0x48912d||0xc8;return function(_0x218770){if(_0x218770){return _0x5886f6[_0xd5ee('0x1f')](_0x48912d)[_0xd5ee('0x20')](_0x218770);}};}function respondWithFilteredResult(_0x62f41d,_0x2166cd){return function(_0x2cc298){if(_0x2cc298){var _0x4ab5d3=typeof _0x2166cd[_0xd5ee('0x21')]===_0xd5ee('0x22')&&typeof _0x2166cd[_0xd5ee('0x23')]===_0xd5ee('0x22');var _0x54644d=_0x2cc298[_0xd5ee('0x24')];var _0x346d94=_0x4ab5d3?0x0:_0x2166cd[_0xd5ee('0x21')];var _0x18c670=_0x4ab5d3?_0x2cc298[_0xd5ee('0x24')]:_0x2166cd['offset']+_0x2166cd[_0xd5ee('0x23')];var _0x352991;if(_0x18c670>=_0x54644d){_0x18c670=_0x54644d;_0x352991=0xc8;}else{_0x352991=0xce;}_0x62f41d[_0xd5ee('0x1f')](_0x352991);return _0x62f41d[_0xd5ee('0x25')](_0xd5ee('0x26'),_0x346d94+'-'+_0x18c670+'/'+_0x54644d)['json'](_0x2cc298);}return null;};}function patchUpdates(_0x19c3c0){return function(_0x5da902){try{jsonpatch[_0xd5ee('0x27')](_0x5da902,_0x19c3c0,!![]);}catch(_0x1163d1){return BPromise['reject'](_0x1163d1);}return _0x5da902[_0xd5ee('0x28')]();};}function saveUpdates(_0x179cc8,_0x5e5717){return function(_0x279a03){if(_0x279a03){return _0x279a03['update'](_0x179cc8)[_0xd5ee('0x29')](function(_0x3026cd){return _0x3026cd;});}return null;};}function removeEntity(_0x263ed4,_0x5e6469){return function(_0x4c07ce){if(_0x4c07ce){return _0x4c07ce[_0xd5ee('0x2a')]()['then'](function(){var _0x15a247=_0x4c07ce['get']({'plain':!![]});var _0x5eae78=_0xd5ee('0x2b');return db['UserProfileResource'][_0xd5ee('0x2a')]({'where':{'type':_0x5eae78,'resourceId':_0x15a247['id']}})[_0xd5ee('0x29')](function(){return _0x4c07ce;});})[_0xd5ee('0x29')](function(){_0x263ed4[_0xd5ee('0x1f')](0xcc)[_0xd5ee('0x2c')]();});}};}function handleEntityNotFound(_0x254678,_0x3427a4){return function(_0x36cce1){if(!_0x36cce1){_0x254678[_0xd5ee('0x1e')](0x194);}return _0x36cce1;};}function handleError(_0x137c07,_0x53158d){_0x53158d=_0x53158d||0x1f4;return function(_0x4f4558){logger[_0xd5ee('0x2d')](_0x4f4558['stack']);if(_0x4f4558['name']){delete _0x4f4558[_0xd5ee('0x2e')];}_0x137c07[_0xd5ee('0x1f')](_0x53158d)[_0xd5ee('0x2f')](_0x4f4558);};}exports[_0xd5ee('0x30')]=function(_0xc0bdff,_0x38872e){var _0x43de60={},_0x297ed6={},_0x4baa48={'count':0x0,'rows':[]};var _0x470b0c=_[_0xd5ee('0x31')](db[_0xd5ee('0x32')][_0xd5ee('0x33')],function(_0x513b84){return{'name':_0x513b84['fieldName'],'type':_0x513b84[_0xd5ee('0x34')][_0xd5ee('0x35')]};});_0x297ed6[_0xd5ee('0x36')]=_[_0xd5ee('0x31')](_0x470b0c,_0xd5ee('0x2e'));_0x297ed6[_0xd5ee('0x37')]=_[_0xd5ee('0x38')](_0xc0bdff['query']);_0x297ed6[_0xd5ee('0x39')]=_[_0xd5ee('0x3a')](_0x297ed6[_0xd5ee('0x36')],_0x297ed6[_0xd5ee('0x37')]);_0x43de60['attributes']=_['intersection'](_0x297ed6[_0xd5ee('0x36')],qs[_0xd5ee('0x3b')](_0xc0bdff[_0xd5ee('0x37')][_0xd5ee('0x3b')]));_0x43de60[_0xd5ee('0x3c')]=_0x43de60[_0xd5ee('0x3c')][_0xd5ee('0x3d')]?_0x43de60[_0xd5ee('0x3c')]:_0x297ed6[_0xd5ee('0x36')];if(!_0xc0bdff[_0xd5ee('0x37')][_0xd5ee('0x3e')](_0xd5ee('0x3f'))){_0x43de60['limit']=qs[_0xd5ee('0x23')](_0xc0bdff[_0xd5ee('0x37')][_0xd5ee('0x23')]);_0x43de60[_0xd5ee('0x21')]=qs['offset'](_0xc0bdff[_0xd5ee('0x37')]['offset']);}_0x43de60['order']=qs['sort'](_0xc0bdff[_0xd5ee('0x37')]['sort']);_0x43de60[_0xd5ee('0x40')]=qs['filters'](_[_0xd5ee('0x41')](_0xc0bdff['query'],_0x297ed6[_0xd5ee('0x39')]),_0x470b0c);if(_0xc0bdff['query'][_0xd5ee('0x42')]){_0x43de60[_0xd5ee('0x40')]=_[_0xd5ee('0x43')](_0x43de60['where'],{'$or':_[_0xd5ee('0x31')](_0x470b0c,function(_0x51eec0){if(_0x51eec0[_0xd5ee('0x34')]!==_0xd5ee('0x44')){var _0x113b51={};_0x113b51[_0x51eec0[_0xd5ee('0x2e')]]={'$like':'%'+_0xc0bdff[_0xd5ee('0x37')]['filter']+'%'};return _0x113b51;}})});}_0x43de60=_[_0xd5ee('0x43')]({},_0x43de60,_0xc0bdff[_0xd5ee('0x45')]);var _0x2205a5={'where':_0x43de60[_0xd5ee('0x40')]};return db[_0xd5ee('0x32')][_0xd5ee('0x24')](_0x2205a5)[_0xd5ee('0x29')](function(_0x2ece0d){_0x4baa48['count']=_0x2ece0d;if(_0xc0bdff[_0xd5ee('0x37')][_0xd5ee('0x46')]){_0x43de60['include']=[{'all':!![]}];}return db[_0xd5ee('0x32')][_0xd5ee('0x47')](_0x43de60);})[_0xd5ee('0x29')](function(_0x48fba8){_0x4baa48[_0xd5ee('0x48')]=_0x48fba8;return _0x4baa48;})['then'](respondWithFilteredResult(_0x38872e,_0x43de60))[_0xd5ee('0x49')](handleError(_0x38872e,null));};exports[_0xd5ee('0x4a')]=function(_0x5c6b7a,_0xc25167){var _0x48f86b={'raw':!![],'where':{'id':_0x5c6b7a[_0xd5ee('0x4b')]['id']}},_0x4b9402={};_0x4b9402[_0xd5ee('0x36')]=_[_0xd5ee('0x38')](db[_0xd5ee('0x32')][_0xd5ee('0x33')]);_0x4b9402[_0xd5ee('0x37')]=_[_0xd5ee('0x38')](_0x5c6b7a['query']);_0x4b9402[_0xd5ee('0x39')]=_[_0xd5ee('0x3a')](_0x4b9402[_0xd5ee('0x36')],_0x4b9402[_0xd5ee('0x37')]);_0x48f86b[_0xd5ee('0x3c')]=_[_0xd5ee('0x3a')](_0x4b9402[_0xd5ee('0x36')],qs['fields'](_0x5c6b7a[_0xd5ee('0x37')][_0xd5ee('0x3b')]));_0x48f86b[_0xd5ee('0x3c')]=_0x48f86b[_0xd5ee('0x3c')][_0xd5ee('0x3d')]?_0x48f86b[_0xd5ee('0x3c')]:_0x4b9402[_0xd5ee('0x36')];if(_0x5c6b7a[_0xd5ee('0x37')][_0xd5ee('0x46')]){_0x48f86b[_0xd5ee('0x4c')]=[{'all':!![]}];}_0x48f86b=_[_0xd5ee('0x43')]({},_0x48f86b,_0x5c6b7a[_0xd5ee('0x45')]);return db[_0xd5ee('0x32')]['find'](_0x48f86b)[_0xd5ee('0x29')](handleEntityNotFound(_0xc25167,null))[_0xd5ee('0x29')](respondWithResult(_0xc25167,null))[_0xd5ee('0x49')](handleError(_0xc25167,null));};exports['create']=function(_0x51c833,_0x50d2ee){return db['WhatsappQueue'][_0xd5ee('0x4d')](_0x51c833[_0xd5ee('0x4e')],{})[_0xd5ee('0x29')](function(_0x533322){var _0x431727=_0x51c833[_0xd5ee('0x4f')][_0xd5ee('0x50')]({'plain':!![]});if(!_0x431727)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x431727[_0xd5ee('0x51')]==='user'){var _0x226a88=_0x533322[_0xd5ee('0x50')]({'plain':!![]});var _0xb9486e=_0xd5ee('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0xb9486e,'userProfileId':_0x431727[_0xd5ee('0x52')]},'raw':!![]})[_0xd5ee('0x29')](function(_0x58b69d){if(_0x58b69d&&_0x58b69d[_0xd5ee('0x53')]===0x0){return db[_0xd5ee('0x54')][_0xd5ee('0x4d')]({'name':_0x226a88[_0xd5ee('0x2e')],'resourceId':_0x226a88['id'],'type':_0x58b69d[_0xd5ee('0x2e')],'sectionId':_0x58b69d['id']},{})[_0xd5ee('0x29')](function(){return _0x533322;});}else{return _0x533322;}})[_0xd5ee('0x49')](function(_0x11a5a6){logger[_0xd5ee('0x2d')](_0xd5ee('0x55'),_0x11a5a6);throw _0x11a5a6;});}return _0x533322;})['then'](respondWithResult(_0x50d2ee,0xc9))[_0xd5ee('0x49')](handleError(_0x50d2ee,null));};exports['update']=function(_0x527845,_0x5d615e){if(_0x527845['body']['id']){delete _0x527845[_0xd5ee('0x4e')]['id'];}return db['WhatsappQueue'][_0xd5ee('0x56')]({'where':{'id':_0x527845[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x5d615e,null))[_0xd5ee('0x29')](saveUpdates(_0x527845[_0xd5ee('0x4e')],null))[_0xd5ee('0x29')](respondWithResult(_0x5d615e,null))[_0xd5ee('0x49')](handleError(_0x5d615e,null));};exports[_0xd5ee('0x2a')]=function(_0x590a15,_0x56ef5b){return db['WhatsappQueue']['find']({'where':{'id':_0x590a15['params']['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x56ef5b,null))[_0xd5ee('0x29')](removeEntity(_0x56ef5b,null))[_0xd5ee('0x49')](handleError(_0x56ef5b,null));};exports[_0xd5ee('0x57')]=function(_0x10d20d,_0x1da7fe){return db[_0xd5ee('0x32')][_0xd5ee('0x57')]()[_0xd5ee('0x29')](respondWithResult(_0x1da7fe,null))['catch'](handleError(_0x1da7fe,null));};exports[_0xd5ee('0x58')]=function(_0x2b16ee,_0x1d237b,_0x47002b){var _0x473cb0={'raw':!![],'where':{}},_0x1375d3={},_0x12c539;return db[_0xd5ee('0x32')]['findOne']({'where':{'id':_0x2b16ee[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x1d237b,null))['then'](function(_0x354865){if(_0x354865){_0x12c539=_0x354865['get']({'plain':!![]});_0x1375d3[_0xd5ee('0x36')]=_[_0xd5ee('0x38')](db[_0xd5ee('0x59')][_0xd5ee('0x33')]);_0x1375d3[_0xd5ee('0x37')]=_[_0xd5ee('0x38')](_0x2b16ee[_0xd5ee('0x37')]);_0x1375d3[_0xd5ee('0x39')]=_[_0xd5ee('0x3a')](_0x1375d3[_0xd5ee('0x36')],_0x1375d3[_0xd5ee('0x37')]);_0x473cb0[_0xd5ee('0x3c')]=_[_0xd5ee('0x3a')](_0x1375d3[_0xd5ee('0x36')],qs['fields'](_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x3b')]));_0x473cb0[_0xd5ee('0x3c')]=_0x473cb0['attributes']['length']?_0x473cb0[_0xd5ee('0x3c')]:_0x1375d3[_0xd5ee('0x36')];if(!_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x3e')](_0xd5ee('0x3f'))){_0x473cb0['limit']=qs[_0xd5ee('0x23')](_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x23')]);_0x473cb0[_0xd5ee('0x21')]=qs[_0xd5ee('0x21')](_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x21')]);}_0x473cb0[_0xd5ee('0x5a')]=qs[_0xd5ee('0x5b')](_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x5b')]);_0x473cb0[_0xd5ee('0x40')]=qs['filters'](_[_0xd5ee('0x41')](_0x2b16ee[_0xd5ee('0x37')],_0x1375d3[_0xd5ee('0x39')]));_0x473cb0[_0xd5ee('0x40')]['WhatsappQueueId']=_0x354865['id'];if(_0x2b16ee['query']['filter']){_0x473cb0['where']=_[_0xd5ee('0x43')](_0x473cb0[_0xd5ee('0x40')],{'$or':_[_0xd5ee('0x31')](_0x473cb0[_0xd5ee('0x3c')],function(_0x24dc68){var _0xf3a824={};_0xf3a824[_0x24dc68]={'$like':'%'+_0x2b16ee[_0xd5ee('0x37')][_0xd5ee('0x42')]+'%'};return _0xf3a824;})});}_0x473cb0=_['merge']({},_0x473cb0,_0x2b16ee[_0xd5ee('0x45')]);return db['UserWhatsappQueue'][_0xd5ee('0x47')](_0x473cb0);}})[_0xd5ee('0x29')](function(_0x290c93){if(_0x290c93){return db[_0xd5ee('0x5c')][_0xd5ee('0x5d')]({'where':{'id':_[_0xd5ee('0x31')](_0x290c93,_0xd5ee('0x5e')),'role':_0xd5ee('0x5f')},'attributes':['id',_0xd5ee('0x2e'),'whatsappPause',_0xd5ee('0x60'),_0xd5ee('0x61')]});}})['then'](function(_0x443d96){if(_0x443d96){return{'count':_0x443d96['count'],'rows':_[_0xd5ee('0x31')](_0x443d96[_0xd5ee('0x48')],function(_0x2f9f78){return{'membername':_0x2f9f78[_0xd5ee('0x2e')],'UserId':_0x2f9f78['id'],'queue_name':_0x12c539[_0xd5ee('0x2e')],'WhatsappQueueId':_0x12c539['id'],'interface':util[_0xd5ee('0x62')](_0xd5ee('0x63'),'SIP',_0x2f9f78[_0xd5ee('0x2e')]),'penalty':0x0,'paused':_0x2f9f78[_0xd5ee('0x64')],'createdAt':_0x2f9f78['createdAt'],'updatedAt':_0x2f9f78[_0xd5ee('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd5ee('0x29')](respondWithFilteredResult(_0x1d237b,_0x473cb0))['catch'](handleError(_0x1d237b,null));};exports['getTeams']=function(_0x33b7fc,_0x1fc32f,_0x17dc6a){var _0x4ba5c5={};var _0x325e2d={};var _0x489de8;var _0xd23ec3;return db[_0xd5ee('0x32')]['findOne']({'where':{'id':_0x33b7fc[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x1fc32f,null))[_0xd5ee('0x29')](function(_0x139c06){if(_0x139c06){_0x489de8=_0x139c06;_0x325e2d[_0xd5ee('0x36')]=_[_0xd5ee('0x38')](db[_0xd5ee('0x65')][_0xd5ee('0x33')]);_0x325e2d['query']=_[_0xd5ee('0x38')](_0x33b7fc['query']);_0x325e2d[_0xd5ee('0x39')]=_[_0xd5ee('0x3a')](_0x325e2d[_0xd5ee('0x36')],_0x325e2d[_0xd5ee('0x37')]);_0x4ba5c5[_0xd5ee('0x3c')]=_['intersection'](_0x325e2d['model'],qs['fields'](_0x33b7fc[_0xd5ee('0x37')][_0xd5ee('0x3b')]));_0x4ba5c5[_0xd5ee('0x3c')]=_0x4ba5c5['attributes'][_0xd5ee('0x3d')]?_0x4ba5c5[_0xd5ee('0x3c')]:_0x325e2d[_0xd5ee('0x36')];_0x4ba5c5['order']=qs[_0xd5ee('0x5b')](_0x33b7fc[_0xd5ee('0x37')][_0xd5ee('0x5b')]);_0x4ba5c5[_0xd5ee('0x40')]=qs[_0xd5ee('0x39')](_[_0xd5ee('0x41')](_0x33b7fc[_0xd5ee('0x37')],_0x325e2d['filters']));if(_0x33b7fc[_0xd5ee('0x37')][_0xd5ee('0x42')]){_0x4ba5c5['where']=_[_0xd5ee('0x43')](_0x4ba5c5[_0xd5ee('0x40')],{'$or':_[_0xd5ee('0x31')](_0x4ba5c5['attributes'],function(_0x348b94){var _0x454388={};_0x454388[_0x348b94]={'$like':'%'+_0x33b7fc[_0xd5ee('0x37')][_0xd5ee('0x42')]+'%'};return _0x454388;})});}_0x4ba5c5=_[_0xd5ee('0x43')]({},_0x4ba5c5,_0x33b7fc[_0xd5ee('0x45')]);return _0x489de8[_0xd5ee('0x66')](_0x4ba5c5);}})[_0xd5ee('0x29')](function(_0x15d000){if(_0x15d000){_0xd23ec3=_0x15d000[_0xd5ee('0x3d')];if(!_0x33b7fc[_0xd5ee('0x37')]['hasOwnProperty']('nolimit')){_0x4ba5c5[_0xd5ee('0x23')]=qs['limit'](_0x33b7fc[_0xd5ee('0x37')][_0xd5ee('0x23')]);_0x4ba5c5[_0xd5ee('0x21')]=qs['offset'](_0x33b7fc['query'][_0xd5ee('0x21')]);}return _0x489de8[_0xd5ee('0x66')](_0x4ba5c5);}})[_0xd5ee('0x29')](function(_0x400436){if(_0x400436){return _0x400436?{'count':_0xd23ec3,'rows':_0x400436}:null;}})[_0xd5ee('0x29')](respondWithResult(_0x1fc32f,null))[_0xd5ee('0x49')](handleError(_0x1fc32f,null));};exports[_0xd5ee('0x67')]=function(_0x5a21be,_0x384014,_0xe8ae1b){var _0xf9971d=_0x5a21be[_0xd5ee('0x4e')]['ids'];return db[_0xd5ee('0x65')][_0xd5ee('0x47')]({'where':{'id':_0xf9971d},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online',_0xd5ee('0x68'),_0xd5ee('0x69')],'raw':!![]}]})['then'](function(_0x2e635d){if(_0x2e635d){var _0x4c2e89=_[_0xd5ee('0x6a')](_0x2e635d,function(_0x530917){var _0x453948=_0x530917[_0xd5ee('0x50')]({'plain':!![]});return _0x453948[_0xd5ee('0x6b')];});return db[_0xd5ee('0x32')][_0xd5ee('0x56')]({'where':{'id':_0x5a21be[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](function(_0x1f6c02){return db[_0xd5ee('0x6c')][_0xd5ee('0x6d')](function(_0x4ae40e){return _0x1f6c02['addTeams'](_0xf9971d,{'transaction':_0x4ae40e})['then'](function(){return BPromise[_0xd5ee('0x6e')](_0x4c2e89,function(_0x31ff1f){return db[_0xd5ee('0x59')][_0xd5ee('0x6f')]({'where':{'UserId':_0x31ff1f['id'],'WhatsappQueueId':_0x5a21be['params']['id']},'transaction':_0x4ae40e});});})[_0xd5ee('0x29')](function(){_0x4c2e89[_0xd5ee('0x70')](function(_0x47d091){socket[_0xd5ee('0x71')]('userWhatsappQueue:save',{'UserId':_0x47d091['id'],'WhatsappQueueId':_0x1f6c02['id']});});});});});}})[_0xd5ee('0x29')](respondWithStatusCode(_0x384014,null))[_0xd5ee('0x49')](handleError(_0x384014,null));};exports[_0xd5ee('0x72')]=function(_0x4f23f0,_0x22b4f8,_0x1921a9){return db[_0xd5ee('0x65')][_0xd5ee('0x47')]({'where':{'id':_0x4f23f0['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xd5ee('0x5c')],'as':_0xd5ee('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x22b4f8,null))['then'](function(_0x2a097b){var _0x49a1fc=_['map'](_0x2a097b,'id');var _0x507f14=[];var _0x181523=[];var _0x3751e6=squel[_0xd5ee('0x73')]();_0x3751e6[_0xd5ee('0x74')]('tq.TeamId')['from'](_0xd5ee('0x75'),'tq')[_0xd5ee('0x76')](_0xd5ee('0x77'),'ut',_0xd5ee('0x78'))[_0xd5ee('0x40')]('WhatsappQueueId\x20=\x20?',_0x4f23f0[_0xd5ee('0x4b')]['id']);for(var _0x591f01=0x0;_0x591f01<_0x2a097b['length'];_0x591f01+=0x1){let _0x4082b6=_0x2a097b[_0x591f01];for(var _0x3e93b5=0x0;_0x3e93b5<_0x4082b6[_0xd5ee('0x6b')]['length'];_0x3e93b5+=0x1){let _0x14aa5f=_0x4082b6[_0xd5ee('0x6b')][_0x3e93b5];var _0x5ca7bb=_0x3751e6[_0xd5ee('0x79')]();_0x5ca7bb[_0xd5ee('0x40')](_0xd5ee('0x7a'),_0x14aa5f['id']);_0x181523['push'](db['sequelize'][_0xd5ee('0x37')](_0x5ca7bb[_0xd5ee('0x7b')](),{'type':db['sequelize'][_0xd5ee('0x7c')][_0xd5ee('0x7d')]})[_0xd5ee('0x29')](function(_0x16282f){if(_0x16282f[_0xd5ee('0x3d')]===0x1){return _0x14aa5f['id'];}else{var _0x562124=_[_0xd5ee('0x7e')](_[_0xd5ee('0x31')](_0x16282f,'TeamId'),function(_0x1f57e6){return _[_0xd5ee('0x7f')](_0x49a1fc,_0x1f57e6);});if(_0x562124){return _0x14aa5f['id'];}}}));}}return BPromise[_0xd5ee('0x80')](_0x181523)['then'](function(_0x532034){_0x507f14=_(_0x507f14)[_0xd5ee('0x81')](_0x532034)[_0xd5ee('0x82')]()[_0xd5ee('0x83')]();return db[_0xd5ee('0x32')][_0xd5ee('0x56')]({'where':{'id':_0x4f23f0[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](function(_0x2e31f3){return db['sequelize'][_0xd5ee('0x6d')](function(_0x49044c){return _0x2e31f3[_0xd5ee('0x72')](_0x4f23f0[_0xd5ee('0x37')][_0xd5ee('0x84')],{'transaction':_0x49044c})[_0xd5ee('0x29')](function(){if(!_[_0xd5ee('0x85')](_0x507f14)){return _0x2e31f3[_0xd5ee('0x86')](_0x507f14,{'transaction':_0x49044c});}})[_0xd5ee('0x29')](function(){_0x507f14[_0xd5ee('0x70')](function(_0x58f0cc){socket[_0xd5ee('0x71')]('userWhatsappQueue:remove',{'UserId':_0x58f0cc,'WhatsappQueueId':_0x2e31f3['id']});});});});});});})['then'](respondWithStatusCode(_0x22b4f8,null))['catch'](handleError(_0x22b4f8,null));};exports[_0xd5ee('0x87')]=function(_0x1b7e69,_0x1f05a2,_0x734652){return db[_0xd5ee('0x32')][_0xd5ee('0x56')]({'where':{'id':_0x1b7e69[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x1f05a2,null))[_0xd5ee('0x29')](function(_0x339ea0){if(_0x339ea0){return _0x339ea0['addAgents'](_0x1b7e69['body'][_0xd5ee('0x84')],_[_0xd5ee('0x88')](_0x1b7e69[_0xd5ee('0x4e')],[_0xd5ee('0x84'),'id'])||{})[_0xd5ee('0x89')](function(_0x410039){for(var _0x1ee333=0x0;_0x1ee333<_0x1b7e69[_0xd5ee('0x4e')][_0xd5ee('0x84')][_0xd5ee('0x3d')];_0x1ee333+=0x1){socket[_0xd5ee('0x71')]('userWhatsappQueue:save',{'UserId':Number(_0x1b7e69[_0xd5ee('0x4e')][_0xd5ee('0x84')][_0x1ee333]),'WhatsappQueueId':Number(_0x1b7e69[_0xd5ee('0x4b')]['id'])});}return _0x410039;});}})[_0xd5ee('0x29')](respondWithResult(_0x1f05a2,null))[_0xd5ee('0x49')](handleError(_0x1f05a2,null));};exports[_0xd5ee('0x86')]=function(_0x5481f0,_0x154179,_0x36b38){return db[_0xd5ee('0x32')][_0xd5ee('0x56')]({'where':{'id':_0x5481f0['params']['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x154179,null))[_0xd5ee('0x29')](function(_0x48b7cd){if(_0x48b7cd){return _0x48b7cd[_0xd5ee('0x86')](_0x5481f0[_0xd5ee('0x37')]['ids'])[_0xd5ee('0x29')](function(){if(_['isArray'](_0x5481f0[_0xd5ee('0x37')][_0xd5ee('0x84')])){for(var _0x501252=0x0;_0x501252<_0x5481f0[_0xd5ee('0x37')][_0xd5ee('0x84')][_0xd5ee('0x3d')];_0x501252+=0x1){socket[_0xd5ee('0x71')](_0xd5ee('0x8a'),{'UserId':Number(_0x5481f0[_0xd5ee('0x37')][_0xd5ee('0x84')][_0x501252]),'WhatsappQueueId':Number(_0x5481f0[_0xd5ee('0x4b')]['id'])});}}else{socket[_0xd5ee('0x71')](_0xd5ee('0x8a'),{'UserId':Number(_0x5481f0['query'][_0xd5ee('0x84')]),'WhatsappQueueId':Number(_0x5481f0[_0xd5ee('0x4b')]['id'])});}});}})[_0xd5ee('0x29')](respondWithStatusCode(_0x154179,null))['catch'](handleError(_0x154179,null));};exports[_0xd5ee('0x8b')]=function(_0x215efd,_0x40bc63,_0x366af3){var _0x160e6b={};var _0x4f9630={};var _0x1e8cd0;var _0x120c3f;return db[_0xd5ee('0x32')]['findOne']({'where':{'id':_0x215efd[_0xd5ee('0x4b')]['id']}})[_0xd5ee('0x29')](handleEntityNotFound(_0x40bc63,null))[_0xd5ee('0x29')](function(_0x1d23d6){if(_0x1d23d6){_0x1e8cd0=_0x1d23d6;_0x4f9630[_0xd5ee('0x36')]=_['keys'](db['User'][_0xd5ee('0x33')]);_0x4f9630[_0xd5ee('0x37')]=_[_0xd5ee('0x38')](_0x215efd[_0xd5ee('0x37')]);_0x4f9630['filters']=_[_0xd5ee('0x3a')](_0x4f9630[_0xd5ee('0x36')],_0x4f9630['query']);_0x160e6b[_0xd5ee('0x3c')]=_['intersection'](_0x4f9630[_0xd5ee('0x36')],qs[_0xd5ee('0x3b')](_0x215efd[_0xd5ee('0x37')][_0xd5ee('0x3b')]));_0x160e6b[_0xd5ee('0x3c')]=_0x160e6b[_0xd5ee('0x3c')]['length']?_0x160e6b[_0xd5ee('0x3c')]:_0x4f9630[_0xd5ee('0x36')];_0x160e6b[_0xd5ee('0x5a')]=qs['sort'](_0x215efd[_0xd5ee('0x37')][_0xd5ee('0x5b')]);_0x160e6b['where']=qs[_0xd5ee('0x39')](_[_0xd5ee('0x41')](_0x215efd[_0xd5ee('0x37')],_0x4f9630[_0xd5ee('0x39')]));if(_0x215efd[_0xd5ee('0x37')][_0xd5ee('0x42')]){_0x160e6b[_0xd5ee('0x40')]=_[_0xd5ee('0x43')](_0x160e6b[_0xd5ee('0x40')],{'$or':_[_0xd5ee('0x31')](_0x160e6b['attributes'],function(_0x55eb29){var _0x2d03c9={};_0x2d03c9[_0x55eb29]={'$like':'%'+_0x215efd[_0xd5ee('0x37')]['filter']+'%'};return _0x2d03c9;})});}_0x160e6b=_['merge']({},_0x160e6b,_0x215efd[_0xd5ee('0x45')]);return _0x1e8cd0['getAgents'](_0x160e6b);}})['then'](function(_0x4a8056){if(_0x4a8056){_0x120c3f=_0x4a8056[_0xd5ee('0x3d')];if(!_0x215efd[_0xd5ee('0x37')]['hasOwnProperty'](_0xd5ee('0x3f'))){_0x160e6b[_0xd5ee('0x23')]=qs[_0xd5ee('0x23')](_0x215efd[_0xd5ee('0x37')]['limit']);_0x160e6b[_0xd5ee('0x21')]=qs[_0xd5ee('0x21')](_0x215efd['query'][_0xd5ee('0x21')]);}return _0x1e8cd0['getAgents'](_0x160e6b);}})[_0xd5ee('0x29')](function(_0x219f80){if(_0x219f80){return _0x219f80?{'count':_0x120c3f,'rows':_0x219f80}:null;}})[_0xd5ee('0x29')](respondWithResult(_0x40bc63,null))[_0xd5ee('0x49')](handleError(_0x40bc63,null));};
\ No newline at end of file
+var _0xc1a5=['map','WhatsappQueue','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','user','WhatsappQueues','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','UserWhatsappQueue','nolimit','order','findAndCountAll','UserId','updatedAt','format','%s/%s','whatsappPause','createdAt','getTeams','Team','addTeams','ids','User','Agents','online','interface','flatMap','sequelize','transaction','each','emit','userWhatsappQueue:save','removeTeams','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','get','UserProfileResource','error','stack','name','send'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xc1a5,0xe6));var _0x5c1a=function(_0x1b5727,_0x4c524d){_0x1b5727=_0x1b5727-0x0;var _0x365fce=_0xc1a5[_0x1b5727];return _0x365fce;};'use strict';var emlformat=require(_0x5c1a('0x0'));var rimraf=require(_0x5c1a('0x1'));var zipdir=require(_0x5c1a('0x2'));var jsonpatch=require(_0x5c1a('0x3'));var rp=require(_0x5c1a('0x4'));var moment=require(_0x5c1a('0x5'));var BPromise=require(_0x5c1a('0x6'));var Mustache=require(_0x5c1a('0x7'));var util=require(_0x5c1a('0x8'));var path=require(_0x5c1a('0x9'));var sox=require(_0x5c1a('0xa'));var csv=require(_0x5c1a('0xb'));var ejs=require(_0x5c1a('0xc'));var fs=require('fs');var fs_extra=require(_0x5c1a('0xd'));var _=require(_0x5c1a('0xe'));var squel=require(_0x5c1a('0xf'));var crypto=require(_0x5c1a('0x10'));var jsforce=require(_0x5c1a('0x11'));var deskjs=require(_0x5c1a('0x12'));var toCsv=require(_0x5c1a('0xb'));var querystring=require(_0x5c1a('0x13'));var Papa=require(_0x5c1a('0x14'));var Redis=require(_0x5c1a('0x15'));var authService=require(_0x5c1a('0x16'));var qs=require(_0x5c1a('0x17'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5c1a('0x18'));var logger=require(_0x5c1a('0x19'))(_0x5c1a('0x1a'));var utils=require(_0x5c1a('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0x5c1a('0x1c'));var db=require(_0x5c1a('0x1d'))['db'];config[_0x5c1a('0x1e')]=_[_0x5c1a('0x1f')](config[_0x5c1a('0x1e')],{'host':_0x5c1a('0x20'),'port':0x18eb});var socket=require(_0x5c1a('0x21'))(new Redis(config[_0x5c1a('0x1e')]));require(_0x5c1a('0x22'))['register'](socket);function respondWithStatusCode(_0x4eb980,_0xc0ffb3){_0xc0ffb3=_0xc0ffb3||0xcc;return function(_0x342269){if(_0x342269){return _0x4eb980[_0x5c1a('0x23')](_0xc0ffb3);}return _0x4eb980['status'](_0xc0ffb3)[_0x5c1a('0x24')]();};}function respondWithResult(_0x743ae1,_0x52e7e4){_0x52e7e4=_0x52e7e4||0xc8;return function(_0x5c82db){if(_0x5c82db){return _0x743ae1[_0x5c1a('0x25')](_0x52e7e4)['json'](_0x5c82db);}};}function respondWithFilteredResult(_0x123131,_0x2a851b){return function(_0x2ea8f0){if(_0x2ea8f0){var _0x4fc267=typeof _0x2a851b[_0x5c1a('0x26')]===_0x5c1a('0x27')&&typeof _0x2a851b[_0x5c1a('0x28')]===_0x5c1a('0x27');var _0x8c2d01=_0x2ea8f0[_0x5c1a('0x29')];var _0x1fa790=_0x4fc267?0x0:_0x2a851b[_0x5c1a('0x26')];var _0x387da2=_0x4fc267?_0x2ea8f0[_0x5c1a('0x29')]:_0x2a851b[_0x5c1a('0x26')]+_0x2a851b['limit'];var _0x575d40;if(_0x387da2>=_0x8c2d01){_0x387da2=_0x8c2d01;_0x575d40=0xc8;}else{_0x575d40=0xce;}_0x123131['status'](_0x575d40);return _0x123131['set'](_0x5c1a('0x2a'),_0x1fa790+'-'+_0x387da2+'/'+_0x8c2d01)[_0x5c1a('0x2b')](_0x2ea8f0);}return null;};}function patchUpdates(_0x3a426c){return function(_0x19e75b){try{jsonpatch[_0x5c1a('0x2c')](_0x19e75b,_0x3a426c,!![]);}catch(_0x1bcb9f){return BPromise[_0x5c1a('0x2d')](_0x1bcb9f);}return _0x19e75b['save']();};}function saveUpdates(_0x3cfcd1,_0x2a2030){return function(_0x5c72ca){if(_0x5c72ca){return _0x5c72ca[_0x5c1a('0x2e')](_0x3cfcd1)['then'](function(_0x471626){return _0x471626;});}return null;};}function removeEntity(_0x55872e,_0x39bccc){return function(_0x43b4fc){if(_0x43b4fc){return _0x43b4fc['destroy']()[_0x5c1a('0x2f')](function(){var _0x4c5f3a=_0x43b4fc[_0x5c1a('0x30')]({'plain':!![]});var _0x515951='WhatsappQueues';return db[_0x5c1a('0x31')]['destroy']({'where':{'type':_0x515951,'resourceId':_0x4c5f3a['id']}})[_0x5c1a('0x2f')](function(){return _0x43b4fc;});})[_0x5c1a('0x2f')](function(){_0x55872e[_0x5c1a('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51be43,_0x17e66e){return function(_0x3a131e){if(!_0x3a131e){_0x51be43['sendStatus'](0x194);}return _0x3a131e;};}function handleError(_0x2a110e,_0x3d02ca){_0x3d02ca=_0x3d02ca||0x1f4;return function(_0x2c04e4){logger[_0x5c1a('0x32')](_0x2c04e4[_0x5c1a('0x33')]);if(_0x2c04e4[_0x5c1a('0x34')]){delete _0x2c04e4['name'];}_0x2a110e[_0x5c1a('0x25')](_0x3d02ca)[_0x5c1a('0x35')](_0x2c04e4);};}exports['index']=function(_0x5bcdb5,_0x320d37){var _0x9bf642={},_0x6dcc3e={},_0x33843f={'count':0x0,'rows':[]};var _0x45d462=_[_0x5c1a('0x36')](db[_0x5c1a('0x37')][_0x5c1a('0x38')],function(_0x11adf8){return{'name':_0x11adf8['fieldName'],'type':_0x11adf8[_0x5c1a('0x39')][_0x5c1a('0x3a')]};});_0x6dcc3e[_0x5c1a('0x3b')]=_['map'](_0x45d462,_0x5c1a('0x34'));_0x6dcc3e[_0x5c1a('0x3c')]=_[_0x5c1a('0x3d')](_0x5bcdb5['query']);_0x6dcc3e['filters']=_[_0x5c1a('0x3e')](_0x6dcc3e[_0x5c1a('0x3b')],_0x6dcc3e[_0x5c1a('0x3c')]);_0x9bf642['attributes']=_[_0x5c1a('0x3e')](_0x6dcc3e[_0x5c1a('0x3b')],qs[_0x5c1a('0x3f')](_0x5bcdb5['query'][_0x5c1a('0x3f')]));_0x9bf642[_0x5c1a('0x40')]=_0x9bf642[_0x5c1a('0x40')][_0x5c1a('0x41')]?_0x9bf642[_0x5c1a('0x40')]:_0x6dcc3e[_0x5c1a('0x3b')];if(!_0x5bcdb5[_0x5c1a('0x3c')][_0x5c1a('0x42')]('nolimit')){_0x9bf642[_0x5c1a('0x28')]=qs['limit'](_0x5bcdb5[_0x5c1a('0x3c')][_0x5c1a('0x28')]);_0x9bf642[_0x5c1a('0x26')]=qs['offset'](_0x5bcdb5[_0x5c1a('0x3c')]['offset']);}_0x9bf642['order']=qs[_0x5c1a('0x43')](_0x5bcdb5[_0x5c1a('0x3c')]['sort']);_0x9bf642[_0x5c1a('0x44')]=qs['filters'](_[_0x5c1a('0x45')](_0x5bcdb5['query'],_0x6dcc3e[_0x5c1a('0x46')]),_0x45d462);if(_0x5bcdb5['query'][_0x5c1a('0x47')]){_0x9bf642[_0x5c1a('0x44')]=_[_0x5c1a('0x48')](_0x9bf642['where'],{'$or':_[_0x5c1a('0x36')](_0x45d462,function(_0x2520ad){if(_0x2520ad[_0x5c1a('0x39')]!==_0x5c1a('0x49')){var _0x300213={};_0x300213[_0x2520ad[_0x5c1a('0x34')]]={'$like':'%'+_0x5bcdb5['query'][_0x5c1a('0x47')]+'%'};return _0x300213;}})});}_0x9bf642=_[_0x5c1a('0x48')]({},_0x9bf642,_0x5bcdb5[_0x5c1a('0x4a')]);var _0x4ebd23={'where':_0x9bf642[_0x5c1a('0x44')]};return db[_0x5c1a('0x37')][_0x5c1a('0x29')](_0x4ebd23)[_0x5c1a('0x2f')](function(_0x3c44ff){_0x33843f['count']=_0x3c44ff;if(_0x5bcdb5[_0x5c1a('0x3c')][_0x5c1a('0x4b')]){_0x9bf642[_0x5c1a('0x4c')]=[{'all':!![]}];}return db[_0x5c1a('0x37')][_0x5c1a('0x4d')](_0x9bf642);})[_0x5c1a('0x2f')](function(_0x3a87ce){_0x33843f[_0x5c1a('0x4e')]=_0x3a87ce;return _0x33843f;})[_0x5c1a('0x2f')](respondWithFilteredResult(_0x320d37,_0x9bf642))[_0x5c1a('0x4f')](handleError(_0x320d37,null));};exports['show']=function(_0x4ae891,_0x304801){var _0x390b7c={'raw':!![],'where':{'id':_0x4ae891[_0x5c1a('0x50')]['id']}},_0x2f5c59={};_0x2f5c59[_0x5c1a('0x3b')]=_[_0x5c1a('0x3d')](db[_0x5c1a('0x37')][_0x5c1a('0x38')]);_0x2f5c59[_0x5c1a('0x3c')]=_['keys'](_0x4ae891['query']);_0x2f5c59[_0x5c1a('0x46')]=_['intersection'](_0x2f5c59[_0x5c1a('0x3b')],_0x2f5c59[_0x5c1a('0x3c')]);_0x390b7c[_0x5c1a('0x40')]=_[_0x5c1a('0x3e')](_0x2f5c59[_0x5c1a('0x3b')],qs[_0x5c1a('0x3f')](_0x4ae891['query'][_0x5c1a('0x3f')]));_0x390b7c[_0x5c1a('0x40')]=_0x390b7c[_0x5c1a('0x40')][_0x5c1a('0x41')]?_0x390b7c['attributes']:_0x2f5c59[_0x5c1a('0x3b')];if(_0x4ae891[_0x5c1a('0x3c')][_0x5c1a('0x4b')]){_0x390b7c[_0x5c1a('0x4c')]=[{'all':!![]}];}_0x390b7c=_[_0x5c1a('0x48')]({},_0x390b7c,_0x4ae891['options']);return db[_0x5c1a('0x37')]['find'](_0x390b7c)['then'](handleEntityNotFound(_0x304801,null))[_0x5c1a('0x2f')](respondWithResult(_0x304801,null))[_0x5c1a('0x4f')](handleError(_0x304801,null));};exports[_0x5c1a('0x51')]=function(_0x52251,_0x1884bf){return db[_0x5c1a('0x37')]['create'](_0x52251[_0x5c1a('0x52')],{})['then'](function(_0xb5c3d9){var _0x3fdacb=_0x52251[_0x5c1a('0x53')][_0x5c1a('0x30')]({'plain':!![]});if(!_0x3fdacb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3fdacb['role']===_0x5c1a('0x53')){var _0x52a9bd=_0xb5c3d9['get']({'plain':!![]});var _0x10433d=_0x5c1a('0x54');return db[_0x5c1a('0x55')][_0x5c1a('0x56')]({'where':{'name':_0x10433d,'userProfileId':_0x3fdacb[_0x5c1a('0x57')]},'raw':!![]})['then'](function(_0x1083a6){if(_0x1083a6&&_0x1083a6[_0x5c1a('0x58')]===0x0){return db['UserProfileResource'][_0x5c1a('0x51')]({'name':_0x52a9bd[_0x5c1a('0x34')],'resourceId':_0x52a9bd['id'],'type':_0x1083a6[_0x5c1a('0x34')],'sectionId':_0x1083a6['id']},{})['then'](function(){return _0xb5c3d9;});}else{return _0xb5c3d9;}})[_0x5c1a('0x4f')](function(_0x2e77bd){logger[_0x5c1a('0x32')](_0x5c1a('0x59'),_0x2e77bd);throw _0x2e77bd;});}return _0xb5c3d9;})['then'](respondWithResult(_0x1884bf,0xc9))[_0x5c1a('0x4f')](handleError(_0x1884bf,null));};exports[_0x5c1a('0x2e')]=function(_0x2810f2,_0xd6f3b3){if(_0x2810f2['body']['id']){delete _0x2810f2[_0x5c1a('0x52')]['id'];}return db['WhatsappQueue']['find']({'where':{'id':_0x2810f2['params']['id']}})['then'](handleEntityNotFound(_0xd6f3b3,null))[_0x5c1a('0x2f')](saveUpdates(_0x2810f2[_0x5c1a('0x52')],null))['then'](respondWithResult(_0xd6f3b3,null))[_0x5c1a('0x4f')](handleError(_0xd6f3b3,null));};exports[_0x5c1a('0x5a')]=function(_0x2f1184,_0x150b70){return db[_0x5c1a('0x37')][_0x5c1a('0x56')]({'where':{'id':_0x2f1184[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x150b70,null))['then'](removeEntity(_0x150b70,null))[_0x5c1a('0x4f')](handleError(_0x150b70,null));};exports[_0x5c1a('0x5b')]=function(_0x47a97d,_0x3532cc){return db['WhatsappQueue'][_0x5c1a('0x5b')]()['then'](respondWithResult(_0x3532cc,null))[_0x5c1a('0x4f')](handleError(_0x3532cc,null));};exports[_0x5c1a('0x5c')]=function(_0x1375e3,_0x5dd23f,_0x2c82a2){var _0x3088dd={'raw':!![],'where':{}},_0x1977d5={},_0x1403e6;return db['WhatsappQueue'][_0x5c1a('0x5d')]({'where':{'id':_0x1375e3[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x5dd23f,null))['then'](function(_0x2ca1cd){if(_0x2ca1cd){_0x1403e6=_0x2ca1cd[_0x5c1a('0x30')]({'plain':!![]});_0x1977d5[_0x5c1a('0x3b')]=_[_0x5c1a('0x3d')](db[_0x5c1a('0x5e')][_0x5c1a('0x38')]);_0x1977d5[_0x5c1a('0x3c')]=_[_0x5c1a('0x3d')](_0x1375e3[_0x5c1a('0x3c')]);_0x1977d5[_0x5c1a('0x46')]=_[_0x5c1a('0x3e')](_0x1977d5['model'],_0x1977d5['query']);_0x3088dd[_0x5c1a('0x40')]=_[_0x5c1a('0x3e')](_0x1977d5[_0x5c1a('0x3b')],qs[_0x5c1a('0x3f')](_0x1375e3['query'][_0x5c1a('0x3f')]));_0x3088dd[_0x5c1a('0x40')]=_0x3088dd['attributes'][_0x5c1a('0x41')]?_0x3088dd[_0x5c1a('0x40')]:_0x1977d5[_0x5c1a('0x3b')];if(!_0x1375e3[_0x5c1a('0x3c')][_0x5c1a('0x42')](_0x5c1a('0x5f'))){_0x3088dd[_0x5c1a('0x28')]=qs[_0x5c1a('0x28')](_0x1375e3['query']['limit']);_0x3088dd[_0x5c1a('0x26')]=qs[_0x5c1a('0x26')](_0x1375e3[_0x5c1a('0x3c')][_0x5c1a('0x26')]);}_0x3088dd[_0x5c1a('0x60')]=qs[_0x5c1a('0x43')](_0x1375e3[_0x5c1a('0x3c')][_0x5c1a('0x43')]);_0x3088dd[_0x5c1a('0x44')]=qs[_0x5c1a('0x46')](_[_0x5c1a('0x45')](_0x1375e3[_0x5c1a('0x3c')],_0x1977d5[_0x5c1a('0x46')]));_0x3088dd[_0x5c1a('0x44')]['WhatsappQueueId']=_0x2ca1cd['id'];if(_0x1375e3[_0x5c1a('0x3c')][_0x5c1a('0x47')]){_0x3088dd[_0x5c1a('0x44')]=_[_0x5c1a('0x48')](_0x3088dd[_0x5c1a('0x44')],{'$or':_[_0x5c1a('0x36')](_0x3088dd[_0x5c1a('0x40')],function(_0x38d8ce){var _0x143b1e={};_0x143b1e[_0x38d8ce]={'$like':'%'+_0x1375e3['query']['filter']+'%'};return _0x143b1e;})});}_0x3088dd=_[_0x5c1a('0x48')]({},_0x3088dd,_0x1375e3['options']);return db[_0x5c1a('0x5e')][_0x5c1a('0x4d')](_0x3088dd);}})[_0x5c1a('0x2f')](function(_0x2f6d5f){if(_0x2f6d5f){return db['User'][_0x5c1a('0x61')]({'where':{'id':_[_0x5c1a('0x36')](_0x2f6d5f,_0x5c1a('0x62')),'role':'agent'},'attributes':['id',_0x5c1a('0x34'),'whatsappPause',_0x5c1a('0x63'),'createdAt']});}})[_0x5c1a('0x2f')](function(_0x204529){if(_0x204529){return{'count':_0x204529[_0x5c1a('0x29')],'rows':_['map'](_0x204529[_0x5c1a('0x4e')],function(_0x240ca6){return{'membername':_0x240ca6[_0x5c1a('0x34')],'UserId':_0x240ca6['id'],'queue_name':_0x1403e6[_0x5c1a('0x34')],'WhatsappQueueId':_0x1403e6['id'],'interface':util[_0x5c1a('0x64')](_0x5c1a('0x65'),'SIP',_0x240ca6[_0x5c1a('0x34')]),'penalty':0x0,'paused':_0x240ca6[_0x5c1a('0x66')],'createdAt':_0x240ca6[_0x5c1a('0x67')],'updatedAt':_0x240ca6[_0x5c1a('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5c1a('0x2f')](respondWithFilteredResult(_0x5dd23f,_0x3088dd))[_0x5c1a('0x4f')](handleError(_0x5dd23f,null));};exports[_0x5c1a('0x68')]=function(_0x3f00e9,_0x587cb5,_0x1665fa){var _0x1f431c={};var _0xe901d4={};var _0x5be2c4;var _0xf1dfb1;return db[_0x5c1a('0x37')][_0x5c1a('0x5d')]({'where':{'id':_0x3f00e9[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x587cb5,null))[_0x5c1a('0x2f')](function(_0x2bee2e){if(_0x2bee2e){_0x5be2c4=_0x2bee2e;_0xe901d4['model']=_[_0x5c1a('0x3d')](db[_0x5c1a('0x69')][_0x5c1a('0x38')]);_0xe901d4[_0x5c1a('0x3c')]=_[_0x5c1a('0x3d')](_0x3f00e9['query']);_0xe901d4[_0x5c1a('0x46')]=_['intersection'](_0xe901d4[_0x5c1a('0x3b')],_0xe901d4[_0x5c1a('0x3c')]);_0x1f431c[_0x5c1a('0x40')]=_[_0x5c1a('0x3e')](_0xe901d4[_0x5c1a('0x3b')],qs[_0x5c1a('0x3f')](_0x3f00e9[_0x5c1a('0x3c')]['fields']));_0x1f431c[_0x5c1a('0x40')]=_0x1f431c[_0x5c1a('0x40')][_0x5c1a('0x41')]?_0x1f431c[_0x5c1a('0x40')]:_0xe901d4[_0x5c1a('0x3b')];_0x1f431c[_0x5c1a('0x60')]=qs[_0x5c1a('0x43')](_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x43')]);_0x1f431c[_0x5c1a('0x44')]=qs[_0x5c1a('0x46')](_[_0x5c1a('0x45')](_0x3f00e9[_0x5c1a('0x3c')],_0xe901d4[_0x5c1a('0x46')]));if(_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x47')]){_0x1f431c['where']=_[_0x5c1a('0x48')](_0x1f431c[_0x5c1a('0x44')],{'$or':_[_0x5c1a('0x36')](_0x1f431c[_0x5c1a('0x40')],function(_0x4fcf45){var _0x151901={};_0x151901[_0x4fcf45]={'$like':'%'+_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x47')]+'%'};return _0x151901;})});}_0x1f431c=_[_0x5c1a('0x48')]({},_0x1f431c,_0x3f00e9[_0x5c1a('0x4a')]);return _0x5be2c4[_0x5c1a('0x68')](_0x1f431c);}})[_0x5c1a('0x2f')](function(_0x5aba29){if(_0x5aba29){_0xf1dfb1=_0x5aba29[_0x5c1a('0x41')];if(!_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x42')](_0x5c1a('0x5f'))){_0x1f431c[_0x5c1a('0x28')]=qs['limit'](_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x28')]);_0x1f431c[_0x5c1a('0x26')]=qs[_0x5c1a('0x26')](_0x3f00e9[_0x5c1a('0x3c')][_0x5c1a('0x26')]);}return _0x5be2c4['getTeams'](_0x1f431c);}})[_0x5c1a('0x2f')](function(_0x5c55af){if(_0x5c55af){return _0x5c55af?{'count':_0xf1dfb1,'rows':_0x5c55af}:null;}})[_0x5c1a('0x2f')](respondWithResult(_0x587cb5,null))[_0x5c1a('0x4f')](handleError(_0x587cb5,null));};exports[_0x5c1a('0x6a')]=function(_0x486839,_0x328253,_0x1bf844){var _0x1e1bf9=_0x486839[_0x5c1a('0x52')][_0x5c1a('0x6b')];return db[_0x5c1a('0x69')]['findAll']({'where':{'id':_0x1e1bf9},'attributes':['id'],'include':[{'model':db[_0x5c1a('0x6c')],'as':_0x5c1a('0x6d'),'attributes':['id','name',_0x5c1a('0x6e'),'voicePause',_0x5c1a('0x6f')],'raw':!![]}]})[_0x5c1a('0x2f')](function(_0x1e0644){if(_0x1e0644){var _0x15c236=_[_0x5c1a('0x70')](_0x1e0644,function(_0x1f2116){var _0x4ce449=_0x1f2116[_0x5c1a('0x30')]({'plain':!![]});return _0x4ce449[_0x5c1a('0x6d')];});return db[_0x5c1a('0x37')][_0x5c1a('0x56')]({'where':{'id':_0x486839[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](function(_0x461ae7){return db[_0x5c1a('0x71')][_0x5c1a('0x72')](function(_0x54b72d){return _0x461ae7[_0x5c1a('0x6a')](_0x1e1bf9,{'transaction':_0x54b72d})['then'](function(){return BPromise[_0x5c1a('0x73')](_0x15c236,function(_0x5d1560){return db[_0x5c1a('0x5e')]['findOrCreate']({'where':{'UserId':_0x5d1560['id'],'WhatsappQueueId':_0x486839['params']['id']},'transaction':_0x54b72d});});})[_0x5c1a('0x2f')](function(){_0x15c236['forEach'](function(_0x4af1ca){socket[_0x5c1a('0x74')](_0x5c1a('0x75'),{'UserId':_0x4af1ca['id'],'WhatsappQueueId':_0x461ae7['id']});});});});});}})[_0x5c1a('0x2f')](respondWithStatusCode(_0x328253,null))['catch'](handleError(_0x328253,null));};exports[_0x5c1a('0x76')]=function(_0x405c7d,_0x586f10,_0xc3491c){return db[_0x5c1a('0x69')][_0x5c1a('0x4d')]({'where':{'id':_0x405c7d[_0x5c1a('0x3c')][_0x5c1a('0x6b')]},'attributes':['id'],'include':[{'model':db[_0x5c1a('0x6c')],'as':_0x5c1a('0x6d'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x586f10,null))[_0x5c1a('0x2f')](function(_0x16c8c7){var _0x37fbb1=_[_0x5c1a('0x36')](_0x16c8c7,'id');var _0x362b14=[];var _0x1e4d1e=[];var _0x5428b7=squel['select']();_0x5428b7['field'](_0x5c1a('0x77'))[_0x5c1a('0x78')]('team_has_whatsapp_queues','tq')[_0x5c1a('0x79')](_0x5c1a('0x7a'),'ut',_0x5c1a('0x7b'))['where'](_0x5c1a('0x7c'),_0x405c7d[_0x5c1a('0x50')]['id']);for(var _0x3f29c8=0x0;_0x3f29c8<_0x16c8c7['length'];_0x3f29c8+=0x1){let _0x2929dd=_0x16c8c7[_0x3f29c8];for(var _0x39d595=0x0;_0x39d595<_0x2929dd[_0x5c1a('0x6d')][_0x5c1a('0x41')];_0x39d595+=0x1){let _0x2976dc=_0x2929dd['Agents'][_0x39d595];var _0x47d49f=_0x5428b7[_0x5c1a('0x7d')]();_0x47d49f[_0x5c1a('0x44')](_0x5c1a('0x7e'),_0x2976dc['id']);_0x1e4d1e['push'](db[_0x5c1a('0x71')][_0x5c1a('0x3c')](_0x47d49f[_0x5c1a('0x7f')](),{'type':db[_0x5c1a('0x71')][_0x5c1a('0x80')][_0x5c1a('0x81')]})[_0x5c1a('0x2f')](function(_0x44813f){if(_0x44813f[_0x5c1a('0x41')]===0x1){return _0x2976dc['id'];}else{var _0x131aa3=_[_0x5c1a('0x82')](_['map'](_0x44813f,_0x5c1a('0x83')),function(_0x60dae8){return _['includes'](_0x37fbb1,_0x60dae8);});if(_0x131aa3){return _0x2976dc['id'];}}}));}}return BPromise[_0x5c1a('0x84')](_0x1e4d1e)['then'](function(_0x5d8941){_0x362b14=_(_0x362b14)[_0x5c1a('0x85')](_0x5d8941)[_0x5c1a('0x86')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x405c7d['params']['id']}})[_0x5c1a('0x2f')](function(_0x31e8d9){return db[_0x5c1a('0x71')]['transaction'](function(_0x5e3c8a){return _0x31e8d9['removeTeams'](_0x405c7d[_0x5c1a('0x3c')][_0x5c1a('0x6b')],{'transaction':_0x5e3c8a})['then'](function(){if(!_['isEmpty'](_0x362b14)){return _0x31e8d9[_0x5c1a('0x87')](_0x362b14,{'transaction':_0x5e3c8a});}})[_0x5c1a('0x2f')](function(){_0x362b14['forEach'](function(_0x245c4f){socket[_0x5c1a('0x74')](_0x5c1a('0x88'),{'UserId':_0x245c4f,'WhatsappQueueId':_0x31e8d9['id']});});});});});});})['then'](respondWithStatusCode(_0x586f10,null))[_0x5c1a('0x4f')](handleError(_0x586f10,null));};exports[_0x5c1a('0x89')]=function(_0xda889e,_0x561bab,_0x1b793b){return db['WhatsappQueue']['find']({'where':{'id':_0xda889e[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x561bab,null))[_0x5c1a('0x2f')](function(_0x3957d8){if(_0x3957d8){return _0x3957d8[_0x5c1a('0x89')](_0xda889e['body'][_0x5c1a('0x6b')],_[_0x5c1a('0x8a')](_0xda889e[_0x5c1a('0x52')],[_0x5c1a('0x6b'),'id'])||{})[_0x5c1a('0x8b')](function(_0x8f7817){for(var _0x231511=0x0;_0x231511<_0xda889e[_0x5c1a('0x52')][_0x5c1a('0x6b')][_0x5c1a('0x41')];_0x231511+=0x1){socket['emit']('userWhatsappQueue:save',{'UserId':Number(_0xda889e['body'][_0x5c1a('0x6b')][_0x231511]),'WhatsappQueueId':Number(_0xda889e[_0x5c1a('0x50')]['id'])});}return _0x8f7817;});}})[_0x5c1a('0x2f')](respondWithResult(_0x561bab,null))[_0x5c1a('0x4f')](handleError(_0x561bab,null));};exports[_0x5c1a('0x87')]=function(_0xca6a43,_0x7ec37c,_0x439c5a){return db['WhatsappQueue'][_0x5c1a('0x56')]({'where':{'id':_0xca6a43['params']['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x7ec37c,null))['then'](function(_0xe25cbd){if(_0xe25cbd){return _0xe25cbd[_0x5c1a('0x87')](_0xca6a43[_0x5c1a('0x3c')][_0x5c1a('0x6b')])[_0x5c1a('0x2f')](function(){if(_[_0x5c1a('0x8c')](_0xca6a43[_0x5c1a('0x3c')][_0x5c1a('0x6b')])){for(var _0x5e0daf=0x0;_0x5e0daf<_0xca6a43[_0x5c1a('0x3c')][_0x5c1a('0x6b')][_0x5c1a('0x41')];_0x5e0daf+=0x1){socket[_0x5c1a('0x74')]('userWhatsappQueue:remove',{'UserId':Number(_0xca6a43['query'][_0x5c1a('0x6b')][_0x5e0daf]),'WhatsappQueueId':Number(_0xca6a43[_0x5c1a('0x50')]['id'])});}}else{socket[_0x5c1a('0x74')](_0x5c1a('0x88'),{'UserId':Number(_0xca6a43[_0x5c1a('0x3c')]['ids']),'WhatsappQueueId':Number(_0xca6a43['params']['id'])});}});}})[_0x5c1a('0x2f')](respondWithStatusCode(_0x7ec37c,null))['catch'](handleError(_0x7ec37c,null));};exports[_0x5c1a('0x8d')]=function(_0x2b4225,_0x271a07,_0x536ad1){var _0x400d18={};var _0x5450bf={};var _0x20dc5e;var _0x4f328b;return db[_0x5c1a('0x37')][_0x5c1a('0x5d')]({'where':{'id':_0x2b4225[_0x5c1a('0x50')]['id']}})[_0x5c1a('0x2f')](handleEntityNotFound(_0x271a07,null))[_0x5c1a('0x2f')](function(_0x2cb3e6){if(_0x2cb3e6){_0x20dc5e=_0x2cb3e6;_0x5450bf[_0x5c1a('0x3b')]=_[_0x5c1a('0x3d')](db[_0x5c1a('0x6c')]['rawAttributes']);_0x5450bf[_0x5c1a('0x3c')]=_[_0x5c1a('0x3d')](_0x2b4225[_0x5c1a('0x3c')]);_0x5450bf[_0x5c1a('0x46')]=_[_0x5c1a('0x3e')](_0x5450bf[_0x5c1a('0x3b')],_0x5450bf[_0x5c1a('0x3c')]);_0x400d18[_0x5c1a('0x40')]=_['intersection'](_0x5450bf[_0x5c1a('0x3b')],qs[_0x5c1a('0x3f')](_0x2b4225[_0x5c1a('0x3c')][_0x5c1a('0x3f')]));_0x400d18[_0x5c1a('0x40')]=_0x400d18[_0x5c1a('0x40')][_0x5c1a('0x41')]?_0x400d18[_0x5c1a('0x40')]:_0x5450bf[_0x5c1a('0x3b')];_0x400d18[_0x5c1a('0x60')]=qs[_0x5c1a('0x43')](_0x2b4225['query']['sort']);_0x400d18['where']=qs[_0x5c1a('0x46')](_[_0x5c1a('0x45')](_0x2b4225['query'],_0x5450bf[_0x5c1a('0x46')]));if(_0x2b4225[_0x5c1a('0x3c')]['filter']){_0x400d18[_0x5c1a('0x44')]=_[_0x5c1a('0x48')](_0x400d18[_0x5c1a('0x44')],{'$or':_['map'](_0x400d18[_0x5c1a('0x40')],function(_0x4fd306){var _0x342ef2={};_0x342ef2[_0x4fd306]={'$like':'%'+_0x2b4225[_0x5c1a('0x3c')][_0x5c1a('0x47')]+'%'};return _0x342ef2;})});}_0x400d18=_[_0x5c1a('0x48')]({},_0x400d18,_0x2b4225[_0x5c1a('0x4a')]);return _0x20dc5e[_0x5c1a('0x8d')](_0x400d18);}})['then'](function(_0x12b29b){if(_0x12b29b){_0x4f328b=_0x12b29b[_0x5c1a('0x41')];if(!_0x2b4225[_0x5c1a('0x3c')]['hasOwnProperty'](_0x5c1a('0x5f'))){_0x400d18[_0x5c1a('0x28')]=qs[_0x5c1a('0x28')](_0x2b4225[_0x5c1a('0x3c')]['limit']);_0x400d18[_0x5c1a('0x26')]=qs[_0x5c1a('0x26')](_0x2b4225[_0x5c1a('0x3c')][_0x5c1a('0x26')]);}return _0x20dc5e[_0x5c1a('0x8d')](_0x400d18);}})[_0x5c1a('0x2f')](function(_0x5bace3){if(_0x5bace3){return _0x5bace3?{'count':_0x4f328b,'rows':_0x5bace3}:null;}})[_0x5c1a('0x2f')](respondWithResult(_0x271a07,null))['catch'](handleError(_0x271a07,null));};
\ No newline at end of file
index 3766940..d9fc5fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb4f=['../../mysqldb','WhatsappQueue','setMaxListeners','update','remove','emit','hasOwnProperty','events'];(function(_0x5eb6a7,_0xd80ead){var _0x4adcc0=function(_0x34b3ad){while(--_0x34b3ad){_0x5eb6a7['push'](_0x5eb6a7['shift']());}};_0x4adcc0(++_0xd80ead);}(_0xbb4f,0xf7));var _0xfbb4=function(_0xbaf9b,_0x13a3a3){_0xbaf9b=_0xbaf9b-0x0;var _0x28c4e7=_0xbb4f[_0xbaf9b];return _0x28c4e7;};'use strict';var EventEmitter=require(_0xfbb4('0x0'));var WhatsappQueue=require(_0xfbb4('0x1'))['db'][_0xfbb4('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xfbb4('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfbb4('0x4'),'afterDestroy':_0xfbb4('0x5')};function emitEvent(_0x4c47ec){return function(_0x84a504,_0x5a10a1,_0x4bf539){WhatsappQueueEvents[_0xfbb4('0x6')](_0x4c47ec+':'+_0x84a504['id'],_0x84a504);WhatsappQueueEvents[_0xfbb4('0x6')](_0x4c47ec,_0x84a504);_0x4bf539(null);};}for(var e in events){if(events[_0xfbb4('0x7')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x0bda=['save','update','emit','hook','exports','events','WhatsappQueue','setMaxListeners'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bda,0x19d));var _0xa0bd=function(_0x4c9e4a,_0x1f513f){_0x4c9e4a=_0x4c9e4a-0x0;var _0x57255a=_0x0bda[_0x4c9e4a];return _0x57255a;};'use strict';var EventEmitter=require(_0xa0bd('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xa0bd('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xa0bd('0x2')](0x0);var events={'afterCreate':_0xa0bd('0x3'),'afterUpdate':_0xa0bd('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5e73e6){return function(_0x48f2d8,_0x550631,_0x5053a7){WhatsappQueueEvents['emit'](_0x5e73e6+':'+_0x48f2d8['id'],_0x48f2d8);WhatsappQueueEvents[_0xa0bd('0x5')](_0x5e73e6,_0x48f2d8);_0x5053a7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa0bd('0x6')](e,emitEvent(event));}}module[_0xa0bd('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index 6f0a560..aa3d937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ba4=['WhatsappQueue','whatsapp_queues','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x24d867,_0x5d28fb){var _0x36079b=function(_0x31e7be){while(--_0x31e7be){_0x24d867['push'](_0x24d867['shift']());}};_0x36079b(++_0x5d28fb);}(_0x5ba4,0x110));var _0x45ba=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x5ba4[_0x33032e];return _0x13316b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x45ba('0x0'))(_0x45ba('0x1'));var moment=require(_0x45ba('0x2'));var BPromise=require(_0x45ba('0x3'));var rp=require(_0x45ba('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x45ba('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappQueue.attributes');module[_0x45ba('0x6')]=function(_0x39c601,_0x35bbca){return _0x39c601[_0x45ba('0x7')](_0x45ba('0x8'),attributes,{'tableName':_0x45ba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x869b=['define','WhatsappQueue','whatsapp_queues','lodash','util','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x58f8e1,_0x447b64){var _0x46368b=function(_0x28608a){while(--_0x28608a){_0x58f8e1['push'](_0x58f8e1['shift']());}};_0x46368b(++_0x447b64);}(_0x869b,0xd5));var _0xb869=function(_0x232673,_0x283b1c){_0x232673=_0x232673-0x0;var _0x3a604f=_0x869b[_0x232673];return _0x3a604f;};'use strict';var _=require(_0xb869('0x0'));var util=require(_0xb869('0x1'));var logger=require('../../config/logger')(_0xb869('0x2'));var moment=require(_0xb869('0x3'));var BPromise=require('bluebird');var rp=require(_0xb869('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb869('0x5'));var config=require(_0xb869('0x6'));var attributes=require('./whatsappQueue.attributes');module['exports']=function(_0x2b1f9b,_0x3a7b6a){return _0x2b1f9b[_0xb869('0x7')](_0xb869('0x8'),attributes,{'tableName':_0xb869('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5355618..0beda43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4272=['debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetWhatsappQueue','WhatsappQueue','options','attributes','include','map','model','then','catch','find','raw','where','ShowWhatsappQueue','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','./whatsappQueue.socket','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x4272,0xbd));var _0x2427=function(_0x54f822,_0xb558d8){_0x54f822=_0x54f822-0x0;var _0x1d631d=_0x4272[_0x54f822];return _0x1d631d;};'use strict';var _=require('lodash');var util=require(_0x2427('0x0'));var moment=require('moment');var BPromise=require(_0x2427('0x1'));var rs=require(_0x2427('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2427('0x3'));var logger=require(_0x2427('0x4'))('rpc');var config=require(_0x2427('0x5'));var jayson=require(_0x2427('0x6'));var client=jayson[_0x2427('0x7')][_0x2427('0x8')]({'port':0x232a});config[_0x2427('0x9')]=_['defaults'](config[_0x2427('0x9')],{'host':_0x2427('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2427('0x9')]));require(_0x2427('0xb'))['register'](socket);function respondWithRpcPromise(_0x2cba4f,_0x275678,_0x1f5406){return new BPromise(function(_0x29e540,_0x53e2ee){return client['request'](_0x2cba4f,_0x1f5406)['then'](function(_0x5458ca){logger[_0x2427('0xc')](_0x2427('0xd'),_0x275678,_0x2427('0xe'));logger[_0x2427('0xf')](_0x2427('0x10'),_0x275678,_0x2427('0xe'),JSON[_0x2427('0x11')](_0x5458ca));if(_0x5458ca[_0x2427('0x12')]){if(_0x5458ca[_0x2427('0x12')]['code']===0x1f4){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x275678,_0x5458ca['error'][_0x2427('0x13')]);return _0x53e2ee(_0x5458ca[_0x2427('0x12')][_0x2427('0x13')]);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x275678,_0x5458ca[_0x2427('0x12')][_0x2427('0x13')]);return _0x29e540(_0x5458ca[_0x2427('0x12')][_0x2427('0x13')]);}else{logger[_0x2427('0xc')]('WhatsappQueue,\x20%s,\x20%s',_0x275678,_0x2427('0xe'));_0x29e540(_0x5458ca[_0x2427('0x14')][_0x2427('0x13')]);}})['catch'](function(_0xd00221){logger[_0x2427('0x12')](_0x2427('0xd'),_0x275678,_0xd00221);_0x53e2ee(_0xd00221);});});}exports[_0x2427('0x15')]=function(_0xe98f00){var _0x20e6c1=this;return new Promise(function(_0x3fdde2,_0x4c26e8){return db[_0x2427('0x16')]['findAll']({'raw':_0xe98f00[_0x2427('0x17')]?_0xe98f00[_0x2427('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xe98f00[_0x2427('0x17')]?_0xe98f00[_0x2427('0x17')]['where']||null:null,'attributes':_0xe98f00[_0x2427('0x17')]?_0xe98f00[_0x2427('0x17')][_0x2427('0x18')]||null:null,'limit':_0xe98f00[_0x2427('0x17')]?_0xe98f00['options']['limit']||null:null,'include':_0xe98f00[_0x2427('0x17')]?_0xe98f00[_0x2427('0x17')][_0x2427('0x19')]?_[_0x2427('0x1a')](_0xe98f00[_0x2427('0x17')][_0x2427('0x19')],function(_0x2fdccb){return{'model':db[_0x2fdccb[_0x2427('0x1b')]],'as':_0x2fdccb['as'],'attributes':_0x2fdccb['attributes'],'include':_0x2fdccb[_0x2427('0x19')]?_[_0x2427('0x1a')](_0x2fdccb[_0x2427('0x19')],function(_0x1e0490){return{'model':db[_0x1e0490[_0x2427('0x1b')]],'as':_0x1e0490['as'],'attributes':_0x1e0490[_0x2427('0x18')],'include':_0x1e0490[_0x2427('0x19')]?_[_0x2427('0x1a')](_0x1e0490[_0x2427('0x19')],function(_0x387455){return{'model':db[_0x387455[_0x2427('0x1b')]],'as':_0x387455['as'],'attributes':_0x387455['attributes']};}):[]};}):[]};}):[]:[]})[_0x2427('0x1c')](function(_0x4860be){logger[_0x2427('0xc')]('GetWhatsappQueue',_0xe98f00);logger[_0x2427('0xf')](_0x2427('0x15'),_0xe98f00,JSON[_0x2427('0x11')](_0x4860be));_0x3fdde2(_0x4860be);})[_0x2427('0x1d')](function(_0x1c4717){logger[_0x2427('0x12')](_0x2427('0x15'),_0x1c4717[_0x2427('0x13')],_0xe98f00);_0x4c26e8(_0x20e6c1['error'](0x1f4,_0x1c4717[_0x2427('0x13')]));});});};exports['ShowWhatsappQueue']=function(_0x5f01ab){var _0x3d59bb=this;return new Promise(function(_0x2e9acc,_0x5eccb4){return db['WhatsappQueue'][_0x2427('0x1e')]({'raw':_0x5f01ab[_0x2427('0x17')]?_0x5f01ab[_0x2427('0x17')][_0x2427('0x1f')]===undefined?!![]:![]:!![],'where':_0x5f01ab[_0x2427('0x17')]?_0x5f01ab['options'][_0x2427('0x20')]||null:null,'attributes':_0x5f01ab['options']?_0x5f01ab[_0x2427('0x17')][_0x2427('0x18')]||null:null,'include':_0x5f01ab[_0x2427('0x17')]?_0x5f01ab[_0x2427('0x17')][_0x2427('0x19')]?_[_0x2427('0x1a')](_0x5f01ab[_0x2427('0x17')][_0x2427('0x19')],function(_0x340a18){return{'model':db[_0x340a18['model']],'as':_0x340a18['as'],'attributes':_0x340a18[_0x2427('0x18')],'include':_0x340a18[_0x2427('0x19')]?_['map'](_0x340a18[_0x2427('0x19')],function(_0x4fbcc6){return{'model':db[_0x4fbcc6[_0x2427('0x1b')]],'as':_0x4fbcc6['as'],'attributes':_0x4fbcc6[_0x2427('0x18')],'include':_0x4fbcc6[_0x2427('0x19')]?_[_0x2427('0x1a')](_0x4fbcc6[_0x2427('0x19')],function(_0x333053){return{'model':db[_0x333053[_0x2427('0x1b')]],'as':_0x333053['as'],'attributes':_0x333053['attributes']};}):[]};}):[]};}):[]:[]})[_0x2427('0x1c')](function(_0x2157f5){logger[_0x2427('0xc')](_0x2427('0x21'),_0x5f01ab);logger[_0x2427('0xf')]('ShowWhatsappQueue',_0x5f01ab,JSON[_0x2427('0x11')](_0x2157f5));_0x2e9acc(_0x2157f5);})[_0x2427('0x1d')](function(_0x161509){logger[_0x2427('0x12')](_0x2427('0x21'),_0x161509[_0x2427('0x13')],_0x5f01ab);_0x5eccb4(_0x3d59bb[_0x2427('0x12')](0x1f4,_0x161509[_0x2427('0x13')]));});});};
\ No newline at end of file
+var _0x4224=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./whatsappQueue.socket','register','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetWhatsappQueue','findAll','options','where','attributes','limit','include','map','model','find','raw','ShowWhatsappQueue','lodash','util','moment','randomstring','ioredis'];(function(_0x46c67d,_0x211c41){var _0xdf6a63=function(_0x531820){while(--_0x531820){_0x46c67d['push'](_0x46c67d['shift']());}};_0xdf6a63(++_0x211c41);}(_0x4224,0xc8));var _0x4422=function(_0x27604f,_0x5ae336){_0x27604f=_0x27604f-0x0;var _0x40d189=_0x4224[_0x27604f];return _0x40d189;};'use strict';var _=require(_0x4422('0x0'));var util=require(_0x4422('0x1'));var moment=require(_0x4422('0x2'));var BPromise=require('bluebird');var rs=require(_0x4422('0x3'));var fs=require('fs');var Redis=require(_0x4422('0x4'));var db=require(_0x4422('0x5'))['db'];var utils=require(_0x4422('0x6'));var logger=require('../../config/logger')(_0x4422('0x7'));var config=require(_0x4422('0x8'));var jayson=require(_0x4422('0x9'));var client=jayson[_0x4422('0xa')][_0x4422('0xb')]({'port':0x232a});config[_0x4422('0xc')]=_[_0x4422('0xd')](config[_0x4422('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4422('0xc')]));require(_0x4422('0xe'))[_0x4422('0xf')](socket);function respondWithRpcPromise(_0x189bde,_0x2c8afd,_0x5432b6){return new BPromise(function(_0x1d48c8,_0x4a000a){return client[_0x4422('0x10')](_0x189bde,_0x5432b6)[_0x4422('0x11')](function(_0x4f002f){logger['info'](_0x4422('0x12'),_0x2c8afd,_0x4422('0x13'));logger[_0x4422('0x14')](_0x4422('0x15'),_0x2c8afd,_0x4422('0x13'),JSON[_0x4422('0x16')](_0x4f002f));if(_0x4f002f[_0x4422('0x17')]){if(_0x4f002f[_0x4422('0x17')][_0x4422('0x18')]===0x1f4){logger[_0x4422('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x2c8afd,_0x4f002f[_0x4422('0x17')][_0x4422('0x19')]);return _0x4a000a(_0x4f002f['error']['message']);}logger['error'](_0x4422('0x12'),_0x2c8afd,_0x4f002f['error']['message']);return _0x1d48c8(_0x4f002f[_0x4422('0x17')][_0x4422('0x19')]);}else{logger[_0x4422('0x1a')](_0x4422('0x12'),_0x2c8afd,'request\x20sent');_0x1d48c8(_0x4f002f[_0x4422('0x1b')]['message']);}})[_0x4422('0x1c')](function(_0x301194){logger[_0x4422('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x2c8afd,_0x301194);_0x4a000a(_0x301194);});});}exports[_0x4422('0x1d')]=function(_0x368c19){var _0x13ace4=this;return new Promise(function(_0x1b735c,_0x13e1be){return db['WhatsappQueue'][_0x4422('0x1e')]({'raw':_0x368c19[_0x4422('0x1f')]?_0x368c19[_0x4422('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x368c19['options']?_0x368c19[_0x4422('0x1f')][_0x4422('0x20')]||null:null,'attributes':_0x368c19[_0x4422('0x1f')]?_0x368c19[_0x4422('0x1f')][_0x4422('0x21')]||null:null,'limit':_0x368c19[_0x4422('0x1f')]?_0x368c19[_0x4422('0x1f')][_0x4422('0x22')]||null:null,'include':_0x368c19['options']?_0x368c19['options'][_0x4422('0x23')]?_[_0x4422('0x24')](_0x368c19['options'][_0x4422('0x23')],function(_0x2520ba){return{'model':db[_0x2520ba['model']],'as':_0x2520ba['as'],'attributes':_0x2520ba['attributes'],'include':_0x2520ba[_0x4422('0x23')]?_[_0x4422('0x24')](_0x2520ba[_0x4422('0x23')],function(_0x45f3b4){return{'model':db[_0x45f3b4[_0x4422('0x25')]],'as':_0x45f3b4['as'],'attributes':_0x45f3b4[_0x4422('0x21')],'include':_0x45f3b4['include']?_[_0x4422('0x24')](_0x45f3b4[_0x4422('0x23')],function(_0x3bb2d8){return{'model':db[_0x3bb2d8[_0x4422('0x25')]],'as':_0x3bb2d8['as'],'attributes':_0x3bb2d8['attributes']};}):[]};}):[]};}):[]:[]})[_0x4422('0x11')](function(_0x17f6f1){logger['info'](_0x4422('0x1d'),_0x368c19);logger[_0x4422('0x14')]('GetWhatsappQueue',_0x368c19,JSON[_0x4422('0x16')](_0x17f6f1));_0x1b735c(_0x17f6f1);})[_0x4422('0x1c')](function(_0x369b1a){logger[_0x4422('0x17')](_0x4422('0x1d'),_0x369b1a[_0x4422('0x19')],_0x368c19);_0x13e1be(_0x13ace4[_0x4422('0x17')](0x1f4,_0x369b1a[_0x4422('0x19')]));});});};exports['ShowWhatsappQueue']=function(_0x3e2e61){var _0x2d8f29=this;return new Promise(function(_0x52e4b0,_0x496fb4){return db['WhatsappQueue'][_0x4422('0x26')]({'raw':_0x3e2e61[_0x4422('0x1f')]?_0x3e2e61[_0x4422('0x1f')][_0x4422('0x27')]===undefined?!![]:![]:!![],'where':_0x3e2e61[_0x4422('0x1f')]?_0x3e2e61[_0x4422('0x1f')][_0x4422('0x20')]||null:null,'attributes':_0x3e2e61[_0x4422('0x1f')]?_0x3e2e61['options'][_0x4422('0x21')]||null:null,'include':_0x3e2e61[_0x4422('0x1f')]?_0x3e2e61[_0x4422('0x1f')][_0x4422('0x23')]?_['map'](_0x3e2e61['options'][_0x4422('0x23')],function(_0x4fc4a9){return{'model':db[_0x4fc4a9[_0x4422('0x25')]],'as':_0x4fc4a9['as'],'attributes':_0x4fc4a9[_0x4422('0x21')],'include':_0x4fc4a9[_0x4422('0x23')]?_[_0x4422('0x24')](_0x4fc4a9['include'],function(_0x3a6bf8){return{'model':db[_0x3a6bf8[_0x4422('0x25')]],'as':_0x3a6bf8['as'],'attributes':_0x3a6bf8[_0x4422('0x21')],'include':_0x3a6bf8[_0x4422('0x23')]?_[_0x4422('0x24')](_0x3a6bf8[_0x4422('0x23')],function(_0x3fd268){return{'model':db[_0x3fd268[_0x4422('0x25')]],'as':_0x3fd268['as'],'attributes':_0x3fd268['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x19ea42){logger[_0x4422('0x1a')](_0x4422('0x28'),_0x3e2e61);logger[_0x4422('0x14')]('ShowWhatsappQueue',_0x3e2e61,JSON['stringify'](_0x19ea42));_0x52e4b0(_0x19ea42);})[_0x4422('0x1c')](function(_0x4048ad){logger[_0x4422('0x17')](_0x4422('0x28'),_0x4048ad[_0x4422('0x19')],_0x3e2e61);_0x496fb4(_0x2d8f29[_0x4422('0x17')](0x1f4,_0x4048ad[_0x4422('0x19')]));});});};
\ No newline at end of file
index e76a546..e2c336f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a35=['update','emit','removeListener','register','length','./whatsappQueue.events','save','remove'];(function(_0x4a44fe,_0x1623fe){var _0x3d10c8=function(_0x58f1b3){while(--_0x58f1b3){_0x4a44fe['push'](_0x4a44fe['shift']());}};_0x3d10c8(++_0x1623fe);}(_0x5a35,0x105));var _0x55a3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5a35[_0x321bb2];return _0x9c12ed;};'use strict';var WhatsappQueueEvents=require(_0x55a3('0x0'));var events=[_0x55a3('0x1'),_0x55a3('0x2'),_0x55a3('0x3')];function createListener(_0x549c72,_0x376ecd){return function(_0x4747b7){_0x376ecd[_0x55a3('0x4')](_0x549c72,_0x4747b7);};}function removeListener(_0x5b3eb3,_0x5c232a){return function(){WhatsappQueueEvents[_0x55a3('0x5')](_0x5b3eb3,_0x5c232a);};}exports[_0x55a3('0x6')]=function(_0x25fc58){for(var _0x194331=0x0,_0x46f5d0=events[_0x55a3('0x7')];_0x194331<_0x46f5d0;_0x194331++){var _0xca0e8a=events[_0x194331];var _0x382283=createListener('whatsappQueue:'+_0xca0e8a,_0x25fc58);WhatsappQueueEvents['on'](_0xca0e8a,_0x382283);}};
\ No newline at end of file
+var _0xd3c2=['register','whatsappQueue:','./whatsappQueue.events','save','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd3c2,0x1d0));var _0x2d3c=function(_0x52018f,_0x271bb0){_0x52018f=_0x52018f-0x0;var _0x36e55b=_0xd3c2[_0x52018f];return _0x36e55b;};'use strict';var WhatsappQueueEvents=require(_0x2d3c('0x0'));var events=[_0x2d3c('0x1'),'remove','update'];function createListener(_0x555d38,_0x303531){return function(_0x5b88b7){_0x303531[_0x2d3c('0x2')](_0x555d38,_0x5b88b7);};}function removeListener(_0x20efbf,_0x92173d){return function(){WhatsappQueueEvents[_0x2d3c('0x3')](_0x20efbf,_0x92173d);};}exports[_0x2d3c('0x4')]=function(_0x3a6846){for(var _0x50bbe6=0x0,_0x2be511=events['length'];_0x50bbe6<_0x2be511;_0x50bbe6++){var _0x320c85=events[_0x50bbe6];var _0xf2b7d6=createListener(_0x2d3c('0x5')+_0x320c85,_0x3a6846);WhatsappQueueEvents['on'](_0x320c85,_0xf2b7d6);}};
\ No newline at end of file
index 10856d7..045727d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ad=['describe','get','/:id','show','post','create','put','update','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','/describe'];(function(_0x3fe6df,_0x5a04d4){var _0x372a0e=function(_0x144b98){while(--_0x144b98){_0x3fe6df['push'](_0x3fe6df['shift']());}};_0x372a0e(++_0x5a04d4);}(_0x69ad,0x129));var _0xd69a=function(_0x3e3178,_0x150138){_0x3e3178=_0x3e3178-0x0;var _0x20e5d8=_0x69ad[_0x3e3178];return _0x20e5d8;};'use strict';var multer=require(_0xd69a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd69a('0x1'));var express=require(_0xd69a('0x2'));var router=express[_0xd69a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd69a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd69a('0x5'));var controller=require(_0xd69a('0x6'));router['get']('/',auth[_0xd69a('0x7')](),controller['index']);router['get'](_0xd69a('0x8'),auth[_0xd69a('0x7')](),controller[_0xd69a('0x9')]);router[_0xd69a('0xa')](_0xd69a('0xb'),auth['isAuthenticated'](),controller[_0xd69a('0xc')]);router[_0xd69a('0xd')]('/',auth['isAuthenticated'](),controller[_0xd69a('0xe')]);router[_0xd69a('0xf')](_0xd69a('0xb'),auth[_0xd69a('0x7')](),controller[_0xd69a('0x10')]);router['delete'](_0xd69a('0xb'),auth[_0xd69a('0x7')](),controller['destroy']);module[_0xd69a('0x11')]=router;
\ No newline at end of file
+var _0x62d2=['put','/:id','delete','destroy','exports','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','get','/describe','describe','post'];(function(_0x4c78b4,_0x5ca4dc){var _0x3b11cb=function(_0x5869f4){while(--_0x5869f4){_0x4c78b4['push'](_0x4c78b4['shift']());}};_0x3b11cb(++_0x5ca4dc);}(_0x62d2,0x8c));var _0x262d=function(_0x190015,_0x1799f4){_0x190015=_0x190015-0x0;var _0x4231ef=_0x62d2[_0x190015];return _0x4231ef;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x262d('0x0'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x262d('0x1'));var interaction=require(_0x262d('0x2'));var config=require(_0x262d('0x3'));var controller=require(_0x262d('0x4'));router['get']('/',auth[_0x262d('0x5')](),controller['index']);router[_0x262d('0x6')](_0x262d('0x7'),auth[_0x262d('0x5')](),controller[_0x262d('0x8')]);router['get']('/:id',auth[_0x262d('0x5')](),controller['show']);router[_0x262d('0x9')]('/',auth[_0x262d('0x5')](),controller['create']);router[_0x262d('0xa')](_0x262d('0xb'),auth[_0x262d('0x5')](),controller['update']);router[_0x262d('0xc')](_0x262d('0xb'),auth['isAuthenticated'](),controller[_0x262d('0xd')]);module[_0x262d('0xe')]=router;
\ No newline at end of file
index 0e37250..f108a3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x41135e,_0x46dcec){var _0x68f41f=function(_0x38d1a8){while(--_0x38d1a8){_0x41135e['push'](_0x41135e['shift']());}};_0x68f41f(++_0x46dcec);}(_0x7a54,0x106));var _0x47a5=function(_0x4cfd7a,_0x19812d){_0x4cfd7a=_0x4cfd7a-0x0;var _0x5a3a4a=_0x7a54[_0x4cfd7a];return _0x5a3a4a;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x5ec4f4,_0x2bc1f3){var _0x3e683e=function(_0x5f02f7){while(--_0x5f02f7){_0x5ec4f4['push'](_0x5ec4f4['shift']());}};_0x3e683e(++_0x2bc1f3);}(_0x7a54,0x106));var _0x47a5=function(_0x1e9b00,_0x3bb985){_0x1e9b00=_0x1e9b00-0x0;var _0x58b6ee=_0x7a54[_0x1e9b00];return _0x58b6ee;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index b029ca8..f745712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['catch','params','rawAttributes','intersection','create','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','name','send','map','WhatsappQueueReport','fieldName','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x13f6,0x124));var _0x613f=function(_0x267080,_0x34af89){_0x267080=_0x267080-0x0;var _0x36a1af=_0x13f6[_0x267080];return _0x36a1af;};'use strict';var emlformat=require(_0x613f('0x0'));var rimraf=require(_0x613f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x613f('0x2'));var moment=require(_0x613f('0x3'));var BPromise=require(_0x613f('0x4'));var Mustache=require('mustache');var util=require(_0x613f('0x5'));var path=require(_0x613f('0x6'));var sox=require(_0x613f('0x7'));var csv=require('to-csv');var ejs=require(_0x613f('0x8'));var fs=require('fs');var fs_extra=require(_0x613f('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x613f('0xa'));var toCsv=require(_0x613f('0xb'));var querystring=require(_0x613f('0xc'));var Papa=require(_0x613f('0xd'));var Redis=require('ioredis');var authService=require(_0x613f('0xe'));var qs=require(_0x613f('0xf'));var as=require(_0x613f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x613f('0x11'))(_0x613f('0x12'));var utils=require(_0x613f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x613f('0x14'));var db=require(_0x613f('0x15'))['db'];function respondWithStatusCode(_0x542230,_0x4c2a85){_0x4c2a85=_0x4c2a85||0xcc;return function(_0x517f57){if(_0x517f57){return _0x542230[_0x613f('0x16')](_0x4c2a85);}return _0x542230[_0x613f('0x17')](_0x4c2a85)[_0x613f('0x18')]();};}function respondWithResult(_0x375db1,_0x329fcf){_0x329fcf=_0x329fcf||0xc8;return function(_0x4a6fc){if(_0x4a6fc){return _0x375db1[_0x613f('0x17')](_0x329fcf)[_0x613f('0x19')](_0x4a6fc);}};}function respondWithFilteredResult(_0x2eee4d,_0x1d68fd){return function(_0x548218){if(_0x548218){var _0x3c9edf=typeof _0x1d68fd['offset']==='undefined'&&typeof _0x1d68fd[_0x613f('0x1a')]===_0x613f('0x1b');var _0x544eca=_0x548218[_0x613f('0x1c')];var _0x4f9dae=_0x3c9edf?0x0:_0x1d68fd[_0x613f('0x1d')];var _0x1e5a11=_0x3c9edf?_0x548218[_0x613f('0x1c')]:_0x1d68fd[_0x613f('0x1d')]+_0x1d68fd[_0x613f('0x1a')];var _0x1ba35f;if(_0x1e5a11>=_0x544eca){_0x1e5a11=_0x544eca;_0x1ba35f=0xc8;}else{_0x1ba35f=0xce;}_0x2eee4d['status'](_0x1ba35f);return _0x2eee4d['set'](_0x613f('0x1e'),_0x4f9dae+'-'+_0x1e5a11+'/'+_0x544eca)['json'](_0x548218);}return null;};}function patchUpdates(_0x48493c){return function(_0x3c9b58){try{jsonpatch[_0x613f('0x1f')](_0x3c9b58,_0x48493c,!![]);}catch(_0x4f5a5a){return BPromise[_0x613f('0x20')](_0x4f5a5a);}return _0x3c9b58[_0x613f('0x21')]();};}function saveUpdates(_0x2aa14b,_0x48b28a){return function(_0x5401c2){if(_0x5401c2){return _0x5401c2[_0x613f('0x22')](_0x2aa14b)[_0x613f('0x23')](function(_0x2acfcf){return _0x2acfcf;});}return null;};}function removeEntity(_0x51f376,_0x41104e){return function(_0x33e0c6){if(_0x33e0c6){return _0x33e0c6[_0x613f('0x24')]()[_0x613f('0x23')](function(){_0x51f376[_0x613f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30fb15,_0x204185){return function(_0x51bba1){if(!_0x51bba1){_0x30fb15[_0x613f('0x16')](0x194);}return _0x51bba1;};}function handleError(_0x5d4ff6,_0x32e747){_0x32e747=_0x32e747||0x1f4;return function(_0x4a878d){logger['error'](_0x4a878d['stack']);if(_0x4a878d[_0x613f('0x25')]){delete _0x4a878d['name'];}_0x5d4ff6[_0x613f('0x17')](_0x32e747)[_0x613f('0x26')](_0x4a878d);};}exports['index']=function(_0x121241,_0x2551c1){var _0x4c8aa1={},_0x4cff5d={},_0x4f892d={'count':0x0,'rows':[]};var _0x24be7c=_[_0x613f('0x27')](db[_0x613f('0x28')]['rawAttributes'],function(_0x23eda8){return{'name':_0x23eda8[_0x613f('0x29')],'type':_0x23eda8[_0x613f('0x2a')][_0x613f('0x2b')]};});_0x4cff5d['model']=_[_0x613f('0x27')](_0x24be7c,_0x613f('0x25'));_0x4cff5d[_0x613f('0x2c')]=_[_0x613f('0x2d')](_0x121241[_0x613f('0x2c')]);_0x4cff5d[_0x613f('0x2e')]=_['intersection'](_0x4cff5d[_0x613f('0x2f')],_0x4cff5d[_0x613f('0x2c')]);_0x4c8aa1[_0x613f('0x30')]=_['intersection'](_0x4cff5d[_0x613f('0x2f')],qs['fields'](_0x121241[_0x613f('0x2c')][_0x613f('0x31')]));_0x4c8aa1[_0x613f('0x30')]=_0x4c8aa1[_0x613f('0x30')][_0x613f('0x32')]?_0x4c8aa1[_0x613f('0x30')]:_0x4cff5d['model'];if(!_0x121241[_0x613f('0x2c')][_0x613f('0x33')](_0x613f('0x34'))){_0x4c8aa1[_0x613f('0x1a')]=qs[_0x613f('0x1a')](_0x121241['query']['limit']);_0x4c8aa1['offset']=qs[_0x613f('0x1d')](_0x121241[_0x613f('0x2c')][_0x613f('0x1d')]);}_0x4c8aa1[_0x613f('0x35')]=qs['sort'](_0x121241[_0x613f('0x2c')][_0x613f('0x36')]);_0x4c8aa1['where']=qs[_0x613f('0x2e')](_['pick'](_0x121241[_0x613f('0x2c')],_0x4cff5d['filters']),_0x24be7c);if(_0x121241[_0x613f('0x2c')]['filter']){_0x4c8aa1[_0x613f('0x37')]=_[_0x613f('0x38')](_0x4c8aa1[_0x613f('0x37')],{'$or':_['map'](_0x24be7c,function(_0x36eaa0){if(_0x36eaa0[_0x613f('0x2a')]!==_0x613f('0x39')){var _0x2fb3a6={};_0x2fb3a6[_0x36eaa0[_0x613f('0x25')]]={'$like':'%'+_0x121241[_0x613f('0x2c')][_0x613f('0x3a')]+'%'};return _0x2fb3a6;}})});}_0x4c8aa1=_[_0x613f('0x38')]({},_0x4c8aa1,_0x121241[_0x613f('0x3b')]);var _0x3313c1={'where':_0x4c8aa1['where']};return db[_0x613f('0x28')][_0x613f('0x1c')](_0x3313c1)[_0x613f('0x23')](function(_0x1e5af0){_0x4f892d[_0x613f('0x1c')]=_0x1e5af0;if(_0x121241[_0x613f('0x2c')][_0x613f('0x3c')]){_0x4c8aa1['include']=[{'all':!![]}];}return db[_0x613f('0x28')][_0x613f('0x3d')](_0x4c8aa1);})[_0x613f('0x23')](function(_0x3d2d7b){_0x4f892d[_0x613f('0x3e')]=_0x3d2d7b;return _0x4f892d;})[_0x613f('0x23')](respondWithFilteredResult(_0x2551c1,_0x4c8aa1))[_0x613f('0x3f')](handleError(_0x2551c1,null));};exports['show']=function(_0x343a59,_0x18f427){var _0x3bb605={'raw':!![],'where':{'id':_0x343a59[_0x613f('0x40')]['id']}},_0x2f584e={};_0x2f584e[_0x613f('0x2f')]=_[_0x613f('0x2d')](db[_0x613f('0x28')][_0x613f('0x41')]);_0x2f584e[_0x613f('0x2c')]=_[_0x613f('0x2d')](_0x343a59[_0x613f('0x2c')]);_0x2f584e[_0x613f('0x2e')]=_['intersection'](_0x2f584e[_0x613f('0x2f')],_0x2f584e[_0x613f('0x2c')]);_0x3bb605[_0x613f('0x30')]=_[_0x613f('0x42')](_0x2f584e['model'],qs[_0x613f('0x31')](_0x343a59[_0x613f('0x2c')][_0x613f('0x31')]));_0x3bb605[_0x613f('0x30')]=_0x3bb605[_0x613f('0x30')][_0x613f('0x32')]?_0x3bb605[_0x613f('0x30')]:_0x2f584e[_0x613f('0x2f')];if(_0x343a59[_0x613f('0x2c')][_0x613f('0x3c')]){_0x3bb605['include']=[{'all':!![]}];}_0x3bb605=_['merge']({},_0x3bb605,_0x343a59[_0x613f('0x3b')]);return db[_0x613f('0x28')]['find'](_0x3bb605)[_0x613f('0x23')](handleEntityNotFound(_0x18f427,null))[_0x613f('0x23')](respondWithResult(_0x18f427,null))[_0x613f('0x3f')](handleError(_0x18f427,null));};exports[_0x613f('0x43')]=function(_0x39b8b2,_0x1c0b07){return db[_0x613f('0x28')][_0x613f('0x43')](_0x39b8b2[_0x613f('0x44')],{})[_0x613f('0x23')](respondWithResult(_0x1c0b07,0xc9))[_0x613f('0x3f')](handleError(_0x1c0b07,null));};exports[_0x613f('0x22')]=function(_0x174e22,_0x17f8e5){if(_0x174e22[_0x613f('0x44')]['id']){delete _0x174e22[_0x613f('0x44')]['id'];}return db[_0x613f('0x28')][_0x613f('0x45')]({'where':{'id':_0x174e22['params']['id']}})['then'](handleEntityNotFound(_0x17f8e5,null))[_0x613f('0x23')](saveUpdates(_0x174e22[_0x613f('0x44')],null))['then'](respondWithResult(_0x17f8e5,null))['catch'](handleError(_0x17f8e5,null));};exports[_0x613f('0x24')]=function(_0x51729a,_0x513bf1){return db[_0x613f('0x28')][_0x613f('0x45')]({'where':{'id':_0x51729a[_0x613f('0x40')]['id']}})['then'](handleEntityNotFound(_0x513bf1,null))[_0x613f('0x23')](removeEntity(_0x513bf1,null))[_0x613f('0x3f')](handleError(_0x513bf1,null));};exports['describe']=function(_0x55e878,_0x1c0c8e){return db[_0x613f('0x28')][_0x613f('0x46')]()[_0x613f('0x23')](respondWithResult(_0x1c0c8e,null))[_0x613f('0x3f')](handleError(_0x1c0c8e,null));};
\ No newline at end of file
+var _0xb574=['set','Content-Range','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','WhatsappQueueReport','findAll','rows','catch','params','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset'];(function(_0x4587fe,_0x4b740c){var _0x379355=function(_0x24247c){while(--_0x24247c){_0x4587fe['push'](_0x4587fe['shift']());}};_0x379355(++_0x4b740c);}(_0xb574,0x106));var _0x4b57=function(_0x31f954,_0x3c68a9){_0x31f954=_0x31f954-0x0;var _0x2c6cab=_0xb574[_0x31f954];return _0x2c6cab;};'use strict';var emlformat=require(_0x4b57('0x0'));var rimraf=require(_0x4b57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4b57('0x2'));var rp=require(_0x4b57('0x3'));var moment=require('moment');var BPromise=require(_0x4b57('0x4'));var Mustache=require(_0x4b57('0x5'));var util=require(_0x4b57('0x6'));var path=require(_0x4b57('0x7'));var sox=require(_0x4b57('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4b57('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4b57('0xa'));var toCsv=require(_0x4b57('0xb'));var querystring=require(_0x4b57('0xc'));var Papa=require(_0x4b57('0xd'));var Redis=require(_0x4b57('0xe'));var authService=require(_0x4b57('0xf'));var qs=require(_0x4b57('0x10'));var as=require(_0x4b57('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b57('0x12'))(_0x4b57('0x13'));var utils=require(_0x4b57('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4b57('0x15'))['db'];function respondWithStatusCode(_0x357c8b,_0x43d066){_0x43d066=_0x43d066||0xcc;return function(_0xf8a6fc){if(_0xf8a6fc){return _0x357c8b[_0x4b57('0x16')](_0x43d066);}return _0x357c8b[_0x4b57('0x17')](_0x43d066)[_0x4b57('0x18')]();};}function respondWithResult(_0xd5ee6d,_0x31cced){_0x31cced=_0x31cced||0xc8;return function(_0x4e15be){if(_0x4e15be){return _0xd5ee6d['status'](_0x31cced)[_0x4b57('0x19')](_0x4e15be);}};}function respondWithFilteredResult(_0x24f776,_0x10b9ff){return function(_0x58d6bd){if(_0x58d6bd){var _0x284640=typeof _0x10b9ff['offset']===_0x4b57('0x1a')&&typeof _0x10b9ff[_0x4b57('0x1b')]===_0x4b57('0x1a');var _0x10eda5=_0x58d6bd[_0x4b57('0x1c')];var _0xfb71cc=_0x284640?0x0:_0x10b9ff['offset'];var _0x1b35ff=_0x284640?_0x58d6bd[_0x4b57('0x1c')]:_0x10b9ff[_0x4b57('0x1d')]+_0x10b9ff[_0x4b57('0x1b')];var _0x4baaeb;if(_0x1b35ff>=_0x10eda5){_0x1b35ff=_0x10eda5;_0x4baaeb=0xc8;}else{_0x4baaeb=0xce;}_0x24f776[_0x4b57('0x17')](_0x4baaeb);return _0x24f776[_0x4b57('0x1e')](_0x4b57('0x1f'),_0xfb71cc+'-'+_0x1b35ff+'/'+_0x10eda5)[_0x4b57('0x19')](_0x58d6bd);}return null;};}function patchUpdates(_0xef1eae){return function(_0x4454c8){try{jsonpatch['apply'](_0x4454c8,_0xef1eae,!![]);}catch(_0x4b504b){return BPromise[_0x4b57('0x20')](_0x4b504b);}return _0x4454c8[_0x4b57('0x21')]();};}function saveUpdates(_0x567d8f,_0x380554){return function(_0x4a34b2){if(_0x4a34b2){return _0x4a34b2[_0x4b57('0x22')](_0x567d8f)[_0x4b57('0x23')](function(_0x56f017){return _0x56f017;});}return null;};}function removeEntity(_0x271361,_0x368c5f){return function(_0x4d07c9){if(_0x4d07c9){return _0x4d07c9[_0x4b57('0x24')]()[_0x4b57('0x23')](function(){_0x271361[_0x4b57('0x17')](0xcc)[_0x4b57('0x18')]();});}};}function handleEntityNotFound(_0x540eff,_0x156962){return function(_0x51d0c3){if(!_0x51d0c3){_0x540eff[_0x4b57('0x16')](0x194);}return _0x51d0c3;};}function handleError(_0x517119,_0x36ceb1){_0x36ceb1=_0x36ceb1||0x1f4;return function(_0x2dc9d8){logger[_0x4b57('0x25')](_0x2dc9d8[_0x4b57('0x26')]);if(_0x2dc9d8[_0x4b57('0x27')]){delete _0x2dc9d8[_0x4b57('0x27')];}_0x517119['status'](_0x36ceb1)['send'](_0x2dc9d8);};}exports[_0x4b57('0x28')]=function(_0x4c58e4,_0x1ea0cb){var _0x458f70={},_0x874cf7={},_0x3af22f={'count':0x0,'rows':[]};var _0x249461=_[_0x4b57('0x29')](db['WhatsappQueueReport'][_0x4b57('0x2a')],function(_0x2e9922){return{'name':_0x2e9922[_0x4b57('0x2b')],'type':_0x2e9922[_0x4b57('0x2c')]['key']};});_0x874cf7[_0x4b57('0x2d')]=_[_0x4b57('0x29')](_0x249461,'name');_0x874cf7[_0x4b57('0x2e')]=_[_0x4b57('0x2f')](_0x4c58e4[_0x4b57('0x2e')]);_0x874cf7[_0x4b57('0x30')]=_['intersection'](_0x874cf7['model'],_0x874cf7['query']);_0x458f70[_0x4b57('0x31')]=_[_0x4b57('0x32')](_0x874cf7[_0x4b57('0x2d')],qs[_0x4b57('0x33')](_0x4c58e4[_0x4b57('0x2e')]['fields']));_0x458f70[_0x4b57('0x31')]=_0x458f70[_0x4b57('0x31')][_0x4b57('0x34')]?_0x458f70['attributes']:_0x874cf7[_0x4b57('0x2d')];if(!_0x4c58e4[_0x4b57('0x2e')][_0x4b57('0x35')]('nolimit')){_0x458f70[_0x4b57('0x1b')]=qs[_0x4b57('0x1b')](_0x4c58e4['query'][_0x4b57('0x1b')]);_0x458f70[_0x4b57('0x1d')]=qs[_0x4b57('0x1d')](_0x4c58e4[_0x4b57('0x2e')][_0x4b57('0x1d')]);}_0x458f70[_0x4b57('0x36')]=qs['sort'](_0x4c58e4[_0x4b57('0x2e')][_0x4b57('0x37')]);_0x458f70[_0x4b57('0x38')]=qs[_0x4b57('0x30')](_[_0x4b57('0x39')](_0x4c58e4[_0x4b57('0x2e')],_0x874cf7[_0x4b57('0x30')]),_0x249461);if(_0x4c58e4['query']['filter']){_0x458f70[_0x4b57('0x38')]=_[_0x4b57('0x3a')](_0x458f70[_0x4b57('0x38')],{'$or':_['map'](_0x249461,function(_0x40414f){if(_0x40414f[_0x4b57('0x2c')]!==_0x4b57('0x3b')){var _0x3c086e={};_0x3c086e[_0x40414f['name']]={'$like':'%'+_0x4c58e4[_0x4b57('0x2e')][_0x4b57('0x3c')]+'%'};return _0x3c086e;}})});}_0x458f70=_[_0x4b57('0x3a')]({},_0x458f70,_0x4c58e4[_0x4b57('0x3d')]);var _0x56528f={'where':_0x458f70['where']};return db['WhatsappQueueReport'][_0x4b57('0x1c')](_0x56528f)[_0x4b57('0x23')](function(_0x188f24){_0x3af22f[_0x4b57('0x1c')]=_0x188f24;if(_0x4c58e4['query'][_0x4b57('0x3e')]){_0x458f70[_0x4b57('0x3f')]=[{'all':!![]}];}return db[_0x4b57('0x40')][_0x4b57('0x41')](_0x458f70);})[_0x4b57('0x23')](function(_0x453129){_0x3af22f[_0x4b57('0x42')]=_0x453129;return _0x3af22f;})[_0x4b57('0x23')](respondWithFilteredResult(_0x1ea0cb,_0x458f70))[_0x4b57('0x43')](handleError(_0x1ea0cb,null));};exports['show']=function(_0x318187,_0x3685fd){var _0x3c5095={'raw':!![],'where':{'id':_0x318187[_0x4b57('0x44')]['id']}},_0x5b2f50={};_0x5b2f50['model']=_[_0x4b57('0x2f')](db[_0x4b57('0x40')][_0x4b57('0x2a')]);_0x5b2f50[_0x4b57('0x2e')]=_[_0x4b57('0x2f')](_0x318187[_0x4b57('0x2e')]);_0x5b2f50[_0x4b57('0x30')]=_[_0x4b57('0x32')](_0x5b2f50[_0x4b57('0x2d')],_0x5b2f50[_0x4b57('0x2e')]);_0x3c5095[_0x4b57('0x31')]=_[_0x4b57('0x32')](_0x5b2f50[_0x4b57('0x2d')],qs['fields'](_0x318187['query'][_0x4b57('0x33')]));_0x3c5095[_0x4b57('0x31')]=_0x3c5095[_0x4b57('0x31')][_0x4b57('0x34')]?_0x3c5095['attributes']:_0x5b2f50[_0x4b57('0x2d')];if(_0x318187[_0x4b57('0x2e')]['includeAll']){_0x3c5095[_0x4b57('0x3f')]=[{'all':!![]}];}_0x3c5095=_['merge']({},_0x3c5095,_0x318187[_0x4b57('0x3d')]);return db['WhatsappQueueReport']['find'](_0x3c5095)[_0x4b57('0x23')](handleEntityNotFound(_0x3685fd,null))[_0x4b57('0x23')](respondWithResult(_0x3685fd,null))['catch'](handleError(_0x3685fd,null));};exports[_0x4b57('0x45')]=function(_0xc19684,_0x2732ff){return db[_0x4b57('0x40')][_0x4b57('0x45')](_0xc19684[_0x4b57('0x46')],{})['then'](respondWithResult(_0x2732ff,0xc9))[_0x4b57('0x43')](handleError(_0x2732ff,null));};exports[_0x4b57('0x22')]=function(_0x4a632c,_0xd529fb){if(_0x4a632c[_0x4b57('0x46')]['id']){delete _0x4a632c[_0x4b57('0x46')]['id'];}return db['WhatsappQueueReport'][_0x4b57('0x47')]({'where':{'id':_0x4a632c['params']['id']}})[_0x4b57('0x23')](handleEntityNotFound(_0xd529fb,null))[_0x4b57('0x23')](saveUpdates(_0x4a632c[_0x4b57('0x46')],null))[_0x4b57('0x23')](respondWithResult(_0xd529fb,null))[_0x4b57('0x43')](handleError(_0xd529fb,null));};exports[_0x4b57('0x24')]=function(_0x3d1ecd,_0x3ec6ba){return db['WhatsappQueueReport'][_0x4b57('0x47')]({'where':{'id':_0x3d1ecd[_0x4b57('0x44')]['id']}})[_0x4b57('0x23')](handleEntityNotFound(_0x3ec6ba,null))['then'](removeEntity(_0x3ec6ba,null))[_0x4b57('0x43')](handleError(_0x3ec6ba,null));};exports[_0x4b57('0x48')]=function(_0x32985f,_0x488bea){return db[_0x4b57('0x40')][_0x4b57('0x48')]()[_0x4b57('0x23')](respondWithResult(_0x488bea,null))[_0x4b57('0x43')](handleError(_0x488bea,null));};
\ No newline at end of file
index 8dc6c79..62b5af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f8c=['../../config/logger','moment','bluebird','request-promise','../../config/environment','./whatsappQueueReport.attributes','exports','define','uniqueid','util'];(function(_0x2392fc,_0x2043cd){var _0x4a3041=function(_0xd87762){while(--_0xd87762){_0x2392fc['push'](_0x2392fc['shift']());}};_0x4a3041(++_0x2043cd);}(_0x5f8c,0x1c1));var _0xc5f8=function(_0x1f1f40,_0x3960fc){_0x1f1f40=_0x1f1f40-0x0;var _0x533521=_0x5f8c[_0x1f1f40];return _0x533521;};'use strict';var _=require('lodash');var util=require(_0xc5f8('0x0'));var logger=require(_0xc5f8('0x1'))('api');var moment=require(_0xc5f8('0x2'));var BPromise=require(_0xc5f8('0x3'));var rp=require(_0xc5f8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc5f8('0x5'));var attributes=require(_0xc5f8('0x6'));module[_0xc5f8('0x7')]=function(_0xf5f963,_0x361957){return _0xf5f963[_0xc5f8('0x8')]('WhatsappQueueReport',attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0xc5f8('0x9'),'fields':[_0xc5f8('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa80a=['path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','api','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa80a,0x98));var _0xaa80=function(_0x33843c,_0x3495ca){_0x33843c=_0x33843c-0x0;var _0x114da3=_0xa80a[_0x33843c];return _0x114da3;};'use strict';var _=require(_0xaa80('0x0'));var util=require(_0xaa80('0x1'));var logger=require('../../config/logger')(_0xaa80('0x2'));var moment=require('moment');var BPromise=require(_0xaa80('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaa80('0x4'));var rimraf=require(_0xaa80('0x5'));var config=require(_0xaa80('0x6'));var attributes=require(_0xaa80('0x7'));module[_0xaa80('0x8')]=function(_0x27d017,_0x633b58){return _0x27d017[_0xaa80('0x9')](_0xaa80('0xa'),attributes,{'tableName':_0xaa80('0xb'),'paranoid':![],'indexes':[{'name':_0xaa80('0xc'),'fields':[_0xaa80('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 0f6f327..93beb67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74a7=['where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','then','stringify','UpdateWhatsappQueueReport','update'];(function(_0x5ce15c,_0x19c917){var _0x36e4f5=function(_0x50fa90){while(--_0x50fa90){_0x5ce15c['push'](_0x5ce15c['shift']());}};_0x36e4f5(++_0x19c917);}(_0x74a7,0x106));var _0x774a=function(_0x184d76,_0x3cb428){_0x184d76=_0x184d76-0x0;var _0x46616c=_0x74a7[_0x184d76];return _0x46616c;};'use strict';var _=require(_0x774a('0x0'));var util=require(_0x774a('0x1'));var moment=require(_0x774a('0x2'));var BPromise=require(_0x774a('0x3'));var rs=require(_0x774a('0x4'));var fs=require('fs');var Redis=require(_0x774a('0x5'));var db=require(_0x774a('0x6'))['db'];var utils=require(_0x774a('0x7'));var logger=require(_0x774a('0x8'))('rpc');var config=require(_0x774a('0x9'));var jayson=require(_0x774a('0xa'));var client=jayson[_0x774a('0xb')][_0x774a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x555858,_0x3728c7,_0x9e0de9){return new BPromise(function(_0x2d43f6,_0x36accb){return client[_0x774a('0xd')](_0x555858,_0x9e0de9)['then'](function(_0x389eb9){logger[_0x774a('0xe')](_0x774a('0xf'),_0x3728c7,_0x774a('0x10'));logger[_0x774a('0x11')](_0x774a('0x12'),_0x3728c7,_0x774a('0x10'),JSON['stringify'](_0x389eb9));if(_0x389eb9['error']){if(_0x389eb9[_0x774a('0x13')][_0x774a('0x14')]===0x1f4){logger[_0x774a('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3728c7,_0x389eb9['error'][_0x774a('0x15')]);return _0x36accb(_0x389eb9[_0x774a('0x13')][_0x774a('0x15')]);}logger[_0x774a('0x13')](_0x774a('0xf'),_0x3728c7,_0x389eb9[_0x774a('0x13')][_0x774a('0x15')]);return _0x2d43f6(_0x389eb9['error'][_0x774a('0x15')]);}else{logger[_0x774a('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3728c7,_0x774a('0x10'));_0x2d43f6(_0x389eb9[_0x774a('0x16')]['message']);}})[_0x774a('0x17')](function(_0x266588){logger['error'](_0x774a('0xf'),_0x3728c7,_0x266588);_0x36accb(_0x266588);});});}exports[_0x774a('0x18')]=function(_0x54e566){var _0x12ba37=this;return new Promise(function(_0x515075,_0x5ef44c){return db[_0x774a('0x19')][_0x774a('0x1a')](_0x54e566[_0x774a('0x1b')],{'raw':_0x54e566[_0x774a('0x1c')]?_0x54e566[_0x774a('0x1c')][_0x774a('0x1d')]===undefined?!![]:![]:!![]})[_0x774a('0x1e')](function(_0x427a6c){logger[_0x774a('0xe')](_0x774a('0x18'),_0x54e566);logger['debug'](_0x774a('0x18'),_0x54e566,JSON[_0x774a('0x1f')](_0x427a6c));_0x515075(_0x427a6c);})['catch'](function(_0x4f3b46){logger[_0x774a('0x13')](_0x774a('0x18'),_0x4f3b46[_0x774a('0x15')],_0x54e566);_0x5ef44c(_0x12ba37[_0x774a('0x13')](0x1f4,_0x4f3b46[_0x774a('0x15')]));});});};exports[_0x774a('0x20')]=function(_0x1ef52e){var _0x52e4bc=this;return new Promise(function(_0xe83914,_0xa36baa){return db[_0x774a('0x19')][_0x774a('0x21')](_0x1ef52e['body'],{'raw':_0x1ef52e[_0x774a('0x1c')]?_0x1ef52e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ef52e[_0x774a('0x1c')]?_0x1ef52e[_0x774a('0x1c')][_0x774a('0x22')]||null:null,'attributes':_0x1ef52e['options']?_0x1ef52e[_0x774a('0x1c')][_0x774a('0x23')]||null:null,'limit':_0x1ef52e[_0x774a('0x1c')]?_0x1ef52e[_0x774a('0x1c')][_0x774a('0x24')]||null:null})[_0x774a('0x1e')](function(_0x38f2ef){logger[_0x774a('0xe')](_0x774a('0x20'),_0x1ef52e);logger[_0x774a('0x11')](_0x774a('0x20'),_0x1ef52e,JSON[_0x774a('0x1f')](_0x38f2ef));_0xe83914(_0x38f2ef);})[_0x774a('0x17')](function(_0x1efd91){logger[_0x774a('0x13')](_0x774a('0x20'),_0x1efd91[_0x774a('0x15')],_0x1ef52e);_0xa36baa(_0x52e4bc['error'](0x1f4,_0x1efd91['message']));});});};
\ No newline at end of file
+var _0x4cc7=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','UpdateWhatsappQueueReport','update','raw','where','attributes','limit','util'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x4cc7,0xe6));var _0x74cc=function(_0x4a3e91,_0x8e03db){_0x4a3e91=_0x4a3e91-0x0;var _0x36da84=_0x4cc7[_0x4a3e91];return _0x36da84;};'use strict';var _=require('lodash');var util=require(_0x74cc('0x0'));var moment=require('moment');var BPromise=require(_0x74cc('0x1'));var rs=require(_0x74cc('0x2'));var fs=require('fs');var Redis=require(_0x74cc('0x3'));var db=require(_0x74cc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x74cc('0x5'))(_0x74cc('0x6'));var config=require(_0x74cc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x74cc('0x8')][_0x74cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d3fd6,_0x3181ce,_0x74d563){return new BPromise(function(_0x13f90b,_0x31b102){return client[_0x74cc('0xa')](_0x1d3fd6,_0x74d563)[_0x74cc('0xb')](function(_0x217932){logger[_0x74cc('0xc')](_0x74cc('0xd'),_0x3181ce,_0x74cc('0xe'));logger[_0x74cc('0xf')](_0x74cc('0x10'),_0x3181ce,_0x74cc('0xe'),JSON[_0x74cc('0x11')](_0x217932));if(_0x217932[_0x74cc('0x12')]){if(_0x217932[_0x74cc('0x12')][_0x74cc('0x13')]===0x1f4){logger['error'](_0x74cc('0xd'),_0x3181ce,_0x217932[_0x74cc('0x12')][_0x74cc('0x14')]);return _0x31b102(_0x217932['error'][_0x74cc('0x14')]);}logger[_0x74cc('0x12')](_0x74cc('0xd'),_0x3181ce,_0x217932[_0x74cc('0x12')][_0x74cc('0x14')]);return _0x13f90b(_0x217932[_0x74cc('0x12')][_0x74cc('0x14')]);}else{logger['info'](_0x74cc('0xd'),_0x3181ce,'request\x20sent');_0x13f90b(_0x217932['result'][_0x74cc('0x14')]);}})[_0x74cc('0x15')](function(_0x5c84b4){logger[_0x74cc('0x12')](_0x74cc('0xd'),_0x3181ce,_0x5c84b4);_0x31b102(_0x5c84b4);});});}exports[_0x74cc('0x16')]=function(_0x18ce59){var _0x4264d9=this;return new Promise(function(_0x423316,_0x873d4f){return db[_0x74cc('0x17')][_0x74cc('0x18')](_0x18ce59[_0x74cc('0x19')],{'raw':_0x18ce59[_0x74cc('0x1a')]?_0x18ce59['options']['raw']===undefined?!![]:![]:!![]})[_0x74cc('0xb')](function(_0x2a1da4){logger[_0x74cc('0xc')](_0x74cc('0x16'),_0x18ce59);logger[_0x74cc('0xf')]('CreateWhatsappQueueReport',_0x18ce59,JSON[_0x74cc('0x11')](_0x2a1da4));_0x423316(_0x2a1da4);})['catch'](function(_0x4801d0){logger[_0x74cc('0x12')](_0x74cc('0x16'),_0x4801d0[_0x74cc('0x14')],_0x18ce59);_0x873d4f(_0x4264d9[_0x74cc('0x12')](0x1f4,_0x4801d0[_0x74cc('0x14')]));});});};exports[_0x74cc('0x1b')]=function(_0x16578e){var _0x28096d=this;return new Promise(function(_0x37198f,_0x1168c0){return db['WhatsappQueueReport'][_0x74cc('0x1c')](_0x16578e['body'],{'raw':_0x16578e[_0x74cc('0x1a')]?_0x16578e[_0x74cc('0x1a')][_0x74cc('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16578e[_0x74cc('0x1a')]?_0x16578e[_0x74cc('0x1a')][_0x74cc('0x1e')]||null:null,'attributes':_0x16578e['options']?_0x16578e[_0x74cc('0x1a')][_0x74cc('0x1f')]||null:null,'limit':_0x16578e[_0x74cc('0x1a')]?_0x16578e[_0x74cc('0x1a')][_0x74cc('0x20')]||null:null})['then'](function(_0x454642){logger[_0x74cc('0xc')]('UpdateWhatsappQueueReport',_0x16578e);logger[_0x74cc('0xf')]('UpdateWhatsappQueueReport',_0x16578e,JSON[_0x74cc('0x11')](_0x454642));_0x37198f(_0x454642);})[_0x74cc('0x15')](function(_0x13e718){logger['error'](_0x74cc('0x1b'),_0x13e718[_0x74cc('0x14')],_0x16578e);_0x1168c0(_0x28096d['error'](0x1f4,_0x13e718[_0x74cc('0x14')]));});});};
\ No newline at end of file
index cc673ac..8aa1255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac47=['get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xac47,0x98));var _0x7ac4=function(_0x51f632,_0x5a14d5){_0x51f632=_0x51f632-0x0;var _0x24cf36=_0xac47[_0x51f632];return _0x24cf36;};'use strict';var multer=require(_0x7ac4('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7ac4('0x1'));var router=express[_0x7ac4('0x2')]();var fs_extra=require(_0x7ac4('0x3'));var auth=require(_0x7ac4('0x4'));var interaction=require(_0x7ac4('0x5'));var config=require(_0x7ac4('0x6'));var controller=require(_0x7ac4('0x7'));router[_0x7ac4('0x8')]('/',auth[_0x7ac4('0x9')](),controller[_0x7ac4('0xa')]);router[_0x7ac4('0x8')](_0x7ac4('0xb'),auth[_0x7ac4('0x9')](),controller[_0x7ac4('0xc')]);router[_0x7ac4('0x8')](_0x7ac4('0xd'),auth[_0x7ac4('0x9')](),controller['show']);router[_0x7ac4('0xe')]('/',auth[_0x7ac4('0x9')](),controller['create']);router[_0x7ac4('0xf')](_0x7ac4('0xd'),auth[_0x7ac4('0x9')](),controller[_0x7ac4('0x10')]);router[_0x7ac4('0x11')](_0x7ac4('0xd'),auth[_0x7ac4('0x9')](),controller[_0x7ac4('0x12')]);module[_0x7ac4('0x13')]=router;
\ No newline at end of file
+var _0x419f=['isAuthenticated','describe','/:id','create','put','update','destroy','exports','multer','path','connect-timeout','fs-extra','./whatsappTransferReport.controller','index'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x419f,0x1f2));var _0xf419=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x419f[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0xf419('0x0'));var util=require('util');var path=require(_0xf419('0x1'));var timeout=require(_0xf419('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf419('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf419('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xf419('0x5')]);router['get']('/describe',auth[_0xf419('0x6')](),controller[_0xf419('0x7')]);router['get'](_0xf419('0x8'),auth[_0xf419('0x6')](),controller['show']);router['post']('/',auth[_0xf419('0x6')](),controller[_0xf419('0x9')]);router[_0xf419('0xa')](_0xf419('0x8'),auth['isAuthenticated'](),controller[_0xf419('0xb')]);router['delete'](_0xf419('0x8'),auth['isAuthenticated'](),controller[_0xf419('0xc')]);module[_0xf419('0xd')]=router;
\ No newline at end of file
index 172cc88..62ba572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b65=['DATE','sequelize','exports','STRING','ENUM','account','agent','queue'];(function(_0x34bc6c,_0x10d089){var _0x168820=function(_0xb058d9){while(--_0xb058d9){_0x34bc6c['push'](_0x34bc6c['shift']());}};_0x168820(++_0x10d089);}(_0x2b65,0x131));var _0x52b6=function(_0x338581,_0x85c756){_0x338581=_0x338581-0x0;var _0x306123=_0x2b65[_0x338581];return _0x306123;};'use strict';var Sequelize=require(_0x52b6('0x0'));module[_0x52b6('0x1')]={'uniqueid':{'type':Sequelize[_0x52b6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x52b6('0x3')](_0x52b6('0x4'),_0x52b6('0x5'),_0x52b6('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x52b6('0x7')]}};
\ No newline at end of file
+var _0xd070=['queue','DATE','sequelize','STRING','ENUM','account','agent'];(function(_0x5953db,_0x5e71df){var _0x2ab99a=function(_0x469994){while(--_0x469994){_0x5953db['push'](_0x5953db['shift']());}};_0x2ab99a(++_0x5e71df);}(_0xd070,0x8e));var _0x0d07=function(_0x380f58,_0x22002b){_0x380f58=_0x380f58-0x0;var _0xa3d326=_0xd070[_0x380f58];return _0xa3d326;};'use strict';var Sequelize=require(_0x0d07('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x0d07('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x0d07('0x2')](_0x0d07('0x3'),_0x0d07('0x4'),_0x0d07('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x0d07('0x6')]}};
\ No newline at end of file
index 15ff453..b5f1584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2317=['show','params','create','body','find','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x576d8a,_0x2d7bde){var _0x3dc3ef=function(_0xc76758){while(--_0xc76758){_0x576d8a['push'](_0x576d8a['shift']());}};_0x3dc3ef(++_0x2d7bde);}(_0x2317,0x16d));var _0x7231=function(_0x52d27e,_0x22c741){_0x52d27e=_0x52d27e-0x0;var _0x149c10=_0x2317[_0x52d27e];return _0x149c10;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7231('0x0'));var zipdir=require(_0x7231('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7231('0x2'));var moment=require(_0x7231('0x3'));var BPromise=require(_0x7231('0x4'));var Mustache=require('mustache');var util=require(_0x7231('0x5'));var path=require('path');var sox=require(_0x7231('0x6'));var csv=require(_0x7231('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7231('0x8'));var _=require(_0x7231('0x9'));var squel=require(_0x7231('0xa'));var crypto=require(_0x7231('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7231('0xc'));var toCsv=require(_0x7231('0x7'));var querystring=require(_0x7231('0xd'));var Papa=require(_0x7231('0xe'));var Redis=require('ioredis');var authService=require(_0x7231('0xf'));var qs=require(_0x7231('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7231('0x11'));var logger=require(_0x7231('0x12'))(_0x7231('0x13'));var utils=require(_0x7231('0x14'));var config=require(_0x7231('0x15'));var licenseUtil=require(_0x7231('0x16'));var db=require(_0x7231('0x17'))['db'];function respondWithStatusCode(_0x4e6e16,_0x9c2b05){_0x9c2b05=_0x9c2b05||0xcc;return function(_0x39a625){if(_0x39a625){return _0x4e6e16['sendStatus'](_0x9c2b05);}return _0x4e6e16['status'](_0x9c2b05)[_0x7231('0x18')]();};}function respondWithResult(_0x4124cb,_0x4d2e47){_0x4d2e47=_0x4d2e47||0xc8;return function(_0x2776e7){if(_0x2776e7){return _0x4124cb[_0x7231('0x19')](_0x4d2e47)[_0x7231('0x1a')](_0x2776e7);}};}function respondWithFilteredResult(_0x5a2baa,_0x1b36f4){return function(_0x11ae0c){if(_0x11ae0c){var _0x4a84b3=typeof _0x1b36f4[_0x7231('0x1b')]===_0x7231('0x1c')&&typeof _0x1b36f4['limit']===_0x7231('0x1c');var _0x3fd9d2=_0x11ae0c[_0x7231('0x1d')];var _0x1f8915=_0x4a84b3?0x0:_0x1b36f4[_0x7231('0x1b')];var _0x295b9d=_0x4a84b3?_0x11ae0c[_0x7231('0x1d')]:_0x1b36f4[_0x7231('0x1b')]+_0x1b36f4[_0x7231('0x1e')];var _0x275ba7;if(_0x295b9d>=_0x3fd9d2){_0x295b9d=_0x3fd9d2;_0x275ba7=0xc8;}else{_0x275ba7=0xce;}_0x5a2baa['status'](_0x275ba7);return _0x5a2baa[_0x7231('0x1f')]('Content-Range',_0x1f8915+'-'+_0x295b9d+'/'+_0x3fd9d2)[_0x7231('0x1a')](_0x11ae0c);}return null;};}function patchUpdates(_0x12c1fc){return function(_0x107610){try{jsonpatch[_0x7231('0x20')](_0x107610,_0x12c1fc,!![]);}catch(_0x1aab69){return BPromise[_0x7231('0x21')](_0x1aab69);}return _0x107610[_0x7231('0x22')]();};}function saveUpdates(_0x513497,_0x5ebd00){return function(_0x57f611){if(_0x57f611){return _0x57f611[_0x7231('0x23')](_0x513497)[_0x7231('0x24')](function(_0x1310cd){return _0x1310cd;});}return null;};}function removeEntity(_0x5165cb,_0x4984e0){return function(_0x173f4b){if(_0x173f4b){return _0x173f4b[_0x7231('0x25')]()['then'](function(){_0x5165cb[_0x7231('0x19')](0xcc)[_0x7231('0x18')]();});}};}function handleEntityNotFound(_0x5a1054,_0x1ff7f3){return function(_0x42be85){if(!_0x42be85){_0x5a1054[_0x7231('0x26')](0x194);}return _0x42be85;};}function handleError(_0x2e5639,_0x43e4c0){_0x43e4c0=_0x43e4c0||0x1f4;return function(_0x8172d2){logger[_0x7231('0x27')](_0x8172d2['stack']);if(_0x8172d2[_0x7231('0x28')]){delete _0x8172d2[_0x7231('0x28')];}_0x2e5639[_0x7231('0x19')](_0x43e4c0)[_0x7231('0x29')](_0x8172d2);};}exports[_0x7231('0x2a')]=function(_0xa7dc44,_0x4c0d9f){var _0x34aa62={},_0x51a0cd={},_0x3fb40e={'count':0x0,'rows':[]};var _0x3b6657=_[_0x7231('0x2b')](db[_0x7231('0x2c')][_0x7231('0x2d')],function(_0x3dd8f4){return{'name':_0x3dd8f4[_0x7231('0x2e')],'type':_0x3dd8f4['type'][_0x7231('0x2f')]};});_0x51a0cd[_0x7231('0x30')]=_[_0x7231('0x2b')](_0x3b6657,_0x7231('0x28'));_0x51a0cd[_0x7231('0x31')]=_[_0x7231('0x32')](_0xa7dc44[_0x7231('0x31')]);_0x51a0cd['filters']=_[_0x7231('0x33')](_0x51a0cd[_0x7231('0x30')],_0x51a0cd[_0x7231('0x31')]);_0x34aa62[_0x7231('0x34')]=_[_0x7231('0x33')](_0x51a0cd['model'],qs[_0x7231('0x35')](_0xa7dc44['query'][_0x7231('0x35')]));_0x34aa62[_0x7231('0x34')]=_0x34aa62[_0x7231('0x34')]['length']?_0x34aa62[_0x7231('0x34')]:_0x51a0cd['model'];if(!_0xa7dc44[_0x7231('0x31')][_0x7231('0x36')]('nolimit')){_0x34aa62[_0x7231('0x1e')]=qs[_0x7231('0x1e')](_0xa7dc44[_0x7231('0x31')]['limit']);_0x34aa62['offset']=qs['offset'](_0xa7dc44[_0x7231('0x31')]['offset']);}_0x34aa62[_0x7231('0x37')]=qs[_0x7231('0x38')](_0xa7dc44['query'][_0x7231('0x38')]);_0x34aa62[_0x7231('0x39')]=qs['filters'](_[_0x7231('0x3a')](_0xa7dc44['query'],_0x51a0cd['filters']),_0x3b6657);if(_0xa7dc44[_0x7231('0x31')]['filter']){_0x34aa62['where']=_[_0x7231('0x3b')](_0x34aa62[_0x7231('0x39')],{'$or':_[_0x7231('0x2b')](_0x3b6657,function(_0x589445){if(_0x589445['type']!==_0x7231('0x3c')){var _0x16980f={};_0x16980f[_0x589445[_0x7231('0x28')]]={'$like':'%'+_0xa7dc44[_0x7231('0x31')]['filter']+'%'};return _0x16980f;}})});}_0x34aa62=_['merge']({},_0x34aa62,_0xa7dc44[_0x7231('0x3d')]);var _0x83dc67={'where':_0x34aa62['where']};return db[_0x7231('0x2c')][_0x7231('0x1d')](_0x83dc67)[_0x7231('0x24')](function(_0x4b079a){_0x3fb40e[_0x7231('0x1d')]=_0x4b079a;if(_0xa7dc44[_0x7231('0x31')][_0x7231('0x3e')]){_0x34aa62[_0x7231('0x3f')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x7231('0x40')](_0x34aa62);})[_0x7231('0x24')](function(_0xb09b7){_0x3fb40e[_0x7231('0x41')]=_0xb09b7;return _0x3fb40e;})[_0x7231('0x24')](respondWithFilteredResult(_0x4c0d9f,_0x34aa62))[_0x7231('0x42')](handleError(_0x4c0d9f,null));};exports[_0x7231('0x43')]=function(_0x75611a,_0x388608){var _0x42222f={'raw':!![],'where':{'id':_0x75611a[_0x7231('0x44')]['id']}},_0x148cbe={};_0x148cbe[_0x7231('0x30')]=_[_0x7231('0x32')](db[_0x7231('0x2c')][_0x7231('0x2d')]);_0x148cbe[_0x7231('0x31')]=_['keys'](_0x75611a[_0x7231('0x31')]);_0x148cbe['filters']=_['intersection'](_0x148cbe[_0x7231('0x30')],_0x148cbe[_0x7231('0x31')]);_0x42222f[_0x7231('0x34')]=_[_0x7231('0x33')](_0x148cbe['model'],qs[_0x7231('0x35')](_0x75611a[_0x7231('0x31')][_0x7231('0x35')]));_0x42222f[_0x7231('0x34')]=_0x42222f[_0x7231('0x34')]['length']?_0x42222f[_0x7231('0x34')]:_0x148cbe['model'];if(_0x75611a[_0x7231('0x31')][_0x7231('0x3e')]){_0x42222f[_0x7231('0x3f')]=[{'all':!![]}];}_0x42222f=_[_0x7231('0x3b')]({},_0x42222f,_0x75611a[_0x7231('0x3d')]);return db[_0x7231('0x2c')]['find'](_0x42222f)['then'](handleEntityNotFound(_0x388608,null))['then'](respondWithResult(_0x388608,null))['catch'](handleError(_0x388608,null));};exports[_0x7231('0x45')]=function(_0x50f2a0,_0x3390b5){return db[_0x7231('0x2c')][_0x7231('0x45')](_0x50f2a0[_0x7231('0x46')],{})[_0x7231('0x24')](respondWithResult(_0x3390b5,0xc9))['catch'](handleError(_0x3390b5,null));};exports[_0x7231('0x23')]=function(_0x3fb2b3,_0x219270){if(_0x3fb2b3[_0x7231('0x46')]['id']){delete _0x3fb2b3[_0x7231('0x46')]['id'];}return db[_0x7231('0x2c')][_0x7231('0x47')]({'where':{'id':_0x3fb2b3[_0x7231('0x44')]['id']}})[_0x7231('0x24')](handleEntityNotFound(_0x219270,null))[_0x7231('0x24')](saveUpdates(_0x3fb2b3['body'],null))[_0x7231('0x24')](respondWithResult(_0x219270,null))[_0x7231('0x42')](handleError(_0x219270,null));};exports[_0x7231('0x25')]=function(_0x111b75,_0xfe3d6){return db[_0x7231('0x2c')][_0x7231('0x47')]({'where':{'id':_0x111b75[_0x7231('0x44')]['id']}})[_0x7231('0x24')](handleEntityNotFound(_0xfe3d6,null))[_0x7231('0x24')](removeEntity(_0xfe3d6,null))[_0x7231('0x42')](handleError(_0xfe3d6,null));};exports['describe']=function(_0x5b48e0,_0x3bb799){return db['WhatsappTransferReport']['describe']()[_0x7231('0x24')](respondWithResult(_0x3bb799,null))[_0x7231('0x42')](handleError(_0x3bb799,null));};
\ No newline at end of file
+var _0xd545=['index','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','map','VIRTUAL','options','findAll','rows','catch','keys','includeAll','merge','find','create','body','params','describe','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd545,0xff));var _0x5d54=function(_0x4cab1d,_0x11bebb){_0x4cab1d=_0x4cab1d-0x0;var _0x1ccd66=_0xd545[_0x4cab1d];return _0x1ccd66;};'use strict';var emlformat=require(_0x5d54('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5d54('0x1'));var rp=require(_0x5d54('0x2'));var moment=require('moment');var BPromise=require(_0x5d54('0x3'));var Mustache=require(_0x5d54('0x4'));var util=require(_0x5d54('0x5'));var path=require(_0x5d54('0x6'));var sox=require(_0x5d54('0x7'));var csv=require(_0x5d54('0x8'));var ejs=require(_0x5d54('0x9'));var fs=require('fs');var fs_extra=require(_0x5d54('0xa'));var _=require(_0x5d54('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5d54('0xc'));var toCsv=require(_0x5d54('0x8'));var querystring=require(_0x5d54('0xd'));var Papa=require(_0x5d54('0xe'));var Redis=require(_0x5d54('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5d54('0x10'));var as=require(_0x5d54('0x11'));var hardwareService=require(_0x5d54('0x12'));var logger=require(_0x5d54('0x13'))('api');var utils=require(_0x5d54('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5d54('0x15'))['db'];function respondWithStatusCode(_0x47c601,_0x3132a1){_0x3132a1=_0x3132a1||0xcc;return function(_0x17a574){if(_0x17a574){return _0x47c601[_0x5d54('0x16')](_0x3132a1);}return _0x47c601[_0x5d54('0x17')](_0x3132a1)[_0x5d54('0x18')]();};}function respondWithResult(_0x5ff4d0,_0x29f18d){_0x29f18d=_0x29f18d||0xc8;return function(_0x30d9e6){if(_0x30d9e6){return _0x5ff4d0[_0x5d54('0x17')](_0x29f18d)[_0x5d54('0x19')](_0x30d9e6);}};}function respondWithFilteredResult(_0x5455ff,_0x33c1fc){return function(_0x3369bf){if(_0x3369bf){var _0x1d78f6=typeof _0x33c1fc[_0x5d54('0x1a')]===_0x5d54('0x1b')&&typeof _0x33c1fc[_0x5d54('0x1c')]===_0x5d54('0x1b');var _0xda607b=_0x3369bf[_0x5d54('0x1d')];var _0x841c=_0x1d78f6?0x0:_0x33c1fc[_0x5d54('0x1a')];var _0x40de8e=_0x1d78f6?_0x3369bf['count']:_0x33c1fc[_0x5d54('0x1a')]+_0x33c1fc[_0x5d54('0x1c')];var _0x55a012;if(_0x40de8e>=_0xda607b){_0x40de8e=_0xda607b;_0x55a012=0xc8;}else{_0x55a012=0xce;}_0x5455ff[_0x5d54('0x17')](_0x55a012);return _0x5455ff[_0x5d54('0x1e')](_0x5d54('0x1f'),_0x841c+'-'+_0x40de8e+'/'+_0xda607b)[_0x5d54('0x19')](_0x3369bf);}return null;};}function patchUpdates(_0x5db9bf){return function(_0x2bd492){try{jsonpatch[_0x5d54('0x20')](_0x2bd492,_0x5db9bf,!![]);}catch(_0x5a421a){return BPromise[_0x5d54('0x21')](_0x5a421a);}return _0x2bd492[_0x5d54('0x22')]();};}function saveUpdates(_0x2dac18,_0x291822){return function(_0x35a547){if(_0x35a547){return _0x35a547[_0x5d54('0x23')](_0x2dac18)[_0x5d54('0x24')](function(_0x20d304){return _0x20d304;});}return null;};}function removeEntity(_0x12801d,_0x1227bf){return function(_0x2751d4){if(_0x2751d4){return _0x2751d4[_0x5d54('0x25')]()[_0x5d54('0x24')](function(){_0x12801d[_0x5d54('0x17')](0xcc)[_0x5d54('0x18')]();});}};}function handleEntityNotFound(_0x4c9c80,_0x35cc6e){return function(_0x4d40e3){if(!_0x4d40e3){_0x4c9c80[_0x5d54('0x16')](0x194);}return _0x4d40e3;};}function handleError(_0x35c105,_0x2c6735){_0x2c6735=_0x2c6735||0x1f4;return function(_0x593be1){logger[_0x5d54('0x26')](_0x593be1['stack']);if(_0x593be1['name']){delete _0x593be1[_0x5d54('0x27')];}_0x35c105[_0x5d54('0x17')](_0x2c6735)[_0x5d54('0x28')](_0x593be1);};}exports[_0x5d54('0x29')]=function(_0x3aee94,_0x572cc4){var _0xb52321={},_0x3c3cc5={},_0x5c9a2b={'count':0x0,'rows':[]};var _0x442acf=_['map'](db[_0x5d54('0x2a')][_0x5d54('0x2b')],function(_0x3772bf){return{'name':_0x3772bf[_0x5d54('0x2c')],'type':_0x3772bf[_0x5d54('0x2d')][_0x5d54('0x2e')]};});_0x3c3cc5[_0x5d54('0x2f')]=_['map'](_0x442acf,_0x5d54('0x27'));_0x3c3cc5['query']=_['keys'](_0x3aee94[_0x5d54('0x30')]);_0x3c3cc5[_0x5d54('0x31')]=_[_0x5d54('0x32')](_0x3c3cc5[_0x5d54('0x2f')],_0x3c3cc5['query']);_0xb52321[_0x5d54('0x33')]=_[_0x5d54('0x32')](_0x3c3cc5['model'],qs[_0x5d54('0x34')](_0x3aee94[_0x5d54('0x30')]['fields']));_0xb52321[_0x5d54('0x33')]=_0xb52321[_0x5d54('0x33')][_0x5d54('0x35')]?_0xb52321[_0x5d54('0x33')]:_0x3c3cc5['model'];if(!_0x3aee94[_0x5d54('0x30')][_0x5d54('0x36')](_0x5d54('0x37'))){_0xb52321[_0x5d54('0x1c')]=qs[_0x5d54('0x1c')](_0x3aee94[_0x5d54('0x30')][_0x5d54('0x1c')]);_0xb52321[_0x5d54('0x1a')]=qs[_0x5d54('0x1a')](_0x3aee94[_0x5d54('0x30')][_0x5d54('0x1a')]);}_0xb52321[_0x5d54('0x38')]=qs[_0x5d54('0x39')](_0x3aee94[_0x5d54('0x30')][_0x5d54('0x39')]);_0xb52321[_0x5d54('0x3a')]=qs['filters'](_['pick'](_0x3aee94[_0x5d54('0x30')],_0x3c3cc5[_0x5d54('0x31')]),_0x442acf);if(_0x3aee94['query'][_0x5d54('0x3b')]){_0xb52321['where']=_['merge'](_0xb52321[_0x5d54('0x3a')],{'$or':_[_0x5d54('0x3c')](_0x442acf,function(_0x262b9b){if(_0x262b9b[_0x5d54('0x2d')]!==_0x5d54('0x3d')){var _0x5a7c03={};_0x5a7c03[_0x262b9b['name']]={'$like':'%'+_0x3aee94['query'][_0x5d54('0x3b')]+'%'};return _0x5a7c03;}})});}_0xb52321=_['merge']({},_0xb52321,_0x3aee94[_0x5d54('0x3e')]);var _0x29de6c={'where':_0xb52321[_0x5d54('0x3a')]};return db[_0x5d54('0x2a')][_0x5d54('0x1d')](_0x29de6c)[_0x5d54('0x24')](function(_0x11de27){_0x5c9a2b[_0x5d54('0x1d')]=_0x11de27;if(_0x3aee94[_0x5d54('0x30')]['includeAll']){_0xb52321['include']=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x5d54('0x3f')](_0xb52321);})[_0x5d54('0x24')](function(_0x2ad830){_0x5c9a2b[_0x5d54('0x40')]=_0x2ad830;return _0x5c9a2b;})[_0x5d54('0x24')](respondWithFilteredResult(_0x572cc4,_0xb52321))[_0x5d54('0x41')](handleError(_0x572cc4,null));};exports['show']=function(_0x14b6ce,_0x5e5783){var _0x7e56c0={'raw':!![],'where':{'id':_0x14b6ce['params']['id']}},_0xbd8a7={};_0xbd8a7['model']=_[_0x5d54('0x42')](db[_0x5d54('0x2a')][_0x5d54('0x2b')]);_0xbd8a7[_0x5d54('0x30')]=_[_0x5d54('0x42')](_0x14b6ce[_0x5d54('0x30')]);_0xbd8a7[_0x5d54('0x31')]=_[_0x5d54('0x32')](_0xbd8a7['model'],_0xbd8a7[_0x5d54('0x30')]);_0x7e56c0[_0x5d54('0x33')]=_[_0x5d54('0x32')](_0xbd8a7[_0x5d54('0x2f')],qs[_0x5d54('0x34')](_0x14b6ce[_0x5d54('0x30')][_0x5d54('0x34')]));_0x7e56c0[_0x5d54('0x33')]=_0x7e56c0[_0x5d54('0x33')]['length']?_0x7e56c0[_0x5d54('0x33')]:_0xbd8a7[_0x5d54('0x2f')];if(_0x14b6ce[_0x5d54('0x30')][_0x5d54('0x43')]){_0x7e56c0['include']=[{'all':!![]}];}_0x7e56c0=_[_0x5d54('0x44')]({},_0x7e56c0,_0x14b6ce[_0x5d54('0x3e')]);return db['WhatsappTransferReport'][_0x5d54('0x45')](_0x7e56c0)['then'](handleEntityNotFound(_0x5e5783,null))['then'](respondWithResult(_0x5e5783,null))[_0x5d54('0x41')](handleError(_0x5e5783,null));};exports['create']=function(_0x7f006e,_0x98b530){return db[_0x5d54('0x2a')][_0x5d54('0x46')](_0x7f006e[_0x5d54('0x47')],{})[_0x5d54('0x24')](respondWithResult(_0x98b530,0xc9))[_0x5d54('0x41')](handleError(_0x98b530,null));};exports[_0x5d54('0x23')]=function(_0x57f02b,_0x55786d){if(_0x57f02b[_0x5d54('0x47')]['id']){delete _0x57f02b[_0x5d54('0x47')]['id'];}return db[_0x5d54('0x2a')]['find']({'where':{'id':_0x57f02b['params']['id']}})[_0x5d54('0x24')](handleEntityNotFound(_0x55786d,null))[_0x5d54('0x24')](saveUpdates(_0x57f02b[_0x5d54('0x47')],null))[_0x5d54('0x24')](respondWithResult(_0x55786d,null))[_0x5d54('0x41')](handleError(_0x55786d,null));};exports[_0x5d54('0x25')]=function(_0x2a73a9,_0x36c8e0){return db[_0x5d54('0x2a')][_0x5d54('0x45')]({'where':{'id':_0x2a73a9[_0x5d54('0x48')]['id']}})[_0x5d54('0x24')](handleEntityNotFound(_0x36c8e0,null))[_0x5d54('0x24')](removeEntity(_0x36c8e0,null))['catch'](handleError(_0x36c8e0,null));};exports[_0x5d54('0x49')]=function(_0x1e254f,_0x3fe7cb){return db[_0x5d54('0x2a')][_0x5d54('0x49')]()[_0x5d54('0x24')](respondWithResult(_0x3fe7cb,null))[_0x5d54('0x41')](handleError(_0x3fe7cb,null));};
\ No newline at end of file
index ad586bf..bdd962a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184f=['rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util','../../config/logger','api','moment','request-promise'];(function(_0x5545f7,_0x570414){var _0x52a979=function(_0x28eb97){while(--_0x28eb97){_0x5545f7['push'](_0x5545f7['shift']());}};_0x52a979(++_0x570414);}(_0x184f,0xbe));var _0xf184=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0x184f[_0x999b85];return _0x1d7124;};'use strict';var _=require('lodash');var util=require(_0xf184('0x0'));var logger=require(_0xf184('0x1'))(_0xf184('0x2'));var moment=require(_0xf184('0x3'));var BPromise=require('bluebird');var rp=require(_0xf184('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf184('0x5'));var config=require(_0xf184('0x6'));var attributes=require(_0xf184('0x7'));module[_0xf184('0x8')]=function(_0x2c1130,_0x6fc935){return _0x2c1130[_0xf184('0x9')](_0xf184('0xa'),attributes,{'tableName':_0xf184('0xb'),'paranoid':![],'indexes':[{'name':_0xf184('0xc'),'fields':[_0xf184('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x38e8=['define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','moment','request-promise','path','./whatsappTransferReport.attributes','exports'];(function(_0x5c38a2,_0x40e4e4){var _0x22869c=function(_0x4601ce){while(--_0x4601ce){_0x5c38a2['push'](_0x5c38a2['shift']());}};_0x22869c(++_0x40e4e4);}(_0x38e8,0x1a8));var _0x838e=function(_0xc50177,_0xbabc3){_0xc50177=_0xc50177-0x0;var _0x5c7731=_0x38e8[_0xc50177];return _0x5c7731;};'use strict';var _=require(_0x838e('0x0'));var util=require(_0x838e('0x1'));var logger=require(_0x838e('0x2'))('api');var moment=require(_0x838e('0x3'));var BPromise=require('bluebird');var rp=require(_0x838e('0x4'));var fs=require('fs');var path=require(_0x838e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x838e('0x6'));module[_0x838e('0x7')]=function(_0x1c0dd5,_0x593ab6){return _0x1c0dd5[_0x838e('0x8')](_0x838e('0x9'),attributes,{'tableName':_0x838e('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x838e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5dac124..8f4409e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd15=['jayson/promise','http','then','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xdd15,0x16e));var _0x5dd1=function(_0x10dbf6,_0x3ff964){_0x10dbf6=_0x10dbf6-0x0;var _0x452147=_0xdd15[_0x10dbf6];return _0x452147;};'use strict';var _=require(_0x5dd1('0x0'));var util=require(_0x5dd1('0x1'));var moment=require(_0x5dd1('0x2'));var BPromise=require(_0x5dd1('0x3'));var rs=require(_0x5dd1('0x4'));var fs=require('fs');var Redis=require(_0x5dd1('0x5'));var db=require(_0x5dd1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5dd1('0x7'));var jayson=require(_0x5dd1('0x8'));var client=jayson['client'][_0x5dd1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d6e55,_0x303fdf,_0x30533a){return new BPromise(function(_0x29cb73,_0x2bedd1){return client['request'](_0x4d6e55,_0x30533a)[_0x5dd1('0xa')](function(_0x59347d){logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x303fdf,_0x5dd1('0xb'));logger[_0x5dd1('0xc')](_0x5dd1('0xd'),_0x303fdf,_0x5dd1('0xb'),JSON[_0x5dd1('0xe')](_0x59347d));if(_0x59347d[_0x5dd1('0xf')]){if(_0x59347d[_0x5dd1('0xf')][_0x5dd1('0x10')]===0x1f4){logger[_0x5dd1('0xf')](_0x5dd1('0x11'),_0x303fdf,_0x59347d[_0x5dd1('0xf')][_0x5dd1('0x12')]);return _0x2bedd1(_0x59347d[_0x5dd1('0xf')]['message']);}logger[_0x5dd1('0xf')](_0x5dd1('0x11'),_0x303fdf,_0x59347d['error'][_0x5dd1('0x12')]);return _0x29cb73(_0x59347d[_0x5dd1('0xf')][_0x5dd1('0x12')]);}else{logger[_0x5dd1('0x13')](_0x5dd1('0x11'),_0x303fdf,'request\x20sent');_0x29cb73(_0x59347d[_0x5dd1('0x14')][_0x5dd1('0x12')]);}})[_0x5dd1('0x15')](function(_0x5859f6){logger[_0x5dd1('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x303fdf,_0x5859f6);_0x2bedd1(_0x5859f6);});});}
\ No newline at end of file
+var _0x2e08=['../../config/environment','jayson/promise','http','request','then','debug','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','info','request\x20sent','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x453b05,_0x17bdff){var _0x4f0254=function(_0x5f1065){while(--_0x5f1065){_0x453b05['push'](_0x453b05['shift']());}};_0x4f0254(++_0x17bdff);}(_0x2e08,0x1ad));var _0x82e0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2e08[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x82e0('0x0'));var util=require('util');var moment=require(_0x82e0('0x1'));var BPromise=require(_0x82e0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x82e0('0x3'));var db=require(_0x82e0('0x4'))['db'];var utils=require(_0x82e0('0x5'));var logger=require(_0x82e0('0x6'))(_0x82e0('0x7'));var config=require(_0x82e0('0x8'));var jayson=require(_0x82e0('0x9'));var client=jayson['client'][_0x82e0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x113415,_0x113805,_0x166038){return new BPromise(function(_0x20738b,_0x342fc3){return client[_0x82e0('0xb')](_0x113415,_0x166038)[_0x82e0('0xc')](function(_0x4dc48a){logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x113805,'request\x20sent');logger[_0x82e0('0xd')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x113805,'request\x20sent',JSON[_0x82e0('0xe')](_0x4dc48a));if(_0x4dc48a['error']){if(_0x4dc48a[_0x82e0('0xf')][_0x82e0('0x10')]===0x1f4){logger[_0x82e0('0xf')](_0x82e0('0x11'),_0x113805,_0x4dc48a[_0x82e0('0xf')][_0x82e0('0x12')]);return _0x342fc3(_0x4dc48a[_0x82e0('0xf')]['message']);}logger[_0x82e0('0xf')](_0x82e0('0x11'),_0x113805,_0x4dc48a[_0x82e0('0xf')][_0x82e0('0x12')]);return _0x20738b(_0x4dc48a['error'][_0x82e0('0x12')]);}else{logger[_0x82e0('0x13')](_0x82e0('0x11'),_0x113805,_0x82e0('0x14'));_0x20738b(_0x4dc48a[_0x82e0('0x15')][_0x82e0('0x12')]);}})[_0x82e0('0x16')](function(_0x40f010){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x113805,_0x40f010);_0x342fc3(_0x40f010);});});}
\ No newline at end of file
index f9f46e4..09eb8e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc99e=['./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','default','listen','start','info','filter','exitCode','number','length','map','pm2_env','name','Online\x20apps:','join','Offline\x20apps:','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash'];(function(_0x43e899,_0x22f1de){var _0xff607e=function(_0x41a955){while(--_0x41a955){_0x43e899['push'](_0x43e899['shift']());}};_0xff607e(++_0x22f1de);}(_0xc99e,0x6e));var _0xec99=function(_0x95d7b3,_0x271f72){_0x95d7b3=_0x95d7b3-0x0;var _0x5a62ef=_0xc99e[_0x95d7b3];return _0x5a62ef;};'use strict';var _=require(_0xec99('0x0'));var db=require(_0xec99('0x1'))['db'];var seedDb=require(_0xec99('0x2'));var checkLicense=require(_0xec99('0x3'));var rpc=require(_0xec99('0x4'));var config=require(_0xec99('0x5'));var logger=require('./config/logger')(_0xec99('0x6'));var pm2=require(_0xec99('0x7'));var pm2Config=require(_0xec99('0x8'));var schedule=require(_0xec99('0x9'));var chat=require(_0xec99('0xa'));var whatsapp=require(_0xec99('0xb'));var transcribe=require(_0xec99('0xc'));var provider=require(_0xec99('0xd'));function main(){return db['sequelize'][_0xec99('0xe')]()[_0xec99('0xf')](function(){if(config['seedDB']){return seedDb[_0xec99('0x10')]();}})[_0xec99('0xf')](function(){return checkLicense['default']();})['then'](function(){return rpc[_0xec99('0x11')]();})[_0xec99('0xf')](function(_0x1a057a){logger['info'](_0x1a057a);return chat[_0xec99('0x12')]();})[_0xec99('0xf')](function(){return whatsapp[_0xec99('0x12')]();})[_0xec99('0xf')](function(){return schedule[_0xec99('0x12')]();})[_0xec99('0xf')](function(){return transcribe['start']();})[_0xec99('0xf')](function(){return provider['start']();})[_0xec99('0xf')](function(_0x53d44e){logger[_0xec99('0x13')](_0x53d44e);return pm2['start'](pm2Config);})['then'](function(_0xc7627){var _0x569825=_0xc7627[_0xec99('0x14')](function(_0x159c47){return typeof _0x159c47[_0xec99('0x15')]===_0xec99('0x16')&&_0x159c47[_0xec99('0x15')]>=0x0;});if(_0x569825[_0xec99('0x17')]>0x0){throw new Error(_0x569825[_0xec99('0x17')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0xec99('0x18')](_0x569825,function(_0x52d9a7){return'\x22'+_0x52d9a7[_0xec99('0x19')][_0xec99('0x1a')]+'\x22';}));}logger[_0xec99('0x13')](_0xec99('0x1b'),_['map'](_['filter'](_0xc7627,{'status':'online'}),_0xec99('0x1a'))[_0xec99('0x1c')]());logger[_0xec99('0x13')](_0xec99('0x1d'),_[_0xec99('0x18')](_[_0xec99('0x14')](_0xc7627,function(_0x1644a8){return _0x1644a8['status']!=='online';}),_0xec99('0x1a'))[_0xec99('0x1c')]()||'None');console[_0xec99('0x1e')](_0xec99('0x1f'));})[_0xec99('0x20')](function(_0x2c4a60){console[_0xec99('0x1e')](_0xec99('0x21'),_0x2c4a60);logger[_0xec99('0x22')](_0xec99('0x23'),_0x2c4a60);process[_0xec99('0x24')](0x1);});}main();
\ No newline at end of file
+var _0xfc17=['catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','start','info','filter','exitCode','number','length','\x20processes\x20failed\x20at\x20startup:\x20','name','map','join','Offline\x20apps:','status','online','log'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x178aa8,_0x3e57fd){_0x178aa8=_0x178aa8-0x0;var _0x381786=_0xfc17[_0x178aa8];return _0x381786;};'use strict';var _=require(_0x7fc1('0x0'));var db=require(_0x7fc1('0x1'))['db'];var seedDb=require(_0x7fc1('0x2'));var checkLicense=require(_0x7fc1('0x3'));var rpc=require('./rpc');var config=require(_0x7fc1('0x4'));var logger=require(_0x7fc1('0x5'))(_0x7fc1('0x6'));var pm2=require(_0x7fc1('0x7'));var pm2Config=require(_0x7fc1('0x8'));var schedule=require(_0x7fc1('0x9'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x7fc1('0xa'));var transcribe=require(_0x7fc1('0xb'));var provider=require(_0x7fc1('0xc'));function main(){return db[_0x7fc1('0xd')][_0x7fc1('0xe')]()[_0x7fc1('0xf')](function(){if(config[_0x7fc1('0x10')]){return seedDb['default']();}})[_0x7fc1('0xf')](function(){return checkLicense[_0x7fc1('0x11')]();})[_0x7fc1('0xf')](function(){return rpc['listen']();})[_0x7fc1('0xf')](function(_0x48c36c){logger['info'](_0x48c36c);return chat[_0x7fc1('0x12')]();})[_0x7fc1('0xf')](function(){return whatsapp[_0x7fc1('0x12')]();})[_0x7fc1('0xf')](function(){return schedule[_0x7fc1('0x12')]();})[_0x7fc1('0xf')](function(){return transcribe[_0x7fc1('0x12')]();})[_0x7fc1('0xf')](function(){return provider[_0x7fc1('0x12')]();})[_0x7fc1('0xf')](function(_0x12ddce){logger[_0x7fc1('0x13')](_0x12ddce);return pm2['start'](pm2Config);})['then'](function(_0x881462){var _0x178dc2=_0x881462[_0x7fc1('0x14')](function(_0x391de7){return typeof _0x391de7[_0x7fc1('0x15')]===_0x7fc1('0x16')&&_0x391de7[_0x7fc1('0x15')]>=0x0;});if(_0x178dc2[_0x7fc1('0x17')]>0x0){throw new Error(_0x178dc2[_0x7fc1('0x17')]+_0x7fc1('0x18')+_['map'](_0x178dc2,function(_0x419170){return'\x22'+_0x419170['pm2_env'][_0x7fc1('0x19')]+'\x22';}));}logger[_0x7fc1('0x13')]('Online\x20apps:',_[_0x7fc1('0x1a')](_[_0x7fc1('0x14')](_0x881462,{'status':'online'}),_0x7fc1('0x19'))[_0x7fc1('0x1b')]());logger[_0x7fc1('0x13')](_0x7fc1('0x1c'),_[_0x7fc1('0x1a')](_[_0x7fc1('0x14')](_0x881462,function(_0x3e7c92){return _0x3e7c92[_0x7fc1('0x1d')]!==_0x7fc1('0x1e');}),_0x7fc1('0x19'))['join']()||'None');console[_0x7fc1('0x1f')]('App\x20Ready!');})[_0x7fc1('0x20')](function(_0x2eb65b){console[_0x7fc1('0x1f')](_0x7fc1('0x21'),_0x2eb65b);logger['error'](_0x7fc1('0x22'),_0x2eb65b);process[_0x7fc1('0x23')](0x1);});}main();
\ No newline at end of file
index 8c42b91..9c77ad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['headers','then','authenticate','pass','status','Wrong\x20credentials.','user','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','User','find','sub','allowedLoginAttempts','isEqual','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','minutes','User\x20object\x20not\x20found.','getLicense','update','Forbidden','webrtc','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','redirect','/dashboards/general','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','unshift','encryptString','join','promisify','sign','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/util','../encryptor','lodash','express-jwt','composable-middleware','basic-auth','crypto','moment','session','role','fullname','name','internal','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','showWebBar','lastLoginAt','allowmessenger','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarPrefixRequired','phoneBarRemoteControl','interface','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','selectRecallMeCampaign','chatAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','whatsappAutoanswer','isChatInteractionAuthorized','use','ChatInteraction','findOne','params','closed','disposition','unmanaged','json','Forbidden.','catch','isAuthenticated','authorization','startsWith'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0xb43b,0x1b2));var _0xbb43=function(_0x39b080,_0x1c5221){_0x39b080=_0x39b080-0x0;var _0x51cb55=_0xb43b[_0x39b080];return _0x51cb55;};'use strict';var db=require(_0xbb43('0x0'))['db'];var config=require(_0xbb43('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xbb43('0x2'));var encryptor=require(_0xbb43('0x3'));var _=require(_0xbb43('0x4'));var jwt=require('jsonwebtoken');var expressJwt=require(_0xbb43('0x5'));var compose=require(_0xbb43('0x6'));var basicAuth=require(_0xbb43('0x7'));var crypto=require(_0xbb43('0x8'));var BPromise=require('bluebird');var util=require('util');var moment=require(_0xbb43('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0xbb43('0xa')]});var userAttributes=['id',_0xbb43('0xb'),_0xbb43('0xc'),_0xbb43('0xd'),_0xbb43('0xe'),'email',_0xbb43('0xf'),_0xbb43('0x10'),'md5secret',_0xbb43('0x11'),_0xbb43('0x12'),_0xbb43('0x13'),_0xbb43('0x14'),_0xbb43('0x15'),_0xbb43('0x16'),'pauseType',_0xbb43('0x17'),_0xbb43('0x18'),'lastPauseAt','crudPermissions',_0xbb43('0x19'),'passwordResetAt','alias',_0xbb43('0x1a'),'phoneBarAutoAnswerDelay',_0xbb43('0x1b'),_0xbb43('0x1c'),'phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires',_0xbb43('0x1d'),_0xbb43('0x1e'),'phoneBarRemoteControlPort','hotdesk',_0xbb43('0x1f'),'userProfileId','privacyEnabled',_0xbb43('0x20'),_0xbb43('0x21'),_0xbb43('0x22'),'downloadOmnichannelInteractions',_0xbb43('0x23'),'ignorePauseForPreviewCalls',_0xbb43('0x24'),_0xbb43('0x25'),'chatAutoanswerDelay','emailAutoanswer',_0xbb43('0x26'),_0xbb43('0x27'),_0xbb43('0x28'),_0xbb43('0x29'),'openchannelAutoanswerDelay',_0xbb43('0x2a'),'faxAutoanswerDelay',_0xbb43('0x2b'),'whatsappAutoanswerDelay'];exports[_0xbb43('0x2c')]=function(){return this['isAuthenticated'](!![])[_0xbb43('0x2d')](function(_0x451cbd,_0x577ddd,_0x1d0768){if(_0x451cbd['user']){_0x1d0768();}else{return db[_0xbb43('0x2e')][_0xbb43('0x2f')]({'where':{'id':_0x451cbd[_0xbb43('0x30')]['id']},'attributes':['id','closed','disposition'],'raw':!![]})['then'](function(_0x269ca5){if(_0x269ca5&&_0x269ca5[_0xbb43('0x31')]){return _0x577ddd['status'](_0x269ca5[_0xbb43('0x32')]===_0xbb43('0x33')?0x195:0x193)[_0xbb43('0x34')]({'message':_0x269ca5[_0xbb43('0x32')]==='unmanaged'?'Unmanaged.':_0xbb43('0x35')});}else{_0x1d0768();}})[_0xbb43('0x36')](function(_0xa88db0){_0x1d0768(_0xa88db0);});}});};exports[_0xbb43('0x37')]=function isAuthenticated(_0x510b05){return compose()[_0xbb43('0x2d')](function(_0x21d386,_0x473828,_0x539730){var _0x2ad6da;if(_0x21d386['headers'][_0xbb43('0x38')]){if(_[_0xbb43('0x39')](_0x21d386[_0xbb43('0x3a')][_0xbb43('0x38')],'Basic')){var _0x157d62=basicAuth(_0x21d386);db['User']['find']({'where':{'name':_0x157d62['name']}})[_0xbb43('0x3b')](function(_0x573a05){if(!_0x573a05||!_0x573a05[_0xbb43('0x3c')](_0x157d62[_0xbb43('0x3d')])){return _0x473828[_0xbb43('0x3e')](0x191)['json']({'message':_0xbb43('0x3f')});}_0x21d386[_0xbb43('0x40')]={'id':_0x573a05['id']};_0x539730();})[_0xbb43('0x36')](function(_0xd987fa){_0x539730(_0xd987fa);});}else if(_[_0xbb43('0x39')](_0x21d386[_0xbb43('0x3a')][_0xbb43('0x38')],_0xbb43('0x41'))){validateJwt(_0x21d386,_0x473828,_0x539730);}else{if(_0x510b05){_0x539730();}else{return _0x473828['status'](0x193)[_0xbb43('0x34')]({'message':_0xbb43('0x42')});}}}else if(_0x21d386[_0xbb43('0x43')][_0xbb43('0x44')]){try{var _0x4015ec={'audience':hardwareConf[_0xbb43('0x45')](),'issuer':hardwareConf[_0xbb43('0x45')]()};verifyJwt(_0x21d386[_0xbb43('0x43')][_0xbb43('0x44')],_0x4015ec)[_0xbb43('0x3b')](function(_0x21346a){return db[_0xbb43('0x46')][_0xbb43('0x47')]({'where':{'id':_0x21346a[_0xbb43('0x48')]}})[_0xbb43('0x3b')](function(_0x405f36){_0x2ad6da=_0x405f36;return db['Setting'][_0xbb43('0x2f')]({'where':{'id':0x1},'attributes':[_0xbb43('0x49'),'blockDuration'],'raw':!![]});})[_0xbb43('0x3b')](function(_0x2c9a7c){if(!_0x2ad6da||!_[_0xbb43('0x4a')](_0x2ad6da['apiKeyNonce'],_0x21346a['nonce'])){return _0x473828['status'](0x191)[_0xbb43('0x34')]({'message':_0xbb43('0x4b')});}if(_0x2ad6da['disabled']){return _0x473828['status'](0x191)[_0xbb43('0x34')]({'message':_0xbb43('0x4c')});}if(_0x2ad6da[_0xbb43('0x4d')]){if(_0x2c9a7c[_0xbb43('0x4e')]>0x0){if(moment(_0x2ad6da[_0xbb43('0x4f')])['add'](_0x2c9a7c[_0xbb43('0x4e')],_0xbb43('0x50'))>moment()){return _0x473828[_0xbb43('0x3e')](0x191)[_0xbb43('0x34')]({'message':_0xbb43('0x4c')});}}else{return _0x473828['status'](0x191)[_0xbb43('0x34')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x21d386[_0xbb43('0x40')]={'id':_0x2ad6da['id']};_0x539730();});})[_0xbb43('0x36')](function(){return _0x473828['status'](0x191)[_0xbb43('0x34')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x1fcf64){_0x539730(_0x1fcf64);}}else if(_0x510b05){_0x539730();}else{return _0x473828[_0xbb43('0x3e')](0x193)[_0xbb43('0x34')]({'message':_0xbb43('0x42')});}})['use'](function(_0x3e0871,_0x136bd4,_0x59750b){if(_0x3e0871[_0xbb43('0x40')]){db['User'][_0xbb43('0x47')]({'where':{'id':_0x3e0871[_0xbb43('0x40')]['id']},'attributes':userAttributes})[_0xbb43('0x3b')](function(_0x14e57e){if(!_0x14e57e){return _0x136bd4[_0xbb43('0x3e')](0x194)[_0xbb43('0x34')]({'message':'User\x20not\x20found.'});}_0x3e0871[_0xbb43('0x40')]=_0x14e57e;_0x59750b();})['catch'](function(_0x307f1e){_0x59750b(_0x307f1e);});}else if(_0x510b05){_0x59750b();}else{return _0x136bd4[_0xbb43('0x3e')](0x194)[_0xbb43('0x34')]({'message':_0xbb43('0x51')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xbb43('0x2d')](function(_0x39f75f,_0x4bc351,_0x24ba15){return licenseUtil[_0xbb43('0x52')]()[_0xbb43('0x3b')](function(_0x40f519){if(_0x40f519[_0xbb43('0x53')]){_0x24ba15();}else{return _0x4bc351['status'](0x193)[_0xbb43('0x34')]({'message':_0xbb43('0x54')});}})['catch'](function(_0x1a66f0){_0x24ba15(_0x1a66f0);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()['use'](function(_0x4d7034,_0x5e2e6d,_0x1c3482){return licenseUtil['getLicense']()[_0xbb43('0x3b')](function(_0x5e5c86){if(_0x5e5c86[_0xbb43('0x55')]){_0x1c3482();}else{return _0x5e2e6d[_0xbb43('0x3e')](0x193)[_0xbb43('0x34')]({'message':'Forbidden'});}})[_0xbb43('0x36')](function(_0x4d9f18){_0x1c3482(_0x4d9f18);});});};exports[_0xbb43('0x56')]=function(_0x2518bf,_0xd43d24,_0x29840e){_0x2518bf[_0xbb43('0x56')]=!![];return _0x29840e();};exports[_0xbb43('0x57')]=function signToken(_0x37d8d3){return signJwt(_0x37d8d3);};exports['setTokenCookie']=function(_0x93f6e7,_0x26ea59){if(!_0x93f6e7[_0xbb43('0x40')]){return _0x26ea59[_0xbb43('0x3e')](0x194)['json']({'message':_0xbb43('0x58')});}var _0x3233b7={'payload':{'id':_0x93f6e7[_0xbb43('0x40')]['id'],'role':_0x93f6e7[_0xbb43('0x40')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x3233b7)[_0xbb43('0x3b')](function(_0x3fdb10){_0x26ea59[_0xbb43('0x59')]('motion.token',_0x3fdb10);_0x26ea59[_0xbb43('0x5a')](_0xbb43('0x5b'));})[_0xbb43('0x36')](function(_0x1dc40a){return _0x26ea59[_0xbb43('0x3e')](0x1f4)['send'](_0x1dc40a);});};exports['retrieveApiKey']=function(_0xb44557){if(_['isNil'](_0xb44557[_0xbb43('0x5c')])||_[_0xbb43('0x5d')](_0xb44557['apiKeyIat'])){return null;}else{return createJwt(_0xb44557);}};exports[_0xbb43('0x5e')]=function(_0x3719dc){_0x3719dc[_0xbb43('0x5c')]=generateNonce();_0x3719dc[_0xbb43('0x5f')]=generateIssuedAt();return createJwt(_0x3719dc);};exports[_0xbb43('0x60')]=function(_0x5cb3c6,_0x124f88){var _0x539ffc=_0x5cb3c6['query'][_0xbb43('0x44')];if(_0x539ffc){var _0x1b9307={'nonce':_0x124f88[_0xbb43('0x5c')],'iat':_0x124f88[_0xbb43('0x5f')],'audience':hardwareConf[_0xbb43('0x45')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x539ffc,_0x1b9307)['then'](function(){return generateApiKey(_0x124f88);});}else{throw{'message':_0xbb43('0x61')};}};exports[_0xbb43('0x62')]=function(_0x3a84ad){var _0x308646=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x308646[_0xbb43('0x63')](_0x3a84ad))throw new db[(_0xbb43('0x64'))][(_0xbb43('0x65'))](_0xbb43('0x66'));return;};exports[_0xbb43('0x67')]=function(_0x578b85,_0x1b6f96,_0xb996d7){var _0x432bd8=encryptor[_0xbb43('0x68')](_0x1b6f96)[_0xbb43('0x69')](',');for(var _0x1fae27=0x0;_0x1fae27<_0xb996d7;_0x1fae27++){if(!_0x432bd8[_0x1fae27])break;if(_0x578b85[_0xbb43('0x6a')]()===_0x432bd8[_0x1fae27][_0xbb43('0x6a')]()){var _0x3e01e4=util['format']('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0xb996d7);if(_0xb996d7===0x1){_0x3e01e4=_0xbb43('0x6b');}throw new db[(_0xbb43('0x64'))][(_0xbb43('0x65'))](_0x3e01e4);}}return;};exports[_0xbb43('0x6c')]=function(_0x38814a,_0x19e27e){var _0x2e01fb=_0x19e27e?encryptor['decryptString'](_0x19e27e)[_0xbb43('0x69')](','):[];if(_0x2e01fb['length']===0x5){_0x2e01fb['splice'](-0x1,0x1);}_0x2e01fb[_0xbb43('0x6d')](_0x38814a);return encryptor[_0xbb43('0x6e')](_0x2e01fb[_0xbb43('0x6f')](','));};function signJwt(_0x22ce17){var _0x24393a=BPromise[_0xbb43('0x70')](jwt[_0xbb43('0x71')],{'context':jwt});var _0x341481=_0x22ce17['secret']||config['secrets'][_0xbb43('0xa')];return new BPromise(function(_0x2b96b8,_0x137e75){_0x24393a(_0x22ce17[_0xbb43('0x72')],_0x341481,_0x22ce17[_0xbb43('0x73')])[_0xbb43('0x3b')](function(_0x12717e){_0x2b96b8(_0x12717e);})[_0xbb43('0x36')](function(_0x3ca6ad){_0x137e75(_0x3ca6ad);});});}function verifyJwt(_0x555426,_0x165936,_0x392d1a){var _0x234bc7=BPromise[_0xbb43('0x70')](jwt[_0xbb43('0x74')],{'context':jwt});var _0x33a4db=_0x392d1a||config['secrets'][_0xbb43('0xa')];return new BPromise(function(_0xb48be2,_0x42e437){_0x234bc7(_0x555426,_0x33a4db,_0x165936)[_0xbb43('0x3b')](function(_0xc34a02){_0xb48be2(_0xc34a02);})['catch'](function(_0x3c260f){_0x42e437(_0x3c260f);});});}function generateNonce(){return crypto[_0xbb43('0x75')](0x10)[_0xbb43('0x76')](_0xbb43('0x77'));}function generateIssuedAt(){return Math[_0xbb43('0x78')](Date[_0xbb43('0x79')]()/0x3e8)[_0xbb43('0x76')]();}function createJwt(_0x2992ea){var _0x10fd8b={'payload':{'iat':_0x2992ea[_0xbb43('0x5f')],'nonce':_0x2992ea['apiKeyNonce']},'options':{'algorithm':_0xbb43('0x7a'),'subject':_0x2992ea['id']['toString'](),'issuer':hardwareConf[_0xbb43('0x45')](),'audience':hardwareConf[_0xbb43('0x45')]()}};return signJwt(_0x10fd8b)[_0xbb43('0x3b')](function(_0x3dbcd9){return{'iat':_0x2992ea[_0xbb43('0x5f')],'nonce':_0x2992ea['apiKeyNonce'],'token':_0x3dbcd9};});}
\ No newline at end of file
+var _0x008c=['The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','sign','session','payload','options','promisify','verify','randomBytes','hex','floor','HS512','toString','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','role','name','userpic','permissions','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','hotdesk','interface','userProfileId','privacyEnabled','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswer','smsAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','disposition','then','unmanaged','json','headers','startsWith','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','update','Forbidden','isWebrtcLicence','getLicense','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x008c,0x188));var _0xc008=function(_0x3a8d18,_0x34096f){_0x3a8d18=_0x3a8d18-0x0;var _0x13cb5d=_0x008c[_0x3a8d18];return _0x13cb5d;};'use strict';var db=require(_0xc008('0x0'))['db'];var config=require(_0xc008('0x1'));var hardwareConf=require(_0xc008('0x2'));var licenseUtil=require(_0xc008('0x3'));var encryptor=require(_0xc008('0x4'));var _=require('lodash');var jwt=require(_0xc008('0x5'));var expressJwt=require(_0xc008('0x6'));var compose=require(_0xc008('0x7'));var basicAuth=require(_0xc008('0x8'));var crypto=require(_0xc008('0x9'));var BPromise=require(_0xc008('0xa'));var util=require(_0xc008('0xb'));var moment=require(_0xc008('0xc'));var validateJwt=expressJwt({'secret':config[_0xc008('0xd')]['session']});var userAttributes=['id',_0xc008('0xe'),'fullname',_0xc008('0xf'),'internal','email',_0xc008('0x10'),_0xc008('0x11'),'md5secret','voicePause','chatPause',_0xc008('0x12'),_0xc008('0x13'),'smsPause',_0xc008('0x14'),_0xc008('0x15'),_0xc008('0x16'),_0xc008('0x17'),_0xc008('0x18'),_0xc008('0x19'),_0xc008('0x1a'),'passwordResetAt','alias',_0xc008('0x1b'),'phoneBarAutoAnswerDelay',_0xc008('0x1c'),_0xc008('0x1d'),_0xc008('0x1e'),_0xc008('0x1f'),_0xc008('0x20'),'phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort',_0xc008('0x21'),_0xc008('0x22'),_0xc008('0x23'),_0xc008('0x24'),'settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions',_0xc008('0x25'),_0xc008('0x26'),'selectRecallMeCampaign',_0xc008('0x27'),'chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer',_0xc008('0x28'),'openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer',_0xc008('0x29')];exports[_0xc008('0x2a')]=function(){return this[_0xc008('0x2b')](!![])[_0xc008('0x2c')](function(_0x11cc75,_0x110128,_0x4f43e2){if(_0x11cc75[_0xc008('0x2d')]){_0x4f43e2();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x11cc75[_0xc008('0x2e')]['id']},'attributes':['id',_0xc008('0x2f'),_0xc008('0x30')],'raw':!![]})[_0xc008('0x31')](function(_0x5410f5){if(_0x5410f5&&_0x5410f5['closed']){return _0x110128['status'](_0x5410f5[_0xc008('0x30')]===_0xc008('0x32')?0x195:0x193)[_0xc008('0x33')]({'message':_0x5410f5[_0xc008('0x30')]==='unmanaged'?'Unmanaged.':'Forbidden.'});}else{_0x4f43e2();}})['catch'](function(_0x4caaf4){_0x4f43e2(_0x4caaf4);});}});};exports[_0xc008('0x2b')]=function isAuthenticated(_0x29ba43){return compose()[_0xc008('0x2c')](function(_0x529961,_0x24c14c,_0x32390d){var _0x209591;if(_0x529961[_0xc008('0x34')]['authorization']){if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],'Basic')){var _0x539766=basicAuth(_0x529961);db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'name':_0x539766[_0xc008('0xf')]}})[_0xc008('0x31')](function(_0x1de04b){if(!_0x1de04b||!_0x1de04b[_0xc008('0x38')](_0x539766[_0xc008('0x39')])){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x3b')});}_0x529961[_0xc008('0x2d')]={'id':_0x1de04b['id']};_0x32390d();})[_0xc008('0x3c')](function(_0x596ee8){_0x32390d(_0x596ee8);});}else if(_[_0xc008('0x35')](_0x529961[_0xc008('0x34')]['authorization'],_0xc008('0x3d'))){validateJwt(_0x529961,_0x24c14c,_0x32390d);}else{if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}}}else if(_0x529961[_0xc008('0x3f')][_0xc008('0x40')]){try{var _0x7cfbc5={'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};verifyJwt(_0x529961['query'][_0xc008('0x40')],_0x7cfbc5)[_0xc008('0x31')](function(_0x459df4){return db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x459df4[_0xc008('0x42')]}})[_0xc008('0x31')](function(_0x5d0e06){_0x209591=_0x5d0e06;return db[_0xc008('0x43')][_0xc008('0x44')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xc008('0x45')],'raw':!![]});})[_0xc008('0x31')](function(_0x5e38d5){if(!_0x209591||!_[_0xc008('0x46')](_0x209591[_0xc008('0x47')],_0x459df4[_0xc008('0x48')])){return _0x24c14c['status'](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x209591[_0xc008('0x49')]){return _0x24c14c['status'](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}if(_0x209591[_0xc008('0x4b')]){if(_0x5e38d5[_0xc008('0x45')]>0x0){if(moment(_0x209591[_0xc008('0x4c')])[_0xc008('0x4d')](_0x5e38d5[_0xc008('0x45')],_0xc008('0x4e'))>moment()){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}else{return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});}}_0x529961['user']={'id':_0x209591['id']};_0x32390d();});})[_0xc008('0x3c')](function(){return _0x24c14c[_0xc008('0x3a')](0x191)[_0xc008('0x33')]({'message':_0xc008('0x4a')});});}catch(_0x49a16d){_0x32390d(_0x49a16d);}}else if(_0x29ba43){_0x32390d();}else{return _0x24c14c[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x3e')});}})[_0xc008('0x2c')](function(_0x2d142d,_0x5706bb,_0x398cdd){if(_0x2d142d[_0xc008('0x2d')]){db[_0xc008('0x36')][_0xc008('0x37')]({'where':{'id':_0x2d142d[_0xc008('0x2d')]['id']},'attributes':userAttributes})['then'](function(_0xf4cc4b){if(!_0xf4cc4b){return _0x5706bb[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x4f')});}_0x2d142d['user']=_0xf4cc4b;_0x398cdd();})[_0xc008('0x3c')](function(_0xe37446){_0x398cdd(_0xe37446);});}else if(_0x29ba43){_0x398cdd();}else{return _0x5706bb[_0xc008('0x3a')](0x194)['json']({'message':_0xc008('0x50')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xc008('0x2c')](function(_0x5d3a72,_0x46fa8f,_0x213014){return licenseUtil['getLicense']()[_0xc008('0x31')](function(_0x24ba0f){if(_0x24ba0f[_0xc008('0x51')]){_0x213014();}else{return _0x46fa8f['status'](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x44fc5d){_0x213014(_0x44fc5d);});});};exports[_0xc008('0x53')]=function isWebrtcLicence(){return compose()[_0xc008('0x2c')](function(_0x59ca2b,_0x47cafa,_0x5283a8){return licenseUtil[_0xc008('0x54')]()[_0xc008('0x31')](function(_0x103a83){if(_0x103a83[_0xc008('0x55')]){_0x5283a8();}else{return _0x47cafa[_0xc008('0x3a')](0x193)[_0xc008('0x33')]({'message':_0xc008('0x52')});}})[_0xc008('0x3c')](function(_0x572593){_0x5283a8(_0x572593);});});};exports['isMiddleware']=function(_0x516e43,_0x2d5a49,_0x2651cf){_0x516e43[_0xc008('0x56')]=!![];return _0x2651cf();};exports['signToken']=function signToken(_0x28bc33){return signJwt(_0x28bc33);};exports[_0xc008('0x57')]=function(_0x17ab1a,_0x1c2c50){if(!_0x17ab1a[_0xc008('0x2d')]){return _0x1c2c50[_0xc008('0x3a')](0x194)[_0xc008('0x33')]({'message':_0xc008('0x58')});}var _0x3fd7d9={'payload':{'id':_0x17ab1a[_0xc008('0x2d')]['id'],'role':_0x17ab1a['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x3fd7d9)[_0xc008('0x31')](function(_0x51cb14){_0x1c2c50[_0xc008('0x59')](_0xc008('0x5a'),_0x51cb14);_0x1c2c50[_0xc008('0x5b')]('/dashboards/general');})[_0xc008('0x3c')](function(_0x32b435){return _0x1c2c50[_0xc008('0x3a')](0x1f4)[_0xc008('0x5c')](_0x32b435);});};exports[_0xc008('0x5d')]=function(_0x51105f){if(_[_0xc008('0x5e')](_0x51105f[_0xc008('0x47')])||_['isNil'](_0x51105f[_0xc008('0x5f')])){return null;}else{return createJwt(_0x51105f);}};exports[_0xc008('0x60')]=function(_0x5b5fbf){_0x5b5fbf['apiKeyNonce']=generateNonce();_0x5b5fbf[_0xc008('0x5f')]=generateIssuedAt();return createJwt(_0x5b5fbf);};exports[_0xc008('0x61')]=function(_0x20947b,_0x30d0aa){var _0x14b6a0=_0x20947b['query']['apikey'];if(_0x14b6a0){var _0x34b72a={'nonce':_0x30d0aa['apiKeyNonce'],'iat':_0x30d0aa[_0xc008('0x5f')],'audience':hardwareConf[_0xc008('0x41')](),'issuer':hardwareConf[_0xc008('0x41')]()};return verifyJwt(_0x14b6a0,_0x34b72a)[_0xc008('0x31')](function(){return generateApiKey(_0x30d0aa);});}else{throw{'message':_0xc008('0x62')};}};exports[_0xc008('0x63')]=function(_0x49d8b0){var _0x2ea742=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2ea742[_0xc008('0x64')](_0x49d8b0))throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0xc008('0x67'));return;};exports['validatePasswordHistory']=function(_0x41fae3,_0x4fdab4,_0x535e6e){var _0x5dbfca=encryptor[_0xc008('0x68')](_0x4fdab4)[_0xc008('0x69')](',');for(var _0x5dfb69=0x0;_0x5dfb69<_0x535e6e;_0x5dfb69++){if(!_0x5dbfca[_0x5dfb69])break;if(_0x41fae3['toLowerCase']()===_0x5dbfca[_0x5dfb69][_0xc008('0x6a')]()){var _0x2d8361=util[_0xc008('0x6b')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x535e6e);if(_0x535e6e===0x1){_0x2d8361=_0xc008('0x6c');}throw new db[(_0xc008('0x65'))][(_0xc008('0x66'))](_0x2d8361);}}return;};exports[_0xc008('0x6d')]=function(_0x5baff1,_0x4022dd){var _0x4eaa6d=_0x4022dd?encryptor[_0xc008('0x68')](_0x4022dd)[_0xc008('0x69')](','):[];if(_0x4eaa6d[_0xc008('0x6e')]===0x5){_0x4eaa6d[_0xc008('0x6f')](-0x1,0x1);}_0x4eaa6d[_0xc008('0x70')](_0x5baff1);return encryptor[_0xc008('0x71')](_0x4eaa6d['join'](','));};function signJwt(_0x375e71){var _0x570001=BPromise['promisify'](jwt[_0xc008('0x72')],{'context':jwt});var _0x30aa1e=_0x375e71['secret']||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x3e373e,_0x4517c0){_0x570001(_0x375e71[_0xc008('0x74')],_0x30aa1e,_0x375e71[_0xc008('0x75')])[_0xc008('0x31')](function(_0x57ce9a){_0x3e373e(_0x57ce9a);})[_0xc008('0x3c')](function(_0x462e1e){_0x4517c0(_0x462e1e);});});}function verifyJwt(_0x3bfb15,_0x2a60e6,_0xb3ca0f){var _0x167425=BPromise[_0xc008('0x76')](jwt[_0xc008('0x77')],{'context':jwt});var _0xbc430a=_0xb3ca0f||config[_0xc008('0xd')][_0xc008('0x73')];return new BPromise(function(_0x2b5eb6,_0x131b81){_0x167425(_0x3bfb15,_0xbc430a,_0x2a60e6)[_0xc008('0x31')](function(_0x4e0251){_0x2b5eb6(_0x4e0251);})[_0xc008('0x3c')](function(_0x2e5467){_0x131b81(_0x2e5467);});});}function generateNonce(){return crypto[_0xc008('0x78')](0x10)['toString'](_0xc008('0x79'));}function generateIssuedAt(){return Math[_0xc008('0x7a')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x1a03fd){var _0x2a4c2b={'payload':{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd[_0xc008('0x47')]},'options':{'algorithm':_0xc008('0x7b'),'subject':_0x1a03fd['id'][_0xc008('0x7c')](),'issuer':hardwareConf[_0xc008('0x41')](),'audience':hardwareConf[_0xc008('0x41')]()}};return signJwt(_0x2a4c2b)[_0xc008('0x31')](function(_0x1b059b){return{'iat':_0x1a03fd[_0xc008('0x5f')],'nonce':_0x1a03fd['apiKeyNonce'],'token':_0x1b059b};});}
\ No newline at end of file
index caa28e2..b1fe8be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['user','clause','tags','skip','checkListsRestrictions','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','startsWith','cf_','map','CmCustomField','findOne','slice','all','fieldType','type','lodash','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','default','where','fields','filter'];(function(_0x561f31,_0x4cb2af){var _0x2f4c62=function(_0x3019e5){while(--_0x3019e5){_0x561f31['push'](_0x561f31['shift']());}};_0x2f4c62(++_0x4cb2af);}(_0xb10b,0x12a));var _0xbb10=function(_0x405f28,_0x3ea99f){_0x405f28=_0x405f28-0x0;var _0x1a6075=_0xb10b[_0x405f28];return _0x1a6075;};'use strict';var _=require(_0xbb10('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0xbb10('0x1'))['db'];exports[_0xbb10('0x2')]=function(_0x1dcb08,_0x4d688c,_0x4541ae,_0x9bbed){var _0x460981={'count':0x0,'rows':[]};var _0x22320e=sqlUtils[_0xbb10('0x3')](_0x4d688c,_0x1dcb08);if(_0x22320e){return Promise[_0xbb10('0x4')](_0x460981);}var _0x481979=sqlUtils[_0xbb10('0x5')]();var _0x3cdd53={};var _0x513741=![];var _0x1b9e94=![];return Promise[_0xbb10('0x4')]()[_0xbb10('0x6')](function(){if(_0x1dcb08[_0xbb10('0x7')]){return sqlUtils[_0xbb10('0x8')](_0x1dcb08[_0xbb10('0x7')],_0x9bbed);}else{return sqlUtils[_0xbb10('0x9')](_0x1dcb08,_0x9bbed);}})[_0xbb10('0x6')](function(_0x5ab04a){_0x481979['where'](_0x5ab04a[_0xbb10('0xa')]);_0x481979[_0xbb10('0xb')](_0x5ab04a[_0xbb10('0xc')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xd')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xe')][_0xbb10('0xf')]);_0x3cdd53=_0x5ab04a[_0xbb10('0x10')];_0x1b9e94=_0x5ab04a[_0xbb10('0xe')][_0xbb10('0x11')];return sqlUtils[_0xbb10('0x12')](_0x4d688c,_0x1dcb08,_0x1b9e94);})['then'](function(_0x26e021){_0x481979[_0xbb10('0xb')](_0x26e021);var _0x45b9d6=_0x1dcb08[_0xbb10('0x7')]?_0x3cdd53[_0xbb10('0x13')]:_0x1dcb08[_0xbb10('0x14')];_0x513741=_0x45b9d6?!![]:![];return sqlUtils[_0xbb10('0x15')](_0x481979,_0x45b9d6);})[_0xbb10('0x6')](function(_0x3e26f4){_0x460981[_0xbb10('0x16')]=_0x3e26f4;if(_0x460981['count']===0x0){return;}return sqlUtils[_0xbb10('0x17')](_0x481979,_0x1dcb08[_0xbb10('0xc')],_0x4541ae,_0x513741,_0x3cdd53[_0xbb10('0xf')],_0x1b9e94);})[_0xbb10('0x6')](function(_0x378da8){if(!_0x378da8){return[];}return sqlUtils[_0xbb10('0x18')](_0x378da8,_0x1dcb08,_0x4541ae);})[_0xbb10('0x6')](function(_0x30efc6){_0x460981[_0xbb10('0x19')]=_0x30efc6;return _0x460981;})[_0xbb10('0x1a')](function(_0x48b6e9){throw _0x48b6e9;});};exports[_0xbb10('0x1b')]=function(){var _0x19f48d={};var _0x388fab=[];return db[_0xbb10('0x1c')][_0xbb10('0x1b')]()[_0xbb10('0x6')](function(_0x4deb49){_0x19f48d=_0x4deb49;var _0x12f888=Object[_0xbb10('0x1d')](_0x19f48d)['filter'](function(_0x4c4b0d){return _[_0xbb10('0x1e')](_0x4c4b0d,_0xbb10('0x1f'))?_0x4c4b0d:undefined;});var _0x2e911d=_0x12f888[_0xbb10('0x20')](function(_0x445761){return db[_0xbb10('0x21')][_0xbb10('0x22')]({'where':{'id':_0x445761[_0xbb10('0x23')](0x3)},'raw':!![]});});return Promise[_0xbb10('0x24')](_0x2e911d);})[_0xbb10('0x6')](function(_0x3ba6cd){for(var _0x26ad93=0x0;_0x26ad93<_0x3ba6cd['length'];_0x26ad93++){if(_0x3ba6cd[_0x26ad93]){var _0x4fedac='cf_'+_0x3ba6cd[_0x26ad93]['id'];_0x19f48d[_0x4fedac][_0xbb10('0x25')]=_0x3ba6cd[_0x26ad93][_0xbb10('0x26')];}}_0x388fab=_[_0xbb10('0x20')](Object['keys'](_0x19f48d),function(_0x2fdde9){return{'name':_0x2fdde9,'type':_0x19f48d[_0x2fdde9][_0xbb10('0x26')]};});return _0x388fab;})[_0xbb10('0x1a')](function(_0x1d5e95){throw _0x1d5e95;});};
\ No newline at end of file
+var _0x0b0e=['tags','skip','tag','count','getFilteredContacts','catch','CmContact','keys','cf_','map','findOne','all','length','type','lodash','../../mysqldb','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','default','fields','filter','user','clause'];(function(_0x11d348,_0x54335e){var _0x1bcb68=function(_0x183edd){while(--_0x183edd){_0x11d348['push'](_0x11d348['shift']());}};_0x1bcb68(++_0x54335e);}(_0x0b0e,0x187));var _0xe0b0=function(_0x112e2a,_0x364486){_0x112e2a=_0x112e2a-0x0;var _0x4f8af9=_0x0b0e[_0x112e2a];return _0x4f8af9;};'use strict';var _=require(_0xe0b0('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0xe0b0('0x1'))['db'];exports['findAll']=function(_0x7e5a8a,_0xdf715e,_0x3b5e2b,_0x25153a){var _0x28040c={'count':0x0,'rows':[]};var _0x38a058=sqlUtils[_0xe0b0('0x2')](_0xdf715e,_0x7e5a8a);if(_0x38a058){return Promise[_0xe0b0('0x3')](_0x28040c);}var _0x30e20d=sqlUtils[_0xe0b0('0x4')]();var _0x219b1c={};var _0x5cf9cc=![];var _0x50be7f=![];return Promise[_0xe0b0('0x3')]()[_0xe0b0('0x5')](function(){if(_0x7e5a8a[_0xe0b0('0x6')]){return sqlUtils[_0xe0b0('0x7')](_0x7e5a8a['search'],_0x25153a);}else{return sqlUtils[_0xe0b0('0x8')](_0x7e5a8a,_0x25153a);}})[_0xe0b0('0x5')](function(_0x553d4f){_0x30e20d[_0xe0b0('0x9')](_0x553d4f[_0xe0b0('0xa')]);_0x30e20d['where'](_0x553d4f[_0xe0b0('0xb')]);_0x30e20d[_0xe0b0('0x9')](_0x553d4f[_0xe0b0('0xc')]);_0x30e20d['where'](_0x553d4f[_0xe0b0('0xd')][_0xe0b0('0xe')]);_0x219b1c=_0x553d4f[_0xe0b0('0xf')];_0x50be7f=_0x553d4f[_0xe0b0('0xd')][_0xe0b0('0x10')];return sqlUtils['checkListsRestrictions'](_0xdf715e,_0x7e5a8a,_0x50be7f);})[_0xe0b0('0x5')](function(_0x154de6){_0x30e20d[_0xe0b0('0x9')](_0x154de6);var _0x24babd=_0x7e5a8a[_0xe0b0('0x6')]?_0x219b1c['ids']:_0x7e5a8a[_0xe0b0('0x11')];_0x5cf9cc=_0x24babd?!![]:![];return sqlUtils['countFilteredContacts'](_0x30e20d,_0x24babd);})[_0xe0b0('0x5')](function(_0xadee6e){_0x28040c['count']=_0xadee6e;if(_0x28040c[_0xe0b0('0x12')]===0x0){return;}return sqlUtils['buildContactsQuery'](_0x30e20d,_0x7e5a8a[_0xe0b0('0xb')],_0x3b5e2b,_0x5cf9cc,_0x219b1c[_0xe0b0('0xe')],_0x50be7f);})['then'](function(_0x54a3eb){if(!_0x54a3eb){return[];}return sqlUtils[_0xe0b0('0x13')](_0x54a3eb,_0x7e5a8a,_0x3b5e2b);})['then'](function(_0x4df8da){_0x28040c['rows']=_0x4df8da;return _0x28040c;})[_0xe0b0('0x14')](function(_0x50fa4a){throw _0x50fa4a;});};exports['describe']=function(){var _0x10cde1={};var _0x59dff5=[];return db[_0xe0b0('0x15')]['describe']()[_0xe0b0('0x5')](function(_0x1cd7c4){_0x10cde1=_0x1cd7c4;var _0x3e10b3=Object[_0xe0b0('0x16')](_0x10cde1)[_0xe0b0('0xc')](function(_0x58b804){return _['startsWith'](_0x58b804,_0xe0b0('0x17'))?_0x58b804:undefined;});var _0x5512bb=_0x3e10b3[_0xe0b0('0x18')](function(_0x31b5f8){return db['CmCustomField'][_0xe0b0('0x19')]({'where':{'id':_0x31b5f8['slice'](0x3)},'raw':!![]});});return Promise[_0xe0b0('0x1a')](_0x5512bb);})['then'](function(_0x28586d){for(var _0x576352=0x0;_0x576352<_0x28586d[_0xe0b0('0x1b')];_0x576352++){if(_0x28586d[_0x576352]){var _0x4de537=_0xe0b0('0x17')+_0x28586d[_0x576352]['id'];_0x10cde1[_0x4de537]['fieldType']=_0x28586d[_0x576352][_0xe0b0('0x1c')];}}_0x59dff5=_['map'](Object[_0xe0b0('0x16')](_0x10cde1),function(_0x3c3bc2){return{'name':_0x3c3bc2,'type':_0x10cde1[_0x3c3bc2][_0xe0b0('0x1c')]};});return _0x59dff5;})[_0xe0b0('0x14')](function(_0x3ec2){throw _0x3ec2;});};
\ No newline at end of file
index f3558f8..deaebc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4e3=['email','CompanyId','updatedAt','deletedAt','TagIds','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','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?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','datetime','castTo','DATE','buildExpression','default','text','value','Tag','map','clause','tags','ids','User','user','uc.UserId\x20=\x20?','keys','some','compact','push','Contact','and','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','attributes','select','group','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','c.id','isEmpty','exports','lodash','../parsers/advancedSearch','../interaction/utils','../../mysqldb','role','ListId','from','where','subqry','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','firstName','lastName','fax'];(function(_0x43659e,_0x19fe5f){var _0x4c8b1b=function(_0x8b3d5){while(--_0x8b3d5){_0x43659e['push'](_0x43659e['shift']());}};_0x4c8b1b(++_0x19fe5f);}(_0xe4e3,0x189));var _0x3e4e=function(_0x2f778a,_0x415717){_0x2f778a=_0x2f778a-0x0;var _0x87cbd4=_0xe4e3[_0x2f778a];return _0x87cbd4;};'use strict';var _=require(_0x3e4e('0x0'));var squel=require('squel');var as=require(_0x3e4e('0x1'));var qs=require('../parsers/qs');var utils=require(_0x3e4e('0x2'));var db=require(_0x3e4e('0x3'))['db'];function skipContactsQuery(_0x480cb6,_0x1e2bc0){var _0x5585e5=![];if(_0x480cb6[_0x3e4e('0x4')]==='agent'&&!_0x1e2bc0['search']&&!_0x1e2bc0[_0x3e4e('0x5')]&&_0x1e2bc0['autocomplete']!=='true'){_0x5585e5=!![];}return _0x5585e5;}function getContactsSubquery(){return squel['select']()[_0x3e4e('0x6')]('cm_contacts','c')[_0x3e4e('0x7')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x365643,_0x5bd5ca){var _0x11e52b=_0x5bd5ca?'c':_0x3e4e('0x8');_0x365643['left_join'](_0x3e4e('0x9'),'uc',_0x3e4e('0xa')+_0x11e52b+_0x3e4e('0xb'))[_0x3e4e('0xc')](_0x3e4e('0xd'),'ct',_0x3e4e('0xe')+_0x11e52b+'.id')[_0x3e4e('0xc')](_0x3e4e('0xf'),'t','t.id\x20=\x20ct.TagId');return _0x365643;}function addFieldsToQuery(_0x5df288,_0x56d7e6,_0x201925,_0x16aab5,_0x10b98a){var _0x2dd4fe=_0x10b98a?'c':_0x3e4e('0x8');if(!_0x56d7e6){_0x56d7e6=['id',_0x3e4e('0x10'),_0x3e4e('0x11'),'phone','mobile',_0x3e4e('0x12'),_0x3e4e('0x13'),_0x3e4e('0x5'),_0x3e4e('0x14'),'createdAt',_0x3e4e('0x15'),_0x3e4e('0x16'),_0x3e4e('0x17')];}else if(!_0x56d7e6['includes']('id')){_0x56d7e6['push']('id');}var _0xcf6803=_0x201925&&_0x10b98a||!_0x201925&&!_0x10b98a;if(_0x16aab5){_0xcf6803=_0x16aab5&&_0x10b98a||!_0x16aab5&&!_0x10b98a;}_0x56d7e6[_0x3e4e('0x18')](function(_0x44e2b0){if(_0x44e2b0===_0x3e4e('0x17')){if(_0xcf6803){_0x5df288[_0x3e4e('0x19')](_0x3e4e('0x1a'),_0x44e2b0);}else if(_0x201925||_0x16aab5){_0x5df288[_0x3e4e('0x19')](_0x2dd4fe+'.'+_0x44e2b0);}}else{_0x5df288[_0x3e4e('0x19')](_0x2dd4fe+'.'+_0x44e2b0);}});return _0x5df288;}function getSqlClauses(){var _0x300519={'default':squel['expr'](),'fields':squel[_0x3e4e('0x1b')](),'filter':squel['expr'](),'tags':{'clause':squel[_0x3e4e('0x1b')](),'ids':null},'user':{'clause':squel[_0x3e4e('0x1b')](),'skip':![]}};return _0x300519;}function parseTagParameter(_0x84fc08){var _0x46dbc6=squel[_0x3e4e('0x1b')]();if(_0x84fc08){var _0x278b30=utils[_0x3e4e('0x1c')](_0x84fc08);_0x278b30[_0x3e4e('0x18')](function(_0x2388c6){_0x46dbc6['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2388c6+',%');});}return _0x46dbc6;}function parseSearchFilter(_0x58d75c){var _0x566cb9=squel[_0x3e4e('0x1b')]();if(_0x58d75c){var _0xde22d=_0x58d75c[_0x3e4e('0x1d')]('\x5c','\x5c\x5c')[_0x3e4e('0x1d')](/'/g,'\x27\x27');if(_0xde22d[_0x3e4e('0x1e')]('\x20')[_0x3e4e('0x1f')]>0x1){_0x566cb9['or'](_0x3e4e('0x20'),qs['getFullTextValue'](_0xde22d),null);}else{if(qs[_0x3e4e('0x21')](_0xde22d)){_0x566cb9['or'](_0x3e4e('0x22'),_0xde22d+'%');_0x566cb9['or'](_0x3e4e('0x23'),_0xde22d+'%');_0x566cb9['or'](_0x3e4e('0x24'),_0xde22d+'%');_0x566cb9['or'](_0x3e4e('0x25'),_0xde22d+'%');}else if(qs['isEmail'](_0xde22d)){_0x566cb9['or'](_0x3e4e('0x26'),_0xde22d+'%');}else{_0x566cb9['or'](_0x3e4e('0x27'),'%'+_0xde22d+'%');_0x566cb9['or'](_0x3e4e('0x28'),'%'+_0xde22d+'%');_0x566cb9['or'](_0x3e4e('0x26'),'%'+_0xde22d+'%');}}}return _0x566cb9;}function parseAdvancedSearchFilter(_0x44c84b,_0x26a426){var _0x26d186=getSqlClauses();var _0x5363dc=as[_0x3e4e('0x29')](_0x44c84b);var _0x4208ee=_0x5363dc[_0x3e4e('0x2a')];for(var _0x588319=0x0;_0x588319<_0x5363dc[_0x3e4e('0x2b')]['length'];_0x588319++){var _0x932d6a=_0x5363dc[_0x3e4e('0x2b')][_0x588319];var _0x45e8a4='c';var _0x404823=_[_0x3e4e('0x2c')](_0x26a426,[_0x3e4e('0x2d'),_0x932d6a[_0x3e4e('0x19')]]);if(_0x404823){if(_0x932d6a['field']==='dateOfBirth'||_0x404823['fieldType']===_0x3e4e('0x2e')){_0x932d6a[_0x3e4e('0x2f')]=_0x3e4e('0x30');}var _0x2842f3=as[_0x3e4e('0x31')](_0x45e8a4,_0x404823['type'],_0x932d6a);_0x26d186[_0x3e4e('0x32')][_0x4208ee](_0x2842f3[_0x3e4e('0x33')],_0x2842f3['value']['start'],_0x2842f3[_0x3e4e('0x34')]['end']);}else{if(_0x932d6a[_0x3e4e('0x19')]===_0x3e4e('0x35')){var _0x195b54=_0x932d6a['value'][_0x3e4e('0x1e')](',')[_0x3e4e('0x36')](function(_0x2e2aed){return Number(_0x2e2aed);});var _0xb6a160=parseTagParameter(_0x195b54);_0x26d186['tags'][_0x3e4e('0x37')]['and'](_0xb6a160);_0x26d186[_0x3e4e('0x38')][_0x3e4e('0x39')]=_0x195b54;}else if(_0x932d6a[_0x3e4e('0x19')]===_0x3e4e('0x3a')){_0x26d186[_0x3e4e('0x3b')][_0x3e4e('0x37')]['and'](_0x3e4e('0x3c'),_0x932d6a[_0x3e4e('0x34')]);_0x26d186[_0x3e4e('0x3b')]['skip']=!![];}}}return _0x26d186;}function parseModelFields(_0x1857fe,_0x4d9977){var _0x4b75fc=squel[_0x3e4e('0x1b')]();var _0x18c918=_(_0x1857fe)[_0x3e4e('0x3d')]()[_0x3e4e('0x36')](function(_0x291719){return _[_0x3e4e('0x3e')](_0x4d9977,[_0x3e4e('0x2d'),_0x291719])?_0x291719:undefined;})[_0x3e4e('0x3f')]()[_0x3e4e('0x34')]();if(_0x1857fe['Contact']){_0x18c918[_0x3e4e('0x40')](_0x3e4e('0x41'));}if(_0x18c918[_0x3e4e('0x1f')]>0x0){_0x18c918['forEach'](function(_0x42ca66){if(_0x42ca66===_0x3e4e('0x5')){_0x4b75fc[_0x3e4e('0x42')](_0x3e4e('0x43'),[]['concat'](_0x1857fe[_0x42ca66]));}else if(_0x42ca66===_0x3e4e('0x41')){var _0x329f5b='%'+_0x1857fe[_0x42ca66]+'%';_0x4b75fc['and'](_0x3e4e('0x44'),_0x329f5b);}else{_0x4b75fc['and']('c.'+_0x42ca66+_0x3e4e('0x45'),_0x1857fe[_0x42ca66]);}});}return _0x4b75fc;}function parseQueryParameters(_0x2aff93,_0x1614a2){var _0x5164fa=getSqlClauses();return Promise[_0x3e4e('0x46')]()[_0x3e4e('0x47')](function(){return parseModelFields(_0x2aff93,_0x1614a2);})[_0x3e4e('0x47')](function(_0x200676){_0x5164fa[_0x3e4e('0x48')]['and'](_0x200676);return parseTagParameter(_0x2aff93[_0x3e4e('0x49')]);})['then'](function(_0x16f802){_0x5164fa['tags'][_0x3e4e('0x37')][_0x3e4e('0x42')](_0x16f802);return parseSearchFilter(_0x2aff93[_0x3e4e('0x4a')]);})[_0x3e4e('0x47')](function(_0x41d360){_0x5164fa[_0x3e4e('0x4a')]=_0x41d360;return _0x5164fa;});}function checkListsRestrictions(_0x4b38ac,_0x27b39f,_0x491098){var _0x25fea1=squel['expr']();return Promise[_0x3e4e('0x46')]()['then'](function(){if(_0x27b39f['search']&&_0x4b38ac[_0x3e4e('0x4')]==='agent'&&!_0x491098){return _0x4b38ac[_0x3e4e('0x4b')]({'attributes':['id'],'raw':!![]});}})[_0x3e4e('0x47')](function(_0x4f5124){if(_0x4f5124){if(_0x4f5124[_0x3e4e('0x1f')]===0x0){_0x25fea1[_0x3e4e('0x42')](_0x3e4e('0x4c'));}else{_0x25fea1[_0x3e4e('0x42')]('c.ListId\x20IN\x20?',_[_0x3e4e('0x36')](_0x4f5124,'id'));}}})[_0x3e4e('0x47')](function(){return _0x25fea1;});}function buildContactsQuery(_0xdc6584,_0x18091d,_0x44d04d,_0x1799fd,_0x37d448,_0x4b9eb2){if(_0x18091d){_0x18091d=_0x44d04d[_0x3e4e('0x4d')];}_0xdc6584=addFieldsToQuery(_0xdc6584,_0x18091d,_0x1799fd,_0x4b9eb2,!![]);var _0xc7d8a7=squel[_0x3e4e('0x4e')]();_0xc7d8a7=addFieldsToQuery(_0xc7d8a7,_0x18091d,_0x1799fd,_0x4b9eb2,![]);if(_0x1799fd||_0x4b9eb2){_0xdc6584=applyJoinClauses(_0xdc6584,!![]);_0xdc6584[_0x3e4e('0x4f')]('c.id');if(_0x44d04d[_0x3e4e('0x50')]){_0xc7d8a7['limit'](_0x44d04d['limit']);}if(_0x44d04d[_0x3e4e('0x51')]){_0xc7d8a7['offset'](_0x44d04d[_0x3e4e('0x51')]);}}else{_0xc7d8a7=applyJoinClauses(_0xc7d8a7,![]);_0xc7d8a7[_0x3e4e('0x4f')](_0x3e4e('0x52'));if(_0x44d04d[_0x3e4e('0x50')]){_0xdc6584[_0x3e4e('0x50')](_0x44d04d[_0x3e4e('0x50')]);}if(_0x44d04d['offset']){_0xdc6584['offset'](_0x44d04d[_0x3e4e('0x51')]);}}_0xc7d8a7[_0x3e4e('0x53')](_0x37d448);if(_0x44d04d[_0x3e4e('0x54')]){_0x44d04d[_0x3e4e('0x54')][_0x3e4e('0x18')](function(_0x5ac113){_0xdc6584[_0x3e4e('0x54')]('c.'+_0x5ac113[0x0],_0x5ac113[0x1]===_0x3e4e('0x55')?![]:!![]);_0xc7d8a7[_0x3e4e('0x54')](_0x3e4e('0x56')+_0x5ac113[0x0],_0x5ac113[0x1]===_0x3e4e('0x55')?![]:!![]);});}_0xc7d8a7[_0x3e4e('0x6')](_0xdc6584,'subqry');return _0xc7d8a7;}function getFilteredContacts(_0x5c755f){var _0x568740=[];return db[_0x3e4e('0x35')][_0x3e4e('0x57')]({'attributes':['id','name',_0x3e4e('0x58')],'raw':!![]})['then'](function(_0x4c78b4){_0x568740=_[_0x3e4e('0x59')](_0x4c78b4,'id');var _0x3a9d3b={'type':db[_0x3e4e('0x5a')][_0x3e4e('0x5b')][_0x3e4e('0x5c')],'model':db[_0x3e4e('0x5d')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x3e4e('0x5e')][_0x3e4e('0x5f')](_0x5c755f[_0x3e4e('0x60')](),_0x3a9d3b);})['then'](function(_0x4e05ec){_0x4e05ec[_0x3e4e('0x18')](function(_0x58e209){if(_0x58e209['TagIds']){_0x58e209[_0x3e4e('0x61')]=[];_0x58e209['TagIds'][_0x3e4e('0x1e')](',')[_0x3e4e('0x18')](function(_0x1eb50f){_0x58e209['Tags'][_0x3e4e('0x40')](_0x568740[_0x1eb50f]);});}delete _0x58e209[_0x3e4e('0x17')];});return _0x4e05ec;});}function countFilteredContacts(_0x39dc06,_0x3ac387){var _0x30db22=_0x39dc06[_0x3e4e('0x62')]();_0x30db22[_0x3e4e('0x19')](_0x3e4e('0x63'));_0x30db22=applyJoinClauses(_0x30db22,!![]);_0x39dc06[_0x3e4e('0x4f')](_0x3e4e('0x64'));var _0x4af760=utils[_0x3e4e('0x1c')](_0x3ac387);if(!_[_0x3e4e('0x65')](_0x4af760)){_0x30db22[_0x3e4e('0x7')]('t.id\x20IN\x20?',_0x4af760);}var _0x2b1f00={'type':db['Sequelize'][_0x3e4e('0x5b')]['SELECT'],'raw':!![]};return db['sequelize'][_0x3e4e('0x5f')](_0x30db22[_0x3e4e('0x60')](),_0x2b1f00)['then'](function(_0x234813){return _0x234813[0x0]['COUNT(*)'];});}module[_0x3e4e('0x66')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x4776=['query','toString','Tags','clone','c.id','isEmpty','t.id\x20IN\x20?','Sequelize','SELECT','COUNT(*)','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','lastName','phone','fax','email','CompanyId','createdAt','deletedAt','TagIds','includes','push','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','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','fieldType','datetime','DATE','default','start','end','Tag','value','map','and','ids','User','user','clause','uc.UserId\x20=\x20?','skip','keys','some','name','Contact','forEach','c.ListId\x20IN\x20?','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','tags','filter','getLists','c.ListId\x20IS\x20NULL','attributes','group','limit','offset','subqry.id','having','order','DESC','findAll','color','keyBy','QueryTypes','sequelize'];(function(_0x213165,_0x4f2a23){var _0x2794df=function(_0x313010){while(--_0x313010){_0x213165['push'](_0x213165['shift']());}};_0x2794df(++_0x4f2a23);}(_0x4776,0x78));var _0x6477=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0x4776[_0x50aa2e];return _0x5e07f0;};'use strict';var _=require(_0x6477('0x0'));var squel=require(_0x6477('0x1'));var as=require(_0x6477('0x2'));var qs=require(_0x6477('0x3'));var utils=require(_0x6477('0x4'));var db=require(_0x6477('0x5'))['db'];function skipContactsQuery(_0x58b0d6,_0x43472c){var _0x5671a0=![];if(_0x58b0d6[_0x6477('0x6')]===_0x6477('0x7')&&!_0x43472c[_0x6477('0x8')]&&!_0x43472c[_0x6477('0x9')]&&_0x43472c[_0x6477('0xa')]!==_0x6477('0xb')){_0x5671a0=!![];}return _0x5671a0;}function getContactsSubquery(){return squel[_0x6477('0xc')]()[_0x6477('0xd')](_0x6477('0xe'),'c')[_0x6477('0xf')](_0x6477('0x10'));}function applyJoinClauses(_0x22f27e,_0x8df14c){var _0x1b5783=_0x8df14c?'c':_0x6477('0x11');_0x22f27e[_0x6477('0x12')](_0x6477('0x13'),'uc',_0x6477('0x14')+_0x1b5783+_0x6477('0x15'))[_0x6477('0x12')](_0x6477('0x16'),'ct',_0x6477('0x17')+_0x1b5783+'.id')[_0x6477('0x12')](_0x6477('0x18'),'t','t.id\x20=\x20ct.TagId');return _0x22f27e;}function addFieldsToQuery(_0x186e88,_0x58767b,_0x15493f,_0x1d5b90,_0x4e2aca){var _0x2b4893=_0x4e2aca?'c':'subqry';if(!_0x58767b){_0x58767b=['id','firstName',_0x6477('0x19'),_0x6477('0x1a'),'mobile',_0x6477('0x1b'),_0x6477('0x1c'),'ListId',_0x6477('0x1d'),_0x6477('0x1e'),'updatedAt',_0x6477('0x1f'),_0x6477('0x20')];}else if(!_0x58767b[_0x6477('0x21')]('id')){_0x58767b[_0x6477('0x22')]('id');}var _0x4e788c=_0x15493f&&_0x4e2aca||!_0x15493f&&!_0x4e2aca;if(_0x1d5b90){_0x4e788c=_0x1d5b90&&_0x4e2aca||!_0x1d5b90&&!_0x4e2aca;}_0x58767b['forEach'](function(_0x531866){if(_0x531866==='TagIds'){if(_0x4e788c){_0x186e88['field'](_0x6477('0x23'),_0x531866);}else if(_0x15493f||_0x1d5b90){_0x186e88[_0x6477('0x24')](_0x2b4893+'.'+_0x531866);}}else{_0x186e88[_0x6477('0x24')](_0x2b4893+'.'+_0x531866);}});return _0x186e88;}function getSqlClauses(){var _0x578b61={'default':squel[_0x6477('0x25')](),'fields':squel[_0x6477('0x25')](),'filter':squel[_0x6477('0x25')](),'tags':{'clause':squel[_0x6477('0x25')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x578b61;}function parseTagParameter(_0x7ddf18){var _0x40586b=squel[_0x6477('0x25')]();if(_0x7ddf18){var _0x144255=utils[_0x6477('0x26')](_0x7ddf18);_0x144255['forEach'](function(_0x58248f){_0x40586b['or'](_0x6477('0x27'),'%,'+_0x58248f+',%');});}return _0x40586b;}function parseSearchFilter(_0xa38ca2){var _0x1cddee=squel[_0x6477('0x25')]();if(_0xa38ca2){var _0x2046e2=_0xa38ca2[_0x6477('0x28')]('\x5c','\x5c\x5c')[_0x6477('0x28')](/'/g,'\x27\x27');if(_0x2046e2[_0x6477('0x29')]('\x20')[_0x6477('0x2a')]>0x1){_0x1cddee['or'](_0x6477('0x2b'),qs[_0x6477('0x2c')](_0x2046e2),null);}else{if(qs['isNumeric'](_0x2046e2)){_0x1cddee['or'](_0x6477('0x2d'),_0x2046e2+'%');_0x1cddee['or'](_0x6477('0x2e'),_0x2046e2+'%');_0x1cddee['or'](_0x6477('0x2f'),_0x2046e2+'%');_0x1cddee['or'](_0x6477('0x30'),_0x2046e2+'%');}else if(qs['isEmail'](_0x2046e2)){_0x1cddee['or'](_0x6477('0x31'),_0x2046e2+'%');}else{_0x1cddee['or'](_0x6477('0x32'),'%'+_0x2046e2+'%');_0x1cddee['or']('c.lastName\x20LIKE\x20?','%'+_0x2046e2+'%');_0x1cddee['or'](_0x6477('0x31'),'%'+_0x2046e2+'%');}}}return _0x1cddee;}function parseAdvancedSearchFilter(_0x3f70da,_0x1fad46){var _0x4a8f6f=getSqlClauses();var _0x591b3b=as[_0x6477('0x33')](_0x3f70da);var _0x2114c6=_0x591b3b[_0x6477('0x34')];for(var _0x38a20d=0x0;_0x38a20d<_0x591b3b[_0x6477('0x35')][_0x6477('0x2a')];_0x38a20d++){var _0x11a16d=_0x591b3b[_0x6477('0x35')][_0x38a20d];var _0xb00520='c';var _0x67db61=_[_0x6477('0x36')](_0x1fad46,['name',_0x11a16d[_0x6477('0x24')]]);if(_0x67db61){if(_0x11a16d['field']==='dateOfBirth'||_0x67db61[_0x6477('0x37')]===_0x6477('0x38')){_0x11a16d['castTo']=_0x6477('0x39');}var _0x494500=as['buildExpression'](_0xb00520,_0x67db61['type'],_0x11a16d);_0x4a8f6f[_0x6477('0x3a')][_0x2114c6](_0x494500['text'],_0x494500['value'][_0x6477('0x3b')],_0x494500['value'][_0x6477('0x3c')]);}else{if(_0x11a16d['field']===_0x6477('0x3d')){var _0x524acb=_0x11a16d[_0x6477('0x3e')]['split'](',')[_0x6477('0x3f')](function(_0x45d329){return Number(_0x45d329);});var _0x1ee938=parseTagParameter(_0x524acb);_0x4a8f6f['tags']['clause'][_0x6477('0x40')](_0x1ee938);_0x4a8f6f['tags'][_0x6477('0x41')]=_0x524acb;}else if(_0x11a16d[_0x6477('0x24')]===_0x6477('0x42')){_0x4a8f6f[_0x6477('0x43')][_0x6477('0x44')][_0x6477('0x40')](_0x6477('0x45'),_0x11a16d[_0x6477('0x3e')]);_0x4a8f6f[_0x6477('0x43')][_0x6477('0x46')]=!![];}}}return _0x4a8f6f;}function parseModelFields(_0x3c749a,_0x1a6885){var _0x3d565d=squel['expr']();var _0x583632=_(_0x3c749a)[_0x6477('0x47')]()[_0x6477('0x3f')](function(_0x777035){return _[_0x6477('0x48')](_0x1a6885,[_0x6477('0x49'),_0x777035])?_0x777035:undefined;})['compact']()['value']();if(_0x3c749a[_0x6477('0x4a')]){_0x583632[_0x6477('0x22')](_0x6477('0x4a'));}if(_0x583632[_0x6477('0x2a')]>0x0){_0x583632[_0x6477('0x4b')](function(_0x2a7177){if(_0x2a7177===_0x6477('0x9')){_0x3d565d['and'](_0x6477('0x4c'),[]['concat'](_0x3c749a[_0x2a7177]));}else if(_0x2a7177===_0x6477('0x4a')){var _0x53184d='%'+_0x3c749a[_0x2a7177]+'%';_0x3d565d[_0x6477('0x40')](_0x6477('0x4d'),_0x53184d);}else{_0x3d565d['and']('c.'+_0x2a7177+_0x6477('0x4e'),_0x3c749a[_0x2a7177]);}});}return _0x3d565d;}function parseQueryParameters(_0x56a578,_0x52640c){var _0x516643=getSqlClauses();return Promise[_0x6477('0x4f')]()[_0x6477('0x50')](function(){return parseModelFields(_0x56a578,_0x52640c);})[_0x6477('0x50')](function(_0x488546){_0x516643[_0x6477('0x51')][_0x6477('0x40')](_0x488546);return parseTagParameter(_0x56a578[_0x6477('0x52')]);})[_0x6477('0x50')](function(_0x4d8224){_0x516643[_0x6477('0x53')][_0x6477('0x44')]['and'](_0x4d8224);return parseSearchFilter(_0x56a578['filter']);})['then'](function(_0x4eb271){_0x516643[_0x6477('0x54')]=_0x4eb271;return _0x516643;});}function checkListsRestrictions(_0x2d391e,_0x33f463,_0xbecdff){var _0x1422a0=squel[_0x6477('0x25')]();return Promise[_0x6477('0x4f')]()['then'](function(){if(_0x33f463[_0x6477('0x8')]&&_0x2d391e['role']==='agent'&&!_0xbecdff){return _0x2d391e[_0x6477('0x55')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x492669){if(_0x492669){if(_0x492669[_0x6477('0x2a')]===0x0){_0x1422a0['and'](_0x6477('0x56'));}else{_0x1422a0[_0x6477('0x40')](_0x6477('0x4c'),_[_0x6477('0x3f')](_0x492669,'id'));}}})[_0x6477('0x50')](function(){return _0x1422a0;});}function buildContactsQuery(_0x3d707c,_0x44ed11,_0x2e8b05,_0x214410,_0x3bd92b,_0x308ddf){if(_0x44ed11){_0x44ed11=_0x2e8b05[_0x6477('0x57')];}_0x3d707c=addFieldsToQuery(_0x3d707c,_0x44ed11,_0x214410,_0x308ddf,!![]);var _0x3138ea=squel['select']();_0x3138ea=addFieldsToQuery(_0x3138ea,_0x44ed11,_0x214410,_0x308ddf,![]);if(_0x214410||_0x308ddf){_0x3d707c=applyJoinClauses(_0x3d707c,!![]);_0x3d707c[_0x6477('0x58')]('c.id');if(_0x2e8b05[_0x6477('0x59')]){_0x3138ea[_0x6477('0x59')](_0x2e8b05[_0x6477('0x59')]);}if(_0x2e8b05['offset']){_0x3138ea[_0x6477('0x5a')](_0x2e8b05[_0x6477('0x5a')]);}}else{_0x3138ea=applyJoinClauses(_0x3138ea,![]);_0x3138ea['group'](_0x6477('0x5b'));if(_0x2e8b05[_0x6477('0x59')]){_0x3d707c[_0x6477('0x59')](_0x2e8b05['limit']);}if(_0x2e8b05[_0x6477('0x5a')]){_0x3d707c[_0x6477('0x5a')](_0x2e8b05[_0x6477('0x5a')]);}}_0x3138ea[_0x6477('0x5c')](_0x3bd92b);if(_0x2e8b05['order']){_0x2e8b05[_0x6477('0x5d')][_0x6477('0x4b')](function(_0x50a48b){_0x3d707c['order']('c.'+_0x50a48b[0x0],_0x50a48b[0x1]===_0x6477('0x5e')?![]:!![]);_0x3138ea[_0x6477('0x5d')]('subqry.'+_0x50a48b[0x0],_0x50a48b[0x1]===_0x6477('0x5e')?![]:!![]);});}_0x3138ea['from'](_0x3d707c,_0x6477('0x11'));return _0x3138ea;}function getFilteredContacts(_0x4c3d6b){var _0x457803=[];return db[_0x6477('0x3d')][_0x6477('0x5f')]({'attributes':['id','name',_0x6477('0x60')],'raw':!![]})['then'](function(_0x51a5a4){_0x457803=_[_0x6477('0x61')](_0x51a5a4,'id');var _0x183eb7={'type':db['Sequelize'][_0x6477('0x62')]['SELECT'],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x6477('0x63')][_0x6477('0x64')](_0x4c3d6b[_0x6477('0x65')](),_0x183eb7);})[_0x6477('0x50')](function(_0x37f959){_0x37f959[_0x6477('0x4b')](function(_0x3d4e02){if(_0x3d4e02[_0x6477('0x20')]){_0x3d4e02['Tags']=[];_0x3d4e02[_0x6477('0x20')][_0x6477('0x29')](',')[_0x6477('0x4b')](function(_0x2d30c3){_0x3d4e02[_0x6477('0x66')]['push'](_0x457803[_0x2d30c3]);});}delete _0x3d4e02[_0x6477('0x20')];});return _0x37f959;});}function countFilteredContacts(_0x36f466,_0x1e81c2){var _0x406d97=_0x36f466[_0x6477('0x67')]();_0x406d97[_0x6477('0x24')]('COUNT(*)');_0x406d97=applyJoinClauses(_0x406d97,!![]);_0x36f466[_0x6477('0x58')](_0x6477('0x68'));var _0x58ed99=utils['getSelectedTags'](_0x1e81c2);if(!_[_0x6477('0x69')](_0x58ed99)){_0x406d97[_0x6477('0xf')](_0x6477('0x6a'),_0x58ed99);}var _0x3e4f46={'type':db[_0x6477('0x6b')][_0x6477('0x62')][_0x6477('0x6c')],'raw':!![]};return db[_0x6477('0x63')][_0x6477('0x64')](_0x406d97[_0x6477('0x65')](),_0x3e4f46)[_0x6477('0x50')](function(_0x28eb6b){return _0x28eb6b[0x0][_0x6477('0x6d')];});}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 edf9083..3b28fcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9129=['../../config/logger','app','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','hasOwnProperty','encryptFile','createWriteStream','data','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createDecipher','encryptString','secret','createCipher','base64','decryptString','utf8','bluebird','lodash','../../config/environment'];(function(_0x20d73e,_0x39f9ec){var _0x52e84b=function(_0x11a4ac){while(--_0x11a4ac){_0x20d73e['push'](_0x20d73e['shift']());}};_0x52e84b(++_0x39f9ec);}(_0x9129,0x1e7));var _0x9912=function(_0x18a577,_0x25560c){_0x18a577=_0x18a577-0x0;var _0x1cb0c7=_0x9129[_0x18a577];return _0x1cb0c7;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x9912('0x0'));var _=require(_0x9912('0x1'));var config=require(_0x9912('0x2'));var logger=require(_0x9912('0x3'))(_0x9912('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x9912('0x5')][_0x9912('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x9912('0x7')};if(config[_0x9912('0x8')]&&config[_0x9912('0x8')][_0x9912('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0x9912('0x9')]=config['encrypt'][_0x9912('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x9912('0xa')](',\x20');logger[_0x9912('0xb')](config[_0x9912('0x8')][_0x9912('0x9')],_0x9912('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x2d4b74){return AES_SUPPORTED_RX[_0x9912('0xd')](_0x2d4b74);}function getSupportedCiphers(){return crypto[_0x9912('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0xad8f4f){return getSupportedCiphers()['indexOf'](_0xad8f4f)>-0x1;}function combineOptions(_0x259dff){var _0x24299a={};for(var _0x522c2a in fileOptions){if(fileOptions[_0x9912('0xf')](_0x522c2a)){_0x24299a[_0x522c2a]=fileOptions[_0x522c2a];}}if(_0x259dff){for(var _0x5cd609 in _0x259dff){if(_0x259dff[_0x9912('0xf')](_0x5cd609)){_0x24299a[_0x5cd609]=_0x259dff[_0x5cd609];}}}return _0x24299a;}exports[_0x9912('0x10')]=function(_0x17fc0c,_0x16a674,_0x5950ae,_0x14a99b){return new BPromise(function(_0x1d9985,_0x5ed518){_0x14a99b=combineOptions(_0x14a99b);var _0x5a249c=new Buffer(_0x5950ae);var _0x63180e=fs['createReadStream'](_0x17fc0c);var _0x4236d3=fs[_0x9912('0x11')](_0x16a674);var _0x1f1b11=crypto['createCipher'](_0x14a99b['algorithm'],_0x5a249c);_0x63180e['on'](_0x9912('0x12'),function(_0x3a8a93){var _0x303a63=new Buffer(_0x1f1b11[_0x9912('0x13')](_0x3a8a93),_0x9912('0x14'));_0x4236d3[_0x9912('0x15')](_0x303a63);});_0x63180e['on'](_0x9912('0x16'),function(){try{var _0x1b98f5=new Buffer(_0x1f1b11[_0x9912('0x17')](_0x9912('0x14')),_0x9912('0x14'));_0x4236d3[_0x9912('0x15')](_0x1b98f5);_0x4236d3[_0x9912('0x16')]();_0x4236d3['on'](_0x9912('0x18'),function(){return _0x1d9985(_0x16a674);});}catch(_0x553c05){fs[_0x9912('0x19')](_0x16a674);return _0x5ed518(_0x553c05);}});});};exports[_0x9912('0x1a')]=function(_0x157fa8,_0x290f31,_0x236e2f,_0x383aca){return new BPromise(function(_0x204745,_0x5e221d){_0x383aca=combineOptions(_0x383aca);var _0x387c83=new Buffer(_0x236e2f);var _0x3ad612=fs[_0x9912('0x1b')](_0x157fa8);var _0x3eca5c=fs[_0x9912('0x11')](_0x290f31);var _0x529885=crypto[_0x9912('0x1c')](_0x383aca[_0x9912('0x9')],_0x387c83);_0x3ad612['on']('data',function(_0x54d02a){var _0x39107c=new Buffer(_0x529885['update'](_0x54d02a),'binary');_0x3eca5c[_0x9912('0x15')](_0x39107c);});_0x3ad612['on'](_0x9912('0x16'),function(){try{var _0x1f5898=new Buffer(_0x529885[_0x9912('0x17')](_0x9912('0x14')),_0x9912('0x14'));_0x3eca5c[_0x9912('0x15')](_0x1f5898);_0x3eca5c[_0x9912('0x16')]();_0x3eca5c['on'](_0x9912('0x18'),function(){return _0x204745(_0x290f31);});}catch(_0x563407){fs['unlink'](_0x290f31);return _0x5e221d(_0x563407);}});});};exports[_0x9912('0x1d')]=function(_0x362130,_0x251153,_0x2743d3){var _0x973ef5=_0x2743d3||stringOptions[_0x9912('0x9')];var _0x284cbe=_0x251153||stringOptions[_0x9912('0x1e')];var _0x8d6dda=crypto[_0x9912('0x1f')](_0x973ef5,_0x284cbe);var _0xccbe2e=_0x8d6dda[_0x9912('0x13')](_0x362130,'utf8',_0x9912('0x20'));_0xccbe2e+=_0x8d6dda['final']('base64');return _0xccbe2e;};exports[_0x9912('0x21')]=function(_0x12df43,_0x9cbf53,_0x15f5b4){var _0x1e31e4=_0x15f5b4||stringOptions['algorithm'];var _0x2f2f30=_0x9cbf53||stringOptions[_0x9912('0x1e')];var _0x1c61b9=crypto[_0x9912('0x1c')](_0x1e31e4,_0x2f2f30);var _0x55f4fd=_0x1c61b9[_0x9912('0x13')](_0x12df43,_0x9912('0x20'),_0x9912('0x22'));_0x55f4fd+=_0x1c61b9[_0x9912('0x17')](_0x9912('0x22'));return _0x55f4fd;};
\ No newline at end of file
+var _0x34aa=['decryptString','secret','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createWriteStream','data','update','end','final','binary','close','decryptFile','createReadStream','createDecipher','write','unlink','createCipher','utf8','base64'];(function(_0x17d686,_0x3c0822){var _0x33c87c=function(_0x51e029){while(--_0x51e029){_0x17d686['push'](_0x17d686['shift']());}};_0x33c87c(++_0x3c0822);}(_0x34aa,0x183));var _0xa34a=function(_0x53ad58,_0x3fb489){_0x53ad58=_0x53ad58-0x0;var _0x554b03=_0x34aa[_0x53ad58];return _0x554b03;};'use strict';var crypto=require(_0xa34a('0x0'));var fs=require('fs');var BPromise=require(_0xa34a('0x1'));var _=require(_0xa34a('0x2'));var config=require(_0xa34a('0x3'));var logger=require(_0xa34a('0x4'))(_0xa34a('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xa34a('0x6')],'algorithm':_0xa34a('0x7')};const fileOptions={'algorithm':_0xa34a('0x8')};if(config[_0xa34a('0x9')]&&config[_0xa34a('0x9')]['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt'][_0xa34a('0xa')]);if(isSupported){fileOptions[_0xa34a('0xa')]=config[_0xa34a('0x9')][_0xa34a('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xa34a('0xb')](',\x20');logger['error'](config[_0xa34a('0x9')][_0xa34a('0xa')],_0xa34a('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x20e6f7){return AES_SUPPORTED_RX[_0xa34a('0xd')](_0x20e6f7);}function getSupportedCiphers(){return crypto[_0xa34a('0xe')]()[_0xa34a('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x50d910){return getSupportedCiphers()['indexOf'](_0x50d910)>-0x1;}function combineOptions(_0x1e000){var _0x564c86={};for(var _0x365fb3 in fileOptions){if(fileOptions[_0xa34a('0x10')](_0x365fb3)){_0x564c86[_0x365fb3]=fileOptions[_0x365fb3];}}if(_0x1e000){for(var _0x374d3b in _0x1e000){if(_0x1e000[_0xa34a('0x10')](_0x374d3b)){_0x564c86[_0x374d3b]=_0x1e000[_0x374d3b];}}}return _0x564c86;}exports[_0xa34a('0x11')]=function(_0x9e63cc,_0x3cb7fa,_0x54be2a,_0x2aad82){return new BPromise(function(_0x471eac,_0x48de71){_0x2aad82=combineOptions(_0x2aad82);var _0x3aa187=new Buffer(_0x54be2a);var _0x2b5783=fs['createReadStream'](_0x9e63cc);var _0x1cc0ba=fs[_0xa34a('0x12')](_0x3cb7fa);var _0x44ebbf=crypto['createCipher'](_0x2aad82[_0xa34a('0xa')],_0x3aa187);_0x2b5783['on'](_0xa34a('0x13'),function(_0xb89c90){var _0x74445e=new Buffer(_0x44ebbf[_0xa34a('0x14')](_0xb89c90),'binary');_0x1cc0ba['write'](_0x74445e);});_0x2b5783['on'](_0xa34a('0x15'),function(){try{var _0x5e702a=new Buffer(_0x44ebbf[_0xa34a('0x16')](_0xa34a('0x17')),'binary');_0x1cc0ba['write'](_0x5e702a);_0x1cc0ba['end']();_0x1cc0ba['on'](_0xa34a('0x18'),function(){return _0x471eac(_0x3cb7fa);});}catch(_0x20b98b){fs['unlink'](_0x3cb7fa);return _0x48de71(_0x20b98b);}});});};exports[_0xa34a('0x19')]=function(_0x52a93f,_0xa5013c,_0x5570c6,_0x30bdc7){return new BPromise(function(_0x3aba21,_0x16363f){_0x30bdc7=combineOptions(_0x30bdc7);var _0x4e1722=new Buffer(_0x5570c6);var _0x2b147f=fs[_0xa34a('0x1a')](_0x52a93f);var _0x5efcbc=fs[_0xa34a('0x12')](_0xa5013c);var _0x5cdcf4=crypto[_0xa34a('0x1b')](_0x30bdc7[_0xa34a('0xa')],_0x4e1722);_0x2b147f['on']('data',function(_0x3cad95){var _0x1056fa=new Buffer(_0x5cdcf4['update'](_0x3cad95),'binary');_0x5efcbc[_0xa34a('0x1c')](_0x1056fa);});_0x2b147f['on'](_0xa34a('0x15'),function(){try{var _0x99fc04=new Buffer(_0x5cdcf4['final'](_0xa34a('0x17')),_0xa34a('0x17'));_0x5efcbc[_0xa34a('0x1c')](_0x99fc04);_0x5efcbc[_0xa34a('0x15')]();_0x5efcbc['on'](_0xa34a('0x18'),function(){return _0x3aba21(_0xa5013c);});}catch(_0x3eb141){fs[_0xa34a('0x1d')](_0xa5013c);return _0x16363f(_0x3eb141);}});});};exports['encryptString']=function(_0x495db6,_0x19203c,_0x1fa580){var _0x5429ad=_0x1fa580||stringOptions[_0xa34a('0xa')];var _0x201f2a=_0x19203c||stringOptions['secret'];var _0x379e5a=crypto[_0xa34a('0x1e')](_0x5429ad,_0x201f2a);var _0x107182=_0x379e5a[_0xa34a('0x14')](_0x495db6,_0xa34a('0x1f'),_0xa34a('0x20'));_0x107182+=_0x379e5a[_0xa34a('0x16')](_0xa34a('0x20'));return _0x107182;};exports[_0xa34a('0x21')]=function(_0x23b93e,_0x24c2ed,_0x229bf9){var _0xfec998=_0x229bf9||stringOptions[_0xa34a('0xa')];var _0x11519e=_0x24c2ed||stringOptions[_0xa34a('0x22')];var _0x5bd051=crypto[_0xa34a('0x1b')](_0xfec998,_0x11519e);var _0x525e39=_0x5bd051['update'](_0x23b93e,_0xa34a('0x20'),_0xa34a('0x1f'));_0x525e39+=_0x5bd051[_0xa34a('0x16')](_0xa34a('0x1f'));return _0x525e39;};
\ No newline at end of file
index 664e577..107adb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2626=['argv','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','then','splitSizeCsv','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','push','%s\x20limit\x20%d\x20OFFSET\x20%d','query','dirname','basename','.csv','mkdirSync','each','join','csv','%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','util','path','lodash','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x2626,0x186));var _0x6262=function(_0xfb84e4,_0x199d82){_0xfb84e4=_0xfb84e4-0x0;var _0x243e9d=_0x2626[_0xfb84e4];return _0x243e9d;};'use strict';var util=require(_0x6262('0x0'));var path=require(_0x6262('0x1'));var _=require(_0x6262('0x2'));var csv=require(_0x6262('0x3'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x6262('0x4'));var rimraf=require(_0x6262('0x5'));var db=require(_0x6262('0x6'))['db'];var dbH=require('../../mysqldb')[_0x6262('0x7')];var logger=require(_0x6262('0x8'))(_0x6262('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x6262('0xa')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x6262('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x43753b,_0x21534e){var _0x364ba8={'status':_0x43753b};var _0x2f0c58={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x21534e){_0x364ba8['savename']=_0x21534e;}return db['AnalyticExtractedReport'][_0x6262('0xb')](_0x364ba8,_0x2f0c58);}function main(){var _0x44fb26=0x1388;var _0x4bc2f2;logger[_0x6262('0xc')](util[_0x6262('0xd')](_0x6262('0xe'),EXTRACTED_REPORT_ID,_0x6262('0xf')));return db[_0x6262('0x10')][_0x6262('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6262('0x12'),'splitSizeCsv']})[_0x6262('0x13')](function(_0x1e73e4){if(_0x1e73e4){_0x4bc2f2=_0x1e73e4;_0x44fb26=_0x4bc2f2[_0x6262('0x14')]||0x1388;}})[_0x6262('0x13')](function(){return dbH[_0x6262('0x15')]['query'](util['format'](_0x6262('0x16'),QUERY),{'type':dbH['sequelize'][_0x6262('0x17')][_0x6262('0x18')]});})[_0x6262('0x13')](function(_0x43459f){if(!_0x43459f[0x0][_0x6262('0x19')]){return analyticExtractedReport(_0x6262('0x1a'));}var _0x4d3e0e=[];var _0x3c16f9=0x0;if(_0x4bc2f2[_0x6262('0x12')]){if(_0x43459f&&_0x43459f[_0x6262('0x1b')]){var _0x3546d6=_[_0x6262('0x1c')](_0x43459f[0x0][_0x6262('0x19')]/_0x44fb26);var _0x351b9c=Number['isInteger'](_0x43459f[0x0][_0x6262('0x19')]/_0x44fb26)?_0x43459f[0x0]['num']%_0x44fb26:0x0;_0x3546d6['forEach'](function(_0x1f2b53){if(_0x1f2b53>0x0){_0x3c16f9+=_0x44fb26;}_0x4d3e0e[_0x6262('0x1d')](dbH[_0x6262('0x15')]['query'](util[_0x6262('0xd')](_0x6262('0x1e'),QUERY,_0x44fb26,_0x3c16f9),{'type':dbH[_0x6262('0x15')]['QueryTypes']['SELECT']}));});if(_0x351b9c>0x0){_0x3c16f9+=_0x44fb26;_0x4d3e0e[_0x6262('0x1d')](dbH[_0x6262('0x15')][_0x6262('0x1f')](util[_0x6262('0xd')](_0x6262('0x1e'),QUERY,_0x351b9c,_0x3c16f9),{'type':dbH[_0x6262('0x15')][_0x6262('0x17')][_0x6262('0x18')]}));}}}else{_0x4d3e0e[_0x6262('0x1d')](dbH[_0x6262('0x15')][_0x6262('0x1f')](QUERY,{'type':dbH[_0x6262('0x15')]['QueryTypes'][_0x6262('0x18')]}));}var _0xeee698=path[_0x6262('0x20')](PATH);var _0x3be206=path[_0x6262('0x21')](PATH,_0x6262('0x22'));var _0x571224=_0x4bc2f2['split']&&_0x4d3e0e[_0x6262('0x1b')]>0x1;var _0x21e873=[];if(!fs['existsSync'](path['join'](_0xeee698,_0x3be206))&&_0x571224){fs[_0x6262('0x23')](path['join'](_0xeee698,_0x3be206));}return BPromise[_0x6262('0x24')](_0x4d3e0e,function(_0x1a7f32){_0x21e873[_0x6262('0x1d')](_0x1a7f32);})[_0x6262('0x13')](function(){for(var _0x13ae24=0x0;_0x13ae24<_0x21e873['length'];_0x13ae24+=0x1){var _0x4f051f;var _0x2a7ee2=_0x21e873[_0x13ae24];if(_0x571224){_0x4f051f=path[_0x6262('0x25')](_0xeee698,_0x3be206,util[_0x6262('0xd')]('%s%d.%s',_0x3be206,_0x13ae24,_0x6262('0x26')));}else{_0x4f051f=path[_0x6262('0x25')](_0xeee698,util['format'](_0x6262('0x27'),_0x3be206,_0x6262('0x26')));}fs[_0x6262('0x28')](_0x4f051f,csv(_0x2a7ee2));}})[_0x6262('0x13')](function(){if(_0x571224){return new Promise(function(_0xd08831){zipdir(path[_0x6262('0x25')](_0xeee698,_0x3be206),{'saveTo':path[_0x6262('0x25')](_0xeee698,util[_0x6262('0xd')](_0x6262('0x27'),_0x3be206,'zip'))},function(_0x56de7b,_0x1bd1d8){rimraf(path[_0x6262('0x25')](_0xeee698,_0x3be206),function(){});_0xd08831(_0x6262('0x29'));});});}})[_0x6262('0x13')](function(){logger['info'](util[_0x6262('0xd')](_0x6262('0x2a'),EXTRACTED_REPORT_ID,_0x6262('0xf')));return analyticExtractedReport(_0x6262('0x2b'),_0x571224?util[_0x6262('0xd')](_0x6262('0x27'),_0x3be206,_0x571224?_0x6262('0x2c'):_0x6262('0x26')):null);});})[_0x6262('0x2d')](function(_0x3a04e8){logger['info'](util['format'](_0x6262('0x2e'),EXTRACTED_REPORT_ID,'CSV'),util[_0x6262('0x2f')](_0x3a04e8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x6262('0x30')](function(){process[_0x6262('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x748f=['forEach','push','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','length','mkdirSync','join','each','%s.%s','csv','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','inspect','Failed','exit','util','path','lodash','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','argv','savename','info','format','CSV','Setting','split','splitSizeCsv','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','range','num','isInteger'];(function(_0x5ecea3,_0x4165b8){var _0x45cf71=function(_0x57cb3d){while(--_0x57cb3d){_0x5ecea3['push'](_0x5ecea3['shift']());}};_0x45cf71(++_0x4165b8);}(_0x748f,0x17f));var _0xf748=function(_0x1ff8d2,_0x36110e){_0x1ff8d2=_0x1ff8d2-0x0;var _0x33ad75=_0x748f[_0x1ff8d2];return _0x33ad75;};'use strict';var util=require(_0xf748('0x0'));var path=require(_0xf748('0x1'));var _=require(_0xf748('0x2'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0xf748('0x3'));var zipdir=require(_0xf748('0x4'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xf748('0x5'))[_0xf748('0x6')];var logger=require(_0xf748('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xf748('0x8')][0x2]);var QUERY=process[_0xf748('0x8')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x581325,_0x17f9bb){var _0xfff669={'status':_0x581325};var _0x56edc0={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x17f9bb){_0xfff669[_0xf748('0x9')]=_0x17f9bb;}return db['AnalyticExtractedReport']['update'](_0xfff669,_0x56edc0);}function main(){var _0x4a3620=0x1388;var _0xfc57ae;logger[_0xf748('0xa')](util[_0xf748('0xb')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xf748('0xc')));return db[_0xf748('0xd')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf748('0xe'),_0xf748('0xf')]})[_0xf748('0x10')](function(_0x52b8c6){if(_0x52b8c6){_0xfc57ae=_0x52b8c6;_0x4a3620=_0xfc57ae['splitSizeCsv']||0x1388;}})[_0xf748('0x10')](function(){return dbH['sequelize']['query'](util[_0xf748('0xb')](_0xf748('0x11'),QUERY),{'type':dbH[_0xf748('0x12')]['QueryTypes']['SELECT']});})['then'](function(_0x188994){if(!_0x188994[0x0]['num']){return analyticExtractedReport('Empty');}var _0x5d05df=[];var _0x3cd0c8=0x0;if(_0xfc57ae['split']){if(_0x188994&&_0x188994['length']){var _0x38857c=_[_0xf748('0x13')](_0x188994[0x0][_0xf748('0x14')]/_0x4a3620);var _0x537662=Number[_0xf748('0x15')](_0x188994[0x0][_0xf748('0x14')]/_0x4a3620)?_0x188994[0x0][_0xf748('0x14')]%_0x4a3620:0x0;_0x38857c[_0xf748('0x16')](function(_0x305af5){if(_0x305af5>0x0){_0x3cd0c8+=_0x4a3620;}_0x5d05df[_0xf748('0x17')](dbH[_0xf748('0x12')][_0xf748('0x18')](util[_0xf748('0xb')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4a3620,_0x3cd0c8),{'type':dbH[_0xf748('0x12')][_0xf748('0x19')][_0xf748('0x1a')]}));});if(_0x537662>0x0){_0x3cd0c8+=_0x4a3620;_0x5d05df['push'](dbH[_0xf748('0x12')]['query'](util['format'](_0xf748('0x1b'),QUERY,_0x537662,_0x3cd0c8),{'type':dbH[_0xf748('0x12')][_0xf748('0x19')]['SELECT']}));}}}else{_0x5d05df['push'](dbH[_0xf748('0x12')][_0xf748('0x18')](QUERY,{'type':dbH[_0xf748('0x12')][_0xf748('0x19')][_0xf748('0x1a')]}));}var _0x217ba1=path[_0xf748('0x1c')](PATH);var _0xf96525=path[_0xf748('0x1d')](PATH,'.csv');var _0x3d095d=_0xfc57ae[_0xf748('0xe')]&&_0x5d05df[_0xf748('0x1e')]>0x1;var _0x86bf06=[];if(!fs['existsSync'](path['join'](_0x217ba1,_0xf96525))&&_0x3d095d){fs[_0xf748('0x1f')](path[_0xf748('0x20')](_0x217ba1,_0xf96525));}return BPromise[_0xf748('0x21')](_0x5d05df,function(_0x20968c){_0x86bf06[_0xf748('0x17')](_0x20968c);})['then'](function(){for(var _0x592acc=0x0;_0x592acc<_0x86bf06[_0xf748('0x1e')];_0x592acc+=0x1){var _0x138a5b;var _0x161ba0=_0x86bf06[_0x592acc];if(_0x3d095d){_0x138a5b=path[_0xf748('0x20')](_0x217ba1,_0xf96525,util[_0xf748('0xb')]('%s%d.%s',_0xf96525,_0x592acc,'csv'));}else{_0x138a5b=path[_0xf748('0x20')](_0x217ba1,util[_0xf748('0xb')](_0xf748('0x22'),_0xf96525,_0xf748('0x23')));}fs[_0xf748('0x24')](_0x138a5b,csv(_0x161ba0));}})[_0xf748('0x10')](function(){if(_0x3d095d){return new Promise(function(_0x1fed88){zipdir(path[_0xf748('0x20')](_0x217ba1,_0xf96525),{'saveTo':path['join'](_0x217ba1,util[_0xf748('0xb')](_0xf748('0x22'),_0xf96525,'zip'))},function(_0x56c03b,_0x43a218){rimraf(path['join'](_0x217ba1,_0xf96525),function(){});_0x1fed88(_0xf748('0x25'));});});}})[_0xf748('0x10')](function(){logger[_0xf748('0xa')](util[_0xf748('0xb')](_0xf748('0x26'),EXTRACTED_REPORT_ID,_0xf748('0xc')));return analyticExtractedReport(_0xf748('0x27'),_0x3d095d?util[_0xf748('0xb')](_0xf748('0x22'),_0xf96525,_0x3d095d?_0xf748('0x28'):_0xf748('0x23')):null);});})[_0xf748('0x29')](function(_0x540444){logger[_0xf748('0xa')](util[_0xf748('0xb')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0xf748('0x2a')](_0x540444,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xf748('0x2b'));})['finally'](function(){process[_0xf748('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index a66ea66..5b601a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41f=['savename','AnalyticExtractedReport','update','map','pick','toString','value','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','pageBreak','before','landscape','footer','Arial','right','num','Empty','Setting','find','splitSizePdf','then','split','sequelize','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','pdf','%s.%s','all','zip\x20finished','PDF','Completed','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','util','path','html-to-pdfmake','zip-dir','rimraf','jsdom','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a'];(function(_0x2f97ec,_0x20480d){var _0x15df31=function(_0x5bb666){while(--_0x5bb666){_0x2f97ec['push'](_0x2f97ec['shift']());}};_0x15df31(++_0x20480d);}(_0xa41f,0x101));var _0xfa41=function(_0x2161d0,_0x1e3261){_0x2161d0=_0x2161d0-0x0;var _0x507312=_0xa41f[_0x2161d0];return _0x507312;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0xfa41('0x0'));var path=require(_0xfa41('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0xfa41('0x2'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0xfa41('0x3'));var rimraf=require(_0xfa41('0x4'));var JSDOM=require(_0xfa41('0x5'))['JSDOM'];var window=new JSDOM('')[_0xfa41('0x6')];var BPromise=require(_0xfa41('0x7'));var db=require(_0xfa41('0x8'))['db'];var dbH=require(_0xfa41('0x8'))[_0xfa41('0x9')];var logger=require('../../config/logger')(_0xfa41('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0xfa41('0xb')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xfa41('0xb')][0x4];var NAME=process[_0xfa41('0xb')][0x5];var FORMAT=_0xfa41('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3e8710,_0x347d60){var _0x422b1a={'status':_0x3e8710};var _0x4389c7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x347d60){_0x422b1a[_0xfa41('0xd')]=_0x347d60;}return db[_0xfa41('0xe')][_0xfa41('0xf')](_0x422b1a,_0x4389c7);}function getHeaders(_0x4f7d86){return _[_0xfa41('0x10')](_0x4f7d86,function(_0x134649){return{'text':_0x134649,'style':'tableHeader'};});}function getRows(_0x9097b7,_0x5592e7){return _[_0xfa41('0x10')](_0x5592e7,function(_0x2375eb){return _(_0x2375eb)[_0xfa41('0x11')](_0x9097b7)[_0xfa41('0x10')](function(_0x521a19){return _0x521a19?_[_0xfa41('0x12')](_0x521a19):'';})[_0xfa41('0x13')]();});}function createTable(_0x1563d3,_0x3d45ac){var _0x49e43e={'widths':_[_0xfa41('0x14')](Array(_0x1563d3[_0xfa41('0x15')]),0x91),'heights':function(_0x3a869c){return _0x3a869c===0x0?_0xfa41('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3effaa=getHeaders(_0x1563d3);_0x49e43e[_0xfa41('0x17')][_0xfa41('0x18')](_0x3effaa);var _0x546165=getRows(_0x1563d3,_0x3d45ac);_0x49e43e[_0xfa41('0x17')]=_0x49e43e[_0xfa41('0x17')][_0xfa41('0x19')](_0x546165);return _0x49e43e;}function createTables(_0x1fe800){var _0x4e3973=[];var _0x2c5788=_[_0xfa41('0x1a')](Object[_0xfa41('0x1b')](_0x1fe800[0x0]),0x5);_0x2c5788[_0xfa41('0x1c')](function(_0x121dcd){_0x4e3973[_0xfa41('0x18')](createTable(_0x121dcd,_0x1fe800));});return _0x4e3973;}function getPDFDocDefinition(_0x5ac457){var _0x579c97=util[_0xfa41('0x1d')](_0xfa41('0x1e'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0xfa41('0x1f')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xfa41('0x20')])[_0xfa41('0x1d')](FORMAT));var _0x519735=[];for(var _0x26da3d=0x0;_0x26da3d<_0x5ac457[_0xfa41('0x15')];_0x26da3d++){var _0x4ddc81=[];if(_0x26da3d===0x0){_0x4ddc81[_0xfa41('0x18')]({'text':_0x579c97,'style':'header'});}var _0x3aae84={'table':_0x5ac457[_0x26da3d]};if(_0x26da3d>0x0){_0x3aae84[_0xfa41('0x21')]=_0xfa41('0x22');_0x3aae84['margin']=[0x0,0x46,0x0,0x0];}_0x4ddc81[_0xfa41('0x18')](_0x3aae84);_0x519735[_0xfa41('0x18')](_0x4ddc81);}return{'pageSize':'A4','pageOrientation':_0xfa41('0x23'),'content':_0x519735,'footer':function(_0xec2c54,_0x29f13a){return{'text':_0xec2c54[_0xfa41('0x12')]()+'\x20/\x20'+_0x29f13a,'style':_0xfa41('0x24')};},'defaultStyle':{'font':_0xfa41('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0xfa41('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1aa168){var _0x306d21=0x1388;var _0x4b7105;if(!_0x1aa168[0x0][_0xfa41('0x27')]){return analyticExtractedReport(_0xfa41('0x28'));}return db[_0xfa41('0x29')][_0xfa41('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xfa41('0x2b')]})[_0xfa41('0x2c')](function(_0x4029eb){if(_0x4029eb){_0x4b7105=_0x4029eb;_0x306d21=_0x4b7105['splitSizePdf']||0x3e8;}})[_0xfa41('0x2c')](function(){var _0x9c41df=[];var _0x21fc6f=0x0;if(_0x4b7105[_0xfa41('0x2d')]){if(_0x1aa168&&_0x1aa168['length']){var _0x376555=_['range'](_0x1aa168[0x0]['num']/_0x306d21);var _0x298783=Number['isInteger'](_0x1aa168[0x0]['num']/_0x306d21)?_0x1aa168[0x0][_0xfa41('0x27')]%_0x306d21:0x0;_0x376555[_0xfa41('0x1c')](function(_0xb8440b){if(_0xb8440b>0x0){_0x21fc6f+=_0x306d21;}_0x9c41df[_0xfa41('0x18')](dbH[_0xfa41('0x2e')]['query'](util[_0xfa41('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x306d21,_0x21fc6f),{'type':dbH[_0xfa41('0x2e')]['QueryTypes'][_0xfa41('0x2f')]}));});if(_0x298783>0x0){_0x21fc6f+=_0x306d21;_0x9c41df['push'](dbH[_0xfa41('0x2e')]['query'](util[_0xfa41('0x1d')](_0xfa41('0x30'),QUERY,_0x298783,_0x21fc6f),{'type':dbH[_0xfa41('0x2e')][_0xfa41('0x31')][_0xfa41('0x2f')]}));}}}else{_0x9c41df[_0xfa41('0x18')](dbH['sequelize']['query'](QUERY,{'type':dbH['sequelize'][_0xfa41('0x31')][_0xfa41('0x2f')]}));}var _0x437714=path['dirname'](PATH);var _0x4b6204=path['basename'](PATH,_0xfa41('0x32'));var _0x28edec=_0x4b7105[_0xfa41('0x2d')]&&_0x9c41df['length']>0x1;var _0x2dab3c=[];if(!fs[_0xfa41('0x33')](path[_0xfa41('0x34')](_0x437714,_0x4b6204))&&_0x28edec){fs[_0xfa41('0x35')](path[_0xfa41('0x34')](_0x437714,_0x4b6204));}return BPromise[_0xfa41('0x36')](_0x9c41df,function(_0x37cf98){_0x2dab3c[_0xfa41('0x18')](_0x37cf98);})[_0xfa41('0x2c')](function(){var _0x12b491=[];for(var _0x34cdaf=0x0;_0x34cdaf<_0x2dab3c[_0xfa41('0x15')];_0x34cdaf+=0x1){var _0x5ee6fc=_0x2dab3c[_0x34cdaf];var _0x1cb724=createTables(_[_0xfa41('0x37')](_0x5ee6fc));var _0x5ea495;var _0x19ab78=getPDFDocDefinition(_0x1cb724);var _0x3bd3ff=getPDFPrinter();var _0x385618=_0x3bd3ff[_0xfa41('0x38')](_0x19ab78);if(_0x28edec){_0x5ea495=path[_0xfa41('0x34')](_0x437714,_0x4b6204,util[_0xfa41('0x1d')]('%s%d.%s',_0x4b6204,_0x34cdaf,_0xfa41('0x39')));}else{_0x5ea495=path[_0xfa41('0x34')](_0x437714,util[_0xfa41('0x1d')](_0xfa41('0x3a'),_0x4b6204,_0xfa41('0x39')));}_0x12b491[_0xfa41('0x18')](writePDFDocument(_0x385618,_0x5ea495));}return Promise[_0xfa41('0x3b')](_0x12b491);})['then'](function(){if(_0x28edec){return new Promise(function(_0x31b61f){zipdir(path[_0xfa41('0x34')](_0x437714,_0x4b6204),{'saveTo':path['join'](_0x437714,util['format']('%s.%s',_0x4b6204,'zip'))},function(){rimraf(path[_0xfa41('0x34')](_0x437714,_0x4b6204),function(){});_0x31b61f(_0xfa41('0x3c'));});});}})[_0xfa41('0x2c')](function(){if(!_0x28edec)return;rimraf(path['join'](_0x437714,_0x4b6204),function(){});})[_0xfa41('0x2c')](function(){logger['info'](util[_0xfa41('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xfa41('0x3d')));return analyticExtractedReport(_0xfa41('0x3e'),_0x28edec?util[_0xfa41('0x1d')](_0xfa41('0x3a'),_0x4b6204,_0x28edec?_0xfa41('0x3f'):_0xfa41('0x39')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xfa41('0x40')](util[_0xfa41('0x1d')](_0xfa41('0x41'),EXTRACTED_REPORT_ID,_0xfa41('0x3d')));return db[_0xfa41('0xe')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0xfa41('0x2c')](function(_0x511be8){EXTRACTED_REPORT=_0x511be8;return dbH[_0xfa41('0x2e')][_0xfa41('0x42')](util[_0xfa41('0x1d')](_0xfa41('0x43'),QUERY),{'type':dbH['sequelize'][_0xfa41('0x31')]['SELECT']});})[_0xfa41('0x2c')](extractReport)[_0xfa41('0x44')](function(_0x1c77df){logger[_0xfa41('0x40')](util[_0xfa41('0x1d')](_0xfa41('0x45'),EXTRACTED_REPORT_ID,_0xfa41('0x3d')),util[_0xfa41('0x46')](_0x1c77df,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfa41('0x47'));})[_0xfa41('0x48')](function(){process[_0xfa41('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1095b6=new PdfPrinter({'Arial':{'normal':__dirname+_0xfa41('0x4a'),'bold':__dirname+_0xfa41('0x4b'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xfa41('0x4c')}});return _0x1095b6;}function getPDFDocDefinitionFromHTML(_0x33f6ae,_0x16b019){var _0x28cc7e=util['format'](_0xfa41('0x4d'),_0x16b019[_0xfa41('0x4e')],_0x16b019['interactionId']);var _0x98663a=moment()[_0xfa41('0x1d')](_0xfa41('0x4f'))[_0xfa41('0x12')]();var _0xf07f8a=htmlToPdfmake(_0x33f6ae,{'window':window,'tableAutoSize':!![]});return{'content':[_0xf07f8a],'defaultStyle':{'font':_0xfa41('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xfa41('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xfa41('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xfa41('0x51'),'style':_0xfa41('0x52')}];},'footer':function(_0x187eb3,_0x16487a){return[{'text':util[_0xfa41('0x1d')](_0xfa41('0x53'),_0x28cc7e,_0x187eb3,_0x16487a,_0x98663a),'style':_0xfa41('0x24')}];}};}function writePDFDocument(_0x4be758,_0x237a0f){return new Promise(function(_0x5cbbcb,_0x5f2eee){var _0x472e6d=_0x4be758[_0xfa41('0x54')](fs[_0xfa41('0x55')](_0x237a0f));_0x472e6d['on'](_0xfa41('0x56'),function(){_0x5cbbcb(_0xfa41('0x56'));});_0x472e6d['on'](_0xfa41('0x57'),function(_0x2b8d0c){_0x5f2eee(_0x2b8d0c);});_0x4be758[_0xfa41('0x58')]();});}exports[_0xfa41('0x59')]=function(_0x4dd70f,_0x110679){var _0x1dffb7=getPDFPrinter();var _0x525344=getPDFDocDefinitionFromHTML(_0x4dd70f,_0x110679);var _0x30e423=_0x1dffb7[_0xfa41('0x38')](_0x525344);return writePDFDocument(_0x30e423,_0x110679[_0xfa41('0x1')])[_0xfa41('0x44')](function(_0x1c6d50){throw _0x1c6d50;});};
\ No newline at end of file
+var _0xbf84=['Arial','right','num','splitSizePdf','then','split','range','sequelize','query','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','lodash','util','moment','html-to-pdfmake','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','pick','value','fill','length','push','body','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','header','margin','landscape','footer'];(function(_0x2d321f,_0x196439){var _0x16744f=function(_0x539eb7){while(--_0x539eb7){_0x2d321f['push'](_0x2d321f['shift']());}};_0x16744f(++_0x196439);}(_0xbf84,0x1db));var _0x4bf8=function(_0x3336cc,_0x5c9739){_0x3336cc=_0x3336cc-0x0;var _0x314a9a=_0xbf84[_0x3336cc];return _0x314a9a;};'use strict';var _=require(_0x4bf8('0x0'));var fs=require('fs');var util=require(_0x4bf8('0x1'));var path=require('path');var moment=require(_0x4bf8('0x2'));var htmlToPdfmake=require(_0x4bf8('0x3'));var PdfPrinter=require(_0x4bf8('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x4bf8('0x5'));var JSDOM=require(_0x4bf8('0x6'))[_0x4bf8('0x7')];var window=new JSDOM('')[_0x4bf8('0x8')];var BPromise=require('bluebird');var db=require(_0x4bf8('0x9'))['db'];var dbH=require(_0x4bf8('0x9'))[_0x4bf8('0xa')];var logger=require(_0x4bf8('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x4bf8('0xc')][0x3];var PATH=process[_0x4bf8('0xc')][0x4];var NAME=process[_0x4bf8('0xc')][0x5];var FORMAT=_0x4bf8('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x597d8f,_0x45c100){var _0x16d956={'status':_0x597d8f};var _0x3f2f68={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x45c100){_0x16d956[_0x4bf8('0xe')]=_0x45c100;}return db['AnalyticExtractedReport'][_0x4bf8('0xf')](_0x16d956,_0x3f2f68);}function getHeaders(_0x195967){return _[_0x4bf8('0x10')](_0x195967,function(_0x141cf0){return{'text':_0x141cf0,'style':_0x4bf8('0x11')};});}function getRows(_0x505c02,_0x18a12e){return _[_0x4bf8('0x10')](_0x18a12e,function(_0x599475){return _(_0x599475)[_0x4bf8('0x12')](_0x505c02)[_0x4bf8('0x10')](function(_0x358679){return _0x358679?_['toString'](_0x358679):'';})[_0x4bf8('0x13')]();});}function createTable(_0x344a9d,_0x3a4144){var _0x2e7e32={'widths':_[_0x4bf8('0x14')](Array(_0x344a9d[_0x4bf8('0x15')]),0x91),'heights':function(_0x4e76e5){return _0x4e76e5===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5eb26e=getHeaders(_0x344a9d);_0x2e7e32['body'][_0x4bf8('0x16')](_0x5eb26e);var _0x22c343=getRows(_0x344a9d,_0x3a4144);_0x2e7e32[_0x4bf8('0x17')]=_0x2e7e32[_0x4bf8('0x17')]['concat'](_0x22c343);return _0x2e7e32;}function createTables(_0x5d3a9f){var _0x32051c=[];var _0x418e40=_[_0x4bf8('0x18')](Object[_0x4bf8('0x19')](_0x5d3a9f[0x0]),0x5);_0x418e40[_0x4bf8('0x1a')](function(_0x1f55b5){_0x32051c[_0x4bf8('0x16')](createTable(_0x1f55b5,_0x5d3a9f));});return _0x32051c;}function getPDFDocDefinition(_0x1b1873){var _0x301c6f=util[_0x4bf8('0x1b')](_0x4bf8('0x1c'),NAME,EXTRACTED_REPORT[_0x4bf8('0x1d')],moment(EXTRACTED_REPORT['startDate'])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x4bf8('0x1e')])[_0x4bf8('0x1b')](FORMAT));var _0x275d91=[];for(var _0x14f9c6=0x0;_0x14f9c6<_0x1b1873['length'];_0x14f9c6++){var _0x2640fd=[];if(_0x14f9c6===0x0){_0x2640fd[_0x4bf8('0x16')]({'text':_0x301c6f,'style':_0x4bf8('0x1f')});}var _0x532152={'table':_0x1b1873[_0x14f9c6]};if(_0x14f9c6>0x0){_0x532152['pageBreak']='before';_0x532152[_0x4bf8('0x20')]=[0x0,0x46,0x0,0x0];}_0x2640fd[_0x4bf8('0x16')](_0x532152);_0x275d91[_0x4bf8('0x16')](_0x2640fd);}return{'pageSize':'A4','pageOrientation':_0x4bf8('0x21'),'content':_0x275d91,'footer':function(_0x234e9e,_0x428a0e){return{'text':_0x234e9e['toString']()+'\x20/\x20'+_0x428a0e,'style':_0x4bf8('0x22')};},'defaultStyle':{'font':_0x4bf8('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x4bf8('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0xf5da0a){var _0x52b132=0x1388;var _0x3de30a;if(!_0xf5da0a[0x0][_0x4bf8('0x25')]){return analyticExtractedReport('Empty');}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x4bf8('0x26')]})['then'](function(_0x5f5052){if(_0x5f5052){_0x3de30a=_0x5f5052;_0x52b132=_0x3de30a[_0x4bf8('0x26')]||0x3e8;}})[_0x4bf8('0x27')](function(){var _0x149c46=[];var _0x9a8fc7=0x0;if(_0x3de30a[_0x4bf8('0x28')]){if(_0xf5da0a&&_0xf5da0a[_0x4bf8('0x15')]){var _0x269e3d=_[_0x4bf8('0x29')](_0xf5da0a[0x0][_0x4bf8('0x25')]/_0x52b132);var _0x24ab40=Number['isInteger'](_0xf5da0a[0x0][_0x4bf8('0x25')]/_0x52b132)?_0xf5da0a[0x0][_0x4bf8('0x25')]%_0x52b132:0x0;_0x269e3d[_0x4bf8('0x1a')](function(_0x42c10f){if(_0x42c10f>0x0){_0x9a8fc7+=_0x52b132;}_0x149c46[_0x4bf8('0x16')](dbH[_0x4bf8('0x2a')][_0x4bf8('0x2b')](util[_0x4bf8('0x1b')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x52b132,_0x9a8fc7),{'type':dbH[_0x4bf8('0x2a')][_0x4bf8('0x2c')]['SELECT']}));});if(_0x24ab40>0x0){_0x9a8fc7+=_0x52b132;_0x149c46[_0x4bf8('0x16')](dbH[_0x4bf8('0x2a')][_0x4bf8('0x2b')](util[_0x4bf8('0x1b')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x24ab40,_0x9a8fc7),{'type':dbH[_0x4bf8('0x2a')][_0x4bf8('0x2c')][_0x4bf8('0x2d')]}));}}}else{_0x149c46['push'](dbH[_0x4bf8('0x2a')]['query'](QUERY,{'type':dbH[_0x4bf8('0x2a')][_0x4bf8('0x2c')]['SELECT']}));}var _0x5c0abd=path[_0x4bf8('0x2e')](PATH);var _0x2b296a=path[_0x4bf8('0x2f')](PATH,_0x4bf8('0x30'));var _0x54a42a=_0x3de30a['split']&&_0x149c46[_0x4bf8('0x15')]>0x1;var _0x10551a=[];if(!fs[_0x4bf8('0x31')](path[_0x4bf8('0x32')](_0x5c0abd,_0x2b296a))&&_0x54a42a){fs[_0x4bf8('0x33')](path[_0x4bf8('0x32')](_0x5c0abd,_0x2b296a));}return BPromise[_0x4bf8('0x34')](_0x149c46,function(_0x105871){_0x10551a[_0x4bf8('0x16')](_0x105871);})[_0x4bf8('0x27')](function(){var _0x5ca5f7=[];for(var _0x402799=0x0;_0x402799<_0x10551a[_0x4bf8('0x15')];_0x402799+=0x1){var _0x1f055b=_0x10551a[_0x402799];var _0x3d7bee=createTables(_[_0x4bf8('0x35')](_0x1f055b));var _0x5cf866;var _0x2d68fd=getPDFDocDefinition(_0x3d7bee);var _0x1a368e=getPDFPrinter();var _0x18a218=_0x1a368e[_0x4bf8('0x36')](_0x2d68fd);if(_0x54a42a){_0x5cf866=path[_0x4bf8('0x32')](_0x5c0abd,_0x2b296a,util['format'](_0x4bf8('0x37'),_0x2b296a,_0x402799,_0x4bf8('0x38')));}else{_0x5cf866=path['join'](_0x5c0abd,util['format'](_0x4bf8('0x39'),_0x2b296a,_0x4bf8('0x38')));}_0x5ca5f7[_0x4bf8('0x16')](writePDFDocument(_0x18a218,_0x5cf866));}return Promise['all'](_0x5ca5f7);})['then'](function(){if(_0x54a42a){return new Promise(function(_0x1dd616){zipdir(path[_0x4bf8('0x32')](_0x5c0abd,_0x2b296a),{'saveTo':path[_0x4bf8('0x32')](_0x5c0abd,util['format'](_0x4bf8('0x39'),_0x2b296a,'zip'))},function(){rimraf(path[_0x4bf8('0x32')](_0x5c0abd,_0x2b296a),function(){});_0x1dd616('zip\x20finished');});});}})[_0x4bf8('0x27')](function(){if(!_0x54a42a)return;rimraf(path['join'](_0x5c0abd,_0x2b296a),function(){});})[_0x4bf8('0x27')](function(){logger['info'](util[_0x4bf8('0x1b')](_0x4bf8('0x3a'),EXTRACTED_REPORT_ID,_0x4bf8('0x3b')));return analyticExtractedReport(_0x4bf8('0x3c'),_0x54a42a?util[_0x4bf8('0x1b')](_0x4bf8('0x39'),_0x2b296a,_0x54a42a?_0x4bf8('0x3d'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x4bf8('0x1b')](_0x4bf8('0x3e'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x4bf8('0x3f')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x4bf8('0x27')](function(_0x30cbde){EXTRACTED_REPORT=_0x30cbde;return dbH[_0x4bf8('0x2a')][_0x4bf8('0x2b')](util[_0x4bf8('0x1b')](_0x4bf8('0x40'),QUERY),{'type':dbH['sequelize'][_0x4bf8('0x2c')][_0x4bf8('0x2d')]});})[_0x4bf8('0x27')](extractReport)[_0x4bf8('0x41')](function(_0x54ab46){logger[_0x4bf8('0x42')](util[_0x4bf8('0x1b')](_0x4bf8('0x43'),EXTRACTED_REPORT_ID,_0x4bf8('0x3b')),util[_0x4bf8('0x44')](_0x54ab46,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4bf8('0x45'));})[_0x4bf8('0x46')](function(){process[_0x4bf8('0x47')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2e5291=new PdfPrinter({'Arial':{'normal':__dirname+_0x4bf8('0x48'),'bold':__dirname+_0x4bf8('0x49'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x4bf8('0x4a')}});return _0x2e5291;}function getPDFDocDefinitionFromHTML(_0x2bf156,_0x2f1669){var _0x2c7a11=util[_0x4bf8('0x1b')](_0x4bf8('0x4b'),_0x2f1669['channel'],_0x2f1669[_0x4bf8('0x4c')]);var _0x3b4575=moment()[_0x4bf8('0x1b')]('YYYY-MM-DD')['toString']();var _0xda950e=htmlToPdfmake(_0x2bf156,{'window':window,'tableAutoSize':!![]});return{'content':[_0xda950e],'defaultStyle':{'font':_0x4bf8('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x4bf8('0x4d'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x4bf8('0x4d'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x4bf8('0x4d')}},'header':function(){return[{'text':_0x4bf8('0x4e'),'style':'header'}];},'footer':function(_0x59eb44,_0x4663c7){return[{'text':util['format'](_0x4bf8('0x4f'),_0x2c7a11,_0x59eb44,_0x4663c7,_0x3b4575),'style':_0x4bf8('0x22')}];}};}function writePDFDocument(_0x5ad312,_0x29ae3a){return new Promise(function(_0xce76ec,_0x5dad4d){var _0x49e1d7=_0x5ad312[_0x4bf8('0x50')](fs[_0x4bf8('0x51')](_0x29ae3a));_0x49e1d7['on'](_0x4bf8('0x52'),function(){_0xce76ec('finish');});_0x49e1d7['on'](_0x4bf8('0x53'),function(_0x2f38be){_0x5dad4d(_0x2f38be);});_0x5ad312[_0x4bf8('0x54')]();});}exports['createPdfFromHTML']=function(_0x3c231b,_0x41d5d4){var _0x18d2e4=getPDFPrinter();var _0x5da74c=getPDFDocDefinitionFromHTML(_0x3c231b,_0x41d5d4);var _0x12df56=_0x18d2e4[_0x4bf8('0x36')](_0x5da74c);return writePDFDocument(_0x12df56,_0x41d5d4['path'])[_0x4bf8('0x41')](function(_0x571586){throw _0x571586;});};
\ No newline at end of file
index 1373b4a..5e8b0a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af4=['splitSizeXlsx','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','isInteger','forEach','push','sequelize','query','format','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.xlsx','existsSync','join','each','xlsx','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','%s.%s','inspect','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split'];(function(_0x1a5f96,_0x294770){var _0x15d0fe=function(_0x566b64){while(--_0x566b64){_0x1a5f96['push'](_0x1a5f96['shift']());}};_0x15d0fe(++_0x294770);}(_0x5af4,0x158));var _0x45af=function(_0x6499c8,_0x597e32){_0x6499c8=_0x6499c8-0x0;var _0x19ea4b=_0x5af4[_0x6499c8];return _0x19ea4b;};'use strict';var util=require(_0x45af('0x0'));var path=require(_0x45af('0x1'));var _=require(_0x45af('0x2'));var fs=require('fs');var json2xls=require(_0x45af('0x3'));var BPromise=require(_0x45af('0x4'));var zipdir=require(_0x45af('0x5'));var rimraf=require(_0x45af('0x6'));var db=require(_0x45af('0x7'))['db'];var dbH=require(_0x45af('0x7'))['dbH'];var logger=require(_0x45af('0x8'))(_0x45af('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x45af('0xa')][0x3];var PATH=process[_0x45af('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x12f62a,_0x12e080){var _0x3eefbb={'status':_0x12f62a};var _0x5de89d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x12e080){_0x3eefbb[_0x45af('0xb')]=_0x12e080;}return db[_0x45af('0xc')][_0x45af('0xd')](_0x3eefbb,_0x5de89d);}function main(){var _0x4d70b7=0x1388;var _0x1f6146;logger[_0x45af('0xe')](util['format'](_0x45af('0xf'),EXTRACTED_REPORT_ID,_0x45af('0x10')));return db[_0x45af('0x11')][_0x45af('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x45af('0x13'),_0x45af('0x14')]})[_0x45af('0x15')](function(_0x2726f6){if(_0x2726f6){_0x1f6146=_0x2726f6;_0x4d70b7=_0x1f6146[_0x45af('0x14')]||0x1388;}})[_0x45af('0x15')](function(){return dbH['sequelize']['query'](util['format'](_0x45af('0x16'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x45af('0x17')]});})[_0x45af('0x15')](function(_0x509bee){if(!_0x509bee[0x0]['num']){return analyticExtractedReport(_0x45af('0x18'));}var _0x58d5c6=[];var _0x57f3b1=0x0;if(_0x1f6146['split']){if(_0x509bee&&_0x509bee[_0x45af('0x19')]){var _0x5c6b79=_[_0x45af('0x1a')](_0x509bee[0x0][_0x45af('0x1b')]/_0x4d70b7);var _0xebbd6e=Number[_0x45af('0x1c')](_0x509bee[0x0][_0x45af('0x1b')]/_0x4d70b7)?_0x509bee[0x0][_0x45af('0x1b')]%_0x4d70b7:0x0;_0x5c6b79[_0x45af('0x1d')](function(_0x4d1265){if(_0x4d1265>0x0){_0x57f3b1+=_0x4d70b7;}_0x58d5c6[_0x45af('0x1e')](dbH[_0x45af('0x1f')][_0x45af('0x20')](util[_0x45af('0x21')](_0x45af('0x22'),QUERY,_0x4d70b7,_0x57f3b1),{'type':dbH[_0x45af('0x1f')][_0x45af('0x23')]['SELECT']}));});if(_0xebbd6e>0x0){_0x57f3b1+=_0x4d70b7;_0x58d5c6[_0x45af('0x1e')](dbH['sequelize'][_0x45af('0x20')](util[_0x45af('0x21')](_0x45af('0x22'),QUERY,_0xebbd6e,_0x57f3b1),{'type':dbH[_0x45af('0x1f')][_0x45af('0x23')][_0x45af('0x17')]}));}}}else{_0x58d5c6[_0x45af('0x1e')](dbH[_0x45af('0x1f')]['query'](QUERY,{'type':dbH[_0x45af('0x1f')][_0x45af('0x23')]['SELECT']}));}var _0x29e06b=path[_0x45af('0x24')](PATH);var _0x30a76e=path[_0x45af('0x25')](PATH,_0x45af('0x26'));var _0x3c1908=_0x1f6146[_0x45af('0x13')]&&_0x58d5c6[_0x45af('0x19')]>0x1;var _0x17bcc5=[];if(!fs[_0x45af('0x27')](path['join'](_0x29e06b,_0x30a76e))&&_0x3c1908){fs['mkdirSync'](path[_0x45af('0x28')](_0x29e06b,_0x30a76e));}return BPromise[_0x45af('0x29')](_0x58d5c6,function(_0x166fbb){_0x17bcc5[_0x45af('0x1e')](_0x166fbb);})[_0x45af('0x15')](function(){for(var _0x57d7af=0x0;_0x57d7af<_0x17bcc5[_0x45af('0x19')];_0x57d7af+=0x1){var _0x2a7325;var _0x12ad8d=_0x17bcc5[_0x57d7af];if(_0x3c1908){_0x2a7325=path[_0x45af('0x28')](_0x29e06b,_0x30a76e,util['format']('%s%d.%s',_0x30a76e,_0x57d7af,'xlsx'));}else{_0x2a7325=path['join'](_0x29e06b,util[_0x45af('0x21')]('%s.%s',_0x30a76e,_0x45af('0x2a')));}fs[_0x45af('0x2b')](_0x2a7325,json2xls(_0x12ad8d),_0x45af('0x2c'));}})[_0x45af('0x15')](function(){if(_0x3c1908){return new Promise(function(_0x83f5e4){zipdir(path[_0x45af('0x28')](_0x29e06b,_0x30a76e),{'saveTo':path['join'](_0x29e06b,util[_0x45af('0x21')]('%s.%s',_0x30a76e,_0x45af('0x2d')))},function(_0x5c3ccf,_0x2b377d){rimraf(path[_0x45af('0x28')](_0x29e06b,_0x30a76e),function(){});_0x83f5e4(_0x45af('0x2e'));});});}})[_0x45af('0x15')](function(){logger[_0x45af('0xe')](util[_0x45af('0x21')](_0x45af('0x2f'),EXTRACTED_REPORT_ID,_0x45af('0x10')));return analyticExtractedReport('Completed',_0x3c1908?util['format'](_0x45af('0x30'),_0x30a76e,_0x3c1908?_0x45af('0x2d'):_0x45af('0x2a')):null);});})['catch'](function(_0x2eaca1){logger[_0x45af('0xe')](util[_0x45af('0x21')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x45af('0x10')),util[_0x45af('0x31')](_0x2eaca1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x45af('0x32'));})['finally'](function(){process[_0x45af('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x5c13=['zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','XLSX','xlsx','catch','inspect','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','length','num','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','existsSync','mkdirSync','join','each','%s%d.%s','writeFileSync','binary','%s.%s'];(function(_0x5cbd40,_0x3806a7){var _0x302dd6=function(_0x52cdf3){while(--_0x52cdf3){_0x5cbd40['push'](_0x5cbd40['shift']());}};_0x302dd6(++_0x3806a7);}(_0x5c13,0x103));var _0x35c1=function(_0x3c5e54,_0x2b991b){_0x3c5e54=_0x3c5e54-0x0;var _0x3ae1f3=_0x5c13[_0x3c5e54];return _0x3ae1f3;};'use strict';var util=require(_0x35c1('0x0'));var path=require(_0x35c1('0x1'));var _=require(_0x35c1('0x2'));var fs=require('fs');var json2xls=require(_0x35c1('0x3'));var BPromise=require(_0x35c1('0x4'));var zipdir=require(_0x35c1('0x5'));var rimraf=require('rimraf');var db=require(_0x35c1('0x6'))['db'];var dbH=require(_0x35c1('0x6'))['dbH'];var logger=require(_0x35c1('0x7'))(_0x35c1('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x35c1('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x35c1('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3e6aee,_0x57af7d){var _0x51203b={'status':_0x3e6aee};var _0xfad8c4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x57af7d){_0x51203b[_0x35c1('0xa')]=_0x57af7d;}return db[_0x35c1('0xb')][_0x35c1('0xc')](_0x51203b,_0xfad8c4);}function main(){var _0x412d05=0x1388;var _0x5e508d;logger[_0x35c1('0xd')](util[_0x35c1('0xe')](_0x35c1('0xf'),EXTRACTED_REPORT_ID,'XLSX'));return db['Setting'][_0x35c1('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x35c1('0x11'),_0x35c1('0x12')]})[_0x35c1('0x13')](function(_0x1deaed){if(_0x1deaed){_0x5e508d=_0x1deaed;_0x412d05=_0x5e508d['splitSizeXlsx']||0x1388;}})['then'](function(){return dbH[_0x35c1('0x14')][_0x35c1('0x15')](util[_0x35c1('0xe')](_0x35c1('0x16'),QUERY),{'type':dbH[_0x35c1('0x14')][_0x35c1('0x17')]['SELECT']});})['then'](function(_0x416746){if(!_0x416746[0x0]['num']){return analyticExtractedReport('Empty');}var _0xb8f1=[];var _0x3ffeb5=0x0;if(_0x5e508d[_0x35c1('0x11')]){if(_0x416746&&_0x416746[_0x35c1('0x18')]){var _0xd54556=_['range'](_0x416746[0x0][_0x35c1('0x19')]/_0x412d05);var _0x5b954c=Number[_0x35c1('0x1a')](_0x416746[0x0][_0x35c1('0x19')]/_0x412d05)?_0x416746[0x0][_0x35c1('0x19')]%_0x412d05:0x0;_0xd54556['forEach'](function(_0x30367f){if(_0x30367f>0x0){_0x3ffeb5+=_0x412d05;}_0xb8f1[_0x35c1('0x1b')](dbH[_0x35c1('0x14')][_0x35c1('0x15')](util[_0x35c1('0xe')](_0x35c1('0x1c'),QUERY,_0x412d05,_0x3ffeb5),{'type':dbH[_0x35c1('0x14')][_0x35c1('0x17')][_0x35c1('0x1d')]}));});if(_0x5b954c>0x0){_0x3ffeb5+=_0x412d05;_0xb8f1[_0x35c1('0x1b')](dbH[_0x35c1('0x14')][_0x35c1('0x15')](util[_0x35c1('0xe')](_0x35c1('0x1c'),QUERY,_0x5b954c,_0x3ffeb5),{'type':dbH[_0x35c1('0x14')][_0x35c1('0x17')]['SELECT']}));}}}else{_0xb8f1[_0x35c1('0x1b')](dbH[_0x35c1('0x14')][_0x35c1('0x15')](QUERY,{'type':dbH[_0x35c1('0x14')]['QueryTypes'][_0x35c1('0x1d')]}));}var _0x1363db=path[_0x35c1('0x1e')](PATH);var _0x438103=path[_0x35c1('0x1f')](PATH,_0x35c1('0x20'));var _0x2bc0a7=_0x5e508d[_0x35c1('0x11')]&&_0xb8f1[_0x35c1('0x18')]>0x1;var _0x5eed3d=[];if(!fs[_0x35c1('0x21')](path['join'](_0x1363db,_0x438103))&&_0x2bc0a7){fs[_0x35c1('0x22')](path[_0x35c1('0x23')](_0x1363db,_0x438103));}return BPromise[_0x35c1('0x24')](_0xb8f1,function(_0x5da781){_0x5eed3d[_0x35c1('0x1b')](_0x5da781);})[_0x35c1('0x13')](function(){for(var _0x31cee3=0x0;_0x31cee3<_0x5eed3d['length'];_0x31cee3+=0x1){var _0x3af9d8;var _0x146fd5=_0x5eed3d[_0x31cee3];if(_0x2bc0a7){_0x3af9d8=path[_0x35c1('0x23')](_0x1363db,_0x438103,util[_0x35c1('0xe')](_0x35c1('0x25'),_0x438103,_0x31cee3,'xlsx'));}else{_0x3af9d8=path[_0x35c1('0x23')](_0x1363db,util[_0x35c1('0xe')]('%s.%s',_0x438103,'xlsx'));}fs[_0x35c1('0x26')](_0x3af9d8,json2xls(_0x146fd5),_0x35c1('0x27'));}})[_0x35c1('0x13')](function(){if(_0x2bc0a7){return new Promise(function(_0x4e4bf7){zipdir(path['join'](_0x1363db,_0x438103),{'saveTo':path[_0x35c1('0x23')](_0x1363db,util[_0x35c1('0xe')](_0x35c1('0x28'),_0x438103,_0x35c1('0x29')))},function(_0x51ae8c,_0x2ddb14){rimraf(path[_0x35c1('0x23')](_0x1363db,_0x438103),function(){});_0x4e4bf7(_0x35c1('0x2a'));});});}})['then'](function(){logger[_0x35c1('0xd')](util[_0x35c1('0xe')](_0x35c1('0x2b'),EXTRACTED_REPORT_ID,_0x35c1('0x2c')));return analyticExtractedReport('Completed',_0x2bc0a7?util[_0x35c1('0xe')]('%s.%s',_0x438103,_0x2bc0a7?'zip':_0x35c1('0x2d')):null);});})[_0x35c1('0x2e')](function(_0x155a35){logger['info'](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util[_0x35c1('0x2f')](_0x155a35,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x35c1('0x30')](function(){process[_0x35c1('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
index 6cfc17c..83850ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ac=['_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','createdAt','interval','IntervalId','map','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','error','util','models','Interval','findAll','intervals','VoiceExtension','then','exten','filter','groupBy','playback','hasOwnProperty','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','priority','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa4ac,0xa9));var _0xca4a=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xa4ac[_0x174ef5];return _0x1cc379;};'use strict';var _=require('lodash');var util=require(_0xca4a('0x0'));function rewrite(_0xfbd9b2,_0x402bbd){var _0xbdc3c4=this;return _0xfbd9b2[_0xca4a('0x1')][_0xca4a('0x2')][_0xca4a('0x3')]({'raw':!![]})['then'](function(_0x2e2769){_0xbdc3c4[_0xca4a('0x4')]=_0x2e2769;return _0xfbd9b2[_0xca4a('0x1')][_0xca4a('0x5')][_0xca4a('0x3')]({'where':{'IntervalId':_0x402bbd['IntervalId']},'raw':!![]});})[_0xca4a('0x6')](function(_0x51638c){return _0xfbd9b2[_0xca4a('0x1')]['VoiceExtension'][_0xca4a('0x3')]({'where':{'exten':{'$in':_['uniq'](_['map'](_0x51638c,_0xca4a('0x7')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0xca4a('0x6')](function(_0x5d9689){var _0x354fa0=_['filter'](_0x5d9689,{'priority':'1'});var _0xd7ac78=_[_0xca4a('0x8')](_0x5d9689,{'isApp':0x1});var _0x12cff5=_[_0xca4a('0x9')](_0xd7ac78,_0xca4a('0x7'));var _0x599461=['queue',_0xca4a('0xa')];var _0x20044d=[];var _0x406b9d=[];for(var _0x1b144f in _0x12cff5){if(_0x12cff5[_0xca4a('0xb')](_0x1b144f)){_0xbdc3c4['priority']=0x2;_0xbdc3c4[_0xca4a('0xc')]=[];_0xbdc3c4[_0xca4a('0xd')]=_[_0xca4a('0xe')](_0x354fa0,{'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')]});_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':util[_0xca4a('0x12')](_0xca4a('0x13'),_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')]),'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4['priority']++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});if(_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')]===_0xca4a('0x16')){_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0]['type'],'app':'Set','appdata':_0xca4a('0x17')+_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')],'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});}else if(_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')]===_0xca4a('0x19')){if(_0xbdc3c4['extension']){_0xbdc3c4['extensions'][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x1a')+(_0xbdc3c4[_0xca4a('0xd')]['cutdigits']?_0xca4a('0x1b')+_0xbdc3c4[_0xca4a('0xd')][_0xca4a('0x1c')]+'}':_0xca4a('0x1d')),'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});}_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x17')+_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')],'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});var _0x4c1a74=_0xbdc3c4[_0xca4a('0x18')]++;_0xbdc3c4[_0xca4a('0xc')]['push']({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x1e'),'appdata':_0xca4a('0x1f')+(_0x4c1a74+0x2)+_0xca4a('0x20')+(_0x4c1a74+0x1)+')','context':_0x12cff5[_0x1b144f][0x0]['context'],'exten':_0x12cff5[_0x1b144f][0x0]['exten'],'priority':_0x4c1a74,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});if(_0xbdc3c4[_0xca4a('0xd')]){_0xbdc3c4[_0xca4a('0xc')]['push']({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xbdc3c4['extension']['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0xbdc3c4[_0xca4a('0xd')][_0xca4a('0x1c')]+'}':_0xca4a('0x21'),'context':_0x12cff5[_0x1b144f][0x0]['context'],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});}_0xbdc3c4['extensions']['push']({'type':_0x12cff5[_0x1b144f][0x0]['type'],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x22')+_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId'],'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0]['exten'],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});if(_0xbdc3c4[_0xca4a('0xd')]&&_0xbdc3c4[_0xca4a('0xd')][_0xca4a('0xb')](_0xca4a('0x23'))&&_0xbdc3c4[_0xca4a('0xd')]['recordingFormat']!==_0xca4a('0x24')){_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':'Set','appdata':_0xca4a('0x25'),'context':_0x12cff5[_0x1b144f][0x0]['context'],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x26')+_0xbdc3c4[_0xca4a('0xd')]['recordingFormat']||_0xca4a('0x27'),'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4['priority']++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});}}_0xbdc3c4[_0xca4a('0xc')]['push']({'type':_0x12cff5[_0x1b144f][0x0]['type'],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x28'),'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});_0xbdc3c4['extensions']['push']({'type':_0x12cff5[_0x1b144f][0x0]['type'],'app':_0xca4a('0x11'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x12cff5[_0x1b144f][0x0]['context'],'exten':_0x12cff5[_0x1b144f][0x0]['exten'],'priority':_0xbdc3c4[_0xca4a('0x18')]++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x29'),'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'priority':_0xbdc3c4['priority']++,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});for(var _0x19bdaa=0x0,_0x3e2540=0x0;_0x19bdaa<_0x12cff5[_0x1b144f][_0xca4a('0x2a')];_0x19bdaa+=0x1,_0x3e2540=0x0){var _0x35840c=_0x12cff5[_0x1b144f][_0x19bdaa];if(_0x35840c[_0xca4a('0x10')]){_0x35840c[_0xca4a('0x10')]=_0x35840c[_0xca4a('0x10')]['toLowerCase']();}var _0x4912b3=[];var _0x39235c=[];delete _0x35840c['id'];delete _0x35840c[_0xca4a('0x2b')];delete _0x35840c['updatedAt'];var _0x2c6faf=_0x35840c['interval']!=='*,*,*,*'?[_0x35840c[_0xca4a('0x2c')]]:_0x35840c[_0xca4a('0x2d')]?_[_0xca4a('0x2e')](_['filter'](_0xbdc3c4['intervals'],{'IntervalId':_0x35840c['IntervalId']}),_0xca4a('0x2c')):[];if(_0x35840c[_0xca4a('0xb')](_0xca4a('0x2f'))){if(_0x35840c[_0xca4a('0x2f')]&&_0x35840c[_0xca4a('0x2f')]!=='--'){_0x4912b3['push']({'type':_0x35840c['type'],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x30')+_0x35840c[_0xca4a('0x2f')],'context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c[_0xca4a('0x7')],'priority':_0x2c6faf[_0xca4a('0x2a')]+_0xbdc3c4['priority']+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});}}if(_0x35840c[_0xca4a('0x10')]==='outbound'&&_0x35840c[_0xca4a('0xb')]('callerID')){if(_0x35840c[_0xca4a('0x31')]){_0x4912b3['push']({'type':_0x35840c[_0xca4a('0x10')],'app':'ExecIf','appdata':_0xca4a('0x32')+_0x35840c[_0xca4a('0x31')]+')','context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c['exten'],'priority':_0x2c6faf['length']+_0xbdc3c4[_0xca4a('0x18')]+_0x3e2540++,'VoiceExtensionId':_0x35840c['VoiceExtensionId']});}else{_0x4912b3['push']({'type':_0x35840c[_0xca4a('0x10')],'app':'ExecIf','appdata':_0xca4a('0x33'),'context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c[_0xca4a('0x7')],'priority':_0x2c6faf[_0xca4a('0x2a')]+_0xbdc3c4['priority']+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});}}if(_0x35840c[_0xca4a('0xb')]('answer')){if(_0x599461[_0xca4a('0x34')](_0x35840c[_0xca4a('0x35')][_0xca4a('0x36')]())>=0x0&&_0x35840c[_0xca4a('0x37')]!==_0xca4a('0x38')){if(_0x35840c['answer']){_0x4912b3[_0xca4a('0xf')]({'type':_0x35840c[_0xca4a('0x10')],'app':_0xca4a('0x1e'),'appdata':_0xca4a('0x39'),'context':_0x35840c['context'],'exten':_0x35840c[_0xca4a('0x7')],'priority':_0x2c6faf[_0xca4a('0x2a')]+_0xbdc3c4[_0xca4a('0x18')]+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});_0x4912b3[_0xca4a('0xf')]({'type':_0x35840c[_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c[_0xca4a('0x7')],'priority':_0x2c6faf[_0xca4a('0x2a')]+_0xbdc3c4[_0xca4a('0x18')]+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});}else{_0x4912b3['push']({'type':_0x35840c['type'],'app':_0xca4a('0x1e'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c['exten'],'priority':_0x2c6faf['length']+_0xbdc3c4[_0xca4a('0x18')]+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});_0x4912b3[_0xca4a('0xf')]({'type':_0x35840c[_0xca4a('0x10')],'app':_0xca4a('0x11'),'appdata':_0xca4a('0x3a'),'context':_0x35840c[_0xca4a('0x14')],'exten':_0x35840c[_0xca4a('0x7')],'priority':_0x2c6faf[_0xca4a('0x2a')]+_0xbdc3c4[_0xca4a('0x18')]+_0x3e2540++,'VoiceExtensionId':_0x35840c[_0xca4a('0x15')]});}}}for(var _0x4c66d3=0x0;_0x4c66d3<_0x2c6faf[_0xca4a('0x2a')];_0x4c66d3+=0x1){var _0x2b35c0=_0xbdc3c4['priority']+_0x2c6faf[_0xca4a('0x2a')];var _0x4e3715=_0x4c66d3===_0x2c6faf['length']-0x1?_0xbdc3c4['priority']+_0x4912b3[_0xca4a('0x2a')]+_0x39235c[_0xca4a('0x2a')]+0x2:_0xbdc3c4[_0xca4a('0x18')]+_0x4c66d3+0x1;_0x4912b3['splice'](_0x4c66d3,0x0,{'type':_0x35840c[_0xca4a('0x10')],'app':_0xca4a('0x3b'),'appdata':_0x2c6faf[_0x4c66d3]+'?'+_0x35840c[_0xca4a('0x14')]+_0xca4a('0x3c')+_0x2b35c0+':'+_0x35840c[_0xca4a('0x14')]+_0xca4a('0x3c')+_0x4e3715,'exten':_0x35840c[_0xca4a('0x7')],'context':_0x35840c[_0xca4a('0x14')],'priority':_0xbdc3c4[_0xca4a('0x18')]+_0x4c66d3,'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0]['VoiceExtensionId']});}_0x35840c[_0xca4a('0x18')]=_0x4912b3[_0xca4a('0x2a')]?_['last'](_0x4912b3)[_0xca4a('0x18')]+0x1:_0xbdc3c4[_0xca4a('0x18')];_0xbdc3c4['priority']=(_0x39235c[_0xca4a('0x2a')]?_[_0xca4a('0x3d')](_0x39235c)[_0xca4a('0x18')]:_0x35840c['priority'])+0x1;_0xbdc3c4['extensions']=_[_0xca4a('0x3e')](_0xbdc3c4[_0xca4a('0xc')],_0x4912b3,[_0x35840c],_0x39235c);}_0xbdc3c4[_0xca4a('0xc')][_0xca4a('0xf')]({'type':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x10')],'app':_0xca4a('0x3f'),'exten':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x7')],'context':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x14')],'priority':_0xbdc3c4[_0xca4a('0x18')],'VoiceExtensionId':_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]});_0x20044d['push'](_0x12cff5[_0x1b144f][0x0][_0xca4a('0x15')]);_0x406b9d=_[_0xca4a('0x3e')](_0x406b9d,_0xbdc3c4['extensions']);}}return _0xfbd9b2[_0xca4a('0x40')](function(_0x12219b){return _0xfbd9b2['models'][_0xca4a('0x5')][_0xca4a('0x41')]({'where':{'VoiceExtensionId':{'$in':_0x20044d}},'transaction':_0x12219b})[_0xca4a('0x6')](function(_0x10acee){return _0xfbd9b2[_0xca4a('0x1')]['VoiceExtension']['bulkCreate'](_[_0xca4a('0x42')](_0x406b9d,_0xca4a('0x18')),{'transaction':_0x12219b});});});})[_0xca4a('0x43')](function(_0xb0533b){console[_0xca4a('0x44')](_0xb0533b);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xa586=['XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','error','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','priority','outbound','${EXTEN:','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','length','ExecIf','answer','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer'];(function(_0x325507,_0x1968ab){var _0x1a5253=function(_0x591c8e){while(--_0x591c8e){_0x325507['push'](_0x325507['shift']());}};_0x1a5253(++_0x1968ab);}(_0xa586,0x12d));var _0x6a58=function(_0x3ee1fe,_0x59f2a1){_0x3ee1fe=_0x3ee1fe-0x0;var _0x1ae57a=_0xa586[_0x3ee1fe];return _0x1ae57a;};'use strict';var _=require(_0x6a58('0x0'));var util=require(_0x6a58('0x1'));function rewrite(_0x432773,_0x44373){var _0x26a398=this;return _0x432773[_0x6a58('0x2')][_0x6a58('0x3')][_0x6a58('0x4')]({'raw':!![]})[_0x6a58('0x5')](function(_0x5a0ec6){_0x26a398[_0x6a58('0x6')]=_0x5a0ec6;return _0x432773[_0x6a58('0x2')][_0x6a58('0x7')][_0x6a58('0x4')]({'where':{'IntervalId':_0x44373[_0x6a58('0x8')]},'raw':!![]});})[_0x6a58('0x5')](function(_0x3265c7){return _0x432773[_0x6a58('0x2')]['VoiceExtension']['findAll']({'where':{'exten':{'$in':_[_0x6a58('0x9')](_['map'](_0x3265c7,_0x6a58('0xa')))}},'order':[{'raw':_0x6a58('0xb')}],'raw':!![]});})['then'](function(_0x482109){var _0x161511=_[_0x6a58('0xc')](_0x482109,{'priority':'1'});var _0x30da0d=_[_0x6a58('0xc')](_0x482109,{'isApp':0x1});var _0x108d31=_[_0x6a58('0xd')](_0x30da0d,_0x6a58('0xa'));var _0x234918=['queue',_0x6a58('0xe')];var _0x53a5de=[];var _0x271c13=[];for(var _0x57087b in _0x108d31){if(_0x108d31[_0x6a58('0xf')](_0x57087b)){_0x26a398['priority']=0x2;_0x26a398[_0x6a58('0x10')]=[];_0x26a398[_0x6a58('0x11')]=_[_0x6a58('0x12')](_0x161511,{'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')]});_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':_0x6a58('0x15'),'appdata':util[_0x6a58('0x16')](_0x6a58('0x17'),_0x108d31[_0x57087b][0x0][_0x6a58('0x14')]),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398['priority']++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});if(_0x108d31[_0x57087b][0x0][_0x6a58('0x14')]===_0x6a58('0x1a')){_0x26a398['extensions']['push']({'type':_0x108d31[_0x57087b][0x0]['type'],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x1b')+_0x108d31[_0x57087b][0x0][_0x6a58('0x19')],'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0]['exten'],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0]['VoiceExtensionId']});}else if(_0x108d31[_0x57087b][0x0]['type']===_0x6a58('0x1d')){if(_0x26a398['extension']){_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0]['type'],'app':_0x6a58('0x15'),'appdata':'CDR(destination)='+(_0x26a398[_0x6a58('0x11')]['cutdigits']?_0x6a58('0x1e')+_0x26a398[_0x6a58('0x11')][_0x6a58('0x1f')]+'}':_0x6a58('0x20')),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0]['VoiceExtensionId']});}_0x26a398[_0x6a58('0x10')]['push']({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x1b')+_0x108d31[_0x57087b][0x0]['VoiceExtensionId'],'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398['priority']++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});var _0x5ef1fe=_0x26a398[_0x6a58('0x1c')]++;_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':'ExecIf','appdata':_0x6a58('0x21')+(_0x5ef1fe+0x2)+_0x6a58('0x22')+(_0x5ef1fe+0x1)+')','context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0]['exten'],'priority':_0x5ef1fe,'VoiceExtensionId':_0x108d31[_0x57087b][0x0]['VoiceExtensionId']});if(_0x26a398['extension']){_0x26a398[_0x6a58('0x10')]['push']({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':_0x6a58('0x15'),'appdata':_0x26a398[_0x6a58('0x11')][_0x6a58('0x1f')]?'CDR(prefix)=${EXTEN:0:'+_0x26a398[_0x6a58('0x11')][_0x6a58('0x1f')]+'}':_0x6a58('0x23'),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398['priority']++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});}_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':'Set','appdata':_0x6a58('0x24')+_0x108d31[_0x57087b][0x0]['VoiceExtensionId'],'context':_0x108d31[_0x57087b][0x0]['context'],'exten':_0x108d31[_0x57087b][0x0]['exten'],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});if(_0x26a398[_0x6a58('0x11')]&&_0x26a398['extension'][_0x6a58('0xf')](_0x6a58('0x25'))&&_0x26a398[_0x6a58('0x11')][_0x6a58('0x25')]!==_0x6a58('0x26')){_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0]['type'],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x27'),'context':_0x108d31[_0x57087b][0x0]['context'],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x26a398[_0x6a58('0x11')][_0x6a58('0x25')]||_0x6a58('0x28'),'context':_0x108d31[_0x57087b][0x0]['context'],'exten':_0x108d31[_0x57087b][0x0]['exten'],'priority':_0x26a398['priority']++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});}}_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0][_0x6a58('0x14')],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x29'),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0]['exten'],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0]['type'],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x2a'),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398['priority']++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});_0x26a398[_0x6a58('0x10')][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0]['type'],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x2b'),'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'priority':_0x26a398[_0x6a58('0x1c')]++,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});for(var _0x1cc552=0x0,_0x4fbd39=0x0;_0x1cc552<_0x108d31[_0x57087b]['length'];_0x1cc552+=0x1,_0x4fbd39=0x0){var _0xe633a=_0x108d31[_0x57087b][_0x1cc552];if(_0xe633a[_0x6a58('0x14')]){_0xe633a[_0x6a58('0x14')]=_0xe633a[_0x6a58('0x14')][_0x6a58('0x2c')]();}var _0xa6c5b7=[];var _0x46650f=[];delete _0xe633a['id'];delete _0xe633a[_0x6a58('0x2d')];delete _0xe633a[_0x6a58('0x2e')];var _0x114cf7=_0xe633a[_0x6a58('0x2f')]!==_0x6a58('0x30')?[_0xe633a['interval']]:_0xe633a[_0x6a58('0x8')]?_['map'](_[_0x6a58('0xc')](_0x26a398['intervals'],{'IntervalId':_0xe633a[_0x6a58('0x8')]}),_0x6a58('0x2f')):[];if(_0xe633a[_0x6a58('0xf')]('tag')){if(_0xe633a[_0x6a58('0x31')]&&_0xe633a['tag']!=='--'){_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a[_0x6a58('0x14')],'app':'Set','appdata':'CDR(tag)='+_0xe633a[_0x6a58('0x31')],'context':_0xe633a[_0x6a58('0x18')],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7['length']+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a[_0x6a58('0x19')]});}}if(_0xe633a['type']===_0x6a58('0x1d')&&_0xe633a[_0x6a58('0xf')](_0x6a58('0x32'))){if(_0xe633a['callerID']){_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a[_0x6a58('0x14')],'app':'ExecIf','appdata':_0x6a58('0x33')+_0xe633a[_0x6a58('0x32')]+')','context':_0xe633a[_0x6a58('0x18')],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7[_0x6a58('0x34')]+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a[_0x6a58('0x19')]});}else{_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a[_0x6a58('0x14')],'app':_0x6a58('0x35'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0xe633a['context'],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7['length']+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a[_0x6a58('0x19')]});}}if(_0xe633a[_0x6a58('0xf')](_0x6a58('0x36'))){if(_0x234918['indexOf'](_0xe633a[_0x6a58('0x37')][_0x6a58('0x2c')]())>=0x0&&_0xe633a[_0x6a58('0x38')]!==_0x6a58('0x39')){if(_0xe633a[_0x6a58('0x36')]){_0xa6c5b7['push']({'type':_0xe633a['type'],'app':_0x6a58('0x35'),'appdata':_0x6a58('0x3a'),'context':_0xe633a[_0x6a58('0x18')],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7[_0x6a58('0x34')]+_0x26a398['priority']+_0x4fbd39++,'VoiceExtensionId':_0xe633a[_0x6a58('0x19')]});_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a['type'],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x3b'),'context':_0xe633a['context'],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7[_0x6a58('0x34')]+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a['VoiceExtensionId']});}else{_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a[_0x6a58('0x14')],'app':_0x6a58('0x35'),'appdata':_0x6a58('0x3c'),'context':_0xe633a[_0x6a58('0x18')],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7['length']+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a['VoiceExtensionId']});_0xa6c5b7[_0x6a58('0x13')]({'type':_0xe633a[_0x6a58('0x14')],'app':_0x6a58('0x15'),'appdata':_0x6a58('0x3d'),'context':_0xe633a['context'],'exten':_0xe633a[_0x6a58('0xa')],'priority':_0x114cf7[_0x6a58('0x34')]+_0x26a398[_0x6a58('0x1c')]+_0x4fbd39++,'VoiceExtensionId':_0xe633a[_0x6a58('0x19')]});}}}for(var _0x29dc2d=0x0;_0x29dc2d<_0x114cf7[_0x6a58('0x34')];_0x29dc2d+=0x1){var _0x3bb922=_0x26a398['priority']+_0x114cf7['length'];var _0x5f1a7c=_0x29dc2d===_0x114cf7[_0x6a58('0x34')]-0x1?_0x26a398[_0x6a58('0x1c')]+_0xa6c5b7[_0x6a58('0x34')]+_0x46650f[_0x6a58('0x34')]+0x2:_0x26a398['priority']+_0x29dc2d+0x1;_0xa6c5b7[_0x6a58('0x3e')](_0x29dc2d,0x0,{'type':_0xe633a[_0x6a58('0x14')],'app':'GotoIfTime','appdata':_0x114cf7[_0x29dc2d]+'?'+_0xe633a[_0x6a58('0x18')]+_0x6a58('0x3f')+_0x3bb922+':'+_0xe633a[_0x6a58('0x18')]+_0x6a58('0x3f')+_0x5f1a7c,'exten':_0xe633a[_0x6a58('0xa')],'context':_0xe633a['context'],'priority':_0x26a398[_0x6a58('0x1c')]+_0x29dc2d,'VoiceExtensionId':_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]});}_0xe633a['priority']=_0xa6c5b7['length']?_[_0x6a58('0x40')](_0xa6c5b7)[_0x6a58('0x1c')]+0x1:_0x26a398[_0x6a58('0x1c')];_0x26a398[_0x6a58('0x1c')]=(_0x46650f[_0x6a58('0x34')]?_[_0x6a58('0x40')](_0x46650f)[_0x6a58('0x1c')]:_0xe633a['priority'])+0x1;_0x26a398[_0x6a58('0x10')]=_[_0x6a58('0x41')](_0x26a398['extensions'],_0xa6c5b7,[_0xe633a],_0x46650f);}_0x26a398['extensions'][_0x6a58('0x13')]({'type':_0x108d31[_0x57087b][0x0]['type'],'app':'Hangup','exten':_0x108d31[_0x57087b][0x0][_0x6a58('0xa')],'context':_0x108d31[_0x57087b][0x0][_0x6a58('0x18')],'priority':_0x26a398[_0x6a58('0x1c')],'VoiceExtensionId':_0x108d31[_0x57087b][0x0]['VoiceExtensionId']});_0x53a5de[_0x6a58('0x13')](_0x108d31[_0x57087b][0x0][_0x6a58('0x19')]);_0x271c13=_[_0x6a58('0x41')](_0x271c13,_0x26a398[_0x6a58('0x10')]);}}return _0x432773[_0x6a58('0x42')](function(_0x2d3314){return _0x432773[_0x6a58('0x2')][_0x6a58('0x7')][_0x6a58('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x53a5de}},'transaction':_0x2d3314})[_0x6a58('0x5')](function(_0x5efda2){return _0x432773[_0x6a58('0x2')][_0x6a58('0x7')][_0x6a58('0x44')](_[_0x6a58('0x45')](_0x271c13,_0x6a58('0x1c')),{'transaction':_0x2d3314});});});})['catch'](function(_0x45ba03){console[_0x6a58('0x46')](_0x45ba03);});}exports[_0x6a58('0x47')]=rewrite;
\ No newline at end of file
index 23cb544..22f212d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x651f=['contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','util','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','error','contact','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','CompanyId','duplicate','CmContact','create','keys','then','pick','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','NOW()','toString','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','from','cm_hopper','deletedAt\x20IS\x20NULL','id\x20IN\x20?','phone\x20NOT\x20IN\x20(?)','calleridnum','\x20=\x20?','str','cm_hopper_black','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','query','catch','onlyIfOpen','push','sequelize','all','outbound','BlackLists','VoiceQueueId','Campaign','always','CampaignId','get','finally','emit'];(function(_0x15513d,_0xb6daa){var _0x54505c=function(_0x46307f){while(--_0x46307f){_0x15513d['push'](_0x15513d['shift']());}};_0x54505c(++_0xb6daa);}(_0x651f,0xe9));var _0xf651=function(_0x586e09,_0xc952ee){_0x586e09=_0x586e09-0x0;var _0x2d0568=_0x651f[_0x586e09];return _0x2d0568;};'use strict';var BPromise=require(_0xf651('0x0'));var util=require(_0xf651('0x1'));var _=require(_0xf651('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xf651('0x3'));var Redis=require(_0xf651('0x4'));var db=require(_0xf651('0x5'))['db'];var config=require(_0xf651('0x6'));var logger=require(_0xf651('0x7'))('api');config[_0xf651('0x8')]=_['defaults'](config[_0xf651('0x8')],{'host':_0xf651('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf651('0x8')]));require(_0xf651('0xa'))[_0xf651('0xb')](socket);try{if(!process[_0xf651('0xc')][0x2]||process[_0xf651('0xc')][0x2]===_0xf651('0xd')||process[_0xf651('0xc')][0x2]===_0xf651('0xe')){throw new Error(_0xf651('0xf'));}var FILEPATH=process['argv'][0x2];if(!process[_0xf651('0xc')][0x3]||process['argv'][0x3]===_0xf651('0xd')||process['argv'][0x3]==='null'||!process[_0xf651('0xc')][0x4]||process[_0xf651('0xc')][0x4]===_0xf651('0xd')||process[_0xf651('0xc')][0x4]===_0xf651('0xe')){throw new Error(_0xf651('0x10'));}var FIELDS=_[_0xf651('0x11')](process[_0xf651('0xc')][0x3][_0xf651('0x12')](','),process[_0xf651('0xc')][0x4][_0xf651('0x12')](','));if(!process[_0xf651('0xc')][0x5]||process[_0xf651('0xc')][0x5]==='undefined'||process[_0xf651('0xc')][0x5]===_0xf651('0xe')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0xf651('0xc')][0x5];var COMPANYID=process[_0xf651('0xc')][0x6]&&process[_0xf651('0xc')][0x6]!==_0xf651('0xd')&&process[_0xf651('0xc')][0x6]!==_0xf651('0xe')?process[_0xf651('0xc')][0x6]:null;var DUPLICATES=process[_0xf651('0xc')][0x7]&&process['argv'][0x7]!=='undefined'&&process[_0xf651('0xc')][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0xf651('0xc')][0x8]||process[_0xf651('0xc')][0x8]===_0xf651('0xd')||process[_0xf651('0xc')][0x8]===_0xf651('0xe')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xf651('0xc')][0x8];}catch(_0x4ff254){logger[_0xf651('0x13')](_0x4ff254);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(_0x478b5b,_0x259c00,_0x1df97c,_0x3562fe){var _0x4308a5={'message':_0x259c00};_0x4308a5[_0x478b5b]=!![];if(_0x1df97c){_0x4308a5[_0xf651('0x14')]=_0x1df97c;}if(_0x3562fe){_0x4308a5['index']=_0x3562fe;}return _0x4308a5;}function isEmail(_0x37bb03){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))*$/[_0xf651('0x15')](_0x37bb03);}function checkRow(_0x582346,_0xee00be,_0x5c7601){return new BPromise(function(_0x16dc70,_0x5c4d75){if(_[_0xf651('0x16')](_0x582346)){return _0x5c4d75(handleCheckRowError('error',_0xf651('0x17'),null,_0x5c7601));}if(_0x582346['errors']&&_0x582346[_0xf651('0x18')][_0xf651('0x19')]){var _0x4a4af7=_['map'](_0x582346[_0xf651('0x18')],_0xf651('0x1a'))[_0xf651('0x1b')](';');return _0x5c4d75(handleCheckRowError(_0xf651('0x13'),_0x4a4af7,null,_0x5c7601));}var _0x51a8a8={};for(var _0x34b243 in FIELDS){if(FIELDS[_0xf651('0x1c')](_0x34b243)&&FIELDS[_0x34b243]){_0x51a8a8[_0x34b243]=_0x582346[_0xf651('0x1d')][0x0][FIELDS[_0x34b243]]||_0x582346[_0xf651('0x1d')][0x0]['\ufeff'+FIELDS[_0x34b243]];}}if(!_0x51a8a8[_0xf651('0x1e')]){return _0x5c4d75(handleCheckRowError('error',_0xf651('0x1f'),null,_0x5c7601));}if(!_0x51a8a8[_0xf651('0x20')]){return _0x5c4d75(handleCheckRowError('error',_0xf651('0x21'),null,_0x5c7601));}if(_0x51a8a8[_0xf651('0x22')]){var _0x39202d=moment(_0x51a8a8[_0xf651('0x22')],_0xf651('0x23'));if(!_0x39202d[_0xf651('0x24')]()){return _0x5c4d75(handleCheckRowError(_0xf651('0x13'),_0xf651('0x25'),null,_0x5c7601));}}if(_0x51a8a8[_0xf651('0x26')]){if(!isEmail(_0x51a8a8[_0xf651('0x26')])){return _0x5c4d75(handleCheckRowError(_0xf651('0x13'),_0xf651('0x27'),null,_0x5c7601));}}_0x51a8a8['ListId']=LISTID;_0x51a8a8[_0xf651('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xf651('0x19')]&&_0xee00be){var _0x1e8772={};for(var _0xb6f77f=0x0,_0x17e4f8=DUPLICATES[_0xf651('0x19')];_0xb6f77f<_0x17e4f8;_0xb6f77f+=0x1){_0x1e8772[DUPLICATES[_0xb6f77f]]=_0x51a8a8[DUPLICATES[_0xb6f77f]];}var _0x2a872e=_['find'](_0xee00be,_0x1e8772);if(_0x2a872e){return _0x5c4d75(handleCheckRowError(_0xf651('0x29'),'Duplicate\x20Contact',_0x2a872e,_0x5c7601));}}return db[_0xf651('0x2a')][_0xf651('0x2b')](_0x51a8a8,{'raw':!![],'hooks':![],'fields':_[_0xf651('0x2c')](_0x51a8a8)})[_0xf651('0x2d')](function(_0x2e5964){if(DUPLICATES&&DUPLICATES[_0xf651('0x19')]&&_0xee00be){_0xee00be['push'](_[_0xf651('0x2e')](_0x51a8a8,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2e5964['id'];return _0x16dc70();})['catch'](function(_0x56af11){return _0x5c4d75(handleCheckRowError(_0xf651('0x13'),_0xf651('0x2f')+(_0x56af11[_0xf651('0x1a')]||JSON[_0xf651('0x30')](_0x56af11)),null,_0x5c7601));});});}function checkHopper(){function _0x13afc6(){return function(_0xae66a){logger[_0xf651('0x13')](_0xf651('0x31'),_0xf651('0x32'),util[_0xf651('0x33')](_0xae66a,{'showHidden':![],'depth':null}));};}var _0x10d1be=function(_0x32b015,_0x53106e){var _0x2ed6b3=squel[_0xf651('0x34')]()[_0xf651('0x35')]('cm_hopper')[_0xf651('0x36')](['phone',_0xf651('0x37'),_0xf651('0x38'),_0xf651('0x39'),_0x53106e,_0xf651('0x3a'),_0xf651('0x3b')],squel[_0xf651('0x3c')]()[_0xf651('0x3d')]('phone',_0xf651('0x20'))['field'](_0xf651('0x3e'),_0xf651('0x37'))['field']('id',_0xf651('0x38'))['field'](LISTID['toString'](),_0xf651('0x39'))[_0xf651('0x3d')](_0x32b015['id'][_0xf651('0x3f')](),_0x53106e)[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x3a'))[_0xf651('0x3d')](_0xf651('0x3e'),'updatedAt')['from'](_0xf651('0x40'))[_0xf651('0x41')]('deletedAt\x20IS\x20NULL')[_0xf651('0x41')](_0xf651('0x42'),LISTID[_0xf651('0x3f')]())[_0xf651('0x41')](_0xf651('0x43'))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xf651('0x3d')]('phone')[_0xf651('0x44')](_0xf651('0x45'))[_0xf651('0x41')](_0x53106e+'\x20=\x20?',_0x32b015['id'][_0xf651('0x3f')]())))[_0xf651('0x3f')]();return _0x2ed6b3;};var _0x47c5b2=function(_0x339a71,_0x305fa3){var _0x41c083=squel[_0xf651('0x34')]()[_0xf651('0x35')](_0xf651('0x45'))[_0xf651('0x36')](['phone',_0xf651('0x37'),'ContactId','ListId',_0x305fa3,'createdAt',_0xf651('0x3b')],squel[_0xf651('0x3c')]()[_0xf651('0x3d')](_0xf651('0x20'),'phone')[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x37'))[_0xf651('0x3d')]('id','ContactId')[_0xf651('0x3d')](LISTID[_0xf651('0x3f')](),_0xf651('0x39'))[_0xf651('0x3d')](_0x339a71['id'][_0xf651('0x3f')](),_0x305fa3)[_0xf651('0x3d')]('NOW()',_0xf651('0x3a'))[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x3b'))[_0xf651('0x44')](_0xf651('0x40'))[_0xf651('0x41')](_0xf651('0x46'))['where']('ListId\x20=\x20?',LISTID[_0xf651('0x3f')]())[_0xf651('0x41')](_0xf651('0x47'),squel['str'](hopperContacts))['where'](_0xf651('0x43'))[_0xf651('0x41')](_0xf651('0x48'),squel[_0xf651('0x3c')]()['field'](_0xf651('0x49'))[_0xf651('0x44')]('cm_hopper_final')[_0xf651('0x41')](_0x305fa3+'\x20=\x20?',_0x339a71['id'][_0xf651('0x3f')]()))[_0xf651('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0xf651('0x3c')]()[_0xf651('0x3d')](_0xf651('0x20'))[_0xf651('0x44')](_0xf651('0x45'))[_0xf651('0x41')](_0x305fa3+_0xf651('0x4a'),_0x339a71['id']['toString']())))[_0xf651('0x3f')]();return _0x41c083;};function _0x463428(_0x4e7f58,_0x5e86bf){var _0x157cae=squel[_0xf651('0x34')]()[_0xf651('0x35')](_0xf651('0x45'))[_0xf651('0x36')]([_0xf651('0x20'),_0xf651('0x37'),_0xf651('0x38'),_0xf651('0x39'),_0x5e86bf,_0xf651('0x3a'),_0xf651('0x3b')],squel['select']()[_0xf651('0x3d')]('phone',_0xf651('0x20'))[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x37'))[_0xf651('0x3d')]('id','ContactId')[_0xf651('0x3d')](LISTID[_0xf651('0x3f')](),'ListId')[_0xf651('0x3d')](_0x4e7f58['id']['toString'](),_0x5e86bf)[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x3a'))[_0xf651('0x3d')](_0xf651('0x3e'),'updatedAt')['from'](_0xf651('0x40'))[_0xf651('0x41')](_0xf651('0x46'))[_0xf651('0x41')]('ListId\x20=\x20?',LISTID[_0xf651('0x3f')]())[_0xf651('0x41')](_0xf651('0x47'),squel[_0xf651('0x4b')](hopperContacts))[_0xf651('0x41')](_0xf651('0x43')))[_0xf651('0x3f')]();return _0x157cae;}function _0xcd48fc(_0x340b37,_0x3910db){var _0x3a077a=squel['insert']()[_0xf651('0x35')](_0xf651('0x4c'))[_0xf651('0x36')](['phone',_0xf651('0x38'),'ListId',_0x3910db,_0xf651('0x3a'),'updatedAt'],squel[_0xf651('0x3c')]()[_0xf651('0x3d')](_0xf651('0x20'),_0xf651('0x20'))[_0xf651('0x3d')]('id','ContactId')[_0xf651('0x3d')](LISTID[_0xf651('0x3f')](),'ListId')[_0xf651('0x3d')](_0x340b37['id'][_0xf651('0x3f')](),_0x3910db)['field'](_0xf651('0x3e'),_0xf651('0x3a'))[_0xf651('0x3d')](_0xf651('0x3e'),_0xf651('0x3b'))[_0xf651('0x44')](_0xf651('0x40'))[_0xf651('0x41')]('deletedAt\x20IS\x20NULL')[_0xf651('0x41')]('ListId\x20=\x20?',LISTID[_0xf651('0x3f')]())[_0xf651('0x41')](_0xf651('0x47'),squel[_0xf651('0x4b')](hopperContacts))[_0xf651('0x41')](_0xf651('0x43')))[_0xf651('0x3f')]();return _0x3a077a;}return db[_0xf651('0x4d')][_0xf651('0x4e')]({'where':{'type':'outbound'},'attributes':['id',_0xf651('0x4f')],'include':[{'model':db[_0xf651('0x50')],'as':_0xf651('0x51'),'where':{'id':LISTID}}]})[_0xf651('0x2d')](function(_0x49aae6){var _0xaa3f8b=[];if(_0x49aae6){var _0x47cd06;for(var _0x1074e3=0x0,_0x7a605f;_0x1074e3<_0x49aae6['length'];_0x1074e3+=0x1){_0x7a605f=_0x49aae6[_0x1074e3]['get']({'plain':!![]});switch(_0x7a605f[_0xf651('0x4f')]){case'always':_0xaa3f8b['push'](db['sequelize'][_0xf651('0x52')](_0x47c5b2(_0x7a605f,'VoiceQueueId'))[_0xf651('0x2d')](function(){})[_0xf651('0x53')](_0x13afc6()));break;case _0xf651('0x54'):_0xaa3f8b[_0xf651('0x55')](db[_0xf651('0x56')][_0xf651('0x52')](_0x10d1be(_0x7a605f,'VoiceQueueId'))[_0xf651('0x2d')](function(){})[_0xf651('0x53')](_0x13afc6()));break;default:_0xaa3f8b['push'](db[_0xf651('0x56')]['query'](_0x463428(_0x7a605f,'VoiceQueueId'))['then'](function(){})[_0xf651('0x53')](_0x13afc6()));}}}return _0xaa3f8b;})[_0xf651('0x57')]()['then'](function(){return db[_0xf651('0x4d')]['findAll']({'where':{'type':_0xf651('0x58')},'attributes':['id'],'include':[{'model':db[_0xf651('0x50')],'as':_0xf651('0x59'),'where':{'id':LISTID}}]})[_0xf651('0x2d')](function(_0x288149){var _0x41b698=[];if(_0x288149){var _0x51833c;for(var _0x49b5dc=0x0,_0x2f1d47;_0x49b5dc<_0x288149[_0xf651('0x19')];_0x49b5dc+=0x1){_0x2f1d47=_0x288149[_0x49b5dc]['get']({'plain':!![]});_0x41b698[_0xf651('0x55')](db['sequelize'][_0xf651('0x52')](_0xcd48fc(_0x2f1d47,_0xf651('0x5a')))[_0xf651('0x2d')](function(){})['catch'](_0x13afc6()));}}return _0x41b698;})[_0xf651('0x57')]();})[_0xf651('0x2d')](function(){return db[_0xf651('0x5b')][_0xf651('0x4e')]({'attributes':['id',_0xf651('0x4f')],'include':[{'model':db['CmList'],'as':_0xf651('0x51'),'where':{'id':LISTID}}]})['then'](function(_0x942991){var _0x51f7f0=[];if(_0x942991){for(var _0x34b42a=0x0,_0x1fb26b;_0x34b42a<_0x942991[_0xf651('0x19')];_0x34b42a+=0x1){_0x1fb26b=_0x942991[_0x34b42a]['get']({'plain':!![]});switch(_0x1fb26b[_0xf651('0x4f')]){case _0xf651('0x5c'):_0x51f7f0[_0xf651('0x55')](db['sequelize'][_0xf651('0x52')](_0x47c5b2(_0x1fb26b,'CampaignId'))['then'](function(){})['catch'](_0x13afc6()));break;case'onlyIfOpen':_0x51f7f0[_0xf651('0x55')](db[_0xf651('0x56')][_0xf651('0x52')](_0x10d1be(_0x1fb26b,_0xf651('0x5d')))[_0xf651('0x2d')](function(){})[_0xf651('0x53')](_0x13afc6()));break;default:_0x51f7f0[_0xf651('0x55')](db['sequelize']['query'](_0x463428(_0x1fb26b,_0xf651('0x5d')))['then'](function(){})['catch'](_0x13afc6()));}}}return _0x51f7f0;})['all']();})[_0xf651('0x2d')](function(){return db[_0xf651('0x5b')]['findAll']({'attributes':['id'],'include':[{'model':db[_0xf651('0x50')],'as':_0xf651('0x59'),'where':{'id':LISTID}}]})[_0xf651('0x2d')](function(_0x482493){var _0x544822=[];if(_0x482493){for(var _0x3abf03=0x0,_0x21d47c;_0x3abf03<_0x482493[_0xf651('0x19')];_0x3abf03+=0x1){_0x21d47c=_0x482493[_0x3abf03][_0xf651('0x5e')]({'plain':!![]});_0x544822[_0xf651('0x55')](db[_0xf651('0x56')][_0xf651('0x52')](_0xcd48fc(_0x21d47c,'CampaignId'))['then'](function(){})['catch'](_0x13afc6()));}}return _0x544822;})[_0xf651('0x57')]();})['catch'](function(_0x3396a7){logger['error']('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x3396a7[_0xf651('0x1a')]);});}var processPromises=function(_0x536da5){return BPromise[_0xf651('0x57')](promises)[_0xf651('0x2d')](function(_0x48c9b7){})[_0xf651('0x53')](function(_0x2dc072){logger[_0xf651('0x13')]('Error\x20processing\x20rows\x20block:',JSON[_0xf651('0x30')](_0x2dc072));})[_0xf651('0x5f')](function(){socket[_0xf651('0x60')](_0xf651('0x61')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x536da5){return _0x536da5['resume']();}});};var endCsv=function(){return BPromise[_0xf651('0x62')]()[_0xf651('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0xf651('0x2d')](function(){socket[_0xf651('0x60')](_0xf651('0x61')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xf651('0x63')](FILEPATH);}catch(_0x5e65e1){logger[_0xf651('0x13')](_0xf651('0x64'),JSON['stringify'](_0x5e65e1));}finally{process[_0xf651('0x65')](0x0);}});};process['on'](_0xf651('0x66'),function(){logger['info'](_0xf651('0x67'));endCsv();});function main(){return BPromise[_0xf651('0x62')]()[_0xf651('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xf651('0x12')](',');return db[_0xf651('0x2a')][_0xf651('0x4e')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xf651('0x2d')](function(_0x275143){var _0x398054=fs[_0xf651('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xf651('0x69')](_0x398054,{'header':!![],'skipEmptyLines':!![],'step':function(_0x521785,_0x4fc4d5){total+=0x1;var _0x24e58=total;promises[_0xf651('0x55')](checkRow(_0x521785,_0x275143,_0x24e58)[_0xf651('0x2d')](function(){success+=0x1;})[_0xf651('0x53')](function(_0x4d2b69){if(_0x4d2b69['error']){errors+=0x1;delete _0x4d2b69[_0xf651('0x13')];}else if(_0x4d2b69[_0xf651('0x29')]){duplicates+=0x1;delete _0x4d2b69['duplicate'];}rows['push'](_0x4d2b69);}));if(total%0xc8===0x0){_0x4fc4d5[_0xf651('0x6a')]();return processPromises(_0x4fc4d5);}},'complete':function(){return processPromises()[_0xf651('0x2d')](function(){logger[_0xf651('0x6b')](_0xf651('0x6c'));endCsv();});},'error':function(_0x46aa69,_0x230113){logger[_0xf651('0x6b')](_0xf651('0x6d'),JSON['stringify'](_0x46aa69));endCsv();}});})[_0xf651('0x53')](function(_0x23330c){logger[_0xf651('0x13')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0xf651('0x30')](_0x23330c));});}main();
\ No newline at end of file
+var _0x2a69=['BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','stringify','finally','emit','contact:csv_','resume','resolve','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','parse','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','util','lodash','squel','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','length','find','duplicate','CmContact','create','keys','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','inspect','into','cm_hopper','scheduledAt','createdAt','updatedAt','select','field','NOW()','ContactId','toString','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','insert','fromQuery','id\x20IN\x20?','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','cm_hopper_black','cm_contacts','VoiceQueue','findAll','dialCheckDuplicateType','Lists','get','push','sequelize','query','VoiceQueueId','onlyIfOpen','all','outbound','CmList','Campaign','always','CampaignId'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x2a69,0x1d1));var _0x92a6=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x2a69[_0x46e363];return _0x3fb059;};'use strict';var BPromise=require(_0x92a6('0x0'));var util=require(_0x92a6('0x1'));var _=require(_0x92a6('0x2'));var fs=require('fs');var squel=require(_0x92a6('0x3'));var Papa=require(_0x92a6('0x4'));var Redis=require('ioredis');var db=require(_0x92a6('0x5'))['db'];var config=require(_0x92a6('0x6'));var logger=require(_0x92a6('0x7'))(_0x92a6('0x8'));config[_0x92a6('0x9')]=_['defaults'](config['redis'],{'host':_0x92a6('0xa'),'port':0x18eb});var socket=require(_0x92a6('0xb'))(new Redis(config[_0x92a6('0x9')]));require(_0x92a6('0xc'))[_0x92a6('0xd')](socket);try{if(!process[_0x92a6('0xe')][0x2]||process['argv'][0x2]===_0x92a6('0xf')||process[_0x92a6('0xe')][0x2]===_0x92a6('0x10')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x92a6('0xe')][0x2];if(!process[_0x92a6('0xe')][0x3]||process[_0x92a6('0xe')][0x3]===_0x92a6('0xf')||process[_0x92a6('0xe')][0x3]===_0x92a6('0x10')||!process[_0x92a6('0xe')][0x4]||process[_0x92a6('0xe')][0x4]==='undefined'||process[_0x92a6('0xe')][0x4]===_0x92a6('0x10')){throw new Error(_0x92a6('0x11'));}var FIELDS=_[_0x92a6('0x12')](process[_0x92a6('0xe')][0x3][_0x92a6('0x13')](','),process[_0x92a6('0xe')][0x4][_0x92a6('0x13')](','));if(!process[_0x92a6('0xe')][0x5]||process['argv'][0x5]===_0x92a6('0xf')||process['argv'][0x5]===_0x92a6('0x10')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x92a6('0xe')][0x5];var COMPANYID=process[_0x92a6('0xe')][0x6]&&process[_0x92a6('0xe')][0x6]!==_0x92a6('0xf')&&process[_0x92a6('0xe')][0x6]!==_0x92a6('0x10')?process[_0x92a6('0xe')][0x6]:null;var DUPLICATES=process[_0x92a6('0xe')][0x7]&&process['argv'][0x7]!==_0x92a6('0xf')&&process['argv'][0x7]!=='null'?process[_0x92a6('0xe')][0x7]:null;if(!process[_0x92a6('0xe')][0x8]||process[_0x92a6('0xe')][0x8]===_0x92a6('0xf')||process['argv'][0x8]==='null'){throw new Error(_0x92a6('0x14'));}var SOCKET_TIMESTAMP=process[_0x92a6('0xe')][0x8];}catch(_0x390da8){logger[_0x92a6('0x15')](_0x390da8);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(_0x12c28d,_0x5ee4b7,_0x27b861,_0x5c326d){var _0x84fd34={'message':_0x5ee4b7};_0x84fd34[_0x12c28d]=!![];if(_0x27b861){_0x84fd34[_0x92a6('0x16')]=_0x27b861;}if(_0x5c326d){_0x84fd34['index']=_0x5c326d;}return _0x84fd34;}function isEmail(_0x2b5fe4){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))*$/[_0x92a6('0x17')](_0x2b5fe4);}function checkRow(_0x144ef0,_0x3ed533,_0x1c2f83){return new BPromise(function(_0x3fce43,_0x378783){if(_[_0x92a6('0x18')](_0x144ef0)){return _0x378783(handleCheckRowError(_0x92a6('0x15'),_0x92a6('0x19'),null,_0x1c2f83));}if(_0x144ef0[_0x92a6('0x1a')]&&_0x144ef0[_0x92a6('0x1a')]['length']){var _0x1fa14e=_['map'](_0x144ef0[_0x92a6('0x1a')],_0x92a6('0x1b'))[_0x92a6('0x1c')](';');return _0x378783(handleCheckRowError(_0x92a6('0x15'),_0x1fa14e,null,_0x1c2f83));}var _0x5bdf1f={};for(var _0x49e39e in FIELDS){if(FIELDS[_0x92a6('0x1d')](_0x49e39e)&&FIELDS[_0x49e39e]){_0x5bdf1f[_0x49e39e]=_0x144ef0[_0x92a6('0x1e')][0x0][FIELDS[_0x49e39e]]||_0x144ef0['data'][0x0]['\ufeff'+FIELDS[_0x49e39e]];}}if(!_0x5bdf1f[_0x92a6('0x1f')]){return _0x378783(handleCheckRowError('error',_0x92a6('0x20'),null,_0x1c2f83));}if(!_0x5bdf1f[_0x92a6('0x21')]){return _0x378783(handleCheckRowError('error',_0x92a6('0x22'),null,_0x1c2f83));}if(_0x5bdf1f['birthDate']){var _0x527444=moment(_0x5bdf1f[_0x92a6('0x23')],_0x92a6('0x24'));if(!_0x527444[_0x92a6('0x25')]()){return _0x378783(handleCheckRowError(_0x92a6('0x15'),_0x92a6('0x26'),null,_0x1c2f83));}}if(_0x5bdf1f['email']){if(!isEmail(_0x5bdf1f[_0x92a6('0x27')])){return _0x378783(handleCheckRowError(_0x92a6('0x15'),_0x92a6('0x28'),null,_0x1c2f83));}}_0x5bdf1f[_0x92a6('0x29')]=LISTID;_0x5bdf1f['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x92a6('0x2a')]&&_0x3ed533){var _0x4e5447={};for(var _0x18a5c2=0x0,_0x410599=DUPLICATES[_0x92a6('0x2a')];_0x18a5c2<_0x410599;_0x18a5c2+=0x1){_0x4e5447[DUPLICATES[_0x18a5c2]]=_0x5bdf1f[DUPLICATES[_0x18a5c2]];}var _0x35b1bd=_[_0x92a6('0x2b')](_0x3ed533,_0x4e5447);if(_0x35b1bd){return _0x378783(handleCheckRowError(_0x92a6('0x2c'),'Duplicate\x20Contact',_0x35b1bd,_0x1c2f83));}}return db[_0x92a6('0x2d')][_0x92a6('0x2e')](_0x5bdf1f,{'raw':!![],'hooks':![],'fields':_[_0x92a6('0x2f')](_0x5bdf1f)})[_0x92a6('0x30')](function(_0x58d6d2){if(DUPLICATES&&DUPLICATES[_0x92a6('0x2a')]&&_0x3ed533){_0x3ed533['push'](_[_0x92a6('0x31')](_0x5bdf1f,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x58d6d2['id'];return _0x3fce43();})[_0x92a6('0x32')](function(_0x3bd1e5){return _0x378783(handleCheckRowError('error',_0x92a6('0x33')+(_0x3bd1e5['message']||JSON['stringify'](_0x3bd1e5)),null,_0x1c2f83));});});}function checkHopper(){function _0xb07f9(){return function(_0x2d4220){logger[_0x92a6('0x15')](_0x92a6('0x34'),'checkHopper',util[_0x92a6('0x35')](_0x2d4220,{'showHidden':![],'depth':null}));};}var _0x2ae643=function(_0x8fad5a,_0x352a33){var _0x5ea731=squel['insert']()[_0x92a6('0x36')](_0x92a6('0x37'))['fromQuery']([_0x92a6('0x21'),_0x92a6('0x38'),'ContactId','ListId',_0x352a33,_0x92a6('0x39'),_0x92a6('0x3a')],squel[_0x92a6('0x3b')]()[_0x92a6('0x3c')](_0x92a6('0x21'),_0x92a6('0x21'))['field'](_0x92a6('0x3d'),'scheduledAt')[_0x92a6('0x3c')]('id',_0x92a6('0x3e'))[_0x92a6('0x3c')](LISTID[_0x92a6('0x3f')](),_0x92a6('0x29'))[_0x92a6('0x3c')](_0x8fad5a['id'][_0x92a6('0x3f')](),_0x352a33)[_0x92a6('0x3c')](_0x92a6('0x3d'),_0x92a6('0x39'))[_0x92a6('0x3c')](_0x92a6('0x3d'),_0x92a6('0x3a'))[_0x92a6('0x40')]('cm_contacts')[_0x92a6('0x41')](_0x92a6('0x42'))[_0x92a6('0x41')](_0x92a6('0x43'),LISTID['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x92a6('0x41')](_0x92a6('0x44'),squel[_0x92a6('0x3b')]()[_0x92a6('0x3c')](_0x92a6('0x21'))['from']('cm_hopper')['where'](_0x352a33+_0x92a6('0x45'),_0x8fad5a['id'][_0x92a6('0x3f')]())))['toString']();return _0x5ea731;};var _0x406728=function(_0x5744a6,_0x3ee220){var _0x471f8b=squel[_0x92a6('0x46')]()[_0x92a6('0x36')](_0x92a6('0x37'))[_0x92a6('0x47')]([_0x92a6('0x21'),_0x92a6('0x38'),_0x92a6('0x3e'),'ListId',_0x3ee220,'createdAt',_0x92a6('0x3a')],squel[_0x92a6('0x3b')]()[_0x92a6('0x3c')]('phone','phone')[_0x92a6('0x3c')]('NOW()',_0x92a6('0x38'))[_0x92a6('0x3c')]('id','ContactId')[_0x92a6('0x3c')](LISTID[_0x92a6('0x3f')](),_0x92a6('0x29'))[_0x92a6('0x3c')](_0x5744a6['id'][_0x92a6('0x3f')](),_0x3ee220)[_0x92a6('0x3c')]('NOW()',_0x92a6('0x39'))['field'](_0x92a6('0x3d'),'updatedAt')[_0x92a6('0x40')]('cm_contacts')[_0x92a6('0x41')](_0x92a6('0x42'))['where'](_0x92a6('0x43'),LISTID[_0x92a6('0x3f')]())[_0x92a6('0x41')](_0x92a6('0x48'),squel[_0x92a6('0x49')](hopperContacts))[_0x92a6('0x41')](_0x92a6('0x4a'))['where'](_0x92a6('0x44'),squel['select']()[_0x92a6('0x3c')](_0x92a6('0x4b'))[_0x92a6('0x40')](_0x92a6('0x4c'))[_0x92a6('0x41')](_0x3ee220+_0x92a6('0x45'),_0x5744a6['id'][_0x92a6('0x3f')]()))[_0x92a6('0x41')](_0x92a6('0x44'),squel[_0x92a6('0x3b')]()[_0x92a6('0x3c')]('phone')[_0x92a6('0x40')](_0x92a6('0x37'))[_0x92a6('0x41')](_0x3ee220+'\x20=\x20?',_0x5744a6['id'][_0x92a6('0x3f')]())))[_0x92a6('0x3f')]();return _0x471f8b;};function _0x4763f1(_0x45417d,_0x2dfb95){var _0x3b2556=squel[_0x92a6('0x46')]()[_0x92a6('0x36')]('cm_hopper')[_0x92a6('0x47')](['phone','scheduledAt',_0x92a6('0x3e'),_0x92a6('0x29'),_0x2dfb95,_0x92a6('0x39'),_0x92a6('0x3a')],squel['select']()[_0x92a6('0x3c')]('phone',_0x92a6('0x21'))[_0x92a6('0x3c')](_0x92a6('0x3d'),_0x92a6('0x38'))['field']('id','ContactId')[_0x92a6('0x3c')](LISTID[_0x92a6('0x3f')](),'ListId')[_0x92a6('0x3c')](_0x45417d['id'][_0x92a6('0x3f')](),_0x2dfb95)[_0x92a6('0x3c')]('NOW()',_0x92a6('0x39'))[_0x92a6('0x3c')](_0x92a6('0x3d'),_0x92a6('0x3a'))[_0x92a6('0x40')]('cm_contacts')['where'](_0x92a6('0x42'))['where'](_0x92a6('0x43'),LISTID[_0x92a6('0x3f')]())['where'](_0x92a6('0x48'),squel[_0x92a6('0x49')](hopperContacts))[_0x92a6('0x41')](_0x92a6('0x4a')))[_0x92a6('0x3f')]();return _0x3b2556;}function _0x24948b(_0x4bf5f9,_0x689005){var _0x3df021=squel[_0x92a6('0x46')]()[_0x92a6('0x36')](_0x92a6('0x4d'))[_0x92a6('0x47')]([_0x92a6('0x21'),_0x92a6('0x3e'),_0x92a6('0x29'),_0x689005,'createdAt',_0x92a6('0x3a')],squel['select']()['field']('phone','phone')[_0x92a6('0x3c')]('id',_0x92a6('0x3e'))['field'](LISTID['toString'](),_0x92a6('0x29'))[_0x92a6('0x3c')](_0x4bf5f9['id']['toString'](),_0x689005)[_0x92a6('0x3c')](_0x92a6('0x3d'),_0x92a6('0x39'))[_0x92a6('0x3c')]('NOW()','updatedAt')[_0x92a6('0x40')](_0x92a6('0x4e'))[_0x92a6('0x41')]('deletedAt\x20IS\x20NULL')[_0x92a6('0x41')](_0x92a6('0x43'),LISTID[_0x92a6('0x3f')]())[_0x92a6('0x41')](_0x92a6('0x48'),squel[_0x92a6('0x49')](hopperContacts))[_0x92a6('0x41')](_0x92a6('0x4a')))[_0x92a6('0x3f')]();return _0x3df021;}return db[_0x92a6('0x4f')][_0x92a6('0x50')]({'where':{'type':'outbound'},'attributes':['id',_0x92a6('0x51')],'include':[{'model':db['CmList'],'as':_0x92a6('0x52'),'where':{'id':LISTID}}]})[_0x92a6('0x30')](function(_0x54b220){var _0x5cdaf8=[];if(_0x54b220){var _0x7d47ad;for(var _0x374711=0x0,_0x12c877;_0x374711<_0x54b220['length'];_0x374711+=0x1){_0x12c877=_0x54b220[_0x374711][_0x92a6('0x53')]({'plain':!![]});switch(_0x12c877['dialCheckDuplicateType']){case'always':_0x5cdaf8[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x406728(_0x12c877,_0x92a6('0x57')))[_0x92a6('0x30')](function(){})[_0x92a6('0x32')](_0xb07f9()));break;case _0x92a6('0x58'):_0x5cdaf8[_0x92a6('0x54')](db[_0x92a6('0x55')]['query'](_0x2ae643(_0x12c877,_0x92a6('0x57')))[_0x92a6('0x30')](function(){})[_0x92a6('0x32')](_0xb07f9()));break;default:_0x5cdaf8[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x4763f1(_0x12c877,_0x92a6('0x57')))[_0x92a6('0x30')](function(){})['catch'](_0xb07f9()));}}}return _0x5cdaf8;})[_0x92a6('0x59')]()[_0x92a6('0x30')](function(){return db[_0x92a6('0x4f')][_0x92a6('0x50')]({'where':{'type':_0x92a6('0x5a')},'attributes':['id'],'include':[{'model':db[_0x92a6('0x5b')],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x4bf252){var _0x4b4f0c=[];if(_0x4bf252){var _0x5c57fc;for(var _0x535c0c=0x0,_0x30a5e6;_0x535c0c<_0x4bf252['length'];_0x535c0c+=0x1){_0x30a5e6=_0x4bf252[_0x535c0c][_0x92a6('0x53')]({'plain':!![]});_0x4b4f0c[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x24948b(_0x30a5e6,_0x92a6('0x57')))['then'](function(){})[_0x92a6('0x32')](_0xb07f9()));}}return _0x4b4f0c;})[_0x92a6('0x59')]();})[_0x92a6('0x30')](function(){return db[_0x92a6('0x5c')]['findAll']({'attributes':['id',_0x92a6('0x51')],'include':[{'model':db[_0x92a6('0x5b')],'as':_0x92a6('0x52'),'where':{'id':LISTID}}]})[_0x92a6('0x30')](function(_0x46318f){var _0x24f251=[];if(_0x46318f){for(var _0x55d5a3=0x0,_0x132d9d;_0x55d5a3<_0x46318f[_0x92a6('0x2a')];_0x55d5a3+=0x1){_0x132d9d=_0x46318f[_0x55d5a3][_0x92a6('0x53')]({'plain':!![]});switch(_0x132d9d[_0x92a6('0x51')]){case _0x92a6('0x5d'):_0x24f251[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x406728(_0x132d9d,_0x92a6('0x5e')))[_0x92a6('0x30')](function(){})[_0x92a6('0x32')](_0xb07f9()));break;case _0x92a6('0x58'):_0x24f251[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x2ae643(_0x132d9d,_0x92a6('0x5e')))['then'](function(){})['catch'](_0xb07f9()));break;default:_0x24f251[_0x92a6('0x54')](db[_0x92a6('0x55')][_0x92a6('0x56')](_0x4763f1(_0x132d9d,_0x92a6('0x5e')))[_0x92a6('0x30')](function(){})[_0x92a6('0x32')](_0xb07f9()));}}}return _0x24f251;})[_0x92a6('0x59')]();})[_0x92a6('0x30')](function(){return db['Campaign'][_0x92a6('0x50')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x92a6('0x5f'),'where':{'id':LISTID}}]})[_0x92a6('0x30')](function(_0x49ff0b){var _0x45beee=[];if(_0x49ff0b){for(var _0x4fd8eb=0x0,_0x505307;_0x4fd8eb<_0x49ff0b[_0x92a6('0x2a')];_0x4fd8eb+=0x1){_0x505307=_0x49ff0b[_0x4fd8eb]['get']({'plain':!![]});_0x45beee[_0x92a6('0x54')](db[_0x92a6('0x55')]['query'](_0x24948b(_0x505307,_0x92a6('0x5e')))[_0x92a6('0x30')](function(){})[_0x92a6('0x32')](_0xb07f9()));}}return _0x45beee;})[_0x92a6('0x59')]();})[_0x92a6('0x32')](function(_0x4c93c3){logger[_0x92a6('0x15')](_0x92a6('0x60'),_0x92a6('0x61'),_0x4c93c3[_0x92a6('0x1b')]);});}var processPromises=function(_0x253a9e){return BPromise[_0x92a6('0x59')](promises)[_0x92a6('0x30')](function(_0x37b46b){})[_0x92a6('0x32')](function(_0x2e9b5a){logger['error']('Error\x20processing\x20rows\x20block:',JSON[_0x92a6('0x62')](_0x2e9b5a));})[_0x92a6('0x63')](function(){socket[_0x92a6('0x64')](_0x92a6('0x65')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x253a9e){return _0x253a9e[_0x92a6('0x66')]();}});};var endCsv=function(){return BPromise[_0x92a6('0x67')]()[_0x92a6('0x30')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x92a6('0x64')](_0x92a6('0x65')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x3d20c8){logger[_0x92a6('0x15')](_0x92a6('0x68'),JSON[_0x92a6('0x62')](_0x3d20c8));}finally{process[_0x92a6('0x69')](0x0);}});};process['on'](_0x92a6('0x6a'),function(){logger['info'](_0x92a6('0x6b'));endCsv();});function main(){return BPromise[_0x92a6('0x67')]()[_0x92a6('0x30')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x92a6('0x13')](',');return db[_0x92a6('0x2d')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x57eb5f){var _0x34f71d=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x92a6('0x6c')](_0x34f71d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x118a21,_0x518540){total+=0x1;var _0x7e33ac=total;promises[_0x92a6('0x54')](checkRow(_0x118a21,_0x57eb5f,_0x7e33ac)[_0x92a6('0x30')](function(){success+=0x1;})[_0x92a6('0x32')](function(_0x341f72){if(_0x341f72['error']){errors+=0x1;delete _0x341f72['error'];}else if(_0x341f72[_0x92a6('0x2c')]){duplicates+=0x1;delete _0x341f72[_0x92a6('0x2c')];}rows[_0x92a6('0x54')](_0x341f72);}));if(total%0xc8===0x0){_0x518540['pause']();return processPromises(_0x518540);}},'complete':function(){return processPromises()['then'](function(){logger[_0x92a6('0x6d')](_0x92a6('0x6e'));endCsv();});},'error':function(_0x13868e,_0x62d79d){logger[_0x92a6('0x6d')](_0x92a6('0x6f'),JSON[_0x92a6('0x62')](_0x13868e));endCsv();}});})[_0x92a6('0x32')](function(_0x1cb10f){logger[_0x92a6('0x15')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x92a6('0x62')](_0x1cb10f));});}main();
\ No newline at end of file
index df77ede..ccf32ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ba5=['ContactId','from','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','select','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','insert','priority','cm_hopper_black','ListId\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','error','exit','errors','code','message','query','spread','catch','campaigns.id','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','sequelize','timezones','dialTimezone','isNil','utcOffset','set','main','send','binding','clone','socket_timestamp','server/files/tmp','header','name','_description','writeFileSync','parse','find','hasOwnProperty','data','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','appendFileSync','rows','Abort\x20parser','abort','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','voice_queues_','format','DROP\x20TABLE\x20','each','contactId','contactTypeId','orderBy','voice_queues','VoiceQueueId','campaigns','CampaignId','campaigns_has_cm_blacklists','voice_queues_has_cm_blacklists','finish','emit','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/logger','redis','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','join','.id\x20=\x20','where','\x20=\x20','CmContact','findAll','AdditionalPhones','length','push','then','split','all','filter','CmContactHasItem','update','create','PHONE','inserted','cm_contacts.phone','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ListId','createdAt','updatedAt','UserId','recallme','fields','cm_contacts','cm_contacts.createdAt\x20=\x20?','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.id'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0x8ba5,0x1da));var _0x58ba=function(_0x96b6a,_0x12471d){_0x96b6a=_0x96b6a-0x0;var _0x3e16f3=_0x8ba5[_0x96b6a];return _0x3e16f3;};'use strict';var fs=require('fs');var path=require(_0x58ba('0x0'));var _=require(_0x58ba('0x1'));var Papa=require(_0x58ba('0x2'));var util=require(_0x58ba('0x3'));var BPromise=require(_0x58ba('0x4'));var moment=require('moment');var squel=require(_0x58ba('0x5'));var Redis=require(_0x58ba('0x6'));var db=require(_0x58ba('0x7'))['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require(_0x58ba('0x8'))('import');config['redis']=_['defaults'](config[_0x58ba('0x9')],{'host':_0x58ba('0xa'),'port':0x18eb});var socket=require(_0x58ba('0xb'))(new Redis(config[_0x58ba('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0x58ba('0xc'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()['format'](_0x58ba('0xc'));function isEmail(_0x223b7e){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))*$/[_0x58ba('0xd')](_0x223b7e);}function selectNotIn(_0x5b1607,_0x44bf4d,_0x57a2e5,_0xfbe7f1,_0x5d8924){return squel['select']()[_0x58ba('0xe')](_0x58ba('0xf'))['from'](_0xfbe7f1)[_0x58ba('0x10')](_0x44bf4d,null,_0x44bf4d+_0x58ba('0x11')+_0xfbe7f1+'.'+_0x57a2e5)[_0x58ba('0x12')](_0xfbe7f1+'.'+_0x57a2e5+_0x58ba('0x13')+_0x5b1607+'.'+_0x57a2e5)[_0x58ba('0x12')](_0x44bf4d+'.dialCheckDuplicateType\x20IN\x20('+_0x5d8924[_0x58ba('0x10')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x235a5a,_0x4c5cd1){promisesAdditionalPhones=[];return db[_0x58ba('0x14')][_0x58ba('0x15')]({'raw':!![],'attributes':['id',_0x58ba('0x16')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x4e448d){if(_0x4e448d!==null){var _0x37a3f0=[];for(var _0x4f9943=0x0;_0x4f9943<_0x4e448d[_0x58ba('0x17')];_0x4f9943++){var _0x325f81=_0x4e448d[_0x4f9943];_0x37a3f0[_0x58ba('0x18')](insertAdditionalPhones(_0x325f81));}}Promise['all'](_0x37a3f0)[_0x58ba('0x19')](function(){_0x235a5a({'val':0x1});});});});}function insertAdditionalPhones(_0x1174d0){return new Promise(function(_0x317421,_0x1977b5){var _0x4775e3=_0x1174d0[_0x58ba('0x16')];var _0x3a1909=_0x4775e3[_0x58ba('0x1a')](';');var _0x2d5a9d=[];orderBy=0x0;for(var _0x1b1673=0x0;_0x1b1673<_0x3a1909[_0x58ba('0x17')];_0x1b1673++){_0x2d5a9d[_0x58ba('0x18')](splitAdditionalPhone(_0x1174d0['id'],_0x3a1909[_0x1b1673]));}Promise[_0x58ba('0x1b')](_0x2d5a9d)[_0x58ba('0x19')](function(){_0x317421({'val':_0x3a1909['length']});});});}function splitAdditionalPhone(_0x1e68bd,_0x4ff4fb){return new Promise(function(_0x1e62f8,_0x78c779){var _0x28844c=_0x4ff4fb[_0x58ba('0x1a')](':');var _0x3d8b11=_0x28844c[0x0];var _0x9c3926=_0x28844c[0x1];if(!_['isNil'](_0x9c3926)){var _0x2bc60a=_0x9c3926['split']('|');var _0x1ba50d=[];for(var _0x56d333=0x0;_0x56d333<_0x2bc60a[_0x58ba('0x17')];_0x56d333++){if(_0x2bc60a[_0x56d333]!==''){var _0x3cd65a=_[_0x58ba('0x1c')](promisesAdditionalPhones,{'contactId':_0x1e68bd,'phone':_0x2bc60a[_0x56d333]});if(_0x3cd65a[_0x58ba('0x17')]==0x0){orderBy++;promisesAdditionalPhones[_0x58ba('0x18')]({'contactId':_0x1e68bd,'contactTypeId':_0x3d8b11,'phone':_0x2bc60a[_0x56d333],'orderBy':orderBy});}}}_0x1e62f8({'ok':0x1});}else _0x1e62f8({'res':0x0});});}function createAdditionalPhone(_0x52b278,_0x149fa9,_0x5824c9,_0x3131f9){var _0x5d0379='';var _0x223b20='';var _0x57cb22=_0x5824c9[_0x58ba('0x1a')]('§');_0x5d0379=_0x57cb22[0x0];if(_0x57cb22[_0x58ba('0x17')]==0x2)_0x223b20=_0x57cb22[0x1];return new Promise(function(_0x1283e7,_0x229447){return db['CmContactHasItem']['findOne']({'where':{'CmContactId':_0x52b278,'item':_0x5d0379}})[_0x58ba('0x19')](function(_0x596236){if(_0x596236){return db[_0x58ba('0x1d')][_0x58ba('0x1e')]({'ItemTypeId':_0x149fa9,'description':_0x223b20,'OrderBy':_0x3131f9},{'where':{'CmContactId':_0x52b278,'item':_0x5d0379}})['then'](function(_0x4e659c){_0x1283e7({'res':'updated'});});}else{return db['CmContactHasItem'][_0x58ba('0x1f')]({'CmContactId':_0x52b278,'item':_0x5d0379,'description':_0x223b20,'ItemTypeId':_0x149fa9,'OrderBy':_0x3131f9,'ItemClass':_0x58ba('0x20')})[_0x58ba('0x19')](function(_0x3cc8bc){_0x1283e7({'res':_0x58ba('0x21')});});}});});}function insertCmHopper(_0x447638,_0x4abae0,_0x50c59e,_0x4651fa,_0x122cc4){var _0x36714c=[_0x58ba('0x22'),'cm_contacts.scheduledat','cm_contacts.id',_0x58ba('0x23'),_0x4abae0+'.'+_0x4651fa,_0x58ba('0x24'),_0x58ba('0x25'),_0x58ba('0x26'),_0x58ba('0x27'),'\x22'+_0x122cc4+'\x22'];return squel['insert']()[_0x58ba('0x28')](_0x58ba('0x29'))[_0x58ba('0x2a')]([_0x58ba('0xf'),_0x58ba('0x2b'),'ContactId',_0x58ba('0x2c'),_0x4651fa,_0x58ba('0x2d'),_0x58ba('0x2e'),'priority',_0x58ba('0x2f'),_0x58ba('0x30')],squel['select']()[_0x58ba('0x31')](_0x36714c)['from'](_0x4abae0)[_0x58ba('0x10')](_0x58ba('0x32'),null,'cm_contacts.ListId\x20=\x20'+_0x4abae0+'.CmListId')[_0x58ba('0x10')](_0x50c59e,null,_0x50c59e+_0x58ba('0x11')+_0x4abae0+'.'+_0x4651fa)[_0x58ba('0x12')](_0x4abae0+'.CmListId\x20=\x20?',_0x447638)[_0x58ba('0x12')](_0x58ba('0x33'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4abae0,_0x50c59e,_0x4651fa,'cm_hopper',['\x22always\x22',_0x58ba('0x34')]))[_0x58ba('0x12')](_0x58ba('0x35'),selectNotIn(_0x4abae0,_0x50c59e,_0x4651fa,'cm_hopper',[_0x58ba('0x36')])))[_0x58ba('0x37')]();}function insertCmHopperBlack(_0x58ce79,_0x3da403,_0x174441,_0x2c9a76){var _0x42627c=['cm_contacts.phone',_0x58ba('0x38'),_0x58ba('0x23'),_0x3da403+'.'+_0x2c9a76,_0x58ba('0x24'),_0x58ba('0x25')];return squel['insert']()[_0x58ba('0x28')]('cm_hopper_black')[_0x58ba('0x2a')]([_0x58ba('0xf'),_0x58ba('0x39'),_0x58ba('0x2c'),_0x2c9a76,'createdAt','updatedAt'],squel['select']()[_0x58ba('0x31')](_0x42627c)[_0x58ba('0x3a')](_0x3da403)[_0x58ba('0x10')](_0x58ba('0x32'),null,_0x58ba('0x3b')+_0x3da403+_0x58ba('0x3c'))[_0x58ba('0x10')](_0x174441,null,_0x174441+_0x58ba('0x11')+_0x3da403+'.'+_0x2c9a76)[_0x58ba('0x12')](_0x3da403+_0x58ba('0x3d'),_0x58ce79)[_0x58ba('0x12')](_0x58ba('0x33'),NOW)[_0x58ba('0x12')](_0x58ba('0x35'),squel[_0x58ba('0x3e')]()[_0x58ba('0xe')](_0x58ba('0xf'))['from']('cm_hopper_black')[_0x58ba('0x12')]('ListId\x20=\x20?',_0x58ce79)[_0x58ba('0x12')](_0x2c9a76+_0x58ba('0x13')+_0x3da403+'.'+_0x2c9a76)))[_0x58ba('0x37')]();}function insertTzCmHopper(_0x596e2f,_0x2240df,_0x3f9511,_0x3c8ed5,_0x4aa5f2,_0x4ab06e){var _0x320b9e=[_0x58ba('0x22'),_0x58ba('0x3f')+_0x4ab06e+_0x58ba('0x40'),_0x58ba('0x38'),_0x58ba('0x23'),_0x2240df+'.'+_0x3c8ed5,'cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','\x22'+_0x4aa5f2+'\x22'];var _0xefdb6d=squel[_0x58ba('0x41')]()[_0x58ba('0x28')]('cm_hopper')[_0x58ba('0x2a')]([_0x58ba('0xf'),_0x58ba('0x2b'),_0x58ba('0x39'),'ListId',_0x3c8ed5,_0x58ba('0x2d'),_0x58ba('0x2e'),_0x58ba('0x42'),_0x58ba('0x2f'),_0x58ba('0x30')],squel[_0x58ba('0x3e')]()[_0x58ba('0x31')](_0x320b9e)['from'](_0x2240df)['join'](_0x58ba('0x32'),null,_0x58ba('0x3b')+_0x2240df+'.CmListId')['join'](_0x3f9511,null,_0x3f9511+'.id\x20=\x20'+_0x2240df+'.'+_0x3c8ed5)[_0x58ba('0x10')](_0x4ab06e,null,_0x4ab06e+_0x58ba('0x11')+_0x2240df+'.'+_0x3c8ed5)[_0x58ba('0x12')](_0x2240df+_0x58ba('0x3d'),_0x596e2f)[_0x58ba('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x58ba('0x12')](_0x58ba('0x35'),selectNotIn(_0x2240df,_0x3f9511,_0x3c8ed5,_0x58ba('0x29'),[_0x58ba('0x36'),_0x58ba('0x34')]))[_0x58ba('0x12')](_0x58ba('0x35'),selectNotIn(_0x2240df,_0x3f9511,_0x3c8ed5,_0x58ba('0x29'),[_0x58ba('0x36')])))[_0x58ba('0x37')]();return _0xefdb6d;}function insertTzCmHopperBlack(_0x54fb66,_0x569d53,_0x226bb3,_0x535d01){var _0x4ee590=[_0x58ba('0x22'),'cm_contacts.id',_0x58ba('0x23'),_0x569d53+'.'+_0x535d01,_0x58ba('0x24'),_0x58ba('0x25')];return squel[_0x58ba('0x41')]()[_0x58ba('0x28')](_0x58ba('0x43'))[_0x58ba('0x2a')]([_0x58ba('0xf'),_0x58ba('0x39'),_0x58ba('0x2c'),_0x535d01,_0x58ba('0x2d'),_0x58ba('0x2e')],squel[_0x58ba('0x3e')]()[_0x58ba('0x31')](_0x4ee590)[_0x58ba('0x3a')](_0x569d53)[_0x58ba('0x10')]('cm_contacts',null,_0x58ba('0x3b')+_0x569d53+_0x58ba('0x3c'))[_0x58ba('0x10')](_0x226bb3,null,_0x226bb3+_0x58ba('0x11')+_0x569d53+'.'+_0x535d01)[_0x58ba('0x12')](_0x569d53+_0x58ba('0x3d'),_0x54fb66)[_0x58ba('0x12')](_0x58ba('0x33'),NOW)[_0x58ba('0x12')](_0x58ba('0x35'),squel[_0x58ba('0x3e')]()['field'](_0x58ba('0xf'))['from']('cm_hopper_black')[_0x58ba('0x12')](_0x58ba('0x44'),_0x54fb66)[_0x58ba('0x12')](_0x535d01+'\x20=\x20'+_0x569d53+'.'+_0x535d01)))[_0x58ba('0x37')]();}function insertCmHopperAdditionalPhones(_0x4cf378){var _0x56b477=[_0x58ba('0x45'),_0x58ba('0x46'),_0x58ba('0x47'),_0x58ba('0x48'),_0x58ba('0x49')];return squel[_0x58ba('0x41')]()[_0x58ba('0x28')](_0x58ba('0x4a'))[_0x58ba('0x2a')](['CmHopperId',_0x58ba('0xf'),_0x58ba('0x4b'),'createdAt',_0x58ba('0x2e')],squel[_0x58ba('0x3e')]()[_0x58ba('0x31')](_0x56b477)[_0x58ba('0x3a')](_0x58ba('0x29'))[_0x58ba('0x10')](_0x58ba('0x32'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x58ba('0x10')](_0x58ba('0x4c'),null,_0x58ba('0x4d'))[_0x58ba('0x12')]('cm_hopper.ListId\x20=\x20?',_0x4cf378)['where'](_0x58ba('0x33'),NOW))[_0x58ba('0x37')]();}function insertCmContact(_0x57d5cd,_0x86810a,_0x1e4ce0,_0x4bacaa){var _0x4f8dbf=_[_0x58ba('0x4e')](_[_0x58ba('0x4f')](_0x4bacaa),[_0x58ba('0x2c'),_0x58ba('0x50'),_0x58ba('0x2d'),_0x58ba('0x2e')]);return squel['insert']()[_0x58ba('0x28')]('cm_contacts')[_0x58ba('0x2a')](_0x4f8dbf,squel[_0x58ba('0x3e')]()[_0x58ba('0x31')](_0x4f8dbf)[_0x58ba('0x3a')](_0x86810a)[_0x58ba('0x12')]('('+_0x1e4ce0[_0x58ba('0x10')](',')+_0x58ba('0x51'),squel['select']()['fields'](_0x1e4ce0)[_0x58ba('0x3a')](_0x58ba('0x32'))[_0x58ba('0x12')]('ListId\x20=\x20?',_0x57d5cd)['where'](_0x58ba('0x52')))[_0x58ba('0x12')](_0x58ba('0x53'),squel[_0x58ba('0x3e')]()[_0x58ba('0xe')]('MIN(id)',_0x58ba('0x54'))[_0x58ba('0x3a')](_0x86810a)[_0x58ba('0x55')](_0x1e4ce0['join'](','))))[_0x58ba('0x37')]();}function handleStop(){logger[_0x58ba('0x56')](_0x58ba('0x57'));stopped=!![];}function handleUncaughtException(_0x26228a){logger[_0x58ba('0x58')](_0x26228a['message']);process[_0x58ba('0x59')](0x1);}function handleError(_0x3151e8,_0x587436){stats[_0x58ba('0x5a')][_0x58ba('0x18')]({'name':_0x587436[_0x58ba('0x5b')],'message':_0x587436[_0x58ba('0x5c')],'row':_0x3151e8});}function handleQuery(_0x418ad3){logger[_0x58ba('0x56')](_0x418ad3);return db['sequelize'][_0x58ba('0x5d')](_0x418ad3)[_0x58ba('0x5e')](function(_0x3fec77){results[_0x58ba('0x18')](_0x3fec77);})[_0x58ba('0x5f')](function(_0x3d5cde){logger['error'](_0x3d5cde[_0x58ba('0x5c')]);});}function updateTzCampaigns(_0x16f11b){return new Promise(function(_0x3d75b3,_0x3c5a98){var _0x48b94a=squel['select']()['fields']([_0x58ba('0x60'),'campaigns.dialTimezone'])[_0x58ba('0x3a')]('campaigns')[_0x58ba('0x10')](_0x58ba('0x61'),null,_0x58ba('0x62'))[_0x58ba('0x12')](_0x58ba('0x63')+_0x16f11b);db['sequelize'][_0x58ba('0x5d')](_0x48b94a[_0x58ba('0x37')]())[_0x58ba('0x5e')](function(_0x310f5e){var _0x327436=[];for(var _0x4d6d16=0x0;_0x4d6d16<_0x310f5e[_0x58ba('0x17')];_0x4d6d16++){_0x327436[_0x58ba('0x18')](getTimezoneData(_0x310f5e[_0x4d6d16],tmp_campaigns));}BPromise['all'](_0x327436)['then'](function(){_0x3d75b3({'val':0x1});});})[_0x58ba('0x5f')](function(_0x98b125){logger[_0x58ba('0x58')](_0x98b125[_0x58ba('0x5c')]);_0x3d75b3({'val':0x0});});});}function updateTzVoiceQueues(_0x55969a){return new Promise(function(_0x4ad606,_0x1d95c9){var _0x1ca7d1=squel[_0x58ba('0x3e')]()[_0x58ba('0x31')]([_0x58ba('0x64'),'voice_queues.dialTimezone'])[_0x58ba('0x3a')]('voice_queues')['join'](_0x58ba('0x65'),null,_0x58ba('0x66'))[_0x58ba('0x12')](_0x58ba('0x67')+_0x55969a);db[_0x58ba('0x68')][_0x58ba('0x5d')](_0x1ca7d1[_0x58ba('0x37')]())[_0x58ba('0x5e')](function(_0x4c0c2d){var _0x490a85=[];for(var _0x6d0cbd=0x0;_0x6d0cbd<_0x4c0c2d[_0x58ba('0x17')];_0x6d0cbd++){_0x490a85['push'](getTimezoneData(_0x4c0c2d[_0x6d0cbd],tmp_voice_queues));}BPromise[_0x58ba('0x1b')](_0x490a85)['then'](function(){_0x4ad606({'val':0x1});});})[_0x58ba('0x5f')](function(_0x4f699c){logger[_0x58ba('0x58')](_0x4f699c[_0x58ba('0x5c')]);_0x4ad606({'val':0x0});});});}function getTimezoneData(_0x30454f,_0x35cd63){return new Promise(function(_0x4bc29e,_0x2ef070){var _0x38ef16=shared[_0x58ba('0x69')];var _0x5a04f7=_0x38ef16[_0x30454f[_0x58ba('0x6a')]];if(_[_0x58ba('0x6b')](_0x5a04f7)){_0x4bc29e({'ret':0x1});}else{var _0x45a0f7=_0x5a04f7[_0x58ba('0x6c')];var _0x4c03f5=squel[_0x58ba('0x41')]()['into'](_0x35cd63)['set']('id',_0x30454f['id'])[_0x58ba('0x6d')]('offset',_0x45a0f7)['set'](_0x58ba('0x6a'),_0x30454f['dialTimezone'])[_0x58ba('0x37')]();return db[_0x58ba('0x68')][_0x58ba('0x5d')](_0x4c03f5)['spread'](function(_0x43e9e8){_0x4bc29e({'ret':0x1});})[_0x58ba('0x5f')](function(_0x15a8a1){logger[_0x58ba('0x58')](_0x15a8a1[_0x58ba('0x5c')]);_0x2ef070({'ret':0x1});});}});}function handleTZQuery(_0xedbbea){logger[_0x58ba('0x56')](_0xedbbea);return db['sequelize'][_0x58ba('0x5d')](_0xedbbea)[_0x58ba('0x5e')](function(_0x1d13a6){})[_0x58ba('0x5f')](function(_0x1d9e53){logger[_0x58ba('0x58')](_0x1d9e53[_0x58ba('0x5c')]);});}function main(_0x2dba27,_0x3af53b,_0x19f2a7,_0x4beb42){logger[_0x58ba('0x56')](_0x58ba('0x6e'),_0x2dba27,JSON['stringify'](_0x3af53b));process[_0x58ba('0x6f')]('start');var _0x1263c1=_0x3af53b[_0x58ba('0x70')];var _0x2a7356=_[_0x58ba('0x71')](_0x1263c1);var _0x216521=_0x3af53b[_0x58ba('0x72')];var _0x475c16=path[_0x58ba('0x10')](config['root'],_0x58ba('0x73'),_0x216521+'.csv');hasTZ=_[_0x58ba('0x4f')](_0x1263c1)['includes'](_0x58ba('0x6a'));var _0xb30a98=_[_0x58ba('0x4f')](_0x1263c1)[_0x58ba('0x10')]();logger[_0x58ba('0x56')](_0x58ba('0x74'),_0xb30a98);db['ContactItemType'][_0x58ba('0x15')]({'raw':!![],'attributes':['id',_0x58ba('0x75')]})[_0x58ba('0x19')](function(_0x331dd6){for(var _0xc0a1d7=0x0;_0xc0a1d7<_0x331dd6['length'];_0xc0a1d7++){if(_0x331dd6[_0xc0a1d7][_0x58ba('0x75')]in _0x1263c1){contactItemTypes['push'](_0x331dd6[_0xc0a1d7]);delete _0x2a7356[_0x331dd6[_0xc0a1d7][_0x58ba('0x75')]];hasAdditionalPhones=!![];}for(var _0x50d7b0 in _0x1263c1){if(_0x331dd6[_0xc0a1d7][_0x58ba('0x75')]+_0x58ba('0x76')===_0x50d7b0){phoneDescriptions[_0x58ba('0x18')]({'itemTypeId':_0x331dd6[_0xc0a1d7]['id'],'description':_0x50d7b0});delete _0x2a7356[_0x50d7b0];}}}if(hasAdditionalPhones)_0x2a7356[_0x58ba('0x16')]='';var _0x7b269f=_[_0x58ba('0x4f')](_0x2a7356)[_0x58ba('0x10')]();logger[_0x58ba('0x56')](_0x58ba('0x74'),_0x7b269f);fs[_0x58ba('0x77')](_0x475c16,_0x7b269f+'\x0a');Papa[_0x58ba('0x78')](fs['createReadStream'](_0x2dba27),{'header':!![],'skipEmptyLines':!![],'step':function(_0x40b491,_0x2118e){try{for(var _0x330881=0x0,_0xc5a677=[];_0x330881<_0x40b491['data'][_0x58ba('0x17')];_0x330881++){stats['rows']+=0x1;if(_0x40b491[_0x58ba('0x5a')][_0x330881]){handleError(_0x40b491['data'][_0x330881],_0x40b491['errors'][_0x330881]);}else{var _0x397824=[];var _0x1a5224=[];var _0x3279a5={};for(var _0xf1e89 in _0x1263c1){let _0x1bb3a5=contactItemTypes[_0x58ba('0x79')](_0x2c4dbc=>_0x2c4dbc[_0x58ba('0x75')]===_0xf1e89);let _0x3acdca=contactItemTypes['find'](_0x24ae69=>_0x24ae69['name']+_0x58ba('0x76')===_0xf1e89);if(_[_0x58ba('0x6b')](_0x1bb3a5)&&_['isNil'](_0x3acdca)){if(_0x1263c1[_0x58ba('0x7a')](_0xf1e89)){if(_0x40b491[_0x58ba('0x7b')][_0x330881][_0x1263c1[_0xf1e89]]){var _0x1772c6=_[_0x58ba('0x7c')](_0x40b491['data'][_0x330881][_0x1263c1[_0xf1e89]][_0x58ba('0x7d')](/"/g,'\x27'));switch(_0xf1e89){case _0x58ba('0x2b'):var _0x4af473=moment(_0x1772c6,_0x58ba('0xc'),!![]);if(_0x4af473[_0x58ba('0x7e')]()){_0xc5a677['push']('\x22'+_0x1772c6+'\x22');}else{_0x397824[_0x58ba('0x18')](_0x58ba('0x7f'));}break;case'priority':var _0x3b1da1=parseInt(_0x1772c6);_0x1772c6=_[_0x58ba('0x80')](_0x3b1da1)||_0x3b1da1<0x0||_0x3b1da1>0x4?_0x4beb42?0x3:0x2:_0x3b1da1;_0xc5a677[_0x58ba('0x18')]('\x22'+_0x1772c6+'\x22');break;case _0x58ba('0x2f'):var _0x58924c=parseInt(_0x1772c6);if(_[_0x58ba('0x81')](_0x58924c)&&_[_0x58ba('0x82')](_0x19f2a7,_0x58924c)){_0xc5a677[_0x58ba('0x18')]('\x22'+_0x58924c+'\x22');}else{_0x397824[_0x58ba('0x18')](_0x58ba('0x83'));}break;case _0x58ba('0x84'):if(isEmail(_0x1772c6)){_0xc5a677[_0x58ba('0x18')]('\x22'+_0x1772c6+'\x22');}else{_0x397824['push'](_0x58ba('0x85'));}break;case _0x58ba('0x86'):var _0x43b8cf=moment(_0x1772c6,_0x58ba('0x87'),!![]);if(_0x43b8cf['isValid']()){_0xc5a677[_0x58ba('0x18')]('\x22'+_0x1772c6+'\x22');}else{_0x397824[_0x58ba('0x18')](_0x58ba('0x88'));}break;case'dialTimezone':var _0x427aaf=shared['timezones'];var _0x16db07=_0x427aaf[_0x1772c6];if(!_[_0x58ba('0x6b')](_0x16db07)){var _0x365c8e=_0x16db07['utcOffset'];_0xc5a677[_0x58ba('0x18')]('\x22'+_0x1772c6+'\x22');_0xc5a677[_0x58ba('0x18')]('\x22'+_0x365c8e+'\x22');}break;default:_0xc5a677['push']('\x22'+_0x1772c6+'\x22');}}else{switch(_0xf1e89){case _0x58ba('0x89'):case _0x58ba('0xf'):_0x397824[_0x58ba('0x18')](_0xf1e89+_0x58ba('0x8a'));break;default:_0xc5a677[_0x58ba('0x18')]('\x22\x22');}}}}else{var _0x331dd1='';if(!_[_0x58ba('0x6b')](_0x1bb3a5)){if(!_0x3279a5['hasOwnProperty'](_0x1bb3a5['id'])){if(!_['isNil'](_0x40b491[_0x58ba('0x7b')][_0x330881][_0x1263c1[_0xf1e89]])){var _0x1772c6=_[_0x58ba('0x7c')](_0x40b491['data'][_0x330881][_0x1263c1[_0xf1e89]]['replace'](/"/g,'\x27'));var _0x3be93c=phoneDescriptions['find'](_0x1548d3=>_0x1548d3[_0x58ba('0x8b')]===_0x1bb3a5['id']);if(!_['isNil'](_0x3be93c)){var _0x2a75bb=_['trim'](_0x40b491[_0x58ba('0x7b')][_0x330881][_0x1263c1[_0x3be93c['description']]][_0x58ba('0x7d')](/"/g,'\x27'));if(!_[_0x58ba('0x6b')](_0x2a75bb))_0x1772c6=_0x1772c6+'§'+_0x2a75bb;}if(_0x331dd1=='')_0x331dd1=_0x1772c6;else _0x331dd1+='|'+_0x1772c6;}_0x1a5224[_0x58ba('0x18')](_0x1bb3a5['id']+':'+_0x331dd1);_0x3279a5[_0x1bb3a5['id']]=0x1;}}}}if(hasAdditionalPhones){_0xc5a677[_0x58ba('0x18')]('\x22'+_0x1a5224[_0x58ba('0x10')](';')+'\x22');}if(_0x397824['length']){handleError(_0x40b491[_0x58ba('0x7b')][_0x330881],{'code':'SystemRow','message':_0x397824[_0x58ba('0x10')]()});}else{fs[_0x58ba('0x8c')](_0x475c16,_0xc5a677[_0x58ba('0x10')]()+'\x0a');}_0xc5a677=[];}if(!(stats[_0x58ba('0x8d')]%0xc8)){socket['emit']('contact:import:'+_0x216521,stats);stats[_0x58ba('0x5a')]=[];}}if(stopped){logger[_0x58ba('0x56')](_0x58ba('0x8e'));_0x2118e[_0x58ba('0x8f')]();}}catch(_0x47c6f9){handleError(_0x40b491[_0x58ba('0x7b')][_0x330881],{'code':'SystemError','message':_0x47c6f9[_0x58ba('0x5c')]});logger[_0x58ba('0x58')](_0x58ba('0x90'),_0x47c6f9[_0x58ba('0x5c')]);}},'complete':function(){try{var _0x87b45c=[];var _0x3fb0c4=[];var _0x2cb561='cm_contacts';if(_0x3af53b[_0x58ba('0x91')]&&_0x3af53b[_0x58ba('0x91')][_0x58ba('0x17')]){_0x2cb561='cm_contacts_'+_0x216521;_0x87b45c['push'](_0x58ba('0x92')+_0x2cb561+_0x58ba('0x93'));}tmp_campaigns='campaigns_'+_0x216521;tmp_voice_queues=_0x58ba('0x94')+_0x216521;_0x3fb0c4[_0x58ba('0x18')](_0x58ba('0x92')+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x3fb0c4[_0x58ba('0x18')](_0x58ba('0x92')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise['each'](_0x3fb0c4,handleTZQuery)[_0x58ba('0x19')](function(_0x438a98){updateTzCampaigns(_0x3af53b[_0x58ba('0x2c')])[_0x58ba('0x19')](function(_0x1418a4){updateTzVoiceQueues(_0x3af53b[_0x58ba('0x2c')])[_0x58ba('0x19')](function(_0x4eef68){if(hasTZ)_0x7b269f=_0x7b269f['replace']('dialTimezone','dialTimezone,utcOffset');var _0x3db993=util[_0x58ba('0x95')]('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',_0x475c16,_0x2cb561,_0x7b269f,_0x3af53b[_0x58ba('0x2c')],_0x3af53b[_0x58ba('0x50')]||null,NOW,NOW);if(_['isNil'](_0x1263c1[_0x58ba('0x2b')])){_0x3db993+=',\x20scheduledAt\x20=\x20NOW()';}_0x87b45c[_0x58ba('0x18')](_0x3db993);if(_0x3af53b[_0x58ba('0x91')]&&_0x3af53b[_0x58ba('0x91')][_0x58ba('0x17')]){_0x87b45c[_0x58ba('0x18')](insertCmContact(_0x3af53b[_0x58ba('0x2c')],_0x2cb561,_0x3af53b[_0x58ba('0x91')],_0x1263c1));_0x87b45c['push'](_0x58ba('0x96')+_0x2cb561+';');}BPromise[_0x58ba('0x97')](_0x87b45c,handleQuery)[_0x58ba('0x19')](function(_0x3d872b){BPromise['all']([handleAdditionalPhones()])[_0x58ba('0x19')](function(){_0x87b45c=[];for(var _0x26bee9=0x0;_0x26bee9<promisesAdditionalPhones[_0x58ba('0x17')];_0x26bee9++){if(promisesAdditionalPhones[_0x26bee9][_0x58ba('0xf')]!='§'){_0x87b45c[_0x58ba('0x18')](createAdditionalPhone(promisesAdditionalPhones[_0x26bee9][_0x58ba('0x98')],promisesAdditionalPhones[_0x26bee9][_0x58ba('0x99')],promisesAdditionalPhones[_0x26bee9][_0x58ba('0xf')],promisesAdditionalPhones[_0x26bee9][_0x58ba('0x9a')]));}}BPromise['all'](_0x87b45c)[_0x58ba('0x19')](function(){_0x87b45c=[];if(hasTZ){_0x87b45c['push'](insertTzCmHopper(_0x3af53b[_0x58ba('0x2c')],'voice_queues_has_cm_lists',_0x58ba('0x9b'),_0x58ba('0x9c'),_0x4beb42,tmp_voice_queues));_0x87b45c[_0x58ba('0x18')](insertTzCmHopperBlack(_0x3af53b[_0x58ba('0x2c')],'voice_queues_has_cm_blacklists',_0x58ba('0x9b'),_0x58ba('0x9c')));_0x87b45c[_0x58ba('0x18')](insertTzCmHopper(_0x3af53b[_0x58ba('0x2c')],'campaigns_has_cm_lists',_0x58ba('0x9d'),_0x58ba('0x9e'),_0x4beb42,tmp_campaigns));_0x87b45c['push'](insertTzCmHopperBlack(_0x3af53b[_0x58ba('0x2c')],_0x58ba('0x9f'),_0x58ba('0x9d'),_0x58ba('0x9e')));_0x87b45c[_0x58ba('0x18')](insertCmHopperAdditionalPhones(_0x3af53b[_0x58ba('0x2c')]));}else{_0x87b45c[_0x58ba('0x18')](insertCmHopper(_0x3af53b['ListId'],_0x58ba('0x65'),_0x58ba('0x9b'),_0x58ba('0x9c'),_0x4beb42));_0x87b45c[_0x58ba('0x18')](insertCmHopperBlack(_0x3af53b[_0x58ba('0x2c')],_0x58ba('0xa0'),_0x58ba('0x9b'),_0x58ba('0x9c')));_0x87b45c[_0x58ba('0x18')](insertCmHopper(_0x3af53b[_0x58ba('0x2c')],'campaigns_has_cm_lists',_0x58ba('0x9d'),_0x58ba('0x9e'),_0x4beb42));_0x87b45c['push'](insertCmHopperBlack(_0x3af53b[_0x58ba('0x2c')],_0x58ba('0x9f'),_0x58ba('0x9d'),_0x58ba('0x9e')));_0x87b45c[_0x58ba('0x18')](insertCmHopperAdditionalPhones(_0x3af53b['ListId']));}_0x87b45c['push']('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x87b45c[_0x58ba('0x18')](_0x58ba('0x96')+tmp_voice_queues+';');BPromise[_0x58ba('0x97')](_0x87b45c,handleQuery)[_0x58ba('0x19')](function(_0x1da797){stats[_0x58ba('0xa1')]=!![];stats['affectedRows']=_0x3af53b[_0x58ba('0x91')]&&_0x3af53b[_0x58ba('0x91')][_0x58ba('0x17')]?results[0x2]['affectedRows']:results[0x0]['affectedRows'];socket[_0x58ba('0xa2')](_0x58ba('0xa3')+_0x216521,stats);fs[_0x58ba('0xa4')](_0x2dba27);fs[_0x58ba('0xa4')](_0x475c16);process[_0x58ba('0x59')](0x0);})[_0x58ba('0x5f')](function(_0x20dfa7){logger['error'](_0x20dfa7['message']);process[_0x58ba('0x59')](0x1);});});});})['catch'](function(_0x230bc5){logger[_0x58ba('0x58')](_0x230bc5['message']);process[_0x58ba('0x59')](0x1);});});});});}catch(_0x47c287){logger[_0x58ba('0x58')](_0x58ba('0xa5'),_0x47c287[_0x58ba('0x5c')]);process['exit'](0x1);}},'error':function(_0x57405d,_0x3d49dc,_0x3f60b9,_0x5676dc){throw new Error(_0x5676dc);}});});}function validate(){if(process['argv']&&process[_0x58ba('0xa6')][_0x58ba('0x17')]<0x4){throw new Error(_0x58ba('0xa7'));}var _0x57e4fd=path[_0x58ba('0x10')](config[_0x58ba('0xa8')],_0x58ba('0x73'),process['argv'][0x2]);if(!fs[_0x58ba('0xa9')](_0x57e4fd)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x4d2b3a={};try{_0x4d2b3a=JSON['parse'](process[_0x58ba('0xa6')][0x3]);if(!_0x4d2b3a['binding']){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x4d2b3a[_0x58ba('0x70')][_0x58ba('0xf')]){throw new Error(_0x58ba('0xaa'));}if(!_0x4d2b3a[_0x58ba('0x70')][_0x58ba('0x89')]){throw new Error(_0x58ba('0xab'));}var _0x1f6b7f=0x0;if(_0x4d2b3a[_0x58ba('0x70')]['UserId']){_0x1f6b7f=0x1;}if(!_0x4d2b3a[_0x58ba('0x2c')]){throw new Error(_0x58ba('0xac'));}}catch(_0x4bd51e){throw new Error('body\x20id\x20mandatory');}var _0x436bb6=[];try{_0x436bb6=_[_0x58ba('0xad')](JSON[_0x58ba('0x78')](process['argv'][0x4]),'id');}catch(_0x1457b5){logger[_0x58ba('0x56')](_0x58ba('0xae'));}main(_0x57e4fd,_0x4d2b3a,_0x436bb6,_0x1f6b7f);}validate();process['on'](_0x58ba('0xaf'),handleStop);process['on'](_0x58ba('0xb0'),handleUncaughtException);
\ No newline at end of file
+var _0xda91=['UserId','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','error','message','errors','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','dialTimezone','isNil','utcOffset','set','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','keys','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','data','rows','find','hasOwnProperty','trim','replace','isNaN','isNumber','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','timezones','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','emit','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','papaparse','util','bluebird','moment','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','select','phone','from','join','.id\x20=\x20','where','\x20=\x20','AdditionalPhones','then','length','push','all','split','filter','CmContactHasItem','update','updated','PHONE','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','createdAt','updatedAt','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','insert','ListId','cm_contacts.ListId\x20=\x20','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','priority'];(function(_0x5dbe23,_0x12d1cf){var _0x1831f3=function(_0x84d829){while(--_0x84d829){_0x5dbe23['push'](_0x5dbe23['shift']());}};_0x1831f3(++_0x12d1cf);}(_0xda91,0x72));var _0x1da9=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xda91[_0x21a9d9];return _0x46adce;};'use strict';var fs=require('fs');var path=require(_0x1da9('0x0'));var _=require('lodash');var Papa=require(_0x1da9('0x1'));var util=require(_0x1da9('0x2'));var BPromise=require(_0x1da9('0x3'));var moment=require(_0x1da9('0x4'));var squel=require('squel');var Redis=require('ioredis');var db=require(_0x1da9('0x5'))['db'];var config=require(_0x1da9('0x6'));var shared=require(_0x1da9('0x7'));var logger=require(_0x1da9('0x8'))(_0x1da9('0x9'));config[_0x1da9('0xa')]=_[_0x1da9('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1da9('0xc'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x1da9('0xd')](_0x1da9('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()['format'](_0x1da9('0xe'));function isEmail(_0x4e79a9){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'](_0x4e79a9);}function selectNotIn(_0x20f716,_0x178ab8,_0x2dc589,_0x21ca32,_0x812fe3){return squel[_0x1da9('0xf')]()['field'](_0x1da9('0x10'))[_0x1da9('0x11')](_0x21ca32)[_0x1da9('0x12')](_0x178ab8,null,_0x178ab8+_0x1da9('0x13')+_0x21ca32+'.'+_0x2dc589)[_0x1da9('0x14')](_0x21ca32+'.'+_0x2dc589+_0x1da9('0x15')+_0x20f716+'.'+_0x2dc589)[_0x1da9('0x14')](_0x178ab8+'.dialCheckDuplicateType\x20IN\x20('+_0x812fe3[_0x1da9('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x55429b,_0x480411){promisesAdditionalPhones=[];return db['CmContact']['findAll']({'raw':!![],'attributes':['id',_0x1da9('0x16')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x1da9('0x17')](function(_0xa65dc2){if(_0xa65dc2!==null){var _0x9d4f22=[];for(var _0x2d0262=0x0;_0x2d0262<_0xa65dc2[_0x1da9('0x18')];_0x2d0262++){var _0x5c09b8=_0xa65dc2[_0x2d0262];_0x9d4f22[_0x1da9('0x19')](insertAdditionalPhones(_0x5c09b8));}}Promise[_0x1da9('0x1a')](_0x9d4f22)[_0x1da9('0x17')](function(){_0x55429b({'val':0x1});});});});}function insertAdditionalPhones(_0x3d7985){return new Promise(function(_0x16482a,_0x2fd801){var _0xb0f97b=_0x3d7985[_0x1da9('0x16')];var _0x37d856=_0xb0f97b['split'](';');var _0xc46cef=[];orderBy=0x0;for(var _0x48cf2a=0x0;_0x48cf2a<_0x37d856['length'];_0x48cf2a++){_0xc46cef[_0x1da9('0x19')](splitAdditionalPhone(_0x3d7985['id'],_0x37d856[_0x48cf2a]));}Promise['all'](_0xc46cef)[_0x1da9('0x17')](function(){_0x16482a({'val':_0x37d856['length']});});});}function splitAdditionalPhone(_0x287bd9,_0x212d11){return new Promise(function(_0xfcfbfb,_0x49fc8a){var _0x134547=_0x212d11[_0x1da9('0x1b')](':');var _0x5a46f1=_0x134547[0x0];var _0x53f6ed=_0x134547[0x1];if(!_['isNil'](_0x53f6ed)){var _0x412eac=_0x53f6ed[_0x1da9('0x1b')]('|');var _0x5ee478=[];for(var _0x4a9575=0x0;_0x4a9575<_0x412eac['length'];_0x4a9575++){if(_0x412eac[_0x4a9575]!==''){var _0x1bead0=_[_0x1da9('0x1c')](promisesAdditionalPhones,{'contactId':_0x287bd9,'phone':_0x412eac[_0x4a9575]});if(_0x1bead0[_0x1da9('0x18')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x287bd9,'contactTypeId':_0x5a46f1,'phone':_0x412eac[_0x4a9575],'orderBy':orderBy});}}}_0xfcfbfb({'ok':0x1});}else _0xfcfbfb({'res':0x0});});}function createAdditionalPhone(_0x501f3b,_0x18fde2,_0x43a6a5,_0x11fc41){var _0x5ad22d='';var _0x119577='';var _0x43d891=_0x43a6a5[_0x1da9('0x1b')]('§');_0x5ad22d=_0x43d891[0x0];if(_0x43d891[_0x1da9('0x18')]==0x2)_0x119577=_0x43d891[0x1];return new Promise(function(_0x468198,_0x4a3ce1){return db[_0x1da9('0x1d')]['findOne']({'where':{'CmContactId':_0x501f3b,'item':_0x5ad22d}})[_0x1da9('0x17')](function(_0xf5b222){if(_0xf5b222){return db[_0x1da9('0x1d')][_0x1da9('0x1e')]({'ItemTypeId':_0x18fde2,'description':_0x119577,'OrderBy':_0x11fc41},{'where':{'CmContactId':_0x501f3b,'item':_0x5ad22d}})[_0x1da9('0x17')](function(_0x1b8c58){_0x468198({'res':_0x1da9('0x1f')});});}else{return db[_0x1da9('0x1d')]['create']({'CmContactId':_0x501f3b,'item':_0x5ad22d,'description':_0x119577,'ItemTypeId':_0x18fde2,'OrderBy':_0x11fc41,'ItemClass':_0x1da9('0x20')})['then'](function(_0x25150a){_0x468198({'res':'inserted'});});}});});}function insertCmHopper(_0x3d473a,_0x4455db,_0x366c6f,_0x8a6f33,_0x55b487){var _0x1e720f=[_0x1da9('0x21'),'cm_contacts.scheduledat',_0x1da9('0x22'),_0x1da9('0x23'),_0x4455db+'.'+_0x8a6f33,_0x1da9('0x24'),_0x1da9('0x25'),_0x1da9('0x26'),_0x1da9('0x27'),'\x22'+_0x55b487+'\x22'];return squel['insert']()[_0x1da9('0x28')](_0x1da9('0x29'))[_0x1da9('0x2a')](['phone',_0x1da9('0x2b'),_0x1da9('0x2c'),'ListId',_0x8a6f33,_0x1da9('0x2d'),_0x1da9('0x2e'),'priority','UserId',_0x1da9('0x2f')],squel[_0x1da9('0xf')]()[_0x1da9('0x30')](_0x1e720f)['from'](_0x4455db)['join'](_0x1da9('0x31'),null,'cm_contacts.ListId\x20=\x20'+_0x4455db+_0x1da9('0x32'))[_0x1da9('0x12')](_0x366c6f,null,_0x366c6f+_0x1da9('0x13')+_0x4455db+'.'+_0x8a6f33)[_0x1da9('0x14')](_0x4455db+_0x1da9('0x33'),_0x3d473a)[_0x1da9('0x14')](_0x1da9('0x34'),NOW)[_0x1da9('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4455db,_0x366c6f,_0x8a6f33,_0x1da9('0x29'),['\x22always\x22',_0x1da9('0x35')]))[_0x1da9('0x14')](_0x1da9('0x36'),selectNotIn(_0x4455db,_0x366c6f,_0x8a6f33,_0x1da9('0x29'),[_0x1da9('0x37')])))[_0x1da9('0x38')]();}function insertCmHopperBlack(_0x7f473,_0x3ae928,_0x3b8611,_0x27422a){var _0x4ff7fe=[_0x1da9('0x21'),_0x1da9('0x22'),_0x1da9('0x23'),_0x3ae928+'.'+_0x27422a,_0x1da9('0x24'),'cm_contacts.updatedAt'];return squel[_0x1da9('0x39')]()[_0x1da9('0x28')]('cm_hopper_black')['fromQuery'](['phone',_0x1da9('0x2c'),_0x1da9('0x3a'),_0x27422a,'createdAt','updatedAt'],squel[_0x1da9('0xf')]()['fields'](_0x4ff7fe)[_0x1da9('0x11')](_0x3ae928)[_0x1da9('0x12')](_0x1da9('0x31'),null,_0x1da9('0x3b')+_0x3ae928+_0x1da9('0x32'))[_0x1da9('0x12')](_0x3b8611,null,_0x3b8611+'.id\x20=\x20'+_0x3ae928+'.'+_0x27422a)[_0x1da9('0x14')](_0x3ae928+_0x1da9('0x33'),_0x7f473)[_0x1da9('0x14')](_0x1da9('0x34'),NOW)[_0x1da9('0x14')](_0x1da9('0x36'),squel['select']()[_0x1da9('0x3c')](_0x1da9('0x10'))[_0x1da9('0x11')]('cm_hopper_black')['where'](_0x1da9('0x3d'),_0x7f473)['where'](_0x27422a+_0x1da9('0x15')+_0x3ae928+'.'+_0x27422a)))[_0x1da9('0x38')]();}function insertTzCmHopper(_0x16f12d,_0x47fb70,_0x27a171,_0x1eee43,_0x595860,_0x265e6c){var _0xaee50b=[_0x1da9('0x21'),_0x1da9('0x3e')+_0x265e6c+_0x1da9('0x3f'),_0x1da9('0x22'),_0x1da9('0x23'),_0x47fb70+'.'+_0x1eee43,_0x1da9('0x24'),'cm_contacts.updatedAt',_0x1da9('0x26'),'cm_contacts.UserId','\x22'+_0x595860+'\x22'];var _0x14bf3b=squel[_0x1da9('0x39')]()[_0x1da9('0x28')](_0x1da9('0x29'))[_0x1da9('0x2a')]([_0x1da9('0x10'),_0x1da9('0x2b'),_0x1da9('0x2c'),_0x1da9('0x3a'),_0x1eee43,_0x1da9('0x2d'),_0x1da9('0x2e'),_0x1da9('0x40'),_0x1da9('0x41'),'recallme'],squel['select']()['fields'](_0xaee50b)['from'](_0x47fb70)[_0x1da9('0x12')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x47fb70+'.CmListId')[_0x1da9('0x12')](_0x27a171,null,_0x27a171+'.id\x20=\x20'+_0x47fb70+'.'+_0x1eee43)[_0x1da9('0x12')](_0x265e6c,null,_0x265e6c+_0x1da9('0x13')+_0x47fb70+'.'+_0x1eee43)['where'](_0x47fb70+_0x1da9('0x33'),_0x16f12d)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x1da9('0x36'),selectNotIn(_0x47fb70,_0x27a171,_0x1eee43,'cm_hopper',[_0x1da9('0x37'),_0x1da9('0x35')]))[_0x1da9('0x14')](_0x1da9('0x36'),selectNotIn(_0x47fb70,_0x27a171,_0x1eee43,_0x1da9('0x29'),[_0x1da9('0x37')])))[_0x1da9('0x38')]();return _0x14bf3b;}function insertTzCmHopperBlack(_0x9f3f4b,_0xa280a1,_0x12759f,_0x363bc4){var _0x46cd0b=[_0x1da9('0x21'),'cm_contacts.id',_0x1da9('0x23'),_0xa280a1+'.'+_0x363bc4,_0x1da9('0x24'),_0x1da9('0x25')];return squel['insert']()['into']('cm_hopper_black')[_0x1da9('0x2a')]([_0x1da9('0x10'),_0x1da9('0x2c'),_0x1da9('0x3a'),_0x363bc4,_0x1da9('0x2d'),'updatedAt'],squel[_0x1da9('0xf')]()[_0x1da9('0x30')](_0x46cd0b)[_0x1da9('0x11')](_0xa280a1)[_0x1da9('0x12')](_0x1da9('0x31'),null,_0x1da9('0x3b')+_0xa280a1+_0x1da9('0x32'))[_0x1da9('0x12')](_0x12759f,null,_0x12759f+_0x1da9('0x13')+_0xa280a1+'.'+_0x363bc4)[_0x1da9('0x14')](_0xa280a1+_0x1da9('0x33'),_0x9f3f4b)[_0x1da9('0x14')](_0x1da9('0x34'),NOW)[_0x1da9('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x1da9('0xf')]()['field']('phone')[_0x1da9('0x11')]('cm_hopper_black')[_0x1da9('0x14')](_0x1da9('0x3d'),_0x9f3f4b)[_0x1da9('0x14')](_0x363bc4+_0x1da9('0x15')+_0xa280a1+'.'+_0x363bc4)))[_0x1da9('0x38')]();}function insertCmHopperAdditionalPhones(_0x12fa9e){var _0x1cb1bb=[_0x1da9('0x42'),_0x1da9('0x43'),_0x1da9('0x44'),_0x1da9('0x45'),_0x1da9('0x46')];return squel[_0x1da9('0x39')]()['into'](_0x1da9('0x47'))[_0x1da9('0x2a')](['CmHopperId',_0x1da9('0x10'),_0x1da9('0x48'),_0x1da9('0x2d'),_0x1da9('0x2e')],squel[_0x1da9('0xf')]()[_0x1da9('0x30')](_0x1cb1bb)[_0x1da9('0x11')](_0x1da9('0x29'))[_0x1da9('0x12')](_0x1da9('0x31'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')['join'](_0x1da9('0x49'),null,_0x1da9('0x4a'))[_0x1da9('0x14')](_0x1da9('0x4b'),_0x12fa9e)[_0x1da9('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x1da9('0x38')]();}function insertCmContact(_0x167dac,_0x314621,_0x49bdcf,_0x34f581){var _0x33c086=_['concat'](_['keys'](_0x34f581),[_0x1da9('0x3a'),_0x1da9('0x4c'),_0x1da9('0x2d'),_0x1da9('0x2e')]);return squel[_0x1da9('0x39')]()[_0x1da9('0x28')](_0x1da9('0x31'))[_0x1da9('0x2a')](_0x33c086,squel['select']()[_0x1da9('0x30')](_0x33c086)['from'](_0x314621)['where']('('+_0x49bdcf[_0x1da9('0x12')](',')+_0x1da9('0x4d'),squel[_0x1da9('0xf')]()[_0x1da9('0x30')](_0x49bdcf)['from'](_0x1da9('0x31'))[_0x1da9('0x14')](_0x1da9('0x3d'),_0x167dac)[_0x1da9('0x14')](_0x1da9('0x4e')))[_0x1da9('0x14')](_0x1da9('0x4f'),squel[_0x1da9('0xf')]()[_0x1da9('0x3c')](_0x1da9('0x50'),_0x1da9('0x51'))['from'](_0x314621)[_0x1da9('0x52')](_0x49bdcf['join'](','))))[_0x1da9('0x38')]();}function handleStop(){logger[_0x1da9('0x53')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x486b40){logger[_0x1da9('0x54')](_0x486b40[_0x1da9('0x55')]);process['exit'](0x1);}function handleError(_0x369f61,_0x47a2e1){stats[_0x1da9('0x56')][_0x1da9('0x19')]({'name':_0x47a2e1['code'],'message':_0x47a2e1[_0x1da9('0x55')],'row':_0x369f61});}function handleQuery(_0x2eb5dc){logger[_0x1da9('0x53')](_0x2eb5dc);return db[_0x1da9('0x57')][_0x1da9('0x58')](_0x2eb5dc)[_0x1da9('0x59')](function(_0x2b9daa){results[_0x1da9('0x19')](_0x2b9daa);})[_0x1da9('0x5a')](function(_0x5a45b1){logger[_0x1da9('0x54')](_0x5a45b1['message']);});}function updateTzCampaigns(_0x5c8588){return new Promise(function(_0x1b648c,_0x60ff0){var _0x1fb6a9=squel[_0x1da9('0xf')]()['fields']([_0x1da9('0x5b'),_0x1da9('0x5c')])[_0x1da9('0x11')]('campaigns')[_0x1da9('0x12')](_0x1da9('0x5d'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')['where'](_0x1da9('0x5e')+_0x5c8588);db[_0x1da9('0x57')]['query'](_0x1fb6a9['toString']())[_0x1da9('0x59')](function(_0x4364d1){var _0x53b378=[];for(var _0x59cead=0x0;_0x59cead<_0x4364d1['length'];_0x59cead++){_0x53b378['push'](getTimezoneData(_0x4364d1[_0x59cead],tmp_campaigns));}BPromise['all'](_0x53b378)[_0x1da9('0x17')](function(){_0x1b648c({'val':0x1});});})[_0x1da9('0x5a')](function(_0x7aac5e){logger[_0x1da9('0x54')](_0x7aac5e['message']);_0x1b648c({'val':0x0});});});}function updateTzVoiceQueues(_0x21a68c){return new Promise(function(_0x10208b,_0x264962){var _0x41f086=squel[_0x1da9('0xf')]()[_0x1da9('0x30')]([_0x1da9('0x5f'),_0x1da9('0x60')])[_0x1da9('0x11')](_0x1da9('0x61'))['join'](_0x1da9('0x62'),null,_0x1da9('0x63'))[_0x1da9('0x14')]('voice_queues_has_cm_lists.CmListId='+_0x21a68c);db['sequelize']['query'](_0x41f086[_0x1da9('0x38')]())[_0x1da9('0x59')](function(_0x15d732){var _0x5e8f40=[];for(var _0x3172b9=0x0;_0x3172b9<_0x15d732['length'];_0x3172b9++){_0x5e8f40[_0x1da9('0x19')](getTimezoneData(_0x15d732[_0x3172b9],tmp_voice_queues));}BPromise[_0x1da9('0x1a')](_0x5e8f40)[_0x1da9('0x17')](function(){_0x10208b({'val':0x1});});})[_0x1da9('0x5a')](function(_0x25e79d){logger[_0x1da9('0x54')](_0x25e79d[_0x1da9('0x55')]);_0x10208b({'val':0x0});});});}function getTimezoneData(_0x3b65fe,_0x3bb990){return new Promise(function(_0x5d54c9,_0x455a9a){var _0x329396=shared['timezones'];var _0x2c04c8=_0x329396[_0x3b65fe[_0x1da9('0x64')]];if(_[_0x1da9('0x65')](_0x2c04c8)){_0x5d54c9({'ret':0x1});}else{var _0x11a27e=_0x2c04c8[_0x1da9('0x66')];var _0xec1b86=squel['insert']()[_0x1da9('0x28')](_0x3bb990)[_0x1da9('0x67')]('id',_0x3b65fe['id'])[_0x1da9('0x67')]('offset',_0x11a27e)['set']('dialTimezone',_0x3b65fe[_0x1da9('0x64')])[_0x1da9('0x38')]();return db['sequelize'][_0x1da9('0x58')](_0xec1b86)['spread'](function(_0xa4e8b1){_0x5d54c9({'ret':0x1});})[_0x1da9('0x5a')](function(_0x165f02){logger[_0x1da9('0x54')](_0x165f02['message']);_0x455a9a({'ret':0x1});});}});}function handleTZQuery(_0x4f5baa){logger['info'](_0x4f5baa);return db[_0x1da9('0x57')][_0x1da9('0x58')](_0x4f5baa)[_0x1da9('0x59')](function(_0x5aef09){})[_0x1da9('0x5a')](function(_0x154446){logger[_0x1da9('0x54')](_0x154446[_0x1da9('0x55')]);});}function main(_0x52a666,_0x2d6c3f,_0x49e662,_0x984d0){logger[_0x1da9('0x53')]('main',_0x52a666,JSON[_0x1da9('0x68')](_0x2d6c3f));process[_0x1da9('0x69')](_0x1da9('0x6a'));var _0x1a94c5=_0x2d6c3f[_0x1da9('0x6b')];var _0x5caa9d=_['clone'](_0x1a94c5);var _0x488ef1=_0x2d6c3f[_0x1da9('0x6c')];var _0x118262=path[_0x1da9('0x12')](config[_0x1da9('0x6d')],_0x1da9('0x6e'),_0x488ef1+'.csv');hasTZ=_[_0x1da9('0x6f')](_0x1a94c5)[_0x1da9('0x70')](_0x1da9('0x64'));var _0x25f118=_['keys'](_0x1a94c5)['join']();logger[_0x1da9('0x53')](_0x1da9('0x71'),_0x25f118);db[_0x1da9('0x72')][_0x1da9('0x73')]({'raw':!![],'attributes':['id',_0x1da9('0x74')]})[_0x1da9('0x17')](function(_0x241d84){for(var _0x31e52d=0x0;_0x31e52d<_0x241d84['length'];_0x31e52d++){if(_0x241d84[_0x31e52d][_0x1da9('0x74')]in _0x1a94c5){contactItemTypes[_0x1da9('0x19')](_0x241d84[_0x31e52d]);delete _0x5caa9d[_0x241d84[_0x31e52d]['name']];hasAdditionalPhones=!![];}for(var _0x36c8f1 in _0x1a94c5){if(_0x241d84[_0x31e52d][_0x1da9('0x74')]+_0x1da9('0x75')===_0x36c8f1){phoneDescriptions[_0x1da9('0x19')]({'itemTypeId':_0x241d84[_0x31e52d]['id'],'description':_0x36c8f1});delete _0x5caa9d[_0x36c8f1];}}}if(hasAdditionalPhones)_0x5caa9d[_0x1da9('0x16')]='';var _0x5e9104=_[_0x1da9('0x6f')](_0x5caa9d)[_0x1da9('0x12')]();logger[_0x1da9('0x53')](_0x1da9('0x71'),_0x5e9104);fs[_0x1da9('0x76')](_0x118262,_0x5e9104+'\x0a');Papa[_0x1da9('0x77')](fs['createReadStream'](_0x52a666),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4749d6,_0x2eb944){try{for(var _0x3708eb=0x0,_0x3bc5e2=[];_0x3708eb<_0x4749d6[_0x1da9('0x78')][_0x1da9('0x18')];_0x3708eb++){stats[_0x1da9('0x79')]+=0x1;if(_0x4749d6[_0x1da9('0x56')][_0x3708eb]){handleError(_0x4749d6['data'][_0x3708eb],_0x4749d6[_0x1da9('0x56')][_0x3708eb]);}else{var _0x4ecf31=[];var _0x371494=[];var _0x29f359={};for(var _0x41bffd in _0x1a94c5){let _0x32b749=contactItemTypes[_0x1da9('0x7a')](_0x5c5b57=>_0x5c5b57[_0x1da9('0x74')]===_0x41bffd);let _0x7379f2=contactItemTypes[_0x1da9('0x7a')](_0x12fc5c=>_0x12fc5c['name']+'_description'===_0x41bffd);if(_[_0x1da9('0x65')](_0x32b749)&&_[_0x1da9('0x65')](_0x7379f2)){if(_0x1a94c5[_0x1da9('0x7b')](_0x41bffd)){if(_0x4749d6['data'][_0x3708eb][_0x1a94c5[_0x41bffd]]){var _0x39c18e=_[_0x1da9('0x7c')](_0x4749d6['data'][_0x3708eb][_0x1a94c5[_0x41bffd]][_0x1da9('0x7d')](/"/g,'\x27'));switch(_0x41bffd){case'scheduledat':var _0x4a4648=moment(_0x39c18e,_0x1da9('0xe'),!![]);if(_0x4a4648['isValid']()){_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x39c18e+'\x22');}else{_0x4ecf31[_0x1da9('0x19')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x1da9('0x40'):var _0x5b9152=parseInt(_0x39c18e);_0x39c18e=_[_0x1da9('0x7e')](_0x5b9152)||_0x5b9152<0x0||_0x5b9152>0x4?_0x984d0?0x3:0x2:_0x5b9152;_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x39c18e+'\x22');break;case _0x1da9('0x41'):var _0x30a2d1=parseInt(_0x39c18e);if(_[_0x1da9('0x7f')](_0x30a2d1)&&_[_0x1da9('0x70')](_0x49e662,_0x30a2d1)){_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x30a2d1+'\x22');}else{_0x4ecf31[_0x1da9('0x19')]('agent\x20not\x20exists');}break;case _0x1da9('0x80'):if(isEmail(_0x39c18e)){_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x39c18e+'\x22');}else{_0x4ecf31[_0x1da9('0x19')](_0x1da9('0x81'));}break;case _0x1da9('0x82'):var _0x1c3d36=moment(_0x39c18e,_0x1da9('0x83'),!![]);if(_0x1c3d36['isValid']()){_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x39c18e+'\x22');}else{_0x4ecf31[_0x1da9('0x19')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;case _0x1da9('0x64'):var _0x21e4b5=shared[_0x1da9('0x84')];var _0x4a7c38=_0x21e4b5[_0x39c18e];if(!_[_0x1da9('0x65')](_0x4a7c38)){var _0x176e54=_0x4a7c38[_0x1da9('0x66')];_0x3bc5e2['push']('\x22'+_0x39c18e+'\x22');_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x176e54+'\x22');}break;default:_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x39c18e+'\x22');}}else{switch(_0x41bffd){case _0x1da9('0x85'):case _0x1da9('0x10'):_0x4ecf31[_0x1da9('0x19')](_0x41bffd+_0x1da9('0x86'));break;default:_0x3bc5e2[_0x1da9('0x19')]('\x22\x22');}}}}else{var _0x2f310e='';if(!_[_0x1da9('0x65')](_0x32b749)){if(!_0x29f359['hasOwnProperty'](_0x32b749['id'])){if(!_[_0x1da9('0x65')](_0x4749d6[_0x1da9('0x78')][_0x3708eb][_0x1a94c5[_0x41bffd]])){var _0x39c18e=_[_0x1da9('0x7c')](_0x4749d6['data'][_0x3708eb][_0x1a94c5[_0x41bffd]][_0x1da9('0x7d')](/"/g,'\x27'));var _0x2ba6af=phoneDescriptions[_0x1da9('0x7a')](_0x493f64=>_0x493f64[_0x1da9('0x87')]===_0x32b749['id']);if(!_['isNil'](_0x2ba6af)){var _0x2b2fca=_[_0x1da9('0x7c')](_0x4749d6[_0x1da9('0x78')][_0x3708eb][_0x1a94c5[_0x2ba6af[_0x1da9('0x88')]]][_0x1da9('0x7d')](/"/g,'\x27'));if(!_[_0x1da9('0x65')](_0x2b2fca))_0x39c18e=_0x39c18e+'§'+_0x2b2fca;}if(_0x2f310e=='')_0x2f310e=_0x39c18e;else _0x2f310e+='|'+_0x39c18e;}_0x371494[_0x1da9('0x19')](_0x32b749['id']+':'+_0x2f310e);_0x29f359[_0x32b749['id']]=0x1;}}}}if(hasAdditionalPhones){_0x3bc5e2[_0x1da9('0x19')]('\x22'+_0x371494[_0x1da9('0x12')](';')+'\x22');}if(_0x4ecf31['length']){handleError(_0x4749d6[_0x1da9('0x78')][_0x3708eb],{'code':_0x1da9('0x89'),'message':_0x4ecf31[_0x1da9('0x12')]()});}else{fs['appendFileSync'](_0x118262,_0x3bc5e2['join']()+'\x0a');}_0x3bc5e2=[];}if(!(stats[_0x1da9('0x79')]%0xc8)){socket['emit'](_0x1da9('0x8a')+_0x488ef1,stats);stats[_0x1da9('0x56')]=[];}}if(stopped){logger[_0x1da9('0x53')](_0x1da9('0x8b'));_0x2eb944[_0x1da9('0x8c')]();}}catch(_0x16c94f){handleError(_0x4749d6['data'][_0x3708eb],{'code':_0x1da9('0x8d'),'message':_0x16c94f[_0x1da9('0x55')]});logger['error']('step',_0x16c94f[_0x1da9('0x55')]);}},'complete':function(){try{var _0x3642c9=[];var _0x38d490=[];var _0x1f215f=_0x1da9('0x31');if(_0x2d6c3f[_0x1da9('0x8e')]&&_0x2d6c3f[_0x1da9('0x8e')]['length']){_0x1f215f=_0x1da9('0x8f')+_0x488ef1;_0x3642c9['push'](_0x1da9('0x90')+_0x1f215f+_0x1da9('0x91'));}tmp_campaigns=_0x1da9('0x92')+_0x488ef1;tmp_voice_queues=_0x1da9('0x93')+_0x488ef1;_0x38d490[_0x1da9('0x19')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0x1da9('0x94'));_0x38d490['push'](_0x1da9('0x90')+tmp_voice_queues+_0x1da9('0x94'));BPromise[_0x1da9('0x95')](_0x38d490,handleTZQuery)['then'](function(_0x14468){updateTzCampaigns(_0x2d6c3f[_0x1da9('0x3a')])['then'](function(_0x123eaa){updateTzVoiceQueues(_0x2d6c3f[_0x1da9('0x3a')])[_0x1da9('0x17')](function(_0x56a1c7){if(hasTZ)_0x5e9104=_0x5e9104[_0x1da9('0x7d')]('dialTimezone','dialTimezone,utcOffset');var _0x5c01a7=util[_0x1da9('0xd')](_0x1da9('0x96'),_0x118262,_0x1f215f,_0x5e9104,_0x2d6c3f[_0x1da9('0x3a')],_0x2d6c3f[_0x1da9('0x4c')]||null,NOW,NOW);if(_[_0x1da9('0x65')](_0x1a94c5['scheduledat'])){_0x5c01a7+=_0x1da9('0x97');}_0x3642c9['push'](_0x5c01a7);if(_0x2d6c3f[_0x1da9('0x8e')]&&_0x2d6c3f[_0x1da9('0x8e')][_0x1da9('0x18')]){_0x3642c9[_0x1da9('0x19')](insertCmContact(_0x2d6c3f[_0x1da9('0x3a')],_0x1f215f,_0x2d6c3f[_0x1da9('0x8e')],_0x1a94c5));_0x3642c9[_0x1da9('0x19')](_0x1da9('0x98')+_0x1f215f+';');}BPromise[_0x1da9('0x95')](_0x3642c9,handleQuery)[_0x1da9('0x17')](function(_0x5851d3){BPromise['all']([handleAdditionalPhones()])[_0x1da9('0x17')](function(){_0x3642c9=[];for(var _0x2c2153=0x0;_0x2c2153<promisesAdditionalPhones[_0x1da9('0x18')];_0x2c2153++){if(promisesAdditionalPhones[_0x2c2153][_0x1da9('0x10')]!='§'){_0x3642c9[_0x1da9('0x19')](createAdditionalPhone(promisesAdditionalPhones[_0x2c2153][_0x1da9('0x99')],promisesAdditionalPhones[_0x2c2153][_0x1da9('0x9a')],promisesAdditionalPhones[_0x2c2153][_0x1da9('0x10')],promisesAdditionalPhones[_0x2c2153][_0x1da9('0x9b')]));}}BPromise[_0x1da9('0x1a')](_0x3642c9)[_0x1da9('0x17')](function(){_0x3642c9=[];if(hasTZ){_0x3642c9['push'](insertTzCmHopper(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0x62'),_0x1da9('0x61'),_0x1da9('0x9c'),_0x984d0,tmp_voice_queues));_0x3642c9['push'](insertTzCmHopperBlack(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0x9d'),_0x1da9('0x61'),'VoiceQueueId'));_0x3642c9[_0x1da9('0x19')](insertTzCmHopper(_0x2d6c3f['ListId'],_0x1da9('0x5d'),_0x1da9('0x9e'),_0x1da9('0x9f'),_0x984d0,tmp_campaigns));_0x3642c9[_0x1da9('0x19')](insertTzCmHopperBlack(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0xa0'),'campaigns',_0x1da9('0x9f')));_0x3642c9[_0x1da9('0x19')](insertCmHopperAdditionalPhones(_0x2d6c3f['ListId']));}else{_0x3642c9[_0x1da9('0x19')](insertCmHopper(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0x62'),_0x1da9('0x61'),_0x1da9('0x9c'),_0x984d0));_0x3642c9[_0x1da9('0x19')](insertCmHopperBlack(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0x9d'),_0x1da9('0x61'),_0x1da9('0x9c')));_0x3642c9[_0x1da9('0x19')](insertCmHopper(_0x2d6c3f[_0x1da9('0x3a')],_0x1da9('0x5d'),_0x1da9('0x9e'),_0x1da9('0x9f'),_0x984d0));_0x3642c9[_0x1da9('0x19')](insertCmHopperBlack(_0x2d6c3f['ListId'],_0x1da9('0xa0'),_0x1da9('0x9e'),_0x1da9('0x9f')));_0x3642c9[_0x1da9('0x19')](insertCmHopperAdditionalPhones(_0x2d6c3f[_0x1da9('0x3a')]));}_0x3642c9[_0x1da9('0x19')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x3642c9[_0x1da9('0x19')](_0x1da9('0x98')+tmp_voice_queues+';');BPromise['each'](_0x3642c9,handleQuery)[_0x1da9('0x17')](function(_0x51db7f){stats[_0x1da9('0xa1')]=!![];stats[_0x1da9('0xa2')]=_0x2d6c3f[_0x1da9('0x8e')]&&_0x2d6c3f[_0x1da9('0x8e')][_0x1da9('0x18')]?results[0x2]['affectedRows']:results[0x0][_0x1da9('0xa2')];socket[_0x1da9('0xa3')](_0x1da9('0x8a')+_0x488ef1,stats);fs['unlink'](_0x52a666);fs[_0x1da9('0xa4')](_0x118262);process[_0x1da9('0xa5')](0x0);})[_0x1da9('0x5a')](function(_0x1a4545){logger[_0x1da9('0x54')](_0x1a4545['message']);process[_0x1da9('0xa5')](0x1);});});});})[_0x1da9('0x5a')](function(_0x1ff1c0){logger['error'](_0x1ff1c0[_0x1da9('0x55')]);process[_0x1da9('0xa5')](0x1);});});});});}catch(_0x1448ac){logger[_0x1da9('0x54')](_0x1da9('0xa6'),_0x1448ac[_0x1da9('0x55')]);process['exit'](0x1);}},'error':function(_0x2c25b3,_0x475ec2,_0xee6ac6,_0x5c425a){throw new Error(_0x5c425a);}});});}function validate(){if(process[_0x1da9('0xa7')]&&process[_0x1da9('0xa7')][_0x1da9('0x18')]<0x4){throw new Error(_0x1da9('0xa8'));}var _0x5f3581=path[_0x1da9('0x12')](config[_0x1da9('0x6d')],_0x1da9('0x6e'),process[_0x1da9('0xa7')][0x2]);if(!fs[_0x1da9('0xa9')](_0x5f3581)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x470bd7={};try{_0x470bd7=JSON[_0x1da9('0x77')](process[_0x1da9('0xa7')][0x3]);if(!_0x470bd7[_0x1da9('0x6b')]){throw new Error(_0x1da9('0xaa'));}if(!_0x470bd7[_0x1da9('0x6b')][_0x1da9('0x10')]){throw new Error(_0x1da9('0xab'));}if(!_0x470bd7[_0x1da9('0x6b')][_0x1da9('0x85')]){throw new Error(_0x1da9('0xac'));}var _0x1c588d=0x0;if(_0x470bd7['binding'][_0x1da9('0x41')]){_0x1c588d=0x1;}if(!_0x470bd7['ListId']){throw new Error(_0x1da9('0xad'));}}catch(_0x4eeb8f){throw new Error(_0x1da9('0xae'));}var _0x3d4726=[];try{_0x3d4726=_[_0x1da9('0xaf')](JSON[_0x1da9('0x77')](process['argv'][0x4]),'id');}catch(_0x29d45a){logger[_0x1da9('0x53')](_0x1da9('0xb0'));}main(_0x5f3581,_0x470bd7,_0x3d4726,_0x1c588d);}validate();process['on'](_0x1da9('0xb1'),handleStop);process['on'](_0x1da9('0xb2'),handleUncaughtException);
\ No newline at end of file
index f86bba2..6ee08ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e7=['from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','isNil','push','then','catch','error','message','all','length','filter','CmContactHasItem','update','updated','PHONE','inserted','CmContact','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','createdAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.updatedAt','insert','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','toString','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','updatedAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','keys','ListId','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','group','exit','errors','code','info','main','stringify','clone','root','server/files/tmp','.csv','ContactItemType','name','_description','AdditionalPhones','header','writeFileSync','parse','createReadStream','data','find','hasOwnProperty','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','trim','itemTypeId','replace','SystemRow','appendFileSync','rows','emit','Abort\x20parser','abort','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','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','DROP\x20TABLE\x20','finish','affectedRows','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','import','redis','localhost','socket.io-emitter','cm_contacts_temp_','format','YYYYMMDDHHmmss','test','select','phone'];(function(_0x3f3604,_0x1bcd91){var _0xd85867=function(_0x4bfdab){while(--_0x4bfdab){_0x3f3604['push'](_0x3f3604['shift']());}};_0xd85867(++_0x1bcd91);}(_0x56e7,0x93));var _0x756e=function(_0xfedc72,_0x292f02){_0xfedc72=_0xfedc72-0x0;var _0x2c7c78=_0x56e7[_0xfedc72];return _0x2c7c78;};'use strict';var fs=require('fs');var path=require(_0x756e('0x0'));var _=require(_0x756e('0x1'));var Papa=require(_0x756e('0x2'));var util=require(_0x756e('0x3'));var BPromise=require(_0x756e('0x4'));var moment=require(_0x756e('0x5'));var squel=require('squel');var Redis=require(_0x756e('0x6'));var db=require(_0x756e('0x7'))['db'];var config=require(_0x756e('0x8'));var logger=require('../../../config/logger')(_0x756e('0x9'));config[_0x756e('0xa')]=_['defaults'](config['redis'],{'host':_0x756e('0xb'),'port':0x18eb});var socket=require(_0x756e('0xc'))(new Redis(config['redis']));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()['format']('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0x756e('0xd')+moment()[_0x756e('0xe')](_0x756e('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x20926f){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))*$/[_0x756e('0x10')](_0x20926f);}function selectNotIn(_0x5b9435,_0x20bcaa,_0x4aff41,_0x3be9da,_0x147f39){return squel[_0x756e('0x11')]()['field'](_0x756e('0x12'))[_0x756e('0x13')](_0x3be9da)[_0x756e('0x14')](_0x20bcaa,null,_0x20bcaa+'.id\x20=\x20'+_0x3be9da+'.'+_0x4aff41)[_0x756e('0x15')](_0x3be9da+'.'+_0x4aff41+_0x756e('0x16')+_0x5b9435+'.'+_0x4aff41)[_0x756e('0x15')](_0x20bcaa+_0x756e('0x17')+_0x147f39[_0x756e('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x3b97a6,_0x49d4b7){promisesAdditionalPhones=[];promisesContact=[];return db[_0x756e('0x18')][_0x756e('0x19')](_0x756e('0x1a')+tempTableName)[_0x756e('0x1b')](function(_0x42a2a4){if(_0x42a2a4!==null){var _0x583ae7=[];for(var _0x5cb7cd=0x0;_0x5cb7cd<_0x42a2a4['length'];_0x5cb7cd++){var _0x1c71e1=_0x42a2a4[_0x5cb7cd];if(!_[_0x756e('0x1c')](_0x1c71e1['phone'])){if(!_[_0x756e('0x1c')](_0x1c71e1['AdditionalPhones']))_0x583ae7[_0x756e('0x1d')](insertAdditionalPhones(_0x1c71e1));promisesContact[_0x756e('0x1d')]({'contact':_0x1c71e1});}}}Promise['all'](_0x583ae7)[_0x756e('0x1e')](function(){_0x3b97a6({'val':0x1});});})[_0x756e('0x1f')](function(_0x2d2aaf){logger[_0x756e('0x20')](_0x2d2aaf[_0x756e('0x21')]);});});}function insertAdditionalPhones(_0x5650d6){return new Promise(function(_0x50759b,_0x3218a6){var _0x133fbd=_0x5650d6['AdditionalPhones'];if(_[_0x756e('0x1c')](_0x133fbd))_0x3218a6({'val':0x0});else{var _0x4fbc5b=_0x133fbd['split'](';');var _0x363eb5=[];orderBy=0x0;for(var _0x12579d=0x0;_0x12579d<_0x4fbc5b['length'];_0x12579d++){_0x363eb5[_0x756e('0x1d')](splitAdditionalPhone(_0x5650d6['id'],_0x4fbc5b[_0x12579d]));}Promise[_0x756e('0x22')](_0x363eb5)['then'](function(){_0x50759b({'val':_0x4fbc5b['length']});});}});}function splitAdditionalPhone(_0x90f5ec,_0x2a3209){return new Promise(function(_0x40ee42,_0xda7fc4){var _0x238f80=_0x2a3209['split'](':');var _0x39d2a6=_0x238f80[0x0];var _0x7b1ab=_0x238f80[0x1];if(_0x7b1ab!==''){var _0x9ab420=_0x7b1ab['split']('|');var _0x1d0077=[];for(var _0x457dd2=0x0;_0x457dd2<_0x9ab420[_0x756e('0x23')];_0x457dd2++){if(_0x9ab420[_0x457dd2]!==''){var _0x5ee8ae=_[_0x756e('0x24')](promisesAdditionalPhones,{'contactId':_0x90f5ec,'phone':_0x9ab420[_0x457dd2]});if(_0x5ee8ae[_0x756e('0x23')]==0x0){orderBy++;promisesAdditionalPhones[_0x756e('0x1d')]({'contactId':_0x90f5ec,'contactTypeId':_0x39d2a6,'phone':_0x9ab420[_0x457dd2],'orderBy':orderBy});}}}_0x40ee42({'ok':0x1});}else _0x40ee42({'res':0x0});});}function createAdditionalPhone(_0x6f730b,_0x31bdbc,_0x300315,_0x2de777){var _0x44e525='';var _0x1c9d80='';var _0x3fb17e=_0x300315['split']('§');_0x44e525=_0x3fb17e[0x0];if(_0x3fb17e[_0x756e('0x23')]==0x2)_0x1c9d80=_0x3fb17e[0x1];return new Promise(function(_0xf2138f,_0x2cce11){return db[_0x756e('0x25')]['findOne']({'where':{'CmContactId':_0x6f730b,'item':_0x44e525}})[_0x756e('0x1e')](function(_0x14a3ec){if(_0x14a3ec){return db['CmContactHasItem'][_0x756e('0x26')]({'ItemTypeId':_0x31bdbc,'description':_0x1c9d80,'OrderBy':_0x2de777},{'where':{'CmContactId':_0x6f730b,'item':_0x44e525}})['then'](function(_0xf2817c){_0xf2138f({'res':_0x756e('0x27')});});}else{return db[_0x756e('0x25')]['create']({'CmContactId':_0x6f730b,'item':_0x44e525,'ItemTypeId':_0x31bdbc,'description':_0x1c9d80,'OrderBy':_0x2de777,'ItemClass':_0x756e('0x28')})[_0x756e('0x1e')](function(_0x19f3cf){_0xf2138f({'res':_0x756e('0x29')});});}});});}function updateContact(_0xff5c8b){return new Promise(function(_0x1d4f20,_0x46d2b0){var _0xca2b17=_0xff5c8b['id'];delete _0xff5c8b['id'];return db[_0x756e('0x2a')][_0x756e('0x26')](_0xff5c8b,{'where':{'id':_0xca2b17}})[_0x756e('0x1e')](function(_0x47f393){updatedRows+=0x1;return db['CmHopper'][_0x756e('0x26')]({'phone':_0xff5c8b[_0x756e('0x12')]},{'where':{'ContactId':_0xca2b17}})[_0x756e('0x1e')](function(_0x55bf7c){_0x1d4f20({'ret':'OK'});});});});}function insertCmHopper(_0x2d59d4,_0x22a20b,_0x27c876,_0x3a00e7,_0xddd6b0){var _0x40d53d=[_0x756e('0x2b'),'cm_contacts.scheduledat',_0x756e('0x2c'),_0x756e('0x2d'),_0x22a20b+'.'+_0x3a00e7,_0x756e('0x2e'),'cm_contacts.updatedAt',_0x756e('0x2f'),_0x756e('0x30'),'\x22'+_0xddd6b0+'\x22'];return squel['insert']()[_0x756e('0x31')](_0x756e('0x32'))[_0x756e('0x33')](['phone',_0x756e('0x34'),_0x756e('0x35'),'ListId',_0x3a00e7,_0x756e('0x36'),'updatedAt',_0x756e('0x37'),_0x756e('0x38'),_0x756e('0x39')],squel[_0x756e('0x11')]()[_0x756e('0x3a')](_0x40d53d)['from'](_0x22a20b)[_0x756e('0x14')](_0x756e('0x3b'),null,_0x756e('0x3c')+_0x22a20b+_0x756e('0x3d'))[_0x756e('0x14')](_0x27c876,null,_0x27c876+_0x756e('0x3e')+_0x22a20b+'.'+_0x3a00e7)[_0x756e('0x15')](_0x22a20b+_0x756e('0x3f'),_0x2d59d4)[_0x756e('0x15')](_0x756e('0x40'),NOW)[_0x756e('0x15')](_0x756e('0x41'),selectNotIn(_0x22a20b,_0x27c876,_0x3a00e7,_0x756e('0x32'),[_0x756e('0x42'),_0x756e('0x43')]))[_0x756e('0x15')](_0x756e('0x41'),selectNotIn(_0x22a20b,_0x27c876,_0x3a00e7,_0x756e('0x32'),[_0x756e('0x42')])))['toString']();}function insertCmHopperBlack(_0x4c92d2,_0x4fa295,_0x4aac1e,_0x2272e2){var _0x267791=[_0x756e('0x2b'),'cm_contacts.id',_0x756e('0x2d'),_0x4fa295+'.'+_0x2272e2,_0x756e('0x2e'),_0x756e('0x44')];return squel[_0x756e('0x45')]()[_0x756e('0x31')](_0x756e('0x46'))[_0x756e('0x33')]([_0x756e('0x12'),_0x756e('0x35'),'ListId',_0x2272e2,_0x756e('0x36'),'updatedAt'],squel['select']()[_0x756e('0x3a')](_0x267791)[_0x756e('0x13')](_0x4fa295)[_0x756e('0x14')]('cm_contacts',null,_0x756e('0x3c')+_0x4fa295+'.CmListId')[_0x756e('0x14')](_0x4aac1e,null,_0x4aac1e+_0x756e('0x3e')+_0x4fa295+'.'+_0x2272e2)['where'](_0x4fa295+'.CmListId\x20=\x20?',_0x4c92d2)[_0x756e('0x15')](_0x756e('0x40'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x756e('0x11')]()['field'](_0x756e('0x12'))[_0x756e('0x13')]('cm_hopper_black')[_0x756e('0x15')](_0x756e('0x47'),_0x4c92d2)[_0x756e('0x15')](_0x2272e2+_0x756e('0x48'),_0x4fa295+'.'+_0x2272e2)))[_0x756e('0x49')]();}function insertCmHopperAdditionalPhones(_0x5973cc){var _0x2e8a49=[_0x756e('0x4a'),_0x756e('0x4b'),_0x756e('0x4c'),_0x756e('0x4d'),_0x756e('0x4e')];return squel[_0x756e('0x45')]()[_0x756e('0x31')](_0x756e('0x4f'))[_0x756e('0x33')]([_0x756e('0x50'),_0x756e('0x12'),'OrderBy',_0x756e('0x36'),_0x756e('0x51')],squel[_0x756e('0x11')]()['fields'](_0x2e8a49)[_0x756e('0x13')](_0x756e('0x32'))['join']('cm_contacts',null,_0x756e('0x52'))[_0x756e('0x14')](_0x756e('0x53'),null,_0x756e('0x54'))['where']('cm_hopper.ListId\x20=\x20?',_0x5973cc)['where'](_0x756e('0x40'),NOW))[_0x756e('0x49')]();}function insertCmContact(_0x211522,_0x4e4059,_0x169320,_0x3262f4){var _0x7f029c=_[_0x756e('0x55')](_[_0x756e('0x56')](_0x3262f4),[_0x756e('0x57'),_0x756e('0x58'),_0x756e('0x36'),_0x756e('0x51')]);return squel[_0x756e('0x45')]()[_0x756e('0x31')](_0x756e('0x3b'))[_0x756e('0x33')](_0x7f029c,squel[_0x756e('0x11')]()['fields'](_0x7f029c)[_0x756e('0x13')](_0x4e4059)[_0x756e('0x15')]('('+_0x169320[_0x756e('0x14')](',')+_0x756e('0x59'),squel[_0x756e('0x11')]()[_0x756e('0x3a')](_0x169320)['from'](_0x756e('0x3b'))[_0x756e('0x15')](_0x756e('0x47'),_0x211522))[_0x756e('0x15')](_0x756e('0x5a'),squel[_0x756e('0x11')]()['field'](_0x756e('0x5b'),'min_id')[_0x756e('0x13')](_0x4e4059)[_0x756e('0x5c')](_0x169320[_0x756e('0x14')](','))))[_0x756e('0x49')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x54874f){logger[_0x756e('0x20')](_0x54874f['message']);process[_0x756e('0x5d')](0x1);}function handleError(_0x50f835,_0x23589d){stats[_0x756e('0x5e')][_0x756e('0x1d')]({'name':_0x23589d[_0x756e('0x5f')],'message':_0x23589d[_0x756e('0x21')],'row':_0x50f835});}function handleQuery(_0x107d17){logger['info'](_0x107d17);return db[_0x756e('0x18')][_0x756e('0x19')](_0x107d17)[_0x756e('0x1b')](function(_0x3d93a0){results[_0x756e('0x1d')](_0x3d93a0);})['catch'](function(_0x41ef23){logger[_0x756e('0x20')](_0x41ef23[_0x756e('0x21')]);});}function main(_0x331e9b,_0x2e516a,_0x506fc7,_0x2619c3){logger[_0x756e('0x60')](_0x756e('0x61'),_0x331e9b,JSON[_0x756e('0x62')](_0x2e516a));process['send']('start');var _0x46df0d=_0x2e516a['binding'];var _0x4e6945=_[_0x756e('0x63')](_0x46df0d);var _0x539e79=_0x2e516a['socket_timestamp'];var _0x3c5b9f=path[_0x756e('0x14')](config[_0x756e('0x64')],_0x756e('0x65'),_0x539e79+_0x756e('0x66'));logger[_0x756e('0x60')]('body',_0x2e516a);db[_0x756e('0x67')]['findAll']({'raw':!![],'attributes':['id',_0x756e('0x68')]})[_0x756e('0x1e')](function(_0x4b7b83){for(var _0x200e50=0x0;_0x200e50<_0x4b7b83[_0x756e('0x23')];_0x200e50++){if(_0x4b7b83[_0x200e50]['name']in _0x46df0d){contactItemTypes[_0x756e('0x1d')](_0x4b7b83[_0x200e50]);delete _0x4e6945[_0x4b7b83[_0x200e50][_0x756e('0x68')]];hasAdditionalPhones=!![];}for(var _0x5e99fa in _0x46df0d){if(_0x4b7b83[_0x200e50]['name']+_0x756e('0x69')===_0x5e99fa){phoneDescriptions[_0x756e('0x1d')]({'itemTypeId':_0x4b7b83[_0x200e50]['id'],'description':_0x5e99fa});delete _0x4e6945[_0x5e99fa];}}}if(hasAdditionalPhones)_0x4e6945[_0x756e('0x6a')]='';var _0xc76a02=_[_0x756e('0x56')](_0x4e6945)[_0x756e('0x14')]();logger[_0x756e('0x60')](_0x756e('0x6b'),_0xc76a02);fs[_0x756e('0x6c')](_0x3c5b9f,_0xc76a02+'\x0a');Papa[_0x756e('0x6d')](fs[_0x756e('0x6e')](_0x331e9b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x28bd49,_0x100fa0){try{for(var _0x4a7832=0x0,_0x30ab80=[];_0x4a7832<_0x28bd49[_0x756e('0x6f')][_0x756e('0x23')];_0x4a7832++){stats['rows']+=0x1;if(_0x28bd49[_0x756e('0x5e')][_0x4a7832]){handleError(_0x28bd49['data'][_0x4a7832],_0x28bd49[_0x756e('0x5e')][_0x4a7832]);}else{var _0x5cd21a=[];var _0x3b32c0=[];var _0x124c5={};for(var _0x313559 in _0x46df0d){let _0x2bcd62=contactItemTypes[_0x756e('0x70')](_0x319c8b=>_0x319c8b['name']===_0x313559);let _0x1860da=contactItemTypes['find'](_0x4ac3d1=>_0x4ac3d1[_0x756e('0x68')]+_0x756e('0x69')===_0x313559);if(_[_0x756e('0x1c')](_0x2bcd62)&&_[_0x756e('0x1c')](_0x1860da)){if(_0x46df0d[_0x756e('0x71')](_0x313559)){if(_0x28bd49['data'][_0x4a7832][_0x46df0d[_0x313559]]){var _0x52d428=_['trim'](_0x28bd49[_0x756e('0x6f')][_0x4a7832][_0x46df0d[_0x313559]]['replace'](/"/g,'\x27'));switch(_0x313559){case _0x756e('0x34'):var _0x4d57c9=moment(_0x52d428,_0x756e('0x72'),!![]);if(_0x4d57c9[_0x756e('0x73')]()){_0x30ab80[_0x756e('0x1d')]('\x22'+_0x52d428+'\x22');}else{_0x5cd21a[_0x756e('0x1d')](_0x756e('0x74'));}break;case'priority':var _0x4b8e0b=parseInt(_0x52d428);_0x52d428=_[_0x756e('0x75')](_0x4b8e0b)||_0x4b8e0b<0x0||_0x4b8e0b>0x4?_0x2619c3?0x3:0x2:_0x4b8e0b;_0x30ab80[_0x756e('0x1d')]('\x22'+_0x52d428+'\x22');break;case'UserId':var _0x2a422e=parseInt(_0x52d428);if(_[_0x756e('0x76')](_0x2a422e)&&_[_0x756e('0x77')](_0x506fc7,_0x2a422e)){_0x30ab80['push']('\x22'+_0x2a422e+'\x22');}else{_0x5cd21a['push'](_0x756e('0x78'));}break;case _0x756e('0x79'):if(isEmail(_0x52d428)){_0x30ab80['push']('\x22'+_0x52d428+'\x22');}else{_0x5cd21a[_0x756e('0x1d')](_0x756e('0x7a'));}break;case _0x756e('0x7b'):var _0x4fdc3e=moment(_0x52d428,'YYYY-MM-DD',!![]);if(_0x4fdc3e[_0x756e('0x73')]()){_0x30ab80[_0x756e('0x1d')]('\x22'+_0x52d428+'\x22');}else{_0x5cd21a[_0x756e('0x1d')](_0x756e('0x7c'));}break;default:_0x30ab80[_0x756e('0x1d')]('\x22'+_0x52d428+'\x22');}}else{switch(_0x313559){case _0x756e('0x7d'):case _0x756e('0x12'):_0x5cd21a['push'](_0x313559+_0x756e('0x7e'));break;default:_0x30ab80[_0x756e('0x1d')]('\x22\x22');}}}}else{var _0x5d9e69='';if(!_[_0x756e('0x1c')](_0x2bcd62)){if(!_0x124c5[_0x756e('0x71')](_0x2bcd62['id'])){for(var _0x16aad5=0x0;_0x16aad5<_0x46df0d[_0x313559][_0x756e('0x23')];_0x16aad5++){var _0x52d428=_[_0x756e('0x7f')](_0x28bd49[_0x756e('0x6f')][_0x4a7832][_0x46df0d[_0x313559][_0x16aad5]]['replace'](/"/g,'\x27'));var _0x55049b=phoneDescriptions[_0x756e('0x70')](_0x1a008f=>_0x1a008f[_0x756e('0x80')]===_0x2bcd62['id']);if(!_[_0x756e('0x1c')](_0x55049b)){var _0x1d0971=_[_0x756e('0x7f')](_0x28bd49['data'][_0x4a7832][_0x46df0d[_0x55049b['description']][0x0]][_0x756e('0x81')](/"/g,'\x27'));if(!_[_0x756e('0x1c')](_0x1d0971))_0x52d428=_0x52d428+'§'+_0x1d0971;}if(_0x5d9e69=='')_0x5d9e69=_0x52d428;else _0x5d9e69+='|'+_0x52d428;}_0x3b32c0[_0x756e('0x1d')](_0x2bcd62['id']+':'+_0x5d9e69);_0x124c5[_0x2bcd62['id']]=0x1;}}}}if(hasAdditionalPhones){_0x30ab80[_0x756e('0x1d')]('\x22'+_0x3b32c0['join'](';')+'\x22');}if(_0x5cd21a[_0x756e('0x23')]){handleError(_0x28bd49[_0x756e('0x6f')][_0x4a7832],{'code':_0x756e('0x82'),'message':_0x5cd21a[_0x756e('0x14')]()});}else{fs[_0x756e('0x83')](_0x3c5b9f,_0x30ab80['join']()+'\x0a');}_0x30ab80=[];}if(!(stats[_0x756e('0x84')]%0xc8)){socket[_0x756e('0x85')]('contact:import:'+_0x539e79,stats);stats[_0x756e('0x5e')]=[];}}if(stopped){logger[_0x756e('0x60')](_0x756e('0x86'));_0x100fa0[_0x756e('0x87')]();}}catch(_0x4bf392){handleError(_0x28bd49[_0x756e('0x6f')][_0x4a7832],{'code':_0x756e('0x88'),'message':_0x4bf392[_0x756e('0x21')]});logger[_0x756e('0x20')](_0x756e('0x89'),_0x4bf392['message']);}},'complete':function(){try{var _0x26e64d=[];var _0x440210=tempTableName;_0x26e64d[_0x756e('0x1d')](_0x756e('0x8a')+_0x440210+_0x756e('0x8b'));logger[_0x756e('0x60')](_0x756e('0x8c'),contactItemTypes[_0x756e('0x23')]);var _0x37637a=util['format'](_0x756e('0x8d'),_0x3c5b9f,_0x440210,_0xc76a02,_0x2e516a[_0x756e('0x57')],_0x2e516a['CompanyId']||null,NOW,NOW);if(_[_0x756e('0x1c')](_0x46df0d[_0x756e('0x34')])){_0x37637a+=_0x756e('0x8e');}_0x26e64d[_0x756e('0x1d')](_0x37637a);BPromise[_0x756e('0x8f')](_0x26e64d,handleQuery)[_0x756e('0x1e')](function(_0x4e6a23){BPromise[_0x756e('0x22')]([handleAdditionalPhones()])[_0x756e('0x1e')](function(){_0x26e64d=[];for(var _0x706a21=0x0;_0x706a21<promisesContact['length'];_0x706a21++){_0x26e64d[_0x756e('0x1d')](updateContact(promisesContact[_0x706a21][_0x756e('0x90')]));}BPromise[_0x756e('0x22')](_0x26e64d)[_0x756e('0x1e')](function(){_0x26e64d=[];for(var _0x16bae7=0x0;_0x16bae7<promisesAdditionalPhones[_0x756e('0x23')];_0x16bae7++){_0x26e64d[_0x756e('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x16bae7][_0x756e('0x91')],promisesAdditionalPhones[_0x16bae7][_0x756e('0x92')],promisesAdditionalPhones[_0x16bae7]['phone'],promisesAdditionalPhones[_0x16bae7][_0x756e('0x93')]));}BPromise[_0x756e('0x22')](_0x26e64d)[_0x756e('0x1e')](function(){_0x26e64d=[];_0x26e64d['push'](insertCmHopperAdditionalPhones(_0x2e516a[_0x756e('0x57')]));_0x26e64d[_0x756e('0x1d')](_0x756e('0x94')+_0x440210+';');BPromise[_0x756e('0x8f')](_0x26e64d,handleQuery)[_0x756e('0x1e')](function(_0x64cc6b){stats[_0x756e('0x95')]=!![];stats[_0x756e('0x96')]=updatedRows;socket['emit'](_0x756e('0x97')+_0x539e79,stats);fs[_0x756e('0x98')](_0x331e9b);fs[_0x756e('0x98')](_0x3c5b9f);process['exit'](0x0);})[_0x756e('0x1f')](function(_0x3d7732){logger[_0x756e('0x20')](_0x3d7732['message']);process[_0x756e('0x5d')](0x1);});});});});})[_0x756e('0x1f')](function(_0xfaa8f6){logger['error'](_0xfaa8f6[_0x756e('0x21')]);process['exit'](0x1);});}catch(_0x51b1ec){logger[_0x756e('0x20')](_0x756e('0x99'),_0x51b1ec[_0x756e('0x21')]);process[_0x756e('0x5d')](0x1);}},'error':function(_0x46c57a,_0xebeb20,_0x5e616c,_0x2f40d6){throw new Error(_0x2f40d6);}});});}function validate(){if(process[_0x756e('0x9a')]&&process[_0x756e('0x9a')][_0x756e('0x23')]<0x4){throw new Error(_0x756e('0x9b'));}var _0xe01fd0=path[_0x756e('0x14')](config['root'],_0x756e('0x65'),process[_0x756e('0x9a')][0x2]);if(!fs[_0x756e('0x9c')](_0xe01fd0)){throw new Error(_0x756e('0x9d'));}var _0x34a072={};try{_0x34a072=JSON[_0x756e('0x6d')](process[_0x756e('0x9a')][0x3]);if(!_0x34a072[_0x756e('0x9e')]){throw new Error(_0x756e('0x9f'));}var _0x313802=0x0;if(_0x34a072[_0x756e('0x9e')][_0x756e('0x38')]){_0x313802=0x1;}if(!_0x34a072[_0x756e('0x57')]){throw new Error(_0x756e('0xa0'));}}catch(_0xe3d909){throw new Error(_0x756e('0xa1'));}var _0xfd7868=[];try{_0xfd7868=_[_0x756e('0xa2')](JSON[_0x756e('0x6d')](process[_0x756e('0x9a')][0x4]),'id');}catch(_0x23ec77){logger[_0x756e('0x60')](_0x756e('0xa3'));}main(_0xe01fd0,_0x34a072,_0xfd7868,_0x313802);}validate();process['on'](_0x756e('0xa4'),handleStop);process['on'](_0x756e('0xa5'),handleUncaughtException);
\ No newline at end of file
+var _0x2162=['updated','create','PHONE','inserted','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','createdAt','updatedAt','priority','recallme','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.id','cm_contacts.ListId','cm_hopper_black','ListId','cm_contacts','field','toString','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','min_id','info','Received\x20SIGINT','exit','errors','code','sequelize','main','send','start','clone','socket_timestamp','server/files/tmp','.csv','body','ContactItemType','findAll','name','writeFileSync','createReadStream','data','rows','find','_description','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','firstName','\x20not\x20specified','replace','itemTypeId','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','CREATE\x20TABLE\x20','CIS\x20len','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','contactTypeId','orderBy','affectedRows','unlink','complete','argv','root','parse','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','lodash','util','bluebird','squel','ioredis','../../../config/environment','../../../config/logger','import','defaults','socket.io-emitter','redis','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','query','spread','length','isNil','AdditionalPhones','push','all','then','catch','error','message','split','filter','CmContactHasItem','findOne','update'];(function(_0x3f709f,_0x55df51){var _0x2b9fd6=function(_0xf3a5f1){while(--_0xf3a5f1){_0x3f709f['push'](_0x3f709f['shift']());}};_0x2b9fd6(++_0x55df51);}(_0x2162,0x110));var _0x2216=function(_0x11a422,_0x5907a5){_0x11a422=_0x11a422-0x0;var _0x547177=_0x2162[_0x11a422];return _0x547177;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x2216('0x0'));var Papa=require('papaparse');var util=require(_0x2216('0x1'));var BPromise=require(_0x2216('0x2'));var moment=require('moment');var squel=require(_0x2216('0x3'));var Redis=require(_0x2216('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0x2216('0x5'));var logger=require(_0x2216('0x6'))(_0x2216('0x7'));config['redis']=_[_0x2216('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2216('0x9'))(new Redis(config[_0x2216('0xa')]));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()[_0x2216('0xb')](_0x2216('0xc'));var tempTableName='cm_contacts_temp_'+moment()['format']('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x4b16f8){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))*$/[_0x2216('0xd')](_0x4b16f8);}function selectNotIn(_0x291559,_0x4bae57,_0x31d9b7,_0x1e70cd,_0x462180){return squel[_0x2216('0xe')]()['field'](_0x2216('0xf'))[_0x2216('0x10')](_0x1e70cd)[_0x2216('0x11')](_0x4bae57,null,_0x4bae57+_0x2216('0x12')+_0x1e70cd+'.'+_0x31d9b7)[_0x2216('0x13')](_0x1e70cd+'.'+_0x31d9b7+_0x2216('0x14')+_0x291559+'.'+_0x31d9b7)[_0x2216('0x13')](_0x4bae57+_0x2216('0x15')+_0x462180['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0xf273d8,_0x332958){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0x2216('0x16')]('select\x20*\x20from\x20'+tempTableName)[_0x2216('0x17')](function(_0x9e6c0b){if(_0x9e6c0b!==null){var _0x337fcf=[];for(var _0x1048c8=0x0;_0x1048c8<_0x9e6c0b[_0x2216('0x18')];_0x1048c8++){var _0x460bff=_0x9e6c0b[_0x1048c8];if(!_[_0x2216('0x19')](_0x460bff[_0x2216('0xf')])){if(!_[_0x2216('0x19')](_0x460bff[_0x2216('0x1a')]))_0x337fcf[_0x2216('0x1b')](insertAdditionalPhones(_0x460bff));promisesContact[_0x2216('0x1b')]({'contact':_0x460bff});}}}Promise[_0x2216('0x1c')](_0x337fcf)[_0x2216('0x1d')](function(){_0xf273d8({'val':0x1});});})[_0x2216('0x1e')](function(_0x4ea6c6){logger[_0x2216('0x1f')](_0x4ea6c6[_0x2216('0x20')]);});});}function insertAdditionalPhones(_0x41ac4b){return new Promise(function(_0x230faa,_0x47a40f){var _0x24f6a4=_0x41ac4b[_0x2216('0x1a')];if(_[_0x2216('0x19')](_0x24f6a4))_0x47a40f({'val':0x0});else{var _0x463894=_0x24f6a4['split'](';');var _0x5edf09=[];orderBy=0x0;for(var _0x5a0881=0x0;_0x5a0881<_0x463894[_0x2216('0x18')];_0x5a0881++){_0x5edf09[_0x2216('0x1b')](splitAdditionalPhone(_0x41ac4b['id'],_0x463894[_0x5a0881]));}Promise['all'](_0x5edf09)[_0x2216('0x1d')](function(){_0x230faa({'val':_0x463894[_0x2216('0x18')]});});}});}function splitAdditionalPhone(_0x3db6af,_0x3935c3){return new Promise(function(_0x281531,_0x4e730e){var _0x204cd3=_0x3935c3[_0x2216('0x21')](':');var _0xea5f27=_0x204cd3[0x0];var _0x15fded=_0x204cd3[0x1];if(_0x15fded!==''){var _0x4b72a8=_0x15fded[_0x2216('0x21')]('|');var _0x2399aa=[];for(var _0x23018d=0x0;_0x23018d<_0x4b72a8[_0x2216('0x18')];_0x23018d++){if(_0x4b72a8[_0x23018d]!==''){var _0xcb96b6=_[_0x2216('0x22')](promisesAdditionalPhones,{'contactId':_0x3db6af,'phone':_0x4b72a8[_0x23018d]});if(_0xcb96b6[_0x2216('0x18')]==0x0){orderBy++;promisesAdditionalPhones[_0x2216('0x1b')]({'contactId':_0x3db6af,'contactTypeId':_0xea5f27,'phone':_0x4b72a8[_0x23018d],'orderBy':orderBy});}}}_0x281531({'ok':0x1});}else _0x281531({'res':0x0});});}function createAdditionalPhone(_0x4d0ebc,_0x398835,_0x50703e,_0x4d8bfc){var _0x475a7c='';var _0x48a8f8='';var _0x2d08fd=_0x50703e['split']('§');_0x475a7c=_0x2d08fd[0x0];if(_0x2d08fd[_0x2216('0x18')]==0x2)_0x48a8f8=_0x2d08fd[0x1];return new Promise(function(_0x4deb1a,_0x43d172){return db[_0x2216('0x23')][_0x2216('0x24')]({'where':{'CmContactId':_0x4d0ebc,'item':_0x475a7c}})[_0x2216('0x1d')](function(_0x22b3f3){if(_0x22b3f3){return db[_0x2216('0x23')][_0x2216('0x25')]({'ItemTypeId':_0x398835,'description':_0x48a8f8,'OrderBy':_0x4d8bfc},{'where':{'CmContactId':_0x4d0ebc,'item':_0x475a7c}})[_0x2216('0x1d')](function(_0x5af50a){_0x4deb1a({'res':_0x2216('0x26')});});}else{return db[_0x2216('0x23')][_0x2216('0x27')]({'CmContactId':_0x4d0ebc,'item':_0x475a7c,'ItemTypeId':_0x398835,'description':_0x48a8f8,'OrderBy':_0x4d8bfc,'ItemClass':_0x2216('0x28')})['then'](function(_0x387f7b){_0x4deb1a({'res':_0x2216('0x29')});});}});});}function updateContact(_0x696d31){return new Promise(function(_0x3e3d62,_0x26b93b){var _0x6d4fe0=_0x696d31['id'];delete _0x696d31['id'];return db[_0x2216('0x2a')][_0x2216('0x25')](_0x696d31,{'where':{'id':_0x6d4fe0}})['then'](function(_0x2760ce){updatedRows+=0x1;return db['CmHopper'][_0x2216('0x25')]({'phone':_0x696d31[_0x2216('0xf')]},{'where':{'ContactId':_0x6d4fe0}})['then'](function(_0x5e6ef2){_0x3e3d62({'ret':'OK'});});});});}function insertCmHopper(_0x45980a,_0x3665eb,_0x133f0f,_0xdb8aa2,_0x3f844c){var _0x2ed9ec=[_0x2216('0x2b'),_0x2216('0x2c'),'cm_contacts.id','cm_contacts.ListId',_0x3665eb+'.'+_0xdb8aa2,_0x2216('0x2d'),_0x2216('0x2e'),_0x2216('0x2f'),'cm_contacts.UserId','\x22'+_0x3f844c+'\x22'];return squel[_0x2216('0x30')]()[_0x2216('0x31')](_0x2216('0x32'))[_0x2216('0x33')](['phone',_0x2216('0x34'),_0x2216('0x35'),'ListId',_0xdb8aa2,_0x2216('0x36'),_0x2216('0x37'),_0x2216('0x38'),'UserId',_0x2216('0x39')],squel[_0x2216('0xe')]()[_0x2216('0x3a')](_0x2ed9ec)['from'](_0x3665eb)[_0x2216('0x11')]('cm_contacts',null,_0x2216('0x3b')+_0x3665eb+_0x2216('0x3c'))[_0x2216('0x11')](_0x133f0f,null,_0x133f0f+_0x2216('0x12')+_0x3665eb+'.'+_0xdb8aa2)[_0x2216('0x13')](_0x3665eb+_0x2216('0x3d'),_0x45980a)[_0x2216('0x13')](_0x2216('0x3e'),NOW)[_0x2216('0x13')](_0x2216('0x3f'),selectNotIn(_0x3665eb,_0x133f0f,_0xdb8aa2,_0x2216('0x32'),[_0x2216('0x40'),_0x2216('0x41')]))['where'](_0x2216('0x3f'),selectNotIn(_0x3665eb,_0x133f0f,_0xdb8aa2,'cm_hopper',['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x113d0f,_0x5c97d3,_0x476585,_0x2bf334){var _0x1ccbca=[_0x2216('0x2b'),_0x2216('0x42'),_0x2216('0x43'),_0x5c97d3+'.'+_0x2bf334,_0x2216('0x2d'),_0x2216('0x2e')];return squel['insert']()['into'](_0x2216('0x44'))[_0x2216('0x33')]([_0x2216('0xf'),_0x2216('0x35'),_0x2216('0x45'),_0x2bf334,_0x2216('0x36'),_0x2216('0x37')],squel[_0x2216('0xe')]()[_0x2216('0x3a')](_0x1ccbca)[_0x2216('0x10')](_0x5c97d3)[_0x2216('0x11')](_0x2216('0x46'),null,_0x2216('0x3b')+_0x5c97d3+_0x2216('0x3c'))[_0x2216('0x11')](_0x476585,null,_0x476585+_0x2216('0x12')+_0x5c97d3+'.'+_0x2bf334)[_0x2216('0x13')](_0x5c97d3+'.CmListId\x20=\x20?',_0x113d0f)['where'](_0x2216('0x3e'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x2216('0xe')]()[_0x2216('0x47')](_0x2216('0xf'))[_0x2216('0x10')](_0x2216('0x44'))[_0x2216('0x13')]('ListId\x20=\x20?',_0x113d0f)[_0x2216('0x13')](_0x2bf334+'\x20=\x20?',_0x5c97d3+'.'+_0x2bf334)))[_0x2216('0x48')]();}function insertCmHopperAdditionalPhones(_0x3834d7){var _0x26c89c=[_0x2216('0x49'),'cm_contact_has_items.item',_0x2216('0x4a'),_0x2216('0x4b'),_0x2216('0x4c')];return squel[_0x2216('0x30')]()[_0x2216('0x31')](_0x2216('0x4d'))[_0x2216('0x33')](['CmHopperId','phone','OrderBy',_0x2216('0x36'),_0x2216('0x37')],squel[_0x2216('0xe')]()[_0x2216('0x3a')](_0x26c89c)['from']('cm_hopper')[_0x2216('0x11')](_0x2216('0x46'),null,_0x2216('0x4e'))[_0x2216('0x11')](_0x2216('0x4f'),null,_0x2216('0x50'))[_0x2216('0x13')](_0x2216('0x51'),_0x3834d7)[_0x2216('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x2216('0x48')]();}function insertCmContact(_0x1efda0,_0xf85b54,_0x29c41c,_0x12d4fa){var _0x363757=_[_0x2216('0x52')](_[_0x2216('0x53')](_0x12d4fa),[_0x2216('0x45'),_0x2216('0x54'),_0x2216('0x36'),'updatedAt']);return squel[_0x2216('0x30')]()['into']('cm_contacts')[_0x2216('0x33')](_0x363757,squel[_0x2216('0xe')]()[_0x2216('0x3a')](_0x363757)[_0x2216('0x10')](_0xf85b54)[_0x2216('0x13')]('('+_0x29c41c[_0x2216('0x11')](',')+_0x2216('0x55'),squel[_0x2216('0xe')]()[_0x2216('0x3a')](_0x29c41c)[_0x2216('0x10')]('cm_contacts')[_0x2216('0x13')](_0x2216('0x56'),_0x1efda0))[_0x2216('0x13')](_0x2216('0x57'),squel[_0x2216('0xe')]()[_0x2216('0x47')]('MIN(id)',_0x2216('0x58'))['from'](_0xf85b54)['group'](_0x29c41c[_0x2216('0x11')](','))))['toString']();}function handleStop(){logger[_0x2216('0x59')](_0x2216('0x5a'));stopped=!![];}function handleUncaughtException(_0x223114){logger[_0x2216('0x1f')](_0x223114['message']);process[_0x2216('0x5b')](0x1);}function handleError(_0x57a62a,_0x21f87f){stats[_0x2216('0x5c')][_0x2216('0x1b')]({'name':_0x21f87f[_0x2216('0x5d')],'message':_0x21f87f['message'],'row':_0x57a62a});}function handleQuery(_0x3e0472){logger['info'](_0x3e0472);return db[_0x2216('0x5e')][_0x2216('0x16')](_0x3e0472)[_0x2216('0x17')](function(_0x58359a){results['push'](_0x58359a);})[_0x2216('0x1e')](function(_0x4a72ce){logger['error'](_0x4a72ce[_0x2216('0x20')]);});}function main(_0x32a8ae,_0x4fe3a0,_0x24463b,_0x179f2d){logger[_0x2216('0x59')](_0x2216('0x5f'),_0x32a8ae,JSON['stringify'](_0x4fe3a0));process[_0x2216('0x60')](_0x2216('0x61'));var _0x274b87=_0x4fe3a0['binding'];var _0x344433=_[_0x2216('0x62')](_0x274b87);var _0x27c60e=_0x4fe3a0[_0x2216('0x63')];var _0x2772f7=path['join'](config['root'],_0x2216('0x64'),_0x27c60e+_0x2216('0x65'));logger[_0x2216('0x59')](_0x2216('0x66'),_0x4fe3a0);db[_0x2216('0x67')][_0x2216('0x68')]({'raw':!![],'attributes':['id',_0x2216('0x69')]})[_0x2216('0x1d')](function(_0x4fd081){for(var _0x35f1f1=0x0;_0x35f1f1<_0x4fd081['length'];_0x35f1f1++){if(_0x4fd081[_0x35f1f1][_0x2216('0x69')]in _0x274b87){contactItemTypes[_0x2216('0x1b')](_0x4fd081[_0x35f1f1]);delete _0x344433[_0x4fd081[_0x35f1f1]['name']];hasAdditionalPhones=!![];}for(var _0x55ae02 in _0x274b87){if(_0x4fd081[_0x35f1f1][_0x2216('0x69')]+'_description'===_0x55ae02){phoneDescriptions[_0x2216('0x1b')]({'itemTypeId':_0x4fd081[_0x35f1f1]['id'],'description':_0x55ae02});delete _0x344433[_0x55ae02];}}}if(hasAdditionalPhones)_0x344433[_0x2216('0x1a')]='';var _0x19648c=_['keys'](_0x344433)[_0x2216('0x11')]();logger[_0x2216('0x59')]('header',_0x19648c);fs[_0x2216('0x6a')](_0x2772f7,_0x19648c+'\x0a');Papa['parse'](fs[_0x2216('0x6b')](_0x32a8ae),{'header':!![],'skipEmptyLines':!![],'step':function(_0x20808b,_0xf63905){try{for(var _0x5abbeb=0x0,_0x7e1589=[];_0x5abbeb<_0x20808b[_0x2216('0x6c')][_0x2216('0x18')];_0x5abbeb++){stats[_0x2216('0x6d')]+=0x1;if(_0x20808b[_0x2216('0x5c')][_0x5abbeb]){handleError(_0x20808b[_0x2216('0x6c')][_0x5abbeb],_0x20808b[_0x2216('0x5c')][_0x5abbeb]);}else{var _0x58a5fb=[];var _0x1d845a=[];var _0x2b8ca1={};for(var _0x11dc10 in _0x274b87){let _0xe14774=contactItemTypes[_0x2216('0x6e')](_0x2c07b7=>_0x2c07b7[_0x2216('0x69')]===_0x11dc10);let _0x5baede=contactItemTypes[_0x2216('0x6e')](_0x394c61=>_0x394c61[_0x2216('0x69')]+_0x2216('0x6f')===_0x11dc10);if(_[_0x2216('0x19')](_0xe14774)&&_[_0x2216('0x19')](_0x5baede)){if(_0x274b87[_0x2216('0x70')](_0x11dc10)){if(_0x20808b[_0x2216('0x6c')][_0x5abbeb][_0x274b87[_0x11dc10]]){var _0x2fcdb6=_[_0x2216('0x71')](_0x20808b[_0x2216('0x6c')][_0x5abbeb][_0x274b87[_0x11dc10]]['replace'](/"/g,'\x27'));switch(_0x11dc10){case _0x2216('0x34'):var _0x4331a5=moment(_0x2fcdb6,_0x2216('0xc'),!![]);if(_0x4331a5[_0x2216('0x72')]()){_0x7e1589['push']('\x22'+_0x2fcdb6+'\x22');}else{_0x58a5fb[_0x2216('0x1b')](_0x2216('0x73'));}break;case _0x2216('0x38'):var _0x3bfa27=parseInt(_0x2fcdb6);_0x2fcdb6=_[_0x2216('0x74')](_0x3bfa27)||_0x3bfa27<0x0||_0x3bfa27>0x4?_0x179f2d?0x3:0x2:_0x3bfa27;_0x7e1589['push']('\x22'+_0x2fcdb6+'\x22');break;case _0x2216('0x75'):var _0x252b1a=parseInt(_0x2fcdb6);if(_[_0x2216('0x76')](_0x252b1a)&&_[_0x2216('0x77')](_0x24463b,_0x252b1a)){_0x7e1589['push']('\x22'+_0x252b1a+'\x22');}else{_0x58a5fb[_0x2216('0x1b')](_0x2216('0x78'));}break;case'email':if(isEmail(_0x2fcdb6)){_0x7e1589['push']('\x22'+_0x2fcdb6+'\x22');}else{_0x58a5fb['push'](_0x2216('0x79'));}break;case _0x2216('0x7a'):var _0xfc241b=moment(_0x2fcdb6,'YYYY-MM-DD',!![]);if(_0xfc241b['isValid']()){_0x7e1589[_0x2216('0x1b')]('\x22'+_0x2fcdb6+'\x22');}else{_0x58a5fb[_0x2216('0x1b')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x7e1589[_0x2216('0x1b')]('\x22'+_0x2fcdb6+'\x22');}}else{switch(_0x11dc10){case _0x2216('0x7b'):case _0x2216('0xf'):_0x58a5fb[_0x2216('0x1b')](_0x11dc10+_0x2216('0x7c'));break;default:_0x7e1589[_0x2216('0x1b')]('\x22\x22');}}}}else{var _0x2eb07c='';if(!_[_0x2216('0x19')](_0xe14774)){if(!_0x2b8ca1[_0x2216('0x70')](_0xe14774['id'])){for(var _0x479495=0x0;_0x479495<_0x274b87[_0x11dc10][_0x2216('0x18')];_0x479495++){var _0x2fcdb6=_[_0x2216('0x71')](_0x20808b[_0x2216('0x6c')][_0x5abbeb][_0x274b87[_0x11dc10][_0x479495]][_0x2216('0x7d')](/"/g,'\x27'));var _0x38b08e=phoneDescriptions['find'](_0x2d6bdb=>_0x2d6bdb[_0x2216('0x7e')]===_0xe14774['id']);if(!_[_0x2216('0x19')](_0x38b08e)){var _0x49d858=_[_0x2216('0x71')](_0x20808b[_0x2216('0x6c')][_0x5abbeb][_0x274b87[_0x38b08e['description']][0x0]]['replace'](/"/g,'\x27'));if(!_[_0x2216('0x19')](_0x49d858))_0x2fcdb6=_0x2fcdb6+'§'+_0x49d858;}if(_0x2eb07c=='')_0x2eb07c=_0x2fcdb6;else _0x2eb07c+='|'+_0x2fcdb6;}_0x1d845a['push'](_0xe14774['id']+':'+_0x2eb07c);_0x2b8ca1[_0xe14774['id']]=0x1;}}}}if(hasAdditionalPhones){_0x7e1589[_0x2216('0x1b')]('\x22'+_0x1d845a[_0x2216('0x11')](';')+'\x22');}if(_0x58a5fb['length']){handleError(_0x20808b[_0x2216('0x6c')][_0x5abbeb],{'code':_0x2216('0x7f'),'message':_0x58a5fb['join']()});}else{fs[_0x2216('0x80')](_0x2772f7,_0x7e1589[_0x2216('0x11')]()+'\x0a');}_0x7e1589=[];}if(!(stats[_0x2216('0x6d')]%0xc8)){socket[_0x2216('0x81')](_0x2216('0x82')+_0x27c60e,stats);stats[_0x2216('0x5c')]=[];}}if(stopped){logger['info'](_0x2216('0x83'));_0xf63905['abort']();}}catch(_0x2e70b0){handleError(_0x20808b[_0x2216('0x6c')][_0x5abbeb],{'code':_0x2216('0x84'),'message':_0x2e70b0[_0x2216('0x20')]});logger[_0x2216('0x1f')](_0x2216('0x85'),_0x2e70b0[_0x2216('0x20')]);}},'complete':function(){try{var _0x1ed393=[];var _0x46da43=tempTableName;_0x1ed393[_0x2216('0x1b')](_0x2216('0x86')+_0x46da43+'\x20LIKE\x20cm_contacts;');logger[_0x2216('0x59')](_0x2216('0x87'),contactItemTypes[_0x2216('0x18')]);var _0x29dd38=util[_0x2216('0xb')](_0x2216('0x88'),_0x2772f7,_0x46da43,_0x19648c,_0x4fe3a0[_0x2216('0x45')],_0x4fe3a0['CompanyId']||null,NOW,NOW);if(_[_0x2216('0x19')](_0x274b87[_0x2216('0x34')])){_0x29dd38+=_0x2216('0x89');}_0x1ed393[_0x2216('0x1b')](_0x29dd38);BPromise[_0x2216('0x8a')](_0x1ed393,handleQuery)[_0x2216('0x1d')](function(_0x3b4529){BPromise['all']([handleAdditionalPhones()])[_0x2216('0x1d')](function(){_0x1ed393=[];for(var _0x1c2999=0x0;_0x1c2999<promisesContact['length'];_0x1c2999++){_0x1ed393[_0x2216('0x1b')](updateContact(promisesContact[_0x1c2999][_0x2216('0x8b')]));}BPromise[_0x2216('0x1c')](_0x1ed393)['then'](function(){_0x1ed393=[];for(var _0x4466fc=0x0;_0x4466fc<promisesAdditionalPhones[_0x2216('0x18')];_0x4466fc++){_0x1ed393[_0x2216('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x4466fc]['contactId'],promisesAdditionalPhones[_0x4466fc][_0x2216('0x8c')],promisesAdditionalPhones[_0x4466fc][_0x2216('0xf')],promisesAdditionalPhones[_0x4466fc][_0x2216('0x8d')]));}BPromise[_0x2216('0x1c')](_0x1ed393)[_0x2216('0x1d')](function(){_0x1ed393=[];_0x1ed393[_0x2216('0x1b')](insertCmHopperAdditionalPhones(_0x4fe3a0[_0x2216('0x45')]));_0x1ed393[_0x2216('0x1b')]('DROP\x20TABLE\x20'+_0x46da43+';');BPromise[_0x2216('0x8a')](_0x1ed393,handleQuery)[_0x2216('0x1d')](function(_0x86787d){stats['finish']=!![];stats[_0x2216('0x8e')]=updatedRows;socket[_0x2216('0x81')](_0x2216('0x82')+_0x27c60e,stats);fs['unlink'](_0x32a8ae);fs[_0x2216('0x8f')](_0x2772f7);process['exit'](0x0);})[_0x2216('0x1e')](function(_0x4d2936){logger[_0x2216('0x1f')](_0x4d2936[_0x2216('0x20')]);process[_0x2216('0x5b')](0x1);});});});});})['catch'](function(_0x16e749){logger[_0x2216('0x1f')](_0x16e749[_0x2216('0x20')]);process[_0x2216('0x5b')](0x1);});}catch(_0x1e8b15){logger[_0x2216('0x1f')](_0x2216('0x90'),_0x1e8b15[_0x2216('0x20')]);process[_0x2216('0x5b')](0x1);}},'error':function(_0x29e3fc,_0x40bc58,_0xcc572a,_0xc13a5a){throw new Error(_0xc13a5a);}});});}function validate(){if(process[_0x2216('0x91')]&&process['argv'][_0x2216('0x18')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x388a08=path['join'](config[_0x2216('0x92')],'server/files/tmp',process[_0x2216('0x91')][0x2]);if(!fs['existsSync'](_0x388a08)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x20f6db={};try{_0x20f6db=JSON[_0x2216('0x93')](process[_0x2216('0x91')][0x3]);if(!_0x20f6db[_0x2216('0x94')]){throw new Error(_0x2216('0x95'));}var _0x41819a=0x0;if(_0x20f6db[_0x2216('0x94')][_0x2216('0x75')]){_0x41819a=0x1;}if(!_0x20f6db['ListId']){throw new Error(_0x2216('0x96'));}}catch(_0x52ec65){throw new Error(_0x2216('0x97'));}var _0x33bf77=[];try{_0x33bf77=_[_0x2216('0x98')](JSON[_0x2216('0x93')](process[_0x2216('0x91')][0x4]),'id');}catch(_0x2e925){logger[_0x2216('0x59')](_0x2216('0x99'));}main(_0x388a08,_0x20f6db,_0x33bf77,_0x41819a);}validate();process['on'](_0x2216('0x9a'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 713906d..62a0c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa05d=['toLowerCase','voice','inbound','push','queue','variable','outbound','Outbound\x20Call','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','Call\x20To','destexten','UniqueId','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','Called\x20Number','membername','uniqueid','Date','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','endtime','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]'];(function(_0x3acc72,_0x34b07b){var _0x95b341=function(_0x1a1923){while(--_0x1a1923){_0x3acc72['push'](_0x3acc72['shift']());}};_0x95b341(++_0x34b07b);}(_0xa05d,0x111));var _0xda05=function(_0xf7dfd8,_0x2c1ef0){_0xf7dfd8=_0xf7dfd8-0x0;var _0x4b3099=_0xa05d[_0xf7dfd8];return _0x4b3099;};'use strict';exports[_0xda05('0x0')]=function(_0x4c23fc,_0x158f3){var _0x2f90e0=[{'type':_0xda05('0x1'),'content':_0xda05('0x2'),'variableName':null}];switch(_0x4c23fc[_0xda05('0x3')]()){case _0xda05('0x4'):switch(_0x158f3[_0xda05('0x3')]()){case _0xda05('0x5'):_0x2f90e0[_0xda05('0x6')]({'type':'variable','content':'','variableName':_0xda05('0x7')});_0x2f90e0[_0xda05('0x6')]({'type':_0xda05('0x8'),'content':'','variableName':'calleridnum'});break;case _0xda05('0x9'):_0x2f90e0[_0xda05('0x6')]({'type':_0xda05('0x1'),'content':_0xda05('0xa'),'variableName':null});_0x2f90e0[_0xda05('0x6')]({'type':_0xda05('0x8'),'content':'','variableName':'destcalleridnum'});break;}}return _0x2f90e0;};exports[_0xda05('0xb')]=function(_0x4e75ed,_0x4a3bfd){var _0x31ce16=[];switch(_0x4e75ed[_0xda05('0x3')]()){case _0xda05('0x4'):switch(_0x4a3bfd[_0xda05('0x3')]()){case _0xda05('0x5'):_0x31ce16=[{'type':_0xda05('0x1'),'content':_0xda05('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0xe'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0xf')},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x10'),'keyType':'variable','variableName':_0xda05('0x11')},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x12'),'keyType':'variable','variableName':_0xda05('0x13')},{'type':_0xda05('0xd'),'content':'','key':'Queue','keyType':_0xda05('0x8'),'variableName':'queue'},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x14'),'keyType':'variable','variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':'variable','variableName':_0xda05('0x15')},{'type':_0xda05('0x1'),'content':_0xda05('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x17'),'keyType':'variable','variableName':_0xda05('0x18')},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x19'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0x1a')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x1b'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0x15')},{'type':'keyValue','content':'','key':_0xda05('0x1c'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0x1d')},{'type':'keyValue','content':'','key':_0xda05('0x1e'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0x1f')},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x20'),'keyType':_0xda05('0x8'),'variableName':_0xda05('0x21')},{'type':_0xda05('0xd'),'content':'','key':'Talk\x20Time','keyType':_0xda05('0x8'),'variableName':_0xda05('0x22')}];break;case _0xda05('0x9'):_0x31ce16=[{'type':'string','content':_0xda05('0xc'),'variableName':null},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x23'),'keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x1a')},{'type':_0xda05('0xd'),'content':'','key':'Member\x20Name','keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x24')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x25')},{'type':'keyValue','content':'','key':_0xda05('0x26'),'keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x27')},{'type':_0xda05('0x1'),'content':_0xda05('0x28')},{'type':_0xda05('0xd'),'content':'','key':_0xda05('0x29'),'keyType':'variable','keyContent':'','variableName':_0xda05('0x2a')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x2b')},{'type':'keyValue','content':'','key':'Duration','keyType':_0xda05('0x8'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0xda05('0x2c'),'keyType':_0xda05('0x8'),'keyContent':'','variableName':_0xda05('0x2d')}];break;}}return _0x31ce16;};
\ No newline at end of file
+var _0x6a7e=['duration','Billable\x20Time','getSubjects','[xCALLY\x20Ticket]','toLowerCase','push','variable','queue','calleridnum','outbound','string','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','destexten','Queue','UniqueId','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','membername','Date','answertime','Complete\x20Time','endtime','Duration'];(function(_0x490fc5,_0x5279bd){var _0x18f95c=function(_0x4dd28a){while(--_0x4dd28a){_0x490fc5['push'](_0x490fc5['shift']());}};_0x18f95c(++_0x5279bd);}(_0x6a7e,0x11a));var _0xe6a7=function(_0x4e39c2,_0x50c36e){_0x4e39c2=_0x4e39c2-0x0;var _0x2c9c76=_0x6a7e[_0x4e39c2];return _0x2c9c76;};'use strict';exports[_0xe6a7('0x0')]=function(_0x495a42,_0x24b7b9){var _0x23ed11=[{'type':'string','content':_0xe6a7('0x1'),'variableName':null}];switch(_0x495a42['toLowerCase']()){case'voice':switch(_0x24b7b9[_0xe6a7('0x2')]()){case'inbound':_0x23ed11[_0xe6a7('0x3')]({'type':_0xe6a7('0x4'),'content':'','variableName':_0xe6a7('0x5')});_0x23ed11['push']({'type':_0xe6a7('0x4'),'content':'','variableName':_0xe6a7('0x6')});break;case _0xe6a7('0x7'):_0x23ed11[_0xe6a7('0x3')]({'type':_0xe6a7('0x8'),'content':'Outbound\x20Call','variableName':null});_0x23ed11[_0xe6a7('0x3')]({'type':_0xe6a7('0x4'),'content':'','variableName':_0xe6a7('0x9')});break;}}return _0x23ed11;};exports[_0xe6a7('0xa')]=function(_0x2062c6,_0x34b40c){var _0x3996e8=[];switch(_0x2062c6[_0xe6a7('0x2')]()){case'voice':switch(_0x34b40c[_0xe6a7('0x2')]()){case'inbound':_0x3996e8=[{'type':'string','content':_0xe6a7('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xe6a7('0xc'),'content':'','key':'Caller\x20Number','keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x6')},{'type':'keyValue','content':'','key':_0xe6a7('0xd'),'keyType':'variable','variableName':_0xe6a7('0xe')},{'type':_0xe6a7('0xc'),'content':'','key':'Call\x20To','keyType':'variable','variableName':_0xe6a7('0xf')},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x10'),'keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x5')},{'type':'keyValue','content':'','key':_0xe6a7('0x11'),'keyType':_0xe6a7('0x4'),'variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x12')},{'type':_0xe6a7('0x8'),'content':_0xe6a7('0x13'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xe6a7('0x14'),'keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x15')},{'type':_0xe6a7('0xc'),'content':'','key':'Agent\x20Number','keyType':'variable','variableName':_0xe6a7('0x9')},{'type':_0xe6a7('0x8'),'content':_0xe6a7('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x17'),'keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x12')},{'type':_0xe6a7('0xc'),'content':'','key':'Agent\x20Connect','keyType':'variable','variableName':_0xe6a7('0x18')},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x19'),'keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x1a')},{'type':'keyValue','content':'','key':_0xe6a7('0x1b'),'keyType':_0xe6a7('0x4'),'variableName':_0xe6a7('0x1c')},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x1d'),'keyType':'variable','variableName':_0xe6a7('0x1e')}];break;case _0xe6a7('0x7'):_0x3996e8=[{'type':_0xe6a7('0x8'),'content':_0xe6a7('0xb'),'variableName':null},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x1f'),'keyType':'variable','keyContent':'','variableName':_0xe6a7('0x9')},{'type':'keyValue','content':'','key':'Member\x20Name','keyType':_0xe6a7('0x4'),'keyContent':'','variableName':_0xe6a7('0x20')},{'type':'keyValue','content':'','key':_0xe6a7('0x11'),'keyType':'variable','keyContent':'','variableName':'uniqueid'},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x21'),'keyType':_0xe6a7('0x4'),'keyContent':'','variableName':'starttime'},{'type':'string','content':_0xe6a7('0x16')},{'type':_0xe6a7('0xc'),'content':'','key':'Answer\x20Time','keyType':_0xe6a7('0x4'),'keyContent':'','variableName':_0xe6a7('0x22')},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x23'),'keyType':'variable','keyContent':'','variableName':_0xe6a7('0x24')},{'type':'keyValue','content':'','key':_0xe6a7('0x25'),'keyType':_0xe6a7('0x4'),'keyContent':'','variableName':_0xe6a7('0x26')},{'type':_0xe6a7('0xc'),'content':'','key':_0xe6a7('0x27'),'keyType':_0xe6a7('0x4'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x3996e8;};
\ No newline at end of file
index 20c459d..df7282a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14a=['ids','tag','count','length','clause','order','contactName','DESC','closed','getFilteredInteractions','rows','catch','tracked','user','query','clone','omit','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','search','parseAdvancedSearchFilter','parseQueryParameters','then','where','body','default','fields','filter','having','tags','checkAccountsRestrictions','i.id'];(function(_0x1aefb3,_0x47f557){var _0x13c30d=function(_0x109131){while(--_0x109131){_0x1aefb3['push'](_0x1aefb3['shift']());}};_0x13c30d(++_0x47f557);}(_0xe14a,0x90));var _0xae14=function(_0x330ffc,_0x1e516d){_0x330ffc=_0x330ffc-0x0;var _0x3b6d0f=_0xe14a[_0x330ffc];return _0x3b6d0f;};'use strict';var _=require(_0xae14('0x0'));var sqlUtils=require(_0xae14('0x1'));var utils=require(_0xae14('0x2'));exports[_0xae14('0x3')]=function(_0x5e8196,_0x2d0eab,_0x5ee00f,_0x4eb160,_0x18c20b){var _0x2e3008={'count':0x0,'rows':[]};var _0x244531=sqlUtils[_0xae14('0x4')](_0x5e8196,_0x5ee00f,_0x2d0eab);if(_0x244531){return Promise[_0xae14('0x5')](_0x2e3008);}var _0x49495d=sqlUtils[_0xae14('0x6')](_0x5e8196);var _0x35ea62={};return Promise[_0xae14('0x5')]()['then'](function(){if(_0x2d0eab[_0xae14('0x7')]){return sqlUtils[_0xae14('0x8')](_0x2d0eab[_0xae14('0x7')],_0x18c20b);}else{return sqlUtils[_0xae14('0x9')](_0x5e8196,_0x2d0eab,_0x18c20b);}})[_0xae14('0xa')](function(_0x26ce59){_0x49495d[_0xae14('0xb')](_0x26ce59[_0xae14('0xc')]);_0x49495d[_0xae14('0xb')](_0x26ce59['contact']);_0x49495d[_0xae14('0xb')](_0x26ce59[_0xae14('0xd')]);_0x49495d['where'](_0x26ce59[_0xae14('0xe')]);_0x49495d[_0xae14('0xb')](_0x26ce59[_0xae14('0xf')]);_0x49495d['where'](_0x26ce59['user']);_0x49495d[_0xae14('0x10')](_0x26ce59['read']);_0x35ea62=_0x26ce59[_0xae14('0x11')];return sqlUtils[_0xae14('0x12')](_0x5e8196,_0x5ee00f,_0x2d0eab);})[_0xae14('0xa')](function(_0x145c1f){_0x49495d[_0xae14('0xb')](_0x145c1f);_0x49495d['group'](_0xae14('0x13'));var _0x12a5b9=_0x2d0eab[_0xae14('0x7')]?_0x35ea62[_0xae14('0x14')]:_0x2d0eab[_0xae14('0x15')];return sqlUtils['countFilteredInteractions'](_0x49495d,_0x12a5b9);})['then'](function(_0xb47d11){_0x2e3008[_0xae14('0x16')]=_0xb47d11[_0xae14('0x17')];if(_0x2e3008[_0xae14('0x16')]===0x0){return[];}_0x49495d[_0xae14('0x10')](_0x35ea62[_0xae14('0x18')]);if(_0x4eb160[_0xae14('0x19')]){_0x4eb160[_0xae14('0x19')]['forEach'](function(_0x348271){var _0x9a696b=_0x348271[0x0]===_0xae14('0x1a')?_0x348271[0x0]:'i.'+_0x348271[0x0];_0x49495d[_0xae14('0x19')](_0x9a696b,_0x348271[0x1]===_0xae14('0x1b')?![]:!![]);if(_0x348271[0x0]===_0xae14('0x1c')){var _0x369867=sqlUtils['getClosedOrderClause'](_0x5e8196,_0x2d0eab);_0x49495d[_0xae14('0x19')](_0x369867,_0x348271[0x1]===_0xae14('0x1b')?![]:!![]);}});}return sqlUtils[_0xae14('0x1d')](_0x5e8196,_0x49495d,_0x2d0eab,_0x4eb160);})[_0xae14('0xa')](function(_0x165d48){_0x2e3008[_0xae14('0x1e')]=_0x165d48;return _0x2e3008;})[_0xae14('0x1f')](function(_0xe1ab23){throw _0xe1ab23;});};exports[_0xae14('0x20')]=function(_0x4a4351,_0x58651d){return function(_0x38adfb,_0x5e88ea,_0x24dbf3){var _0x55c46d=_0x38adfb[_0xae14('0x21')];var _0x1f22d2={};var _0x37c43b=_0x38adfb[_0xae14('0x22')];if(_0x1f22d2){_0x1f22d2=_[_0xae14('0x23')](_0x38adfb[_0xae14('0xc')]);_0x1f22d2=_[_0xae14('0x24')](_0x1f22d2,[_0xae14('0xc'),'html',_0xae14('0x25'),_0xae14('0x26'),_0xae14('0x27')]);}utils[_0xae14('0x28')](_0x55c46d,_0x1f22d2,_0x37c43b,_0x4a4351,_0x58651d);_0x24dbf3(null);};};
\ No newline at end of file
+var _0xc235=['contactName','closed','getClosedOrderClause','DESC','getFilteredInteractions','rows','catch','tracked','query','omit','body','phone','fax','updateUser','lodash','./sql-utils','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','fields','filter','user','having','tags','group','i.id','ids','countFilteredInteractions','count','order','forEach'];(function(_0x4c0bf8,_0x3a3f01){var _0x4946e9=function(_0x1e2312){while(--_0x1e2312){_0x4c0bf8['push'](_0x4c0bf8['shift']());}};_0x4946e9(++_0x3a3f01);}(_0xc235,0x10a));var _0x5c23=function(_0x3132e8,_0x499a0e){_0x3132e8=_0x3132e8-0x0;var _0x43eb8c=_0xc235[_0x3132e8];return _0x43eb8c;};'use strict';var _=require(_0x5c23('0x0'));var sqlUtils=require(_0x5c23('0x1'));var utils=require('./utils');exports['findAll']=function(_0x2e6776,_0x5e085b,_0x318b46,_0x17dc90,_0x57ad05){var _0x5c7a4a={'count':0x0,'rows':[]};var _0x211f81=sqlUtils[_0x5c23('0x2')](_0x2e6776,_0x318b46,_0x5e085b);if(_0x211f81){return Promise[_0x5c23('0x3')](_0x5c7a4a);}var _0x5546f4=sqlUtils[_0x5c23('0x4')](_0x2e6776);var _0x3828f9={};return Promise[_0x5c23('0x3')]()[_0x5c23('0x5')](function(){if(_0x5e085b[_0x5c23('0x6')]){return sqlUtils[_0x5c23('0x7')](_0x5e085b['search'],_0x57ad05);}else{return sqlUtils[_0x5c23('0x8')](_0x2e6776,_0x5e085b,_0x57ad05);}})[_0x5c23('0x5')](function(_0x21bf95){_0x5546f4[_0x5c23('0x9')](_0x21bf95['body']);_0x5546f4[_0x5c23('0x9')](_0x21bf95['contact']);_0x5546f4[_0x5c23('0x9')](_0x21bf95['default']);_0x5546f4['where'](_0x21bf95[_0x5c23('0xa')]);_0x5546f4[_0x5c23('0x9')](_0x21bf95[_0x5c23('0xb')]);_0x5546f4[_0x5c23('0x9')](_0x21bf95[_0x5c23('0xc')]);_0x5546f4[_0x5c23('0xd')](_0x21bf95['read']);_0x3828f9=_0x21bf95[_0x5c23('0xe')];return sqlUtils['checkAccountsRestrictions'](_0x2e6776,_0x318b46,_0x5e085b);})[_0x5c23('0x5')](function(_0x47f86f){_0x5546f4[_0x5c23('0x9')](_0x47f86f);_0x5546f4[_0x5c23('0xf')](_0x5c23('0x10'));var _0x4e51f4=_0x5e085b[_0x5c23('0x6')]?_0x3828f9[_0x5c23('0x11')]:_0x5e085b['tag'];return sqlUtils[_0x5c23('0x12')](_0x5546f4,_0x4e51f4);})[_0x5c23('0x5')](function(_0x3ddec6){_0x5c7a4a[_0x5c23('0x13')]=_0x3ddec6['length'];if(_0x5c7a4a[_0x5c23('0x13')]===0x0){return[];}_0x5546f4[_0x5c23('0xd')](_0x3828f9['clause']);if(_0x17dc90['order']){_0x17dc90[_0x5c23('0x14')][_0x5c23('0x15')](function(_0x5e6899){var _0x4b0061=_0x5e6899[0x0]===_0x5c23('0x16')?_0x5e6899[0x0]:'i.'+_0x5e6899[0x0];_0x5546f4['order'](_0x4b0061,_0x5e6899[0x1]==='DESC'?![]:!![]);if(_0x5e6899[0x0]===_0x5c23('0x17')){var _0x41b4cf=sqlUtils[_0x5c23('0x18')](_0x2e6776,_0x5e085b);_0x5546f4[_0x5c23('0x14')](_0x41b4cf,_0x5e6899[0x1]===_0x5c23('0x19')?![]:!![]);}});}return sqlUtils[_0x5c23('0x1a')](_0x2e6776,_0x5546f4,_0x5e085b,_0x17dc90);})[_0x5c23('0x5')](function(_0x4d6165){_0x5c7a4a[_0x5c23('0x1b')]=_0x4d6165;return _0x5c7a4a;})[_0x5c23('0x1c')](function(_0x197691){throw _0x197691;});};exports[_0x5c23('0x1d')]=function(_0x4bcb78,_0x32000d){return function(_0x232760,_0x5e75a6,_0x3ee389){var _0x3158ca=_0x232760[_0x5c23('0xc')];var _0x1189f7={};var _0x131117=_0x232760[_0x5c23('0x1e')];if(_0x1189f7){_0x1189f7=_['clone'](_0x232760['body']);_0x1189f7=_[_0x5c23('0x1f')](_0x1189f7,[_0x5c23('0x20'),'html',_0x5c23('0x21'),_0x5c23('0x22'),'mobile']);}utils[_0x5c23('0x23')](_0x3158ca,_0x1189f7,_0x131117,_0x4bcb78,_0x32000d);_0x3ee389(null);};};
\ No newline at end of file
index ccdd078..f741e28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c02=['accounts','a.id\x20=\x20i.','messages','me.','interactionsTags','it.','\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','openchannel','i.from\x20LIKE\x20?','mail','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','find','buildExpression','default','value','start','end','unreadMessages','read','and','Contact','operator','$substring','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','Tag','split','tags','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','body','some','compact','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','then','tag','filter','get','capitalize','chat','Websites','Accounts','resolve','search','agent','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','Sequelize','QueryTypes','sequelize','query','toString','merge','fields','attributes','Account.mandatoryDisposition','a.email','Account.email','contactName','i.id','i.updatedAt','i.closed','i.attach','i.subject','i.to','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','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','Setting','enableEmailPreview','clone','SELECT','exports','squel','../parsers/advancedSearch','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','field','name','color','from','user_has_','_interactions','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','select','interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var squel=require(_0x20c0('0x0'));var as=require(_0x20c0('0x1'));var qs=require('../parsers/qs');var updateInteraction=require(_0x20c0('0x2'))[_0x20c0('0x3')];var utils=require(_0x20c0('0x4'));var db=require(_0x20c0('0x5'))['db'];function skipInteractionsQuery(_0x38022e,_0x2e9d65,_0x2afa72){var _0x1474f7=![];var _0x13312d=utils[_0x20c0('0x6')](_0x38022e);if(_0x2e9d65['role']==='agent'&&!_0x2afa72['search']&&!_0x2afa72[_0x13312d]){_0x1474f7=!![];}return _0x1474f7;}function getTagsQuery(){return squel['select']()[_0x20c0('0x7')]('id')[_0x20c0('0x7')](_0x20c0('0x8'))[_0x20c0('0x7')](_0x20c0('0x9'))[_0x20c0('0xa')]('tools_tags');}function getUsersQuery(_0x506a6c,_0x52eb0d){var _0x578592=utils['getInteractionFK'](_0x506a6c);var _0x2f82ed=_0x20c0('0xb')+_0x506a6c+_0x20c0('0xc');var _0x207b1e=squel['select']()[_0x20c0('0x7')]('u.id')['field'](_0x20c0('0xd'))[_0x20c0('0x7')](_0x20c0('0xe')+_0x578592)[_0x20c0('0xa')](_0x2f82ed,'ui')[_0x20c0('0xf')](_0x20c0('0x10'),'u',_0x20c0('0x11'));if(_0x52eb0d[_0x20c0('0x12')]>0x0){_0x207b1e[_0x20c0('0x13')]('ui.'+_0x578592+_0x20c0('0x14'),_[_0x20c0('0x15')](_0x52eb0d,'id'));}return _0x207b1e;}function getInteractionsQuery(_0x1a708e){var _0x46b9e5=utils[_0x20c0('0x16')](_0x1a708e);var _0xeff5b9=utils['getAccountFK'](_0x1a708e);var _0x55de3b=utils['getInteractionFK'](_0x1a708e);return squel[_0x20c0('0x17')]()[_0x20c0('0xa')](_0x46b9e5[_0x20c0('0x18')],'i')[_0x20c0('0xf')]('cm_contacts','c',_0x20c0('0x19'))[_0x20c0('0xf')](_0x20c0('0x10'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x46b9e5[_0x20c0('0x1a')],'a',_0x20c0('0x1b')+_0xeff5b9)[_0x20c0('0xf')](_0x46b9e5[_0x20c0('0x1c')],'me',_0x20c0('0x1d')+_0x55de3b+'\x20=\x20i.id')[_0x20c0('0xf')](_0x46b9e5[_0x20c0('0x1e')],'it',_0x20c0('0x1f')+_0x55de3b+_0x20c0('0x20'))['left_join'](_0x20c0('0x21'),'t',_0x20c0('0x22'));}function getSqlClauses(){var _0x2447e6={'body':squel[_0x20c0('0x23')](),'contact':squel[_0x20c0('0x23')](),'default':squel[_0x20c0('0x23')](),'fields':squel[_0x20c0('0x23')](),'filter':squel['expr'](),'read':squel[_0x20c0('0x23')](),'tags':{'clause':squel[_0x20c0('0x23')](),'ids':null},'user':squel[_0x20c0('0x23')]()};return _0x2447e6;}function parseTagParameter(_0x31565b){var _0x11da5a=squel[_0x20c0('0x23')]();if(_0x31565b){var _0x55684b=utils['getSelectedTags'](_0x31565b);_0x55684b[_0x20c0('0x24')](function(_0x198bdd){_0x11da5a['or'](_0x20c0('0x25'),'%,'+_0x198bdd+',%');});}return _0x11da5a;}function parseReadParameter(_0x5b863b){var _0xa24196='';if(_0x5b863b){_0xa24196=_0x20c0('0x26');if(_0x5b863b==='1'){_0xa24196=_0xa24196[_0x20c0('0x27')](_0x20c0('0x28'),'=');}else{_0xa24196=_0xa24196['replace']('{OPERATOR}','>');}}return _0xa24196;}function parseSearchFilter(_0x29d8ee,_0x11f405){var _0x3edc22=squel[_0x20c0('0x23')]();if(_0x11f405){var _0x3055e9=_0x11f405[_0x20c0('0x27')]('\x5c','\x5c\x5c')[_0x20c0('0x27')](/'/g,'\x27\x27');if(qs[_0x20c0('0x29')](_0x3055e9)){_0x3edc22['or'](_0x20c0('0x2a'),_0x3055e9+'%');if([_0x20c0('0x2b'),_0x20c0('0x2c')][_0x20c0('0x2d')](_0x29d8ee)){_0x3edc22['or'](_0x20c0('0x2e'),_0x3055e9+'%');}else if(_0x29d8ee===_0x20c0('0x2f')){_0x3edc22['or']('i.fax\x20LIKE\x20?',_0x3055e9+'%');}else if(_0x29d8ee===_0x20c0('0x30')){_0x3edc22['or'](_0x20c0('0x31'),_0x3055e9+'%');}}else if(_0x29d8ee===_0x20c0('0x32')&&qs[_0x20c0('0x33')](_0x3055e9)){_0x3edc22['or']('c.email\x20LIKE\x20?',_0x3055e9+'%');}else{if(_0x29d8ee===_0x20c0('0x32')){_0x3edc22['or'](_0x20c0('0x34'),qs[_0x20c0('0x35')](_0x3055e9))['or'](_0x20c0('0x36'),qs[_0x20c0('0x35')](_0x3055e9));}else{if(_0x29d8ee!=='fax'){_0x3edc22['or'](_0x20c0('0x37'),qs['getFullTextValue'](_0x3055e9));}_0x3edc22['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3055e9+'%');}}}return _0x3edc22;}function parseAdvancedSearchFilter(_0x394e6f,_0x1b1b31){var _0x3b334a=getSqlClauses();var _0x37714d=as[_0x20c0('0x38')](_0x394e6f);var _0x39fd84=_0x37714d[_0x20c0('0x39')];for(var _0x4c8400=0x0;_0x4c8400<_0x37714d['conditions']['length'];_0x4c8400++){var _0x129eb5=_0x37714d[_0x20c0('0x3a')][_0x4c8400];var _0x545b39='i';var _0x346a04=_[_0x20c0('0x3b')](_0x1b1b31,['name',_0x129eb5['field']]);if(_0x346a04){var _0x700675=as[_0x20c0('0x3c')](_0x545b39,_0x346a04['type'],_0x129eb5);_0x3b334a[_0x20c0('0x3d')][_0x39fd84](_0x700675['text'],_0x700675[_0x20c0('0x3e')][_0x20c0('0x3f')],_0x700675[_0x20c0('0x3e')][_0x20c0('0x40')]);}else{switch(_0x129eb5['field']){case _0x20c0('0x41'):var _0x1f7a34=parseReadParameter(_0x129eb5[_0x20c0('0x3e')]);_0x3b334a[_0x20c0('0x42')][_0x20c0('0x43')](_0x1f7a34);break;case _0x20c0('0x44'):if(_0x129eb5[_0x20c0('0x45')]===_0x20c0('0x46')){if(_0x129eb5['value']['split']('\x20')['length']>0x1){_0x3b334a[_0x20c0('0x47')][_0x39fd84]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x20c0('0x35')](_0x129eb5[_0x20c0('0x3e')]),null);}else{var _0x88863='%'+_0x129eb5[_0x20c0('0x3e')]+'%';_0x3b334a['contact'][_0x39fd84](_0x20c0('0x48'),_0x88863,_0x88863,_0x88863);}}else{_0x346a04=_['find'](_0x1b1b31,['name',_0x20c0('0x49')]);_0x129eb5[_0x20c0('0x7')]=_0x20c0('0x49');_0x700675=as[_0x20c0('0x3c')](_0x545b39,_0x346a04['type'],_0x129eb5);_0x3b334a[_0x20c0('0x47')][_0x39fd84](_0x700675[_0x20c0('0x4a')],_0x700675[_0x20c0('0x3e')][_0x20c0('0x3f')],_0x700675['value'][_0x20c0('0x40')]);}break;case _0x20c0('0x4b'):var _0x5a924e=_0x129eb5[_0x20c0('0x3e')][_0x20c0('0x4c')](',')[_0x20c0('0x15')](function(_0x527f6f){return Number(_0x527f6f);});var _0x399514=parseTagParameter(_0x5a924e);_0x3b334a['tags']['clause']['and'](_0x399514);_0x3b334a[_0x20c0('0x4d')]['ids']=_0x5a924e;break;case _0x20c0('0x4e'):if(_0x129eb5[_0x20c0('0x45')]===_0x20c0('0x46')){_0x3b334a[_0x20c0('0x4f')][_0x39fd84](_0x20c0('0x50'),'%'+_0x129eb5[_0x20c0('0x3e')]+'%',null);}else{_0x346a04=_[_0x20c0('0x3b')](_0x1b1b31,['name',_0x20c0('0x51')]);_0x129eb5[_0x20c0('0x7')]=_0x20c0('0x51');_0x700675=as[_0x20c0('0x3c')](_0x545b39,_0x346a04[_0x20c0('0x52')],_0x129eb5);_0x3b334a[_0x20c0('0x4f')][_0x39fd84](_0x700675['text'],_0x700675['value'][_0x20c0('0x3f')],_0x700675[_0x20c0('0x3e')][_0x20c0('0x40')]);}break;case'body':case'plainBody':_0x700675=as[_0x20c0('0x3c')]('me',null,_0x129eb5);_0x3b334a[_0x20c0('0x53')][_0x39fd84](_0x700675[_0x20c0('0x4a')],_0x700675['value'][_0x20c0('0x3f')],_0x700675[_0x20c0('0x3e')]['end']);break;}}}return _0x3b334a;}function parseModelFields(_0x4972a3,_0x3fb4f1,_0x5b314b){var _0xdd2a3b=utils['getAccountFK'](_0x4972a3);var _0x1b25d6=squel[_0x20c0('0x23')]();var _0x5dd76d=_(_0x3fb4f1)['keys']()[_0x20c0('0x15')](function(_0x149376){return _[_0x20c0('0x54')](_0x5b314b,[_0x20c0('0x8'),_0x149376])?_0x149376:undefined;})[_0x20c0('0x55')]()[_0x20c0('0x3e')]();if(_0x5dd76d[_0x20c0('0x12')]>0x0){_0x5dd76d[_0x20c0('0x24')](function(_0x5cccbf){if(_0x5cccbf===_0xdd2a3b){_0x1b25d6[_0x20c0('0x43')]('i.'+_0xdd2a3b+_0x20c0('0x14'),[][_0x20c0('0x56')](_0x3fb4f1[_0x5cccbf]));}else if(_0x5cccbf===_0x20c0('0x57')){var _0x2c3404=JSON['parse'](_0x3fb4f1[_0x5cccbf])['$gte'];var _0x3cff12=JSON[_0x20c0('0x58')](_0x3fb4f1[_0x5cccbf])[_0x20c0('0x59')];_0x1b25d6[_0x20c0('0x43')](_0x20c0('0x5a'),_0x2c3404,_0x3cff12);}else{if(_0x3fb4f1[_0x5cccbf]===_0x20c0('0x5b')){_0x1b25d6[_0x20c0('0x43')]('i.'+_0x5cccbf+'\x20IS\x20NULL');}else{_0x1b25d6['and']('i.'+_0x5cccbf+_0x20c0('0x5c'),_0x3fb4f1[_0x5cccbf]);}}});}return _0x1b25d6;}function parseQueryParameters(_0x1933e6,_0x10e51f,_0x4b5810){var _0xff6ea=getSqlClauses();return Promise['resolve']()[_0x20c0('0x5d')](function(){return parseModelFields(_0x1933e6,_0x10e51f,_0x4b5810);})[_0x20c0('0x5d')](function(_0x76a8a2){_0xff6ea['fields'][_0x20c0('0x43')](_0x76a8a2);return parseReadParameter(_0x10e51f[_0x20c0('0x42')]);})[_0x20c0('0x5d')](function(_0x490936){_0xff6ea[_0x20c0('0x42')]['and'](_0x490936);return parseTagParameter(_0x10e51f[_0x20c0('0x5e')]);})[_0x20c0('0x5d')](function(_0x10c8c1){_0xff6ea[_0x20c0('0x4d')]['clause'][_0x20c0('0x43')](_0x10c8c1);return parseSearchFilter(_0x1933e6,_0x10e51f['filter']);})[_0x20c0('0x5d')](function(_0x5d40c9){_0xff6ea[_0x20c0('0x5f')]=_0x5d40c9;return _0xff6ea;});}function checkAccountsRestrictions(_0x2e64f5,_0x2cf512,_0x332d83){var _0x54bb05=utils[_0x20c0('0x6')](_0x2e64f5);var _0xcd87e8=_0x20c0('0x60')+_[_0x20c0('0x61')](_0x2e64f5)+(_0x2e64f5===_0x20c0('0x62')?_0x20c0('0x63'):_0x20c0('0x64'));var _0x166dbd=squel['expr']();return Promise[_0x20c0('0x65')]()[_0x20c0('0x5d')](function(){if(_0x332d83[_0x20c0('0x66')]&&_0x2cf512['role']===_0x20c0('0x67')){return _0x2cf512[_0xcd87e8]({'attributes':['id'],'raw':!![]});}})[_0x20c0('0x5d')](function(_0x57ca28){if(_0x57ca28){if(_0x57ca28[_0x20c0('0x12')]===0x0){_0x166dbd['and']('i.'+_0x54bb05+'\x20IS\x20NULL');}else{_0x166dbd['and']('i.'+_0x54bb05+'\x20IN\x20?',_[_0x20c0('0x15')](_0x57ca28,'id'));}}else if(!_0x332d83[_0x54bb05]){_0x166dbd[_0x20c0('0x43')]('i.'+_0x54bb05+_0x20c0('0x68'));}})[_0x20c0('0x5d')](function(){return _0x166dbd;});}function getClosedOrderClause(_0x353e1b,_0xc34e9f){var _0x1f16e6='';var _0x247dee=[_0x20c0('0x69'),'i.secondDisposition',_0x20c0('0x6a')];if(_0x353e1b===_0x20c0('0x32')){_0x247dee[_0x20c0('0x6b')](_0x20c0('0x6c'));}if(_0xc34e9f[_0x20c0('0x6d')]==='0'&&_0x353e1b===_0x20c0('0x32')){_0x1f16e6=_0x20c0('0x6c');}else{if(_0xc34e9f[_0x20c0('0x6d')]==='1'){_0x247dee[_0x20c0('0x6e')]();}_0x1f16e6=_0x20c0('0x6f')+_0x247dee['join'](',\x20')+')';}return _0x1f16e6;}function getFilteredInteractions(_0x8146da,_0x32f975,_0x1ae801,_0x11511c){var _0x5a1f33=utils['getInteractionFK'](_0x8146da);var _0x9c0b80=_[_0x20c0('0x61')](_0x8146da)+'Interaction';var _0x2222eb=[];var _0x4bc360=getTagsQuery();var _0x12080a={'type':db[_0x20c0('0x70')][_0x20c0('0x71')]['SELECT'],'raw':!![]};var _0x59c854=[];var _0x113725=[];return db[_0x20c0('0x72')][_0x20c0('0x73')](_0x4bc360[_0x20c0('0x74')](),_0x12080a)['then'](function(_0x526bdb){_0x2222eb=_['keyBy'](_0x526bdb,'id');_0x12080a=_[_0x20c0('0x75')](_0x12080a,{'model':db[_0x9c0b80],'mapToModel':!![],'nest':!![]});if(_0x1ae801[_0x20c0('0x76')]){_0x11511c[_0x20c0('0x77')]['forEach'](function(_0x47b241){_0x32f975[_0x20c0('0x7')]('i.'+_0x47b241);});}else{_0x32f975[_0x20c0('0x7')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x20c0('0x41'));_0x32f975['field']('a.key','Account.key');_0x32f975[_0x20c0('0x7')]('a.mandatoryDisposition',_0x20c0('0x78'));if(_0x8146da==='mail'){_0x32f975[_0x20c0('0x7')](_0x20c0('0x79'),_0x20c0('0x7a'));_0x32f975['field']('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',_0x20c0('0x7b'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x7c'));_0x32f975[_0x20c0('0x7')]('i.createdAt');_0x32f975['field'](_0x20c0('0x7d'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x7e'));_0x32f975[_0x20c0('0x7')]('i.closedAt');_0x32f975[_0x20c0('0x7')](_0x20c0('0x7f'));_0x32f975[_0x20c0('0x7')]('i.lastMsgAt');_0x32f975['field']('i.lastMsgDirection');_0x32f975[_0x20c0('0x7')](_0x20c0('0x80'));_0x32f975['field']('i.disposition');_0x32f975[_0x20c0('0x7')]('i.secondDisposition');_0x32f975['field'](_0x20c0('0x69'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x6c'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x81'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x82'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x83'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x84'));}else if(_0x8146da==='openchannel'){_0x32f975[_0x20c0('0x7')](_0x20c0('0x85'),_0x20c0('0x7b'));}else{_0x32f975[_0x20c0('0x7')]('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',_0x20c0('0x7b'));}if(_0x8146da!==_0x20c0('0x32')){_0x32f975[_0x20c0('0x7')](_0x20c0('0x86'));}_0x32f975[_0x20c0('0x7')](_0x20c0('0x87'),_0x20c0('0x88'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x89'),_0x20c0('0x8a'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x8b'),_0x20c0('0x8c'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x8d'),_0x20c0('0x8e'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x8f'),_0x20c0('0x90'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x91'),'Contact.fax');_0x32f975['field'](_0x20c0('0x92'),_0x20c0('0x93'));_0x32f975[_0x20c0('0x7')](_0x20c0('0x94'),'Owner.internal');_0x32f975[_0x20c0('0x7')](_0x20c0('0x95'),_0x20c0('0x96'));}if(_0x11511c['limit']){_0x32f975['limit'](_0x11511c[_0x20c0('0x97')]);}if(_0x11511c[_0x20c0('0x98')]){_0x32f975[_0x20c0('0x98')](_0x11511c[_0x20c0('0x98')]);}return db['sequelize']['query'](_0x32f975[_0x20c0('0x74')](),_0x12080a);})[_0x20c0('0x5d')](function(_0xb4c454){_0x59c854=_0xb4c454;var _0x3558af=getUsersQuery(_0x8146da,_0x59c854);return db[_0x20c0('0x72')][_0x20c0('0x73')](_0x3558af['toString'](),_0x12080a);})[_0x20c0('0x5d')](function(_0xf0b82d){_0x113725=_['groupBy'](_0xf0b82d,_0x5a1f33);if(_0x8146da==='mail'){return db[_0x20c0('0x99')]['findOne']({'attributes':[_0x20c0('0x9a')],'raw':!![]});}})[_0x20c0('0x5d')](function(_0x2c6b6b){var _0x3e55b9=_0x2c6b6b?_0x2c6b6b[_0x20c0('0x9a')]:undefined;var _0x415137=_0x59c854[_0x20c0('0x15')](function(_0x2870dd){return updateInteraction(_0x2870dd,_0x2222eb,_0x113725,_0x3e55b9);});return Promise['all'](_0x415137);});}function countFilteredInteractions(_0x13ee2d,_0x1aa1b4){var _0x29c9a1=_0x13ee2d[_0x20c0('0x9b')]();_0x29c9a1['field']('COUNT(*)');_0x29c9a1['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x20c0('0x41'));var _0x13c005=utils['getSelectedTags'](_0x1aa1b4);if(!_['isEmpty'](_0x13c005)){_0x29c9a1[_0x20c0('0x13')]('t.id\x20IN\x20?',_0x13c005);}var _0x5b853e={'type':db[_0x20c0('0x70')][_0x20c0('0x71')][_0x20c0('0x9c')],'raw':!![]};return db[_0x20c0('0x72')][_0x20c0('0x73')](_0x29c9a1['toString'](),_0x5b853e);}module[_0x20c0('0x9d')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xb43b=['GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','query','groupBy','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','isEmpty','t.id\x20IN\x20?','exports','lodash','../parsers/advancedSearch','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','role','select','field','name','from','tools_tags','getInteractionFK','u.id','u.fullname','ui.','left_join','u.id\x20=\x20ui.UserId','where','\x20IN\x20?','map','getInteractionsTables','getAccountFK','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','interactionsTags','it.','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','{OPERATOR}','replace','isNumeric','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','conditions','length','find','buildExpression','type','default','text','value','start','end','unreadMessages','read','and','Contact','operator','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','tags','clause','ids','user','UserId','body','plainBody','some','compact','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','resolve','then','fields','tag','filter','capitalize','chat','Websites','Accounts','search','agent','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','QueryTypes','SELECT','sequelize','toString','keyBy','merge','attributes','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.email','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.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.thirdDisposition','i.to','i.ContactId','i.UserId','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal'];(function(_0x3e3503,_0x2c0a5e){var _0x1cf75e=function(_0x185f67){while(--_0x185f67){_0x3e3503['push'](_0x3e3503['shift']());}};_0x1cf75e(++_0x2c0a5e);}(_0xb43b,0xbf));var _0xbb43=function(_0x2abb5d,_0x42cc52){_0x2abb5d=_0x2abb5d-0x0;var _0x47495f=_0xb43b[_0x2abb5d];return _0x47495f;};'use strict';var _=require(_0xbb43('0x0'));var squel=require('squel');var as=require(_0xbb43('0x1'));var qs=require(_0xbb43('0x2'));var updateInteraction=require(_0xbb43('0x3'))[_0xbb43('0x4')];var utils=require(_0xbb43('0x5'));var db=require(_0xbb43('0x6'))['db'];function skipInteractionsQuery(_0x2e9c09,_0x25f690,_0x24edde){var _0xbe3b56=![];var _0x2e55f3=utils['getAccountFK'](_0x2e9c09);if(_0x25f690[_0xbb43('0x7')]==='agent'&&!_0x24edde['search']&&!_0x24edde[_0x2e55f3]){_0xbe3b56=!![];}return _0xbe3b56;}function getTagsQuery(){return squel[_0xbb43('0x8')]()[_0xbb43('0x9')]('id')[_0xbb43('0x9')](_0xbb43('0xa'))[_0xbb43('0x9')]('color')[_0xbb43('0xb')](_0xbb43('0xc'));}function getUsersQuery(_0x121f18,_0x2c28be){var _0x5a4589=utils[_0xbb43('0xd')](_0x121f18);var _0x192286='user_has_'+_0x121f18+'_interactions';var _0x55c7cd=squel[_0xbb43('0x8')]()['field'](_0xbb43('0xe'))['field'](_0xbb43('0xf'))[_0xbb43('0x9')](_0xbb43('0x10')+_0x5a4589)[_0xbb43('0xb')](_0x192286,'ui')[_0xbb43('0x11')]('users','u',_0xbb43('0x12'));if(_0x2c28be['length']>0x0){_0x55c7cd[_0xbb43('0x13')](_0xbb43('0x10')+_0x5a4589+_0xbb43('0x14'),_[_0xbb43('0x15')](_0x2c28be,'id'));}return _0x55c7cd;}function getInteractionsQuery(_0x3be44b){var _0x126f61=utils[_0xbb43('0x16')](_0x3be44b);var _0x209c9c=utils[_0xbb43('0x17')](_0x3be44b);var _0x4c223b=utils[_0xbb43('0xd')](_0x3be44b);return squel['select']()[_0xbb43('0xb')](_0x126f61['interactions'],'i')[_0xbb43('0x11')](_0xbb43('0x18'),'c',_0xbb43('0x19'))[_0xbb43('0x11')]('users','o',_0xbb43('0x1a'))[_0xbb43('0x11')](_0x126f61[_0xbb43('0x1b')],'a',_0xbb43('0x1c')+_0x209c9c)[_0xbb43('0x11')](_0x126f61[_0xbb43('0x1d')],'me',_0xbb43('0x1e')+_0x4c223b+_0xbb43('0x1f'))[_0xbb43('0x11')](_0x126f61[_0xbb43('0x20')],'it',_0xbb43('0x21')+_0x4c223b+_0xbb43('0x1f'))[_0xbb43('0x11')](_0xbb43('0xc'),'t','t.id\x20=\x20it.TagId');}function getSqlClauses(){var _0x28b3e4={'body':squel[_0xbb43('0x22')](),'contact':squel['expr'](),'default':squel[_0xbb43('0x22')](),'fields':squel[_0xbb43('0x22')](),'filter':squel[_0xbb43('0x22')](),'read':squel['expr'](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0xbb43('0x22')]()};return _0x28b3e4;}function parseTagParameter(_0x16da8a){var _0x5b21b6=squel['expr']();if(_0x16da8a){var _0x2056cc=utils[_0xbb43('0x23')](_0x16da8a);_0x2056cc[_0xbb43('0x24')](function(_0x4bb859){_0x5b21b6['or'](_0xbb43('0x25'),'%,'+_0x4bb859+',%');});}return _0x5b21b6;}function parseReadParameter(_0x426cec){var _0x2dcc60='';if(_0x426cec){_0x2dcc60=_0xbb43('0x26');if(_0x426cec==='1'){_0x2dcc60=_0x2dcc60['replace'](_0xbb43('0x27'),'=');}else{_0x2dcc60=_0x2dcc60[_0xbb43('0x28')](_0xbb43('0x27'),'>');}}return _0x2dcc60;}function parseSearchFilter(_0x293d66,_0x34b679){var _0x41da98=squel[_0xbb43('0x22')]();if(_0x34b679){var _0x48986d=_0x34b679[_0xbb43('0x28')]('\x5c','\x5c\x5c')[_0xbb43('0x28')](/'/g,'\x27\x27');if(qs[_0xbb43('0x29')](_0x48986d)){_0x41da98['or']('i.id\x20LIKE\x20?',_0x48986d+'%');if([_0xbb43('0x2a'),_0xbb43('0x2b')][_0xbb43('0x2c')](_0x293d66)){_0x41da98['or'](_0xbb43('0x2d'),_0x48986d+'%');}else if(_0x293d66===_0xbb43('0x2e')){_0x41da98['or'](_0xbb43('0x2f'),_0x48986d+'%');}else if(_0x293d66===_0xbb43('0x30')){_0x41da98['or'](_0xbb43('0x31'),_0x48986d+'%');}}else if(_0x293d66===_0xbb43('0x32')&&qs['isEmail'](_0x48986d)){_0x41da98['or']('c.email\x20LIKE\x20?',_0x48986d+'%');}else{if(_0x293d66==='mail'){_0x41da98['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xbb43('0x33')](_0x48986d))['or'](_0xbb43('0x34'),qs[_0xbb43('0x33')](_0x48986d));}else{if(_0x293d66!==_0xbb43('0x2e')){_0x41da98['or'](_0xbb43('0x35'),qs[_0xbb43('0x33')](_0x48986d));}_0x41da98['or'](_0xbb43('0x36'),_0x48986d+'%');}}}return _0x41da98;}function parseAdvancedSearchFilter(_0x3082b3,_0x5c1270){var _0x1cf664=getSqlClauses();var _0x44144d=as[_0xbb43('0x37')](_0x3082b3);var _0x5cbb05=_0x44144d['sqlOperator'];for(var _0x477b74=0x0;_0x477b74<_0x44144d[_0xbb43('0x38')][_0xbb43('0x39')];_0x477b74++){var _0x119f8f=_0x44144d['conditions'][_0x477b74];var _0x37b8c5='i';var _0x4ab8e5=_[_0xbb43('0x3a')](_0x5c1270,[_0xbb43('0xa'),_0x119f8f[_0xbb43('0x9')]]);if(_0x4ab8e5){var _0x181877=as[_0xbb43('0x3b')](_0x37b8c5,_0x4ab8e5[_0xbb43('0x3c')],_0x119f8f);_0x1cf664[_0xbb43('0x3d')][_0x5cbb05](_0x181877[_0xbb43('0x3e')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x40')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x41')]);}else{switch(_0x119f8f['field']){case _0xbb43('0x42'):var _0x467009=parseReadParameter(_0x119f8f[_0xbb43('0x3f')]);_0x1cf664[_0xbb43('0x43')][_0xbb43('0x44')](_0x467009);break;case _0xbb43('0x45'):if(_0x119f8f[_0xbb43('0x46')]===_0xbb43('0x47')){if(_0x119f8f[_0xbb43('0x3f')][_0xbb43('0x48')]('\x20')[_0xbb43('0x39')]>0x1){_0x1cf664[_0xbb43('0x49')][_0x5cbb05](_0xbb43('0x4a'),qs[_0xbb43('0x33')](_0x119f8f[_0xbb43('0x3f')]),null);}else{var _0x4a76a8='%'+_0x119f8f[_0xbb43('0x3f')]+'%';_0x1cf664[_0xbb43('0x49')][_0x5cbb05](_0xbb43('0x4b'),_0x4a76a8,_0x4a76a8,_0x4a76a8);}}else{_0x4ab8e5=_[_0xbb43('0x3a')](_0x5c1270,[_0xbb43('0xa'),_0xbb43('0x4c')]);_0x119f8f['field']=_0xbb43('0x4c');_0x181877=as[_0xbb43('0x3b')](_0x37b8c5,_0x4ab8e5['type'],_0x119f8f);_0x1cf664['contact'][_0x5cbb05](_0x181877[_0xbb43('0x3e')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x40')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x41')]);}break;case'Tag':var _0x5be16e=_0x119f8f[_0xbb43('0x3f')][_0xbb43('0x48')](',')[_0xbb43('0x15')](function(_0x2d1256){return Number(_0x2d1256);});var _0x97f035=parseTagParameter(_0x5be16e);_0x1cf664[_0xbb43('0x4d')][_0xbb43('0x4e')][_0xbb43('0x44')](_0x97f035);_0x1cf664[_0xbb43('0x4d')][_0xbb43('0x4f')]=_0x5be16e;break;case'User':if(_0x119f8f['operator']===_0xbb43('0x47')){_0x1cf664[_0xbb43('0x50')][_0x5cbb05]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x119f8f[_0xbb43('0x3f')]+'%',null);}else{_0x4ab8e5=_[_0xbb43('0x3a')](_0x5c1270,[_0xbb43('0xa'),_0xbb43('0x51')]);_0x119f8f[_0xbb43('0x9')]=_0xbb43('0x51');_0x181877=as[_0xbb43('0x3b')](_0x37b8c5,_0x4ab8e5['type'],_0x119f8f);_0x1cf664[_0xbb43('0x50')][_0x5cbb05](_0x181877[_0xbb43('0x3e')],_0x181877['value'][_0xbb43('0x40')],_0x181877[_0xbb43('0x3f')]['end']);}break;case _0xbb43('0x52'):case _0xbb43('0x53'):_0x181877=as[_0xbb43('0x3b')]('me',null,_0x119f8f);_0x1cf664[_0xbb43('0x52')][_0x5cbb05](_0x181877[_0xbb43('0x3e')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x40')],_0x181877[_0xbb43('0x3f')][_0xbb43('0x41')]);break;}}}return _0x1cf664;}function parseModelFields(_0x2f044f,_0x38cc4d,_0x2ff5e5){var _0x5a2694=utils[_0xbb43('0x17')](_0x2f044f);var _0x10c8d7=squel[_0xbb43('0x22')]();var _0x7089bb=_(_0x38cc4d)['keys']()[_0xbb43('0x15')](function(_0x4998fb){return _[_0xbb43('0x54')](_0x2ff5e5,['name',_0x4998fb])?_0x4998fb:undefined;})[_0xbb43('0x55')]()[_0xbb43('0x3f')]();if(_0x7089bb[_0xbb43('0x39')]>0x0){_0x7089bb['forEach'](function(_0x39f09d){if(_0x39f09d===_0x5a2694){_0x10c8d7[_0xbb43('0x44')]('i.'+_0x5a2694+_0xbb43('0x14'),[]['concat'](_0x38cc4d[_0x39f09d]));}else if(_0x39f09d===_0xbb43('0x56')){var _0x3b53b9=JSON['parse'](_0x38cc4d[_0x39f09d])[_0xbb43('0x57')];var _0x48828f=JSON[_0xbb43('0x58')](_0x38cc4d[_0x39f09d])[_0xbb43('0x59')];_0x10c8d7['and'](_0xbb43('0x5a'),_0x3b53b9,_0x48828f);}else{if(_0x38cc4d[_0x39f09d]===_0xbb43('0x5b')){_0x10c8d7[_0xbb43('0x44')]('i.'+_0x39f09d+'\x20IS\x20NULL');}else{_0x10c8d7[_0xbb43('0x44')]('i.'+_0x39f09d+'\x20=\x20?',_0x38cc4d[_0x39f09d]);}}});}return _0x10c8d7;}function parseQueryParameters(_0x3433ff,_0x451007,_0xaf5542){var _0x57eb47=getSqlClauses();return Promise[_0xbb43('0x5c')]()[_0xbb43('0x5d')](function(){return parseModelFields(_0x3433ff,_0x451007,_0xaf5542);})['then'](function(_0x484aee){_0x57eb47[_0xbb43('0x5e')][_0xbb43('0x44')](_0x484aee);return parseReadParameter(_0x451007['read']);})['then'](function(_0x3a319d){_0x57eb47['read'][_0xbb43('0x44')](_0x3a319d);return parseTagParameter(_0x451007[_0xbb43('0x5f')]);})[_0xbb43('0x5d')](function(_0x4c8a38){_0x57eb47['tags']['clause']['and'](_0x4c8a38);return parseSearchFilter(_0x3433ff,_0x451007['filter']);})[_0xbb43('0x5d')](function(_0x31d265){_0x57eb47[_0xbb43('0x60')]=_0x31d265;return _0x57eb47;});}function checkAccountsRestrictions(_0x4024bb,_0xbf2f4d,_0x4ad016){var _0x19e8b7=utils['getAccountFK'](_0x4024bb);var _0x6e7c04='get'+_[_0xbb43('0x61')](_0x4024bb)+(_0x4024bb===_0xbb43('0x62')?_0xbb43('0x63'):_0xbb43('0x64'));var _0x4c13ad=squel[_0xbb43('0x22')]();return Promise['resolve']()[_0xbb43('0x5d')](function(){if(_0x4ad016[_0xbb43('0x65')]&&_0xbf2f4d['role']===_0xbb43('0x66')){return _0xbf2f4d[_0x6e7c04]({'attributes':['id'],'raw':!![]});}})[_0xbb43('0x5d')](function(_0x5cde88){if(_0x5cde88){if(_0x5cde88[_0xbb43('0x39')]===0x0){_0x4c13ad[_0xbb43('0x44')]('i.'+_0x19e8b7+_0xbb43('0x67'));}else{_0x4c13ad[_0xbb43('0x44')]('i.'+_0x19e8b7+_0xbb43('0x14'),_[_0xbb43('0x15')](_0x5cde88,'id'));}}else if(!_0x4ad016[_0x19e8b7]){_0x4c13ad[_0xbb43('0x44')]('i.'+_0x19e8b7+_0xbb43('0x68'));}})['then'](function(){return _0x4c13ad;});}function getClosedOrderClause(_0x1d8a41,_0x49aa17){var _0x36a69b='';var _0x2e70bf=['i.thirdDisposition',_0xbb43('0x69'),_0xbb43('0x6a')];if(_0x1d8a41===_0xbb43('0x32')){_0x2e70bf[_0xbb43('0x6b')](_0xbb43('0x6c'));}if(_0x49aa17[_0xbb43('0x6d')]==='0'&&_0x1d8a41===_0xbb43('0x32')){_0x36a69b=_0xbb43('0x6c');}else{if(_0x49aa17['closed']==='1'){_0x2e70bf[_0xbb43('0x6e')]();}_0x36a69b=_0xbb43('0x6f')+_0x2e70bf[_0xbb43('0x70')](',\x20')+')';}return _0x36a69b;}function getFilteredInteractions(_0x200b6f,_0x4a7ea1,_0x226f27,_0x5d73a5){var _0x265a25=utils['getInteractionFK'](_0x200b6f);var _0x3a8d9d=_[_0xbb43('0x61')](_0x200b6f)+_0xbb43('0x71');var _0x265d2d=[];var _0x3b8363=getTagsQuery();var _0x43468e={'type':db[_0xbb43('0x72')][_0xbb43('0x73')][_0xbb43('0x74')],'raw':!![]};var _0x32483f=[];var _0x4f65de=[];return db[_0xbb43('0x75')]['query'](_0x3b8363[_0xbb43('0x76')](),_0x43468e)[_0xbb43('0x5d')](function(_0xc64c91){_0x265d2d=_[_0xbb43('0x77')](_0xc64c91,'id');_0x43468e=_[_0xbb43('0x78')](_0x43468e,{'model':db[_0x3a8d9d],'mapToModel':!![],'nest':!![]});if(_0x226f27[_0xbb43('0x5e')]){_0x5d73a5[_0xbb43('0x79')][_0xbb43('0x24')](function(_0x56db5b){_0x4a7ea1[_0xbb43('0x9')]('i.'+_0x56db5b);});}else{_0x4a7ea1['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbb43('0x42'));_0x4a7ea1['field'](_0xbb43('0x7a'),_0xbb43('0x7b'));_0x4a7ea1['field'](_0xbb43('0x7c'),_0xbb43('0x7d'));if(_0x200b6f==='mail'){_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x7e'),_0xbb43('0x7f'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x80'),_0xbb43('0x81'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x82'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x83'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x84'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x85'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x86'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x87'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x88'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x89'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8a'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x6a'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x69'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8b'));_0x4a7ea1['field'](_0xbb43('0x6c'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8c'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8d'));_0x4a7ea1[_0xbb43('0x9')]('i.MailAccountId');_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8e'));}else if(_0x200b6f==='openchannel'){_0x4a7ea1['field']('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',_0xbb43('0x81'));}else{_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x8f'),_0xbb43('0x81'));}if(_0x200b6f!=='mail'){_0x4a7ea1['field'](_0xbb43('0x90'));}_0x4a7ea1['field'](_0xbb43('0x91'),_0xbb43('0x92'));_0x4a7ea1['field'](_0xbb43('0x93'),_0xbb43('0x94'));_0x4a7ea1[_0xbb43('0x9')]('c.email',_0xbb43('0x95'));_0x4a7ea1['field'](_0xbb43('0x96'),_0xbb43('0x97'));_0x4a7ea1['field'](_0xbb43('0x98'),_0xbb43('0x99'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x9a'),_0xbb43('0x9b'));_0x4a7ea1['field']('o.fullname',_0xbb43('0x9c'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x9d'),_0xbb43('0x9e'));_0x4a7ea1[_0xbb43('0x9')](_0xbb43('0x9f'),_0xbb43('0xa0'));}if(_0x5d73a5[_0xbb43('0xa1')]){_0x4a7ea1['limit'](_0x5d73a5[_0xbb43('0xa1')]);}if(_0x5d73a5['offset']){_0x4a7ea1[_0xbb43('0xa2')](_0x5d73a5[_0xbb43('0xa2')]);}return db['sequelize'][_0xbb43('0xa3')](_0x4a7ea1[_0xbb43('0x76')](),_0x43468e);})[_0xbb43('0x5d')](function(_0x1e4a33){_0x32483f=_0x1e4a33;var _0x2574f0=getUsersQuery(_0x200b6f,_0x32483f);return db[_0xbb43('0x75')]['query'](_0x2574f0[_0xbb43('0x76')](),_0x43468e);})[_0xbb43('0x5d')](function(_0x4a957b){_0x4f65de=_[_0xbb43('0xa4')](_0x4a957b,_0x265a25);if(_0x200b6f==='mail'){return db[_0xbb43('0xa5')][_0xbb43('0xa6')]({'attributes':[_0xbb43('0xa7')],'raw':!![]});}})[_0xbb43('0x5d')](function(_0x6a1fa6){var _0x126b2a=_0x6a1fa6?_0x6a1fa6[_0xbb43('0xa7')]:undefined;var _0x2042a4=_0x32483f[_0xbb43('0x15')](function(_0xbf957d){return updateInteraction(_0xbf957d,_0x265d2d,_0x4f65de,_0x126b2a);});return Promise[_0xbb43('0xa8')](_0x2042a4);});}function countFilteredInteractions(_0x4e6e1d,_0x34b9c5){var _0x50f5d0=_0x4e6e1d[_0xbb43('0xa9')]();_0x50f5d0[_0xbb43('0x9')](_0xbb43('0xaa'));_0x50f5d0[_0xbb43('0x9')](_0xbb43('0xab'),'unreadMessages');var _0x10498d=utils[_0xbb43('0x23')](_0x34b9c5);if(!_[_0xbb43('0xac')](_0x10498d)){_0x50f5d0[_0xbb43('0x13')](_0xbb43('0xad'),_0x10498d);}var _0x5e26d1={'type':db[_0xbb43('0x72')]['QueryTypes'][_0xbb43('0x74')],'raw':!![]};return db[_0xbb43('0x75')][_0xbb43('0xa3')](_0x50f5d0[_0xbb43('0x76')](),_0x5e26d1);}module[_0xbb43('0xae')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 42daa78..510a3b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b8e=['../../mysqldb','map','fullname','split','forEach','push','waiting','answered','unmanaged','total','closed','disposition','abandoned','UserId','talking','MailMessage','findOne','out','then','plainBody','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags'];(function(_0x589e56,_0x5e56ec){var _0x4a94b3=function(_0x15a083){while(--_0x15a083){_0x589e56['push'](_0x589e56['shift']());}};_0x4a94b3(++_0x5e56ec);}(_0x9b8e,0x87));var _0xe9b8=function(_0x13bb45,_0x493c65){_0x13bb45=_0x13bb45-0x0;var _0x5e9c12=_0x9b8e[_0x13bb45];return _0x5e9c12;};'use strict';var _=require('lodash');var db=require(_0xe9b8('0x0'))['db'];function getInteractionUsers(_0x7488dc,_0x24713c){return new Promise(function(_0x433eff,_0x37eeff){try{var _0x18e2c3=[];if(_0x24713c[_0x7488dc]){_0x18e2c3=_0x24713c[_0x7488dc][_0xe9b8('0x1')](function(_0x1969e8){return{'id':_0x1969e8['id'],'fullname':_0x1969e8[_0xe9b8('0x2')]};});}return _0x433eff(_0x18e2c3);}catch(_0x4372f2){_0x37eeff(_0x4372f2);}});}function getInteractionTags(_0xd7510d,_0xbeebf4){var _0x5092d1=[];if(_0xd7510d){_0xd7510d[_0xe9b8('0x3')](',')[_0xe9b8('0x4')](function(_0x56fea9){_0x5092d1[_0xe9b8('0x5')](_0xbeebf4[_0x56fea9]);});}return _0x5092d1;}function updateWaitingCounter(_0x32b772){if(_0x32b772[_0xe9b8('0x6')]){_0x32b772['waiting']-=0x1;}}function updateInteractionCounters(_0x1693a8){_0x1693a8['waiting']=0x0;_0x1693a8['talking']=0x0;_0x1693a8[_0xe9b8('0x7')]=0x0;_0x1693a8[_0xe9b8('0x8')]=0x0;_0x1693a8['abandoned']=0x0;_0x1693a8[_0xe9b8('0x9')]=0x0;if(_0x1693a8[_0xe9b8('0xa')]){if(_0x1693a8[_0xe9b8('0xb')]===_0xe9b8('0xc')){_0x1693a8['abandoned']+=0x1;updateWaitingCounter(_0x1693a8);}if(_0x1693a8[_0xe9b8('0xd')]){_0x1693a8[_0xe9b8('0x7')]+=0x1;if(_0x1693a8[_0xe9b8('0xe')]){_0x1693a8[_0xe9b8('0xe')]-=0x1;}}else{if(_0x1693a8[_0xe9b8('0xb')]){_0x1693a8[_0xe9b8('0x8')]+=0x1;updateWaitingCounter(_0x1693a8);}}}else{if(!_0x1693a8[_0xe9b8('0xd')]){_0x1693a8[_0xe9b8('0x6')]+=0x1;}if(_0x1693a8['UserId']){_0x1693a8[_0xe9b8('0xe')]+=0x1;updateWaitingCounter(_0x1693a8);}}_0x1693a8[_0xe9b8('0x9')]+=0x1;return _0x1693a8;}function getLastMessageText(_0x525b5b){return db[_0xe9b8('0xf')][_0xe9b8('0x10')]({'where':{'$and':[{'MailInteractionId':_0x525b5b['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xe9b8('0x11')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':'-id','raw':!![]})[_0xe9b8('0x12')](function(_0x12c899){if(_0x12c899&&_0x12c899[_0xe9b8('0x13')]){_0x525b5b[_0xe9b8('0x14')]=_[_0xe9b8('0x15')](_0x12c899[_0xe9b8('0x13')]);}return _0x525b5b;})[_0xe9b8('0x16')](function(_0x5e8262){throw _0x5e8262;});}exports[_0xe9b8('0x17')]=function(_0x17a05c,_0x3a6824,_0x3a4223,_0x269daa){return new Promise(function(_0x45db59,_0x251c39){return getInteractionUsers(_0x17a05c['id'],_0x3a4223)['then'](function(_0x51a318){_0x17a05c[_0xe9b8('0x18')]=_0x51a318;return getInteractionTags(_0x17a05c[_0xe9b8('0x19')],_0x3a6824);})['then'](function(_0x5a95b7){_0x17a05c[_0xe9b8('0x1a')]=_0x5a95b7;delete _0x17a05c['TagIds'];return updateInteractionCounters(_0x17a05c);})[_0xe9b8('0x12')](function(_0x19625c){if(_0x269daa){return getLastMessageText(_0x19625c);}else{return _0x19625c;}})[_0xe9b8('0x12')](function(_0x25252a){_0x45db59(_0x25252a);})[_0xe9b8('0x16')](function(_0x2aa4e0){_0x251c39(_0x2aa4e0);});});};
\ No newline at end of file
+var _0x353d=['lodash','fullname','split','push','waiting','talking','answered','unmanaged','abandoned','closed','disposition','UserId','total','MailMessage','findOne','out','plainBody','-id','then','trimStart','catch','updateInteraction','Users','Tags','TagIds'];(function(_0x4d922d,_0x1a367c){var _0x1621c4=function(_0x230432){while(--_0x230432){_0x4d922d['push'](_0x4d922d['shift']());}};_0x1621c4(++_0x1a367c);}(_0x353d,0x96));var _0xd353=function(_0x1c0f55,_0x223255){_0x1c0f55=_0x1c0f55-0x0;var _0x31a01b=_0x353d[_0x1c0f55];return _0x31a01b;};'use strict';var _=require(_0xd353('0x0'));var db=require('../../mysqldb')['db'];function getInteractionUsers(_0xfe2786,_0x2dcc9f){return new Promise(function(_0x331ddb,_0x5175a7){try{var _0xad3de2=[];if(_0x2dcc9f[_0xfe2786]){_0xad3de2=_0x2dcc9f[_0xfe2786]['map'](function(_0x5f4a91){return{'id':_0x5f4a91['id'],'fullname':_0x5f4a91[_0xd353('0x1')]};});}return _0x331ddb(_0xad3de2);}catch(_0x952d1f){_0x5175a7(_0x952d1f);}});}function getInteractionTags(_0x469f9f,_0x537426){var _0x27a292=[];if(_0x469f9f){_0x469f9f[_0xd353('0x2')](',')['forEach'](function(_0x273c9a){_0x27a292[_0xd353('0x3')](_0x537426[_0x273c9a]);});}return _0x27a292;}function updateWaitingCounter(_0xdf6c8f){if(_0xdf6c8f[_0xd353('0x4')]){_0xdf6c8f[_0xd353('0x4')]-=0x1;}}function updateInteractionCounters(_0x9a2c82){_0x9a2c82['waiting']=0x0;_0x9a2c82[_0xd353('0x5')]=0x0;_0x9a2c82[_0xd353('0x6')]=0x0;_0x9a2c82[_0xd353('0x7')]=0x0;_0x9a2c82[_0xd353('0x8')]=0x0;_0x9a2c82['total']=0x0;if(_0x9a2c82[_0xd353('0x9')]){if(_0x9a2c82[_0xd353('0xa')]===_0xd353('0x8')){_0x9a2c82[_0xd353('0x8')]+=0x1;updateWaitingCounter(_0x9a2c82);}if(_0x9a2c82[_0xd353('0xb')]){_0x9a2c82[_0xd353('0x6')]+=0x1;if(_0x9a2c82[_0xd353('0x5')]){_0x9a2c82['talking']-=0x1;}}else{if(_0x9a2c82[_0xd353('0xa')]){_0x9a2c82[_0xd353('0x7')]+=0x1;updateWaitingCounter(_0x9a2c82);}}}else{if(!_0x9a2c82[_0xd353('0xb')]){_0x9a2c82[_0xd353('0x4')]+=0x1;}if(_0x9a2c82[_0xd353('0xb')]){_0x9a2c82[_0xd353('0x5')]+=0x1;updateWaitingCounter(_0x9a2c82);}}_0x9a2c82[_0xd353('0xc')]+=0x1;return _0x9a2c82;}function getLastMessageText(_0x25bb63){return db[_0xd353('0xd')][_0xd353('0xe')]({'where':{'$and':[{'MailInteractionId':_0x25bb63['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xd353('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xd353('0x10')],'order':_0xd353('0x11'),'raw':!![]})[_0xd353('0x12')](function(_0x178993){if(_0x178993&&_0x178993['plainBody']){_0x25bb63['lastMsgText']=_[_0xd353('0x13')](_0x178993[_0xd353('0x10')]);}return _0x25bb63;})[_0xd353('0x14')](function(_0x41e4f1){throw _0x41e4f1;});}exports[_0xd353('0x15')]=function(_0x3c62f4,_0x4affbe,_0x5d98f3,_0x167487){return new Promise(function(_0x2cb3c8,_0x2ee971){return getInteractionUsers(_0x3c62f4['id'],_0x5d98f3)['then'](function(_0x7f93c4){_0x3c62f4[_0xd353('0x16')]=_0x7f93c4;return getInteractionTags(_0x3c62f4['TagIds'],_0x4affbe);})['then'](function(_0x2976ed){_0x3c62f4[_0xd353('0x17')]=_0x2976ed;delete _0x3c62f4[_0xd353('0x18')];return updateInteractionCounters(_0x3c62f4);})[_0xd353('0x12')](function(_0x25cab8){if(_0x167487){return getLastMessageText(_0x25cab8);}else{return _0x25cab8;}})['then'](function(_0x3187fe){_0x2cb3c8(_0x3187fe);})[_0xd353('0x14')](function(_0x3a2699){_0x2ee971(_0x3a2699);});});};
\ No newline at end of file
index bf51b72..79e8d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x882a=['catch','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','capitalize','upperFirst','InteractionId','unknown','chat','websites','accounts','_interactions','_messages','user_has_','isArray','toLowerCase','toUpperCase','name','role','stringify','null','findOne','then','info'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0x882a,0x10f));var _0xa882=function(_0x21c2a9,_0x5b3c37){_0x21c2a9=_0x21c2a9-0x0;var _0x519605=_0x882a[_0x21c2a9];return _0x519605;};'use strict';var _=require('lodash');var db=require(_0xa882('0x0'))['db'];var loggers={'openchannel':require(_0xa882('0x1'))(_0xa882('0x2')),'mail':require('../../config/logger')(_0xa882('0x3')),'fax':require(_0xa882('0x1'))(_0xa882('0x4')),'sms':require(_0xa882('0x1'))(_0xa882('0x5')),'chat':require(_0xa882('0x1'))('chat-interactions'),'whatsapp':require(_0xa882('0x1'))('whatsapp-interactions')};function getAccountFK(_0x47f770){return _['capitalize'](_0x47f770)+(_0x47f770==='chat'?'Website':'Account')+'Id';}function getInteractionFK(_0x402c7f){return _[_0xa882('0x6')](_0x402c7f)+'InteractionId';}function getInteractionId(_0x161c12,_0x283448,_0x1cd6fe){if(_0x161c12&&_0x161c12[_[_0xa882('0x7')](_0x1cd6fe)+_0xa882('0x8')]){return _0x161c12[_['upperFirst'](_0x1cd6fe)+_0xa882('0x8')];}else if(_0x161c12&&_0x161c12['id']){return _0x161c12['id'];}else if(_0x283448&&_0x283448['id']){return _0x283448['id'];}else{return _0xa882('0x9');}}function getInteractionsTables(_0x4825fb){return{'accounts':_0x4825fb+'_'+(_0x4825fb===_0xa882('0xa')?_0xa882('0xb'):_0xa882('0xc')),'interactions':_0x4825fb+_0xa882('0xd'),'interactionsTags':_0x4825fb+'_interaction_has_tags','messages':_0x4825fb+_0xa882('0xe'),'userInteractions':_0xa882('0xf')+_0x4825fb+'_interactions'};}function getSelectedTags(_0x5c4f8e){var _0x3660bc=[];if(_0x5c4f8e){_0x3660bc=Array[_0xa882('0x10')](_0x5c4f8e)?_0x5c4f8e:[_0x5c4f8e];}return _0x3660bc;}function log(_0x30a880,_0x6071ba,_0x697bc3,_0x1ab1dd,_0x41e7ca,_0x5cfeae){loggers[_0x41e7ca[_0xa882('0x11')]()][_0x30a880]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5cfeae[_0xa882('0x12')](),_0x6071ba?_0x6071ba['id']:null,_0x6071ba?_0x6071ba[_0xa882('0x13')]:null,_0x6071ba?_0x6071ba[_0xa882('0x14')]:null,getInteractionId(_0x697bc3,_0x1ab1dd,_0x41e7ca),_0x697bc3?JSON[_0xa882('0x15')](_0x697bc3):_0xa882('0x16'));}function updateUser(_0x53bcbd,_0x37c7f1,_0x41f9aa,_0x4fe545,_0x36a231){db[_[_0xa882('0x7')](_0x4fe545)+'Interaction'][_0xa882('0x17')]({'where':{'id':getInteractionId(_0x37c7f1,_0x41f9aa,_0x4fe545)}})[_0xa882('0x18')](function(_0x52893b){if(_0x52893b){return _0x52893b['update']({'UserId':_0x53bcbd?_0x53bcbd['id']:null});}})[_0xa882('0x18')](function(_0x4623ca){if(_0x4623ca){log(_0xa882('0x19'),_0x53bcbd,_0x37c7f1,_0x41f9aa,_0x4fe545,_0x36a231);}})[_0xa882('0x1a')](function(){log('error',_0x53bcbd,_0x37c7f1,_0x41f9aa,_0x4fe545,_0x36a231);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x7cae=['../../mysqldb','openchannel-interactions','../../config/logger','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','chat','Website','Account','capitalize','upperFirst','InteractionId','unknown','websites','_interactions','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','null','Interaction','then','update','info','catch','error','exports','lodash'];(function(_0x5a93b8,_0x2dc681){var _0xb0c6a5=function(_0x4d332b){while(--_0x4d332b){_0x5a93b8['push'](_0x5a93b8['shift']());}};_0xb0c6a5(++_0x2dc681);}(_0x7cae,0xf7));var _0xe7ca=function(_0x4af21b,_0x260f94){_0x4af21b=_0x4af21b-0x0;var _0xdbe70=_0x7cae[_0x4af21b];return _0xdbe70;};'use strict';var _=require(_0xe7ca('0x0'));var db=require(_0xe7ca('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0xe7ca('0x2')),'mail':require(_0xe7ca('0x3'))('mail-interactions'),'fax':require(_0xe7ca('0x3'))(_0xe7ca('0x4')),'sms':require('../../config/logger')(_0xe7ca('0x5')),'chat':require(_0xe7ca('0x3'))(_0xe7ca('0x6')),'whatsapp':require('../../config/logger')(_0xe7ca('0x7'))};function getAccountFK(_0x3e951a){return _['capitalize'](_0x3e951a)+(_0x3e951a===_0xe7ca('0x8')?_0xe7ca('0x9'):_0xe7ca('0xa'))+'Id';}function getInteractionFK(_0x348500){return _[_0xe7ca('0xb')](_0x348500)+'InteractionId';}function getInteractionId(_0x2e7729,_0x5ac102,_0x174103){if(_0x2e7729&&_0x2e7729[_[_0xe7ca('0xc')](_0x174103)+_0xe7ca('0xd')]){return _0x2e7729[_[_0xe7ca('0xc')](_0x174103)+_0xe7ca('0xd')];}else if(_0x2e7729&&_0x2e7729['id']){return _0x2e7729['id'];}else if(_0x5ac102&&_0x5ac102['id']){return _0x5ac102['id'];}else{return _0xe7ca('0xe');}}function getInteractionsTables(_0x123ed2){return{'accounts':_0x123ed2+'_'+(_0x123ed2==='chat'?_0xe7ca('0xf'):'accounts'),'interactions':_0x123ed2+'_interactions','interactionsTags':_0x123ed2+'_interaction_has_tags','messages':_0x123ed2+'_messages','userInteractions':'user_has_'+_0x123ed2+_0xe7ca('0x10')};}function getSelectedTags(_0xb49092){var _0x5544a8=[];if(_0xb49092){_0x5544a8=Array[_0xe7ca('0x11')](_0xb49092)?_0xb49092:[_0xb49092];}return _0x5544a8;}function log(_0x4f07c1,_0x574612,_0x18a39c,_0x30731b,_0x363f70,_0x35c2d9){loggers[_0x363f70[_0xe7ca('0x12')]()][_0x4f07c1](_0xe7ca('0x13'),_0x35c2d9['toUpperCase'](),_0x574612?_0x574612['id']:null,_0x574612?_0x574612[_0xe7ca('0x14')]:null,_0x574612?_0x574612[_0xe7ca('0x15')]:null,getInteractionId(_0x18a39c,_0x30731b,_0x363f70),_0x18a39c?JSON[_0xe7ca('0x16')](_0x18a39c):_0xe7ca('0x17'));}function updateUser(_0x3329a0,_0x2dad89,_0x142f29,_0x5e79b6,_0x25ccc2){db[_[_0xe7ca('0xc')](_0x5e79b6)+_0xe7ca('0x18')]['findOne']({'where':{'id':getInteractionId(_0x2dad89,_0x142f29,_0x5e79b6)}})[_0xe7ca('0x19')](function(_0x5fb806){if(_0x5fb806){return _0x5fb806[_0xe7ca('0x1a')]({'UserId':_0x3329a0?_0x3329a0['id']:null});}})[_0xe7ca('0x19')](function(_0x5b8873){if(_0x5b8873){log(_0xe7ca('0x1b'),_0x3329a0,_0x2dad89,_0x142f29,_0x5e79b6,_0x25ccc2);}})[_0xe7ca('0x1c')](function(){log(_0xe7ca('0x1d'),_0x3329a0,_0x2dad89,_0x142f29,_0x5e79b6,_0x25ccc2);});}module[_0xe7ca('0x1e')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 797b316..0e86424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48fb=['utf8','final','parse','use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../config/environment','license','data1','split','aes-256-ctr','format','%s:%s:%s','update','base64'];(function(_0x52de63,_0x180e6f){var _0x5918f3=function(_0x3977b7){while(--_0x3977b7){_0x52de63['push'](_0x52de63['shift']());}};_0x5918f3(++_0x180e6f);}(_0x48fb,0x144));var _0xb48f=function(_0x1e6558,_0x922510){_0x1e6558=_0x1e6558-0x0;var _0x30ef72=_0x48fb[_0x1e6558];return _0x30ef72;};'use strict';var crypto=require(_0xb48f('0x0'));var util=require(_0xb48f('0x1'));var compose=require(_0xb48f('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0xb48f('0x3'));function getValueFromLicense(_0x44a9d4,_0x1ce1b4){if(_0x44a9d4&&_0x1ce1b4){if(_0x1ce1b4['data1']&&_0x1ce1b4[_0xb48f('0x4')]){var _0x32ac54=_0x1ce1b4[_0xb48f('0x5')];var _0xfaf752=_0x1ce1b4[_0xb48f('0x4')];var _0x50931d=_0x32ac54['split']('-')[0x4];var _0x29815b=_0x32ac54[_0xb48f('0x6')]('-')[0x0];var _0x3f992c=crypto['createDecipher'](_0xb48f('0x7'),util[_0xb48f('0x8')](_0xb48f('0x9'),_0x50931d,_0x32ac54,_0x29815b));var _0x57e831=_0x3f992c[_0xb48f('0xa')](_0xfaf752,_0xb48f('0xb'),_0xb48f('0xc'));_0x57e831+=_0x3f992c[_0xb48f('0xd')]('utf8');var _0x9634dd=JSON[_0xb48f('0xe')](_0x57e831);return _0x9634dd['hasOwnProperty'](_0x44a9d4)?_0x9634dd[_0x44a9d4]:null;}}return null;}function isLimit(_0x13436e,_0x138a9d,_0x3d54f0,_0x44710d){var _0x2bb2a2=_0x138a9d;return compose()[_0xb48f('0xf')](function(_0x1698aa,_0x369d46,_0x435e21){return db[_0xb48f('0x10')][_0xb48f('0x11')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x3cb8c9){var _0x36760d=getValueFromLicense(_0x13436e,_0x3cb8c9);return _0x36760d?_0x36760d:_0x2bb2a2;})[_0xb48f('0x12')](function(_0xa28204){_0x2bb2a2=_0xa28204;return _0x3d54f0[_0xb48f('0x13')](_0x44710d);})['then'](function(_0x1499fa){if(_0x1499fa>=_0x2bb2a2){return _0x369d46[_0xb48f('0x14')](0x193)[_0xb48f('0x15')]({'message':util[_0xb48f('0x8')](_0xb48f('0x16'),_0x13436e)});}_0x435e21();})['catch'](function(_0x4a5795){_0x435e21(_0x4a5795);});});}function isUserLimit(){return isLimit(_0xb48f('0x17'),0x1,db[_0xb48f('0x18')],{'where':{'$or':[{'role':_0xb48f('0x19')},{'role':_0xb48f('0x1a')}]}});}exports[_0xb48f('0x1b')]=isUserLimit;
\ No newline at end of file
+var _0x6a0f=['final','parse','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','format','%s:%s:%s','update','utf8'];(function(_0x17bd84,_0x1cfcfb){var _0x124a5a=function(_0x2dc552){while(--_0x2dc552){_0x17bd84['push'](_0x17bd84['shift']());}};_0x124a5a(++_0x1cfcfb);}(_0x6a0f,0x15f));var _0xf6a0=function(_0x19acbf,_0x37b2fe){_0x19acbf=_0x19acbf-0x0;var _0x1f6029=_0x6a0f[_0x19acbf];return _0x1f6029;};'use strict';var crypto=require(_0xf6a0('0x0'));var util=require(_0xf6a0('0x1'));var compose=require(_0xf6a0('0x2'));var db=require(_0xf6a0('0x3'))['db'];var config=require(_0xf6a0('0x4'));function getValueFromLicense(_0x2774aa,_0x3af1a3){if(_0x2774aa&&_0x3af1a3){if(_0x3af1a3[_0xf6a0('0x5')]&&_0x3af1a3[_0xf6a0('0x6')]){var _0x4c497c=_0x3af1a3[_0xf6a0('0x5')];var _0x4a48a3=_0x3af1a3[_0xf6a0('0x6')];var _0x513bc7=_0x4c497c[_0xf6a0('0x7')]('-')[0x4];var _0x27bf77=_0x4c497c[_0xf6a0('0x7')]('-')[0x0];var _0x33578b=crypto[_0xf6a0('0x8')]('aes-256-ctr',util[_0xf6a0('0x9')](_0xf6a0('0xa'),_0x513bc7,_0x4c497c,_0x27bf77));var _0x5df9e4=_0x33578b[_0xf6a0('0xb')](_0x4a48a3,'base64',_0xf6a0('0xc'));_0x5df9e4+=_0x33578b[_0xf6a0('0xd')]('utf8');var _0x5b9058=JSON[_0xf6a0('0xe')](_0x5df9e4);return _0x5b9058['hasOwnProperty'](_0x2774aa)?_0x5b9058[_0x2774aa]:null;}}return null;}function isLimit(_0x3a5e38,_0x3218c0,_0x31bc10,_0x20a935){var _0x58d493=_0x3218c0;return compose()[_0xf6a0('0xf')](function(_0x5969cf,_0x1fca36,_0x3e4fde){return db['License'][_0xf6a0('0x10')]({'where':{'id':0x1},'raw':!![]})[_0xf6a0('0x11')](function(_0x46bcfa){var _0x190ff2=getValueFromLicense(_0x3a5e38,_0x46bcfa);return _0x190ff2?_0x190ff2:_0x58d493;})[_0xf6a0('0x11')](function(_0x4ad535){_0x58d493=_0x4ad535;return _0x31bc10[_0xf6a0('0x12')](_0x20a935);})['then'](function(_0xea1280){if(_0xea1280>=_0x58d493){return _0x1fca36[_0xf6a0('0x13')](0x193)[_0xf6a0('0x14')]({'message':util[_0xf6a0('0x9')](_0xf6a0('0x15'),_0x3a5e38)});}_0x3e4fde();})[_0xf6a0('0x16')](function(_0x413943){_0x3e4fde(_0x413943);});});}function isUserLimit(){return isLimit(_0xf6a0('0x17'),0x1,db[_0xf6a0('0x18')],{'where':{'$or':[{'role':_0xf6a0('0x19')},{'role':_0xf6a0('0x1a')}]}});}exports[_0xf6a0('0x1b')]=isUserLimit;
\ No newline at end of file
index 97718ef..42ff2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f0=['start','pop','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','forEach','shift','match','filter','indexOf','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x71f0,0x80));var _0x071f=function(_0x5ba46a,_0x582fe0){_0x5ba46a=_0x5ba46a-0x0;var _0x5cbf4f=_0x71f0[_0x5ba46a];return _0x5cbf4f;};'use strict';var _=require(_0x071f('0x0'));var moment=require(_0x071f('0x1'));exports[_0x071f('0x2')]=function(_0x288c0e){var _0x297743={'conditions':[]};_0x297743[_0x071f('0x3')]=_[_0x071f('0x4')](_0x288c0e,_0x071f('0x5'))?'or':_0x071f('0x6');var _0x508e6b=_0x288c0e[_0x071f('0x7')](_0x071f('0x8'),'')[_0x071f('0x7')]('[$or]','')[_0x071f('0x9')]('||');for(var _0x1c6e6e=0x0;_0x1c6e6e<_0x508e6b[_0x071f('0xa')];_0x1c6e6e++){var _0x4684e7=_0x508e6b[_0x1c6e6e]['split'](':=');var _0x1f7508=_0x4684e7[0x0];var _0x261e8b=_0x4684e7['slice'](0x1);_0x261e8b[_0x071f('0xb')](function(_0x34c62d){var _0x8a221d=_0x34c62d[_0x071f('0x9')]('[')[_0x071f('0xc')]();var _0x528376=_0x34c62d[_0x071f('0xd')](/\[(.*?)\]/g);_0x528376[_0x071f('0xb')](function(_0x824ebb){var _0x5b8a31=_0x824ebb[_0x071f('0x9')]('[')[_0x071f('0xe')](function(_0x529f61){return _0x529f61[_0x071f('0xf')](']')>-0x1;})['map'](function(_0x16c72f){return _0x16c72f[_0x071f('0x9')](']')[0x0];})[0x0];_0x297743[_0x071f('0x10')][_0x071f('0x11')]({'field':_0x1f7508,'operator':_0x8a221d,'value':_0x5b8a31});});});}return _0x297743;};exports[_0x071f('0x12')]=function(_0x1894db,_0x4babc3,_0x1c826d){var _0x36ecf8={};if(_0x4babc3===_0x071f('0x13')){if(_0x1c826d[_0x071f('0x14')]===_0x071f('0x15')){_0x1c826d[_0x071f('0x14')]=_0x071f('0x16');_0x1c826d[_0x071f('0x17')]+=','+_0x1c826d[_0x071f('0x17')];}else if(_[_0x071f('0x18')]([_0x071f('0x19'),_0x071f('0x1a')],_0x1c826d[_0x071f('0x14')])){_0x1c826d[_0x071f('0x17')]=moment(_0x1c826d[_0x071f('0x17')])[_0x071f('0x1b')](0x1,_0x071f('0x1c'))[_0x071f('0x1d')](_0x071f('0x1e'));}}if(_0x1c826d[_0x071f('0x1f')]){_0x4babc3=_0x1c826d[_0x071f('0x1f')];_0x36ecf8[_0x071f('0x20')]=_0x071f('0x21')+_0x1894db+'.'+_0x1c826d[_0x071f('0x22')]+_0x071f('0x23')+_0x1c826d[_0x071f('0x1f')]+')\x20'+parseOperator(_0x1c826d[_0x071f('0x14')]);}else{_0x36ecf8[_0x071f('0x20')]=_0x1894db+'.'+_0x1c826d[_0x071f('0x22')]+'\x20'+parseOperator(_0x1c826d[_0x071f('0x14')]);}if(_[_0x071f('0x18')]([_0x071f('0x24'),_0x071f('0x25')],_0x1c826d[_0x071f('0x14')]))_0x36ecf8[_0x071f('0x20')]='('+_0x36ecf8[_0x071f('0x20')]+_0x071f('0x26')+_0x1894db+'.'+_0x1c826d[_0x071f('0x22')]+_0x071f('0x27');_0x36ecf8['value']=parseValue(_0x4babc3,_0x1c826d[_0x071f('0x14')],_0x1c826d['value']);return _0x36ecf8;};function parseOperator(_0x43700f){var _0x1c66e5;switch(_0x43700f){case _0x071f('0x28'):_0x1c66e5=_0x071f('0x29');break;case'$notIn':_0x1c66e5=_0x071f('0x2a');break;case'$eq':_0x1c66e5=_0x071f('0x2b');break;case _0x071f('0x24'):_0x1c66e5=_0x071f('0x2c');break;case _0x071f('0x2d'):case _0x071f('0x2e'):case _0x071f('0x2f'):_0x1c66e5=_0x071f('0x30');break;case _0x071f('0x31'):_0x1c66e5=_0x071f('0x32');break;case'$gt':_0x1c66e5=_0x071f('0x33');break;case'$lte':_0x1c66e5='<=\x20?';break;case _0x071f('0x34'):_0x1c66e5=_0x071f('0x35');break;case'$between':_0x1c66e5=_0x071f('0x36');break;}return _0x1c66e5;}function parseValue(_0x5d963a,_0x5d322b,_0x3c53f9){var _0x47eb35={'start':undefined,'end':undefined};switch(_0x5d322b){case _0x071f('0x28'):case _0x071f('0x25'):_0x47eb35['start']=_0x3c53f9[_0x071f('0x9')](',');break;case _0x071f('0x2d'):_0x47eb35[_0x071f('0x37')]='%'+_0x3c53f9+'%';break;case _0x071f('0x2e'):_0x47eb35['start']=_0x3c53f9+'%';break;case'$endsWith':_0x47eb35[_0x071f('0x37')]='%'+_0x3c53f9;break;case _0x071f('0x16'):var _0xbca658=_0x3c53f9['split'](',');var _0x3c53f9=_0xbca658['shift']();var _0x2c1a36=_0xbca658[_0x071f('0x38')]();if(_0x5d963a===_0x071f('0x13')){_0x3c53f9=moment(_0x3c53f9)[_0x071f('0x39')](0x0,!![])[_0x071f('0x1d')]();_0x2c1a36=moment(_0x2c1a36)[_0x071f('0x39')](0x0,!![])[_0x071f('0x1b')](0x17,_0x071f('0x3a'))[_0x071f('0x1b')](0x3b,_0x071f('0x3b'))[_0x071f('0x1b')](0x3b,_0x071f('0x3c'))[_0x071f('0x1d')]();}_0x47eb35={'start':_0x3c53f9,'end':_0x2c1a36};break;default:_0x47eb35['start']=_0x3c53f9;break;}return _0x47eb35;}
\ No newline at end of file
+var _0x90e1=['$notIn','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','>\x20?','<=\x20?','$gte','$between','$in','start','pop','utcOffset','hours','minutes','seconds','lodash','parseSearch','sqlOperator','startsWith','[$or]','and','replace','split','length','slice','forEach','shift','match','filter','indexOf','conditions','buildExpression','DATE','operator','$eq','value','includes','$lte','add','days','format','castTo','text','CAST(','field','$ne'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x90e1,0x189));var _0x190e=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x90e1[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x190e('0x0'));var moment=require('moment');exports[_0x190e('0x1')]=function(_0x5351aa){var _0x363759={'conditions':[]};_0x363759[_0x190e('0x2')]=_[_0x190e('0x3')](_0x5351aa,_0x190e('0x4'))?'or':_0x190e('0x5');var _0x52890f=_0x5351aa[_0x190e('0x6')]('[$and]','')[_0x190e('0x6')](_0x190e('0x4'),'')[_0x190e('0x7')]('||');for(var _0x281133=0x0;_0x281133<_0x52890f[_0x190e('0x8')];_0x281133++){var _0x22f190=_0x52890f[_0x281133]['split'](':=');var _0x4a55f6=_0x22f190[0x0];var _0x3d3384=_0x22f190[_0x190e('0x9')](0x1);_0x3d3384[_0x190e('0xa')](function(_0x3c34c7){var _0x46382a=_0x3c34c7[_0x190e('0x7')]('[')[_0x190e('0xb')]();var _0xcef3bb=_0x3c34c7[_0x190e('0xc')](/\[(.*?)\]/g);_0xcef3bb[_0x190e('0xa')](function(_0x119a99){var _0x19161d=_0x119a99[_0x190e('0x7')]('[')[_0x190e('0xd')](function(_0x1e711c){return _0x1e711c[_0x190e('0xe')](']')>-0x1;})['map'](function(_0x5a9b7f){return _0x5a9b7f[_0x190e('0x7')](']')[0x0];})[0x0];_0x363759[_0x190e('0xf')]['push']({'field':_0x4a55f6,'operator':_0x46382a,'value':_0x19161d});});});}return _0x363759;};exports[_0x190e('0x10')]=function(_0x3a709f,_0x3395a1,_0x2f6371){var _0x35f0a1={};if(_0x3395a1===_0x190e('0x11')){if(_0x2f6371[_0x190e('0x12')]===_0x190e('0x13')){_0x2f6371[_0x190e('0x12')]='$between';_0x2f6371['value']+=','+_0x2f6371[_0x190e('0x14')];}else if(_[_0x190e('0x15')](['$gt',_0x190e('0x16')],_0x2f6371[_0x190e('0x12')])){_0x2f6371[_0x190e('0x14')]=moment(_0x2f6371[_0x190e('0x14')])[_0x190e('0x17')](0x1,_0x190e('0x18'))[_0x190e('0x19')]('YYYY-MM-DD');}}if(_0x2f6371['castTo']){_0x3395a1=_0x2f6371[_0x190e('0x1a')];_0x35f0a1[_0x190e('0x1b')]=_0x190e('0x1c')+_0x3a709f+'.'+_0x2f6371[_0x190e('0x1d')]+'\x20AS\x20'+_0x2f6371[_0x190e('0x1a')]+')\x20'+parseOperator(_0x2f6371[_0x190e('0x12')]);}else{_0x35f0a1['text']=_0x3a709f+'.'+_0x2f6371[_0x190e('0x1d')]+'\x20'+parseOperator(_0x2f6371['operator']);}if(_[_0x190e('0x15')]([_0x190e('0x1e'),_0x190e('0x1f')],_0x2f6371[_0x190e('0x12')]))_0x35f0a1[_0x190e('0x1b')]='('+_0x35f0a1[_0x190e('0x1b')]+'\x20OR\x20'+_0x3a709f+'.'+_0x2f6371[_0x190e('0x1d')]+_0x190e('0x20');_0x35f0a1[_0x190e('0x14')]=parseValue(_0x3395a1,_0x2f6371['operator'],_0x2f6371[_0x190e('0x14')]);return _0x35f0a1;};function parseOperator(_0x2a1f0b){var _0x4a858c;switch(_0x2a1f0b){case'$in':_0x4a858c=_0x190e('0x21');break;case _0x190e('0x1f'):_0x4a858c=_0x190e('0x22');break;case _0x190e('0x13'):_0x4a858c=_0x190e('0x23');break;case _0x190e('0x1e'):_0x4a858c=_0x190e('0x24');break;case _0x190e('0x25'):case _0x190e('0x26'):case _0x190e('0x27'):_0x4a858c=_0x190e('0x28');break;case _0x190e('0x29'):_0x4a858c='<\x20?';break;case'$gt':_0x4a858c=_0x190e('0x2a');break;case _0x190e('0x16'):_0x4a858c=_0x190e('0x2b');break;case _0x190e('0x2c'):_0x4a858c='>=\x20?';break;case _0x190e('0x2d'):_0x4a858c='BETWEEN\x20?\x20AND\x20?';break;}return _0x4a858c;}function parseValue(_0x38a338,_0x4c5cfd,_0x4291d6){var _0x3a1391={'start':undefined,'end':undefined};switch(_0x4c5cfd){case _0x190e('0x2e'):case _0x190e('0x1f'):_0x3a1391[_0x190e('0x2f')]=_0x4291d6[_0x190e('0x7')](',');break;case _0x190e('0x25'):_0x3a1391[_0x190e('0x2f')]='%'+_0x4291d6+'%';break;case _0x190e('0x26'):_0x3a1391[_0x190e('0x2f')]=_0x4291d6+'%';break;case'$endsWith':_0x3a1391[_0x190e('0x2f')]='%'+_0x4291d6;break;case'$between':var _0x1c8f6b=_0x4291d6['split'](',');var _0x4291d6=_0x1c8f6b[_0x190e('0xb')]();var _0x1756d6=_0x1c8f6b[_0x190e('0x30')]();if(_0x38a338===_0x190e('0x11')){_0x4291d6=moment(_0x4291d6)[_0x190e('0x31')](0x0,!![])['format']();_0x1756d6=moment(_0x1756d6)[_0x190e('0x31')](0x0,!![])[_0x190e('0x17')](0x17,_0x190e('0x32'))[_0x190e('0x17')](0x3b,_0x190e('0x33'))[_0x190e('0x17')](0x3b,_0x190e('0x34'))[_0x190e('0x19')]();}_0x3a1391={'start':_0x4291d6,'end':_0x1756d6};break;default:_0x3a1391['start']=_0x4291d6;break;}return _0x3a1391;}
\ No newline at end of file
index 040ff90..241656c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7b=['indexOf','cast','priority','unsigned','DESC','col','omit','isEmpty','length','isObject','isString','unset','hasOwnProperty','isNumeric','isEmail','match','getFullTextValue','forEach','replace','join','getOptions','$id','query','model','intersection','attributes','nolimit','order','where','pick','filter','includes','columns','VIRTUAL','lower','lodash','parse','keys','fields','split','filters','forOwn','find','type','DATE','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','map'];(function(_0x1bfa81,_0x3a1a1a){var _0x1514fe=function(_0x484961){while(--_0x484961){_0x1bfa81['push'](_0x1bfa81['shift']());}};_0x1514fe(++_0x3a1a1a);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x19b69c,_0x451651){_0x19b69c=_0x19b69c-0x0;var _0x4a4c3c=_0x6c7b[_0x19b69c];return _0x4a4c3c;};'use strict';var _=require(_0xb6c7('0x0'));var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x4fd587){var _0x3f3910=['ne'];try{var _0x5528b3=JSON[_0xb6c7('0x1')](_0x4fd587);var _0x438aa8=Object[_0xb6c7('0x2')](_0x5528b3)[0x0];return _0x3f3910['includes'](_0x438aa8);}catch(_0x294dc9){return![];}}function getOperatorValue(_0x290c39){var _0xfe3eb9=JSON[_0xb6c7('0x1')](_0x290c39);var _0xb889c3=Object['keys'](_0xfe3eb9)[0x0];var _0x12e97e=_0xfe3eb9[_0xb889c3];return{['$'+_0xb889c3]:_0x12e97e};}exports[_0xb6c7('0x3')]=function(_0xe2ce08){var _0x9c88ae=null;if(_0xe2ce08){_0x9c88ae=_0xe2ce08[_0xb6c7('0x4')](',');}return _0x9c88ae;};exports[_0xb6c7('0x5')]=function(_0x245016,_0x42343b){var _0x594dbb={};if(!_['isEmpty'](_0x245016)){_[_0xb6c7('0x6')](_0x245016,function(_0x11a1ee,_0x2f9c01){try{if(_0x42343b){var _0x116ad8=_[_0xb6c7('0x7')](_0x42343b,{'name':_0x2f9c01})||{};if(hasSequelizeOperator(_0x11a1ee)){_0x594dbb[_0x2f9c01]=getOperatorValue(_0x11a1ee);}else if(_0x116ad8[_0xb6c7('0x8')]===_0xb6c7('0x9')&&_['isPlainObject'](_0x11a1ee)){var _0x9b32b7=JSON[_0xb6c7('0x1')](_0x11a1ee);var _0x6b946={'$gte':moment(moment(_0x9b32b7[_0xb6c7('0xa')])[_0xb6c7('0xb')](_0xb6c7('0xc')))[_0xb6c7('0xd')]()['format'](),'$lte':moment(moment(_0x9b32b7[_0xb6c7('0xe')])['format']('YYYY-MM-DD'))['utc']()[_0xb6c7('0xf')](0x1,'s')['format']()};_0x594dbb[_0x2f9c01]=_0x6b946;}else if(_0x116ad8[_0xb6c7('0x10')]===_0xb6c7('0x11')){_0x594dbb[_0x2f9c01]=_0x11a1ee;}else{_0x594dbb[_0x2f9c01]=_[_0xb6c7('0x12')](_0x11a1ee)?_0x11a1ee:JSON[_0xb6c7('0x1')](_0x11a1ee);}}else{_0x594dbb[_0x2f9c01]=_[_0xb6c7('0x12')](_0x11a1ee)?_0x11a1ee:JSON[_0xb6c7('0x1')](_0x11a1ee);}}catch(_0x2c819d){_0x594dbb[_0x2f9c01]=_0x11a1ee[_0xb6c7('0x4')](',');}});}return _0x594dbb;};exports[_0xb6c7('0x13')]=function(_0xd0434e){_0xd0434e=parseInt(_0xd0434e,0xa);if(!_0xd0434e||_0xd0434e<0x0){_0xd0434e=LIMIT_VALUE;}return _0xd0434e;};exports[_0xb6c7('0x14')]=function(_0x3f133f){_0x3f133f=parseInt(_0x3f133f,0xa);if(!_0x3f133f||_0x3f133f<0x0){_0x3f133f=0x0;}return _0x3f133f;};exports[_0xb6c7('0x15')]=function(_0x5b5022){var _0x274f76,_0x1cbcc8=null;if(_0x5b5022){_0x274f76=_0x5b5022['split'](',');_0x1cbcc8=_[_0xb6c7('0x16')](_0x274f76,function(_0x5a1c0a){if(_0x5a1c0a[_0xb6c7('0x17')]('-')===0x0){return[_0x5a1c0a==='priority'?sequelize[_0xb6c7('0x18')](sequelize['col'](_0xb6c7('0x19')),_0xb6c7('0x1a')):_0x5a1c0a['substr'](0x1),_0xb6c7('0x1b')];}else{return[_0x5a1c0a===_0xb6c7('0x19')?sequelize[_0xb6c7('0x18')](sequelize[_0xb6c7('0x1c')](_0xb6c7('0x19')),_0xb6c7('0x1a')):_0x5a1c0a,'ASC'];}});}return _0x1cbcc8;};exports[_0xb6c7('0x1d')]=function(_0x1f4e06,_0x209a21){if(_[_0xb6c7('0x1e')](_0x1f4e06)){return _0x1f4e06;}if(_['isArray'](_0x1f4e06)){for(var _0x1eb265=0x0;_0x1eb265<_0x1f4e06[_0xb6c7('0x1f')];_0x1eb265+=0x1){_0x1f4e06[_0x1eb265]=this['omit'](_0x1f4e06[_0x1eb265],_0x209a21);}return _0x1f4e06;}if(!_[_0xb6c7('0x20')](_0x1f4e06)){return _0x1f4e06;}if(_[_0xb6c7('0x21')](_0x209a21)){_0x209a21=[_0x209a21];}if(!_[_0xb6c7('0x12')](_0x209a21)){return _0x1f4e06;}for(var _0x32cd6b=0x0;_0x32cd6b<_0x209a21['length'];_0x32cd6b+=0x1){_[_0xb6c7('0x22')](_0x1f4e06,_0x209a21[_0x32cd6b]);}for(var _0x54373f in _0x1f4e06){if(_0x1f4e06[_0xb6c7('0x23')](_0x54373f)){_0x1f4e06[_0x54373f]=this[_0xb6c7('0x1d')](_0x1f4e06[_0x54373f],_0x209a21);}}return _0x1f4e06;};exports[_0xb6c7('0x24')]=function(_0x5f3be2){return _0x5f3be2['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xb6c7('0x25')]=function(_0xcd9464){return _0xcd9464[_0xb6c7('0x26')](/^\S+@\S+$/)?!![]:![];};exports[_0xb6c7('0x27')]=function(_0x41e46c){var _0x1b4180=[];_0x41e46c[_0xb6c7('0x4')](/[ ,]+/)[_0xb6c7('0x28')](function(_0x1f82bd){_0x1f82bd=_0x1f82bd[_0xb6c7('0x29')](/([^:]")"+/g,'$1');_0x1f82bd='+'+_0x1f82bd+'*';var _0x5dabdd=/[ `!@#$%^&*()_\-?~]/;if(_0x1f82bd[_0xb6c7('0x26')](_0x5dabdd))_0x1f82bd='\x22'+_0x1f82bd+'\x22';_0x1b4180['push'](_0x1f82bd);});return _0x1b4180[_0xb6c7('0x2a')]('\x20');};exports[_0xb6c7('0x2b')]=function(_0x4e9e90,_0x175e97,_0x1d070d){var _0x5534ca={},_0x52b120={};if(_0x175e97['query'][_0xb6c7('0x2c')]){_0x175e97[_0xb6c7('0x2d')]['id']=_0x175e97['query'][_0xb6c7('0x2c')];delete _0x175e97[_0xb6c7('0x2d')]['$id'];}_0x5534ca[_0xb6c7('0x2e')]=_[_0xb6c7('0x16')](_0x4e9e90,_0xb6c7('0x10'));_0x5534ca[_0xb6c7('0x2d')]=_[_0xb6c7('0x2')](_0x175e97[_0xb6c7('0x2d')]);_0x5534ca['filters']=_[_0xb6c7('0x2f')](_0x5534ca[_0xb6c7('0x2e')],_0x5534ca[_0xb6c7('0x2d')]);_0x52b120[_0xb6c7('0x30')]=_[_0xb6c7('0x2f')](_0x5534ca[_0xb6c7('0x2e')],this[_0xb6c7('0x3')](_0x175e97['query']['fields']));_0x52b120[_0xb6c7('0x30')]=_0x52b120[_0xb6c7('0x30')][_0xb6c7('0x1f')]?_0x52b120[_0xb6c7('0x30')]:_0x5534ca[_0xb6c7('0x2e')];if(!_0x175e97[_0xb6c7('0x2d')][_0xb6c7('0x23')](_0xb6c7('0x31'))){_0x52b120[_0xb6c7('0x13')]=this[_0xb6c7('0x13')](_0x175e97['query'][_0xb6c7('0x13')]);_0x52b120['offset']=this['offset'](_0x175e97[_0xb6c7('0x2d')]['offset']);}_0x52b120[_0xb6c7('0x32')]=this[_0xb6c7('0x15')](_0x175e97['query'][_0xb6c7('0x15')]);_0x52b120[_0xb6c7('0x33')]=this[_0xb6c7('0x5')](_[_0xb6c7('0x34')](_0x175e97[_0xb6c7('0x2d')],_0x5534ca['filters']),_0x4e9e90);if(_0x175e97['query'][_0xb6c7('0x35')]){var _0xb575=_0x4e9e90;var _0xb7f85b=_0x175e97[_0xb6c7('0x2d')]['filter'];if(typeof _0xb7f85b==='object'){_0xb575=_[_0xb6c7('0x35')](_0x4e9e90,function(_0x4019c){return _[_0xb6c7('0x36')](_0xb7f85b[_0xb6c7('0x37')],_0x4019c[_0xb6c7('0x10')]);});_0xb7f85b=_0xb7f85b['value'];}_0x52b120['where']=_['merge'](_0x52b120[_0xb6c7('0x33')],{'$or':_[_0xb6c7('0x16')](_0xb575,function(_0x4462dc){if(_0x4462dc['type']!==_0xb6c7('0x38')){if(_0x1d070d){return sequelize[_0xb6c7('0x33')](sequelize['fn']('lower',sequelize[_0xb6c7('0x1c')](_0x4462dc[_0xb6c7('0x10')])),{'$like':sequelize['fn'](_0xb6c7('0x39'),'%'+_0x175e97[_0xb6c7('0x2d')][_0xb6c7('0x35')]+'%')});}else{var _0x4ee526={};_0x4ee526[_0x4462dc[_0xb6c7('0x10')]]={'$like':'%'+_0x175e97[_0xb6c7('0x2d')][_0xb6c7('0x35')]+'%'};return _0x4ee526;}}})});}_0x52b120=_['merge']({},_0x52b120,_0x175e97['options']);return _0x52b120;};
\ No newline at end of file
+var _0x7bae=['omit','isObject','isString','length','unset','match','^[+]?[0-9]*$','getFullTextValue','replace','getOptions','query','$id','model','name','filters','intersection','attributes','hasOwnProperty','nolimit','order','where','pick','filter','object','columns','merge','type','VIRTUAL','lower','options','moment','keys','includes','parse','fields','split','isEmpty','forOwn','find','DATE','$gte','format','YYYY-MM-DD','$lte','subtract','isArray','limit','offset','sort','map','indexOf','priority','col','unsigned','substr','DESC','cast'];(function(_0x44bf58,_0x4d09dd){var _0x426c87=function(_0x26b397){while(--_0x26b397){_0x44bf58['push'](_0x44bf58['shift']());}};_0x426c87(++_0x4d09dd);}(_0x7bae,0x13b));var _0xe7ba=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x7bae[_0x4baae2];return _0x1a2285;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0xe7ba('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x1e05c4){var _0x503803=['ne'];try{var _0x3963c7=JSON['parse'](_0x1e05c4);var _0x120efa=Object[_0xe7ba('0x1')](_0x3963c7)[0x0];return _0x503803[_0xe7ba('0x2')](_0x120efa);}catch(_0x2276df){return![];}}function getOperatorValue(_0x398a6a){var _0xfd3a22=JSON[_0xe7ba('0x3')](_0x398a6a);var _0x3c5e59=Object[_0xe7ba('0x1')](_0xfd3a22)[0x0];var _0x34fb18=_0xfd3a22[_0x3c5e59];return{['$'+_0x3c5e59]:_0x34fb18};}exports[_0xe7ba('0x4')]=function(_0x27b1d5){var _0x41c39d=null;if(_0x27b1d5){_0x41c39d=_0x27b1d5[_0xe7ba('0x5')](',');}return _0x41c39d;};exports['filters']=function(_0x3df8bf,_0xe57e33){var _0x375ebb={};if(!_[_0xe7ba('0x6')](_0x3df8bf)){_[_0xe7ba('0x7')](_0x3df8bf,function(_0x1672f0,_0x99a86f){try{if(_0xe57e33){var _0x448bcc=_[_0xe7ba('0x8')](_0xe57e33,{'name':_0x99a86f})||{};if(hasSequelizeOperator(_0x1672f0)){_0x375ebb[_0x99a86f]=getOperatorValue(_0x1672f0);}else if(_0x448bcc['type']===_0xe7ba('0x9')&&_['isPlainObject'](_0x1672f0)){var _0x602b1=JSON[_0xe7ba('0x3')](_0x1672f0);var _0x390596={'$gte':moment(moment(_0x602b1[_0xe7ba('0xa')])[_0xe7ba('0xb')](_0xe7ba('0xc')))['utc']()['format'](),'$lte':moment(moment(_0x602b1[_0xe7ba('0xd')])[_0xe7ba('0xb')](_0xe7ba('0xc')))['utc']()[_0xe7ba('0xe')](0x1,'s')['format']()};_0x375ebb[_0x99a86f]=_0x390596;}else if(_0x448bcc['name']==='uniqueid'){_0x375ebb[_0x99a86f]=_0x1672f0;}else{_0x375ebb[_0x99a86f]=_[_0xe7ba('0xf')](_0x1672f0)?_0x1672f0:JSON['parse'](_0x1672f0);}}else{_0x375ebb[_0x99a86f]=_[_0xe7ba('0xf')](_0x1672f0)?_0x1672f0:JSON['parse'](_0x1672f0);}}catch(_0x4e3021){_0x375ebb[_0x99a86f]=_0x1672f0['split'](',');}});}return _0x375ebb;};exports[_0xe7ba('0x10')]=function(_0x30086c){_0x30086c=parseInt(_0x30086c,0xa);if(!_0x30086c||_0x30086c<0x0){_0x30086c=LIMIT_VALUE;}return _0x30086c;};exports[_0xe7ba('0x11')]=function(_0x3c06c3){_0x3c06c3=parseInt(_0x3c06c3,0xa);if(!_0x3c06c3||_0x3c06c3<0x0){_0x3c06c3=0x0;}return _0x3c06c3;};exports[_0xe7ba('0x12')]=function(_0x58550c){var _0x149c62,_0x20c653=null;if(_0x58550c){_0x149c62=_0x58550c[_0xe7ba('0x5')](',');_0x20c653=_[_0xe7ba('0x13')](_0x149c62,function(_0x4aaf35){if(_0x4aaf35[_0xe7ba('0x14')]('-')===0x0){return[_0x4aaf35===_0xe7ba('0x15')?sequelize['cast'](sequelize[_0xe7ba('0x16')](_0xe7ba('0x15')),_0xe7ba('0x17')):_0x4aaf35[_0xe7ba('0x18')](0x1),_0xe7ba('0x19')];}else{return[_0x4aaf35===_0xe7ba('0x15')?sequelize[_0xe7ba('0x1a')](sequelize[_0xe7ba('0x16')](_0xe7ba('0x15')),_0xe7ba('0x17')):_0x4aaf35,'ASC'];}});}return _0x20c653;};exports['omit']=function(_0x4dcc7b,_0x4cd124){if(_[_0xe7ba('0x6')](_0x4dcc7b)){return _0x4dcc7b;}if(_['isArray'](_0x4dcc7b)){for(var _0x4ecc0d=0x0;_0x4ecc0d<_0x4dcc7b['length'];_0x4ecc0d+=0x1){_0x4dcc7b[_0x4ecc0d]=this[_0xe7ba('0x1b')](_0x4dcc7b[_0x4ecc0d],_0x4cd124);}return _0x4dcc7b;}if(!_[_0xe7ba('0x1c')](_0x4dcc7b)){return _0x4dcc7b;}if(_[_0xe7ba('0x1d')](_0x4cd124)){_0x4cd124=[_0x4cd124];}if(!_[_0xe7ba('0xf')](_0x4cd124)){return _0x4dcc7b;}for(var _0x3435c6=0x0;_0x3435c6<_0x4cd124[_0xe7ba('0x1e')];_0x3435c6+=0x1){_[_0xe7ba('0x1f')](_0x4dcc7b,_0x4cd124[_0x3435c6]);}for(var _0x3a59d6 in _0x4dcc7b){if(_0x4dcc7b['hasOwnProperty'](_0x3a59d6)){_0x4dcc7b[_0x3a59d6]=this[_0xe7ba('0x1b')](_0x4dcc7b[_0x3a59d6],_0x4cd124);}}return _0x4dcc7b;};exports['isNumeric']=function(_0x102925){return _0x102925[_0xe7ba('0x20')](RegExp(_0xe7ba('0x21')))?!![]:![];};exports['isEmail']=function(_0x587c7d){return _0x587c7d[_0xe7ba('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xe7ba('0x22')]=function(_0x8d5020){var _0x20b6cd=[];_0x8d5020[_0xe7ba('0x5')](/[ ,]+/)['forEach'](function(_0x37911d){_0x37911d=_0x37911d[_0xe7ba('0x23')](/([^:]")"+/g,'$1');_0x37911d='+'+_0x37911d+'*';var _0x5b5ff3=/[ `!@#$%^&*()_\-?~]/;if(_0x37911d[_0xe7ba('0x20')](_0x5b5ff3))_0x37911d='\x22'+_0x37911d+'\x22';_0x20b6cd['push'](_0x37911d);});return _0x20b6cd['join']('\x20');};exports[_0xe7ba('0x24')]=function(_0x134f21,_0x1be947,_0x52f90e){var _0x3b14b4={},_0x4ccdc7={};if(_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x26')]){_0x1be947[_0xe7ba('0x25')]['id']=_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x26')];delete _0x1be947['query'][_0xe7ba('0x26')];}_0x3b14b4[_0xe7ba('0x27')]=_['map'](_0x134f21,_0xe7ba('0x28'));_0x3b14b4[_0xe7ba('0x25')]=_[_0xe7ba('0x1')](_0x1be947['query']);_0x3b14b4[_0xe7ba('0x29')]=_[_0xe7ba('0x2a')](_0x3b14b4['model'],_0x3b14b4[_0xe7ba('0x25')]);_0x4ccdc7[_0xe7ba('0x2b')]=_[_0xe7ba('0x2a')](_0x3b14b4['model'],this[_0xe7ba('0x4')](_0x1be947[_0xe7ba('0x25')]['fields']));_0x4ccdc7[_0xe7ba('0x2b')]=_0x4ccdc7[_0xe7ba('0x2b')][_0xe7ba('0x1e')]?_0x4ccdc7['attributes']:_0x3b14b4['model'];if(!_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x2c')](_0xe7ba('0x2d'))){_0x4ccdc7[_0xe7ba('0x10')]=this[_0xe7ba('0x10')](_0x1be947['query'][_0xe7ba('0x10')]);_0x4ccdc7[_0xe7ba('0x11')]=this[_0xe7ba('0x11')](_0x1be947[_0xe7ba('0x25')]['offset']);}_0x4ccdc7[_0xe7ba('0x2e')]=this[_0xe7ba('0x12')](_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x12')]);_0x4ccdc7[_0xe7ba('0x2f')]=this[_0xe7ba('0x29')](_[_0xe7ba('0x30')](_0x1be947['query'],_0x3b14b4[_0xe7ba('0x29')]),_0x134f21);if(_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]){var _0x401b0a=_0x134f21;var _0xf61205=_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')];if(typeof _0xf61205===_0xe7ba('0x32')){_0x401b0a=_[_0xe7ba('0x31')](_0x134f21,function(_0x50792c){return _[_0xe7ba('0x2')](_0xf61205[_0xe7ba('0x33')],_0x50792c['name']);});_0xf61205=_0xf61205['value'];}_0x4ccdc7[_0xe7ba('0x2f')]=_[_0xe7ba('0x34')](_0x4ccdc7[_0xe7ba('0x2f')],{'$or':_['map'](_0x401b0a,function(_0x249e1d){if(_0x249e1d[_0xe7ba('0x35')]!==_0xe7ba('0x36')){if(_0x52f90e){return sequelize[_0xe7ba('0x2f')](sequelize['fn'](_0xe7ba('0x37'),sequelize['col'](_0x249e1d[_0xe7ba('0x28')])),{'$like':sequelize['fn']('lower','%'+_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]+'%')});}else{var _0xe0f1c3={};_0xe0f1c3[_0x249e1d[_0xe7ba('0x28')]]={'$like':'%'+_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]+'%'};return _0xe0f1c3;}}})});}_0x4ccdc7=_[_0xe7ba('0x34')]({},_0x4ccdc7,_0x1be947[_0xe7ba('0x38')]);return _0x4ccdc7;};
\ No newline at end of file
index 68b6690..3734059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5992=['findAll','name','openchannelPause','pauseType','find','catch','getSortedAgentsIdsByStatus','split','fields','globalStatus','order','DESC','ASC','getUpdatedSortOptions','fullname','substring','indexOf','internal','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','chatStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','routealias','omit','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','smsPause','voicePause','whatsappPause','filter','length','idle','unknown','unavailable','isNil','voiceStatus','pause','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','then','error','Agents','merge','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','startCase','Queue','getAgents','flatten','map','uniq','value','getAgentIdsByQueues','includes','resolve','User'];(function(_0x1ea7f2,_0x1d999f){var _0x4e23f4=function(_0x30b765){while(--_0x30b765){_0x1ea7f2['push'](_0x1ea7f2['shift']());}};_0x4e23f4(++_0x1d999f);}(_0x5992,0x8d));var _0x2599=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x5992[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0x2599('0x0'));var jayson=require(_0x2599('0x1'));var db=require(_0x2599('0x2'))['db'];var amiClient=jayson[_0x2599('0x3')]['http']({'port':0x232a});var routingClient=jayson['client'][_0x2599('0x4')]({'port':0x232c});function isAgentPaused(_0x274988,_0x1494eb){var _0x393334=[_0x274988[_0x2599('0x5')],_0x274988[_0x2599('0x6')],_0x274988[_0x2599('0x7')],_0x274988['openchannelPause'],_0x274988[_0x2599('0x8')],_0x274988[_0x2599('0x9')],_0x274988[_0x2599('0xa')]];if(!_0x1494eb)return _['every'](_0x393334);var _0x449788=_[_0x2599('0xb')](_0x393334);return _0x449788[_0x2599('0xc')]>0x0&&_0x449788[_0x2599('0xc')]<_0x393334[_0x2599('0xc')]?!![]:![];}function isIdle(_0x3e37f6){return _0x3e37f6===_0x2599('0xd')||_0x3e37f6===_0x2599('0xe')||_0x3e37f6===_0x2599('0xf')||_0x3e37f6==='ringing'||_[_0x2599('0x10')](_0x3e37f6);}function isAgentIdle(_0x5e7833){if(_0x5e7833[_0x2599('0x11')]!==_0x2599('0xd')&&_0x5e7833['voicePause']){_0x5e7833[_0x2599('0x11')]=_0x2599('0x12');return![];}return _[_0x2599('0x13')]([_0x5e7833[_0x2599('0x14')],_0x5e7833[_0x2599('0x15')],_0x5e7833[_0x2599('0x16')],_0x5e7833[_0x2599('0x17')],_0x5e7833[_0x2599('0x18')],_0x5e7833[_0x2599('0x11')],_0x5e7833[_0x2599('0x19')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x2599('0x1a')]('Agents',{})[_0x2599('0x1b')](function(_0x5e9a19){if(_0x5e9a19[_0x2599('0x1c')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x5f0d74=_0x5e9a19['result'];return routingClient[_0x2599('0x1a')](_0x2599('0x1d'),{})['then'](function(_0x938d95){if(_0x938d95['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0xe71454=_0x938d95['result'];return _[_0x2599('0x1e')]({},_0x5f0d74,_0xe71454);});})['catch'](function(_0x301879){throw _0x301879;});}exports[_0x2599('0x1f')]=getRealtimeAgents;function getAgentStatus(_0x36ca98){var _0x433e7c='unknown';if(isAgentPaused(_0x36ca98))_0x433e7c=_0x2599('0x12');else if(isAgentPaused(_0x36ca98,!![]))_0x433e7c=_0x2599('0x20');else if(isAgentIdle(_0x36ca98))_0x433e7c=_0x2599('0xd');else _0x433e7c=_0x2599('0x21');return _0x433e7c;}exports[_0x2599('0x22')]=getAgentStatus;function getAgentIdsByQueues(_0x329dcc,_0x25985a){var _0x2f5d2b=_[_0x2599('0x23')](_0x329dcc)?_0x329dcc:[_0x329dcc];var _0x41bc52=_[_0x2599('0x24')](_0x25985a)+_0x2599('0x25');var _0x2ae16c=_['map'](_0x2f5d2b,function(_0x1df084){return db[_0x41bc52]['findOne']({'where':{'id':_0x1df084}})[_0x2599('0x1b')](function(_0x3acbc7){if(!_0x3acbc7)return[];return _0x3acbc7[_0x2599('0x26')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x2ae16c)[_0x2599('0x1b')](function(_0x5857a3){var _0x429779=_(_0x5857a3)[_0x2599('0x27')]()[_0x2599('0x28')]('id')[_0x2599('0x29')]()[_0x2599('0x2a')]();return _0x429779;});}exports[_0x2599('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x29fa7d,_0x3e57c3,_0x27a87f){try{if(_0x3e57c3['length']>0x0){_0x29fa7d=_0x29fa7d[_0x2599('0xb')](function(_0x1e3b88){return _0x3e57c3[_0x2599('0x2c')](_0x1e3b88['id']);});}var _0x39ba05=_0x29fa7d[_0x2599('0xb')](function(_0x430ecf){var _0x3dcb6e='busy';if(isAgentIdle(_0x430ecf)){_0x3dcb6e=_0x2599('0xd');}return _0x3dcb6e===_0x27a87f;});return _[_0x2599('0x28')](_0x39ba05,'id');}catch(_0x3b73f3){throw _0x3b73f3;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x45237b,_0x376e9a,_0x24e541){return Promise[_0x2599('0x2d')]()[_0x2599('0x1b')](function(){if(_0x376e9a[_0x2599('0xc')]>0x0){_0x45237b=_0x45237b['filter'](function(_0x517540){return _0x376e9a[_0x2599('0x2c')](_0x517540['id']);});}return _0x45237b;})[_0x2599('0x1b')](function(){return db[_0x2599('0x2e')][_0x2599('0x2f')]({'attributes':['id',_0x2599('0x30'),'fullname',_0x2599('0x5'),_0x2599('0x6'),_0x2599('0x7'),_0x2599('0x31'),'smsPause',_0x2599('0x9'),_0x2599('0xa'),_0x2599('0x32')],'where':{'id':{'$in':_[_0x2599('0x28')](_0x45237b,'id')}},'raw':!![]});})[_0x2599('0x1b')](function(_0x3c46c0){return _0x3c46c0[_0x2599('0x28')](function(_0x77db4e){var _0xdd6ec6=_[_0x2599('0x33')](_0x45237b,['id',_0x77db4e['id']]);var _0x56b830=filterAgentAttributes(_0xdd6ec6);_[_0x2599('0x1e')](_0x77db4e,_0x56b830);_0x77db4e['globalStatus']=getAgentStatus(_0x77db4e);return _0x77db4e;});})['then'](function(_0x28e990){var _0x8843d1=sortAgentsByStatus(_0x28e990,_0x24e541);return _[_0x2599('0x28')](_0x8843d1,'id');})[_0x2599('0x34')](function(_0x12e898){throw _0x12e898;});}exports[_0x2599('0x35')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x3ecc65){var _0x5254b7={'fields':[],'order':null};var _0x32c0ed=_0x3ecc65[_0x2599('0x36')](',');_0x5254b7[_0x2599('0x37')]=_['filter'](_0x32c0ed,function(_0x143a1f){if(!_0x143a1f[_0x2599('0x2c')](_0x2599('0x38'))){return!![];}_0x5254b7[_0x2599('0x39')]=_['startsWith'](_0x143a1f,'-')?_0x2599('0x3a'):_0x2599('0x3b');return![];});return _0x5254b7;}exports[_0x2599('0x3c')]=getUpdatedSortOptions;function validateSortParameter(_0x5da406){if(_0x5da406[_0x2599('0x2c')](_0x2599('0x3d'))&&!_0x5da406[_0x2599('0x2c')]('internal')){var _0x28de8d=_0x5da406[_0x2599('0x3e')](0x0,_0x5da406[_0x2599('0x3f')](_0x2599('0x3d')));_0x5da406+=','+_0x28de8d+_0x2599('0x40');}return _0x5da406;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x35cf5e,_0x592dea){var _0x24a21f=_0x35cf5e[_0x2599('0x41')](function(_0x46c666,_0x1f6397){if(_0x46c666[_0x2599('0x38')]===_0x1f6397[_0x2599('0x38')]){if(_0x46c666[_0x2599('0x38')]===_0x2599('0x12')){if(_0x592dea===_0x2599('0x3a')){return(_0x46c666[_0x2599('0x32')]||'')<(_0x1f6397[_0x2599('0x32')]||'')||_0x46c666['fullname'][_0x2599('0x42')]()>_0x1f6397[_0x2599('0x3d')][_0x2599('0x42')]()?0x1:-0x1;}else{return(_0x46c666[_0x2599('0x32')]||'')<(_0x1f6397[_0x2599('0x32')]||'')||_0x46c666[_0x2599('0x3d')][_0x2599('0x42')]()>_0x1f6397[_0x2599('0x3d')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x592dea===_0x2599('0x3a')){return _0x46c666[_0x2599('0x3d')][_0x2599('0x42')]()<_0x1f6397[_0x2599('0x3d')][_0x2599('0x42')]()?0x1:-0x1;}else{return _0x46c666['fullname'][_0x2599('0x42')]()<_0x1f6397[_0x2599('0x3d')][_0x2599('0x42')]()?-0x1:0x1;}}}else{if(_0x592dea==='DESC'){return _0x46c666[_0x2599('0x38')]<_0x1f6397[_0x2599('0x38')]?0x1:-0x1;}else{return _0x46c666[_0x2599('0x38')]<_0x1f6397[_0x2599('0x38')]?-0x1:0x1;}}});return _0x24a21f;}exports[_0x2599('0x43')]=sortAgentsByStatus;function filterAgentAttributes(_0x412f9b){var _0xaf7b6=[_0x2599('0x44'),_0x2599('0x45'),_0x2599('0x46'),'lastPauseAt','pauseType',_0x2599('0x47'),_0x2599('0x40'),_0x2599('0x48'),_0x2599('0x5'),_0x2599('0x31'),_0x2599('0x7'),_0x2599('0x8'),'whatsappPause',_0x2599('0x6'),_0x2599('0x9'),_0x2599('0x49'),_0x2599('0x4a'),_0x2599('0x4b'),_0x2599('0x4c'),_0x2599('0x4d'),_0x2599('0x4e'),_0x2599('0x4f'),_0x2599('0x50'),_0x2599('0x51'),_0x2599('0x52'),'whatsappCurrentCapacity',_0x2599('0x53'),_0x2599('0x14'),_0x2599('0x17'),_0x2599('0x16'),'smsStatus','whatsappStatus','faxStatus',_0x2599('0x11'),_0x2599('0x54'),'openchannelStatusTime','mailStatusTime',_0x2599('0x55'),_0x2599('0x56'),_0x2599('0x57'),_0x2599('0x58'),_0x2599('0x59'),_0x2599('0x5a'),_0x2599('0x5b'),'phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording',_0x2599('0x5c')];var _0x20ed55=[_0x2599('0x5'),_0x2599('0x31'),_0x2599('0x7'),_0x2599('0x8'),_0x2599('0xa'),_0x2599('0x6'),_0x2599('0x9'),'online'];var _0x4ffd02=_(_0x412f9b)[_0x2599('0x5d')](_0x20ed55)['pick'](_0xaf7b6)[_0x2599('0x2a')]();return _0x4ffd02;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
+var _0x665e=['faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','chatStatusTime','openchannelStatusTime','voiceStatusTime','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','pick','value','lodash','client','http','smsPause','voicePause','whatsappPause','every','filter','length','idle','unknown','ringing','isNil','voiceStatus','chatStatus','faxStatus','mailStatus','smsStatus','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','request','then','catch','getRealtimeAgents','*pause','isArray','findOne','getAgents','all','uniq','getAgentIdsByQueues','includes','busy','map','getAgentIdsByStatus','User','name','fullname','chatPause','mailPause','openchannelPause','pauseType','find','merge','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','DESC','ASC','getUpdatedSortOptions','internal','substring','indexOf','validateSortParameter','sort','pause','toLowerCase','userpic','online','lastLoginAt','lastPauseAt','address','faxPause','mailCapacity','smsCapacity','whatsappCapacity'];(function(_0x2abffd,_0x760487){var _0xe147d4=function(_0x39fa89){while(--_0x39fa89){_0x2abffd['push'](_0x2abffd['shift']());}};_0xe147d4(++_0x760487);}(_0x665e,0x10e));var _0xe665=function(_0xfc406a,_0x4479e1){_0xfc406a=_0xfc406a-0x0;var _0x395473=_0x665e[_0xfc406a];return _0x395473;};'use strict';var _=require(_0xe665('0x0'));var jayson=require('jayson/promise');var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xe665('0x1')][_0xe665('0x2')]({'port':0x232a});var routingClient=jayson['client'][_0xe665('0x2')]({'port':0x232c});function isAgentPaused(_0xaeb1e8,_0x34153e){var _0x315059=[_0xaeb1e8['chatPause'],_0xaeb1e8['faxPause'],_0xaeb1e8['mailPause'],_0xaeb1e8['openchannelPause'],_0xaeb1e8[_0xe665('0x3')],_0xaeb1e8[_0xe665('0x4')],_0xaeb1e8[_0xe665('0x5')]];if(!_0x34153e)return _[_0xe665('0x6')](_0x315059);var _0x44fee6=_[_0xe665('0x7')](_0x315059);return _0x44fee6['length']>0x0&&_0x44fee6[_0xe665('0x8')]<_0x315059[_0xe665('0x8')]?!![]:![];}function isIdle(_0x2339bd){return _0x2339bd===_0xe665('0x9')||_0x2339bd===_0xe665('0xa')||_0x2339bd==='unavailable'||_0x2339bd===_0xe665('0xb')||_[_0xe665('0xc')](_0x2339bd);}function isAgentIdle(_0x41f4cd){if(_0x41f4cd[_0xe665('0xd')]!==_0xe665('0x9')&&_0x41f4cd[_0xe665('0x4')]){_0x41f4cd['voiceStatus']='pause';return![];}return _[_0xe665('0x6')]([_0x41f4cd[_0xe665('0xe')],_0x41f4cd[_0xe665('0xf')],_0x41f4cd[_0xe665('0x10')],_0x41f4cd['openchannelStatus'],_0x41f4cd[_0xe665('0x11')],_0x41f4cd[_0xe665('0xd')],_0x41f4cd['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient['request'](_0xe665('0x12'),{})['then'](function(_0x25c3ed){if(_0x25c3ed[_0xe665('0x13')]){throw new Error(_0xe665('0x14'));}var _0x27b892=_0x25c3ed[_0xe665('0x15')];return routingClient[_0xe665('0x16')](_0xe665('0x12'),{})[_0xe665('0x17')](function(_0x309ae6){if(_0x309ae6[_0xe665('0x13')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x1446a7=_0x309ae6[_0xe665('0x15')];return _['merge']({},_0x27b892,_0x1446a7);});})[_0xe665('0x18')](function(_0x56bfe5){throw _0x56bfe5;});}exports[_0xe665('0x19')]=getRealtimeAgents;function getAgentStatus(_0x51f1fd){var _0x13da63=_0xe665('0xa');if(isAgentPaused(_0x51f1fd))_0x13da63='pause';else if(isAgentPaused(_0x51f1fd,!![]))_0x13da63=_0xe665('0x1a');else if(isAgentIdle(_0x51f1fd))_0x13da63=_0xe665('0x9');else _0x13da63='busy';return _0x13da63;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x58c230,_0x14784f){var _0x31e1b6=_[_0xe665('0x1b')](_0x58c230)?_0x58c230:[_0x58c230];var _0x2df927=_['startCase'](_0x14784f)+'Queue';var _0x4663ee=_['map'](_0x31e1b6,function(_0xe57c78){return db[_0x2df927][_0xe665('0x1c')]({'where':{'id':_0xe57c78}})[_0xe665('0x17')](function(_0x2c5ffe){if(!_0x2c5ffe)return[];return _0x2c5ffe[_0xe665('0x1d')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xe665('0x1e')](_0x4663ee)['then'](function(_0x3b1d1c){var _0x245279=_(_0x3b1d1c)['flatten']()['map']('id')[_0xe665('0x1f')]()['value']();return _0x245279;});}exports[_0xe665('0x20')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x557134,_0x193667,_0x19b655){try{if(_0x193667[_0xe665('0x8')]>0x0){_0x557134=_0x557134[_0xe665('0x7')](function(_0x420205){return _0x193667[_0xe665('0x21')](_0x420205['id']);});}var _0x17e991=_0x557134['filter'](function(_0x529ad0){var _0xd54c28=_0xe665('0x22');if(isAgentIdle(_0x529ad0)){_0xd54c28='idle';}return _0xd54c28===_0x19b655;});return _[_0xe665('0x23')](_0x17e991,'id');}catch(_0x14aecf){throw _0x14aecf;}}exports[_0xe665('0x24')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2f2b7c,_0x180b0a,_0x2a58b6){return Promise['resolve']()[_0xe665('0x17')](function(){if(_0x180b0a[_0xe665('0x8')]>0x0){_0x2f2b7c=_0x2f2b7c['filter'](function(_0x484342){return _0x180b0a[_0xe665('0x21')](_0x484342['id']);});}return _0x2f2b7c;})[_0xe665('0x17')](function(){return db[_0xe665('0x25')]['findAll']({'attributes':['id',_0xe665('0x26'),_0xe665('0x27'),_0xe665('0x28'),'faxPause',_0xe665('0x29'),_0xe665('0x2a'),_0xe665('0x3'),_0xe665('0x4'),_0xe665('0x5'),_0xe665('0x2b')],'where':{'id':{'$in':_[_0xe665('0x23')](_0x2f2b7c,'id')}},'raw':!![]});})[_0xe665('0x17')](function(_0x2f45d4){return _0x2f45d4[_0xe665('0x23')](function(_0x1538f5){var _0x1e3c75=_[_0xe665('0x2c')](_0x2f2b7c,['id',_0x1538f5['id']]);var _0x2d0a2d=filterAgentAttributes(_0x1e3c75);_[_0xe665('0x2d')](_0x1538f5,_0x2d0a2d);_0x1538f5[_0xe665('0x2e')]=getAgentStatus(_0x1538f5);return _0x1538f5;});})[_0xe665('0x17')](function(_0x4b6ba4){var _0x566f4a=sortAgentsByStatus(_0x4b6ba4,_0x2a58b6);return _['map'](_0x566f4a,'id');})[_0xe665('0x18')](function(_0x4082f7){throw _0x4082f7;});}exports[_0xe665('0x2f')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x446bfc){var _0x32cecb={'fields':[],'order':null};var _0x37f554=_0x446bfc[_0xe665('0x30')](',');_0x32cecb[_0xe665('0x31')]=_[_0xe665('0x7')](_0x37f554,function(_0x229545){if(!_0x229545[_0xe665('0x21')]('globalStatus')){return!![];}_0x32cecb[_0xe665('0x32')]=_['startsWith'](_0x229545,'-')?_0xe665('0x33'):_0xe665('0x34');return![];});return _0x32cecb;}exports[_0xe665('0x35')]=getUpdatedSortOptions;function validateSortParameter(_0x4abc94){if(_0x4abc94[_0xe665('0x21')]('fullname')&&!_0x4abc94['includes'](_0xe665('0x36'))){var _0x1772d8=_0x4abc94[_0xe665('0x37')](0x0,_0x4abc94[_0xe665('0x38')](_0xe665('0x27')));_0x4abc94+=','+_0x1772d8+'internal';}return _0x4abc94;}exports[_0xe665('0x39')]=validateSortParameter;function sortAgentsByStatus(_0x312878,_0x4c0fad){var _0x36a762=_0x312878[_0xe665('0x3a')](function(_0x1be575,_0x5108b4){if(_0x1be575['globalStatus']===_0x5108b4['globalStatus']){if(_0x1be575[_0xe665('0x2e')]===_0xe665('0x3b')){if(_0x4c0fad===_0xe665('0x33')){return(_0x1be575[_0xe665('0x2b')]||'')<(_0x5108b4['pauseType']||'')||_0x1be575['fullname'][_0xe665('0x3c')]()>_0x5108b4['fullname'][_0xe665('0x3c')]()?0x1:-0x1;}else{return(_0x1be575[_0xe665('0x2b')]||'')<(_0x5108b4[_0xe665('0x2b')]||'')||_0x1be575[_0xe665('0x27')][_0xe665('0x3c')]()>_0x5108b4[_0xe665('0x27')][_0xe665('0x3c')]()?-0x1:0x1;}}else{if(_0x4c0fad==='DESC'){return _0x1be575[_0xe665('0x27')][_0xe665('0x3c')]()<_0x5108b4[_0xe665('0x27')][_0xe665('0x3c')]()?0x1:-0x1;}else{return _0x1be575['fullname'][_0xe665('0x3c')]()<_0x5108b4[_0xe665('0x27')][_0xe665('0x3c')]()?-0x1:0x1;}}}else{if(_0x4c0fad===_0xe665('0x33')){return _0x1be575[_0xe665('0x2e')]<_0x5108b4['globalStatus']?0x1:-0x1;}else{return _0x1be575[_0xe665('0x2e')]<_0x5108b4['globalStatus']?-0x1:0x1;}}});return _0x36a762;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x1de500){var _0x46d6e8=[_0xe665('0x3d'),_0xe665('0x3e'),_0xe665('0x3f'),_0xe665('0x40'),_0xe665('0x2b'),_0xe665('0x40'),_0xe665('0x36'),_0xe665('0x41'),_0xe665('0x28'),_0xe665('0x2a'),'mailPause','smsPause',_0xe665('0x5'),_0xe665('0x42'),'voicePause','chatCapacity','openchannelCapacity',_0xe665('0x43'),_0xe665('0x44'),_0xe665('0x45'),_0xe665('0x46'),_0xe665('0x47'),_0xe665('0x48'),'mailCurrentCapacity',_0xe665('0x49'),_0xe665('0x4a'),_0xe665('0x4b'),_0xe665('0xe'),_0xe665('0x4c'),_0xe665('0x10'),_0xe665('0x11'),'whatsappStatus','faxStatus',_0xe665('0xd'),_0xe665('0x4d'),_0xe665('0x4e'),'mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime',_0xe665('0x4f'),'queue','destconnectedlinenum','screenrecording',_0xe665('0x50'),_0xe665('0x51'),_0xe665('0x52')];var _0x4e0927=[_0xe665('0x28'),_0xe665('0x2a'),_0xe665('0x29'),_0xe665('0x3'),_0xe665('0x5'),_0xe665('0x42'),_0xe665('0x4'),_0xe665('0x3e')];var _0x29efc2=_(_0x1de500)['omit'](_0x4e0927)[_0xe665('0x53')](_0x46d6e8)[_0xe665('0x54')]();return _0x29efc2;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
diff --git a/server/components/realtime/queues.js b/server/components/realtime/queues.js
new file mode 100644 (file)
index 0000000..6225c46
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xfafe=['concat','map','get','paused','loggedInDb','loggedIn','waiting','talking','busy','originated','merge','pick','initializeQueues','jayson/promise','util','client','http','available','inUse','notInUse','ringing','ringInUse','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','voice','request','startCase','error','format','result','catch','getRealtimeQueues','outbound'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0xfafe,0x102));var _0xefaf=function(_0x392346,_0x20be0d){_0x392346=_0x392346-0x0;var _0x194cad=_0xfafe[_0x392346];return _0x194cad;};'use strict';var _=require('lodash');var jayson=require(_0xefaf('0x0'));var util=require(_0xefaf('0x1'));var amiClient=jayson[_0xefaf('0x2')][_0xefaf('0x3')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});var QUEUE_DEFAULT_ATTRIBUTES=[_0xefaf('0x4'),'loggedIn','paused','waiting'];var INBOUND_VOICE_QUEUE_ATTRIBUTES=['busy',_0xefaf('0x5'),'invalid','loggedInDb',_0xefaf('0x6'),'onHold',_0xefaf('0x7'),_0xefaf('0x8'),'talking','unavailable','unknown'];var OUTBOUND_VOICE_QUEUE_ATTRIBUTES=[_0xefaf('0x9'),'originated',_0xefaf('0xa'),_0xefaf('0xb'),_0xefaf('0xc'),_0xefaf('0xd'),_0xefaf('0xe'),_0xefaf('0xf'),_0xefaf('0x10'),_0xefaf('0x11'),_0xefaf('0x12'),'erlangBusyFactor',_0xefaf('0x13'),_0xefaf('0x14'),_0xefaf('0x15'),_0xefaf('0x16'),_0xefaf('0x17'),_0xefaf('0x18'),'predictiveIntervalDroppedCallsTimeout',_0xefaf('0x19'),'predictiveIntervalAvgHoldtime',_0xefaf('0x1a')];function getRealtimeQueues(_0x5e3699,_0x346a3f){var _0x3c53a5=_0x346a3f===_0xefaf('0x1b')?amiClient:routingClient;return _0x3c53a5[_0xefaf('0x1c')](_[_0xefaf('0x1d')](_0x346a3f)+'Queues',_0x5e3699)['then'](function(_0x4623e4){if(_0x4623e4[_0xefaf('0x1e')])throw new Error(util[_0xefaf('0x1f')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x346a3f));return _0x4623e4[_0xefaf('0x20')];})[_0xefaf('0x21')](function(_0x2a8790){throw _0x2a8790;});}exports[_0xefaf('0x22')]=getRealtimeQueues;function initializeQueues(_0x3a81ea,_0x269d2e,_0x478a6c,_0x1484fc){var _0xc2f55e=QUEUE_DEFAULT_ATTRIBUTES;if(_0x478a6c===_0xefaf('0x1b')){if(_0x1484fc===_0xefaf('0x23')){_0xc2f55e=_0xc2f55e[_0xefaf('0x24')](OUTBOUND_VOICE_QUEUE_ATTRIBUTES);}else{_0xc2f55e=_0xc2f55e['concat'](INBOUND_VOICE_QUEUE_ATTRIBUTES);}}return _0x3a81ea[_0xefaf('0x25')](function(_0xc278e6){var _0x422ebc=_0xc278e6[_0xefaf('0x26')]({'plain':!![]});_0x422ebc[_0xefaf('0x27')]=0x0;_0x422ebc[_0xefaf('0x28')]=0x0;_0x422ebc[_0xefaf('0x29')]=0x0;_0x422ebc[_0xefaf('0x4')]=0x0;_0x422ebc[_0xefaf('0x2a')]=0x0;if(_0x478a6c==='voice'){_0x422ebc[_0xefaf('0x2b')]=0x0;_0x422ebc[_0xefaf('0x2c')]=0x0;if(_0x1484fc===_0xefaf('0x23')){_0x422ebc[_0xefaf('0x9')]=0x0;_0x422ebc[_0xefaf('0x2d')]=0x0;}}var _0x6bccf5=_['find'](_0x269d2e,['id',_0x422ebc['id']]);if(_0x6bccf5){_[_0xefaf('0x2e')](_0x422ebc,_[_0xefaf('0x2f')](_0x6bccf5,_0xc2f55e));}return _0x422ebc;});}exports[_0xefaf('0x30')]=initializeQueues;
\ No newline at end of file
index 3369412..3681e07 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(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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(_0x3be577,_0x33c662){var _0x10bbd8=function(_0x42141f){while(--_0x42141f){_0x3be577['push'](_0x3be577['shift']());}};_0x10bbd8(++_0x33c662);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 6fd2c2e..1426573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf288=['../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','md5','digest','hex','getUuid','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','ipAddress','createHash','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync'];(function(_0x4a7858,_0x4e1c9b){var _0x24fb3e=function(_0x1d39e4){while(--_0x1d39e4){_0x4a7858['push'](_0x4a7858['shift']());}};_0x24fb3e(++_0x4e1c9b);}(_0xf288,0x1cf));var _0x8f28=function(_0x1293fa,_0x446d6b){_0x1293fa=_0x1293fa-0x0;var _0x1dd054=_0xf288[_0x1293fa];return _0x1dd054;};'use strict';var _=require(_0x8f28('0x0'));var os=require('os');var crypto=require(_0x8f28('0x1'));var machine=require(_0x8f28('0x2'));var exec=require(_0x8f28('0x3'))[_0x8f28('0x4')];var config=require(_0x8f28('0x5'));function getInterfaces(){var _0x11def9=[];var _0xcaab53=os[_0x8f28('0x6')]();var _0x2edf4f=_[_0x8f28('0x7')](_[_0x8f28('0x8')](_0xcaab53));for(var _0x21a4b7=0x0;_0x21a4b7<_0x2edf4f[_0x8f28('0x9')];_0x21a4b7++){var _0x48b7c8=_0xcaab53[_0x2edf4f[_0x21a4b7]][_0x8f28('0xa')](function(_0xa4d116){return _0xa4d116[_0x8f28('0xb')]===_0x8f28('0xc')&&_0xa4d116[_0x8f28('0xd')]===![];});_0x11def9=_0x11def9[_0x8f28('0xe')](_0x48b7c8);}return _0x11def9;}function getFirstInterface(){var _0x4df942=_[_0x8f28('0xf')](getInterfaces());return{'macAddress':_0x4df942&&_0x4df942[_0x8f28('0x10')]?_0x4df942[_0x8f28('0x10')]:_0x8f28('0x11'),'ipAddress':_0x4df942&&_0x4df942[_0x8f28('0x12')]?_0x4df942[_0x8f28('0x12')]:_0x8f28('0x13')};}exports[_0x8f28('0x14')]=getFirstInterface;function getCPUhash(){var _0x2d1d9d=_['orderBy'](os[_0x8f28('0x15')]()[_0x8f28('0x16')](function(_0x5939ea){return _0x5939ea[_0x8f28('0x17')];}))[_0x8f28('0x18')](':');return crypto['createHash'](_0x8f28('0x19'))['update'](_0x2d1d9d)[_0x8f28('0x1a')](_0x8f28('0x1b'));}exports[_0x8f28('0x1c')]=function(){var _0x12c675=os['platform']();var _0x25f722=/[0-9a-f-]{36}/;if(config[_0x8f28('0x1d')]&&_0x25f722['test'](config[_0x8f28('0x1d')])){return config[_0x8f28('0x1d')];}else if(_0x12c675===_0x8f28('0x1e')){return exec(_0x8f28('0x1f'),{'encoding':'utf8'})[_0x8f28('0x20')]('\x0d\x0a','');}else{var _0x4933e6=getFirstInterface();var _0x4db452=getCPUhash();var _0x2ca19d=_0x4db452+'|'+os['hostname']()+'|'+_0x4933e6['macAddress']+'|'+_0x4933e6[_0x8f28('0x21')];var _0x5eb199=crypto[_0x8f28('0x22')]('md5')['update'](_0x2ca19d)['digest'](_0x8f28('0x1b'));return _0x5eb199['substring'](0x0,0x8)+'-'+_0x5eb199[_0x8f28('0x23')](0x8,0xc)+'-'+_0x5eb199['substring'](0xc,0x10)+'-'+_0x5eb199[_0x8f28('0x23')](0x10,0x14)+'-'+_0x5eb199[_0x8f28('0x23')](0x14);}};
\ No newline at end of file
+var _0xa1a8=['getFirstInterface','cpus','map','model','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','test','win32','replace','macAddress','ipAddress','substring','lodash','crypto','execSync','../environment','networkInterfaces','orderBy','filter','IPv4','internal','head','mac','00:00:00:00:00:00','address','127.0.0.1'];(function(_0x291247,_0x30f77b){var _0x29eeec=function(_0x16d3ac){while(--_0x16d3ac){_0x291247['push'](_0x291247['shift']());}};_0x29eeec(++_0x30f77b);}(_0xa1a8,0xd2));var _0x8a1a=function(_0x338168,_0xcd243d){_0x338168=_0x338168-0x0;var _0x3d52fb=_0xa1a8[_0x338168];return _0x3d52fb;};'use strict';var _=require(_0x8a1a('0x0'));var os=require('os');var crypto=require(_0x8a1a('0x1'));var machine=require('bimedia-machine-uuid');var exec=require('child_process')[_0x8a1a('0x2')];var config=require(_0x8a1a('0x3'));function getInterfaces(){var _0x586070=[];var _0x34ee36=os[_0x8a1a('0x4')]();var _0x57e771=_[_0x8a1a('0x5')](_['keys'](_0x34ee36));for(var _0x6a2022=0x0;_0x6a2022<_0x57e771['length'];_0x6a2022++){var _0x56f092=_0x34ee36[_0x57e771[_0x6a2022]][_0x8a1a('0x6')](function(_0x53d127){return _0x53d127['family']===_0x8a1a('0x7')&&_0x53d127[_0x8a1a('0x8')]===![];});_0x586070=_0x586070['concat'](_0x56f092);}return _0x586070;}function getFirstInterface(){var _0x2e4ce8=_[_0x8a1a('0x9')](getInterfaces());return{'macAddress':_0x2e4ce8&&_0x2e4ce8[_0x8a1a('0xa')]?_0x2e4ce8[_0x8a1a('0xa')]:_0x8a1a('0xb'),'ipAddress':_0x2e4ce8&&_0x2e4ce8[_0x8a1a('0xc')]?_0x2e4ce8[_0x8a1a('0xc')]:_0x8a1a('0xd')};}exports[_0x8a1a('0xe')]=getFirstInterface;function getCPUhash(){var _0x41c316=_[_0x8a1a('0x5')](os[_0x8a1a('0xf')]()[_0x8a1a('0x10')](function(_0x4a652c){return _0x4a652c[_0x8a1a('0x11')];}))['join'](':');return crypto[_0x8a1a('0x12')](_0x8a1a('0x13'))[_0x8a1a('0x14')](_0x41c316)[_0x8a1a('0x15')](_0x8a1a('0x16'));}exports[_0x8a1a('0x17')]=function(){var _0x14c5aa=os[_0x8a1a('0x18')]();var _0x3e1e81=/[0-9a-f-]{36}/;if(config[_0x8a1a('0x19')]&&_0x3e1e81[_0x8a1a('0x1a')](config[_0x8a1a('0x19')])){return config[_0x8a1a('0x19')];}else if(_0x14c5aa===_0x8a1a('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0x8a1a('0x1c')]('\x0d\x0a','');}else{var _0x19f39d=getFirstInterface();var _0x4f81ea=getCPUhash();var _0x1779f4=_0x4f81ea+'|'+os['hostname']()+'|'+_0x19f39d[_0x8a1a('0x1d')]+'|'+_0x19f39d[_0x8a1a('0x1e')];var _0x4e07f7=crypto[_0x8a1a('0x12')](_0x8a1a('0x13'))[_0x8a1a('0x14')](_0x1779f4)['digest']('hex');return _0x4e07f7[_0x8a1a('0x1f')](0x0,0x8)+'-'+_0x4e07f7[_0x8a1a('0x1f')](0x8,0xc)+'-'+_0x4e07f7[_0x8a1a('0x1f')](0xc,0x10)+'-'+_0x4e07f7[_0x8a1a('0x1f')](0x10,0x14)+'-'+_0x4e07f7[_0x8a1a('0x1f')](0x14);}};
\ No newline at end of file
index 2cefbea..7c00f2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca2=['%s/api/servers/%s/check?version=%s&oldtoken=%s','then','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','diff','decryptString','days','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','message','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','util','moment','request-promise','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports'];(function(_0x27ea02,_0x5ac748){var _0x313b9b=function(_0x3c6308){while(--_0x3c6308){_0x27ea02['push'](_0x27ea02['shift']());}};_0x313b9b(++_0x5ac748);}(_0xcca2,0x1b5));var _0x2cca=function(_0x2bc104,_0x1249e1){_0x2bc104=_0x2bc104-0x0;var _0x333584=_0xcca2[_0x2bc104];return _0x333584;};'use strict';var util=require(_0x2cca('0x0'));var moment=require(_0x2cca('0x1'));var rp=require(_0x2cca('0x2'));var BPromise=require('bluebird');var pkginfo=require(_0x2cca('0x3'))(module,_0x2cca('0x4'));var db=require(_0x2cca('0x5'))['db'];var encryptor=require(_0x2cca('0x6'));var hardware=require(_0x2cca('0x7'));var logger=require(_0x2cca('0x8'))(_0x2cca('0x9'));var HOST=_0x2cca('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3e9760){return new BPromise(function(_0x1ec688,_0x34c9ee){var _0x2460d9=util[_0x2cca('0xb')](_0x2cca('0xc'),HOST,_0x3e9760,module[_0x2cca('0xd')][_0x2cca('0x4')]);if(oldToken){_0x2460d9=util[_0x2cca('0xb')](_0x2cca('0xe'),HOST,_0x3e9760,module[_0x2cca('0xd')][_0x2cca('0x4')],oldToken);}var _0xffbc00={'uri':_0x2460d9,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0xffbc00)[_0x2cca('0xf')](function(_0x4664f6){_0x1ec688(_0x4664f6);})[_0x2cca('0x10')](function(_0x5c6b79){_0x34c9ee(_0x5c6b79);});});}function manageLicense(_0x2adf06,_0x59c20e){var _0x2e9b70=_0x59c20e[_0x2cca('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x2e9b70[_0x2cca('0x12')]!==_0x2adf06&&!_0x2e9b70[_0x2cca('0x13')]){oldToken=_0x2e9b70['data1'];}httpRequest(_0x2adf06)['then'](function(_0x4e45d5){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x4e45d5[_0x2cca('0x14')]){isOldTokenSent=![];if(!_0x2e9b70[_0x2cca('0x9')]&&_0x2e9b70[_0x2cca('0x9')]!=_0x4e45d5[_0x2cca('0x9')]||_0x2e9b70['license']&&_0x2e9b70[_0x2cca('0x13')]){logger[_0x2cca('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x2e9b70[_0x2cca('0x9')]&&!_0x2e9b70[_0x2cca('0x13')]&&_0x2e9b70[_0x2cca('0x9')]!=_0x4e45d5[_0x2cca('0x9')]){logger[_0x2cca('0x15')](_0x2cca('0x16'));}if(_0x2e9b70[_0x2cca('0x9')]&&!_0x2e9b70['data2']&&_0x2e9b70[_0x2cca('0x9')]==_0x4e45d5[_0x2cca('0x9')]){return _0x59c20e;}return _0x59c20e['update']({'data1':_0x2adf06,'data2':null,'license':_0x4e45d5[_0x2cca('0x9')]});}else{if(_0x4e45d5['license']||_0x2e9b70[_0x2cca('0x9')]){if(!_0x2e9b70[_0x2cca('0x13')]){if(_0x2e9b70[_0x2cca('0x12')]==_0x2adf06){GRAY_PERIOD_REASON=_0x2cca('0x17');logger[_0x2cca('0x15')](_0x2cca('0x18'));}else{GRAY_PERIOD_REASON=_0x2cca('0x19');logger[_0x2cca('0x15')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x2e9b70[_0x2cca('0x12')],_0x2adf06);}logger[_0x2cca('0x15')](_0x2cca('0x1a'),GRAY_PERIOD_REASON[_0x2cca('0x1b')](),moment()[_0x2cca('0xb')](_0x2cca('0x1c')));return _0x59c20e[_0x2cca('0x1d')]({'data2':encryptor['encryptString'](moment()['format']('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x2cca('0x1e')](encryptor[_0x2cca('0x1f')](_0x2e9b70[_0x2cca('0x13')]),_0x2cca('0x20'))>DAYS){logger[_0x2cca('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0x2cca('0xb')](_0x2cca('0x1c')));isOldTokenSent=![];return _0x59c20e[_0x2cca('0x1d')]({'data1':_0x2adf06,'data2':null,'license':null});}}}else{if(_0x2e9b70[_0x2cca('0x12')]!=_0x2adf06){logger['info'](_0x2cca('0x21'),_0x2e9b70[_0x2cca('0x12')],_0x2adf06);return _0x59c20e['update']({'data1':_0x2adf06,'data2':null,'license':null});}}}return _0x59c20e;})[_0x2cca('0xf')](function(_0x4e875d){_0x59c20e=_0x4e875d;})[_0x2cca('0x10')](function(_0x479119){logger['error'](_0x479119[_0x2cca('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x59c20e);},TIME);});}function defaultLicense(){var _0x3d4702=hardware[_0x2cca('0x23')]();if(_0x3d4702){return db['License'][_0x2cca('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x3d4702}})[_0x2cca('0x25')](function(_0x270d34,_0x2a4348){logger[_0x2cca('0x15')](_0x2cca('0x26'),_0x3d4702);manageLicense(_0x3d4702,_0x270d34);})[_0x2cca('0x10')](function(_0x597c67){logger[_0x2cca('0x27')](_0x597c67[_0x2cca('0x22')]);});}}exports[_0x2cca('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x20fe=['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','encryptString','YYYY-MM-DD\x20HH:mm','decryptString','days','DEMO\x20START\x20AT\x20%s','then','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','moment','request-promise','bluebird','pkginfo','../../mysqldb','../../components/encryptor','./hardware','../logger','license','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','version','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED'];(function(_0x6bc3d3,_0x20ea64){var _0x4708e0=function(_0x57ce02){while(--_0x57ce02){_0x6bc3d3['push'](_0x6bc3d3['shift']());}};_0x4708e0(++_0x20ea64);}(_0x20fe,0x68));var _0xe20f=function(_0x532a33,_0x423e6a){_0x532a33=_0x532a33-0x0;var _0x5b4f04=_0x20fe[_0x532a33];return _0x5b4f04;};'use strict';var util=require('util');var moment=require(_0xe20f('0x0'));var rp=require(_0xe20f('0x1'));var BPromise=require(_0xe20f('0x2'));var pkginfo=require(_0xe20f('0x3'))(module,'version');var db=require(_0xe20f('0x4'))['db'];var encryptor=require(_0xe20f('0x5'));var hardware=require(_0xe20f('0x6'));var logger=require(_0xe20f('0x7'))(_0xe20f('0x8'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0xe34955){return new BPromise(function(_0x21156e,_0x225548){var _0x4c746c=util[_0xe20f('0x9')](_0xe20f('0xa'),HOST,_0xe34955,module[_0xe20f('0xb')]['version']);if(oldToken){_0x4c746c=util[_0xe20f('0x9')](_0xe20f('0xc'),HOST,_0xe34955,module['exports'][_0xe20f('0xd')],oldToken);}var _0x343f4f={'uri':_0x4c746c,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x343f4f)['then'](function(_0x47e57f){_0x21156e(_0x47e57f);})[_0xe20f('0xe')](function(_0x26f1b1){_0x225548(_0x26f1b1);});});}function manageLicense(_0x3a67da,_0x3049e6){var _0x1d4128=_0x3049e6[_0xe20f('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x1d4128[_0xe20f('0x10')]!==_0x3a67da&&!_0x1d4128[_0xe20f('0x11')]){oldToken=_0x1d4128[_0xe20f('0x10')];}httpRequest(_0x3a67da)['then'](function(_0xe502f6){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xe502f6[_0xe20f('0x12')]){isOldTokenSent=![];if(!_0x1d4128[_0xe20f('0x8')]&&_0x1d4128[_0xe20f('0x8')]!=_0xe502f6[_0xe20f('0x8')]||_0x1d4128[_0xe20f('0x8')]&&_0x1d4128[_0xe20f('0x11')]){logger[_0xe20f('0x13')](_0xe20f('0x14'));}if(_0x1d4128['license']&&!_0x1d4128[_0xe20f('0x11')]&&_0x1d4128[_0xe20f('0x8')]!=_0xe502f6[_0xe20f('0x8')]){logger[_0xe20f('0x13')](_0xe20f('0x15'));}if(_0x1d4128['license']&&!_0x1d4128[_0xe20f('0x11')]&&_0x1d4128[_0xe20f('0x8')]==_0xe502f6[_0xe20f('0x8')]){return _0x3049e6;}return _0x3049e6[_0xe20f('0x16')]({'data1':_0x3a67da,'data2':null,'license':_0xe502f6[_0xe20f('0x8')]});}else{if(_0xe502f6[_0xe20f('0x8')]||_0x1d4128[_0xe20f('0x8')]){if(!_0x1d4128[_0xe20f('0x11')]){if(_0x1d4128[_0xe20f('0x10')]==_0x3a67da){GRAY_PERIOD_REASON=_0xe20f('0x17');logger[_0xe20f('0x13')](_0xe20f('0x18'));}else{GRAY_PERIOD_REASON='Changed';logger[_0xe20f('0x13')](_0xe20f('0x19'),_0x1d4128[_0xe20f('0x10')],_0x3a67da);}logger[_0xe20f('0x13')](_0xe20f('0x1a'),GRAY_PERIOD_REASON[_0xe20f('0x1b')](),moment()['format']('YYYY-MM-DD\x20HH:mm'));return _0x3049e6[_0xe20f('0x16')]({'data2':encryptor[_0xe20f('0x1c')](moment()[_0xe20f('0x9')](_0xe20f('0x1d')))});}else{if(moment()['diff'](encryptor[_0xe20f('0x1e')](_0x1d4128['data2']),_0xe20f('0x1f'))>DAYS){logger[_0xe20f('0x13')](_0xe20f('0x20'),moment()[_0xe20f('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x3049e6['update']({'data1':_0x3a67da,'data2':null,'license':null});}}}else{if(_0x1d4128[_0xe20f('0x10')]!=_0x3a67da){logger[_0xe20f('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1d4128[_0xe20f('0x10')],_0x3a67da);return _0x3049e6[_0xe20f('0x16')]({'data1':_0x3a67da,'data2':null,'license':null});}}}return _0x3049e6;})[_0xe20f('0x21')](function(_0xc37158){_0x3049e6=_0xc37158;})[_0xe20f('0xe')](function(_0x5ce3bb){logger[_0xe20f('0x22')](_0x5ce3bb[_0xe20f('0x23')]);})[_0xe20f('0x24')](function(){setTimeout(function(){manageLicense(hardware[_0xe20f('0x25')](),_0x3049e6);},TIME);});}function defaultLicense(){var _0x28bc36=hardware['getUuid']();if(_0x28bc36){return db[_0xe20f('0x26')][_0xe20f('0x27')]({'where':{'id':0x1},'defaults':{'data1':_0x28bc36}})[_0xe20f('0x28')](function(_0x52b621,_0x416240){logger['info'](_0xe20f('0x29'),_0x28bc36);manageLicense(_0x28bc36,_0x52b621);})['catch'](function(_0x1ec1af){logger[_0xe20f('0x22')](_0x1ec1af['message']);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 84c716c..42756c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3522=['exports','util','lodash','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','then','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','gray','days','changed','disabled','User','findAll','COUNT','sequelize','count','role','admin','user','telephone','telephones','forEach','catch','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones'];(function(_0x3f5f5b,_0x458417){var _0x2f9511=function(_0x35eafc){while(--_0x35eafc){_0x3f5f5b['push'](_0x3f5f5b['shift']());}};_0x2f9511(++_0x458417);}(_0x3522,0xad));var _0x2352=function(_0x5baa68,_0x441410){_0x5baa68=_0x5baa68-0x0;var _0x7dfd49=_0x3522[_0x5baa68];return _0x7dfd49;};'use strict';var util=require(_0x2352('0x0'));var _=require(_0x2352('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require(_0x2352('0x2'));var encryptor=require('../../components/encryptor');var db=require(_0x2352('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2352('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2352('0x5'),'machineUuid':hardware[_0x2352('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2352('0x7'),'machineUuid':hardware[_0x2352('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5e9d47){return new BPromise(function(_0x2e609d,_0x19277b){return db[_0x2352('0x8')][_0x2352('0x9')](_['defaults'](_0x5e9d47,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x117771){return checkLicense(_0x117771,null);})[_0x2352('0xa')](function(_0x42cead){_0x2e609d(_0x42cead);return;})['catch'](function(_0x3cceb9){_0x19277b(_0x3cceb9);});});}function checkLicense(_0x22bc5c,_0xfaa812){if(!_0x22bc5c){demoLicense[_0x2352('0xb')]=_0x22bc5c[_0x2352('0xc')];return demoLicense;}try{var _0x59c5a6=_0xfaa812||_0x22bc5c[_0x2352('0xd')];if(_[_0x2352('0xe')](_0x59c5a6)){throw new Error(_0x2352('0xf'));}var _0x83018a=_0x22bc5c[_0x2352('0xc')];var _0x2a7f9a=_0x22bc5c[_0x2352('0x10')];var _0x28b5a7=_0x83018a['split']('-')[0x4];var _0x5c1916=_0x83018a[_0x2352('0x11')]('-')[0x0];var _0x37e5bf=encryptor['decryptString'](_0x59c5a6,util[_0x2352('0x12')](_0x2352('0x13'),_0x28b5a7,_0x83018a,_0x5c1916));var _0x231455=JSON[_0x2352('0x14')](_0x37e5bf);_0x231455[_0x2352('0x15')]=![];_0x231455['uuid']=_0x83018a;_0x231455[_0x2352('0x16')]=hardware[_0x2352('0x6')]();if(_0x2a7f9a){var _0x3996e1=encryptor[_0x2352('0x17')](_0x2a7f9a);_0x231455[_0x2352('0x18')]=_0x3996e1;_0x231455['deadline']=moment(_0x3996e1)['add'](0x7,_0x2352('0x19'))[_0x2352('0x12')]();_0x231455['grayReason']=_0x231455[_0x2352('0xb')]!=_0x231455[_0x2352('0x16')]?_0x2352('0x1a'):_0x2352('0x1b');}return _0x231455;}catch(_0x2b1ae4){breakingLicense[_0x2352('0xb')]=_0x22bc5c['data1'];breakingLicense['message']=_0x2b1ae4['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x23c2b6,_0x520d2d){getLicense()['then'](function(_0x1c3fe3){return db[_0x2352('0x1c')][_0x2352('0x1d')]({'attributes':['role',[db['sequelize']['fn'](_0x2352('0x1e'),db[_0x2352('0x1f')]['col']('role')),_0x2352('0x20')]],'group':_0x2352('0x21'),'where':{'role':{'$or':[_0x2352('0x22'),_0x2352('0x23'),_0x2352('0x24')]}},'raw':!![]})[_0x2352('0xa')](function(_0x1dc13b){var _0x23602a={'user':_0x1c3fe3['users']||0x0,'telephone':_0x1c3fe3[_0x2352('0x25')]||0x0};_0x1dc13b[_0x2352('0x26')](function(_0x21d4fd){var _0x3dbd37=_0x21d4fd[_0x2352('0x21')]==='admin'?_0x2352('0x23'):_0x21d4fd[_0x2352('0x21')];_0x23602a[_0x3dbd37]-=_0x21d4fd[_0x2352('0x20')];if(_0x23602a[_0x3dbd37]<0x0)_0x23602a[_0x3dbd37]=0x0;});_0x23c2b6(_0x23602a);return;});})[_0x2352('0x27')](function(_0x262001){_0x520d2d(_0x262001);});});}function checkUserLimits(_0x81c09c){return new BPromise(function(_0x4f766e,_0x3543aa){getLimits()[_0x2352('0xa')](function(_0x559e1f){var _0x33c283=_['pick'](_['countBy'](_0x81c09c,_0x2352('0x21')),[_0x2352('0x22'),_0x2352('0x23'),_0x2352('0x24')]);var _0x23b479=(_0x33c283[_0x2352('0x22')]||0x0)+(_0x33c283[_0x2352('0x23')]||0x0);var _0x24ba5c=_0x33c283[_0x2352('0x24')]||0x0;if(_0x23b479>_0x559e1f['user'])return _0x3543aa(_0x2352('0x28'));if(_0x24ba5c>_0x559e1f[_0x2352('0x24')])return _0x3543aa(_0x2352('0x29'));return _0x4f766e();})['catch'](function(_0x2c27f5){_0x3543aa(_0x2c27f5);});});}module[_0x2352('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x2019=['data1','license','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','uuid','machineUuid','deadline','add','days','grayReason','changed','message','findAll','role','sequelize','col','count','admin','users','telephones','forEach','countBy','user','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x2019,0x161));var _0x9201=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x2019[_0x87b0ff];return _0x3bc0b2;};'use strict';var util=require('util');var _=require(_0x9201('0x0'));var moment=require(_0x9201('0x1'));var BPromise=require(_0x9201('0x2'));var hardware=require(_0x9201('0x3'));var encryptor=require(_0x9201('0x4'));var db=require(_0x9201('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9201('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x9201('0x7'),'machineUuid':hardware[_0x9201('0x8')](),'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':_0x9201('0x9'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5bc8ca){return new BPromise(function(_0x1f03cf,_0x42448a){return db[_0x9201('0xa')][_0x9201('0xb')](_[_0x9201('0xc')](_0x5bc8ca,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x327c93){return checkLicense(_0x327c93,null);})[_0x9201('0xd')](function(_0xadcc16){_0x1f03cf(_0xadcc16);return;})[_0x9201('0xe')](function(_0x186fa7){_0x42448a(_0x186fa7);});});}function checkLicense(_0x2414d0,_0x3a4073){if(!_0x2414d0){demoLicense['uuid']=_0x2414d0[_0x9201('0xf')];return demoLicense;}try{var _0x3b5b33=_0x3a4073||_0x2414d0[_0x9201('0x10')];if(_['isEmpty'](_0x3b5b33)){throw new Error(_0x9201('0x11'));}var _0x5a83f6=_0x2414d0['data1'];var _0x4e3bce=_0x2414d0['data2'];var _0x1db3bc=_0x5a83f6[_0x9201('0x12')]('-')[0x4];var _0x1f8682=_0x5a83f6[_0x9201('0x12')]('-')[0x0];var _0x555992=encryptor[_0x9201('0x13')](_0x3b5b33,util[_0x9201('0x14')](_0x9201('0x15'),_0x1db3bc,_0x5a83f6,_0x1f8682));var _0x11eaec=JSON[_0x9201('0x16')](_0x555992);_0x11eaec['demo']=![];_0x11eaec[_0x9201('0x17')]=_0x5a83f6;_0x11eaec[_0x9201('0x18')]=hardware['getUuid']();if(_0x4e3bce){var _0x5aa056=encryptor['decryptString'](_0x4e3bce);_0x11eaec['gray']=_0x5aa056;_0x11eaec[_0x9201('0x19')]=moment(_0x5aa056)[_0x9201('0x1a')](0x7,_0x9201('0x1b'))['format']();_0x11eaec[_0x9201('0x1c')]=_0x11eaec['uuid']!=_0x11eaec[_0x9201('0x18')]?_0x9201('0x1d'):'disabled';}return _0x11eaec;}catch(_0x51a87a){breakingLicense['uuid']=_0x2414d0[_0x9201('0xf')];breakingLicense[_0x9201('0x1e')]=_0x51a87a[_0x9201('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x14caa5,_0x317300){getLicense()[_0x9201('0xd')](function(_0x120bd8){return db['User'][_0x9201('0x1f')]({'attributes':[_0x9201('0x20'),[db[_0x9201('0x21')]['fn']('COUNT',db[_0x9201('0x21')][_0x9201('0x22')]('role')),_0x9201('0x23')]],'group':_0x9201('0x20'),'where':{'role':{'$or':[_0x9201('0x24'),'user','telephone']}},'raw':!![]})[_0x9201('0xd')](function(_0x499f8f){var _0x261dae={'user':_0x120bd8[_0x9201('0x25')]||0x0,'telephone':_0x120bd8[_0x9201('0x26')]||0x0};_0x499f8f[_0x9201('0x27')](function(_0xf5ff89){var _0x323a3f=_0xf5ff89[_0x9201('0x20')]==='admin'?'user':_0xf5ff89[_0x9201('0x20')];_0x261dae[_0x323a3f]-=_0xf5ff89['count'];if(_0x261dae[_0x323a3f]<0x0)_0x261dae[_0x323a3f]=0x0;});_0x14caa5(_0x261dae);return;});})[_0x9201('0xe')](function(_0x272340){_0x317300(_0x272340);});});}function checkUserLimits(_0x2c3520){return new BPromise(function(_0x3e2fbc,_0x209531){getLimits()[_0x9201('0xd')](function(_0x2cd3d6){var _0x202e31=_['pick'](_[_0x9201('0x28')](_0x2c3520,_0x9201('0x20')),[_0x9201('0x24'),_0x9201('0x29'),_0x9201('0x2a')]);var _0x1b4323=(_0x202e31[_0x9201('0x24')]||0x0)+(_0x202e31[_0x9201('0x29')]||0x0);var _0x485f61=_0x202e31[_0x9201('0x2a')]||0x0;if(_0x1b4323>_0x2cd3d6[_0x9201('0x29')])return _0x209531(_0x9201('0x2b'));if(_0x485f61>_0x2cd3d6['telephone'])return _0x209531(_0x9201('0x2c'));return _0x3e2fbc();})[_0x9201('0xe')](function(_0x452d58){_0x209531(_0x452d58);});});}module[_0x9201('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 8cb2efb..9fd6ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['secret','exports','myappanuglar-secret'];(function(_0xd72df6,_0x4a8eba){var _0x871e42=function(_0x15ee82){while(--_0x15ee82){_0xd72df6['push'](_0xd72df6['shift']());}};_0x871e42(++_0x4a8eba);}(_0x4991,0xf7));var _0x1499=function(_0x3554c0,_0x4cc8e1){_0x3554c0=_0x3554c0-0x0;var _0x4588c8=_0x4991[_0x3554c0];return _0x4588c8;};'use strict';module[_0x1499('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x1499('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x1499('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x1c9a=['myappanuglar-secret','secret','exports'];(function(_0x117a39,_0xa443e1){var _0x16285b=function(_0x1ac95b){while(--_0x1ac95b){_0x117a39['push'](_0x117a39['shift']());}};_0x16285b(++_0xa443e1);}(_0x1c9a,0x98));var _0xa1c9=function(_0x3977f8,_0x157d79){_0x3977f8=_0x3977f8-0x0;var _0x512d39=_0x1c9a[_0x3977f8];return _0x512d39;};'use strict';module[_0xa1c9('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xa1c9('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xa1c9('0x2'),'DEBUG':''};
\ No newline at end of file
index 01fbc1e..fab23ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x888b=['exports','fileLogger'];(function(_0x4f837f,_0x2ccc3b){var _0x43e776=function(_0x28468b){while(--_0x28468b){_0x4f837f['push'](_0x4f837f['shift']());}};_0x43e776(++_0x2ccc3b);}(_0x888b,0xff));var _0xb888=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x888b[_0x122ef9];return _0x42fba0;};'use strict';var fileLogger=require('../utils/loggers')[_0xb888('0x0')];module[_0xb888('0x1')]=fileLogger;
\ No newline at end of file
+var _0x7cad=['exports','fileLogger'];(function(_0xadc3e1,_0x3777d3){var _0x499a46=function(_0x1968fa){while(--_0x1968fa){_0xadc3e1['push'](_0xadc3e1['shift']());}};_0x499a46(++_0x3777d3);}(_0x7cad,0x10b));var _0xd7ca=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x7cad[_0x1b4b23];return _0x2a325b;};'use strict';var fileLogger=require('../utils/loggers')[_0xd7ca('0x0')];module[_0xd7ca('0x1')]=fileLogger;
\ No newline at end of file
index b2f72c3..3729a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x256e=['path','express','join','../../services/express/index.js','../../services/ami/index.js','email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x5d9c08,_0x68d66e){var _0x3d07ae=function(_0x1f6d8d){while(--_0x1f6d8d){_0x5d9c08['push'](_0x5d9c08['shift']());}};_0x3d07ae(++_0x68d66e);}(_0x256e,0x1cc));var _0xe256=function(_0x5898cd,_0x30bf84){_0x5898cd=_0x5898cd-0x0;var _0x3ae503=_0x256e[_0x5898cd];return _0x3ae503;};'use strict';var path=require(_0xe256('0x0'));var os=require('os');var config={'apps':[{'name':_0xe256('0x1'),'script':path[_0xe256('0x2')](__dirname,_0xe256('0x3'))},{'name':'ami','script':path[_0xe256('0x2')](__dirname,_0xe256('0x4'))},{'name':'agi','script':path[_0xe256('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0xe256('0x5'),'script':path[_0xe256('0x2')](__dirname,'../../services/email/index.js')},{'name':_0xe256('0x6'),'script':path[_0xe256('0x2')](__dirname,_0xe256('0x7'))},{'name':_0xe256('0x8'),'script':path['join'](__dirname,_0xe256('0x9'))}]};module['exports']=config;
\ No newline at end of file
+var _0x877e=['join','../../services/express/index.js','ami','../../services/ami/index.js','agi','../../services/agi/index.js','email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express'];(function(_0x342f98,_0x31fa66){var _0x464517=function(_0x1e9765){while(--_0x1e9765){_0x342f98['push'](_0x342f98['shift']());}};_0x464517(++_0x31fa66);}(_0x877e,0x15c));var _0xe877=function(_0x4c9e16,_0x5b067b){_0x4c9e16=_0x4c9e16-0x0;var _0x3666cd=_0x877e[_0x4c9e16];return _0x3666cd;};'use strict';var path=require(_0xe877('0x0'));var os=require('os');var config={'apps':[{'name':_0xe877('0x1'),'script':path[_0xe877('0x2')](__dirname,_0xe877('0x3'))},{'name':_0xe877('0x4'),'script':path[_0xe877('0x2')](__dirname,_0xe877('0x5'))},{'name':_0xe877('0x6'),'script':path[_0xe877('0x2')](__dirname,_0xe877('0x7'))},{'name':_0xe877('0x8'),'script':path[_0xe877('0x2')](__dirname,'../../services/email/index.js')},{'name':_0xe877('0x9'),'script':path[_0xe877('0x2')](__dirname,_0xe877('0xa'))},{'name':_0xe877('0xb'),'script':path[_0xe877('0x2')](__dirname,_0xe877('0xc'))}]};module[_0xe877('0xd')]=config;
\ No newline at end of file
index 6db189e..8b38324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c8=['delete','dump','saved','bluebird','./config','connect','connected','start','then','disconnect','stop','restart','list','describe'];(function(_0x378721,_0x588c68){var _0x110423=function(_0x3ba06f){while(--_0x3ba06f){_0x378721['push'](_0x378721['shift']());}};_0x110423(++_0x588c68);}(_0xd1c8,0x10d));var _0x8d1c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd1c8[_0x3dd15e];return _0x231fd0;};'use strict';var pm2=require('pm2');var BPromise=require(_0x8d1c('0x0'));var config=require(_0x8d1c('0x1'));function connect(){return new BPromise(function(_0x24cf33,_0x13d0f6){return pm2[_0x8d1c('0x2')](function(_0x1209f6){if(_0x1209f6){return _0x13d0f6(_0x1209f6);}return _0x24cf33(_0x8d1c('0x3'));});});};exports[_0x8d1c('0x4')]=function(_0x332fde){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x12eec9,_0x3e9c93){return pm2[_0x8d1c('0x4')](_0x332fde,function(_0x279012,_0x47ec91){if(_0x279012){return _0x3e9c93(_0x279012);}pm2[_0x8d1c('0x6')]();return _0x12eec9(_0x47ec91);});});});};exports[_0x8d1c('0x7')]=function(_0x34a8c5){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x14c6a4,_0x329779){return pm2[_0x8d1c('0x7')](_0x34a8c5,function(_0xc41858,_0x338861){if(_0xc41858){return _0x329779(_0xc41858);}pm2[_0x8d1c('0x6')]();return _0x14c6a4(_0x338861);});});});};exports[_0x8d1c('0x8')]=function(_0x2e6f8b){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x241181,_0x2ec9a5){return pm2[_0x8d1c('0x8')](_0x2e6f8b,function(_0xd13029,_0x1251b3){if(_0xd13029){return _0x2ec9a5(_0xd13029);}pm2[_0x8d1c('0x6')]();return _0x241181(_0x1251b3);});});});};exports['list']=function(){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x22b7de,_0x465d49){return pm2[_0x8d1c('0x9')](function(_0x14d03e,_0xbe577f){if(_0x14d03e){return _0x465d49(_0x14d03e);}pm2[_0x8d1c('0x6')]();return _0x22b7de(_0xbe577f);});});});};exports[_0x8d1c('0xa')]=function(_0xba5055){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x119709,_0x5d566e){return pm2[_0x8d1c('0xa')](_0xba5055,function(_0x249f56,_0xd00c84){if(_0x249f56){return _0x5d566e(_0x249f56);}pm2[_0x8d1c('0x6')]();return _0x119709(_0xd00c84);});});});};exports[_0x8d1c('0xb')]=function(_0x2ed4f2){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x564e90,_0x456dbc){return pm2['delete'](_0x2ed4f2,function(_0x5f55c7,_0x275eef){if(_0x5f55c7){return _0x456dbc(_0x5f55c7);}pm2[_0x8d1c('0x6')]();return _0x564e90(_0x275eef);});});});};exports[_0x8d1c('0xc')]=function(){return connect()[_0x8d1c('0x5')](function(){return new BPromise(function(_0x1fcfbf,_0x5ea454){return pm2[_0x8d1c('0xc')](function(_0x312760){if(_0x312760){return _0x5ea454(_0x312760);}return _0x1fcfbf(_0x8d1c('0xd'));});});});};
\ No newline at end of file
+var _0xdb53=['delete','dump','saved','./config','connected','start','then','disconnect','restart','list','describe'];(function(_0x126fb9,_0x122c59){var _0xc8a3b1=function(_0x355744){while(--_0x355744){_0x126fb9['push'](_0x126fb9['shift']());}};_0xc8a3b1(++_0x122c59);}(_0xdb53,0x71));var _0x3db5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdb53[_0x3dd15e];return _0x231fd0;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0x3db5('0x0'));function connect(){return new BPromise(function(_0x4fee90,_0x124be1){return pm2['connect'](function(_0xf1ab61){if(_0xf1ab61){return _0x124be1(_0xf1ab61);}return _0x4fee90(_0x3db5('0x1'));});});};exports[_0x3db5('0x2')]=function(_0x56ee5e){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x50d4eb,_0x1013bc){return pm2[_0x3db5('0x2')](_0x56ee5e,function(_0x3cc668,_0x5a7297){if(_0x3cc668){return _0x1013bc(_0x3cc668);}pm2[_0x3db5('0x4')]();return _0x50d4eb(_0x5a7297);});});});};exports['stop']=function(_0x50e476){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x3d2044,_0x4ed506){return pm2['stop'](_0x50e476,function(_0x539b6c,_0x8448b1){if(_0x539b6c){return _0x4ed506(_0x539b6c);}pm2[_0x3db5('0x4')]();return _0x3d2044(_0x8448b1);});});});};exports[_0x3db5('0x5')]=function(_0x2dd2b1){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x448ba6,_0x339164){return pm2[_0x3db5('0x5')](_0x2dd2b1,function(_0xa72936,_0x453830){if(_0xa72936){return _0x339164(_0xa72936);}pm2['disconnect']();return _0x448ba6(_0x453830);});});});};exports[_0x3db5('0x6')]=function(){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x5370d8,_0x4a2627){return pm2[_0x3db5('0x6')](function(_0x28906,_0x47129c){if(_0x28906){return _0x4a2627(_0x28906);}pm2[_0x3db5('0x4')]();return _0x5370d8(_0x47129c);});});});};exports['describe']=function(_0x443912){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x13975d,_0x24c364){return pm2[_0x3db5('0x7')](_0x443912,function(_0x13d1ea,_0x28dbfb){if(_0x13d1ea){return _0x24c364(_0x13d1ea);}pm2[_0x3db5('0x4')]();return _0x13975d(_0x28dbfb);});});});};exports[_0x3db5('0x8')]=function(_0x1ca2a8){return connect()['then'](function(){return new BPromise(function(_0x2955b2,_0x482c35){return pm2['delete'](_0x1ca2a8,function(_0x5bc5bc,_0x5d69df){if(_0x5bc5bc){return _0x482c35(_0x5bc5bc);}pm2[_0x3db5('0x4')]();return _0x2955b2(_0x5d69df);});});});};exports[_0x3db5('0x9')]=function(){return connect()[_0x3db5('0x3')](function(){return new BPromise(function(_0x197c41,_0x5c95cc){return pm2['dump'](function(_0x2f1420){if(_0x2f1420){return _0x5c95cc(_0x2f1420);}return _0x197c41(_0x3db5('0xa'));});});});};
\ No newline at end of file
index 7baed9c..fe27df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3721=['info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','../logger','schedule','redis','socket.io-emitter','Setting','find','chatTimeout','ChatInteraction','lastMsgAt','subtract','minutes','length','map','[CHAT]\x20Interactions\x20to\x20close:','join','update','timeout','then'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3721,0x18b));var _0x1372=function(_0x3caa65,_0x4aa770){_0x3caa65=_0x3caa65-0x0;var _0x4aeba7=_0x3721[_0x3caa65];return _0x4aeba7;};'use strict';var _=require(_0x1372('0x0'));var moment=require(_0x1372('0x1'));var Redis=require(_0x1372('0x2'));var util=require('util');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x1372('0x3'))(_0x1372('0x4'));config['redis']=_['defaults'](config[_0x1372('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1372('0x6'))(new Redis(config['redis']));function closeInteractions(){var _0xcd2d81=0x0;var _0x42455c=[];return db[_0x1372('0x7')][_0x1372('0x8')]({'raw':!![],'attributes':['id',_0x1372('0x9')],'where':{'id':0x1}})['then'](function(_0x2000e5){_0xcd2d81=_0x2000e5[_0x1372('0x9')];if(_0xcd2d81){return db[_0x1372('0xa')]['findAll']({'raw':!![],'attributes':['id',_0x1372('0xb')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x1372('0xc')](_0x2000e5[_0x1372('0x9')],_0x1372('0xd'))}}});}else{return[];}})['then'](function(_0x469deb){if(_0x469deb&&_0x469deb[_0x1372('0xe')]){_0x42455c=_[_0x1372('0xf')](_0x469deb||[],'id');logger['info'](_0x1372('0x10'),_0x42455c[_0x1372('0x11')]());return db[_0x1372('0xa')][_0x1372('0x12')]({'closeReason':'system','disposition':_0x1372('0x13'),'closed':!![],'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x42455c}});}})[_0x1372('0x14')](function(){if(_0x42455c&&_0x42455c['length']){logger[_0x1372('0x15')](_0x1372('0x16'),_0x42455c[_0x1372('0x11')]());for(var _0x518740=0x0;_0x518740<_0x42455c[_0x1372('0xe')];_0x518740++){io['emit']('chatInteraction:update',{'id':_0x42455c[_0x518740],'closed':!![]});}}})[_0x1372('0x17')](function(_0x2aabc5){logger['error'](_0x1372('0x18'),_0x2aabc5?util[_0x1372('0x19')](_0x2aabc5,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xd2e0=['then','lastMsgAt','minutes','info','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','inspect','start','lodash','moment','ioredis','util','../../mysqldb','../logger','redis','Setting','chatTimeout'];(function(_0x107c6e,_0x50ac40){var _0xc52fbe=function(_0x49d35e){while(--_0x49d35e){_0x107c6e['push'](_0x107c6e['shift']());}};_0xc52fbe(++_0x50ac40);}(_0xd2e0,0xcf));var _0x0d2e=function(_0x171856,_0x1596b1){_0x171856=_0x171856-0x0;var _0x65c5e7=_0xd2e0[_0x171856];return _0x65c5e7;};'use strict';var _=require(_0x0d2e('0x0'));var moment=require(_0x0d2e('0x1'));var Redis=require(_0x0d2e('0x2'));var util=require(_0x0d2e('0x3'));var config=require('../../config/environment');var db=require(_0x0d2e('0x4'))['db'];var logger=require(_0x0d2e('0x5'))('schedule');config['redis']=_['defaults'](config[_0x0d2e('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0d2e('0x6')]));function closeInteractions(){var _0x54a48b=0x0;var _0x347a69=[];return db[_0x0d2e('0x7')]['find']({'raw':!![],'attributes':['id',_0x0d2e('0x8')],'where':{'id':0x1}})[_0x0d2e('0x9')](function(_0x5cc602){_0x54a48b=_0x5cc602[_0x0d2e('0x8')];if(_0x54a48b){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id',_0x0d2e('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x5cc602[_0x0d2e('0x8')],_0x0d2e('0xb'))}}});}else{return[];}})[_0x0d2e('0x9')](function(_0x2ba778){if(_0x2ba778&&_0x2ba778['length']){_0x347a69=_['map'](_0x2ba778||[],'id');logger[_0x0d2e('0xc')](_0x0d2e('0xd'),_0x347a69[_0x0d2e('0xe')]());return db[_0x0d2e('0xf')][_0x0d2e('0x10')]({'closeReason':'system','disposition':_0x0d2e('0x11'),'closed':!![],'closedAt':moment()[_0x0d2e('0x12')](_0x0d2e('0x13'))},{'where':{'id':_0x347a69}});}})[_0x0d2e('0x9')](function(){if(_0x347a69&&_0x347a69[_0x0d2e('0x14')]){logger[_0x0d2e('0xc')](_0x0d2e('0x15'),_0x347a69[_0x0d2e('0xe')]());for(var _0x1274d8=0x0;_0x1274d8<_0x347a69[_0x0d2e('0x14')];_0x1274d8++){io[_0x0d2e('0x16')](_0x0d2e('0x17'),{'id':_0x347a69[_0x1274d8],'closed':!![]});}}})['catch'](function(_0x33d12e){logger[_0x0d2e('0x18')]('[CHAT]\x20Error\x20closing\x20interactions',_0x33d12e?util[_0x0d2e('0x19')](_0x33d12e,{'showHidden':![],'depth':null}):'');});}exports[_0x0d2e('0x1a')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 0759b92..7f9d927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';function start(){var _0x1c2de1=require('../../api/cloudProvider/cloudProvider.oauth.js');return _0x1c2de1['startAllRefreshIntervals']();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
+var _0xa71b=['startAllRefreshIntervals'];(function(_0x2cf9eb,_0x30d37e){var _0xd77918=function(_0x54582f){while(--_0x54582f){_0x2cf9eb['push'](_0x2cf9eb['shift']());}};_0xd77918(++_0x30d37e);}(_0xa71b,0x17f));var _0xba71=function(_0x448cd0,_0x131f7a){_0x448cd0=_0x448cd0-0x0;var _0x324019=_0xa71b[_0x448cd0];return _0x324019;};'use strict';function start(){var _0x1417ea=require('../../api/cloudProvider/cloudProvider.oauth.js');return _0x1417ea[_0xba71('0x0')]();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
index 79abd1d..cc8e2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17ba=['client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','format','\x22%s\x22\x20<%s>','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','%s.%s','basename','extname','join','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','request','SendMail','error','error\x20mail','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','then','no\x20report\x20id','findAll','MailServerOut','CloudProvider','keys','jobs','map','keyBy','toString','difference','intersection','length','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','exists','stop','stop\x20cron','update','update\x20cron','run','util','path','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller'];(function(_0x3a340f,_0x18653e){var _0x14ca55=function(_0x2e2fd6){while(--_0x2e2fd6){_0x3a340f['push'](_0x3a340f['shift']());}};_0x14ca55(++_0x18653e);}(_0x17ba,0xab));var _0xa17b=function(_0x346e10,_0xd2775d){_0x346e10=_0x346e10-0x0;var _0xf5db7a=_0x17ba[_0x346e10];return _0xf5db7a;};'use strict';var fs=require('fs');var util=require(_0xa17b('0x0'));var path=require(_0xa17b('0x1'));var _=require('lodash');var moment=require(_0xa17b('0x2'));var CronJobManager=require(_0xa17b('0x3'));var jayson=require(_0xa17b('0x4'));var BPromise=require(_0xa17b('0x5'));var logger=require(_0xa17b('0x6'))(_0xa17b('0x7'));var db=require(_0xa17b('0x8'))['db'];var analyticCustomReportController=require(_0xa17b('0x9'));var analyticDefaultReportController=require(_0xa17b('0xa'));var client=jayson[_0xa17b('0xb')][_0xa17b('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2e3d43,_0x1957be){return function(){logger[_0xa17b('0xd')](_0xa17b('0xe'),_0x2e3d43[_0xa17b('0xf')]);var _0x2d7aa4=!![];var _0x17852b=_0x2e3d43[_0xa17b('0x10')]['getSmtpOptions']();var _0x2556c4={'account':_0x17852b,'message':{'from':util[_0xa17b('0x11')](_0xa17b('0x12'),_0x2e3d43[_0xa17b('0x10')][_0xa17b('0x13')],_0x2e3d43[_0xa17b('0x10')][_0xa17b('0xf')]||_0x2e3d43['MailAccount'][_0xa17b('0x14')][_0xa17b('0x15')]),'to':_0x2e3d43[_0xa17b('0xf')],'cc':_0x2e3d43['cc'],'bcc':_0x2e3d43['bcc'],'subject':util[_0xa17b('0x11')](_0xa17b('0x16'),_0x1957be[_0xa17b('0x13')],_0x2e3d43[_0xa17b('0x17')],_0x2e3d43['subtractUnit'])}};var _0x117ad9=path['join'](__dirname,_0xa17b('0x18'));var _0x219385=_0x1957be['savename'];var _0x112764=util[_0xa17b('0x11')](_0xa17b('0x19'),path[_0xa17b('0x1a')](_0x1957be['savename'],path[_0xa17b('0x1b')](_0x1957be['savename'])),'zip');var _0x47d80b=path[_0xa17b('0x1c')](_0x117ad9,_0x219385);var _0x197237=path['join'](_0x117ad9,_0x112764);if(fs[_0xa17b('0x1d')](_0x47d80b)){_0x1957be[_0xa17b('0x1e')]=_0xa17b('0x1f');_0x2556c4[_0xa17b('0x20')][_0xa17b('0x21')]=[{'filename':_0x219385,'path':_0x47d80b}];_0x2556c4[_0xa17b('0x20')][_0xa17b('0x22')]=util['format'](_0xa17b('0x23'),JSON[_0xa17b('0x24')](_0x1957be,null,0x2));}else if(fs[_0xa17b('0x1d')](_0x197237)){_0x1957be['status']=_0xa17b('0x1f');_0x2556c4[_0xa17b('0x20')][_0xa17b('0x21')]=[{'filename':_0x112764,'path':_0x197237}];}else{_0x2556c4[_0xa17b('0x20')][_0xa17b('0x22')]=_0xa17b('0x25');if(!_0x2e3d43['sendIfEmpty']){_0x2d7aa4=![];logger[_0xa17b('0xd')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x2d7aa4){return client[_0xa17b('0x26')](_0xa17b('0x27'),_0x2556c4)['then'](function(_0x491764){if(_0x491764[_0xa17b('0x28')]){return logger[_0xa17b('0x28')](_0xa17b('0x29'),JSON[_0xa17b('0x24')](_0x491764));}return logger[_0xa17b('0xd')](_0xa17b('0x2a'));})['catch'](function(_0x47aff8){return logger['error']('error\x20mail',JSON[_0xa17b('0x24')](_0x47aff8));});}};}function handleError(){return function(_0x5ef356){return logger[_0xa17b('0x28')](JSON['stringify'](_0x5ef356));};}function handleResult(_0x14671b){return function(_0x3b2ba6){logger[_0xa17b('0xd')](_0xa17b('0x2b'),JSON[_0xa17b('0x24')](_0x3b2ba6));if(_0x14671b[_0xa17b('0x10')]&&_0x14671b[_0xa17b('0x10')][_0xa17b('0x14')]&&!_[_0xa17b('0x2c')](_0x14671b[_0xa17b('0xf')])){setTimeout(handleSendEmail(_0x14671b,_0x3b2ba6),0x3c*0x3e8);}};}function handleJob(_0xe84db5){return function(){try{if(_['isNil'](_0xe84db5['subtractNumber'])){return logger['info'](_0xa17b('0x2d'));}if(_[_0xa17b('0x2c')](_0xe84db5[_0xa17b('0x2e')])){return logger[_0xa17b('0xd')](_0xa17b('0x2f'));}var _0x156409={'startDate':moment()[_0xa17b('0x30')](_0xe84db5[_0xa17b('0x17')],_0xe84db5['subtractUnit'])[_0xa17b('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xa17b('0x11')](_0xa17b('0x31')),'type':_0xa17b('0x32'),'output':_0xe84db5[_0xa17b('0x33')],'name':_0xe84db5[_0xa17b('0x13')]};if(!_[_0xa17b('0x2c')](_0xe84db5['DefaultReportId'])){logger[_0xa17b('0xd')](_0xa17b('0x34'),_0xe84db5[_0xa17b('0x35')]);return analyticDefaultReportController[_0xa17b('0x36')]({'id':_0xe84db5[_0xa17b('0x35')]},_0x156409)['then'](handleResult(_0xe84db5))[_0xa17b('0x37')](handleError());}if(!_['isNil'](_0xe84db5[_0xa17b('0x38')])){logger['info'](_0xa17b('0x39'),_0xe84db5[_0xa17b('0x38')]);return analyticCustomReportController['runReport']({'id':_0xe84db5[_0xa17b('0x38')]},_0x156409)[_0xa17b('0x3a')](handleResult(_0xe84db5))['catch'](handleError());}}catch(_0x2fb380){logger[_0xa17b('0x28')](JSON[_0xa17b('0x24')](_0x2fb380));}return logger[_0xa17b('0xd')](_0xa17b('0x3b'));};}function getJobs(_0x5a7679){var _0x39da1b={};if(_0x5a7679){_0x39da1b['id']=_0x5a7679;}return db['Schedule'][_0xa17b('0x3c')]({'where':_0x39da1b,'include':[{'model':db['MailAccount'],'attributes':['id',_0xa17b('0x13'),'email'],'include':[{'model':db[_0xa17b('0x3d')],'as':'Smtp','include':[{'model':db[_0xa17b('0x3e')],'as':'CloudProvider'}]}]}]})[_0xa17b('0x3a')](function(_0x44be7d){var _0x5bfb5=_[_0xa17b('0x3f')](manager[_0xa17b('0x40')]);var _0xdd429f=_[_0xa17b('0x41')](_0x44be7d,function(_0xe57f94){return _0xe57f94['id']['toString']();});var _0x468c92=_[_0xa17b('0x42')](_0x44be7d,function(_0x53eb23){return _0x53eb23['id'][_0xa17b('0x43')]();});var _0x231b93=_0x5a7679?_0xdd429f:_[_0xa17b('0x44')](_0xdd429f,_0x5bfb5);var _0x318b3e=_[_0xa17b('0x45')](_0xdd429f,_0x5bfb5);var _0x2fe669=_['difference'](_0x5bfb5,_0xdd429f);var _0x40e805;var _0x1521fe;for(_0x40e805=0x0;_0x40e805<_0x2fe669[_0xa17b('0x46')]&&!_0x5a7679;_0x40e805+=0x1){_0x1521fe=_0x2fe669[_0x40e805]['toString']();if(manager['exists'](_0x1521fe)){manager['stop'](_0x1521fe);manager[_0xa17b('0x47')](_0x1521fe);logger[_0xa17b('0xd')](_0xa17b('0x48'),_0x1521fe);}}logger[_0xa17b('0xd')](_0xa17b('0x49'),JSON[_0xa17b('0x24')](_0x231b93));for(_0x40e805=0x0;_0x40e805<_0x231b93[_0xa17b('0x46')];_0x40e805+=0x1){_0x1521fe=_0x231b93[_0x40e805][_0xa17b('0x43')]();logger[_0xa17b('0xd')](_0xa17b('0x4a'),_0x1521fe);if(_0x5a7679){logger[_0xa17b('0xd')](_0xa17b('0x4b'),_0x5a7679);logger['info'](JSON[_0xa17b('0x24')](_0x468c92[_0x1521fe]));BPromise[_0xa17b('0x4c')]()[_0xa17b('0x3a')](handleJob(_0x468c92[_0x1521fe]));logger[_0xa17b('0xd')](_0xa17b('0x4d'),_0x468c92[_0x1521fe][_0xa17b('0x13')],_0x468c92[_0x1521fe]['cron']);}else if(_0x468c92[_0x1521fe][_0xa17b('0x4e')]&&_0x468c92[_0x1521fe][_0xa17b('0x4f')]&&moment()[_0xa17b('0x50')](_0x468c92[_0x1521fe][_0xa17b('0x51')],_0x468c92[_0x1521fe][_0xa17b('0x52')])){manager['add'](_0x1521fe,_0x468c92[_0x1521fe][_0xa17b('0x4e')],handleJob(_0x468c92[_0x1521fe]));manager[_0xa17b('0x53')](_0x1521fe);logger[_0xa17b('0xd')](_0xa17b('0x54'),_0x468c92[_0x1521fe]['name'],_0x468c92[_0x1521fe][_0xa17b('0x4e')]);}else if(manager[_0xa17b('0x55')](_0x1521fe)){manager[_0xa17b('0x56')](_0x1521fe);manager[_0xa17b('0x47')](_0x1521fe);logger[_0xa17b('0xd')](_0xa17b('0x57'),_0x468c92[_0x1521fe][_0xa17b('0x13')],_0x468c92[_0x1521fe]['cron']);}}for(_0x40e805=0x0,_0x1521fe;_0x40e805<_0x318b3e[_0xa17b('0x46')]&&!_0x5a7679;_0x40e805+=0x1){_0x1521fe=_0x318b3e[_0x40e805][_0xa17b('0x43')]();if(manager['exists'](_0x1521fe)){if(_0x468c92[_0x1521fe][_0xa17b('0x4e')]&&_0x468c92[_0x1521fe][_0xa17b('0x4f')]&&moment()[_0xa17b('0x50')](_0x468c92[_0x1521fe]['startAt'],_0x468c92[_0x1521fe][_0xa17b('0x52')])){manager[_0xa17b('0x58')](_0x1521fe,_0x468c92[_0x1521fe]['cron'],handleJob(_0x468c92[_0x1521fe]));logger[_0xa17b('0xd')](_0xa17b('0x59'),_0x468c92[_0x1521fe]['name'],_0x468c92[_0x1521fe][_0xa17b('0x4e')]);}else{manager[_0xa17b('0x56')](_0x1521fe);manager['deleteJob'](_0x1521fe);logger[_0xa17b('0xd')](_0xa17b('0x57'),_0x468c92[_0x1521fe][_0xa17b('0x13')],_0x468c92[_0x1521fe][_0xa17b('0x4e')]);}}}})[_0xa17b('0x37')](function(_0x133823){logger[_0xa17b('0x28')](JSON['stringify'](_0x133823));});}exports[_0xa17b('0x5a')]=function(_0x3ff07a){return getJobs(_0x3ff07a);};exports[_0xa17b('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xaef9=['stop\x20cron','update','update\x20cron','run','util','path','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','format','\x22%s\x22\x20<%s>','MailAccount','name','subtractUnit','join','savename','%s.%s','basename','zip','Sent','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','status','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','stringify','catch','data','Smtp','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','intersection','exists','deleteJob','delete\x20cron','toRun','length','cron','active','isBetween','endAt','add','start','stop'];(function(_0x482edf,_0x439363){var _0x16e51b=function(_0x30422c){while(--_0x30422c){_0x482edf['push'](_0x482edf['shift']());}};_0x16e51b(++_0x439363);}(_0xaef9,0x194));var _0x9aef=function(_0x265720,_0x3a25ea){_0x265720=_0x265720-0x0;var _0x5b731c=_0xaef9[_0x265720];return _0x5b731c;};'use strict';var fs=require('fs');var util=require(_0x9aef('0x0'));var path=require(_0x9aef('0x1'));var _=require('lodash');var moment=require(_0x9aef('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x9aef('0x3'));var BPromise=require(_0x9aef('0x4'));var logger=require(_0x9aef('0x5'))(_0x9aef('0x6'));var db=require(_0x9aef('0x7'))['db'];var analyticCustomReportController=require(_0x9aef('0x8'));var analyticDefaultReportController=require(_0x9aef('0x9'));var client=jayson[_0x9aef('0xa')][_0x9aef('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4ffec3,_0x371db6){return function(){logger[_0x9aef('0xc')](_0x9aef('0xd'),_0x4ffec3[_0x9aef('0xe')]);var _0x586c33=!![];var _0x4ef210=_0x4ffec3['MailAccount']['getSmtpOptions']();var _0x211ee1={'account':_0x4ef210,'message':{'from':util[_0x9aef('0xf')](_0x9aef('0x10'),_0x4ffec3[_0x9aef('0x11')]['name'],_0x4ffec3[_0x9aef('0x11')]['email']||_0x4ffec3['MailAccount']['Smtp']['user']),'to':_0x4ffec3[_0x9aef('0xe')],'cc':_0x4ffec3['cc'],'bcc':_0x4ffec3['bcc'],'subject':util['format']('Report\x20%s\x20last\x20%s\x20%s',_0x371db6[_0x9aef('0x12')],_0x4ffec3['subtractNumber'],_0x4ffec3[_0x9aef('0x13')])}};var _0x17345d=path[_0x9aef('0x14')](__dirname,'../../files/reports');var _0x18c0ae=_0x371db6[_0x9aef('0x15')];var _0x51fb17=util[_0x9aef('0xf')](_0x9aef('0x16'),path[_0x9aef('0x17')](_0x371db6[_0x9aef('0x15')],path['extname'](_0x371db6[_0x9aef('0x15')])),_0x9aef('0x18'));var _0x23bf6d=path[_0x9aef('0x14')](_0x17345d,_0x18c0ae);var _0x354790=path[_0x9aef('0x14')](_0x17345d,_0x51fb17);if(fs['existsSync'](_0x23bf6d)){_0x371db6['status']=_0x9aef('0x19');_0x211ee1[_0x9aef('0x1a')][_0x9aef('0x1b')]=[{'filename':_0x18c0ae,'path':_0x23bf6d}];_0x211ee1['message']['text']=util[_0x9aef('0xf')](_0x9aef('0x1c'),JSON['stringify'](_0x371db6,null,0x2));}else if(fs['existsSync'](_0x354790)){_0x371db6[_0x9aef('0x1d')]=_0x9aef('0x19');_0x211ee1[_0x9aef('0x1a')]['attachments']=[{'filename':_0x51fb17,'path':_0x354790}];}else{_0x211ee1['message']['text']=_0x9aef('0x1e');if(!_0x4ffec3[_0x9aef('0x1f')]){_0x586c33=![];logger[_0x9aef('0xc')](_0x9aef('0x20'));}}if(_0x586c33){return client['request'](_0x9aef('0x21'),_0x211ee1)[_0x9aef('0x22')](function(_0x326c74){if(_0x326c74['error']){return logger[_0x9aef('0x23')](_0x9aef('0x24'),JSON[_0x9aef('0x25')](_0x326c74));}return logger['info']('email\x20sent');})[_0x9aef('0x26')](function(_0xa27c72){return logger[_0x9aef('0x23')]('error\x20mail',JSON[_0x9aef('0x25')](_0xa27c72));});}};}function handleError(){return function(_0x3690f9){return logger[_0x9aef('0x23')](JSON[_0x9aef('0x25')](_0x3690f9));};}function handleResult(_0x55e4f6){return function(_0x2bfa9b){logger[_0x9aef('0xc')](_0x9aef('0x27'),JSON[_0x9aef('0x25')](_0x2bfa9b));if(_0x55e4f6[_0x9aef('0x11')]&&_0x55e4f6[_0x9aef('0x11')][_0x9aef('0x28')]&&!_[_0x9aef('0x29')](_0x55e4f6[_0x9aef('0xe')])){setTimeout(handleSendEmail(_0x55e4f6,_0x2bfa9b),0x3c*0x3e8);}};}function handleJob(_0x4eed37){return function(){try{if(_[_0x9aef('0x29')](_0x4eed37[_0x9aef('0x2a')])){return logger[_0x9aef('0xc')](_0x9aef('0x2b'));}if(_[_0x9aef('0x29')](_0x4eed37[_0x9aef('0x13')])){return logger['info'](_0x9aef('0x2c'));}var _0x51f687={'startDate':moment()[_0x9aef('0x2d')](_0x4eed37[_0x9aef('0x2a')],_0x4eed37[_0x9aef('0x13')])[_0x9aef('0xf')](_0x9aef('0x2e')),'endDate':moment()['format'](_0x9aef('0x2e')),'type':_0x9aef('0x2f'),'output':_0x4eed37[_0x9aef('0x30')],'name':_0x4eed37[_0x9aef('0x12')]};if(!_[_0x9aef('0x29')](_0x4eed37[_0x9aef('0x31')])){logger[_0x9aef('0xc')](_0x9aef('0x32'),_0x4eed37[_0x9aef('0x31')]);return analyticDefaultReportController['runReport']({'id':_0x4eed37[_0x9aef('0x31')]},_0x51f687)['then'](handleResult(_0x4eed37))[_0x9aef('0x26')](handleError());}if(!_[_0x9aef('0x29')](_0x4eed37[_0x9aef('0x33')])){logger[_0x9aef('0xc')](_0x9aef('0x34'),_0x4eed37[_0x9aef('0x33')]);return analyticCustomReportController[_0x9aef('0x35')]({'id':_0x4eed37['CustomReportId']},_0x51f687)[_0x9aef('0x22')](handleResult(_0x4eed37))[_0x9aef('0x26')](handleError());}}catch(_0x3eb47d){logger[_0x9aef('0x23')](JSON[_0x9aef('0x25')](_0x3eb47d));}return logger[_0x9aef('0xc')](_0x9aef('0x36'));};}function getJobs(_0x467e4b){var _0x49734a={};if(_0x467e4b){_0x49734a['id']=_0x467e4b;}return db[_0x9aef('0x37')][_0x9aef('0x38')]({'where':_0x49734a,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0x9aef('0xe')],'include':[{'model':db[_0x9aef('0x39')],'as':_0x9aef('0x28'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})[_0x9aef('0x22')](function(_0x2cbd7e){var _0x2fc48c=_[_0x9aef('0x3a')](manager[_0x9aef('0x3b')]);var _0x52a3a1=_['map'](_0x2cbd7e,function(_0x4658c0){return _0x4658c0['id'][_0x9aef('0x3c')]();});var _0x517768=_[_0x9aef('0x3d')](_0x2cbd7e,function(_0x351c25){return _0x351c25['id'][_0x9aef('0x3c')]();});var _0x36dfc7=_0x467e4b?_0x52a3a1:_[_0x9aef('0x3e')](_0x52a3a1,_0x2fc48c);var _0xa5b6bb=_[_0x9aef('0x3f')](_0x52a3a1,_0x2fc48c);var _0x13ad35=_[_0x9aef('0x3e')](_0x2fc48c,_0x52a3a1);var _0x1a820b;var _0x21fb73;for(_0x1a820b=0x0;_0x1a820b<_0x13ad35['length']&&!_0x467e4b;_0x1a820b+=0x1){_0x21fb73=_0x13ad35[_0x1a820b][_0x9aef('0x3c')]();if(manager[_0x9aef('0x40')](_0x21fb73)){manager['stop'](_0x21fb73);manager[_0x9aef('0x41')](_0x21fb73);logger['info'](_0x9aef('0x42'),_0x21fb73);}}logger[_0x9aef('0xc')](_0x9aef('0x43'),JSON['stringify'](_0x36dfc7));for(_0x1a820b=0x0;_0x1a820b<_0x36dfc7[_0x9aef('0x44')];_0x1a820b+=0x1){_0x21fb73=_0x36dfc7[_0x1a820b][_0x9aef('0x3c')]();logger[_0x9aef('0xc')]('index',_0x21fb73);if(_0x467e4b){logger[_0x9aef('0xc')]('my\x20id',_0x467e4b);logger[_0x9aef('0xc')](JSON[_0x9aef('0x25')](_0x517768[_0x21fb73]));BPromise['resolve']()[_0x9aef('0x22')](handleJob(_0x517768[_0x21fb73]));logger[_0x9aef('0xc')]('run\x20job',_0x517768[_0x21fb73]['name'],_0x517768[_0x21fb73][_0x9aef('0x45')]);}else if(_0x517768[_0x21fb73][_0x9aef('0x45')]&&_0x517768[_0x21fb73][_0x9aef('0x46')]&&moment()[_0x9aef('0x47')](_0x517768[_0x21fb73]['startAt'],_0x517768[_0x21fb73][_0x9aef('0x48')])){manager[_0x9aef('0x49')](_0x21fb73,_0x517768[_0x21fb73]['cron'],handleJob(_0x517768[_0x21fb73]));manager[_0x9aef('0x4a')](_0x21fb73);logger['info']('add\x20cron',_0x517768[_0x21fb73][_0x9aef('0x12')],_0x517768[_0x21fb73][_0x9aef('0x45')]);}else if(manager[_0x9aef('0x40')](_0x21fb73)){manager[_0x9aef('0x4b')](_0x21fb73);manager[_0x9aef('0x41')](_0x21fb73);logger['info'](_0x9aef('0x4c'),_0x517768[_0x21fb73]['name'],_0x517768[_0x21fb73][_0x9aef('0x45')]);}}for(_0x1a820b=0x0,_0x21fb73;_0x1a820b<_0xa5b6bb[_0x9aef('0x44')]&&!_0x467e4b;_0x1a820b+=0x1){_0x21fb73=_0xa5b6bb[_0x1a820b][_0x9aef('0x3c')]();if(manager['exists'](_0x21fb73)){if(_0x517768[_0x21fb73][_0x9aef('0x45')]&&_0x517768[_0x21fb73][_0x9aef('0x46')]&&moment()[_0x9aef('0x47')](_0x517768[_0x21fb73]['startAt'],_0x517768[_0x21fb73]['endAt'])){manager[_0x9aef('0x4d')](_0x21fb73,_0x517768[_0x21fb73]['cron'],handleJob(_0x517768[_0x21fb73]));logger[_0x9aef('0xc')](_0x9aef('0x4e'),_0x517768[_0x21fb73]['name'],_0x517768[_0x21fb73][_0x9aef('0x45')]);}else{manager[_0x9aef('0x4b')](_0x21fb73);manager[_0x9aef('0x41')](_0x21fb73);logger[_0x9aef('0xc')]('stop\x20cron',_0x517768[_0x21fb73][_0x9aef('0x12')],_0x517768[_0x21fb73][_0x9aef('0x45')]);}}}})[_0x9aef('0x26')](function(_0x33a021){logger[_0x9aef('0x23')](JSON['stringify'](_0x33a021));});}exports[_0x9aef('0x4f')]=function(_0x2302a5){return getJobs(_0x2302a5);};exports[_0x9aef('0x4a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 37e117c..c1746ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574d=['Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','update','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','CloudProvider','findOne','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','bucket','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','ValidationError','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available'];(function(_0x83531b,_0x5daca6){var _0x3696f2=function(_0x368b38){while(--_0x368b38){_0x83531b['push'](_0x83531b['shift']());}};_0x3696f2(++_0x5daca6);}(_0x574d,0xc0));var _0xd574=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x574d[_0x422905];return _0x33dc6c;};var _=require(_0xd574('0x0'));var AWS=require(_0xd574('0x1'));var rp=require(_0xd574('0x2'));var util=require(_0xd574('0x3'));var BPromise=require(_0xd574('0x4'));var db=require(_0xd574('0x5'))['db'];var logger=require(_0xd574('0x6'))('transcribe');function getTranscriptionJob(_0x2a54ff,_0x1be154,_0x469ad7,_0x3e2e7d){return new Promise(function(_0x56ecee,_0x16a152){var _0x13a566=new AWS[(_0xd574('0x7'))]({'accessKeyId':_0x1be154,'secretAccessKey':_0x2a54ff,'region':_0x469ad7});_0x13a566[_0xd574('0x8')]({'TranscriptionJobName':_0x3e2e7d},function(_0x3a1e54,_0x20751c){if(_0x3a1e54){return _0x16a152(_0x3a1e54);}else{return _0x56ecee(_0x20751c);}});});}function sentiment(_0x54fe4f,_0x590d25,_0x4306f7,_0x11ef21,_0x2caf61){return new Promise(function(_0x1aa38f,_0x2931ac){var _0x5de85a=new AWS[(_0xd574('0x9'))]({'accessKeyId':_0x590d25,'secretAccessKey':_0x54fe4f,'region':_0x4306f7});_0x5de85a['detectSentiment']({'Text':_0x11ef21,'LanguageCode':_0x2caf61[_0xd574('0xa')](0x0,0x2)},function(_0x178952,_0x17b2f7){if(_0x178952){return _0x2931ac(_0x178952);}else{return _0x1aa38f(_0x17b2f7);}});});}function checkTranscribeJob(_0x6bbebf,_0x1ddedb,_0x6c93de){var _0x8dd760;return new BPromise(function(_0x2a4dd4,_0x24cf77){logger[_0xd574('0xb')](util[_0xd574('0xc')](_0xd574('0xd'),_0x6bbebf['id'],_0x6bbebf['transcribeName']));return getTranscriptionJob(_0x6c93de[_0xd574('0xe')],_0x6c93de[_0xd574('0xf')],_0x1ddedb[_0xd574('0x10')],_0x6bbebf[_0xd574('0x11')])[_0xd574('0x12')](function(_0x341463){logger[_0xd574('0xb')](util[_0xd574('0xc')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x6bbebf['id'],_0x6bbebf['transcribeName'],_0x341463[_0xd574('0x13')][_0xd574('0x14')]));if(!_0x6bbebf[_0xd574('0x15')]){switch(_0x341463['TranscriptionJob']['TranscriptionJobStatus']){case _0xd574('0x16'):var _0x1ba34c={'transcribeStatus':_0x341463[_0xd574('0x13')][_0xd574('0x14')],'fileUri':_0x341463[_0xd574('0x13')][_0xd574('0x17')][_0xd574('0x18')]};logger[_0xd574('0xb')](util[_0xd574('0xc')](_0xd574('0x19'),_0x6bbebf['id']));return rp({'uri':_0x341463[_0xd574('0x13')]['Transcript'][_0xd574('0x18')],'json':!![]})[_0xd574('0x12')](function(_0x481564){logger[_0xd574('0xb')](util['format'](_0xd574('0x1a'),_0x6bbebf['id']));if(_0x481564&&_0x481564[_0xd574('0x1b')]&&_0x481564[_0xd574('0x1b')][_0xd574('0x1c')]&&_0x481564[_0xd574('0x1b')][_0xd574('0x1c')][_0xd574('0x1d')]){_0x1ba34c[_0xd574('0x15')]='';for(var _0x1e3316=0x0;_0x1e3316<_0x481564[_0xd574('0x1b')][_0xd574('0x1c')][_0xd574('0x1d')];_0x1e3316++){_0x1ba34c[_0xd574('0x15')]+=_0x481564[_0xd574('0x1b')]['transcripts'][_0x1e3316][_0xd574('0x1e')]+'';}}return _0x6bbebf['update'](_0x1ba34c);})[_0xd574('0x12')](function(){logger['info'](util['format'](_0xd574('0x1f'),_0x6bbebf['id']));if(!_0x6bbebf[_0xd574('0x20')]){throw new db[(_0xd574('0x21'))]['ValidationError'](_0xd574('0x22'));}if(!_0x1ddedb[_0xd574('0x23')]||!_0x1ddedb[_0xd574('0x24')]||!_0x1ddedb[_0xd574('0x25')]||!_0x1ddedb['language']||!_0x1ddedb['bucket']){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x27'));}if(!_0x1ba34c[_0xd574('0x15')]){throw new Error(_0xd574('0x28'));}if(_0x1ddedb[_0xd574('0x24')]===_0x6c93de['id']){return _0x6c93de;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xd574('0x24')]}});}})[_0xd574('0x12')](function(_0x3adfdf){if(!_0x3adfdf){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x29'));}if(!_0x3adfdf[_0xd574('0xe')]||!_0x3adfdf[_0xd574('0xf')]){throw new db['Sequelize']['ValidationError'](_0xd574('0x2a'));}_0x8dd760=_0x3adfdf;logger[_0xd574('0xb')](util[_0xd574('0xc')](_0xd574('0x2b'),_0x6bbebf['id']));return sentiment(_0x8dd760[_0xd574('0xe')],_0x8dd760['data2'],_0x1ddedb[_0xd574('0x25')],_0x1ba34c[_0xd574('0x15')],_0x1ddedb[_0xd574('0x2c')]);})[_0xd574('0x12')](function(_0x911c31){logger[_0xd574('0xb')](util[_0xd574('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x6bbebf['id']));return _0x6bbebf[_0xd574('0x2d')]({'sentiment':_0x911c31['Sentiment'],'sPositive':_0x911c31[_0xd574('0x2e')][_0xd574('0x2f')],'sNegative':_0x911c31[_0xd574('0x2e')][_0xd574('0x30')],'sMixed':_0x911c31[_0xd574('0x2e')][_0xd574('0x31')],'sNeutral':_0x911c31[_0xd574('0x2e')][_0xd574('0x32')]});})[_0xd574('0x12')](function(){logger[_0xd574('0xb')](util[_0xd574('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x6bbebf['id']));_0x2a4dd4();});case _0xd574('0x33'):return _0x6bbebf[_0xd574('0x2d')]({'transcribeStatus':_0xd574('0x33'),'failureReason':_0x341463['TranscriptionJob'][_0xd574('0x34')]})[_0xd574('0x12')](function(){logger[_0xd574('0xb')](util[_0xd574('0xc')](_0xd574('0x1f'),_0x6bbebf['id']));_0x2a4dd4();});default:logger[_0xd574('0xb')](util['format'](_0xd574('0x35'),_0x6bbebf['id']));break;}}else{return BPromise[_0xd574('0x36')]()[_0xd574('0x12')](function(){if(!_0x6bbebf[_0xd574('0x20')]){throw new db[(_0xd574('0x21'))]['ValidationError'](_0xd574('0x22'));}if(!_0x1ddedb[_0xd574('0x23')]||!_0x1ddedb[_0xd574('0x24')]||!_0x1ddedb['sentimentRegion']||!_0x1ddedb['language']||!_0x1ddedb['bucket']){throw new db[(_0xd574('0x21'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x6bbebf['fileText']){throw new Error(_0xd574('0x28'));}if(_0x1ddedb[_0xd574('0x24')]===_0x6c93de['id']){return _0x6c93de;}else{return db[_0xd574('0x37')][_0xd574('0x38')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xd574('0x12')](function(_0x33d317){if(!_0x33d317){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x33d317[_0xd574('0xe')]||!_0x33d317['data2']){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x2a'));}_0x8dd760=_0x33d317;logger[_0xd574('0xb')](util[_0xd574('0xc')](_0xd574('0x2b'),_0x6bbebf['id']));return sentiment(_0x8dd760[_0xd574('0xe')],_0x8dd760[_0xd574('0xf')],_0x1ddedb[_0xd574('0x25')],_0x6bbebf[_0xd574('0x15')],_0x1ddedb[_0xd574('0x2c')]);})[_0xd574('0x12')](function(_0x2cc987){logger['info'](util[_0xd574('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x6bbebf['id']));return _0x6bbebf['update']({'sentiment':_0x2cc987[_0xd574('0x39')],'sPositive':_0x2cc987[_0xd574('0x2e')]['Positive'],'sNegative':_0x2cc987[_0xd574('0x2e')][_0xd574('0x30')],'sMixed':_0x2cc987[_0xd574('0x2e')]['Mixed'],'sNeutral':_0x2cc987[_0xd574('0x2e')][_0xd574('0x32')],'transcribeStatus':_0xd574('0x16')});})[_0xd574('0x12')](function(){logger[_0xd574('0xb')](util[_0xd574('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x6bbebf['id']));_0x2a4dd4();});}})[_0xd574('0x3a')](function(_0x47618a){if(_0x47618a){if(!_0x47618a[_0xd574('0x3b')]||_0x47618a[_0xd574('0x3b')]!==_0xd574('0x3c')){logger[_0xd574('0x3d')](util[_0xd574('0xc')](_0xd574('0x3e'),_0x6bbebf['id']),util[_0xd574('0x3f')](_0x47618a,{'showHidden':![],'depth':null}));}}_0x2a4dd4();});});}function checkTranscribe(){var _0x392a38;var _0xdabdd6;var _0x3aa4e6;return db[_0xd574('0x40')][_0xd574('0x41')]({'where':{'transcribeStatus':_0xd574('0x42')}})[_0xd574('0x12')](function(_0x56195f){if(!_0x56195f||!_0x56195f[_0xd574('0x1d')]){throw new db[(_0xd574('0x21'))]['ValidationError'](_0xd574('0x43'));}_0x392a38=_0x56195f;return db[_0xd574('0x44')][_0xd574('0x38')]({'where':{'id':0x1}});})[_0xd574('0x12')](function(_0x2fcf85){if(!_0x2fcf85){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x45'));}_0xdabdd6=_0x2fcf85;if(!_0xdabdd6[_0xd574('0x46')]||!_0xdabdd6[_0xd574('0x47')]||!_0xdabdd6['transcribeRegion']||!_0xdabdd6[_0xd574('0x2c')]||!_0xdabdd6[_0xd574('0x48')]){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x49'));}return db[_0xd574('0x37')][_0xd574('0x38')]({'where':{'id':_0xdabdd6[_0xd574('0x47')]}});})[_0xd574('0x12')](function(_0xba391f){if(!_0xba391f){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x29'));}if(!_0xba391f[_0xd574('0xe')]||!_0xba391f[_0xd574('0xf')]){throw new db[(_0xd574('0x21'))][(_0xd574('0x26'))](_0xd574('0x2a'));}_0x3aa4e6=_0xba391f;var _0x331b31=[];_0x392a38[_0xd574('0x4a')](function(_0x33ca39){_0x331b31[_0xd574('0x4b')](checkTranscribeJob(_0x33ca39,_0xdabdd6,_0x3aa4e6));});return BPromise[_0xd574('0x4c')](_0x331b31);})[_0xd574('0x3a')](function(_0x31d554){if(_0x31d554){if(!_0x31d554['name']||_0x31d554[_0xd574('0x3b')]!==_0xd574('0x3c')){logger[_0xd574('0x3d')](util[_0xd574('0x3f')](_0x31d554,{'showHidden':![],'depth':null}));}}});}exports[_0xd574('0x4d')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x131e=['catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','util','bluebird','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','fileText','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','then','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','update','SentimentScore','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Negative','Mixed'];(function(_0x127bdd,_0x364152){var _0x33797f=function(_0x2d9912){while(--_0x2d9912){_0x127bdd['push'](_0x127bdd['shift']());}};_0x33797f(++_0x364152);}(_0x131e,0x1ec));var _0xe131=function(_0x45c6d1,_0x3f9f87){_0x45c6d1=_0x45c6d1-0x0;var _0x24295b=_0x131e[_0x45c6d1];return _0x24295b;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0xe131('0x0'));var BPromise=require(_0xe131('0x1'));var db=require(_0xe131('0x2'))['db'];var logger=require(_0xe131('0x3'))(_0xe131('0x4'));function getTranscriptionJob(_0x761c,_0x4ff7f7,_0x2fc440,_0x344903){return new Promise(function(_0x2de969,_0x1eb0df){var _0x1002a6=new AWS['TranscribeService']({'accessKeyId':_0x4ff7f7,'secretAccessKey':_0x761c,'region':_0x2fc440});_0x1002a6['getTranscriptionJob']({'TranscriptionJobName':_0x344903},function(_0x562617,_0x4bf386){if(_0x562617){return _0x1eb0df(_0x562617);}else{return _0x2de969(_0x4bf386);}});});}function sentiment(_0x241f05,_0x210bb5,_0x530ecb,_0xfdbf4c,_0x4e126a){return new Promise(function(_0x149011,_0x18f749){var _0x5ae4c1=new AWS[(_0xe131('0x5'))]({'accessKeyId':_0x210bb5,'secretAccessKey':_0x241f05,'region':_0x530ecb});_0x5ae4c1[_0xe131('0x6')]({'Text':_0xfdbf4c,'LanguageCode':_0x4e126a[_0xe131('0x7')](0x0,0x2)},function(_0x12f2cf,_0x555b36){if(_0x12f2cf){return _0x18f749(_0x12f2cf);}else{return _0x149011(_0x555b36);}});});}function checkTranscribeJob(_0x55768a,_0x554db6,_0x5f0434){var _0x14ed9a;return new BPromise(function(_0x1714db,_0x33938d){logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0xa'),_0x55768a['id'],_0x55768a[_0xe131('0xb')]));return getTranscriptionJob(_0x5f0434[_0xe131('0xc')],_0x5f0434[_0xe131('0xd')],_0x554db6['transcribeRegion'],_0x55768a['transcribeName'])['then'](function(_0x5a6ca9){logger['info'](util[_0xe131('0x9')](_0xe131('0xe'),_0x55768a['id'],_0x55768a[_0xe131('0xb')],_0x5a6ca9['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x55768a[_0xe131('0xf')]){switch(_0x5a6ca9[_0xe131('0x10')][_0xe131('0x11')]){case _0xe131('0x12'):var _0x317200={'transcribeStatus':_0x5a6ca9[_0xe131('0x10')]['TranscriptionJobStatus'],'fileUri':_0x5a6ca9[_0xe131('0x10')][_0xe131('0x13')][_0xe131('0x14')]};logger[_0xe131('0x8')](util[_0xe131('0x9')]('[RECORDING:%d]\x20Get\x20transcript',_0x55768a['id']));return rp({'uri':_0x5a6ca9['TranscriptionJob'][_0xe131('0x13')][_0xe131('0x14')],'json':!![]})['then'](function(_0x42df0a){logger['info'](util['format'](_0xe131('0x15'),_0x55768a['id']));if(_0x42df0a&&_0x42df0a[_0xe131('0x16')]&&_0x42df0a[_0xe131('0x16')][_0xe131('0x17')]&&_0x42df0a[_0xe131('0x16')][_0xe131('0x17')][_0xe131('0x18')]){_0x317200['fileText']='';for(var _0x2be2df=0x0;_0x2be2df<_0x42df0a[_0xe131('0x16')]['transcripts']['length'];_0x2be2df++){_0x317200[_0xe131('0xf')]+=_0x42df0a['results'][_0xe131('0x17')][_0x2be2df][_0xe131('0x19')]+'';}}return _0x55768a['update'](_0x317200);})[_0xe131('0x1a')](function(){logger[_0xe131('0x8')](util[_0xe131('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x55768a['id']));if(!_0x55768a[_0xe131('0x1b')]){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x1e'));}if(!_0x554db6[_0xe131('0x1f')]||!_0x554db6[_0xe131('0x20')]||!_0x554db6[_0xe131('0x21')]||!_0x554db6[_0xe131('0x22')]||!_0x554db6[_0xe131('0x23')]){throw new db[(_0xe131('0x1c'))]['ValidationError'](_0xe131('0x24'));}if(!_0x317200['fileText']){throw new Error(_0xe131('0x25'));}if(_0x554db6['sentimentAccountId']===_0x5f0434['id']){return _0x5f0434;}else{return db[_0xe131('0x26')]['findOne']({'where':{'id':_settings[_0xe131('0x20')]}});}})[_0xe131('0x1a')](function(_0x306082){if(!_0x306082){throw new db['Sequelize']['ValidationError'](_0xe131('0x27'));}if(!_0x306082[_0xe131('0xc')]||!_0x306082[_0xe131('0xd')]){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x28'));}_0x14ed9a=_0x306082;logger[_0xe131('0x8')](util[_0xe131('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x55768a['id']));return sentiment(_0x14ed9a['data1'],_0x14ed9a[_0xe131('0xd')],_0x554db6[_0xe131('0x21')],_0x317200[_0xe131('0xf')],_0x554db6[_0xe131('0x22')]);})[_0xe131('0x1a')](function(_0x44cc9f){logger[_0xe131('0x8')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x55768a['id']));return _0x55768a[_0xe131('0x29')]({'sentiment':_0x44cc9f['Sentiment'],'sPositive':_0x44cc9f[_0xe131('0x2a')]['Positive'],'sNegative':_0x44cc9f[_0xe131('0x2a')]['Negative'],'sMixed':_0x44cc9f[_0xe131('0x2a')]['Mixed'],'sNeutral':_0x44cc9f[_0xe131('0x2a')][_0xe131('0x2b')]});})[_0xe131('0x1a')](function(){logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x2c'),_0x55768a['id']));_0x1714db();});case'FAILED':return _0x55768a[_0xe131('0x29')]({'transcribeStatus':'FAILED','failureReason':_0x5a6ca9[_0xe131('0x10')]['FailureReason']})[_0xe131('0x1a')](function(){logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x2c'),_0x55768a['id']));_0x1714db();});default:logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x2d'),_0x55768a['id']));break;}}else{return BPromise['resolve']()[_0xe131('0x1a')](function(){if(!_0x55768a['tempSentiment']){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x554db6['sentiment']||!_0x554db6[_0xe131('0x20')]||!_0x554db6['sentimentRegion']||!_0x554db6['language']||!_0x554db6[_0xe131('0x23')]){throw new db['Sequelize'][(_0xe131('0x1d'))](_0xe131('0x24'));}if(!_0x55768a['fileText']){throw new Error(_0xe131('0x25'));}if(_0x554db6[_0xe131('0x20')]===_0x5f0434['id']){return _0x5f0434;}else{return db[_0xe131('0x26')][_0xe131('0x2e')]({'where':{'id':_settings[_0xe131('0x20')]}});}})['then'](function(_0x512409){if(!_0x512409){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x27'));}if(!_0x512409['data1']||!_0x512409[_0xe131('0xd')]){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))]('Cloud\x20Provider\x20not\x20configured');}_0x14ed9a=_0x512409;logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x2f'),_0x55768a['id']));return sentiment(_0x14ed9a['data1'],_0x14ed9a[_0xe131('0xd')],_0x554db6[_0xe131('0x21')],_0x55768a[_0xe131('0xf')],_0x554db6['language']);})[_0xe131('0x1a')](function(_0x3ad7ab){logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x30'),_0x55768a['id']));return _0x55768a[_0xe131('0x29')]({'sentiment':_0x3ad7ab[_0xe131('0x31')],'sPositive':_0x3ad7ab['SentimentScore']['Positive'],'sNegative':_0x3ad7ab[_0xe131('0x2a')][_0xe131('0x32')],'sMixed':_0x3ad7ab[_0xe131('0x2a')][_0xe131('0x33')],'sNeutral':_0x3ad7ab[_0xe131('0x2a')][_0xe131('0x2b')],'transcribeStatus':'COMPLETED'});})[_0xe131('0x1a')](function(){logger[_0xe131('0x8')](util[_0xe131('0x9')](_0xe131('0x2c'),_0x55768a['id']));_0x1714db();});}})[_0xe131('0x34')](function(_0x9cb89){if(_0x9cb89){if(!_0x9cb89['name']||_0x9cb89[_0xe131('0x35')]!==_0xe131('0x36')){logger[_0xe131('0x37')](util[_0xe131('0x9')](_0xe131('0x38'),_0x55768a['id']),util[_0xe131('0x39')](_0x9cb89,{'showHidden':![],'depth':null}));}}_0x1714db();});});}function checkTranscribe(){var _0x2f8dee;var _0x3fd16e;var _0x3d7ae8;return db[_0xe131('0x3a')][_0xe131('0x3b')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xe131('0x1a')](function(_0x5b03ab){if(!_0x5b03ab||!_0x5b03ab['length']){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x3c'));}_0x2f8dee=_0x5b03ab;return db[_0xe131('0x3d')][_0xe131('0x2e')]({'where':{'id':0x1}});})[_0xe131('0x1a')](function(_0xf4dbe4){if(!_0xf4dbe4){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x3e'));}_0x3fd16e=_0xf4dbe4;if(!_0x3fd16e[_0xe131('0x4')]||!_0x3fd16e['transcribeAccountId']||!_0x3fd16e['transcribeRegion']||!_0x3fd16e[_0xe131('0x22')]||!_0x3fd16e[_0xe131('0x23')]){throw new db['Sequelize']['ValidationError'](_0xe131('0x3f'));}return db['CloudProvider']['findOne']({'where':{'id':_0x3fd16e[_0xe131('0x40')]}});})[_0xe131('0x1a')](function(_0x32e45d){if(!_0x32e45d){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))](_0xe131('0x27'));}if(!_0x32e45d['data1']||!_0x32e45d['data2']){throw new db[(_0xe131('0x1c'))][(_0xe131('0x1d'))]('Cloud\x20Provider\x20not\x20configured');}_0x3d7ae8=_0x32e45d;var _0x19692b=[];_0x2f8dee[_0xe131('0x41')](function(_0x1b6b7a){_0x19692b[_0xe131('0x42')](checkTranscribeJob(_0x1b6b7a,_0x3fd16e,_0x3d7ae8));});return BPromise[_0xe131('0x43')](_0x19692b);})[_0xe131('0x34')](function(_0x4a9ad6){if(_0x4a9ad6){if(!_0x4a9ad6[_0xe131('0x35')]||_0x4a9ad6['name']!=='SequelizeValidationError'){logger[_0xe131('0x37')](util[_0xe131('0x39')](_0x4a9ad6,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 0701e81..aa93923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7f8=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','socket.io-emitter','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start'];(function(_0x143d33,_0x5ae149){var _0x2ec94e=function(_0x62625a){while(--_0x62625a){_0x143d33['push'](_0x143d33['shift']());}};_0x2ec94e(++_0x5ae149);}(_0xe7f8,0x1b3));var _0x8e7f=function(_0x47e3b3,_0x734291){_0x47e3b3=_0x47e3b3-0x0;var _0x59ee94=_0xe7f8[_0x47e3b3];return _0x59ee94;};'use strict';var _=require(_0x8e7f('0x0'));var moment=require(_0x8e7f('0x1'));var Redis=require(_0x8e7f('0x2'));var util=require(_0x8e7f('0x3'));var config=require(_0x8e7f('0x4'));var db=require(_0x8e7f('0x5'))['db'];var logger=require(_0x8e7f('0x6'))(_0x8e7f('0x7'));config['redis']=_[_0x8e7f('0x8')](config[_0x8e7f('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x8e7f('0xa'))(new Redis(config[_0x8e7f('0x9')]));function closeInteractions(){var _0x11fb97=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id',_0x8e7f('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x8e7f('0xc'))}}})[_0x8e7f('0xd')](function(_0x4bf143){if(_0x4bf143&&_0x4bf143[_0x8e7f('0xe')]){_0x11fb97=_[_0x8e7f('0xf')](_0x4bf143||[],'id');logger[_0x8e7f('0x10')](_0x8e7f('0x11'),_0x11fb97[_0x8e7f('0x12')]());return db['WhatsappInteraction'][_0x8e7f('0x13')]({'closeReason':_0x8e7f('0x14'),'disposition':_0x8e7f('0x15'),'closed':!![],'closedAt':moment()[_0x8e7f('0x16')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x11fb97}});}})[_0x8e7f('0xd')](function(){if(_0x11fb97&&_0x11fb97[_0x8e7f('0xe')]){logger[_0x8e7f('0x10')](_0x8e7f('0x17'),_0x11fb97[_0x8e7f('0x12')]());for(var _0x32660d=0x0;_0x32660d<_0x11fb97['length'];_0x32660d++){io[_0x8e7f('0x18')]('whatsappInteraction:update',{'id':_0x11fb97[_0x32660d],'closed':!![]});}}})['catch'](function(_0x1c6b7c){logger[_0x8e7f('0x19')](_0x8e7f('0x1a'),_0x1c6b7c?util[_0x8e7f('0x1b')](_0x1c6b7c,{'showHidden':![],'depth':null}):'');});}exports[_0x8e7f('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xd2e8=['[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','format','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','inspect','start','lodash','ioredis','../../config/environment','../../mysqldb','../logger','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','map','info'];(function(_0x142ec2,_0x5bb03d){var _0x45ef4e=function(_0x4bc513){while(--_0x4bc513){_0x142ec2['push'](_0x142ec2['shift']());}};_0x45ef4e(++_0x5bb03d);}(_0xd2e8,0x140));var _0x8d2e=function(_0x58fc2f,_0x111399){_0x58fc2f=_0x58fc2f-0x0;var _0x3a1312=_0xd2e8[_0x58fc2f];return _0x3a1312;};'use strict';var _=require(_0x8d2e('0x0'));var moment=require('moment');var Redis=require(_0x8d2e('0x1'));var util=require('util');var config=require(_0x8d2e('0x2'));var db=require(_0x8d2e('0x3'))['db'];var logger=require(_0x8d2e('0x4'))('schedule');config[_0x8d2e('0x5')]=_['defaults'](config[_0x8d2e('0x5')],{'host':_0x8d2e('0x6'),'port':0x18eb});var io=require(_0x8d2e('0x7'))(new Redis(config[_0x8d2e('0x5')]));function closeInteractions(){var _0xf26e79=[];return db[_0x8d2e('0x8')][_0x8d2e('0x9')]({'raw':!![],'attributes':['id',_0x8d2e('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x8d2e('0xb'))}}})[_0x8d2e('0xc')](function(_0x53053c){if(_0x53053c&&_0x53053c[_0x8d2e('0xd')]){_0xf26e79=_[_0x8d2e('0xe')](_0x53053c||[],'id');logger[_0x8d2e('0xf')](_0x8d2e('0x10'),_0xf26e79[_0x8d2e('0x11')]());return db[_0x8d2e('0x8')][_0x8d2e('0x12')]({'closeReason':_0x8d2e('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x8d2e('0x14')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0xf26e79}});}})[_0x8d2e('0xc')](function(){if(_0xf26e79&&_0xf26e79['length']){logger[_0x8d2e('0xf')](_0x8d2e('0x15'),_0xf26e79[_0x8d2e('0x11')]());for(var _0x323f3e=0x0;_0x323f3e<_0xf26e79[_0x8d2e('0xd')];_0x323f3e++){io[_0x8d2e('0x16')](_0x8d2e('0x17'),{'id':_0xf26e79[_0x323f3e],'closed':!![]});}}})[_0x8d2e('0x18')](function(_0x5eb0ff){logger[_0x8d2e('0x19')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x5eb0ff?util[_0x8d2e('0x1a')](_0x5eb0ff,{'showHidden':![],'depth':null}):'');});}exports[_0x8d2e('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 8c157fe..0a39cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f92=['log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2','util','../mysqldb','push','innocenzo.biondo','@xcally.com','now','Innocenzo','Biondo','CmContact','destroy','then','bulkCreate'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x0f92,0x183));var _0x20f9=function(_0x122c52,_0x163859){_0x122c52=_0x122c52-0x0;var _0x24bc7e=_0x0f92[_0x122c52];return _0x24bc7e;};'use strict';var util=require(_0x20f9('0x0'));var db=require(_0x20f9('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x20f9('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x20f9('0x3')+i+_0x20f9('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x20f9('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x20f9('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x20f9('0x5')](),'updatedAt':Date[_0x20f9('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x20f9('0x6')+i,'lastName':_0x20f9('0x7')+i,'phone':0xf879fb460+i,'email':_0x20f9('0x3')+i+_0x20f9('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x20f9('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x20f9('0x8')][_0x20f9('0x9')]({'where':{}})[_0x20f9('0xa')](function(){return db['CmContact'][_0x20f9('0xb')](contacts);})[_0x20f9('0xa')](function(){console[_0x20f9('0xc')](_0x20f9('0xd'),_0x20f9('0xe'));return db[_0x20f9('0xf')][_0x20f9('0x9')]({'where':{}});})[_0x20f9('0xa')](function(){return db['CmHopper'][_0x20f9('0xb')](hopper);})[_0x20f9('0xa')](function(){console[_0x20f9('0xc')](_0x20f9('0xd'),_0x20f9('0x10'));return db[_0x20f9('0x8')]['bulkCreate'](contacts2);})[_0x20f9('0xa')](function(){console[_0x20f9('0xc')]('finished\x20populating',_0x20f9('0x11'));return db[_0x20f9('0xf')]['bulkCreate'](hopper2);})[_0x20f9('0xa')](function(){console[_0x20f9('0xc')]('finished\x20populating',_0x20f9('0x12'));})['catch'](function(_0x4d71d1){console['log'](_0x4d71d1);});
\ No newline at end of file
+var _0x7cce=['contacts1','CmHopper','then','contacts2','hopper2','catch','util','../mysqldb','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','push','now','CmContact','bulkCreate','log','finished\x20populating'];(function(_0x57431a,_0x3ffaad){var _0x1dc549=function(_0x5c010c){while(--_0x5c010c){_0x57431a['push'](_0x57431a['shift']());}};_0x1dc549(++_0x3ffaad);}(_0x7cce,0xba));var _0xe7cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cce[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xe7cc('0x0'));var db=require(_0xe7cc('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0xe7cc('0x2')+i,'lastName':_0xe7cc('0x3')+i,'phone':0xf879fb460+i,'email':_0xe7cc('0x4')+i+_0xe7cc('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xe7cc('0x6')]({'id':i,'active':![],'scheduledat':Date[_0xe7cc('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xe7cc('0x7')](),'updatedAt':Date[_0xe7cc('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xe7cc('0x6')]({'id':i,'firstName':_0xe7cc('0x2')+i,'lastName':_0xe7cc('0x3')+i,'phone':0xf879fb460+i,'email':_0xe7cc('0x4')+i+_0xe7cc('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xe7cc('0x6')]({'id':i,'active':![],'scheduledat':Date[_0xe7cc('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xe7cc('0x7')](),'updatedAt':Date[_0xe7cc('0x7')]()});}db[_0xe7cc('0x8')]['destroy']({'where':{}})['then'](function(){return db['CmContact'][_0xe7cc('0x9')](contacts);})['then'](function(){console[_0xe7cc('0xa')](_0xe7cc('0xb'),_0xe7cc('0xc'));return db[_0xe7cc('0xd')]['destroy']({'where':{}});})[_0xe7cc('0xe')](function(){return db[_0xe7cc('0xd')][_0xe7cc('0x9')](hopper);})[_0xe7cc('0xe')](function(){console[_0xe7cc('0xa')]('finished\x20populating','hopper1');return db[_0xe7cc('0x8')]['bulkCreate'](contacts2);})[_0xe7cc('0xe')](function(){console[_0xe7cc('0xa')](_0xe7cc('0xb'),_0xe7cc('0xf'));return db['CmHopper'][_0xe7cc('0x9')](hopper2);})[_0xe7cc('0xe')](function(){console['log'](_0xe7cc('0xb'),_0xe7cc('0x10'));})[_0xe7cc('0x11')](function(_0x3cf5f0){console[_0xe7cc('0xa')](_0x3cf5f0);});
\ No newline at end of file
index f362131..7f2d27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75b8=['bulkCreate','then','log','catch','util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','udp','wss','yes','/etc/pki/tls/certs/motion.crt','\x22%s\x22\x20<%s>'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x75b8,0x74));var _0x875b=function(_0x4cc280,_0x3b77f3){_0x4cc280=_0x4cc280-0x0;var _0x16ed24=_0x75b8[_0x4cc280];return _0x16ed24;};'use strict';var util=require(_0x875b('0x0'));var db=require(_0x875b('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x875b('0x2')]({'name':util[_0x875b('0x3')](_0x875b('0x4'),'agent',i),'fullname':util[_0x875b('0x3')](_0x875b('0x4'),_0x875b('0x5'),i),'email':util[_0x875b('0x3')](_0x875b('0x6'),_0x875b('0x5'),i),'role':_0x875b('0x5'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0x875b('0x7'),'ws',_0x875b('0x8')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x875b('0x3')]('%s%s',_0x875b('0x5'),i),'encryption':_0x875b('0x9'),'avpf':_0x875b('0x9'),'force_avp':_0x875b('0x9'),'icesupport':_0x875b('0x9'),'dtlsenable':_0x875b('0x9'),'dtlsverify':'no','dtlscertfile':_0x875b('0xa'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':'actpass','callerid':util[_0x875b('0x3')](_0x875b('0xb'),util['format']('%s%s','agent',i),0xfa0+i)});}db['User'][_0x875b('0xc')](users)[_0x875b('0xd')](function(){console[_0x875b('0xe')]('add\x20user');})[_0x875b('0xf')](function(_0x46611f){console[_0x875b('0xe')](_0x46611f);});
\ No newline at end of file
+var _0x7c5e=['util','../mysqldb','format','%s%s','%s%s@xcally.com','agent','password','friend','udp','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','add\x20user','catch','log'];(function(_0x57cf37,_0x149b89){var _0x2df46f=function(_0x70283c){while(--_0x70283c){_0x57cf37['push'](_0x57cf37['shift']());}};_0x2df46f(++_0x149b89);}(_0x7c5e,0x176));var _0xe7c5=function(_0x1d1657,_0xaa9bcb){_0x1d1657=_0x1d1657-0x0;var _0x1643be=_0x7c5e[_0x1d1657];return _0x1643be;};'use strict';var util=require(_0xe7c5('0x0'));var db=require(_0xe7c5('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xe7c5('0x2')]('%s%s','agent',i),'fullname':util[_0xe7c5('0x2')](_0xe7c5('0x3'),'agent',i),'email':util[_0xe7c5('0x2')](_0xe7c5('0x4'),'agent',i),'role':_0xe7c5('0x5'),'password':_0xe7c5('0x6'),'internal':0xfa0+i,'type':_0xe7c5('0x7'),'transport':[_0xe7c5('0x8'),'ws','wss'],'disallow':[_0xe7c5('0x9')],'allow':[_0xe7c5('0xa')],'defaultuser':util[_0xe7c5('0x2')](_0xe7c5('0x3'),'agent',i),'encryption':_0xe7c5('0xb'),'avpf':_0xe7c5('0xb'),'force_avp':'yes','icesupport':'yes','dtlsenable':_0xe7c5('0xb'),'dtlsverify':'no','dtlscertfile':_0xe7c5('0xc'),'dtlsprivatekey':_0xe7c5('0xd'),'dtlssetup':_0xe7c5('0xe'),'callerid':util[_0xe7c5('0x2')](_0xe7c5('0xf'),util[_0xe7c5('0x2')](_0xe7c5('0x3'),_0xe7c5('0x5'),i),0xfa0+i)});}db[_0xe7c5('0x10')][_0xe7c5('0x11')](users)[_0xe7c5('0x12')](function(){console['log'](_0xe7c5('0x13'));})[_0xe7c5('0x14')](function(_0x107aaa){console[_0xe7c5('0x15')](_0x107aaa);});
\ No newline at end of file
index defaba0..e7e4d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd47f=['SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','include','VoiceQueue','ChatQueue','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','WhatsappQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','length','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','emit','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','ChatQueues','MailQueues','Telephones','Trunks','findAll','IvrCampaigns','UserProfileResource','resourceId','map','Campaign','where','type','format','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions'];(function(_0x4c9f6a,_0xcb2cb2){var _0x5df5b9=function(_0x303cf2){while(--_0x303cf2){_0x4c9f6a['push'](_0x4c9f6a['shift']());}};_0x5df5b9(++_0xcb2cb2);}(_0xd47f,0x1bd));var _0xfd47=function(_0x5bc5fe,_0x2afaef){_0x5bc5fe=_0x5bc5fe-0x0;var _0x298ea7=_0xd47f[_0x5bc5fe];return _0x298ea7;};'use strict';var _=require(_0xfd47('0x0'));var util=require('util');var BPromise=require(_0xfd47('0x1'));var db=require(_0xfd47('0x2'))['db'];var config=require(_0xfd47('0x3'));var queryQueues={'attributes':['id',_0xfd47('0x4')],'include':[{'as':_0xfd47('0x5'),'model':db[_0xfd47('0x6')],'attributes':['id',_0xfd47('0x4'),_0xfd47('0x7')],'raw':!![],'where':{'role':_0xfd47('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xfd47('0x4')],'where':{'role':_0xfd47('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0xfd47('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfd47('0x4'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x4fa356,_0xa2ef6a,_0x1d67e7){return db[_0xfd47('0xa')][_0xfd47('0xb')]({'where':{'name':_0x4fa356,'userProfileId':_0xa2ef6a},'raw':!![]})[_0xfd47('0xc')](function(_0x2cb7c2){if(_0x2cb7c2){if(_0x2cb7c2['autoAssociation']){switch(_0x4fa356){case'VoiceQueues':case _0xfd47('0xd'):case'FaxQueues':case'SmsQueues':case _0xfd47('0xe'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x1d67e7]['findAll'](queryQueues);case _0xfd47('0xf'):return db[_0x1d67e7]['findAll'](queryTelephones);case _0xfd47('0x10'):return db[_0x1d67e7][_0xfd47('0x11')](queryTrunks);case _0xfd47('0x12'):return db[_0x1d67e7]['findAll'](queryCampaigns);}}else{return db[_0xfd47('0x13')][_0xfd47('0x11')]({'attributes':[_0xfd47('0x14')],'where':{'sectionId':_0x2cb7c2['id']},'raw':!![]})[_0xfd47('0xc')](function(_0x584fe1){if(_0x584fe1){var _0x791937={'where':{'id':_[_0xfd47('0x15')](_0x584fe1,_0xfd47('0x14'))},'raw':!![]};switch(_0x1d67e7){case'User':_0x791937['where'][_0xfd47('0x7')]=_0xfd47('0x9');break;case _0xfd47('0x16'):_0x791937[_0xfd47('0x17')][_0xfd47('0x18')]='ivr';break;}return db[_0x1d67e7][_0xfd47('0x11')](_0x791937);}else{return[];}});}}else{return[];}})[_0xfd47('0xc')](function(_0x16aea0){return _0x16aea0;});}function joinOrLeaveQueues(_0x231106,_0x21cdb0,_0x3e2d03,_0x5d3c0f){_0x231106[_0x21cdb0](util[_0xfd47('0x19')]('%s:queue:%s',_0x3e2d03,_0x5d3c0f[_0xfd47('0x4')]));if(_0x5d3c0f[_0xfd47('0x5')]){for(var _0x4153f6=0x0;_0x4153f6<_0x5d3c0f[_0xfd47('0x5')]['length'];_0x4153f6+=0x1){_0x231106[_0x21cdb0](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x5d3c0f[_0xfd47('0x5')][_0x4153f6][_0xfd47('0x4')]));}}}function joinOrLeave(_0x4bbeb9,_0x511dbd,_0x285f2a){var _0xc06999;if(_0x4bbeb9[_0xfd47('0x1b')][_0xfd47('0x1c')]['id']){db[_0xfd47('0x6')]['find']({'attributes':['id',_0xfd47('0x4'),'role',_0xfd47('0x1d')],'where':{'id':_0x4bbeb9[_0xfd47('0x1b')][_0xfd47('0x1c')]['id']},'include':[{'model':db[_0xfd47('0x1e')],'as':_0xfd47('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x20')],'as':_0xfd47('0x21'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xfd47('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x23')],'as':_0xfd47('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x25')],'as':_0xfd47('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd47('0x27')],'as':_0xfd47('0x28'),'attributes':['id'],'raw':!![]}]})[_0xfd47('0xc')](function(_0x3dfd47){if(_0x3dfd47){_0xc06999=_0x3dfd47;_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x3dfd47[_0xfd47('0x4')]));var _0x4972bf=[];switch(_0x3dfd47[_0xfd47('0x7')]){case _0xfd47('0x29'):_0x4bbeb9[_0x511dbd](_0xfd47('0x2a'));_0x4bbeb9[_0x511dbd]('voice:outbound');if(queryQueues[_0xfd47('0x2b')]('include')){delete queryQueues[_0xfd47('0x2c')];}_0x4972bf['push'](db[_0xfd47('0x2d')][_0xfd47('0x11')](queryQueues));_0x4972bf['push'](db[_0xfd47('0x2e')][_0xfd47('0x11')](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x30')][_0xfd47('0x11')](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x31')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x32')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x33')][_0xfd47('0x11')](queryQueues));_0x4972bf['push'](db[_0xfd47('0x34')]['findAll'](queryQueues));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x6')]['findAll'](queryTelephones));_0x4972bf[_0xfd47('0x2f')](db[_0xfd47('0x35')][_0xfd47('0x11')](queryTrunks));_0x4972bf['push'](db[_0xfd47('0x16')][_0xfd47('0x11')](queryCampaigns));_0x4972bf[_0xfd47('0x2f')](db['User'][_0xfd47('0x11')](queryAgents));break;case _0xfd47('0x36'):_0x4bbeb9[_0x511dbd]('voice:inbound');_0x4bbeb9[_0x511dbd](_0xfd47('0x37'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('VoiceQueues',_0x3dfd47['userProfileId'],_0xfd47('0x2d')));_0x4972bf['push'](getAssociatedResources(_0xfd47('0xd'),_0x3dfd47['userProfileId'],_0xfd47('0x2e')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('FaxQueues',_0x3dfd47[_0xfd47('0x1d')],'FaxQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources('SmsQueues',_0x3dfd47[_0xfd47('0x1d')],'SmsQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0xe'),_0x3dfd47[_0xfd47('0x1d')],'MailQueue'));_0x4972bf['push'](getAssociatedResources('OpenchannelQueues',_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x33')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x38'),_0x3dfd47[_0xfd47('0x1d')],'WhatsappQueue'));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0xf'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x6')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x10'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x35')));_0x4972bf[_0xfd47('0x2f')](getAssociatedResources(_0xfd47('0x12'),_0x3dfd47[_0xfd47('0x1d')],_0xfd47('0x16')));_0x4972bf['push'](db[_0xfd47('0x6')][_0xfd47('0x11')](queryAgents));break;case _0xfd47('0x8'):_0x4bbeb9[_0x511dbd](_0xfd47('0x2a'));_0x4bbeb9[_0x511dbd](_0xfd47('0x37'));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getVoiceQueues']({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x39')]({'attributes':['id','name']}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3a')]({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3b')]({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getMailQueues']({'attributes':['id',_0xfd47('0x4')]}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47[_0xfd47('0x3c')]({'attributes':['id','name']}));_0x4972bf[_0xfd47('0x2f')](_0x3dfd47['getWhatsappQueues']({'attributes':['id',_0xfd47('0x4')]}));break;}return BPromise[_0xfd47('0x3d')](_0x4972bf);}})['then'](function(_0x2db46b){if(_0x2db46b&&_0x2db46b[_0xfd47('0x3e')]){for(var _0x19af79=0x0;_0x19af79<_0x2db46b[_0xfd47('0x3e')];_0x19af79+=0x1){for(var _0x517908=0x0;_0x517908<_0x2db46b[_0x19af79][_0xfd47('0x3e')];_0x517908+=0x1){switch(_0x19af79){case 0x0:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'voice',_0x2db46b[_0x19af79][_0x517908]);break;case 0x1:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'chat',_0x2db46b[_0x19af79][_0x517908]);break;case 0x2:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x3f'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x3:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x40'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x4:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,'mail',_0x2db46b[_0x19af79][_0x517908]);break;case 0x5:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x41'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x6:joinOrLeaveQueues(_0x4bbeb9,_0x511dbd,_0xfd47('0x42'),_0x2db46b[_0x19af79][_0x517908]);break;case 0x7:if(_0xc06999['role']!==_0xfd47('0x8'))_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x43'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0x8:if(_0xc06999[_0xfd47('0x7')]!=='agent')_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x44'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0x9:if(_0xc06999['role']!=='agent')_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x45'),_0x2db46b[_0x19af79][_0x517908]['type'],_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;case 0xa:_0x4bbeb9[_0x511dbd](util[_0xfd47('0x19')](_0xfd47('0x1a'),_0x2db46b[_0x19af79][_0x517908][_0xfd47('0x4')]));break;}}}}})['then'](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x2c4a6e=_[_0xfd47('0x15')](_0xc06999['ChatInteractions'],'id');return _0xc06999[_0xfd47('0x47')](_0x2c4a6e)[_0xfd47('0xc')](function(){for(var _0x596b99=0x0;_0x596b99<_0x2c4a6e[_0xfd47('0x3e')];_0x596b99+=0x1){_0x285f2a['emit'](_0xfd47('0x48'),{'ChatInteractionId':Number(_0x2c4a6e[_0x596b99]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x4c0272=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x21')],'id');return _0xc06999[_0xfd47('0x49')](_0x4c0272)[_0xfd47('0xc')](function(){for(var _0x3ed00e=0x0;_0x3ed00e<_0x4c0272[_0xfd47('0x3e')];_0x3ed00e+=0x1){_0x285f2a['emit'](_0xfd47('0x4a'),{'MailInteractionId':Number(_0x4c0272[_0x3ed00e]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x49e995=_['map'](_0xc06999[_0xfd47('0x22')],'id');return _0xc06999[_0xfd47('0x4b')](_0x49e995)[_0xfd47('0xc')](function(){for(var _0x158b78=0x0;_0x158b78<_0x49e995[_0xfd47('0x3e')];_0x158b78+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x4d'),{'FaxInteractionId':Number(_0x49e995[_0x158b78]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x212d17=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x24')],'id');return _0xc06999['removeSmsInteractions'](_0x212d17)[_0xfd47('0xc')](function(){for(var _0x29a10c=0x0;_0x29a10c<_0x212d17[_0xfd47('0x3e')];_0x29a10c+=0x1){_0x285f2a['emit'](_0xfd47('0x4e'),{'SmsInteractionId':Number(_0x212d17[_0x29a10c]),'UserId':Number(_0xc06999['id'])});}});}})['then'](function(){if(_0x511dbd==='leave'){var _0x174593=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x26')],'id');return _0xc06999['removeOpenchannelInteractions'](_0x174593)[_0xfd47('0xc')](function(){for(var _0x4c3cca=0x0;_0x4c3cca<_0x174593[_0xfd47('0x3e')];_0x4c3cca+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x4f'),{'OpenchannelInteractionId':Number(_0x174593[_0x4c3cca]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0xc')](function(){if(_0x511dbd===_0xfd47('0x46')){var _0x2c7615=_[_0xfd47('0x15')](_0xc06999[_0xfd47('0x28')],'id');return _0xc06999[_0xfd47('0x50')](_0x2c7615)['then'](function(){for(var _0x365d1f=0x0;_0x365d1f<_0x2c7615['length'];_0x365d1f+=0x1){_0x285f2a[_0xfd47('0x4c')](_0xfd47('0x51'),{'WhatsappInteractionId':Number(_0x2c7615[_0x365d1f]),'UserId':Number(_0xc06999['id'])});}});}})[_0xfd47('0x52')](function(_0x55de49){_0x4bbeb9[_0xfd47('0x53')](_0x55de49);});}}function onDisconnect(_0x3721f3,_0x241bcf){joinOrLeave(_0x3721f3,_0xfd47('0x46'),_0x241bcf);}function onConnect(_0x549b79){joinOrLeave(_0x549b79,_0xfd47('0x54'));}exports[_0xfd47('0x55')]=function(_0x256b9c){_0x256b9c['on'](_0xfd47('0x56'),function(_0x41f4a8){_0x41f4a8[_0xfd47('0x57')](0x0);_0x41f4a8[_0xfd47('0x58')]=_0x41f4a8[_0xfd47('0x59')][_0xfd47('0x56')]['remoteAddress']+':'+_0x41f4a8[_0xfd47('0x59')][_0xfd47('0x56')][_0xfd47('0x5a')];_0x41f4a8[_0xfd47('0x5b')]=new Date();_0x41f4a8['log']=function(_0x4f6af0){console[_0xfd47('0x53')]('SocketIO\x20'+_0x41f4a8[_0xfd47('0x5c')][_0xfd47('0x4')]+'['+_0x41f4a8[_0xfd47('0x58')]+']',_0x4f6af0);};_0x41f4a8['on'](_0xfd47('0x5d'),function(){onDisconnect(_0x41f4a8,_0x256b9c);_0x41f4a8[_0xfd47('0x53')](_0xfd47('0x5e'));});onConnect(_0x41f4a8);_0x41f4a8[_0xfd47('0x53')](_0xfd47('0x5f'));});};
\ No newline at end of file
+var _0xac8e=['util','bluebird','../mysqldb','./environment','name','User','role','telephone','type','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','format','user:%s','Agents','handshake','find','userProfileId','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','then','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','MailQueue','Telephones','agent','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash'];(function(_0x15cbb5,_0x241919){var _0x2620aa=function(_0x2d93d5){while(--_0x2d93d5){_0x15cbb5['push'](_0x15cbb5['shift']());}};_0x2620aa(++_0x241919);}(_0xac8e,0x19f));var _0xeac8=function(_0x195bc1,_0x1bdf8c){_0x195bc1=_0x195bc1-0x0;var _0x546960=_0xac8e[_0x195bc1];return _0x546960;};'use strict';var _=require(_0xeac8('0x0'));var util=require(_0xeac8('0x1'));var BPromise=require(_0xeac8('0x2'));var db=require(_0xeac8('0x3'))['db'];var config=require(_0xeac8('0x4'));var queryQueues={'attributes':['id',_0xeac8('0x5')],'include':[{'as':'Agents','model':db[_0xeac8('0x6')],'attributes':['id','name',_0xeac8('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xeac8('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xeac8('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xeac8('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xeac8('0x5'),_0xeac8('0x9')],'where':{'type':_0xeac8('0xa')}};function getAssociatedResources(_0x37823a,_0x474256,_0x4c8b55){return db[_0xeac8('0xb')][_0xeac8('0xc')]({'where':{'name':_0x37823a,'userProfileId':_0x474256},'raw':!![]})['then'](function(_0x208e8b){if(_0x208e8b){if(_0x208e8b[_0xeac8('0xd')]){switch(_0x37823a){case _0xeac8('0xe'):case _0xeac8('0xf'):case _0xeac8('0x10'):case _0xeac8('0x11'):case _0xeac8('0x12'):case _0xeac8('0x13'):case _0xeac8('0x14'):return db[_0x4c8b55][_0xeac8('0x15')](queryQueues);case'Telephones':return db[_0x4c8b55][_0xeac8('0x15')](queryTelephones);case _0xeac8('0x16'):return db[_0x4c8b55][_0xeac8('0x15')](queryTrunks);case _0xeac8('0x17'):return db[_0x4c8b55][_0xeac8('0x15')](queryCampaigns);}}else{return db[_0xeac8('0x18')][_0xeac8('0x15')]({'attributes':[_0xeac8('0x19')],'where':{'sectionId':_0x208e8b['id']},'raw':!![]})['then'](function(_0x29af47){if(_0x29af47){var _0x58db08={'where':{'id':_[_0xeac8('0x1a')](_0x29af47,_0xeac8('0x19'))},'raw':!![]};switch(_0x4c8b55){case _0xeac8('0x6'):_0x58db08['where'][_0xeac8('0x7')]=_0xeac8('0x8');break;case'Campaign':_0x58db08['where']['type']=_0xeac8('0xa');break;}return db[_0x4c8b55][_0xeac8('0x15')](_0x58db08);}else{return[];}});}}else{return[];}})['then'](function(_0x3355a4){return _0x3355a4;});}function joinOrLeaveQueues(_0x5d8020,_0x1f5e65,_0x2c73a6,_0x4acf0a){_0x5d8020[_0x1f5e65](util['format']('%s:queue:%s',_0x2c73a6,_0x4acf0a[_0xeac8('0x5')]));if(_0x4acf0a['Agents']){for(var _0x2cd0a8=0x0;_0x2cd0a8<_0x4acf0a['Agents']['length'];_0x2cd0a8+=0x1){_0x5d8020[_0x1f5e65](util[_0xeac8('0x1b')](_0xeac8('0x1c'),_0x4acf0a[_0xeac8('0x1d')][_0x2cd0a8]['name']));}}}function joinOrLeave(_0x496fe8,_0x1f720f,_0x29bde5){var _0x4591e4;if(_0x496fe8[_0xeac8('0x1e')]['query']['id']){db[_0xeac8('0x6')][_0xeac8('0x1f')]({'attributes':['id',_0xeac8('0x5'),_0xeac8('0x7'),_0xeac8('0x20')],'where':{'id':_0x496fe8[_0xeac8('0x1e')][_0xeac8('0x21')]['id']},'include':[{'model':db[_0xeac8('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xeac8('0x23')],'as':_0xeac8('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xeac8('0x25')],'as':_0xeac8('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xeac8('0x27')],'as':_0xeac8('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xeac8('0x29')],'as':_0xeac8('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xeac8('0x2b')],'as':_0xeac8('0x2c'),'attributes':['id'],'raw':!![]}]})[_0xeac8('0x2d')](function(_0xf226ee){if(_0xf226ee){_0x4591e4=_0xf226ee;_0x496fe8[_0x1f720f](util['format'](_0xeac8('0x1c'),_0xf226ee['name']));var _0x294169=[];switch(_0xf226ee['role']){case _0xeac8('0x2e'):_0x496fe8[_0x1f720f](_0xeac8('0x2f'));_0x496fe8[_0x1f720f](_0xeac8('0x30'));if(queryQueues['hasOwnProperty'](_0xeac8('0x31'))){delete queryQueues[_0xeac8('0x31')];}_0x294169[_0xeac8('0x32')](db[_0xeac8('0x33')][_0xeac8('0x15')](queryQueues));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x34')][_0xeac8('0x15')](queryQueues));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x35')][_0xeac8('0x15')](queryQueues));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x36')][_0xeac8('0x15')](queryQueues));_0x294169['push'](db['MailQueue']['findAll'](queryQueues));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x37')][_0xeac8('0x15')](queryQueues));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x38')]['findAll'](queryQueues));_0x294169['push'](db['User'][_0xeac8('0x15')](queryTelephones));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x39')][_0xeac8('0x15')](queryTrunks));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x3a')][_0xeac8('0x15')](queryCampaigns));_0x294169[_0xeac8('0x32')](db['User'][_0xeac8('0x15')](queryAgents));break;case'user':_0x496fe8[_0x1f720f]('voice:inbound');_0x496fe8[_0x1f720f](_0xeac8('0x30'));_0x294169['push'](getAssociatedResources('VoiceQueues',_0xf226ee['userProfileId'],_0xeac8('0x33')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0xf'),_0xf226ee['userProfileId'],_0xeac8('0x34')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x10'),_0xf226ee['userProfileId'],_0xeac8('0x35')));_0x294169['push'](getAssociatedResources('SmsQueues',_0xf226ee[_0xeac8('0x20')],_0xeac8('0x36')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x12'),_0xf226ee[_0xeac8('0x20')],_0xeac8('0x3b')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x13'),_0xf226ee[_0xeac8('0x20')],_0xeac8('0x37')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x14'),_0xf226ee[_0xeac8('0x20')],_0xeac8('0x38')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x3c'),_0xf226ee[_0xeac8('0x20')],_0xeac8('0x6')));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x16'),_0xf226ee[_0xeac8('0x20')],'Trunk'));_0x294169[_0xeac8('0x32')](getAssociatedResources(_0xeac8('0x17'),_0xf226ee[_0xeac8('0x20')],'Campaign'));_0x294169[_0xeac8('0x32')](db[_0xeac8('0x6')][_0xeac8('0x15')](queryAgents));break;case _0xeac8('0x3d'):_0x496fe8[_0x1f720f]('voice:inbound');_0x496fe8[_0x1f720f](_0xeac8('0x30'));_0x294169[_0xeac8('0x32')](_0xf226ee['getVoiceQueues']({'attributes':['id','name']}));_0x294169[_0xeac8('0x32')](_0xf226ee['getChatQueues']({'attributes':['id',_0xeac8('0x5')]}));_0x294169[_0xeac8('0x32')](_0xf226ee[_0xeac8('0x3e')]({'attributes':['id','name']}));_0x294169[_0xeac8('0x32')](_0xf226ee[_0xeac8('0x3f')]({'attributes':['id',_0xeac8('0x5')]}));_0x294169[_0xeac8('0x32')](_0xf226ee[_0xeac8('0x40')]({'attributes':['id','name']}));_0x294169[_0xeac8('0x32')](_0xf226ee[_0xeac8('0x41')]({'attributes':['id',_0xeac8('0x5')]}));_0x294169['push'](_0xf226ee[_0xeac8('0x42')]({'attributes':['id',_0xeac8('0x5')]}));break;}return BPromise[_0xeac8('0x43')](_0x294169);}})[_0xeac8('0x2d')](function(_0x5ae79c){if(_0x5ae79c&&_0x5ae79c[_0xeac8('0x44')]){for(var _0x95881e=0x0;_0x95881e<_0x5ae79c[_0xeac8('0x44')];_0x95881e+=0x1){for(var _0x578de5=0x0;_0x578de5<_0x5ae79c[_0x95881e][_0xeac8('0x44')];_0x578de5+=0x1){switch(_0x95881e){case 0x0:joinOrLeaveQueues(_0x496fe8,_0x1f720f,'voice',_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x1:joinOrLeaveQueues(_0x496fe8,_0x1f720f,_0xeac8('0x45'),_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x2:joinOrLeaveQueues(_0x496fe8,_0x1f720f,'fax',_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x3:joinOrLeaveQueues(_0x496fe8,_0x1f720f,_0xeac8('0x46'),_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x4:joinOrLeaveQueues(_0x496fe8,_0x1f720f,_0xeac8('0x47'),_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x5:joinOrLeaveQueues(_0x496fe8,_0x1f720f,_0xeac8('0x48'),_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x6:joinOrLeaveQueues(_0x496fe8,_0x1f720f,_0xeac8('0x49'),_0x5ae79c[_0x95881e][_0x578de5]);break;case 0x7:if(_0x4591e4['role']!==_0xeac8('0x3d'))_0x496fe8[_0x1f720f](util[_0xeac8('0x1b')](_0xeac8('0x4a'),_0x5ae79c[_0x95881e][_0x578de5][_0xeac8('0x5')]));break;case 0x8:if(_0x4591e4[_0xeac8('0x7')]!==_0xeac8('0x3d'))_0x496fe8[_0x1f720f](util[_0xeac8('0x1b')](_0xeac8('0x4b'),_0x5ae79c[_0x95881e][_0x578de5][_0xeac8('0x5')]));break;case 0x9:if(_0x4591e4['role']!=='agent')_0x496fe8[_0x1f720f](util[_0xeac8('0x1b')](_0xeac8('0x4c'),_0x5ae79c[_0x95881e][_0x578de5]['type'],_0x5ae79c[_0x95881e][_0x578de5][_0xeac8('0x5')]));break;case 0xa:_0x496fe8[_0x1f720f](util['format']('user:%s',_0x5ae79c[_0x95881e][_0x578de5]['name']));break;}}}}})[_0xeac8('0x2d')](function(){if(_0x1f720f===_0xeac8('0x4d')){var _0x20b764=_[_0xeac8('0x1a')](_0x4591e4[_0xeac8('0x4e')],'id');return _0x4591e4[_0xeac8('0x4f')](_0x20b764)['then'](function(){for(var _0x1c2912=0x0;_0x1c2912<_0x20b764[_0xeac8('0x44')];_0x1c2912+=0x1){_0x29bde5[_0xeac8('0x50')](_0xeac8('0x51'),{'ChatInteractionId':Number(_0x20b764[_0x1c2912]),'UserId':Number(_0x4591e4['id'])});}});}})[_0xeac8('0x2d')](function(){if(_0x1f720f===_0xeac8('0x4d')){var _0x29b27c=_[_0xeac8('0x1a')](_0x4591e4['MailInteractions'],'id');return _0x4591e4[_0xeac8('0x52')](_0x29b27c)[_0xeac8('0x2d')](function(){for(var _0x2ab2cc=0x0;_0x2ab2cc<_0x29b27c[_0xeac8('0x44')];_0x2ab2cc+=0x1){_0x29bde5[_0xeac8('0x50')](_0xeac8('0x53'),{'MailInteractionId':Number(_0x29b27c[_0x2ab2cc]),'UserId':Number(_0x4591e4['id'])});}});}})['then'](function(){if(_0x1f720f===_0xeac8('0x4d')){var _0x21692e=_[_0xeac8('0x1a')](_0x4591e4[_0xeac8('0x26')],'id');return _0x4591e4[_0xeac8('0x54')](_0x21692e)[_0xeac8('0x2d')](function(){for(var _0x16bde6=0x0;_0x16bde6<_0x21692e['length'];_0x16bde6+=0x1){_0x29bde5[_0xeac8('0x50')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x21692e[_0x16bde6]),'UserId':Number(_0x4591e4['id'])});}});}})[_0xeac8('0x2d')](function(){if(_0x1f720f===_0xeac8('0x4d')){var _0x4a8fd7=_[_0xeac8('0x1a')](_0x4591e4[_0xeac8('0x28')],'id');return _0x4591e4[_0xeac8('0x55')](_0x4a8fd7)[_0xeac8('0x2d')](function(){for(var _0xded333=0x0;_0xded333<_0x4a8fd7[_0xeac8('0x44')];_0xded333+=0x1){_0x29bde5[_0xeac8('0x50')](_0xeac8('0x56'),{'SmsInteractionId':Number(_0x4a8fd7[_0xded333]),'UserId':Number(_0x4591e4['id'])});}});}})[_0xeac8('0x2d')](function(){if(_0x1f720f===_0xeac8('0x4d')){var _0x4ad5c8=_[_0xeac8('0x1a')](_0x4591e4[_0xeac8('0x2a')],'id');return _0x4591e4[_0xeac8('0x57')](_0x4ad5c8)['then'](function(){for(var _0xb4aff8=0x0;_0xb4aff8<_0x4ad5c8[_0xeac8('0x44')];_0xb4aff8+=0x1){_0x29bde5[_0xeac8('0x50')](_0xeac8('0x58'),{'OpenchannelInteractionId':Number(_0x4ad5c8[_0xb4aff8]),'UserId':Number(_0x4591e4['id'])});}});}})[_0xeac8('0x2d')](function(){if(_0x1f720f==='leave'){var _0x2a67a8=_['map'](_0x4591e4[_0xeac8('0x2c')],'id');return _0x4591e4['removeWhatsappInteractions'](_0x2a67a8)[_0xeac8('0x2d')](function(){for(var _0x3a778c=0x0;_0x3a778c<_0x2a67a8[_0xeac8('0x44')];_0x3a778c+=0x1){_0x29bde5[_0xeac8('0x50')](_0xeac8('0x59'),{'WhatsappInteractionId':Number(_0x2a67a8[_0x3a778c]),'UserId':Number(_0x4591e4['id'])});}});}})[_0xeac8('0x5a')](function(_0x21cb1d){_0x496fe8[_0xeac8('0x5b')](_0x21cb1d);});}}function onDisconnect(_0x2dcf69,_0x417281){joinOrLeave(_0x2dcf69,_0xeac8('0x4d'),_0x417281);}function onConnect(_0xb28a50){joinOrLeave(_0xb28a50,_0xeac8('0x5c'));}exports['default']=function(_0x117f02){_0x117f02['on'](_0xeac8('0x5d'),function(_0x1cfe0d){_0x1cfe0d[_0xeac8('0x5e')](0x0);_0x1cfe0d[_0xeac8('0x5f')]=_0x1cfe0d[_0xeac8('0x60')][_0xeac8('0x5d')][_0xeac8('0x61')]+':'+_0x1cfe0d[_0xeac8('0x60')][_0xeac8('0x5d')][_0xeac8('0x62')];_0x1cfe0d[_0xeac8('0x63')]=new Date();_0x1cfe0d[_0xeac8('0x5b')]=function(_0x23bd30){console['log'](_0xeac8('0x64')+_0x1cfe0d[_0xeac8('0x65')][_0xeac8('0x5')]+'['+_0x1cfe0d[_0xeac8('0x5f')]+']',_0x23bd30);};_0x1cfe0d['on']('disconnect',function(){onDisconnect(_0x1cfe0d,_0x117f02);_0x1cfe0d[_0xeac8('0x5b')](_0xeac8('0x66'));});onConnect(_0x1cfe0d);_0x1cfe0d[_0xeac8('0x5b')](_0xeac8('0x67'));});};
\ No newline at end of file
index 21afd05..b8906eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x987d=['name','changed','closed','substatus','AfterUpdate','email','internal','length','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','Chat','afterCreate','newinteraction','ChatInteraction','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','afterUpdate','SmsMessage','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','code','channel','event','direction','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','interface','SIP/%s','agent','incomingmessage','catch','AfterCreateMessage','get','motionChannel','offlineMessage','opened','resolve','format'];(function(_0x31acc7,_0x168431){var _0x10d549=function(_0x4b5412){while(--_0x4b5412){_0x31acc7['push'](_0x31acc7['shift']());}};_0x10d549(++_0x168431);}(_0x987d,0xeb));var _0xd987=function(_0x1426f5,_0x350cca){_0x1426f5=_0x1426f5-0x0;var _0x180973=_0x987d[_0x1426f5];return _0x180973;};'use strict';var util=require(_0xd987('0x0'));var db=require(_0xd987('0x1'))['db'];var jayson=require(_0xd987('0x2'));var logger=require(_0xd987('0x3'))(_0xd987('0x4'));var client=jayson[_0xd987('0x5')][_0xd987('0x6')]({'port':0x232a});var triggers=[{'channel':_0xd987('0x7'),'model':'ChatInteraction','event':_0xd987('0x8'),'condition':_0xd987('0x9'),'callback':afterCreate},{'channel':_0xd987('0x7'),'model':_0xd987('0xa'),'event':'afterUpdate','condition':_0xd987('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0xd987('0xc'),'event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage},{'channel':_0xd987('0x7'),'model':_0xd987('0xe'),'event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateOfflineMessage},{'channel':_0xd987('0xf'),'model':_0xd987('0x10'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':'Sms','model':_0xd987('0x10'),'event':_0xd987('0x11'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xd987('0xf'),'model':_0xd987('0x12'),'event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage},{'channel':_0xd987('0x13'),'model':_0xd987('0x14'),'event':_0xd987('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xd987('0x13'),'model':'WhatsappInteraction','event':'afterUpdate','condition':_0xd987('0xb'),'callback':afterUpdate},{'channel':_0xd987('0x13'),'model':'WhatsappMessage','event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage},{'channel':_0xd987('0x15'),'model':_0xd987('0x16'),'event':_0xd987('0x8'),'condition':_0xd987('0x9'),'callback':afterCreate},{'channel':_0xd987('0x15'),'model':'FaxInteraction','event':_0xd987('0x11'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xd987('0x15'),'model':_0xd987('0x17'),'event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage},{'channel':_0xd987('0x18'),'model':_0xd987('0x19'),'event':_0xd987('0x8'),'condition':_0xd987('0x9'),'callback':afterCreate},{'channel':_0xd987('0x18'),'model':_0xd987('0x19'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xd987('0x18'),'model':_0xd987('0x1a'),'event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage},{'channel':_0xd987('0x1b'),'model':_0xd987('0x1c'),'event':_0xd987('0x8'),'condition':_0xd987('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0xd987('0x1c'),'event':_0xd987('0x11'),'condition':_0xd987('0xb'),'callback':afterUpdate},{'channel':_0xd987('0x1b'),'model':'OpenchannelMessage','event':_0xd987('0x8'),'condition':_0xd987('0xd'),'callback':afterCreateMessage}];function request(_0x4bf4b4){return client[_0xd987('0x1d')](_0xd987('0x1e'),_0x4bf4b4)[_0xd987('0x1f')](function(_0x714c70){logger[_0xd987('0x20')](_0xd987('0x21'),_0xd987('0x1e'),_0x714c70);if(_0x714c70[_0xd987('0x22')]){if(_0x714c70[_0xd987('0x22')][_0xd987('0x23')]===0x1f4){logger[_0xd987('0x22')]('Trigger,\x20%s',_0xd987('0x1e'),_0x714c70['error']);}}})['catch'](function(_0x13e2e2){logger[_0xd987('0x22')](_0xd987('0x21'),_0xd987('0x1e'),_0x13e2e2);});}function afterCreateMessage(_0xbe9431){return function(_0x4cd207){_0x4cd207=_0x4cd207['get']({'plain':!![]});_0x4cd207[_0xd987('0x24')]=_0xbe9431;_0x4cd207['motionChannel']=_0xbe9431;_0x4cd207[_0xd987('0x25')]=_0x4cd207[_0xd987('0x26')];Promise['resolve']()[_0xd987('0x1f')](function(){if(typeof _0x4cd207[_0xd987('0x27')]===_0xd987('0x28'))return null;var _0x519030=_0xd987('0x29')+_0x4cd207[_0xd987('0x27')];return db[_0xd987('0x2a')][_0xd987('0x2b')](_0x519030,{'type':db[_0xd987('0x2c')][_0xd987('0x2d')][_0xd987('0x2e')],'raw':!![]});})[_0xd987('0x1f')](function(_0xb781c3){if(_0xb781c3){_0x4cd207[_0xd987('0x2f')]=_0xb781c3[0x0];}if(typeof _0x4cd207['UserId']===_0xd987('0x28'))return;return getAgent(_0x4cd207[_0xd987('0x30')]);})['then'](function(_0x4953bc){if(_0x4953bc){_0x4cd207[_0xd987('0x31')]=util['format'](_0xd987('0x32'),_0x4953bc['name']);_0x4cd207[_0xd987('0x33')]=_0x4953bc;_0x4cd207[_0xd987('0x24')]=_0xbe9431;return request({'event':_0xd987('0x34'),'message':_0x4cd207});}else{return request({'event':'outgoingmessage','message':_0x4cd207});}})[_0xd987('0x35')](function(_0x22407f){logger[_0xd987('0x22')]('Trigger,\x20%s',_0xd987('0x36'),_0x22407f);});};}function afterCreateOfflineMessage(_0x2cfcd4){return function(_0x35e58d){_0x35e58d=_0x35e58d[_0xd987('0x37')]({'plain':!![]});_0x35e58d['channel']=_0x2cfcd4;_0x35e58d[_0xd987('0x38')]=_0x2cfcd4;_0x35e58d[_0xd987('0x25')]=_0xd987('0x39');return request({'event':_0x35e58d['event'],'message':_0x35e58d});};}function afterCreate(_0x52f1d3,_0x3a70d7){return function(_0x48728a){_0x48728a=_0x48728a[_0xd987('0x37')]({'plain':!![]});_0x48728a[_0xd987('0x24')]=_0x52f1d3;_0x48728a['motionChannel']=_0x52f1d3;_0x48728a['event']=_0xd987('0x3a');Promise[_0xd987('0x3b')]()[_0xd987('0x1f')](function(){var _0xf051af=_0xd987('0x29')+_0x48728a[_0xd987('0x27')];return db[_0xd987('0x2a')][_0xd987('0x2b')](_0xf051af,{'type':db['Sequelize'][_0xd987('0x2d')][_0xd987('0x2e')],'raw':!![]});})[_0xd987('0x1f')](function(_0x288374){if(_0x288374){_0x48728a[_0xd987('0x2f')]=_0x288374[0x0];}if(typeof _0x48728a[_0xd987('0x30')]===_0xd987('0x28'))return;return getAgent(_0x48728a[_0xd987('0x30')]);})['then'](function(_0x4663a7){if(_0x4663a7){_0x48728a[_0xd987('0x31')]=util[_0xd987('0x3c')](_0xd987('0x32'),_0x4663a7[_0xd987('0x3d')]);_0x48728a[_0xd987('0x33')]=_0x4663a7;}return request({'event':_0x3a70d7,'message':_0x48728a});})[_0xd987('0x35')](function(_0x981c10){logger[_0xd987('0x22')](_0xd987('0x21'),'AfterCreate',_0x981c10);});};}function afterUpdate(_0x33650a){return function(_0x448727){var _0x5ca7f6=_0x448727[_0xd987('0x3e')]('closed')&&_0x448727[_0xd987('0x3f')];var _0x5bab42=_0x448727[_0xd987('0x3e')](_0xd987('0x40'));if(_0x5ca7f6||_0x5bab42){var _0xa53096=_0x5ca7f6?'closedinteraction':'substatus';var _0x1aaaa7=_0x448727[_0xd987('0x37')]({'plain':!![]});_0x1aaaa7['channel']=_0x33650a;_0x1aaaa7[_0xd987('0x38')]=_0x33650a;_0x1aaaa7[_0xd987('0x25')]=_0x5ca7f6?_0xd987('0x3f'):_0xd987('0x40');var _0x245fd3=_0xd987('0x29')+_0x1aaaa7[_0xd987('0x27')];return db[_0xd987('0x2a')]['query'](_0x245fd3,{'type':db[_0xd987('0x2c')][_0xd987('0x2d')]['SELECT'],'raw':!![]})[_0xd987('0x1f')](function(_0x4d416b){if(_0x4d416b){_0x1aaaa7['contact']=_0x4d416b[0x0];}if(typeof _0x1aaaa7[_0xd987('0x30')]===_0xd987('0x28'))return;return getAgent(_0x1aaaa7['UserId']);})[_0xd987('0x1f')](function(_0x12429b){if(_0x12429b){_0x1aaaa7['interface']=util[_0xd987('0x3c')](_0xd987('0x32'),_0x12429b[_0xd987('0x3d')]);_0x1aaaa7['agent']=_0x12429b;}return request({'event':_0xa53096,'message':_0x1aaaa7});})[_0xd987('0x35')](function(_0x53a423){logger[_0xd987('0x22')](_0xd987('0x21'),_0xd987('0x41'),_0x53a423);});}};}function getAgent(_0x49d496){return db['User']['find']({'where':{'id':_0x49d496},'attributes':['id','name','fullname',_0xd987('0x42'),_0xd987('0x43')],'raw':!![]})[_0xd987('0x1f')](function(_0x8f8b18){return _0x8f8b18;});}exports['default']=function(){for(var _0x84ada2=0x0;_0x84ada2<triggers[_0xd987('0x44')];_0x84ada2+=0x1){if(db['hasOwnProperty'](triggers[_0x84ada2][_0xd987('0x45')])){db[triggers[_0x84ada2][_0xd987('0x45')]][_0xd987('0x46')](triggers[_0x84ada2]['event'],triggers[_0x84ada2][_0xd987('0x47')](triggers[_0x84ada2][_0xd987('0x24')][_0xd987('0x48')](),triggers[_0x84ada2][_0xd987('0x49')]));}}};
\ No newline at end of file
+var _0xaece=['SIP/%s','name','agent','outgoingmessage','AfterCreateMessage','channel','opened','resolve','sequelize','AfterCreate','changed','closed','substatus','query','AfterUpdate','fullname','email','internal','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','catch','get','motionChannel','event','direction','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','UserId','interface','format'];(function(_0x400322,_0x4353a8){var _0xfdd597=function(_0xd914b6){while(--_0xd914b6){_0x400322['push'](_0x400322['shift']());}};_0xfdd597(++_0x4353a8);}(_0xaece,0xb0));var _0xeaec=function(_0x2258f4,_0x6b1110){_0x2258f4=_0x2258f4-0x0;var _0x17bf67=_0xaece[_0x2258f4];return _0x17bf67;};'use strict';var util=require(_0xeaec('0x0'));var db=require(_0xeaec('0x1'))['db'];var jayson=require(_0xeaec('0x2'));var logger=require('../logger')(_0xeaec('0x3'));var client=jayson[_0xeaec('0x4')][_0xeaec('0x5')]({'port':0x232a});var triggers=[{'channel':_0xeaec('0x6'),'model':_0xeaec('0x7'),'event':_0xeaec('0x8'),'condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':_0xeaec('0x6'),'model':'ChatInteraction','event':_0xeaec('0xa'),'condition':_0xeaec('0xb'),'callback':afterUpdate},{'channel':_0xeaec('0x6'),'model':'ChatMessage','event':_0xeaec('0x8'),'condition':_0xeaec('0xc'),'callback':afterCreateMessage},{'channel':'Chat','model':_0xeaec('0xd'),'event':_0xeaec('0x8'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xeaec('0xe'),'model':_0xeaec('0xf'),'event':_0xeaec('0x8'),'condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':_0xeaec('0xe'),'model':'SmsInteraction','event':_0xeaec('0xa'),'condition':_0xeaec('0xb'),'callback':afterUpdate},{'channel':'Sms','model':_0xeaec('0x10'),'event':_0xeaec('0x8'),'condition':_0xeaec('0xc'),'callback':afterCreateMessage},{'channel':_0xeaec('0x11'),'model':_0xeaec('0x12'),'event':'afterCreate','condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':_0xeaec('0x11'),'model':_0xeaec('0x12'),'event':_0xeaec('0xa'),'condition':_0xeaec('0xb'),'callback':afterUpdate},{'channel':_0xeaec('0x11'),'model':_0xeaec('0x13'),'event':'afterCreate','condition':_0xeaec('0xc'),'callback':afterCreateMessage},{'channel':_0xeaec('0x14'),'model':_0xeaec('0x15'),'event':_0xeaec('0x8'),'condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':_0xeaec('0x14'),'model':'FaxInteraction','event':'afterUpdate','condition':_0xeaec('0xb'),'callback':afterUpdate},{'channel':'Fax','model':_0xeaec('0x16'),'event':_0xeaec('0x8'),'condition':_0xeaec('0xc'),'callback':afterCreateMessage},{'channel':'Mail','model':_0xeaec('0x17'),'event':_0xeaec('0x8'),'condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':'Mail','model':_0xeaec('0x17'),'event':_0xeaec('0xa'),'condition':_0xeaec('0xb'),'callback':afterUpdate},{'channel':_0xeaec('0x18'),'model':'MailMessage','event':_0xeaec('0x8'),'condition':_0xeaec('0xc'),'callback':afterCreateMessage},{'channel':_0xeaec('0x19'),'model':_0xeaec('0x1a'),'event':_0xeaec('0x8'),'condition':_0xeaec('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0xeaec('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':_0xeaec('0x1b'),'event':_0xeaec('0x8'),'condition':_0xeaec('0xc'),'callback':afterCreateMessage}];function request(_0x3422e1){return client[_0xeaec('0x1c')](_0xeaec('0x1d'),_0x3422e1)[_0xeaec('0x1e')](function(_0x267db8){logger[_0xeaec('0x1f')](_0xeaec('0x20'),_0xeaec('0x1d'),_0x267db8);if(_0x267db8['error']){if(_0x267db8['error']['code']===0x1f4){logger[_0xeaec('0x21')](_0xeaec('0x20'),_0xeaec('0x1d'),_0x267db8[_0xeaec('0x21')]);}}})[_0xeaec('0x22')](function(_0x444f1b){logger['error'](_0xeaec('0x20'),_0xeaec('0x1d'),_0x444f1b);});}function afterCreateMessage(_0x390b88){return function(_0x272f77){_0x272f77=_0x272f77[_0xeaec('0x23')]({'plain':!![]});_0x272f77['channel']=_0x390b88;_0x272f77[_0xeaec('0x24')]=_0x390b88;_0x272f77[_0xeaec('0x25')]=_0x272f77[_0xeaec('0x26')];Promise['resolve']()[_0xeaec('0x1e')](function(){if(typeof _0x272f77[_0xeaec('0x27')]===_0xeaec('0x28'))return null;var _0x28c8e9=_0xeaec('0x29')+_0x272f77[_0xeaec('0x27')];return db['sequelize']['query'](_0x28c8e9,{'type':db[_0xeaec('0x2a')][_0xeaec('0x2b')][_0xeaec('0x2c')],'raw':!![]});})[_0xeaec('0x1e')](function(_0x108556){if(_0x108556){_0x272f77[_0xeaec('0x2d')]=_0x108556[0x0];}if(typeof _0x272f77['UserId']===_0xeaec('0x28'))return;return getAgent(_0x272f77[_0xeaec('0x2e')]);})[_0xeaec('0x1e')](function(_0x3e2533){if(_0x3e2533){_0x272f77[_0xeaec('0x2f')]=util[_0xeaec('0x30')](_0xeaec('0x31'),_0x3e2533[_0xeaec('0x32')]);_0x272f77[_0xeaec('0x33')]=_0x3e2533;_0x272f77['channel']=_0x390b88;return request({'event':'incomingmessage','message':_0x272f77});}else{return request({'event':_0xeaec('0x34'),'message':_0x272f77});}})['catch'](function(_0x51ce91){logger['error']('Trigger,\x20%s',_0xeaec('0x35'),_0x51ce91);});};}function afterCreateOfflineMessage(_0x2bbf22){return function(_0x5bc018){_0x5bc018=_0x5bc018[_0xeaec('0x23')]({'plain':!![]});_0x5bc018[_0xeaec('0x36')]=_0x2bbf22;_0x5bc018['motionChannel']=_0x2bbf22;_0x5bc018[_0xeaec('0x25')]='offlineMessage';return request({'event':_0x5bc018[_0xeaec('0x25')],'message':_0x5bc018});};}function afterCreate(_0x3ac64f,_0x416773){return function(_0x4ca174){_0x4ca174=_0x4ca174[_0xeaec('0x23')]({'plain':!![]});_0x4ca174[_0xeaec('0x36')]=_0x3ac64f;_0x4ca174[_0xeaec('0x24')]=_0x3ac64f;_0x4ca174[_0xeaec('0x25')]=_0xeaec('0x37');Promise[_0xeaec('0x38')]()[_0xeaec('0x1e')](function(){var _0x3ee19a=_0xeaec('0x29')+_0x4ca174[_0xeaec('0x27')];return db[_0xeaec('0x39')]['query'](_0x3ee19a,{'type':db[_0xeaec('0x2a')][_0xeaec('0x2b')][_0xeaec('0x2c')],'raw':!![]});})[_0xeaec('0x1e')](function(_0x5c23f1){if(_0x5c23f1){_0x4ca174[_0xeaec('0x2d')]=_0x5c23f1[0x0];}if(typeof _0x4ca174[_0xeaec('0x2e')]==='undefined')return;return getAgent(_0x4ca174[_0xeaec('0x2e')]);})['then'](function(_0x5297f4){if(_0x5297f4){_0x4ca174[_0xeaec('0x2f')]=util['format'](_0xeaec('0x31'),_0x5297f4[_0xeaec('0x32')]);_0x4ca174[_0xeaec('0x33')]=_0x5297f4;}return request({'event':_0x416773,'message':_0x4ca174});})[_0xeaec('0x22')](function(_0xbaf525){logger['error'](_0xeaec('0x20'),_0xeaec('0x3a'),_0xbaf525);});};}function afterUpdate(_0xb72f8f){return function(_0x42362f){var _0x598c25=_0x42362f[_0xeaec('0x3b')](_0xeaec('0x3c'))&&_0x42362f['closed'];var _0xa4dffc=_0x42362f['changed']('substatus');if(_0x598c25||_0xa4dffc){var _0x3c4dbf=_0x598c25?_0xeaec('0xb'):_0xeaec('0x3d');var _0x258f8c=_0x42362f[_0xeaec('0x23')]({'plain':!![]});_0x258f8c['channel']=_0xb72f8f;_0x258f8c[_0xeaec('0x24')]=_0xb72f8f;_0x258f8c[_0xeaec('0x25')]=_0x598c25?_0xeaec('0x3c'):_0xeaec('0x3d');var _0x1694e1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x258f8c[_0xeaec('0x27')];return db[_0xeaec('0x39')][_0xeaec('0x3e')](_0x1694e1,{'type':db[_0xeaec('0x2a')]['QueryTypes'][_0xeaec('0x2c')],'raw':!![]})[_0xeaec('0x1e')](function(_0x325663){if(_0x325663){_0x258f8c[_0xeaec('0x2d')]=_0x325663[0x0];}if(typeof _0x258f8c['UserId']==='undefined')return;return getAgent(_0x258f8c['UserId']);})[_0xeaec('0x1e')](function(_0x420e0f){if(_0x420e0f){_0x258f8c[_0xeaec('0x2f')]=util[_0xeaec('0x30')](_0xeaec('0x31'),_0x420e0f[_0xeaec('0x32')]);_0x258f8c['agent']=_0x420e0f;}return request({'event':_0x3c4dbf,'message':_0x258f8c});})[_0xeaec('0x22')](function(_0x73ee6a){logger[_0xeaec('0x21')]('Trigger,\x20%s',_0xeaec('0x3f'),_0x73ee6a);});}};}function getAgent(_0x41accd){return db['User']['find']({'where':{'id':_0x41accd},'attributes':['id',_0xeaec('0x32'),_0xeaec('0x40'),_0xeaec('0x41'),_0xeaec('0x42')],'raw':!![]})[_0xeaec('0x1e')](function(_0x265273){return _0x265273;});}exports[_0xeaec('0x43')]=function(){for(var _0x8baa16=0x0;_0x8baa16<triggers[_0xeaec('0x44')];_0x8baa16+=0x1){if(db[_0xeaec('0x45')](triggers[_0x8baa16][_0xeaec('0x46')])){db[triggers[_0x8baa16][_0xeaec('0x46')]][_0xeaec('0x47')](triggers[_0x8baa16]['event'],triggers[_0x8baa16][_0xeaec('0x48')](triggers[_0x8baa16][_0xeaec('0x36')][_0xeaec('0x49')](),triggers[_0x8baa16][_0xeaec('0x4a')]));}}};
\ No newline at end of file
index d9ef13c..89413de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd9a=['voice','mail','chat','sms','whatsapp','openchannel','isValidChannel','includes','clearBlockUser','isUndefined','updateAttributes','getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','../mysqldb'];(function(_0x380f8a,_0x1e8d3e){var _0x3bd1bf=function(_0x344f2e){while(--_0x344f2e){_0x380f8a['push'](_0x380f8a['shift']());}};_0x3bd1bf(++_0x1e8d3e);}(_0xbd9a,0x178));var _0xabd9=function(_0x4dd72b,_0x31204f){_0x4dd72b=_0x4dd72b-0x0;var _0x3e0953=_0xbd9a[_0x4dd72b];return _0x3e0953;};'use strict';var _=require(_0xabd9('0x0'));var BPromise=require('bluebird');var db=require(_0xabd9('0x1'))['db'];var util=require('./license/util');var channels=[_0xabd9('0x2'),_0xabd9('0x3'),_0xabd9('0x4'),'fax',_0xabd9('0x5'),_0xabd9('0x6'),_0xabd9('0x7')];exports['getChannels']=function(){return channels;};exports[_0xabd9('0x8')]=function(_0x4ee066){_0x4ee066=_0x4ee066['toLowerCase']();return _[_0xabd9('0x9')](channels,_0x4ee066);};exports[_0xabd9('0xa')]=function(_0x45c76f,_0x45824e,_0x41a1a2,_0x539aae){var _0x24e051={'loginAttempts':_0x45824e,'blocked':_0x41a1a2};if(!_[_0xabd9('0xb')](_0x539aae)){_0x24e051['blockedAt']=_0x539aae;}return _0x45c76f[_0xabd9('0xc')](_0x24e051);};exports[_0xabd9('0xd')]=function(_0x46aad6){return new BPromise(function(_0x541da1,_0x39b86c){var _0x8c3e68=0x0;if(_0x46aad6[_0xabd9('0xe')]!==_0xabd9('0xf')){_0x541da1(_0x46aad6);}db[_0xabd9('0x10')]['count']({'where':{'role':_0xabd9('0xf'),'online':!![],'id':{'$ne':_0x46aad6['id']}}})['then'](function(_0x5e0ffc){_0x8c3e68=_0x5e0ffc;return util[_0xabd9('0xd')]();})[_0xabd9('0x11')](function(_0x4f79ed){if(_0x4f79ed&&_0x4f79ed[_0xabd9('0x12')]&&_0x8c3e68>=_0x4f79ed[_0xabd9('0x12')]){throw Error(_0xabd9('0x13'));}_0x541da1(_0x46aad6);})[_0xabd9('0x14')](function(_0x246da6){_0x39b86c(_0x246da6);});});};
\ No newline at end of file
+var _0x7b58=['sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','agent','then','agents','catch','lodash','bluebird','./license/util','voice','chat','fax'];(function(_0x8d1678,_0x17549b){var _0x19cad6=function(_0x88280f){while(--_0x88280f){_0x8d1678['push'](_0x8d1678['shift']());}};_0x19cad6(++_0x17549b);}(_0x7b58,0xea));var _0x87b5=function(_0xeaf92d,_0x26a3bf){_0xeaf92d=_0xeaf92d-0x0;var _0x573a6a=_0x7b58[_0xeaf92d];return _0x573a6a;};'use strict';var _=require(_0x87b5('0x0'));var BPromise=require(_0x87b5('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x87b5('0x2'));var channels=[_0x87b5('0x3'),'mail',_0x87b5('0x4'),_0x87b5('0x5'),_0x87b5('0x6'),_0x87b5('0x7'),_0x87b5('0x8')];exports[_0x87b5('0x9')]=function(){return channels;};exports[_0x87b5('0xa')]=function(_0x1b7ef7){_0x1b7ef7=_0x1b7ef7[_0x87b5('0xb')]();return _[_0x87b5('0xc')](channels,_0x1b7ef7);};exports[_0x87b5('0xd')]=function(_0xf88daa,_0xba77c5,_0x453389,_0x527577){var _0x591d47={'loginAttempts':_0xba77c5,'blocked':_0x453389};if(!_[_0x87b5('0xe')](_0x527577)){_0x591d47[_0x87b5('0xf')]=_0x527577;}return _0xf88daa[_0x87b5('0x10')](_0x591d47);};exports[_0x87b5('0x11')]=function(_0x463f83){return new BPromise(function(_0x29b1db,_0x52de60){var _0x1952d=0x0;if(_0x463f83[_0x87b5('0x12')]!=='agent'){_0x29b1db(_0x463f83);}db[_0x87b5('0x13')]['count']({'where':{'role':_0x87b5('0x14'),'online':!![],'id':{'$ne':_0x463f83['id']}}})[_0x87b5('0x15')](function(_0x44299b){_0x1952d=_0x44299b;return util[_0x87b5('0x11')]();})[_0x87b5('0x15')](function(_0x859a48){if(_0x859a48&&_0x859a48[_0x87b5('0x16')]&&_0x1952d>=_0x859a48['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x29b1db(_0x463f83);})[_0x87b5('0x17')](function(_0x37d0f0){_0x52de60(_0x37d0f0);});});};
\ No newline at end of file
index c6c96bd..7d8074c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['OutOfInterval','error','stack','status','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','inherits'];(function(_0x3537e1,_0xbc7714){var _0x164a50=function(_0x57c2d1){while(--_0x57c2d1){_0x3537e1['push'](_0x3537e1['shift']());}};_0x164a50(++_0xbc7714);}(_0x70e0,0x17b));var _0x070e=function(_0x506a94,_0x4ecc5a){_0x506a94=_0x506a94-0x0;var _0x1d1057=_0x70e0[_0x506a94];return _0x1d1057;};'use strict';var util=require(_0x070e('0x0'));var logger=require(_0x070e('0x1'))(_0x070e('0x2'));var APIError=function(_0x4d95bb,_0x579b83){this[_0x070e('0x3')]=_0x4d95bb||_0x070e('0x4');this[_0x070e('0x5')]=_0x579b83||_0x070e('0x6');util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x7bce9b){this['message']=_0x7bce9b||_0x070e('0x7');this['name']='Bad\x20Request';util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x35ab0c){this[_0x070e('0x3')]=_0x35ab0c||_0x070e('0x8');this[_0x070e('0x5')]=_0x070e('0x9');util[_0x070e('0xa')](APINotFoundError,APIError);};function getStatusCode(_0x11ffa8){switch(_0x11ffa8){case'Bad\x20Request':return 0x190;case'Forbidden',_0x070e('0xb'):return 0x193;case _0x070e('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x12bb37){return function(_0xb8d819){logger[_0x070e('0xc')](_0xb8d819[_0x070e('0xd')]);var _0x25cfe1=getStatusCode(_0xb8d819[_0x070e('0x5')]);if(_0xb8d819[_0x070e('0x5')])delete _0xb8d819[_0x070e('0x5')];return _0x12bb37[_0x070e('0xe')](_0x25cfe1)['send'](_0xb8d819);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xf4eb=['Bad\x20Request','name','Not\x20Found','Forbidden','OutOfInterval','stack','send','exports','util','message','Error','inherits'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf4eb,0xec));var _0xbf4e=function(_0x282522,_0x54d460){_0x282522=_0x282522-0x0;var _0x114f27=_0xf4eb[_0x282522];return _0x114f27;};'use strict';var util=require(_0xbf4e('0x0'));var logger=require('../config/logger')('api');var APIError=function(_0x479210,_0x5ed5b9){this[_0xbf4e('0x1')]=_0x479210||'Internal\x20Server\x20Error';this['name']=_0x5ed5b9||_0xbf4e('0x2');util[_0xbf4e('0x3')](APIError,Error);};var APIBadRequestError=function(_0x32d1d7){this[_0xbf4e('0x1')]=_0x32d1d7||_0xbf4e('0x4');this[_0xbf4e('0x5')]=_0xbf4e('0x4');util['inherits'](APIBadRequestError,APIError);};var APINotFoundError=function(_0x449d55){this['message']=_0x449d55||'Entity\x20not\x20found';this[_0xbf4e('0x5')]=_0xbf4e('0x6');util[_0xbf4e('0x3')](APINotFoundError,APIError);};function getStatusCode(_0xc86f04){switch(_0xc86f04){case _0xbf4e('0x4'):return 0x190;case _0xbf4e('0x7'),_0xbf4e('0x8'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x4d9a07){return function(_0x7dfb74){logger['error'](_0x7dfb74[_0xbf4e('0x9')]);var _0xcf6ba8=getStatusCode(_0x7dfb74['name']);if(_0x7dfb74[_0xbf4e('0x5')])delete _0x7dfb74['name'];return _0x4d9a07['status'](_0xcf6ba8)[_0xbf4e('0xa')](_0x7dfb74);};}module[_0xbf4e('0xb')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index a314987..196a6da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8435=['send','status','render'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x8435,0x1d5));var _0x5843=function(_0x29879b,_0x179ade){_0x29879b=_0x29879b-0x0;var _0x342817=_0x8435[_0x29879b];return _0x342817;};'use strict';module['exports'][0x194]=function pageNotFound(_0x28dbc5,_0x510ad4){var _0x4141d3='404';var _0x2b4db7=0x194;var _0x24ac2f={'status':_0x2b4db7};_0x510ad4[_0x5843('0x0')](_0x24ac2f[_0x5843('0x0')]);_0x510ad4[_0x5843('0x1')](_0x4141d3,{},function(_0x35cce0,_0xac9983){if(_0x35cce0){return _0x510ad4[_0x5843('0x0')](_0x24ac2f[_0x5843('0x0')])['json'](_0x24ac2f);}_0x510ad4[_0x5843('0x2')](_0xac9983);});};
\ No newline at end of file
+var _0x8472=['exports','status','render','json'];(function(_0x353969,_0x14086c){var _0x535b57=function(_0x4b3bb0){while(--_0x4b3bb0){_0x353969['push'](_0x353969['shift']());}};_0x535b57(++_0x14086c);}(_0x8472,0x1f0));var _0x2847=function(_0x31bfb5,_0x2636e9){_0x31bfb5=_0x31bfb5-0x0;var _0x277a6c=_0x8472[_0x31bfb5];return _0x277a6c;};'use strict';module[_0x2847('0x0')][0x194]=function pageNotFound(_0x5ed2e7,_0x49c9da){var _0x37eb6c='404';var _0x4029d3=0x194;var _0x134c8d={'status':_0x4029d3};_0x49c9da[_0x2847('0x1')](_0x134c8d[_0x2847('0x1')]);_0x49c9da[_0x2847('0x2')](_0x37eb6c,{},function(_0x1a8cb4,_0x36f59d){if(_0x1a8cb4){return _0x49c9da[_0x2847('0x1')](_0x134c8d[_0x2847('0x1')])[_0x2847('0x3')](_0x134c8d);}_0x49c9da['send'](_0x36f59d);});};
\ No newline at end of file
index 655fa4c..beba273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58fd=['AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','userSetting','cascade','UserId','Recordings','hasMany','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','WhatsappInteractions','SenderId','belongsTo','userProfileId','Groups','Contacts','cm_user_has_contacts','belongsToMany','cm_user_has_lists','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','MailQueues','ChatQueue','ChatQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','SmsAccount','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Applications','Sound','Members','CmHopper','Hoppers','VoiceQueueId','ReportAgentPreview','HopperBlacks','JscriptySessionReport','TrunkId','TrunkBackup','TrunkBackupId','Interval','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','Teams','voice_queues_has_cm_blacklists','mailboxuser','mailbox','uniqueid','AgentReports','CmContact','MailServerIn','MailAccountId','CloudProviderId','restrict','Imap','Smtp','Dispositions','Answers','Messages','Interactions','List','ListId','Template','TemplateId','team_has_mail_queues','MailInteractionId','Account','Contact','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','ChatOfflineMessage','IntervalId','TagId','Dashboard','Items','Disposition','FaxAccountId','FaxAccount','Exntensions','user_has_fax_accounts','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsApplication','user_has_sms_accounts','sms_interaction_has_tags','SmsInteractionId','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','Owner','openchannel_interaction_has_tags','user_has_openchannel_interactions','ChatWebsiteId','ProactiveActions','ChatApplication','OpenchannelQueueReport','Queue','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','ChatOfflineMessageId','team_has_chat_queues','chat_group_has_users','CompanyId','Phones','CmContactId','HopperHistories','cm_contact_has_tags','CmHopperId','Agent','OwnerId','CampaignId','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Action','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','Schedule','Mohs','whatsapp_interaction_has_tags','Hopper','AllCondition','AnyConditions','AnyCondition','TriggerId','Fields','CustomReportId','DefaultReportId','MetricId','AccountId','Subjects','Descriptions','FieldId','Description','DescriptionId','VariableId','SugarcrmConfiguration','Subject','SubjectId','DeskConfiguration','Configurations','int_desk_configuration_has_tags','Field','ZohoConfiguration','ZendeskConfiguration','ZendeskField','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','ServicenowConfiguration','Dynamics365Configuration','FromId','ToId','SessionId','ProjectId','user_has_teams','FaxQueues','team_has_sms_queues','SmsQueues','team_has_whatsapp_queues','VoicePrefixes','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatQueueId','ToQueue','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','FromAccount','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','UserProfileSection','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','user','exports','../config/environment','sequelize','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','username','options','password','User','../api/user/user.model','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','CmCustomField','../api/cmCustomField/cmCustomField.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','../api/schedule/schedule.model','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','CmContactHasItem','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric'];(function(_0x17a7d8,_0x175204){var _0x417e7d=function(_0x4c5b93){while(--_0x4c5b93){_0x17a7d8['push'](_0x17a7d8['shift']());}};_0x417e7d(++_0x175204);}(_0x58fd,0x165));var _0xd58f=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0x58fd[_0x4fc9e6];return _0x551d28;};'use strict';var config=require(_0xd58f('0x0'));var Sequelize=require(_0xd58f('0x1'));var _=require('lodash');var jstz=require('jstz');var timezone=jstz[_0xd58f('0x2')]();config[_0xd58f('0x1')]=_[_0xd58f('0x3')](config['sequelize'],{'database':_0xd58f('0x4'),'username':_0xd58f('0x5'),'password':_0xd58f('0x6'),'options':{'host':_0xd58f('0x7'),'port':0xcea,'dialect':_0xd58f('0x8'),'dialectOptions':{'charset':_0xd58f('0x9')},'logging':![],'timezone':timezone[_0xd58f('0xa')](),'define':{'charset':_0xd58f('0xb'),'collate':_0xd58f('0xc')}}});config['sequelizeHistory']=_[_0xd58f('0x3')](config[_0xd58f('0xd')],{'database':_0xd58f('0x4'),'username':'xcall','password':_0xd58f('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xd58f('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xd58f('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd58f('0x1')][_0xd58f('0xe')],config[_0xd58f('0x1')][_0xd58f('0xf')],config[_0xd58f('0x1')]['password'],config[_0xd58f('0x1')][_0xd58f('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd58f('0xd')][_0xd58f('0xe')],config[_0xd58f('0xd')]['username'],config[_0xd58f('0xd')][_0xd58f('0x11')],config[_0xd58f('0xd')][_0xd58f('0x10')])};db[_0xd58f('0x12')]=db['sequelize']['import'](_0xd58f('0x13'));db[_0xd58f('0x14')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x16'));db[_0xd58f('0x17')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x18'));db[_0xd58f('0x19')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x1a'));db[_0xd58f('0x1b')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x1c'));db['VoiceQueue']=db[_0xd58f('0x1')]['import'](_0xd58f('0x1d'));db[_0xd58f('0x1e')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x1f'));db[_0xd58f('0x20')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x21'));db[_0xd58f('0x22')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x23'));db[_0xd58f('0x24')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x25'));db[_0xd58f('0x26')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x27'));db[_0xd58f('0x28')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x29'));db[_0xd58f('0x2a')]=db['sequelize']['import'](_0xd58f('0x2b'));db[_0xd58f('0x2c')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x2d'));db[_0xd58f('0x2e')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x2f'));db[_0xd58f('0x30')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x31'));db['VoiceTransferReport']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x32'));db[_0xd58f('0x33')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0xd58f('0x34')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x35'));db[_0xd58f('0x36')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x37'));db[_0xd58f('0x38')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x39'));db[_0xd58f('0x3a')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x3b'));db[_0xd58f('0x3c')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x3d'));db['UserOpenchannelQueue']=db[_0xd58f('0x1')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xd58f('0x3e')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x3f'));db['MailServerIn']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/mailServerIn/mailServerIn.model');db[_0xd58f('0x40')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x41'));db['MailAccount']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x42'));db[_0xd58f('0x43')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x44'));db[_0xd58f('0x45')]=db[_0xd58f('0x1')]['import']('../api/mailSubstatus/mailSubstatus.model');db[_0xd58f('0x46')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x47'));db[_0xd58f('0x48')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x49'));db[_0xd58f('0x4a')]=db['sequelize']['import'](_0xd58f('0x4b'));db[_0xd58f('0x4c')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x4d'));db['Dashboard']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/dashboard/dashboard.model');db[_0xd58f('0x4e')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x4f'));db['FaxAccount']=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x50'));db[_0xd58f('0x51')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x52'));db[_0xd58f('0x53')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x54'));db[_0xd58f('0x55')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x56'));db[_0xd58f('0x57')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x58'));db[_0xd58f('0x59')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x5a'));db['SmsAccount']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/smsAccount/smsAccount.model');db['SmsApplication']=db['sequelize'][_0xd58f('0x15')]('../api/smsApplication/smsApplication.model');db[_0xd58f('0x5b')]=db['sequelize']['import'](_0xd58f('0x5c'));db[_0xd58f('0x5d')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x5e'));db[_0xd58f('0x5f')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x60'));db[_0xd58f('0x61')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x62'));db['OpenchannelApplication']=db['sequelize'][_0xd58f('0x15')]('../api/openchannelApplication/openchannelApplication.model');db[_0xd58f('0x63')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x64'));db[_0xd58f('0x65')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x66'));db[_0xd58f('0x67')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x68'));db[_0xd58f('0x69')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x6a'));db['OpenchannelQueueReport']=db[_0xd58f('0x1')]['import'](_0xd58f('0x6b'));db['ChatApplication']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x6c'));db[_0xd58f('0x6d')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x6e'));db[_0xd58f('0x6f')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x70'));db['ChatOfflineMessage']=db[_0xd58f('0x1')]['import'](_0xd58f('0x71'));db['ChatQueue']=db[_0xd58f('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0xd58f('0x72')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x73'));db[_0xd58f('0x74')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x75'));db[_0xd58f('0x76')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x77'));db['CmContact']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/cmContact/cmContact.model');db['CmHopper']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x78'));db[_0xd58f('0x79')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x7a'));db[_0xd58f('0x7b')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x7c'));db[_0xd58f('0x7d')]=db[_0xd58f('0x1')]['import']('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0xd58f('0x7e')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x7f'));db['Action']=db['sequelize'][_0xd58f('0x15')]('../api/action/action.model');db[_0xd58f('0x80')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x81'));db[_0xd58f('0x82')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x83'));db['Disposition']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x84'));db[_0xd58f('0x85')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x86'));db['Interval']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/interval/interval.model');db[_0xd58f('0x87')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x88'));db[_0xd58f('0x89')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x8a'));db['VoiceQueuesLog']=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x8b'));db['Schedule']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x8c'));db['Sound']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x8d'));db[_0xd58f('0x8e')]=db['sequelize']['import'](_0xd58f('0x8f'));db[_0xd58f('0x90')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/contactItemType/contactItemType.model');db[_0xd58f('0x91')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/cmContactHasItem/cmContactHasItem.model');db[_0xd58f('0x92')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x93'));db['Template']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/template/template.model');db[_0xd58f('0x94')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x95'));db[_0xd58f('0x96')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x97'));db[_0xd58f('0x98')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x99'));db[_0xd58f('0x9a')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x9b'));db[_0xd58f('0x9c')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x9d'));db[_0xd58f('0x9e')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x9f'));db[_0xd58f('0xa0')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xa1'));db[_0xd58f('0xa2')]=db['sequelize'][_0xd58f('0x15')]('../api/analyticMetric/analyticMetric.model');db[_0xd58f('0xa3')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xa4'));db[_0xd58f('0xa5')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xa6'));db[_0xd58f('0xa7')]=db['sequelize'][_0xd58f('0x15')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xd58f('0xa8')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xa9'));db[_0xd58f('0xaa')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xab'));db[_0xd58f('0xac')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xad'));db['SugarcrmConfiguration']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xae'));db[_0xd58f('0xaf')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0xd58f('0xb0')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xb1'));db['DeskConfiguration']=db['sequelize'][_0xd58f('0x15')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0xd58f('0xb2')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xb3'));db[_0xd58f('0xb4')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/intZohoAccount/intZohoAccount.model');db['ZohoConfiguration']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xd58f('0xb5')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xb6'));db[_0xd58f('0xb7')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xb8'));db['ZendeskConfiguration']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xb9'));db['ZendeskField']=db[_0xd58f('0x1')]['import']('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xba'));db[_0xd58f('0xbb')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xbc'));db[_0xd58f('0xbd')]=db['sequelize'][_0xd58f('0x15')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0xd58f('0xbe')]=db['sequelize'][_0xd58f('0x15')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0xd58f('0xbf')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xc0'));db[_0xd58f('0xc1')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/intVtigerField/intVtigerField.model');db[_0xd58f('0xc2')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xc3'));db['ServicenowConfiguration']=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xc4'));db[_0xd58f('0xc5')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xc6'));db[_0xd58f('0xc7')]=db['sequelize']['import']('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xc8'));db[_0xd58f('0xc9')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xca'));db[_0xd58f('0xcb')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xcc'));db[_0xd58f('0xcd')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xce'));db[_0xd58f('0xcf')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xd0'));db[_0xd58f('0x98')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x99'));db[_0xd58f('0xd1')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xd2'));db[_0xd58f('0xd3')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xd4'));db[_0xd58f('0xd5')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xd6'));db[_0xd58f('0xd7')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xd8'));db[_0xd58f('0xd9')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xda'));db['JscriptySessionReport']=db[_0xd58f('0x1')]['import'](_0xd58f('0xdb'));db[_0xd58f('0xdc')]=db[_0xd58f('0x1')]['import']('../api/smsQueueReport/smsQueueReport.model');db['SquareReport']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/squareReport/squareReport.model');db[_0xd58f('0xdd')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/squareReportDetail/squareReportDetail.model');db[_0xd58f('0xde')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xdf'));db['Setting']=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/setting/setting.model');db[_0xd58f('0xe0')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xe1'));db[_0xd58f('0xe2')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/squareProject/squareProject.model');db[_0xd58f('0xe3')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xe4'));db[_0xd58f('0xe5')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xe6'));db[_0xd58f('0xe7')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xe8'));db['License']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xe9'));db[_0xd58f('0xea')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xeb'));db[_0xd58f('0xec')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xed'));db[_0xd58f('0xee')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xef'));db[_0xd58f('0xf0')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xf1'));db[_0xd58f('0xf2')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xf3'));db[_0xd58f('0xf4')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xf5'));db[_0xd58f('0xf6')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0xf7'));db[_0xd58f('0xf8')]=db[_0xd58f('0x1')]['import'](_0xd58f('0xf9'));db['SmsTransferReport']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xfa'));db[_0xd58f('0xfb')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xfc'));db[_0xd58f('0xfd')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0xfe'));db[_0xd58f('0xff')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x100'));db['UserProfileSection']=db[_0xd58f('0x1')]['import']('../api/userProfileSection/userProfileSection.model');db[_0xd58f('0x101')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/userProfileResource/userProfileResource.model');db[_0xd58f('0x102')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x103'));db[_0xd58f('0x104')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x105'));db[_0xd58f('0x106')]=db['sequelize']['import'](_0xd58f('0x107'));db[_0xd58f('0x108')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x109'));db[_0xd58f('0x10a')]=db['sequelize']['import'](_0xd58f('0x10b'));db['WhatsappQueueReport']=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x10c'));db[_0xd58f('0x10d')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0xd58f('0x10e')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/whatsappQueue/whatsappQueue.model');db[_0xd58f('0x10f')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x110'));db[_0xd58f('0x111')]=db[_0xd58f('0x1')][_0xd58f('0x15')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0xd58f('0x112')]=db[_0xd58f('0x1')]['import'](_0xd58f('0x113'));db[_0xd58f('0x114')]=db[_0xd58f('0x1')][_0xd58f('0x15')](_0xd58f('0x115'));db[_0xd58f('0x116')]=db['sequelize'][_0xd58f('0x15')](_0xd58f('0x117'));db[_0xd58f('0x12')][_0xd58f('0x118')](db['VoiceMail'],{'as':_0xd58f('0x22'),'onDelete':'cascade','foreignKey':'UserId'});db[_0xd58f('0x12')][_0xd58f('0x118')](db['UserSetting'],{'as':_0xd58f('0x119'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x11b')});db['User']['hasMany'](db[_0xd58f('0x1e')],{'as':_0xd58f('0x11c'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x12')][_0xd58f('0x11d')](db[_0xd58f('0x33')],{'as':_0xd58f('0x11e'),'foreignKey':'UserId'});db['User'][_0xd58f('0x11d')](db['VoiceExtension'],{'as':_0xd58f('0x11f'),'onDelete':_0xd58f('0x11a'),'hooks':!![]});db['User'][_0xd58f('0x11d')](db[_0xd58f('0x7b')],{'as':_0xd58f('0x120'),'foreignKey':'UserId'});db[_0xd58f('0x12')][_0xd58f('0x11d')](db['CmHopperHistory'],{'as':_0xd58f('0x121'),'foreignKey':'UserId'});db['User'][_0xd58f('0x11d')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x12')]['hasMany'](db[_0xd58f('0x63')],{'as':_0xd58f('0x122'),'foreignKey':'UserId'});db[_0xd58f('0x12')][_0xd58f('0x11d')](db[_0xd58f('0x6d')],{'as':_0xd58f('0x123'),'foreignKey':'UserId'});db['User'][_0xd58f('0x11d')](db[_0xd58f('0x5b')],{'as':_0xd58f('0x124'),'foreignKey':_0xd58f('0x11b')});db['User']['hasMany'](db[_0xd58f('0x53')],{'as':_0xd58f('0x125'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x12')][_0xd58f('0x11d')](db[_0xd58f('0x46')],{'as':'MailInteractions','foreignKey':_0xd58f('0x11b')});db['User'][_0xd58f('0x11d')](db[_0xd58f('0x108')],{'as':_0xd58f('0x126'),'foreignKey':_0xd58f('0x11b')});db['User'][_0xd58f('0x11d')](db[_0xd58f('0x102')],{'as':'UserNotifications','foreignKey':_0xd58f('0x127')});db[_0xd58f('0x12')][_0xd58f('0x128')](db[_0xd58f('0xff')],{'as':_0xd58f('0xff'),'foreignKey':_0xd58f('0x129')});db[_0xd58f('0x12')]['belongsToMany'](db['ChatGroup'],{'as':_0xd58f('0x12a'),'through':'chat_group_has_users'});db['User']['belongsToMany'](db['CmContact'],{'as':_0xd58f('0x12b'),'through':_0xd58f('0x12c')});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0xfb')],{'as':'Lists','through':_0xd58f('0x12e')});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':'user_has_teams'});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0x46')],{'as':_0xd58f('0x12f'),'through':_0xd58f('0x130')});db[_0xd58f('0x12')]['belongsToMany'](db['ChatInteraction'],{'as':'ChatInteractions','through':_0xd58f('0x131')});db[_0xd58f('0x12')]['belongsToMany'](db['FaxInteraction'],{'as':'FaxInteractions','through':_0xd58f('0x132')});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0x5b')],{'as':_0xd58f('0x124'),'through':_0xd58f('0x133')});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x63')],{'as':_0xd58f('0x122'),'through':'user_has_openchannel_interactions'});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x108')],{'as':'WhatsappInteractions','through':_0xd58f('0x134')});db['User'][_0xd58f('0x12d')](db[_0xd58f('0x135')],{'as':_0xd58f('0x136'),'through':_0xd58f('0x34'),'required':![]});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0xfd')],{'as':'VoicePrefixes','through':'UserVoicePrefix','required':![]});db['User'][_0xd58f('0x12d')](db[_0xd58f('0x43')],{'as':_0xd58f('0x137'),'through':'UserMailQueue','required':![]});db['User'][_0xd58f('0x12d')](db[_0xd58f('0x138')],{'as':_0xd58f('0x139'),'through':_0xd58f('0x36'),'required':![],'hooks':!![]});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x57')],{'as':'FaxQueues','through':'UserFaxQueue','required':![]});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x5f')],{'as':'SmsQueues','through':_0xd58f('0x3c'),'required':![]});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0x67')],{'as':_0xd58f('0x13a'),'through':_0xd58f('0x13b'),'required':![]});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x10e')],{'as':_0xd58f('0x13c'),'through':_0xd58f('0x3e'),'required':![]});db['User'][_0xd58f('0x12d')](db[_0xd58f('0xfb')],{'through':_0xd58f('0x12e')});db[_0xd58f('0x12')]['belongsToMany'](db[_0xd58f('0x69')],{'as':_0xd58f('0x13d'),'through':_0xd58f('0x13e')});db[_0xd58f('0x12')][_0xd58f('0x12d')](db['FaxAccount'],{'as':_0xd58f('0x13f'),'through':'user_has_fax_accounts'});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0x140')],{'as':_0xd58f('0x141'),'through':_0xd58f('0x142')});db['User'][_0xd58f('0x12d')](db[_0xd58f('0x61')],{'as':_0xd58f('0x143'),'through':'user_has_openchannel_accounts'});db[_0xd58f('0x12')][_0xd58f('0x12d')](db[_0xd58f('0x144')],{'as':_0xd58f('0x145'),'through':'user_has_sms_accounts'});db['User']['belongsToMany'](db[_0xd58f('0x104')],{'as':_0xd58f('0x146'),'through':_0xd58f('0x147')});db['VoiceChanSpy'][_0xd58f('0x11d')](db[_0xd58f('0x19')],{'as':_0xd58f('0x148'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x149')});db[_0xd58f('0x17')][_0xd58f('0x11d')](db['VoiceExtension'],{'onDelete':'cascade'});db[_0xd58f('0x19')][_0xd58f('0x11d')](db[_0xd58f('0x19')],{'as':_0xd58f('0x14a'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x1b')]['belongsToMany'](db[_0xd58f('0x14b')],{'as':'Sounds','through':'moh_has_sounds'});db[_0xd58f('0x135')][_0xd58f('0x11d')](db[_0xd58f('0x33')],{'as':_0xd58f('0x14c'),'foreignKey':'VoiceQueueId'});db[_0xd58f('0x135')][_0xd58f('0x11d')](db[_0xd58f('0x14d')],{'as':_0xd58f('0x14e'),'foreignKey':_0xd58f('0x14f')});db[_0xd58f('0x135')][_0xd58f('0x11d')](db[_0xd58f('0x7b')],{'as':_0xd58f('0x120'),'foreignKey':_0xd58f('0x14f')});db['VoiceQueue'][_0xd58f('0x11d')](db[_0xd58f('0x7d')],{'as':'HopperHistories','foreignKey':_0xd58f('0x14f')});db[_0xd58f('0x135')]['hasMany'](db['ReportAgentPreview'],{'as':_0xd58f('0x150'),'foreignKey':_0xd58f('0x14f')});db[_0xd58f('0x135')][_0xd58f('0x11d')](db[_0xd58f('0x79')],{'as':_0xd58f('0x151'),'foreignKey':_0xd58f('0x14f')});db[_0xd58f('0x135')]['hasMany'](db[_0xd58f('0x152')],{'as':'JscriptySessions','foreignKey':'VoiceQueueId'});db[_0xd58f('0x135')]['belongsTo'](db['Trunk'],{'as':_0xd58f('0x30'),'foreignKey':_0xd58f('0x153')});db[_0xd58f('0x135')][_0xd58f('0x128')](db[_0xd58f('0x30')],{'as':_0xd58f('0x154'),'foreignKey':_0xd58f('0x155')});db[_0xd58f('0x135')][_0xd58f('0x128')](db['Interval'],{'as':_0xd58f('0x156'),'foreignKey':'IntervalId'});db[_0xd58f('0x135')][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':_0xd58f('0x157'),'foreignKey':_0xd58f('0x158')});db[_0xd58f('0x135')][_0xd58f('0x12d')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x159'),'through':_0xd58f('0x15a')});db[_0xd58f('0x135')][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x34')});db[_0xd58f('0x135')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'as':_0xd58f('0x15c'),'through':'TeamVoiceQueue'});db[_0xd58f('0x135')][_0xd58f('0x12d')](db['CmList'],{'as':'BlackLists','through':_0xd58f('0x15d')});db[_0xd58f('0x1e')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':_0xd58f('0x12'),'foreignKey':_0xd58f('0x11b')});db['ScreenRecording']['belongsTo'](db['User'],{'as':_0xd58f('0x12'),'foreignKey':'UserId'});db[_0xd58f('0x22')][_0xd58f('0x11d')](db[_0xd58f('0x24')],{'as':'Messages','onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x15e'),'sourceKey':_0xd58f('0x15f')});db[_0xd58f('0x24')][_0xd58f('0x128')](db['VoiceMail'],{'foreignKey':_0xd58f('0x15e'),'targetKey':_0xd58f('0x15f')});db[_0xd58f('0x26')][_0xd58f('0x11d')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0xd58f('0x160'),'constraints':![]});db[_0xd58f('0x26')]['hasMany'](db[_0xd58f('0x2a')],{'as':_0xd58f('0x161'),'foreignKey':_0xd58f('0x160'),'constraints':![]});db[_0xd58f('0x26')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':_0xd58f('0x12'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x26')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':'Contact','foreignKey':'ContactId'});db[_0xd58f('0x163')][_0xd58f('0x128')](db[_0xd58f('0x140')],{'as':_0xd58f('0x140'),'foreignKey':_0xd58f('0x164')});db['MailServerIn'][_0xd58f('0x128')](db[_0xd58f('0x10f')],{'as':_0xd58f('0x10f'),'foreignKey':_0xd58f('0x165'),'onDelete':_0xd58f('0x166')});db['MailServerOut']['belongsTo'](db[_0xd58f('0x140')],{'as':'MailAccount','foreignKey':_0xd58f('0x164')});db[_0xd58f('0x40')][_0xd58f('0x128')](db[_0xd58f('0x10f')],{'as':_0xd58f('0x10f'),'foreignKey':'CloudProviderId','onDelete':_0xd58f('0x166')});db[_0xd58f('0x140')]['hasOne'](db[_0xd58f('0x163')],{'as':_0xd58f('0x167'),'onDelete':_0xd58f('0x11a')});db['MailAccount'][_0xd58f('0x118')](db['MailServerOut'],{'as':_0xd58f('0x168'),'onDelete':'cascade'});db['MailAccount']['hasMany'](db['Disposition'],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x164'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x140')][_0xd58f('0x11d')](db['CannedAnswer'],{'as':_0xd58f('0x16a'),'foreignKey':_0xd58f('0x164')});db[_0xd58f('0x140')]['hasMany'](db[_0xd58f('0x48')],{'as':_0xd58f('0x16b'),'foreignKey':_0xd58f('0x164')});db[_0xd58f('0x140')][_0xd58f('0x11d')](db[_0xd58f('0x46')],{'as':_0xd58f('0x16c')});db['MailAccount'][_0xd58f('0x11d')](db[_0xd58f('0x4a')],{'as':'Applications'});db['MailAccount'][_0xd58f('0x128')](db['CmList'],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x140')][_0xd58f('0x128')](db['Template'],{'as':_0xd58f('0x16f'),'foreignKey':_0xd58f('0x170')});db[_0xd58f('0x140')][_0xd58f('0x128')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xd58f('0x158')});db[_0xd58f('0x140')][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':'user_has_mail_accounts'});db['MailQueue'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x38')});db[_0xd58f('0x43')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':_0xd58f('0x171'),'as':_0xd58f('0x15c')});db['MailInteraction']['hasMany'](db[_0xd58f('0x48')],{'as':_0xd58f('0x16b'),'onDelete':'cascade','foreignKey':_0xd58f('0x172')});db[_0xd58f('0x46')]['belongsTo'](db[_0xd58f('0x140')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x164')});db[_0xd58f('0x46')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x46')][_0xd58f('0x128')](db['User'],{'as':'Owner','foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x46')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x176'),'as':_0xd58f('0x177')});db[_0xd58f('0x46')][_0xd58f('0x12d')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xd58f('0x178')});db[_0xd58f('0x46')][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x179'),'through':_0xd58f('0x130'),'foreignKey':_0xd58f('0x172')});db[_0xd58f('0x48')]['hasMany'](db['Attachment'],{'as':_0xd58f('0x17a'),'onDelete':_0xd58f('0x11a')});db['MailMessage'][_0xd58f('0x128')](db['User'],{'as':'User'});db[_0xd58f('0x48')][_0xd58f('0x128')](db['CmContact'],{'onDelete':_0xd58f('0x11a'),'as':'Contact'});db[_0xd58f('0x48')][_0xd58f('0x128')](db['MailInteraction'],{'as':_0xd58f('0x17b'),'foreignKey':_0xd58f('0x172')});db['MailMessage']['belongsTo'](db[_0xd58f('0x140')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x164')});db[_0xd58f('0x48')][_0xd58f('0x128')](db[_0xd58f('0x69')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db[_0xd58f('0x48')][_0xd58f('0x128')](db[_0xd58f('0x17c')],{'as':_0xd58f('0x17c'),'foreignKey':'ChatOfflineMessageId'});db[_0xd58f('0x4a')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x4a')]['belongsTo'](db[_0xd58f('0x43')],{'onDelete':'restrict'});db[_0xd58f('0x4a')]['belongsTo'](db['MailAccount'],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x4a')][_0xd58f('0x128')](db[_0xd58f('0x156')],{'onDelete':'restrict','foreignKey':_0xd58f('0x17d')});db['MailApplication']['belongsTo'](db[_0xd58f('0x8e')],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x17e')});db['MailQueueReport'][_0xd58f('0x128')](db[_0xd58f('0x140')],{});db[_0xd58f('0x4c')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':'List','foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x4c')]['belongsTo'](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db['MailQueueReport'][_0xd58f('0x128')](db[_0xd58f('0x46')],{});db['MailQueueReport'][_0xd58f('0x128')](db[_0xd58f('0x48')],{});db[_0xd58f('0x4c')]['belongsTo'](db[_0xd58f('0x12')],{});db[_0xd58f('0x4c')]['belongsTo'](db[_0xd58f('0x43')],{});db[_0xd58f('0x17f')][_0xd58f('0x11d')](db[_0xd58f('0x4e')],{'as':_0xd58f('0x180'),'onDelete':'cascade'});db['FaxAccount'][_0xd58f('0x11d')](db[_0xd58f('0x181')],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x182'),'onDelete':_0xd58f('0x11a')});db['FaxAccount'][_0xd58f('0x11d')](db['CannedAnswer'],{'as':_0xd58f('0x16a'),'foreignKey':_0xd58f('0x182')});db[_0xd58f('0x183')][_0xd58f('0x11d')](db[_0xd58f('0x53')],{'as':_0xd58f('0x16c')});db[_0xd58f('0x183')][_0xd58f('0x11d')](db[_0xd58f('0x51')],{'as':_0xd58f('0x14a')});db[_0xd58f('0x183')]['hasMany'](db[_0xd58f('0x19')],{'as':_0xd58f('0x184'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x183')][_0xd58f('0x11d')](db[_0xd58f('0x55')],{'as':_0xd58f('0x16b')});db[_0xd58f('0x183')]['belongsTo'](db[_0xd58f('0x30')],{'as':_0xd58f('0x30')});db[_0xd58f('0x183')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':'ListId'});db[_0xd58f('0x183')][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':_0xd58f('0x157'),'foreignKey':_0xd58f('0x158')});db['FaxAccount'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x185')});db[_0xd58f('0x51')]['belongsTo'](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x166')});db['FaxApplication'][_0xd58f('0x128')](db[_0xd58f('0x57')],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x51')][_0xd58f('0x128')](db['FaxAccount'],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x51')][_0xd58f('0x128')](db[_0xd58f('0x8e')],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x17e')});db[_0xd58f('0x53')][_0xd58f('0x11d')](db['FaxMessage'],{'as':_0xd58f('0x16b'),'onDelete':'cascade','foreignKey':_0xd58f('0x186')});db[_0xd58f('0x53')][_0xd58f('0x128')](db[_0xd58f('0x183')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x182')});db[_0xd58f('0x53')][_0xd58f('0x128')](db['CmContact'],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x53')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':'Owner','foreignKey':'UserId'});db[_0xd58f('0x53')]['belongsToMany'](db[_0xd58f('0x8e')],{'through':_0xd58f('0x187'),'as':'Tags'});db[_0xd58f('0x53')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x187'),'as':'ThroughTags'});db[_0xd58f('0x53')]['belongsToMany'](db[_0xd58f('0x12')],{'as':'Users','through':'user_has_fax_interactions','foreignKey':_0xd58f('0x186')});db[_0xd58f('0x55')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x11a'),'as':'User'});db[_0xd58f('0x55')][_0xd58f('0x128')](db['FaxInteraction'],{'as':_0xd58f('0x17b'),'foreignKey':_0xd58f('0x186')});db[_0xd58f('0x55')]['belongsTo'](db['CmContact'],{'onDelete':_0xd58f('0x11a'),'as':_0xd58f('0x174')});db[_0xd58f('0x55')][_0xd58f('0x128')](db[_0xd58f('0xee')],{'as':_0xd58f('0xee'),'foreignKey':_0xd58f('0x188')});db[_0xd58f('0x55')][_0xd58f('0x128')](db['FaxAccount'],{'as':'Account','foreignKey':_0xd58f('0x182')});db[_0xd58f('0x57')][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x3a')});db[_0xd58f('0x57')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':_0xd58f('0x189'),'as':_0xd58f('0x15c')});db[_0xd58f('0x59')][_0xd58f('0x128')](db[_0xd58f('0x183')],{});db[_0xd58f('0x59')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':'List','foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x59')][_0xd58f('0x128')](db['CmContact'],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x59')][_0xd58f('0x128')](db[_0xd58f('0x53')],{});db[_0xd58f('0x59')][_0xd58f('0x128')](db[_0xd58f('0x55')],{});db[_0xd58f('0x59')][_0xd58f('0x128')](db['User'],{});db[_0xd58f('0x59')][_0xd58f('0x128')](db['FaxQueue'],{});db[_0xd58f('0x144')]['hasMany'](db[_0xd58f('0x181')],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x18a'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x144')][_0xd58f('0x11d')](db[_0xd58f('0x82')],{'as':_0xd58f('0x16a'),'foreignKey':_0xd58f('0x18a')});db[_0xd58f('0x144')][_0xd58f('0x11d')](db[_0xd58f('0x5d')],{'as':'Messages','foreignKey':'SmsAccountId'});db['SmsAccount']['hasMany'](db[_0xd58f('0x5b')],{'as':_0xd58f('0x16c')});db[_0xd58f('0x144')][_0xd58f('0x11d')](db[_0xd58f('0x18b')],{'as':_0xd58f('0x14a')});db[_0xd58f('0x144')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x144')][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':'mandatoryDispositionPause','foreignKey':_0xd58f('0x158')});db['SmsAccount'][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x18c')});db[_0xd58f('0x18b')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':'restrict'});db[_0xd58f('0x18b')][_0xd58f('0x128')](db[_0xd58f('0x5f')],{'onDelete':_0xd58f('0x166')});db['SmsApplication'][_0xd58f('0x128')](db[_0xd58f('0x144')],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x18b')][_0xd58f('0x128')](db[_0xd58f('0x156')],{'onDelete':_0xd58f('0x166'),'foreignKey':'IntervalId'});db[_0xd58f('0x18b')]['belongsTo'](db[_0xd58f('0x8e')],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x17e')});db[_0xd58f('0x5b')]['hasMany'](db['SmsMessage'],{'as':_0xd58f('0x16b'),'onDelete':'cascade','foreignKey':'SmsInteractionId'});db[_0xd58f('0x5b')][_0xd58f('0x128')](db[_0xd58f('0x144')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x18a')});db[_0xd58f('0x5b')]['belongsTo'](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x5b')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':'Owner','foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x5b')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x18d'),'as':_0xd58f('0x177')});db[_0xd58f('0x5b')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x18d'),'as':'ThroughTags'});db['SmsInteraction']['belongsToMany'](db[_0xd58f('0x12')],{'as':_0xd58f('0x179'),'through':_0xd58f('0x133'),'foreignKey':_0xd58f('0x18e')});db[_0xd58f('0x5d')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':'User'});db['SmsMessage']['belongsTo'](db[_0xd58f('0x162')],{'onDelete':_0xd58f('0x11a'),'as':_0xd58f('0x174')});db[_0xd58f('0x5d')]['belongsTo'](db[_0xd58f('0x5b')],{'onDelete':'cascade','as':_0xd58f('0x17b'),'foreignKey':_0xd58f('0x18e')});db['SmsMessage'][_0xd58f('0x128')](db['SmsAccount'],{'as':_0xd58f('0x173'),'foreignKey':'SmsAccountId'});db[_0xd58f('0x5f')][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x3c'),'foreignKey':'SmsQueueId'});db[_0xd58f('0x5f')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':'team_has_sms_queues','as':_0xd58f('0x15c')});db[_0xd58f('0x61')][_0xd58f('0x11d')](db[_0xd58f('0x181')],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x18f'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x61')]['hasMany'](db['CannedAnswer'],{'as':_0xd58f('0x16a'),'foreignKey':_0xd58f('0x18f')});db['OpenchannelAccount'][_0xd58f('0x11d')](db[_0xd58f('0x63')],{'as':_0xd58f('0x16c'),'foreignKey':'OpenchannelAccountId'});db[_0xd58f('0x61')]['hasMany'](db[_0xd58f('0x65')],{'as':'Messages','foreignKey':_0xd58f('0x18f')});db['OpenchannelAccount'][_0xd58f('0x11d')](db['OpenchannelApplication'],{'as':'Applications','foreignKey':_0xd58f('0x18f')});db[_0xd58f('0x61')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':'ListId'});db[_0xd58f('0x61')][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':_0xd58f('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db['OpenchannelAccount'][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x190')});db['OpenchannelApplication'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x191')][_0xd58f('0x128')](db['OpenchannelQueue'],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x192')});db[_0xd58f('0x191')][_0xd58f('0x128')](db[_0xd58f('0x61')],{'onDelete':'restrict','foreignKey':_0xd58f('0x18f')});db[_0xd58f('0x191')][_0xd58f('0x128')](db['Interval'],{'onDelete':_0xd58f('0x166'),'foreignKey':'IntervalId'});db[_0xd58f('0x191')][_0xd58f('0x128')](db[_0xd58f('0x8e')],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x17e')});db[_0xd58f('0x63')][_0xd58f('0x11d')](db[_0xd58f('0x65')],{'as':_0xd58f('0x16b'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x193')});db['OpenchannelInteraction'][_0xd58f('0x128')](db['OpenchannelAccount'],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x18f')});db[_0xd58f('0x63')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':'ContactId'});db['OpenchannelInteraction']['belongsTo'](db[_0xd58f('0x12')],{'as':_0xd58f('0x194'),'foreignKey':'UserId'});db[_0xd58f('0x63')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x195'),'as':'Tags'});db[_0xd58f('0x63')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x195'),'as':_0xd58f('0x178')});db[_0xd58f('0x63')]['belongsToMany'](db[_0xd58f('0x12')],{'as':_0xd58f('0x179'),'through':_0xd58f('0x196'),'foreignKey':_0xd58f('0x193')});db[_0xd58f('0x65')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x11a'),'as':_0xd58f('0x12')});db['OpenchannelMessage'][_0xd58f('0x128')](db[_0xd58f('0x162')],{'onDelete':_0xd58f('0x11a'),'as':'Contact'});db['OpenchannelMessage']['belongsTo'](db[_0xd58f('0x63')],{'onDelete':_0xd58f('0x11a'),'as':'Interaction','foreignKey':_0xd58f('0x193')});db[_0xd58f('0x65')][_0xd58f('0x128')](db['Attachment'],{'as':_0xd58f('0xee'),'foreignKey':'AttachmentId'});db['OpenchannelMessage'][_0xd58f('0x128')](db[_0xd58f('0x61')],{'as':_0xd58f('0x173'),'foreignKey':'OpenchannelAccountId'});db[_0xd58f('0x67')][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x13b'),'foreignKey':_0xd58f('0x192')});db[_0xd58f('0x67')][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':'team_has_openchannel_queues','as':_0xd58f('0x15c')});db[_0xd58f('0x69')]['hasMany'](db[_0xd58f('0x181')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0xd58f('0x11a')});db[_0xd58f('0x69')]['hasMany'](db[_0xd58f('0x82')],{'as':'Answers','foreignKey':_0xd58f('0x197')});db[_0xd58f('0x69')][_0xd58f('0x11d')](db[_0xd58f('0x74')],{'as':_0xd58f('0x198')});db[_0xd58f('0x69')][_0xd58f('0x11d')](db[_0xd58f('0x6d')],{'as':_0xd58f('0x16c')});db[_0xd58f('0x69')][_0xd58f('0x11d')](db[_0xd58f('0x199')],{'as':_0xd58f('0x14a')});db[_0xd58f('0x69')][_0xd58f('0x11d')](db[_0xd58f('0x6f')],{'as':_0xd58f('0x16b')});db[_0xd58f('0x69')]['belongsTo'](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x69')]['belongsTo'](db[_0xd58f('0x156')],{'as':_0xd58f('0x156'),'foreignKey':_0xd58f('0x17d')});db[_0xd58f('0x69')][_0xd58f('0x128')](db['MailAccount'],{'as':_0xd58f('0x140'),'foreignKey':'MailAccountId'});db['ChatWebsite'][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':_0xd58f('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db['ChatWebsite'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x13e')});db[_0xd58f('0x19a')]['belongsTo'](db['OpenchannelAccount'],{});db[_0xd58f('0x19a')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':'List','foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x19a')]['belongsTo'](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x19a')][_0xd58f('0x128')](db[_0xd58f('0x63')],{});db[_0xd58f('0x19a')][_0xd58f('0x128')](db[_0xd58f('0x65')],{});db[_0xd58f('0x19a')][_0xd58f('0x128')](db[_0xd58f('0x12')],{});db[_0xd58f('0x19a')][_0xd58f('0x128')](db['OpenchannelQueue'],{});db[_0xd58f('0x199')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':'Agent','foreignKey':_0xd58f('0x11b'),'onDelete':'restrict'});db[_0xd58f('0x199')][_0xd58f('0x128')](db[_0xd58f('0x138')],{'as':_0xd58f('0x19b'),'foreignKey':_0xd58f('0x19c'),'onDelete':'restrict'});db[_0xd58f('0x199')]['belongsTo'](db[_0xd58f('0x69')],{'as':_0xd58f('0x19d'),'foreignKey':_0xd58f('0x197'),'onDelete':_0xd58f('0x166')});db[_0xd58f('0x199')][_0xd58f('0x128')](db['Tag'],{'onDelete':_0xd58f('0x166'),'foreignKey':'TagId'});db['ChatInteraction'][_0xd58f('0x11d')](db[_0xd58f('0x6f')],{'as':_0xd58f('0x16b'),'onDelete':_0xd58f('0x11a'),'foreignKey':'ChatInteractionId'});db[_0xd58f('0x6d')]['belongsTo'](db[_0xd58f('0x69')],{'as':'Account','foreignKey':_0xd58f('0x197')});db[_0xd58f('0x6d')]['belongsTo'](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x6d')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':_0xd58f('0x194'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x6d')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x19e'),'as':_0xd58f('0x177')});db[_0xd58f('0x6d')]['belongsToMany'](db[_0xd58f('0x8e')],{'through':'chat_interaction_has_tags','as':_0xd58f('0x178')});db[_0xd58f('0x6d')]['belongsToMany'](db[_0xd58f('0x12')],{'as':_0xd58f('0x179'),'through':'user_has_chat_interactions','foreignKey':_0xd58f('0x19f')});db[_0xd58f('0x6f')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x11a'),'as':_0xd58f('0x12')});db[_0xd58f('0x6f')]['belongsTo'](db[_0xd58f('0x162')],{'onDelete':_0xd58f('0x11a'),'as':'Contact','foreignKey':_0xd58f('0x175')});db[_0xd58f('0x6f')][_0xd58f('0x128')](db[_0xd58f('0x6d')],{'onDelete':_0xd58f('0x11a'),'as':_0xd58f('0x17b'),'foreignKey':'ChatInteractionId'});db[_0xd58f('0x6f')][_0xd58f('0x128')](db[_0xd58f('0xee')],{'as':'Attachment','foreignKey':_0xd58f('0x188')});db[_0xd58f('0x6f')][_0xd58f('0x128')](db[_0xd58f('0x69')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x197')});db[_0xd58f('0x17c')][_0xd58f('0x11d')](db[_0xd58f('0xee')],{'as':'Attachments','foreignKey':_0xd58f('0x1a0'),'onDelete':_0xd58f('0x11a'),'hooks':!![]});db[_0xd58f('0x17c')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'onDelete':_0xd58f('0x11a'),'as':'Contact','foreignKey':_0xd58f('0x175')});db['ChatOfflineMessage'][_0xd58f('0x128')](db[_0xd58f('0x69')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x197')});db['ChatQueue']['belongsToMany'](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x36'),'hooks':!![]});db['ChatQueue'][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':_0xd58f('0x1a1'),'as':'Teams'});db[_0xd58f('0x72')][_0xd58f('0x11d')](db[_0xd58f('0xd5')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':_0xd58f('0x11a')});db[_0xd58f('0x72')][_0xd58f('0x12d')](db['User'],{'as':'Members','through':_0xd58f('0x1a2')});db['ChatProactiveAction']['belongsTo'](db[_0xd58f('0x69')],{'as':_0xd58f('0x19d'),'foreignKey':_0xd58f('0x197')});db[_0xd58f('0x76')]['hasMany'](db[_0xd58f('0x162')],{'as':_0xd58f('0x12b'),'foreignKey':_0xd58f('0x1a3')});db['CmContact'][_0xd58f('0x11d')](db['CmContactHasItem'],{'as':_0xd58f('0x1a4'),'foreignKey':_0xd58f('0x1a5')});db[_0xd58f('0x162')][_0xd58f('0x11d')](db[_0xd58f('0x14d')],{'as':_0xd58f('0x14e'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0x162')][_0xd58f('0x11d')](db[_0xd58f('0x7b')],{'as':'HopperFinals','foreignKey':_0xd58f('0x175')});db['CmContact'][_0xd58f('0x11d')](db[_0xd58f('0x7d')],{'as':_0xd58f('0x1a6'),'foreignKey':_0xd58f('0x175')});db['CmContact']['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xd58f('0x175')});db['CmContact'][_0xd58f('0x11d')](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':_0xd58f('0x175')});db['CmContact'][_0xd58f('0x11d')](db[_0xd58f('0x63')],{'as':'OpenchannelInteractions','foreignKey':_0xd58f('0x175'),'onDelete':'restrict'});db[_0xd58f('0x162')][_0xd58f('0x11d')](db['ChatInteraction'],{'as':_0xd58f('0x123'),'foreignKey':'ContactId','onDelete':_0xd58f('0x166')});db[_0xd58f('0x162')]['hasMany'](db['SmsInteraction'],{'as':_0xd58f('0x124'),'foreignKey':_0xd58f('0x175'),'onDelete':_0xd58f('0x166')});db[_0xd58f('0x162')][_0xd58f('0x11d')](db['FaxInteraction'],{'as':_0xd58f('0x125'),'foreignKey':_0xd58f('0x175'),'onDelete':'restrict'});db[_0xd58f('0x162')][_0xd58f('0x11d')](db[_0xd58f('0x46')],{'as':_0xd58f('0x12f'),'foreignKey':_0xd58f('0x175'),'onDelete':_0xd58f('0x166')});db[_0xd58f('0x162')]['belongsTo'](db['CmCompany'],{'as':'Company','foreignKey':_0xd58f('0x1a3')});db[_0xd58f('0x162')][_0xd58f('0x128')](db['CmList'],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x162')]['belongsToMany'](db['User'],{'as':_0xd58f('0x179'),'through':'cm_user_has_contacts'});db[_0xd58f('0x162')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'as':_0xd58f('0x177'),'through':_0xd58f('0x1a7')});db[_0xd58f('0x162')]['belongsToMany'](db[_0xd58f('0x8e')],{'through':'cm_contact_has_tags','as':_0xd58f('0x178')});db['CmHopper'][_0xd58f('0x11d')](db[_0xd58f('0x92')],{'as':'AdditionalPhones','foreignKey':_0xd58f('0x1a8')});db[_0xd58f('0x14d')]['belongsTo'](db['CmContact'],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175'),'onDelete':_0xd58f('0x11a')});db['CmHopper'][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x14d')][_0xd58f('0x128')](db['User'],{'as':_0xd58f('0x1a9'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x14d')]['belongsTo'](db['VoiceQueue'],{'as':_0xd58f('0x19b'),'foreignKey':_0xd58f('0x14f'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x14d')][_0xd58f('0x128')](db['Campaign'],{'as':_0xd58f('0xea'),'foreignKey':'CampaignId','onDelete':_0xd58f('0x11a')});db[_0xd58f('0x14d')][_0xd58f('0x128')](db['User'],{'as':'Owner','foreignKey':_0xd58f('0x1aa')});db[_0xd58f('0x79')]['belongsTo'](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175'),'onDelete':'cascade'});db[_0xd58f('0x79')][_0xd58f('0x128')](db['CmList'],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e'),'onDelete':_0xd58f('0x11a')});db['CmHopperBlack'][_0xd58f('0x128')](db[_0xd58f('0x135')],{'as':'Queue','foreignKey':_0xd58f('0x14f'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x79')]['belongsTo'](db[_0xd58f('0xea')],{'as':_0xd58f('0xea'),'foreignKey':_0xd58f('0x1ab'),'onDelete':'cascade'});db[_0xd58f('0x80')][_0xd58f('0x11d')](db['Condition'],{'as':{'plural':'All','singular':_0xd58f('0x1ac')},'foreignKey':_0xd58f('0x1ad'),'onDelete':_0xd58f('0x11a'),'hooks':!![]});db['Automation']['hasMany'](db[_0xd58f('0x85')],{'as':{'plural':_0xd58f('0x1ae'),'singular':_0xd58f('0x1af')},'foreignKey':_0xd58f('0x1b0'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0xd58f('0x11d')](db[_0xd58f('0x1b1')],{'as':_0xd58f('0x1b2'),'foreignKey':_0xd58f('0x1b3'),'onDelete':'cascade','hooks':!![]});db['Disposition'][_0xd58f('0x11d')](db['Disposition'],{'as':_0xd58f('0x169'),'foreignKey':'ParentId','onDelete':_0xd58f('0x11a')});db[_0xd58f('0x156')][_0xd58f('0x11d')](db[_0xd58f('0x156')],{'as':_0xd58f('0x1b4'),'foreignKey':_0xd58f('0x17d'),'onDelete':_0xd58f('0x11a'),'hooks':!![],'required':![]});db['Interval']['hasMany'](db[_0xd58f('0x19')],{'as':'Extensions','foreignKey':_0xd58f('0x17d'),'onDelete':_0xd58f('0x166')});db[_0xd58f('0x156')]['hasMany'](db[_0xd58f('0x4a')],{'as':_0xd58f('0x1b5'),'foreignKey':_0xd58f('0x17d')});db[_0xd58f('0x156')][_0xd58f('0x11d')](db['ChatApplication'],{'as':_0xd58f('0x1b6'),'foreignKey':_0xd58f('0x17d')});db[_0xd58f('0x156')][_0xd58f('0x11d')](db[_0xd58f('0x51')],{'as':_0xd58f('0x1b7'),'foreignKey':'IntervalId'});db[_0xd58f('0x156')][_0xd58f('0x11d')](db[_0xd58f('0x18b')],{'as':'SmsApplications','foreignKey':_0xd58f('0x17d')});db[_0xd58f('0x1b8')][_0xd58f('0x128')](db[_0xd58f('0x140')],{});db[_0xd58f('0x1b8')][_0xd58f('0x128')](db[_0xd58f('0x9e')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0xd58f('0x128')](db['AnalyticCustomReport'],{'foreignKey':'CustomReportId'});db['Sound'][_0xd58f('0x12d')](db[_0xd58f('0x1b')],{'as':_0xd58f('0x1b9'),'through':'moh_has_sounds','onDelete':_0xd58f('0x166')});db[_0xd58f('0x8e')][_0xd58f('0x12d')](db[_0xd58f('0x162')],{'through':_0xd58f('0x1a7')});db[_0xd58f('0x8e')]['belongsToMany'](db['ChatInteraction'],{'through':'chat_interaction_has_tags'});db['Tag'][_0xd58f('0x12d')](db[_0xd58f('0x46')],{'through':_0xd58f('0x176')});db[_0xd58f('0x8e')][_0xd58f('0x12d')](db[_0xd58f('0x5b')],{'through':'sms_interaction_has_tags'});db['Tag'][_0xd58f('0x12d')](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db[_0xd58f('0x8e')][_0xd58f('0x12d')](db[_0xd58f('0x63')],{'through':_0xd58f('0x195')});db[_0xd58f('0x8e')][_0xd58f('0x12d')](db[_0xd58f('0x108')],{'through':_0xd58f('0x1ba')});db['CmContactHasItem'][_0xd58f('0x128')](db[_0xd58f('0x90')],{'as':'ItemType','foreignKey':'ItemTypeId'});db['CmHopperAdditionalPhone']['belongsTo'](db[_0xd58f('0x14d')],{'as':_0xd58f('0x1bb'),'foreignKey':_0xd58f('0x1a8')});db[_0xd58f('0x91')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x1a5')});db[_0xd58f('0x94')][_0xd58f('0x11d')](db[_0xd58f('0x85')],{'as':{'plural':'AllConditions','singular':_0xd58f('0x1bc')},'foreignKey':'TriggerAllId','onDelete':_0xd58f('0x11a'),'hooks':!![]});db['Trigger']['hasMany'](db[_0xd58f('0x85')],{'as':{'plural':_0xd58f('0x1bd'),'singular':_0xd58f('0x1be')},'foreignKey':'TriggerAnyId','onDelete':'cascade','hooks':!![]});db[_0xd58f('0x94')][_0xd58f('0x11d')](db[_0xd58f('0x1b1')],{'as':_0xd58f('0x1b2'),'foreignKey':_0xd58f('0x1bf'),'onDelete':_0xd58f('0x11a'),'hooks':!![]});db['AnalyticCustomReport'][_0xd58f('0x11d')](db['AnalyticFieldReport'],{'as':_0xd58f('0x1c0'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c1'),'hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db['AnalyticFieldReport'],{'as':_0xd58f('0x1c0'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c2')});db[_0xd58f('0xa2')][_0xd58f('0x11d')](db[_0xd58f('0xa3')],{'as':'Fields','onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c3')});db[_0xd58f('0xa3')][_0xd58f('0x128')](db[_0xd58f('0xa2')],{'foreignKey':_0xd58f('0x1c3')});db[_0xd58f('0xa7')][_0xd58f('0x11d')](db[_0xd58f('0xa8')],{'as':'Configurations','onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xa8')][_0xd58f('0x11d')](db['SalesforceField'],{'as':_0xd58f('0x1c5'),'onDelete':_0xd58f('0x11a'),'foreignKey':'SubjectId'});db[_0xd58f('0xa8')][_0xd58f('0x11d')](db['SalesforceField'],{'as':_0xd58f('0x1c6'),'onDelete':_0xd58f('0x11a'),'foreignKey':'DescriptionId'});db[_0xd58f('0xa8')]['hasMany'](db[_0xd58f('0xaa')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xa8')][_0xd58f('0x128')](db[_0xd58f('0xa7')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xaa')][_0xd58f('0x11d')](db[_0xd58f('0xaa')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xd58f('0xaa')]['hasMany'](db[_0xd58f('0xaa')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db['SalesforceField'][_0xd58f('0x11d')](db['SalesforceField'],{'as':'Field','foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xaa')][_0xd58f('0x128')](db['Variable'],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db[_0xd58f('0xac')][_0xd58f('0x11d')](db[_0xd58f('0x1cb')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0x1cb')][_0xd58f('0x11d')](db['SugarcrmField'],{'as':_0xd58f('0x1c5'),'onDelete':_0xd58f('0x11a'),'foreignKey':'SubjectId'});db[_0xd58f('0x1cb')][_0xd58f('0x11d')](db[_0xd58f('0xaf')],{'as':_0xd58f('0x1c6'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c9')});db['SugarcrmConfiguration']['hasMany'](db[_0xd58f('0xaf')],{'as':_0xd58f('0x1c0'),'onDelete':_0xd58f('0x11a'),'foreignKey':'FieldId'});db[_0xd58f('0x1cb')]['belongsTo'](db[_0xd58f('0xac')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xaf')][_0xd58f('0x11d')](db[_0xd58f('0xaf')],{'as':_0xd58f('0x1cc'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xaf')][_0xd58f('0x11d')](db['SugarcrmField'],{'as':_0xd58f('0x1c8'),'foreignKey':'DescriptionId'});db[_0xd58f('0xaf')][_0xd58f('0x11d')](db[_0xd58f('0xaf')],{'as':'Field','foreignKey':_0xd58f('0x1c7')});db['SugarcrmField'][_0xd58f('0x128')](db['Variable'],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db[_0xd58f('0xb0')][_0xd58f('0x11d')](db[_0xd58f('0x1ce')],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0x1ce')][_0xd58f('0x11d')](db[_0xd58f('0xb2')],{'as':'Subjects','onDelete':_0xd58f('0x11a'),'foreignKey':'SubjectId'});db[_0xd58f('0x1ce')]['hasMany'](db['DeskField'],{'as':_0xd58f('0x1c6'),'onDelete':_0xd58f('0x11a'),'foreignKey':'DescriptionId'});db[_0xd58f('0x1ce')][_0xd58f('0x11d')](db[_0xd58f('0xb2')],{'as':'Fields','onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0x1ce')]['belongsTo'](db[_0xd58f('0xb0')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0x1ce')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x1d0')});db[_0xd58f('0xb2')][_0xd58f('0x11d')](db['DeskField'],{'as':'Subject','foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xb2')][_0xd58f('0x11d')](db['DeskField'],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xb2')][_0xd58f('0x11d')](db[_0xd58f('0xb2')],{'as':_0xd58f('0x1d1'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xb2')][_0xd58f('0x128')](db[_0xd58f('0x96')],{'as':'Variable','foreignKey':_0xd58f('0x1ca')});db[_0xd58f('0xb4')]['hasMany'](db[_0xd58f('0x1d2')],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c4')});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0xd58f('0x1c5'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0x1d2')][_0xd58f('0x11d')](db[_0xd58f('0xb5')],{'as':_0xd58f('0x1c6'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0x1d2')][_0xd58f('0x11d')](db[_0xd58f('0xb5')],{'as':_0xd58f('0x1c0'),'onDelete':_0xd58f('0x11a'),'foreignKey':'FieldId'});db[_0xd58f('0x1d2')][_0xd58f('0x128')](db[_0xd58f('0xb4')],{'as':'Account','foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xb5')][_0xd58f('0x11d')](db[_0xd58f('0xb5')],{'as':_0xd58f('0x1cc'),'foreignKey':'SubjectId'});db[_0xd58f('0xb5')][_0xd58f('0x11d')](db[_0xd58f('0xb5')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xb5')]['hasMany'](db[_0xd58f('0xb5')],{'as':_0xd58f('0x1d1'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xb5')][_0xd58f('0x128')](db[_0xd58f('0x96')],{'as':_0xd58f('0x96'),'foreignKey':'VariableId'});db[_0xd58f('0xb7')][_0xd58f('0x11d')](db[_0xd58f('0x1d3')],{'as':_0xd58f('0x1cf'),'onDelete':'cascade','foreignKey':_0xd58f('0x1c4')});db['ZendeskConfiguration'][_0xd58f('0x11d')](db[_0xd58f('0x1d4')],{'as':_0xd58f('0x1c5'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0x1d3')][_0xd58f('0x11d')](db[_0xd58f('0x1d4')],{'as':_0xd58f('0x1c6'),'foreignKey':_0xd58f('0x1c9')});db['ZendeskConfiguration']['hasMany'](db['ZendeskField'],{'as':_0xd58f('0x1c0'),'foreignKey':'FieldId'});db[_0xd58f('0x1d3')]['belongsTo'](db[_0xd58f('0xb7')],{'as':'Account','foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0x1d3')]['belongsToMany'](db[_0xd58f('0x8e')],{'through':_0xd58f('0x1d5')});db[_0xd58f('0x1d4')][_0xd58f('0x11d')](db[_0xd58f('0x1d4')],{'as':_0xd58f('0x1cc'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0x1d4')]['hasMany'](db[_0xd58f('0x1d4')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0x1d4')][_0xd58f('0x11d')](db['ZendeskField'],{'as':_0xd58f('0x1d1'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0x1d4')][_0xd58f('0x128')](db[_0xd58f('0x96')],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db['FreshdeskAccount'][_0xd58f('0x11d')](db[_0xd58f('0xbb')],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':'AccountId'});db[_0xd58f('0xbb')]['hasMany'](db[_0xd58f('0xbd')],{'as':_0xd58f('0x1c5'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xbb')][_0xd58f('0x11d')](db[_0xd58f('0xbd')],{'as':'Descriptions','onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xbb')][_0xd58f('0x11d')](db[_0xd58f('0xbd')],{'as':_0xd58f('0x1c0'),'onDelete':'cascade','foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xbb')][_0xd58f('0x128')](db['FreshdeskAccount'],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db['FreshdeskConfiguration']['belongsToMany'](db['Tag'],{'through':_0xd58f('0x1d6')});db[_0xd58f('0xbd')][_0xd58f('0x11d')](db[_0xd58f('0xbd')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xd58f('0xbd')][_0xd58f('0x11d')](db[_0xd58f('0xbd')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xbd')]['hasMany'](db['FreshdeskField'],{'as':'Field','foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xbd')][_0xd58f('0x128')](db[_0xd58f('0x96')],{'as':'Variable','foreignKey':_0xd58f('0x1ca')});db['VtigerAccount'][_0xd58f('0x11d')](db['VtigerConfiguration'],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xbf')]['hasMany'](db[_0xd58f('0xc1')],{'as':'Subjects','foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xbf')][_0xd58f('0x11d')](db[_0xd58f('0xc1')],{'as':_0xd58f('0x1c6'),'foreignKey':'DescriptionId'});db[_0xd58f('0xbf')][_0xd58f('0x11d')](db[_0xd58f('0xc1')],{'as':_0xd58f('0x1c0'),'foreignKey':'FieldId'});db['VtigerConfiguration']['belongsTo'](db[_0xd58f('0xbe')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xc1')][_0xd58f('0x11d')](db['VtigerField'],{'as':'Subject','foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xc1')][_0xd58f('0x11d')](db[_0xd58f('0xc1')],{'as':'Description','foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xc1')][_0xd58f('0x11d')](db[_0xd58f('0xc1')],{'as':'Field','foreignKey':'FieldId'});db[_0xd58f('0xc1')][_0xd58f('0x128')](db['Variable'],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db[_0xd58f('0xc2')][_0xd58f('0x11d')](db[_0xd58f('0x1d7')],{'as':_0xd58f('0x1cf'),'onDelete':'cascade','foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0x1d7')][_0xd58f('0x11d')](db[_0xd58f('0xc5')],{'as':_0xd58f('0x1c5'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0x1d7')][_0xd58f('0x11d')](db[_0xd58f('0xc5')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xd58f('0x1d7')][_0xd58f('0x11d')](db[_0xd58f('0xc5')],{'as':_0xd58f('0x1c0'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0x1d7')]['belongsTo'](db[_0xd58f('0xc2')],{'as':'Account','foreignKey':_0xd58f('0x1c4')});db['ServicenowField'][_0xd58f('0x11d')](db['ServicenowField'],{'as':_0xd58f('0x1cc'),'foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xc5')][_0xd58f('0x11d')](db[_0xd58f('0xc5')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0xc5')][_0xd58f('0x11d')](db['ServicenowField'],{'as':_0xd58f('0x1d1'),'foreignKey':'FieldId'});db[_0xd58f('0xc5')][_0xd58f('0x128')](db[_0xd58f('0x96')],{'as':'Variable','foreignKey':_0xd58f('0x1ca')});db['Dynamics365Account']['hasMany'](db[_0xd58f('0x1d8')],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':'AccountId'});db[_0xd58f('0xc7')][_0xd58f('0x128')](db[_0xd58f('0x10f')],{'as':_0xd58f('0x10f'),'foreignKey':_0xd58f('0x165')});db['Dynamics365Configuration'][_0xd58f('0x11d')](db[_0xd58f('0xc9')],{'as':_0xd58f('0x1c5'),'onDelete':'cascade','foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0x1d8')][_0xd58f('0x11d')](db[_0xd58f('0xc9')],{'as':_0xd58f('0x1c6'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c9')});db[_0xd58f('0x1d8')]['hasMany'](db[_0xd58f('0xc9')],{'as':_0xd58f('0x1c0'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0x1d8')][_0xd58f('0x128')](db[_0xd58f('0xc7')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xc9')]['hasMany'](db[_0xd58f('0xc9')],{'as':'Subject','foreignKey':_0xd58f('0x1cd')});db[_0xd58f('0xc9')][_0xd58f('0x11d')](db[_0xd58f('0xc9')],{'as':_0xd58f('0x1c8'),'foreignKey':_0xd58f('0x1c9')});db['Dynamics365Field'][_0xd58f('0x11d')](db[_0xd58f('0xc9')],{'as':_0xd58f('0x1d1'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xc9')][_0xd58f('0x128')](db['Variable'],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db['FreshsalesAccount'][_0xd58f('0x11d')](db[_0xd58f('0xcd')],{'as':_0xd58f('0x1cf'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1c4')});db['FreshsalesConfiguration']['hasMany'](db[_0xd58f('0xcf')],{'as':_0xd58f('0x1c5'),'foreignKey':'SubjectId'});db[_0xd58f('0xcd')][_0xd58f('0x11d')](db[_0xd58f('0xcf')],{'as':'Descriptions','foreignKey':_0xd58f('0x1c9')});db['FreshsalesConfiguration'][_0xd58f('0x11d')](db[_0xd58f('0xcf')],{'as':_0xd58f('0x1c0'),'foreignKey':_0xd58f('0x1c7')});db[_0xd58f('0xcd')][_0xd58f('0x128')](db[_0xd58f('0xcb')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x1c4')});db[_0xd58f('0xcf')][_0xd58f('0x11d')](db['FreshsalesField'],{'as':_0xd58f('0x1cc'),'foreignKey':'SubjectId'});db[_0xd58f('0xcf')][_0xd58f('0x11d')](db[_0xd58f('0xcf')],{'as':_0xd58f('0x1c8'),'foreignKey':'DescriptionId'});db[_0xd58f('0xcf')][_0xd58f('0x11d')](db[_0xd58f('0xcf')],{'as':_0xd58f('0x1d1'),'foreignKey':_0xd58f('0x1c7')});db['FreshsalesField']['belongsTo'](db[_0xd58f('0x96')],{'as':_0xd58f('0x96'),'foreignKey':_0xd58f('0x1ca')});db[_0xd58f('0xd3')][_0xd58f('0x128')](db['ChatWebsite'],{});db[_0xd58f('0xd3')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0xd3')][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db[_0xd58f('0xd3')]['belongsTo'](db[_0xd58f('0x6d')],{});db[_0xd58f('0xd3')][_0xd58f('0x128')](db[_0xd58f('0x6f')],{});db['ChatQueueReport']['belongsTo'](db[_0xd58f('0x12')],{});db['ChatQueueReport'][_0xd58f('0x128')](db[_0xd58f('0x138')],{});db[_0xd58f('0xd5')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1d9')});db[_0xd58f('0xd5')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x1da')});db['JscriptySessionReport'][_0xd58f('0x11d')](db[_0xd58f('0xd9')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xd58f('0x152')][_0xd58f('0x11d')](db[_0xd58f('0xd7')],{'foreignKey':_0xd58f('0x1db'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0xdc')]['belongsTo'](db['SmsAccount'],{});db[_0xd58f('0xdc')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db['SmsQueueReport'][_0xd58f('0x128')](db[_0xd58f('0x162')],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db['SmsQueueReport'][_0xd58f('0x128')](db['SmsInteraction'],{});db[_0xd58f('0xdc')]['belongsTo'](db[_0xd58f('0x5d')],{});db['SmsQueueReport']['belongsTo'](db[_0xd58f('0x12')],{});db[_0xd58f('0xdc')][_0xd58f('0x128')](db[_0xd58f('0x5f')],{});db['JscriptyProject'][_0xd58f('0x11d')](db['JscriptySessionReport'],{'foreignKey':_0xd58f('0x1dc')});db['JscriptyProject']['hasMany'](db[_0xd58f('0xd9')],{'foreignKey':_0xd58f('0x1dc')});db[_0xd58f('0xde')][_0xd58f('0x11d')](db[_0xd58f('0xd7')],{'foreignKey':_0xd58f('0x1dc')});db['Team'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':'Agents','through':_0xd58f('0x1dd')});db[_0xd58f('0xe7')]['belongsToMany'](db[_0xd58f('0x135')],{'through':'TeamVoiceQueue','as':_0xd58f('0x136')});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0x43')],{'through':_0xd58f('0x171'),'as':'MailQueues'});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0x138')],{'through':'team_has_chat_queues','as':'ChatQueues'});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0x57')],{'through':_0xd58f('0x189'),'as':_0xd58f('0x1de')});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0x5f')],{'through':_0xd58f('0x1df'),'as':_0xd58f('0x1e0')});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0x67')],{'through':'team_has_openchannel_queues','as':_0xd58f('0x13a')});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db['WhatsappQueue'],{'through':_0xd58f('0x1e1'),'as':_0xd58f('0x13c')});db[_0xd58f('0xe7')][_0xd58f('0x12d')](db[_0xd58f('0xfd')],{'through':_0xd58f('0x112'),'as':_0xd58f('0x1e2')});db[_0xd58f('0xea')][_0xd58f('0x11d')](db[_0xd58f('0x14d')],{'as':'Hoppers','foreignKey':_0xd58f('0x1ab')});db[_0xd58f('0xea')][_0xd58f('0x11d')](db['CmHopperFinal'],{'as':_0xd58f('0x120'),'foreignKey':'CampaignId'});db[_0xd58f('0xea')]['hasMany'](db[_0xd58f('0x7d')],{'as':_0xd58f('0x1a6'),'foreignKey':_0xd58f('0x1ab')});db['Campaign'][_0xd58f('0x11d')](db['CmHopperBlack'],{'as':_0xd58f('0x151'),'foreignKey':_0xd58f('0x1ab')});db[_0xd58f('0xea')][_0xd58f('0x128')](db[_0xd58f('0x30')],{'as':_0xd58f('0x30'),'foreignKey':'TrunkId'});db['Campaign'][_0xd58f('0x128')](db[_0xd58f('0x30')],{'as':_0xd58f('0x154'),'foreignKey':_0xd58f('0x155')});db[_0xd58f('0xea')][_0xd58f('0x128')](db['Interval'],{'as':_0xd58f('0x156'),'foreignKey':_0xd58f('0x17d')});db['Campaign'][_0xd58f('0x128')](db[_0xd58f('0xe2')],{'as':'SquareProject','foreignKey':_0xd58f('0x1e3')});db['Campaign'][_0xd58f('0x12d')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x159'),'through':_0xd58f('0x1e4')});db[_0xd58f('0xea')][_0xd58f('0x12d')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x1e5'),'through':_0xd58f('0x1e6')});db[_0xd58f('0xee')][_0xd58f('0x128')](db['ChatOfflineMessage'],{'as':_0xd58f('0x17c'),'foreignKey':_0xd58f('0x1a0')});db['MailTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x48')],{});db[_0xd58f('0xf2')][_0xd58f('0x128')](db[_0xd58f('0x46')],{});db[_0xd58f('0xf2')][_0xd58f('0x128')](db[_0xd58f('0x140')],{'foreignKey':_0xd58f('0x1e7'),'as':'FromAccount'});db['MailTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1e8'),'as':_0xd58f('0x1e9')});db[_0xd58f('0xf2')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1ea'),'as':_0xd58f('0x1eb')});db[_0xd58f('0xf2')][_0xd58f('0x128')](db[_0xd58f('0x43')],{'foreignKey':_0xd58f('0x1ec'),'as':'ToQueue'});db[_0xd58f('0xf2')][_0xd58f('0x128')](db[_0xd58f('0x140')],{'foreignKey':_0xd58f('0x1ed'),'as':_0xd58f('0x1ee')});db[_0xd58f('0xf4')]['belongsTo'](db[_0xd58f('0x6f')],{});db[_0xd58f('0xf4')][_0xd58f('0x128')](db['ChatInteraction'],{});db[_0xd58f('0xf4')][_0xd58f('0x128')](db['ChatWebsite'],{'foreignKey':_0xd58f('0x1ef'),'as':'FromAccount'});db['ChatTransferReport']['belongsTo'](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1e8'),'as':_0xd58f('0x1e9')});db['ChatTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1ea'),'as':_0xd58f('0x1eb')});db['ChatTransferReport'][_0xd58f('0x128')](db['ChatQueue'],{'foreignKey':_0xd58f('0x1f0'),'as':_0xd58f('0x1f1')});db['ChatTransferReport']['belongsTo'](db[_0xd58f('0x69')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db[_0xd58f('0xf6')][_0xd58f('0x128')](db[_0xd58f('0x55')],{});db[_0xd58f('0xf6')]['belongsTo'](db['FaxInteraction'],{});db[_0xd58f('0xf6')][_0xd58f('0x128')](db['FaxAccount'],{'foreignKey':'FromFaxAccountId','as':'FromAccount'});db[_0xd58f('0xf6')][_0xd58f('0x128')](db['User'],{'foreignKey':_0xd58f('0x1e8'),'as':_0xd58f('0x1e9')});db[_0xd58f('0xf6')][_0xd58f('0x128')](db['User'],{'foreignKey':_0xd58f('0x1ea'),'as':'ToAgent'});db['FaxTransferReport'][_0xd58f('0x128')](db['FaxQueue'],{'foreignKey':_0xd58f('0x1f2'),'as':_0xd58f('0x1f1')});db[_0xd58f('0xf6')][_0xd58f('0x128')](db[_0xd58f('0x183')],{'foreignKey':_0xd58f('0x1f3'),'as':_0xd58f('0x1ee')});db[_0xd58f('0xf8')][_0xd58f('0x128')](db[_0xd58f('0x65')],{});db['OpenchannelTransferReport'][_0xd58f('0x128')](db['OpenchannelInteraction'],{});db[_0xd58f('0xf8')][_0xd58f('0x128')](db['OpenchannelAccount'],{'foreignKey':_0xd58f('0x1f4'),'as':_0xd58f('0x1f5')});db['OpenchannelTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1e8'),'as':_0xd58f('0x1e9')});db[_0xd58f('0xf8')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':_0xd58f('0x1ea'),'as':_0xd58f('0x1eb')});db[_0xd58f('0xf8')][_0xd58f('0x128')](db[_0xd58f('0x67')],{'foreignKey':_0xd58f('0x1f6'),'as':'ToQueue'});db[_0xd58f('0xf8')]['belongsTo'](db[_0xd58f('0x61')],{'foreignKey':_0xd58f('0x1f7'),'as':_0xd58f('0x1ee')});db[_0xd58f('0x1f8')][_0xd58f('0x128')](db[_0xd58f('0x5d')],{});db[_0xd58f('0x1f8')]['belongsTo'](db[_0xd58f('0x5b')],{});db[_0xd58f('0x1f8')][_0xd58f('0x128')](db[_0xd58f('0x144')],{'foreignKey':_0xd58f('0x1f9'),'as':_0xd58f('0x1f5')});db[_0xd58f('0x1f8')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd58f('0x1f8')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':'ToUserId','as':_0xd58f('0x1eb')});db[_0xd58f('0x1f8')][_0xd58f('0x128')](db[_0xd58f('0x5f')],{'foreignKey':_0xd58f('0x1fa'),'as':_0xd58f('0x1f1')});db['SmsTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x144')],{'foreignKey':'ToSmsAccountId','as':_0xd58f('0x1ee')});db['CmList']['hasMany'](db[_0xd58f('0x181')],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x16e'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0xfb')][_0xd58f('0x11d')](db[_0xd58f('0x7e')],{'as':_0xd58f('0x1fb'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0xfb')][_0xd58f('0x11d')](db[_0xd58f('0x162')],{'as':_0xd58f('0x12b'),'onDelete':_0xd58f('0x11a'),'foreignKey':_0xd58f('0x16e')});db['CmList'][_0xd58f('0x11d')](db[_0xd58f('0x7b')],{'as':_0xd58f('0x120'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0xfb')][_0xd58f('0x11d')](db[_0xd58f('0x7d')],{'as':'HopperHistory','foreignKey':'ListId'});db[_0xd58f('0xfb')][_0xd58f('0x11d')](db[_0xd58f('0x150')],{'as':_0xd58f('0x150'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0xfb')]['belongsToMany'](db[_0xd58f('0x135')],{'as':_0xd58f('0x1fc'),'through':_0xd58f('0x15a')});db['CmList'][_0xd58f('0x12d')](db['User'],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x12e')});db[_0xd58f('0xfd')]['hasMany'](db[_0xd58f('0x19')],{'as':_0xd58f('0x11f'),'onDelete':'cascade'});db[_0xd58f('0xfd')][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':'Agents','through':_0xd58f('0x114')});db['VoicePrefix'][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':_0xd58f('0x112'),'as':_0xd58f('0x15c')});db[_0xd58f('0xff')][_0xd58f('0x11d')](db['User'],{'as':_0xd58f('0x179'),'foreignKey':'userProfileId'});db[_0xd58f('0xff')][_0xd58f('0x11d')](db[_0xd58f('0x1fd')],{'as':'UserProfileSections','foreignKey':_0xd58f('0x129'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x1fd')][_0xd58f('0x11d')](db[_0xd58f('0x101')],{'as':_0xd58f('0x1fe'),'foreignKey':_0xd58f('0x1ff'),'onDelete':'cascade'});db['WhatsappAccount'][_0xd58f('0x11d')](db['Disposition'],{'as':_0xd58f('0x169'),'foreignKey':_0xd58f('0x200'),'onDelete':_0xd58f('0x11a')});db[_0xd58f('0x104')]['hasMany'](db[_0xd58f('0x82')],{'as':'Answers','foreignKey':_0xd58f('0x200')});db[_0xd58f('0x104')][_0xd58f('0x11d')](db[_0xd58f('0x10a')],{'as':_0xd58f('0x16b'),'foreignKey':_0xd58f('0x200')});db['WhatsappAccount'][_0xd58f('0x11d')](db[_0xd58f('0x108')],{'as':_0xd58f('0x16c')});db[_0xd58f('0x104')][_0xd58f('0x11d')](db['WhatsappApplication'],{'as':'Applications'});db[_0xd58f('0x104')]['belongsTo'](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db['WhatsappAccount'][_0xd58f('0x128')](db[_0xd58f('0x87')],{'as':_0xd58f('0x157'),'foreignKey':_0xd58f('0x158')});db['WhatsappAccount'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x147')});db[_0xd58f('0x106')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'onDelete':'restrict'});db[_0xd58f('0x106')][_0xd58f('0x128')](db['WhatsappQueue'],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x106')][_0xd58f('0x128')](db[_0xd58f('0x104')],{'onDelete':_0xd58f('0x166')});db[_0xd58f('0x106')][_0xd58f('0x128')](db[_0xd58f('0x156')],{'onDelete':_0xd58f('0x166'),'foreignKey':_0xd58f('0x17d')});db[_0xd58f('0x106')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0xd58f('0x17e')});db[_0xd58f('0x108')][_0xd58f('0x11d')](db[_0xd58f('0x10a')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xd58f('0x201')});db[_0xd58f('0x108')][_0xd58f('0x128')](db[_0xd58f('0x104')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x200')});db[_0xd58f('0x108')]['belongsTo'](db['CmContact'],{'as':_0xd58f('0x174'),'foreignKey':_0xd58f('0x175')});db['WhatsappInteraction']['belongsTo'](db[_0xd58f('0x12')],{'as':_0xd58f('0x194'),'foreignKey':_0xd58f('0x11b')});db[_0xd58f('0x108')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':'whatsapp_interaction_has_tags','as':'Tags'});db[_0xd58f('0x108')][_0xd58f('0x12d')](db[_0xd58f('0x8e')],{'through':_0xd58f('0x1ba'),'as':'ThroughTags'});db['WhatsappInteraction'][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':'Users','through':_0xd58f('0x134'),'foreignKey':_0xd58f('0x201')});db['WhatsappMessage'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':'User'});db[_0xd58f('0x10a')]['belongsTo'](db[_0xd58f('0x162')],{'onDelete':'cascade','as':'Contact'});db['WhatsappMessage'][_0xd58f('0x128')](db['WhatsappInteraction'],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xd58f('0x201')});db[_0xd58f('0x10a')][_0xd58f('0x128')](db[_0xd58f('0x104')],{'as':_0xd58f('0x173'),'foreignKey':_0xd58f('0x200')});db[_0xd58f('0x202')]['belongsTo'](db[_0xd58f('0x104')],{});db[_0xd58f('0x202')][_0xd58f('0x128')](db[_0xd58f('0xfb')],{'as':_0xd58f('0x16d'),'foreignKey':_0xd58f('0x16e')});db[_0xd58f('0x202')]['belongsTo'](db[_0xd58f('0x162')],{'as':'Contact','foreignKey':_0xd58f('0x175')});db[_0xd58f('0x202')][_0xd58f('0x128')](db['WhatsappInteraction'],{});db[_0xd58f('0x202')][_0xd58f('0x128')](db[_0xd58f('0x10e')],{});db[_0xd58f('0x202')]['belongsTo'](db[_0xd58f('0x10a')],{});db[_0xd58f('0x202')]['belongsTo'](db[_0xd58f('0x12')],{});db[_0xd58f('0x10d')][_0xd58f('0x128')](db['WhatsappMessage'],{});db[_0xd58f('0x10d')][_0xd58f('0x128')](db[_0xd58f('0x108')],{});db['WhatsappTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x104')],{'foreignKey':_0xd58f('0x203'),'as':_0xd58f('0x1f5')});db['WhatsappTransferReport']['belongsTo'](db[_0xd58f('0x104')],{'foreignKey':_0xd58f('0x204'),'as':'ToAccount'});db['WhatsappTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x10e')],{'foreignKey':_0xd58f('0x205'),'as':_0xd58f('0x1f1')});db['WhatsappTransferReport'][_0xd58f('0x128')](db[_0xd58f('0x12')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd58f('0x10d')][_0xd58f('0x128')](db['User'],{'foreignKey':_0xd58f('0x1ea'),'as':'ToAgent'});db[_0xd58f('0x10e')][_0xd58f('0x12d')](db[_0xd58f('0x12')],{'as':_0xd58f('0x15b'),'through':_0xd58f('0x3e'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0xd58f('0x12d')](db[_0xd58f('0xe7')],{'through':_0xd58f('0x1e1'),'as':_0xd58f('0x15c')});db[_0xd58f('0x116')][_0xd58f('0x128')](db[_0xd58f('0x12')],{'as':_0xd58f('0x206'),'foreignKey':'UserId','onDelete':_0xd58f('0x11a'),'hooks':!![]});db[_0xd58f('0x10f')][_0xd58f('0x118')](db['Dynamics365Account'],{'as':_0xd58f('0xc7'),'onDelete':_0xd58f('0x166')});db[_0xd58f('0x10f')][_0xd58f('0x118')](db[_0xd58f('0x163')],{'as':_0xd58f('0x167'),'onDelete':'restrict'});db[_0xd58f('0x10f')][_0xd58f('0x118')](db[_0xd58f('0x40')],{'as':_0xd58f('0x168'),'onDelete':'restrict'});module[_0xd58f('0x207')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x00ad=['VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','FaxMessage','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','../api/smsQueue/smsQueue.model','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatQueue/chatQueue.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/schedule/schedule.model','Tag','../api/tag/tag.model','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceConfiguration','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','FreshsalesField','../api/network/network.model','ChatQueueReport','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappTransferReport','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','hasMany','Recordings','VoiceExtension','ReportAgentPreview','ChatInteractions','MailInteraction','MailInteractions','WhatsappInteraction','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','SmsInteractions','user_has_sms_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoicePrefix','ChatQueue','ChatQueues','FaxQueues','SmsQueue','OpenchannelQueues','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Applications','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperFinals','HopperHistories','CmHopperBlack','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','Lists','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailboxuser','mailbox','VoiceCallReport','QueueCalls','uniqueid','AgentReports','Contact','MailAccountId','CloudProviderId','restrict','Imap','Dispositions','Answers','Interactions','List','Template','TemplateId','mandatoryDispositionPauseId','Teams','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','TagId','ListId','Dashboard','Items','Disposition','FaxAccountId','Exntensions','Trunk','mandatoryDispositionPause','user_has_fax_accounts','ContactId','fax_interaction_has_tags','user_has_fax_interactions','FaxInteractionId','AttachmentId','UserFaxQueue','team_has_fax_queues','SmsAccountId','SmsMessage','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','ProactiveActions','ChatApplication','Agent','ChatQueueId','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','team_has_chat_queues','ChatGroup','ChatGroupId','Website','CompanyId','Phones','CmContactId','cm_contact_has_tags','CmHopperId','Queue','CampaignId','OwnerId','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','AutomationId','Intervals','Extensions','ChatApplications','FaxApplications','SmsApplications','Schedule','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','ItemTypeId','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','Actions','AnalyticFieldReport','Fields','MetricId','AnalyticMetric','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Field','VariableId','Configurations','SugarcrmField','Description','DeskConfiguration','int_desk_configuration_has_tags','ZohoField','int_zendesk_configuration_has_tags','FreshdeskAccount','int_freshdesk_configuration_has_tags','VtigerConfiguration','ToId','SessionId','JscriptyAnswerReport','ProjectId','VoiceQueues','team_has_mail_queues','MailQueues','team_has_sms_queues','SmsQueues','WhatsappQueue','team_has_whatsapp_queues','WhatsappQueues','HopperBlacks','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','FromChatWebsiteId','ToAgent','ToChatWebsiteId','ToAccount','FromFaxAccountId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','FromUserId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','HopperHistory','Queues','UserProfileSection','Resources','sectionId','WhatsappAccountId','whatsapp_interaction_has_tags','WhatsappInteractionId','WhatsappQueueReport','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','Smtp','exports','../config/environment','sequelize','lodash','jstz','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','name','database','username','options','password','User','import','../api/user/user.model','VoiceChanSpy','VoiceContext','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail'];(function(_0x16e426,_0x5a4a0d){var _0x417b02=function(_0x13263e){while(--_0x13263e){_0x16e426['push'](_0x16e426['shift']());}};_0x417b02(++_0x5a4a0d);}(_0x00ad,0x1db));var _0xd00a=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x00ad[_0x2555d0];return _0x3bb486;};'use strict';var config=require(_0xd00a('0x0'));var Sequelize=require(_0xd00a('0x1'));var _=require(_0xd00a('0x2'));var jstz=require(_0xd00a('0x3'));var timezone=jstz['determine']();config[_0xd00a('0x1')]=_[_0xd00a('0x4')](config[_0xd00a('0x1')],{'database':_0xd00a('0x5'),'username':_0xd00a('0x6'),'password':_0xd00a('0x7'),'options':{'host':_0xd00a('0x8'),'port':0xcea,'dialect':_0xd00a('0x9'),'dialectOptions':{'charset':_0xd00a('0xa')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xd00a('0xb'),'collate':_0xd00a('0xc')}}});config[_0xd00a('0xd')]=_[_0xd00a('0x4')](config[_0xd00a('0xd')],{'database':_0xd00a('0x5'),'username':_0xd00a('0x6'),'password':'xC@LL1234','options':{'host':_0xd00a('0x8'),'port':0xcea,'dialect':_0xd00a('0x9'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xd00a('0xe')](),'define':{'charset':_0xd00a('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd00a('0x1')][_0xd00a('0xf')],config[_0xd00a('0x1')][_0xd00a('0x10')],config[_0xd00a('0x1')]['password'],config[_0xd00a('0x1')][_0xd00a('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xd00a('0xd')]['database'],config[_0xd00a('0xd')][_0xd00a('0x10')],config[_0xd00a('0xd')][_0xd00a('0x12')],config[_0xd00a('0xd')][_0xd00a('0x11')])};db[_0xd00a('0x13')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x15'));db[_0xd00a('0x16')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0xd00a('0x17')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceContext/voiceContext.model');db['VoiceExtension']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x18'));db[_0xd00a('0x19')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0xd00a('0x1a')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x1b'));db[_0xd00a('0x1c')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x1d'));db['ScreenRecording']=db[_0xd00a('0x1')]['import'](_0xd00a('0x1e'));db[_0xd00a('0x1f')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceMail/voiceMail.model');db[_0xd00a('0x20')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x21'));db['VoiceCallReport']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x22'));db['VoiceDialReport']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceDialReport/voiceDialReport.model');db[_0xd00a('0x23')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x24'));db[_0xd00a('0x25')]=db['sequelize']['import']('../api/voiceQueueReport/voiceQueueReport.model');db[_0xd00a('0x26')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x27'));db['Trunk']=db[_0xd00a('0x1')]['import'](_0xd00a('0x28'));db[_0xd00a('0x29')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0xd00a('0x2a')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x2b'));db[_0xd00a('0x2c')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x2d'));db[_0xd00a('0x2e')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x2f'));db[_0xd00a('0x30')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/userMailQueue/userMailQueue.model');db['UserFaxQueue']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/userFaxQueue/userFaxQueue.model');db[_0xd00a('0x31')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x32'));db[_0xd00a('0x33')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x34'));db[_0xd00a('0x35')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x36'));db[_0xd00a('0x37')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x38'));db[_0xd00a('0x39')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x3a'));db[_0xd00a('0x3b')]=db['sequelize'][_0xd00a('0x14')]('../api/mailAccount/mailAccount.model');db[_0xd00a('0x3c')]=db['sequelize']['import']('../api/mailQueue/mailQueue.model');db[_0xd00a('0x3d')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x3e'));db['MailInteraction']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x3f'));db[_0xd00a('0x40')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x41'));db[_0xd00a('0x42')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x43'));db[_0xd00a('0x44')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x45'));db['Dashboard']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/dashboard/dashboard.model');db[_0xd00a('0x46')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x47'));db[_0xd00a('0x48')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x49'));db[_0xd00a('0x4a')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/faxApplication/faxApplication.model');db[_0xd00a('0x4b')]=db[_0xd00a('0x1')]['import']('../api/faxInteraction/faxInteraction.model');db[_0xd00a('0x4c')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/faxMessage/faxMessage.model');db[_0xd00a('0x4d')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x4e'));db[_0xd00a('0x4f')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x50'));db[_0xd00a('0x51')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x52'));db[_0xd00a('0x53')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x54'));db[_0xd00a('0x55')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x56'));db['SmsMessage']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0xd00a('0x1')]['import'](_0xd00a('0x57'));db['OpenchannelAccount']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x58'));db[_0xd00a('0x59')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x5a'));db[_0xd00a('0x5b')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x5c'));db['OpenchannelMessage']=db['sequelize']['import']('../api/openchannelMessage/openchannelMessage.model');db[_0xd00a('0x5d')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x5e'));db[_0xd00a('0x5f')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x60'));db[_0xd00a('0x61')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x62'));db['ChatApplication']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x63'));db[_0xd00a('0x64')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x65'));db[_0xd00a('0x66')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x67'));db[_0xd00a('0x68')]=db[_0xd00a('0x1')]['import']('../api/chatOfflineMessage/chatOfflineMessage.model');db['ChatQueue']=db[_0xd00a('0x1')]['import'](_0xd00a('0x69'));db['ChatGroup']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/chatGroup/chatGroup.model');db[_0xd00a('0x6a')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x6b'));db[_0xd00a('0x6c')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x6d'));db['CmContact']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/cmContact/cmContact.model');db[_0xd00a('0x6e')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x6f'));db['CmHopperBlack']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x70'));db[_0xd00a('0x71')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x72'));db[_0xd00a('0x73')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x74'));db['ReportAgentPreview']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/cmCustomField/cmCustomField.model');db[_0xd00a('0x75')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x76'));db[_0xd00a('0x77')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x78'));db[_0xd00a('0x79')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x7a'));db['Disposition']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x7b'));db['Condition']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/condition/condition.model');db[_0xd00a('0x7c')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x7d'));db[_0xd00a('0x7e')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x7f'));db[_0xd00a('0x80')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x81'));db[_0xd00a('0x82')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x83'));db['Sound']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/sound/sound.model');db[_0xd00a('0x84')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x85'));db['ContactItemType']=db[_0xd00a('0x1')]['import'](_0xd00a('0x86'));db[_0xd00a('0x87')]=db[_0xd00a('0x1')]['import'](_0xd00a('0x88'));db[_0xd00a('0x89')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db['Template']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x8a'));db[_0xd00a('0x8b')]=db['sequelize']['import'](_0xd00a('0x8c'));db[_0xd00a('0x8d')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x8e'));db[_0xd00a('0x8f')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x90'));db[_0xd00a('0x91')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x92'));db[_0xd00a('0x93')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/analyticCustomReport/analyticCustomReport.model');db['AnalyticDefaultReport']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xd00a('0x94')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x95'));db['AnalyticMetric']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x96'));db['AnalyticFieldReport']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x97'));db[_0xd00a('0x98')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/analyticTreeReport/analyticTreeReport.model');db['SalesforceAccount']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xd00a('0x99')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0xd00a('0x9a')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x9b'));db[_0xd00a('0x9c')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x9d'));db[_0xd00a('0x9e')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x9f'));db['SugarcrmField']=db[_0xd00a('0x1')]['import'](_0xd00a('0xa0'));db[_0xd00a('0xa1')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0xd00a('0x1')]['import'](_0xd00a('0xa2'));db[_0xd00a('0xa3')]=db[_0xd00a('0x1')]['import']('../api/intDeskField/intDeskField.model');db[_0xd00a('0xa4')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xa5'));db[_0xd00a('0xa6')]=db['sequelize']['import'](_0xd00a('0xa7'));db['ZohoField']=db[_0xd00a('0x1')]['import'](_0xd00a('0xa8'));db[_0xd00a('0xa9')]=db[_0xd00a('0x1')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0xd00a('0xaa')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xab'));db[_0xd00a('0xac')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xd00a('0xad')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xae'));db[_0xd00a('0xaf')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xb0'));db[_0xd00a('0xb1')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xb2'));db['VtigerConfiguration']=db['sequelize'][_0xd00a('0x14')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0xd00a('0xb3')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xb4'));db[_0xd00a('0xb5')]=db[_0xd00a('0x1')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0xd00a('0xb6')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xd00a('0xb7')]=db[_0xd00a('0x1')]['import']('../api/intServicenowField/intServicenowField.model');db[_0xd00a('0xb8')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xb9'));db[_0xd00a('0xba')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xbb'));db[_0xd00a('0xbc')]=db['sequelize']['import'](_0xd00a('0xbd'));db[_0xd00a('0xbe')]=db[_0xd00a('0x1')]['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xd00a('0xbf')]=db['sequelize'][_0xd00a('0x14')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xd00a('0xc0')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0xd00a('0x8f')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x90'));db['Network']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xc1'));db[_0xd00a('0xc2')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/chatQueueReport/chatQueueReport.model');db[_0xd00a('0xc3')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xc4'));db['JscriptyAnswerReport']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xc5'));db[_0xd00a('0xc6')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xc7'));db[_0xd00a('0xc8')]=db['sequelize']['import'](_0xd00a('0xc9'));db[_0xd00a('0xca')]=db['sequelize']['import'](_0xd00a('0xcb'));db[_0xd00a('0xcc')]=db[_0xd00a('0x1')]['import'](_0xd00a('0xcd'));db[_0xd00a('0xce')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xcf'));db[_0xd00a('0xd0')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xd1'));db[_0xd00a('0xd2')]=db['sequelize']['import'](_0xd00a('0xd3'));db[_0xd00a('0xd4')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xd5'));db[_0xd00a('0xd6')]=db[_0xd00a('0x1')]['import']('../api/squareProject/squareProject.model');db[_0xd00a('0xd7')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xd8'));db[_0xd00a('0xd9')]=db[_0xd00a('0x1')]['import'](_0xd00a('0xda'));db['Team']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/team/team.model');db[_0xd00a('0xdb')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/license/license.model');db[_0xd00a('0xdc')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xdd'));db[_0xd00a('0xde')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xdf'));db[_0xd00a('0xe0')]=db[_0xd00a('0x1')]['import'](_0xd00a('0xe1'));db[_0xd00a('0xe2')]=db[_0xd00a('0x1')]['import'](_0xd00a('0xe3'));db[_0xd00a('0xe4')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xe5'));db[_0xd00a('0xe6')]=db[_0xd00a('0x1')]['import']('../api/chatTransferReport/chatTransferReport.model');db[_0xd00a('0xe7')]=db[_0xd00a('0x1')]['import']('../api/faxTransferReport/faxTransferReport.model');db[_0xd00a('0xe8')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xe9'));db[_0xd00a('0xea')]=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/smsTransferReport/smsTransferReport.model');db[_0xd00a('0xeb')]=db[_0xd00a('0x1')]['import'](_0xd00a('0xec'));db['VoicePrefix']=db[_0xd00a('0x1')]['import'](_0xd00a('0xed'));db[_0xd00a('0xee')]=db['sequelize']['import'](_0xd00a('0xef'));db['UserProfileSection']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xf0'));db[_0xd00a('0xf1')]=db['sequelize'][_0xd00a('0x14')]('../api/userProfileResource/userProfileResource.model');db['UserNotification']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xf2'));db[_0xd00a('0xf3')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xf4'));db[_0xd00a('0xf5')]=db[_0xd00a('0x1')]['import']('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xf6'));db[_0xd00a('0xf7')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xf8'));db['WhatsappQueueReport']=db[_0xd00a('0x1')][_0xd00a('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0xd00a('0xf9')]=db['sequelize'][_0xd00a('0x14')]('../api/whatsappTransferReport/whatsappTransferReport.model');db['WhatsappQueue']=db['sequelize'][_0xd00a('0x14')](_0xd00a('0xfa'));db[_0xd00a('0xfb')]=db['sequelize']['import'](_0xd00a('0xfc'));db[_0xd00a('0xfd')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0xfe'));db[_0xd00a('0xff')]=db['sequelize']['import'](_0xd00a('0x100'));db[_0xd00a('0x101')]=db['sequelize'][_0xd00a('0x14')](_0xd00a('0x102'));db[_0xd00a('0x103')]=db[_0xd00a('0x1')][_0xd00a('0x14')](_0xd00a('0x104'));db[_0xd00a('0x13')][_0xd00a('0x105')](db[_0xd00a('0x1f')],{'as':_0xd00a('0x1f'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x107')});db['User'][_0xd00a('0x105')](db[_0xd00a('0x103')],{'as':_0xd00a('0x108'),'onDelete':'cascade','foreignKey':'UserId'});db['User'][_0xd00a('0x109')](db[_0xd00a('0x1c')],{'as':_0xd00a('0x10a'),'foreignKey':_0xd00a('0x107')});db['User'][_0xd00a('0x109')](db[_0xd00a('0x2a')],{'as':'VoiceQueuesRt','foreignKey':_0xd00a('0x107')});db[_0xd00a('0x13')]['hasMany'](db[_0xd00a('0x10b')],{'as':'Extensions','onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x13')][_0xd00a('0x109')](db[_0xd00a('0x71')],{'as':'HopperFinals','foreignKey':_0xd00a('0x107')});db['User'][_0xd00a('0x109')](db[_0xd00a('0x73')],{'as':'HopperHistory','foreignKey':'UserId'});db[_0xd00a('0x13')][_0xd00a('0x109')](db[_0xd00a('0x10c')],{'as':_0xd00a('0x10c'),'foreignKey':_0xd00a('0x107')});db['User']['hasMany'](db[_0xd00a('0x5b')],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db[_0xd00a('0x13')][_0xd00a('0x109')](db[_0xd00a('0x64')],{'as':_0xd00a('0x10d'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x13')][_0xd00a('0x109')](db[_0xd00a('0x55')],{'as':'SmsInteractions','foreignKey':'UserId'});db[_0xd00a('0x13')]['hasMany'](db[_0xd00a('0x4b')],{'as':'FaxInteractions','foreignKey':_0xd00a('0x107')});db[_0xd00a('0x13')][_0xd00a('0x109')](db[_0xd00a('0x10e')],{'as':_0xd00a('0x10f'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x13')]['hasMany'](db[_0xd00a('0x110')],{'as':_0xd00a('0x111'),'foreignKey':_0xd00a('0x107')});db['User'][_0xd00a('0x109')](db['UserNotification'],{'as':_0xd00a('0x112'),'foreignKey':_0xd00a('0x113')});db[_0xd00a('0x13')][_0xd00a('0x114')](db[_0xd00a('0xee')],{'as':_0xd00a('0xee'),'foreignKey':_0xd00a('0x115')});db[_0xd00a('0x13')][_0xd00a('0x116')](db['ChatGroup'],{'as':_0xd00a('0x117'),'through':_0xd00a('0x118')});db['User']['belongsToMany'](db[_0xd00a('0x119')],{'as':_0xd00a('0x11a'),'through':_0xd00a('0x11b')});db['User'][_0xd00a('0x116')](db[_0xd00a('0xeb')],{'as':'Lists','through':_0xd00a('0x11c')});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x11d')],{'through':_0xd00a('0x11e')});db['User'][_0xd00a('0x116')](db['MailInteraction'],{'as':'MailInteractions','through':_0xd00a('0x11f')});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x64')],{'as':_0xd00a('0x10d'),'through':'user_has_chat_interactions'});db[_0xd00a('0x13')][_0xd00a('0x116')](db['FaxInteraction'],{'as':_0xd00a('0x120'),'through':'user_has_fax_interactions'});db[_0xd00a('0x13')][_0xd00a('0x116')](db['SmsInteraction'],{'as':_0xd00a('0x121'),'through':_0xd00a('0x122')});db['User'][_0xd00a('0x116')](db[_0xd00a('0x5b')],{'as':_0xd00a('0x123'),'through':_0xd00a('0x124')});db['User'][_0xd00a('0x116')](db['WhatsappInteraction'],{'as':_0xd00a('0x111'),'through':_0xd00a('0x125')});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x1a')],{'as':'VoiceQueues','through':_0xd00a('0x2c'),'required':![]});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x126')],{'as':'VoicePrefixes','through':'UserVoicePrefix','required':![]});db['User'][_0xd00a('0x116')](db[_0xd00a('0x3c')],{'as':'MailQueues','through':_0xd00a('0x30'),'required':![]});db['User'][_0xd00a('0x116')](db[_0xd00a('0x127')],{'as':_0xd00a('0x128'),'through':'UserChatQueue','required':![],'hooks':!![]});db['User'][_0xd00a('0x116')](db[_0xd00a('0x4d')],{'as':_0xd00a('0x129'),'through':'UserFaxQueue','required':![]});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x12a')],{'as':'SmsQueues','through':_0xd00a('0x31'),'required':![]});db[_0xd00a('0x13')]['belongsToMany'](db['OpenchannelQueue'],{'as':_0xd00a('0x12b'),'through':_0xd00a('0x33'),'required':![]});db[_0xd00a('0x13')][_0xd00a('0x116')](db['WhatsappQueue'],{'as':'WhatsappQueues','through':'UserWhatsappQueue','required':![]});db['User'][_0xd00a('0x116')](db[_0xd00a('0xeb')],{'through':'cm_user_has_lists'});db[_0xd00a('0x13')][_0xd00a('0x116')](db['ChatWebsite'],{'as':_0xd00a('0x12c'),'through':_0xd00a('0x12d')});db['User'][_0xd00a('0x116')](db[_0xd00a('0x48')],{'as':_0xd00a('0x12e'),'through':'user_has_fax_accounts'});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x3b')],{'as':_0xd00a('0x12f'),'through':_0xd00a('0x130')});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x131')],{'as':_0xd00a('0x132'),'through':_0xd00a('0x133')});db[_0xd00a('0x13')][_0xd00a('0x116')](db[_0xd00a('0x51')],{'as':'SmsAccounts','through':_0xd00a('0x134')});db['User'][_0xd00a('0x116')](db[_0xd00a('0xf3')],{'as':'WhatsappAccounts','through':_0xd00a('0x135')});db[_0xd00a('0x16')][_0xd00a('0x109')](db[_0xd00a('0x10b')],{'as':_0xd00a('0x136'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x137')});db[_0xd00a('0x17')]['hasMany'](db[_0xd00a('0x10b')],{'onDelete':_0xd00a('0x106')});db[_0xd00a('0x10b')]['hasMany'](db[_0xd00a('0x10b')],{'as':_0xd00a('0x138'),'onDelete':_0xd00a('0x106')});db['VoiceMusicOnHold'][_0xd00a('0x116')](db[_0xd00a('0x139')],{'as':_0xd00a('0x13a'),'through':_0xd00a('0x13b')});db[_0xd00a('0x1a')][_0xd00a('0x109')](db[_0xd00a('0x2a')],{'as':_0xd00a('0x13c'),'foreignKey':'VoiceQueueId'});db[_0xd00a('0x1a')][_0xd00a('0x109')](db[_0xd00a('0x6e')],{'as':'Hoppers','foreignKey':_0xd00a('0x13d')});db[_0xd00a('0x1a')]['hasMany'](db['CmHopperFinal'],{'as':_0xd00a('0x13e'),'foreignKey':_0xd00a('0x13d')});db['VoiceQueue'][_0xd00a('0x109')](db[_0xd00a('0x73')],{'as':_0xd00a('0x13f'),'foreignKey':_0xd00a('0x13d')});db[_0xd00a('0x1a')][_0xd00a('0x109')](db[_0xd00a('0x10c')],{'as':_0xd00a('0x10c'),'foreignKey':_0xd00a('0x13d')});db[_0xd00a('0x1a')][_0xd00a('0x109')](db[_0xd00a('0x140')],{'as':'HopperBlacks','foreignKey':_0xd00a('0x13d')});db[_0xd00a('0x1a')][_0xd00a('0x109')](db[_0xd00a('0xc8')],{'as':_0xd00a('0x141'),'foreignKey':_0xd00a('0x13d')});db[_0xd00a('0x1a')][_0xd00a('0x114')](db['Trunk'],{'as':'Trunk','foreignKey':_0xd00a('0x142')});db[_0xd00a('0x1a')]['belongsTo'](db['Trunk'],{'as':_0xd00a('0x143'),'foreignKey':_0xd00a('0x144')});db[_0xd00a('0x1a')][_0xd00a('0x114')](db['Interval'],{'as':_0xd00a('0x7c'),'foreignKey':_0xd00a('0x145')});db[_0xd00a('0x1a')][_0xd00a('0x114')](db[_0xd00a('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xd00a('0x1a')]['belongsToMany'](db['CmList'],{'as':_0xd00a('0x146'),'through':_0xd00a('0x147')});db[_0xd00a('0x1a')][_0xd00a('0x116')](db['User'],{'as':_0xd00a('0x148'),'through':_0xd00a('0x2c')});db[_0xd00a('0x1a')]['belongsToMany'](db[_0xd00a('0x11d')],{'as':'Teams','through':_0xd00a('0xfd')});db[_0xd00a('0x1a')][_0xd00a('0x116')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x149'),'through':_0xd00a('0x14a')});db[_0xd00a('0x1c')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x13'),'foreignKey':'UserId'});db[_0xd00a('0x14b')][_0xd00a('0x114')](db['User'],{'as':_0xd00a('0x13'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x1f')][_0xd00a('0x109')](db[_0xd00a('0x20')],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x14d'),'sourceKey':_0xd00a('0x14e')});db[_0xd00a('0x20')][_0xd00a('0x114')](db['VoiceMail'],{'foreignKey':'mailboxuser','targetKey':_0xd00a('0x14e')});db[_0xd00a('0x14f')][_0xd00a('0x109')](db[_0xd00a('0x25')],{'as':_0xd00a('0x150'),'foreignKey':_0xd00a('0x151'),'constraints':![]});db[_0xd00a('0x14f')]['hasMany'](db['VoiceAgentReport'],{'as':_0xd00a('0x152'),'foreignKey':_0xd00a('0x151'),'constraints':![]});db[_0xd00a('0x14f')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x13'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x14f')][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':'ContactId'});db[_0xd00a('0x37')][_0xd00a('0x114')](db[_0xd00a('0x3b')],{'as':_0xd00a('0x3b'),'foreignKey':_0xd00a('0x154')});db[_0xd00a('0x37')]['belongsTo'](db[_0xd00a('0xfb')],{'as':_0xd00a('0xfb'),'foreignKey':_0xd00a('0x155'),'onDelete':_0xd00a('0x156')});db['MailServerOut'][_0xd00a('0x114')](db[_0xd00a('0x3b')],{'as':_0xd00a('0x3b'),'foreignKey':'MailAccountId'});db['MailServerOut']['belongsTo'](db[_0xd00a('0xfb')],{'as':_0xd00a('0xfb'),'foreignKey':'CloudProviderId','onDelete':_0xd00a('0x156')});db['MailAccount'][_0xd00a('0x105')](db[_0xd00a('0x37')],{'as':_0xd00a('0x157'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x3b')]['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0xd00a('0x106')});db[_0xd00a('0x3b')][_0xd00a('0x109')](db['Disposition'],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x154'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x3b')][_0xd00a('0x109')](db['CannedAnswer'],{'as':_0xd00a('0x159'),'foreignKey':_0xd00a('0x154')});db[_0xd00a('0x3b')][_0xd00a('0x109')](db[_0xd00a('0x40')],{'as':_0xd00a('0x14c'),'foreignKey':_0xd00a('0x154')});db['MailAccount'][_0xd00a('0x109')](db[_0xd00a('0x10e')],{'as':_0xd00a('0x15a')});db['MailAccount']['hasMany'](db[_0xd00a('0x42')],{'as':'Applications'});db[_0xd00a('0x3b')][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':'ListId'});db[_0xd00a('0x3b')]['belongsTo'](db[_0xd00a('0x15c')],{'as':'Template','foreignKey':_0xd00a('0x15d')});db[_0xd00a('0x3b')][_0xd00a('0x114')](db[_0xd00a('0x7e')],{'as':'mandatoryDispositionPause','foreignKey':_0xd00a('0x15e')});db[_0xd00a('0x3b')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':'user_has_mail_accounts'});db[_0xd00a('0x3c')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':'UserMailQueue'});db['MailQueue'][_0xd00a('0x116')](db['Team'],{'through':'team_has_mail_queues','as':_0xd00a('0x15f')});db[_0xd00a('0x10e')][_0xd00a('0x109')](db['MailMessage'],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x160')});db['MailInteraction'][_0xd00a('0x114')](db[_0xd00a('0x3b')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x154')});db['MailInteraction'][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':'ContactId'});db['MailInteraction']['belongsTo'](db[_0xd00a('0x13')],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x10e')]['belongsToMany'](db[_0xd00a('0x84')],{'through':_0xd00a('0x163'),'as':_0xd00a('0x164')});db[_0xd00a('0x10e')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x163'),'as':_0xd00a('0x165')});db[_0xd00a('0x10e')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x166'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0xd00a('0x40')][_0xd00a('0x109')](db[_0xd00a('0xe0')],{'as':_0xd00a('0x167'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x40')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x13')});db[_0xd00a('0x40')][_0xd00a('0x114')](db['CmContact'],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153')});db[_0xd00a('0x40')]['belongsTo'](db['MailInteraction'],{'as':_0xd00a('0x168'),'foreignKey':'MailInteractionId'});db[_0xd00a('0x40')][_0xd00a('0x114')](db['MailAccount'],{'as':'Account','foreignKey':_0xd00a('0x154')});db['MailMessage'][_0xd00a('0x114')](db[_0xd00a('0x5f')],{'as':_0xd00a('0x5f'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x40')][_0xd00a('0x114')](db['ChatOfflineMessage'],{'as':_0xd00a('0x68'),'foreignKey':_0xd00a('0x16a')});db['MailApplication'][_0xd00a('0x114')](db['User'],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x42')][_0xd00a('0x114')](db[_0xd00a('0x3c')],{'onDelete':'restrict'});db[_0xd00a('0x42')][_0xd00a('0x114')](db[_0xd00a('0x3b')],{'onDelete':_0xd00a('0x156')});db['MailApplication'][_0xd00a('0x114')](db[_0xd00a('0x7c')],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x145')});db[_0xd00a('0x42')][_0xd00a('0x114')](db['Tag'],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x16b')});db[_0xd00a('0x44')]['belongsTo'](db[_0xd00a('0x3b')],{});db[_0xd00a('0x44')][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':'List','foreignKey':_0xd00a('0x16c')});db[_0xd00a('0x44')][_0xd00a('0x114')](db[_0xd00a('0x119')],{'as':'Contact','foreignKey':'ContactId'});db[_0xd00a('0x44')][_0xd00a('0x114')](db['MailInteraction'],{});db['MailQueueReport'][_0xd00a('0x114')](db[_0xd00a('0x40')],{});db['MailQueueReport']['belongsTo'](db[_0xd00a('0x13')],{});db[_0xd00a('0x44')]['belongsTo'](db[_0xd00a('0x3c')],{});db[_0xd00a('0x16d')][_0xd00a('0x109')](db[_0xd00a('0x46')],{'as':_0xd00a('0x16e'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x48')]['hasMany'](db[_0xd00a('0x16f')],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x170'),'onDelete':_0xd00a('0x106')});db['FaxAccount'][_0xd00a('0x109')](db[_0xd00a('0x79')],{'as':_0xd00a('0x159'),'foreignKey':'FaxAccountId'});db['FaxAccount'][_0xd00a('0x109')](db[_0xd00a('0x4b')],{'as':_0xd00a('0x15a')});db[_0xd00a('0x48')][_0xd00a('0x109')](db[_0xd00a('0x4a')],{'as':'Applications'});db[_0xd00a('0x48')]['hasMany'](db[_0xd00a('0x10b')],{'as':_0xd00a('0x171'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x48')][_0xd00a('0x109')](db[_0xd00a('0x4c')],{'as':_0xd00a('0x14c')});db[_0xd00a('0x48')][_0xd00a('0x114')](db[_0xd00a('0x172')],{'as':_0xd00a('0x172')});db['FaxAccount']['belongsTo'](db['CmList'],{'as':_0xd00a('0x15b'),'foreignKey':'ListId'});db['FaxAccount']['belongsTo'](db[_0xd00a('0x7e')],{'as':_0xd00a('0x173'),'foreignKey':_0xd00a('0x15e')});db['FaxAccount'][_0xd00a('0x116')](db['User'],{'as':_0xd00a('0x148'),'through':_0xd00a('0x174')});db[_0xd00a('0x4a')][_0xd00a('0x114')](db['User'],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x4a')][_0xd00a('0x114')](db['FaxQueue'],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x4a')][_0xd00a('0x114')](db[_0xd00a('0x48')],{'onDelete':'restrict'});db[_0xd00a('0x4a')][_0xd00a('0x114')](db[_0xd00a('0x84')],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x16b')});db[_0xd00a('0x4b')][_0xd00a('0x109')](db[_0xd00a('0x4c')],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':'FaxInteractionId'});db[_0xd00a('0x4b')][_0xd00a('0x114')](db[_0xd00a('0x48')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x170')});db[_0xd00a('0x4b')][_0xd00a('0x114')](db[_0xd00a('0x119')],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0x4b')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x4b')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':'fax_interaction_has_tags','as':_0xd00a('0x164')});db[_0xd00a('0x4b')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x176'),'as':_0xd00a('0x165')});db[_0xd00a('0x4b')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x166'),'through':_0xd00a('0x177'),'foreignKey':_0xd00a('0x178')});db['FaxMessage'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x13')});db['FaxMessage'][_0xd00a('0x114')](db[_0xd00a('0x4b')],{'as':_0xd00a('0x168'),'foreignKey':_0xd00a('0x178')});db['FaxMessage'][_0xd00a('0x114')](db[_0xd00a('0x119')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153')});db[_0xd00a('0x4c')]['belongsTo'](db[_0xd00a('0xe0')],{'as':_0xd00a('0xe0'),'foreignKey':_0xd00a('0x179')});db[_0xd00a('0x4c')][_0xd00a('0x114')](db[_0xd00a('0x48')],{'as':_0xd00a('0x161'),'foreignKey':'FaxAccountId'});db[_0xd00a('0x4d')]['belongsToMany'](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x17a')});db[_0xd00a('0x4d')][_0xd00a('0x116')](db[_0xd00a('0x11d')],{'through':_0xd00a('0x17b'),'as':_0xd00a('0x15f')});db['FaxQueueReport']['belongsTo'](db[_0xd00a('0x48')],{});db[_0xd00a('0x4f')][_0xd00a('0x114')](db['CmList'],{'as':'List','foreignKey':_0xd00a('0x16c')});db[_0xd00a('0x4f')]['belongsTo'](db[_0xd00a('0x119')],{'as':'Contact','foreignKey':_0xd00a('0x175')});db[_0xd00a('0x4f')][_0xd00a('0x114')](db[_0xd00a('0x4b')],{});db[_0xd00a('0x4f')][_0xd00a('0x114')](db[_0xd00a('0x4c')],{});db[_0xd00a('0x4f')][_0xd00a('0x114')](db['User'],{});db[_0xd00a('0x4f')][_0xd00a('0x114')](db[_0xd00a('0x4d')],{});db[_0xd00a('0x51')][_0xd00a('0x109')](db[_0xd00a('0x16f')],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x17c'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x51')]['hasMany'](db['CannedAnswer'],{'as':_0xd00a('0x159'),'foreignKey':_0xd00a('0x17c')});db[_0xd00a('0x51')]['hasMany'](db[_0xd00a('0x17d')],{'as':_0xd00a('0x14c'),'foreignKey':'SmsAccountId'});db[_0xd00a('0x51')][_0xd00a('0x109')](db[_0xd00a('0x55')],{'as':_0xd00a('0x15a')});db[_0xd00a('0x51')]['hasMany'](db[_0xd00a('0x53')],{'as':_0xd00a('0x138')});db[_0xd00a('0x51')][_0xd00a('0x114')](db['CmList'],{'as':_0xd00a('0x15b'),'foreignKey':'ListId'});db['SmsAccount'][_0xd00a('0x114')](db[_0xd00a('0x7e')],{'as':_0xd00a('0x173'),'foreignKey':_0xd00a('0x15e')});db[_0xd00a('0x51')][_0xd00a('0x116')](db['User'],{'as':_0xd00a('0x148'),'through':_0xd00a('0x134')});db['SmsApplication'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x156')});db['SmsApplication'][_0xd00a('0x114')](db['SmsQueue'],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x53')][_0xd00a('0x114')](db[_0xd00a('0x51')],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x53')][_0xd00a('0x114')](db[_0xd00a('0x7c')],{'onDelete':'restrict','foreignKey':_0xd00a('0x145')});db[_0xd00a('0x53')][_0xd00a('0x114')](db[_0xd00a('0x84')],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x16b')});db['SmsInteraction']['hasMany'](db[_0xd00a('0x17d')],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':'SmsInteractionId'});db[_0xd00a('0x55')][_0xd00a('0x114')](db[_0xd00a('0x51')],{'as':'Account','foreignKey':_0xd00a('0x17c')});db[_0xd00a('0x55')]['belongsTo'](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0x55')][_0xd00a('0x114')](db['User'],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x55')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x17e'),'as':_0xd00a('0x164')});db[_0xd00a('0x55')]['belongsToMany'](db[_0xd00a('0x84')],{'through':'sms_interaction_has_tags','as':_0xd00a('0x165')});db['SmsInteraction']['belongsToMany'](db['User'],{'as':_0xd00a('0x166'),'through':_0xd00a('0x122'),'foreignKey':'SmsInteractionId'});db[_0xd00a('0x17d')]['belongsTo'](db[_0xd00a('0x13')],{'as':_0xd00a('0x13')});db[_0xd00a('0x17d')]['belongsTo'](db[_0xd00a('0x119')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153')});db[_0xd00a('0x17d')]['belongsTo'](db['SmsInteraction'],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x168'),'foreignKey':_0xd00a('0x17f')});db[_0xd00a('0x17d')][_0xd00a('0x114')](db[_0xd00a('0x51')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x17c')});db['SmsQueue'][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x31'),'foreignKey':_0xd00a('0x180')});db[_0xd00a('0x12a')][_0xd00a('0x116')](db[_0xd00a('0x11d')],{'through':'team_has_sms_queues','as':_0xd00a('0x15f')});db[_0xd00a('0x131')][_0xd00a('0x109')](db[_0xd00a('0x16f')],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x181'),'onDelete':'cascade'});db['OpenchannelAccount']['hasMany'](db[_0xd00a('0x79')],{'as':_0xd00a('0x159'),'foreignKey':_0xd00a('0x181')});db[_0xd00a('0x131')][_0xd00a('0x109')](db['OpenchannelInteraction'],{'as':_0xd00a('0x15a'),'foreignKey':'OpenchannelAccountId'});db[_0xd00a('0x131')][_0xd00a('0x109')](db[_0xd00a('0x182')],{'as':_0xd00a('0x14c'),'foreignKey':_0xd00a('0x181')});db[_0xd00a('0x131')]['hasMany'](db[_0xd00a('0x59')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db[_0xd00a('0x131')][_0xd00a('0x114')](db['CmList'],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db[_0xd00a('0x131')]['belongsTo'](db[_0xd00a('0x7e')],{'as':_0xd00a('0x173'),'foreignKey':_0xd00a('0x15e')});db[_0xd00a('0x131')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x133')});db[_0xd00a('0x59')]['belongsTo'](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x156')});db[_0xd00a('0x59')][_0xd00a('0x114')](db[_0xd00a('0x5d')],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x183')});db[_0xd00a('0x59')][_0xd00a('0x114')](db['OpenchannelAccount'],{'onDelete':_0xd00a('0x156'),'foreignKey':_0xd00a('0x181')});db[_0xd00a('0x59')][_0xd00a('0x114')](db[_0xd00a('0x7c')],{'onDelete':_0xd00a('0x156'),'foreignKey':'IntervalId'});db[_0xd00a('0x59')][_0xd00a('0x114')](db[_0xd00a('0x84')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xd00a('0x5b')][_0xd00a('0x109')](db[_0xd00a('0x182')],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x184')});db[_0xd00a('0x5b')]['belongsTo'](db[_0xd00a('0x131')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x181')});db['OpenchannelInteraction'][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db['OpenchannelInteraction'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db['OpenchannelInteraction'][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x185'),'as':_0xd00a('0x164')});db[_0xd00a('0x5b')]['belongsToMany'](db[_0xd00a('0x84')],{'through':_0xd00a('0x185'),'as':_0xd00a('0x165')});db[_0xd00a('0x5b')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x166'),'through':_0xd00a('0x124'),'foreignKey':_0xd00a('0x184')});db[_0xd00a('0x182')]['belongsTo'](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x13')});db[_0xd00a('0x182')]['belongsTo'](db[_0xd00a('0x119')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153')});db[_0xd00a('0x182')][_0xd00a('0x114')](db['OpenchannelInteraction'],{'onDelete':'cascade','as':_0xd00a('0x168'),'foreignKey':_0xd00a('0x184')});db[_0xd00a('0x182')][_0xd00a('0x114')](db['Attachment'],{'as':'Attachment','foreignKey':_0xd00a('0x179')});db[_0xd00a('0x182')]['belongsTo'](db['OpenchannelAccount'],{'as':_0xd00a('0x161'),'foreignKey':'OpenchannelAccountId'});db[_0xd00a('0x5d')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x33'),'foreignKey':_0xd00a('0x183')});db[_0xd00a('0x5d')][_0xd00a('0x116')](db[_0xd00a('0x11d')],{'through':'team_has_openchannel_queues','as':'Teams'});db[_0xd00a('0x5f')][_0xd00a('0x109')](db[_0xd00a('0x16f')],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x169'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x5f')][_0xd00a('0x109')](db['CannedAnswer'],{'as':_0xd00a('0x159'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x5f')][_0xd00a('0x109')](db[_0xd00a('0x6a')],{'as':_0xd00a('0x186')});db['ChatWebsite'][_0xd00a('0x109')](db[_0xd00a('0x64')],{'as':_0xd00a('0x15a')});db['ChatWebsite'][_0xd00a('0x109')](db[_0xd00a('0x187')],{'as':_0xd00a('0x138')});db[_0xd00a('0x5f')]['hasMany'](db['ChatMessage'],{'as':_0xd00a('0x14c')});db[_0xd00a('0x5f')][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db[_0xd00a('0x5f')]['belongsTo'](db[_0xd00a('0x7c')],{'as':_0xd00a('0x7c'),'foreignKey':_0xd00a('0x145')});db[_0xd00a('0x5f')][_0xd00a('0x114')](db[_0xd00a('0x3b')],{'as':_0xd00a('0x3b'),'foreignKey':_0xd00a('0x154')});db['ChatWebsite'][_0xd00a('0x114')](db[_0xd00a('0x7e')],{'as':_0xd00a('0x173'),'foreignKey':_0xd00a('0x15e')});db[_0xd00a('0x5f')]['belongsToMany'](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x12d')});db['OpenchannelQueueReport'][_0xd00a('0x114')](db['OpenchannelAccount'],{});db['OpenchannelQueueReport'][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':'List','foreignKey':_0xd00a('0x16c')});db[_0xd00a('0x61')][_0xd00a('0x114')](db[_0xd00a('0x119')],{'as':_0xd00a('0x153'),'foreignKey':'ContactId'});db[_0xd00a('0x61')][_0xd00a('0x114')](db[_0xd00a('0x5b')],{});db[_0xd00a('0x61')]['belongsTo'](db[_0xd00a('0x182')],{});db[_0xd00a('0x61')][_0xd00a('0x114')](db['User'],{});db[_0xd00a('0x61')]['belongsTo'](db[_0xd00a('0x5d')],{});db['ChatApplication'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x188'),'foreignKey':_0xd00a('0x107'),'onDelete':_0xd00a('0x156')});db[_0xd00a('0x187')][_0xd00a('0x114')](db['ChatQueue'],{'as':'Queue','foreignKey':_0xd00a('0x189'),'onDelete':_0xd00a('0x156')});db[_0xd00a('0x187')][_0xd00a('0x114')](db[_0xd00a('0x5f')],{'as':'Website','foreignKey':_0xd00a('0x169'),'onDelete':_0xd00a('0x156')});db[_0xd00a('0x187')][_0xd00a('0x114')](db[_0xd00a('0x84')],{'onDelete':_0xd00a('0x156'),'foreignKey':'TagId'});db[_0xd00a('0x64')][_0xd00a('0x109')](db[_0xd00a('0x66')],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x18a')});db[_0xd00a('0x64')][_0xd00a('0x114')](db[_0xd00a('0x5f')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x64')][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db[_0xd00a('0x13')],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db['ChatInteraction'][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x18b'),'as':_0xd00a('0x164')});db[_0xd00a('0x64')]['belongsToMany'](db['Tag'],{'through':_0xd00a('0x18b'),'as':'ThroughTags'});db[_0xd00a('0x64')]['belongsToMany'](db['User'],{'as':_0xd00a('0x166'),'through':_0xd00a('0x18c'),'foreignKey':_0xd00a('0x18a')});db[_0xd00a('0x66')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x13')});db['ChatMessage'][_0xd00a('0x114')](db[_0xd00a('0x119')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0x66')][_0xd00a('0x114')](db[_0xd00a('0x64')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x168'),'foreignKey':'ChatInteractionId'});db['ChatMessage']['belongsTo'](db[_0xd00a('0xe0')],{'as':_0xd00a('0xe0'),'foreignKey':'AttachmentId'});db[_0xd00a('0x66')][_0xd00a('0x114')](db[_0xd00a('0x5f')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x68')][_0xd00a('0x109')](db[_0xd00a('0xe0')],{'as':'Attachments','foreignKey':'ChatOfflineMessageId','onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x68')][_0xd00a('0x114')](db[_0xd00a('0x119')],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0x68')]['belongsTo'](db[_0xd00a('0x5f')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x127')]['belongsToMany'](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x2e'),'hooks':!![]});db[_0xd00a('0x127')][_0xd00a('0x116')](db[_0xd00a('0x11d')],{'through':_0xd00a('0x18d'),'as':'Teams'});db[_0xd00a('0x18e')][_0xd00a('0x109')](db[_0xd00a('0xc3')],{'as':_0xd00a('0x14c'),'foreignKey':_0xd00a('0x18f'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x18e')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x13c'),'through':_0xd00a('0x118')});db[_0xd00a('0x6a')][_0xd00a('0x114')](db[_0xd00a('0x5f')],{'as':_0xd00a('0x190'),'foreignKey':_0xd00a('0x169')});db[_0xd00a('0x6c')][_0xd00a('0x109')](db[_0xd00a('0x119')],{'as':'Contacts','foreignKey':_0xd00a('0x191')});db['CmContact'][_0xd00a('0x109')](db[_0xd00a('0x87')],{'as':_0xd00a('0x192'),'foreignKey':_0xd00a('0x193')});db[_0xd00a('0x119')][_0xd00a('0x109')](db[_0xd00a('0x6e')],{'as':'Hoppers','foreignKey':_0xd00a('0x175')});db[_0xd00a('0x119')][_0xd00a('0x109')](db[_0xd00a('0x71')],{'as':_0xd00a('0x13e'),'foreignKey':'ContactId'});db[_0xd00a('0x119')][_0xd00a('0x109')](db[_0xd00a('0x73')],{'as':'HopperHistories','foreignKey':_0xd00a('0x175')});db[_0xd00a('0x119')][_0xd00a('0x109')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xd00a('0x175')});db[_0xd00a('0x119')][_0xd00a('0x109')](db['JscriptySessionReport'],{'as':_0xd00a('0x141'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0x119')]['hasMany'](db[_0xd00a('0x5b')],{'as':_0xd00a('0x123'),'foreignKey':'ContactId','onDelete':_0xd00a('0x156')});db[_0xd00a('0x119')]['hasMany'](db[_0xd00a('0x64')],{'as':_0xd00a('0x10d'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0xd00a('0x119')]['hasMany'](db[_0xd00a('0x55')],{'as':'SmsInteractions','foreignKey':_0xd00a('0x175'),'onDelete':'restrict'});db[_0xd00a('0x119')][_0xd00a('0x109')](db[_0xd00a('0x4b')],{'as':_0xd00a('0x120'),'foreignKey':_0xd00a('0x175'),'onDelete':'restrict'});db[_0xd00a('0x119')]['hasMany'](db[_0xd00a('0x10e')],{'as':_0xd00a('0x10f'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0xd00a('0x119')][_0xd00a('0x114')](db[_0xd00a('0x6c')],{'as':'Company','foreignKey':'CompanyId'});db['CmContact']['belongsTo'](db[_0xd00a('0xeb')],{'as':'List','foreignKey':'ListId','onDelete':_0xd00a('0x106')});db[_0xd00a('0x119')]['belongsToMany'](db[_0xd00a('0x13')],{'as':_0xd00a('0x166'),'through':_0xd00a('0x11b')});db[_0xd00a('0x119')][_0xd00a('0x116')](db['Tag'],{'as':_0xd00a('0x164'),'through':_0xd00a('0x194')});db[_0xd00a('0x119')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x194'),'as':'ThroughTags'});db[_0xd00a('0x6e')][_0xd00a('0x109')](db[_0xd00a('0x89')],{'as':'AdditionalPhones','foreignKey':_0xd00a('0x195')});db[_0xd00a('0x6e')][_0xd00a('0x114')](db[_0xd00a('0x119')],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x6e')]['belongsTo'](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c'),'onDelete':'cascade'});db[_0xd00a('0x6e')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x188'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x6e')][_0xd00a('0x114')](db[_0xd00a('0x1a')],{'as':_0xd00a('0x196'),'foreignKey':_0xd00a('0x13d'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x6e')][_0xd00a('0x114')](db['Campaign'],{'as':'Campaign','foreignKey':_0xd00a('0x197'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x6e')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x198')});db[_0xd00a('0x140')][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':'ContactId','onDelete':'cascade'});db[_0xd00a('0x140')][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x140')][_0xd00a('0x114')](db[_0xd00a('0x1a')],{'as':_0xd00a('0x196'),'foreignKey':_0xd00a('0x13d'),'onDelete':'cascade'});db[_0xd00a('0x140')][_0xd00a('0x114')](db[_0xd00a('0xdc')],{'as':_0xd00a('0xdc'),'foreignKey':_0xd00a('0x197'),'onDelete':_0xd00a('0x106')});db['Automation']['hasMany'](db[_0xd00a('0x199')],{'as':{'plural':_0xd00a('0x19a'),'singular':_0xd00a('0x19b')},'foreignKey':_0xd00a('0x19c'),'onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x77')][_0xd00a('0x109')](db[_0xd00a('0x199')],{'as':{'plural':_0xd00a('0x19d'),'singular':_0xd00a('0x19e')},'foreignKey':_0xd00a('0x19f'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0xd00a('0x109')](db[_0xd00a('0x75')],{'as':'Actions','foreignKey':_0xd00a('0x1a0'),'onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x16f')][_0xd00a('0x109')](db['Disposition'],{'as':_0xd00a('0x158'),'foreignKey':'ParentId','onDelete':'cascade'});db[_0xd00a('0x7c')]['hasMany'](db[_0xd00a('0x7c')],{'as':_0xd00a('0x1a1'),'foreignKey':_0xd00a('0x145'),'onDelete':_0xd00a('0x106'),'hooks':!![],'required':![]});db[_0xd00a('0x7c')]['hasMany'](db['VoiceExtension'],{'as':_0xd00a('0x1a2'),'foreignKey':_0xd00a('0x145'),'onDelete':_0xd00a('0x156')});db[_0xd00a('0x7c')]['hasMany'](db['MailApplication'],{'as':'MailApplications','foreignKey':'IntervalId'});db['Interval'][_0xd00a('0x109')](db[_0xd00a('0x187')],{'as':_0xd00a('0x1a3'),'foreignKey':_0xd00a('0x145')});db['Interval'][_0xd00a('0x109')](db[_0xd00a('0x4a')],{'as':_0xd00a('0x1a4'),'foreignKey':_0xd00a('0x145')});db[_0xd00a('0x7c')][_0xd00a('0x109')](db[_0xd00a('0x53')],{'as':_0xd00a('0x1a5'),'foreignKey':_0xd00a('0x145')});db['Schedule'][_0xd00a('0x114')](db[_0xd00a('0x3b')],{});db[_0xd00a('0x1a6')][_0xd00a('0x114')](db[_0xd00a('0x1a7')],{'foreignKey':_0xd00a('0x1a8')});db[_0xd00a('0x1a6')][_0xd00a('0x114')](db[_0xd00a('0x93')],{'foreignKey':_0xd00a('0x1a9')});db[_0xd00a('0x139')]['belongsToMany'](db[_0xd00a('0x19')],{'as':_0xd00a('0x1aa'),'through':'moh_has_sounds','onDelete':_0xd00a('0x156')});db[_0xd00a('0x84')]['belongsToMany'](db[_0xd00a('0x119')],{'through':'cm_contact_has_tags'});db[_0xd00a('0x84')][_0xd00a('0x116')](db['ChatInteraction'],{'through':_0xd00a('0x18b')});db[_0xd00a('0x84')]['belongsToMany'](db['MailInteraction'],{'through':_0xd00a('0x163')});db[_0xd00a('0x84')][_0xd00a('0x116')](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0xd00a('0x84')][_0xd00a('0x116')](db[_0xd00a('0x4b')],{'through':'fax_interaction_has_tags'});db[_0xd00a('0x84')]['belongsToMany'](db[_0xd00a('0x5b')],{'through':'openchannel_interaction_has_tags'});db['Tag'][_0xd00a('0x116')](db[_0xd00a('0x110')],{'through':'whatsapp_interaction_has_tags'});db[_0xd00a('0x87')]['belongsTo'](db['ContactItemType'],{'as':'ItemType','foreignKey':_0xd00a('0x1ab')});db[_0xd00a('0x89')]['belongsTo'](db[_0xd00a('0x6e')],{'as':'Hopper','foreignKey':_0xd00a('0x195')});db[_0xd00a('0x87')][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x193')});db['Trigger'][_0xd00a('0x109')](db[_0xd00a('0x199')],{'as':{'plural':_0xd00a('0x1ac'),'singular':_0xd00a('0x1ad')},'foreignKey':_0xd00a('0x1ae'),'onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x8b')][_0xd00a('0x109')](db[_0xd00a('0x199')],{'as':{'plural':'AnyConditions','singular':_0xd00a('0x1af')},'foreignKey':_0xd00a('0x1b0'),'onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x8b')][_0xd00a('0x109')](db[_0xd00a('0x75')],{'as':_0xd00a('0x1b1'),'foreignKey':'TriggerId','onDelete':_0xd00a('0x106'),'hooks':!![]});db[_0xd00a('0x93')]['hasMany'](db[_0xd00a('0x1b2')],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1a9'),'hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db['AnalyticFieldReport'],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1a8')});db['AnalyticMetric'][_0xd00a('0x109')](db[_0xd00a('0x1b2')],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b4')});db[_0xd00a('0x1b2')][_0xd00a('0x114')](db[_0xd00a('0x1b5')],{'foreignKey':_0xd00a('0x1b4')});db['SalesforceAccount'][_0xd00a('0x109')](db[_0xd00a('0x99')],{'as':'Configurations','onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x99')]['hasMany'](db[_0xd00a('0x9a')],{'as':_0xd00a('0x1b7'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0x99')][_0xd00a('0x109')](db[_0xd00a('0x9a')],{'as':_0xd00a('0x1b9'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0x99')]['hasMany'](db['SalesforceField'],{'as':'Fields','onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1bb')});db['SalesforceConfiguration'][_0xd00a('0x114')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x9a')][_0xd00a('0x109')](db[_0xd00a('0x9a')],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0x9a')]['hasMany'](db[_0xd00a('0x9a')],{'as':'Description','foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0x9a')][_0xd00a('0x109')](db['SalesforceField'],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0x9a')][_0xd00a('0x114')](db['Variable'],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db['SugarcrmAccount']['hasMany'](db['SugarcrmConfiguration'],{'as':_0xd00a('0x1bf'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x9e')][_0xd00a('0x109')](db[_0xd00a('0x1c0')],{'as':'Subjects','onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b8')});db['SugarcrmConfiguration']['hasMany'](db['SugarcrmField'],{'as':_0xd00a('0x1b9'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0x9e')][_0xd00a('0x109')](db[_0xd00a('0x1c0')],{'as':'Fields','onDelete':_0xd00a('0x106'),'foreignKey':'FieldId'});db[_0xd00a('0x9e')][_0xd00a('0x114')](db[_0xd00a('0x9c')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x1c0')][_0xd00a('0x109')](db[_0xd00a('0x1c0')],{'as':_0xd00a('0x1bc'),'foreignKey':'SubjectId'});db['SugarcrmField'][_0xd00a('0x109')](db[_0xd00a('0x1c0')],{'as':_0xd00a('0x1c1'),'foreignKey':'DescriptionId'});db[_0xd00a('0x1c0')][_0xd00a('0x109')](db[_0xd00a('0x1c0')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0x1c0')][_0xd00a('0x114')](db['Variable'],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db[_0xd00a('0xa1')][_0xd00a('0x109')](db[_0xd00a('0x1c2')],{'as':'Configurations','onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x1c2')]['hasMany'](db[_0xd00a('0xa3')],{'as':_0xd00a('0x1b7'),'onDelete':'cascade','foreignKey':_0xd00a('0x1b8')});db['DeskConfiguration']['hasMany'](db[_0xd00a('0xa3')],{'as':_0xd00a('0x1b9'),'onDelete':_0xd00a('0x106'),'foreignKey':'DescriptionId'});db['DeskConfiguration'][_0xd00a('0x109')](db['DeskField'],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1bb')});db['DeskConfiguration'][_0xd00a('0x114')](db['DeskAccount'],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0x1c2')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x1c3')});db[_0xd00a('0xa3')][_0xd00a('0x109')](db[_0xd00a('0xa3')],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db['DeskField'][_0xd00a('0x109')](db[_0xd00a('0xa3')],{'as':'Description','foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xa3')][_0xd00a('0x109')](db[_0xd00a('0xa3')],{'as':'Field','foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xa3')]['belongsTo'](db[_0xd00a('0x8d')],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db['ZohoAccount'][_0xd00a('0x109')](db[_0xd00a('0xa6')],{'as':'Configurations','onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db['ZohoConfiguration'][_0xd00a('0x109')](db[_0xd00a('0x1c4')],{'as':_0xd00a('0x1b7'),'onDelete':'cascade','foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0xa6')][_0xd00a('0x109')](db[_0xd00a('0x1c4')],{'as':_0xd00a('0x1b9'),'onDelete':_0xd00a('0x106'),'foreignKey':'DescriptionId'});db['ZohoConfiguration']['hasMany'](db[_0xd00a('0x1c4')],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xa6')][_0xd00a('0x114')](db[_0xd00a('0xa4')],{'as':'Account','foreignKey':_0xd00a('0x1b6')});db['ZohoField'][_0xd00a('0x109')](db['ZohoField'],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0x1c4')][_0xd00a('0x109')](db[_0xd00a('0x1c4')],{'as':_0xd00a('0x1c1'),'foreignKey':'DescriptionId'});db[_0xd00a('0x1c4')]['hasMany'](db[_0xd00a('0x1c4')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0x1c4')][_0xd00a('0x114')](db['Variable'],{'as':'Variable','foreignKey':_0xd00a('0x1be')});db[_0xd00a('0xa9')][_0xd00a('0x109')](db[_0xd00a('0xaa')],{'as':_0xd00a('0x1bf'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xaa')]['hasMany'](db['ZendeskField'],{'as':_0xd00a('0x1b7'),'foreignKey':_0xd00a('0x1b8')});db['ZendeskConfiguration'][_0xd00a('0x109')](db[_0xd00a('0xac')],{'as':_0xd00a('0x1b9'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xaa')][_0xd00a('0x109')](db[_0xd00a('0xac')],{'as':_0xd00a('0x1b3'),'foreignKey':'FieldId'});db[_0xd00a('0xaa')][_0xd00a('0x114')](db['ZendeskAccount'],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xaa')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x1c5')});db[_0xd00a('0xac')][_0xd00a('0x109')](db[_0xd00a('0xac')],{'as':'Subject','foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0xac')]['hasMany'](db[_0xd00a('0xac')],{'as':_0xd00a('0x1c1'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xac')]['hasMany'](db[_0xd00a('0xac')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xac')][_0xd00a('0x114')](db[_0xd00a('0x8d')],{'as':_0xd00a('0x8d'),'foreignKey':'VariableId'});db['FreshdeskAccount']['hasMany'](db[_0xd00a('0xad')],{'as':_0xd00a('0x1bf'),'onDelete':'cascade','foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xad')]['hasMany'](db['FreshdeskField'],{'as':_0xd00a('0x1b7'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0xad')][_0xd00a('0x109')](db['FreshdeskField'],{'as':_0xd00a('0x1b9'),'onDelete':'cascade','foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xad')][_0xd00a('0x109')](db[_0xd00a('0xaf')],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':'FieldId'});db['FreshdeskConfiguration'][_0xd00a('0x114')](db[_0xd00a('0x1c6')],{'as':'Account','foreignKey':'AccountId'});db[_0xd00a('0xad')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x1c7')});db[_0xd00a('0xaf')]['hasMany'](db[_0xd00a('0xaf')],{'as':_0xd00a('0x1bc'),'foreignKey':'SubjectId'});db[_0xd00a('0xaf')][_0xd00a('0x109')](db['FreshdeskField'],{'as':_0xd00a('0x1c1'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xaf')]['hasMany'](db[_0xd00a('0xaf')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db['FreshdeskField'][_0xd00a('0x114')](db[_0xd00a('0x8d')],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db['VtigerAccount']['hasMany'](db[_0xd00a('0x1c8')],{'as':_0xd00a('0x1bf'),'onDelete':_0xd00a('0x106'),'foreignKey':'AccountId'});db['VtigerConfiguration']['hasMany'](db['VtigerField'],{'as':_0xd00a('0x1b7'),'foreignKey':_0xd00a('0x1b8')});db['VtigerConfiguration'][_0xd00a('0x109')](db[_0xd00a('0xb3')],{'as':_0xd00a('0x1b9'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0x1c8')][_0xd00a('0x109')](db[_0xd00a('0xb3')],{'as':_0xd00a('0x1b3'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0x1c8')][_0xd00a('0x114')](db[_0xd00a('0xb1')],{'as':'Account','foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xb3')]['hasMany'](db[_0xd00a('0xb3')],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db['VtigerField'][_0xd00a('0x109')](db[_0xd00a('0xb3')],{'as':'Description','foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xb3')]['hasMany'](db[_0xd00a('0xb3')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xb3')][_0xd00a('0x114')](db[_0xd00a('0x8d')],{'as':_0xd00a('0x8d'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0xd00a('0x109')](db['ServicenowConfiguration'],{'as':_0xd00a('0x1bf'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xb6')][_0xd00a('0x109')](db[_0xd00a('0xb7')],{'as':_0xd00a('0x1b7'),'foreignKey':_0xd00a('0x1b8')});db['ServicenowConfiguration'][_0xd00a('0x109')](db[_0xd00a('0xb7')],{'as':'Descriptions','foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xb6')]['hasMany'](db['ServicenowField'],{'as':_0xd00a('0x1b3'),'foreignKey':'FieldId'});db[_0xd00a('0xb6')][_0xd00a('0x114')](db[_0xd00a('0xb5')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xb7')][_0xd00a('0x109')](db['ServicenowField'],{'as':_0xd00a('0x1bc'),'foreignKey':'SubjectId'});db[_0xd00a('0xb7')][_0xd00a('0x109')](db[_0xd00a('0xb7')],{'as':_0xd00a('0x1c1'),'foreignKey':_0xd00a('0x1ba')});db['ServicenowField']['hasMany'](db[_0xd00a('0xb7')],{'as':'Field','foreignKey':'FieldId'});db[_0xd00a('0xb7')]['belongsTo'](db[_0xd00a('0x8d')],{'as':'Variable','foreignKey':_0xd00a('0x1be')});db[_0xd00a('0xb8')][_0xd00a('0x109')](db['Dynamics365Configuration'],{'as':_0xd00a('0x1bf'),'onDelete':_0xd00a('0x106'),'foreignKey':'AccountId'});db[_0xd00a('0xb8')][_0xd00a('0x114')](db[_0xd00a('0xfb')],{'as':_0xd00a('0xfb'),'foreignKey':_0xd00a('0x155')});db[_0xd00a('0xba')][_0xd00a('0x109')](db['Dynamics365Field'],{'as':_0xd00a('0x1b7'),'onDelete':_0xd00a('0x106'),'foreignKey':'SubjectId'});db[_0xd00a('0xba')][_0xd00a('0x109')](db[_0xd00a('0xbc')],{'as':_0xd00a('0x1b9'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xba')]['hasMany'](db[_0xd00a('0xbc')],{'as':_0xd00a('0x1b3'),'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1bb')});db['Dynamics365Configuration'][_0xd00a('0x114')](db[_0xd00a('0xb8')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xbc')][_0xd00a('0x109')](db['Dynamics365Field'],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0xbc')]['hasMany'](db[_0xd00a('0xbc')],{'as':_0xd00a('0x1c1'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xbc')][_0xd00a('0x109')](db[_0xd00a('0xbc')],{'as':'Field','foreignKey':_0xd00a('0x1bb')});db['Dynamics365Field']['belongsTo'](db['Variable'],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db[_0xd00a('0xbe')][_0xd00a('0x109')](db[_0xd00a('0xbf')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xbf')][_0xd00a('0x109')](db[_0xd00a('0xc0')],{'as':_0xd00a('0x1b7'),'foreignKey':'SubjectId'});db[_0xd00a('0xbf')][_0xd00a('0x109')](db[_0xd00a('0xc0')],{'as':_0xd00a('0x1b9'),'foreignKey':_0xd00a('0x1ba')});db[_0xd00a('0xbf')][_0xd00a('0x109')](db[_0xd00a('0xc0')],{'as':_0xd00a('0x1b3'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xbf')]['belongsTo'](db[_0xd00a('0xbe')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1b6')});db[_0xd00a('0xc0')]['hasMany'](db[_0xd00a('0xc0')],{'as':_0xd00a('0x1bc'),'foreignKey':_0xd00a('0x1b8')});db[_0xd00a('0xc0')]['hasMany'](db['FreshsalesField'],{'as':_0xd00a('0x1c1'),'foreignKey':'DescriptionId'});db['FreshsalesField']['hasMany'](db[_0xd00a('0xc0')],{'as':_0xd00a('0x1bd'),'foreignKey':_0xd00a('0x1bb')});db[_0xd00a('0xc0')][_0xd00a('0x114')](db[_0xd00a('0x8d')],{'as':_0xd00a('0x8d'),'foreignKey':_0xd00a('0x1be')});db[_0xd00a('0xc2')]['belongsTo'](db[_0xd00a('0x5f')],{});db['ChatQueueReport'][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db['ChatQueueReport'][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':'ContactId'});db[_0xd00a('0xc2')][_0xd00a('0x114')](db[_0xd00a('0x64')],{});db[_0xd00a('0xc2')][_0xd00a('0x114')](db[_0xd00a('0x66')],{});db[_0xd00a('0xc2')]['belongsTo'](db['User'],{});db[_0xd00a('0xc2')]['belongsTo'](db[_0xd00a('0x127')],{});db['ChatInternalMessage'][_0xd00a('0x114')](db['User'],{'onDelete':'cascade','foreignKey':'FromId'});db[_0xd00a('0xc3')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'onDelete':_0xd00a('0x106'),'foreignKey':_0xd00a('0x1c9')});db[_0xd00a('0xc8')][_0xd00a('0x109')](db[_0xd00a('0xc6')],{'foreignKey':_0xd00a('0x1ca'),'onDelete':'cascade'});db[_0xd00a('0xc8')][_0xd00a('0x109')](db[_0xd00a('0x1cb')],{'foreignKey':_0xd00a('0x1ca'),'onDelete':'cascade'});db[_0xd00a('0xca')][_0xd00a('0x114')](db[_0xd00a('0x51')],{});db[_0xd00a('0xca')]['belongsTo'](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db[_0xd00a('0xca')]['belongsTo'](db[_0xd00a('0x119')],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db[_0xd00a('0xca')]['belongsTo'](db[_0xd00a('0x55')],{});db[_0xd00a('0xca')][_0xd00a('0x114')](db['SmsMessage'],{});db[_0xd00a('0xca')][_0xd00a('0x114')](db[_0xd00a('0x13')],{});db[_0xd00a('0xca')][_0xd00a('0x114')](db['SmsQueue'],{});db[_0xd00a('0xd0')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0xd00a('0x1cc')});db[_0xd00a('0xd0')][_0xd00a('0x109')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0xd00a('0x109')](db[_0xd00a('0x1cb')],{'foreignKey':_0xd00a('0x1cc')});db[_0xd00a('0x11d')][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x11e')});db['Team'][_0xd00a('0x116')](db[_0xd00a('0x1a')],{'through':_0xd00a('0xfd'),'as':_0xd00a('0x1cd')});db[_0xd00a('0x11d')][_0xd00a('0x116')](db['MailQueue'],{'through':_0xd00a('0x1ce'),'as':_0xd00a('0x1cf')});db[_0xd00a('0x11d')][_0xd00a('0x116')](db['ChatQueue'],{'through':_0xd00a('0x18d'),'as':'ChatQueues'});db[_0xd00a('0x11d')][_0xd00a('0x116')](db['FaxQueue'],{'through':_0xd00a('0x17b'),'as':_0xd00a('0x129')});db[_0xd00a('0x11d')][_0xd00a('0x116')](db[_0xd00a('0x12a')],{'through':_0xd00a('0x1d0'),'as':_0xd00a('0x1d1')});db[_0xd00a('0x11d')]['belongsToMany'](db[_0xd00a('0x5d')],{'through':'team_has_openchannel_queues','as':'OpenchannelQueues'});db[_0xd00a('0x11d')][_0xd00a('0x116')](db[_0xd00a('0x1d2')],{'through':_0xd00a('0x1d3'),'as':_0xd00a('0x1d4')});db[_0xd00a('0x11d')][_0xd00a('0x116')](db[_0xd00a('0x126')],{'through':_0xd00a('0xff'),'as':'VoicePrefixes'});db['Campaign'][_0xd00a('0x109')](db[_0xd00a('0x6e')],{'as':'Hoppers','foreignKey':'CampaignId'});db[_0xd00a('0xdc')][_0xd00a('0x109')](db[_0xd00a('0x71')],{'as':_0xd00a('0x13e'),'foreignKey':_0xd00a('0x197')});db[_0xd00a('0xdc')][_0xd00a('0x109')](db[_0xd00a('0x73')],{'as':'HopperHistories','foreignKey':_0xd00a('0x197')});db[_0xd00a('0xdc')]['hasMany'](db[_0xd00a('0x140')],{'as':_0xd00a('0x1d5'),'foreignKey':_0xd00a('0x197')});db[_0xd00a('0xdc')]['belongsTo'](db[_0xd00a('0x172')],{'as':'Trunk','foreignKey':_0xd00a('0x142')});db[_0xd00a('0xdc')][_0xd00a('0x114')](db[_0xd00a('0x172')],{'as':_0xd00a('0x143'),'foreignKey':'TrunkBackupId'});db[_0xd00a('0xdc')][_0xd00a('0x114')](db['Interval'],{'as':_0xd00a('0x7c'),'foreignKey':_0xd00a('0x145')});db[_0xd00a('0xdc')][_0xd00a('0x114')](db['SquareProject'],{'as':'SquareProject','foreignKey':_0xd00a('0x1d6')});db['Campaign'][_0xd00a('0x116')](db[_0xd00a('0xeb')],{'as':'Lists','through':'campaigns_has_cm_lists'});db['Campaign'][_0xd00a('0x116')](db['CmList'],{'as':_0xd00a('0x149'),'through':_0xd00a('0x1d7')});db['Attachment'][_0xd00a('0x114')](db[_0xd00a('0x68')],{'as':_0xd00a('0x68'),'foreignKey':'ChatOfflineMessageId'});db['MailTransferReport'][_0xd00a('0x114')](db[_0xd00a('0x40')],{});db[_0xd00a('0xe4')][_0xd00a('0x114')](db[_0xd00a('0x10e')],{});db['MailTransferReport']['belongsTo'](db[_0xd00a('0x3b')],{'foreignKey':_0xd00a('0x1d8'),'as':_0xd00a('0x1d9')});db[_0xd00a('0xe4')][_0xd00a('0x114')](db['User'],{'foreignKey':'FromUserId','as':_0xd00a('0x1da')});db[_0xd00a('0xe4')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1db'),'as':'ToAgent'});db['MailTransferReport'][_0xd00a('0x114')](db[_0xd00a('0x3c')],{'foreignKey':_0xd00a('0x1dc'),'as':_0xd00a('0x1dd')});db[_0xd00a('0xe4')][_0xd00a('0x114')](db['MailAccount'],{'foreignKey':_0xd00a('0x1de'),'as':'ToAccount'});db[_0xd00a('0xe6')][_0xd00a('0x114')](db[_0xd00a('0x66')],{});db[_0xd00a('0xe6')]['belongsTo'](db[_0xd00a('0x64')],{});db[_0xd00a('0xe6')]['belongsTo'](db[_0xd00a('0x5f')],{'foreignKey':_0xd00a('0x1df'),'as':_0xd00a('0x1d9')});db[_0xd00a('0xe6')][_0xd00a('0x114')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db['ChatTransferReport'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1db'),'as':_0xd00a('0x1e0')});db[_0xd00a('0xe6')][_0xd00a('0x114')](db[_0xd00a('0x127')],{'foreignKey':'ToChatQueueId','as':_0xd00a('0x1dd')});db[_0xd00a('0xe6')][_0xd00a('0x114')](db['ChatWebsite'],{'foreignKey':_0xd00a('0x1e1'),'as':_0xd00a('0x1e2')});db[_0xd00a('0xe7')][_0xd00a('0x114')](db['FaxMessage'],{});db['FaxTransferReport']['belongsTo'](db[_0xd00a('0x4b')],{});db[_0xd00a('0xe7')][_0xd00a('0x114')](db[_0xd00a('0x48')],{'foreignKey':_0xd00a('0x1e3'),'as':_0xd00a('0x1d9')});db['FaxTransferReport']['belongsTo'](db[_0xd00a('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd00a('0xe7')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db['FaxTransferReport'][_0xd00a('0x114')](db[_0xd00a('0x4d')],{'foreignKey':'ToFaxQueueId','as':_0xd00a('0x1dd')});db[_0xd00a('0xe7')][_0xd00a('0x114')](db[_0xd00a('0x48')],{'foreignKey':_0xd00a('0x1e4'),'as':'ToAccount'});db[_0xd00a('0xe8')][_0xd00a('0x114')](db['OpenchannelMessage'],{});db[_0xd00a('0xe8')][_0xd00a('0x114')](db[_0xd00a('0x5b')],{});db[_0xd00a('0xe8')][_0xd00a('0x114')](db[_0xd00a('0x131')],{'foreignKey':'FromOpenchannelAccountId','as':'FromAccount'});db[_0xd00a('0xe8')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xd00a('0xe8')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1db'),'as':'ToAgent'});db[_0xd00a('0xe8')][_0xd00a('0x114')](db[_0xd00a('0x5d')],{'foreignKey':_0xd00a('0x1e5'),'as':_0xd00a('0x1dd')});db[_0xd00a('0xe8')][_0xd00a('0x114')](db['OpenchannelAccount'],{'foreignKey':_0xd00a('0x1e6'),'as':_0xd00a('0x1e2')});db['SmsTransferReport'][_0xd00a('0x114')](db[_0xd00a('0x17d')],{});db[_0xd00a('0xea')][_0xd00a('0x114')](db['SmsInteraction'],{});db[_0xd00a('0xea')]['belongsTo'](db[_0xd00a('0x51')],{'foreignKey':_0xd00a('0x1e7'),'as':'FromAccount'});db[_0xd00a('0xea')]['belongsTo'](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1e8'),'as':_0xd00a('0x1da')});db[_0xd00a('0xea')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1db'),'as':_0xd00a('0x1e0')});db[_0xd00a('0xea')][_0xd00a('0x114')](db[_0xd00a('0x12a')],{'foreignKey':_0xd00a('0x1e9'),'as':_0xd00a('0x1dd')});db[_0xd00a('0xea')][_0xd00a('0x114')](db[_0xd00a('0x51')],{'foreignKey':_0xd00a('0x1ea'),'as':_0xd00a('0x1e2')});db[_0xd00a('0xeb')][_0xd00a('0x109')](db['Disposition'],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x16c'),'onDelete':'cascade'});db[_0xd00a('0xeb')][_0xd00a('0x109')](db[_0xd00a('0x1eb')],{'as':_0xd00a('0x1ec'),'foreignKey':'ListId'});db[_0xd00a('0xeb')][_0xd00a('0x109')](db[_0xd00a('0x119')],{'as':'Contacts','onDelete':'cascade','foreignKey':_0xd00a('0x16c')});db[_0xd00a('0xeb')][_0xd00a('0x109')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0xd00a('0x16c')});db['CmList'][_0xd00a('0x109')](db[_0xd00a('0x73')],{'as':_0xd00a('0x1ed'),'foreignKey':_0xd00a('0x16c')});db[_0xd00a('0xeb')][_0xd00a('0x109')](db[_0xd00a('0x10c')],{'as':_0xd00a('0x10c'),'foreignKey':_0xd00a('0x16c')});db['CmList'][_0xd00a('0x116')](db[_0xd00a('0x1a')],{'as':_0xd00a('0x1ee'),'through':_0xd00a('0x147')});db['CmList'][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':'cm_user_has_lists'});db[_0xd00a('0x126')][_0xd00a('0x109')](db['VoiceExtension'],{'as':_0xd00a('0x1a2'),'onDelete':_0xd00a('0x106')});db[_0xd00a('0x126')][_0xd00a('0x116')](db['User'],{'as':'Agents','through':_0xd00a('0x101')});db[_0xd00a('0x126')][_0xd00a('0x116')](db['Team'],{'through':_0xd00a('0xff'),'as':_0xd00a('0x15f')});db[_0xd00a('0xee')][_0xd00a('0x109')](db[_0xd00a('0x13')],{'as':_0xd00a('0x166'),'foreignKey':_0xd00a('0x115')});db[_0xd00a('0xee')][_0xd00a('0x109')](db[_0xd00a('0x1ef')],{'as':'UserProfileSections','foreignKey':_0xd00a('0x115'),'onDelete':'cascade'});db[_0xd00a('0x1ef')][_0xd00a('0x109')](db[_0xd00a('0xf1')],{'as':_0xd00a('0x1f0'),'foreignKey':_0xd00a('0x1f1'),'onDelete':_0xd00a('0x106')});db['WhatsappAccount'][_0xd00a('0x109')](db[_0xd00a('0x16f')],{'as':_0xd00a('0x158'),'foreignKey':_0xd00a('0x1f2'),'onDelete':'cascade'});db[_0xd00a('0xf3')][_0xd00a('0x109')](db[_0xd00a('0x79')],{'as':_0xd00a('0x159'),'foreignKey':_0xd00a('0x1f2')});db[_0xd00a('0xf3')][_0xd00a('0x109')](db[_0xd00a('0xf7')],{'as':_0xd00a('0x14c'),'foreignKey':'WhatsappAccountId'});db[_0xd00a('0xf3')]['hasMany'](db['WhatsappInteraction'],{'as':_0xd00a('0x15a')});db['WhatsappAccount'][_0xd00a('0x109')](db[_0xd00a('0xf5')],{'as':_0xd00a('0x138')});db[_0xd00a('0xf3')]['belongsTo'](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db[_0xd00a('0xf3')][_0xd00a('0x114')](db[_0xd00a('0x7e')],{'as':_0xd00a('0x173'),'foreignKey':_0xd00a('0x15e')});db['WhatsappAccount'][_0xd00a('0x116')](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':_0xd00a('0x135')});db['WhatsappApplication'][_0xd00a('0x114')](db[_0xd00a('0x13')],{'onDelete':'restrict'});db['WhatsappApplication'][_0xd00a('0x114')](db[_0xd00a('0x1d2')],{'onDelete':_0xd00a('0x156')});db['WhatsappApplication']['belongsTo'](db[_0xd00a('0xf3')],{'onDelete':_0xd00a('0x156')});db['WhatsappApplication'][_0xd00a('0x114')](db[_0xd00a('0x7c')],{'onDelete':_0xd00a('0x156'),'foreignKey':'IntervalId'});db[_0xd00a('0xf5')][_0xd00a('0x114')](db[_0xd00a('0x84')],{'onDelete':'restrict','foreignKey':_0xd00a('0x16b')});db[_0xd00a('0x110')][_0xd00a('0x109')](db['WhatsappMessage'],{'as':_0xd00a('0x14c'),'onDelete':_0xd00a('0x106'),'foreignKey':'WhatsappInteractionId'});db['WhatsappInteraction'][_0xd00a('0x114')](db[_0xd00a('0xf3')],{'as':_0xd00a('0x161'),'foreignKey':_0xd00a('0x1f2')});db['WhatsappInteraction'][_0xd00a('0x114')](db['CmContact'],{'as':'Contact','foreignKey':_0xd00a('0x175')});db[_0xd00a('0x110')][_0xd00a('0x114')](db['User'],{'as':_0xd00a('0x162'),'foreignKey':_0xd00a('0x107')});db[_0xd00a('0x110')][_0xd00a('0x116')](db[_0xd00a('0x84')],{'through':_0xd00a('0x1f3'),'as':'Tags'});db[_0xd00a('0x110')]['belongsToMany'](db['Tag'],{'through':_0xd00a('0x1f3'),'as':_0xd00a('0x165')});db[_0xd00a('0x110')][_0xd00a('0x116')](db['User'],{'as':'Users','through':_0xd00a('0x125'),'foreignKey':_0xd00a('0x1f4')});db[_0xd00a('0xf7')][_0xd00a('0x114')](db['User'],{'as':_0xd00a('0x13')});db[_0xd00a('0xf7')][_0xd00a('0x114')](db['CmContact'],{'onDelete':_0xd00a('0x106'),'as':_0xd00a('0x153')});db[_0xd00a('0xf7')]['belongsTo'](db[_0xd00a('0x110')],{'onDelete':_0xd00a('0x106'),'as':'Interaction','foreignKey':_0xd00a('0x1f4')});db['WhatsappMessage'][_0xd00a('0x114')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0xd00a('0x1f2')});db[_0xd00a('0x1f5')][_0xd00a('0x114')](db[_0xd00a('0xf3')],{});db[_0xd00a('0x1f5')][_0xd00a('0x114')](db[_0xd00a('0xeb')],{'as':_0xd00a('0x15b'),'foreignKey':_0xd00a('0x16c')});db['WhatsappQueueReport'][_0xd00a('0x114')](db['CmContact'],{'as':_0xd00a('0x153'),'foreignKey':_0xd00a('0x175')});db['WhatsappQueueReport'][_0xd00a('0x114')](db[_0xd00a('0x110')],{});db['WhatsappQueueReport'][_0xd00a('0x114')](db['WhatsappQueue'],{});db[_0xd00a('0x1f5')][_0xd00a('0x114')](db[_0xd00a('0xf7')],{});db[_0xd00a('0x1f5')][_0xd00a('0x114')](db[_0xd00a('0x13')],{});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0xf7')],{});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0x110')],{});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0xf3')],{'foreignKey':'FromWhatsappAccountId','as':_0xd00a('0x1d9')});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0xf3')],{'foreignKey':_0xd00a('0x1f6'),'as':_0xd00a('0x1e2')});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0x1d2')],{'foreignKey':_0xd00a('0x1f7'),'as':'ToQueue'});db[_0xd00a('0xf9')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'foreignKey':_0xd00a('0x1e8'),'as':'FromAgent'});db[_0xd00a('0xf9')][_0xd00a('0x114')](db['User'],{'foreignKey':'ToUserId','as':_0xd00a('0x1e0')});db[_0xd00a('0x1d2')]['belongsToMany'](db[_0xd00a('0x13')],{'as':_0xd00a('0x148'),'through':'UserWhatsappQueue','foreignKey':_0xd00a('0x1f8')});db['WhatsappQueue']['belongsToMany'](db[_0xd00a('0x11d')],{'through':_0xd00a('0x1d3'),'as':'Teams'});db[_0xd00a('0x103')][_0xd00a('0x114')](db[_0xd00a('0x13')],{'as':'user','foreignKey':'UserId','onDelete':'cascade','hooks':!![]});db['CloudProvider']['hasOne'](db[_0xd00a('0xb8')],{'as':'Dynamics365Account','onDelete':_0xd00a('0x156')});db[_0xd00a('0xfb')][_0xd00a('0x105')](db['MailServerIn'],{'as':_0xd00a('0x157'),'onDelete':'restrict'});db[_0xd00a('0xfb')]['hasOne'](db[_0xd00a('0x39')],{'as':_0xd00a('0x1f9'),'onDelete':_0xd00a('0x156')});module[_0xd00a('0x1fa')]={'db':db,'dbH':dbH};
\ No newline at end of file
index bff2cbd..ae1b570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0032=['/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','./api/sound','./api/tag','/api/contact_item_types','/api/cm_contact_has_items','./api/cmContactHasItem','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','/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/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/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/license','./api/campaign','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','get','sendFile','resolve','/index.html','path','./errors','./config/environment','./utils/client-side-logger','setupLoggers','default','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField'];(function(_0xd558c,_0x4d3fc0){var _0x4abc73=function(_0x1c4aef){while(--_0x1c4aef){_0xd558c['push'](_0xd558c['shift']());}};_0x4abc73(++_0x4d3fc0);}(_0x0032,0xbb));var _0x2003=function(_0x5362da,_0x5e53dd){_0x5362da=_0x5362da-0x0;var _0x3d968=_0x0032[_0x5362da];return _0x3d968;};'use strict';var path=require(_0x2003('0x0'));var express=require('express');var errors=require(_0x2003('0x1'));var config=require(_0x2003('0x2'));var setupLoggers=require(_0x2003('0x3'))[_0x2003('0x4')];var clientSideLogs=require('./api/client-side-logs');exports[_0x2003('0x5')]=function(_0x16c59d){return setupLoggers(_0x16c59d)['then'](function(){_0x16c59d[_0x2003('0x6')](_0x2003('0x7'),require(_0x2003('0x8')));_0x16c59d['use'](_0x2003('0x9'),require(_0x2003('0xa')));_0x16c59d[_0x2003('0x6')](_0x2003('0xb'),require(_0x2003('0xc')));_0x16c59d[_0x2003('0x6')](_0x2003('0xd'),require(_0x2003('0xe')));_0x16c59d[_0x2003('0x6')](_0x2003('0xf'),require('./api/voiceMusicOnHold'));_0x16c59d[_0x2003('0x6')]('/api/voice/queues',require('./api/voiceQueue'));_0x16c59d[_0x2003('0x6')](_0x2003('0x10'),require(_0x2003('0x11')));_0x16c59d[_0x2003('0x6')](_0x2003('0x12'),require(_0x2003('0x13')));_0x16c59d[_0x2003('0x6')](_0x2003('0x14'),require(_0x2003('0x15')));_0x16c59d['use'](_0x2003('0x16'),require(_0x2003('0x17')));_0x16c59d[_0x2003('0x6')](_0x2003('0x18'),require(_0x2003('0x19')));_0x16c59d[_0x2003('0x6')](_0x2003('0x1a'),require('./api/voiceDialReport'));_0x16c59d[_0x2003('0x6')](_0x2003('0x1b'),require(_0x2003('0x1c')));_0x16c59d['use'](_0x2003('0x1d'),require('./api/voiceQueueReport'));_0x16c59d[_0x2003('0x6')](_0x2003('0x1e'),require(_0x2003('0x1f')));_0x16c59d[_0x2003('0x6')](_0x2003('0x20'),require(_0x2003('0x21')));_0x16c59d[_0x2003('0x6')](_0x2003('0x22'),require(_0x2003('0x23')));_0x16c59d[_0x2003('0x6')]('/api/mail/out_servers',require(_0x2003('0x24')));_0x16c59d[_0x2003('0x6')](_0x2003('0x25'),require(_0x2003('0x26')));_0x16c59d['use']('/api/mail/queues',require(_0x2003('0x27')));_0x16c59d[_0x2003('0x6')](_0x2003('0x28'),require(_0x2003('0x29')));_0x16c59d[_0x2003('0x6')](_0x2003('0x2a'),require('./api/mailInteraction'));_0x16c59d['use'](_0x2003('0x2b'),require(_0x2003('0x2c')));_0x16c59d['use'](_0x2003('0x2d'),require('./api/mailApplication'));_0x16c59d['use'](_0x2003('0x2e'),require('./api/mailQueueReport'));_0x16c59d['use'](_0x2003('0x2f'),require(_0x2003('0x30')));_0x16c59d[_0x2003('0x6')]('/api/dashboards/items',require(_0x2003('0x31')));_0x16c59d['use'](_0x2003('0x32'),require(_0x2003('0x33')));_0x16c59d[_0x2003('0x6')](_0x2003('0x34'),require(_0x2003('0x35')));_0x16c59d['use'](_0x2003('0x36'),require(_0x2003('0x37')));_0x16c59d[_0x2003('0x6')](_0x2003('0x38'),require(_0x2003('0x39')));_0x16c59d[_0x2003('0x6')](_0x2003('0x3a'),require(_0x2003('0x3b')));_0x16c59d[_0x2003('0x6')](_0x2003('0x3c'),require(_0x2003('0x3d')));_0x16c59d['use']('/api/sms/accounts',require(_0x2003('0x3e')));_0x16c59d[_0x2003('0x6')]('/api/sms/applications',require(_0x2003('0x3f')));_0x16c59d['use'](_0x2003('0x40'),require(_0x2003('0x41')));_0x16c59d[_0x2003('0x6')]('/api/sms/messages',require(_0x2003('0x42')));_0x16c59d['use'](_0x2003('0x43'),require(_0x2003('0x44')));_0x16c59d[_0x2003('0x6')]('/api/openchannel/accounts',require(_0x2003('0x45')));_0x16c59d[_0x2003('0x6')](_0x2003('0x46'),require(_0x2003('0x47')));_0x16c59d[_0x2003('0x6')]('/api/openchannel/interactions',require('./api/openchannelInteraction'));_0x16c59d['use'](_0x2003('0x48'),require(_0x2003('0x49')));_0x16c59d[_0x2003('0x6')](_0x2003('0x4a'),require(_0x2003('0x4b')));_0x16c59d[_0x2003('0x6')](_0x2003('0x4c'),require(_0x2003('0x4d')));_0x16c59d['use']('/api/openchannel/reports/queue',require(_0x2003('0x4e')));_0x16c59d[_0x2003('0x6')](_0x2003('0x4f'),require(_0x2003('0x50')));_0x16c59d[_0x2003('0x6')]('/api/chat/interactions',require(_0x2003('0x51')));_0x16c59d[_0x2003('0x6')](_0x2003('0x52'),require(_0x2003('0x53')));_0x16c59d[_0x2003('0x6')](_0x2003('0x54'),require(_0x2003('0x55')));_0x16c59d['use'](_0x2003('0x56'),require('./api/chatQueue'));_0x16c59d[_0x2003('0x6')](_0x2003('0x57'),require(_0x2003('0x58')));_0x16c59d[_0x2003('0x6')](_0x2003('0x59'),require(_0x2003('0x5a')));_0x16c59d[_0x2003('0x6')](_0x2003('0x5b'),require(_0x2003('0x5c')));_0x16c59d[_0x2003('0x6')](_0x2003('0x5d'),require('./api/cmContact'));_0x16c59d[_0x2003('0x6')](_0x2003('0x5e'),require(_0x2003('0x5f')));_0x16c59d[_0x2003('0x6')]('/api/cm/hopper_black',require(_0x2003('0x60')));_0x16c59d[_0x2003('0x6')](_0x2003('0x61'),require(_0x2003('0x62')));_0x16c59d['use'](_0x2003('0x63'),require(_0x2003('0x64')));_0x16c59d['use'](_0x2003('0x65'),require(_0x2003('0x66')));_0x16c59d[_0x2003('0x6')](_0x2003('0x67'),require(_0x2003('0x68')));_0x16c59d[_0x2003('0x6')](_0x2003('0x69'),require(_0x2003('0x6a')));_0x16c59d['use'](_0x2003('0x6b'),require(_0x2003('0x6c')));_0x16c59d[_0x2003('0x6')](_0x2003('0x6d'),require(_0x2003('0x6e')));_0x16c59d['use'](_0x2003('0x6f'),require(_0x2003('0x70')));_0x16c59d[_0x2003('0x6')](_0x2003('0x71'),require(_0x2003('0x72')));_0x16c59d['use'](_0x2003('0x73'),require(_0x2003('0x74')));_0x16c59d[_0x2003('0x6')](_0x2003('0x75'),require(_0x2003('0x76')));_0x16c59d[_0x2003('0x6')](_0x2003('0x77'),require(_0x2003('0x78')));_0x16c59d[_0x2003('0x6')](_0x2003('0x79'),require(_0x2003('0x7a')));_0x16c59d[_0x2003('0x6')]('/api/sounds',require(_0x2003('0x7b')));_0x16c59d[_0x2003('0x6')]('/api/tags',require(_0x2003('0x7c')));_0x16c59d[_0x2003('0x6')](_0x2003('0x7d'),require('./api/contactItemType'));_0x16c59d[_0x2003('0x6')](_0x2003('0x7e'),require(_0x2003('0x7f')));_0x16c59d[_0x2003('0x6')]('/api/cm_hopper_additional_phones',require(_0x2003('0x80')));_0x16c59d[_0x2003('0x6')](_0x2003('0x81'),require(_0x2003('0x82')));_0x16c59d[_0x2003('0x6')](_0x2003('0x83'),require(_0x2003('0x84')));_0x16c59d[_0x2003('0x6')](_0x2003('0x85'),require(_0x2003('0x86')));_0x16c59d[_0x2003('0x6')](_0x2003('0x87'),require(_0x2003('0x88')));_0x16c59d[_0x2003('0x6')](_0x2003('0x89'),require(_0x2003('0x8a')));_0x16c59d[_0x2003('0x6')]('/api/analytics/custom_reports',require(_0x2003('0x8b')));_0x16c59d[_0x2003('0x6')](_0x2003('0x8c'),require(_0x2003('0x8d')));_0x16c59d[_0x2003('0x6')]('/api/analytics/extracted_reports',require(_0x2003('0x8e')));_0x16c59d[_0x2003('0x6')](_0x2003('0x8f'),require(_0x2003('0x90')));_0x16c59d['use'](_0x2003('0x91'),require('./api/analyticFieldReport'));_0x16c59d['use'](_0x2003('0x92'),require('./api/analyticTreeReport'));_0x16c59d[_0x2003('0x6')](_0x2003('0x93'),require(_0x2003('0x94')));_0x16c59d[_0x2003('0x6')](_0x2003('0x95'),require(_0x2003('0x96')));_0x16c59d['use']('/api/integrations/salesforce/fields',require(_0x2003('0x97')));_0x16c59d[_0x2003('0x6')](_0x2003('0x98'),require('./api/intSugarcrmAccount'));_0x16c59d[_0x2003('0x6')](_0x2003('0x99'),require(_0x2003('0x9a')));_0x16c59d['use'](_0x2003('0x9b'),require('./api/intSugarcrmField'));_0x16c59d[_0x2003('0x6')](_0x2003('0x9c'),require(_0x2003('0x9d')));_0x16c59d['use'](_0x2003('0x9e'),require(_0x2003('0x9f')));_0x16c59d[_0x2003('0x6')]('/api/integrations/desk/fields',require(_0x2003('0xa0')));_0x16c59d['use']('/api/integrations/zoho/accounts',require(_0x2003('0xa1')));_0x16c59d[_0x2003('0x6')]('/api/integrations/zoho/configurations',require(_0x2003('0xa2')));_0x16c59d[_0x2003('0x6')](_0x2003('0xa3'),require('./api/intZohoField'));_0x16c59d[_0x2003('0x6')](_0x2003('0xa4'),require(_0x2003('0xa5')));_0x16c59d[_0x2003('0x6')](_0x2003('0xa6'),require(_0x2003('0xa7')));_0x16c59d['use'](_0x2003('0xa8'),require(_0x2003('0xa9')));_0x16c59d[_0x2003('0x6')](_0x2003('0xaa'),require(_0x2003('0xab')));_0x16c59d[_0x2003('0x6')](_0x2003('0xac'),require(_0x2003('0xad')));_0x16c59d[_0x2003('0x6')](_0x2003('0xae'),require('./api/intFreshdeskField'));_0x16c59d[_0x2003('0x6')](_0x2003('0xaf'),require('./api/intVtigerAccount'));_0x16c59d[_0x2003('0x6')](_0x2003('0xb0'),require(_0x2003('0xb1')));_0x16c59d['use'](_0x2003('0xb2'),require('./api/intVtigerField'));_0x16c59d[_0x2003('0x6')]('/api/integrations/servicenow/accounts',require(_0x2003('0xb3')));_0x16c59d[_0x2003('0x6')](_0x2003('0xb4'),require(_0x2003('0xb5')));_0x16c59d[_0x2003('0x6')](_0x2003('0xb6'),require('./api/intServicenowField'));_0x16c59d[_0x2003('0x6')](_0x2003('0xb7'),require(_0x2003('0xb8')));_0x16c59d[_0x2003('0x6')]('/api/integrations/dynamics365/configurations',require('./api/intDynamics365Configuration'));_0x16c59d[_0x2003('0x6')](_0x2003('0xb9'),require(_0x2003('0xba')));_0x16c59d[_0x2003('0x6')](_0x2003('0xbb'),require(_0x2003('0xbc')));_0x16c59d[_0x2003('0x6')](_0x2003('0xbd'),require(_0x2003('0xbe')));_0x16c59d[_0x2003('0x6')](_0x2003('0xbf'),require(_0x2003('0xc0')));_0x16c59d[_0x2003('0x6')](_0x2003('0xc1'),require(_0x2003('0xc2')));_0x16c59d[_0x2003('0x6')](_0x2003('0xc3'),require(_0x2003('0xc4')));_0x16c59d[_0x2003('0x6')](_0x2003('0xc5'),require('./api/chatInternalMessage'));_0x16c59d[_0x2003('0x6')](_0x2003('0xc6'),require('./api/jscriptyAnswerReport'));_0x16c59d['use'](_0x2003('0xc7'),require(_0x2003('0xc8')));_0x16c59d[_0x2003('0x6')](_0x2003('0xc9'),require(_0x2003('0xca')));_0x16c59d['use']('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x16c59d[_0x2003('0x6')](_0x2003('0xcb'),require(_0x2003('0xcc')));_0x16c59d[_0x2003('0x6')](_0x2003('0xcd'),require(_0x2003('0xce')));_0x16c59d[_0x2003('0x6')]('/api/jscripty/projects',require('./api/jscriptyProject'));_0x16c59d[_0x2003('0x6')](_0x2003('0xcf'),require(_0x2003('0xd0')));_0x16c59d[_0x2003('0x6')](_0x2003('0xd1'),require(_0x2003('0xd2')));_0x16c59d['use'](_0x2003('0xd3'),require(_0x2003('0xd4')));_0x16c59d[_0x2003('0x6')](_0x2003('0xd5'),require('./api/squareRecording'));_0x16c59d[_0x2003('0x6')](_0x2003('0xd6'),require(_0x2003('0xd7')));_0x16c59d['use'](_0x2003('0xd8'),require('./api/team'));_0x16c59d[_0x2003('0x6')]('/api/license',require(_0x2003('0xd9')));_0x16c59d[_0x2003('0x6')]('/api/campaigns',require(_0x2003('0xda')));_0x16c59d['use']('/api/migrations',require(_0x2003('0xdb')));_0x16c59d[_0x2003('0x6')]('/api/attachments',require(_0x2003('0xdc')));_0x16c59d[_0x2003('0x6')](_0x2003('0xdd'),require(_0x2003('0xde')));_0x16c59d[_0x2003('0x6')](_0x2003('0xdf'),require('./api/mailTransferReport'));_0x16c59d['use']('/api/chat/reports/transfer',require(_0x2003('0xe0')));_0x16c59d[_0x2003('0x6')](_0x2003('0xe1'),require(_0x2003('0xe2')));_0x16c59d[_0x2003('0x6')](_0x2003('0xe3'),require(_0x2003('0xe4')));_0x16c59d[_0x2003('0x6')]('/api/sms/reports/transfer',require('./api/smsTransferReport'));_0x16c59d[_0x2003('0x6')](_0x2003('0xe5'),require(_0x2003('0xe6')));_0x16c59d['use'](_0x2003('0xe7'),require(_0x2003('0xe8')));_0x16c59d[_0x2003('0x6')](_0x2003('0xe9'),require(_0x2003('0xea')));_0x16c59d[_0x2003('0x6')](_0x2003('0xeb'),require(_0x2003('0xec')));_0x16c59d[_0x2003('0x6')](_0x2003('0xed'),require('./api/userProfileResource'));_0x16c59d[_0x2003('0x6')](_0x2003('0xee'),require(_0x2003('0xef')));_0x16c59d[_0x2003('0x6')](_0x2003('0xf0'),require(_0x2003('0xf1')));_0x16c59d[_0x2003('0x6')](_0x2003('0xf2'),require(_0x2003('0xf3')));_0x16c59d['use'](_0x2003('0xf4'),require(_0x2003('0xf5')));_0x16c59d[_0x2003('0x6')]('/api/whatsapp/messages',require('./api/whatsappMessage'));_0x16c59d[_0x2003('0x6')]('/api/whatsapp/reports/queue',require(_0x2003('0xf6')));_0x16c59d[_0x2003('0x6')]('/api/whatsapp/reports/transfer',require(_0x2003('0xf7')));_0x16c59d['use'](_0x2003('0xf8'),require(_0x2003('0xf9')));_0x16c59d[_0x2003('0x6')](_0x2003('0xfa'),require(_0x2003('0xfb')));_0x16c59d[_0x2003('0x6')](_0x2003('0xfc'),require(_0x2003('0xfd')));_0x16c59d[_0x2003('0x6')](_0x2003('0xfe'),require(_0x2003('0xff')));_0x16c59d[_0x2003('0x6')](_0x2003('0x100'),require(_0x2003('0x101')));_0x16c59d[_0x2003('0x6')](_0x2003('0x102'),require(_0x2003('0x103')));_0x16c59d['use'](_0x2003('0x104'),require(_0x2003('0x105')));_0x16c59d[_0x2003('0x6')](_0x2003('0x106'),require(_0x2003('0x107')));_0x16c59d[_0x2003('0x6')](_0x2003('0x108'),require(_0x2003('0x109')));_0x16c59d[_0x2003('0x6')](_0x2003('0x10a'),require(_0x2003('0x10b')));_0x16c59d[_0x2003('0x6')](_0x2003('0x10c'),require(_0x2003('0x10d')));_0x16c59d[_0x2003('0x6')](_0x2003('0x10e'),require(_0x2003('0x10f')));_0x16c59d[_0x2003('0x6')](_0x2003('0x110'),require(_0x2003('0x111')));_0x16c59d[_0x2003('0x6')](_0x2003('0x112'),clientSideLogs);_0x16c59d[_0x2003('0x6')](_0x2003('0x113'),express[_0x2003('0x114')](path[_0x2003('0x115')](config[_0x2003('0x116')],'/apidoc')));_0x16c59d[_0x2003('0x6')]('/www',express[_0x2003('0x114')](path['join'](config[_0x2003('0x116')],'/www')));_0x16c59d[_0x2003('0x6')]('/demo',express[_0x2003('0x114')](path[_0x2003('0x115')](config[_0x2003('0x116')],_0x2003('0x117'))));_0x16c59d[_0x2003('0x6')](_0x2003('0x118'),express[_0x2003('0x114')](path[_0x2003('0x115')](config[_0x2003('0x116')],_0x2003('0x119'),_0x2003('0x11a'))));_0x16c59d[_0x2003('0x6')](_0x2003('0x11b'),express[_0x2003('0x114')](path[_0x2003('0x115')](config[_0x2003('0x116')],_0x2003('0x11c'))));_0x16c59d[_0x2003('0x11d')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x2003('0x11e')](errors[0x194]);_0x16c59d[_0x2003('0x11d')]('/*')[_0x2003('0x11e')](function(_0xf07cb6,_0x11dfd9){_0x11dfd9[_0x2003('0x11f')](path[_0x2003('0x120')](_0x16c59d[_0x2003('0x11e')]('appPath')+_0x2003('0x121')));});return _0x16c59d;});};
\ No newline at end of file
+var _0x4359=['/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','./api/chatProactiveAction','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','/api/integrations','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./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/intFreshdeskConfiguration','./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/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/license','./api/license','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/cmList','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/user-settings','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','/demo','root','/snippet','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','use','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','./api/voiceRecording','/api/screen/recordings','./api/voiceMail','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/queues/reports','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','/api/mail/accounts','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/dashboards','./api/dashboard','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication'];(function(_0x4c5998,_0x1dc4dd){var _0x33fddb=function(_0x44aa4a){while(--_0x44aa4a){_0x4c5998['push'](_0x4c5998['shift']());}};_0x33fddb(++_0x1dc4dd);}(_0x4359,0x1e3));var _0x9435=function(_0x7433e6,_0x236d46){_0x7433e6=_0x7433e6-0x0;var _0x5366ab=_0x4359[_0x7433e6];return _0x5366ab;};'use strict';var path=require(_0x9435('0x0'));var express=require('express');var errors=require('./errors');var config=require(_0x9435('0x1'));var setupLoggers=require(_0x9435('0x2'))[_0x9435('0x3')];var clientSideLogs=require(_0x9435('0x4'));exports['default']=function(_0x4a8edb){return setupLoggers(_0x4a8edb)['then'](function(){_0x4a8edb['use'](_0x9435('0x5'),require(_0x9435('0x6')));_0x4a8edb['use'](_0x9435('0x7'),require(_0x9435('0x8')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa'),require(_0x9435('0xb')));_0x4a8edb['use']('/api/voice/extensions',require(_0x9435('0xc')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xd'),require(_0x9435('0xe')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf'),require(_0x9435('0x10')));_0x4a8edb[_0x9435('0x9')]('/api/voice/recordings',require(_0x9435('0x11')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x12'),require('./api/screenRecording'));_0x4a8edb['use']('/api/voice/mails',require(_0x9435('0x13')));_0x4a8edb['use']('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x4a8edb[_0x9435('0x9')]('/api/voice/calls/reports',require(_0x9435('0x14')));_0x4a8edb['use'](_0x9435('0x15'),require(_0x9435('0x16')));_0x4a8edb[_0x9435('0x9')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x17'),require('./api/voiceQueueReport'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x18'),require(_0x9435('0x19')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x1a'),require(_0x9435('0x1b')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x1c'),require('./api/voiceTransferReport'));_0x4a8edb[_0x9435('0x9')]('/api/mail/out_servers',require('./api/mailServerOut'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x1d'),require('./api/mailAccount'));_0x4a8edb['use'](_0x9435('0x1e'),require(_0x9435('0x1f')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x20'),require(_0x9435('0x21')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x22'),require(_0x9435('0x23')));_0x4a8edb[_0x9435('0x9')]('/api/mail/messages',require(_0x9435('0x24')));_0x4a8edb['use'](_0x9435('0x25'),require(_0x9435('0x26')));_0x4a8edb[_0x9435('0x9')]('/api/mail/reports/queue',require('./api/mailQueueReport'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x27'),require(_0x9435('0x28')));_0x4a8edb['use']('/api/dashboards/items',require(_0x9435('0x29')));_0x4a8edb['use'](_0x9435('0x2a'),require('./api/faxAccount'));_0x4a8edb['use'](_0x9435('0x2b'),require(_0x9435('0x2c')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x2d'),require(_0x9435('0x2e')));_0x4a8edb['use'](_0x9435('0x2f'),require(_0x9435('0x30')));_0x4a8edb['use'](_0x9435('0x31'),require(_0x9435('0x32')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x33'),require(_0x9435('0x34')));_0x4a8edb['use'](_0x9435('0x35'),require(_0x9435('0x36')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x37'),require(_0x9435('0x38')));_0x4a8edb['use'](_0x9435('0x39'),require(_0x9435('0x3a')));_0x4a8edb['use'](_0x9435('0x3b'),require('./api/smsMessage'));_0x4a8edb['use']('/api/sms/queues',require(_0x9435('0x3c')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x3d'),require(_0x9435('0x3e')));_0x4a8edb['use'](_0x9435('0x3f'),require(_0x9435('0x40')));_0x4a8edb['use'](_0x9435('0x41'),require(_0x9435('0x42')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x43'),require(_0x9435('0x44')));_0x4a8edb['use']('/api/openchannel/queues',require(_0x9435('0x45')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x46'),require(_0x9435('0x47')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x48'),require(_0x9435('0x49')));_0x4a8edb['use'](_0x9435('0x4a'),require('./api/chatApplication'));_0x4a8edb[_0x9435('0x9')]('/api/chat/interactions',require(_0x9435('0x4b')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x4c'),require(_0x9435('0x4d')));_0x4a8edb[_0x9435('0x9')]('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x4e'),require(_0x9435('0x4f')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x50'),require(_0x9435('0x51')));_0x4a8edb[_0x9435('0x9')]('/api/chat/proactive_actions',require(_0x9435('0x52')));_0x4a8edb[_0x9435('0x9')]('/api/cm/companies',require('./api/cmCompany'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x53'),require(_0x9435('0x54')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x55'),require(_0x9435('0x56')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x57'),require('./api/cmHopperBlack'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x58'),require('./api/cmHopperFinal'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x59'),require(_0x9435('0x5a')));_0x4a8edb[_0x9435('0x9')]('/api/cm/custom_fields',require(_0x9435('0x5b')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x5c'),require(_0x9435('0x5d')));_0x4a8edb['use'](_0x9435('0x5e'),require(_0x9435('0x5f')));_0x4a8edb['use'](_0x9435('0x60'),require(_0x9435('0x61')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x62'),require(_0x9435('0x63')));_0x4a8edb[_0x9435('0x9')]('/api/conditions',require('./api/condition'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x64'),require('./api/interval'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x65'),require(_0x9435('0x66')));_0x4a8edb['use'](_0x9435('0x67'),require(_0x9435('0x68')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x69'),require(_0x9435('0x6a')));_0x4a8edb[_0x9435('0x9')]('/api/schedules',require('./api/schedule'));_0x4a8edb[_0x9435('0x9')]('/api/sounds',require(_0x9435('0x6b')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x6c'),require(_0x9435('0x6d')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x6e'),require(_0x9435('0x6f')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x70'),require(_0x9435('0x71')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x72'),require(_0x9435('0x73')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x74'),require('./api/template'));_0x4a8edb['use']('/api/triggers',require('./api/trigger'));_0x4a8edb['use']('/api/variables',require('./api/variable'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x75'),require('./api/integration'));_0x4a8edb[_0x9435('0x9')](_0x9435('0x76'),require(_0x9435('0x77')));_0x4a8edb['use'](_0x9435('0x78'),require(_0x9435('0x79')));_0x4a8edb[_0x9435('0x9')]('/api/analytics/default_reports',require(_0x9435('0x7a')));_0x4a8edb['use'](_0x9435('0x7b'),require(_0x9435('0x7c')));_0x4a8edb['use'](_0x9435('0x7d'),require('./api/analyticMetric'));_0x4a8edb[_0x9435('0x9')]('/api/analytics/field_reports',require(_0x9435('0x7e')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x7f'),require(_0x9435('0x80')));_0x4a8edb['use']('/api/integrations/salesforce/accounts',require(_0x9435('0x81')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/salesforce/configurations',require(_0x9435('0x82')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x83'),require(_0x9435('0x84')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x85'),require(_0x9435('0x86')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x87'),require(_0x9435('0x88')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x89'),require(_0x9435('0x8a')));_0x4a8edb['use']('/api/integrations/desk/accounts',require(_0x9435('0x8b')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x8c'),require(_0x9435('0x8d')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/desk/fields',require(_0x9435('0x8e')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x8f'),require(_0x9435('0x90')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/zoho/configurations',require(_0x9435('0x91')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x92'),require(_0x9435('0x93')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x94'),require(_0x9435('0x95')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x96'),require(_0x9435('0x97')));_0x4a8edb['use'](_0x9435('0x98'),require(_0x9435('0x99')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x9a'),require(_0x9435('0x9b')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/freshdesk/configurations',require(_0x9435('0x9c')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/freshdesk/fields',require(_0x9435('0x9d')));_0x4a8edb[_0x9435('0x9')](_0x9435('0x9e'),require(_0x9435('0x9f')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa0'),require(_0x9435('0xa1')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa2'),require('./api/intVtigerField'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa3'),require(_0x9435('0xa4')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/servicenow/configurations',require(_0x9435('0xa5')));_0x4a8edb[_0x9435('0x9')]('/api/integrations/servicenow/fields',require(_0x9435('0xa6')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa7'),require(_0x9435('0xa8')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xa9'),require(_0x9435('0xaa')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xab'),require(_0x9435('0xac')));_0x4a8edb['use'](_0x9435('0xad'),require(_0x9435('0xae')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xaf'),require(_0x9435('0xb0')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xb1'),require(_0x9435('0xb2')));_0x4a8edb['use']('/api/networks',require('./api/network'));_0x4a8edb[_0x9435('0x9')]('/api/chat/reports/queue',require('./api/chatQueueReport'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xb3'),require('./api/chatInternalMessage'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xb4'),require(_0x9435('0xb5')));_0x4a8edb[_0x9435('0x9')]('/api/jscripty/questions/reports',require(_0x9435('0xb6')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xb7'),require(_0x9435('0xb8')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xb9'),require(_0x9435('0xba')));_0x4a8edb[_0x9435('0x9')]('/api/square/reports',require(_0x9435('0xbb')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xbc'),require(_0x9435('0xbd')));_0x4a8edb['use'](_0x9435('0xbe'),require(_0x9435('0xbf')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xc0'),require(_0x9435('0xc1')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xc2'),require('./api/squareOdbc'));_0x4a8edb[_0x9435('0x9')]('/api/square/projects',require(_0x9435('0xc3')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xc4'),require(_0x9435('0xc5')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xc6'),require(_0x9435('0xc7')));_0x4a8edb[_0x9435('0x9')]('/api/teams',require(_0x9435('0xc8')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xc9'),require(_0x9435('0xca')));_0x4a8edb['use']('/api/campaigns',require(_0x9435('0xcb')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xcc'),require(_0x9435('0xcd')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xce'),require(_0x9435('0xcf')));_0x4a8edb[_0x9435('0x9')]('/api/plugins',require(_0x9435('0xd0')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xd1'),require(_0x9435('0xd2')));_0x4a8edb['use'](_0x9435('0xd3'),require(_0x9435('0xd4')));_0x4a8edb['use'](_0x9435('0xd5'),require(_0x9435('0xd6')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xd7'),require(_0x9435('0xd8')));_0x4a8edb['use'](_0x9435('0xd9'),require('./api/smsTransferReport'));_0x4a8edb['use']('/api/cm/lists',require(_0x9435('0xda')));_0x4a8edb['use']('/api/voice/prefixes',require('./api/voicePrefix'));_0x4a8edb[_0x9435('0x9')]('/api/userProfiles',require('./api/userProfile'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xdb'),require(_0x9435('0xdc')));_0x4a8edb['use'](_0x9435('0xdd'),require(_0x9435('0xde')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xdf'),require('./api/userNotification'));_0x4a8edb['use']('/api/whatsapp/accounts',require(_0x9435('0xe0')));_0x4a8edb['use'](_0x9435('0xe1'),require('./api/whatsappApplication'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xe2'),require(_0x9435('0xe3')));_0x4a8edb['use'](_0x9435('0xe4'),require('./api/whatsappMessage'));_0x4a8edb[_0x9435('0x9')]('/api/whatsapp/reports/queue',require(_0x9435('0xe5')));_0x4a8edb[_0x9435('0x9')]('/api/whatsapp/reports/transfer',require(_0x9435('0xe6')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xe7'),require('./api/whatsappQueue'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xe8'),require(_0x9435('0xe9')));_0x4a8edb[_0x9435('0x9')]('/api/realtime',require(_0x9435('0xea')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xeb'),require('./api/user-setting'));_0x4a8edb[_0x9435('0x9')]('/api/auth/local',require('./api/authLocal'));_0x4a8edb['use'](_0x9435('0xec'),require(_0x9435('0xed')));_0x4a8edb['use'](_0x9435('0xee'),require(_0x9435('0xef')));_0x4a8edb[_0x9435('0x9')]('/api/jira',require('./api/jira'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf0'),require(_0x9435('0xf1')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf2'),require(_0x9435('0xf3')));_0x4a8edb['use'](_0x9435('0xf4'),require(_0x9435('0xf5')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf6'),require('./api/pm2'));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf7'),require(_0x9435('0xf8')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xf9'),clientSideLogs);_0x4a8edb[_0x9435('0x9')](_0x9435('0xfa'),express[_0x9435('0xfb')](path[_0x9435('0xfc')](config['root'],_0x9435('0xfa'))));_0x4a8edb[_0x9435('0x9')]('/www',express[_0x9435('0xfb')](path[_0x9435('0xfc')](config['root'],'/www')));_0x4a8edb[_0x9435('0x9')](_0x9435('0xfd'),express[_0x9435('0xfb')](path[_0x9435('0xfc')](config[_0x9435('0xfe')],_0x9435('0xfd'))));_0x4a8edb[_0x9435('0x9')](_0x9435('0xff'),express[_0x9435('0xfb')](path['join'](config[_0x9435('0xfe')],'snippet','3.0.0')));_0x4a8edb['use']('/plugins',express[_0x9435('0xfb')](path[_0x9435('0xfc')](config['root'],_0x9435('0x100'))));_0x4a8edb[_0x9435('0x101')](_0x9435('0x102'))[_0x9435('0x103')](errors[0x194]);_0x4a8edb[_0x9435('0x101')]('/*')[_0x9435('0x103')](function(_0x4b1e5c,_0x49899c){_0x49899c[_0x9435('0x104')](path[_0x9435('0x105')](_0x4a8edb[_0x9435('0x103')](_0x9435('0x106'))+_0x9435('0x107')));});return _0x4a8edb;});};
\ No newline at end of file
index cc5d340..e5b9b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f89=['../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.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/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','http','rpc','localhost','error','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','merge','../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/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc'];(function(_0x41d3e0,_0x3e52a7){var _0x5c058c=function(_0x55da35){while(--_0x55da35){_0x41d3e0['push'](_0x41d3e0['shift']());}};_0x5c058c(++_0x3e52a7);}(_0x0f89,0x111));var _0x90f8=function(_0x2bbc0b,_0x2439f6){_0x2bbc0b=_0x2bbc0b-0x0;var _0x4efef5=_0x0f89[_0x2bbc0b];return _0x4efef5;};'use strict';var jayson=require(_0x90f8('0x0'));var _=require(_0x90f8('0x1'));var config=require(_0x90f8('0x2'));exports['listen']=function(){return new Promise(function(_0x30231a,_0x344939){var _0x19774b={};_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/user/user.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x4')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x5')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x6')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x7')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x8')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x9')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0xa')));_0x19774b=_['merge'](_0x19774b,require('../api/memberReport/memberReport.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0xb')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0xc')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0xd')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0xe')));_0x19774b=_['merge'](_0x19774b,require('../api/mailAccount/mailAccount.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0xf')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x10')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x11')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x12')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x13')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x14')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x15')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/faxMessage/faxMessage.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x16')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x17')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x18')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x19')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x1a')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x1b')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x1c')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x1d')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x1e')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x1f')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/chatInteraction/chatInteraction.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x20')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x21')));_0x19774b=_['merge'](_0x19774b,require('../api/cmContact/cmContact.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x22')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x23')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x24')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x25')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x26')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x27')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x28')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x29')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x2a')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x2b')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x2c')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x2d')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x2e')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x2f')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x30')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x31')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x32')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x33')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x34')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x35')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x36')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x37')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x38')));_0x19774b=_['merge'](_0x19774b,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x39')));_0x19774b=_['merge'](_0x19774b,require('../api/squareOdbc/squareOdbc.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x3a')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x3b')));_0x19774b=_['merge'](_0x19774b,require('../api/squareMessage/squareMessage.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/campaign/campaign.rpc'));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x3c')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x3d')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x3e')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x3f')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require(_0x90f8('0x40')));_0x19774b=_['merge'](_0x19774b,require(_0x90f8('0x41')));_0x19774b=_[_0x90f8('0x3')](_0x19774b,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x241308=jayson['server'](_0x19774b)[_0x90f8('0x42')]();var _0x232079=config[_0x90f8('0x43')]['port']||config['port']+0x1;var _0x4a5bb1=config[_0x90f8('0x43')]['ip']||_0x90f8('0x44');_0x241308['on'](_0x90f8('0x45'),function(_0x3600ce){return _0x344939(_0x3600ce);});_0x241308[_0x90f8('0x46')](_0x232079,_0x4a5bb1,function(){console[_0x90f8('0x47')](_0x90f8('0x48'),_0x4a5bb1,_0x232079);require(_0x90f8('0x49'))['default']();return _0x30231a(_0x90f8('0x4a')+_0x4a5bb1+':'+_0x232079);});});};
\ No newline at end of file
+var _0x154f=['../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/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.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/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','lodash','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x154f,0x82));var _0xf154=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x154f[_0x14add3];return _0x4a174f;};'use strict';var jayson=require('jayson/promise');var _=require(_0xf154('0x0'));var config=require('../config/environment');exports[_0xf154('0x1')]=function(){return new Promise(function(_0xdc5719,_0x37df6f){var _0x4e5e7c={};_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x3')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x4')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/voiceQueue/voiceQueue.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x5')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x6')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x7')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x8')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x9')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xa')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xb')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xc')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xd')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/mailQueue/mailQueue.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/mailInteraction/mailInteraction.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/mailMessage/mailMessage.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xe')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0xf')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x10')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x11')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/faxInteraction/faxInteraction.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x12')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x13')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x14')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x15')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/smsInteraction/smsInteraction.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x16')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/smsQueue/smsQueue.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x17')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x18')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x19')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x1a')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x1b')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x1c')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x1d')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x1e')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x1f')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x20')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x21')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x22')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x23')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x24')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x25')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x26')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x27')));_0x4e5e7c=_['merge'](_0x4e5e7c,require('../api/variable/variable.rpc'));_0x4e5e7c=_['merge'](_0x4e5e7c,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x28')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x29')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x2a')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x2b')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x2c')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x2d')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x2e')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x2f')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x30')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x31')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x32')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x33')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x34')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require('../api/setting/setting.rpc'));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x35')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x36')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x37')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x38')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x39')));_0x4e5e7c=_['merge'](_0x4e5e7c,require(_0xf154('0x3a')));_0x4e5e7c=_['merge'](_0x4e5e7c,require('../api/plugin/plugin.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x3b')));_0x4e5e7c=_['merge'](_0x4e5e7c,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x3c')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x3d')));_0x4e5e7c=_[_0xf154('0x2')](_0x4e5e7c,require(_0xf154('0x3e')));var _0x34cee3=jayson[_0xf154('0x3f')](_0x4e5e7c)[_0xf154('0x40')]();var _0x3474bf=config['rpc'][_0xf154('0x41')]||config['port']+0x1;var _0x5d6b95=config[_0xf154('0x42')]['ip']||_0xf154('0x43');_0x34cee3['on'](_0xf154('0x44'),function(_0x5ade68){return _0x37df6f(_0x5ade68);});_0x34cee3[_0xf154('0x1')](_0x3474bf,_0x5d6b95,function(){console[_0xf154('0x45')](_0xf154('0x46'),_0x5d6b95,_0x3474bf);require(_0xf154('0x47'))['default']();return _0xdc5719(_0xf154('0x48')+_0x5d6b95+':'+_0x3474bf);});});};
\ No newline at end of file
index b49968d..d05d760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8b=['recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','exec','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','events','./reply','setEncoding','utf8','setTimeout','emit','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','result=','indexOf','substr','startsWith','split','length','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','inherits','prototype','sendRequest','command','sync','ANSWER','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','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'];(function(_0xf9f40e,_0x5cbfb1){var _0x148283=function(_0x1f180e){while(--_0x1f180e){_0xf9f40e['push'](_0xf9f40e['shift']());}};_0x148283(++_0x5cbfb1);}(_0x1e8b,0xf0));var _0xb1e8=function(_0x365009,_0x215c27){_0x365009=_0x365009-0x0;var _0x19fc0c=_0x1e8b[_0x365009];return _0x19fc0c;};'use strict';var util=require('util');var _=require(_0xb1e8('0x0'));var EventEmitter=require(_0xb1e8('0x1'))['EventEmitter'];var AGIReply=require(_0xb1e8('0x2'));var AGIError=require('./error');function AGIChannel(_0x37a6a8){var _0x1b40cc=this,_0x432c60=new AGIReply(),_0x20bfb4=![],_0x4ee14f={};EventEmitter['call'](_0x1b40cc);_0x37a6a8[_0xb1e8('0x3')](_0xb1e8('0x4'));_0x37a6a8[_0xb1e8('0x5')](0x8*0x3c*0x3c*0x3e8);_0x432c60['setEncoding'](_0xb1e8('0x4'));_0x432c60['on']('headers',function(_0x3d0067){for(var _0x307b68 in _0x3d0067){_0x1b40cc[_0x307b68]=_0x3d0067[_0x307b68];}_0x1b40cc[_0xb1e8('0x6')]('ready');});_0x432c60['on']('line',function(_0x4ef888){if(_0x4ef888['toLowerCase']()==_0xb1e8('0x7')){_0x1b40cc['emit'](_0xb1e8('0x7'));return;}if(_0x4ef888[_0xb1e8('0x8')](0x0,0xb)==_0xb1e8('0x9')){_0x20bfb4=!![];}if(_0x20bfb4){_0x4ee14f['rx']+=_0x4ef888+'\x0a';if(_0x4ef888[_0xb1e8('0xa')](_0xb1e8('0xb'))!=-0x1){_0x20bfb4=![];}}else{_0x4ee14f['rx']=_0x4ef888;}if(_0x20bfb4){return;}if(typeof _0x4ee14f['cb']==_0xb1e8('0xc')){var _0x393aec=_0x4ee14f['rx'][_0xb1e8('0x8')](0x0,0x3),_0x4068d5=null,_0x55eb24=null;_0x393aec=parseInt(_0x393aec);if(isNaN(_0x393aec)){_0x4ee14f['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xb1e8('0xd')});return;}if(_0x393aec!=0xc8){_0x4ee14f['cb'](null,{'code':_0x393aec,'result':-0x1,'extra':'KO'});return;}_0x4068d5=_0x4ee14f['rx'][_0xb1e8('0x8')](0x4)['replace'](_0xb1e8('0xe'),'');if(_0x4068d5[_0xb1e8('0xf')]('\x20')!=-0x1){_0x4068d5=_0x4068d5[_0xb1e8('0x10')](0x0,_0x4068d5['indexOf']('\x20'));}if(_[_0xb1e8('0x11')](_0x4068d5,'-1')){_0x4068d5=parseInt(_0x4068d5);}_0x55eb24=_0x4ee14f['rx'][_0xb1e8('0x12')]('\x20');if(_0x55eb24[_0xb1e8('0x13')]==0x3){_0x55eb24=_0x55eb24[0x2]['substring'](0x1,_0x55eb24[0x2][_0xb1e8('0x13')]-0x1);}else if(_0x55eb24[_0xb1e8('0x13')]>0x3){var _0x2a1f1a=/\((.+)\)/;var _0x42bb50=_0x4ee14f['rx']['match'](_0x2a1f1a);if(_0x42bb50){_0x55eb24=_0x42bb50[0x1];}else{_0x55eb24=null;}}else{_0x55eb24=null;}_0x4ee14f['cb'](null,{'code':_0x393aec,'result':_0x4068d5,'extra':_0x55eb24});}});_0x37a6a8['on'](_0xb1e8('0x14'),function(_0x41c5cb){_0x1b40cc[_0xb1e8('0x6')](_0xb1e8('0x14'),new AGIError('E_AGI_SOCKET_ERROR',_0x41c5cb[_0xb1e8('0x15')]));});_0x37a6a8['on'](_0xb1e8('0x16'),function(){_0x1b40cc['emit'](_0xb1e8('0x16'),new AGIError(_0xb1e8('0x17')));});_0x37a6a8['on'](_0xb1e8('0x18'),function(){_0x1b40cc['emit'](_0xb1e8('0x18'),new AGIError(_0xb1e8('0x19')));_0x37a6a8[_0xb1e8('0x1a')]();});_0x37a6a8[_0xb1e8('0x1b')](_0x432c60);this['command']=function(_0x5e90f2,_0x16111f){var _0x5e90f2=_0x5e90f2||'',_0x16111f=typeof _0x16111f=='function'?_0x16111f:new Function();_0x4ee14f={'tx':_0x5e90f2,'rx':'','cb':_0x16111f};_0x37a6a8[_0xb1e8('0x1c')](_0x5e90f2+'\x0a');},this['close']=function(){_0x37a6a8[_0xb1e8('0x1a')]();};}util[_0xb1e8('0x1d')](AGIChannel,EventEmitter);AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x1f')]=function(_0x152413){return this[_0xb1e8('0x20')][_0xb1e8('0x21')](this,_0x152413);};AGIChannel[_0xb1e8('0x1e')]['answer']=function(){return this[_0xb1e8('0x1f')](_0xb1e8('0x22'));};AGIChannel['prototype'][_0xb1e8('0x23')]=function(_0x248b27,_0x550d47,_0x434b19){_0x248b27=_0x248b27===undefined?_0xb1e8('0x24'):_0x248b27;_0x550d47=_0x550d47===undefined?'5':_0x550d47;_0x434b19=_0x434b19===undefined?'1':_0x434b19;return this[_0xb1e8('0x1f')](util['format'](_0xb1e8('0x25'),_0x248b27,_0x550d47*0x3e8,_0x434b19));};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x26')]=function(_0x4b7ddd){_0x4b7ddd=_0x4b7ddd||_0xb1e8('0x27');return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x29'),_0x4b7ddd));};AGIChannel['prototype']['exec']=function(_0x3724ff,_0x1ea31d){if(_[_0xb1e8('0x2a')](_0x1ea31d)){return this['sendRequest'](util[_0xb1e8('0x28')]('EXEC\x20%s\x20%s',_0x3724ff,_0x1ea31d[_0xb1e8('0x2b')](',')));}return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x2c'),_0x3724ff,_0x1ea31d));};AGIChannel['prototype'][_0xb1e8('0x2d')]=function(_0x7f430a){return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x2e'),_0x7f430a));};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x2f')]=function(_0x5253a7){return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x30'),_0x5253a7));};AGIChannel['prototype']['setPriority']=function(_0x5a4c96){return this['sendRequest'](util[_0xb1e8('0x28')](_0xb1e8('0x31'),_0x5a4c96));};AGIChannel[_0xb1e8('0x1e')]['hangup']=function(){return this[_0xb1e8('0x1f')](_0xb1e8('0x32'));};AGIChannel[_0xb1e8('0x1e')]['setVariable']=function(_0x1863b5,_0x27349b){var _0x59e17d=_['isBoolean'](_0x27349b)||_[_0xb1e8('0x33')](_0x27349b)?_0x27349b['toString']():_0x27349b;return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x34'),_0x1863b5,_0x59e17d?_0x59e17d['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xb1e8('0x35')]=function(_0x35dc73,_0x58390e){return this[_0xb1e8('0x1f')](util['format'](_0xb1e8('0x36'),_0x35dc73,_0x58390e));};AGIChannel['prototype']['sayDigits']=function(_0x599a55,_0x1ae775){return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x37'),_0x599a55,_0x1ae775));};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x38')]=function(_0x5da6f9,_0x26a075){return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x39'),_0x5da6f9,_0x26a075));};AGIChannel['prototype'][_0xb1e8('0x3a')]=function(_0x3b4f7c,_0x3271eb,_0x3c1344){_0x3271eb=_0x3271eb||this[_0xb1e8('0x3b')];_0x3c1344=_0x3c1344||0x1;this['setContext'](_0x3b4f7c);this['setExtension'](_0x3271eb);this[_0xb1e8('0x3c')](_0x3c1344);return this[_0xb1e8('0x26')](util[_0xb1e8('0x28')](_0xb1e8('0x3d'),_0x3b4f7c,_0x3271eb,_0x3c1344));};AGIChannel['prototype'][_0xb1e8('0x3e')]=function(_0x595adf){return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x3f'),_0x595adf));};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x40')]=function(_0x4b577e,_0x419e36,_0x5ad1d3,_0xec6eec,_0x1bff46,_0x37552d){_0x419e36=_0x419e36||_0xb1e8('0x41');_0x5ad1d3=_0x5ad1d3||'';_0xec6eec=_0xec6eec===undefined?-0x1:_0xec6eec==='-1'?-0x1:_0xec6eec*0x3e8;_0x1bff46=_0x1bff46===undefined?'':'s='+_0x1bff46;_0x37552d=_0x37552d?_0xb1e8('0x42'):'';return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x43'),_0x4b577e,_0x419e36,_0x5ad1d3,_0xec6eec,_0x37552d,_0x1bff46));};AGIChannel[_0xb1e8('0x1e')]['streamFile']=function(_0x4db865,_0x3cf99d){_0x3cf99d=_0x3cf99d||'';return this[_0xb1e8('0x1f')](util[_0xb1e8('0x28')](_0xb1e8('0x44'),_0x4db865,_0x3cf99d));};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x45')]=function(_0x2d4524){return this[_0xb1e8('0x46')]('AGI',_0x2d4524);};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x47')]=function(_0xef633){return this['exec'](_0xb1e8('0x48'),_0xef633);};AGIChannel[_0xb1e8('0x1e')][_0xb1e8('0x14')]=function(_0x423636,_0x518f76){this[_0xb1e8('0x26')](util[_0xb1e8('0x28')](_0xb1e8('0x49'),_0x423636['id'],_0x423636[_0xb1e8('0x4a')],_0x518f76));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xb1e8('0x4b')]=AGIChannel;
\ No newline at end of file
+var _0x7c1a=['sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','AGI','wait','WAIT','error','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','utf8','setTimeout','emit','line','toLowerCase','hangup','520-Invalid','search','function','substring','no\x20code','replace','result=','indexOf','substr','startsWith','length','match','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','answer','ANSWER','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','setExtension','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22'];(function(_0x37c0e0,_0x13a010){var _0x20f47e=function(_0xdff190){while(--_0xdff190){_0x37c0e0['push'](_0x37c0e0['shift']());}};_0x20f47e(++_0x13a010);}(_0x7c1a,0x159));var _0xa7c1=function(_0x41d74f,_0x3fa41b){_0x41d74f=_0x41d74f-0x0;var _0x442077=_0x7c1a[_0x41d74f];return _0x442077;};'use strict';var util=require(_0xa7c1('0x0'));var _=require(_0xa7c1('0x1'));var EventEmitter=require(_0xa7c1('0x2'))[_0xa7c1('0x3')];var AGIReply=require(_0xa7c1('0x4'));var AGIError=require(_0xa7c1('0x5'));function AGIChannel(_0x5c0977){var _0xd434f=this,_0x132b08=new AGIReply(),_0x506858=![],_0x135ae7={};EventEmitter['call'](_0xd434f);_0x5c0977[_0xa7c1('0x6')](_0xa7c1('0x7'));_0x5c0977[_0xa7c1('0x8')](0x8*0x3c*0x3c*0x3e8);_0x132b08[_0xa7c1('0x6')]('utf8');_0x132b08['on']('headers',function(_0x117323){for(var _0x45da28 in _0x117323){_0xd434f[_0x45da28]=_0x117323[_0x45da28];}_0xd434f[_0xa7c1('0x9')]('ready');});_0x132b08['on'](_0xa7c1('0xa'),function(_0x16bf94){if(_0x16bf94[_0xa7c1('0xb')]()=='hangup'){_0xd434f[_0xa7c1('0x9')](_0xa7c1('0xc'));return;}if(_0x16bf94['substring'](0x0,0xb)==_0xa7c1('0xd')){_0x506858=!![];}if(_0x506858){_0x135ae7['rx']+=_0x16bf94+'\x0a';if(_0x16bf94[_0xa7c1('0xe')]('520\x20End\x20of\x20proper')!=-0x1){_0x506858=![];}}else{_0x135ae7['rx']=_0x16bf94;}if(_0x506858){return;}if(typeof _0x135ae7['cb']==_0xa7c1('0xf')){var _0x1d7d67=_0x135ae7['rx'][_0xa7c1('0x10')](0x0,0x3),_0x26d63a=null,_0x3f5f02=null;_0x1d7d67=parseInt(_0x1d7d67);if(isNaN(_0x1d7d67)){_0x135ae7['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xa7c1('0x11')});return;}if(_0x1d7d67!=0xc8){_0x135ae7['cb'](null,{'code':_0x1d7d67,'result':-0x1,'extra':'KO'});return;}_0x26d63a=_0x135ae7['rx'][_0xa7c1('0x10')](0x4)[_0xa7c1('0x12')](_0xa7c1('0x13'),'');if(_0x26d63a[_0xa7c1('0x14')]('\x20')!=-0x1){_0x26d63a=_0x26d63a[_0xa7c1('0x15')](0x0,_0x26d63a[_0xa7c1('0x14')]('\x20'));}if(_[_0xa7c1('0x16')](_0x26d63a,'-1')){_0x26d63a=parseInt(_0x26d63a);}_0x3f5f02=_0x135ae7['rx']['split']('\x20');if(_0x3f5f02[_0xa7c1('0x17')]==0x3){_0x3f5f02=_0x3f5f02[0x2][_0xa7c1('0x10')](0x1,_0x3f5f02[0x2][_0xa7c1('0x17')]-0x1);}else if(_0x3f5f02[_0xa7c1('0x17')]>0x3){var _0x84244a=/\((.+)\)/;var _0x5a92d9=_0x135ae7['rx'][_0xa7c1('0x18')](_0x84244a);if(_0x5a92d9){_0x3f5f02=_0x5a92d9[0x1];}else{_0x3f5f02=null;}}else{_0x3f5f02=null;}_0x135ae7['cb'](null,{'code':_0x1d7d67,'result':_0x26d63a,'extra':_0x3f5f02});}});_0x5c0977['on']('error',function(_0x440251){_0xd434f[_0xa7c1('0x9')]('error',new AGIError(_0xa7c1('0x19'),_0x440251[_0xa7c1('0x1a')]));});_0x5c0977['on'](_0xa7c1('0x1b'),function(){_0xd434f['emit'](_0xa7c1('0x1b'),new AGIError(_0xa7c1('0x1c')));});_0x5c0977['on'](_0xa7c1('0x1d'),function(){_0xd434f[_0xa7c1('0x9')](_0xa7c1('0x1d'),new AGIError(_0xa7c1('0x1e')));_0x5c0977[_0xa7c1('0x1f')]();});_0x5c0977[_0xa7c1('0x20')](_0x132b08);this[_0xa7c1('0x21')]=function(_0x5451ef,_0x42ad46){var _0x5451ef=_0x5451ef||'',_0x42ad46=typeof _0x42ad46=='function'?_0x42ad46:new Function();_0x135ae7={'tx':_0x5451ef,'rx':'','cb':_0x42ad46};_0x5c0977[_0xa7c1('0x22')](_0x5451ef+'\x0a');},this[_0xa7c1('0x1b')]=function(){_0x5c0977[_0xa7c1('0x1f')]();};}util[_0xa7c1('0x23')](AGIChannel,EventEmitter);AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x25')]=function(_0x3c9866){return this['command']['sync'](this,_0x3c9866);};AGIChannel['prototype'][_0xa7c1('0x26')]=function(){return this[_0xa7c1('0x25')](_0xa7c1('0x27'));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x28')]=function(_0x5d62cb,_0x586b17,_0x465dd1){_0x5d62cb=_0x5d62cb===undefined?_0xa7c1('0x29'):_0x5d62cb;_0x586b17=_0x586b17===undefined?'5':_0x586b17;_0x465dd1=_0x465dd1===undefined?'1':_0x465dd1;return this[_0xa7c1('0x25')](util['format'](_0xa7c1('0x2a'),_0x5d62cb,_0x586b17*0x3e8,_0x465dd1));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x2b')]=function(_0xa8a937){_0xa8a937=_0xa8a937||_0xa7c1('0x2c');return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x2e'),_0xa8a937));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x2f')]=function(_0x599b08,_0x6b764d){if(_[_0xa7c1('0x30')](_0x6b764d)){return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x31'),_0x599b08,_0x6b764d[_0xa7c1('0x32')](',')));}return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x31'),_0x599b08,_0x6b764d));};AGIChannel['prototype'][_0xa7c1('0x33')]=function(_0x97bc0d){return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')]('SET\x20CONTEXT\x20%s',_0x97bc0d));};AGIChannel['prototype'][_0xa7c1('0x34')]=function(_0x2c98da){return this[_0xa7c1('0x25')](util['format']('SET\x20EXTENSION\x20%s',_0x2c98da));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x35')]=function(_0x5182ca){return this[_0xa7c1('0x25')](util['format'](_0xa7c1('0x36'),_0x5182ca));};AGIChannel['prototype'][_0xa7c1('0xc')]=function(){return this[_0xa7c1('0x25')]('HANGUP');};AGIChannel['prototype'][_0xa7c1('0x37')]=function(_0x18e7fc,_0x3acd7b){var _0x410682=_[_0xa7c1('0x38')](_0x3acd7b)||_[_0xa7c1('0x39')](_0x3acd7b)?_0x3acd7b[_0xa7c1('0x3a')]():_0x3acd7b;return this['sendRequest'](util[_0xa7c1('0x2d')](_0xa7c1('0x3b'),_0x18e7fc,_0x410682?_0x410682[_0xa7c1('0x3a')]()[_0xa7c1('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x3c')]=function(_0x4b88d4,_0x3e1a41){return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x3d'),_0x4b88d4,_0x3e1a41));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x3e')]=function(_0x3b6f7f,_0xff58c3){return this['sendRequest'](util[_0xa7c1('0x2d')](_0xa7c1('0x3f'),_0x3b6f7f,_0xff58c3));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x40')]=function(_0x2bfcd0,_0x1719cf){return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x41'),_0x2bfcd0,_0x1719cf));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x42')]=function(_0x300315,_0x24f152,_0x22a306){_0x24f152=_0x24f152||this[_0xa7c1('0x43')];_0x22a306=_0x22a306||0x1;this[_0xa7c1('0x33')](_0x300315);this[_0xa7c1('0x34')](_0x24f152);this['setPriority'](_0x22a306);return this[_0xa7c1('0x2b')](util[_0xa7c1('0x2d')]('GOTO\x20%s\x20%s\x20%s',_0x300315,_0x24f152,_0x22a306));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x44')]=function(_0x46d759){return this[_0xa7c1('0x25')](util['format'](_0xa7c1('0x45'),_0x46d759));};AGIChannel['prototype']['recordFile']=function(_0xb25d03,_0x1d131e,_0x3c1a72,_0xdbc206,_0x3a1b90,_0x4d43a6){_0x1d131e=_0x1d131e||_0xa7c1('0x46');_0x3c1a72=_0x3c1a72||'';_0xdbc206=_0xdbc206===undefined?-0x1:_0xdbc206==='-1'?-0x1:_0xdbc206*0x3e8;_0x3a1b90=_0x3a1b90===undefined?'':'s='+_0x3a1b90;_0x4d43a6=_0x4d43a6?_0xa7c1('0x47'):'';return this[_0xa7c1('0x25')](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0xb25d03,_0x1d131e,_0x3c1a72,_0xdbc206,_0x4d43a6,_0x3a1b90));};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x48')]=function(_0x550826,_0x426b79){_0x426b79=_0x426b79||'';return this[_0xa7c1('0x25')](util[_0xa7c1('0x2d')](_0xa7c1('0x49'),_0x550826,_0x426b79));};AGIChannel[_0xa7c1('0x24')]['agi']=function(_0x404362){return this[_0xa7c1('0x2f')](_0xa7c1('0x4a'),_0x404362);};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x4b')]=function(_0x4c3c0a){return this[_0xa7c1('0x2f')](_0xa7c1('0x4c'),_0x4c3c0a);};AGIChannel[_0xa7c1('0x24')][_0xa7c1('0x4d')]=function(_0x16fdad,_0x2672c3){this['noop'](util[_0xa7c1('0x2d')](_0xa7c1('0x4e'),_0x16fdad['id'],_0x16fdad[_0xa7c1('0x4f')],_0x2672c3));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xa7c1('0x50')]=AGIChannel;
\ No newline at end of file
index ef05a23..a494235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc293=['apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format'];(function(_0x7220f4,_0x5ac632){var _0x5e4f9f=function(_0x3f12ce){while(--_0x3f12ce){_0x7220f4['push'](_0x7220f4['shift']());}};_0x5e4f9f(++_0x5ac632);}(_0xc293,0x114));var _0x3c29=function(_0xb6afe,_0x38671f){_0xb6afe=_0xb6afe-0x0;var _0x335218=_0xc293[_0xb6afe];return _0x335218;};'use strict';var util=require(_0x3c29('0x0'));var error={'E_AGI_UNDEFINED':_0x3c29('0x1'),'E_AGI_ARGUMENT_PORT':_0x3c29('0x2'),'E_AGI_SERVER_ERROR':_0x3c29('0x3'),'E_AGI_SERVER_CLOSE':_0x3c29('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0x3c29('0x5'),'E_AGI_SOCKET_CLOSE':_0x3c29('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x3c29('0x7'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x3c29('0x8'),'E_AGI_IVR_ENTRY':_0x3c29('0x9')};function AGIError(_0x1d9fd6){var _0x1d9fd6=_0x1d9fd6||null,_0x3e12e5=_0x3e12e5||[],_0x3618c7=0x1,_0xf1b252='';if(!error[_0x1d9fd6]){_0x1d9fd6=_0x3c29('0xa');}_0x3e12e5[_0x3c29('0xb')](error[_0x1d9fd6]);while(arguments[_0x3618c7]){_0x3e12e5[_0x3c29('0xb')](arguments[_0x3618c7]);_0x3618c7++;}_0xf1b252=util[_0x3c29('0xc')][_0x3c29('0xd')](util,_0x3e12e5);this[_0x3c29('0xe')]=_0xf1b252;this[_0x3c29('0xf')]=_0x1d9fd6;}module[_0x3c29('0x10')]=AGIError;
\ No newline at end of file
+var _0x1c9b=['Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','name','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.'];(function(_0x383f73,_0x39526f){var _0x20fe7d=function(_0x46fbe9){while(--_0x46fbe9){_0x383f73['push'](_0x383f73['shift']());}};_0x20fe7d(++_0x39526f);}(_0x1c9b,0xcd));var _0xb1c9=function(_0x3c97e3,_0x321677){_0x3c97e3=_0x3c97e3-0x0;var _0x9bb0ed=_0x1c9b[_0x3c97e3];return _0x9bb0ed;};'use strict';var util=require(_0xb1c9('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xb1c9('0x1'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xb1c9('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xb1c9('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xb1c9('0x4'),'E_AGI_SOCKET_ERROR':_0xb1c9('0x5'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xb1c9('0x6'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xb1c9('0x7'),'E_AGI_IVR_ENTRY':_0xb1c9('0x8')};function AGIError(_0x291aaf){var _0x291aaf=_0x291aaf||null,_0x1a5aee=_0x1a5aee||[],_0x4b9cad=0x1,_0x4698a3='';if(!error[_0x291aaf]){_0x291aaf=_0xb1c9('0x9');}_0x1a5aee[_0xb1c9('0xa')](error[_0x291aaf]);while(arguments[_0x4b9cad]){_0x1a5aee[_0xb1c9('0xa')](arguments[_0x4b9cad]);_0x4b9cad++;}_0x4698a3=util[_0xb1c9('0xb')][_0xb1c9('0xc')](util,_0x1a5aee);this['message']=_0x4698a3;this[_0xb1c9('0xd')]=_0x291aaf;}module[_0xb1c9('0xe')]=AGIError;
\ No newline at end of file
index 0bd6209..1aefc4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5145=['projectUpdate','exports','lodash','events','EventEmitter','ioredis','./error','../../config/environment','redis','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','message'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x5145,0x7a));var _0x5514=function(_0x590bcd,_0x558f1d){_0x590bcd=_0x590bcd-0x0;var _0x3991b5=_0x5145[_0x590bcd];return _0x3991b5;};'use strict';var _=require(_0x5514('0x0'));var EventEmitter=require(_0x5514('0x1'))[_0x5514('0x2')];var Redis=require(_0x5514('0x3'));var AGIError=require(_0x5514('0x4'));var config=require(_0x5514('0x5'));config[_0x5514('0x6')]=_['defaults'](config[_0x5514('0x6')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x5514('0x7')](_0x5514('0x8'),function(_0xe1f037){if(_0xe1f037)return eventEmitter[_0x5514('0x9')](_0x5514('0xa'),new AGIError(_0x5514('0xb'),_0xe1f037));});sub['on'](_0x5514('0xc'),function(_0x58299e,_0x256ea4){if(_0x58299e!==_0x5514('0x8'))return;try{var _0x43f8b7=JSON['parse'](_0x256ea4);eventEmitter[_0x5514('0x9')](_0x5514('0xd'),_0x43f8b7);}catch(_0x55b931){eventEmitter[_0x5514('0x9')](_0x5514('0xa'),new AGIError(_0x5514('0xb'),_0x55b931));}});module[_0x5514('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0xa056=['agi','emit','error','message','parse','E_AGI_SERVER_ERROR','lodash','events','EventEmitter','../../config/environment','redis','defaults','subscribe'];(function(_0x4b006b,_0x3c1db3){var _0x362121=function(_0x3e7727){while(--_0x3e7727){_0x4b006b['push'](_0x4b006b['shift']());}};_0x362121(++_0x3c1db3);}(_0xa056,0x88));var _0x6a05=function(_0x28c924,_0x35de8f){_0x28c924=_0x28c924-0x0;var _0x51aa49=_0xa056[_0x28c924];return _0x51aa49;};'use strict';var _=require(_0x6a05('0x0'));var EventEmitter=require(_0x6a05('0x1'))[_0x6a05('0x2')];var Redis=require('ioredis');var AGIError=require('./error');var config=require(_0x6a05('0x3'));config[_0x6a05('0x4')]=_[_0x6a05('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x6a05('0x4')]);sub[_0x6a05('0x6')](_0x6a05('0x7'),function(_0xc376e){if(_0xc376e)return eventEmitter[_0x6a05('0x8')](_0x6a05('0x9'),new AGIError('E_AGI_SERVER_ERROR',_0xc376e));});sub['on'](_0x6a05('0xa'),function(_0x1d482f,_0x22f41a){if(_0x1d482f!==_0x6a05('0x7'))return;try{var _0x43bf00=JSON[_0x6a05('0xb')](_0x22f41a);eventEmitter[_0x6a05('0x8')]('projectUpdate',_0x43bf00);}catch(_0x5727a9){eventEmitter[_0x6a05('0x8')](_0x6a05('0x9'),new AGIError(_0x6a05('0xc'),_0x5727a9));}});module['exports']={'EventEmitter':eventEmitter};
\ No newline at end of file
index c04e1a9..3f8401b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45b5=['edges','push','prototype','size','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','default','target','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports','lodash','agi','menu','getdigits','vertices','numberOfEdges','addEdge'];(function(_0x460942,_0xff1057){var _0x34ec86=function(_0x301f64){while(--_0x301f64){_0x460942['push'](_0x460942['shift']());}};_0x34ec86(++_0xff1057);}(_0x45b5,0xbd));var _0x545b=function(_0xbbecc2,_0x7297c7){_0xbbecc2=_0xbbecc2-0x0;var _0x408765=_0x45b5[_0xbbecc2];return _0x408765;};'use strict';var _=require(_0x545b('0x0'));var logger=require('../../../config/logger')(_0x545b('0x1'));var verticesWithRetry=[_0x545b('0x2'),_0x545b('0x3'),'getsecretdigits'];var Graph=function(){this[_0x545b('0x4')]={};this['edges']={};this[_0x545b('0x5')]=0x0;};Graph['prototype']['addVertex']=function(_0x358101){this[_0x545b('0x4')][_0x358101['id']]=_0x358101;this['edges'][_0x358101['id']]=[];};Graph['prototype'][_0x545b('0x6')]=function(_0x42d3b3,_0x329a6e,_0x121d7a){this[_0x545b('0x7')][_0x42d3b3][_0x545b('0x8')]({'target':_0x329a6e,'condition':_0x121d7a});this[_0x545b('0x5')]+=0x1;};Graph[_0x545b('0x9')][_0x545b('0xa')]=function(){return _[_0x545b('0xa')](this[_0x545b('0x4')]);};Graph['prototype']['relations']=function(){return this[_0x545b('0x5')];};Graph['prototype'][_0x545b('0xb')]=function(_0x46b96c){return this[_0x545b('0x4')][_0x46b96c];};Graph[_0x545b('0x9')][_0x545b('0xc')]=function(_0x3f6984,_0x3678bf){if(!this[_0x545b('0x4')][_0x3f6984]){return logger[_0x545b('0xd')](_0x545b('0xe'));}var _0x19ef54=_0x3678bf(this[_0x545b('0x4')][_0x3f6984]);if(!_0x19ef54){return logger[_0x545b('0xd')](_0x545b('0xf'));}if(this[_0x545b('0x7')][_0x3f6984][_0x545b('0x10')]===0x0){return logger[_0x545b('0xd')](_0x545b('0x11'));}for(var _0x415cf7=0x0,_0x5e694c=[],_0x3adeb5=![];_0x415cf7<this['edges'][_0x3f6984][_0x545b('0x10')];_0x415cf7+=0x1){if(this['edges'][_0x3f6984][_0x415cf7][_0x545b('0x12')]){_0x5e694c=this[_0x545b('0x7')][_0x3f6984][_0x415cf7][_0x545b('0x12')][_0x545b('0x13')](',');for(var _0x59996c=0x0;_0x59996c<_0x5e694c[_0x545b('0x10')];_0x59996c+=0x1){if(this[_0x545b('0x4')][_0x3f6984][_0x545b('0x14')]==='vswitch'&&_0x5e694c[_0x59996c]==='-'){_0x3adeb5=this['edges'][_0x3f6984][_0x415cf7]['target'];logger[_0x545b('0xd')](_0x545b('0x15'),_0x5e694c[_0x59996c],this['edges'][_0x3f6984][_0x415cf7][_0x545b('0x16')]);}else if(this[_0x545b('0x4')][_0x3f6984][_0x545b('0x14')]==='menu'&&_0x5e694c[_0x59996c]==='i'){_0x3adeb5=this['edges'][_0x3f6984][_0x415cf7]['target'];logger[_0x545b('0xd')]('invalid',_0x5e694c[_0x59996c],this[_0x545b('0x7')][_0x3f6984][_0x415cf7][_0x545b('0x16')]);}if(_0x5e694c[_0x59996c]===_0x19ef54){return this[_0x545b('0xc')](this['edges'][_0x3f6984][_0x415cf7][_0x545b('0x16')],_0x3678bf);}}}else{return this[_0x545b('0xc')](this[_0x545b('0x7')][_0x3f6984][_0x415cf7]['target'],_0x3678bf);}}if(_0x5e694c[_0x545b('0x10')]){if(this[_0x545b('0x4')][_0x3f6984][_0x545b('0x14')]===_0x545b('0x17')){if(_0x3adeb5){return this[_0x545b('0xc')](_0x3adeb5,_0x3678bf);}return logger[_0x545b('0xd')](_0x545b('0x18'));}else if(_[_0x545b('0x19')](verticesWithRetry,this['vertices'][_0x3f6984][_0x545b('0x14')])){if(_0x19ef54==='-'){return logger[_0x545b('0xd')](_0x545b('0x1a'));}if(_0x3adeb5&&_0x19ef54!=='t'){return this[_0x545b('0xc')](_0x3adeb5,_0x3678bf);}return this['traverseBFS'](_0x3f6984,_0x3678bf);}return logger[_0x545b('0xd')]('condition\x20not\x20found');}};module[_0x545b('0x1b')]=Graph;
\ No newline at end of file
+var _0x19e1=['getdigits','getsecretdigits','vertices','edges','numberOfEdges','addVertex','prototype','addEdge','push','size','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','vswitch','default','target','agicommand','menu','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash'];(function(_0x490e74,_0x4c1111){var _0x16d315=function(_0x3ffeba){while(--_0x3ffeba){_0x490e74['push'](_0x490e74['shift']());}};_0x16d315(++_0x4c1111);}(_0x19e1,0x167));var _0x119e=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0x19e1[_0x13992d];return _0x3d15bf;};'use strict';var _=require(_0x119e('0x0'));var logger=require('../../../config/logger')('agi');var verticesWithRetry=['menu',_0x119e('0x1'),_0x119e('0x2')];var Graph=function(){this[_0x119e('0x3')]={};this[_0x119e('0x4')]={};this[_0x119e('0x5')]=0x0;};Graph['prototype'][_0x119e('0x6')]=function(_0x252c37){this['vertices'][_0x252c37['id']]=_0x252c37;this[_0x119e('0x4')][_0x252c37['id']]=[];};Graph[_0x119e('0x7')][_0x119e('0x8')]=function(_0x2a7359,_0x55280a,_0x5a88ae){this[_0x119e('0x4')][_0x2a7359][_0x119e('0x9')]({'target':_0x55280a,'condition':_0x5a88ae});this[_0x119e('0x5')]+=0x1;};Graph['prototype'][_0x119e('0xa')]=function(){return _[_0x119e('0xa')](this['vertices']);};Graph[_0x119e('0x7')]['relations']=function(){return this[_0x119e('0x5')];};Graph['prototype'][_0x119e('0xb')]=function(_0x7f4e89){return this['vertices'][_0x7f4e89];};Graph['prototype'][_0x119e('0xc')]=function(_0x2d7d7a,_0x27247a){if(!this[_0x119e('0x3')][_0x2d7d7a]){return logger['info'](_0x119e('0xd'));}var _0x3239a2=_0x27247a(this[_0x119e('0x3')][_0x2d7d7a]);if(!_0x3239a2){return logger[_0x119e('0xe')](_0x119e('0xf'));}if(this[_0x119e('0x4')][_0x2d7d7a][_0x119e('0x10')]===0x0){return logger[_0x119e('0xe')](_0x119e('0x11'));}for(var _0x1e9094=0x0,_0x212969=[],_0x28fc23=![];_0x1e9094<this['edges'][_0x2d7d7a][_0x119e('0x10')];_0x1e9094+=0x1){if(this['edges'][_0x2d7d7a][_0x1e9094][_0x119e('0x12')]){_0x212969=this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094][_0x119e('0x12')][_0x119e('0x13')](',');for(var _0x579895=0x0;_0x579895<_0x212969[_0x119e('0x10')];_0x579895+=0x1){if(this[_0x119e('0x3')][_0x2d7d7a]['agicommand']===_0x119e('0x14')&&_0x212969[_0x579895]==='-'){_0x28fc23=this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094]['target'];logger[_0x119e('0xe')](_0x119e('0x15'),_0x212969[_0x579895],this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094][_0x119e('0x16')]);}else if(this[_0x119e('0x3')][_0x2d7d7a][_0x119e('0x17')]===_0x119e('0x18')&&_0x212969[_0x579895]==='i'){_0x28fc23=this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094][_0x119e('0x16')];logger['info']('invalid',_0x212969[_0x579895],this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094][_0x119e('0x16')]);}if(_0x212969[_0x579895]===_0x3239a2){return this[_0x119e('0xc')](this[_0x119e('0x4')][_0x2d7d7a][_0x1e9094][_0x119e('0x16')],_0x27247a);}}}else{return this[_0x119e('0xc')](this['edges'][_0x2d7d7a][_0x1e9094][_0x119e('0x16')],_0x27247a);}}if(_0x212969['length']){if(this[_0x119e('0x3')][_0x2d7d7a][_0x119e('0x17')]===_0x119e('0x14')){if(_0x28fc23){return this[_0x119e('0xc')](_0x28fc23,_0x27247a);}return logger[_0x119e('0xe')](_0x119e('0x19'));}else if(_[_0x119e('0x1a')](verticesWithRetry,this[_0x119e('0x3')][_0x2d7d7a][_0x119e('0x17')])){if(_0x3239a2==='-'){return logger['info'](_0x119e('0x1b'));}if(_0x28fc23&&_0x3239a2!=='t'){return this[_0x119e('0xc')](_0x28fc23,_0x27247a);}return this['traverseBFS'](_0x2d7d7a,_0x27247a);}return logger['info'](_0x119e('0x1c'));}};module[_0x119e('0x1d')]=Graph;
\ No newline at end of file
index 08a8984..352c9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43a3=['lodash','syncho','util','../../config/environment','agi','./rpc','./project','./events','127.0.0.1','projectUpdate','stack','findIndex','deleted','push','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup','then','catch','hasOwnProperty','agi_','substring','debug','variables','stringify','close','timeout','hangup','find','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','finally','./server','listening'];(function(_0x101a1e,_0x1c4531){var _0x45ab1c=function(_0x393eb4){while(--_0x393eb4){_0x101a1e['push'](_0x101a1e['shift']());}};_0x45ab1c(++_0x1c4531);}(_0x43a3,0x10e));var _0x343a=function(_0x44d907,_0x54202d){_0x44d907=_0x44d907-0x0;var _0x2fb9b5=_0x43a3[_0x44d907];return _0x2fb9b5;};'use strict';var _=require(_0x343a('0x0'));var syncho=require(_0x343a('0x1'));var util=require(_0x343a('0x2'));var config=require(_0x343a('0x3'));var logger=require('../../config/logger')(_0x343a('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0x343a('0x5'));var Project=require(_0x343a('0x6'));var AGIEmitter=require(_0x343a('0x7'))['EventEmitter'];var projects=[];config[_0x343a('0x4')]=_['defaults'](config[_0x343a('0x4')],{'ip':_0x343a('0x8'),'port':0x11dd});AGIEmitter['on'](_0x343a('0x9'),projectUpdateHandler);function connectionHandler(_0x5d2a95){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x5d2a95);agiHandler(_0x5d2a95);}catch(_0x1e023b){logger['error'](_0x1e023b[_0x343a('0xa')]);}});});}function projectUpdateHandler(_0x1eb861){try{var _0x1ed330=_[_0x343a('0xb')](projects,['id',_0x1eb861['id']]);if(_0x1ed330>-0x1){if(_0x1eb861[_0x343a('0xc')]===!![]){projects['splice'](_0x1ed330,0x1);}else{projects[_0x1ed330]=_0x1eb861;}}else{projects[_0x343a('0xd')](_0x1eb861);}}catch(_0x55ecda){logger[_0x343a('0xe')](_0x55ecda[_0x343a('0xa')]);}}function listeningHandler(){console[_0x343a('0xf')](_0x343a('0x10'),config[_0x343a('0x4')]['port']);logger[_0x343a('0x11')](util[_0x343a('0x12')](_0x343a('0x13'),config[_0x343a('0x4')]['ip'],config[_0x343a('0x4')][_0x343a('0x14')]));}function errorHandler(_0xfbd434){if(_0xfbd434&&_0xfbd434[_0x343a('0x15')]&&_0xfbd434[_0x343a('0x16')]){logger[_0x343a('0xe')](util[_0x343a('0x12')]('[%s]\x20%s',_0xfbd434[_0x343a('0x15')],_0xfbd434[_0x343a('0x16')]));}else{logger[_0x343a('0xe')](util['format']('[ERROR]\x20%s',_0xfbd434[_0x343a('0xa')]));}}function closeHandler(){logger[_0x343a('0x11')](util[_0x343a('0x12')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x343a('0x17')],this[_0x343a('0x18')],this[_0x343a('0x19')],this[_0x343a('0x1a')]));try{createSquareReport(this);}catch(_0x232f5){logger[_0x343a('0xe')](_0x232f5[_0x343a('0xa')]);}}function timeoutHandler(){logger[_0x343a('0x11')](util['format'](_0x343a('0x1b'),this[_0x343a('0x1c')],this[_0x343a('0x17')],this[_0x343a('0x18')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0x343a('0x11')](util[_0x343a('0x12')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x343a('0x1c')],this[_0x343a('0x17')],this[_0x343a('0x18')],this['dnid'],this[_0x343a('0x1a')]));this[_0x343a('0x1d')]=!![];}function createSquareReport(_0x5f1b48,_0x49f8d8){rpc['createSquareReport'](_0x5f1b48)[_0x343a('0x1e')](function(_0x237061){if(_0x49f8d8){_0x49f8d8(null,_0x237061);}})[_0x343a('0x1f')](function(_0x3fed8c){if(_0x49f8d8){_0x49f8d8(null,_0x3fed8c);}});}function setChannelVariables(_0x34a02c){for(var _0x238a9b in _0x34a02c){if(_0x34a02c[_0x343a('0x20')](_0x238a9b)){if(_0x238a9b['indexOf'](_0x343a('0x21'))===0x0){_0x34a02c[_0x238a9b[_0x343a('0x22')](0x4)]=_0x34a02c[_0x238a9b];delete _0x34a02c[_0x238a9b];}}}}function agiHandler(_0x26712a){logger[_0x343a('0x23')](_0x343a('0x24'),JSON[_0x343a('0x25')](_0x26712a,null,0x2));logger['info'](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x26712a[_0x343a('0x1c')],_0x26712a[_0x343a('0x17')],_0x26712a['callerid'],_0x26712a[_0x343a('0x19')],_0x26712a[_0x343a('0x1a')]));_0x26712a['on'](_0x343a('0xe'),errorHandler);_0x26712a['on'](_0x343a('0x26'),closeHandler);_0x26712a['on'](_0x343a('0x27'),timeoutHandler);_0x26712a[_0x343a('0x1d')]=![];_0x26712a['on'](_0x343a('0x28'),hangupHandler);var _0x3483bd=_[_0x343a('0x29')](projects,[_0x343a('0x15'),_0x26712a[_0x343a('0x1c')]]);if(!_0x3483bd)return Project['handleNotFound'](_0x26712a);if(!_0x3483bd['production'])return Project[_0x343a('0x2a')](_0x26712a);return Project[_0x343a('0x2b')](_0x3483bd,_0x26712a);}function main(){var _0xacbed4;return utilLicense[_0x343a('0x2c')]()['then'](function(_0x208bf7){if(!_0x208bf7)return;if(_0x208bf7[_0x343a('0x2d')]){if(_0x208bf7[_0x343a('0x2e')]&&_0x208bf7['callysquare']>0x0){logger[_0x343a('0x11')](util[_0x343a('0x12')](_0x343a('0x2f'),_0x208bf7[_0x343a('0x2e')]));_0xacbed4=_0x208bf7[_0x343a('0x2e')];}else{logger[_0x343a('0x11')](_0x343a('0x30'));}}else{logger[_0x343a('0x11')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0xacbed4=-0x1;}})[_0x343a('0x1e')](function(){return Project[_0x343a('0x31')]();})[_0x343a('0x1e')](function(_0x2db55e){projects=_0x2db55e;return;})['catch'](function(_0x5b1ca0){logger[_0x343a('0xe')](_0x343a('0x32'),_0x5b1ca0[_0x343a('0xa')]);})[_0x343a('0x33')](function(){var _0x30f40f=require(_0x343a('0x34'))(config[_0x343a('0x4')][_0x343a('0x14')],config[_0x343a('0x4')]['ip'],_0xacbed4);_0x30f40f['on'](_0x343a('0xe'),errorHandler);_0x30f40f['on'](_0x343a('0x35'),listeningHandler);_0x30f40f['on']('connection',connectionHandler);_0x30f40f['on'](_0x343a('0x26'),closeHandler);});}main();
\ No newline at end of file
+var _0x3eb4=['defaults','error','stack','findIndex','splice','push','log','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','format','[%s]\x20%s','message','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup','createSquareReport','then','catch','hasOwnProperty','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','hangup','find','handleNotFound','production','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','./server','lodash','syncho','util','../../config/logger','agi','../../config/license/util','./rpc','./events','EventEmitter'];(function(_0x1f8a72,_0x419a01){var _0x2d947d=function(_0x82052){while(--_0x82052){_0x1f8a72['push'](_0x1f8a72['shift']());}};_0x2d947d(++_0x419a01);}(_0x3eb4,0xa8));var _0x43eb=function(_0x47b277,_0x30f973){_0x47b277=_0x47b277-0x0;var _0x1077f2=_0x3eb4[_0x47b277];return _0x1077f2;};'use strict';var _=require(_0x43eb('0x0'));var syncho=require(_0x43eb('0x1'));var util=require(_0x43eb('0x2'));var config=require('../../config/environment');var logger=require(_0x43eb('0x3'))(_0x43eb('0x4'));var utilLicense=require(_0x43eb('0x5'));var rpc=require(_0x43eb('0x6'));var Project=require('./project');var AGIEmitter=require(_0x43eb('0x7'))[_0x43eb('0x8')];var projects=[];config['agi']=_[_0x43eb('0x9')](config[_0x43eb('0x4')],{'ip':'127.0.0.1','port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x45a5c5){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x45a5c5);agiHandler(_0x45a5c5);}catch(_0xa668af){logger[_0x43eb('0xa')](_0xa668af[_0x43eb('0xb')]);}});});}function projectUpdateHandler(_0x20d29a){try{var _0x1f4f89=_[_0x43eb('0xc')](projects,['id',_0x20d29a['id']]);if(_0x1f4f89>-0x1){if(_0x20d29a['deleted']===!![]){projects[_0x43eb('0xd')](_0x1f4f89,0x1);}else{projects[_0x1f4f89]=_0x20d29a;}}else{projects[_0x43eb('0xe')](_0x20d29a);}}catch(_0x2de49d){logger[_0x43eb('0xa')](_0x2de49d['stack']);}}function listeningHandler(){console[_0x43eb('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0x43eb('0x10')]);logger['info'](util['format'](_0x43eb('0x11'),config[_0x43eb('0x4')]['ip'],config[_0x43eb('0x4')][_0x43eb('0x10')]));}function errorHandler(_0xf14135){if(_0xf14135&&_0xf14135[_0x43eb('0x12')]&&_0xf14135['message']){logger[_0x43eb('0xa')](util[_0x43eb('0x13')](_0x43eb('0x14'),_0xf14135['name'],_0xf14135[_0x43eb('0x15')]));}else{logger[_0x43eb('0xa')](util[_0x43eb('0x13')](_0x43eb('0x16'),_0xf14135[_0x43eb('0xb')]));}}function closeHandler(){logger[_0x43eb('0x17')](util['format'](_0x43eb('0x18'),this['arg_1'],this[_0x43eb('0x19')],this[_0x43eb('0x1a')],this[_0x43eb('0x1b')],this[_0x43eb('0x1c')]));try{createSquareReport(this);}catch(_0x1809d5){logger[_0x43eb('0xa')](_0x1809d5['stack']);}}function timeoutHandler(){logger[_0x43eb('0x17')](util[_0x43eb('0x13')](_0x43eb('0x1d'),this['arg_1'],this[_0x43eb('0x19')],this[_0x43eb('0x1a')],this[_0x43eb('0x1b')],this[_0x43eb('0x1c')]));}function hangupHandler(){logger['info'](util[_0x43eb('0x13')](_0x43eb('0x1e'),this[_0x43eb('0x1f')],this[_0x43eb('0x19')],this['callerid'],this[_0x43eb('0x1b')],this[_0x43eb('0x1c')]));this[_0x43eb('0x20')]=!![];}function createSquareReport(_0x5df36c,_0x3557a9){rpc[_0x43eb('0x21')](_0x5df36c)[_0x43eb('0x22')](function(_0x1169a6){if(_0x3557a9){_0x3557a9(null,_0x1169a6);}})[_0x43eb('0x23')](function(_0x2fa1ed){if(_0x3557a9){_0x3557a9(null,_0x2fa1ed);}});}function setChannelVariables(_0x4fda45){for(var _0x5a57e8 in _0x4fda45){if(_0x4fda45[_0x43eb('0x24')](_0x5a57e8)){if(_0x5a57e8['indexOf'](_0x43eb('0x25'))===0x0){_0x4fda45[_0x5a57e8[_0x43eb('0x26')](0x4)]=_0x4fda45[_0x5a57e8];delete _0x4fda45[_0x5a57e8];}}}}function agiHandler(_0x2a188b){logger[_0x43eb('0x27')](_0x43eb('0x28'),JSON[_0x43eb('0x29')](_0x2a188b,null,0x2));logger[_0x43eb('0x17')](util[_0x43eb('0x13')](_0x43eb('0x2a'),_0x2a188b[_0x43eb('0x1f')],_0x2a188b['calleridname'],_0x2a188b['callerid'],_0x2a188b[_0x43eb('0x1b')],_0x2a188b[_0x43eb('0x1c')]));_0x2a188b['on'](_0x43eb('0xa'),errorHandler);_0x2a188b['on']('close',closeHandler);_0x2a188b['on'](_0x43eb('0x2b'),timeoutHandler);_0x2a188b['evtHangup']=![];_0x2a188b['on'](_0x43eb('0x2c'),hangupHandler);var _0x1c5fd7=_[_0x43eb('0x2d')](projects,[_0x43eb('0x12'),_0x2a188b[_0x43eb('0x1f')]]);if(!_0x1c5fd7)return Project[_0x43eb('0x2e')](_0x2a188b);if(!_0x1c5fd7[_0x43eb('0x2f')])return Project[_0x43eb('0x30')](_0x2a188b);return Project[_0x43eb('0x31')](_0x1c5fd7,_0x2a188b);}function main(){var _0xca809f;return utilLicense[_0x43eb('0x32')]()['then'](function(_0x8ef3c1){if(!_0x8ef3c1)return;if(_0x8ef3c1[_0x43eb('0x33')]){if(_0x8ef3c1['callysquare']&&_0x8ef3c1[_0x43eb('0x34')]>0x0){logger[_0x43eb('0x17')](util[_0x43eb('0x13')](_0x43eb('0x35'),_0x8ef3c1[_0x43eb('0x34')]));_0xca809f=_0x8ef3c1['callysquare'];}else{logger[_0x43eb('0x17')](_0x43eb('0x36'));}}else{logger[_0x43eb('0x17')](_0x43eb('0x37'));_0xca809f=-0x1;}})['then'](function(){return Project[_0x43eb('0x38')]();})[_0x43eb('0x22')](function(_0x1ab568){projects=_0x1ab568;return;})[_0x43eb('0x23')](function(_0x4fbb53){logger[_0x43eb('0xa')](_0x43eb('0x39'),_0x4fbb53[_0x43eb('0xb')]);})['finally'](function(){var _0x4be194=require(_0x43eb('0x3a'))(config[_0x43eb('0x4')][_0x43eb('0x10')],config['agi']['ip'],_0xca809f);_0x4be194['on'](_0x43eb('0xa'),errorHandler);_0x4be194['on']('listening',listeningHandler);_0x4be194['on']('connection',connectionHandler);_0x4be194['on']('close',closeHandler);});}main();
\ No newline at end of file
index 52b1aaf..70f212c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b5=['then','error','message','result','catch','sendMailMessage','bluebird','jayson/promise','client','request'];(function(_0x5885bc,_0x191e09){var _0x6b59e9=function(_0x22333a){while(--_0x22333a){_0x5885bc['push'](_0x5885bc['shift']());}};_0x6b59e9(++_0x191e09);}(_0x39b5,0xa6));var _0x539b=function(_0x2074fb,_0x4c5253){_0x2074fb=_0x2074fb-0x0;var _0x238756=_0x39b5[_0x2074fb];return _0x238756;};'use strict';var BPromise=require(_0x539b('0x0'));var jayson=require(_0x539b('0x1'));var client=jayson[_0x539b('0x2')]['http']({'port':0x232b});function request(_0x196f48,_0x1aca26){return new BPromise(function(_0x4de48c,_0x372403){return client[_0x539b('0x3')](_0x196f48,_0x1aca26)[_0x539b('0x4')](function(_0x585be7){if(_0x585be7[_0x539b('0x5')]){return _0x372403(_0x585be7[_0x539b('0x5')][_0x539b('0x6')]);}else{return _0x4de48c(_0x585be7[_0x539b('0x7')]);}})[_0x539b('0x8')](function(_0x3ee5ab){return _0x372403(_0x3ee5ab);});});}exports[_0x539b('0x9')]=function(_0x5d3faf,_0x24fdaf){return request('SendMail',{'account':_0x5d3faf,'message':_0x24fdaf});};
\ No newline at end of file
+var _0xe7b9=['bluebird','client','request','then','error','message','result','catch','sendMailMessage','SendMail'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0xe7b9,0x96));var _0x9e7b=function(_0x5fa17f,_0xebf72c){_0x5fa17f=_0x5fa17f-0x0;var _0xf9d8b2=_0xe7b9[_0x5fa17f];return _0xf9d8b2;};'use strict';var BPromise=require(_0x9e7b('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x9e7b('0x1')]['http']({'port':0x232b});function request(_0x3abd95,_0x21afeb){return new BPromise(function(_0x1da1b0,_0x12d299){return client[_0x9e7b('0x2')](_0x3abd95,_0x21afeb)[_0x9e7b('0x3')](function(_0x231e4d){if(_0x231e4d[_0x9e7b('0x4')]){return _0x12d299(_0x231e4d['error'][_0x9e7b('0x5')]);}else{return _0x1da1b0(_0x231e4d[_0x9e7b('0x6')]);}})[_0x9e7b('0x7')](function(_0x52ea24){return _0x12d299(_0x52ea24);});});}exports[_0x9e7b('0x8')]=function(_0x594bbd,_0x12aa4a){return request(_0x9e7b('0x9'),{'account':_0x594bbd,'message':_0x12aa4a});};
\ No newline at end of file
index 99ddf6d..fc85675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef66=['catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','retry','maxRetry','mxCell','isArray','length','target','addEdge','toJson','mxGraphModel','root','inspect','production','start','debug','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','uniqueid','traverseBFS','vertex','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','isUndefined','agicommand\x20not\x20found','callerid','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','getSquareProjects'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xef66,0x16b));var _0x6ef6=function(_0x36e71e,_0x56c5cf){_0x36e71e=_0x36e71e-0x0;var _0x5ed9d1=_0xef66[_0x36e71e];return _0x5ed9d1;};'use strict';var _=require(_0x6ef6('0x0'));var moment=require('moment');var parser=require(_0x6ef6('0x1'));var util=require(_0x6ef6('0x2'));var logger=require(_0x6ef6('0x3'))(_0x6ef6('0x4'));var rpc=require(_0x6ef6('0x5'));var mailRpc=require(_0x6ef6('0x6'));var Graph=require(_0x6ef6('0x7'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x6ef6('0x8')]()[_0x6ef6('0x9')](function(_0x56a186){logger[_0x6ef6('0xa')](_0x6ef6('0xb'),_0x56a186[_0x6ef6('0xc')]);return[];});}function addVertex(_0x3a9a9a,_0x21a16c,_0x345e09){_0x21a16c['agicommand']=_0x345e09;if(_0x21a16c[_0x6ef6('0xd')](_0x6ef6('0xe'))){_0x21a16c[_0x6ef6('0xf')]=parseInt(_0x21a16c[_0x6ef6('0xe')],0xa);}_0x3a9a9a['addVertex'](_['omit'](_0x21a16c,_0x6ef6('0x10')));}function initGraph(_0x41f6bd,_0xc5d7b3){var _0x391f49=new Graph();for(var _0x4b5086 in _0x41f6bd){if(_0x41f6bd[_0x6ef6('0xd')](_0x4b5086)){if(_[_0x6ef6('0x11')](_0x41f6bd[_0x4b5086])){for(var _0x4774dd=0x0;_0x4774dd<_0x41f6bd[_0x4b5086][_0x6ef6('0x12')];_0x4774dd+=0x1){addVertex(_0x391f49,_0x41f6bd[_0x4b5086][_0x4774dd],_0x4b5086);}}else{addVertex(_0x391f49,_0x41f6bd[_0x4b5086],_0x4b5086);}}}for(var _0x59d2a4=0x0;_0x59d2a4<_0xc5d7b3['length'];_0x59d2a4+=0x1){if(_0xc5d7b3[_0x59d2a4]['source']&&_0xc5d7b3[_0x59d2a4][_0x6ef6('0x13')]){_0x391f49[_0x6ef6('0x14')](_0xc5d7b3[_0x59d2a4]['source'],_0xc5d7b3[_0x59d2a4]['target'],_0xc5d7b3[_0x59d2a4]['value']);}}return _0x391f49;}function getRoot(_0x47d825){return parser[_0x6ef6('0x15')](_0x47d825,{'object':!![]})[_0x6ef6('0x16')][_0x6ef6('0x17')];}function inspect(_0x1db166){return util[_0x6ef6('0x18')](_0x1db166,{'showHidden':![],'depth':null});}function initialize(_0x4d85f4,_0x1b5066){var _0x72594d=getRoot(_0x4d85f4[_0x6ef6('0x19')]);if(!_0x72594d||!_0x72594d[_0x6ef6('0x1a')])return;var _0x31cfcc,_0x39c0bf,_0x1b4ea8;logger[_0x6ef6('0x1b')](_0x6ef6('0x17'),JSON[_0x6ef6('0x1c')](_0x72594d,null,0x2));_0x1b5066[_0x6ef6('0x1d')]=moment()[_0x6ef6('0x1e')](_0x6ef6('0x1f'));_0x31cfcc=initGraph(_[_0x6ef6('0x20')](_0x72594d,_0x6ef6('0x10')),_0x72594d['mxCell']);_0x39c0bf=new Vertices(_0x1b5066,rpc,mailRpc);logger['info'](util['format'](_0x6ef6('0x21'),_0x1b5066[_0x6ef6('0x22')],_0x1b5066[_0x6ef6('0x23')],_0x1b5066['callerid'],_0x1b5066['dnid'],_0x1b5066[_0x6ef6('0x24')]));_0x31cfcc[_0x6ef6('0x25')](_0x72594d[_0x6ef6('0x1a')]['id'],function(_0x371684){try{_0x371684=_0x39c0bf['clear'](_0x371684);logger[_0x6ef6('0x1b')](_0x6ef6('0x26'),JSON[_0x6ef6('0x1c')](_0x371684,null,0x2));if(_0x371684[_0x6ef6('0x27')]===_0x6ef6('0x28')){logger[_0x6ef6('0x29')](_0x6ef6('0x2a'));_0x1b5066['context']=_0x371684['context']||_0x1b5066[_0x6ef6('0x2b')];_0x1b5066[_0x6ef6('0x2c')]=_0x371684[_0x6ef6('0x2c')];_0x1b5066[_0x6ef6('0x2d')]=_0x371684[_0x6ef6('0x2d')]?_0x371684[_0x6ef6('0x2d')]-0x1:0x1;return null;}else if(_0x371684&&_0x39c0bf[_0x371684[_0x6ef6('0x27')]]){_0x1b4ea8=_0x39c0bf[_0x371684[_0x6ef6('0x27')]](_0x371684);logger[_0x6ef6('0x29')](_0x6ef6('0x2e'),JSON[_0x6ef6('0x1c')](_0x1b4ea8,null,0x2));if(_0x1b4ea8&&_0x1b4ea8[_0x6ef6('0x2f')]===AGI_CODE_SUCCESS&&_0x1b4ea8[_0x6ef6('0x30')]!==AGI_RESULT_ERROR&&!_0x1b5066['evtHangup']){logger[_0x6ef6('0x1b')](_0x6ef6('0x2e'),inspect(_0x1b4ea8));return _['isUndefined'](_0x1b4ea8[_0x6ef6('0x30')])?null:_0x1b4ea8[_0x6ef6('0x30')][_0x6ef6('0x31')]();}else{logger['error'](_0x6ef6('0x2e'),inspect(_0x1b4ea8));return null;}}else{logger[_0x6ef6('0xa')]('agicommand\x20not\x20found');return null;}}catch(_0xbca7cd){logger['error'](_0xbca7cd['stack']);return null;}});if(_0x72594d[_0x6ef6('0x32')]){logger['info'](util['format'](_0x6ef6('0x33'),_0x1b5066['arg_1'],_0x1b5066[_0x6ef6('0x23')],_0x1b5066['callerid'],_0x1b5066[_0x6ef6('0x34')],_0x1b5066[_0x6ef6('0x24')]));_0x31cfcc[_0x6ef6('0x25')](_0x72594d[_0x6ef6('0x32')]['id'],function(_0x2a923c){try{_0x2a923c=_0x39c0bf['clear'](_0x2a923c);logger[_0x6ef6('0x1b')](_0x6ef6('0x26'),JSON[_0x6ef6('0x1c')](_0x2a923c,null,0x2));if(_0x2a923c&&_0x39c0bf[_0x2a923c[_0x6ef6('0x27')]]){_0x1b4ea8=_0x39c0bf[_0x2a923c[_0x6ef6('0x27')]](_0x2a923c);if(_0x1b4ea8){logger[_0x6ef6('0x1b')](_0x6ef6('0x2e'),inspect(_0x1b4ea8));return _[_0x6ef6('0x35')](_0x1b4ea8[_0x6ef6('0x30')])?null:_0x1b4ea8['result'][_0x6ef6('0x31')]();}else{logger[_0x6ef6('0xa')]('response',inspect(_0x1b4ea8));return null;}}else{logger[_0x6ef6('0xa')](_0x6ef6('0x36'));return null;}}catch(_0x5ebce8){logger[_0x6ef6('0xa')](_0x5ebce8['stack']);return null;}});}logger[_0x6ef6('0x29')](util[_0x6ef6('0x1e')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1b5066[_0x6ef6('0x22')],_0x1b5066[_0x6ef6('0x23')],_0x1b5066[_0x6ef6('0x37')],_0x1b5066[_0x6ef6('0x34')],_0x1b5066[_0x6ef6('0x24')]));logger[_0x6ef6('0x29')](util[_0x6ef6('0x1e')](_0x6ef6('0x38'),_0x1b5066[_0x6ef6('0x2b')],_0x1b5066[_0x6ef6('0x2c')],parseInt(_0x1b5066['priority'],0xa)+0x1));_0x1b5066[_0x6ef6('0x39')](_0x1b5066[_0x6ef6('0x2b')],_0x1b5066[_0x6ef6('0x2c')],parseInt(_0x1b5066['priority'],0xa)+0x1);_0x1b5066[_0x6ef6('0x3a')]();}function handleNotFound(_0x4b9e50){logger['error'](util[_0x6ef6('0x1e')](_0x6ef6('0x3b'),_0x4b9e50[_0x6ef6('0x22')]));_0x4b9e50['continueAt'](_0x4b9e50['context'],_0x4b9e50[_0x6ef6('0x2c')],parseInt(_0x4b9e50[_0x6ef6('0x2d')],0xa)+0x1);_0x4b9e50[_0x6ef6('0x3a')]();}function handleUnpublished(_0x486e62){logger[_0x6ef6('0xa')](util[_0x6ef6('0x1e')](_0x6ef6('0x3c'),_0x486e62[_0x6ef6('0x22')]));_0x486e62[_0x6ef6('0x39')](_0x486e62[_0x6ef6('0x2b')],_0x486e62[_0x6ef6('0x2c')],parseInt(_0x486e62[_0x6ef6('0x2d')],0xa)+0x1);_0x486e62[_0x6ef6('0x3a')]();}module[_0x6ef6('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x3a3c=['extension','priority','code','result','evtHangup','response','isUndefined','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','agicommand\x20not\x20found','callerid','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','continueAt','exports','moment','xml2json','../../config/logger','agi','./mailRpc','./graph','./vertices','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','retry','maxRetry','omit','mxCell','hasOwnProperty','length','source','target','addEdge','value','toJson','mxGraphModel','root','inspect','production','start','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','debug','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context'];(function(_0x252782,_0x5b7839){var _0x5123ea=function(_0xbace4b){while(--_0xbace4b){_0x252782['push'](_0x252782['shift']());}};_0x5123ea(++_0x5b7839);}(_0x3a3c,0x94));var _0xc3a3=function(_0x5439c3,_0x21bdbe){_0x5439c3=_0x5439c3-0x0;var _0x5ddd66=_0x3a3c[_0x5439c3];return _0x5ddd66;};'use strict';var _=require('lodash');var moment=require(_0xc3a3('0x0'));var parser=require(_0xc3a3('0x1'));var util=require('util');var logger=require(_0xc3a3('0x2'))(_0xc3a3('0x3'));var rpc=require('./rpc');var mailRpc=require(_0xc3a3('0x4'));var Graph=require(_0xc3a3('0x5'));var Vertices=require(_0xc3a3('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xc3a3('0x7')]()[_0xc3a3('0x8')](function(_0x3aa220){logger[_0xc3a3('0x9')](_0xc3a3('0xa'),_0x3aa220[_0xc3a3('0xb')]);return[];});}function addVertex(_0x2eee13,_0x2c8ba0,_0x210f84){_0x2c8ba0[_0xc3a3('0xc')]=_0x210f84;if(_0x2c8ba0['hasOwnProperty'](_0xc3a3('0xd'))){_0x2c8ba0[_0xc3a3('0xe')]=parseInt(_0x2c8ba0[_0xc3a3('0xd')],0xa);}_0x2eee13['addVertex'](_[_0xc3a3('0xf')](_0x2c8ba0,_0xc3a3('0x10')));}function initGraph(_0x991095,_0x538c0f){var _0x13e9dd=new Graph();for(var _0x3ed743 in _0x991095){if(_0x991095[_0xc3a3('0x11')](_0x3ed743)){if(_['isArray'](_0x991095[_0x3ed743])){for(var _0x162d7c=0x0;_0x162d7c<_0x991095[_0x3ed743][_0xc3a3('0x12')];_0x162d7c+=0x1){addVertex(_0x13e9dd,_0x991095[_0x3ed743][_0x162d7c],_0x3ed743);}}else{addVertex(_0x13e9dd,_0x991095[_0x3ed743],_0x3ed743);}}}for(var _0x28e7b7=0x0;_0x28e7b7<_0x538c0f['length'];_0x28e7b7+=0x1){if(_0x538c0f[_0x28e7b7][_0xc3a3('0x13')]&&_0x538c0f[_0x28e7b7][_0xc3a3('0x14')]){_0x13e9dd[_0xc3a3('0x15')](_0x538c0f[_0x28e7b7]['source'],_0x538c0f[_0x28e7b7][_0xc3a3('0x14')],_0x538c0f[_0x28e7b7][_0xc3a3('0x16')]);}}return _0x13e9dd;}function getRoot(_0x4d94c1){return parser[_0xc3a3('0x17')](_0x4d94c1,{'object':!![]})[_0xc3a3('0x18')][_0xc3a3('0x19')];}function inspect(_0x240c62){return util[_0xc3a3('0x1a')](_0x240c62,{'showHidden':![],'depth':null});}function initialize(_0x24faff,_0x47d3c9){var _0x382c41=getRoot(_0x24faff[_0xc3a3('0x1b')]);if(!_0x382c41||!_0x382c41[_0xc3a3('0x1c')])return;var _0x1028a0,_0x363002,_0x57ba9e;logger['debug'](_0xc3a3('0x19'),JSON[_0xc3a3('0x1d')](_0x382c41,null,0x2));_0x47d3c9[_0xc3a3('0x1e')]=moment()[_0xc3a3('0x1f')](_0xc3a3('0x20'));_0x1028a0=initGraph(_[_0xc3a3('0xf')](_0x382c41,'mxCell'),_0x382c41[_0xc3a3('0x10')]);_0x363002=new Vertices(_0x47d3c9,rpc,mailRpc);logger[_0xc3a3('0x21')](util[_0xc3a3('0x1f')](_0xc3a3('0x22'),_0x47d3c9[_0xc3a3('0x23')],_0x47d3c9[_0xc3a3('0x24')],_0x47d3c9['callerid'],_0x47d3c9[_0xc3a3('0x25')],_0x47d3c9[_0xc3a3('0x26')]));_0x1028a0['traverseBFS'](_0x382c41[_0xc3a3('0x1c')]['id'],function(_0x36f5c8){try{_0x36f5c8=_0x363002['clear'](_0x36f5c8);logger[_0xc3a3('0x27')](_0xc3a3('0x28'),JSON[_0xc3a3('0x1d')](_0x36f5c8,null,0x2));if(_0x36f5c8['agicommand']===_0xc3a3('0x29')){logger[_0xc3a3('0x21')](_0xc3a3('0x2a'));_0x47d3c9[_0xc3a3('0x2b')]=_0x36f5c8[_0xc3a3('0x2b')]||_0x47d3c9[_0xc3a3('0x2b')];_0x47d3c9['extension']=_0x36f5c8[_0xc3a3('0x2c')];_0x47d3c9[_0xc3a3('0x2d')]=_0x36f5c8[_0xc3a3('0x2d')]?_0x36f5c8[_0xc3a3('0x2d')]-0x1:0x1;return null;}else if(_0x36f5c8&&_0x363002[_0x36f5c8[_0xc3a3('0xc')]]){_0x57ba9e=_0x363002[_0x36f5c8['agicommand']](_0x36f5c8);logger[_0xc3a3('0x21')]('response',JSON[_0xc3a3('0x1d')](_0x57ba9e,null,0x2));if(_0x57ba9e&&_0x57ba9e[_0xc3a3('0x2e')]===AGI_CODE_SUCCESS&&_0x57ba9e[_0xc3a3('0x2f')]!==AGI_RESULT_ERROR&&!_0x47d3c9[_0xc3a3('0x30')]){logger[_0xc3a3('0x27')](_0xc3a3('0x31'),inspect(_0x57ba9e));return _[_0xc3a3('0x32')](_0x57ba9e[_0xc3a3('0x2f')])?null:_0x57ba9e[_0xc3a3('0x2f')][_0xc3a3('0x33')]();}else{logger[_0xc3a3('0x9')](_0xc3a3('0x31'),inspect(_0x57ba9e));return null;}}else{logger[_0xc3a3('0x9')]('agicommand\x20not\x20found');return null;}}catch(_0x220f16){logger['error'](_0x220f16[_0xc3a3('0xb')]);return null;}});if(_0x382c41[_0xc3a3('0x34')]){logger[_0xc3a3('0x21')](util[_0xc3a3('0x1f')](_0xc3a3('0x35'),_0x47d3c9[_0xc3a3('0x23')],_0x47d3c9['calleridname'],_0x47d3c9['callerid'],_0x47d3c9['dnid'],_0x47d3c9[_0xc3a3('0x26')]));_0x1028a0[_0xc3a3('0x36')](_0x382c41[_0xc3a3('0x34')]['id'],function(_0x308d63){try{_0x308d63=_0x363002[_0xc3a3('0x37')](_0x308d63);logger[_0xc3a3('0x27')](_0xc3a3('0x28'),JSON['stringify'](_0x308d63,null,0x2));if(_0x308d63&&_0x363002[_0x308d63[_0xc3a3('0xc')]]){_0x57ba9e=_0x363002[_0x308d63[_0xc3a3('0xc')]](_0x308d63);if(_0x57ba9e){logger[_0xc3a3('0x27')]('response',inspect(_0x57ba9e));return _[_0xc3a3('0x32')](_0x57ba9e[_0xc3a3('0x2f')])?null:_0x57ba9e[_0xc3a3('0x2f')][_0xc3a3('0x33')]();}else{logger['error'](_0xc3a3('0x31'),inspect(_0x57ba9e));return null;}}else{logger['error'](_0xc3a3('0x38'));return null;}}catch(_0xf4f42a){logger[_0xc3a3('0x9')](_0xf4f42a[_0xc3a3('0xb')]);return null;}});}logger[_0xc3a3('0x21')](util[_0xc3a3('0x1f')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x47d3c9[_0xc3a3('0x23')],_0x47d3c9[_0xc3a3('0x24')],_0x47d3c9[_0xc3a3('0x39')],_0x47d3c9[_0xc3a3('0x25')],_0x47d3c9[_0xc3a3('0x26')]));logger[_0xc3a3('0x21')](util[_0xc3a3('0x1f')](_0xc3a3('0x3a'),_0x47d3c9[_0xc3a3('0x2b')],_0x47d3c9[_0xc3a3('0x2c')],parseInt(_0x47d3c9[_0xc3a3('0x2d')],0xa)+0x1));_0x47d3c9['continueAt'](_0x47d3c9[_0xc3a3('0x2b')],_0x47d3c9[_0xc3a3('0x2c')],parseInt(_0x47d3c9['priority'],0xa)+0x1);_0x47d3c9[_0xc3a3('0x3b')]();}function handleNotFound(_0x560bf7){logger['error'](util['format'](_0xc3a3('0x3c'),_0x560bf7[_0xc3a3('0x23')]));_0x560bf7['continueAt'](_0x560bf7[_0xc3a3('0x2b')],_0x560bf7[_0xc3a3('0x2c')],parseInt(_0x560bf7[_0xc3a3('0x2d')],0xa)+0x1);_0x560bf7['close']();}function handleUnpublished(_0x2c0176){logger['error'](util['format'](_0xc3a3('0x3d'),_0x2c0176[_0xc3a3('0x23')]));_0x2c0176[_0xc3a3('0x3e')](_0x2c0176[_0xc3a3('0x2b')],_0x2c0176[_0xc3a3('0x2c')],parseInt(_0x2c0176[_0xc3a3('0x2d')],0xa)+0x1);_0x2c0176['close']();}module[_0xc3a3('0x3f')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index aeb335d..6a6f1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf02=['length','split','slice','trim','emit','headers','exports','util','stream','Transform','call','_localBuffer','_inBody','prototype','\x0d\x0a\x0d\x0a','toString','indexOf','substring'];(function(_0x5508db,_0x22ecbe){var _0x54ce94=function(_0x389047){while(--_0x389047){_0x5508db['push'](_0x5508db['shift']());}};_0x54ce94(++_0x22ecbe);}(_0xbf02,0x139));var _0x2bf0=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xbf02[_0x2c91e9];return _0x13f0ff;};'use strict';var util=require(_0x2bf0('0x0'));var Transform=require(_0x2bf0('0x1'))[_0x2bf0('0x2')];function AGIReply(_0x405545){Transform[_0x2bf0('0x3')](this,_0x405545);this[_0x2bf0('0x4')]='';this[_0x2bf0('0x5')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x2bf0('0x6')]['_transform']=function(_0x325ad6,_0x24a4b7,_0x24204f){var _0x13a4f4='\x0a',_0x3156ac=['\x0a\x0a',_0x2bf0('0x7')],_0x10779f=-0x1,_0xbd09de=-0x1,_0x559d99='',_0xf79ed4=0x0,_0x67c0a='',_0x4896f0='';this[_0x2bf0('0x4')]+=_0x325ad6[_0x2bf0('0x8')]();_0x67c0a=this['_localBuffer'];if(!this[_0x2bf0('0x5')]){_0xf79ed4=0x0;while(_0x3156ac[_0xf79ed4]){while((_0xbd09de=_0x67c0a[_0x2bf0('0x9')](_0x3156ac[_0xf79ed4]))!=-0x1){_0x559d99=_0x3156ac[_0xf79ed4];_0x4896f0=_0x67c0a['substring'](0x0,_0xbd09de);_0x67c0a=_0x67c0a[_0x2bf0('0xa')](_0xbd09de+_0x559d99[_0x2bf0('0xb')]);var _0x1c77bd=_0x4896f0[_0x2bf0('0xc')](_0x13a4f4),_0x15eaa7=0x0,_0x10d0fb={},_0x4663b0='',_0x406c03='',_0xcad32f=-0x1;while(_0x1c77bd[_0x15eaa7]){_0xcad32f=_0x1c77bd[_0x15eaa7][_0x2bf0('0x9')](':');if(_0xcad32f!=-0x1){_0x4663b0=_0x1c77bd[_0x15eaa7][_0x2bf0('0xd')](0x0,_0xcad32f)[_0x2bf0('0xe')]();_0x406c03=_0x1c77bd[_0x15eaa7][_0x2bf0('0xd')](_0xcad32f+0x1)[_0x2bf0('0xe')]();if(_0x4663b0[_0x2bf0('0xb')]>0x0){_0x10d0fb[_0x4663b0]=_0x406c03;}}else{}_0x15eaa7++;}this[_0x2bf0('0xf')](_0x2bf0('0x10'),_0x10d0fb);this[_0x2bf0('0x5')]=!![];}_0xf79ed4++;}this[_0x2bf0('0x4')]=_0x67c0a;}else{while((_0x10779f=_0x67c0a[_0x2bf0('0x9')](_0x13a4f4))!=-0x1){_0x4896f0=_0x67c0a[_0x2bf0('0xa')](0x0,_0x10779f);this['emit']('line',_0x4896f0);_0x67c0a=_0x67c0a[_0x2bf0('0xa')](_0x10779f+_0x13a4f4[_0x2bf0('0xb')]);}this['_localBuffer']=_0x67c0a;}_0x24204f();};module[_0x2bf0('0x11')]=AGIReply;
\ No newline at end of file
+var _0x8441=['length','split','indexOf','slice','trim','headers','emit','line','exports','util','stream','Transform','_localBuffer','_inBody','prototype','\x0d\x0a\x0d\x0a','toString','substring'];(function(_0x1970ab,_0x3fa72c){var _0x4c3c57=function(_0x3c404b){while(--_0x3c404b){_0x1970ab['push'](_0x1970ab['shift']());}};_0x4c3c57(++_0x3fa72c);}(_0x8441,0x1dd));var _0x1844=function(_0x748eb7,_0x1ce52b){_0x748eb7=_0x748eb7-0x0;var _0x2d7e18=_0x8441[_0x748eb7];return _0x2d7e18;};'use strict';var util=require(_0x1844('0x0'));var Transform=require(_0x1844('0x1'))[_0x1844('0x2')];function AGIReply(_0x1f0f2f){Transform['call'](this,_0x1f0f2f);this[_0x1844('0x3')]='';this[_0x1844('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x1844('0x5')]['_transform']=function(_0x1ecb90,_0x546d9b,_0x2cd366){var _0x28076b='\x0a',_0x44ab21=['\x0a\x0a',_0x1844('0x6')],_0x11eb95=-0x1,_0x335bba=-0x1,_0x21bc6a='',_0xcc16c0=0x0,_0x406e2d='',_0x37caaf='';this[_0x1844('0x3')]+=_0x1ecb90[_0x1844('0x7')]();_0x406e2d=this['_localBuffer'];if(!this[_0x1844('0x4')]){_0xcc16c0=0x0;while(_0x44ab21[_0xcc16c0]){while((_0x335bba=_0x406e2d['indexOf'](_0x44ab21[_0xcc16c0]))!=-0x1){_0x21bc6a=_0x44ab21[_0xcc16c0];_0x37caaf=_0x406e2d[_0x1844('0x8')](0x0,_0x335bba);_0x406e2d=_0x406e2d[_0x1844('0x8')](_0x335bba+_0x21bc6a[_0x1844('0x9')]);var _0x3b4b97=_0x37caaf[_0x1844('0xa')](_0x28076b),_0x3ece79=0x0,_0x28b4f1={},_0x4293c9='',_0x507794='',_0x229db9=-0x1;while(_0x3b4b97[_0x3ece79]){_0x229db9=_0x3b4b97[_0x3ece79][_0x1844('0xb')](':');if(_0x229db9!=-0x1){_0x4293c9=_0x3b4b97[_0x3ece79][_0x1844('0xc')](0x0,_0x229db9)[_0x1844('0xd')]();_0x507794=_0x3b4b97[_0x3ece79][_0x1844('0xc')](_0x229db9+0x1)[_0x1844('0xd')]();if(_0x4293c9[_0x1844('0x9')]>0x0){_0x28b4f1[_0x4293c9]=_0x507794;}}else{}_0x3ece79++;}this['emit'](_0x1844('0xe'),_0x28b4f1);this[_0x1844('0x4')]=!![];}_0xcc16c0++;}this[_0x1844('0x3')]=_0x406e2d;}else{while((_0x11eb95=_0x406e2d['indexOf'](_0x28076b))!=-0x1){_0x37caaf=_0x406e2d[_0x1844('0x8')](0x0,_0x11eb95);this[_0x1844('0xf')](_0x1844('0x10'),_0x37caaf);_0x406e2d=_0x406e2d[_0x1844('0x8')](_0x11eb95+_0x28076b[_0x1844('0x9')]);}this[_0x1844('0x3')]=_0x406e2d;}_0x2cd366();};module[_0x1844('0x11')]=AGIReply;
\ No newline at end of file
index 7838fdf..6f5609f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d9f=['ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','CreateSquareMessage','createCmContact','ListId','then','CreateCmContact','LoginUser','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','http','error','message','getSquareProjects','GetSquareProjects','name','production','getSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','CloudProvider','email','getSquareProjectById','ShowSquareProject','getVoiceQueueById','getVariableById','getSquareOdbcById','ShowSquareOdbc','dsn','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk'];(function(_0x4417cb,_0x2c26af){var _0x2cd457=function(_0x278ab4){while(--_0x278ab4){_0x4417cb['push'](_0x4417cb['shift']());}};_0x2cd457(++_0x2c26af);}(_0x3d9f,0xd2));var _0xf3d9=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x3d9f[_0x5b561d];return _0x431060;};'use strict';var _=require(_0xf3d9('0x0'));var moment=require(_0xf3d9('0x1'));var jayson=require(_0xf3d9('0x2'));var client=jayson[_0xf3d9('0x3')][_0xf3d9('0x4')]({'port':0x2329});function request(_0x14f5ee,_0x3d6e55){return new Promise(function(_0x30036e,_0x4ac931){return client['request'](_0x14f5ee,_0x3d6e55)['then'](function(_0x29dd94){if(_0x29dd94['error']){return _0x4ac931(_0x29dd94[_0xf3d9('0x5')][_0xf3d9('0x6')]);}else{return _0x30036e(_0x29dd94['result']);}})['catch'](function(_0x30272e){return _0x4ac931(_0x30272e);});});}exports[_0xf3d9('0x7')]=function(){return request(_0xf3d9('0x8'),{'options':{'raw':![],'attributes':['id',_0xf3d9('0x9'),_0xf3d9('0xa')]}});};exports[_0xf3d9('0xb')]=function(_0x4ea5f5){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x4ea5f5},'attributes':[_0xf3d9('0xa')]}});};exports[_0xf3d9('0xc')]=function(_0x252ed2){return request(_0xf3d9('0xd'),{'options':{'raw':![],'where':{'id':_0x252ed2},'include':[{'model':_0xf3d9('0xe'),'as':'Smtp','include':[{'model':_0xf3d9('0xf'),'as':'CloudProvider'}]}],'attributes':['id',_0xf3d9('0x9'),_0xf3d9('0x10')],'smtp':!![]}});};exports[_0xf3d9('0x11')]=function(_0x5f13cd){return request(_0xf3d9('0x12'),{'options':{'where':{'id':_0x5f13cd},'attributes':[_0xf3d9('0x9')]}});};exports[_0xf3d9('0x13')]=function(_0x15a74e){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x15a74e},'attributes':[_0xf3d9('0x9')]}});};exports[_0xf3d9('0x14')]=function(_0x1f3f9b){return request('ShowVariable',{'options':{'where':{'id':_0x1f3f9b},'attributes':[_0xf3d9('0x9')]}});};exports[_0xf3d9('0x15')]=function(_0x166aec){return request(_0xf3d9('0x16'),{'options':{'where':{'id':_0x166aec},'attributes':[_0xf3d9('0x17')]}});};exports['getUserById']=function(_0x18393a){return request(_0xf3d9('0x18'),{'options':{'where':{'id':_0x18393a},'attributes':[_0xf3d9('0x9')]}});};exports[_0xf3d9('0x19')]=function(_0x3386cb){return request(_0xf3d9('0x1a'),{'options':{'where':{'phone':_0x3386cb[_0xf3d9('0x1b')]},'attributes':['id']}});};exports[_0xf3d9('0x1c')]=function(_0x473085){return request(_0xf3d9('0x1d'),{'options':{'where':{'id':_0x473085},'attributes':[_0xf3d9('0x9')]}});};exports['getSoundById']=function(_0x49ec24){return request(_0xf3d9('0x1e'),{'options':{'where':{'id':_0x49ec24},'attributes':[_0xf3d9('0x1f')]}});};exports[_0xf3d9('0x20')]=function(_0x22d2f6){return request(_0xf3d9('0x21'),{'options':{'raw':![],'where':{'id':_0x22d2f6},'include':[{'model':_0xf3d9('0x22'),'as':_0xf3d9('0x23')}]}});};exports[_0xf3d9('0x24')]=function(_0x7770dc){return request(_0xf3d9('0x25'),{'options':{'where':{'id':_0x7770dc},'attributes':['id',_0xf3d9('0x9')]}});};exports[_0xf3d9('0x26')]=function(_0x3aeec9){return request('CreateSmsMessage',{'body':_0x3aeec9});};exports[_0xf3d9('0x27')]=function(_0x154064){return request(_0xf3d9('0x28'),{'body':_0x154064});};exports['createSquareReport']=function(_0x11c62a){return request(_0xf3d9('0x29'),{'body':_[_0xf3d9('0x2a')](_0x11c62a,{'project_name':_0x11c62a[_0xf3d9('0x2b')],'prev_project_name':_0x11c62a[_0xf3d9('0x2c')]||'','is_subproject':_0x11c62a[_0xf3d9('0x2c')]?!![]:![],'leaveAt':moment()[_0xf3d9('0x2d')](_0xf3d9('0x2e'))})});};exports[_0xf3d9('0x2f')]=function(_0x5ae343){return request(_0xf3d9('0x30'),{'body':_0x5ae343});};exports['createSquareMessage']=function(_0x114fcd){return request(_0xf3d9('0x31'),{'body':_0x114fcd});};exports[_0xf3d9('0x32')]=function(_0x3d9c23){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x3d9c23[_0xf3d9('0x1b')],'ListId':_0x3d9c23[_0xf3d9('0x33')]}}})[_0xf3d9('0x34')](function(_0x5e2835){if(_0x5e2835){return _0x5e2835;}return request(_0xf3d9('0x35'),{'body':_0x3d9c23});});};exports['getPauseById']=function(_0xfb610f){return request('ShowPause',{'options':{'where':{'id':_0xfb610f},'attributes':[_0xf3d9('0x9')]}});};exports['agentLogin']=function(_0xeef377,_0x31e166){return request(_0xf3d9('0x36'),{'body':{'interface':_0x31e166},'options':{'where':_0xeef377}});};exports['agentPause']=function(_0x7d0ef7,_0x524da0,_0x295f3d){return request(_0xf3d9('0x37'),{'body':{'type':_0x524da0,'uniqueid':_0x295f3d},'options':{'where':_0x7d0ef7}});};exports[_0xf3d9('0x38')]=function(_0x1a083f){return request(_0xf3d9('0x39'),{'body':{},'options':{'where':_0x1a083f}});};exports[_0xf3d9('0x3a')]=function(_0x1a0860){return request(_0xf3d9('0x3b'),{'body':{},'options':{'where':_0x1a0860}});};
\ No newline at end of file
+var _0xd66c=['ShowTrunk','getSoundById','ShowSound','save_name','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','UnpauseUser','agentLogout','lodash','jayson/promise','client','http','request','then','error','message','catch','getSquareProjects','GetSquareProjects','name','production','ShowSquareProject','getMailAccountById','MailServerOut','CloudProvider','email','getSquareProjectById','getVariableById','ShowVariable','getSquareOdbcById','dsn','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById'];(function(_0x3ad799,_0x444261){var _0xc824bd=function(_0x12514d){while(--_0x12514d){_0x3ad799['push'](_0x3ad799['shift']());}};_0xc824bd(++_0x444261);}(_0xd66c,0x106));var _0xcd66=function(_0x1fbe05,_0x4e908a){_0x1fbe05=_0x1fbe05-0x0;var _0x359d32=_0xd66c[_0x1fbe05];return _0x359d32;};'use strict';var _=require(_0xcd66('0x0'));var moment=require('moment');var jayson=require(_0xcd66('0x1'));var client=jayson[_0xcd66('0x2')][_0xcd66('0x3')]({'port':0x2329});function request(_0x3b2510,_0x5216f8){return new Promise(function(_0xeccb2d,_0x13a713){return client[_0xcd66('0x4')](_0x3b2510,_0x5216f8)[_0xcd66('0x5')](function(_0xc037fc){if(_0xc037fc[_0xcd66('0x6')]){return _0x13a713(_0xc037fc[_0xcd66('0x6')][_0xcd66('0x7')]);}else{return _0xeccb2d(_0xc037fc['result']);}})[_0xcd66('0x8')](function(_0x220746){return _0x13a713(_0x220746);});});}exports[_0xcd66('0x9')]=function(){return request(_0xcd66('0xa'),{'options':{'raw':![],'attributes':['id',_0xcd66('0xb'),_0xcd66('0xc')]}});};exports['getSquareProject']=function(_0x4a38c5){return request(_0xcd66('0xd'),{'options':{'raw':![],'where':{'name':_0x4a38c5},'attributes':['production']}});};exports[_0xcd66('0xe')]=function(_0x29e1c5){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x29e1c5},'include':[{'model':_0xcd66('0xf'),'as':'Smtp','include':[{'model':_0xcd66('0x10'),'as':_0xcd66('0x10')}]}],'attributes':['id',_0xcd66('0xb'),_0xcd66('0x11')],'smtp':!![]}});};exports[_0xcd66('0x12')]=function(_0x595366){return request('ShowSquareProject',{'options':{'where':{'id':_0x595366},'attributes':[_0xcd66('0xb')]}});};exports['getVoiceQueueById']=function(_0x28ae0c){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x28ae0c},'attributes':['name']}});};exports[_0xcd66('0x13')]=function(_0x1fafad){return request(_0xcd66('0x14'),{'options':{'where':{'id':_0x1fafad},'attributes':[_0xcd66('0xb')]}});};exports[_0xcd66('0x15')]=function(_0x990bad){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x990bad},'attributes':[_0xcd66('0x16')]}});};exports['getUserById']=function(_0x1268db){return request(_0xcd66('0x17'),{'options':{'where':{'id':_0x1268db},'attributes':[_0xcd66('0xb')]}});};exports[_0xcd66('0x18')]=function(_0x35d431){return request(_0xcd66('0x19'),{'options':{'where':{'phone':_0x35d431[_0xcd66('0x1a')]},'attributes':['id']}});};exports[_0xcd66('0x1b')]=function(_0x417907){return request(_0xcd66('0x1c'),{'options':{'where':{'id':_0x417907},'attributes':[_0xcd66('0xb')]}});};exports[_0xcd66('0x1d')]=function(_0x14b6e9){return request(_0xcd66('0x1e'),{'options':{'where':{'id':_0x14b6e9},'attributes':[_0xcd66('0x1f')]}});};exports['getIntervalById']=function(_0x3e3bea){return request(_0xcd66('0x20'),{'options':{'raw':![],'where':{'id':_0x3e3bea},'include':[{'model':_0xcd66('0x21'),'as':_0xcd66('0x22')}]}});};exports[_0xcd66('0x23')]=function(_0x1f8a04){return request(_0xcd66('0x24'),{'options':{'where':{'id':_0x1f8a04},'attributes':['id',_0xcd66('0xb')]}});};exports[_0xcd66('0x25')]=function(_0x35e19e){return request('CreateSmsMessage',{'body':_0x35e19e});};exports[_0xcd66('0x26')]=function(_0x6073f5){return request('CreateSquareDetailsReport',{'body':_0x6073f5});};exports[_0xcd66('0x27')]=function(_0x21aa15){return request(_0xcd66('0x28'),{'body':_['merge'](_0x21aa15,{'project_name':_0x21aa15[_0xcd66('0x29')],'prev_project_name':_0x21aa15[_0xcd66('0x2a')]||'','is_subproject':_0x21aa15[_0xcd66('0x2a')]?!![]:![],'leaveAt':moment()['format'](_0xcd66('0x2b'))})});};exports[_0xcd66('0x2c')]=function(_0x2d0732){return request(_0xcd66('0x2d'),{'body':_0x2d0732});};exports[_0xcd66('0x2e')]=function(_0x296b13){return request(_0xcd66('0x2f'),{'body':_0x296b13});};exports[_0xcd66('0x30')]=function(_0x51201f){return request(_0xcd66('0x31'),{'options':{'raw':![],'where':{'phone':_0x51201f[_0xcd66('0x1a')],'ListId':_0x51201f[_0xcd66('0x32')]}}})[_0xcd66('0x5')](function(_0x2dfa40){if(_0x2dfa40){return _0x2dfa40;}return request(_0xcd66('0x33'),{'body':_0x51201f});});};exports[_0xcd66('0x34')]=function(_0x2cb301){return request('ShowPause',{'options':{'where':{'id':_0x2cb301},'attributes':[_0xcd66('0xb')]}});};exports[_0xcd66('0x35')]=function(_0x2b88ba,_0x3118a1){return request('LoginUser',{'body':{'interface':_0x3118a1},'options':{'where':_0x2b88ba}});};exports[_0xcd66('0x36')]=function(_0xb2109c,_0x9aa42e,_0x38172f){return request(_0xcd66('0x37'),{'body':{'type':_0x9aa42e,'uniqueid':_0x38172f},'options':{'where':_0xb2109c}});};exports['agentUnpause']=function(_0x926286){return request(_0xcd66('0x38'),{'body':{},'options':{'where':_0x926286}});};exports[_0xcd66('0x39')]=function(_0x19e6ac){return request('LogoutUser',{'body':{},'options':{'where':_0x19e6ac}});};
\ No newline at end of file
index 03046aa..ddb59b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004c=['exports','./polly','./lex'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x004c,0x85));var _0xc004=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x004c[_0x36ed48];return _0x51c63a;};var polly=require(_0xc004('0x0'));var lex=require(_0xc004('0x1'));module[_0xc004('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x0c75=['./lex'];(function(_0x263f4c,_0x438626){var _0x3a78d3=function(_0xbdb00f){while(--_0xbdb00f){_0x263f4c['push'](_0x263f4c['shift']());}};_0x3a78d3(++_0x438626);}(_0x0c75,0x6a));var _0x50c7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0c75[_0x2641f9];return _0x585741;};var polly=require('./polly');var lex=require(_0x50c7('0x0'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index cf6ecb3..1a8a92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','./lib/api'];(function(_0x235d0f,_0x563b51){var _0x43c479=function(_0x1eec8b){while(--_0x1eec8b){_0x235d0f['push'](_0x235d0f['shift']());}};_0x43c479(++_0x563b51);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var lex=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]=function(_0x5a55a3,_0x585166,_0x4b72b0,_0x3ff8df,_0x5b9b89,_0x43bca1){return lex(_0x5a55a3,_0x585166,_0x4b72b0,_0x3ff8df,_0x5b9b89,_0x43bca1);};
\ No newline at end of file
+'use strict';var lex=require('./lib/api');module['exports']=function(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b){return lex(_0x46400f,_0xa5f6b7,_0x4a08d4,_0x5080f5,_0x229028,_0x1fdf5b);};
\ No newline at end of file
index f6ebd70..af260fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x232f10,_0x548331){var _0x251f18=function(_0x1ea51c){while(--_0x1ea51c){_0x232f10['push'](_0x232f10['shift']());}};_0x251f18(++_0x548331);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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(_0x57dbd6,_0x1f51a3){var _0x592b69=function(_0x34dc4c){while(--_0x34dc4c){_0x57dbd6['push'](_0x57dbd6['shift']());}};_0x592b69(++_0x1f51a3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 b746433..c1444b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6698=['./lib/api'];(function(_0x27fb03,_0x1ed6b2){var _0x405460=function(_0x1ee0a7){while(--_0x1ee0a7){_0x27fb03['push'](_0x27fb03['shift']());}};_0x405460(++_0x1ed6b2);}(_0x6698,0x73));var _0x8669=function(_0x2ce495,_0x5c55b9){_0x2ce495=_0x2ce495-0x0;var _0x4fdc8f=_0x6698[_0x2ce495];return _0x4fdc8f;};'use strict';var polly=require(_0x8669('0x0'));module['exports']=function(_0x1040ad,_0x1b3d6d,_0x5a2581,_0x24210e,_0x5d88ea,_0x17e0a5,_0x518777){return polly(_0x1040ad,_0x1b3d6d,_0x5a2581,_0x24210e,_0x5d88ea,_0x17e0a5,_0x518777);};
\ No newline at end of file
+var _0x80a2=['./lib/api'];(function(_0x35fabd,_0x825452){var _0x61a8ee=function(_0x218f4c){while(--_0x218f4c){_0x35fabd['push'](_0x35fabd['shift']());}};_0x61a8ee(++_0x825452);}(_0x80a2,0xf8));var _0x280a=function(_0x122a84,_0x122715){_0x122a84=_0x122a84-0x0;var _0x1df78a=_0x80a2[_0x122a84];return _0x1df78a;};'use strict';var polly=require(_0x280a('0x0'));module['exports']=function(_0x3c0402,_0x1c852e,_0x40acf3,_0x3a1c38,_0x2e795c,_0x3c5117,_0x5ea35a){return polly(_0x3c0402,_0x1c852e,_0x40acf3,_0x3a1c38,_0x2e795c,_0x3c5117,_0x5ea35a);};
\ No newline at end of file
index 5315654..079c04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe5c=['path','bluebird','randomstring','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text'];(function(_0x2f5c30,_0x4b8aa0){var _0x9f5f99=function(_0x3e9562){while(--_0x3e9562){_0x2f5c30['push'](_0x2f5c30['shift']());}};_0x9f5f99(++_0x4b8aa0);}(_0xfe5c,0xb4));var _0xcfe5=function(_0x10c33a,_0x547c46){_0x10c33a=_0x10c33a-0x0;var _0x106e8f=_0xfe5c[_0x10c33a];return _0x106e8f;};'use strict';var fs=require('fs');var path=require(_0xcfe5('0x0'));var BPromise=require(_0xcfe5('0x1'));var rs=require(_0xcfe5('0x2'));var AWS=require('aws-sdk');function pollyResult(_0x34a4d3,_0x231a08,_0x29d2a5){return new BPromise(function(_0x228e03,_0x250890){_0x34a4d3[_0xcfe5('0x3')](_0x231a08,function(_0x3b0699,_0x14d9d5){if(_0x3b0699){_0x250890(_0x3b0699);}else if(_0x14d9d5){if(_0x14d9d5[_0xcfe5('0x4')]instanceof Buffer){fs[_0xcfe5('0x5')](_0x29d2a5,_0x14d9d5[_0xcfe5('0x4')],function(_0x468740){if(_0x468740){_0x250890(_0x468740);}else{_0x228e03();}});}else{_0x250890(new Error(_0xcfe5('0x6')));}}else{_0x250890(new Error(_0xcfe5('0x7')));}});});}module['exports']=function(_0x8c4e6c,_0x146457,_0x19b61d,_0x230cbf,_0x1776b6,_0xa05591,_0x3d7045){var _0x3a0040=new AWS[(_0xcfe5('0x8'))]({'accessKeyId':_0x8c4e6c,'secretAccessKey':_0x146457,'region':_0x19b61d});var _0x1fad6b={'Text':_0x1776b6,'TextType':_0xa05591||_0xcfe5('0x9'),'OutputFormat':'mp3','VoiceId':_0x230cbf};return pollyResult(_0x3a0040,_0x1fad6b,_0x3d7045);};
\ No newline at end of file
+var _0xae60=['synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','aws-sdk'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xae60,0x1cb));var _0x0ae6=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xae60[_0x35885a];return _0xe86249;};'use strict';var fs=require('fs');var path=require(_0x0ae6('0x0'));var BPromise=require(_0x0ae6('0x1'));var rs=require('randomstring');var AWS=require(_0x0ae6('0x2'));function pollyResult(_0x542e3d,_0x56d481,_0x1ae5e3){return new BPromise(function(_0x67b084,_0x2c8aeb){_0x542e3d[_0x0ae6('0x3')](_0x56d481,function(_0x1ab476,_0x525869){if(_0x1ab476){_0x2c8aeb(_0x1ab476);}else if(_0x525869){if(_0x525869[_0x0ae6('0x4')]instanceof Buffer){fs[_0x0ae6('0x5')](_0x1ae5e3,_0x525869['AudioStream'],function(_0x3a81fb){if(_0x3a81fb){_0x2c8aeb(_0x3a81fb);}else{_0x67b084();}});}else{_0x2c8aeb(new Error(_0x0ae6('0x6')));}}else{_0x2c8aeb(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x0ae6('0x7')]=function(_0x732957,_0x2e03e2,_0x2d486c,_0x47a725,_0x4fd5a3,_0x191914,_0xcb9528){var _0x2a7165=new AWS[(_0x0ae6('0x8'))]({'accessKeyId':_0x732957,'secretAccessKey':_0x2e03e2,'region':_0x2d486c});var _0x4fbf2a={'Text':_0x4fd5a3,'TextType':_0x191914||_0x0ae6('0x9'),'OutputFormat':_0x0ae6('0xa'),'VoiceId':_0x47a725};return pollyResult(_0x2a7165,_0x4fbf2a,_0xcb9528);};
\ No newline at end of file
index 7ce7c12..7a18d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed30=['./lib/api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xed30,0x69));var _0x0ed3=function(_0x2ff3fe,_0x658b93){_0x2ff3fe=_0x2ff3fe-0x0;var _0x42e491=_0xed30[_0x2ff3fe];return _0x42e491;};'use strict';var asr=require(_0x0ed3('0x0'));module['exports']=function(_0x427ec1,_0x1ae6c2,_0x366a6f,_0x25fb4a){return asr(_0x427ec1,_0x1ae6c2,_0x366a6f);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0x4acf24,_0x252e9a,_0x1d1de7,_0x5e9cca){return asr(_0x4acf24,_0x252e9a,_0x1d1de7);};
\ No newline at end of file
index 0cd2884..e7c129e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce1=['length','filepath\x20should\x20be\x20a\x20string','string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','toString','base64','POST','LINEAR16','exports'];(function(_0x18d5d7,_0x19074b){var _0x30a9ea=function(_0x514f3f){while(--_0x514f3f){_0x18d5d7['push'](_0x18d5d7['shift']());}};_0x30a9ea(++_0x19074b);}(_0x2ce1,0x8b));var _0x12ce=function(_0x169745,_0x23f1c0){_0x169745=_0x169745-0x0;var _0x447a90=_0x2ce1[_0x169745];return _0x447a90;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module[_0x12ce('0x0')]=function(_0x190dc3,_0x9601f9,_0xfe8bb0){return new BPromise(function(_0x4918dc,_0x37b568){var _0x168e95;if(typeof _0x190dc3!=='string'||_0x190dc3[_0x12ce('0x1')]===0x0){return _0x37b568(_0x12ce('0x2'));}if(typeof _0x9601f9!==_0x12ce('0x3')||_0x9601f9['length']===0x0){return _0x37b568(_0x12ce('0x4'));}if(typeof _0xfe8bb0!=='undefined'&&(typeof _0xfe8bb0!==_0x12ce('0x3')||_0xfe8bb0[_0x12ce('0x1')]===0x0)){return _0x37b568(_0x12ce('0x5'));}try{_0x168e95=fs['readFileSync'](_0x190dc3)[_0x12ce('0x6')](_0x12ce('0x7'));}catch(_0x3e1ee9){return _0x37b568(_0x3e1ee9);}return _0x4918dc({'method':_0x12ce('0x8'),'uri':host+'/v1/speech:recognize?key='+_0x9601f9,'body':{'config':{'encoding':_0x12ce('0x9'),'sampleRateHertz':'8000','languageCode':_0xfe8bb0},'audio':{'content':_0x168e95}},'json':!![]});});};
\ No newline at end of file
+var _0x74f0=['/v1/speech:recognize?key=','bluebird','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','toString','base64','POST'];(function(_0x11ba83,_0xd5611a){var _0x3f3925=function(_0x3d7cb0){while(--_0x3d7cb0){_0x11ba83['push'](_0x11ba83['shift']());}};_0x3f3925(++_0xd5611a);}(_0x74f0,0xf3));var _0x074f=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0x74f0[_0x2a67fe];return _0x57e726;};'use strict';var url=require('url');var BPromise=require(_0x074f('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module['exports']=function(_0x153f43,_0x2c03a0,_0x15ae79){return new BPromise(function(_0x3fd9ba,_0x4e4b99){var _0x51fbdc;if(typeof _0x153f43!==_0x074f('0x1')||_0x153f43[_0x074f('0x2')]===0x0){return _0x4e4b99(_0x074f('0x3'));}if(typeof _0x2c03a0!==_0x074f('0x1')||_0x2c03a0[_0x074f('0x2')]===0x0){return _0x4e4b99(_0x074f('0x4'));}if(typeof _0x15ae79!==_0x074f('0x5')&&(typeof _0x15ae79!=='string'||_0x15ae79[_0x074f('0x2')]===0x0)){return _0x4e4b99(_0x074f('0x6'));}try{_0x51fbdc=fs['readFileSync'](_0x153f43)[_0x074f('0x7')](_0x074f('0x8'));}catch(_0x4337f9){return _0x4e4b99(_0x4337f9);}return _0x3fd9ba({'method':_0x074f('0x9'),'uri':host+_0x074f('0xa')+_0x2c03a0,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x15ae79},'audio':{'content':_0x51fbdc}},'json':!![]});});};
\ No newline at end of file
index c067582..ccd273d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a10=['exports','./asr'];(function(_0x73c130,_0x5f532f){var _0x3bd9b4=function(_0x56cac8){while(--_0x56cac8){_0x73c130['push'](_0x73c130['shift']());}};_0x3bd9b4(++_0x5f532f);}(_0x6a10,0x19d));var _0x06a1=function(_0x1f36bb,_0x8af718){_0x1f36bb=_0x1f36bb-0x0;var _0xaf97fa=_0x6a10[_0x1f36bb];return _0xaf97fa;};var asr=require(_0x06a1('0x0'));module[_0x06a1('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x5e03=['exports'];(function(_0x3170dd,_0x22f21c){var _0xb73175=function(_0x587800){while(--_0x587800){_0x3170dd['push'](_0x3170dd['shift']());}};_0xb73175(++_0x22f21c);}(_0x5e03,0x1cc));var _0x35e0=function(_0x48b6af,_0x46b5a9){_0x48b6af=_0x48b6af-0x0;var _0x43d879=_0x5e03[_0x48b6af];return _0x43d879;};var asr=require('./asr');module[_0x35e0('0x0')]={'asr':asr};
\ No newline at end of file
index 1e92b54..1be8ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7638=['CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','dialogflow','http','https','path','querystring','randomstring','sox','google-tts-api','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','get','statusCode','error','request\x20to\x20','statusMessage','finish','info','finish\x20download\x20file','close','pipe','end','WHAT_EVER','\x20failed,\x20status\x20code\x20=\x20','data','transcode','wav','error\x20convert','resolve','tmp','.wav','writeFileSync','base64','then','unlink','chmodSync','777','split','readFileSync','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','generate','.mp3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','jQ1olc','null','generic','slice','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','googleDialogflow','result','source','resolvedQuery','action','fulfillment','speech','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','stringify','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','sestekNDA','text','channelData'];(function(_0x43077b,_0x2e8274){var _0x429348=function(_0x4e8d01){while(--_0x4e8d01){_0x43077b['push'](_0x43077b['shift']());}};_0x429348(++_0x2e8274);}(_0x7638,0x19e));var _0x8763=function(_0x12b614,_0x487a2d){_0x12b614=_0x12b614-0x0;var _0x3ba25d=_0x7638[_0x12b614];return _0x3ba25d;};'use strict';var apiai=require(_0x8763('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0x8763('0x1'));var fs=require('fs');var http=require(_0x8763('0x2'));var https=require(_0x8763('0x3'));var md5=require('md5');var path=require(_0x8763('0x4'));var querystring=require(_0x8763('0x5'));var rp=require('request-promise');var rs=require(_0x8763('0x6'));var sox=require(_0x8763('0x7'));var tts=require(_0x8763('0x8'));var urlParse=require('url')['parse'];var util=require(_0x8763('0x9'));var aws=require(_0x8763('0xa'));var google=require(_0x8763('0xb'));var sestek=require(_0x8763('0xc'));var tilde=require(_0x8763('0xd'));var logger=require(_0x8763('0xe'))(_0x8763('0xf'));var ISPEECH_API=_0x8763('0x10');function downloadFile(_0x501dcf,_0x5dea6b){return new BPromise(function(_0x54d358,_0xf5139b){var _0x5a97f6=urlParse(_0x501dcf);var _0x19cd9d=_0x5a97f6[_0x8763('0x11')]===_0x8763('0x12')?https:http;var _0x3cc835={'host':_0x5a97f6[_0x8763('0x13')],'path':_0x5a97f6[_0x8763('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x19cd9d[_0x8763('0x14')](_0x3cc835,function(_0x995c0d){if(_0x995c0d[_0x8763('0x15')]!==0xc8){logger[_0x8763('0x16')]('request\x20to\x20'+_0x501dcf+'\x20failed,\x20status\x20code\x20=\x20'+_0x995c0d[_0x8763('0x15')]+'\x20('+_0x995c0d['statusMessage']+')');_0xf5139b(new Error(_0x8763('0x17')+_0x501dcf+'\x20failed,\x20status\x20code\x20=\x20'+_0x995c0d[_0x8763('0x15')]+'\x20('+_0x995c0d[_0x8763('0x18')]+')'));return;}var _0x2cb747=fs['createWriteStream'](_0x5dea6b);_0x2cb747['on'](_0x8763('0x19'),function(){logger[_0x8763('0x1a')](_0x8763('0x1b'));_0x2cb747[_0x8763('0x1c')](_0x54d358);});_0x2cb747['on'](_0x8763('0x16'),function(_0x3631f7){fs['unlink'](_0x5dea6b);logger[_0x8763('0x16')]('download\x20error',_0x3631f7);_0xf5139b(_0x3631f7);});_0x995c0d[_0x8763('0x1d')](_0x2cb747);})['on']('error',function(_0x358a94){logger[_0x8763('0x16')](_0x358a94);_0xf5139b(_0x358a94);})[_0x8763('0x1e')]();});}function uploadFile(_0x21bd80){return new BPromise(function(_0x33b82c,_0x6d51c5){var _0x51a1d4=urlParse(_0x21bd80);var _0x3c0d36=_0x51a1d4['protocol']==='https:'?https:http;var _0x45d8e8={'host':_0x51a1d4[_0x8763('0x13')],'path':_0x51a1d4['path'],'headers':{'user-agent':_0x8763('0x1f')}};_0x3c0d36[_0x8763('0x14')](_0x45d8e8,function(_0x3c9e87){if(_0x3c9e87['statusCode']!==0xc8){_0x6d51c5(new Error(_0x8763('0x17')+_0x21bd80+_0x8763('0x20')+_0x3c9e87[_0x8763('0x15')]+'\x20('+_0x3c9e87[_0x8763('0x18')]+')'));return;}var _0x53e849='';_0x3c9e87['on'](_0x8763('0x21'),function(_0x2001ea){_0x53e849+=_0x2001ea;});_0x3c9e87['on'](_0x8763('0x1e'),function(){_0x33b82c(_0x53e849);});})['on'](_0x8763('0x16'),function(_0x12f9f0){_0x6d51c5(_0x12f9f0);})[_0x8763('0x1e')]();});}function convertFile(_0x552d27,_0x35a59d){return new BPromise(function(_0x7ffca,_0x10e5ed){var _0x49a372=sox[_0x8763('0x22')](_0x552d27,_0x35a59d,{'sampleRate':0x1f40,'format':_0x8763('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x49a372['on'](_0x8763('0x16'),function(_0x570d4f){logger[_0x8763('0x16')](_0x8763('0x24'),_0x570d4f);_0x10e5ed(_0x570d4f);});_0x49a372['on'](_0x8763('0x1e'),function(){logger[_0x8763('0x1a')]('finish\x20to\x20convert');_0x7ffca();});_0x49a372['start']();});}function base64Decode(_0x2639e7,_0x1c5073){var _0x382a86=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs['generate'](0x4)+_0x8763('0x27'));fs[_0x8763('0x28')](_0x382a86,_0x2639e7,_0x8763('0x29'));return convertFile(_0x382a86,_0x1c5073)[_0x8763('0x2a')](function(){try{fs[_0x8763('0x2b')](_0x382a86);fs[_0x8763('0x2c')](_0x1c5073,_0x8763('0x2d'));}catch(_0x265c38){logger[_0x8763('0x16')](_0x265c38);}return _0x1c5073[_0x8763('0x2e')]('.')[0x0];});}function base64Encode(_0x51149a){var _0x11468e=fs[_0x8763('0x2f')](_0x51149a);return new Buffer(_0x11468e)['toString'](_0x8763('0x29'));}exports['googleCloudTTS']=function(_0x45af0c,_0x359bb2,_0x425957,_0x1ad57,_0x5c71ee,_0x3c92f1){var _0x505867,_0x36453a;var _0x2baefd=_0x8763('0x30');var _0x11a7ea=_0x8763('0x31')+_0x45af0c;var _0x26d597={};if(_0x359bb2===_0x8763('0x32')){_0x26d597['input']={'ssml':_0x425957};}else{_0x26d597[_0x8763('0x33')]={'text':_0x425957};};_0x26d597[_0x8763('0x34')]={'languageCode':_0x1ad57,'ssmlGender':_0x5c71ee};_0x26d597['audioConfig']={'audioEncoding':_0x8763('0x35'),'sampleRateHertz':0x1f40};var _0x145210={'url':_0x2baefd+_0x8763('0x36')+_0x11a7ea,'method':_0x8763('0x37'),'json':!![],'body':_0x26d597};return rp(_0x145210)[_0x8763('0x2a')](function(_0x1ff799){return new BPromise(function(_0x4b2845,_0x4c9689){_0x505867=path[_0x8763('0x25')](__dirname,'tmp',rs[_0x8763('0x38')](0x4)+_0x8763('0x39'));var _0x1bb3b6=Buffer[_0x8763('0x3a')](_0x1ff799[_0x8763('0x3b')],_0x8763('0x29'));return fs[_0x8763('0x3c')](_0x505867,_0x1bb3b6,function(_0x2b056e){_0x4c9689(_0x2b056e);},function(_0x23d22b){fs['chmodSync'](_0x505867,'777');_0x4b2845(_0x23d22b);});});})[_0x8763('0x2a')](function(_0x371d75){_0x36453a=path['resolve'](__dirname,_0x8763('0x26'),rs[_0x8763('0x38')](0x4)+_0x8763('0x27'));return convertFile(_0x505867,_0x36453a);})[_0x8763('0x2a')](function(){try{fs[_0x8763('0x2b')](_0x505867);fs['chmodSync'](_0x36453a,_0x8763('0x2d'));}catch(_0x51623d){logger['error'](_0x51623d);}logger['info'](_0x8763('0x3d'),_0x36453a[_0x8763('0x2e')]('.')[0x0]);return _0x36453a['split']('.')[0x0];});};exports[_0x8763('0x3e')]=function(_0x22696c,_0x3f63cf){var _0x4c55b3=_0x8763('0x3f');var _0x52bda0,_0x297712;var _0x10899f;var _0x3edd8c={'encoding':_0x8763('0x40'),'method':'POST','timeout':0x2710,'url':_0x4c55b3,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0x8763('0x41'),JSON['stringify']([_0x22696c,_0x3f63cf||'en',![],_0x8763('0x42')]),null,_0x8763('0x43')]]]))};return rp(_0x3edd8c)[_0x8763('0x2a')](function(_0x5000a0){try{_0x10899f=eval(_0x5000a0[_0x8763('0x44')](0x5))[0x0][0x2];}catch(_0x366c8e){throw new Error('parse\x20response\x20failed:\x0a'+_0x5000a0[_0x8763('0x21')]);}if(!_0x10899f){if(_0x22696c['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x8763('0x45')+_0x3f63cf+_0x8763('0x46'));}}try{_0x10899f=eval(_0x10899f)[0x0];}catch(_0x4abe7e){throw new Error(_0x8763('0x47')+res['data']);}const _0x420c85=_0x10899f;_0x52bda0=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs[_0x8763('0x38')](0x4)+'.mp3');fs[_0x8763('0x28')](_0x52bda0,_0x10899f,{'encoding':_0x8763('0x29')});_0x297712=path['resolve'](__dirname,'tmp',rs[_0x8763('0x38')](0x4)+_0x8763('0x27'));return convertFile(_0x52bda0,_0x297712);})['then'](function(){try{fs['unlink'](_0x52bda0);fs[_0x8763('0x2c')](_0x297712,_0x8763('0x2d'));}catch(_0x52f162){logger[_0x8763('0x16')](_0x52f162);}logger[_0x8763('0x1a')](_0x8763('0x48'),_0x297712[_0x8763('0x2e')]('.')[0x0]);return _0x297712[_0x8763('0x2e')]('.')[0x0];});};exports[_0x8763('0x49')]=function(_0x47ec55,_0x199871,_0x342099){return google[_0x8763('0x4a')](_0x47ec55,_0x199871,_0x342099)[_0x8763('0x2a')](function(_0x1e9b78){logger[_0x8763('0x1a')](_0x1e9b78[_0x8763('0x4b')]);return rp(_0x1e9b78);})['then'](function(_0x4bbc99){var _0x565610='';var _0x590c64=0x0;try{fs[_0x8763('0x2b')](_0x47ec55);}catch(_0x529df6){logger['error'](_0x529df6);}if(_0x4bbc99&&_0x4bbc99[_0x8763('0x4c')]){_0x565610=_0x4bbc99['results'][_0x8763('0x4d')](function(_0x5422d2){return _0x5422d2&&_0x5422d2['alternatives'][0x0]&&_0x5422d2[_0x8763('0x4e')][0x0][_0x8763('0x4f')]?_0x5422d2[_0x8763('0x4e')][0x0][_0x8763('0x4f')]:'';})[_0x8763('0x50')]('\x0a');_0x590c64=_0x4bbc99['results'][_0x8763('0x4d')](function(_0x196129){return _0x196129&&_0x196129[_0x8763('0x4e')][0x0]&&_0x196129[_0x8763('0x4e')][0x0][_0x8763('0x51')]?_0x196129['alternatives'][0x0][_0x8763('0x51')]:0x0;})[_0x8763('0x50')]('\x0a');}logger[_0x8763('0x1a')](_0x8763('0x52'),_0x565610);logger['info'](_0x8763('0x53'),_0x590c64);return{'transcript':_0x565610,'confidence':_0x590c64};})[_0x8763('0x54')](function(_0x4e84bb){logger[_0x8763('0x16')](_0x8763('0x55'),_0x4e84bb[_0x8763('0x15')],_0x4e84bb[_0x8763('0x56')],_0x4e84bb['message']);});};exports[_0x8763('0x57')]=function(_0x500b2b,_0x21901c,_0x4311f6,_0x3d7b3e){var _0x465ec2=apiai(_0x21901c,{'language':_0x3d7b3e||'en'});return _0x465ec2['textRequest'](_0x4311f6,{'sessionId':md5(_0x500b2b)})[_0x8763('0x2a')](function(_0x4836d7){logger[_0x8763('0x1a')](JSON['stringify'](_0x4836d7));return{'source':_0x4836d7[_0x8763('0x58')][_0x8763('0x59')],'resolvedQuery':_0x4836d7['result'][_0x8763('0x5a')],'action':_0x4836d7[_0x8763('0x58')][_0x8763('0x5b')],'actionIncomplete':_0x4836d7[_0x8763('0x58')]['actionIncomplete'],'speech':_0x4836d7['result'][_0x8763('0x5c')][_0x8763('0x5d')],'score':_0x4836d7['result']['score'],'statusCode':_0x4836d7[_0x8763('0x5e')][_0x8763('0x5f')],'endConversation':_0x4836d7[_0x8763('0x58')][_0x8763('0x60')][_0x8763('0x61')]||![],'isFallbackIntent':_0x4836d7['result'][_0x8763('0x60')][_0x8763('0x62')]};});};exports[_0x8763('0x63')]=function(_0x43be9e,_0x55ca2d,_0x3804f7,_0x3a2bf3,_0x537b1e,_0x49dff8){var _0xe22fbe=_0x3a2bf3['replace'](/\\n/g,'\x0a');var _0x4a0620={'credentials':{'private_key':_0xe22fbe,'client_email':_0x3804f7}};var _0x1bc6fa=new dialogflow['SessionsClient'](_0x4a0620);var _0x18a345=_0x1bc6fa['sessionPath'](_0x55ca2d,md5(_0x43be9e));var _0x83bff5={'session':_0x18a345,'queryInput':{'text':{'text':_0x537b1e,'languageCode':_0x49dff8}}};return _0x1bc6fa['detectIntent'](_0x83bff5)[_0x8763('0x2a')](function(_0x425d41){if(_0x425d41&&_0x425d41[_0x8763('0x64')]){logger['info'](_0x8763('0x65'),JSON['stringify'](_0x425d41));var _0x181b7b=_0x425d41[0x0];if(_0x181b7b){var _0xa5fccd={'action':_0x181b7b[_0x8763('0x66')][_0x8763('0x5b')],'allRequiredParamsPresent':_0x181b7b[_0x8763('0x66')][_0x8763('0x67')],'endConversation':_0x181b7b[_0x8763('0x66')][_0x8763('0x68')]&&_0x181b7b[_0x8763('0x66')]['diagnosticInfo'][_0x8763('0x69')]?_0x181b7b['queryResult'][_0x8763('0x68')]['fields'][_0x8763('0x6a')][_0x8763('0x6b')]:![],'fulfillmentText':_0x181b7b[_0x8763('0x66')][_0x8763('0x6c')],'intentName':_0x181b7b['queryResult'][_0x8763('0x6d')][_0x8763('0x56')],'intentDisplayName':_0x181b7b[_0x8763('0x66')][_0x8763('0x6d')]['displayName'],'isFallbackIntent':_0x181b7b[_0x8763('0x66')][_0x8763('0x6d')]['isFallback'],'languageCode':_0x181b7b[_0x8763('0x66')][_0x8763('0x6e')],'queryText':_0x181b7b[_0x8763('0x66')][_0x8763('0x6f')],'responseId':_0x181b7b[_0x8763('0x70')],'score':_0x181b7b[_0x8763('0x66')][_0x8763('0x71')],'speech':_0x181b7b['queryResult'][_0x8763('0x6c')],'providerResponse':JSON['stringify'](_0x425d41)};return _0xa5fccd;}}});};exports[_0x8763('0x72')]=function(_0x57e4ae,_0xc35f18,_0x3d4fa1,_0x2467af){return tilde[_0x8763('0x4a')](_0x57e4ae,_0xc35f18,_0x3d4fa1,_0x2467af)[_0x8763('0x2a')](function(_0x2f29f7){try{fs['unlink'](_0x57e4ae);}catch(_0x171c11){logger['error'](_0x171c11);}logger['info'](_0x8763('0x73'),_0x2f29f7[_0x8763('0x4f')]);logger[_0x8763('0x1a')](_0x8763('0x74'),_0x2f29f7[_0x8763('0x51')]);return _0x2f29f7;});};exports[_0x8763('0x75')]=function(_0x1e1274,_0x125369,_0x1f793e,_0xf29859,_0x15a5a9,_0x346789){var _0x586fee=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs['generate'](0x4)+'.mp3');var _0xc0a68b;return aws['polly'](_0x1e1274,_0x125369,_0x1f793e,_0xf29859,_0x15a5a9,_0x346789,_0x586fee)[_0x8763('0x2a')](function(){_0xc0a68b=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs[_0x8763('0x38')](0x4)+_0x8763('0x27'));return convertFile(_0x586fee,_0xc0a68b);})[_0x8763('0x2a')](function(){try{fs[_0x8763('0x2b')](_0x586fee);fs['chmodSync'](_0xc0a68b,_0x8763('0x2d'));}catch(_0x218d30){logger[_0x8763('0x16')](_0x218d30);}return _0xc0a68b[_0x8763('0x2e')]('.')[0x0];});};exports[_0x8763('0x76')]=function(_0x110072,_0x11f20d,_0x158e09,_0x5b37bf,_0x2f24a3,_0x26054d){return aws['lex'](_0x110072,_0x11f20d,_0x158e09,_0x5b37bf,_0x2f24a3,_0x26054d)[_0x8763('0x2a')](function(_0x3b179b){logger['info'](JSON[_0x8763('0x77')](_0x3b179b));return _0x3b179b;});};exports[_0x8763('0x78')]=function(_0x1568c4,_0x131cc4,_0x51253e,_0x2fd704){var _0x2555b3=util[_0x8763('0x79')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x1568c4,encodeURIComponent(_0x131cc4),_0x51253e,_0x2fd704);var _0x19fd54=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs[_0x8763('0x38')](0x4)+_0x8763('0x39'));var _0x2827b4;return downloadFile(_0x2555b3,_0x19fd54)[_0x8763('0x2a')](function(){_0x2827b4=path[_0x8763('0x25')](__dirname,_0x8763('0x26'),rs['generate'](0x4)+_0x8763('0x27'));return convertFile(_0x19fd54,_0x2827b4);})[_0x8763('0x2a')](function(){try{fs[_0x8763('0x2b')](_0x19fd54);fs[_0x8763('0x2c')](_0x2827b4,_0x8763('0x2d'));}catch(_0x552f33){logger[_0x8763('0x16')](_0x552f33);}return _0x2827b4[_0x8763('0x2e')]('.')[0x0];});};exports[_0x8763('0x7a')]=function(_0x311eb6,_0x5ee7e2,_0x255ac9,_0x31c076){var _0x35c9b8=util[_0x8763('0x79')](_0x8763('0x7b'),ISPEECH_API,_0x5ee7e2,_0x255ac9,base64Encode(_0x311eb6),_0x31c076?util[_0x8763('0x79')](_0x8763('0x7c'),encodeURIComponent(_0x31c076)):_0x8763('0x7d'));return uploadFile(_0x35c9b8)[_0x8763('0x2a')](function(_0x3d52df){return querystring[_0x8763('0x7e')](_0x3d52df);});};exports[_0x8763('0x7f')]=function(_0x4737b0,_0x477710){return sestek['nda'](_0x4737b0,_0x477710)['then'](function(_0x32f234){logger[_0x8763('0x1a')](JSON[_0x8763('0x77')](_0x32f234));var _0x3c9dca={'speech':_0x32f234[_0x8763('0x80')],'action':_0x32f234['channelData']?_0x32f234[_0x8763('0x81')][_0x8763('0x82')]:undefined,'actiondata':_0x32f234[_0x8763('0x81')]?_0x32f234[_0x8763('0x81')][_0x8763('0x83')]:undefined};if(_0x32f234[_0x8763('0x81')]&&_0x32f234[_0x8763('0x81')][_0x8763('0x84')]){return base64Decode(_0x32f234['channelData'][_0x8763('0x84')][_0x8763('0x85')],path[_0x8763('0x25')](__dirname,'tmp',rs['generate'](0x4)+_0x8763('0x27')))[_0x8763('0x2a')](function(_0x8795a2){_0x3c9dca[_0x8763('0x86')]=_0x8795a2;return _0x3c9dca;});}return _0x3c9dca;});};exports[_0x8763('0x87')]=function(){return __dirname;};
\ No newline at end of file
+var _0x54bf=['[%s]\x20%s:%s','name','message','textRequest','result','source','resolvedQuery','action','actionIncomplete','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','languageCode','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','parse','channelData','CustomAction','AudioFromTts','Data','audiofile','apiai-promise','bluebird','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','./aws','./google','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','error','unlink','end','WHAT_EVER','transcode','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','writeFileSync','base64','then','chmodSync','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','audioConfig','text:synthesize','audioContent','writeFile','777','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','data','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','catch'];(function(_0x11b80d,_0x19f23e){var _0x4ea159=function(_0x1456c3){while(--_0x1456c3){_0x11b80d['push'](_0x11b80d['shift']());}};_0x4ea159(++_0x19f23e);}(_0x54bf,0x13d));var _0xf54b=function(_0x43d958,_0x1fe6e9){_0x43d958=_0x43d958-0x0;var _0x56c814=_0x54bf[_0x43d958];return _0x56c814;};'use strict';var apiai=require(_0xf54b('0x0'));var BPromise=require(_0xf54b('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0xf54b('0x2'));var md5=require(_0xf54b('0x3'));var path=require(_0xf54b('0x4'));var querystring=require(_0xf54b('0x5'));var rp=require(_0xf54b('0x6'));var rs=require(_0xf54b('0x7'));var sox=require(_0xf54b('0x8'));var tts=require(_0xf54b('0x9'));var urlParse=require(_0xf54b('0xa'))['parse'];var util=require('util');var aws=require(_0xf54b('0xb'));var google=require(_0xf54b('0xc'));var sestek=require('./sestek');var tilde=require(_0xf54b('0xd'));var logger=require(_0xf54b('0xe'))('agi');var ISPEECH_API=_0xf54b('0xf');function downloadFile(_0x449f40,_0x1fda98){return new BPromise(function(_0x511cfb,_0x509b3f){var _0xbcfeca=urlParse(_0x449f40);var _0x527911=_0xbcfeca[_0xf54b('0x10')]==='https:'?https:http;var _0xf37c77={'host':_0xbcfeca['host'],'path':_0xbcfeca[_0xf54b('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x527911['get'](_0xf37c77,function(_0x4f6663){if(_0x4f6663['statusCode']!==0xc8){logger['error'](_0xf54b('0x11')+_0x449f40+_0xf54b('0x12')+_0x4f6663[_0xf54b('0x13')]+'\x20('+_0x4f6663[_0xf54b('0x14')]+')');_0x509b3f(new Error(_0xf54b('0x11')+_0x449f40+'\x20failed,\x20status\x20code\x20=\x20'+_0x4f6663['statusCode']+'\x20('+_0x4f6663['statusMessage']+')'));return;}var _0x4bc3c8=fs[_0xf54b('0x15')](_0x1fda98);_0x4bc3c8['on'](_0xf54b('0x16'),function(){logger[_0xf54b('0x17')](_0xf54b('0x18'));_0x4bc3c8['close'](_0x511cfb);});_0x4bc3c8['on'](_0xf54b('0x19'),function(_0x58e3a1){fs[_0xf54b('0x1a')](_0x1fda98);logger[_0xf54b('0x19')]('download\x20error',_0x58e3a1);_0x509b3f(_0x58e3a1);});_0x4f6663['pipe'](_0x4bc3c8);})['on']('error',function(_0x2bdd5c){logger[_0xf54b('0x19')](_0x2bdd5c);_0x509b3f(_0x2bdd5c);})[_0xf54b('0x1b')]();});}function uploadFile(_0x22f057){return new BPromise(function(_0x340dc8,_0x141aa2){var _0x4d1752=urlParse(_0x22f057);var _0x56aa8c=_0x4d1752[_0xf54b('0x10')]==='https:'?https:http;var _0x44b354={'host':_0x4d1752['host'],'path':_0x4d1752[_0xf54b('0x4')],'headers':{'user-agent':_0xf54b('0x1c')}};_0x56aa8c['get'](_0x44b354,function(_0x647d1f){if(_0x647d1f['statusCode']!==0xc8){_0x141aa2(new Error(_0xf54b('0x11')+_0x22f057+_0xf54b('0x12')+_0x647d1f['statusCode']+'\x20('+_0x647d1f[_0xf54b('0x14')]+')'));return;}var _0x10fc06='';_0x647d1f['on']('data',function(_0x3e7322){_0x10fc06+=_0x3e7322;});_0x647d1f['on']('end',function(){_0x340dc8(_0x10fc06);});})['on'](_0xf54b('0x19'),function(_0x332a6d){_0x141aa2(_0x332a6d);})[_0xf54b('0x1b')]();});}function convertFile(_0x140503,_0xd8feaf){return new BPromise(function(_0x163bee,_0x4496ee){var _0x1e9efa=sox[_0xf54b('0x1d')](_0x140503,_0xd8feaf,{'sampleRate':0x1f40,'format':_0xf54b('0x1e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1e9efa['on'](_0xf54b('0x19'),function(_0x5eedc2){logger[_0xf54b('0x19')](_0xf54b('0x1f'),_0x5eedc2);_0x4496ee(_0x5eedc2);});_0x1e9efa['on'](_0xf54b('0x1b'),function(){logger[_0xf54b('0x17')](_0xf54b('0x20'));_0x163bee();});_0x1e9efa['start']();});}function base64Decode(_0x394b67,_0x51aacf){var _0x3838b0=path[_0xf54b('0x21')](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+'.wav');fs[_0xf54b('0x24')](_0x3838b0,_0x394b67,_0xf54b('0x25'));return convertFile(_0x3838b0,_0x51aacf)[_0xf54b('0x26')](function(){try{fs[_0xf54b('0x1a')](_0x3838b0);fs[_0xf54b('0x27')](_0x51aacf,'777');}catch(_0x5f07eb){logger['error'](_0x5f07eb);}return _0x51aacf[_0xf54b('0x28')]('.')[0x0];});}function base64Encode(_0x33b357){var _0x1cc92b=fs[_0xf54b('0x29')](_0x33b357);return new Buffer(_0x1cc92b)[_0xf54b('0x2a')](_0xf54b('0x25'));}exports['googleCloudTTS']=function(_0x337c5a,_0x26c876,_0x1f1cc3,_0x3b2bbf,_0x1084f9,_0x5dd90e){var _0x22cbc6,_0x57e9c0;var _0x57b9b0=_0xf54b('0x2b');var _0x4c1a04=_0xf54b('0x2c')+_0x337c5a;var _0x4a2ce2={};if(_0x26c876===_0xf54b('0x2d')){_0x4a2ce2[_0xf54b('0x2e')]={'ssml':_0x1f1cc3};}else{_0x4a2ce2[_0xf54b('0x2e')]={'text':_0x1f1cc3};};_0x4a2ce2['voice']={'languageCode':_0x3b2bbf,'ssmlGender':_0x1084f9};_0x4a2ce2[_0xf54b('0x2f')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x35ac46={'url':_0x57b9b0+_0xf54b('0x30')+_0x4c1a04,'method':'POST','json':!![],'body':_0x4a2ce2};return rp(_0x35ac46)[_0xf54b('0x26')](function(_0x338677){return new BPromise(function(_0x287827,_0x198f41){_0x22cbc6=path[_0xf54b('0x21')](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+'.mp3');var _0x327073=Buffer['from'](_0x338677[_0xf54b('0x31')],_0xf54b('0x25'));return fs[_0xf54b('0x32')](_0x22cbc6,_0x327073,function(_0x5f38cc){_0x198f41(_0x5f38cc);},function(_0x4c3ecf){fs[_0xf54b('0x27')](_0x22cbc6,_0xf54b('0x33'));_0x287827(_0x4c3ecf);});});})[_0xf54b('0x26')](function(_0x248457){_0x57e9c0=path[_0xf54b('0x21')](__dirname,'tmp',rs[_0xf54b('0x23')](0x4)+_0xf54b('0x34'));return convertFile(_0x22cbc6,_0x57e9c0);})[_0xf54b('0x26')](function(){try{fs[_0xf54b('0x1a')](_0x22cbc6);fs['chmodSync'](_0x57e9c0,'777');}catch(_0x39eebb){logger[_0xf54b('0x19')](_0x39eebb);}logger[_0xf54b('0x17')](_0xf54b('0x35'),_0x57e9c0[_0xf54b('0x28')]('.')[0x0]);return _0x57e9c0['split']('.')[0x0];});};exports[_0xf54b('0x36')]=function(_0x1652e7,_0x46bbab){var _0x645e14=_0xf54b('0x37');var _0x4b2e4f,_0x32c886;var _0x40b492;var _0x4736e7={'encoding':_0xf54b('0x38'),'method':_0xf54b('0x39'),'timeout':0x2710,'url':_0x645e14,'headers':{'Content-Type':_0xf54b('0x3a')},'body':_0xf54b('0x3b')+encodeURIComponent(JSON[_0xf54b('0x3c')]([[[_0xf54b('0x3d'),JSON[_0xf54b('0x3c')]([_0x1652e7,_0x46bbab||'en',![],_0xf54b('0x3e')]),null,'generic']]]))};return rp(_0x4736e7)[_0xf54b('0x26')](function(_0x5ac478){try{_0x40b492=eval(_0x5ac478[_0xf54b('0x3f')](0x5))[0x0][0x2];}catch(_0x2106dd){throw new Error(_0xf54b('0x40')+_0x5ac478[_0xf54b('0x41')]);}if(!_0x40b492){if(_0x1652e7['length']>0xc8){throw new Error(_0xf54b('0x42'));}else{throw new Error(_0xf54b('0x43')+_0x46bbab+_0xf54b('0x44'));}}try{_0x40b492=eval(_0x40b492)[0x0];}catch(_0x26ec62){throw new Error('parse\x20response\x20failed:\x0a'+res[_0xf54b('0x41')]);}const _0x1e4791=_0x40b492;_0x4b2e4f=path[_0xf54b('0x21')](__dirname,'tmp',rs[_0xf54b('0x23')](0x4)+_0xf54b('0x45'));fs[_0xf54b('0x24')](_0x4b2e4f,_0x40b492,{'encoding':_0xf54b('0x25')});_0x32c886=path[_0xf54b('0x21')](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+_0xf54b('0x34'));return convertFile(_0x4b2e4f,_0x32c886);})[_0xf54b('0x26')](function(){try{fs['unlink'](_0x4b2e4f);fs[_0xf54b('0x27')](_0x32c886,'777');}catch(_0x3d8df9){logger[_0xf54b('0x19')](_0x3d8df9);}logger[_0xf54b('0x17')](_0xf54b('0x46'),_0x32c886['split']('.')[0x0]);return _0x32c886['split']('.')[0x0];});};exports[_0xf54b('0x47')]=function(_0x14c89a,_0x29380c,_0x1cabbf){return google[_0xf54b('0x48')](_0x14c89a,_0x29380c,_0x1cabbf)[_0xf54b('0x26')](function(_0x247cb5){logger['info'](_0x247cb5[_0xf54b('0x49')]);return rp(_0x247cb5);})[_0xf54b('0x26')](function(_0x464924){var _0xcf0312='';var _0x6dbcd5=0x0;try{fs[_0xf54b('0x1a')](_0x14c89a);}catch(_0x81eb8c){logger[_0xf54b('0x19')](_0x81eb8c);}if(_0x464924&&_0x464924[_0xf54b('0x4a')]){_0xcf0312=_0x464924[_0xf54b('0x4a')]['map'](function(_0xcf272b){return _0xcf272b&&_0xcf272b[_0xf54b('0x4b')][0x0]&&_0xcf272b[_0xf54b('0x4b')][0x0][_0xf54b('0x4c')]?_0xcf272b['alternatives'][0x0]['transcript']:'';})[_0xf54b('0x4d')]('\x0a');_0x6dbcd5=_0x464924[_0xf54b('0x4a')][_0xf54b('0x4e')](function(_0x1b7c06){return _0x1b7c06&&_0x1b7c06[_0xf54b('0x4b')][0x0]&&_0x1b7c06[_0xf54b('0x4b')][0x0][_0xf54b('0x4f')]?_0x1b7c06[_0xf54b('0x4b')][0x0][_0xf54b('0x4f')]:0x0;})['join']('\x0a');}logger[_0xf54b('0x17')](_0xf54b('0x50'),_0xcf0312);logger[_0xf54b('0x17')]('googleASR\x20confidence',_0x6dbcd5);return{'transcript':_0xcf0312,'confidence':_0x6dbcd5};})[_0xf54b('0x51')](function(_0xbbe322){logger['error'](_0xf54b('0x52'),_0xbbe322[_0xf54b('0x13')],_0xbbe322[_0xf54b('0x53')],_0xbbe322[_0xf54b('0x54')]);});};exports['googleDialogflow']=function(_0x1091e4,_0x3dd5fd,_0x4bbda8,_0x1cfa61){var _0x25d020=apiai(_0x3dd5fd,{'language':_0x1cfa61||'en'});return _0x25d020[_0xf54b('0x55')](_0x4bbda8,{'sessionId':md5(_0x1091e4)})[_0xf54b('0x26')](function(_0x3b9874){logger[_0xf54b('0x17')](JSON[_0xf54b('0x3c')](_0x3b9874));return{'source':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x57')],'resolvedQuery':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x58')],'action':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x59')],'actionIncomplete':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x5a')],'speech':_0x3b9874[_0xf54b('0x56')]['fulfillment']['speech'],'score':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x5b')],'statusCode':_0x3b9874['status']['code'],'endConversation':_0x3b9874[_0xf54b('0x56')][_0xf54b('0x5c')][_0xf54b('0x5d')]||![],'isFallbackIntent':_0x3b9874['result'][_0xf54b('0x5c')][_0xf54b('0x5e')]};});};exports[_0xf54b('0x5f')]=function(_0x477156,_0x2c2fb1,_0x4f8385,_0x1fb632,_0x4158cd,_0x4e4dd0){var _0x3690c3=_0x1fb632[_0xf54b('0x60')](/\\n/g,'\x0a');var _0x40da43={'credentials':{'private_key':_0x3690c3,'client_email':_0x4f8385}};var _0xe43f0e=new dialogflow[(_0xf54b('0x61'))](_0x40da43);var _0xe9d838=_0xe43f0e[_0xf54b('0x62')](_0x2c2fb1,md5(_0x477156));var _0x1a4aa3={'session':_0xe9d838,'queryInput':{'text':{'text':_0x4158cd,'languageCode':_0x4e4dd0}}};return _0xe43f0e[_0xf54b('0x63')](_0x1a4aa3)[_0xf54b('0x26')](function(_0x5d54a5){if(_0x5d54a5&&_0x5d54a5[_0xf54b('0x64')]){logger[_0xf54b('0x17')](_0xf54b('0x65'),JSON[_0xf54b('0x3c')](_0x5d54a5));var _0x19ee5b=_0x5d54a5[0x0];if(_0x19ee5b){var _0x3f1767={'action':_0x19ee5b['queryResult']['action'],'allRequiredParamsPresent':_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x67')],'endConversation':_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x68')]&&_0x19ee5b[_0xf54b('0x66')]['diagnosticInfo'][_0xf54b('0x69')]?_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x68')][_0xf54b('0x69')]['end_conversation'][_0xf54b('0x6a')]:![],'fulfillmentText':_0x19ee5b[_0xf54b('0x66')]['fulfillmentText'],'intentName':_0x19ee5b['queryResult'][_0xf54b('0x6b')][_0xf54b('0x53')],'intentDisplayName':_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x6b')][_0xf54b('0x6c')],'isFallbackIntent':_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x6b')][_0xf54b('0x6d')],'languageCode':_0x19ee5b['queryResult'][_0xf54b('0x6e')],'queryText':_0x19ee5b[_0xf54b('0x66')]['queryText'],'responseId':_0x19ee5b[_0xf54b('0x6f')],'score':_0x19ee5b[_0xf54b('0x66')][_0xf54b('0x70')],'speech':_0x19ee5b['queryResult'][_0xf54b('0x71')],'providerResponse':JSON[_0xf54b('0x3c')](_0x5d54a5)};return _0x3f1767;}}});};exports[_0xf54b('0x72')]=function(_0x526448,_0x483a9f,_0x305458,_0x3986f3){return tilde[_0xf54b('0x48')](_0x526448,_0x483a9f,_0x305458,_0x3986f3)[_0xf54b('0x26')](function(_0x1cfbc3){try{fs['unlink'](_0x526448);}catch(_0x15480e){logger[_0xf54b('0x19')](_0x15480e);}logger['info'](_0xf54b('0x73'),_0x1cfbc3[_0xf54b('0x4c')]);logger[_0xf54b('0x17')](_0xf54b('0x74'),_0x1cfbc3[_0xf54b('0x4f')]);return _0x1cfbc3;});};exports[_0xf54b('0x75')]=function(_0x48c691,_0x5914f4,_0x1aefe6,_0x348867,_0x561e66,_0x30b4cd){var _0x3b0b97=path[_0xf54b('0x21')](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+'.mp3');var _0x1234c7;return aws['polly'](_0x48c691,_0x5914f4,_0x1aefe6,_0x348867,_0x561e66,_0x30b4cd,_0x3b0b97)[_0xf54b('0x26')](function(){_0x1234c7=path['resolve'](__dirname,_0xf54b('0x22'),rs['generate'](0x4)+'.wav');return convertFile(_0x3b0b97,_0x1234c7);})[_0xf54b('0x26')](function(){try{fs['unlink'](_0x3b0b97);fs[_0xf54b('0x27')](_0x1234c7,_0xf54b('0x33'));}catch(_0x1839fd){logger[_0xf54b('0x19')](_0x1839fd);}return _0x1234c7['split']('.')[0x0];});};exports[_0xf54b('0x76')]=function(_0x5487c1,_0x56010a,_0x3c7d0c,_0x185174,_0x27d1d0,_0x3af32c){return aws[_0xf54b('0x77')](_0x5487c1,_0x56010a,_0x3c7d0c,_0x185174,_0x27d1d0,_0x3af32c)['then'](function(_0xa3ef98){logger[_0xf54b('0x17')](JSON['stringify'](_0xa3ef98));return _0xa3ef98;});};exports[_0xf54b('0x78')]=function(_0x23c579,_0x1c9a7b,_0x1f2964,_0x4f781d){var _0x3689a2=util[_0xf54b('0x79')](_0xf54b('0x7a'),ISPEECH_API,_0x23c579,encodeURIComponent(_0x1c9a7b),_0x1f2964,_0x4f781d);var _0x1d4f36=path['resolve'](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+_0xf54b('0x45'));var _0x29c8ea;return downloadFile(_0x3689a2,_0x1d4f36)[_0xf54b('0x26')](function(){_0x29c8ea=path[_0xf54b('0x21')](__dirname,'tmp',rs[_0xf54b('0x23')](0x4)+_0xf54b('0x34'));return convertFile(_0x1d4f36,_0x29c8ea);})[_0xf54b('0x26')](function(){try{fs['unlink'](_0x1d4f36);fs['chmodSync'](_0x29c8ea,_0xf54b('0x33'));}catch(_0x15e359){logger[_0xf54b('0x19')](_0x15e359);}return _0x29c8ea['split']('.')[0x0];});};exports[_0xf54b('0x7b')]=function(_0x5ca7fb,_0x4b83a7,_0xb1b677,_0x5501f4){var _0x18d375=util[_0xf54b('0x79')](_0xf54b('0x7c'),ISPEECH_API,_0x4b83a7,_0xb1b677,base64Encode(_0x5ca7fb),_0x5501f4?util[_0xf54b('0x79')](_0xf54b('0x7d'),encodeURIComponent(_0x5501f4)):_0xf54b('0x7e'));return uploadFile(_0x18d375)['then'](function(_0x548ffb){return querystring[_0xf54b('0x7f')](_0x548ffb);});};exports['sestekNDA']=function(_0x2f9ec8,_0x52a3e1){return sestek['nda'](_0x2f9ec8,_0x52a3e1)[_0xf54b('0x26')](function(_0x37160c){logger[_0xf54b('0x17')](JSON['stringify'](_0x37160c));var _0x417581={'speech':_0x37160c['text'],'action':_0x37160c[_0xf54b('0x80')]?_0x37160c[_0xf54b('0x80')][_0xf54b('0x81')]:undefined,'actiondata':_0x37160c['channelData']?_0x37160c[_0xf54b('0x80')]['CustomActionData']:undefined};if(_0x37160c[_0xf54b('0x80')]&&_0x37160c[_0xf54b('0x80')][_0xf54b('0x82')]){return base64Decode(_0x37160c[_0xf54b('0x80')][_0xf54b('0x82')][_0xf54b('0x83')],path['resolve'](__dirname,_0xf54b('0x22'),rs[_0xf54b('0x23')](0x4)+_0xf54b('0x34')))[_0xf54b('0x26')](function(_0x2c75c5){_0x417581[_0xf54b('0x84')]=_0x2c75c5;return _0x417581;});}return _0x417581;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 8f34e03..73163a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
+var _0x95f6=['exports','./nda'];(function(_0x2e1c3f,_0x1f510d){var _0x317221=function(_0x5527b3){while(--_0x5527b3){_0x2e1c3f['push'](_0x2e1c3f['shift']());}};_0x317221(++_0x1f510d);}(_0x95f6,0xe5));var _0x695f=function(_0x572156,_0xb11cdf){_0x572156=_0x572156-0x0;var _0x4c0640=_0x95f6[_0x572156];return _0x4c0640;};var nda=require(_0x695f('0x0'));module[_0x695f('0x1')]={'nda':nda};
\ No newline at end of file
index 87aa13c..4c3e05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc2=['then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','uniqueid','callerid','calleridname','text','Bearer\x20','access_token','project','channelData','body','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','CustomActionData','info','../../../../../config/logger','agi','exports','POST','ndauth_url','/token','username'];(function(_0x124298,_0x542004){var _0x35ac24=function(_0x49afe8){while(--_0x49afe8){_0x124298['push'](_0x124298['shift']());}};_0x35ac24(++_0x542004);}(_0x7dc2,0x19d));var _0x27dc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7dc2[_0x321bb2];return _0x9c12ed;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0x27dc('0x0'))(_0x27dc('0x1'));module[_0x27dc('0x2')]=function(_0x426f56,_0x57d4b4){var _0x15d70c={'method':_0x27dc('0x3'),'uri':url['resolve'](_0x57d4b4[_0x27dc('0x4')],_0x27dc('0x5')),'form':{'grant_type':'password','username':_0x57d4b4[_0x27dc('0x6')],'password':_0x57d4b4['password']},'json':!![]};return rp(_0x15d70c)[_0x27dc('0x7')](function(_0x3b3eee){var _0x5181ab={'method':_0x27dc('0x3'),'uri':url[_0x27dc('0x8')](_0x57d4b4[_0x27dc('0x9')],_0x27dc('0xa')),'body':{'type':_0x57d4b4['ndaactivity_type']||_0x27dc('0xb'),'channelId':'Nda','conversation':{'id':_0x426f56[_0x27dc('0xc')]},'from':{'id':_0x426f56[_0x27dc('0xd')],'name':_0x426f56[_0x27dc('0xe')]},'recipient':{'id':_0x426f56['dnid'],'name':_0x426f56['extension']},'text':_0x57d4b4[_0x27dc('0xf')],'channelData':{}},'headers':{'Authorization':_0x27dc('0x10')+_0x3b3eee[_0x27dc('0x11')]},'json':!![]};if(_0x57d4b4[_0x27dc('0x12')]){_0x5181ab['body'][_0x27dc('0x13')]['ProjectName']=_0x57d4b4[_0x27dc('0x12')];}if(_0x57d4b4['ndagenerate_audio']=='1'){_0x5181ab[_0x27dc('0x14')][_0x27dc('0x13')][_0x27dc('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x27dc('0x16')};}if(_0x57d4b4['custom_action']){_0x5181ab[_0x27dc('0x14')][_0x27dc('0x13')][_0x27dc('0x17')]=_0x57d4b4[_0x27dc('0x18')];if(_0x57d4b4[_0x27dc('0x19')]){_0x5181ab['body'][_0x27dc('0x13')][_0x27dc('0x1a')]=_0x57d4b4[_0x27dc('0x19')];}}logger[_0x27dc('0x1b')](JSON['stringify'](_0x5181ab));return rp(_0x5181ab);});};
\ No newline at end of file
+var _0xfb5d=['custom_action_data','CustomActionData','info','request-promise','url','../../../../../config/logger','agi','/token','password','then','POST','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','extension','text','Bearer\x20','access_token','project','channelData','ProjectName','ndagenerate_audio','body','AudioOutputSettings','audio/wav','custom_action'];(function(_0x39282d,_0x1afeca){var _0x1a6748=function(_0x5eae38){while(--_0x5eae38){_0x39282d['push'](_0x39282d['shift']());}};_0x1a6748(++_0x1afeca);}(_0xfb5d,0x11a));var _0xdfb5=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xfb5d[_0x2c91e9];return _0x13f0ff;};'use strict';var rp=require(_0xdfb5('0x0'));var url=require(_0xdfb5('0x1'));var logger=require(_0xdfb5('0x2'))(_0xdfb5('0x3'));module['exports']=function(_0x174f23,_0x51442a){var _0x4d5633={'method':'POST','uri':url['resolve'](_0x51442a['ndauth_url'],_0xdfb5('0x4')),'form':{'grant_type':'password','username':_0x51442a['username'],'password':_0x51442a[_0xdfb5('0x5')]},'json':!![]};return rp(_0x4d5633)[_0xdfb5('0x6')](function(_0x164eb2){var _0x5c410c={'method':_0xdfb5('0x7'),'uri':url[_0xdfb5('0x8')](_0x51442a[_0xdfb5('0x9')],_0xdfb5('0xa')),'body':{'type':_0x51442a[_0xdfb5('0xb')]||_0xdfb5('0xc'),'channelId':_0xdfb5('0xd'),'conversation':{'id':_0x174f23[_0xdfb5('0xe')]},'from':{'id':_0x174f23[_0xdfb5('0xf')],'name':_0x174f23['calleridname']},'recipient':{'id':_0x174f23['dnid'],'name':_0x174f23[_0xdfb5('0x10')]},'text':_0x51442a[_0xdfb5('0x11')],'channelData':{}},'headers':{'Authorization':_0xdfb5('0x12')+_0x164eb2[_0xdfb5('0x13')]},'json':!![]};if(_0x51442a[_0xdfb5('0x14')]){_0x5c410c['body'][_0xdfb5('0x15')][_0xdfb5('0x16')]=_0x51442a['project'];}if(_0x51442a[_0xdfb5('0x17')]=='1'){_0x5c410c[_0xdfb5('0x18')][_0xdfb5('0x15')][_0xdfb5('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xdfb5('0x1a')};}if(_0x51442a['custom_action']){_0x5c410c['body'][_0xdfb5('0x15')]['CustomAction']=_0x51442a[_0xdfb5('0x1b')];if(_0x51442a[_0xdfb5('0x1c')]){_0x5c410c[_0xdfb5('0x18')][_0xdfb5('0x15')][_0xdfb5('0x1d')]=_0x51442a[_0xdfb5('0x1c')];}}logger[_0xdfb5('0x1e')](JSON['stringify'](_0x5c410c));return rp(_0x5c410c);});};
\ No newline at end of file
index 9a6f40a..fa4955f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf15f=['exports'];(function(_0x48cf40,_0x31ee75){var _0x40982f=function(_0x444743){while(--_0x444743){_0x48cf40['push'](_0x48cf40['shift']());}};_0x40982f(++_0x31ee75);}(_0xf15f,0x94));var _0xff15=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xf15f[_0x39096d];return _0x13da4f;};'use strict';var asr=require('./lib/api');module[_0xff15('0x0')]=function(_0x216776,_0xdc28c8,_0x373014,_0xf20205){return asr(_0x216776,_0xdc28c8,_0x373014,_0xf20205);};
\ No newline at end of file
+'use strict';var asr=require('./lib/api');module['exports']=function(_0x244cd3,_0x35699e,_0x5d0f3b,_0x3da438){return asr(_0x244cd3,_0x35699e,_0x5d0f3b,_0x3da438);};
\ No newline at end of file
index c7cce13..919604c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf03b=['Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','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','update','digest','hex'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xf03b,0xdc));var _0xbf03=function(_0x317e26,_0x2c1ac8){_0x317e26=_0x317e26-0x0;var _0x5e61d8=_0xf03b[_0x317e26];return _0x5e61d8;};'use strict';var BPromise=require(_0xbf03('0x0'));var _=require(_0xbf03('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0xbf03('0x2'));var logger=require(_0xbf03('0x3'))(_0xbf03('0x4'));module[_0xbf03('0x5')]=function(_0xdbb0cf,_0x490e8c,_0x3365be,_0x16275a){return new BPromise(function(_0x5042cb,_0x5b4f6b){logger[_0xbf03('0x6')](_0xbf03('0x7'),_0x16275a||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x24af84=new WebSocket(_0x16275a||_0xbf03('0x8'),{'perMessageDeflate':![]});var _0x41cbc2='';var _0x12c605='0';var _0x3131ba='1';var _0x25e42e=_0xbf03('0x9');function _0x5349de(_0x295d9c){var _0x3362e5=crypto[_0xbf03('0xa')]('sha1');_0x3362e5[_0xbf03('0xb')](_0x295d9c);return _0x3362e5[_0xbf03('0xc')](_0xbf03('0xd'));}function _0x40003d(){try{logger[_0xbf03('0x6')](_0xbf03('0xe'));var _0x6e92c8=moment()[_0xbf03('0xf')]();var _0x4de7d9=_0x5349de(_0x6e92c8+_0x490e8c+_0x3365be);_0x24af84[_0xbf03('0x10')](JSON[_0xbf03('0x11')]({'appID':_0x490e8c,'timestamp':_0x6e92c8,'appKey':_0x4de7d9}));var _0x441102=fs[_0xbf03('0x12')](_0xdbb0cf);_0x441102['on'](_0xbf03('0x13'),function(_0x4ccbc4){_0x24af84['send'](_0x4ccbc4);});_0x441102['on'](_0xbf03('0x14'),function(){_0x24af84[_0xbf03('0x10')](_0xbf03('0x15'));});}catch(_0x54af23){logger[_0xbf03('0x16')](_0xbf03('0x17'),JSON[_0xbf03('0x11')](_0x54af23));_0x24af84[_0xbf03('0x18')]();}}function _0x57b8a5(_0x3380b7){try{if(_0x3380b7){var _0x564aac=JSON['parse'](_0x3380b7);switch(_0x564aac[_0xbf03('0x19')]){case 0x0:if(_0x564aac[_0xbf03('0x1a')]){if(_0x564aac[_0xbf03('0x1a')][_0xbf03('0x1b')]){logger[_0xbf03('0x6')](_0xbf03('0x1c'),JSON[_0xbf03('0x11')](_0x564aac[_0xbf03('0x1a')][_0xbf03('0x1d')]));_0x41cbc2=_0x564aac[_0xbf03('0x1a')][_0xbf03('0x1d')][0x0]['transcript'];_0x12c605=_0x564aac[_0xbf03('0x1a')]['hypotheses'][0x0]['likelihood'];_0x3131ba='0';_0x25e42e='Success.';_0x24af84[_0xbf03('0x18')]();}}break;case 0x1:logger[_0xbf03('0x6')](_0xbf03('0x9'));_0x3131ba='1';_0x25e42e='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xbf03('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x3131ba='2';_0x25e42e=_0xbf03('0x1e');break;case 0x9:logger[_0xbf03('0x6')](_0xbf03('0x1f'));_0x3131ba='9';_0x25e42e=_0xbf03('0x1f');break;case 0xa:logger[_0xbf03('0x6')](_0xbf03('0x20'));_0x3131ba='10';_0x25e42e=_0xbf03('0x20');break;case 0xb:logger[_0xbf03('0x6')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x3131ba='11';_0x25e42e=_0xbf03('0x21');}}}catch(_0x3d9f54){logger[_0xbf03('0x16')]('Tilde\x20ASR\x20parse\x20error',JSON['stringify'](_0x3d9f54));_0x24af84['terminate']();}}function _0x282007(){logger[_0xbf03('0x6')](_0xbf03('0x22'));_0x5042cb({'transcript':_0x41cbc2,'confidence':_0x12c605,'status':_0x3131ba,'status_message':_0x25e42e});}function _0x27705c(_0x4aa24c){logger[_0xbf03('0x16')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xbf03('0x23')](_0x4aa24c)){logger['error'](_[_0xbf03('0x24')](_0x4aa24c)?JSON[_0xbf03('0x11')](_0x4aa24c):_0x4aa24c);}}_0x24af84['on'](_0xbf03('0x25'),_0x40003d);_0x24af84['on'](_0xbf03('0x26'),_0x57b8a5);_0x24af84['on'](_0xbf03('0x14'),_0x282007);_0x24af84['on'](_0xbf03('0x16'),_0x27705c);});};
\ No newline at end of file
+var _0x8d2a=['transcript','likelihood','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','error','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','update','digest','hex','send','createReadStream','data','close','EOS','Tilde\x20ASR\x20send\x20error','stringify','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses'];(function(_0x1a4b25,_0x4ef579){var _0x2d19fd=function(_0x468f7a){while(--_0x468f7a){_0x1a4b25['push'](_0x1a4b25['shift']());}};_0x2d19fd(++_0x4ef579);}(_0x8d2a,0xad));var _0xa8d2=function(_0x4435f2,_0x3e1640){_0x4435f2=_0x4435f2-0x0;var _0x38e24b=_0x8d2a[_0x4435f2];return _0x38e24b;};'use strict';var BPromise=require(_0xa8d2('0x0'));var _=require(_0xa8d2('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xa8d2('0x2'));var crypto=require(_0xa8d2('0x3'));var logger=require(_0xa8d2('0x4'))(_0xa8d2('0x5'));module[_0xa8d2('0x6')]=function(_0xfcec37,_0x1c69ae,_0x2d236e,_0x435a0c){return new BPromise(function(_0x3762d6,_0x585efc){logger[_0xa8d2('0x7')](_0xa8d2('0x8'),_0x435a0c||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x1ddbda=new WebSocket(_0x435a0c||_0xa8d2('0x9'),{'perMessageDeflate':![]});var _0x55b787='';var _0x48a326='0';var _0x3c6fe2='1';var _0x2adac1='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x172368(_0x4ea514){var _0x5390c1=crypto['createHash']('sha1');_0x5390c1[_0xa8d2('0xa')](_0x4ea514);return _0x5390c1[_0xa8d2('0xb')](_0xa8d2('0xc'));}function _0x3ca26e(){try{logger['info']('Open\x20Tilde\x20ASR\x20socket');var _0x28e0a4=moment()['unix']();var _0x54c23a=_0x172368(_0x28e0a4+_0x1c69ae+_0x2d236e);_0x1ddbda[_0xa8d2('0xd')](JSON['stringify']({'appID':_0x1c69ae,'timestamp':_0x28e0a4,'appKey':_0x54c23a}));var _0x3103c2=fs[_0xa8d2('0xe')](_0xfcec37);_0x3103c2['on'](_0xa8d2('0xf'),function(_0x49de83){_0x1ddbda[_0xa8d2('0xd')](_0x49de83);});_0x3103c2['on'](_0xa8d2('0x10'),function(){_0x1ddbda[_0xa8d2('0xd')](_0xa8d2('0x11'));});}catch(_0x1f5cb7){logger['error'](_0xa8d2('0x12'),JSON[_0xa8d2('0x13')](_0x1f5cb7));_0x1ddbda[_0xa8d2('0x14')]();}}function _0x212820(_0x11ea90){try{if(_0x11ea90){var _0x36d563=JSON[_0xa8d2('0x15')](_0x11ea90);switch(_0x36d563[_0xa8d2('0x16')]){case 0x0:if(_0x36d563[_0xa8d2('0x17')]){if(_0x36d563[_0xa8d2('0x17')][_0xa8d2('0x18')]){logger[_0xa8d2('0x7')](_0xa8d2('0x19'),JSON[_0xa8d2('0x13')](_0x36d563[_0xa8d2('0x17')][_0xa8d2('0x1a')]));_0x55b787=_0x36d563['result'][_0xa8d2('0x1a')][0x0][_0xa8d2('0x1b')];_0x48a326=_0x36d563[_0xa8d2('0x17')][_0xa8d2('0x1a')][0x0][_0xa8d2('0x1c')];_0x3c6fe2='0';_0x2adac1='Success.';_0x1ddbda[_0xa8d2('0x14')]();}}break;case 0x1:logger[_0xa8d2('0x7')](_0xa8d2('0x1d'));_0x3c6fe2='1';_0x2adac1=_0xa8d2('0x1d');break;case 0x2:logger[_0xa8d2('0x7')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x3c6fe2='2';_0x2adac1=_0xa8d2('0x1e');break;case 0x9:logger[_0xa8d2('0x7')](_0xa8d2('0x1f'));_0x3c6fe2='9';_0x2adac1=_0xa8d2('0x1f');break;case 0xa:logger[_0xa8d2('0x7')]('Authentication\x20failed.');_0x3c6fe2='10';_0x2adac1='Authentication\x20failed.';break;case 0xb:logger[_0xa8d2('0x7')](_0xa8d2('0x20'));_0x3c6fe2='11';_0x2adac1=_0xa8d2('0x20');}}}catch(_0x4c223e){logger[_0xa8d2('0x21')](_0xa8d2('0x22'),JSON['stringify'](_0x4c223e));_0x1ddbda[_0xa8d2('0x14')]();}}function _0xc6a152(){logger[_0xa8d2('0x7')](_0xa8d2('0x23'));_0x3762d6({'transcript':_0x55b787,'confidence':_0x48a326,'status':_0x3c6fe2,'status_message':_0x2adac1});}function _0x151215(_0x229554){logger[_0xa8d2('0x21')](_0xa8d2('0x24'));if(!_[_0xa8d2('0x25')](_0x229554)){logger[_0xa8d2('0x21')](_[_0xa8d2('0x26')](_0x229554)?JSON[_0xa8d2('0x13')](_0x229554):_0x229554);}}_0x1ddbda['on']('open',_0x3ca26e);_0x1ddbda['on'](_0xa8d2('0x27'),_0x212820);_0x1ddbda['on'](_0xa8d2('0x10'),_0xc6a152);_0x1ddbda['on'](_0xa8d2('0x21'),_0x151215);});};
\ No newline at end of file
index 061aa2d..9d39fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa1=['exports'];(function(_0x2feb53,_0x264ef7){var _0x5700ee=function(_0x700c98){while(--_0x700c98){_0x2feb53['push'](_0x2feb53['shift']());}};_0x5700ee(++_0x264ef7);}(_0x4aa1,0xf5));var _0x14aa=function(_0x42d762,_0x38020f){_0x42d762=_0x42d762-0x0;var _0x160c37=_0x4aa1[_0x42d762];return _0x160c37;};var asr=require('./asr');module[_0x14aa('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x98d9=['exports'];(function(_0xfd51ed,_0x34b0af){var _0x26550f=function(_0x1e9d0c){while(--_0x1e9d0c){_0xfd51ed['push'](_0xfd51ed['shift']());}};_0x26550f(++_0x34b0af);}(_0x98d9,0x69));var _0x998d=function(_0x51b424,_0x51d9a2){_0x51b424=_0x51b424-0x0;var _0x1b8548=_0x98d9[_0x51b424];return _0x1b8548;};var asr=require('./asr');module[_0x998d('0x0')]={'asr':asr};
\ No newline at end of file
index 8c6219f..ca62ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','events','EventEmitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require(_0x49c4('0x0'))[_0x49c4('0x1')];var AGIError=require(_0x49c4('0x2'));var AGIChannel=require(_0x49c4('0x3'));var AGIServer=function(_0x455700,_0x2ad237,_0x4e0313){var _0x4941f1=this;var _0x41a183=null;var _0x57effd=0x0;if(!_0x455700)_0x455700=0x11dd;if(!_0x2ad237)_0x2ad237=_0x49c4('0x4');EventEmitter[_0x49c4('0x5')](_0x4941f1);function _0x69bc41(){if(!_0x455700){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x41a183=net[_0x49c4('0x8')]();_0x41a183[_0x49c4('0x9')](_0x455700,_0x2ad237);_0x41a183['on'](_0x49c4('0xa'),function(){_0x4941f1[_0x49c4('0x6')]('listening');});_0x41a183['on']('connection',function(_0x451ea6){_0x41a183[_0x49c4('0xb')](function(_0x58cad7,_0xb611a1){if(_0x58cad7){_0x4941f1[_0x49c4('0x6')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x58cad7));}else if(_0x4e0313&&_0x4e0313<0x0){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x451ea6[_0x49c4('0xc')]();}else if(_0x4e0313&&_0x4e0313>0x0&&_0x4e0313<_0xb611a1){_0x57effd+=0x1;_0x4941f1[_0x49c4('0x6')]('error',new AGIError(_0x49c4('0xd'),_0x57effd));_0x451ea6[_0x49c4('0xc')]();}else{var _0x21f15a=new AGIChannel(_0x451ea6);_0x21f15a['on'](_0x49c4('0xe'),function(){_0x4941f1[_0x49c4('0x6')](_0x49c4('0xf'),_0x21f15a);});}});});_0x41a183['on'](_0x49c4('0x7'),function(_0x3de397){_0x4941f1['emit'](_0x49c4('0x7'),new AGIError(_0x49c4('0x10'),_0x3de397[_0x49c4('0x11')]));});_0x41a183['on'](_0x49c4('0x12'),function(){_0x4941f1[_0x49c4('0x6')]('close',new AGIError(_0x49c4('0x13')));});}process[_0x49c4('0x14')](function(){_0x69bc41();});};util['inherits'](AGIServer,EventEmitter);module['exports']=function(_0x3c782d,_0x2f82d5,_0x3addb2){return new AGIServer(_0x3c782d,_0x2f82d5,_0x3addb2);};
\ No newline at end of file
+var _0xa9e0=['ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','./channel','call','emit','createServer','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy'];(function(_0x1d426f,_0x37e919){var _0x17f71a=function(_0x3bf60c){while(--_0x3bf60c){_0x1d426f['push'](_0x1d426f['shift']());}};_0x17f71a(++_0x37e919);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var util=require(_0x0a9e('0x0'));var net=require(_0x0a9e('0x1'));var EventEmitter=require(_0x0a9e('0x2'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0a9e('0x3'));var AGIServer=function(_0x4ce2f1,_0x333808,_0x432180){var _0x2ab90b=this;var _0x991246=null;var _0x981158=0x0;if(!_0x4ce2f1)_0x4ce2f1=0x11dd;if(!_0x333808)_0x333808='127.0.0.1';EventEmitter[_0x0a9e('0x4')](_0x2ab90b);function _0x441e3a(){if(!_0x4ce2f1){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x991246=net[_0x0a9e('0x6')]();_0x991246['listen'](_0x4ce2f1,_0x333808);_0x991246['on']('listening',function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x7'));});_0x991246['on'](_0x0a9e('0x8'),function(_0x3ab53f){_0x991246[_0x0a9e('0x9')](function(_0xbd1168,_0x4a4c56){if(_0xbd1168){_0x2ab90b['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0xbd1168));}else if(_0x432180&&_0x432180<0x0){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError(_0x0a9e('0xb')));_0x3ab53f[_0x0a9e('0xc')]();}else if(_0x432180&&_0x432180>0x0&&_0x432180<_0x4a4c56){_0x981158+=0x1;_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x981158));_0x3ab53f[_0x0a9e('0xc')]();}else{var _0x239b12=new AGIChannel(_0x3ab53f);_0x239b12['on'](_0x0a9e('0xd'),function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x8'),_0x239b12);});}});});_0x991246['on'](_0x0a9e('0xa'),function(_0x52a03d){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError(_0x0a9e('0xe'),_0x52a03d['code']));});_0x991246['on'](_0x0a9e('0xf'),function(){_0x2ab90b[_0x0a9e('0x5')]('close',new AGIError(_0x0a9e('0x10')));});}process['nextTick'](function(){_0x441e3a();});};util[_0x0a9e('0x11')](AGIServer,EventEmitter);module[_0x0a9e('0x12')]=function(_0x106033,_0x205fd6,_0x31b1ca){return new AGIServer(_0x106033,_0x205fd6,_0x31b1ca);};
\ No newline at end of file
index 254803d..9d13fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['toString','callback_priority','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','LOCAL','googleCloudTTS','apiKey','text','languageCode','ssmlGender','MALE','audioEncoding','MP3','google_tts_language','restAPI','number','timeout','includes','PUT','body','parse','headers','computedVariables','sync','url','render','stringify','statusCode','statusMessage','message','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','clone','hasOwnProperty','replaceObjectAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','replaceAllVariables','isEmpty','saveRestApiResult','%s.%s','setVariable','split','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','retry','label','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','exec','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_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','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','odbc_id','no\x20database\x20selected','no\x20query\x20configured','replace','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','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','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','toUpperCase','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','getTrunk','no\x20trunk\x20found','trunk_name','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','getSound','file_id','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','isString','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','intKey','google\x20%s\x20file\x20created','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','NOBEEP','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','AGENT\x20%s\x20FOUND\x20BY','findBy','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','no\x20find\x20by\x20configured','getPause','pause_id','playback','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','getVoiceQueue','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','macro','gosub','position','record','recordingFormat','%s_%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','escape_digits','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','Smtp','user','subject','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','getSmsAccount','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','Answer','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','googleTTS','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','exports','util','lodash','shelljs','moment','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareOdbc','getSquareOdbcById','getUser','getUserById','getTrunkById','getMailAccount','getMailAccountById','mailRpc','sendMailMessage','getIntervals','IntervalId','interval','map','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','callback_','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20'];(function(_0x42acfc,_0x349f46){var _0x24b053=function(_0x49409e){while(--_0x49409e){_0x42acfc['push'](_0x42acfc['shift']());}};_0x24b053(++_0x349f46);}(_0x7334,0x184));var _0x4733=function(_0x2c04c6,_0x582725){_0x2c04c6=_0x2c04c6-0x0;var _0x5c4d9f=_0x7334[_0x2c04c6];return _0x5c4d9f;};'use strict';var fs=require('fs');var util=require(_0x4733('0x0'));var _=require(_0x4733('0x1'));var sh=require(_0x4733('0x2'));var odbc=require('odbc')();var rs=require('randomstring');var moment=require(_0x4733('0x3'));var Mustache=require('mustache');var rp=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var shared=require(_0x4733('0x8'));var scripts=require(_0x4733('0x9'));var FILES_PATH=_0x4733('0xa');var recursiveMapAttributes=[_0x4733('0xb'),_0x4733('0xc')];var verticesWithRetry=[_0x4733('0xd'),_0x4733('0xe'),_0x4733('0xf')];var AGIVertices=function(_0x4c5c0,_0x38b7f5,_0x2d5fde){this[_0x4733('0x10')]=_0x4c5c0;this[_0x4733('0x11')]=_0x38b7f5;this['mailRpc']=_0x2d5fde;};AGIVertices[_0x4733('0x12')][_0x4733('0x13')]=function(_0x534c7d,_0x41b526){this['rpc'][_0x4733('0x14')](_0x534c7d)[_0x4733('0x15')](function(_0x44cb92){_0x41b526(null,_0x44cb92?_0x44cb92[_0x4733('0x16')]:![]);})[_0x4733('0x17')](function(_0x1c146c){_0x41b526(_0x1c146c);});};AGIVertices[_0x4733('0x12')]['getVoiceQueue']=function(_0x57e554,_0x543caf){this[_0x4733('0x11')][_0x4733('0x18')](_0x57e554)[_0x4733('0x15')](function(_0x22283e){_0x543caf(null,_0x22283e?_0x22283e[_0x4733('0x16')]:![]);})[_0x4733('0x17')](function(_0x12f111){_0x543caf(_0x12f111);});};AGIVertices[_0x4733('0x12')][_0x4733('0x19')]=function(_0x4ab37a,_0x2c0031){this[_0x4733('0x11')]['getSquareProjectById'](_0x4ab37a)[_0x4733('0x15')](function(_0x1d2fb6){_0x2c0031(null,_0x1d2fb6?_0x1d2fb6[_0x4733('0x16')]:![]);})[_0x4733('0x17')](function(_0x579f67){_0x2c0031(_0x579f67);});};AGIVertices['prototype'][_0x4733('0x1a')]=function(_0x3b730a,_0x50c585){this[_0x4733('0x11')][_0x4733('0x1b')](_0x3b730a)[_0x4733('0x15')](function(_0x7a4e0){_0x50c585(null,_0x7a4e0?_0x7a4e0['dsn']:![]);})[_0x4733('0x17')](function(_0xb45e1){_0x50c585(_0xb45e1);});};AGIVertices['prototype'][_0x4733('0x1c')]=function(_0x18da47,_0x478e34){this[_0x4733('0x11')][_0x4733('0x1d')](_0x18da47)[_0x4733('0x15')](function(_0x1a0643){_0x478e34(null,_0x1a0643?_0x1a0643[_0x4733('0x16')]:![]);})[_0x4733('0x17')](function(_0x180049){_0x478e34(_0x180049);});};AGIVertices[_0x4733('0x12')]['getTrunk']=function(_0x3e6976,_0x2e8545){this[_0x4733('0x11')][_0x4733('0x1e')](_0x3e6976)[_0x4733('0x15')](function(_0x3bd683){_0x2e8545(null,_0x3bd683?_0x3bd683[_0x4733('0x16')]:![]);})[_0x4733('0x17')](function(_0x13bc12){_0x2e8545(_0x13bc12);});};AGIVertices[_0x4733('0x12')]['getSound']=function(_0x3aeb57,_0x4c91bc){var _0x5b6fc0=this;this[_0x4733('0x11')]['getSoundById'](_0x3aeb57)[_0x4733('0x15')](function(_0x479989){_0x4c91bc(null,_0x479989?_0x5b6fc0['getSoundPath'](_0x479989['save_name']):![]);})[_0x4733('0x17')](function(_0x3bfe53){_0x4c91bc(_0x3bfe53);});};AGIVertices[_0x4733('0x12')][_0x4733('0x1f')]=function(_0x4fee4a,_0x538a7c){this['rpc'][_0x4733('0x20')](_0x4fee4a)['then'](function(_0x5a4814){_0x538a7c(null,_0x5a4814?_0x5a4814:![]);})[_0x4733('0x17')](function(_0x39cf44){_0x538a7c(_0x39cf44);});};AGIVertices[_0x4733('0x12')]['sendMailMessage']=function(_0x523c61,_0x4412f7,_0x3a4307){this[_0x4733('0x21')][_0x4733('0x22')](_0x523c61,_0x4412f7)[_0x4733('0x15')](function(){_0x3a4307(null);})['catch'](function(_0x191ff8){_0x3a4307(_0x191ff8);});};AGIVertices[_0x4733('0x12')][_0x4733('0x23')]=function(_0x3f0ac8,_0x49f4a1){this['rpc']['getIntervalById'](_0x3f0ac8)[_0x4733('0x15')](function(_0x6637db){if(_0x6637db){if(_0x6637db[_0x4733('0x24')]){_0x49f4a1(null,[_0x6637db[_0x4733('0x25')]]);}else{_0x49f4a1(null,_[_0x4733('0x26')](_0x6637db['Intervals'],_0x4733('0x25')));}}else{_0x49f4a1(null,![]);}})[_0x4733('0x17')](function(_0x2c32d5){_0x49f4a1(_0x2c32d5);});};AGIVertices['prototype'][_0x4733('0x27')]=function(_0x10a5e9){return util[_0x4733('0x28')](_0x4733('0x29'),FILES_PATH,_0x10a5e9);};AGIVertices[_0x4733('0x12')][_0x4733('0x2a')]=function(_0xc5fff0,_0x1c7daf,_0x4f70bf){odbc[_0x4733('0x2b')](_0xc5fff0,function(_0x51f889){if(_0x51f889){logger[_0x4733('0x2c')](_0x4733('0x2d'),_0x51f889);_0x4f70bf(_0x51f889);}else{logger[_0x4733('0x2e')](_0x4733('0x2f'));odbc[_0x4733('0x30')](_0x1c7daf,function(_0x1a8b50,_0x393925){if(_0x1a8b50){logger[_0x4733('0x2e')]('Error\x20executing\x20query\x20%s',_0x1c7daf);_0x4f70bf(_0x1a8b50);}else{logger[_0x4733('0x2e')](_0x4733('0x31'),_0x1c7daf);odbc['close'](function(_0x37f35b){if(_0x37f35b){logger[_0x4733('0x2c')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x37f35b);}_0x4f70bf(null,_0x393925);});}});}});};AGIVertices[_0x4733('0x12')]['getSmsAccount']=function(_0x43ac2d,_0x4c3073){this[_0x4733('0x11')][_0x4733('0x32')](_0x43ac2d)['then'](function(_0x515720){_0x4c3073(null,_0x515720?_0x515720:![]);})[_0x4733('0x17')](function(_0x1d7112){_0x4c3073(_0x1d7112);});};AGIVertices['prototype'][_0x4733('0x33')]=function(_0x432359,_0xe53833){this[_0x4733('0x11')][_0x4733('0x33')](_0x432359)[_0x4733('0x15')](function(_0x23e355){_0xe53833(null,_0x23e355);})[_0x4733('0x17')](function(_0x1f04dd){_0xe53833(_0x1f04dd);});};AGIVertices[_0x4733('0x12')][_0x4733('0x34')]=function(_0x1d32df,_0x191c04,_0x7c6f63){this[_0x4733('0x11')][_0x4733('0x34')]({'uniqueid':this[_0x4733('0x10')][_0x4733('0x35')],'node':_0x1d32df['label'],'application':_0x1d32df[_0x4733('0x36')],'data':_0x191c04||null,'project_name':this[_0x4733('0x10')][_0x4733('0x37')],'callerid':this[_0x4733('0x10')][_0x4733('0x38')]})[_0x4733('0x15')](function(_0x70123d){if(_0x7c6f63){_0x7c6f63(null,_0x70123d);}})[_0x4733('0x17')](function(_0x34ec6c){if(_0x7c6f63){_0x7c6f63(_0x34ec6c);}});};AGIVertices[_0x4733('0x12')][_0x4733('0x39')]=function(_0x1a50f5,_0x7976e,_0x117ce9,_0x561377){this['rpc'][_0x4733('0x39')]({'uniqueid':this[_0x4733('0x10')][_0x4733('0x35')],'callerid':this[_0x4733('0x10')][_0x4733('0x38')],'calleridname':this[_0x4733('0x10')][_0x4733('0x3a')],'context':this[_0x4733('0x10')][_0x4733('0x3b')],'extension':this[_0x4733('0x10')]['extension'],'priority':this['channel']['priority'],'accountcode':this['channel'][_0x4733('0x3c')],'dnid':this[_0x4733('0x10')][_0x4733('0x3d')],'projectName':this[_0x4733('0x10')][_0x4733('0x37')],'saveName':_0x7976e,'filename':_0x1a50f5[_0x4733('0x3e')]||_0x7976e,'savePath':_0x117ce9})[_0x4733('0x15')](function(_0x2484f4){_0x561377(null,_0x2484f4);})[_0x4733('0x17')](function(_0x1f470f){_0x561377(_0x1f470f);});};AGIVertices['prototype']['createSquareMessage']=function(_0x29c93d,_0x5372d2,_0x2882ed,_0x17e686,_0x359df){this['rpc'][_0x4733('0x3f')]({'uniqueid':this[_0x4733('0x10')][_0x4733('0x35')],'body':_0x29c93d,'direction':_0x5372d2,'providerName':_0x2882ed,'providerResponse':_0x17e686})[_0x4733('0x15')](function(_0xdc2998){if(_0x359df){_0x359df(null,_0xdc2998);}})[_0x4733('0x17')](function(_0xaa38c2){if(_0x359df){_0x359df(_0xaa38c2);}});};AGIVertices[_0x4733('0x12')][_0x4733('0x40')]=function(_0x5af8c7,_0x31fb69){this[_0x4733('0x11')][_0x4733('0x40')]({'firstName':_['isEmpty'](_0x5af8c7[_0x4733('0x16')])||_[_0x4733('0x41')](_0x5af8c7[_0x4733('0x16')])?_0x4733('0x42')+Math['random']():_0x5af8c7[_0x4733('0x16')],'lastName':_['isEmpty'](_0x5af8c7[_0x4733('0x43')])||_[_0x4733('0x41')](_0x5af8c7[_0x4733('0x43')])?null:_0x5af8c7[_0x4733('0x43')],'phone':_0x5af8c7[_0x4733('0x44')],'ListId':_0x5af8c7['list_id'],'scheduledat':_0x5af8c7[_0x4733('0x45')],'callbackUniqueid':this[_0x4733('0x10')]['uniqueid'],'tags':'callback','description':_0x4733('0x46')+_0x5af8c7[_0x4733('0x45')][_0x4733('0x47')](),'priority':_0x5af8c7[_0x4733('0x48')]})[_0x4733('0x15')](function(_0x972fde){_0x31fb69(null,_0x972fde);})[_0x4733('0x17')](function(_0x45bc1b){_0x31fb69(_0x45bc1b);});};AGIVertices['prototype']['getPause']=function(_0x3b7f06,_0x5d45c5){this[_0x4733('0x11')][_0x4733('0x49')](_0x3b7f06)[_0x4733('0x15')](function(_0x57034a){_0x5d45c5(null,_0x57034a?_0x57034a['name']:![]);})['catch'](function(_0x1106df){_0x5d45c5(_0x1106df);});};AGIVertices[_0x4733('0x12')][_0x4733('0x4a')]=function(_0x5e451a,_0x12242a,_0x3d1157){var _0x15a32e={'role':_0x4733('0x4b')};_0x15a32e[_0x5e451a]=this[_0x4733('0x10')][_0x4733('0x38')];this[_0x4733('0x11')]['agentPause'](_0x15a32e,_0x12242a,this[_0x4733('0x10')][_0x4733('0x35')])['then'](function(_0x573541){_0x3d1157(null,_[_0x4733('0x41')](_0x573541)?![]:!![]);})[_0x4733('0x17')](function(_0x25cafc){logger[_0x4733('0x2c')](_0x25cafc);_0x3d1157(null,![]);});};AGIVertices[_0x4733('0x12')][_0x4733('0x4c')]=function(_0x31f1d1,_0x460969){var _0x3597bf={'role':'agent'};_0x3597bf[_0x31f1d1]=this[_0x4733('0x10')][_0x4733('0x38')];this[_0x4733('0x11')]['agentUnpause'](_0x3597bf)[_0x4733('0x15')](function(_0x55040c){_0x460969(null,_[_0x4733('0x41')](_0x55040c)?![]:!![]);})[_0x4733('0x17')](function(_0x276a46){logger[_0x4733('0x2c')](_0x276a46);_0x460969(null,![]);});};AGIVertices[_0x4733('0x12')][_0x4733('0x4d')]=function(_0x487c43,_0x137793){var _0x574787={'role':_0x4733('0x4b')};_0x574787[_0x487c43]=this[_0x4733('0x10')]['callerid'];this[_0x4733('0x11')]['agentLogout'](_0x574787)['then'](function(_0x39d393){_0x137793(null,_[_0x4733('0x41')](_0x39d393)?![]:!![]);})[_0x4733('0x17')](function(_0x3166c5){logger[_0x4733('0x2c')](_0x3166c5);_0x137793(null,![]);});};AGIVertices[_0x4733('0x12')][_0x4733('0x4e')]=function(_0x181b34,_0x30cd37){var _0x5eab76={'role':'agent'};_0x5eab76[_0x181b34]=this['channel'][_0x4733('0x38')];var _0x36266d=_0x181b34!=_0x4733('0x4f')?util[_0x4733('0x28')]('%s/%s@from-sip/n',_0x4733('0x50'),this[_0x4733('0x10')][_0x4733('0x38')]):undefined;this['rpc'][_0x4733('0x4e')](_0x5eab76,_0x36266d)['then'](function(_0x7436b7){_0x30cd37(null,_['isNil'](_0x7436b7)?![]:!![]);})['catch'](function(_0x171884){logger['error'](_0x171884);_0x30cd37(null,![]);});};AGIVertices[_0x4733('0x12')]['shellCommand']=function(_0x4e835b,_0x1a7baf){sh['exec'](_['trim'](_0x4e835b),function(_0x918cd9,_0x27f3f5){var _0x959768=_0x27f3f5['replace'](/(\r\n|\n|\r)/gm,'');_0x1a7baf(null,_0x959768);});};AGIVertices[_0x4733('0x12')][_0x4733('0x51')]=function(_0x13cd12,_0x7003cc){scripts[_0x4733('0x51')](_0x13cd12[_0x4733('0x52')],_0x13cd12['google_cloud_tts_text_type']||_0x4733('0x53'),_0x13cd12[_0x4733('0x53')],_0x13cd12[_0x4733('0x54')]||'en-US',_0x13cd12[_0x4733('0x55')]||_0x4733('0x56'),_0x13cd12[_0x4733('0x57')]||_0x4733('0x58'))[_0x4733('0x15')](function(_0x42d342){_0x7003cc(null,_0x42d342);})[_0x4733('0x17')](function(_0x2fd8e7){_0x7003cc(_0x2fd8e7);});};AGIVertices['prototype']['googleTTS']=function(_0x1af81e,_0x4fac10){scripts['googleTTS'](_0x1af81e[_0x4733('0x53')],_0x1af81e[_0x4733('0x59')]||'en',0x1)[_0x4733('0x15')](function(_0x3cf503){_0x4fac10(null,_0x3cf503);})['catch'](function(_0x28c5c8){_0x4fac10(_0x28c5c8);});};AGIVertices['prototype'][_0x4733('0x5a')]=function(_0x5f1290,_0x542397){var _0x129cc2={'uri':_0x5f1290['url'],'method':_0x5f1290['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5f1290['timeout'])===_0x4733('0x5b')&&parseInt(_0x5f1290['timeout'])>=0x1?parseInt(_0x5f1290[_0x4733('0x5c')])*0x3e8:0x5*0x3e8};if(_[_0x4733('0x5d')](['POST',_0x4733('0x5e')],_0x129cc2['method']['toUpperCase']())){try{_0x129cc2[_0x4733('0x5f')]=_0x5f1290[_0x4733('0xc')]?JSON[_0x4733('0x60')](_0x5f1290['rawBody']):{};}catch(_0x4bde5b){logger[_0x4733('0x2c')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4bde5b);}}try{_0x129cc2[_0x4733('0x61')]=_0x5f1290[_0x4733('0xb')]?JSON[_0x4733('0x60')](_0x5f1290[_0x4733('0xb')]):{};}catch(_0x302f02){logger[_0x4733('0x2c')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x302f02);}if(_0x5f1290[_0x4733('0x62')]){try{var _0x42facb=require(_0x5f1290[_0x4733('0x62')])[_0x4733('0x63')](this,_0x129cc2);_0x129cc2['uri']=Mustache['render'](_0x5f1290[_0x4733('0x64')],_0x42facb,{},['$$','$$']);if(_0x129cc2['headers']){_0x129cc2[_0x4733('0x61')]=JSON[_0x4733('0x60')](Mustache[_0x4733('0x65')](JSON[_0x4733('0x66')](_0x129cc2[_0x4733('0x61')]),_0x42facb,{},['$$','$$']));}if(_0x129cc2[_0x4733('0x5f')]){_0x129cc2[_0x4733('0x5f')]=JSON['parse'](Mustache[_0x4733('0x65')](JSON[_0x4733('0x66')](_0x129cc2['body']),_0x42facb,{},['$$','$$']));}}catch(_0x59d559){logger[_0x4733('0x2c')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x59d559);}}rp(_0x129cc2)[_0x4733('0x15')](function(_0x592a5b){var _0x4b1ea4={'statusCode':_0x592a5b[_0x4733('0x67')]||0xc8,'statusMessage':_0x592a5b[_0x4733('0x68')]||'OK','headers':_0x592a5b[_0x4733('0x61')]||{},'body':_0x592a5b[_0x4733('0x5f')]||{}};_0x542397(null,_0x4b1ea4);})[_0x4733('0x17')](function(_0x56729d){var _0x3a68d7={'statusCode':_0x56729d[_0x4733('0x67')]||0x1f4,'statusMessage':_0x56729d[_0x4733('0x69')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x56729d['options']['headers']||{},'body':_0x56729d[_0x4733('0x6a')][_0x4733('0x5f')]||{}};_0x542397(null,_0x3a68d7);});};AGIVertices[_0x4733('0x12')][_0x4733('0x6b')]=function(_0x34f61a,_0xce07b9){scripts['googleDialogflow'](this[_0x4733('0x10')][_0x4733('0x35')],_0x34f61a[_0x4733('0x6c')],_0x34f61a['text'],_0x34f61a['dialogflow_language']||'en')['then'](function(_0x274704){_0xce07b9(null,_0x274704);})['catch'](function(_0x9d5719){_0xce07b9(_0x9d5719);});};AGIVertices[_0x4733('0x12')][_0x4733('0x6d')]=function(_0x33a056,_0x52aa67){scripts[_0x4733('0x6d')](this[_0x4733('0x10')][_0x4733('0x35')],_0x33a056[_0x4733('0x6e')],_0x33a056[_0x4733('0x6f')],_0x33a056[_0x4733('0x70')],_0x33a056[_0x4733('0x53')],_0x33a056[_0x4733('0x71')]||'en')['then'](function(_0x12aeb4){_0x52aa67(null,_0x12aeb4);})['catch'](function(_0xe0969){_0x52aa67(_0xe0969);});};AGIVertices[_0x4733('0x12')][_0x4733('0x72')]=function(_0x4ebaf2,_0xb8d9d3){scripts['sestekNDA'](this[_0x4733('0x10')],_0x4ebaf2)['then'](function(_0xba365){_0xb8d9d3(null,_0xba365);})['catch'](function(_0x44b061){_0xb8d9d3(_0x44b061);});};AGIVertices[_0x4733('0x12')][_0x4733('0x73')]=function(_0x40d881,_0x11aed9){scripts[_0x4733('0x73')](_0x40d881['key'],_0x40d881['text'],_0x40d881[_0x4733('0x74')]||_0x4733('0x75'),_0x40d881[_0x4733('0x76')])[_0x4733('0x15')](function(_0x28aef1){_0x11aed9(null,_0x28aef1);})['catch'](function(_0xbadce4){_0x11aed9(_0xbadce4);});};AGIVertices['prototype']['ispeechASR']=function(_0x50be00,_0x46a15c,_0x61323b){scripts[_0x4733('0x77')](_0x46a15c,_0x50be00[_0x4733('0x6c')],_0x50be00[_0x4733('0x78')]||_0x4733('0x75'),this['isConfigured'](_0x50be00[_0x4733('0x79')])?_0x50be00['model']:undefined)[_0x4733('0x15')](function(_0x483183){_0x61323b(null,_0x483183);})[_0x4733('0x17')](function(_0x2376b6){_0x61323b(_0x2376b6);});};AGIVertices[_0x4733('0x12')]['awsPolly']=function(_0x4db01b,_0x173b53){scripts[_0x4733('0x7a')](_0x4db01b[_0x4733('0x7b')],_0x4db01b[_0x4733('0x7c')],_0x4db01b['aws_polly_region'],_0x4db01b[_0x4733('0x7d')]||_0x4733('0x7e'),_0x4db01b['text'],_0x4db01b[_0x4733('0x7f')]||_0x4733('0x53'))[_0x4733('0x15')](function(_0x5c61ae){_0x173b53(null,_0x5c61ae);})['catch'](function(_0x5b62b5){_0x173b53(_0x5b62b5);});};AGIVertices[_0x4733('0x12')][_0x4733('0x80')]=function(_0x49d450,_0x5cb95c){scripts['awsLex'](this['channel']['uniqueid'],_0x49d450[_0x4733('0x7b')],_0x49d450[_0x4733('0x7c')],_0x49d450[_0x4733('0x81')],_0x49d450['text'],_0x49d450[_0x4733('0x82')])[_0x4733('0x15')](function(_0xe2c765){_0x5cb95c(null,_0xe2c765);})[_0x4733('0x17')](function(_0x7d7673){_0x5cb95c(_0x7d7673);});};AGIVertices[_0x4733('0x12')][_0x4733('0x83')]=function(_0x16e832,_0x363786,_0x166719){scripts[_0x4733('0x83')](_0x363786,_0x16e832['key'],_0x16e832[_0x4733('0x84')]||_0x4733('0x75'))['then'](function(_0xd04ac7){_0x166719(null,_0xd04ac7);})[_0x4733('0x17')](function(_0x38a3cc){_0x166719(_0x38a3cc);});};AGIVertices['prototype'][_0x4733('0x85')]=function(_0x3c6464,_0x11f410,_0x3416b8){scripts['tildeASR'](_0x11f410,_0x3c6464[_0x4733('0x86')],_0x3c6464[_0x4733('0x87')],_0x3c6464[_0x4733('0x88')])[_0x4733('0x15')](function(_0x1f74e0){_0x3416b8(null,_0x1f74e0);})[_0x4733('0x17')](function(_0x483ddc){_0x3416b8(_0x483ddc);});};AGIVertices[_0x4733('0x12')][_0x4733('0x89')]=function(_0x1d50af){var _0x5c5b76=_[_0x4733('0x5d')](verticesWithRetry,_0x1d50af[_0x4733('0x36')])?_0x1d50af:_[_0x4733('0x8a')](_0x1d50af);for(var _0x18059d in _0x5c5b76){if(_0x5c5b76[_0x4733('0x8b')](_0x18059d)){if(_0x5c5b76[_0x18059d]&&_['isString'](_0x5c5b76[_0x18059d])){if(_[_0x4733('0x5d')](recursiveMapAttributes,_0x18059d)){_0x5c5b76[_0x18059d]=this[_0x4733('0x8c')](_0x5c5b76[_0x18059d]);}else{_0x5c5b76[_0x18059d]=this['replaceAllVariables'](_0x5c5b76[_0x18059d]);}}}}return _0x5c5b76;};AGIVertices[_0x4733('0x12')][_0x4733('0x8d')]=function(_0x50f8db){for(var _0x1a44ae in _0x50f8db){if(_0x50f8db[_0x4733('0x8b')](_0x1a44ae)){if(_[_0x4733('0x8e')](_0x50f8db[_0x1a44ae])){this[_0x4733('0x8d')](_0x50f8db[_0x1a44ae]);}else if(_[_0x4733('0x8f')](_0x50f8db[_0x1a44ae])){for(var _0x461bfc=0x0;_0x461bfc<_0x50f8db[_0x1a44ae][_0x4733('0x90')];_0x461bfc++){this['recursiveNodeIndex'](_0x50f8db[_0x1a44ae][_0x461bfc]);}}else if(_['isString'](_0x50f8db[_0x1a44ae])){_0x50f8db[_0x1a44ae]=this[_0x4733('0x91')](_0x50f8db[_0x1a44ae]);}}}};AGIVertices[_0x4733('0x12')]['saveRestApiResult']=function(_0x18b38c,_0x53e996){for(var _0x4d8180 in _0x18b38c){if(_0x18b38c[_0x4733('0x8b')](_0x4d8180)){if(_[_0x4733('0x8e')](_0x18b38c[_0x4d8180])){if(!_[_0x4733('0x92')](_0x18b38c[_0x4d8180])){this[_0x4733('0x93')](_0x18b38c[_0x4d8180],util[_0x4733('0x28')]('%s.%s',_0x53e996,_0x4d8180));}}else if(_[_0x4733('0x8f')](_0x18b38c[_0x4d8180])){for(var _0x21172a=0x0;_0x21172a<_0x18b38c[_0x4d8180][_0x4733('0x90')];_0x21172a++){this[_0x4733('0x93')](_0x18b38c[_0x4d8180][_0x21172a],util[_0x4733('0x28')](_0x4733('0x94'),_0x53e996,_0x4d8180+'['+_0x21172a+']'));}}else{if(!_[_0x4733('0x41')](_0x18b38c[_0x4d8180])){this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0x94'),_0x53e996,_0x4d8180),_0x18b38c[_0x4d8180]);}}}}};AGIVertices[_0x4733('0x12')][_0x4733('0x8c')]=function(_0x595d94){try{var _0x2ce46b=JSON[_0x4733('0x60')](_0x595d94);this[_0x4733('0x8d')](_0x2ce46b);return JSON['stringify'](_0x2ce46b);}catch(_0x4b98fd){return this['replaceAllVariables'](_0x595d94);}};AGIVertices[_0x4733('0x12')]['replaceAllVariables']=function(_0x44e357){var _0x359c84=_0x44e357['split']('{');for(var _0xa4fb7=0x1;_0xa4fb7<_0x359c84['length'];_0xa4fb7+=0x1){var _0x225ed7=_0x359c84[_0xa4fb7][_0x4733('0x96')]('}');if(_0x225ed7[_0x4733('0x90')]>0x1){_0x44e357=_0x44e357['replaceAll']('{'+_0x225ed7[0x0]+'}',this['channel']['getVariable'](_0x225ed7[0x0])[_0x4733('0x97')]||_0x225ed7[0x0]);}}if(_0x359c84[_0x4733('0x90')]===0x1){return _0x44e357[_0x4733('0x47')]();}return this[_0x4733('0x91')](_0x44e357);};AGIVertices[_0x4733('0x12')][_0x4733('0x98')]=function(_0x4fd45c,_0x11de09){var _0x32aa25=this['channel'][_0x4733('0x13')](_0x4fd45c);if(_0x32aa25[_0x4733('0x99')]===-0x1){return _0x32aa25;}logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x9a'),_0x11de09,_0x32aa25[_0x4733('0x97')]));return this[_0x4733('0x10')][_0x4733('0x95')](_0x11de09,_0x32aa25['extra']);};AGIVertices[_0x4733('0x12')][_0x4733('0x9b')]=function(_0x56d626){return _0x56d626&&_0x56d626!=='0'&&_0x56d626!=='-1'&&_0x56d626!=='';};AGIVertices[_0x4733('0x12')][_0x4733('0x9c')]=function(_0x277d4b){this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x277d4b,'-');_0x277d4b[_0x4733('0x9d')]=_0x277d4b['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x5b8e16){logger[_0x4733('0x2e')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5b8e16[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x5b8e16[_0x4733('0x53')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xa0'));}var _0x4a5b46='\x22'+_0x5b8e16['text']+'\x22';if(this[_0x4733('0x9b')](_0x5b8e16[_0x4733('0x6a')])){_0x4a5b46+=','+_0x5b8e16['options'];}var _0x1e5532=this[_0x4733('0x10')]['exec'](_0x4733('0xa1'),_0x4a5b46);if(_0x1e5532[_0x4733('0x99')]===-0x1){return _0x1e5532;}return this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0xa2'),_0x4a5b46));};AGIVertices[_0x4733('0x12')][_0x4733('0xa3')]=function(_0x315840){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xa4'),_0x315840['label']));if(!this['isConfigured'](_0x315840[_0x4733('0xa5')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xa6'));}var _0x2bff1d=_0x315840[_0x4733('0xa5')];if(this[_0x4733('0x9b')](_0x315840['options'])){_0x2bff1d+=','+_0x315840[_0x4733('0x6a')];}var _0x21a610=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0xa8'),_0x2bff1d);if(_0x21a610[_0x4733('0x99')]===-0x1){return _0x21a610;}var _0x3cea22=this[_0x4733('0x98')](_0x4733('0xa9'),_0x4733('0xaa'));if(_0x3cea22['result']===-0x1){return _0x3cea22;}var _0x295400=this[_0x4733('0x98')]('RECOG_INPUT()',_0x4733('0xab'));if(_0x295400[_0x4733('0x99')]===-0x1){return _0x295400;}var _0x1882bb=this['getAndSetVariable'](_0x4733('0xac'),_0x4733('0xad'));if(_0x1882bb[_0x4733('0x99')]===-0x1){return _0x1882bb;}return this['channel']['noop'](util[_0x4733('0x28')](_0x4733('0xae'),_0x2bff1d));};AGIVertices[_0x4733('0x12')]['agi']=function(_0x307579){logger[_0x4733('0x2e')](util['format'](_0x4733('0xaf'),_0x307579[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x6')]([_0x307579[_0x4733('0xb0')],_0x307579[_0x4733('0xb1')]]);};AGIVertices['prototype'][_0x4733('0xb2')]=function(_0x19f744){logger['info'](util[_0x4733('0x28')](_0x4733('0xb3'),_0x19f744[_0x4733('0x9e')]));if(this[_0x4733('0x9b')](_0x19f744[_0x4733('0x5c')])){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xb4'),_0x19f744[_0x4733('0x5c')]));var _0x418cfe=this[_0x4733('0x10')]['wait'](_0x19f744['timeout']);if(_0x418cfe[_0x4733('0x99')]===-0x1){return _0x418cfe;}}return this[_0x4733('0x10')][_0x4733('0xb2')]();};AGIVertices[_0x4733('0x12')][_0x4733('0xb5')]=function(_0x3d9829){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xb6'),_0x3d9829[_0x4733('0x9e')]));if(!this['isConfigured'](_0x3d9829[_0x4733('0xb7')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x3d9829,_0x4733('0xb8'));}_0x3d9829[_0x4733('0x45')]=moment();if(this[_0x4733('0x9b')](_0x3d9829[_0x4733('0xb9')])){_0x3d9829[_0x4733('0x45')]=moment()[_0x4733('0xba')](_0x3d9829[_0x4733('0xb9')],_0x4733('0xbb'));}if(!this[_0x4733('0x9b')](_0x3d9829[_0x4733('0x48')])){_0x3d9829[_0x4733('0x48')]=0x2;}this[_0x4733('0x40')][_0x4733('0x63')](this,_0x3d9829);return this['channel']['noop'](util['format'](_0x4733('0xbc'),_0x3d9829[_0x4733('0x44')],_0x3d9829[_0x4733('0xb7')],_0x3d9829[_0x4733('0x45')]));};AGIVertices[_0x4733('0x12')][_0x4733('0xbd')]=function(_0x4e4a4c){logger[_0x4733('0x2e')](util['format'](_0x4733('0xbe'),_0x4e4a4c[_0x4733('0x9e')]));var _0x47c73e=this[_0x4733('0x10')]['exec'](_0x4e4a4c['application'],_0x4e4a4c[_0x4733('0x6a')]);if(_0x47c73e['result']===-0x1){return _0x47c73e;}return this[_0x4733('0x10')]['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x4e4a4c['application'],_0x4e4a4c[_0x4733('0x6a')]));};AGIVertices['prototype'][_0x4733('0xbf')]=function(_0x1d0aaf){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xc0'),_0x1d0aaf['label']));if(!this['isConfigured'](_0x1d0aaf[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')]('no\x20text\x20configured');}var _0x3a99e5='\x22'+_0x1d0aaf['text']+'\x22';if(this[_0x4733('0x9b')](_0x1d0aaf[_0x4733('0x6a')])){_0x3a99e5+=','+_0x1d0aaf[_0x4733('0x6a')];}var _0x39df2a=this[_0x4733('0x10')]['exec'](_0x4733('0xa1'),_0x3a99e5);if(_0x39df2a[_0x4733('0x99')]===-0x1){return _0x39df2a;}return this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xa2'),_0x3a99e5));};AGIVertices['prototype'][_0x4733('0xc1')]=function(_0x24f29d){logger[_0x4733('0x2e')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x24f29d['label']));if(!this[_0x4733('0x9b')](_0x24f29d[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')](_0x4733('0xa0'));}var _0x1596bd='\x22'+_0x24f29d[_0x4733('0x53')]+'\x22';if(this['isConfigured'](_0x24f29d[_0x4733('0x6a')])){_0x1596bd+=','+_0x24f29d[_0x4733('0x6a')];}var _0x200e73=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0xa1'),_0x1596bd);if(_0x200e73[_0x4733('0x99')]===-0x1){return _0x200e73;}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xa2'),_0x1596bd));};AGIVertices[_0x4733('0x12')]['lumenvoxasr']=function(_0x434bd6){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xc2'),_0x434bd6['label']));if(!this[_0x4733('0x9b')](_0x434bd6[_0x4733('0xa5')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20grammar\x20configured');}var _0x52b253=_0x434bd6['grammar'];if(this[_0x4733('0x9b')](_0x434bd6['options'])){_0x52b253+=','+_0x434bd6[_0x4733('0x6a')];}var _0x23c7e1=this['channel'][_0x4733('0xa7')]('MRCPRecog',_0x52b253);if(_0x23c7e1[_0x4733('0x99')]===-0x1){return _0x23c7e1;}var _0x531529=this['getAndSetVariable'](_0x4733('0xa9'),_0x4733('0xc3'));if(_0x531529['result']===-0x1){return _0x531529;}var _0x3f0afa=this['getAndSetVariable'](_0x4733('0xc4'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x3f0afa[_0x4733('0x99')]===-0x1){return _0x3f0afa;}var _0x5156a0=this[_0x4733('0x98')](_0x4733('0xac'),_0x4733('0xc5'));if(_0x5156a0[_0x4733('0x99')]===-0x1){return _0x5156a0;}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xae'),_0x52b253));};AGIVertices['prototype'][_0x4733('0xc6')]=function(_0x1f0018){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xc7'),_0x1f0018['label']));if(!this[_0x4733('0x9b')](_0x1f0018[_0x4733('0xa5')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xa6'));}var _0x59bd31=_0x1f0018[_0x4733('0xa5')];if(this[_0x4733('0x9b')](_0x1f0018[_0x4733('0x6a')])){_0x59bd31+=','+_0x1f0018[_0x4733('0x6a')];}var _0x52e377=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0xa8'),_0x59bd31);if(_0x52e377[_0x4733('0x99')]===-0x1){return _0x52e377;}var _0x626bb0=this[_0x4733('0x98')]('RECOG_CONFIDENCE()',_0x4733('0xc8'));if(_0x626bb0['result']===-0x1){return _0x626bb0;}var _0x462e1c=this['getAndSetVariable'](_0x4733('0xc4'),'SESTEK_ASR_TRANSCRIPT');if(_0x462e1c[_0x4733('0x99')]===-0x1){return _0x462e1c;}var _0x386412=this[_0x4733('0x98')]('RECOG_INSTANCE()',_0x4733('0xc9'));if(_0x386412['result']===-0x1){return _0x386412;}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0x59bd31));};AGIVertices[_0x4733('0x12')]['database']=function(_0x149eca){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x149eca['label']));if(!this[_0x4733('0x9b')](_0x149eca[_0x4733('0xca')])){return this[_0x4733('0x10')]['error'](_0x149eca,_0x4733('0xcb'));}var _0x57409f=this['getSquareOdbc'][_0x4733('0x63')](this,_0x149eca[_0x4733('0xca')]);if(!_0x57409f){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x149eca,'no\x20odbc\x20database\x20found');}if(!this['isConfigured'](_0x149eca['query'])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x149eca,_0x4733('0xcc'));}var _0x3887a5=_0x149eca['query'][_0x4733('0xcd')](/(\r\n|\n|\r)/gm,'\x20');this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('query:\x20%s',_0x3887a5));var _0x1e52ae=this[_0x4733('0x2a')][_0x4733('0x63')](this,_0x57409f,_0x3887a5);this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x149eca,_0x3887a5);if(!this[_0x4733('0x9b')](_0x149eca[_0x4733('0xce')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x741623=this[_0x4733('0x13')][_0x4733('0x63')](this,_0x149eca[_0x4733('0xce')]);if(!_0x741623){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x149eca,_0x4733('0xcf'));}var _0x5a6e3c=this;_0x1e52ae[_0x4733('0xd0')](function(_0x5e5345,_0x4068a5){Object[_0x4733('0xd1')](_0x5e5345)[_0x4733('0xd0')](function(_0x302625){_0x5a6e3c['channel'][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0xd2'),_0x741623,_0x4068a5,_0x302625),_0x5e5345[_0x302625]);});});this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0xd3'),_0x741623),_0x1e52ae[_0x4733('0x90')]);return this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0xd4'),_0x741623));};AGIVertices[_0x4733('0x12')][_0x4733('0xd5')]=function(_0x1ea295){logger[_0x4733('0xd6')](util[_0x4733('0x28')](_0x4733('0xd7'),_0x1ea295[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x1ea295['sip_id'])){return this[_0x4733('0x10')]['error'](_0x1ea295,_0x4733('0xd8'));}var _0xa0d7e2=this[_0x4733('0x1c')][_0x4733('0x63')](this,_0x1ea295[_0x4733('0xd9')]);if(!_0xa0d7e2){return this['channel']['error'](_0x1ea295,_0x4733('0xda'));}var _0x5a39c9=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0xdb'),[util[_0x4733('0x28')](_0x4733('0xdc'),_0xa0d7e2),_0x1ea295[_0x4733('0x5c')],_0x1ea295[_0x4733('0xdd')],_0x1ea295[_0x4733('0x64')]]);if(_0x5a39c9['result']===-0x1){return _0x5a39c9;}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xde'),_0x4733('0xdb')));};AGIVertices[_0x4733('0x12')][_0x4733('0xdf')]=function(_0x2fd129){logger['info'](util[_0x4733('0x28')](_0x4733('0xe0'),_0x2fd129[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x2fd129['key'])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xe1'));}if(!this[_0x4733('0x9b')](_0x2fd129[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')](_0x4733('0xa0'));}this[_0x4733('0x10')][_0x4733('0xe2')]=!![];this[_0x4733('0x34')](_0x2fd129);this[_0x4733('0x3f')](_0x2fd129[_0x4733('0x53')],'in','','');this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xe3'),_0x2fd129[_0x4733('0x53')]));var _0x2b19a7=this['googleDialogflow'][_0x4733('0x63')](this,_0x2fd129);if(_0x2b19a7){for(var _0x57ed5d in _0x2b19a7){if(_0x2b19a7['hasOwnProperty'](_0x57ed5d)){this['channel'][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0xe4'),_0x57ed5d[_0x4733('0xe5')]()),_0x2b19a7[_0x57ed5d]);}}this[_0x4733('0x3f')](_0x2b19a7[_0x4733('0xe6')],_0x4733('0xe7'),_0x4733('0xdf'),'');return this[_0x4733('0x10')]['noop'](util['format'](_0x4733('0xe8'),_0x2b19a7[_0x4733('0xe6')]));}return this[_0x4733('0x10')]['error'](_0x2fd129,_0x4733('0xe9'));};AGIVertices['prototype'][_0x4733('0xea')]=function(_0xdbd83c){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0xeb'),_0xdbd83c[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0xdbd83c['dialogflowV2_project_id'])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20project_id\x20configured');}if(!this[_0x4733('0x9b')](_0xdbd83c[_0x4733('0x6f')])){return this['channel']['noop'](_0x4733('0xec'));}if(!this[_0x4733('0x9b')](_0xdbd83c[_0x4733('0x70')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xed'));}if(!this[_0x4733('0x9b')](_0xdbd83c[_0x4733('0x71')])){return this[_0x4733('0x10')]['noop'](_0x4733('0xee'));}if(!this['isConfigured'](_0xdbd83c[_0x4733('0x53')])){return this[_0x4733('0x10')]['noop'](_0x4733('0xa0'));}this['channel'][_0x4733('0xe2')]=!![];this[_0x4733('0x34')](_0xdbd83c);this[_0x4733('0x3f')](_0xdbd83c[_0x4733('0x53')],'in','','');this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0xef'),_0xdbd83c[_0x4733('0x53')]));var _0x4309f1=this['googleDialogflowV2'][_0x4733('0x63')](this,_0xdbd83c);if(_0x4309f1){for(var _0x246a7f in _0x4309f1){if(_0x4309f1[_0x4733('0x8b')](_0x246a7f)){if(_0x246a7f!==_0x4733('0xf0')){this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0xe4'),_0x246a7f['toUpperCase']()),_0x4309f1[_0x246a7f]);}}}this[_0x4733('0x3f')](_0x4309f1[_0x4733('0xe6')],_0x4733('0xe7'),'dialogflowV2',_0x4309f1[_0x4733('0xf0')]);return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xf1'),_0x4309f1[_0x4733('0xe6')]));}return this[_0x4733('0x10')][_0x4733('0x2c')](_0xdbd83c,_0x4733('0xf2'));};AGIVertices[_0x4733('0x12')][_0x4733('0xf3')]=function(_0x12a6ca){logger[_0x4733('0x2e')](util['format'](_0x4733('0xf4'),_0x12a6ca[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x12a6ca[_0x4733('0xf5')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x4733('0x9b')](_0x12a6ca['username'])){return this['channel'][_0x4733('0x9f')](_0x4733('0xf6'));}if(!this[_0x4733('0x9b')](_0x12a6ca[_0x4733('0xf7')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20password\x20configured');}if(!this[_0x4733('0x9b')](_0x12a6ca[_0x4733('0xf8')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xa0'));}this[_0x4733('0x10')][_0x4733('0xe2')]=!![];this[_0x4733('0x34')](_0x12a6ca);this[_0x4733('0x3f')](_0x12a6ca[_0x4733('0x53')],'in','','');this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xf9'),_0x12a6ca['text']));var _0x37f2f5=this[_0x4733('0x72')][_0x4733('0x63')](this,_0x12a6ca);if(_0x37f2f5){for(var _0x3ccf07 in _0x37f2f5){if(_0x37f2f5[_0x4733('0x8b')](_0x3ccf07)){this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0xfa'),_0x3ccf07[_0x4733('0xe5')]()),_0x37f2f5[_0x3ccf07]);}}this[_0x4733('0x3f')](_0x37f2f5['speech'],_0x4733('0xe7'),_0x4733('0xf3'),'');if(_0x37f2f5['audiofile']){this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0xfb'),_0x37f2f5['audiofile']));var _0x562c4d=this['channel'][_0x4733('0xfc')](_0x37f2f5[_0x4733('0xfd')]);try{fs[_0x4733('0xfe')](_0x37f2f5[_0x4733('0xfd')]+_0x4733('0xff'));}catch(_0x4eed2a){logger[_0x4733('0x2c')](_0x4eed2a);}return _0x562c4d;}else{return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x100'),_0x37f2f5[_0x4733('0xe6')]));}}return this['channel'][_0x4733('0x2c')](_0x12a6ca,_0x4733('0x101'));};AGIVertices[_0x4733('0x12')]['end']=function(_0x1f2224){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x102'),_0x1f2224[_0x4733('0x9e')]));return this['channel']['noop']('end');};AGIVertices[_0x4733('0x12')]['ext_dial']=function(_0x2d1e04){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x103'),_0x2d1e04[_0x4733('0x9e')]));var _0xc8de1a='';if(_0x2d1e04[_0x4733('0x104')]){if(!this[_0x4733('0x9b')](_0x2d1e04[_0x4733('0x104')])){return this['channel'][_0x4733('0x2c')](_0x2d1e04,_0x4733('0x105'));}else{var _0x4513a5=parseInt(_0x2d1e04[_0x4733('0x104')],0xa);if(isNaN(_0x4513a5)){_0xc8de1a=_0x2d1e04[_0x4733('0x104')];}else{_0xc8de1a=this[_0x4733('0x106')][_0x4733('0x63')](this,_0x2d1e04[_0x4733('0x104')]);if(!_0xc8de1a){return this[_0x4733('0x10')]['error'](_0x2d1e04,_0x4733('0x107'));}}}}else if(_0x2d1e04[_0x4733('0x108')]){_0xc8de1a=_0x2d1e04[_0x4733('0x108')];}else{return this[_0x4733('0x10')][_0x4733('0x2c')](_0x2d1e04,_0x4733('0x105'));}var _0x565c69=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0xdb'),[util[_0x4733('0x28')]('SIP/%s/%s',_0xc8de1a,_0x2d1e04[_0x4733('0x44')]),_0x2d1e04[_0x4733('0x5c')],_0x2d1e04[_0x4733('0xdd')],_0x2d1e04[_0x4733('0x64')]]);if(_0x565c69['result']===-0x1){return _0x565c69;}return this[_0x4733('0x10')][_0x4733('0x9f')](util['format']('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x4733('0x12')]['finally']=function(_0x4ea8e3){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x109'),_0x4ea8e3[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x10a'));};AGIVertices[_0x4733('0x12')][_0x4733('0xe')]=function(_0x4a0917){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x10b'),_0x4a0917[_0x4733('0x9e')]));if(_0x4a0917[_0x4733('0x9d')]===0x0){return this[_0x4733('0x9c')](_0x4a0917);}_0x4a0917['retry']-=0x1;if(!this[_0x4733('0x9b')](_0x4a0917['file_id'])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4a0917,_0x4733('0x10c'));}var _0x1c1b3e=this[_0x4733('0x10d')][_0x4733('0x63')](this,_0x4a0917[_0x4733('0x10e')]);if(!_0x1c1b3e){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4a0917,'no\x20file\x20audio\x20found');}if(!this['isConfigured'](_0x4a0917['variable_id'])){return this[_0x4733('0x10')]['error'](_0x4733('0x10f'));}var _0x3bcc15=this[_0x4733('0x10')][_0x4733('0x110')](_0x1c1b3e,_0x4a0917[_0x4733('0x111')],_0x4a0917[_0x4733('0x112')]);var _0xf043ba=_0x3bcc15[_0x4733('0x99')]?_0x3bcc15[_0x4733('0x99')]['toString']():'';logger['info'](_0x4733('0x113'),JSON[_0x4733('0x66')](_0x3bcc15));if(_0x3bcc15[_0x4733('0x99')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x4a0917,_0xf043ba);return _0x3bcc15;}else if(_0x3bcc15[_0x4733('0x97')]==='timeout'){_0x3bcc15[_0x4733('0x99')]=_0xf043ba[_0x4733('0x90')]>=parseInt(_0x4a0917[_0x4733('0x114')])?'x':'i';}else{_0x3bcc15[_0x4733('0x99')]=_0xf043ba[_0x4733('0x90')]>=parseInt(_0x4a0917[_0x4733('0x114')])&&_0xf043ba[_0x4733('0x90')]<=parseInt(_0x4a0917[_0x4733('0x112')])?'x':'i';}var _0x3c43f0=this[_0x4733('0x13')]['sync'](this,_0x4a0917[_0x4733('0xce')]);if(!_0x3c43f0){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4a0917,_0x4733('0xcf'));}this[_0x4733('0x10')][_0x4733('0x95')](_0x3c43f0,_0xf043ba);if(this[_0x4733('0x9b')](_0x4a0917['hiddendigitsnum'])){var _0x353c08=parseInt(_0x4a0917[_0x4733('0x115')],0xa);var _0x34de9d=rs[_0x4733('0x116')]({'charset':'*','length':_0x353c08});var _0x3c4d68=_0xf043ba['length'];if(_0x3c4d68>0x0){if(_0x3c4d68>_0x353c08){this[_0x4733('0x34')][_0x4733('0x63')](this,_0x4a0917,_0x4a0917[_0x4733('0x117')]===_0x4733('0x118')?_0x34de9d+_0xf043ba['substr'](_0x353c08):_0xf043ba[_0x4733('0x119')](0x0,_0x3c4d68-_0x353c08)+_0x34de9d);}else{this[_0x4733('0x34')]['sync'](this,_0x4a0917,rs['generate']({'charset':'*','length':_0x3c4d68}));}}else{this[_0x4733('0x34')][_0x4733('0x63')](this,_0x4a0917,'');}}else{this[_0x4733('0x34')][_0x4733('0x63')](this,_0x4a0917,_0xf043ba);}return _0x3bcc15;};AGIVertices[_0x4733('0x12')][_0x4733('0xf')]=function(_0x5082ee){logger['info'](util[_0x4733('0x28')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x5082ee[_0x4733('0x9e')]));return this[_0x4733('0xe')](_0x5082ee);};AGIVertices[_0x4733('0x12')][_0x4733('0x11a')]=function(_0x25a70a){logger['info'](util['format'](_0x4733('0x11b'),_0x25a70a[_0x4733('0x9e')]));this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x25a70a,_0x25a70a[_0x4733('0x11c')]);return this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0x11d'),_0x25a70a[_0x4733('0x11c')]));};AGIVertices['prototype'][_0x4733('0x11e')]=function(_0x4130be){logger['info'](util[_0x4733('0x28')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x4130be[_0x4733('0x9e')]));if(!this['isConfigured'](_0x4130be['aws_access_key_id'])||!this[_0x4733('0x9b')](_0x4130be[_0x4733('0x7c')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x4733('0x9b')](_0x4130be[_0x4733('0x53')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xa0'));}this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x11f'),_0x4130be[_0x4733('0x53')]));var _0x488041=this[_0x4733('0x7a')]['sync'](this,_0x4130be);if(_0x488041){this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x120'),_0x488041));var _0x536c61=this[_0x4733('0x10')][_0x4733('0xfc')](_0x488041);try{fs[_0x4733('0xfe')](_0x488041+_0x4733('0xff'));}catch(_0x36a3a3){logger[_0x4733('0x2c')](_0x36a3a3);}return _0x536c61;}return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4130be,_0x4733('0x121'));};AGIVertices['prototype']['awslex']=function(_0x276901){logger['info'](util[_0x4733('0x28')](_0x4733('0x122'),_0x276901[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x276901[_0x4733('0x7b')])||!this['isConfigured'](_0x276901['aws_secret_access_key'])){return this['channel'][_0x4733('0x9f')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x4733('0x9b')](_0x276901[_0x4733('0x82')])){return this['channel'][_0x4733('0x9f')]('no\x20bot\x20name\x20configured');}if(!this[_0x4733('0x9b')](_0x276901[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')]('no\x20text\x20configured');}this[_0x4733('0x10')][_0x4733('0xe2')]=!![];this[_0x4733('0x34')](_0x276901);this[_0x4733('0x3f')](_0x276901[_0x4733('0x53')],'in','','');this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('Trying\x20Amazon\x20Lex:\x20%s',_0x276901[_0x4733('0x53')]));var _0x4e4a8e=this[_0x4733('0x80')][_0x4733('0x63')](this,_0x276901);if(_0x4e4a8e){for(var _0x43ec24 in _0x4e4a8e){if(_0x4e4a8e[_0x4733('0x8b')](_0x43ec24)&&_[_0x4733('0x123')](_0x4e4a8e[_0x43ec24])){this['channel']['setVariable'](util['format']('AWS_LEX_%s',_0x43ec24['toUpperCase']()),_0x4e4a8e[_0x43ec24]);}}if(_[_0x4733('0x41')](_0x4e4a8e['message'])){return this[_0x4733('0x10')]['noop'](_0x4733('0x124'));}else{this[_0x4733('0x3f')](_0x4e4a8e['message'],_0x4733('0xe7'),_0x4733('0x125'),'');return this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x126'),_0x4e4a8e['message']));}}return this[_0x4733('0x10')][_0x4733('0x2c')](_0x276901,_0x4733('0x127'));};AGIVertices['prototype'][_0x4733('0x128')]=function(_0x4ea255){logger[_0x4733('0x2e')](util['format'](_0x4733('0x129'),_0x4ea255[_0x4733('0x9e')],_0x4ea255['timeout']));if(!this[_0x4733('0x9b')](_0x4ea255['key'])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xe1'));}var _0x31bb98=_0x4733('0x12a');var _0x4c649f=util[_0x4733('0x28')](_0x4733('0x12b'),FILES_PATH,rs[_0x4733('0x116')](0x4));var _0xaa250f=util[_0x4733('0x28')]('%s.%s',_0x4c649f,_0x31bb98);var _0x47efad=!![];if(_0x4ea255['beep']==='NOBEEP'){_0x47efad=![];}var _0xea274e=this[_0x4733('0x10')]['recordFile'](_0x4c649f,_0x31bb98,_0x4ea255[_0x4733('0x12c')],_0x4ea255['timeout'],undefined,_0x47efad);if(_0xea274e[_0x4733('0x99')]!==-0x1){this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x12d'),_0xaa250f));var _0x364a27=this[_0x4733('0x83')][_0x4733('0x63')](this,_0x4ea255,_0xaa250f);if(_0x364a27){for(var _0x203ccb in _0x364a27){if(_0x364a27[_0x4733('0x8b')](_0x203ccb)){this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')]('GOOGLE_ASR_%s',_0x203ccb[_0x4733('0xe5')]()),_0x364a27[_0x203ccb]);}}return this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')]('GoogleASR\x20Result\x20%s',JSON[_0x4733('0x66')](_0x364a27)));}}return _0xea274e;};AGIVertices[_0x4733('0x12')][_0x4733('0x12e')]=function(_0x55001c){logger['info'](util[_0x4733('0x28')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x55001c[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x55001c[_0x4733('0x86')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x12f'));}if(!this[_0x4733('0x9b')](_0x55001c[_0x4733('0x87')])){return this[_0x4733('0x10')]['noop'](_0x4733('0x130'));}var _0x2af563=_0x4733('0x12a');var _0x3bca53=util[_0x4733('0x28')]('%s/recordings/%s',FILES_PATH,rs[_0x4733('0x116')](0x4));var _0x4ab58f=util[_0x4733('0x28')](_0x4733('0x94'),_0x3bca53,_0x2af563);var _0x161fcf=!![];if(_0x55001c[_0x4733('0x131')]===_0x4733('0x132')){_0x161fcf=![];}var _0x2ca366=this['channel'][_0x4733('0x133')](_0x3bca53,_0x2af563,_0x55001c[_0x4733('0x12c')],_0x55001c[_0x4733('0x5c')],undefined,_0x161fcf);if(_0x2ca366['result']!==-0x1){this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x134'),_0x4ab58f));var _0x172884=this['tildeASR'][_0x4733('0x63')](this,_0x55001c,_0x4ab58f);if(_0x172884){for(var _0x3480e4 in _0x172884){if(_0x172884[_0x4733('0x8b')](_0x3480e4)){this[_0x4733('0x10')]['setVariable'](util[_0x4733('0x28')](_0x4733('0x135'),_0x3480e4[_0x4733('0xe5')]()),_0x172884[_0x3480e4]);}}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x136'),JSON[_0x4733('0x66')](_0x172884)));}}return _0x2ca366;};AGIVertices[_0x4733('0x12')][_0x4733('0x137')]=function(_0x4fde82){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x138'),_0x4fde82[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x139')](_0x4fde82[_0x4733('0x3b')],_0x4fde82[_0x4733('0x13a')],_0x4fde82[_0x4733('0x13b')]);};AGIVertices[_0x4733('0x12')][_0x4733('0x13c')]=function(_0xc87f8f){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x13d'),_0xc87f8f[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0xc87f8f[_0x4733('0x13e')])){return this[_0x4733('0x10')]['error'](_0xc87f8f,_0x4733('0x13f'));}try{var _0x4264c6=eval(_0xc87f8f[_0x4733('0x13e')])?_0x4733('0x140'):_0x4733('0x141');this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x142'),_0xc87f8f['condition'],_0x4264c6));return{'code':0xc8,'result':_0x4264c6};}catch(_0x26d524){return{'code':0xc8,'result':_0x4733('0x141')};}};AGIVertices[_0x4733('0x12')][_0x4733('0x143')]=function(_0x4b9902){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x144'),_0x4b9902[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x4b9902[_0x4733('0x145')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4b9902,_0x4733('0x146'));}var _0xbb9cd8=this[_0x4733('0x23')][_0x4733('0x63')](this,_0x4b9902[_0x4733('0x145')]);if(!_0xbb9cd8){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x4b9902,'no\x20intervals\x20found');}for(var _0x328bca=0x0;_0x328bca<_0xbb9cd8[_0x4733('0x90')];_0x328bca+=0x1){var _0x300570=this[_0x4733('0x10')]['getVariable'](util['format']('IFTIME(%s?true:false)',_0xbb9cd8[_0x328bca]));if(_0x300570['result']===-0x1){return _0x300570;}logger[_0x4733('0x2e')](util['format'](_0x4733('0x147'),_0xbb9cd8[_0x328bca],_0x300570[_0x4733('0x97')]));if(_0x300570[_0x4733('0x97')]===_0x4733('0x140')){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x147'),_0xbb9cd8[_0x328bca],_0x4733('0x140')));this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('IFTIME\x20%s\x20%s',_0xbb9cd8[_0x328bca],'true'));return{'code':0xc8,'result':'true'};}else{logger['info'](util[_0x4733('0x28')](_0x4733('0x147'),_0xbb9cd8[_0x328bca],_0x4733('0x141')));this['channel'][_0x4733('0x9f')](util['format'](_0x4733('0x147'),_0xbb9cd8[_0x328bca],_0x4733('0x141')));}}return{'code':0xc8,'result':_0x4733('0x141')};};AGIVertices[_0x4733('0x12')][_0x4733('0x148')]=function(_0x223cc5){logger[_0x4733('0x2e')](util['format'](_0x4733('0x149'),_0x223cc5[_0x4733('0x9e')]));return this[_0x4733('0x10')]['hangup']();};AGIVertices['prototype']['ispeechasr']=function(_0x15445d){logger['info'](util['format']('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x15445d[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x15445d[_0x4733('0x6c')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0xe1'));}var _0x423780='wav';var _0x56df90=util['format'](_0x4733('0x12b'),FILES_PATH,rs[_0x4733('0x116')](0x4));var _0x3d2dc5=util['format']('%s.%s',_0x56df90,_0x423780);var _0x498dee=!![];if(_0x15445d[_0x4733('0x131')]==='NOBEEP'){_0x498dee=![];}var _0x497578=this[_0x4733('0x10')][_0x4733('0x133')](_0x56df90,_0x423780,_0x15445d[_0x4733('0x12c')],_0x15445d[_0x4733('0x5c')],undefined,_0x498dee);if(_0x497578[_0x4733('0x99')]!==-0x1){this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('ispeech\x20%s\x20file\x20created',_0x3d2dc5));var _0x25ad9a=this[_0x4733('0x77')][_0x4733('0x63')](this,_0x15445d,_0x3d2dc5);if(_0x25ad9a){for(var _0x5a9c63 in _0x25ad9a){if(_0x25ad9a[_0x4733('0x8b')](_0x5a9c63)){this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')]('ISPEECH_ASR_%s',_0x5a9c63[_0x4733('0xe5')]()),_0x25ad9a[_0x5a9c63]);}}return this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0x14a'),JSON[_0x4733('0x66')](_0x25ad9a)));}}return _0x497578;};AGIVertices['prototype']['ispeechtts']=function(_0x5beb5d){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x14b'),_0x5beb5d[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x5beb5d[_0x4733('0x6c')])){return this[_0x4733('0x10')][_0x4733('0x9f')]('no\x20key\x20configured');}if(!this[_0x4733('0x9b')](_0x5beb5d[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')]('no\x20text\x20configured');}this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x14c'),_0x5beb5d[_0x4733('0x53')]));var _0x258020=this['ispeechTTS'][_0x4733('0x63')](this,_0x5beb5d);if(_0x258020){this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0x14d'),_0x258020));var _0x2bab36=this[_0x4733('0x10')][_0x4733('0xfc')](_0x258020,_0x5beb5d[_0x4733('0x12c')]);try{fs[_0x4733('0xfe')](_0x258020+_0x4733('0xff'));}catch(_0x3af23a){logger['error'](_0x3af23a);}return _0x2bab36;}return this[_0x4733('0x10')][_0x4733('0x2c')](_0x5beb5d,_0x4733('0x14e'));};AGIVertices['prototype']['login']=function(_0x25895e){logger['info'](util[_0x4733('0x28')](_0x4733('0x14f'),_0x25895e[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x25895e['findBy'])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x25895e,'no\x20find\x20by\x20configured');}logger[_0x4733('0x2e')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x4733('0x10')][_0x4733('0x38')],_0x25895e['findBy']));var _0x90bd67=this[_0x4733('0x4e')][_0x4733('0x63')](this,_0x25895e['findBy']);if(_0x90bd67){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x150'),this[_0x4733('0x10')]['callerid'],_0x25895e[_0x4733('0x151')]));this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x150'),this[_0x4733('0x10')]['callerid'],_0x25895e[_0x4733('0x151')]));return{'code':0xc8,'result':_0x4733('0x152')};}else{logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x153'),this[_0x4733('0x10')][_0x4733('0x38')],_0x25895e[_0x4733('0x151')]));this['channel']['noop'](util[_0x4733('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x4733('0x38')],_0x25895e[_0x4733('0x151')]));return{'code':0xc8,'result':_0x4733('0x154')};}};AGIVertices[_0x4733('0x12')][_0x4733('0x155')]=function(_0x302804){logger['info'](util[_0x4733('0x28')](_0x4733('0x156'),_0x302804[_0x4733('0x9e')]));if(!this['isConfigured'](_0x302804[_0x4733('0x151')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x302804,'no\x20find\x20by\x20configured');}logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x157'),this[_0x4733('0x10')][_0x4733('0x38')],_0x302804[_0x4733('0x151')]));var _0x5edb1e=this[_0x4733('0x4d')][_0x4733('0x63')](this,_0x302804[_0x4733('0x151')]);if(_0x5edb1e){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x4733('0x38')],_0x302804[_0x4733('0x151')]));this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4733('0x10')]['callerid'],_0x302804['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x4733('0x10')][_0x4733('0x38')],_0x302804[_0x4733('0x151')]));this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x153'),this[_0x4733('0x10')]['callerid'],_0x302804['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x4733('0x12')][_0x4733('0x158')]=function(_0x41ab5b){logger['info'](util['format'](_0x4733('0x159'),_0x41ab5b[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x41ab5b[_0x4733('0x15a')])){return this[_0x4733('0x10')]['error'](_0x41ab5b,_0x4733('0x15b'));}this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x15c'),_0x41ab5b[_0x4733('0x15a')]));var _0xb81e2d=eval(_0x41ab5b[_0x4733('0x15a')]);if(!this[_0x4733('0x9b')](_0x41ab5b[_0x4733('0xce')])){return this[_0x4733('0x10')]['noop'](_0x4733('0x10f'));}var _0x609fbd=this[_0x4733('0x13')]['sync'](this,_0x41ab5b[_0x4733('0xce')]);if(!_0x609fbd){return this['channel'][_0x4733('0x2c')](_0x41ab5b,'no\x20variable\x20found');}if(_['isArray'](_0xb81e2d)){var _0x14f5a1=this;_0xb81e2d['forEach'](function(_0x146fc0,_0x412bea){_0x14f5a1[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0x15d'),_0x609fbd,_0x412bea),_0x146fc0);});return this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0x15e'),_0x609fbd));}else{return this[_0x4733('0x10')][_0x4733('0x95')](_0x609fbd,_0xb81e2d);}};AGIVertices[_0x4733('0x12')][_0x4733('0xd')]=function(_0x21a43f){logger[_0x4733('0x2e')](util['format']('Enter\x20in\x20MENU\x20(%s)\x20block',_0x21a43f[_0x4733('0x9e')]));if(_0x21a43f[_0x4733('0x9d')]===0x0){return this[_0x4733('0x9c')](_0x21a43f);}_0x21a43f[_0x4733('0x9d')]-=0x1;if(!this['isConfigured'](_0x21a43f[_0x4733('0x10e')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x21a43f,'no\x20file\x20audio\x20selected');}var _0x3c2088=this[_0x4733('0x10d')][_0x4733('0x63')](this,_0x21a43f['file_id']);if(!_0x3c2088){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x21a43f,_0x4733('0x15f'));}var _0x14262c=this['channel']['getData'](_0x3c2088,_0x21a43f[_0x4733('0x111')],_0x21a43f[_0x4733('0x160')]);var _0x1d4538=_0x14262c['result'];if(_0x14262c['result']===-0x1){this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x21a43f,'-1');return _0x14262c;}else if(_0x14262c[_0x4733('0x97')]===_0x4733('0x5c')){_0x14262c['result']=_0x14262c[_0x4733('0x99')][_0x4733('0x90')]>0x0?_0x14262c[_0x4733('0x99')]:'t';}else if(_[_0x4733('0x92')](_0x14262c[_0x4733('0x99')])){_0x14262c[_0x4733('0x99')]='#';_0x1d4538='#';}if(!this[_0x4733('0x9b')](_0x21a43f['variable_id'])){this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x10f'));}else{var _0x2b21f5=this[_0x4733('0x13')][_0x4733('0x63')](this,_0x21a43f[_0x4733('0xce')]);if(!_0x2b21f5){return this['channel'][_0x4733('0x2c')](_0x21a43f,_0x4733('0xcf'));}this[_0x4733('0x10')][_0x4733('0x95')](_0x2b21f5,_0x1d4538);}this[_0x4733('0x34')][_0x4733('0x63')](this,_0x21a43f,_0x1d4538);return _0x14262c;};AGIVertices[_0x4733('0x12')]['noop']=function(_0x6390d1){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x161'),_0x6390d1[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x9f')](_0x6390d1[_0x4733('0x162')]||_0x6390d1['label']);};AGIVertices[_0x4733('0x12')][_0x4733('0x163')]=function(_0x4bd87f){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x164'),_0x4bd87f[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x4bd87f['findBy'])){return this['channel']['error'](_0x4bd87f,_0x4733('0x165'));}logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x157'),this[_0x4733('0x10')]['callerid'],_0x4bd87f[_0x4733('0x151')]));var _0x1717ad=this[_0x4733('0x166')]['sync'](this,_0x4bd87f[_0x4733('0x167')]);var _0x3d867b=this[_0x4733('0x4a')][_0x4733('0x63')](this,_0x4bd87f[_0x4733('0x151')],_0x1717ad);if(_0x3d867b){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x150'),this[_0x4733('0x10')][_0x4733('0x38')],_0x4bd87f[_0x4733('0x151')]));this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x150'),this[_0x4733('0x10')]['callerid'],_0x4bd87f[_0x4733('0x151')]));return{'code':0xc8,'result':_0x4733('0x152')};}else{logger[_0x4733('0x2e')](util['format'](_0x4733('0x153'),this[_0x4733('0x10')][_0x4733('0x38')],_0x4bd87f['findBy']));this[_0x4733('0x10')]['noop'](util['format'](_0x4733('0x150'),this[_0x4733('0x10')][_0x4733('0x38')],_0x4bd87f['findBy']));return{'code':0xc8,'result':_0x4733('0x154')};}};AGIVertices[_0x4733('0x12')][_0x4733('0x168')]=function(_0x1dfaa9){logger['info'](util['format']('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x1dfaa9['label']));if(!this['isConfigured'](_0x1dfaa9[_0x4733('0x10e')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x1dfaa9,_0x4733('0x10c'));}var _0x35da3f=this[_0x4733('0x10d')][_0x4733('0x63')](this,_0x1dfaa9['file_id']);if(!_0x35da3f){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x1dfaa9,_0x4733('0x15f'));}var _0x4a1fec=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0x169'),[_0x35da3f,_0x1dfaa9[_0x4733('0xdd')]]);if(_0x4a1fec[_0x4733('0x99')]===-0x1){return _0x4a1fec;}return this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x16a'),_0x4733('0x169'),_0x35da3f));};AGIVertices[_0x4733('0x12')][_0x4733('0x16b')]=function(_0x26150f){logger['info'](util[_0x4733('0x28')](_0x4733('0x16c'),_0x26150f[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x26150f[_0x4733('0x16d')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x26150f,_0x4733('0x16e'));}var _0x4ccac5='';var _0x17d60b=parseInt(_0x26150f[_0x4733('0x16d')],0xa);if(isNaN(_0x17d60b)){_0x4ccac5=_0x26150f[_0x4733('0x16d')];}else{_0x4ccac5=this[_0x4733('0x16f')][_0x4733('0x63')](this,_0x26150f['queue_id']);if(!_0x4ccac5){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x26150f,_0x4733('0x170'));}}var _0xb359dc='';if(this['isConfigured'](_0x26150f['file_id'])){var _0x98a8a=this[_0x4733('0x10d')]['sync'](this,_0x26150f[_0x4733('0x10e')]);if(_0x98a8a){_0xb359dc=_0x98a8a;}}this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x26150f,_0x4ccac5);if(_0x26150f[_0x4733('0xdd')][_0x4733('0x171')]('x')<0x0){_0x26150f[_0x4733('0xdd')]+='x';}if(_0x26150f[_0x4733('0xdd')][_0x4733('0x171')]('X')<0x0){_0x26150f['opts']+='X';}this[_0x4733('0x10')]['setVariable']('XMCS-QUEUE',_0x4ccac5?_0x4ccac5[_0x4733('0x172')]():'');var _0x44249c=this[_0x4733('0x10')]['exec'](_0x4733('0x173'),[_0x4ccac5,_0x26150f[_0x4733('0xdd')],_0x26150f[_0x4733('0x64')],_0xb359dc,_0x26150f[_0x4733('0x5c')],_0x26150f[_0x4733('0x6')],_0x26150f[_0x4733('0x174')],_0x26150f[_0x4733('0x175')],'',_0x26150f[_0x4733('0x176')]]);if(_0x44249c[_0x4733('0x99')]===-0x1){return _0x44249c;}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x16a'),_0x4733('0x173'),_0x4ccac5));};AGIVertices[_0x4733('0x12')][_0x4733('0x177')]=function(_0x317eb5){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x317eb5[_0x4733('0x9e')]));var _0x4e41e0=_0x317eb5[_0x4733('0x178')]||_0x4733('0x12a');var _0x174b16=util[_0x4733('0x28')](_0x4733('0x179'),this[_0x4733('0x10')]['uniqueid'],rs['generate'](0x5));var _0x2217a8=util['format']('%s/recordings/%s.%s',FILES_PATH,_0x174b16,_0x4e41e0);var _0x4b8156=util[_0x4733('0x28')]('%s/recordings/%s',FILES_PATH,_0x174b16);this[_0x4733('0x39')][_0x4733('0x63')](this,_0x317eb5,_0x174b16,_0x2217a8);this[_0x4733('0x10')][_0x4733('0x95')](_0x4733('0x17a'),_0x174b16);logger['info'](_0x4733('0x17b'),_0x4b8156,_0x4e41e0,_0x317eb5['escape_digits'],_0x317eb5[_0x4733('0x5c')]);return this[_0x4733('0x10')][_0x4733('0x133')](_0x4b8156,_0x4e41e0,_0x317eb5['escape_digits'],_0x317eb5[_0x4733('0x5c')],undefined,!![]);};AGIVertices['prototype'][_0x4733('0x17c')]=function(_0x2fffd7){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x2fffd7['label']));if(!this[_0x4733('0x9b')](_0x2fffd7[_0x4733('0x64')])){return this['channel'][_0x4733('0x9f')](_0x4733('0x17d'));}var _0xf97a63=this[_0x4733('0x5a')]['sync'](this,_0x2fffd7);logger['info'](util['format'](_0x4733('0x17e'),util[_0x4733('0x17f')](_0xf97a63,{'showHidden':![],'depth':null})));if(!this[_0x4733('0x9b')](_0x2fffd7[_0x4733('0xce')])){return this[_0x4733('0x10')]['noop'](_0x4733('0x180'));}var _0x5e6e76=this[_0x4733('0x13')]['sync'](this,_0x2fffd7[_0x4733('0xce')]);if(!_0x5e6e76){return this[_0x4733('0x10')]['error'](_0x2fffd7,_0x4733('0xcf'));}this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')](_0x4733('0x181'),_0x5e6e76),_0xf97a63['statusCode']?_0xf97a63[_0x4733('0x67')]:_0x4733('0x182'));this[_0x4733('0x10')][_0x4733('0x95')](util[_0x4733('0x28')]('%s_STATUS_MESSAGE',_0x5e6e76),_0xf97a63[_0x4733('0x68')]?_0xf97a63['statusMessage']:'OK');if(_0xf97a63[_0x4733('0x5f')]){try{this[_0x4733('0x93')](_0xf97a63[_0x4733('0x5f')],_0x5e6e76);}catch(_0x36cbeb){logger[_0x4733('0x2c')](util[_0x4733('0x28')](_0x4733('0x183'),_0x5e6e76));}}return this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('variable\x20%s\x20set',_0x5e6e76));};AGIVertices[_0x4733('0x12')][_0x4733('0x184')]=function(_0x50b3f0){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x185'),_0x50b3f0['label']));return this[_0x4733('0x10')][_0x4733('0x186')](_0x50b3f0[_0x4733('0x187')][_0x4733('0xcd')](/\s+/g,''),_0x50b3f0[_0x4733('0x188')]);};AGIVertices[_0x4733('0x12')]['saynumber']=function(_0xa44ae0){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0xa44ae0['label']));return this[_0x4733('0x10')]['sayNumber'](_0xa44ae0[_0x4733('0x5b')]['replace'](/\s+/g,''),_0xa44ae0['escape_digits']);};AGIVertices[_0x4733('0x12')][_0x4733('0x189')]=function(_0x2fe675){logger['info'](util[_0x4733('0x28')](_0x4733('0x18a'),_0x2fe675[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x18b')](_0x2fe675[_0x4733('0x53')],_0x2fe675[_0x4733('0x188')]);};AGIVertices[_0x4733('0x12')][_0x4733('0x18c')]=function(_0x22fa45){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x22fa45[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x22fa45[_0x4733('0x18d')])){return this[_0x4733('0x10')]['noop']('no\x20mail\x20account\x20configured');}var _0x4e7b97=this[_0x4733('0x1f')]['sync'](this,_0x22fa45[_0x4733('0x18d')]);if(!_0x4e7b97||!_0x4e7b97['Smtp']){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x22fa45,_0x4733('0x18e'));}var _0xbb3315={'from':util['format'](_0x4733('0x18f'),_0x4e7b97[_0x4733('0x16')],_0x4e7b97[_0x4733('0x190')]||_0x4e7b97[_0x4733('0x191')][_0x4733('0x192')]),'to':_0x22fa45['to']||'','cc':_0x22fa45['cc']||'','bcc':_0x22fa45['bcc']||'','subject':_0x22fa45[_0x4733('0x193')],'html':_0x22fa45[_0x4733('0x53')],'text':_0x22fa45[_0x4733('0x53')]};if(this[_0x4733('0x9b')](_0x22fa45['template_id'])){}logger[_0x4733('0xd6')](_0x4733('0x194'),JSON['stringify'](_0xbb3315));this[_0x4733('0x34')][_0x4733('0x63')](this,_0x22fa45,_0x22fa45[_0x4733('0x18d')]);this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x195'),_0x4e7b97[_0x4733('0x16')]));this[_0x4733('0x22')][_0x4733('0x63')](this,_0x4e7b97[_0x4733('0x196')],_0xbb3315);return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x197'));};AGIVertices[_0x4733('0x12')][_0x4733('0x198')]=function(_0x855de0){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x199'),_0x855de0[_0x4733('0x9e')]));return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x19a'));};AGIVertices[_0x4733('0x12')][_0x4733('0x19b')]=function(_0x205fc1){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x19c'),_0x205fc1[_0x4733('0x9e')]));if(!this['isConfigured'](_0x205fc1[_0x4733('0x19d')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x19e'));}var _0x476f35=this[_0x4733('0x19f')]['sync'](this,_0x205fc1['sms_account_id']);if(!_0x476f35){return this['channel']['error'](_0x205fc1,'no\x20sms\x20account\x20found');}var _0x5ad196={'body':_0x205fc1[_0x4733('0x1a0')],'phone':_0x205fc1['to']||'','SmsAccountId':_0x476f35['id']};logger[_0x4733('0xd6')](_0x4733('0x1a1'),JSON[_0x4733('0x66')](_0x5ad196));this[_0x4733('0x34')][_0x4733('0x63')](this,_0x205fc1,_0x205fc1[_0x4733('0x19d')]);this[_0x4733('0x10')]['noop'](util[_0x4733('0x28')](_0x4733('0x1a2'),_0x476f35['name']));this[_0x4733('0x33')][_0x4733('0x63')](this,_0x5ad196);return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x1a3'));};AGIVertices[_0x4733('0x12')][_0x4733('0x1a4')]=function(_0x385976){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x385976['label']));if(!this[_0x4733('0x9b')](_0x385976[_0x4733('0xce')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x385976,_0x4733('0x1a5'));}var _0x18fbc3=this[_0x4733('0x13')]['sync'](this,_0x385976[_0x4733('0xce')]);if(!_0x18fbc3){return this['channel']['error'](_0x385976,_0x4733('0xcf'));}return this[_0x4733('0x10')][_0x4733('0x95')](_0x18fbc3,_0x385976[_0x4733('0x1a6')]);};AGIVertices['prototype'][_0x4733('0x1a7')]=function(_0xae01f2){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x1a8'),_0xae01f2['label']));this[_0x4733('0x10')][_0x4733('0x9f')]('START\x20CALLY\x20SQUARE');if(_0xae01f2[_0x4733('0xb2')]==='yes'){this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x1a9'));return this['channel'][_0x4733('0xb2')]();}return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x1aa'));};AGIVertices['prototype'][_0x4733('0x1ab')]=function(_0x1ff0c2){logger[_0x4733('0x2e')](util[_0x4733('0x28')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x1ff0c2['label']));if(!this[_0x4733('0x9b')](_0x1ff0c2[_0x4733('0x1ac')])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x1ff0c2,_0x4733('0x1ad'));}var _0x42b680=this[_0x4733('0x19')]['sync'](this,_0x1ff0c2['project_id']);if(!this[_0x4733('0x9b')](_0x42b680)){return this['channel'][_0x4733('0x2c')](_0x1ff0c2,util[_0x4733('0x28')](_0x4733('0x1ae'),_0x1ff0c2[_0x4733('0x1ac')]));}if(_0x42b680===this[_0x4733('0x10')][_0x4733('0x37')]){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x1ff0c2,_0x4733('0x1af'));}this['createSquareDetailsReport'][_0x4733('0x63')](this,_0x1ff0c2,_0x42b680);var _0x4ad0e9=this[_0x4733('0x10')][_0x4733('0xa7')](_0x4733('0x1b0'),util[_0x4733('0x28')](_0x4733('0x1b1'),config['agi']['host']||_0x4733('0x1b2'),_0x42b680,this[_0x4733('0x10')][_0x4733('0x37')]));if(_0x4ad0e9[_0x4733('0x99')]===-0x1){return _0x4ad0e9;}return this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x16a'),_0x4733('0x1b0'),_0x42b680));};AGIVertices[_0x4733('0x12')][_0x4733('0x1b3')]=function(_0x38c6aa){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x1b4'),_0x38c6aa[_0x4733('0x9e')]));var _0x463038=this[_0x4733('0x1b5')][_0x4733('0x63')](this,_0x38c6aa[_0x4733('0xb0')]);this[_0x4733('0x34')][_0x4733('0x63')](this,_0x38c6aa,_0x38c6aa[_0x4733('0xb0')]);if(this[_0x4733('0x9b')](_0x38c6aa[_0x4733('0xce')])){var _0x1b69b5=this['getVariable'][_0x4733('0x63')](this,_0x38c6aa['variable_id']);if(_0x1b69b5){this[_0x4733('0x10')][_0x4733('0x95')](_0x1b69b5,_0x463038);return this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x1b6'),_0x38c6aa[_0x4733('0xb0')],_0x1b69b5));}}return this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x1b7'),_0x38c6aa[_0x4733('0xb0')]));};AGIVertices[_0x4733('0x12')][_0x4733('0x1b8')]=function(_0x5187d2){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x1b9'),_0x5187d2['label']));_0x5187d2['text']=_0x5187d2[_0x4733('0x53')][_0x4733('0xcd')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4733('0x9b')](_0x5187d2[_0x4733('0x52')])){return this[_0x4733('0x10')][_0x4733('0x9f')](_0x4733('0x1ba'));}if(!this[_0x4733('0x9b')](_0x5187d2[_0x4733('0x53')])){return this[_0x4733('0x10')]['noop']('no\x20text\x20configured');}this[_0x4733('0x10')][_0x4733('0x9f')](util['format'](_0x4733('0x1bb'),_0x5187d2[_0x4733('0x53')]));var _0x1d9c62=this[_0x4733('0x51')][_0x4733('0x63')](this,_0x5187d2);if(_0x1d9c62){this[_0x4733('0x10')]['noop'](util['format'](_0x4733('0x1bc'),_0x1d9c62));var _0x4eb644=this[_0x4733('0x10')][_0x4733('0xfc')](_0x1d9c62);try{fs[_0x4733('0xfe')](_0x1d9c62+_0x4733('0xff'));}catch(_0x34663d){logger['error'](_0x34663d);}return _0x4eb644;}return this[_0x4733('0x10')]['error'](_0x5187d2,_0x4733('0x1bd'));};AGIVertices[_0x4733('0x12')]['tts']=function(_0x2eb894){logger[_0x4733('0x2e')](util['format'](_0x4733('0x1be'),_0x2eb894[_0x4733('0x9e')]));_0x2eb894[_0x4733('0x53')]=_0x2eb894[_0x4733('0x53')][_0x4733('0xcd')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x4733('0x9b')](_0x2eb894[_0x4733('0x53')])){return this['channel'][_0x4733('0x9f')](_0x4733('0xa0'));}this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x1bf'),_0x2eb894[_0x4733('0x53')]));var _0x2dcbf3=this[_0x4733('0x1c0')][_0x4733('0x63')](this,_0x2eb894);if(_0x2dcbf3){this['channel']['noop'](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x2dcbf3));var _0x26fa96=this[_0x4733('0x10')][_0x4733('0xfc')](_0x2dcbf3);try{fs['unlink'](_0x2dcbf3+_0x4733('0xff'));}catch(_0x1bb902){logger[_0x4733('0x2c')](_0x1bb902);}return _0x26fa96;}return this['channel'][_0x4733('0x2c')](_0x2eb894,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x4733('0x12')][_0x4733('0x1c1')]=function(_0x105e01){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x1c2'),_0x105e01[_0x4733('0x9e')]));if(!this[_0x4733('0x9b')](_0x105e01[_0x4733('0x151')])){return this['channel'][_0x4733('0x2c')](_0x105e01,'no\x20find\x20by\x20configured');}logger['info'](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x4733('0x10')][_0x4733('0x38')],_0x105e01[_0x4733('0x151')]));var _0x1795f7=this[_0x4733('0x4c')][_0x4733('0x63')](this,_0x105e01['findBy']);if(_0x1795f7){logger[_0x4733('0x2e')](util['format'](_0x4733('0x150'),this['channel'][_0x4733('0x38')],_0x105e01[_0x4733('0x151')]));this[_0x4733('0x10')][_0x4733('0x9f')](util[_0x4733('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x4733('0x10')][_0x4733('0x38')],_0x105e01[_0x4733('0x151')]));return{'code':0xc8,'result':_0x4733('0x152')};}else{logger[_0x4733('0x2e')](util['format'](_0x4733('0x153'),this[_0x4733('0x10')]['callerid'],_0x105e01[_0x4733('0x151')]));this['channel'][_0x4733('0x9f')](util[_0x4733('0x28')](_0x4733('0x153'),this[_0x4733('0x10')]['callerid'],_0x105e01[_0x4733('0x151')]));return{'code':0xc8,'result':_0x4733('0x154')};}};AGIVertices['prototype'][_0x4733('0x1c3')]=function(_0x3dd547){logger[_0x4733('0x2e')](util[_0x4733('0x28')](_0x4733('0x1c4'),_0x3dd547['label']));var _0x920faf=this[_0x4733('0x10')]['exec'](_0x4733('0x1c5'),[_0x3dd547[_0x4733('0x1c6')],_0x3dd547['options']]);if(_0x920faf['result']===-0x1){return _0x920faf;}return this[_0x4733('0x10')]['noop'](util['format'](_0x4733('0x16a'),_0x4733('0x1c5'),_0x3dd547[_0x4733('0x1c6')]));};AGIVertices['prototype']['vswitch']=function(_0x240a30){logger['info'](util['format'](_0x4733('0x1c7'),_0x240a30[_0x4733('0x9e')]));if(!this['isConfigured'](_0x240a30['variable_id'])){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x240a30,_0x4733('0x1a5'));}var _0x2d6a93=this[_0x4733('0x13')][_0x4733('0x63')](this,_0x240a30[_0x4733('0xce')]);if(!_0x2d6a93){return this[_0x4733('0x10')][_0x4733('0x2c')](_0x240a30,_0x4733('0xcf'));}var _0x5ca677=this['channel'][_0x4733('0x13')](_0x2d6a93);return{'code':0xc8,'result':_0x5ca677[_0x4733('0x97')]?_0x5ca677[_0x4733('0x97')]:'-'};};String['prototype'][_0x4733('0x1c8')]=function(_0x272614,_0xc72546){return this[_0x4733('0x96')](_0x272614)[_0x4733('0x1c9')](_0xc72546);};module[_0x4733('0x1ca')]=AGIVertices;
\ No newline at end of file
+var _0x6427=['no\x20variable\x20found','hiddendigitsnum','hiddendigitspos','substr','generate','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','getIntervals','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','success','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','maxRetry','no\x20file\x20audio\x20selected','getData','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','getPause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','getVoiceQueue','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','macro','gosub','position','QUEUE','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','template_id','sendMail\x20message','sendMailMessage','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','createSmsMessage','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','START\x20CALLY\x20SQUARE','answer','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20no\x20stored','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','lodash','shelljs','odbc','randomstring','moment','mustache','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunkById','getSound','save_name','getMailAccount','getMailAccountById','interval','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','exec','trim','replace','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','googleTTS','google_tts_language','restAPI','url','method','number','timeout','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','stringify','render','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeechASR','ispeech_asr_language','en-US','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','includes','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','length','isString','isPlainObject','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','result','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','args','Wait\x20%s\x20seconds\x20before\x20answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','providerResponse','speech','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','out','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','response','mindigit','maxdigit'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x6427,0xbe));var _0x7642=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x6427[_0x6131cd];return _0x47e916;};'use strict';var fs=require('fs');var util=require('util');var _=require(_0x7642('0x0'));var sh=require(_0x7642('0x1'));var odbc=require(_0x7642('0x2'))();var rs=require(_0x7642('0x3'));var moment=require(_0x7642('0x4'));var Mustache=require(_0x7642('0x5'));var rp=require('request-promise');var logger=require(_0x7642('0x6'))(_0x7642('0x7'));var config=require(_0x7642('0x8'));var shared=require(_0x7642('0x9'));var scripts=require(_0x7642('0xa'));var FILES_PATH=_0x7642('0xb');var recursiveMapAttributes=[_0x7642('0xc'),_0x7642('0xd')];var verticesWithRetry=[_0x7642('0xe'),_0x7642('0xf'),'getsecretdigits'];var AGIVertices=function(_0x498c0d,_0x37cb5a,_0x17527f){this[_0x7642('0x10')]=_0x498c0d;this[_0x7642('0x11')]=_0x37cb5a;this[_0x7642('0x12')]=_0x17527f;};AGIVertices[_0x7642('0x13')][_0x7642('0x14')]=function(_0x1d22fb,_0x103f4d){this[_0x7642('0x11')][_0x7642('0x15')](_0x1d22fb)[_0x7642('0x16')](function(_0x167ff6){_0x103f4d(null,_0x167ff6?_0x167ff6[_0x7642('0x17')]:![]);})[_0x7642('0x18')](function(_0x32e5c9){_0x103f4d(_0x32e5c9);});};AGIVertices[_0x7642('0x13')]['getVoiceQueue']=function(_0x2efd66,_0x3adb30){this['rpc'][_0x7642('0x19')](_0x2efd66)['then'](function(_0x3497b9){_0x3adb30(null,_0x3497b9?_0x3497b9['name']:![]);})[_0x7642('0x18')](function(_0x37964a){_0x3adb30(_0x37964a);});};AGIVertices[_0x7642('0x13')][_0x7642('0x1a')]=function(_0x38fc28,_0x2febf8){this[_0x7642('0x11')]['getSquareProjectById'](_0x38fc28)[_0x7642('0x16')](function(_0x392686){_0x2febf8(null,_0x392686?_0x392686[_0x7642('0x17')]:![]);})[_0x7642('0x18')](function(_0x543f00){_0x2febf8(_0x543f00);});};AGIVertices['prototype'][_0x7642('0x1b')]=function(_0x42db03,_0x5c5c22){this[_0x7642('0x11')][_0x7642('0x1c')](_0x42db03)['then'](function(_0x503c13){_0x5c5c22(null,_0x503c13?_0x503c13[_0x7642('0x1d')]:![]);})[_0x7642('0x18')](function(_0x580573){_0x5c5c22(_0x580573);});};AGIVertices['prototype'][_0x7642('0x1e')]=function(_0xc23c3,_0x37de2b){this['rpc'][_0x7642('0x1f')](_0xc23c3)[_0x7642('0x16')](function(_0x508265){_0x37de2b(null,_0x508265?_0x508265[_0x7642('0x17')]:![]);})[_0x7642('0x18')](function(_0xf31489){_0x37de2b(_0xf31489);});};AGIVertices[_0x7642('0x13')]['getTrunk']=function(_0x1987bb,_0x1bde92){this[_0x7642('0x11')][_0x7642('0x20')](_0x1987bb)['then'](function(_0x29aa1f){_0x1bde92(null,_0x29aa1f?_0x29aa1f[_0x7642('0x17')]:![]);})[_0x7642('0x18')](function(_0x2083f6){_0x1bde92(_0x2083f6);});};AGIVertices['prototype'][_0x7642('0x21')]=function(_0x3a622a,_0x132c14){var _0x4bbee8=this;this[_0x7642('0x11')]['getSoundById'](_0x3a622a)[_0x7642('0x16')](function(_0x6e04c5){_0x132c14(null,_0x6e04c5?_0x4bbee8['getSoundPath'](_0x6e04c5[_0x7642('0x22')]):![]);})['catch'](function(_0x2b24bf){_0x132c14(_0x2b24bf);});};AGIVertices[_0x7642('0x13')][_0x7642('0x23')]=function(_0x4537c5,_0xcaa242){this[_0x7642('0x11')][_0x7642('0x24')](_0x4537c5)[_0x7642('0x16')](function(_0x2a76b4){_0xcaa242(null,_0x2a76b4?_0x2a76b4:![]);})[_0x7642('0x18')](function(_0xa9e30d){_0xcaa242(_0xa9e30d);});};AGIVertices[_0x7642('0x13')]['sendMailMessage']=function(_0x47adcd,_0xa7694e,_0x71f8f0){this[_0x7642('0x12')]['sendMailMessage'](_0x47adcd,_0xa7694e)[_0x7642('0x16')](function(){_0x71f8f0(null);})[_0x7642('0x18')](function(_0x520ac6){_0x71f8f0(_0x520ac6);});};AGIVertices[_0x7642('0x13')]['getIntervals']=function(_0x1faeef,_0x5274fd){this[_0x7642('0x11')]['getIntervalById'](_0x1faeef)['then'](function(_0x3583e6){if(_0x3583e6){if(_0x3583e6['IntervalId']){_0x5274fd(null,[_0x3583e6['interval']]);}else{_0x5274fd(null,_['map'](_0x3583e6['Intervals'],_0x7642('0x25')));}}else{_0x5274fd(null,![]);}})[_0x7642('0x18')](function(_0x114aed){_0x5274fd(_0x114aed);});};AGIVertices[_0x7642('0x13')][_0x7642('0x26')]=function(_0x28559c){return util[_0x7642('0x27')](_0x7642('0x28'),FILES_PATH,_0x28559c);};AGIVertices[_0x7642('0x13')][_0x7642('0x29')]=function(_0x4e5aec,_0x4975c5,_0x5600d9){odbc[_0x7642('0x2a')](_0x4e5aec,function(_0x22ed74){if(_0x22ed74){logger[_0x7642('0x2b')](_0x7642('0x2c'),_0x22ed74);_0x5600d9(_0x22ed74);}else{logger[_0x7642('0x2d')](_0x7642('0x2e'));odbc[_0x7642('0x2f')](_0x4975c5,function(_0x353c1d,_0x4e05a2){if(_0x353c1d){logger[_0x7642('0x2d')](_0x7642('0x30'),_0x4975c5);_0x5600d9(_0x353c1d);}else{logger[_0x7642('0x2d')](_0x7642('0x31'),_0x4975c5);odbc[_0x7642('0x32')](function(_0x4c0af4){if(_0x4c0af4){logger[_0x7642('0x2b')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x4c0af4);}_0x5600d9(null,_0x4e05a2);});}});}});};AGIVertices[_0x7642('0x13')][_0x7642('0x33')]=function(_0x5352a3,_0x1b4933){this['rpc'][_0x7642('0x34')](_0x5352a3)['then'](function(_0x487bf9){_0x1b4933(null,_0x487bf9?_0x487bf9:![]);})[_0x7642('0x18')](function(_0x34fa3c){_0x1b4933(_0x34fa3c);});};AGIVertices['prototype']['createSmsMessage']=function(_0x1748d9,_0x251fd9){this[_0x7642('0x11')]['createSmsMessage'](_0x1748d9)[_0x7642('0x16')](function(_0x323066){_0x251fd9(null,_0x323066);})[_0x7642('0x18')](function(_0x1b4186){_0x251fd9(_0x1b4186);});};AGIVertices[_0x7642('0x13')][_0x7642('0x35')]=function(_0x143128,_0x3c6b5d,_0x3b1dbe){this[_0x7642('0x11')]['createSquareDetailsReport']({'uniqueid':this[_0x7642('0x10')][_0x7642('0x36')],'node':_0x143128[_0x7642('0x37')],'application':_0x143128[_0x7642('0x38')],'data':_0x3c6b5d||null,'project_name':this[_0x7642('0x10')][_0x7642('0x39')],'callerid':this[_0x7642('0x10')][_0x7642('0x3a')]})['then'](function(_0x44da42){if(_0x3b1dbe){_0x3b1dbe(null,_0x44da42);}})['catch'](function(_0x1a20d9){if(_0x3b1dbe){_0x3b1dbe(_0x1a20d9);}});};AGIVertices['prototype'][_0x7642('0x3b')]=function(_0xfa5f7e,_0x2ce059,_0x22f745,_0x1c81b0){this[_0x7642('0x11')]['createSquareRecording']({'uniqueid':this[_0x7642('0x10')][_0x7642('0x36')],'callerid':this[_0x7642('0x10')]['callerid'],'calleridname':this[_0x7642('0x10')][_0x7642('0x3c')],'context':this[_0x7642('0x10')][_0x7642('0x3d')],'extension':this[_0x7642('0x10')][_0x7642('0x3e')],'priority':this[_0x7642('0x10')][_0x7642('0x3f')],'accountcode':this[_0x7642('0x10')][_0x7642('0x40')],'dnid':this['channel'][_0x7642('0x41')],'projectName':this['channel'][_0x7642('0x39')],'saveName':_0x2ce059,'filename':_0xfa5f7e[_0x7642('0x42')]||_0x2ce059,'savePath':_0x22f745})[_0x7642('0x16')](function(_0x7a6c9b){_0x1c81b0(null,_0x7a6c9b);})[_0x7642('0x18')](function(_0x16d46d){_0x1c81b0(_0x16d46d);});};AGIVertices[_0x7642('0x13')]['createSquareMessage']=function(_0x273c61,_0x38b6b3,_0x4545b8,_0x135ffe,_0x5b122f){this[_0x7642('0x11')][_0x7642('0x43')]({'uniqueid':this[_0x7642('0x10')][_0x7642('0x36')],'body':_0x273c61,'direction':_0x38b6b3,'providerName':_0x4545b8,'providerResponse':_0x135ffe})['then'](function(_0xed029e){if(_0x5b122f){_0x5b122f(null,_0xed029e);}})[_0x7642('0x18')](function(_0x37029e){if(_0x5b122f){_0x5b122f(_0x37029e);}});};AGIVertices[_0x7642('0x13')]['createCmContact']=function(_0x2096cb,_0x54c849){this['rpc'][_0x7642('0x44')]({'firstName':_[_0x7642('0x45')](_0x2096cb[_0x7642('0x17')])||_[_0x7642('0x46')](_0x2096cb[_0x7642('0x17')])?_0x7642('0x47')+Math[_0x7642('0x48')]():_0x2096cb['name'],'lastName':_[_0x7642('0x45')](_0x2096cb[_0x7642('0x49')])||_['isNil'](_0x2096cb[_0x7642('0x49')])?null:_0x2096cb[_0x7642('0x49')],'phone':_0x2096cb[_0x7642('0x4a')],'ListId':_0x2096cb['list_id'],'scheduledat':_0x2096cb[_0x7642('0x4b')],'callbackUniqueid':this[_0x7642('0x10')][_0x7642('0x36')],'tags':'callback','description':_0x7642('0x4c')+_0x2096cb[_0x7642('0x4b')][_0x7642('0x4d')](),'priority':_0x2096cb[_0x7642('0x4e')]})[_0x7642('0x16')](function(_0x4c6839){_0x54c849(null,_0x4c6839);})[_0x7642('0x18')](function(_0x41a1f5){_0x54c849(_0x41a1f5);});};AGIVertices[_0x7642('0x13')]['getPause']=function(_0xb2cc14,_0x226fbb){this[_0x7642('0x11')][_0x7642('0x4f')](_0xb2cc14)[_0x7642('0x16')](function(_0x51fd48){_0x226fbb(null,_0x51fd48?_0x51fd48[_0x7642('0x17')]:![]);})[_0x7642('0x18')](function(_0x3e2722){_0x226fbb(_0x3e2722);});};AGIVertices['prototype'][_0x7642('0x50')]=function(_0x5c266d,_0x3ccd2b,_0x433f8e){var _0x1f6312={'role':_0x7642('0x51')};_0x1f6312[_0x5c266d]=this[_0x7642('0x10')][_0x7642('0x3a')];this['rpc']['agentPause'](_0x1f6312,_0x3ccd2b,this['channel'][_0x7642('0x36')])['then'](function(_0x5e152d){_0x433f8e(null,_[_0x7642('0x46')](_0x5e152d)?![]:!![]);})[_0x7642('0x18')](function(_0x156b3b){logger[_0x7642('0x2b')](_0x156b3b);_0x433f8e(null,![]);});};AGIVertices['prototype'][_0x7642('0x52')]=function(_0x42a72b,_0x167133){var _0xcd9af5={'role':'agent'};_0xcd9af5[_0x42a72b]=this[_0x7642('0x10')][_0x7642('0x3a')];this[_0x7642('0x11')][_0x7642('0x52')](_0xcd9af5)['then'](function(_0x2a5197){_0x167133(null,_[_0x7642('0x46')](_0x2a5197)?![]:!![]);})[_0x7642('0x18')](function(_0x4bea3f){logger[_0x7642('0x2b')](_0x4bea3f);_0x167133(null,![]);});};AGIVertices[_0x7642('0x13')]['agentLogout']=function(_0x7fd0f2,_0x1a6218){var _0xf22d2d={'role':'agent'};_0xf22d2d[_0x7fd0f2]=this[_0x7642('0x10')][_0x7642('0x3a')];this[_0x7642('0x11')][_0x7642('0x53')](_0xf22d2d)[_0x7642('0x16')](function(_0x3e36a0){_0x1a6218(null,_[_0x7642('0x46')](_0x3e36a0)?![]:!![]);})[_0x7642('0x18')](function(_0xd7777a){logger[_0x7642('0x2b')](_0xd7777a);_0x1a6218(null,![]);});};AGIVertices[_0x7642('0x13')][_0x7642('0x54')]=function(_0x29e4c6,_0x54a01b){var _0x26cbc6={'role':'agent'};_0x26cbc6[_0x29e4c6]=this['channel'][_0x7642('0x3a')];var _0x59e458=_0x29e4c6!=_0x7642('0x55')?util[_0x7642('0x27')](_0x7642('0x56'),_0x7642('0x57'),this[_0x7642('0x10')][_0x7642('0x3a')]):undefined;this['rpc']['agentLogin'](_0x26cbc6,_0x59e458)[_0x7642('0x16')](function(_0x45a165){_0x54a01b(null,_['isNil'](_0x45a165)?![]:!![]);})[_0x7642('0x18')](function(_0x46aecb){logger[_0x7642('0x2b')](_0x46aecb);_0x54a01b(null,![]);});};AGIVertices[_0x7642('0x13')]['shellCommand']=function(_0x4717a9,_0x30a949){sh[_0x7642('0x58')](_[_0x7642('0x59')](_0x4717a9),function(_0x26d661,_0x405ddf){var _0x1ec599=_0x405ddf[_0x7642('0x5a')](/(\r\n|\n|\r)/gm,'');_0x30a949(null,_0x1ec599);});};AGIVertices[_0x7642('0x13')]['googleCloudTTS']=function(_0x274147,_0x4f96f5){scripts['googleCloudTTS'](_0x274147[_0x7642('0x5b')],_0x274147[_0x7642('0x5c')]||'text',_0x274147[_0x7642('0x5d')],_0x274147[_0x7642('0x5e')]||'en-US',_0x274147[_0x7642('0x5f')]||_0x7642('0x60'),_0x274147['audioEncoding']||'MP3')[_0x7642('0x16')](function(_0xb6e304){_0x4f96f5(null,_0xb6e304);})[_0x7642('0x18')](function(_0x174944){_0x4f96f5(_0x174944);});};AGIVertices[_0x7642('0x13')][_0x7642('0x61')]=function(_0x390778,_0x5a8508){scripts[_0x7642('0x61')](_0x390778[_0x7642('0x5d')],_0x390778[_0x7642('0x62')]||'en',0x1)[_0x7642('0x16')](function(_0x2d7171){_0x5a8508(null,_0x2d7171);})[_0x7642('0x18')](function(_0x589110){_0x5a8508(_0x589110);});};AGIVertices['prototype'][_0x7642('0x63')]=function(_0x4db33b,_0x5503dc){var _0x27e0b3={'uri':_0x4db33b[_0x7642('0x64')],'method':_0x4db33b[_0x7642('0x65')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4db33b['timeout'])===_0x7642('0x66')&&parseInt(_0x4db33b[_0x7642('0x67')])>=0x1?parseInt(_0x4db33b[_0x7642('0x67')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x7642('0x68'),_0x7642('0x69')],_0x27e0b3[_0x7642('0x65')][_0x7642('0x6a')]())){try{_0x27e0b3[_0x7642('0x6b')]=_0x4db33b[_0x7642('0xd')]?JSON[_0x7642('0x6c')](_0x4db33b['rawBody']):{};}catch(_0x15af47){logger[_0x7642('0x2b')](_0x7642('0x6d'),_0x15af47);}}try{_0x27e0b3[_0x7642('0x6e')]=_0x4db33b['rawHeaders']?JSON[_0x7642('0x6c')](_0x4db33b['rawHeaders']):{};}catch(_0x15f490){logger[_0x7642('0x2b')](_0x7642('0x6f'),_0x15f490);}if(_0x4db33b[_0x7642('0x70')]){try{var _0x33c96b=require(_0x4db33b['computedVariables'])[_0x7642('0x71')](this,_0x27e0b3);_0x27e0b3[_0x7642('0x72')]=Mustache['render'](_0x4db33b[_0x7642('0x64')],_0x33c96b,{},['$$','$$']);if(_0x27e0b3[_0x7642('0x6e')]){_0x27e0b3[_0x7642('0x6e')]=JSON[_0x7642('0x6c')](Mustache['render'](JSON[_0x7642('0x73')](_0x27e0b3['headers']),_0x33c96b,{},['$$','$$']));}if(_0x27e0b3['body']){_0x27e0b3[_0x7642('0x6b')]=JSON[_0x7642('0x6c')](Mustache[_0x7642('0x74')](JSON[_0x7642('0x73')](_0x27e0b3[_0x7642('0x6b')]),_0x33c96b,{},['$$','$$']));}}catch(_0x339cb3){logger['error'](_0x7642('0x75'),_0x339cb3);}}rp(_0x27e0b3)[_0x7642('0x16')](function(_0x21d1c8){var _0x2e1544={'statusCode':_0x21d1c8[_0x7642('0x76')]||0xc8,'statusMessage':_0x21d1c8['statusMessage']||'OK','headers':_0x21d1c8[_0x7642('0x6e')]||{},'body':_0x21d1c8[_0x7642('0x6b')]||{}};_0x5503dc(null,_0x2e1544);})['catch'](function(_0x24e33d){var _0x1cb81c={'statusCode':_0x24e33d[_0x7642('0x76')]||0x1f4,'statusMessage':_0x24e33d[_0x7642('0x77')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x24e33d[_0x7642('0x78')][_0x7642('0x6e')]||{},'body':_0x24e33d[_0x7642('0x78')]['body']||{}};_0x5503dc(null,_0x1cb81c);});};AGIVertices['prototype'][_0x7642('0x79')]=function(_0x55f15d,_0xd046b){scripts[_0x7642('0x79')](this[_0x7642('0x10')][_0x7642('0x36')],_0x55f15d[_0x7642('0x7a')],_0x55f15d['text'],_0x55f15d[_0x7642('0x7b')]||'en')[_0x7642('0x16')](function(_0x3748d7){_0xd046b(null,_0x3748d7);})[_0x7642('0x18')](function(_0x287d3d){_0xd046b(_0x287d3d);});};AGIVertices['prototype'][_0x7642('0x7c')]=function(_0x3f7c1f,_0x5b3d93){scripts[_0x7642('0x7c')](this[_0x7642('0x10')]['uniqueid'],_0x3f7c1f[_0x7642('0x7d')],_0x3f7c1f[_0x7642('0x7e')],_0x3f7c1f[_0x7642('0x7f')],_0x3f7c1f[_0x7642('0x5d')],_0x3f7c1f[_0x7642('0x80')]||'en')[_0x7642('0x16')](function(_0x4b4606){_0x5b3d93(null,_0x4b4606);})[_0x7642('0x18')](function(_0x53729b){_0x5b3d93(_0x53729b);});};AGIVertices['prototype'][_0x7642('0x81')]=function(_0x1f7d32,_0x2e52a5){scripts[_0x7642('0x81')](this[_0x7642('0x10')],_0x1f7d32)[_0x7642('0x16')](function(_0x209382){_0x2e52a5(null,_0x209382);})[_0x7642('0x18')](function(_0x3dbe80){_0x2e52a5(_0x3dbe80);});};AGIVertices[_0x7642('0x13')][_0x7642('0x82')]=function(_0x50b82c,_0xfc57b6){scripts['ispeechTTS'](_0x50b82c[_0x7642('0x7a')],_0x50b82c[_0x7642('0x5d')],_0x50b82c['ispeech_tts_language']||'en-US',_0x50b82c['speed'])[_0x7642('0x16')](function(_0x4d8078){_0xfc57b6(null,_0x4d8078);})['catch'](function(_0xd573cc){_0xfc57b6(_0xd573cc);});};AGIVertices[_0x7642('0x13')][_0x7642('0x83')]=function(_0x565aeb,_0x33e97a,_0xae9673){scripts['ispeechASR'](_0x33e97a,_0x565aeb[_0x7642('0x7a')],_0x565aeb[_0x7642('0x84')]||_0x7642('0x85'),this[_0x7642('0x86')](_0x565aeb[_0x7642('0x87')])?_0x565aeb[_0x7642('0x87')]:undefined)[_0x7642('0x16')](function(_0x31e5de){_0xae9673(null,_0x31e5de);})[_0x7642('0x18')](function(_0x1f5f07){_0xae9673(_0x1f5f07);});};AGIVertices[_0x7642('0x13')][_0x7642('0x88')]=function(_0x4840cc,_0x26412d){scripts[_0x7642('0x88')](_0x4840cc[_0x7642('0x89')],_0x4840cc[_0x7642('0x8a')],_0x4840cc['aws_polly_region'],_0x4840cc[_0x7642('0x8b')]||_0x7642('0x8c'),_0x4840cc['text'],_0x4840cc[_0x7642('0x8d')]||_0x7642('0x5d'))[_0x7642('0x16')](function(_0x53692e){_0x26412d(null,_0x53692e);})[_0x7642('0x18')](function(_0x4a402d){_0x26412d(_0x4a402d);});};AGIVertices[_0x7642('0x13')][_0x7642('0x8e')]=function(_0x57238b,_0x345b09){scripts[_0x7642('0x8e')](this[_0x7642('0x10')][_0x7642('0x36')],_0x57238b[_0x7642('0x89')],_0x57238b[_0x7642('0x8a')],_0x57238b[_0x7642('0x8f')],_0x57238b[_0x7642('0x5d')],_0x57238b[_0x7642('0x90')])[_0x7642('0x16')](function(_0x556f6b){_0x345b09(null,_0x556f6b);})[_0x7642('0x18')](function(_0x251383){_0x345b09(_0x251383);});};AGIVertices[_0x7642('0x13')][_0x7642('0x91')]=function(_0x20e511,_0x5cf59c,_0x566d90){scripts['googleASR'](_0x5cf59c,_0x20e511[_0x7642('0x7a')],_0x20e511['google_asr_language']||'en-US')[_0x7642('0x16')](function(_0xebecbf){_0x566d90(null,_0xebecbf);})[_0x7642('0x18')](function(_0x55f95a){_0x566d90(_0x55f95a);});};AGIVertices['prototype']['tildeASR']=function(_0x21946b,_0x223c3b,_0x2b763b){scripts[_0x7642('0x92')](_0x223c3b,_0x21946b[_0x7642('0x93')],_0x21946b[_0x7642('0x94')],_0x21946b[_0x7642('0x72')])[_0x7642('0x16')](function(_0x16ffac){_0x2b763b(null,_0x16ffac);})[_0x7642('0x18')](function(_0x34905e){_0x2b763b(_0x34905e);});};AGIVertices['prototype'][_0x7642('0x95')]=function(_0x136ef0){var _0x432e85=_['includes'](verticesWithRetry,_0x136ef0[_0x7642('0x38')])?_0x136ef0:_[_0x7642('0x96')](_0x136ef0);for(var _0x3dea24 in _0x432e85){if(_0x432e85[_0x7642('0x97')](_0x3dea24)){if(_0x432e85[_0x3dea24]&&_['isString'](_0x432e85[_0x3dea24])){if(_[_0x7642('0x98')](recursiveMapAttributes,_0x3dea24)){_0x432e85[_0x3dea24]=this[_0x7642('0x99')](_0x432e85[_0x3dea24]);}else{_0x432e85[_0x3dea24]=this[_0x7642('0x9a')](_0x432e85[_0x3dea24]);}}}}return _0x432e85;};AGIVertices[_0x7642('0x13')][_0x7642('0x9b')]=function(_0x1ca68a){for(var _0x1f88c3 in _0x1ca68a){if(_0x1ca68a[_0x7642('0x97')](_0x1f88c3)){if(_['isPlainObject'](_0x1ca68a[_0x1f88c3])){this[_0x7642('0x9b')](_0x1ca68a[_0x1f88c3]);}else if(_[_0x7642('0x9c')](_0x1ca68a[_0x1f88c3])){for(var _0x5f59e3=0x0;_0x5f59e3<_0x1ca68a[_0x1f88c3][_0x7642('0x9d')];_0x5f59e3++){this[_0x7642('0x9b')](_0x1ca68a[_0x1f88c3][_0x5f59e3]);}}else if(_[_0x7642('0x9e')](_0x1ca68a[_0x1f88c3])){_0x1ca68a[_0x1f88c3]=this[_0x7642('0x9a')](_0x1ca68a[_0x1f88c3]);}}}};AGIVertices[_0x7642('0x13')]['saveRestApiResult']=function(_0x1ba648,_0x1e7920){for(var _0x17938a in _0x1ba648){if(_0x1ba648[_0x7642('0x97')](_0x17938a)){if(_[_0x7642('0x9f')](_0x1ba648[_0x17938a])){if(!_[_0x7642('0x45')](_0x1ba648[_0x17938a])){this[_0x7642('0xa0')](_0x1ba648[_0x17938a],util['format'](_0x7642('0xa1'),_0x1e7920,_0x17938a));}}else if(_['isArray'](_0x1ba648[_0x17938a])){for(var _0x133463=0x0;_0x133463<_0x1ba648[_0x17938a][_0x7642('0x9d')];_0x133463++){this[_0x7642('0xa0')](_0x1ba648[_0x17938a][_0x133463],util[_0x7642('0x27')](_0x7642('0xa1'),_0x1e7920,_0x17938a+'['+_0x133463+']'));}}else{if(!_[_0x7642('0x46')](_0x1ba648[_0x17938a])){this['channel'][_0x7642('0xa2')](util[_0x7642('0x27')](_0x7642('0xa1'),_0x1e7920,_0x17938a),_0x1ba648[_0x17938a]);}}}}};AGIVertices[_0x7642('0x13')]['replaceObjectAllVariables']=function(_0x4cf31b){try{var _0x29b5f4=JSON['parse'](_0x4cf31b);this[_0x7642('0x9b')](_0x29b5f4);return JSON[_0x7642('0x73')](_0x29b5f4);}catch(_0x3f1e07){return this[_0x7642('0x9a')](_0x4cf31b);}};AGIVertices[_0x7642('0x13')][_0x7642('0x9a')]=function(_0x3f1b1a){var _0x216e38=_0x3f1b1a[_0x7642('0xa3')]('{');for(var _0xea6128=0x1;_0xea6128<_0x216e38['length'];_0xea6128+=0x1){var _0xe8c16c=_0x216e38[_0xea6128][_0x7642('0xa3')]('}');if(_0xe8c16c[_0x7642('0x9d')]>0x1){_0x3f1b1a=_0x3f1b1a[_0x7642('0xa4')]('{'+_0xe8c16c[0x0]+'}',this[_0x7642('0x10')]['getVariable'](_0xe8c16c[0x0])[_0x7642('0xa5')]||_0xe8c16c[0x0]);}}if(_0x216e38['length']===0x1){return _0x3f1b1a[_0x7642('0x4d')]();}return this['replaceAllVariables'](_0x3f1b1a);};AGIVertices[_0x7642('0x13')][_0x7642('0xa6')]=function(_0x453871,_0x2b11ba){var _0x485726=this['channel']['getVariable'](_0x453871);if(_0x485726['result']===-0x1){return _0x485726;}logger['info'](util[_0x7642('0x27')](_0x7642('0xa7'),_0x2b11ba,_0x485726[_0x7642('0xa5')]));return this['channel'][_0x7642('0xa2')](_0x2b11ba,_0x485726[_0x7642('0xa5')]);};AGIVertices[_0x7642('0x13')][_0x7642('0x86')]=function(_0x341c75){return _0x341c75&&_0x341c75!=='0'&&_0x341c75!=='-1'&&_0x341c75!=='';};AGIVertices[_0x7642('0x13')]['maxRetry']=function(_0x4df073){this[_0x7642('0x35')][_0x7642('0x71')](this,_0x4df073,'-');_0x4df073[_0x7642('0xa8')]=_0x4df073['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x7642('0x13')][_0x7642('0xa9')]=function(_0x1ea600){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xaa'),_0x1ea600['label']));if(!this[_0x7642('0x86')](_0x1ea600[_0x7642('0x5d')])){return this[_0x7642('0x10')]['noop']('no\x20text\x20configured');}var _0x547a3d='\x22'+_0x1ea600['text']+'\x22';if(this[_0x7642('0x86')](_0x1ea600['options'])){_0x547a3d+=','+_0x1ea600['options'];}var _0x87a837=this[_0x7642('0x10')][_0x7642('0x58')]('MRCPSynth',_0x547a3d);if(_0x87a837[_0x7642('0xab')]===-0x1){return _0x87a837;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')]('Executed\x20command\x20MRCPSynth\x20%s',_0x547a3d));};AGIVertices[_0x7642('0x13')][_0x7642('0xad')]=function(_0x4edcee){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xae'),_0x4edcee['label']));if(!this[_0x7642('0x86')](_0x4edcee[_0x7642('0xaf')])){return this['channel'][_0x7642('0xac')]('no\x20grammar\x20configured');}var _0x1d23ee=_0x4edcee[_0x7642('0xaf')];if(this[_0x7642('0x86')](_0x4edcee[_0x7642('0x78')])){_0x1d23ee+=','+_0x4edcee['options'];}var _0x4b115e=this['channel'][_0x7642('0x58')](_0x7642('0xb0'),_0x1d23ee);if(_0x4b115e[_0x7642('0xab')]===-0x1){return _0x4b115e;}var _0x384704=this[_0x7642('0xa6')](_0x7642('0xb1'),_0x7642('0xb2'));if(_0x384704[_0x7642('0xab')]===-0x1){return _0x384704;}var _0x95b73d=this[_0x7642('0xa6')](_0x7642('0xb3'),_0x7642('0xb4'));if(_0x95b73d[_0x7642('0xab')]===-0x1){return _0x95b73d;}var _0x3a547f=this['getAndSetVariable'](_0x7642('0xb5'),_0x7642('0xb6'));if(_0x3a547f[_0x7642('0xab')]===-0x1){return _0x3a547f;}return this['channel']['noop'](util[_0x7642('0x27')](_0x7642('0xb7'),_0x1d23ee));};AGIVertices['prototype'][_0x7642('0x7')]=function(_0x5068c9){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xb8'),_0x5068c9['label']));return this[_0x7642('0x10')]['agi']([_0x5068c9['command'],_0x5068c9[_0x7642('0xb9')]]);};AGIVertices[_0x7642('0x13')]['answer']=function(_0x5e9ffa){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x5e9ffa[_0x7642('0x37')]));if(this[_0x7642('0x86')](_0x5e9ffa['timeout'])){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xba'),_0x5e9ffa[_0x7642('0x67')]));var _0x361d04=this['channel']['wait'](_0x5e9ffa[_0x7642('0x67')]);if(_0x361d04[_0x7642('0xab')]===-0x1){return _0x361d04;}}return this[_0x7642('0x10')]['answer']();};AGIVertices['prototype'][_0x7642('0xbb')]=function(_0x3c46cb){logger['info'](util[_0x7642('0x27')](_0x7642('0xbc'),_0x3c46cb[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x3c46cb[_0x7642('0xbd')])){return this['channel'][_0x7642('0x2b')](_0x3c46cb,_0x7642('0xbe'));}_0x3c46cb[_0x7642('0x4b')]=moment();if(this[_0x7642('0x86')](_0x3c46cb['delay'])){_0x3c46cb[_0x7642('0x4b')]=moment()['add'](_0x3c46cb[_0x7642('0xbf')],_0x7642('0xc0'));}if(!this[_0x7642('0x86')](_0x3c46cb['callback_priority'])){_0x3c46cb[_0x7642('0x4e')]=0x2;}this[_0x7642('0x44')]['sync'](this,_0x3c46cb);return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0xc1'),_0x3c46cb['phone'],_0x3c46cb['list_id'],_0x3c46cb[_0x7642('0x4b')]));};AGIVertices[_0x7642('0x13')]['custom_app']=function(_0x187854){logger[_0x7642('0x2d')](util['format'](_0x7642('0xc2'),_0x187854[_0x7642('0x37')]));var _0xf5c878=this['channel'][_0x7642('0x58')](_0x187854[_0x7642('0xc3')],_0x187854[_0x7642('0x78')]);if(_0xf5c878[_0x7642('0xab')]===-0x1){return _0xf5c878;}return this['channel'][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xc4'),_0x187854[_0x7642('0xc3')],_0x187854['options']));};AGIVertices[_0x7642('0x13')][_0x7642('0xc5')]=function(_0x436fda){logger[_0x7642('0x2d')](util['format']('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x436fda[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x436fda['text'])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}var _0x494def='\x22'+_0x436fda[_0x7642('0x5d')]+'\x22';if(this['isConfigured'](_0x436fda['options'])){_0x494def+=','+_0x436fda[_0x7642('0x78')];}var _0xf85ad6=this[_0x7642('0x10')][_0x7642('0x58')](_0x7642('0xc7'),_0x494def);if(_0xf85ad6[_0x7642('0xab')]===-0x1){return _0xf85ad6;}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0xc8'),_0x494def));};AGIVertices[_0x7642('0x13')][_0x7642('0xc9')]=function(_0x464677){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xca'),_0x464677[_0x7642('0x37')]));if(!this['isConfigured'](_0x464677[_0x7642('0x5d')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}var _0x593ef4='\x22'+_0x464677[_0x7642('0x5d')]+'\x22';if(this[_0x7642('0x86')](_0x464677[_0x7642('0x78')])){_0x593ef4+=','+_0x464677[_0x7642('0x78')];}var _0x5b116b=this['channel'][_0x7642('0x58')]('MRCPSynth',_0x593ef4);if(_0x5b116b[_0x7642('0xab')]===-0x1){return _0x5b116b;}return this[_0x7642('0x10')]['noop'](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x593ef4));};AGIVertices['prototype']['lumenvoxasr']=function(_0x342d7b){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x342d7b[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x342d7b['grammar'])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xcb'));}var _0x3237d4=_0x342d7b[_0x7642('0xaf')];if(this[_0x7642('0x86')](_0x342d7b[_0x7642('0x78')])){_0x3237d4+=','+_0x342d7b[_0x7642('0x78')];}var _0x202465=this['channel'][_0x7642('0x58')]('MRCPRecog',_0x3237d4);if(_0x202465['result']===-0x1){return _0x202465;}var _0xde3e2f=this[_0x7642('0xa6')](_0x7642('0xb1'),_0x7642('0xcc'));if(_0xde3e2f[_0x7642('0xab')]===-0x1){return _0xde3e2f;}var _0x2f9071=this['getAndSetVariable'](_0x7642('0xb3'),_0x7642('0xcd'));if(_0x2f9071[_0x7642('0xab')]===-0x1){return _0x2f9071;}var _0x466723=this[_0x7642('0xa6')]('RECOG_INSTANCE()',_0x7642('0xce'));if(_0x466723[_0x7642('0xab')]===-0x1){return _0x466723;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xb7'),_0x3237d4));};AGIVertices[_0x7642('0x13')]['sestekasr']=function(_0x4274c5){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xcf'),_0x4274c5[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x4274c5[_0x7642('0xaf')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xcb'));}var _0x5e8867=_0x4274c5[_0x7642('0xaf')];if(this[_0x7642('0x86')](_0x4274c5['options'])){_0x5e8867+=','+_0x4274c5[_0x7642('0x78')];}var _0x3e1dc7=this['channel'][_0x7642('0x58')](_0x7642('0xb0'),_0x5e8867);if(_0x3e1dc7[_0x7642('0xab')]===-0x1){return _0x3e1dc7;}var _0x1d53be=this[_0x7642('0xa6')](_0x7642('0xb1'),'SESTEK_ASR_CONFIDENCE');if(_0x1d53be['result']===-0x1){return _0x1d53be;}var _0x1c205e=this[_0x7642('0xa6')](_0x7642('0xb3'),_0x7642('0xd0'));if(_0x1c205e[_0x7642('0xab')]===-0x1){return _0x1c205e;}var _0x3753d0=this[_0x7642('0xa6')](_0x7642('0xb5'),_0x7642('0xd1'));if(_0x3753d0[_0x7642('0xab')]===-0x1){return _0x3753d0;}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0xb7'),_0x5e8867));};AGIVertices[_0x7642('0x13')][_0x7642('0xd2')]=function(_0x54acb1){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x54acb1[_0x7642('0x37')]));if(!this['isConfigured'](_0x54acb1[_0x7642('0xd3')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x54acb1,_0x7642('0xd4'));}var _0x3f9cf3=this[_0x7642('0x1b')][_0x7642('0x71')](this,_0x54acb1[_0x7642('0xd3')]);if(!_0x3f9cf3){return this['channel'][_0x7642('0x2b')](_0x54acb1,'no\x20odbc\x20database\x20found');}if(!this[_0x7642('0x86')](_0x54acb1['query'])){return this['channel'][_0x7642('0x2b')](_0x54acb1,_0x7642('0xd5'));}var _0x35f0f4=_0x54acb1[_0x7642('0x2f')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xd6'),_0x35f0f4));var _0x4310f6=this[_0x7642('0x29')][_0x7642('0x71')](this,_0x3f9cf3,_0x35f0f4);this[_0x7642('0x35')][_0x7642('0x71')](this,_0x54acb1,_0x35f0f4);if(!this[_0x7642('0x86')](_0x54acb1[_0x7642('0xd7')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xd8'));}var _0x2fa79c=this[_0x7642('0x14')]['sync'](this,_0x54acb1[_0x7642('0xd7')]);if(!_0x2fa79c){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x54acb1,'no\x20variable\x20found');}var _0x27cb40=this;_0x4310f6[_0x7642('0xd9')](function(_0x4384ab,_0x3c05ac){Object[_0x7642('0xda')](_0x4384ab)[_0x7642('0xd9')](function(_0x2c1aa6){_0x27cb40[_0x7642('0x10')][_0x7642('0xa2')](util['format'](_0x7642('0xdb'),_0x2fa79c,_0x3c05ac,_0x2c1aa6),_0x4384ab[_0x2c1aa6]);});});this[_0x7642('0x10')]['setVariable'](util['format'](_0x7642('0xdc'),_0x2fa79c),_0x4310f6[_0x7642('0x9d')]);return this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0xdd'),_0x2fa79c));};AGIVertices['prototype'][_0x7642('0xde')]=function(_0x3b12e3){logger[_0x7642('0xdf')](util['format'](_0x7642('0xe0'),_0x3b12e3['label']));if(!this[_0x7642('0x86')](_0x3b12e3[_0x7642('0xe1')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x3b12e3,_0x7642('0xe2'));}var _0x16797e=this[_0x7642('0x1e')][_0x7642('0x71')](this,_0x3b12e3[_0x7642('0xe1')]);if(!_0x16797e){return this['channel']['error'](_0x3b12e3,_0x7642('0xe3'));}var _0x4fb694=this[_0x7642('0x10')][_0x7642('0x58')](_0x7642('0xe4'),[util['format'](_0x7642('0xe5'),_0x16797e),_0x3b12e3[_0x7642('0x67')],_0x3b12e3[_0x7642('0xe6')],_0x3b12e3[_0x7642('0x64')]]);if(_0x4fb694['result']===-0x1){return _0x4fb694;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xe7'),'DIAL'));};AGIVertices['prototype'][_0x7642('0xe8')]=function(_0x10be15){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xe9'),_0x10be15['label']));if(!this[_0x7642('0x86')](_0x10be15[_0x7642('0x7a')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xea'));}if(!this[_0x7642('0x86')](_0x10be15[_0x7642('0x5d')])){return this[_0x7642('0x10')][_0x7642('0xac')]('no\x20text\x20configured');}this[_0x7642('0x10')][_0x7642('0xeb')]=!![];this[_0x7642('0x35')](_0x10be15);this[_0x7642('0x43')](_0x10be15[_0x7642('0x5d')],'in','','');this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xec'),_0x10be15[_0x7642('0x5d')]));var _0x29fcd8=this[_0x7642('0x79')][_0x7642('0x71')](this,_0x10be15);if(_0x29fcd8){for(var _0x21923a in _0x29fcd8){if(_0x29fcd8[_0x7642('0x97')](_0x21923a)){this[_0x7642('0x10')][_0x7642('0xa2')](util[_0x7642('0x27')](_0x7642('0xed'),_0x21923a[_0x7642('0x6a')]()),_0x29fcd8[_0x21923a]);}}this['createSquareMessage'](_0x29fcd8['speech'],'out',_0x7642('0xe8'),'');return this['channel'][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xee'),_0x29fcd8['speech']));}return this[_0x7642('0x10')][_0x7642('0x2b')](_0x10be15,_0x7642('0xef'));};AGIVertices[_0x7642('0x13')][_0x7642('0xf0')]=function(_0x54fadf){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xf1'),_0x54fadf[_0x7642('0x37')]));if(!this['isConfigured'](_0x54fadf[_0x7642('0x7d')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xf2'));}if(!this[_0x7642('0x86')](_0x54fadf[_0x7642('0x7e')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xf3'));}if(!this[_0x7642('0x86')](_0x54fadf[_0x7642('0x7f')])){return this['channel'][_0x7642('0xac')](_0x7642('0xf4'));}if(!this[_0x7642('0x86')](_0x54fadf[_0x7642('0x80')])){return this[_0x7642('0x10')][_0x7642('0xac')]('no\x20anguage\x20configured');}if(!this[_0x7642('0x86')](_0x54fadf['text'])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}this[_0x7642('0x10')][_0x7642('0xeb')]=!![];this['createSquareDetailsReport'](_0x54fadf);this[_0x7642('0x43')](_0x54fadf[_0x7642('0x5d')],'in','','');this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')]('Trying\x20DialogflowV2:\x20%s',_0x54fadf['text']));var _0x181201=this['googleDialogflowV2'][_0x7642('0x71')](this,_0x54fadf);if(_0x181201){for(var _0x5160b1 in _0x181201){if(_0x181201[_0x7642('0x97')](_0x5160b1)){if(_0x5160b1!==_0x7642('0xf5')){this[_0x7642('0x10')]['setVariable'](util['format']('DIALOGFLOW_%s',_0x5160b1[_0x7642('0x6a')]()),_0x181201[_0x5160b1]);}}}this[_0x7642('0x43')](_0x181201[_0x7642('0xf6')],'out','dialogflowV2',_0x181201['providerResponse']);return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xf7'),_0x181201[_0x7642('0xf6')]));}return this[_0x7642('0x10')]['error'](_0x54fadf,_0x7642('0xf8'));};AGIVertices[_0x7642('0x13')][_0x7642('0xf9')]=function(_0x3f1797){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0xfa'),_0x3f1797[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x3f1797[_0x7642('0xfb')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xfc'));}if(!this[_0x7642('0x86')](_0x3f1797['username'])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xfd'));}if(!this['isConfigured'](_0x3f1797[_0x7642('0xfe')])){return this[_0x7642('0x10')]['noop']('no\x20password\x20configured');}if(!this[_0x7642('0x86')](_0x3f1797[_0x7642('0xff')])){return this['channel'][_0x7642('0xac')](_0x7642('0xc6'));}this[_0x7642('0x10')]['bot']=!![];this[_0x7642('0x35')](_0x3f1797);this['createSquareMessage'](_0x3f1797[_0x7642('0x5d')],'in','','');this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x100'),_0x3f1797['text']));var _0x412c2f=this[_0x7642('0x81')][_0x7642('0x71')](this,_0x3f1797);if(_0x412c2f){for(var _0x107169 in _0x412c2f){if(_0x412c2f['hasOwnProperty'](_0x107169)){this[_0x7642('0x10')][_0x7642('0xa2')](util[_0x7642('0x27')]('SESTEK_NDA_%s',_0x107169[_0x7642('0x6a')]()),_0x412c2f[_0x107169]);}}this[_0x7642('0x43')](_0x412c2f[_0x7642('0xf6')],_0x7642('0x101'),_0x7642('0xf9'),'');if(_0x412c2f['audiofile']){this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x102'),_0x412c2f[_0x7642('0x103')]));var _0x460420=this[_0x7642('0x10')][_0x7642('0x104')](_0x412c2f[_0x7642('0x103')]);try{fs[_0x7642('0x105')](_0x412c2f['audiofile']+_0x7642('0x106'));}catch(_0x28dc2a){logger[_0x7642('0x2b')](_0x28dc2a);}return _0x460420;}else{return this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x107'),_0x412c2f[_0x7642('0xf6')]));}}return this[_0x7642('0x10')]['error'](_0x3f1797,_0x7642('0x108'));};AGIVertices[_0x7642('0x13')][_0x7642('0x109')]=function(_0x4ffb24){logger[_0x7642('0x2d')](util['format'](_0x7642('0x10a'),_0x4ffb24[_0x7642('0x37')]));return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x109'));};AGIVertices[_0x7642('0x13')][_0x7642('0x10b')]=function(_0x5885a8){logger['info'](util[_0x7642('0x27')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x5885a8['label']));var _0x29c7c9='';if(_0x5885a8[_0x7642('0x10c')]){if(!this[_0x7642('0x86')](_0x5885a8[_0x7642('0x10c')])){return this[_0x7642('0x10')]['error'](_0x5885a8,_0x7642('0x10d'));}else{var _0x48efeb=parseInt(_0x5885a8[_0x7642('0x10c')],0xa);if(isNaN(_0x48efeb)){_0x29c7c9=_0x5885a8[_0x7642('0x10c')];}else{_0x29c7c9=this['getTrunk'][_0x7642('0x71')](this,_0x5885a8['trunk_id']);if(!_0x29c7c9){return this['channel'][_0x7642('0x2b')](_0x5885a8,_0x7642('0x10e'));}}}}else if(_0x5885a8['trunk_name']){_0x29c7c9=_0x5885a8['trunk_name'];}else{return this[_0x7642('0x10')]['error'](_0x5885a8,_0x7642('0x10d'));}var _0x121aa5=this[_0x7642('0x10')]['exec']('DIAL',[util[_0x7642('0x27')](_0x7642('0x10f'),_0x29c7c9,_0x5885a8[_0x7642('0x4a')]),_0x5885a8[_0x7642('0x67')],_0x5885a8[_0x7642('0xe6')],_0x5885a8[_0x7642('0x64')]]);if(_0x121aa5[_0x7642('0xab')]===-0x1){return _0x121aa5;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xe7'),_0x7642('0xe4')));};AGIVertices[_0x7642('0x13')][_0x7642('0x110')]=function(_0x5cadf8){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x111'),_0x5cadf8[_0x7642('0x37')]));return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x110'));};AGIVertices[_0x7642('0x13')][_0x7642('0xf')]=function(_0x498549){logger['info'](util['format'](_0x7642('0x112'),_0x498549[_0x7642('0x37')]));if(_0x498549['retry']===0x0){return this['maxRetry'](_0x498549);}_0x498549[_0x7642('0xa8')]-=0x1;if(!this['isConfigured'](_0x498549[_0x7642('0x113')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x498549,'no\x20file\x20audio\x20selected');}var _0x16ef6a=this[_0x7642('0x21')]['sync'](this,_0x498549[_0x7642('0x113')]);if(!_0x16ef6a){return this['channel'][_0x7642('0x2b')](_0x498549,_0x7642('0x114'));}if(!this[_0x7642('0x86')](_0x498549['variable_id'])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x7642('0xd8'));}var _0x316c19=this[_0x7642('0x10')]['getData'](_0x16ef6a,_0x498549[_0x7642('0x115')],_0x498549['maxdigit']);var _0xcaed69=_0x316c19[_0x7642('0xab')]?_0x316c19[_0x7642('0xab')][_0x7642('0x4d')]():'';logger[_0x7642('0x2d')]('test',JSON['stringify'](_0x316c19));if(_0x316c19[_0x7642('0xab')]===-0x1){this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x498549,_0xcaed69);return _0x316c19;}else if(_0x316c19[_0x7642('0xa5')]===_0x7642('0x67')){_0x316c19[_0x7642('0xab')]=_0xcaed69[_0x7642('0x9d')]>=parseInt(_0x498549['mindigit'])?'x':'i';}else{_0x316c19['result']=_0xcaed69[_0x7642('0x9d')]>=parseInt(_0x498549[_0x7642('0x116')])&&_0xcaed69['length']<=parseInt(_0x498549[_0x7642('0x117')])?'x':'i';}var _0x1857a7=this[_0x7642('0x14')][_0x7642('0x71')](this,_0x498549['variable_id']);if(!_0x1857a7){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x498549,_0x7642('0x118'));}this[_0x7642('0x10')][_0x7642('0xa2')](_0x1857a7,_0xcaed69);if(this[_0x7642('0x86')](_0x498549['hiddendigitsnum'])){var _0xb0644a=parseInt(_0x498549[_0x7642('0x119')],0xa);var _0x321340=rs['generate']({'charset':'*','length':_0xb0644a});var _0x435e90=_0xcaed69[_0x7642('0x9d')];if(_0x435e90>0x0){if(_0x435e90>_0xb0644a){this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x498549,_0x498549[_0x7642('0x11a')]==='first'?_0x321340+_0xcaed69['substr'](_0xb0644a):_0xcaed69[_0x7642('0x11b')](0x0,_0x435e90-_0xb0644a)+_0x321340);}else{this[_0x7642('0x35')][_0x7642('0x71')](this,_0x498549,rs[_0x7642('0x11c')]({'charset':'*','length':_0x435e90}));}}else{this[_0x7642('0x35')]['sync'](this,_0x498549,'');}}else{this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x498549,_0xcaed69);}return _0x316c19;};AGIVertices[_0x7642('0x13')][_0x7642('0x11d')]=function(_0x287788){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x11e'),_0x287788[_0x7642('0x37')]));return this[_0x7642('0xf')](_0x287788);};AGIVertices[_0x7642('0x13')][_0x7642('0x11f')]=function(_0x4a0cd0){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x120'),_0x4a0cd0[_0x7642('0x37')]));this[_0x7642('0x35')][_0x7642('0x71')](this,_0x4a0cd0,_0x4a0cd0[_0x7642('0x121')]);return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x122'),_0x4a0cd0[_0x7642('0x121')]));};AGIVertices[_0x7642('0x13')][_0x7642('0x123')]=function(_0x1a7f66){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x1a7f66['label']));if(!this[_0x7642('0x86')](_0x1a7f66[_0x7642('0x89')])||!this[_0x7642('0x86')](_0x1a7f66['aws_secret_access_key'])){return this[_0x7642('0x10')]['noop'](_0x7642('0x124'));}if(!this[_0x7642('0x86')](_0x1a7f66[_0x7642('0x5d')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}this['channel'][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x125'),_0x1a7f66[_0x7642('0x5d')]));var _0x2f0daf=this[_0x7642('0x88')][_0x7642('0x71')](this,_0x1a7f66);if(_0x2f0daf){this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x126'),_0x2f0daf));var _0x3a3981=this[_0x7642('0x10')][_0x7642('0x104')](_0x2f0daf);try{fs['unlink'](_0x2f0daf+_0x7642('0x106'));}catch(_0x262d3f){logger[_0x7642('0x2b')](_0x262d3f);}return _0x3a3981;}return this[_0x7642('0x10')][_0x7642('0x2b')](_0x1a7f66,_0x7642('0x127'));};AGIVertices[_0x7642('0x13')][_0x7642('0x128')]=function(_0x9de566){logger['info'](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x9de566[_0x7642('0x37')]));if(!this['isConfigured'](_0x9de566[_0x7642('0x89')])||!this[_0x7642('0x86')](_0x9de566[_0x7642('0x8a')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x124'));}if(!this[_0x7642('0x86')](_0x9de566[_0x7642('0x90')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x129'));}if(!this[_0x7642('0x86')](_0x9de566[_0x7642('0x5d')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}this[_0x7642('0x10')]['bot']=!![];this[_0x7642('0x35')](_0x9de566);this[_0x7642('0x43')](_0x9de566[_0x7642('0x5d')],'in','','');this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x12a'),_0x9de566[_0x7642('0x5d')]));var _0x43c64e=this[_0x7642('0x8e')][_0x7642('0x71')](this,_0x9de566);if(_0x43c64e){for(var _0x580ac1 in _0x43c64e){if(_0x43c64e['hasOwnProperty'](_0x580ac1)&&_[_0x7642('0x9e')](_0x43c64e[_0x580ac1])){this[_0x7642('0x10')]['setVariable'](util['format'](_0x7642('0x12b'),_0x580ac1[_0x7642('0x6a')]()),_0x43c64e[_0x580ac1]);}}if(_[_0x7642('0x46')](_0x43c64e[_0x7642('0x77')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x12c'));}else{this[_0x7642('0x43')](_0x43c64e['message'],'out',_0x7642('0x12d'),'');return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x12e'),_0x43c64e['message']));}}return this[_0x7642('0x10')]['error'](_0x9de566,_0x7642('0x12f'));};AGIVertices[_0x7642('0x13')][_0x7642('0x130')]=function(_0x512149){logger[_0x7642('0x2d')](util['format'](_0x7642('0x131'),_0x512149['label'],_0x512149[_0x7642('0x67')]));if(!this[_0x7642('0x86')](_0x512149[_0x7642('0x7a')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xea'));}var _0x1ebba0=_0x7642('0x132');var _0x5b43d5=util[_0x7642('0x27')](_0x7642('0x133'),FILES_PATH,rs[_0x7642('0x11c')](0x4));var _0x599a23=util[_0x7642('0x27')](_0x7642('0xa1'),_0x5b43d5,_0x1ebba0);var _0x5f2832=!![];if(_0x512149['beep']===_0x7642('0x134')){_0x5f2832=![];}var _0x451a9a=this['channel'][_0x7642('0x135')](_0x5b43d5,_0x1ebba0,_0x512149['intKey'],_0x512149[_0x7642('0x67')],undefined,_0x5f2832);if(_0x451a9a[_0x7642('0xab')]!==-0x1){this['channel']['noop'](util[_0x7642('0x27')](_0x7642('0x136'),_0x599a23));var _0x4633be=this[_0x7642('0x91')][_0x7642('0x71')](this,_0x512149,_0x599a23);if(_0x4633be){for(var _0xdd8323 in _0x4633be){if(_0x4633be['hasOwnProperty'](_0xdd8323)){this[_0x7642('0x10')][_0x7642('0xa2')](util[_0x7642('0x27')](_0x7642('0x137'),_0xdd8323[_0x7642('0x6a')]()),_0x4633be[_0xdd8323]);}}return this['channel']['noop'](util[_0x7642('0x27')](_0x7642('0x138'),JSON['stringify'](_0x4633be)));}}return _0x451a9a;};AGIVertices['prototype'][_0x7642('0x139')]=function(_0x106392){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x106392['label']));if(!this['isConfigured'](_0x106392[_0x7642('0x93')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x13a'));}if(!this['isConfigured'](_0x106392[_0x7642('0x94')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x13b'));}var _0x5610b6='wav';var _0x5e26ba=util[_0x7642('0x27')](_0x7642('0x133'),FILES_PATH,rs[_0x7642('0x11c')](0x4));var _0x5060b5=util[_0x7642('0x27')]('%s.%s',_0x5e26ba,_0x5610b6);var _0x2a4e54=!![];if(_0x106392[_0x7642('0x13c')]===_0x7642('0x134')){_0x2a4e54=![];}var _0x47f400=this[_0x7642('0x10')][_0x7642('0x135')](_0x5e26ba,_0x5610b6,_0x106392[_0x7642('0x13d')],_0x106392[_0x7642('0x67')],undefined,_0x2a4e54);if(_0x47f400[_0x7642('0xab')]!==-0x1){this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x13e'),_0x5060b5));var _0xa2d62d=this[_0x7642('0x92')][_0x7642('0x71')](this,_0x106392,_0x5060b5);if(_0xa2d62d){for(var _0x4c49e6 in _0xa2d62d){if(_0xa2d62d[_0x7642('0x97')](_0x4c49e6)){this[_0x7642('0x10')][_0x7642('0xa2')](util['format'](_0x7642('0x13f'),_0x4c49e6[_0x7642('0x6a')]()),_0xa2d62d[_0x4c49e6]);}}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')]('TildeASR\x20Result\x20%s',JSON[_0x7642('0x73')](_0xa2d62d)));}}return _0x47f400;};AGIVertices[_0x7642('0x13')][_0x7642('0x140')]=function(_0x22d5ce){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x141'),_0x22d5ce['label']));return this[_0x7642('0x10')][_0x7642('0x142')](_0x22d5ce['context'],_0x22d5ce['extension'],_0x22d5ce[_0x7642('0x3f')]);};AGIVertices[_0x7642('0x13')]['gotoif']=function(_0x91c5b6){logger[_0x7642('0x2d')](util['format'](_0x7642('0x143'),_0x91c5b6[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x91c5b6['condition'])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x91c5b6,_0x7642('0x144'));}try{var _0x135fc3=eval(_0x91c5b6['condition'])?_0x7642('0x145'):_0x7642('0x146');this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x147'),_0x91c5b6['condition'],_0x135fc3));return{'code':0xc8,'result':_0x135fc3};}catch(_0x1c3077){return{'code':0xc8,'result':_0x7642('0x146')};}};AGIVertices[_0x7642('0x13')][_0x7642('0x148')]=function(_0x1b2d74){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x149'),_0x1b2d74[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x1b2d74[_0x7642('0x14a')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x1b2d74,_0x7642('0x14b'));}var _0x2c88c2=this[_0x7642('0x14c')][_0x7642('0x71')](this,_0x1b2d74[_0x7642('0x14a')]);if(!_0x2c88c2){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x1b2d74,'no\x20intervals\x20found');}for(var _0x190911=0x0;_0x190911<_0x2c88c2[_0x7642('0x9d')];_0x190911+=0x1){var _0x3f7456=this['channel']['getVariable'](util['format'](_0x7642('0x14d'),_0x2c88c2[_0x190911]));if(_0x3f7456[_0x7642('0xab')]===-0x1){return _0x3f7456;}logger[_0x7642('0x2d')](util[_0x7642('0x27')]('IFTIME\x20%s\x20%s',_0x2c88c2[_0x190911],_0x3f7456['extra']));if(_0x3f7456[_0x7642('0xa5')]==='true'){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x14e'),_0x2c88c2[_0x190911],_0x7642('0x145')));this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x14e'),_0x2c88c2[_0x190911],_0x7642('0x145')));return{'code':0xc8,'result':_0x7642('0x145')};}else{logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x14e'),_0x2c88c2[_0x190911],'false'));this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')]('IFTIME\x20%s\x20%s',_0x2c88c2[_0x190911],_0x7642('0x146')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x7642('0x13')][_0x7642('0x14f')]=function(_0x1b0d19){logger[_0x7642('0x2d')](util['format'](_0x7642('0x150'),_0x1b0d19[_0x7642('0x37')]));return this[_0x7642('0x10')][_0x7642('0x14f')]();};AGIVertices[_0x7642('0x13')]['ispeechasr']=function(_0x28195f){logger[_0x7642('0x2d')](util['format'](_0x7642('0x151'),_0x28195f[_0x7642('0x37')]));if(!this['isConfigured'](_0x28195f[_0x7642('0x7a')])){return this['channel']['noop'](_0x7642('0xea'));}var _0x2fa506=_0x7642('0x132');var _0x7e0806=util[_0x7642('0x27')]('%s/recordings/%s',FILES_PATH,rs[_0x7642('0x11c')](0x4));var _0x442c05=util['format'](_0x7642('0xa1'),_0x7e0806,_0x2fa506);var _0x55b4f0=!![];if(_0x28195f[_0x7642('0x13c')]===_0x7642('0x134')){_0x55b4f0=![];}var _0x384d4c=this[_0x7642('0x10')]['recordFile'](_0x7e0806,_0x2fa506,_0x28195f['intKey'],_0x28195f[_0x7642('0x67')],undefined,_0x55b4f0);if(_0x384d4c['result']!==-0x1){this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x152'),_0x442c05));var _0xa85120=this['ispeechASR']['sync'](this,_0x28195f,_0x442c05);if(_0xa85120){for(var _0x486b9d in _0xa85120){if(_0xa85120['hasOwnProperty'](_0x486b9d)){this['channel'][_0x7642('0xa2')](util[_0x7642('0x27')]('ISPEECH_ASR_%s',_0x486b9d[_0x7642('0x6a')]()),_0xa85120[_0x486b9d]);}}return this['channel'][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x153'),JSON['stringify'](_0xa85120)));}}return _0x384d4c;};AGIVertices[_0x7642('0x13')][_0x7642('0x154')]=function(_0x2bdff0){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x2bdff0[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x2bdff0[_0x7642('0x7a')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xea'));}if(!this[_0x7642('0x86')](_0x2bdff0[_0x7642('0x5d')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xc6'));}this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x155'),_0x2bdff0[_0x7642('0x5d')]));var _0x2a85c6=this[_0x7642('0x82')][_0x7642('0x71')](this,_0x2bdff0);if(_0x2a85c6){this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x152'),_0x2a85c6));var _0x13357a=this[_0x7642('0x10')][_0x7642('0x104')](_0x2a85c6,_0x2bdff0[_0x7642('0x13d')]);try{fs[_0x7642('0x105')](_0x2a85c6+_0x7642('0x106'));}catch(_0x126ef6){logger['error'](_0x126ef6);}return _0x13357a;}return this[_0x7642('0x10')][_0x7642('0x2b')](_0x2bdff0,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x7642('0x13')][_0x7642('0x156')]=function(_0x3c93fc){logger[_0x7642('0x2d')](util['format'](_0x7642('0x157'),_0x3c93fc[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x3c93fc[_0x7642('0x158')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x3c93fc,_0x7642('0x159'));}logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15a'),this['channel'][_0x7642('0x3a')],_0x3c93fc[_0x7642('0x158')]));var _0x26ae8d=this['agentLogin']['sync'](this,_0x3c93fc[_0x7642('0x158')]);if(_0x26ae8d){logger['info'](util[_0x7642('0x27')](_0x7642('0x15b'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3c93fc[_0x7642('0x158')]));this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x15b'),this['channel']['callerid'],_0x3c93fc['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x7642('0x2d')](util['format'](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3c93fc['findBy']));this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3c93fc['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x7642('0x13')]['logout']=function(_0x3a59db){logger[_0x7642('0x2d')](util['format']('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3a59db[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x3a59db[_0x7642('0x158')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x3a59db,_0x7642('0x159'));}logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15a'),this[_0x7642('0x10')]['callerid'],_0x3a59db[_0x7642('0x158')]));var _0x42994a=this[_0x7642('0x53')][_0x7642('0x71')](this,_0x3a59db['findBy']);if(_0x42994a){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15b'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3a59db[_0x7642('0x158')]));this[_0x7642('0x10')][_0x7642('0xac')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x7642('0x10')]['callerid'],_0x3a59db[_0x7642('0x158')]));return{'code':0xc8,'result':_0x7642('0x15d')};}else{logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3a59db[_0x7642('0x158')]));this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x3a59db[_0x7642('0x158')]));return{'code':0xc8,'result':_0x7642('0x15e')};}};AGIVertices['prototype'][_0x7642('0x15f')]=function(_0x5d81d3){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x160'),_0x5d81d3[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x5d81d3[_0x7642('0x161')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x5d81d3,_0x7642('0x162'));}this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x163'),_0x5d81d3[_0x7642('0x161')]));var _0x507032=eval(_0x5d81d3['operation']);if(!this['isConfigured'](_0x5d81d3[_0x7642('0xd7')])){return this[_0x7642('0x10')]['noop'](_0x7642('0xd8'));}var _0x16c19e=this[_0x7642('0x14')]['sync'](this,_0x5d81d3[_0x7642('0xd7')]);if(!_0x16c19e){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x5d81d3,_0x7642('0x118'));}if(_[_0x7642('0x9c')](_0x507032)){var _0x5ab118=this;_0x507032[_0x7642('0xd9')](function(_0xdaf787,_0x12d8f4){_0x5ab118[_0x7642('0x10')][_0x7642('0xa2')](util[_0x7642('0x27')](_0x7642('0x164'),_0x16c19e,_0x12d8f4),_0xdaf787);});return this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x165'),_0x16c19e));}else{return this[_0x7642('0x10')][_0x7642('0xa2')](_0x16c19e,_0x507032);}};AGIVertices[_0x7642('0x13')][_0x7642('0xe')]=function(_0x236530){logger[_0x7642('0x2d')](util['format'](_0x7642('0x166'),_0x236530[_0x7642('0x37')]));if(_0x236530[_0x7642('0xa8')]===0x0){return this[_0x7642('0x167')](_0x236530);}_0x236530[_0x7642('0xa8')]-=0x1;if(!this[_0x7642('0x86')](_0x236530[_0x7642('0x113')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x236530,_0x7642('0x168'));}var _0xa3e170=this['getSound']['sync'](this,_0x236530['file_id']);if(!_0xa3e170){return this[_0x7642('0x10')]['error'](_0x236530,_0x7642('0x114'));}var _0x191043=this['channel'][_0x7642('0x169')](_0xa3e170,_0x236530[_0x7642('0x115')],_0x236530['digit']);var _0xfc111e=_0x191043[_0x7642('0xab')];if(_0x191043[_0x7642('0xab')]===-0x1){this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x236530,'-1');return _0x191043;}else if(_0x191043[_0x7642('0xa5')]===_0x7642('0x67')){_0x191043[_0x7642('0xab')]=_0x191043['result'][_0x7642('0x9d')]>0x0?_0x191043[_0x7642('0xab')]:'t';}else if(_[_0x7642('0x45')](_0x191043[_0x7642('0xab')])){_0x191043[_0x7642('0xab')]='#';_0xfc111e='#';}if(!this[_0x7642('0x86')](_0x236530[_0x7642('0xd7')])){this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0xd8'));}else{var _0x15a090=this[_0x7642('0x14')]['sync'](this,_0x236530[_0x7642('0xd7')]);if(!_0x15a090){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x236530,_0x7642('0x118'));}this[_0x7642('0x10')][_0x7642('0xa2')](_0x15a090,_0xfc111e);}this[_0x7642('0x35')][_0x7642('0x71')](this,_0x236530,_0xfc111e);return _0x191043;};AGIVertices[_0x7642('0x13')][_0x7642('0xac')]=function(_0x8d5550){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x16a'),_0x8d5550['label']));return this[_0x7642('0x10')][_0x7642('0xac')](_0x8d5550['output']||_0x8d5550['label']);};AGIVertices[_0x7642('0x13')][_0x7642('0x16b')]=function(_0x28412b){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x16c'),_0x28412b['label']));if(!this['isConfigured'](_0x28412b['findBy'])){return this[_0x7642('0x10')]['error'](_0x28412b,'no\x20find\x20by\x20configured');}logger[_0x7642('0x2d')](util['format'](_0x7642('0x15a'),this['channel'][_0x7642('0x3a')],_0x28412b[_0x7642('0x158')]));var _0x16495c=this[_0x7642('0x16d')][_0x7642('0x71')](this,_0x28412b[_0x7642('0x16e')]);var _0x4b8b35=this[_0x7642('0x50')][_0x7642('0x71')](this,_0x28412b[_0x7642('0x158')],_0x16495c);if(_0x4b8b35){logger['info'](util[_0x7642('0x27')](_0x7642('0x15b'),this['channel']['callerid'],_0x28412b['findBy']));this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x15b'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x28412b[_0x7642('0x158')]));return{'code':0xc8,'result':_0x7642('0x15d')};}else{logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x28412b[_0x7642('0x158')]));this['channel']['noop'](util[_0x7642('0x27')](_0x7642('0x15b'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x28412b['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x7642('0x13')][_0x7642('0x16f')]=function(_0x15d232){logger[_0x7642('0x2d')](util['format'](_0x7642('0x170'),_0x15d232[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x15d232[_0x7642('0x113')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x15d232,_0x7642('0x168'));}var _0x6636d6=this[_0x7642('0x21')][_0x7642('0x71')](this,_0x15d232['file_id']);if(!_0x6636d6){return this[_0x7642('0x10')]['error'](_0x15d232,'no\x20file\x20audio\x20found');}var _0x44ff64=this[_0x7642('0x10')]['exec'](_0x7642('0x171'),[_0x6636d6,_0x15d232[_0x7642('0xe6')]]);if(_0x44ff64[_0x7642('0xab')]===-0x1){return _0x44ff64;}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0xc4'),'PLAYBACK',_0x6636d6));};AGIVertices[_0x7642('0x13')][_0x7642('0x172')]=function(_0x2428f3){logger[_0x7642('0x2d')](util['format'](_0x7642('0x173'),_0x2428f3[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x2428f3[_0x7642('0x174')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x2428f3,'no\x20queue\x20selected');}var _0x241b45='';var _0x2d4732=parseInt(_0x2428f3[_0x7642('0x174')],0xa);if(isNaN(_0x2d4732)){_0x241b45=_0x2428f3[_0x7642('0x174')];}else{_0x241b45=this[_0x7642('0x175')]['sync'](this,_0x2428f3[_0x7642('0x174')]);if(!_0x241b45){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x2428f3,_0x7642('0x176'));}}var _0x591eb6='';if(this[_0x7642('0x86')](_0x2428f3[_0x7642('0x113')])){var _0x4cdc18=this['getSound'][_0x7642('0x71')](this,_0x2428f3[_0x7642('0x113')]);if(_0x4cdc18){_0x591eb6=_0x4cdc18;}}this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x2428f3,_0x241b45);if(_0x2428f3[_0x7642('0xe6')]['indexOf']('x')<0x0){_0x2428f3['opts']+='x';}if(_0x2428f3[_0x7642('0xe6')][_0x7642('0x177')]('X')<0x0){_0x2428f3[_0x7642('0xe6')]+='X';}this[_0x7642('0x10')][_0x7642('0xa2')](_0x7642('0x178'),_0x241b45?_0x241b45[_0x7642('0x179')]():'');var _0xf4dc92=this[_0x7642('0x10')][_0x7642('0x58')]('QUEUE',[_0x241b45,_0x2428f3[_0x7642('0xe6')],_0x2428f3[_0x7642('0x64')],_0x591eb6,_0x2428f3[_0x7642('0x67')],_0x2428f3[_0x7642('0x7')],_0x2428f3[_0x7642('0x17a')],_0x2428f3[_0x7642('0x17b')],'',_0x2428f3[_0x7642('0x17c')]]);if(_0xf4dc92['result']===-0x1){return _0xf4dc92;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')]('Executed\x20command\x20%s\x20%s',_0x7642('0x17d'),_0x241b45));};AGIVertices[_0x7642('0x13')][_0x7642('0x17e')]=function(_0x4366b2){logger[_0x7642('0x2d')](util['format'](_0x7642('0x17f'),_0x4366b2[_0x7642('0x37')]));var _0x41aa5a=_0x4366b2[_0x7642('0x180')]||_0x7642('0x132');var _0x9b8e21=util[_0x7642('0x27')]('%s_%s',this['channel'][_0x7642('0x36')],rs[_0x7642('0x11c')](0x5));var _0x3e38ef=util[_0x7642('0x27')]('%s/recordings/%s.%s',FILES_PATH,_0x9b8e21,_0x41aa5a);var _0x31e476=util[_0x7642('0x27')](_0x7642('0x133'),FILES_PATH,_0x9b8e21);this['createSquareRecording']['sync'](this,_0x4366b2,_0x9b8e21,_0x3e38ef);this[_0x7642('0x10')][_0x7642('0xa2')](_0x7642('0x181'),_0x9b8e21);logger[_0x7642('0x2d')](_0x7642('0x182'),_0x31e476,_0x41aa5a,_0x4366b2[_0x7642('0x183')],_0x4366b2['timeout']);return this['channel'][_0x7642('0x135')](_0x31e476,_0x41aa5a,_0x4366b2[_0x7642('0x183')],_0x4366b2[_0x7642('0x67')],undefined,!![]);};AGIVertices[_0x7642('0x13')][_0x7642('0x184')]=function(_0x542b30){logger[_0x7642('0x2d')](util['format'](_0x7642('0x185'),_0x542b30['label']));if(!this[_0x7642('0x86')](_0x542b30[_0x7642('0x64')])){return this[_0x7642('0x10')][_0x7642('0xac')]('no\x20url\x20configured');}var _0x2d0771=this[_0x7642('0x63')][_0x7642('0x71')](this,_0x542b30);logger['info'](util[_0x7642('0x27')](_0x7642('0x186'),util[_0x7642('0x187')](_0x2d0771,{'showHidden':![],'depth':null})));if(!this[_0x7642('0x86')](_0x542b30[_0x7642('0xd7')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x188'));}var _0x23a72b=this[_0x7642('0x14')][_0x7642('0x71')](this,_0x542b30['variable_id']);if(!_0x23a72b){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x542b30,'no\x20variable\x20found');}this['channel'][_0x7642('0xa2')](util['format'](_0x7642('0x189'),_0x23a72b),_0x2d0771[_0x7642('0x76')]?_0x2d0771[_0x7642('0x76')]:_0x7642('0x18a'));this['channel'][_0x7642('0xa2')](util['format'](_0x7642('0x18b'),_0x23a72b),_0x2d0771[_0x7642('0x18c')]?_0x2d0771[_0x7642('0x18c')]:'OK');if(_0x2d0771[_0x7642('0x6b')]){try{this['saveRestApiResult'](_0x2d0771['body'],_0x23a72b);}catch(_0x3868e6){logger[_0x7642('0x2b')](util['format'](_0x7642('0x18d'),_0x23a72b));}}return this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0xdd'),_0x23a72b));};AGIVertices[_0x7642('0x13')][_0x7642('0x18e')]=function(_0x583afa){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x583afa[_0x7642('0x37')]));return this[_0x7642('0x10')][_0x7642('0x18f')](_0x583afa[_0x7642('0x190')][_0x7642('0x5a')](/\s+/g,''),_0x583afa['escape_digits']);};AGIVertices['prototype'][_0x7642('0x191')]=function(_0x21000d){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x192'),_0x21000d[_0x7642('0x37')]));return this['channel']['sayNumber'](_0x21000d[_0x7642('0x66')][_0x7642('0x5a')](/\s+/g,''),_0x21000d[_0x7642('0x183')]);};AGIVertices['prototype']['sayphonetic']=function(_0x2497f3){logger[_0x7642('0x2d')](util['format'](_0x7642('0x193'),_0x2497f3[_0x7642('0x37')]));return this['channel'][_0x7642('0x194')](_0x2497f3[_0x7642('0x5d')],_0x2497f3[_0x7642('0x183')]);};AGIVertices['prototype'][_0x7642('0x195')]=function(_0x388416){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x388416['label']));if(!this[_0x7642('0x86')](_0x388416[_0x7642('0x196')])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x197'));}var _0x18730c=this[_0x7642('0x23')][_0x7642('0x71')](this,_0x388416[_0x7642('0x196')]);if(!_0x18730c||!_0x18730c[_0x7642('0x198')]){return this['channel'][_0x7642('0x2b')](_0x388416,_0x7642('0x199'));}var _0x15ddbd={'from':util[_0x7642('0x27')](_0x7642('0x19a'),_0x18730c[_0x7642('0x17')],_0x18730c[_0x7642('0x19b')]||_0x18730c[_0x7642('0x198')]['user']),'to':_0x388416['to']||'','cc':_0x388416['cc']||'','bcc':_0x388416[_0x7642('0x19c')]||'','subject':_0x388416['subject'],'html':_0x388416[_0x7642('0x5d')],'text':_0x388416[_0x7642('0x5d')]};if(this['isConfigured'](_0x388416[_0x7642('0x19d')])){}logger[_0x7642('0xdf')](_0x7642('0x19e'),JSON[_0x7642('0x73')](_0x15ddbd));this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x388416,_0x388416[_0x7642('0x196')]);this[_0x7642('0x10')][_0x7642('0xac')](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x18730c[_0x7642('0x17')]));this[_0x7642('0x19f')][_0x7642('0x71')](this,_0x18730c[_0x7642('0x1a0')],_0x15ddbd);return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x1a1'));};AGIVertices[_0x7642('0x13')][_0x7642('0x1a2')]=function(_0xc9896d){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x1a3'),_0xc9896d['label']));return this['channel'][_0x7642('0xac')](_0x7642('0x1a4'));};AGIVertices[_0x7642('0x13')][_0x7642('0x1a5')]=function(_0x16f68f){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x1a6'),_0x16f68f['label']));if(!this['isConfigured'](_0x16f68f[_0x7642('0x1a7')])){return this['channel']['noop'](_0x7642('0x1a8'));}var _0x1d7e19=this[_0x7642('0x33')][_0x7642('0x71')](this,_0x16f68f['sms_account_id']);if(!_0x1d7e19){return this['channel'][_0x7642('0x2b')](_0x16f68f,_0x7642('0x1a9'));}var _0x4b4727={'body':_0x16f68f[_0x7642('0x1aa')],'phone':_0x16f68f['to']||'','SmsAccountId':_0x1d7e19['id']};logger[_0x7642('0xdf')](_0x7642('0x1ab'),JSON['stringify'](_0x4b4727));this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x16f68f,_0x16f68f['sms_account_id']);this[_0x7642('0x10')][_0x7642('0xac')](util['format'](_0x7642('0x1ac'),_0x1d7e19['name']));this[_0x7642('0x1ad')][_0x7642('0x71')](this,_0x4b4727);return this[_0x7642('0x10')]['noop'](_0x7642('0x1ae'));};AGIVertices['prototype'][_0x7642('0x1af')]=function(_0xaba1aa){logger['info'](util[_0x7642('0x27')](_0x7642('0x1b0'),_0xaba1aa[_0x7642('0x37')]));if(!this['isConfigured'](_0xaba1aa[_0x7642('0xd7')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0xaba1aa,'no\x20variable\x20selected');}var _0x55c053=this[_0x7642('0x14')][_0x7642('0x71')](this,_0xaba1aa[_0x7642('0xd7')]);if(!_0x55c053){return this[_0x7642('0x10')]['error'](_0xaba1aa,'no\x20variable\x20found');}return this[_0x7642('0x10')][_0x7642('0xa2')](_0x55c053,_0xaba1aa[_0x7642('0x1b1')]);};AGIVertices[_0x7642('0x13')][_0x7642('0x1b2')]=function(_0x28d591){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20START\x20(%s)\x20block',_0x28d591[_0x7642('0x37')]));this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x1b3'));if(_0x28d591[_0x7642('0x1b4')]===_0x7642('0x1b5')){this['channel']['noop'](_0x7642('0x1b6'));return this[_0x7642('0x10')]['answer']();}return this['channel']['noop'](_0x7642('0x1b7'));};AGIVertices[_0x7642('0x13')][_0x7642('0x1b8')]=function(_0x6eb0f2){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x1b9'),_0x6eb0f2[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x6eb0f2[_0x7642('0x1ba')])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x6eb0f2,_0x7642('0x1bb'));}var _0x21836c=this[_0x7642('0x1a')][_0x7642('0x71')](this,_0x6eb0f2[_0x7642('0x1ba')]);if(!this['isConfigured'](_0x21836c)){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x6eb0f2,util['format'](_0x7642('0x1bc'),_0x6eb0f2[_0x7642('0x1ba')]));}if(_0x21836c===this[_0x7642('0x10')][_0x7642('0x39')]){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x6eb0f2,_0x7642('0x1bd'));}this[_0x7642('0x35')][_0x7642('0x71')](this,_0x6eb0f2,_0x21836c);var _0x5da2a5=this[_0x7642('0x10')][_0x7642('0x58')]('AGI',util[_0x7642('0x27')](_0x7642('0x1be'),config[_0x7642('0x7')]['host']||_0x7642('0x1bf'),_0x21836c,this[_0x7642('0x10')][_0x7642('0x39')]));if(_0x5da2a5[_0x7642('0xab')]===-0x1){return _0x5da2a5;}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0xc4'),_0x7642('0x1c0'),_0x21836c));};AGIVertices[_0x7642('0x13')][_0x7642('0x1c1')]=function(_0x15c23f){logger[_0x7642('0x2d')](util['format'](_0x7642('0x1c2'),_0x15c23f[_0x7642('0x37')]));var _0x23da5d=this['shellCommand'][_0x7642('0x71')](this,_0x15c23f[_0x7642('0x1c3')]);this['createSquareDetailsReport'][_0x7642('0x71')](this,_0x15c23f,_0x15c23f[_0x7642('0x1c3')]);if(this[_0x7642('0x86')](_0x15c23f[_0x7642('0xd7')])){var _0x4bad21=this['getVariable'][_0x7642('0x71')](this,_0x15c23f['variable_id']);if(_0x4bad21){this[_0x7642('0x10')][_0x7642('0xa2')](_0x4bad21,_0x23da5d);return this['channel'][_0x7642('0xac')](util[_0x7642('0x27')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x15c23f[_0x7642('0x1c3')],_0x4bad21));}}return this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x1c4'),_0x15c23f[_0x7642('0x1c3')]));};AGIVertices[_0x7642('0x13')]['google_cloud_tts']=function(_0x38f938){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x1c5'),_0x38f938['label']));_0x38f938[_0x7642('0x5d')]=_0x38f938[_0x7642('0x5d')][_0x7642('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x38f938['apiKey'])){return this[_0x7642('0x10')][_0x7642('0xac')](_0x7642('0x1c6'));}if(!this[_0x7642('0x86')](_0x38f938[_0x7642('0x5d')])){return this[_0x7642('0x10')]['noop'](_0x7642('0xc6'));}this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x1c7'),_0x38f938[_0x7642('0x5d')]));var _0x40857b=this['googleCloudTTS'][_0x7642('0x71')](this,_0x38f938);if(_0x40857b){this[_0x7642('0x10')]['noop'](util[_0x7642('0x27')](_0x7642('0x1c8'),_0x40857b));var _0x1a47a1=this[_0x7642('0x10')][_0x7642('0x104')](_0x40857b);try{fs['unlink'](_0x40857b+_0x7642('0x106'));}catch(_0x9163a5){logger['error'](_0x9163a5);}return _0x1a47a1;}return this['channel']['error'](_0x38f938,_0x7642('0x1c9'));};AGIVertices[_0x7642('0x13')][_0x7642('0x1ca')]=function(_0x40c2e3){logger[_0x7642('0x2d')](util[_0x7642('0x27')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x40c2e3[_0x7642('0x37')]));_0x40c2e3[_0x7642('0x5d')]=_0x40c2e3[_0x7642('0x5d')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7642('0x86')](_0x40c2e3['text'])){return this['channel']['noop'](_0x7642('0xc6'));}this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x1cb'),_0x40c2e3[_0x7642('0x5d')]));var _0x192733=this[_0x7642('0x61')]['sync'](this,_0x40c2e3);if(_0x192733){this['channel'][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x1cc'),_0x192733));var _0x57b9bc=this[_0x7642('0x10')][_0x7642('0x104')](_0x192733);try{fs[_0x7642('0x105')](_0x192733+_0x7642('0x106'));}catch(_0x3fe21b){logger[_0x7642('0x2b')](_0x3fe21b);}return _0x57b9bc;}return this[_0x7642('0x10')][_0x7642('0x2b')](_0x40c2e3,'Google\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0x7642('0x1cd')]=function(_0x57288f){logger['info'](util['format'](_0x7642('0x1ce'),_0x57288f[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x57288f['findBy'])){return this[_0x7642('0x10')][_0x7642('0x2b')](_0x57288f,'no\x20find\x20by\x20configured');}logger[_0x7642('0x2d')](util[_0x7642('0x27')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x7642('0x3a')],_0x57288f[_0x7642('0x158')]));var _0x4dffe4=this[_0x7642('0x52')][_0x7642('0x71')](this,_0x57288f[_0x7642('0x158')]);if(_0x4dffe4){logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15b'),this[_0x7642('0x10')]['callerid'],_0x57288f[_0x7642('0x158')]));this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x7642('0x10')][_0x7642('0x3a')],_0x57288f[_0x7642('0x158')]));return{'code':0xc8,'result':_0x7642('0x15d')};}else{logger[_0x7642('0x2d')](util[_0x7642('0x27')](_0x7642('0x15c'),this['channel'][_0x7642('0x3a')],_0x57288f[_0x7642('0x158')]));this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0x15c'),this[_0x7642('0x10')][_0x7642('0x3a')],_0x57288f[_0x7642('0x158')]));return{'code':0xc8,'result':_0x7642('0x15e')};}};AGIVertices['prototype'][_0x7642('0x1cf')]=function(_0x3ae7d6){logger[_0x7642('0x2d')](util['format']('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x3ae7d6[_0x7642('0x37')]));var _0x5867ef=this[_0x7642('0x10')][_0x7642('0x58')](_0x7642('0x1d0'),[_0x3ae7d6[_0x7642('0x1d1')],_0x3ae7d6[_0x7642('0x78')]]);if(_0x5867ef[_0x7642('0xab')]===-0x1){return _0x5867ef;}return this[_0x7642('0x10')][_0x7642('0xac')](util[_0x7642('0x27')](_0x7642('0xc4'),_0x7642('0x1d0'),_0x3ae7d6[_0x7642('0x1d1')]));};AGIVertices[_0x7642('0x13')][_0x7642('0x1d2')]=function(_0x338ba1){logger['info'](util['format'](_0x7642('0x1d3'),_0x338ba1[_0x7642('0x37')]));if(!this[_0x7642('0x86')](_0x338ba1['variable_id'])){return this['channel'][_0x7642('0x2b')](_0x338ba1,_0x7642('0x1d4'));}var _0x5e6550=this[_0x7642('0x14')][_0x7642('0x71')](this,_0x338ba1[_0x7642('0xd7')]);if(!_0x5e6550){return this['channel'][_0x7642('0x2b')](_0x338ba1,_0x7642('0x118'));}var _0x53e543=this[_0x7642('0x10')][_0x7642('0x14')](_0x5e6550);return{'code':0xc8,'result':_0x53e543[_0x7642('0xa5')]?_0x53e543['extra']:'-'};};String[_0x7642('0x13')][_0x7642('0xa4')]=function(_0x427f39,_0xf46372){return this['split'](_0x427f39)[_0x7642('0x1d5')](_0xf46372);};module['exports']=AGIVertices;
\ No newline at end of file
index ef5e907..54d9d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x478d=['info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','update','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','startAcw','interface','queue','ACW','mandatoryDisposition','name','Action','then','getAgent','voicePause'];(function(_0x2cf064,_0x206ccc){var _0x42bfaf=function(_0x113614){while(--_0x113614){_0x2cf064['push'](_0x2cf064['shift']());}};_0x42bfaf(++_0x206ccc);}(_0x478d,0x1eb));var _0xd478=function(_0x58f686,_0x3440e2){_0x58f686=_0x58f686-0x0;var _0x3c82b9=_0x478d[_0x58f686];return _0x3c82b9;};'use strict';var util=require(_0xd478('0x0'));var _=require(_0xd478('0x1'));var moment=require(_0xd478('0x2'));var ami=require('../ami');var logger=require(_0xd478('0x3'))(_0xd478('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xd478('0x5'));function Acw(_0x48b647){this[_0xd478('0x6')]=_0x48b647[_0xd478('0x6')];this['agents']=_0x48b647[_0xd478('0x7')];this[_0xd478('0x8')]=_0x48b647[_0xd478('0x8')];this[_0xd478('0x9')]={};ami['on'](_0xd478('0xa'),this[_0xd478('0xb')][_0xd478('0xc')](this));ami['on'](_0xd478('0xd'),this[_0xd478('0xe')][_0xd478('0xc')](this));ami['on'](_0xd478('0xf'),this[_0xd478('0x10')][_0xd478('0xc')](this));ami['on'](_0xd478('0x11'),this[_0xd478('0x12')][_0xd478('0xc')](this));ami['on'](_0xd478('0x13'),this[_0xd478('0x14')][_0xd478('0xc')](this));ami['on'](_0xd478('0x15'),this[_0xd478('0x16')][_0xd478('0xc')](this));ami['on'](_0xd478('0x17'),this[_0xd478('0x18')][_0xd478('0xc')](this));}function getDiff(_0x4d83c3){var _0x56c3a1=moment()[_0xd478('0x19')](0x0);var _0xf51d70=moment(_0x4d83c3)[_0xd478('0x19')](0x0);return _0x56c3a1[_0xd478('0x1a')](_0xf51d70,'seconds');}Acw['prototype'][_0xd478('0x1b')]=function(_0x1a569a){try{var _0x5f2510=this;var _0x276531=this['channels'][_0x1a569a][_0xd478('0x1c')];var _0x40e5c1=this['channels'][_0x1a569a][_0xd478('0x1d')];var _0x352378=this[_0xd478('0x6')][_0x40e5c1];var _0x1d8d61=![];var _0x4f67e4=_0xd478('0x1e');if(_0x352378[_0xd478('0x1f')]){if(_0x352378['mandatoryDispositionPause'][_0xd478('0x20')]){_0x1d8d61=!![];_0x4f67e4=_0x352378['mandatoryDispositionPause'][_0xd478('0x20')];}}ami[_0xd478('0x21')]({'action':'QueuePause','interface':_0x276531,'paused':!![],'reason':_0x4f67e4})[_0xd478('0x22')](function(_0x1f3f9a){if(_0x5f2510[_0xd478('0x7')][_0x276531]){return RpcUser[_0xd478('0x23')](_0x5f2510[_0xd478('0x7')][_0x276531]['id'])[_0xd478('0x22')](function(_0x4983e0){if(_0x4983e0&&!_0x4983e0[_0xd478('0x24')]){logger[_0xd478('0x25')](_0xd478('0x26'),_0x1a569a,_0x276531,_0x40e5c1);var _0x32df40=_0x5f2510['channels'][_0x1a569a][_0xd478('0x27')]&&_0x5f2510[_0xd478('0x9')][_0x1a569a][_0xd478('0x28')]?_0x5f2510[_0xd478('0x9')][_0x1a569a]['destlinkedid']:_0x1a569a;return RpcUser['savePause'](_0x5f2510[_0xd478('0x7')][_0x276531],_0x4f67e4,_0x32df40)[_0xd478('0x22')](function(_0x51ba67){if(!_0x1d8d61){_0x5f2510[_0xd478('0x8')][_0x276531]={};logger[_0xd478('0x25')](_0xd478('0x29'),_0x1a569a,_0x5f2510[_0xd478('0x6')][_0x40e5c1][_0xd478('0x2a')],_0x276531,_0x40e5c1);_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x2b')]=setTimeout(_0x5f2510[_0xd478('0x2c')][_0xd478('0xc')](_0x5f2510,_0x276531),_0x5f2510[_0xd478('0x6')][_0x40e5c1][_0xd478('0x2a')]*0x3e8);_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x2d')]=moment()[_0xd478('0x2e')](_0xd478('0x2f'));_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x30')]=_0x1a569a;_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x1d')]=_0x40e5c1;_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x31')]=function(){var _0x297cd9=getDiff(_0x5f2510[_0xd478('0x8')][_0x276531]['lastPauseAt']);clearTimeout(_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x2b')]);_0x5f2510[_0xd478('0x8')][_0x276531][_0xd478('0x2b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x297cd9},_0x5f2510['timers'][_0x276531][_0xd478('0x30')],_0x276531)[_0xd478('0x22')](function(_0x5e4b6a){logger[_0xd478('0x25')](_0xd478('0x32'),_0x1a569a,_0x297cd9,_0x5e4b6a);})[_0xd478('0x33')](function(_0x27a64e){logger[_0xd478('0x34')](_0xd478('0x35'),_0x1a569a,_0x27a64e);});delete _0x5f2510['timers'][_0x276531];};}});}else{logger[_0xd478('0x25')](_0xd478('0x36'),_0x1a569a,_0x276531,_0x40e5c1);}});}})[_0xd478('0x33')](function(_0x3cde04){logger['error'](_0xd478('0x29'),_0x1a569a,_0x5f2510['voiceQueues'][_0x40e5c1][_0xd478('0x2a')],_0x276531,_0x40e5c1);})[_0xd478('0x37')](function(){delete _0x5f2510[_0xd478('0x9')][_0x1a569a];});}catch(_0x2cbbfd){logger[_0xd478('0x34')](_0xd478('0x38'),_0x2cbbfd[_0xd478('0x39')]);}};Acw['prototype'][_0xd478('0x2c')]=function(_0x199368){try{var _0x2d9da3=this;if(_0x2d9da3[_0xd478('0x8')][_0x199368]){_0x2d9da3[_0xd478('0x8')][_0x199368][_0xd478('0x2b')]=![];var _0x24147c=_0x2d9da3[_0xd478('0x8')][_0x199368][_0xd478('0x30')];var _0x51f63e=_0x2d9da3['timers'][_0x199368][_0xd478('0x1d')];var _0xc9df31=_0x2d9da3[_0xd478('0x6')][_0x51f63e][_0xd478('0x2a')];logger[_0xd478('0x25')]('[%s][TIMER][STOP][AGENT:%s]',_0x24147c,_0x199368);RpcUser['saveUnpause'](this[_0xd478('0x7')][_0x199368]);RpcVoiceAgentReport[_0xd478('0x3a')]({'acwtime':_0xc9df31,'agentacw':!![]},_0x24147c,_0x199368)[_0xd478('0x22')](function(_0x12f019){logger[_0xd478('0x25')](_0xd478('0x32'),_0x24147c,_0xc9df31,_0x12f019);})[_0xd478('0x33')](function(_0x1f2f50){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x24147c,_0x1f2f50);});}else{logger[_0xd478('0x34')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x199368);if(_0x2d9da3[_0xd478('0x8')]){logger[_0xd478('0x25')](_0xd478('0x3b'),JSON[_0xd478('0x3c')](_0x2d9da3[_0xd478('0x8')]));}}}catch(_0x4b9875){logger[_0xd478('0x34')](_0xd478('0x3d'),_0x4b9875[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')]['syncAgentConnect']=function(_0x4cff7d){try{if(this[_0xd478('0x6')][_0x4cff7d['queue']]&&(this[_0xd478('0x6')][_0x4cff7d[_0xd478('0x1d')]][_0xd478('0x4')]||this['voiceQueues'][_0x4cff7d[_0xd478('0x1d')]]['mandatoryDisposition'])){if(this['agents'][_0x4cff7d[_0xd478('0x1c')]]){this[_0xd478('0x9')][_0x4cff7d[_0xd478('0x30')]]={'queue':_0x4cff7d[_0xd478('0x1d')],'interface':_0x4cff7d[_0xd478('0x1c')],'destlinkedid':_0x4cff7d[_0xd478('0x28')]};}}}catch(_0x3ad3a8){logger[_0xd478('0x34')](_0xd478('0x3f'),_0x3ad3a8[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')]['syncAgentConnectPreview']=function(_0x3df7e0){try{if(this[_0xd478('0x6')][_0x3df7e0[_0xd478('0x1d')]]&&(this[_0xd478('0x6')][_0x3df7e0[_0xd478('0x1d')]][_0xd478('0x4')]||this[_0xd478('0x6')][_0x3df7e0[_0xd478('0x1d')]][_0xd478('0x1f')])){if(this[_0xd478('0x7')][_0x3df7e0[_0xd478('0x1c')]]){this[_0xd478('0x9')][_0x3df7e0[_0xd478('0x30')]]={'queue':_0x3df7e0[_0xd478('0x1d')],'interface':_0x3df7e0[_0xd478('0x1c')]};}}}catch(_0x24228e){logger[_0xd478('0x34')](_0xd478('0x40'),_0x24228e[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')][_0xd478('0xe')]=function(_0x4d761c){try{if(this[_0xd478('0x9')][_0x4d761c[_0xd478('0x30')]]&&_[_0xd478('0x41')](this[_0xd478('0x9')][_0x4d761c[_0xd478('0x30')]][_0xd478('0x27')])){logger[_0xd478('0x25')](_0xd478('0x42'),_0x4d761c['uniqueid']);this[_0xd478('0x1b')](_0x4d761c[_0xd478('0x30')]);}else if(this[_0xd478('0x9')][_0x4d761c[_0xd478('0x43')]]&&_[_0xd478('0x41')](this[_0xd478('0x9')][_0x4d761c['linkedid']][_0xd478('0x27')])){logger[_0xd478('0x25')](_0xd478('0x44'),_0x4d761c['linkedid']);this[_0xd478('0x1b')](_0x4d761c[_0xd478('0x43')]);}}catch(_0x413290){logger[_0xd478('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x413290[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')][_0xd478('0x10')]=function(_0x194a9a){try{if(this[_0xd478('0x9')][_0x194a9a['uniqueid']]&&this['channels'][_0x194a9a[_0xd478('0x30')]][_0xd478('0x27')]){logger[_0xd478('0x25')](_0xd478('0x45'),_0x194a9a[_0xd478('0x30')]);this['startAcw'](_0x194a9a[_0xd478('0x30')]);}else if(this[_0xd478('0x9')][_0x194a9a[_0xd478('0x43')]]&&this[_0xd478('0x9')][_0x194a9a['linkedid']][_0xd478('0x27')]){logger[_0xd478('0x25')](_0xd478('0x46'),_0x194a9a['linkedid']);this['startAcw'](_0x194a9a[_0xd478('0x43')]);}}catch(_0x13a191){logger[_0xd478('0x34')](_0xd478('0x47'),_0x13a191[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')]['syncAttendedTransfer']=function(_0x9cf15b){try{if(!_['isNil'](this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x48')]])){this['startAcw'](_0x9cf15b[_0xd478('0x48')]);if(this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x49')]]){this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x49')]][_0xd478('0x27')]=!![];this[_0xd478('0x9')][_0x9cf15b['transfertargetuniqueid']]=this[_0xd478('0x9')][_0x9cf15b['secondtransfereruniqueid']];delete this[_0xd478('0x9')][_0x9cf15b['secondtransfereruniqueid']];}}else if(!_[_0xd478('0x4a')](this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x4b')]])){this[_0xd478('0x1b')](_0x9cf15b[_0xd478('0x4b')]);if(this[_0xd478('0x9')][_0x9cf15b['origtransfereruniqueid']]){this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x4c')]]['attended']=!![];this[_0xd478('0x9')][_0x9cf15b[_0xd478('0x48')]]=this[_0xd478('0x9')][_0x9cf15b['origtransfereruniqueid']];delete this['channels'][_0x9cf15b[_0xd478('0x4c')]];}}}catch(_0x2ebd8a){logger[_0xd478('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x2ebd8a[_0xd478('0x39')]);}};Acw[_0xd478('0x3e')]['syncBlindTransfer']=function(_0x1a9a95){try{if(this[_0xd478('0x9')][_0x1a9a95['transfereruniqueid']]){logger[_0xd478('0x25')](_0xd478('0x4d'),JSON[_0xd478('0x3c')](_0x1a9a95[_0xd478('0x4e')]));this['startAcw'](_0x1a9a95[_0xd478('0x4e')]);}else if(this[_0xd478('0x9')][_0x1a9a95['transfererlinkedid']]){logger[_0xd478('0x25')](_0xd478('0x4f'),JSON['stringify'](_0x1a9a95['transfererlinkedid']));this[_0xd478('0x1b')](_0x1a9a95[_0xd478('0x50')]);}}catch(_0x31b94b){logger[_0xd478('0x34')](_0xd478('0x51'),_0x31b94b[_0xd478('0x39')]);}};Acw['prototype'][_0xd478('0x12')]=function(_0x394da1){try{if(this['voiceQueues'][_0x394da1[_0xd478('0x1d')]]&&this[_0xd478('0x6')][_0x394da1[_0xd478('0x1d')]][_0xd478('0x52')]===_0xd478('0x53')){if(this['agents'][_0x394da1[_0xd478('0x1c')]]){logger['info'](_0xd478('0x54'),_0x394da1[_0xd478('0x30')],_0x394da1[_0xd478('0x1c')],_0x394da1[_0xd478('0x1d')]);return RpcUser['savePause'](this[_0xd478('0x7')][_0x394da1['interface']],_0xd478('0x55'),_0x394da1[_0xd478('0x30')]);}}}catch(_0x5ca548){logger[_0xd478('0x34')](_0xd478('0x56'),_0x5ca548['message']);}};module[_0xd478('0x57')]=Acw;
\ No newline at end of file
+var _0xfe3e=['[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','message','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[ACW][syncAgentRingNoAnswer]\x20%s','exports','moment','../ami','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','getAgent','then','info','attended','destlinkedid','savePause','acwTimeout','timer','stopAcw','updateAcw','lastPauseAt','uniqueid','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','catch','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update'];(function(_0x3699d3,_0x4bf5f2){var _0x2f8ef0=function(_0x1e44c5){while(--_0x1e44c5){_0x3699d3['push'](_0x3699d3['shift']());}};_0x2f8ef0(++_0x4bf5f2);}(_0xfe3e,0x15f));var _0xefe3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xfe3e[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var moment=require(_0xefe3('0x0'));var ami=require(_0xefe3('0x1'));var logger=require('../../../config/logger')('acw');var RpcUser=require(_0xefe3('0x2'));var RpcVoiceAgentReport=require(_0xefe3('0x3'));function Acw(_0x1eb2e9){this[_0xefe3('0x4')]=_0x1eb2e9[_0xefe3('0x4')];this[_0xefe3('0x5')]=_0x1eb2e9[_0xefe3('0x5')];this[_0xefe3('0x6')]=_0x1eb2e9['timers'];this[_0xefe3('0x7')]={};ami['on'](_0xefe3('0x8'),this[_0xefe3('0x9')][_0xefe3('0xa')](this));ami['on']('hanguprequest',this[_0xefe3('0xb')][_0xefe3('0xa')](this));ami['on'](_0xefe3('0xc'),this[_0xefe3('0xd')][_0xefe3('0xa')](this));ami['on'](_0xefe3('0xe'),this[_0xefe3('0xf')][_0xefe3('0xa')](this));ami['on'](_0xefe3('0x10'),this[_0xefe3('0x11')][_0xefe3('0xa')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on'](_0xefe3('0x12'),this[_0xefe3('0x13')][_0xefe3('0xa')](this));}function getDiff(_0x37ed96){var _0x155ee3=moment()[_0xefe3('0x14')](0x0);var _0x3b3800=moment(_0x37ed96)[_0xefe3('0x14')](0x0);return _0x155ee3[_0xefe3('0x15')](_0x3b3800,'seconds');}Acw[_0xefe3('0x16')][_0xefe3('0x17')]=function(_0x21a8d6){try{var _0x42ddb5=this;var _0x18ff3d=this['channels'][_0x21a8d6][_0xefe3('0x18')];var _0x5746d4=this[_0xefe3('0x7')][_0x21a8d6][_0xefe3('0x19')];var _0x487938=this[_0xefe3('0x4')][_0x5746d4];var _0xd6a3fb=![];var _0x106f56=_0xefe3('0x1a');if(_0x487938[_0xefe3('0x1b')]){if(_0x487938[_0xefe3('0x1c')][_0xefe3('0x1d')]){_0xd6a3fb=!![];_0x106f56=_0x487938['mandatoryDispositionPause'][_0xefe3('0x1d')];}}return ami[_0xefe3('0x1e')]({'action':_0xefe3('0x1f'),'interface':_0x18ff3d,'paused':!![],'reason':_0x106f56})['then'](function(){if(_0x42ddb5[_0xefe3('0x5')][_0x18ff3d]){return RpcUser[_0xefe3('0x20')](_0x42ddb5[_0xefe3('0x5')][_0x18ff3d]['id'])[_0xefe3('0x21')](function(_0x22c6cd){if(_0x22c6cd&&!_0x22c6cd['voicePause']){logger[_0xefe3('0x22')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x21a8d6,_0x18ff3d,_0x5746d4);var _0x203920=_0x42ddb5[_0xefe3('0x7')][_0x21a8d6][_0xefe3('0x23')]&&_0x42ddb5[_0xefe3('0x7')][_0x21a8d6][_0xefe3('0x24')]?_0x42ddb5[_0xefe3('0x7')][_0x21a8d6][_0xefe3('0x24')]:_0x21a8d6;return RpcUser[_0xefe3('0x25')](_0x42ddb5[_0xefe3('0x5')][_0x18ff3d],_0x106f56,_0x203920)['then'](function(){if(!_0xd6a3fb){_0x42ddb5[_0xefe3('0x6')][_0x18ff3d]={};logger[_0xefe3('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x21a8d6,_0x42ddb5[_0xefe3('0x4')][_0x5746d4][_0xefe3('0x26')],_0x18ff3d,_0x5746d4);_0x42ddb5[_0xefe3('0x6')][_0x18ff3d][_0xefe3('0x27')]=setTimeout(_0x42ddb5[_0xefe3('0x28')][_0xefe3('0xa')](_0x42ddb5,_0x18ff3d),_0x42ddb5[_0xefe3('0x4')][_0x5746d4]['acwTimeout']*0x3e8);_0x42ddb5['timers'][_0x18ff3d]['lastPauseAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x42ddb5['timers'][_0x18ff3d]['uniqueid']=_0x21a8d6;_0x42ddb5[_0xefe3('0x6')][_0x18ff3d][_0xefe3('0x19')]=_0x5746d4;_0x42ddb5['timers'][_0x18ff3d][_0xefe3('0x29')]=function(){var _0xc48f20=getDiff(_0x42ddb5['timers'][_0x18ff3d][_0xefe3('0x2a')]);clearTimeout(_0x42ddb5['timers'][_0x18ff3d][_0xefe3('0x27')]);_0x42ddb5['timers'][_0x18ff3d][_0xefe3('0x27')]=![];RpcVoiceAgentReport['update']({'acwtime':_0xc48f20},_0x42ddb5['timers'][_0x18ff3d][_0xefe3('0x2b')],_0x18ff3d)[_0xefe3('0x21')](function(_0x47d213){logger[_0xefe3('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x21a8d6,_0xc48f20,_0x47d213);})['catch'](function(_0x47e59f){logger[_0xefe3('0x2c')](_0xefe3('0x2d'),_0x21a8d6,_0x47e59f);});delete _0x42ddb5['timers'][_0x18ff3d];};}});}else{logger[_0xefe3('0x22')](_0xefe3('0x2e'),_0x21a8d6,_0x18ff3d,_0x5746d4);}});}})[_0xefe3('0x2f')](function(){logger[_0xefe3('0x2c')](_0xefe3('0x30'),_0x21a8d6,_0x42ddb5[_0xefe3('0x4')][_0x5746d4]['acwTimeout'],_0x18ff3d,_0x5746d4);})[_0xefe3('0x31')](function(){delete _0x42ddb5[_0xefe3('0x7')][_0x21a8d6];});}catch(_0x913a95){logger[_0xefe3('0x2c')](_0xefe3('0x32'),_0x913a95['message']);}};Acw[_0xefe3('0x16')]['stopAcw']=function(_0x315f50){try{var _0x376132=this;if(_0x376132[_0xefe3('0x6')][_0x315f50]){_0x376132[_0xefe3('0x6')][_0x315f50][_0xefe3('0x27')]=![];var _0x32533a=_0x376132['timers'][_0x315f50][_0xefe3('0x2b')];var _0x32eedf=_0x376132[_0xefe3('0x6')][_0x315f50]['queue'];var _0x74e606=_0x376132[_0xefe3('0x4')][_0x32eedf][_0xefe3('0x26')];logger[_0xefe3('0x22')](_0xefe3('0x33'),_0x32533a,_0x315f50);RpcUser[_0xefe3('0x34')](this['agents'][_0x315f50]);RpcVoiceAgentReport[_0xefe3('0x35')]({'acwtime':_0x74e606,'agentacw':!![]},_0x32533a,_0x315f50)[_0xefe3('0x21')](function(_0x4e0866){logger[_0xefe3('0x22')](_0xefe3('0x36'),_0x32533a,_0x74e606,_0x4e0866);})['catch'](function(_0x595abd){logger[_0xefe3('0x2c')](_0xefe3('0x2d'),_0x32533a,_0x595abd);});}else{logger[_0xefe3('0x2c')](_0xefe3('0x37'),_0x315f50);if(_0x376132[_0xefe3('0x6')]){logger[_0xefe3('0x22')]('[ACW][TIMERS]',JSON['stringify'](_0x376132[_0xefe3('0x6')]));}}}catch(_0x46a5c6){logger[_0xefe3('0x2c')](_0xefe3('0x38'),_0x46a5c6['message']);}};Acw[_0xefe3('0x16')][_0xefe3('0x9')]=function(_0x4a107f){try{if(this[_0xefe3('0x4')][_0x4a107f['queue']]&&(this[_0xefe3('0x4')][_0x4a107f[_0xefe3('0x19')]]['acw']||this[_0xefe3('0x4')][_0x4a107f[_0xefe3('0x19')]]['mandatoryDisposition'])){if(this[_0xefe3('0x5')][_0x4a107f[_0xefe3('0x18')]]){this[_0xefe3('0x7')][_0x4a107f['uniqueid']]={'queue':_0x4a107f[_0xefe3('0x19')],'interface':_0x4a107f['interface'],'destlinkedid':_0x4a107f['destlinkedid']};}}}catch(_0x2e2464){logger[_0xefe3('0x2c')]('[ACW][syncAgentConnect]\x20%s',_0x2e2464['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x4f758a){try{if(this['voiceQueues'][_0x4f758a[_0xefe3('0x19')]]&&(this['voiceQueues'][_0x4f758a[_0xefe3('0x19')]]['acw']||this['voiceQueues'][_0x4f758a['queue']][_0xefe3('0x1b')])){if(this[_0xefe3('0x5')][_0x4f758a[_0xefe3('0x18')]]){this['channels'][_0x4f758a['uniqueid']]={'queue':_0x4f758a[_0xefe3('0x19')],'interface':_0x4f758a[_0xefe3('0x18')]};}}}catch(_0x31b46e){logger[_0xefe3('0x2c')](_0xefe3('0x39'),_0x31b46e[_0xefe3('0x3a')]);}};Acw[_0xefe3('0x16')][_0xefe3('0xb')]=function(_0x41236e){try{if(this[_0xefe3('0x7')][_0x41236e[_0xefe3('0x2b')]]&&_[_0xefe3('0x3b')](this[_0xefe3('0x7')][_0x41236e[_0xefe3('0x2b')]][_0xefe3('0x23')])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x41236e[_0xefe3('0x2b')]);this['startAcw'](_0x41236e[_0xefe3('0x2b')]);}else if(this[_0xefe3('0x7')][_0x41236e[_0xefe3('0x3c')]]&&_[_0xefe3('0x3b')](this[_0xefe3('0x7')][_0x41236e[_0xefe3('0x3c')]][_0xefe3('0x23')])){logger[_0xefe3('0x22')](_0xefe3('0x3d'),_0x41236e[_0xefe3('0x3c')]);this['startAcw'](_0x41236e['linkedid']);}}catch(_0xafbb1d){logger[_0xefe3('0x2c')](_0xefe3('0x3e'),_0xafbb1d[_0xefe3('0x3a')]);}};Acw['prototype'][_0xefe3('0xd')]=function(_0x52e09c){try{if(this[_0xefe3('0x7')][_0x52e09c['uniqueid']]&&this['channels'][_0x52e09c[_0xefe3('0x2b')]]['attended']){logger[_0xefe3('0x22')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x52e09c['uniqueid']);this[_0xefe3('0x17')](_0x52e09c['uniqueid']);}else if(this[_0xefe3('0x7')][_0x52e09c['linkedid']]&&this[_0xefe3('0x7')][_0x52e09c[_0xefe3('0x3c')]]['attended']){logger[_0xefe3('0x22')](_0xefe3('0x3f'),_0x52e09c[_0xefe3('0x3c')]);this['startAcw'](_0x52e09c[_0xefe3('0x3c')]);}}catch(_0x45cfbd){logger[_0xefe3('0x2c')](_0xefe3('0x40'),_0x45cfbd[_0xefe3('0x3a')]);}};Acw[_0xefe3('0x16')]['syncAttendedTransfer']=function(_0x99f984){try{if(!_[_0xefe3('0x41')](this[_0xefe3('0x7')][_0x99f984['transfereeuniqueid']])){this[_0xefe3('0x17')](_0x99f984[_0xefe3('0x42')]);if(this[_0xefe3('0x7')][_0x99f984['secondtransfereruniqueid']]){this['channels'][_0x99f984[_0xefe3('0x43')]][_0xefe3('0x23')]=!![];this[_0xefe3('0x7')][_0x99f984[_0xefe3('0x44')]]=this[_0xefe3('0x7')][_0x99f984['secondtransfereruniqueid']];delete this[_0xefe3('0x7')][_0x99f984[_0xefe3('0x43')]];}}else if(!_[_0xefe3('0x41')](this[_0xefe3('0x7')][_0x99f984[_0xefe3('0x44')]])){this['startAcw'](_0x99f984[_0xefe3('0x44')]);if(this[_0xefe3('0x7')][_0x99f984['origtransfereruniqueid']]){this['channels'][_0x99f984[_0xefe3('0x45')]][_0xefe3('0x23')]=!![];this[_0xefe3('0x7')][_0x99f984['transfereeuniqueid']]=this[_0xefe3('0x7')][_0x99f984[_0xefe3('0x45')]];delete this[_0xefe3('0x7')][_0x99f984[_0xefe3('0x45')]];}}}catch(_0x1a542a){logger['error'](_0xefe3('0x46'),_0x1a542a[_0xefe3('0x3a')]);}};Acw['prototype'][_0xefe3('0x47')]=function(_0x3adfa4){try{if(this['channels'][_0x3adfa4[_0xefe3('0x48')]]){logger[_0xefe3('0x22')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xefe3('0x49')](_0x3adfa4['transfereruniqueid']));this[_0xefe3('0x17')](_0x3adfa4[_0xefe3('0x48')]);}else if(this[_0xefe3('0x7')][_0x3adfa4[_0xefe3('0x4a')]]){logger['info'](_0xefe3('0x4b'),JSON[_0xefe3('0x49')](_0x3adfa4[_0xefe3('0x4a')]));this[_0xefe3('0x17')](_0x3adfa4[_0xefe3('0x4a')]);}}catch(_0x20bde7){logger[_0xefe3('0x2c')](_0xefe3('0x4c'),_0x20bde7[_0xefe3('0x3a')]);}};Acw[_0xefe3('0x16')][_0xefe3('0xf')]=function(_0x13557f){try{if(this[_0xefe3('0x4')][_0x13557f[_0xefe3('0x19')]]&&this['voiceQueues'][_0x13557f[_0xefe3('0x19')]][_0xefe3('0x4d')]===_0xefe3('0x4e')){if(this[_0xefe3('0x5')][_0x13557f[_0xefe3('0x18')]]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x13557f[_0xefe3('0x2b')],_0x13557f['interface'],_0x13557f[_0xefe3('0x19')]);return RpcUser[_0xefe3('0x25')](this[_0xefe3('0x5')][_0x13557f[_0xefe3('0x18')]],'Auto-Pause',_0x13557f['uniqueid']);}}}catch(_0x34c521){logger[_0xefe3('0x2c')](_0xefe3('0x4f'),_0x34c521[_0xefe3('0x3a')]);}};module[_0xefe3('0x50')]=Acw;
\ No newline at end of file
index 7d0adda..22b5edc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x3ff2ae,_0x49e3df){var _0x1f2e95=function(_0x15d1ee){while(--_0x15d1ee){_0x3ff2ae['push'](_0x3ff2ae['shift']());}};_0x1f2e95(++_0x49e3df);}(_0xb7e7,0x121));var _0x7b7e=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xb7e7[_0x174ef5];return _0x1cc379;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
+var _0x0902=['[ami.js][fullybooted]','exports','asterisk-manager','util','../../config/logger','../../config/environment','asterisk','port','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionCoreShowChannels','catch'];(function(_0x590da5,_0x298084){var _0x54d4c4=function(_0xf67551){while(--_0xf67551){_0x590da5['push'](_0x590da5['shift']());}};_0x54d4c4(++_0x298084);}(_0x0902,0x1ee));var _0x2090=function(_0x218994,_0x2cf487){_0x218994=_0x218994-0x0;var _0x3f350b=_0x0902[_0x218994];return _0x3f350b;};'use strict';var Manager=require(_0x2090('0x0'));var BPromise=require('bluebird');var util=require(_0x2090('0x1'));var logger=require(_0x2090('0x2'))('ami');var config=require(_0x2090('0x3'));var ami=new Manager(config[_0x2090('0x4')][_0x2090('0x5')],config[_0x2090('0x4')]['ip'],config[_0x2090('0x4')][_0x2090('0x6')],config['asterisk'][_0x2090('0x7')],!![]);ami[_0x2090('0x8')]();ami[_0x2090('0x9')]=BPromise[_0x2090('0xa')](ami[_0x2090('0xb')]);function error(_0x37ecc1){logger[_0x2090('0xc')](util[_0x2090('0xd')](_0x2090('0xe'),config[_0x2090('0x4')]['username'],config[_0x2090('0x4')]['ip'],config['asterisk'][_0x2090('0x5')],util[_0x2090('0xf')](_0x37ecc1,![],null)));}function close(){logger[_0x2090('0xc')](util[_0x2090('0xd')](_0x2090('0x10'),config['asterisk'][_0x2090('0x6')],config['asterisk']['ip'],config[_0x2090('0x4')][_0x2090('0x5')]));}ami[_0x2090('0x11')]=function(){return function(){return ami[_0x2090('0x9')]({'action':_0x2090('0x12')});};};ami[_0x2090('0x13')]=function(){return function(){return ami[_0x2090('0x9')]({'action':_0x2090('0x14')});};};ami[_0x2090('0x15')]=function(){return function(){return ami[_0x2090('0x9')]({'action':_0x2090('0x16')});};};ami[_0x2090('0x17')]=function(){return function(){return ami[_0x2090('0x9')]({'action':_0x2090('0x18')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0x2090('0x9')]({'action':_0x2090('0x19')});};};function connect(){logger[_0x2090('0x1a')](util[_0x2090('0xd')](_0x2090('0x1b'),config[_0x2090('0x4')][_0x2090('0x6')],config[_0x2090('0x4')]['ip'],config[_0x2090('0x4')][_0x2090('0x5')]));ami[_0x2090('0x1c')](_0x2090('0xc'),error);ami[_0x2090('0x1c')](_0x2090('0x1d'),close);}ami['on'](_0x2090('0x1e'),connect);ami['on'](_0x2090('0x1f'),function(_0x740fba){logger[_0x2090('0x1a')](util[_0x2090('0xd')](_0x2090('0x20'),config[_0x2090('0x4')]['username'],config[_0x2090('0x4')]['ip'],config[_0x2090('0x4')][_0x2090('0x5')],util[_0x2090('0xf')](_0x740fba,![],null)));});ami['on'](_0x2090('0x21'),function(){logger[_0x2090('0x1a')](util[_0x2090('0xd')](_0x2090('0x22'),config['asterisk'][_0x2090('0x6')],config['asterisk']['ip'],config[_0x2090('0x4')][_0x2090('0x5')]));return Promise[_0x2090('0x23')]()[_0x2090('0x24')](ami[_0x2090('0x11')]())['then'](ami[_0x2090('0x13')]())[_0x2090('0x24')](ami[_0x2090('0x15')]())[_0x2090('0x24')](ami['actionQueueSummary']())['then'](ami[_0x2090('0x25')]())[_0x2090('0x26')](function(_0x27ea6b){logger[_0x2090('0xc')](_0x2090('0x27'),util[_0x2090('0xf')](_0x27ea6b,{'showHidden':![],'depth':null}));});});ami[_0x2090('0x1c')](_0x2090('0xc'),error);ami[_0x2090('0x1c')](_0x2090('0x1d'),close);module[_0x2090('0x28')]=ami;
\ No newline at end of file
index 9623330..f562240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x1a2c2b,_0x530c67){var _0x4c9b3a=function(_0x1262eb){while(--_0x1262eb){_0x1a2c2b['push'](_0x1a2c2b['shift']());}};_0x4c9b3a(++_0x530c67);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x4d5d28,_0x26bd9b){_0x4d5d28=_0x4d5d28-0x0;var _0x2026b1=_0xbdb7[_0x4d5d28];return _0x2026b1;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
+var _0xcb91=['request','debug','memberReport','error','rpc','message','result','catch','exports','../../config/logger','ami','client','http'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x27ddf5,_0x5a3e18){_0x27ddf5=_0x27ddf5-0x0;var _0x26e74a=_0xcb91[_0x27ddf5];return _0x26e74a;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var client=jayson[_0x1cb9('0x2')][_0x1cb9('0x3')]({'port':0x2329});client['Request']=function(_0x8c392f,_0x2c17b8){return new BPromise(function(_0x545a34,_0x13d5fd){return client[_0x1cb9('0x4')](_0x8c392f,_0x2c17b8)['then'](function(_0x226b69){logger[_0x1cb9('0x5')]('rpc',_0x1cb9('0x6'),_0x8c392f,_0x2c17b8,_0x226b69);if(_0x226b69[_0x1cb9('0x7')]){logger['error'](_0x1cb9('0x8'),'memberReport',_0x8c392f,_0x226b69['error'][_0x1cb9('0x9')],_0x2c17b8);return _0x13d5fd(_0x226b69[_0x1cb9('0x7')][_0x1cb9('0x9')]);}else{return _0x545a34(_0x226b69[_0x1cb9('0xa')]);}})[_0x1cb9('0xb')](function(_0x50ce71){logger[_0x1cb9('0x7')](_0x1cb9('0x8'),_0x1cb9('0x6'),_0x8c392f,_0x50ce71,_0x2c17b8);return _0x13d5fd(_0x50ce71);});});};module[_0x1cb9('0xc')]=client;
\ No newline at end of file
index 76ec66b..672473d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ea=['countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','idHopper','firstName','starttime','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','util','lodash','isNil','string','voiceQueue','uniqueid','phone','Contact','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x4e1026,_0xfd377){var _0x42ab92=function(_0x600ee4){while(--_0x600ee4){_0x4e1026['push'](_0x4e1026['shift']());}};_0x42ab92(++_0xfd377);}(_0x69ea,0xe8));var _0xa69e=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x69ea[_0x59ee6f];return _0x4c0979;};'use strict';var util=require(_0xa69e('0x0'));var _=require(_0xa69e('0x1'));var moment=require('moment');function checkNameSurname(_0x5baf44,_0x32803a,_0x9c66d8){var _0x3e0aae='';if(!_[_0xa69e('0x2')](_0x32803a)&&_0xa69e('0x3')===typeof _0x32803a){_0x3e0aae+=_0x32803a;}if(!_[_0xa69e('0x2')](_0x9c66d8)&&'string'===typeof _0x9c66d8){_0x3e0aae+='\x20'+_0x9c66d8;}if(_0x3e0aae!==''){return _0x3e0aae;}return _0x5baf44;}function Action(_0x15a6d2,_0x1a3e60,_0xc6e54f){this[_0xa69e('0x4')]=_0x15a6d2;this[_0xa69e('0x5')]=_0xc6e54f||undefined;this['name']=checkNameSurname(_0x1a3e60['Contact'][_0xa69e('0x6')],_0x1a3e60['Contact']['firstName'],_0x1a3e60[_0xa69e('0x7')][_0xa69e('0x8')]);this[_0xa69e('0x9')]=_0x1a3e60[_0xa69e('0x6')];this[_0xa69e('0xa')]=_0x15a6d2['name'];this['active']=_0x1a3e60[_0xa69e('0xb')]||![];this[_0xa69e('0xc')]=_0x15a6d2[_0xa69e('0xc')];this[_0xa69e('0xd')]=_0x15a6d2[_0xa69e('0xd')]||0x3;this[_0xa69e('0xe')]=_0x1a3e60[_0xa69e('0xe')];this[_0xa69e('0xf')]=_0x1a3e60[_0xa69e('0xf')];this[_0xa69e('0x10')]=_0x1a3e60[_0xa69e('0x10')];this[_0xa69e('0x11')]=_0x1a3e60['countnoanswerretry'];this[_0xa69e('0x12')]=_0x1a3e60[_0xa69e('0x12')];this[_0xa69e('0x13')]=_0x1a3e60[_0xa69e('0x13')];this[_0xa69e('0x14')]=_0x1a3e60[_0xa69e('0x14')];this[_0xa69e('0x15')]=_0x1a3e60[_0xa69e('0x15')];this[_0xa69e('0x16')]=_0x1a3e60['countagentrejectretry'];this[_0xa69e('0x17')]=_0x1a3e60['ContactId'];this[_0xa69e('0x18')]=_0x1a3e60[_0xa69e('0x18')];this[_0xa69e('0x19')]=_0x1a3e60['UserId'];this[_0xa69e('0x1a')]=_0x1a3e60['VoiceQueueId'];this['CampaignId']=_0x1a3e60['CampaignId'];this[_0xa69e('0x1b')]=_0x1a3e60['id'];this['ContactFirstName']=_0x1a3e60[_0xa69e('0x7')][_0xa69e('0x1c')]||'';this[_0xa69e('0x1d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xa69e('0x1e')]=_0x1a3e60[_0xa69e('0x1e')];this[_0xa69e('0x1f')]=_0x1a3e60[_0xa69e('0x1f')];this['callbackat']=_0x1a3e60[_0xa69e('0x20')];this[_0xa69e('0x21')]=_0x1a3e60['recallme'];this[_0xa69e('0x22')]='';this[_0xa69e('0x23')]='';}Action[_0xa69e('0x24')][_0xa69e('0x25')]=function(){return util['format'](_0xa69e('0x26'),this[_0xa69e('0x27')],this[_0xa69e('0x4')][_0xa69e('0x28')]>0x0?this[_0xa69e('0x9')][_0xa69e('0x29')](this['voiceQueue'][_0xa69e('0x28')]):this[_0xa69e('0x9')]);};Action[_0xa69e('0x24')]['getQueue']=function(){return this[_0xa69e('0xa')];};module['exports']=Action;
\ No newline at end of file
+var _0xee53=['util','lodash','moment','isNil','string','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','getCaller','format','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','getQueue'];(function(_0xa16bd1,_0x28a435){var _0x58dae9=function(_0x292921){while(--_0x292921){_0xa16bd1['push'](_0xa16bd1['shift']());}};_0x58dae9(++_0x28a435);}(_0xee53,0x1b8));var _0x3ee5=function(_0x2b31a8,_0x28b862){_0x2b31a8=_0x2b31a8-0x0;var _0x1175a5=_0xee53[_0x2b31a8];return _0x1175a5;};'use strict';var util=require(_0x3ee5('0x0'));var _=require(_0x3ee5('0x1'));var moment=require(_0x3ee5('0x2'));function checkNameSurname(_0x459f0f,_0x37995e,_0x513a5b){var _0x306351='';if(!_[_0x3ee5('0x3')](_0x37995e)&&'string'===typeof _0x37995e){_0x306351+=_0x37995e;}if(!_[_0x3ee5('0x3')](_0x513a5b)&&_0x3ee5('0x4')===typeof _0x513a5b){_0x306351+='\x20'+_0x513a5b;}if(_0x306351!==''){return _0x306351;}return _0x459f0f;}function Action(_0x787aa8,_0x5b97df,_0x9f80b){this['voiceQueue']=_0x787aa8;this[_0x3ee5('0x5')]=_0x9f80b||undefined;this[_0x3ee5('0x6')]=checkNameSurname(_0x5b97df[_0x3ee5('0x7')][_0x3ee5('0x8')],_0x5b97df[_0x3ee5('0x7')][_0x3ee5('0x9')],_0x5b97df[_0x3ee5('0x7')][_0x3ee5('0xa')]);this[_0x3ee5('0xb')]=_0x5b97df[_0x3ee5('0x8')];this[_0x3ee5('0xc')]=_0x787aa8[_0x3ee5('0x6')];this[_0x3ee5('0xd')]=_0x5b97df[_0x3ee5('0xd')]||![];this[_0x3ee5('0xe')]=_0x787aa8[_0x3ee5('0xe')];this['dialQueueTimeout']=_0x787aa8['dialQueueTimeout']||0x3;this['scheduledat']=_0x5b97df['scheduledat'];this[_0x3ee5('0xf')]=_0x5b97df['countbusyretry'];this[_0x3ee5('0x10')]=_0x5b97df[_0x3ee5('0x10')];this[_0x3ee5('0x11')]=_0x5b97df[_0x3ee5('0x11')];this[_0x3ee5('0x12')]=_0x5b97df[_0x3ee5('0x12')];this['countdropretry']=_0x5b97df[_0x3ee5('0x13')];this['countabandonedretry']=_0x5b97df['countabandonedretry'];this['countmachineretry']=_0x5b97df[_0x3ee5('0x14')];this[_0x3ee5('0x15')]=_0x5b97df[_0x3ee5('0x15')];this[_0x3ee5('0x16')]=_0x5b97df[_0x3ee5('0x16')];this[_0x3ee5('0x17')]=_0x5b97df[_0x3ee5('0x17')];this[_0x3ee5('0x18')]=_0x5b97df[_0x3ee5('0x18')];this[_0x3ee5('0x19')]=_0x5b97df['VoiceQueueId'];this['CampaignId']=_0x5b97df[_0x3ee5('0x1a')];this[_0x3ee5('0x1b')]=_0x5b97df['id'];this[_0x3ee5('0x1c')]=_0x5b97df['Contact'][_0x3ee5('0x9')]||'';this[_0x3ee5('0x1d')]=moment()['format'](_0x3ee5('0x1e'));this[_0x3ee5('0x1f')]=_0x5b97df[_0x3ee5('0x1f')];this[_0x3ee5('0x20')]=_0x5b97df['callbackuniqueid'];this[_0x3ee5('0x21')]=_0x5b97df[_0x3ee5('0x21')];this[_0x3ee5('0x22')]=_0x5b97df['recallme'];this[_0x3ee5('0x23')]='';this['originatecalleridname']='';}Action[_0x3ee5('0x24')][_0x3ee5('0x25')]=function(){return util[_0x3ee5('0x26')](_0x3ee5('0x27'),this[_0x3ee5('0x6')],this[_0x3ee5('0x28')][_0x3ee5('0x29')]>0x0?this[_0x3ee5('0xb')][_0x3ee5('0x2a')](this[_0x3ee5('0x28')][_0x3ee5('0x29')]):this[_0x3ee5('0xb')]);};Action[_0x3ee5('0x24')][_0x3ee5('0x2b')]=function(){return this[_0x3ee5('0xc')];};module['exports']=Action;
\ No newline at end of file
index 1728882..b440f1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd742=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue'];(function(_0x23cbe7,_0xc9c60e){var _0x4ccfa5=function(_0x5b4cd2){while(--_0x5b4cd2){_0x23cbe7['push'](_0x23cbe7['shift']());}};_0x4ccfa5(++_0xc9c60e);}(_0xd742,0x7e));var _0x2d74=function(_0x37be7e,_0x50ca31){_0x37be7e=_0x37be7e-0x0;var _0x54958b=_0xd742[_0x37be7e];return _0x54958b;};'use strict';var util=require('util');var _=require(_0x2d74('0x0'));var moment=require(_0x2d74('0x1'));function getSeconds(_0x1a260d,_0x189f66){var _0x2bcf01=moment(_0x1a260d)[_0x2d74('0x2')](0x0);var _0x255a3b=moment(_0x189f66)[_0x2d74('0x2')](0x0);return _0x2bcf01[_0x2d74('0x3')](_0x255a3b,'seconds');}function AgentComplete(_0x1d01c3,_0x34c837){this[_0x2d74('0x4')]=0x4;this[_0x2d74('0x5')]=_0x2d74('0x6');this[_0x2d74('0x7')]=_0x1d01c3[_0x2d74('0x7')];this[_0x2d74('0x8')]=_0x1d01c3[_0x2d74('0x8')];this[_0x2d74('0x9')]=_0x1d01c3[_0x2d74('0x8')]===_0x2d74('0xa')?_0x2d74('0xb'):_0x1d01c3[_0x2d74('0x8')];this[_0x2d74('0xc')]=_0x1d01c3['countbusyretry'];this['countcongestionretry']=_0x1d01c3[_0x2d74('0xd')];this[_0x2d74('0xe')]=_0x1d01c3[_0x2d74('0xe')];this[_0x2d74('0xf')]=_0x1d01c3[_0x2d74('0xc')]+_0x1d01c3[_0x2d74('0xd')]+_0x1d01c3[_0x2d74('0xe')]+_0x1d01c3[_0x2d74('0x10')]+_0x1d01c3[_0x2d74('0x11')]+_0x1d01c3[_0x2d74('0x12')]+_0x1d01c3[_0x2d74('0x13')]+_0x1d01c3[_0x2d74('0x14')];this['countnosuchnumberretry']=_0x1d01c3['countnosuchnumberretry'];this[_0x2d74('0x11')]=_0x1d01c3['countdropretry'];this[_0x2d74('0x12')]=_0x1d01c3[_0x2d74('0x12')];this[_0x2d74('0x13')]=_0x1d01c3[_0x2d74('0x13')];this[_0x2d74('0x14')]=_0x1d01c3['countagentrejectretry'];this[_0x2d74('0x15')]=_0x34c837['uniqueid'];this['calleridname']=_0x1d01c3[_0x2d74('0x16')];this['calleridnum']=_0x1d01c3[_0x2d74('0x17')];this[_0x2d74('0x18')]=_0x1d01c3['starttime'];this[_0x2d74('0x19')]=_0x1d01c3[_0x2d74('0x19')];this[_0x2d74('0x1a')]=_0x1d01c3[_0x2d74('0x1a')];this[_0x2d74('0x1b')]=moment()[_0x2d74('0x1c')](_0x2d74('0x1d'));this['ringtime']=getSeconds(_0x1d01c3['responsetime'],_0x1d01c3['starttime']);this[_0x2d74('0x1e')]=getSeconds(_0x1d01c3['answertime'],_0x1d01c3[_0x2d74('0x19')]);this[_0x2d74('0x1f')]=getSeconds(this[_0x2d74('0x1b')],_0x1d01c3[_0x2d74('0x1a')]);this[_0x2d74('0xb')]=_0x34c837[_0x2d74('0xb')];this['membername']=_0x34c837[_0x2d74('0x20')];this['reason']=_0x34c837[_0x2d74('0x21')];this[_0x2d74('0x22')]=_0x1d01c3[_0x2d74('0x22')];this[_0x2d74('0x23')]=_0x1d01c3[_0x2d74('0x23')];this[_0x2d74('0x24')]=_0x1d01c3['callbackat'];this[_0x2d74('0x25')]=_0x1d01c3['recallme'];this[_0x2d74('0x26')]=_0x1d01c3[_0x2d74('0x26')];this[_0x2d74('0x27')]=_0x1d01c3[_0x2d74('0x27')];this[_0x2d74('0x28')]=_0x1d01c3[_0x2d74('0x28')];this[_0x2d74('0x29')]=_0x1d01c3['VoiceQueueId'];this[_0x2d74('0x2a')]=_0x1d01c3[_0x2d74('0x2a')];this[_0x2d74('0x2b')]=_0x1d01c3[_0x2d74('0x2b')]||'';this[_0x2d74('0x2c')]=_0x1d01c3[_0x2d74('0x2c')]||'';}module[_0x2d74('0x2d')]=AgentComplete;
\ No newline at end of file
+var _0xcdbf=['calleridname','name','number','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','endtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','agiafterat','exports','milliseconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countmachineretry','countnosuchnumberretry','countdropretry','countagentrejectretry','uniqueid'];(function(_0x33ff10,_0x489286){var _0x76a415=function(_0x4f65f5){while(--_0x4f65f5){_0x33ff10['push'](_0x33ff10['shift']());}};_0x76a415(++_0x489286);}(_0xcdbf,0xe9));var _0xfcdb=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xcdbf[_0x3ab51d];return _0x29a04e;};'use strict';var moment=require('moment');function getSeconds(_0x3e1305,_0x30e6e8){var _0x5a4cb3=moment(_0x3e1305)[_0xfcdb('0x0')](0x0);var _0x48ccbd=moment(_0x30e6e8)['milliseconds'](0x0);return _0x5a4cb3['diff'](_0x48ccbd,'seconds');}function AgentComplete(_0x3d9ce1,_0x1e3d68){this[_0xfcdb('0x1')]=0x4;this[_0xfcdb('0x2')]=_0xfcdb('0x3');this[_0xfcdb('0x4')]=_0x3d9ce1[_0xfcdb('0x4')];this['type']=_0x3d9ce1[_0xfcdb('0x5')];this[_0xfcdb('0x6')]=_0x3d9ce1[_0xfcdb('0x5')]===_0xfcdb('0x7')?_0xfcdb('0x8'):_0x3d9ce1[_0xfcdb('0x5')];this[_0xfcdb('0x9')]=_0x3d9ce1['countbusyretry'];this[_0xfcdb('0xa')]=_0x3d9ce1[_0xfcdb('0xa')];this[_0xfcdb('0xb')]=_0x3d9ce1[_0xfcdb('0xb')];this[_0xfcdb('0xc')]=_0x3d9ce1[_0xfcdb('0x9')]+_0x3d9ce1[_0xfcdb('0xa')]+_0x3d9ce1[_0xfcdb('0xb')]+_0x3d9ce1['countnosuchnumberretry']+_0x3d9ce1['countdropretry']+_0x3d9ce1[_0xfcdb('0xd')]+_0x3d9ce1[_0xfcdb('0xe')]+_0x3d9ce1['countagentrejectretry'];this[_0xfcdb('0xf')]=_0x3d9ce1[_0xfcdb('0xf')];this['countdropretry']=_0x3d9ce1[_0xfcdb('0x10')];this[_0xfcdb('0xd')]=_0x3d9ce1['countabandonedretry'];this[_0xfcdb('0xe')]=_0x3d9ce1[_0xfcdb('0xe')];this[_0xfcdb('0x11')]=_0x3d9ce1[_0xfcdb('0x11')];this[_0xfcdb('0x12')]=_0x1e3d68[_0xfcdb('0x12')];this[_0xfcdb('0x13')]=_0x3d9ce1[_0xfcdb('0x14')];this['calleridnum']=_0x3d9ce1[_0xfcdb('0x15')];this[_0xfcdb('0x16')]=_0x3d9ce1['starttime'];this[_0xfcdb('0x17')]=_0x3d9ce1[_0xfcdb('0x17')];this[_0xfcdb('0x18')]=_0x3d9ce1[_0xfcdb('0x18')];this['endtime']=moment()['format'](_0xfcdb('0x19'));this['ringtime']=getSeconds(_0x3d9ce1[_0xfcdb('0x17')],_0x3d9ce1[_0xfcdb('0x16')]);this[_0xfcdb('0x1a')]=getSeconds(_0x3d9ce1[_0xfcdb('0x18')],_0x3d9ce1[_0xfcdb('0x17')]);this[_0xfcdb('0x1b')]=getSeconds(this[_0xfcdb('0x1c')],_0x3d9ce1[_0xfcdb('0x18')]);this[_0xfcdb('0x8')]=_0x1e3d68['queue'];this[_0xfcdb('0x1d')]=_0x1e3d68['membername'];this[_0xfcdb('0x1e')]=_0x1e3d68[_0xfcdb('0x1e')];this[_0xfcdb('0x1f')]=_0x3d9ce1['callback'];this['callbackuniqueid']=_0x3d9ce1[_0xfcdb('0x20')];this[_0xfcdb('0x21')]=_0x3d9ce1[_0xfcdb('0x21')];this[_0xfcdb('0x22')]=_0x3d9ce1[_0xfcdb('0x22')];this['ContactId']=_0x3d9ce1['ContactId'];this[_0xfcdb('0x23')]=_0x3d9ce1[_0xfcdb('0x23')];this[_0xfcdb('0x24')]=_0x3d9ce1['UserId'];this[_0xfcdb('0x25')]=_0x3d9ce1[_0xfcdb('0x25')];this['CampaignId']=_0x3d9ce1['CampaignId'];this[_0xfcdb('0x26')]=_0x3d9ce1[_0xfcdb('0x26')]||'';this[_0xfcdb('0x27')]=_0x3d9ce1[_0xfcdb('0x27')]||'';this[_0xfcdb('0x28')]=_0x3d9ce1[_0xfcdb('0x28')];}module[_0xfcdb('0x29')]=AgentComplete;
\ No newline at end of file
index 7eaa0c2..bd8caa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xee14,0x13a));var _0x4ee1=function(_0x561ed5,_0x3405b0){_0x561ed5=_0x561ed5-0x0;var _0xd05846=_0xee14[_0x561ed5];return _0xd05846;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x4ee1('0x0'));function getSeconds(_0x674696,_0x34e49d){var _0x1fa407=moment(_0x674696)[_0x4ee1('0x1')](0x0);var _0x236ccd=moment(_0x34e49d)[_0x4ee1('0x1')](0x0);return _0x1fa407[_0x4ee1('0x2')](_0x236ccd,_0x4ee1('0x3'));}function Final(_0x4bc729){this[_0x4ee1('0x4')]=_0x4bc729['uniqueid'];this[_0x4ee1('0x5')]=_0x4bc729[_0x4ee1('0x5')];this[_0x4ee1('0x6')]=_0x4bc729[_0x4ee1('0x6')];this[_0x4ee1('0x7')]=_0x4bc729[_0x4ee1('0x6')]==='outbound'?_0x4ee1('0x8'):_0x4bc729[_0x4ee1('0x6')];this['countbusyretry']=_0x4bc729[_0x4ee1('0x9')];this[_0x4ee1('0xa')]=_0x4bc729[_0x4ee1('0xa')];this[_0x4ee1('0xb')]=_0x4bc729['countnoanswerretry'];this[_0x4ee1('0xc')]=_0x4bc729[_0x4ee1('0x9')]+_0x4bc729[_0x4ee1('0xa')]+_0x4bc729[_0x4ee1('0xb')]+_0x4bc729[_0x4ee1('0xd')]+_0x4bc729[_0x4ee1('0xe')]+_0x4bc729['countabandonedretry']+_0x4bc729[_0x4ee1('0xf')]+_0x4bc729[_0x4ee1('0x10')];this[_0x4ee1('0xd')]=_0x4bc729[_0x4ee1('0xd')];this[_0x4ee1('0xe')]=_0x4bc729[_0x4ee1('0xe')];this[_0x4ee1('0x11')]=_0x4bc729[_0x4ee1('0x11')];this[_0x4ee1('0xf')]=_0x4bc729['countmachineretry'];this[_0x4ee1('0x10')]=_0x4bc729[_0x4ee1('0x10')];this[_0x4ee1('0x8')]=_0x4bc729[_0x4ee1('0x8')];this[_0x4ee1('0x12')]=_0x4bc729[_0x4ee1('0x12')];this[_0x4ee1('0x13')]=_0x4bc729[_0x4ee1('0x13')];this[_0x4ee1('0x14')]=_0x4bc729[_0x4ee1('0x14')];this[_0x4ee1('0x15')]=_0x4bc729['responsetime'];this[_0x4ee1('0x16')]=_0x4bc729[_0x4ee1('0x15')];this[_0x4ee1('0x17')]=_0x4bc729[_0x4ee1('0x17')]||0x0;this[_0x4ee1('0x18')]=_0x4bc729[_0x4ee1('0x18')]||0x0;this['talktime']=_0x4bc729[_0x4ee1('0x19')]||0x0;this[_0x4ee1('0x1a')]=_0x4bc729[_0x4ee1('0x1a')];this[_0x4ee1('0x1b')]=_0x4bc729[_0x4ee1('0x1b')];this[_0x4ee1('0x1c')]=_0x4bc729[_0x4ee1('0x1c')];this[_0x4ee1('0x1d')]=_0x4bc729[_0x4ee1('0x1d')];this[_0x4ee1('0x1e')]=_0x4bc729['ContactId'];this['ListId']=_0x4bc729[_0x4ee1('0x1f')];this[_0x4ee1('0x20')]=_0x4bc729[_0x4ee1('0x20')];this[_0x4ee1('0x21')]=_0x4bc729[_0x4ee1('0x21')];this[_0x4ee1('0x22')]=_0x4bc729['CampaignId'];this['originatecalleridnum']=_0x4bc729[_0x4ee1('0x23')]||'';this[_0x4ee1('0x24')]=_0x4bc729['originatecalleridname']||'';}module[_0x4ee1('0x25')]=Final;
\ No newline at end of file
+var _0x5ae1=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x5ae1,0xec));var _0x15ae=function(_0x2f6464,_0x51aa36){_0x2f6464=_0x2f6464-0x0;var _0xf08d20=_0x5ae1[_0x2f6464];return _0xf08d20;};'use strict';function Final(_0x417e70){this['uniqueid']=_0x417e70[_0x15ae('0x0')];this[_0x15ae('0x1')]=_0x417e70[_0x15ae('0x1')];this[_0x15ae('0x2')]=_0x417e70['type'];this[_0x15ae('0x3')]=_0x417e70[_0x15ae('0x2')]===_0x15ae('0x4')?_0x15ae('0x5'):_0x417e70['type'];this[_0x15ae('0x6')]=_0x417e70[_0x15ae('0x6')];this[_0x15ae('0x7')]=_0x417e70[_0x15ae('0x7')];this[_0x15ae('0x8')]=_0x417e70['countnoanswerretry'];this[_0x15ae('0x9')]=_0x417e70['countbusyretry']+_0x417e70[_0x15ae('0x7')]+_0x417e70['countnoanswerretry']+_0x417e70[_0x15ae('0xa')]+_0x417e70[_0x15ae('0xb')]+_0x417e70['countabandonedretry']+_0x417e70['countmachineretry']+_0x417e70[_0x15ae('0xc')];this[_0x15ae('0xa')]=_0x417e70[_0x15ae('0xa')];this['countdropretry']=_0x417e70[_0x15ae('0xb')];this[_0x15ae('0xd')]=_0x417e70[_0x15ae('0xd')];this['countmachineretry']=_0x417e70[_0x15ae('0xe')];this[_0x15ae('0xc')]=_0x417e70[_0x15ae('0xc')];this[_0x15ae('0x5')]=_0x417e70[_0x15ae('0x5')];this[_0x15ae('0xf')]=_0x417e70[_0x15ae('0xf')];this[_0x15ae('0x10')]=_0x417e70[_0x15ae('0x10')];this[_0x15ae('0x11')]=_0x417e70[_0x15ae('0x11')];this[_0x15ae('0x12')]=_0x417e70[_0x15ae('0x12')];this['endtime']=_0x417e70[_0x15ae('0x12')];this[_0x15ae('0x13')]=_0x417e70['ringtime']||0x0;this[_0x15ae('0x14')]=_0x417e70['holdtime']||0x0;this['talktime']=_0x417e70['talktime']||0x0;this[_0x15ae('0x15')]=_0x417e70['callback'];this[_0x15ae('0x16')]=_0x417e70[_0x15ae('0x16')];this[_0x15ae('0x17')]=_0x417e70[_0x15ae('0x17')];this[_0x15ae('0x18')]=_0x417e70[_0x15ae('0x18')];this[_0x15ae('0x19')]=_0x417e70[_0x15ae('0x19')];this[_0x15ae('0x1a')]=_0x417e70['ListId'];this[_0x15ae('0x1b')]=_0x417e70['UserId'];this['VoiceQueueId']=_0x417e70[_0x15ae('0x1c')];this['CampaignId']=_0x417e70[_0x15ae('0x1d')];this['originatecalleridnum']=_0x417e70[_0x15ae('0x1e')]||'';this[_0x15ae('0x1f')]=_0x417e70['originatecalleridname']||'';this['state']=_0x417e70['state'];this['statedesc']=_0x417e70['statedesc'];}module[_0x15ae('0x20')]=Final;
\ No newline at end of file
index ae61af6..1ad2a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5d=['milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','number','starttime','responsetime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','endtime','membername','IVR','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd5d,0x1d7));var _0xdfd5=function(_0x339998,_0x11b727){_0x339998=_0x339998-0x0;var _0x1074b5=_0xfd5d[_0x339998];return _0x1074b5;};'use strict';var util=require(_0xdfd5('0x0'));var _=require('lodash');var moment=require(_0xdfd5('0x1'));function getSeconds(_0x57331c,_0x4161cb){var _0x41affb=moment(_0x57331c)[_0xdfd5('0x2')](0x0);var _0x4901ce=moment(_0x4161cb)[_0xdfd5('0x2')](0x0);return _0x41affb[_0xdfd5('0x3')](_0x4901ce,_0xdfd5('0x4'));}function Hangup(_0x1a04ec,_0x201665){this[_0xdfd5('0x5')]=0x4;this[_0xdfd5('0x6')]='Answer';this[_0xdfd5('0x7')]=_0x1a04ec['scheduledat'];this[_0xdfd5('0x8')]=_0x1a04ec[_0xdfd5('0x8')];this[_0xdfd5('0x9')]=_0x1a04ec[_0xdfd5('0x8')]===_0xdfd5('0xa')?_0xdfd5('0xb'):_0x1a04ec[_0xdfd5('0x8')];this[_0xdfd5('0xc')]=_0x1a04ec['countbusyretry'];this[_0xdfd5('0xd')]=_0x1a04ec[_0xdfd5('0xd')];this[_0xdfd5('0xe')]=_0x1a04ec[_0xdfd5('0xe')];this['countglobal']=_0x1a04ec['countbusyretry']+_0x1a04ec[_0xdfd5('0xd')]+_0x1a04ec['countnoanswerretry']+_0x1a04ec[_0xdfd5('0xf')]+_0x1a04ec['countdropretry']+_0x1a04ec[_0xdfd5('0x10')]+_0x1a04ec[_0xdfd5('0x11')]+_0x1a04ec[_0xdfd5('0x12')];this[_0xdfd5('0xf')]=_0x1a04ec[_0xdfd5('0xf')];this['countdropretry']=_0x1a04ec[_0xdfd5('0x13')];this[_0xdfd5('0x10')]=_0x1a04ec['countabandonedretry'];this[_0xdfd5('0x11')]=_0x1a04ec[_0xdfd5('0x11')];this[_0xdfd5('0x12')]=_0x1a04ec['countagentrejectretry'];this[_0xdfd5('0x14')]=_0x201665[_0xdfd5('0x14')];this[_0xdfd5('0x15')]=_0x1a04ec[_0xdfd5('0x16')];this['calleridnum']=_0x1a04ec[_0xdfd5('0x17')];this['starttime']=_0x1a04ec[_0xdfd5('0x18')];this[_0xdfd5('0x19')]=_0x1a04ec['responsetime'];this['endtime']=moment()['format'](_0xdfd5('0x1a'));this[_0xdfd5('0x1b')]=getSeconds(_0x1a04ec[_0xdfd5('0x19')],_0x1a04ec['starttime']);this[_0xdfd5('0x1c')]=0x0;this[_0xdfd5('0x1d')]=getSeconds(this[_0xdfd5('0x1e')],_0x1a04ec[_0xdfd5('0x19')]);this[_0xdfd5('0xb')]=_0x1a04ec[_0xdfd5('0xb')];this[_0xdfd5('0x1f')]=_0xdfd5('0x20');this['reason']=_0x201665[_0xdfd5('0x21')];this['callback']=_0x1a04ec[_0xdfd5('0x22')];this[_0xdfd5('0x23')]=_0x1a04ec[_0xdfd5('0x23')];this[_0xdfd5('0x24')]=_0x1a04ec[_0xdfd5('0x24')];this['recallme']=_0x1a04ec[_0xdfd5('0x25')];this[_0xdfd5('0x26')]=_0x1a04ec['ContactId'];this[_0xdfd5('0x27')]=_0x1a04ec[_0xdfd5('0x27')];this[_0xdfd5('0x28')]=_0x1a04ec[_0xdfd5('0x28')];this[_0xdfd5('0x29')]=_0x1a04ec[_0xdfd5('0x29')];this['CampaignId']=_0x1a04ec[_0xdfd5('0x2a')];}module['exports']=Hangup;
\ No newline at end of file
+var _0x08bf=['type','outbound','queue','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','number','starttime','responsetime','YYYY-MM-DD\x20HH:mm:ss','ringtime','endtime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','moment','diff','seconds','state','Answer','scheduledat'];(function(_0x3c57ab,_0x2861f7){var _0x1dbc30=function(_0x46c8a6){while(--_0x46c8a6){_0x3c57ab['push'](_0x3c57ab['shift']());}};_0x1dbc30(++_0x2861f7);}(_0x08bf,0x1e6));var _0xf08b=function(_0x4c4e08,_0x2e1c1d){_0x4c4e08=_0x4c4e08-0x0;var _0x2bc5b8=_0x08bf[_0x4c4e08];return _0x2bc5b8;};'use strict';var moment=require(_0xf08b('0x0'));function getSeconds(_0x26c477,_0x3634b3){var _0x5b10b7=moment(_0x26c477)['milliseconds'](0x0);var _0xdb4401=moment(_0x3634b3)['milliseconds'](0x0);return _0x5b10b7[_0xf08b('0x1')](_0xdb4401,_0xf08b('0x2'));}function Hangup(_0x3bd10c,_0x274292){this[_0xf08b('0x3')]=0x4;this['statedesc']=_0xf08b('0x4');this[_0xf08b('0x5')]=_0x3bd10c['scheduledat'];this[_0xf08b('0x6')]=_0x3bd10c['type'];this['campaigntype']=_0x3bd10c[_0xf08b('0x6')]===_0xf08b('0x7')?_0xf08b('0x8'):_0x3bd10c['type'];this[_0xf08b('0x9')]=_0x3bd10c['amd']||![];this['countbusyretry']=_0x3bd10c[_0xf08b('0xa')];this[_0xf08b('0xb')]=_0x3bd10c[_0xf08b('0xb')];this[_0xf08b('0xc')]=_0x3bd10c[_0xf08b('0xc')];this[_0xf08b('0xd')]=_0x3bd10c[_0xf08b('0xa')]+_0x3bd10c[_0xf08b('0xb')]+_0x3bd10c[_0xf08b('0xc')]+_0x3bd10c[_0xf08b('0xe')]+_0x3bd10c[_0xf08b('0xf')]+_0x3bd10c['countabandonedretry']+_0x3bd10c[_0xf08b('0x10')]+_0x3bd10c[_0xf08b('0x11')];this[_0xf08b('0xe')]=_0x3bd10c['countnosuchnumberretry'];this[_0xf08b('0xf')]=_0x3bd10c[_0xf08b('0xf')];this[_0xf08b('0x12')]=_0x3bd10c[_0xf08b('0x12')];this[_0xf08b('0x10')]=_0x3bd10c[_0xf08b('0x10')];this[_0xf08b('0x11')]=_0x3bd10c[_0xf08b('0x11')];this[_0xf08b('0x13')]=_0x274292['uniqueid'];this[_0xf08b('0x14')]=_0x3bd10c[_0xf08b('0x15')];this['calleridnum']=_0x3bd10c[_0xf08b('0x16')];this[_0xf08b('0x17')]=_0x3bd10c[_0xf08b('0x17')];this[_0xf08b('0x18')]=_0x3bd10c[_0xf08b('0x18')];this['endtime']=moment()['format'](_0xf08b('0x19'));this[_0xf08b('0x1a')]=getSeconds(_0x3bd10c['responsetime'],_0x3bd10c[_0xf08b('0x17')]);this['holdtime']=0x0;this['talktime']=getSeconds(this[_0xf08b('0x1b')],_0x3bd10c['responsetime']);this[_0xf08b('0x8')]=_0x3bd10c[_0xf08b('0x8')];this[_0xf08b('0x1c')]=_0xf08b('0x1d');this[_0xf08b('0x1e')]=_0x274292[_0xf08b('0x1f')];this[_0xf08b('0x20')]=_0x3bd10c[_0xf08b('0x20')];this[_0xf08b('0x21')]=_0x3bd10c[_0xf08b('0x21')];this[_0xf08b('0x22')]=_0x3bd10c['callbackat'];this[_0xf08b('0x23')]=_0x3bd10c[_0xf08b('0x23')];this[_0xf08b('0x24')]=_0x3bd10c['ContactId'];this[_0xf08b('0x25')]=_0x3bd10c[_0xf08b('0x25')];this[_0xf08b('0x26')]=_0x3bd10c[_0xf08b('0x26')];this[_0xf08b('0x27')]=_0x3bd10c[_0xf08b('0x27')];this[_0xf08b('0x28')]=_0x3bd10c[_0xf08b('0x28')];}module['exports']=Hangup;
\ No newline at end of file
index a874bf1..1c0bb30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c2=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x486790,_0x1f6dfc){var _0xa5e6a6=function(_0x100465){while(--_0x100465){_0x486790['push'](_0x486790['shift']());}};_0xa5e6a6(++_0x1f6dfc);}(_0xc5c2,0xd8));var _0x2c5c=function(_0x3ac12d,_0x3a3885){_0x3ac12d=_0x3ac12d-0x0;var _0x20fe52=_0xc5c2[_0x3ac12d];return _0x20fe52;};'use strict';var util=require(_0x2c5c('0x0'));var _=require(_0x2c5c('0x1'));var moment=require(_0x2c5c('0x2'));function getSeconds(_0x48f450,_0x19bf54){var _0x306261=moment(_0x48f450)[_0x2c5c('0x3')](0x0);var _0x2aa84e=moment(_0x19bf54)[_0x2c5c('0x3')](0x0);return _0x306261[_0x2c5c('0x4')](_0x2aa84e,_0x2c5c('0x5'));}function History(_0x25dba8){this['uniqueid']=_0x25dba8[_0x2c5c('0x6')];this['scheduledat']=_0x25dba8[_0x2c5c('0x7')]||undefined;this[_0x2c5c('0x8')]=_0x25dba8[_0x2c5c('0x8')];this[_0x2c5c('0x9')]=_0x25dba8['type']===_0x2c5c('0xa')?_0x2c5c('0xb'):_0x25dba8[_0x2c5c('0x8')];this[_0x2c5c('0xc')]=_0x25dba8[_0x2c5c('0xc')];this['countcongestionretry']=_0x25dba8['countcongestionretry'];this[_0x2c5c('0xd')]=_0x25dba8[_0x2c5c('0xd')];this[_0x2c5c('0xe')]=_0x25dba8['countbusyretry']+_0x25dba8[_0x2c5c('0xf')]+_0x25dba8[_0x2c5c('0xd')]+_0x25dba8[_0x2c5c('0x10')]+_0x25dba8[_0x2c5c('0x11')]+_0x25dba8[_0x2c5c('0x12')]+_0x25dba8[_0x2c5c('0x13')]+_0x25dba8[_0x2c5c('0x14')];this['countnosuchnumberretry']=_0x25dba8[_0x2c5c('0x10')];this[_0x2c5c('0x11')]=_0x25dba8[_0x2c5c('0x11')];this[_0x2c5c('0x12')]=_0x25dba8[_0x2c5c('0x12')];this['countmachineretry']=_0x25dba8['countmachineretry'];this[_0x2c5c('0x14')]=_0x25dba8[_0x2c5c('0x14')];this[_0x2c5c('0xb')]=_0x25dba8[_0x2c5c('0xb')];this[_0x2c5c('0x15')]=_0x25dba8[_0x2c5c('0x16')];this[_0x2c5c('0x17')]=_0x25dba8[_0x2c5c('0x18')];this[_0x2c5c('0x19')]=_0x25dba8[_0x2c5c('0x19')];this['responsetime']=_0x25dba8[_0x2c5c('0x1a')];this[_0x2c5c('0x1b')]=_0x25dba8[_0x2c5c('0x1a')];this[_0x2c5c('0x1c')]=getSeconds(_0x25dba8[_0x2c5c('0x1a')],_0x25dba8[_0x2c5c('0x19')]);this[_0x2c5c('0x1d')]=0x0;this[_0x2c5c('0x1e')]=0x0;this[_0x2c5c('0x1f')]=_0x25dba8[_0x2c5c('0x1f')];this[_0x2c5c('0x20')]=_0x25dba8['callbackuniqueid'];this['callbackat']=_0x25dba8[_0x2c5c('0x21')];this[_0x2c5c('0x22')]=_0x25dba8[_0x2c5c('0x22')];this[_0x2c5c('0x23')]=_0x25dba8[_0x2c5c('0x23')];this[_0x2c5c('0x24')]=_0x25dba8[_0x2c5c('0x24')];this['UserId']=_0x25dba8[_0x2c5c('0x25')];this[_0x2c5c('0x26')]=_0x25dba8[_0x2c5c('0x26')];this[_0x2c5c('0x27')]=_0x25dba8[_0x2c5c('0x27')];this[_0x2c5c('0x28')]=_0x25dba8[_0x2c5c('0x28')]||'';this[_0x2c5c('0x29')]=_0x25dba8['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
+var _0xdac2=['responsetime','endtime','ringtime','holdtime','talktime','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','queue','calleridname','calleridnum','number','starttime'];(function(_0x11aa25,_0x10b106){var _0x8b02d5=function(_0xcd0399){while(--_0xcd0399){_0x11aa25['push'](_0x11aa25['shift']());}};_0x8b02d5(++_0x10b106);}(_0xdac2,0x8a));var _0x2dac=function(_0x466a1a,_0x37933b){_0x466a1a=_0x466a1a-0x0;var _0x577165=_0xdac2[_0x466a1a];return _0x577165;};'use strict';var moment=require(_0x2dac('0x0'));function getSeconds(_0x451494,_0x188a8b){var _0x3261ea=moment(_0x451494)[_0x2dac('0x1')](0x0);var _0x1b5ff8=moment(_0x188a8b)[_0x2dac('0x1')](0x0);return _0x3261ea[_0x2dac('0x2')](_0x1b5ff8,_0x2dac('0x3'));}function History(_0xb8587b){this[_0x2dac('0x4')]=_0xb8587b[_0x2dac('0x4')];this[_0x2dac('0x5')]=_0xb8587b[_0x2dac('0x5')]||undefined;this[_0x2dac('0x6')]=_0xb8587b[_0x2dac('0x6')];this[_0x2dac('0x7')]=_0xb8587b[_0x2dac('0x6')]===_0x2dac('0x8')?'queue':_0xb8587b[_0x2dac('0x6')];this['countbusyretry']=_0xb8587b[_0x2dac('0x9')];this[_0x2dac('0xa')]=_0xb8587b['countcongestionretry'];this[_0x2dac('0xb')]=_0xb8587b['countnoanswerretry'];this['countglobal']=_0xb8587b['countbusyretry']+_0xb8587b[_0x2dac('0xa')]+_0xb8587b['countnoanswerretry']+_0xb8587b[_0x2dac('0xc')]+_0xb8587b['countdropretry']+_0xb8587b['countabandonedretry']+_0xb8587b[_0x2dac('0xd')]+_0xb8587b[_0x2dac('0xe')];this[_0x2dac('0xc')]=_0xb8587b[_0x2dac('0xc')];this[_0x2dac('0xf')]=_0xb8587b[_0x2dac('0xf')];this['countabandonedretry']=_0xb8587b[_0x2dac('0x10')];this['countmachineretry']=_0xb8587b[_0x2dac('0xd')];this['countagentrejectretry']=_0xb8587b[_0x2dac('0xe')];this[_0x2dac('0x11')]=_0xb8587b[_0x2dac('0x11')];this[_0x2dac('0x12')]=_0xb8587b['name'];this[_0x2dac('0x13')]=_0xb8587b[_0x2dac('0x14')];this[_0x2dac('0x15')]=_0xb8587b['starttime'];this[_0x2dac('0x16')]=_0xb8587b[_0x2dac('0x16')];this[_0x2dac('0x17')]=_0xb8587b[_0x2dac('0x16')];this[_0x2dac('0x18')]=getSeconds(_0xb8587b[_0x2dac('0x16')],_0xb8587b[_0x2dac('0x15')]);this[_0x2dac('0x19')]=0x0;this[_0x2dac('0x1a')]=0x0;this['callback']=_0xb8587b[_0x2dac('0x1b')];this['callbackuniqueid']=_0xb8587b['callbackuniqueid'];this['callbackat']=_0xb8587b[_0x2dac('0x1c')];this[_0x2dac('0x1d')]=_0xb8587b['recallme'];this[_0x2dac('0x1e')]=_0xb8587b[_0x2dac('0x1e')];this[_0x2dac('0x1f')]=_0xb8587b['ListId'];this['UserId']=_0xb8587b[_0x2dac('0x20')];this['VoiceQueueId']=_0xb8587b[_0x2dac('0x21')];this[_0x2dac('0x22')]=_0xb8587b['CampaignId'];this[_0x2dac('0x23')]=_0xb8587b[_0x2dac('0x23')]||'';this[_0x2dac('0x24')]=_0xb8587b['originatecalleridname']||'';this[_0x2dac('0x25')]=_0xb8587b[_0x2dac('0x25')];this['statedesc']=_0xb8587b[_0x2dac('0x26')];}module[_0x2dac('0x27')]=History;
\ No newline at end of file
index 72d56aa..927aa80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1846=['checkRetriveMax','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberRetryFrequency','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','outboundBusyCallsDay','Busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','countReScheduled','tryOriginatePredictive','[handlePredictive][limitChannel]','[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','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./history','./hangup','env','127.0.0.1','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','varset','syncVarSet','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','isUndefined','message','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','Error','milliseconds','seconds','type','answered','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','callerid','stringify','format','voice:queue:%s','voice_queue:save','ivr','campaign:save','-----\x20Stats\x20Predictive\x20---','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\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','---------------------------','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','talking','pTalking','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','IS_DISACTIVED','state','endtime','prototype','clearZombieChannels','[actions]','isNil','Action','status','channel','catch','No\x20such\x20channel','queue','[Dialer][checkChannel]','campaigns','[Dialer][checkChannel][ivr]','resolve','[countReScheduled]\x20','checkIsBlackList','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','merge','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','active','SIP/%s','reachable','unmonitored','uniqueid','variable','amdstatus','exten','HANGUP','updateOriginated','statedesc','HangupInAMD','AMD','emit','custom:amd','buildObj','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','membername','countmachineretry','countglobal','countbusyretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','ContactId','VoiceQueueId','[rescheduleContact][Machine]','dialAMDActive','value','amd','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countcongestionretry','countdropretry','countagentrejectretry','add','YYYY-MM-DD\x20HH:mm:ss','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','AnswerAGI','AGI','[syncHangupIvr]','dialQueueProject','outboundUnknownCallsDay','cause-txt','Unknow','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','agiafterat','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','dialDropMaxRetry','queueCallerAbandonCreateState','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dialAbandonedMaxRetry','additional','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncNewExten','syncQueueMember','strategy','actionid','paused','stateinterface','locked','push','pick','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','idHopper','_rr','length','unlockRR','contactAgent-idHopper:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[booked][unlock3]','resetActiveCalls','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','isArray','iftime\x20%s,%s','interval','content','indexOf','true','command','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','checkDialMethod','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','Agent','user:%s','launchHandleIvr','handleIvr','loggedIn','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','filter','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','user:dialPreviewRecallReminder','syncCampaigns','pow','replace','random','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','getCaller','ACTIVE','xcally-motion-dialer','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-CAMPAIGNID','Contact','createdAt','%s%s','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','variables','dialCutDigit','substring','trim','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1846,0x7b));var _0x6184=function(_0x51f67c,_0x45f896){_0x51f67c=_0x51f67c-0x0;var _0x3ff50f=_0x1846[_0x51f67c];return _0x3ff50f;};'use strict';var util=require(_0x6184('0x0'));var _=require(_0x6184('0x1'));var uuid=require('uuid');var moment=require(_0x6184('0x2'));var rr=require('rr');var md5=require(_0x6184('0x3'));var Redis=require(_0x6184('0x4'));var ut=require(_0x6184('0x5'));var config=require(_0x6184('0x6'));var logger=require(_0x6184('0x7'))(_0x6184('0x8'));var loggerBooked=require(_0x6184('0x7'))(_0x6184('0x9'));var loggerPredictive=require(_0x6184('0x7'))(_0x6184('0xa'));var loggerPredictiveCalls=require(_0x6184('0x7'))(_0x6184('0xb'));var loggerSyncQueueSummary=require(_0x6184('0x7'))(_0x6184('0xc'));var ami=require('../ami');config[_0x6184('0xd')]=_[_0x6184('0xe')](config[_0x6184('0xd')],{'host':_0x6184('0xf'),'port':0x18eb});var io=require(_0x6184('0x10'))(new Redis(config[_0x6184('0xd')]));var cmHopper=require(_0x6184('0x11'));var cmHopperHistory=require(_0x6184('0x12'));var cmHopperAdditionalPhone=require(_0x6184('0x13'));var cmHopperBlack=require(_0x6184('0x14'));var voiceQueueRt=require(_0x6184('0x15'));var RpcSetting=require(_0x6184('0x16'));var Action=require(_0x6184('0x17'));var History=require(_0x6184('0x18'));var Final=require('./final');var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require(_0x6184('0x19'));var ipAgi=process[_0x6184('0x1a')]['XCALLY_IP_AGI']||_0x6184('0x1b');var strategy={'rrmemory':_0x6184('0x1c'),'roundrobin':_0x6184('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0x6184('0x1e')]=function(_0x1359c0){this[_0x6184('0x1f')]=this[_0x6184('0x1f')]?this[_0x6184('0x1f')][_0x6184('0x20')](_0x1359c0):_0x1359c0();};function Dialer(_0x15d87d,_0x4493d1){this[_0x6184('0x21')]=new Sequence();this[_0x6184('0x22')]=_0x4493d1;this['voiceQueues']=_0x15d87d[_0x6184('0x23')];this['campaigns']=_0x15d87d['campaigns'];this[_0x6184('0x24')]=_0x15d87d[_0x6184('0x24')];this[_0x6184('0x25')]=_0x15d87d[_0x6184('0x25')];this[_0x6184('0x26')]=config['maxNumberOriginate']||0x2;this[_0x6184('0x27')]={};this[_0x6184('0x28')]={};this[_0x6184('0x29')]={};this[_0x6184('0x2a')]={};this[_0x6184('0x2b')]={};this[_0x6184('0x2c')]={};this['startProgressive']={};this[_0x6184('0x2d')]={};this[_0x6184('0x2e')]={};this[_0x6184('0x2f')]={};ami['on'](_0x6184('0x30'),this[_0x6184('0x31')][_0x6184('0x32')](this));ami['on'](_0x6184('0x33'),this['syncQueueCallerAbandon'][_0x6184('0x32')](this));ami['on'](_0x6184('0x34'),this[_0x6184('0x35')][_0x6184('0x32')](this));ami['on'](_0x6184('0x36'),this[_0x6184('0x37')][_0x6184('0x32')](this));ami['on'](_0x6184('0x38'),this[_0x6184('0xc')][_0x6184('0x32')](this));ami['on'](_0x6184('0x39'),this[_0x6184('0x3a')][_0x6184('0x32')](this));ami['on'](_0x6184('0x3b'),this[_0x6184('0x3c')][_0x6184('0x32')](this));ami['on'](_0x6184('0x3d'),this['syncNewExten']['bind'](this));ami['on'](_0x6184('0x3e'),this[_0x6184('0x3f')]['bind'](this));ami['on']('queuemember',this['syncQueueMember'][_0x6184('0x32')](this));ami['on'](_0x6184('0x40'),this[_0x6184('0x41')][_0x6184('0x32')](this));this[_0x6184('0x42')]();this[_0x6184('0x43')]();RpcSetting[_0x6184('0x44')]()[_0x6184('0x45')](function(_0x6770fd){previewRecallmeReminderInterval=_0x6770fd['previewRecallmeReminderInterval'];});}function isNotNull(_0x3d042f){return _0x3d042f!==null&&!_[_0x6184('0x46')](_0x3d042f);}function checkIsLoggedIn(_0x47552c,_0x305b94){return function(){if(_0x305b94<=0x0){_0x47552c[_0x6184('0x47')]='AGENTS_NOT_LOGGED';throw _0x47552c[_0x6184('0x48')]+_0x6184('0x49');}};}function isActive(_0x3a509c){return _0x3a509c;}function checkIsActive(_0x294e76,_0x41a041){return function(){if(!isActive(_0x41a041)){_0x294e76[_0x6184('0x47')]=_0x6184('0x4a');throw _0x294e76[_0x6184('0x48')]+'\x20NOT\x20Active';}};}function checkInterval(_0x34a299){return function(){if(!isNotNull(_0x34a299[_0x6184('0x4b')])){_0x34a299['message']=_0x6184('0x4c');throw _0x34a299[_0x6184('0x48')]+_0x6184('0x4d');}if(!isNotNull(_0x34a299[_0x6184('0x4b')]['Intervals'])){_0x34a299[_0x6184('0x47')]=_0x6184('0x4c');throw _0x34a299[_0x6184('0x48')]+_0x6184('0x4d');}if(!isNotNull(_[_0x6184('0x4e')](_0x34a299['Interval'][_0x6184('0x4f')]))){_0x34a299[_0x6184('0x47')]=_0x6184('0x4c');throw _0x34a299[_0x6184('0x48')]+_0x6184('0x4d');}};}function msgResponse(_0x4bbf16,_0x31bf20,_0x67cefb){return{'action':_0x4bbf16,'response':_0x31bf20,'message':_0x67cefb,'stack':_0x67cefb};}function myreject(_0x51aa7e){return function(_0x53cafc){return _0x51aa7e(msgResponse('[ifTime][Action]',_0x6184('0x50'),JSON['stringify'](_0x53cafc)));};}function getSeconds(_0x1bdf2c,_0x51e82e){var _0x4b725f=moment(_0x1bdf2c)[_0x6184('0x51')](0x0);var _0x2fa6f7=moment(_0x51e82e)[_0x6184('0x51')](0x0);return _0x4b725f['diff'](_0x2fa6f7,_0x6184('0x52'));}function emit(_0x171cf2,_0x2fa862,_0x3d5e80){io['to'](_0x171cf2)['emit'](_0x2fa862,_0x3d5e80);}function emitVoiceQueueSummary(_0xbbd401){if(_0xbbd401[_0x6184('0x53')]==='outbound'){var _0x3ffebf={'id':_0xbbd401['id'],'name':_0xbbd401['name'],'strategy':_0xbbd401['strategy'],'answered':_0xbbd401[_0x6184('0x54')],'available':_0xbbd401['available'],'loggedIn':_0xbbd401['loggedIn'],'pTalking':_0xbbd401['pTalking'],'sumBillable':_0xbbd401['sumBillable'],'sumDuration':_0xbbd401[_0x6184('0x55')],'sumHoldTime':_0xbbd401[_0x6184('0x56')]||0x0,'talking':_0xbbd401['talking'],'total':_0xbbd401[_0x6184('0x57')],'type':_0xbbd401[_0x6184('0x53')],'unmanaged':_0xbbd401[_0x6184('0x58')],'abandoned':_0xbbd401[_0x6184('0x59')],'waiting':_0xbbd401[_0x6184('0x5a')],'loggedInDb':_0xbbd401[_0x6184('0x5b')],'dialActive':_0xbbd401[_0x6184('0x5c')],'dialMethod':_0xbbd401[_0x6184('0x5d')],'dialOriginateCallerIdName':_0xbbd401[_0x6184('0x5e')],'dialOriginateCallerIdNumber':_0xbbd401[_0x6184('0x5f')],'dialOriginateTimeout':_0xbbd401[_0x6184('0x60')],'dialPrefix':_0xbbd401[_0x6184('0x61')],'outboundAnswerAgiCallsDay':_0xbbd401[_0x6184('0x62')],'outboundAnswerCallsDay':_0xbbd401[_0x6184('0x63')],'outboundBlacklistCallsDay':_0xbbd401[_0x6184('0x64')],'outboundBusyCallsDay':_0xbbd401['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0xbbd401[_0x6184('0x65')],'outboundDropCallsDayACS':_0xbbd401['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0xbbd401[_0x6184('0x66')],'outboundDropCallsDayTimeout':_0xbbd401[_0x6184('0x67')],'outboundNoAnswerCallsDay':_0xbbd401['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0xbbd401[_0x6184('0x68')],'outboundOriginateFailureCallsDay':_0xbbd401[_0x6184('0x69')],'outboundReCallsDay':_0xbbd401[_0x6184('0x6a')],'outboundRejectCallsDay':_0xbbd401[_0x6184('0x6b')],'outboundUnknownCallsDay':_0xbbd401['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0xbbd401[_0x6184('0x6c')],'predictiveIntervalAvgHoldtime':_0xbbd401['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0xbbd401['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0xbbd401[_0x6184('0x6d')],'predictiveIntervalDroppedCallsTimeout':_0xbbd401['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0xbbd401[_0x6184('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0xbbd401['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0xbbd401[_0x6184('0x6f')],'predictiveIntervalMultiplicativeFactor':_0xbbd401['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0xbbd401[_0x6184('0x70')],'predictiveIntervalAvailable':_0xbbd401['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0xbbd401[_0x6184('0x71')],'message':_0xbbd401[_0x6184('0x47')],'originated':_0xbbd401[_0x6184('0x72')],'erlangCalls':_0xbbd401[_0x6184('0x73')],'erlangCallToSecond':_0xbbd401[_0x6184('0x74')],'erlangAbandonmentRate':_0xbbd401[_0x6184('0x75')],'erlangBusyFactor':_0xbbd401[_0x6184('0x76')],'startPredictive':_0xbbd401[_0x6184('0x2c')],'startProgressive':_0xbbd401[_0x6184('0x77')]};if(_0xbbd401['Trunk']){_0x3ffebf[_0x6184('0x78')]={'id':_0xbbd401[_0x6184('0x78')]['id'],'name':_0xbbd401[_0x6184('0x78')][_0x6184('0x48')],'active':_0xbbd401[_0x6184('0x78')]['active'],'callerid':_0xbbd401['Trunk'][_0x6184('0x79')]};}if(_0xbbd401['Interval']){_0x3ffebf['Interval']={'id':_0xbbd401[_0x6184('0x4b')]['id'],'name':_0xbbd401[_0x6184('0x4b')]['name']};}var _0x1b602d=md5(JSON[_0x6184('0x7a')](_0x3ffebf));if(_0xbbd401['md5']!==_0x1b602d){_0xbbd401[_0x6184('0x3')]=_0x1b602d;emit(util[_0x6184('0x7b')](_0x6184('0x7c'),_0x3ffebf[_0x6184('0x48')]),_0x6184('0x7d'),_0x3ffebf);}}}function emitCampaignSummary(_0x3ed50b){if(_0x3ed50b[_0x6184('0x53')]===_0x6184('0x7e')){emit(util['format']('campaign:ivr:%s',_0x3ed50b[_0x6184('0x48')]),_0x6184('0x7f'),_0x3ed50b);}}function checkGetDataPredictive(_0x412783){if(isNotNull(_0x412783)&&!_[_0x6184('0x4e')](_0x412783)){loggerPredictive['info'](_0x6184('0x80'));loggerPredictive[_0x6184('0x81')](_0x6184('0x82'),_0x412783[_0x6184('0x71')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x83'),_0x412783[_0x6184('0x6c')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x84'),_0x412783[_0x6184('0x85')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x86'),_0x412783['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0x6184('0x81')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x412783[_0x6184('0x87')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x88'),_0x412783[_0x6184('0x89')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x8a'));if(_0x412783[_0x6184('0x71')]>0x0){if(!_[_0x6184('0x46')](_0x412783['predictiveIntervalAvgTalktime'])&&_0x412783[_0x6184('0x89')]>0x0){return!![];}loggerPredictive[_0x6184('0x81')]('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0x6184('0x46')](_0x412783[_0x6184('0x87')])&&_0x412783[_0x6184('0x87')]>0x0){return!![];}loggerPredictive[_0x6184('0x81')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x6184('0x81')](_0x6184('0x8b'));}}else{loggerPredictive['info'](_0x6184('0x8c'));}return![];}function mergeDataErlangB(_0x45de6d){return function(_0x2127f0){loggerPredictive[_0x6184('0x81')](_0x6184('0x8d'));loggerPredictive[_0x6184('0x81')](_0x6184('0x8e'),_0x2127f0['erlangCalls']);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2127f0[_0x6184('0x74')]);loggerPredictive[_0x6184('0x81')](_0x6184('0x8f'),_0x2127f0[_0x6184('0x75')]);loggerPredictive['info'](_0x6184('0x90'),_0x2127f0['erlangBusyFactor']);loggerPredictive[_0x6184('0x81')](_0x6184('0x8f'),_0x2127f0['erlangAbandonmentRate']);loggerPredictive['info'](_0x6184('0x8a'));_['merge'](_0x45de6d,_0x2127f0);};}function getDiff(_0x5bf91b){var _0x4ffe69=moment()['milliseconds'](0x0);var _0x214e3a=moment(_0x5bf91b)['milliseconds'](0x0);return _0x4ffe69[_0x6184('0x91')](_0x214e3a,_0x6184('0x52'));}function ifInterval(_0x2ff443,_0x5c17e8){if(_[_0x6184('0x46')](_0x5c17e8)){return![];}return getDiff(_0x5c17e8)<_0x2ff443*0x3c;}function freeVariablesPredictive(_0x880da4){if(isNotNull(_0x880da4)){if(!_[_0x6184('0x46')](_0x880da4['startProgressive'])){_0x880da4[_0x6184('0x77')]=undefined;loggerPredictive[_0x6184('0x81')](_0x880da4['name'],_0x6184('0x92'));}if(!_[_0x6184('0x46')](_0x880da4['startPredictive'])){_0x880da4[_0x6184('0x2c')]=undefined;loggerPredictive[_0x6184('0x81')](_0x880da4[_0x6184('0x48')],_0x6184('0x93'));}if(!_[_0x6184('0x46')](_0x880da4[_0x6184('0x94')])){clearInterval(_0x880da4[_0x6184('0x94')]);_0x880da4[_0x6184('0x94')]=undefined;loggerPredictive[_0x6184('0x81')](_0x880da4['name'],_0x6184('0x95'));}}}function erlangb(_0x27fa6b,_0x50080b){if(_0x50080b===0x0){return 0x0;}var _0x553863=0x1;for(var _0x1e7540=0x1;_0x1e7540<=_0x50080b;_0x1e7540+=0x1){_0x553863=0x1+_0x553863*_0x1e7540/_0x27fa6b;}return 0x1/_0x553863;}function isVoiceQueueOutbound(_0x2c4b3f){return _0x2c4b3f===_0x6184('0x96');}function isNotPreview(_0x24cb17){return _0x24cb17!=='preview';}function isCampaignIvr(_0x34a0aa){return _0x34a0aa==='ivr';}function getCallerId(_0x5b3f22,_0x38bc98,_0x571574){if(!_[_0x6184('0x46')](_0x571574)&&typeof _0x571574===_0x6184('0x97')&&!_[_0x6184('0x4e')](_0x571574)){if(!_[_0x6184('0x46')](_0x38bc98)&&typeof _0x38bc98===_0x6184('0x97')&&!_[_0x6184('0x4e')](_0x38bc98)){return util['format'](_0x6184('0x98'),_0x38bc98,_0x571574);}return util['format']('\x22%s\x22\x20<%s>',_0x571574,_0x571574);}if(!_['isUndefined'](_0x5b3f22)&&typeof _0x5b3f22==='string'&&!_[_0x6184('0x4e')](_0x5b3f22)){return _0x5b3f22;}return _0x6184('0x99');}function loggerCatchQueueSummary(_0x34bd52,_0x15f1e0){return function(_0x482fab){freeVariablesPredictive(_0x15f1e0);emitVoiceQueueSummary(_0x15f1e0);emitCampaignSummary(_0x15f1e0);loggerSyncQueueSummary[_0x6184('0x9a')](_0x34bd52,util[_0x6184('0x9b')](_0x482fab,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5d7071,_0x4b4cc0){return function(_0x1d588c){loggerPredictive[_0x6184('0x9c')](_0x4b4cc0['name'],_0x5d7071);loggerPredictive['error'](_0x1d588c[_0x6184('0x9d')]);freeVariablesPredictive(_0x4b4cc0);};}function loggerCatch(_0x564d4c){return function(_0x4b95d6){logger[_0x6184('0x9c')](_0x564d4c,util[_0x6184('0x9b')](_0x4b95d6,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x58584f){return _0x58584f&&!_[_0x6184('0x46')](_0x58584f)&&_0x58584f['length']>0x0;}function decremetOriginate(_0x2a29ad){if(!_['isUndefined'](_0x2a29ad)&&_0x2a29ad!==null){if(typeof _0x2a29ad['originated']!==_0x6184('0x9e')){if(_0x2a29ad[_0x6184('0x72')]>0x0){_0x2a29ad[_0x6184('0x72')]-=0x1;}else{logger[_0x6184('0x9c')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x6184('0x9c')](_0x6184('0x9f'));}}function checkContactLowerLimitOriginate(_0x52aece,_0x1f4ac6,_0x4623a7){if(_0x1f4ac6>_0x4623a7){for(var _0x394fe2=0x0;_0x394fe2<_0x1f4ac6-_0x4623a7;_0x394fe2+=0x1){decremetOriginate(_0x52aece);}}}function loggerGetContactDialer(_0x1d00be,_0x1c6e23,_0xb96e82){return function(_0x2f0ee7){checkContactLowerLimitOriginate(_0x1c6e23,_0xb96e82,0x0);logger[_0x6184('0x9c')](_0x1d00be,util[_0x6184('0x9b')](_0x2f0ee7,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x251bf7){return function(_0x563fc1){if(isNotNull(_0x563fc1)&&isNotNull(_0x563fc1[0x0])){if(_0x563fc1[0x0][_0x6184('0xa0')]>0x0){_0x251bf7[_0x6184('0x47')]=_0x6184('0xa1');logger['info']('[getContactDialer2][ReScheduled]'+_0x251bf7['name'],_0x563fc1[0x0][_0x6184('0xa0')],_0x6184('0xa2'));}else{_0x251bf7['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0x6184('0x81')](_0x6184('0xa3')+_0x251bf7[_0x6184('0x48')]);}}};}function notSendMessagesQueue(_0x2295b2){if(_0x2295b2[_0x6184('0xa4')]){freeVariablesPredictive(_0x2295b2);if(_0x2295b2[_0x6184('0x72')]===0x0&&_0x2295b2[_0x6184('0xa5')]===0x0&&_0x2295b2[_0x6184('0x5a')]===0x0&&(_0x2295b2[_0x6184('0xa6')]||0x0)===0x0){_0x2295b2[_0x6184('0xa4')]=![];_0x2295b2[_0x6184('0xa7')]=0x0;_0x2295b2[_0x6184('0x47')]=_0x6184('0x4a');loggerSyncQueueSummary[_0x6184('0x9a')](_0x6184('0xa8'),_0x2295b2['name'],'is\x20not\x20active');}else{_0x2295b2[_0x6184('0x47')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x6184('0x9a')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2295b2[_0x6184('0x48')],_0x6184('0xa9'));}emitVoiceQueueSummary(_0x2295b2);}}function notSendMessagesCampaign(_0x5acc7f){if(_0x5acc7f[_0x6184('0xa4')]){if(_0x5acc7f[_0x6184('0x72')]===0x0){_0x5acc7f['sendMessageOneNotActive']=![];_0x5acc7f['message']=_0x6184('0x4a');loggerSyncQueueSummary[_0x6184('0x9a')](_0x6184('0xaa'),_0x5acc7f[_0x6184('0x48')],_0x6184('0xab'));}else{_0x5acc7f[_0x6184('0x47')]=_0x6184('0xac');loggerSyncQueueSummary['debug']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x5acc7f['name'],_0x6184('0xa9'));}emitCampaignSummary(_0x5acc7f);}}function createObjHistory(_0x5576c7,_0x5b8965,_0x53f201,_0x4e9769,_0x425715){_0x5576c7[_0x6184('0x47')]=_0x53f201;var _0x4afd08=new Action(_0x5576c7,_0x5b8965);var _0x342467=new History(_0x4afd08);_0x342467[_0x6184('0xad')]=_0x4e9769;_0x342467['statedesc']=_0x425715;_0x342467[_0x6184('0xae')]=_0x4afd08['starttime'];return _0x342467;}Dialer[_0x6184('0xaf')]['loopClearZombieChannels']=function(){var _0x1f3194=this;setInterval(function(){_0x1f3194['clearZombieChannels'](_0x1f3194[_0x6184('0x2a')],'[uniqueid]');_0x1f3194[_0x6184('0xb0')](_0x1f3194[_0x6184('0x28')],_0x6184('0xb1'));},0x32c8);};Dialer[_0x6184('0xaf')][_0x6184('0xb0')]=function(_0x2377e8,_0x109e5b){var _0x30c0bb=this;for(var _0x4c7a32 in _0x2377e8){if(typeof _0x2377e8[_0x4c7a32]!==_0x6184('0x9e')){this[_0x6184('0x21')][_0x6184('0x1e')](function(){if(!_[_0x6184('0xb2')](_0x2377e8[_0x4c7a32])){return ami[_0x6184('0xb3')]({'action':_0x6184('0xb4'),'channel':_0x2377e8[_0x4c7a32][_0x6184('0xb5')]})[_0x6184('0xb6')](function(_0xae878f){if(_0xae878f[_0x6184('0x47')]===_0x6184('0xb7')){setTimeout(function(){if(_0x2377e8[_0x4c7a32]&&_0x2377e8[_0x4c7a32][_0x6184('0x53')]!==_0x6184('0x7e')){_0x30c0bb['updateOriginated'](_0x30c0bb[_0x6184('0x23')][_0x2377e8[_0x4c7a32][_0x6184('0xb8')]]);logger['error'](_0x6184('0xb9'),_0x109e5b,_0x4c7a32,_0x2377e8[_0x4c7a32][_0x6184('0xb8')]);delete _0x2377e8[_0x4c7a32];}if(_0x2377e8[_0x4c7a32]&&_0x2377e8[_0x4c7a32]['type']==='ivr'){_0x30c0bb['updateOriginated'](_0x30c0bb[_0x6184('0xba')][_0x2377e8[_0x4c7a32][_0x6184('0xb8')]]);logger[_0x6184('0x9c')](_0x6184('0xbb'),_0x109e5b,_0x4c7a32,_0x2377e8[_0x4c7a32][_0x6184('0xb8')]);delete _0x2377e8[_0x4c7a32];}},0x2328);}});}});}}};Dialer[_0x6184('0xaf')]['countReScheduled']=function(_0x489b85){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](cmHopper['countReScheduled'](_0x489b85))['catch'](loggerCatch(_0x6184('0xbd')));};Dialer[_0x6184('0xaf')][_0x6184('0xbe')]=function(_0x40416c){return Promise['resolve']()[_0x6184('0x45')](cmHopperBlack[_0x6184('0xbe')](_0x40416c))[_0x6184('0xb6')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x6184('0xaf')][_0x6184('0xbf')]=function(_0x3f4156,_0x4dd091,_0x519a51){return Promise[_0x6184('0xbc')]()['then'](cmHopperAdditionalPhone[_0x6184('0xbf')](_0x3f4156,_0x4dd091,_0x519a51))[_0x6184('0xb6')](loggerCatch(_0x6184('0xc0')));};Dialer['prototype']['swapAdditionalPhones']=function(_0x510bb3,_0x2f4947,_0x13701a){return Promise[_0x6184('0xbc')]()['then'](cmHopperAdditionalPhone[_0x6184('0xc1')](_0x510bb3,_0x2f4947,_0x13701a))[_0x6184('0xb6')](loggerCatch(_0x6184('0xc2')));};Dialer[_0x6184('0xaf')][_0x6184('0xc3')]=function(_0x15489d){return Promise['resolve']()[_0x6184('0x45')](cmHopperBlack[_0x6184('0xc3')](_0x15489d))[_0x6184('0xb6')](loggerCatch(_0x6184('0xc4')));};Dialer['prototype'][_0x6184('0xc5')]=function(_0x1d3021){return Promise['resolve']()['then'](cmHopperHistory[_0x6184('0xc6')](_0x1d3021))[_0x6184('0xb6')](loggerCatch(_0x6184('0xc7')));};Dialer[_0x6184('0xaf')][_0x6184('0xc8')]=function(_0x337de7){return Promise['resolve']()[_0x6184('0x45')](cmHopper['rescheduleContact'](_0x337de7))[_0x6184('0xb6')](loggerCatch(_0x6184('0xc9')));};Dialer[_0x6184('0xaf')][_0x6184('0xca')]=function(_0xf927a7,_0x4a2aea,_0x1d606c){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](cmHopper[_0x6184('0xca')](_0xf927a7,_0x4a2aea,_0x1d606c))[_0x6184('0xb6')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x6184('0xaf')]['getContactDialer']=function(_0x4638c3,_0x25bc6b,_0x2d7082,_0x334252,_0x58a956){return Promise['resolve']()[_0x6184('0x45')](cmHopper['getContactDialer'](_0x4638c3,_0x25bc6b,_0x2d7082,_0x334252))['catch'](function(_0x514bfa){_0x58a956[_0x6184('0xcb')]-=_0x2d7082;_0x58a956[_0x6184('0xcb')]=_0x58a956[_0x6184('0xcb')]>0x0?_0x58a956['temp']:0x0;loggerCatch(_0x6184('0xcc'))(_0x514bfa);});};Dialer[_0x6184('0xaf')]['getContactDialerIvr']=function(_0x633216,_0xc3672d,_0x1146d0,_0x21d199){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](cmHopper[_0x6184('0xcd')](_0x633216,_0xc3672d,_0x1146d0))[_0x6184('0xb6')](function(_0x16cf59){_0x21d199[_0x6184('0xcb')]-=_0xc3672d;_0x21d199[_0x6184('0xcb')]=_0x21d199['temp']>0x0?_0x21d199[_0x6184('0xcb')]:0x0;loggerCatch(_0x6184('0xce'))(_0x16cf59);});};Dialer[_0x6184('0xaf')][_0x6184('0xcf')]=function(_0x2853d3){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](voiceQueueRt[_0x6184('0xcf')](_0x2853d3))[_0x6184('0xb6')](loggerCatch(_0x6184('0xd0')));};Dialer[_0x6184('0xaf')][_0x6184('0xd1')]=function(_0x1be820){return Promise['resolve']()[_0x6184('0x45')](cmHopper['moveContactManagedDialer'](_0x1be820))[_0x6184('0xb6')](loggerCatch(_0x6184('0xd2')));};Dialer[_0x6184('0xaf')][_0x6184('0xd3')]=function(_0x1417eb){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](cmHopperHistory['createHistory'](_0x1417eb))[_0x6184('0xb6')](loggerCatch('[createHistory]\x20'));};Dialer[_0x6184('0xaf')]['updateOriginated']=function(_0x14c7c4){if(!_[_0x6184('0x46')](_0x14c7c4)&&_0x14c7c4!==null){if(typeof _0x14c7c4['originated']!==_0x6184('0x9e')){if(_0x14c7c4[_0x6184('0x72')]>0x0){_0x14c7c4['originated']-=0x1;}else{logger[_0x6184('0x9c')](_0x6184('0xd4'));}}}else{logger[_0x6184('0x9c')](_0x6184('0xd5'));}};Dialer[_0x6184('0xaf')][_0x6184('0xd6')]=function(_0x237e4b,_0x1e60be){var _0x517b34=this;return function(_0x26677c){_0x517b34['updateOriginated'](_0x1e60be);logger[_0x6184('0x9c')](_0x237e4b,util[_0x6184('0x9b')](_0x26677c,{'showHidden':![],'depth':null}));};};Dialer[_0x6184('0xaf')][_0x6184('0xd7')]=function(_0x4d7309,_0x3cff81,_0x509153){var _0x5ecfa4={'state':0x19,'statedesc':'notFound'};this['updateOriginated'](_0x3cff81);this[_0x6184('0xd8')](_[_0x6184('0xd9')](_0x5ecfa4,_['pick'](_0x509153,['ContactId',_0x6184('0xda'),_0x6184('0xdb'),'VoiceQueueId',_0x6184('0xdc')])),_0x6184('0xdd'),_0x6184('0xde'));logger[_0x6184('0x9c')](_0x4d7309);};Dialer[_0x6184('0xaf')][_0x6184('0xdf')]=function(_0x22993f){return _0x22993f===_0x6184('0xe0');};Dialer[_0x6184('0xaf')]['isTrunkReachable']=function(_0x53f946){return!_[_0x6184('0x46')](_0x53f946)&&_0x53f946&&!_[_0x6184('0x46')](_0x53f946['name'])&&!_[_0x6184('0x46')](_0x53f946[_0x6184('0xe1')])&&_0x53f946[_0x6184('0xe1')]&&(this[_0x6184('0x25')][util['format'](_0x6184('0xe2'),_0x53f946['name'])][_0x6184('0xb4')]===_0x6184('0xe3')||this[_0x6184('0x25')][util[_0x6184('0x7b')](_0x6184('0xe2'),_0x53f946[_0x6184('0x48')])][_0x6184('0xb4')]===_0x6184('0xe4'));};Dialer[_0x6184('0xaf')][_0x6184('0xd8')]=function(_0x5a1ec6,_0x1453b6,_0x195371){this['createHistory'](_0x5a1ec6)[_0x6184('0xb6')](loggerCatch(_0x1453b6));this['moveContactManagedDialer'](_0x5a1ec6)[_0x6184('0xb6')](loggerCatch(_0x195371));};Dialer['prototype'][_0x6184('0x3f')]=function(_0x2b252e){var _0x1c8caa=this;var _0x29133f=this[_0x6184('0x2a')][_0x2b252e[_0x6184('0xe5')]];var _0x23e383;if(!_[_0x6184('0xb2')](_0x2b252e)&&!_[_0x6184('0xb2')](_0x2b252e[_0x6184('0xe6')])&&!_[_0x6184('0xb2')](_0x2b252e[_0x6184('0xe6')][_0x6184('0xe7')])&&_0x2b252e[_0x6184('0xe8')]==='xcally-motion-dialer'&&_0x29133f){if(_0x29133f[_0x6184('0x53')]!==_0x6184('0x7e')&&this['voiceQueues'][_0x29133f['queue']]['dialAMDActive']&&_0x2b252e['value']===_0x6184('0xe9')){delete this[_0x6184('0x2a')][_0x2b252e['uniqueid']];this[_0x6184('0xea')](this[_0x6184('0x23')][_0x29133f[_0x6184('0xb8')]]);this['voiceQueues'][_0x29133f[_0x6184('0xb8')]][_0x6184('0x63')]+=0x1;this[_0x6184('0x23')][_0x29133f[_0x6184('0xb8')]][_0x6184('0x62')]+=0x1;_0x23e383=new Hangup(_0x29133f,_0x2b252e);_0x23e383['state']=0x12;_0x23e383[_0x6184('0xeb')]=_0x6184('0xec');_0x23e383['membername']=_0x6184('0xed');ami[_0x6184('0xee')](_0x6184('0xef'),ut[_0x6184('0xf0')](_0x23e383,'amd'));this[_0x6184('0xd8')](_0x23e383,_0x6184('0xf1'),_0x6184('0xf2'));}if(_0x29133f[_0x6184('0x53')]!==_0x6184('0x7e')&&this['voiceQueues'][_0x29133f['queue']]['dialAMDActive']&&_0x2b252e['value']===_0x6184('0xf3')){return new Promise(function(_0x6b799b,_0x3cac56){delete _0x1c8caa[_0x6184('0x2a')][_0x2b252e[_0x6184('0xe5')]];_0x1c8caa[_0x6184('0xea')](_0x1c8caa['voiceQueues'][_0x29133f[_0x6184('0xb8')]]);_0x1c8caa['voiceQueues'][_0x29133f[_0x6184('0xb8')]][_0x6184('0x63')]+=0x1;_0x1c8caa['voiceQueues'][_0x29133f[_0x6184('0xb8')]][_0x6184('0x62')]+=0x1;var _0x31a3e4=_0x1c8caa[_0x6184('0x23')][_0x29133f[_0x6184('0xb8')]];var _0x27a419=new Hangup(_0x29133f,_0x2b252e);_0x27a419[_0x6184('0xad')]=0x13;_0x27a419[_0x6184('0xeb')]=_0x6184('0xf4');_0x27a419[_0x6184('0xf5')]='AMD';_0x27a419[_0x6184('0xf6')]+=0x1;_0x27a419[_0x6184('0xf7')]+=0x1;_0x27a419['amd']=!![];ami['emit'](_0x6184('0xef'),ut[_0x6184('0xf0')](_0x27a419,'amd'));_0x1c8caa['createHistory'](_0x27a419)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x27a419[_0x6184('0xf8')]+_0x27a419['countcongestionretry']+_0x27a419[_0x6184('0xf9')]+_0x27a419[_0x6184('0xfa')]+_0x27a419['countdropretry']+_0x27a419[_0x6184('0xfb')]+_0x27a419[_0x6184('0xf6')]+_0x27a419['countagentrejectretry']>=_0x31a3e4[_0x6184('0xfc')]){_0x1c8caa[_0x6184('0xfd')](_0x27a419,_0x6b799b,_0x3cac56,_0x6184('0xfe'));}else{if(_0x27a419['countmachineretry']>=_0x31a3e4[_0x6184('0xff')]){_0x1c8caa[_0x6184('0x100')](_0x27a419,_0x6b799b,_0x3cac56,_0x6184('0x101'));}else{_0x1c8caa[_0x6184('0xc8')]({'active':![],'countmachineretry':_0x27a419[_0x6184('0xf6')],'scheduledat':moment()['add'](_0x31a3e4[_0x6184('0x102')],_0x6184('0x103'))[_0x6184('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x27a419[_0x6184('0x104')],'ListId':_0x27a419[_0x6184('0xda')],'VoiceQueueId':_0x27a419[_0x6184('0x105')]||undefined,'CampaignId':_0x27a419[_0x6184('0xdc')]||undefined})['catch'](loggerCatch(_0x6184('0x106')));_0x6b799b({'reschedule':0x1});}}});}if(_0x29133f['type']===_0x6184('0x7e')&&this[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]][_0x6184('0x107')]&&_0x2b252e[_0x6184('0x108')]===_0x6184('0xe9')){delete this[_0x6184('0x2a')][_0x2b252e[_0x6184('0xe5')]];this[_0x6184('0xea')](this[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]]);_0x23e383=new Hangup(_0x29133f,_0x2b252e);_0x23e383[_0x6184('0xad')]=0x12;_0x23e383[_0x6184('0xeb')]=_0x6184('0xec');_0x23e383[_0x6184('0xf5')]=_0x6184('0xed');ami[_0x6184('0xee')](_0x6184('0xef'),ut['buildObj'](_0x23e383,_0x6184('0x109')));this[_0x6184('0xd8')](_0x23e383,_0x6184('0x10a'),_0x6184('0x10b'));}if(_0x29133f[_0x6184('0x53')]===_0x6184('0x7e')&&this['campaigns'][_0x29133f[_0x6184('0xb8')]][_0x6184('0x107')]&&_0x2b252e[_0x6184('0x108')]===_0x6184('0xf3')){return new Promise(function(_0x4619a4,_0x3ea685){delete _0x1c8caa[_0x6184('0x2a')][_0x2b252e[_0x6184('0xe5')]];_0x1c8caa[_0x6184('0xea')](_0x1c8caa[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]]);_0x1c8caa[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]]['outboundAnswerCallsDay']+=0x1;_0x1c8caa[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]][_0x6184('0x62')]+=0x1;var _0x2b0be1=_0x1c8caa[_0x6184('0xba')][_0x29133f[_0x6184('0xb8')]];var _0x2f9413=new Hangup(_0x29133f,_0x2b252e);_0x2f9413[_0x6184('0xad')]=0x13;_0x2f9413['statedesc']=_0x6184('0xf4');_0x2f9413[_0x6184('0xf5')]=_0x6184('0xed');_0x2f9413['countmachineretry']+=0x1;_0x2f9413[_0x6184('0xf7')]+=0x1;_0x2f9413[_0x6184('0x109')]=!![];ami[_0x6184('0xee')](_0x6184('0xef'),ut[_0x6184('0xf0')](_0x2f9413,_0x6184('0x109')));_0x1c8caa['createHistory'](_0x2f9413)[_0x6184('0xb6')](loggerCatch(_0x6184('0x10c')));if(_0x2f9413[_0x6184('0xf8')]+_0x2f9413[_0x6184('0x10d')]+_0x2f9413[_0x6184('0xf9')]+_0x2f9413[_0x6184('0xfa')]+_0x2f9413[_0x6184('0x10e')]+_0x2f9413[_0x6184('0xfb')]+_0x2f9413[_0x6184('0xf6')]+_0x2f9413[_0x6184('0x10f')]>=_0x2b0be1['dialGlobalMaxRetry']){_0x1c8caa[_0x6184('0xfd')](_0x2f9413,_0x4619a4,_0x3ea685,_0x6184('0xfe'));}else{if(_0x2f9413[_0x6184('0xf6')]>=_0x2b0be1[_0x6184('0xff')]){_0x1c8caa[_0x6184('0x100')](_0x2f9413,_0x4619a4,_0x3ea685,_0x6184('0x101'));}else{_0x1c8caa[_0x6184('0xc8')]({'active':![],'countmachineretry':_0x2f9413[_0x6184('0xf6')],'scheduledat':moment()[_0x6184('0x110')](_0x2b0be1[_0x6184('0x102')],_0x6184('0x103'))['format'](_0x6184('0x111')),'ContactId':_0x2f9413[_0x6184('0x104')],'ListId':_0x2f9413[_0x6184('0xda')],'VoiceQueueId':_0x2f9413['VoiceQueueId']||undefined,'CampaignId':_0x2f9413[_0x6184('0xdc')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x4619a4({'reschedule':0x1});}}});}}};Dialer[_0x6184('0xaf')][_0x6184('0x3c')]=function(_0x3d0fb2){var _0x12a40b=this['uniqueId'][_0x3d0fb2[_0x6184('0xe5')]];var _0x118bfe;if(_0x12a40b&&_0x12a40b[_0x6184('0x53')]===_0x6184('0x7e')){delete this[_0x6184('0x2a')][_0x3d0fb2[_0x6184('0xe5')]];this[_0x6184('0xea')](this['campaigns'][_0x12a40b[_0x6184('0xb8')]]);this['campaigns'][_0x12a40b[_0x6184('0xb8')]][_0x6184('0x112')]+=0x1;_0x118bfe=new Hangup(_0x12a40b,_0x3d0fb2);this[_0x6184('0xd3')](_0x118bfe)['catch'](loggerCatch(_0x6184('0x113')));this[_0x6184('0xd1')](_0x118bfe)['catch'](loggerCatch('[syncHangupIvr]'));}if(_0x12a40b&&_0x12a40b['type']!=='ivr'&&isNotNull(this[_0x6184('0x23')][_0x12a40b[_0x6184('0xb8')]]['dialQueueProject'])){delete this[_0x6184('0x2a')][_0x3d0fb2[_0x6184('0xe5')]];this[_0x6184('0xea')](this['voiceQueues'][_0x12a40b[_0x6184('0xb8')]]);this[_0x6184('0x23')][_0x12a40b[_0x6184('0xb8')]]['outboundAnswerCallsDay']+=0x1;this[_0x6184('0x23')][_0x12a40b[_0x6184('0xb8')]][_0x6184('0x62')]+=0x1;_0x118bfe=new Hangup(_0x12a40b,_0x3d0fb2);_0x118bfe[_0x6184('0xad')]=0x10;_0x118bfe[_0x6184('0xeb')]=_0x6184('0x114');_0x118bfe[_0x6184('0xf5')]=_0x6184('0x115');this[_0x6184('0xd3')](_0x118bfe)[_0x6184('0xb6')](loggerCatch(_0x6184('0x113')));this[_0x6184('0xd1')](_0x118bfe)[_0x6184('0xb6')](loggerCatch(_0x6184('0x116')));}if(_0x12a40b&&_0x12a40b['type']!==_0x6184('0x7e')&&!isNotNull(this[_0x6184('0x23')][_0x12a40b[_0x6184('0xb8')]][_0x6184('0x117')])){delete this[_0x6184('0x2a')][_0x3d0fb2[_0x6184('0xe5')]];this[_0x6184('0xea')](this[_0x6184('0x23')][_0x12a40b[_0x6184('0xb8')]]);this[_0x6184('0x23')][_0x12a40b['queue']][_0x6184('0x118')]+=0x1;_0x118bfe=new Hangup(_0x12a40b,_0x3d0fb2);_0x118bfe['state']=0xc;_0x118bfe['statedesc']=_0x3d0fb2[_0x6184('0x119')];_0x118bfe[_0x6184('0xf5')]=_0x6184('0x11a');this[_0x6184('0xd3')](_0x118bfe)['catch'](loggerCatch(_0x6184('0x113')));this[_0x6184('0xd1')](_0x118bfe)['catch'](loggerCatch(_0x6184('0x116')));}};Dialer[_0x6184('0xaf')]['syncAgentComplete']=function(_0x399df9){var _0x223647=this[_0x6184('0x2a')][_0x399df9['uniqueid']];if(this[_0x6184('0x23')][_0x399df9[_0x6184('0xb8')]]){if(_0x223647&&_0x223647[_0x6184('0x53')]!==_0x6184('0x7e')){delete this[_0x6184('0x2a')][_0x399df9[_0x6184('0xe5')]];this[_0x6184('0x23')][_0x399df9[_0x6184('0xb8')]][_0x6184('0x63')]+=0x1;var _0x38649a=new AgentComplete(_0x223647,_0x399df9);if(_0x399df9[_0x6184('0x11b')]===_0x6184('0x11c')){_0x38649a['agiafterat']=this['voiceQueues'][_0x399df9[_0x6184('0xb8')]][_0x6184('0x11d')]&&this['voiceQueues'][_0x399df9['queue']][_0x6184('0x11e')]?moment()[_0x6184('0x7b')](_0x6184('0x111')):undefined;}this[_0x6184('0xd3')](_0x38649a)['catch'](loggerCatch(_0x6184('0x11f')));this[_0x6184('0xd1')](_0x38649a)[_0x6184('0xb6')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x6184('0xaf')]['syncAgentConnect']=function(_0x58bf27){if(this['voiceQueues'][_0x58bf27['queue']]){if(this[_0x6184('0x2a')][_0x58bf27['uniqueid']]&&this[_0x6184('0x2a')][_0x58bf27[_0x6184('0xe5')]][_0x6184('0x53')]!=='ivr'){this[_0x6184('0xea')](this['voiceQueues'][_0x58bf27[_0x6184('0xb8')]]);this['uniqueId'][_0x58bf27[_0x6184('0xe5')]][_0x6184('0x120')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));}}};Dialer[_0x6184('0xaf')]['queueCallerAbandonCreateState']=function(_0x20bd78,_0x556984){this[_0x6184('0xd3')](_0x20bd78)[_0x6184('0xb6')](loggerCatch(_0x6184('0x11f')));if(_0x556984==0x0){this[_0x6184('0xd1')](_0x20bd78)['catch'](loggerCatch(_0x6184('0x121')));}};Dialer[_0x6184('0xaf')]['syncQueueCallerAbandon']=function(_0x5db949){var _0x2f5bcc=this['uniqueId'][_0x5db949['uniqueid']];var _0x41796b=this;var _0x23fe0a=![];var _0x25e421;var _0x5d447a;if(this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]]){if(_0x2f5bcc&&_0x2f5bcc[_0x6184('0x53')]!==_0x6184('0x7e')){delete this[_0x6184('0x2a')][_0x5db949[_0x6184('0xe5')]];this[_0x6184('0xea')](this['voiceQueues'][_0x5db949['queue']]);_0x2f5bcc[_0x6184('0x122')]=moment()['format'](_0x6184('0x111'));var _0x18aee0=new QueueCallerAbandon(_0x2f5bcc,_0x5db949);if(getSeconds(_0x2f5bcc[_0x6184('0x122')],_0x2f5bcc[_0x6184('0x123')])>=_0x2f5bcc[_0x6184('0x124')]){this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x5db949[_0x6184('0xb8')]]['outboundDropCallsDayTimeout']+=0x1;this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x125')]+=0x1;_0x18aee0[_0x6184('0xad')]=0xa;_0x18aee0['statedesc']=_0x6184('0x126');_0x18aee0[_0x6184('0x127')]=_0x6184('0x128');_0x18aee0[_0x6184('0x129')]=this[_0x6184('0x23')][_0x5db949['queue']][_0x6184('0x11d')]?moment()[_0x6184('0x7b')](_0x6184('0x111')):undefined;_0x18aee0[_0x6184('0x10e')]+=0x1;_0x18aee0[_0x6184('0xf7')]+=0x1;_0x25e421=this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x12a')];_0x5d447a=this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x12b')];_0x41796b[_0x6184('0xbf')](_0x18aee0,_0x18aee0[_0x6184('0xad')],_0x2f5bcc[_0x6184('0x12c')])[_0x6184('0x45')](function(_0x3e8631){_0x23fe0a=_0x3e8631['additional']==0x1;if(_0x18aee0[_0x6184('0x10e')]>=_0x41796b[_0x6184('0x23')][_0x5db949['queue']][_0x6184('0x12d')]){_0x41796b[_0x6184('0x12e')](_0x18aee0,_0x3e8631['additional']);}else{_0x41796b['rescheduleContact']({'active':![],'countdropretry':_0x18aee0[_0x6184('0x10e')],'scheduledat':moment()[_0x6184('0x110')](_0x41796b[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x12a')],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x2f5bcc[_0x6184('0x104')],'ListId':_0x2f5bcc['ListId'],'VoiceQueueId':_0x2f5bcc[_0x6184('0x105')]||undefined,'CampaignId':_0x2f5bcc[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x12f')));var _0x5278d2=new History(_0x18aee0);_0x5278d2[_0x6184('0xad')]=0xa;_0x5278d2[_0x6184('0xeb')]=_0x6184('0x126');_0x5278d2[_0x6184('0x130')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));_0x5278d2[_0x6184('0xae')]=_0x5278d2['starttime'];_0x5278d2[_0x6184('0x131')]=_0x18aee0[_0x6184('0x131')];_0x5278d2[_0x6184('0x132')]=_0x18aee0['calleridnum'];_0x41796b[_0x6184('0xd3')](_0x5278d2)['catch'](loggerCatch(_0x6184('0x133')));}})[_0x6184('0x45')](function(){if(_0x23fe0a)_0x41796b[_0x6184('0xc1')](_0x18aee0,_0x25e421,_0x5d447a)[_0x6184('0x45')](function(){return 0x1;});});}else{this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x6d')]+=0x1;this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x66')]+=0x1;_0x18aee0['state']=0xb;_0x18aee0[_0x6184('0xeb')]=_0x6184('0x134');_0x18aee0[_0x6184('0x127')]='CALLEREXIT';_0x18aee0[_0x6184('0xfb')]+=0x1;_0x18aee0[_0x6184('0xf7')]+=0x1;_0x25e421=this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]]['dialAbandonedRetryFrequency'];_0x5d447a=this[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x12b')];_0x41796b[_0x6184('0xbf')](_0x18aee0,_0x18aee0[_0x6184('0xad')],_0x2f5bcc['voiceQueue'])['then'](function(_0x38d276){if(_0x18aee0[_0x6184('0xfb')]>=_0x41796b['voiceQueues'][_0x5db949[_0x6184('0xb8')]][_0x6184('0x135')]){_0x41796b[_0x6184('0x12e')](_0x18aee0,_0x38d276[_0x6184('0x136')]);}else{_0x41796b[_0x6184('0xc8')]({'active':![],'countabandonedretry':_0x18aee0['countabandonedretry'],'scheduledat':moment()[_0x6184('0x110')](_0x41796b[_0x6184('0x23')][_0x5db949[_0x6184('0xb8')]][_0x6184('0x137')],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x2f5bcc[_0x6184('0x104')],'ListId':_0x2f5bcc['ListId'],'VoiceQueueId':_0x2f5bcc['VoiceQueueId']||undefined,'CampaignId':_0x2f5bcc['CampaignId']||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x138')));var _0x5b5ddb=new History(_0x18aee0);_0x5b5ddb[_0x6184('0xad')]=0xb;_0x5b5ddb[_0x6184('0xeb')]='Abandoned';_0x5b5ddb[_0x6184('0x130')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));_0x5b5ddb[_0x6184('0xae')]=_0x5b5ddb['starttime'];_0x5b5ddb['calleridname']=_0x18aee0[_0x6184('0x131')];_0x5b5ddb[_0x6184('0x132')]=_0x18aee0[_0x6184('0x132')];_0x41796b[_0x6184('0xd3')](_0x5b5ddb)[_0x6184('0xb6')](loggerCatch(_0x6184('0x139')));}})[_0x6184('0x45')](function(){if(_0x23fe0a)_0x41796b[_0x6184('0xc1')](_0x18aee0,_0x25e421,_0x5d447a)[_0x6184('0x45')](function(){return 0x1;});});}}}};Dialer[_0x6184('0xaf')][_0x6184('0x13a')]=function(_0x24895c){if(this[_0x6184('0x28')][_0x24895c[_0x6184('0xe5')]]){this[_0x6184('0x28')][_0x24895c['uniqueid']]['channel']=_0x24895c['channel'];}if(this[_0x6184('0x2a')][_0x24895c[_0x6184('0xe5')]]){this[_0x6184('0x2a')][_0x24895c[_0x6184('0xe5')]][_0x6184('0xb5')]=_0x24895c[_0x6184('0xb5')];}};Dialer[_0x6184('0xaf')][_0x6184('0x13b')]=function(_0xfddeb){if(strategy[this[_0x6184('0x23')][this[_0x6184('0x28')][_0xfddeb['actionid']][_0x6184('0xb8')]][_0x6184('0x13c')]]==='roundrobin'){if(this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]]&&_[_0x6184('0xb2')](this[_0x6184('0x28')][_0xfddeb['actionid']]['locked'])&&_0xfddeb[_0x6184('0xb4')]==='1'&&_0xfddeb[_0x6184('0x13e')]==='0'){if(this[_0x6184('0x24')][_0xfddeb[_0x6184('0x13f')]]){if(!this[_0x6184('0x24')][_0xfddeb[_0x6184('0x13f')]][_0x6184('0x140')]){this[_0x6184('0x24')][_0xfddeb['stateinterface']]['locked']=!![];this['actions'][_0xfddeb[_0x6184('0x13d')]][_0x6184('0x140')]=!![];this[_0x6184('0x28')][_0xfddeb['actionid']][_0x6184('0x13f')]=_0xfddeb['stateinterface'];}}}}else if((strategy[this[_0x6184('0x23')][this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]]['queue']]['strategy']]||_0x6184('0x1c'))===_0x6184('0x1c')){if(this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]]){if(this[_0x6184('0x24')][_0xfddeb[_0x6184('0x13f')]]){this['actions'][_0xfddeb[_0x6184('0x13d')]][_0x6184('0x13f')]=_0xfddeb['stateinterface'];if(_['isNil'](this[_0x6184('0x2e')][this[_0x6184('0x28')][_0xfddeb['actionid']]['queue']])){this['queueBooked'][this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]][_0x6184('0xb8')]]=[];}this[_0x6184('0x2e')][this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]]['queue']][_0x6184('0x141')](_[_0x6184('0xd9')](_[_0x6184('0x142')](this[_0x6184('0x28')][_0xfddeb[_0x6184('0x13d')]],['idHopper','stateinterface']),{'status':_0xfddeb[_0x6184('0xb4')],'paused':_0xfddeb['paused']}));}}}};function unlockQueueStatus(_0x36b9a9,_0x433ed8){setTimeout(function(){if(_[_0x6184('0x46')](_0x36b9a9['queueStatusComplete'])){loggerBooked[_0x6184('0x9c')](_0x6184('0x143'),_0x433ed8);}_0x36b9a9[_0x6184('0x144')]=!![];loggerBooked['info'](_0x6184('0x145'),_0x433ed8,JSON[_0x6184('0x7a')](_[_0x6184('0x142')](_0x36b9a9,[_0x6184('0x48'),_0x6184('0x144')])));},0x1f3);}Dialer[_0x6184('0xaf')]['syncQueueStatusComplete']=function(_0x2b0eca){var _0x5f28bb=this;var _0x38ce1c=_0x5f28bb[_0x6184('0x23')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]];if(strategy[this[_0x6184('0x23')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]['strategy']]===_0x6184('0x1d')){if(this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]&&this['actions'][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0x13f')]){this[_0x6184('0x22')]['run'](this['actions'][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0x146')],this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0x13f')])[_0x6184('0xb6')](function(_0x8783fc){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x6184('0x9b')](_0x8783fc,{'showHidden':![],'depth':null}));})[_0x6184('0x20')](function(){_0x5f28bb[_0x6184('0xea')](_0x5f28bb[_0x6184('0x23')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]);_0x5f28bb[_0x6184('0x24')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['stateinterface']][_0x6184('0x140')]=![];delete _0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]];unlockQueueStatus(_0x38ce1c);});}else{this[_0x6184('0xea')](this['voiceQueues'][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]);this[_0x6184('0xc8')]({'active':![],'ContactId':this['actions'][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0x104')],'ListId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xda')],'VoiceQueueId':this['actions'][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0x105')]||undefined,'CampaignId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xdc')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x6184('0x28')][_0x2b0eca['actionid']];unlockQueueStatus(_0x38ce1c);}}else if((strategy[this[_0x6184('0x23')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['queue']]['strategy']]||_0x6184('0x1c'))===_0x6184('0x1c')){var _0x516a8c;if(this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]&&!_[_0x6184('0x4e')](this[_0x6184('0x2e')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['queue']])){if(this[_0x6184('0x2f')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]){this[_0x6184('0x2f')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]=this[_0x6184('0x2f')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['queue']]?this['queueBookedRR'][this['actions'][_0x2b0eca['actionid']][_0x6184('0xb8')]]:this['queueBooked'][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]?this['queueBooked'][this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0xb8')]][_0x6184('0x147')]||0x0:0x0;}this[_0x6184('0x2e')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]][_0x6184('0x147')]=this['queueBookedRR'][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]];for(var _0x8b0bce=0x0;_0x8b0bce<this[_0x6184('0x2e')][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]][_0x6184('0x148')];_0x8b0bce+=0x1){_0x516a8c=rr(this['queueBooked'][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]);this[_0x6184('0x2f')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xb8')]]=this['queueBooked'][this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['queue']][_0x6184('0x147')];if(_0x516a8c['status']==='1'&&_0x516a8c['paused']==='0'){break;}}if(!_[_0x6184('0xb2')](_0x516a8c)){this[_0x6184('0x24')][_0x516a8c['stateinterface']][_0x6184('0x149')]=_['isUndefined'](this['agents'][_0x516a8c[_0x6184('0x13f')]][_0x6184('0x149')])?!![]:this[_0x6184('0x24')][_0x516a8c[_0x6184('0x13f')]][_0x6184('0x149')];}loggerBooked[_0x6184('0x81')]('[booked][RR]',_0x2b0eca[_0x6184('0x13d')],'Agent:\x20',JSON[_0x6184('0x7a')](_[_0x6184('0x142')](this[_0x6184('0x24')][_0x516a8c[_0x6184('0x13f')]],[_0x6184('0x48'),_0x6184('0x149')])),_0x6184('0x14a'),JSON[_0x6184('0x7a')](_0x516a8c[_0x6184('0x146')]));if(!_[_0x6184('0xb2')](_0x516a8c)&&_0x516a8c[_0x6184('0xb4')]==='1'&&_0x516a8c[_0x6184('0x13e')]==='0'&&this['agents'][_0x516a8c[_0x6184('0x13f')]][_0x6184('0x149')]){this['agents'][_0x516a8c[_0x6184('0x13f')]][_0x6184('0x149')]=![];this[_0x6184('0x2e')][_0x5f28bb[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['queue']]=[];this[_0x6184('0x22')]['run'](_0x516a8c['idHopper'],_0x516a8c[_0x6184('0x13f')])[_0x6184('0xb6')](function(_0x48e756){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x6184('0x9b')](_0x48e756,{'showHidden':![],'depth':null}));})[_0x6184('0x20')](function(){_0x5f28bb[_0x6184('0xea')](_0x5f28bb[_0x6184('0x23')][_0x5f28bb['actions'][_0x2b0eca['actionid']][_0x6184('0xb8')]]);setTimeout(function(){_0x5f28bb['agents'][_0x516a8c[_0x6184('0x13f')]][_0x6184('0x149')]=!![];loggerBooked[_0x6184('0x81')]('[booked][RR][finaly]',_0x2b0eca[_0x6184('0x13d')],'Agent:\x20',JSON[_0x6184('0x7a')](_['pick'](_0x5f28bb[_0x6184('0x24')][_0x516a8c[_0x6184('0x13f')]],[_0x6184('0x48'),_0x6184('0x149')])),_0x6184('0x14a'),JSON[_0x6184('0x7a')](_0x516a8c[_0x6184('0x146')]));},0xc7);delete _0x5f28bb[_0x6184('0x28')][_0x2b0eca['actionid']];unlockQueueStatus(_0x38ce1c,_0x2b0eca[_0x6184('0x13d')]);});}else{loggerBooked[_0x6184('0x81')](_0x6184('0x14b'));this['updateOriginated'](this['voiceQueues'][this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0xb8')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0x104')],'ListId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xda')],'VoiceQueueId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x2b0eca['actionid']][_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x14c')));delete this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]];unlockQueueStatus(_0x38ce1c);}}else{loggerBooked[_0x6184('0x81')](_0x6184('0x14d'));this['updateOriginated'](this[_0x6184('0x23')][this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0xb8')]]);this[_0x6184('0xc8')]({'active':![],'ContactId':this['actions'][_0x2b0eca['actionid']][_0x6184('0x104')],'ListId':this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xda')],'VoiceQueueId':this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0x105')]||undefined,'CampaignId':this['actions'][_0x2b0eca[_0x6184('0x13d')]][_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x6184('0x28')][_0x2b0eca[_0x6184('0x13d')]];unlockQueueStatus(_0x38ce1c);}}else{loggerBooked[_0x6184('0x81')](_0x6184('0x14e'));this['updateOriginated'](this[_0x6184('0x23')][this[_0x6184('0x28')][_0x2b0eca['actionid']]['queue']]);this[_0x6184('0xc8')]({'active':![],'ContactId':this['actions'][_0x2b0eca['actionid']][_0x6184('0x104')],'ListId':this['actions'][_0x2b0eca[_0x6184('0x13d')]]['ListId'],'VoiceQueueId':this[_0x6184('0x28')][_0x2b0eca['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0x6184('0x28')][_0x2b0eca['actionid']][_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x6184('0x28')][_0x2b0eca['actionid']];unlockQueueStatus(_0x38ce1c);}};Dialer[_0x6184('0xaf')]['loopCampaigns']=function(){var _0xfcec79=this;return cmHopper[_0x6184('0x14f')]({'active':![]},{'where':{'active':!![]}})[_0x6184('0x45')](function(){setInterval(function(){_0xfcec79['syncCampaigns']();},0x3e8);});};Dialer[_0x6184('0xaf')]['checkIsTrunkReachable']=function(_0x5b1ae0){var _0x30e661=this;return function(){if(!_0x30e661['isTrunkReachable'](_0x5b1ae0['Trunk'])){if(!_0x30e661[_0x6184('0x150')](_0x5b1ae0[_0x6184('0x151')])){_0x5b1ae0['message']=_0x6184('0x152');throw _0x5b1ae0[_0x6184('0x48')]+_0x6184('0x153');}}};};Dialer[_0x6184('0xaf')][_0x6184('0x154')]=function(_0x2f8988,_0x3c428e,_0x30fd12,_0x2d1fc6){var _0x4e997a=this;return function(){var _0x1cb630=!![];return _0x4e997a[_0x6184('0x155')](_0x2f8988,_0x3c428e,_0x30fd12,_0x2d1fc6,_0x1cb630);};};Dialer[_0x6184('0xaf')][_0x6184('0x156')]=function(_0x31580b,_0x3e24a3,_0x28c836,_0x51a94b){var _0x36c8ec=this;return function(){var _0x1cdb45=![];return _0x36c8ec[_0x6184('0x155')](_0x31580b['Intervals'],_0x3e24a3,_0x28c836,_0x51a94b,_0x1cdb45);};};Dialer[_0x6184('0xaf')][_0x6184('0x155')]=function(_0x40c036,_0x2f0442,_0x4e1b53,_0x16add1,_0x3199b6){var _0x20c3e3=[];return new Promise(function(_0x396c42,_0x56f239){if(!isNotNull(_0x40c036)){_0x16add1[_0x6184('0x47')]=_0x6184('0x4c');return _0x56f239(msgResponse(_0x6184('0x155'),_0x6184('0x157'),_0x4e1b53+_0x6184('0x158')));}if(_['isEmpty'](_0x40c036)){_0x16add1[_0x6184('0x47')]=_0x6184('0x159');return _0x56f239(msgResponse('ifTime',_0x6184('0x157'),_0x4e1b53+_0x6184('0x15a')));}if(_0x2f0442&&_[_0x6184('0x46')](config[_0x6184('0x15b')][_0x2f0442])){_0x16add1[_0x6184('0x47')]=_0x6184('0x15c');return _0x56f239(msgResponse(_0x6184('0x155'),_0x6184('0x157'),_0x4e1b53+'\x20Timezone\x20unknow\x20'+_0x2f0442));}if(_[_0x6184('0x15d')](_0x40c036)){for(var _0x51c466=0x0;_0x51c466<_0x40c036['length'];_0x51c466+=0x1){_0x20c3e3['push'](ami['Action']({'action':'command','command':util[_0x6184('0x7b')](_0x6184('0x15e'),_0x40c036[_0x51c466][_0x6184('0x15f')],!_['isUndefined'](config['timezones'][_0x2f0442])?_0x2f0442:'')})[_0x6184('0x45')](function(_0x583f95){return _0x583f95[_0x6184('0x160')][_0x6184('0x161')](_0x6184('0x162'))>=0x0;})[_0x6184('0xb6')](myreject(_0x56f239)));}}else{_0x20c3e3[_0x6184('0x141')](ami[_0x6184('0xb3')]({'action':_0x6184('0x163'),'command':util['format'](_0x6184('0x15e'),_0x40c036,!_['isUndefined'](config[_0x6184('0x15b')][_0x2f0442])?_0x2f0442:'')})['then'](function(_0x364147){return _0x364147[_0x6184('0x160')][_0x6184('0x161')]('true')>=0x0;})[_0x6184('0xb6')](myreject(_0x56f239)));}Promise[_0x6184('0x164')](_0x20c3e3)[_0x6184('0x45')](function(_0x18049c){var _0x45db84=_['some'](_0x18049c);if(_0x45db84){return _0x396c42(_0x45db84);}else{_0x16add1[_0x6184('0x47')]=_0x3199b6?_0x6184('0x165'):_0x6184('0x166');return _0x56f239(msgResponse('[ifTime][promiseAll]',_0x6184('0x157'),_0x6184('0x167')+_0x3199b6+'\x20'+_0x4e1b53+'\x20Interval\x20is\x20overtime:\x20'+util[_0x6184('0x9b')](_0x40c036,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x2f0442));}})[_0x6184('0xb6')](function(_0x2e3123){return _0x56f239(msgResponse(_0x6184('0x155'),'Failure',JSON[_0x6184('0x7a')](_0x2e3123)));});});};Dialer[_0x6184('0xaf')][_0x6184('0x168')]=function(_0x4e67c3){var _0x893ef5=this;return function(){switch(_0x4e67c3[_0x6184('0x5d')]){case'progressive':freeVariablesPredictive(_0x4e67c3);_0x893ef5[_0x6184('0x169')](_0x4e67c3,0x1);break;case'power':freeVariablesPredictive(_0x4e67c3);_0x893ef5[_0x6184('0x169')](_0x4e67c3,_0x4e67c3[_0x6184('0x16a')]);break;case _0x6184('0xa'):_0x893ef5['predictive'](_0x4e67c3);break;case'booked':freeVariablesPredictive(_0x4e67c3);_0x893ef5[_0x6184('0x169')](_0x4e67c3,0x1);break;default:freeVariablesPredictive(_0x4e67c3);logger['error'](_0x6184('0x16b'),_0x4e67c3[_0x6184('0x48')],_0x6184('0x16c'));}};};Dialer[_0x6184('0xaf')][_0x6184('0x16d')]=function(_0x59c268){return Promise[_0x6184('0xbc')]()[_0x6184('0x45')](cmHopper['handlePreviewRecallNotifications'](_0x59c268['id'],previewRecallmeReminderInterval))[_0x6184('0x45')](function(_0x5a5274){for(var _0x3ef72a=0x0;_0x3ef72a<_0x5a5274[_0x6184('0x148')];_0x3ef72a++){var _0x34e832=_0x5a5274[_0x3ef72a][_0x6184('0x16e')][_0x6184('0x48')];if(_0x34e832)io['to'](util[_0x6184('0x7b')](_0x6184('0x16f'),_0x34e832))[_0x6184('0xee')]('user:dialPreviewRecallReminder',{'hopper':_0x5a5274[_0x3ef72a]});}})['catch'](function(){});};Dialer[_0x6184('0xaf')][_0x6184('0x170')]=function(_0x4da423){var _0x35ae5a=this;return function(){_0x35ae5a[_0x6184('0x171')](_0x4da423);};};Dialer[_0x6184('0xaf')][_0x6184('0xc')]=function(_0x3ee948){var _0x48fad4=this;if(isNotPreview(_0x3ee948[_0x6184('0x5d')])){if(isVoiceQueueOutbound(_0x3ee948[_0x6184('0x53')])&&isActive(_0x3ee948[_0x6184('0x5c')])){_0x3ee948[_0x6184('0xa4')]=!![];Promise[_0x6184('0xbc')]()[_0x6184('0x45')](checkIsLoggedIn(_0x3ee948,_0x3ee948[_0x6184('0x172')]))[_0x6184('0x45')](checkIsActive(_0x3ee948,_0x3ee948[_0x6184('0x5c')]))[_0x6184('0x45')](checkInterval(_0x3ee948))['then'](_0x48fad4[_0x6184('0x173')](_0x3ee948))['then'](_0x48fad4[_0x6184('0x154')](_0x3ee948[_0x6184('0x174')],_0x3ee948[_0x6184('0x175')],_0x3ee948[_0x6184('0x48')],_0x3ee948))[_0x6184('0x45')](_0x48fad4[_0x6184('0x156')](_0x3ee948[_0x6184('0x4b')],_0x3ee948[_0x6184('0x175')],_0x3ee948['name'],_0x3ee948))['then'](_0x48fad4[_0x6184('0x168')](_0x3ee948))[_0x6184('0xb6')](loggerCatchQueueSummary(_0x6184('0x176'),_0x3ee948));}else{notSendMessagesQueue(_0x3ee948);}}else{freeVariablesPredictive(_0x3ee948);}};Dialer[_0x6184('0xaf')][_0x6184('0x3a')]=_[_0x6184('0x177')](function(){var _0x530bfc=_[_0x6184('0x178')](this[_0x6184('0x23')],function(_0x3275e3){return _0x3275e3[_0x6184('0x179')];});var _0x28135e=_[_0x6184('0x178')](this[_0x6184('0x24')],function(_0x5d1bfb){return _0x5d1bfb[_0x6184('0x17a')]&&_0x5d1bfb[_0x6184('0xb4')]==='reachable';});if(_0x530bfc[_0x6184('0x148')]>0x0&&_0x28135e['length']>0x0){return Promise['resolve']()[_0x6184('0x45')](cmHopper[_0x6184('0x17b')](_[_0x6184('0x17c')](_0x530bfc,'id'),previewRecallmeReminderInterval,_[_0x6184('0x17c')](_0x28135e,'id')))[_0x6184('0x45')](function(_0x2df646){for(var _0x23ff69=0x0;_0x23ff69<_0x2df646[_0x6184('0x148')];_0x23ff69++){var _0x181711=_0x2df646[_0x23ff69][_0x6184('0x16e')][_0x6184('0x48')];if(_0x181711)io['to'](util[_0x6184('0x7b')](_0x6184('0x16f'),_0x181711))['emit'](_0x6184('0x17d'),{'hopper':_0x2df646[_0x23ff69]});}})[_0x6184('0xb6')](function(_0x49cdfe){logger[_0x6184('0x9c')](_0x6184('0x16d'),_0x49cdfe);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x6184('0xaf')][_0x6184('0x17e')]=function(){var _0x1227b5=this;var _0x5dee8e;for(var _0x364180 in this[_0x6184('0xba')]){if(typeof this['campaigns'][_0x364180]!=='undefined'){_0x5dee8e=this[_0x6184('0xba')][_0x364180];if(isCampaignIvr(_0x5dee8e[_0x6184('0x53')])&&isActive(_0x5dee8e[_0x6184('0xe1')])){_0x5dee8e['sendMessageOneNotActive']=!![];Promise['resolve']()[_0x6184('0x45')](checkIsActive(_0x5dee8e,_0x5dee8e[_0x6184('0xe1')]))[_0x6184('0x45')](checkInterval(_0x5dee8e))['then'](_0x1227b5[_0x6184('0x173')](_0x5dee8e))[_0x6184('0x45')](_0x1227b5['checkIfTime'](_0x5dee8e[_0x6184('0x174')],_0x5dee8e[_0x6184('0x175')],_0x5dee8e[_0x6184('0x48')],_0x5dee8e))['then'](_0x1227b5['checkIfTimeIntervals'](_0x5dee8e[_0x6184('0x4b')],_0x5dee8e['dialTimezone'],_0x5dee8e['name'],_0x5dee8e))[_0x6184('0x45')](_0x1227b5[_0x6184('0x170')](_0x5dee8e))['catch'](loggerCatchQueueSummary('[syncCampaigns]',_0x5dee8e));}else{notSendMessagesCampaign(_0x5dee8e);}}}};function getCallerIdRandom(_0xcce974,_0x565847){var _0x2e6031;var _0x1f3092;var _0x2ad3b6;if(_0x565847<=0x0){_0x565847=0x1;}_0x2e6031=new RegExp('\x5cw{0,'+_0x565847+'}$');_0x1f3092=Math['pow'](0xa,_0x565847-0x1);_0x2ad3b6=Math[_0x6184('0x17f')](0xa,_0x565847)-0x1;return util[_0x6184('0x7b')]('%s',_[_0x6184('0x180')](_0xcce974,_0x2e6031,_[_0x6184('0x181')](_0x1f3092,_0x2ad3b6)));}function extractCalleridName(_0x22dee1){var _0x45eef9=_0x22dee1[_0x6184('0x182')](/"(.*?)"/);return _0x45eef9?_0x45eef9[0x1]:_0x22dee1;}Dialer['prototype'][_0x6184('0x183')]=function(_0xa749c6,_0x2e1d80){var _0x4f2c11=this;var _0xd99603=uuid['v4']();this[_0x6184('0x28')][_0xd99603]=new Action(_0xa749c6,_0x2e1d80,_0xd99603);return new Promise(function(_0x5f3398,_0x15eeb1){if(_[_0x6184('0x46')](_0xa749c6)&&typeof _0xa749c6!=='object'){return _0x15eeb1(msgResponse(_0x6184('0x184'),'Failure',_0x6184('0x185')));}if(_['isUndefined'](_0x2e1d80[_0x6184('0x186')])||_0x2e1d80['phone']===null){return _0x15eeb1(msgResponse('originate',_0x6184('0x157'),_0x6184('0x187')));}var _0x25a63f={'XMD-CALLERID':_0x4f2c11[_0x6184('0x28')][_0xd99603]['getCaller'](),'XMD-AGI':_0xa749c6[_0x6184('0x117')]?util[_0x6184('0x7b')](_0x6184('0x188'),ipAgi,_0xa749c6['dialQueueProject']):_0x6184('0x189'),'XMD-AGIAFTER':_0xa749c6[_0x6184('0x11d')]?util[_0x6184('0x7b')]('\x22agi://%s/square,%s\x22',ipAgi,_0xa749c6[_0x6184('0x11d')]):_0x6184('0x189'),'XMD-QUEUE':_0xa749c6[_0x6184('0x53')]==='outbound'?util[_0x6184('0x7b')](_0x6184('0x18a'),_0xa749c6[_0x6184('0x48')],_0xa749c6[_0x6184('0x18b')]||'',_0xa749c6[_0x6184('0x11e')]?'c':'',_0xa749c6[_0x6184('0x124')]||0x3):_0x6184('0x189'),'XMD-CONTACTID':_0x2e1d80[_0x6184('0x104')],'XMD-CDRTYPE':_0x6184('0x8'),'CALLERID(all)':_0x4f2c11['actions'][_0xd99603][_0x6184('0x18c')](),'XMD-AMD':_0xa749c6[_0x6184('0x107')]?_0x6184('0x18d'):_0x6184('0x189'),'XMD-DESTINATION':_0x6184('0x18e')};if(_0xa749c6[_0x6184('0x107')]){_0x25a63f['XMD-AMDINITIALSILENCE']=_0xa749c6[_0x6184('0x18f')]||0x9c4;_0x25a63f[_0x6184('0x190')]=_0xa749c6[_0x6184('0x191')]||0x5dc;_0x25a63f[_0x6184('0x192')]=_0xa749c6[_0x6184('0x193')]||0x320;_0x25a63f[_0x6184('0x194')]=_0xa749c6[_0x6184('0x195')]||0x1388;_0x25a63f[_0x6184('0x196')]=_0xa749c6[_0x6184('0x197')]||0x64;_0x25a63f[_0x6184('0x198')]=_0xa749c6['dialAMDBetweenWordsSilence']||0x32;_0x25a63f[_0x6184('0x199')]=_0xa749c6[_0x6184('0x19a')]||0x3;_0x25a63f[_0x6184('0x19b')]=_0xa749c6[_0x6184('0x19c')]||0x100;_0x25a63f['XMD-AMDMAXIMUMWORDLENGTH']=_0xa749c6[_0x6184('0x19d')]||0x1388;}if(_0xa749c6[_0x6184('0x53')]===_0x6184('0x96')){_0x25a63f['XMD-VOICEQUEUEID']=_0x2e1d80['VoiceQueueId'];}else{_0x25a63f[_0x6184('0x19e')]=_0x2e1d80[_0x6184('0xdc')];}for(var _0x3564c1 in _0x2e1d80['Contact']){if(typeof _0x2e1d80[_0x6184('0x19f')][_0x3564c1]!==_0x6184('0x9e')){if(isNotNull(_0x2e1d80[_0x6184('0x19f')][_0x3564c1])&&_0x3564c1!=='id'&&_0x3564c1!=='tags'&&_0x3564c1!==_0x6184('0x1a0')&&_0x3564c1!=='updatedAt'){_0x25a63f[util[_0x6184('0x7b')](_0x6184('0x1a1'),'XMD-',_['toUpper'](_0x3564c1))]=_0x2e1d80[_0x6184('0x19f')][_0x3564c1];}}}var _0x2f56ba=_0x4f2c11[_0x6184('0x150')](_0xa749c6[_0x6184('0x78')])?getCallerId(_0xa749c6[_0x6184('0x78')]['callerid'],_0xa749c6[_0x6184('0x5e')],_0xa749c6[_0x6184('0x1a2')]>0x0?getCallerIdRandom(_0xa749c6[_0x6184('0x5f')],_0xa749c6['dialRandomLastDigitCallerIdNumber']):_0xa749c6[_0x6184('0x5f')]):getCallerId(_['isNil'](_0xa749c6[_0x6184('0x151')])?_0xa749c6[_0x6184('0x78')][_0x6184('0x79')]:_0xa749c6['TrunkBackup'][_0x6184('0x79')],_0xa749c6[_0x6184('0x5e')],_0xa749c6[_0x6184('0x1a2')]>0x0?getCallerIdRandom(_0xa749c6['dialOriginateCallerIdNumber'],_0xa749c6[_0x6184('0x1a2')]):_0xa749c6['dialOriginateCallerIdNumber']);if(_0x2f56ba){_0x25a63f[_0x6184('0x1a3')]=_0x4f2c11['actions'][_0xd99603]['originatecalleridname']=extractCalleridName(_0x2f56ba);_0x25a63f['XMD-ORIGINATECALLERIDNUM']=_0x2e1d80[_0x6184('0x186')];}_0xa749c6[_0x6184('0x1a4')]=_0x25a63f;return ami['Action']({'actionid':_0xd99603,'action':_0x6184('0x184'),'channel':_0x4f2c11[_0x6184('0x150')](_0xa749c6['Trunk'])?util[_0x6184('0x7b')]('SIP/%s/%s%s',_0xa749c6['Trunk'][_0x6184('0x48')],isNotNull(_0xa749c6['dialPrefix'])?_0xa749c6[_0x6184('0x61')]['trim']()||'':'',_0xa749c6[_0x6184('0x1a5')]>0x0?_0x2e1d80['phone'][_0x6184('0x1a6')](_0xa749c6[_0x6184('0x1a5')]):_0x2e1d80[_0x6184('0x186')]):util[_0x6184('0x7b')]('SIP/%s/%s%s',_[_0x6184('0xb2')](_0xa749c6['TrunkBackup'])?_0xa749c6[_0x6184('0x78')][_0x6184('0x48')]:_0xa749c6[_0x6184('0x151')][_0x6184('0x48')],isNotNull(_0xa749c6[_0x6184('0x61')])?_0xa749c6[_0x6184('0x61')][_0x6184('0x1a7')]()||'':'',_0xa749c6[_0x6184('0x1a5')]>0x0?_0x2e1d80[_0x6184('0x186')]['substring'](_0xa749c6[_0x6184('0x1a5')]):_0x2e1d80['phone']),'callerid':_0x2f56ba,'Exten':'xcally-motion-dialer','Context':_0x6184('0x1a8'),'Priority':'1','variable':_0x25a63f,'timeout':(_0xa749c6[_0x6184('0x60')]||0x1e)*0x3e8,'async':!![],'channelid':_0xd99603})[_0x6184('0x45')](function(_0x372cb1){return _0x5f3398(_0x372cb1);})[_0x6184('0xb6')](function(_0x24daf0){_0xa749c6[_0x6184('0x69')]+=0x1;var _0x50361b=new History(_0x4f2c11[_0x6184('0x28')][_0xd99603]);logger[_0x6184('0x9c')](util[_0x6184('0x7b')]('[originateError]:\x20%s',JSON[_0x6184('0x7a')](_0x24daf0)));_0x50361b[_0x6184('0xad')]=0xe;_0x50361b[_0x6184('0xeb')]=_0x6184('0x1a9');_0x50361b[_0x6184('0x130')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));_0x50361b[_0x6184('0xae')]=_0x50361b[_0x6184('0x130')];_0x4f2c11[_0x6184('0xd3')](_0x50361b)['catch'](loggerCatch('[originate][error]'));_0x4f2c11[_0x6184('0xd1')](_0x50361b)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1aa')))[_0x6184('0x20')](function(){delete _0x4f2c11['actions'][_0xd99603];return _0x15eeb1(msgResponse(_0x6184('0x184'),_0x6184('0x50'),_0x6184('0x1ab')));});});});};Dialer['prototype'][_0x6184('0x35')]=function(_0x55230c){var _0x2df66d=this['actions'][_0x55230c[_0x6184('0x13d')]];if(_0x2df66d){delete this[_0x6184('0x28')][_0x55230c[_0x6184('0x13d')]];_0x2df66d['responsetime']=moment()['format'](_0x6184('0x111'));var _0x239155=_0x2df66d[_0x6184('0x53')]===_0x6184('0x7e')?this[_0x6184('0xba')][_0x2df66d[_0x6184('0xb8')]]:this[_0x6184('0x23')][_0x2df66d[_0x6184('0x1ac')]()];if(!this['isSuccess'](_0x55230c[_0x6184('0x1ad')])){this[_0x6184('0xea')](_0x239155);return this[_0x6184('0x1ae')](_0x2df66d,_0x239155,_0x55230c)['catch'](loggerCatch(_0x6184('0x1af')));}this[_0x6184('0x2a')][_0x55230c[_0x6184('0xe5')]]=_0x2df66d;}};Dialer['prototype'][_0x6184('0x1b0')]=function(_0x4e51c3,_0x2385cb,_0x5b8594){var _0x5d8411=new History(_0x2385cb);if(_0x5d8411[_0x6184('0xf8')]+_0x5d8411['countcongestionretry']+_0x5d8411['countnoanswerretry']+_0x5d8411[_0x6184('0xfa')]+_0x5d8411['countdropretry']+_0x5d8411[_0x6184('0xfb')]+_0x5d8411[_0x6184('0xf6')]+_0x5d8411['countagentrejectretry']>=_0x5b8594[_0x6184('0xfc')]-0x1){return!![];}switch(_0x4e51c3){case 0x3:if(_0x5d8411[_0x6184('0xf9')]>=_0x5b8594[_0x6184('0x1b1')]-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countnoanswerretry':_0x5d8411[_0x6184('0xf9')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594['dialNoAnswerRetryFrequency'],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})['catch'](loggerCatch(_0x6184('0x1b2')));break;case 0x5:if(_0x5d8411[_0x6184('0xf8')]>=_0x5b8594[_0x6184('0x1b3')]-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countbusyretry':_0x5d8411[_0x6184('0xf8')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594[_0x6184('0x1b4')],_0x6184('0x103'))[_0x6184('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x1b5')));break;case 0x8:if(_0x5d8411['countcongestionretry']>=_0x5b8594[_0x6184('0x1b6')]-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countcongestionretry':_0x5d8411[_0x6184('0x10d')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594['dialCongestionRetryFrequency'],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411['ContactId'],'ListId':_0x5d8411['ListId'],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x1b7')));break;case 0x0:if(_0x5d8411[_0x6184('0xfa')]>=_0x5b8594[_0x6184('0x1b8')]-0x1){return!![];}else{this[_0x6184('0xc8')]({'active':![],'countnosuchnumberretry':_0x5d8411[_0x6184('0xfa')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594['dialNoSuchNumberRetryFrequency'],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411['CampaignId']||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x1b9')));}break;case 0xa:if(_0x5d8411[_0x6184('0x10e')]>=_0x5b8594[_0x6184('0x12d')]-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countdropretry':_0x5d8411[_0x6184('0x10e')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594['dialDropRetryFrequency'],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411['VoiceQueueId']||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x5d8411[_0x6184('0xfb')]>=_0x5b8594[_0x6184('0x135')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x5d8411[_0x6184('0xfb')]+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594[_0x6184('0x137')],_0x6184('0x103'))['format'](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x138')));break;case 0x13:if(_0x5d8411[_0x6184('0xf6')]>=_0x5b8594['dialMachineMaxRetry']-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countmachineretry':_0x5d8411['countmachineretry']+=0x1,'scheduledat':moment()['add'](_0x5b8594[_0x6184('0x102')],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411[_0x6184('0x105')]||undefined,'CampaignId':_0x5d8411[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x106')));break;case 0x14:if(_0x5d8411[_0x6184('0x10f')]>=_0x5b8594['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x6184('0xc8')]({'active':![],'countagentrejectretry':_0x5d8411['countagentrejectretry']+=0x1,'scheduledat':moment()[_0x6184('0x110')](_0x5b8594[_0x6184('0x1ba')],_0x6184('0x103'))[_0x6184('0x7b')](_0x6184('0x111')),'ContactId':_0x5d8411[_0x6184('0x104')],'ListId':_0x5d8411[_0x6184('0xda')],'VoiceQueueId':_0x5d8411['VoiceQueueId']||undefined,'CampaignId':_0x5d8411['CampaignId']||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x1bb')));break;default:return!![];}};Dialer[_0x6184('0xaf')][_0x6184('0x1ae')]=function(_0x321f86,_0x12388b,_0x5ba709){var _0x30ec54=this;var _0x48f020=new History(_0x321f86);var _0x2db199=![];var _0x12ca02;var _0x5b788f;return new Promise(function(_0x25b152,_0x3c95f8){if(_['isUndefined'](_0x12388b)&&typeof _0x12388b!==_0x6184('0x1bc')){return _0x3c95f8(msgResponse(_0x6184('0x1bd'),_0x6184('0x157'),'entity\x20is\x20undefine'));}if(_[_0x6184('0x46')](_0x5ba709)&&typeof _0x5ba709!=='object'){return _0x3c95f8(msgResponse(_0x6184('0x1bd'),_0x6184('0x157'),'evt\x20is\x20undefine'));}_0x30ec54[_0x6184('0xbf')](_0x48f020,_0x5ba709[_0x6184('0x11b')],_0x12388b)['then'](function(_0x50eb0c){if(_0x50eb0c[_0x6184('0x136')]==0x1)_0x2db199=!![];switch(_0x5ba709[_0x6184('0x11b')]){case'0':_0x12388b[_0x6184('0x68')]+=0x1;_0x48f020[_0x6184('0xad')]=0x0;_0x48f020[_0x6184('0xeb')]=_0x6184('0x1be');_0x48f020[_0x6184('0xfa')]+=0x1;_0x48f020[_0x6184('0xf7')]+=0x1;ami['emit'](_0x6184('0x1bf'),ut[_0x6184('0xf0')](_0x321f86,_0x6184('0x1c0')));_0x12ca02=_0x12388b[_0x6184('0x1c1')];_0x5b788f=_0x12388b[_0x6184('0x12b')];_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x10c')));if(_0x30ec54[_0x6184('0x1b0')](0x0,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020['countnosuchnumberretry']>=_0x12388b[_0x6184('0x1b8')]){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1c2'));}else{_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1c2'));}}break;case'3':_0x12388b[_0x6184('0x1c3')]+=0x1;_0x48f020[_0x6184('0xad')]=0x3;_0x48f020['statedesc']=_0x6184('0x1c4');_0x48f020[_0x6184('0xf9')]+=0x1;_0x48f020['countglobal']+=0x1;var _0x5e59ec=ut[_0x6184('0x1c5')](_0x321f86,_0x12388b);ami[_0x6184('0xee')](_0x6184('0x1c6'),_0x5e59ec);_0x12ca02=_0x12388b['dialNoAnswerRetryFrequency'];_0x5b788f=_0x12388b[_0x6184('0x12b')];_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1c7')));if(_0x30ec54[_0x6184('0x1b0')](0x3,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020['countnoanswerretry']>=_0x12388b[_0x6184('0x1b1')]){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,'reason\x203\x20ringing\x20no\x20answer');}else{_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x12388b[_0x6184('0x1c8')]+=0x1;_0x48f020[_0x6184('0xad')]=0x5;_0x48f020[_0x6184('0xeb')]=_0x6184('0x1c9');_0x48f020[_0x6184('0xf8')]+=0x1;_0x48f020['countglobal']+=0x1;ami[_0x6184('0xee')]('custom:agentbusy',ut[_0x6184('0xf0')](_0x321f86,'busy'));_0x12ca02=_0x12388b[_0x6184('0x1b4')];_0x5b788f=_0x12388b[_0x6184('0x12b')];_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1ca')));if(_0x30ec54[_0x6184('0x1b0')](0x5,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020[_0x6184('0xf8')]>=_0x12388b[_0x6184('0x1b3')]){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1cb'));}else{_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1cb'));}}break;case'8':_0x12388b['outboundCongestionCallsDay']+=0x1;_0x48f020['state']=0x8;_0x48f020['statedesc']=_0x6184('0x1cc');_0x48f020['countcongestionretry']+=0x1;_0x48f020[_0x6184('0xf7')]+=0x1;_0x12ca02=_0x12388b[_0x6184('0x1cd')];_0x5b788f=_0x12388b['callAdditionalPhoneAfterMin'];ami['emit'](_0x6184('0x1ce'),ut[_0x6184('0xf0')](_0x321f86,_0x6184('0x1cf')));_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1d0')));if(_0x30ec54[_0x6184('0x1b0')](0x8,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020[_0x6184('0x10d')]>=_0x12388b[_0x6184('0x1b6')]){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d1'));}else{_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d1'));}}break;case'11':_0x12388b['outboundAbandonedCallsDay']+=0x1;_0x48f020[_0x6184('0xad')]=0xb;_0x48f020[_0x6184('0xeb')]='Abandoned';_0x48f020[_0x6184('0xfb')]+=0x1;_0x48f020[_0x6184('0xf7')]+=0x1;_0x12ca02=_0x12388b[_0x6184('0x137')];_0x5b788f=_0x12388b['callAdditionalPhoneAfterMin'];_0x30ec54['createHistory'](_0x48f020)['catch'](loggerCatch(_0x6184('0x139')));if(_0x30ec54[_0x6184('0x1b0')](0xb,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020[_0x6184('0xfb')]>=_0x12388b['dialAbandonedMaxRetry']){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d2'));}else{_0x30ec54['stateGlobal'](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d2'));}}break;case'20':_0x12388b[_0x6184('0x6b')]+=0x1;_0x48f020[_0x6184('0xad')]=0x14;_0x48f020[_0x6184('0xeb')]='AgentReject';_0x48f020['countagentrejectretry']+=0x1;_0x48f020['countglobal']+=0x1;_0x12ca02=_0x12388b[_0x6184('0x1ba')];_0x5b788f=_0x12388b[_0x6184('0x12b')];ami[_0x6184('0xee')](_0x6184('0x1d3'),ut[_0x6184('0xf0')](_0x321f86,_0x6184('0x1d4')));_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1d5')));if(_0x30ec54['checkRetriveMax'](0x14,_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020[_0x6184('0x10f')]>=_0x12388b[_0x6184('0x1d6')]){_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d7'));}else{_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,_0x6184('0x1d7'));}}break;default:_0x12388b[_0x6184('0x118')]+=0x1;_0x48f020[_0x6184('0xad')]=0xc;_0x48f020[_0x6184('0xeb')]=_0x5ba709['reason'];_0x12ca02=_0x12388b[_0x6184('0x1ba')];_0x5b788f=_0x12388b[_0x6184('0x12b')];_0x30ec54[_0x6184('0xd3')](_0x48f020)[_0x6184('0xb6')](loggerCatch(_0x6184('0x1d8')));if(_0x30ec54[_0x6184('0x1b0')](_0x5ba709['reason'],_0x321f86,_0x12388b)&&!_0x2db199){if(_0x48f020[_0x6184('0xf8')]+_0x48f020[_0x6184('0x10d')]+_0x48f020['countnoanswerretry']+_0x48f020[_0x6184('0xfa')]+_0x48f020[_0x6184('0x10e')]+_0x48f020['countabandonedretry']+_0x48f020['countmachineretry']+_0x48f020[_0x6184('0x10f')]>=_0x12388b['dialGlobalMaxRetry']){_0x30ec54[_0x6184('0xfd')](_0x48f020,_0x25b152,_0x3c95f8,_0x5ba709[_0x6184('0x11b')]);}else{_0x30ec54[_0x6184('0x100')](_0x48f020,_0x25b152,_0x3c95f8,_0x5ba709[_0x6184('0x11b')]);}}}})[_0x6184('0x45')](function(){if(_0x2db199){_0x30ec54[_0x6184('0xc1')](_0x48f020,_0x12ca02,_0x5b788f)[_0x6184('0x45')](function(){return _0x25b152(0x1);});}});});};Dialer[_0x6184('0xaf')][_0x6184('0xfd')]=function(_0x3a1270,_0x8c00ea,_0x5781b2,_0x329490){var _0x2a81d9=new Final(_0x3a1270);_0x2a81d9[_0x6184('0xad')]=0xf;_0x2a81d9['statedesc']=_0x6184('0x1d9');this[_0x6184('0x100')](_0x2a81d9,_0x8c00ea,_0x5781b2,_0x329490);};Dialer[_0x6184('0xaf')][_0x6184('0x100')]=function(_0x5a7827,_0x3bf003,_0x10b3d6,_0x3d69e4){this[_0x6184('0xd1')](_0x5a7827)[_0x6184('0x45')](function(){return _0x3bf003(msgResponse(_0x6184('0x1bd'),_0x6184('0xe0'),_0x3d69e4));})['catch'](function(){return _0x10b3d6(msgResponse(_0x6184('0x1da'),_0x6184('0x157'),_0x6184('0x1db')));});};Dialer[_0x6184('0xaf')][_0x6184('0xa')]=function(_0xd5bc4a){var _0x2db002=_0xd5bc4a[_0x6184('0x1dc')]/0x64;var _0x4fa5f8=_0xd5bc4a['outboundDropCallsDayTimeout']/(_0xd5bc4a[_0x6184('0x67')]+_0xd5bc4a[_0x6184('0x63')]);var _0x1f558b=Math[_0x6184('0x1dd')](_0xd5bc4a[_0x6184('0x1de')]*(_0xd5bc4a[_0x6184('0x1df')]/0x64));var _0x16ba02=Math[_0x6184('0x1dd')](_0xd5bc4a['predictiveIntervalAvailable']*(_0xd5bc4a[_0x6184('0x1e0')]/0x64));var _0x555784=_0xd5bc4a['available']+_0xd5bc4a[_0x6184('0xa5')];var _0xbaabad=Math[_0x6184('0x1e1')](_0xd5bc4a[_0x6184('0x73')]*_0xd5bc4a[_0x6184('0x75')]*_0xd5bc4a[_0x6184('0x6f')]*_0xd5bc4a[_0x6184('0x1e2')]);if(_[_0x6184('0x46')](_0xd5bc4a[_0x6184('0x77')])){if(!_[_0x6184('0x46')](_0xd5bc4a['startPredictive'])){_0xd5bc4a[_0x6184('0x2c')]=undefined;loggerPredictive[_0x6184('0x9c')](_0x6184('0x1e3'),_0x6184('0x1e4'));}if(!_['isUndefined'](_0xd5bc4a['handlePredictive'])){loggerPredictive[_0x6184('0x9c')](_0x6184('0x1e3'),_0x6184('0x1e5'));clearInterval(_0xd5bc4a['handlePredictive']);_0xd5bc4a[_0x6184('0x94')]=undefined;}_0xd5bc4a['startProgressive']=moment()[_0x6184('0x7b')](_0x6184('0x111'));loggerPredictive[_0x6184('0x81')](_0xd5bc4a[_0x6184('0x48')],_0x6184('0x1e6'),_0xd5bc4a['startProgressive']);this[_0x6184('0x169')](_0xd5bc4a,0x1);}else if(ifInterval(_0xd5bc4a[_0x6184('0x1e7')],_0xd5bc4a[_0x6184('0x77')])){this[_0x6184('0x169')](_0xd5bc4a,0x1);loggerPredictiveCalls['info'](_0x6184('0x1e8'),_0xd5bc4a[_0x6184('0x77')],_0xd5bc4a['name']);_0xd5bc4a[_0x6184('0x73')]=0x0;_0xd5bc4a[_0x6184('0x125')]=0x0;}else if(_0x2db002<_0x4fa5f8&&_0xd5bc4a[_0x6184('0x1e9')]===_0x6184('0x1ea')){freeVariablesPredictive(_0xd5bc4a);loggerPredictive[_0x6184('0x81')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day',_0x4fa5f8,_0x6184('0x77'),_0xd5bc4a['name']);}else if(_0xbaabad<_0xd5bc4a['predictiveIntervalErlangCallsDroppedCalls']&&_0xd5bc4a[_0x6184('0x1e9')]===_0x6184('0x1ea')){freeVariablesPredictive(_0xd5bc4a);loggerPredictive[_0x6184('0x81')](_0x6184('0x1eb'),_0x6184('0x1ec'),_0xbaabad,_0x6184('0x1ed'),_0xd5bc4a[_0x6184('0x125')],_0x6184('0x77'),_0xd5bc4a[_0x6184('0x48')]);}else if(!ifInterval(_0xd5bc4a[_0x6184('0x1e7')],_0xd5bc4a[_0x6184('0x77')])&&_[_0x6184('0x46')](_0xd5bc4a['startPredictive'])&&!_[_0x6184('0x46')](_0xd5bc4a['startProgressive'])){_0xd5bc4a[_0x6184('0x2c')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));loggerPredictive['info'](_0xd5bc4a[_0x6184('0x48')],_0x6184('0x1ee'),_0xd5bc4a[_0x6184('0x2c')]);this[_0x6184('0xc5')](_0xd5bc4a[_0x6184('0x1e7')])[_0x6184('0x45')](this[_0x6184('0x1ef')](_0xd5bc4a))['then'](mergeDataErlangB(_0xd5bc4a))[_0x6184('0x45')](this[_0x6184('0x1f0')](_0xd5bc4a))[_0x6184('0xb6')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0xd5bc4a));}else if(!ifInterval(_0xd5bc4a['dialPredictiveInterval'],_0xd5bc4a['startPredictive'])){_0xd5bc4a[_0x6184('0x125')]=0x0;_0xd5bc4a[_0x6184('0x2c')]=moment()[_0x6184('0x7b')](_0x6184('0x111'));loggerPredictive['info'](_0xd5bc4a[_0x6184('0x48')],_0x6184('0x1f1'),_0xd5bc4a[_0x6184('0x2c')]);clearInterval(_0xd5bc4a['handlePredictive']);_0xd5bc4a['handlePredictive']=undefined;this[_0x6184('0xc5')](_0xd5bc4a[_0x6184('0x1e7')])['then'](this[_0x6184('0x1ef')](_0xd5bc4a))[_0x6184('0x45')](mergeDataErlangB(_0xd5bc4a))[_0x6184('0x45')](this[_0x6184('0x1f0')](_0xd5bc4a))[_0x6184('0xb6')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0xd5bc4a));}else if(_0xd5bc4a[_0x6184('0x1de')]&&_0x555784<_0xd5bc4a[_0x6184('0x1de')]-_0x16ba02){freeVariablesPredictive(_0xd5bc4a);loggerPredictive[_0x6184('0x81')](_0xd5bc4a['name'],_0x6184('0x1f2'),_0x555784,_0x6184('0x1f3'),_0xd5bc4a[_0x6184('0x1de')],'-',_0x16ba02,'=',_0xd5bc4a[_0x6184('0x1de')]-_0x16ba02,')');}else if(_0xd5bc4a[_0x6184('0x1de')]&&_0x555784>_0xd5bc4a[_0x6184('0x1de')]+_0x1f558b){freeVariablesPredictive(_0xd5bc4a);loggerPredictive[_0x6184('0x81')](_0xd5bc4a[_0x6184('0x48')],_0x6184('0x1f2'),_0x555784,')\x20are\x20more\x20than\x20threshold\x20(',_0xd5bc4a[_0x6184('0x1de')],'+',_0x1f558b,'=',_0xd5bc4a[_0x6184('0x1de')]+_0x1f558b,')');}};Dialer[_0x6184('0xaf')]['getDataPredictive']=function(_0x1dec54){var _0x2f0cf7=this;return function(_0x9b5426){return new Promise(function(_0x2ac013,_0x28f8d0){_[_0x6184('0xd9')](_0x1dec54,_0x9b5426[0x0]);if(checkGetDataPredictive(_0x9b5426[0x0])){var _0x3ff414=_0x1dec54[_0x6184('0x1de')]=_0x1dec54[_0x6184('0xa5')]+_0x1dec54[_0x6184('0xa7')];var _0x5232d5=_0x1dec54[_0x6184('0x1e7')]*0x3c;var _0x1e7454=_0x9b5426[0x0][_0x6184('0x89')]+_0x9b5426[0x0]['predictiveIntervalAvgHoldtime'];var _0x3ae9d4=(_0x9b5426[0x0][_0x6184('0x6c')]+_0x9b5426[0x0][_0x6184('0x85')]+_0x9b5426[0x0][_0x6184('0x6d')])/_0x9b5426[0x0][_0x6184('0x71')];_0x1dec54['predictiveIntervalHitRate']=_0x3ae9d4>0x0?_0x3ae9d4:0x1;switch(_0x1dec54[_0x6184('0x1e9')]){case'dropRate':var _0x43831c=_0x1dec54[_0x6184('0x1dc')]/0x64;return _0x2f0cf7[_0x6184('0x1f4')](_0x3ff414,_0x5232d5,_0x1e7454,_0x3ae9d4,_0x43831c)[_0x6184('0x45')](function(_0x16eae2){return _0x2ac013(_0x16eae2);});case _0x6184('0x1f5'):var _0x4c89e0=_0x1dec54['dialPredictiveOptimizationPercentage']/0x64;return _0x2f0cf7[_0x6184('0x1f6')](_0x3ff414,_0x5232d5,_0x1e7454,_0x3ae9d4,_0x4c89e0)[_0x6184('0x45')](function(_0x38dc16){return _0x2ac013(_0x38dc16);});default:return _0x28f8d0(msgResponse(_0x6184('0x1f7'),_0x6184('0x157'),_0x6184('0x1f8')));}}else{return _0x28f8d0(msgResponse(_0x6184('0x1f7'),'Failure',_0x6184('0x1f9')));}});};};Dialer[_0x6184('0xaf')]['getDataPredictiveOld']=function(_0xa5aca3){var _0xecf46f=this;return function(_0x484bc9){return new Promise(function(_0x4de57a,_0x353717){_[_0x6184('0xd9')](_0xa5aca3,_0x484bc9[0x0]);if(checkGetDataPredictive(_0x484bc9[0x0])){loggerPredictive['info'](JSON[_0x6184('0x7a')](_0x484bc9[0x0]));if(_0xa5aca3[_0x6184('0x1e9')]===_0x6184('0x1ea')){return _0xecf46f[_0x6184('0xcf')](_0xa5aca3['id'])['then'](function(_0x1313a5){var _0x19386e=_0xa5aca3['loggedIn']-_0x1313a5[0x0]['outboundQueuePauses'];var _0x3ba098=_0xa5aca3[_0x6184('0x1e7')]*0x3c;var _0x3bbe28=_0x484bc9[0x0][_0x6184('0x89')]+_0x484bc9[0x0][_0x6184('0x87')];var _0x4fc2c3=(_0x484bc9[0x0][_0x6184('0x6c')]+_0x484bc9[0x0][_0x6184('0x85')]+_0x484bc9[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x484bc9[0x0][_0x6184('0x71')];var _0x49bd9b=_0xa5aca3[_0x6184('0x1dc')]/0x64;_0xa5aca3[_0x6184('0x70')]=_0x1313a5[0x0][_0x6184('0x1fa')]||0x0;_0xa5aca3[_0x6184('0x6f')]=_0x4fc2c3>0x0?_0x4fc2c3:0x1;return _0xecf46f[_0x6184('0x1f4')](_0x19386e,_0x3ba098,_0x3bbe28,_0x4fc2c3,_0x49bd9b);})[_0x6184('0x45')](function(_0x1485a0){return _0x4de57a(_0x1485a0);})[_0x6184('0xb6')](function(_0x3ef7f1){return _0x353717(msgResponse(_0x6184('0x1fb'),_0x6184('0x157'),JSON[_0x6184('0x7a')](_0x3ef7f1)));});}if(_0xa5aca3['dialPredictiveOptimization']===_0x6184('0x1f5')){return _0xecf46f[_0x6184('0xcf')](_0xa5aca3['id'])[_0x6184('0x45')](function(_0x90de77){var _0x3c7fa9=_0xa5aca3['loggedIn']-_0x90de77[0x0]['outboundQueuePauses'];var _0x1b7008=_0xa5aca3[_0x6184('0x1e7')]*0x3c;var _0x516358=_0x484bc9[0x0][_0x6184('0x89')]+_0x484bc9[0x0]['predictiveIntervalAvgHoldtime'];var _0x1d6666=(_0x484bc9[0x0][_0x6184('0x6c')]+_0x484bc9[0x0][_0x6184('0x85')]+_0x484bc9[0x0][_0x6184('0x6d')])/_0x484bc9[0x0][_0x6184('0x71')];var _0x8d15=_0xa5aca3[_0x6184('0x1dc')]/0x64;_0xa5aca3[_0x6184('0x70')]=_0x90de77[0x0]['outboundQueuePauses']||0x0;_0xa5aca3[_0x6184('0x6f')]=_0x1d6666>0x0?_0x1d6666:0x1;return _0xecf46f[_0x6184('0x1f6')](_0x3c7fa9,_0x1b7008,_0x516358,_0x1d6666,_0x8d15);})['then'](function(_0x54cc46){return _0x4de57a(_0x54cc46);})[_0x6184('0xb6')](function(_0x1e0678){return _0x353717(msgResponse(_0x6184('0x1fb'),_0x6184('0x157'),JSON['stringify'](_0x1e0678)));});}}else{return _0x353717(msgResponse(_0x6184('0x1f7'),_0x6184('0x157'),_0x6184('0x1f9')));}});};};Dialer[_0x6184('0xaf')][_0x6184('0x1f0')]=function(_0x241f49){var _0x104391=this;return function(){var _0x4b1670=0x0;var _0x434dfe=Math[_0x6184('0x1e1')](_0x241f49['erlangCallToSecond']*0x3e8);if(_0x434dfe>0x0){_0x434dfe=_0x434dfe<0x64?0x64:_0x434dfe;loggerPredictive[_0x6184('0x81')](_0x241f49[_0x6184('0x48')],_0x6184('0x1fc'),_0x434dfe,'milliseconds');_0x241f49[_0x6184('0x94')]=setInterval(function(){_0x104391[_0x6184('0x94')](_0x241f49);loggerPredictiveCalls[_0x6184('0x81')](_0x6184('0x1fd'),_0x4b1670+=0x1);},_0x434dfe);}else{loggerPredictive[_0x6184('0x81')](_0x241f49[_0x6184('0x48')],_0x6184('0x1fe'));}};};Dialer[_0x6184('0xaf')][_0x6184('0x1ff')]=function(_0x15a53c,_0xc413a0){var _0x5859dc=this;return function(_0x28f156){if(_[_0x6184('0x4e')](_0x28f156)){if(_['isNil'](_0xc413a0[_0x6184('0xdb')])||!_0xc413a0[_0x6184('0x200')]){if(_0x15a53c[_0x6184('0x5d')]===_0x6184('0x9')){_0x15a53c[_0x6184('0x144')]=_[_0x6184('0x46')](_0x15a53c[_0x6184('0x144')])?!![]:_0x15a53c[_0x6184('0x144')];var _0x5c43b3=uuid['v4']();_0x5859dc[_0x6184('0x28')][_0x5c43b3]=new Action(_0x15a53c,_0xc413a0,_0x5c43b3);loggerBooked['info']('[booked][checkContactBlack]',_0x5c43b3,'queueStatusComplete:\x20',JSON[_0x6184('0x7a')](_0x15a53c[_0x6184('0x144')]),_0x6184('0x201'),_0x15a53c[_0x6184('0x48')]);if(_0x15a53c[_0x6184('0x144')]){_0x15a53c[_0x6184('0x144')]=![];_0x5859dc[_0x6184('0x2e')][_0x5859dc[_0x6184('0x28')][_0x5c43b3][_0x6184('0xb8')]]=[];ami[_0x6184('0xb3')]({'actionid':_0x5c43b3,'action':'queuestatus','queue':_0x15a53c[_0x6184('0x48')]})[_0x6184('0xb6')](function(){_0x5859dc[_0x6184('0xea')](_0x15a53c);_0x5859dc['rescheduleContact']({'active':![],'ContactId':_0x5859dc['actions'][_0x5c43b3]['ContactId'],'ListId':_0x5859dc[_0x6184('0x28')][_0x5c43b3][_0x6184('0xda')],'VoiceQueueId':_0x5859dc['actions'][_0x5c43b3][_0x6184('0x105')]||undefined,'CampaignId':_0x5859dc[_0x6184('0x28')][_0x5c43b3][_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x202')));delete _0x5859dc['actions'][_0x5c43b3];});}else{loggerBooked[_0x6184('0x81')](_0x6184('0x203'),JSON[_0x6184('0x7a')](_0x15a53c[_0x6184('0x144')]),'Queue:\x20',_0x15a53c[_0x6184('0x48')]);_0x5859dc['updateOriginated'](_0x15a53c);_0x5859dc['rescheduleContact']({'active':![],'ContactId':_0x5859dc[_0x6184('0x28')][_0x5c43b3][_0x6184('0x104')],'ListId':_0x5859dc['actions'][_0x5c43b3]['ListId'],'VoiceQueueId':_0x5859dc['actions'][_0x5c43b3][_0x6184('0x105')]||undefined,'CampaignId':_0x5859dc['actions'][_0x5c43b3][_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x202')));delete _0x5859dc[_0x6184('0x28')][_0x5c43b3];}}else{return _0x5859dc[_0x6184('0x183')](_0x15a53c,_0xc413a0);}}else{if(getDiff(_0xc413a0[_0x6184('0x204')])<_0x15a53c[_0x6184('0x205')]*0x3c){if(_0xc413a0[_0x6184('0x16e')]&&!_0xc413a0[_0x6184('0x16e')][_0x6184('0x206')]){_0x5859dc[_0x6184('0x22')]['run'](_0xc413a0['id'])[_0x6184('0x20')](function(){_0x5859dc[_0x6184('0xea')](_0x15a53c);});}else{_0x5859dc[_0x6184('0xca')]({'active':![]},_0xc413a0['id'],0x1)[_0x6184('0x20')](function(){_0x5859dc[_0x6184('0xea')](_0x15a53c);});}}else{_0x15a53c['outboundReCallsDay']+=0x1;_0x5859dc['updateOriginated'](_0x15a53c);if(_0x15a53c[_0x6184('0x207')]){_0x5859dc[_0x6184('0xc8')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0xc413a0[_0x6184('0x104')],'ListId':_0xc413a0[_0x6184('0xda')],'VoiceQueueId':_0xc413a0[_0x6184('0x105')]||undefined,'CampaignId':_0xc413a0[_0x6184('0xdc')]||undefined})[_0x6184('0xb6')](loggerCatch(_0x6184('0x208')));_0x5859dc['createHistory'](createObjHistory(_0x15a53c,_0xc413a0,_0x6184('0x209'),0x17,'RecallInQueue'))[_0x6184('0xb6')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x5859dc[_0x6184('0xd8')](createObjHistory(_0x15a53c,_0xc413a0,_0x6184('0x20a'),0x16,'RecallFailedTimeout'),_0x6184('0x20b'),_0x6184('0x20c'));}}}}else{_0x15a53c[_0x6184('0x64')]+=0x1;_0x5859dc[_0x6184('0xd8')](createObjHistory(_0x15a53c,_0xc413a0,_0x6184('0x20d'),0xd,_0x6184('0x20e')),'[Originate][historyBlacklist]',_0x6184('0x20f'));throw'inBlackList';}};};Dialer[_0x6184('0xaf')]['handleIvr']=function(_0x3fa062){var _0x2e0554=this;var _0x44ba50=_0x3fa062[_0x6184('0x210')]-_0x3fa062[_0x6184('0x72')]-_0x3fa062['temp'];emitCampaignSummary(_0x3fa062);if(_0x44ba50>0x0){if(_0x44ba50>this[_0x6184('0x26')]){_0x44ba50=this['maxNumberOriginate'];}_0x3fa062[_0x6184('0xcb')]+=_0x44ba50;this[_0x6184('0xcd')](_0x3fa062['id'],_0x44ba50,_0x3fa062[_0x6184('0x211')],_0x3fa062)['then'](function(_0x4d2fb6){_0x3fa062[_0x6184('0xcb')]-=_0x44ba50;_0x3fa062[_0x6184('0xcb')]=_0x3fa062[_0x6184('0xcb')]>0x0?_0x3fa062['temp']:0x0;if(!checkContactEmpty(_0x4d2fb6)){_0x3fa062[_0x6184('0x47')]=_0x6184('0x212');logger[_0x6184('0x81')]('[getContactCampaign2][Empty]'+_0x3fa062['name']);}else{_0x3fa062['originated']+=_0x4d2fb6[_0x6184('0x148')];_0x3fa062[_0x6184('0x47')]=_0x6184('0x213');for(var _0x5e0b09=0x0;_0x5e0b09<_0x4d2fb6[_0x6184('0x148')];_0x5e0b09+=0x1){_0x3fa062[_0x6184('0x214')]+=0x1;if(_['isNil'](_0x4d2fb6[_0x5e0b09])||_[_0x6184('0xb2')](_0x4d2fb6[_0x5e0b09][_0x6184('0x19f')])||_[_0x6184('0xb2')](_0x4d2fb6[_0x5e0b09][_0x6184('0x186')])){_0x2e0554[_0x6184('0xd7')](_0x6184('0x215'),_0x3fa062,_0x4d2fb6[_0x5e0b09]);}else{_0x2e0554['checkIsBlackListIvr'](_['pick'](_0x4d2fb6[_0x5e0b09],[_0x6184('0xdc'),_0x6184('0x186')]))['then'](_0x2e0554[_0x6184('0x1ff')](_0x3fa062,_0x4d2fb6[_0x5e0b09]))[_0x6184('0xb6')](_0x2e0554[_0x6184('0xd6')](_0x6184('0x216'),_0x3fa062));}}}})[_0x6184('0xb6')](loggerGetContactDialer(_0x6184('0x217'),_0x3fa062,_0x44ba50));}};Dialer[_0x6184('0xaf')][_0x6184('0x169')]=function(_0x3eeab9,_0x1371e2){var _0x14513c=this;var _0x551d00=[];var _0x5dc456=_0x1371e2>=0x1?_0x1371e2:0x1;if(_0x3eeab9[_0x6184('0x5d')]==='booked'){_0x5dc456=0x1;}var _0x2b86b6=Math[_0x6184('0x1e1')](_0x3eeab9[_0x6184('0xa7')]*_0x5dc456)-_0x3eeab9[_0x6184('0x72')]-_0x3eeab9[_0x6184('0xcb')];emitVoiceQueueSummary(_0x3eeab9);if(_0x3eeab9[_0x6184('0x218')]>0x0){var _0x34097c=_0x3eeab9[_0x6184('0x218')]-_0x3eeab9['originated']-_0x3eeab9[_0x6184('0xa5')]-_0x3eeab9[_0x6184('0xcb')]-_0x3eeab9[_0x6184('0xa6')];if(_0x2b86b6>_0x34097c){_0x2b86b6=_0x34097c;}}if(_0x2b86b6>0x0){if(_0x3eeab9[_0x6184('0x5d')]===_0x6184('0x9')){_0x2b86b6=0x1;}if(_0x2b86b6>this[_0x6184('0x26')]){_0x2b86b6=this['maxNumberOriginate'];}_0x3eeab9['temp']+=_0x2b86b6;for(var _0xbd41b0 in this[_0x6184('0x24')]){if(typeof this[_0x6184('0x24')][_0xbd41b0]!==_0x6184('0x9e')){if(this[_0x6184('0x24')][_0xbd41b0][_0x6184('0xad')]===_0x6184('0x219')&&this[_0x6184('0x24')][_0xbd41b0][_0x6184('0xb4')]===_0x6184('0xe3')){_0x551d00[_0x6184('0x141')](this[_0x6184('0x24')][_0xbd41b0]['id']);}}}this[_0x6184('0x21a')](_0x3eeab9['id'],_0x551d00,_0x2b86b6,_0x3eeab9[_0x6184('0x211')],_0x3eeab9)[_0x6184('0x45')](function(_0x24e58f){_0x3eeab9[_0x6184('0xcb')]-=_0x2b86b6;_0x3eeab9[_0x6184('0xcb')]=_0x3eeab9[_0x6184('0xcb')]>0x0?_0x3eeab9[_0x6184('0xcb')]:0x0;if(!checkContactEmpty(_0x24e58f)){_0x14513c[_0x6184('0x21b')](_0x3eeab9)[_0x6184('0x45')](sendMessageReschedule(_0x3eeab9))['catch'](loggerCatch(_0x6184('0xbd')));}else{_0x3eeab9[_0x6184('0x72')]+=_0x24e58f[_0x6184('0x148')];_0x3eeab9[_0x6184('0x47')]=_0x3eeab9[_0x6184('0x5d')]===_0x6184('0x9')?_0x6184('0x18d'):_0x6184('0x213');for(var _0x36a508=0x0;_0x36a508<_0x24e58f[_0x6184('0x148')];_0x36a508+=0x1){if(_[_0x6184('0xb2')](_0x24e58f[_0x36a508])||_[_0x6184('0xb2')](_0x24e58f[_0x36a508][_0x6184('0x19f')])||_[_0x6184('0xb2')](_0x24e58f[_0x36a508]['phone'])){_0x14513c[_0x6184('0xd7')](_0x6184('0x215'),_0x3eeab9,_0x24e58f[_0x36a508]);}else{_0x14513c['checkIsBlackList'](_['pick'](_0x24e58f[_0x36a508],[_0x6184('0x105'),_0x6184('0x186')]))['then'](_0x14513c[_0x6184('0x1ff')](_0x3eeab9,_0x24e58f[_0x36a508]))[_0x6184('0xb6')](_0x14513c[_0x6184('0xd6')](_0x6184('0x215'),_0x3eeab9));}}}})['catch'](loggerGetContactDialer('[getContactDialer2]',_0x3eeab9,_0x2b86b6));}};Dialer[_0x6184('0xaf')]['handlePredictive']=function(_0x5f196f){if(_0x5f196f[_0x6184('0x218')]>0x0){var _0x50d9aa=_0x5f196f['dialLimitQueue']-_0x5f196f[_0x6184('0x72')]-_0x5f196f[_0x6184('0xa5')];if(_0x50d9aa>0x0){this[_0x6184('0x21c')](_0x5f196f);}else{loggerPredictiveCalls[_0x6184('0x81')](_0x6184('0x21d'));}}else{this[_0x6184('0x21c')](_0x5f196f);}};Dialer[_0x6184('0xaf')][_0x6184('0x21c')]=function(_0x2d461b){var _0x514d5e=this;var _0x4c29ce=[];_0x2d461b[_0x6184('0x72')]+=0x1;for(var _0x180963 in this['agents']){if(typeof this[_0x6184('0x24')][_0x180963]!==_0x6184('0x9e')){if(this[_0x6184('0x24')][_0x180963][_0x6184('0xad')]===_0x6184('0x219')&&this[_0x6184('0x24')][_0x180963][_0x6184('0xb4')]===_0x6184('0xe3')){_0x4c29ce[_0x6184('0x141')](this[_0x6184('0x24')][_0x180963]['id']);}}}this[_0x6184('0x21a')](_0x2d461b['id'],_0x4c29ce,0x1,_0x2d461b['dialOrderByScheduledAt'],_0x2d461b)[_0x6184('0x45')](function(_0x4f4b9a){if(!checkContactEmpty(_0x4f4b9a)){checkContactLowerLimitOriginate(_0x2d461b,0x1,0x0);_0x514d5e[_0x6184('0x21b')](_0x2d461b)[_0x6184('0x45')](sendMessageReschedule(_0x2d461b))['catch'](loggerCatch(_0x6184('0xbd')));}else{_0x2d461b[_0x6184('0x47')]=_0x6184('0x213');if(_[_0x6184('0xb2')](_0x4f4b9a[0x0])||_['isNil'](_0x4f4b9a[0x0][_0x6184('0x19f')])||_[_0x6184('0xb2')](_0x4f4b9a[0x0]['phone'])){_0x514d5e[_0x6184('0xd7')]('[actionOriginate]\x20',_0x2d461b,_0x4f4b9a[0x0]);}else{_0x514d5e['checkIsBlackList'](_[_0x6184('0x142')](_0x4f4b9a[0x0],['VoiceQueueId','phone']))[_0x6184('0x45')](_0x514d5e[_0x6184('0x1ff')](_0x2d461b,_0x4f4b9a[0x0]))[_0x6184('0xb6')](_0x514d5e['loggerHandler']('[actionOriginatePredictive]\x20',_0x2d461b));}}})[_0x6184('0xb6')](loggerGetContactDialer(_0x6184('0x21e'),_0x2d461b,0x1));emitVoiceQueueSummary(_0x2d461b);};Dialer[_0x6184('0xaf')]['abandonmentRate']=function(_0x568828,_0x5d402b,_0x5aab41,_0x585e53,_0x2f4348,_0x3e8cf2){loggerPredictive[_0x6184('0x81')](_0x6184('0x21f'));loggerPredictive[_0x6184('0x81')](_0x6184('0x220'),_0x568828);loggerPredictive[_0x6184('0x81')](_0x6184('0x221'),_0x5d402b);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',_0x5aab41);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x585e53);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2f4348);loggerPredictive['info'](_0x6184('0x8a'));return new Promise(function(_0x5d5975,_0x1935bf){if(_0x568828<=0x0||isNaN(_0x568828)){return _0x1935bf(msgResponse(_0x6184('0x222'),'Error',_0x6184('0x223')+_0x568828));}if(_0x5aab41<=0x0||isNaN(_0x5aab41)){return _0x1935bf(msgResponse(_0x6184('0x222'),'Error',_0x6184('0x224')+_0x5aab41));}if(_0x585e53<=0x0||isNaN(_0x585e53)){return _0x1935bf(msgResponse('[abandonmentRate]',_0x6184('0x50'),_0x6184('0x225')+_0x585e53));}if(_0x5d402b<=0x0||isNaN(_0x5d402b)){return _0x1935bf(msgResponse('[abandonmentRate]','Error','interval\x20=\x20'+_0x5d402b));}if(_0x2f4348<=0x0||isNaN(_0x2f4348)){return _0x1935bf(msgResponse('[abandonmentRate]',_0x6184('0x50'),'Amax\x20=\x20'+_0x2f4348));}_0x3e8cf2=_0x3e8cf2||0x0;var _0x25c4ca=0x1/_0x5aab41;var _0x17deba=0x0;var _0x5a10b4=0x0;var _0x33b4f3=0x0;var _0x199ccb=0x0;for(var _0x55d66e=0x0;_0x33b4f3<_0x2f4348;_0x55d66e+=0x1){_0x5a10b4=_0x55d66e/_0x5d402b;_0x17deba=(_0x585e53*_0x5a10b4+_0x3e8cf2)/_0x25c4ca;_0x33b4f3=erlangb(_0x17deba,_0x568828);_0x199ccb=_0x17deba/_0x568828*(0x1-erlangb(_0x17deba,_0x568828));}return _0x5d5975({'erlangCalls':_0x55d66e,'erlangCallToSecond':_0x5d402b/_0x55d66e,'erlangAbandonmentRate':_0x33b4f3,'erlangBusyFactor':_0x199ccb});});};Dialer[_0x6184('0xaf')]['busyFactor']=function(_0x4c73c6,_0x4e1837,_0x3b6706,_0x26404a,_0x21e652,_0x4882bd){loggerPredictive[_0x6184('0x81')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x6184('0x81')](_0x6184('0x220'),_0x4c73c6);loggerPredictive['info'](_0x6184('0x221'),_0x4e1837);loggerPredictive[_0x6184('0x81')](_0x6184('0x226'),_0x3b6706);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x26404a);loggerPredictive[_0x6184('0x81')](_0x6184('0x227'),_0x21e652);loggerPredictive[_0x6184('0x81')](_0x6184('0x8a'));return new Promise(function(_0x313cac,_0x185eb9){if(_0x4c73c6<=0x0||isNaN(_0x4c73c6)){return _0x185eb9(msgResponse('[busyFactor]','Error',_0x6184('0x223')+_0x4c73c6));}if(_0x3b6706<=0x0||isNaN(_0x3b6706)){return _0x185eb9(msgResponse(_0x6184('0x228'),_0x6184('0x50'),_0x6184('0x224')+_0x3b6706));}if(_0x26404a<=0x0||isNaN(_0x26404a)){return _0x185eb9(msgResponse(_0x6184('0x228'),'Error','p\x20=\x20'+_0x26404a));}if(_0x4e1837<=0x0||isNaN(_0x4e1837)){return _0x185eb9(msgResponse(_0x6184('0x228'),'Error','interval\x20=\x20'+_0x4e1837));}if(_0x21e652<=0x0||isNaN(_0x21e652)){return _0x185eb9(msgResponse(_0x6184('0x228'),'Error',_0x6184('0x229')+_0x21e652));}_0x4882bd=_0x4882bd||0x0;var _0x52f29a=0x1/_0x3b6706;var _0x45ce04=0x0;var _0xf6e757=0x0;var _0x26ff12=0x0;var _0x44ff98=0x0;for(var _0x242910=0x0;_0x44ff98<_0x21e652;_0x242910+=0x1){_0xf6e757=_0x242910/_0x4e1837;_0x45ce04=(_0x26404a*_0xf6e757+_0x4882bd)/_0x52f29a;_0x26ff12=erlangb(_0x45ce04,_0x4c73c6);_0x44ff98=_0x45ce04/_0x4c73c6*(0x1-erlangb(_0x45ce04,_0x4c73c6));}return _0x313cac({'erlangCalls':_0x242910,'erlangCallToSecond':_0x4e1837/_0x242910,'erlangAbandonmentRate':_0x26ff12,'erlangBusyFactor':_0x44ff98});});};module[_0x6184('0x22a')]=Dialer;
\ No newline at end of file
+var _0x1ba3=['timezones','content','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','dialMethod','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','launchHandleIvr','handleIvr','dialActive','loggedIn','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkDialMethod','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','filter','online','handlePreviewRecallNotifications','map','Agent','user:%s','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','replace','random','toString','match','actionOriginate','object','originate','NONE','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','getCaller','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','updatedAt','%s%s','XMD-','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','phone','variables','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','responsetime','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','dialGlobalMaxRetry','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAbandonedMaxRetry','dialAgentRejectRetryFrequency','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','outboundNoSuchCallsDay','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerRetryFrequency','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','outboundRejectCallsDay','custom:agentreject','agentreject','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalAvailable','erlangAbandonmentRate','predictiveIntervalMultiplicativeFactor','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','dialPredictiveInterval','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalHitRate','abandonmentRate','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','predictiveIntervalPauses','floor','one\x20call\x20every:','[handlePredictive]','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','emptyContact','[actionOriginateIvr]\x20','[getContactCampaign2]','booked','dialLimitQueue','not_inuse','[actionOriginate]\x20','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','exports','util','lodash','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','predictive','predictiveCalls','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./history','./agentComplete','./queueCallerAbandon','./hangup','../model/voiceQueueSummary','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncAgentConnect','bind','queuecallerabandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','Error','stringify','milliseconds','seconds','emit','type','outbound','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','name','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','predictiveIntervalAvgHoldtime','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','diff','clearing\x20variable\x20start\x20progressive','startPredictive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','originated','undefined','[decrementOriginate]\x20object\x20originated\x20is\x20negative','[decrementOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','talking','waiting','pTalking','sendMessageOneNotActive','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','endtime','clearZombieChannels','[uniqueid]','[actions]','enqueue','isNil','Action','channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','[countReScheduled]\x20','checkIsBlackList','resolve','then','[checkIsBlackList]\x20','verifyAdditionalPhones','catch','[verifyAdditionalPhone]\x20','swapAdditionalPhones','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','isSuccess','Success','active','SIP/%s','status','reachable','unmonitored','uniqueid','variable','xcally-motion-dialer','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','MACHINE','outboundAnswerCallsDay','Machine','countmachineretry','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','saveInDb','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','add','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','[syncHangupIvr]','outboundUnknownCallsDay','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','syncQueueCallerAbandon','droptime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','TIMEOUT','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','dropreason','CALLEREXIT','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','starttime','[syncAgentComplete][createHistory][11]','actionid','strategy','paused','stateinterface','locked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','run','[Catch][Preview][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','resetActiveCalls','isTrunkReachable','Trunk','TrunkBackup','TRUNK_IS_NOT_REACHABLE','checkIfTime','ifTime','checkIfTimeIntervals','Failure','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','isArray','push','command','iftime\x20%s,%s','interval'];(function(_0x3e6754,_0x4b3f18){var _0x51b48d=function(_0x40c236){while(--_0x40c236){_0x3e6754['push'](_0x3e6754['shift']());}};_0x51b48d(++_0x4b3f18);}(_0x1ba3,0xe0));var _0x31ba=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0x1ba3[_0x1d50f2];return _0x3769b8;};'use strict';var util=require(_0x31ba('0x0'));var _=require(_0x31ba('0x1'));var uuid=require('uuid');var moment=require(_0x31ba('0x2'));var rr=require('rr');var md5=require(_0x31ba('0x3'));var Redis=require(_0x31ba('0x4'));var ut=require(_0x31ba('0x5'));var config=require(_0x31ba('0x6'));var logger=require(_0x31ba('0x7'))('dialer');var loggerBooked=require(_0x31ba('0x7'))('booked');var loggerPredictive=require(_0x31ba('0x7'))(_0x31ba('0x8'));var loggerPredictiveCalls=require('../../../config/logger')(_0x31ba('0x9'));var loggerSyncQueueSummary=require(_0x31ba('0x7'))(_0x31ba('0xa'));var ami=require('../ami');config[_0x31ba('0xb')]=_[_0x31ba('0xc')](config[_0x31ba('0xb')],{'host':_0x31ba('0xd'),'port':0x18eb});var io=require(_0x31ba('0xe'))(new Redis(config[_0x31ba('0xb')]));var cmHopper=require(_0x31ba('0xf'));var cmHopperHistory=require(_0x31ba('0x10'));var cmHopperAdditionalPhone=require(_0x31ba('0x11'));var cmHopperBlack=require(_0x31ba('0x12'));var voiceQueueRt=require(_0x31ba('0x13'));var RpcSetting=require(_0x31ba('0x14'));var Action=require(_0x31ba('0x15'));var History=require(_0x31ba('0x16'));var Final=require('./final');var AgentComplete=require(_0x31ba('0x17'));var QueueCallerAbandon=require(_0x31ba('0x18'));var Hangup=require(_0x31ba('0x19'));var VoiceQueueSummary=require(_0x31ba('0x1a'));var ipAgi=process[_0x31ba('0x1b')][_0x31ba('0x1c')]||_0x31ba('0x1d');var strategy={'rrmemory':_0x31ba('0x1e'),'roundrobin':_0x31ba('0x1f')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x31ba('0x20')]['enqueue']=function(_0x296ac3){this[_0x31ba('0x21')]=this['tail']?this[_0x31ba('0x21')][_0x31ba('0x22')](_0x296ac3):_0x296ac3();};function Dialer(_0x1a4252,_0x5cf1fa){this[_0x31ba('0x23')]=new Sequence();this['preview']=_0x5cf1fa;this[_0x31ba('0x24')]=_0x1a4252[_0x31ba('0x24')];this[_0x31ba('0x25')]=_0x1a4252[_0x31ba('0x25')];this[_0x31ba('0x26')]=_0x1a4252[_0x31ba('0x26')];this[_0x31ba('0x27')]=_0x1a4252[_0x31ba('0x27')];this[_0x31ba('0x28')]=config[_0x31ba('0x28')]||0x2;this[_0x31ba('0x29')]={};this[_0x31ba('0x2a')]={};this[_0x31ba('0x2b')]={};this[_0x31ba('0x2c')]={};this[_0x31ba('0x2d')]={};this['startPredictive']={};this[_0x31ba('0x2e')]={};this[_0x31ba('0x2f')]={};this[_0x31ba('0x30')]={};this[_0x31ba('0x31')]={};ami['on']('agentconnect',this[_0x31ba('0x32')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x34'),this['syncQueueCallerAbandon'][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x35'),this[_0x31ba('0x36')]['bind'](this));ami['on'](_0x31ba('0x37'),this[_0x31ba('0x38')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x39'),this[_0x31ba('0xa')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x3a'),this[_0x31ba('0x3b')]['bind'](this));ami['on'](_0x31ba('0x3c'),this[_0x31ba('0x3d')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x3e'),this[_0x31ba('0x3f')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x40'),this[_0x31ba('0x41')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x42'),this[_0x31ba('0x43')][_0x31ba('0x33')](this));ami['on'](_0x31ba('0x44'),this[_0x31ba('0x45')][_0x31ba('0x33')](this));this[_0x31ba('0x46')]();this[_0x31ba('0x47')]();RpcSetting['getSettings']()['then'](function(_0x185f17){previewRecallmeReminderInterval=_0x185f17['previewRecallmeReminderInterval'];});}function isNotNull(_0x54005b){return _0x54005b!==null&&!_['isUndefined'](_0x54005b);}function checkIsLoggedIn(_0x5d6b3b,_0x2ceb68){return function(){if(_0x2ceb68<=0x0){_0x5d6b3b['message']=_0x31ba('0x48');throw _0x5d6b3b['name']+_0x31ba('0x49');}};}function isActive(_0x12af3e){return _0x12af3e;}function checkIsActive(_0x36f522,_0x39d980){return function(){if(!isActive(_0x39d980)){_0x36f522[_0x31ba('0x4a')]=_0x31ba('0x4b');throw _0x36f522['name']+_0x31ba('0x4c');}};}function checkInterval(_0x156d32){return function(){if(!isNotNull(_0x156d32[_0x31ba('0x4d')])){_0x156d32[_0x31ba('0x4a')]=_0x31ba('0x4e');throw _0x156d32['name']+_0x31ba('0x4f');}if(!isNotNull(_0x156d32['Interval']['Intervals'])){_0x156d32[_0x31ba('0x4a')]='INTERVAL_IS_NULL';throw _0x156d32['name']+_0x31ba('0x4f');}if(!isNotNull(_[_0x31ba('0x50')](_0x156d32[_0x31ba('0x4d')][_0x31ba('0x51')]))){_0x156d32[_0x31ba('0x4a')]='INTERVAL_IS_NULL';throw _0x156d32['name']+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x104817,_0x3befbc,_0x4311fa){return{'action':_0x104817,'response':_0x3befbc,'message':_0x4311fa,'stack':_0x4311fa};}function myreject(_0x3a0ba){return function(_0x513c4f){return _0x3a0ba(msgResponse(_0x31ba('0x52'),_0x31ba('0x53'),JSON[_0x31ba('0x54')](_0x513c4f)));};}function getSeconds(_0x18cf87,_0x439e63){var _0x204b34=moment(_0x18cf87)[_0x31ba('0x55')](0x0);var _0x4e291f=moment(_0x439e63)[_0x31ba('0x55')](0x0);return _0x204b34['diff'](_0x4e291f,_0x31ba('0x56'));}function emit(_0x3fae3a,_0x24fba4,_0xfa4cc4){io['to'](_0x3fae3a)[_0x31ba('0x57')](_0x24fba4,_0xfa4cc4);}function emitVoiceQueueSummary(_0x4aa3f1){if(_0x4aa3f1[_0x31ba('0x58')]===_0x31ba('0x59')){var _0x4ce75d=new VoiceQueueSummary(_0x4aa3f1);var _0x113ef0=md5(JSON[_0x31ba('0x54')](_0x4ce75d));if(_0x4aa3f1[_0x31ba('0x3')]!==_0x113ef0){_0x4aa3f1[_0x31ba('0x3')]=_0x113ef0;emit(util[_0x31ba('0x5a')](_0x31ba('0x5b'),_0x4ce75d['name']),_0x31ba('0x5c'),_0x4ce75d);}}}function emitCampaignSummary(_0x1454dc){if(_0x1454dc['type']===_0x31ba('0x5d')){emit(util[_0x31ba('0x5a')](_0x31ba('0x5e'),_0x1454dc[_0x31ba('0x5f')]),_0x31ba('0x60'),_0x1454dc);}}function checkGetDataPredictive(_0x1f56fb){if(isNotNull(_0x1f56fb)&&!_[_0x31ba('0x50')](_0x1f56fb)){loggerPredictive[_0x31ba('0x61')](_0x31ba('0x62'));loggerPredictive[_0x31ba('0x61')](_0x31ba('0x63'),_0x1f56fb[_0x31ba('0x64')]);loggerPredictive['info'](_0x31ba('0x65'),_0x1f56fb[_0x31ba('0x66')]);loggerPredictive['info'](_0x31ba('0x67'),_0x1f56fb[_0x31ba('0x68')]);loggerPredictive['info'](_0x31ba('0x69'),_0x1f56fb[_0x31ba('0x6a')]);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x6b'),_0x1f56fb['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x6c'),_0x1f56fb[_0x31ba('0x6d')]);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x6e'));if(_0x1f56fb[_0x31ba('0x64')]>0x0){if(!_[_0x31ba('0x6f')](_0x1f56fb[_0x31ba('0x6d')])&&_0x1f56fb[_0x31ba('0x6d')]>0x0){return!![];}loggerPredictive['info'](_0x31ba('0x70'));if(!_['isUndefined'](_0x1f56fb[_0x31ba('0x71')])&&_0x1f56fb[_0x31ba('0x71')]>0x0){return!![];}loggerPredictive[_0x31ba('0x61')](_0x31ba('0x72'));}else{loggerPredictive[_0x31ba('0x61')](_0x31ba('0x73'));}}else{loggerPredictive['info'](_0x31ba('0x74'));}return![];}function mergeDataErlangB(_0x162623){return function(_0x58603c){loggerPredictive[_0x31ba('0x61')](_0x31ba('0x75'));loggerPredictive['info'](_0x31ba('0x76'),_0x58603c[_0x31ba('0x77')]);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x78'),_0x58603c['erlangCallToSecond']);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x79'),_0x58603c['erlangAbandonmentRate']);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x7a'),_0x58603c['erlangBusyFactor']);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x79'),_0x58603c['erlangAbandonmentRate']);loggerPredictive[_0x31ba('0x61')]('---------------------------');_[_0x31ba('0x7b')](_0x162623,_0x58603c);};}function getDiff(_0x59056d){var _0xef3e8=moment()[_0x31ba('0x55')](0x0);var _0x25292c=moment(_0x59056d)[_0x31ba('0x55')](0x0);return _0xef3e8[_0x31ba('0x7c')](_0x25292c,'seconds');}function ifInterval(_0x56fe66,_0x136baf){if(_[_0x31ba('0x6f')](_0x136baf)){return![];}return getDiff(_0x136baf)<_0x56fe66*0x3c;}function freeVariablesPredictive(_0x4b8095){if(isNotNull(_0x4b8095)){if(!_[_0x31ba('0x6f')](_0x4b8095[_0x31ba('0x2e')])){_0x4b8095['startProgressive']=undefined;loggerPredictive[_0x31ba('0x61')](_0x4b8095['name'],_0x31ba('0x7d'));}if(!_[_0x31ba('0x6f')](_0x4b8095['startPredictive'])){_0x4b8095[_0x31ba('0x7e')]=undefined;loggerPredictive[_0x31ba('0x61')](_0x4b8095[_0x31ba('0x5f')],_0x31ba('0x7f'));}if(!_[_0x31ba('0x6f')](_0x4b8095[_0x31ba('0x80')])){clearInterval(_0x4b8095[_0x31ba('0x80')]);_0x4b8095['handlePredictive']=undefined;loggerPredictive['info'](_0x4b8095['name'],_0x31ba('0x81'));}}}function erlangb(_0x58b555,_0x2966ad){if(_0x2966ad===0x0){return 0x0;}var _0x5dd90f=0x1;for(var _0x538425=0x1;_0x538425<=_0x2966ad;_0x538425+=0x1){_0x5dd90f=0x1+_0x5dd90f*_0x538425/_0x58b555;}return 0x1/_0x5dd90f;}function isVoiceQueueOutbound(_0x1ba1ea){return _0x1ba1ea==='outbound';}function isNotPreview(_0x4f3e67){return _0x4f3e67!==_0x31ba('0x82');}function isCampaignIvr(_0x3b4adc){return _0x3b4adc===_0x31ba('0x5d');}function getCallerId(_0x2cfb50,_0x174001,_0x595868){if(!_[_0x31ba('0x6f')](_0x595868)&&typeof _0x595868==='string'&&!_[_0x31ba('0x50')](_0x595868)){if(!_[_0x31ba('0x6f')](_0x174001)&&typeof _0x174001===_0x31ba('0x83')&&!_[_0x31ba('0x50')](_0x174001)){return util[_0x31ba('0x5a')](_0x31ba('0x84'),_0x174001,_0x595868);}return util[_0x31ba('0x5a')](_0x31ba('0x84'),_0x595868,_0x595868);}if(!_['isUndefined'](_0x2cfb50)&&typeof _0x2cfb50===_0x31ba('0x83')&&!_[_0x31ba('0x50')](_0x2cfb50)){return _0x2cfb50;}return _0x31ba('0x85');}function loggerCatchQueueSummary(_0x1e761f,_0x109192){return function(_0x1e8dde){freeVariablesPredictive(_0x109192);emitVoiceQueueSummary(_0x109192);emitCampaignSummary(_0x109192);loggerSyncQueueSummary[_0x31ba('0x86')](_0x1e761f,util[_0x31ba('0x87')](_0x1e8dde,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1c92ea,_0x5386bc){return function(_0x38a560){loggerPredictive[_0x31ba('0x88')](_0x5386bc[_0x31ba('0x5f')],_0x1c92ea);loggerPredictive[_0x31ba('0x88')](_0x38a560[_0x31ba('0x89')]);freeVariablesPredictive(_0x5386bc);};}function loggerCatch(_0x4cb997){return function(_0x15fe8){logger[_0x31ba('0x88')](_0x4cb997,util['inspect'](_0x15fe8,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x37e1a9){return _0x37e1a9&&!_[_0x31ba('0x6f')](_0x37e1a9)&&_0x37e1a9[_0x31ba('0x8a')]>0x0;}function decrementOriginate(_0x2208c5){if(!_[_0x31ba('0x6f')](_0x2208c5)&&_0x2208c5!==null){if(typeof _0x2208c5[_0x31ba('0x8b')]!==_0x31ba('0x8c')){if(_0x2208c5['originated']>0x0){_0x2208c5['originated']-=0x1;}else{logger[_0x31ba('0x88')](_0x31ba('0x8d'));}}}else{logger[_0x31ba('0x88')](_0x31ba('0x8e'));}}function checkContactLowerLimitOriginate(_0x29e459,_0x5792c9,_0x526031){if(_0x5792c9>_0x526031){for(var _0x45a4ec=0x0;_0x45a4ec<_0x5792c9-_0x526031;_0x45a4ec+=0x1){decrementOriginate(_0x29e459);}}}function loggerGetContactDialer(_0x3ac8e0,_0xad6582,_0x265197){return function(_0xe80f06){checkContactLowerLimitOriginate(_0xad6582,_0x265197,0x0);logger[_0x31ba('0x88')](_0x3ac8e0,util[_0x31ba('0x87')](_0xe80f06,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3313ca){return function(_0x3ae24e){if(isNotNull(_0x3ae24e)&&isNotNull(_0x3ae24e[0x0])){if(_0x3ae24e[0x0][_0x31ba('0x8f')]>0x0){_0x3313ca['message']=_0x31ba('0x90');logger[_0x31ba('0x61')](_0x31ba('0x91')+_0x3313ca[_0x31ba('0x5f')],_0x3ae24e[0x0][_0x31ba('0x8f')],_0x31ba('0x92'));}else{_0x3313ca['message']=_0x31ba('0x93');logger[_0x31ba('0x61')]('[getContactDialer2][Empty]'+_0x3313ca[_0x31ba('0x5f')]);}}};}function notSendMessagesQueue(_0x19392e){if(_0x19392e['sendMessageOneNotActive']){freeVariablesPredictive(_0x19392e);if(_0x19392e[_0x31ba('0x8b')]===0x0&&_0x19392e[_0x31ba('0x94')]===0x0&&_0x19392e[_0x31ba('0x95')]===0x0&&(_0x19392e[_0x31ba('0x96')]||0x0)===0x0){_0x19392e[_0x31ba('0x97')]=![];_0x19392e[_0x31ba('0x98')]=0x0;_0x19392e[_0x31ba('0x4a')]=_0x31ba('0x4b');loggerSyncQueueSummary[_0x31ba('0x86')](_0x31ba('0x99'),_0x19392e[_0x31ba('0x5f')],_0x31ba('0x9a'));}else{_0x19392e[_0x31ba('0x4a')]=_0x31ba('0x9b');loggerSyncQueueSummary['debug'](_0x31ba('0x99'),_0x19392e[_0x31ba('0x5f')],'is\x20disactive');}emitVoiceQueueSummary(_0x19392e);}}function notSendMessagesCampaign(_0x176d4d){if(_0x176d4d[_0x31ba('0x97')]){if(_0x176d4d[_0x31ba('0x8b')]===0x0){_0x176d4d['sendMessageOneNotActive']=![];_0x176d4d['message']=_0x31ba('0x4b');loggerSyncQueueSummary[_0x31ba('0x86')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x176d4d[_0x31ba('0x5f')],_0x31ba('0x9a'));}else{_0x176d4d['message']=_0x31ba('0x9b');loggerSyncQueueSummary['debug'](_0x31ba('0x9c'),_0x176d4d[_0x31ba('0x5f')],_0x31ba('0x9d'));}emitCampaignSummary(_0x176d4d);}}function createObjHistory(_0x43f606,_0x41b99e,_0x238e88,_0x4b2633,_0x4fcdd6){_0x43f606['message']=_0x238e88;var _0x321cb1=new Action(_0x43f606,_0x41b99e);var _0x2340fe=new History(_0x321cb1);_0x2340fe[_0x31ba('0x9e')]=_0x4b2633;_0x2340fe[_0x31ba('0x9f')]=_0x4fcdd6;_0x2340fe[_0x31ba('0xa0')]=_0x321cb1['starttime'];return _0x2340fe;}Dialer[_0x31ba('0x20')][_0x31ba('0x47')]=function(){var _0x36e7c4=this;setInterval(function(){_0x36e7c4[_0x31ba('0xa1')](_0x36e7c4[_0x31ba('0x2c')],_0x31ba('0xa2'));_0x36e7c4['clearZombieChannels'](_0x36e7c4[_0x31ba('0x2a')],_0x31ba('0xa3'));},0x32c8);};Dialer[_0x31ba('0x20')][_0x31ba('0xa1')]=function(_0x40245c,_0x1a8614){var _0x453088=this;for(var _0x46d1c3 in _0x40245c){if(typeof _0x40245c[_0x46d1c3]!=='undefined'){this[_0x31ba('0x23')][_0x31ba('0xa4')](function(){if(!_[_0x31ba('0xa5')](_0x40245c[_0x46d1c3])){return ami[_0x31ba('0xa6')]({'action':'status','channel':_0x40245c[_0x46d1c3][_0x31ba('0xa7')]})['catch'](function(_0x42afe0){if(_0x42afe0['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x40245c[_0x46d1c3]&&_0x40245c[_0x46d1c3]['type']!==_0x31ba('0x5d')){_0x453088[_0x31ba('0xa8')](_0x453088[_0x31ba('0x24')][_0x40245c[_0x46d1c3][_0x31ba('0xa9')]]);logger[_0x31ba('0x88')]('[Dialer][checkChannel]',_0x1a8614,_0x46d1c3,_0x40245c[_0x46d1c3][_0x31ba('0xa9')]);delete _0x40245c[_0x46d1c3];}if(_0x40245c[_0x46d1c3]&&_0x40245c[_0x46d1c3][_0x31ba('0x58')]==='ivr'){_0x453088[_0x31ba('0xa8')](_0x453088[_0x31ba('0x25')][_0x40245c[_0x46d1c3]['queue']]);logger[_0x31ba('0x88')](_0x31ba('0xaa'),_0x1a8614,_0x46d1c3,_0x40245c[_0x46d1c3]['queue']);delete _0x40245c[_0x46d1c3];}},0x2328);}});}});}}};Dialer['prototype'][_0x31ba('0xab')]=function(_0x117103){return Promise['resolve']()['then'](cmHopper[_0x31ba('0xab')](_0x117103))['catch'](loggerCatch(_0x31ba('0xac')));};Dialer[_0x31ba('0x20')][_0x31ba('0xad')]=function(_0x3df882){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopperBlack[_0x31ba('0xad')](_0x3df882))['catch'](loggerCatch(_0x31ba('0xb0')));};Dialer[_0x31ba('0x20')][_0x31ba('0xb1')]=function(_0x5bb0c6,_0x3a1107,_0x4d3bcf){return Promise[_0x31ba('0xae')]()['then'](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x5bb0c6,_0x3a1107,_0x4d3bcf))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xb3')));};Dialer['prototype'][_0x31ba('0xb4')]=function(_0x4931f8,_0x50f794,_0x13e89a){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopperAdditionalPhone[_0x31ba('0xb4')](_0x4931f8,_0x50f794,_0x13e89a))[_0x31ba('0xb2')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0x31ba('0x20')][_0x31ba('0xb5')]=function(_0x14f282){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopperBlack[_0x31ba('0xb5')](_0x14f282))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xb6')));};Dialer['prototype'][_0x31ba('0xb7')]=function(_0x18f14a){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopperHistory[_0x31ba('0xb8')](_0x18f14a))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xb9')));};Dialer[_0x31ba('0x20')][_0x31ba('0xba')]=function(_0x14e1ca){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopper[_0x31ba('0xba')](_0x14e1ca))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xbb')));};Dialer[_0x31ba('0x20')][_0x31ba('0xbc')]=function(_0x3467aa,_0xf57439,_0x3b215c){return Promise['resolve']()[_0x31ba('0xaf')](cmHopper['unlockContact'](_0x3467aa,_0xf57439,_0x3b215c))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xbd')));};Dialer[_0x31ba('0x20')][_0x31ba('0xbe')]=function(_0x1baa25,_0x119ec5,_0x5eba6f,_0x3e595f,_0x29a291){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopper[_0x31ba('0xbe')](_0x1baa25,_0x119ec5,_0x5eba6f,_0x3e595f))[_0x31ba('0xb2')](function(_0xf23f1c){_0x29a291[_0x31ba('0xbf')]-=_0x5eba6f;_0x29a291[_0x31ba('0xbf')]=_0x29a291[_0x31ba('0xbf')]>0x0?_0x29a291[_0x31ba('0xbf')]:0x0;loggerCatch(_0x31ba('0xc0'))(_0xf23f1c);});};Dialer[_0x31ba('0x20')]['getContactDialerIvr']=function(_0x4bc0a5,_0x2d64f9,_0x27a645,_0x40722b){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopper[_0x31ba('0xc1')](_0x4bc0a5,_0x2d64f9,_0x27a645))[_0x31ba('0xb2')](function(_0x1dc895){_0x40722b['temp']-=_0x2d64f9;_0x40722b[_0x31ba('0xbf')]=_0x40722b[_0x31ba('0xbf')]>0x0?_0x40722b[_0x31ba('0xbf')]:0x0;loggerCatch(_0x31ba('0xc2'))(_0x1dc895);});};Dialer[_0x31ba('0x20')][_0x31ba('0xc3')]=function(_0x16c781){return Promise['resolve']()[_0x31ba('0xaf')](voiceQueueRt[_0x31ba('0xc3')](_0x16c781))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xc4')));};Dialer['prototype']['moveContactManagedDialer']=function(_0x1d9138){return Promise[_0x31ba('0xae')]()['then'](cmHopper[_0x31ba('0xc5')](_0x1d9138))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xc6')));};Dialer['prototype']['createHistory']=function(_0x571713){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopperHistory[_0x31ba('0xc7')](_0x571713))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xc8')));};Dialer[_0x31ba('0x20')]['updateOriginated']=function(_0x25583f){if(!_[_0x31ba('0x6f')](_0x25583f)&&_0x25583f!==null){if(typeof _0x25583f['originated']!==_0x31ba('0x8c')){if(_0x25583f['originated']>0x0){_0x25583f[_0x31ba('0x8b')]-=0x1;}else{logger[_0x31ba('0x88')](_0x31ba('0xc9'));}}}else{logger['error'](_0x31ba('0xca'));}};Dialer[_0x31ba('0x20')][_0x31ba('0xcb')]=function(_0x20874b,_0xe10898){var _0x31d0b5=this;return function(_0x324f77){_0x31d0b5[_0x31ba('0xa8')](_0xe10898);logger['error'](_0x20874b,util['inspect'](_0x324f77,{'showHidden':![],'depth':null}));};};Dialer[_0x31ba('0x20')]['emptyContact']=function(_0x5ab72b,_0x15184d,_0x28f5c0){var _0x333ccd={'state':0x19,'statedesc':'notFound'};this[_0x31ba('0xa8')](_0x15184d);this['saveInDb'](_[_0x31ba('0x7b')](_0x333ccd,_[_0x31ba('0xcc')](_0x28f5c0,[_0x31ba('0xcd'),_0x31ba('0xce'),_0x31ba('0xcf'),_0x31ba('0xd0'),_0x31ba('0xd1')])),'[emptyContact][createHistory]','[emptyContact]');logger['error'](_0x5ab72b);};Dialer[_0x31ba('0x20')][_0x31ba('0xd2')]=function(_0x31f660){return _0x31f660===_0x31ba('0xd3');};Dialer[_0x31ba('0x20')]['isTrunkReachable']=function(_0x3ced0f){return!_['isUndefined'](_0x3ced0f)&&_0x3ced0f&&!_[_0x31ba('0x6f')](_0x3ced0f['name'])&&!_['isUndefined'](_0x3ced0f[_0x31ba('0xd4')])&&_0x3ced0f['active']&&(this['trunks'][util['format'](_0x31ba('0xd5'),_0x3ced0f[_0x31ba('0x5f')])][_0x31ba('0xd6')]===_0x31ba('0xd7')||this[_0x31ba('0x27')][util[_0x31ba('0x5a')]('SIP/%s',_0x3ced0f[_0x31ba('0x5f')])]['status']===_0x31ba('0xd8'));};Dialer['prototype']['saveInDb']=function(_0x52ad92,_0x1d753d,_0x15bc19){this[_0x31ba('0xc7')](_0x52ad92)['catch'](loggerCatch(_0x1d753d));this['moveContactManagedDialer'](_0x52ad92)[_0x31ba('0xb2')](loggerCatch(_0x15bc19));};Dialer[_0x31ba('0x20')][_0x31ba('0x41')]=function(_0x2ae35d){var _0x1b1088=this;var _0x4c2165=this[_0x31ba('0x2c')][_0x2ae35d[_0x31ba('0xd9')]];var _0x5e2dc3;if(!_[_0x31ba('0xa5')](_0x2ae35d)&&!_[_0x31ba('0xa5')](_0x2ae35d[_0x31ba('0xda')])&&!_[_0x31ba('0xa5')](_0x2ae35d['variable']['amdstatus'])&&_0x2ae35d['exten']===_0x31ba('0xdb')&&_0x4c2165){if(_0x4c2165[_0x31ba('0x58')]!==_0x31ba('0x5d')&&this['voiceQueues'][_0x4c2165['queue']]['dialAMDActive']&&_0x2ae35d[_0x31ba('0xdc')]===_0x31ba('0xdd')){delete this[_0x31ba('0x2c')][_0x2ae35d[_0x31ba('0xd9')]];this['updateOriginated'](this[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]]);this['voiceQueues'][_0x4c2165[_0x31ba('0xa9')]]['outboundAnswerCallsDay']+=0x1;this[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xde')]+=0x1;_0x5e2dc3=new Hangup(_0x4c2165,_0x2ae35d);_0x5e2dc3[_0x31ba('0x9e')]=0x12;_0x5e2dc3['statedesc']=_0x31ba('0xdf');_0x5e2dc3[_0x31ba('0xe0')]=_0x31ba('0xe1');ami[_0x31ba('0x57')](_0x31ba('0xe2'),ut['buildObj'](_0x5e2dc3,_0x31ba('0xe3')));this['saveInDb'](_0x5e2dc3,_0x31ba('0xe4'),_0x31ba('0xe5'));}if(_0x4c2165[_0x31ba('0x58')]!==_0x31ba('0x5d')&&this[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xe6')]&&_0x2ae35d['value']===_0x31ba('0xe7')){return new Promise(function(_0x4db50f,_0x30d4c4){delete _0x1b1088[_0x31ba('0x2c')][_0x2ae35d['uniqueid']];_0x1b1088['updateOriginated'](_0x1b1088[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]]);_0x1b1088[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xe8')]+=0x1;_0x1b1088[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xde')]+=0x1;var _0x431654=_0x1b1088[_0x31ba('0x24')][_0x4c2165[_0x31ba('0xa9')]];var _0x21a1fe=new Hangup(_0x4c2165,_0x2ae35d);_0x21a1fe[_0x31ba('0x9e')]=0x13;_0x21a1fe[_0x31ba('0x9f')]=_0x31ba('0xe9');_0x21a1fe[_0x31ba('0xe0')]='AMD';_0x21a1fe[_0x31ba('0xea')]+=0x1;_0x21a1fe[_0x31ba('0xeb')]+=0x1;_0x21a1fe[_0x31ba('0xe3')]=!![];ami[_0x31ba('0x57')](_0x31ba('0xe2'),ut[_0x31ba('0xec')](_0x21a1fe,'amd'));_0x1b1088[_0x31ba('0xc7')](_0x21a1fe)['catch'](loggerCatch(_0x31ba('0xed')));if(_0x21a1fe[_0x31ba('0xee')]+_0x21a1fe[_0x31ba('0xef')]+_0x21a1fe[_0x31ba('0xf0')]+_0x21a1fe[_0x31ba('0xf1')]+_0x21a1fe[_0x31ba('0xf2')]+_0x21a1fe[_0x31ba('0xf3')]+_0x21a1fe[_0x31ba('0xea')]+_0x21a1fe[_0x31ba('0xf4')]>=_0x431654['dialGlobalMaxRetry']){_0x1b1088[_0x31ba('0xf5')](_0x21a1fe,_0x4db50f,_0x30d4c4,_0x31ba('0xf6'));}else{if(_0x21a1fe[_0x31ba('0xea')]>=_0x431654[_0x31ba('0xf7')]){_0x1b1088[_0x31ba('0xf8')](_0x21a1fe,_0x4db50f,_0x30d4c4,_0x31ba('0xf9'));}else{_0x1b1088[_0x31ba('0xba')]({'active':![],'countmachineretry':_0x21a1fe[_0x31ba('0xea')],'scheduledat':moment()['add'](_0x431654['dialMachineRetryFrequency'],_0x31ba('0xfa'))['format'](_0x31ba('0xfb')),'ContactId':_0x21a1fe['ContactId'],'ListId':_0x21a1fe[_0x31ba('0xce')],'VoiceQueueId':_0x21a1fe['VoiceQueueId']||undefined,'CampaignId':_0x21a1fe[_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0xfc')));_0x4db50f({'reschedule':0x1});}}});}if(_0x4c2165[_0x31ba('0x58')]===_0x31ba('0x5d')&&this['campaigns'][_0x4c2165['queue']][_0x31ba('0xe6')]&&_0x2ae35d['value']===_0x31ba('0xdd')){delete this[_0x31ba('0x2c')][_0x2ae35d[_0x31ba('0xd9')]];this['updateOriginated'](this[_0x31ba('0x25')][_0x4c2165[_0x31ba('0xa9')]]);_0x5e2dc3=new Hangup(_0x4c2165,_0x2ae35d);_0x5e2dc3['state']=0x12;_0x5e2dc3[_0x31ba('0x9f')]='HangupInAMD';_0x5e2dc3['membername']='AMD';ami['emit'](_0x31ba('0xe2'),ut['buildObj'](_0x5e2dc3,_0x31ba('0xe3')));this[_0x31ba('0xfd')](_0x5e2dc3,_0x31ba('0xfe'),_0x31ba('0xff'));}if(_0x4c2165[_0x31ba('0x58')]==='ivr'&&this['campaigns'][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xe6')]&&_0x2ae35d[_0x31ba('0xdc')]==='MACHINE'){return new Promise(function(_0xc74add,_0x5bcab6){delete _0x1b1088['uniqueId'][_0x2ae35d['uniqueid']];_0x1b1088[_0x31ba('0xa8')](_0x1b1088[_0x31ba('0x25')][_0x4c2165[_0x31ba('0xa9')]]);_0x1b1088[_0x31ba('0x25')][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xe8')]+=0x1;_0x1b1088['campaigns'][_0x4c2165[_0x31ba('0xa9')]][_0x31ba('0xde')]+=0x1;var _0x93339a=_0x1b1088['campaigns'][_0x4c2165['queue']];var _0x2cab80=new Hangup(_0x4c2165,_0x2ae35d);_0x2cab80[_0x31ba('0x9e')]=0x13;_0x2cab80['statedesc']=_0x31ba('0xe9');_0x2cab80[_0x31ba('0xe0')]=_0x31ba('0xe1');_0x2cab80[_0x31ba('0xea')]+=0x1;_0x2cab80['countglobal']+=0x1;_0x2cab80[_0x31ba('0xe3')]=!![];ami['emit'](_0x31ba('0xe2'),ut['buildObj'](_0x2cab80,_0x31ba('0xe3')));_0x1b1088[_0x31ba('0xc7')](_0x2cab80)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xed')));if(_0x2cab80[_0x31ba('0xee')]+_0x2cab80[_0x31ba('0xef')]+_0x2cab80[_0x31ba('0xf0')]+_0x2cab80[_0x31ba('0xf1')]+_0x2cab80['countdropretry']+_0x2cab80[_0x31ba('0xf3')]+_0x2cab80[_0x31ba('0xea')]+_0x2cab80[_0x31ba('0xf4')]>=_0x93339a['dialGlobalMaxRetry']){_0x1b1088[_0x31ba('0xf5')](_0x2cab80,_0xc74add,_0x5bcab6,_0x31ba('0xf6'));}else{if(_0x2cab80[_0x31ba('0xea')]>=_0x93339a['dialMachineMaxRetry']){_0x1b1088[_0x31ba('0xf8')](_0x2cab80,_0xc74add,_0x5bcab6,'reason\x2019\x20machine....');}else{_0x1b1088[_0x31ba('0xba')]({'active':![],'countmachineretry':_0x2cab80[_0x31ba('0xea')],'scheduledat':moment()[_0x31ba('0x100')](_0x93339a[_0x31ba('0x101')],_0x31ba('0xfa'))[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x2cab80[_0x31ba('0xcd')],'ListId':_0x2cab80[_0x31ba('0xce')],'VoiceQueueId':_0x2cab80[_0x31ba('0xd0')]||undefined,'CampaignId':_0x2cab80[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xfc')));_0xc74add({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x31ba('0x3d')]=function(_0x2d86e2){var _0x437190=this[_0x31ba('0x2c')][_0x2d86e2[_0x31ba('0xd9')]];var _0x135509;if(_0x437190&&_0x437190[_0x31ba('0x58')]===_0x31ba('0x5d')){delete this['uniqueId'][_0x2d86e2[_0x31ba('0xd9')]];this[_0x31ba('0xa8')](this[_0x31ba('0x25')][_0x437190[_0x31ba('0xa9')]]);this[_0x31ba('0x25')][_0x437190[_0x31ba('0xa9')]][_0x31ba('0x102')]+=0x1;_0x135509=new Hangup(_0x437190,_0x2d86e2);this[_0x31ba('0xc7')](_0x135509)['catch'](loggerCatch(_0x31ba('0x103')));this[_0x31ba('0xc5')](_0x135509)[_0x31ba('0xb2')](loggerCatch('[syncHangupIvr]'));}if(_0x437190&&_0x437190[_0x31ba('0x58')]!==_0x31ba('0x5d')&&isNotNull(this[_0x31ba('0x24')][_0x437190[_0x31ba('0xa9')]][_0x31ba('0x104')])){delete this['uniqueId'][_0x2d86e2[_0x31ba('0xd9')]];this['updateOriginated'](this[_0x31ba('0x24')][_0x437190['queue']]);this[_0x31ba('0x24')][_0x437190[_0x31ba('0xa9')]]['outboundAnswerCallsDay']+=0x1;this['voiceQueues'][_0x437190[_0x31ba('0xa9')]][_0x31ba('0xde')]+=0x1;_0x135509=new Hangup(_0x437190,_0x2d86e2);_0x135509[_0x31ba('0x9e')]=0x10;_0x135509['statedesc']='AnswerAGI';_0x135509['membername']='AGI';this['createHistory'](_0x135509)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x103')));this[_0x31ba('0xc5')](_0x135509)['catch'](loggerCatch(_0x31ba('0x105')));}if(_0x437190&&_0x437190[_0x31ba('0x58')]!==_0x31ba('0x5d')&&!isNotNull(this[_0x31ba('0x24')][_0x437190[_0x31ba('0xa9')]][_0x31ba('0x104')])){delete this[_0x31ba('0x2c')][_0x2d86e2[_0x31ba('0xd9')]];this[_0x31ba('0xa8')](this['voiceQueues'][_0x437190[_0x31ba('0xa9')]]);this['voiceQueues'][_0x437190[_0x31ba('0xa9')]][_0x31ba('0x106')]+=0x1;_0x135509=new Hangup(_0x437190,_0x2d86e2);_0x135509[_0x31ba('0x9e')]=0xc;_0x135509[_0x31ba('0x9f')]=_0x2d86e2['cause-txt'];_0x135509[_0x31ba('0xe0')]=_0x31ba('0x107');this['createHistory'](_0x135509)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x103')));this[_0x31ba('0xc5')](_0x135509)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x105')));}};Dialer['prototype'][_0x31ba('0x38')]=function(_0x35d7b5){var _0x21daf3=this[_0x31ba('0x2c')][_0x35d7b5[_0x31ba('0xd9')]];if(this[_0x31ba('0x24')][_0x35d7b5[_0x31ba('0xa9')]]){if(_0x21daf3&&_0x21daf3[_0x31ba('0x58')]!==_0x31ba('0x5d')){delete this[_0x31ba('0x2c')][_0x35d7b5['uniqueid']];this[_0x31ba('0x24')][_0x35d7b5[_0x31ba('0xa9')]]['outboundAnswerCallsDay']+=0x1;var _0x8ce7b9=new AgentComplete(_0x21daf3,_0x35d7b5);if(_0x35d7b5[_0x31ba('0x108')]===_0x31ba('0x109')){_0x8ce7b9[_0x31ba('0x10a')]=this[_0x31ba('0x24')][_0x35d7b5[_0x31ba('0xa9')]][_0x31ba('0x10b')]&&this[_0x31ba('0x24')][_0x35d7b5['queue']][_0x31ba('0x10c')]?moment()[_0x31ba('0x5a')](_0x31ba('0xfb')):undefined;}this[_0x31ba('0xc7')](_0x8ce7b9)[_0x31ba('0xb2')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x31ba('0xc5')](_0x8ce7b9)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x31ba('0x20')][_0x31ba('0x32')]=function(_0x2c9c2c){if(this[_0x31ba('0x24')][_0x2c9c2c['queue']]){if(this[_0x31ba('0x2c')][_0x2c9c2c['uniqueid']]&&this[_0x31ba('0x2c')][_0x2c9c2c[_0x31ba('0xd9')]][_0x31ba('0x58')]!==_0x31ba('0x5d')){this[_0x31ba('0xa8')](this['voiceQueues'][_0x2c9c2c[_0x31ba('0xa9')]]);this[_0x31ba('0x2c')][_0x2c9c2c[_0x31ba('0xd9')]][_0x31ba('0x10d')]=moment()[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x31ba('0x20')][_0x31ba('0x10e')]=function(_0x3637e0,_0x393581){this['createHistory'](_0x3637e0)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x10f')));if(_0x393581==0x0){this[_0x31ba('0xc5')](_0x3637e0)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x110')));}};Dialer[_0x31ba('0x20')][_0x31ba('0x111')]=function(_0x5abe4d){var _0x2cb12e=this[_0x31ba('0x2c')][_0x5abe4d[_0x31ba('0xd9')]];var _0x52464f=this;var _0x18f1a0=![];var _0x43570b;var _0x2ed08a;if(this['voiceQueues'][_0x5abe4d['queue']]){if(_0x2cb12e&&_0x2cb12e[_0x31ba('0x58')]!==_0x31ba('0x5d')){delete this[_0x31ba('0x2c')][_0x5abe4d[_0x31ba('0xd9')]];this['updateOriginated'](this[_0x31ba('0x24')][_0x5abe4d['queue']]);_0x2cb12e['droptime']=moment()[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5b500d=new QueueCallerAbandon(_0x2cb12e,_0x5abe4d);if(getSeconds(_0x2cb12e[_0x31ba('0x112')],_0x2cb12e['responsetime'])>=_0x2cb12e[_0x31ba('0x113')]){this[_0x31ba('0x24')][_0x5abe4d['queue']][_0x31ba('0x68')]+=0x1;this['voiceQueues'][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x114')]+=0x1;this['voiceQueues'][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x115')]+=0x1;_0x5b500d[_0x31ba('0x9e')]=0xa;_0x5b500d[_0x31ba('0x9f')]=_0x31ba('0x116');_0x5b500d['dropreason']=_0x31ba('0x117');_0x5b500d['agiafterat']=this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]]['dialQueueProject2']?moment()[_0x31ba('0x5a')](_0x31ba('0xfb')):undefined;_0x5b500d[_0x31ba('0xf2')]+=0x1;_0x5b500d[_0x31ba('0xeb')]+=0x1;_0x43570b=this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x118')];_0x2ed08a=this[_0x31ba('0x24')][_0x5abe4d['queue']][_0x31ba('0x119')];_0x52464f[_0x31ba('0xb1')](_0x5b500d,_0x5b500d[_0x31ba('0x9e')],_0x2cb12e[_0x31ba('0x11a')])[_0x31ba('0xaf')](function(_0xae426b){_0x18f1a0=_0xae426b[_0x31ba('0x11b')]==0x1;if(_0x5b500d[_0x31ba('0xf2')]>=_0x52464f[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]]['dialDropMaxRetry']){_0x52464f['queueCallerAbandonCreateState'](_0x5b500d,_0xae426b[_0x31ba('0x11b')]);}else{_0x52464f[_0x31ba('0xba')]({'active':![],'countdropretry':_0x5b500d[_0x31ba('0xf2')],'scheduledat':moment()[_0x31ba('0x100')](_0x52464f[_0x31ba('0x24')][_0x5abe4d['queue']][_0x31ba('0x118')],_0x31ba('0xfa'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2cb12e[_0x31ba('0xcd')],'ListId':_0x2cb12e[_0x31ba('0xce')],'VoiceQueueId':_0x2cb12e[_0x31ba('0xd0')]||undefined,'CampaignId':_0x2cb12e['CampaignId']||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x11c')));var _0x20b2c6=new History(_0x5b500d);_0x20b2c6[_0x31ba('0x9e')]=0xa;_0x20b2c6[_0x31ba('0x9f')]='Drop';_0x20b2c6['starttime']=moment()['format'](_0x31ba('0xfb'));_0x20b2c6['endtime']=_0x20b2c6['starttime'];_0x20b2c6[_0x31ba('0x11d')]=_0x5b500d[_0x31ba('0x11d')];_0x20b2c6[_0x31ba('0x11e')]=_0x5b500d[_0x31ba('0x11e')];_0x52464f[_0x31ba('0xc7')](_0x20b2c6)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x11f')));}})[_0x31ba('0xaf')](function(){if(_0x18f1a0)_0x52464f[_0x31ba('0xb4')](_0x5b500d,_0x43570b,_0x2ed08a)['then'](function(){return 0x1;});});}else{this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x6a')]+=0x1;this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x120')]+=0x1;_0x5b500d[_0x31ba('0x9e')]=0xb;_0x5b500d[_0x31ba('0x9f')]='Abandoned';_0x5b500d[_0x31ba('0x121')]=_0x31ba('0x122');_0x5b500d[_0x31ba('0xf3')]+=0x1;_0x5b500d['countglobal']+=0x1;_0x43570b=this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x123')];_0x2ed08a=this[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x119')];_0x52464f[_0x31ba('0xb1')](_0x5b500d,_0x5b500d[_0x31ba('0x9e')],_0x2cb12e[_0x31ba('0x11a')])[_0x31ba('0xaf')](function(_0x51488f){if(_0x5b500d['countabandonedretry']>=_0x52464f[_0x31ba('0x24')][_0x5abe4d['queue']]['dialAbandonedMaxRetry']){_0x52464f[_0x31ba('0x10e')](_0x5b500d,_0x51488f[_0x31ba('0x11b')]);}else{_0x52464f[_0x31ba('0xba')]({'active':![],'countabandonedretry':_0x5b500d[_0x31ba('0xf3')],'scheduledat':moment()[_0x31ba('0x100')](_0x52464f[_0x31ba('0x24')][_0x5abe4d[_0x31ba('0xa9')]][_0x31ba('0x123')],'minutes')['format'](_0x31ba('0xfb')),'ContactId':_0x2cb12e[_0x31ba('0xcd')],'ListId':_0x2cb12e[_0x31ba('0xce')],'VoiceQueueId':_0x2cb12e['VoiceQueueId']||undefined,'CampaignId':_0x2cb12e[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x124')));var _0x2a8c05=new History(_0x5b500d);_0x2a8c05[_0x31ba('0x9e')]=0xb;_0x2a8c05[_0x31ba('0x9f')]='Abandoned';_0x2a8c05[_0x31ba('0x125')]=moment()[_0x31ba('0x5a')](_0x31ba('0xfb'));_0x2a8c05[_0x31ba('0xa0')]=_0x2a8c05[_0x31ba('0x125')];_0x2a8c05[_0x31ba('0x11d')]=_0x5b500d['calleridname'];_0x2a8c05[_0x31ba('0x11e')]=_0x5b500d['calleridnum'];_0x52464f[_0x31ba('0xc7')](_0x2a8c05)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x126')));}})[_0x31ba('0xaf')](function(){if(_0x18f1a0)_0x52464f[_0x31ba('0xb4')](_0x5b500d,_0x43570b,_0x2ed08a)[_0x31ba('0xaf')](function(){return 0x1;});});}}}};Dialer[_0x31ba('0x20')][_0x31ba('0x3f')]=function(_0x1b2abd){if(this['actions'][_0x1b2abd['uniqueid']]){this[_0x31ba('0x2a')][_0x1b2abd[_0x31ba('0xd9')]]['channel']=_0x1b2abd[_0x31ba('0xa7')];}if(this[_0x31ba('0x2c')][_0x1b2abd['uniqueid']]){this[_0x31ba('0x2c')][_0x1b2abd[_0x31ba('0xd9')]][_0x31ba('0xa7')]=_0x1b2abd[_0x31ba('0xa7')];}};Dialer[_0x31ba('0x20')]['syncQueueMember']=function(_0x954fdd){if(!this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]]){return;}if(strategy[this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]][_0x31ba('0xa9')]][_0x31ba('0x128')]]===_0x31ba('0x1f')){if(this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]]&&_[_0x31ba('0xa5')](this[_0x31ba('0x2a')][_0x954fdd['actionid']]['locked'])&&_0x954fdd[_0x31ba('0xd6')]==='1'&&_0x954fdd[_0x31ba('0x129')]==='0'){if(this[_0x31ba('0x26')][_0x954fdd[_0x31ba('0x12a')]]){if(!this[_0x31ba('0x26')][_0x954fdd[_0x31ba('0x12a')]][_0x31ba('0x12b')]){this['agents'][_0x954fdd[_0x31ba('0x12a')]]['locked']=!![];this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]][_0x31ba('0x12b')]=!![];this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]][_0x31ba('0x12a')]=_0x954fdd['stateinterface'];}}}}else if((strategy[this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x954fdd['actionid']]['queue']][_0x31ba('0x128')]]||_0x31ba('0x1e'))===_0x31ba('0x1e')){if(this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]]){if(this[_0x31ba('0x26')][_0x954fdd['stateinterface']]){this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]]['stateinterface']=_0x954fdd[_0x31ba('0x12a')];if(_['isNil'](this[_0x31ba('0x30')][this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]]['queue']])){this[_0x31ba('0x30')][this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]][_0x31ba('0xa9')]]=[];}this[_0x31ba('0x30')][this[_0x31ba('0x2a')][_0x954fdd[_0x31ba('0x127')]][_0x31ba('0xa9')]]['push'](_[_0x31ba('0x7b')](_[_0x31ba('0xcc')](this['actions'][_0x954fdd['actionid']],[_0x31ba('0x12c'),_0x31ba('0x12a')]),{'status':_0x954fdd[_0x31ba('0xd6')],'paused':_0x954fdd[_0x31ba('0x129')]}));}}}};function unlockQueueStatus(_0x30b2c7,_0x597b20){setTimeout(function(){if(_[_0x31ba('0x6f')](_0x30b2c7[_0x31ba('0x12d')])){loggerBooked[_0x31ba('0x88')](_0x31ba('0x12e'),_0x597b20);}_0x30b2c7[_0x31ba('0x12d')]=!![];loggerBooked['info'](_0x31ba('0x12f'),_0x597b20,JSON['stringify'](_[_0x31ba('0xcc')](_0x30b2c7,[_0x31ba('0x5f'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x31ba('0x20')][_0x31ba('0x45')]=function(_0x5f8c6b){if(!this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]){return;}var _0xa3fb3a=this;var _0xbad005=_0xa3fb3a[_0x31ba('0x24')][_0xa3fb3a['actions'][_0x5f8c6b[_0x31ba('0x127')]]['queue']];if(strategy[this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]['queue']]['strategy']]===_0x31ba('0x1f')){if(this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]&&this['actions'][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0x12a')]){this['preview']['run'](this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0x12c')],this['actions'][_0x5f8c6b['actionid']]['stateinterface'])[_0x31ba('0xb2')](function(_0x30d9e3){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x31ba('0x87')](_0x30d9e3,{'showHidden':![],'depth':null}));})[_0x31ba('0x22')](function(){_0xa3fb3a[_0x31ba('0xa8')](_0xa3fb3a[_0x31ba('0x24')][_0xa3fb3a['actions'][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]);_0xa3fb3a[_0x31ba('0x26')][_0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0x12a')]][_0x31ba('0x12b')]=![];delete _0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]];unlockQueueStatus(_0xbad005);});}else{this[_0x31ba('0xa8')](this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xa9')]]);this[_0x31ba('0xba')]({'active':![],'ContactId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xcd')],'ListId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xce')],'VoiceQueueId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xd0')]||undefined,'CampaignId':this[_0x31ba('0x2a')][_0x5f8c6b['actionid']]['CampaignId']||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x130')));delete this[_0x31ba('0x2a')][_0x5f8c6b['actionid']];unlockQueueStatus(_0xbad005);}}else if((strategy[this['voiceQueues'][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]['strategy']]||_0x31ba('0x1e'))==='rrmemory'){var _0x2ba9cb;if(this['actions'][_0x5f8c6b[_0x31ba('0x127')]]&&!_[_0x31ba('0x50')](this[_0x31ba('0x30')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]['queue']])){if(this[_0x31ba('0x31')][_0xa3fb3a['actions'][_0x5f8c6b['actionid']]['queue']]){this[_0x31ba('0x31')][_0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]=this[_0x31ba('0x31')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]?this[_0x31ba('0x31')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]:this[_0x31ba('0x30')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]?this['queueBooked'][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]][_0x31ba('0x131')]||0x0:0x0;}this[_0x31ba('0x30')][this['actions'][_0x5f8c6b['actionid']][_0x31ba('0xa9')]][_0x31ba('0x131')]=this[_0x31ba('0x31')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]];for(var _0x3f801e=0x0;_0x3f801e<this['queueBooked'][this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xa9')]][_0x31ba('0x8a')];_0x3f801e+=0x1){_0x2ba9cb=rr(this['queueBooked'][this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xa9')]]);this[_0x31ba('0x31')][_0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]=this[_0x31ba('0x30')][this['actions'][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]][_0x31ba('0x131')];if(_0x2ba9cb[_0x31ba('0xd6')]==='1'&&_0x2ba9cb[_0x31ba('0x129')]==='0'){break;}}if(!_[_0x31ba('0xa5')](_0x2ba9cb)){this[_0x31ba('0x26')][_0x2ba9cb[_0x31ba('0x12a')]][_0x31ba('0x132')]=_[_0x31ba('0x6f')](this[_0x31ba('0x26')][_0x2ba9cb[_0x31ba('0x12a')]][_0x31ba('0x132')])?!![]:this[_0x31ba('0x26')][_0x2ba9cb[_0x31ba('0x12a')]][_0x31ba('0x132')];}loggerBooked[_0x31ba('0x61')](_0x31ba('0x133'),_0x5f8c6b[_0x31ba('0x127')],_0x31ba('0x134'),JSON[_0x31ba('0x54')](_[_0x31ba('0xcc')](this['agents'][_0x2ba9cb['stateinterface']],['name','unlockRR'])),_0x31ba('0x135'),JSON['stringify'](_0x2ba9cb[_0x31ba('0x12c')]));if(!_['isNil'](_0x2ba9cb)&&_0x2ba9cb[_0x31ba('0xd6')]==='1'&&_0x2ba9cb[_0x31ba('0x129')]==='0'&&this['agents'][_0x2ba9cb['stateinterface']][_0x31ba('0x132')]){this[_0x31ba('0x26')][_0x2ba9cb[_0x31ba('0x12a')]]['unlockRR']=![];this[_0x31ba('0x30')][_0xa3fb3a['actions'][_0x5f8c6b[_0x31ba('0x127')]]['queue']]=[];this[_0x31ba('0x82')][_0x31ba('0x136')](_0x2ba9cb[_0x31ba('0x12c')],_0x2ba9cb[_0x31ba('0x12a')])[_0x31ba('0xb2')](function(_0x1a6e2d){logger[_0x31ba('0x88')](_0x31ba('0x137'),util['inspect'](_0x1a6e2d,{'showHidden':![],'depth':null}));})[_0x31ba('0x22')](function(){_0xa3fb3a[_0x31ba('0xa8')](_0xa3fb3a[_0x31ba('0x24')][_0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]);setTimeout(function(){_0xa3fb3a['agents'][_0x2ba9cb[_0x31ba('0x12a')]][_0x31ba('0x132')]=!![];loggerBooked[_0x31ba('0x61')]('[booked][RR][finaly]',_0x5f8c6b[_0x31ba('0x127')],_0x31ba('0x134'),JSON[_0x31ba('0x54')](_[_0x31ba('0xcc')](_0xa3fb3a['agents'][_0x2ba9cb[_0x31ba('0x12a')]],[_0x31ba('0x5f'),_0x31ba('0x132')])),_0x31ba('0x135'),JSON[_0x31ba('0x54')](_0x2ba9cb[_0x31ba('0x12c')]));},0xc7);delete _0xa3fb3a[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]];unlockQueueStatus(_0xbad005,_0x5f8c6b[_0x31ba('0x127')]);});}else{loggerBooked[_0x31ba('0x61')]('[booked][unlock]');this[_0x31ba('0xa8')](this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xcd')],'ListId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]['ListId'],'VoiceQueueId':this['actions'][_0x5f8c6b['actionid']][_0x31ba('0xd0')]||undefined,'CampaignId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0x130')));delete this['actions'][_0x5f8c6b['actionid']];unlockQueueStatus(_0xbad005);}}else{loggerBooked['info'](_0x31ba('0x138'));this[_0x31ba('0xa8')](this[_0x31ba('0x24')][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xa9')]]);this[_0x31ba('0xba')]({'active':![],'ContactId':this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xcd')],'ListId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xce')],'VoiceQueueId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xd0')]||undefined,'CampaignId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x139')));delete this['actions'][_0x5f8c6b[_0x31ba('0x127')]];unlockQueueStatus(_0xbad005);}}else{loggerBooked[_0x31ba('0x61')]('[booked][unlock3]');this[_0x31ba('0xa8')](this['voiceQueues'][this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]][_0x31ba('0xcd')],'ListId':this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xce')],'VoiceQueueId':this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xd0')]||undefined,'CampaignId':this[_0x31ba('0x2a')][_0x5f8c6b['actionid']][_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x31ba('0x2a')][_0x5f8c6b[_0x31ba('0x127')]];unlockQueueStatus(_0xbad005);}};Dialer['prototype']['loopCampaigns']=function(){var _0x319336=this;return cmHopper[_0x31ba('0x13a')]({'active':![]},{'where':{'active':!![]}})[_0x31ba('0xaf')](function(){setInterval(function(){_0x319336['syncCampaigns']();},0x3e8);});};Dialer[_0x31ba('0x20')]['checkIsTrunkReachable']=function(_0x28a054){var _0x1cdbe8=this;return function(){if(!_0x1cdbe8[_0x31ba('0x13b')](_0x28a054[_0x31ba('0x13c')])){if(!_0x1cdbe8['isTrunkReachable'](_0x28a054[_0x31ba('0x13d')])){_0x28a054[_0x31ba('0x4a')]=_0x31ba('0x13e');throw _0x28a054[_0x31ba('0x5f')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype'][_0x31ba('0x13f')]=function(_0x16aba9,_0x495a78,_0x42169c,_0x491dd9){var _0x29447d=this;return function(){var _0x26be9d=!![];return _0x29447d[_0x31ba('0x140')](_0x16aba9,_0x495a78,_0x42169c,_0x491dd9,_0x26be9d);};};Dialer[_0x31ba('0x20')][_0x31ba('0x141')]=function(_0x1276d1,_0x2bbcc1,_0x180226,_0x5b6b61){var _0x4c7d2c=this;return function(){var _0x763eb7=![];return _0x4c7d2c[_0x31ba('0x140')](_0x1276d1[_0x31ba('0x51')],_0x2bbcc1,_0x180226,_0x5b6b61,_0x763eb7);};};Dialer[_0x31ba('0x20')][_0x31ba('0x140')]=function(_0x32c2d,_0x19a81c,_0x25de46,_0x23337b,_0x1338e6){var _0x37d263=[];return new Promise(function(_0x4d590f,_0x1c5b50){if(!isNotNull(_0x32c2d)){_0x23337b[_0x31ba('0x4a')]=_0x31ba('0x4e');return _0x1c5b50(msgResponse(_0x31ba('0x140'),_0x31ba('0x142'),_0x25de46+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x31ba('0x50')](_0x32c2d)){_0x23337b[_0x31ba('0x4a')]=_0x31ba('0x143');return _0x1c5b50(msgResponse(_0x31ba('0x140'),_0x31ba('0x142'),_0x25de46+_0x31ba('0x144')));}if(_0x19a81c&&_[_0x31ba('0x6f')](config['timezones'][_0x19a81c])){_0x23337b[_0x31ba('0x4a')]=_0x31ba('0x145');return _0x1c5b50(msgResponse('ifTime',_0x31ba('0x142'),_0x25de46+'\x20Timezone\x20unknow\x20'+_0x19a81c));}if(_[_0x31ba('0x146')](_0x32c2d)){for(var _0x518586=0x0;_0x518586<_0x32c2d[_0x31ba('0x8a')];_0x518586+=0x1){_0x37d263[_0x31ba('0x147')](ami[_0x31ba('0xa6')]({'action':_0x31ba('0x148'),'command':util[_0x31ba('0x5a')](_0x31ba('0x149'),_0x32c2d[_0x518586][_0x31ba('0x14a')],!_[_0x31ba('0x6f')](config[_0x31ba('0x14b')][_0x19a81c])?_0x19a81c:'')})['then'](function(_0x9f7ebf){return _0x9f7ebf[_0x31ba('0x14c')][_0x31ba('0x14d')](_0x31ba('0x14e'))>=0x0;})[_0x31ba('0xb2')](myreject(_0x1c5b50)));}}else{_0x37d263[_0x31ba('0x147')](ami[_0x31ba('0xa6')]({'action':_0x31ba('0x148'),'command':util[_0x31ba('0x5a')](_0x31ba('0x149'),_0x32c2d,!_[_0x31ba('0x6f')](config['timezones'][_0x19a81c])?_0x19a81c:'')})[_0x31ba('0xaf')](function(_0x5eea2c){return _0x5eea2c[_0x31ba('0x14c')][_0x31ba('0x14d')](_0x31ba('0x14e'))>=0x0;})[_0x31ba('0xb2')](myreject(_0x1c5b50)));}Promise[_0x31ba('0x14f')](_0x37d263)[_0x31ba('0xaf')](function(_0x3075fa){var _0x355436=_['some'](_0x3075fa);if(_0x355436){return _0x4d590f(_0x355436);}else{_0x23337b[_0x31ba('0x4a')]=_0x1338e6?_0x31ba('0x150'):_0x31ba('0x151');return _0x1c5b50(msgResponse(_0x31ba('0x152'),'Failure',_0x31ba('0x153')+_0x1338e6+'\x20'+_0x25de46+'\x20Interval\x20is\x20overtime:\x20'+util[_0x31ba('0x87')](_0x32c2d,{'showHidden':![],'depth':null})+_0x31ba('0x154')+_0x19a81c));}})[_0x31ba('0xb2')](function(_0x486edc){return _0x1c5b50(msgResponse(_0x31ba('0x140'),'Failure',JSON[_0x31ba('0x54')](_0x486edc)));});});};Dialer[_0x31ba('0x20')]['checkDialMethod']=function(_0x38b5f9){var _0x24a2f9=this;return function(){switch(_0x38b5f9[_0x31ba('0x155')]){case'progressive':freeVariablesPredictive(_0x38b5f9);_0x24a2f9[_0x31ba('0x156')](_0x38b5f9,0x1);break;case _0x31ba('0x157'):freeVariablesPredictive(_0x38b5f9);_0x24a2f9[_0x31ba('0x156')](_0x38b5f9,_0x38b5f9[_0x31ba('0x158')]);break;case _0x31ba('0x8'):_0x24a2f9[_0x31ba('0x8')](_0x38b5f9);break;case'booked':freeVariablesPredictive(_0x38b5f9);_0x24a2f9[_0x31ba('0x156')](_0x38b5f9,0x1);break;default:freeVariablesPredictive(_0x38b5f9);logger[_0x31ba('0x88')](_0x31ba('0x159'),_0x38b5f9[_0x31ba('0x5f')],_0x31ba('0x15a'));}};};Dialer[_0x31ba('0x20')][_0x31ba('0x15b')]=function(_0x2b6c9a){return Promise['resolve']()[_0x31ba('0xaf')](cmHopper['handlePreviewRecallNotifications'](_0x2b6c9a['id'],previewRecallmeReminderInterval))[_0x31ba('0xaf')](function(_0x2d332c){for(var _0x4b18a2=0x0;_0x4b18a2<_0x2d332c[_0x31ba('0x8a')];_0x4b18a2++){var _0x5c7f74=_0x2d332c[_0x4b18a2]['Agent'][_0x31ba('0x5f')];if(_0x5c7f74)io['to'](util[_0x31ba('0x5a')]('user:%s',_0x5c7f74))[_0x31ba('0x57')]('user:dialPreviewRecallReminder',{'hopper':_0x2d332c[_0x4b18a2]});}})[_0x31ba('0xb2')](function(){});};Dialer[_0x31ba('0x20')][_0x31ba('0x15c')]=function(_0x2330f1){var _0x40d39e=this;return function(){_0x40d39e[_0x31ba('0x15d')](_0x2330f1);};};Dialer['prototype']['syncQueueSummary']=function(_0x297c62){var _0x5a7ada=this;if(isNotPreview(_0x297c62[_0x31ba('0x155')])){if(isVoiceQueueOutbound(_0x297c62[_0x31ba('0x58')])&&isActive(_0x297c62[_0x31ba('0x15e')])){_0x297c62[_0x31ba('0x97')]=!![];Promise['resolve']()['then'](checkIsLoggedIn(_0x297c62,_0x297c62[_0x31ba('0x15f')]))['then'](checkIsActive(_0x297c62,_0x297c62[_0x31ba('0x15e')]))[_0x31ba('0xaf')](checkInterval(_0x297c62))['then'](_0x5a7ada[_0x31ba('0x160')](_0x297c62))['then'](_0x5a7ada[_0x31ba('0x13f')](_0x297c62[_0x31ba('0x161')],_0x297c62[_0x31ba('0x162')],_0x297c62['name'],_0x297c62))[_0x31ba('0xaf')](_0x5a7ada[_0x31ba('0x141')](_0x297c62[_0x31ba('0x4d')],_0x297c62[_0x31ba('0x162')],_0x297c62[_0x31ba('0x5f')],_0x297c62))[_0x31ba('0xaf')](_0x5a7ada[_0x31ba('0x163')](_0x297c62))[_0x31ba('0xb2')](loggerCatchQueueSummary(_0x31ba('0x164'),_0x297c62));}else{notSendMessagesQueue(_0x297c62);}}else{freeVariablesPredictive(_0x297c62);}};Dialer[_0x31ba('0x20')][_0x31ba('0x3b')]=_[_0x31ba('0x165')](function(){var _0x35debc=_['filter'](this[_0x31ba('0x24')],function(_0x3425bb){return _0x3425bb[_0x31ba('0x166')];});var _0x2f75aa=_[_0x31ba('0x167')](this[_0x31ba('0x26')],function(_0x101988){return _0x101988[_0x31ba('0x168')]&&_0x101988[_0x31ba('0xd6')]==='reachable';});if(_0x35debc[_0x31ba('0x8a')]>0x0&&_0x2f75aa[_0x31ba('0x8a')]>0x0){return Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](cmHopper[_0x31ba('0x169')](_[_0x31ba('0x16a')](_0x35debc,'id'),previewRecallmeReminderInterval,_[_0x31ba('0x16a')](_0x2f75aa,'id')))['then'](function(_0x42265c){for(var _0x3d50b6=0x0;_0x3d50b6<_0x42265c[_0x31ba('0x8a')];_0x3d50b6++){var _0x2a48d6=_0x42265c[_0x3d50b6][_0x31ba('0x16b')][_0x31ba('0x5f')];if(_0x2a48d6)io['to'](util['format'](_0x31ba('0x16c'),_0x2a48d6))[_0x31ba('0x57')]('user:dialPreviewRecallReminder',{'hopper':_0x42265c[_0x3d50b6]});}})['catch'](function(_0x4c1a8d){logger[_0x31ba('0x88')](_0x31ba('0x15b'),_0x4c1a8d);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x31ba('0x20')][_0x31ba('0x16d')]=function(){var _0x12a389=this;var _0x239bd0;for(var _0x3126d5 in this[_0x31ba('0x25')]){if(typeof this[_0x31ba('0x25')][_0x3126d5]!==_0x31ba('0x8c')){_0x239bd0=this['campaigns'][_0x3126d5];if(isCampaignIvr(_0x239bd0[_0x31ba('0x58')])&&isActive(_0x239bd0['active'])){_0x239bd0['sendMessageOneNotActive']=!![];Promise[_0x31ba('0xae')]()[_0x31ba('0xaf')](checkIsActive(_0x239bd0,_0x239bd0['active']))['then'](checkInterval(_0x239bd0))[_0x31ba('0xaf')](_0x12a389[_0x31ba('0x160')](_0x239bd0))['then'](_0x12a389[_0x31ba('0x13f')](_0x239bd0[_0x31ba('0x161')],_0x239bd0[_0x31ba('0x162')],_0x239bd0['name'],_0x239bd0))[_0x31ba('0xaf')](_0x12a389[_0x31ba('0x141')](_0x239bd0[_0x31ba('0x4d')],_0x239bd0[_0x31ba('0x162')],_0x239bd0[_0x31ba('0x5f')],_0x239bd0))[_0x31ba('0xaf')](_0x12a389[_0x31ba('0x15c')](_0x239bd0))[_0x31ba('0xb2')](loggerCatchQueueSummary(_0x31ba('0x16e'),_0x239bd0));}else{notSendMessagesCampaign(_0x239bd0);}}}};function getCallerIdRandom(_0xc7a624,_0x4bb7fa){var _0x15ebbc;var _0x5ef6e5;var _0x48569f;if(_0x4bb7fa<=0x0){_0x4bb7fa=0x1;}_0x15ebbc=new RegExp(_0x31ba('0x16f')+_0x4bb7fa+'}$');_0x5ef6e5=Math[_0x31ba('0x170')](0xa,_0x4bb7fa-0x1);_0x48569f=Math[_0x31ba('0x170')](0xa,_0x4bb7fa)-0x1;return util[_0x31ba('0x5a')]('%s',_[_0x31ba('0x171')](_0xc7a624,_0x15ebbc,_[_0x31ba('0x172')](_0x5ef6e5,_0x48569f)[_0x31ba('0x173')]()));}function extractCalleridName(_0x63797e){var _0x398908=_0x63797e[_0x31ba('0x174')](/"(.*?)"/);return _0x398908?_0x398908[0x1]:_0x63797e;}Dialer[_0x31ba('0x20')][_0x31ba('0x175')]=function(_0x447e24,_0x545495){var _0xdc82b6=this;var _0x56c95d=uuid['v4']();this[_0x31ba('0x2a')][_0x56c95d]=new Action(_0x447e24,_0x545495,_0x56c95d);return new Promise(function(_0x29ac28,_0xd08fca){if(_[_0x31ba('0x6f')](_0x447e24)&&typeof _0x447e24!==_0x31ba('0x176')){return _0xd08fca(msgResponse(_0x31ba('0x177'),'Failure','voiceQueue\x20is\x20undefine'));}if(_[_0x31ba('0x6f')](_0x545495['phone'])||_0x545495['phone']===null){return _0xd08fca(msgResponse(_0x31ba('0x177'),_0x31ba('0x142'),'contact\x20is\x20undefine'));}var _0x406a44={'XMD-CALLERID':_0xdc82b6[_0x31ba('0x2a')][_0x56c95d]['getCaller'](),'XMD-AGI':_0x447e24['dialQueueProject']?util[_0x31ba('0x5a')]('\x22agi://%s/square,%s\x22',ipAgi,_0x447e24[_0x31ba('0x104')]):_0x31ba('0x178'),'XMD-AGIAFTER':_0x447e24[_0x31ba('0x10b')]?util[_0x31ba('0x5a')](_0x31ba('0x179'),ipAgi,_0x447e24[_0x31ba('0x10b')]):_0x31ba('0x178'),'XMD-QUEUE':_0x447e24[_0x31ba('0x58')]===_0x31ba('0x59')?util['format'](_0x31ba('0x17a'),_0x447e24['name'],_0x447e24['dialQueueOptions']||'',_0x447e24[_0x31ba('0x10c')]?'c':'',_0x447e24['dialQueueTimeout']||0x3):_0x31ba('0x178'),'XMD-CONTACTID':_0x545495['ContactId'],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0xdc82b6[_0x31ba('0x2a')][_0x56c95d][_0x31ba('0x17b')](),'XMD-AMD':_0x447e24['dialAMDActive']?_0x31ba('0x17c'):_0x31ba('0x178'),'XMD-DESTINATION':_0x31ba('0xdb')};if(_0x447e24[_0x31ba('0xe6')]){_0x406a44[_0x31ba('0x17d')]=_0x447e24[_0x31ba('0x17e')]||0x9c4;_0x406a44['XMD-AMDGREETING']=_0x447e24[_0x31ba('0x17f')]||0x5dc;_0x406a44[_0x31ba('0x180')]=_0x447e24[_0x31ba('0x181')]||0x320;_0x406a44['XMD-AMDTOTALANALYSISTIME']=_0x447e24['dialAMDTotalAnalysisTime']||0x1388;_0x406a44['XMD-AMDMINWORDLENGTH']=_0x447e24[_0x31ba('0x182')]||0x64;_0x406a44[_0x31ba('0x183')]=_0x447e24[_0x31ba('0x184')]||0x32;_0x406a44[_0x31ba('0x185')]=_0x447e24[_0x31ba('0x186')]||0x3;_0x406a44['XMD-AMDSILENCETHRESHOLD']=_0x447e24[_0x31ba('0x187')]||0x100;_0x406a44['XMD-AMDMAXIMUMWORDLENGTH']=_0x447e24[_0x31ba('0x188')]||0x1388;}if(_0x447e24[_0x31ba('0x58')]==='outbound'){_0x406a44[_0x31ba('0x189')]=_0x545495[_0x31ba('0xd0')];}else{_0x406a44[_0x31ba('0x18a')]=_0x545495[_0x31ba('0xd1')];}for(var _0x149a06 in _0x545495['Contact']){if(typeof _0x545495[_0x31ba('0x18b')][_0x149a06]!==_0x31ba('0x8c')){if(isNotNull(_0x545495[_0x31ba('0x18b')][_0x149a06])&&_0x149a06!=='id'&&_0x149a06!=='tags'&&_0x149a06!=='createdAt'&&_0x149a06!==_0x31ba('0x18c')){_0x406a44[util['format'](_0x31ba('0x18d'),_0x31ba('0x18e'),_[_0x31ba('0x18f')](_0x149a06))]=_0x545495[_0x31ba('0x18b')][_0x149a06];}}}var _0x2668a1=_0xdc82b6[_0x31ba('0x13b')](_0x447e24[_0x31ba('0x13c')])?getCallerId(_0x447e24[_0x31ba('0x13c')][_0x31ba('0x190')],_0x447e24[_0x31ba('0x191')],_0x447e24[_0x31ba('0x192')]>0x0?getCallerIdRandom(_0x447e24[_0x31ba('0x193')],_0x447e24[_0x31ba('0x192')]):_0x447e24[_0x31ba('0x193')]):getCallerId(_[_0x31ba('0xa5')](_0x447e24[_0x31ba('0x13d')])?_0x447e24['Trunk'][_0x31ba('0x190')]:_0x447e24[_0x31ba('0x13d')][_0x31ba('0x190')],_0x447e24[_0x31ba('0x191')],_0x447e24[_0x31ba('0x192')]>0x0?getCallerIdRandom(_0x447e24['dialOriginateCallerIdNumber'],_0x447e24[_0x31ba('0x192')]):_0x447e24[_0x31ba('0x193')]);if(_0x2668a1){_0x406a44[_0x31ba('0x194')]=_0xdc82b6['actions'][_0x56c95d]['originatecalleridname']=extractCalleridName(_0x2668a1);_0x406a44['XMD-ORIGINATECALLERIDNUM']=_0x545495[_0x31ba('0x195')];}_0x447e24[_0x31ba('0x196')]=_0x406a44;return ami[_0x31ba('0xa6')]({'actionid':_0x56c95d,'action':_0x31ba('0x177'),'channel':_0xdc82b6['isTrunkReachable'](_0x447e24[_0x31ba('0x13c')])?util['format'](_0x31ba('0x197'),_0x447e24['Trunk'][_0x31ba('0x5f')],isNotNull(_0x447e24[_0x31ba('0x198')])?_0x447e24[_0x31ba('0x198')][_0x31ba('0x199')]()||'':'',_0x447e24['dialCutDigit']>0x0?_0x545495[_0x31ba('0x195')]['substring'](_0x447e24[_0x31ba('0x19a')]):_0x545495[_0x31ba('0x195')]):util[_0x31ba('0x5a')](_0x31ba('0x197'),_[_0x31ba('0xa5')](_0x447e24[_0x31ba('0x13d')])?_0x447e24[_0x31ba('0x13c')]['name']:_0x447e24['TrunkBackup'][_0x31ba('0x5f')],isNotNull(_0x447e24[_0x31ba('0x198')])?_0x447e24[_0x31ba('0x198')][_0x31ba('0x199')]()||'':'',_0x447e24[_0x31ba('0x19a')]>0x0?_0x545495[_0x31ba('0x195')][_0x31ba('0x19b')](_0x447e24[_0x31ba('0x19a')]):_0x545495[_0x31ba('0x195')]),'callerid':_0x2668a1,'Exten':_0x31ba('0xdb'),'Context':_0x31ba('0x19c'),'Priority':'1','variable':_0x406a44,'timeout':(_0x447e24['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x56c95d})[_0x31ba('0xaf')](function(_0x428f4a){return _0x29ac28(_0x428f4a);})[_0x31ba('0xb2')](function(_0x58df1c){_0x447e24[_0x31ba('0x19d')]+=0x1;var _0x2d5d7e=new History(_0xdc82b6[_0x31ba('0x2a')][_0x56c95d]);logger[_0x31ba('0x88')](util['format'](_0x31ba('0x19e'),JSON[_0x31ba('0x54')](_0x58df1c)));_0x2d5d7e['state']=0xe;_0x2d5d7e['statedesc']=_0x31ba('0x19f');_0x2d5d7e['starttime']=moment()[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');_0x2d5d7e[_0x31ba('0xa0')]=_0x2d5d7e[_0x31ba('0x125')];_0xdc82b6[_0x31ba('0xc7')](_0x2d5d7e)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1a0')));_0xdc82b6['moveContactManagedDialer'](_0x2d5d7e)['catch'](loggerCatch(_0x31ba('0x1a0')))[_0x31ba('0x22')](function(){delete _0xdc82b6['actions'][_0x56c95d];return _0xd08fca(msgResponse(_0x31ba('0x177'),_0x31ba('0x53'),_0x31ba('0x1a1')));});});});};Dialer[_0x31ba('0x20')]['syncOriginateResponse']=function(_0x4651a9){var _0xc92ab6=this[_0x31ba('0x2a')][_0x4651a9[_0x31ba('0x127')]];if(_0xc92ab6){delete this[_0x31ba('0x2a')][_0x4651a9[_0x31ba('0x127')]];_0xc92ab6[_0x31ba('0x1a2')]=moment()['format'](_0x31ba('0xfb'));var _0x409d33=_0xc92ab6[_0x31ba('0x58')]==='ivr'?this[_0x31ba('0x25')][_0xc92ab6['queue']]:this[_0x31ba('0x24')][_0xc92ab6[_0x31ba('0x1a3')]()];if(!this[_0x31ba('0xd2')](_0x4651a9[_0x31ba('0x1a4')])){this[_0x31ba('0xa8')](_0x409d33);return this[_0x31ba('0x1a5')](_0xc92ab6,_0x409d33,_0x4651a9)['catch'](loggerCatch(_0x31ba('0x1a6')));}this['uniqueId'][_0x4651a9[_0x31ba('0xd9')]]=_0xc92ab6;}};Dialer[_0x31ba('0x20')]['checkRetriveMax']=function(_0x595c5c,_0x465bf9,_0x364155){var _0x393391=new History(_0x465bf9);if(_0x393391[_0x31ba('0xee')]+_0x393391['countcongestionretry']+_0x393391['countnoanswerretry']+_0x393391[_0x31ba('0xf1')]+_0x393391[_0x31ba('0xf2')]+_0x393391[_0x31ba('0xf3')]+_0x393391[_0x31ba('0xea')]+_0x393391['countagentrejectretry']>=_0x364155[_0x31ba('0x1a7')]-0x1){return!![];}switch(_0x595c5c){case 0x3:if(_0x393391[_0x31ba('0xf0')]>=_0x364155[_0x31ba('0x1a8')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x393391['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0x364155['dialNoAnswerRetryFrequency'],_0x31ba('0xfa'))[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1a9')));break;case 0x5:if(_0x393391[_0x31ba('0xee')]>=_0x364155[_0x31ba('0x1aa')]-0x1){return!![];}this[_0x31ba('0xba')]({'active':![],'countbusyretry':_0x393391[_0x31ba('0xee')]+=0x1,'scheduledat':moment()[_0x31ba('0x100')](_0x364155['dialBusyRetryFrequency'],'minutes')[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1ab')));break;case 0x8:if(_0x393391[_0x31ba('0xef')]>=_0x364155[_0x31ba('0x1ac')]-0x1){return!![];}this[_0x31ba('0xba')]({'active':![],'countcongestionretry':_0x393391[_0x31ba('0xef')]+=0x1,'scheduledat':moment()[_0x31ba('0x100')](_0x364155[_0x31ba('0x1ad')],_0x31ba('0xfa'))['format'](_0x31ba('0xfb')),'ContactId':_0x393391['ContactId'],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0x1ae')));break;case 0x0:if(_0x393391[_0x31ba('0xf1')]>=_0x364155[_0x31ba('0x1af')]-0x1){return!![];}else{this[_0x31ba('0xba')]({'active':![],'countnosuchnumberretry':_0x393391[_0x31ba('0xf1')]+=0x1,'scheduledat':moment()[_0x31ba('0x100')](_0x364155[_0x31ba('0x1b0')],_0x31ba('0xfa'))[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0x1b1')));}break;case 0xa:if(_0x393391['countdropretry']>=_0x364155[_0x31ba('0x1b2')]-0x1){return!![];}this[_0x31ba('0xba')]({'active':![],'countdropretry':_0x393391[_0x31ba('0xf2')]+=0x1,'scheduledat':moment()[_0x31ba('0x100')](_0x364155['dialDropRetryFrequency'],'minutes')[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391['VoiceQueueId']||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x11c')));break;case 0xb:if(_0x393391[_0x31ba('0xf3')]>=_0x364155[_0x31ba('0x1b3')]-0x1){return!![];}this[_0x31ba('0xba')]({'active':![],'countabandonedretry':_0x393391[_0x31ba('0xf3')]+=0x1,'scheduledat':moment()['add'](_0x364155['dialAbandonedRetryFrequency'],'minutes')[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391[_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x124')));break;case 0x13:if(_0x393391[_0x31ba('0xea')]>=_0x364155[_0x31ba('0xf7')]-0x1){return!![];}this[_0x31ba('0xba')]({'active':![],'countmachineretry':_0x393391['countmachineretry']+=0x1,'scheduledat':moment()[_0x31ba('0x100')](_0x364155[_0x31ba('0x101')],_0x31ba('0xfa'))[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391['ListId'],'VoiceQueueId':_0x393391['VoiceQueueId']||undefined,'CampaignId':_0x393391['CampaignId']||undefined})[_0x31ba('0xb2')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x393391[_0x31ba('0xf4')]>=_0x364155['dialAgentRejectMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x393391['countagentrejectretry']+=0x1,'scheduledat':moment()['add'](_0x364155[_0x31ba('0x1b4')],_0x31ba('0xfa'))[_0x31ba('0x5a')](_0x31ba('0xfb')),'ContactId':_0x393391[_0x31ba('0xcd')],'ListId':_0x393391[_0x31ba('0xce')],'VoiceQueueId':_0x393391[_0x31ba('0xd0')]||undefined,'CampaignId':_0x393391['CampaignId']||undefined})[_0x31ba('0xb2')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x31ba('0x20')][_0x31ba('0x1a5')]=function(_0x3a3a2f,_0x20e2fc,_0x1e1bb1){var _0xf84f6e=this;var _0x411617=new History(_0x3a3a2f);var _0x156987=![];var _0x4eea37;var _0x4c9a02;return new Promise(function(_0xd9d644,_0x18d375){if(_[_0x31ba('0x6f')](_0x20e2fc)&&typeof _0x20e2fc!==_0x31ba('0x176')){return _0x18d375(msgResponse('[callProgressDetecting]','Failure',_0x31ba('0x1b5')));}if(_['isUndefined'](_0x1e1bb1)&&typeof _0x1e1bb1!==_0x31ba('0x176')){return _0x18d375(msgResponse(_0x31ba('0x1b6'),_0x31ba('0x142'),_0x31ba('0x1b7')));}_0xf84f6e['verifyAdditionalPhones'](_0x411617,_0x1e1bb1['reason'],_0x20e2fc)['then'](function(_0x4bb49b){if(_0x4bb49b[_0x31ba('0x11b')]==0x1)_0x156987=!![];switch(_0x1e1bb1['reason']){case'0':_0x20e2fc[_0x31ba('0x1b8')]+=0x1;_0x411617[_0x31ba('0x9e')]=0x0;_0x411617['statedesc']='NoSuchNumber';_0x411617[_0x31ba('0xf1')]+=0x1;_0x411617[_0x31ba('0xeb')]+=0x1;ami[_0x31ba('0x57')](_0x31ba('0x1b9'),ut[_0x31ba('0xec')](_0x3a3a2f,_0x31ba('0x1ba')));_0x4eea37=_0x20e2fc[_0x31ba('0x1b0')];_0x4c9a02=_0x20e2fc[_0x31ba('0x119')];_0xf84f6e[_0x31ba('0xc7')](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xed')));if(_0xf84f6e[_0x31ba('0x1bb')](0x0,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xf1')]>=_0x20e2fc['dialNoSuchNumberMaxRetry']){_0xf84f6e[_0x31ba('0xf8')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1bc'));}else{_0xf84f6e['stateGlobal'](_0x411617,_0xd9d644,_0x18d375,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x20e2fc['outboundNoAnswerCallsDay']+=0x1;_0x411617[_0x31ba('0x9e')]=0x3;_0x411617['statedesc']=_0x31ba('0x1bd');_0x411617[_0x31ba('0xf0')]+=0x1;_0x411617[_0x31ba('0xeb')]+=0x1;var _0x1644a3=ut[_0x31ba('0x1be')](_0x3a3a2f,_0x20e2fc);ami[_0x31ba('0x57')](_0x31ba('0x1bf'),_0x1644a3);_0x4eea37=_0x20e2fc[_0x31ba('0x1c0')];_0x4c9a02=_0x20e2fc[_0x31ba('0x119')];_0xf84f6e[_0x31ba('0xc7')](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1c1')));if(_0xf84f6e['checkRetriveMax'](0x3,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xf0')]>=_0x20e2fc[_0x31ba('0x1a8')]){_0xf84f6e[_0x31ba('0xf8')](_0x411617,_0xd9d644,_0x18d375,'reason\x203\x20ringing\x20no\x20answer');}else{_0xf84f6e['stateGlobal'](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1c2'));}}break;case'5':_0x20e2fc[_0x31ba('0x1c3')]+=0x1;_0x411617[_0x31ba('0x9e')]=0x5;_0x411617['statedesc']=_0x31ba('0x1c4');_0x411617['countbusyretry']+=0x1;_0x411617['countglobal']+=0x1;ami[_0x31ba('0x57')](_0x31ba('0x1c5'),ut['buildObj'](_0x3a3a2f,'busy'));_0x4eea37=_0x20e2fc[_0x31ba('0x1c6')];_0x4c9a02=_0x20e2fc[_0x31ba('0x119')];_0xf84f6e[_0x31ba('0xc7')](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1c7')));if(_0xf84f6e['checkRetriveMax'](0x5,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xee')]>=_0x20e2fc['dialBusyMaxRetry']){_0xf84f6e[_0x31ba('0xf8')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1c8'));}else{_0xf84f6e['stateGlobal'](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1c8'));}}break;case'8':_0x20e2fc[_0x31ba('0x1c9')]+=0x1;_0x411617[_0x31ba('0x9e')]=0x8;_0x411617[_0x31ba('0x9f')]='Congestion';_0x411617[_0x31ba('0xef')]+=0x1;_0x411617[_0x31ba('0xeb')]+=0x1;_0x4eea37=_0x20e2fc['dialCongestionRetryFrequency'];_0x4c9a02=_0x20e2fc[_0x31ba('0x119')];ami[_0x31ba('0x57')](_0x31ba('0x1ca'),ut[_0x31ba('0xec')](_0x3a3a2f,'congestion'));_0xf84f6e[_0x31ba('0xc7')](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1cb')));if(_0xf84f6e[_0x31ba('0x1bb')](0x8,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xef')]>=_0x20e2fc[_0x31ba('0x1ac')]){_0xf84f6e['createStateFinal'](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1cc'));}else{_0xf84f6e['stateGlobal'](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1cc'));}}break;case'11':_0x20e2fc['outboundAbandonedCallsDay']+=0x1;_0x411617[_0x31ba('0x9e')]=0xb;_0x411617[_0x31ba('0x9f')]='Abandoned';_0x411617[_0x31ba('0xf3')]+=0x1;_0x411617[_0x31ba('0xeb')]+=0x1;_0x4eea37=_0x20e2fc[_0x31ba('0x123')];_0x4c9a02=_0x20e2fc['callAdditionalPhoneAfterMin'];_0xf84f6e['createHistory'](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x126')));if(_0xf84f6e[_0x31ba('0x1bb')](0xb,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xf3')]>=_0x20e2fc[_0x31ba('0x1b3')]){_0xf84f6e[_0x31ba('0xf8')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1cd'));}else{_0xf84f6e[_0x31ba('0xf5')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1cd'));}}break;case'20':_0x20e2fc[_0x31ba('0x1ce')]+=0x1;_0x411617[_0x31ba('0x9e')]=0x14;_0x411617[_0x31ba('0x9f')]='AgentReject';_0x411617[_0x31ba('0xf4')]+=0x1;_0x411617[_0x31ba('0xeb')]+=0x1;_0x4eea37=_0x20e2fc[_0x31ba('0x1b4')];_0x4c9a02=_0x20e2fc['callAdditionalPhoneAfterMin'];ami[_0x31ba('0x57')](_0x31ba('0x1cf'),ut['buildObj'](_0x3a3a2f,_0x31ba('0x1d0')));_0xf84f6e[_0x31ba('0xc7')](_0x411617)[_0x31ba('0xb2')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0xf84f6e[_0x31ba('0x1bb')](0x14,_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xf4')]>=_0x20e2fc[_0x31ba('0x1d1')]){_0xf84f6e[_0x31ba('0xf8')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1d2'));}else{_0xf84f6e[_0x31ba('0xf5')](_0x411617,_0xd9d644,_0x18d375,_0x31ba('0x1d2'));}}break;default:_0x20e2fc[_0x31ba('0x106')]+=0x1;_0x411617['state']=0xc;_0x411617[_0x31ba('0x9f')]=_0x1e1bb1[_0x31ba('0x108')];_0x4eea37=_0x20e2fc[_0x31ba('0x1b4')];_0x4c9a02=_0x20e2fc['callAdditionalPhoneAfterMin'];_0xf84f6e['createHistory'](_0x411617)[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x1d3')));if(_0xf84f6e[_0x31ba('0x1bb')](_0x1e1bb1[_0x31ba('0x108')],_0x3a3a2f,_0x20e2fc)&&!_0x156987){if(_0x411617[_0x31ba('0xee')]+_0x411617[_0x31ba('0xef')]+_0x411617['countnoanswerretry']+_0x411617['countnosuchnumberretry']+_0x411617[_0x31ba('0xf2')]+_0x411617[_0x31ba('0xf3')]+_0x411617['countmachineretry']+_0x411617[_0x31ba('0xf4')]>=_0x20e2fc[_0x31ba('0x1a7')]){_0xf84f6e['stateGlobal'](_0x411617,_0xd9d644,_0x18d375,_0x1e1bb1['reason']);}else{_0xf84f6e['createStateFinal'](_0x411617,_0xd9d644,_0x18d375,_0x1e1bb1[_0x31ba('0x108')]);}}}})['then'](function(){if(_0x156987){_0xf84f6e[_0x31ba('0xb4')](_0x411617,_0x4eea37,_0x4c9a02)[_0x31ba('0xaf')](function(){return _0xd9d644(0x1);});}});});};Dialer[_0x31ba('0x20')]['stateGlobal']=function(_0x599301,_0x1b8ae6,_0x5aa0cc,_0x5a5497){var _0xafd287=new Final(_0x599301);_0xafd287[_0x31ba('0x9e')]=0xf;_0xafd287[_0x31ba('0x9f')]=_0x31ba('0x1d4');this['createStateFinal'](_0xafd287,_0x1b8ae6,_0x5aa0cc,_0x5a5497);};Dialer[_0x31ba('0x20')]['createStateFinal']=function(_0x1e636b,_0x3d4218,_0x2c051b,_0x85cdcd){this[_0x31ba('0xc5')](_0x1e636b)[_0x31ba('0xaf')](function(){return _0x3d4218(msgResponse(_0x31ba('0x1b6'),_0x31ba('0xd3'),_0x85cdcd));})[_0x31ba('0xb2')](function(){return _0x2c051b(msgResponse('[moveContactManagedDialer][0]',_0x31ba('0x142'),'contact\x20not\x20moved'));});};Dialer[_0x31ba('0x20')][_0x31ba('0x8')]=function(_0x47636e){var _0x3ddd84=_0x47636e[_0x31ba('0x1d5')]/0x64;var _0x543b93=_0x47636e[_0x31ba('0x114')]/(_0x47636e[_0x31ba('0x114')]+_0x47636e['outboundAnswerCallsDay']);var _0x3dc7a5=Math[_0x31ba('0x1d6')](_0x47636e['predictiveIntervalAvailable']*(_0x47636e[_0x31ba('0x1d7')]/0x64));var _0x50c492=Math[_0x31ba('0x1d6')](_0x47636e[_0x31ba('0x1d8')]*(_0x47636e['predictiveIntervalMinThreshold']/0x64));var _0x1181de=_0x47636e['available']+_0x47636e[_0x31ba('0x94')];var _0x58f6f9=Math['floor'](_0x47636e[_0x31ba('0x77')]*_0x47636e[_0x31ba('0x1d9')]*_0x47636e['predictiveIntervalHitRate']*_0x47636e[_0x31ba('0x1da')]);if(_['isUndefined'](_0x47636e[_0x31ba('0x2e')])){if(!_[_0x31ba('0x6f')](_0x47636e[_0x31ba('0x7e')])){_0x47636e['startPredictive']=undefined;loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x31ba('0x1db'));}if(!_[_0x31ba('0x6f')](_0x47636e['handlePredictive'])){loggerPredictive[_0x31ba('0x88')](_0x31ba('0x1dc'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x47636e[_0x31ba('0x80')]);_0x47636e[_0x31ba('0x80')]=undefined;}_0x47636e[_0x31ba('0x2e')]=moment()[_0x31ba('0x5a')](_0x31ba('0xfb'));loggerPredictive[_0x31ba('0x61')](_0x47636e[_0x31ba('0x5f')],'collection\x20data\x20in\x20progressive\x20at',_0x47636e['startProgressive']);this[_0x31ba('0x156')](_0x47636e,0x1);}else if(ifInterval(_0x47636e[_0x31ba('0x1dd')],_0x47636e[_0x31ba('0x2e')])){this[_0x31ba('0x156')](_0x47636e,0x1);loggerPredictiveCalls[_0x31ba('0x61')]('[startMethodPredictive][StartProgressive][Loop]',_0x47636e[_0x31ba('0x2e')],_0x47636e['name']);_0x47636e[_0x31ba('0x77')]=0x0;_0x47636e[_0x31ba('0x115')]=0x0;}else if(_0x3ddd84<_0x543b93&&_0x47636e[_0x31ba('0x1de')]==='dropRate'){freeVariablesPredictive(_0x47636e);loggerPredictive['info'](_0x31ba('0x1df'),_0x31ba('0x1e0'),_0x543b93,_0x31ba('0x2e'),_0x47636e[_0x31ba('0x5f')]);}else if(_0x58f6f9<_0x47636e[_0x31ba('0x115')]&&_0x47636e[_0x31ba('0x1de')]===_0x31ba('0x1e1')){freeVariablesPredictive(_0x47636e);loggerPredictive[_0x31ba('0x61')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x31ba('0x1e2'),_0x58f6f9,_0x31ba('0x1e3'),_0x47636e[_0x31ba('0x115')],_0x31ba('0x2e'),_0x47636e['name']);}else if(!ifInterval(_0x47636e[_0x31ba('0x1dd')],_0x47636e['startProgressive'])&&_[_0x31ba('0x6f')](_0x47636e[_0x31ba('0x7e')])&&!_[_0x31ba('0x6f')](_0x47636e[_0x31ba('0x2e')])){_0x47636e[_0x31ba('0x7e')]=moment()[_0x31ba('0x5a')](_0x31ba('0xfb'));loggerPredictive[_0x31ba('0x61')](_0x47636e[_0x31ba('0x5f')],_0x31ba('0x1e4'),_0x47636e[_0x31ba('0x7e')]);this[_0x31ba('0xb7')](_0x47636e[_0x31ba('0x1dd')])[_0x31ba('0xaf')](this[_0x31ba('0x1e5')](_0x47636e))[_0x31ba('0xaf')](mergeDataErlangB(_0x47636e))[_0x31ba('0xaf')](this['startMethodPredictive'](_0x47636e))[_0x31ba('0xb2')](loggerCatchPredictive(_0x31ba('0x1e6'),_0x47636e));}else if(!ifInterval(_0x47636e[_0x31ba('0x1dd')],_0x47636e[_0x31ba('0x7e')])){_0x47636e[_0x31ba('0x115')]=0x0;_0x47636e[_0x31ba('0x7e')]=moment()[_0x31ba('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x47636e['name'],_0x31ba('0x1e7'),_0x47636e[_0x31ba('0x7e')]);clearInterval(_0x47636e[_0x31ba('0x80')]);_0x47636e[_0x31ba('0x80')]=undefined;this[_0x31ba('0xb7')](_0x47636e[_0x31ba('0x1dd')])['then'](this[_0x31ba('0x1e5')](_0x47636e))[_0x31ba('0xaf')](mergeDataErlangB(_0x47636e))[_0x31ba('0xaf')](this[_0x31ba('0x1e8')](_0x47636e))[_0x31ba('0xb2')](loggerCatchPredictive(_0x31ba('0x1e9'),_0x47636e));}else if(_0x47636e[_0x31ba('0x1d8')]&&_0x1181de<_0x47636e['predictiveIntervalAvailable']-_0x50c492){freeVariablesPredictive(_0x47636e);loggerPredictive['info'](_0x47636e[_0x31ba('0x5f')],_0x31ba('0x1ea'),_0x1181de,')\x20are\x20less\x20than\x20threshold\x20(',_0x47636e[_0x31ba('0x1d8')],'-',_0x50c492,'=',_0x47636e['predictiveIntervalAvailable']-_0x50c492,')');}else if(_0x47636e['predictiveIntervalAvailable']&&_0x1181de>_0x47636e[_0x31ba('0x1d8')]+_0x3dc7a5){freeVariablesPredictive(_0x47636e);loggerPredictive[_0x31ba('0x61')](_0x47636e[_0x31ba('0x5f')],_0x31ba('0x1ea'),_0x1181de,_0x31ba('0x1eb'),_0x47636e[_0x31ba('0x1d8')],'+',_0x3dc7a5,'=',_0x47636e[_0x31ba('0x1d8')]+_0x3dc7a5,')');}};Dialer[_0x31ba('0x20')]['getDataPredictive']=function(_0x347ab3){var _0x3af194=this;return function(_0x346e74){return new Promise(function(_0x1f6023,_0x41d66c){_[_0x31ba('0x7b')](_0x347ab3,_0x346e74[0x0]);if(checkGetDataPredictive(_0x346e74[0x0])){var _0x3d9dd3=_0x347ab3[_0x31ba('0x1d8')]=_0x347ab3[_0x31ba('0x94')]+_0x347ab3[_0x31ba('0x98')];var _0x374f93=_0x347ab3[_0x31ba('0x1dd')]*0x3c;var _0x5cd45d=_0x346e74[0x0][_0x31ba('0x6d')]+_0x346e74[0x0][_0x31ba('0x71')];var _0x4f7aa9=(_0x346e74[0x0][_0x31ba('0x66')]+_0x346e74[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x346e74[0x0][_0x31ba('0x6a')])/_0x346e74[0x0][_0x31ba('0x64')];_0x347ab3[_0x31ba('0x1ec')]=_0x4f7aa9>0x0?_0x4f7aa9:0x1;switch(_0x347ab3[_0x31ba('0x1de')]){case _0x31ba('0x1e1'):var _0x3b1d0d=_0x347ab3['dialPredictiveOptimizationPercentage']/0x64;return _0x3af194[_0x31ba('0x1ed')](_0x3d9dd3,_0x374f93,_0x5cd45d,_0x4f7aa9,_0x3b1d0d)['then'](function(_0x3482cf){return _0x1f6023(_0x3482cf);});case'agentBusyFactor':var _0x5718d0=_0x347ab3['dialPredictiveOptimizationPercentage']/0x64;return _0x3af194[_0x31ba('0x1ee')](_0x3d9dd3,_0x374f93,_0x5cd45d,_0x4f7aa9,_0x5718d0)[_0x31ba('0xaf')](function(_0x5786b8){return _0x1f6023(_0x5786b8);});default:return _0x41d66c(msgResponse('[getDataPredictive]',_0x31ba('0x142'),_0x31ba('0x1ef')));}}else{return _0x41d66c(msgResponse(_0x31ba('0x1f0'),'Failure',_0x31ba('0x1f1')));}});};};Dialer['prototype'][_0x31ba('0x1f2')]=function(_0x1e240d){var _0x2c5dab=this;return function(_0x284a7b){return new Promise(function(_0x1e2c0e,_0x287beb){_[_0x31ba('0x7b')](_0x1e240d,_0x284a7b[0x0]);if(checkGetDataPredictive(_0x284a7b[0x0])){loggerPredictive[_0x31ba('0x61')](JSON[_0x31ba('0x54')](_0x284a7b[0x0]));if(_0x1e240d['dialPredictiveOptimization']===_0x31ba('0x1e1')){return _0x2c5dab[_0x31ba('0xc3')](_0x1e240d['id'])['then'](function(_0x26059d){var _0x10f4a6=_0x1e240d[_0x31ba('0x15f')]-_0x26059d[0x0][_0x31ba('0x1f3')];var _0x4215ec=_0x1e240d[_0x31ba('0x1dd')]*0x3c;var _0x16ed4a=_0x284a7b[0x0][_0x31ba('0x6d')]+_0x284a7b[0x0][_0x31ba('0x71')];var _0x5e91ce=(_0x284a7b[0x0][_0x31ba('0x66')]+_0x284a7b[0x0][_0x31ba('0x68')]+_0x284a7b[0x0][_0x31ba('0x6a')])/_0x284a7b[0x0]['predictiveIntervalTotalCalls'];var _0x579e8f=_0x1e240d[_0x31ba('0x1d5')]/0x64;_0x1e240d['predictiveIntervalPauses']=_0x26059d[0x0][_0x31ba('0x1f3')]||0x0;_0x1e240d[_0x31ba('0x1ec')]=_0x5e91ce>0x0?_0x5e91ce:0x1;return _0x2c5dab['abandonmentRate'](_0x10f4a6,_0x4215ec,_0x16ed4a,_0x5e91ce,_0x579e8f);})[_0x31ba('0xaf')](function(_0x155d1f){return _0x1e2c0e(_0x155d1f);})[_0x31ba('0xb2')](function(_0x570f19){return _0x287beb(msgResponse(_0x31ba('0x1f4'),_0x31ba('0x142'),JSON[_0x31ba('0x54')](_0x570f19)));});}if(_0x1e240d['dialPredictiveOptimization']===_0x31ba('0x1f5')){return _0x2c5dab['getVoiceQueueRtPauses'](_0x1e240d['id'])[_0x31ba('0xaf')](function(_0x241f18){var _0x53c535=_0x1e240d[_0x31ba('0x15f')]-_0x241f18[0x0][_0x31ba('0x1f3')];var _0x116435=_0x1e240d[_0x31ba('0x1dd')]*0x3c;var _0x4c0b1b=_0x284a7b[0x0][_0x31ba('0x6d')]+_0x284a7b[0x0][_0x31ba('0x71')];var _0x3bafa4=(_0x284a7b[0x0]['predictiveIntervalAnsweredCalls']+_0x284a7b[0x0][_0x31ba('0x68')]+_0x284a7b[0x0][_0x31ba('0x6a')])/_0x284a7b[0x0][_0x31ba('0x64')];var _0x445357=_0x1e240d[_0x31ba('0x1d5')]/0x64;_0x1e240d[_0x31ba('0x1f6')]=_0x241f18[0x0][_0x31ba('0x1f3')]||0x0;_0x1e240d[_0x31ba('0x1ec')]=_0x3bafa4>0x0?_0x3bafa4:0x1;return _0x2c5dab[_0x31ba('0x1ee')](_0x53c535,_0x116435,_0x4c0b1b,_0x3bafa4,_0x445357);})['then'](function(_0xe48b1a){return _0x1e2c0e(_0xe48b1a);})[_0x31ba('0xb2')](function(_0x53e69f){return _0x287beb(msgResponse(_0x31ba('0x1f4'),'Failure',JSON[_0x31ba('0x54')](_0x53e69f)));});}}else{return _0x287beb(msgResponse(_0x31ba('0x1f0'),_0x31ba('0x142'),_0x31ba('0x1f1')));}});};};Dialer[_0x31ba('0x20')][_0x31ba('0x1e8')]=function(_0x132fc3){var _0x13b1b4=this;return function(){var _0x1d471c=0x0;var _0x5d4fdf=Math[_0x31ba('0x1f7')](_0x132fc3['erlangCallToSecond']*0x3e8);if(_0x5d4fdf>0x0){_0x5d4fdf=_0x5d4fdf<0x64?0x64:_0x5d4fdf;loggerPredictive[_0x31ba('0x61')](_0x132fc3[_0x31ba('0x5f')],_0x31ba('0x1f8'),_0x5d4fdf,_0x31ba('0x55'));_0x132fc3[_0x31ba('0x80')]=setInterval(function(){_0x13b1b4['handlePredictive'](_0x132fc3);loggerPredictiveCalls['info'](_0x31ba('0x1f9'),_0x1d471c+=0x1);},_0x5d4fdf);}else{loggerPredictive[_0x31ba('0x61')](_0x132fc3[_0x31ba('0x5f')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0x31ba('0x20')][_0x31ba('0x1fa')]=function(_0x1865ac,_0x3e84f3){var _0x34173a=this;return function(_0x1bd1dc){if(_[_0x31ba('0x50')](_0x1bd1dc)){if(_[_0x31ba('0xa5')](_0x3e84f3['UserId'])||!_0x3e84f3[_0x31ba('0x1fb')]){if(_0x1865ac[_0x31ba('0x155')]==='booked'){_0x1865ac[_0x31ba('0x12d')]=_['isUndefined'](_0x1865ac['queueStatusComplete'])?!![]:_0x1865ac['queueStatusComplete'];var _0x5dda9a=uuid['v4']();_0x34173a['actions'][_0x5dda9a]=new Action(_0x1865ac,_0x3e84f3,_0x5dda9a);loggerBooked[_0x31ba('0x61')](_0x31ba('0x1fc'),_0x5dda9a,_0x31ba('0x1fd'),JSON[_0x31ba('0x54')](_0x1865ac[_0x31ba('0x12d')]),_0x31ba('0x1fe'),_0x1865ac[_0x31ba('0x5f')]);if(_0x1865ac[_0x31ba('0x12d')]){_0x1865ac[_0x31ba('0x12d')]=![];_0x34173a['queueBooked'][_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xa9')]]=[];ami[_0x31ba('0xa6')]({'actionid':_0x5dda9a,'action':_0x31ba('0x1ff'),'queue':_0x1865ac[_0x31ba('0x5f')]})['catch'](function(){_0x34173a[_0x31ba('0xa8')](_0x1865ac);_0x34173a['rescheduleContact']({'active':![],'ContactId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a]['ContactId'],'ListId':_0x34173a['actions'][_0x5dda9a][_0x31ba('0xce')],'VoiceQueueId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xd0')]||undefined,'CampaignId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0x200')));delete _0x34173a[_0x31ba('0x2a')][_0x5dda9a];});}else{loggerBooked['info'](_0x31ba('0x201'),JSON['stringify'](_0x1865ac[_0x31ba('0x12d')]),_0x31ba('0x1fe'),_0x1865ac[_0x31ba('0x5f')]);_0x34173a[_0x31ba('0xa8')](_0x1865ac);_0x34173a[_0x31ba('0xba')]({'active':![],'ContactId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xcd')],'ListId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xce')],'VoiceQueueId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a]['VoiceQueueId']||undefined,'CampaignId':_0x34173a[_0x31ba('0x2a')][_0x5dda9a][_0x31ba('0xd1')]||undefined})[_0x31ba('0xb2')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x34173a[_0x31ba('0x2a')][_0x5dda9a];}}else{return _0x34173a[_0x31ba('0x175')](_0x1865ac,_0x3e84f3);}}else{if(getDiff(_0x3e84f3[_0x31ba('0x202')])<_0x1865ac['dialRecallMeTimeout']*0x3c){if(_0x3e84f3[_0x31ba('0x16b')]&&!_0x3e84f3[_0x31ba('0x16b')][_0x31ba('0x203')]){_0x34173a['preview'][_0x31ba('0x136')](_0x3e84f3['id'])[_0x31ba('0x22')](function(){_0x34173a[_0x31ba('0xa8')](_0x1865ac);});}else{_0x34173a[_0x31ba('0xbc')]({'active':![]},_0x3e84f3['id'],0x1)[_0x31ba('0x22')](function(){_0x34173a[_0x31ba('0xa8')](_0x1865ac);});}}else{_0x1865ac['outboundReCallsDay']+=0x1;_0x34173a['updateOriginated'](_0x1865ac);if(_0x1865ac[_0x31ba('0x204')]){_0x34173a[_0x31ba('0xba')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3e84f3[_0x31ba('0xcd')],'ListId':_0x3e84f3['ListId'],'VoiceQueueId':_0x3e84f3[_0x31ba('0xd0')]||undefined,'CampaignId':_0x3e84f3[_0x31ba('0xd1')]||undefined})['catch'](loggerCatch(_0x31ba('0x205')));_0x34173a['createHistory'](createObjHistory(_0x1865ac,_0x3e84f3,_0x31ba('0x206'),0x17,'RecallInQueue'))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0x207')));}else{_0x34173a[_0x31ba('0xfd')](createObjHistory(_0x1865ac,_0x3e84f3,_0x31ba('0x208'),0x16,'RecallFailedTimeout'),_0x31ba('0x209'),_0x31ba('0x20a'));}}}}else{_0x1865ac['outboundBlacklistCallsDay']+=0x1;_0x34173a[_0x31ba('0xfd')](createObjHistory(_0x1865ac,_0x3e84f3,_0x31ba('0x20b'),0xd,'Blacklist'),_0x31ba('0x20c'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer[_0x31ba('0x20')]['handleIvr']=function(_0x1a9a19){var _0x43d788=this;var _0x4e08ac=_0x1a9a19[_0x31ba('0x20d')]-_0x1a9a19['originated']-_0x1a9a19[_0x31ba('0xbf')];emitCampaignSummary(_0x1a9a19);if(_0x4e08ac>0x0){if(_0x4e08ac>this[_0x31ba('0x28')]){_0x4e08ac=this[_0x31ba('0x28')];}_0x1a9a19[_0x31ba('0xbf')]+=_0x4e08ac;this[_0x31ba('0xc1')](_0x1a9a19['id'],_0x4e08ac,_0x1a9a19[_0x31ba('0x20e')],_0x1a9a19)[_0x31ba('0xaf')](function(_0x38b12a){_0x1a9a19['temp']-=_0x4e08ac;_0x1a9a19[_0x31ba('0xbf')]=_0x1a9a19[_0x31ba('0xbf')]>0x0?_0x1a9a19['temp']:0x0;if(!checkContactEmpty(_0x38b12a)){_0x1a9a19['message']=_0x31ba('0x93');logger[_0x31ba('0x61')](_0x31ba('0x20f')+_0x1a9a19['name']);}else{_0x1a9a19[_0x31ba('0x8b')]+=_0x38b12a[_0x31ba('0x8a')];_0x1a9a19['message']=_0x31ba('0x210');for(var _0x15632e=0x0;_0x15632e<_0x38b12a[_0x31ba('0x8a')];_0x15632e+=0x1){_0x1a9a19['ivrTotalCallsDays']+=0x1;if(_[_0x31ba('0xa5')](_0x38b12a[_0x15632e])||_[_0x31ba('0xa5')](_0x38b12a[_0x15632e][_0x31ba('0x18b')])||_['isNil'](_0x38b12a[_0x15632e][_0x31ba('0x195')])){_0x43d788[_0x31ba('0x211')]('[actionOriginate]\x20',_0x1a9a19,_0x38b12a[_0x15632e]);}else{_0x43d788[_0x31ba('0xb5')](_['pick'](_0x38b12a[_0x15632e],['CampaignId',_0x31ba('0x195')]))[_0x31ba('0xaf')](_0x43d788[_0x31ba('0x1fa')](_0x1a9a19,_0x38b12a[_0x15632e]))[_0x31ba('0xb2')](_0x43d788[_0x31ba('0xcb')](_0x31ba('0x212'),_0x1a9a19));}}}})['catch'](loggerGetContactDialer(_0x31ba('0x213'),_0x1a9a19,_0x4e08ac));}};Dialer[_0x31ba('0x20')][_0x31ba('0x156')]=function(_0x3f5c40,_0x5e56be){var _0x17b3e7=this;var _0xa0ddf7=[];var _0x1493ef=_0x5e56be>=0x1?_0x5e56be:0x1;if(_0x3f5c40[_0x31ba('0x155')]===_0x31ba('0x214')){_0x1493ef=0x1;}var _0x2a05a1=Math[_0x31ba('0x1f7')](_0x3f5c40[_0x31ba('0x98')]*_0x1493ef)-_0x3f5c40[_0x31ba('0x8b')]-_0x3f5c40[_0x31ba('0xbf')];emitVoiceQueueSummary(_0x3f5c40);if(_0x3f5c40[_0x31ba('0x215')]>0x0){var _0x15ab3f=_0x3f5c40[_0x31ba('0x215')]-_0x3f5c40['originated']-_0x3f5c40['talking']-_0x3f5c40['temp']-_0x3f5c40[_0x31ba('0x96')];if(_0x2a05a1>_0x15ab3f){_0x2a05a1=_0x15ab3f;}}if(_0x2a05a1>0x0){if(_0x3f5c40['dialMethod']===_0x31ba('0x214')){_0x2a05a1=0x1;}if(_0x2a05a1>this[_0x31ba('0x28')]){_0x2a05a1=this['maxNumberOriginate'];}_0x3f5c40[_0x31ba('0xbf')]+=_0x2a05a1;for(var _0x3f46fa in this[_0x31ba('0x26')]){if(typeof this[_0x31ba('0x26')][_0x3f46fa]!=='undefined'){if(this[_0x31ba('0x26')][_0x3f46fa][_0x31ba('0x9e')]===_0x31ba('0x216')&&this[_0x31ba('0x26')][_0x3f46fa][_0x31ba('0xd6')]===_0x31ba('0xd7')){_0xa0ddf7[_0x31ba('0x147')](this[_0x31ba('0x26')][_0x3f46fa]['id']);}}}this[_0x31ba('0xbe')](_0x3f5c40['id'],_0xa0ddf7,_0x2a05a1,_0x3f5c40[_0x31ba('0x20e')],_0x3f5c40)['then'](function(_0x82edd3){_0x3f5c40[_0x31ba('0xbf')]-=_0x2a05a1;_0x3f5c40[_0x31ba('0xbf')]=_0x3f5c40[_0x31ba('0xbf')]>0x0?_0x3f5c40[_0x31ba('0xbf')]:0x0;if(!checkContactEmpty(_0x82edd3)){_0x17b3e7[_0x31ba('0xab')](_0x3f5c40)[_0x31ba('0xaf')](sendMessageReschedule(_0x3f5c40))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xac')));}else{_0x3f5c40[_0x31ba('0x8b')]+=_0x82edd3[_0x31ba('0x8a')];_0x3f5c40[_0x31ba('0x4a')]=_0x3f5c40[_0x31ba('0x155')]===_0x31ba('0x214')?'ACTIVE':_0x31ba('0x210');for(var _0x38030c=0x0;_0x38030c<_0x82edd3['length'];_0x38030c+=0x1){if(_['isNil'](_0x82edd3[_0x38030c])||_[_0x31ba('0xa5')](_0x82edd3[_0x38030c][_0x31ba('0x18b')])||_['isNil'](_0x82edd3[_0x38030c]['phone'])){_0x17b3e7[_0x31ba('0x211')](_0x31ba('0x217'),_0x3f5c40,_0x82edd3[_0x38030c]);}else{_0x17b3e7[_0x31ba('0xad')](_[_0x31ba('0xcc')](_0x82edd3[_0x38030c],[_0x31ba('0xd0'),_0x31ba('0x195')]))[_0x31ba('0xaf')](_0x17b3e7[_0x31ba('0x1fa')](_0x3f5c40,_0x82edd3[_0x38030c]))['catch'](_0x17b3e7[_0x31ba('0xcb')](_0x31ba('0x217'),_0x3f5c40));}}}})[_0x31ba('0xb2')](loggerGetContactDialer('[getContactDialer2]',_0x3f5c40,_0x2a05a1));}};Dialer['prototype'][_0x31ba('0x80')]=function(_0xdddad5){if(_0xdddad5[_0x31ba('0x215')]>0x0){var _0xb06987=_0xdddad5['dialLimitQueue']-_0xdddad5[_0x31ba('0x8b')]-_0xdddad5['talking'];if(_0xb06987>0x0){this[_0x31ba('0x218')](_0xdddad5);}else{loggerPredictiveCalls[_0x31ba('0x61')](_0x31ba('0x219'));}}else{this[_0x31ba('0x218')](_0xdddad5);}};Dialer['prototype'][_0x31ba('0x218')]=function(_0x3dd4a){var _0x4bbe5a=this;var _0x4f0b72=[];_0x3dd4a[_0x31ba('0x8b')]+=0x1;for(var _0x2eeaf0 in this[_0x31ba('0x26')]){if(typeof this[_0x31ba('0x26')][_0x2eeaf0]!==_0x31ba('0x8c')){if(this[_0x31ba('0x26')][_0x2eeaf0][_0x31ba('0x9e')]===_0x31ba('0x216')&&this[_0x31ba('0x26')][_0x2eeaf0]['status']===_0x31ba('0xd7')){_0x4f0b72[_0x31ba('0x147')](this['agents'][_0x2eeaf0]['id']);}}}this['getContactDialer'](_0x3dd4a['id'],_0x4f0b72,0x1,_0x3dd4a['dialOrderByScheduledAt'],_0x3dd4a)['then'](function(_0x2e8489){if(!checkContactEmpty(_0x2e8489)){checkContactLowerLimitOriginate(_0x3dd4a,0x1,0x0);_0x4bbe5a['countReScheduled'](_0x3dd4a)[_0x31ba('0xaf')](sendMessageReschedule(_0x3dd4a))[_0x31ba('0xb2')](loggerCatch(_0x31ba('0xac')));}else{_0x3dd4a[_0x31ba('0x4a')]=_0x31ba('0x210');if(_[_0x31ba('0xa5')](_0x2e8489[0x0])||_[_0x31ba('0xa5')](_0x2e8489[0x0][_0x31ba('0x18b')])||_[_0x31ba('0xa5')](_0x2e8489[0x0]['phone'])){_0x4bbe5a[_0x31ba('0x211')](_0x31ba('0x217'),_0x3dd4a,_0x2e8489[0x0]);}else{_0x4bbe5a[_0x31ba('0xad')](_[_0x31ba('0xcc')](_0x2e8489[0x0],[_0x31ba('0xd0'),_0x31ba('0x195')]))[_0x31ba('0xaf')](_0x4bbe5a['checkContactBlack'](_0x3dd4a,_0x2e8489[0x0]))[_0x31ba('0xb2')](_0x4bbe5a[_0x31ba('0xcb')](_0x31ba('0x21a'),_0x3dd4a));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x3dd4a,0x1));emitVoiceQueueSummary(_0x3dd4a);};Dialer[_0x31ba('0x20')][_0x31ba('0x1ed')]=function(_0x296630,_0x4b9d26,_0x4d89d5,_0x4b4cb1,_0x38e8a5,_0x2c4638){loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21b'));loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21c'),_0x296630);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21d'),_0x4b9d26);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21e'),_0x4d89d5);loggerPredictive[_0x31ba('0x61')]('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',_0x4b4cb1);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21f'),_0x38e8a5);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x6e'));return new Promise(function(_0xd927d8,_0x204bb1){if(_0x296630<=0x0||isNaN(_0x296630)){return _0x204bb1(msgResponse(_0x31ba('0x220'),_0x31ba('0x53'),'m\x20=\x20'+_0x296630));}if(_0x4d89d5<=0x0||isNaN(_0x4d89d5)){return _0x204bb1(msgResponse(_0x31ba('0x220'),'Error',_0x31ba('0x221')+_0x4d89d5));}if(_0x4b4cb1<=0x0||isNaN(_0x4b4cb1)){return _0x204bb1(msgResponse(_0x31ba('0x220'),_0x31ba('0x53'),_0x31ba('0x222')+_0x4b4cb1));}if(_0x4b9d26<=0x0||isNaN(_0x4b9d26)){return _0x204bb1(msgResponse(_0x31ba('0x220'),_0x31ba('0x53'),_0x31ba('0x223')+_0x4b9d26));}if(_0x38e8a5<=0x0||isNaN(_0x38e8a5)){return _0x204bb1(msgResponse('[abandonmentRate]',_0x31ba('0x53'),_0x31ba('0x224')+_0x38e8a5));}_0x2c4638=_0x2c4638||0x0;var _0x4af2fd=0x1/_0x4d89d5;var _0x55f1de=0x0;var _0x8231c9=0x0;var _0x5cff10=0x0;var _0xb3a45=0x0;for(var _0x44fd9c=0x0;_0x5cff10<_0x38e8a5;_0x44fd9c+=0x1){_0x8231c9=_0x44fd9c/_0x4b9d26;_0x55f1de=(_0x4b4cb1*_0x8231c9+_0x2c4638)/_0x4af2fd;_0x5cff10=erlangb(_0x55f1de,_0x296630);_0xb3a45=_0x55f1de/_0x296630*(0x1-erlangb(_0x55f1de,_0x296630));}return _0xd927d8({'erlangCalls':_0x44fd9c,'erlangCallToSecond':_0x4b9d26/_0x44fd9c,'erlangAbandonmentRate':_0x5cff10,'erlangBusyFactor':_0xb3a45});});};Dialer[_0x31ba('0x20')][_0x31ba('0x1ee')]=function(_0x9d367b,_0x2a51e1,_0x26cc50,_0x329f00,_0x4ea51d,_0x3add10){loggerPredictive[_0x31ba('0x61')](_0x31ba('0x225'));loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21c'),_0x9d367b);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21d'),_0x2a51e1);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x21e'),_0x26cc50);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x226'),_0x329f00);loggerPredictive['info'](_0x31ba('0x227'),_0x4ea51d);loggerPredictive[_0x31ba('0x61')](_0x31ba('0x6e'));return new Promise(function(_0x1dcb78,_0x431cf4){if(_0x9d367b<=0x0||isNaN(_0x9d367b)){return _0x431cf4(msgResponse(_0x31ba('0x228'),_0x31ba('0x53'),_0x31ba('0x229')+_0x9d367b));}if(_0x26cc50<=0x0||isNaN(_0x26cc50)){return _0x431cf4(msgResponse('[busyFactor]',_0x31ba('0x53'),'Ts\x20=\x20'+_0x26cc50));}if(_0x329f00<=0x0||isNaN(_0x329f00)){return _0x431cf4(msgResponse('[busyFactor]','Error',_0x31ba('0x222')+_0x329f00));}if(_0x2a51e1<=0x0||isNaN(_0x2a51e1)){return _0x431cf4(msgResponse(_0x31ba('0x228'),_0x31ba('0x53'),_0x31ba('0x223')+_0x2a51e1));}if(_0x4ea51d<=0x0||isNaN(_0x4ea51d)){return _0x431cf4(msgResponse(_0x31ba('0x228'),_0x31ba('0x53'),'Umin\x20=\x20'+_0x4ea51d));}_0x3add10=_0x3add10||0x0;var _0x44144a=0x1/_0x26cc50;var _0xa50428=0x0;var _0x5dd6db=0x0;var _0x44d4f8=0x0;var _0x5edc35=0x0;for(var _0x56c8f0=0x0;_0x5edc35<_0x4ea51d;_0x56c8f0+=0x1){_0x5dd6db=_0x56c8f0/_0x2a51e1;_0xa50428=(_0x329f00*_0x5dd6db+_0x3add10)/_0x44144a;_0x44d4f8=erlangb(_0xa50428,_0x9d367b);_0x5edc35=_0xa50428/_0x9d367b*(0x1-erlangb(_0xa50428,_0x9d367b));}return _0x1dcb78({'erlangCalls':_0x56c8f0,'erlangCallToSecond':_0x2a51e1/_0x56c8f0,'erlangAbandonmentRate':_0x44d4f8,'erlangBusyFactor':_0x5edc35});});};module[_0x31ba('0x22a')]=Dialer;
\ No newline at end of file
index 9507e8c..f511c09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb87=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridnum','starttime','responsetime','droptime','endtime','holdtime','membername','connectedlinename','reason','callback','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x478a4a,_0x197493){var _0x353441=function(_0x3c58f9){while(--_0x3c58f9){_0x478a4a['push'](_0x478a4a['shift']());}};_0x353441(++_0x197493);}(_0xdb87,0x11d));var _0x7db8=function(_0x2e507e,_0x2e5fcd){_0x2e507e=_0x2e507e-0x0;var _0x2948eb=_0xdb87[_0x2e507e];return _0x2948eb;};'use strict';var util=require(_0x7db8('0x0'));var _=require('lodash');var moment=require(_0x7db8('0x1'));function getSeconds(_0x1082a2,_0x12a3c8){var _0x244fe1=moment(_0x1082a2)['milliseconds'](0x0);var _0x1a0b85=moment(_0x12a3c8)[_0x7db8('0x2')](0x0);return _0x244fe1[_0x7db8('0x3')](_0x1a0b85,_0x7db8('0x4'));}function QueueCallerAbandon(_0x1e76da,_0x2d061e){this[_0x7db8('0x5')]=_0x1e76da[_0x7db8('0x5')];this[_0x7db8('0x6')]=_0x1e76da[_0x7db8('0x6')];this[_0x7db8('0x7')]=_0x1e76da[_0x7db8('0x6')]===_0x7db8('0x8')?_0x7db8('0x9'):_0x1e76da[_0x7db8('0x6')];this['countbusyretry']=_0x1e76da[_0x7db8('0xa')];this[_0x7db8('0xb')]=_0x1e76da[_0x7db8('0xb')];this['countnoanswerretry']=_0x1e76da[_0x7db8('0xc')];this[_0x7db8('0xd')]=_0x1e76da[_0x7db8('0xa')]+_0x1e76da[_0x7db8('0xb')]+_0x1e76da['countnoanswerretry']+_0x1e76da[_0x7db8('0xe')]+_0x1e76da['countdropretry']+_0x1e76da[_0x7db8('0xf')]+_0x1e76da[_0x7db8('0x10')]+_0x1e76da[_0x7db8('0x11')];this[_0x7db8('0xe')]=_0x1e76da[_0x7db8('0xe')];this[_0x7db8('0x12')]=_0x1e76da['countdropretry'];this['countabandonedretry']=_0x1e76da['countabandonedretry'];this['countmachineretry']=_0x1e76da['countmachineretry'];this[_0x7db8('0x11')]=_0x1e76da['countagentrejectretry'];this[_0x7db8('0x13')]=_0x2d061e['uniqueid'];this['calleridname']=_0x1e76da['name'];this[_0x7db8('0x14')]=_0x1e76da['number'];this[_0x7db8('0x15')]=_0x1e76da[_0x7db8('0x15')];this['responsetime']=_0x1e76da[_0x7db8('0x16')];this[_0x7db8('0x17')]=_0x1e76da['droptime'];this[_0x7db8('0x18')]=this['droptime'];this['ringtime']=getSeconds(_0x1e76da['responsetime'],_0x1e76da[_0x7db8('0x15')]);this[_0x7db8('0x19')]=getSeconds(this[_0x7db8('0x17')],_0x1e76da['responsetime']);this['talktime']=0x0;this[_0x7db8('0x9')]=_0x2d061e['queue'];this[_0x7db8('0x1a')]=_0x2d061e[_0x7db8('0x1b')];this[_0x7db8('0x1c')]=_0x2d061e[_0x7db8('0x1c')];this[_0x7db8('0x1d')]=_0x1e76da['callback'];this['callbackuniqueid']=_0x1e76da['callbackuniqueid'];this[_0x7db8('0x1e')]=_0x1e76da[_0x7db8('0x1e')];this['recallme']=_0x1e76da[_0x7db8('0x1f')];this[_0x7db8('0x20')]=_0x1e76da[_0x7db8('0x20')];this[_0x7db8('0x21')]=_0x1e76da[_0x7db8('0x21')];this[_0x7db8('0x22')]=_0x1e76da[_0x7db8('0x22')];this[_0x7db8('0x23')]=_0x1e76da['VoiceQueueId'];this['CampaignId']=_0x1e76da[_0x7db8('0x24')];this['originatecalleridnum']=_0x1e76da[_0x7db8('0x25')]||'';this[_0x7db8('0x26')]=_0x1e76da[_0x7db8('0x26')]||'';}module[_0x7db8('0x27')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x6d58=['originatecalleridnum','originatecalleridname','state','statedesc','exports','milliseconds','diff','seconds','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','dropreason','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x9d39e9,_0x3aebc9){var _0x4ac75b=function(_0x25bb25){while(--_0x25bb25){_0x9d39e9['push'](_0x9d39e9['shift']());}};_0x4ac75b(++_0x3aebc9);}(_0x6d58,0xb9));var _0x86d5=function(_0x19507b,_0x1d56cd){_0x19507b=_0x19507b-0x0;var _0x3b47de=_0x6d58[_0x19507b];return _0x3b47de;};'use strict';var moment=require('moment');function getSeconds(_0x3e3ae6,_0x5aa5c3){var _0x145ec5=moment(_0x3e3ae6)['milliseconds'](0x0);var _0x190491=moment(_0x5aa5c3)[_0x86d5('0x0')](0x0);return _0x145ec5[_0x86d5('0x1')](_0x190491,_0x86d5('0x2'));}function QueueCallerAbandon(_0x34caff,_0x4508f1){this[_0x86d5('0x3')]=_0x34caff['scheduledat'];this[_0x86d5('0x4')]=_0x34caff[_0x86d5('0x4')];this['campaigntype']=_0x34caff['type']===_0x86d5('0x5')?_0x86d5('0x6'):_0x34caff[_0x86d5('0x4')];this['countbusyretry']=_0x34caff[_0x86d5('0x7')];this[_0x86d5('0x8')]=_0x34caff[_0x86d5('0x8')];this[_0x86d5('0x9')]=_0x34caff[_0x86d5('0x9')];this[_0x86d5('0xa')]=_0x34caff[_0x86d5('0x7')]+_0x34caff[_0x86d5('0x8')]+_0x34caff[_0x86d5('0x9')]+_0x34caff['countnosuchnumberretry']+_0x34caff[_0x86d5('0xb')]+_0x34caff[_0x86d5('0xc')]+_0x34caff[_0x86d5('0xd')]+_0x34caff[_0x86d5('0xe')];this[_0x86d5('0xf')]=_0x34caff[_0x86d5('0xf')];this[_0x86d5('0xb')]=_0x34caff[_0x86d5('0xb')];this[_0x86d5('0xc')]=_0x34caff[_0x86d5('0xc')];this[_0x86d5('0xd')]=_0x34caff[_0x86d5('0xd')];this['countagentrejectretry']=_0x34caff[_0x86d5('0xe')];this['uniqueid']=_0x4508f1[_0x86d5('0x10')];this[_0x86d5('0x11')]=_0x34caff[_0x86d5('0x12')];this[_0x86d5('0x13')]=_0x34caff[_0x86d5('0x14')];this[_0x86d5('0x15')]=_0x34caff[_0x86d5('0x15')];this[_0x86d5('0x16')]=_0x34caff['responsetime'];this[_0x86d5('0x17')]=_0x34caff[_0x86d5('0x17')];this[_0x86d5('0x18')]=_0x34caff[_0x86d5('0x18')];this['endtime']=this['droptime'];this[_0x86d5('0x19')]=getSeconds(_0x34caff['responsetime'],_0x34caff[_0x86d5('0x15')]);this[_0x86d5('0x1a')]=getSeconds(this[_0x86d5('0x17')],_0x34caff[_0x86d5('0x16')]);this[_0x86d5('0x1b')]=0x0;this[_0x86d5('0x6')]=_0x4508f1[_0x86d5('0x6')];this[_0x86d5('0x1c')]=_0x4508f1[_0x86d5('0x1d')];this[_0x86d5('0x1e')]=_0x4508f1[_0x86d5('0x1e')];this[_0x86d5('0x1f')]=_0x34caff[_0x86d5('0x1f')];this[_0x86d5('0x20')]=_0x34caff[_0x86d5('0x20')];this[_0x86d5('0x21')]=_0x34caff[_0x86d5('0x21')];this['recallme']=_0x34caff[_0x86d5('0x22')];this[_0x86d5('0x23')]=_0x34caff[_0x86d5('0x23')];this[_0x86d5('0x24')]=_0x34caff[_0x86d5('0x24')];this[_0x86d5('0x25')]=_0x34caff[_0x86d5('0x25')];this['VoiceQueueId']=_0x34caff[_0x86d5('0x26')];this[_0x86d5('0x27')]=_0x34caff[_0x86d5('0x27')];this['originatecalleridnum']=_0x34caff[_0x86d5('0x28')]||'';this[_0x86d5('0x29')]=_0x34caff[_0x86d5('0x29')]||'';this['agiafterat']=_0x34caff['agiafterat'];this[_0x86d5('0x2a')]=_0x34caff[_0x86d5('0x2a')];this[_0x86d5('0x2b')]=_0x34caff['statedesc'];}module[_0x86d5('0x2c')]=QueueCallerAbandon;
\ No newline at end of file
index b79b47c..758b707 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(_0x2787c3,_0x58223f){var _0x5664be=function(_0xa374fa){while(--_0xa374fa){_0x2787c3['push'](_0x2787c3['shift']());}};_0x5664be(++_0x58223f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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(_0x4dc37e,_0x5f134d){var _0x30fe1e=function(_0xbe764c){while(--_0xbe764c){_0x4dc37e['push'](_0x4dc37e['shift']());}};_0x30fe1e(++_0x5f134d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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 2386730..f2ff809 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf927=['uuid','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/attachment','../rpc/faxMessage','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','newstate','newexten','syncNewExten','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','from-voip-provider','hasOwnProperty','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','response','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','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','execOriginate','addVariables','ext','.pdf','isTrunkReachable','isNil','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Is\x20Valid','util','lodash','bluebird'];(function(_0x492700,_0x3a0e74){var _0x1a33d5=function(_0x1111d2){while(--_0x1111d2){_0x492700['push'](_0x492700['shift']());}};_0x1a33d5(++_0x3a0e74);}(_0xf927,0x15c));var _0x7f92=function(_0x19ef92,_0x3a0d23){_0x19ef92=_0x19ef92-0x0;var _0x4cf7c4=_0xf927[_0x19ef92];return _0x4cf7c4;};'use strict';var util=require(_0x7f92('0x0'));var _=require(_0x7f92('0x1'));var BPromise=require(_0x7f92('0x2'));var uuid=require(_0x7f92('0x3'));var moment=require(_0x7f92('0x4'));var path=require(_0x7f92('0x5'));var tiff2pdf=require(_0x7f92('0x6'));var gs=require('./util/gs');var logger=require(_0x7f92('0x7'))(_0x7f92('0x8'));var ami=require(_0x7f92('0x9'));var rpcDb=require(_0x7f92('0xa'));var Channel=require(_0x7f92('0xb'));var ut=require(_0x7f92('0xc'));var Action=require(_0x7f92('0xd'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x7f92('0xe'));var faxMessage=require(_0x7f92('0xf'));function Fax(_0x1c280e){this['channels']={};this['faxAccounts']=_0x1c280e[_0x7f92('0x10')];this[_0x7f92('0x11')]=_0x1c280e['trunks'];this[_0x7f92('0x12')]={};ami['on'](_0x7f92('0x13'),this[_0x7f92('0x14')][_0x7f92('0x15')](this));ami['on'](_0x7f92('0x16'),this['syncVarSet']['bind'](this));ami['on'](_0x7f92('0x17'),this['syncNewState'][_0x7f92('0x15')](this));ami['on'](_0x7f92('0x18'),this[_0x7f92('0x19')][_0x7f92('0x15')](this));ami['on']('faxstatus',this['syncFaxStatus']['bind'](this));ami['on'](_0x7f92('0x1a'),this[_0x7f92('0x1b')][_0x7f92('0x15')](this));ami['on'](_0x7f92('0x1c'),this['syncHangup'][_0x7f92('0x15')](this));ami['on'](_0x7f92('0x1d'),this[_0x7f92('0x1e')][_0x7f92('0x15')](this));}Fax[_0x7f92('0x1f')][_0x7f92('0x14')]=function(_0xabc9b1){if(_0xabc9b1['context']===_0x7f92('0x20')){for(var _0x5eab36 in this[_0x7f92('0x10')]){if(this[_0x7f92('0x10')][_0x7f92('0x21')](_0x5eab36)){if(_0xabc9b1['exten']===this[_0x7f92('0x10')][_0x5eab36][_0x7f92('0x22')]){this[_0x7f92('0x23')][_0xabc9b1['uniqueid']]={};this[_0x7f92('0x23')][_0xabc9b1[_0x7f92('0x24')]][_0x7f92('0x25')]=_0xabc9b1[_0x7f92('0x25')];this[_0x7f92('0x23')][_0xabc9b1[_0x7f92('0x24')]]['id']=this[_0x7f92('0x10')][_0x5eab36]['id'];this[_0x7f92('0x23')][_0xabc9b1['uniqueid']][_0x7f92('0x26')]=this[_0x7f92('0x10')][_0x5eab36]['name'];logger[_0x7f92('0x27')](_0xabc9b1[_0x7f92('0x24')],_0x7f92('0x28'));}}}}if(this[_0x7f92('0x12')][_0xabc9b1[_0x7f92('0x24')]]){this['channels'][_0xabc9b1['uniqueid']]={};this['channels'][_0xabc9b1[_0x7f92('0x24')]][_0x7f92('0x25')]=_0xabc9b1['channel'];logger['info'](_0xabc9b1[_0x7f92('0x24')],_0x7f92('0x28'));}};Fax[_0x7f92('0x1f')]['syncVarSet']=function(_0x5d63ca){if(this[_0x7f92('0x23')][_0x5d63ca['uniqueid']]){for(var _0x3296a1 in _0x5d63ca[_0x7f92('0x29')]){if(_0x5d63ca[_0x7f92('0x29')][_0x7f92('0x21')](_0x3296a1)){this[_0x7f92('0x23')][_0x5d63ca[_0x7f92('0x24')]][_0x3296a1]=_0x5d63ca[_0x7f92('0x2a')];}}}};Fax[_0x7f92('0x1f')][_0x7f92('0x2b')]=function(_0x1a8f09){if(this[_0x7f92('0x23')][_0x1a8f09[_0x7f92('0x24')]]){this[_0x7f92('0x23')][_0x1a8f09[_0x7f92('0x24')]][_0x7f92('0x2c')]=_0x1a8f09['channelstate'];this['channels'][_0x1a8f09[_0x7f92('0x24')]][_0x7f92('0x2d')]=_0x1a8f09[_0x7f92('0x2d')];}};Fax[_0x7f92('0x1f')]['syncNewExten']=function(_0xf87b62){if(this['channels'][_0xf87b62['uniqueid']]){for(var _0x29d5cf in _0xf87b62[_0x7f92('0x29')]){if(_0xf87b62['variable'][_0x7f92('0x21')](_0x29d5cf)){this[_0x7f92('0x23')][_0xf87b62[_0x7f92('0x24')]][_0x29d5cf]=_0xf87b62['value'];}}}};Fax['prototype'][_0x7f92('0x2e')]=function(_0x48a3bf){if(this[_0x7f92('0x23')][_0x48a3bf[_0x7f92('0x24')]]){this[_0x7f92('0x23')][_0x48a3bf[_0x7f92('0x24')]][_0x7f92('0x2f')]=_0x48a3bf[_0x7f92('0x2f')];this['channels'][_0x48a3bf[_0x7f92('0x24')]]['status']=_0x48a3bf[_0x7f92('0x30')];this[_0x7f92('0x23')][_0x48a3bf[_0x7f92('0x24')]][_0x7f92('0x22')]=_0x48a3bf[_0x7f92('0x22')];this[_0x7f92('0x23')][_0x48a3bf[_0x7f92('0x24')]][_0x7f92('0x31')]=_0x48a3bf[_0x7f92('0x31')];logger[_0x7f92('0x27')](_0x48a3bf[_0x7f92('0x24')],_0x7f92('0x32'));}};Fax['prototype']['syncReceiveFax']=function(_0x10de25){var _0x4ab002=this;if(this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]]){var _0x32a014=this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]]['id'];this['channels'][_0x10de25[_0x7f92('0x24')]][_0x7f92('0x33')]=_0x10de25[_0x7f92('0x33')];this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]][_0x7f92('0x34')]=_0x10de25[_0x7f92('0x34')];this[_0x7f92('0x23')][_0x10de25['uniqueid']][_0x7f92('0x22')]=_0x10de25[_0x7f92('0x22')];this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]]['resolution']=_0x10de25[_0x7f92('0x35')];this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]][_0x7f92('0x36')]=_0x10de25[_0x7f92('0x36')];this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]][_0x7f92('0x31')]=_0x10de25[_0x7f92('0x31')];this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]][_0x7f92('0x37')]=_0x10de25[_0x7f92('0x37')];if(this[_0x7f92('0x23')][_0x10de25[_0x7f92('0x24')]]['pagestransferred']>0x0){tiff2pdf(_0x10de25['filename'],_0x7f92('0x38'),function(_0x248b6e){logger[_0x7f92('0x27')](_0x10de25[_0x7f92('0x24')],'\x20result\x20conversion\x20file\x20',_0x248b6e[_0x7f92('0x39')]);attachment[_0x7f92('0x3a')]({'name':path[_0x7f92('0x3b')](_0x10de25[_0x7f92('0x31')])[_0x7f92('0x26')],'basename':path['parse'](_0x10de25[_0x7f92('0x31')])['name']+'.pdf','type':_0x7f92('0x3c')})[_0x7f92('0x3d')](function(_0x351b98){faxAccount[_0x7f92('0x3e')](_0x32a014,{'from':_0x10de25[_0x7f92('0x37')],'mapKey':'fax','body':path[_0x7f92('0x3b')](_0x10de25[_0x7f92('0x31')])['name']+'.pdf','AttachmentId':_0x351b98['id']})[_0x7f92('0x3f')](function(_0x92363c){logger[_0x7f92('0x40')](_0x10de25[_0x7f92('0x24')],_0x7f92('0x41'),JSON[_0x7f92('0x42')](_0x92363c));});})[_0x7f92('0x3f')](function(_0x469843){logger[_0x7f92('0x40')](_0x10de25[_0x7f92('0x24')],_0x7f92('0x43'),JSON[_0x7f92('0x42')](_0x469843));});});}logger[_0x7f92('0x27')](_0x10de25[_0x7f92('0x24')],'\x20receiveFax\x20');}};Fax[_0x7f92('0x1f')][_0x7f92('0x1e')]=function(_0x4a4bd2){if(this[_0x7f92('0x12')][_0x4a4bd2[_0x7f92('0x24')]]){_[_0x7f92('0x44')](this['channels'][_0x4a4bd2['uniqueid']],_[_0x7f92('0x45')](_0x4a4bd2,[_0x7f92('0x46'),'reason']));}};function updateStatus(_0x5a4087){if(_0x5a4087[_0x7f92('0x47')]){faxMessage['update'](_0x5a4087[_0x7f92('0x47')],{'failMessage':_0x7f92('0x48')})[_0x7f92('0x3d')](function(_0x1f10ca){ut[_0x7f92('0x49')]('[Fax][Message][Error][Updated]',_0x1f10ca);})[_0x7f92('0x3f')](function(_0x5bfcf7){ut['logger']('[Fax][Message][Error][NoUpdate1]',_0x5bfcf7);});}else{ut[_0x7f92('0x49')](_0x7f92('0x4a'));}}Fax[_0x7f92('0x1f')][_0x7f92('0x4b')]=function(_0x4f3ec7,_0xa1427d,_0x5ed334){var _0x2d9116=this;var _0x5e583a={};if(_0xa1427d){_0x5e583a={'read':_0xa1427d};}else{_0x5e583a={'failMessage':_0x5ed334};}if(this[_0x7f92('0x12')][_0x4f3ec7][_0x7f92('0x47')]){faxMessage[_0x7f92('0x4c')](this[_0x7f92('0x12')][_0x4f3ec7][_0x7f92('0x47')],_0x5e583a)[_0x7f92('0x3d')](function(_0xe050a9){ut[_0x7f92('0x49')](_0x7f92('0x4d'),_0xe050a9);})['catch'](function(_0x5f3c91){ut[_0x7f92('0x49')](_0x7f92('0x4e'),_0x5f3c91);})['finally'](function(){delete _0x2d9116[_0x7f92('0x23')][_0x4f3ec7];delete _0x2d9116[_0x7f92('0x12')][_0x4f3ec7];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this['channels'][_0x4f3ec7];delete this[_0x7f92('0x12')][_0x4f3ec7];}};Fax[_0x7f92('0x1f')][_0x7f92('0x4f')]=function(_0x24ea6e){var _0x165df9=this;if(this['channels'][_0x24ea6e[_0x7f92('0x24')]]){if(this['actions'][_0x24ea6e[_0x7f92('0x24')]]){this[_0x7f92('0x23')][_0x24ea6e[_0x7f92('0x24')]]['id']=this['actions'][_0x24ea6e[_0x7f92('0x24')]]['id'];this[_0x7f92('0x23')][_0x24ea6e['uniqueid']][_0x7f92('0x26')]=this['actions'][_0x24ea6e['uniqueid']][_0x7f92('0x26')];}logger[_0x7f92('0x27')](_0x24ea6e['uniqueid'],this[_0x7f92('0x12')][_0x24ea6e[_0x7f92('0x24')]]?_0x7f92('0x50'):_0x7f92('0x51'),JSON['stringify'](this[_0x7f92('0x23')][_0x24ea6e['uniqueid']]));if(this[_0x7f92('0x12')][_0x24ea6e['uniqueid']]){if(this['channels'][_0x24ea6e[_0x7f92('0x24')]][_0x7f92('0x52')]>0x0&&this[_0x7f92('0x23')][_0x24ea6e[_0x7f92('0x24')]][_0x7f92('0x53')]==='SUCCESS'){this['updateStatus'](_0x24ea6e[_0x7f92('0x24')],!![]);}else{this[_0x7f92('0x4b')](_0x24ea6e[_0x7f92('0x24')],![],this[_0x7f92('0x23')][_0x24ea6e[_0x7f92('0x24')]][_0x7f92('0x54')]?_0x7f92('0x55')+this[_0x7f92('0x23')][_0x24ea6e[_0x7f92('0x24')]][_0x7f92('0x54')]:_0x7f92('0x56'));}}}};Fax['prototype'][_0x7f92('0x57')]=function(_0x2a5e51){var _0x4cbd46=this;return new BPromise(function(_0x2685b7,_0x1e5a9a){_0x4cbd46['execOriginate'](_0x2a5e51,_0x4cbd46['faxAccounts'][_0x2a5e51[_0x7f92('0x58')]])['then'](function(_0xde087e){ut['logger'](_0x7f92('0x59'),_0xde087e);_0x2685b7(ut['message'](_0x7f92('0x5a')));})['catch'](function(_0x4e1cb1){ut[_0x7f92('0x49')]('[Fax][execOriginate][failure]',_0x4e1cb1);updateStatus(_0x2a5e51);_0x1e5a9a(ut['message'](_0x7f92('0x5b')));});});};Fax[_0x7f92('0x1f')][_0x7f92('0x5c')]=function(_0x27c9d9){var _0x1fd8f0=this;return new BPromise(function(_0x3eb5fe,_0x2f9699){var _0x5c152a=_0x1fd8f0[_0x7f92('0x5d')](_0x1fd8f0[_0x7f92('0x10')][_0x27c9d9[_0x7f92('0x58')]][_0x7f92('0x5e')],_0x27c9d9);if(_0x5c152a['isValid']){_0x3eb5fe(ut[_0x7f92('0x39')](_0x7f92('0x5f')));}else{_0x2f9699(ut[_0x7f92('0x39')](_0x5c152a[_0x7f92('0x39')]));}});};function originate(_0x2469af,_0x5b1fc2,_0x1e5b16){return new BPromise(function(_0x3b3d9f,_0x257c58){if(_0x1e5b16){var _0x1a35b0=util[_0x7f92('0x60')](_0x7f92('0x61'),path['parse'](_0x2469af[_0x7f92('0x5')])[_0x7f92('0x26')],_0x2469af[_0x7f92('0x5')]);gs[_0x7f92('0x62')](_0x1a35b0)[_0x7f92('0x3d')](function(){_0x2469af[_0x7f92('0x5')]=util['format'](_0x7f92('0x63'),path[_0x7f92('0x3b')](_0x2469af[_0x7f92('0x5')])['dir'],path[_0x7f92('0x3b')](_0x2469af['path'])[_0x7f92('0x26')]);_0x5b1fc2[_0x7f92('0x64')]=_0x2469af['path'];ut[_0x7f92('0x49')](_0x7f92('0x65'),'');ami[_0x7f92('0x66')](ut[_0x7f92('0x67')](_0x2469af,_0x5b1fc2))[_0x7f92('0x3d')](function(_0x175faf){_0x3b3d9f(_0x175faf);})[_0x7f92('0x3f')](function(_0x579152){_0x257c58(_0x579152);});})['catch'](function(_0x13d934){_0x257c58(_0x13d934);});}else{ami[_0x7f92('0x66')](ut[_0x7f92('0x67')](_0x2469af,_0x5b1fc2))[_0x7f92('0x3d')](function(_0x7bd52e){_0x3b3d9f(_0x7bd52e);})['catch'](function(_0x370eb1){_0x257c58(_0x370eb1);});}});}Fax['prototype'][_0x7f92('0x68')]=function(_0xf1cf9d,_0x41217e){var _0x48ed9a=this;return new BPromise(function(_0x3f735c,_0x51ca2b){var _0x1221f=uuid['v4']();var _0x4628ae=ut[_0x7f92('0x69')](_0xf1cf9d,_0x41217e);_0x48ed9a[_0x7f92('0x12')][_0x1221f]=new Action(_0x1221f,_0x41217e,_0xf1cf9d);var _0x23d4fc=_0x48ed9a[_0x7f92('0x12')][_0x1221f];if(path[_0x7f92('0x3b')](_0xf1cf9d[_0x7f92('0x5')])[_0x7f92('0x6a')]===_0x7f92('0x6b')){originate(_0x23d4fc,_0x4628ae,!![])['then'](function(_0x1ca3c3){_0x3f735c(_0x1ca3c3);})[_0x7f92('0x3f')](function(_0x2a8db1){_0x51ca2b(_0x2a8db1);});}else{originate(_0x23d4fc,_0x4628ae,![])[_0x7f92('0x3d')](function(_0x12e12c){_0x3f735c(_0x12e12c);})['catch'](function(_0x248b14){_0x51ca2b(_0x248b14);});}});};Fax[_0x7f92('0x1f')][_0x7f92('0x6c')]=function(_0x23fb7b){return!_[_0x7f92('0x6d')](_0x23fb7b)&&!_['isNil'](_0x23fb7b['name'])&&!_[_0x7f92('0x6d')](_0x23fb7b['active'])&&_0x23fb7b['active']&&!_[_0x7f92('0x6d')](this[_0x7f92('0x11')][util[_0x7f92('0x60')](_0x7f92('0x6e'),_0x23fb7b[_0x7f92('0x26')])])&&!_['isNil'](this[_0x7f92('0x11')][util[_0x7f92('0x60')](_0x7f92('0x6e'),_0x23fb7b[_0x7f92('0x26')])][_0x7f92('0x30')])&&(this[_0x7f92('0x11')][util[_0x7f92('0x60')](_0x7f92('0x6e'),_0x23fb7b['name'])][_0x7f92('0x30')]===_0x7f92('0x6f')||this[_0x7f92('0x11')][util[_0x7f92('0x60')](_0x7f92('0x6e'),_0x23fb7b[_0x7f92('0x26')])][_0x7f92('0x30')]==='unmonitored');};Fax[_0x7f92('0x1f')][_0x7f92('0x5d')]=function(_0x4ce8c0,_0xf5c075){if(!this[_0x7f92('0x6c')](_0x4ce8c0)){ut[_0x7f92('0x49')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x7f92('0x6d')](_0x4ce8c0)?'':_0x4ce8c0[_0x7f92('0x26')]+_0x7f92('0x70'));return{'isValid':![],'message':_0x7f92('0x71')};}if(_[_0x7f92('0x6d')](_0xf5c075[_0x7f92('0x8')])){ut[_0x7f92('0x49')](_0x7f92('0x72'),JSON['stringify'](_0xf5c075));return{'isValid':![],'message':_0x7f92('0x73')};}if(_['isNil'](_0xf5c075[_0x7f92('0x5')])){ut[_0x7f92('0x49')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x7f92('0x42')](_0xf5c075));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x7f92('0x74')};};module['exports']=Fax;
\ No newline at end of file
+var _0xe334=['reason','update','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','AttachmentId','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','Trunk','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','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','syncNewchannel','bind','varset','newstate','syncNewState','newexten','syncNewExten','faxstatus','receivefax','syncReceiveFax','originateresponse','syncOriginateResponse','prototype','from-voip-provider','exten','uniqueid','channel','name','info','\x20syncNewchannel\x20','syncVarSet','variable','hasOwnProperty','value','channelstatedesc','syncFaxStatus','operation','status','localstationid','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','notify','fax','catch','error','stringify','\x20receiveFax\x20','pick'];(function(_0x2fd72e,_0x45fb76){var _0x11a4f6=function(_0x2fbbc9){while(--_0x2fbbc9){_0x2fd72e['push'](_0x2fd72e['shift']());}};_0x11a4f6(++_0x45fb76);}(_0xe334,0x199));var _0x4e33=function(_0x2f1d3e,_0xa37335){_0x2f1d3e=_0x2f1d3e-0x0;var _0x340efd=_0xe334[_0x2f1d3e];return _0x340efd;};'use strict';var util=require(_0x4e33('0x0'));var _=require('lodash');var BPromise=require(_0x4e33('0x1'));var uuid=require(_0x4e33('0x2'));var moment=require(_0x4e33('0x3'));var path=require(_0x4e33('0x4'));var tiff2pdf=require(_0x4e33('0x5'));var gs=require(_0x4e33('0x6'));var logger=require(_0x4e33('0x7'))('fax');var ami=require('../ami');var rpcDb=require(_0x4e33('0x8'));var Channel=require(_0x4e33('0x9'));var ut=require(_0x4e33('0xa'));var Action=require('./action');var faxAccount=require(_0x4e33('0xb'));var attachment=require(_0x4e33('0xc'));var faxMessage=require(_0x4e33('0xd'));function Fax(_0x44c7c){this[_0x4e33('0xe')]={};this[_0x4e33('0xf')]=_0x44c7c['faxAccounts'];this[_0x4e33('0x10')]=_0x44c7c[_0x4e33('0x10')];this[_0x4e33('0x11')]={};ami['on']('newchannel',this[_0x4e33('0x12')][_0x4e33('0x13')](this));ami['on'](_0x4e33('0x14'),this['syncVarSet'][_0x4e33('0x13')](this));ami['on'](_0x4e33('0x15'),this[_0x4e33('0x16')]['bind'](this));ami['on'](_0x4e33('0x17'),this[_0x4e33('0x18')][_0x4e33('0x13')](this));ami['on'](_0x4e33('0x19'),this['syncFaxStatus'][_0x4e33('0x13')](this));ami['on'](_0x4e33('0x1a'),this[_0x4e33('0x1b')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0x4e33('0x13')](this));ami['on'](_0x4e33('0x1c'),this[_0x4e33('0x1d')]['bind'](this));}Fax[_0x4e33('0x1e')][_0x4e33('0x12')]=function(_0x198097){if(_0x198097['context']===_0x4e33('0x1f')){for(var _0x4a8d0f in this[_0x4e33('0xf')]){if(this[_0x4e33('0xf')]['hasOwnProperty'](_0x4a8d0f)){if(_0x198097[_0x4e33('0x20')]===this[_0x4e33('0xf')][_0x4a8d0f]['localstationid']){this[_0x4e33('0xe')][_0x198097[_0x4e33('0x21')]]={};this[_0x4e33('0xe')][_0x198097[_0x4e33('0x21')]]['channel']=_0x198097[_0x4e33('0x22')];this[_0x4e33('0xe')][_0x198097[_0x4e33('0x21')]]['id']=this[_0x4e33('0xf')][_0x4a8d0f]['id'];this[_0x4e33('0xe')][_0x198097[_0x4e33('0x21')]]['name']=this['faxAccounts'][_0x4a8d0f][_0x4e33('0x23')];logger[_0x4e33('0x24')](_0x198097[_0x4e33('0x21')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x198097[_0x4e33('0x21')]]){this[_0x4e33('0xe')][_0x198097['uniqueid']]={};this[_0x4e33('0xe')][_0x198097[_0x4e33('0x21')]][_0x4e33('0x22')]=_0x198097[_0x4e33('0x22')];logger[_0x4e33('0x24')](_0x198097[_0x4e33('0x21')],_0x4e33('0x25'));}};Fax[_0x4e33('0x1e')][_0x4e33('0x26')]=function(_0x559512){if(this[_0x4e33('0xe')][_0x559512[_0x4e33('0x21')]]){for(var _0x203de3 in _0x559512[_0x4e33('0x27')]){if(_0x559512[_0x4e33('0x27')][_0x4e33('0x28')](_0x203de3)){this[_0x4e33('0xe')][_0x559512['uniqueid']][_0x203de3]=_0x559512[_0x4e33('0x29')];}}}};Fax[_0x4e33('0x1e')]['syncNewState']=function(_0x2e8691){if(this['channels'][_0x2e8691[_0x4e33('0x21')]]){this['channels'][_0x2e8691[_0x4e33('0x21')]]['channelstate']=_0x2e8691['channelstate'];this['channels'][_0x2e8691['uniqueid']][_0x4e33('0x2a')]=_0x2e8691[_0x4e33('0x2a')];}};Fax[_0x4e33('0x1e')]['syncNewExten']=function(_0x373923){if(this[_0x4e33('0xe')][_0x373923['uniqueid']]){for(var _0x2b4fc6 in _0x373923[_0x4e33('0x27')]){if(_0x373923[_0x4e33('0x27')][_0x4e33('0x28')](_0x2b4fc6)){this[_0x4e33('0xe')][_0x373923['uniqueid']][_0x2b4fc6]=_0x373923[_0x4e33('0x29')];}}}};Fax[_0x4e33('0x1e')][_0x4e33('0x2b')]=function(_0x26deba){if(this[_0x4e33('0xe')][_0x26deba['uniqueid']]){this[_0x4e33('0xe')][_0x26deba['uniqueid']]['operation']=_0x26deba[_0x4e33('0x2c')];this[_0x4e33('0xe')][_0x26deba['uniqueid']][_0x4e33('0x2d')]=_0x26deba['status'];this[_0x4e33('0xe')][_0x26deba['uniqueid']][_0x4e33('0x2e')]=_0x26deba['localstationid'];this[_0x4e33('0xe')][_0x26deba[_0x4e33('0x21')]]['filename']=_0x26deba[_0x4e33('0x2f')];logger[_0x4e33('0x24')](_0x26deba[_0x4e33('0x21')],_0x4e33('0x30'));}};Fax['prototype'][_0x4e33('0x1b')]=function(_0xf1d931){var _0x4ed85a=this;if(this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]]){var _0x571803=this['channels'][_0xf1d931[_0x4e33('0x21')]]['id'];this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]]['remotestationid']=_0xf1d931[_0x4e33('0x31')];this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]]['pagestransferred']=_0xf1d931[_0x4e33('0x32')];this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]][_0x4e33('0x2e')]=_0xf1d931['localstationid'];this['channels'][_0xf1d931['uniqueid']][_0x4e33('0x33')]=_0xf1d931[_0x4e33('0x33')];this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]][_0x4e33('0x34')]=_0xf1d931['transferrate'];this[_0x4e33('0xe')][_0xf1d931['uniqueid']][_0x4e33('0x2f')]=_0xf1d931[_0x4e33('0x2f')];this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]][_0x4e33('0x35')]=_0xf1d931[_0x4e33('0x35')];if(this[_0x4e33('0xe')][_0xf1d931[_0x4e33('0x21')]][_0x4e33('0x32')]>0x0){tiff2pdf(_0xf1d931[_0x4e33('0x2f')],'/var/opt/motion2/server/files/attachments/',function(_0x3d0b03){logger[_0x4e33('0x24')](_0xf1d931[_0x4e33('0x21')],_0x4e33('0x36'),_0x3d0b03[_0x4e33('0x37')]);attachment[_0x4e33('0x38')]({'name':path[_0x4e33('0x39')](_0xf1d931[_0x4e33('0x2f')])['name'],'basename':path[_0x4e33('0x39')](_0xf1d931[_0x4e33('0x2f')])['name']+_0x4e33('0x3a'),'type':_0x4e33('0x3b')})['then'](function(_0x16a3c1){faxAccount[_0x4e33('0x3c')](_0x571803,{'from':_0xf1d931[_0x4e33('0x35')],'mapKey':_0x4e33('0x3d'),'body':path['parse'](_0xf1d931['filename'])[_0x4e33('0x23')]+_0x4e33('0x3a'),'AttachmentId':_0x16a3c1['id']})[_0x4e33('0x3e')](function(_0x1b5822){logger[_0x4e33('0x3f')](_0xf1d931['uniqueid'],'\x20notify\x20',JSON[_0x4e33('0x40')](_0x1b5822));});})[_0x4e33('0x3e')](function(_0x471696){logger[_0x4e33('0x3f')](_0xf1d931['uniqueid'],_0x4e33('0x41'),JSON[_0x4e33('0x40')](_0x471696));});});}logger[_0x4e33('0x24')](_0xf1d931[_0x4e33('0x21')],_0x4e33('0x41'));}};Fax[_0x4e33('0x1e')]['syncOriginateResponse']=function(_0x266f8b){if(this[_0x4e33('0x11')][_0x266f8b['uniqueid']]){_['merge'](this['channels'][_0x266f8b[_0x4e33('0x21')]],_[_0x4e33('0x42')](_0x266f8b,['response',_0x4e33('0x43')]));}};function updateStatus(_0x55a393){if(_0x55a393['AttachmentId']){faxMessage[_0x4e33('0x44')](_0x55a393['AttachmentId'],{'failMessage':_0x4e33('0x45')})[_0x4e33('0x46')](function(_0x2805c1){ut[_0x4e33('0x47')](_0x4e33('0x48'),_0x2805c1);})['catch'](function(_0x374904){ut[_0x4e33('0x47')](_0x4e33('0x49'),_0x374904);});}else{ut['logger'](_0x4e33('0x4a'));}}Fax[_0x4e33('0x1e')][_0x4e33('0x4b')]=function(_0x5e639a,_0xbc2221,_0x1f997c){var _0x555758=this;var _0x58e0a5={};if(_0xbc2221){_0x58e0a5={'read':_0xbc2221};}else{_0x58e0a5={'failMessage':_0x1f997c};}if(this['actions'][_0x5e639a][_0x4e33('0x4c')]){faxMessage[_0x4e33('0x44')](this[_0x4e33('0x11')][_0x5e639a]['AttachmentId'],_0x58e0a5)['then'](function(_0x20b754){ut[_0x4e33('0x47')](_0x4e33('0x4d'),_0x20b754);})['catch'](function(_0x5bf833){ut[_0x4e33('0x47')](_0x4e33('0x4e'),_0x5bf833);})[_0x4e33('0x4f')](function(){delete _0x555758[_0x4e33('0xe')][_0x5e639a];delete _0x555758[_0x4e33('0x11')][_0x5e639a];});}else{ut[_0x4e33('0x47')](_0x4e33('0x50'));delete this[_0x4e33('0xe')][_0x5e639a];delete this[_0x4e33('0x11')][_0x5e639a];}};Fax['prototype']['syncHangup']=function(_0x32fbbb){var _0x195c3b=this;if(this[_0x4e33('0xe')][_0x32fbbb['uniqueid']]){if(this[_0x4e33('0x11')][_0x32fbbb[_0x4e33('0x21')]]){this[_0x4e33('0xe')][_0x32fbbb['uniqueid']]['id']=this['actions'][_0x32fbbb[_0x4e33('0x21')]]['id'];this[_0x4e33('0xe')][_0x32fbbb[_0x4e33('0x21')]]['name']=this['actions'][_0x32fbbb[_0x4e33('0x21')]][_0x4e33('0x23')];}logger['info'](_0x32fbbb[_0x4e33('0x21')],this[_0x4e33('0x11')][_0x32fbbb[_0x4e33('0x21')]]?_0x4e33('0x51'):'\x20hangup\x20faxRiceive\x20',JSON[_0x4e33('0x40')](this[_0x4e33('0xe')][_0x32fbbb['uniqueid']]));if(this[_0x4e33('0x11')][_0x32fbbb['uniqueid']]){if(this[_0x4e33('0xe')][_0x32fbbb[_0x4e33('0x21')]]['faxpages']>0x0&&this[_0x4e33('0xe')][_0x32fbbb['uniqueid']][_0x4e33('0x19')]===_0x4e33('0x52')){this[_0x4e33('0x4b')](_0x32fbbb['uniqueid'],!![]);}else{this[_0x4e33('0x4b')](_0x32fbbb[_0x4e33('0x21')],![],this['channels'][_0x32fbbb[_0x4e33('0x21')]][_0x4e33('0x53')]?_0x4e33('0x54')+this[_0x4e33('0xe')][_0x32fbbb[_0x4e33('0x21')]][_0x4e33('0x53')]:_0x4e33('0x55'));}}}};Fax['prototype'][_0x4e33('0x56')]=function(_0x1c18d9){var _0xec89fb=this;return new BPromise(function(_0x29d057,_0x4bf7d8){_0xec89fb['execOriginate'](_0x1c18d9,_0xec89fb['faxAccounts'][_0x1c18d9[_0x4e33('0x57')]])[_0x4e33('0x46')](function(_0x3c05b0){ut[_0x4e33('0x47')](_0x4e33('0x58'),_0x3c05b0);_0x29d057(ut['message'](_0x4e33('0x59')));})[_0x4e33('0x3e')](function(_0x1ef8e8){ut['logger'](_0x4e33('0x5a'),_0x1ef8e8);updateStatus(_0x1c18d9);_0x4bf7d8(ut[_0x4e33('0x37')](_0x4e33('0x5b')));});});};Fax[_0x4e33('0x1e')]['checkAfterSend']=function(_0x4e67fd){var _0x5aeba5=this;return new BPromise(function(_0x8826e7,_0x5958a0){var _0x2e76ba=_0x5aeba5['checkTrunk'](_0x5aeba5['faxAccounts'][_0x4e67fd[_0x4e33('0x57')]][_0x4e33('0x5c')],_0x4e67fd);if(_0x2e76ba['isValid']){_0x8826e7(ut[_0x4e33('0x37')](_0x4e33('0x5d')));}else{_0x5958a0(ut[_0x4e33('0x37')](_0x2e76ba[_0x4e33('0x37')]));}});};function originate(_0x44dd65,_0x10f46b,_0x1f2159){return new BPromise(function(_0x57b169,_0x2b4a5d){if(_0x1f2159){var _0x39f2d0=util[_0x4e33('0x5e')](_0x4e33('0x5f'),path[_0x4e33('0x39')](_0x44dd65[_0x4e33('0x4')])[_0x4e33('0x23')],_0x44dd65[_0x4e33('0x4')]);gs[_0x4e33('0x60')](_0x39f2d0)['then'](function(){_0x44dd65[_0x4e33('0x4')]=util[_0x4e33('0x5e')]('%s/%s.tif',path['parse'](_0x44dd65[_0x4e33('0x4')])[_0x4e33('0x61')],path[_0x4e33('0x39')](_0x44dd65[_0x4e33('0x4')])[_0x4e33('0x23')]);_0x10f46b[_0x4e33('0x62')]=_0x44dd65['path'];ut[_0x4e33('0x47')](_0x4e33('0x63'),'');ami[_0x4e33('0x64')](ut[_0x4e33('0x65')](_0x44dd65,_0x10f46b))[_0x4e33('0x46')](function(_0x21a211){_0x57b169(_0x21a211);})[_0x4e33('0x3e')](function(_0x17408e){_0x2b4a5d(_0x17408e);});})[_0x4e33('0x3e')](function(_0x2ce912){_0x2b4a5d(_0x2ce912);});}else{ami[_0x4e33('0x64')](ut[_0x4e33('0x65')](_0x44dd65,_0x10f46b))['then'](function(_0x10e721){_0x57b169(_0x10e721);})[_0x4e33('0x3e')](function(_0x3ee183){_0x2b4a5d(_0x3ee183);});}});}Fax['prototype']['execOriginate']=function(_0x56f933,_0x4d2c61){var _0x31cc31=this;return new BPromise(function(_0x198ce5,_0x46d15a){var _0x3ed683=uuid['v4']();var _0x3786ab=ut[_0x4e33('0x66')](_0x56f933,_0x4d2c61);_0x31cc31[_0x4e33('0x11')][_0x3ed683]=new Action(_0x3ed683,_0x4d2c61,_0x56f933);var _0x522200=_0x31cc31[_0x4e33('0x11')][_0x3ed683];if(path['parse'](_0x56f933[_0x4e33('0x4')])[_0x4e33('0x67')]===_0x4e33('0x3a')){originate(_0x522200,_0x3786ab,!![])['then'](function(_0x1b1891){_0x198ce5(_0x1b1891);})['catch'](function(_0x400094){_0x46d15a(_0x400094);});}else{originate(_0x522200,_0x3786ab,![])[_0x4e33('0x46')](function(_0x36d1ed){_0x198ce5(_0x36d1ed);})[_0x4e33('0x3e')](function(_0x1a3931){_0x46d15a(_0x1a3931);});}});};Fax[_0x4e33('0x1e')][_0x4e33('0x68')]=function(_0x517e99){return!_[_0x4e33('0x69')](_0x517e99)&&!_['isNil'](_0x517e99[_0x4e33('0x23')])&&!_[_0x4e33('0x69')](_0x517e99[_0x4e33('0x6a')])&&_0x517e99[_0x4e33('0x6a')]&&!_['isNil'](this[_0x4e33('0x10')][util['format'](_0x4e33('0x6b'),_0x517e99[_0x4e33('0x23')])])&&!_[_0x4e33('0x69')](this['trunks'][util['format']('SIP/%s',_0x517e99[_0x4e33('0x23')])]['status'])&&(this['trunks'][util[_0x4e33('0x5e')](_0x4e33('0x6b'),_0x517e99[_0x4e33('0x23')])][_0x4e33('0x2d')]===_0x4e33('0x6c')||this['trunks'][util[_0x4e33('0x5e')](_0x4e33('0x6b'),_0x517e99[_0x4e33('0x23')])][_0x4e33('0x2d')]===_0x4e33('0x6d'));};Fax[_0x4e33('0x1e')][_0x4e33('0x6e')]=function(_0x4970ee,_0x6848c0){if(!this['isTrunkReachable'](_0x4970ee)){ut['logger'](_0x4e33('0x6f'),_[_0x4e33('0x69')](_0x4970ee)?'':_0x4970ee[_0x4e33('0x23')]+_0x4e33('0x70'));return{'isValid':![],'message':_0x4e33('0x71')};}if(_[_0x4e33('0x69')](_0x6848c0['fax'])){ut[_0x4e33('0x47')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x4e33('0x40')](_0x6848c0));return{'isValid':![],'message':_0x4e33('0x72')};}if(_[_0x4e33('0x69')](_0x6848c0[_0x4e33('0x4')])){ut[_0x4e33('0x47')](_0x4e33('0x73'),JSON['stringify'](_0x6848c0));return{'isValid':![],'message':_0x4e33('0x74')};}return{'isValid':!![],'message':_0x4e33('0x75')};};module[_0x4e33('0x76')]=Fax;
\ No newline at end of file
index ebd354b..da6c037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b9=['[Notify]\x20','../../../config/logger','preview','error','notify','then'];(function(_0x299205,_0x51aefe){var _0x38cf75=function(_0x2644ed){while(--_0x2644ed){_0x299205['push'](_0x299205['shift']());}};_0x38cf75(++_0x51aefe);}(_0x32b9,0xd9));var _0x932b=function(_0x550ff3,_0x501b4b){_0x550ff3=_0x550ff3-0x0;var _0x6bd04b=_0x32b9[_0x550ff3];return _0x6bd04b;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x932b('0x0'))(_0x932b('0x1'));var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x26e50e){return function(_0x2f344e){logger[_0x932b('0x2')](_0x26e50e,util['inspect'](_0x2f344e,{'showHidden':![],'depth':null}));};}exports[_0x932b('0x3')]=function(_0x25efff,_0x22e0f1){return BPromise['resolve']()[_0x932b('0x4')](faxAccount[_0x932b('0x3')](_0x25efff,_0x22e0f1))['catch'](loggerCatch(_0x932b('0x5')));};
\ No newline at end of file
+var _0x8406=['lodash','../rpc/faxAccount','notify','resolve','then','catch','[Notify]\x20','util'];(function(_0x2e2b41,_0x5b4e2d){var _0x4b2ee9=function(_0x416e8a){while(--_0x416e8a){_0x2e2b41['push'](_0x2e2b41['shift']());}};_0x4b2ee9(++_0x5b4e2d);}(_0x8406,0x107));var _0x6840=function(_0x1f1c9b,_0x4e67ce){_0x1f1c9b=_0x1f1c9b-0x0;var _0x143193=_0x8406[_0x1f1c9b];return _0x143193;};'use strict';var util=require(_0x6840('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require(_0x6840('0x1'));var faxAccount=require(_0x6840('0x2'));function loggerCatch(_0x45e609){return function(_0x5d37dc){logger['error'](_0x45e609,util['inspect'](_0x5d37dc,{'showHidden':![],'depth':null}));};}exports[_0x6840('0x3')]=function(_0x472de7,_0x5e6df8){return BPromise[_0x6840('0x4')]()[_0x6840('0x5')](faxAccount[_0x6840('0x3')](_0x472de7,_0x5e6df8))[_0x6840('0x6')](loggerCatch(_0x6840('0x7')));};
\ No newline at end of file
index b4bcba7..c07676c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3875=['util','../../../../config/logger','fax','bluebird','child_process','execute','info','Exec\x20gs','\x20Error\x20:','inspect'];(function(_0x1f62a2,_0x5d4af9){var _0x493672=function(_0x5a0441){while(--_0x5a0441){_0x1f62a2['push'](_0x1f62a2['shift']());}};_0x493672(++_0x5d4af9);}(_0x3875,0x1ae));var _0x5387=function(_0x41188f,_0x43488c){_0x41188f=_0x41188f-0x0;var _0x356950=_0x3875[_0x41188f];return _0x356950;};'use strict';var util=require(_0x5387('0x0'));var logger=require(_0x5387('0x1'))(_0x5387('0x2'));var BPromise=require(_0x5387('0x3'));var exec=require(_0x5387('0x4'))['exec'];exports[_0x5387('0x5')]=function(_0x39b0f5){return new BPromise(function(_0x536f1a,_0x1310ab){exec(_0x39b0f5,function(_0x159624,_0x3cf0ed,_0x5e5f28){logger[_0x5387('0x6')](_0x5387('0x7'),_0x3cf0ed);if(_0x159624){logger[_0x5387('0x6')](_0x5387('0x7'),_0x5387('0x8'),util[_0x5387('0x9')](_0x159624,{'showHidden':![],'depth':null}),_0x3cf0ed,_0x5e5f28);_0x1310ab(_0x159624);}_0x536f1a(_0x3cf0ed);});});};
\ No newline at end of file
+var _0x5916=['child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax'];(function(_0x54e0e5,_0x1a06d5){var _0x21e384=function(_0x5b6f67){while(--_0x5b6f67){_0x54e0e5['push'](_0x54e0e5['shift']());}};_0x21e384(++_0x1a06d5);}(_0x5916,0x1c0));var _0x6591=function(_0x5c2731,_0x38fc42){_0x5c2731=_0x5c2731-0x0;var _0x700b28=_0x5916[_0x5c2731];return _0x700b28;};'use strict';var util=require('util');var logger=require(_0x6591('0x0'))(_0x6591('0x1'));var BPromise=require('bluebird');var exec=require(_0x6591('0x2'))[_0x6591('0x3')];exports[_0x6591('0x4')]=function(_0x64ed4c){return new BPromise(function(_0x395555,_0x4f7c10){exec(_0x64ed4c,function(_0x422adf,_0x587162,_0x3a87e4){logger[_0x6591('0x5')](_0x6591('0x6'),_0x587162);if(_0x422adf){logger[_0x6591('0x5')](_0x6591('0x6'),_0x6591('0x7'),util[_0x6591('0x8')](_0x422adf,{'showHidden':![],'depth':null}),_0x587162,_0x3a87e4);_0x4f7c10(_0x422adf);}_0x395555(_0x587162);});});};
\ No newline at end of file
index 0435761..e2ad9c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b15=['headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','t38timeout','localstationid','variablesAction','uniqueid','originate','channel','xcally-motion-fax','util','lodash','moment','fax','message','logger','info','inspect','addVariables','ecm'];(function(_0xd9c878,_0x5bf239){var _0x24790d=function(_0xa8379c){while(--_0xa8379c){_0xd9c878['push'](_0xd9c878['shift']());}};_0x24790d(++_0x5bf239);}(_0x4b15,0x1a6));var _0x54b1=function(_0x55ac9a,_0x1c8177){_0x55ac9a=_0x55ac9a-0x0;var _0x24086d=_0x4b15[_0x55ac9a];return _0x24086d;};'use strict';var util=require(_0x54b1('0x0'));var _=require(_0x54b1('0x1'));var moment=require(_0x54b1('0x2'));var logger=require('../../../../config/logger')(_0x54b1('0x3'));exports[_0x54b1('0x4')]=function(_0xb56596){return{'message':_0xb56596};};exports[_0x54b1('0x5')]=function(_0x3880ed,_0x260c7c){logger[_0x54b1('0x6')](_0x3880ed,util[_0x54b1('0x7')](_0x260c7c,{'showHidden':![],'depth':null}));};exports[_0x54b1('0x8')]=function(_0xa07d84,_0x1c8aa1){var _0x46c015={'XMF-ECM':_0x1c8aa1[_0x54b1('0x9')],'XMF-HEADERINFO':_0x1c8aa1[_0x54b1('0xa')],'XMF-MINRATE':_0x1c8aa1[_0x54b1('0xb')],'XMF-MAXRATE':_0x1c8aa1[_0x54b1('0xc')],'XMF-MODEM':util[_0x54b1('0xd')](_0x54b1('0xe'),_0x1c8aa1[_0x54b1('0xf')]),'XMF-GATEWAY':_0x1c8aa1[_0x54b1('0x10')],'XMF-FAXDETECT':_0x1c8aa1['faxdetect'],'XMF-T38TIMEOUT':_0x1c8aa1[_0x54b1('0x11')],'XMF-LOCALSTATIONID':_0x1c8aa1[_0x54b1('0x12')],'XMF-PATH':_0xa07d84['path']};return _0x46c015;};exports[_0x54b1('0x13')]=function(_0x55f63c,_0x409c6b){return{'actionid':_0x55f63c[_0x54b1('0x14')],'action':_0x54b1('0x15'),'channel':_0x55f63c[_0x54b1('0x16')],'Exten':_0x54b1('0x17'),'Context':'from-sip','Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x55f63c['headerinfo']?_0x55f63c[_0x54b1('0xa')]:'',_0x55f63c['localstationid']),'variable':_0x409c6b,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x55f63c[_0x54b1('0x14')]};};
\ No newline at end of file
+var _0x9f04=['lodash','moment','../../../../config/logger','logger','inspect','addVariables','ecm','headerinfo','minrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid','channel','from-sip','\x22%s\x22\x20<%s>','util'];(function(_0x5ad0c6,_0x56ee17){var _0x167958=function(_0x32dd81){while(--_0x32dd81){_0x5ad0c6['push'](_0x5ad0c6['shift']());}};_0x167958(++_0x56ee17);}(_0x9f04,0x1b4));var _0x49f0=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x9f04[_0x34bf97];return _0x292719;};'use strict';var util=require(_0x49f0('0x0'));var _=require(_0x49f0('0x1'));var moment=require(_0x49f0('0x2'));var logger=require(_0x49f0('0x3'))('fax');exports['message']=function(_0x21df5b){return{'message':_0x21df5b};};exports[_0x49f0('0x4')]=function(_0x1ab182,_0x4daf0b){logger['info'](_0x1ab182,util[_0x49f0('0x5')](_0x4daf0b,{'showHidden':![],'depth':null}));};exports[_0x49f0('0x6')]=function(_0x3009a0,_0x1fe91b){var _0x5df361={'XMF-ECM':_0x1fe91b[_0x49f0('0x7')],'XMF-HEADERINFO':_0x1fe91b[_0x49f0('0x8')],'XMF-MINRATE':_0x1fe91b[_0x49f0('0x9')],'XMF-MAXRATE':_0x1fe91b['maxrate'],'XMF-MODEM':util[_0x49f0('0xa')](_0x49f0('0xb'),_0x1fe91b[_0x49f0('0xc')]),'XMF-GATEWAY':_0x1fe91b[_0x49f0('0xd')],'XMF-FAXDETECT':_0x1fe91b[_0x49f0('0xe')],'XMF-T38TIMEOUT':_0x1fe91b[_0x49f0('0xf')],'XMF-LOCALSTATIONID':_0x1fe91b[_0x49f0('0x10')],'XMF-PATH':_0x3009a0[_0x49f0('0x11')]};return _0x5df361;};exports[_0x49f0('0x12')]=function(_0x2898f3,_0x2aa2c8){return{'actionid':_0x2898f3[_0x49f0('0x13')],'action':'originate','channel':_0x2898f3[_0x49f0('0x14')],'Exten':'xcally-motion-fax','Context':_0x49f0('0x15'),'Priority':'1','callerid':util['format'](_0x49f0('0x16'),_0x2898f3[_0x49f0('0x8')]?_0x2898f3[_0x49f0('0x8')]:'',_0x2898f3[_0x49f0('0x10')]),'variable':_0x2aa2c8,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x2898f3[_0x49f0('0x13')]};};
\ No newline at end of file
index bdf9e81..ab14fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5830=['./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','ami','get','hour','then','getAgents','getTelephones','initTelephones','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','inspect','listen','sync','error','[index.js][main]','util','moment','./server','./realtime','./report','./acw','./dialer','./preview','./fax','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/salesforce'];(function(_0x246e5c,_0x5ecf78){var _0x7f2a1f=function(_0x1eee63){while(--_0x1eee63){_0x246e5c['push'](_0x246e5c['shift']());}};_0x7f2a1f(++_0x5ecf78);}(_0x5830,0x84));var _0x0583=function(_0x3a2103,_0x11ccff){_0x3a2103=_0x3a2103-0x0;var _0x329eb7=_0x5830[_0x3a2103];return _0x329eb7;};'use strict';var BPromise=require('bluebird');var util=require(_0x0583('0x0'));var moment=require(_0x0583('0x1'));var server=require(_0x0583('0x2'));var Realtime=require(_0x0583('0x3'));var Report=require(_0x0583('0x4'));var Acw=require(_0x0583('0x5'));var Trigger=require('./trigger');var Dialer=require(_0x0583('0x6'));var Preview=require(_0x0583('0x7'));var Fax=require(_0x0583('0x8'));var user=require('./rpc/user');var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x0583('0x9'));var voiceCallReport=require(_0x0583('0xa'));var trunk=require(_0x0583('0xb'));var trigger=require('./rpc/trigger');var template=require(_0x0583('0xc'));var cmHopperHistory=require(_0x0583('0xd'));var campaign=require(_0x0583('0xe'));var voiceExtension=require(_0x0583('0xf'));var faxAccount=require(_0x0583('0x10'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x0583('0x11'));var sugarcrm=require(_0x0583('0x12'));var freshdesk=require(_0x0583('0x13'));var desk=require(_0x0583('0x14'));var zoho=require(_0x0583('0x15'));var vtiger=require(_0x0583('0x16'));var freshsales=require(_0x0583('0x17'));var servicenow=require(_0x0583('0x18'));var dynamics365=require(_0x0583('0x19'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x0583('0x1a'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x0583('0x1b')](_0x0583('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x0583('0x1b')](_0x0583('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x0583('0x1d')](user[_0x0583('0x1e')]())[_0x0583('0x1d')](realtime['initAgents']())[_0x0583('0x1d')](user[_0x0583('0x1f')]())[_0x0583('0x1d')](realtime[_0x0583('0x20')]())[_0x0583('0x1d')](trunk['getTrunks']())[_0x0583('0x1d')](realtime[_0x0583('0x21')]())[_0x0583('0x1d')](voiceQueue[_0x0583('0x22')]())[_0x0583('0x1d')](realtime[_0x0583('0x23')]())['then'](trigger[_0x0583('0x24')]())[_0x0583('0x1d')](realtime[_0x0583('0x25')]())['then'](template[_0x0583('0x26')]())[_0x0583('0x1d')](realtime[_0x0583('0x27')]())['then'](zendesk[_0x0583('0x28')]())[_0x0583('0x1d')](realtime['initZendeskAccounts']())[_0x0583('0x1d')](salesforce[_0x0583('0x29')]())[_0x0583('0x1d')](realtime[_0x0583('0x2a')]())['then'](sugarcrm[_0x0583('0x2b')]())[_0x0583('0x1d')](realtime[_0x0583('0x2c')]())[_0x0583('0x1d')](freshdesk[_0x0583('0x2d')]())['then'](realtime[_0x0583('0x2e')]())['then'](desk[_0x0583('0x2f')]())[_0x0583('0x1d')](realtime[_0x0583('0x30')]())[_0x0583('0x1d')](zoho[_0x0583('0x31')]())['then'](realtime['initZohoAccounts']())[_0x0583('0x1d')](vtiger[_0x0583('0x32')]())['then'](realtime[_0x0583('0x33')]())[_0x0583('0x1d')](freshsales[_0x0583('0x34')]())[_0x0583('0x1d')](realtime[_0x0583('0x35')]())[_0x0583('0x1d')](servicenow['getServicenowAccounts']())[_0x0583('0x1d')](realtime[_0x0583('0x36')]())['then'](dynamics365[_0x0583('0x37')]())['then'](realtime[_0x0583('0x38')]())[_0x0583('0x1d')](campaign[_0x0583('0x39')]())[_0x0583('0x1d')](realtime[_0x0583('0x3a')]())[_0x0583('0x1d')](voiceExtension[_0x0583('0x3b')]())['then'](realtime[_0x0583('0x3c')]())[_0x0583('0x1d')](faxAccount[_0x0583('0x3d')]())[_0x0583('0x1d')](realtime[_0x0583('0x3e')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x0583('0x3f')]()[_0x0583('0x1d')](voiceQueueReport[_0x0583('0x40')]())[_0x0583('0x1d')](realtime[_0x0583('0x41')]())[_0x0583('0x1d')](cmHopperHistory['getVoiceQueueHopperHistory']())['then'](realtime[_0x0583('0x42')]())[_0x0583('0x1d')](cmHopperHistory[_0x0583('0x43')]())[_0x0583('0x1d')](realtime['initCampaignHopperHistory']())[_0x0583('0x1d')](voiceCallReport[_0x0583('0x44')]())[_0x0583('0x1d')](realtime[_0x0583('0x45')]())['catch'](function(_0x2b219f){logger['error']('[index.js][initParams]',util[_0x0583('0x46')](_0x2b219f,{'showHidden':![],'depth':null}));});}function main(){return server[_0x0583('0x47')](realtime,preview,fax)['then'](function(_0x5b2c11){return initRealtime();})[_0x0583('0x1d')](function(){return initParams();})['then'](function(){report[_0x0583('0x48')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x3db164){logger[_0x0583('0x49')](_0x0583('0x4a'),util['inspect'](_0x3db164,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x42f9=['ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','error','inspect','listen','sync','catch','[index.js][main]','util','moment','./report','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365'];(function(_0x1edf5a,_0x1620ea){var _0x3a8bb8=function(_0x17a318){while(--_0x17a318){_0x1edf5a['push'](_0x1edf5a['shift']());}};_0x3a8bb8(++_0x1620ea);}(_0x42f9,0x156));var _0x942f=function(_0x2f662e,_0x28f6ac){_0x2f662e=_0x2f662e-0x0;var _0x3a8b70=_0x42f9[_0x2f662e];return _0x3a8b70;};'use strict';var util=require(_0x942f('0x0'));var moment=require(_0x942f('0x1'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0x942f('0x2'));var Acw=require('./acw');var Trigger=require(_0x942f('0x3'));var Dialer=require(_0x942f('0x4'));var Preview=require('./preview');var Fax=require(_0x942f('0x5'));var user=require(_0x942f('0x6'));var voiceQueue=require(_0x942f('0x7'));var voiceQueueReport=require(_0x942f('0x8'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x942f('0x9'));var trigger=require(_0x942f('0xa'));var template=require('./rpc/template');var cmHopperHistory=require(_0x942f('0xb'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x942f('0xc'));var faxAccount=require(_0x942f('0xd'));var zendesk=require(_0x942f('0xe'));var salesforce=require(_0x942f('0xf'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x942f('0x10'));var desk=require(_0x942f('0x11'));var zoho=require(_0x942f('0x12'));var vtiger=require(_0x942f('0x13'));var freshsales=require(_0x942f('0x14'));var servicenow=require(_0x942f('0x15'));var dynamics365=require(_0x942f('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x942f('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x942f('0x18')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x942f('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x942f('0x1a')]()[_0x942f('0x1b')](user[_0x942f('0x1c')]())[_0x942f('0x1b')](realtime[_0x942f('0x1d')]())[_0x942f('0x1b')](user[_0x942f('0x1e')]())[_0x942f('0x1b')](realtime[_0x942f('0x1f')]())[_0x942f('0x1b')](trunk[_0x942f('0x20')]())[_0x942f('0x1b')](realtime[_0x942f('0x21')]())['then'](voiceQueue[_0x942f('0x22')]())[_0x942f('0x1b')](realtime[_0x942f('0x23')]())[_0x942f('0x1b')](trigger[_0x942f('0x24')]())[_0x942f('0x1b')](realtime['initTriggers']())[_0x942f('0x1b')](template[_0x942f('0x25')]())[_0x942f('0x1b')](realtime[_0x942f('0x26')]())[_0x942f('0x1b')](zendesk[_0x942f('0x27')]())['then'](realtime[_0x942f('0x28')]())[_0x942f('0x1b')](salesforce[_0x942f('0x29')]())[_0x942f('0x1b')](realtime[_0x942f('0x2a')]())[_0x942f('0x1b')](sugarcrm['getSugarcrmAccounts']())[_0x942f('0x1b')](realtime[_0x942f('0x2b')]())['then'](freshdesk[_0x942f('0x2c')]())['then'](realtime[_0x942f('0x2d')]())['then'](desk['getDeskAccounts']())[_0x942f('0x1b')](realtime[_0x942f('0x2e')]())[_0x942f('0x1b')](zoho[_0x942f('0x2f')]())[_0x942f('0x1b')](realtime[_0x942f('0x30')]())['then'](vtiger[_0x942f('0x31')]())[_0x942f('0x1b')](realtime[_0x942f('0x32')]())[_0x942f('0x1b')](freshsales[_0x942f('0x33')]())[_0x942f('0x1b')](realtime[_0x942f('0x34')]())[_0x942f('0x1b')](servicenow['getServicenowAccounts']())[_0x942f('0x1b')](realtime[_0x942f('0x35')]())[_0x942f('0x1b')](dynamics365[_0x942f('0x36')]())[_0x942f('0x1b')](realtime[_0x942f('0x37')]())[_0x942f('0x1b')](campaign[_0x942f('0x38')]())[_0x942f('0x1b')](realtime[_0x942f('0x39')]())[_0x942f('0x1b')](voiceExtension[_0x942f('0x3a')]())[_0x942f('0x1b')](realtime[_0x942f('0x3b')]())[_0x942f('0x1b')](faxAccount['getFaxAccounts']())['then'](realtime[_0x942f('0x3c')]())[_0x942f('0x1b')](function(){return realtime;});}function initParams(){return Promise[_0x942f('0x1a')]()[_0x942f('0x1b')](voiceQueueReport[_0x942f('0x3d')]())[_0x942f('0x1b')](realtime[_0x942f('0x3e')]())[_0x942f('0x1b')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x942f('0x1b')](realtime[_0x942f('0x3f')]())['then'](cmHopperHistory['getCampaignHopperHistory']())[_0x942f('0x1b')](realtime[_0x942f('0x40')]())[_0x942f('0x1b')](voiceCallReport[_0x942f('0x41')]())[_0x942f('0x1b')](realtime[_0x942f('0x42')]())['catch'](function(_0x16a189){logger[_0x942f('0x43')]('[index.js][initParams]',util[_0x942f('0x44')](_0x16a189,{'showHidden':![],'depth':null}));});}function main(){return server[_0x942f('0x45')](realtime,preview,fax)['then'](function(){return initRealtime();})['then'](function(){return initParams();})[_0x942f('0x1b')](function(){report[_0x942f('0x46')]();setInterval(initRealtime,0x1388);})[_0x942f('0x47')](function(_0x4f89cd){logger[_0x942f('0x43')](_0x942f('0x48'),util[_0x942f('0x44')](_0x4f89cd,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index eb4e806..a423631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x12e039,_0x16d189){var _0x5b9d1b=function(_0x540e18){while(--_0x540e18){_0x12e039['push'](_0x12e039['shift']());}};_0x5b9d1b(++_0x16d189);}(_0x70e0,0x17b));var _0x070e=function(_0x2d9c1b,_0x532cea){_0x2d9c1b=_0x2d9c1b-0x0;var _0x58f79f=_0x70e0[_0x2d9c1b];return _0x58f79f;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
+var _0x2d5c=['not_inuse','talking','statePause','toNumber','format','fullname','voiceStatusQueue','interface','user:save','emit','user:presence','util','md5','ioredis','defaults','localhost','socket.io-emitter','redis','name','email','accountcode','state','unknown','stateTime','status','address','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase'];(function(_0xf33313,_0x139984){var _0x464ec3=function(_0x3ee005){while(--_0x3ee005){_0xf33313['push'](_0xf33313['shift']());}};_0x464ec3(++_0x139984);}(_0x2d5c,0x107));var _0xc2d5=function(_0x5a2797,_0x5e65b6){_0x5a2797=_0x5a2797-0x0;var _0xa74d97=_0x2d5c[_0x5a2797];return _0xa74d97;};'use strict';var _=require('lodash');var util=require(_0xc2d5('0x0'));var moment=require('moment');var md5=require(_0xc2d5('0x1'));var Redis=require(_0xc2d5('0x2'));var config=require('../../../config/environment');config['redis']=_[_0xc2d5('0x3')](config['redis'],{'host':_0xc2d5('0x4'),'port':0x18eb});var io=require(_0xc2d5('0x5'))(new Redis(config[_0xc2d5('0x6')]));function Agent(_0x4f42a5){this['id']=_0x4f42a5['id']||0x0;this[_0xc2d5('0x7')]=_0x4f42a5[_0xc2d5('0x7')]||'';this['email']=_0x4f42a5[_0xc2d5('0x8')]||'';this[_0xc2d5('0x9')]=_0x4f42a5[_0xc2d5('0x9')]||'';this['fullname']=_0x4f42a5['fullname']||'';this[_0xc2d5('0xa')]=_0xc2d5('0xb');this[_0xc2d5('0xc')]=0x0;this[_0xc2d5('0xd')]=_0xc2d5('0xb');this[_0xc2d5('0xe')]='';this['phone']='';this[_0xc2d5('0xf')]='';this['interface']='';this[_0xc2d5('0x10')]=_0x4f42a5[_0xc2d5('0x10')]||![];this[_0xc2d5('0x11')]=_0xc2d5('0xb');this[_0xc2d5('0x12')]=0x0;this[_0xc2d5('0x13')]='';this['voiceStatusQueue']='';this[_0xc2d5('0x14')]=![];this[_0xc2d5('0x15')]=![];this[_0xc2d5('0x1')]='';}Agent[_0xc2d5('0x16')][_0xc2d5('0x17')]=function(_0x1cc35f){var _0x24633d;if(_0x1cc35f&&_0x1cc35f[_0xc2d5('0xa')]){_0x24633d=_0x1cc35f[_0xc2d5('0xa')][_0xc2d5('0x18')]();switch(_0x24633d){case _0xc2d5('0x19'):_0x24633d='idle';break;case'inuse':_0x24633d=_0xc2d5('0x1a');break;}}if(_0x24633d&&this[_0xc2d5('0x11')]!==_0x24633d||_0x1cc35f[_0xc2d5('0x1b')]){this[_0xc2d5('0x12')]=_[_0xc2d5('0x1c')](moment()[_0xc2d5('0x1d')]('x'));}if(_0x24633d){this['voiceStatus']=_0x24633d;}var _0x14fe92={'id':this['id'],'name':this[_0xc2d5('0x7')],'email':this[_0xc2d5('0x8')],'accountcode':this[_0xc2d5('0x9')],'fullname':this[_0xc2d5('0x1e')],'state':this[_0xc2d5('0xa')],'stateTime':this[_0xc2d5('0xc')],'status':this[_0xc2d5('0xd')],'address':this[_0xc2d5('0xe')],'online':this['online'],'voiceStatus':this[_0xc2d5('0x11')],'voiceStatusTime':this[_0xc2d5('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0xc2d5('0x1f')],'interface':this[_0xc2d5('0x20')],'onhold':this[_0xc2d5('0x14')]};var _0x3c017d=md5(JSON['stringify'](_0x14fe92));if(this[_0xc2d5('0x1')]!==_0x3c017d){this[_0xc2d5('0x1')]=_0x3c017d;io['to'](util['format']('user:%s',_0x14fe92[_0xc2d5('0x7')]))['emit'](_0xc2d5('0x21'),_0x14fe92);io[_0xc2d5('0x22')](_0xc2d5('0x23'),_0x14fe92);}};module['exports']=Agent;
\ No newline at end of file
index ee8d09e..732b557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda3=['dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','temp','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence'];(function(_0x38d56c,_0x1b594a){var _0x2140b2=function(_0x2c6fd0){while(--_0x2c6fd0){_0x38d56c['push'](_0x38d56c['shift']());}};_0x2140b2(++_0x1b594a);}(_0xeda3,0x96));var _0x3eda=function(_0x1b409c,_0x18a4e8){_0x1b409c=_0x1b409c-0x0;var _0x4f32c8=_0xeda3[_0x1b409c];return _0x4f32c8;};'use strict';function Campaign(_0x1f065c){this['id']=_0x1f065c['id']||0x0;this[_0x3eda('0x0')]=_0x1f065c[_0x3eda('0x0')]||'';this[_0x3eda('0x1')]=_0x1f065c[_0x3eda('0x1')]||_0x3eda('0x2');this['originated']=0x0;this[_0x3eda('0x3')]=0x0;this[_0x3eda('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x3eda('0x5')]=!![];this[_0x3eda('0x6')]=_0x1f065c[_0x3eda('0x6')];this[_0x3eda('0x7')]=_0x1f065c['limitCalls'];this['dialTimezone']=_0x1f065c['dialTimezone']||null;this[_0x3eda('0x8')]=_0x1f065c[_0x3eda('0x8')]?_0x1f065c['dialGlobalInterval']:null;this[_0x3eda('0x9')]=_0x1f065c[_0x3eda('0x9')];this[_0x3eda('0xa')]=_0x1f065c[_0x3eda('0xa')];this['dialOriginateTimeout']=_0x1f065c['dialOriginateTimeout']||0x1e;this[_0x3eda('0xb')]=_0x1f065c[_0x3eda('0xb')];this[_0x3eda('0xc')]=_0x1f065c['dialCongestionRetryFrequency'];this[_0x3eda('0xd')]=_0x1f065c[_0x3eda('0xd')];this[_0x3eda('0xe')]=_0x1f065c[_0x3eda('0xe')];this[_0x3eda('0xf')]=_0x1f065c[_0x3eda('0xf')];this[_0x3eda('0x10')]=_0x1f065c[_0x3eda('0x10')];this[_0x3eda('0x11')]=_0x1f065c['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x1f065c['dialNoSuchNumberMaxRetry']||0x3;this[_0x3eda('0x12')]=_0x1f065c[_0x3eda('0x12')]||0x96;this['dialDropMaxRetry']=_0x1f065c[_0x3eda('0x13')]||0x3;this[_0x3eda('0x14')]=_0x1f065c[_0x3eda('0x14')]||0x96;this['dialAbandonedMaxRetry']=_0x1f065c['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x1f065c[_0x3eda('0x15')]||0x96;this['dialMachineMaxRetry']=_0x1f065c[_0x3eda('0x16')]||0x3;this[_0x3eda('0x17')]=_0x1f065c[_0x3eda('0x17')]||0x96;this[_0x3eda('0x18')]=_0x1f065c['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0x1f065c[_0x3eda('0x19')]||0x96;this[_0x3eda('0x1a')]=_0x1f065c[_0x3eda('0x1a')]||_0x3eda('0x1b');this['dialPrefix']=_0x1f065c[_0x3eda('0x1c')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x1f065c[_0x3eda('0x1d')]||undefined;this[_0x3eda('0x1e')]=_0x1f065c[_0x3eda('0x1e')]||undefined;this[_0x3eda('0x1f')]=_0x1f065c[_0x3eda('0x1f')]?_0x1f065c['TrunkBackup']:undefined;this[_0x3eda('0x20')]=_0x1f065c[_0x3eda('0x20')]?_0x1f065c['Trunk']:undefined;this[_0x3eda('0x21')]=_0x1f065c[_0x3eda('0x21')]?_0x1f065c[_0x3eda('0x21')]:undefined;this[_0x3eda('0x22')]=_0x1f065c[_0x3eda('0x22')]?_0x1f065c[_0x3eda('0x22')]:undefined;this[_0x3eda('0x23')]=_0x1f065c[_0x3eda('0x22')]?_0x1f065c['SquareProject'][_0x3eda('0x0')]:undefined;this[_0x3eda('0x24')]=_0x1f065c[_0x3eda('0x24')]||![];this[_0x3eda('0x25')]=_0x1f065c[_0x3eda('0x25')];this['dialAMDGreeting']=_0x1f065c[_0x3eda('0x26')];this['dialAMDAfterGreetingSilence']=_0x1f065c[_0x3eda('0x27')];this[_0x3eda('0x28')]=_0x1f065c[_0x3eda('0x28')];this[_0x3eda('0x29')]=_0x1f065c[_0x3eda('0x29')];this[_0x3eda('0x2a')]=_0x1f065c[_0x3eda('0x2a')];this[_0x3eda('0x2b')]=_0x1f065c['dialAMDMaximumNumberOfWords'];this[_0x3eda('0x2c')]=_0x1f065c['dialAMDSilenceThreshold'];this[_0x3eda('0x2d')]=_0x1f065c['dialAMDMaximumWordLength'];}module[_0x3eda('0x2e')]=Campaign;
\ No newline at end of file
+var _0xe936=['dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0xe936,0xfc));var _0x6e93=function(_0x2fc284,_0x5d271c){_0x2fc284=_0x2fc284-0x0;var _0x221234=_0xe936[_0x2fc284];return _0x221234;};'use strict';function Campaign(_0x46f81b){this['id']=_0x46f81b['id']||0x0;this[_0x6e93('0x0')]=_0x46f81b[_0x6e93('0x0')]||'';this[_0x6e93('0x1')]=_0x46f81b[_0x6e93('0x1')]||_0x6e93('0x2');this[_0x6e93('0x3')]=0x0;this[_0x6e93('0x4')]=0x0;this[_0x6e93('0x5')]=0x0;this[_0x6e93('0x6')]=0x0;this[_0x6e93('0x7')]='';this[_0x6e93('0x8')]=!![];this['active']=_0x46f81b[_0x6e93('0x9')];this[_0x6e93('0xa')]=_0x46f81b[_0x6e93('0xa')];this['dialTimezone']=_0x46f81b[_0x6e93('0xb')]||null;this[_0x6e93('0xc')]=_0x46f81b[_0x6e93('0xc')]?_0x46f81b[_0x6e93('0xc')]:null;this[_0x6e93('0xd')]=_0x46f81b[_0x6e93('0xd')];this[_0x6e93('0xe')]=_0x46f81b[_0x6e93('0xe')];this[_0x6e93('0xf')]=_0x46f81b[_0x6e93('0xf')]||0x1e;this[_0x6e93('0x10')]=_0x46f81b['dialCongestionMaxRetry'];this[_0x6e93('0x11')]=_0x46f81b['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x46f81b[_0x6e93('0x12')];this['dialBusyRetryFrequency']=_0x46f81b[_0x6e93('0x13')];this[_0x6e93('0x14')]=_0x46f81b['dialNoAnswerMaxRetry'];this[_0x6e93('0x15')]=_0x46f81b[_0x6e93('0x15')];this[_0x6e93('0x16')]=_0x46f81b['dialGlobalMaxRetry'];this[_0x6e93('0x17')]=_0x46f81b[_0x6e93('0x17')]||0x3;this[_0x6e93('0x18')]=_0x46f81b[_0x6e93('0x18')]||0x96;this['dialDropMaxRetry']=_0x46f81b[_0x6e93('0x19')]||0x3;this['dialDropRetryFrequency']=_0x46f81b[_0x6e93('0x1a')]||0x96;this[_0x6e93('0x1b')]=_0x46f81b[_0x6e93('0x1b')]||0x3;this[_0x6e93('0x1c')]=_0x46f81b[_0x6e93('0x1c')]||0x96;this[_0x6e93('0x1d')]=_0x46f81b['dialMachineMaxRetry']||0x3;this[_0x6e93('0x1e')]=_0x46f81b[_0x6e93('0x1e')]||0x96;this['dialAgentRejectMaxRetry']=_0x46f81b['dialAgentRejectMaxRetry']||0x3;this[_0x6e93('0x1f')]=_0x46f81b[_0x6e93('0x1f')]||0x96;this[_0x6e93('0x20')]=_0x46f81b[_0x6e93('0x20')]||_0x6e93('0x21');this['dialPrefix']=_0x46f81b['dialPrefix']||undefined;this[_0x6e93('0x22')]=_0x46f81b[_0x6e93('0x22')]||undefined;this[_0x6e93('0x23')]=_0x46f81b[_0x6e93('0x23')]||undefined;this['TrunkBackup']=_0x46f81b['TrunkBackup']?_0x46f81b['TrunkBackup']:undefined;this[_0x6e93('0x24')]=_0x46f81b[_0x6e93('0x24')]?_0x46f81b[_0x6e93('0x24')]:undefined;this[_0x6e93('0x25')]=_0x46f81b[_0x6e93('0x25')]?_0x46f81b[_0x6e93('0x25')]:undefined;this[_0x6e93('0x26')]=_0x46f81b[_0x6e93('0x26')]?_0x46f81b['SquareProject']:undefined;this[_0x6e93('0x27')]=_0x46f81b[_0x6e93('0x26')]?_0x46f81b[_0x6e93('0x26')][_0x6e93('0x0')]:undefined;this[_0x6e93('0x28')]=_0x46f81b[_0x6e93('0x28')]||![];this['dialAMDInitialSilence']=_0x46f81b[_0x6e93('0x29')];this[_0x6e93('0x2a')]=_0x46f81b[_0x6e93('0x2a')];this['dialAMDAfterGreetingSilence']=_0x46f81b[_0x6e93('0x2b')];this[_0x6e93('0x2c')]=_0x46f81b['dialAMDTotalAnalysisTime'];this[_0x6e93('0x2d')]=_0x46f81b[_0x6e93('0x2d')];this[_0x6e93('0x2e')]=_0x46f81b[_0x6e93('0x2e')];this[_0x6e93('0x2f')]=_0x46f81b['dialAMDMaximumNumberOfWords'];this[_0x6e93('0x30')]=_0x46f81b[_0x6e93('0x30')];this['dialAMDMaximumWordLength']=_0x46f81b['dialAMDMaximumWordLength'];}module['exports']=Campaign;
\ No newline at end of file
index 0f1d5e6..9339764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56c8=['transferconnectedlinenum','mohtime','exports','starttime','channel','destinationchannel','calleridnum','connectedlinenum','connectedlinename','accountcode','context','uniqueid','exten','answered','answertime','endtime','unmanaged','abandoned','duration','billableseconds','holdtime','monitor','monitorFilename','queue','transfercalleridnum'];(function(_0xb6e43,_0x1568fc){var _0x47c40f=function(_0x107786){while(--_0x107786){_0xb6e43['push'](_0xb6e43['shift']());}};_0x47c40f(++_0x1568fc);}(_0x56c8,0x12f));var _0x856c=function(_0x16b4ce,_0x4e606f){_0x16b4ce=_0x16b4ce-0x0;var _0x5e6319=_0x56c8[_0x16b4ce];return _0x5e6319;};'use strict';function Channel(){this[_0x856c('0x0')]=null;this[_0x856c('0x1')]='';this[_0x856c('0x2')]='';this[_0x856c('0x3')]=0x0;this['calleridname']='';this[_0x856c('0x4')]=undefined;this[_0x856c('0x5')]=undefined;this[_0x856c('0x6')]=0x0;this[_0x856c('0x7')]='';this[_0x856c('0x8')]=0x0;this['linkedid']=0x0;this[_0x856c('0x9')]=0x0;this[_0x856c('0xa')]=![];this[_0x856c('0xb')]=null;this[_0x856c('0xc')]=null;this[_0x856c('0xd')]=![];this[_0x856c('0xe')]=![];this['lastapplication']='';this['lastdata']='';this[_0x856c('0xf')]=0x0;this[_0x856c('0x10')]=0x0;this[_0x856c('0x11')]=0x0;this['type']=null;this['tag']=null;this['disposition']=null;this[_0x856c('0x12')]=![];this[_0x856c('0x13')]=null;this[_0x856c('0x14')]=null;this['monitors']=[];this[_0x856c('0x15')]=undefined;this[_0x856c('0x16')]=undefined;this['transferType']=undefined;this[_0x856c('0x17')]=0x0;}module[_0x856c('0x18')]=Channel;
\ No newline at end of file
+var _0x7880=['connectedlinenum','connectedlinename','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastapplication','duration','holdtime','tag','disposition','monitor','monitorFilename','queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','destinationchannel','calleridnum','calleridname'];(function(_0x275041,_0x279105){var _0x13392c=function(_0x7f586b){while(--_0x7f586b){_0x275041['push'](_0x275041['shift']());}};_0x13392c(++_0x279105);}(_0x7880,0x1f4));var _0x0788=function(_0x1cc4e1,_0x1629d4){_0x1cc4e1=_0x1cc4e1-0x0;var _0x192d47=_0x7880[_0x1cc4e1];return _0x192d47;};'use strict';function Channel(){this['starttime']=null;this[_0x0788('0x0')]='';this[_0x0788('0x1')]='';this[_0x0788('0x2')]=0x0;this[_0x0788('0x3')]='';this[_0x0788('0x4')]=undefined;this[_0x0788('0x5')]=undefined;this['accountcode']=0x0;this[_0x0788('0x6')]='';this[_0x0788('0x7')]=0x0;this[_0x0788('0x8')]=0x0;this[_0x0788('0x9')]=0x0;this[_0x0788('0xa')]=![];this[_0x0788('0xb')]=null;this[_0x0788('0xc')]=null;this[_0x0788('0xd')]=![];this[_0x0788('0xe')]=![];this[_0x0788('0xf')]='';this['lastdata']='';this[_0x0788('0x10')]=0x0;this['billableseconds']=0x0;this[_0x0788('0x11')]=0x0;this['type']=null;this[_0x0788('0x12')]=null;this[_0x0788('0x13')]=null;this[_0x0788('0x14')]=![];this[_0x0788('0x15')]=null;this[_0x0788('0x16')]=null;this['monitors']=[];this[_0x0788('0x17')]=undefined;this[_0x0788('0x18')]=undefined;this[_0x0788('0x19')]=undefined;this[_0x0788('0x1a')]=0x0;}module[_0x0788('0x1b')]=Channel;
\ No newline at end of file
index 159435e..9265de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c1=['exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','serverUrl','Configurations'];(function(_0x56545b,_0x5d6a60){var _0x55cd80=function(_0x2a7e68){while(--_0x2a7e68){_0x56545b['push'](_0x56545b['shift']());}};_0x55cd80(++_0x5d6a60);}(_0x15c1,0x139));var _0x115c=function(_0x5edb0c,_0x10dd30){_0x5edb0c=_0x5edb0c-0x0;var _0x3ae1d4=_0x15c1[_0x5edb0c];return _0x3ae1d4;};'use strict';function DeskAccount(_0x209745){this['id']=_0x209745['id']||0x0;this[_0x115c('0x0')]=_0x209745[_0x115c('0x0')]||'';this[_0x115c('0x1')]=_0x209745['username']||'';this[_0x115c('0x2')]=_0x209745[_0x115c('0x2')]||'';this[_0x115c('0x3')]=_0x209745['authType']||'';this[_0x115c('0x4')]=_0x209745[_0x115c('0x4')]||'';this[_0x115c('0x5')]=_0x209745[_0x115c('0x5')]||'';this[_0x115c('0x6')]=_0x209745[_0x115c('0x6')]||'';this[_0x115c('0x7')]=_0x209745['token']||'';this[_0x115c('0x8')]=_0x209745[_0x115c('0x8')]||'';this['type']=_0x209745['type']||'';this[_0x115c('0x9')]=_0x209745[_0x115c('0x9')]||'';this[_0x115c('0xa')]=_0x209745[_0x115c('0xa')]||{};}module[_0x115c('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x48fd=['serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type'];(function(_0x5efdc0,_0x2f7a64){var _0x377ab5=function(_0x3aa1ec){while(--_0x3aa1ec){_0x5efdc0['push'](_0x5efdc0['shift']());}};_0x377ab5(++_0x2f7a64);}(_0x48fd,0x6b));var _0xd48f=function(_0x1dd621,_0x18f640){_0x1dd621=_0x1dd621-0x0;var _0x47b4a3=_0x48fd[_0x1dd621];return _0x47b4a3;};'use strict';function DeskAccount(_0x502e1b){this['id']=_0x502e1b['id']||0x0;this[_0xd48f('0x0')]=_0x502e1b[_0xd48f('0x0')]||'';this['username']=_0x502e1b[_0xd48f('0x1')]||'';this['remoteUri']=_0x502e1b[_0xd48f('0x2')]||'';this[_0xd48f('0x3')]=_0x502e1b[_0xd48f('0x3')]||'';this['password']=_0x502e1b[_0xd48f('0x4')]||'';this[_0xd48f('0x5')]=_0x502e1b[_0xd48f('0x5')]||'';this[_0xd48f('0x6')]=_0x502e1b[_0xd48f('0x6')]||'';this[_0xd48f('0x7')]=_0x502e1b[_0xd48f('0x7')]||'';this[_0xd48f('0x8')]=_0x502e1b['tokenSecret']||'';this[_0xd48f('0x9')]=_0x502e1b[_0xd48f('0x9')]||'';this[_0xd48f('0xa')]=_0x502e1b[_0xd48f('0xa')]||'';this[_0xd48f('0xb')]=_0x502e1b['Configurations']||{};}module[_0xd48f('0xc')]=DeskAccount;
\ No newline at end of file
index 07892c2..70613f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a52=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username'];(function(_0x243dbc,_0x3b5f34){var _0x58aaf9=function(_0x1582dc){while(--_0x1582dc){_0x243dbc['push'](_0x243dbc['shift']());}};_0x58aaf9(++_0x3b5f34);}(_0x5a52,0xb2));var _0x25a5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5a52[_0x14add3];return _0x4a174f;};'use strict';function Dynamics365Account(_0x1496cb){this['id']=_0x1496cb['id']||0x0;this[_0x25a5('0x0')]=_0x1496cb[_0x25a5('0x0')]||'';this['username']=_0x1496cb[_0x25a5('0x1')]||'';this[_0x25a5('0x2')]=_0x1496cb['password']||'';this[_0x25a5('0x3')]=_0x1496cb[_0x25a5('0x3')]||'';this[_0x25a5('0x4')]=_0x1496cb['tenantId']||'';this[_0x25a5('0x5')]=_0x1496cb[_0x25a5('0x5')]||'';this[_0x25a5('0x6')]=_0x1496cb[_0x25a5('0x6')]||{};this[_0x25a5('0x7')]=_0x1496cb['serverUrl']||'';this[_0x25a5('0x8')]=_0x1496cb[_0x25a5('0x8')]||![];this['Configurations']=_0x1496cb[_0x25a5('0x9')]||{};this[_0x25a5('0xa')]=_0x1496cb[_0x25a5('0xa')]||{};}module[_0x25a5('0xb')]=Dynamics365Account;
\ No newline at end of file
+var _0x9b07=['exports','name','username','password','remoteUri','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider'];(function(_0x5d9f95,_0x2bcf78){var _0x5045d8=function(_0x30c950){while(--_0x30c950){_0x5d9f95['push'](_0x5d9f95['shift']());}};_0x5045d8(++_0x2bcf78);}(_0x9b07,0x177));var _0x79b0=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x9b07[_0x2b10c6];return _0x3789d2;};'use strict';function Dynamics365Account(_0x23584a){this['id']=_0x23584a['id']||0x0;this[_0x79b0('0x0')]=_0x23584a[_0x79b0('0x0')]||'';this[_0x79b0('0x1')]=_0x23584a[_0x79b0('0x1')]||'';this['password']=_0x23584a[_0x79b0('0x2')]||'';this[_0x79b0('0x3')]=_0x23584a['remoteUri']||'';this['tenantId']=_0x23584a['tenantId']||'';this[_0x79b0('0x4')]=_0x23584a[_0x79b0('0x4')]||'';this[_0x79b0('0x5')]=_0x23584a[_0x79b0('0x5')]||{};this['serverUrl']=_0x23584a[_0x79b0('0x6')]||'';this[_0x79b0('0x7')]=_0x23584a['modernAuthentication']||![];this[_0x79b0('0x8')]=_0x23584a['Configurations']||{};this[_0x79b0('0x9')]=_0x23584a[_0x79b0('0x9')]||{};}module[_0x79b0('0xa')]=Dynamics365Account;
\ No newline at end of file
index 38ab6cd..cd7af1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78ab=['exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29','gateway','t38timeout','tech','SIP','Trunk','ListId','key'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x78ab,0x81));var _0xb78a=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x78ab[_0x3070dc];return _0x431489;};'use strict';function FaxAccount(_0x1ba0a5){this['id']=_0x1ba0a5['id']||0x0;this[_0xb78a('0x0')]=_0x1ba0a5[_0xb78a('0x0')]||'';this[_0xb78a('0x1')]=_0x1ba0a5[_0xb78a('0x1')];this[_0xb78a('0x2')]=_0x1ba0a5[_0xb78a('0x2')];this[_0xb78a('0x3')]=_0x1ba0a5['headerinfo'];this['localstationid']=_0x1ba0a5[_0xb78a('0x4')];this[_0xb78a('0x5')]=_0x1ba0a5[_0xb78a('0x5')]||0x960;this[_0xb78a('0x6')]=_0x1ba0a5[_0xb78a('0x6')]||0x3840;this['modem']=_0x1ba0a5['modem']||_0xb78a('0x7');this[_0xb78a('0x8')]=_0x1ba0a5[_0xb78a('0x8')]||'no';this['faxdetect']=_0x1ba0a5['faxdetect']||'no';this[_0xb78a('0x9')]=_0x1ba0a5['t38timeout']||0x1388;this[_0xb78a('0xa')]=_0x1ba0a5[_0xb78a('0xa')]||_0xb78a('0xb');this[_0xb78a('0xc')]=_0x1ba0a5['Trunk']?_0x1ba0a5[_0xb78a('0xc')]:undefined;this[_0xb78a('0xd')]=_0x1ba0a5[_0xb78a('0xd')];this[_0xb78a('0xe')]=_0x1ba0a5['key'];}module[_0xb78a('0xf')]=FaxAccount;
\ No newline at end of file
+var _0x5bad=['exports','name','description','ecm','headerinfo','localstationid','minrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','SIP','Trunk','ListId','key'];(function(_0x5a4ee6,_0x18282f){var _0x45d759=function(_0x175bc7){while(--_0x175bc7){_0x5a4ee6['push'](_0x5a4ee6['shift']());}};_0x45d759(++_0x18282f);}(_0x5bad,0xd1));var _0xd5ba=function(_0x369ef2,_0x400868){_0x369ef2=_0x369ef2-0x0;var _0x4f35cd=_0x5bad[_0x369ef2];return _0x4f35cd;};'use strict';function FaxAccount(_0x108311){this['id']=_0x108311['id']||0x0;this[_0xd5ba('0x0')]=_0x108311[_0xd5ba('0x0')]||'';this[_0xd5ba('0x1')]=_0x108311[_0xd5ba('0x1')];this[_0xd5ba('0x2')]=_0x108311[_0xd5ba('0x2')];this[_0xd5ba('0x3')]=_0x108311[_0xd5ba('0x3')];this[_0xd5ba('0x4')]=_0x108311[_0xd5ba('0x4')];this[_0xd5ba('0x5')]=_0x108311['minrate']||0x960;this['maxrate']=_0x108311['maxrate']||0x3840;this['modem']=_0x108311[_0xd5ba('0x6')]||_0xd5ba('0x7');this[_0xd5ba('0x8')]=_0x108311['gateway']||'no';this[_0xd5ba('0x9')]=_0x108311[_0xd5ba('0x9')]||'no';this[_0xd5ba('0xa')]=_0x108311[_0xd5ba('0xa')]||0x1388;this['tech']=_0x108311['tech']||_0xd5ba('0xb');this[_0xd5ba('0xc')]=_0x108311[_0xd5ba('0xc')]?_0x108311[_0xd5ba('0xc')]:undefined;this[_0xd5ba('0xd')]=_0x108311['ListId'];this['key']=_0x108311[_0xd5ba('0xe')];}module[_0xd5ba('0xf')]=FaxAccount;
\ No newline at end of file
index 7c7d715..82840c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ee=['remoteUri','serverUrl','Configurations','name','username','apiKey','token'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0xd5ee,0xc7));var _0xed5e=function(_0xfcc0e,_0x1da886){_0xfcc0e=_0xfcc0e-0x0;var _0x32bb2e=_0xd5ee[_0xfcc0e];return _0x32bb2e;};'use strict';function FreshdeskAccount(_0xfa8f39){this['id']=_0xfa8f39['id']||0x0;this[_0xed5e('0x0')]=_0xfa8f39[_0xed5e('0x0')]||'';this[_0xed5e('0x1')]=_0xfa8f39[_0xed5e('0x1')]||'';this[_0xed5e('0x2')]=_0xfa8f39[_0xed5e('0x3')]||'';this[_0xed5e('0x4')]=_0xfa8f39[_0xed5e('0x4')]||'';this[_0xed5e('0x5')]=_0xfa8f39[_0xed5e('0x5')]||'';this[_0xed5e('0x6')]=_0xfa8f39['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0x0646=['token','remoteUri','serverUrl','Configurations','name','username','apiKey'];(function(_0x5a3d4b,_0x4c00e9){var _0x56f176=function(_0x3035f4){while(--_0x3035f4){_0x5a3d4b['push'](_0x5a3d4b['shift']());}};_0x56f176(++_0x4c00e9);}(_0x0646,0x1a8));var _0x6064=function(_0x48b2a1,_0x5a8164){_0x48b2a1=_0x48b2a1-0x0;var _0x9c567f=_0x0646[_0x48b2a1];return _0x9c567f;};'use strict';function FreshdeskAccount(_0x39fd06){this['id']=_0x39fd06['id']||0x0;this[_0x6064('0x0')]=_0x39fd06[_0x6064('0x0')]||'';this[_0x6064('0x1')]=_0x39fd06[_0x6064('0x1')]||'';this[_0x6064('0x2')]=_0x39fd06[_0x6064('0x3')]||'';this[_0x6064('0x4')]=_0x39fd06[_0x6064('0x4')]||'';this[_0x6064('0x5')]=_0x39fd06[_0x6064('0x5')]||'';this[_0x6064('0x6')]=_0x39fd06[_0x6064('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 6d4e5e3..93a9526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0734=['name','username','token','remoteUri','serverUrl','Configurations'];(function(_0x31cef1,_0x275018){var _0xdad81b=function(_0x177cc9){while(--_0x177cc9){_0x31cef1['push'](_0x31cef1['shift']());}};_0xdad81b(++_0x275018);}(_0x0734,0xba));var _0x4073=function(_0x3e6a0b,_0x371c4c){_0x3e6a0b=_0x3e6a0b-0x0;var _0x3cdf46=_0x0734[_0x3e6a0b];return _0x3cdf46;};'use strict';function FreshsalesAccount(_0x2f727f){this['id']=_0x2f727f['id']||0x0;this[_0x4073('0x0')]=_0x2f727f[_0x4073('0x0')]||'';this[_0x4073('0x1')]=_0x2f727f[_0x4073('0x1')]||'';this['apiKey']=_0x2f727f[_0x4073('0x2')]||'';this[_0x4073('0x3')]=_0x2f727f[_0x4073('0x3')]||'';this[_0x4073('0x4')]=_0x2f727f['serverUrl']||'';this['Configurations']=_0x2f727f[_0x4073('0x5')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0xf842=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x4e24cc,_0x7a1b4f){var _0x1f2ef6=function(_0x11ae68){while(--_0x11ae68){_0x4e24cc['push'](_0x4e24cc['shift']());}};_0x1f2ef6(++_0x7a1b4f);}(_0xf842,0x172));var _0x2f84=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xf842[_0x4d613c];return _0x301fe3;};'use strict';function FreshsalesAccount(_0x3344){this['id']=_0x3344['id']||0x0;this[_0x2f84('0x0')]=_0x3344[_0x2f84('0x0')]||'';this[_0x2f84('0x1')]=_0x3344['username']||'';this[_0x2f84('0x2')]=_0x3344[_0x2f84('0x3')]||'';this[_0x2f84('0x4')]=_0x3344[_0x2f84('0x4')]||'';this[_0x2f84('0x5')]=_0x3344['serverUrl']||'';this[_0x2f84('0x6')]=_0x3344[_0x2f84('0x6')]||{};}module[_0x2f84('0x7')]=FreshsalesAccount;
\ No newline at end of file
index c12248a..804b0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3574=['channel','connectedlinename','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice','variables','type','uniqueid','calleridnum','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','originalposition'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x3574,0x1d4));var _0x4357=function(_0x5da7fb,_0x143fb3){_0x5da7fb=_0x5da7fb-0x0;var _0x5c9d10=_0x3574[_0x5da7fb];return _0x5c9d10;};'use strict';function QueueReport(){this[_0x4357('0x0')]='inbound';this[_0x4357('0x1')]='';this[_0x4357('0x2')]='';this['calleridname']='';this[_0x4357('0x3')]='';this[_0x4357('0x4')]=null;this['queuecallerleaveAt']=null;this[_0x4357('0x5')]=0x1;this[_0x4357('0x6')]=0x1;this[_0x4357('0x7')]=![];this[_0x4357('0x8')]=null;this['queuecallercomplete']=![];this['queuecallercompleteAt']=null;this[_0x4357('0x9')]=![];this[_0x4357('0xa')]=null;this[_0x4357('0xb')]=0x1;this[_0x4357('0xc')]='';this['connectedlinenum']='';this[_0x4357('0xd')]='';this[_0x4357('0xe')]='';this[_0x4357('0xf')]='';this[_0x4357('0x10')]='';this[_0x4357('0x11')]='';this[_0x4357('0x12')]=0x0;this[_0x4357('0x13')]=![];this[_0x4357('0x14')]='';this[_0x4357('0x15')]=_0x4357('0x16');this['mohtime']=0x0;this[_0x4357('0x17')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xca82=['calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','accountcode','exten','priority','holdtime','assigned','lastAssignedTo','routealias','mohtime','variables','exports','type','inbound'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xca82,0x7b));var _0x2ca8=function(_0x5ea797,_0x2d39dd){_0x5ea797=_0x5ea797-0x0;var _0x500783=_0xca82[_0x5ea797];return _0x500783;};'use strict';function QueueReport(){this[_0x2ca8('0x0')]=_0x2ca8('0x1');this['uniqueid']='';this[_0x2ca8('0x2')]='';this[_0x2ca8('0x3')]='';this[_0x2ca8('0x4')]='';this[_0x2ca8('0x5')]=null;this[_0x2ca8('0x6')]=null;this[_0x2ca8('0x7')]=0x1;this['count']=0x1;this[_0x2ca8('0x8')]=![];this['queuecallerabandonAt']=null;this[_0x2ca8('0x9')]=![];this[_0x2ca8('0xa')]=null;this[_0x2ca8('0xb')]=![];this[_0x2ca8('0xc')]=null;this[_0x2ca8('0xd')]=0x1;this[_0x2ca8('0xe')]='';this['connectedlinenum']='';this['connectedlinename']='';this[_0x2ca8('0xf')]='';this['context']='';this[_0x2ca8('0x10')]='';this[_0x2ca8('0x11')]='';this[_0x2ca8('0x12')]=0x0;this[_0x2ca8('0x13')]=![];this[_0x2ca8('0x14')]='';this['motionChannel']='voice';this[_0x2ca8('0x15')]=null;this[_0x2ca8('0x16')]=0x0;this[_0x2ca8('0x17')]={};}module[_0x2ca8('0x18')]=QueueReport;
\ No newline at end of file
index 8213621..9345785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b44=['clientId','clientSecret','type','integrationTab','serverUrl','Configurations','name','username','remoteUri','password'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b44,0xe2));var _0x40b4=function(_0x3c8587,_0x1776bf){_0x3c8587=_0x3c8587-0x0;var _0x5da887=_0x0b44[_0x3c8587];return _0x5da887;};'use strict';function SalesforceAccount(_0x22f0df){this['id']=_0x22f0df['id']||0x0;this[_0x40b4('0x0')]=_0x22f0df['name']||'';this[_0x40b4('0x1')]=_0x22f0df[_0x40b4('0x1')]||'';this[_0x40b4('0x2')]=_0x22f0df['remoteUri']||'';this[_0x40b4('0x3')]=_0x22f0df['password']||'';this[_0x40b4('0x4')]=_0x22f0df[_0x40b4('0x4')]||'';this[_0x40b4('0x5')]=_0x22f0df[_0x40b4('0x5')]||'';this['securityToken']=_0x22f0df['securityToken']||'';this[_0x40b4('0x6')]=_0x22f0df[_0x40b4('0x6')]||_0x40b4('0x7');this[_0x40b4('0x8')]=_0x22f0df[_0x40b4('0x8')]||'';this[_0x40b4('0x9')]=_0x22f0df[_0x40b4('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0xc4b8=['remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name','username'];(function(_0x4b174a,_0x33a017){var _0x3cd7bf=function(_0x44ccd9){while(--_0x44ccd9){_0x4b174a['push'](_0x4b174a['shift']());}};_0x3cd7bf(++_0x33a017);}(_0xc4b8,0x1ed));var _0x8c4b=function(_0x273149,_0x5e02e0){_0x273149=_0x273149-0x0;var _0x5d8d5f=_0xc4b8[_0x273149];return _0x5d8d5f;};'use strict';function SalesforceAccount(_0x3a7833){this['id']=_0x3a7833['id']||0x0;this[_0x8c4b('0x0')]=_0x3a7833['name']||'';this[_0x8c4b('0x1')]=_0x3a7833['username']||'';this[_0x8c4b('0x2')]=_0x3a7833[_0x8c4b('0x2')]||'';this[_0x8c4b('0x3')]=_0x3a7833[_0x8c4b('0x3')]||'';this[_0x8c4b('0x4')]=_0x3a7833[_0x8c4b('0x4')]||'';this[_0x8c4b('0x5')]=_0x3a7833['clientSecret']||'';this[_0x8c4b('0x6')]=_0x3a7833[_0x8c4b('0x6')]||'';this['type']=_0x3a7833[_0x8c4b('0x7')]||_0x8c4b('0x8');this[_0x8c4b('0x9')]=_0x3a7833['serverUrl']||'';this[_0x8c4b('0xa')]=_0x3a7833[_0x8c4b('0xa')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 96d1f49..9b7dbf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x22d131,_0x54a116){var _0x658d64=function(_0x4fa447){while(--_0x4fa447){_0x22d131['push'](_0x22d131['shift']());}};_0x658d64(++_0x54a116);}(_0x3e74,0xfd));var _0x43e7=function(_0x1a5819,_0x4b8858){_0x1a5819=_0x1a5819-0x0;var _0x517c35=_0x3e74[_0x1a5819];return _0x517c35;};'use strict';function ServicenowAccount(_0x46e0d6){this['id']=_0x46e0d6['id']||0x0;this['name']=_0x46e0d6[_0x43e7('0x0')]||'';this[_0x43e7('0x1')]=_0x46e0d6[_0x43e7('0x1')]||'';this[_0x43e7('0x2')]=_0x46e0d6['password']||'';this[_0x43e7('0x3')]=_0x46e0d6[_0x43e7('0x3')]||'';this[_0x43e7('0x4')]=_0x46e0d6[_0x43e7('0x4')]||'';this[_0x43e7('0x5')]=_0x46e0d6[_0x43e7('0x5')]||{};}module[_0x43e7('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x6b1d=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x412342,_0x180734){var _0x3e62cb=function(_0x501fc6){while(--_0x501fc6){_0x412342['push'](_0x412342['shift']());}};_0x3e62cb(++_0x180734);}(_0x6b1d,0xc4));var _0xd6b1=function(_0x41f745,_0x4b5c4a){_0x41f745=_0x41f745-0x0;var _0x2cbbcb=_0x6b1d[_0x41f745];return _0x2cbbcb;};'use strict';function ServicenowAccount(_0x55d8bc){this['id']=_0x55d8bc['id']||0x0;this[_0xd6b1('0x0')]=_0x55d8bc['name']||'';this[_0xd6b1('0x1')]=_0x55d8bc[_0xd6b1('0x1')]||'';this[_0xd6b1('0x2')]=_0x55d8bc[_0xd6b1('0x2')]||'';this[_0xd6b1('0x3')]=_0x55d8bc[_0xd6b1('0x3')]||'';this[_0xd6b1('0x4')]=_0x55d8bc[_0xd6b1('0x4')]||'';this[_0xd6b1('0x5')]=_0x55d8bc[_0xd6b1('0x5')]||{};}module[_0xd6b1('0x6')]=ServicenowAccount;
\ No newline at end of file
index 5132e2b..5e9d963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1b=['serverUrl','Configurations','name','username','password'];(function(_0x4391e5,_0x491204){var _0x50db23=function(_0xd24d3d){while(--_0xd24d3d){_0x4391e5['push'](_0x4391e5['shift']());}};_0x50db23(++_0x491204);}(_0x2b1b,0xde));var _0xb2b1=function(_0x4afb39,_0x1bd52d){_0x4afb39=_0x4afb39-0x0;var _0xf39db5=_0x2b1b[_0x4afb39];return _0xf39db5;};'use strict';function SugarcrmAccount(_0x38eeae){this['id']=_0x38eeae['id']||0x0;this['name']=_0x38eeae[_0xb2b1('0x0')]||'';this[_0xb2b1('0x1')]=_0x38eeae[_0xb2b1('0x1')]||'';this['password']=_0x38eeae[_0xb2b1('0x2')]||'';this['remoteUri']=_0x38eeae['remoteUri']||'';this['serverUrl']=_0x38eeae[_0xb2b1('0x3')]||'';this[_0xb2b1('0x4')]=_0x38eeae[_0xb2b1('0x4')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0xc8e7=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x10e8cc,_0x450abf){var _0x3dc561=function(_0x4b894c){while(--_0x4b894c){_0x10e8cc['push'](_0x10e8cc['shift']());}};_0x3dc561(++_0x450abf);}(_0xc8e7,0x9d));var _0x7c8e=function(_0x59b533,_0x59fdcc){_0x59b533=_0x59b533-0x0;var _0x2beced=_0xc8e7[_0x59b533];return _0x2beced;};'use strict';function SugarcrmAccount(_0x50d9c9){this['id']=_0x50d9c9['id']||0x0;this[_0x7c8e('0x0')]=_0x50d9c9[_0x7c8e('0x0')]||'';this[_0x7c8e('0x1')]=_0x50d9c9[_0x7c8e('0x1')]||'';this[_0x7c8e('0x2')]=_0x50d9c9[_0x7c8e('0x2')]||'';this[_0x7c8e('0x3')]=_0x50d9c9[_0x7c8e('0x3')]||'';this['serverUrl']=_0x50d9c9[_0x7c8e('0x4')]||'';this[_0x7c8e('0x5')]=_0x50d9c9['Configurations']||{};}module[_0x7c8e('0x6')]=SugarcrmAccount;
\ No newline at end of file
index cc8e7c8..88c820d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a11=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0x6a11,0xc0));var _0x16a1=function(_0x3a4aec,_0x35c955){_0x3a4aec=_0x3a4aec-0x0;var _0x26bad8=_0x6a11[_0x3a4aec];return _0x26bad8;};'use strict';function Telephone(_0x2b3088){this['id']=_0x2b3088['id']||0x0;this['name']=_0x2b3088[_0x16a1('0x0')]||'';this[_0x16a1('0x1')]=_0x2b3088[_0x16a1('0x1')]||'';this[_0x16a1('0x2')]=_0x16a1('0x3');this[_0x16a1('0x4')]=0x0;this[_0x16a1('0x5')]=_0x16a1('0x3');this['address']='';}module[_0x16a1('0x6')]=Telephone;
\ No newline at end of file
+var _0x404b=['accountcode','state','unknown','status','address','exports','name'];(function(_0x3e390b,_0x4994cc){var _0x4e6101=function(_0x49a22d){while(--_0x49a22d){_0x3e390b['push'](_0x3e390b['shift']());}};_0x4e6101(++_0x4994cc);}(_0x404b,0x68));var _0xb404=function(_0x3dd745,_0x11b39b){_0x3dd745=_0x3dd745-0x0;var _0x362056=_0x404b[_0x3dd745];return _0x362056;};'use strict';function Telephone(_0x307788){this['id']=_0x307788['id']||0x0;this[_0xb404('0x0')]=_0x307788[_0xb404('0x0')]||'';this[_0xb404('0x1')]=_0x307788[_0xb404('0x1')]||'';this[_0xb404('0x2')]=_0xb404('0x3');this['stateTime']=0x0;this[_0xb404('0x4')]=_0xb404('0x3');this[_0xb404('0x5')]='';}module[_0xb404('0x6')]=Telephone;
\ No newline at end of file
index 4f38934..76a1abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x39394f,_0x127006){var _0x54f376=function(_0x38a19d){while(--_0x38a19d){_0x39394f['push'](_0x39394f['shift']());}};_0x54f376(++_0x127006);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'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(_0x11beec,_0x14cf08){var _0x476e51=function(_0xdc5dd7){while(--_0xdc5dd7){_0x11beec['push'](_0x11beec['shift']());}};_0x476e51(++_0x14cf08);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 de895ae..880f641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x7efeb5,_0x3343df){var _0x5df4b5=function(_0x4fa0a8){while(--_0x4fa0a8){_0x7efeb5['push'](_0x7efeb5['shift']());}};_0x5df4b5(++_0x3343df);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x41de08,_0x5ce678){_0x41de08=_0x41de08-0x0;var _0x106bf8=_0x9ffd[_0x41de08];return _0x106bf8;};'use strict';function Trigger(_0x4c26a1){this['id']=_0x4c26a1['id']||0x0;this[_0xd9ff('0x0')]=_0x4c26a1[_0xd9ff('0x0')]||'';this['channel']=_0x4c26a1[_0xd9ff('0x1')]||_0xd9ff('0x2');this[_0xd9ff('0x3')]=_0x4c26a1[_0xd9ff('0x3')]||![];this['AllConditions']=_0x4c26a1[_0xd9ff('0x4')]||[];this[_0xd9ff('0x5')]=_0x4c26a1['AnyConditions']||[];this[_0xd9ff('0x6')]=_0x4c26a1[_0xd9ff('0x6')]||[];}module[_0xd9ff('0x7')]=Trigger;
\ No newline at end of file
+var _0x0b0e=['channel','voice','status','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1653b1,_0x35b7d1){_0x1653b1=_0x1653b1-0x0;var _0x3e0b17=_0x0b0e[_0x1653b1];return _0x3e0b17;};'use strict';function Trigger(_0x29cd1e){this['id']=_0x29cd1e['id']||0x0;this['name']=_0x29cd1e[_0xe0b0('0x0')]||'';this['channel']=_0x29cd1e[_0xe0b0('0x1')]||_0xe0b0('0x2');this[_0xe0b0('0x3')]=_0x29cd1e[_0xe0b0('0x3')]||![];this[_0xe0b0('0x4')]=_0x29cd1e[_0xe0b0('0x4')]||[];this[_0xe0b0('0x5')]=_0x29cd1e[_0xe0b0('0x5')]||[];this[_0xe0b0('0x6')]=_0x29cd1e[_0xe0b0('0x6')]||[];}module[_0xe0b0('0x7')]=Trigger;
\ No newline at end of file
index 3229d66..e075e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98be=['domain','domainport','refresh','stateRegistry','registrationtime','defaultuser','active','name','state','unknown','status','registry','split','port'];(function(_0x17e735,_0x328f40){var _0x1824d6=function(_0x4460fe){while(--_0x4460fe){_0x17e735['push'](_0x17e735['shift']());}};_0x1824d6(++_0x328f40);}(_0x98be,0x19c));var _0xe98b=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x98be[_0x2fc012];return _0x2891f9;};'use strict';function Trunk(_0x1bf3a2){this['id']=_0x1bf3a2['id']||0x0;this[_0xe98b('0x0')]=_0x1bf3a2['active']||![];this['name']=_0x1bf3a2[_0xe98b('0x1')]||'';this[_0xe98b('0x2')]=_0xe98b('0x3');this['stateTime']=0x0;this[_0xe98b('0x4')]=_0xe98b('0x3');this['registry']=_0x1bf3a2[_0xe98b('0x5')]&&_0x1bf3a2[_0xe98b('0x5')]['indexOf'](':')?_0x1bf3a2[_0xe98b('0x5')][_0xe98b('0x6')](':')[0x0]:'';this['host']='';this[_0xe98b('0x7')]='';this[_0xe98b('0x8')]='';this[_0xe98b('0x9')]='';this[_0xe98b('0xa')]='';this[_0xe98b('0xb')]='unknown';this[_0xe98b('0xc')]='';this['address']='';this[_0xe98b('0xd')]=_0x1bf3a2['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x1add=['indexOf','host','port','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active','name','state','unknown','stateTime','registry'];(function(_0x383523,_0xfb1104){var _0x3ee036=function(_0x134cd0){while(--_0x134cd0){_0x383523['push'](_0x383523['shift']());}};_0x3ee036(++_0xfb1104);}(_0x1add,0x90));var _0xd1ad=function(_0x4e7f20,_0x379abf){_0x4e7f20=_0x4e7f20-0x0;var _0x4d5c2e=_0x1add[_0x4e7f20];return _0x4d5c2e;};'use strict';function Trunk(_0x266127){this['id']=_0x266127['id']||0x0;this[_0xd1ad('0x0')]=_0x266127['active']||![];this[_0xd1ad('0x1')]=_0x266127[_0xd1ad('0x1')]||'';this[_0xd1ad('0x2')]=_0xd1ad('0x3');this[_0xd1ad('0x4')]=0x0;this['status']=_0xd1ad('0x3');this[_0xd1ad('0x5')]=_0x266127['registry']&&_0x266127[_0xd1ad('0x5')][_0xd1ad('0x6')](':')?_0x266127[_0xd1ad('0x5')]['split'](':')[0x0]:'';this[_0xd1ad('0x7')]='';this[_0xd1ad('0x8')]='';this['domain']='';this[_0xd1ad('0x9')]='';this[_0xd1ad('0xa')]='';this[_0xd1ad('0xb')]='unknown';this[_0xd1ad('0xc')]='';this[_0xd1ad('0xd')]='';this['defaultuser']=_0x266127[_0xd1ad('0xe')]||'';}module['exports']=Trunk;
\ No newline at end of file
index e828c90..e84c20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe24a=['recordingFormat','mandatoryDisposition','exten'];(function(_0x2f637e,_0x35dde1){var _0x41de6b=function(_0x4260fb){while(--_0x4260fb){_0x2f637e['push'](_0x2f637e['shift']());}};_0x41de6b(++_0x35dde1);}(_0xe24a,0xb9));var _0xae24=function(_0x303209,_0xb4abc){_0x303209=_0x303209-0x0;var _0xbaf6f4=_0xe24a[_0x303209];return _0xbaf6f4;};'use strict';function voiceExtension(_0x5bdb38){this['id']=_0x5bdb38['id']||0x0;this['exten']=_0x5bdb38[_0xae24('0x0')]||'';this[_0xae24('0x1')]=_0x5bdb38[_0xae24('0x1')]||'none';this[_0xae24('0x2')]=_0x5bdb38[_0xae24('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0xfd63=['mandatoryDisposition','exports','exten','recordingFormat'];(function(_0xe4bb7e,_0x413a93){var _0x145a09=function(_0x4d225e){while(--_0x4d225e){_0xe4bb7e['push'](_0xe4bb7e['shift']());}};_0x145a09(++_0x413a93);}(_0xfd63,0xe6));var _0x3fd6=function(_0x34c387,_0x648c34){_0x34c387=_0x34c387-0x0;var _0x18131b=_0xfd63[_0x34c387];return _0x18131b;};'use strict';function voiceExtension(_0x169bb0){this['id']=_0x169bb0['id']||0x0;this[_0x3fd6('0x0')]=_0x169bb0[_0x3fd6('0x0')]||'';this[_0x3fd6('0x1')]=_0x169bb0[_0x3fd6('0x1')]||'none';this[_0x3fd6('0x2')]=_0x169bb0['mandatoryDisposition']||![];}module[_0x3fd6('0x3')]=voiceExtension;
\ No newline at end of file
index 6503db9..3c83fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x719c=['dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','erlangCalls','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval'];(function(_0x56740a,_0x568894){var _0x257144=function(_0x2b8cc5){while(--_0x2b8cc5){_0x56740a['push'](_0x56740a['shift']());}};_0x257144(++_0x568894);}(_0x719c,0x1c3));var _0xc719=function(_0x52d257,_0x134912){_0x52d257=_0x52d257-0x0;var _0x57b9d8=_0x719c[_0x52d257];return _0x57b9d8;};'use strict';var statusDesc=[_0xc719('0x0'),_0xc719('0x1'),_0xc719('0x2'),'busy',_0xc719('0x3'),_0xc719('0x4'),'ringing',_0xc719('0x5'),_0xc719('0x6')];var monitorFormat={'wav':_0xc719('0x7'),'wav49':_0xc719('0x8'),'gsm':_0xc719('0x9')};var strategy={'rrmemory':'rrmemory','roundrobin':_0xc719('0xa')};function VoiceQueue(_0x5a0684){this['id']=_0x5a0684['id']||0x0;this['name']=_0x5a0684[_0xc719('0xb')]||'';this[_0xc719('0xc')]=_0x5a0684[_0xc719('0xc')]||'';this[_0xc719('0xd')]=_0x5a0684[_0xc719('0xd')]||_0xc719('0xe');this[_0xc719('0xf')]=0x0;this[_0xc719('0x10')]=0x0;this[_0xc719('0x11')]=0x0;this[_0xc719('0x12')]=0x0;this[_0xc719('0x13')]=0x0;this[_0xc719('0x14')]=0x0;this[_0xc719('0x15')]=0x0;this[_0xc719('0x16')]=0x0;this[_0xc719('0x17')]=0x0;this['loggedIn']=0x0;this[_0xc719('0x18')]=0x0;this[_0xc719('0x19')]=_0x5a0684['acw']||![];this[_0xc719('0x1a')]=_0x5a0684[_0xc719('0x1a')]||0xa;this[_0xc719('0x1b')]=_0x5a0684[_0xc719('0x1b')]||'no';this[_0xc719('0x1c')]=!![];this['message']='';this[_0xc719('0x1d')]=0x0;this[_0xc719('0x1e')]=0x0;this[_0xc719('0x1f')]=_0x5a0684[_0xc719('0x1f')]||null;this[_0xc719('0x20')]=_0x5a0684[_0xc719('0x20')]?_0x5a0684[_0xc719('0x20')]:null;this[_0xc719('0x21')]=_0x5a0684[_0xc719('0x21')];this[_0xc719('0x22')]=_0x5a0684[_0xc719('0x22')]||_0xc719('0x23');this['dialLimitChannel']=_0x5a0684['dialLimitChannel']||0x0;this[_0xc719('0x24')]=_0x5a0684['dialLimitQueue']||0x0;this['dialPowerLevel']=_0x5a0684[_0xc719('0x25')]||0x1;this[_0xc719('0x26')]=_0x5a0684[_0xc719('0x26')]||'dropRate';this[_0xc719('0x27')]=_0x5a0684[_0xc719('0x27')]||0.03;this[_0xc719('0x28')]=_0x5a0684[_0xc719('0x28')]||0x258;this[_0xc719('0x29')]=_0x5a0684['dialOriginateCallerIdName']||_0xc719('0x2a');this[_0xc719('0x2b')]=_0x5a0684[_0xc719('0x2b')]||_0xc719('0x2a');this[_0xc719('0x2c')]=_0x5a0684[_0xc719('0x2c')]||0x1e;this[_0xc719('0x2d')]=_0x5a0684['dialQueueOptions']||_0xc719('0x2e');this[_0xc719('0x2f')]=_0x5a0684[_0xc719('0x2f')]||0x3;this['dialQueueProject']=_0x5a0684[_0xc719('0x30')]||undefined;this[_0xc719('0x31')]=_0x5a0684[_0xc719('0x31')]||0x3;this['dialCongestionRetryFrequency']=_0x5a0684[_0xc719('0x32')]||0x96;this[_0xc719('0x33')]=_0x5a0684[_0xc719('0x33')]||0x3;this[_0xc719('0x34')]=_0x5a0684[_0xc719('0x34')]||0x96;this[_0xc719('0x35')]=_0x5a0684[_0xc719('0x35')]||0x3;this[_0xc719('0x36')]=_0x5a0684['dialNoAnswerRetryFrequency']||0x96;this[_0xc719('0x37')]=_0x5a0684['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x5a0684[_0xc719('0x38')]||0x96;this[_0xc719('0x39')]=_0x5a0684[_0xc719('0x39')]||0x3;this[_0xc719('0x3a')]=_0x5a0684[_0xc719('0x3a')]||0x96;this[_0xc719('0x3b')]=_0x5a0684[_0xc719('0x3b')]||0x3;this[_0xc719('0x3c')]=_0x5a0684[_0xc719('0x3c')]||0x96;this[_0xc719('0x3d')]=_0x5a0684[_0xc719('0x3d')]||0x3;this[_0xc719('0x3e')]=_0x5a0684[_0xc719('0x3e')]||0x96;this['dialAgentRejectMaxRetry']=_0x5a0684[_0xc719('0x3f')]||0x3;this[_0xc719('0x40')]=_0x5a0684[_0xc719('0x40')]||0x96;this['callAdditionalPhoneAfterMin']=_0x5a0684[_0xc719('0x41')]||0x3;this[_0xc719('0x42')]=_0x5a0684['dialGlobalMaxRetry']||0x4;this[_0xc719('0x43')]=_0x5a0684[_0xc719('0x43')]?_0x5a0684['Trunk']:undefined;this[_0xc719('0x44')]=_0x5a0684[_0xc719('0x44')]?_0x5a0684[_0xc719('0x44')]:undefined;this['dialPrefix']=_0x5a0684['dialPrefix']||undefined;this[_0xc719('0x45')]=_0x5a0684[_0xc719('0x45')]?_0x5a0684['Interval']:undefined;this[_0xc719('0x46')]=_0x5a0684[_0xc719('0x46')]||_0xc719('0x47');this[_0xc719('0x48')]=_0x5a0684[_0xc719('0x48')]||undefined;this[_0xc719('0x49')]=_0x5a0684['dialCutDigit']||undefined;this[_0xc719('0x4a')]=strategy[_0x5a0684['strategy']]||_0xc719('0x4b');this['queueStatusComplete']=!![];this[_0xc719('0x4c')]=_0x5a0684[_0xc719('0x4c')]||![];this[_0xc719('0x4d')]=_0x5a0684[_0xc719('0x4d')];this[_0xc719('0x4e')]=_0x5a0684[_0xc719('0x4e')];this[_0xc719('0x4f')]=_0x5a0684[_0xc719('0x4f')];this[_0xc719('0x50')]=_0x5a0684[_0xc719('0x50')];this[_0xc719('0x51')]=_0x5a0684[_0xc719('0x51')];this[_0xc719('0x52')]=_0x5a0684[_0xc719('0x52')];this[_0xc719('0x53')]=_0x5a0684['dialAMDMaximumNumberOfWords'];this[_0xc719('0x54')]=_0x5a0684[_0xc719('0x54')];this[_0xc719('0x55')]=_0x5a0684[_0xc719('0x55')];this[_0xc719('0x56')]=0x0;this['pTalking']=0x0;this[_0xc719('0x57')]=_0x5a0684[_0xc719('0x57')];this[_0xc719('0x58')]=0x0;this[_0xc719('0x59')]=0x0;this[_0xc719('0x5a')]=0x0;this[_0xc719('0x5b')]=0x0;this[_0xc719('0x5c')]=0x0;this[_0xc719('0x5d')]=0x0;this[_0xc719('0x5e')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xc719('0x5f')]=0x0;this[_0xc719('0x60')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0xc719('0x61')]=0x0;this[_0xc719('0x62')]=0x0;this[_0xc719('0x63')]=0x0;this[_0xc719('0x64')]=undefined;this[_0xc719('0x65')]=undefined;this[_0xc719('0x66')]=undefined;this[_0xc719('0x67')]=1.05;this[_0xc719('0x68')]=0x0;this[_0xc719('0x69')]=0x0;this[_0xc719('0x6a')]=0x0;this[_0xc719('0x6b')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0xc719('0x6c')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0xc719('0x6d')]=0x0;this[_0xc719('0x6e')]=_0x5a0684[_0xc719('0x6f')]||0x14;this[_0xc719('0x70')]=_0x5a0684[_0xc719('0x6f')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this['predictiveIntervalHitRate']=0x1;this[_0xc719('0x71')]=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0xc719('0x72')]=0x0;this['dialRecallMeTimeout']=_0x5a0684[_0xc719('0x73')]||0x1e;this[_0xc719('0x74')]=_0x5a0684['dialRecallInQueue']||![];this['dialPreviewAutoRecallMe']=!!_0x5a0684[_0xc719('0x75')]||![];this['dialPreviewRecallmeReminder']=!!_0x5a0684['dialPreviewRecallmeReminder']||![];this[_0xc719('0x76')]=_0x5a0684[_0xc719('0x76')]||undefined;this[_0xc719('0x77')]=_0x5a0684[_0xc719('0x77')]||![];this[_0xc719('0x78')]=_0x5a0684[_0xc719('0x78')]||![];this['monitor_format']=monitorFormat[_0x5a0684[_0xc719('0xc')]]?monitorFormat[_0x5a0684['monitor_format']]:undefined;this[_0xc719('0x79')]=_0x5a0684[_0xc719('0x79')]||![];this[_0xc719('0x7a')]=_0x5a0684['mandatoryDispositionPause']?_0x5a0684[_0xc719('0x7a')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0xe14b=['outboundAbandonedDay','startProgressive','startPredictive','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','wav','wav49','leastrecent','linear','ringall','rrordered','wrandom','name','monitor_format','waiting','total','answered','sumDuration','unmanaged','abandoned','busy','inUse','invalid','loggedIn','notInUse','onHold','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout'];(function(_0x3a4441,_0x31d1d0){var _0x552d7d=function(_0xf586e){while(--_0xf586e){_0x3a4441['push'](_0x3a4441['shift']());}};_0x552d7d(++_0x31d1d0);}(_0xe14b,0x93));var _0xbe14=function(_0x103703,_0x5ba970){_0x103703=_0x103703-0x0;var _0x30cd6e=_0xe14b[_0x103703];return _0x30cd6e;};'use strict';var monitorFormat={'wav':_0xbe14('0x0'),'wav49':_0xbe14('0x1'),'gsm':'gsm'};var strategy={'fewestcalls':'fewestcalls','leastrecent':_0xbe14('0x2'),'linear':_0xbe14('0x3'),'random':'random','ringall':_0xbe14('0x4'),'rr':'roundrobin','rrmemory':'rrmemory','rrordered':_0xbe14('0x5'),'wrandom':_0xbe14('0x6')};function VoiceQueue(_0x1fe204){this['id']=_0x1fe204['id']||0x0;this[_0xbe14('0x7')]=_0x1fe204[_0xbe14('0x7')]||'';this[_0xbe14('0x8')]=_0x1fe204[_0xbe14('0x8')]||'';this['type']=_0x1fe204['type']||'inbound';this[_0xbe14('0x9')]=0x0;this[_0xbe14('0xa')]=0x0;this[_0xbe14('0xb')]=0x0;this[_0xbe14('0xc')]=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0xbe14('0xd')]=0x0;this[_0xbe14('0xe')]=0x0;this['available']=0x0;this[_0xbe14('0xf')]=0x0;this[_0xbe14('0x10')]=0x0;this[_0xbe14('0x11')]=0x0;this[_0xbe14('0x12')]=0x0;this[_0xbe14('0x13')]=0x0;this[_0xbe14('0x14')]=0x0;this[_0xbe14('0x15')]=0x0;this[_0xbe14('0x16')]=0x0;this[_0xbe14('0x17')]=0x0;this[_0xbe14('0x18')]=0x0;this[_0xbe14('0x19')]=0x0;this[_0xbe14('0x1a')]=0x0;this[_0xbe14('0x1b')]=_0x1fe204['acw']||![];this['acwTimeout']=_0x1fe204[_0xbe14('0x1c')]||0xa;this[_0xbe14('0x1d')]=_0x1fe204[_0xbe14('0x1d')]||'no';this[_0xbe14('0x1e')]=!![];this['message']='';this[_0xbe14('0x1f')]=0x0;this[_0xbe14('0x20')]=0x0;this[_0xbe14('0x21')]=_0x1fe204[_0xbe14('0x21')]||null;this[_0xbe14('0x22')]=_0x1fe204[_0xbe14('0x22')]?_0x1fe204[_0xbe14('0x22')]:null;this['dialActive']=_0x1fe204[_0xbe14('0x23')];this[_0xbe14('0x24')]=_0x1fe204[_0xbe14('0x24')]||_0xbe14('0x25');this[_0xbe14('0x26')]=_0x1fe204[_0xbe14('0x26')]||0x0;this['dialLimitQueue']=_0x1fe204[_0xbe14('0x27')]||0x0;this[_0xbe14('0x28')]=_0x1fe204[_0xbe14('0x28')]||0x1;this[_0xbe14('0x29')]=_0x1fe204[_0xbe14('0x29')]||'dropRate';this[_0xbe14('0x2a')]=_0x1fe204['dialPredictiveOptimizationPercentage']||0.03;this[_0xbe14('0x2b')]=_0x1fe204['dialPredictiveInterval']||0x258;this[_0xbe14('0x2c')]=_0x1fe204['dialOriginateCallerIdName']||_0xbe14('0x2d');this[_0xbe14('0x2e')]=_0x1fe204['dialOriginateCallerIdNumber']||_0xbe14('0x2d');this['dialOriginateTimeout']=_0x1fe204[_0xbe14('0x2f')]||0x1e;this['dialQueueOptions']=_0x1fe204[_0xbe14('0x30')]||_0xbe14('0x31');this[_0xbe14('0x32')]=_0x1fe204[_0xbe14('0x32')]||0x3;this[_0xbe14('0x33')]=_0x1fe204[_0xbe14('0x33')]||undefined;this['dialCongestionMaxRetry']=_0x1fe204[_0xbe14('0x34')]||0x3;this[_0xbe14('0x35')]=_0x1fe204[_0xbe14('0x35')]||0x96;this[_0xbe14('0x36')]=_0x1fe204['dialBusyMaxRetry']||0x3;this[_0xbe14('0x37')]=_0x1fe204[_0xbe14('0x37')]||0x96;this['dialNoAnswerMaxRetry']=_0x1fe204[_0xbe14('0x38')]||0x3;this[_0xbe14('0x39')]=_0x1fe204[_0xbe14('0x39')]||0x96;this[_0xbe14('0x3a')]=_0x1fe204[_0xbe14('0x3a')]||0x3;this[_0xbe14('0x3b')]=_0x1fe204[_0xbe14('0x3b')]||0x96;this[_0xbe14('0x3c')]=_0x1fe204[_0xbe14('0x3c')]||0x3;this[_0xbe14('0x3d')]=_0x1fe204[_0xbe14('0x3d')]||0x96;this[_0xbe14('0x3e')]=_0x1fe204[_0xbe14('0x3e')]||0x3;this[_0xbe14('0x3f')]=_0x1fe204[_0xbe14('0x3f')]||0x96;this[_0xbe14('0x40')]=_0x1fe204[_0xbe14('0x40')]||0x3;this[_0xbe14('0x41')]=_0x1fe204[_0xbe14('0x41')]||0x96;this[_0xbe14('0x42')]=_0x1fe204['dialAgentRejectMaxRetry']||0x3;this[_0xbe14('0x43')]=_0x1fe204['dialAgentRejectRetryFrequency']||0x96;this['callAdditionalPhoneAfterMin']=_0x1fe204[_0xbe14('0x44')]||0x3;this['dialGlobalMaxRetry']=_0x1fe204[_0xbe14('0x45')]||0x4;this[_0xbe14('0x46')]=_0x1fe204['Trunk']?_0x1fe204['Trunk']:undefined;this['TrunkBackup']=_0x1fe204[_0xbe14('0x47')]?_0x1fe204[_0xbe14('0x47')]:undefined;this['dialPrefix']=_0x1fe204[_0xbe14('0x48')]||undefined;this[_0xbe14('0x49')]=_0x1fe204[_0xbe14('0x49')]?_0x1fe204[_0xbe14('0x49')]:undefined;this[_0xbe14('0x4a')]=_0x1fe204['dialOrderByScheduledAt']||'DESC';this[_0xbe14('0x4b')]=_0x1fe204['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x1fe204['dialCutDigit']||undefined;this[_0xbe14('0x4c')]=strategy[_0x1fe204[_0xbe14('0x4c')]]||_0xbe14('0x4d');this[_0xbe14('0x4e')]=!![];this[_0xbe14('0x4f')]=_0x1fe204[_0xbe14('0x4f')]||![];this[_0xbe14('0x50')]=_0x1fe204[_0xbe14('0x50')];this[_0xbe14('0x51')]=_0x1fe204[_0xbe14('0x51')];this[_0xbe14('0x52')]=_0x1fe204[_0xbe14('0x52')];this['dialAMDTotalAnalysisTime']=_0x1fe204['dialAMDTotalAnalysisTime'];this[_0xbe14('0x53')]=_0x1fe204[_0xbe14('0x53')];this[_0xbe14('0x54')]=_0x1fe204['dialAMDBetweenWordsSilence'];this[_0xbe14('0x55')]=_0x1fe204[_0xbe14('0x55')];this[_0xbe14('0x56')]=_0x1fe204[_0xbe14('0x56')];this[_0xbe14('0x57')]=_0x1fe204[_0xbe14('0x57')];this[_0xbe14('0x58')]=0x0;this[_0xbe14('0x59')]=0x0;this[_0xbe14('0x5a')]=_0x1fe204['timeout'];this[_0xbe14('0x5b')]=0x0;this[_0xbe14('0x5c')]=0x0;this[_0xbe14('0x5d')]=0x0;this[_0xbe14('0x5e')]=0x0;this[_0xbe14('0x5f')]=0x0;this[_0xbe14('0x60')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xbe14('0x61')]=0x0;this[_0xbe14('0x62')]=0x0;this[_0xbe14('0x63')]=0x0;this[_0xbe14('0x64')]=0x0;this['outboundDropCallsDayACS']=0x0;this['outboundReCallsDay']=0x0;this[_0xbe14('0x65')]=0x0;this[_0xbe14('0x66')]=undefined;this[_0xbe14('0x67')]=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xbe14('0x68')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xbe14('0x69')]=0x0;this[_0xbe14('0x6a')]=0x0;this[_0xbe14('0x6b')]=0x0;this['predictiveIntervalPauses']=0x0;this['predictiveIntervalAvailable']=0x0;this['predictiveIntervalMaxThreshold']=_0x1fe204[_0xbe14('0x6c')]||0x14;this[_0xbe14('0x6d')]=_0x1fe204[_0xbe14('0x6c')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0xbe14('0x6e')]=0x0;this[_0xbe14('0x6f')]=0x1;this[_0xbe14('0x70')]=0x0;this[_0xbe14('0x71')]=0x0;this['erlangAbandonmentRate']=0x0;this['erlangBusyFactor']=0x0;this[_0xbe14('0x72')]=_0x1fe204[_0xbe14('0x72')]||0x1e;this[_0xbe14('0x73')]=_0x1fe204[_0xbe14('0x73')]||![];this[_0xbe14('0x74')]=!!_0x1fe204['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x1fe204[_0xbe14('0x75')]||![];this[_0xbe14('0x76')]=_0x1fe204[_0xbe14('0x76')]||undefined;this[_0xbe14('0x77')]=_0x1fe204['dialAgiAfterHangupClient']||![];this[_0xbe14('0x78')]=_0x1fe204[_0xbe14('0x78')]||![];this['monitor_format']=monitorFormat[_0x1fe204[_0xbe14('0x8')]]?monitorFormat[_0x1fe204[_0xbe14('0x8')]]:undefined;this[_0xbe14('0x79')]=_0x1fe204[_0xbe14('0x79')]||![];this['mandatoryDispositionPause']=_0x1fe204['mandatoryDispositionPause']?_0x1fe204[_0xbe14('0x7a')]:undefined;}module[_0xbe14('0x7b')]=VoiceQueue;
\ No newline at end of file
diff --git a/server/services/ami/model/voiceQueueSummary.js b/server/services/ami/model/voiceQueueSummary.js
new file mode 100644 (file)
index 0000000..fc08369
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x8cb9=['temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','exports','name','strategy','abandoned','answered','busy','inUse','invalid','loggedIn','loggedInDb','onHold','notInUse','paused','ringing','ringInUse','sumBillable','sumDuration','sumHoldTime','talking','total','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix'];(function(_0x3ab72f,_0x3b1bcc){var _0x4a79e0=function(_0x3a7fdc){while(--_0x3a7fdc){_0x3ab72f['push'](_0x3ab72f['shift']());}};_0x4a79e0(++_0x3b1bcc);}(_0x8cb9,0x13f));var _0x98cb=function(_0x55c2b5,_0x2c255c){_0x55c2b5=_0x55c2b5-0x0;var _0x5a6ad8=_0x8cb9[_0x55c2b5];return _0x5a6ad8;};'use strict';function VoiceQueueSummary(_0x2d474){this['id']=_0x2d474['id'];this[_0x98cb('0x0')]=_0x2d474[_0x98cb('0x0')];this[_0x98cb('0x1')]=_0x2d474['strategy'];this[_0x98cb('0x2')]=_0x2d474['abandoned']||0x0;this[_0x98cb('0x3')]=_0x2d474['answered']||0x0;this['available']=_0x2d474['available']||0x0;this[_0x98cb('0x4')]=_0x2d474['busy']||0x0;this['inUse']=_0x2d474[_0x98cb('0x5')]||0x0;this[_0x98cb('0x6')]=_0x2d474[_0x98cb('0x6')]||0x0;this[_0x98cb('0x7')]=_0x2d474[_0x98cb('0x7')]||0x0;this[_0x98cb('0x8')]=_0x2d474[_0x98cb('0x8')]||0x0;this[_0x98cb('0x9')]=_0x2d474[_0x98cb('0x9')]||0x0;this[_0x98cb('0xa')]=_0x2d474[_0x98cb('0xa')]||0x0;this[_0x98cb('0xb')]=_0x2d474[_0x98cb('0xb')]||0x0;this[_0x98cb('0xc')]=_0x2d474[_0x98cb('0xc')]||0x0;this[_0x98cb('0xd')]=_0x2d474[_0x98cb('0xd')];this[_0x98cb('0xe')]=_0x2d474[_0x98cb('0xe')];this[_0x98cb('0xf')]=_0x2d474[_0x98cb('0xf')];this['sumHoldTime']=_0x2d474[_0x98cb('0x10')]||0x0;this['talking']=_0x2d474[_0x98cb('0x11')]||0x0;this[_0x98cb('0x12')]=_0x2d474[_0x98cb('0x12')]||0x0;this[_0x98cb('0x13')]=_0x2d474[_0x98cb('0x13')];this['unavailable']=_0x2d474[_0x98cb('0x14')]||0x0;this['unknown']=_0x2d474[_0x98cb('0x15')]||0x0;this[_0x98cb('0x16')]=_0x2d474[_0x98cb('0x16')]||0x0;this['waiting']=_0x2d474['waiting']||0x0;if(_0x2d474[_0x98cb('0x13')]===_0x98cb('0x17')){this[_0x98cb('0x18')]=_0x2d474[_0x98cb('0x18')]||0x0;this['dialActive']=_0x2d474[_0x98cb('0x19')];this[_0x98cb('0x1a')]=_0x2d474[_0x98cb('0x1a')];this[_0x98cb('0x1b')]=_0x2d474[_0x98cb('0x1b')];this[_0x98cb('0x1c')]=_0x2d474[_0x98cb('0x1c')];this[_0x98cb('0x1d')]=_0x2d474[_0x98cb('0x1d')];this[_0x98cb('0x1e')]=_0x2d474[_0x98cb('0x1e')];this[_0x98cb('0x1f')]=_0x2d474[_0x98cb('0x1f')];this[_0x98cb('0x20')]=_0x2d474['outboundAnswerAgiCallsDay'];this[_0x98cb('0x21')]=_0x2d474[_0x98cb('0x21')];this[_0x98cb('0x22')]=_0x2d474[_0x98cb('0x22')];this[_0x98cb('0x23')]=_0x2d474[_0x98cb('0x23')];this[_0x98cb('0x24')]=_0x2d474[_0x98cb('0x24')];this[_0x98cb('0x25')]=_0x2d474[_0x98cb('0x25')];this[_0x98cb('0x26')]=_0x2d474[_0x98cb('0x26')];this[_0x98cb('0x27')]=_0x2d474['outboundDropCallsDayTimeout'];this[_0x98cb('0x28')]=_0x2d474['outboundNoAnswerCallsDay'];this[_0x98cb('0x29')]=_0x2d474[_0x98cb('0x29')];this[_0x98cb('0x2a')]=_0x2d474[_0x98cb('0x2a')];this[_0x98cb('0x2b')]=_0x2d474[_0x98cb('0x2b')];this[_0x98cb('0x2c')]=_0x2d474[_0x98cb('0x2c')];this[_0x98cb('0x2d')]=_0x2d474[_0x98cb('0x2d')];this['predictiveIntervalAnsweredCalls']=_0x2d474[_0x98cb('0x2e')];this['predictiveIntervalAvgHoldtime']=_0x2d474[_0x98cb('0x2f')];this[_0x98cb('0x30')]=_0x2d474[_0x98cb('0x30')];this[_0x98cb('0x31')]=_0x2d474[_0x98cb('0x31')];this['predictiveIntervalDroppedCallsTimeout']=_0x2d474[_0x98cb('0x32')];this[_0x98cb('0x33')]=_0x2d474[_0x98cb('0x33')];this[_0x98cb('0x34')]=_0x2d474[_0x98cb('0x34')];this[_0x98cb('0x35')]=_0x2d474[_0x98cb('0x35')];this[_0x98cb('0x36')]=_0x2d474[_0x98cb('0x36')];this['predictiveIntervalPauses']=_0x2d474[_0x98cb('0x37')];this[_0x98cb('0x38')]=_0x2d474[_0x98cb('0x38')];this[_0x98cb('0x39')]=_0x2d474[_0x98cb('0x39')];this[_0x98cb('0x3a')]=_0x2d474[_0x98cb('0x3a')];this[_0x98cb('0x3b')]=_0x2d474[_0x98cb('0x3b')];this[_0x98cb('0x3c')]=_0x2d474[_0x98cb('0x3c')];this[_0x98cb('0x3d')]=_0x2d474[_0x98cb('0x3d')];this[_0x98cb('0x3e')]=_0x2d474[_0x98cb('0x3e')];this['erlangBusyFactor']=_0x2d474[_0x98cb('0x3f')];this[_0x98cb('0x40')]=_0x2d474[_0x98cb('0x40')];this[_0x98cb('0x41')]=_0x2d474['startProgressive'];}if(_0x2d474[_0x98cb('0x42')]){this[_0x98cb('0x42')]={'id':_0x2d474[_0x98cb('0x42')]['id'],'name':_0x2d474[_0x98cb('0x42')][_0x98cb('0x0')],'active':_0x2d474['Trunk']['active'],'callerid':_0x2d474['Trunk'][_0x98cb('0x43')]};}if(_0x2d474[_0x98cb('0x44')]){this['Interval']={'id':_0x2d474[_0x98cb('0x44')]['id'],'name':_0x2d474['Interval'][_0x98cb('0x0')]};}}module[_0x98cb('0x45')]=VoiceQueueSummary;
\ No newline at end of file
index 6788237..40d0b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d4=['remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x4ee8da,_0x111e61){var _0x2d485c=function(_0x2550d1){while(--_0x2550d1){_0x4ee8da['push'](_0x4ee8da['shift']());}};_0x2d485c(++_0x111e61);}(_0x75d4,0x112));var _0x475d=function(_0x50d180,_0x11ff17){_0x50d180=_0x50d180-0x0;var _0x576c15=_0x75d4[_0x50d180];return _0x576c15;};'use strict';function VtigerAccount(_0x5b017d){this['id']=_0x5b017d['id']||0x0;this[_0x475d('0x0')]=_0x5b017d['name']||'';this[_0x475d('0x1')]=_0x5b017d[_0x475d('0x1')]||'';this['accessKey']=_0x5b017d['accessKey']||'';this[_0x475d('0x2')]=_0x5b017d[_0x475d('0x2')]||'';this['serverUrl']=_0x5b017d[_0x475d('0x3')]||'';this[_0x475d('0x4')]=_0x5b017d[_0x475d('0x4')]||{};}module[_0x475d('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x5caf=['username','accessKey','remoteUri','Configurations','exports','name'];(function(_0x482ec5,_0x1e5e54){var _0x12b3e3=function(_0xa3bbad){while(--_0xa3bbad){_0x482ec5['push'](_0x482ec5['shift']());}};_0x12b3e3(++_0x1e5e54);}(_0x5caf,0x149));var _0xf5ca=function(_0x26803d,_0x57fe5d){_0x26803d=_0x26803d-0x0;var _0x53744c=_0x5caf[_0x26803d];return _0x53744c;};'use strict';function VtigerAccount(_0x2f0ad7){this['id']=_0x2f0ad7['id']||0x0;this[_0xf5ca('0x0')]=_0x2f0ad7[_0xf5ca('0x0')]||'';this['username']=_0x2f0ad7[_0xf5ca('0x1')]||'';this[_0xf5ca('0x2')]=_0x2f0ad7[_0xf5ca('0x2')]||'';this[_0xf5ca('0x3')]=_0x2f0ad7[_0xf5ca('0x3')]||'';this['serverUrl']=_0x2f0ad7['serverUrl']||'';this[_0xf5ca('0x4')]=_0x2f0ad7['Configurations']||{};}module[_0xf5ca('0x5')]=VtigerAccount;
\ No newline at end of file
index d34f528..475cbef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b3=['serverUrl','exports','name','username','token','remoteUri','authType','type','integrationTab'];(function(_0x29fc92,_0x588038){var _0x12804f=function(_0x549bdf){while(--_0x549bdf){_0x29fc92['push'](_0x29fc92['shift']());}};_0x12804f(++_0x588038);}(_0x95b3,0x1b2));var _0x395b=function(_0x19e376,_0x3bd366){_0x19e376=_0x19e376-0x0;var _0x49c43d=_0x95b3[_0x19e376];return _0x49c43d;};'use strict';function ZendeskAccount(_0x1426c2){this['id']=_0x1426c2['id']||0x0;this[_0x395b('0x0')]=_0x1426c2['name']||'';this[_0x395b('0x1')]=_0x1426c2[_0x395b('0x1')]||'';this['password']=_0x1426c2['password']||'';this[_0x395b('0x2')]=_0x1426c2['token']||'';this['remoteUri']=_0x1426c2[_0x395b('0x3')]||'';this[_0x395b('0x4')]=_0x1426c2['authType']||'';this['type']=_0x1426c2[_0x395b('0x5')]||_0x395b('0x6');this[_0x395b('0x7')]=_0x1426c2[_0x395b('0x7')]||'';this['Configurations']=_0x1426c2['Configurations']||{};}module[_0x395b('0x8')]=ZendeskAccount;
\ No newline at end of file
+var _0xea21=['name','password','token','remoteUri','authType','serverUrl','exports'];(function(_0x6c9cde,_0x3d3d08){var _0x42b50c=function(_0x219421){while(--_0x219421){_0x6c9cde['push'](_0x6c9cde['shift']());}};_0x42b50c(++_0x3d3d08);}(_0xea21,0x1f1));var _0x1ea2=function(_0x5660bc,_0x11963a){_0x5660bc=_0x5660bc-0x0;var _0x387378=_0xea21[_0x5660bc];return _0x387378;};'use strict';function ZendeskAccount(_0x132e72){this['id']=_0x132e72['id']||0x0;this[_0x1ea2('0x0')]=_0x132e72[_0x1ea2('0x0')]||'';this['username']=_0x132e72['username']||'';this[_0x1ea2('0x1')]=_0x132e72['password']||'';this[_0x1ea2('0x2')]=_0x132e72[_0x1ea2('0x2')]||'';this[_0x1ea2('0x3')]=_0x132e72[_0x1ea2('0x3')]||'';this[_0x1ea2('0x4')]=_0x132e72['authType']||'';this['type']=_0x132e72['type']||'integrationTab';this[_0x1ea2('0x5')]=_0x132e72[_0x1ea2('0x5')]||'';this['Configurations']=_0x132e72['Configurations']||{};}module[_0x1ea2('0x6')]=ZendeskAccount;
\ No newline at end of file
index 2d39b5b..6f21cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19cb=['host','zone','clientId','clientSecret','code','refreshToken','Configurations','exports','name','description'];(function(_0x483b4c,_0x5167b1){var _0x5d1b87=function(_0x4cad32){while(--_0x4cad32){_0x483b4c['push'](_0x483b4c['shift']());}};_0x5d1b87(++_0x5167b1);}(_0x19cb,0x9e));var _0xb19c=function(_0x547cc7,_0xc186c6){_0x547cc7=_0x547cc7-0x0;var _0x4ada9=_0x19cb[_0x547cc7];return _0x4ada9;};'use strict';function ZohoAccount(_0x501775){this['id']=_0x501775['id']||0x0;this[_0xb19c('0x0')]=_0x501775[_0xb19c('0x0')]||'';this[_0xb19c('0x1')]=_0x501775[_0xb19c('0x1')]||'';this[_0xb19c('0x2')]=_0x501775[_0xb19c('0x2')]||'';this['zone']=_0x501775[_0xb19c('0x3')]||'';this[_0xb19c('0x4')]=_0x501775['clientId']||'';this[_0xb19c('0x5')]=_0x501775['clientSecret']||'';this['serverUrl']=_0x501775['serverUrl']||'';this['code']=_0x501775[_0xb19c('0x6')]||'';this[_0xb19c('0x7')]=_0x501775['refreshToken']||'';this[_0xb19c('0x8')]=_0x501775['Configurations']||{};}module[_0xb19c('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0xdb8b=['clientId','clientSecret','code','refreshToken','Configurations','name','description','host','zone'];(function(_0x2b5b0f,_0x20f61d){var _0x6945b6=function(_0x258b7a){while(--_0x258b7a){_0x2b5b0f['push'](_0x2b5b0f['shift']());}};_0x6945b6(++_0x20f61d);}(_0xdb8b,0xf8));var _0xbdb8=function(_0x27527e,_0x10652c){_0x27527e=_0x27527e-0x0;var _0x492ec8=_0xdb8b[_0x27527e];return _0x492ec8;};'use strict';function ZohoAccount(_0x53c688){this['id']=_0x53c688['id']||0x0;this[_0xbdb8('0x0')]=_0x53c688['name']||'';this[_0xbdb8('0x1')]=_0x53c688[_0xbdb8('0x1')]||'';this[_0xbdb8('0x2')]=_0x53c688['host']||'';this[_0xbdb8('0x3')]=_0x53c688[_0xbdb8('0x3')]||'';this[_0xbdb8('0x4')]=_0x53c688[_0xbdb8('0x4')]||'';this[_0xbdb8('0x5')]=_0x53c688[_0xbdb8('0x5')]||'';this['serverUrl']=_0x53c688['serverUrl']||'';this[_0xbdb8('0x6')]=_0x53c688[_0xbdb8('0x6')]||'';this['refreshToken']=_0x53c688[_0xbdb8('0x7')]||'';this[_0xbdb8('0x8')]=_0x53c688['Configurations']||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 845b332..c8ae9ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['type','campaigntype','queue','Agent','channelAgent','membername','format','SIP/%s','calleridname','Contact','firstName','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','prototype','getCaller','exports','lodash','moment','isNil','string','uniqueid','idContact','name'];(function(_0x4f492c,_0x2f5d87){var _0x347ea5=function(_0x7f5e5a){while(--_0x7f5e5a){_0x4f492c['push'](_0x4f492c['shift']());}};_0x347ea5(++_0x2f5d87);}(_0x1967,0x173));var _0x7196=function(_0xba4857,_0x2e880f){_0xba4857=_0xba4857-0x0;var _0x2463c8=_0x1967[_0xba4857];return _0x2463c8;};'use strict';var util=require('util');var _=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));function checkNameSurname(_0x4d0a98,_0x35803d,_0x3319fa){var _0xa80a3f='';if(!_[_0x7196('0x2')](_0x35803d)&&_0x7196('0x3')===typeof _0x35803d){_0xa80a3f+=_0x35803d;}if(!_[_0x7196('0x2')](_0x3319fa)&&_0x7196('0x3')===typeof _0x3319fa){_0xa80a3f+='\x20'+_0x3319fa;}if(_0xa80a3f!==''){return _0xa80a3f;}return _0x4d0a98;}function Action(_0x5c128f,_0x36b01e,_0x186175,_0x194746,_0x40e0af){this[_0x7196('0x4')]=_0x186175||undefined;this[_0x7196('0x5')]=_0x5c128f['id'];this['queue']=_0x36b01e[_0x7196('0x6')];this[_0x7196('0x7')]=_0x36b01e[_0x7196('0x7')];this[_0x7196('0x8')]=_0x7196('0x9');this['dialAnswer']=![];this['membername']=_[_0x7196('0x2')](_0x5c128f[_0x7196('0xa')])?undefined:_0x5c128f[_0x7196('0xa')][_0x7196('0x6')];this[_0x7196('0xb')]=this[_0x7196('0xc')]?util[_0x7196('0xd')](_0x7196('0xe'),this[_0x7196('0xc')]):_0x194746||undefined;this[_0x7196('0xf')]=checkNameSurname(_0x5c128f[_0x7196('0x10')]['phone'],_0x5c128f[_0x7196('0x10')][_0x7196('0x11')],_0x5c128f[_0x7196('0x10')][_0x7196('0x12')]);this['active']=_0x5c128f[_0x7196('0x13')]||![];this['calleridnum']=_0x5c128f[_0x7196('0x14')];this[_0x7196('0x15')]=_0x5c128f[_0x7196('0x15')];this[_0x7196('0x16')]=_0x5c128f[_0x7196('0x16')]||0x0;this[_0x7196('0x17')]=_0x5c128f[_0x7196('0x17')]||0x0;this[_0x7196('0x18')]=_0x5c128f[_0x7196('0x18')]||0x0;this[_0x7196('0x19')]=(_0x5c128f[_0x7196('0x16')]||0x0)+(_0x5c128f['countcongestionretry']||0x0)+(_0x5c128f['countnoanswerretry']||0x0)+(_0x5c128f[_0x7196('0x1a')]||0x0)+(_0x5c128f[_0x7196('0x1b')]||0x0)+(_0x5c128f[_0x7196('0x1c')]||0x0)+(_0x5c128f['countmachineretry']||0x0)+(_0x5c128f[_0x7196('0x1d')]||0x0);this['countnosuchnumberretry']=_0x5c128f['countnosuchnumberretry']||0x0;this[_0x7196('0x1b')]=_0x5c128f[_0x7196('0x1b')]||0x0;this[_0x7196('0x1c')]=_0x5c128f['countabandonedretry']||0x0;this['countmachineretry']=_0x5c128f[_0x7196('0x1e')]||0x0;this[_0x7196('0x1d')]=_0x5c128f['countagentrejectretry']||0x0;this[_0x7196('0x1f')]=_0x5c128f[_0x7196('0x1f')];this[_0x7196('0x20')]=_0x5c128f[_0x7196('0x20')];this[_0x7196('0x21')]=_0x5c128f['callbackat'];this[_0x7196('0x22')]=_0x5c128f['recallme'];this[_0x7196('0x23')]=_0x5c128f[_0x7196('0x23')];this[_0x7196('0x24')]=_0x5c128f[_0x7196('0x24')];this[_0x7196('0x25')]=_[_0x7196('0x2')](_0x5c128f['Agent'])?_0x5c128f['UserId']:_0x5c128f[_0x7196('0xa')]['id'];this[_0x7196('0x26')]=_0x5c128f[_0x7196('0x26')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x7196('0x27')][_0x7196('0x28')]=function(){return util[_0x7196('0xd')]('\x22%s\x22\x20<%s>',this[_0x7196('0xf')],this['number']);};module[_0x7196('0x29')]=Action;
\ No newline at end of file
+var _0x2542=['UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','membername','Agent','format','SIP/%s','calleridname','Contact','firstName','lastName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','callback','ContactId','ListId'];(function(_0x132659,_0x486e0c){var _0x215fc3=function(_0x3a14e8){while(--_0x3a14e8){_0x132659['push'](_0x132659['shift']());}};_0x215fc3(++_0x486e0c);}(_0x2542,0x169));var _0x2254=function(_0xf43a0d,_0x57f16d){_0xf43a0d=_0xf43a0d-0x0;var _0x2eae87=_0x2542[_0xf43a0d];return _0x2eae87;};'use strict';var util=require(_0x2254('0x0'));var _=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));function checkNameSurname(_0x20dfee,_0x578407,_0x105910){var _0x47b1da='';if(!_[_0x2254('0x3')](_0x578407)&&_0x2254('0x4')===typeof _0x578407){_0x47b1da+=_0x578407;}if(!_[_0x2254('0x3')](_0x105910)&&_0x2254('0x4')===typeof _0x105910){_0x47b1da+='\x20'+_0x105910;}if(_0x47b1da!==''){return _0x47b1da;}return _0x20dfee;}function Action(_0x76c902,_0x508183,_0x19ad3c,_0xe8ca50,_0x2ee7ee){this[_0x2254('0x5')]=_0x19ad3c||undefined;this[_0x2254('0x6')]=_0x76c902['id'];this[_0x2254('0x7')]=_0x508183[_0x2254('0x8')];this[_0x2254('0x9')]=_0x508183[_0x2254('0x9')];this[_0x2254('0xa')]=_0x2254('0x7');this['dialAnswer']=![];this[_0x2254('0xb')]=_[_0x2254('0x3')](_0x76c902[_0x2254('0xc')])?undefined:_0x76c902[_0x2254('0xc')]['name'];this['channelAgent']=this[_0x2254('0xb')]?util[_0x2254('0xd')](_0x2254('0xe'),this[_0x2254('0xb')]):_0xe8ca50||undefined;this[_0x2254('0xf')]=checkNameSurname(_0x76c902[_0x2254('0x10')]['phone'],_0x76c902[_0x2254('0x10')][_0x2254('0x11')],_0x76c902['Contact'][_0x2254('0x12')]);this[_0x2254('0x13')]=_0x76c902[_0x2254('0x13')]||![];this[_0x2254('0x14')]=_0x76c902[_0x2254('0x15')];this[_0x2254('0x16')]=_0x76c902['scheduledat'];this[_0x2254('0x17')]=_0x76c902['countbusyretry']||0x0;this[_0x2254('0x18')]=_0x76c902[_0x2254('0x18')]||0x0;this[_0x2254('0x19')]=_0x76c902[_0x2254('0x19')]||0x0;this[_0x2254('0x1a')]=(_0x76c902[_0x2254('0x17')]||0x0)+(_0x76c902['countcongestionretry']||0x0)+(_0x76c902['countnoanswerretry']||0x0)+(_0x76c902['countnosuchnumberretry']||0x0)+(_0x76c902[_0x2254('0x1b')]||0x0)+(_0x76c902[_0x2254('0x1c')]||0x0)+(_0x76c902[_0x2254('0x1d')]||0x0)+(_0x76c902[_0x2254('0x1e')]||0x0);this[_0x2254('0x1f')]=_0x76c902[_0x2254('0x1f')]||0x0;this['countdropretry']=_0x76c902[_0x2254('0x1b')]||0x0;this[_0x2254('0x1c')]=_0x76c902[_0x2254('0x1c')]||0x0;this['countmachineretry']=_0x76c902['countmachineretry']||0x0;this['countagentrejectretry']=_0x76c902[_0x2254('0x1e')]||0x0;this[_0x2254('0x20')]=_0x76c902[_0x2254('0x20')];this['callbackuniqueid']=_0x76c902['callbackuniqueid'];this['callbackat']=_0x76c902['callbackat'];this['recallme']=_0x76c902['recallme'];this[_0x2254('0x21')]=_0x76c902[_0x2254('0x21')];this[_0x2254('0x22')]=_0x76c902[_0x2254('0x22')];this[_0x2254('0x23')]=_[_0x2254('0x3')](_0x76c902['Agent'])?_0x76c902['UserId']:_0x76c902[_0x2254('0xc')]['id'];this['VoiceQueueId']=_0x76c902[_0x2254('0x24')];this[_0x2254('0x25')]='';this[_0x2254('0x26')]='';}Action[_0x2254('0x27')][_0x2254('0x28')]=function(){return util['format'](_0x2254('0x29'),this[_0x2254('0xf')],this[_0x2254('0x2a')]);};module[_0x2254('0x2b')]=Action;
\ No newline at end of file
index 0fcfbd2..2e7b562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','logger','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','dialPreviewAutoRecallMe','recallMe','enqueue','isNil','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','pTalking','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','setMessage','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','rescheduleContact','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','responsetime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','\x20Queue','BUSY','countbusyretry','dialBusyRetryFrequency','custom:agentbusy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','scheduledAt','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','countcongestionretry','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','originated','ANSWER','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Busy','Congestion','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','Queue','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','unmonitored','execRun','unlock','unlockContact','disableContact','recallme','validateContact','isValid','checkIsBlackList','checkInBlack','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','campaign\x20Name:\x20','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','getCallerId','originatecalleridname','extractCalleridName','originatecalleridnum','addVariables','merge','toLowerVariables','variablesAction','[originated][increment]','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','isFailure','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','[syncHangup][talking]','cause','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','syncDialEnd','destlinkedid','destuniqueid','addVariable','variables','filterKey','variable','keys','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','md5','ioredis','preview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','defaults','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hanguprequest','syncHangupRequest','dialend','newexten','syncNewExten','varset','syncVarSet','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','voice:queue:%s','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','available'];(function(_0x47610d,_0x4d2880){var _0x5d9f7d=function(_0x137bce){while(--_0x137bce){_0x47610d['push'](_0x47610d['shift']());}};_0x5d9f7d(++_0x4d2880);}(_0x5430,0x10c));var _0x0543=function(_0x464b33,_0x5986c0){_0x464b33=_0x464b33-0x0;var _0x2560af=_0x5430[_0x464b33];return _0x2560af;};'use strict';var util=require(_0x0543('0x0'));var _=require(_0x0543('0x1'));var uuid=require(_0x0543('0x2'));var moment=require(_0x0543('0x3'));var md5=require(_0x0543('0x4'));var Redis=require(_0x0543('0x5'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x0543('0x6'));var loggerAction=require('../../../config/logger')('actionPreview');var ami=require(_0x0543('0x7'));var rpcDb=require(_0x0543('0x8'));var cmHopperAdditionalPhone=require(_0x0543('0x9'));var Action=require(_0x0543('0xa'));var ut=require(_0x0543('0xb'));config['redis']=_[_0x0543('0xc')](config[_0x0543('0xd')],{'host':_0x0543('0xe'),'port':0x18eb});var io=require(_0x0543('0xf'))(new Redis(config[_0x0543('0xd')]));var Sequence=function(){};Sequence[_0x0543('0x10')]['enqueue']=function(_0x1ed7cc){this[_0x0543('0x11')]=this['tail']?this[_0x0543('0x11')][_0x0543('0x12')](_0x1ed7cc):_0x1ed7cc();};function Preview(_0x2bb810){this[_0x0543('0x13')]=new Sequence();this[_0x0543('0x14')]=_0x2bb810[_0x0543('0x15')];this[_0x0543('0x16')]=_0x2bb810[_0x0543('0x16')];this[_0x0543('0x17')]={};this[_0x0543('0x18')]=_0x2bb810[_0x0543('0x18')];this[_0x0543('0x19')]=0x0;ami['on']('originateresponse',this[_0x0543('0x1a')][_0x0543('0x1b')](this));ami['on']('hangup',this['syncHangup'][_0x0543('0x1b')](this));ami['on'](_0x0543('0x1c'),this[_0x0543('0x1d')][_0x0543('0x1b')](this));ami['on'](_0x0543('0x1e'),this['syncDialEnd'][_0x0543('0x1b')](this));ami['on'](_0x0543('0x1f'),this[_0x0543('0x20')][_0x0543('0x1b')](this));ami['on'](_0x0543('0x21'),this[_0x0543('0x22')][_0x0543('0x1b')](this));ami['on']('attendedtransfer',this[_0x0543('0x23')]['bind'](this));ami['on']('blindtransfer',this[_0x0543('0x24')][_0x0543('0x1b')](this));this[_0x0543('0x25')](this['campaignsPreview']);}function emit(_0x3f0452,_0x51c271,_0x401da5){io['to'](_0x3f0452)[_0x0543('0x26')](_0x51c271,_0x401da5);}function emitCampaignPreview(_0x543677){if(_0x543677[_0x0543('0x27')]===_0x0543('0x28')){var _0x427919={'id':_0x543677['id'],'name':_0x543677[_0x0543('0x29')],'strategy':_0x543677[_0x0543('0x2a')],'answered':_0x543677[_0x0543('0x2b')],'available':_0x543677['available'],'loggedIn':_0x543677['loggedIn'],'pTalking':_0x543677['pTalking'],'sumBillable':_0x543677[_0x0543('0x2c')],'sumDuration':_0x543677[_0x0543('0x2d')],'sumHoldTime':_0x543677[_0x0543('0x2e')]||0x0,'talking':_0x543677[_0x0543('0x2f')],'total':_0x543677[_0x0543('0x30')],'type':_0x543677[_0x0543('0x27')],'unmanaged':_0x543677[_0x0543('0x31')],'abandoned':_0x543677[_0x0543('0x32')],'waiting':_0x543677[_0x0543('0x33')],'loggedInDb':_0x543677[_0x0543('0x34')],'dialActive':_0x543677[_0x0543('0x35')],'dialMethod':_0x543677[_0x0543('0x36')],'dialOriginateCallerIdName':_0x543677['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x543677[_0x0543('0x37')],'dialOriginateTimeout':_0x543677[_0x0543('0x38')],'dialPrefix':_0x543677[_0x0543('0x39')],'outboundAnswerAgiCallsDay':_0x543677['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x543677[_0x0543('0x3a')],'outboundBlacklistCallsDay':_0x543677[_0x0543('0x3b')],'outboundBusyCallsDay':_0x543677[_0x0543('0x3c')],'outboundCongestionCallsDay':_0x543677[_0x0543('0x3d')],'outboundDropCallsDayACS':_0x543677['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x543677[_0x0543('0x3e')],'outboundDropCallsDayTimeout':_0x543677[_0x0543('0x3f')],'outboundNoAnswerCallsDay':_0x543677['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x543677['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x543677[_0x0543('0x40')],'outboundReCallsDay':_0x543677[_0x0543('0x41')],'outboundRejectCallsDay':_0x543677['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x543677[_0x0543('0x42')],'outboundAbandonedCallsDay':_0x543677[_0x0543('0x43')],'predictiveIntervalAnsweredCalls':_0x543677[_0x0543('0x44')],'predictiveIntervalAvgHoldtime':_0x543677[_0x0543('0x45')],'predictiveIntervalAvgTalktime':_0x543677[_0x0543('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x543677[_0x0543('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x543677[_0x0543('0x48')],'predictiveIntervalErlangCalls':_0x543677['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x543677[_0x0543('0x49')],'predictiveIntervalHitRate':_0x543677['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x543677[_0x0543('0x4a')],'predictiveIntervalPauses':_0x543677[_0x0543('0x4b')],'predictiveIntervalAvailable':_0x543677[_0x0543('0x4c')],'predictiveIntervalTotalCalls':_0x543677[_0x0543('0x4d')],'message':_0x543677[_0x0543('0x4e')],'originated':_0x543677['originated'],'erlangCalls':_0x543677[_0x0543('0x4f')],'erlangCallToSecond':_0x543677['erlangCallToSecond'],'erlangAbandonmentRate':_0x543677[_0x0543('0x50')],'erlangBusyFactor':_0x543677[_0x0543('0x51')],'startPredictive':_0x543677[_0x0543('0x52')],'startProgressive':_0x543677[_0x0543('0x53')]};if(_0x543677['Trunk']){_0x427919[_0x0543('0x54')]={'id':_0x543677['Trunk']['id'],'name':_0x543677[_0x0543('0x54')][_0x0543('0x29')],'active':_0x543677[_0x0543('0x54')][_0x0543('0x55')],'callerid':_0x543677[_0x0543('0x54')][_0x0543('0x56')]};}if(_0x543677[_0x0543('0x57')]){_0x427919[_0x0543('0x57')]={'id':_0x543677[_0x0543('0x57')]['id'],'name':_0x543677[_0x0543('0x57')]['name']};}var _0x2bd920=md5(JSON[_0x0543('0x58')](_0x427919));if(_0x543677['md5']!==_0x2bd920){_0x543677[_0x0543('0x4')]=_0x2bd920;emit(util['format'](_0x0543('0x59'),_0x427919[_0x0543('0x29')]),'voice_queue:save',_0x427919);}}}function emitVoiceQueueChannelRemove(_0x5e8800){logger[_0x0543('0x5a')](_0x0543('0x5b'),JSON['stringify'](_0x5e8800));emit(util[_0x0543('0x5c')](_0x0543('0x59'),_0x5e8800['name']),_0x0543('0x5d'),_0x5e8800);io[_0x0543('0x26')](_0x0543('0x5e'),_0x5e8800);}function notSendMessagesQueue(_0x117982){if(_0x117982[_0x0543('0x5f')]){if(_0x117982['originated']===0x0&&_0x117982['pTalking']===0x0){_0x117982['sendMessageOneNotActive']=![];_0x117982[_0x0543('0x60')]=0x0;_0x117982[_0x0543('0x61')]=0x0;_0x117982[_0x0543('0x4e')]=_0x0543('0x62');ut['logger'](_0x0543('0x63'),_0x117982[_0x0543('0x29')]+_0x0543('0x64'));}else{_0x117982[_0x0543('0x4e')]=_0x0543('0x65');ut[_0x0543('0x66')](_0x0543('0x63'),_0x117982['name']+_0x0543('0x67'));}emitCampaignPreview(_0x117982);}}Preview[_0x0543('0x10')][_0x0543('0x25')]=function(){var _0x1b38bc=this;setInterval(function(){_0x1b38bc[_0x0543('0x68')]();},0x7cf);};Preview[_0x0543('0x10')]['syncCampaigns']=function(){var _0x53dfb8=this[_0x0543('0x14')];this[_0x0543('0x19')]+=0x1;for(var _0x1e4818 in _0x53dfb8){if(_0x53dfb8[_0x0543('0x69')](_0x1e4818)&&(_0x53dfb8[_0x1e4818][_0x0543('0x36')]===_0x0543('0x6')||_0x53dfb8[_0x1e4818][_0x0543('0x36')]===_0x0543('0x6a'))&&_0x53dfb8[_0x1e4818][_0x0543('0x27')]==='outbound'){if(this['clockClearZombieChannels']>0x7){this[_0x0543('0x19')]=0x0;this[_0x0543('0x6b')]();}}if(_0x53dfb8['hasOwnProperty'](_0x1e4818)&&_0x53dfb8[_0x1e4818]['dialMethod']===_0x0543('0x6')&&_0x53dfb8[_0x1e4818][_0x0543('0x27')]==='outbound'){if(_0x53dfb8[_0x1e4818][_0x0543('0x35')]){this['setMessage'](_0x53dfb8[_0x1e4818]);if(_0x53dfb8[_0x1e4818][_0x0543('0x6c')])this[_0x0543('0x6d')](_0x53dfb8[_0x1e4818]);}else{notSendMessagesQueue(_0x53dfb8[_0x1e4818]);}}}};Preview['prototype']['clearZombieChannel']=function(_0xd95442){var _0x5383c2=this;this[_0x0543('0x13')][_0x0543('0x6e')](function(){if(!_[_0x0543('0x6f')](_0x5383c2[_0x0543('0x17')][_0xd95442])){loggerAction[_0x0543('0x5a')](_0x0543('0x70'),_0xd95442,'Queue',_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')],_0x0543('0x72'),JSON[_0x0543('0x58')](_0x5383c2[_0x0543('0x14')][_0x5383c2['actions'][_0xd95442][_0x0543('0x71')]]['originated']),_0x0543('0x73'),JSON[_0x0543('0x58')](_0x5383c2[_0x0543('0x14')][_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')]][_0x0543('0x74')]),JSON['stringify'](_0x5383c2['actions'][_0xd95442]['dialAnswer']),JSON[_0x0543('0x58')](_[_0x0543('0x75')](_0x5383c2['actions'][_0xd95442],[_0x0543('0x76'),_0x0543('0x77'),_0x0543('0x78'),_0x0543('0x79')])));return ami[_0x0543('0x7a')]({'action':_0x0543('0x7b'),'channel':_0x5383c2['actions'][_0xd95442][_0x0543('0x7c')]})[_0x0543('0x7d')](function(_0x2b4abd){if(_0x2b4abd[_0x0543('0x4e')]===_0x0543('0x7e')){setTimeout(function(){if(_0x5383c2[_0x0543('0x17')][_0xd95442]){ut[_0x0543('0x7f')](_0x5383c2[_0x0543('0x14')][_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')]],_0x0543('0x80'));if(_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x81')]===!![]){ut[_0x0543('0x82')](_0x5383c2['campaignsPreview'][_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')]],_0x0543('0x80'));ut[_0x0543('0x83')](_0x0543('0x84')+_0xd95442,_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')]);}ut[_0x0543('0x83')](_0x0543('0x85')+_0xd95442,_0x5383c2[_0x0543('0x17')][_0xd95442][_0x0543('0x71')]);delete _0x5383c2[_0x0543('0x17')][_0xd95442];}},0x2328);}});}});};Preview[_0x0543('0x10')][_0x0543('0x6b')]=function(){var _0x1dd874=this;loggerAction['info'](_0x0543('0x86'),_[_0x0543('0x87')](this['actions']));for(var _0x59eea9 in this[_0x0543('0x17')]){if(_0x1dd874[_0x0543('0x17')]['hasOwnProperty'](_0x59eea9)){_0x1dd874[_0x0543('0x88')](_0x59eea9);}}};Preview['prototype'][_0x0543('0x6d')]=function(_0x4f58a4){var _0x31aea7=this;rpcDb['getContactRecallMe'](_0x4f58a4['id'],ut[_0x0543('0x89')](this[_0x0543('0x18')]))[_0x0543('0x8a')](function(_0x5e6b95){if(!_[_0x0543('0x6f')](_0x5e6b95)){for(var _0x1a569b=0x0;_0x1a569b<_0x5e6b95[_0x0543('0x8b')];_0x1a569b+=0x1){if(ut[_0x0543('0x8c')](_0x5e6b95[_0x1a569b][_0x0543('0x8d')])<_0x4f58a4[_0x0543('0x8e')]*0x3c){if(_0x5e6b95[_0x1a569b][_0x0543('0x8f')]&&!_0x5e6b95[_0x1a569b][_0x0543('0x8f')][_0x0543('0x90')]){_0x31aea7[_0x0543('0x91')](_0x5e6b95[_0x1a569b]['id'])[_0x0543('0x8a')](ut[_0x0543('0x92')](_0x0543('0x93')))[_0x0543('0x7d')](ut[_0x0543('0x92')]('[RecallMe]'));}else{rpcDb['disableContact'](_0x5e6b95[_0x1a569b]['id']);}}else{var _0x356b36=new Action(_0x5e6b95[_0x1a569b],_0x4f58a4);_0x356b36[_0x0543('0x94')]=moment()[_0x0543('0x5c')](_0x0543('0x95'));_0x4f58a4[_0x0543('0x41')]+=0x1;ut[_0x0543('0x96')](_0x356b36,0x17,_0x0543('0x97'));if(_0x4f58a4[_0x0543('0x98')]){rpcDb[_0x0543('0x99')](ut['createBody'](_0x5e6b95[_0x1a569b]));rpcDb[_0x0543('0x9a')](_0x356b36,_0x0543('0x9b'));}else{ut[_0x0543('0x96')](_0x356b36,0x16,_0x0543('0x9c'));rpcDb['createCustomerHistory'](_0x356b36,_0x0543('0x9d'));rpcDb[_0x0543('0x9e')](_0x356b36,_0x0543('0x9d'));}}}}})['catch'](ut['logger2'](_0x0543('0x9f')));};Preview[_0x0543('0x10')][_0x0543('0xa0')]=function(_0x5311b7){_0x5311b7[_0x0543('0x5f')]=!![];if(ut[_0x0543('0xa1')](_0x5311b7[_0x0543('0xa2')])){_0x5311b7['message']=_0x0543('0xa3');}else if(!ut[_0x0543('0xa4')](_0x5311b7[_0x0543('0x35')])){_0x5311b7[_0x0543('0x4e')]=_0x0543('0x62');}else if(!this[_0x0543('0xa5')](_0x5311b7[_0x0543('0x54')])){if(!this[_0x0543('0xa5')](_0x5311b7[_0x0543('0xa6')])){_0x5311b7[_0x0543('0x4e')]=_0x0543('0xa7');}else{_0x5311b7[_0x0543('0x4e')]=_0x0543('0xa8');}}else{_0x5311b7[_0x0543('0x4e')]='ACTIVE';}emitCampaignPreview(_0x5311b7);};Preview['prototype'][_0x0543('0xa9')]=function(_0x1f767c,_0x3a6d64,_0x2ee541){var _0x54ab46=this;var _0xcf969f=this['actions'][_0x3a6d64];var _0x1e1fc0=this[_0x0543('0x14')][_0xcf969f[_0x0543('0x71')]];var _0x5bd53d;var _0x5cb8ce=![];var _0x1671b2=0x2;var _0x537b7d=0x3;if(_0x1e1fc0){switch(_0x2ee541){case'1':_0x1e1fc0['outboundNoSuchCallsDay']+=0x1;_0xcf969f[_0x0543('0xaa')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x0,_0x0543('0xad'));ami[_0x0543('0x26')](_0x0543('0xae'),ut[_0x0543('0xaf')](_0xcf969f,_0x0543('0xb0')));rpcDb['createCustomerHistory'](_0xcf969f,_0x0543('0xb1'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'0',_0x1e1fc0)[_0x0543('0x8a')](function(_0x2e081e){_0x5cb8ce=_0x2e081e[_0x0543('0xb3')]==0x1;_0x1671b2=_0x1e1fc0['dialNoSuchNumberRetryFrequency'];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];if(!_0x5cb8ce){if(ut['totalGlobal'](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,_0x0543('0xb7'));rpcDb[_0x0543('0x9e')](_0x5bd53d,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0xcf969f[_0x0543('0xaa')]>=_0x1e1fc0[_0x0543('0xb8')]){rpcDb[_0x0543('0x9e')](_0xcf969f,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x0543('0xb9')](ut['scheduledAt'](_0xcf969f,_0x0543('0xaa'),_0x1e1fc0[_0x0543('0xba')]),_0xcf969f[_0x0543('0xbb')],_0xcf969f[_0x0543('0xbc')]);}}delete this[_0x0543('0x17')][_0x1f767c[_0x0543('0xbd')]];}else{_0xcf969f['countnosuchnumberretry']++;logger['info']('actioncountonusuch',_0xcf969f[_0x0543('0xaa')]);logger[_0x0543('0x5a')]('id',_0xcf969f[_0x0543('0xbe')]);_0x54ab46[_0x0543('0xbf')]({'id':_0xcf969f[_0x0543('0xbe')],'field':{'countnosuchnumberretry':_0xcf969f[_0x0543('0xaa')]}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)['then'](function(){});});}});break;case'ANSWER':var _0x30390b=moment()[_0x0543('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0xcf969f[_0x0543('0xc1')]=_0x30390b;_0xcf969f['answertime']=_0x30390b;_0xcf969f[_0x0543('0x81')]=!![];_0x1e1fc0[_0x0543('0x74')]+=0x1;logger[_0x0543('0x5a')](_0x0543('0xc2'),_0xcf969f[_0x0543('0xc3')],'\x20Queue',_0x1e1fc0[_0x0543('0x29')],_0x0543('0x73'),_0x1e1fc0['pTalking']);ami[_0x0543('0x26')](_0x0543('0xc4'),ut[_0x0543('0xaf')](_0xcf969f,'connect',this[_0x0543('0x14')][_0xcf969f[_0x0543('0x71')]]));if(_0x1e1fc0[_0x0543('0xc5')]){ami['emit'](_0x0543('0xc6'),ut[_0x0543('0xc7')](_0xcf969f));}break;case'16':ami[_0x0543('0x26')](_0x0543('0xc8'),ut['buildObj'](_0xcf969f,_0x0543('0xc9'),this[_0x0543('0x14')][_0xcf969f[_0x0543('0x71')]]));emitVoiceQueueChannelRemove(ut[_0x0543('0xaf')](_0xcf969f,_0x0543('0xc9')));_0x1e1fc0[_0x0543('0x3a')]+=0x1;_0x1e1fc0[_0x0543('0x30')]+=0x1;_0x1e1fc0[_0x0543('0x2b')]+=0x1;ut[_0x0543('0x82')](_0x1e1fc0,_0x0543('0xca'));_0xcf969f[_0x0543('0xab')]=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x4,_0x0543('0xcb'));rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xcc'));rpcDb[_0x0543('0x9e')](_0xcf969f,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x0543('0xcd')](_0xcf969f);_0x1e1fc0[_0x0543('0x2d')]+=_0xcf969f[_0x0543('0xce')];_0x1e1fc0[_0x0543('0x2c')]+=_0xcf969f[_0x0543('0xce')];logger[_0x0543('0x5a')](_0x0543('0xcf'),_0xcf969f[_0x0543('0xc3')],_0x0543('0xd0'),_0x1e1fc0[_0x0543('0x29')],_0x0543('0x73'),_0x1e1fc0['pTalking']);delete this[_0x0543('0x17')][_0x1f767c[_0x0543('0xbd')]];break;case _0x0543('0xd1'):_0x1e1fc0['outboundBusyCallsDay']+=0x1;_0xcf969f[_0x0543('0xd2')]+=0x1;_0xcf969f['countglobal']=ut['totalGlobal'](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x5,'Busy');_0x1671b2=_0x1e1fc0[_0x0543('0xd3')];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];ami[_0x0543('0x26')](_0x0543('0xd4'),ut['buildObj'](_0xcf969f,'busy'));rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xd5'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'5',_0x1e1fc0)['then'](function(_0x31cc2a){_0x5cb8ce=_0x31cc2a[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut['totalGlobal'](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,'Global');rpcDb['createCustomerFinal'](_0x5bd53d,_0x0543('0xd6'));}else{if(_0xcf969f[_0x0543('0xd2')]>=_0x1e1fc0[_0x0543('0xd7')]){rpcDb['createCustomerFinal'](_0xcf969f,_0x0543('0xd5'));}else{rpcDb[_0x0543('0xb9')](ut[_0x0543('0xd8')](_0xcf969f,'countbusyretry',_0x1e1fc0['dialBusyRetryFrequency']),_0xcf969f[_0x0543('0xbb')],_0xcf969f[_0x0543('0xbc')]);}}}else{_0xcf969f[_0x0543('0xd2')]++;_0x54ab46['incrementPreviewCounters']({'id':_0xcf969f[_0x0543('0xbe')],'field':{'countbusyretry':_0xcf969f[_0x0543('0xd2')]}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});});}});break;case _0x0543('0xd9'):_0x1e1fc0[_0x0543('0xda')]+=0x1;_0xcf969f[_0x0543('0xdb')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x3,_0x0543('0xdc'));_0x1671b2=_0x1e1fc0[_0x0543('0xdd')];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];var _0x3eb609=ut[_0x0543('0xde')](_0xcf969f,_0x1e1fc0);ami[_0x0543('0x26')]('custom:agentnoanswer',_0x3eb609);rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xdf'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'3',_0x1e1fc0)[_0x0543('0x8a')](function(_0x4f2319){_0x5cb8ce=_0x4f2319[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut[_0x0543('0xac')](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,'Global');rpcDb[_0x0543('0x9e')](_0x5bd53d,_0x0543('0xe0'));}else{if(_0xcf969f['countnoanswerretry']>=_0x1e1fc0[_0x0543('0xe1')]){rpcDb[_0x0543('0x9e')](_0xcf969f,_0x0543('0xdf'));}else{rpcDb[_0x0543('0xb9')](ut['scheduledAt'](_0xcf969f,_0x0543('0xdb'),_0x1e1fc0[_0x0543('0xdd')]),_0xcf969f[_0x0543('0xbb')],_0xcf969f[_0x0543('0xbc')]);}}}else{_0xcf969f[_0x0543('0xdb')]++;_0x54ab46['incrementPreviewCounters']({'id':_0xcf969f[_0x0543('0xbe')],'field':{'countnoanswerretry':_0xcf969f[_0x0543('0xdb')]}})['then'](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)['then'](function(){});});}});break;case _0x0543('0xe2'):_0x1e1fc0[_0x0543('0x3d')]+=0x1;_0xcf969f[_0x0543('0xe3')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut['totalGlobal'](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x8,'Congestion');_0x1671b2=_0x1e1fc0[_0x0543('0xe4')];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];ami[_0x0543('0x26')](_0x0543('0xe5'),ut[_0x0543('0xaf')](_0xcf969f,_0x0543('0xe6')));rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xe7'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'8',_0x1e1fc0)[_0x0543('0x8a')](function(_0x3be402){_0x5cb8ce=_0x3be402['additional']==0x1;if(!_0x5cb8ce){if(ut[_0x0543('0xac')](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,'Global');rpcDb[_0x0543('0x9e')](_0x5bd53d,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0xcf969f['countcongestionretry']>=_0x1e1fc0[_0x0543('0xe8')]){rpcDb['createCustomerFinal'](_0xcf969f,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x0543('0xb9')](ut[_0x0543('0xd8')](_0xcf969f,_0x0543('0xe3'),_0x1e1fc0[_0x0543('0xd3')]),_0xcf969f[_0x0543('0xbb')],_0xcf969f[_0x0543('0xbc')]);}}}else{_0xcf969f['countcongestionretry']++;_0x54ab46['incrementPreviewCounters']({'id':_0xcf969f['idContact'],'field':{'countcongestionretry':_0xcf969f['countcongestionretry']}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});});}});break;case _0x0543('0xe9'):_0x1e1fc0['outboundRejectCallsDay']+=0x1;_0xcf969f[_0x0543('0xea')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x14,_0x0543('0xeb'));_0x1671b2=_0x1e1fc0[_0x0543('0xec')];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];ami[_0x0543('0x26')](_0x0543('0xed'),ut[_0x0543('0xaf')](_0xcf969f,'agentreject'));rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xee'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'20',_0x1e1fc0)[_0x0543('0x8a')](function(_0x113ebf){_0x5cb8ce=_0x113ebf[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut['totalGlobal'](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0x14,'AgentReject');rpcDb['createCustomerFinal'](_0x5bd53d,_0x0543('0xef'));}else{if(_0xcf969f[_0x0543('0xea')]>=_0x1e1fc0[_0x0543('0xf0')]){rpcDb['createCustomerFinal'](_0xcf969f,_0x0543('0xef'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0xcf969f,_0x0543('0xea'),_0x1e1fc0['dialAgentRejectRetryFrequency']),_0xcf969f[_0x0543('0xbb')],_0xcf969f[_0x0543('0xbc')]);}}}else{_0xcf969f['countnoanswerretry']++;_0x54ab46[_0x0543('0xbf')]({'id':_0xcf969f['idContact'],'field':{'countnoanswerretry':_0xcf969f[_0x0543('0xdb')]}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)['then'](function(){});});}});break;case _0x0543('0xf1'):_0x1e1fc0[_0x0543('0x43')]+=0x1;_0xcf969f[_0x0543('0xf2')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut['totalGlobal'](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0xb,_0x0543('0xf3'));rpcDb[_0x0543('0x9a')](_0xcf969f,'[callProgressDetectingCustomer][logAbandoned]');_0x54ab46['verifyAdditionalPhones'](_0xcf969f,'11',_0x1e1fc0)[_0x0543('0x8a')](function(_0x5de37a){_0x5cb8ce=_0x5de37a[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut[_0x0543('0xac')](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,'Global');rpcDb[_0x0543('0x9e')](_0x5bd53d,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0xcf969f[_0x0543('0xf4')]>=_0x1e1fc0[_0x0543('0xf5')]){rpcDb[_0x0543('0x9e')](_0xcf969f,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x0543('0xb9')](ut[_0x0543('0xd8')](_0xcf969f,'countabandonedretry',_0x1e1fc0[_0x0543('0xf6')]),_0xcf969f['unlockAgent'],_0xcf969f[_0x0543('0xbc')]);}}}else{_0xcf969f[_0x0543('0xdb')]++;_0x54ab46[_0x0543('0xbf')]({'id':_0xcf969f[_0x0543('0xbe')],'field':{'countnoanswerretry':_0xcf969f['countnoanswerretry']}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});});}});break;case'18':_0x1e1fc0[_0x0543('0x42')]+=0x1;_0xcf969f[_0x0543('0xf7')]+=0x1;_0xcf969f['countglobal']=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0x12,_0x1f767c['cause-txt']||_0x1f767c['dialstatus']);ami[_0x0543('0x26')]('custom:amd',ut[_0x0543('0xaf')](_0xcf969f,_0x0543('0xf8')));rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0xf9'));_0x54ab46['verifyAdditionalPhones'](_0xcf969f,'18',_0x1e1fc0)[_0x0543('0x8a')](function(_0x3eb462){_0x5cb8ce=_0x3eb462[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut[_0x0543('0xac')](_0xcf969f)>=_0x1e1fc0['dialGlobalMaxRetry']){_0x5bd53d=ut['cloneAction'](_0xcf969f,0x12,'Global');rpcDb[_0x0543('0x9e')](_0x5bd53d,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x0543('0x9e')](_0xcf969f,_0x0543('0xf9'));}}else{_0xcf969f[_0x0543('0xdb')]++;_0x54ab46['incrementPreviewCounters']({'id':_0xcf969f[_0x0543('0xbe')],'field':{'countnoanswerretry':_0xcf969f[_0x0543('0xdb')]}})[_0x0543('0x8a')](function(){_0x54ab46['swapAdditionalPhones'](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});});}});delete this[_0x0543('0x17')][_0x1f767c[_0x0543('0xbd')]];break;case'19':_0x1e1fc0[_0x0543('0x42')]+=0x1;_0xcf969f['countglobal']=ut[_0x0543('0xac')](_0xcf969f);ut['logCustomer'](_0xcf969f,0x13,_0x1f767c[_0x0543('0xfa')]||_0x1f767c[_0x0543('0xfb')]);ami[_0x0543('0x26')](_0x0543('0xfc'),ut[_0x0543('0xaf')](_0xcf969f,_0x0543('0xf8')));rpcDb['createCustomerHistory'](_0xcf969f,'[callProgressDetectingCustomer][machine]');_0x54ab46[_0x0543('0xb2')](_0xcf969f,'18',_0x1e1fc0)[_0x0543('0x8a')](function(_0x3ce165){_0x5cb8ce=_0x3ce165[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut[_0x0543('0xac')](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,_0x0543('0xb7'));rpcDb[_0x0543('0x9e')](_0x5bd53d,_0x0543('0xfd'));}else{rpcDb['createCustomerFinal'](_0xcf969f,'[callProgressDetectingCustomer][machine]');}}else{_0xcf969f[_0x0543('0xdb')]++;_0x54ab46[_0x0543('0xbf')]({'id':_0xcf969f['idContact'],'field':{'countnoanswerretry':_0xcf969f[_0x0543('0xdb')]}})[_0x0543('0x8a')](function(){_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});});}});delete this['actions'][_0x1f767c[_0x0543('0xbd')]];break;default:if(_0xcf969f[_0x0543('0x81')]){ut[_0x0543('0x82')](_0x1e1fc0,_0x0543('0xfe'));ut[_0x0543('0x83')](_0x0543('0xff')+_0x1e1fc0[_0x0543('0x29')],_0x1f767c);}_0x1e1fc0[_0x0543('0x42')]+=0x1;_0xcf969f[_0x0543('0xab')]=ut[_0x0543('0xac')](_0xcf969f);ut[_0x0543('0x96')](_0xcf969f,0xc,_0x1f767c[_0x0543('0xfa')]||_0x1f767c[_0x0543('0xfb')]);_0x1671b2=_0x1e1fc0[_0x0543('0xec')];_0x537b7d=_0x1e1fc0[_0x0543('0xb4')];rpcDb[_0x0543('0x9a')](_0xcf969f,_0x0543('0x100'));_0x54ab46[_0x0543('0xb2')](_0xcf969f,'20',_0x1e1fc0)[_0x0543('0x8a')](function(_0x3bd5bd){_0x5cb8ce=_0x3bd5bd[_0x0543('0xb3')]==0x1;if(!_0x5cb8ce){if(ut['totalGlobal'](_0xcf969f)>=_0x1e1fc0[_0x0543('0xb5')]){_0x5bd53d=ut[_0x0543('0xb6')](_0xcf969f,0xf,'Global');rpcDb[_0x0543('0x9e')](_0x5bd53d,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x0543('0x9e')](_0xcf969f,_0x0543('0x101'));}delete this[_0x0543('0x17')][_0x1f767c[_0x0543('0xbd')]];}else{_0x54ab46[_0x0543('0xc0')](_0xcf969f,_0x1671b2,_0x537b7d)[_0x0543('0x8a')](function(){});}});}if(!(_0xcf969f[_0x0543('0x81')]&&_0x2ee541==='16')){ut['updateOriginated'](_0x1e1fc0,'[callProgressDetectingCustomer]');logger['info'](_0x0543('0x102'),_0xcf969f['uniqueid'],_0x0543('0xd0'),_0x1e1fc0[_0x0543('0x29')],'originated:\x20',_0x1e1fc0[_0x0543('0x103')]);}if(_0x2ee541!==_0x0543('0x104')){delete this[_0x0543('0x17')][_0x1f767c[_0x0543('0xbd')]];delete this[_0x0543('0x17')][_0x1f767c['destlinkedid']];}}};Preview[_0x0543('0x10')][_0x0543('0x105')]=function(_0x1be1b7,_0x2159db,_0x2f7e2d){if(_[_0x0543('0x106')](_0x2159db)&&_0x0543('0x107')!==typeof _0x2159db){return;}if(_[_0x0543('0x106')](_0x2f7e2d)&&'object'!==typeof _0x2f7e2d){return;}switch(_0x2f7e2d['reason']){case'0':ut[_0x0543('0x108')](_0x1be1b7,0x0,_0x0543('0xad'));rpcDb['createAgentHistory'](_0x1be1b7,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x0543('0x108')](_0x1be1b7,0x3,_0x0543('0xdc'));rpcDb[_0x0543('0x109')](_0x1be1b7,_0x0543('0x10a'));break;case'5':ut[_0x0543('0x108')](_0x1be1b7,0x5,_0x0543('0x10b'));rpcDb[_0x0543('0x109')](_0x1be1b7,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x0543('0x108')](_0x1be1b7,0x8,_0x0543('0x10c'));rpcDb[_0x0543('0x109')](_0x1be1b7,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x0543('0x108')](_0x1be1b7,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x1be1b7,_0x0543('0x10d'));break;default:ut[_0x0543('0x108')](_0x1be1b7,0xc,_0x2f7e2d[_0x0543('0x10e')]);rpcDb[_0x0543('0x109')](_0x1be1b7,_0x0543('0x10f'));}ut[_0x0543('0x7f')](_0x2159db,_0x0543('0x110'));logger[_0x0543('0x5a')](_0x0543('0x111'),_0x1be1b7[_0x0543('0xc3')],_0x0543('0xd0'),_0x2159db[_0x0543('0x29')],_0x0543('0x72'),_0x2159db[_0x0543('0x103')]);delete this['actions'][_0x1be1b7[_0x0543('0xc3')]];};Preview[_0x0543('0x10')][_0x0543('0xb2')]=function(_0xc4531b,_0x366d81,_0x29960b){return Promise[_0x0543('0x112')]()[_0x0543('0x8a')](cmHopperAdditionalPhone[_0x0543('0xb2')](_0xc4531b,_0x366d81,_0x29960b))[_0x0543('0x7d')](logger[_0x0543('0x5a')](_0x0543('0x113')));};Preview[_0x0543('0x10')]['swapAdditionalPhones']=function(_0x57fdb6,_0x1779c8,_0x1d0147){return Promise[_0x0543('0x112')]()['then'](cmHopperAdditionalPhone[_0x0543('0xc0')](_0x57fdb6,_0x1779c8,_0x1d0147))['catch'](logger[_0x0543('0x5a')](_0x0543('0x114')));};Preview[_0x0543('0x10')][_0x0543('0xbf')]=function(_0x4447c9){return Promise['resolve']()[_0x0543('0x8a')](cmHopperAdditionalPhone['incrementPreviewCounters'](_0x4447c9))[_0x0543('0x7d')](logger[_0x0543('0x5a')](_0x0543('0x115')));};Preview[_0x0543('0x10')]['checkInBlack']=function(_0x5b0ab2,_0xdbc4d1,_0xba6175,_0x516687,_0x31d8ee){var _0x5b9a12=this;return new Promise(function(_0x53d3e7,_0x13de38){if(_['isNil'](_0xdbc4d1)||_[_0x0543('0x6f')](_0xdbc4d1[_0x0543('0x116')])||_[_0x0543('0x6f')](_0xdbc4d1[_0x0543('0x117')])||_['isNil'](_0xdbc4d1[_0x0543('0x78')])){_0x13de38(ut[_0x0543('0x4e')](_0x0543('0x118'),_0x516687,_0x31d8ee));return;}var _0x2fb8f6=uuid['v4']();var _0x5aaae4=_0x5b9a12[_0x0543('0x14')][_0xdbc4d1[_0x0543('0x119')][_0x0543('0x29')]];var _0x1b47e6=_0xba6175?_0x5b9a12['agents'][_0xba6175]['id']:undefined;_0x5b9a12[_0x0543('0x17')][_0x2fb8f6]=new Action(_0xdbc4d1,_0x5aaae4,_0x2fb8f6,_0xba6175,_0x1b47e6);var _0x414078=_0x5b9a12[_0x0543('0x17')][_0x2fb8f6];_0x414078[_0x0543('0xbb')]=_0x516687;_0x414078[_0x0543('0xbc')]=_0x31d8ee;_0x414078[_0x0543('0x11a')]=_0xba6175;if(_[_0x0543('0x11b')](_0x5b0ab2)){_0x5b9a12[_0x0543('0x11c')](_0x414078,_0x5aaae4,_0xdbc4d1,_0xba6175)[_0x0543('0x8a')](function(_0x5f48a7){logger[_0x0543('0x5a')](_0x0543('0x11d'),_0x0543('0x11e')+_0x414078['queue']+_0x0543('0x11f')+_0x414078[_0x0543('0xbe')],JSON[_0x0543('0x58')](_0x5f48a7));ami['emit'](_0x0543('0x120'),ut[_0x0543('0xaf')](_0x414078,'called',_0x5b9a12[_0x0543('0x14')][_0x414078[_0x0543('0x71')]]));_0x53d3e7(ut['message']('Calling'));})[_0x0543('0x7d')](function(_0x3eafe0){ut[_0x0543('0x66')](_0x0543('0x121'),_0x3eafe0);_0x13de38(ut[_0x0543('0x4e')](_0x0543('0x122'),_0x516687,_0x31d8ee));});}else{_0x5aaae4[_0x0543('0x3b')]+=0x1;ut[_0x0543('0x123')](_0x414078);rpcDb['createHistory'](_0x414078,_0x0543('0x124'));delete _0x5b9a12['actions'][_0x2fb8f6];_0x13de38(ut[_0x0543('0x4e')](_0x0543('0x125'),_0x516687,_0x31d8ee));}});};Preview[_0x0543('0x10')]['isTrunkReachable']=function(_0x267bf9){return!_['isNil'](_0x267bf9)&&!_['isNil'](_0x267bf9[_0x0543('0x29')])&&!_[_0x0543('0x6f')](_0x267bf9[_0x0543('0x55')])&&_0x267bf9[_0x0543('0x55')]&&!_[_0x0543('0x6f')](this[_0x0543('0x16')][util[_0x0543('0x5c')](_0x0543('0x126'),_0x267bf9['name'])])&&!_[_0x0543('0x6f')](this[_0x0543('0x16')][util[_0x0543('0x5c')](_0x0543('0x126'),_0x267bf9['name'])][_0x0543('0x7b')])&&(this[_0x0543('0x16')][util[_0x0543('0x5c')](_0x0543('0x126'),_0x267bf9[_0x0543('0x29')])][_0x0543('0x7b')]==='reachable'||this[_0x0543('0x16')][util['format'](_0x0543('0x126'),_0x267bf9[_0x0543('0x29')])][_0x0543('0x7b')]===_0x0543('0x127'));};Preview[_0x0543('0x10')][_0x0543('0x91')]=function(_0x5e681b,_0x24181d){return this[_0x0543('0x128')](_0x5e681b,_0x24181d)[_0x0543('0x8a')](function(_0x3874cd){return _[_0x0543('0x75')](_0x3874cd,[_0x0543('0x4e')]);})[_0x0543('0x7d')](function(_0x114170){if(_0x114170[_0x0543('0x129')]){rpcDb[_0x0543('0x12a')](_0x5e681b);}if(_0x114170[_0x0543('0x55')]){rpcDb[_0x0543('0x12b')](_0x5e681b);}throw _[_0x0543('0x75')](_0x114170,[_0x0543('0x4e')]);});};Preview[_0x0543('0x10')][_0x0543('0x128')]=function(_0x358c5d,_0x10f1c6){var _0xdb3b9c=this;var _0x311170,_0x1d256b;return rpcDb['getContactPreview'](_0x358c5d)[_0x0543('0x8a')](function(_0x115892){if(!_[_0x0543('0x6f')](_0x115892[0x0])){_0x1d256b=_0x115892[0x0][_0x0543('0x12c')]?![]:!![];_0x311170=_0x115892[0x0][_0x0543('0x12c')]?!![]:![];_0x311170=_0x10f1c6?!![]:_0x311170;}var _0x5ead6a=_0xdb3b9c[_0x0543('0x12d')](_0x115892);if(_0x5ead6a[_0x0543('0x12e')]){rpcDb[_0x0543('0x12f')](_[_0x0543('0x75')](_0x115892[0x0],['VoiceQueueId',_0x0543('0x117')]))['then'](function(_0x4df87e){_0xdb3b9c[_0x0543('0x130')](_0x4df87e,_0x115892[0x0],_0x10f1c6,_0x1d256b,_0x311170)['then'](function(_0x38c780){return _0x38c780;})[_0x0543('0x7d')](function(_0x5a53f3){throw _0x5a53f3;});})[_0x0543('0x7d')](function(_0x101537){ut[_0x0543('0x66')]('[Preview][checkIsBlackList]',_0x101537);throw ut[_0x0543('0x4e')](_0x0543('0x131'),_0x1d256b,_0x311170);});}else{throw ut[_0x0543('0x4e')](_0x5ead6a[_0x0543('0x4e')],_0x1d256b,_0x311170);}})[_0x0543('0x7d')](function(_0x5dfa08){ut[_0x0543('0x66')](_0x0543('0x132'),_0x5dfa08);throw ut['message'](_0x0543('0x131'),![],!![]);});};Preview[_0x0543('0x10')][_0x0543('0x12d')]=function(_0x22e9ab){if(_['isNil'](_0x22e9ab)||_['isEmpty'](_0x22e9ab)||!_['isNil'](_0x22e9ab[0x0][_0x0543('0x8f')])&&_[_0x0543('0x6f')](_0x22e9ab[0x0][_0x0543('0x8f')][_0x0543('0x29')])){ut[_0x0543('0x66')](_0x0543('0x133'),_0x22e9ab);return{'isValid':![],'message':_0x0543('0x134')};}var _0x2a9fd8=this['campaignsPreview'][_0x22e9ab[0x0][_0x0543('0x119')][_0x0543('0x29')]];_0x2a9fd8[_0x0543('0x4e')]='ACTIVE';if(_[_0x0543('0x6f')](_0x2a9fd8)){ut[_0x0543('0x66')](_0x0543('0x135'),_0x2a9fd8);return{'isValid':![],'message':_0x0543('0x136')};}if(!this[_0x0543('0xa5')](_0x2a9fd8[_0x0543('0x54')])){ut[_0x0543('0x66')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20'+_0x2a9fd8[_0x0543('0x29')]+_0x0543('0x137'));if(!this['isTrunkReachable'](_0x2a9fd8[_0x0543('0xa6')])){ut[_0x0543('0x66')](_0x0543('0x138'),_0x2a9fd8[_0x0543('0x29')]+_0x0543('0x139'));return{'isValid':![],'message':_0x0543('0x13a')};}}if(!ut[_0x0543('0xa4')](_0x2a9fd8[_0x0543('0x35')])){ut[_0x0543('0x66')](_0x0543('0x13b'),_0x2a9fd8[_0x0543('0x29')]+_0x0543('0x13c'));return{'isValid':![],'message':_0x0543('0x13d')+_0x2a9fd8[_0x0543('0x29')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0x0543('0x13e')};};Preview[_0x0543('0x10')][_0x0543('0x11c')]=function(_0x242365,_0x2bdda7,_0xcdabbc,_0x4d1bfe){var _0x1b36e4=this;return new Promise(function(_0x5efa23,_0x5483f0){var _0x1421bf=_0x242365['uniqueid'];var _0x31efed=_0x1b36e4[_0x0543('0xa5')](_0x2bdda7['Trunk'])?util[_0x0543('0x5c')](_0x0543('0x13f'),_0x2bdda7[_0x0543('0x54')][_0x0543('0x29')],_[_0x0543('0x6f')](_0x2bdda7[_0x0543('0x39')])?'':_0x2bdda7[_0x0543('0x39')][_0x0543('0x140')]()||'',_0x2bdda7[_0x0543('0x141')]>0x0?_0xcdabbc[_0x0543('0x117')]['substring'](_0x2bdda7[_0x0543('0x141')]):_0xcdabbc[_0x0543('0x117')]):util[_0x0543('0x5c')](_0x0543('0x13f'),_['isNil'](_0x2bdda7[_0x0543('0xa6')])?_0x2bdda7['Trunk'][_0x0543('0x29')]:_0x2bdda7['TrunkBackup']['name'],_['isNil'](_0x2bdda7[_0x0543('0x39')])?'':_0x2bdda7[_0x0543('0x39')]['trim']()||'',_0x2bdda7[_0x0543('0x141')]>0x0?_0xcdabbc[_0x0543('0x117')][_0x0543('0x142')](_0x2bdda7['dialCutDigit']):_0xcdabbc[_0x0543('0x117')]);var _0x5b287b=_0x1b36e4[_0x0543('0xa5')](_0x2bdda7[_0x0543('0x54')])?ut['getCallerId'](_0x2bdda7['Trunk'][_0x0543('0x56')],_0x2bdda7[_0x0543('0x143')],_0x2bdda7[_0x0543('0x144')]>0x0?ut[_0x0543('0x145')](_0x2bdda7[_0x0543('0x37')],_0x2bdda7[_0x0543('0x144')]):_0x2bdda7[_0x0543('0x37')]):ut[_0x0543('0x146')](_[_0x0543('0x6f')](_0x2bdda7['TrunkBackup'])?_0x2bdda7[_0x0543('0x54')][_0x0543('0x56')]:_0x2bdda7['TrunkBackup'][_0x0543('0x56')],_0x2bdda7[_0x0543('0x143')],_0x2bdda7[_0x0543('0x144')]>0x0?ut[_0x0543('0x145')](_0x2bdda7[_0x0543('0x37')],_0x2bdda7[_0x0543('0x144')]):_0x2bdda7[_0x0543('0x37')]);if(_0x5b287b){_0x242365[_0x0543('0x147')]=ut[_0x0543('0x148')](_0x5b287b);_0x242365[_0x0543('0x149')]=ut['extractCalleridNumber'](_0x5b287b);}var _0x5a3368=ut[_0x0543('0x14a')](_0x2bdda7,_0xcdabbc,_0x31efed,_0x5b287b,_0x1421bf,_0x242365);_[_0x0543('0x14b')](_0x242365,ut[_0x0543('0x14c')](_0x5a3368));_0x242365[_0x0543('0x94')]=moment()[_0x0543('0x5c')](_0x0543('0x95'));_0x2bdda7['variables']=_0x5a3368;ami[_0x0543('0x7a')](ut[_0x0543('0x14d')](_0x242365,_0x2bdda7,_0x5a3368,_0x242365[_0x0543('0xbc')],_0x4d1bfe))[_0x0543('0x8a')](function(_0x41fc46){_0x2bdda7['originated']+=0x1;logger['info'](_0x0543('0x14e'),_0x1421bf,'\x20Queue',_0x2bdda7['name'],'originated:\x20',_0x2bdda7[_0x0543('0x103')]);_0x5efa23(_0x41fc46);})[_0x0543('0x7d')](function(_0x2ec85d){ut[_0x0543('0x108')](_0x242365,0xe,'OriginateError');rpcDb[_0x0543('0x109')](_0x242365,_0x0543('0x14f'));_0x5483f0(_0x2ec85d);});});};Preview[_0x0543('0x10')][_0x0543('0x20')]=function(_0x53e915){if(this['actions'][_0x53e915[_0x0543('0xbd')]]){this['actions'][_0x53e915[_0x0543('0xbd')]][_0x0543('0x7c')]=_0x53e915[_0x0543('0x7c')];}};Preview[_0x0543('0x10')][_0x0543('0x1a')]=function(_0x214d2a){var _0x5775a7=this;var _0x19bd31=this[_0x0543('0x17')][_0x214d2a[_0x0543('0x150')]];if(_0x19bd31){if(_0x19bd31['lookAgent']&&this[_0x0543('0x18')][_0x19bd31['lookAgent']]){ut[_0x0543('0x151')](_0x19bd31,this[_0x0543('0x18')][_0x19bd31[_0x0543('0x11a')]]['name'],this['agents'][_0x19bd31['lookAgent']]['id']);}var _0x2e00f7=_[_0x0543('0x152')](_0x19bd31);_0x2e00f7['responsetime']=moment()[_0x0543('0x5c')](_0x0543('0x95'));var _0x2ba926=_0x5775a7['campaignsPreview'][_0x19bd31['queue']];if(ut[_0x0543('0x153')](_0x214d2a['response'])){if(_0x19bd31['unlockAgent']){rpcDb[_0x0543('0x12a')](_0x19bd31[_0x0543('0xbe')]);}if(_0x19bd31['activeContact']){rpcDb[_0x0543('0x12b')](_0x19bd31[_0x0543('0xbe')]);}ami['emit'](_0x0543('0x154'),ut[_0x0543('0xaf')](_0x19bd31,_0x0543('0x155'),this[_0x0543('0x14')][_0x19bd31[_0x0543('0x71')]]));this[_0x0543('0x105')](_0x2e00f7,_0x2ba926,_0x214d2a);}else{_0x19bd31[_0x0543('0x94')]=moment()['format'](_0x0543('0x95'));ut['logAgent'](_0x2e00f7,0x4,_0x0543('0xcb'));rpcDb[_0x0543('0x109')](_0x2e00f7,_0x0543('0x156'));}}};Preview[_0x0543('0x10')][_0x0543('0x157')]=function(_0x2e091e){var _0x42de2d=this[_0x0543('0x17')][_0x2e091e[_0x0543('0xbd')]];var _0xb2e1f5;if(_0x42de2d){_0xb2e1f5=this[_0x0543('0x14')][_0x42de2d[_0x0543('0x71')]];logger['info'](_0x0543('0x158'),_0x2e091e[_0x0543('0xbd')],_0x0543('0xd0'),_0xb2e1f5[_0x0543('0x29')],_0x0543('0x73'),_0xb2e1f5['pTalking']);}if(this['actions'][_0x2e091e[_0x0543('0xbd')]]&&_0x2e091e[_0x0543('0xbd')]!==_0x2e091e[_0x0543('0xc3')]){if(_0x2e091e[_0x0543('0x159')]==='16'&&this[_0x0543('0x17')][_0x2e091e[_0x0543('0xbd')]][_0x0543('0x81')]){this['callProgressDetectingCustomer'](_0x2e091e,_0x2e091e['linkedid'],_0x2e091e[_0x0543('0x159')]);}else if(this[_0x0543('0x17')][_0x2e091e['linkedid']][_0x0543('0x81')]){logger[_0x0543('0x5a')]('[syncHangup][talking][cause]',_0x2e091e[_0x0543('0xbd')],_0x2e091e[_0x0543('0x159')],'\x20Queue',_0xb2e1f5['name'],_0x0543('0x73'),_0xb2e1f5[_0x0543('0x74')]);this[_0x0543('0xa9')](_0x2e091e,_0x2e091e[_0x0543('0xbd')],_0x2e091e['cause']);}}else if(_0x42de2d&&_['isNil'](_0x42de2d[_0x0543('0x15a')])&&_0xb2e1f5[_0x0543('0x15b')]&&_0x2e091e[_0x0543('0xbd')]===_0x2e091e[_0x0543('0xc3')]&&_[_0x0543('0x6f')](_0x2e091e[_0x0543('0x10e')])&&_0x2e091e[_0x0543('0x159')]==='16'&&_0x2e091e[_0x0543('0x15c')]==='6'&&_[_0x0543('0x106')](_0x42de2d[_0x0543('0x15d')])){if(_0x42de2d['unlockAgent']){rpcDb[_0x0543('0x12a')](_0x42de2d[_0x0543('0xbe')]);}if(_0x42de2d['activeContact']){rpcDb[_0x0543('0x12b')](_0x42de2d[_0x0543('0xbe')]);}_0x2e091e[_0x0543('0x10e')]='22';this[_0x0543('0x105')](_0x42de2d,_0xb2e1f5,_0x2e091e);}else if(_0x42de2d&&_0x42de2d[_0x0543('0x15d')]){if(_0x2e091e['cause']==='16'&&this[_0x0543('0x17')][_0x2e091e[_0x0543('0xbd')]][_0x0543('0x81')]){logger[_0x0543('0x5a')](_0x0543('0x15e'),_0x2e091e[_0x0543('0xbd')],_0x2e091e[_0x0543('0x159')],_0x0543('0xd0'),_0xb2e1f5['name'],_0x0543('0x73'),_0xb2e1f5[_0x0543('0x74')]);this[_0x0543('0xa9')](_0x2e091e,_0x2e091e[_0x0543('0xbd')],_0x2e091e[_0x0543('0x159')]);}else if(this[_0x0543('0x17')][_0x2e091e[_0x0543('0xbd')]]['dialAnswer']){logger[_0x0543('0x5a')](_0x0543('0x15f'),_0x2e091e[_0x0543('0xbd')],_0x2e091e[_0x0543('0x159')],'\x20Queue',_0xb2e1f5['name'],_0x0543('0x73'),_0xb2e1f5[_0x0543('0x74')]);this[_0x0543('0xa9')](_0x2e091e,_0x2e091e[_0x0543('0xbd')],_0x2e091e[_0x0543('0x159')]);}}};Preview[_0x0543('0x10')][_0x0543('0x160')]=function(_0x21b61c){if(this[_0x0543('0x17')][_0x21b61c[_0x0543('0x161')]]&&_0x21b61c[_0x0543('0x161')]!==_0x21b61c[_0x0543('0x162')]){this[_0x0543('0xa9')](_0x21b61c,_0x21b61c[_0x0543('0x161')],_0x21b61c[_0x0543('0xfb')]);}};Preview[_0x0543('0x10')][_0x0543('0x1d')]=function(_0x15f76b){if(this['actions'][_0x15f76b[_0x0543('0xbd')]]&&_0x15f76b[_0x0543('0xbd')]!==_0x15f76b['uniqueid']&&!this[_0x0543('0x17')][_0x15f76b['linkedid']][_0x0543('0x81')]){if(_0x15f76b['cause']==='1'){this['callProgressDetectingCustomer'](_0x15f76b,_0x15f76b[_0x0543('0xbd')],_0x15f76b['cause']);}}};Preview[_0x0543('0x10')][_0x0543('0x163')]=function(_0x29a1d8,_0x29c9b5,_0x2c7c2f){if(this[_0x0543('0x17')][_0x29a1d8]){if(_[_0x0543('0x6f')](this[_0x0543('0x17')][_0x29a1d8][_0x0543('0x164')])){this[_0x0543('0x17')][_0x29a1d8][_0x0543('0x164')]={};}this[_0x0543('0x17')][_0x29a1d8]['variables'][_0x29c9b5]=_0x2c7c2f;}};Preview['prototype']['syncVarSet']=function(_0x42afa5){try{if(!_['isNil'](_0x42afa5)){if(ut[_0x0543('0x165')](_['keys'](_0x42afa5[_0x0543('0x166')])[0x0])){this[_0x0543('0x163')](_0x42afa5[_0x0543('0xc3')],_[_0x0543('0x167')](_0x42afa5[_0x0543('0x166')])[0x0],_0x42afa5['value']);}}}catch(_0x7962b2){logger[_0x0543('0x168')](_0x0543('0x169'),util['inspect'](_0x7962b2,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x596768){if(_0x596768){if(this[_0x0543('0x17')][_0x596768[_0x0543('0x16a')]]){this[_0x0543('0x17')][_0x596768[_0x0543('0x16a')]][_0x0543('0x15d')]=!![];}}};Preview['prototype'][_0x0543('0x24')]=function(_0x25ca57){if(_0x25ca57){if(this[_0x0543('0x17')][_0x25ca57[_0x0543('0x16b')]]){this[_0x0543('0x17')][_0x25ca57[_0x0543('0x16b')]][_0x0543('0x15d')]=!![];}}};module[_0x0543('0x16c')]=Preview;
\ No newline at end of file
+var _0x23bb=['countagentrejectretry','dialAgentRejectRetryFrequency','custom:agentreject','AgentReject','[callProgressDetectingCustomer][logAgentReject]','outboundAbandonedCallsDay','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','decrementTalkink','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','callProgressDetectingAgent','object','isUndefined','logAgent','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','createAgentHistory','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','\x20IdHopper:\x20','Calling','[Preview][execCall][failure]','createHistory','SIP/%s','status','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','TrunkBackup','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','isFailure','unlockContact','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','filterKey','keys','variable','addVariable','value','error','[syncVarSet][Preview]','util','moment','md5','ioredis','../../../config/logger','preview','../rpc/cmHopperAdditionalPhone','defaults','localhost','redis','prototype','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','loopCampaigns','emit','type','outbound','name','answered','available','pTalking','sumDuration','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','message','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','setMessage','recallMe','clearZombieChannel','sequence','isNil','[clearZombieChannels][talking]','Queue','originated:\x20','queue','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','Action','channel','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','catch','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','loggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Global','createCustomerFinal','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','scheduledAt','countnosuchnumberretry','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','answertime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','totalGlobal','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','sumBillable','talktime','\x20Queue','linkedid','BUSY','countglobal','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyMaxRetry','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','cloneAction','[callProgressDetectingCustomer][logNoAnswerGlobal]','[callProgressDetectingCustomer][logNoAnswer]','rescheduleContact','unlockAgent','activeContact','outboundCongestionCallsDay','countcongestionretry','congestion','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL'];(function(_0x1cd295,_0x1c594f){var _0x405900=function(_0x40f553){while(--_0x40f553){_0x1cd295['push'](_0x1cd295['shift']());}};_0x405900(++_0x1c594f);}(_0x23bb,0x79));var _0xb23b=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x23bb[_0x2e913b];return _0x173899;};'use strict';var util=require(_0xb23b('0x0'));var _=require('lodash');var uuid=require('uuid');var moment=require(_0xb23b('0x1'));var md5=require(_0xb23b('0x2'));var Redis=require(_0xb23b('0x3'));var config=require('../../../config/environment');var logger=require(_0xb23b('0x4'))(_0xb23b('0x5'));var loggerAction=require(_0xb23b('0x4'))('actionPreview');var ami=require('../ami');var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0xb23b('0x6'));var Action=require('./action');var ut=require('./util/util');config['redis']=_[_0xb23b('0x7')](config['redis'],{'host':_0xb23b('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb23b('0x9')]));var Sequence=function(){};Sequence[_0xb23b('0xa')]['enqueue']=function(_0xa56813){this[_0xb23b('0xb')]=this['tail']?this[_0xb23b('0xb')][_0xb23b('0xc')](_0xa56813):_0xa56813();};function Preview(_0x1b5f93){this['sequence']=new Sequence();this[_0xb23b('0xd')]=_0x1b5f93[_0xb23b('0xe')];this[_0xb23b('0xf')]=_0x1b5f93[_0xb23b('0xf')];this[_0xb23b('0x10')]={};this[_0xb23b('0x11')]=_0x1b5f93[_0xb23b('0x11')];this[_0xb23b('0x12')]=0x0;ami['on'](_0xb23b('0x13'),this[_0xb23b('0x14')][_0xb23b('0x15')](this));ami['on'](_0xb23b('0x16'),this[_0xb23b('0x17')][_0xb23b('0x15')](this));ami['on'](_0xb23b('0x18'),this[_0xb23b('0x19')][_0xb23b('0x15')](this));ami['on']('dialend',this[_0xb23b('0x1a')][_0xb23b('0x15')](this));ami['on'](_0xb23b('0x1b'),this[_0xb23b('0x1c')][_0xb23b('0x15')](this));ami['on']('varset',this[_0xb23b('0x1d')]['bind'](this));ami['on'](_0xb23b('0x1e'),this[_0xb23b('0x1f')][_0xb23b('0x15')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xb23b('0x15')](this));this[_0xb23b('0x20')](this[_0xb23b('0xd')]);}function emit(_0x4201b5,_0x1ca831,_0x3b27f8){io['to'](_0x4201b5)[_0xb23b('0x21')](_0x1ca831,_0x3b27f8);}function emitCampaignPreview(_0x4e2b33){if(_0x4e2b33[_0xb23b('0x22')]===_0xb23b('0x23')){var _0xe57b69={'id':_0x4e2b33['id'],'name':_0x4e2b33[_0xb23b('0x24')],'strategy':_0x4e2b33['strategy'],'answered':_0x4e2b33[_0xb23b('0x25')],'available':_0x4e2b33[_0xb23b('0x26')],'loggedIn':_0x4e2b33['loggedIn'],'pTalking':_0x4e2b33[_0xb23b('0x27')],'sumBillable':_0x4e2b33['sumBillable'],'sumDuration':_0x4e2b33[_0xb23b('0x28')],'sumHoldTime':_0x4e2b33['sumHoldTime']||0x0,'talking':_0x4e2b33[_0xb23b('0x29')],'total':_0x4e2b33[_0xb23b('0x2a')],'type':_0x4e2b33['type'],'unmanaged':_0x4e2b33[_0xb23b('0x2b')],'abandoned':_0x4e2b33[_0xb23b('0x2c')],'waiting':_0x4e2b33[_0xb23b('0x2d')],'loggedInDb':_0x4e2b33[_0xb23b('0x2e')],'dialActive':_0x4e2b33[_0xb23b('0x2f')],'dialMethod':_0x4e2b33['dialMethod'],'dialOriginateCallerIdName':_0x4e2b33[_0xb23b('0x30')],'dialOriginateCallerIdNumber':_0x4e2b33[_0xb23b('0x31')],'dialOriginateTimeout':_0x4e2b33[_0xb23b('0x32')],'dialPrefix':_0x4e2b33[_0xb23b('0x33')],'outboundAnswerAgiCallsDay':_0x4e2b33[_0xb23b('0x34')],'outboundAnswerCallsDay':_0x4e2b33[_0xb23b('0x35')],'outboundBlacklistCallsDay':_0x4e2b33[_0xb23b('0x36')],'outboundBusyCallsDay':_0x4e2b33[_0xb23b('0x37')],'outboundCongestionCallsDay':_0x4e2b33['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x4e2b33[_0xb23b('0x38')],'outboundDropCallsDayCallersExit':_0x4e2b33[_0xb23b('0x39')],'outboundDropCallsDayTimeout':_0x4e2b33[_0xb23b('0x3a')],'outboundNoAnswerCallsDay':_0x4e2b33['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x4e2b33[_0xb23b('0x3b')],'outboundOriginateFailureCallsDay':_0x4e2b33[_0xb23b('0x3c')],'outboundReCallsDay':_0x4e2b33[_0xb23b('0x3d')],'outboundRejectCallsDay':_0x4e2b33[_0xb23b('0x3e')],'outboundUnknownCallsDay':_0x4e2b33[_0xb23b('0x3f')],'outboundAbandonedCallsDay':_0x4e2b33['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x4e2b33[_0xb23b('0x40')],'predictiveIntervalAvgHoldtime':_0x4e2b33[_0xb23b('0x41')],'predictiveIntervalAvgTalktime':_0x4e2b33[_0xb23b('0x42')],'predictiveIntervalDroppedCallsCallersExit':_0x4e2b33[_0xb23b('0x43')],'predictiveIntervalDroppedCallsTimeout':_0x4e2b33[_0xb23b('0x44')],'predictiveIntervalErlangCalls':_0x4e2b33[_0xb23b('0x45')],'predictiveIntervalErlangCallsDroppedCalls':_0x4e2b33[_0xb23b('0x46')],'predictiveIntervalHitRate':_0x4e2b33[_0xb23b('0x47')],'predictiveIntervalMultiplicativeFactor':_0x4e2b33[_0xb23b('0x48')],'predictiveIntervalPauses':_0x4e2b33[_0xb23b('0x49')],'predictiveIntervalAvailable':_0x4e2b33[_0xb23b('0x4a')],'predictiveIntervalTotalCalls':_0x4e2b33[_0xb23b('0x4b')],'message':_0x4e2b33['message'],'originated':_0x4e2b33[_0xb23b('0x4c')],'erlangCalls':_0x4e2b33[_0xb23b('0x4d')],'erlangCallToSecond':_0x4e2b33[_0xb23b('0x4e')],'erlangAbandonmentRate':_0x4e2b33[_0xb23b('0x4f')],'erlangBusyFactor':_0x4e2b33['erlangBusyFactor'],'startPredictive':_0x4e2b33[_0xb23b('0x50')],'startProgressive':_0x4e2b33[_0xb23b('0x51')]};if(_0x4e2b33[_0xb23b('0x52')]){_0xe57b69[_0xb23b('0x52')]={'id':_0x4e2b33[_0xb23b('0x52')]['id'],'name':_0x4e2b33['Trunk'][_0xb23b('0x24')],'active':_0x4e2b33['Trunk'][_0xb23b('0x53')],'callerid':_0x4e2b33['Trunk'][_0xb23b('0x54')]};}if(_0x4e2b33['Interval']){_0xe57b69[_0xb23b('0x55')]={'id':_0x4e2b33['Interval']['id'],'name':_0x4e2b33['Interval'][_0xb23b('0x24')]};}var _0x8a033a=md5(JSON[_0xb23b('0x56')](_0xe57b69));if(_0x4e2b33['md5']!==_0x8a033a){_0x4e2b33[_0xb23b('0x2')]=_0x8a033a;emit(util[_0xb23b('0x57')](_0xb23b('0x58'),_0xe57b69[_0xb23b('0x24')]),_0xb23b('0x59'),_0xe57b69);}}}function emitVoiceQueueChannelRemove(_0x442b81){logger[_0xb23b('0x5a')](_0xb23b('0x5b'),JSON[_0xb23b('0x56')](_0x442b81));emit(util[_0xb23b('0x57')]('voice:queue:%s',_0x442b81[_0xb23b('0x24')]),_0xb23b('0x5c'),_0x442b81);io[_0xb23b('0x21')](_0xb23b('0x5d'),_0x442b81);}function notSendMessagesQueue(_0x179b56){if(_0x179b56[_0xb23b('0x5e')]){if(_0x179b56[_0xb23b('0x4c')]===0x0&&_0x179b56[_0xb23b('0x27')]===0x0){_0x179b56[_0xb23b('0x5e')]=![];_0x179b56[_0xb23b('0x26')]=0x0;_0x179b56[_0xb23b('0x5f')]=0x0;_0x179b56[_0xb23b('0x60')]=_0xb23b('0x61');ut[_0xb23b('0x62')](_0xb23b('0x63'),_0x179b56['name']+_0xb23b('0x64'));}else{_0x179b56['message']=_0xb23b('0x65');ut[_0xb23b('0x62')](_0xb23b('0x63'),_0x179b56[_0xb23b('0x24')]+_0xb23b('0x66'));}emitCampaignPreview(_0x179b56);}}Preview[_0xb23b('0xa')]['loopCampaigns']=function(){var _0x39dcb0=this;setInterval(function(){_0x39dcb0[_0xb23b('0x67')]();},0x7cf);};Preview[_0xb23b('0xa')][_0xb23b('0x67')]=function(){var _0x28abda=this[_0xb23b('0xd')];this[_0xb23b('0x12')]+=0x1;for(var _0x3338f3 in _0x28abda){if(_0x28abda[_0xb23b('0x68')](_0x3338f3)&&(_0x28abda[_0x3338f3][_0xb23b('0x69')]===_0xb23b('0x5')||_0x28abda[_0x3338f3]['dialMethod']===_0xb23b('0x6a'))&&_0x28abda[_0x3338f3][_0xb23b('0x22')]==='outbound'){if(this[_0xb23b('0x12')]>0x7){this[_0xb23b('0x12')]=0x0;this['clearZombieChannels']();}}if(_0x28abda[_0xb23b('0x68')](_0x3338f3)&&_0x28abda[_0x3338f3][_0xb23b('0x69')]===_0xb23b('0x5')&&_0x28abda[_0x3338f3][_0xb23b('0x22')]===_0xb23b('0x23')){if(_0x28abda[_0x3338f3][_0xb23b('0x2f')]){this[_0xb23b('0x6b')](_0x28abda[_0x3338f3]);if(_0x28abda[_0x3338f3]['dialPreviewAutoRecallMe'])this[_0xb23b('0x6c')](_0x28abda[_0x3338f3]);}else{notSendMessagesQueue(_0x28abda[_0x3338f3]);}}}};Preview[_0xb23b('0xa')][_0xb23b('0x6d')]=function(_0x53c13b){var _0x51ed37=this;this[_0xb23b('0x6e')]['enqueue'](function(){if(!_[_0xb23b('0x6f')](_0x51ed37[_0xb23b('0x10')][_0x53c13b])){loggerAction['info'](_0xb23b('0x70'),_0x53c13b,_0xb23b('0x71'),_0x51ed37[_0xb23b('0x10')][_0x53c13b]['queue'],_0xb23b('0x72'),JSON[_0xb23b('0x56')](_0x51ed37[_0xb23b('0xd')][_0x51ed37['actions'][_0x53c13b][_0xb23b('0x73')]][_0xb23b('0x4c')]),_0xb23b('0x74'),JSON[_0xb23b('0x56')](_0x51ed37[_0xb23b('0xd')][_0x51ed37[_0xb23b('0x10')][_0x53c13b][_0xb23b('0x73')]][_0xb23b('0x27')]),JSON[_0xb23b('0x56')](_0x51ed37[_0xb23b('0x10')][_0x53c13b][_0xb23b('0x75')]),JSON[_0xb23b('0x56')](_[_0xb23b('0x76')](_0x51ed37[_0xb23b('0x10')][_0x53c13b],[_0xb23b('0x77'),'UserId',_0xb23b('0x78'),'ListId'])));return ami[_0xb23b('0x79')]({'action':'status','channel':_0x51ed37['actions'][_0x53c13b][_0xb23b('0x7a')]})['catch'](function(_0x1eaae4){if(_0x1eaae4[_0xb23b('0x60')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x51ed37[_0xb23b('0x10')][_0x53c13b]){ut['updateOriginated'](_0x51ed37['campaignsPreview'][_0x51ed37['actions'][_0x53c13b][_0xb23b('0x73')]],_0xb23b('0x7b'));if(_0x51ed37[_0xb23b('0x10')][_0x53c13b][_0xb23b('0x75')]===!![]){ut['decrementTalkink'](_0x51ed37['campaignsPreview'][_0x51ed37[_0xb23b('0x10')][_0x53c13b]['queue']],_0xb23b('0x7b'));ut[_0xb23b('0x7c')](_0xb23b('0x7d')+_0x53c13b,_0x51ed37[_0xb23b('0x10')][_0x53c13b][_0xb23b('0x73')]);}ut[_0xb23b('0x7c')](_0xb23b('0x7e')+_0x53c13b,_0x51ed37[_0xb23b('0x10')][_0x53c13b]['queue']);delete _0x51ed37[_0xb23b('0x10')][_0x53c13b];}},0x2328);}});}});};Preview[_0xb23b('0xa')][_0xb23b('0x7f')]=function(){var _0x3e2f42=this;loggerAction[_0xb23b('0x5a')](_0xb23b('0x80'),_['size'](this['actions']));for(var _0x4d88ba in this[_0xb23b('0x10')]){if(_0x3e2f42[_0xb23b('0x10')]['hasOwnProperty'](_0x4d88ba)){_0x3e2f42[_0xb23b('0x6d')](_0x4d88ba);}}};Preview['prototype'][_0xb23b('0x6c')]=function(_0x284092){var _0x630faf=this;rpcDb[_0xb23b('0x81')](_0x284092['id'],ut[_0xb23b('0x82')](this[_0xb23b('0x11')]))[_0xb23b('0x83')](function(_0x2cb54b){if(!_[_0xb23b('0x6f')](_0x2cb54b)){for(var _0x2583c3=0x0;_0x2583c3<_0x2cb54b['length'];_0x2583c3+=0x1){if(ut[_0xb23b('0x84')](_0x2cb54b[_0x2583c3][_0xb23b('0x85')])<_0x284092[_0xb23b('0x86')]*0x3c){if(_0x2cb54b[_0x2583c3][_0xb23b('0x87')]&&!_0x2cb54b[_0x2583c3][_0xb23b('0x87')][_0xb23b('0x88')]){_0x630faf['run'](_0x2cb54b[_0x2583c3]['id'])[_0xb23b('0x83')](ut[_0xb23b('0x89')](_0xb23b('0x8a')))[_0xb23b('0x8b')](ut[_0xb23b('0x89')]('[RecallMe]'));}else{rpcDb[_0xb23b('0x8c')](_0x2cb54b[_0x2583c3]['id']);}}else{var _0x4a9f67=new Action(_0x2cb54b[_0x2583c3],_0x284092);_0x4a9f67[_0xb23b('0x8d')]=moment()[_0xb23b('0x57')](_0xb23b('0x8e'));_0x284092[_0xb23b('0x3d')]+=0x1;ut[_0xb23b('0x8f')](_0x4a9f67,0x17,_0xb23b('0x90'));if(_0x284092[_0xb23b('0x91')]){rpcDb[_0xb23b('0x92')](ut[_0xb23b('0x93')](_0x2cb54b[_0x2583c3]));rpcDb[_0xb23b('0x94')](_0x4a9f67,_0xb23b('0x95'));}else{ut[_0xb23b('0x8f')](_0x4a9f67,0x16,_0xb23b('0x96'));rpcDb[_0xb23b('0x94')](_0x4a9f67,_0xb23b('0x97'));rpcDb['createCustomerFinal'](_0x4a9f67,_0xb23b('0x97'));}}}}})[_0xb23b('0x8b')](ut[_0xb23b('0x89')](_0xb23b('0x98')));};Preview[_0xb23b('0xa')][_0xb23b('0x6b')]=function(_0x959912){_0x959912[_0xb23b('0x5e')]=!![];if(ut['IsNotLoggedIn'](_0x959912[_0xb23b('0x99')])){_0x959912['message']=_0xb23b('0x9a');}else if(!ut['isActive'](_0x959912['dialActive'])){_0x959912[_0xb23b('0x60')]=_0xb23b('0x61');}else if(!this['isTrunkReachable'](_0x959912[_0xb23b('0x52')])){if(!this[_0xb23b('0x9b')](_0x959912['TrunkBackup'])){_0x959912[_0xb23b('0x60')]=_0xb23b('0x9c');}else{_0x959912['message']=_0xb23b('0x9d');}}else{_0x959912[_0xb23b('0x60')]=_0xb23b('0x9d');}emitCampaignPreview(_0x959912);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x11c9a3,_0x2668df,_0x45c99d){var _0x29e3c7=this;var _0x2ed5ec=this['actions'][_0x2668df];var _0x604b0d=this[_0xb23b('0xd')][_0x2ed5ec[_0xb23b('0x73')]];var _0x1c2657;var _0x5b5091=![];var _0x310bfa=0x2;var _0x39a158=0x3;if(_0x604b0d){switch(_0x45c99d){case'1':_0x604b0d[_0xb23b('0x3b')]+=0x1;_0x2ed5ec['countnosuchnumberretry']+=0x1;_0x2ed5ec['countglobal']=ut['totalGlobal'](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x0,_0xb23b('0x9e'));ami[_0xb23b('0x21')](_0xb23b('0x9f'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xa1')));rpcDb[_0xb23b('0x94')](_0x2ed5ec,_0xb23b('0xa2'));_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'0',_0x604b0d)[_0xb23b('0x83')](function(_0x455d29){_0x5b5091=_0x455d29[_0xb23b('0xa4')]==0x1;_0x310bfa=_0x604b0d['dialNoSuchNumberRetryFrequency'];_0x39a158=_0x604b0d[_0xb23b('0xa5')];if(!_0x5b5091){if(ut['totalGlobal'](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut['cloneAction'](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb[_0xb23b('0xa8')](_0x1c2657,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x2ed5ec['countnosuchnumberretry']>=_0x604b0d[_0xb23b('0xa9')]){rpcDb['createCustomerFinal'](_0x2ed5ec,_0xb23b('0xaa'));}else{rpcDb['rescheduleContact'](ut[_0xb23b('0xab')](_0x2ed5ec,'countnosuchnumberretry',_0x604b0d['dialNoSuchNumberRetryFrequency']),_0x2ed5ec['unlockAgent'],_0x2ed5ec['activeContact']);}}delete this[_0xb23b('0x10')][_0x11c9a3['linkedid']];}else{_0x2ed5ec[_0xb23b('0xac')]++;logger[_0xb23b('0x5a')](_0xb23b('0xad'),_0x2ed5ec[_0xb23b('0xac')]);logger['info']('id',_0x2ed5ec[_0xb23b('0xae')]);_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countnosuchnumberretry':_0x2ed5ec['countnosuchnumberretry']}})['then'](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)['then'](function(){});});}});break;case'ANSWER':var _0x4745e9=moment()[_0xb23b('0x57')](_0xb23b('0x8e'));_0x2ed5ec['responsetime']=_0x4745e9;_0x2ed5ec[_0xb23b('0xb1')]=_0x4745e9;_0x2ed5ec[_0xb23b('0x75')]=!![];_0x604b0d['pTalking']+=0x1;logger[_0xb23b('0x5a')](_0xb23b('0xb2'),_0x2ed5ec[_0xb23b('0xb3')],'\x20Queue',_0x604b0d[_0xb23b('0x24')],_0xb23b('0x74'),_0x604b0d[_0xb23b('0x27')]);ami[_0xb23b('0x21')](_0xb23b('0xb4'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xb5'),this[_0xb23b('0xd')][_0x2ed5ec['queue']]));if(_0x604b0d['acw']){ami[_0xb23b('0x21')](_0xb23b('0xb6'),ut[_0xb23b('0xb7')](_0x2ed5ec));}break;case'16':ami[_0xb23b('0x21')](_0xb23b('0xb8'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xb9'),this[_0xb23b('0xd')][_0x2ed5ec[_0xb23b('0x73')]]));emitVoiceQueueChannelRemove(ut[_0xb23b('0xa0')](_0x2ed5ec,'complete'));_0x604b0d[_0xb23b('0x35')]+=0x1;_0x604b0d[_0xb23b('0x2a')]+=0x1;_0x604b0d[_0xb23b('0x25')]+=0x1;ut['decrementTalkink'](_0x604b0d,_0xb23b('0xba'));_0x2ed5ec['countglobal']=ut[_0xb23b('0xbb')](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x4,_0xb23b('0xbc'));rpcDb[_0xb23b('0x94')](_0x2ed5ec,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xbd'));rpcDb['crateCustomerReportQueue'](_0x2ed5ec);_0x604b0d[_0xb23b('0x28')]+=_0x2ed5ec['talktime'];_0x604b0d[_0xb23b('0xbe')]+=_0x2ed5ec[_0xb23b('0xbf')];logger['info']('[syncHangup][talking][decrement]',_0x2ed5ec['uniqueid'],_0xb23b('0xc0'),_0x604b0d[_0xb23b('0x24')],'pTalking:\x20',_0x604b0d[_0xb23b('0x27')]);delete this[_0xb23b('0x10')][_0x11c9a3[_0xb23b('0xc1')]];break;case _0xb23b('0xc2'):_0x604b0d[_0xb23b('0x37')]+=0x1;_0x2ed5ec['countbusyretry']+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut[_0xb23b('0xbb')](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x5,_0xb23b('0xc4'));_0x310bfa=_0x604b0d[_0xb23b('0xc5')];_0x39a158=_0x604b0d[_0xb23b('0xa5')];ami['emit'](_0xb23b('0xc6'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xc7')));rpcDb[_0xb23b('0x94')](_0x2ed5ec,_0xb23b('0xc8'));_0x29e3c7['verifyAdditionalPhones'](_0x2ed5ec,'5',_0x604b0d)[_0xb23b('0x83')](function(_0xf301d7){_0x5b5091=_0xf301d7[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut['cloneAction'](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb[_0xb23b('0xa8')](_0x1c2657,_0xb23b('0xc9'));}else{if(_0x2ed5ec[_0xb23b('0xca')]>=_0x604b0d[_0xb23b('0xcb')]){rpcDb['createCustomerFinal'](_0x2ed5ec,_0xb23b('0xc8'));}else{rpcDb['rescheduleContact'](ut[_0xb23b('0xab')](_0x2ed5ec,_0xb23b('0xca'),_0x604b0d['dialBusyRetryFrequency']),_0x2ed5ec['unlockAgent'],_0x2ed5ec['activeContact']);}}}else{_0x2ed5ec[_0xb23b('0xca')]++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countbusyretry':_0x2ed5ec[_0xb23b('0xca')]}})[_0xb23b('0x83')](function(){_0x29e3c7['swapAdditionalPhones'](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});break;case _0xb23b('0xcc'):_0x604b0d[_0xb23b('0xcd')]+=0x1;_0x2ed5ec[_0xb23b('0xce')]+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut[_0xb23b('0xbb')](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x3,_0xb23b('0xcf'));_0x310bfa=_0x604b0d[_0xb23b('0xd0')];_0x39a158=_0x604b0d[_0xb23b('0xa5')];var _0x2bc754=ut[_0xb23b('0xd1')](_0x2ed5ec,_0x604b0d);ami['emit'](_0xb23b('0xd2'),_0x2bc754);rpcDb[_0xb23b('0x94')](_0x2ed5ec,'[callProgressDetectingCustomer][logNoAnswer]');_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'3',_0x604b0d)['then'](function(_0x40f4e9){_0x5b5091=_0x40f4e9[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut['totalGlobal'](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb['createCustomerFinal'](_0x1c2657,_0xb23b('0xd4'));}else{if(_0x2ed5ec[_0xb23b('0xce')]>=_0x604b0d['dialNoAnswerMaxRetry']){rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xd5'));}else{rpcDb[_0xb23b('0xd6')](ut[_0xb23b('0xab')](_0x2ed5ec,_0xb23b('0xce'),_0x604b0d[_0xb23b('0xd0')]),_0x2ed5ec[_0xb23b('0xd7')],_0x2ed5ec[_0xb23b('0xd8')]);}}}else{_0x2ed5ec[_0xb23b('0xce')]++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countnoanswerretry':_0x2ed5ec['countnoanswerretry']}})[_0xb23b('0x83')](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});break;case'CONGESTION':_0x604b0d[_0xb23b('0xd9')]+=0x1;_0x2ed5ec[_0xb23b('0xda')]+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut[_0xb23b('0xbb')](_0x2ed5ec);ut['logCustomer'](_0x2ed5ec,0x8,'Congestion');_0x310bfa=_0x604b0d['dialCongestionRetryFrequency'];_0x39a158=_0x604b0d[_0xb23b('0xa5')];ami[_0xb23b('0x21')]('custom:agentcongestion',ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xdb')));rpcDb['createCustomerHistory'](_0x2ed5ec,'[callProgressDetectingCustomer][logCongestion]');_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'8',_0x604b0d)[_0xb23b('0x83')](function(_0x2b7abd){_0x5b5091=_0x2b7abd[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb[_0xb23b('0xa8')](_0x1c2657,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x2ed5ec[_0xb23b('0xda')]>=_0x604b0d[_0xb23b('0xdc')]){rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xdd'));}else{rpcDb['rescheduleContact'](ut[_0xb23b('0xab')](_0x2ed5ec,'countcongestionretry',_0x604b0d[_0xb23b('0xc5')]),_0x2ed5ec['unlockAgent'],_0x2ed5ec['activeContact']);}}}else{_0x2ed5ec[_0xb23b('0xda')]++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countcongestionretry':_0x2ed5ec[_0xb23b('0xda')]}})['then'](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});break;case _0xb23b('0xde'):_0x604b0d[_0xb23b('0x3e')]+=0x1;_0x2ed5ec[_0xb23b('0xdf')]+=0x1;_0x2ed5ec['countglobal']=ut[_0xb23b('0xbb')](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x14,'AgentReject');_0x310bfa=_0x604b0d[_0xb23b('0xe0')];_0x39a158=_0x604b0d[_0xb23b('0xa5')];ami[_0xb23b('0x21')](_0xb23b('0xe1'),ut[_0xb23b('0xa0')](_0x2ed5ec,'agentreject'));rpcDb[_0xb23b('0x94')](_0x2ed5ec,'[syncHangupRequest][logAgentReject]');_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'20',_0x604b0d)[_0xb23b('0x83')](function(_0x4ff81b){_0x5b5091=_0x4ff81b[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d['dialGlobalMaxRetry']){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0x14,_0xb23b('0xe2'));rpcDb[_0xb23b('0xa8')](_0x1c2657,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x2ed5ec['countagentrejectretry']>=_0x604b0d['dialAgentRejectMaxRetry']){rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xe3'));}else{rpcDb['rescheduleContact'](ut[_0xb23b('0xab')](_0x2ed5ec,_0xb23b('0xdf'),_0x604b0d[_0xb23b('0xe0')]),_0x2ed5ec[_0xb23b('0xd7')],_0x2ed5ec[_0xb23b('0xd8')]);}}}else{_0x2ed5ec[_0xb23b('0xce')]++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countnoanswerretry':_0x2ed5ec[_0xb23b('0xce')]}})[_0xb23b('0x83')](function(){_0x29e3c7['swapAdditionalPhones'](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});break;case'ABANDONED':_0x604b0d[_0xb23b('0xe4')]+=0x1;_0x2ed5ec[_0xb23b('0xe5')]+=0x1;_0x2ed5ec['countglobal']=ut[_0xb23b('0xbb')](_0x2ed5ec);ut['logCustomer'](_0x2ed5ec,0xb,'Abandoned');rpcDb['createCustomerHistory'](_0x2ed5ec,_0xb23b('0xe6'));_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'11',_0x604b0d)['then'](function(_0x2b63da){_0x5b5091=_0x2b63da['additional']==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb[_0xb23b('0xa8')](_0x1c2657,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x2ed5ec[_0xb23b('0xe7')]>=_0x604b0d['dialAbandonedMaxRety']){rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xe6'));}else{rpcDb[_0xb23b('0xd6')](ut[_0xb23b('0xab')](_0x2ed5ec,_0xb23b('0xe5'),_0x604b0d['dialAbandonedRetryFrequency']),_0x2ed5ec[_0xb23b('0xd7')],_0x2ed5ec[_0xb23b('0xd8')]);}}}else{_0x2ed5ec['countnoanswerretry']++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countnoanswerretry':_0x2ed5ec[_0xb23b('0xce')]}})[_0xb23b('0x83')](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});break;case'18':_0x604b0d[_0xb23b('0x3f')]+=0x1;_0x2ed5ec['countmachineretry']+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut[_0xb23b('0xbb')](_0x2ed5ec);ut['logCustomer'](_0x2ed5ec,0x12,_0x11c9a3[_0xb23b('0xe8')]||_0x11c9a3[_0xb23b('0xe9')]);ami[_0xb23b('0x21')](_0xb23b('0xea'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xeb')));rpcDb[_0xb23b('0x94')](_0x2ed5ec,'[callProgressDetectingCustomer][hangupInAMD]');_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'18',_0x604b0d)[_0xb23b('0x83')](function(_0x275d8d){_0x5b5091=_0x275d8d[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0x12,'Global');rpcDb['createCustomerFinal'](_0x1c2657,_0xb23b('0xec'));}else{rpcDb[_0xb23b('0xa8')](_0x2ed5ec,_0xb23b('0xec'));}}else{_0x2ed5ec['countnoanswerretry']++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec['idContact'],'field':{'countnoanswerretry':_0x2ed5ec[_0xb23b('0xce')]}})['then'](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});delete this[_0xb23b('0x10')][_0x11c9a3[_0xb23b('0xc1')]];break;case'19':_0x604b0d[_0xb23b('0x3f')]+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut['totalGlobal'](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0x13,_0x11c9a3[_0xb23b('0xe8')]||_0x11c9a3[_0xb23b('0xe9')]);ami['emit'](_0xb23b('0xea'),ut[_0xb23b('0xa0')](_0x2ed5ec,_0xb23b('0xeb')));rpcDb['createCustomerHistory'](_0x2ed5ec,'[callProgressDetectingCustomer][machine]');_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'18',_0x604b0d)['then'](function(_0x151022){_0x5b5091=_0x151022[_0xb23b('0xa4')]==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0xf,_0xb23b('0xa7'));rpcDb[_0xb23b('0xa8')](_0x1c2657,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x2ed5ec,_0xb23b('0xed'));}}else{_0x2ed5ec[_0xb23b('0xce')]++;_0x29e3c7[_0xb23b('0xaf')]({'id':_0x2ed5ec[_0xb23b('0xae')],'field':{'countnoanswerretry':_0x2ed5ec['countnoanswerretry']}})[_0xb23b('0x83')](function(){_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});});}});delete this[_0xb23b('0x10')][_0x11c9a3['linkedid']];break;default:if(_0x2ed5ec['dialAnswer']){ut[_0xb23b('0xee')](_0x604b0d,'[default]');ut['loggerError'](_0xb23b('0xef')+_0x604b0d[_0xb23b('0x24')],_0x11c9a3);}_0x604b0d[_0xb23b('0x3f')]+=0x1;_0x2ed5ec[_0xb23b('0xc3')]=ut[_0xb23b('0xbb')](_0x2ed5ec);ut[_0xb23b('0x8f')](_0x2ed5ec,0xc,_0x11c9a3[_0xb23b('0xe8')]||_0x11c9a3['dialstatus']);_0x310bfa=_0x604b0d[_0xb23b('0xe0')];_0x39a158=_0x604b0d[_0xb23b('0xa5')];rpcDb[_0xb23b('0x94')](_0x2ed5ec,_0xb23b('0xf0'));_0x29e3c7[_0xb23b('0xa3')](_0x2ed5ec,'20',_0x604b0d)['then'](function(_0x45a977){_0x5b5091=_0x45a977['additional']==0x1;if(!_0x5b5091){if(ut[_0xb23b('0xbb')](_0x2ed5ec)>=_0x604b0d[_0xb23b('0xa6')]){_0x1c2657=ut[_0xb23b('0xd3')](_0x2ed5ec,0xf,'Global');rpcDb[_0xb23b('0xa8')](_0x1c2657,_0xb23b('0xf1'));}else{rpcDb['createCustomerFinal'](_0x2ed5ec,_0xb23b('0xf1'));}delete this[_0xb23b('0x10')][_0x11c9a3['linkedid']];}else{_0x29e3c7[_0xb23b('0xb0')](_0x2ed5ec,_0x310bfa,_0x39a158)[_0xb23b('0x83')](function(){});}});}if(!(_0x2ed5ec[_0xb23b('0x75')]&&_0x45c99d==='16')){ut[_0xb23b('0xf2')](_0x604b0d,_0xb23b('0xf3'));logger[_0xb23b('0x5a')](_0xb23b('0xf4'),_0x2ed5ec[_0xb23b('0xb3')],_0xb23b('0xc0'),_0x604b0d[_0xb23b('0x24')],_0xb23b('0x72'),_0x604b0d['originated']);}if(_0x45c99d!==_0xb23b('0xf5')){delete this[_0xb23b('0x10')][_0x11c9a3[_0xb23b('0xc1')]];delete this[_0xb23b('0x10')][_0x11c9a3[_0xb23b('0xf6')]];}}};Preview['prototype'][_0xb23b('0xf7')]=function(_0x5385fa,_0x58aaa8,_0x5b3827){if(_['isUndefined'](_0x58aaa8)&&_0xb23b('0xf8')!==typeof _0x58aaa8){return;}if(_[_0xb23b('0xf9')](_0x5b3827)&&_0xb23b('0xf8')!==typeof _0x5b3827){return;}switch(_0x5b3827['reason']){case'0':ut[_0xb23b('0xfa')](_0x5385fa,0x0,_0xb23b('0x9e'));rpcDb['createAgentHistory'](_0x5385fa,_0xb23b('0xfb'));break;case'3':ut['logAgent'](_0x5385fa,0x3,_0xb23b('0xcf'));rpcDb['createAgentHistory'](_0x5385fa,_0xb23b('0xfc'));break;case'5':ut['logAgent'](_0x5385fa,0x5,_0xb23b('0xc4'));rpcDb[_0xb23b('0xfd')](_0x5385fa,_0xb23b('0xfe'));break;case'8':ut['logAgent'](_0x5385fa,0x8,_0xb23b('0xff'));rpcDb[_0xb23b('0xfd')](_0x5385fa,_0xb23b('0x100'));break;case'22':ut[_0xb23b('0xfa')](_0x5385fa,0x16,_0xb23b('0x101'));rpcDb['createAgentHistory'](_0x5385fa,_0xb23b('0x102'));break;default:ut['logAgent'](_0x5385fa,0xc,_0x5b3827[_0xb23b('0x103')]);rpcDb[_0xb23b('0xfd')](_0x5385fa,'[callProgressDetectingAgent][logCongestion]');}ut[_0xb23b('0xf2')](_0x58aaa8,'[callProgressDetectingAgent]');logger[_0xb23b('0x5a')](_0xb23b('0x104'),_0x5385fa[_0xb23b('0xb3')],_0xb23b('0xc0'),_0x58aaa8[_0xb23b('0x24')],_0xb23b('0x72'),_0x58aaa8[_0xb23b('0x4c')]);delete this[_0xb23b('0x10')][_0x5385fa[_0xb23b('0xb3')]];};Preview['prototype'][_0xb23b('0xa3')]=function(_0x4376ce,_0x474315,_0xfa7c6){return Promise[_0xb23b('0x105')]()[_0xb23b('0x83')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x4376ce,_0x474315,_0xfa7c6))[_0xb23b('0x8b')](logger[_0xb23b('0x5a')](_0xb23b('0x106')));};Preview[_0xb23b('0xa')]['swapAdditionalPhones']=function(_0x1dba72,_0x282d7e,_0x3038da){return Promise['resolve']()['then'](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x1dba72,_0x282d7e,_0x3038da))['catch'](logger[_0xb23b('0x5a')](_0xb23b('0x107')));};Preview['prototype']['incrementPreviewCounters']=function(_0x46c6de){return Promise[_0xb23b('0x105')]()[_0xb23b('0x83')](cmHopperAdditionalPhone[_0xb23b('0xaf')](_0x46c6de))[_0xb23b('0x8b')](logger[_0xb23b('0x5a')](_0xb23b('0x108')));};Preview['prototype'][_0xb23b('0x109')]=function(_0x163a3d,_0x414abc,_0x19ee00,_0x32532e,_0x4cff35){var _0x48ce23=this;return new Promise(function(_0x2b23ca,_0x4d4968){if(_[_0xb23b('0x6f')](_0x414abc)||_[_0xb23b('0x6f')](_0x414abc['Contact'])||_[_0xb23b('0x6f')](_0x414abc[_0xb23b('0x10a')])||_[_0xb23b('0x6f')](_0x414abc[_0xb23b('0x78')])){_0x4d4968(ut['message'](_0xb23b('0x10b'),_0x32532e,_0x4cff35));return;}var _0x286d8f=uuid['v4']();var _0x584ca2=_0x48ce23[_0xb23b('0xd')][_0x414abc[_0xb23b('0x71')][_0xb23b('0x24')]];var _0x3f47f4=_0x19ee00?_0x48ce23[_0xb23b('0x11')][_0x19ee00]['id']:undefined;_0x48ce23[_0xb23b('0x10')][_0x286d8f]=new Action(_0x414abc,_0x584ca2,_0x286d8f,_0x19ee00,_0x3f47f4);var _0x351402=_0x48ce23[_0xb23b('0x10')][_0x286d8f];_0x351402[_0xb23b('0xd7')]=_0x32532e;_0x351402[_0xb23b('0xd8')]=_0x4cff35;_0x351402[_0xb23b('0x10c')]=_0x19ee00;if(_[_0xb23b('0x10d')](_0x163a3d)){_0x48ce23[_0xb23b('0x10e')](_0x351402,_0x584ca2,_0x414abc,_0x19ee00)[_0xb23b('0x83')](function(_0x5f4604){logger[_0xb23b('0x5a')]('[Preview][execCall][success]','Queue:\x20'+_0x351402['queue']+_0xb23b('0x10f')+_0x351402[_0xb23b('0xae')],JSON['stringify'](_0x5f4604));ami[_0xb23b('0x21')]('custom:agentcalled',ut['buildObj'](_0x351402,'called',_0x48ce23[_0xb23b('0xd')][_0x351402[_0xb23b('0x73')]]));_0x2b23ca(ut['message'](_0xb23b('0x110')));})['catch'](function(_0x70464b){ut[_0xb23b('0x62')](_0xb23b('0x111'),_0x70464b);_0x4d4968(ut[_0xb23b('0x60')]('Call\x20failed',_0x32532e,_0x4cff35));});}else{_0x584ca2[_0xb23b('0x36')]+=0x1;ut['logBlacklist'](_0x351402);rpcDb[_0xb23b('0x112')](_0x351402,'[Blacklist][error]');delete _0x48ce23[_0xb23b('0x10')][_0x286d8f];_0x4d4968(ut[_0xb23b('0x60')]('Contact\x20in\x20black\x20List',_0x32532e,_0x4cff35));}});};Preview[_0xb23b('0xa')]['isTrunkReachable']=function(_0x34d726){return!_[_0xb23b('0x6f')](_0x34d726)&&!_['isNil'](_0x34d726['name'])&&!_[_0xb23b('0x6f')](_0x34d726[_0xb23b('0x53')])&&_0x34d726[_0xb23b('0x53')]&&!_['isNil'](this[_0xb23b('0xf')][util[_0xb23b('0x57')](_0xb23b('0x113'),_0x34d726[_0xb23b('0x24')])])&&!_['isNil'](this[_0xb23b('0xf')][util['format'](_0xb23b('0x113'),_0x34d726['name'])]['status'])&&(this[_0xb23b('0xf')][util[_0xb23b('0x57')]('SIP/%s',_0x34d726['name'])][_0xb23b('0x114')]==='reachable'||this[_0xb23b('0xf')][util['format'](_0xb23b('0x113'),_0x34d726['name'])]['status']===_0xb23b('0x115'));};Preview[_0xb23b('0xa')]['run']=function(_0x13ca63,_0x2b8c41){return this[_0xb23b('0x116')](_0x13ca63,_0x2b8c41)[_0xb23b('0x83')](function(_0x599e5f){return _[_0xb23b('0x76')](_0x599e5f,[_0xb23b('0x60')]);})[_0xb23b('0x8b')](function(_0x9cd346){if(_0x9cd346[_0xb23b('0x117')]){rpcDb['unlockContact'](_0x13ca63);}if(_0x9cd346['active']){rpcDb['disableContact'](_0x13ca63);}throw _[_0xb23b('0x76')](_0x9cd346,['message']);});};Preview['prototype'][_0xb23b('0x116')]=function(_0x40a94e,_0x1184a6){var _0x3bff6a=this;var _0x4323ea,_0x32287c;return rpcDb[_0xb23b('0x118')](_0x40a94e)[_0xb23b('0x83')](function(_0xf6f7df){if(!_[_0xb23b('0x6f')](_0xf6f7df[0x0])){_0x32287c=_0xf6f7df[0x0][_0xb23b('0x119')]?![]:!![];_0x4323ea=_0xf6f7df[0x0][_0xb23b('0x119')]?!![]:![];_0x4323ea=_0x1184a6?!![]:_0x4323ea;}var _0x146136=_0x3bff6a[_0xb23b('0x11a')](_0xf6f7df);if(_0x146136[_0xb23b('0x11b')]){rpcDb[_0xb23b('0x11c')](_[_0xb23b('0x76')](_0xf6f7df[0x0],['VoiceQueueId',_0xb23b('0x10a')]))[_0xb23b('0x83')](function(_0x307fc3){_0x3bff6a[_0xb23b('0x109')](_0x307fc3,_0xf6f7df[0x0],_0x1184a6,_0x32287c,_0x4323ea)['then'](function(_0x2c04da){return _0x2c04da;})[_0xb23b('0x8b')](function(_0xf5dc40){throw _0xf5dc40;});})[_0xb23b('0x8b')](function(_0x226678){ut[_0xb23b('0x62')](_0xb23b('0x11d'),_0x226678);throw ut['message'](_0xb23b('0x11e'),_0x32287c,_0x4323ea);});}else{throw ut[_0xb23b('0x60')](_0x146136[_0xb23b('0x60')],_0x32287c,_0x4323ea);}})[_0xb23b('0x8b')](function(_0x33e45b){ut[_0xb23b('0x62')](_0xb23b('0x11f'),_0x33e45b);throw ut['message'](_0xb23b('0x11e'),![],!![]);});};Preview[_0xb23b('0xa')][_0xb23b('0x11a')]=function(_0x58dbc8){if(_['isNil'](_0x58dbc8)||_[_0xb23b('0x10d')](_0x58dbc8)||!_[_0xb23b('0x6f')](_0x58dbc8[0x0][_0xb23b('0x87')])&&_['isNil'](_0x58dbc8[0x0]['Agent']['name'])){ut[_0xb23b('0x62')](_0xb23b('0x120'),_0x58dbc8);return{'isValid':![],'message':_0xb23b('0x121')};}var _0x2590ed=this[_0xb23b('0xd')][_0x58dbc8[0x0][_0xb23b('0x71')][_0xb23b('0x24')]];_0x2590ed['message']=_0xb23b('0x9d');if(_[_0xb23b('0x6f')](_0x2590ed)){ut[_0xb23b('0x62')](_0xb23b('0x122'),_0x2590ed);return{'isValid':![],'message':_0xb23b('0x123')};}if(!this[_0xb23b('0x9b')](_0x2590ed[_0xb23b('0x52')])){ut[_0xb23b('0x62')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0xb23b('0x124')+_0x2590ed[_0xb23b('0x24')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xb23b('0x9b')](_0x2590ed[_0xb23b('0x125')])){ut[_0xb23b('0x62')](_0xb23b('0x126'),_0x2590ed[_0xb23b('0x24')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0xb23b('0x127')};}}if(!ut[_0xb23b('0x128')](_0x2590ed[_0xb23b('0x2f')])){ut[_0xb23b('0x62')](_0xb23b('0x129'),_0x2590ed[_0xb23b('0x24')]+'\x20Not\x20Active');return{'isValid':![],'message':_0xb23b('0x124')+_0x2590ed['name']+_0xb23b('0x12a')};}return{'isValid':!![],'message':_0xb23b('0x12b')};};Preview['prototype'][_0xb23b('0x10e')]=function(_0x141e82,_0x2a255b,_0x587928,_0x324485){var _0x5d627e=this;return new Promise(function(_0x38ccd3,_0x4e0898){var _0x3e445b=_0x141e82['uniqueid'];var _0x200de4=_0x5d627e[_0xb23b('0x9b')](_0x2a255b[_0xb23b('0x52')])?util['format'](_0xb23b('0x12c'),_0x2a255b['Trunk'][_0xb23b('0x24')],_[_0xb23b('0x6f')](_0x2a255b[_0xb23b('0x33')])?'':_0x2a255b['dialPrefix'][_0xb23b('0x12d')]()||'',_0x2a255b[_0xb23b('0x12e')]>0x0?_0x587928[_0xb23b('0x10a')][_0xb23b('0x12f')](_0x2a255b[_0xb23b('0x12e')]):_0x587928[_0xb23b('0x10a')]):util[_0xb23b('0x57')](_0xb23b('0x12c'),_['isNil'](_0x2a255b['TrunkBackup'])?_0x2a255b[_0xb23b('0x52')][_0xb23b('0x24')]:_0x2a255b['TrunkBackup'][_0xb23b('0x24')],_[_0xb23b('0x6f')](_0x2a255b['dialPrefix'])?'':_0x2a255b[_0xb23b('0x33')][_0xb23b('0x12d')]()||'',_0x2a255b['dialCutDigit']>0x0?_0x587928['phone']['substring'](_0x2a255b[_0xb23b('0x12e')]):_0x587928['phone']);var _0x287134=_0x5d627e[_0xb23b('0x9b')](_0x2a255b[_0xb23b('0x52')])?ut[_0xb23b('0x130')](_0x2a255b[_0xb23b('0x52')][_0xb23b('0x54')],_0x2a255b[_0xb23b('0x30')],_0x2a255b[_0xb23b('0x131')]>0x0?ut[_0xb23b('0x132')](_0x2a255b[_0xb23b('0x31')],_0x2a255b['dialRandomLastDigitCallerIdNumber']):_0x2a255b[_0xb23b('0x31')]):ut[_0xb23b('0x130')](_['isNil'](_0x2a255b['TrunkBackup'])?_0x2a255b[_0xb23b('0x52')][_0xb23b('0x54')]:_0x2a255b['TrunkBackup'][_0xb23b('0x54')],_0x2a255b['dialOriginateCallerIdName'],_0x2a255b[_0xb23b('0x131')]>0x0?ut[_0xb23b('0x132')](_0x2a255b[_0xb23b('0x31')],_0x2a255b[_0xb23b('0x131')]):_0x2a255b['dialOriginateCallerIdNumber']);if(_0x287134){_0x141e82['originatecalleridname']=ut[_0xb23b('0x133')](_0x287134);_0x141e82[_0xb23b('0x134')]=ut[_0xb23b('0x135')](_0x287134);}var _0x194144=ut[_0xb23b('0x136')](_0x2a255b,_0x587928,_0x200de4,_0x287134,_0x3e445b,_0x141e82);_[_0xb23b('0x137')](_0x141e82,ut[_0xb23b('0x138')](_0x194144));_0x141e82[_0xb23b('0x8d')]=moment()[_0xb23b('0x57')](_0xb23b('0x8e'));_0x2a255b[_0xb23b('0x139')]=_0x194144;ami['Action'](ut[_0xb23b('0x13a')](_0x141e82,_0x2a255b,_0x194144,_0x141e82[_0xb23b('0xd8')],_0x324485))[_0xb23b('0x83')](function(_0x45aec3){_0x2a255b['originated']+=0x1;logger[_0xb23b('0x5a')](_0xb23b('0x13b'),_0x3e445b,_0xb23b('0xc0'),_0x2a255b[_0xb23b('0x24')],_0xb23b('0x72'),_0x2a255b[_0xb23b('0x4c')]);_0x38ccd3(_0x45aec3);})[_0xb23b('0x8b')](function(_0x36b67f){ut[_0xb23b('0xfa')](_0x141e82,0xe,_0xb23b('0x13c'));rpcDb[_0xb23b('0xfd')](_0x141e82,_0xb23b('0x13d'));_0x4e0898(_0x36b67f);});});};Preview['prototype'][_0xb23b('0x1c')]=function(_0x1fd86b){if(this[_0xb23b('0x10')][_0x1fd86b['linkedid']]){this['actions'][_0x1fd86b['linkedid']]['channel']=_0x1fd86b['channel'];}};Preview[_0xb23b('0xa')]['syncOriginateResponse']=function(_0x4bcfaa){var _0x17f5c5=this;var _0x599f07=this[_0xb23b('0x10')][_0x4bcfaa[_0xb23b('0x13e')]];if(_0x599f07){if(_0x599f07[_0xb23b('0x10c')]&&this[_0xb23b('0x11')][_0x599f07[_0xb23b('0x10c')]]){ut[_0xb23b('0x13f')](_0x599f07,this['agents'][_0x599f07[_0xb23b('0x10c')]][_0xb23b('0x24')],this[_0xb23b('0x11')][_0x599f07[_0xb23b('0x10c')]]['id']);}var _0xb0c4dc=_[_0xb23b('0x140')](_0x599f07);_0xb0c4dc[_0xb23b('0x141')]=moment()[_0xb23b('0x57')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5ea6ba=_0x17f5c5[_0xb23b('0xd')][_0x599f07[_0xb23b('0x73')]];if(ut[_0xb23b('0x142')](_0x4bcfaa['response'])){if(_0x599f07[_0xb23b('0xd7')]){rpcDb[_0xb23b('0x143')](_0x599f07[_0xb23b('0xae')]);}if(_0x599f07['activeContact']){rpcDb['disableContact'](_0x599f07[_0xb23b('0xae')]);}ami[_0xb23b('0x21')](_0xb23b('0x144'),ut[_0xb23b('0xa0')](_0x599f07,_0xb23b('0x145'),this['campaignsPreview'][_0x599f07['queue']]));this[_0xb23b('0xf7')](_0xb0c4dc,_0x5ea6ba,_0x4bcfaa);}else{_0x599f07[_0xb23b('0x8d')]=moment()[_0xb23b('0x57')](_0xb23b('0x8e'));ut[_0xb23b('0xfa')](_0xb0c4dc,0x4,_0xb23b('0xbc'));rpcDb[_0xb23b('0xfd')](_0xb0c4dc,_0xb23b('0x146'));}}};Preview[_0xb23b('0xa')][_0xb23b('0x17')]=function(_0x48c1e3){var _0x2f7124=this[_0xb23b('0x10')][_0x48c1e3[_0xb23b('0xc1')]];var _0x87be28;if(_0x2f7124){_0x87be28=this[_0xb23b('0xd')][_0x2f7124['queue']];logger[_0xb23b('0x5a')](_0xb23b('0x147'),_0x48c1e3[_0xb23b('0xc1')],_0xb23b('0xc0'),_0x87be28[_0xb23b('0x24')],_0xb23b('0x74'),_0x87be28['pTalking']);}if(this[_0xb23b('0x10')][_0x48c1e3[_0xb23b('0xc1')]]&&_0x48c1e3[_0xb23b('0xc1')]!==_0x48c1e3[_0xb23b('0xb3')]){if(_0x48c1e3[_0xb23b('0x148')]==='16'&&this[_0xb23b('0x10')][_0x48c1e3[_0xb23b('0xc1')]][_0xb23b('0x75')]){this[_0xb23b('0x149')](_0x48c1e3,_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3[_0xb23b('0x148')]);}else if(this[_0xb23b('0x10')][_0x48c1e3['linkedid']]['dialAnswer']){logger[_0xb23b('0x5a')](_0xb23b('0x14a'),_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3['cause'],_0xb23b('0xc0'),_0x87be28[_0xb23b('0x24')],_0xb23b('0x74'),_0x87be28[_0xb23b('0x27')]);this[_0xb23b('0x149')](_0x48c1e3,_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3[_0xb23b('0x148')]);}}else if(_0x2f7124&&_[_0xb23b('0x6f')](_0x2f7124[_0xb23b('0x14b')])&&_0x87be28[_0xb23b('0x14c')]&&_0x48c1e3[_0xb23b('0xc1')]===_0x48c1e3[_0xb23b('0xb3')]&&_[_0xb23b('0x6f')](_0x48c1e3['reason'])&&_0x48c1e3[_0xb23b('0x148')]==='16'&&_0x48c1e3[_0xb23b('0x14d')]==='6'&&_[_0xb23b('0xf9')](_0x2f7124[_0xb23b('0x14e')])){if(_0x2f7124[_0xb23b('0xd7')]){rpcDb[_0xb23b('0x143')](_0x2f7124['idContact']);}if(_0x2f7124['activeContact']){rpcDb[_0xb23b('0x8c')](_0x2f7124[_0xb23b('0xae')]);}_0x48c1e3[_0xb23b('0x103')]='22';this['callProgressDetectingAgent'](_0x2f7124,_0x87be28,_0x48c1e3);}else if(_0x2f7124&&_0x2f7124[_0xb23b('0x14e')]){if(_0x48c1e3[_0xb23b('0x148')]==='16'&&this[_0xb23b('0x10')][_0x48c1e3[_0xb23b('0xc1')]][_0xb23b('0x75')]){logger[_0xb23b('0x5a')](_0xb23b('0x14f'),_0x48c1e3['linkedid'],_0x48c1e3[_0xb23b('0x148')],_0xb23b('0xc0'),_0x87be28['name'],_0xb23b('0x74'),_0x87be28[_0xb23b('0x27')]);this['callProgressDetectingCustomer'](_0x48c1e3,_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3[_0xb23b('0x148')]);}else if(this['actions'][_0x48c1e3[_0xb23b('0xc1')]]['dialAnswer']){logger['info'](_0xb23b('0x14a'),_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3[_0xb23b('0x148')],_0xb23b('0xc0'),_0x87be28[_0xb23b('0x24')],_0xb23b('0x74'),_0x87be28['pTalking']);this[_0xb23b('0x149')](_0x48c1e3,_0x48c1e3[_0xb23b('0xc1')],_0x48c1e3['cause']);}}};Preview[_0xb23b('0xa')][_0xb23b('0x1a')]=function(_0x245a42){if(this[_0xb23b('0x10')][_0x245a42[_0xb23b('0xf6')]]&&_0x245a42['destlinkedid']!==_0x245a42[_0xb23b('0x150')]){this['callProgressDetectingCustomer'](_0x245a42,_0x245a42[_0xb23b('0xf6')],_0x245a42[_0xb23b('0xe9')]);}};Preview[_0xb23b('0xa')][_0xb23b('0x19')]=function(_0xf790e6){if(this['actions'][_0xf790e6['linkedid']]&&_0xf790e6[_0xb23b('0xc1')]!==_0xf790e6[_0xb23b('0xb3')]&&!this[_0xb23b('0x10')][_0xf790e6['linkedid']][_0xb23b('0x75')]){if(_0xf790e6[_0xb23b('0x148')]==='1'){this[_0xb23b('0x149')](_0xf790e6,_0xf790e6[_0xb23b('0xc1')],_0xf790e6[_0xb23b('0x148')]);}}};Preview[_0xb23b('0xa')]['addVariable']=function(_0x10ac74,_0x3785fc,_0x3a7ced){if(this[_0xb23b('0x10')][_0x10ac74]){if(_[_0xb23b('0x6f')](this[_0xb23b('0x10')][_0x10ac74]['variables'])){this[_0xb23b('0x10')][_0x10ac74][_0xb23b('0x139')]={};}this[_0xb23b('0x10')][_0x10ac74]['variables'][_0x3785fc]=_0x3a7ced;}};Preview['prototype']['syncVarSet']=function(_0x2018c2){try{if(!_[_0xb23b('0x6f')](_0x2018c2)){if(ut[_0xb23b('0x151')](_[_0xb23b('0x152')](_0x2018c2[_0xb23b('0x153')])[0x0])){this[_0xb23b('0x154')](_0x2018c2[_0xb23b('0xb3')],_['keys'](_0x2018c2[_0xb23b('0x153')])[0x0],_0x2018c2[_0xb23b('0x155')]);}}}catch(_0x568b68){logger[_0xb23b('0x156')](_0xb23b('0x157'),util['inspect'](_0x568b68,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0xb23b('0x1f')]=function(_0x1bf9b8){if(_0x1bf9b8){if(this[_0xb23b('0x10')][_0x1bf9b8['transfertargetlinkedid']]){this['actions'][_0x1bf9b8['transfertargetlinkedid']][_0xb23b('0x14e')]=!![];}}};Preview[_0xb23b('0xa')]['syncBlindTransfer']=function(_0x3681b7){if(_0x3681b7){if(this[_0xb23b('0x10')][_0x3681b7['transfererlinkedid']]){this['actions'][_0x3681b7['transfererlinkedid']][_0xb23b('0x14e')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index 1a4948f..a1cc741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d2=['queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','disableContact','crateCustomerReportQueue','type','calleridnum','calleridname','queue','queuecallerjoinAt','answertime'];(function(_0x32ddad,_0x5a0470){var _0x70b364=function(_0x1b25eb){while(--_0x1b25eb){_0x32ddad['push'](_0x32ddad['shift']());}};_0x70b364(++_0x5a0470);}(_0x86d2,0x1b9));var _0x286d=function(_0x33f9ac,_0x4e7c29){_0x33f9ac=_0x33f9ac-0x0;var _0x48238a=_0x86d2[_0x33f9ac];return _0x48238a;};'use strict';var util=require('util');var BPromise=require(_0x286d('0x0'));var logger=require(_0x286d('0x1'))(_0x286d('0x2'));var _=require(_0x286d('0x3'));var cmHopper=require(_0x286d('0x4'));var cmHopperFinal=require(_0x286d('0x5'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x286d('0x6'));var voiceQueueRt=require(_0x286d('0x7'));var agentReportPreview=require(_0x286d('0x8'));var voiceQueueReport=require(_0x286d('0x9'));function loggerCatch(_0x53e3df){return function(_0x5423dc){logger['error'](_0x53e3df,util[_0x286d('0xa')](_0x5423dc,{'showHidden':![],'depth':null}));};}function create(_0x3f1005){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopperHistory[_0x286d('0xd')](_0x3f1005))[_0x286d('0xe')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x47ee72){return BPromise[_0x286d('0xb')]()['then'](agentReportPreview[_0x286d('0xd')](_0x47ee72))[_0x286d('0xe')](loggerCatch(_0x286d('0xf')));}function moveContact(_0x65046e){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopper[_0x286d('0x10')](_0x65046e,!![]))[_0x286d('0xe')](loggerCatch(_0x286d('0x11')));}exports[_0x286d('0x12')]=function(_0x9afce8){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopperBlack[_0x286d('0x12')](_0x9afce8))[_0x286d('0xe')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x286d('0x13')]=function(_0x57a9bd){return BPromise['resolve']()[_0x286d('0xc')](cmHopper[_0x286d('0x13')](_0x57a9bd))[_0x286d('0xe')](loggerCatch('[getContactPreview]\x20'));};exports[_0x286d('0xd')]=function(_0x204993,_0x4e4e8d){create(_0x204993)['catch'](loggerCatch(_0x4e4e8d));moveContact(_0x204993)[_0x286d('0xe')](loggerCatch(_0x4e4e8d));};exports[_0x286d('0x14')]=function(_0x160251,_0x30aa15){createAgent(_0x160251)[_0x286d('0xe')](loggerCatch(_0x30aa15));};exports['createCustomerHistory']=function(_0x11bf5e,_0xe0ac63){create(_0x11bf5e)[_0x286d('0xe')](loggerCatch(_0xe0ac63));};exports[_0x286d('0x15')]=function(_0x1abcc9,_0x1d63dc){moveContact(_0x1abcc9)['catch'](loggerCatch(_0x1d63dc));};exports[_0x286d('0x16')]=function(_0x9f8434,_0xb11297,_0x2ec655){if(_0xb11297){_0x9f8434[_0x286d('0x17')]=null;}if(_0x2ec655){_0x9f8434[_0x286d('0x18')]=![];}return BPromise['resolve']()[_0x286d('0xc')](cmHopper[_0x286d('0x16')](_0x9f8434))[_0x286d('0xe')](loggerCatch(_0x286d('0x19')));};exports[_0x286d('0x1a')]=function(_0x5084cb){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopper[_0x286d('0x1a')](_0x5084cb))[_0x286d('0xe')](loggerCatch(_0x286d('0x1b')));};exports['unlockContact']=function(_0x1b9d95){return BPromise['resolve']()[_0x286d('0xc')](cmHopper['unlockContact']({'UserId':null},_0x1b9d95,0x1))[_0x286d('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x286d('0x1c')]=function(_0x610e01){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopper['unlockContact']({'active':![]},_0x610e01,0x1))[_0x286d('0xe')](loggerCatch('[activeContact]\x20'));};exports[_0x286d('0x1d')]=function(_0x411782){var _0x1d5e94={};_0x1d5e94[_0x286d('0x1e')]=_0x411782[_0x286d('0x1e')];_0x1d5e94['uniqueid']=_0x411782['uniqueid'];_0x1d5e94[_0x286d('0x1f')]=_0x411782[_0x286d('0x1f')];_0x1d5e94['calleridname']=_0x411782[_0x286d('0x20')];_0x1d5e94[_0x286d('0x21')]=_0x411782[_0x286d('0x21')];_0x1d5e94[_0x286d('0x22')]=_0x411782[_0x286d('0x23')];_0x1d5e94['queuecallerleaveAt']=_0x411782[_0x286d('0x23')];_0x1d5e94['queuecallercomplete']=0x1;_0x1d5e94[_0x286d('0x24')]=_0x411782[_0x286d('0x25')];_0x1d5e94[_0x286d('0x26')]=_0x411782[_0x286d('0x27')];_0x1d5e94[_0x286d('0x28')]=_0x286d('0x29');_0x1d5e94[_0x286d('0x2a')]=_0x286d('0x2b');_0x1d5e94[_0x286d('0x2c')]=0x0;_0x1d5e94['assigned']=0x1;_0x1d5e94[_0x286d('0x2d')]=_0x411782[_0x286d('0x27')];_0x1d5e94[_0x286d('0x2e')]=_0x286d('0x2f');return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](voiceQueueReport[_0x286d('0x30')](_0x1d5e94))[_0x286d('0xe')](loggerCatch(_0x286d('0x31')));};exports[_0x286d('0x32')]=function(_0x184a6e,_0x1c1f0c){return BPromise[_0x286d('0xb')]()['then'](cmHopper[_0x286d('0x32')](_0x184a6e,_0x1c1f0c))[_0x286d('0xe')](loggerCatch(_0x286d('0x33')));};exports['rescheduleContactInQueue']=function(_0x5c21cf){return BPromise[_0x286d('0xb')]()[_0x286d('0xc')](cmHopper['rescheduleContact'](_0x5c21cf,!![],!![]))[_0x286d('0xe')](loggerCatch(_0x286d('0x34')));};
\ No newline at end of file
+var _0x5758=['calleridname','queue','queuecallerleaveAt','queuecallercompleteAt','endtime','membername','context','from-sip','exten','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','util','bluebird','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','resolve','createHistory','catch','then','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','rescheduleContact','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum'];(function(_0x10e077,_0x442a7a){var _0x56fa2f=function(_0xc3b569){while(--_0xc3b569){_0x10e077['push'](_0x10e077['shift']());}};_0x56fa2f(++_0x442a7a);}(_0x5758,0x120));var _0x8575=function(_0x4a0a76,_0x55628d){_0x4a0a76=_0x4a0a76-0x0;var _0x244716=_0x5758[_0x4a0a76];return _0x244716;};'use strict';var util=require(_0x8575('0x0'));var BPromise=require(_0x8575('0x1'));var logger=require('../../../config/logger')(_0x8575('0x2'));var _=require('lodash');var cmHopper=require(_0x8575('0x3'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x8575('0x4'));var cmHopperBlack=require(_0x8575('0x5'));var voiceQueueRt=require(_0x8575('0x6'));var agentReportPreview=require(_0x8575('0x7'));var voiceQueueReport=require(_0x8575('0x8'));function loggerCatch(_0x4bb68c){return function(_0x3adc32){logger[_0x8575('0x9')](_0x4bb68c,util['inspect'](_0x3adc32,{'showHidden':![],'depth':null}));};}function create(_0x2d1f84){return BPromise[_0x8575('0xa')]()['then'](cmHopperHistory[_0x8575('0xb')](_0x2d1f84))[_0x8575('0xc')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x56d00c){return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](agentReportPreview[_0x8575('0xb')](_0x56d00c))[_0x8575('0xc')](loggerCatch(_0x8575('0xe')));}function moveContact(_0x2951ca){return BPromise['resolve']()[_0x8575('0xd')](cmHopper[_0x8575('0xf')](_0x2951ca,!![]))[_0x8575('0xc')](loggerCatch(_0x8575('0x10')));}exports[_0x8575('0x11')]=function(_0x40c104){return BPromise['resolve']()[_0x8575('0xd')](cmHopperBlack[_0x8575('0x11')](_0x40c104))[_0x8575('0xc')](loggerCatch(_0x8575('0x12')));};exports['getContactPreview']=function(_0x46e1ac){return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](cmHopper[_0x8575('0x13')](_0x46e1ac))['catch'](loggerCatch(_0x8575('0x14')));};exports['createHistory']=function(_0x30bdf7,_0x2040a4){create(_0x30bdf7)[_0x8575('0xc')](loggerCatch(_0x2040a4));moveContact(_0x30bdf7)[_0x8575('0xc')](loggerCatch(_0x2040a4));};exports[_0x8575('0x15')]=function(_0x5dd3e2,_0x2bdbb9){createAgent(_0x5dd3e2)['catch'](loggerCatch(_0x2bdbb9));};exports[_0x8575('0x16')]=function(_0x2c2cc6,_0x4afc1f){create(_0x2c2cc6)['catch'](loggerCatch(_0x4afc1f));};exports[_0x8575('0x17')]=function(_0xcee919,_0x5c03cf){moveContact(_0xcee919)[_0x8575('0xc')](loggerCatch(_0x5c03cf));};exports['rescheduleContact']=function(_0x492840,_0x356238,_0x44e44d){if(_0x356238){_0x492840[_0x8575('0x18')]=null;}if(_0x44e44d){_0x492840[_0x8575('0x19')]=![];}return BPromise['resolve']()[_0x8575('0xd')](cmHopper[_0x8575('0x1a')](_0x492840))[_0x8575('0xc')](loggerCatch('[rescheduleContact]\x20'));};exports['countReScheduled']=function(_0x50317b){return BPromise[_0x8575('0xa')]()['then'](cmHopper[_0x8575('0x1b')](_0x50317b))[_0x8575('0xc')](loggerCatch('[countReScheduled]\x20'));};exports[_0x8575('0x1c')]=function(_0x2a9b6f){return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](cmHopper[_0x8575('0x1c')]({'UserId':null},_0x2a9b6f,0x1))['catch'](loggerCatch(_0x8575('0x1d')));};exports[_0x8575('0x1e')]=function(_0x7e2e57){return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](cmHopper[_0x8575('0x1c')]({'active':![]},_0x7e2e57,0x1))[_0x8575('0xc')](loggerCatch(_0x8575('0x1f')));};exports[_0x8575('0x20')]=function(_0x1cc4f1){var _0x558a8c={};_0x558a8c['type']=_0x1cc4f1[_0x8575('0x21')];_0x558a8c[_0x8575('0x22')]=_0x1cc4f1['uniqueid'];_0x558a8c[_0x8575('0x23')]=_0x1cc4f1['calleridnum'];_0x558a8c[_0x8575('0x24')]=_0x1cc4f1['calleridname'];_0x558a8c[_0x8575('0x25')]=_0x1cc4f1[_0x8575('0x25')];_0x558a8c['queuecallerjoinAt']=_0x1cc4f1['answertime'];_0x558a8c[_0x8575('0x26')]=_0x1cc4f1['answertime'];_0x558a8c['queuecallercomplete']=0x1;_0x558a8c[_0x8575('0x27')]=_0x1cc4f1[_0x8575('0x28')];_0x558a8c['connectedlinename']=_0x1cc4f1[_0x8575('0x29')];_0x558a8c[_0x8575('0x2a')]=_0x8575('0x2b');_0x558a8c[_0x8575('0x2c')]='xcally-motion-preview';_0x558a8c[_0x8575('0x2d')]=0x0;_0x558a8c[_0x8575('0x2e')]=0x1;_0x558a8c[_0x8575('0x2f')]=_0x1cc4f1[_0x8575('0x29')];_0x558a8c[_0x8575('0x30')]=_0x8575('0x31');return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](voiceQueueReport[_0x8575('0x32')](_0x558a8c))[_0x8575('0xc')](loggerCatch(_0x8575('0x33')));};exports[_0x8575('0x34')]=function(_0x4a08ba,_0x5929ac){return BPromise[_0x8575('0xa')]()[_0x8575('0xd')](cmHopper['getContactRecallMe'](_0x4a08ba,_0x5929ac))[_0x8575('0xc')](loggerCatch(_0x8575('0x35')));};exports['rescheduleContactInQueue']=function(_0x2b528e){return BPromise['resolve']()['then'](cmHopper[_0x8575('0x1a')](_0x2b528e,!![],!![]))[_0x8575('0xc')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index f8dff0f..dedb9ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7742=['\x22\x22\x20<>','isNil','addVariables','name','calleridname','calleridnum','ContactId','dialer','dialQueueProject2','dialPreviewUrl','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridnum','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags','createdAt','XMD-','toUpper','toLowerVariables','hasOwnProperty','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','logAgent','ringtime','membername','logCustomer','endtime','answertime','isFailure','RECALL','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','Global','scheduledAt','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','queue','interface','not_inuse','status','reachable','push','filterKey','type','dialAnswer','countbusyretry','countnoanswerretry','countglobal','callback','recallme','UserId','sipcallid','xmd-listid','xmd-dialurl','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosloss','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','noanswer','variables','forEach','toLowerCase','buildNoAnswerEventPayload','util','moment','preview','env','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','error','logger','info','inspect','loggerError','logger2','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x7742,0x74));var _0x2774=function(_0x321fea,_0xbd752a){_0x321fea=_0x321fea-0x0;var _0x55a101=_0x7742[_0x321fea];return _0x55a101;};'use strict';var util=require(_0x2774('0x0'));var _=require('lodash');var moment=require(_0x2774('0x1'));var logger=require('../../../../config/logger')(_0x2774('0x2'));var ipAgi=process[_0x2774('0x3')][_0x2774('0x4')]||'127.0.0.1';function getSeconds(_0x37ed24,_0x4d21b1){var _0x4f4b73=moment(_0x37ed24)['milliseconds'](0x0);var _0x11e303=moment(_0x4d21b1)[_0x2774('0x5')](0x0);return _0x4f4b73[_0x2774('0x6')](_0x11e303,_0x2774('0x7'));}exports[_0x2774('0x8')]=function(_0x3781e9){return function(_0xd4324c){logger[_0x2774('0x9')](_0x3781e9,util['inspect'](_0xd4324c,{'showHidden':![],'depth':null}));};};exports[_0x2774('0xa')]=function(_0x361e5a,_0x260257){logger[_0x2774('0xb')](_0x361e5a,util[_0x2774('0xc')](_0x260257,{'showHidden':![],'depth':null}));};exports[_0x2774('0xd')]=function(_0x51049e,_0x4f6925){logger[_0x2774('0x9')](_0x51049e,util['inspect'](_0x4f6925,{'showHidden':![],'depth':null}));};exports[_0x2774('0xe')]=function(_0x2e80fa){return function(_0x2469da){logger[_0x2774('0xb')](_0x2e80fa,util[_0x2774('0xc')](_0x2469da,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1ae6bc,_0x90acf1,_0x508b57){return{'message':_0x1ae6bc,'unlock':_0x90acf1,'active':_0x508b57};};exports[_0x2774('0xf')]=function(_0x484aec,_0x1a892c,_0x12121a){if(!_[_0x2774('0x10')](_0x12121a)&&_0x2774('0x11')===typeof _0x12121a&&!_[_0x2774('0x12')](_0x12121a)){if(!_[_0x2774('0x10')](_0x1a892c)&&_0x2774('0x11')===typeof _0x1a892c&&!_[_0x2774('0x12')](_0x1a892c)){return util['format'](_0x2774('0x13'),_0x1a892c,_0x12121a);}return util[_0x2774('0x14')]('\x22%s\x22\x20<%s>',_0x12121a,_0x12121a);}if(!_[_0x2774('0x10')](_0x484aec)&&_0x2774('0x11')===typeof _0x484aec&&!_['isEmpty'](_0x484aec)){return _0x484aec;}return _0x2774('0x15');};exports['isActive']=function(_0x598ab7){if(_[_0x2774('0x16')](_0x598ab7)){return![];}return _0x598ab7;};exports[_0x2774('0x17')]=function(_0x4baf13,_0x3be034,_0x4f6bff,_0x473710,_0x2eb6be,_0x5a373a){var _0x2620ca={'XMD-QUEUE':_0x3be034['Queue']?_0x3be034['Queue'][_0x2774('0x18')]:'','XMD-CALLERID':_0x473710,'XMD-CALLERID-PREVIEW':_0x5a373a?util[_0x2774('0x14')](_0x2774('0x13'),_0x5a373a[_0x2774('0x19')],_0x5a373a[_0x2774('0x1a')]):_0x473710,'XMD-DIALID':_0x2eb6be,'XMD-CONTACTID':_0x3be034[_0x2774('0x1b')],'XMD-CDRTYPE':_0x2774('0x1c'),'CALLERID(all)':_0x473710,'XMD-VOICEQUEUEID':_0x3be034['VoiceQueueId'],'XMD-DIALCHANNEL':_0x4f6bff,'XMD-DIALTIMEOUT':_0x4baf13['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x2774('0x14')]('\x22rtTxX%s%s\x22',_0x4baf13[_0x2774('0x1d')]?'g':'',_[_0x2774('0x12')](_0x4baf13['monitor_format'])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x4baf13[_0x2774('0x1e')]||'','XMD-AGI':_0x4baf13['dialQueueProject']?util[_0x2774('0x14')](_0x2774('0x1f'),ipAgi,_0x4baf13[_0x2774('0x20')]):'NONE','XMD-AGIAFTER':_0x4baf13[_0x2774('0x1d')]?util[_0x2774('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x4baf13[_0x2774('0x1d')]):_0x2774('0x21'),'XMD-ORIGINATECALLERIDNUM':_0x5a373a?_0x5a373a[_0x2774('0x22')]:'','XMD-ORIGINATECALLERIDNAME':_0x5a373a?_0x5a373a['originatecalleridname']:'','XMD-DESTINATION':_0x2774('0x23'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_[_0x2774('0x12')](_0x4baf13[_0x2774('0x24')])){_0x2620ca[util[_0x2774('0x14')]('%s',_0x2774('0x25'))]=_0x4baf13[_0x2774('0x24')];_0x2620ca[util[_0x2774('0x14')]('%s',_0x2774('0x26'))]=_0x2eb6be;}if(_0x3be034&&_0x3be034[_0x2774('0x27')]){for(var _0x197145 in _0x3be034['Contact']){if(_0x3be034[_0x2774('0x27')]['hasOwnProperty'](_0x197145)){if(!_[_0x2774('0x16')](_0x3be034['Contact'][_0x197145])&&_0x197145!=='id'&&_0x197145!==_0x2774('0x28')&&_0x197145!==_0x2774('0x29')&&_0x197145!=='updatedAt'){_0x2620ca[util['format']('%s%s',_0x2774('0x2a'),_[_0x2774('0x2b')](_0x197145))]=_0x3be034[_0x2774('0x27')][_0x197145];}}}}return _0x2620ca;};exports[_0x2774('0x2c')]=function(_0x475b88){var _0x2a6c12={};for(var _0x70a0b0 in _0x475b88){if(_0x475b88[_0x2774('0x2d')](_0x70a0b0)){_0x2a6c12[util[_0x2774('0x14')]('%s',_[_0x2774('0x2e')](_0x70a0b0))]=_0x475b88[_0x70a0b0];}}return{'variables':_0x2a6c12};};exports['updateOriginated']=function(_0x2e84c3,_0x5a4691){if(!_[_0x2774('0x16')](_0x2e84c3)){if(_0x2e84c3[_0x2774('0x2d')](_0x2774('0x2f'))){if(_0x2e84c3['originated']>0x0){_0x2e84c3[_0x2774('0x2f')]-=0x1;}else{logger[_0x2774('0x9')](_0x2774('0x30'),_0x5a4691);}}}else{logger[_0x2774('0x9')](_0x2774('0x31'),_0x5a4691);}};exports['logBlacklist']=function(_0x144c00){var _0x532216=moment()[_0x2774('0x14')](_0x2774('0x32'));_0x144c00[_0x2774('0x33')]=0xd;_0x144c00[_0x2774('0x34')]=_0x2774('0x35');_0x144c00[_0x2774('0x36')]=_0x532216;_0x144c00[_0x2774('0x37')]=_0x532216;_0x144c00['endtime']=_0x532216;};exports[_0x2774('0x38')]=function(_0xa5c3ba,_0x5438a1,_0x16f035){var _0x357002=moment()['format'](_0x2774('0x32'));_0xa5c3ba[_0x2774('0x33')]=_0x5438a1;_0xa5c3ba[_0x2774('0x34')]=_0x16f035;_0xa5c3ba[_0x2774('0x37')]=_0x357002;_0xa5c3ba[_0x2774('0x39')]=getSeconds(_0xa5c3ba[_0x2774('0x37')],_0xa5c3ba[_0x2774('0x36')]);};exports['logLookAgent']=function(_0x1865c2,_0x44efd6,_0x46b05d){_0x1865c2[_0x2774('0x3a')]=_0x44efd6;_0x1865c2['UserId']=_0x46b05d;};exports[_0x2774('0x3b')]=function(_0x2fb3e1,_0x1a4c1e,_0x5e1cda){var _0x5515cb=moment()[_0x2774('0x14')](_0x2774('0x32'));_0x2fb3e1[_0x2774('0x33')]=_0x1a4c1e;_0x2fb3e1[_0x2774('0x34')]=_0x5e1cda;_0x2fb3e1[_0x2774('0x37')]=_0x2fb3e1[_0x2774('0x37')]?_0x2fb3e1[_0x2774('0x37')]:_0x5515cb;_0x2fb3e1[_0x2774('0x3c')]=_0x2fb3e1[_0x2774('0x3c')]?_0x2fb3e1[_0x2774('0x3c')]:_0x5515cb;_0x2fb3e1[_0x2774('0x39')]=getSeconds(_0x2fb3e1[_0x2774('0x37')]||0x0,_0x2fb3e1[_0x2774('0x36')]||0x0);_0x2fb3e1['talktime']=_0x2fb3e1[_0x2774('0x3d')]?getSeconds(_0x2fb3e1[_0x2774('0x3c')],_0x2fb3e1['answertime']):0x0;};exports[_0x2774('0x3e')]=function(_0x494a4d){return _0x494a4d==='Failure';};exports['variablesAction']=function(_0x375101,_0x5ab232,_0x36f329,_0x262756,_0x3390c2){var _0x180719=_0x262756?_0x2774('0x3f'):_0x375101[_0x2774('0x19')];_0x180719=_0x3390c2?'BOOKED':_0x180719;return{'actionid':_0x375101[_0x2774('0x40')],'action':_0x2774('0x41'),'channel':_0x375101[_0x2774('0x42')],'callerid':util[_0x2774('0x14')](_0x2774('0x13'),_0x180719,_0x375101['calleridnum']),'Exten':'xcally-motion-preview','Context':_0x2774('0x43'),'Priority':'1','variable':_0x36f329,'timeout':(_0x5ab232[_0x2774('0x44')]||0x1e)*0x3e8,'async':!![],'channelid':_0x375101[_0x2774('0x40')]};};exports[_0x2774('0x45')]=function(_0x5ec840){return _0x5ec840['countbusyretry']+_0x5ec840[_0x2774('0x46')]+_0x5ec840['countnoanswerretry']+_0x5ec840[_0x2774('0x47')]+_0x5ec840[_0x2774('0x48')];};exports['cloneAction']=function(_0x2f11a7){var _0x2eae86=_[_0x2774('0x49')](_0x2f11a7);_0x2eae86[_0x2774('0x33')]=0xf;_0x2eae86['statedesc']=_0x2774('0x4a');return _0x2eae86;};exports[_0x2774('0x4b')]=function(_0x34bb82,_0x7dddc,_0x1d8b5f){var _0x4f5f44={};_0x4f5f44[_0x7dddc]=_0x34bb82[_0x7dddc];_0x4f5f44['active']=![];_0x4f5f44['scheduledat']=moment()[_0x2774('0x4c')](_0x1d8b5f,_0x2774('0x4d'))[_0x2774('0x14')](_0x2774('0x32'));_0x4f5f44[_0x2774('0x1b')]=_0x34bb82['ContactId'];_0x4f5f44[_0x2774('0x4e')]=_0x34bb82['ListId'];_0x4f5f44[_0x2774('0x4f')]=_0x34bb82[_0x2774('0x4f')]||undefined;return _0x4f5f44;};exports[_0x2774('0x50')]=function(_0x4a63ae,_0x155542){if(!_[_0x2774('0x16')](_0x4a63ae)){if(_0x4a63ae[_0x2774('0x51')]>0x0){_0x4a63ae[_0x2774('0x51')]-=0x1;}else{logger[_0x2774('0x9')](_0x155542,_0x2774('0x52'));}}else{logger[_0x2774('0x9')](_0x155542,_0x2774('0x53'));}};exports[_0x2774('0x54')]=function(_0x597de8){if(_0x597de8<=0x0){return!![];}return![];};function buildObj(_0x3e9092,_0x39bc5c,_0x148b74){_0x3e9092[_0x2774('0x55')]=_0x39bc5c;_0x3e9092[_0x2774('0x18')]=_0x3e9092['queue'];_0x3e9092['interface']=_0x3e9092['channelAgent'];_0x3e9092[_0x2774('0x56')]=_0x2774('0x57');if(_0x148b74){_0x3e9092[_0x2774('0x58')]=_0x148b74[_0x2774('0x58')];}return _0x3e9092;}exports[_0x2774('0x59')]=buildObj;exports[_0x2774('0x5a')]=function(_0x403343){var _0x2ebebb={};_0x2ebebb[_0x2774('0x5b')]=_0x403343[_0x2774('0x5b')];_0x2ebebb[_0x2774('0x5c')]=_0x403343[_0x2774('0x42')];_0x2ebebb[_0x2774('0x40')]=_0x403343[_0x2774('0x40')];return _0x2ebebb;};exports['agentReadyId']=function(_0x1fff09){var _0x13f606=[];for(var _0x47b57f in _0x1fff09){if(_0x1fff09['hasOwnProperty'](_0x47b57f)){if(!_['isNil'](_0x1fff09[_0x47b57f])&&_0x1fff09[_0x47b57f]['state']===_0x2774('0x5d')&&_0x1fff09[_0x47b57f][_0x2774('0x5e')]===_0x2774('0x5f')){_0x13f606[_0x2774('0x60')](_0x1fff09[_0x47b57f]['id']);}}}return _0x13f606;};exports['getDiff']=function(_0x50a415){var _0x561e1f=moment()[_0x2774('0x5')](0x0);var _0x4d44f0=moment(_0x50a415)['milliseconds'](0x0);return _0x561e1f[_0x2774('0x6')](_0x4d44f0,_0x2774('0x7'));};exports['createBody']=function(_0x3caf3c){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3caf3c[_0x2774('0x1b')],'ListId':_0x3caf3c[_0x2774('0x4e')],'VoiceQueueId':_0x3caf3c[_0x2774('0x4f')]||undefined,'CampaignId':_0x3caf3c['CampaignId']||undefined};};exports[_0x2774('0x61')]=function(_0x25879c){if(_0x25879c==='uniqueid'||_0x25879c==='idContact'||_0x25879c===_0x2774('0x5b')||_0x25879c===_0x2774('0x62')||_0x25879c==='campaigntype'||_0x25879c===_0x2774('0x63')||_0x25879c==='membername'||_0x25879c===_0x2774('0x42')||_0x25879c==='calleridname'||_0x25879c==='active'||_0x25879c===_0x2774('0x1a')||_0x25879c==='scheduledat'||_0x25879c===_0x2774('0x64')||_0x25879c===_0x2774('0x46')||_0x25879c===_0x2774('0x65')||_0x25879c===_0x2774('0x66')||_0x25879c===_0x2774('0x67')||_0x25879c==='callbackuniqueid'||_0x25879c==='callbackat'||_0x25879c===_0x2774('0x68')||_0x25879c===_0x2774('0x1b')||_0x25879c==='ListId'||_0x25879c===_0x2774('0x69')||_0x25879c===_0x2774('0x4f')||_0x25879c===_0x2774('0x6a')||_0x25879c==='xmd-voicequeueid'||_0x25879c==='xmd-queue'||_0x25879c==='xmd-phone'||_0x25879c===_0x2774('0x6b')||_0x25879c===_0x2774('0x6c')||_0x25879c==='xmd-dialtimeout'||_0x25879c===_0x2774('0x6d')||_0x25879c===_0x2774('0x6e')||_0x25879c===_0x2774('0x6f')||_0x25879c===_0x2774('0x70')||_0x25879c===_0x2774('0x71')||_0x25879c===_0x2774('0x72')||_0x25879c===_0x2774('0x73')||_0x25879c===_0x2774('0x74')||_0x25879c===_0x2774('0x75')||_0x25879c===_0x2774('0x76')||_0x25879c===_0x2774('0x77')||_0x25879c===_0x2774('0x78')||_0x25879c==='rtpaudioqosloss'||_0x25879c===_0x2774('0x79')||_0x25879c===_0x2774('0x7a')||_0x25879c===_0x2774('0x7b')||_0x25879c===_0x2774('0x75')||_0x25879c===_0x2774('0x76')||_0x25879c===_0x2774('0x77')||_0x25879c==='rtpaudioqosjitterbridged'||_0x25879c===_0x2774('0x7c')||_0x25879c===_0x2774('0x79')||_0x25879c===_0x2774('0x7a')||_0x25879c===_0x2774('0x7b')||_0x25879c===_0x2774('0x7d')||_0x25879c==='bridgepvtcallid'||_0x25879c===_0x2774('0x33')||_0x25879c===_0x2774('0x34')){return![];}return!![];};exports[_0x2774('0x7e')]=function(_0x43fe4a,_0x1e0a69){var _0x434ba9,_0x5c018f,_0x5da840;if(_0x1e0a69<=0x0){_0x1e0a69=0x1;}_0x434ba9=new RegExp(_0x2774('0x7f')+_0x1e0a69+'}$');_0x5c018f=Math[_0x2774('0x80')](0xa,_0x1e0a69-0x1);_0x5da840=Math[_0x2774('0x80')](0xa,_0x1e0a69)-0x1;return util[_0x2774('0x14')]('%s',_[_0x2774('0x81')](_0x43fe4a,_0x434ba9,_['random'](_0x5c018f,_0x5da840)));};exports[_0x2774('0x82')]=function(_0xfb0dc0){var _0x471c60=_0xfb0dc0[_0x2774('0x83')](/"(.*?)"/);return _0x471c60?_0x471c60[0x1]:_0xfb0dc0;};exports['extractCalleridNumber']=function(_0x550462){var _0x25dd9b=_0x550462[_0x2774('0x83')](/<(.*?)>/);return _0x25dd9b?_0x25dd9b[0x1]:_0x550462;};function buildNoAnswerEventPayload(_0x36771b,_0x57ef97){var _0x2a40b7=buildObj(_0x36771b,_0x2774('0x84'));if(!_[_0x2774('0x12')](_0x57ef97[_0x2774('0x85')])){Object['keys'](_0x57ef97[_0x2774('0x85')])[_0x2774('0x86')](function(_0x40905a){_0x2a40b7[_0x40905a[_0x2774('0x87')]()]=_0x57ef97['variables'][_0x40905a];});}return _0x2a40b7;}exports[_0x2774('0x88')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x29bb=['countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-callerid','xmd-agi','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','noanswer','variables','toLowerCase','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','logger','loggerError','inspect','logger2','info','message','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','calleridnum','ContactId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','state','Blacklist','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','statedesc','ringtime','starttime','membername','UserId','logCustomer','answertime','isFailure','Failure','RECALL','calleridname','BOOKED','channelAgent','xcally-motion-preview','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','scheduledat','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','name','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','agentReadyId','not_inuse','status','reachable','push','getDiff','diff','createBody','CampaignId','filterKey','type','campaigntype'];(function(_0x406e46,_0x5799cb){var _0x4a3742=function(_0x1fa435){while(--_0x1fa435){_0x406e46['push'](_0x406e46['shift']());}};_0x4a3742(++_0x5799cb);}(_0x29bb,0x1d7));var _0xb29b=function(_0x31d4c,_0x14eddb){_0x31d4c=_0x31d4c-0x0;var _0x7ea704=_0x29bb[_0x31d4c];return _0x7ea704;};'use strict';var util=require(_0xb29b('0x0'));var _=require(_0xb29b('0x1'));var moment=require(_0xb29b('0x2'));var logger=require(_0xb29b('0x3'))('preview');var ipAgi=process[_0xb29b('0x4')][_0xb29b('0x5')]||_0xb29b('0x6');function getSeconds(_0x359952,_0x23c55c){var _0x40c3fc=moment(_0x359952)[_0xb29b('0x7')](0x0);var _0x18d73b=moment(_0x23c55c)[_0xb29b('0x7')](0x0);return _0x40c3fc['diff'](_0x18d73b,_0xb29b('0x8'));}exports[_0xb29b('0x9')]=function(_0x190fee){return function(_0x100ab7){logger[_0xb29b('0xa')](_0x190fee,util['inspect'](_0x100ab7,{'showHidden':![],'depth':null}));};};exports[_0xb29b('0xb')]=function(_0x3a2a9d,_0x8bd56f){logger['info'](_0x3a2a9d,util['inspect'](_0x8bd56f,{'showHidden':![],'depth':null}));};exports[_0xb29b('0xc')]=function(_0x429027,_0x5a2e3b){logger[_0xb29b('0xa')](_0x429027,util[_0xb29b('0xd')](_0x5a2e3b,{'showHidden':![],'depth':null}));};exports[_0xb29b('0xe')]=function(_0x197784){return function(_0x513a11){logger[_0xb29b('0xf')](_0x197784,util[_0xb29b('0xd')](_0x513a11,{'showHidden':![],'depth':null}));};};exports[_0xb29b('0x10')]=function(_0x1a6323,_0x5ba508,_0x4bb75a){return{'message':_0x1a6323,'unlock':_0x5ba508,'active':_0x4bb75a};};exports['getCallerId']=function(_0x57a528,_0x450195,_0x198a9f){if(!_['isUndefined'](_0x198a9f)&&_0xb29b('0x11')===typeof _0x198a9f&&!_[_0xb29b('0x12')](_0x198a9f)){if(!_[_0xb29b('0x13')](_0x450195)&&_0xb29b('0x11')===typeof _0x450195&&!_[_0xb29b('0x12')](_0x450195)){return util[_0xb29b('0x14')](_0xb29b('0x15'),_0x450195,_0x198a9f);}return util[_0xb29b('0x14')](_0xb29b('0x15'),_0x198a9f,_0x198a9f);}if(!_['isUndefined'](_0x57a528)&&_0xb29b('0x11')===typeof _0x57a528&&!_[_0xb29b('0x12')](_0x57a528)){return _0x57a528;}return'\x22\x22\x20<>';};exports[_0xb29b('0x16')]=function(_0x18a578){if(_[_0xb29b('0x17')](_0x18a578)){return![];}return _0x18a578;};exports[_0xb29b('0x18')]=function(_0x3d3861,_0x3eb119,_0x2e8f93,_0x2ca6af,_0x4b3bcb,_0x35b928){var _0x437f46={'XMD-QUEUE':_0x3eb119[_0xb29b('0x19')]?_0x3eb119['Queue']['name']:'','XMD-CALLERID':_0x2ca6af,'XMD-CALLERID-PREVIEW':_0x35b928?util[_0xb29b('0x14')]('\x22%s\x22\x20<%s>',_0x35b928['calleridname'],_0x35b928[_0xb29b('0x1a')]):_0x2ca6af,'XMD-DIALID':_0x4b3bcb,'XMD-CONTACTID':_0x3eb119[_0xb29b('0x1b')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2ca6af,'XMD-VOICEQUEUEID':_0x3eb119['VoiceQueueId'],'XMD-DIALCHANNEL':_0x2e8f93,'XMD-DIALTIMEOUT':_0x3d3861[_0xb29b('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0xb29b('0x14')](_0xb29b('0x1d'),_0x3d3861[_0xb29b('0x1e')]?'g':'',_['isEmpty'](_0x3d3861['monitor_format'])?'':_0xb29b('0x1f')),'XMD-DIALURL':_0x3d3861[_0xb29b('0x20')]||'','XMD-AGI':_0x3d3861[_0xb29b('0x21')]?util[_0xb29b('0x14')](_0xb29b('0x22'),ipAgi,_0x3d3861[_0xb29b('0x21')]):_0xb29b('0x23'),'XMD-AGIAFTER':_0x3d3861['dialQueueProject2']?util[_0xb29b('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x3d3861[_0xb29b('0x1e')]):_0xb29b('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x35b928?_0x35b928[_0xb29b('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x35b928?_0x35b928['originatecalleridname']:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0xb29b('0x25')};if(!_['isEmpty'](_0x3d3861[_0xb29b('0x26')])){_0x437f46[util[_0xb29b('0x14')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x3d3861[_0xb29b('0x26')];_0x437f46[util[_0xb29b('0x14')]('%s',_0xb29b('0x27'))]=_0x4b3bcb;}if(_0x3eb119&&_0x3eb119['Contact']){for(var _0x30257c in _0x3eb119[_0xb29b('0x28')]){if(_0x3eb119[_0xb29b('0x28')][_0xb29b('0x29')](_0x30257c)){if(!_[_0xb29b('0x17')](_0x3eb119[_0xb29b('0x28')][_0x30257c])&&_0x30257c!=='id'&&_0x30257c!==_0xb29b('0x2a')&&_0x30257c!==_0xb29b('0x2b')&&_0x30257c!==_0xb29b('0x2c')){_0x437f46[util['format']('%s%s','XMD-',_['toUpper'](_0x30257c))]=_0x3eb119[_0xb29b('0x28')][_0x30257c];}}}}return _0x437f46;};exports[_0xb29b('0x2d')]=function(_0x22c40a){var _0x467228={};for(var _0x54f697 in _0x22c40a){if(_0x22c40a[_0xb29b('0x29')](_0x54f697)){_0x467228[util[_0xb29b('0x14')]('%s',_[_0xb29b('0x2e')](_0x54f697))]=_0x22c40a[_0x54f697];}}return{'variables':_0x467228};};exports[_0xb29b('0x2f')]=function(_0x4df3da,_0x5b6834){if(!_[_0xb29b('0x17')](_0x4df3da)){if(_0x4df3da[_0xb29b('0x29')](_0xb29b('0x30'))){if(_0x4df3da[_0xb29b('0x30')]>0x0){_0x4df3da['originated']-=0x1;}else{logger[_0xb29b('0xa')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x5b6834);}}}else{logger[_0xb29b('0xa')](_0xb29b('0x31'),_0x5b6834);}};exports['logBlacklist']=function(_0x3b07dc){var _0x251ead=moment()[_0xb29b('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x3b07dc[_0xb29b('0x32')]=0xd;_0x3b07dc['statedesc']=_0xb29b('0x33');_0x3b07dc['starttime']=_0x251ead;_0x3b07dc[_0xb29b('0x34')]=_0x251ead;_0x3b07dc[_0xb29b('0x35')]=_0x251ead;};exports['logAgent']=function(_0x198a1d,_0x542ba0,_0x585bae){var _0x9e0406=moment()['format'](_0xb29b('0x36'));_0x198a1d[_0xb29b('0x32')]=_0x542ba0;_0x198a1d[_0xb29b('0x37')]=_0x585bae;_0x198a1d[_0xb29b('0x34')]=_0x9e0406;_0x198a1d[_0xb29b('0x38')]=getSeconds(_0x198a1d[_0xb29b('0x34')],_0x198a1d[_0xb29b('0x39')]);};exports['logLookAgent']=function(_0x16c4fe,_0x4431b7,_0x450318){_0x16c4fe[_0xb29b('0x3a')]=_0x4431b7;_0x16c4fe[_0xb29b('0x3b')]=_0x450318;};exports[_0xb29b('0x3c')]=function(_0x4a32a8,_0xac7da5,_0x113345){var _0x231832=moment()['format'](_0xb29b('0x36'));_0x4a32a8[_0xb29b('0x32')]=_0xac7da5;_0x4a32a8[_0xb29b('0x37')]=_0x113345;_0x4a32a8[_0xb29b('0x34')]=_0x4a32a8[_0xb29b('0x34')]?_0x4a32a8[_0xb29b('0x34')]:_0x231832;_0x4a32a8[_0xb29b('0x35')]=_0x4a32a8['endtime']?_0x4a32a8[_0xb29b('0x35')]:_0x231832;_0x4a32a8['ringtime']=getSeconds(_0x4a32a8[_0xb29b('0x34')]||0x0,_0x4a32a8[_0xb29b('0x39')]||0x0);_0x4a32a8['talktime']=_0x4a32a8['answertime']?getSeconds(_0x4a32a8[_0xb29b('0x35')],_0x4a32a8[_0xb29b('0x3d')]):0x0;};exports[_0xb29b('0x3e')]=function(_0xfc9261){return _0xfc9261===_0xb29b('0x3f');};exports['variablesAction']=function(_0x401b80,_0x1a1764,_0x49f9d7,_0x3283b3,_0x7e1098){var _0x5adb5f=_0x3283b3?_0xb29b('0x40'):_0x401b80[_0xb29b('0x41')];_0x5adb5f=_0x7e1098?_0xb29b('0x42'):_0x5adb5f;return{'actionid':_0x401b80['uniqueid'],'action':'originate','channel':_0x401b80[_0xb29b('0x43')],'callerid':util[_0xb29b('0x14')](_0xb29b('0x15'),_0x5adb5f,_0x401b80[_0xb29b('0x1a')]),'Exten':_0xb29b('0x44'),'Context':'from-sip','Priority':'1','variable':_0x49f9d7,'timeout':(_0x1a1764[_0xb29b('0x45')]||0x1e)*0x3e8,'async':!![],'channelid':_0x401b80[_0xb29b('0x46')]};};exports[_0xb29b('0x47')]=function(_0x11f9fb){return _0x11f9fb[_0xb29b('0x48')]+_0x11f9fb[_0xb29b('0x49')]+_0x11f9fb[_0xb29b('0x4a')]+_0x11f9fb[_0xb29b('0x4b')]+_0x11f9fb[_0xb29b('0x4c')];};exports[_0xb29b('0x4d')]=function(_0x16ebb9){var _0x405111=_[_0xb29b('0x4e')](_0x16ebb9);_0x405111[_0xb29b('0x32')]=0xf;_0x405111['statedesc']=_0xb29b('0x4f');return _0x405111;};exports[_0xb29b('0x50')]=function(_0x26f685,_0x44bd1d,_0x47240e){var _0x11f63c={};_0x11f63c[_0x44bd1d]=_0x26f685[_0x44bd1d];_0x11f63c['active']=![];_0x11f63c[_0xb29b('0x51')]=moment()['add'](_0x47240e,_0xb29b('0x52'))[_0xb29b('0x14')](_0xb29b('0x36'));_0x11f63c['ContactId']=_0x26f685['ContactId'];_0x11f63c['ListId']=_0x26f685[_0xb29b('0x53')];_0x11f63c[_0xb29b('0x54')]=_0x26f685[_0xb29b('0x54')]||undefined;return _0x11f63c;};exports[_0xb29b('0x55')]=function(_0x523ea9,_0xf2d1c8){if(!_[_0xb29b('0x17')](_0x523ea9)){if(_0x523ea9[_0xb29b('0x56')]>0x0){_0x523ea9[_0xb29b('0x56')]-=0x1;}else{logger['error'](_0xf2d1c8,_0xb29b('0x57'));}}else{logger[_0xb29b('0xa')](_0xf2d1c8,_0xb29b('0x58'));}};exports[_0xb29b('0x59')]=function(_0x581f67){if(_0x581f67<=0x0){return!![];}return![];};function buildObj(_0x39f41a,_0x43deda,_0x2a0716){_0x39f41a['lastevent']=_0x43deda;_0x39f41a[_0xb29b('0x5a')]=_0x39f41a[_0xb29b('0x5b')];_0x39f41a[_0xb29b('0x5c')]=_0x39f41a[_0xb29b('0x43')];_0x39f41a[_0xb29b('0x5d')]=_0xb29b('0x5e');if(_0x2a0716){_0x39f41a[_0xb29b('0x5f')]=_0x2a0716[_0xb29b('0x5f')];}return _0x39f41a;}exports[_0xb29b('0x60')]=buildObj;exports['buildAcw']=function(_0x4f8139){var _0x176f57={};_0x176f57[_0xb29b('0x5b')]=_0x4f8139[_0xb29b('0x5b')];_0x176f57[_0xb29b('0x5c')]=_0x4f8139[_0xb29b('0x43')];_0x176f57[_0xb29b('0x46')]=_0x4f8139['uniqueid'];return _0x176f57;};exports[_0xb29b('0x61')]=function(_0x1e87a5){var _0x4a1f8c=[];for(var _0xb4050a in _0x1e87a5){if(_0x1e87a5[_0xb29b('0x29')](_0xb4050a)){if(!_['isNil'](_0x1e87a5[_0xb4050a])&&_0x1e87a5[_0xb4050a][_0xb29b('0x32')]===_0xb29b('0x62')&&_0x1e87a5[_0xb4050a][_0xb29b('0x63')]===_0xb29b('0x64')){_0x4a1f8c[_0xb29b('0x65')](_0x1e87a5[_0xb4050a]['id']);}}}return _0x4a1f8c;};exports[_0xb29b('0x66')]=function(_0x4dd8ce){var _0x5da7c7=moment()[_0xb29b('0x7')](0x0);var _0x13360e=moment(_0x4dd8ce)['milliseconds'](0x0);return _0x5da7c7[_0xb29b('0x67')](_0x13360e,_0xb29b('0x8'));};exports[_0xb29b('0x68')]=function(_0x42c8e7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x42c8e7['ContactId'],'ListId':_0x42c8e7[_0xb29b('0x53')],'VoiceQueueId':_0x42c8e7[_0xb29b('0x54')]||undefined,'CampaignId':_0x42c8e7[_0xb29b('0x69')]||undefined};};exports[_0xb29b('0x6a')]=function(_0xd57f98){if(_0xd57f98===_0xb29b('0x46')||_0xd57f98==='idContact'||_0xd57f98==='queue'||_0xd57f98===_0xb29b('0x6b')||_0xd57f98===_0xb29b('0x6c')||_0xd57f98==='dialAnswer'||_0xd57f98==='membername'||_0xd57f98===_0xb29b('0x43')||_0xd57f98===_0xb29b('0x41')||_0xd57f98==='active'||_0xd57f98==='calleridnum'||_0xd57f98==='scheduledat'||_0xd57f98===_0xb29b('0x48')||_0xd57f98===_0xb29b('0x49')||_0xd57f98===_0xb29b('0x4a')||_0xd57f98===_0xb29b('0x6d')||_0xd57f98===_0xb29b('0x6e')||_0xd57f98===_0xb29b('0x6f')||_0xd57f98===_0xb29b('0x70')||_0xd57f98===_0xb29b('0x71')||_0xd57f98===_0xb29b('0x1b')||_0xd57f98===_0xb29b('0x53')||_0xd57f98==='UserId'||_0xd57f98===_0xb29b('0x54')||_0xd57f98===_0xb29b('0x72')||_0xd57f98===_0xb29b('0x73')||_0xd57f98===_0xb29b('0x74')||_0xd57f98===_0xb29b('0x75')||_0xd57f98===_0xb29b('0x76')||_0xd57f98===_0xb29b('0x77')||_0xd57f98==='xmd-dialtimeout'||_0xd57f98===_0xb29b('0x78')||_0xd57f98===_0xb29b('0x79')||_0xd57f98===_0xb29b('0x7a')||_0xd57f98==='xmd-contactid'||_0xd57f98==='xmd-cdrtype'||_0xd57f98===_0xb29b('0x7b')||_0xd57f98==='xmd-agiafter'||_0xd57f98===_0xb29b('0x7c')||_0xd57f98==='rtpaudioqos'||_0xd57f98==='rtpaudioqosbridged'||_0xd57f98===_0xb29b('0x7d')||_0xd57f98===_0xb29b('0x7e')||_0xd57f98===_0xb29b('0x7f')||_0xd57f98===_0xb29b('0x80')||_0xd57f98===_0xb29b('0x81')||_0xd57f98===_0xb29b('0x82')||_0xd57f98==='rtpaudioqos'||_0xd57f98===_0xb29b('0x83')||_0xd57f98===_0xb29b('0x7d')||_0xd57f98===_0xb29b('0x7e')||_0xd57f98==='rtpaudioqosloss'||_0xd57f98===_0xb29b('0x80')||_0xd57f98===_0xb29b('0x81')||_0xd57f98==='rtpaudioqosrttbridged'||_0xd57f98===_0xb29b('0x84')||_0xd57f98===_0xb29b('0x85')||_0xd57f98===_0xb29b('0x32')||_0xd57f98===_0xb29b('0x37')){return![];}return!![];};exports[_0xb29b('0x86')]=function(_0x21bf8b,_0x3601e4){var _0x3a565f,_0x145cec,_0x41e8f9;if(_0x3601e4<=0x0){_0x3601e4=0x1;}_0x3a565f=new RegExp(_0xb29b('0x87')+_0x3601e4+'}$');_0x145cec=Math[_0xb29b('0x88')](0xa,_0x3601e4-0x1);_0x41e8f9=Math[_0xb29b('0x88')](0xa,_0x3601e4)-0x1;return util[_0xb29b('0x14')]('%s',_[_0xb29b('0x89')](_0x21bf8b,_0x3a565f,_[_0xb29b('0x8a')](_0x145cec,_0x41e8f9)));};exports[_0xb29b('0x8b')]=function(_0xa9cfbf){var _0x4b17ab=_0xa9cfbf['match'](/"(.*?)"/);return _0x4b17ab?_0x4b17ab[0x1]:_0xa9cfbf;};exports[_0xb29b('0x8c')]=function(_0x301bef){var _0x5c783d=_0x301bef[_0xb29b('0x8d')](/<(.*?)>/);return _0x5c783d?_0x5c783d[0x1]:_0x301bef;};function buildNoAnswerEventPayload(_0x2b1db4,_0x5af02e){var _0x1ac1bf=buildObj(_0x2b1db4,_0xb29b('0x8e'));if(!_[_0xb29b('0x12')](_0x5af02e['variables'])){Object['keys'](_0x5af02e[_0xb29b('0x8f')])['forEach'](function(_0xbccc33){_0x1ac1bf[_0xbccc33[_0xb29b('0x90')]()]=_0x5af02e[_0xb29b('0x8f')][_0xbccc33];});}return _0x1ac1bf;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index adf4251..e6c29c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c06=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','queueremove','queuepause','boolean','reload','voicequeuechannel'];(function(_0xfe101e,_0x527731){var _0x40eaca=function(_0x2f21ca){while(--_0x2f21ca){_0xfe101e['push'](_0xfe101e['shift']());}};_0x40eaca(++_0x527731);}(_0x2c06,0x1dc));var _0x62c0=function(_0x57aa50,_0x250309){_0x57aa50=_0x57aa50-0x0;var _0x27ee49=_0x2c06[_0x57aa50];return _0x27ee49;};'use strict';exports[_0x62c0('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x62c0('0x1'),'required':!![]},'penalty':{'type':_0x62c0('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0x62c0('0x3')]={'queue':{'type':_0x62c0('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x62c0('0x4')]={'interface':{'type':_0x62c0('0x1'),'required':!![]},'paused':{'type':_0x62c0('0x5')},'reason':{'type':_0x62c0('0x1'),'required':![]}};exports[_0x62c0('0x6')]={'module':{'type':_0x62c0('0x1'),'required':![]}};exports[_0x62c0('0x7')]={'uniqueid':{'type':_0x62c0('0x1'),'required':!![]}};exports[_0x62c0('0x8')]={'uniqueid':{'type':_0x62c0('0x1'),'required':!![]},'filename':{'type':_0x62c0('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':'string'}};exports[_0x62c0('0x9')]={'uniqueid':{'type':_0x62c0('0x1'),'required':!![]}};exports[_0x62c0('0xa')]={'uniqueid':{'type':_0x62c0('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0xc9cc=['queueadd','string','number','boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup'];(function(_0x146a85,_0x529b52){var _0x1b59bf=function(_0x4af0fd){while(--_0x4af0fd){_0x146a85['push'](_0x146a85['shift']());}};_0x1b59bf(++_0x529b52);}(_0xc9cc,0x78));var _0xcc9c=function(_0x2deee9,_0x58b00f){_0x2deee9=_0x2deee9-0x0;var _0x51a55e=_0xc9cc[_0x2deee9];return _0x51a55e;};'use strict';exports[_0xcc9c('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xcc9c('0x1'),'required':!![]},'penalty':{'type':_0xcc9c('0x2'),'required':![]},'paused':{'type':_0xcc9c('0x3'),'required':![]}};exports[_0xcc9c('0x4')]={'queue':{'type':_0xcc9c('0x1'),'required':!![]},'interface':{'type':_0xcc9c('0x1'),'required':!![]}};exports[_0xcc9c('0x5')]={'interface':{'type':_0xcc9c('0x1'),'required':!![]},'paused':{'type':_0xcc9c('0x3')},'reason':{'type':_0xcc9c('0x1'),'required':![]}};exports[_0xcc9c('0x6')]={'module':{'type':_0xcc9c('0x1'),'required':![]}};exports[_0xcc9c('0x7')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xcc9c('0x8')]={'uniqueid':{'type':_0xcc9c('0x1'),'required':!![]},'filename':{'type':_0xcc9c('0x1')},'format':{'type':_0xcc9c('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xcc9c('0x9')]={'uniqueid':{'type':_0xcc9c('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xcc9c('0x1'),'required':!![]},'exten':{'type':_0xcc9c('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 30ad212..84e3551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x363e=['outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','isUndefined','initTelephones','initTrunks','length','initVoiceQueues','initTriggers','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','vtigerAccounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','SquareProject','voiceExtensions','initCampaignHopperHistory','exports','util','lodash','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','templates','outbound','channels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','format','SIP/%s','name','hasOwnProperty','isNil','interface','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay'];(function(_0x20f863,_0x2d9c90){var _0x11841e=function(_0x4052ad){while(--_0x4052ad){_0x20f863['push'](_0x20f863['shift']());}};_0x11841e(++_0x2d9c90);}(_0x363e,0x179));var _0xe363=function(_0x20ad7f,_0x3b8608){_0x20ad7f=_0x20ad7f-0x0;var _0x2d371b=_0x363e[_0x20ad7f];return _0x2d371b;};'use strict';var util=require(_0xe363('0x0'));var _=require(_0xe363('0x1'));var moment=require('moment');var Agent=require(_0xe363('0x2'));var Telephone=require(_0xe363('0x3'));var Trunk=require(_0xe363('0x4'));var VoiceQueue=require(_0xe363('0x5'));var Trigger=require(_0xe363('0x6'));var Template=require(_0xe363('0x7'));var Campaign=require(_0xe363('0x8'));var VoiceExtension=require(_0xe363('0x9'));var ZendeskAccount=require(_0xe363('0xa'));var SalesforceAccount=require(_0xe363('0xb'));var FreshdeskAccount=require(_0xe363('0xc'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0xe363('0xd'));var DeskAccount=require(_0xe363('0xe'));var VtigerAccount=require(_0xe363('0xf'));var ServicenowAccount=require(_0xe363('0x10'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xe363('0x11'));var FaxAccount=require(_0xe363('0x12'));var Realtime=function(){this[_0xe363('0x13')]={};this[_0xe363('0x14')]={};this[_0xe363('0x15')]={};this[_0xe363('0x16')]={};this[_0xe363('0x17')]={};this['campaigns']={};this[_0xe363('0x18')]={};this[_0xe363('0x19')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xe363('0x1a')]={};this['queueChannels']={};this['outboundChannels']={};this[_0xe363('0x1b')]={};this[_0xe363('0x1c')]={};this[_0xe363('0x1d')]={};this[_0xe363('0x1e')]={};this[_0xe363('0x1f')]={};this['freshdeskAccounts']={};this[_0xe363('0x20')]={};this[_0xe363('0x21')]={};this['vtigerAccounts']={};this[_0xe363('0x22')]={};this[_0xe363('0x23')]={};this['freshsalesAccounts']={};this[_0xe363('0x24')]={};};function freeIsNotKey(_0x73ef9a,_0x51e1a8,_0xd9d1b1){var _0xc94d0a=_['mapKeys'](_0x73ef9a,function(_0xecbe2c,_0x17606f){return _0xecbe2c[_0xd9d1b1];});for(var _0x2f2c20 in _0x51e1a8){if(_0x51e1a8['hasOwnProperty'](_0x2f2c20)){if(!_0xc94d0a[_0x2f2c20]){delete _0x51e1a8[_0x2f2c20];}}}}function freeIsNotKeySip(_0x287104,_0x470103){var _0x5177f4=_[_0xe363('0x25')](_0x287104,function(_0x110e59,_0x1c4953){return util[_0xe363('0x26')](_0xe363('0x27'),_0x110e59[_0xe363('0x28')]);});for(var _0x4ee855 in _0x470103){if(_0x470103[_0xe363('0x29')](_0x4ee855)){if(!_0x5177f4[_0x4ee855]){delete _0x470103[_0x4ee855];}}}}function freeIsNotKeyAgent(_0x38e694,_0x14ff95){var _0x379b8a=_[_0xe363('0x25')](_0x38e694,function(_0x42928e,_0x24199a){var _0xaff56f=_[_0xe363('0x2a')](_0x42928e[_0xe363('0x2b')])?util[_0xe363('0x26')](_0xe363('0x27'),_0x42928e[_0xe363('0x28')]):_0x42928e[_0xe363('0x2b')];return _0xaff56f;});for(var _0x1ffed7 in _0x14ff95){if(_0x14ff95[_0xe363('0x29')](_0x1ffed7)){if(!_0x379b8a[_0x1ffed7]){delete _0x14ff95[_0x1ffed7];}}}}function clearVoiceCallReports(_0xf9b981){_0xf9b981[_0xe363('0x2c')]=0x0;_0xf9b981[_0xe363('0x2d')]=0x0;_0xf9b981[_0xe363('0x2e')]=0x0;_0xf9b981[_0xe363('0x2f')]=0x0;_0xf9b981[_0xe363('0x30')]=0x0;}function clearCampaigns(_0x5b2b3d){if(!_[_0xe363('0x31')](_0x5b2b3d)){for(var _0x12358b in _0x5b2b3d){if(_0x5b2b3d[_0xe363('0x29')](_0x12358b)){_0x5b2b3d[_0x12358b][_0xe363('0x32')]=0x0;_0x5b2b3d[_0x12358b][_0xe363('0x33')]=0x0;}}}}function clearVoiceQueues(_0x52cafe){if(!_[_0xe363('0x31')](_0x52cafe)){for(var _0x291841 in _0x52cafe){if(_0x52cafe['hasOwnProperty'](_0x291841)){_0x52cafe[_0x291841][_0xe363('0x2c')]=0x0;_0x52cafe[_0x291841]['answered']=0x0;_0x52cafe[_0x291841][_0xe363('0x34')]=0x0;_0x52cafe[_0x291841][_0xe363('0x35')]=0x0;_0x52cafe[_0x291841]['sumHoldTime']=0x0;_0x52cafe[_0x291841][_0xe363('0x2f')]=0x0;_0x52cafe[_0x291841][_0xe363('0x30')]=0x0;_0x52cafe[_0x291841][_0xe363('0x36')]=0x0;_0x52cafe[_0x291841]['outboundNoAnswerCallsDay']=0x0;_0x52cafe[_0x291841][_0xe363('0x37')]=0x0;_0x52cafe[_0x291841][_0xe363('0x38')]=0x0;_0x52cafe[_0x291841][_0xe363('0x39')]=0x0;_0x52cafe[_0x291841][_0xe363('0x3a')]=0x0;_0x52cafe[_0x291841]['outboundDropCallsDayTimeout']=0x0;_0x52cafe[_0x291841][_0xe363('0x3b')]=0x0;_0x52cafe[_0x291841][_0xe363('0x3c')]=0x0;_0x52cafe[_0x291841][_0xe363('0x3d')]=0x0;_0x52cafe[_0x291841][_0xe363('0x3e')]=0x0;_0x52cafe[_0x291841][_0xe363('0x3f')]=0x0;_0x52cafe[_0x291841][_0xe363('0x36')]=0x0;_0x52cafe[_0x291841][_0xe363('0x40')]=0x0;_0x52cafe[_0x291841][_0xe363('0x41')]=!![];}}}}Realtime[_0xe363('0x42')][_0xe363('0x43')]=function(_0x5c9751,_0x4e8776){for(var _0xaff437 in _0x4e8776){if(_0x5c9751[_0xe363('0x29')](_0xaff437)){_0x5c9751[_0xaff437]=_0x4e8776[_0xaff437];}}};Realtime['prototype'][_0xe363('0x44')]=function(){var _0x13eeac=this;return function(_0x54cda9){if(_0x54cda9){freeIsNotKeyAgent(_0x54cda9,_0x13eeac[_0xe363('0x13')]);for(var _0x1ff239=0x0,_0x410126={},_0x1ed87e={};_0x1ff239<_0x54cda9['length'];_0x1ff239+=0x1){_0x410126=_0x54cda9[_0x1ff239];var _0x5362af=_[_0xe363('0x2a')](_0x410126['interface'])?util['format'](_0xe363('0x27'),_0x410126[_0xe363('0x28')]):_0x410126[_0xe363('0x2b')];if(_[_0xe363('0x45')](_0x13eeac[_0xe363('0x13')][_0x5362af])){_0x13eeac[_0xe363('0x13')][_0x5362af]=new Agent(_0x410126);}else{_0x13eeac[_0xe363('0x43')](_0x13eeac[_0xe363('0x13')][_0x5362af],_0x410126);}}}return _0x13eeac[_0xe363('0x13')];};};Realtime[_0xe363('0x42')][_0xe363('0x46')]=function(){var _0x2a8703=this;return function(_0x544532){if(_0x544532){freeIsNotKeySip(_0x544532,_0x2a8703['telephones']);for(var _0x14238f=0x0,_0xe018af={},_0x33ace3={};_0x14238f<_0x544532['length'];_0x14238f+=0x1){_0xe018af=_0x544532[_0x14238f];if(_['isUndefined'](_0x2a8703[_0xe363('0x14')][util[_0xe363('0x26')](_0xe363('0x27'),_0xe018af[_0xe363('0x28')])])){_0x2a8703['telephones'][util[_0xe363('0x26')]('SIP/%s',_0xe018af[_0xe363('0x28')])]=new Telephone(_0xe018af);}else{_0x2a8703[_0xe363('0x43')](_0x2a8703[_0xe363('0x14')][util[_0xe363('0x26')](_0xe363('0x27'),_0xe018af[_0xe363('0x28')])],_0xe018af);}}}return _0x2a8703[_0xe363('0x14')];};};Realtime[_0xe363('0x42')][_0xe363('0x47')]=function(){var _0x518694=this;return function(_0x52fc17){if(_0x52fc17){freeIsNotKeySip(_0x52fc17,_0x518694[_0xe363('0x15')]);for(var _0x44be85=0x0,_0xc7d891={},_0x34a043={};_0x44be85<_0x52fc17[_0xe363('0x48')];_0x44be85+=0x1){_0xc7d891=_0x52fc17[_0x44be85];if(_[_0xe363('0x45')](_0x518694[_0xe363('0x15')][util[_0xe363('0x26')](_0xe363('0x27'),_0xc7d891['name'])])){_0x518694[_0xe363('0x15')][util['format'](_0xe363('0x27'),_0xc7d891['name'])]=new Trunk(_0xc7d891);}else{_0x518694[_0xe363('0x43')](_0x518694[_0xe363('0x15')][util['format'](_0xe363('0x27'),_0xc7d891[_0xe363('0x28')])],_0xc7d891);}}}return _0x518694[_0xe363('0x15')];};};Realtime[_0xe363('0x42')][_0xe363('0x49')]=function(){var _0x450bb9=this;return function(_0x5f4bc0){if(_0x5f4bc0){freeIsNotKey(_0x5f4bc0,_0x450bb9[_0xe363('0x16')],_0xe363('0x28'));for(var _0x218a16=0x0,_0xcab016={},_0x256a1f={};_0x218a16<_0x5f4bc0['length'];_0x218a16+=0x1){_0xcab016=_0x5f4bc0[_0x218a16];if(_[_0xe363('0x45')](_0x450bb9[_0xe363('0x16')][_0xcab016[_0xe363('0x28')]])){_0x450bb9[_0xe363('0x16')][_0xcab016[_0xe363('0x28')]]=new VoiceQueue(_0xcab016);}else{_0x450bb9[_0xe363('0x43')](_0x450bb9[_0xe363('0x16')][_0xcab016['name']],_0xcab016);}}}return _0x450bb9['voiceQueues'];};};Realtime[_0xe363('0x42')][_0xe363('0x4a')]=function(){var _0x8f6a76=this;return function(_0x4aa733){if(_0x4aa733){freeIsNotKey(_0x4aa733,_0x8f6a76[_0xe363('0x17')],'id');for(var _0x381a5c=0x0,_0x4b47ec={},_0x5307e0={};_0x381a5c<_0x4aa733[_0xe363('0x48')];_0x381a5c+=0x1){_0x4b47ec=_0x4aa733[_0x381a5c];if(_[_0xe363('0x45')](_0x8f6a76[_0xe363('0x17')][_0x4b47ec['id']])){_0x8f6a76[_0xe363('0x17')][_0x4b47ec['id']]=new Trigger(_0x4b47ec);}else{_0x8f6a76['mergeFromDatabase'](_0x8f6a76[_0xe363('0x17')][_0x4b47ec['id']],_0x4b47ec);}}}return _0x8f6a76[_0xe363('0x17')];};};Realtime['prototype']['initTemplates']=function(){var _0x306afd=this;return function(_0x238d4a){if(_0x238d4a){freeIsNotKey(_0x238d4a,_0x306afd['templates'],'id');for(var _0x305d6c=0x0,_0x532187={},_0x1043ec={};_0x305d6c<_0x238d4a[_0xe363('0x48')];_0x305d6c+=0x1){_0x532187=_0x238d4a[_0x305d6c];if(_['isUndefined'](_0x306afd[_0xe363('0x18')][_0x532187['id']])){_0x306afd[_0xe363('0x18')][_0x532187['id']]=new Template(_0x532187);}else{_0x306afd['mergeFromDatabase'](_0x306afd[_0xe363('0x18')][_0x532187['id']],_0x532187);}}}return _0x306afd[_0xe363('0x18')];};};Realtime['prototype'][_0xe363('0x4b')]=function(){var _0x5733eb=this;return function(_0x3c9a1b){if(_0x3c9a1b){freeIsNotKey(_0x3c9a1b,_0x5733eb[_0xe363('0x1d')],'id');for(var _0xb843fd=0x0,_0x2abd22={},_0x5bf716={};_0xb843fd<_0x3c9a1b[_0xe363('0x48')];_0xb843fd+=0x1){_0x2abd22=_0x3c9a1b[_0xb843fd];if(_[_0xe363('0x45')](_0x5733eb[_0xe363('0x1d')][_0x2abd22['id']])){_0x5733eb['zendeskAccounts'][_0x2abd22['id']]=new ZendeskAccount(_0x2abd22);}else{_0x5733eb[_0xe363('0x43')](_0x5733eb[_0xe363('0x1d')][_0x2abd22['id']],_0x2abd22);}}}return _0x5733eb[_0xe363('0x1d')];};};Realtime['prototype'][_0xe363('0x4c')]=function(){var _0x3df941=this;return function(_0x5aedb9){if(_0x5aedb9){freeIsNotKey(_0x5aedb9,_0x3df941[_0xe363('0x1e')],'id');for(var _0x25df32=0x0,_0x29112a={},_0x32b8f6={};_0x25df32<_0x5aedb9[_0xe363('0x48')];_0x25df32+=0x1){_0x29112a=_0x5aedb9[_0x25df32];if(_[_0xe363('0x45')](_0x3df941[_0xe363('0x1e')][_0x29112a['id']])){_0x3df941[_0xe363('0x1e')][_0x29112a['id']]=new SalesforceAccount(_0x29112a);}else{_0x3df941[_0xe363('0x43')](_0x3df941[_0xe363('0x1e')][_0x29112a['id']],_0x29112a);}}}return _0x3df941[_0xe363('0x1e')];};};Realtime[_0xe363('0x42')][_0xe363('0x4d')]=function(){var _0x550e89=this;return function(_0x58ba21){if(_0x58ba21){freeIsNotKey(_0x58ba21,_0x550e89[_0xe363('0x4e')],'id');for(var _0x9e2813=0x0,_0x24ec95={},_0xc48c38={};_0x9e2813<_0x58ba21[_0xe363('0x48')];_0x9e2813+=0x1){_0x24ec95=_0x58ba21[_0x9e2813];if(_[_0xe363('0x45')](_0x550e89[_0xe363('0x4e')][_0x24ec95['id']])){_0x550e89[_0xe363('0x4e')][_0x24ec95['id']]=new FreshdeskAccount(_0x24ec95);}else{_0x550e89[_0xe363('0x43')](_0x550e89[_0xe363('0x4e')][_0x24ec95['id']],_0x24ec95);}}}return _0x550e89[_0xe363('0x4e')];};};Realtime[_0xe363('0x42')][_0xe363('0x4f')]=function(){var _0x5b771d=this;return function(_0x1cbad3){if(_0x1cbad3){freeIsNotKey(_0x1cbad3,_0x5b771d[_0xe363('0x20')],'id');for(var _0x333932=0x0,_0x55b769={},_0x17940b={};_0x333932<_0x1cbad3[_0xe363('0x48')];_0x333932+=0x1){_0x55b769=_0x1cbad3[_0x333932];if(_[_0xe363('0x45')](_0x5b771d[_0xe363('0x20')][_0x55b769['id']])){_0x5b771d[_0xe363('0x20')][_0x55b769['id']]=new ZohoAccount(_0x55b769);}else{_0x5b771d['mergeFromDatabase'](_0x5b771d['zohoAccounts'][_0x55b769['id']],_0x55b769);}}}return _0x5b771d[_0xe363('0x20')];};};Realtime['prototype'][_0xe363('0x50')]=function(){var _0x1b9660=this;return function(_0xfcb472){if(_0xfcb472){freeIsNotKey(_0xfcb472,_0x1b9660[_0xe363('0x21')],'id');for(var _0x190842=0x0,_0x157c2c={},_0x4baa52={};_0x190842<_0xfcb472[_0xe363('0x48')];_0x190842+=0x1){_0x157c2c=_0xfcb472[_0x190842];if(_[_0xe363('0x45')](_0x1b9660[_0xe363('0x21')][_0x157c2c['id']])){_0x1b9660[_0xe363('0x21')][_0x157c2c['id']]=new DeskAccount(_0x157c2c);}else{_0x1b9660['mergeFromDatabase'](_0x1b9660[_0xe363('0x21')][_0x157c2c['id']],_0x157c2c);}}}return _0x1b9660[_0xe363('0x21')];};};Realtime[_0xe363('0x42')]['initSugarcrmAccounts']=function(){var _0x2ee264=this;return function(_0x46860f){if(_0x46860f){freeIsNotKey(_0x46860f,_0x2ee264[_0xe363('0x1f')],'id');for(var _0xb6f70d=0x0,_0x24da3a={},_0x1e561a={};_0xb6f70d<_0x46860f[_0xe363('0x48')];_0xb6f70d+=0x1){_0x24da3a=_0x46860f[_0xb6f70d];if(_[_0xe363('0x45')](_0x2ee264[_0xe363('0x1f')][_0x24da3a['id']])){_0x2ee264[_0xe363('0x1f')][_0x24da3a['id']]=new SugarcrmAccount(_0x24da3a);}else{_0x2ee264[_0xe363('0x43')](_0x2ee264['sugarcrmAccounts'][_0x24da3a['id']],_0x24da3a);}}}return _0x2ee264['sugarcrmAccounts'];};};Realtime[_0xe363('0x42')]['initVtigerAccounts']=function(){var _0x142a55=this;return function(_0x127c7e){if(_0x127c7e){freeIsNotKey(_0x127c7e,_0x142a55[_0xe363('0x51')],'id');for(var _0x3caf3e=0x0,_0x5d312a={},_0x5709c2={};_0x3caf3e<_0x127c7e['length'];_0x3caf3e+=0x1){_0x5d312a=_0x127c7e[_0x3caf3e];if(_[_0xe363('0x45')](_0x142a55[_0xe363('0x51')][_0x5d312a['id']])){_0x142a55[_0xe363('0x51')][_0x5d312a['id']]=new VtigerAccount(_0x5d312a);}else{_0x142a55[_0xe363('0x43')](_0x142a55['vtigerAccounts'][_0x5d312a['id']],_0x5d312a);}}}return _0x142a55['vtigerAccounts'];};};Realtime[_0xe363('0x42')]['initServicenowAccounts']=function(){var _0x1c81ce=this;return function(_0x45e6c8){if(_0x45e6c8){freeIsNotKey(_0x45e6c8,_0x1c81ce[_0xe363('0x22')],'id');for(var _0x29b98f=0x0,_0x1190be={},_0xa9aa67={};_0x29b98f<_0x45e6c8[_0xe363('0x48')];_0x29b98f+=0x1){_0x1190be=_0x45e6c8[_0x29b98f];if(_[_0xe363('0x45')](_0x1c81ce['servicenowAccounts'][_0x1190be['id']])){_0x1c81ce[_0xe363('0x22')][_0x1190be['id']]=new ServicenowAccount(_0x1190be);}else{_0x1c81ce[_0xe363('0x43')](_0x1c81ce['servicenowAccounts'][_0x1190be['id']],_0x1190be);}}}return _0x1c81ce[_0xe363('0x22')];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x355df8=this;return function(_0x596f3b){if(_0x596f3b){freeIsNotKey(_0x596f3b,_0x355df8[_0xe363('0x23')],'id');for(var _0x40f665=0x0,_0x52786a={},_0x15d7bc={};_0x40f665<_0x596f3b[_0xe363('0x48')];_0x40f665+=0x1){_0x52786a=_0x596f3b[_0x40f665];if(_[_0xe363('0x45')](_0x355df8[_0xe363('0x23')][_0x52786a['id']])){_0x355df8['dynamics365Accounts'][_0x52786a['id']]=new Dynamics365Account(_0x52786a);}else{_0x355df8[_0xe363('0x43')](_0x355df8['dynamics365Accounts'][_0x52786a['id']],_0x52786a);}}}return _0x355df8['dynamics365Accounts'];};};Realtime[_0xe363('0x42')][_0xe363('0x52')]=function(){var _0x440270=this;return function(_0x38e0a3){if(_0x38e0a3){freeIsNotKey(_0x38e0a3,_0x440270[_0xe363('0x53')],'id');for(var _0x3245d8=0x0,_0x3be5fb={},_0x3cb159={};_0x3245d8<_0x38e0a3[_0xe363('0x48')];_0x3245d8+=0x1){_0x3be5fb=_0x38e0a3[_0x3245d8];if(_[_0xe363('0x45')](_0x440270[_0xe363('0x53')][_0x3be5fb['id']])){_0x440270[_0xe363('0x53')][_0x3be5fb['id']]=new FreshsalesAccount(_0x3be5fb);}else{_0x440270['mergeFromDatabase'](_0x440270[_0xe363('0x53')][_0x3be5fb['id']],_0x3be5fb);}}}return _0x440270[_0xe363('0x53')];};};Realtime[_0xe363('0x42')][_0xe363('0x54')]=function(){var _0x41286a=this;return function(_0x539c39){for(var _0x4de8db=0x0;_0x4de8db<_0x539c39[_0xe363('0x48')];_0x4de8db+=0x1){_[_0xe363('0x55')](_0x41286a[_0xe363('0x16')][_0x539c39[_0x4de8db][_0xe363('0x28')]],_0x539c39[_0x4de8db]);}return _0x41286a[_0xe363('0x16')];};};Realtime[_0xe363('0x42')][_0xe363('0x56')]=function(){var _0x445588=this;return function(_0x5eb128){clearVoiceQueues(_0x445588[_0xe363('0x16')]);if(_0x5eb128){_0x5eb128=_[_0xe363('0x57')](_0x5eb128,_0xe363('0x58'));for(var _0x5e7702 in _0x5eb128){if(_0x5eb128['hasOwnProperty'](_0x5e7702)){var _0x3a4c7e={};for(var _0x5b821f=0x0;_0x5b821f<_0x5eb128[_0x5e7702]['length'];_0x5b821f+=0x1){var _0x283104=_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x59')];if(_0x445588[_0xe363('0x16')][_0x283104]){if(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x5a')]){_0x445588['voiceQueues'][_0x283104][_0xe363('0x34')]+=0x1;}if(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x5b')]){_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x35')]+=0x1;}_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x2e')]+=moment(_0x5eb128[_0x5e7702][_0x5b821f]['queuecallerleaveAt'])[_0xe363('0x5c')](moment(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x5d')]),_0xe363('0x5e'))||0x0;if(_0x5b821f===_0x5eb128[_0x5e7702][_0xe363('0x48')]-0x1){_0x445588['voiceQueues'][_0x283104][_0xe363('0x2f')]+=moment(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x5f')]||_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x60')]||_0x5eb128[_0x5e7702][_0x5b821f]['queuecallerexitAt'])['diff'](moment(_0x5eb128[_0x5e7702][_0x5b821f]['queuecallerjoinAt']),_0xe363('0x5e'))||0x0;_0x445588['voiceQueues'][_0x283104]['total']+=0x1;if(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x61')]){_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x2d')]+=0x1;_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x30')]+=moment(_0x5eb128[_0x5e7702][_0x5b821f][_0xe363('0x5f')])[_0xe363('0x5c')](moment(_0x5eb128[_0x5e7702][_0x5b821f]['queuecallerleaveAt']),_0xe363('0x5e'))||0x0;}}else{_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x2f')]+=_0x445588[_0xe363('0x16')][_0x283104][_0xe363('0x2e')]||0x0;}}}}}}return _0x445588[_0xe363('0x16')];};};Realtime['prototype'][_0xe363('0x62')]=function(){var _0x3ff332=this;return function(_0xb141d6){clearVoiceCallReports(_0x3ff332['outbound']);if(_0xb141d6){for(var _0x314e40=0x0;_0x314e40<_0xb141d6['length'];_0x314e40+=0x1){_0x3ff332[_0xe363('0x19')][_0xe363('0x2c')]+=0x1;_0x3ff332['outbound'][_0xe363('0x2f')]+=_0xb141d6[_0x314e40][_0xe363('0x63')];if(_0xb141d6[_0x314e40][_0xe363('0x64')]===_0xe363('0x65')){_0x3ff332[_0xe363('0x19')][_0xe363('0x2d')]+=0x1;_0x3ff332[_0xe363('0x19')][_0xe363('0x2e')]+=_0xb141d6[_0x314e40][_0xe363('0x63')]-_0xb141d6[_0x314e40][_0xe363('0x66')]||0x0;_0x3ff332[_0xe363('0x19')][_0xe363('0x30')]+=_0xb141d6[_0x314e40][_0xe363('0x66')];}}}return _0x3ff332[_0xe363('0x19')];};};Realtime[_0xe363('0x42')][_0xe363('0x67')]=function(){var _0x11c151=this;return function(_0x319fbc){if(_0x319fbc){freeIsNotKey(_0x319fbc,_0x11c151[_0xe363('0x68')],_0xe363('0x28'));for(var _0x13cbfe=0x0,_0x506b46={};_0x13cbfe<_0x319fbc[_0xe363('0x48')];_0x13cbfe+=0x1){_0x506b46=_0x319fbc[_0x13cbfe];if(_['isUndefined'](_0x11c151[_0xe363('0x68')][_0x506b46[_0xe363('0x28')]])){_0x11c151['campaigns'][_0x506b46[_0xe363('0x28')]]=new Campaign(_0x506b46);}else{_0x11c151[_0xe363('0x43')](_0x11c151[_0xe363('0x68')][_0x506b46[_0xe363('0x28')]],_0x506b46);_0x11c151[_0xe363('0x68')][_0x506b46['name']]['dialQueueProject']=_0x506b46[_0xe363('0x69')]?_0x506b46[_0xe363('0x69')][_0xe363('0x28')]:undefined;}}}return _0x11c151[_0xe363('0x68')];};};Realtime[_0xe363('0x42')]['initVoiceExtensions']=function(){var _0x494374=this;return function(_0x463235){if(_0x463235){freeIsNotKey(_0x463235,_0x494374['voiceExtensions'],'id');for(var _0xe9c4c2=0x0,_0x164bf6={};_0xe9c4c2<_0x463235[_0xe363('0x48')];_0xe9c4c2+=0x1){_0x164bf6=_0x463235[_0xe9c4c2];if(_[_0xe363('0x45')](_0x494374[_0xe363('0x6a')][_0x164bf6['id']])){_0x494374[_0xe363('0x6a')][_0x164bf6['id']]=new VoiceExtension(_0x164bf6);}else{_0x494374[_0xe363('0x43')](_0x494374[_0xe363('0x6a')][_0x164bf6['id']],_0x164bf6);}}}return _0x494374['voiceExtensions'];};};Realtime['prototype'][_0xe363('0x6b')]=function(){var _0x1e9f6a=this;return function(_0x3e484b){clearCampaigns(_0x1e9f6a[_0xe363('0x68')]);for(var _0x4ead7c=0x0;_0x4ead7c<_0x3e484b['length'];_0x4ead7c+=0x1){_[_0xe363('0x55')](_0x1e9f6a[_0xe363('0x68')][_0x3e484b[_0x4ead7c][_0xe363('0x28')]],_0x3e484b[_0x4ead7c]);}return _0x1e9f6a[_0xe363('0x68')];};};Realtime[_0xe363('0x42')]['initFaxAccounts']=function(){var _0x454355=this;return function(_0x48e6bd){if(_0x48e6bd){freeIsNotKey(_0x48e6bd,_0x454355[_0xe363('0x24')],'id');for(var _0x2197cb=0x0,_0x576ab4={},_0x49e93b={};_0x2197cb<_0x48e6bd['length'];_0x2197cb+=0x1){_0x576ab4=_0x48e6bd[_0x2197cb];if(_[_0xe363('0x45')](_0x454355[_0xe363('0x24')][_0x576ab4['id']])){_0x454355[_0xe363('0x24')][_0x576ab4['id']]=new FaxAccount(_0x576ab4);}else{_0x454355['mergeFromDatabase'](_0x454355[_0xe363('0x24')][_0x576ab4['id']],_0x576ab4);}}}return _0x454355['faxAccounts'];};};module[_0xe363('0x6c')]=Realtime;
\ No newline at end of file
+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(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0b0e,0x187));var _0xe0b0=function(_0x644ecd,_0x397f36){_0x644ecd=_0x644ecd-0x0;var _0x1c66ce=_0x0b0e[_0x644ecd];return _0x1c66ce;};'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
diff --git a/server/services/ami/realtime/utils.js b/server/services/ami/realtime/utils.js
new file mode 100644 (file)
index 0000000..883f61e
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x32c7=['mergeDBDataToRealtime','assign'];(function(_0x4d3731,_0x1b2c54){var _0x3aae7a=function(_0x3740c7){while(--_0x3740c7){_0x4d3731['push'](_0x4d3731['shift']());}};_0x3aae7a(++_0x1b2c54);}(_0x32c7,0x1e9));var _0x732c=function(_0xd12ee8,_0x283413){_0xd12ee8=_0xd12ee8-0x0;var _0x1a919a=_0x32c7[_0xd12ee8];return _0x1a919a;};'use strict';function mergeDBDataToRealtime(_0x57c111,_0x4a27de){var _0x41af5b=Object[_0x732c('0x0')]({},_0x57c111);for(var _0x4de680 in _0x4a27de){if(_0x41af5b['hasOwnProperty'](_0x4de680)){_0x41af5b[_0x4de680]=_0x4a27de[_0x4de680];}}return _0x41af5b;}exports[_0x732c('0x1')]=mergeDBDataToRealtime;
\ No newline at end of file
index 0eb3ede..2620951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe212=['agents','telephones','prototype','sync','xdr','disabled','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','SIP/%s','voiceQueueReport','length','connectedlinenum','assigned','lastAssignedTo','format','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt','create','match','getAgentByInternal','keys','outbound','internal','voiceCallReport','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','destination','callerid','from-sip','originatecalleridnum','destinationchannel','channel','calleridpreview','calleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','getCallType','UserId','split','membername','monitor','monitors','createdAt','xcally-motion-preview','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceDialReport','./userReport','realtime'];(function(_0x26e0aa,_0x2e984d){var _0x27e19d=function(_0x1c42dc){while(--_0x1c42dc){_0x26e0aa['push'](_0x26e0aa['shift']());}};_0x27e19d(++_0x2e984d);}(_0xe212,0x1c4));var _0x2e21=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0xe212[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x2e21('0x0'));var moment=require(_0x2e21('0x1'));var util=require(_0x2e21('0x2'));var config=require('../../../config/environment');var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x2e21('0x3'));var RpcVoiceDialReport=require(_0x2e21('0x4'));var RpcMemberReport=require(_0x2e21('0x5'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0x2e21('0x6'));var RpcVoiceTransferReport=require(_0x2e21('0x7'));var VoiceQueueReport=require(_0x2e21('0x8'));var VoiceCallReport=require(_0x2e21('0x9'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x2e21('0xa'));var UserReport=require(_0x2e21('0xb'));function Report(_0x406cc1){this[_0x2e21('0xc')]=_0x406cc1;this[_0x2e21('0xd')]=_0x406cc1[_0x2e21('0xd')];this['telephones']=_0x406cc1[_0x2e21('0xe')];}Report[_0x2e21('0xf')][_0x2e21('0x10')]=function(_0x2ddbfc){var _0x303cf3=new VoiceQueueReport(this[_0x2e21('0xc')]);var _0x50954f=new VoiceAgentReport(this[_0x2e21('0xc')]);var _0xccb28=new VoiceDialReport(this[_0x2e21('0xc')]);var _0x1c39ef=new VoiceCallReport(this[_0x2e21('0xc')]);var _0x40aab2=new UserReport(this[_0x2e21('0xc')]);if(config[_0x2e21('0x11')]&&config[_0x2e21('0x11')][_0x2e21('0x12')]){ami['on']('custom:voiceQueueReport',this['voiceQueueReport'][_0x2e21('0x13')](this));ami['on']('custom:voiceCallReport',this['voiceCallReport'][_0x2e21('0x13')](this));ami['on'](_0x2e21('0x14'),this[_0x2e21('0x15')][_0x2e21('0x13')](this));ami['on'](_0x2e21('0x16'),this[_0x2e21('0x17')][_0x2e21('0x13')](this));ami['on'](_0x2e21('0x18'),this[_0x2e21('0x19')][_0x2e21('0x13')](this));ami['on']('attendedtransfer',this[_0x2e21('0x1a')][_0x2e21('0x13')](this));}};Report[_0x2e21('0xf')][_0x2e21('0x1b')]=function(_0x23acd1){var _0x2503c8;_0x2503c8=_[_0x2e21('0x1c')](this[_0x2e21('0xd')],function(_0x4cb98a){return _0x4cb98a[_0x2e21('0x1d')]==_0x23acd1||_0x4cb98a[_0x2e21('0x1e')]==_0x23acd1;});if(_[_0x2e21('0x1f')](_0x2503c8)){var _0x57c9f2=_[_0x2e21('0x1c')](this['telephones'],function(_0x1ca859){return _0x1ca859[_0x2e21('0x1d')]==_0x23acd1||_0x1ca859[_0x2e21('0x1e')]==_0x23acd1;});if(_0x57c9f2){_0x2503c8=_[_0x2e21('0x1c')](this['agents'],function(_0x32228c){return _0x32228c[_0x2e21('0x20')]==util['format'](_0x2e21('0x21'),_0x57c9f2['name']);});}}return _0x2503c8;};Report[_0x2e21('0xf')][_0x2e21('0x22')]=function(_0x1f23a4){for(var _0x3f5dec=0x0;_0x3f5dec<_0x1f23a4[_0x2e21('0x23')];_0x3f5dec+=0x1){var _0x55db4e=this['findAgent'](_0x1f23a4[_0x3f5dec][_0x2e21('0x24')]);if(_0x55db4e){_0x1f23a4[_0x3f5dec][_0x2e21('0x1d')]=_0x55db4e[_0x2e21('0x1d')];_0x1f23a4[_0x3f5dec][_0x2e21('0x25')]=!![];_0x1f23a4[_0x3f5dec][_0x2e21('0x26')]=_0x55db4e[_0x2e21('0x1e')];_0x1f23a4[_0x3f5dec]['interface']=_[_0x2e21('0x1f')](_0x55db4e[_0x2e21('0x20')])?util[_0x2e21('0x27')](_0x2e21('0x21'),_0x55db4e[_0x2e21('0x1e')]):_0x55db4e[_0x2e21('0x20')];if(_0x1f23a4[_0x3f5dec][_0x2e21('0x28')]){_0x1f23a4[_0x3f5dec][_0x2e21('0x29')]=moment()[_0x2e21('0x27')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x1f23a4[_0x3f5dec]['queuecallerexit']){_0x1f23a4[_0x3f5dec][_0x2e21('0x2a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x2e21('0x22')](_0x1f23a4[_0x3f5dec]);}RpcVoiceQueueReport[_0x2e21('0x2b')](_0x1f23a4[_0x3f5dec]);}};function extractCalleridNumber(_0x1c5412){var _0x2891c8=_0x1c5412[_0x2e21('0x2c')](/<(.*?)>/);return _0x2891c8?_0x2891c8[0x1]:_0x1c5412;}Report[_0x2e21('0xf')][_0x2e21('0x2d')]=function(_0x3e09d4){for(var _0x20e4df=0x0;_0x20e4df<Object[_0x2e21('0x2e')](this[_0x2e21('0xd')])['length'];_0x20e4df++){var _0xe85a8c=Object[_0x2e21('0x2e')](this['agents'])[_0x20e4df];var _0xf8547b=this[_0x2e21('0xd')][_0xe85a8c];if(_0xf8547b[_0x2e21('0x1d')]===Number(_0x3e09d4))return _0xf8547b;}return null;};Report[_0x2e21('0xf')]['getCallType']=function(_0x3d9ab5){var _0x30ce33=_0x3d9ab5['channel']['split']('-')[0x0];var _0x1b03b5=this[_0x2e21('0xd')][_0x30ce33];if(!_0x1b03b5)_0x1b03b5=this[_0x2e21('0x2d')](_0x3d9ab5['calleridnum']);return!_0x1b03b5?_0x2e21('0x2f'):_0x2e21('0x30');};Report[_0x2e21('0xf')][_0x2e21('0x31')]=function(_0x29ebc1){_0x29ebc1['destination']=_0x29ebc1['destination']||_0x29ebc1[_0x2e21('0x32')];if(_0x29ebc1[_0x2e21('0x33')]==_0x2e21('0x34')){_0x29ebc1[_0x2e21('0x35')]=_0x2e21('0x36');_0x29ebc1[_0x2e21('0x37')]=_0x29ebc1['queue'];if(_0x29ebc1[_0x2e21('0x38')]==_0x2e21('0x39')){_0x29ebc1[_0x2e21('0x1d')]='';_0x29ebc1[_0x2e21('0x3a')]=extractCalleridNumber(_0x29ebc1[_0x2e21('0x3b')]);}else if(_0x29ebc1[_0x2e21('0x38')]==_0x2e21('0x3c')){if(_0x29ebc1['destination']=='xcally-motion-preview'){_0x29ebc1[_0x2e21('0x3a')]=extractCalleridNumber(_0x29ebc1['calleridpreview']);_0x29ebc1['calleridnum']=_0x29ebc1[_0x2e21('0x3d')];_0x29ebc1[_0x2e21('0x3e')]=[_0x29ebc1[_0x2e21('0x3f')],_0x29ebc1[_0x2e21('0x3f')]=_0x29ebc1[_0x2e21('0x3e')]][0x0];_0x29ebc1[_0x2e21('0x3b')]=_0x29ebc1[_0x2e21('0x40')];}else{_0x29ebc1[_0x2e21('0x3a')]=_0x29ebc1[_0x2e21('0x41')];_0x29ebc1[_0x2e21('0x41')]=_0x29ebc1[_0x2e21('0x3d')];if(_0x29ebc1[_0x2e21('0x42')]==_0x2e21('0x43')){_0x29ebc1['accountcode']=_0x29ebc1[_0x2e21('0x24')];}else{_0x29ebc1[_0x2e21('0x1d')]='';}}}}else{_0x29ebc1[_0x2e21('0x3b')]=util[_0x2e21('0x27')](_0x2e21('0x44'),_0x29ebc1[_0x2e21('0x45')],_0x29ebc1[_0x2e21('0x41')]);}if(RpcVoiceTransferReport[_0x2e21('0x46')][_0x29ebc1[_0x2e21('0x47')]]){var _0x404e5d=RpcVoiceTransferReport[_0x2e21('0x46')][_0x29ebc1['linkedid']];_0x404e5d[_0x2e21('0x48')]=_0x29ebc1[_0x2e21('0x49')];RpcVoiceTransferReport[_0x2e21('0x19')](_0x404e5d);delete RpcVoiceTransferReport[_0x2e21('0x46')][_0x29ebc1[_0x2e21('0x47')]];}if(_[_0x2e21('0x1f')](_0x29ebc1[_0x2e21('0x33')])){_0x29ebc1[_0x2e21('0x33')]=this[_0x2e21('0x4a')](_0x29ebc1);}if(_[_0x2e21('0x1f')](_0x29ebc1[_0x2e21('0x4b')])){var _0x910d0f=_0x29ebc1[_0x2e21('0x3f')][_0x2e21('0x4c')]('-')[0x0];var _0x1065ac=this['agents'][_0x910d0f];if(!_0x1065ac)_0x1065ac=this[_0x2e21('0x2d')](_0x29ebc1['accountcode']);if(_0x1065ac){_0x29ebc1[_0x2e21('0x4b')]=_0x1065ac['id'];_0x29ebc1[_0x2e21('0x4d')]=_0x1065ac[_0x2e21('0x1e')];}}RpcVoiceCallReport['create'](_0x29ebc1);if(_0x29ebc1[_0x2e21('0x4e')]){for(var _0x27296d=0x0;_0x27296d<_0x29ebc1[_0x2e21('0x4f')][_0x2e21('0x23')];_0x27296d+=0x1){_0x29ebc1['monitorFilename']=_0x29ebc1[_0x2e21('0x4f')][_0x27296d]['filename'];_0x29ebc1[_0x2e21('0x50')]=_0x29ebc1['monitors'][_0x27296d]['createdAt'];if(_0x29ebc1[_0x2e21('0x32')]==_0x2e21('0x51')){_0x29ebc1['calleridnum']=_0x29ebc1['connectedlinenum'];_0x29ebc1[_0x2e21('0x45')]=_0x29ebc1[_0x2e21('0x52')];_0x29ebc1[_0x2e21('0x24')]=_0x29ebc1['accountcode'];_0x29ebc1[_0x2e21('0x52')]=_0x29ebc1[_0x2e21('0x4d')];_0x29ebc1[_0x2e21('0x32')]=_0x29ebc1[_0x2e21('0x3d')];}else if(_0x29ebc1['exten']==_0x2e21('0x53')){_0x29ebc1[_0x2e21('0x41')]=_0x29ebc1[_0x2e21('0x3a')];_0x29ebc1[_0x2e21('0x32')]=_0x29ebc1['originatecalleridnum'];}RpcVoiceRecording[_0x2e21('0x2b')](_0x29ebc1);}}};Report['prototype']['voiceAgentReport']=function(_0x5e1aff){if(_[_0x2e21('0x54')](_0x5e1aff)){_0x5e1aff[_0x2e21('0x55')](function(_0x5de49f){RpcVoiceAgentReport[_0x2e21('0x2b')](_0x5de49f);});}else{RpcVoiceAgentReport['create'](_0x5e1aff);}};Report[_0x2e21('0xf')]['voiceDialReport']=function(_0x1aa11d){RpcVoiceDialReport[_0x2e21('0x2b')](_0x1aa11d);var _0x3fadf0;var _0x213589;var _0x3c060e=_0x1aa11d[_0x2e21('0x3f')];if(_[_0x2e21('0x56')](_0x3c060e,'Local')){_0x213589=_0x3c060e[_0x2e21('0x57')](_0x3c060e['indexOf']('/')+0x1,_0x3c060e[_0x2e21('0x58')]('@'));_0x3fadf0=_[_0x2e21('0x1c')](this['agents'],function(_0x392e1b){return _0x392e1b['mobile']==_0x213589||_0x392e1b[_0x2e21('0x59')]==_0x213589||_0x392e1b[_0x2e21('0x1d')]==_0x213589;});}else{_0x213589=_0x3c060e[_0x2e21('0x57')](_0x3c060e['indexOf']('/')+0x1,_0x3c060e[_0x2e21('0x5a')]('-'));_0x3fadf0=this[_0x2e21('0x1b')](_0x213589);}if(_0x3fadf0){_0x1aa11d[_0x2e21('0x20')]=_[_0x2e21('0x1f')](_0x3fadf0[_0x2e21('0x20')])?util[_0x2e21('0x27')]('SIP/%s',_0x3fadf0[_0x2e21('0x1e')]):_0x3fadf0[_0x2e21('0x20')];_0x1aa11d[_0x2e21('0x4d')]=_0x3fadf0[_0x2e21('0x1e')];_0x1aa11d[_0x2e21('0x1d')]=_0x3fadf0[_0x2e21('0x1d')];RpcMemberReport[_0x2e21('0x17')](_0x1aa11d);}};Report[_0x2e21('0xf')][_0x2e21('0x19')]=function(_0x58964e){RpcVoiceTransferReport[_0x2e21('0x46')][_0x58964e[_0x2e21('0x5b')]]=_0x58964e;};Report[_0x2e21('0xf')][_0x2e21('0x1a')]=function(_0x4f2401){RpcVoiceTransferReport[_0x2e21('0x1a')](_0x4f2401);};module[_0x2e21('0x5c')]=Report;
\ No newline at end of file
+var _0xeb60=['voiceAgentReport','startsWith','Local','substring','indexOf','mobile','transfererlinkedid','exports','lodash','util','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','isNil','interface','format','length','assigned','lastAssignedTo','SIP/%s','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','keys','getCallType','channel','split','getAgentByInternal','calleridnum','internal','destination','type','lastapplication','queue','context','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','callerid','disposition','ANSWERED','\x22%s\x22\x20<%s>','transfers','linkedid','uniqueid','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','exten','connectedlinenum','connectedlinename','originatecalleridnum','xcally-motion-dialer'];(function(_0x1d7b23,_0x75416d){var _0x50fd26=function(_0x433395){while(--_0x433395){_0x1d7b23['push'](_0x1d7b23['shift']());}};_0x50fd26(++_0x75416d);}(_0xeb60,0x170));var _0x0eb6=function(_0x51913a,_0x5d9b49){_0x51913a=_0x51913a-0x0;var _0x230c9a=_0xeb60[_0x51913a];return _0x230c9a;};'use strict';var _=require(_0x0eb6('0x0'));var moment=require('moment');var util=require(_0x0eb6('0x1'));var config=require('../../../config/environment');var ami=require(_0x0eb6('0x2'));var RpcVoiceAgentReport=require(_0x0eb6('0x3'));var RpcVoiceCallReport=require(_0x0eb6('0x4'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x0eb6('0x5'));var RpcVoiceQueueReport=require(_0x0eb6('0x6'));var RpcVoiceRecording=require(_0x0eb6('0x7'));var RpcVoiceTransferReport=require(_0x0eb6('0x8'));var VoiceQueueReport=require(_0x0eb6('0x9'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x0eb6('0xa'));var VoiceDialReport=require(_0x0eb6('0xb'));var UserReport=require(_0x0eb6('0xc'));function Report(_0x4f3ba3){this[_0x0eb6('0xd')]=_0x4f3ba3;this[_0x0eb6('0xe')]=_0x4f3ba3[_0x0eb6('0xe')];this[_0x0eb6('0xf')]=_0x4f3ba3[_0x0eb6('0xf')];}Report['prototype'][_0x0eb6('0x10')]=function(_0x4d36b8){var _0x2e1c22=new VoiceQueueReport(this[_0x0eb6('0xd')]);var _0x33d887=new VoiceAgentReport(this[_0x0eb6('0xd')]);var _0x3c9a7b=new VoiceDialReport(this[_0x0eb6('0xd')]);var _0x21feb0=new VoiceCallReport(this[_0x0eb6('0xd')]);var _0x16bff7=new UserReport(this['realtime']);if(config[_0x0eb6('0x11')]&&config[_0x0eb6('0x11')][_0x0eb6('0x12')]){ami['on'](_0x0eb6('0x13'),this[_0x0eb6('0x14')][_0x0eb6('0x15')](this));ami['on']('custom:voiceCallReport',this['voiceCallReport']['bind'](this));ami['on'](_0x0eb6('0x16'),this['voiceAgentReport'][_0x0eb6('0x15')](this));ami['on'](_0x0eb6('0x17'),this[_0x0eb6('0x18')][_0x0eb6('0x15')](this));ami['on'](_0x0eb6('0x19'),this[_0x0eb6('0x1a')][_0x0eb6('0x15')](this));ami['on'](_0x0eb6('0x1b'),this[_0x0eb6('0x1c')]['bind'](this));}};Report[_0x0eb6('0x1d')][_0x0eb6('0x1e')]=function(_0x2ba93f){var _0x10ddce;_0x10ddce=_[_0x0eb6('0x1f')](this[_0x0eb6('0xe')],function(_0x30db60){return _0x30db60[_0x0eb6('0x20')]==_0x2ba93f||_0x30db60[_0x0eb6('0x21')]==_0x2ba93f;});if(_[_0x0eb6('0x22')](_0x10ddce)){var _0x96bbbc=_['find'](this[_0x0eb6('0xf')],function(_0x3207be){return _0x3207be[_0x0eb6('0x20')]==_0x2ba93f||_0x3207be[_0x0eb6('0x21')]==_0x2ba93f;});if(_0x96bbbc){_0x10ddce=_[_0x0eb6('0x1f')](this[_0x0eb6('0xe')],function(_0x592835){return _0x592835[_0x0eb6('0x23')]==util[_0x0eb6('0x24')]('SIP/%s',_0x96bbbc['name']);});}}return _0x10ddce;};Report[_0x0eb6('0x1d')]['voiceQueueReport']=function(_0xa5744c){for(var _0x2c590b=0x0;_0x2c590b<_0xa5744c[_0x0eb6('0x25')];_0x2c590b+=0x1){var _0x219da7=this[_0x0eb6('0x1e')](_0xa5744c[_0x2c590b]['connectedlinenum']);if(_0x219da7){_0xa5744c[_0x2c590b]['accountcode']=_0x219da7[_0x0eb6('0x20')];_0xa5744c[_0x2c590b][_0x0eb6('0x26')]=!![];_0xa5744c[_0x2c590b][_0x0eb6('0x27')]=_0x219da7[_0x0eb6('0x21')];_0xa5744c[_0x2c590b][_0x0eb6('0x23')]=_['isNil'](_0x219da7[_0x0eb6('0x23')])?util[_0x0eb6('0x24')](_0x0eb6('0x28'),_0x219da7[_0x0eb6('0x21')]):_0x219da7['interface'];if(_0xa5744c[_0x2c590b][_0x0eb6('0x29')]){_0xa5744c[_0x2c590b][_0x0eb6('0x2a')]=moment()[_0x0eb6('0x24')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xa5744c[_0x2c590b][_0x0eb6('0x2b')]){_0xa5744c[_0x2c590b][_0x0eb6('0x2c')]=moment()['format'](_0x0eb6('0x2d'));}RpcMemberReport[_0x0eb6('0x14')](_0xa5744c[_0x2c590b]);}RpcVoiceQueueReport[_0x0eb6('0x2e')](_0xa5744c[_0x2c590b]);}};function extractCalleridNumber(_0x2645fa){var _0x33355f=_0x2645fa['match'](/<(.*?)>/);return _0x33355f?_0x33355f[0x1]:_0x2645fa;}Report[_0x0eb6('0x1d')]['getAgentByInternal']=function(_0x49e482){for(var _0x72f311=0x0;_0x72f311<Object[_0x0eb6('0x2f')](this[_0x0eb6('0xe')])[_0x0eb6('0x25')];_0x72f311++){var _0x3ed7f6=Object[_0x0eb6('0x2f')](this[_0x0eb6('0xe')])[_0x72f311];var _0x4c791c=this[_0x0eb6('0xe')][_0x3ed7f6];if(_0x4c791c['accountcode']===Number(_0x49e482))return _0x4c791c;}return null;};Report[_0x0eb6('0x1d')][_0x0eb6('0x30')]=function(_0x1bb210){var _0x3668d3=_0x1bb210[_0x0eb6('0x31')][_0x0eb6('0x32')]('-')[0x0];var _0x3fbd43=this[_0x0eb6('0xe')][_0x3668d3];if(!_0x3fbd43)_0x3fbd43=this[_0x0eb6('0x33')](_0x1bb210[_0x0eb6('0x34')]);return!_0x3fbd43?'outbound':_0x0eb6('0x35');};Report[_0x0eb6('0x1d')]['voiceCallReport']=function(_0x59795a){_0x59795a[_0x0eb6('0x36')]=_0x59795a[_0x0eb6('0x36')]||_0x59795a['exten'];if(_0x59795a[_0x0eb6('0x37')]=='dialer'){_0x59795a[_0x0eb6('0x38')]=_0x0eb6('0x39');_0x59795a['lastdata']=_0x59795a['queue'];if(_0x59795a[_0x0eb6('0x3a')]=='from-voip-provider'){_0x59795a[_0x0eb6('0x20')]='';_0x59795a[_0x0eb6('0x36')]=extractCalleridNumber(_0x59795a['callerid']);}else if(_0x59795a[_0x0eb6('0x3a')]==_0x0eb6('0x3b')){if(_0x59795a[_0x0eb6('0x36')]==_0x0eb6('0x3c')){_0x59795a[_0x0eb6('0x36')]=extractCalleridNumber(_0x59795a[_0x0eb6('0x3d')]);_0x59795a[_0x0eb6('0x34')]=_0x59795a['originatecalleridnum'];_0x59795a[_0x0eb6('0x3e')]=[_0x59795a[_0x0eb6('0x31')],_0x59795a[_0x0eb6('0x31')]=_0x59795a[_0x0eb6('0x3e')]][0x0];_0x59795a[_0x0eb6('0x3f')]=_0x59795a[_0x0eb6('0x3d')];}else{_0x59795a[_0x0eb6('0x36')]=_0x59795a['calleridnum'];_0x59795a['calleridnum']=_0x59795a['originatecalleridnum'];if(_0x59795a[_0x0eb6('0x40')]==_0x0eb6('0x41')){_0x59795a['accountcode']=_0x59795a['connectedlinenum'];}else{_0x59795a[_0x0eb6('0x20')]='';}}}}else{_0x59795a[_0x0eb6('0x3f')]=util[_0x0eb6('0x24')](_0x0eb6('0x42'),_0x59795a['calleridname'],_0x59795a[_0x0eb6('0x34')]);}if(RpcVoiceTransferReport[_0x0eb6('0x43')][_0x59795a[_0x0eb6('0x44')]]){var _0x1d6e82=RpcVoiceTransferReport[_0x0eb6('0x43')][_0x59795a[_0x0eb6('0x44')]];_0x1d6e82['transfereelinkedid']=_0x59795a[_0x0eb6('0x45')];RpcVoiceTransferReport[_0x0eb6('0x1a')](_0x1d6e82);delete RpcVoiceTransferReport[_0x0eb6('0x43')][_0x59795a['linkedid']];}if(_[_0x0eb6('0x22')](_0x59795a[_0x0eb6('0x37')])){_0x59795a['type']=this[_0x0eb6('0x30')](_0x59795a);}if(_[_0x0eb6('0x22')](_0x59795a[_0x0eb6('0x46')])){var _0x9a2ac8=_0x59795a[_0x0eb6('0x31')][_0x0eb6('0x32')]('-')[0x0];var _0xed3ddf=this[_0x0eb6('0xe')][_0x9a2ac8];if(!_0xed3ddf)_0xed3ddf=this['getAgentByInternal'](_0x59795a['accountcode']);if(_0xed3ddf){_0x59795a[_0x0eb6('0x46')]=_0xed3ddf['id'];_0x59795a[_0x0eb6('0x47')]=_0xed3ddf[_0x0eb6('0x21')];}}RpcVoiceCallReport[_0x0eb6('0x2e')](_0x59795a);if(_0x59795a[_0x0eb6('0x48')]){for(var _0x26bd39=0x0;_0x26bd39<_0x59795a[_0x0eb6('0x49')][_0x0eb6('0x25')];_0x26bd39+=0x1){_0x59795a[_0x0eb6('0x4a')]=_0x59795a['monitors'][_0x26bd39][_0x0eb6('0x4b')];_0x59795a[_0x0eb6('0x4c')]=_0x59795a[_0x0eb6('0x49')][_0x26bd39][_0x0eb6('0x4c')];if(_0x59795a[_0x0eb6('0x4d')]=='xcally-motion-preview'){_0x59795a[_0x0eb6('0x34')]=_0x59795a[_0x0eb6('0x4e')];_0x59795a['calleridname']=_0x59795a[_0x0eb6('0x4f')];_0x59795a[_0x0eb6('0x4e')]=_0x59795a[_0x0eb6('0x20')];_0x59795a[_0x0eb6('0x4f')]=_0x59795a['membername'];_0x59795a[_0x0eb6('0x4d')]=_0x59795a[_0x0eb6('0x50')];}else if(_0x59795a['exten']==_0x0eb6('0x51')){_0x59795a[_0x0eb6('0x34')]=_0x59795a[_0x0eb6('0x36')];_0x59795a['exten']=_0x59795a[_0x0eb6('0x50')];}RpcVoiceRecording[_0x0eb6('0x2e')](_0x59795a);}}};Report[_0x0eb6('0x1d')][_0x0eb6('0x52')]=function(_0x463f87){if(_['isArray'](_0x463f87)){_0x463f87['forEach'](function(_0x18f0f4){RpcVoiceAgentReport[_0x0eb6('0x2e')](_0x18f0f4);});}else{RpcVoiceAgentReport[_0x0eb6('0x2e')](_0x463f87);}};Report[_0x0eb6('0x1d')]['voiceDialReport']=function(_0x42fff4){RpcVoiceDialReport[_0x0eb6('0x2e')](_0x42fff4);var _0x476af2;var _0x2c59df;var _0x5140f0=_0x42fff4[_0x0eb6('0x31')];if(_[_0x0eb6('0x53')](_0x5140f0,_0x0eb6('0x54'))){_0x2c59df=_0x5140f0[_0x0eb6('0x55')](_0x5140f0[_0x0eb6('0x56')]('/')+0x1,_0x5140f0[_0x0eb6('0x56')]('@'));_0x476af2=_['find'](this[_0x0eb6('0xe')],function(_0x265cc6){return _0x265cc6[_0x0eb6('0x57')]==_0x2c59df||_0x265cc6['phone']==_0x2c59df||_0x265cc6[_0x0eb6('0x20')]==_0x2c59df;});}else{_0x2c59df=_0x5140f0[_0x0eb6('0x55')](_0x5140f0['indexOf']('/')+0x1,_0x5140f0['lastIndexOf']('-'));_0x476af2=this['findAgent'](_0x2c59df);}if(_0x476af2){_0x42fff4['interface']=_['isNil'](_0x476af2[_0x0eb6('0x23')])?util[_0x0eb6('0x24')]('SIP/%s',_0x476af2[_0x0eb6('0x21')]):_0x476af2['interface'];_0x42fff4[_0x0eb6('0x47')]=_0x476af2['name'];_0x42fff4[_0x0eb6('0x20')]=_0x476af2[_0x0eb6('0x20')];RpcMemberReport[_0x0eb6('0x18')](_0x42fff4);}};Report[_0x0eb6('0x1d')][_0x0eb6('0x1a')]=function(_0x176dfa){RpcVoiceTransferReport[_0x0eb6('0x43')][_0x176dfa[_0x0eb6('0x58')]]=_0x176dfa;};Report[_0x0eb6('0x1d')][_0x0eb6('0x1c')]=function(_0x561e17){RpcVoiceTransferReport[_0x0eb6('0x1c')](_0x561e17);};module[_0x0eb6('0x59')]=Report;
\ No newline at end of file
index 800298f..274773b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ab=['socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','peerstatus','syncPeerStatus','resolve','error','then','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','indexOf','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0xb98e6e,_0xe56cbc){var _0x26751c=function(_0x123ccc){while(--_0x123ccc){_0xb98e6e['push'](_0xb98e6e['shift']());}};_0x26751c(++_0xe56cbc);}(_0x26ab,0x117));var _0xb26a=function(_0x3b6de2,_0x6f004a){_0x3b6de2=_0x3b6de2-0x0;var _0x5523f7=_0x26ab[_0x3b6de2];return _0x5523f7;};'use strict';var _=require('lodash');var moment=require(_0xb26a('0x0'));var util=require(_0xb26a('0x1'));var Redis=require('ioredis');var BPromise=require(_0xb26a('0x2'));var config=require(_0xb26a('0x3'));var logger=require(_0xb26a('0x4'))(_0xb26a('0x5'));var ami=require(_0xb26a('0x6'));config[_0xb26a('0x7')]=_[_0xb26a('0x8')](config[_0xb26a('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xb26a('0x9'))(new Redis(config[_0xb26a('0x7')]));function UserReport(_0x4d02f7){this[_0xb26a('0xa')]=_0x4d02f7[_0xb26a('0xa')];this[_0xb26a('0xb')]=_0x4d02f7[_0xb26a('0xb')];this[_0xb26a('0xc')]=_0x4d02f7[_0xb26a('0xc')];ami['on'](_0xb26a('0xd'),this[_0xb26a('0xe')][_0xb26a('0xf')](this));ami['on']('registry',this[_0xb26a('0xe')][_0xb26a('0xf')](this));ami['on'](_0xb26a('0x10'),this['syncDeviceState'][_0xb26a('0xf')](this));ami['on'](_0xb26a('0x11'),this[_0xb26a('0x12')]['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xb26a('0x13')]()['then'](ami['actionSipShowRegistry']())['catch'](function(_0x29d3d5){logger[_0xb26a('0x14')]('[userReport][sipshowregistry]',util['inspect'](_0x29d3d5,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xb26a('0x13')]()[_0xb26a('0x15')](ami[_0xb26a('0x16')]())[_0xb26a('0x17')](function(_0x53e9fd){logger['error'](_0xb26a('0x18'),util['inspect'](_0x53e9fd,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0xb26a('0x19')]())[_0xb26a('0x17')](function(_0x133731){logger[_0xb26a('0x14')](_0xb26a('0x1a'),util[_0xb26a('0x1b')](_0x133731,{'showHidden':![],'depth':null}));});}UserReport[_0xb26a('0x1c')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xb26a('0x13')]()[_0xb26a('0x15')](showSipRegistrations())[_0xb26a('0x15')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xb26a('0x1c')][_0xb26a('0x1d')]=function(_0x415753){return _0x415753!==null&&!_[_0xb26a('0x1e')](_0x415753);};UserReport[_0xb26a('0x1c')]['emit']=function(_0x449a2f,_0x671aeb,_0xfc1b6f){io['to'](_0x449a2f)[_0xb26a('0x1f')](_0x671aeb,_0xfc1b6f);};UserReport[_0xb26a('0x1c')][_0xb26a('0xe')]=function(_0x2c5da3){try{if(this[_0xb26a('0x1d')](_0x2c5da3)){logger[_0xb26a('0x20')](_0xb26a('0x21'),_0x2c5da3[_0xb26a('0x22')],_0x2c5da3[_0xb26a('0x23')]);logger[_0xb26a('0x24')](_0xb26a('0x25'),util[_0xb26a('0x1b')](_0x2c5da3,{'showHidden':![],'depth':null}));var _0x424fd0=_[_0xb26a('0x26')](this['trunks'],{'defaultuser':_0x2c5da3[_0xb26a('0x22')]});if(_0x424fd0){_0x2c5da3[_0xb26a('0x27')]=_0x2c5da3['state'];_['merge'](_0x424fd0,_[_0xb26a('0x28')](_0x2c5da3,[_0xb26a('0x29'),_0xb26a('0x2a'),_0xb26a('0x22'),_0xb26a('0x23')]));logger[_0xb26a('0x24')](_0xb26a('0x2b'),util[_0xb26a('0x1b')](_0x424fd0,{'showHidden':![],'depth':null}));this[_0xb26a('0x1f')](util[_0xb26a('0x2c')](_0xb26a('0x2d'),_0x424fd0[_0xb26a('0x2e')]),_0xb26a('0x2f'),_0x424fd0);}}}catch(_0xb08903){logger[_0xb26a('0x14')]('[userReport][registry]',util['inspect'](_0xb08903,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x27cb4c){try{if(this[_0xb26a('0x1d')](_0x27cb4c)){logger[_0xb26a('0x20')](_0xb26a('0x30'),_0x27cb4c[_0xb26a('0x31')],_0x27cb4c[_0xb26a('0x23')]);logger[_0xb26a('0x24')](_0xb26a('0x32'),util[_0xb26a('0x1b')](_0x27cb4c,{'showHidden':![],'depth':null}));if(this[_0xb26a('0xb')][_0x27cb4c[_0xb26a('0x31')]]){if(!this[_0xb26a('0xb')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x33')]||_0x27cb4c[_0xb26a('0x23')][_0xb26a('0x34')]()=='inuse'){this['agents'][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x33')]=![];if(this[_0xb26a('0xb')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x23')]!==_0x27cb4c['state'][_0xb26a('0x34')]()){this[_0xb26a('0xb')][_0x27cb4c['device']][_0xb26a('0x35')]=_[_0xb26a('0x36')](moment()[_0xb26a('0x2c')]('x'));}this[_0xb26a('0xb')][_0x27cb4c[_0xb26a('0x31')]]['state']=_0x27cb4c[_0xb26a('0x23')][_0xb26a('0x34')]();this[_0xb26a('0xb')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x37')](_0x27cb4c);}}else if(this[_0xb26a('0xc')][_0x27cb4c[_0xb26a('0x31')]]){if(this[_0xb26a('0xc')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x23')]!==_0x27cb4c[_0xb26a('0x23')][_0xb26a('0x34')]()){this['telephones'][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x35')]=_[_0xb26a('0x36')](moment()['format']('x'));}this['telephones'][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x23')]=_0x27cb4c[_0xb26a('0x23')][_0xb26a('0x34')]();logger[_0xb26a('0x24')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xb26a('0x1b')](this[_0xb26a('0xc')][_0x27cb4c[_0xb26a('0x31')]],{'showHidden':![],'depth':null}));this[_0xb26a('0x1f')](util[_0xb26a('0x2c')](_0xb26a('0x38'),this[_0xb26a('0xc')][_0x27cb4c['device']][_0xb26a('0x2e')]),_0xb26a('0x39'),this[_0xb26a('0xc')][_0x27cb4c[_0xb26a('0x31')]]);}else if(this['trunks'][_0x27cb4c[_0xb26a('0x31')]]){if(this[_0xb26a('0xa')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x23')]!==_0x27cb4c['state'][_0xb26a('0x34')]()){this[_0xb26a('0xa')][_0x27cb4c[_0xb26a('0x31')]][_0xb26a('0x35')]=_[_0xb26a('0x36')](moment()[_0xb26a('0x2c')]('x'));}this[_0xb26a('0xa')][_0x27cb4c[_0xb26a('0x31')]]['state']=_0x27cb4c[_0xb26a('0x23')][_0xb26a('0x34')]();logger[_0xb26a('0x24')](_0xb26a('0x3a'),util[_0xb26a('0x1b')](this[_0xb26a('0xa')][_0x27cb4c[_0xb26a('0x31')]],{'showHidden':![],'depth':null}));this[_0xb26a('0x1f')](util[_0xb26a('0x2c')]('trunk:%s',this['trunks'][_0x27cb4c['device']][_0xb26a('0x2e')]),_0xb26a('0x2f'),this['trunks'][_0x27cb4c[_0xb26a('0x31')]]);}else if(_[_0xb26a('0x3b')](_0x27cb4c[_0xb26a('0x31')],'Local')){var _0x5b9369=_0x27cb4c[_0xb26a('0x31')];var _0x37f504=_0x5b9369['substring'](_0x5b9369['indexOf']('/')+0x1,_0x5b9369[_0xb26a('0x3c')]('@'));var _0x4ff336=_[_0xb26a('0x26')](this[_0xb26a('0xb')],function(_0x249434){return _0x249434['mobile']==_0x37f504||_0x249434[_0xb26a('0x3d')]==_0x37f504||_0x249434[_0xb26a('0x3e')]==_0x37f504;});if(_0x4ff336){if(_0x4ff336[_0xb26a('0x23')]!==_0x27cb4c[_0xb26a('0x23')]['toLowerCase']()){_0x4ff336[_0xb26a('0x35')]=_[_0xb26a('0x36')](moment()[_0xb26a('0x2c')]('x'));}_0x4ff336[_0xb26a('0x23')]=_0x27cb4c['state']['toLowerCase']();_0x4ff336['local']=!![];_0x4ff336[_0xb26a('0x37')](_0x27cb4c);}}}}catch(_0x2ff8fd){logger[_0xb26a('0x14')](_0xb26a('0x32'),util[_0xb26a('0x1b')](_0x2ff8fd,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x277690){try{if(this[_0xb26a('0x1d')](_0x277690)&&this[_0xb26a('0x1d')](_0x277690[_0xb26a('0x11')])){logger[_0xb26a('0x20')](_0xb26a('0x3f'),_0x277690[_0xb26a('0x40')],_0x277690[_0xb26a('0x41')],_0x277690[_0xb26a('0x11')]);logger['debug'](_0xb26a('0x42'),util[_0xb26a('0x1b')](_0x277690,{'showHidden':![],'depth':null}));if(this[_0xb26a('0xb')][_0x277690['peer']]){if(!this[_0xb26a('0xb')][_0x277690[_0xb26a('0x40')]]['local']||_0x277690[_0xb26a('0x11')][_0xb26a('0x34')]()==_0xb26a('0x43')){this[_0xb26a('0xb')][_0x277690['peer']][_0xb26a('0x33')]=![];this[_0xb26a('0xb')][_0x277690[_0xb26a('0x40')]][_0xb26a('0x44')]=_0x277690['peerstatus']['toLowerCase']();this[_0xb26a('0xb')][_0x277690[_0xb26a('0x40')]][_0xb26a('0x41')]=_0x277690[_0xb26a('0x41')];this[_0xb26a('0xb')][_0x277690['peer']][_0xb26a('0x37')](_0x277690);}}else if(this[_0xb26a('0xc')][_0x277690['peer']]){this[_0xb26a('0xc')][_0x277690[_0xb26a('0x40')]][_0xb26a('0x44')]=_0x277690[_0xb26a('0x11')][_0xb26a('0x34')]();this[_0xb26a('0xc')][_0x277690[_0xb26a('0x40')]]['address']=_0x277690[_0xb26a('0x41')];logger[_0xb26a('0x24')](_0xb26a('0x45'),util[_0xb26a('0x1b')](this[_0xb26a('0xc')][_0x277690[_0xb26a('0x40')]],{'showHidden':![],'depth':null}));this[_0xb26a('0x1f')](util[_0xb26a('0x2c')](_0xb26a('0x38'),this[_0xb26a('0xc')][_0x277690[_0xb26a('0x40')]]['name']),'telephone:save',this[_0xb26a('0xc')][_0x277690[_0xb26a('0x40')]]);}else if(this['trunks'][_0x277690['peer']]){this[_0xb26a('0xa')][_0x277690['peer']][_0xb26a('0x44')]=_0x277690[_0xb26a('0x11')][_0xb26a('0x34')]();this[_0xb26a('0xa')][_0x277690[_0xb26a('0x40')]][_0xb26a('0x41')]=_0x277690['address'];logger[_0xb26a('0x24')](_0xb26a('0x46'),util[_0xb26a('0x1b')](this['trunks'][_0x277690[_0xb26a('0x40')]],{'showHidden':![],'depth':null}));this[_0xb26a('0x1f')](util['format'](_0xb26a('0x2d'),this[_0xb26a('0xa')][_0x277690['peer']][_0xb26a('0x2e')]),_0xb26a('0x2f'),this[_0xb26a('0xa')][_0x277690[_0xb26a('0x40')]]);}}}catch(_0x7a014e){logger[_0xb26a('0x14')](_0xb26a('0x42'),util[_0xb26a('0x1b')](_0x7a014e,{'showHidden':![],'depth':null}));}};module[_0xb26a('0x47')]=UserReport;
\ No newline at end of file
+var _0x5fff=['telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isUndefined','emit','isNotNull','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','stateTime','updateStatusRealtime','toNumber','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring','indexOf','mobile','phone','[userReport][devicestatechange]','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','ioredis','bluebird','../../../config/environment','redis','trunks','agents'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x5fff,0xc2));var _0xf5ff=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x5fff[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xf5ff('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xf5ff('0x1'));var BPromise=require(_0xf5ff('0x2'));var config=require(_0xf5ff('0x3'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0xf5ff('0x4')]=_['defaults'](config[_0xf5ff('0x4')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf5ff('0x4')]));function UserReport(_0x3790d0){this[_0xf5ff('0x5')]=_0x3790d0['trunks'];this[_0xf5ff('0x6')]=_0x3790d0[_0xf5ff('0x6')];this[_0xf5ff('0x7')]=_0x3790d0[_0xf5ff('0x7')];ami['on'](_0xf5ff('0x8'),this['syncRegistry'][_0xf5ff('0x9')](this));ami['on'](_0xf5ff('0xa'),this[_0xf5ff('0xb')][_0xf5ff('0x9')](this));ami['on'](_0xf5ff('0xc'),this[_0xf5ff('0xd')]['bind'](this));ami['on']('peerstatus',this['syncPeerStatus']['bind'](this));return this[_0xf5ff('0xe')]();}function showSipRegistrations(){Promise[_0xf5ff('0xf')]()[_0xf5ff('0x10')](ami[_0xf5ff('0x11')]())[_0xf5ff('0x12')](function(_0x5ad287){logger[_0xf5ff('0x13')]('[userReport][sipshowregistry]',util[_0xf5ff('0x14')](_0x5ad287,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xf5ff('0xf')]()[_0xf5ff('0x10')](ami[_0xf5ff('0x15')]())['catch'](function(_0x5daa7f){logger['error'](_0xf5ff('0x16'),util[_0xf5ff('0x14')](_0x5daa7f,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xf5ff('0xf')]()[_0xf5ff('0x10')](ami[_0xf5ff('0x17')]())[_0xf5ff('0x12')](function(_0x46c0eb){logger[_0xf5ff('0x13')]('[userReport][sippeerstatus]',util[_0xf5ff('0x14')](_0x46c0eb,{'showHidden':![],'depth':null}));});}UserReport[_0xf5ff('0x18')][_0xf5ff('0xe')]=function(){setInterval(function(){BPromise[_0xf5ff('0xf')]()[_0xf5ff('0x10')](showSipRegistrations())['then'](listDeviceStates())[_0xf5ff('0x10')](showPeersStatus());},0x32c8);};UserReport[_0xf5ff('0x18')]['isNotNull']=function(_0x26e05f){return _0x26e05f!==null&&!_[_0xf5ff('0x19')](_0x26e05f);};UserReport[_0xf5ff('0x18')][_0xf5ff('0x1a')]=function(_0x190a82,_0x2f22d1,_0x50b3bc){io['to'](_0x190a82)[_0xf5ff('0x1a')](_0x2f22d1,_0x50b3bc);};UserReport[_0xf5ff('0x18')]['syncRegistry']=function(_0x35e034){try{if(this[_0xf5ff('0x1b')](_0x35e034)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x35e034[_0xf5ff('0x1c')],_0x35e034[_0xf5ff('0x1d')]);logger[_0xf5ff('0x1e')](_0xf5ff('0x1f'),util['inspect'](_0x35e034,{'showHidden':![],'depth':null}));var _0x31c8ac=_[_0xf5ff('0x20')](this[_0xf5ff('0x5')],{'defaultuser':_0x35e034[_0xf5ff('0x1c')]});if(_0x31c8ac){_0x35e034[_0xf5ff('0x21')]=_0x35e034['state'];_[_0xf5ff('0x22')](_0x31c8ac,_[_0xf5ff('0x23')](_0x35e034,['event',_0xf5ff('0x24'),'username','state']));logger[_0xf5ff('0x1e')](_0xf5ff('0x25'),util['inspect'](_0x31c8ac,{'showHidden':![],'depth':null}));this[_0xf5ff('0x1a')](util[_0xf5ff('0x26')](_0xf5ff('0x27'),_0x31c8ac[_0xf5ff('0x28')]),_0xf5ff('0x29'),_0x31c8ac);}}}catch(_0x576edf){logger[_0xf5ff('0x13')](_0xf5ff('0x1f'),util['inspect'](_0x576edf,{'showHidden':![],'depth':null}));}};UserReport[_0xf5ff('0x18')][_0xf5ff('0xd')]=function(_0x2bd4a0){try{if(this[_0xf5ff('0x1b')](_0x2bd4a0)){logger[_0xf5ff('0x2a')](_0xf5ff('0x2b'),_0x2bd4a0['device'],_0x2bd4a0[_0xf5ff('0x1d')]);logger['debug']('[userReport][devicestatechange]',util[_0xf5ff('0x14')](_0x2bd4a0,{'showHidden':![],'depth':null}));if(this[_0xf5ff('0x6')][_0x2bd4a0[_0xf5ff('0x2c')]]){if(!this[_0xf5ff('0x6')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x2d')]||_0x2bd4a0[_0xf5ff('0x1d')][_0xf5ff('0x2e')]()=='inuse'){this['agents'][_0x2bd4a0['device']][_0xf5ff('0x2d')]=![];if(this[_0xf5ff('0x6')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x1d')]!==_0x2bd4a0[_0xf5ff('0x1d')]['toLowerCase']()){this[_0xf5ff('0x6')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x2f')]=_['toNumber'](moment()['format']('x'));}this[_0xf5ff('0x6')][_0x2bd4a0['device']]['state']=_0x2bd4a0[_0xf5ff('0x1d')]['toLowerCase']();this[_0xf5ff('0x6')][_0x2bd4a0['device']][_0xf5ff('0x30')](_0x2bd4a0);}}else if(this[_0xf5ff('0x7')][_0x2bd4a0['device']]){if(this[_0xf5ff('0x7')][_0x2bd4a0['device']]['state']!==_0x2bd4a0[_0xf5ff('0x1d')]['toLowerCase']()){this[_0xf5ff('0x7')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x2f')]=_[_0xf5ff('0x31')](moment()[_0xf5ff('0x26')]('x'));}this[_0xf5ff('0x7')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x1d')]=_0x2bd4a0[_0xf5ff('0x1d')][_0xf5ff('0x2e')]();logger[_0xf5ff('0x1e')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xf5ff('0x14')](this[_0xf5ff('0x7')][_0x2bd4a0['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0xf5ff('0x26')](_0xf5ff('0x32'),this[_0xf5ff('0x7')][_0x2bd4a0[_0xf5ff('0x2c')]]['name']),_0xf5ff('0x33'),this[_0xf5ff('0x7')][_0x2bd4a0[_0xf5ff('0x2c')]]);}else if(this['trunks'][_0x2bd4a0[_0xf5ff('0x2c')]]){if(this[_0xf5ff('0x5')][_0x2bd4a0[_0xf5ff('0x2c')]]['state']!==_0x2bd4a0[_0xf5ff('0x1d')][_0xf5ff('0x2e')]()){this[_0xf5ff('0x5')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x2f')]=_['toNumber'](moment()[_0xf5ff('0x26')]('x'));}this[_0xf5ff('0x5')][_0x2bd4a0['device']][_0xf5ff('0x1d')]=_0x2bd4a0[_0xf5ff('0x1d')][_0xf5ff('0x2e')]();logger[_0xf5ff('0x1e')](_0xf5ff('0x34'),util[_0xf5ff('0x14')](this[_0xf5ff('0x5')][_0x2bd4a0[_0xf5ff('0x2c')]],{'showHidden':![],'depth':null}));this[_0xf5ff('0x1a')](util[_0xf5ff('0x26')]('trunk:%s',this[_0xf5ff('0x5')][_0x2bd4a0[_0xf5ff('0x2c')]][_0xf5ff('0x28')]),_0xf5ff('0x29'),this[_0xf5ff('0x5')][_0x2bd4a0[_0xf5ff('0x2c')]]);}else if(_['startsWith'](_0x2bd4a0[_0xf5ff('0x2c')],'Local')){var _0x567ff3=_0x2bd4a0[_0xf5ff('0x2c')];var _0x29b1df=_0x567ff3[_0xf5ff('0x35')](_0x567ff3[_0xf5ff('0x36')]('/')+0x1,_0x567ff3[_0xf5ff('0x36')]('@'));var _0x148eb1=_[_0xf5ff('0x20')](this[_0xf5ff('0x6')],function(_0x530b29){return _0x530b29[_0xf5ff('0x37')]==_0x29b1df||_0x530b29[_0xf5ff('0x38')]==_0x29b1df||_0x530b29['accountcode']==_0x29b1df;});if(_0x148eb1){if(_0x148eb1[_0xf5ff('0x1d')]!==_0x2bd4a0['state'][_0xf5ff('0x2e')]()){_0x148eb1[_0xf5ff('0x2f')]=_[_0xf5ff('0x31')](moment()['format']('x'));}_0x148eb1['state']=_0x2bd4a0['state'][_0xf5ff('0x2e')]();_0x148eb1['local']=!![];_0x148eb1[_0xf5ff('0x30')](_0x2bd4a0);}}}}catch(_0x3927be){logger[_0xf5ff('0x13')](_0xf5ff('0x39'),util[_0xf5ff('0x14')](_0x3927be,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4a2816){try{if(this[_0xf5ff('0x1b')](_0x4a2816)&&this[_0xf5ff('0x1b')](_0x4a2816[_0xf5ff('0x3a')])){logger[_0xf5ff('0x2a')](_0xf5ff('0x3b'),_0x4a2816[_0xf5ff('0x3c')],_0x4a2816[_0xf5ff('0x3d')],_0x4a2816['peerstatus']);logger[_0xf5ff('0x1e')](_0xf5ff('0x3e'),util[_0xf5ff('0x14')](_0x4a2816,{'showHidden':![],'depth':null}));if(this[_0xf5ff('0x6')][_0x4a2816[_0xf5ff('0x3c')]]){if(!this[_0xf5ff('0x6')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x2d')]||_0x4a2816[_0xf5ff('0x3a')][_0xf5ff('0x2e')]()=='registered'){this['agents'][_0x4a2816['peer']][_0xf5ff('0x2d')]=![];this[_0xf5ff('0x6')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x3f')]=_0x4a2816['peerstatus'][_0xf5ff('0x2e')]();this['agents'][_0x4a2816[_0xf5ff('0x3c')]]['address']=_0x4a2816[_0xf5ff('0x3d')];this[_0xf5ff('0x6')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x30')](_0x4a2816);}}else if(this[_0xf5ff('0x7')][_0x4a2816[_0xf5ff('0x3c')]]){this[_0xf5ff('0x7')][_0x4a2816[_0xf5ff('0x3c')]]['status']=_0x4a2816[_0xf5ff('0x3a')][_0xf5ff('0x2e')]();this['telephones'][_0x4a2816[_0xf5ff('0x3c')]]['address']=_0x4a2816['address'];logger[_0xf5ff('0x1e')](_0xf5ff('0x40'),util[_0xf5ff('0x14')](this[_0xf5ff('0x7')][_0x4a2816[_0xf5ff('0x3c')]],{'showHidden':![],'depth':null}));this[_0xf5ff('0x1a')](util[_0xf5ff('0x26')]('telephone:%s',this[_0xf5ff('0x7')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x28')]),_0xf5ff('0x33'),this['telephones'][_0x4a2816[_0xf5ff('0x3c')]]);}else if(this['trunks'][_0x4a2816['peer']]){this[_0xf5ff('0x5')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x3f')]=_0x4a2816[_0xf5ff('0x3a')]['toLowerCase']();this[_0xf5ff('0x5')][_0x4a2816['peer']][_0xf5ff('0x3d')]=_0x4a2816[_0xf5ff('0x3d')];logger['debug'](_0xf5ff('0x41'),util[_0xf5ff('0x14')](this['trunks'][_0x4a2816[_0xf5ff('0x3c')]],{'showHidden':![],'depth':null}));this[_0xf5ff('0x1a')](util[_0xf5ff('0x26')](_0xf5ff('0x27'),this[_0xf5ff('0x5')][_0x4a2816[_0xf5ff('0x3c')]][_0xf5ff('0x28')]),'trunk:save',this[_0xf5ff('0x5')][_0x4a2816[_0xf5ff('0x3c')]]);}}}catch(_0x21fd64){logger['error'](_0xf5ff('0x3e'),util[_0xf5ff('0x14')](_0x21fd64,{'showHidden':![],'depth':null}));}};module[_0xf5ff('0x42')]=UserReport;
\ No newline at end of file
index 6a99dd6..0640462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f69=['event','privilege','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswer','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','transfer','talktime','acw','acwtime','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','syncVarSet','[%s][voiceAgentReport][varset]\x20event:','addVariable','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diff','seconds','secondtransfereruniqueid','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','substring','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','syncHangup','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','inspect','channels','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','merge','omit'];(function(_0x2cc4e5,_0x3688c8){var _0x3148f5=function(_0x293e08){while(--_0x293e08){_0x2cc4e5['push'](_0x2cc4e5['shift']());}};_0x3148f5(++_0x3688c8);}(_0x5f69,0x1a0));var _0x95f6=function(_0x5275b8,_0x51e5dd){_0x5275b8=_0x5275b8-0x0;var _0x568a9b=_0x5f69[_0x5275b8];return _0x568a9b;};'use strict';var _=require(_0x95f6('0x0'));var moment=require(_0x95f6('0x1'));var util=require(_0x95f6('0x2'));var Redis=require(_0x95f6('0x3'));var config=require(_0x95f6('0x4'));var logger=require('../../../config/logger')(_0x95f6('0x5'));var ami=require(_0x95f6('0x6'));config[_0x95f6('0x7')]=_[_0x95f6('0x8')](config['redis'],{'host':_0x95f6('0x9'),'port':0x18eb});var io=require(_0x95f6('0xa'))(new Redis(config[_0x95f6('0x7')]));function VoiceAgentReport(_0x37f102){this['channels']={};this[_0x95f6('0xb')]=_0x37f102['channels'];this['voiceQueues']=_0x37f102[_0x95f6('0xc')];this[_0x95f6('0xd')]=_0x37f102[_0x95f6('0xd')];this[_0x95f6('0xe')]={};ami['on'](_0x95f6('0xf'),this[_0x95f6('0x10')][_0x95f6('0x11')](this));ami['on'](_0x95f6('0x12'),this[_0x95f6('0x13')][_0x95f6('0x11')](this));ami['on']('agentringnoanswer',this[_0x95f6('0x14')][_0x95f6('0x11')](this));ami['on'](_0x95f6('0x15'),this[_0x95f6('0x16')][_0x95f6('0x11')](this));ami['on']('agentcomplete',this[_0x95f6('0x17')][_0x95f6('0x11')](this));ami['on'](_0x95f6('0x18'),this['syncVarSet'][_0x95f6('0x11')](this));ami['on']('hangup',this[_0x95f6('0x19')][_0x95f6('0x11')](this));ami['on'](_0x95f6('0x1a'),this[_0x95f6('0x1b')]['bind'](this));ami['on']('musiconholdstop',this[_0x95f6('0x1c')][_0x95f6('0x11')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x95f6('0x11')](this));ami['on'](_0x95f6('0x1d'),this[_0x95f6('0x1e')][_0x95f6('0x11')](this));}VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x20')]=function(_0x53962f,_0x5f2941,_0x48dbb){io['to'](_0x53962f)[_0x95f6('0x20')](_0x5f2941,_0x48dbb);};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x21')]=function(_0x156c53){return _0x156c53!==null&&!_[_0x95f6('0x22')](_0x156c53);};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x10')]=function(_0x20b2b6){try{if(this[_0x95f6('0x21')](_0x20b2b6)){logger[_0x95f6('0x23')](_0x95f6('0x24'),_0x20b2b6[_0x95f6('0x25')],_0x20b2b6[_0x95f6('0x26')],_0x20b2b6[_0x95f6('0x27')]);logger[_0x95f6('0x28')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x20b2b6[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x20b2b6,{'showHidden':![],'depth':null}));if(_[_0x95f6('0x22')](this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]])){this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]]={};}if(_['isUndefined'](this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6['destuniqueid']])){this['channels'][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6[_0x95f6('0x27')]]={'agentcalledAt':moment()[_0x95f6('0x2b')](_0x95f6('0x2c')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x20b2b6[_0x95f6('0x2d')]]?this['voiceQueues'][_0x20b2b6['queue']][_0x95f6('0x2e')]||![]:![],'type':this[_0x95f6('0xc')][_0x20b2b6[_0x95f6('0x2d')]]?this[_0x95f6('0xc')][_0x20b2b6[_0x95f6('0x2d')]][_0x95f6('0x2f')]||_0x95f6('0x30'):_0x95f6('0x30'),'variables':this[_0x95f6('0xe')][_0x20b2b6[_0x95f6('0x25')]],'motionChannel':_0x95f6('0x31')};}_[_0x95f6('0x32')](this[_0x95f6('0x2a')][_0x20b2b6['uniqueid']][_0x20b2b6[_0x95f6('0x27')]],_[_0x95f6('0x33')](_0x20b2b6,[_0x95f6('0x34'),_0x95f6('0x35')]));logger[_0x95f6('0x28')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x20b2b6[_0x95f6('0x25')],util[_0x95f6('0x29')](this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6[_0x95f6('0x27')]],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')](_0x95f6('0x36'),this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6[_0x95f6('0x27')]]);var _0x551027={'id':this['agents'][_0x20b2b6[_0x95f6('0x37')]]['id'],'calleridnum':this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6[_0x95f6('0x27')]][_0x95f6('0x38')],'queue':this[_0x95f6('0x2a')][_0x20b2b6['uniqueid']][_0x20b2b6[_0x95f6('0x27')]][_0x95f6('0x2d')],'variables':this[_0x95f6('0x2a')][_0x20b2b6[_0x95f6('0x25')]][_0x20b2b6[_0x95f6('0x27')]]['variables']};logger[_0x95f6('0x28')](_0x95f6('0x39'),_0x20b2b6[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x551027,{'showHidden':![],'depth':null}));this[_0x95f6('0x20')](util[_0x95f6('0x2b')](_0x95f6('0x3a'),_0x20b2b6['membername']),_0x95f6('0x3b'),_0x551027);}}catch(_0x2f78c0){logger[_0x95f6('0x3c')](_0x95f6('0x3d'),_0x20b2b6[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x2f78c0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')]['syncAgentConnect']=function(_0x5a2a02){try{if(this[_0x95f6('0x21')](_0x5a2a02)){if(this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]]){logger[_0x95f6('0x28')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0x5a2a02[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x5a2a02,{'showHidden':![],'depth':null}));for(var _0xb8dcc7 in this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']]){if(this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0x95f6('0x3e')](_0xb8dcc7)){if(_0x5a2a02[_0x95f6('0x27')]===_0xb8dcc7){logger['info'](_0x95f6('0x3f'),_0x5a2a02[_0x95f6('0x25')],_0x5a2a02[_0x95f6('0x26')],_0x5a2a02['destuniqueid']);this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x40')]=moment()[_0x95f6('0x2b')](_0x95f6('0x2c'));this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x41')]=_0x5a2a02[_0x95f6('0x41')];this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7]['connectedlinenum']=_0x5a2a02[_0x95f6('0x42')];this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x43')]=_0x5a2a02[_0x95f6('0x43')];this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x44')]=_0x5a2a02['destchannelstatedesc'];this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7]['holdtime']=_0x5a2a02['holdtime'];this['channels'][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x45')]=_0x95f6('0x46');if(this[_0x95f6('0xb')][this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x25')]]){var _0x55cdf6=this[_0x95f6('0xb')][this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7]['uniqueid']][_0x95f6('0x47')];this['channels'][_0x5a2a02['uniqueid']][_0xb8dcc7][_0x95f6('0x47')]=_0x55cdf6;_0x5a2a02[_0x95f6('0x47')]=_0x55cdf6;}_['merge'](this[_0x95f6('0xd')][_0x5a2a02[_0x95f6('0x37')]],_[_0x95f6('0x48')](_0x5a2a02,['queue',_0x95f6('0x49'),_0x95f6('0x47')]));logger[_0x95f6('0x28')](_0x95f6('0x4a'),_0x5a2a02['uniqueid'],util[_0x95f6('0x29')](this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0x5a2a02['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')]('custom:agentconnect',this['channels'][_0x5a2a02[_0x95f6('0x25')]][_0x5a2a02['destuniqueid']]);logger['debug'](_0x95f6('0x4b'),_0x5a2a02['uniqueid'],util[_0x95f6('0x29')](this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']][_0x5a2a02[_0x95f6('0x27')]],{'showHidden':![],'depth':null}));this[_0x95f6('0x20')](util[_0x95f6('0x2b')](_0x95f6('0x3a'),_0x5a2a02[_0x95f6('0x26')]),_0x95f6('0x4c'),this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']][_0x5a2a02['destuniqueid']]);}else if(!this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x4d')]&&!this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x4e')]){logger[_0x95f6('0x23')](_0x95f6('0x4f'),_0x5a2a02[_0x95f6('0x25')],this['channels'][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x26')],_0xb8dcc7);this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7]['agentringnoanswer']=!![];this['channels'][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x50')]=moment()[_0x95f6('0x2b')](_0x95f6('0x2c'));this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x51')]=_0x5a2a02[_0x95f6('0x27')];this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x52')]=_0x5a2a02[_0x95f6('0x26')];this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']][_0xb8dcc7][_0x95f6('0x45')]=_0x95f6('0x53');this[_0x95f6('0x2a')][_0x5a2a02[_0x95f6('0x25')]][_0xb8dcc7][_0x95f6('0x54')]=_0x95f6('0x53');logger[_0x95f6('0x28')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x5a2a02[_0x95f6('0x25')],util['inspect'](this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']][_0xb8dcc7],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')](_0x95f6('0x55'),this[_0x95f6('0x2a')][_0x5a2a02['uniqueid']][_0xb8dcc7]);}}}}}}catch(_0x4db24d){logger[_0x95f6('0x3c')]('[%s][voiceAgentReport][agentconnect]',_0x5a2a02[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x4db24d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x14')]=function(_0x40e832){try{if(this[_0x95f6('0x21')](_0x40e832)){logger['debug'](_0x95f6('0x56'),_0x40e832[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x40e832,{'showHidden':![],'depth':null}));if(this['channels'][_0x40e832[_0x95f6('0x25')]]&&this[_0x95f6('0x2a')][_0x40e832[_0x95f6('0x25')]][_0x40e832[_0x95f6('0x27')]]){logger['info'](_0x95f6('0x57'),_0x40e832[_0x95f6('0x25')],_0x40e832['membername'],_0x40e832[_0x95f6('0x27')]);this[_0x95f6('0x2a')][_0x40e832['uniqueid']][_0x40e832[_0x95f6('0x27')]][_0x95f6('0x4d')]=!![];this[_0x95f6('0x2a')][_0x40e832[_0x95f6('0x25')]][_0x40e832[_0x95f6('0x27')]][_0x95f6('0x50')]=moment()['format'](_0x95f6('0x2c'));this[_0x95f6('0x2a')][_0x40e832[_0x95f6('0x25')]][_0x40e832[_0x95f6('0x27')]][_0x95f6('0x45')]=_0x95f6('0x58');this['channels'][_0x40e832[_0x95f6('0x25')]][_0x40e832['destuniqueid']]['reason']=_0x95f6('0x58');logger[_0x95f6('0x28')](_0x95f6('0x59'),_0x40e832[_0x95f6('0x25')],util[_0x95f6('0x29')](this[_0x95f6('0x2a')][_0x40e832[_0x95f6('0x25')]][_0x40e832[_0x95f6('0x27')]],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')](_0x95f6('0x5a'),this[_0x95f6('0x2a')][_0x40e832[_0x95f6('0x25')]][_0x40e832[_0x95f6('0x27')]]);}}}catch(_0x163200){logger[_0x95f6('0x3c')]('[%s][voiceAgentReport][agentringnoanswer]',_0x40e832['uniqueid'],util[_0x95f6('0x29')](_0x163200,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x16')]=function(_0x4cf53f){try{if(this[_0x95f6('0x21')](_0x4cf53f)){logger[_0x95f6('0x28')](_0x95f6('0x5b'),_0x4cf53f[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x4cf53f,{'showHidden':![],'depth':null}));if(this['channels'][_0x4cf53f[_0x95f6('0x25')]]){for(var _0x224fba in this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]]){if(this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]]['hasOwnProperty'](_0x224fba)&&!this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x4d')]&&!this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x4e')]){logger[_0x95f6('0x23')](_0x95f6('0x5c'),_0x4cf53f[_0x95f6('0x25')],this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x26')],_0x224fba);this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x4d')]=!![];this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x50')]=moment()[_0x95f6('0x2b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba]['lastevent']='abandoned';this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba][_0x95f6('0x54')]=_0x95f6('0x5d');logger['debug'](_0x95f6('0x5e'),_0x4cf53f[_0x95f6('0x25')],util[_0x95f6('0x29')](this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')]('custom:agentqueuecallerabandon',this[_0x95f6('0x2a')][_0x4cf53f[_0x95f6('0x25')]][_0x224fba]);}}}}}catch(_0x2edb2){logger[_0x95f6('0x3c')](_0x95f6('0x5f'),_0x4cf53f[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x2edb2,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x17')]=function(_0x2c4efe){try{if(this[_0x95f6('0x21')](_0x2c4efe)){logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2c4efe[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x2c4efe,{'showHidden':![],'depth':null}));if(this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]]){for(var _0x214544 in this['channels'][_0x2c4efe[_0x95f6('0x25')]]){if(this['channels'][_0x2c4efe['uniqueid']][_0x95f6('0x3e')](_0x214544)){if(this[_0x95f6('0x2a')][_0x2c4efe['uniqueid']][_0x214544]['agentconnectAt']&&!this['channels'][_0x2c4efe[_0x95f6('0x25')]][_0x214544][_0x95f6('0x4e')]){logger[_0x95f6('0x23')](_0x95f6('0x60'),_0x2c4efe[_0x95f6('0x25')],this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544][_0x95f6('0x26')],_0x214544);this['channels'][_0x2c4efe[_0x95f6('0x25')]][_0x214544][_0x95f6('0x4e')]=!![];this['channels'][_0x2c4efe[_0x95f6('0x25')]][_0x214544]['agentcompleteAt']=moment()[_0x95f6('0x2b')](_0x95f6('0x2c'));this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544][_0x95f6('0x45')]=_0x95f6('0x61');this[_0x95f6('0x2a')][_0x2c4efe['uniqueid']][_0x214544][_0x95f6('0x54')]=_0x2c4efe[_0x95f6('0x54')]==_0x95f6('0x62')?'agent':_0x2c4efe[_0x95f6('0x54')];this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544]['talktime']=_0x2c4efe[_0x95f6('0x63')];if(this[_0x95f6('0xc')][_0x2c4efe[_0x95f6('0x2d')]]&&this[_0x95f6('0xc')][_0x2c4efe[_0x95f6('0x2d')]][_0x95f6('0x64')]){this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544][_0x95f6('0x65')]=this[_0x95f6('0xc')][_0x2c4efe[_0x95f6('0x2d')]]['acwTimeout'];this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544]['agentacw']=!![];}this['agents'][_0x2c4efe[_0x95f6('0x37')]]=_[_0x95f6('0x33')](this[_0x95f6('0xd')][_0x2c4efe['interface']],['queue',_0x95f6('0x49')]);logger[_0x95f6('0x28')](_0x95f6('0x66'),_0x2c4efe[_0x95f6('0x25')],util[_0x95f6('0x29')](this['channels'][_0x2c4efe[_0x95f6('0x25')]][_0x214544],{'showHidden':![],'depth':null}));ami[_0x95f6('0x20')](_0x95f6('0x67'),this[_0x95f6('0x2a')][_0x2c4efe[_0x95f6('0x25')]][_0x214544]);logger[_0x95f6('0x28')](_0x95f6('0x68'),_0x2c4efe[_0x95f6('0x25')],util[_0x95f6('0x29')]({'id':this[_0x95f6('0xd')][_0x2c4efe[_0x95f6('0x37')]]['id'],'destaccountcode':_0x2c4efe['destaccountcode']},{'showHidden':![],'depth':null}));this['emit'](util[_0x95f6('0x2b')](_0x95f6('0x3a'),_0x2c4efe[_0x95f6('0x26')]),'user:agentcomplete',{'id':this['agents'][_0x2c4efe[_0x95f6('0x37')]]['id'],'destaccountcode':_0x2c4efe[_0x95f6('0x69')]});}}}}}}catch(_0x345eef){logger['error'](_0x95f6('0x6a'),_0x2c4efe[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x345eef,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x6b')]=function(_0x331433){try{if(this[_0x95f6('0x21')](_0x331433)){logger['debug'](_0x95f6('0x6c'),_0x331433[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x331433,{'showHidden':![],'depth':null}));this[_0x95f6('0x6d')](_0x331433[_0x95f6('0x25')],_['keys'](_0x331433[_0x95f6('0x6e')])[0x0],_0x331433[_0x95f6('0x6f')]);if(this[_0x95f6('0x2a')][_0x331433[_0x95f6('0x25')]]){for(var _0x47b0cb in this['channels'][_0x331433[_0x95f6('0x25')]]){if(this[_0x95f6('0x2a')][_0x331433['uniqueid']][_0x95f6('0x3e')](_0x47b0cb)){logger[_0x95f6('0x23')](_0x95f6('0x70'),_0x331433[_0x95f6('0x25')],_0x47b0cb,_[_0x95f6('0x71')](_0x331433[_0x95f6('0x6e')])[0x0],_0x331433['value']);if(_[_0x95f6('0x22')](this[_0x95f6('0x2a')][_0x331433['uniqueid']][_0x47b0cb][_0x95f6('0xe')])){this[_0x95f6('0x2a')][_0x331433[_0x95f6('0x25')]][_0x47b0cb][_0x95f6('0xe')]={};}this['channels'][_0x331433[_0x95f6('0x25')]][_0x47b0cb][_0x95f6('0xe')]=this['variables'][_0x331433[_0x95f6('0x25')]];}}}}}catch(_0x408842){logger['error'](_0x95f6('0x72'),_0x331433[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x408842,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x6d')]=function(_0x49bc17,_0x5935d5,_0x38a286){var _0x3f900d=[_0x95f6('0x73'),_0x95f6('0x74'),_0x95f6('0x75'),_0x95f6('0x76'),_0x95f6('0x77'),_0x95f6('0x78'),'rtpaudioqosrtt',_0x95f6('0x79'),_0x95f6('0x7a'),_0x95f6('0x7b'),_0x95f6('0x7c'),_0x95f6('0x7d'),_0x95f6('0x7e'),_0x95f6('0x7f'),_0x95f6('0x80'),'memberlastcall','membername',_0x95f6('0x81'),'memberrealtime'];if(!_['isNil'](_0x5935d5)&&!_['includes'](_0x3f900d,_0x5935d5)){if(_['isUndefined'](this[_0x95f6('0xe')][_0x49bc17])){this[_0x95f6('0xe')][_0x49bc17]={};}this[_0x95f6('0xe')][_0x49bc17][_0x5935d5]=_0x38a286;}};VoiceAgentReport['prototype'][_0x95f6('0x19')]=function(_0x472472){try{if(this[_0x95f6('0x21')](_0x472472)){logger[_0x95f6('0x28')](_0x95f6('0x82'),_0x472472[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x472472,{'showHidden':![],'depth':null}));if(this[_0x95f6('0x2a')][_0x472472[_0x95f6('0x25')]]){for(var _0x151301 in this[_0x95f6('0x2a')][_0x472472['uniqueid']]){if(this[_0x95f6('0x2a')][_0x472472['uniqueid']][_0x95f6('0x3e')](_0x151301)){if(this[_0x95f6('0x2a')][_0x472472[_0x95f6('0x25')]][_0x151301]['reason']=='transfer'&&this[_0x95f6('0x2a')][_0x472472['uniqueid']][_0x151301]['agentcomplete']){logger[_0x95f6('0x23')](_0x95f6('0x83'),_0x472472[_0x95f6('0x25')],_0x151301);this[_0x95f6('0x2a')][_0x472472[_0x95f6('0x25')]][_0x151301]['agentcompleteAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x95f6('0x84'),_0x472472[_0x95f6('0x25')],util['inspect'](_[_0x95f6('0x85')](this[_0x95f6('0x2a')][_0x472472[_0x95f6('0x25')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x95f6('0x86'),_['values'](this['channels'][_0x472472[_0x95f6('0x25')]]));delete this[_0x95f6('0x2a')][_0x472472[_0x95f6('0x25')]];}if(this[_0x95f6('0xe')][_0x472472[_0x95f6('0x25')]]){delete this['variables'][_0x472472[_0x95f6('0x25')]];}}}catch(_0x4ca8c8){logger[_0x95f6('0x3c')](_0x95f6('0x87'),_0x472472[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x4ca8c8,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAttendedTransfer']=function(_0x3e72ff){try{if(this[_0x95f6('0x21')](_0x3e72ff)){logger[_0x95f6('0x28')]('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x3e72ff[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x3e72ff,{'showHidden':![],'depth':null}));if(this[_0x95f6('0x2a')][_0x3e72ff['transfereeuniqueid']]){for(var _0x123061 in this['channels'][_0x3e72ff[_0x95f6('0x88')]]){if(this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]][_0x95f6('0x3e')](_0x123061)){if(_0x3e72ff[_0x95f6('0x89')]===_0x123061){logger[_0x95f6('0x23')](_0x95f6('0x8a'),_0x3e72ff[_0x95f6('0x25')],this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]][_0x123061][_0x95f6('0x26')],_0x123061);var _0x1f9900=moment();this[_0x95f6('0x2a')][_0x3e72ff['transfereeuniqueid']][_0x123061][_0x95f6('0x4e')]=!![];this[_0x95f6('0x2a')][_0x3e72ff['transfereeuniqueid']][_0x123061][_0x95f6('0x8b')]=moment()[_0x95f6('0x2b')](_0x95f6('0x2c'));this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]][_0x123061][_0x95f6('0x45')]=_0x95f6('0x61');this[_0x95f6('0x2a')][_0x3e72ff['transfereeuniqueid']][_0x123061][_0x95f6('0x54')]=_0x95f6('0x62');this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]][_0x123061]['talktime']=_0x1f9900[_0x95f6('0x8c')](this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]][_0x123061]['agentconnectAt'],_0x95f6('0x8d'));}}}}if(this[_0x95f6('0x2a')][_0x3e72ff['secondtransfereruniqueid']]){var _0x544393=this[_0x95f6('0x2a')][_0x3e72ff['secondtransfereruniqueid']];this['channels'][_0x3e72ff[_0x95f6('0x8e')]]=this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]];this[_0x95f6('0x2a')][_0x3e72ff[_0x95f6('0x88')]]=_0x544393;}}}catch(_0x1c37fb){logger['error']('[%s][voiceAgentReport][attendedtransfer]',_0x3e72ff[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x1c37fb,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')]['syncBlindTransfer']=function(_0xfe2c96){try{if(this[_0x95f6('0x21')](_0xfe2c96)){logger['debug']('[%s][voiceAgentReport][blindtransfer]\x20event:',_0xfe2c96[_0x95f6('0x25')],util[_0x95f6('0x29')](_0xfe2c96,{'showHidden':![],'depth':null}));if(this['channels'][_0xfe2c96['transfereeuniqueid']]){for(var _0x1602ef in this[_0x95f6('0x2a')][_0xfe2c96['transfereeuniqueid']]){if(this[_0x95f6('0x2a')][_0xfe2c96[_0x95f6('0x88')]][_0x95f6('0x3e')](_0x1602ef)){if(_0xfe2c96[_0x95f6('0x8f')]===_0x1602ef){logger['info'](_0x95f6('0x90'),_0xfe2c96[_0x95f6('0x25')],this[_0x95f6('0x2a')][_0xfe2c96['transfereeuniqueid']][_0x1602ef]['membername'],_0x1602ef);var _0x1e3779=moment();this[_0x95f6('0x2a')][_0xfe2c96[_0x95f6('0x88')]][_0x1602ef]['agentcomplete']=!![];this[_0x95f6('0x2a')][_0xfe2c96[_0x95f6('0x88')]][_0x1602ef]['agentcompleteAt']=_0x1e3779;this[_0x95f6('0x2a')][_0xfe2c96[_0x95f6('0x88')]][_0x1602ef][_0x95f6('0x45')]='complete';this['channels'][_0xfe2c96[_0x95f6('0x88')]][_0x1602ef][_0x95f6('0x54')]='transfer';this[_0x95f6('0x2a')][_0xfe2c96['transfereeuniqueid']][_0x1602ef][_0x95f6('0x63')]=_0x1e3779[_0x95f6('0x8c')](this['channels'][_0xfe2c96['transfereeuniqueid']][_0x1602ef][_0x95f6('0x40')],'seconds');}}}}}}catch(_0x2d8516){logger[_0x95f6('0x3c')](_0x95f6('0x91'),_0xfe2c96[_0x95f6('0x25')],util['inspect'](_0x2d8516,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95f6('0x1f')][_0x95f6('0x1b')]=function(_0x3eabbb){var _0x2c78e3='';try{if(this[_0x95f6('0x21')](_0x3eabbb)){logger['debug']('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x3eabbb[_0x95f6('0x25')],util['inspect'](_0x3eabbb,{'showHidden':![],'depth':null}));if(_0x3eabbb['channel']){_0x2c78e3=_0x3eabbb['channel'][_0x95f6('0x92')](0x0,_0x3eabbb[_0x95f6('0x93')]['lastIndexOf']('-'));if(this[_0x95f6('0xd')][_0x2c78e3]){logger['info'](_0x95f6('0x94'),_0x3eabbb[_0x95f6('0x25')],_0x2c78e3);this[_0x95f6('0xd')][_0x2c78e3][_0x95f6('0x95')]=!![];}}}}catch(_0x50edef){logger[_0x95f6('0x3c')](_0x95f6('0x96'),_0x3eabbb[_0x95f6('0x25')],util[_0x95f6('0x29')](_0x50edef,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x95f6('0x1c')]=function(_0x5b897f){var _0x17bdd0='';try{if(this['isNotNull'](_0x5b897f)){logger[_0x95f6('0x28')](_0x95f6('0x97'),_0x5b897f[_0x95f6('0x25')],util['inspect'](_0x5b897f,{'showHidden':![],'depth':null}));if(_0x5b897f['channel']){_0x17bdd0=_0x5b897f[_0x95f6('0x93')]['substring'](0x0,_0x5b897f[_0x95f6('0x93')][_0x95f6('0x98')]('-'));if(this[_0x95f6('0xd')][_0x17bdd0]){logger[_0x95f6('0x23')](_0x95f6('0x99'),_0x5b897f[_0x95f6('0x25')],_0x17bdd0);this['agents'][_0x17bdd0]['onhold']=![];}}}}catch(_0x3fab48){logger['error'](_0x95f6('0x9a'),_0x5b897f['uniqueid'],util['inspect'](_0x3fab48,{'showHidden':![],'depth':null}));}};module[_0x95f6('0x9b')]=VoiceAgentReport;
\ No newline at end of file
+var _0xbc16=['onhold','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','syncAgentConnect','bind','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','isUndefined','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','uniqueid','interface','format','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','type','inbound','voice','merge','omit','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','emit','calleridnum','inspect','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','holdtime','connect','routealias','pick','queue','destconnectedlinenum','channel','split','name','accountcode','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','lastevent','reason','answered_elsewhere','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','user:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','talktime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','value','variable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','custom:voiceAgentReport','syncAttendedTransfer','transfereeuniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s'];(function(_0x17f395,_0x23e424){var _0x1d8174=function(_0xc199f8){while(--_0xc199f8){_0x17f395['push'](_0x17f395['shift']());}};_0x1d8174(++_0x23e424);}(_0xbc16,0x1e1));var _0x6bc1=function(_0x39a901,_0xfd025e){_0x39a901=_0x39a901-0x0;var _0x16310e=_0xbc16[_0x39a901];return _0x16310e;};'use strict';var _=require(_0x6bc1('0x0'));var moment=require(_0x6bc1('0x1'));var util=require(_0x6bc1('0x2'));var Redis=require(_0x6bc1('0x3'));var config=require(_0x6bc1('0x4'));var logger=require(_0x6bc1('0x5'))(_0x6bc1('0x6'));var ami=require(_0x6bc1('0x7'));config[_0x6bc1('0x8')]=_[_0x6bc1('0x9')](config[_0x6bc1('0x8')],{'host':_0x6bc1('0xa'),'port':0x18eb});var io=require(_0x6bc1('0xb'))(new Redis(config[_0x6bc1('0x8')]));function VoiceAgentReport(_0x507c6e){this[_0x6bc1('0xc')]={};this[_0x6bc1('0xd')]=_0x507c6e[_0x6bc1('0xc')];this[_0x6bc1('0xe')]=_0x507c6e[_0x6bc1('0xe')];this[_0x6bc1('0xf')]=_0x507c6e[_0x6bc1('0xf')];this[_0x6bc1('0x10')]={};ami['on'](_0x6bc1('0x11'),this[_0x6bc1('0x12')]['bind'](this));ami['on']('agentconnect',this[_0x6bc1('0x13')][_0x6bc1('0x14')](this));ami['on'](_0x6bc1('0x15'),this[_0x6bc1('0x16')]['bind'](this));ami['on'](_0x6bc1('0x17'),this[_0x6bc1('0x18')][_0x6bc1('0x14')](this));ami['on'](_0x6bc1('0x19'),this[_0x6bc1('0x1a')]['bind'](this));ami['on']('varset',this[_0x6bc1('0x1b')][_0x6bc1('0x14')](this));ami['on'](_0x6bc1('0x1c'),this[_0x6bc1('0x1d')][_0x6bc1('0x14')](this));ami['on'](_0x6bc1('0x1e'),this[_0x6bc1('0x1f')][_0x6bc1('0x14')](this));ami['on'](_0x6bc1('0x20'),this[_0x6bc1('0x21')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x6bc1('0x22'),this[_0x6bc1('0x23')][_0x6bc1('0x14')](this));}VoiceAgentReport[_0x6bc1('0x24')]['emit']=function(_0x482e0d,_0x17d389,_0x2a7ead){io['to'](_0x482e0d)['emit'](_0x17d389,_0x2a7ead);};VoiceAgentReport[_0x6bc1('0x24')]['isNotNull']=function(_0x4d36e7){return _0x4d36e7!==null&&!_[_0x6bc1('0x25')](_0x4d36e7);};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x12')]=function(_0x1afb92){try{if(this[_0x6bc1('0x26')](_0x1afb92)){logger[_0x6bc1('0x27')](_0x6bc1('0x28'),_0x1afb92['uniqueid'],_0x1afb92[_0x6bc1('0x29')],_0x1afb92[_0x6bc1('0x2a')]);logger[_0x6bc1('0x2b')](_0x6bc1('0x2c'),_0x1afb92[_0x6bc1('0x2d')],util['inspect'](_0x1afb92,{'showHidden':![],'depth':null}));if(_[_0x6bc1('0x25')](this[_0x6bc1('0xc')][_0x1afb92[_0x6bc1('0x2d')]])){this[_0x6bc1('0xc')][_0x1afb92[_0x6bc1('0x2d')]]={};}var _0x6ce079=this[_0x6bc1('0xf')][_0x1afb92[_0x6bc1('0x2e')]];var _0x4055a6=this[_0x6bc1('0xc')][_0x1afb92[_0x6bc1('0x2d')]][_0x1afb92[_0x6bc1('0x2a')]];var _0x169cae=this['voiceQueues'][_0x1afb92['queue']];var _0x13b90f=this['variables'][_0x1afb92[_0x6bc1('0x2d')]];if(_[_0x6bc1('0x25')](_0x4055a6)){_0x4055a6={'agentcalledAt':moment()[_0x6bc1('0x2f')](_0x6bc1('0x30')),'lastevent':'called','mandatoryDisposition':_0x169cae&&_0x169cae[_0x6bc1('0x31')]?_0x169cae[_0x6bc1('0x31')]:![],'type':_0x169cae&&_0x169cae[_0x6bc1('0x32')]?_0x169cae[_0x6bc1('0x32')]:_0x6bc1('0x33'),'variables':_0x13b90f,'motionChannel':_0x6bc1('0x34')};}_[_0x6bc1('0x35')](_0x4055a6,_[_0x6bc1('0x36')](_0x1afb92,['event',_0x6bc1('0x37')]));logger[_0x6bc1('0x2b')](_0x6bc1('0x38'),_0x1afb92[_0x6bc1('0x2d')],util['inspect'](_0x4055a6,{'showHidden':![],'depth':null}));ami[_0x6bc1('0x39')]('custom:agentcalled',_0x4055a6);var _0x12ca68={'id':_0x6ce079['id'],'calleridnum':_0x4055a6[_0x6bc1('0x3a')],'queue':_0x4055a6['queue'],'variables':_0x4055a6[_0x6bc1('0x10')],'uniqueid':_0x1afb92[_0x6bc1('0x2d')]};logger[_0x6bc1('0x2b')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x1afb92[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x12ca68,{'showHidden':![],'depth':null}));this[_0x6bc1('0x39')](util[_0x6bc1('0x2f')](_0x6bc1('0x3c'),_0x1afb92[_0x6bc1('0x29')]),_0x6bc1('0x3d'),_0x12ca68);}}catch(_0x5a29f6){logger[_0x6bc1('0x3e')](_0x6bc1('0x3f'),_0x1afb92[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x5a29f6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x13')]=function(_0x3f8366){try{if(this[_0x6bc1('0x26')](_0x3f8366)){if(this['channels'][_0x3f8366['uniqueid']]){logger[_0x6bc1('0x2b')](_0x6bc1('0x40'),_0x3f8366[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x3f8366,{'showHidden':![],'depth':null}));for(var _0x176e34 in this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]]){if(this['channels'][_0x3f8366[_0x6bc1('0x2d')]][_0x6bc1('0x41')](_0x176e34)){if(_0x3f8366[_0x6bc1('0x2a')]===_0x176e34){logger[_0x6bc1('0x27')](_0x6bc1('0x42'),_0x3f8366[_0x6bc1('0x2d')],_0x3f8366['membername'],_0x3f8366[_0x6bc1('0x2a')]);this['channels'][_0x3f8366['uniqueid']][_0x176e34][_0x6bc1('0x43')]=moment()[_0x6bc1('0x2f')](_0x6bc1('0x30'));this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34]['connectedlinename']=_0x3f8366[_0x6bc1('0x44')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x45')]=_0x3f8366[_0x6bc1('0x45')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x46')]=_0x3f8366[_0x6bc1('0x46')];this[_0x6bc1('0xc')][_0x3f8366['uniqueid']][_0x176e34]['destchannelstatedesc']=_0x3f8366['destchannelstatedesc'];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34]['holdtime']=_0x3f8366[_0x6bc1('0x47')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34]['lastevent']=_0x6bc1('0x48');if(this[_0x6bc1('0xd')][this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x2d')]]){var _0x51cc4a=this[_0x6bc1('0xd')][this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x2d')]][_0x6bc1('0x49')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x49')]=_0x51cc4a;_0x3f8366[_0x6bc1('0x49')]=_0x51cc4a;}_[_0x6bc1('0x35')](this[_0x6bc1('0xf')][_0x3f8366['interface']],_[_0x6bc1('0x4a')](_0x3f8366,[_0x6bc1('0x4b'),_0x6bc1('0x4c'),_0x6bc1('0x49')]));var _0x4b5d07=this[_0x6bc1('0xf')][_0x3f8366[_0x6bc1('0x4d')][_0x6bc1('0x4e')]('-')[0x0]];var _0x1fc35e={'id':_0x4b5d07['id'],'name':_0x4b5d07[_0x6bc1('0x4f')],'agentconnected':!![],'destaccountcode':_0x4b5d07[_0x6bc1('0x50')],'destconnectedlinenum':this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x3f8366['destuniqueid']]['exten'],'queue':this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x3f8366[_0x6bc1('0x2a')]][_0x6bc1('0x4b')],'routealias':this['channels'][_0x3f8366[_0x6bc1('0x2d')]][_0x3f8366[_0x6bc1('0x2a')]][_0x6bc1('0x49')],'uniqueid':this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x3f8366['destuniqueid']]['uniqueid']};logger[_0x6bc1('0x2b')](_0x6bc1('0x51'),_0x3f8366[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x1fc35e,{'showHidden':![],'depth':null}));ami[_0x6bc1('0x39')](_0x6bc1('0x52'),_0x1fc35e);logger[_0x6bc1('0x2b')](_0x6bc1('0x53'),_0x3f8366['uniqueid'],util[_0x6bc1('0x3b')](_0x1fc35e,{'showHidden':![],'depth':null}));this[_0x6bc1('0x39')](util[_0x6bc1('0x2f')](_0x6bc1('0x3c'),_0x3f8366[_0x6bc1('0x29')]),_0x6bc1('0x54'),_0x1fc35e);}else if(!this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x15')]&&!this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x19')]){logger['info'](_0x6bc1('0x55'),_0x3f8366[_0x6bc1('0x2d')],this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x29')],_0x176e34);this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x15')]=!![];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x56')]=moment()[_0x6bc1('0x2f')](_0x6bc1('0x30'));this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x57')]=_0x3f8366[_0x6bc1('0x2a')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x58')]=_0x3f8366[_0x6bc1('0x29')];this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x59')]='answered_elsewhere';this['channels'][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34][_0x6bc1('0x5a')]=_0x6bc1('0x5b');logger[_0x6bc1('0x2b')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x3f8366[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34],{'showHidden':![],'depth':null}));ami[_0x6bc1('0x39')](_0x6bc1('0x5c'),this[_0x6bc1('0xc')][_0x3f8366[_0x6bc1('0x2d')]][_0x176e34]);}}}}}}catch(_0x5e43c1){logger[_0x6bc1('0x3e')](_0x6bc1('0x5d'),_0x3f8366[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x5e43c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x16')]=function(_0x2136b7){try{if(this[_0x6bc1('0x26')](_0x2136b7)){logger[_0x6bc1('0x2b')](_0x6bc1('0x5e'),_0x2136b7[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x2136b7,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x2136b7['uniqueid']]&&this[_0x6bc1('0xc')][_0x2136b7['uniqueid']][_0x2136b7[_0x6bc1('0x2a')]]){logger[_0x6bc1('0x27')](_0x6bc1('0x5f'),_0x2136b7[_0x6bc1('0x2d')],_0x2136b7[_0x6bc1('0x29')],_0x2136b7['destuniqueid']);var _0x4629e8=this[_0x6bc1('0xf')][_0x2136b7[_0x6bc1('0x2e')]];var _0x52fede=this[_0x6bc1('0xc')][_0x2136b7[_0x6bc1('0x2d')]][_0x2136b7['destuniqueid']];_0x52fede['agentringnoanswer']=!![];_0x52fede[_0x6bc1('0x56')]=moment()['format'](_0x6bc1('0x30'));_0x52fede[_0x6bc1('0x59')]='rejected';_0x52fede[_0x6bc1('0x5a')]=_0x6bc1('0x60');var _0x3a0f30={'id':_0x4629e8['id'],'name':_0x4629e8[_0x6bc1('0x4f')],'queue':_0x52fede['queue'],'uniqueid':_0x52fede[_0x6bc1('0x2d')]};logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x2136b7[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x3a0f30,{'showHidden':![],'depth':null}));this[_0x6bc1('0x39')](util[_0x6bc1('0x2f')]('user:%s',_0x4629e8[_0x6bc1('0x4f')]),_0x6bc1('0x61'),_0x3a0f30);ami[_0x6bc1('0x39')]('custom:agentringnoanswer',_0x52fede);}}}catch(_0x36d5b4){logger['error'](_0x6bc1('0x62'),_0x2136b7['uniqueid'],util['inspect'](_0x36d5b4,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x18')]=function(_0x20ceff){try{if(this[_0x6bc1('0x26')](_0x20ceff)){logger[_0x6bc1('0x2b')](_0x6bc1('0x63'),_0x20ceff[_0x6bc1('0x2d')],util['inspect'](_0x20ceff,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x20ceff[_0x6bc1('0x2d')]]){for(var _0x50c02a in this[_0x6bc1('0xc')][_0x20ceff['uniqueid']]){if(this['channels'][_0x20ceff[_0x6bc1('0x2d')]][_0x6bc1('0x41')](_0x50c02a)&&!this['channels'][_0x20ceff['uniqueid']][_0x50c02a][_0x6bc1('0x15')]&&!this[_0x6bc1('0xc')][_0x20ceff[_0x6bc1('0x2d')]][_0x50c02a]['agentcomplete']){logger[_0x6bc1('0x27')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x20ceff['uniqueid'],this[_0x6bc1('0xc')][_0x20ceff['uniqueid']][_0x50c02a][_0x6bc1('0x29')],_0x50c02a);this[_0x6bc1('0xc')][_0x20ceff['uniqueid']][_0x50c02a][_0x6bc1('0x15')]=!![];this[_0x6bc1('0xc')][_0x20ceff['uniqueid']][_0x50c02a][_0x6bc1('0x56')]=moment()[_0x6bc1('0x2f')](_0x6bc1('0x30'));this[_0x6bc1('0xc')][_0x20ceff[_0x6bc1('0x2d')]][_0x50c02a][_0x6bc1('0x59')]=_0x6bc1('0x64');this[_0x6bc1('0xc')][_0x20ceff[_0x6bc1('0x2d')]][_0x50c02a][_0x6bc1('0x5a')]=_0x6bc1('0x64');logger['debug'](_0x6bc1('0x65'),_0x20ceff['uniqueid'],util[_0x6bc1('0x3b')](this[_0x6bc1('0xc')][_0x20ceff['uniqueid']][_0x50c02a],{'showHidden':![],'depth':null}));ami[_0x6bc1('0x39')](_0x6bc1('0x66'),this[_0x6bc1('0xc')][_0x20ceff[_0x6bc1('0x2d')]][_0x50c02a]);}}}}}catch(_0x29dad9){logger[_0x6bc1('0x3e')](_0x6bc1('0x67'),_0x20ceff[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x29dad9,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6bc1('0x1a')]=function(_0x295d24){try{if(this['isNotNull'](_0x295d24)){logger[_0x6bc1('0x2b')](_0x6bc1('0x68'),_0x295d24[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x295d24,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]]){for(var _0x302818 in this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]]){if(this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x6bc1('0x41')](_0x302818)){if(this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818][_0x6bc1('0x43')]&&!this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818]['agentcomplete']){logger[_0x6bc1('0x27')](_0x6bc1('0x69'),_0x295d24[_0x6bc1('0x2d')],this[_0x6bc1('0xc')][_0x295d24['uniqueid']][_0x302818]['membername'],_0x302818);this[_0x6bc1('0xc')][_0x295d24['uniqueid']][_0x302818][_0x6bc1('0x19')]=!![];this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818][_0x6bc1('0x6a')]=moment()[_0x6bc1('0x2f')](_0x6bc1('0x30'));this[_0x6bc1('0xc')][_0x295d24['uniqueid']][_0x302818][_0x6bc1('0x59')]=_0x6bc1('0x6b');this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818][_0x6bc1('0x5a')]=_0x295d24['reason']==_0x6bc1('0x6c')?'agent':_0x295d24[_0x6bc1('0x5a')];this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818]['talktime']=_0x295d24[_0x6bc1('0x6d')];if(this['voiceQueues'][_0x295d24[_0x6bc1('0x4b')]]&&this['voiceQueues'][_0x295d24[_0x6bc1('0x4b')]]['acw']){this[_0x6bc1('0xc')][_0x295d24['uniqueid']][_0x302818]['acwtime']=this[_0x6bc1('0xe')][_0x295d24[_0x6bc1('0x4b')]]['acwTimeout'];this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818][_0x6bc1('0x6e')]=!![];}this[_0x6bc1('0xf')][_0x295d24[_0x6bc1('0x2e')]]=_['omit'](this[_0x6bc1('0xf')][_0x295d24[_0x6bc1('0x2e')]],[_0x6bc1('0x4b'),_0x6bc1('0x4c')]);logger[_0x6bc1('0x2b')](_0x6bc1('0x6f'),_0x295d24[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](this['channels'][_0x295d24['uniqueid']][_0x302818],{'showHidden':![],'depth':null}));ami['emit'](_0x6bc1('0x70'),this[_0x6bc1('0xc')][_0x295d24[_0x6bc1('0x2d')]][_0x302818]);logger['debug'](_0x6bc1('0x71'),_0x295d24[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')]({'id':this[_0x6bc1('0xf')][_0x295d24[_0x6bc1('0x2e')]]['id'],'destaccountcode':_0x295d24[_0x6bc1('0x72')]},{'showHidden':![],'depth':null}));this[_0x6bc1('0x39')](util[_0x6bc1('0x2f')](_0x6bc1('0x3c'),_0x295d24[_0x6bc1('0x29')]),_0x6bc1('0x73'),{'id':this[_0x6bc1('0xf')][_0x295d24[_0x6bc1('0x2e')]]['id'],'destaccountcode':Number(_0x295d24['destaccountcode'])});}}}}}}catch(_0x4c6b69){logger[_0x6bc1('0x3e')]('[%s][voiceAgentReport][agentcomplete]',_0x295d24[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x4c6b69,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x1b')]=function(_0x5eaa19){try{if(this['isNotNull'](_0x5eaa19)){logger[_0x6bc1('0x2b')](_0x6bc1('0x74'),_0x5eaa19[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x5eaa19,{'showHidden':![],'depth':null}));this[_0x6bc1('0x75')](_0x5eaa19['uniqueid'],_[_0x6bc1('0x76')](_0x5eaa19['variable'])[0x0],_0x5eaa19[_0x6bc1('0x77')]);if(this[_0x6bc1('0xc')][_0x5eaa19['uniqueid']]){for(var _0x28c467 in this[_0x6bc1('0xc')][_0x5eaa19[_0x6bc1('0x2d')]]){if(this[_0x6bc1('0xc')][_0x5eaa19[_0x6bc1('0x2d')]][_0x6bc1('0x41')](_0x28c467)){logger[_0x6bc1('0x27')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x5eaa19[_0x6bc1('0x2d')],_0x28c467,_[_0x6bc1('0x76')](_0x5eaa19[_0x6bc1('0x78')])[0x0],_0x5eaa19[_0x6bc1('0x77')]);if(_[_0x6bc1('0x25')](this[_0x6bc1('0xc')][_0x5eaa19[_0x6bc1('0x2d')]][_0x28c467][_0x6bc1('0x10')])){this[_0x6bc1('0xc')][_0x5eaa19[_0x6bc1('0x2d')]][_0x28c467][_0x6bc1('0x10')]={};}this['channels'][_0x5eaa19[_0x6bc1('0x2d')]][_0x28c467][_0x6bc1('0x10')]=this[_0x6bc1('0x10')][_0x5eaa19[_0x6bc1('0x2d')]];}}}}}catch(_0x4380cc){logger['error']('[%s][voiceAgentReport][varset]',_0x5eaa19[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x4380cc,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6bc1('0x75')]=function(_0xbbe475,_0x2bf8d2,_0x4af829){var _0x583fbf=[_0x6bc1('0x79'),_0x6bc1('0x7a'),_0x6bc1('0x7b'),_0x6bc1('0x7c'),_0x6bc1('0x7d'),_0x6bc1('0x7e'),_0x6bc1('0x7f'),_0x6bc1('0x80'),_0x6bc1('0x81'),_0x6bc1('0x82'),_0x6bc1('0x83'),_0x6bc1('0x84'),_0x6bc1('0x85'),_0x6bc1('0x86'),_0x6bc1('0x87'),_0x6bc1('0x88'),'membername','memberpenalty',_0x6bc1('0x89')];if(!_[_0x6bc1('0x8a')](_0x2bf8d2)&&!_[_0x6bc1('0x8b')](_0x583fbf,_0x2bf8d2)){if(_[_0x6bc1('0x25')](this[_0x6bc1('0x10')][_0xbbe475])){this[_0x6bc1('0x10')][_0xbbe475]={};}this['variables'][_0xbbe475][_0x2bf8d2]=_0x4af829;}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x1d')]=function(_0x495011){try{if(this[_0x6bc1('0x26')](_0x495011)){logger[_0x6bc1('0x2b')](_0x6bc1('0x8c'),_0x495011['uniqueid'],util[_0x6bc1('0x3b')](_0x495011,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x495011[_0x6bc1('0x2d')]]){for(var _0x3e7bfb in this[_0x6bc1('0xc')][_0x495011[_0x6bc1('0x2d')]]){if(this['channels'][_0x495011[_0x6bc1('0x2d')]][_0x6bc1('0x41')](_0x3e7bfb)){if(this['channels'][_0x495011['uniqueid']][_0x3e7bfb]['reason']==_0x6bc1('0x6c')&&this[_0x6bc1('0xc')][_0x495011[_0x6bc1('0x2d')]][_0x3e7bfb]['agentcomplete']){logger[_0x6bc1('0x27')](_0x6bc1('0x8d'),_0x495011[_0x6bc1('0x2d')],_0x3e7bfb);this[_0x6bc1('0xc')][_0x495011['uniqueid']][_0x3e7bfb]['agentcompleteAt']=moment()['format'](_0x6bc1('0x30'));}}}logger[_0x6bc1('0x2b')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x495011[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_[_0x6bc1('0x8e')](this['channels'][_0x495011['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0x6bc1('0x8f'),_[_0x6bc1('0x8e')](this[_0x6bc1('0xc')][_0x495011[_0x6bc1('0x2d')]]));delete this[_0x6bc1('0xc')][_0x495011[_0x6bc1('0x2d')]];}if(this[_0x6bc1('0x10')][_0x495011[_0x6bc1('0x2d')]]){delete this[_0x6bc1('0x10')][_0x495011[_0x6bc1('0x2d')]];}}}catch(_0x88b133){logger[_0x6bc1('0x3e')]('[%s][voiceAgentReport][hangup]',_0x495011['uniqueid'],util[_0x6bc1('0x3b')](_0x88b133,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x90')]=function(_0x3e064f){try{if(this['isNotNull'](_0x3e064f)){logger['debug']('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x3e064f[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x3e064f,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]]){for(var _0x190845 in this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]]){if(this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]][_0x6bc1('0x41')](_0x190845)){if(_0x3e064f['origtransfereruniqueid']===_0x190845){logger[_0x6bc1('0x27')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x3e064f['uniqueid'],this['channels'][_0x3e064f[_0x6bc1('0x91')]][_0x190845]['membername'],_0x190845);var _0x4ff75f=moment();this['channels'][_0x3e064f[_0x6bc1('0x91')]][_0x190845][_0x6bc1('0x19')]=!![];this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]][_0x190845]['agentcompleteAt']=moment()[_0x6bc1('0x2f')](_0x6bc1('0x30'));this['channels'][_0x3e064f[_0x6bc1('0x91')]][_0x190845][_0x6bc1('0x59')]='complete';this['channels'][_0x3e064f[_0x6bc1('0x91')]][_0x190845][_0x6bc1('0x5a')]=_0x6bc1('0x6c');this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]][_0x190845]['talktime']=_0x4ff75f[_0x6bc1('0x92')](this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x91')]][_0x190845]['agentconnectAt'],_0x6bc1('0x93'));}}}}if(this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x94')]]){var _0x3df007=this[_0x6bc1('0xc')][_0x3e064f['secondtransfereruniqueid']];this[_0x6bc1('0xc')][_0x3e064f[_0x6bc1('0x94')]]=this['channels'][_0x3e064f['transfereeuniqueid']];this['channels'][_0x3e064f['transfereeuniqueid']]=_0x3df007;}}}catch(_0x37b422){logger['error'](_0x6bc1('0x95'),_0x3e064f[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x37b422,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6bc1('0x23')]=function(_0x44a520){try{if(this[_0x6bc1('0x26')](_0x44a520)){logger['debug']('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x44a520[_0x6bc1('0x2d')],util['inspect'](_0x44a520,{'showHidden':![],'depth':null}));if(this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]]){for(var _0xfbf478 in this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]]){if(this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]]['hasOwnProperty'](_0xfbf478)){if(_0x44a520['transfereruniqueid']===_0xfbf478){logger[_0x6bc1('0x27')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x44a520[_0x6bc1('0x2d')],this[_0x6bc1('0xc')][_0x44a520['transfereeuniqueid']][_0xfbf478][_0x6bc1('0x29')],_0xfbf478);var _0x95c33e=moment();this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x19')]=!![];this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x6a')]=_0x95c33e;this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x59')]=_0x6bc1('0x6b');this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x5a')]='transfer';this[_0x6bc1('0xc')][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x6d')]=_0x95c33e[_0x6bc1('0x92')](this['channels'][_0x44a520[_0x6bc1('0x91')]][_0xfbf478][_0x6bc1('0x43')],_0x6bc1('0x93'));}}}}}}catch(_0x197450){logger[_0x6bc1('0x3e')](_0x6bc1('0x96'),_0x44a520[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x197450,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x1f')]=function(_0x4fe9ee){var _0x3eb26c='';try{if(this[_0x6bc1('0x26')](_0x4fe9ee)){logger[_0x6bc1('0x2b')](_0x6bc1('0x97'),_0x4fe9ee[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x4fe9ee,{'showHidden':![],'depth':null}));if(_0x4fe9ee[_0x6bc1('0x4d')]){_0x3eb26c=_0x4fe9ee['channel'][_0x6bc1('0x98')](0x0,_0x4fe9ee[_0x6bc1('0x4d')][_0x6bc1('0x99')]('-'));if(this['agents'][_0x3eb26c]){logger[_0x6bc1('0x27')](_0x6bc1('0x9a'),_0x4fe9ee[_0x6bc1('0x2d')],_0x3eb26c);this[_0x6bc1('0xf')][_0x3eb26c][_0x6bc1('0x9b')]=!![];}}}}catch(_0x1b0b4b){logger[_0x6bc1('0x3e')]('[%s][voiceAgentReport][musiconholdstart]',_0x4fe9ee[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0x1b0b4b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6bc1('0x24')][_0x6bc1('0x21')]=function(_0xb5306c){var _0x3d6da3='';try{if(this['isNotNull'](_0xb5306c)){logger[_0x6bc1('0x2b')](_0x6bc1('0x9c'),_0xb5306c[_0x6bc1('0x2d')],util[_0x6bc1('0x3b')](_0xb5306c,{'showHidden':![],'depth':null}));if(_0xb5306c[_0x6bc1('0x4d')]){_0x3d6da3=_0xb5306c[_0x6bc1('0x4d')]['substring'](0x0,_0xb5306c['channel'][_0x6bc1('0x99')]('-'));if(this[_0x6bc1('0xf')][_0x3d6da3]){logger[_0x6bc1('0x27')](_0x6bc1('0x9d'),_0xb5306c['uniqueid'],_0x3d6da3);this[_0x6bc1('0xf')][_0x3d6da3][_0x6bc1('0x9b')]=![];}}}}catch(_0x1204c7){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0xb5306c[_0x6bc1('0x2d')],util['inspect'](_0x1204c7,{'showHidden':![],'depth':null}));}};module[_0x6bc1('0x9e')]=VoiceAgentReport;
\ No newline at end of file
index 799bb6a..5f9b328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c6b=['disposition','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','mixmonitor_filename','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','undefined','isEmpty','getSettings','Action','StopMixMonitor','catch','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','ATTENDED','origtransfererlinkedid','routeid','syncBlindTransfer','transfereecalleridnum','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','exports','lodash','moment','util','path','../../../config/environment','ami','../ami','../model/channel','../rpc/setting','set','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','socket.io-emitter','channels','agents','coreshowchannel','syncNewExten','bind','newstate','syncNewState','syncVarSet','hangup','newcallerid','attendedtransfer','syncMusicOnHoldStart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','error','prototype','isNotNull','emit','syncNewCallerId','uniqueid','calleridnum','inspect','isUndefined','merge','keys','from-sip','channel','split','exten','format','user:%s','name','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','blindTransfers','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','channelstate','pick','context','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','cdr(','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','diff','xcally-motion-preview','connectedlinename','calleridname','destinationchannel','toNumber','UserId','membername','answertime'];(function(_0x464eaa,_0x6e12b3){var _0x37c973=function(_0x263325){while(--_0x263325){_0x464eaa['push'](_0x464eaa['shift']());}};_0x37c973(++_0x6e12b3);}(_0x5c6b,0x1db));var _0xb5c6=function(_0x169808,_0x2c870b){_0x169808=_0x169808-0x0;var _0x5f1644=_0x5c6b[_0x169808];return _0x5f1644;};'use strict';var _=require(_0xb5c6('0x0'));var moment=require(_0xb5c6('0x1'));var util=require(_0xb5c6('0x2'));var path=require(_0xb5c6('0x3'));var Redis=require('ioredis');var config=require(_0xb5c6('0x4'));var logger=require('../../../config/logger')(_0xb5c6('0x5'));var ami=require(_0xb5c6('0x6'));var Channel=require(_0xb5c6('0x7'));var RpcSetting=require(_0xb5c6('0x8'));var applications=[_0xb5c6('0x9'),_0xb5c6('0xa'),_0xb5c6('0xb'),_0xb5c6('0xc'),'playback',_0xb5c6('0xd')];var dispositions=[_0xb5c6('0xe'),_0xb5c6('0xf'),'FAILED',_0xb5c6('0xe'),_0xb5c6('0xe'),'NO\x20ANSWER',_0xb5c6('0x10'),_0xb5c6('0x11'),_0xb5c6('0xf'),_0xb5c6('0xf'),_0xb5c6('0xf')];config['redis']=_[_0xb5c6('0x12')](config[_0xb5c6('0x13')],{'host':'localhost','port':0x18eb});var io=require(_0xb5c6('0x14'))(new Redis(config['redis']));function VoiceCallReport(_0xc8e457){this['channels']=_0xc8e457[_0xb5c6('0x15')];this[_0xb5c6('0x16')]=_0xc8e457['agents'];this['blindTransfers']={};ami['on'](_0xb5c6('0x17'),this[_0xb5c6('0x18')]['bind'](this));ami['on']('newexten',this['syncNewExten'][_0xb5c6('0x19')](this));ami['on']('newchannel',this['syncNewChannel'][_0xb5c6('0x19')](this));ami['on'](_0xb5c6('0x1a'),this[_0xb5c6('0x1b')]['bind'](this));ami['on']('varset',this[_0xb5c6('0x1c')]['bind'](this));ami['on'](_0xb5c6('0x1d'),this['syncHangup']['bind'](this));ami['on'](_0xb5c6('0x1e'),this['syncNewCallerId']['bind'](this));ami['on'](_0xb5c6('0x1f'),this['syncAttendedTransfer'][_0xb5c6('0x19')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xb5c6('0x19')](this));ami['on']('musiconholdstart',this[_0xb5c6('0x20')][_0xb5c6('0x19')](this));ami['on'](_0xb5c6('0x21'),this['syncMusicOnHoldStop'][_0xb5c6('0x19')](this));try{logger[_0xb5c6('0x22')](_0xb5c6('0x23'));ami['actionCoreShowChannels']();}catch(_0x417f1c){logger[_0xb5c6('0x24')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0x417f1c,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x26')]=function(_0x5d6b02){return _0x5d6b02!==null&&!_['isUndefined'](_0x5d6b02);};VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x27')]=function(_0x11cc4f,_0x90bb34,_0x5af005){io['to'](_0x11cc4f)['emit'](_0x90bb34,_0x5af005);};VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x28')]=function(_0xbd7152){try{if(this['isNotNull'](_0xbd7152)){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0xbd7152[_0xb5c6('0x29')],_0xbd7152['calleridname'],_0xbd7152[_0xb5c6('0x2a')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0xbd7152[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0xbd7152,{'showHidden':![],'depth':null}));if(_0xbd7152[_0xb5c6('0x29')]===_0xbd7152['linkedid']){if(!_[_0xb5c6('0x2c')](this[_0xb5c6('0x15')][_0xbd7152[_0xb5c6('0x29')]])){_[_0xb5c6('0x2d')](this[_0xb5c6('0x15')][_0xbd7152[_0xb5c6('0x29')]],_['pick'](_0xbd7152,_[_0xb5c6('0x2e')](this['channels'][_0xbd7152[_0xb5c6('0x29')]])));}}if(_0xbd7152['context']===_0xb5c6('0x2f')){if(this[_0xb5c6('0x16')][_0xbd7152[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]){if(_0xbd7152[_0xb5c6('0x32')]=='xcally-motion-preview'){this[_0xb5c6('0x16')][_0xbd7152['channel'][_0xb5c6('0x31')]('-')[0x0]]['destconnectedlinenum']=_0xbd7152['connectedlinenum'];this[_0xb5c6('0x27')](util[_0xb5c6('0x33')](_0xb5c6('0x34'),this[_0xb5c6('0x16')][_0xbd7152['channel'][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x35')]),'user:agentconnect',{'destaccountcode':this['agents'][_0xbd7152[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x36')],'destconnectedlinenum':_0xbd7152[_0xb5c6('0x37')]});}}}}}catch(_0x1d12b2){logger[_0xb5c6('0x24')](_0xb5c6('0x38'),_0xbd7152[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x1d12b2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')]['syncNewChannel']=function(_0x4804e0){try{if(this[_0xb5c6('0x26')](_0x4804e0)){logger[_0xb5c6('0x39')](_0xb5c6('0x3a'),_0x4804e0[_0xb5c6('0x29')],util['inspect'](_0x4804e0,{'showHidden':![],'depth':null}));if(this[_0xb5c6('0x15')][_0x4804e0[_0xb5c6('0x29')]])return;if(_0x4804e0[_0xb5c6('0x30')]===_0xb5c6('0x3b'))return;if(_0x4804e0[_0xb5c6('0x29')]!==_0x4804e0[_0xb5c6('0x3c')]&&!this[_0xb5c6('0x3d')][_0x4804e0[_0xb5c6('0x3c')]])return;logger[_0xb5c6('0x22')](_0xb5c6('0x3e'),_0x4804e0[_0xb5c6('0x29')],_0x4804e0['context'],_0x4804e0['exten']);this[_0xb5c6('0x15')][_0x4804e0['uniqueid']]=new Channel();this['channels'][_0x4804e0[_0xb5c6('0x29')]][_0xb5c6('0x3f')]=moment()[_0xb5c6('0x33')](_0xb5c6('0x40'));this[_0xb5c6('0x15')][_0x4804e0['uniqueid']]['disposition']=dispositions[_['toNumber'](_0x4804e0[_0xb5c6('0x41')])];_[_0xb5c6('0x2d')](this['channels'][_0x4804e0[_0xb5c6('0x29')]],_[_0xb5c6('0x42')](_0x4804e0,_['keys'](this['channels'][_0x4804e0[_0xb5c6('0x29')]])));if(_0x4804e0[_0xb5c6('0x43')]==='from-sip'){if(this['agents'][_0x4804e0['channel'][_0xb5c6('0x31')]('-')[0x0]]){if(_['isUndefined'](this[_0xb5c6('0x16')][_0x4804e0['channel'][_0xb5c6('0x31')]('-')[0x0]]['destconnectedlinenum'])){this[_0xb5c6('0x16')][_0x4804e0[_0xb5c6('0x30')]['split']('-')[0x0]][_0xb5c6('0x44')]=_0x4804e0[_0xb5c6('0x32')];logger[_0xb5c6('0x39')](_0xb5c6('0x45'),_0x4804e0[_0xb5c6('0x29')],util[_0xb5c6('0x2b')]({'id':this[_0xb5c6('0x16')][_0x4804e0['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x4804e0[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x36')],'destconnectedlinenum':_0x4804e0[_0xb5c6('0x32')]},{'showHidden':![],'depth':null}));this[_0xb5c6('0x27')](util[_0xb5c6('0x33')](_0xb5c6('0x34'),this['agents'][_0x4804e0['channel'][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x35')]),'user:agentconnect',{'id':this['agents'][_0x4804e0[_0xb5c6('0x30')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb5c6('0x16')][_0x4804e0[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4804e0[_0xb5c6('0x32')]});}}}}}catch(_0x184118){logger[_0xb5c6('0x24')](_0xb5c6('0x46'),_0x4804e0[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x184118,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb5c6('0x18')]=function(_0x4c46bb){try{if(this['isNotNull'](_0x4c46bb)){logger[_0xb5c6('0x39')](_0xb5c6('0x47'),_0x4c46bb[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x4c46bb,{'showHidden':![],'depth':null}));if(_0x4c46bb[_0xb5c6('0x30')]===_0xb5c6('0x3b')||_0x4c46bb[_0xb5c6('0x32')]==='h')return;if(_0x4c46bb[_0xb5c6('0x29')]===_0x4c46bb[_0xb5c6('0x3c')]||this[_0xb5c6('0x3d')][_0x4c46bb[_0xb5c6('0x3c')]]){_0x4c46bb['application']=_0x4c46bb[_0xb5c6('0x48')][_0xb5c6('0x49')]();_0x4c46bb[_0xb5c6('0x4a')]=_0x4c46bb[_0xb5c6('0x4b')]||_0x4c46bb['applicationdata'];if(_0x4c46bb[_0xb5c6('0x4b')]&&!_0x4c46bb[_0xb5c6('0x4b')][_0xb5c6('0x4c')](_0xb5c6('0x4d'))&&_0x4c46bb['application']!==_0xb5c6('0xa')){_0x4c46bb['applicationdata']=_0x4c46bb['applicationdata'][_0xb5c6('0x49')]();}logger[_0xb5c6('0x22')](_0xb5c6('0x4e'),_0x4c46bb[_0xb5c6('0x29')],_0x4c46bb['application'],_0x4c46bb[_0xb5c6('0x4a')]);if(_[_0xb5c6('0x2c')](this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]])){this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]]=new Channel();this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]][_0xb5c6('0x3f')]=_0x4c46bb[_0xb5c6('0x4f')]?moment()[_0xb5c6('0x50')](moment[_0xb5c6('0x4f')](_0x4c46bb[_0xb5c6('0x4f')])[_0xb5c6('0x51')](),'seconds')[_0xb5c6('0x33')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xb5c6('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]]['disposition']=_0xb5c6('0xe');}_[_0xb5c6('0x2d')](this['channels'][_0x4c46bb['uniqueid']],_[_0xb5c6('0x42')](_0x4c46bb,_[_0xb5c6('0x2e')](this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]])));if(_[_0xb5c6('0x52')](applications,_0x4c46bb['application'])){this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]][_0xb5c6('0x53')]=_0x4c46bb[_0xb5c6('0x48')];this[_0xb5c6('0x15')][_0x4c46bb[_0xb5c6('0x29')]][_0xb5c6('0x54')]=_0x4c46bb[_0xb5c6('0x4a')];if(_0x4c46bb[_0xb5c6('0x48')]==='set'&&_[_0xb5c6('0x4c')](_0x4c46bb['applicationdata']['toLowerCase'](),_0xb5c6('0x55'))){var _0x1e7319=_0x4c46bb[_0xb5c6('0x4a')]['split']('=');var _0x1d840a=_0x1e7319[0x0][_0xb5c6('0x49')]()['match'](/cdr\((.*)\)/);if(_0x1d840a){if(_0x1d840a[0x1]===_0xb5c6('0x56')&&!_['isNil'](this['channels'][_0x4c46bb['uniqueid']][_0x1d840a[0x1]]))return;this['channels'][_0x4c46bb[_0xb5c6('0x29')]][_0x1d840a[0x1]]=_0x1e7319[0x1];}}else if(_0x4c46bb[_0xb5c6('0x48')]==='queue'){this[_0xb5c6('0x15')][_0x4c46bb['uniqueid']][_0xb5c6('0xa')]=_0x4c46bb[_0xb5c6('0x4a')]['split'](',')[0x0];}}}}}catch(_0x10ab20){logger[_0xb5c6('0x24')](_0xb5c6('0x57'),_0x4c46bb[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x10ab20,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')]['syncNewState']=function(_0x4b8e71){try{if(this[_0xb5c6('0x26')](_0x4b8e71)){logger[_0xb5c6('0x22')](_0xb5c6('0x58'),_0x4b8e71['uniqueid'],_0x4b8e71['linkedid'],_0x4b8e71['calleridname'],_0x4b8e71[_0xb5c6('0x2a')]);logger[_0xb5c6('0x39')](_0xb5c6('0x59'),_0x4b8e71[_0xb5c6('0x29')],util['inspect'](_0x4b8e71,{'showHidden':![],'depth':null}));if(_0x4b8e71['channelstate']!=='6')return;if(_0x4b8e71[_0xb5c6('0x29')]!==_0x4b8e71[_0xb5c6('0x3c')]){var _0x2c58ff=moment();if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]]){if(!this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x5a')]){this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x5a')]=!![];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]]['answertime']=_0x2c58ff['format'](_0xb5c6('0x40'));if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x3f')]){this['channels'][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x5b')]=_0x2c58ff[_0xb5c6('0x5c')](this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x3f')],_0xb5c6('0x51'));}}this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]]['linkedid']=_0x4b8e71['uniqueid'];if(_0x4b8e71['calleridnum']!==_0xb5c6('0x5d')){this['channels'][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x37')]=_0x4b8e71[_0xb5c6('0x2a')];}this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x5e')]=_0x4b8e71[_0xb5c6('0x5f')];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x60')]=_0x4b8e71[_0xb5c6('0x30')];this[_0xb5c6('0x15')][_0x4b8e71['linkedid']]['disposition']=dispositions[_[_0xb5c6('0x61')](_0x4b8e71['channelstate'])];if(this[_0xb5c6('0x16')][_0x4b8e71['channel'][_0xb5c6('0x31')]('-')[0x0]]){this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x62')]=this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['id'];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0x63')]=this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x35')];}}if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]]){if(!this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x5a')]){this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x5a')]=!![];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x64')]=_0x2c58ff[_0xb5c6('0x33')]('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x4b8e71['uniqueid']][_0xb5c6('0x3f')]){this['channels'][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x5b')]=_0x2c58ff[_0xb5c6('0x5c')](this[_0xb5c6('0x15')][_0x4b8e71['uniqueid']][_0xb5c6('0x3f')],_0xb5c6('0x51'));}}if(_0x4b8e71[_0xb5c6('0x2a')]!==_0xb5c6('0x5d')){this[_0xb5c6('0x15')][_0x4b8e71['uniqueid']][_0xb5c6('0x37')]=_0x4b8e71[_0xb5c6('0x2a')];}this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]]['connectedlinename']=_0x4b8e71[_0xb5c6('0x5f')];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x60')]=_0x4b8e71[_0xb5c6('0x30')];this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x65')]=dispositions[_[_0xb5c6('0x61')](_0x4b8e71['channelstate'])];}}else{if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]]){if(this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]){this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]][_0xb5c6('0x62')]=this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')]['split']('-')[0x0]]['id'];this['channels'][_0x4b8e71['uniqueid']]['membername']=this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x35')];}}}if(_0x4b8e71[_0xb5c6('0x43')]==='from-sip'){if(this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')]['split']('-')[0x0]]){this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['destconnectedlinenum']=_0x4b8e71[_0xb5c6('0x32')];var _0x4f6746,_0x4820cf;if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]]){_0x4f6746=this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x29')]]['routealias'];_0x4820cf=this['channels'][_0x4b8e71['uniqueid']][_0xb5c6('0xa')];}else if(this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]]){_0x4f6746=this[_0xb5c6('0x15')][_0x4b8e71[_0xb5c6('0x3c')]]['routealias'];_0x4820cf=this['channels'][_0x4b8e71[_0xb5c6('0x3c')]][_0xb5c6('0xa')];}this['agents'][_0x4b8e71['channel'][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0xa')]=_0x4820cf;this['agents'][_0x4b8e71[_0xb5c6('0x30')]['split']('-')[0x0]]['routealias']=_0x4f6746;logger['debug'](_0xb5c6('0x66'),_0x4b8e71[_0xb5c6('0x29')],util[_0xb5c6('0x2b')]({'id':this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['id'],'destaccountcode':this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')]['split']('-')[0x0]][_0xb5c6('0x36')],'destconnectedlinenum':_0x4b8e71[_0xb5c6('0x32')],'routealias':_0x4f6746,'queue':_0x4820cf||undefined},{'showHidden':![],'depth':null}));this[_0xb5c6('0x27')](util[_0xb5c6('0x33')](_0xb5c6('0x34'),this[_0xb5c6('0x16')][_0x4b8e71['channel']['split']('-')[0x0]][_0xb5c6('0x35')]),_0xb5c6('0x67'),{'id':this[_0xb5c6('0x16')][_0x4b8e71[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xb5c6('0x16')][_0x4b8e71['channel']['split']('-')[0x0]][_0xb5c6('0x36')],'destconnectedlinenum':_0x4b8e71[_0xb5c6('0x32')],'routealias':_0x4f6746,'queue':_0x4820cf||undefined});}}}}catch(_0x4111dd){logger[_0xb5c6('0x24')]('[%s][voiceCallReport][newstate]',_0x4b8e71[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x4111dd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')]['syncMixMonitorFilename']=function(_0x40a356,_0x137e13){try{if(this[_0xb5c6('0x15')][_0x40a356]){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x40a356,_0x137e13);this[_0xb5c6('0x15')][_0x40a356][_0xb5c6('0x68')]=!![];if(_[_0xb5c6('0x69')](_0x137e13,'.wav49')){_0x137e13=_0x137e13['replace'](_0xb5c6('0x6a'),_0xb5c6('0x6b'));}this['channels'][_0x40a356][_0xb5c6('0x6c')]=_0x137e13;var _0xc13a68=_[_0xb5c6('0x6d')](this[_0xb5c6('0x15')][_0x40a356]['monitors'],{'filename':_0x137e13});if(_['isNil'](_0xc13a68)){this[_0xb5c6('0x15')][_0x40a356][_0xb5c6('0x6e')]['push']({'filename':_0x137e13,'createdAt':moment()[_0xb5c6('0x33')](_0xb5c6('0x40')),'mixmonitorid':'','status':_0xb5c6('0x6f')});}}}catch(_0x4999a5){logger[_0xb5c6('0x24')](_0xb5c6('0x70'),_0x40a356,util[_0xb5c6('0x2b')](_0x4999a5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x1c')]=function(_0x59b2eb){try{if(this['isNotNull'](_0x59b2eb)){logger['debug'](_0xb5c6('0x71'),_0x59b2eb[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x59b2eb,{'showHidden':![],'depth':null}));if(this['channels'][_0x59b2eb['uniqueid']]&&_0x59b2eb[_0xb5c6('0x30')]!=_0xb5c6('0x3b')){if(this['isNotNull'](_0x59b2eb[_0xb5c6('0x72')])){if(this[_0xb5c6('0x26')](_0x59b2eb[_0xb5c6('0x72')]['mixmonitor_filename'])){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);this['syncMixMonitorFilename'](_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);}else if(this[_0xb5c6('0x26')](_0x59b2eb[_0xb5c6('0x72')][_0xb5c6('0x74')])){logger[_0xb5c6('0x22')](_0xb5c6('0x75'),_0x59b2eb['uniqueid'],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb[_0xb5c6('0x29')]][_0xb5c6('0x2a')]=_0x59b2eb[_0xb5c6('0x73')];}else if(this[_0xb5c6('0x26')](_0x59b2eb[_0xb5c6('0x72')][_0xb5c6('0x76')])){logger[_0xb5c6('0x22')](_0xb5c6('0x77'),_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb['value']);this['channels'][_0x59b2eb[_0xb5c6('0x29')]][_0xb5c6('0x78')]=_0x59b2eb['value'];}else if(this['isNotNull'](_0x59b2eb[_0xb5c6('0x72')]['xmd-cdrtype'])){logger[_0xb5c6('0x22')](_0xb5c6('0x79'),_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb['uniqueid']][_0xb5c6('0x56')]=_0x59b2eb['value'];}else if(this[_0xb5c6('0x26')](_0x59b2eb['variable'][_0xb5c6('0x7a')])){logger[_0xb5c6('0x22')](_0xb5c6('0x7b'),_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')][_0xb5c6('0x31')](',')[0x0]);this['channels'][_0x59b2eb[_0xb5c6('0x29')]][_0xb5c6('0xa')]=_0x59b2eb[_0xb5c6('0x73')][_0xb5c6('0x31')](',')[0x0];}else if(this[_0xb5c6('0x26')](_0x59b2eb[_0xb5c6('0x72')][_0xb5c6('0x7c')])){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb[_0xb5c6('0x29')]][_0xb5c6('0x7d')]=_0x59b2eb[_0xb5c6('0x73')];}else if(this[_0xb5c6('0x26')](_0x59b2eb['variable']['xmd-destination'])){logger['info'](_0xb5c6('0x7e'),_0x59b2eb['uniqueid'],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb['uniqueid']]['destination']=_0x59b2eb[_0xb5c6('0x73')];}else if(this[_0xb5c6('0x26')](_0x59b2eb['variable']['xmd-callerid-preview'])){logger[_0xb5c6('0x22')](_0xb5c6('0x7f'),_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb[_0xb5c6('0x29')]][_0xb5c6('0x80')]=_0x59b2eb['value'];}else if(this[_0xb5c6('0x26')](_0x59b2eb[_0xb5c6('0x72')]['xmcs-queue'])){logger[_0xb5c6('0x22')](_0xb5c6('0x81'),_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb[_0xb5c6('0x73')]);this[_0xb5c6('0x15')][_0x59b2eb['uniqueid']][_0xb5c6('0xa')]=_0x59b2eb[_0xb5c6('0x73')];}else if(this[_0xb5c6('0x26')](_0x59b2eb['variable'][_0xb5c6('0x82')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x59b2eb[_0xb5c6('0x29')],_0x59b2eb['value']);this['channels'][_0x59b2eb['uniqueid']][_0xb5c6('0x83')]=_0x59b2eb[_0xb5c6('0x73')];}}}else if(this['isNotNull'](_0x59b2eb[_0xb5c6('0x72')][_0xb5c6('0x84')])){if(_0x59b2eb[_0xb5c6('0x73')]){var _0x1eda32=path[_0xb5c6('0x85')](_0x59b2eb[_0xb5c6('0x73')])['name'];logger[_0xb5c6('0x22')](_0xb5c6('0x86'),_0x1eda32,_0x59b2eb['value']);this['syncMixMonitorFilename'](_0x1eda32,_0x59b2eb[_0xb5c6('0x73')]);}}else if(this['channels'][_0x59b2eb['linkedid']]){if(this[_0xb5c6('0x26')](_0x59b2eb['variable'])){if(this['isNotNull'](_0x59b2eb[_0xb5c6('0x72')][_0xb5c6('0x82')])){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x59b2eb[_0xb5c6('0x3c')],_0x59b2eb['value']);this[_0xb5c6('0x15')][_0x59b2eb['linkedid']]['sipcalllinkedid']=_0x59b2eb['value'];}}}}}catch(_0x91a35d){logger[_0xb5c6('0x24')](_0xb5c6('0x87'),_0x59b2eb[_0xb5c6('0x29')],util['inspect'](_0x91a35d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x88')]=function(_0x106b6d){try{if(this[_0xb5c6('0x26')](_0x106b6d)){logger[_0xb5c6('0x39')](_0xb5c6('0x89'),_0x106b6d[_0xb5c6('0x29')],util['inspect'](_0x106b6d,{'showHidden':![],'depth':null}));if(this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]]){if(this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']][_0xb5c6('0x3c')]]){this['channels'][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]]['uniqueid']=_0x106b6d[_0xb5c6('0x29')];this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]][_0xb5c6('0x5a')]=this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x5a')];this[_0xb5c6('0x15')][this['blindTransfers'][_0x106b6d['linkedid']][_0xb5c6('0x3c')]][_0xb5c6('0x64')]=this[_0xb5c6('0x15')][_0x106b6d['uniqueid']][_0xb5c6('0x64')];this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]][_0xb5c6('0x60')]=this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]]['channel'];this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]][_0xb5c6('0x65')]=this['channels'][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x65')];this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]=this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]];delete this['channels'][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x3c')]];}else if(this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]]){this['channels'][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]][_0xb5c6('0x29')]=[this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]]['uniqueid']]['linkedid'],this[_0xb5c6('0x15')][this['blindTransfers'][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]][_0xb5c6('0x3c')]=this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']]['uniqueid']][_0xb5c6('0x29')]][0x0];this['channels'][this['blindTransfers'][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]][_0xb5c6('0x5a')]=this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x5a')];this['channels'][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']][_0xb5c6('0x29')]]['answertime']=this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]['answertime'];this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']][_0xb5c6('0x29')]][_0xb5c6('0x60')]=this[_0xb5c6('0x15')][this['blindTransfers'][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]][_0xb5c6('0x30')];this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']][_0xb5c6('0x29')]]['disposition']=this['channels'][_0x106b6d[_0xb5c6('0x29')]]['disposition'];this[_0xb5c6('0x15')][_0x106b6d['uniqueid']]=this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x3c')]][_0xb5c6('0x29')]];delete this[_0xb5c6('0x15')][this[_0xb5c6('0x3d')][_0x106b6d['linkedid']][_0xb5c6('0x29')]];}}if(this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]){logger[_0xb5c6('0x22')](_0xb5c6('0x8a'),_0x106b6d[_0xb5c6('0x29')],_0x106b6d[_0xb5c6('0x8b')]);var _0x209dcb=moment();this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x8c')]=_0x209dcb[_0xb5c6('0x33')](_0xb5c6('0x40'));this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x4f')]=_0x209dcb[_0xb5c6('0x5c')](this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]['starttime'],'seconds');if(this[_0xb5c6('0x15')][_0x106b6d['uniqueid']]['answered']){this['channels'][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x8d')]=_0x209dcb[_0xb5c6('0x5c')](this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x64')],_0xb5c6('0x51'));this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]['holdtime']=this[_0xb5c6('0x15')][_0x106b6d['uniqueid']]['duration']-this[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x8d')];}if(_0x106b6d['context']===_0xb5c6('0x2f')){if(this[_0xb5c6('0x16')][_0x106b6d[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]){this[_0xb5c6('0x16')][_0x106b6d[_0xb5c6('0x30')]['split']('-')[0x0]]=_[_0xb5c6('0x8e')](this[_0xb5c6('0x16')][_0x106b6d['channel'][_0xb5c6('0x31')]('-')[0x0]],[_0xb5c6('0x44')]);logger[_0xb5c6('0x39')](_0xb5c6('0x8f'),_0x106b6d[_0xb5c6('0x29')],util[_0xb5c6('0x2b')]({'id':this[_0xb5c6('0x16')][_0x106b6d[_0xb5c6('0x30')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb5c6('0x16')][_0x106b6d['channel']['split']('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this['emit'](util[_0xb5c6('0x33')](_0xb5c6('0x34'),this[_0xb5c6('0x16')][_0x106b6d[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['name']),_0xb5c6('0x90'),{'id':this['agents'][_0x106b6d[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]]['id'],'destaccountcode':this[_0xb5c6('0x16')][_0x106b6d[_0xb5c6('0x30')][_0xb5c6('0x31')]('-')[0x0]][_0xb5c6('0x36')]});for(var _0x54a9f7=0x0;_0x54a9f7<Object[_0xb5c6('0x2e')](this[_0xb5c6('0x16')])[_0xb5c6('0x91')];_0x54a9f7++){var _0x58c597=Object[_0xb5c6('0x2e')](this[_0xb5c6('0x16')])[_0x54a9f7];var _0x5b9d8b=this['agents'][_0x58c597];if(_0x5b9d8b['accountcode']===Number(_0x106b6d['connectedlinenum'])){this[_0xb5c6('0x27')](util[_0xb5c6('0x33')](_0xb5c6('0x34'),_0x5b9d8b[_0xb5c6('0x35')]),_0xb5c6('0x90'),{'id':_0x5b9d8b['id'],'destaccountcode':_0x5b9d8b[_0xb5c6('0x36')],'transfer':this['channels'][_0x106b6d['uniqueid']][_0xb5c6('0x92')]});break;}}}}var _0x2678c7=this;Promise[_0xb5c6('0x93')]()[_0xb5c6('0x94')](function(){var _0x5aa3d2=_0x2678c7['channels'][_0x106b6d[_0xb5c6('0x29')]];if(typeof _0x5aa3d2[_0xb5c6('0x92')]===_0xb5c6('0x95'))return;if(_[_0xb5c6('0x96')](_0x5aa3d2[_0xb5c6('0x6e')]))return;return RpcSetting[_0xb5c6('0x97')]()[_0xb5c6('0x94')](function(_0x3dcffd){if(!_0x3dcffd['stopRecordingOnTransfer'])return;return Promise['resolve']()['then'](function(){return ami[_0xb5c6('0x98')]({'action':_0xb5c6('0x99'),'channel':_0x5aa3d2['channel']})[_0xb5c6('0x9a')](function(){});})['then'](function(){return ami[_0xb5c6('0x98')]({'action':_0xb5c6('0x99'),'channel':_0x5aa3d2[_0xb5c6('0x60')]})[_0xb5c6('0x9a')](function(){})['finally'](function(){var _0x6578c8=_0x2678c7['agents'][_0x5aa3d2['destinationchannel'][_0xb5c6('0x31')]('-')[0x0]];if(!_0x6578c8)return;io[_0xb5c6('0x27')](_0xb5c6('0x9b'),{'agentId':_0x6578c8['id'],'uniqueid':_0x5aa3d2[_0xb5c6('0x29')]});});});});})[_0xb5c6('0x94')](function(){if(_0x106b6d[_0xb5c6('0x9c')]===_0xb5c6('0x9d')){_0x2678c7[_0xb5c6('0x3d')][_0x106b6d[_0xb5c6('0x29')]]=_0x106b6d;}else{if(_0x2678c7[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x56')]===_0xb5c6('0x9e')&&_0x2678c7[_0xb5c6('0x3d')][_0x106b6d['uniqueid']]){_0x2678c7['channels'][_0x106b6d['uniqueid']][_0xb5c6('0x29')]=[_0x2678c7[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x3c')],_0x2678c7[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]][_0xb5c6('0x3c')]=_0x2678c7[_0xb5c6('0x15')][_0x106b6d['uniqueid']][_0xb5c6('0x29')]][0x0];delete _0x2678c7['blindTransfers'][_0x106b6d[_0xb5c6('0x29')]];}}logger['debug'](_0xb5c6('0x9f'),_0x106b6d['uniqueid'],util[_0xb5c6('0x2b')](_0x2678c7[_0xb5c6('0x15')][_0x106b6d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xb5c6('0x27')](_0xb5c6('0xa0'),_0x2678c7[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]]);delete _0x2678c7[_0xb5c6('0x15')][_0x106b6d[_0xb5c6('0x29')]];});}}}catch(_0x3def37){logger[_0xb5c6('0x24')](_0xb5c6('0xa1'),_0x106b6d[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x3def37,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')]['syncAttendedTransfer']=function(_0x494113){try{if(this[_0xb5c6('0x26')](_0x494113)){logger[_0xb5c6('0x22')](_0xb5c6('0xa2'),_0x494113[_0xb5c6('0x29')],_0x494113[_0xb5c6('0xa3')],_0x494113[_0xb5c6('0xa4')]);logger[_0xb5c6('0x39')](_0xb5c6('0xa5'),_0x494113[_0xb5c6('0x29')],util['inspect'](_0x494113,{'showHidden':![],'depth':null}));var _0x6e0bb;if(this[_0xb5c6('0x15')][_0x494113['transfereeuniqueid']]){this['channels'][_0x494113[_0xb5c6('0xa6')]]['transfercalleridnum']=_0x494113[_0xb5c6('0xa3')];this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa6')]][_0xb5c6('0xa7')]=_0x494113[_0xb5c6('0xa4')];if(this[_0xb5c6('0x15')][_0x494113['secondtransfereruniqueid']]){_0x6e0bb=this['channels'][_0x494113[_0xb5c6('0xa8')]];this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa8')]]=this[_0xb5c6('0x15')][_0x494113['transfereeuniqueid']];this[_0xb5c6('0x15')][_0x494113['transfereeuniqueid']]=_0x6e0bb;}this[_0xb5c6('0x15')][_0x494113['secondtransfereruniqueid']][_0xb5c6('0x92')]='ATTENDED';}else if(this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa9')]]){this[_0xb5c6('0x15')][_0x494113['transfertargetuniqueid']][_0xb5c6('0xaa')]=_0x494113[_0xb5c6('0xa3')];this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa9')]][_0xb5c6('0xa7')]=_0x494113[_0xb5c6('0xa4')];if(this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xab')]]){_0x6e0bb=this['channels'][_0x494113[_0xb5c6('0xab')]];this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xab')]]=this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa9')]];this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa9')]]=_0x6e0bb;}this['channels'][_0x494113['transfertargetuniqueid']]['transferType']=_0xb5c6('0xac');}if((this['channels'][_0x494113['origtransfereruniqueid']]||this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xad')]])&&this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa8')]]){var _0x357a1e=_['some']([this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xab')]],this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xad')]],this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xa8')]]],function(_0x99261e){return _0x99261e&&_0x99261e[_0xb5c6('0x56')]===_0xb5c6('0x9e')&&_0x99261e[_0xb5c6('0xae')];});if(_0x357a1e){if(this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xab')]])this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xab')]][_0xb5c6('0x92')]=_0xb5c6('0xac');if(this[_0xb5c6('0x15')][_0x494113[_0xb5c6('0xad')]])this[_0xb5c6('0x15')][_0x494113['origtransfererlinkedid']][_0xb5c6('0x92')]=_0xb5c6('0xac');this['channels'][_0x494113[_0xb5c6('0xa8')]][_0xb5c6('0x92')]=_0xb5c6('0xac');}}}}catch(_0xf0c9c6){logger['error']('[%s][voiceCallReport][attendedtransfer]',_0x494113[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0xf0c9c6,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb5c6('0xaf')]=function(_0x3eac2a){try{if(this[_0xb5c6('0x26')](_0x3eac2a)){logger[_0xb5c6('0x22')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x3eac2a['uniqueid'],_0x3eac2a[_0xb5c6('0xb0')],_0x3eac2a[_0xb5c6('0xb1')]);logger[_0xb5c6('0x39')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x3eac2a[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x3eac2a,{'showHidden':![],'depth':null}));if(this[_0xb5c6('0x15')][_0x3eac2a['transfereeuniqueid']]){this[_0xb5c6('0x15')][_0x3eac2a[_0xb5c6('0xa6')]][_0xb5c6('0xaa')]=_0x3eac2a[_0xb5c6('0xb0')];this[_0xb5c6('0x15')][_0x3eac2a['transfereeuniqueid']][_0xb5c6('0xa7')]=_0x3eac2a[_0xb5c6('0xb1')];this[_0xb5c6('0x15')][_0x3eac2a[_0xb5c6('0xa6')]][_0xb5c6('0x92')]=_0xb5c6('0xb2');this['syncHangup']({'event':_0xb5c6('0x9d'),'uniqueid':_0x3eac2a[_0xb5c6('0xa6')],'linkedid':_0x3eac2a[_0xb5c6('0xb3')],'context':_0x3eac2a['context'],'channel':_0x3eac2a[_0xb5c6('0xb4')]});}else{this[_0xb5c6('0x15')][_0x3eac2a[_0xb5c6('0xb3')]][_0xb5c6('0x92')]='BLIND';this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x3eac2a[_0xb5c6('0xb3')],'linkedid':_0x3eac2a['transfereeuniqueid'],'context':_0x3eac2a[_0xb5c6('0x43')],'channel':_0x3eac2a['transfererchannel']});}}}catch(_0x791a0e){logger[_0xb5c6('0x24')]('[%s][voiceCallReport][blindtransfer]',_0x3eac2a[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x791a0e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb5c6('0x25')][_0xb5c6('0x20')]=function(_0x376dca){try{if(this[_0xb5c6('0x26')](_0x376dca)){logger[_0xb5c6('0x39')](_0xb5c6('0xb5'),_0x376dca[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x376dca,{'showHidden':![],'depth':null}));if(this[_0xb5c6('0x15')][_0x376dca[_0xb5c6('0x29')]]){if(!_[_0xb5c6('0xb6')](this[_0xb5c6('0x15')][_0x376dca['uniqueid']][_0xb5c6('0x64')])){this[_0xb5c6('0x15')][_0x376dca[_0xb5c6('0x29')]][_0xb5c6('0xb7')]=moment()[_0xb5c6('0x33')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0xb5c6('0xb8'),_0x376dca[_0xb5c6('0x29')],this['channels'][_0x376dca[_0xb5c6('0x29')]][_0xb5c6('0xb7')]);}}}}catch(_0x4f5f94){logger['error'](_0xb5c6('0xb9'),_0x376dca[_0xb5c6('0x29')],util[_0xb5c6('0x2b')](_0x4f5f94,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb5c6('0xba')]=function(_0x106cf1){try{if(this[_0xb5c6('0x26')](_0x106cf1)){logger[_0xb5c6('0x39')](_0xb5c6('0xbb'),_0x106cf1[_0xb5c6('0x29')],util['inspect'](_0x106cf1,{'showHidden':![],'depth':null}));if(this['channels'][_0x106cf1[_0xb5c6('0x29')]]){if(!_[_0xb5c6('0xb6')](this[_0xb5c6('0x15')][_0x106cf1[_0xb5c6('0x29')]][_0xb5c6('0xb7')])){this[_0xb5c6('0x15')][_0x106cf1[_0xb5c6('0x29')]][_0xb5c6('0xbc')]+=moment()[_0xb5c6('0xbd')](0x0)[_0xb5c6('0x5c')](this['channels'][_0x106cf1[_0xb5c6('0x29')]][_0xb5c6('0xb7')],_0xb5c6('0x51'));logger['info'](_0xb5c6('0xbe'),_0x106cf1[_0xb5c6('0x29')],this['channels'][_0x106cf1[_0xb5c6('0x29')]][_0xb5c6('0xbc')]);delete this['channels'][_0x106cf1[_0xb5c6('0x29')]][_0xb5c6('0xb7')];}}}}catch(_0x416b1e){logger[_0xb5c6('0x24')]('[%s][voiceCallReport][musiconholdstop]',_0x106cf1['uniqueid'],util[_0xb5c6('0x2b')](_0x416b1e,{'showHidden':![],'depth':null}));}};module[_0xb5c6('0xbf')]=VoiceCallReport;
\ No newline at end of file
+var _0x4e87=['mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','milliseconds','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../rpc/setting','set','queue','agi','dial','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','linkedid','keys','from-sip','split','exten','channel','connectedlinenum','format','user:%s','user:agentconnect','accountcode','context','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','pick','undefined','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','match','type','isNil','[%s][voiceCallReport][newexten]','calleridnum','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','xcally-motion-preview','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitorFilename','find','monitors','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','variable','xmd-phone','[%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','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','getSettings','stopRecordingOnTransfer','Action','catch','finally','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','transferconnectedlinenum','transfereruniqueid','BLIND','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:'];(function(_0x17882c,_0x4b964b){var _0x355a59=function(_0x534b5b){while(--_0x534b5b){_0x17882c['push'](_0x17882c['shift']());}};_0x355a59(++_0x4b964b);}(_0x4e87,0xca));var _0x74e8=function(_0x5706e4,_0x202c69){_0x5706e4=_0x5706e4-0x0;var _0x1315eb=_0x4e87[_0x5706e4];return _0x1315eb;};'use strict';var _=require('lodash');var moment=require(_0x74e8('0x0'));var util=require('util');var path=require(_0x74e8('0x1'));var Redis=require(_0x74e8('0x2'));var config=require(_0x74e8('0x3'));var logger=require(_0x74e8('0x4'))(_0x74e8('0x5'));var ami=require('../ami');var Channel=require('../model/channel');var RpcSetting=require(_0x74e8('0x6'));var applications=[_0x74e8('0x7'),_0x74e8('0x8'),_0x74e8('0x9'),_0x74e8('0xa'),'playback',_0x74e8('0xb')];var dispositions=['NO\x20ANSWER',_0x74e8('0xc'),'FAILED',_0x74e8('0xd'),_0x74e8('0xd'),_0x74e8('0xd'),_0x74e8('0xe'),_0x74e8('0xf'),_0x74e8('0xc'),_0x74e8('0xc'),_0x74e8('0xc')];config[_0x74e8('0x10')]=_[_0x74e8('0x11')](config[_0x74e8('0x10')],{'host':_0x74e8('0x12'),'port':0x18eb});var io=require(_0x74e8('0x13'))(new Redis(config[_0x74e8('0x10')]));function VoiceCallReport(_0x52639d){this[_0x74e8('0x14')]=_0x52639d[_0x74e8('0x14')];this[_0x74e8('0x15')]=_0x52639d['agents'];this[_0x74e8('0x16')]={};ami['on'](_0x74e8('0x17'),this[_0x74e8('0x18')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x1a'),this['syncNewExten'][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x1b'),this[_0x74e8('0x1c')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x1d'),this[_0x74e8('0x1e')][_0x74e8('0x19')](this));ami['on']('varset',this[_0x74e8('0x1f')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x20'),this[_0x74e8('0x21')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x22'),this[_0x74e8('0x23')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x24'),this[_0x74e8('0x25')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x26'),this[_0x74e8('0x27')][_0x74e8('0x19')](this));ami['on'](_0x74e8('0x28'),this[_0x74e8('0x29')][_0x74e8('0x19')](this));ami['on']('musiconholdstop',this[_0x74e8('0x2a')]['bind'](this));try{logger[_0x74e8('0x2b')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x74e8('0x2c')]();}catch(_0x4d64c4){logger[_0x74e8('0x2d')](_0x74e8('0x2e'),util[_0x74e8('0x2f')](_0x4d64c4,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x74e8('0x30')]['isNotNull']=function(_0x43e07b){return _0x43e07b!==null&&!_[_0x74e8('0x31')](_0x43e07b);};VoiceCallReport['prototype'][_0x74e8('0x32')]=function(_0x276750,_0xb7a094,_0x2321d7){io['to'](_0x276750)[_0x74e8('0x32')](_0xb7a094,_0x2321d7);};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x23')]=function(_0x15dd3c){try{if(this[_0x74e8('0x33')](_0x15dd3c)){logger[_0x74e8('0x2b')](_0x74e8('0x34'),_0x15dd3c[_0x74e8('0x35')],_0x15dd3c[_0x74e8('0x36')],_0x15dd3c['calleridnum']);logger[_0x74e8('0x37')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x15dd3c[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x15dd3c,{'showHidden':![],'depth':null}));if(_0x15dd3c['uniqueid']===_0x15dd3c[_0x74e8('0x38')]){if(!_['isUndefined'](this[_0x74e8('0x14')][_0x15dd3c['uniqueid']])){_['merge'](this[_0x74e8('0x14')][_0x15dd3c[_0x74e8('0x35')]],_['pick'](_0x15dd3c,_[_0x74e8('0x39')](this['channels'][_0x15dd3c[_0x74e8('0x35')]])));}}if(_0x15dd3c['context']===_0x74e8('0x3a')){if(this[_0x74e8('0x15')][_0x15dd3c['channel'][_0x74e8('0x3b')]('-')[0x0]]){if(_0x15dd3c[_0x74e8('0x3c')]=='xcally-motion-preview'){this[_0x74e8('0x15')][_0x15dd3c[_0x74e8('0x3d')]['split']('-')[0x0]]['destconnectedlinenum']=_0x15dd3c[_0x74e8('0x3e')];this[_0x74e8('0x32')](util[_0x74e8('0x3f')](_0x74e8('0x40'),this['agents'][_0x15dd3c[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]]['name']),_0x74e8('0x41'),{'destaccountcode':this[_0x74e8('0x15')][_0x15dd3c[_0x74e8('0x3d')]['split']('-')[0x0]][_0x74e8('0x42')],'destconnectedlinenum':_0x15dd3c['connectedlinenum']});}}}}}catch(_0x3e6557){logger['error']('[%s][voiceCallReport][newcallerid]',_0x15dd3c[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x3e6557,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x1c')]=function(_0x2afc6e){try{if(this[_0x74e8('0x33')](_0x2afc6e)){logger[_0x74e8('0x37')]('[%s][voiceCallReport][newchannel]\x20event:',_0x2afc6e['uniqueid'],util[_0x74e8('0x2f')](_0x2afc6e,{'showHidden':![],'depth':null}));if(this[_0x74e8('0x14')][_0x2afc6e['uniqueid']]){return;}if(_0x2afc6e[_0x74e8('0x3d')]==='OutgoingSpoolFailed'){return;}if(_0x2afc6e[_0x74e8('0x35')]!==_0x2afc6e[_0x74e8('0x38')]&&!this[_0x74e8('0x16')][_0x2afc6e[_0x74e8('0x38')]]){return;}logger['info']('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x2afc6e['uniqueid'],_0x2afc6e[_0x74e8('0x43')],_0x2afc6e[_0x74e8('0x3c')]);this[_0x74e8('0x14')][_0x2afc6e[_0x74e8('0x35')]]=new Channel();this['channels'][_0x2afc6e[_0x74e8('0x35')]][_0x74e8('0x44')]=moment()[_0x74e8('0x3f')](_0x74e8('0x45'));this[_0x74e8('0x14')][_0x2afc6e['uniqueid']][_0x74e8('0x46')]=dispositions[_[_0x74e8('0x47')](_0x2afc6e[_0x74e8('0x48')])];_[_0x74e8('0x49')](this[_0x74e8('0x14')][_0x2afc6e[_0x74e8('0x35')]],_[_0x74e8('0x4a')](_0x2afc6e,_[_0x74e8('0x39')](this[_0x74e8('0x14')][_0x2afc6e[_0x74e8('0x35')]])));if(_0x2afc6e[_0x74e8('0x43')]===_0x74e8('0x3a')){var _0x5db361=this[_0x74e8('0x15')][_0x2afc6e[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]];if(_0x5db361&&typeof _0x5db361['destconnectedlinenum']===_0x74e8('0x4b')){_0x5db361[_0x74e8('0x4c')]=_0x2afc6e[_0x74e8('0x3c')];logger[_0x74e8('0x37')](_0x74e8('0x4d'),_0x2afc6e[_0x74e8('0x35')],util[_0x74e8('0x2f')]({'id':_0x5db361['id'],'destaccountcode':_0x5db361[_0x74e8('0x42')],'destconnectedlinenum':_0x2afc6e[_0x74e8('0x3c')]},{'showHidden':![],'depth':null}));this[_0x74e8('0x32')](util[_0x74e8('0x3f')](_0x74e8('0x40'),_0x5db361[_0x74e8('0x4e')]),_0x74e8('0x41'),{'id':_0x5db361['id'],'destaccountcode':_0x5db361[_0x74e8('0x42')],'destconnectedlinenum':_0x2afc6e[_0x74e8('0x3c')]});}}}}catch(_0x3ca4a6){logger[_0x74e8('0x2d')](_0x74e8('0x4f'),_0x2afc6e[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x3ca4a6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x18')]=function(_0x3ba300){try{if(this[_0x74e8('0x33')](_0x3ba300)){logger[_0x74e8('0x37')](_0x74e8('0x50'),_0x3ba300['uniqueid'],util[_0x74e8('0x2f')](_0x3ba300,{'showHidden':![],'depth':null}));if(_0x3ba300[_0x74e8('0x3d')]===_0x74e8('0x51')||_0x3ba300['exten']==='h')return;if(_0x3ba300[_0x74e8('0x35')]===_0x3ba300[_0x74e8('0x38')]||this['blindTransfers'][_0x3ba300[_0x74e8('0x38')]]){_0x3ba300[_0x74e8('0x52')]=_0x3ba300[_0x74e8('0x52')][_0x74e8('0x53')]();_0x3ba300[_0x74e8('0x54')]=_0x3ba300[_0x74e8('0x55')]||_0x3ba300[_0x74e8('0x54')];if(_0x3ba300[_0x74e8('0x55')]&&!_0x3ba300[_0x74e8('0x55')][_0x74e8('0x56')](_0x74e8('0x57'))&&_0x3ba300['application']!==_0x74e8('0x8')){_0x3ba300[_0x74e8('0x54')]=_0x3ba300[_0x74e8('0x54')]['toLowerCase']();}logger['info'](_0x74e8('0x58'),_0x3ba300[_0x74e8('0x35')],_0x3ba300[_0x74e8('0x52')],_0x3ba300[_0x74e8('0x54')]);if(_[_0x74e8('0x31')](this[_0x74e8('0x14')][_0x3ba300[_0x74e8('0x35')]])){this[_0x74e8('0x14')][_0x3ba300[_0x74e8('0x35')]]=new Channel();this[_0x74e8('0x14')][_0x3ba300['uniqueid']]['starttime']=_0x3ba300[_0x74e8('0x59')]?moment()[_0x74e8('0x5a')](moment[_0x74e8('0x59')](_0x3ba300[_0x74e8('0x59')])[_0x74e8('0x5b')](),_0x74e8('0x5b'))[_0x74e8('0x3f')](_0x74e8('0x45')):moment()[_0x74e8('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x74e8('0x14')][_0x3ba300[_0x74e8('0x35')]][_0x74e8('0x46')]='NO\x20ANSWER';}_[_0x74e8('0x49')](this[_0x74e8('0x14')][_0x3ba300['uniqueid']],_[_0x74e8('0x4a')](_0x3ba300,_[_0x74e8('0x39')](this[_0x74e8('0x14')][_0x3ba300[_0x74e8('0x35')]])));if(_[_0x74e8('0x5c')](applications,_0x3ba300['application'])){this[_0x74e8('0x14')][_0x3ba300[_0x74e8('0x35')]][_0x74e8('0x5d')]=_0x3ba300[_0x74e8('0x52')];this[_0x74e8('0x14')][_0x3ba300['uniqueid']][_0x74e8('0x5e')]=_0x3ba300['applicationdata'];if(_0x3ba300['application']==='set'&&_['startsWith'](_0x3ba300[_0x74e8('0x54')][_0x74e8('0x53')](),'cdr(')){var _0x4bc327=_0x3ba300[_0x74e8('0x54')][_0x74e8('0x3b')]('=');var _0x235422=_0x4bc327[0x0][_0x74e8('0x53')]()[_0x74e8('0x5f')](/cdr\((.*)\)/);if(_0x235422){if(_0x235422[0x1]===_0x74e8('0x60')&&!_[_0x74e8('0x61')](this['channels'][_0x3ba300[_0x74e8('0x35')]][_0x235422[0x1]]))return;this[_0x74e8('0x14')][_0x3ba300['uniqueid']][_0x235422[0x1]]=_0x4bc327[0x1];}}else if(_0x3ba300[_0x74e8('0x52')]==='queue'){this[_0x74e8('0x14')][_0x3ba300['uniqueid']][_0x74e8('0x8')]=_0x3ba300[_0x74e8('0x54')][_0x74e8('0x3b')](',')[0x0];}}}}}catch(_0x2754e5){logger[_0x74e8('0x2d')](_0x74e8('0x62'),_0x3ba300[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x2754e5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')]['syncNewState']=function(_0x1a4fe9){try{if(this[_0x74e8('0x33')](_0x1a4fe9)){logger[_0x74e8('0x2b')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x1a4fe9[_0x74e8('0x35')],_0x1a4fe9['linkedid'],_0x1a4fe9[_0x74e8('0x36')],_0x1a4fe9[_0x74e8('0x63')]);logger[_0x74e8('0x37')](_0x74e8('0x64'),_0x1a4fe9[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x1a4fe9,{'showHidden':![],'depth':null}));if(_0x1a4fe9[_0x74e8('0x48')]!=='6')return;var _0x797cca=this[_0x74e8('0x15')][_0x1a4fe9[_0x74e8('0x3d')]['split']('-')[0x0]];if(_0x1a4fe9['uniqueid']!==_0x1a4fe9['linkedid']){var _0x17aab2=moment();if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]]){if(!this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]]['answered']){this['channels'][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x65')]=!![];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x66')]=_0x17aab2['format'](_0x74e8('0x45'));if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]]['starttime']){this[_0x74e8('0x14')][_0x1a4fe9['linkedid']][_0x74e8('0x67')]=_0x17aab2[_0x74e8('0x68')](this[_0x74e8('0x14')][_0x1a4fe9['linkedid']]['starttime'],_0x74e8('0x5b'));}}this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]]['linkedid']=_0x1a4fe9[_0x74e8('0x35')];if(_0x1a4fe9[_0x74e8('0x63')]!=='xcally-motion-preview'){this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x3e')]=_0x1a4fe9[_0x74e8('0x63')];}this['channels'][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x69')]=_0x1a4fe9[_0x74e8('0x36')];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x6a')]=_0x1a4fe9[_0x74e8('0x3d')];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x46')]=dispositions[_[_0x74e8('0x47')](_0x1a4fe9['channelstate'])];if(_0x797cca){this[_0x74e8('0x14')][_0x1a4fe9['linkedid']][_0x74e8('0x6b')]=_0x797cca['id'];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x6c')]=_0x797cca[_0x74e8('0x4e')];}}if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]]){if(!this[_0x74e8('0x14')][_0x1a4fe9['uniqueid']][_0x74e8('0x65')]){this['channels'][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x65')]=!![];this['channels'][_0x1a4fe9[_0x74e8('0x35')]]['answertime']=_0x17aab2['format'](_0x74e8('0x45'));if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x44')]){this['channels'][_0x1a4fe9['uniqueid']][_0x74e8('0x67')]=_0x17aab2[_0x74e8('0x68')](this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x44')],_0x74e8('0x5b'));}}if(_0x1a4fe9[_0x74e8('0x63')]!==_0x74e8('0x6d')){this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]]['connectedlinenum']=_0x1a4fe9[_0x74e8('0x63')];}this['channels'][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x69')]=_0x1a4fe9[_0x74e8('0x36')];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x6a')]=_0x1a4fe9[_0x74e8('0x3d')];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x46')]=dispositions[_[_0x74e8('0x47')](_0x1a4fe9['channelstate'])];}}else{if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]]){if(_0x797cca){this['channels'][_0x1a4fe9['uniqueid']][_0x74e8('0x6b')]=_0x797cca['id'];this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]][_0x74e8('0x6c')]=_0x797cca[_0x74e8('0x4e')];}}}if(_0x1a4fe9[_0x74e8('0x43')]===_0x74e8('0x3a')){if(_0x797cca){_0x797cca[_0x74e8('0x4c')]=_0x1a4fe9[_0x74e8('0x3c')];var _0x1f5fc1,_0x50802b;if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]]){_0x1f5fc1=this['channels'][_0x1a4fe9['uniqueid']][_0x74e8('0x6e')];_0x50802b=this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x35')]]['queue'];}else if(this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]]){_0x1f5fc1=this[_0x74e8('0x14')][_0x1a4fe9['linkedid']][_0x74e8('0x6e')];_0x50802b=this[_0x74e8('0x14')][_0x1a4fe9[_0x74e8('0x38')]][_0x74e8('0x8')];}_0x797cca[_0x74e8('0x8')]=_0x50802b;_0x797cca[_0x74e8('0x6e')]=_0x1f5fc1;var _0x67c4a4={'id':_0x797cca['id'],'name':_0x797cca[_0x74e8('0x4e')],'agentconnected':!![],'destaccountcode':_0x797cca[_0x74e8('0x42')],'destconnectedlinenum':_0x1a4fe9[_0x74e8('0x3c')],'queue':_0x50802b||undefined,'routealias':_0x1f5fc1,'uniqueid':_0x1a4fe9[_0x74e8('0x38')]};logger[_0x74e8('0x37')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x1a4fe9['uniqueid'],util[_0x74e8('0x2f')](_0x67c4a4,{'showHidden':![],'depth':null}));this[_0x74e8('0x32')](util['format'](_0x74e8('0x40'),_0x797cca[_0x74e8('0x4e')]),_0x74e8('0x41'),_0x67c4a4);}}}}catch(_0x2b6340){logger[_0x74e8('0x2d')](_0x74e8('0x6f'),_0x1a4fe9[_0x74e8('0x35')],util['inspect'](_0x2b6340,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x70')]=function(_0x1abb6c,_0x124726){try{if(this[_0x74e8('0x14')][_0x1abb6c]){logger['info'](_0x74e8('0x71'),_0x1abb6c,_0x124726);this[_0x74e8('0x14')][_0x1abb6c][_0x74e8('0x72')]=!![];if(_['endsWith'](_0x124726,_0x74e8('0x73'))){_0x124726=_0x124726[_0x74e8('0x74')](_0x74e8('0x73'),_0x74e8('0x75'));}this['channels'][_0x1abb6c][_0x74e8('0x76')]=_0x124726;var _0x4de47b=_[_0x74e8('0x77')](this['channels'][_0x1abb6c][_0x74e8('0x78')],{'filename':_0x124726});if(_[_0x74e8('0x61')](_0x4de47b)){this[_0x74e8('0x14')][_0x1abb6c]['monitors']['push']({'filename':_0x124726,'createdAt':moment()[_0x74e8('0x3f')](_0x74e8('0x45')),'mixmonitorid':'','status':'rec'});}}}catch(_0x5c7813){logger[_0x74e8('0x2d')](_0x74e8('0x79'),_0x1abb6c,util[_0x74e8('0x2f')](_0x5c7813,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x1f')]=function(_0x5b85d8){try{if(this[_0x74e8('0x33')](_0x5b85d8)){logger['debug'](_0x74e8('0x7a'),_0x5b85d8[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x5b85d8,{'showHidden':![],'depth':null}));if(this[_0x74e8('0x14')][_0x5b85d8['uniqueid']]&&_0x5b85d8[_0x74e8('0x3d')]!=_0x74e8('0x51')){if(this[_0x74e8('0x33')](_0x5b85d8['variable'])){if(this[_0x74e8('0x33')](_0x5b85d8['variable'][_0x74e8('0x7b')])){logger['info'](_0x74e8('0x7c'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this['syncMixMonitorFilename'](_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x7f')])){logger[_0x74e8('0x2b')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x5b85d8['uniqueid'],_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x35')]][_0x74e8('0x63')]=_0x5b85d8['value'];}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')]['xmd-callerid'])){logger['info'](_0x74e8('0x80'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x35')]][_0x74e8('0x81')]=_0x5b85d8[_0x74e8('0x7d')];}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x82')])){logger[_0x74e8('0x2b')](_0x74e8('0x83'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this['channels'][_0x5b85d8[_0x74e8('0x35')]][_0x74e8('0x60')]=_0x5b85d8[_0x74e8('0x7d')];}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x84')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')][_0x74e8('0x3b')](',')[0x0]);this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x35')]]['queue']=_0x5b85d8[_0x74e8('0x7d')][_0x74e8('0x3b')](',')[0x0];}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x85')])){logger[_0x74e8('0x2b')](_0x74e8('0x86'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x14')][_0x5b85d8['uniqueid']]['originatecalleridnum']=_0x5b85d8[_0x74e8('0x7d')];}else if(this[_0x74e8('0x33')](_0x5b85d8['variable']['xmd-destination'])){logger[_0x74e8('0x2b')](_0x74e8('0x87'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this['channels'][_0x5b85d8[_0x74e8('0x35')]][_0x74e8('0x88')]=_0x5b85d8[_0x74e8('0x7d')];}else if(this['isNotNull'](_0x5b85d8[_0x74e8('0x7e')]['xmd-callerid-preview'])){logger[_0x74e8('0x2b')](_0x74e8('0x89'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x35')]][_0x74e8('0x8a')]=_0x5b85d8['value'];}else if(this['isNotNull'](_0x5b85d8[_0x74e8('0x7e')]['xmcs-queue'])){logger['info'](_0x74e8('0x8b'),_0x5b85d8[_0x74e8('0x35')],_0x5b85d8['value']);this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x35')]]['queue']=_0x5b85d8['value'];}else if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x8c')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x5b85d8[_0x74e8('0x35')],_0x5b85d8[_0x74e8('0x7d')]);this['channels'][_0x5b85d8[_0x74e8('0x35')]]['sipcalluniqueid']=_0x5b85d8['value'];}}}else if(this['isNotNull'](_0x5b85d8[_0x74e8('0x7e')][_0x74e8('0x7b')])){if(_0x5b85d8[_0x74e8('0x7d')]){var _0x3708c7=path[_0x74e8('0x8d')](_0x5b85d8[_0x74e8('0x7d')])[_0x74e8('0x4e')];logger[_0x74e8('0x2b')](_0x74e8('0x7c'),_0x3708c7,_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x70')](_0x3708c7,_0x5b85d8[_0x74e8('0x7d')]);}}else if(this[_0x74e8('0x14')][_0x5b85d8[_0x74e8('0x38')]]){if(this[_0x74e8('0x33')](_0x5b85d8[_0x74e8('0x7e')])){if(this[_0x74e8('0x33')](_0x5b85d8['variable'][_0x74e8('0x8c')])){logger[_0x74e8('0x2b')](_0x74e8('0x8e'),_0x5b85d8[_0x74e8('0x38')],_0x5b85d8[_0x74e8('0x7d')]);this[_0x74e8('0x14')][_0x5b85d8['linkedid']][_0x74e8('0x8f')]=_0x5b85d8['value'];}}}}}catch(_0x4a5996){logger['error'](_0x74e8('0x90'),_0x5b85d8['uniqueid'],util[_0x74e8('0x2f')](_0x4a5996,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x21')]=function(_0x462456){try{if(this['isNotNull'](_0x462456)){logger['debug'](_0x74e8('0x91'),_0x462456[_0x74e8('0x35')],util['inspect'](_0x462456,{'showHidden':![],'depth':null}));if(this[_0x74e8('0x16')][_0x462456['linkedid']]){if(this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]]){this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]]['linkedid']][_0x74e8('0x35')]=_0x462456[_0x74e8('0x35')];this['channels'][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]][_0x74e8('0x65')]=this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x65')];this[_0x74e8('0x14')][this['blindTransfers'][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]][_0x74e8('0x66')]=this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x66')];this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]][_0x74e8('0x6a')]=this[_0x74e8('0x14')][this['blindTransfers'][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]][_0x74e8('0x3d')];this['channels'][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]][_0x74e8('0x46')]=this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x46')];this['channels'][_0x462456[_0x74e8('0x35')]]=this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456['linkedid']][_0x74e8('0x38')]];delete this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x38')]];}else if(this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456['linkedid']][_0x74e8('0x35')]]){this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]][_0x74e8('0x35')]=[this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456['linkedid']][_0x74e8('0x35')]]['linkedid'],this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]]['linkedid']=this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]]['uniqueid']][0x0];this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]]['answered']=this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x65')];this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]][_0x74e8('0x66')]=this['channels'][_0x462456['uniqueid']][_0x74e8('0x66')];this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]]['uniqueid']][_0x74e8('0x6a')]=this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]][_0x74e8('0x3d')];this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]][_0x74e8('0x35')]]['disposition']=this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]['disposition'];this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]=this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]]['uniqueid']];delete this[_0x74e8('0x14')][this[_0x74e8('0x16')][_0x462456[_0x74e8('0x38')]]['uniqueid']];}}if(this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]){logger[_0x74e8('0x2b')](_0x74e8('0x92'),_0x462456[_0x74e8('0x35')],_0x462456[_0x74e8('0x93')]);var _0x596bb8=moment();this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x94')]=_0x596bb8[_0x74e8('0x3f')](_0x74e8('0x45'));this[_0x74e8('0x14')][_0x462456['uniqueid']][_0x74e8('0x59')]=_0x596bb8[_0x74e8('0x68')](this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x44')],_0x74e8('0x5b'));if(this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x65')]){this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x95')]=_0x596bb8[_0x74e8('0x68')](this[_0x74e8('0x14')][_0x462456['uniqueid']][_0x74e8('0x66')],_0x74e8('0x5b'));this['channels'][_0x462456['uniqueid']]['holdtime']=this['channels'][_0x462456[_0x74e8('0x35')]][_0x74e8('0x59')]-this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x95')];}if(_0x462456['context']===_0x74e8('0x3a')){if(this[_0x74e8('0x15')][_0x462456['channel'][_0x74e8('0x3b')]('-')[0x0]]){this[_0x74e8('0x15')][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]]=_[_0x74e8('0x96')](this[_0x74e8('0x15')][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]],[_0x74e8('0x4c')]);logger['debug'](_0x74e8('0x97'),_0x462456[_0x74e8('0x35')],util['inspect']({'id':this[_0x74e8('0x15')][_0x462456[_0x74e8('0x3d')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x74e8('0x15')][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]][_0x74e8('0x42')]},{'showHidden':![],'depth':null}));this[_0x74e8('0x32')](util[_0x74e8('0x3f')]('user:%s',this['agents'][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]][_0x74e8('0x4e')]),_0x74e8('0x98'),{'id':this['agents'][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x74e8('0x15')][_0x462456[_0x74e8('0x3d')][_0x74e8('0x3b')]('-')[0x0]][_0x74e8('0x42')]});for(var _0x164678=0x0;_0x164678<Object[_0x74e8('0x39')](this[_0x74e8('0x15')])[_0x74e8('0x99')];_0x164678++){var _0x1ed7e0=Object[_0x74e8('0x39')](this['agents'])[_0x164678];var _0x1022bf=this[_0x74e8('0x15')][_0x1ed7e0];if(_0x1022bf[_0x74e8('0x42')]===Number(this['channels'][_0x462456[_0x74e8('0x35')]][_0x74e8('0x3e')])){this[_0x74e8('0x32')](util[_0x74e8('0x3f')](_0x74e8('0x40'),_0x1022bf['name']),_0x74e8('0x98'),{'id':_0x1022bf['id'],'destaccountcode':_0x1022bf['accountcode'],'transfer':this[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x9a')]});break;}}}}var _0x28baee=this;Promise[_0x74e8('0x9b')]()[_0x74e8('0x9c')](function(){var _0x5b3a85=_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]];if(typeof _0x5b3a85['transferType']===_0x74e8('0x4b'))return;if(_['isEmpty'](_0x5b3a85[_0x74e8('0x78')]))return;return RpcSetting[_0x74e8('0x9d')]()['then'](function(_0xe03e6b){if(!_0xe03e6b[_0x74e8('0x9e')])return;return Promise[_0x74e8('0x9b')]()[_0x74e8('0x9c')](function(){return ami[_0x74e8('0x9f')]({'action':'StopMixMonitor','channel':_0x5b3a85[_0x74e8('0x3d')]})[_0x74e8('0xa0')](function(){});})[_0x74e8('0x9c')](function(){return ami[_0x74e8('0x9f')]({'action':'StopMixMonitor','channel':_0x5b3a85['destinationchannel']})[_0x74e8('0xa0')](function(){})[_0x74e8('0xa1')](function(){var _0x2d23ad=_0x28baee[_0x74e8('0x15')][_0x5b3a85['destinationchannel']['split']('-')[0x0]];if(!_0x2d23ad)return;io['emit'](_0x74e8('0xa2'),{'agentId':_0x2d23ad['id'],'uniqueid':_0x5b3a85[_0x74e8('0x35')]});});});});})[_0x74e8('0x9c')](function(){if(_0x462456['event']===_0x74e8('0xa3')){_0x28baee[_0x74e8('0x16')][_0x462456[_0x74e8('0x35')]]=_0x462456;}else{if(_0x28baee['channels'][_0x462456['uniqueid']][_0x74e8('0x60')]===_0x74e8('0xa4')&&_0x28baee[_0x74e8('0x16')][_0x462456['uniqueid']]){_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]['uniqueid']=[_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]][_0x74e8('0x38')],_0x28baee[_0x74e8('0x14')][_0x462456['uniqueid']][_0x74e8('0x38')]=_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]['uniqueid']][0x0];delete _0x28baee[_0x74e8('0x16')][_0x462456['uniqueid']];}}logger[_0x74e8('0x37')](_0x74e8('0xa5'),_0x462456[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]],{'showHidden':![],'depth':null}));ami[_0x74e8('0x32')](_0x74e8('0xa6'),_0x28baee[_0x74e8('0x14')][_0x462456[_0x74e8('0x35')]]);delete _0x28baee[_0x74e8('0x14')][_0x462456['uniqueid']];});}}}catch(_0x29e7b0){logger[_0x74e8('0x2d')](_0x74e8('0xa7'),_0x462456['uniqueid'],util[_0x74e8('0x2f')](_0x29e7b0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')]['syncAttendedTransfer']=function(_0x344e82){try{if(this[_0x74e8('0x33')](_0x344e82)){logger[_0x74e8('0x2b')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x344e82[_0x74e8('0x35')],_0x344e82[_0x74e8('0xa8')],_0x344e82[_0x74e8('0xa9')]);logger[_0x74e8('0x37')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x344e82[_0x74e8('0x35')],util['inspect'](_0x344e82,{'showHidden':![],'depth':null}));var _0x2ab627;if(this[_0x74e8('0x14')][_0x344e82['transfereeuniqueid']]){this[_0x74e8('0x14')][_0x344e82['transfereeuniqueid']]['transfercalleridnum']=_0x344e82[_0x74e8('0xa8')];this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xaa')]]['transferconnectedlinenum']=_0x344e82[_0x74e8('0xa9')];if(this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xab')]]){_0x2ab627=this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xab')]];this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xab')]]=this['channels'][_0x344e82[_0x74e8('0xaa')]];this[_0x74e8('0x14')][_0x344e82['transfereeuniqueid']]=_0x2ab627;}this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xab')]][_0x74e8('0x9a')]='ATTENDED';}else if(this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xac')]]){this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xac')]][_0x74e8('0xad')]=_0x344e82['origtransferercalleridnum'];this[_0x74e8('0x14')][_0x344e82['transfertargetuniqueid']]['transferconnectedlinenum']=_0x344e82[_0x74e8('0xa9')];if(this['channels'][_0x344e82[_0x74e8('0xae')]]){_0x2ab627=this[_0x74e8('0x14')][_0x344e82['origtransfereruniqueid']];this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xae')]]=this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xac')]];this['channels'][_0x344e82[_0x74e8('0xac')]]=_0x2ab627;}this['channels'][_0x344e82[_0x74e8('0xac')]][_0x74e8('0x9a')]='ATTENDED';}if((this[_0x74e8('0x14')][_0x344e82['origtransfereruniqueid']]||this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xaf')]])&&this[_0x74e8('0x14')][_0x344e82['secondtransfereruniqueid']]){var _0x3be959=_[_0x74e8('0xb0')]([this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xae')]],this['channels'][_0x344e82[_0x74e8('0xaf')]],this[_0x74e8('0x14')][_0x344e82['secondtransfereruniqueid']]],function(_0x2c73bb){return _0x2c73bb&&_0x2c73bb[_0x74e8('0x60')]===_0x74e8('0xa4')&&_0x2c73bb[_0x74e8('0xb1')];});if(_0x3be959){if(this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xae')]])this[_0x74e8('0x14')][_0x344e82['origtransfereruniqueid']][_0x74e8('0x9a')]='ATTENDED';if(this[_0x74e8('0x14')][_0x344e82['origtransfererlinkedid']])this[_0x74e8('0x14')][_0x344e82[_0x74e8('0xaf')]][_0x74e8('0x9a')]=_0x74e8('0xb2');this[_0x74e8('0x14')][_0x344e82['secondtransfereruniqueid']][_0x74e8('0x9a')]=_0x74e8('0xb2');}}}}catch(_0x5b5bc2){logger[_0x74e8('0x2d')](_0x74e8('0xb3'),_0x344e82[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x5b5bc2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')]['syncBlindTransfer']=function(_0x1b153e){try{if(this[_0x74e8('0x33')](_0x1b153e)){logger[_0x74e8('0x2b')](_0x74e8('0xb4'),_0x1b153e['uniqueid'],_0x1b153e[_0x74e8('0xb5')],_0x1b153e[_0x74e8('0xb6')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x1b153e[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x1b153e,{'showHidden':![],'depth':null}));if(this[_0x74e8('0x14')][_0x1b153e[_0x74e8('0xaa')]]){this['channels'][_0x1b153e['transfereeuniqueid']][_0x74e8('0xad')]=_0x1b153e[_0x74e8('0xb5')];this['channels'][_0x1b153e['transfereeuniqueid']][_0x74e8('0xb7')]=_0x1b153e[_0x74e8('0xb6')];this[_0x74e8('0x14')][_0x1b153e[_0x74e8('0xaa')]][_0x74e8('0x9a')]='BLIND';this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x1b153e[_0x74e8('0xaa')],'linkedid':_0x1b153e[_0x74e8('0xb8')],'context':_0x1b153e[_0x74e8('0x43')],'channel':_0x1b153e['transfererchannel']});}else{this[_0x74e8('0x14')][_0x1b153e[_0x74e8('0xb8')]][_0x74e8('0x9a')]=_0x74e8('0xb9');this['syncHangup']({'event':_0x74e8('0xa3'),'uniqueid':_0x1b153e[_0x74e8('0xb8')],'linkedid':_0x1b153e[_0x74e8('0xaa')],'context':_0x1b153e[_0x74e8('0x43')],'channel':_0x1b153e[_0x74e8('0xba')]});}}}catch(_0x49eb8b){logger[_0x74e8('0x2d')]('[%s][voiceCallReport][blindtransfer]',_0x1b153e[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x49eb8b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x29')]=function(_0x2a7bcc){try{if(this[_0x74e8('0x33')](_0x2a7bcc)){logger[_0x74e8('0x37')](_0x74e8('0xbb'),_0x2a7bcc[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x2a7bcc,{'showHidden':![],'depth':null}));if(this['channels'][_0x2a7bcc[_0x74e8('0x35')]]){if(!_[_0x74e8('0x61')](this['channels'][_0x2a7bcc[_0x74e8('0x35')]][_0x74e8('0x66')])){this[_0x74e8('0x14')][_0x2a7bcc[_0x74e8('0x35')]][_0x74e8('0xbc')]=moment()[_0x74e8('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x74e8('0x2b')](_0x74e8('0xbd'),_0x2a7bcc[_0x74e8('0x35')],this[_0x74e8('0x14')][_0x2a7bcc['uniqueid']][_0x74e8('0xbc')]);}}}}catch(_0x2154ad){logger[_0x74e8('0x2d')](_0x74e8('0xbe'),_0x2a7bcc[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x2154ad,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x74e8('0x30')][_0x74e8('0x2a')]=function(_0x25a5d2){try{if(this[_0x74e8('0x33')](_0x25a5d2)){logger[_0x74e8('0x37')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x25a5d2[_0x74e8('0x35')],util[_0x74e8('0x2f')](_0x25a5d2,{'showHidden':![],'depth':null}));if(this['channels'][_0x25a5d2[_0x74e8('0x35')]]){if(!_[_0x74e8('0x61')](this[_0x74e8('0x14')][_0x25a5d2[_0x74e8('0x35')]][_0x74e8('0xbc')])){this[_0x74e8('0x14')][_0x25a5d2['uniqueid']]['mohtime']+=moment()[_0x74e8('0xbf')](0x0)[_0x74e8('0x68')](this[_0x74e8('0x14')][_0x25a5d2[_0x74e8('0x35')]]['mohstarttime'],'seconds');logger[_0x74e8('0x2b')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x25a5d2[_0x74e8('0x35')],this[_0x74e8('0x14')][_0x25a5d2[_0x74e8('0x35')]][_0x74e8('0xc0')]);delete this[_0x74e8('0x14')][_0x25a5d2[_0x74e8('0x35')]][_0x74e8('0xbc')];}}}}catch(_0x4f5cc6){logger[_0x74e8('0x2d')](_0x74e8('0xc1'),_0x25a5d2['uniqueid'],util[_0x74e8('0x2f')](_0x4f5cc6,{'showHidden':![],'depth':null}));}};module[_0x74e8('0xc2')]=VoiceCallReport;
\ No newline at end of file
index 9fbf37e..fd3eac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['diff','starttime','complete','total','answered','holdtime','answertime','seconds','sumHoldTime','sumBillable','billableseconds','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','set','appdata','applicationdata','toLowerCase','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','[%s][voiceDialReport][newexten]','exports','moment','ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','keys','value','variable','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration'];(function(_0x2f4306,_0x386673){var _0x560b06=function(_0x490900){while(--_0x490900){_0x2f4306['push'](_0x2f4306['shift']());}};_0x560b06(++_0x386673);}(_0x8958,0x93));var _0x8895=function(_0x7c9a08,_0x3e89ee){_0x7c9a08=_0x7c9a08-0x0;var _0x569812=_0x8958[_0x7c9a08];return _0x569812;};'use strict';var _=require('lodash');var moment=require(_0x8895('0x0'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x8895('0x1'));var ami=require('../ami');config[_0x8895('0x2')]=_[_0x8895('0x3')](config[_0x8895('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0x8895('0x4'))(new Redis(config[_0x8895('0x2')]));function VoiceDialReport(_0x124e1e){this[_0x8895('0x5')]=_0x124e1e[_0x8895('0x6')];this['outbound']=_0x124e1e[_0x8895('0x7')];this[_0x8895('0x8')]={};this[_0x8895('0x9')]={};ami['on'](_0x8895('0xa'),this[_0x8895('0xb')][_0x8895('0xc')](this));ami['on'](_0x8895('0xd'),this[_0x8895('0xe')][_0x8895('0xc')](this));ami['on'](_0x8895('0xf'),this['syncVarSet'][_0x8895('0xc')](this));ami['on'](_0x8895('0x10'),this[_0x8895('0x11')][_0x8895('0xc')](this));}VoiceDialReport[_0x8895('0x12')][_0x8895('0x13')]=function(_0x5af0ef){return _0x5af0ef!==null&&!_[_0x8895('0x14')](_0x5af0ef);};VoiceDialReport[_0x8895('0x12')][_0x8895('0x15')]=function(_0x57d40a,_0x47b9fe,_0x9191b8){io['to'](_0x57d40a)['emit'](_0x47b9fe,_0x9191b8);};VoiceDialReport[_0x8895('0x12')][_0x8895('0xb')]=function(_0x195789){try{if(this[_0x8895('0x13')](_0x195789)){logger[_0x8895('0x16')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](_0x195789,{'showHidden':![],'depth':null}));if(this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]]){_[_0x8895('0x19')](this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]],{'starttime':moment()[_0x8895('0x1a')](_0x8895('0x1b')),'lastevent':_0x8895('0x1c'),'interface':_0x195789[_0x8895('0x1d')][_0x8895('0x1e')](0x0,_0x195789[_0x8895('0x1d')]['lastIndexOf']('-')),'membername':_0x195789['channel']['substring'](_0x195789[_0x8895('0x1d')][_0x8895('0x1f')]('/')+0x1,_0x195789[_0x8895('0x1d')][_0x8895('0x1f')]('-'))},_[_0x8895('0x20')](_0x195789,[_0x8895('0x21'),_0x8895('0x22')]));logger[_0x8895('0x23')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x195789[_0x8895('0x17')],this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]][_0x8895('0x24')],this[_0x8895('0x5')][_0x195789['uniqueid']]['interface']);logger[_0x8895('0x16')](_0x8895('0x25'),_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](this['channels'][_0x195789[_0x8895('0x17')]],{'showHidden':![],'depth':null}));if(this[_0x8895('0x8')][_0x195789[_0x8895('0x17')]])_['merge'](this['channels'][_0x195789[_0x8895('0x17')]],this['applications'][_0x195789[_0x8895('0x17')]]);this[_0x8895('0x15')](_0x8895('0x26'),_0x8895('0x27'),this[_0x8895('0x5')][_0x195789['uniqueid']]);logger['debug'](_0x8895('0x28'),_0x195789[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0x8895('0x5')][_0x195789[_0x8895('0x17')]]);}}}catch(_0x1c16f6){logger[_0x8895('0x29')](_0x8895('0x2a'),_0x195789['uniqueid'],util[_0x8895('0x18')](_0x1c16f6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8895('0xe')]=function(_0x5b2b19){try{if(this[_0x8895('0x13')](_0x5b2b19)){logger[_0x8895('0x16')](_0x8895('0x2b'),_0x5b2b19[_0x8895('0x17')],util[_0x8895('0x18')](_0x5b2b19,{'showHidden':![],'depth':null}));if(this['channels'][_0x5b2b19[_0x8895('0x17')]]){this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x2c')]=_0x5b2b19[_0x8895('0x2c')];if(_0x5b2b19['dialstatus']===_0x8895('0x2d')){this['channels'][_0x5b2b19[_0x8895('0x17')]]['connectedlinenum']=_0x5b2b19[_0x8895('0x2e')];this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x2f')]=_0x5b2b19[_0x8895('0x2f')];this['channels'][_0x5b2b19[_0x8895('0x17')]]['answertime']=moment()[_0x8895('0x1a')](_0x8895('0x1b'));this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]][_0x8895('0x30')]=_0x8895('0x31');logger['info'](_0x8895('0x32'),_0x5b2b19[_0x8895('0x17')],_0x5b2b19['channel'][_0x8895('0x1e')](_0x5b2b19['channel'][_0x8895('0x1f')]('/')+0x1,_0x5b2b19[_0x8895('0x1d')]['lastIndexOf']('-')));logger[_0x8895('0x16')](_0x8895('0x33'),_0x5b2b19['uniqueid'],util['inspect'](this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')](_0x8895('0x34'),this[_0x8895('0x5')][_0x5b2b19['uniqueid']]);}logger[_0x8895('0x16')](_0x8895('0x35'),_0x5b2b19[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]],{'showHidden':![],'depth':null}));this['emit'](_0x8895('0x26'),'voice_outbound_channel:save',this[_0x8895('0x5')][_0x5b2b19[_0x8895('0x17')]]);}}}catch(_0x526d90){logger[_0x8895('0x29')]('[%s][voiceDialReport][dialend]',_0x5b2b19[_0x8895('0x17')],util['inspect'](_0x526d90,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x4cd625){try{if(this['isNotNull'](_0x4cd625)){logger['debug'](_0x8895('0x36'),_0x4cd625[_0x8895('0x17')],util['inspect'](_0x4cd625,{'showHidden':![],'depth':null}));this['addVariable'](_0x4cd625[_0x8895('0x17')],_[_0x8895('0x37')](_0x4cd625['variable'])[0x0],_0x4cd625[_0x8895('0x38')]);if(this[_0x8895('0x13')](_0x4cd625[_0x8895('0x39')])&&this[_0x8895('0x13')](_0x4cd625[_0x8895('0x39')]['outboundrouteid'])){if(_['isUndefined'](this['channels'][_0x4cd625[_0x8895('0x17')]])){this['channels'][_0x4cd625[_0x8895('0x17')]]={'routeId':_0x4cd625[_0x8895('0x38')],'variables':this[_0x8895('0x9')][_0x4cd625[_0x8895('0x17')]],'motionChannel':'voice'};logger[_0x8895('0x23')](_0x8895('0x3a'),_0x4cd625[_0x8895('0x17')],_0x4cd625[_0x8895('0x39')][_0x8895('0x3b')],_[_0x8895('0x37')](_0x4cd625[_0x8895('0x39')])[0x0],_0x4cd625[_0x8895('0x38')]);logger['debug'](_0x8895('0x3c'),_0x4cd625[_0x8895('0x17')],util['inspect'](this[_0x8895('0x5')][_0x4cd625['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x8895('0x26'),_0x8895('0x27'),this[_0x8895('0x5')][_0x4cd625['uniqueid']]);}}}}catch(_0x227587){logger['error'](_0x8895('0x3d'),_0x4cd625[_0x8895('0x17')],util[_0x8895('0x18')](_0x227587,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8895('0x12')][_0x8895('0x3e')]=function(_0x21c954,_0xebb0c4,_0x4dde7c){var _0x47c4b9=[_0x8895('0x3f'),_0x8895('0x40'),'rtpaudioqosjitter',_0x8895('0x41'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x8895('0x42'),'rtpaudioqosrttbridged',_0x8895('0x43'),_0x8895('0x44'),_0x8895('0x45'),_0x8895('0x46'),_0x8895('0x47'),_0x8895('0x48'),_0x8895('0x49'),_0x8895('0x4a'),'membername',_0x8895('0x4b'),_0x8895('0x4c')];if(!_[_0x8895('0x4d')](_0xebb0c4)&&!_['includes'](_0x47c4b9,_0xebb0c4)){if(_[_0x8895('0x14')](this[_0x8895('0x9')][_0x21c954])){this[_0x8895('0x9')][_0x21c954]={};}this[_0x8895('0x9')][_0x21c954][_0xebb0c4]=_0x4dde7c;}};VoiceDialReport[_0x8895('0x12')][_0x8895('0x11')]=function(_0x434ab8){try{if(this[_0x8895('0x13')](_0x434ab8)){logger[_0x8895('0x16')](_0x8895('0x4e'),_0x434ab8['uniqueid'],util[_0x8895('0x18')](_0x434ab8,{'showHidden':![],'depth':null}));if(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]){logger[_0x8895('0x23')](_0x8895('0x4f'),_0x434ab8['uniqueid'],_0x434ab8[_0x8895('0x50')]);this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x51')]=moment()[_0x8895('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x52')]=moment(this['channels'][_0x434ab8[_0x8895('0x17')]][_0x8895('0x51')])[_0x8895('0x53')](this['channels'][_0x434ab8[_0x8895('0x17')]][_0x8895('0x54')],'seconds');this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]['lastevent']=_0x8895('0x55');this[_0x8895('0x7')][_0x8895('0x56')]+=0x1;if(this[_0x8895('0x5')][_0x434ab8['uniqueid']]['answertime']){this[_0x8895('0x7')][_0x8895('0x57')]+=0x1;this[_0x8895('0x5')][_0x434ab8['uniqueid']][_0x8895('0x58')]=moment(this[_0x8895('0x5')][_0x434ab8['uniqueid']][_0x8895('0x59')])['diff'](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x54')],_0x8895('0x5a'));this[_0x8895('0x5')][_0x434ab8['uniqueid']]['billableseconds']=moment(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]['endtime'])[_0x8895('0x53')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x59')],'seconds');this[_0x8895('0x7')][_0x8895('0x5b')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x58')]||0x0;this[_0x8895('0x7')][_0x8895('0x5c')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x5d')];}this[_0x8895('0x7')][_0x8895('0x5e')]+=this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]][_0x8895('0x52')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x434ab8['uniqueid'],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')](_0x8895('0x5f'),this['channels'][_0x434ab8[_0x8895('0x17')]]);logger[_0x8895('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));ami[_0x8895('0x15')]('custom:dialend',this[_0x8895('0x5')][_0x434ab8[_0x8895('0x17')]]);logger[_0x8895('0x16')](_0x8895('0x60'),_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this[_0x8895('0x5')][_0x434ab8['uniqueid']],{'showHidden':![],'depth':null}));this[_0x8895('0x15')](_0x8895('0x26'),'voice_outbound:save',this[_0x8895('0x7')]);logger[_0x8895('0x23')](_0x8895('0x61'),JSON[_0x8895('0x62')](this[_0x8895('0x5')][_0x434ab8['uniqueid']]));logger[_0x8895('0x16')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](this['channels'][_0x434ab8[_0x8895('0x17')]],{'showHidden':![],'depth':null}));this[_0x8895('0x15')](_0x8895('0x26'),_0x8895('0x63'),this['channels'][_0x434ab8[_0x8895('0x17')]]);delete this['channels'][_0x434ab8['uniqueid']];}else if(this[_0x8895('0x5')][_0x434ab8[_0x8895('0x64')]]){this[_0x8895('0x5')][_0x434ab8['linkedid']][_0x8895('0x17')]=this['channels'][_0x434ab8[_0x8895('0x64')]][_0x8895('0x65')];}if(this[_0x8895('0x9')][_0x434ab8[_0x8895('0x17')]]){delete this[_0x8895('0x9')][_0x434ab8['uniqueid']];}}}catch(_0x4be4b9){logger[_0x8895('0x29')]('[%s][voiceDialReport][hangup]',_0x434ab8[_0x8895('0x17')],util[_0x8895('0x18')](_0x4be4b9,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8895('0x66')]=function(_0xd9637a){try{if(this[_0x8895('0x13')](_0xd9637a)){logger[_0x8895('0x16')](_0x8895('0x67'),_0xd9637a['uniqueid'],util[_0x8895('0x18')](_0xd9637a,{'showHidden':![],'depth':null}));if(_0xd9637a['application']['toLowerCase']()===_0x8895('0x68')){_0xd9637a['applicationdata']=(_0xd9637a[_0x8895('0x69')]||_0xd9637a[_0x8895('0x6a')])[_0x8895('0x6b')]();if(_[_0x8895('0x6c')](_0xd9637a['applicationdata'],'cdr(')){if(_['isUndefined'](this[_0x8895('0x8')][_0xd9637a[_0x8895('0x17')]]))this[_0x8895('0x8')][_0xd9637a[_0x8895('0x17')]]={};logger[_0x8895('0x23')](_0x8895('0x6d'),_0xd9637a['uniqueid'],_0xd9637a[_0x8895('0x6e')],_0xd9637a[_0x8895('0x6a')]);var _0x4deccc=_0xd9637a['applicationdata'][_0x8895('0x6f')]('=');var _0x565bb8=_0x4deccc[0x0][_0x8895('0x70')](/cdr\((.*)\)/);if(_0x565bb8)this['applications'][_0xd9637a[_0x8895('0x17')]][_0x565bb8[0x1]]=_0x4deccc[0x1];}}}}catch(_0x452756){logger['error'](_0x8895('0x71'),_0xd9637a[_0x8895('0x17')],util['inspect'](_0x452756,{'showHidden':![],'depth':null}));}};module[_0x8895('0x72')]=VoiceDialReport;
\ No newline at end of file
+var _0x687b=['varset','syncVarSet','hangup','syncHangup','prototype','isUndefined','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','event','privilege','info','membername','interface','applications','voice:outbound','voice_outbound_channel:save','custom:dialbegin','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','format','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%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','variable','outboundrouteid','value','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','endtime','duration','starttime','answered','holdtime','seconds','billableseconds','diff','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','set','applicationdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd'];(function(_0x261b93,_0x4b591e){var _0x51a544=function(_0x4e5082){while(--_0x4e5082){_0x261b93['push'](_0x261b93['shift']());}};_0x51a544(++_0x4b591e);}(_0x687b,0x14a));var _0xb687=function(_0x8efbee,_0x107af1){_0x8efbee=_0x8efbee-0x0;var _0x1e92c1=_0x687b[_0x8efbee];return _0x1e92c1;};'use strict';var _=require(_0xb687('0x0'));var moment=require(_0xb687('0x1'));var util=require(_0xb687('0x2'));var Redis=require(_0xb687('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xb687('0x4'));var ami=require(_0xb687('0x5'));config[_0xb687('0x6')]=_[_0xb687('0x7')](config[_0xb687('0x6')],{'host':_0xb687('0x8'),'port':0x18eb});var io=require(_0xb687('0x9'))(new Redis(config[_0xb687('0x6')]));function VoiceDialReport(_0x47ffea){this[_0xb687('0xa')]=_0x47ffea['outboundChannels'];this[_0xb687('0xb')]=_0x47ffea[_0xb687('0xb')];this['applications']={};this[_0xb687('0xc')]={};ami['on'](_0xb687('0xd'),this[_0xb687('0xe')][_0xb687('0xf')](this));ami['on'](_0xb687('0x10'),this[_0xb687('0x11')][_0xb687('0xf')](this));ami['on'](_0xb687('0x12'),this[_0xb687('0x13')]['bind'](this));ami['on'](_0xb687('0x14'),this[_0xb687('0x15')][_0xb687('0xf')](this));}VoiceDialReport[_0xb687('0x16')]['isNotNull']=function(_0x4c97ed){return _0x4c97ed!==null&&!_[_0xb687('0x17')](_0x4c97ed);};VoiceDialReport[_0xb687('0x16')]['emit']=function(_0x108fd0,_0x2f1ac0,_0x1f1f35){io['to'](_0x108fd0)[_0xb687('0x18')](_0x2f1ac0,_0x1f1f35);};VoiceDialReport[_0xb687('0x16')][_0xb687('0xe')]=function(_0x30622f){try{if(this[_0xb687('0x19')](_0x30622f)){logger[_0xb687('0x1a')](_0xb687('0x1b'),_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x30622f,{'showHidden':![],'depth':null}));if(this['channels'][_0x30622f[_0xb687('0x1c')]]){_[_0xb687('0x1e')](this[_0xb687('0xa')][_0x30622f['uniqueid']],{'starttime':moment()['format'](_0xb687('0x1f')),'lastevent':_0xb687('0x20'),'interface':_0x30622f[_0xb687('0x21')]['substring'](0x0,_0x30622f[_0xb687('0x21')]['lastIndexOf']('-')),'membername':_0x30622f[_0xb687('0x21')][_0xb687('0x22')](_0x30622f[_0xb687('0x21')][_0xb687('0x23')]('/')+0x1,_0x30622f['channel'][_0xb687('0x23')]('-'))},_['omit'](_0x30622f,[_0xb687('0x24'),_0xb687('0x25')]));logger[_0xb687('0x26')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x30622f[_0xb687('0x1c')],this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]][_0xb687('0x27')],this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]][_0xb687('0x28')]);logger[_0xb687('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0xb687('0x29')][_0x30622f[_0xb687('0x1c')]])_[_0xb687('0x1e')](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],this[_0xb687('0x29')][_0x30622f['uniqueid']]);this[_0xb687('0x18')](_0xb687('0x2a'),_0xb687('0x2b'),this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]]);logger[_0xb687('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x30622f[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xb687('0x18')](_0xb687('0x2c'),this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]]);}}}catch(_0xf1f0dd){logger['error'](_0xb687('0x2d'),_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](_0xf1f0dd,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x11')]=function(_0x263834){try{if(this[_0xb687('0x19')](_0x263834)){logger[_0xb687('0x1a')](_0xb687('0x2e'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x263834,{'showHidden':![],'depth':null}));if(this['channels'][_0x263834['uniqueid']]){this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]][_0xb687('0x2f')]=_0x263834[_0xb687('0x2f')];if(_0x263834['dialstatus']==='ANSWER'){this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]]['connectedlinenum']=_0x263834[_0xb687('0x30')];this[_0xb687('0xa')][_0x263834['uniqueid']][_0xb687('0x31')]=_0x263834['connectedlinename'];this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]][_0xb687('0x32')]=moment()[_0xb687('0x33')](_0xb687('0x1f'));this[_0xb687('0xa')][_0x263834['uniqueid']][_0xb687('0x34')]=_0xb687('0x35');logger[_0xb687('0x26')](_0xb687('0x36'),_0x263834['uniqueid'],_0x263834[_0xb687('0x21')][_0xb687('0x22')](_0x263834[_0xb687('0x21')][_0xb687('0x23')]('/')+0x1,_0x263834[_0xb687('0x21')]['lastIndexOf']('-')));logger[_0xb687('0x1a')](_0xb687('0x37'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0xb687('0xa')][_0x263834['uniqueid']]);}logger[_0xb687('0x1a')](_0xb687('0x38'),_0x263834['uniqueid'],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x263834['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb687('0x18')](_0xb687('0x2a'),_0xb687('0x2b'),this['channels'][_0x263834[_0xb687('0x1c')]]);}}}catch(_0x9cffb2){logger[_0xb687('0x39')](_0xb687('0x3a'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x9cffb2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')]['syncVarSet']=function(_0x25ddd1){try{if(this['isNotNull'](_0x25ddd1)){logger['debug'](_0xb687('0x3b'),_0x25ddd1[_0xb687('0x1c')],util['inspect'](_0x25ddd1,{'showHidden':![],'depth':null}));this[_0xb687('0x3c')](_0x25ddd1['uniqueid'],_[_0xb687('0x3d')](_0x25ddd1[_0xb687('0x3e')])[0x0],_0x25ddd1['value']);if(this[_0xb687('0x19')](_0x25ddd1[_0xb687('0x3e')])&&this['isNotNull'](_0x25ddd1[_0xb687('0x3e')][_0xb687('0x3f')])){if(_[_0xb687('0x17')](this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]])){this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]]={'routeId':_0x25ddd1[_0xb687('0x40')],'variables':this[_0xb687('0xc')][_0x25ddd1[_0xb687('0x1c')]],'motionChannel':_0xb687('0x41')};logger[_0xb687('0x26')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x25ddd1[_0xb687('0x1c')],_0x25ddd1['variable'][_0xb687('0x3f')],_[_0xb687('0x3d')](_0x25ddd1[_0xb687('0x3e')])[0x0],_0x25ddd1[_0xb687('0x40')]);logger[_0xb687('0x1a')](_0xb687('0x42'),_0x25ddd1['uniqueid'],util['inspect'](this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this[_0xb687('0x18')](_0xb687('0x2a'),'voice_outbound_channel:save',this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]]);}}}}catch(_0x19a828){logger[_0xb687('0x39')]('[%s][voiceDialReport][varset]',_0x25ddd1[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x19a828,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x3c')]=function(_0x4d9b83,_0x4c983b,_0x3f654a){var _0x170b26=[_0xb687('0x43'),'rtpaudioqosbridged','rtpaudioqosjitter',_0xb687('0x44'),_0xb687('0x45'),_0xb687('0x46'),_0xb687('0x47'),_0xb687('0x48'),_0xb687('0x49'),_0xb687('0x4a'),_0xb687('0x4b'),'bridgepvtcallid',_0xb687('0x4c'),_0xb687('0x4d'),_0xb687('0x4e'),'memberlastcall','membername','memberpenalty','memberrealtime'];if(!_[_0xb687('0x4f')](_0x4c983b)&&!_[_0xb687('0x50')](_0x170b26,_0x4c983b)){if(_[_0xb687('0x17')](this[_0xb687('0xc')][_0x4d9b83])){this[_0xb687('0xc')][_0x4d9b83]={};}this[_0xb687('0xc')][_0x4d9b83][_0x4c983b]=_0x3f654a;}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x15')]=function(_0x44ffc0){try{if(this[_0xb687('0x19')](_0x44ffc0)){logger[_0xb687('0x1a')](_0xb687('0x51'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x44ffc0,{'showHidden':![],'depth':null}));if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]]){logger[_0xb687('0x26')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x44ffc0['uniqueid'],_0x44ffc0[_0xb687('0x52')]);this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')]=moment()['format'](_0xb687('0x1f'));this[_0xb687('0xa')][_0x44ffc0['uniqueid']][_0xb687('0x54')]=moment(this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')])['diff'](this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x55')],'seconds');this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x34')]='complete';this[_0xb687('0xb')]['total']+=0x1;if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x32')]){this[_0xb687('0xb')][_0xb687('0x56')]+=0x1;this['channels'][_0x44ffc0['uniqueid']][_0xb687('0x57')]=moment(this['channels'][_0x44ffc0['uniqueid']]['answertime'])['diff'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x55')],_0xb687('0x58'));this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x59')]=moment(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')])[_0xb687('0x5a')](this['channels'][_0x44ffc0['uniqueid']][_0xb687('0x32')],'seconds');this[_0xb687('0xb')][_0xb687('0x5b')]+=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x57')]||0x0;this['outbound'][_0xb687('0x5c')]+=this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x59')];}this[_0xb687('0xb')][_0xb687('0x5d')]+=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x54')];logger['debug'](_0xb687('0x5e'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb687('0x5f'),this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]]);logger[_0xb687('0x1a')](_0xb687('0x60'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xb687('0x18')](_0xb687('0x61'),this['channels'][_0x44ffc0[_0xb687('0x1c')]]);logger[_0xb687('0x1a')](_0xb687('0x62'),_0x44ffc0[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xb687('0x2a'),_0xb687('0x63'),this[_0xb687('0xb')]);logger['info'](_0xb687('0x64'),JSON[_0xb687('0x65')](this['channels'][_0x44ffc0[_0xb687('0x1c')]]));logger[_0xb687('0x1a')](_0xb687('0x66'),_0x44ffc0[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xb687('0x2a'),_0xb687('0x67'),this['channels'][_0x44ffc0['uniqueid']]);delete this[_0xb687('0xa')][_0x44ffc0['uniqueid']];}else if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]]){this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]][_0xb687('0x1c')]=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]][_0xb687('0x69')];}if(this['variables'][_0x44ffc0[_0xb687('0x1c')]]){delete this[_0xb687('0xc')][_0x44ffc0[_0xb687('0x1c')]];}}}catch(_0x3c49dc){logger[_0xb687('0x39')](_0xb687('0x6a'),_0x44ffc0['uniqueid'],util[_0xb687('0x1d')](_0x3c49dc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')]['syncNewExten']=function(_0x26a9b6){try{if(this[_0xb687('0x19')](_0x26a9b6)){logger[_0xb687('0x1a')](_0xb687('0x6b'),_0x26a9b6['uniqueid'],util[_0xb687('0x1d')](_0x26a9b6,{'showHidden':![],'depth':null}));if(_0x26a9b6['application']['toLowerCase']()===_0xb687('0x6c')){_0x26a9b6['applicationdata']=(_0x26a9b6['appdata']||_0x26a9b6[_0xb687('0x6d')])['toLowerCase']();if(_[_0xb687('0x6e')](_0x26a9b6[_0xb687('0x6d')],'cdr(')){if(_[_0xb687('0x17')](this[_0xb687('0x29')][_0x26a9b6['uniqueid']]))this[_0xb687('0x29')][_0x26a9b6[_0xb687('0x1c')]]={};logger[_0xb687('0x26')](_0xb687('0x6f'),_0x26a9b6[_0xb687('0x1c')],_0x26a9b6[_0xb687('0x70')],_0x26a9b6[_0xb687('0x6d')]);var _0x2ce516=_0x26a9b6[_0xb687('0x6d')][_0xb687('0x71')]('=');var _0x3a7a4a=_0x2ce516[0x0]['match'](/cdr\((.*)\)/);if(_0x3a7a4a)this[_0xb687('0x29')][_0x26a9b6['uniqueid']][_0x3a7a4a[0x1]]=_0x2ce516[0x1];}}}}catch(_0x5a00c7){logger[_0xb687('0x39')](_0xb687('0x72'),_0x26a9b6[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x5a00c7,{'showHidden':![],'depth':null}));}};module[_0xb687('0x73')]=VoiceDialReport;
\ No newline at end of file
index 9bb58d7..126d73b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb9=['debug','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','isNotNull','isUndefined','loopQueueShow','queues','[voiceQueueReport][queues]','queuesummary','then','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin','available','talking','emitVoiceQueueSummary','custom:queuesummary','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','push','queuecallerjoin','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','membername','queuecallerexit','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','channel','toLowerCase','local/','queuecallerexitAt','add','seconds','FORWARDTRANSFER','transfer','FORWARD','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','linkedid','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','variable','value','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','handleHangup','length','sumHoldTime','diff','sumDuration','milliseconds','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','transfertype','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BlindTransfer','context','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','mohtime','[%s][voiceQueueReport][musiconholdstop]','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','socket.io-emitter','enqueue','tail','finally','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','syncQueueSummaryComplete','syncQueueCallerJoin','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','agentconnect','varset','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','pTalking','waiting','prototype','clearZombieChannels','switch','isNil','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','error','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','format','voice:queue:%s','name','voice_queue_channel:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','strategy','loggedIn','sumBillable','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify'];(function(_0x2e562b,_0x5e9fa7){var _0x545427=function(_0x464c0c){while(--_0x464c0c){_0x2e562b['push'](_0x2e562b['shift']());}};_0x545427(++_0x5e9fa7);}(_0x5fb9,0x94));var _0x95fb=function(_0x5865c0,_0x40072b){_0x5865c0=_0x5865c0-0x0;var _0x53f20f=_0x5fb9[_0x5865c0];return _0x53f20f;};'use strict';var _=require(_0x95fb('0x0'));var moment=require('moment');var util=require(_0x95fb('0x1'));var md5=require(_0x95fb('0x2'));var Redis=require(_0x95fb('0x3'));var config=require(_0x95fb('0x4'));var logger=require(_0x95fb('0x5'))(_0x95fb('0x6'));var ami=require(_0x95fb('0x7'));var QueueReport=require(_0x95fb('0x8'));config[_0x95fb('0x9')]=_[_0x95fb('0xa')](config[_0x95fb('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x95fb('0xb'))(new Redis(config[_0x95fb('0x9')]));var Sequence=function(){};Sequence['prototype'][_0x95fb('0xc')]=function(_0x5b2945){this[_0x95fb('0xd')]=this[_0x95fb('0xd')]?this[_0x95fb('0xd')][_0x95fb('0xe')](_0x5b2945):_0x5b2945();};function VoiceQueueReport(_0x2240c8){this[_0x95fb('0xf')]=new Sequence();this['queueReports']={};this['agents']=_0x2240c8[_0x95fb('0x10')];this[_0x95fb('0x11')]=_0x2240c8[_0x95fb('0x12')];this[_0x95fb('0x13')]=_0x2240c8[_0x95fb('0x13')];this[_0x95fb('0x14')]=!![];this[_0x95fb('0x15')]=_0x2240c8[_0x95fb('0x15')];this[_0x95fb('0x16')]={};ami['on']('queuesummary',this[_0x95fb('0x17')][_0x95fb('0x18')](this));ami['on']('queuesummarycomplete',this[_0x95fb('0x19')][_0x95fb('0x18')](this));ami['on']('queuecallerjoin',this[_0x95fb('0x1a')][_0x95fb('0x18')](this));ami['on']('queuecallerabandon',this[_0x95fb('0x1b')]['bind'](this));ami['on']('queuecallerleave',this[_0x95fb('0x1c')][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x1d'),this['syncAgentComplete'][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x1e'),this['syncAgentConnect'][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x1f'),this['syncVarSet']['bind'](this));ami['on']('hangup',this[_0x95fb('0x20')][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x21'),this[_0x95fb('0x22')][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x23'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x95fb('0x24'),this['syncMusicOnHoldStop'][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x25'),this[_0x95fb('0x26')][_0x95fb('0x18')](this));ami['on'](_0x95fb('0x27'),this['syncBlindTransfer']['bind'](this));this[_0x95fb('0x28')]();this['loopQueueShow']();}function clearChannels(_0x3d3aa9){if(!_[_0x95fb('0x29')](_0x3d3aa9)){for(var _0x4044ee in _0x3d3aa9){if(_0x3d3aa9[_0x95fb('0x2a')](_0x4044ee)){delete _0x3d3aa9[_0x4044ee];}}}}function clearCampaigns(_0x11eb95){if(!_[_0x95fb('0x29')](_0x11eb95)){for(var _0x25e65d in _0x11eb95){if(_0x11eb95[_0x95fb('0x2a')](_0x25e65d)){_0x11eb95[_0x25e65d][_0x95fb('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x3e2323){if(!_[_0x95fb('0x29')](_0x3e2323)){for(var _0x413641 in _0x3e2323){if(_0x3e2323[_0x95fb('0x2a')](_0x413641)){_0x3e2323[_0x413641][_0x95fb('0x2b')]=0x0;_0x3e2323[_0x413641]['talking']=0x0;_0x3e2323[_0x413641][_0x95fb('0x2c')]=0x0;_0x3e2323[_0x413641][_0x95fb('0x2d')]=0x0;_0x3e2323[_0x413641]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x41a048){if(!_['isEmpty'](_0x41a048)){for(var _0x407327 in _0x41a048){if(_0x41a048[_0x95fb('0x2a')](_0x407327)){_0x41a048[_0x407327]['unlockRR']=!![];}}}}VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x2f')]=function(){var _0x592f51=this;for(var _0x5cf3c8 in this['channels']){if(this[_0x95fb('0x11')]['hasOwnProperty'](_0x5cf3c8)&&!this[_0x95fb('0x11')][_0x5cf3c8][_0x95fb('0x30')]){this[_0x95fb('0xf')][_0x95fb('0xc')](function(){if(!_[_0x95fb('0x31')](_0x592f51[_0x95fb('0x11')][_0x5cf3c8])){return ami[_0x95fb('0x32')]({'action':_0x95fb('0x33'),'channel':_0x592f51[_0x95fb('0x11')][_0x5cf3c8]['channel']})[_0x95fb('0x34')](function(_0x2c2006){if(_0x2c2006[_0x95fb('0x35')]===_0x95fb('0x36')){setTimeout(function(){if(_0x592f51[_0x95fb('0x11')][_0x5cf3c8]){delete _0x592f51['channels'][_0x5cf3c8];logger['error'](_0x95fb('0x37'),_0x5cf3c8,util[_0x95fb('0x38')](_0x2c2006,{'showHidden':![],'depth':null}));}if(_0x592f51[_0x95fb('0x39')][_0x5cf3c8]){delete _0x592f51['queueReports'][_0x5cf3c8];logger[_0x95fb('0x3a')](_0x95fb('0x3b'),_0x5cf3c8,util[_0x95fb('0x38')](_0x2c2006,{'showHidden':![],'depth':null}));}if(_0x592f51[_0x95fb('0x16')][_0x5cf3c8]){delete _0x592f51[_0x95fb('0x16')][_0x5cf3c8];logger['error'](_0x95fb('0x3c'),_0x5cf3c8,util[_0x95fb('0x38')](_0x2c2006,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x22')]=function(){logger[_0x95fb('0x3a')](_0x95fb('0x3d'));clearChannels(this[_0x95fb('0x11')]);this[_0x95fb('0x3e')](this[_0x95fb('0x39')]);clearAgentBooked(this[_0x95fb('0x10')]);clearVoiceQueues(this[_0x95fb('0x13')]);clearCampaigns(this[_0x95fb('0x15')]);};VoiceQueueReport[_0x95fb('0x2e')]['clearQueueReport']=function(_0x171e2a){var _0x19219a=this;if(!_[_0x95fb('0x29')](_0x171e2a)){for(var _0x449f18 in _0x171e2a){if(_0x171e2a[_0x95fb('0x2a')](_0x449f18)){_0x19219a[_0x95fb('0x3f')](_0x171e2a[_0x449f18],_0x95fb('0x40'));delete _0x171e2a[_0x449f18];}}}};VoiceQueueReport['prototype'][_0x95fb('0x41')]=function(_0x188326,_0x401856,_0x229f87){io['to'](_0x188326)[_0x95fb('0x41')](_0x401856,_0x229f87);};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x42')]=function(_0x2a51b3,_0x2e22e6){logger['debug'](_0x95fb('0x43')+_0x2e22e6+_0x95fb('0x44'),_0x2a51b3['uniqueid'],util[_0x95fb('0x38')](_0x2a51b3,{'showHidden':![],'depth':null}));this[_0x95fb('0x41')](util[_0x95fb('0x45')](_0x95fb('0x46'),_0x2a51b3[_0x95fb('0x47')]),_0x95fb('0x48'),_0x2a51b3);io[_0x95fb('0x41')]('voice_queue_presence:save',_0x2a51b3);};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x3f')]=function(_0x776c13,_0xe45290){logger['debug'](_0x95fb('0x43')+_0xe45290+_0x95fb('0x49'),_0x776c13[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x776c13,{'showHidden':![],'depth':null}));if(_0x776c13[_0x95fb('0x4b')]===_0x95fb('0x4c'))return;this['emit'](util[_0x95fb('0x45')](_0x95fb('0x46'),_0x776c13[_0x95fb('0x47')]),_0x95fb('0x4d'),_0x776c13);io['emit'](_0x95fb('0x4e'),_0x776c13);};VoiceQueueReport[_0x95fb('0x2e')]['emitVoiceQueueSummary']=function(_0x15080a,_0x5551e8){if(_0x15080a[_0x95fb('0x4f')]===_0x95fb('0x50')){var _0x22bfe0={'id':_0x15080a['id'],'name':_0x15080a[_0x95fb('0x47')],'strategy':_0x15080a[_0x95fb('0x51')],'answered':_0x15080a['answered'],'available':_0x15080a['available'],'loggedIn':_0x15080a[_0x95fb('0x52')],'pTalking':_0x15080a[_0x95fb('0x2c')],'sumBillable':_0x15080a[_0x95fb('0x53')],'sumDuration':_0x15080a['sumDuration'],'sumHoldTime':_0x15080a['sumHoldTime']||0x0,'talking':_0x15080a['talking'],'total':_0x15080a[_0x95fb('0x54')],'type':_0x15080a[_0x95fb('0x4f')],'unmanaged':_0x15080a[_0x95fb('0x55')],'abandoned':_0x15080a[_0x95fb('0x56')],'waiting':_0x15080a[_0x95fb('0x2d')]};if(_0x15080a[_0x95fb('0x57')]){_0x22bfe0['Trunk']={'id':_0x15080a[_0x95fb('0x57')]['id'],'name':_0x15080a[_0x95fb('0x57')][_0x95fb('0x47')],'active':_0x15080a[_0x95fb('0x57')]['active'],'callerid':_0x15080a[_0x95fb('0x57')][_0x95fb('0x58')]};}if(_0x15080a[_0x95fb('0x59')]){_0x22bfe0[_0x95fb('0x59')]={'id':_0x15080a[_0x95fb('0x59')]['id'],'name':_0x15080a[_0x95fb('0x59')][_0x95fb('0x47')]};}var _0x138821=md5(JSON[_0x95fb('0x5a')](_0x22bfe0));if(_0x15080a[_0x95fb('0x2')]!==_0x138821){_0x15080a[_0x95fb('0x2')]=_0x138821;logger[_0x95fb('0x5b')](_0x95fb('0x5c')+_0x5551e8+_0x95fb('0x5d'),util[_0x95fb('0x38')](_0x22bfe0,{'showHidden':![],'depth':null}));this[_0x95fb('0x41')](util[_0x95fb('0x45')](_0x95fb('0x46'),_0x22bfe0[_0x95fb('0x47')]),'voice_queue:save',_0x22bfe0);}}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x5e')]=function(_0x3bbdb5){return _0x3bbdb5!==null&&!_[_0x95fb('0x5f')](_0x3bbdb5);};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x60')]=function(){var _0x41c077=this;setInterval(function(){_0x41c077['clearZombieChannels']();ami[_0x95fb('0x32')]({'action':_0x95fb('0x61')})[_0x95fb('0x34')](function(_0x3b0d87){logger['error'](_0x95fb('0x62'),util[_0x95fb('0x38')](_0x3b0d87,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x28')]=function(){var _0x60629f=this;setInterval(function(){if(_0x60629f[_0x95fb('0x14')]){return ami[_0x95fb('0x32')]({'action':_0x95fb('0x63')})[_0x95fb('0x64')](function(){_0x60629f['flagQueueSummary']=![];})[_0x95fb('0x34')](function(_0x18f3e9){logger[_0x95fb('0x3a')]('[voiceQueueReport][queuesummary]',util[_0x95fb('0x38')](_0x18f3e9,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x95fb('0x2e')]['syncQueueSummary']=function(_0x58b0ec){try{if(this[_0x95fb('0x5e')](_0x58b0ec)&&this[_0x95fb('0x5e')](_0x58b0ec[_0x95fb('0x65')])){logger[_0x95fb('0x5b')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x58b0ec,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x58b0ec[_0x95fb('0x65')]]){logger[_0x95fb('0x66')](_0x95fb('0x67'),_0x58b0ec[_0x95fb('0x65')]);var _0x16d0c7=_['countBy'](this['channels'],_0x95fb('0x65'))[_0x58b0ec[_0x95fb('0x65')]]||0x0;var _0x544d77=_0x16d0c7-_0x58b0ec[_0x95fb('0x68')];if(this['voiceQueues'][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x2d')]!==_[_0x95fb('0x69')](_0x58b0ec['callers'])||this[_0x95fb('0x13')][_0x58b0ec['queue']][_0x95fb('0x52')]!==_[_0x95fb('0x69')](_0x58b0ec[_0x95fb('0x6a')])||this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x6b')]!==_[_0x95fb('0x69')](_0x58b0ec[_0x95fb('0x6b')])||this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x6c')]!==_0x544d77){this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x2d')]=_[_0x95fb('0x69')](_0x58b0ec[_0x95fb('0x68')]);this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x52')]=_[_0x95fb('0x69')](_0x58b0ec['loggedin']);this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]][_0x95fb('0x6b')]=_['toNumber'](_0x58b0ec[_0x95fb('0x6b')]);this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]]['talking']=_0x544d77>0x0?_0x544d77:0x0;this[_0x95fb('0x13')][_0x58b0ec['queue']][_0x95fb('0x6c')]=this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]]['talking']>_[_0x95fb('0x69')](_0x58b0ec[_0x95fb('0x6a')])?_['toNumber'](_0x58b0ec[_0x95fb('0x6a')]):this['voiceQueues'][_0x58b0ec[_0x95fb('0x65')]]['talking'];this[_0x95fb('0x6d')](this[_0x95fb('0x13')][_0x58b0ec['queue']],'queuesummary');}logger[_0x95fb('0x5b')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x95fb('0x38')](this['voiceQueues'][_0x58b0ec[_0x95fb('0x65')]],{'showHidden':![],'depth':null}));ami[_0x95fb('0x41')](_0x95fb('0x6e'),this[_0x95fb('0x13')][_0x58b0ec[_0x95fb('0x65')]]);}}}catch(_0x455ae5){logger[_0x95fb('0x3a')](_0x95fb('0x6f'),util[_0x95fb('0x38')](_0x455ae5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')]['syncQueueSummaryComplete']=function(_0x367775){logger['debug'](_0x95fb('0x70'),util['inspect'](_0x367775,{'showHidden':![],'depth':null}));ami[_0x95fb('0x41')](_0x95fb('0x71'),{});this['flagQueueSummary']=!![];};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x1a')]=function(_0x5b664f){try{if(this[_0x95fb('0x5e')](_0x5b664f)){logger['debug'](_0x95fb('0x72'),_0x5b664f[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x5b664f,{'showHidden':![],'depth':null}));if(_[_0x95fb('0x5f')](this[_0x95fb('0x39')][_0x5b664f[_0x95fb('0x4a')]]))this[_0x95fb('0x39')][_0x5b664f[_0x95fb('0x4a')]]=[];if(_[_0x95fb('0x5f')](this[_0x95fb('0x11')][_0x5b664f[_0x95fb('0x4a')]]))this['channels'][_0x5b664f[_0x95fb('0x4a')]]={};var _0x26fad0=new QueueReport();_0x26fad0[_0x95fb('0x47')]=_0x5b664f[_0x95fb('0x65')];_0x26fad0['type']=this['voiceQueues'][_0x26fad0[_0x95fb('0x47')]]&&this['voiceQueues'][_0x26fad0[_0x95fb('0x47')]][_0x95fb('0x4f')]?this[_0x95fb('0x13')][_0x26fad0[_0x95fb('0x47')]][_0x95fb('0x4f')]||_0x95fb('0x50'):'inbound';_0x26fad0[_0x95fb('0x65')]=_0x5b664f[_0x95fb('0x65')];_0x26fad0[_0x95fb('0x73')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));_0x26fad0['position']=_0x5b664f['position'];_0x26fad0[_0x95fb('0x75')]=_0x5b664f[_0x95fb('0x75')];_0x26fad0['uniqueid']=_0x5b664f[_0x95fb('0x4a')];_0x26fad0['routealias']=this[_0x95fb('0x11')][_0x5b664f['uniqueid']][_0x95fb('0x76')];logger[_0x95fb('0x66')](_0x95fb('0x77'),_0x26fad0[_0x95fb('0x47')],_0x26fad0['type']);_[_0x95fb('0x78')](_0x26fad0,_['pick'](_0x5b664f,_[_0x95fb('0x79')](_0x26fad0)));this[_0x95fb('0x39')][_0x5b664f['uniqueid']][_0x95fb('0x7a')](_0x26fad0);this[_0x95fb('0x11')][_0x5b664f['uniqueid']]=_0x26fad0;this[_0x95fb('0x42')](_0x26fad0,_0x95fb('0x7b'));}}catch(_0x71ac24){logger[_0x95fb('0x3a')]('[%s][voiceQueueReport][queuecallerjoin]',_0x5b664f[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x71ac24,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x1b')]=function(_0x569fb4){try{if(this[_0x95fb('0x5e')](_0x569fb4)){logger[_0x95fb('0x5b')]('[%s][voiceQueueReport][queuecallerabandon]',_0x569fb4[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x569fb4,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x569fb4['uniqueid']]){var _0x17a9be=_[_0x95fb('0x7c')](this['queueReports'][_0x569fb4[_0x95fb('0x4a')]]);_0x17a9be['queuecallercomplete']=![];_0x17a9be[_0x95fb('0x7d')]=null;_0x17a9be[_0x95fb('0x7e')]=_0x569fb4[_0x95fb('0x7e')];_0x17a9be[_0x95fb('0x7f')]=_0x569fb4[_0x95fb('0x7f')];_0x17a9be[_0x95fb('0x80')]=!![];_0x17a9be[_0x95fb('0x81')]=moment()['format'](_0x95fb('0x74'));_0x17a9be[_0x95fb('0x4b')]=_0x95fb('0x82');_0x17a9be[_0x95fb('0x83')]=null;logger[_0x95fb('0x66')](_0x95fb('0x84'),_0x17a9be[_0x95fb('0x47')],_0x17a9be[_0x95fb('0x4f')]);this['channels'][_0x569fb4[_0x95fb('0x4a')]]=_0x17a9be;this[_0x95fb('0x3f')](_0x17a9be,_0x95fb('0x80'));}}}catch(_0x24b7ad){logger[_0x95fb('0x3a')](_0x95fb('0x85'),_0x569fb4[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x24b7ad,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x1c')]=function(_0x320423){try{if(this['isNotNull'](_0x320423)){logger['debug'](_0x95fb('0x86'),_0x320423['uniqueid'],util[_0x95fb('0x38')](_0x320423,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x320423[_0x95fb('0x4a')]]){var _0x331690=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x320423['uniqueid']]);_0x331690[_0x95fb('0x87')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));_0x331690[_0x95fb('0x88')]=_0x320423['connectedlinenum'];_0x331690[_0x95fb('0x89')]=_0x320423[_0x95fb('0x89')];logger[_0x95fb('0x66')](_0x95fb('0x8a'),_0x331690[_0x95fb('0x47')],_0x331690[_0x95fb('0x4f')],_0x320423[_0x95fb('0x88')],_0x320423[_0x95fb('0x89')]);this[_0x95fb('0x11')][_0x320423[_0x95fb('0x4a')]]=_0x331690;this[_0x95fb('0x42')](_0x331690,'queuecallerleave');}}}catch(_0xed7724){logger[_0x95fb('0x3a')](_0x95fb('0x86'),_0x320423[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0xed7724,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')]['syncAgentConnect']=function(_0x308005){try{if(this[_0x95fb('0x5e')](_0x308005)){logger[_0x95fb('0x5b')](_0x95fb('0x8b'),_0x308005[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x308005,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x308005['uniqueid']]){var _0x1aade6=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x308005[_0x95fb('0x4a')]]);_0x1aade6[_0x95fb('0x8c')]=!![];_0x1aade6[_0x95fb('0x4b')]=_0x95fb('0x8d');logger[_0x95fb('0x66')](_0x95fb('0x8e'),_0x1aade6[_0x95fb('0x47')],_0x1aade6[_0x95fb('0x4f')]);}}}catch(_0x318168){logger[_0x95fb('0x3a')]('[%s][voiceQueueReport][agentconnect]',_0x308005[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x318168,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x8f')]=function(_0x278913){try{if(this[_0x95fb('0x5e')](_0x278913)){logger[_0x95fb('0x5b')]('[%s][voiceQueueReport][agentcomplete]',_0x278913[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x278913,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x278913[_0x95fb('0x4a')]]){var _0x2eed9e=_['last'](this[_0x95fb('0x39')][_0x278913['uniqueid']]);_0x2eed9e['queuecallerabandon']=![];_0x2eed9e[_0x95fb('0x81')]=null;_0x2eed9e['assigned']=!![];_0x2eed9e[_0x95fb('0x83')]=_0x278913[_0x95fb('0x90')];_0x2eed9e[_0x95fb('0x7e')]=_0x278913['holdtime'];_0x2eed9e[_0x95fb('0x8c')]=!![];_0x2eed9e[_0x95fb('0x91')]=![];_0x2eed9e['queuecallerexitAt']=null;if(!_0x2eed9e['transfer']){if(_0x278913[_0x95fb('0x92')]=='transfer'){_0x2eed9e[_0x95fb('0x4b')]=_0x95fb('0x93');logger[_0x95fb('0x66')](_0x95fb('0x94'),_0x2eed9e[_0x95fb('0x47')],_0x2eed9e[_0x95fb('0x4f')]);}else{if(_['startsWith'](_0x278913[_0x95fb('0x95')][_0x95fb('0x96')](),_0x95fb('0x97'))){if(this[_0x95fb('0x39')][_0x278913['linkedid']]){var _0x23c280=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x278913['linkedid']]);_0x23c280[_0x95fb('0x8c')]=![];_0x23c280['queuecallerexit']=!![];_0x23c280[_0x95fb('0x98')]=moment(_0x2eed9e[_0x95fb('0x73')])[_0x95fb('0x99')](_0x278913[_0x95fb('0x7e')],_0x95fb('0x9a'))[_0x95fb('0x45')](_0x95fb('0x74'));_0x23c280[_0x95fb('0x4b')]=_0x95fb('0x9b');_0x23c280[_0x95fb('0x9c')]=!![];_0x23c280['transfertype']=_0x95fb('0x9d');_0x23c280['transferexten']=_0x278913[_0x95fb('0x9e')];_0x23c280[_0x95fb('0x9f')]=_0x278913[_0x95fb('0x4a')];logger['info'](_0x95fb('0xa0'),_0x23c280[_0x95fb('0x47')],_0x23c280[_0x95fb('0x4f')]);var _0x167551=this[_0x95fb('0x39')][_0x278913[_0x95fb('0xa1')]];this[_0x95fb('0x39')][_0x278913[_0x95fb('0xa1')]]=this['queueReports'][_0x278913[_0x95fb('0x4a')]];this[_0x95fb('0x39')][_0x278913['uniqueid']]=_0x167551;}}else{_0x2eed9e[_0x95fb('0x4b')]=_0x95fb('0xa2')+_0x278913[_0x95fb('0x92')]['toUpperCase']();logger['info'](_0x95fb('0xa3'),_0x2eed9e[_0x95fb('0x47')],_0x2eed9e['type'],_0x2eed9e[_0x95fb('0x4b')]);}}}this[_0x95fb('0x11')][_0x278913[_0x95fb('0x4a')]]=_0x2eed9e;this[_0x95fb('0x3f')](_0x2eed9e,'agentcomplete');}}}catch(_0x118d47){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x278913['uniqueid'],util[_0x95fb('0x38')](_0x118d47,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0xa4')]=function(_0x35126c){try{if(this['isNotNull'](_0x35126c)){logger['debug'](_0x95fb('0xa5'),_0x35126c[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x35126c,{'showHidden':![],'depth':null}));this[_0x95fb('0xa6')](_0x35126c[_0x95fb('0x4a')],_[_0x95fb('0x79')](_0x35126c[_0x95fb('0xa7')])[0x0],_0x35126c[_0x95fb('0xa8')]);if(this['queueReports'][_0x35126c['uniqueid']]){var _0x360f79=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x35126c['uniqueid']]);if(_0x360f79){if(this[_0x95fb('0x5e')](_0x35126c[_0x95fb('0xa7')])&&this['isNotNull'](_0x35126c[_0x95fb('0xa7')]['queuestatus'])){switch(_0x35126c[_0x95fb('0xa8')]){case'CONTINUE':_0x360f79['queuecallerexit']=![];_0x360f79[_0x95fb('0x98')]=null;break;case'TIMEOUT':_0x360f79[_0x95fb('0xa9')]='timeout';_0x360f79[_0x95fb('0x91')]=!![];_0x360f79['queuecallerexitAt']=moment()[_0x95fb('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x360f79[_0x95fb('0x87')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));logger[_0x95fb('0x5b')](_0x95fb('0xaa'),_0x35126c['uniqueid'],util[_0x95fb('0x38')](_0x360f79,{'showHidden':![],'depth':null}));ami[_0x95fb('0x41')]('custom:timeout',_0x360f79);break;default:_0x360f79[_0x95fb('0x91')]=!![];_0x360f79[_0x95fb('0x98')]=moment()[_0x95fb('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x360f79[_0x95fb('0x87')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));}_0x360f79[_0x95fb('0x80')]=![];_0x360f79['queuecallerabandonAt']=null;_0x360f79['queuecallerexitreason']=_0x35126c[_0x95fb('0xa8')];this[_0x95fb('0x11')][_0x35126c[_0x95fb('0x4a')]]=_0x360f79;this['emitVoiceQueueChannelRemove'](_0x360f79,_0x95fb('0x1f'));}else if(this[_0x95fb('0x5e')](_0x35126c['variable'])&&this[_0x95fb('0x5e')](_0x35126c['variable']['queueposition'])){if(!_0x360f79[_0x95fb('0x80')]){_0x360f79['queuecallerexit']=!![];_0x360f79['queuecallerexitAt']=moment()[_0x95fb('0x45')](_0x95fb('0x74'));_0x360f79[_0x95fb('0x4b')]=_0x95fb('0xab');_0x360f79[_0x95fb('0x87')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));this[_0x95fb('0x11')][_0x35126c['uniqueid']]=_0x360f79;}}logger[_0x95fb('0x66')](_0x95fb('0xac'),_0x35126c[_0x95fb('0x4a')],_0x360f79[_0x95fb('0x47')],_0x360f79[_0x95fb('0x4f')],_[_0x95fb('0x79')](_0x35126c['variable'])[0x0],_0x35126c[_0x95fb('0xa8')]);_0x360f79['variables']=this[_0x95fb('0x16')][_0x35126c[_0x95fb('0x4a')]];}}}}catch(_0x459a3){logger[_0x95fb('0x3a')](_0x95fb('0xa5'),_0x35126c[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x459a3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0xa6')]=function(_0x39fe19,_0x3f47c6,_0x558033){var _0x267bba=[_0x95fb('0xad'),_0x95fb('0xae'),_0x95fb('0xaf'),_0x95fb('0xb0'),_0x95fb('0xb1'),_0x95fb('0xb2'),_0x95fb('0xb3'),_0x95fb('0xb4'),'sipcallid','sipuri',_0x95fb('0xb5'),_0x95fb('0xb6'),_0x95fb('0xb7'),_0x95fb('0xb8'),_0x95fb('0xb9'),'memberlastcall','membername',_0x95fb('0xba'),_0x95fb('0xbb')];if(!_[_0x95fb('0x31')](_0x3f47c6)&&!_['includes'](_0x267bba,_0x3f47c6)){if(_[_0x95fb('0x5f')](this[_0x95fb('0x16')][_0x39fe19])){this['variables'][_0x39fe19]={};}this[_0x95fb('0x16')][_0x39fe19][_0x3f47c6]=_0x558033;}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0xbc')]=function(_0x544d0c,_0x588914,_0x5c9993){var _0x50252a={};for(var _0x3eda87=0x0;_0x3eda87<this[_0x95fb('0x39')][_0x544d0c][_0x95fb('0xbd')];_0x3eda87+=0x1){_0x50252a=this[_0x95fb('0x39')][_0x544d0c][_0x3eda87];if(this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]]){if(_0x50252a['queuecallerexit']&&_0x50252a['transfer']!=!![]){this['voiceQueues'][_0x50252a[_0x95fb('0x65')]][_0x95fb('0x55')]+=0x1;}if(_0x50252a[_0x95fb('0x80')]){this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]][_0x95fb('0x56')]+=0x1;}this[_0x95fb('0x13')][_0x50252a['queue']][_0x95fb('0xbe')]+=moment(_0x50252a[_0x95fb('0x87')])[_0x95fb('0xbf')](_0x50252a[_0x95fb('0x73')],_0x95fb('0x9a'))||0x0;if(_0x3eda87===this['queueReports'][_0x544d0c]['length']-0x1){this['voiceQueues'][_0x50252a[_0x95fb('0x65')]][_0x95fb('0xc0')]+=moment()[_0x95fb('0xc1')](0x0)[_0x95fb('0xbf')](_0x50252a[_0x95fb('0x73')],'seconds');this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]][_0x95fb('0x54')]+=0x1;if(_0x50252a[_0x95fb('0x8c')]){this[_0x95fb('0x13')][_0x50252a['queue']][_0x95fb('0xc2')]+=0x1;this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]][_0x95fb('0x53')]+=moment()[_0x95fb('0xc1')](0x0)[_0x95fb('0xbf')](_0x50252a['queuecallerleaveAt'],_0x95fb('0x9a'));_0x50252a[_0x95fb('0x7d')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));_0x50252a[_0x95fb('0x91')]=![];_0x50252a[_0x95fb('0x98')]=null;}if(_0x50252a[_0x95fb('0x91')]&&_0x50252a[_0x95fb('0x9c')]!=!![]){_0x50252a['lastevent']=_0x95fb('0x55');logger[_0x95fb('0x5b')](_0x95fb('0xc3'),_0x544d0c,util[_0x95fb('0x38')](_0x50252a,{'showHidden':![],'depth':null}));ami[_0x95fb('0x41')](_0x95fb('0xc4'),_0x50252a);}if(_0x50252a[_0x95fb('0x80')]){_0x50252a[_0x95fb('0xa9')]=_0x95fb('0x56');logger['debug'](_0x95fb('0xc5'),_0x544d0c,util['inspect'](_0x50252a,{'showHidden':![],'depth':null}));ami[_0x95fb('0x41')](_0x95fb('0xc6'),_0x50252a);}}else{this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]]['sumDuration']+=this[_0x95fb('0x13')][_0x50252a[_0x95fb('0x65')]][_0x95fb('0xbe')];}logger['info'](_0x95fb('0xc7'),_0x544d0c,_0x50252a[_0x95fb('0x47')],_0x50252a[_0x95fb('0x4f')],_0x588914);if(_0x5c9993&&_0x50252a[_0x95fb('0x4b')]===_0x95fb('0x4c')){_0x50252a[_0x95fb('0x4b')]='COMPLETEDBYAGENT';}this[_0x95fb('0x11')][_0x544d0c]=_0x50252a;this['emitVoiceQueueChannelRemove'](_0x50252a,_0x95fb('0xc8'));this[_0x95fb('0x6d')](this['voiceQueues'][_0x50252a['queue']],_0x95fb('0xc8'));}}logger[_0x95fb('0x5b')](_0x95fb('0xc9'),_0x544d0c,util[_0x95fb('0x38')](this[_0x95fb('0x39')][_0x544d0c],{'showHidden':![],'depth':null}));ami['emit'](_0x95fb('0xca'),this['queueReports'][_0x544d0c]);if(_0x50252a[_0x95fb('0x4b')]===_0x95fb('0x4c'))return;delete this['queueReports'][_0x544d0c];delete this['channels'][_0x544d0c];if(this[_0x95fb('0x16')][_0x544d0c]){delete this[_0x95fb('0x16')][_0x544d0c];}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x20')]=function(_0x104c33){try{if(this['isNotNull'](_0x104c33)){logger[_0x95fb('0x5b')](_0x95fb('0xcb'),_0x104c33[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x104c33,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x104c33[_0x95fb('0x4a')]]){return this[_0x95fb('0xbc')](_0x104c33['uniqueid'],_0x104c33[_0x95fb('0xcc')]);}if(this[_0x95fb('0x39')][_0x104c33['linkedid']]){if(_0x104c33[_0x95fb('0xcd')]==='21'){return;}return this[_0x95fb('0xbc')](_0x104c33[_0x95fb('0xa1')],_0x104c33[_0x95fb('0xcc')],!![]);}var _0x1624be=Object[_0x95fb('0x79')](this[_0x95fb('0x39')]);for(var _0x14dc4c=0x0;_0x14dc4c<_0x1624be[_0x95fb('0xbd')];_0x14dc4c++){var _0x2c8150=_['last'](this[_0x95fb('0x39')][_0x1624be[_0x14dc4c]]);if(_0x2c8150&&_0x2c8150[_0x95fb('0xce')]===_0x104c33[_0x95fb('0x4a')]){return this['handleHangup'](_0x2c8150[_0x95fb('0x4a')],_0x104c33['cause-txt'],!![]);}}}}catch(_0x3a5746){logger[_0x95fb('0x3a')]('[%s][voiceQueueReport][hangup]',_0x104c33[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x3a5746,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')][_0x95fb('0x26')]=function(_0x5cbb97){try{if(this[_0x95fb('0x5e')](_0x5cbb97)){logger[_0x95fb('0x5b')](_0x95fb('0xcf'),_0x5cbb97['uniqueid'],util[_0x95fb('0x38')](_0x5cbb97,{'showHidden':![],'depth':null}));var _0x31b7b7;var _0x714ddc;var _0x1a7643;if(this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd0')]]){_0x31b7b7=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97['transfereeuniqueid']]);_0x31b7b7[_0x95fb('0xd1')]=_0x5cbb97[_0x95fb('0xd2')];_0x31b7b7[_0x95fb('0x9f')]=_0x5cbb97[_0x95fb('0xd3')];_0x31b7b7[_0x95fb('0x4b')]=_0x95fb('0x4c');_0x31b7b7['transfer']=!![];_0x31b7b7[_0x95fb('0xd4')]=_0x95fb('0xd5');if(this[_0x95fb('0x39')][_0x5cbb97['secondtransfereruniqueid']]){_0x1a7643=this['queueReports'][_0x5cbb97['secondtransfereruniqueid']];this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd3')]]=this['queueReports'][_0x5cbb97[_0x95fb('0xd0')]];this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd0')]]=_0x1a7643;_0x714ddc=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd0')]]);_0x714ddc[_0x95fb('0x30')]=!![];}logger['info'](_0x95fb('0xd6'),_0x5cbb97['uniqueid'],_0x31b7b7[_0x95fb('0x47')],_0x31b7b7[_0x95fb('0x4f')],_0x31b7b7[_0x95fb('0xd1')],_0x31b7b7['transferuniqueid']);}else if(this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd7')]]){_0x31b7b7=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97['transfertargetuniqueid']]);_0x31b7b7[_0x95fb('0xd1')]=_0x5cbb97[_0x95fb('0xd8')];_0x31b7b7[_0x95fb('0x9f')]=_0x5cbb97[_0x95fb('0xd9')];_0x31b7b7[_0x95fb('0x4b')]='ATTENDEDTRANSFER';_0x31b7b7[_0x95fb('0x9c')]=!![];_0x31b7b7[_0x95fb('0xd4')]=_0x95fb('0xd5');if(this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd9')]]){_0x1a7643=this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd9')]];this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd9')]]=this[_0x95fb('0x39')][_0x5cbb97['transfertargetuniqueid']];this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd7')]]=_0x1a7643;_0x714ddc=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97['transfertargetuniqueid']]);_0x714ddc['switch']=!![];}logger[_0x95fb('0x66')](_0x95fb('0xd6'),_0x5cbb97[_0x95fb('0x4a')],_0x31b7b7[_0x95fb('0x47')],_0x31b7b7[_0x95fb('0x4f')],_0x31b7b7[_0x95fb('0xd1')],_0x31b7b7[_0x95fb('0x9f')]);}else if(this['queueReports'][_0x5cbb97[_0x95fb('0xd9')]]){_0x31b7b7=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd9')]]);_0x31b7b7[_0x95fb('0xd1')]=_0x5cbb97['origtransfererexten'];_0x31b7b7[_0x95fb('0x9f')]=_0x5cbb97[_0x95fb('0xd9')];_0x31b7b7[_0x95fb('0x4b')]=_0x95fb('0x4c');_0x31b7b7[_0x95fb('0x9c')]=!![];_0x31b7b7[_0x95fb('0xd4')]=_0x95fb('0xd5');_0x31b7b7[_0x95fb('0x30')]=!![];_0x31b7b7[_0x95fb('0xce')]=_0x5cbb97['transfereeuniqueid'];}else if(this[_0x95fb('0x39')][_0x5cbb97['secondtransfereruniqueid']]){_0x31b7b7=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x5cbb97[_0x95fb('0xd3')]]);_0x31b7b7[_0x95fb('0xd1')]=_0x5cbb97[_0x95fb('0xd2')];_0x31b7b7[_0x95fb('0x9f')]=_0x5cbb97['secondtransfereruniqueid'];_0x31b7b7[_0x95fb('0x4b')]='ATTENDEDTRANSFER';_0x31b7b7[_0x95fb('0x9c')]=!![];_0x31b7b7['transfertype']=_0x95fb('0xd5');_0x31b7b7[_0x95fb('0x30')]=!![];_0x31b7b7['transferid']=_0x5cbb97[_0x95fb('0xd7')];}}}catch(_0x2cb84a){logger[_0x95fb('0x3a')](_0x95fb('0xcf'),_0x5cbb97[_0x95fb('0x4a')],util['inspect'](_0x2cb84a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x95fb('0xda')]=function(_0x2c141d){try{if(this['isNotNull'](_0x2c141d)){logger[_0x95fb('0x5b')](_0x95fb('0xdb'),_0x2c141d['uniqueid'],util[_0x95fb('0x38')](_0x2c141d,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x2c141d[_0x95fb('0xd0')]]){var _0x24f117=_['last'](this[_0x95fb('0x39')][_0x2c141d[_0x95fb('0xd0')]]);_0x24f117[_0x95fb('0x4b')]='BLINDTRANSFER';_0x24f117['transfer']=!![];_0x24f117[_0x95fb('0xd4')]='BLIND';_0x24f117[_0x95fb('0xd1')]=_0x2c141d['extension'];_0x24f117[_0x95fb('0x9f')]=_0x2c141d[_0x95fb('0xd0')];logger['info']('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x2c141d['uniqueid'],_0x24f117[_0x95fb('0x47')],_0x24f117[_0x95fb('0x4f')],_0x24f117[_0x95fb('0xd1')],_0x24f117['transferuniqueid']);this[_0x95fb('0x20')]({'event':_0x95fb('0xdc'),'uniqueid':_0x2c141d[_0x95fb('0xd0')],'context':_0x2c141d[_0x95fb('0xdd')],'channel':_0x2c141d[_0x95fb('0xde')]});}}}catch(_0x1eeab1){logger[_0x95fb('0x3a')]('[%s][voiceQueueReport][blindtransfer]',_0x2c141d[_0x95fb('0x4a')],util['inspect'](_0x1eeab1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x95fb('0x2e')]['syncMusicOnHoldStart']=function(_0x4e2cdf){try{if(this[_0x95fb('0x5e')](_0x4e2cdf)){logger[_0x95fb('0x5b')]('[%s][voiceQueueReport][musiconholdstart]',_0x4e2cdf[_0x95fb('0x4a')],util['inspect'](_0x4e2cdf,{'showHidden':![],'depth':null}));if(this[_0x95fb('0x39')][_0x4e2cdf[_0x95fb('0x4a')]]){var _0x21ab4b=_[_0x95fb('0x7c')](this['queueReports'][_0x4e2cdf['uniqueid']]);if(!_[_0x95fb('0x31')](_0x21ab4b['queuecallerleaveAt'])){_0x21ab4b[_0x95fb('0xdf')]=moment()[_0x95fb('0x45')](_0x95fb('0x74'));logger[_0x95fb('0x66')](_0x95fb('0xe0'),_0x4e2cdf['uniqueid'],_0x21ab4b[_0x95fb('0xdf')]);}}}}catch(_0x5480a2){logger[_0x95fb('0x3a')](_0x95fb('0xe1'),_0x4e2cdf[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x5480a2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x34fbe7){try{if(this['isNotNull'](_0x34fbe7)){logger[_0x95fb('0x5b')]('[%s][voiceQueueReport][musiconholdstop]',_0x34fbe7['uniqueid'],util[_0x95fb('0x38')](_0x34fbe7,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x34fbe7[_0x95fb('0x4a')]]){var _0x2115bb=_[_0x95fb('0x7c')](this[_0x95fb('0x39')][_0x34fbe7[_0x95fb('0x4a')]]);if(!_['isNil'](_0x2115bb[_0x95fb('0xdf')])){_0x2115bb[_0x95fb('0xe2')]+=moment()[_0x95fb('0xc1')](0x0)['diff'](_0x2115bb['mohstarttime'],_0x95fb('0x9a'));logger['info']('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x34fbe7[_0x95fb('0x4a')],_0x2115bb[_0x95fb('0xe2')]);delete _0x2115bb[_0x95fb('0xdf')];}}}}catch(_0xa3f6b2){logger[_0x95fb('0x3a')](_0x95fb('0xe3'),_0x34fbe7[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0xa3f6b2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncNewExten']=function(_0x8b89cd){try{if(this['isNotNull'](_0x8b89cd)){logger[_0x95fb('0x5b')]('[%s][voiceQueueReport][newexten]\x20event:',_0x8b89cd['uniqueid'],util[_0x95fb('0x38')](_0x8b89cd,{'showHidden':![],'depth':null}));if(_0x8b89cd[_0x95fb('0xe4')][_0x95fb('0x96')]()===_0x95fb('0xe5')){_0x8b89cd[_0x95fb('0xe6')]=_0x8b89cd[_0x95fb('0xe7')]&&_0x8b89cd[_0x95fb('0xe7')]['startsWith'](_0x95fb('0xe8'))?_0x8b89cd['appdata']:(_0x8b89cd[_0x95fb('0xe7')]||_0x8b89cd[_0x95fb('0xe6')])[_0x95fb('0x96')]();if(_['startsWith'](_0x8b89cd[_0x95fb('0xe6')][_0x95fb('0x96')](),_0x95fb('0xe9'))){logger['info'](_0x95fb('0xea'),_0x8b89cd[_0x95fb('0x4a')],_0x8b89cd[_0x95fb('0xe4')],_0x8b89cd['applicationdata']);if(_[_0x95fb('0x5f')](this['channels'][_0x8b89cd[_0x95fb('0x4a')]]))this[_0x95fb('0x11')][_0x8b89cd[_0x95fb('0x4a')]]={};var _0x2b61aa=_0x8b89cd[_0x95fb('0xe6')][_0x95fb('0xeb')]('=');var _0x4aca60=_0x2b61aa[0x0][_0x95fb('0x96')]()[_0x95fb('0xec')](/cdr\((.*)\)/);if(_0x4aca60)this[_0x95fb('0x11')][_0x8b89cd[_0x95fb('0x4a')]][_0x4aca60[0x1]]=_0x2b61aa[0x1];}}}}catch(_0x4b06d8){logger[_0x95fb('0x3a')](_0x95fb('0xed'),_0x8b89cd[_0x95fb('0x4a')],util[_0x95fb('0x38')](_0x4b06d8,{'showHidden':![],'depth':null}));}};module[_0x95fb('0xee')]=VoiceQueueReport;
\ No newline at end of file
+var _0xb34e=['includes','notInUse','inUse','busy','ringInUse','onHold','queuestatus','queue','createQueueSummaryReport','assign','custom:queuesummary','statusRequests','syncQueueSummaryComplete','completeEvent','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','isUndefined','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','keys','push','last','queuecallercomplete','queuecallercompleteAt','holdtime','queuecallerabandonAt','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','syncAgentComplete','assigned','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','reason','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberrealtime','isNil','length','abandoned','sumHoldTime','diff','milliseconds','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]','cause-txt','cause','handleHangup','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','switch','transferid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','mohtime','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceQueueReport][newexten]','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','socket.io-emitter','prototype','enqueue','tail','queueReports','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','variables','syncQueueSummary','bind','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','queueStatusComplete','unlockRR','available','loggedIn','loggedInDb','paused','ringing','waiting','sequence','Action','status','channel','catch','message','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','error','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','clearZombieChannels','[voiceQueueReport][queues]','isRunning','queuesummary','then','actionid','[voiceQueueReport][queuesummary]','queues','loggedin','forEach','SIP/','online'];(function(_0x1c1980,_0x556c67){var _0x57203a=function(_0x45f0e9){while(--_0x45f0e9){_0x1c1980['push'](_0x1c1980['shift']());}};_0x57203a(++_0x556c67);}(_0xb34e,0x181));var _0xeb34=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0xb34e[_0x5c9307];return _0x373e29;};'use strict';var _=require(_0xeb34('0x0'));var moment=require(_0xeb34('0x1'));var util=require(_0xeb34('0x2'));var md5=require(_0xeb34('0x3'));var Redis=require(_0xeb34('0x4'));var config=require(_0xeb34('0x5'));var logger=require(_0xeb34('0x6'))(_0xeb34('0x7'));var ami=require(_0xeb34('0x8'));var QueueReport=require(_0xeb34('0x9'));var VoiceQueueSummary=require(_0xeb34('0xa'));config[_0xeb34('0xb')]=_['defaults'](config[_0xeb34('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0xeb34('0xc'))(new Redis(config[_0xeb34('0xb')]));var Sequence=function(){};Sequence[_0xeb34('0xd')][_0xeb34('0xe')]=function(_0x486a85){this[_0xeb34('0xf')]=this[_0xeb34('0xf')]?this[_0xeb34('0xf')]['finally'](_0x486a85):_0x486a85();};function VoiceQueueReport(_0x35ba6d){this['sequence']=new Sequence();this[_0xeb34('0x10')]={};this[_0xeb34('0x11')]=_0x35ba6d;this['agents']=_0x35ba6d[_0xeb34('0x12')];this[_0xeb34('0x13')]=_0x35ba6d[_0xeb34('0x14')];this['voiceQueues']=_0x35ba6d[_0xeb34('0x15')];this[_0xeb34('0x16')]=_0x35ba6d[_0xeb34('0x16')];this[_0xeb34('0x17')]=initializeSummary();this[_0xeb34('0x18')]={};ami['on']('queuesummary',this[_0xeb34('0x19')][_0xeb34('0x1a')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x1b'),this[_0xeb34('0x1c')]['bind'](this));ami['on'](_0xeb34('0x1d'),this[_0xeb34('0x1e')][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x1f'),this[_0xeb34('0x20')][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x21'),this[_0xeb34('0x22')]['bind'](this));ami['on'](_0xeb34('0x23'),this[_0xeb34('0x24')][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x25'),this['syncAgentComplete'][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x26'),this[_0xeb34('0x27')][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x28'),this[_0xeb34('0x29')]['bind'](this));ami['on'](_0xeb34('0x2a'),this[_0xeb34('0x2b')]['bind'](this));ami['on'](_0xeb34('0x2c'),this['syncFullyBooted'][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x2d'),this['syncMusicOnHoldStart'][_0xeb34('0x1a')](this));ami['on']('musiconholdstop',this[_0xeb34('0x2e')][_0xeb34('0x1a')](this));ami['on'](_0xeb34('0x2f'),this[_0xeb34('0x30')][_0xeb34('0x1a')](this));ami['on']('blindtransfer',this[_0xeb34('0x31')][_0xeb34('0x1a')](this));this[_0xeb34('0x32')]();this[_0xeb34('0x33')]();}function clearChannels(_0x2a0244){if(!_[_0xeb34('0x34')](_0x2a0244)){for(var _0x3a6f25 in _0x2a0244){if(_0x2a0244[_0xeb34('0x35')](_0x3a6f25)){delete _0x2a0244[_0x3a6f25];}}}}function clearCampaigns(_0x33d047){if(!_[_0xeb34('0x34')](_0x33d047)){for(var _0x8e0885 in _0x33d047){if(_0x33d047[_0xeb34('0x35')](_0x8e0885)){_0x33d047[_0x8e0885][_0xeb34('0x36')]=0x0;}}}}function clearVoiceQueues(_0x20b135){if(!_[_0xeb34('0x34')](_0x20b135)){for(var _0x48daeb in _0x20b135){if(_0x20b135['hasOwnProperty'](_0x48daeb)){_0x20b135[_0x48daeb][_0xeb34('0x36')]=0x0;_0x20b135[_0x48daeb][_0xeb34('0x37')]=0x0;_0x20b135[_0x48daeb]['pTalking']=0x0;_0x20b135[_0x48daeb]['waiting']=0x0;_0x20b135[_0x48daeb][_0xeb34('0x38')]=!![];}}}}function clearAgentBooked(_0x2d4c4e){if(!_[_0xeb34('0x34')](_0x2d4c4e)){for(var _0x56352e in _0x2d4c4e){if(_0x2d4c4e['hasOwnProperty'](_0x56352e)){_0x2d4c4e[_0x56352e][_0xeb34('0x39')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasQueueCountersChanged(_0x71a4bb,_0xc42bb9){return _0x71a4bb[_0xeb34('0x3a')]!==_0xc42bb9[_0xeb34('0x3a')]||_0x71a4bb[_0xeb34('0x3b')]!==_0xc42bb9['loggedIn']||_0x71a4bb[_0xeb34('0x3c')]!==_0xc42bb9[_0xeb34('0x3c')]||_0x71a4bb['paused']!==_0xc42bb9[_0xeb34('0x3d')]||_0x71a4bb[_0xeb34('0x3e')]!==_0xc42bb9[_0xeb34('0x3e')]||_0x71a4bb[_0xeb34('0x37')]!==_0xc42bb9[_0xeb34('0x37')]||_0x71a4bb['waiting']!==_0xc42bb9[_0xeb34('0x3f')];}VoiceQueueReport[_0xeb34('0xd')]['clearZombieChannels']=function(){var _0x1ad016=this;for(var _0x524d54 in this[_0xeb34('0x13')]){if(this['channels'][_0xeb34('0x35')](_0x524d54)&&!this[_0xeb34('0x13')][_0x524d54]['switch']){this[_0xeb34('0x40')][_0xeb34('0xe')](function(){if(!_['isNil'](_0x1ad016[_0xeb34('0x13')][_0x524d54])){return ami[_0xeb34('0x41')]({'action':_0xeb34('0x42'),'channel':_0x1ad016[_0xeb34('0x13')][_0x524d54][_0xeb34('0x43')]})[_0xeb34('0x44')](function(_0x300423){if(_0x300423[_0xeb34('0x45')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x1ad016[_0xeb34('0x13')][_0x524d54]){delete _0x1ad016['channels'][_0x524d54];logger['error'](_0xeb34('0x46'),_0x524d54,util['inspect'](_0x300423,{'showHidden':![],'depth':null}));}if(_0x1ad016[_0xeb34('0x10')][_0x524d54]){delete _0x1ad016[_0xeb34('0x10')][_0x524d54];logger['error'](_0xeb34('0x47'),_0x524d54,util[_0xeb34('0x48')](_0x300423,{'showHidden':![],'depth':null}));}if(_0x1ad016[_0xeb34('0x18')][_0x524d54]){delete _0x1ad016['variables'][_0x524d54];logger['error'](_0xeb34('0x49'),_0x524d54,util[_0xeb34('0x48')](_0x300423,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x4a')]=function(){logger[_0xeb34('0x4b')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0xeb34('0x13')]);this['clearQueueReport'](this[_0xeb34('0x10')]);clearAgentBooked(this[_0xeb34('0x12')]);clearVoiceQueues(this[_0xeb34('0x15')]);clearCampaigns(this[_0xeb34('0x16')]);this[_0xeb34('0x17')]=initializeSummary();};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x4c')]=function(_0x1be47d){var _0x1d15fd=this;if(!_[_0xeb34('0x34')](_0x1be47d)){for(var _0x4c5533 in _0x1be47d){if(_0x1be47d[_0xeb34('0x35')](_0x4c5533)){_0x1d15fd[_0xeb34('0x4d')](_0x1be47d[_0x4c5533],_0xeb34('0x4e'));delete _0x1be47d[_0x4c5533];}}}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x4f')]=function(_0x2f62a7,_0x211bd4,_0x11a428){io['to'](_0x2f62a7)[_0xeb34('0x4f')](_0x211bd4,_0x11a428);};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x50')]=function(_0xf0f795,_0x13cc61){logger[_0xeb34('0x51')]('[%s][voiceQueueReport]['+_0x13cc61+']\x20sending\x20voice_queue_channel:save\x20event:',_0xf0f795[_0xeb34('0x52')],util[_0xeb34('0x48')](_0xf0f795,{'showHidden':![],'depth':null}));this[_0xeb34('0x4f')](util[_0xeb34('0x53')](_0xeb34('0x54'),_0xf0f795[_0xeb34('0x55')]),_0xeb34('0x56'),_0xf0f795);io[_0xeb34('0x4f')](_0xeb34('0x57'),_0xf0f795);};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x4d')]=function(_0x5e35fd,_0x41c7bc){logger['debug'](_0xeb34('0x58')+_0x41c7bc+_0xeb34('0x59'),_0x5e35fd[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x5e35fd,{'showHidden':![],'depth':null}));if(_0x5e35fd[_0xeb34('0x5a')]===_0xeb34('0x5b')){return;}this['emit'](util[_0xeb34('0x53')](_0xeb34('0x54'),_0x5e35fd[_0xeb34('0x55')]),_0xeb34('0x5c'),_0x5e35fd);io[_0xeb34('0x4f')](_0xeb34('0x5d'),_0x5e35fd);};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x5e')]=function(_0x3ea28a,_0x2a0267){if(_0x3ea28a[_0xeb34('0x5f')]===_0xeb34('0x60')){var _0x260b23=new VoiceQueueSummary(_0x3ea28a);var _0x15704b=md5(JSON[_0xeb34('0x61')](_0x260b23));if(_0x3ea28a['md5']!==_0x15704b){_0x3ea28a[_0xeb34('0x3')]=_0x15704b;logger[_0xeb34('0x51')]('[voiceQueueReport]['+_0x2a0267+_0xeb34('0x62'),util[_0xeb34('0x48')](_0x260b23,{'showHidden':![],'depth':null}));this['emit'](util[_0xeb34('0x53')](_0xeb34('0x54'),_0x260b23[_0xeb34('0x55')]),_0xeb34('0x63'),_0x260b23);}}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x64')]=function(_0x45919a){return _0x45919a!==null&&!_['isUndefined'](_0x45919a);};VoiceQueueReport[_0xeb34('0xd')]['loopQueueShow']=function(){var _0x2a2536=this;setInterval(function(){_0x2a2536[_0xeb34('0x65')]();ami[_0xeb34('0x41')]({'action':'queues'})[_0xeb34('0x44')](function(_0x3e53f5){logger[_0xeb34('0x4b')](_0xeb34('0x66'),util['inspect'](_0x3e53f5,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x32')]=function(){var _0x471e51=this;setInterval(function(){if(!_0x471e51[_0xeb34('0x17')][_0xeb34('0x67')]){return ami['Action']({'action':_0xeb34('0x68')})[_0xeb34('0x69')](function(_0x380ed7){_0x471e51[_0xeb34('0x17')]['id']=_0x380ed7[_0xeb34('0x6a')];_0x471e51[_0xeb34('0x17')]['isRunning']=!![];_0x471e51['summary']['queuestatus'][_0x380ed7[_0xeb34('0x6a')]]={};})['catch'](function(_0x4a0dba){logger[_0xeb34('0x4b')](_0xeb34('0x6b'),util[_0xeb34('0x48')](_0x4a0dba,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xeb34('0xd')]['createQueueSummaryReport']=function(_0x2a7e2a,_0x347a5f){var _0x5cfdea=this[_0xeb34('0x12')];var _0x56bcca=this[_0xeb34('0x17')][_0xeb34('0x6c')][_0x2a7e2a[_0xeb34('0x55')]]['summaryEvent'];var _0x3bde37={'available':Number(_0x56bcca[_0xeb34('0x3a')]),'busy':0x0,'inUse':0x0,'invalid':0x0,'loggedIn':Number(_0x56bcca[_0xeb34('0x6d')]),'loggedInDb':0x0,'notInUse':0x0,'onHold':0x0,'paused':0x0,'ringing':0x0,'ringInUse':0x0,'talking':0x0,'unavailable':0x0,'unknown':0x0,'waiting':Number(_0x56bcca['callers'])};if(_0x2a7e2a){_0x347a5f[_0xeb34('0x6e')](function(_0x459bef){var _0x3b8511=_0x5cfdea[_0xeb34('0x6f')+_0x459bef['name']];if(_0x3b8511&&_0x3b8511[_0xeb34('0x70')]){_0x3bde37[_0xeb34('0x3c')]+=0x1;}if(_0x459bef['incall']==='1'){_0x3bde37['talking']+=0x1;}if(_0x459bef[_0xeb34('0x3d')]==='1'&&!['2','7','8'][_0xeb34('0x71')](_0x459bef[_0xeb34('0x42')])){_0x3bde37[_0xeb34('0x3d')]+=0x1;}switch(_0x459bef[_0xeb34('0x42')]){case'0':_0x3bde37['unknown']+=0x1;break;case'1':_0x3bde37[_0xeb34('0x72')]+=0x1;break;case'2':_0x3bde37[_0xeb34('0x73')]+=0x1;break;case'3':_0x3bde37[_0xeb34('0x74')]+=0x1;break;case'4':_0x3bde37['invalid']+=0x1;break;case'5':_0x3bde37['unavailable']+=0x1;break;case'6':_0x3bde37[_0xeb34('0x3e')]+=0x1;break;case'7':_0x3bde37[_0xeb34('0x75')]+=0x1;break;case'8':_0x3bde37[_0xeb34('0x76')]+=0x1;break;}});}return _0x3bde37;};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x1e')]=function(_0x28864d){var _0x432ede=null;var _0x178b82=this[_0xeb34('0x17')]['id'];if(this[_0xeb34('0x17')]['queuestatus'][_0x178b82]){_0x432ede=this[_0xeb34('0x17')][_0xeb34('0x77')][_0x178b82][_0x28864d['actionid']];}if(!_0x432ede){this['summary']=initializeSummary();return;}var _0x5bfcae=this[_0xeb34('0x15')][_0x432ede[_0xeb34('0x78')]];var _0x526af1=this[_0xeb34('0x79')](_0x5bfcae,_0x432ede['agents']);var _0x170ea4=hasQueueCountersChanged(_0x5bfcae,_0x526af1);if(_0x170ea4){var _0xca82f1=Object[_0xeb34('0x7a')](_0x5bfcae,_0x526af1);this[_0xeb34('0x11')][_0xeb34('0x15')][_0x5bfcae[_0xeb34('0x55')]]=_0x5bfcae;this[_0xeb34('0x5e')](_0xca82f1,_0xeb34('0x68'));}ami[_0xeb34('0x4f')](_0xeb34('0x7b'),_0x5bfcae);this[_0xeb34('0x17')][_0xeb34('0x7c')]-=0x1;var _0x20bdba=this[_0xeb34('0x17')]['statusRequests']>0x0?!![]:![];if(!_0x20bdba){return this[_0xeb34('0x7d')](this[_0xeb34('0x17')][_0xeb34('0x7e')]);}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x1c')]=function(_0x19f9b1){var _0x48c0af=this[_0xeb34('0x17')]['id'];if(this[_0xeb34('0x17')][_0xeb34('0x77')][_0x48c0af]&&this['summary'][_0xeb34('0x77')][_0x48c0af][_0x19f9b1[_0xeb34('0x6a')]]){this[_0xeb34('0x17')]['queuestatus'][_0x48c0af][_0x19f9b1[_0xeb34('0x6a')]][_0xeb34('0x12')]['push'](_0x19f9b1);}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x19')]=function(_0x21e052){var _0x46658e=this;try{if(this[_0xeb34('0x64')](_0x21e052)&&this[_0xeb34('0x64')](_0x21e052[_0xeb34('0x78')])){logger[_0xeb34('0x51')]('[voiceQueueReport][queuesummary]\x20event:',util[_0xeb34('0x48')](_0x21e052,{'showHidden':![],'depth':null}));var _0x2cc1b1=this['voiceQueues'][_0x21e052[_0xeb34('0x78')]];if(_0x2cc1b1){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x2cc1b1[_0xeb34('0x55')]);this[_0xeb34('0x17')][_0xeb34('0x6c')][_0x2cc1b1[_0xeb34('0x55')]]={'summaryEvent':_0x21e052};this[_0xeb34('0x17')][_0xeb34('0x7c')]+=0x1;if(!this['summary']['queuestatus'][_0x21e052[_0xeb34('0x6a')]]){this[_0xeb34('0x17')][_0xeb34('0x77')][_0x21e052['actionid']]={};}return ami['Action']({'action':_0xeb34('0x77'),'queue':_0x2cc1b1[_0xeb34('0x55')]})[_0xeb34('0x69')](function(_0x1b6141){_0x46658e[_0xeb34('0x17')][_0xeb34('0x77')][_0x21e052[_0xeb34('0x6a')]][_0x1b6141[_0xeb34('0x6a')]]={'queue':_0x2cc1b1[_0xeb34('0x55')],'agents':[]};})[_0xeb34('0x44')](function(_0x529a12){throw _0x529a12;});}}}catch(_0x3f7315){logger[_0xeb34('0x4b')](_0xeb34('0x6b'),util['inspect'](_0x3f7315,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb34('0x7d')]=function(_0x32b6be){if(this[_0xeb34('0x17')][_0xeb34('0x7c')]>0x0){this[_0xeb34('0x17')][_0xeb34('0x7e')]=_0x32b6be;return;}logger[_0xeb34('0x51')](_0xeb34('0x7f'),util[_0xeb34('0x48')](_0x32b6be,{'showHidden':![],'depth':null}));this[_0xeb34('0x17')]=initializeSummary();ami[_0xeb34('0x4f')](_0xeb34('0x80'),{});};VoiceQueueReport[_0xeb34('0xd')]['syncQueueCallerJoin']=function(_0x4abbba){try{if(this['isNotNull'](_0x4abbba)){logger[_0xeb34('0x51')](_0xeb34('0x81'),_0x4abbba['uniqueid'],util[_0xeb34('0x48')](_0x4abbba,{'showHidden':![],'depth':null}));if(_[_0xeb34('0x82')](this[_0xeb34('0x10')][_0x4abbba[_0xeb34('0x52')]])){this['queueReports'][_0x4abbba[_0xeb34('0x52')]]=[];}if(_[_0xeb34('0x82')](this[_0xeb34('0x13')][_0x4abbba['uniqueid']])){this[_0xeb34('0x13')][_0x4abbba[_0xeb34('0x52')]]={};}var _0x13efa7=new QueueReport();_0x13efa7['queue']=_0x4abbba[_0xeb34('0x78')];_0x13efa7['type']=this['voiceQueues'][_0x13efa7[_0xeb34('0x78')]]&&this['voiceQueues'][_0x13efa7[_0xeb34('0x78')]][_0xeb34('0x5f')]?this[_0xeb34('0x15')][_0x13efa7[_0xeb34('0x78')]][_0xeb34('0x5f')]||_0xeb34('0x60'):_0xeb34('0x60');_0x13efa7[_0xeb34('0x83')]=moment()[_0xeb34('0x53')](_0xeb34('0x84'));_0x13efa7['position']=_0x4abbba[_0xeb34('0x85')];_0x13efa7[_0xeb34('0x86')]=_0x4abbba[_0xeb34('0x86')];_0x13efa7[_0xeb34('0x52')]=_0x4abbba[_0xeb34('0x52')];_0x13efa7[_0xeb34('0x87')]=this[_0xeb34('0x13')][_0x4abbba[_0xeb34('0x52')]][_0xeb34('0x87')];logger[_0xeb34('0x88')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x13efa7['queue'],_0x13efa7[_0xeb34('0x5f')]);_[_0xeb34('0x89')](_0x13efa7,_[_0xeb34('0x8a')](_0x4abbba,_[_0xeb34('0x8b')](_0x13efa7)));this['queueReports'][_0x4abbba[_0xeb34('0x52')]][_0xeb34('0x8c')](_0x13efa7);this[_0xeb34('0x13')][_0x4abbba[_0xeb34('0x52')]]=_0x13efa7;this[_0xeb34('0x50')](_0x13efa7,_0xeb34('0x1f'));}}catch(_0x486c85){logger[_0xeb34('0x4b')](_0xeb34('0x81'),_0x4abbba['uniqueid'],util[_0xeb34('0x48')](_0x486c85,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x22')]=function(_0xda0a04){try{if(this[_0xeb34('0x64')](_0xda0a04)){logger[_0xeb34('0x51')]('[%s][voiceQueueReport][queuecallerabandon]',_0xda0a04['uniqueid'],util[_0xeb34('0x48')](_0xda0a04,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0xda0a04[_0xeb34('0x52')]]){var _0x57a0a2=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0xda0a04['uniqueid']]);_0x57a0a2[_0xeb34('0x8e')]=![];_0x57a0a2[_0xeb34('0x8f')]=null;_0x57a0a2[_0xeb34('0x90')]=_0xda0a04[_0xeb34('0x90')];_0x57a0a2['originalposition']=_0xda0a04['originalposition'];_0x57a0a2['queuecallerabandon']=!![];_0x57a0a2[_0xeb34('0x91')]=moment()[_0xeb34('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x57a0a2[_0xeb34('0x5a')]=_0xeb34('0x92');_0x57a0a2['lastAssignedTo']=null;logger[_0xeb34('0x88')](_0xeb34('0x93'),_0x57a0a2[_0xeb34('0x78')],_0x57a0a2[_0xeb34('0x5f')]);this[_0xeb34('0x13')][_0xda0a04[_0xeb34('0x52')]]=_0x57a0a2;this[_0xeb34('0x4d')](_0x57a0a2,_0xeb34('0x21'));}}}catch(_0x26f270){logger[_0xeb34('0x4b')]('[%s][voiceQueueReport][queuecallerabandon]',_0xda0a04[_0xeb34('0x52')],util['inspect'](_0x26f270,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x24')]=function(_0x5027ef){try{if(this[_0xeb34('0x64')](_0x5027ef)){logger[_0xeb34('0x51')](_0xeb34('0x94'),_0x5027ef[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x5027ef,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x5027ef['uniqueid']]){var _0x56b350=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x5027ef['uniqueid']]);_0x56b350[_0xeb34('0x95')]=moment()[_0xeb34('0x53')](_0xeb34('0x84'));_0x56b350['connectedlinenum']=_0x5027ef[_0xeb34('0x96')];_0x56b350['connectedlinename']=_0x5027ef[_0xeb34('0x97')];logger['info'](_0xeb34('0x98'),_0x56b350[_0xeb34('0x78')],_0x56b350['type'],_0x5027ef[_0xeb34('0x96')],_0x5027ef[_0xeb34('0x97')]);this[_0xeb34('0x13')][_0x5027ef[_0xeb34('0x52')]]=_0x56b350;this[_0xeb34('0x50')](_0x56b350,'queuecallerleave');}}}catch(_0x5f32e8){logger[_0xeb34('0x4b')](_0xeb34('0x94'),_0x5027ef[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x5f32e8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb34('0x27')]=function(_0x2b5112){try{if(this[_0xeb34('0x64')](_0x2b5112)){logger[_0xeb34('0x51')](_0xeb34('0x99'),_0x2b5112[_0xeb34('0x52')],util['inspect'](_0x2b5112,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2b5112[_0xeb34('0x52')]]){var _0x4b2dba=_['last'](this[_0xeb34('0x10')][_0x2b5112['uniqueid']]);_0x4b2dba[_0xeb34('0x8e')]=!![];_0x4b2dba[_0xeb34('0x5a')]=_0xeb34('0x9a');logger[_0xeb34('0x88')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x4b2dba[_0xeb34('0x78')],_0x4b2dba[_0xeb34('0x5f')]);}}}catch(_0x264ea9){logger['error']('[%s][voiceQueueReport][agentconnect]',_0x2b5112[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x264ea9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb34('0x9b')]=function(_0x24e692){try{if(this[_0xeb34('0x64')](_0x24e692)){logger[_0xeb34('0x51')]('[%s][voiceQueueReport][agentcomplete]',_0x24e692[_0xeb34('0x52')],util['inspect'](_0x24e692,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x24e692['uniqueid']]){var _0x3774d1=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x24e692[_0xeb34('0x52')]]);_0x3774d1[_0xeb34('0x21')]=![];_0x3774d1[_0xeb34('0x91')]=null;_0x3774d1[_0xeb34('0x9c')]=!![];_0x3774d1[_0xeb34('0x9d')]=_0x24e692[_0xeb34('0x9e')];_0x3774d1[_0xeb34('0x90')]=_0x24e692[_0xeb34('0x90')];_0x3774d1[_0xeb34('0x8e')]=!![];_0x3774d1[_0xeb34('0x9f')]=![];_0x3774d1[_0xeb34('0xa0')]=null;if(!_0x3774d1['transfer']){if(_0x24e692[_0xeb34('0xa1')]==_0xeb34('0xa2')){_0x3774d1['queuecallerexitreason']=_0xeb34('0xa3');logger['info'](_0xeb34('0xa4'),_0x3774d1[_0xeb34('0x78')],_0x3774d1['type']);}else{if(_[_0xeb34('0xa5')](_0x24e692['channel'][_0xeb34('0xa6')](),_0xeb34('0xa7'))){if(this[_0xeb34('0x10')][_0x24e692['linkedid']]){var _0x3d3962=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x24e692[_0xeb34('0xa8')]]);_0x3d3962['queuecallercomplete']=![];_0x3d3962[_0xeb34('0x9f')]=!![];_0x3d3962['queuecallerexitAt']=moment(_0x3774d1[_0xeb34('0x83')])['add'](_0x24e692[_0xeb34('0x90')],_0xeb34('0xa9'))[_0xeb34('0x53')](_0xeb34('0x84'));_0x3d3962[_0xeb34('0x5a')]=_0xeb34('0xaa');_0x3d3962[_0xeb34('0xa2')]=!![];_0x3d3962[_0xeb34('0xab')]=_0xeb34('0xac');_0x3d3962[_0xeb34('0xad')]=_0x24e692['destexten'];_0x3d3962[_0xeb34('0xae')]=_0x24e692[_0xeb34('0x52')];logger[_0xeb34('0x88')](_0xeb34('0xaf'),_0x3d3962[_0xeb34('0x55')],_0x3d3962[_0xeb34('0x5f')]);var _0x208f64=this[_0xeb34('0x10')][_0x24e692['linkedid']];this[_0xeb34('0x10')][_0x24e692[_0xeb34('0xa8')]]=this[_0xeb34('0x10')][_0x24e692[_0xeb34('0x52')]];this[_0xeb34('0x10')][_0x24e692[_0xeb34('0x52')]]=_0x208f64;}}else{_0x3774d1[_0xeb34('0x5a')]='COMPLETEDBY'+_0x24e692[_0xeb34('0xa1')][_0xeb34('0xb0')]();logger[_0xeb34('0x88')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x3774d1['queue'],_0x3774d1['type'],_0x3774d1[_0xeb34('0x5a')]);}}}this[_0xeb34('0x13')][_0x24e692[_0xeb34('0x52')]]=_0x3774d1;this[_0xeb34('0x4d')](_0x3774d1,_0xeb34('0x25'));}}}catch(_0x5c0603){logger[_0xeb34('0x4b')](_0xeb34('0xb1'),_0x24e692['uniqueid'],util[_0xeb34('0x48')](_0x5c0603,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x29')]=function(_0x20eebb){try{if(this[_0xeb34('0x64')](_0x20eebb)){logger['debug'](_0xeb34('0xb2'),_0x20eebb['uniqueid'],util['inspect'](_0x20eebb,{'showHidden':![],'depth':null}));this[_0xeb34('0xb3')](_0x20eebb[_0xeb34('0x52')],_[_0xeb34('0x8b')](_0x20eebb[_0xeb34('0xb4')])[0x0],_0x20eebb[_0xeb34('0xb5')]);if(this['queueReports'][_0x20eebb[_0xeb34('0x52')]]){var _0x47e015=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x20eebb[_0xeb34('0x52')]]);if(_0x47e015){if(this[_0xeb34('0x64')](_0x20eebb[_0xeb34('0xb4')])&&this[_0xeb34('0x64')](_0x20eebb[_0xeb34('0xb4')][_0xeb34('0x77')])){switch(_0x20eebb[_0xeb34('0xb5')]){case _0xeb34('0xb6'):_0x47e015[_0xeb34('0x9f')]=![];_0x47e015[_0xeb34('0xa0')]=null;break;case _0xeb34('0xb7'):_0x47e015[_0xeb34('0xb8')]=_0xeb34('0xb9');_0x47e015['queuecallerexit']=!![];_0x47e015[_0xeb34('0xa0')]=moment()[_0xeb34('0x53')](_0xeb34('0x84'));_0x47e015[_0xeb34('0x95')]=moment()[_0xeb34('0x53')](_0xeb34('0x84'));logger[_0xeb34('0x51')](_0xeb34('0xba'),_0x20eebb[_0xeb34('0x52')],util['inspect'](_0x47e015,{'showHidden':![],'depth':null}));ami[_0xeb34('0x4f')](_0xeb34('0xbb'),_0x47e015);break;default:_0x47e015['queuecallerexit']=!![];_0x47e015['queuecallerexitAt']=moment()[_0xeb34('0x53')](_0xeb34('0x84'));_0x47e015[_0xeb34('0x95')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x47e015[_0xeb34('0x21')]=![];_0x47e015[_0xeb34('0x91')]=null;_0x47e015['queuecallerexitreason']=_0x20eebb['value'];this['channels'][_0x20eebb['uniqueid']]=_0x47e015;this['emitVoiceQueueChannelRemove'](_0x47e015,_0xeb34('0x28'));}else if(this[_0xeb34('0x64')](_0x20eebb[_0xeb34('0xb4')])&&this[_0xeb34('0x64')](_0x20eebb[_0xeb34('0xb4')]['queueposition'])){if(!_0x47e015[_0xeb34('0x21')]){_0x47e015['queuecallerexit']=!![];_0x47e015[_0xeb34('0xa0')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x47e015['queuecallerexitreason']=_0xeb34('0xbc');_0x47e015[_0xeb34('0x95')]=moment()['format'](_0xeb34('0x84'));this['channels'][_0x20eebb[_0xeb34('0x52')]]=_0x47e015;}}logger[_0xeb34('0x88')](_0xeb34('0xbd'),_0x20eebb['uniqueid'],_0x47e015[_0xeb34('0x78')],_0x47e015[_0xeb34('0x5f')],_[_0xeb34('0x8b')](_0x20eebb[_0xeb34('0xb4')])[0x0],_0x20eebb[_0xeb34('0xb5')]);_0x47e015[_0xeb34('0x18')]=this[_0xeb34('0x18')][_0x20eebb['uniqueid']];}}}}catch(_0x3c0792){logger[_0xeb34('0x4b')]('[%s][voiceQueueReport][varset]',_0x20eebb[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x3c0792,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb34('0xb3')]=function(_0x436a9a,_0x3c0ee3,_0x4992f9){var _0x4f66e7=[_0xeb34('0xbe'),_0xeb34('0xbf'),_0xeb34('0xc0'),_0xeb34('0xc1'),'rtpaudioqosloss',_0xeb34('0xc2'),_0xeb34('0xc3'),'rtpaudioqosrttbridged',_0xeb34('0xc4'),_0xeb34('0xc5'),_0xeb34('0xc6'),_0xeb34('0xc7'),'membercalls','memberdynamic',_0xeb34('0xc8'),_0xeb34('0xc9'),_0xeb34('0x9e'),'memberpenalty',_0xeb34('0xca')];if(!_[_0xeb34('0xcb')](_0x3c0ee3)&&!_[_0xeb34('0x71')](_0x4f66e7,_0x3c0ee3)){if(_[_0xeb34('0x82')](this[_0xeb34('0x18')][_0x436a9a])){this[_0xeb34('0x18')][_0x436a9a]={};}this[_0xeb34('0x18')][_0x436a9a][_0x3c0ee3]=_0x4992f9;}};VoiceQueueReport[_0xeb34('0xd')]['handleHangup']=function(_0x15a139,_0x4e76b9,_0x3f4256){var _0x54ac03={};for(var _0x4f9935=0x0;_0x4f9935<this[_0xeb34('0x10')][_0x15a139][_0xeb34('0xcc')];_0x4f9935+=0x1){_0x54ac03=this[_0xeb34('0x10')][_0x15a139][_0x4f9935];if(this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]){if(_0x54ac03[_0xeb34('0x9f')]&&_0x54ac03[_0xeb34('0xa2')]!=!![]){this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]['unmanaged']+=0x1;}if(_0x54ac03['queuecallerabandon']){this['voiceQueues'][_0x54ac03[_0xeb34('0x78')]][_0xeb34('0xcd')]+=0x1;}this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]][_0xeb34('0xce')]+=moment(_0x54ac03[_0xeb34('0x95')])[_0xeb34('0xcf')](_0x54ac03[_0xeb34('0x83')],_0xeb34('0xa9'))||0x0;if(_0x4f9935===this[_0xeb34('0x10')][_0x15a139][_0xeb34('0xcc')]-0x1){this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]['sumDuration']+=moment()[_0xeb34('0xd0')](0x0)[_0xeb34('0xcf')](_0x54ac03[_0xeb34('0x83')],_0xeb34('0xa9'));this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]['total']+=0x1;if(_0x54ac03['queuecallercomplete']){this[_0xeb34('0x15')][_0x54ac03['queue']][_0xeb34('0xd1')]+=0x1;this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]['sumBillable']+=moment()[_0xeb34('0xd0')](0x0)[_0xeb34('0xcf')](_0x54ac03[_0xeb34('0x95')],'seconds');_0x54ac03[_0xeb34('0x8f')]=moment()['format'](_0xeb34('0x84'));_0x54ac03['queuecallerexit']=![];_0x54ac03['queuecallerexitAt']=null;}if(_0x54ac03[_0xeb34('0x9f')]&&_0x54ac03[_0xeb34('0xa2')]!=!![]){_0x54ac03[_0xeb34('0xb8')]='unmanaged';logger['debug'](_0xeb34('0xd2'),_0x15a139,util['inspect'](_0x54ac03,{'showHidden':![],'depth':null}));ami[_0xeb34('0x4f')](_0xeb34('0xd3'),_0x54ac03);}if(_0x54ac03[_0xeb34('0x21')]){_0x54ac03[_0xeb34('0xb8')]=_0xeb34('0xcd');logger[_0xeb34('0x51')](_0xeb34('0xd4'),_0x15a139,util[_0xeb34('0x48')](_0x54ac03,{'showHidden':![],'depth':null}));ami[_0xeb34('0x4f')](_0xeb34('0xd5'),_0x54ac03);}}else{this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]]['sumDuration']+=this[_0xeb34('0x15')][_0x54ac03[_0xeb34('0x78')]][_0xeb34('0xce')];}logger[_0xeb34('0x88')](_0xeb34('0xd6'),_0x15a139,_0x54ac03[_0xeb34('0x78')],_0x54ac03['type'],_0x4e76b9);if(_0x3f4256&&_0x54ac03[_0xeb34('0x5a')]===_0xeb34('0x5b')){_0x54ac03['queuecallerexitreason']=_0xeb34('0x9a');}this[_0xeb34('0x13')][_0x15a139]=_0x54ac03;this[_0xeb34('0x4d')](_0x54ac03,_0xeb34('0x2a'));}}logger[_0xeb34('0x51')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x15a139,util['inspect'](this[_0xeb34('0x10')][_0x15a139],{'showHidden':![],'depth':null}));ami[_0xeb34('0x4f')]('custom:voiceQueueReport',this[_0xeb34('0x10')][_0x15a139]);if(_0x54ac03[_0xeb34('0x5a')]===_0xeb34('0x5b')){return;}if(_0x54ac03[_0xeb34('0x9f')]||_0x54ac03[_0xeb34('0x21')]||_0x54ac03[_0xeb34('0x8e')]){delete this['queueReports'][_0x15a139];delete this[_0xeb34('0x13')][_0x15a139];if(this[_0xeb34('0x18')][_0x15a139]){delete this[_0xeb34('0x18')][_0x15a139];}}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x2b')]=function(_0x6c6399){try{if(this[_0xeb34('0x64')](_0x6c6399)){logger[_0xeb34('0x51')](_0xeb34('0xd7'),_0x6c6399[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x6c6399,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x6c6399[_0xeb34('0x52')]]){return this['handleHangup'](_0x6c6399['uniqueid'],_0x6c6399[_0xeb34('0xd8')],![]);}if(this['queueReports'][_0x6c6399[_0xeb34('0xa8')]]){if(_0x6c6399[_0xeb34('0xd9')]==='21'){return;}return this['handleHangup'](_0x6c6399[_0xeb34('0xa8')],_0x6c6399[_0xeb34('0xd8')],!![]);}var _0x2cd585=Object['keys'](this['queueReports']);for(var _0x1e8ba5=0x0;_0x1e8ba5<_0x2cd585[_0xeb34('0xcc')];_0x1e8ba5++){var _0x1a5784=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x2cd585[_0x1e8ba5]]);if(_0x1a5784&&_0x1a5784['transferid']===_0x6c6399[_0xeb34('0x52')]){return this[_0xeb34('0xda')](_0x1a5784[_0xeb34('0x52')],_0x6c6399[_0xeb34('0xd8')],!![]);}}}}catch(_0x1269f4){logger[_0xeb34('0x4b')](_0xeb34('0xd7'),_0x6c6399[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x1269f4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x30')]=function(_0x3e31f7){try{if(this['isNotNull'](_0x3e31f7)){logger[_0xeb34('0x51')](_0xeb34('0xdb'),_0x3e31f7[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x3e31f7,{'showHidden':![],'depth':null}));var _0xdea0d1;var _0xbbd3eb;var _0x3cef22;if(this[_0xeb34('0x10')][_0x3e31f7['transfereeuniqueid']]){_0xdea0d1=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xdc')]]);_0xdea0d1['transferexten']=_0x3e31f7[_0xeb34('0xdd')];_0xdea0d1[_0xeb34('0xae')]=_0x3e31f7[_0xeb34('0xde')];_0xdea0d1[_0xeb34('0x5a')]='ATTENDEDTRANSFER';_0xdea0d1[_0xeb34('0xa2')]=!![];_0xdea0d1['transfertype']=_0xeb34('0xdf');if(this['queueReports'][_0x3e31f7[_0xeb34('0xde')]]){_0x3cef22=this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xde')]];this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xde')]]=this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xdc')]];this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xdc')]]=_0x3cef22;_0xbbd3eb=_['last'](this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xdc')]]);_0xbbd3eb['switch']=!![];}logger[_0xeb34('0x88')](_0xeb34('0xe0'),_0x3e31f7['uniqueid'],_0xdea0d1[_0xeb34('0x78')],_0xdea0d1[_0xeb34('0x5f')],_0xdea0d1[_0xeb34('0xad')],_0xdea0d1[_0xeb34('0xae')]);}else if(this[_0xeb34('0x10')][_0x3e31f7['transfertargetuniqueid']]){_0xdea0d1=_[_0xeb34('0x8d')](this['queueReports'][_0x3e31f7[_0xeb34('0xe1')]]);_0xdea0d1['transferexten']=_0x3e31f7[_0xeb34('0xe2')];_0xdea0d1[_0xeb34('0xae')]=_0x3e31f7[_0xeb34('0xe3')];_0xdea0d1[_0xeb34('0x5a')]=_0xeb34('0x5b');_0xdea0d1[_0xeb34('0xa2')]=!![];_0xdea0d1[_0xeb34('0xab')]='ATTENDED';if(this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xe3')]]){_0x3cef22=this[_0xeb34('0x10')][_0x3e31f7['origtransfereruniqueid']];this['queueReports'][_0x3e31f7['origtransfereruniqueid']]=this['queueReports'][_0x3e31f7[_0xeb34('0xe1')]];this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xe1')]]=_0x3cef22;_0xbbd3eb=_[_0xeb34('0x8d')](this['queueReports'][_0x3e31f7[_0xeb34('0xe1')]]);_0xbbd3eb[_0xeb34('0xe4')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x3e31f7[_0xeb34('0x52')],_0xdea0d1[_0xeb34('0x78')],_0xdea0d1[_0xeb34('0x5f')],_0xdea0d1[_0xeb34('0xad')],_0xdea0d1['transferuniqueid']);}else if(this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xe3')]]){_0xdea0d1=_[_0xeb34('0x8d')](this['queueReports'][_0x3e31f7[_0xeb34('0xe3')]]);_0xdea0d1['transferexten']=_0x3e31f7['origtransfererexten'];_0xdea0d1[_0xeb34('0xae')]=_0x3e31f7[_0xeb34('0xe3')];_0xdea0d1[_0xeb34('0x5a')]=_0xeb34('0x5b');_0xdea0d1[_0xeb34('0xa2')]=!![];_0xdea0d1[_0xeb34('0xab')]='ATTENDED';_0xdea0d1['switch']=!![];_0xdea0d1[_0xeb34('0xe5')]=_0x3e31f7[_0xeb34('0xdc')];}else if(this['queueReports'][_0x3e31f7[_0xeb34('0xde')]]){_0xdea0d1=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x3e31f7[_0xeb34('0xde')]]);_0xdea0d1[_0xeb34('0xad')]=_0x3e31f7[_0xeb34('0xdd')];_0xdea0d1[_0xeb34('0xae')]=_0x3e31f7[_0xeb34('0xde')];_0xdea0d1[_0xeb34('0x5a')]=_0xeb34('0x5b');_0xdea0d1[_0xeb34('0xa2')]=!![];_0xdea0d1['transfertype']=_0xeb34('0xdf');_0xdea0d1[_0xeb34('0xe4')]=!![];_0xdea0d1[_0xeb34('0xe5')]=_0x3e31f7[_0xeb34('0xe1')];}}}catch(_0x579bd){logger[_0xeb34('0x4b')]('[%s][voiceQueueReport][attendedtransfer]',_0x3e31f7['uniqueid'],util['inspect'](_0x579bd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0x31')]=function(_0x9eed89){try{if(this[_0xeb34('0x64')](_0x9eed89)){logger[_0xeb34('0x51')](_0xeb34('0xe6'),_0x9eed89[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x9eed89,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x9eed89[_0xeb34('0xdc')]]){var _0x1ece8b=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x9eed89[_0xeb34('0xdc')]]);_0x1ece8b[_0xeb34('0x5a')]=_0xeb34('0xe7');_0x1ece8b[_0xeb34('0xa2')]=!![];_0x1ece8b['transfertype']=_0xeb34('0xe8');_0x1ece8b[_0xeb34('0xad')]=_0x9eed89[_0xeb34('0xe9')];_0x1ece8b['transferuniqueid']=_0x9eed89[_0xeb34('0xdc')];logger[_0xeb34('0x88')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x9eed89[_0xeb34('0x52')],_0x1ece8b[_0xeb34('0x78')],_0x1ece8b[_0xeb34('0x5f')],_0x1ece8b[_0xeb34('0xad')],_0x1ece8b['transferuniqueid']);this[_0xeb34('0x2b')]({'event':_0xeb34('0xea'),'uniqueid':_0x9eed89[_0xeb34('0xdc')],'context':_0x9eed89['context'],'channel':_0x9eed89[_0xeb34('0xeb')]});}}}catch(_0x2bd23d){logger['error'](_0xeb34('0xe6'),_0x9eed89[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x2bd23d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x33e7ef){try{if(this[_0xeb34('0x64')](_0x33e7ef)){logger['debug']('[%s][voiceQueueReport][musiconholdstart]',_0x33e7ef[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x33e7ef,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x33e7ef['uniqueid']]){var _0x1a6536=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x33e7ef['uniqueid']]);if(!_[_0xeb34('0xcb')](_0x1a6536[_0xeb34('0x95')])){_0x1a6536[_0xeb34('0xec')]=moment()[_0xeb34('0x53')](_0xeb34('0x84'));logger[_0xeb34('0x88')](_0xeb34('0xed'),_0x33e7ef[_0xeb34('0x52')],_0x1a6536[_0xeb34('0xec')]);}}}}catch(_0xb5cc3c){logger[_0xeb34('0x4b')](_0xeb34('0xee'),_0x33e7ef[_0xeb34('0x52')],util[_0xeb34('0x48')](_0xb5cc3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xeb34('0x2e')]=function(_0x58031e){try{if(this[_0xeb34('0x64')](_0x58031e)){logger[_0xeb34('0x51')]('[%s][voiceQueueReport][musiconholdstop]',_0x58031e[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x58031e,{'showHidden':![],'depth':null}));if(this[_0xeb34('0x10')][_0x58031e['uniqueid']]){var _0xb19cf0=_[_0xeb34('0x8d')](this[_0xeb34('0x10')][_0x58031e[_0xeb34('0x52')]]);if(!_[_0xeb34('0xcb')](_0xb19cf0[_0xeb34('0xec')])){_0xb19cf0[_0xeb34('0xef')]+=moment()['milliseconds'](0x0)[_0xeb34('0xcf')](_0xb19cf0[_0xeb34('0xec')],_0xeb34('0xa9'));logger['info']('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x58031e[_0xeb34('0x52')],_0xb19cf0[_0xeb34('0xef')]);delete _0xb19cf0[_0xeb34('0xec')];}}}}catch(_0x334be4){logger[_0xeb34('0x4b')](_0xeb34('0xf0'),_0x58031e[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x334be4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xeb34('0xd')][_0xeb34('0xf1')]=function(_0x2a8b17){try{if(this[_0xeb34('0x64')](_0x2a8b17)){logger[_0xeb34('0x51')](_0xeb34('0xf2'),_0x2a8b17[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x2a8b17,{'showHidden':![],'depth':null}));if(_0x2a8b17[_0xeb34('0xf3')][_0xeb34('0xa6')]()==='set'){_0x2a8b17[_0xeb34('0xf4')]=_0x2a8b17[_0xeb34('0xf5')]&&_0x2a8b17[_0xeb34('0xf5')][_0xeb34('0xa5')](_0xeb34('0xf6'))?_0x2a8b17[_0xeb34('0xf5')]:(_0x2a8b17[_0xeb34('0xf5')]||_0x2a8b17['applicationdata'])[_0xeb34('0xa6')]();if(_['startsWith'](_0x2a8b17[_0xeb34('0xf4')][_0xeb34('0xa6')](),'cdr(')){logger[_0xeb34('0x88')](_0xeb34('0xf7'),_0x2a8b17[_0xeb34('0x52')],_0x2a8b17[_0xeb34('0xf3')],_0x2a8b17[_0xeb34('0xf4')]);if(_[_0xeb34('0x82')](this['channels'][_0x2a8b17[_0xeb34('0x52')]]))this[_0xeb34('0x13')][_0x2a8b17['uniqueid']]={};var _0x2b2784=_0x2a8b17['applicationdata']['split']('=');var _0x54f4b3=_0x2b2784[0x0][_0xeb34('0xa6')]()['match'](/cdr\((.*)\)/);if(_0x54f4b3)this[_0xeb34('0x13')][_0x2a8b17[_0xeb34('0x52')]][_0x54f4b3[0x1]]=_0x2b2784[0x1];}}}}catch(_0x19e7dd){logger[_0xeb34('0x4b')](_0xeb34('0xf8'),_0x2a8b17[_0xeb34('0x52')],util[_0xeb34('0x48')](_0x19e7dd,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index b9305b8..98b3872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fae=['queue','Request','CreateReportAgentPreview','createHistory','campaign'];(function(_0x1e467d,_0x325406){var _0xcd09c2=function(_0x1723aa){while(--_0x1723aa){_0x1e467d['push'](_0x1e467d['shift']());}};_0xcd09c2(++_0x325406);}(_0x3fae,0x1ac));var _0xe3fa=function(_0x1bb5ff,_0x5d8829){_0x1bb5ff=_0x1bb5ff-0x0;var _0x25963c=_0x3fae[_0x1bb5ff];return _0x25963c;};'use strict';var client=require('../client');exports[_0xe3fa('0x0')]=function(_0x41724f){return function(){_0x41724f[_0xe3fa('0x1')]=_0x41724f[_0xe3fa('0x2')];return client[_0xe3fa('0x3')]('CreateReportAgentPreview',{'body':_0x41724f,'log':_0xe3fa('0x4')});};};
\ No newline at end of file
+var _0xad67=['../client','campaign','queue','CreateReportAgentPreview'];(function(_0x2dbb5f,_0x466eb4){var _0x4c9f3a=function(_0x3bc6d8){while(--_0x3bc6d8){_0x2dbb5f['push'](_0x2dbb5f['shift']());}};_0x4c9f3a(++_0x466eb4);}(_0xad67,0x90));var _0x7ad6=function(_0x4496d4,_0x35a23c){_0x4496d4=_0x4496d4-0x0;var _0x549149=_0xad67[_0x4496d4];return _0x549149;};'use strict';var client=require(_0x7ad6('0x0'));exports['createHistory']=function(_0x20a633){return function(){_0x20a633[_0x7ad6('0x1')]=_0x20a633[_0x7ad6('0x2')];return client['Request'](_0x7ad6('0x3'),{'body':_0x20a633,'log':_0x7ad6('0x3')});};};
\ No newline at end of file
index 9882feb..472b608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x578c=['../client','create','Request','CreateAttachment'];(function(_0x2b010e,_0x3dddb7){var _0x47cdb5=function(_0x1f3c64){while(--_0x1f3c64){_0x2b010e['push'](_0x2b010e['shift']());}};_0x47cdb5(++_0x3dddb7);}(_0x578c,0x1e8));var _0xc578=function(_0x8767aa,_0x10524b){_0x8767aa=_0x8767aa-0x0;var _0x4f92e7=_0x578c[_0x8767aa];return _0x4f92e7;};'use strict';var client=require(_0xc578('0x0'));exports[_0xc578('0x1')]=function(_0x1d9ca0){return client[_0xc578('0x2')](_0xc578('0x3'),{'body':_0x1d9ca0,'log':_0xc578('0x3')});};
\ No newline at end of file
+var _0x263f=['Request','CreateAttachment','../client','create'];(function(_0x51918e,_0x499550){var _0x17f381=function(_0x4e7778){while(--_0x4e7778){_0x51918e['push'](_0x51918e['shift']());}};_0x17f381(++_0x499550);}(_0x263f,0x182));var _0xf263=function(_0x45bd57,_0x4bce74){_0x45bd57=_0x45bd57-0x0;var _0x4bceab=_0x263f[_0x45bd57];return _0x4bceab;};'use strict';var client=require(_0xf263('0x0'));exports[_0xf263('0x1')]=function(_0x1c3e9e){return client[_0xf263('0x2')](_0xf263('0x3'),{'body':_0x1c3e9e,'log':_0xf263('0x3')});};
\ No newline at end of file
index 0509b7e..3ba5504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','Trunk','callerid','TrunkBackup','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','GetCampaign','name','type','active','limitCalls'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x5f2f,0x73));var _0xf5f2=function(_0x301ac3,_0x519a9d){_0x301ac3=_0x301ac3-0x0;var _0x69fe9d=_0x5f2f[_0x301ac3];return _0x69fe9d;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),_0xf5f2('0x7'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0xf5f2('0x8'),_0xf5f2('0x9'),_0xf5f2('0xa'),_0xf5f2('0xb'),_0xf5f2('0xc'),_0xf5f2('0xd'),'dialNoAnswerRetryFrequency',_0xf5f2('0xe'),_0xf5f2('0xf'),_0xf5f2('0x10'),'dialDropMaxRetry',_0xf5f2('0x11'),_0xf5f2('0x12'),_0xf5f2('0x13'),'dialMachineMaxRetry',_0xf5f2('0x14'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0xf5f2('0x15'),_0xf5f2('0x16'),'dialAMDActive',_0xf5f2('0x17'),_0xf5f2('0x18'),_0xf5f2('0x19'),_0xf5f2('0x1a'),_0xf5f2('0x1b'),_0xf5f2('0x1c'),'dialAMDMaximumNumberOfWords',_0xf5f2('0x1d'),_0xf5f2('0x1e'),_0xf5f2('0x1f'),_0xf5f2('0x20'),_0xf5f2('0x21'),'dialCutDigit'],'include':[{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x22'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x22'),'as':_0xf5f2('0x24'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x23'),_0xf5f2('0x6')]},{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x25'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x25'),'as':_0xf5f2('0x26'),'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x27')]}]},{'model':'SquareProject','as':_0xf5f2('0x28'),'attributes':['id',_0xf5f2('0x4')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0x1cb0b4,_0x1fd48d){var _0x525b60=function(_0x1efccc){while(--_0x1efccc){_0x1cb0b4['push'](_0x1cb0b4['shift']());}};_0x525b60(++_0x1fd48d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xc4aa[_0x4ff09b];return _0x3f5c2e;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index eae067a..41ac62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x628e=['../client','createContact','Request','CreateCmContact','getContacts'];(function(_0x47b1a9,_0x14e74f){var _0x1be6e2=function(_0x8c39be){while(--_0x8c39be){_0x47b1a9['push'](_0x47b1a9['shift']());}};_0x1be6e2(++_0x14e74f);}(_0x628e,0x159));var _0xe628=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x628e[_0xfae23b];return _0x200640;};'use strict';var client=require(_0xe628('0x0'));exports[_0xe628('0x1')]=function(_0x5233de){return function(){return client[_0xe628('0x2')]('CreateCmContact',{'body':_0x5233de,'log':_0xe628('0x3')});};};exports[_0xe628('0x4')]=function(_0x23c722){return function(){return client['Request']('GetCmContact',{'options':_0x23c722,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x0867=['CreateCmContact','getContacts','GetCmContact','../client','createContact','Request'];(function(_0x4fa7b7,_0x22ed98){var _0x4eb35d=function(_0x5359db){while(--_0x5359db){_0x4fa7b7['push'](_0x4fa7b7['shift']());}};_0x4eb35d(++_0x22ed98);}(_0x0867,0x93));var _0x7086=function(_0x8a7e44,_0x4a6742){_0x8a7e44=_0x8a7e44-0x0;var _0x4ce3b8=_0x0867[_0x8a7e44];return _0x4ce3b8;};'use strict';var client=require(_0x7086('0x0'));exports[_0x7086('0x1')]=function(_0x3f9081){return function(){return client[_0x7086('0x2')](_0x7086('0x3'),{'body':_0x3f9081,'log':_0x7086('0x3')});};};exports[_0x7086('0x4')]=function(_0x260dfa){return function(){return client['Request'](_0x7086('0x5'),{'options':_0x260dfa,'log':'GetCmContact'});};};
\ No newline at end of file
index 836d236..14d6a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab40=['resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','moment','getContacts','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','rescheduleContact','ContactId','ListId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','GetContactDialer','getContactDialerIvr','format','moveContactManagedDialer','campaign','VoiceQueueId','countReScheduled','getContactPreview','GetCmHopperPreview','User','name','VoiceQueue','Queue','getContactRecallMe','Agent','db.CmHopper.UserId'];(function(_0xf5c51d,_0x365b54){var _0x164981=function(_0x1e9e41){while(--_0x1e9e41){_0xf5c51d['push'](_0xf5c51d['shift']());}};_0x164981(++_0x365b54);}(_0xab40,0xed));var _0x0ab4=function(_0x56d8b7,_0x1d856f){_0x56d8b7=_0x56d8b7-0x0;var _0x5c00dd=_0xab40[_0x56d8b7];return _0x5c00dd;};'use strict';var client=require('../client');var moment=require(_0x0ab4('0x0'));exports[_0x0ab4('0x1')]=function(_0x16dc7a,_0x5179cf){return function(){return client['Request']('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x16dc7a},'include':[{'model':_0x0ab4('0x2'),'as':_0x0ab4('0x3')}],'limit':_0x5179cf,'raw':![]},'log':_0x0ab4('0x4')});};};exports[_0x0ab4('0x5')]=function(_0x4e0b19,_0xe7226a,_0x5549ab){return function(){return client[_0x0ab4('0x6')](_0x0ab4('0x7'),{'body':_0x4e0b19,'options':{'where':{'VoiceQueueId':_0xe7226a,'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x5549ab},'log':_0x0ab4('0x7')});};};exports[_0x0ab4('0x8')]=function(_0x58eca9){return function(){return client[_0x0ab4('0x6')](_0x0ab4('0x7'),{'body':_0x58eca9,'options':{'where':{'ContactId':_0x58eca9[_0x0ab4('0x9')],'ListId':_0x58eca9[_0x0ab4('0xa')],'VoiceQueueId':_0x58eca9['VoiceQueueId'],'CampaignId':_0x58eca9[_0x0ab4('0xb')]}},'log':_0x0ab4('0x8')});};};exports[_0x0ab4('0xc')]=function(_0x3c96a1,_0x3e25cf,_0xe2788f){return function(){return client[_0x0ab4('0x6')](_0x0ab4('0xd'),{'options':{'where':{'VoiceQueueId':_0x3c96a1,'ListId':_0x3e25cf,'ContactId':_0xe2788f}},'log':_0x0ab4('0xd')});};};exports[_0x0ab4('0xe')]=function(_0x2a5c62,_0x539752,_0x3e076c,_0xe04905){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2a5c62,'active':![],'scheduledat':{'$lte':moment()['format'](_0x0ab4('0xf'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x539752}}]},'order':[[_0x0ab4('0x10'),_0x0ab4('0x11')],[_0x0ab4('0x12'),_0xe04905],['id',_0x0ab4('0x13')]],'raw':!![],'limit':_0x3e076c},'log':_0x0ab4('0x14')});};};exports[_0x0ab4('0x15')]=function(_0x1a13c7,_0x3f4da5,_0x272eef){return function(){return client['Request'](_0x0ab4('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x1a13c7,'active':![],'scheduledat':{'$lte':moment()[_0x0ab4('0x16')](_0x0ab4('0xf'))}},'include':[{'model':_0x0ab4('0x2'),'as':_0x0ab4('0x3')}],'order':[[_0x0ab4('0x10'),'DESC'],[_0x0ab4('0x12'),_0x272eef],['id','ASC']],'raw':!![],'limit':_0x3f4da5},'log':'GetContactDialerIvr'});};};exports[_0x0ab4('0x17')]=function(_0x8e92fd,_0x3f324c){return function(){_0x8e92fd[_0x0ab4('0x18')]=_0x8e92fd['queue'];return client[_0x0ab4('0x6')]('MoveContactManagedDialer',{'body':_0x8e92fd,'options':{'where':{'ContactId':_0x8e92fd[_0x0ab4('0x9')],'ListId':_0x8e92fd[_0x0ab4('0xa')],'VoiceQueueId':_0x8e92fd[_0x0ab4('0x19')],'CampaignId':_0x8e92fd[_0x0ab4('0xb')],'active':_0x3f324c?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x0ab4('0x1a')]=function(_0x14d932){return function(){return client[_0x0ab4('0x6')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x14d932['id']?_0x14d932['id']||null:null}},'log':_0x0ab4('0x1a')});};};exports[_0x0ab4('0x1b')]=function(_0x55bc52){return function(){return client[_0x0ab4('0x6')](_0x0ab4('0x1c'),{'options':{'where':{'id':_0x55bc52},'include':[{'model':'CmContact','as':'Contact'},{'model':_0x0ab4('0x1d'),'as':'Agent','attributes':['id',_0x0ab4('0x1e')]},{'model':_0x0ab4('0x1f'),'as':_0x0ab4('0x20'),'attributes':['id','name']}],'raw':!![]},'log':_0x0ab4('0x4')});};};exports['unlockContact']=function(_0x1d98b3,_0x36aa07,_0x488cb2){return function(){return client[_0x0ab4('0x6')]('UpdateCmHopper',{'body':_0x1d98b3,'options':{'where':{'id':_0x36aa07},'limit':_0x488cb2},'log':_0x0ab4('0x7')});};};exports[_0x0ab4('0x21')]=function(_0x4c83a0,_0x59e767){return function(){return client[_0x0ab4('0x6')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4c83a0,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x0ab4('0xf'))},'UserId':{'$in':_0x59e767}},'order':[[_0x0ab4('0x10'),'DESC'],[_0x0ab4('0x12'),_0x0ab4('0x11')],['id',_0x0ab4('0x13')]],'include':[{'model':_0x0ab4('0x2'),'as':_0x0ab4('0x3')},{'model':_0x0ab4('0x1d'),'as':_0x0ab4('0x22'),'attributes':['id',_0x0ab4('0x1e'),'voicePause']}],'group':_0x0ab4('0x23'),'raw':!![]},'log':_0x0ab4('0x14')});};};exports[_0x0ab4('0x24')]=function(_0x23316f,_0x444dff){return client[_0x0ab4('0x6')](_0x0ab4('0x25'),{'body':_0x23316f,'options':_0x444dff||{},'log':_0x0ab4('0x25')});};exports[_0x0ab4('0x26')]=function(_0x2625bb,_0x1fb931,_0x479469){return function(){return client['Request']('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0x2625bb,'interval':_0x1fb931,'availableAgentsIds':_0x479469}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
+var _0xd6bd=['format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','GetContactDialer','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','countReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','GetContactRecallMe','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','moment','Request','CmContact','Contact','getCmHopper','UpdateCmHopper'];(function(_0x8aad17,_0x2a4611){var _0x3ca72=function(_0x36d066){while(--_0x36d066){_0x8aad17['push'](_0x8aad17['shift']());}};_0x3ca72(++_0x2a4611);}(_0xd6bd,0xfd));var _0xdd6b=function(_0x342de6,_0x343927){_0x342de6=_0x342de6-0x0;var _0x6b7e5a=_0xd6bd[_0x342de6];return _0x6b7e5a;};'use strict';var client=require('../client');var moment=require(_0xdd6b('0x0'));exports['getContacts']=function(_0x1cce08,_0x570285){return function(){return client[_0xdd6b('0x1')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x1cce08},'include':[{'model':_0xdd6b('0x2'),'as':_0xdd6b('0x3')}],'limit':_0x570285,'raw':![]},'log':_0xdd6b('0x4')});};};exports['updateContacts']=function(_0x323699,_0x5f428c,_0x34b2c9){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0x5'),{'body':_0x323699,'options':{'where':{'VoiceQueueId':_0x5f428c,'scheduledat':{'$lte':moment()[_0xdd6b('0x6')](_0xdd6b('0x7'))}},'limit':_0x34b2c9},'log':'UpdateCmHopper'});};};exports[_0xdd6b('0x8')]=function(_0x55d0ef){return function(){return client[_0xdd6b('0x1')]('UpdateCmHopper',{'body':_0x55d0ef,'options':{'where':{'ContactId':_0x55d0ef[_0xdd6b('0x9')],'ListId':_0x55d0ef[_0xdd6b('0xa')],'VoiceQueueId':_0x55d0ef[_0xdd6b('0xb')],'CampaignId':_0x55d0ef[_0xdd6b('0xc')]}},'log':'rescheduleContact'});};};exports['destroyContact']=function(_0x10e3f4,_0x1bc266,_0x58f6c9){return function(){return client[_0xdd6b('0x1')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x10e3f4,'ListId':_0x1bc266,'ContactId':_0x58f6c9}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x1e5d5f,_0x5c4952,_0xb7019a,_0x480b0e){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0xd'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1e5d5f,'active':![],'scheduledat':{'$lte':moment()[_0xdd6b('0x6')](_0xdd6b('0x7'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x5c4952}}]},'order':[[_0xdd6b('0xe'),_0xdd6b('0xf')],[_0xdd6b('0x10'),_0x480b0e],['id',_0xdd6b('0x11')]],'raw':!![],'limit':_0xb7019a},'log':'GetContactDialer'});};};exports['getContactDialerIvr']=function(_0x35216f,_0x513f84,_0x2148c2){return function(){return client['Request'](_0xdd6b('0xd'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x35216f,'active':![],'scheduledat':{'$lte':moment()['format'](_0xdd6b('0x7'))}},'include':[{'model':_0xdd6b('0x2'),'as':_0xdd6b('0x3')}],'order':[[_0xdd6b('0xe'),_0xdd6b('0xf')],['scheduledat',_0x2148c2],['id',_0xdd6b('0x11')]],'raw':!![],'limit':_0x513f84},'log':_0xdd6b('0x12')});};};exports[_0xdd6b('0x13')]=function(_0x364960,_0x3548d4){return function(){_0x364960['campaign']=_0x364960[_0xdd6b('0x14')];return client[_0xdd6b('0x1')](_0xdd6b('0x15'),{'body':_0x364960,'options':{'where':{'ContactId':_0x364960[_0xdd6b('0x9')],'ListId':_0x364960[_0xdd6b('0xa')],'VoiceQueueId':_0x364960['VoiceQueueId'],'CampaignId':_0x364960[_0xdd6b('0xc')],'active':_0x3548d4?undefined:!![]}},'log':_0xdd6b('0x15')});};};exports['countReScheduled']=function(_0x534b5b){return function(){return client[_0xdd6b('0x1')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x534b5b['id']?_0x534b5b['id']||null:null}},'log':_0xdd6b('0x16')});};};exports[_0xdd6b('0x17')]=function(_0xd3f283){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0x18'),{'options':{'where':{'id':_0xd3f283},'include':[{'model':_0xdd6b('0x2'),'as':_0xdd6b('0x3')},{'model':_0xdd6b('0x19'),'as':_0xdd6b('0x1a'),'attributes':['id',_0xdd6b('0x1b')]},{'model':_0xdd6b('0x1c'),'as':_0xdd6b('0x1d'),'attributes':['id','name']}],'raw':!![]},'log':_0xdd6b('0x4')});};};exports[_0xdd6b('0x1e')]=function(_0x21784d,_0x21a733,_0x5837f6){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0x5'),{'body':_0x21784d,'options':{'where':{'id':_0x21a733},'limit':_0x5837f6},'log':_0xdd6b('0x5')});};};exports['getContactRecallMe']=function(_0x2d871d,_0x5ddb22){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0x1f'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2d871d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xdd6b('0x7'))},'UserId':{'$in':_0x5ddb22}},'order':[[_0xdd6b('0xe'),'DESC'],[_0xdd6b('0x10'),_0xdd6b('0xf')],['id',_0xdd6b('0x11')]],'include':[{'model':_0xdd6b('0x2'),'as':_0xdd6b('0x3')},{'model':_0xdd6b('0x19'),'as':'Agent','attributes':['id',_0xdd6b('0x1b'),_0xdd6b('0x20')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xdd6b('0xd')});};};exports[_0xdd6b('0x21')]=function(_0xa0a6f2,_0x566c0a){return client[_0xdd6b('0x1')](_0xdd6b('0x22'),{'body':_0xa0a6f2,'options':_0x566c0a||{},'log':_0xdd6b('0x22')});};exports[_0xdd6b('0x23')]=function(_0x863ae0,_0x39cd3b,_0x38b29f){return function(){return client[_0xdd6b('0x1')](_0xdd6b('0x24'),{'body':{'where':{'voiceQueueIds':_0x863ae0,'interval':_0x39cd3b,'availableAgentsIds':_0x38b29f}},'log':_0xdd6b('0x23')});};};
\ No newline at end of file
index dce8a06..4dfc909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e82=['Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','IncrementPreviewCounters','../client','moment','verifyAdditionalPhones'];(function(_0x2ba3ed,_0x3bad65){var _0x2f82b9=function(_0x464bf0){while(--_0x464bf0){_0x2ba3ed['push'](_0x2ba3ed['shift']());}};_0x2f82b9(++_0x3bad65);}(_0x0e82,0x13d));var _0x20e8=function(_0x98b7ff,_0x51065a){_0x98b7ff=_0x98b7ff-0x0;var _0xa2df96=_0x0e82[_0x98b7ff];return _0xa2df96;};'use strict';var client=require(_0x20e8('0x0'));var moment=require(_0x20e8('0x1'));exports[_0x20e8('0x2')]=function(_0x155001,_0x3ae7d6,_0x37d884){return function(){return client[_0x20e8('0x3')](_0x20e8('0x4'),{'body':_0x155001,'reason':_0x3ae7d6,'entity':_0x37d884,'log':'VerifyAdditionalPhones'});};};exports[_0x20e8('0x5')]=function(_0x30416e,_0x1accf1,_0x5a1f15){return function(){return client[_0x20e8('0x3')](_0x20e8('0x6'),{'body':_0x30416e,'duration':_0x1accf1,'waitTime':_0x5a1f15,'log':_0x20e8('0x6')});};};exports['incrementPreviewCounters']=function(_0xa596fe){return function(){return client[_0x20e8('0x3')](_0x20e8('0x7'),{'body':_0xa596fe,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
+var _0xf794=['VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','IncrementPreviewCounters','../client','verifyAdditionalPhones','Request'];(function(_0x45aa17,_0x43d1fb){var _0x1a1050=function(_0x5aa805){while(--_0x5aa805){_0x45aa17['push'](_0x45aa17['shift']());}};_0x1a1050(++_0x43d1fb);}(_0xf794,0x170));var _0x4f79=function(_0x4781b0,_0xabdd81){_0x4781b0=_0x4781b0-0x0;var _0x3b2166=_0xf794[_0x4781b0];return _0x3b2166;};'use strict';var client=require(_0x4f79('0x0'));var moment=require('moment');exports[_0x4f79('0x1')]=function(_0x40a8d,_0x261869,_0x51acc7){return function(){return client[_0x4f79('0x2')](_0x4f79('0x3'),{'body':_0x40a8d,'reason':_0x261869,'entity':_0x51acc7,'log':_0x4f79('0x3')});};};exports[_0x4f79('0x4')]=function(_0x12db55,_0x1010bd,_0x704833){return function(){return client[_0x4f79('0x2')](_0x4f79('0x5'),{'body':_0x12db55,'duration':_0x1010bd,'waitTime':_0x704833,'log':'SwapAdditionalPhones'});};};exports['incrementPreviewCounters']=function(_0x3b31d4){return function(){return client[_0x4f79('0x2')]('IncrementPreviewCounters',{'body':_0x3b31d4,'log':_0x4f79('0x6')});};};
\ No newline at end of file
index ff65886..800fd32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e4d=['phone','GetCmHopperBlack','checkIsBlackListIvr','Request','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','VoiceQueueId'];(function(_0x163cd0,_0x461c03){var _0x166213=function(_0x450910){while(--_0x450910){_0x163cd0['push'](_0x163cd0['shift']());}};_0x166213(++_0x461c03);}(_0x7e4d,0x1a4));var _0xd7e4=function(_0x4e70ea,_0x4d43f8){_0x4e70ea=_0x4e70ea-0x0;var _0x5e07c5=_0x7e4d[_0x4e70ea];return _0x5e07c5;};'use strict';var client=require(_0xd7e4('0x0'));exports[_0xd7e4('0x1')]=function(_0x4d36c9){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x4d36c9[_0xd7e4('0x2')],'phone':_0x4d36c9[_0xd7e4('0x3')]},'raw':![]},'log':_0xd7e4('0x4')});};};exports[_0xd7e4('0x5')]=function(_0x4cda40){return function(){return client[_0xd7e4('0x6')](_0xd7e4('0x4'),{'options':{'where':{'CampaignId':_0x4cda40[_0xd7e4('0x7')],'phone':_0x4cda40['phone']},'raw':![]},'log':_0xd7e4('0x8')});};};
\ No newline at end of file
+var _0xdafc=['GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','phone','CampaignId'];(function(_0x28f9d2,_0x1d40ab){var _0x4eecc8=function(_0x4b1c53){while(--_0x4b1c53){_0x28f9d2['push'](_0x28f9d2['shift']());}};_0x4eecc8(++_0x1d40ab);}(_0xdafc,0x71));var _0xcdaf=function(_0x50cf67,_0x10eb50){_0x50cf67=_0x50cf67-0x0;var _0x1b1743=_0xdafc[_0x50cf67];return _0x1b1743;};'use strict';var client=require(_0xcdaf('0x0'));exports[_0xcdaf('0x1')]=function(_0x4b13c5){return function(){return client[_0xcdaf('0x2')](_0xcdaf('0x3'),{'options':{'where':{'VoiceQueueId':_0x4b13c5['VoiceQueueId'],'phone':_0x4b13c5[_0xcdaf('0x4')]},'raw':![]},'log':_0xcdaf('0x3')});};};exports['checkIsBlackListIvr']=function(_0x46e258){return function(){return client[_0xcdaf('0x2')](_0xcdaf('0x3'),{'options':{'where':{'CampaignId':_0x46e258[_0xcdaf('0x5')],'phone':_0x46e258['phone']},'raw':![]},'log':_0xcdaf('0x6')});};};
\ No newline at end of file
index e395b0f..e04524e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd02=['Request','CreateCmHopperFinal','../client','createContact','queue'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xdd02,0x12e));var _0x2dd0=function(_0x41f2d1,_0xbb9fdb){_0x41f2d1=_0x41f2d1-0x0;var _0x3d3d81=_0xdd02[_0x41f2d1];return _0x3d3d81;};'use strict';var client=require(_0x2dd0('0x0'));exports[_0x2dd0('0x1')]=function(_0x32ad7f){return function(){_0x32ad7f['campaign']=_0x32ad7f[_0x2dd0('0x2')];return client[_0x2dd0('0x3')](_0x2dd0('0x4'),{'body':_0x32ad7f,'log':_0x2dd0('0x4')});};};
\ No newline at end of file
+var _0xba68=['queue','CreateCmHopperFinal','../client','campaign'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xba68,0x17e));var _0x8ba6=function(_0x3245c1,_0x2c4a19){_0x3245c1=_0x3245c1-0x0;var _0x33f516=_0xba68[_0x3245c1];return _0x33f516;};'use strict';var client=require(_0x8ba6('0x0'));exports['createContact']=function(_0xff74f6){return function(){_0xff74f6[_0x8ba6('0x1')]=_0xff74f6[_0x8ba6('0x2')];return client['Request']('CreateCmHopperFinal',{'body':_0xff74f6,'log':_0x8ba6('0x3')});};};
\ No newline at end of file
index 106ef59..760fb6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d2=['day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','startOf'];(function(_0x4853e4,_0xd2e770){var _0x140b6e=function(_0x50b425){while(--_0x50b425){_0x4853e4['push'](_0x4853e4['shift']());}};_0x140b6e(++_0xd2e770);}(_0x29d2,0x1c7));var _0x229d=function(_0x53076d,_0x3170a4){_0x53076d=_0x53076d-0x0;var _0xabdd81=_0x29d2[_0x53076d];return _0xabdd81;};'use strict';var client=require('../client');var moment=require(_0x229d('0x0'));exports[_0x229d('0x1')]=function(_0x1f1f7e){return function(){_0x1f1f7e[_0x229d('0x2')]=_0x1f1f7e[_0x229d('0x3')];return client[_0x229d('0x4')](_0x229d('0x5'),{'body':_0x1f1f7e,'log':_0x229d('0x5')});};};exports[_0x229d('0x6')]=function(_0x80a933){return function(){return client[_0x229d('0x4')](_0x229d('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x229d('0x8')](_0x80a933,'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x229d('0x9')](_0x229d('0xa'))]}},'raw':![]},'log':_0x229d('0xb')});};};exports['getVoiceQueueHopperHistory']=function(_0x2df6a2){return function(){return client[_0x229d('0x4')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x229d('0xc')](_0x229d('0xd'))[_0x229d('0x9')](_0x229d('0xa')),moment()[_0x229d('0xe')](_0x229d('0xd'))[_0x229d('0x9')](_0x229d('0xa'))]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x229d('0xf')]=function(_0x17c139){return function(){return client['Request'](_0x229d('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')[_0x229d('0x9')](_0x229d('0xa')),moment()[_0x229d('0xe')](_0x229d('0xd'))[_0x229d('0x9')](_0x229d('0xa'))]},'campaigntype':_0x229d('0x11')},'raw':![]},'log':_0x229d('0x10')});};};
\ No newline at end of file
+var _0x5bab=['createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','format','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day','endOf','GetVoiceQueueHopperHistory','ivr','GetCampaignHopperHistory','../client'];(function(_0x4656a2,_0x44fdf0){var _0xd29357=function(_0x17367b){while(--_0x17367b){_0x4656a2['push'](_0x4656a2['shift']());}};_0xd29357(++_0x44fdf0);}(_0x5bab,0x71));var _0xb5ba=function(_0x594de9,_0x571327){_0x594de9=_0x594de9-0x0;var _0x303bc9=_0x5bab[_0x594de9];return _0x303bc9;};'use strict';var client=require(_0xb5ba('0x0'));var moment=require('moment');exports[_0xb5ba('0x1')]=function(_0x400e0e){return function(){_0x400e0e[_0xb5ba('0x2')]=_0x400e0e[_0xb5ba('0x3')];return client[_0xb5ba('0x4')](_0xb5ba('0x5'),{'body':_0x400e0e,'log':_0xb5ba('0x5')});};};exports[_0xb5ba('0x6')]=function(_0x36668e){return function(){return client['Request']('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0xb5ba('0x7')](_0x36668e,_0xb5ba('0x8'))['format'](_0xb5ba('0x9')),moment()[_0xb5ba('0xa')](_0xb5ba('0x9'))]}},'raw':![]},'log':_0xb5ba('0xb')});};};exports[_0xb5ba('0xc')]=function(_0x45273c){return function(){return client['Request']('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xb5ba('0xd')](_0xb5ba('0xe'))['format'](_0xb5ba('0x9')),moment()[_0xb5ba('0xf')]('day')['format'](_0xb5ba('0x9'))]},'campaigntype':_0xb5ba('0x3')},'raw':![]},'log':_0xb5ba('0x10')});};};exports['getCampaignHopperHistory']=function(_0x5a2ed9){return function(){return client[_0xb5ba('0x4')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xb5ba('0xd')](_0xb5ba('0xe'))[_0xb5ba('0xa')](_0xb5ba('0x9')),moment()[_0xb5ba('0xf')](_0xb5ba('0xe'))[_0xb5ba('0xa')](_0xb5ba('0x9'))]},'campaigntype':_0xb5ba('0x11')},'raw':![]},'log':_0xb5ba('0x12')});};};
\ No newline at end of file
index e2ad879..74cb5b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6582=['active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','ecm','headerinfo','localstationid','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','Trunk','callerid'];(function(_0x326f81,_0x57c9d8){var _0x8a3c6e=function(_0xde3601){while(--_0xde3601){_0x326f81['push'](_0x326f81['shift']());}};_0x8a3c6e(++_0x57c9d8);}(_0x6582,0x108));var _0x2658=function(_0x126af7,_0x25fa06){_0x126af7=_0x126af7-0x0;var _0x25b500=_0x6582[_0x126af7];return _0x25b500;};'use strict';var client=require(_0x2658('0x0'));exports[_0x2658('0x1')]=function(){return function(){return client[_0x2658('0x2')](_0x2658('0x3'),{'options':{'raw':![],'attributes':['id',_0x2658('0x4'),'description',_0x2658('0x5'),_0x2658('0x6'),_0x2658('0x7'),'minrate','maxrate','modem',_0x2658('0x8'),_0x2658('0x9'),_0x2658('0xa'),_0x2658('0xb'),_0x2658('0xc'),_0x2658('0xd'),'key'],'include':[{'model':_0x2658('0xe'),'as':_0x2658('0xe'),'attributes':['id',_0x2658('0x4'),_0x2658('0xf'),_0x2658('0x10')]}]},'log':_0x2658('0x11')});};};exports[_0x2658('0x12')]=function(_0x1aaaac,_0x428f52){return client['Request'](_0x2658('0x13'),{'account':{'id':_0x1aaaac},'body':_0x428f52,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x4ca7=['TrunkId','ListId','key','Trunk','active','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','name','description','localstationid','maxrate','modem','faxdetect','tech'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x42786b,_0x14ff34){_0x42786b=_0x42786b-0x0;var _0x4d5ddc=_0x4ca7[_0x42786b];return _0x4d5ddc;};'use strict';var client=require(_0x74ca('0x0'));exports[_0x74ca('0x1')]=function(){return function(){return client[_0x74ca('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x74ca('0x3'),_0x74ca('0x4'),'ecm','headerinfo',_0x74ca('0x5'),'minrate',_0x74ca('0x6'),_0x74ca('0x7'),'gateway',_0x74ca('0x8'),'t38timeout',_0x74ca('0x9'),_0x74ca('0xa'),_0x74ca('0xb'),_0x74ca('0xc')],'include':[{'model':_0x74ca('0xd'),'as':_0x74ca('0xd'),'attributes':['id',_0x74ca('0x3'),'callerid',_0x74ca('0xe')]}]},'log':'getFaxAccount'});};};exports[_0x74ca('0xf')]=function(_0x16764e,_0x5bf3eb){return client[_0x74ca('0x2')](_0x74ca('0x10'),{'account':{'id':_0x16764e},'body':_0x5bf3eb,'log':_0x74ca('0x10')});};
\ No newline at end of file
index bbf3649..521e9f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25d6=['Request','UpdateFaxMessage','../client','update'];(function(_0x5e3115,_0x540600){var _0x5a1dc6=function(_0x1163f5){while(--_0x1163f5){_0x5e3115['push'](_0x5e3115['shift']());}};_0x5a1dc6(++_0x540600);}(_0x25d6,0xb6));var _0x625d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25d6[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x625d('0x0'));exports[_0x625d('0x1')]=function(_0x52cfe8,_0x411188){return client[_0x625d('0x2')](_0x625d('0x3'),{'body':_0x411188,'options':{'where':{'AttachmentId':_0x52cfe8}},'log':_0x625d('0x3')});};
\ No newline at end of file
+var _0xc2c1=['update','UpdateFaxMessage','../client'];(function(_0x419e42,_0x20ddd5){var _0x2609f0=function(_0x53dd97){while(--_0x53dd97){_0x419e42['push'](_0x419e42['shift']());}};_0x2609f0(++_0x20ddd5);}(_0xc2c1,0x9e));var _0x1c2c=function(_0x18fa4b,_0x5becac){_0x18fa4b=_0x18fa4b-0x0;var _0x3ba017=_0xc2c1[_0x18fa4b];return _0x3ba017;};'use strict';var client=require(_0x1c2c('0x0'));exports[_0x1c2c('0x1')]=function(_0x2a0bbd,_0x5f45c0){return client['Request'](_0x1c2c('0x2'),{'body':_0x5f45c0,'options':{'where':{'AttachmentId':_0x2a0bbd}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index c11b5b4..1ebf337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd8=['password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','Tag','Tags','GetDeskAccount','../../client','Request','name','description','username'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbfd8,0x1c6));var _0x8bfd=function(_0x3c095b,_0x274c7f){_0x3c095b=_0x3c095b-0x0;var _0xb5643=_0xbfd8[_0x3c095b];return _0xb5643;};'use strict';var client=require(_0x8bfd('0x0'));exports['getDeskAccounts']=function(){return function(_0x4919a5){return client[_0x8bfd('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x8bfd('0x2'),_0x8bfd('0x3'),_0x8bfd('0x4'),_0x8bfd('0x5'),_0x8bfd('0x6'),_0x8bfd('0x7'),_0x8bfd('0x8'),_0x8bfd('0x9')],'include':[{'model':_0x8bfd('0xa'),'as':_0x8bfd('0xb'),'attributes':['id','name'],'include':[{'model':_0x8bfd('0xc'),'as':_0x8bfd('0xd'),'attributes':['id',_0x8bfd('0x8'),_0x8bfd('0xe'),_0x8bfd('0xf')],'include':[{'model':_0x8bfd('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x8bfd('0xc'),'as':_0x8bfd('0x11'),'attributes':['id','type','content','key',_0x8bfd('0x12'),_0x8bfd('0x13'),_0x8bfd('0xf')],'include':[{'model':_0x8bfd('0x10'),'as':_0x8bfd('0x10'),'attributes':['id',_0x8bfd('0x2')]}]},{'model':_0x8bfd('0xc'),'as':_0x8bfd('0x14'),'attributes':['id','type','content',_0x8bfd('0x15'),_0x8bfd('0x16'),_0x8bfd('0x17'),'variableName'],'include':[{'model':'Variable','as':_0x8bfd('0x10'),'attributes':['id','name']}]},{'model':_0x8bfd('0x18'),'as':_0x8bfd('0x19'),'attributes':['id',_0x8bfd('0x2')]}]}]},'log':_0x8bfd('0x1a')});};};
\ No newline at end of file
+var _0x4583=['idField','nameField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','variableName','Variable','content','key','keyContent','Fields'];(function(_0x10b967,_0xb32c4d){var _0x264da2=function(_0x1a7212){while(--_0x1a7212){_0x10b967['push'](_0x10b967['shift']());}};_0x264da2(++_0xb32c4d);}(_0x4583,0xe5));var _0x3458=function(_0x2cacf1,_0x2aeba2){_0x2cacf1=_0x2cacf1-0x0;var _0x28d1ae=_0x4583[_0x2cacf1];return _0x28d1ae;};'use strict';var client=require(_0x3458('0x0'));exports[_0x3458('0x1')]=function(){return function(_0x132d49){return client[_0x3458('0x2')](_0x3458('0x3'),{'options':{'raw':![],'attributes':['id',_0x3458('0x4'),'description',_0x3458('0x5'),_0x3458('0x6'),_0x3458('0x7'),_0x3458('0x8'),_0x3458('0x9'),_0x3458('0xa')],'include':[{'model':_0x3458('0xb'),'as':_0x3458('0xc'),'attributes':['id','name'],'include':[{'model':_0x3458('0xd'),'as':_0x3458('0xe'),'attributes':['id',_0x3458('0x9'),'content',_0x3458('0xf')],'include':[{'model':_0x3458('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x3458('0xd'),'as':'Descriptions','attributes':['id','type',_0x3458('0x11'),_0x3458('0x12'),'keyType',_0x3458('0x13'),_0x3458('0xf')],'include':[{'model':_0x3458('0x10'),'as':_0x3458('0x10'),'attributes':['id',_0x3458('0x4')]}]},{'model':'DeskField','as':_0x3458('0x14'),'attributes':['id',_0x3458('0x9'),_0x3458('0x11'),_0x3458('0x15'),_0x3458('0x16'),_0x3458('0x17'),_0x3458('0xf')],'include':[{'model':_0x3458('0x10'),'as':_0x3458('0x10'),'attributes':['id',_0x3458('0x4')]}]},{'model':'Tag','as':_0x3458('0x18'),'attributes':['id',_0x3458('0x4')]}]}]},'log':_0x3458('0x3')});};};
\ No newline at end of file
index 08932d1..40c0fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['Dynamics365Field','idField','nameField','customField','CloudProvider','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','name','ticketType','moduleCreate','Subjects','type','variableName','Variable','content','key','keyType'];(function(_0x9e3467,_0x1f6a0d){var _0x4dd5fe=function(_0x207f56){while(--_0x207f56){_0x9e3467['push'](_0x9e3467['shift']());}};_0x4dd5fe(++_0x1f6a0d);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x3e89f0,_0x177bb8){_0x3e89f0=_0x3e89f0-0x0;var _0x52d3cb=_0xcf2f[_0x3e89f0];return _0x52d3cb;};'use strict';var client=require(_0xfcf2('0x0'));exports[_0xfcf2('0x1')]=function(){return function(_0xe6b3a5){return client[_0xfcf2('0x2')](_0xfcf2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xfcf2('0x4'),_0xfcf2('0x5'),_0xfcf2('0x6'),_0xfcf2('0x7'),_0xfcf2('0x8'),_0xfcf2('0x9'),_0xfcf2('0xa'),_0xfcf2('0xb'),_0xfcf2('0xc')],'include':[{'model':_0xfcf2('0xd'),'as':_0xfcf2('0xe'),'attributes':['id',_0xfcf2('0xf'),_0xfcf2('0x10'),_0xfcf2('0x11'),'additionalSearchContact','openNewTab'],'include':[{'model':'Dynamics365Field','as':_0xfcf2('0x12'),'attributes':['id',_0xfcf2('0x13'),'content',_0xfcf2('0x14')],'include':[{'model':_0xfcf2('0x15'),'as':_0xfcf2('0x15'),'attributes':['id',_0xfcf2('0xf')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id',_0xfcf2('0x13'),_0xfcf2('0x16'),_0xfcf2('0x17'),_0xfcf2('0x18'),'keyContent',_0xfcf2('0x14')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xfcf2('0x19'),'as':'Fields','attributes':['id',_0xfcf2('0x13'),_0xfcf2('0x16'),_0xfcf2('0x1a'),_0xfcf2('0x1b'),_0xfcf2('0x1c'),_0xfcf2('0x14')],'include':[{'model':_0xfcf2('0x15'),'as':'Variable','attributes':['id',_0xfcf2('0xf')]}]}]},{'model':_0xfcf2('0x1d'),'as':_0xfcf2('0x1d'),'attributes':['id','data2',_0xfcf2('0x1e'),_0xfcf2('0x1f')]}]},'log':_0xfcf2('0x3')});};};
\ No newline at end of file
+var _0xf846=['Dynamics365Configuration','ticketType','moduleCreate','openNewTab','Dynamics365Field','type','content','variableName','Variable','Descriptions','key','keyContent','idField','customField','CloudProvider','data2','data7','../../client','getDynamics365Accounts','Request','name','username','password','remoteUri','clientId','clientSecret','serverUrl','description','modernAuthentication'];(function(_0x42c118,_0x197006){var _0x112ebd=function(_0x337411){while(--_0x337411){_0x42c118['push'](_0x42c118['shift']());}};_0x112ebd(++_0x197006);}(_0xf846,0x85));var _0x6f84=function(_0x426d75,_0x527f24){_0x426d75=_0x426d75-0x0;var _0x15a41c=_0xf846[_0x426d75];return _0x15a41c;};'use strict';var client=require(_0x6f84('0x0'));exports[_0x6f84('0x1')]=function(){return function(_0xc3809a){return client[_0x6f84('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x6f84('0x3'),_0x6f84('0x4'),_0x6f84('0x5'),_0x6f84('0x6'),'tenantId',_0x6f84('0x7'),_0x6f84('0x8'),_0x6f84('0x9'),_0x6f84('0xa'),_0x6f84('0xb')],'include':[{'model':_0x6f84('0xc'),'as':'Configurations','attributes':['id',_0x6f84('0x3'),_0x6f84('0xd'),_0x6f84('0xe'),'additionalSearchContact',_0x6f84('0xf')],'include':[{'model':_0x6f84('0x10'),'as':'Subjects','attributes':['id',_0x6f84('0x11'),_0x6f84('0x12'),_0x6f84('0x13')],'include':[{'model':_0x6f84('0x14'),'as':_0x6f84('0x14'),'attributes':['id',_0x6f84('0x3')]}]},{'model':_0x6f84('0x10'),'as':_0x6f84('0x15'),'attributes':['id',_0x6f84('0x11'),_0x6f84('0x12'),_0x6f84('0x16'),'keyType',_0x6f84('0x17'),'variableName'],'include':[{'model':_0x6f84('0x14'),'as':_0x6f84('0x14'),'attributes':['id','name']}]},{'model':_0x6f84('0x10'),'as':'Fields','attributes':['id',_0x6f84('0x11'),'content',_0x6f84('0x18'),'nameField',_0x6f84('0x19'),'variableName'],'include':[{'model':_0x6f84('0x14'),'as':_0x6f84('0x14'),'attributes':['id',_0x6f84('0x3')]}]}]},{'model':_0x6f84('0x1a'),'as':_0x6f84('0x1a'),'attributes':['id',_0x6f84('0x1b'),'data5',_0x6f84('0x1c')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index c2778ca..ad27d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8caf=['content','Variable','Descriptions','keyType','keyContent','variableName','idField','nameField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','type'];(function(_0x410721,_0x4a42a1){var _0x1365fe=function(_0x4ac446){while(--_0x4ac446){_0x410721['push'](_0x410721['shift']());}};_0x1365fe(++_0x4a42a1);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x373059,_0x17b09c){_0x373059=_0x373059-0x0;var _0x368f67=_0x8caf[_0x373059];return _0x368f67;};'use strict';var client=require('../../client');exports[_0xf8ca('0x0')]=function(){return function(_0x215811){return client[_0xf8ca('0x1')](_0xf8ca('0x2'),{'options':{'raw':![],'attributes':['id',_0xf8ca('0x3'),_0xf8ca('0x4'),'apiKey',_0xf8ca('0x5'),_0xf8ca('0x6')],'include':[{'model':_0xf8ca('0x7'),'as':_0xf8ca('0x8'),'attributes':['id',_0xf8ca('0x3')],'include':[{'model':_0xf8ca('0x9'),'attributes':['id','name']},{'model':_0xf8ca('0xa'),'as':_0xf8ca('0xb'),'attributes':['id',_0xf8ca('0xc'),_0xf8ca('0xd'),'variableName'],'include':[{'model':'Variable','as':_0xf8ca('0xe'),'attributes':['id','name']}]},{'model':_0xf8ca('0xa'),'as':_0xf8ca('0xf'),'attributes':['id',_0xf8ca('0xc'),_0xf8ca('0xd'),'key',_0xf8ca('0x10'),_0xf8ca('0x11'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0xe'),'as':'Variable','attributes':['id',_0xf8ca('0x3')]}]},{'model':_0xf8ca('0xa'),'as':'Fields','attributes':['id',_0xf8ca('0xc'),_0xf8ca('0xd'),_0xf8ca('0x13'),_0xf8ca('0x14'),_0xf8ca('0x15'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0xe'),'as':_0xf8ca('0xe'),'attributes':['id',_0xf8ca('0x3')]}]}]}]},'log':_0xf8ca('0x2')});};};
\ No newline at end of file
+var _0x6f54=['Variable','Descriptions','key','keyType','Fields','idField','nameField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','username','apiKey','remoteUri','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','type','content','variableName'];(function(_0x409dfb,_0x148437){var _0x1ec43a=function(_0x1ed711){while(--_0x1ed711){_0x409dfb['push'](_0x409dfb['shift']());}};_0x1ec43a(++_0x148437);}(_0x6f54,0xcf));var _0x46f5=function(_0x54e593,_0x41b3af){_0x54e593=_0x54e593-0x0;var _0xf7af76=_0x6f54[_0x54e593];return _0xf7af76;};'use strict';var client=require(_0x46f5('0x0'));exports[_0x46f5('0x1')]=function(){return function(_0x23c470){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x46f5('0x2'),_0x46f5('0x3'),_0x46f5('0x4'),_0x46f5('0x5'),'serverUrl'],'include':[{'model':_0x46f5('0x6'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x46f5('0x7'),'attributes':['id','name']},{'model':_0x46f5('0x8'),'as':_0x46f5('0x9'),'attributes':['id',_0x46f5('0xa'),_0x46f5('0xb'),_0x46f5('0xc')],'include':[{'model':_0x46f5('0xd'),'as':_0x46f5('0xd'),'attributes':['id',_0x46f5('0x2')]}]},{'model':_0x46f5('0x8'),'as':_0x46f5('0xe'),'attributes':['id',_0x46f5('0xa'),_0x46f5('0xb'),_0x46f5('0xf'),_0x46f5('0x10'),'keyContent',_0x46f5('0xc')],'include':[{'model':_0x46f5('0xd'),'as':_0x46f5('0xd'),'attributes':['id','name']}]},{'model':_0x46f5('0x8'),'as':_0x46f5('0x11'),'attributes':['id','type',_0x46f5('0xb'),_0x46f5('0x12'),_0x46f5('0x13'),_0x46f5('0x14'),'variableName'],'include':[{'model':'Variable','as':_0x46f5('0xd'),'attributes':['id',_0x46f5('0x2')]}]}]}]},'log':_0x46f5('0x15')});};};
\ No newline at end of file
index e9bed62..77ff825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3831=['Variable','FreshsalesField','Descriptions','type','key','keyType','keyContent','GetFreshsalesccount','../../client','Request','GetFreshsalesAccount','name','username','remoteUri','FreshsalesConfiguration','Subjects','content','variableName'];(function(_0x5b3c12,_0x1e4958){var _0x5d0467=function(_0xaa3bb2){while(--_0xaa3bb2){_0x5b3c12['push'](_0x5b3c12['shift']());}};_0x5d0467(++_0x1e4958);}(_0x3831,0x14c));var _0x1383=function(_0x29c261,_0x3af39a){_0x29c261=_0x29c261-0x0;var _0x1a9335=_0x3831[_0x29c261];return _0x1a9335;};'use strict';var client=require(_0x1383('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x1c3e35){return client[_0x1383('0x1')](_0x1383('0x2'),{'options':{'raw':![],'attributes':['id',_0x1383('0x3'),_0x1383('0x4'),'apiKey',_0x1383('0x5'),'serverUrl'],'include':[{'model':_0x1383('0x6'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'FreshsalesField','as':_0x1383('0x7'),'attributes':['id','type',_0x1383('0x8'),_0x1383('0x9')],'include':[{'model':_0x1383('0xa'),'as':_0x1383('0xa'),'attributes':['id',_0x1383('0x3')]}]},{'model':_0x1383('0xb'),'as':_0x1383('0xc'),'attributes':['id',_0x1383('0xd'),'content',_0x1383('0xe'),_0x1383('0xf'),_0x1383('0x10'),_0x1383('0x9')],'include':[{'model':_0x1383('0xa'),'as':'Variable','attributes':['id',_0x1383('0x3')]}]}]}]},'log':_0x1383('0x11')});};};
\ No newline at end of file
+var _0xb46f=['keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','apiKey','serverUrl','Configurations','FreshsalesField','Subjects','type','variableName','Variable','key','keyType'];(function(_0x11ec6c,_0x1a8169){var _0xb59506=function(_0x58e31d){while(--_0x58e31d){_0x11ec6c['push'](_0x11ec6c['shift']());}};_0xb59506(++_0x1a8169);}(_0xb46f,0xb6));var _0xfb46=function(_0xfe0ae7,_0x3a010b){_0xfe0ae7=_0xfe0ae7-0x0;var _0xddbbdd=_0xb46f[_0xfe0ae7];return _0xddbbdd;};'use strict';var client=require(_0xfb46('0x0'));exports[_0xfb46('0x1')]=function(){return function(_0x5f2971){return client[_0xfb46('0x2')](_0xfb46('0x3'),{'options':{'raw':![],'attributes':['id',_0xfb46('0x4'),_0xfb46('0x5'),_0xfb46('0x6'),'remoteUri',_0xfb46('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0xfb46('0x8'),'attributes':['id',_0xfb46('0x4')],'include':[{'model':_0xfb46('0x9'),'as':_0xfb46('0xa'),'attributes':['id',_0xfb46('0xb'),'content',_0xfb46('0xc')],'include':[{'model':_0xfb46('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id',_0xfb46('0xb'),'content',_0xfb46('0xe'),_0xfb46('0xf'),_0xfb46('0x10'),_0xfb46('0xc')],'include':[{'model':_0xfb46('0xd'),'as':_0xfb46('0xd'),'attributes':['id',_0xfb46('0x4')]}]}]}]},'log':_0xfb46('0x11')});};};
\ No newline at end of file
index ace4fe0..31ff9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e9b=['securityToken','serverUrl','type','SalesforceConfiguration','Configurations','name','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField','Variable','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','password','remoteUri','clientSecret'];(function(_0x5401ae,_0x5e58ac){var _0x286068=function(_0x2cac88){while(--_0x2cac88){_0x5401ae['push'](_0x5401ae['shift']());}};_0x286068(++_0x5e58ac);}(_0x6e9b,0xea));var _0xb6e9=function(_0x543779,_0x4a85bc){_0x543779=_0x543779-0x0;var _0x65c29e=_0x6e9b[_0x543779];return _0x65c29e;};'use strict';var client=require(_0xb6e9('0x0'));exports[_0xb6e9('0x1')]=function(){return function(_0x34f8b4){return client[_0xb6e9('0x2')](_0xb6e9('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb6e9('0x4'),_0xb6e9('0x5'),_0xb6e9('0x6'),'clientId',_0xb6e9('0x7'),_0xb6e9('0x8'),_0xb6e9('0x9'),_0xb6e9('0xa')],'include':[{'model':_0xb6e9('0xb'),'as':_0xb6e9('0xc'),'attributes':['id',_0xb6e9('0xd'),'moduleSearch',_0xb6e9('0xe'),_0xb6e9('0xf'),_0xb6e9('0x10'),_0xb6e9('0x11'),_0xb6e9('0x12'),'additionalSearchLead'],'include':[{'model':_0xb6e9('0x13'),'as':'Subjects','include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb6e9('0xd')]}]},{'model':_0xb6e9('0x13'),'as':'Descriptions','include':[{'model':_0xb6e9('0x14'),'as':'Variable','attributes':['id',_0xb6e9('0xd')]}]},{'model':_0xb6e9('0x13'),'as':_0xb6e9('0x15'),'include':[{'model':_0xb6e9('0x14'),'as':'Variable','attributes':['id',_0xb6e9('0xd')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x4f31=['username','password','remoteUri','clientSecret','securityToken','SalesforceConfiguration','Configurations','moduleSearch','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','name'];(function(_0x2bccf1,_0x45a6a0){var _0x3e26fe=function(_0x18a81f){while(--_0x18a81f){_0x2bccf1['push'](_0x2bccf1['shift']());}};_0x3e26fe(++_0x45a6a0);}(_0x4f31,0x13f));var _0x14f3=function(_0x109310,_0x3bd453){_0x109310=_0x109310-0x0;var _0x5de3ab=_0x4f31[_0x109310];return _0x5de3ab;};'use strict';var client=require(_0x14f3('0x0'));exports[_0x14f3('0x1')]=function(){return function(_0x4a49f5){return client[_0x14f3('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x14f3('0x3'),_0x14f3('0x4'),_0x14f3('0x5'),_0x14f3('0x6'),'clientId',_0x14f3('0x7'),_0x14f3('0x8'),'serverUrl','type'],'include':[{'model':_0x14f3('0x9'),'as':_0x14f3('0xa'),'attributes':['id',_0x14f3('0x3'),_0x14f3('0xb'),'moduleCreate','ticketType','leadId',_0x14f3('0xc'),_0x14f3('0xd'),_0x14f3('0xe')],'include':[{'model':'SalesforceField','as':_0x14f3('0xf'),'include':[{'model':_0x14f3('0x10'),'as':_0x14f3('0x10'),'attributes':['id',_0x14f3('0x3')]}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x14f3('0x10'),'as':_0x14f3('0x10'),'attributes':['id','name']}]},{'model':_0x14f3('0x11'),'as':'Fields','include':[{'model':_0x14f3('0x10'),'as':_0x14f3('0x10'),'attributes':['id',_0x14f3('0x3')]}]}]}]},'log':_0x14f3('0x12')});};};
\ No newline at end of file
index e8e08a0..b8da38e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['../../client','Request','GetServicenowAccount','name','description','username','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','idField','nameField'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x187d,0x93));var _0xd187=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x187d[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0xd187('0x0'));exports['getServicenowAccounts']=function(){return function(_0x3b9b6d){return client[_0xd187('0x1')](_0xd187('0x2'),{'options':{'raw':![],'attributes':['id',_0xd187('0x3'),_0xd187('0x4'),_0xd187('0x5'),'password',_0xd187('0x6'),_0xd187('0x7'),'serverUrl'],'include':[{'model':_0xd187('0x8'),'as':_0xd187('0x9'),'attributes':['id',_0xd187('0x3')],'include':[{'model':_0xd187('0xa'),'as':_0xd187('0xb'),'attributes':['id',_0xd187('0xc'),_0xd187('0xd'),_0xd187('0xe')],'include':[{'model':'Variable','as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]},{'model':_0xd187('0xa'),'as':_0xd187('0x10'),'attributes':['id',_0xd187('0xc'),_0xd187('0xd'),'key',_0xd187('0x11'),_0xd187('0x12'),_0xd187('0xe')],'include':[{'model':'Variable','as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]},{'model':_0xd187('0xa'),'as':'Fields','attributes':['id',_0xd187('0xc'),_0xd187('0xd'),_0xd187('0x13'),_0xd187('0x14'),'customField',_0xd187('0xe')],'include':[{'model':_0xd187('0xf'),'as':_0xd187('0xf'),'attributes':['id',_0xd187('0x3')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x524e,0x15e));var _0xe524=function(_0x2612a4,_0x130dfb){_0x2612a4=_0x2612a4-0x0;var _0xbc5089=_0x524e[_0x2612a4];return _0xbc5089;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 54b7d20..a984a10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x5a71a7,_0x160f7f){var _0x504315=function(_0xc0b6b4){while(--_0xc0b6b4){_0x5a71a7['push'](_0x5a71a7['shift']());}};_0x504315(++_0x160f7f);}(_0x66fa,0x117));var _0xa66f=function(_0x3659f6,_0x175b8d){_0x3659f6=_0x3659f6-0x0;var _0x16b008=_0x66fa[_0x3659f6];return _0x16b008;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x1e05c1,_0x3cffa3){var _0x15f1ca=function(_0x3a9594){while(--_0x3a9594){_0x1e05c1['push'](_0x1e05c1['shift']());}};_0x15f1ca(++_0x3cffa3);}(_0x14a0,0x8e));var _0x014a=function(_0x556082,_0x52e510){_0x556082=_0x556082-0x0;var _0x9db1ae=_0x14a0[_0x556082];return _0x9db1ae;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index f144958..6acf1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf58b=['../../client','Request','name','accessKey','remoteUri','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','GetVtigerAccount'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf58b,0x69));var _0xbf58=function(_0x45262e,_0x1d9c0b){_0x45262e=_0x45262e-0x0;var _0x3b7f60=_0xf58b[_0x45262e];return _0x3b7f60;};'use strict';var client=require(_0xbf58('0x0'));exports['getVtigerAccounts']=function(){return function(_0x38b8f6){return client[_0xbf58('0x1')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0xbf58('0x2'),'description','username',_0xbf58('0x3'),_0xbf58('0x4'),'serverUrl'],'include':[{'model':_0xbf58('0x5'),'as':_0xbf58('0x6'),'attributes':['id',_0xbf58('0x2')],'include':[{'model':_0xbf58('0x7'),'as':_0xbf58('0x8'),'attributes':['id',_0xbf58('0x9'),_0xbf58('0xa'),_0xbf58('0xb')],'include':[{'model':_0xbf58('0xc'),'as':_0xbf58('0xc'),'attributes':['id',_0xbf58('0x2')]}]},{'model':'VtigerField','as':_0xbf58('0xd'),'attributes':['id',_0xbf58('0x9'),_0xbf58('0xa'),_0xbf58('0xe'),'keyType',_0xbf58('0xf'),_0xbf58('0xb')],'include':[{'model':_0xbf58('0xc'),'as':_0xbf58('0xc'),'attributes':['id',_0xbf58('0x2')]}]},{'model':'VtigerField','as':_0xbf58('0x10'),'attributes':['id',_0xbf58('0x9'),'content',_0xbf58('0x11'),_0xbf58('0x12'),_0xbf58('0x13'),_0xbf58('0xb')],'include':[{'model':'Variable','as':_0xbf58('0xc'),'attributes':['id','name']}]}]}]},'log':_0xbf58('0x14')});};};
\ No newline at end of file
+var _0xca77=['serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','Variable','name','Descriptions','key','keyType','keyContent','variableName','Fields','customField','../../client','Request','GetVtigerAccount','description','accessKey','remoteUri'];(function(_0x13440b,_0x4b3719){var _0x521722=function(_0x29c3cb){while(--_0x29c3cb){_0x13440b['push'](_0x13440b['shift']());}};_0x521722(++_0x4b3719);}(_0xca77,0x94));var _0x7ca7=function(_0x52e34b,_0x1c4753){_0x52e34b=_0x52e34b-0x0;var _0x3c4234=_0xca77[_0x52e34b];return _0x3c4234;};'use strict';var client=require(_0x7ca7('0x0'));exports['getVtigerAccounts']=function(){return function(_0x30959b){return client[_0x7ca7('0x1')](_0x7ca7('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x7ca7('0x3'),'username',_0x7ca7('0x4'),_0x7ca7('0x5'),_0x7ca7('0x6')],'include':[{'model':_0x7ca7('0x7'),'as':_0x7ca7('0x8'),'attributes':['id','name'],'include':[{'model':_0x7ca7('0x9'),'as':_0x7ca7('0xa'),'attributes':['id',_0x7ca7('0xb'),_0x7ca7('0xc'),'variableName'],'include':[{'model':'Variable','as':_0x7ca7('0xd'),'attributes':['id',_0x7ca7('0xe')]}]},{'model':_0x7ca7('0x9'),'as':_0x7ca7('0xf'),'attributes':['id',_0x7ca7('0xb'),'content',_0x7ca7('0x10'),_0x7ca7('0x11'),_0x7ca7('0x12'),_0x7ca7('0x13')],'include':[{'model':_0x7ca7('0xd'),'as':_0x7ca7('0xd'),'attributes':['id',_0x7ca7('0xe')]}]},{'model':_0x7ca7('0x9'),'as':_0x7ca7('0x14'),'attributes':['id',_0x7ca7('0xb'),'content','idField','nameField',_0x7ca7('0x15'),'variableName'],'include':[{'model':_0x7ca7('0xd'),'as':_0x7ca7('0xd'),'attributes':['id',_0x7ca7('0xe')]}]}]}]},'log':_0x7ca7('0x2')});};};
\ No newline at end of file
index 5bf65f1..ccd740b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee38=['../../client','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xee38,0x1d4));var _0x8ee3=function(_0x1446dc,_0x4f9abb){_0x1446dc=_0x1446dc-0x0;var _0x2ddfb9=_0xee38[_0x1446dc];return _0x2ddfb9;};'use strict';var client=require(_0x8ee3('0x0'));exports['getZendeskAccounts']=function(){return function(_0x30d955){return client[_0x8ee3('0x1')](_0x8ee3('0x2'),{'options':{'raw':![],'attributes':['id',_0x8ee3('0x3'),_0x8ee3('0x4'),_0x8ee3('0x5'),_0x8ee3('0x6'),_0x8ee3('0x7'),_0x8ee3('0x8'),_0x8ee3('0x9'),_0x8ee3('0xa')],'include':[{'model':_0x8ee3('0xb'),'as':_0x8ee3('0xc'),'attributes':['id','name'],'include':[{'model':_0x8ee3('0xd'),'attributes':['id','name']},{'model':_0x8ee3('0xe'),'as':_0x8ee3('0xf'),'attributes':['id','type',_0x8ee3('0x10'),_0x8ee3('0x11')],'include':[{'model':_0x8ee3('0x12'),'as':'Variable','attributes':['id',_0x8ee3('0x3')]}]},{'model':_0x8ee3('0xe'),'as':_0x8ee3('0x13'),'attributes':['id',_0x8ee3('0xa'),_0x8ee3('0x10'),'key',_0x8ee3('0x14'),_0x8ee3('0x15'),_0x8ee3('0x11')],'include':[{'model':_0x8ee3('0x12'),'as':_0x8ee3('0x12'),'attributes':['id',_0x8ee3('0x3')]}]},{'model':'ZendeskField','as':_0x8ee3('0x16'),'attributes':['id',_0x8ee3('0xa'),'content',_0x8ee3('0x17'),_0x8ee3('0x18'),_0x8ee3('0x19'),_0x8ee3('0x11')],'include':[{'model':'Variable','as':_0x8ee3('0x12'),'attributes':['id',_0x8ee3('0x3')]}]}]}]},'log':_0x8ee3('0x2')});};};
\ No newline at end of file
+var _0x7029=['ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects','Variable','Descriptions','content','keyType','keyContent','variableName','idField','customField','../../client','getZendeskAccounts','GetZendeskAccount','remoteUri','serverUrl','type'];(function(_0x437a08,_0x15e256){var _0x47eb13=function(_0x220c55){while(--_0x220c55){_0x437a08['push'](_0x437a08['shift']());}};_0x47eb13(++_0x15e256);}(_0x7029,0x9a));var _0x9702=function(_0x4099e0,_0x227586){_0x4099e0=_0x4099e0-0x0;var _0x4abbf7=_0x7029[_0x4099e0];return _0x4abbf7;};'use strict';var client=require(_0x9702('0x0'));exports[_0x9702('0x1')]=function(){return function(_0x58a8f1){return client['Request'](_0x9702('0x2'),{'options':{'raw':![],'attributes':['id','name','username','password','token',_0x9702('0x3'),'authType',_0x9702('0x4'),_0x9702('0x5')],'include':[{'model':_0x9702('0x6'),'as':_0x9702('0x7'),'attributes':['id',_0x9702('0x8')],'include':[{'model':_0x9702('0x9'),'attributes':['id','name']},{'model':_0x9702('0xa'),'as':_0x9702('0xb'),'attributes':['id','type','content','variableName'],'include':[{'model':'Variable','as':_0x9702('0xc'),'attributes':['id','name']}]},{'model':_0x9702('0xa'),'as':_0x9702('0xd'),'attributes':['id','type',_0x9702('0xe'),'key',_0x9702('0xf'),_0x9702('0x10'),_0x9702('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x9702('0xa'),'as':'Fields','attributes':['id',_0x9702('0x5'),_0x9702('0xe'),_0x9702('0x12'),'nameField',_0x9702('0x13'),_0x9702('0x11')],'include':[{'model':_0x9702('0xc'),'as':_0x9702('0xc'),'attributes':['id',_0x9702('0x8')]}]}]}]},'log':_0x9702('0x2')});};};
\ No newline at end of file
index c46f7ca..95cf59c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e2=['Descriptions','type','key','keyType','keyContent','variableName','Fields','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','moduleSearch','ZohoField','Variable'];(function(_0x98459f,_0x4dfb55){var _0x128f94=function(_0xe6315c){while(--_0xe6315c){_0x98459f['push'](_0x98459f['shift']());}};_0x128f94(++_0x4dfb55);}(_0x28e2,0x70));var _0x228e=function(_0x14c68f,_0x20786b){_0x14c68f=_0x14c68f-0x0;var _0x579bef=_0x28e2[_0x14c68f];return _0x579bef;};'use strict';var client=require(_0x228e('0x0'));exports[_0x228e('0x1')]=function(){return function(_0x4015e7){return client[_0x228e('0x2')](_0x228e('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x228e('0x4'),_0x228e('0x5'),_0x228e('0x6'),_0x228e('0x7'),'clientSecret',_0x228e('0x8'),_0x228e('0x9'),_0x228e('0xa')],'include':[{'model':_0x228e('0xb'),'as':_0x228e('0xc'),'attributes':['id',_0x228e('0xd'),_0x228e('0xe'),_0x228e('0xf'),_0x228e('0x4')],'include':[{'model':_0x228e('0x10'),'as':'Subjects','attributes':['id','type','content','variableName'],'include':[{'model':_0x228e('0x11'),'as':_0x228e('0x11'),'attributes':['id',_0x228e('0xd')]}]},{'model':_0x228e('0x10'),'as':_0x228e('0x12'),'attributes':['id',_0x228e('0x13'),'content',_0x228e('0x14'),_0x228e('0x15'),_0x228e('0x16'),_0x228e('0x17')],'include':[{'model':_0x228e('0x11'),'as':_0x228e('0x11'),'attributes':['id',_0x228e('0xd')]}]},{'model':'ZohoField','as':_0x228e('0x18'),'attributes':['id',_0x228e('0x13'),'content','idField',_0x228e('0x19'),'customField',_0x228e('0x17')],'include':[{'model':_0x228e('0x11'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x228e('0x3')});};};
\ No newline at end of file
+var _0x9972=['../../client','Request','GetZohoAccount','name','description','zone','clientId','clientSecret','code','refreshToken','Configurations','moduleSearch','ZohoField','Subjects','type','Variable','Descriptions','content','key','keyType','keyContent','variableName','Fields','idField','nameField','customField'];(function(_0x527305,_0x12bee4){var _0x14cf94=function(_0x2e1fd2){while(--_0x2e1fd2){_0x527305['push'](_0x527305['shift']());}};_0x14cf94(++_0x12bee4);}(_0x9972,0x186));var _0x2997=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9972[_0x40a045];return _0x1a687c;};'use strict';var client=require(_0x2997('0x0'));exports['getZohoAccounts']=function(){return function(_0x247294){return client[_0x2997('0x1')](_0x2997('0x2'),{'options':{'raw':![],'attributes':['id',_0x2997('0x3'),_0x2997('0x4'),'host',_0x2997('0x5'),_0x2997('0x6'),_0x2997('0x7'),'serverUrl',_0x2997('0x8'),_0x2997('0x9')],'include':[{'model':'ZohoConfiguration','as':_0x2997('0xa'),'attributes':['id',_0x2997('0x3'),'moduleCreate',_0x2997('0xb'),_0x2997('0x4')],'include':[{'model':_0x2997('0xc'),'as':_0x2997('0xd'),'attributes':['id',_0x2997('0xe'),'content','variableName'],'include':[{'model':_0x2997('0xf'),'as':_0x2997('0xf'),'attributes':['id',_0x2997('0x3')]}]},{'model':'ZohoField','as':_0x2997('0x10'),'attributes':['id',_0x2997('0xe'),_0x2997('0x11'),_0x2997('0x12'),_0x2997('0x13'),_0x2997('0x14'),_0x2997('0x15')],'include':[{'model':_0x2997('0xf'),'as':_0x2997('0xf'),'attributes':['id',_0x2997('0x3')]}]},{'model':_0x2997('0xc'),'as':_0x2997('0x16'),'attributes':['id',_0x2997('0xe'),'content',_0x2997('0x17'),_0x2997('0x18'),_0x2997('0x19'),_0x2997('0x15')],'include':[{'model':_0x2997('0xf'),'as':_0x2997('0xf'),'attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 91b3b74..deb315e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4786=['voiceQueueReport','queuecallercompleteAt','Request','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','membername','starttime','endtime','seconds','outbound','dialstring','CreateMemberReport','moment','lodash','util','../client'];(function(_0x1db529,_0x4028db){var _0x52bc2e=function(_0x29cbef){while(--_0x29cbef){_0x1db529['push'](_0x1db529['shift']());}};_0x52bc2e(++_0x4028db);}(_0x4786,0x78));var _0x6478=function(_0x97667b,_0x8e8d16){_0x97667b=_0x97667b-0x0;var _0x5f4e9c=_0x4786[_0x97667b];return _0x5f4e9c;};'use strict';var moment=require(_0x6478('0x0'));var _=require(_0x6478('0x1'));var util=require(_0x6478('0x2'));var client=require(_0x6478('0x3'));exports[_0x6478('0x4')]=function(_0x458504){var _0x196717=_0x458504[_0x6478('0x5')]||_0x458504['queuecallerexitAt'];return client[_0x6478('0x6')]('CreateMemberReport',{'body':{'channel':_0x6478('0x7'),'membername':_0x458504[_0x6478('0x8')],'interface':_[_0x6478('0x9')](_0x458504[_0x6478('0xa')])?util[_0x6478('0xb')](_0x6478('0xc'),_0x458504[_0x6478('0x8')]):_0x458504['interface'],'type':_0x6478('0xd'),'enterAt':_0x458504[_0x6478('0xe')],'exitAt':_0x196717,'duration':moment(_0x196717)[_0x6478('0xf')](_0x458504[_0x6478('0xe')],'seconds'),'data1':_0x6478('0x10'),'data2':_0x458504[_0x6478('0x11')],'data3':_0x458504[_0x6478('0x12')],'data4':null,'data5':_0x458504[_0x6478('0x13')],'role':_0x6478('0x14'),'internal':_0x458504[_0x6478('0x15')]?_[_0x6478('0x16')](_0x458504[_0x6478('0x15')]):undefined,'uniqueid':_0x458504[_0x6478('0x17')]},'log':'CreateMemberReport'});};exports['voiceDialReport']=function(_0x3e6ca4){return client[_0x6478('0x6')]('CreateMemberReport',{'body':{'channel':_0x6478('0x7'),'membername':_0x3e6ca4[_0x6478('0x18')],'interface':_0x3e6ca4[_0x6478('0xa')],'type':'TALKING','enterAt':_0x3e6ca4[_0x6478('0x19')],'exitAt':_0x3e6ca4[_0x6478('0x1a')],'duration':moment(_0x3e6ca4[_0x6478('0x1a')])['diff'](_0x3e6ca4[_0x6478('0x19')],_0x6478('0x1b'))>=0x0?moment(_0x3e6ca4[_0x6478('0x1a')])['diff'](_0x3e6ca4[_0x6478('0x19')],_0x6478('0x1b')):null,'data1':_0x6478('0x1c'),'data2':_0x3e6ca4[_0x6478('0x15')],'data3':_0x3e6ca4[_0x6478('0x12')],'data4':_0x3e6ca4[_0x6478('0x1d')]||null,'role':_0x6478('0x14'),'internal':_0x3e6ca4[_0x6478('0x15')]?_[_0x6478('0x16')](_0x3e6ca4['accountcode']):undefined,'uniqueid':_0x3e6ca4['uniqueid']},'log':_0x6478('0x1e')});};
\ No newline at end of file
+var _0x584b=['agent','moment','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','isNil','format','interface','TALKING','queuecallerleaveAt','calleridnum','exten','accountcode','toNumber','uniqueid','voiceDialReport','membername','endtime','diff','starttime','seconds','outbound','dialstring'];(function(_0x25b24a,_0x1c0163){var _0x224e68=function(_0x1fc9d2){while(--_0x1fc9d2){_0x25b24a['push'](_0x25b24a['shift']());}};_0x224e68(++_0x1c0163);}(_0x584b,0x1bb));var _0xb584=function(_0x419550,_0x15cdf1){_0x419550=_0x419550-0x0;var _0x55f9ef=_0x584b[_0x419550];return _0x55f9ef;};'use strict';var moment=require(_0xb584('0x0'));var _=require('lodash');var util=require('util');var client=require(_0xb584('0x1'));exports[_0xb584('0x2')]=function(_0x3b50dd){var _0x286116=_0x3b50dd['queuecallercompleteAt']||_0x3b50dd[_0xb584('0x3')];return client[_0xb584('0x4')](_0xb584('0x5'),{'body':{'channel':_0xb584('0x6'),'membername':_0x3b50dd['lastAssignedTo'],'interface':_[_0xb584('0x7')](_0x3b50dd['interface'])?util[_0xb584('0x8')]('SIP/%s',_0x3b50dd['lastAssignedTo']):_0x3b50dd[_0xb584('0x9')],'type':_0xb584('0xa'),'enterAt':_0x3b50dd[_0xb584('0xb')],'exitAt':_0x286116,'duration':moment(_0x286116)['diff'](_0x3b50dd['queuecallerleaveAt'],'seconds'),'data1':'inbound','data2':_0x3b50dd[_0xb584('0xc')],'data3':_0x3b50dd[_0xb584('0xd')],'data4':null,'data5':_0x3b50dd['queue'],'role':'agent','internal':_0x3b50dd[_0xb584('0xe')]?_[_0xb584('0xf')](_0x3b50dd['accountcode']):undefined,'uniqueid':_0x3b50dd[_0xb584('0x10')]},'log':'CreateMemberReport'});};exports[_0xb584('0x11')]=function(_0x2c0725){return client['Request']('CreateMemberReport',{'body':{'channel':_0xb584('0x6'),'membername':_0x2c0725[_0xb584('0x12')],'interface':_0x2c0725[_0xb584('0x9')],'type':_0xb584('0xa'),'enterAt':_0x2c0725['starttime'],'exitAt':_0x2c0725[_0xb584('0x13')],'duration':moment(_0x2c0725[_0xb584('0x13')])[_0xb584('0x14')](_0x2c0725[_0xb584('0x15')],_0xb584('0x16'))>=0x0?moment(_0x2c0725[_0xb584('0x13')])['diff'](_0x2c0725[_0xb584('0x15')],'seconds'):null,'data1':_0xb584('0x17'),'data2':_0x2c0725['accountcode'],'data3':_0x2c0725['exten'],'data4':_0x2c0725[_0xb584('0x18')]||null,'role':_0xb584('0x19'),'internal':_0x2c0725['accountcode']?_[_0xb584('0xf')](_0x2c0725[_0xb584('0xe')]):undefined,'uniqueid':_0x2c0725['uniqueid']},'log':_0xb584('0x5')});};
\ No newline at end of file
index 22fcf3c..18f86dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['ShowSetting','previewRecallmeReminderInterval','GetSettings','../client','getSettings','Request'];(function(_0x4959fd,_0x186515){var _0x97de01=function(_0x29e1d0){while(--_0x29e1d0){_0x4959fd['push'](_0x4959fd['shift']());}};_0x97de01(++_0x186515);}(_0x4fc2,0x111));var _0x24fc=function(_0x21bf22,_0x16172a){_0x21bf22=_0x21bf22-0x0;var _0x144ee9=_0x4fc2[_0x21bf22];return _0x144ee9;};'use strict';var client=require(_0x24fc('0x0'));exports[_0x24fc('0x1')]=function(){return client[_0x24fc('0x2')](_0x24fc('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0x24fc('0x4')]},'log':_0x24fc('0x5')});};
\ No newline at end of file
+var _0xc224=['../client','getSettings','Request','ShowSetting','previewRecallmeReminderInterval','GetSettings'];(function(_0x1b1616,_0x1b33c0){var _0x2952c7=function(_0x10fb2c){while(--_0x10fb2c){_0x1b1616['push'](_0x1b1616['shift']());}};_0x2952c7(++_0x1b33c0);}(_0xc224,0xe4));var _0x4c22=function(_0x46c7e2,_0x55dfd5){_0x46c7e2=_0x46c7e2-0x0;var _0x5f01cd=_0xc224[_0x46c7e2];return _0x5f01cd;};'use strict';var client=require(_0x4c22('0x0'));exports[_0x4c22('0x1')]=function(){return client[_0x4c22('0x2')](_0x4c22('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0x4c22('0x4')]},'log':_0x4c22('0x5')});};
\ No newline at end of file
index 9d4331d..5fb379d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fda=['html','../client','getTemplates','Request','name'];(function(_0xfbc3dc,_0x3a7830){var _0x48c818=function(_0x5e3a9b){while(--_0x5e3a9b){_0xfbc3dc['push'](_0xfbc3dc['shift']());}};_0x48c818(++_0x3a7830);}(_0x1fda,0x74));var _0xa1fd=function(_0x300c19,_0x709d87){_0x300c19=_0x300c19-0x0;var _0x52ccab=_0x1fda[_0x300c19];return _0x52ccab;};'use strict';var client=require(_0xa1fd('0x0'));exports[_0xa1fd('0x1')]=function(_0x577d07){return function(_0x52c188){return client[_0xa1fd('0x2')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0xa1fd('0x3'),_0xa1fd('0x4')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x0c53=['html','../client','getTemplates','Request','GetTemplate','name'];(function(_0x58379a,_0x1840de){var _0xf88d78=function(_0x4eb296){while(--_0x4eb296){_0x58379a['push'](_0x58379a['shift']());}};_0xf88d78(++_0x1840de);}(_0x0c53,0x1e1));var _0x30c5=function(_0x455cc7,_0x31f8dc){_0x455cc7=_0x455cc7-0x0;var _0x135fd0=_0x0c53[_0x455cc7];return _0x135fd0;};'use strict';var client=require(_0x30c5('0x0'));exports[_0x30c5('0x1')]=function(_0x54e492){return function(_0xdb284c){return client[_0x30c5('0x2')](_0x30c5('0x3'),{'options':{'raw':!![],'attributes':['id',_0x30c5('0x4'),_0x30c5('0x5')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 9a63fb5..aaa526f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x715a=['GetTrigger','name','status','Condition','AllConditions','operator','value','action','data1','data2','data3','data4','data6','data7','../client','getTriggers'];(function(_0x2c4a45,_0x8836e3){var _0x51c36e=function(_0x396db8){while(--_0x396db8){_0x2c4a45['push'](_0x2c4a45['shift']());}};_0x51c36e(++_0x8836e3);}(_0x715a,0x10e));var _0xa715=function(_0x2ee42d,_0x246391){_0x2ee42d=_0x2ee42d-0x0;var _0x387b81=_0x715a[_0x2ee42d];return _0x387b81;};'use strict';var client=require(_0xa715('0x0'));exports[_0xa715('0x1')]=function(_0x5c5c37){return function(_0x26a6ec){return client['Request'](_0xa715('0x2'),{'options':{'raw':![],'attributes':['id',_0xa715('0x3'),'channel',_0xa715('0x4')],'include':[{'model':_0xa715('0x5'),'as':_0xa715('0x6'),'attributes':['id','field',_0xa715('0x7'),_0xa715('0x8')]},{'model':_0xa715('0x5'),'as':'AnyConditions','attributes':['id','field',_0xa715('0x7'),'value']},{'model':'Action','as':'Actions','attributes':['id',_0xa715('0x9'),_0xa715('0xa'),_0xa715('0xb'),_0xa715('0xc'),_0xa715('0xd'),'data5',_0xa715('0xe'),_0xa715('0xf')]}]},'log':_0xa715('0x2')});};};
\ No newline at end of file
+var _0xc230=['data4','data5','data6','data7','GetTrigger','../client','getTriggers','Request','channel','status','AllConditions','operator','value','Condition','Action','Actions','action','data1','data2','data3'];(function(_0x1f66fa,_0x24efb4){var _0x1863e1=function(_0xc4910f){while(--_0xc4910f){_0x1f66fa['push'](_0x1f66fa['shift']());}};_0x1863e1(++_0x24efb4);}(_0xc230,0x1bd));var _0x0c23=function(_0x39b390,_0xdd14c6){_0x39b390=_0x39b390-0x0;var _0x5f2a8a=_0xc230[_0x39b390];return _0x5f2a8a;};'use strict';var client=require(_0x0c23('0x0'));exports[_0x0c23('0x1')]=function(_0xda7abe){return function(_0x3d05a7){return client[_0x0c23('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id','name',_0x0c23('0x3'),_0x0c23('0x4')],'include':[{'model':'Condition','as':_0x0c23('0x5'),'attributes':['id','field',_0x0c23('0x6'),_0x0c23('0x7')]},{'model':_0x0c23('0x8'),'as':'AnyConditions','attributes':['id','field',_0x0c23('0x6'),_0x0c23('0x7')]},{'model':_0x0c23('0x9'),'as':_0x0c23('0xa'),'attributes':['id',_0x0c23('0xb'),_0x0c23('0xc'),_0x0c23('0xd'),_0x0c23('0xe'),_0x0c23('0xf'),_0x0c23('0x10'),_0x0c23('0x11'),_0x0c23('0x12')]}]},'log':_0x0c23('0x13')});};};
\ No newline at end of file
index 805e1f2..7659405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aa5=['defaultuser','../client','getTrunks','Request','GetTrunk','name','registry'];(function(_0x330124,_0x562fe9){var _0x508c61=function(_0x123995){while(--_0x123995){_0x330124['push'](_0x330124['shift']());}};_0x508c61(++_0x562fe9);}(_0x8aa5,0x78));var _0x58aa=function(_0x9bc461,_0x4cb366){_0x9bc461=_0x9bc461-0x0;var _0x395da3=_0x8aa5[_0x9bc461];return _0x395da3;};'use strict';var client=require(_0x58aa('0x0'));exports[_0x58aa('0x1')]=function(_0x69308c){return function(_0x2e7011){return client[_0x58aa('0x2')](_0x58aa('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x58aa('0x4'),_0x58aa('0x5'),_0x58aa('0x6')]},'log':_0x58aa('0x3')});};};
\ No newline at end of file
+var _0xd492=['registry','defaultuser','../client','getTrunks','Request','GetTrunk'];(function(_0x5dac97,_0x5d6ea8){var _0x1425a6=function(_0x485b4f){while(--_0x485b4f){_0x5dac97['push'](_0x5dac97['shift']());}};_0x1425a6(++_0x5d6ea8);}(_0xd492,0x152));var _0x2d49=function(_0x166e14,_0x3a0979){_0x166e14=_0x166e14-0x0;var _0x3188a8=_0xd492[_0x166e14];return _0x3188a8;};'use strict';var client=require(_0x2d49('0x0'));exports[_0x2d49('0x1')]=function(_0x85e361){return function(_0x36f8a1){return client[_0x2d49('0x2')](_0x2d49('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x2d49('0x4'),_0x2d49('0x5')]},'log':'GetTrunk'});};};
\ No newline at end of file
index c704bb8..2a1508b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x4e99ce,_0x52078e){var _0x411bc0=function(_0x1bdfa8){while(--_0x1bdfa8){_0x4e99ce['push'](_0x4e99ce['shift']());}};_0x411bc0(++_0x52078e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4f3c9b,_0x28e078){_0x4f3c9b=_0x4f3c9b-0x0;var _0x84e58a=_0xcb91[_0x4f3c9b];return _0x84e58a;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe706,0xa3));var _0x6e70=function(_0x165834,_0x49e6d7){_0x165834=_0x165834-0x0;var _0x2f8df1=_0xe706[_0x165834];return _0x2f8df1;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 0484c2e..e324435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0270=['create','Request','CreateVoiceAgentReport','../client'];(function(_0x14b8c2,_0x3dbf43){var _0x16eec4=function(_0x343dd2){while(--_0x343dd2){_0x14b8c2['push'](_0x14b8c2['shift']());}};_0x16eec4(++_0x3dbf43);}(_0x0270,0x8f));var _0x0027=function(_0x33ff73,_0x54c687){_0x33ff73=_0x33ff73-0x0;var _0x15f8af=_0x0270[_0x33ff73];return _0x15f8af;};'use strict';var client=require(_0x0027('0x0'));exports[_0x0027('0x1')]=function(_0x3f956a){return client[_0x0027('0x2')](_0x0027('0x3'),{'body':_0x3f956a,'log':_0x0027('0x3')});};exports['update']=function(_0x58afff,_0x31ddbb,_0x2c0955){return client[_0x0027('0x2')]('UpdateVoiceAgentReport',{'body':_0x58afff,'options':{'where':{'uniqueid':_0x31ddbb,'interface':_0x2c0955,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x9165=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','create'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x9165,0x1a3));var _0x5916=function(_0x77b766,_0x2c3445){_0x77b766=_0x77b766-0x0;var _0xe0eb06=_0x9165[_0x77b766];return _0xe0eb06;};'use strict';var client=require('../client');exports[_0x5916('0x0')]=function(_0x4754be){return client[_0x5916('0x1')](_0x5916('0x2'),{'body':_0x4754be,'log':_0x5916('0x2')});};exports[_0x5916('0x3')]=function(_0x55d966,_0x398f5a,_0x2deb6e){return client['Request'](_0x5916('0x4'),{'body':_0x55d966,'options':{'where':{'uniqueid':_0x398f5a,'interface':_0x2deb6e,'agentcomplete':!![]}},'log':_0x5916('0x4')});};
\ No newline at end of file
index 81888e6..31a934f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03b3=['billableseconds','moment','util','lodash','create','Request','CreateVoiceCallReport','merge','context','callerid','getVoiceCallReports','GetVoiceCallReport','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','disposition','duration'];(function(_0x34dfb9,_0x4d1e01){var _0x3d879d=function(_0x1589f5){while(--_0x1589f5){_0x34dfb9['push'](_0x34dfb9['shift']());}};_0x3d879d(++_0x4d1e01);}(_0x03b3,0x133));var _0x303b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03b3[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x303b('0x0'));var util=require(_0x303b('0x1'));var _=require(_0x303b('0x2'));var client=require('../client');exports[_0x303b('0x3')]=function(_0x481168){return client[_0x303b('0x4')](_0x303b('0x5'),{'body':_[_0x303b('0x6')](_0x481168,{'source':_0x481168['calleridnum'],'destinationcontext':_0x481168[_0x303b('0x7')],'callerid':_0x481168[_0x303b('0x8')],'amaflags':'DOCUMENTATION'}),'log':_0x303b('0x5')});};exports[_0x303b('0x9')]=function(){return function(){return client[_0x303b('0x4')](_0x303b('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x303b('0xb')](_0x303b('0xc'))[_0x303b('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x303b('0xc'))[_0x303b('0xd')](_0x303b('0xe'))]}},'attributes':['type',_0x303b('0xf'),_0x303b('0x10'),_0x303b('0x11')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0x083b=['moment','util','lodash','../client','Request','context','callerid','CreateVoiceCallReport','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','format','YYYY-MM-DD\x20HH:mm:ss','day','type','disposition','duration','billableseconds'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0x083b,0x10a));var _0xb083=function(_0x256d6a,_0x2f002f){_0x256d6a=_0x256d6a-0x0;var _0x460058=_0x083b[_0x256d6a];return _0x460058;};'use strict';var moment=require(_0xb083('0x0'));var util=require(_0xb083('0x1'));var _=require(_0xb083('0x2'));var client=require(_0xb083('0x3'));exports['create']=function(_0x5256e8){return client[_0xb083('0x4')]('CreateVoiceCallReport',{'body':_['merge'](_0x5256e8,{'source':_0x5256e8['calleridnum'],'destinationcontext':_0x5256e8[_0xb083('0x5')],'callerid':_0x5256e8[_0xb083('0x6')],'amaflags':'DOCUMENTATION'}),'log':_0xb083('0x7')});};exports[_0xb083('0x8')]=function(){return function(){return client[_0xb083('0x4')](_0xb083('0x9'),{'options':{'where':{'type':[_0xb083('0xa')],'createdAt':{'$between':[moment()[_0xb083('0xb')]('day')[_0xb083('0xc')](_0xb083('0xd')),moment()['endOf'](_0xb083('0xe'))[_0xb083('0xc')](_0xb083('0xd'))]}},'attributes':[_0xb083('0xf'),_0xb083('0x10'),_0xb083('0x11'),_0xb083('0x12')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 941270e..6daf9d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x788f=['CreateVoiceDialReport','Request'];(function(_0x9d77b5,_0x4fcdb3){var _0x4b26d0=function(_0xcb79d4){while(--_0xcb79d4){_0x9d77b5['push'](_0x9d77b5['shift']());}};_0x4b26d0(++_0x4fcdb3);}(_0x788f,0x173));var _0xf788=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x788f[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['create']=function(_0x24c006){return client[_0xf788('0x0')](_0xf788('0x1'),{'body':_0x24c006,'log':_0xf788('0x1')});};
\ No newline at end of file
+var _0x606d=['CreateVoiceDialReport','../client','create','Request'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x606d,0xd1));var _0xd606=function(_0xc2f832,_0x3f57d1){_0xc2f832=_0xc2f832-0x0;var _0x584b8d=_0x606d[_0xc2f832];return _0x584b8d;};'use strict';var client=require(_0xd606('0x0'));exports[_0xd606('0x1')]=function(_0x16bdee){return client[_0xd606('0x2')](_0xd606('0x3'),{'body':_0x16bdee,'log':_0xd606('0x3')});};
\ No newline at end of file
index a6a1674..08e0c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3276=['GetVoiceExtension','exten','recordingFormat','getVoiceExtensions','../client'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x3276,0xc7));var _0x6327=function(_0x122ac2,_0x2b5433){_0x122ac2=_0x122ac2-0x0;var _0x39e26f=_0x3276[_0x122ac2];return _0x39e26f;};'use strict';var client=require(_0x6327('0x0'));exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0x6327('0x1'),{'options':{'raw':!![],'attributes':['id',_0x6327('0x2'),_0x6327('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x6327('0x4')});};};
\ No newline at end of file
+var _0x1ba2=['../client','Request','exten','recordingFormat','getVoiceExtensions'];(function(_0x5df8a5,_0x207385){var _0x3a16b5=function(_0x3c16ea){while(--_0x3c16ea){_0x5df8a5['push'](_0x5df8a5['shift']());}};_0x3a16b5(++_0x207385);}(_0x1ba2,0xb4));var _0x21ba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1ba2[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x21ba('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x21ba('0x1')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x21ba('0x2'),_0x21ba('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x21ba('0x4')});};};
\ No newline at end of file
index 2acc002..1a4a031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ddd=['dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','timeout','dialRecallInQueue','dialAgiAfterHangupClient','strategy','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','callerid','active','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','autopause','monitor_format','type','dialLimitChannel','dialLimitQueue','dialPowerLevel'];(function(_0x53f463,_0x25e271){var _0x4f4cdd=function(_0x33254c){while(--_0x33254c){_0x53f463['push'](_0x53f463['shift']());}};_0x4f4cdd(++_0x25e271);}(_0x5ddd,0x1a6));var _0xd5dd=function(_0x875110,_0x7873af){_0x875110=_0x875110-0x0;var _0x39758a=_0x5ddd[_0x875110];return _0x39758a;};'use strict';var client=require(_0xd5dd('0x0'));exports[_0xd5dd('0x1')]=function(){return function(){return client[_0xd5dd('0x2')](_0xd5dd('0x3'),{'options':{'raw':![],'attributes':['id',_0xd5dd('0x4'),_0xd5dd('0x5'),'acwTimeout',_0xd5dd('0x6'),_0xd5dd('0x7'),_0xd5dd('0x8'),'dialActive','dialMethod',_0xd5dd('0x9'),_0xd5dd('0xa'),_0xd5dd('0xb'),'dialPredictiveOptimization',_0xd5dd('0xc'),_0xd5dd('0xd'),_0xd5dd('0xe'),_0xd5dd('0xf'),_0xd5dd('0x10'),_0xd5dd('0x11'),_0xd5dd('0x12'),_0xd5dd('0x13'),_0xd5dd('0x14'),_0xd5dd('0x15'),_0xd5dd('0x16'),_0xd5dd('0x17'),_0xd5dd('0x18'),_0xd5dd('0x19'),_0xd5dd('0x1a'),_0xd5dd('0x1b'),'dialGlobalInterval',_0xd5dd('0x1c'),_0xd5dd('0x1d'),_0xd5dd('0x1e'),_0xd5dd('0x1f'),_0xd5dd('0x20'),_0xd5dd('0x21'),_0xd5dd('0x22'),_0xd5dd('0x23'),_0xd5dd('0x24'),'dialAMDMaximumNumberOfWords',_0xd5dd('0x25'),'dialAMDMaximumWordLength',_0xd5dd('0x26'),'dialRecallMeTimeout',_0xd5dd('0x27'),'dialOrderByScheduledAt','dialAgiAfterHangupAgent',_0xd5dd('0x28'),'dialQueueProject2',_0xd5dd('0x7'),_0xd5dd('0x29'),'dialRandomLastDigitCallerIdNumber',_0xd5dd('0x2a'),_0xd5dd('0x2b'),_0xd5dd('0x2c'),_0xd5dd('0x2d'),_0xd5dd('0x2e'),'dialAbandonedMaxRetry','dialAbandonedRetryFrequency',_0xd5dd('0x2f'),_0xd5dd('0x30'),_0xd5dd('0x31'),_0xd5dd('0x32'),_0xd5dd('0x33'),_0xd5dd('0x34'),'dialPredictiveIntervalMinThreshold',_0xd5dd('0x35'),_0xd5dd('0x36'),_0xd5dd('0x37')],'include':[{'model':'Trunk','as':_0xd5dd('0x38'),'attributes':['id',_0xd5dd('0x4'),_0xd5dd('0x39'),_0xd5dd('0x3a')]},{'model':'Pause','as':'mandatoryDispositionPause','attributes':['id','name']},{'model':'Trunk','as':_0xd5dd('0x3b'),'attributes':['id',_0xd5dd('0x4'),_0xd5dd('0x39'),_0xd5dd('0x3a')]},{'model':'Interval','as':'Interval','attributes':['id',_0xd5dd('0x4')],'include':[{'model':_0xd5dd('0x3c'),'as':_0xd5dd('0x3d'),'attributes':['id',_0xd5dd('0x4'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0x60ef=['dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','timeout','dialRecallInQueue','dialOrderByScheduledAt','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','name','Pause','TrunkBackup','callerid','Interval','Intervals','getVoiceQueues','GetVoiceQueue','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence'];(function(_0x507ad0,_0x5412fd){var _0x53c34e=function(_0xdd737a){while(--_0xdd737a){_0x507ad0['push'](_0x507ad0['shift']());}};_0x53c34e(++_0x5412fd);}(_0x60ef,0x9c));var _0xf60e=function(_0x11197b,_0x4253c8){_0x11197b=_0x11197b-0x0;var _0x407380=_0x60ef[_0x11197b];return _0x407380;};'use strict';var client=require('../client');exports[_0xf60e('0x0')]=function(){return function(){return client['Request'](_0xf60e('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xf60e('0x2'),_0xf60e('0x3'),_0xf60e('0x4'),_0xf60e('0x5'),_0xf60e('0x6'),_0xf60e('0x7'),_0xf60e('0x8'),_0xf60e('0x9'),'dialLimitQueue',_0xf60e('0xa'),_0xf60e('0xb'),_0xf60e('0xc'),_0xf60e('0xd'),_0xf60e('0xe'),_0xf60e('0xf'),_0xf60e('0x10'),_0xf60e('0x11'),_0xf60e('0x12'),_0xf60e('0x13'),'dialCongestionMaxRetry',_0xf60e('0x14'),'dialBusyMaxRetry',_0xf60e('0x15'),_0xf60e('0x16'),_0xf60e('0x17'),_0xf60e('0x18'),_0xf60e('0x19'),_0xf60e('0x1a'),_0xf60e('0x1b'),_0xf60e('0x1c'),'dialAMDActive',_0xf60e('0x1d'),_0xf60e('0x1e'),_0xf60e('0x1f'),_0xf60e('0x20'),_0xf60e('0x21'),_0xf60e('0x22'),'dialAMDMaximumNumberOfWords',_0xf60e('0x23'),'dialAMDMaximumWordLength',_0xf60e('0x24'),'dialRecallMeTimeout',_0xf60e('0x25'),_0xf60e('0x26'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient',_0xf60e('0x27'),_0xf60e('0x5'),'strategy',_0xf60e('0x28'),_0xf60e('0x29'),_0xf60e('0x2a'),_0xf60e('0x2b'),_0xf60e('0x2c'),_0xf60e('0x2d'),_0xf60e('0x2e'),_0xf60e('0x2f'),_0xf60e('0x30'),_0xf60e('0x31'),_0xf60e('0x32'),_0xf60e('0x33'),_0xf60e('0x34'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0xf60e('0x35'),_0xf60e('0x36')],'include':[{'model':_0xf60e('0x37'),'as':'Trunk','attributes':['id',_0xf60e('0x38'),'callerid','active']},{'model':_0xf60e('0x39'),'as':'mandatoryDispositionPause','attributes':['id',_0xf60e('0x38')]},{'model':_0xf60e('0x37'),'as':_0xf60e('0x3a'),'attributes':['id',_0xf60e('0x38'),_0xf60e('0x3b'),'active']},{'model':_0xf60e('0x3c'),'as':_0xf60e('0x3c'),'attributes':['id','name'],'include':[{'model':_0xf60e('0x3c'),'as':_0xf60e('0x3d'),'attributes':['id',_0xf60e('0x38'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index 96ecf20..e6915e1 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(_0x426266,_0x276154){var _0x5b1936=function(_0x5dc220){while(--_0x5dc220){_0x426266['push'](_0x426266['shift']());}};_0x5b1936(++_0x276154);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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(_0x966bfc,_0x437af1){var _0x205fed=function(_0x512140){while(--_0x512140){_0x966bfc['push'](_0x966bfc['shift']());}};_0x205fed(++_0x437af1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 53b180b..ee6d6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeade=['../client','Request','GetVoiceQueueRtPauses'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xeade,0x198));var _0xeead=function(_0x39f6c5,_0x8e0f4b){_0x39f6c5=_0x39f6c5-0x0;var _0x53a535=_0xeade[_0x39f6c5];return _0x53a535;};'use strict';var client=require(_0xeead('0x0'));exports['getVoiceQueueRtPauses']=function(_0x158216){return function(){return client[_0xeead('0x1')](_0xeead('0x2'),{'options':{'where':{'VoiceQueueId':_0x158216,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x5b37=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x5b37,0xe2));var _0x75b3=function(_0x2f36d2,_0x24285c){_0x2f36d2=_0x2f36d2-0x0;var _0x147f7f=_0x5b37[_0x2f36d2];return _0x147f7f;};'use strict';var client=require(_0x75b3('0x0'));exports[_0x75b3('0x1')]=function(_0x396d18){return function(){return client[_0x75b3('0x2')](_0x75b3('0x3'),{'options':{'where':{'VoiceQueueId':_0x396d18,'paused':!![]},'raw':!![]},'log':_0x75b3('0x1')});};};
\ No newline at end of file
index 1c645c8..4896304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x1d99ea,_0x137357){var _0x4d8f56=function(_0x4fbc09){while(--_0x4fbc09){_0x1d99ea['push'](_0x1d99ea['shift']());}};_0x4d8f56(++_0x137357);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x44639c,_0x58caa5){var _0xba0942=function(_0x287748){while(--_0x287748){_0x44639c['push'](_0x44639c['shift']());}};_0xba0942(++_0x58caa5);}(_0x7a54,0x106));var _0x47a5=function(_0x2480f7,_0x3f7cbd){_0x2480f7=_0x2480f7-0x0;var _0x1b27f7=_0x7a54[_0x2480f7];return _0x1b27f7;};'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 54e69b9..c83467e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5f=['attended','transfers','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereecontext','transfereeexten','isexternal','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten'];(function(_0x21c7b1,_0x3aab42){var _0x396db6=function(_0x14e351){while(--_0x14e351){_0x21c7b1['push'](_0x21c7b1['shift']());}};_0x396db6(++_0x3aab42);}(_0xee5f,0x121));var _0xfee5=function(_0x4e8c94,_0x27dbad){_0x4e8c94=_0x4e8c94-0x0;var _0x366caa=_0xee5f[_0x4e8c94];return _0x366caa;};'use strict';var client=require('../client');exports[_0xfee5('0x0')]={};exports['blindTransfer']=function(_0x34f4ed){return client[_0xfee5('0x1')](_0xfee5('0x2'),{'body':{'result':_0x34f4ed[_0xfee5('0x3')],'transfererchannel':_0x34f4ed[_0xfee5('0x4')],'transferercalleridnum':_0x34f4ed['transferercalleridnum'],'transferercalleridname':_0x34f4ed[_0xfee5('0x5')],'transfererconnectedlinenum':_0x34f4ed[_0xfee5('0x6')],'transfererconnectedlinename':_0x34f4ed[_0xfee5('0x7')],'transfereraccountcode':_0x34f4ed[_0xfee5('0x8')],'transferercontext':_0x34f4ed[_0xfee5('0x9')],'transfererexten':_0x34f4ed[_0xfee5('0xa')],'transfererlinkedid':_0x34f4ed[_0xfee5('0xb')],'transfereechannel':_0x34f4ed[_0xfee5('0xc')],'transfereecalleridnum':_0x34f4ed[_0xfee5('0xd')],'transfereecalleridname':_0x34f4ed['transfereecalleridname'],'transfereeconnectedlinenum':_0x34f4ed[_0xfee5('0xe')],'transfereeconnectedlinename':_0x34f4ed['transfereeconnectedlinename'],'transfereeaccountcode':_0x34f4ed['transfereeaccountcode'],'transfereecontext':_0x34f4ed[_0xfee5('0xf')],'transfereeexten':_0x34f4ed[_0xfee5('0x10')],'transfereelinkedid':_0x34f4ed['transfereelinkedid'],'isexternal':_0x34f4ed[_0xfee5('0x11')],'context':_0x34f4ed['context'],'extension':_0x34f4ed['extension'],'type':'blind'},'log':_0xfee5('0x2')});};exports['attendedTransfer']=function(_0xa9a28){return client[_0xfee5('0x1')](_0xfee5('0x2'),{'body':{'result':_0xa9a28[_0xfee5('0x3')],'transfererchannel':_0xa9a28[_0xfee5('0x12')],'transferercalleridnum':_0xa9a28[_0xfee5('0x13')],'transferercalleridname':_0xa9a28[_0xfee5('0x14')],'transfererconnectedlinenum':_0xa9a28[_0xfee5('0x15')],'transfererconnectedlinename':_0xa9a28[_0xfee5('0x16')],'transfereraccountcode':_0xa9a28[_0xfee5('0x17')],'transferercontext':_0xa9a28['secondtransferercontext'],'transfererexten':_0xa9a28[_0xfee5('0x18')],'transfererlinkedid':_0xa9a28['origtransfererlinkedid'],'transfereechannel':_0xa9a28[_0xfee5('0x19')],'transfereecalleridnum':_0xa9a28[_0xfee5('0x1a')],'transfereecalleridname':_0xa9a28[_0xfee5('0x1b')],'transfereeconnectedlinenum':_0xa9a28[_0xfee5('0x1c')],'transfereeconnectedlinename':_0xa9a28[_0xfee5('0x1d')],'transfereeaccountcode':_0xa9a28['transfertargetaccountcode'],'transfereecontext':_0xa9a28[_0xfee5('0x1e')],'transfereeexten':_0xa9a28[_0xfee5('0x1f')],'transfereelinkedid':_0xa9a28[_0xfee5('0x20')],'isexternal':_0xa9a28[_0xfee5('0x11')],'context':_0xa9a28[_0xfee5('0x21')],'extension':_0xa9a28[_0xfee5('0x22')],'type':_0xfee5('0x23')},'log':_0xfee5('0x2')});};
\ No newline at end of file
+var _0xb3ba=['context','extension','blind','attendedTransfer','Request','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','blindTransfer','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinename','transfereeaccountcode','transfereelinkedid','isexternal'];(function(_0x508736,_0x333336){var _0x5774e3=function(_0x5e8388){while(--_0x5e8388){_0x508736['push'](_0x508736['shift']());}};_0x5774e3(++_0x333336);}(_0xb3ba,0x135));var _0xab3b=function(_0x3669db,_0x51bac8){_0x3669db=_0x3669db-0x0;var _0x4103db=_0xb3ba[_0x3669db];return _0x4103db;};'use strict';var client=require('../client');exports['transfers']={};exports[_0xab3b('0x0')]=function(_0x4ab271){return client['Request'](_0xab3b('0x1'),{'body':{'result':_0x4ab271[_0xab3b('0x2')],'transfererchannel':_0x4ab271[_0xab3b('0x3')],'transferercalleridnum':_0x4ab271[_0xab3b('0x4')],'transferercalleridname':_0x4ab271[_0xab3b('0x5')],'transfererconnectedlinenum':_0x4ab271[_0xab3b('0x6')],'transfererconnectedlinename':_0x4ab271[_0xab3b('0x7')],'transfereraccountcode':_0x4ab271[_0xab3b('0x8')],'transferercontext':_0x4ab271[_0xab3b('0x9')],'transfererexten':_0x4ab271[_0xab3b('0xa')],'transfererlinkedid':_0x4ab271[_0xab3b('0xb')],'transfereechannel':_0x4ab271[_0xab3b('0xc')],'transfereecalleridnum':_0x4ab271[_0xab3b('0xd')],'transfereecalleridname':_0x4ab271[_0xab3b('0xe')],'transfereeconnectedlinenum':_0x4ab271['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x4ab271[_0xab3b('0xf')],'transfereeaccountcode':_0x4ab271[_0xab3b('0x10')],'transfereecontext':_0x4ab271['transfereecontext'],'transfereeexten':_0x4ab271['transfereeexten'],'transfereelinkedid':_0x4ab271[_0xab3b('0x11')],'isexternal':_0x4ab271[_0xab3b('0x12')],'context':_0x4ab271[_0xab3b('0x13')],'extension':_0x4ab271[_0xab3b('0x14')],'type':_0xab3b('0x15')},'log':'CreateVoiceTransferReport'});};exports[_0xab3b('0x16')]=function(_0x11b78e){return client[_0xab3b('0x17')](_0xab3b('0x1'),{'body':{'result':_0x11b78e[_0xab3b('0x2')],'transfererchannel':_0x11b78e['origtransfererchannel'],'transferercalleridnum':_0x11b78e[_0xab3b('0x18')],'transferercalleridname':_0x11b78e[_0xab3b('0x19')],'transfererconnectedlinenum':_0x11b78e[_0xab3b('0x1a')],'transfererconnectedlinename':_0x11b78e[_0xab3b('0x1b')],'transfereraccountcode':_0x11b78e['origtransfereraccountcode'],'transferercontext':_0x11b78e['secondtransferercontext'],'transfererexten':_0x11b78e[_0xab3b('0x1c')],'transfererlinkedid':_0x11b78e[_0xab3b('0x1d')],'transfereechannel':_0x11b78e[_0xab3b('0x1e')],'transfereecalleridnum':_0x11b78e[_0xab3b('0x1f')],'transfereecalleridname':_0x11b78e[_0xab3b('0x20')],'transfereeconnectedlinenum':_0x11b78e[_0xab3b('0x21')],'transfereeconnectedlinename':_0x11b78e[_0xab3b('0x22')],'transfereeaccountcode':_0x11b78e[_0xab3b('0x23')],'transfereecontext':_0x11b78e[_0xab3b('0x24')],'transfereeexten':_0x11b78e['transfertargetexten'],'transfereelinkedid':_0x11b78e[_0xab3b('0x25')],'isexternal':_0x11b78e[_0xab3b('0x12')],'context':_0x11b78e[_0xab3b('0x26')],'extension':_0x11b78e[_0xab3b('0x27')],'type':_0xab3b('0x28')},'log':_0xab3b('0x1')});};
\ No newline at end of file
index 8a87844..366a849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bb0=['answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','total','type','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','push','length','omit','undefined','voicechannel','map','find','channels','uniqueid','channel','%s.%s','filename','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','validate','resolve','StopMixMonitor','destinationchannel','stop','wav','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','outbound','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','server','listen','127.0.0.1','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','moment','../ami','format','%s/%s','name','timers','updateAcw','agents','updateStatusRealtime','QueuePause','isConnected','error','asterisk','ami\x20disconnected','join','pick','keys','module','action','then','message','catch','username','Action','content','voiceQueues','hasOwnProperty','strategy'];(function(_0x579105,_0x579832){var _0x53c368=function(_0x13a43f){while(--_0x13a43f){_0x579105['push'](_0x579105['shift']());}};_0x53c368(++_0x579832);}(_0x2bb0,0xf3));var _0x02bb=function(_0x5db223,_0x4ed920){_0x5db223=_0x5db223-0x0;var _0x250519=_0x2bb0[_0x5db223];return _0x250519;};'use strict';var _=require(_0x02bb('0x0'));var util=require(_0x02bb('0x1'));var jayson=require(_0x02bb('0x2'));var schema=require('validate');var moment=require(_0x02bb('0x3'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require(_0x02bb('0x4'));exports['listen']=function(_0x1dff97,_0xe8fdaa,_0x8e4057){return new Promise(function(_0x390ff7,_0x43dbb7){var _0x16bb7c={'QueuePause':function(_0x440f9c){return new Promise(function(_0x47d7ae){var _0x6d064a=util[_0x02bb('0x5')](_0x02bb('0x6'),'SIP',_0x440f9c[_0x02bb('0x7')]);if(_0x1dff97['timers']&&_0x1dff97[_0x02bb('0x8')][_0x6d064a]&&_0x1dff97[_0x02bb('0x8')][_0x6d064a]['timer']){_0x1dff97[_0x02bb('0x8')][_0x6d064a][_0x02bb('0x9')]();}if(_0x1dff97[_0x02bb('0xa')][_0x6d064a]){_0x1dff97['agents'][_0x6d064a][_0x02bb('0xb')]({'statePause':_0x440f9c['pause']?!![]:![]});}_0x47d7ae({'code':0xc8,'message':_0x02bb('0xc')});});},'Reload':function(_0x294078){var _0x1079f9=this;return new Promise(function(_0x5c8728,_0x16330c){if(ami[_0x02bb('0xd')]()==![]){return _0x16330c(_0x1079f9[_0x02bb('0xe')](0x1f4,[config['asterisk']['ip'],config[_0x02bb('0xf')]['username'],_0x02bb('0x10')][_0x02bb('0x11')]('\x20')));}_0x294078=_[_0x02bb('0x12')](_0x294078,_[_0x02bb('0x13')](properties[_0x02bb('0x14')]));_0x294078[_0x02bb('0x15')]='Reload';return ami['Action'](_0x294078)[_0x02bb('0x16')](function(_0x46abfd){_0x5c8728({'code':0xc8,'message':_0x46abfd[_0x02bb('0x17')]});})[_0x02bb('0x18')](function(_0x23da71){_0x16330c(_0x1079f9[_0x02bb('0xe')](0x1f5,_0x23da71['message']));});});},'Command':function(_0x362b16){var _0x4b3f78=this;return new Promise(function(_0xb4415a,_0x298340){if(ami[_0x02bb('0xd')]()==![]){return _0x298340(_0x4b3f78['error'](0x1f4,[config[_0x02bb('0xf')]['ip'],config[_0x02bb('0xf')][_0x02bb('0x19')],'ami\x20disconnected'][_0x02bb('0x11')]('\x20')));}_0x362b16=_[_0x02bb('0x12')](_0x362b16,'command');_0x362b16[_0x02bb('0x15')]='Command';return ami[_0x02bb('0x1a')](_0x362b16)[_0x02bb('0x16')](function(_0x21e550){_0xb4415a({'code':0xc8,'message':_0x21e550[_0x02bb('0x1b')]});})[_0x02bb('0x18')](function(_0x35d2ec){_0x298340(_0x4b3f78[_0x02bb('0xe')](0x1f5,_0x35d2ec['message']));});});},'VoiceQueues':function(){return new Promise(function(_0x58467f){var _0x278fc9=[];for(var _0x5ac511 in _0x1dff97[_0x02bb('0x1c')]){if(_0x1dff97[_0x02bb('0x1c')][_0x02bb('0x1d')](_0x5ac511)){var _0x4d3dad=_0x1dff97[_0x02bb('0x1c')][_0x5ac511];var _0x96298e={'id':_0x4d3dad['id'],'name':_0x4d3dad['name'],'strategy':_0x4d3dad[_0x02bb('0x1e')],'answered':_0x4d3dad[_0x02bb('0x1f')],'available':_0x4d3dad[_0x02bb('0x20')],'loggedIn':_0x4d3dad[_0x02bb('0x21')],'pTalking':_0x4d3dad[_0x02bb('0x22')],'sumBillable':_0x4d3dad[_0x02bb('0x23')],'sumDuration':_0x4d3dad['sumDuration'],'sumHoldTime':_0x4d3dad[_0x02bb('0x24')]||0x0,'talking':_0x4d3dad['talking'],'total':_0x4d3dad[_0x02bb('0x25')],'type':_0x4d3dad[_0x02bb('0x26')],'unmanaged':_0x4d3dad[_0x02bb('0x27')],'abandoned':_0x4d3dad['abandoned'],'waiting':_0x4d3dad[_0x02bb('0x28')],'loggedInDb':_0x4d3dad[_0x02bb('0x29')]};if(_0x4d3dad[_0x02bb('0x26')]==='outbound'){_0x96298e[_0x02bb('0x2a')]=_0x4d3dad[_0x02bb('0x2a')];_0x96298e[_0x02bb('0x2b')]=_0x4d3dad['dialMethod'];_0x96298e['dialOriginateCallerIdName']=_0x4d3dad[_0x02bb('0x2c')];_0x96298e['dialOriginateCallerIdNumber']=_0x4d3dad['dialOriginateCallerIdNumber'];_0x96298e[_0x02bb('0x2d')]=_0x4d3dad[_0x02bb('0x2d')];_0x96298e['dialPrefix']=_0x4d3dad[_0x02bb('0x2e')];_0x96298e[_0x02bb('0x2f')]=_0x4d3dad[_0x02bb('0x2f')];_0x96298e['outboundAnswerAgiCallsDay']=_0x4d3dad[_0x02bb('0x30')];_0x96298e[_0x02bb('0x31')]=_0x4d3dad[_0x02bb('0x31')];_0x96298e[_0x02bb('0x32')]=_0x4d3dad[_0x02bb('0x32')];_0x96298e[_0x02bb('0x33')]=_0x4d3dad[_0x02bb('0x33')];_0x96298e[_0x02bb('0x34')]=_0x4d3dad[_0x02bb('0x34')];_0x96298e[_0x02bb('0x35')]=_0x4d3dad['outboundDropCallsDayACS'];_0x96298e[_0x02bb('0x36')]=_0x4d3dad[_0x02bb('0x36')];_0x96298e['outboundDropCallsDayTimeout']=_0x4d3dad[_0x02bb('0x37')];_0x96298e[_0x02bb('0x38')]=_0x4d3dad[_0x02bb('0x38')];_0x96298e[_0x02bb('0x39')]=_0x4d3dad['outboundNoSuchCallsDay'];_0x96298e[_0x02bb('0x3a')]=_0x4d3dad['outboundOriginateFailureCallsDay'];_0x96298e[_0x02bb('0x3b')]=_0x4d3dad[_0x02bb('0x3b')];_0x96298e[_0x02bb('0x3c')]=_0x4d3dad[_0x02bb('0x3c')];_0x96298e[_0x02bb('0x3d')]=_0x4d3dad[_0x02bb('0x3d')];_0x96298e[_0x02bb('0x3e')]=_0x4d3dad['predictiveIntervalAnsweredCalls'];_0x96298e[_0x02bb('0x3f')]=_0x4d3dad[_0x02bb('0x3f')];_0x96298e['predictiveIntervalAvgTalktime']=_0x4d3dad[_0x02bb('0x40')];_0x96298e[_0x02bb('0x41')]=_0x4d3dad[_0x02bb('0x41')];_0x96298e[_0x02bb('0x42')]=_0x4d3dad[_0x02bb('0x42')];_0x96298e[_0x02bb('0x43')]=_0x4d3dad['predictiveIntervalErlangCalls'];_0x96298e[_0x02bb('0x44')]=_0x4d3dad['predictiveIntervalErlangCallsDroppedCalls'];_0x96298e[_0x02bb('0x45')]=_0x4d3dad[_0x02bb('0x45')];_0x96298e[_0x02bb('0x46')]=_0x4d3dad[_0x02bb('0x46')];_0x96298e[_0x02bb('0x47')]=_0x4d3dad[_0x02bb('0x47')];_0x96298e[_0x02bb('0x48')]=_0x4d3dad[_0x02bb('0x48')];_0x96298e[_0x02bb('0x49')]=_0x4d3dad['predictiveIntervalTotalCalls'];_0x96298e[_0x02bb('0x17')]=_0x4d3dad[_0x02bb('0x17')];_0x96298e['originated']=_0x4d3dad[_0x02bb('0x4a')];_0x96298e[_0x02bb('0x4b')]=_0x4d3dad['erlangCalls'];_0x96298e['erlangCallToSecond']=_0x4d3dad[_0x02bb('0x4c')];_0x96298e[_0x02bb('0x4d')]=_0x4d3dad[_0x02bb('0x4d')];_0x96298e[_0x02bb('0x4e')]=_0x4d3dad[_0x02bb('0x4e')];_0x96298e[_0x02bb('0x4f')]=_0x4d3dad['startPredictive'];_0x96298e[_0x02bb('0x50')]=_0x4d3dad['startProgressive'];}if(_0x4d3dad['Trunk']){_0x96298e[_0x02bb('0x51')]={'id':_0x4d3dad[_0x02bb('0x51')]['id'],'name':_0x4d3dad['Trunk'][_0x02bb('0x7')],'active':_0x4d3dad['Trunk'][_0x02bb('0x52')],'callerid':_0x4d3dad[_0x02bb('0x51')][_0x02bb('0x53')]};}if(_0x4d3dad['Interval']){_0x96298e['Interval']={'id':_0x4d3dad['Interval']['id'],'name':_0x4d3dad['Interval'][_0x02bb('0x7')]};}_0x278fc9[_0x02bb('0x54')](_0x96298e);}}_0x58467f({'count':_0x278fc9[_0x02bb('0x55')],'rows':_0x278fc9});});},'UpdateVoiceQueue':function(_0x5be6b9){return new Promise(function(_0x134482,_0x13a831){var _0x24743e=_['find'](_0x1dff97[_0x02bb('0x1c')],{'id':parseInt(_0x5be6b9['id'])});var _0x40b76c=_[_0x02bb('0x56')](_0x5be6b9,['id']);if(_0x24743e){for(var _0x43ede8 in _0x40b76c){if(typeof _0x40b76c[_0x43ede8]!==_0x02bb('0x57')&&typeof _0x24743e[_0x43ede8]!=='undefined'){_0x24743e[_0x43ede8]=_0x40b76c[_0x43ede8];}}_0x134482(_0x24743e);}else{_0x13a831();}});},'VoiceChannels':function(){return new Promise(function(_0x4cc8dc){var _0x89ef1d=_['values'](_0x1dff97['channels']);_0x4cc8dc({'count':_0x89ef1d[_0x02bb('0x55')],'rows':_0x89ef1d});});},'VoiceChannelMixMonitor':function(_0x11236b){var _0x5e9785=this;return new Promise(function(_0x394626,_0x18dcf7){if(ami[_0x02bb('0xd')]()==![]){return _0x18dcf7(_0x5e9785['error'](0x1f4,[config[_0x02bb('0xf')]['ip'],config[_0x02bb('0xf')][_0x02bb('0x19')],_0x02bb('0x10')][_0x02bb('0x11')]('\x20')));}var _0x186768=schema(properties[_0x02bb('0x58')])['validate'](_0x11236b);if(_0x186768[_0x02bb('0x55')]>0x0){return _0x18dcf7(_0x5e9785[_0x02bb('0xe')](0x1f4,_[_0x02bb('0x59')](_0x186768,_0x02bb('0x17'))['join'](',\x20')));}var _0x171f85=_[_0x02bb('0x5a')](_0x1dff97[_0x02bb('0x5b')],{'uniqueid':_0x11236b[_0x02bb('0x5c')]});if(_0x171f85&&_0x171f85[_0x02bb('0x5d')]){var _0x3fe582=util[_0x02bb('0x5')](_0x02bb('0x5e'),_0x11236b[_0x02bb('0x5f')]||_0x11236b[_0x02bb('0x5c')],_0x11236b[_0x02bb('0x5')]||'wav');return ami[_0x02bb('0x1a')]({'action':'MixMonitor','channel':_0x171f85[_0x02bb('0x5d')],'file':_0x3fe582,'options':_0x02bb('0x60')})[_0x02bb('0x16')](function(_0x121174){var _0x13c357=_[_0x02bb('0x5a')](_0x171f85[_0x02bb('0x61')],{'filename':_0x02bb('0x62')+_0x3fe582['toLowerCase']()});if(_[_0x02bb('0x63')](_0x13c357)){_0x171f85[_0x02bb('0x61')][_0x02bb('0x54')]({'filename':_0x02bb('0x62')+_0x3fe582[_0x02bb('0x64')](),'createdAt':moment()[_0x02bb('0x5')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x121174[_0x02bb('0x65')],'status':_0x02bb('0x66')});}else{_0x13c357[_0x02bb('0x65')]=_0x121174['mixmonitorid'];_0x13c357[_0x02bb('0x67')]='rec';}_0x394626({'code':0xc8,'message':[_0x11236b[_0x02bb('0x5c')],_0x02bb('0x68'),_0x121174[_0x02bb('0x65')]][_0x02bb('0x11')]('\x20'),'mixmonitorid':_0x121174[_0x02bb('0x65')]});})[_0x02bb('0x18')](function(_0x44b3fb){_0x18dcf7(_0x5e9785[_0x02bb('0xe')](0x1f5,[_0x11236b[_0x02bb('0x5c')],_0x44b3fb[_0x02bb('0x17')]['toLowerCase']()][_0x02bb('0x11')]('\x20')));});}else{return _0x18dcf7(_0x5e9785[_0x02bb('0xe')](0x1f5,_0x02bb('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x59ddf5){var _0x45deef=this;return new Promise(function(_0x337ece,_0x31952){if(ami[_0x02bb('0xd')]()==![]){return _0x31952(_0x45deef[_0x02bb('0xe')](0x1f4,[config['asterisk']['ip'],config[_0x02bb('0xf')][_0x02bb('0x19')],_0x02bb('0x10')][_0x02bb('0x11')]('\x20')));}var _0x27aa4d=schema(properties[_0x02bb('0x58')])[_0x02bb('0x6a')](_0x59ddf5);if(_0x27aa4d[_0x02bb('0x55')]>0x0){return _0x31952(_0x45deef[_0x02bb('0xe')](0x1f4,_[_0x02bb('0x59')](_0x27aa4d,_0x02bb('0x17'))[_0x02bb('0x11')](',\x20')));}var _0x4823ba=_[_0x02bb('0x5a')](_0x1dff97[_0x02bb('0x5b')],{'uniqueid':_0x59ddf5['uniqueid']});if(_0x4823ba){return Promise[_0x02bb('0x6b')]()[_0x02bb('0x16')](function(){if(_0x4823ba[_0x02bb('0x5d')]){return ami[_0x02bb('0x1a')]({'action':_0x02bb('0x6c'),'channel':_0x4823ba[_0x02bb('0x5d')],'mixmonitorid':_0x59ddf5['mixmonitorid']})[_0x02bb('0x18')](function(){});}})[_0x02bb('0x16')](function(){if(_0x4823ba[_0x02bb('0x6d')]){return ami[_0x02bb('0x1a')]({'action':_0x02bb('0x6c'),'channel':_0x4823ba[_0x02bb('0x6d')],'mixmonitorid':_0x59ddf5[_0x02bb('0x65')]})[_0x02bb('0x18')](function(){});}})['then'](function(){var _0x1b8b0a=_[_0x02bb('0x5a')](_0x4823ba['monitors'],{'mixmonitorid':_0x59ddf5[_0x02bb('0x65')]});if(_0x1b8b0a){_0x1b8b0a[_0x02bb('0x67')]=_0x02bb('0x6e');}})[_0x02bb('0x16')](function(){var _0x30428a=util[_0x02bb('0x5')](_0x02bb('0x5e'),_0x59ddf5[_0x02bb('0x5f')]||_0x59ddf5[_0x02bb('0x5c')],_0x59ddf5[_0x02bb('0x5')]||_0x02bb('0x6f'));var _0x2908e5=_[_0x02bb('0x5a')](_0x4823ba[_0x02bb('0x61')],{'filename':_0x02bb('0x62')+_0x30428a[_0x02bb('0x64')]()});if(_0x2908e5){_0x2908e5['status']=_0x02bb('0x6e');}})[_0x02bb('0x16')](function(){_0x337ece({'code':0xc8,'message':[_0x59ddf5[_0x02bb('0x5c')],_0x02bb('0x70')][_0x02bb('0x11')]('\x20')});})[_0x02bb('0x18')](function(_0x13cdf6){_0x31952(_0x45deef['error'](0x1f5,[_0x59ddf5['uniqueid'],_0x13cdf6[_0x02bb('0x17')][_0x02bb('0x64')]()][_0x02bb('0x11')]('\x20')));});}else{return _0x31952(_0x45deef[_0x02bb('0xe')](0x1f5,_0x02bb('0x69')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0xeb2222){var _0x282adc=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0x72')]);_0xeb2222({'count':_0x282adc['length'],'rows':_0x282adc});});},'VoiceQueuesChannel':function(_0x45ac2e){var _0x33251d=this;return new Promise(function(_0x55bc56,_0x380e52){var _0x35747d=schema(properties['voicequeuechannel'])[_0x02bb('0x6a')](_0x45ac2e);if(_0x35747d['length']>0x0){return _0x380e52(_0x33251d['error'](0x1f4,_['map'](_0x35747d,_0x02bb('0x17'))[_0x02bb('0x11')](',\x20')));}var _0x3b33c1=_[_0x02bb('0x5a')](_0x1dff97['queueChannels'],{'uniqueid':_0x45ac2e[_0x02bb('0x5c')]});if(_0x3b33c1){_0x55bc56(_0x3b33c1);}else{return _0x380e52(_0x33251d[_0x02bb('0xe')](0x1f5,_0x02bb('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x45ede0){var _0x59e519=this;return new Promise(function(_0x2f427b,_0x5ca9e5){if(ami['isConnected']()==![]){return _0x5ca9e5(_0x59e519[_0x02bb('0xe')](0x1f4,[config[_0x02bb('0xf')]['ip'],config['asterisk'][_0x02bb('0x19')],'ami\x20disconnected'][_0x02bb('0x11')]('\x20')));}var _0x4b9b84=schema(properties[_0x02bb('0x73')])[_0x02bb('0x6a')](_0x45ede0);if(_0x4b9b84[_0x02bb('0x55')]>0x0){return _0x5ca9e5(_0x59e519[_0x02bb('0xe')](0x1f4,_[_0x02bb('0x59')](_0x4b9b84,_0x02bb('0x17'))[_0x02bb('0x11')](',\x20')));}var _0x3adeb4=_['find'](_0x1dff97[_0x02bb('0x72')],{'uniqueid':_0x45ede0[_0x02bb('0x5c')]});if(_0x3adeb4&&_0x3adeb4[_0x02bb('0x5d')]){return ami[_0x02bb('0x1a')]({'action':_0x02bb('0x74'),'channel':_0x3adeb4['channel']})['then'](function(_0x37a944){_0x2f427b({'code':0xc8,'message':[_0x45ede0[_0x02bb('0x5c')],_0x37a944['message'][_0x02bb('0x64')]()][_0x02bb('0x11')]('\x20')});})[_0x02bb('0x18')](function(_0x165ac2){_0x5ca9e5(_0x59e519[_0x02bb('0xe')](0x1f5,[_0x45ede0[_0x02bb('0x5c')],_0x165ac2[_0x02bb('0x17')]['toLowerCase']()]['join']('\x20')));});}else{return _0x5ca9e5(_0x59e519[_0x02bb('0xe')](0x1f5,_0x02bb('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x36be6f){var _0x462c86=this;return new Promise(function(_0x2c177e,_0x940d74){if(ami[_0x02bb('0xd')]()==![]){return _0x940d74(_0x462c86[_0x02bb('0xe')](0x1f4,[config[_0x02bb('0xf')]['ip'],config[_0x02bb('0xf')]['username'],_0x02bb('0x10')]['join']('\x20')));}var _0x839aa3=schema(properties[_0x02bb('0x75')])[_0x02bb('0x6a')](_0x36be6f);if(_0x839aa3[_0x02bb('0x55')]>0x0){return _0x940d74(_0x462c86[_0x02bb('0xe')](0x1f4,_[_0x02bb('0x59')](_0x839aa3,_0x02bb('0x17'))[_0x02bb('0x11')](',\x20')));}var _0x4379b9=_[_0x02bb('0x5a')](_0x1dff97[_0x02bb('0x72')],{'uniqueid':_0x36be6f[_0x02bb('0x5c')]});if(_0x4379b9&&_0x4379b9['channel']){return ami[_0x02bb('0x1a')]({'action':'Redirect','channel':_0x4379b9['channel'],'exten':_0x36be6f[_0x02bb('0x76')],'context':_0x36be6f[_0x02bb('0x77')]||_0x4379b9[_0x02bb('0x77')],'priority':0x1})[_0x02bb('0x16')](function(_0xab6908){_0x2c177e({'code':0xc8,'message':[_0x36be6f[_0x02bb('0x5c')],_0xab6908['message'][_0x02bb('0x64')]()]['join']('\x20')});})['catch'](function(_0x36d35f){_0x940d74(_0x462c86[_0x02bb('0xe')](0x1f5,[_0x36be6f[_0x02bb('0x5c')],_0x36d35f[_0x02bb('0x17')][_0x02bb('0x64')]()][_0x02bb('0x11')]('\x20')));});}else{return _0x940d74(_0x462c86[_0x02bb('0xe')](0x1f5,_0x02bb('0x69')));}});},'Agents':function(_0x138afe){return new Promise(function(_0x4af771){var _0x3837ce=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0xa')]);if(_0x138afe&&_0x138afe['id']){var _0x52355e=_[_0x02bb('0x5a')](_0x3837ce,function(_0x2bd921){return _0x2bd921['id']===_0x138afe['id'];});_0x4af771(_0x52355e);}else{_0x4af771({'count':_0x3837ce['length'],'rows':_0x3837ce});}});},'Telephones':function(){return new Promise(function(_0x4b07f1){var _0x468c76=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0x78')]);_0x4b07f1({'count':_0x468c76[_0x02bb('0x55')],'rows':_0x468c76});});},'Trunks':function(){return new Promise(function(_0x27cfe1){var _0xb29a59=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0x79')]);_0x27cfe1({'count':_0xb29a59[_0x02bb('0x55')],'rows':_0xb29a59});});},'OutboundChannels':function(){return new Promise(function(_0x4f4020){var _0x3b6603=_[_0x02bb('0x71')](_0x1dff97['outboundChannels']);_0x4f4020({'count':_0x3b6603[_0x02bb('0x55')],'rows':_0x3b6603});});},'Outbound':function(){return new Promise(function(_0x281e09){_0x281e09(_0x1dff97[_0x02bb('0x7a')]);});},'Campaigns':function(){return new Promise(function(_0x261b6f){var _0x261ddb=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0x7b')]);_0x261b6f({'count':_0x261ddb['length'],'rows':_0x261ddb});});},'VoiceQueuesPreview':function(_0x439799){var _0x448a7a=this;return new Promise(function(_0x73d2b3,_0x5d7967){_0xe8fdaa[_0x02bb('0x7c')](_0x439799['id'])[_0x02bb('0x16')](function(_0x569364){_0x73d2b3({'code':0xc8,'message':_0x569364['message']});})[_0x02bb('0x18')](function(_0x2e4b49){_0x5d7967(_0x448a7a['error'](0x1f4,_0x2e4b49[_0x02bb('0x17')]));});});},'EventManager':function(_0xf77848){var _0x2cbe8d=this;return new Promise(function(_0x2926c5,_0x5b6802){if(!_0xf77848[_0x02bb('0x7d')]){return _0x5b6802(_0x2cbe8d[_0x02bb('0xe')](0x1f4,_0x02bb('0x7e')));}ami[_0x02bb('0x7f')](_0x02bb('0x80')+_0xf77848['event'],_0xf77848[_0x02bb('0x17')]);_0x2926c5({'code':0xc8,'message':_0xf77848});});},'FaxAccounts':function(){return new Promise(function(_0x225f46){var _0x1d1b96=_[_0x02bb('0x71')](_0x1dff97[_0x02bb('0x81')]);_0x225f46({'count':_0x1d1b96[_0x02bb('0x55')],'rows':_0x1d1b96});});},'SendFax':function(_0x5ebbcd){var _0x178c48=this;return new Promise(function(_0x12b556,_0x533191){_0x8e4057[_0x02bb('0x82')](_0x5ebbcd)[_0x02bb('0x16')](function(_0x2037d0){_0x12b556({'code':0xc8,'message':_0x2037d0[_0x02bb('0x17')]});})[_0x02bb('0x18')](function(_0x4aec84){_0x533191(_0x178c48[_0x02bb('0xe')](0x1f4,_0x4aec84[_0x02bb('0x17')]));});});},'CheckAfterSend':function(_0x286d69){var _0x15d8bd=this;return new Promise(function(_0x430c2a,_0x2fe1b7){_0x8e4057[_0x02bb('0x83')](_0x286d69)[_0x02bb('0x16')](function(_0x4cd1f6){_0x430c2a({'code':0xc8,'message':_0x4cd1f6[_0x02bb('0x17')]});})[_0x02bb('0x18')](function(_0x4b8e41){_0x2fe1b7(_0x15d8bd[_0x02bb('0xe')](0x1f4,_0x4b8e41['message']));});});}};var _0x1966a9=jayson[_0x02bb('0x84')](_0x16bb7c)['http']();_0x1966a9['on']('error',function(_0x33f291){return _0x43dbb7(_0x33f291);});_0x1966a9[_0x02bb('0x85')](0x232a,_0x02bb('0x86'),function(){console['log'](_0x02bb('0x87'),0x232a);return _0x390ff7(_0x02bb('0x88')+0x232a);});});};
\ No newline at end of file
+var _0x2fb2=['length','username','voicechannel','map','uniqueid','%s.%s','wav','MixMonitor','channel','ai(mixmonitorid)','toLowerCase','/var/spool/asterisk/monitor/','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','status','stop','filename','monitors','queueChannels','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outbound','campaigns','run','event','emit','custom:','send','checkAfterSend','server','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','moment','../properties','listen','format','%s/%s','name','timers','timer','updateAcw','agents','pause','QueuePause','isConnected','asterisk','ami\x20disconnected','pick','reload','module','action','Reload','Action','then','catch','message','join','Command','error','voiceQueues','hasOwnProperty','push','find','omit','undefined','values','channels'];(function(_0x4853a6,_0x3f5952){var _0x548e23=function(_0x1abd1c){while(--_0x1abd1c){_0x4853a6['push'](_0x4853a6['shift']());}};_0x548e23(++_0x3f5952);}(_0x2fb2,0xcf));var _0x22fb=function(_0x961a0b,_0x5cf304){_0x961a0b=_0x961a0b-0x0;var _0x2d5d9c=_0x2fb2[_0x961a0b];return _0x2d5d9c;};'use strict';var _=require(_0x22fb('0x0'));var util=require(_0x22fb('0x1'));var jayson=require(_0x22fb('0x2'));var schema=require(_0x22fb('0x3'));var moment=require(_0x22fb('0x4'));var config=require('../../../config/environment');var properties=require(_0x22fb('0x5'));var ami=require('../ami');var VoiceQueueSummary=require('../model/voiceQueueSummary');exports[_0x22fb('0x6')]=function(_0x2ca468,_0x3c0a4d,_0x473c6f){return new Promise(function(_0x5c9462,_0x554b3a){var _0x40d22f={'QueuePause':function(_0x56428e){return new Promise(function(_0xf8b0d0){var _0x19ab58=util[_0x22fb('0x7')](_0x22fb('0x8'),'SIP',_0x56428e[_0x22fb('0x9')]);if(_0x2ca468[_0x22fb('0xa')]&&_0x2ca468['timers'][_0x19ab58]&&_0x2ca468['timers'][_0x19ab58][_0x22fb('0xb')]){_0x2ca468['timers'][_0x19ab58][_0x22fb('0xc')]();}if(_0x2ca468[_0x22fb('0xd')][_0x19ab58]){_0x2ca468[_0x22fb('0xd')][_0x19ab58]['updateStatusRealtime']({'statePause':_0x56428e[_0x22fb('0xe')]?!![]:![]});}_0xf8b0d0({'code':0xc8,'message':_0x22fb('0xf')});});},'Reload':function(_0x4058bf){var _0xbc41f6=this;return new Promise(function(_0x5dc055,_0x5b545a){if(ami[_0x22fb('0x10')]()==![]){return _0x5b545a(_0xbc41f6['error'](0x1f4,[config[_0x22fb('0x11')]['ip'],config[_0x22fb('0x11')]['username'],_0x22fb('0x12')]['join']('\x20')));}_0x4058bf=_[_0x22fb('0x13')](_0x4058bf,_['keys'](properties[_0x22fb('0x14')][_0x22fb('0x15')]));_0x4058bf[_0x22fb('0x16')]=_0x22fb('0x17');return ami[_0x22fb('0x18')](_0x4058bf)[_0x22fb('0x19')](function(_0x46184b){_0x5dc055({'code':0xc8,'message':_0x46184b['message']});})[_0x22fb('0x1a')](function(_0x1d2c38){_0x5b545a(_0xbc41f6['error'](0x1f5,_0x1d2c38[_0x22fb('0x1b')]));});});},'Command':function(_0x1f27f8){var _0x42d013=this;return new Promise(function(_0x44113f,_0x306647){if(ami['isConnected']()==![]){return _0x306647(_0x42d013['error'](0x1f4,[config[_0x22fb('0x11')]['ip'],config[_0x22fb('0x11')]['username'],_0x22fb('0x12')][_0x22fb('0x1c')]('\x20')));}_0x1f27f8=_[_0x22fb('0x13')](_0x1f27f8,'command');_0x1f27f8['action']=_0x22fb('0x1d');return ami[_0x22fb('0x18')](_0x1f27f8)[_0x22fb('0x19')](function(_0x38ad60){_0x44113f({'code':0xc8,'message':_0x38ad60['content']});})[_0x22fb('0x1a')](function(_0x5293e1){_0x306647(_0x42d013[_0x22fb('0x1e')](0x1f5,_0x5293e1[_0x22fb('0x1b')]));});});},'VoiceQueues':function(){return new Promise(function(_0x2dccb8){var _0x31800c=[];for(var _0x2a960f in _0x2ca468[_0x22fb('0x1f')]){if(_0x2ca468[_0x22fb('0x1f')][_0x22fb('0x20')](_0x2a960f)){var _0x4e1869=_0x2ca468['voiceQueues'][_0x2a960f];var _0x391211=new VoiceQueueSummary(_0x4e1869);_0x31800c[_0x22fb('0x21')](_0x391211);}}_0x2dccb8({'count':_0x31800c['length'],'rows':_0x31800c});});},'UpdateVoiceQueue':function(_0x25060d){return new Promise(function(_0x3f345d,_0x1ca0a7){var _0x3240a4=_[_0x22fb('0x22')](_0x2ca468[_0x22fb('0x1f')],{'id':parseInt(_0x25060d['id'])});var _0x93c7aa=_[_0x22fb('0x23')](_0x25060d,['id']);if(_0x3240a4){for(var _0x14667b in _0x93c7aa){if(typeof _0x93c7aa[_0x14667b]!==_0x22fb('0x24')&&typeof _0x3240a4[_0x14667b]!==_0x22fb('0x24')){_0x3240a4[_0x14667b]=_0x93c7aa[_0x14667b];}}_0x3f345d(_0x3240a4);}else{_0x1ca0a7();}});},'VoiceChannels':function(){return new Promise(function(_0x9c9485){var _0x5a6304=_[_0x22fb('0x25')](_0x2ca468[_0x22fb('0x26')]);_0x9c9485({'count':_0x5a6304[_0x22fb('0x27')],'rows':_0x5a6304});});},'VoiceChannelMixMonitor':function(_0x3d7179){var _0xb6d037=this;return new Promise(function(_0x4f718f,_0xad6d95){if(ami[_0x22fb('0x10')]()==![]){return _0xad6d95(_0xb6d037[_0x22fb('0x1e')](0x1f4,[config[_0x22fb('0x11')]['ip'],config['asterisk'][_0x22fb('0x28')],'ami\x20disconnected']['join']('\x20')));}var _0x588b5e=schema(properties[_0x22fb('0x29')])[_0x22fb('0x3')](_0x3d7179);if(_0x588b5e['length']>0x0){return _0xad6d95(_0xb6d037[_0x22fb('0x1e')](0x1f4,_[_0x22fb('0x2a')](_0x588b5e,_0x22fb('0x1b'))[_0x22fb('0x1c')](',\x20')));}var _0x22f7c5=_['find'](_0x2ca468[_0x22fb('0x26')],{'uniqueid':_0x3d7179[_0x22fb('0x2b')]});if(_0x22f7c5&&_0x22f7c5['channel']){var _0x25a057=util[_0x22fb('0x7')](_0x22fb('0x2c'),_0x3d7179['filename']||_0x3d7179['uniqueid'],_0x3d7179[_0x22fb('0x7')]||_0x22fb('0x2d'));return ami[_0x22fb('0x18')]({'action':_0x22fb('0x2e'),'channel':_0x22f7c5[_0x22fb('0x2f')],'file':_0x25a057,'options':_0x22fb('0x30')})['then'](function(_0x43c83b){var _0x524bea=_[_0x22fb('0x22')](_0x22f7c5['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x25a057[_0x22fb('0x31')]()});if(_['isNil'](_0x524bea)){_0x22f7c5['monitors'][_0x22fb('0x21')]({'filename':_0x22fb('0x32')+_0x25a057[_0x22fb('0x31')](),'createdAt':moment()[_0x22fb('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x43c83b[_0x22fb('0x33')],'status':'rec'});}else{_0x524bea[_0x22fb('0x33')]=_0x43c83b[_0x22fb('0x33')];_0x524bea['status']=_0x22fb('0x34');}_0x4f718f({'code':0xc8,'message':[_0x3d7179[_0x22fb('0x2b')],'MixMonitor\x20Success',_0x43c83b['mixmonitorid']][_0x22fb('0x1c')]('\x20'),'mixmonitorid':_0x43c83b['mixmonitorid']});})['catch'](function(_0x2d0b75){_0xad6d95(_0xb6d037['error'](0x1f5,[_0x3d7179[_0x22fb('0x2b')],_0x2d0b75[_0x22fb('0x1b')][_0x22fb('0x31')]()][_0x22fb('0x1c')]('\x20')));});}else{return _0xad6d95(_0xb6d037[_0x22fb('0x1e')](0x1f5,_0x22fb('0x35')));}});},'VoiceChannelStopMixMonitor':function(_0x156f16){var _0x8db3a5=this;return new Promise(function(_0x206200,_0x6892c2){if(ami[_0x22fb('0x10')]()==![]){return _0x6892c2(_0x8db3a5['error'](0x1f4,[config[_0x22fb('0x11')]['ip'],config[_0x22fb('0x11')][_0x22fb('0x28')],'ami\x20disconnected'][_0x22fb('0x1c')]('\x20')));}var _0x105adb=schema(properties[_0x22fb('0x29')])[_0x22fb('0x3')](_0x156f16);if(_0x105adb['length']>0x0){return _0x6892c2(_0x8db3a5[_0x22fb('0x1e')](0x1f4,_[_0x22fb('0x2a')](_0x105adb,_0x22fb('0x1b'))['join'](',\x20')));}var _0x3e9122=_['find'](_0x2ca468[_0x22fb('0x26')],{'uniqueid':_0x156f16[_0x22fb('0x2b')]});if(_0x3e9122){return Promise[_0x22fb('0x36')]()[_0x22fb('0x19')](function(){if(_0x3e9122['channel']){return ami[_0x22fb('0x18')]({'action':_0x22fb('0x37'),'channel':_0x3e9122[_0x22fb('0x2f')],'mixmonitorid':_0x156f16[_0x22fb('0x33')]})[_0x22fb('0x1a')](function(){});}})[_0x22fb('0x19')](function(){if(_0x3e9122[_0x22fb('0x38')]){return ami[_0x22fb('0x18')]({'action':_0x22fb('0x37'),'channel':_0x3e9122['destinationchannel'],'mixmonitorid':_0x156f16[_0x22fb('0x33')]})['catch'](function(){});}})[_0x22fb('0x19')](function(){var _0x37e2d5=_[_0x22fb('0x22')](_0x3e9122['monitors'],{'mixmonitorid':_0x156f16[_0x22fb('0x33')]});if(_0x37e2d5){_0x37e2d5[_0x22fb('0x39')]=_0x22fb('0x3a');}})[_0x22fb('0x19')](function(){var _0x2e7534=util[_0x22fb('0x7')](_0x22fb('0x2c'),_0x156f16[_0x22fb('0x3b')]||_0x156f16[_0x22fb('0x2b')],_0x156f16[_0x22fb('0x7')]||'wav');var _0x2e3053=_[_0x22fb('0x22')](_0x3e9122[_0x22fb('0x3c')],{'filename':_0x22fb('0x32')+_0x2e7534['toLowerCase']()});if(_0x2e3053){_0x2e3053[_0x22fb('0x39')]=_0x22fb('0x3a');}})[_0x22fb('0x19')](function(){_0x206200({'code':0xc8,'message':[_0x156f16[_0x22fb('0x2b')],'StopMixMonitor\x20Success'][_0x22fb('0x1c')]('\x20')});})[_0x22fb('0x1a')](function(_0x430c91){_0x6892c2(_0x8db3a5[_0x22fb('0x1e')](0x1f5,[_0x156f16['uniqueid'],_0x430c91['message'][_0x22fb('0x31')]()][_0x22fb('0x1c')]('\x20')));});}else{return _0x6892c2(_0x8db3a5[_0x22fb('0x1e')](0x1f5,_0x22fb('0x35')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x45ce75){var _0x10e6c1=_[_0x22fb('0x25')](_0x2ca468['queueChannels']);_0x45ce75({'count':_0x10e6c1[_0x22fb('0x27')],'rows':_0x10e6c1});});},'VoiceQueuesChannel':function(_0x5d21b6){var _0x254c79=this;return new Promise(function(_0x5642f8,_0xc9449d){var _0xa4ac7e=schema(properties['voicequeuechannel'])['validate'](_0x5d21b6);if(_0xa4ac7e['length']>0x0){return _0xc9449d(_0x254c79[_0x22fb('0x1e')](0x1f4,_[_0x22fb('0x2a')](_0xa4ac7e,_0x22fb('0x1b'))[_0x22fb('0x1c')](',\x20')));}var _0x4c48b5=_['find'](_0x2ca468[_0x22fb('0x3d')],{'uniqueid':_0x5d21b6[_0x22fb('0x2b')]});if(_0x4c48b5){_0x5642f8(_0x4c48b5);}else{return _0xc9449d(_0x254c79['error'](0x1f5,_0x22fb('0x35')));}});},'VoiceQueuesChannelHangup':function(_0x10ba5c){var _0xea7d5d=this;return new Promise(function(_0x466efb,_0x523fe2){if(ami[_0x22fb('0x10')]()==![]){return _0x523fe2(_0xea7d5d['error'](0x1f4,[config[_0x22fb('0x11')]['ip'],config[_0x22fb('0x11')][_0x22fb('0x28')],_0x22fb('0x12')][_0x22fb('0x1c')]('\x20')));}var _0x224384=schema(properties[_0x22fb('0x3e')])[_0x22fb('0x3')](_0x10ba5c);if(_0x224384['length']>0x0){return _0x523fe2(_0xea7d5d['error'](0x1f4,_[_0x22fb('0x2a')](_0x224384,'message')['join'](',\x20')));}var _0x35bf88=_[_0x22fb('0x22')](_0x2ca468['queueChannels'],{'uniqueid':_0x10ba5c['uniqueid']});if(_0x35bf88&&_0x35bf88['channel']){return ami[_0x22fb('0x18')]({'action':_0x22fb('0x3f'),'channel':_0x35bf88[_0x22fb('0x2f')]})[_0x22fb('0x19')](function(_0x5c3369){_0x466efb({'code':0xc8,'message':[_0x10ba5c[_0x22fb('0x2b')],_0x5c3369[_0x22fb('0x1b')][_0x22fb('0x31')]()][_0x22fb('0x1c')]('\x20')});})[_0x22fb('0x1a')](function(_0xcf9e38){_0x523fe2(_0xea7d5d[_0x22fb('0x1e')](0x1f5,[_0x10ba5c[_0x22fb('0x2b')],_0xcf9e38[_0x22fb('0x1b')]['toLowerCase']()][_0x22fb('0x1c')]('\x20')));});}else{return _0x523fe2(_0xea7d5d[_0x22fb('0x1e')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x18e2d9){var _0x24492c=this;return new Promise(function(_0x5b7c70,_0x19e3f2){if(ami[_0x22fb('0x10')]()==![]){return _0x19e3f2(_0x24492c[_0x22fb('0x1e')](0x1f4,[config['asterisk']['ip'],config[_0x22fb('0x11')][_0x22fb('0x28')],_0x22fb('0x12')][_0x22fb('0x1c')]('\x20')));}var _0x325cec=schema(properties[_0x22fb('0x40')])[_0x22fb('0x3')](_0x18e2d9);if(_0x325cec[_0x22fb('0x27')]>0x0){return _0x19e3f2(_0x24492c[_0x22fb('0x1e')](0x1f4,_['map'](_0x325cec,'message')[_0x22fb('0x1c')](',\x20')));}var _0x352152=_['find'](_0x2ca468[_0x22fb('0x3d')],{'uniqueid':_0x18e2d9['uniqueid']});if(_0x352152&&_0x352152[_0x22fb('0x2f')]){return ami[_0x22fb('0x18')]({'action':_0x22fb('0x41'),'channel':_0x352152[_0x22fb('0x2f')],'exten':_0x18e2d9[_0x22fb('0x42')],'context':_0x18e2d9['context']||_0x352152[_0x22fb('0x43')],'priority':0x1})[_0x22fb('0x19')](function(_0x3fe980){_0x5b7c70({'code':0xc8,'message':[_0x18e2d9[_0x22fb('0x2b')],_0x3fe980['message'][_0x22fb('0x31')]()][_0x22fb('0x1c')]('\x20')});})[_0x22fb('0x1a')](function(_0x2d86d9){_0x19e3f2(_0x24492c[_0x22fb('0x1e')](0x1f5,[_0x18e2d9['uniqueid'],_0x2d86d9[_0x22fb('0x1b')][_0x22fb('0x31')]()][_0x22fb('0x1c')]('\x20')));});}else{return _0x19e3f2(_0x24492c[_0x22fb('0x1e')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x29e877){return new Promise(function(_0x6171a7){var _0x1d237c=_[_0x22fb('0x25')](_0x2ca468[_0x22fb('0xd')]);if(_0x29e877&&_0x29e877['id']){var _0x435c60=_[_0x22fb('0x22')](_0x1d237c,function(_0x16f612){return _0x16f612['id']===_0x29e877['id'];});_0x6171a7(_0x435c60);}else{_0x6171a7({'count':_0x1d237c['length'],'rows':_0x1d237c});}});},'Telephones':function(){return new Promise(function(_0x135b1d){var _0x59cc48=_[_0x22fb('0x25')](_0x2ca468[_0x22fb('0x44')]);_0x135b1d({'count':_0x59cc48[_0x22fb('0x27')],'rows':_0x59cc48});});},'Trunks':function(){return new Promise(function(_0x1f5183){var _0x5497a7=_[_0x22fb('0x25')](_0x2ca468[_0x22fb('0x45')]);_0x1f5183({'count':_0x5497a7[_0x22fb('0x27')],'rows':_0x5497a7});});},'OutboundChannels':function(){return new Promise(function(_0xd19aea){var _0x1a279b=_[_0x22fb('0x25')](_0x2ca468['outboundChannels']);_0xd19aea({'count':_0x1a279b['length'],'rows':_0x1a279b});});},'Outbound':function(){return new Promise(function(_0xf58b8){_0xf58b8(_0x2ca468[_0x22fb('0x46')]);});},'Campaigns':function(){return new Promise(function(_0x2641c7){var _0x29587c=_[_0x22fb('0x25')](_0x2ca468[_0x22fb('0x47')]);_0x2641c7({'count':_0x29587c['length'],'rows':_0x29587c});});},'VoiceQueuesPreview':function(_0x15637d){var _0x205f31=this;return new Promise(function(_0x3c7808,_0x2430ad){_0x3c0a4d[_0x22fb('0x48')](_0x15637d['id'])[_0x22fb('0x19')](function(_0x54c600){_0x3c7808({'code':0xc8,'message':_0x54c600[_0x22fb('0x1b')]});})[_0x22fb('0x1a')](function(_0xfbeb97){_0x2430ad(_0x205f31[_0x22fb('0x1e')](0x1f4,_0xfbeb97['message']));});});},'EventManager':function(_0x5d0e15){var _0x4e2898=this;return new Promise(function(_0x160e76,_0x58e4e6){if(!_0x5d0e15[_0x22fb('0x49')]){return _0x58e4e6(_0x4e2898[_0x22fb('0x1e')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x22fb('0x4a')](_0x22fb('0x4b')+_0x5d0e15[_0x22fb('0x49')],_0x5d0e15[_0x22fb('0x1b')]);_0x160e76({'code':0xc8,'message':_0x5d0e15});});},'FaxAccounts':function(){return new Promise(function(_0x495c94){var _0x1011ea=_[_0x22fb('0x25')](_0x2ca468['faxAccounts']);_0x495c94({'count':_0x1011ea[_0x22fb('0x27')],'rows':_0x1011ea});});},'SendFax':function(_0x2e242c){var _0x5f0f42=this;return new Promise(function(_0xe4cf98,_0x325581){_0x473c6f[_0x22fb('0x4c')](_0x2e242c)['then'](function(_0x4a7419){_0xe4cf98({'code':0xc8,'message':_0x4a7419['message']});})['catch'](function(_0x3c4d2f){_0x325581(_0x5f0f42[_0x22fb('0x1e')](0x1f4,_0x3c4d2f['message']));});});},'CheckAfterSend':function(_0x4cb21f){var _0x3a88b7=this;return new Promise(function(_0x5447bc,_0x44a36e){_0x473c6f[_0x22fb('0x4d')](_0x4cb21f)[_0x22fb('0x19')](function(_0x4810ca){_0x5447bc({'code':0xc8,'message':_0x4810ca['message']});})[_0x22fb('0x1a')](function(_0x13827f){_0x44a36e(_0x3a88b7['error'](0x1f4,_0x13827f[_0x22fb('0x1b')]));});});}};var _0x525f9e=jayson[_0x22fb('0x4e')](_0x40d22f)[_0x22fb('0x4f')]();_0x525f9e['on'](_0x22fb('0x1e'),function(_0x4db7ee){return _0x554b3a(_0x4db7ee);});_0x525f9e[_0x22fb('0x6')](0x232a,'127.0.0.1',function(){console[_0x22fb('0x50')](_0x22fb('0x51'),0x232a);return _0x5c9462('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 1b064b5..2b954c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3b7=['push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','format','trigger:%s','action','toLowerCase','length','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','map','routeId','calleridnum','destcalleridnum','firstName','lastName','mobile','createdAt','updatedAt','union','resolve','then','getContacts','isEmpty','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','createContact'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xc3b7,0xb4));var _0x7c3b=function(_0x110d03,_0x14c8b6){_0x110d03=_0x110d03-0x0;var _0x524c19=_0xc3b7[_0x110d03];return _0x524c19;};'use strict';var _=require('lodash');var BPromise=require(_0x7c3b('0x0'));var Redis=require(_0x7c3b('0x1'));var util=require(_0x7c3b('0x2'));var config=require(_0x7c3b('0x3'));var logger=require(_0x7c3b('0x4'))(_0x7c3b('0x5'));var cmContactRpc=require(_0x7c3b('0x6'));config[_0x7c3b('0x7')]=_[_0x7c3b('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x7c3b('0x9'))(new Redis(config[_0x7c3b('0x7')]));function emit(_0x208213,_0x1bc2d8,_0x47d9a7,_0x218be1,_0x1e03c0){logger[_0x7c3b('0xa')](_0x7c3b('0xb'),_0x208213,_0x1bc2d8['id'],_0x47d9a7,_0x218be1,JSON[_0x7c3b('0xc')](_0x1e03c0));io['to'](_0x47d9a7)[_0x7c3b('0xd')](_0x218be1,_0x1e03c0);}exports[_0x7c3b('0xe')]=function(_0x25a9ed,_0xeb699f,_0x220f21,_0x74dc35){var _0xf4883f,_0x160e68;var _0x37a36={};var _0x5e701c;var _0x157e55=Number(_0x220f21[_0x7c3b('0xf')]);var _0x4c7871=_0x220f21[_0x7c3b('0x10')]?Boolean(Number(_0x220f21[_0x7c3b('0x10')])):![];var _0xcac33;var _0x5a4512=![];if(!_[_0x7c3b('0x11')](_0x220f21[_0x7c3b('0x12')])){if(_0x220f21[_0x7c3b('0x12')]=='1')_0x5a4512=!![];}if(!_0x5a4512){if(_0x74dc35[_0x7c3b('0x13')]){_0x37a36['id']=_0x74dc35['xmd-contactid'];}}if(!_0x37a36['id']){_0x37a36[_0x7c3b('0x14')]=_0x157e55;_0xcac33=_0x220f21[_0x7c3b('0x15')]&&_0x220f21['data3']!=='0'?_0x220f21[_0x7c3b('0x15')][_0x7c3b('0x16')](','):[_0x7c3b('0x17')];_0x37a36[_0x7c3b('0x18')]=_[_0x7c3b('0x19')](_0xcac33,function(_0x3113e7){var _0x4e1130={};_0x4e1130[_0x3113e7]=_0x74dc35[_0x7c3b('0x1a')]?_0x74dc35['destcalleridnum']:_0x74dc35[_0x7c3b('0x1b')];return _0x4e1130;});_0x5e701c=_0x74dc35['routeId']?_0x74dc35[_0x7c3b('0x1c')]:_0x74dc35['calleridnum'];}var _0x24fcce=['id',_0x7c3b('0x1d'),_0x7c3b('0x1e'),_0x7c3b('0x17'),_0x7c3b('0x1f'),'fax',_0x7c3b('0x14'),_0x7c3b('0x20'),'scheduledAt',_0x7c3b('0x21')];var _0x558fea=_[_0x7c3b('0x22')](_0x24fcce,_0xcac33);BPromise[_0x7c3b('0x23')]()[_0x7c3b('0x24')](cmContactRpc[_0x7c3b('0x25')]({'attributes':_0x558fea,'where':_0x37a36,'phone':_0x5e701c}))[_0x7c3b('0x24')](function(_0x49b989){_0x160e68=_0x49b989;if(!_[_0x7c3b('0x26')](_0x160e68)){if(_0x160e68['length']===0x1){_0xf4883f=_0x160e68[0x0];logger['info']('[CM][%s][%s]\x20Contact\x20found:%s',_0x74dc35[_0x7c3b('0x27')],_0xeb699f['id'],_0xf4883f['id']);}else{logger[_0x7c3b('0xa')](_0x7c3b('0x28'),_0x74dc35[_0x7c3b('0x27')],_0xeb699f['id'],_[_0x7c3b('0x19')](_0x160e68,'id')['join'](','));}return;}else{logger[_0x7c3b('0xa')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x74dc35[_0x7c3b('0x27')],_0xeb699f['id']);var _0x94c0af={'ListId':_0x157e55};var _0x5c4e87=_0x220f21[_0x7c3b('0x29')]&&_0x220f21[_0x7c3b('0x29')]!=='0'?_0x220f21[_0x7c3b('0x29')]:_0x7c3b('0x17');if(_0x4c7871){logger['info'](_0x7c3b('0x2a'),_0x74dc35['uniqueid'],_0xeb699f['id']);_0x94c0af[_0x5c4e87]=_[_0x7c3b('0x11')](_0x74dc35['routeId'])?_0x74dc35[_0x7c3b('0x1b')]:_0x74dc35['destcalleridnum'];if(_[_0x7c3b('0x11')](_0x74dc35[_0x7c3b('0x1a')])){_0x94c0af['firstName']=_0x74dc35[_0x7c3b('0x2b')]&&_0x74dc35[_0x7c3b('0x2b')]!==_0x7c3b('0x2c')?_0x74dc35['calleridname']:_0x7c3b('0x2d');}else{_0x94c0af[_0x7c3b('0x1d')]=_0x74dc35[_0x7c3b('0x2e')]&&_0x74dc35['destcalleridname']!=='<unknown>'?_0x74dc35['destcalleridname']:_0x7c3b('0x2d');}return BPromise['resolve']()['then'](cmContactRpc[_0x7c3b('0x2f')](_0x94c0af))['then'](function(_0x79efe3){_0xf4883f=_0x79efe3;_0x160e68[_0x7c3b('0x30')](_0x79efe3);if(_0xf4883f){logger[_0x7c3b('0xa')](_0x7c3b('0x31'),_0x74dc35[_0x7c3b('0x27')],_0xeb699f['id'],_0xf4883f['id']);}return;});}else{logger['info'](_0x7c3b('0x32'),_0x74dc35[_0x7c3b('0x27')],_0xeb699f['id']);_0x94c0af[_0x5c4e87]=_['isNil'](_0x74dc35[_0x7c3b('0x1a')])?_0x74dc35[_0x7c3b('0x1b')]:_0x74dc35['destcalleridnum'];if(_['isNil'](_0x74dc35['routeId'])){_0x94c0af[_0x7c3b('0x1d')]=_0x74dc35[_0x7c3b('0x2b')]&&_0x74dc35['calleridname']!=='<unknown>'?_0x74dc35[_0x7c3b('0x2b')]:_0x7c3b('0x2d');}else{_0x94c0af[_0x7c3b('0x1d')]=_0x74dc35['destcalleridname']&&_0x74dc35['destcalleridname']!==_0x7c3b('0x2c')?_0x74dc35[_0x7c3b('0x2e')]:_0x7c3b('0x2d');}_0xf4883f=_0x94c0af;_0x160e68[_0x7c3b('0x30')](_0x94c0af);return;}}})[_0x7c3b('0x24')](function(){if(_0x25a9ed){emit(_0x74dc35[_0x7c3b('0x27')],_0xeb699f,util['format'](_0x7c3b('0x33'),_0x25a9ed['name']),util[_0x7c3b('0x34')](_0x7c3b('0x35'),_0x220f21[_0x7c3b('0x36')][_0x7c3b('0x37')]()),{'evt':_['merge'](_0x74dc35,{'autoCreate':_0x4c7871}),'contact':_0xf4883f===undefined?{}:_0xf4883f,'contacts':_0x160e68[_0x7c3b('0x38')]===0x0?undefined:_0x160e68});}});};
\ No newline at end of file
+var _0x6c56=['lastName','mobile','scheduledAt','union','resolve','then','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','isNil','firstName','calleridname','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','<unknown>','user:%s','name','format','trigger:%s','action','toLowerCase','merge','ioredis','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','redis','localhost','info','[CM][%s][%s]','exec','data1','data2','data5','xmd-contactid','ListId','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6c56,0x191));var _0x66c5=function(_0x31cc0e,_0x24ba4c){_0x31cc0e=_0x31cc0e-0x0;var _0x144862=_0x6c56[_0x31cc0e];return _0x144862;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require(_0x66c5('0x0'));var util=require(_0x66c5('0x1'));var config=require(_0x66c5('0x2'));var logger=require(_0x66c5('0x3'))('trigger');var cmContactRpc=require(_0x66c5('0x4'));config[_0x66c5('0x5')]=_['defaults'](config[_0x66c5('0x5')],{'host':_0x66c5('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x66c5('0x5')]));function emit(_0x2c2d41,_0x21fa71,_0x378661,_0x3232e9,_0x12b8c5){logger[_0x66c5('0x7')](_0x66c5('0x8'),_0x2c2d41,_0x21fa71['id'],_0x378661,_0x3232e9,JSON['stringify'](_0x12b8c5));io['to'](_0x378661)['emit'](_0x3232e9,_0x12b8c5);}exports[_0x66c5('0x9')]=function(_0x39c347,_0x1d27f1,_0x39e1a5,_0x2337a7){var _0x2f0af7,_0x2e86d9;var _0x489c68={};var _0xda7a4a;var _0x10193b=Number(_0x39e1a5[_0x66c5('0xa')]);var _0xe71b7d=_0x39e1a5['data2']?Boolean(Number(_0x39e1a5[_0x66c5('0xb')])):![];var _0x166653;var _0x124376=![];if(!_['isNil'](_0x39e1a5[_0x66c5('0xc')])){if(_0x39e1a5[_0x66c5('0xc')]=='1')_0x124376=!![];}if(!_0x124376){if(_0x2337a7[_0x66c5('0xd')]){_0x489c68['id']=_0x2337a7['xmd-contactid'];}}if(!_0x489c68['id']){_0x489c68[_0x66c5('0xe')]=_0x10193b;_0x166653=_0x39e1a5['data3']&&_0x39e1a5[_0x66c5('0xf')]!=='0'?_0x39e1a5[_0x66c5('0xf')][_0x66c5('0x10')](','):[_0x66c5('0x11')];_0x489c68[_0x66c5('0x12')]=_[_0x66c5('0x13')](_0x166653,function(_0x56cf99){var _0x5e5a44={};_0x5e5a44[_0x56cf99]=_0x2337a7[_0x66c5('0x14')]?_0x2337a7[_0x66c5('0x15')]:_0x2337a7[_0x66c5('0x16')];return _0x5e5a44;});_0xda7a4a=_0x2337a7[_0x66c5('0x14')]?_0x2337a7['destcalleridnum']:_0x2337a7['calleridnum'];}var _0x1fff38=['id','firstName',_0x66c5('0x17'),_0x66c5('0x11'),_0x66c5('0x18'),'fax',_0x66c5('0xe'),'createdAt',_0x66c5('0x19'),'updatedAt'];var _0x8addf0=_[_0x66c5('0x1a')](_0x1fff38,_0x166653);BPromise[_0x66c5('0x1b')]()[_0x66c5('0x1c')](cmContactRpc[_0x66c5('0x1d')]({'attributes':_0x8addf0,'where':_0x489c68,'phone':_0xda7a4a}))[_0x66c5('0x1c')](function(_0x19ff74){_0x2e86d9=_0x19ff74;if(!_[_0x66c5('0x1e')](_0x2e86d9)){if(_0x2e86d9['length']===0x1){_0x2f0af7=_0x2e86d9[0x0];logger[_0x66c5('0x7')](_0x66c5('0x1f'),_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id'],_0x2f0af7['id']);}else{logger[_0x66c5('0x7')](_0x66c5('0x21'),_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id'],_[_0x66c5('0x13')](_0x2e86d9,'id')[_0x66c5('0x22')](','));}return;}else{logger[_0x66c5('0x7')](_0x66c5('0x23'),_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id']);var _0x39c837={'ListId':_0x10193b};var _0x411ebd=_0x39e1a5[_0x66c5('0x24')]&&_0x39e1a5['data4']!=='0'?_0x39e1a5[_0x66c5('0x24')]:_0x66c5('0x11');if(_0xe71b7d){logger[_0x66c5('0x7')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id']);_0x39c837[_0x411ebd]=_[_0x66c5('0x25')](_0x2337a7['routeId'])?_0x2337a7[_0x66c5('0x16')]:_0x2337a7[_0x66c5('0x15')];if(_['isNil'](_0x2337a7[_0x66c5('0x14')])){_0x39c837[_0x66c5('0x26')]=_0x2337a7[_0x66c5('0x27')]&&_0x2337a7[_0x66c5('0x27')]!=='<unknown>'?_0x2337a7[_0x66c5('0x27')]:'Unknown';}else{_0x39c837[_0x66c5('0x26')]=_0x2337a7[_0x66c5('0x28')]&&_0x2337a7[_0x66c5('0x28')]!=='<unknown>'?_0x2337a7[_0x66c5('0x28')]:_0x66c5('0x29');}return BPromise[_0x66c5('0x1b')]()[_0x66c5('0x1c')](cmContactRpc[_0x66c5('0x2a')](_0x39c837))['then'](function(_0x39a314){_0x2f0af7=_0x39a314;_0x2e86d9[_0x66c5('0x2b')](_0x39a314);if(_0x2f0af7){logger[_0x66c5('0x7')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id'],_0x2f0af7['id']);}return;});}else{logger[_0x66c5('0x7')](_0x66c5('0x2c'),_0x2337a7[_0x66c5('0x20')],_0x1d27f1['id']);_0x39c837[_0x411ebd]=_['isNil'](_0x2337a7[_0x66c5('0x14')])?_0x2337a7[_0x66c5('0x16')]:_0x2337a7[_0x66c5('0x15')];if(_['isNil'](_0x2337a7[_0x66c5('0x14')])){_0x39c837[_0x66c5('0x26')]=_0x2337a7[_0x66c5('0x27')]&&_0x2337a7[_0x66c5('0x27')]!=='<unknown>'?_0x2337a7[_0x66c5('0x27')]:_0x66c5('0x29');}else{_0x39c837['firstName']=_0x2337a7[_0x66c5('0x28')]&&_0x2337a7[_0x66c5('0x28')]!==_0x66c5('0x2d')?_0x2337a7[_0x66c5('0x28')]:'Unknown';}_0x2f0af7=_0x39c837;_0x2e86d9[_0x66c5('0x2b')](_0x39c837);return;}}})[_0x66c5('0x1c')](function(){if(_0x39c347){emit(_0x2337a7[_0x66c5('0x20')],_0x1d27f1,util['format'](_0x66c5('0x2e'),_0x39c347[_0x66c5('0x2f')]),util[_0x66c5('0x30')](_0x66c5('0x31'),_0x39e1a5[_0x66c5('0x32')][_0x66c5('0x33')]()),{'evt':_[_0x66c5('0x34')](_0x2337a7,{'autoCreate':_0xe71b7d}),'contact':_0x2f0af7===undefined?{}:_0x2f0af7,'contacts':_0x2e86d9['length']===0x0?undefined:_0x2e86d9});}});};
\ No newline at end of file
index 79958f6..7988859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02c=['ChatWebsiteId','operator','value','upperFirst','AccountId','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','created','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./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','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:offlineMessage','prototype','stringify','emit','clone','motionChannel','voice','checkTriggers','interface','hasOwnProperty','status','merge','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','isNil','data3','data4','location','windowWidth','data5','800','windowHeight','600','render','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','trigger:%s','exec','routeId','script','buildUri','parse','query','search','AllConditions','checkConditions','channel','AnyConditions','field','account','chat'];(function(_0x16629d,_0x492375){var _0x56ccee=function(_0xa982b7){while(--_0xa982b7){_0x16629d['push'](_0x16629d['shift']());}};_0x56ccee(++_0x492375);}(_0xf02c,0x92));var _0xcf02=function(_0x5353c4,_0x289ac1){_0x5353c4=_0x5353c4-0x0;var _0x438d0c=_0xf02c[_0x5353c4];return _0x438d0c;};'use strict';var util=require(_0xcf02('0x0'));var _=require(_0xcf02('0x1'));var url=require(_0xcf02('0x2'));var Mustache=require(_0xcf02('0x3'));var Redis=require(_0xcf02('0x4'));var urlforward=require(_0xcf02('0x5'));var integration=require(_0xcf02('0x6'));var cmContact=require(_0xcf02('0x7'));var script=require(_0xcf02('0x8'));var config=require(_0xcf02('0x9'));var logger=require(_0xcf02('0xa'))(_0xcf02('0xb'));var ami=require(_0xcf02('0xc'));config[_0xcf02('0xd')]=_[_0xcf02('0xe')](config['redis'],{'host':_0xcf02('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var operators={'equals':function(_0x4d56e1,_0x53f988){return _0x4d56e1==_0x53f988;},'not_equals':function(_0x2f1633,_0x1411e5){return _0x2f1633!=_0x1411e5;}};var barAndWebActions=[_0xcf02('0x10'),'url',_0xcf02('0x11')];function Trigger(_0x2c0978){this[_0xcf02('0x12')]=_0x2c0978['triggers'];this['agents']=_0x2c0978[_0xcf02('0x13')];this[_0xcf02('0x14')]=_0x2c0978[_0xcf02('0x14')];this[_0xcf02('0x15')]=_0x2c0978[_0xcf02('0x15')];this['voiceExtensions']=_0x2c0978[_0xcf02('0x16')];this[_0xcf02('0x17')]=_0x2c0978[_0xcf02('0x17')];this[_0xcf02('0x18')]=_0x2c0978[_0xcf02('0x18')];this[_0xcf02('0x19')]=_0x2c0978[_0xcf02('0x19')];this['sugarcrmAccounts']=_0x2c0978[_0xcf02('0x1a')];this[_0xcf02('0x1b')]=_0x2c0978[_0xcf02('0x1b')];this['deskAccounts']=_0x2c0978[_0xcf02('0x1c')];this[_0xcf02('0x1d')]=_0x2c0978[_0xcf02('0x1d')];this[_0xcf02('0x1e')]=_0x2c0978['servicenowAccounts'];this['dynamics365Accounts']=_0x2c0978['dynamics365Accounts'];this[_0xcf02('0x1f')]=_0x2c0978['freshsalesAccounts'];this[_0xcf02('0x20')]={'zendesk':this[_0xcf02('0x17')],'salesforce':this[_0xcf02('0x19')],'freshdesk':this[_0xcf02('0x18')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this['zohoAccounts'],'desk':this[_0xcf02('0x1c')],'vtiger':this[_0xcf02('0x1d')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xcf02('0x1f')],'servicenow':this[_0xcf02('0x1e')]};ami['on'](_0xcf02('0x21'),this[_0xcf02('0x22')]['bind'](this));ami['on'](_0xcf02('0x23'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x25'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x26'),this[_0xcf02('0x22')]['bind'](this));ami['on']('custom:agentnosuchnumber',this['syncCustomEvent'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x27'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x28'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x29'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x2a'),this['syncCustomEvent']['bind'](this));ami['on'](_0xcf02('0x2b'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x2c'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x2d'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on']('custom:dialbegin',this[_0xcf02('0x2e')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x2f'),this['syncAgentDial'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x30'),this['syncAgentDial'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x31'),this['syncCustomEvent'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x32'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x33'),this['syncCustomEvent'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x34'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x35'),this['syncCustomEvent']['bind'](this));ami['on'](_0xcf02('0x36'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));ami['on']('custom:rejectmessage',this['syncCustomEvent'][_0xcf02('0x24')](this));ami['on'](_0xcf02('0x37'),this[_0xcf02('0x22')][_0xcf02('0x24')](this));}Trigger[_0xcf02('0x38')]['emit']=function(_0x28db07,_0x215244,_0x11ead1){logger['info'](_0x28db07,_0x215244,JSON[_0xcf02('0x39')](_0x11ead1));io['to'](_0x28db07)[_0xcf02('0x3a')](_0x215244,_0x11ead1);};Trigger[_0xcf02('0x38')][_0xcf02('0x22')]=function(_0x1a0cca){var _0x4b2c19=_[_0xcf02('0x3b')](_0x1a0cca);if(typeof _0x4b2c19[_0xcf02('0x3c')]==='undefined'){_0x4b2c19[_0xcf02('0x3c')]=_0xcf02('0x3d');}this[_0xcf02('0x3e')](_0x4b2c19);};Trigger[_0xcf02('0x38')]['syncAgentDial']=function(_0xc803dc){if(this[_0xcf02('0x13')][_0xc803dc[_0xcf02('0x3f')]]){this[_0xcf02('0x22')](_0xc803dc);}};Trigger[_0xcf02('0x38')][_0xcf02('0x3e')]=function(_0x4b58cb){var _0xecca8f;for(var _0x1fd643 in this[_0xcf02('0x12')]){if(this[_0xcf02('0x12')][_0xcf02('0x40')](_0x1fd643)){if(this['triggers'][_0x1fd643][_0xcf02('0x41')]){_0xecca8f=this['checkTrigger'](this[_0xcf02('0x12')][_0x1fd643],_0x4b58cb);if(_0xecca8f){_[_0xcf02('0x42')](_0x4b58cb,_0x4b58cb[_0xcf02('0x43')]);for(var _0x349db1=0x0,_0x4e99d6,_0x578de7,_0x476f2b;_0x349db1<this[_0xcf02('0x12')][_0x1fd643][_0xcf02('0x44')][_0xcf02('0x45')];_0x349db1+=0x1){_0x4e99d6=this[_0xcf02('0x12')][_0x1fd643][_0xcf02('0x44')][_0x349db1];if(this['agents'][_0x4b58cb[_0xcf02('0x3f')]]){switch(_0x4e99d6[_0xcf02('0x46')][_0xcf02('0x47')]()){case _0xcf02('0x48'):break;case _0xcf02('0x49'):case _0xcf02('0x4a'):var _0x5f1ad1={};switch(barAndWebActions[_0x4e99d6[_0xcf02('0x4b')]]){case'popup':_0x5f1ad1[_0xcf02('0x4c')]=_0x4e99d6[_0xcf02('0x4d')];_0x5f1ad1[_0xcf02('0x4e')]=this['templates'][_0x4e99d6[_0xcf02('0x4d')]]?Mustache['render'](this[_0xcf02('0x15')][_0x4e99d6['data2']][_0xcf02('0x4e')],_0x4b58cb):_0xcf02('0x4f');break;case _0xcf02('0x2'):_0x5f1ad1[_0xcf02('0x50')]=this['buildUri'](_0x4e99d6['data2'],_0x4b58cb,_[_0xcf02('0x51')](_0x4e99d6[_0xcf02('0x52')])?!![]:parseInt(_0x4e99d6[_0xcf02('0x52')],0xa));if(_[_0xcf02('0x51')](_0x4e99d6[_0xcf02('0x53')])){_0x5f1ad1[_0xcf02('0x54')]='0';}else{_0x5f1ad1['uriLocation']=_0x4e99d6[_0xcf02('0x53')];_0x5f1ad1[_0xcf02('0x55')]=_[_0xcf02('0x51')](_0x4e99d6[_0xcf02('0x56')])?_0xcf02('0x57'):_0x4e99d6[_0xcf02('0x56')];_0x5f1ad1[_0xcf02('0x58')]=_['isNil'](_0x4e99d6['data6'])?_0xcf02('0x59'):_0x4e99d6['data6'];}break;case _0xcf02('0x11'):_0x5f1ad1['winApplication']=_0x4e99d6[_0xcf02('0x4d')]?Mustache[_0xcf02('0x5a')](_0x4e99d6[_0xcf02('0x4d')],_0x4b58cb):'';_0x5f1ad1[_0xcf02('0x5b')]=_0x4e99d6[_0xcf02('0x52')]?Mustache[_0xcf02('0x5a')](_0x4e99d6[_0xcf02('0x52')],_0x4b58cb):'';break;}this[_0xcf02('0x3a')](util[_0xcf02('0x5c')](_0xcf02('0x5d'),this['agents'][_0x4b58cb[_0xcf02('0x3f')]][_0xcf02('0x5e')]),util[_0xcf02('0x5c')](_0xcf02('0x5f'),_0x4e99d6['action'][_0xcf02('0x47')](),barAndWebActions[_0x4e99d6[_0xcf02('0x4b')]]),_[_0xcf02('0x42')](_0x5f1ad1,_0x4b58cb));break;case _0xcf02('0x60'):this[_0xcf02('0x3a')](util[_0xcf02('0x5c')](_0xcf02('0x5d'),this[_0xcf02('0x13')][_0x4b58cb[_0xcf02('0x3f')]][_0xcf02('0x5e')]),util[_0xcf02('0x5c')](_0xcf02('0x61'),_0x4e99d6['action'][_0xcf02('0x47')]()),_[_0xcf02('0x42')]({'ProjectId':parseInt(_0x4e99d6[_0xcf02('0x4b')],0xa)},_0x4b58cb));break;default:this[_0xcf02('0x3a')](util[_0xcf02('0x5c')]('user:%s',this[_0xcf02('0x13')][_0x4b58cb['interface']][_0xcf02('0x5e')]),util[_0xcf02('0x5c')]('trigger:%s',_0x4e99d6[_0xcf02('0x46')][_0xcf02('0x47')]()),_[_0xcf02('0x42')]({},_0x4e99d6,_0x4b58cb));}}switch(_0x4e99d6[_0xcf02('0x46')][_0xcf02('0x47')]()){case _0xcf02('0x48'):cmContact['exec'](this[_0xcf02('0x13')][_0x4b58cb[_0xcf02('0x3f')]],this['triggers'][_0x1fd643],_0x4e99d6,_0x4b58cb);break;case'integration':integration[_0xcf02('0x62')](_0x4e99d6,_0x4b58cb,this['accounts'],this[_0xcf02('0x13')][_0x4b58cb[_0xcf02('0x3f')]],this[_0xcf02('0x14')][_0x4b58cb['queue']],this[_0xcf02('0x16')][_0x4b58cb[_0xcf02('0x63')]]);break;case'urlforward':urlforward['exec'](_0x4e99d6,_0x4b58cb);break;case _0xcf02('0x64'):script[_0xcf02('0x62')](_0x4e99d6,_0x4b58cb);break;}}}}}}};Trigger[_0xcf02('0x38')][_0xcf02('0x65')]=function(_0x1f0e7f,_0x2b7c4e,_0x4e34e0){var _0x171f18=url[_0xcf02('0x66')](Mustache[_0xcf02('0x5a')](_0x1f0e7f,_0x2b7c4e),!![]);if(_0x4e34e0){_[_0xcf02('0x42')](_0x171f18[_0xcf02('0x67')],_0x2b7c4e);}delete _0x171f18[_0xcf02('0x68')];var _0x404d0e=url[_0xcf02('0x5c')](_0x171f18);_0x404d0e=_0x404d0e['replace'](/\/\?/g,'?');return _0x404d0e;};Trigger[_0xcf02('0x38')]['checkTrigger']=function(_0x395182,_0x341300){var _0x75fc8e=!![];var _0x261637=!![];var _0x1f1f62=![];if(_0x395182['channel']===_0x341300[_0xcf02('0x3c')]){_0x1f1f62=!![];}if(_0x395182['AllConditions'][_0xcf02('0x45')]){_0x75fc8e=_['every'](_0x395182[_0xcf02('0x69')],this[_0xcf02('0x6a')](_0x341300,_0x395182[_0xcf02('0x6b')]));}if(_0x395182[_0xcf02('0x6c')][_0xcf02('0x45')]){_0x261637=_['some'](_0x395182[_0xcf02('0x6c')],this['checkConditions'](_0x341300,_0x395182[_0xcf02('0x6b')]));}return _0x1f1f62&&_0x75fc8e&&_0x261637;};Trigger[_0xcf02('0x38')]['checkConditions']=function(_0x16759d,_0x58405b){return function(_0xf6fe3b){switch(_0xf6fe3b[_0xcf02('0x6d')]){case _0xcf02('0x6e'):if(_0x16759d[_0xcf02('0x6b')]===_0x58405b){if(_0x58405b===_0xcf02('0x6f')){return _0x16759d[_0xcf02('0x70')]?operators[_0xf6fe3b[_0xcf02('0x71')]](Number(_0xf6fe3b[_0xcf02('0x72')]),_0x16759d[_0xcf02('0x70')]):![];}else{return _0x16759d[_[_0xcf02('0x73')](_0x58405b)+_0xcf02('0x74')]?operators[_0xf6fe3b[_0xcf02('0x71')]](Number(_0xf6fe3b['value']),_0x16759d[_[_0xcf02('0x73')](_0x58405b)+_0xcf02('0x74')]):![];}}break;case'interaction':case _0xcf02('0x75'):if(_0x16759d[_0xcf02('0x6b')]===_0x58405b){return _0x16759d[_0xcf02('0x76')]?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b[_0xcf02('0x72')],_0x16759d[_0xcf02('0x76')]):![];}break;case _0xcf02('0x77'):return _0x16759d[_0xcf02('0x77')]?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b[_0xcf02('0x72')],_0x16759d[_0xcf02('0x77')]):![];case _0xcf02('0x78'):return _0x16759d[_0xcf02('0x79')]?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b['value'],_0x16759d[_0xcf02('0x79')]):![];case _0xcf02('0x7a'):return _0x16759d['lastevent']?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b['value'],_0x16759d[_0xcf02('0x7a')]):![];case _0xcf02('0x63'):return _0x16759d[_0xcf02('0x63')]?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b[_0xcf02('0x72')],_0x16759d[_0xcf02('0x63')]):![];case _0xcf02('0x7b'):if(_0xf6fe3b[_0xcf02('0x72')]===_0xcf02('0x7c'))_0xf6fe3b['value']=null;return typeof _0x16759d[_0xcf02('0x7d')]!=='undefined'?operators[_0xf6fe3b[_0xcf02('0x71')]](_0xf6fe3b[_0xcf02('0x72')],_0x16759d['substatus']):![];case'offlineMessage':if(_0x16759d[_0xcf02('0x6b')]===_0x58405b){return _0xf6fe3b[_0xcf02('0x72')]===_0xcf02('0x7e')&&_0xf6fe3b[_0xcf02('0x71')]===_0xcf02('0x7f')?!![]:![];}break;}return![];};};module[_0xcf02('0x80')]=Trigger;
\ No newline at end of file
+var _0xb8de=['syncCustomEvent','bind','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:rejectmessage','prototype','emit','info','stringify','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','action','contactmanager','data1','html','render','data2','template\x20not\x20found','uri','buildUri','data3','location','uriLocation','windowWidth','data5','800','windowHeight','isNil','data6','600','winapp','winApplication','format','user:%s','toLowerCase','jscripty','name','trigger:%s','exec','integration','routeId','urlforward','query','channel','AllConditions','length','checkConditions','AnyConditions','some','account','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','accounts','servicenowAccounts'];(function(_0x5e5507,_0x381e06){var _0x627354=function(_0x110963){while(--_0x110963){_0x5e5507['push'](_0x5e5507['shift']());}};_0x627354(++_0x381e06);}(_0xb8de,0x152));var _0xeb8d=function(_0x1b692d,_0x3b958d){_0x1b692d=_0x1b692d-0x0;var _0x49ce18=_0xb8de[_0x1b692d];return _0x49ce18;};'use strict';var util=require(_0xeb8d('0x0'));var _=require(_0xeb8d('0x1'));var url=require(_0xeb8d('0x2'));var Mustache=require(_0xeb8d('0x3'));var Redis=require(_0xeb8d('0x4'));var urlforward=require(_0xeb8d('0x5'));var integration=require(_0xeb8d('0x6'));var cmContact=require(_0xeb8d('0x7'));var script=require(_0xeb8d('0x8'));var config=require(_0xeb8d('0x9'));var logger=require(_0xeb8d('0xa'))(_0xeb8d('0xb'));var ami=require(_0xeb8d('0xc'));config[_0xeb8d('0xd')]=_[_0xeb8d('0xe')](config[_0xeb8d('0xd')],{'host':_0xeb8d('0xf'),'port':0x18eb});var io=require(_0xeb8d('0x10'))(new Redis(config[_0xeb8d('0xd')]));var operators={'equals':function(_0x299049,_0x4fd597){return _0x299049==_0x4fd597;},'not_equals':function(_0x528419,_0x2fde71){return _0x528419!=_0x2fde71;}};var barAndWebActions=[_0xeb8d('0x11'),_0xeb8d('0x2'),'winapp'];function Trigger(_0x5adde3){this[_0xeb8d('0x12')]=_0x5adde3[_0xeb8d('0x12')];this['agents']=_0x5adde3[_0xeb8d('0x13')];this[_0xeb8d('0x14')]=_0x5adde3[_0xeb8d('0x14')];this[_0xeb8d('0x15')]=_0x5adde3[_0xeb8d('0x15')];this[_0xeb8d('0x16')]=_0x5adde3[_0xeb8d('0x16')];this[_0xeb8d('0x17')]=_0x5adde3['zendeskAccounts'];this[_0xeb8d('0x18')]=_0x5adde3[_0xeb8d('0x18')];this['salesforceAccounts']=_0x5adde3[_0xeb8d('0x19')];this[_0xeb8d('0x1a')]=_0x5adde3['sugarcrmAccounts'];this['zohoAccounts']=_0x5adde3[_0xeb8d('0x1b')];this[_0xeb8d('0x1c')]=_0x5adde3[_0xeb8d('0x1c')];this[_0xeb8d('0x1d')]=_0x5adde3[_0xeb8d('0x1d')];this['servicenowAccounts']=_0x5adde3['servicenowAccounts'];this[_0xeb8d('0x1e')]=_0x5adde3[_0xeb8d('0x1e')];this[_0xeb8d('0x1f')]=_0x5adde3[_0xeb8d('0x1f')];this[_0xeb8d('0x20')]={'zendesk':this[_0xeb8d('0x17')],'salesforce':this[_0xeb8d('0x19')],'freshdesk':this[_0xeb8d('0x18')],'sugarcrm':this[_0xeb8d('0x1a')],'zoho':this[_0xeb8d('0x1b')],'desk':this['deskAccounts'],'vtiger':this[_0xeb8d('0x1d')],'dynamics365':this[_0xeb8d('0x1e')],'freshsales':this[_0xeb8d('0x1f')],'servicenow':this[_0xeb8d('0x21')]};ami['on']('custom:agentcalled',this[_0xeb8d('0x22')]['bind'](this));ami['on']('custom:agentconnect',this['syncCustomEvent'][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x24'),this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on']('custom:agentcomplete',this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x25'),this['syncCustomEvent'][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x26'),this[_0xeb8d('0x22')]['bind'](this));ami['on']('custom:agentbusy',this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x27'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentreject',this[_0xeb8d('0x22')]['bind'](this));ami['on'](_0xeb8d('0x28'),this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x29'),this['syncCustomEvent']['bind'](this));ami['on'](_0xeb8d('0x2a'),this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on']('custom:dialbegin',this[_0xeb8d('0x2b')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x2c'),this[_0xeb8d('0x2b')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x2d'),this[_0xeb8d('0x2b')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x2e'),this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x2f'),this['syncCustomEvent'][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x30'),this[_0xeb8d('0x22')][_0xeb8d('0x23')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0xeb8d('0x23')](this));ami['on']('custom:outgoingmessage',this[_0xeb8d('0x22')]['bind'](this));ami['on']('custom:acceptmessage',this['syncCustomEvent'][_0xeb8d('0x23')](this));ami['on'](_0xeb8d('0x31'),this[_0xeb8d('0x22')]['bind'](this));ami['on']('custom:offlineMessage',this['syncCustomEvent']['bind'](this));}Trigger[_0xeb8d('0x32')][_0xeb8d('0x33')]=function(_0xf68f53,_0x4303eb,_0x11ec6e){logger[_0xeb8d('0x34')](_0xf68f53,_0x4303eb,JSON[_0xeb8d('0x35')](_0x11ec6e));io['to'](_0xf68f53)['emit'](_0x4303eb,_0x11ec6e);};Trigger[_0xeb8d('0x32')][_0xeb8d('0x22')]=function(_0x4e8775){var _0x406c85=_[_0xeb8d('0x36')](_0x4e8775);if(typeof _0x406c85[_0xeb8d('0x37')]===_0xeb8d('0x38')){_0x406c85[_0xeb8d('0x37')]=_0xeb8d('0x39');}this[_0xeb8d('0x3a')](_0x406c85);};Trigger[_0xeb8d('0x32')][_0xeb8d('0x2b')]=function(_0x22b438){if(this[_0xeb8d('0x13')][_0x22b438[_0xeb8d('0x3b')]]){this['syncCustomEvent'](_0x22b438);}};Trigger[_0xeb8d('0x32')][_0xeb8d('0x3a')]=function(_0x3001b5){var _0x7d3915;for(var _0x5d4706 in this[_0xeb8d('0x12')]){if(this[_0xeb8d('0x12')][_0xeb8d('0x3c')](_0x5d4706)){if(this[_0xeb8d('0x12')][_0x5d4706][_0xeb8d('0x3d')]){_0x7d3915=this[_0xeb8d('0x3e')](this[_0xeb8d('0x12')][_0x5d4706],_0x3001b5);if(_0x7d3915){_[_0xeb8d('0x3f')](_0x3001b5,_0x3001b5[_0xeb8d('0x40')]);for(var _0x36b64f=0x0,_0x7af634,_0xb9c192,_0x35aa9e;_0x36b64f<this[_0xeb8d('0x12')][_0x5d4706]['Actions']['length'];_0x36b64f+=0x1){_0x7af634=this[_0xeb8d('0x12')][_0x5d4706][_0xeb8d('0x41')][_0x36b64f];if(this['agents'][_0x3001b5[_0xeb8d('0x3b')]]){switch(_0x7af634[_0xeb8d('0x42')]['toLowerCase']()){case _0xeb8d('0x43'):break;case'motionbar':case'browser':var _0x2940bc={};switch(barAndWebActions[_0x7af634[_0xeb8d('0x44')]]){case'popup':_0x2940bc['TemplateId']=_0x7af634['data2'];_0x2940bc[_0xeb8d('0x45')]=this['templates'][_0x7af634['data2']]?Mustache[_0xeb8d('0x46')](this[_0xeb8d('0x15')][_0x7af634[_0xeb8d('0x47')]][_0xeb8d('0x45')],_0x3001b5):_0xeb8d('0x48');break;case _0xeb8d('0x2'):_0x2940bc[_0xeb8d('0x49')]=this[_0xeb8d('0x4a')](_0x7af634[_0xeb8d('0x47')],_0x3001b5,_['isNil'](_0x7af634[_0xeb8d('0x4b')])?!![]:parseInt(_0x7af634['data3'],0xa));if(_['isNil'](_0x7af634['data4'])){_0x2940bc[_0xeb8d('0x4c')]='0';}else{_0x2940bc[_0xeb8d('0x4d')]=_0x7af634['data4'];_0x2940bc[_0xeb8d('0x4e')]=_['isNil'](_0x7af634[_0xeb8d('0x4f')])?_0xeb8d('0x50'):_0x7af634[_0xeb8d('0x4f')];_0x2940bc[_0xeb8d('0x51')]=_[_0xeb8d('0x52')](_0x7af634[_0xeb8d('0x53')])?_0xeb8d('0x54'):_0x7af634[_0xeb8d('0x53')];}break;case _0xeb8d('0x55'):_0x2940bc[_0xeb8d('0x56')]=_0x7af634[_0xeb8d('0x47')]?Mustache[_0xeb8d('0x46')](_0x7af634['data2'],_0x3001b5):'';_0x2940bc['winArguments']=_0x7af634[_0xeb8d('0x4b')]?Mustache['render'](_0x7af634[_0xeb8d('0x4b')],_0x3001b5):'';break;}this[_0xeb8d('0x33')](util[_0xeb8d('0x57')](_0xeb8d('0x58'),this[_0xeb8d('0x13')][_0x3001b5['interface']]['name']),util[_0xeb8d('0x57')]('trigger:%s:%s',_0x7af634['action'][_0xeb8d('0x59')](),barAndWebActions[_0x7af634['data1']]),_[_0xeb8d('0x3f')](_0x2940bc,_0x3001b5));break;case _0xeb8d('0x5a'):this[_0xeb8d('0x33')](util[_0xeb8d('0x57')](_0xeb8d('0x58'),this[_0xeb8d('0x13')][_0x3001b5[_0xeb8d('0x3b')]][_0xeb8d('0x5b')]),util[_0xeb8d('0x57')](_0xeb8d('0x5c'),_0x7af634['action']['toLowerCase']()),_[_0xeb8d('0x3f')]({'ProjectId':parseInt(_0x7af634['data1'],0xa)},_0x3001b5));break;default:this[_0xeb8d('0x33')](util[_0xeb8d('0x57')]('user:%s',this['agents'][_0x3001b5['interface']]['name']),util['format'](_0xeb8d('0x5c'),_0x7af634[_0xeb8d('0x42')][_0xeb8d('0x59')]()),_[_0xeb8d('0x3f')]({},_0x7af634,_0x3001b5));}}switch(_0x7af634[_0xeb8d('0x42')][_0xeb8d('0x59')]()){case'contactmanager':cmContact[_0xeb8d('0x5d')](this[_0xeb8d('0x13')][_0x3001b5[_0xeb8d('0x3b')]],this[_0xeb8d('0x12')][_0x5d4706],_0x7af634,_0x3001b5);break;case _0xeb8d('0x5e'):integration['exec'](_0x7af634,_0x3001b5,this[_0xeb8d('0x20')],this[_0xeb8d('0x13')][_0x3001b5[_0xeb8d('0x3b')]],this[_0xeb8d('0x14')][_0x3001b5['queue']],this[_0xeb8d('0x16')][_0x3001b5[_0xeb8d('0x5f')]]);break;case _0xeb8d('0x60'):urlforward[_0xeb8d('0x5d')](_0x7af634,_0x3001b5);break;case'script':script[_0xeb8d('0x5d')](_0x7af634,_0x3001b5);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x3b859d,_0x40ba50,_0x5307ad){var _0x3bbbe1=url['parse'](Mustache[_0xeb8d('0x46')](_0x3b859d,_0x40ba50),!![]);if(_0x5307ad){_[_0xeb8d('0x3f')](_0x3bbbe1[_0xeb8d('0x61')],_0x40ba50);}delete _0x3bbbe1['search'];var _0x595036=url[_0xeb8d('0x57')](_0x3bbbe1);_0x595036=_0x595036['replace'](/\/\?/g,'?');return _0x595036;};Trigger[_0xeb8d('0x32')][_0xeb8d('0x3e')]=function(_0x48a58e,_0x42af67){var _0x1a54c7=!![];var _0x47c37b=!![];var _0x11c759=![];if(_0x48a58e[_0xeb8d('0x62')]===_0x42af67[_0xeb8d('0x37')]){_0x11c759=!![];}if(_0x48a58e[_0xeb8d('0x63')][_0xeb8d('0x64')]){_0x1a54c7=_['every'](_0x48a58e[_0xeb8d('0x63')],this[_0xeb8d('0x65')](_0x42af67,_0x48a58e[_0xeb8d('0x62')]));}if(_0x48a58e[_0xeb8d('0x66')]['length']){_0x47c37b=_[_0xeb8d('0x67')](_0x48a58e['AnyConditions'],this['checkConditions'](_0x42af67,_0x48a58e[_0xeb8d('0x62')]));}return _0x11c759&&_0x1a54c7&&_0x47c37b;};Trigger[_0xeb8d('0x32')][_0xeb8d('0x65')]=function(_0x569e57,_0x3d9304){return function(_0x1a4eeb){switch(_0x1a4eeb['field']){case _0xeb8d('0x68'):if(_0x569e57['channel']===_0x3d9304){if(_0x3d9304===_0xeb8d('0x69')){return _0x569e57['ChatWebsiteId']?operators[_0x1a4eeb[_0xeb8d('0x6a')]](Number(_0x1a4eeb[_0xeb8d('0x6b')]),_0x569e57[_0xeb8d('0x6c')]):![];}else{return _0x569e57[_[_0xeb8d('0x6d')](_0x3d9304)+'AccountId']?operators[_0x1a4eeb[_0xeb8d('0x6a')]](Number(_0x1a4eeb[_0xeb8d('0x6b')]),_0x569e57[_[_0xeb8d('0x6d')](_0x3d9304)+_0xeb8d('0x6e')]):![];}}break;case _0xeb8d('0x6f'):case _0xeb8d('0x70'):if(_0x569e57[_0xeb8d('0x62')]===_0x3d9304){return _0x569e57[_0xeb8d('0x71')]?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb[_0xeb8d('0x6b')],_0x569e57['event']):![];}break;case _0xeb8d('0x72'):return _0x569e57[_0xeb8d('0x72')]?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb[_0xeb8d('0x6b')],_0x569e57['queue']):![];case _0xeb8d('0x73'):return _0x569e57[_0xeb8d('0x74')]?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb['value'],_0x569e57[_0xeb8d('0x74')]):![];case _0xeb8d('0x75'):return _0x569e57[_0xeb8d('0x75')]?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb[_0xeb8d('0x6b')],_0x569e57[_0xeb8d('0x75')]):![];case'routeId':return _0x569e57['routeId']?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb[_0xeb8d('0x6b')],_0x569e57[_0xeb8d('0x5f')]):![];case _0xeb8d('0x76'):if(_0x1a4eeb['value']===_0xeb8d('0x77'))_0x1a4eeb[_0xeb8d('0x6b')]=null;return typeof _0x569e57[_0xeb8d('0x78')]!==_0xeb8d('0x38')?operators[_0x1a4eeb[_0xeb8d('0x6a')]](_0x1a4eeb[_0xeb8d('0x6b')],_0x569e57['substatus']):![];case _0xeb8d('0x79'):if(_0x569e57[_0xeb8d('0x62')]===_0x3d9304){return _0x1a4eeb['value']===_0xeb8d('0x7a')&&_0x1a4eeb[_0xeb8d('0x6a')]==='equals'?!![]:![];}break;}return![];};};module[_0xeb8d('0x7b')]=Trigger;
\ No newline at end of file
index 2bf2738..4307232 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(_0x3ac549,_0x1d4f07){var _0x4226f4=function(_0x2d3b83){while(--_0x2d3b83){_0x3ac549['push'](_0x3ac549['shift']());}};_0x4226f4(++_0x1d4f07);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x211dd7,_0x2dda3b){var _0x287594=function(_0x50f3cb){while(--_0x50f3cb){_0x211dd7['push'](_0x211dd7['shift']());}};_0x287594(++_0x2dda3b);}(_0x814b,0x1a2));var _0xb814=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0x814b[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
index 62fc2ac..24ebdeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2a2=['body','headers','odata-entityid','substring','lastIndexOf','enduserId','toLowerCase','outbound','calleridnum','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','value','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','string','type','nameField','customField','idField','indexOf','content','ticketType','getString','Descriptions','/contacts(','Fields','phonecall','queue','callDirection','phonecalls','assign','ticketId','format','user:%s','data7','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','unmanaged','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','request-promise','util','./util','md5','../../../../config/logger','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','CloudProvider','tenantId','resolve','data5','POST','clientId','remoteUri','username','password','then','access_token','catch','error',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','contacts','/systemusers(','4.0'];(function(_0xee37f1,_0x189f43){var _0x37fd54=function(_0x3c8109){while(--_0x3c8109){_0xee37f1['push'](_0xee37f1['shift']());}};_0x37fd54(++_0x189f43);}(_0xb2a2,0x9f));var _0x2b2a=function(_0x28c617,_0x5520b4){_0x28c617=_0x28c617-0x0;var _0x1181ed=_0xb2a2[_0x28c617];return _0x1181ed;};'use strict';var _=require('lodash');var rp=require(_0x2b2a('0x0'));var util=require(_0x2b2a('0x1'));var intUtil=require(_0x2b2a('0x2'));var md5=require(_0x2b2a('0x3'));var Redis=require('ioredis');var logger=require(_0x2b2a('0x4'))('dynamics365');var config=require(_0x2b2a('0x5'));config[_0x2b2a('0x6')]=_['defaults'](config['redis'],{'host':_0x2b2a('0x7'),'port':0x18eb});var io=require(_0x2b2a('0x8'))(new Redis(config[_0x2b2a('0x6')]));function getAuthToken(_0x5b82fc,_0x527d88,_0x4acdc8){if(_0x5b82fc[_0x2b2a('0x9')]){_0x5b82fc['remoteUri']=_0x5b82fc[_0x2b2a('0xa')]['data7'];_0x5b82fc[_0x2b2a('0xb')]=_0x5b82fc[_0x2b2a('0xa')]['data2'];return Promise[_0x2b2a('0xc')](_0x5b82fc[_0x2b2a('0xa')][_0x2b2a('0xd')]);}var _0xf6597a={'method':_0x2b2a('0xe'),'uri':_0x527d88,'form':{'client_id':_0x5b82fc[_0x2b2a('0xf')],'resource':_0x5b82fc[_0x2b2a('0x10')],'username':_0x5b82fc[_0x2b2a('0x11')],'password':_0x5b82fc[_0x2b2a('0x12')],'grant_type':_0x2b2a('0x12'),'client_secret':_0x5b82fc['clientSecret']},'json':!![]};return rp(_0xf6597a)[_0x2b2a('0x13')](function(_0x4ebc33){return _0x4ebc33[_0x2b2a('0x14')];})[_0x2b2a('0x15')](function(_0x4ccce2){logger[_0x2b2a('0x16')]('['+[_0x4acdc8['toUpperCase']()]+_0x2b2a('0x17'));return _0x4ccce2[_0x2b2a('0x18')];});}function getUser(_0x47a823,_0x58506a,_0x3f7bdd,_0x52a697,_0x505bbb,_0x5e53a0){return new Promise(function(_0x161149,_0x42aa5f){return getAuthToken(_0x58506a,_0x52a697,_0x5e53a0)[_0x2b2a('0x13')](function(_0x2d35a7){var _0x214ecc={'method':_0x2b2a('0x19'),'uri':_0x505bbb+_0x2b2a('0x1a'),'headers':{'Authorization':_0x2b2a('0x1b')+_0x2d35a7,'OData-Version':'4.0'},'json':!![]};return rp(_0x214ecc);})[_0x2b2a('0x13')](function(_0x3ec1d9){var _0x30de22=_0x3ec1d9['value'];var _0x8d7020=![];var _0x576307=null;if(!_['isNil'](_0x3f7bdd)){if(intUtil[_0x2b2a('0x1c')](_0x3f7bdd[_0x2b2a('0x1d')])){_0x47a823[_0x2b2a('0x1e')]=_0x3f7bdd['email'];for(_0x576307=0x0;_0x576307<_0x30de22[_0x2b2a('0x1f')];_0x576307++){if(_0x30de22[_0x576307][_0x2b2a('0x20')]===_0x3f7bdd[_0x2b2a('0x1d')]&&!_0x30de22[_0x576307][_0x2b2a('0x21')]){_0x8d7020=!![];logger[_0x2b2a('0x22')]('['+[_0x5e53a0[_0x2b2a('0x23')]()]+_0x2b2a('0x24')+_0x30de22[_0x576307]['systemuserid']+'!');_0x47a823[_0x2b2a('0x25')]=_0x30de22[_0x576307][_0x2b2a('0x26')];}}}}if(!_0x8d7020){logger['info']('['+[_0x5e53a0[_0x2b2a('0x23')]()]+_0x2b2a('0x27'));_0x47a823[_0x2b2a('0x1e')]=_0x58506a['username'];for(_0x576307=0x0;_0x576307<_0x30de22[_0x2b2a('0x1f')];_0x576307++){if(_0x30de22[_0x576307]['internalemailaddress']===_0x58506a['username']){_0x47a823[_0x2b2a('0x25')]=_0x30de22[_0x576307][_0x2b2a('0x26')];}}}_0x161149(_0x47a823);})[_0x2b2a('0x15')](function(_0x308343){_0x42aa5f(_0x308343[_0x2b2a('0x18')]);});});}function createEndUser(_0x169bc3,_0x3419ab,_0x368d2d,_0x200bda,_0x4eef43,_0x564289,_0x10e6d5){return new Promise(function(_0x53020c,_0x34d765){return getAuthToken(_0x3419ab,_0x368d2d,_0x564289)[_0x2b2a('0x13')](function(_0x547c14){var _0x5e9319=_0x564289['toLowerCase']()==='outbound'?_0x4eef43['destcalleridnum']:_0x4eef43['calleridnum'];var _0x2e5d04={'method':_0x2b2a('0xe'),'uri':_0x200bda+_0x2b2a('0x28'),'body':{'fullname':_0x5e9319,'firstname':_0x5e9319,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x2b2a('0x29')+_0x169bc3[_0x2b2a('0x25')]+')'},'headers':{'Authorization':_0x2b2a('0x1b')+_0x547c14,'OData-Version':_0x2b2a('0x2a')},'json':!![],'resolveWithFullResponse':!![]};_0x2e5d04[_0x2b2a('0x2b')][_0x10e6d5]=_0x5e9319;return rp(_0x2e5d04);})[_0x2b2a('0x13')](function(_0x370393){var _0x2706cf=_0x370393[_0x2b2a('0x2c')][_0x2b2a('0x2d')];var _0x4a3e28=_0x2706cf[_0x2b2a('0x2e')](_0x2706cf[_0x2b2a('0x2f')]('(')+0x1,_0x2706cf['lastIndexOf'](')'));_0x169bc3[_0x2b2a('0x30')]=_0x4a3e28;_0x53020c(_0x169bc3);})[_0x2b2a('0x15')](function(_0x5c0340){_0x34d765(_0x5c0340[_0x2b2a('0x18')]);});});}function getEndUser(_0x2a301b,_0x58b551,_0x66e18a,_0x22d309,_0x47a1f2,_0x4856ff,_0x443e01,_0x43a433){var _0x15f56c=_0x4856ff[_0x2b2a('0x31')]()===_0x2b2a('0x32')?_0x47a1f2['destcalleridnum']:_0x47a1f2[_0x2b2a('0x33')];return getAuthToken(_0x58b551,_0x66e18a,_0x4856ff)[_0x2b2a('0x13')](function(_0x4d238e){_0x43a433=_0x43a433?_0x43a433:_0x2b2a('0x34');var _0x209883={'method':_0x2b2a('0x19'),'uri':_0x22d309+_0x2b2a('0x35')+_0x43a433+_0x2b2a('0x36')+_0x43a433+_0x2b2a('0x37')+_0x15f56c[_0x2b2a('0x38')]('+',_0x2b2a('0x39'))+'\x27','headers':{'Authorization':_0x2b2a('0x1b')+_0x4d238e,'If-None-Match':null,'OData-Version':_0x2b2a('0x2a')},'json':!![]};return rp(_0x209883);})[_0x2b2a('0x13')](function(_0x5012f5){var _0x513a57=![];if(!_0x5012f5)return _0x513a57;var _0x47be09=_0x5012f5[_0x2b2a('0x3a')];for(var _0x3f5c25=0x0;_0x3f5c25<_0x47be09[_0x2b2a('0x1f')];_0x3f5c25++){if(_0x47be09[_0x3f5c25][_0x43a433]===_0x15f56c){_0x513a57=!![];_0x2a301b[_0x2b2a('0x30')]=_0x47be09[_0x3f5c25][_0x2b2a('0x3b')];}}return _0x513a57;})[_0x2b2a('0x13')](function(_0x627158){if(_0x627158)return _0x2a301b;if(_0x443e01==='nothing'){logger[_0x2b2a('0x22')]('['+[_0x4856ff[_0x2b2a('0x23')]()]+_0x2b2a('0x3c'));return _0x2a301b;}return createEndUser(_0x2a301b,_0x58b551,_0x66e18a,_0x22d309,_0x47a1f2,_0x4856ff,_0x43a433)['then'](function(_0x54e469){logger['info']('['+[_0x4856ff['toUpperCase']()]+_0x2b2a('0x3d'),_0x54e469[_0x2b2a('0x30')]);return _0x54e469;});});}function getCustomFields(_0x453cb4,_0x30e6dc,_0x2e2ab0){var _0x22d35a={};if(_0x453cb4[_0x2b2a('0x1f')]>0x0){_['forEach'](_0x453cb4,function(_0x2af0ae){if(_['includes']([_0x2b2a('0x3e'),'picklist'],_0x2af0ae[_0x2b2a('0x3f')])&&_0x2af0ae[_0x2b2a('0x40')]&&!_0x2af0ae[_0x2b2a('0x41')]){var _0x2f62c9=_0x2af0ae[_0x2b2a('0x42')][_0x2b2a('0x31')]();var _0xf22a9d=_0x2f62c9[_0x2b2a('0x2e')](0x0,_0x2f62c9[_0x2b2a('0x43')]('_'));var _0x4d938a=_0x2f62c9['substring'](_0x2f62c9[_0x2b2a('0x43')]('_')+0x1);if(_0xf22a9d===_0x2e2ab0){_0x22d35a[_0x4d938a]=_0x2af0ae[_0x2b2a('0x44')];}}});}return _0x22d35a;}function getTicket(_0x47d6d5,_0x53729b,_0x4a4cbc,_0x413b0d,_0x277d06,_0x279b28,_0xe78c4c){return new Promise(function(_0x331715,_0x29dba6){var _0x47bd6c;return getAuthToken(_0x53729b,_0x4a4cbc,_0xe78c4c)[_0x2b2a('0x13')](function(_0x3dd848){if(_0x279b28[_0x2b2a('0x45')]==='incident'){_0x47bd6c={'method':'POST','uri':_0x413b0d+'incidents','body':Object['assign']({},{'title':intUtil[_0x2b2a('0x46')](_0x279b28['Subjects'],_0x277d06,'\x20'),'description':intUtil[_0x2b2a('0x46')](_0x279b28[_0x2b2a('0x47')],_0x277d06,'\x0a'),'customerid_contact@odata.bind':_0x47d6d5[_0x2b2a('0x30')]?_0x2b2a('0x48')+_0x47d6d5[_0x2b2a('0x30')]+')':undefined,'ownerid@odata.bind':_0x2b2a('0x29')+_0x47d6d5['userId']+')','caseorigincode':'1'},getCustomFields(_0x279b28[_0x2b2a('0x49')],_0x277d06,_0x279b28['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x3dd848,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x279b28[_0x2b2a('0x45')]===_0x2b2a('0x4a')){var _0x14015f=_0x47d6d5[_0x2b2a('0x30')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x47d6d5[_0x2b2a('0x25')]+')','participationtypemask':_0x47d6d5['callDirection']===_0x2b2a('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x2b2a('0x48')+_0x47d6d5[_0x2b2a('0x30')]+')','participationtypemask':_0x47d6d5['callDirection']===_0x2b2a('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x2b2a('0x29')+_0x47d6d5[_0x2b2a('0x25')]+')','participationtypemask':_0x47d6d5[_0x2b2a('0x4c')]===_0x2b2a('0x4b')?0x2:0x1}];_0x47bd6c={'method':_0x2b2a('0xe'),'uri':_0x413b0d+_0x2b2a('0x4d'),'body':Object[_0x2b2a('0x4e')]({},{'subject':intUtil['getString'](_0x279b28['Subjects'],_0x277d06,'\x20'),'phonenumber':String(_0x277d06[_0x2b2a('0x33')]),'description':intUtil[_0x2b2a('0x46')](_0x279b28[_0x2b2a('0x47')],_0x277d06,'\x0a'),'regardingobjectid_contact@odata.bind':_0x47d6d5[_0x2b2a('0x30')]?_0x2b2a('0x48')+_0x47d6d5[_0x2b2a('0x30')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x47d6d5[_0x2b2a('0x25')]+')','directioncode':_0x47d6d5['callDirection']===_0x2b2a('0x4b')?![]:!![],'phonecall_activity_parties':_0x14015f},getCustomFields(_0x279b28['Fields'],_0x277d06,_0x279b28[_0x2b2a('0x45')])),'headers':{'Authorization':_0x2b2a('0x1b')+_0x3dd848,'OData-Version':_0x2b2a('0x2a')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x47bd6c);})[_0x2b2a('0x13')](function(_0x1724b1){var _0x365331=_0x1724b1[_0x2b2a('0x2c')][_0x2b2a('0x2d')];var _0x4bf137=_0x365331[_0x2b2a('0x2e')](_0x365331['lastIndexOf']('(')+0x1,_0x365331[_0x2b2a('0x2f')](')'));_0x47d6d5[_0x2b2a('0x4f')]=_0x4bf137;_0x331715(_0x47d6d5);})[_0x2b2a('0x15')](function(_0x198efa){_0x29dba6(_0x198efa[_0x2b2a('0x18')]);});});}function emit(_0x5290f1,_0x198326,_0x164284,_0x4911d6){var _0x2cef8b={'uri':util[_0x2b2a('0x50')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x5290f1,_0x164284,_0x4911d6)};io['to'](util['format'](_0x2b2a('0x51'),_0x198326))['emit']('trigger:browser:url',_0x2cef8b);}exports['cs']=function(_0x7b5a73,_0x34b910,_0x50cf39,_0xeb001a,_0x284e9b,_0xb0d87b,_0x29b191,_0x121be1){var _0x43182b={};_0xb0d87b[_0x2b2a('0x10')]=_0xb0d87b[_0x2b2a('0x9')]?intUtil['stripTrailingSlash'](_0xb0d87b[_0x2b2a('0xa')][_0x2b2a('0x52')]):intUtil[_0x2b2a('0x53')](_0xb0d87b[_0x2b2a('0x10')]);_0xb0d87b[_0x2b2a('0x54')]=intUtil[_0x2b2a('0x53')](_0xb0d87b[_0x2b2a('0x54')]);_0x43182b[_0x2b2a('0x4c')]=_0x121be1===_0x2b2a('0x4b')||_0x121be1==='unmanaged'?_0x2b2a('0x4b'):_0x2b2a('0x32');var _0x33f0cd=_0xb0d87b[_0x2b2a('0x9')]?util[_0x2b2a('0x50')](_0x2b2a('0x55'),_0xb0d87b['CloudProvider'][_0x2b2a('0x52')]):util['format'](_0x2b2a('0x55'),_0xb0d87b[_0x2b2a('0x10')]);var _0x9d0bf0=util[_0x2b2a('0x50')](_0x2b2a('0x56'),_0xb0d87b[_0x2b2a('0xb')]);var _0x3fd98b=util[_0x2b2a('0x50')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xb0d87b['serverUrl'],_0x34b910[_0x2b2a('0x57')],md5(_0x34b910[_0x2b2a('0x57')]));if(_0x284e9b&&_0x284e9b[_0x2b2a('0x58')]){logger[_0x2b2a('0x22')](_0x2b2a('0x59'),_0x2b2a('0x5a'));_0x34b910[_0x2b2a('0x5b')]=_0x3fd98b;}else if(_0x29b191&&_0x29b191[_0x2b2a('0x5c')]&&_0x29b191['recordingFormat']!==_0x2b2a('0x5d')){logger[_0x2b2a('0x22')]('[OUTBOUND]',_0x2b2a('0x5a'));_0x34b910[_0x2b2a('0x5b')]=_0x3fd98b;}else{_0x34b910[_0x2b2a('0x5b')]='';}return getUser(_0x43182b,_0xb0d87b,_0xeb001a,_0x9d0bf0,_0x33f0cd,_0x121be1)[_0x2b2a('0x13')](function(_0x52a692){logger[_0x2b2a('0x22')]('['+_0x121be1[_0x2b2a('0x23')]()+']\x20The\x20User\x20ID\x20is:',_0x52a692[_0x2b2a('0x25')]);logger[_0x2b2a('0x22')]('['+_0x121be1['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x52a692['userEmail']);return getEndUser(_0x52a692,_0xb0d87b,_0x9d0bf0,_0x33f0cd,_0x34b910,_0x121be1,_0x50cf39[_0x2b2a('0x5e')],_0x50cf39[_0x2b2a('0x5f')]);})[_0x2b2a('0x13')](function(_0x5c533b){logger[_0x2b2a('0x22')]('['+_0x121be1[_0x2b2a('0x23')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x5c533b[_0x2b2a('0x30')]);logger['info']('['+_0x121be1['toUpperCase']()+_0x2b2a('0x60'),_0x34b910[_0x2b2a('0x33')]);return getTicket(_0x5c533b,_0xb0d87b,_0x9d0bf0,_0x33f0cd,_0x34b910,_0x50cf39,_0x121be1);})[_0x2b2a('0x13')](function(_0x444dab){logger['info'](util['format']('['+_0x121be1[_0x2b2a('0x23')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x50cf39[_0x2b2a('0x45')],_0x444dab[_0x2b2a('0x4f')]));logger['info'](util[_0x2b2a('0x50')]('['+_0x121be1[_0x2b2a('0x23')]()+_0x2b2a('0x61'),_0x121be1));if(_0x121be1!==_0x2b2a('0x62')&&_0x50cf39[_0x2b2a('0x63')]){logger[_0x2b2a('0x22')]('['+_0x121be1[_0x2b2a('0x23')]()+']',_0x2b2a('0x64'));emit(_0xb0d87b[_0x2b2a('0x10')],_0xeb001a['name'],_0x50cf39['ticketType'],_0x444dab[_0x2b2a('0x4f')]);}})[_0x2b2a('0x15')](function(_0x111259){logger[_0x2b2a('0x16')]('['+_0x121be1[_0x2b2a('0x23')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x111259[_0x2b2a('0x18')]);console[_0x2b2a('0x16')]('Error\x20running\x20Dynamics365\x20integration',_0x111259);});};
\ No newline at end of file
+var _0x09a8=['substring','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','phonecall','queue','callDirection','phonecalls','Subjects','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','resolve','data5','username','password','clientSecret','then','access_token','catch','toUpperCase','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','isNil','validateEmail','email','userEmail','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','message','toLowerCase','outbound','calleridnum','POST','contacts','/systemusers(','body','headers','lastIndexOf','enduserId','destcalleridnum','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','value','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','includes','string','picklist','type','nameField','customField'];(function(_0x2e9e24,_0x3a8e8b){var _0x21e46a=function(_0x5cd1cd){while(--_0x5cd1cd){_0x2e9e24['push'](_0x2e9e24['shift']());}};_0x21e46a(++_0x3a8e8b);}(_0x09a8,0x188));var _0x809a=function(_0x960aee,_0x1fa048){_0x960aee=_0x960aee-0x0;var _0x420d9f=_0x09a8[_0x960aee];return _0x420d9f;};'use strict';var _=require(_0x809a('0x0'));var rp=require(_0x809a('0x1'));var util=require(_0x809a('0x2'));var intUtil=require(_0x809a('0x3'));var md5=require(_0x809a('0x4'));var Redis=require('ioredis');var logger=require(_0x809a('0x5'))(_0x809a('0x6'));var config=require('../../../../config/environment');config[_0x809a('0x7')]=_[_0x809a('0x8')](config[_0x809a('0x7')],{'host':_0x809a('0x9'),'port':0x18eb});var io=require(_0x809a('0xa'))(new Redis(config[_0x809a('0x7')]));function getAuthToken(_0x65b218,_0x22648c,_0x10c181){if(_0x65b218[_0x809a('0xb')]){_0x65b218[_0x809a('0xc')]=_0x65b218[_0x809a('0xd')][_0x809a('0xe')];_0x65b218[_0x809a('0xf')]=_0x65b218[_0x809a('0xd')]['data2'];return Promise[_0x809a('0x10')](_0x65b218[_0x809a('0xd')][_0x809a('0x11')]);}var _0x571eef={'method':'POST','uri':_0x22648c,'form':{'client_id':_0x65b218['clientId'],'resource':_0x65b218[_0x809a('0xc')],'username':_0x65b218[_0x809a('0x12')],'password':_0x65b218[_0x809a('0x13')],'grant_type':_0x809a('0x13'),'client_secret':_0x65b218[_0x809a('0x14')]},'json':!![]};return rp(_0x571eef)[_0x809a('0x15')](function(_0x4e62ff){return _0x4e62ff[_0x809a('0x16')];})[_0x809a('0x17')](function(_0x16c1af){logger['error']('['+[_0x10c181[_0x809a('0x18')]()]+']\x20Wrong\x20credentials!');return _0x16c1af['message'];});}function getUser(_0x20bffa,_0x4b588e,_0x1d4cc4,_0xef46c5,_0x5a2fae,_0x4b08a){return new Promise(function(_0x1458a4,_0x44eb1b){return getAuthToken(_0x4b588e,_0xef46c5,_0x4b08a)[_0x809a('0x15')](function(_0x20c76f){var _0xcac505={'method':_0x809a('0x19'),'uri':_0x5a2fae+_0x809a('0x1a'),'headers':{'Authorization':_0x809a('0x1b')+_0x20c76f,'OData-Version':_0x809a('0x1c')},'json':!![]};return rp(_0xcac505);})[_0x809a('0x15')](function(_0x4758d6){var _0x401c2d=_0x4758d6['value'];var _0x49253a=![];var _0xb4499b=null;if(!_[_0x809a('0x1d')](_0x1d4cc4)){if(intUtil[_0x809a('0x1e')](_0x1d4cc4[_0x809a('0x1f')])){_0x20bffa[_0x809a('0x20')]=_0x1d4cc4[_0x809a('0x1f')];for(_0xb4499b=0x0;_0xb4499b<_0x401c2d[_0x809a('0x21')];_0xb4499b++){if(_0x401c2d[_0xb4499b]['internalemailaddress']===_0x1d4cc4[_0x809a('0x1f')]&&!_0x401c2d[_0xb4499b][_0x809a('0x22')]){_0x49253a=!![];logger[_0x809a('0x23')]('['+[_0x4b08a[_0x809a('0x18')]()]+_0x809a('0x24')+_0x401c2d[_0xb4499b][_0x809a('0x25')]+'!');_0x20bffa[_0x809a('0x26')]=_0x401c2d[_0xb4499b][_0x809a('0x25')];}}}}if(!_0x49253a){logger['info']('['+[_0x4b08a[_0x809a('0x18')]()]+_0x809a('0x27'));_0x20bffa[_0x809a('0x20')]=_0x4b588e['username'];for(_0xb4499b=0x0;_0xb4499b<_0x401c2d[_0x809a('0x21')];_0xb4499b++){if(_0x401c2d[_0xb4499b][_0x809a('0x28')]===_0x4b588e['username']){_0x20bffa[_0x809a('0x26')]=_0x401c2d[_0xb4499b]['systemuserid'];}}}_0x1458a4(_0x20bffa);})[_0x809a('0x17')](function(_0x2750e6){_0x44eb1b(_0x2750e6[_0x809a('0x29')]);});});}function createEndUser(_0x2d264b,_0x520497,_0x28cb8c,_0x3d29df,_0x417f4c,_0x56a472,_0x26c9bf){return new Promise(function(_0x3d6cac,_0x23117e){return getAuthToken(_0x520497,_0x28cb8c,_0x56a472)[_0x809a('0x15')](function(_0x4013dc){var _0x50d840=_0x56a472[_0x809a('0x2a')]()===_0x809a('0x2b')?_0x417f4c['destcalleridnum']:_0x417f4c[_0x809a('0x2c')];var _0x140a29={'method':_0x809a('0x2d'),'uri':_0x3d29df+_0x809a('0x2e'),'body':{'fullname':_0x50d840,'firstname':_0x50d840,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x809a('0x2f')+_0x2d264b['userId']+')'},'headers':{'Authorization':_0x809a('0x1b')+_0x4013dc,'OData-Version':_0x809a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x140a29[_0x809a('0x30')][_0x26c9bf]=_0x50d840;return rp(_0x140a29);})['then'](function(_0xf88105){var _0x3292b5=_0xf88105[_0x809a('0x31')]['odata-entityid'];var _0x40eded=_0x3292b5['substring'](_0x3292b5[_0x809a('0x32')]('(')+0x1,_0x3292b5[_0x809a('0x32')](')'));_0x2d264b[_0x809a('0x33')]=_0x40eded;_0x3d6cac(_0x2d264b);})['catch'](function(_0x11e1f4){_0x23117e(_0x11e1f4[_0x809a('0x29')]);});});}function getEndUser(_0x1ae289,_0x54d4a9,_0x147c8e,_0x173532,_0x40ba28,_0x24fcbd,_0x23c16a,_0xeba546){var _0x9bf23=_0x24fcbd[_0x809a('0x2a')]()===_0x809a('0x2b')?_0x40ba28[_0x809a('0x34')]:_0x40ba28[_0x809a('0x2c')];return getAuthToken(_0x54d4a9,_0x147c8e,_0x24fcbd)[_0x809a('0x15')](function(_0x3b4f4e){_0xeba546=_0xeba546?_0xeba546:_0x809a('0x35');var _0x7975b8={'method':_0x809a('0x19'),'uri':_0x173532+_0x809a('0x36')+_0xeba546+_0x809a('0x37')+_0xeba546+_0x809a('0x38')+_0x9bf23[_0x809a('0x39')]('+',_0x809a('0x3a'))+'\x27','headers':{'Authorization':_0x809a('0x1b')+_0x3b4f4e,'If-None-Match':null,'OData-Version':_0x809a('0x1c')},'json':!![]};return rp(_0x7975b8);})[_0x809a('0x15')](function(_0x1aa812){var _0x3cb16f=![];if(!_0x1aa812)return _0x3cb16f;var _0x691e09=_0x1aa812[_0x809a('0x3b')];for(var _0x3afc60=0x0;_0x3afc60<_0x691e09[_0x809a('0x21')];_0x3afc60++){if(_0x691e09[_0x3afc60][_0xeba546]===_0x9bf23){_0x3cb16f=!![];_0x1ae289['enduserId']=_0x691e09[_0x3afc60]['contactid'];}}return _0x3cb16f;})['then'](function(_0x3f1f37){if(_0x3f1f37)return _0x1ae289;if(_0x23c16a===_0x809a('0x3c')){logger[_0x809a('0x23')]('['+[_0x24fcbd[_0x809a('0x18')]()]+_0x809a('0x3d'));return _0x1ae289;}return createEndUser(_0x1ae289,_0x54d4a9,_0x147c8e,_0x173532,_0x40ba28,_0x24fcbd,_0xeba546)[_0x809a('0x15')](function(_0x330b11){logger[_0x809a('0x23')]('['+[_0x24fcbd['toUpperCase']()]+']\x20Enduser\x20created!',_0x330b11[_0x809a('0x33')]);return _0x330b11;});});}function getCustomFields(_0x511284,_0x37dc26,_0x1a17d8){var _0x297a0d={};if(_0x511284[_0x809a('0x21')]>0x0){_['forEach'](_0x511284,function(_0x17c69c){if(_[_0x809a('0x3e')]([_0x809a('0x3f'),_0x809a('0x40')],_0x17c69c[_0x809a('0x41')])&&_0x17c69c[_0x809a('0x42')]&&!_0x17c69c[_0x809a('0x43')]){var _0x54519d=_0x17c69c['idField'][_0x809a('0x2a')]();var _0x5071ff=_0x54519d[_0x809a('0x44')](0x0,_0x54519d[_0x809a('0x45')]('_'));var _0x4ebecf=_0x54519d['substring'](_0x54519d[_0x809a('0x45')]('_')+0x1);if(_0x5071ff===_0x1a17d8){_0x297a0d[_0x4ebecf]=_0x17c69c[_0x809a('0x46')];}}});}return _0x297a0d;}function getTicket(_0x89fc4,_0x52feac,_0x2c7131,_0x5ad618,_0x271a97,_0x1453f8,_0xc3feb0){return new Promise(function(_0x3ce54c,_0x2ffb6d){var _0x4f85ce;return getAuthToken(_0x52feac,_0x2c7131,_0xc3feb0)[_0x809a('0x15')](function(_0x1ee69a){if(_0x1453f8[_0x809a('0x47')]===_0x809a('0x48')){_0x4f85ce={'method':_0x809a('0x2d'),'uri':_0x5ad618+_0x809a('0x49'),'body':Object[_0x809a('0x4a')]({},{'title':intUtil[_0x809a('0x4b')](_0x1453f8['Subjects'],_0x271a97,'\x20'),'description':intUtil['getString'](_0x1453f8[_0x809a('0x4c')],_0x271a97,'\x0a'),'customerid_contact@odata.bind':_0x89fc4[_0x809a('0x33')]?_0x809a('0x4d')+_0x89fc4['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x89fc4[_0x809a('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x1453f8['Fields'],_0x271a97,_0x1453f8['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x1ee69a,'OData-Version':_0x809a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1453f8[_0x809a('0x47')]===_0x809a('0x4e')){var _0x4524fa=_0x89fc4[_0x809a('0x33')]?[{'partyid_systemuser@odata.bind':_0x809a('0x2f')+_0x89fc4[_0x809a('0x26')]+')','participationtypemask':_0x89fc4['callDirection']===_0x809a('0x4f')?0x2:0x1},{'partyid_contact@odata.bind':_0x809a('0x4d')+_0x89fc4[_0x809a('0x33')]+')','participationtypemask':_0x89fc4['callDirection']==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x809a('0x2f')+_0x89fc4[_0x809a('0x26')]+')','participationtypemask':_0x89fc4[_0x809a('0x50')]===_0x809a('0x4f')?0x2:0x1}];_0x4f85ce={'method':_0x809a('0x2d'),'uri':_0x5ad618+_0x809a('0x51'),'body':Object['assign']({},{'subject':intUtil[_0x809a('0x4b')](_0x1453f8[_0x809a('0x52')],_0x271a97,'\x20'),'phonenumber':String(_0x271a97[_0x809a('0x2c')]),'description':intUtil[_0x809a('0x4b')](_0x1453f8[_0x809a('0x4c')],_0x271a97,'\x0a'),'regardingobjectid_contact@odata.bind':_0x89fc4[_0x809a('0x33')]?_0x809a('0x4d')+_0x89fc4['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x89fc4[_0x809a('0x26')]+')','directioncode':_0x89fc4['callDirection']===_0x809a('0x4f')?![]:!![],'phonecall_activity_parties':_0x4524fa},getCustomFields(_0x1453f8['Fields'],_0x271a97,_0x1453f8[_0x809a('0x47')])),'headers':{'Authorization':_0x809a('0x1b')+_0x1ee69a,'OData-Version':_0x809a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4f85ce);})['then'](function(_0x4e9c3f){var _0x4a3a99=_0x4e9c3f[_0x809a('0x31')][_0x809a('0x53')];var _0x574f4e=_0x4a3a99[_0x809a('0x44')](_0x4a3a99[_0x809a('0x32')]('(')+0x1,_0x4a3a99[_0x809a('0x32')](')'));_0x89fc4[_0x809a('0x54')]=_0x574f4e;_0x3ce54c(_0x89fc4);})['catch'](function(_0x9a0f8e){_0x2ffb6d(_0x9a0f8e['message']);});});}function emit(_0x4f1995,_0x574161,_0x5ed1d2,_0x1ba692){var _0x2a97c5={'uri':util[_0x809a('0x55')](_0x809a('0x56'),_0x4f1995,_0x5ed1d2,_0x1ba692)};io['to'](util[_0x809a('0x55')](_0x809a('0x57'),_0x574161))[_0x809a('0x58')]('trigger:browser:url',_0x2a97c5);}exports['cs']=function(_0x6bc63b,_0x13825f,_0x545361,_0x4b851a,_0x423ba5,_0x5578ae,_0x31101c,_0x674208){var _0x6b1ab0={};_0x5578ae[_0x809a('0xc')]=_0x5578ae[_0x809a('0xb')]?intUtil[_0x809a('0x59')](_0x5578ae['CloudProvider'][_0x809a('0xe')]):intUtil[_0x809a('0x59')](_0x5578ae[_0x809a('0xc')]);_0x5578ae[_0x809a('0x5a')]=intUtil[_0x809a('0x59')](_0x5578ae[_0x809a('0x5a')]);_0x6b1ab0[_0x809a('0x50')]=_0x674208===_0x809a('0x4f')||_0x674208===_0x809a('0x5b')?_0x809a('0x4f'):_0x809a('0x2b');var _0x251d48=_0x5578ae[_0x809a('0xb')]?util['format'](_0x809a('0x5c'),_0x5578ae[_0x809a('0xd')]['data7']):util[_0x809a('0x55')](_0x809a('0x5c'),_0x5578ae[_0x809a('0xc')]);var _0x17c581=util[_0x809a('0x55')](_0x809a('0x5d'),_0x5578ae[_0x809a('0xf')]);var _0x5080dd=util['format'](_0x809a('0x5e'),_0x5578ae[_0x809a('0x5a')],_0x13825f[_0x809a('0x5f')],md5(_0x13825f[_0x809a('0x5f')]));if(_0x423ba5&&_0x423ba5[_0x809a('0x60')]){logger[_0x809a('0x23')](_0x809a('0x61'),_0x809a('0x62'));_0x13825f['recordingURL']=_0x5080dd;}else if(_0x31101c&&_0x31101c['recordingFormat']&&_0x31101c[_0x809a('0x63')]!==_0x809a('0x64')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x13825f[_0x809a('0x65')]=_0x5080dd;}else{_0x13825f[_0x809a('0x65')]='';}return getUser(_0x6b1ab0,_0x5578ae,_0x4b851a,_0x17c581,_0x251d48,_0x674208)[_0x809a('0x15')](function(_0x57a202){logger[_0x809a('0x23')]('['+_0x674208[_0x809a('0x18')]()+_0x809a('0x66'),_0x57a202[_0x809a('0x26')]);logger[_0x809a('0x23')]('['+_0x674208['toUpperCase']()+_0x809a('0x67'),_0x57a202[_0x809a('0x20')]);return getEndUser(_0x57a202,_0x5578ae,_0x17c581,_0x251d48,_0x13825f,_0x674208,_0x545361[_0x809a('0x68')],_0x545361[_0x809a('0x69')]);})[_0x809a('0x15')](function(_0x29ad56){logger[_0x809a('0x23')]('['+_0x674208['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x29ad56['enduserId']);logger[_0x809a('0x23')]('['+_0x674208['toUpperCase']()+_0x809a('0x6a'),_0x13825f['calleridnum']);return getTicket(_0x29ad56,_0x5578ae,_0x17c581,_0x251d48,_0x13825f,_0x545361,_0x674208);})[_0x809a('0x15')](function(_0x5b5bc7){logger[_0x809a('0x23')](util[_0x809a('0x55')]('['+_0x674208[_0x809a('0x18')]()+_0x809a('0x6b'),_0x545361['ticketType'],_0x5b5bc7[_0x809a('0x54')]));logger[_0x809a('0x23')](util[_0x809a('0x55')]('['+_0x674208['toUpperCase']()+_0x809a('0x6c'),_0x674208));if(_0x674208!=='unmanaged'&&_0x545361[_0x809a('0x6d')]){logger[_0x809a('0x23')]('['+_0x674208['toUpperCase']()+']',_0x809a('0x6e'));emit(_0x5578ae['remoteUri'],_0x4b851a[_0x809a('0x6f')],_0x545361[_0x809a('0x47')],_0x5b5bc7[_0x809a('0x54')]);}})[_0x809a('0x17')](function(_0x4f8fbe){logger[_0x809a('0x70')]('['+_0x674208[_0x809a('0x18')]()+_0x809a('0x71'),_0x4f8fbe[_0x809a('0x29')]);console[_0x809a('0x70')](_0x809a('0x72'),_0x4f8fbe);});};
\ No newline at end of file
index 7c9fd3e..d37ade8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fad=['Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','base64','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','nameField','toLowerCase','string','idField','customField','push','content','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','Authorization','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','The\x20Ticket\x20ID\x20is:','lodash','request-promise','md5','util','./util','../../../../config/environment','freshdesk','redis','defaults','application/json','emit','Creating\x20new\x20ticket...','merge','format'];(function(_0x1beee3,_0x2d8056){var _0x20f726=function(_0x25a44f){while(--_0x25a44f){_0x1beee3['push'](_0x1beee3['shift']());}};_0x20f726(++_0x2d8056);}(_0x0fad,0x1be));var _0xd0fa=function(_0x494a42,_0x1f2103){_0x494a42=_0x494a42-0x0;var _0x254792=_0x0fad[_0x494a42];return _0x254792;};'use strict';var _=require(_0xd0fa('0x0'));var rp=require(_0xd0fa('0x1'));var md5=require(_0xd0fa('0x2'));var util=require(_0xd0fa('0x3'));var Redis=require('ioredis');var intUtil=require(_0xd0fa('0x4'));var config=require(_0xd0fa('0x5'));var logger=require('../../../../config/logger')(_0xd0fa('0x6'));config[_0xd0fa('0x7')]=_[_0xd0fa('0x8')](config[_0xd0fa('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0xd0fa('0x9'),'Accept':_0xd0fa('0x9')};function emit(_0x5c04dd,_0x420d24,_0x582de4){io['to'](_0x5c04dd)[_0xd0fa('0xa')](_0x420d24,_0x582de4);}function getTicket(_0x314cfe,_0x5d1cb3,_0x5c9548,_0x5bd290,_0x9074c2){logger['info'](_0xd0fa('0xb'));var _0x1ee91e=_[_0xd0fa('0xc')]({'responder_id':_0x5d1cb3['id'],'requester_id':_0x5c9548['id'],'name':util[_0xd0fa('0xd')](_0xd0fa('0xe'),_0x9074c2[_0xd0fa('0xf')]),'phone':_0x9074c2[_0xd0fa('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd0fa('0x11')](_0x5bd290[_0xd0fa('0x12')],_0x9074c2,'\x20'),'description':intUtil[_0xd0fa('0x11')](_0x5bd290[_0xd0fa('0x13')],_0x9074c2,_0xd0fa('0x14')),'tags':getTags(_0x5bd290[_0xd0fa('0x15')],_0xd0fa('0x16'))},getCustomFields(_0x5bd290['Fields'],_0x9074c2));_0x1ee91e[_0xd0fa('0x17')]=_[_0xd0fa('0x18')](_[_0xd0fa('0x19')](_0x1ee91e[_0xd0fa('0x17')],'id'),_0xd0fa('0x1a'));return request({'uri':util[_0xd0fa('0xd')](_0xd0fa('0x1b'),_0x314cfe[_0xd0fa('0x1c')]),'method':_0xd0fa('0x1d'),'body':_0x1ee91e})[_0xd0fa('0x1e')](function(_0x37b253){logger[_0xd0fa('0x1f')](_0xd0fa('0x20'));return _0x37b253;});}function getUser(_0x1323cf,_0x55f04c){if(intUtil[_0xd0fa('0x21')](_0x55f04c)){return request({'uri':util['format']('%s/api/v2/agents',_0x1323cf['remoteUri']),'qs':{'email':_0x55f04c}})[_0xd0fa('0x1e')](function(_0x52f3ff){if(_0x52f3ff[_0xd0fa('0x22')]){logger[_0xd0fa('0x1f')]('Agent\x20found!');return _[_0xd0fa('0x23')](_0x52f3ff,function(_0x316fa1){return _0x316fa1[_0xd0fa('0x24')]['email']===_0x55f04c;});}else{logger[_0xd0fa('0x1f')](_0xd0fa('0x25'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x1323cf[_0xd0fa('0x1c')])})[_0xd0fa('0x1e')](function(_0x175048){logger[_0xd0fa('0x1f')](_0xd0fa('0x26'));return _0x175048;});}});}else{logger[_0xd0fa('0x1f')](_0xd0fa('0x27'));return request({'uri':util[_0xd0fa('0xd')](_0xd0fa('0x28'),_0x1323cf[_0xd0fa('0x1c')])})[_0xd0fa('0x1e')](function(_0x313b4d){logger[_0xd0fa('0x1f')](_0xd0fa('0x26'));return _0x313b4d;});}}function getEndUser(_0x1c94a5,_0x28b373,_0x1a5666){logger['info'](_0xd0fa('0x29'),_0x1a5666);return request({'uri':util[_0xd0fa('0xd')]('%s/api/v2/contacts',_0x1c94a5[_0xd0fa('0x1c')]),'qs':{'phone':_0x1a5666}})[_0xd0fa('0x1e')](function(_0xa04343){if(_0xa04343['length']){logger[_0xd0fa('0x1f')](_0xd0fa('0x2a'));return _[_0xd0fa('0x23')](_0xa04343,{'phone':_0x1a5666});}else{logger[_0xd0fa('0x1f')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0xd0fa('0x2b'),_0x1c94a5[_0xd0fa('0x1c')]),'method':_0xd0fa('0x1d'),'body':{'name':_0x28b373,'phone':_0x1a5666}})[_0xd0fa('0x1e')](function(_0x4c704d){logger[_0xd0fa('0x1f')](_0xd0fa('0x2c'));return _0x4c704d;});}});}function getAuth(_0x276f16){return util[_0xd0fa('0xd')]('Basic\x20%s',new Buffer(_0x276f16[_0xd0fa('0x2d')]+':X')[_0xd0fa('0x2e')](_0xd0fa('0x2f')));}function request(_0x2f076d){logger['debug'](_0xd0fa('0x30'),JSON[_0xd0fa('0x31')](_0x2f076d));return rp(_[_0xd0fa('0x8')](_0x2f076d,{'method':_0xd0fa('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x545671,_0x5731a0){var _0x566cd5=[];if(_0x545671&&_0x545671[_0xd0fa('0x22')]>0x0){_0x566cd5=_[_0xd0fa('0x33')](_0x545671,_0x5731a0);}return _0x566cd5;}function getCustomFields(_0x5dddd6,_0x596702){var _0x132c42=[];var _0x9dd7ce={'custom_fields':[]};if(_0x5dddd6[_0xd0fa('0x22')]>0x0){_[_0xd0fa('0x34')](_0x5dddd6,function(_0x4d1eae){if(_[_0xd0fa('0x35')](['string',_0xd0fa('0x36')],_0x4d1eae[_0xd0fa('0x37')])&&_0x4d1eae[_0xd0fa('0x38')]&&!_0x4d1eae['customField']){_0x9dd7ce[_0x4d1eae[_0xd0fa('0x38')][_0xd0fa('0x39')]()]=_0x4d1eae['content'][_0xd0fa('0x2e')]();}else if(_[_0xd0fa('0x35')]([_0xd0fa('0x3a'),_0xd0fa('0x36')],_0x4d1eae[_0xd0fa('0x37')])&&_0x4d1eae[_0xd0fa('0x3b')]&&_0x4d1eae[_0xd0fa('0x3c')]){_0x9dd7ce[_0xd0fa('0x17')][_0xd0fa('0x3d')]({'id':_0x4d1eae[_0xd0fa('0x3b')],'value':_0x4d1eae[_0xd0fa('0x3e')][_0xd0fa('0x2e')]()});}else if(_0x4d1eae['type']==='variable'&&_0x4d1eae[_0xd0fa('0x3f')]&&_0x4d1eae[_0xd0fa('0x3b')]&&_0x4d1eae['customField']){_0x596702[_0x4d1eae[_0xd0fa('0x3f')]]&&_0x9dd7ce[_0xd0fa('0x17')][_0xd0fa('0x3d')]({'id':_0x4d1eae[_0xd0fa('0x3b')],'value':_0x596702[_0x4d1eae[_0xd0fa('0x3f')]][_0xd0fa('0x2e')]()});}else if(_0x4d1eae[_0xd0fa('0x37')]===_0xd0fa('0x40')&&_0x4d1eae['Variable']&&_0x4d1eae[_0xd0fa('0x41')][_0xd0fa('0x16')]&&_0x4d1eae[_0xd0fa('0x3b')]&&_0x4d1eae[_0xd0fa('0x3c')]){_0x596702[_0x4d1eae[_0xd0fa('0x41')]['name'][_0xd0fa('0x39')]()]&&_0x9dd7ce[_0xd0fa('0x17')][_0xd0fa('0x3d')]({'id':_0x4d1eae[_0xd0fa('0x3b')],'value':_0x596702[_0x4d1eae[_0xd0fa('0x41')][_0xd0fa('0x16')]['toLowerCase']()]['toString']()});}});}return _0x9dd7ce;}exports[_0xd0fa('0x42')]=function(_0x49c423,_0x26a418,_0xdbc3c5,_0x11d113,_0x402126,_0x3011ef){var _0x4ff4eb,_0x5eafa9;_0x3011ef[_0xd0fa('0x1c')]=intUtil[_0xd0fa('0x43')](_0x3011ef[_0xd0fa('0x1c')]);_0x3011ef[_0xd0fa('0x44')]=intUtil[_0xd0fa('0x43')](_0x3011ef['serverUrl']);if(_0x402126&&_0x402126['monitor_format']){logger[_0xd0fa('0x1f')](_0xd0fa('0x45'),'Recording\x20is\x20enabled!');_0x26a418[_0xd0fa('0x46')]=util[_0xd0fa('0xd')](_0xd0fa('0x47'),_0x3011ef[_0xd0fa('0x44')],_0x26a418[_0xd0fa('0x48')],md5(_0x26a418[_0xd0fa('0x48')]));}else{_0x26a418[_0xd0fa('0x46')]='';}headers['Authorization']=getAuth(_0x3011ef);return getUser(_0x3011ef,_0x11d113[_0xd0fa('0x49')])[_0xd0fa('0x1e')](function(_0x5dc1c6){_0x4ff4eb=_0x5dc1c6;logger[_0xd0fa('0x1f')]('The\x20User\x20ID\x20is:',_0x4ff4eb['id']);return getEndUser(_0x3011ef,_0x26a418['calleridname'],_0x26a418[_0xd0fa('0x10')]);})[_0xd0fa('0x1e')](function(_0x1abed7){_0x5eafa9=_0x1abed7;logger[_0xd0fa('0x1f')](_0xd0fa('0x4a'),_0x5eafa9['id']);return getTicket(_0x3011ef,_0x4ff4eb,_0x5eafa9,_0xdbc3c5,_0x26a418);})[_0xd0fa('0x1e')](function(_0x504947){if(_0x504947&&_0x504947['id']){logger[_0xd0fa('0x1f')]('Ticket\x20created!');logger[_0xd0fa('0x1f')]('The\x20Ticket\x20ID\x20is:',_0x504947['id']);logger[_0xd0fa('0x1f')](_0xd0fa('0x45'),_0xd0fa('0x4b'));emit(util[_0xd0fa('0xd')]('user:%s',_0x11d113[_0xd0fa('0x16')]),_0xd0fa('0x4c'),{'uri':util[_0xd0fa('0xd')](_0xd0fa('0x4d'),_0x3011ef[_0xd0fa('0x1c')],_0x504947['id'])});}})['catch'](function(_0x573bc9){logger[_0xd0fa('0x4e')](_0xd0fa('0x45'),JSON[_0xd0fa('0x31')](_0x573bc9));});};exports[_0xd0fa('0x4f')]=function(_0x2f4c7d,_0x56243a,_0x623847,_0xdae181,_0x303351,_0x62bb6e,_0x447827){var _0x45839d,_0x59b8b9;_0x62bb6e[_0xd0fa('0x1c')]=intUtil[_0xd0fa('0x43')](_0x62bb6e[_0xd0fa('0x1c')]);_0x62bb6e[_0xd0fa('0x44')]=intUtil['stripTrailingSlash'](_0x62bb6e[_0xd0fa('0x44')]);if(_0x447827&&_0x447827['recordingFormat']&&_0x447827[_0xd0fa('0x50')]!=='none'){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x56243a['recordingURL']=util[_0xd0fa('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x62bb6e[_0xd0fa('0x44')],_0x56243a[_0xd0fa('0x48')],md5(_0x56243a[_0xd0fa('0x48')]));}headers[_0xd0fa('0x51')]=getAuth(_0x62bb6e);return getUser(_0x62bb6e,_0xdae181[_0xd0fa('0x49')])[_0xd0fa('0x1e')](function(_0x690f4e){_0x45839d=_0x690f4e;logger['info'](_0xd0fa('0x52'),_0x45839d['id']);return getEndUser(_0x62bb6e,_0x56243a[_0xd0fa('0x53')],_0x56243a[_0xd0fa('0x54')]);})[_0xd0fa('0x1e')](function(_0x37f6b4){_0x59b8b9=_0x37f6b4;logger[_0xd0fa('0x1f')](_0xd0fa('0x4a'),_0x59b8b9['id']);return getTicket(_0x62bb6e,_0x45839d,_0x59b8b9,_0x623847,_0x56243a);})[_0xd0fa('0x1e')](function(_0x4012aa){if(_0x4012aa&&_0x4012aa['id']){logger[_0xd0fa('0x1f')](_0xd0fa('0x20'));logger[_0xd0fa('0x1f')]('The\x20Ticket\x20ID\x20is:',_0x4012aa['id']);logger[_0xd0fa('0x1f')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0xdae181[_0xd0fa('0x16')]),_0xd0fa('0x4c'),{'uri':util[_0xd0fa('0xd')](_0xd0fa('0x4d'),_0x62bb6e['remoteUri'],_0x4012aa['id'])});}})[_0xd0fa('0x55')](function(_0x45f0d8){logger[_0xd0fa('0x4e')]('[OUTBOUND]',JSON[_0xd0fa('0x31')](_0x45f0d8));});};exports[_0xd0fa('0x56')]=function(_0x1cd17c,_0x30189d,_0x463002,_0x5341a0,_0x3a4632,_0x4e2052){var _0x3a20f5,_0x547b24;_0x4e2052[_0xd0fa('0x1c')]=intUtil[_0xd0fa('0x43')](_0x4e2052['remoteUri']);_0x4e2052[_0xd0fa('0x44')]=intUtil[_0xd0fa('0x43')](_0x4e2052[_0xd0fa('0x44')]);if(_0x3a4632&&_0x3a4632[_0xd0fa('0x57')]){logger[_0xd0fa('0x1f')]('['+_0x30189d[_0xd0fa('0x58')][_0xd0fa('0x59')]()+']',_0xd0fa('0x5a'));_0x30189d[_0xd0fa('0x46')]=util[_0xd0fa('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e2052[_0xd0fa('0x44')],_0x30189d[_0xd0fa('0x48')],md5(_0x30189d[_0xd0fa('0x48')]));}else{_0x30189d[_0xd0fa('0x46')]='';}headers[_0xd0fa('0x51')]=getAuth(_0x4e2052);return getUser(_0x4e2052,'')[_0xd0fa('0x1e')](function(_0x32c205){_0x3a20f5=_0x32c205;logger[_0xd0fa('0x1f')]('The\x20User\x20ID\x20is:',_0x3a20f5['id']);return getEndUser(_0x4e2052,_0x30189d[_0xd0fa('0xf')],_0x30189d[_0xd0fa('0x10')]);})[_0xd0fa('0x1e')](function(_0x5d575f){_0x547b24=_0x5d575f;logger[_0xd0fa('0x1f')](_0xd0fa('0x4a'),_0x547b24['id']);return getTicket(_0x4e2052,_0x3a20f5,_0x547b24,_0x463002,_0x30189d);})[_0xd0fa('0x1e')](function(_0x3b013c){if(_0x3b013c){logger[_0xd0fa('0x1f')](_0xd0fa('0x20'));logger['info'](_0xd0fa('0x5b'),_0x3b013c['id']);}})['catch'](function(_0x35d8cf){logger['error']('['+_0x30189d[_0xd0fa('0x58')][_0xd0fa('0x59')]()+']',JSON[_0xd0fa('0x31')](_0x35d8cf));});};
\ No newline at end of file
+var _0x8c1c=['includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','destcalleridname','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','unmanaged','toUpperCase','catch','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','application/json','emit','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','name','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','remoteUri','POST','then','%s/api/v2/agents','length','info','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach'];(function(_0x3f66bd,_0x54d5b1){var _0x5be415=function(_0x3b8b63){while(--_0x3b8b63){_0x3f66bd['push'](_0x3f66bd['shift']());}};_0x5be415(++_0x54d5b1);}(_0x8c1c,0x85));var _0xc8c1=function(_0x4a3dbd,_0x468378){_0x4a3dbd=_0x4a3dbd-0x0;var _0x1365d7=_0x8c1c[_0x4a3dbd];return _0x1365d7;};'use strict';var _=require('lodash');var rp=require(_0xc8c1('0x0'));var md5=require(_0xc8c1('0x1'));var util=require(_0xc8c1('0x2'));var Redis=require(_0xc8c1('0x3'));var intUtil=require(_0xc8c1('0x4'));var config=require(_0xc8c1('0x5'));var logger=require(_0xc8c1('0x6'))('freshdesk');config[_0xc8c1('0x7')]=_[_0xc8c1('0x8')](config[_0xc8c1('0x7')],{'host':_0xc8c1('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0xc8c1('0xa')};function emit(_0x570704,_0x449886,_0x5e6658){io['to'](_0x570704)[_0xc8c1('0xb')](_0x449886,_0x5e6658);}function getTicket(_0x484a01,_0x48d13c,_0x3ccd18,_0x504458,_0x531c30){logger['info'](_0xc8c1('0xc'));var _0x65f43f=_[_0xc8c1('0xd')]({'responder_id':_0x48d13c['id'],'requester_id':_0x3ccd18['id'],'name':util[_0xc8c1('0xe')]('Caller\x20-\x20%s',_0x531c30[_0xc8c1('0xf')]),'phone':_0x531c30[_0xc8c1('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xc8c1('0x11')](_0x504458['Subjects'],_0x531c30,'\x20'),'description':intUtil[_0xc8c1('0x11')](_0x504458[_0xc8c1('0x12')],_0x531c30,'<br>'),'tags':getTags(_0x504458['Tags'],_0xc8c1('0x13'))},getCustomFields(_0x504458[_0xc8c1('0x14')],_0x531c30));_0x65f43f[_0xc8c1('0x15')]=_[_0xc8c1('0x16')](_['keyBy'](_0x65f43f[_0xc8c1('0x15')],'id'),_0xc8c1('0x17'));return request({'uri':util['format'](_0xc8c1('0x18'),_0x484a01[_0xc8c1('0x19')]),'method':_0xc8c1('0x1a'),'body':_0x65f43f})[_0xc8c1('0x1b')](function(_0x143cc0){logger['info']('Ticket\x20created!');return _0x143cc0;});}function getUser(_0xd55a65,_0x286c3c){if(intUtil['validateEmail'](_0x286c3c)){return request({'uri':util[_0xc8c1('0xe')](_0xc8c1('0x1c'),_0xd55a65['remoteUri']),'qs':{'email':_0x286c3c}})['then'](function(_0x4199ed){if(_0x4199ed[_0xc8c1('0x1d')]){logger[_0xc8c1('0x1e')](_0xc8c1('0x1f'));return _[_0xc8c1('0x20')](_0x4199ed,function(_0x407e03){return _0x407e03[_0xc8c1('0x21')][_0xc8c1('0x22')]===_0x286c3c;});}else{logger[_0xc8c1('0x1e')](_0xc8c1('0x23'));return request({'uri':util[_0xc8c1('0xe')]('%s/api/v2/agents/me',_0xd55a65[_0xc8c1('0x19')])})[_0xc8c1('0x1b')](function(_0xf631c1){logger[_0xc8c1('0x1e')](_0xc8c1('0x24'));return _0xf631c1;});}});}else{logger[_0xc8c1('0x1e')](_0xc8c1('0x25'));return request({'uri':util[_0xc8c1('0xe')]('%s/api/v2/agents/me',_0xd55a65['remoteUri'])})['then'](function(_0x2646c8){logger[_0xc8c1('0x1e')]('Admin\x20account\x20selected.');return _0x2646c8;});}}function getEndUser(_0x257263,_0x34dad4,_0x553d7c){logger[_0xc8c1('0x1e')](_0xc8c1('0x26'),_0x553d7c);return request({'uri':util[_0xc8c1('0xe')]('%s/api/v2/contacts',_0x257263[_0xc8c1('0x19')]),'qs':{'phone':_0x553d7c}})[_0xc8c1('0x1b')](function(_0x1a7eb9){if(_0x1a7eb9['length']){logger[_0xc8c1('0x1e')](_0xc8c1('0x27'));return _[_0xc8c1('0x20')](_0x1a7eb9,{'phone':_0x553d7c});}else{logger[_0xc8c1('0x1e')](_0xc8c1('0x28'));return request({'uri':util[_0xc8c1('0xe')](_0xc8c1('0x29'),_0x257263[_0xc8c1('0x19')]),'method':_0xc8c1('0x1a'),'body':{'name':_0x34dad4,'phone':_0x553d7c}})[_0xc8c1('0x1b')](function(_0xc52282){logger[_0xc8c1('0x1e')](_0xc8c1('0x2a'));return _0xc52282;});}});}function getAuth(_0x36d409){return util[_0xc8c1('0xe')](_0xc8c1('0x2b'),new Buffer(_0x36d409[_0xc8c1('0x2c')]+':X')[_0xc8c1('0x2d')](_0xc8c1('0x2e')));}function request(_0x37f2e5){logger[_0xc8c1('0x2f')](_0xc8c1('0x30'),JSON[_0xc8c1('0x31')](_0x37f2e5));return rp(_['defaults'](_0x37f2e5,{'method':_0xc8c1('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x27c5d6,_0x386038){var _0x28c3eb=[];if(_0x27c5d6&&_0x27c5d6['length']>0x0){_0x28c3eb=_[_0xc8c1('0x33')](_0x27c5d6,_0x386038);}return _0x28c3eb;}function getCustomFields(_0x36c9b3,_0xe9cdd2){var _0x28b6f2=[];var _0x5b8952={'custom_fields':[]};if(_0x36c9b3[_0xc8c1('0x1d')]>0x0){_[_0xc8c1('0x34')](_0x36c9b3,function(_0x1fde53){if(_[_0xc8c1('0x35')]([_0xc8c1('0x36'),_0xc8c1('0x37')],_0x1fde53[_0xc8c1('0x38')])&&_0x1fde53[_0xc8c1('0x39')]&&!_0x1fde53[_0xc8c1('0x3a')]){_0x5b8952[_0x1fde53[_0xc8c1('0x39')][_0xc8c1('0x3b')]()]=_0x1fde53[_0xc8c1('0x3c')][_0xc8c1('0x2d')]();}else if(_['includes']([_0xc8c1('0x36'),_0xc8c1('0x37')],_0x1fde53['type'])&&_0x1fde53[_0xc8c1('0x3d')]&&_0x1fde53['customField']){_0x5b8952['custom_fields'][_0xc8c1('0x3e')]({'id':_0x1fde53[_0xc8c1('0x3d')],'value':_0x1fde53[_0xc8c1('0x3c')][_0xc8c1('0x2d')]()});}else if(_0x1fde53[_0xc8c1('0x38')]==='variable'&&_0x1fde53['variableName']&&_0x1fde53[_0xc8c1('0x3d')]&&_0x1fde53[_0xc8c1('0x3a')]){_0xe9cdd2[_0x1fde53[_0xc8c1('0x3f')]]&&_0x5b8952[_0xc8c1('0x15')][_0xc8c1('0x3e')]({'id':_0x1fde53[_0xc8c1('0x3d')],'value':_0xe9cdd2[_0x1fde53['variableName']]['toString']()});}else if(_0x1fde53['type']===_0xc8c1('0x40')&&_0x1fde53[_0xc8c1('0x41')]&&_0x1fde53[_0xc8c1('0x41')][_0xc8c1('0x13')]&&_0x1fde53[_0xc8c1('0x3d')]&&_0x1fde53[_0xc8c1('0x3a')]){_0xe9cdd2[_0x1fde53[_0xc8c1('0x41')]['name']['toLowerCase']()]&&_0x5b8952[_0xc8c1('0x15')][_0xc8c1('0x3e')]({'id':_0x1fde53[_0xc8c1('0x3d')],'value':_0xe9cdd2[_0x1fde53[_0xc8c1('0x41')][_0xc8c1('0x13')][_0xc8c1('0x3b')]()]['toString']()});}});}return _0x5b8952;}exports[_0xc8c1('0x42')]=function(_0x7e5cb9,_0x21b6b9,_0x1c7974,_0x44835c,_0x2767ae,_0x2eb39d){var _0x237af9,_0xd5ee0f;_0x2eb39d[_0xc8c1('0x19')]=intUtil[_0xc8c1('0x43')](_0x2eb39d[_0xc8c1('0x19')]);_0x2eb39d[_0xc8c1('0x44')]=intUtil[_0xc8c1('0x43')](_0x2eb39d[_0xc8c1('0x44')]);if(_0x2767ae&&_0x2767ae[_0xc8c1('0x45')]){logger[_0xc8c1('0x1e')](_0xc8c1('0x46'),_0xc8c1('0x47'));_0x21b6b9[_0xc8c1('0x48')]=util[_0xc8c1('0xe')](_0xc8c1('0x49'),_0x2eb39d[_0xc8c1('0x44')],_0x21b6b9[_0xc8c1('0x4a')],md5(_0x21b6b9['uniqueid']));}else{_0x21b6b9['recordingURL']='';}headers[_0xc8c1('0x4b')]=getAuth(_0x2eb39d);return getUser(_0x2eb39d,_0x44835c['email'])[_0xc8c1('0x1b')](function(_0x5e0390){_0x237af9=_0x5e0390;logger['info'](_0xc8c1('0x4c'),_0x237af9['id']);return getEndUser(_0x2eb39d,_0x21b6b9[_0xc8c1('0xf')],_0x21b6b9[_0xc8c1('0x10')]);})[_0xc8c1('0x1b')](function(_0x4d9cc9){_0xd5ee0f=_0x4d9cc9;logger[_0xc8c1('0x1e')](_0xc8c1('0x4d'),_0xd5ee0f['id']);return getTicket(_0x2eb39d,_0x237af9,_0xd5ee0f,_0x1c7974,_0x21b6b9);})[_0xc8c1('0x1b')](function(_0x54a662){if(_0x54a662&&_0x54a662['id']){logger['info'](_0xc8c1('0x4e'));logger[_0xc8c1('0x1e')]('The\x20Ticket\x20ID\x20is:',_0x54a662['id']);logger['info'](_0xc8c1('0x46'),_0xc8c1('0x4f'));emit(util[_0xc8c1('0xe')](_0xc8c1('0x50'),_0x44835c[_0xc8c1('0x13')]),_0xc8c1('0x51'),{'uri':util['format'](_0xc8c1('0x52'),_0x2eb39d[_0xc8c1('0x19')],_0x54a662['id'])});}})['catch'](function(_0x234857){logger[_0xc8c1('0x53')](_0xc8c1('0x46'),JSON[_0xc8c1('0x31')](_0x234857));});};exports[_0xc8c1('0x54')]=function(_0x271cc1,_0x2c071c,_0x246812,_0x1e2ce6,_0x46155e,_0x34694e,_0x177d7f){var _0x2a6ced,_0x5b85be;_0x34694e[_0xc8c1('0x19')]=intUtil[_0xc8c1('0x43')](_0x34694e[_0xc8c1('0x19')]);_0x34694e[_0xc8c1('0x44')]=intUtil[_0xc8c1('0x43')](_0x34694e[_0xc8c1('0x44')]);if(_0x177d7f&&_0x177d7f[_0xc8c1('0x55')]&&_0x177d7f[_0xc8c1('0x55')]!==_0xc8c1('0x56')){logger[_0xc8c1('0x1e')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x2c071c[_0xc8c1('0x48')]=util[_0xc8c1('0xe')](_0xc8c1('0x49'),_0x34694e[_0xc8c1('0x44')],_0x2c071c[_0xc8c1('0x4a')],md5(_0x2c071c[_0xc8c1('0x4a')]));}headers[_0xc8c1('0x4b')]=getAuth(_0x34694e);return getUser(_0x34694e,_0x1e2ce6[_0xc8c1('0x22')])[_0xc8c1('0x1b')](function(_0x256126){_0x2a6ced=_0x256126;logger[_0xc8c1('0x1e')](_0xc8c1('0x4c'),_0x2a6ced['id']);return getEndUser(_0x34694e,_0x2c071c[_0xc8c1('0x57')],_0x2c071c['destcalleridnum']);})[_0xc8c1('0x1b')](function(_0x464197){_0x5b85be=_0x464197;logger[_0xc8c1('0x1e')]('The\x20Enduser\x20ID\x20is:',_0x5b85be['id']);return getTicket(_0x34694e,_0x2a6ced,_0x5b85be,_0x246812,_0x2c071c);})[_0xc8c1('0x1b')](function(_0x494c44){if(_0x494c44&&_0x494c44['id']){logger[_0xc8c1('0x1e')](_0xc8c1('0x4e'));logger[_0xc8c1('0x1e')](_0xc8c1('0x58'),_0x494c44['id']);logger[_0xc8c1('0x1e')](_0xc8c1('0x59'),_0xc8c1('0x4f'));emit(util[_0xc8c1('0xe')](_0xc8c1('0x50'),_0x1e2ce6[_0xc8c1('0x13')]),'trigger:browser:url',{'uri':util[_0xc8c1('0xe')](_0xc8c1('0x52'),_0x34694e[_0xc8c1('0x19')],_0x494c44['id'])});}})['catch'](function(_0x12c8c6){logger['error'](_0xc8c1('0x59'),JSON[_0xc8c1('0x31')](_0x12c8c6));});};exports[_0xc8c1('0x5a')]=function(_0x1171f9,_0x598591,_0x11477e,_0x5cf102,_0x5f1ecd,_0x531a95){var _0x3d0f2b,_0x2b6075;_0x531a95[_0xc8c1('0x19')]=intUtil[_0xc8c1('0x43')](_0x531a95[_0xc8c1('0x19')]);_0x531a95[_0xc8c1('0x44')]=intUtil[_0xc8c1('0x43')](_0x531a95['serverUrl']);if(_0x5f1ecd&&_0x5f1ecd[_0xc8c1('0x45')]){logger[_0xc8c1('0x1e')]('['+_0x598591['lastevent'][_0xc8c1('0x5b')]()+']',_0xc8c1('0x47'));_0x598591[_0xc8c1('0x48')]=util[_0xc8c1('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x531a95['serverUrl'],_0x598591[_0xc8c1('0x4a')],md5(_0x598591[_0xc8c1('0x4a')]));}else{_0x598591['recordingURL']='';}headers[_0xc8c1('0x4b')]=getAuth(_0x531a95);return getUser(_0x531a95,'')[_0xc8c1('0x1b')](function(_0x493799){_0x3d0f2b=_0x493799;logger[_0xc8c1('0x1e')](_0xc8c1('0x4c'),_0x3d0f2b['id']);return getEndUser(_0x531a95,_0x598591[_0xc8c1('0xf')],_0x598591[_0xc8c1('0x10')]);})[_0xc8c1('0x1b')](function(_0x273176){_0x2b6075=_0x273176;logger[_0xc8c1('0x1e')](_0xc8c1('0x4d'),_0x2b6075['id']);return getTicket(_0x531a95,_0x3d0f2b,_0x2b6075,_0x11477e,_0x598591);})[_0xc8c1('0x1b')](function(_0x21b891){if(_0x21b891){logger[_0xc8c1('0x1e')]('Ticket\x20created!');logger[_0xc8c1('0x1e')]('The\x20Ticket\x20ID\x20is:',_0x21b891['id']);}})[_0xc8c1('0x5c')](function(_0x46d77b){logger['error']('['+_0x598591['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x46d77b));});};
\ No newline at end of file
index 9206ad1..02a3a40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5150=['toUpperCase','message','info','Getting\x20user\x20with\x20email','agentEmail','userEmail','email','userId','User\x20found:','Admin\x20selected','catch','error','/api/lookup?q=','&f=','&entities=contact','find','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','POST','/api/tasks','Subjects','getString','Descriptions','format','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','adminEmail','username','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','request-promise','bluebird','ioredis','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','GET','headers','then','users','length','adminId','Requested\x20Resource\x20not\x20Found'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x5150,0x195));var _0x0515=function(_0x107f10,_0x5529f2){_0x107f10=_0x107f10-0x0;var _0x811cab=_0x5150[_0x107f10];return _0x811cab;};'use strict';var _=require('lodash');var rp=require(_0x0515('0x0'));var md5=require('md5');var util=require('util');var moment=require('moment');var Promise=require(_0x0515('0x1'));var Redis=require(_0x0515('0x2'));var intUtil=require('./util');var config=require(_0x0515('0x3'));var logger=require('../../../../config/logger')('freshsales');config['redis']=_[_0x0515('0x4')](config[_0x0515('0x5')],{'host':_0x0515('0x6'),'port':0x18eb});var io=require(_0x0515('0x7'))(new Redis(config['redis']));function getAdminId(_0x5cb8fc,_0x5701d3,_0xda901d,_0x322a0f){return new Promise(function(_0x5f57a3,_0x30c05a){var _0x1f6244=![];var _0x332b6c={'method':_0x0515('0x8'),'uri':_0x322a0f+'/api/selector/owners','json':!![]};_0x332b6c[_0x0515('0x9')]=_0xda901d;logger['info']('Getting\x20admin\x20information');return rp(_0x332b6c)[_0x0515('0xa')](function(_0x717987){if(_0x717987){var _0x526a5e=_0x717987[_0x0515('0xb')];var _0x76036a=null;for(_0x76036a=0x0;_0x76036a<_0x526a5e[_0x0515('0xc')];_0x76036a++){if(_0x526a5e[_0x76036a]['email']===_0x5cb8fc['adminEmail']){_0x5cb8fc[_0x0515('0xd')]=_0x526a5e[_0x76036a]['id'];_0x1f6244=!![];}}if(_0x1f6244){logger['info']('Admin\x20found:',_0x5cb8fc[_0x0515('0xd')]);_0x5f57a3(_0x5cb8fc);}else{_0x30c05a({'statusCode':0x194,'message':_0x0515('0xe')});}}else{_0x30c05a({'statusCode':0x194,'message':_0x0515('0xe')});}})['catch'](function(_0x2a5118){logger['error']('['+[_0x5701d3[_0x0515('0xf')]()]+']',_0x2a5118[_0x0515('0x10')]);_0x30c05a(_0x2a5118);});});}function getUser(_0x31c9c6,_0x5f5f24,_0x54f81e){return function(_0x12b0f1){return new Promise(function(_0x1b6646,_0x3139bd){var _0x1c77a9={'method':_0x0515('0x8'),'uri':_0x54f81e+'/api/selector/owners','json':!![]};_0x1c77a9[_0x0515('0x9')]=_0x5f5f24;logger['info']('Getting\x20user\x20list');return rp(_0x1c77a9)['then'](function(_0x38d790){if(_0x38d790){var _0x497c96=_0x38d790['users'];var _0x12cf8c=![];var _0x58d495=null;if(_0x12b0f1['agentEmail']!==null){logger[_0x0515('0x11')](_0x0515('0x12'),_0x12b0f1[_0x0515('0x13')]);_0x12b0f1[_0x0515('0x14')]=_0x12b0f1[_0x0515('0x13')];for(_0x58d495=0x0;_0x58d495<_0x497c96[_0x0515('0xc')];_0x58d495++){if(_0x497c96[_0x58d495][_0x0515('0x15')]===_0x12b0f1[_0x0515('0x13')]){_0x12cf8c=!![];_0x12b0f1[_0x0515('0x16')]=_0x497c96[_0x58d495]['id'];logger['info'](_0x0515('0x17'),_0x12b0f1[_0x0515('0x16')]);}}}if(!_0x12cf8c){logger[_0x0515('0x11')](_0x0515('0x18'));_0x12b0f1[_0x0515('0x14')]=_0x12b0f1['adminEmail'];_0x12b0f1[_0x0515('0x16')]=_0x12b0f1[_0x0515('0xd')];_0x12cf8c=!![];}if(_0x12cf8c){_0x1b6646(_0x12b0f1);}else{_0x3139bd({'statusCode':0x194,'message':_0x0515('0xe')});}}else{_0x3139bd({'statusCode':0x194,'message':_0x0515('0xe')});}})[_0x0515('0x19')](function(_0x4c9773){logger[_0x0515('0x1a')]('['+[_0x31c9c6[_0x0515('0xf')]()]+']',_0x4c9773[_0x0515('0x10')]);_0x3139bd(_0x4c9773);});});};}function searchContact(_0x13acec,_0x3a73ba,_0x62fc9a,_0x45218c){return new Promise(function(_0x30687e,_0xdd0c3){var _0xa1fa8f={'method':'GET','headers':_0x3a73ba,'uri':_0x13acec+_0x0515('0x1b')+_0x45218c+_0x0515('0x1c')+_0x62fc9a+_0x0515('0x1d'),'json':!![]};rp(_0xa1fa8f)[_0x0515('0xa')](function(_0x2c3356){var _0x869e21=_[_0x0515('0x1e')](_0x2c3356['contacts']['contacts'],[_0x62fc9a,_0x45218c]);_0x30687e(_0x869e21);})['catch'](function(_0x4275f5){_0xdd0c3(_0x4275f5);});});}function getEndUser(_0x2ebb51,_0x445614,_0xdc5015){return function(_0x399415){return new Promise(function(_0x20b1fb,_0x5d6c0b){logger[_0x0515('0x11')](util['format']('Searching\x20contact\x20with\x20phone\x20%s',_0x399415[_0x0515('0x1f')]));searchContact(_0xdc5015,_0x445614,'mobile_number',_0x399415[_0x0515('0x1f')])[_0x0515('0xa')](function(_0x5383c4){if(_0x5383c4){_0x399415[_0x0515('0x20')]=_0x5383c4['id'];logger['info'](_0x0515('0x21'),_0x399415[_0x0515('0x20')]);return _0x20b1fb(_0x399415);}searchContact(_0xdc5015,_0x445614,_0x0515('0x22'),_0x399415[_0x0515('0x1f')])[_0x0515('0xa')](function(_0x47c4ff){if(_0x47c4ff){_0x399415[_0x0515('0x20')]=_0x47c4ff['id'];logger[_0x0515('0x11')]('Contact\x20found\x20work_number:',_0x399415['endUserId']);return _0x20b1fb(_0x399415);}createEndUser(_0x399415,_0x2ebb51,_0x445614,_0xdc5015)[_0x0515('0xa')](function(_0x4755c5){logger[_0x0515('0x11')](_0x0515('0x23'),_0x4755c5[_0x0515('0x20')]);return _0x20b1fb(_0x4755c5);});});})['catch'](function(_0x1db9e1){_0x5d6c0b(_0x1db9e1);});});};}function createEndUser(_0xebc084,_0x8c5488,_0x18106b,_0x4a683b){return new Promise(function(_0x1eb81b,_0x58cccc){var _0x4ccff8=moment();var _0x3050d5={'method':'POST','uri':_0x4a683b+'/api/contacts','body':{'contact':{'last_name':_0xebc084[_0x0515('0x1f')],'work_number':_0xebc084[_0x0515('0x1f')],'mobile_number':_0xebc084[_0x0515('0x1f')],'owner_id':_0xebc084[_0x0515('0x16')],'created_at':_0x4ccff8['format'](_0x0515('0x24'))}},'json':!![]};_0x3050d5['headers']=_0x18106b;logger['info'](_0x0515('0x25'));return rp(_0x3050d5)[_0x0515('0xa')](function(_0x4953db){_0xebc084[_0x0515('0x20')]=_0x4953db[_0x0515('0x26')]['id'];_0x1eb81b(_0xebc084);})['catch'](function(_0x19fcaa){logger[_0x0515('0x1a')]('['+[_0x8c5488[_0x0515('0xf')]()]+']',_0x19fcaa['message']);_0x58cccc(_0x19fcaa[_0x0515('0x10')]);});});}function getTicket(_0x345431,_0x3bad90,_0x5f5d96,_0x579ad5,_0x374e73){return function(_0x213166){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x59325b,_0x399b6b){var _0xf83727=moment();var _0x3e9559={'method':_0x0515('0x27'),'uri':_0x5f5d96+_0x0515('0x28'),'body':{'title':intUtil['getString'](_0x579ad5[_0x0515('0x29')],_0x374e73,'\x20'),'description':intUtil[_0x0515('0x2a')](_0x579ad5[_0x0515('0x2b')],_0x374e73,'\x0a'),'owner_id':_0x213166[_0x0515('0x16')],'creater_id':_0x213166[_0x0515('0xd')],'targetable_id':_0x213166['endUserId'],'targetable_type':'Contact','created_at':_0xf83727[_0x0515('0x2c')](_0x0515('0x24')),'due_date':_0xf83727['add'](0x1e,'m')[_0x0515('0x2c')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x3e9559['headers']=_0x3bad90;return rp(_0x3e9559)[_0x0515('0xa')](function(_0x6a58aa){_0x213166[_0x0515('0x2d')]=_0x6a58aa[_0x0515('0x2e')]['id'];logger['info'](_0x0515('0x2f'),_0x213166[_0x0515('0x2d')]);_0x59325b(_0x213166);})[_0x0515('0x19')](function(_0x4b884e){logger['error']('['+[_0x345431[_0x0515('0xf')]()]+']',_0x4b884e[_0x0515('0x10')]);_0x399b6b(_0x4b884e[_0x0515('0x10')]);});});};}function emit(_0x5403bd,_0x2aa8c1,_0x575056){var _0x1f9778={'uri':_0x5403bd+_0x0515('0x30')+_0x575056};io['to'](util['format'](_0x0515('0x31'),_0x2aa8c1))[_0x0515('0x32')](_0x0515('0x33'),_0x1f9778);}exports['cs']=function(_0x1067bd,_0x1feda5,_0x1029bd,_0x221475,_0x1330cc,_0x4aa072,_0x172737,_0x48fcf4){var _0x5e2c08={};var _0x31add6={'Authorization':'Token\x20token='+_0x4aa072['apiKey']};_0x4aa072['remoteUri']=intUtil[_0x0515('0x34')](_0x4aa072['remoteUri']);_0x4aa072[_0x0515('0x35')]=intUtil[_0x0515('0x34')](_0x4aa072[_0x0515('0x35')]);var _0x4a0e68=_0x4aa072['remoteUri'];_0x5e2c08[_0x0515('0x36')]=_0x4aa072[_0x0515('0x37')];_0x5e2c08['contactNumber']=_0x48fcf4['toLowerCase']()===_0x0515('0x38')?_0x1feda5[_0x0515('0x39')]:_0x1feda5[_0x0515('0x3a')];_0x5e2c08[_0x0515('0x3b')]=_0x48fcf4===_0x0515('0x3c')||_0x48fcf4===_0x0515('0x3d')?_0x0515('0x3c'):_0x0515('0x38');if(_0x221475){_0x5e2c08[_0x0515('0x13')]=_0x221475['email'];}var _0x39b693=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4aa072[_0x0515('0x35')],_0x1feda5[_0x0515('0x3e')],md5(_0x1feda5[_0x0515('0x3e')]));if(_0x1330cc&&_0x1330cc[_0x0515('0x3f')]){logger[_0x0515('0x11')](_0x0515('0x40'),'Recording\x20is\x20enabled!');_0x1feda5[_0x0515('0x41')]=_0x39b693;}else if(_0x172737&&_0x172737[_0x0515('0x42')]&&_0x172737[_0x0515('0x42')]!=='none'){logger[_0x0515('0x11')](_0x0515('0x43'),'Recording\x20is\x20enabled!');_0x1feda5[_0x0515('0x41')]=_0x39b693;}else{_0x1feda5[_0x0515('0x41')]='';}return getAdminId(_0x5e2c08,_0x48fcf4,_0x31add6,_0x4a0e68)[_0x0515('0xa')](getUser(_0x48fcf4,_0x31add6,_0x4a0e68))[_0x0515('0xa')](getEndUser(_0x48fcf4,_0x31add6,_0x4a0e68))[_0x0515('0xa')](getTicket(_0x48fcf4,_0x31add6,_0x4a0e68,_0x1029bd,_0x1feda5))[_0x0515('0xa')](function(_0x307887){logger['info'](util[_0x0515('0x2c')]('The\x20ticket\x20ID\x20is:\x20%s',_0x307887['ticketId']));if(_0x48fcf4!==_0x0515('0x3d')){logger[_0x0515('0x11')]('['+[_0x48fcf4[_0x0515('0xf')]()]+']',_0x0515('0x44'));emit(_0x4a0e68,_0x221475['name'],_0x307887[_0x0515('0x20')]);}})['catch'](function(_0x6d1f73){logger[_0x0515('0x1a')]('['+[_0x48fcf4[_0x0515('0xf')]()]+_0x0515('0x45'),util['inspect'](_0x6d1f73,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x46e6=['emit','trigger:browser:url','Token\x20token=','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','destcalleridnum','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','agentEmail','userEmail','length','userId','User\x20found:','adminEmail','toUpperCase','/api/lookup?q=','&f=','&entities=contact','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','message','Creating\x20new\x20task','/api/tasks','getString','Subjects','Descriptions','add','ticketId','user:%s'];(function(_0x2e223b,_0x354b69){var _0x50aabd=function(_0x2e1ad7){while(--_0x2e1ad7){_0x2e223b['push'](_0x2e223b['shift']());}};_0x50aabd(++_0x354b69);}(_0x46e6,0x15c));var _0x646e=function(_0x1876d5,_0x5769b5){_0x1876d5=_0x1876d5-0x0;var _0x323603=_0x46e6[_0x1876d5];return _0x323603;};'use strict';var _=require(_0x646e('0x0'));var rp=require(_0x646e('0x1'));var md5=require(_0x646e('0x2'));var util=require(_0x646e('0x3'));var moment=require(_0x646e('0x4'));var Promise=require(_0x646e('0x5'));var Redis=require(_0x646e('0x6'));var intUtil=require(_0x646e('0x7'));var config=require(_0x646e('0x8'));var logger=require(_0x646e('0x9'))('freshsales');config[_0x646e('0xa')]=_[_0x646e('0xb')](config['redis'],{'host':_0x646e('0xc'),'port':0x18eb});var io=require(_0x646e('0xd'))(new Redis(config[_0x646e('0xa')]));function getAdminId(_0xddbefe,_0x22fd6d,_0x15f420,_0x228a55){return new Promise(function(_0x445e00,_0x336c3c){var _0x125568=![];var _0x2cdd13={'method':_0x646e('0xe'),'uri':_0x228a55+_0x646e('0xf'),'json':!![]};_0x2cdd13[_0x646e('0x10')]=_0x15f420;logger[_0x646e('0x11')](_0x646e('0x12'));return rp(_0x2cdd13)[_0x646e('0x13')](function(_0x58cb69){if(_0x58cb69){var _0x1b3bb8=_0x58cb69[_0x646e('0x14')];var _0x9cfb69=null;for(_0x9cfb69=0x0;_0x9cfb69<_0x1b3bb8['length'];_0x9cfb69++){if(_0x1b3bb8[_0x9cfb69][_0x646e('0x15')]===_0xddbefe['adminEmail']){_0xddbefe[_0x646e('0x16')]=_0x1b3bb8[_0x9cfb69]['id'];_0x125568=!![];}}if(_0x125568){logger[_0x646e('0x11')](_0x646e('0x17'),_0xddbefe[_0x646e('0x16')]);_0x445e00(_0xddbefe);}else{_0x336c3c({'statusCode':0x194,'message':_0x646e('0x18')});}}else{_0x336c3c({'statusCode':0x194,'message':_0x646e('0x18')});}})[_0x646e('0x19')](function(_0xd49975){logger[_0x646e('0x1a')]('['+[_0x22fd6d['toUpperCase']()]+']',_0xd49975['message']);_0x336c3c(_0xd49975);});});}function getUser(_0x25c80f,_0x9ce7b1,_0x14886a){return function(_0xf518ad){return new Promise(function(_0x344b67,_0x23a9ff){var _0x371c09={'method':_0x646e('0xe'),'uri':_0x14886a+_0x646e('0xf'),'json':!![]};_0x371c09['headers']=_0x9ce7b1;logger[_0x646e('0x11')]('Getting\x20user\x20list');return rp(_0x371c09)[_0x646e('0x13')](function(_0x100160){if(_0x100160){var _0x48b2cf=_0x100160['users'];var _0x57fb61=![];var _0x4bd3b5=null;if(_0xf518ad[_0x646e('0x1b')]!==null){logger[_0x646e('0x11')]('Getting\x20user\x20with\x20email',_0xf518ad[_0x646e('0x1b')]);_0xf518ad[_0x646e('0x1c')]=_0xf518ad[_0x646e('0x1b')];for(_0x4bd3b5=0x0;_0x4bd3b5<_0x48b2cf[_0x646e('0x1d')];_0x4bd3b5++){if(_0x48b2cf[_0x4bd3b5][_0x646e('0x15')]===_0xf518ad[_0x646e('0x1b')]){_0x57fb61=!![];_0xf518ad[_0x646e('0x1e')]=_0x48b2cf[_0x4bd3b5]['id'];logger[_0x646e('0x11')](_0x646e('0x1f'),_0xf518ad[_0x646e('0x1e')]);}}}if(!_0x57fb61){logger[_0x646e('0x11')]('Admin\x20selected');_0xf518ad[_0x646e('0x1c')]=_0xf518ad[_0x646e('0x20')];_0xf518ad[_0x646e('0x1e')]=_0xf518ad[_0x646e('0x16')];_0x57fb61=!![];}if(_0x57fb61){_0x344b67(_0xf518ad);}else{_0x23a9ff({'statusCode':0x194,'message':_0x646e('0x18')});}}else{_0x23a9ff({'statusCode':0x194,'message':_0x646e('0x18')});}})[_0x646e('0x19')](function(_0x4e3c15){logger['error']('['+[_0x25c80f[_0x646e('0x21')]()]+']',_0x4e3c15['message']);_0x23a9ff(_0x4e3c15);});});};}function searchContact(_0x2f45e7,_0x7f559a,_0x32fc03,_0x57224b){return new Promise(function(_0x329e0a,_0x58d405){var _0x1335e0={'method':_0x646e('0xe'),'headers':_0x7f559a,'uri':_0x2f45e7+_0x646e('0x22')+_0x57224b+_0x646e('0x23')+_0x32fc03+_0x646e('0x24'),'json':!![]};rp(_0x1335e0)[_0x646e('0x13')](function(_0x283aa6){var _0x15245a=_['find'](_0x283aa6[_0x646e('0x25')]['contacts'],[_0x32fc03,_0x57224b]);_0x329e0a(_0x15245a);})[_0x646e('0x19')](function(_0x4af2c4){_0x58d405(_0x4af2c4);});});}function getEndUser(_0xabd12c,_0x2b3f42,_0x291d37){return function(_0xcfb808){return new Promise(function(_0x4210f4,_0x34e7c2){logger[_0x646e('0x11')](util[_0x646e('0x26')](_0x646e('0x27'),_0xcfb808[_0x646e('0x28')]));searchContact(_0x291d37,_0x2b3f42,'mobile_number',_0xcfb808[_0x646e('0x28')])[_0x646e('0x13')](function(_0x547b18){if(_0x547b18){_0xcfb808[_0x646e('0x29')]=_0x547b18['id'];logger['info'](_0x646e('0x2a'),_0xcfb808[_0x646e('0x29')]);return _0x4210f4(_0xcfb808);}searchContact(_0x291d37,_0x2b3f42,_0x646e('0x2b'),_0xcfb808[_0x646e('0x28')])[_0x646e('0x13')](function(_0x1c994f){if(_0x1c994f){_0xcfb808['endUserId']=_0x1c994f['id'];logger['info']('Contact\x20found\x20work_number:',_0xcfb808['endUserId']);return _0x4210f4(_0xcfb808);}createEndUser(_0xcfb808,_0xabd12c,_0x2b3f42,_0x291d37)[_0x646e('0x13')](function(_0x207ddd){logger[_0x646e('0x11')]('Contact\x20created:',_0x207ddd['endUserId']);return _0x4210f4(_0x207ddd);});});})[_0x646e('0x19')](function(_0x1ba78a){_0x34e7c2(_0x1ba78a);});});};}function createEndUser(_0x5a0d14,_0x33945a,_0x4ba65b,_0x3be578){return new Promise(function(_0x3661cb,_0x254b3e){var _0x2556d5=moment();var _0x4a4b1b={'method':_0x646e('0x2c'),'uri':_0x3be578+_0x646e('0x2d'),'body':{'contact':{'last_name':_0x5a0d14['contactNumber'],'work_number':_0x5a0d14[_0x646e('0x28')],'mobile_number':_0x5a0d14[_0x646e('0x28')],'owner_id':_0x5a0d14['userId'],'created_at':_0x2556d5['format'](_0x646e('0x2e'))}},'json':!![]};_0x4a4b1b[_0x646e('0x10')]=_0x4ba65b;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x4a4b1b)[_0x646e('0x13')](function(_0xf7ad1e){_0x5a0d14['endUserId']=_0xf7ad1e[_0x646e('0x2f')]['id'];_0x3661cb(_0x5a0d14);})[_0x646e('0x19')](function(_0x1e280d){logger[_0x646e('0x1a')]('['+[_0x33945a[_0x646e('0x21')]()]+']',_0x1e280d['message']);_0x254b3e(_0x1e280d[_0x646e('0x30')]);});});}function getTicket(_0x1c861b,_0x2ee63a,_0x292a2f,_0x474636,_0x231430){return function(_0x2e0ee6){logger['info'](_0x646e('0x31'));return new Promise(function(_0x40617a,_0x1ce8f0){var _0xa6d4a3=moment();var _0x39df04={'method':_0x646e('0x2c'),'uri':_0x292a2f+_0x646e('0x32'),'body':{'title':intUtil[_0x646e('0x33')](_0x474636[_0x646e('0x34')],_0x231430,'\x20'),'description':intUtil[_0x646e('0x33')](_0x474636[_0x646e('0x35')],_0x231430,'\x0a'),'owner_id':_0x2e0ee6['userId'],'creater_id':_0x2e0ee6['adminId'],'targetable_id':_0x2e0ee6[_0x646e('0x29')],'targetable_type':'Contact','created_at':_0xa6d4a3[_0x646e('0x26')](_0x646e('0x2e')),'due_date':_0xa6d4a3[_0x646e('0x36')](0x1e,'m')[_0x646e('0x26')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x39df04[_0x646e('0x10')]=_0x2ee63a;return rp(_0x39df04)[_0x646e('0x13')](function(_0x1428b6){_0x2e0ee6[_0x646e('0x37')]=_0x1428b6['task']['id'];logger[_0x646e('0x11')]('Task\x20created:',_0x2e0ee6[_0x646e('0x37')]);_0x40617a(_0x2e0ee6);})['catch'](function(_0x309eb1){logger[_0x646e('0x1a')]('['+[_0x1c861b['toUpperCase']()]+']',_0x309eb1[_0x646e('0x30')]);_0x1ce8f0(_0x309eb1[_0x646e('0x30')]);});});};}function emit(_0x327193,_0x506441,_0x34b609){var _0x141251={'uri':_0x327193+'/contacts/'+_0x34b609};io['to'](util[_0x646e('0x26')](_0x646e('0x38'),_0x506441))[_0x646e('0x39')](_0x646e('0x3a'),_0x141251);}exports['cs']=function(_0x18da40,_0x3f5329,_0x285b5c,_0x833e1e,_0x421637,_0x1199c9,_0x3097b7,_0x2a05d0){var _0x5aedfa={};var _0x523e89={'Authorization':_0x646e('0x3b')+_0x1199c9['apiKey']};_0x1199c9['remoteUri']=intUtil[_0x646e('0x3c')](_0x1199c9[_0x646e('0x3d')]);_0x1199c9[_0x646e('0x3e')]=intUtil[_0x646e('0x3c')](_0x1199c9['serverUrl']);var _0x4f0231=_0x1199c9['remoteUri'];_0x5aedfa[_0x646e('0x20')]=_0x1199c9[_0x646e('0x3f')];_0x5aedfa['contactNumber']=_0x2a05d0[_0x646e('0x40')]()==='outbound'?_0x3f5329[_0x646e('0x41')]:_0x3f5329[_0x646e('0x42')];_0x5aedfa[_0x646e('0x43')]=_0x2a05d0===_0x646e('0x44')||_0x2a05d0===_0x646e('0x45')?_0x646e('0x44'):_0x646e('0x46');if(_0x833e1e){_0x5aedfa['agentEmail']=_0x833e1e['email'];}var _0x4dd173=util[_0x646e('0x26')](_0x646e('0x47'),_0x1199c9[_0x646e('0x3e')],_0x3f5329['uniqueid'],md5(_0x3f5329[_0x646e('0x48')]));if(_0x421637&&_0x421637[_0x646e('0x49')]){logger[_0x646e('0x11')](_0x646e('0x4a'),_0x646e('0x4b'));_0x3f5329['recordingURL']=_0x4dd173;}else if(_0x3097b7&&_0x3097b7[_0x646e('0x4c')]&&_0x3097b7['recordingFormat']!=='none'){logger['info']('[OUTBOUND]',_0x646e('0x4b'));_0x3f5329['recordingURL']=_0x4dd173;}else{_0x3f5329[_0x646e('0x4d')]='';}return getAdminId(_0x5aedfa,_0x2a05d0,_0x523e89,_0x4f0231)[_0x646e('0x13')](getUser(_0x2a05d0,_0x523e89,_0x4f0231))[_0x646e('0x13')](getEndUser(_0x2a05d0,_0x523e89,_0x4f0231))[_0x646e('0x13')](getTicket(_0x2a05d0,_0x523e89,_0x4f0231,_0x285b5c,_0x3f5329))[_0x646e('0x13')](function(_0x5d6ac4){logger['info'](util[_0x646e('0x26')](_0x646e('0x4e'),_0x5d6ac4[_0x646e('0x37')]));if(_0x2a05d0!==_0x646e('0x45')){logger[_0x646e('0x11')]('['+[_0x2a05d0[_0x646e('0x21')]()]+']',_0x646e('0x4f'));emit(_0x4f0231,_0x833e1e['name'],_0x5d6ac4['endUserId']);}})[_0x646e('0x19')](function(_0x35e07f){logger['error']('['+[_0x2a05d0[_0x646e('0x21')]()]+_0x646e('0x50'),util['inspect'](_0x35e07f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 70e5599..65480f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7fa=['desk','freshsales','../../../../config/logger','error','format','%s\x20configuration\x20#%s\x20not\x20found','[EXEC]','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./servicenow','./freshsales','salesforce','vtiger','dynamics365','servicenow','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','log','unmanaged','zendesk','sugarcrm'];(function(_0xa0bc4b,_0x56b3bf){var _0x17da95=function(_0x2a29a6){while(--_0x2a29a6){_0xa0bc4b['push'](_0xa0bc4b['shift']());}};_0x17da95(++_0x56b3bf);}(_0xe7fa,0x15c));var _0xae7f=function(_0x11d164,_0x2e0030){_0x11d164=_0x11d164-0x0;var _0xf234bc=_0xe7fa[_0x11d164];return _0xf234bc;};'use strict';var _=require(_0xae7f('0x0'));var util=require(_0xae7f('0x1'));var zendesk=require(_0xae7f('0x2'));var salesforce=require(_0xae7f('0x3'));var sugarcrm=require(_0xae7f('0x4'));var freshdesk=require('./freshdesk');var zoho=require(_0xae7f('0x5'));var desk=require(_0xae7f('0x6'));var vtiger=require('./vtiger');var servicenow=require(_0xae7f('0x7'));var dynamics365=require('./dynamics365');var freshsales=require(_0xae7f('0x8'));var integrations=['zendesk',_0xae7f('0x9'),'sugarcrm','freshdesk','zoho','desk',_0xae7f('0xa'),_0xae7f('0xb'),'freshsales',_0xae7f('0xc')];exports['exec']=function(_0x49bfb7,_0x1e102f,_0x236c24,_0x368088,_0x4f45fa,_0x377dc4){if(_0x236c24){if(_[_0xae7f('0xd')](integrations,_0x49bfb7[_0xae7f('0xe')][_0xae7f('0xf')]())){try{var _0x2df91e=null;var _0x441779='';var _0x4e124e=_0x236c24[_0x49bfb7[_0xae7f('0xe')]['toLowerCase']()];if(_0x4e124e){var _0x13dd33=_0x4e124e[_0x49bfb7[_0xae7f('0x10')]];if(_0x13dd33){var _0x4aef6e=_[_0xae7f('0x11')](_0x13dd33[_0xae7f('0x12')],{'id':parseInt(_0x49bfb7[_0xae7f('0x13')],0xa)});if(_0x4aef6e){if(_0x368088){if(_0x4f45fa&&_0x1e102f[_0xae7f('0x14')]){_0x441779=_0xae7f('0x14');}else if(_0x1e102f[_0xae7f('0x15')]){_0x441779='outbound';}else{console[_0xae7f('0x16')]('EVENT\x20UNKNOWN',_0x1e102f);}}else{_0x441779=_0xae7f('0x17');}switch(_0x49bfb7['data1'][_0xae7f('0xf')]()){case _0xae7f('0x18'):zendesk[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case'salesforce':salesforce[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case _0xae7f('0x19'):sugarcrm[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case'freshdesk':freshdesk[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case'zoho':zoho[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case _0xae7f('0x1a'):desk[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case'vtiger':vtiger[_0x441779](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4);break;case _0xae7f('0x1b'):freshsales['cs'](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4,_0x441779);break;case _0xae7f('0xc'):servicenow['cs'](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4,_0x441779);break;case _0xae7f('0xb'):dynamics365['cs'](_0x49bfb7,_0x1e102f,_0x4aef6e,_0x368088,_0x4f45fa,_0x13dd33,_0x377dc4,_0x441779);break;default:console[_0xae7f('0x16')]('unknown\x20integration');}}else{_0x2df91e=require(_0xae7f('0x1c'))(_0x49bfb7[_0xae7f('0xe')]['toLowerCase']());_0x2df91e[_0xae7f('0x1d')]('[EXEC]',util[_0xae7f('0x1e')](_0xae7f('0x1f'),_0x49bfb7[_0xae7f('0xe')][_0xae7f('0xf')](),_0x49bfb7['data3']));}}else{_0x2df91e=require('../../../../config/logger')(_0x49bfb7['data1']['toLowerCase']());_0x2df91e[_0xae7f('0x1d')](_0xae7f('0x20'),util['format'](_0xae7f('0x21'),_0x49bfb7[_0xae7f('0xe')]['toLowerCase'](),_0x49bfb7[_0xae7f('0x10')]));}}else{}}catch(_0x2d4b14){console[_0xae7f('0x1d')](_0x2d4b14);}}}};
\ No newline at end of file
+var _0x760b=['exec','data1','toLowerCase','data2','find','data3','queue','outbound','EVENT\x20UNKNOWN','unmanaged','freshdesk','dynamics365','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','desk','vtiger','freshsales','servicenow'];(function(_0x2534d4,_0x25d808){var _0x317c9d=function(_0x25625a){while(--_0x25625a){_0x2534d4['push'](_0x2534d4['shift']());}};_0x317c9d(++_0x25d808);}(_0x760b,0x1dc));var _0xb760=function(_0x20027a,_0x31efb9){_0x20027a=_0x20027a-0x0;var _0x229a19=_0x760b[_0x20027a];return _0x229a19;};'use strict';var _=require(_0xb760('0x0'));var util=require(_0xb760('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xb760('0x2'));var sugarcrm=require(_0xb760('0x3'));var freshdesk=require(_0xb760('0x4'));var zoho=require(_0xb760('0x5'));var desk=require(_0xb760('0x6'));var vtiger=require(_0xb760('0x7'));var servicenow=require('./servicenow');var dynamics365=require(_0xb760('0x8'));var freshsales=require(_0xb760('0x9'));var integrations=[_0xb760('0xa'),_0xb760('0xb'),_0xb760('0xc'),'freshdesk',_0xb760('0xd'),_0xb760('0xe'),_0xb760('0xf'),'dynamics365',_0xb760('0x10'),_0xb760('0x11')];exports[_0xb760('0x12')]=function(_0x518eff,_0x4d577e,_0x3a8c47,_0x3d229a,_0x3d5fdb,_0x39ee6f){if(_0x3a8c47){if(_['includes'](integrations,_0x518eff[_0xb760('0x13')][_0xb760('0x14')]())){try{var _0x58477e=null;var _0x8216b8='';var _0x119e38=_0x3a8c47[_0x518eff[_0xb760('0x13')]['toLowerCase']()];if(_0x119e38){var _0x156dcd=_0x119e38[_0x518eff[_0xb760('0x15')]];if(_0x156dcd){var _0x149c3d=_[_0xb760('0x16')](_0x156dcd['Configurations'],{'id':parseInt(_0x518eff[_0xb760('0x17')],0xa)});if(_0x149c3d){if(_0x3d229a){if(_0x3d5fdb&&_0x4d577e[_0xb760('0x18')]){_0x8216b8=_0xb760('0x18');}else if(_0x4d577e['routeId']){_0x8216b8=_0xb760('0x19');}else{console['log'](_0xb760('0x1a'),_0x4d577e);}}else{_0x8216b8=_0xb760('0x1b');}switch(_0x518eff['data1'][_0xb760('0x14')]()){case _0xb760('0xa'):zendesk[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case _0xb760('0xb'):salesforce[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case _0xb760('0xc'):sugarcrm[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case _0xb760('0x1c'):freshdesk[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case _0xb760('0xd'):zoho[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case _0xb760('0xe'):desk[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case'vtiger':vtiger[_0x8216b8](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f);break;case'freshsales':freshsales['cs'](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f,_0x8216b8);break;case _0xb760('0x11'):servicenow['cs'](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f,_0x8216b8);break;case _0xb760('0x1d'):dynamics365['cs'](_0x518eff,_0x4d577e,_0x149c3d,_0x3d229a,_0x3d5fdb,_0x156dcd,_0x39ee6f,_0x8216b8);break;default:console[_0xb760('0x1e')](_0xb760('0x1f'));}}else{_0x58477e=require(_0xb760('0x20'))(_0x518eff['data1'][_0xb760('0x14')]());_0x58477e[_0xb760('0x21')](_0xb760('0x22'),util[_0xb760('0x23')](_0xb760('0x24'),_0x518eff[_0xb760('0x13')]['toLowerCase'](),_0x518eff[_0xb760('0x17')]));}}else{_0x58477e=require(_0xb760('0x20'))(_0x518eff[_0xb760('0x13')]['toLowerCase']());_0x58477e['error']('[EXEC]',util[_0xb760('0x23')](_0xb760('0x25'),_0x518eff[_0xb760('0x13')][_0xb760('0x14')](),_0x518eff[_0xb760('0x15')]));}}else{}}catch(_0xd1bf54){console[_0xb760('0x21')](_0xd1bf54);}}}};
\ No newline at end of file
index 1eec8b1..f4fa85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1698=['[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','ioredis','../../../../config/logger','salesforce','defaults','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','utc','IsReminderSet','IsRecurrence','endUserType','contact','WhoId','ticketType','account','AccountId','lead','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','execute','then','Email','info','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','resolve','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','merge','Contact','length','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Account','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','No\x20Company','upperFirst','forEach','includes','string','idField','variable','variableName','toString','customVariable','Variable','name','password','concat','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','[QUEUE]','outbound','stripTrailingSlash','none'];(function(_0x5c42c7,_0x11b1fe){var _0x2fe11f=function(_0x3c9ac6){while(--_0x3c9ac6){_0x5c42c7['push'](_0x5c42c7['shift']());}};_0x2fe11f(++_0x11b1fe);}(_0x1698,0x107));var _0x8169=function(_0x44d9ab,_0x76bc69){_0x44d9ab=_0x44d9ab-0x0;var _0x31485e=_0x1698[_0x44d9ab];return _0x31485e;};'use strict';var _=require(_0x8169('0x0'));var rp=require(_0x8169('0x1'));var moment=require(_0x8169('0x2'));var BPromise=require(_0x8169('0x3'));var md5=require(_0x8169('0x4'));var jsforce=require('jsforce');var util=require('util');var Redis=require(_0x8169('0x5'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x8169('0x6'))(_0x8169('0x7'));config['redis']=_[_0x8169('0x8')](config[_0x8169('0x9')],{'host':_0x8169('0xa'),'port':0x18eb});var io=require(_0x8169('0xb'))(new Redis(config[_0x8169('0x9')]));function emit(_0x12969c,_0x51681e,_0x309252){io['to'](_0x12969c)[_0x8169('0xc')](_0x51681e,_0x309252);}function getTicket(_0x2d5eb0,_0x23907a,_0x2d802c,_0xc23866,_0x269af2,_0x1e7aaf,_0x487357,_0x586769){var _0x577cfc=Object[_0x8169('0xd')]({},{'OwnerId':_0x23907a['id'],'Subject':intUtil[_0x8169('0xe')](_0xc23866[_0x8169('0xf')],_0x269af2,'\x20'),'Description':intUtil[_0x8169('0xe')](_0xc23866['Descriptions'],_0x269af2,'\x0a')},getCustomFields(_0x1e7aaf,_0x269af2));if(_0x2d802c){if(_0xc23866['ticketType']==='Task'){_0x577cfc['ActivityDate']=moment[_0x8169('0x10')]();_0x577cfc[_0x8169('0x11')]=![];_0x577cfc[_0x8169('0x12')]=![];if(_0x2d802c[_0x8169('0x13')]===_0x8169('0x14')||_0x2d802c[_0x8169('0x13')]==='lead'){_0x577cfc[_0x8169('0x15')]=_0x2d802c['id'];}else if(_0x2d802c[_0x8169('0x13')]==='account'){_0x577cfc['WhatId']=_0x2d802c['id'];}}else if(_0xc23866[_0x8169('0x16')]==='Case'){if(_0x2d802c[_0x8169('0x13')]===_0x8169('0x14')){_0x577cfc['ContactId']=_0x2d802c['id'];}else if(_0x2d802c[_0x8169('0x13')]===_0x8169('0x17')){_0x577cfc[_0x8169('0x18')]=_0x2d802c['id'];}else if(_0x2d802c[_0x8169('0x13')]===_0x8169('0x19')&&_0xc23866['leadId']){_0x577cfc[_0xc23866[_0x8169('0x1a')]]=_0x2d802c['id'];}else{logger['info'](_0x8169('0x1b'));}}}return _0x487357[_0x8169('0x1c')](_0xc23866[_0x8169('0x16')])[_0x8169('0x1d')](_0x577cfc);}function getUser(_0xd79142,_0x410bdd,_0x4753e4){if(!_[_0x8169('0x1e')](_0x410bdd)&&intUtil[_0x8169('0x1f')](_0x410bdd)){var _0x32ac70={'Email':_0x410bdd};var _0x43d17c={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4753e4['sobject']('User')[_0x8169('0x20')](_0x32ac70,_0x43d17c)[_0x8169('0x21')]()[_0x8169('0x22')](function(_0x1a0415){if(_0x1a0415['length']){var _0x3bf3cb=_[_0x8169('0x20')](_0x1a0415,function(_0x39089a){return _0x39089a[_0x8169('0x23')]===_0x410bdd;});if(_0x3bf3cb){logger[_0x8169('0x24')](_0x8169('0x25'),_0x410bdd);return BPromise['resolve']({'id':_0x3bf3cb['Id'],'name':_0x3bf3cb[_0x8169('0x26')]});}}else{logger[_0x8169('0x24')](_0x8169('0x27'),_0x410bdd);return _0x4753e4['identity']()[_0x8169('0x22')](function(_0x5995f0){return BPromise[_0x8169('0x28')]({'id':_0x5995f0[_0x8169('0x29')],'name':_0x5995f0[_0x8169('0x2a')]});});}});}else{logger[_0x8169('0x24')](_0x8169('0x27'),_0x410bdd);return _0x4753e4[_0x8169('0x2b')]()[_0x8169('0x22')](function(_0x18b620){return BPromise[_0x8169('0x28')]({'id':_0x18b620['user_id'],'name':_0x18b620[_0x8169('0x2a')]});});}}function getEndUser(_0x4b6635,_0x16daec,_0x2c36af,_0x311f9c,_0x36433c){var _0x4eed07={'$or':{'Phone':_0x311f9c}};var _0x1bd23e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x8169('0x28')]()[_0x8169('0x22')](function(){logger[_0x8169('0x24')](_0x8169('0x2c'),_0x311f9c,_0x16daec[_0x8169('0x2d')]);switch(_0x16daec[_0x8169('0x2d')]){case'contact_lead':var _0x5a0375=_[_0x8169('0x2e')](_0x4eed07);if(_0x16daec[_0x8169('0x2f')]){var _0x3d2109={};_0x3d2109[_0x16daec['additionalSearchContact']]=_0x311f9c;_[_0x8169('0x30')](_0x5a0375['$or'],_0x3d2109);}return _0x36433c[_0x8169('0x1c')](_0x8169('0x31'))['find'](_0x5a0375,_0x1bd23e)['execute']()[_0x8169('0x22')](function(_0x1f998c){if(_0x1f998c&&_0x1f998c[_0x8169('0x32')]){return _0x1f998c;}else{var _0x23296d=_[_0x8169('0x2e')](_0x4eed07);if(_0x16daec['additionalSearchLead']){var _0x5565a1={};_0x5565a1[_0x16daec[_0x8169('0x33')]]=_0x311f9c;_[_0x8169('0x30')](_0x23296d[_0x8169('0x34')],_0x5565a1);}return _0x36433c[_0x8169('0x1c')](_0x8169('0x35'))[_0x8169('0x20')](_0x23296d,_0x1bd23e);}});case _0x8169('0x36'):var _0x290003=_['cloneDeep'](_0x4eed07);if(_0x16daec[_0x8169('0x37')]){var _0x3d2109={};_0x3d2109[_0x16daec[_0x8169('0x37')]]=_0x311f9c;_['merge'](_0x290003[_0x8169('0x34')],_0x3d2109);}return _0x36433c[_0x8169('0x1c')](_0x8169('0x38'))[_0x8169('0x20')](_0x290003,_0x1bd23e)[_0x8169('0x21')]()[_0x8169('0x22')](function(_0x190d61){if(_0x190d61&&_0x190d61['length']){return _0x190d61;}else{var _0x1f41cb=_['cloneDeep'](_0x4eed07);if(_0x16daec[_0x8169('0x2f')]){var _0x566700={};_0x566700[_0x16daec[_0x8169('0x2f')]]=_0x311f9c;_['merge'](_0x1f41cb[_0x8169('0x34')],_0x566700);}return _0x36433c[_0x8169('0x1c')]('Contact')[_0x8169('0x20')](_0x1f41cb,_0x1bd23e)[_0x8169('0x22')](function(_0x1760d3){if(_0x1760d3&&_0x1760d3[_0x8169('0x32')]){return _0x1760d3;}else{var _0x1bb05a=_[_0x8169('0x2e')](_0x4eed07);if(_0x16daec[_0x8169('0x33')]){var _0x15d632={};_0x15d632[_0x16daec[_0x8169('0x33')]]=_0x311f9c;_[_0x8169('0x30')](_0x1bb05a['$or'],_0x15d632);}return _0x36433c['sobject'](_0x8169('0x35'))[_0x8169('0x20')](_0x1bb05a,_0x1bd23e);}});}});case _0x8169('0x14'):var _0x5a0375=_['cloneDeep'](_0x4eed07);if(_0x16daec[_0x8169('0x2f')]){var _0x3d2109={};_0x3d2109[_0x16daec[_0x8169('0x2f')]]=_0x311f9c;_[_0x8169('0x30')](_0x5a0375['$or'],_0x3d2109);}return _0x36433c['sobject'](_0x8169('0x31'))[_0x8169('0x20')](_0x5a0375,_0x1bd23e)[_0x8169('0x21')]();case _0x8169('0x19'):var _0x14d725=_['cloneDeep'](_0x4eed07);if(_0x16daec[_0x8169('0x33')]){var _0x3d2109={};_0x3d2109[_0x16daec[_0x8169('0x33')]]=_0x311f9c;_['merge'](_0x14d725['$or'],_0x3d2109);}return _0x36433c[_0x8169('0x1c')]('Lead')[_0x8169('0x20')](_0x14d725,_0x1bd23e);case'account':var _0x290003=_[_0x8169('0x2e')](_0x4eed07);if(_0x16daec[_0x8169('0x37')]){var _0x3d2109={};_0x3d2109[_0x16daec[_0x8169('0x37')]]=_0x311f9c;_[_0x8169('0x30')](_0x290003[_0x8169('0x34')],_0x3d2109);}return _0x36433c['sobject']('Account')[_0x8169('0x20')](_0x290003,_0x1bd23e);default:return null;}})[_0x8169('0x22')](function(_0x70bb66){if(_0x70bb66&&_0x70bb66[_0x8169('0x32')]){var _0x152d09=_['first'](_0x70bb66);if(_0x152d09){return BPromise['resolve']({'id':_0x152d09['Id'],'name':_0x152d09[_0x8169('0x26')],'phone':_0x152d09['Phone'],'endUserType':_0x152d09['attributes'][_0x8169('0x39')][_0x8169('0x3a')]()});}}})[_0x8169('0x22')](function(_0x473331){if(_0x473331){logger[_0x8169('0x24')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x473331['endUserType'],_0x311f9c);return BPromise[_0x8169('0x28')](_0x473331);}else{logger[_0x8169('0x24')](_0x8169('0x3b'),_0x311f9c);var _0x22b667={'Phone':_0x311f9c};if(_0x16daec[_0x8169('0x3c')]){if(_0x16daec[_0x8169('0x3c')]==='contact'){logger[_0x8169('0x24')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x311f9c,_0x16daec[_0x8169('0x3c')]);_0x22b667[_0x8169('0x3d')]=_0x2c36af!==_0x8169('0x3e')?_0x2c36af:util[_0x8169('0x3f')](_0x8169('0x40'),_0x311f9c);}else if(_0x16daec[_0x8169('0x3c')]===_0x8169('0x19')){logger[_0x8169('0x24')](_0x8169('0x41'),_0x311f9c,_0x16daec[_0x8169('0x3c')]);_0x22b667['LastName']=_0x2c36af!==_0x8169('0x3e')?_0x2c36af:util[_0x8169('0x3f')](_0x8169('0x40'),_0x311f9c);_0x22b667['Company']=_0x8169('0x42');}else if(_0x16daec['moduleCreate']===_0x8169('0x17')){logger['info'](_0x8169('0x41'),_0x311f9c,_0x16daec[_0x8169('0x3c')]);_0x22b667[_0x8169('0x26')]=_0x2c36af!==_0x8169('0x3e')?_0x2c36af:util[_0x8169('0x3f')](_0x8169('0x40'),_0x311f9c);}else{return null;}}return _0x36433c[_0x8169('0x1c')](_[_0x8169('0x43')](_0x16daec['moduleCreate']))[_0x8169('0x1d')](_0x22b667)['then'](function(_0x419dc1){return BPromise[_0x8169('0x28')]({'id':_0x419dc1['id'],'endUserType':_0x16daec[_0x8169('0x3c')]});});}});}function getCustomFields(_0x1ef6fc,_0x56acf4){var _0x23943a={};if(_0x1ef6fc[_0x8169('0x32')]>0x0){_[_0x8169('0x44')](_0x1ef6fc,function(_0x2bae3b){if(_[_0x8169('0x45')]([_0x8169('0x46'),'picklist'],_0x2bae3b[_0x8169('0x39')])&&_0x2bae3b[_0x8169('0x47')]){_0x23943a[_0x2bae3b[_0x8169('0x47')]]=_0x2bae3b['content']['toString']();}else if(_0x2bae3b[_0x8169('0x39')]===_0x8169('0x48')&&_0x2bae3b['variableName']&&_0x2bae3b['idField']){_0x56acf4[_0x2bae3b['variableName']]&&(_0x23943a[_0x2bae3b[_0x8169('0x47')]]=_0x56acf4[_0x2bae3b[_0x8169('0x49')]][_0x8169('0x4a')]());}else if(_0x2bae3b[_0x8169('0x39')]===_0x8169('0x4b')&&_0x2bae3b[_0x8169('0x4c')]&&_0x2bae3b[_0x8169('0x4c')][_0x8169('0x4d')]&&_0x2bae3b[_0x8169('0x47')]){_0x56acf4[_0x2bae3b[_0x8169('0x4c')][_0x8169('0x4d')][_0x8169('0x3a')]()]&&(_0x23943a[_0x2bae3b[_0x8169('0x47')]]=_0x56acf4[_0x2bae3b['Variable']['name'][_0x8169('0x3a')]()][_0x8169('0x4a')]());}});}return _0x23943a;}function getConnection(_0x56ad04){var _0x152621=_0x56ad04[_0x8169('0x4e')][_0x8169('0x4f')](_0x56ad04[_0x8169('0x50')]);var _0x3bece5=new jsforce['Connection']({'oauth2':{'loginUrl':_0x56ad04[_0x8169('0x51')]||_0x8169('0x52'),'clientId':_0x56ad04[_0x8169('0x53')],'clientSecret':_0x56ad04[_0x8169('0x54')]}});return _0x3bece5[_0x8169('0x55')](_0x56ad04[_0x8169('0x56')],_0x152621)[_0x8169('0x22')](function(){logger[_0x8169('0x24')](_0x8169('0x57'));return _0x3bece5;});}exports[_0x8169('0x58')]=function(_0x770509,_0x355b70,_0x5f464e,_0x24ca3d,_0x4a17ac,_0x504d93){var _0x1e7f20,_0x43529a,_0x328857,_0x3de1bc;_0x504d93['serverUrl']=intUtil['stripTrailingSlash'](_0x504d93[_0x8169('0x59')]);_0x504d93['remoteUri']=intUtil['stripTrailingSlash'](_0x504d93[_0x8169('0x51')]);if(_0x4a17ac&&_0x4a17ac[_0x8169('0x5a')]){logger[_0x8169('0x24')]('[QUEUE]','Recording\x20is\x20enabled!');_0x355b70['recordingURL']=util[_0x8169('0x3f')](_0x8169('0x5b'),_0x504d93[_0x8169('0x59')],_0x355b70[_0x8169('0x5c')],md5(_0x355b70['uniqueid']));}else{_0x355b70[_0x8169('0x5d')]='';}return getConnection(_0x504d93)[_0x8169('0x22')](function(_0x1f7e28){_0x3de1bc=_0x1f7e28;return getUser(_0x504d93,_0x24ca3d[_0x8169('0x5e')],_0x3de1bc);})[_0x8169('0x22')](function(_0x17ff1f){_0x1e7f20=_0x17ff1f;return getEndUser(_0x504d93,_0x5f464e,_0x355b70[_0x8169('0x5f')],_0x355b70[_0x8169('0x60')],_0x3de1bc);})[_0x8169('0x22')](function(_0x221c05){_0x43529a=_0x221c05;return getTicket(_0x504d93,_0x1e7f20,_0x43529a,_0x5f464e,_0x355b70,_0x5f464e[_0x8169('0x61')],_0x3de1bc,'queue');})[_0x8169('0x22')](function(_0x205de0){_0x328857=_0x205de0;logger[_0x8169('0x24')](_0x8169('0x62'),_0x328857['id']);logger['info'](_0x8169('0x63'),_0x328857['id'],_0x24ca3d['name'],_0x504d93[_0x8169('0x39')]);switch(_0x504d93[_0x8169('0x39')]){case _0x8169('0x64'):emit(util[_0x8169('0x3f')](_0x8169('0x65'),_0x24ca3d['name']),'trigger:salesforce:display',{'recordId':_0x328857['id']});break;case _0x8169('0x66'):emit(util[_0x8169('0x3f')](_0x8169('0x65'),_0x24ca3d['name']),_0x8169('0x67'),{'uri':util[_0x8169('0x3f')](_0x8169('0x68'),_0x3de1bc[_0x8169('0x69')],_0x328857['id'])});break;default:logger[_0x8169('0x6a')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x8169('0x6b')](function(_0x4ef15e){logger[_0x8169('0x6a')](_0x8169('0x6c'),_0x4ef15e);});};exports[_0x8169('0x6d')]=function(_0x519d65,_0x1ccce6,_0x3552c3,_0x5a5498,_0x4cbedd,_0x293706,_0x194048){var _0x1c9125,_0x19f172,_0x2db215,_0x582b4e;_0x293706['serverUrl']=intUtil['stripTrailingSlash'](_0x293706[_0x8169('0x59')]);_0x293706[_0x8169('0x51')]=intUtil[_0x8169('0x6e')](_0x293706[_0x8169('0x51')]);if(_0x194048&&_0x194048['recordingFormat']&&_0x194048['recordingFormat']!==_0x8169('0x6f')){logger[_0x8169('0x24')](_0x8169('0x70'),_0x8169('0x71'));_0x1ccce6[_0x8169('0x5d')]=util[_0x8169('0x3f')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x293706['serverUrl'],_0x1ccce6[_0x8169('0x5c')],md5(_0x1ccce6[_0x8169('0x5c')]));}return getConnection(_0x293706)[_0x8169('0x22')](function(_0x62e64d){_0x582b4e=_0x62e64d;return getUser(_0x293706,_0x5a5498[_0x8169('0x5e')],_0x582b4e);})[_0x8169('0x22')](function(_0x31b867){_0x1c9125=_0x31b867;return getEndUser(_0x293706,_0x3552c3,_0x1ccce6[_0x8169('0x72')],_0x1ccce6[_0x8169('0x73')],_0x582b4e);})[_0x8169('0x22')](function(_0x910080){_0x19f172=_0x910080;return getTicket(_0x293706,_0x1c9125,_0x19f172,_0x3552c3,_0x1ccce6,_0x3552c3[_0x8169('0x61')],_0x582b4e,_0x8169('0x6d'));})[_0x8169('0x22')](function(_0x8b0789){_0x2db215=_0x8b0789;logger[_0x8169('0x24')](_0x8169('0x74'),_0x2db215['id']);logger[_0x8169('0x24')](_0x8169('0x75'),_0x2db215['id'],_0x5a5498[_0x8169('0x4d')],_0x293706[_0x8169('0x39')]);switch(_0x293706[_0x8169('0x39')]){case _0x8169('0x64'):emit(util[_0x8169('0x3f')]('user:%s',_0x5a5498[_0x8169('0x4d')]),_0x8169('0x76'),{'recordId':_0x2db215['id']});break;case'newTab':emit(util[_0x8169('0x3f')](_0x8169('0x65'),_0x5a5498[_0x8169('0x4d')]),'trigger:browser:url',{'uri':util['format'](_0x8169('0x68'),_0x582b4e[_0x8169('0x69')],_0x2db215['id'])});break;default:logger[_0x8169('0x6a')](_0x8169('0x70'),_0x8169('0x77'));}})[_0x8169('0x6b')](function(_0x2cf530){logger[_0x8169('0x6a')](_0x8169('0x70'),_0x2cf530);});};exports[_0x8169('0x78')]=function(_0x5b424f,_0x2ef551,_0x196182,_0x1a833e,_0x15b5c,_0x5e312d){var _0x5c6f71,_0x29c7f7,_0x1e35e6,_0x711f02;_0x5e312d[_0x8169('0x59')]=intUtil[_0x8169('0x6e')](_0x5e312d[_0x8169('0x59')]);_0x5e312d[_0x8169('0x51')]=intUtil[_0x8169('0x6e')](_0x5e312d[_0x8169('0x51')]);if(_0x15b5c&&_0x15b5c['monitor_format']){logger[_0x8169('0x24')]('['+_0x2ef551[_0x8169('0x79')][_0x8169('0x7a')]()+']',_0x8169('0x71'));_0x2ef551[_0x8169('0x5d')]=util[_0x8169('0x3f')](_0x8169('0x5b'),_0x5e312d['serverUrl'],_0x2ef551[_0x8169('0x5c')],md5(_0x2ef551[_0x8169('0x5c')]));}else{_0x2ef551[_0x8169('0x5d')]='';}return getConnection(_0x5e312d)[_0x8169('0x22')](function(_0x5ad9b8){_0x711f02=_0x5ad9b8;if(!_[_0x8169('0x1e')](_0x1a833e)){return getUser(_0x5e312d,_0x1a833e[_0x8169('0x4d')],_0x711f02);}else{return getUser(_0x5e312d,null,_0x711f02);}})[_0x8169('0x22')](function(_0x2318b4){_0x5c6f71=_0x2318b4;return getEndUser(_0x5e312d,_0x196182,_0x2ef551[_0x8169('0x5f')],_0x2ef551['calleridnum'],_0x711f02);})[_0x8169('0x22')](function(_0x484391){_0x29c7f7=_0x484391;return getTicket(_0x5e312d,_0x5c6f71,_0x29c7f7,_0x196182,_0x2ef551,_0x196182[_0x8169('0x61')],_0x711f02);})[_0x8169('0x22')](function(_0xc273b7){_0x1e35e6=_0xc273b7;logger[_0x8169('0x24')]('['+_0x2ef551['lastevent'][_0x8169('0x7a')]()+_0x8169('0x7b'),_0x1e35e6['id']);logger[_0x8169('0x24')]('['+_0x2ef551[_0x8169('0x79')][_0x8169('0x7a')]()+_0x8169('0x7c'),_0x5e312d['type']);})[_0x8169('0x6b')](function(_0x263cb8){logger[_0x8169('0x6a')]('['+_0x2ef551[_0x8169('0x79')][_0x8169('0x7a')]()+']',_0x263cb8);});};
\ No newline at end of file
+var _0xbe11=['Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Account','first','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.','format','Caller\x20-\x20%s','LastName','Company','No\x20Company','<unknown>','upperFirst','forEach','includes','picklist','idField','content','toString','variable','variableName','Variable','name','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','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:salesforce:display','calleridnum','lastevent',']\x20Ticket\x20%s\x20created.','toUpperCase','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhatId','Case','ContactId','account','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','validateEmail','sobject','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name'];(function(_0x1e4b85,_0x5d9aed){var _0x21401e=function(_0x1d5112){while(--_0x1d5112){_0x1e4b85['push'](_0x1e4b85['shift']());}};_0x21401e(++_0x5d9aed);}(_0xbe11,0x156));var _0x1be1=function(_0x1d8e61,_0x5838de){_0x1d8e61=_0x1d8e61-0x0;var _0xfeee45=_0xbe11[_0x1d8e61];return _0xfeee45;};'use strict';var _=require('lodash');var rp=require('request-promise');var moment=require(_0x1be1('0x0'));var BPromise=require(_0x1be1('0x1'));var md5=require(_0x1be1('0x2'));var jsforce=require(_0x1be1('0x3'));var util=require(_0x1be1('0x4'));var Redis=require(_0x1be1('0x5'));var intUtil=require(_0x1be1('0x6'));var config=require(_0x1be1('0x7'));var logger=require(_0x1be1('0x8'))('salesforce');config[_0x1be1('0x9')]=_['defaults'](config[_0x1be1('0x9')],{'host':_0x1be1('0xa'),'port':0x18eb});var io=require(_0x1be1('0xb'))(new Redis(config[_0x1be1('0x9')]));function emit(_0x70dcd3,_0x2b0b45,_0x21413a){io['to'](_0x70dcd3)[_0x1be1('0xc')](_0x2b0b45,_0x21413a);}function getTicket(_0x444d23,_0x5e0196,_0x168aa2,_0x1eeadd,_0x17d4d3,_0x37cd0d,_0x396846,_0x2e5422){var _0x29302b=Object[_0x1be1('0xd')]({},{'OwnerId':_0x5e0196['id'],'Subject':intUtil[_0x1be1('0xe')](_0x1eeadd[_0x1be1('0xf')],_0x17d4d3,'\x20'),'Description':intUtil[_0x1be1('0xe')](_0x1eeadd[_0x1be1('0x10')],_0x17d4d3,'\x0a')},getCustomFields(_0x37cd0d,_0x17d4d3));if(_0x168aa2){if(_0x1eeadd[_0x1be1('0x11')]===_0x1be1('0x12')){_0x29302b[_0x1be1('0x13')]=moment['utc']();_0x29302b[_0x1be1('0x14')]=![];_0x29302b[_0x1be1('0x15')]=![];if(_0x168aa2[_0x1be1('0x16')]===_0x1be1('0x17')||_0x168aa2[_0x1be1('0x16')]===_0x1be1('0x18')){_0x29302b['WhoId']=_0x168aa2['id'];}else if(_0x168aa2[_0x1be1('0x16')]==='account'){_0x29302b[_0x1be1('0x19')]=_0x168aa2['id'];}}else if(_0x1eeadd[_0x1be1('0x11')]===_0x1be1('0x1a')){if(_0x168aa2[_0x1be1('0x16')]===_0x1be1('0x17')){_0x29302b[_0x1be1('0x1b')]=_0x168aa2['id'];}else if(_0x168aa2[_0x1be1('0x16')]===_0x1be1('0x1c')){_0x29302b['AccountId']=_0x168aa2['id'];}else if(_0x168aa2[_0x1be1('0x16')]==='lead'&&_0x1eeadd[_0x1be1('0x1d')]){_0x29302b[_0x1eeadd[_0x1be1('0x1d')]]=_0x168aa2['id'];}else{logger[_0x1be1('0x1e')](_0x1be1('0x1f'));}}}return _0x396846['sobject'](_0x1eeadd[_0x1be1('0x11')])[_0x1be1('0x20')](_0x29302b);}function getUser(_0x506255,_0x1623a6,_0x55239f){if(!_[_0x1be1('0x21')](_0x1623a6)&&intUtil[_0x1be1('0x22')](_0x1623a6)){var _0x1a394c={'Email':_0x1623a6};var _0x5ecc82={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x55239f[_0x1be1('0x23')](_0x1be1('0x24'))[_0x1be1('0x25')](_0x1a394c,_0x5ecc82)[_0x1be1('0x26')]()[_0x1be1('0x27')](function(_0x3b2058){if(_0x3b2058[_0x1be1('0x28')]){var _0x20d07a=_['find'](_0x3b2058,function(_0x32b074){return _0x32b074[_0x1be1('0x29')]===_0x1623a6;});if(_0x20d07a){logger[_0x1be1('0x1e')](_0x1be1('0x2a'),_0x1623a6);return BPromise[_0x1be1('0x2b')]({'id':_0x20d07a['Id'],'name':_0x20d07a[_0x1be1('0x2c')]});}}else{logger['info'](_0x1be1('0x2d'),_0x1623a6);return _0x55239f['identity']()[_0x1be1('0x27')](function(_0x889dc2){return BPromise[_0x1be1('0x2b')]({'id':_0x889dc2[_0x1be1('0x2e')],'name':_0x889dc2[_0x1be1('0x2f')]});});}});}else{logger['info'](_0x1be1('0x2d'),_0x1623a6);return _0x55239f[_0x1be1('0x30')]()[_0x1be1('0x27')](function(_0x2ce5dc){return BPromise[_0x1be1('0x2b')]({'id':_0x2ce5dc[_0x1be1('0x2e')],'name':_0x2ce5dc[_0x1be1('0x2f')]});});}}function getEndUser(_0x203cd2,_0x4f0fc1,_0x12b66d,_0x4d98ea,_0x86c7a8){var _0x50a30e={'$or':{'Phone':_0x4d98ea}};var _0x28454b={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x1be1('0x27')](function(){logger[_0x1be1('0x1e')](_0x1be1('0x31'),_0x4d98ea,_0x4f0fc1[_0x1be1('0x32')]);switch(_0x4f0fc1[_0x1be1('0x32')]){case _0x1be1('0x33'):var _0x496a02=_[_0x1be1('0x34')](_0x50a30e);if(_0x4f0fc1['additionalSearchContact']){var _0x484ef6={};_0x484ef6[_0x4f0fc1[_0x1be1('0x35')]]=_0x4d98ea;_[_0x1be1('0x36')](_0x496a02['$or'],_0x484ef6);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x37'))[_0x1be1('0x25')](_0x496a02,_0x28454b)[_0x1be1('0x26')]()['then'](function(_0x546eef){if(_0x546eef&&_0x546eef['length']){return _0x546eef;}else{var _0x5c3531=_['cloneDeep'](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x38')]){var _0xc5c36a={};_0xc5c36a[_0x4f0fc1['additionalSearchLead']]=_0x4d98ea;_[_0x1be1('0x36')](_0x5c3531[_0x1be1('0x39')],_0xc5c36a);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x3a'))[_0x1be1('0x25')](_0x5c3531,_0x28454b);}});case _0x1be1('0x3b'):var _0x51a73a=_[_0x1be1('0x34')](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x3c')]){var _0x484ef6={};_0x484ef6[_0x4f0fc1[_0x1be1('0x3c')]]=_0x4d98ea;_[_0x1be1('0x36')](_0x51a73a[_0x1be1('0x39')],_0x484ef6);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x3d'))[_0x1be1('0x25')](_0x51a73a,_0x28454b)[_0x1be1('0x26')]()[_0x1be1('0x27')](function(_0x559415){if(_0x559415&&_0x559415['length']){return _0x559415;}else{var _0x4b36af=_['cloneDeep'](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x35')]){var _0x2051a7={};_0x2051a7[_0x4f0fc1[_0x1be1('0x35')]]=_0x4d98ea;_[_0x1be1('0x36')](_0x4b36af[_0x1be1('0x39')],_0x2051a7);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x37'))[_0x1be1('0x25')](_0x4b36af,_0x28454b)[_0x1be1('0x27')](function(_0x1bf07d){if(_0x1bf07d&&_0x1bf07d['length']){return _0x1bf07d;}else{var _0x30ecbd=_['cloneDeep'](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x38')]){var _0x2a70ed={};_0x2a70ed[_0x4f0fc1[_0x1be1('0x38')]]=_0x4d98ea;_[_0x1be1('0x36')](_0x30ecbd['$or'],_0x2a70ed);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x3a'))['find'](_0x30ecbd,_0x28454b);}});}});case _0x1be1('0x17'):var _0x496a02=_['cloneDeep'](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x35')]){var _0x484ef6={};_0x484ef6[_0x4f0fc1[_0x1be1('0x35')]]=_0x4d98ea;_[_0x1be1('0x36')](_0x496a02['$or'],_0x484ef6);}return _0x86c7a8[_0x1be1('0x23')](_0x1be1('0x37'))[_0x1be1('0x25')](_0x496a02,_0x28454b)['execute']();case _0x1be1('0x18'):var _0x20d214=_['cloneDeep'](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x38')]){var _0x484ef6={};_0x484ef6[_0x4f0fc1[_0x1be1('0x38')]]=_0x4d98ea;_['merge'](_0x20d214[_0x1be1('0x39')],_0x484ef6);}return _0x86c7a8[_0x1be1('0x23')]('Lead')[_0x1be1('0x25')](_0x20d214,_0x28454b);case'account':var _0x51a73a=_[_0x1be1('0x34')](_0x50a30e);if(_0x4f0fc1[_0x1be1('0x3c')]){var _0x484ef6={};_0x484ef6[_0x4f0fc1[_0x1be1('0x3c')]]=_0x4d98ea;_['merge'](_0x51a73a[_0x1be1('0x39')],_0x484ef6);}return _0x86c7a8['sobject']('Account')['find'](_0x51a73a,_0x28454b);default:return null;}})[_0x1be1('0x27')](function(_0x4bf621){if(_0x4bf621&&_0x4bf621['length']){var _0x3a23ce=_[_0x1be1('0x3e')](_0x4bf621);if(_0x3a23ce){return BPromise[_0x1be1('0x2b')]({'id':_0x3a23ce['Id'],'name':_0x3a23ce[_0x1be1('0x2c')],'phone':_0x3a23ce['Phone'],'endUserType':_0x3a23ce[_0x1be1('0x3f')][_0x1be1('0x40')][_0x1be1('0x41')]()});}}})[_0x1be1('0x27')](function(_0x189d5d){if(_0x189d5d){logger[_0x1be1('0x1e')](_0x1be1('0x42'),_0x189d5d[_0x1be1('0x16')],_0x4d98ea);return BPromise[_0x1be1('0x2b')](_0x189d5d);}else{logger['info'](_0x1be1('0x43'),_0x4d98ea);var _0x5607a6={'Phone':_0x4d98ea};if(_0x4f0fc1[_0x1be1('0x44')]){if(_0x4f0fc1['moduleCreate']==='contact'){logger[_0x1be1('0x1e')](_0x1be1('0x45'),_0x4d98ea,_0x4f0fc1[_0x1be1('0x44')]);_0x5607a6['LastName']=_0x12b66d!=='<unknown>'?_0x12b66d:util[_0x1be1('0x46')](_0x1be1('0x47'),_0x4d98ea);}else if(_0x4f0fc1[_0x1be1('0x44')]==='lead'){logger[_0x1be1('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4d98ea,_0x4f0fc1[_0x1be1('0x44')]);_0x5607a6[_0x1be1('0x48')]=_0x12b66d!=='<unknown>'?_0x12b66d:util[_0x1be1('0x46')](_0x1be1('0x47'),_0x4d98ea);_0x5607a6[_0x1be1('0x49')]=_0x1be1('0x4a');}else if(_0x4f0fc1[_0x1be1('0x44')]==='account'){logger[_0x1be1('0x1e')](_0x1be1('0x45'),_0x4d98ea,_0x4f0fc1[_0x1be1('0x44')]);_0x5607a6['Name']=_0x12b66d!==_0x1be1('0x4b')?_0x12b66d:util[_0x1be1('0x46')](_0x1be1('0x47'),_0x4d98ea);}else{return null;}}return _0x86c7a8[_0x1be1('0x23')](_[_0x1be1('0x4c')](_0x4f0fc1[_0x1be1('0x44')]))[_0x1be1('0x20')](_0x5607a6)[_0x1be1('0x27')](function(_0x18c771){return BPromise[_0x1be1('0x2b')]({'id':_0x18c771['id'],'endUserType':_0x4f0fc1[_0x1be1('0x44')]});});}});}function getCustomFields(_0x37be71,_0x2d818d){var _0x44540e={};if(_0x37be71[_0x1be1('0x28')]>0x0){_[_0x1be1('0x4d')](_0x37be71,function(_0x340aec){if(_[_0x1be1('0x4e')](['string',_0x1be1('0x4f')],_0x340aec['type'])&&_0x340aec[_0x1be1('0x50')]){_0x44540e[_0x340aec[_0x1be1('0x50')]]=_0x340aec[_0x1be1('0x51')][_0x1be1('0x52')]();}else if(_0x340aec['type']===_0x1be1('0x53')&&_0x340aec[_0x1be1('0x54')]&&_0x340aec['idField']){_0x2d818d[_0x340aec[_0x1be1('0x54')]]&&(_0x44540e[_0x340aec[_0x1be1('0x50')]]=_0x2d818d[_0x340aec[_0x1be1('0x54')]][_0x1be1('0x52')]());}else if(_0x340aec[_0x1be1('0x40')]==='customVariable'&&_0x340aec[_0x1be1('0x55')]&&_0x340aec[_0x1be1('0x55')][_0x1be1('0x56')]&&_0x340aec['idField']){_0x2d818d[_0x340aec[_0x1be1('0x55')][_0x1be1('0x56')][_0x1be1('0x41')]()]&&(_0x44540e[_0x340aec[_0x1be1('0x50')]]=_0x2d818d[_0x340aec[_0x1be1('0x55')][_0x1be1('0x56')][_0x1be1('0x41')]()][_0x1be1('0x52')]());}});}return _0x44540e;}function getConnection(_0x433c80){var _0x588b27=_0x433c80['password']['concat'](_0x433c80[_0x1be1('0x57')]);var _0x1f8473=new jsforce['Connection']({'oauth2':{'loginUrl':_0x433c80[_0x1be1('0x58')]||_0x1be1('0x59'),'clientId':_0x433c80[_0x1be1('0x5a')],'clientSecret':_0x433c80[_0x1be1('0x5b')]}});return _0x1f8473['login'](_0x433c80[_0x1be1('0x5c')],_0x588b27)[_0x1be1('0x27')](function(){logger[_0x1be1('0x1e')](_0x1be1('0x5d'));return _0x1f8473;});}exports[_0x1be1('0x5e')]=function(_0x2d2c53,_0x3ed9d5,_0xfb0ffb,_0x348d3f,_0x50d9d2,_0x3168de){var _0x8987ac,_0x563261,_0x540e1c,_0xe00c4f;_0x3168de[_0x1be1('0x5f')]=intUtil[_0x1be1('0x60')](_0x3168de[_0x1be1('0x5f')]);_0x3168de[_0x1be1('0x58')]=intUtil['stripTrailingSlash'](_0x3168de[_0x1be1('0x58')]);if(_0x50d9d2&&_0x50d9d2[_0x1be1('0x61')]){logger['info'](_0x1be1('0x62'),_0x1be1('0x63'));_0x3ed9d5['recordingURL']=util[_0x1be1('0x46')](_0x1be1('0x64'),_0x3168de[_0x1be1('0x5f')],_0x3ed9d5[_0x1be1('0x65')],md5(_0x3ed9d5['uniqueid']));}else{_0x3ed9d5[_0x1be1('0x66')]='';}return getConnection(_0x3168de)[_0x1be1('0x27')](function(_0x36ec2f){_0xe00c4f=_0x36ec2f;return getUser(_0x3168de,_0x348d3f[_0x1be1('0x67')],_0xe00c4f);})['then'](function(_0x32921e){_0x8987ac=_0x32921e;return getEndUser(_0x3168de,_0xfb0ffb,_0x3ed9d5[_0x1be1('0x68')],_0x3ed9d5['calleridnum'],_0xe00c4f);})['then'](function(_0x4d22b6){_0x563261=_0x4d22b6;return getTicket(_0x3168de,_0x8987ac,_0x563261,_0xfb0ffb,_0x3ed9d5,_0xfb0ffb[_0x1be1('0x69')],_0xe00c4f,_0x1be1('0x5e'));})[_0x1be1('0x27')](function(_0x4a1b83){_0x540e1c=_0x4a1b83;logger[_0x1be1('0x1e')](_0x1be1('0x6a'),_0x540e1c['id']);logger['info'](_0x1be1('0x6b'),_0x540e1c['id'],_0x348d3f[_0x1be1('0x56')],_0x3168de[_0x1be1('0x40')]);switch(_0x3168de[_0x1be1('0x40')]){case _0x1be1('0x6c'):emit(util[_0x1be1('0x46')]('user:%s',_0x348d3f[_0x1be1('0x56')]),'trigger:salesforce:display',{'recordId':_0x540e1c['id']});break;case _0x1be1('0x6d'):emit(util[_0x1be1('0x46')](_0x1be1('0x6e'),_0x348d3f[_0x1be1('0x56')]),_0x1be1('0x6f'),{'uri':util['format'](_0x1be1('0x70'),_0xe00c4f[_0x1be1('0x71')],_0x540e1c['id'])});break;default:logger[_0x1be1('0x72')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x1be1('0x73')](function(_0x1831db){logger[_0x1be1('0x72')](_0x1be1('0x62'),_0x1831db);});};exports[_0x1be1('0x74')]=function(_0x537719,_0x14fb94,_0x5ee3c9,_0x5a08eb,_0x215654,_0x1bfcc7,_0x1d68fd){var _0x28a237,_0xf44b1c,_0x2779de,_0x1156bf;_0x1bfcc7[_0x1be1('0x5f')]=intUtil[_0x1be1('0x60')](_0x1bfcc7[_0x1be1('0x5f')]);_0x1bfcc7['remoteUri']=intUtil[_0x1be1('0x60')](_0x1bfcc7[_0x1be1('0x58')]);if(_0x1d68fd&&_0x1d68fd['recordingFormat']&&_0x1d68fd[_0x1be1('0x75')]!==_0x1be1('0x76')){logger[_0x1be1('0x1e')](_0x1be1('0x77'),_0x1be1('0x63'));_0x14fb94['recordingURL']=util[_0x1be1('0x46')](_0x1be1('0x64'),_0x1bfcc7[_0x1be1('0x5f')],_0x14fb94['uniqueid'],md5(_0x14fb94[_0x1be1('0x65')]));}return getConnection(_0x1bfcc7)[_0x1be1('0x27')](function(_0x15e828){_0x1156bf=_0x15e828;return getUser(_0x1bfcc7,_0x5a08eb[_0x1be1('0x67')],_0x1156bf);})['then'](function(_0xd869be){_0x28a237=_0xd869be;return getEndUser(_0x1bfcc7,_0x5ee3c9,_0x14fb94[_0x1be1('0x78')],_0x14fb94[_0x1be1('0x79')],_0x1156bf);})[_0x1be1('0x27')](function(_0x58bc7b){_0xf44b1c=_0x58bc7b;return getTicket(_0x1bfcc7,_0x28a237,_0xf44b1c,_0x5ee3c9,_0x14fb94,_0x5ee3c9[_0x1be1('0x69')],_0x1156bf,_0x1be1('0x74'));})[_0x1be1('0x27')](function(_0x1e52a5){_0x2779de=_0x1e52a5;logger[_0x1be1('0x1e')](_0x1be1('0x7a'),_0x2779de['id']);logger[_0x1be1('0x1e')](_0x1be1('0x7b'),_0x2779de['id'],_0x5a08eb[_0x1be1('0x56')],_0x1bfcc7[_0x1be1('0x40')]);switch(_0x1bfcc7[_0x1be1('0x40')]){case'integrationTab':emit(util['format']('user:%s',_0x5a08eb[_0x1be1('0x56')]),_0x1be1('0x7c'),{'recordId':_0x2779de['id']});break;case _0x1be1('0x6d'):emit(util[_0x1be1('0x46')](_0x1be1('0x6e'),_0x5a08eb[_0x1be1('0x56')]),'trigger:browser:url',{'uri':util[_0x1be1('0x46')]('%s/%s/e',_0x1156bf['instanceUrl'],_0x2779de['id'])});break;default:logger[_0x1be1('0x72')]('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x1be1('0x73')](function(_0x583c88){logger[_0x1be1('0x72')]('[OUTBOUND]',_0x583c88);});};exports['unmanaged']=function(_0x117251,_0x37b4f0,_0x55f6df,_0x7bb0d0,_0x2bb829,_0x137fc2){var _0x58b61d,_0x4734c3,_0x80032e,_0x4a858d;_0x137fc2['serverUrl']=intUtil[_0x1be1('0x60')](_0x137fc2[_0x1be1('0x5f')]);_0x137fc2[_0x1be1('0x58')]=intUtil[_0x1be1('0x60')](_0x137fc2[_0x1be1('0x58')]);if(_0x2bb829&&_0x2bb829[_0x1be1('0x61')]){logger[_0x1be1('0x1e')]('['+_0x37b4f0['lastevent']['toUpperCase']()+']',_0x1be1('0x63'));_0x37b4f0[_0x1be1('0x66')]=util['format'](_0x1be1('0x64'),_0x137fc2['serverUrl'],_0x37b4f0[_0x1be1('0x65')],md5(_0x37b4f0[_0x1be1('0x65')]));}else{_0x37b4f0[_0x1be1('0x66')]='';}return getConnection(_0x137fc2)[_0x1be1('0x27')](function(_0x3a5b1c){_0x4a858d=_0x3a5b1c;if(!_[_0x1be1('0x21')](_0x7bb0d0)){return getUser(_0x137fc2,_0x7bb0d0[_0x1be1('0x56')],_0x4a858d);}else{return getUser(_0x137fc2,null,_0x4a858d);}})[_0x1be1('0x27')](function(_0x26ec92){_0x58b61d=_0x26ec92;return getEndUser(_0x137fc2,_0x55f6df,_0x37b4f0[_0x1be1('0x68')],_0x37b4f0[_0x1be1('0x7d')],_0x4a858d);})[_0x1be1('0x27')](function(_0x3bd24d){_0x4734c3=_0x3bd24d;return getTicket(_0x137fc2,_0x58b61d,_0x4734c3,_0x55f6df,_0x37b4f0,_0x55f6df[_0x1be1('0x69')],_0x4a858d);})[_0x1be1('0x27')](function(_0xde9d58){_0x80032e=_0xde9d58;logger[_0x1be1('0x1e')]('['+_0x37b4f0[_0x1be1('0x7e')]['toUpperCase']()+_0x1be1('0x7f'),_0x80032e['id']);logger[_0x1be1('0x1e')]('['+_0x37b4f0['lastevent'][_0x1be1('0x80')]()+']\x20Integration\x20account\x20type\x20%s.',_0x137fc2['type']);})[_0x1be1('0x73')](function(_0x6bc167){logger[_0x1be1('0x72')]('['+_0x37b4f0[_0x1be1('0x7e')][_0x1be1('0x80')]()+']',_0x6bc167);});};
\ No newline at end of file
index 8a2d06f..35000e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x988d=['label_entry','Incident','Incident\x20-\x20','ticketNumber','forEach','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','map','name','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','email','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','servicenow','defaults','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminId',']\x20using\x20admin\x20profile','adminEmail','endUserNumber','user','true','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','includes','string','picklist','type','customField','nameField','toString','idField','toLowerCase','content','variable','variableName','customVariable','Variable',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','POST','label','?sysparm_query=name%3D'];(function(_0x2904df,_0x5e20cb){var _0x6f6920=function(_0x52ed7d){while(--_0x52ed7d){_0x2904df['push'](_0x2904df['shift']());}};_0x6f6920(++_0x5e20cb);}(_0x988d,0x177));var _0xd988=function(_0x189aa7,_0x3dbf9d){_0x189aa7=_0x189aa7-0x0;var _0x10a0c8=_0x988d[_0x189aa7];return _0x10a0c8;};'use strict';var _=require(_0xd988('0x0'));var Promise=require(_0xd988('0x1'));var rp=require(_0xd988('0x2'));var util=require(_0xd988('0x3'));var md5=require(_0xd988('0x4'));var Redis=require(_0xd988('0x5'));var intUtil=require(_0xd988('0x6'));var config=require(_0xd988('0x7'));var logger=require('../../../../config/logger')(_0xd988('0x8'));config['redis']=_[_0xd988('0x9')](config[_0xd988('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0xd988('0xb'))(new Redis(config[_0xd988('0xa')]));function getAdminUser(_0x99d030,_0x2bd81d,_0x1b6129,_0x7b38b5,_0x349b63,_0x2a28f4){return new Promise(function(_0x23b443,_0xde53c0){var _0x4f4b53={'method':_0xd988('0xc'),'uri':_0x7b38b5+_0xd988('0xd')+'&'+_0x349b63+'&'+_0x2a28f4,'auth':_0x2bd81d,'json':!![]};return rp(_0x4f4b53)[_0xd988('0xe')](function(_0x2df9a6){if(_0x2df9a6[_0xd988('0xf')][_0xd988('0x10')]>0x0){_0x1b6129['adminId']=_0x2df9a6[_0xd988('0xf')][0x0][_0xd988('0x11')];}logger[_0xd988('0x12')]('['+[_0x99d030['toUpperCase']()]+_0xd988('0x13'),_0x1b6129);_0x23b443(_0x1b6129);})[_0xd988('0x14')](function(_0x41f64a){logger[_0xd988('0x15')]('['+[_0x99d030['toUpperCase']()]+']',_0x41f64a[_0xd988('0x16')]);_0xde53c0(_0x41f64a['message']);});});}function getUser(_0x27de8b,_0x467cc6,_0x27afe2,_0xe3c9e1,_0x4a9bf6){return function(_0x10efc2){logger[_0xd988('0x12')]('['+[_0x27de8b[_0xd988('0x17')]()]+_0xd988('0x18'),_0x10efc2);return new Promise(function(_0x36207c,_0x55b6f8){if(intUtil[_0xd988('0x19')](_0x10efc2[_0xd988('0x1a')])){var _0x2dd316={'method':_0xd988('0xc'),'uri':_0x27afe2+_0xd988('0x1b')+_0x10efc2['userEmail']+'&'+_0xe3c9e1+'&'+_0x4a9bf6,'auth':_0x467cc6,'json':!![]};logger[_0xd988('0x12')]('['+[_0x27de8b[_0xd988('0x17')]()]+_0xd988('0x1c'),_0x2dd316);return rp(_0x2dd316)['then'](function(_0x7f057b){logger[_0xd988('0x12')]('['+[_0x27de8b['toUpperCase']()]+_0xd988('0x1d'),_0x7f057b);if(_0x7f057b[_0xd988('0xf')][_0xd988('0x10')]>0x0&&String(_0x7f057b['result'][0x0][_0xd988('0x1e')])==='true'){_0x10efc2[_0xd988('0x1f')]=_0x7f057b[_0xd988('0xf')][0x0][_0xd988('0x11')];}else{_0x10efc2[_0xd988('0x1f')]=_0x10efc2[_0xd988('0x20')];_0x10efc2[_0xd988('0x1a')]=_0x10efc2['adminEmail'];}logger[_0xd988('0x12')]('['+[_0x27de8b[_0xd988('0x17')]()]+'],\x20getUser\x20crm',_0x10efc2);_0x36207c(_0x10efc2);})[_0xd988('0x14')](function(_0x131c90){logger['error']('['+[_0x27de8b['toUpperCase']()]+']',_0x131c90['message']);_0x55b6f8(_0x131c90[_0xd988('0x16')]);});}else{logger[_0xd988('0x12')]('['+[_0x27de8b[_0xd988('0x17')]()]+_0xd988('0x21'));_0x10efc2['userId']=_0x10efc2[_0xd988('0x20')];_0x10efc2['userEmail']=_0x10efc2[_0xd988('0x22')];_0x36207c(_0x10efc2);}});};}function createEndUser(_0x2dea5f,_0x5ec965,_0x4e47fd,_0x3b9f11,_0x316205){logger[_0xd988('0x12')]('['+[_0x2dea5f[_0xd988('0x17')]()]+'],\x20createEndUser\x20input\x20crm',_0x4e47fd);return new Promise(function(_0x416aa9,_0x594a0a){var _0xa16bd4={'method':'POST','uri':_0x3b9f11+'sys_user?'+_0x316205,'body':{'user_name':_0x4e47fd[_0xd988('0x23')],'roles':_0xd988('0x24'),'first_name':_0x4e47fd['endUserNumber'],'active':_0xd988('0x25'),'date_format':_0xd988('0x26'),'phone':_0x4e47fd['endUserNumber']},'auth':_0x5ec965,'json':!![]};return rp(_0xa16bd4)[_0xd988('0xe')](function(_0x48ba39){logger[_0xd988('0x12')]('['+[_0x2dea5f[_0xd988('0x17')]()]+_0xd988('0x27'),_0x48ba39[_0xd988('0xf')]);_0x4e47fd[_0xd988('0x28')]=_0x48ba39[_0xd988('0xf')][_0xd988('0x11')];_0x416aa9(_0x4e47fd);})[_0xd988('0x14')](function(_0x226621){logger[_0xd988('0x15')]('['+[_0x2dea5f['toUpperCase']()]+']',_0x226621[_0xd988('0x16')]);_0x594a0a(_0x226621[_0xd988('0x16')]);});});}function getEndUser(_0x42b59e,_0x534812,_0xe6e258,_0x3385a5,_0x975fa3){return function(_0x1279dc){logger['info']('['+[_0x42b59e['toUpperCase']()]+_0xd988('0x29'),_0x1279dc);return new Promise(function(_0x24b656,_0x46254f){var _0x58cb25={'method':_0xd988('0xc'),'uri':_0xe6e258+_0xd988('0x2a')+_0x1279dc[_0xd988('0x23')]+'&'+_0x3385a5+'&'+_0x975fa3,'auth':_0x534812,'json':!![]};return rp(_0x58cb25)[_0xd988('0xe')](function(_0x3f98b0){if(_0x3f98b0[_0xd988('0xf')]['length']>0x0){_0x1279dc[_0xd988('0x28')]=_0x3f98b0[_0xd988('0xf')][0x0]['sys_id'];logger[_0xd988('0x12')]('['+[_0x42b59e[_0xd988('0x17')]()]+_0xd988('0x2b'),_0x1279dc);_0x24b656(_0x1279dc);}else{return createEndUser(_0x42b59e,_0x534812,_0x1279dc,_0xe6e258,_0x3385a5)[_0xd988('0xe')](function(_0x451a5f){logger['info']('['+[_0x42b59e['toUpperCase']()]+'],\x20createEndUser\x20crm',_0x451a5f);_0x24b656(_0x451a5f);});}})[_0xd988('0x14')](function(_0x1ca0d4){logger[_0xd988('0x15')]('['+[_0x42b59e[_0xd988('0x17')]()]+']',_0x1ca0d4[_0xd988('0x16')]);_0x46254f(_0x1ca0d4[_0xd988('0x16')]);});});};}function getCustomFields(_0x1d6db7,_0x44185c){var _0x752092={};if(_0x1d6db7[_0xd988('0x10')]>0x0){_['forEach'](_0x1d6db7,function(_0x34a902){if(_[_0xd988('0x2c')]([_0xd988('0x2d'),_0xd988('0x2e')],_0x34a902[_0xd988('0x2f')])&&_0x34a902['nameField']&&!_0x34a902[_0xd988('0x30')]){_0x752092[_0x34a902[_0xd988('0x31')]['toLowerCase']()]=_0x34a902['content'][_0xd988('0x32')]();}else if(_[_0xd988('0x2c')](['string',_0xd988('0x2e')],_0x34a902[_0xd988('0x2f')])&&_0x34a902['idField']&&_0x34a902[_0xd988('0x30')]){_0x752092[_0x34a902[_0xd988('0x33')][_0xd988('0x34')]()]=_0x34a902[_0xd988('0x35')][_0xd988('0x32')]();}else if(_0x34a902['type']===_0xd988('0x36')&&_0x34a902[_0xd988('0x37')]&&_0x34a902[_0xd988('0x33')]&&_0x34a902['customField']){_0x752092[_0x34a902[_0xd988('0x33')][_0xd988('0x34')]()]=_0x44185c[_0x34a902[_0xd988('0x37')]][_0xd988('0x32')]();}else if(_0x34a902[_0xd988('0x2f')]===_0xd988('0x38')&&_0x34a902[_0xd988('0x39')]&&_0x34a902['Variable']['name']&&_0x34a902[_0xd988('0x33')]&&_0x34a902[_0xd988('0x30')]){_0x752092[_0x34a902[_0xd988('0x33')][_0xd988('0x34')]()]=_0x44185c[_0x34a902[_0xd988('0x39')]['name']['toLowerCase']()][_0xd988('0x32')]();}});}return _0x752092;}function getTicket(_0x470199,_0x436c24,_0x130aff,_0xc45bad,_0x466bfb,_0x32abd7){return function(_0x1ac541){logger[_0xd988('0x12')]('['+[_0x470199[_0xd988('0x17')]()]+_0xd988('0x3a'),_0x1ac541);return new Promise(function(_0x1310bb,_0x504aa2){var _0x352a26=_0x470199[_0xd988('0x34')]()===_0xd988('0x3b')?_0x1ac541['userId']:_0x1ac541[_0xd988('0x28')];var _0xeac941={'method':'POST','uri':_0x130aff+_0xd988('0x3c')+'?'+_0x32abd7,'body':Object[_0xd988('0x3d')]({},{'active':'true','caller_id':_0x352a26,'assigned_to':_0x1ac541[_0xd988('0x1f')],'short_description':intUtil[_0xd988('0x3e')](_0xc45bad[_0xd988('0x3f')],_0x466bfb,'\x20'),'description':intUtil[_0xd988('0x3e')](_0xc45bad[_0xd988('0x40')],_0x466bfb,'\x0a')},getCustomFields(_0xc45bad[_0xd988('0x41')],_0x466bfb)),'auth':_0x436c24,'json':!![]};return rp(_0xeac941)[_0xd988('0xe')](function(_0x3cd774){logger[_0xd988('0x12')]('['+[_0x470199[_0xd988('0x17')]()]+_0xd988('0x42'),_0x3cd774[_0xd988('0xf')]);_0x1ac541[_0xd988('0x43')]=_0x3cd774[_0xd988('0xf')][_0xd988('0x11')];_0x1ac541['ticketNumber']=_0x3cd774[_0xd988('0xf')][_0xd988('0x44')];logger['info']('['+[_0x470199[_0xd988('0x17')]()]+_0xd988('0x45'),_0x1ac541);_0x1310bb(_0x1ac541);})[_0xd988('0x14')](function(_0x48436f){logger[_0xd988('0x15')]('['+[_0x470199[_0xd988('0x17')]()]+']',_0x48436f[_0xd988('0x16')]);_0x504aa2(_0x48436f['message']);});});};}function createRemoteTag(_0x165701,_0x45dcf7,_0x44c37a,_0x4e46f2){return new Promise(function(_0x59d65a,_0x4508c){var _0x9ab8a2={'method':_0xd988('0x46'),'uri':_0x44c37a+'label'+'?'+_0x4e46f2,'body':{'short_description':_0x165701,'global':!![],'active':!![],'name':_0x165701},'auth':_0x45dcf7,'json':!![]};return rp(_0x9ab8a2)['then'](function(_0x418ebe){var _0x47d268=_0x418ebe['result'][_0xd988('0x11')];_0x59d65a(_0x47d268);});});}function getRemoteTag(_0x498a6f,_0x31bc4b,_0x34048d,_0x511f1c,_0x4ea2a8){return new Promise(function(_0x46a136,_0x188b97){var _0x14d8e1={'method':_0xd988('0xc'),'uri':_0x34048d+_0xd988('0x47')+_0xd988('0x48')+_0x498a6f+'&'+_0x511f1c,'auth':_0x31bc4b,'json':!![]};return rp(_0x14d8e1)[_0xd988('0xe')](function(_0x189bbb){if(_0x189bbb[_0xd988('0xf')][_0xd988('0x10')]>0x0){var _0x1ca4cd=_0x189bbb[_0xd988('0xf')][0x0]['sys_id'];_0x46a136(_0x1ca4cd);}else{return createRemoteTag(_0x498a6f,_0x31bc4b,_0x34048d,_0x511f1c)[_0xd988('0xe')](function(_0x1a0585){_0x46a136(_0x1a0585);});}});});}function assignTagToIncident(_0x30648f,_0x53e21d,_0x52da80,_0x12409f,_0x2c5e8e){return new Promise(function(_0xa82f46,_0xb82c1e){var _0x121918={'method':_0xd988('0x46'),'uri':_0x52da80+_0xd988('0x49')+'?'+_0x2c5e8e,'body':{'label':_0x30648f,'table':'incident','id_type':_0xd988('0x4a'),'table_key':_0x12409f[_0xd988('0x43')],'title':_0xd988('0x4b')+_0x12409f[_0xd988('0x4c')],'id_display':_0x12409f[_0xd988('0x4c')]},'auth':_0x53e21d,'json':!![]};return rp(_0x121918)['then'](function(_0x2d5b4b){_0xa82f46();})[_0xd988('0x14')](function(){_0xa82f46();});});}function manageTags(_0x34adbf,_0x1e24df,_0x47a470,_0x56bed5,_0x5b2d07,_0xc1382f,_0x3e7958){return new Promise(function(_0x2e0471,_0x44e88c){var _0x1d2dbe=[];_0x1e24df[_0xd988('0x4d')](function(_0x350661){_0x1d2dbe['push'](getRemoteTag(_0x350661,_0x47a470,_0x56bed5,_0xc1382f,_0x3e7958));});return Promise[_0xd988('0x4e')](_0x1d2dbe)[_0xd988('0xe')](function(_0x5b953b){if(_0x5b953b[_0xd988('0x10')]){logger[_0xd988('0x12')]('['+[_0x34adbf[_0xd988('0x17')]()]+_0xd988('0x4f'),_0x5b953b);var _0x49469a=[];_0x5b953b[_0xd988('0x4d')](function(_0x37e251){_0x49469a[_0xd988('0x50')](assignTagToIncident(_0x37e251,_0x47a470,_0x56bed5,_0x5b2d07,_0xc1382f));});return Promise[_0xd988('0x4e')](_0x49469a)[_0xd988('0xe')](function(){_0x2e0471();})[_0xd988('0x14')](function(){_0x2e0471();});}else{_0x2e0471();}});});}function getTags(_0x56f976,_0x3a86de,_0x5146af,_0x430922,_0x472bf4,_0xbf536a){return function(_0x2b31da){return new Promise(function(_0xc115a1,_0x26bda6){var _0x29fe41=[];var _0xf88a1e=_0x430922['Tags'];if(_0xf88a1e&&_0xf88a1e['length']>0x0){_0x29fe41=_[_0xd988('0x51')](_0xf88a1e,_0xd988('0x52'));}if(_0x29fe41[_0xd988('0x10')]>0x0){return manageTags(_0x56f976,_0x29fe41,_0x3a86de,_0x5146af,_0x2b31da,_0x472bf4,_0xbf536a)[_0xd988('0xe')](function(){_0xc115a1(_0x2b31da);});}else{_0xc115a1(_0x2b31da);}});};}function emit(_0x8c34d2,_0x4ab1b1,_0x4df18c){var _0x3f39aa=_0xd988('0x53')+_0xd988('0x54')+_0xd988('0x55')+_0xd988('0x56');var _0x1d3eb2={'uri':_0x8c34d2+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4df18c+_0x3f39aa};io['to'](util[_0xd988('0x57')](_0xd988('0x58'),_0x4ab1b1))[_0xd988('0x59')]('trigger:browser:url',_0x1d3eb2);}exports['cs']=function(_0x53fa9e,_0x26883d,_0x3f7c79,_0x5c667a,_0x57818b,_0x4b4d76,_0x309f95,_0x3058fc){var _0x109e67={};var _0xacaa0d={'user':_0x4b4d76[_0xd988('0x5a')],'pass':_0x4b4d76[_0xd988('0x5b')]};var _0x5e2750=_0xd988('0x5c');var _0x37f57=_0xd988('0x5d');_0x4b4d76[_0xd988('0x5e')]=intUtil[_0xd988('0x5f')](_0x4b4d76[_0xd988('0x5e')]);_0x4b4d76[_0xd988('0x60')]=intUtil[_0xd988('0x5f')](_0x4b4d76[_0xd988('0x60')]);var _0x5c0127=util[_0xd988('0x57')]('%s/api/now/table/',_0x4b4d76[_0xd988('0x5e')]);_0x109e67[_0xd988('0x1a')]=!_['isNil'](_0x5c667a)?_0x5c667a[_0xd988('0x61')]:null;_0x109e67['adminEmail']=_0x4b4d76[_0xd988('0x61')];_0x109e67[_0xd988('0x23')]=_0x3058fc[_0xd988('0x34')]()===_0xd988('0x3b')?_0x26883d[_0xd988('0x62')]:_0x26883d['calleridnum'];_0x109e67[_0xd988('0x63')]=_0x3058fc===_0xd988('0x64')||_0x3058fc===_0xd988('0x65')?'queue':_0xd988('0x3b');var _0x545a36=util['format'](_0xd988('0x66'),_0x4b4d76[_0xd988('0x60')],_0x26883d['uniqueid'],md5(_0x26883d['uniqueid']));if(_0x57818b&&_0x57818b[_0xd988('0x67')]){logger[_0xd988('0x12')](_0xd988('0x68'),_0xd988('0x69'));_0x26883d[_0xd988('0x6a')]=_0x545a36;}else if(_0x309f95&&_0x309f95[_0xd988('0x6b')]&&_0x309f95[_0xd988('0x6b')]!=='none'){logger[_0xd988('0x12')](_0xd988('0x6c'),_0xd988('0x69'));_0x26883d[_0xd988('0x6a')]=_0x545a36;}else{_0x26883d['recordingURL']='';}return getAdminUser(_0x3058fc,_0xacaa0d,_0x109e67,_0x5c0127,_0x37f57,_0x5e2750)['then'](getUser(_0x3058fc,_0xacaa0d,_0x5c0127,_0x37f57,_0x5e2750))['then'](getEndUser(_0x3058fc,_0xacaa0d,_0x5c0127,_0x37f57,_0x5e2750))[_0xd988('0xe')](getTicket(_0x3058fc,_0xacaa0d,_0x5c0127,_0x3f7c79,_0x26883d,_0x37f57))[_0xd988('0xe')](function(_0x5f3aeb){logger[_0xd988('0x12')](util[_0xd988('0x57')]('The\x20ticket\x20ID\x20is:\x20%s',_0x5f3aeb[_0xd988('0x43')]));logger['info'](util[_0xd988('0x57')](_0xd988('0x6d'),_0x3058fc));if(_0x3058fc!==_0xd988('0x65')){logger[_0xd988('0x12')]('['+[_0x3058fc[_0xd988('0x17')]()]+']',_0xd988('0x6e'));emit(_0x4b4d76[_0xd988('0x5e')],_0x5c667a[_0xd988('0x52')],_0x5f3aeb['ticketId']);}})[_0xd988('0x14')](function(_0x35635f){logger[_0xd988('0x15')]('['+[_0x3058fc[_0xd988('0x17')]()]+_0xd988('0x6f'),util['inspect'](_0x35635f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x5093=['stripTrailingSlash','serverUrl','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','format','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','bluebird','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','catch','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','string','picklist','nameField','customField','toLowerCase','content','toString','includes','idField','type','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri'];(function(_0x5bed60,_0xe14580){var _0x1b783c=function(_0x2d305c){while(--_0x2d305c){_0x5bed60['push'](_0x5bed60['shift']());}};_0x1b783c(++_0xe14580);}(_0x5093,0x1b8));var _0x3509=function(_0x28394f,_0x5ebdd2){_0x28394f=_0x28394f-0x0;var _0x2618d2=_0x5093[_0x28394f];return _0x2618d2;};'use strict';var _=require('lodash');var Promise=require(_0x3509('0x0'));var rp=require(_0x3509('0x1'));var util=require(_0x3509('0x2'));var md5=require('md5');var Redis=require(_0x3509('0x3'));var intUtil=require('./util');var config=require(_0x3509('0x4'));var logger=require(_0x3509('0x5'))('servicenow');config[_0x3509('0x6')]=_[_0x3509('0x7')](config[_0x3509('0x6')],{'host':_0x3509('0x8'),'port':0x18eb});var io=require(_0x3509('0x9'))(new Redis(config[_0x3509('0x6')]));function getAdminUser(_0x54e6be,_0xf80a40,_0x2362d7,_0x5cec6f,_0x1b3c2e,_0x21eae7){return new Promise(function(_0x4827be,_0x60fa58){var _0x6b754c={'method':_0x3509('0xa'),'uri':_0x5cec6f+_0x3509('0xb')+'&'+_0x1b3c2e+'&'+_0x21eae7,'auth':_0xf80a40,'json':!![]};return rp(_0x6b754c)[_0x3509('0xc')](function(_0x45f2f2){if(_0x45f2f2[_0x3509('0xd')][_0x3509('0xe')]>0x0){_0x2362d7[_0x3509('0xf')]=_0x45f2f2[_0x3509('0xd')][0x0][_0x3509('0x10')];}logger[_0x3509('0x11')]('['+[_0x54e6be[_0x3509('0x12')]()]+'],\x20getAdminUser\x20crm',_0x2362d7);_0x4827be(_0x2362d7);})[_0x3509('0x13')](function(_0x1261c9){logger['error']('['+[_0x54e6be[_0x3509('0x12')]()]+']',_0x1261c9[_0x3509('0x14')]);_0x60fa58(_0x1261c9[_0x3509('0x14')]);});});}function getUser(_0x35e029,_0x55c218,_0x3ea59c,_0xf554d4,_0x191084){return function(_0x5c208a){logger[_0x3509('0x11')]('['+[_0x35e029[_0x3509('0x12')]()]+_0x3509('0x15'),_0x5c208a);return new Promise(function(_0x3e2605,_0x253e1f){if(intUtil['validateEmail'](_0x5c208a[_0x3509('0x16')])){var _0x7f14ca={'method':_0x3509('0xa'),'uri':_0x3ea59c+_0x3509('0x17')+_0x5c208a[_0x3509('0x16')]+'&'+_0xf554d4+'&'+_0x191084,'auth':_0x55c218,'json':!![]};logger[_0x3509('0x11')]('['+[_0x35e029[_0x3509('0x12')]()]+'],\x20getUser\x20rp\x20obj',_0x7f14ca);return rp(_0x7f14ca)['then'](function(_0x101bbe){logger[_0x3509('0x11')]('['+[_0x35e029[_0x3509('0x12')]()]+_0x3509('0x18'),_0x101bbe);if(_0x101bbe['result'][_0x3509('0xe')]>0x0&&String(_0x101bbe[_0x3509('0xd')][0x0]['active'])===_0x3509('0x19')){_0x5c208a[_0x3509('0x1a')]=_0x101bbe['result'][0x0][_0x3509('0x10')];}else{_0x5c208a[_0x3509('0x1a')]=_0x5c208a[_0x3509('0xf')];_0x5c208a[_0x3509('0x16')]=_0x5c208a[_0x3509('0x1b')];}logger[_0x3509('0x11')]('['+[_0x35e029['toUpperCase']()]+_0x3509('0x1c'),_0x5c208a);_0x3e2605(_0x5c208a);})[_0x3509('0x13')](function(_0x1a1c52){logger[_0x3509('0x1d')]('['+[_0x35e029[_0x3509('0x12')]()]+']',_0x1a1c52[_0x3509('0x14')]);_0x253e1f(_0x1a1c52[_0x3509('0x14')]);});}else{logger[_0x3509('0x11')]('['+[_0x35e029[_0x3509('0x12')]()]+_0x3509('0x1e'));_0x5c208a[_0x3509('0x1a')]=_0x5c208a['adminId'];_0x5c208a[_0x3509('0x16')]=_0x5c208a[_0x3509('0x1b')];_0x3e2605(_0x5c208a);}});};}function createEndUser(_0xb3c054,_0x14787c,_0x2a61f5,_0x1f3328,_0x441b2c){logger[_0x3509('0x11')]('['+[_0xb3c054[_0x3509('0x12')]()]+_0x3509('0x1f'),_0x2a61f5);return new Promise(function(_0x92e6ab,_0x17b94f){var _0x33e4a5={'method':_0x3509('0x20'),'uri':_0x1f3328+'sys_user?'+_0x441b2c,'body':{'user_name':_0x2a61f5[_0x3509('0x21')],'roles':_0x3509('0x22'),'first_name':_0x2a61f5[_0x3509('0x21')],'active':_0x3509('0x19'),'date_format':_0x3509('0x23'),'phone':_0x2a61f5[_0x3509('0x21')]},'auth':_0x14787c,'json':!![]};return rp(_0x33e4a5)['then'](function(_0x733a13){logger[_0x3509('0x11')]('['+[_0xb3c054['toUpperCase']()]+_0x3509('0x24'),_0x733a13[_0x3509('0xd')]);_0x2a61f5[_0x3509('0x25')]=_0x733a13[_0x3509('0xd')][_0x3509('0x10')];_0x92e6ab(_0x2a61f5);})[_0x3509('0x13')](function(_0x587897){logger['error']('['+[_0xb3c054['toUpperCase']()]+']',_0x587897['message']);_0x17b94f(_0x587897[_0x3509('0x14')]);});});}function getEndUser(_0x634bc3,_0x2552f2,_0x5d173d,_0x17dbb7,_0x338acf){return function(_0x2fa925){logger[_0x3509('0x11')]('['+[_0x634bc3['toUpperCase']()]+_0x3509('0x26'),_0x2fa925);return new Promise(function(_0x49c860,_0x280cff){var _0x416fbc={'method':_0x3509('0xa'),'uri':_0x5d173d+_0x3509('0x27')+_0x2fa925['endUserNumber']+'&'+_0x17dbb7+'&'+_0x338acf,'auth':_0x2552f2,'json':!![]};return rp(_0x416fbc)[_0x3509('0xc')](function(_0x44cdb5){if(_0x44cdb5[_0x3509('0xd')][_0x3509('0xe')]>0x0){_0x2fa925['endUserId']=_0x44cdb5[_0x3509('0xd')][0x0][_0x3509('0x10')];logger[_0x3509('0x11')]('['+[_0x634bc3[_0x3509('0x12')]()]+_0x3509('0x28'),_0x2fa925);_0x49c860(_0x2fa925);}else{return createEndUser(_0x634bc3,_0x2552f2,_0x2fa925,_0x5d173d,_0x17dbb7)['then'](function(_0x181744){logger[_0x3509('0x11')]('['+[_0x634bc3[_0x3509('0x12')]()]+'],\x20createEndUser\x20crm',_0x181744);_0x49c860(_0x181744);});}})[_0x3509('0x13')](function(_0x759919){logger[_0x3509('0x1d')]('['+[_0x634bc3['toUpperCase']()]+']',_0x759919['message']);_0x280cff(_0x759919[_0x3509('0x14')]);});});};}function getCustomFields(_0x4d25c0,_0x110944){var _0x32782d={};if(_0x4d25c0['length']>0x0){_[_0x3509('0x29')](_0x4d25c0,function(_0x41e247){if(_['includes']([_0x3509('0x2a'),_0x3509('0x2b')],_0x41e247['type'])&&_0x41e247[_0x3509('0x2c')]&&!_0x41e247[_0x3509('0x2d')]){_0x32782d[_0x41e247['nameField'][_0x3509('0x2e')]()]=_0x41e247[_0x3509('0x2f')][_0x3509('0x30')]();}else if(_[_0x3509('0x31')](['string',_0x3509('0x2b')],_0x41e247['type'])&&_0x41e247['idField']&&_0x41e247[_0x3509('0x2d')]){_0x32782d[_0x41e247[_0x3509('0x32')][_0x3509('0x2e')]()]=_0x41e247[_0x3509('0x2f')][_0x3509('0x30')]();}else if(_0x41e247[_0x3509('0x33')]===_0x3509('0x34')&&_0x41e247[_0x3509('0x35')]&&_0x41e247[_0x3509('0x32')]&&_0x41e247[_0x3509('0x2d')]){_0x32782d[_0x41e247[_0x3509('0x32')][_0x3509('0x2e')]()]=_0x110944[_0x41e247['variableName']][_0x3509('0x30')]();}else if(_0x41e247['type']==='customVariable'&&_0x41e247[_0x3509('0x36')]&&_0x41e247[_0x3509('0x36')][_0x3509('0x37')]&&_0x41e247[_0x3509('0x32')]&&_0x41e247[_0x3509('0x2d')]){_0x32782d[_0x41e247[_0x3509('0x32')][_0x3509('0x2e')]()]=_0x110944[_0x41e247[_0x3509('0x36')][_0x3509('0x37')]['toLowerCase']()][_0x3509('0x30')]();}});}return _0x32782d;}function getTicket(_0x51fef8,_0x120594,_0xb57e3a,_0x3407db,_0x3dd26d,_0x440877){return function(_0x3e749c){logger[_0x3509('0x11')]('['+[_0x51fef8[_0x3509('0x12')]()]+_0x3509('0x38'),_0x3e749c);return new Promise(function(_0x436808,_0x18f460){var _0x372712=_0x51fef8[_0x3509('0x2e')]()===_0x3509('0x39')?_0x3e749c[_0x3509('0x1a')]:_0x3e749c['endUserId'];var _0x3f81d1={'method':_0x3509('0x20'),'uri':_0xb57e3a+_0x3509('0x3a')+'?'+_0x440877,'body':Object[_0x3509('0x3b')]({},{'active':_0x3509('0x19'),'caller_id':_0x372712,'assigned_to':_0x3e749c['userId'],'short_description':intUtil[_0x3509('0x3c')](_0x3407db[_0x3509('0x3d')],_0x3dd26d,'\x20'),'description':intUtil['getString'](_0x3407db['Descriptions'],_0x3dd26d,'\x0a')},getCustomFields(_0x3407db[_0x3509('0x3e')],_0x3dd26d)),'auth':_0x120594,'json':!![]};return rp(_0x3f81d1)[_0x3509('0xc')](function(_0xf323d8){logger['info']('['+[_0x51fef8[_0x3509('0x12')]()]+_0x3509('0x3f'),_0xf323d8[_0x3509('0xd')]);_0x3e749c[_0x3509('0x40')]=_0xf323d8[_0x3509('0xd')]['sys_id'];_0x3e749c[_0x3509('0x41')]=_0xf323d8[_0x3509('0xd')]['number'];logger['info']('['+[_0x51fef8['toUpperCase']()]+_0x3509('0x42'),_0x3e749c);_0x436808(_0x3e749c);})[_0x3509('0x13')](function(_0x412617){logger[_0x3509('0x1d')]('['+[_0x51fef8[_0x3509('0x12')]()]+']',_0x412617[_0x3509('0x14')]);_0x18f460(_0x412617[_0x3509('0x14')]);});});};}function createRemoteTag(_0x474d2f,_0x44bc85,_0x52f133,_0x20f399){return new Promise(function(_0xadcfe2,_0x147024){var _0x19adc2={'method':_0x3509('0x20'),'uri':_0x52f133+_0x3509('0x43')+'?'+_0x20f399,'body':{'short_description':_0x474d2f,'global':!![],'active':!![],'name':_0x474d2f},'auth':_0x44bc85,'json':!![]};return rp(_0x19adc2)[_0x3509('0xc')](function(_0x458367){var _0x1fd205=_0x458367[_0x3509('0xd')][_0x3509('0x10')];_0xadcfe2(_0x1fd205);});});}function getRemoteTag(_0x4775b5,_0xdae7e9,_0x5420cf,_0x4fd0de,_0x6f2122){return new Promise(function(_0x37dcc0,_0x30aa52){var _0x6b7113={'method':'GET','uri':_0x5420cf+_0x3509('0x43')+_0x3509('0x44')+_0x4775b5+'&'+_0x4fd0de,'auth':_0xdae7e9,'json':!![]};return rp(_0x6b7113)[_0x3509('0xc')](function(_0x32941c){if(_0x32941c[_0x3509('0xd')][_0x3509('0xe')]>0x0){var _0x2f8dbe=_0x32941c[_0x3509('0xd')][0x0][_0x3509('0x10')];_0x37dcc0(_0x2f8dbe);}else{return createRemoteTag(_0x4775b5,_0xdae7e9,_0x5420cf,_0x4fd0de)[_0x3509('0xc')](function(_0x59b88d){_0x37dcc0(_0x59b88d);});}});});}function assignTagToIncident(_0x43c86e,_0x4d8ca2,_0x4e8bed,_0x4b02ef,_0x24ec14){return new Promise(function(_0x53dcba,_0x1bfec2){var _0x4ce731={'method':'POST','uri':_0x4e8bed+_0x3509('0x45')+'?'+_0x24ec14,'body':{'label':_0x43c86e,'table':_0x3509('0x3a'),'id_type':_0x3509('0x46'),'table_key':_0x4b02ef['ticketId'],'title':_0x3509('0x47')+_0x4b02ef[_0x3509('0x41')],'id_display':_0x4b02ef[_0x3509('0x41')]},'auth':_0x4d8ca2,'json':!![]};return rp(_0x4ce731)['then'](function(_0xf14769){_0x53dcba();})[_0x3509('0x13')](function(){_0x53dcba();});});}function manageTags(_0xe8ee37,_0x2d2196,_0x27cce2,_0x4a71d3,_0xfdebe4,_0x3f0c19,_0x2e2096){return new Promise(function(_0xd80a2b,_0x20733c){var _0x40c06c=[];_0x2d2196[_0x3509('0x29')](function(_0x50f26e){_0x40c06c[_0x3509('0x48')](getRemoteTag(_0x50f26e,_0x27cce2,_0x4a71d3,_0x3f0c19,_0x2e2096));});return Promise[_0x3509('0x49')](_0x40c06c)[_0x3509('0xc')](function(_0x3e4ff6){if(_0x3e4ff6[_0x3509('0xe')]){logger[_0x3509('0x11')]('['+[_0xe8ee37['toUpperCase']()]+_0x3509('0x4a'),_0x3e4ff6);var _0x3816a9=[];_0x3e4ff6[_0x3509('0x29')](function(_0x26bb7d){_0x3816a9[_0x3509('0x48')](assignTagToIncident(_0x26bb7d,_0x27cce2,_0x4a71d3,_0xfdebe4,_0x3f0c19));});return Promise[_0x3509('0x49')](_0x3816a9)[_0x3509('0xc')](function(){_0xd80a2b();})[_0x3509('0x13')](function(){_0xd80a2b();});}else{_0xd80a2b();}});});}function getTags(_0x36060f,_0x5374ac,_0x566a68,_0x5f1207,_0x13b855,_0x3950ed){return function(_0x362402){return new Promise(function(_0x26b9d1,_0x522250){var _0x2d472c=[];var _0x400cc2=_0x5f1207['Tags'];if(_0x400cc2&&_0x400cc2['length']>0x0){_0x2d472c=_['map'](_0x400cc2,_0x3509('0x37'));}if(_0x2d472c[_0x3509('0xe')]>0x0){return manageTags(_0x36060f,_0x2d472c,_0x5374ac,_0x566a68,_0x362402,_0x13b855,_0x3950ed)[_0x3509('0xc')](function(){_0x26b9d1(_0x362402);});}else{_0x26b9d1(_0x362402);}});};}function emit(_0x34ce67,_0x27b6fe,_0x6b6cd4){var _0x36eb4b='%26sysparm_record_target%3Dincident'+_0x3509('0x4b')+_0x3509('0x4c')+_0x3509('0x4d');var _0xd4df2f={'uri':_0x34ce67+_0x3509('0x4e')+_0x6b6cd4+_0x36eb4b};io['to'](util['format']('user:%s',_0x27b6fe))[_0x3509('0x4f')](_0x3509('0x50'),_0xd4df2f);}exports['cs']=function(_0x31cffe,_0x386026,_0x241591,_0x218dc8,_0x12374a,_0x4e0326,_0x25e781,_0xd49e80){var _0x4c8c51={};var _0xf68641={'user':_0x4e0326['username'],'pass':_0x4e0326[_0x3509('0x51')]};var _0xf1f4ca=_0x3509('0x52');var _0x5621c3=_0x3509('0x53');_0x4e0326[_0x3509('0x54')]=intUtil[_0x3509('0x55')](_0x4e0326['remoteUri']);_0x4e0326[_0x3509('0x56')]=intUtil['stripTrailingSlash'](_0x4e0326['serverUrl']);var _0x322413=util['format']('%s/api/now/table/',_0x4e0326[_0x3509('0x54')]);_0x4c8c51[_0x3509('0x16')]=!_['isNil'](_0x218dc8)?_0x218dc8['email']:null;_0x4c8c51[_0x3509('0x1b')]=_0x4e0326[_0x3509('0x57')];_0x4c8c51[_0x3509('0x21')]=_0xd49e80['toLowerCase']()===_0x3509('0x39')?_0x386026[_0x3509('0x58')]:_0x386026[_0x3509('0x59')];_0x4c8c51[_0x3509('0x5a')]=_0xd49e80===_0x3509('0x5b')||_0xd49e80===_0x3509('0x5c')?'queue':'outbound';var _0x4cd235=util[_0x3509('0x5d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e0326[_0x3509('0x56')],_0x386026[_0x3509('0x5e')],md5(_0x386026[_0x3509('0x5e')]));if(_0x12374a&&_0x12374a[_0x3509('0x5f')]){logger[_0x3509('0x11')](_0x3509('0x60'),_0x3509('0x61'));_0x386026[_0x3509('0x62')]=_0x4cd235;}else if(_0x25e781&&_0x25e781[_0x3509('0x63')]&&_0x25e781[_0x3509('0x63')]!==_0x3509('0x64')){logger[_0x3509('0x11')](_0x3509('0x65'),_0x3509('0x61'));_0x386026['recordingURL']=_0x4cd235;}else{_0x386026[_0x3509('0x62')]='';}return getAdminUser(_0xd49e80,_0xf68641,_0x4c8c51,_0x322413,_0x5621c3,_0xf1f4ca)[_0x3509('0xc')](getUser(_0xd49e80,_0xf68641,_0x322413,_0x5621c3,_0xf1f4ca))[_0x3509('0xc')](getEndUser(_0xd49e80,_0xf68641,_0x322413,_0x5621c3,_0xf1f4ca))[_0x3509('0xc')](getTicket(_0xd49e80,_0xf68641,_0x322413,_0x241591,_0x386026,_0x5621c3))[_0x3509('0xc')](function(_0xe4b932){logger[_0x3509('0x11')](util[_0x3509('0x5d')](_0x3509('0x66'),_0xe4b932['ticketId']));logger[_0x3509('0x11')](util[_0x3509('0x5d')](_0x3509('0x67'),_0xd49e80));if(_0xd49e80!=='unmanaged'){logger[_0x3509('0x11')]('['+[_0xd49e80[_0x3509('0x12')]()]+']',_0x3509('0x68'));emit(_0x4e0326[_0x3509('0x54')],_0x218dc8['name'],_0xe4b932['ticketId']);}})['catch'](function(_0x818457){logger['error']('['+[_0xd49e80['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x818457,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 24d79fc..58f4b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2868=['customField','nameField','toLowerCase','toString','type','custom_fields','content','customVariable','Variable','login','username','xCALLY\x20Motion\x20integration','then','sessionID','set_relationship','queue','remoteUri','serverUrl','stripTrailingSlash','uri','%s/service/v4_1/rest.php','monitor_format','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','Outbound','charAt','[OUTBOUND]','user:%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','description','Descriptions','toISOString','slice','replace','duration_minutes','parent_id','parent_type','Contacts','length','variableName','push','idField','set_entry','JSON','stringify','Calls','apiKey','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','user_name','entry_list','name_value_list','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','format','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20created.','first_name','debug','[HTTP]','merge','string'];(function(_0x1b6831,_0xcb47a2){var _0x2d00e1=function(_0x1de1e3){while(--_0x1de1e3){_0x1b6831['push'](_0x1b6831['shift']());}};_0x2d00e1(++_0xcb47a2);}(_0x2868,0x186));var _0x8286=function(_0x260454,_0x309852){_0x260454=_0x260454-0x0;var _0x124e65=_0x2868[_0x260454];return _0x124e65;};'use strict';var _=require(_0x8286('0x0'));var rp=require(_0x8286('0x1'));var BPromise=require(_0x8286('0x2'));var md5=require(_0x8286('0x3'));var util=require('util');var Redis=require(_0x8286('0x4'));var intUtil=require('./util');var config=require(_0x8286('0x5'));var logger=require(_0x8286('0x6'))(_0x8286('0x7'));config[_0x8286('0x8')]=_[_0x8286('0x9')](config[_0x8286('0x8')],{'host':_0x8286('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8286('0x8')]));var def={'method':_0x8286('0xb'),'json':!![]};function emit(_0x1dad1a,_0x43f6ed,_0x415084){io['to'](_0x1dad1a)[_0x8286('0xc')](_0x43f6ed,_0x415084);}function getTicket(_0x5a1768,_0x19a985,_0x7b0749,_0x3c99d8,_0x8d0388,_0x2d69bf,_0x504286,_0x2d1e3e){logger[_0x8286('0xd')](_0x8286('0xe'));var _0x5b3ba4=new Date();var _0x4f61b6=[{'name':_0x8286('0xf'),'value':intUtil[_0x8286('0x10')](_0x3c99d8[_0x8286('0x11')],_0x8d0388,'\x20')},{'name':'assigned_user_id','value':_0x19a985['id']},{'name':'created_by','value':_0x19a985['id']},{'name':_0x8286('0x12'),'value':intUtil['getString'](_0x3c99d8[_0x8286('0x13')],_0x8d0388,'\x0a')},{'name':'date_start','value':_0x5b3ba4[_0x8286('0x14')]()[_0x8286('0x15')](0x0,0x13)[_0x8286('0x16')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x8286('0x17'),'value':'15'},{'name':_0x8286('0x18'),'value':_0x7b0749['id']},{'name':_0x8286('0x19'),'value':_0x8286('0x1a')},{'name':'parent_name','value':_0x7b0749[_0x8286('0xf')]},{'name':'direction','value':_0x2d1e3e}];if(_0x2d69bf[_0x8286('0x1b')]){_['forEach'](_0x2d69bf,function(_0x5c4c02){if(_0x8d0388[_0x5c4c02[_0x8286('0x1c')]]){_0x4f61b6[_0x8286('0x1d')]({'name':_0x5c4c02[_0x8286('0x1e')],'value':_0x8d0388[_0x5c4c02['variableName']]});}});}return request({'form':{'method':_0x8286('0x1f'),'input_type':_0x8286('0x20'),'response_type':_0x8286('0x20'),'rest_data':JSON[_0x8286('0x21')]({'session':_0x504286['id'],'module_name':_0x8286('0x22'),'name_value_list':_0x4f61b6})}});}function getAuth(_0x2ced18){return util['format']('Basic\x20%s',new Buffer(_0x2ced18[_0x8286('0x23')]+':X')['toString'](_0x8286('0x24')));}function getServerInfo(_0x192f29){return request({'form':{'method':_0x8286('0x25'),'input_type':_0x8286('0x20'),'response_type':_0x8286('0x20'),'rest_data':JSON[_0x8286('0x21')]({'session':_0x192f29['id']})}});}function getUser(_0x21460d,_0x5c073d,_0x4e5b61){if(!_[_0x8286('0x26')](_0x5c073d)){logger[_0x8286('0xd')](_0x8286('0x27'),_0x5c073d);return request({'form':{'method':_0x8286('0x28'),'input_type':'JSON','response_type':_0x8286('0x20'),'rest_data':JSON['stringify']({'session':_0x4e5b61['id'],'module_name':'Employees','query':util['format']('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x5c073d),'order_by':'','offset':'0','select_fields':['id',_0x8286('0xf'),_0x8286('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x18496d){if(_0x18496d[_0x8286('0x2a')][_0x8286('0x1b')]){var _0x3e0f80=_['find'](_0x18496d[_0x8286('0x2a')],function(_0xf1e7){return _0xf1e7[_0x8286('0x2b')]['user_name'][_0x8286('0x2c')]===_0x5c073d;});if(_0x3e0f80){logger[_0x8286('0xd')]('Agent\x20found!');return BPromise['resolve']({'id':_0x3e0f80[_0x8286('0x2b')]['id']['value'],'name':_0x3e0f80[_0x8286('0x2b')]['name'][_0x8286('0x2c')]});}}logger[_0x8286('0xd')](_0x8286('0x2d'));return BPromise['resolve']({'id':_0x4e5b61[_0x8286('0x2b')][_0x8286('0x2e')][_0x8286('0x2c')],'name':_0x4e5b61[_0x8286('0x2b')][_0x8286('0x29')][_0x8286('0x2c')]});});}else{logger['info'](_0x8286('0x2f'));return BPromise['resolve']({'id':_0x4e5b61[_0x8286('0x2b')][_0x8286('0x2e')][_0x8286('0x2c')],'name':_0x4e5b61[_0x8286('0x2b')][_0x8286('0x29')]['value']});}}function getEndUser(_0x10e170,_0x2f471b,_0x82aa36,_0x4e9c26){logger[_0x8286('0xd')](_0x8286('0x30'),_0x82aa36);return request({'form':{'method':_0x8286('0x28'),'input_type':_0x8286('0x20'),'response_type':_0x8286('0x20'),'rest_data':JSON[_0x8286('0x21')]({'session':_0x4e9c26['id'],'module_name':_0x8286('0x1a'),'query':util[_0x8286('0x31')](_0x8286('0x32'),_0x82aa36),'order_by':'','offset':'0','select_fields':['id',_0x8286('0xf'),_0x8286('0x33')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x224f4d){if(_0x224f4d[_0x8286('0x2a')][_0x8286('0x1b')]){var _0x278fae=_['find'](_0x224f4d[_0x8286('0x2a')],function(_0x2ee6d9){return _0x2ee6d9[_0x8286('0x2b')][_0x8286('0x33')][_0x8286('0x2c')]===_0x82aa36;});if(_0x278fae){logger['info']('Enduser\x20found!');return BPromise['resolve']({'id':_0x278fae['name_value_list']['id'][_0x8286('0x2c')],'name':_0x278fae[_0x8286('0x2b')][_0x8286('0xf')]['value'],'phone':_0x278fae[_0x8286('0x2b')]['phone_home'][_0x8286('0x2c')]});}}else{logger[_0x8286('0xd')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x8286('0x1f'),'input_type':_0x8286('0x20'),'response_type':_0x8286('0x20'),'rest_data':JSON[_0x8286('0x21')]({'session':_0x4e9c26['id'],'module_name':_0x8286('0x1a'),'name_value_list':[{'name':'first_name','value':_0x2f471b!=='<unknown>'?_0x2f471b:util['format']('Caller\x20-\x20%s',_0x82aa36)},{'name':'phone_home','value':_0x82aa36}]})}})['then'](function(_0x79db6a){logger[_0x8286('0xd')](_0x8286('0x34'));return BPromise['resolve']({'id':_0x79db6a['id'],'name':_0x79db6a['entry_list'][_0x8286('0x35')][_0x8286('0x2c')],'phone':_0x79db6a['entry_list'][_0x8286('0x33')][_0x8286('0x2c')]});});}});}function request(_0x4dcba5){logger[_0x8286('0x36')](_0x8286('0x37'),JSON[_0x8286('0x21')](_0x4dcba5));return rp(_[_0x8286('0x38')](def,_0x4dcba5));}function getTags(_0x19b594,_0x2fd4de){var _0x227524=[];if(_0x19b594&&_0x19b594[_0x8286('0x1b')]>0x0){_0x227524=_['map'](_0x19b594,_0x2fd4de);}return _0x227524;}function getCustomFields(_0x10789a,_0x212d56){var _0x116903=[];var _0x1dbe5b={'custom_fields':[]};if(_0x10789a[_0x8286('0x1b')]>0x0){_['forEach'](_0x10789a,function(_0x16d21c){if(_0x16d21c['type']===_0x8286('0x39')&&_0x16d21c['nameField']&&!_0x16d21c[_0x8286('0x3a')]){_0x1dbe5b[_0x16d21c[_0x8286('0x3b')][_0x8286('0x3c')]()]=_0x16d21c['content'][_0x8286('0x3d')]();}else if(_0x16d21c[_0x8286('0x3e')]==='string'&&_0x16d21c[_0x8286('0x1e')]&&_0x16d21c[_0x8286('0x3a')]){_0x1dbe5b[_0x8286('0x3f')][_0x8286('0x1d')]({'id':_0x16d21c[_0x8286('0x1e')],'value':_0x16d21c[_0x8286('0x40')]['toString']()});}else if(_0x16d21c[_0x8286('0x3e')]==='variable'&&_0x16d21c[_0x8286('0x1c')]&&_0x16d21c['idField']&&_0x16d21c[_0x8286('0x3a')]){_0x212d56[_0x16d21c['variableName']]&&_0x1dbe5b['custom_fields']['push']({'id':_0x16d21c[_0x8286('0x1e')],'value':_0x212d56[_0x16d21c[_0x8286('0x1c')]][_0x8286('0x3d')]()});}else if(_0x16d21c[_0x8286('0x3e')]===_0x8286('0x41')&&_0x16d21c[_0x8286('0x42')]&&_0x16d21c[_0x8286('0x42')][_0x8286('0xf')]&&_0x16d21c['idField']&&_0x16d21c['customField']){_0x212d56[_0x16d21c[_0x8286('0x42')]['name']['toLowerCase']()]&&_0x1dbe5b[_0x8286('0x3f')][_0x8286('0x1d')]({'id':_0x16d21c[_0x8286('0x1e')],'value':_0x212d56[_0x16d21c[_0x8286('0x42')]['name'][_0x8286('0x3c')]()][_0x8286('0x3d')]()});}});}return _0x1dbe5b;}function getConnection(_0xcae180){return request({'method':_0x8286('0xb'),'form':{'method':_0x8286('0x43'),'input_type':_0x8286('0x20'),'response_type':_0x8286('0x20'),'rest_data':JSON[_0x8286('0x21')]({'user_auth':{'user_name':_0xcae180[_0x8286('0x44')],'password':_0xcae180['password'],'encryption':'PLAIN'},'application':_0x8286('0x45')})}})[_0x8286('0x46')](function(_0x5508f8){var _0x3b8613=_0x5508f8;if(_0x3b8613['id']){def[_0x8286('0x47')]=_0x3b8613['id'];return BPromise['resolve'](_0x3b8613);}else{throw new Error(util[_0x8286('0x31')]('Account\x20%d\x20is\x20not\x20valid',_0xcae180['id']));}});}function setRelationship(_0x2f1d0d,_0x51a385,_0x230b71,_0x55dff7){return request({'form':{'method':_0x8286('0x48'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x8286('0x21')]({'session':_0x2f1d0d['id'],'module_name':_0x8286('0x22'),'module_id':_0x230b71['id'],'link_field_name':_0x55dff7,'related_ids':[_0x51a385['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x8286('0x49')]=function(_0x5d03d7,_0x24589b,_0x5b68da,_0x1a9c27,_0x21acb4,_0x55204c){var _0x2859db,_0x3872c7,_0x37e9d9,_0x39d780;_0x55204c['remoteUri']=intUtil['stripTrailingSlash'](_0x55204c[_0x8286('0x4a')]);_0x55204c[_0x8286('0x4b')]=intUtil[_0x8286('0x4c')](_0x55204c[_0x8286('0x4b')]);def[_0x8286('0x4d')]=util['format'](_0x8286('0x4e'),_0x55204c['remoteUri']);if(_0x21acb4&&_0x21acb4[_0x8286('0x4f')]){logger[_0x8286('0xd')]('[QUEUE]',_0x8286('0x50'));_0x24589b['recordingURL']=util[_0x8286('0x31')](_0x8286('0x51'),_0x55204c['serverUrl'],_0x24589b[_0x8286('0x52')],md5(_0x24589b[_0x8286('0x52')]));}else{_0x24589b[_0x8286('0x53')]='';}return getConnection(_0x55204c)[_0x8286('0x46')](function(_0x39370b){_0x39d780=_0x39370b;return getUser(_0x55204c,_0x1a9c27[_0x8286('0xf')],_0x39d780);})['then'](function(_0x5d0430){_0x2859db=_0x5d0430;logger[_0x8286('0xd')](_0x8286('0x54'),_0x2859db['id']);return getEndUser(_0x55204c,_0x24589b['calleridname'],_0x24589b[_0x8286('0x55')],_0x39d780);})[_0x8286('0x46')](function(_0x597a01){_0x3872c7=_0x597a01;logger[_0x8286('0xd')](_0x8286('0x56'),_0x3872c7['id']);return getTicket(_0x55204c,_0x2859db,_0x3872c7,_0x5b68da,_0x24589b,_0x5b68da[_0x8286('0x57')],_0x39d780,_0x8286('0x58'));})['then'](function(_0x3b01ad){_0x37e9d9=_0x3b01ad;logger[_0x8286('0xd')](_0x8286('0x59'));logger[_0x8286('0xd')](_0x8286('0x5a'),_0x37e9d9['id']);return setRelationship(_0x39d780,_0x2859db,_0x37e9d9,_0x8286('0x5b'));})[_0x8286('0x46')](function(){return setRelationship(_0x39d780,_0x3872c7,_0x37e9d9,_0x8286('0x5c'));})[_0x8286('0x46')](function(){return getServerInfo(_0x39d780);})[_0x8286('0x46')](function(_0x15eca3){var _0x171df1=parseInt(_0x15eca3[_0x8286('0x5d')]['charAt'](0x0));var _0x2f41ed=util[_0x8286('0x31')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x55204c[_0x8286('0x4a')],_0x37e9d9['id']);if(_0x171df1>0x6){_0x2f41ed=util[_0x8286('0x31')](_0x8286('0x5e'),_0x55204c['remoteUri'],_0x37e9d9['id']);}logger[_0x8286('0xd')](_0x8286('0x5f'),_0x8286('0x60'));emit(util[_0x8286('0x31')]('user:%s',_0x1a9c27[_0x8286('0xf')]),'trigger:browser:url',{'uri':_0x2f41ed});})[_0x8286('0x61')](function(_0x487413){logger[_0x8286('0x62')](_0x8286('0x5f'),JSON['stringify'](_0x487413));});};exports[_0x8286('0x63')]=function(_0x596062,_0x3a9741,_0x6a2198,_0x566405,_0x346816,_0xa56f74,_0x2b5cdf){var _0x265082,_0x42c208,_0x419e98,_0x44328d;_0xa56f74['remoteUri']=intUtil[_0x8286('0x4c')](_0xa56f74['remoteUri']);_0xa56f74[_0x8286('0x4b')]=intUtil[_0x8286('0x4c')](_0xa56f74['serverUrl']);def[_0x8286('0x4d')]=util[_0x8286('0x31')](_0x8286('0x4e'),_0xa56f74[_0x8286('0x4a')]);if(_0x2b5cdf&&_0x2b5cdf[_0x8286('0x64')]&&_0x2b5cdf[_0x8286('0x64')]!==_0x8286('0x65')){logger[_0x8286('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x3a9741[_0x8286('0x53')]=util[_0x8286('0x31')](_0x8286('0x51'),_0xa56f74[_0x8286('0x4b')],_0x3a9741[_0x8286('0x52')],md5(_0x3a9741[_0x8286('0x52')]));}return getConnection(_0xa56f74)[_0x8286('0x46')](function(_0x1bdd09){_0x44328d=_0x1bdd09;return getUser(_0xa56f74,_0x566405[_0x8286('0xf')],_0x44328d);})[_0x8286('0x46')](function(_0x573be6){_0x265082=_0x573be6;logger[_0x8286('0xd')](_0x8286('0x54'),_0x265082['id']);return getEndUser(_0xa56f74,_0x3a9741[_0x8286('0x66')],_0x3a9741[_0x8286('0x67')],_0x44328d);})['then'](function(_0x44ed7f){_0x42c208=_0x44ed7f;logger[_0x8286('0xd')](_0x8286('0x56'),_0x42c208['id']);return getTicket(_0xa56f74,_0x265082,_0x42c208,_0x6a2198,_0x3a9741,_0x6a2198[_0x8286('0x57')],_0x44328d,_0x8286('0x68'));})[_0x8286('0x46')](function(_0x26a479){_0x419e98=_0x26a479;logger[_0x8286('0xd')](_0x8286('0x59'));logger[_0x8286('0xd')](_0x8286('0x5a'),_0x419e98['id']);return setRelationship(_0x44328d,_0x265082,_0x419e98,_0x8286('0x5b'));})[_0x8286('0x46')](function(){return setRelationship(_0x44328d,_0x42c208,_0x419e98,_0x8286('0x5c'));})[_0x8286('0x46')](function(){return getServerInfo(_0x44328d);})['then'](function(_0x323220){var _0x1fd158=parseInt(_0x323220['version'][_0x8286('0x69')](0x0));var _0x59c127=util[_0x8286('0x31')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0xa56f74[_0x8286('0x4a')],_0x419e98['id']);if(_0x1fd158>0x6){_0x59c127=util[_0x8286('0x31')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0xa56f74['remoteUri'],_0x419e98['id']);}logger[_0x8286('0xd')](_0x8286('0x6a'),_0x8286('0x60'));emit(util[_0x8286('0x31')](_0x8286('0x6b'),_0x566405['name']),'trigger:browser:url',{'uri':_0x59c127});})['catch'](function(_0x109464){logger[_0x8286('0x62')](_0x8286('0x6a'),JSON[_0x8286('0x21')](_0x109464));});};exports[_0x8286('0x6c')]=function(_0x17c3c2,_0x53110a,_0x10bf64,_0x2b4160,_0x281969,_0x591817){var _0x3a411f,_0x1499c0,_0x38d325,_0x52cc11;_0x591817[_0x8286('0x4a')]=intUtil[_0x8286('0x4c')](_0x591817[_0x8286('0x4a')]);_0x591817[_0x8286('0x4b')]=intUtil[_0x8286('0x4c')](_0x591817['serverUrl']);def['uri']=util[_0x8286('0x31')](_0x8286('0x4e'),_0x591817[_0x8286('0x4a')]);if(_0x281969&&_0x281969[_0x8286('0x4f')]){logger[_0x8286('0xd')]('['+_0x53110a[_0x8286('0x6d')][_0x8286('0x6e')]()+']','Recording\x20is\x20enabled!');_0x53110a['recordingURL']=util[_0x8286('0x31')](_0x8286('0x51'),_0x591817[_0x8286('0x4b')],_0x53110a[_0x8286('0x52')],md5(_0x53110a[_0x8286('0x52')]));}else{_0x53110a['recordingURL']='';}return getConnection(_0x591817)[_0x8286('0x46')](function(_0x18dbd5){_0x52cc11=_0x18dbd5;if(!_[_0x8286('0x26')](_0x2b4160)){return getUser(_0x591817,_0x2b4160[_0x8286('0xf')],_0x52cc11);}else{return getUser(_0x591817,null,_0x52cc11);}})[_0x8286('0x46')](function(_0x5db24a){_0x3a411f=_0x5db24a;logger['info'](_0x8286('0x54'),_0x3a411f['id']);return getEndUser(_0x591817,_0x53110a[_0x8286('0x6f')],_0x53110a['calleridnum'],_0x52cc11);})['then'](function(_0x221e52){_0x1499c0=_0x221e52;logger[_0x8286('0xd')]('The\x20Enduser\x20ID\x20is:',_0x1499c0['id']);return getTicket(_0x591817,_0x3a411f,_0x1499c0,_0x10bf64,_0x53110a,_0x10bf64[_0x8286('0x57')],_0x52cc11,_0x8286('0x58'));})[_0x8286('0x46')](function(_0x35bd5e){_0x38d325=_0x35bd5e;logger[_0x8286('0xd')]('Ticket\x20created!');logger['info'](_0x8286('0x5a'),_0x38d325['id']);return setRelationship(_0x52cc11,_0x3a411f,_0x38d325,_0x8286('0x5b'));})[_0x8286('0x46')](function(){return setRelationship(_0x52cc11,_0x1499c0,_0x38d325,_0x8286('0x5c'));})[_0x8286('0x46')](function(){return getServerInfo(_0x52cc11);})['catch'](function(_0x44674f){logger[_0x8286('0x62')]('['+_0x53110a[_0x8286('0x6d')][_0x8286('0x6e')]()+']',JSON[_0x8286('0x21')](_0x44674f));});};
\ No newline at end of file
+var _0x07e1=['trigger:browser:url','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','calleridname','error','lastevent','lodash','request-promise','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','slice','replace','duration_hours','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','idField','JSON','stringify','Calls','format','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','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!','set_entry','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','[HTTP]','merge','map','type','string','nameField','content','customField','custom_fields','push','customVariable','Variable','toLowerCase','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','outbound','recordingFormat','none','destcalleridname','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[OUTBOUND]'];(function(_0x2fef7c,_0x1e72c9){var _0x3a6212=function(_0x5f27a7){while(--_0x5f27a7){_0x2fef7c['push'](_0x2fef7c['shift']());}};_0x3a6212(++_0x1e72c9);}(_0x07e1,0x7f));var _0x107e=function(_0x56ad81,_0x2bbeb8){_0x56ad81=_0x56ad81-0x0;var _0x76f333=_0x07e1[_0x56ad81];return _0x76f333;};'use strict';var _=require(_0x107e('0x0'));var rp=require(_0x107e('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x107e('0x2'));var Redis=require('ioredis');var intUtil=require(_0x107e('0x3'));var config=require(_0x107e('0x4'));var logger=require(_0x107e('0x5'))(_0x107e('0x6'));config[_0x107e('0x7')]=_[_0x107e('0x8')](config[_0x107e('0x7')],{'host':_0x107e('0x9'),'port':0x18eb});var io=require(_0x107e('0xa'))(new Redis(config[_0x107e('0x7')]));var def={'method':_0x107e('0xb'),'json':!![]};function emit(_0x2d418f,_0x5873ee,_0x222c4d){io['to'](_0x2d418f)['emit'](_0x5873ee,_0x222c4d);}function getTicket(_0xdaeaf8,_0x4a1436,_0x27907b,_0x5dc5f5,_0x3a1299,_0x12246f,_0x34e83d,_0x10b619){logger[_0x107e('0xc')](_0x107e('0xd'));var _0x1ce4e1=new Date();var _0x2636b4=[{'name':_0x107e('0xe'),'value':intUtil[_0x107e('0xf')](_0x5dc5f5[_0x107e('0x10')],_0x3a1299,'\x20')},{'name':_0x107e('0x11'),'value':_0x4a1436['id']},{'name':_0x107e('0x12'),'value':_0x4a1436['id']},{'name':_0x107e('0x13'),'value':intUtil['getString'](_0x5dc5f5[_0x107e('0x14')],_0x3a1299,'\x0a')},{'name':'date_start','value':_0x1ce4e1['toISOString']()[_0x107e('0x15')](0x0,0x13)[_0x107e('0x16')]('T','\x20')},{'name':_0x107e('0x17'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x107e('0x18'),'value':_0x27907b['id']},{'name':_0x107e('0x19'),'value':_0x107e('0x1a')},{'name':_0x107e('0x1b'),'value':_0x27907b[_0x107e('0xe')]},{'name':_0x107e('0x1c'),'value':_0x10b619}];if(_0x12246f[_0x107e('0x1d')]){_[_0x107e('0x1e')](_0x12246f,function(_0x5aa211){if(_0x3a1299[_0x5aa211[_0x107e('0x1f')]]){_0x2636b4['push']({'name':_0x5aa211[_0x107e('0x20')],'value':_0x3a1299[_0x5aa211[_0x107e('0x1f')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'session':_0x34e83d['id'],'module_name':_0x107e('0x23'),'name_value_list':_0x2636b4})}});}function getAuth(_0x538c6c){return util[_0x107e('0x24')]('Basic\x20%s',new Buffer(_0x538c6c['apiKey']+':X')[_0x107e('0x25')](_0x107e('0x26')));}function getServerInfo(_0xe3c10c){return request({'form':{'method':_0x107e('0x27'),'input_type':_0x107e('0x21'),'response_type':'JSON','rest_data':JSON[_0x107e('0x22')]({'session':_0xe3c10c['id']})}});}function getUser(_0x5f022b,_0x1d9b5e,_0xdd5f6){if(!_['isNil'](_0x1d9b5e)){logger[_0x107e('0xc')](_0x107e('0x28'),_0x1d9b5e);return request({'form':{'method':_0x107e('0x29'),'input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'session':_0xdd5f6['id'],'module_name':'Employees','query':util['format'](_0x107e('0x2a'),_0x1d9b5e),'order_by':'','offset':'0','select_fields':['id',_0x107e('0xe'),_0x107e('0x2b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x6c560c){if(_0x6c560c[_0x107e('0x2c')][_0x107e('0x1d')]){var _0x5dd180=_['find'](_0x6c560c[_0x107e('0x2c')],function(_0x3fe7cb){return _0x3fe7cb[_0x107e('0x2d')][_0x107e('0x2b')][_0x107e('0x2e')]===_0x1d9b5e;});if(_0x5dd180){logger[_0x107e('0xc')](_0x107e('0x2f'));return BPromise[_0x107e('0x30')]({'id':_0x5dd180['name_value_list']['id']['value'],'name':_0x5dd180[_0x107e('0x2d')][_0x107e('0xe')]['value']});}}logger['info'](_0x107e('0x31'));return BPromise['resolve']({'id':_0xdd5f6[_0x107e('0x2d')][_0x107e('0x32')][_0x107e('0x2e')],'name':_0xdd5f6['name_value_list']['user_name'][_0x107e('0x2e')]});});}else{logger['info'](_0x107e('0x33'));return BPromise['resolve']({'id':_0xdd5f6[_0x107e('0x2d')]['user_id'][_0x107e('0x2e')],'name':_0xdd5f6[_0x107e('0x2d')][_0x107e('0x2b')][_0x107e('0x2e')]});}}function getEndUser(_0x5472da,_0x441129,_0x23aea9,_0x1eef7f){logger[_0x107e('0xc')](_0x107e('0x34'),_0x23aea9);return request({'form':{'method':_0x107e('0x29'),'input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'session':_0x1eef7f['id'],'module_name':_0x107e('0x1a'),'query':util[_0x107e('0x24')](_0x107e('0x35'),_0x23aea9),'order_by':'','offset':'0','select_fields':['id',_0x107e('0xe'),_0x107e('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x107e('0x37')](function(_0x3f1784){if(_0x3f1784[_0x107e('0x2c')][_0x107e('0x1d')]){var _0x260584=_[_0x107e('0x38')](_0x3f1784['entry_list'],function(_0x1c4d93){return _0x1c4d93[_0x107e('0x2d')]['phone_home'][_0x107e('0x2e')]===_0x23aea9;});if(_0x260584){logger['info'](_0x107e('0x39'));return BPromise[_0x107e('0x30')]({'id':_0x260584[_0x107e('0x2d')]['id']['value'],'name':_0x260584[_0x107e('0x2d')][_0x107e('0xe')]['value'],'phone':_0x260584[_0x107e('0x2d')][_0x107e('0x36')][_0x107e('0x2e')]});}}else{logger['info'](_0x107e('0x3a'));return request({'form':{'method':_0x107e('0x3b'),'input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'session':_0x1eef7f['id'],'module_name':_0x107e('0x1a'),'name_value_list':[{'name':_0x107e('0x3c'),'value':_0x441129!==_0x107e('0x3d')?_0x441129:util[_0x107e('0x24')](_0x107e('0x3e'),_0x23aea9)},{'name':_0x107e('0x36'),'value':_0x23aea9}]})}})[_0x107e('0x37')](function(_0x2ee002){logger[_0x107e('0xc')](_0x107e('0x3f'));return BPromise['resolve']({'id':_0x2ee002['id'],'name':_0x2ee002['entry_list'][_0x107e('0x3c')]['value'],'phone':_0x2ee002[_0x107e('0x2c')]['phone_home'][_0x107e('0x2e')]});});}});}function request(_0x19f99c){logger['debug'](_0x107e('0x40'),JSON[_0x107e('0x22')](_0x19f99c));return rp(_[_0x107e('0x41')](def,_0x19f99c));}function getTags(_0x2e8418,_0x5c51e3){var _0x32252f=[];if(_0x2e8418&&_0x2e8418[_0x107e('0x1d')]>0x0){_0x32252f=_[_0x107e('0x42')](_0x2e8418,_0x5c51e3);}return _0x32252f;}function getCustomFields(_0x2bbf84,_0x2a8a50){var _0x1390ed=[];var _0x324622={'custom_fields':[]};if(_0x2bbf84[_0x107e('0x1d')]>0x0){_[_0x107e('0x1e')](_0x2bbf84,function(_0x11a590){if(_0x11a590[_0x107e('0x43')]===_0x107e('0x44')&&_0x11a590[_0x107e('0x45')]&&!_0x11a590['customField']){_0x324622[_0x11a590[_0x107e('0x45')]['toLowerCase']()]=_0x11a590[_0x107e('0x46')]['toString']();}else if(_0x11a590[_0x107e('0x43')]===_0x107e('0x44')&&_0x11a590[_0x107e('0x20')]&&_0x11a590[_0x107e('0x47')]){_0x324622[_0x107e('0x48')]['push']({'id':_0x11a590[_0x107e('0x20')],'value':_0x11a590[_0x107e('0x46')][_0x107e('0x25')]()});}else if(_0x11a590['type']==='variable'&&_0x11a590[_0x107e('0x1f')]&&_0x11a590[_0x107e('0x20')]&&_0x11a590[_0x107e('0x47')]){_0x2a8a50[_0x11a590['variableName']]&&_0x324622[_0x107e('0x48')][_0x107e('0x49')]({'id':_0x11a590['idField'],'value':_0x2a8a50[_0x11a590[_0x107e('0x1f')]][_0x107e('0x25')]()});}else if(_0x11a590[_0x107e('0x43')]===_0x107e('0x4a')&&_0x11a590[_0x107e('0x4b')]&&_0x11a590[_0x107e('0x4b')]['name']&&_0x11a590[_0x107e('0x20')]&&_0x11a590[_0x107e('0x47')]){_0x2a8a50[_0x11a590[_0x107e('0x4b')][_0x107e('0xe')]['toLowerCase']()]&&_0x324622['custom_fields']['push']({'id':_0x11a590[_0x107e('0x20')],'value':_0x2a8a50[_0x11a590[_0x107e('0x4b')][_0x107e('0xe')][_0x107e('0x4c')]()][_0x107e('0x25')]()});}});}return _0x324622;}function getConnection(_0xd0ac04){return request({'method':'POST','form':{'method':'login','input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'user_auth':{'user_name':_0xd0ac04['username'],'password':_0xd0ac04[_0x107e('0x4d')],'encryption':_0x107e('0x4e')},'application':_0x107e('0x4f')})}})[_0x107e('0x37')](function(_0x363806){var _0x4d6bbe=_0x363806;if(_0x4d6bbe['id']){def['sessionID']=_0x4d6bbe['id'];return BPromise[_0x107e('0x30')](_0x4d6bbe);}else{throw new Error(util[_0x107e('0x24')](_0x107e('0x50'),_0xd0ac04['id']));}});}function setRelationship(_0x3a00be,_0x1e650a,_0x412be4,_0x77011c){return request({'form':{'method':_0x107e('0x51'),'input_type':_0x107e('0x21'),'response_type':_0x107e('0x21'),'rest_data':JSON[_0x107e('0x22')]({'session':_0x3a00be['id'],'module_name':_0x107e('0x23'),'module_id':_0x412be4['id'],'link_field_name':_0x77011c,'related_ids':[_0x1e650a['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x1be360,_0x39298b,_0x1c322c,_0x464b20,_0xb7c723,_0x5df0f2){var _0x1cfb88,_0x3b5fc6,_0x236122,_0x202cf4;_0x5df0f2[_0x107e('0x52')]=intUtil[_0x107e('0x53')](_0x5df0f2[_0x107e('0x52')]);_0x5df0f2[_0x107e('0x54')]=intUtil[_0x107e('0x53')](_0x5df0f2['serverUrl']);def[_0x107e('0x55')]=util['format'](_0x107e('0x56'),_0x5df0f2['remoteUri']);if(_0xb7c723&&_0xb7c723[_0x107e('0x57')]){logger['info'](_0x107e('0x58'),_0x107e('0x59'));_0x39298b[_0x107e('0x5a')]=util[_0x107e('0x24')](_0x107e('0x5b'),_0x5df0f2['serverUrl'],_0x39298b['uniqueid'],md5(_0x39298b[_0x107e('0x5c')]));}else{_0x39298b['recordingURL']='';}return getConnection(_0x5df0f2)[_0x107e('0x37')](function(_0x462b6b){_0x202cf4=_0x462b6b;return getUser(_0x5df0f2,_0x464b20[_0x107e('0xe')],_0x202cf4);})[_0x107e('0x37')](function(_0x31254c){_0x1cfb88=_0x31254c;logger[_0x107e('0xc')]('The\x20User\x20ID\x20is:',_0x1cfb88['id']);return getEndUser(_0x5df0f2,_0x39298b['calleridname'],_0x39298b[_0x107e('0x5d')],_0x202cf4);})[_0x107e('0x37')](function(_0x37a605){_0x3b5fc6=_0x37a605;logger[_0x107e('0xc')](_0x107e('0x5e'),_0x3b5fc6['id']);return getTicket(_0x5df0f2,_0x1cfb88,_0x3b5fc6,_0x1c322c,_0x39298b,_0x1c322c[_0x107e('0x5f')],_0x202cf4,_0x107e('0x60'));})[_0x107e('0x37')](function(_0x1b92a7){_0x236122=_0x1b92a7;logger[_0x107e('0xc')](_0x107e('0x61'));logger['info'](_0x107e('0x62'),_0x236122['id']);return setRelationship(_0x202cf4,_0x1cfb88,_0x236122,_0x107e('0x63'));})[_0x107e('0x37')](function(){return setRelationship(_0x202cf4,_0x3b5fc6,_0x236122,_0x107e('0x64'));})[_0x107e('0x37')](function(){return getServerInfo(_0x202cf4);})[_0x107e('0x37')](function(_0x449d08){var _0x41c8c9=parseInt(_0x449d08[_0x107e('0x65')][_0x107e('0x66')](0x0));var _0x42e839=util[_0x107e('0x24')](_0x107e('0x67'),_0x5df0f2[_0x107e('0x52')],_0x236122['id']);if(_0x41c8c9>0x6){_0x42e839=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x5df0f2['remoteUri'],_0x236122['id']);}logger['info'](_0x107e('0x58'),_0x107e('0x68'));emit(util[_0x107e('0x24')](_0x107e('0x69'),_0x464b20[_0x107e('0xe')]),'trigger:browser:url',{'uri':_0x42e839});})[_0x107e('0x6a')](function(_0x11015e){logger['error'](_0x107e('0x58'),JSON[_0x107e('0x22')](_0x11015e));});};exports[_0x107e('0x6b')]=function(_0x567d11,_0xc2b12a,_0x59df5a,_0xf726be,_0x46be06,_0x226a5a,_0x49df3a){var _0xd10624,_0x335a9a,_0x404cbe,_0x592644;_0x226a5a['remoteUri']=intUtil[_0x107e('0x53')](_0x226a5a[_0x107e('0x52')]);_0x226a5a[_0x107e('0x54')]=intUtil[_0x107e('0x53')](_0x226a5a[_0x107e('0x54')]);def[_0x107e('0x55')]=util[_0x107e('0x24')](_0x107e('0x56'),_0x226a5a['remoteUri']);if(_0x49df3a&&_0x49df3a[_0x107e('0x6c')]&&_0x49df3a[_0x107e('0x6c')]!==_0x107e('0x6d')){logger[_0x107e('0xc')]('[OUTBOUND]',_0x107e('0x59'));_0xc2b12a[_0x107e('0x5a')]=util[_0x107e('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x226a5a[_0x107e('0x54')],_0xc2b12a[_0x107e('0x5c')],md5(_0xc2b12a[_0x107e('0x5c')]));}return getConnection(_0x226a5a)['then'](function(_0x245e52){_0x592644=_0x245e52;return getUser(_0x226a5a,_0xf726be['name'],_0x592644);})[_0x107e('0x37')](function(_0xe26d4e){_0xd10624=_0xe26d4e;logger[_0x107e('0xc')]('The\x20User\x20ID\x20is:',_0xd10624['id']);return getEndUser(_0x226a5a,_0xc2b12a[_0x107e('0x6e')],_0xc2b12a['destcalleridnum'],_0x592644);})[_0x107e('0x37')](function(_0x2e9f70){_0x335a9a=_0x2e9f70;logger[_0x107e('0xc')]('The\x20Enduser\x20ID\x20is:',_0x335a9a['id']);return getTicket(_0x226a5a,_0xd10624,_0x335a9a,_0x59df5a,_0xc2b12a,_0x59df5a['Fields'],_0x592644,'Outbound');})[_0x107e('0x37')](function(_0x172379){_0x404cbe=_0x172379;logger[_0x107e('0xc')](_0x107e('0x61'));logger[_0x107e('0xc')](_0x107e('0x62'),_0x404cbe['id']);return setRelationship(_0x592644,_0xd10624,_0x404cbe,_0x107e('0x63'));})['then'](function(){return setRelationship(_0x592644,_0x335a9a,_0x404cbe,_0x107e('0x64'));})[_0x107e('0x37')](function(){return getServerInfo(_0x592644);})['then'](function(_0x41e884){var _0x424eb5=parseInt(_0x41e884[_0x107e('0x65')][_0x107e('0x66')](0x0));var _0x36da33=util['format'](_0x107e('0x67'),_0x226a5a[_0x107e('0x52')],_0x404cbe['id']);if(_0x424eb5>0x6){_0x36da33=util['format'](_0x107e('0x6f'),_0x226a5a[_0x107e('0x52')],_0x404cbe['id']);}logger[_0x107e('0xc')](_0x107e('0x70'),_0x107e('0x68'));emit(util[_0x107e('0x24')]('user:%s',_0xf726be[_0x107e('0xe')]),_0x107e('0x71'),{'uri':_0x36da33});})[_0x107e('0x6a')](function(_0x1dd446){logger['error'](_0x107e('0x70'),JSON[_0x107e('0x22')](_0x1dd446));});};exports[_0x107e('0x72')]=function(_0x353527,_0x3a326f,_0x3a13e3,_0x17b407,_0x4e81d6,_0x2b0fb4){var _0x5c23d1,_0x5d0890,_0x4b2e5d,_0x1bfce9;_0x2b0fb4['remoteUri']=intUtil[_0x107e('0x53')](_0x2b0fb4['remoteUri']);_0x2b0fb4[_0x107e('0x54')]=intUtil[_0x107e('0x53')](_0x2b0fb4[_0x107e('0x54')]);def[_0x107e('0x55')]=util[_0x107e('0x24')](_0x107e('0x56'),_0x2b0fb4[_0x107e('0x52')]);if(_0x4e81d6&&_0x4e81d6[_0x107e('0x57')]){logger[_0x107e('0xc')]('['+_0x3a326f['lastevent'][_0x107e('0x73')]()+']',_0x107e('0x59'));_0x3a326f['recordingURL']=util[_0x107e('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2b0fb4[_0x107e('0x54')],_0x3a326f[_0x107e('0x5c')],md5(_0x3a326f[_0x107e('0x5c')]));}else{_0x3a326f[_0x107e('0x5a')]='';}return getConnection(_0x2b0fb4)[_0x107e('0x37')](function(_0x53d75e){_0x1bfce9=_0x53d75e;if(!_['isNil'](_0x17b407)){return getUser(_0x2b0fb4,_0x17b407[_0x107e('0xe')],_0x1bfce9);}else{return getUser(_0x2b0fb4,null,_0x1bfce9);}})['then'](function(_0x2c2269){_0x5c23d1=_0x2c2269;logger[_0x107e('0xc')](_0x107e('0x74'),_0x5c23d1['id']);return getEndUser(_0x2b0fb4,_0x3a326f[_0x107e('0x75')],_0x3a326f[_0x107e('0x5d')],_0x1bfce9);})[_0x107e('0x37')](function(_0xb15a12){_0x5d0890=_0xb15a12;logger[_0x107e('0xc')](_0x107e('0x5e'),_0x5d0890['id']);return getTicket(_0x2b0fb4,_0x5c23d1,_0x5d0890,_0x3a13e3,_0x3a326f,_0x3a13e3[_0x107e('0x5f')],_0x1bfce9,'Inbound');})[_0x107e('0x37')](function(_0x29cced){_0x4b2e5d=_0x29cced;logger[_0x107e('0xc')](_0x107e('0x61'));logger['info'](_0x107e('0x62'),_0x4b2e5d['id']);return setRelationship(_0x1bfce9,_0x5c23d1,_0x4b2e5d,_0x107e('0x63'));})[_0x107e('0x37')](function(){return setRelationship(_0x1bfce9,_0x5d0890,_0x4b2e5d,_0x107e('0x64'));})['then'](function(){return getServerInfo(_0x1bfce9);})['catch'](function(_0x1ebd05){logger[_0x107e('0x76')]('['+_0x3a326f[_0x107e('0x77')][_0x107e('0x73')]()+']',JSON['stringify'](_0x1ebd05));});};
\ No newline at end of file
index 679d6f6..a519134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf744=['%s:\x20%s','keyContent','customVariable','join','substring','lastIndexOf','validateEmail','isNil','lodash','util','getString','length','type','string','push','content','variableName','toString','Variable','name','toLowerCase','keyValue','keyType','key','format'];(function(_0x42f1e7,_0x3a1279){var _0x460d91=function(_0x3e9820){while(--_0x3e9820){_0x42f1e7['push'](_0x42f1e7['shift']());}};_0x460d91(++_0x3a1279);}(_0xf744,0x1e3));var _0x4f74=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xf744[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0x4f74('0x0'));var util=require(_0x4f74('0x1'));exports[_0x4f74('0x2')]=function(_0x8a6f9,_0x265333,_0x5ace54){var _0x589ecb=[];if(_0x8a6f9[_0x4f74('0x3')]>0x0){var _0x484d31=_['sortBy'](_0x8a6f9,['id']);for(var _0x2adb3b=0x0;_0x2adb3b<_0x484d31[_0x4f74('0x3')];_0x2adb3b++){var _0x34eb38=_0x484d31[_0x2adb3b];if(_0x34eb38[_0x4f74('0x4')]===_0x4f74('0x5')){_0x589ecb[_0x4f74('0x6')](_0x34eb38[_0x4f74('0x7')]);}else if(_0x34eb38[_0x4f74('0x4')]==='variable'&&_0x34eb38[_0x4f74('0x8')]){_0x265333[_0x34eb38['variableName']]&&_0x589ecb[_0x4f74('0x6')](_0x265333[_0x34eb38[_0x4f74('0x8')]][_0x4f74('0x9')]());}else if(_0x34eb38[_0x4f74('0x4')]==='customVariable'&&_0x34eb38[_0x4f74('0xa')]&&_0x34eb38[_0x4f74('0xa')][_0x4f74('0xb')]){_0x265333[_0x34eb38['Variable']['name'][_0x4f74('0xc')]()]&&_0x589ecb[_0x4f74('0x6')](_0x265333[_0x34eb38['Variable'][_0x4f74('0xb')]['toLowerCase']()][_0x4f74('0x9')]());}else if(_0x34eb38[_0x4f74('0x4')]===_0x4f74('0xd')){if(_0x34eb38[_0x4f74('0xe')]===_0x4f74('0x5')&&_0x34eb38[_0x4f74('0xf')]){_0x589ecb[_0x4f74('0x6')](util[_0x4f74('0x10')](_0x4f74('0x11'),_0x34eb38[_0x4f74('0xf')],_0x34eb38[_0x4f74('0x12')]));}else if(_0x34eb38[_0x4f74('0xe')]==='variable'&&_0x34eb38['variableName']&&_0x34eb38[_0x4f74('0xf')]){_0x265333[_0x34eb38[_0x4f74('0x8')]]&&_0x589ecb['push'](util[_0x4f74('0x10')](_0x4f74('0x11'),_0x34eb38[_0x4f74('0xf')],_0x265333[_0x34eb38['variableName']]));}else if(_0x34eb38[_0x4f74('0xe')]===_0x4f74('0x13')&&_0x34eb38[_0x4f74('0xa')]&&_0x34eb38[_0x4f74('0xa')][_0x4f74('0xb')]&&_0x34eb38[_0x4f74('0xf')]){_0x265333[_0x34eb38[_0x4f74('0xa')]['name'][_0x4f74('0xc')]()]&&_0x589ecb[_0x4f74('0x6')](util[_0x4f74('0x10')]('%s:\x20%s',_0x34eb38['key'],_0x265333[_0x34eb38['Variable']['name'][_0x4f74('0xc')]()]));}}}}return _0x589ecb[_0x4f74('0x14')](_0x5ace54);};exports['stripTrailingSlash']=function(_0x20ba5a){var _0x4a9df9=_0x20ba5a['slice'](-0x1);if(_0x4a9df9==='/'){_0x20ba5a=_0x20ba5a[_0x4f74('0x15')](0x0,_0x20ba5a[_0x4f74('0x16')](_0x4a9df9));}return _0x20ba5a;};exports[_0x4f74('0x17')]=function(_0x3ac02c){if(!_[_0x4f74('0x18')](_0x3ac02c)&&_0x3ac02c!==''){var _0x1c0a15=/^(([^<>()\[\]\\.,;:\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 _0x1c0a15['test'](String(_0x3ac02c)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x6a3e=['keyContent','keyType','customVariable','toLowerCase','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil','lodash','util','getString','length','sortBy','string','type','variable','variableName','push','toString','Variable','name','keyValue','key','format','%s:\x20%s'];(function(_0x148341,_0x1dae62){var _0x46e748=function(_0x24c071){while(--_0x24c071){_0x148341['push'](_0x148341['shift']());}};_0x46e748(++_0x1dae62);}(_0x6a3e,0xac));var _0xe6a3=function(_0x45957a,_0x1e4da5){_0x45957a=_0x45957a-0x0;var _0x39af23=_0x6a3e[_0x45957a];return _0x39af23;};'use strict';var _=require(_0xe6a3('0x0'));var util=require(_0xe6a3('0x1'));exports[_0xe6a3('0x2')]=function(_0x2c85dc,_0xf76117,_0x56a240){var _0xe44a90=[];if(_0x2c85dc[_0xe6a3('0x3')]>0x0){var _0x4162f8=_[_0xe6a3('0x4')](_0x2c85dc,['id']);for(var _0x138634=0x0;_0x138634<_0x4162f8[_0xe6a3('0x3')];_0x138634++){var _0xcadf50=_0x4162f8[_0x138634];if(_0xcadf50['type']===_0xe6a3('0x5')){_0xe44a90['push'](_0xcadf50['content']);}else if(_0xcadf50[_0xe6a3('0x6')]===_0xe6a3('0x7')&&_0xcadf50[_0xe6a3('0x8')]){_0xf76117[_0xcadf50[_0xe6a3('0x8')]]&&_0xe44a90[_0xe6a3('0x9')](_0xf76117[_0xcadf50[_0xe6a3('0x8')]][_0xe6a3('0xa')]());}else if(_0xcadf50['type']==='customVariable'&&_0xcadf50[_0xe6a3('0xb')]&&_0xcadf50[_0xe6a3('0xb')][_0xe6a3('0xc')]){_0xf76117[_0xcadf50[_0xe6a3('0xb')]['name']['toLowerCase']()]&&_0xe44a90[_0xe6a3('0x9')](_0xf76117[_0xcadf50['Variable'][_0xe6a3('0xc')]['toLowerCase']()]['toString']());}else if(_0xcadf50[_0xe6a3('0x6')]===_0xe6a3('0xd')){if(_0xcadf50['keyType']==='string'&&_0xcadf50[_0xe6a3('0xe')]){_0xe44a90[_0xe6a3('0x9')](util[_0xe6a3('0xf')](_0xe6a3('0x10'),_0xcadf50['key'],_0xcadf50[_0xe6a3('0x11')]));}else if(_0xcadf50['keyType']===_0xe6a3('0x7')&&_0xcadf50[_0xe6a3('0x8')]&&_0xcadf50[_0xe6a3('0xe')]){_0xf76117[_0xcadf50[_0xe6a3('0x8')]]&&_0xe44a90[_0xe6a3('0x9')](util[_0xe6a3('0xf')](_0xe6a3('0x10'),_0xcadf50[_0xe6a3('0xe')],_0xf76117[_0xcadf50['variableName']]));}else if(_0xcadf50[_0xe6a3('0x12')]===_0xe6a3('0x13')&&_0xcadf50[_0xe6a3('0xb')]&&_0xcadf50['Variable']['name']&&_0xcadf50[_0xe6a3('0xe')]){_0xf76117[_0xcadf50['Variable'][_0xe6a3('0xc')][_0xe6a3('0x14')]()]&&_0xe44a90[_0xe6a3('0x9')](util[_0xe6a3('0xf')](_0xe6a3('0x10'),_0xcadf50['key'],_0xf76117[_0xcadf50[_0xe6a3('0xb')][_0xe6a3('0xc')][_0xe6a3('0x14')]()]));}}}}return _0xe44a90['join'](_0x56a240);};exports[_0xe6a3('0x15')]=function(_0x517892){var _0xc37988=_0x517892[_0xe6a3('0x16')](-0x1);if(_0xc37988==='/'){_0x517892=_0x517892[_0xe6a3('0x17')](0x0,_0x517892[_0xe6a3('0x18')](_0xc37988));}return _0x517892;};exports[_0xe6a3('0x19')]=function(_0x2fe103){if(!_[_0xe6a3('0x1a')](_0x2fe103)&&_0x2fe103!==''){var _0x31e122=/^(([^<>()\[\]\\.,;:\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 _0x31e122['test'](String(_0x2fe103)[_0xe6a3('0x14')]());}else{return![];}};
\ No newline at end of file
index c65a624..1e781ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x17471e,_0x219039){var _0x27fbea=function(_0x4518dd){while(--_0x4518dd){_0x17471e['push'](_0x17471e['shift']());}};_0x27fbea(++_0x219039);}(_0x34e8,0x12c));var _0x834e=function(_0x51f34b,_0x26faa9){_0x51f34b=_0x51f34b-0x0;var _0x3e4b74=_0x34e8[_0x51f34b];return _0x3e4b74;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index e0ef73f..38ef885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4107=['Descriptions','Fields','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','%s/users/me.json','remoteUri','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','stringify','GET','type','nameField','customField','toLowerCase','content','includes','string','picklist','custom_fields','idField','push','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','%s/agent/tickets/%s','replace','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','ioredis','./util','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','getString','Subjects'];(function(_0x391c55,_0x168617){var _0xa434e0=function(_0x51fa5c){while(--_0x51fa5c){_0x391c55['push'](_0x391c55['shift']());}};_0xa434e0(++_0x168617);}(_0x4107,0x126));var _0x7410=function(_0x4a45b4,_0x59804f){_0x4a45b4=_0x4a45b4-0x0;var _0x1a99c9=_0x4107[_0x4a45b4];return _0x1a99c9;};'use strict';var _=require(_0x7410('0x0'));var rp=require('request-promise');var md5=require(_0x7410('0x1'));var util=require('util');var Redis=require(_0x7410('0x2'));var intUtil=require(_0x7410('0x3'));var config=require('../../../../config/environment');var logger=require(_0x7410('0x4'))(_0x7410('0x5'));config[_0x7410('0x6')]=_[_0x7410('0x7')](config['redis'],{'host':_0x7410('0x8'),'port':0x18eb});var io=require(_0x7410('0x9'))(new Redis(config[_0x7410('0x6')]));function emit(_0x5a346b,_0x52ad4b,_0x8a831e){io['to'](_0x5a346b)['emit'](_0x52ad4b,_0x8a831e);}var headers={'Content-Type':_0x7410('0xa'),'Accept':'application/json'};function getTicket(_0xce1a66,_0x355700,_0x1452d3,_0x51f604,_0x1d1a9b){logger[_0x7410('0xb')](_0x7410('0xc'));return request({'uri':util[_0x7410('0xd')](_0x7410('0xe'),_0xce1a66['remoteUri']),'method':_0x7410('0xf'),'body':{'ticket':_[_0x7410('0x10')]({'requester_id':_0x1452d3['id'],'submitter_id':_0x355700?_0x355700['id']:undefined,'assignee_id':_0x355700?_0x355700['id']:undefined,'tags':getTags(_0x51f604[_0x7410('0x11')],_0x7410('0x12')),'subject':intUtil[_0x7410('0x13')](_0x51f604[_0x7410('0x14')],_0x1d1a9b,'\x20'),'description':intUtil['getString'](_0x51f604[_0x7410('0x15')],_0x1d1a9b,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x51f604[_0x7410('0x15')],_0x1d1a9b,'\x0a')}},getCustomFields(_0x51f604[_0x7410('0x16')],_0x1d1a9b))}})[_0x7410('0x17')](function(_0x5dfdf3){logger[_0x7410('0xb')](_0x7410('0x18'));return _0x5dfdf3['ticket'];});}function getUser(_0x464359,_0x49fe17){if(intUtil[_0x7410('0x19')](_0x49fe17)){logger[_0x7410('0xb')](_0x7410('0x1a'),_0x49fe17);return request({'uri':util[_0x7410('0xd')](_0x7410('0x1b'),_0x464359['remoteUri']),'qs':{'query':util[_0x7410('0xd')](_0x7410('0x1c'),_0x49fe17)}})[_0x7410('0x17')](function(_0x1b1c95){if(_0x1b1c95[_0x7410('0x1d')]){logger[_0x7410('0xb')](_0x7410('0x1e'));return _[_0x7410('0x1f')](_0x1b1c95[_0x7410('0x20')],{'email':_0x49fe17,'role':'agent'});}else{logger[_0x7410('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x7410('0xd')](_0x7410('0x21'),_0x464359[_0x7410('0x22')])})['then'](function(_0x554ba4){logger[_0x7410('0xb')](_0x7410('0x23'));return _0x554ba4[_0x7410('0x24')];});}});}else{logger['info'](_0x7410('0x25'));return request({'uri':util[_0x7410('0xd')]('%s/users/me.json',_0x464359[_0x7410('0x22')])})[_0x7410('0x17')](function(_0x56e274){logger[_0x7410('0xb')]('Admin\x20account\x20selected.');return _0x56e274[_0x7410('0x24')];});}}function getEndUser(_0x1fca95,_0x3d9a50,_0xa5428b){logger[_0x7410('0xb')]('Searching\x20enduser\x20with\x20phone',_0xa5428b);return request({'uri':util[_0x7410('0xd')](_0x7410('0x1b'),_0x1fca95['remoteUri']),'qs':{'query':util[_0x7410('0xd')](_0x7410('0x26'),_0xa5428b)}})[_0x7410('0x17')](function(_0x43d268){var _0x4839cf;if(_0x43d268[_0x7410('0x20')][_0x7410('0x27')]){_0x43d268['results']=_[_0x7410('0x28')](_0x43d268[_0x7410('0x20')],{'suspended':![],'role':_0x7410('0x29')});if(_0x43d268['results']['length']){_0x4839cf=_['first'](_0x43d268['results']);}}if(_0x4839cf){logger[_0x7410('0xb')]('Enduser\x20found!');return _0x4839cf;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x7410('0xd')](_0x7410('0x2a'),_0x1fca95[_0x7410('0x22')]),'method':_0x7410('0xf'),'body':{'user':{'role':_0x7410('0x29'),'name':util[_0x7410('0xd')](_0x7410('0x2b'),_0x3d9a50||_0xa5428b),'phone':_0xa5428b}}})['then'](function(_0x46d8f7){logger[_0x7410('0xb')](_0x7410('0x2c'));return _0x46d8f7[_0x7410('0x24')];});}});}function getAuth(_0x24bc5d){var _0x469790;if(_0x24bc5d['authType']===_0x7410('0x2d')){_0x469790=util[_0x7410('0xd')](_0x7410('0x2e'),_0x24bc5d[_0x7410('0x2f')],_0x24bc5d[_0x7410('0x2d')]);}else if(_0x24bc5d['authType']===_0x7410('0x30')){_0x469790=util[_0x7410('0xd')](_0x7410('0x31'),_0x24bc5d['username'],_0x24bc5d[_0x7410('0x30')]);}return util[_0x7410('0xd')](_0x7410('0x32'),new Buffer(_0x469790)[_0x7410('0x33')](_0x7410('0x34')));}function request(_0x2b5926){logger['debug']('[HTTP]',JSON[_0x7410('0x35')](_0x2b5926));return rp(_[_0x7410('0x7')](_0x2b5926,{'method':_0x7410('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x2a6c71,_0x185776){var _0x38695d=[];if(_0x2a6c71&&_0x2a6c71[_0x7410('0x27')]>0x0){_0x38695d=_['map'](_0x2a6c71,_0x185776);}return _0x38695d;}function getCustomFields(_0x12d6a1,_0xfe9359){var _0x22ebe1=[];var _0x3c4762={'custom_fields':[]};if(_0x12d6a1['length']>0x0){_['forEach'](_0x12d6a1,function(_0x5b4661){if(_['includes'](['string','picklist'],_0x5b4661[_0x7410('0x37')])&&_0x5b4661[_0x7410('0x38')]&&!_0x5b4661[_0x7410('0x39')]){_0x3c4762[_0x5b4661[_0x7410('0x38')][_0x7410('0x3a')]()]=_0x5b4661[_0x7410('0x3b')][_0x7410('0x33')]();}else if(_[_0x7410('0x3c')]([_0x7410('0x3d'),_0x7410('0x3e')],_0x5b4661[_0x7410('0x37')])&&_0x5b4661['idField']&&_0x5b4661[_0x7410('0x39')]){_0x3c4762[_0x7410('0x3f')]['push']({'id':_0x5b4661['idField'],'value':_0x5b4661[_0x7410('0x3b')][_0x7410('0x33')]()});}else if(_0x5b4661[_0x7410('0x37')]==='variable'&&_0x5b4661['variableName']&&_0x5b4661[_0x7410('0x40')]&&_0x5b4661[_0x7410('0x39')]){_0xfe9359[_0x5b4661['variableName']]&&_0x3c4762[_0x7410('0x3f')][_0x7410('0x41')]({'id':_0x5b4661[_0x7410('0x40')],'value':_0xfe9359[_0x5b4661[_0x7410('0x42')]][_0x7410('0x33')]()});}else if(_0x5b4661[_0x7410('0x37')]==='customVariable'&&_0x5b4661[_0x7410('0x43')]&&_0x5b4661[_0x7410('0x43')]['name']&&_0x5b4661[_0x7410('0x40')]&&_0x5b4661['customField']){_0xfe9359[_0x5b4661[_0x7410('0x43')]['name'][_0x7410('0x3a')]()]&&_0x3c4762['custom_fields'][_0x7410('0x41')]({'id':_0x5b4661[_0x7410('0x40')],'value':_0xfe9359[_0x5b4661['Variable'][_0x7410('0x12')][_0x7410('0x3a')]()][_0x7410('0x33')]()});}});}return _0x3c4762;}exports[_0x7410('0x44')]=function(_0x3411c0,_0x104aa5,_0x3103b3,_0x2f2328,_0x2160df,_0x103412){var _0x17b24a,_0x5b83bf;_0x103412['remoteUri']=intUtil[_0x7410('0x45')](_0x103412['remoteUri']);_0x103412[_0x7410('0x46')]=intUtil['stripTrailingSlash'](_0x103412[_0x7410('0x46')]);if(_0x2160df&&_0x2160df[_0x7410('0x47')]){logger[_0x7410('0xb')](_0x7410('0x48'),'Recording\x20is\x20enabled!');_0x104aa5[_0x7410('0x49')]=util[_0x7410('0xd')](_0x7410('0x4a'),_0x103412[_0x7410('0x46')],_0x104aa5[_0x7410('0x4b')],md5(_0x104aa5['uniqueid']));}else{_0x104aa5[_0x7410('0x49')]='';}headers[_0x7410('0x4c')]=getAuth(_0x103412);return getUser(_0x103412,_0x2f2328[_0x7410('0x4d')])[_0x7410('0x17')](function(_0x464184){_0x17b24a=_0x464184;logger[_0x7410('0xb')]('The\x20User\x20ID\x20is:',_0x17b24a['id']);return getEndUser(_0x103412,_0x104aa5['calleridname'],_0x104aa5[_0x7410('0x4e')]);})[_0x7410('0x17')](function(_0x337944){_0x5b83bf=_0x337944;logger[_0x7410('0xb')](_0x7410('0x4f'),_0x5b83bf['id']);return getTicket(_0x103412,_0x17b24a,_0x5b83bf,_0x3103b3,_0x104aa5);})[_0x7410('0x17')](function(_0x5ab7e0){if(_0x5ab7e0){logger[_0x7410('0xb')](_0x7410('0x50'),_0x5ab7e0['id']);switch(_0x103412[_0x7410('0x37')]){case _0x7410('0x51'):logger[_0x7410('0xb')](_0x7410('0x48'),_0x7410('0x52'));return request({'uri':util[_0x7410('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x103412[_0x7410('0x22')],_0x17b24a['id'],_0x5ab7e0['id']),'method':_0x7410('0xf')});case'newTab':logger[_0x7410('0xb')](_0x7410('0x48'),_0x7410('0x53'));emit(util[_0x7410('0xd')](_0x7410('0x54'),_0x2f2328['name']),_0x7410('0x55'),{'uri':util[_0x7410('0xd')]('%s/agent/tickets/%s',_0x103412[_0x7410('0x22')]['replace'](_0x7410('0x56'),''),_0x5ab7e0['id'])});break;default:logger[_0x7410('0x57')](_0x7410('0x48'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x7410('0x58')](function(_0x4543f2){logger[_0x7410('0x57')](_0x7410('0x59'),util[_0x7410('0x5a')](_0x4543f2,{'showHidden':!![],'depth':null}));});};exports[_0x7410('0x5b')]=function(_0x2a18e9,_0x1a036f,_0x55b226,_0x118735,_0x31e236,_0x56f71e,_0x4f1923){var _0x34b9e9,_0x20268c;_0x56f71e['remoteUri']=intUtil[_0x7410('0x45')](_0x56f71e['remoteUri']);_0x56f71e[_0x7410('0x46')]=intUtil[_0x7410('0x45')](_0x56f71e[_0x7410('0x46')]);if(_0x4f1923&&_0x4f1923[_0x7410('0x5c')]&&_0x4f1923[_0x7410('0x5c')]!==_0x7410('0x5d')){logger[_0x7410('0xb')](_0x7410('0x5e'),'Recording\x20is\x20enabled!');_0x1a036f[_0x7410('0x49')]=util[_0x7410('0xd')](_0x7410('0x4a'),_0x56f71e[_0x7410('0x46')],_0x1a036f[_0x7410('0x4b')],md5(_0x1a036f[_0x7410('0x4b')]));}headers[_0x7410('0x4c')]=getAuth(_0x56f71e);return getUser(_0x56f71e,_0x118735[_0x7410('0x4d')])[_0x7410('0x17')](function(_0x4b4141){_0x34b9e9=_0x4b4141;logger['info'](_0x7410('0x5f'),_0x34b9e9['id']);return getEndUser(_0x56f71e,_0x1a036f['destcalleridname'],_0x1a036f[_0x7410('0x60')]);})[_0x7410('0x17')](function(_0x1077fe){_0x20268c=_0x1077fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x20268c['id']);return getTicket(_0x56f71e,_0x34b9e9,_0x20268c,_0x55b226,_0x1a036f);})['then'](function(_0x5b53b3){if(_0x5b53b3){logger['info'](_0x7410('0x50'),_0x5b53b3['id']);switch(_0x56f71e['type']){case _0x7410('0x51'):logger['info'](_0x7410('0x5e'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x7410('0xd')](_0x7410('0x61'),_0x56f71e['remoteUri'],_0x34b9e9['id'],_0x5b53b3['id']),'method':'POST'});case'newTab':logger[_0x7410('0xb')](_0x7410('0x5e'),_0x7410('0x53'));emit(util[_0x7410('0xd')]('user:%s',_0x118735[_0x7410('0x12')]),_0x7410('0x55'),{'uri':util[_0x7410('0xd')](_0x7410('0x62'),_0x56f71e['remoteUri'][_0x7410('0x63')](_0x7410('0x56'),''),_0x5b53b3['id'])});break;default:logger[_0x7410('0x57')]('[OUTBOUND]',_0x7410('0x64'));}}})[_0x7410('0x58')](function(_0x49d521){logger[_0x7410('0x57')](_0x7410('0x65'),util[_0x7410('0x5a')](_0x49d521,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x144cb5,_0xee269,_0x2e2ee7,_0x170645,_0x76b36b,_0x25251c){var _0x13d654,_0x26020c;_0x25251c[_0x7410('0x22')]=intUtil['stripTrailingSlash'](_0x25251c[_0x7410('0x22')]);_0x25251c[_0x7410('0x46')]=intUtil['stripTrailingSlash'](_0x25251c[_0x7410('0x46')]);if(_0x76b36b&&_0x76b36b['monitor_format']){logger[_0x7410('0xb')]('['+_0xee269[_0x7410('0x66')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0xee269[_0x7410('0x49')]=util[_0x7410('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x25251c[_0x7410('0x46')],_0xee269['uniqueid'],md5(_0xee269[_0x7410('0x4b')]));}else{_0xee269['recordingURL']='';}headers[_0x7410('0x4c')]=getAuth(_0x25251c);return getUser(_0x25251c)[_0x7410('0x17')](function(_0x481a90){_0x13d654=_0x481a90;logger[_0x7410('0xb')]('The\x20User\x20ID\x20is:',_0x13d654['id']);return getEndUser(_0x25251c,_0xee269['calleridname'],_0xee269['calleridnum']);})['then'](function(_0x33bc79){_0x26020c=_0x33bc79;logger[_0x7410('0xb')]('The\x20Enduser\x20ID\x20is:',_0x26020c['id']);return getTicket(_0x25251c,_0x13d654,_0x26020c,_0x2e2ee7,_0xee269);})['then'](function(_0x40a16a){if(_0x40a16a){logger['info'](_0x7410('0x50'),_0x40a16a['id']);}})['catch'](function(_0x33da2d){logger[_0x7410('0x57')]('['+_0xee269[_0x7410('0x66')][_0x7410('0x67')]()+']'+_0x7410('0x68'),util[_0x7410('0x5a')](_0x33da2d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xffb0=['filter','end-user','first','Enduser\x20found!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','%s:%s','username','password','authType','token','Basic\x20%s','toString','[HTTP]','stringify','GET','includes','string','picklist','type','nameField','customField','toLowerCase','content','custom_fields','push','variable','idField','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','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','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','integrationTab','/api/v2','[OUTBOUND]','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','catch','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length'];(function(_0x276d59,_0xf8c2e5){var _0xfc7a62=function(_0x422394){while(--_0x422394){_0x276d59['push'](_0x276d59['shift']());}};_0xfc7a62(++_0xf8c2e5);}(_0xffb0,0x127));var _0x0ffb=function(_0x50723b,_0x2d714c){_0x50723b=_0x50723b-0x0;var _0x222dd8=_0xffb0[_0x50723b];return _0x222dd8;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x0ffb('0x0'));var util=require(_0x0ffb('0x1'));var Redis=require(_0x0ffb('0x2'));var intUtil=require(_0x0ffb('0x3'));var config=require('../../../../config/environment');var logger=require(_0x0ffb('0x4'))(_0x0ffb('0x5'));config['redis']=_[_0x0ffb('0x6')](config[_0x0ffb('0x7')],{'host':_0x0ffb('0x8'),'port':0x18eb});var io=require(_0x0ffb('0x9'))(new Redis(config[_0x0ffb('0x7')]));function emit(_0x2c9bbf,_0xac6267,_0x3c57df){io['to'](_0x2c9bbf)[_0x0ffb('0xa')](_0xac6267,_0x3c57df);}var headers={'Content-Type':_0x0ffb('0xb'),'Accept':_0x0ffb('0xb')};function getTicket(_0x2ac092,_0x3e6a50,_0x4c3daf,_0x2b67f7,_0x4bb8b9){logger['info'](_0x0ffb('0xc'));return request({'uri':util[_0x0ffb('0xd')]('%s/tickets.json',_0x2ac092[_0x0ffb('0xe')]),'method':'POST','body':{'ticket':_[_0x0ffb('0xf')]({'requester_id':_0x4c3daf['id'],'submitter_id':_0x3e6a50?_0x3e6a50['id']:undefined,'assignee_id':_0x3e6a50?_0x3e6a50['id']:undefined,'tags':getTags(_0x2b67f7[_0x0ffb('0x10')],_0x0ffb('0x11')),'subject':intUtil[_0x0ffb('0x12')](_0x2b67f7[_0x0ffb('0x13')],_0x4bb8b9,'\x20'),'description':intUtil[_0x0ffb('0x12')](_0x2b67f7[_0x0ffb('0x14')],_0x4bb8b9,'\x0a'),'comment':{'public':![],'body':intUtil[_0x0ffb('0x12')](_0x2b67f7[_0x0ffb('0x14')],_0x4bb8b9,'\x0a')}},getCustomFields(_0x2b67f7[_0x0ffb('0x15')],_0x4bb8b9))}})[_0x0ffb('0x16')](function(_0x432e42){logger[_0x0ffb('0x17')](_0x0ffb('0x18'));return _0x432e42[_0x0ffb('0x19')];});}function getUser(_0x37017b,_0x18beb4){if(intUtil[_0x0ffb('0x1a')](_0x18beb4)){logger[_0x0ffb('0x17')](_0x0ffb('0x1b'),_0x18beb4);return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x1c'),_0x37017b['remoteUri']),'qs':{'query':util['format'](_0x0ffb('0x1d'),_0x18beb4)}})[_0x0ffb('0x16')](function(_0x11356e){if(_0x11356e[_0x0ffb('0x1e')]){logger[_0x0ffb('0x17')](_0x0ffb('0x1f'));return _[_0x0ffb('0x20')](_0x11356e[_0x0ffb('0x21')],{'email':_0x18beb4,'role':_0x0ffb('0x22')});}else{logger[_0x0ffb('0x17')](_0x0ffb('0x23'));return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x24'),_0x37017b[_0x0ffb('0xe')])})['then'](function(_0x11a040){logger[_0x0ffb('0x17')](_0x0ffb('0x25'));return _0x11a040['user'];});}});}else{logger[_0x0ffb('0x17')](_0x0ffb('0x23'));return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x24'),_0x37017b[_0x0ffb('0xe')])})[_0x0ffb('0x16')](function(_0x6aa2d){logger[_0x0ffb('0x17')](_0x0ffb('0x25'));return _0x6aa2d[_0x0ffb('0x26')];});}}function getEndUser(_0x2dbef0,_0x44150d,_0x259dad){logger['info'](_0x0ffb('0x27'),_0x259dad);return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x1c'),_0x2dbef0[_0x0ffb('0xe')]),'qs':{'query':util[_0x0ffb('0xd')]('type:user\x20role:end-user\x20phone:%s',_0x259dad)}})[_0x0ffb('0x16')](function(_0x5f3515){var _0x31eee1;if(_0x5f3515[_0x0ffb('0x21')][_0x0ffb('0x28')]){_0x5f3515['results']=_[_0x0ffb('0x29')](_0x5f3515[_0x0ffb('0x21')],{'suspended':![],'role':_0x0ffb('0x2a')});if(_0x5f3515[_0x0ffb('0x21')][_0x0ffb('0x28')]){_0x31eee1=_[_0x0ffb('0x2b')](_0x5f3515[_0x0ffb('0x21')]);}}if(_0x31eee1){logger[_0x0ffb('0x17')](_0x0ffb('0x2c'));return _0x31eee1;}else{logger[_0x0ffb('0x17')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x2d'),_0x2dbef0['remoteUri']),'method':_0x0ffb('0x2e'),'body':{'user':{'role':'end-user','name':util[_0x0ffb('0xd')](_0x0ffb('0x2f'),_0x44150d||_0x259dad),'phone':_0x259dad}}})[_0x0ffb('0x16')](function(_0x3cfd91){logger[_0x0ffb('0x17')](_0x0ffb('0x30'));return _0x3cfd91[_0x0ffb('0x26')];});}});}function getAuth(_0x1fa08b){var _0x23bff8;if(_0x1fa08b['authType']==='password'){_0x23bff8=util[_0x0ffb('0xd')](_0x0ffb('0x31'),_0x1fa08b[_0x0ffb('0x32')],_0x1fa08b[_0x0ffb('0x33')]);}else if(_0x1fa08b[_0x0ffb('0x34')]==='token'){_0x23bff8=util[_0x0ffb('0xd')]('%s/token:%s',_0x1fa08b[_0x0ffb('0x32')],_0x1fa08b[_0x0ffb('0x35')]);}return util[_0x0ffb('0xd')](_0x0ffb('0x36'),new Buffer(_0x23bff8)[_0x0ffb('0x37')]('base64'));}function request(_0x232249){logger['debug'](_0x0ffb('0x38'),JSON[_0x0ffb('0x39')](_0x232249));return rp(_[_0x0ffb('0x6')](_0x232249,{'method':_0x0ffb('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x2e5791,_0x245f88){var _0x4f0b84=[];if(_0x2e5791&&_0x2e5791['length']>0x0){_0x4f0b84=_['map'](_0x2e5791,_0x245f88);}return _0x4f0b84;}function getCustomFields(_0x4b1064,_0x25e72c){var _0xc9d331=[];var _0x105036={'custom_fields':[]};if(_0x4b1064[_0x0ffb('0x28')]>0x0){_['forEach'](_0x4b1064,function(_0x15da35){if(_[_0x0ffb('0x3b')]([_0x0ffb('0x3c'),_0x0ffb('0x3d')],_0x15da35[_0x0ffb('0x3e')])&&_0x15da35[_0x0ffb('0x3f')]&&!_0x15da35[_0x0ffb('0x40')]){_0x105036[_0x15da35[_0x0ffb('0x3f')][_0x0ffb('0x41')]()]=_0x15da35[_0x0ffb('0x42')][_0x0ffb('0x37')]();}else if(_[_0x0ffb('0x3b')]([_0x0ffb('0x3c'),_0x0ffb('0x3d')],_0x15da35[_0x0ffb('0x3e')])&&_0x15da35['idField']&&_0x15da35[_0x0ffb('0x40')]){_0x105036[_0x0ffb('0x43')][_0x0ffb('0x44')]({'id':_0x15da35['idField'],'value':_0x15da35[_0x0ffb('0x42')][_0x0ffb('0x37')]()});}else if(_0x15da35[_0x0ffb('0x3e')]===_0x0ffb('0x45')&&_0x15da35['variableName']&&_0x15da35[_0x0ffb('0x46')]&&_0x15da35['customField']){_0x25e72c[_0x15da35[_0x0ffb('0x47')]]&&_0x105036[_0x0ffb('0x43')]['push']({'id':_0x15da35['idField'],'value':_0x25e72c[_0x15da35[_0x0ffb('0x47')]]['toString']()});}else if(_0x15da35[_0x0ffb('0x3e')]===_0x0ffb('0x48')&&_0x15da35[_0x0ffb('0x49')]&&_0x15da35[_0x0ffb('0x49')][_0x0ffb('0x11')]&&_0x15da35[_0x0ffb('0x46')]&&_0x15da35[_0x0ffb('0x40')]){_0x25e72c[_0x15da35[_0x0ffb('0x49')][_0x0ffb('0x11')][_0x0ffb('0x41')]()]&&_0x105036[_0x0ffb('0x43')][_0x0ffb('0x44')]({'id':_0x15da35['idField'],'value':_0x25e72c[_0x15da35['Variable'][_0x0ffb('0x11')][_0x0ffb('0x41')]()][_0x0ffb('0x37')]()});}});}return _0x105036;}exports[_0x0ffb('0x4a')]=function(_0x3084ab,_0xdbb7eb,_0x13836d,_0x32b282,_0x25cb39,_0x29077d){var _0x3c8776,_0x46ed40;_0x29077d[_0x0ffb('0xe')]=intUtil[_0x0ffb('0x4b')](_0x29077d[_0x0ffb('0xe')]);_0x29077d[_0x0ffb('0x4c')]=intUtil[_0x0ffb('0x4b')](_0x29077d['serverUrl']);if(_0x25cb39&&_0x25cb39[_0x0ffb('0x4d')]){logger['info'](_0x0ffb('0x4e'),'Recording\x20is\x20enabled!');_0xdbb7eb[_0x0ffb('0x4f')]=util['format'](_0x0ffb('0x50'),_0x29077d[_0x0ffb('0x4c')],_0xdbb7eb['uniqueid'],md5(_0xdbb7eb[_0x0ffb('0x51')]));}else{_0xdbb7eb[_0x0ffb('0x4f')]='';}headers[_0x0ffb('0x52')]=getAuth(_0x29077d);return getUser(_0x29077d,_0x32b282['email'])[_0x0ffb('0x16')](function(_0xf2ae7c){_0x3c8776=_0xf2ae7c;logger[_0x0ffb('0x17')]('The\x20User\x20ID\x20is:',_0x3c8776['id']);return getEndUser(_0x29077d,_0xdbb7eb[_0x0ffb('0x53')],_0xdbb7eb['calleridnum']);})[_0x0ffb('0x16')](function(_0x2c470b){_0x46ed40=_0x2c470b;logger[_0x0ffb('0x17')](_0x0ffb('0x54'),_0x46ed40['id']);return getTicket(_0x29077d,_0x3c8776,_0x46ed40,_0x13836d,_0xdbb7eb);})['then'](function(_0x491535){if(_0x491535){logger['info'](_0x0ffb('0x55'),_0x491535['id']);switch(_0x29077d[_0x0ffb('0x3e')]){case'integrationTab':logger[_0x0ffb('0x17')](_0x0ffb('0x4e'),_0x0ffb('0x56'));return request({'uri':util[_0x0ffb('0xd')](_0x0ffb('0x57'),_0x29077d[_0x0ffb('0xe')],_0x3c8776['id'],_0x491535['id']),'method':'POST'});case _0x0ffb('0x58'):logger[_0x0ffb('0x17')](_0x0ffb('0x4e'),_0x0ffb('0x59'));emit(util[_0x0ffb('0xd')](_0x0ffb('0x5a'),_0x32b282[_0x0ffb('0x11')]),_0x0ffb('0x5b'),{'uri':util[_0x0ffb('0xd')](_0x0ffb('0x5c'),_0x29077d[_0x0ffb('0xe')]['replace']('/api/v2',''),_0x491535['id'])});break;default:logger[_0x0ffb('0x5d')](_0x0ffb('0x4e'),_0x0ffb('0x5e'));}}})['catch'](function(_0x55d529){logger[_0x0ffb('0x5d')](_0x0ffb('0x5f'),util[_0x0ffb('0x60')](_0x55d529,{'showHidden':!![],'depth':null}));});};exports[_0x0ffb('0x61')]=function(_0x1423d7,_0x11d0ad,_0xeb089b,_0x2547d0,_0x5b4812,_0x35403d,_0x5c5718){var _0x5ad37e,_0x3b8a83;_0x35403d[_0x0ffb('0xe')]=intUtil[_0x0ffb('0x4b')](_0x35403d[_0x0ffb('0xe')]);_0x35403d[_0x0ffb('0x4c')]=intUtil[_0x0ffb('0x4b')](_0x35403d['serverUrl']);if(_0x5c5718&&_0x5c5718[_0x0ffb('0x62')]&&_0x5c5718[_0x0ffb('0x62')]!==_0x0ffb('0x63')){logger[_0x0ffb('0x17')]('[OUTBOUND]',_0x0ffb('0x64'));_0x11d0ad['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35403d[_0x0ffb('0x4c')],_0x11d0ad['uniqueid'],md5(_0x11d0ad[_0x0ffb('0x51')]));}headers[_0x0ffb('0x52')]=getAuth(_0x35403d);return getUser(_0x35403d,_0x2547d0['email'])[_0x0ffb('0x16')](function(_0x81b9c4){_0x5ad37e=_0x81b9c4;logger['info'](_0x0ffb('0x65'),_0x5ad37e['id']);return getEndUser(_0x35403d,_0x11d0ad[_0x0ffb('0x66')],_0x11d0ad['destcalleridnum']);})['then'](function(_0x96f763){_0x3b8a83=_0x96f763;logger[_0x0ffb('0x17')](_0x0ffb('0x54'),_0x3b8a83['id']);return getTicket(_0x35403d,_0x5ad37e,_0x3b8a83,_0xeb089b,_0x11d0ad);})[_0x0ffb('0x16')](function(_0x4f4159){if(_0x4f4159){logger['info'](_0x0ffb('0x55'),_0x4f4159['id']);switch(_0x35403d['type']){case _0x0ffb('0x67'):logger[_0x0ffb('0x17')]('[OUTBOUND]',_0x0ffb('0x56'));return request({'uri':util[_0x0ffb('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x35403d[_0x0ffb('0xe')],_0x5ad37e['id'],_0x4f4159['id']),'method':_0x0ffb('0x2e')});case'newTab':logger[_0x0ffb('0x17')]('[OUTBOUND]',_0x0ffb('0x59'));emit(util[_0x0ffb('0xd')](_0x0ffb('0x5a'),_0x2547d0[_0x0ffb('0x11')]),'trigger:browser:url',{'uri':util['format'](_0x0ffb('0x5c'),_0x35403d[_0x0ffb('0xe')]['replace'](_0x0ffb('0x68'),''),_0x4f4159['id'])});break;default:logger[_0x0ffb('0x5d')](_0x0ffb('0x69'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x568256){logger[_0x0ffb('0x5d')](_0x0ffb('0x6a'),util[_0x0ffb('0x60')](_0x568256,{'showHidden':!![],'depth':null}));});};exports[_0x0ffb('0x6b')]=function(_0x339aa8,_0x5ed7a8,_0x544092,_0x563340,_0x4df48c,_0x2e3354){var _0x333e08,_0x45b947;_0x2e3354['remoteUri']=intUtil[_0x0ffb('0x4b')](_0x2e3354[_0x0ffb('0xe')]);_0x2e3354[_0x0ffb('0x4c')]=intUtil[_0x0ffb('0x4b')](_0x2e3354[_0x0ffb('0x4c')]);if(_0x4df48c&&_0x4df48c['monitor_format']){logger[_0x0ffb('0x17')]('['+_0x5ed7a8[_0x0ffb('0x6c')][_0x0ffb('0x6d')]()+']','Recording\x20is\x20enabled!');_0x5ed7a8[_0x0ffb('0x4f')]=util[_0x0ffb('0xd')](_0x0ffb('0x50'),_0x2e3354[_0x0ffb('0x4c')],_0x5ed7a8[_0x0ffb('0x51')],md5(_0x5ed7a8['uniqueid']));}else{_0x5ed7a8['recordingURL']='';}headers[_0x0ffb('0x52')]=getAuth(_0x2e3354);return getUser(_0x2e3354)['then'](function(_0x3abdc5){_0x333e08=_0x3abdc5;logger[_0x0ffb('0x17')]('The\x20User\x20ID\x20is:',_0x333e08['id']);return getEndUser(_0x2e3354,_0x5ed7a8[_0x0ffb('0x53')],_0x5ed7a8['calleridnum']);})[_0x0ffb('0x16')](function(_0x149dd1){_0x45b947=_0x149dd1;logger[_0x0ffb('0x17')](_0x0ffb('0x54'),_0x45b947['id']);return getTicket(_0x2e3354,_0x333e08,_0x45b947,_0x544092,_0x5ed7a8);})['then'](function(_0x69ae8d){if(_0x69ae8d){logger[_0x0ffb('0x17')](_0x0ffb('0x55'),_0x69ae8d['id']);}})[_0x0ffb('0x6e')](function(_0x837b90){logger['error']('['+_0x5ed7a8[_0x0ffb('0x6c')][_0x0ffb('0x6d')]()+']'+_0x0ffb('0x6f'),util[_0x0ffb('0x60')](_0x837b90,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index ce5656f..a8ebf93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2179=['Abandoned','timeout','Timeout','Call_Start_Time','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','host','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/downloads?type=uniqueid&token=','uniqueid','com','email','The\x20User\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','recordingFormat','[OUTBOUND]','/api/voice/recordings/','zoho.eu','destcalleridname','Outbound','The\x20Call\x20ID\x20is:','user:%s','/crm/EntityInfo.do?module=Calls&id=','unmanaged','monitor_format','calleridnum','toUpperCase','lodash','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','emit','[HTTP]','forEach','includes','string','picklist','type','idField','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','isBefore','expires_in','access_token','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','then','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','Administrator','user','profile','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','stringify','error','data','enduserType','/crm/v2/','moduleCreate','role','first_name','last_name','code','SUCCESS','details','log','GET','moduleSearch','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','uri','https://www.zohoapis.','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description','Descriptions','Who_Id','First_Name','Last_Name','Full_Name','startCase','talktime','Call_Duration','utc','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','format','mm:ss','lastevent','called','Called','connect','Call_Result','Answered','rejected','Rejected','abandoned'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2179,0xc0));var _0x9217=function(_0x2deed4,_0x2793e8){_0x2deed4=_0x2deed4-0x0;var _0xfb91f4=_0x2179[_0x2deed4];return _0xfb91f4;};'use strict';var _=require(_0x9217('0x0'));var rp=require(_0x9217('0x1'));var md5=require(_0x9217('0x2'));var util=require(_0x9217('0x3'));var intUtil=require(_0x9217('0x4'));var moment=require(_0x9217('0x5'));var Redis=require(_0x9217('0x6'));var BPromise=require(_0x9217('0x7'));var config=require(_0x9217('0x8'));var logger=require(_0x9217('0x9'))(_0x9217('0xa'));config[_0x9217('0xb')]=_[_0x9217('0xc')](config[_0x9217('0xb')],{'host':_0x9217('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9217('0xb')]));function emit(_0x38127f,_0x23b2e7,_0x2da50f){io['to'](_0x38127f)[_0x9217('0xe')](_0x23b2e7,_0x2da50f);}function request(_0x5e7d99){logger['debug'](_0x9217('0xf'),JSON['stringify'](_0x5e7d99));return rp(_0x5e7d99);}function getCustomFields(_0x1baed8,_0x3304cb){var _0x43a75c={};if(_0x1baed8['length']>0x0){_[_0x9217('0x10')](_0x1baed8,function(_0x2c9f23){if(_[_0x9217('0x11')]([_0x9217('0x12'),_0x9217('0x13')],_0x2c9f23[_0x9217('0x14')])&&_0x2c9f23[_0x9217('0x15')]){_0x43a75c[_0x2c9f23[_0x9217('0x15')]]=_0x2c9f23['content'][_0x9217('0x16')]();}else if(_0x2c9f23['type']===_0x9217('0x17')&&_0x2c9f23[_0x9217('0x18')]&&_0x2c9f23[_0x9217('0x15')]&&_0x3304cb[_0x2c9f23[_0x9217('0x18')]]){_0x43a75c[_0x2c9f23[_0x9217('0x15')]]=_0x3304cb[_0x2c9f23[_0x9217('0x18')]][_0x9217('0x16')]();}else if(_0x2c9f23[_0x9217('0x14')]===_0x9217('0x19')&&_0x2c9f23[_0x9217('0x1a')]&&_0x2c9f23[_0x9217('0x1a')][_0x9217('0x1b')]&&_0x2c9f23[_0x9217('0x15')]&&_0x3304cb[_0x2c9f23[_0x9217('0x1a')][_0x9217('0x1b')][_0x9217('0x1c')]()]){_0x43a75c[_0x2c9f23[_0x9217('0x15')]]=_0x3304cb[_0x2c9f23[_0x9217('0x1a')][_0x9217('0x1b')][_0x9217('0x1c')]()][_0x9217('0x16')]();}});}return _0x43a75c;}function getName(_0xe81f49){if(_0xe81f49[_0x9217('0x1d')]('\x20')>0x0){var _0x1f5ca6=_0xe81f49[_0x9217('0x1e')](/ (.+)/);if(_0x1f5ca6[0x1]){return _0x1f5ca6;}}return[_0xe81f49,_0xe81f49];}var accountsTokens={};function getAccessToken(_0x3af8ab){return new Promise(function(_0x32c877,_0x3cc2fa){if(!_[_0x9217('0x1f')](accountsTokens[_0x3af8ab['id']])&&!_[_0x9217('0x1f')](accountsTokens[_0x3af8ab['id']]['access_token'])){if(moment()[_0x9217('0x20')](accountsTokens[_0x3af8ab['id']][_0x9217('0x21')])){_0x32c877(accountsTokens[_0x3af8ab['id']][_0x9217('0x22')]);}}var _0x37287f;switch(_0x3af8ab[_0x9217('0x23')]){case'US':_0x37287f=_0x9217('0x24');break;case'AU':_0x37287f='https://accounts.zoho.com.au';break;case'EU':_0x37287f=_0x9217('0x25');break;case'IN':_0x37287f=_0x9217('0x26');break;case'CN':_0x37287f=_0x9217('0x27');break;default:_0x37287f='https://accounts.zoho.eu';break;}var _0x160584={'method':_0x9217('0x28'),'uri':_0x37287f+_0x9217('0x29'),'qs':{'refresh_token':_0x3af8ab[_0x9217('0x2a')],'client_id':_0x3af8ab[_0x9217('0x2b')],'client_secret':_0x3af8ab[_0x9217('0x2c')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x160584)[_0x9217('0x2d')](function(_0x1fb79c){accountsTokens[_0x3af8ab['id']]={'access_token':_0x1fb79c['access_token'],'expires_in':moment()['add'](_0x1fb79c['expires_in'],_0x9217('0x2e'))};_0x32c877(_0x1fb79c[_0x9217('0x22')]);})[_0x9217('0x2f')](function(_0x363d18){logger['error'](_0x9217('0x30'),_0x363d18[_0x9217('0x31')]);_0x3cc2fa(_0x363d18);});});}function getUser(_0x5c0563,_0x4ca793,_0xfa9b0f,_0xdbf544){logger[_0x9217('0x32')](_0x9217('0x33'));return request({'method':'GET','uri':util['format'](_0x9217('0x34'),_0x4ca793),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x9217('0x35')+_0x5c0563},'json':!![]})[_0x9217('0x2d')](function(_0xda4e6a){if(_0xda4e6a[_0x9217('0x36')]){var _0x125fbe=-0x1;if(_[_0x9217('0x37')](_0xda4e6a[_0x9217('0x36')])){if(!_['isNil'](_0xdbf544)){_0x125fbe=_[_0x9217('0x38')](_0xda4e6a[_0x9217('0x36')],function(_0x145646){return _0x145646['email']===_0xdbf544;});}if(_0x125fbe>=0x0){logger[_0x9217('0x32')](_0x9217('0x39'));}else{logger['info'](_0x9217('0x3a'));_0x125fbe=_['findIndex'](_0xda4e6a['users'],function(_0x110111){return _0x110111['profile']['name']===_0x9217('0x3b');});}return _0xda4e6a['users'][_0x125fbe];}else{if(_0xda4e6a[_0x9217('0x3c')][_0x9217('0x3d')][_0x9217('0x1b')]==='Administrator'){logger[_0x9217('0x32')](_0x9217('0x3a'));user=_0xda4e6a[_0x9217('0x3c')];return user;}else{logger['error'](_0x9217('0x3e'),JSON['stringify'](_0xda4e6a));throw new Error(_0x9217('0x3f')+JSON[_0x9217('0x40')](_0xda4e6a));}}}else{logger[_0x9217('0x41')]('The\x20failing\x20result\x20is',JSON['stringify'](_0xda4e6a));throw new Error(_0x9217('0x3f')+JSON[_0x9217('0x40')](_0xda4e6a));}})[_0x9217('0x2f')](function(_0x5a0645){console[_0x9217('0x41')](_0x5a0645);});}function getZohoUser(_0x4f3fd4,_0x5dd160){return new BPromise(function(_0x2756fe,_0x51e8cd){request(_0x4f3fd4)[_0x9217('0x2d')](function(_0x5ad8b4){var _0x179f90=null;if(_0x5ad8b4){_0x179f90=_0x5ad8b4[_0x9217('0x42')][0x0];_0x179f90[_0x9217('0x43')]=_0x5dd160;}_0x2756fe(_0x179f90);})['catch'](function(_0x34932f){_0x51e8cd(_0x34932f);});});}function createEndUser(_0x2cbde5,_0x223df1,_0x3fec47,_0x47b77d,_0x257b46,_0x2fe194){var _0x3fec47=getName(_0x3fec47);return request({'method':_0x9217('0x28'),'uri':'https://www.zohoapis.'+_0x223df1+_0x9217('0x44')+_['startCase'](_0x2fe194[_0x9217('0x45')])+'s','body':{'data':[{'Last_Name':_0x3fec47[0x1],'First_Name':_0x3fec47[0x0],'Phone':_0x47b77d,'Owner':{'name':!_['isNil'](_0x257b46[_0x9217('0x46')][_0x9217('0x1b')])?_0x257b46[_0x9217('0x46')]['name']:!_['isNil'](_0x257b46[_0x9217('0x47')])?_0x257b46[_0x9217('0x47')]+'\x20'+_0x257b46[_0x9217('0x48')]:_0x257b46[_0x9217('0x48')],'id':_0x257b46['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2cbde5},'json':!![]})['then'](function(_0x186004){if(_0x186004&&_0x186004[_0x9217('0x42')][0x0][_0x9217('0x49')]===_0x9217('0x4a')){var _0x133ac5=_0x186004[_0x9217('0x42')][0x0][_0x9217('0x4b')];_0x133ac5[_0x9217('0x43')]=_['startCase'](_0x2fe194[_0x9217('0x45')])+'s';return _0x133ac5;}logger['error'](_0x9217('0x3e'),JSON['stringify'](data));throw new Error('Error:\x20'+JSON[_0x9217('0x40')](data));})[_0x9217('0x2f')](function(_0x171a3b){console[_0x9217('0x4c')]('CREATE\x20ERROR',_0x171a3b);});}function getEndUser(_0x420da1,_0x1c4aaf,_0xa7d6f8,_0x54339f,_0x2b4514,_0x404393,_0x15b046){var _0x42612b={'method':_0x9217('0x4d'),'uri':'','headers':{'Authorization':_0x9217('0x35')+_0x420da1},'json':!![]};switch(_0x15b046[_0x9217('0x4e')]){case'contact_lead':_0x42612b['uri']='https://www.zohoapis.'+_0x1c4aaf+_0x9217('0x4f')+_0x2b4514+'))';return getZohoUser(_0x42612b,_0x9217('0x50'))[_0x9217('0x2d')](function(_0x3c39c6){if(_0x3c39c6)return _0x3c39c6;_0x42612b['uri']='https://www.zohoapis.'+_0x1c4aaf+_0x9217('0x51')+_0x2b4514+'))';return getZohoUser(_0x42612b,_0x9217('0x52'))[_0x9217('0x2d')](function(_0x15c4e6){if(_0x15c4e6)return _0x15c4e6;if(_0x15b046[_0x9217('0x45')]!=_0x9217('0x53')){return createEndUser(_0x420da1,_0x1c4aaf,_0x54339f,_0x2b4514,_0x404393,_0x15b046);}else{return{};}});});break;case'contact':_0x42612b[_0x9217('0x54')]=_0x9217('0x55')+_0x1c4aaf+_0x9217('0x4f')+_0x2b4514+'))';return getZohoUser(_0x42612b,_0x9217('0x50'))['then'](function(_0x53e29b){if(_0x53e29b)return _0x53e29b;if(_0x15b046['moduleCreate']!='nothing'){return createEndUser(_0x420da1,_0x1c4aaf,_0x54339f,_0x2b4514,_0x404393,_0x15b046);}else{return{};}});break;case'lead':_0x42612b[_0x9217('0x54')]=_0x9217('0x55')+_0x1c4aaf+_0x9217('0x51')+_0x2b4514+'))';return getZohoUser(_0x42612b,_0x9217('0x52'))[_0x9217('0x2d')](function(_0x17d6b3){if(_0x17d6b3)return _0x17d6b3;if(_0x15b046[_0x9217('0x45')]!=_0x9217('0x53')){return createEndUser(_0x420da1,_0x1c4aaf,_0x54339f,_0x2b4514,_0x404393,_0x15b046);}else{return{};}});break;}}function getCall(_0x3f8331,_0x4a1a37,_0xac1b51,_0x34eba2,_0x30ed77,_0x5d3569,_0x4c9a0c,_0x28722b){logger[_0x9217('0x32')](_0x9217('0x56'));var _0x4aa9d8={};_0x4aa9d8[_0x9217('0x57')]={'name':!_[_0x9217('0x1f')](_0x34eba2[_0x9217('0x46')][_0x9217('0x1b')])&&!_['isNil'](_0x34eba2['profile'][_0x9217('0x1b')])&&_0x34eba2[_0x9217('0x3d')][_0x9217('0x1b')]===_0x9217('0x58')?_0x34eba2['role']['name']:!_['isNil'](_0x34eba2[_0x9217('0x47')])?_0x34eba2['first_name']+'\x20'+_0x34eba2[_0x9217('0x48')]:_0x34eba2[_0x9217('0x48')],'id':_0x34eba2['id']};_0x4aa9d8[_0x9217('0x59')]=intUtil[_0x9217('0x5a')](_0x5d3569[_0x9217('0x5b')],_0x4c9a0c,'\x20');_0x4aa9d8[_0x9217('0x5c')]=intUtil[_0x9217('0x5a')](_0x5d3569[_0x9217('0x5d')],_0x4c9a0c,'\x0a');if(_0x30ed77[_0x9217('0x43')]===_0x9217('0x50')){_0x4aa9d8[_0x9217('0x5e')]={'name':!_[_0x9217('0x1f')](_0x30ed77['Full_Name'])?_0x30ed77['Full_Name']:!_[_0x9217('0x1f')](_0x30ed77[_0x9217('0x5f')])?_0x30ed77[_0x9217('0x5f')]+'\x20'+_0x30ed77[_0x9217('0x60')]:_0x30ed77[_0x9217('0x60')],'id':_0x30ed77['id']};}if(_0x30ed77[_0x9217('0x43')]==='Leads'){_0x4aa9d8['What_Id']={'name':!_[_0x9217('0x1f')](_0x30ed77['Full_Name'])?_0x30ed77[_0x9217('0x61')]:!_['isNil'](_0x30ed77[_0x9217('0x5f')])?_0x30ed77[_0x9217('0x5f')]+'\x20'+_0x30ed77[_0x9217('0x60')]:_0x30ed77[_0x9217('0x60')],'id':_0x30ed77['id']};_0x4aa9d8['$se_module']=_[_0x9217('0x62')](_0x30ed77[_0x9217('0x43')]);}if(_0x4c9a0c[_0x9217('0x63')]){_0x4aa9d8[_0x9217('0x64')]=moment[_0x9217('0x65')](parseInt(_0x4c9a0c[_0x9217('0x63')])*0x3e8)['format']('mm:ss');}else if(_0x4c9a0c[_0x9217('0x66')]&&_0x4c9a0c['endtime']){_0x4aa9d8[_0x9217('0x64')]=moment[_0x9217('0x65')](moment(_0x4c9a0c[_0x9217('0x67')],_0x9217('0x68'))[_0x9217('0x69')](moment(_0x4c9a0c[_0x9217('0x6a')],_0x9217('0x68'))))[_0x9217('0x6b')](_0x9217('0x6c'));}switch(_0x4c9a0c[_0x9217('0x6d')]){case _0x9217('0x6e'):_0x4aa9d8['Call_Result']=_0x9217('0x6f');break;case'complete':case _0x9217('0x70'):_0x4aa9d8[_0x9217('0x71')]=_0x9217('0x72');break;case _0x9217('0x73'):_0x4aa9d8['Call_Result']=_0x9217('0x74');break;case _0x9217('0x75'):_0x4aa9d8['Call_Result']=_0x9217('0x76');break;case _0x9217('0x77'):_0x4aa9d8[_0x9217('0x71')]=_0x9217('0x78');default:}_0x4aa9d8[_0x9217('0x79')]=(_0x28722b==='outbound'?moment(_0x4c9a0c[_0x9217('0x6a')])[_0x9217('0x6b')](_0x9217('0x68')):moment(_0x4c9a0c['agentcalledAt'])['format'](_0x9217('0x68')))||moment()[_0x9217('0x6b')](_0x9217('0x68'));_0x4aa9d8[_0x9217('0x7a')]=_0x28722b||_0x9217('0x7b');_0x4aa9d8=_[_0x9217('0x7c')](_0x4aa9d8,getCustomFields(_0x5d3569[_0x9217('0x7d')],_0x4c9a0c));return request({'method':'POST','uri':_0x9217('0x55')+_0x4a1a37+_0x9217('0x7e'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3f8331},'body':{'data':[_0x4aa9d8]},'json':!![]})[_0x9217('0x2d')](function(_0x417a32){if(_0x417a32&&_0x417a32[_0x9217('0x42')][0x0][_0x9217('0x49')]===_0x9217('0x4a')){logger['info'](_0x9217('0x7f'));return{'id':_0x417a32['data'][0x0][_0x9217('0x4b')]['id']};}})[_0x9217('0x2f')](function(_0x13843f){logger[_0x9217('0x32')](_0x9217('0x80'),_0x13843f[_0x9217('0x31')]);console[_0x9217('0x4c')](_0x9217('0x80'),_0x13843f);});}exports['queue']=function(_0xd9d95,_0x3f6e15,_0x57029b,_0x532a36,_0x3abe43,_0x3d40b2){var _0x424b7b,_0x3d5b4f,_0x405e04;_0x3d40b2[_0x9217('0x81')]=intUtil['stripTrailingSlash'](_0x3d40b2[_0x9217('0x81')]);_0x3d40b2[_0x9217('0x82')]=intUtil[_0x9217('0x83')](_0x3d40b2[_0x9217('0x82')]);if(_0x3abe43&&_0x3abe43['monitor_format']){logger['info'](_0x9217('0x84'),_0x9217('0x85'));_0x3f6e15[_0x9217('0x86')]=_0x3d40b2[_0x9217('0x82')]+'/api/voice/recordings/'+_0x3f6e15['uniqueid']+_0x9217('0x87')+md5(_0x3f6e15[_0x9217('0x88')]);}else{_0x3f6e15[_0x9217('0x86')]='';}var _0x1752ed=_0x3d40b2[_0x9217('0x81')]==='zoho.eu'?'eu':_0x9217('0x89');return getAccessToken(_0x3d40b2)[_0x9217('0x2d')](function(_0xccf656){_0x405e04=_0xccf656;return getUser(_0x405e04,_0x1752ed,_0x3d40b2,_0x532a36[_0x9217('0x8a')]);})[_0x9217('0x2d')](function(_0x253611){_0x424b7b=_0x253611;logger[_0x9217('0x32')](_0x9217('0x8b'),_0x424b7b['id']);return getEndUser(_0x405e04,_0x1752ed,_0x3d40b2,_0x3f6e15['calleridname'],_0x3f6e15['calleridnum'],_0x424b7b,_0x57029b);})[_0x9217('0x2d')](function(_0x3b8622){_0x3d5b4f=_0x3b8622;return getCall(_0x405e04,_0x1752ed,_0x3d40b2,_0x424b7b,_0x3d5b4f,_0x57029b,_0x3f6e15,'Inbound');})[_0x9217('0x2d')](function(_0x55c427){if(_0x55c427){logger['info']('The\x20Call\x20ID\x20is:',_0x55c427['id']);logger[_0x9217('0x32')](_0x9217('0x84'),_0x9217('0x8c'));emit(util['format']('user:%s',_0x532a36[_0x9217('0x1b')]),'trigger:browser:url',{'uri':_0x9217('0x8d')+_0x3d40b2[_0x9217('0x81')]+'/crm/EntityInfo.do?module=Calls&id='+_0x55c427['id']});}})['catch'](function(_0x5447ca){logger[_0x9217('0x41')](_0x9217('0x84'),JSON[_0x9217('0x40')](_0x5447ca));});};exports['outbound']=function(_0x4698a4,_0x1a7253,_0x49eccc,_0x1c2117,_0x2404ad,_0x3992f7,_0x29ee7b){var _0x10536f,_0x522ee1,_0x4cdb0b;_0x3992f7[_0x9217('0x81')]=intUtil[_0x9217('0x83')](_0x3992f7[_0x9217('0x81')]);_0x3992f7[_0x9217('0x82')]=intUtil[_0x9217('0x83')](_0x3992f7['serverUrl']);if(_0x29ee7b&&_0x29ee7b[_0x9217('0x8e')]&&_0x29ee7b[_0x9217('0x8e')]!=='none'){logger[_0x9217('0x32')](_0x9217('0x8f'),_0x9217('0x85'));_0x1a7253[_0x9217('0x86')]=_0x3992f7['serverUrl']+_0x9217('0x90')+_0x1a7253[_0x9217('0x88')]+'/downloads?type=uniqueid&token='+md5(_0x1a7253[_0x9217('0x88')]);}var _0xfb98f3=_0x3992f7[_0x9217('0x81')]===_0x9217('0x91')?'eu':_0x9217('0x89');return getAccessToken(_0x3992f7)['then'](function(_0x535fe2){_0x4cdb0b=_0x535fe2;return getUser(_0x4cdb0b,_0xfb98f3,_0x3992f7,_0x1c2117[_0x9217('0x8a')]);})[_0x9217('0x2d')](function(_0x558c15){_0x10536f=_0x558c15;logger[_0x9217('0x32')](_0x9217('0x8b'),_0x10536f['id']);return getEndUser(_0x4cdb0b,_0xfb98f3,_0x3992f7,_0x1a7253[_0x9217('0x92')],_0x1a7253['destcalleridnum'],_0x10536f,_0x49eccc);})[_0x9217('0x2d')](function(_0x502ab8){_0x522ee1=_0x502ab8;return getCall(_0x4cdb0b,_0xfb98f3,_0x3992f7,_0x10536f,_0x522ee1,_0x49eccc,_0x1a7253,_0x9217('0x93'));})[_0x9217('0x2d')](function(_0x5b7864){if(_0x5b7864){logger['info'](_0x9217('0x94'),_0x5b7864['id']);logger['info']('[OUTBOUND]',_0x9217('0x8c'));emit(util['format'](_0x9217('0x95'),_0x1c2117['name']),'trigger:browser:url',{'uri':'https://crm.'+_0x3992f7[_0x9217('0x81')]+_0x9217('0x96')+_0x5b7864['id']});}})['catch'](function(_0x31a5b0){logger[_0x9217('0x41')](_0x9217('0x8f'),JSON[_0x9217('0x40')](_0x31a5b0));});};exports[_0x9217('0x97')]=function(_0x50b062,_0x30b3cf,_0x1d9718,_0x421894,_0xecc6b,_0x56b691){var _0x7564be,_0x391385,_0x3a9925;_0x56b691['host']=intUtil[_0x9217('0x83')](_0x56b691[_0x9217('0x81')]);_0x56b691[_0x9217('0x82')]=intUtil['stripTrailingSlash'](_0x56b691[_0x9217('0x82')]);if(_0xecc6b&&_0xecc6b[_0x9217('0x98')]){logger['info']('['+_0x30b3cf['lastevent']['toUpperCase']()+']',_0x9217('0x85'));_0x30b3cf[_0x9217('0x86')]=_0x56b691[_0x9217('0x82')]+_0x9217('0x90')+_0x30b3cf[_0x9217('0x88')]+_0x9217('0x87')+md5(_0x30b3cf['uniqueid']);}else{_0x30b3cf['recordingURL']='';}var _0x28d9f0=_0x56b691[_0x9217('0x81')]===_0x9217('0x91')?'eu':'com';return getAccessToken(_0x56b691)['then'](function(_0x5a1fd1){_0x3a9925=_0x5a1fd1;return getUser(_0x3a9925,_0x28d9f0,_0x56b691);})[_0x9217('0x2d')](function(_0x5067cd){_0x7564be=_0x5067cd;logger['info'](_0x9217('0x8b'),_0x7564be['id']);return getEndUser(_0x3a9925,_0x28d9f0,_0x56b691,_0x30b3cf['calleridname'],_0x30b3cf[_0x9217('0x99')],_0x7564be,_0x1d9718);})[_0x9217('0x2d')](function(_0x128117){_0x391385=_0x128117;return getCall(_0x3a9925,_0x28d9f0,_0x56b691,_0x7564be,_0x391385,_0x1d9718,_0x30b3cf,_0x9217('0x7b'));})[_0x9217('0x2d')](function(_0x29c616){if(_0x29c616){logger[_0x9217('0x32')](_0x9217('0x94'),_0x29c616['id']);}})['catch'](function(_0x315aa1){logger[_0x9217('0x41')]('['+_0x30b3cf[_0x9217('0x6d')][_0x9217('0x9a')]()+']',JSON[_0x9217('0x40')](_0x315aa1));});};
\ No newline at end of file
+var _0xc258=['mm:ss','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','Call_Result','Called','complete','connect','Answered','abandoned','Abandoned','timeout','Call_Start_Time','outbound','Call_Type','Inbound','merge','Fields','code','Call\x20created!','details','err','stack','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','unmanaged','toUpperCase','md5','util','./util','moment','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','forEach','string','picklist','type','idField','content','variableName','toString','customVariable','Variable','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientSecret','refresh_token','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','name','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','POST','https://www.zohoapis.','/crm/v2/','startCase','role','first_name','last_name','SUCCESS','moduleCreate','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','uri','Creating\x20new\x20call...','Owner','administrator','Subject','Subjects','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','Call_Duration','utc'];(function(_0x286310,_0x497e39){var _0x34c6d9=function(_0xf60c92){while(--_0xf60c92){_0x286310['push'](_0x286310['shift']());}};_0x34c6d9(++_0x497e39);}(_0xc258,0x173));var _0x8c25=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xc258[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x8c25('0x0'));var util=require(_0x8c25('0x1'));var intUtil=require(_0x8c25('0x2'));var moment=require(_0x8c25('0x3'));var Redis=require(_0x8c25('0x4'));var BPromise=require('bluebird');var config=require(_0x8c25('0x5'));var logger=require(_0x8c25('0x6'))('zoho');config[_0x8c25('0x7')]=_[_0x8c25('0x8')](config[_0x8c25('0x7')],{'host':_0x8c25('0x9'),'port':0x18eb});var io=require(_0x8c25('0xa'))(new Redis(config['redis']));function emit(_0x77dc2f,_0x54cdb2,_0x3cecdc){io['to'](_0x77dc2f)[_0x8c25('0xb')](_0x54cdb2,_0x3cecdc);}function request(_0x4eadf2){logger['debug'](_0x8c25('0xc'),JSON[_0x8c25('0xd')](_0x4eadf2));return rp(_0x4eadf2);}function getCustomFields(_0x77dd36,_0x3c27d4){var _0x5d684b={};if(_0x77dd36[_0x8c25('0xe')]>0x0){_[_0x8c25('0xf')](_0x77dd36,function(_0x47660b){if(_['includes']([_0x8c25('0x10'),_0x8c25('0x11')],_0x47660b[_0x8c25('0x12')])&&_0x47660b[_0x8c25('0x13')]){_0x5d684b[_0x47660b[_0x8c25('0x13')]]=_0x47660b[_0x8c25('0x14')]['toString']();}else if(_0x47660b[_0x8c25('0x12')]==='variable'&&_0x47660b[_0x8c25('0x15')]&&_0x47660b[_0x8c25('0x13')]&&_0x3c27d4[_0x47660b['variableName']]){_0x5d684b[_0x47660b[_0x8c25('0x13')]]=_0x3c27d4[_0x47660b[_0x8c25('0x15')]][_0x8c25('0x16')]();}else if(_0x47660b[_0x8c25('0x12')]===_0x8c25('0x17')&&_0x47660b[_0x8c25('0x18')]&&_0x47660b['Variable']['name']&&_0x47660b['idField']&&_0x3c27d4[_0x47660b[_0x8c25('0x18')]['name']['toLowerCase']()]){_0x5d684b[_0x47660b['idField']]=_0x3c27d4[_0x47660b[_0x8c25('0x18')]['name'][_0x8c25('0x19')]()][_0x8c25('0x16')]();}});}return _0x5d684b;}function getName(_0x574518){if(_0x574518[_0x8c25('0x1a')]('\x20')>0x0){var _0x7d4bd6=_0x574518[_0x8c25('0x1b')](/ (.+)/);if(_0x7d4bd6[0x1]){return _0x7d4bd6;}}return[_0x574518,_0x574518];}var accountsTokens={};function getAccessToken(_0x4f6d96){return new Promise(function(_0x4ef670,_0x18f00a){if(!_[_0x8c25('0x1c')](accountsTokens[_0x4f6d96['id']])&&!_[_0x8c25('0x1c')](accountsTokens[_0x4f6d96['id']][_0x8c25('0x1d')])){if(moment()[_0x8c25('0x1e')](accountsTokens[_0x4f6d96['id']][_0x8c25('0x1f')])){_0x4ef670(accountsTokens[_0x4f6d96['id']][_0x8c25('0x1d')]);}}var _0x46ec41;switch(_0x4f6d96[_0x8c25('0x20')]){case'US':_0x46ec41=_0x8c25('0x21');break;case'AU':_0x46ec41=_0x8c25('0x22');break;case'EU':_0x46ec41='https://accounts.zoho.eu';break;case'IN':_0x46ec41=_0x8c25('0x23');break;case'CN':_0x46ec41=_0x8c25('0x24');break;default:_0x46ec41='https://accounts.zoho.eu';break;}var _0x4815c3={'method':'POST','uri':_0x46ec41+_0x8c25('0x25'),'qs':{'refresh_token':_0x4f6d96[_0x8c25('0x26')],'client_id':_0x4f6d96['clientId'],'client_secret':_0x4f6d96[_0x8c25('0x27')],'grant_type':_0x8c25('0x28')},'json':!![]};return rp(_0x4815c3)['then'](function(_0x11af96){accountsTokens[_0x4f6d96['id']]={'access_token':_0x11af96[_0x8c25('0x1d')],'expires_in':moment()[_0x8c25('0x29')](_0x11af96[_0x8c25('0x1f')],_0x8c25('0x2a'))};_0x4ef670(_0x11af96[_0x8c25('0x1d')]);})[_0x8c25('0x2b')](function(_0x3e1245){logger[_0x8c25('0x2c')](_0x8c25('0x2d'),_0x3e1245['stack']);_0x18f00a(_0x3e1245);});});}function getUser(_0x172b36,_0x351728,_0x311928,_0x83a5be){logger[_0x8c25('0x2e')](_0x8c25('0x2f'));return request({'method':_0x8c25('0x30'),'uri':util[_0x8c25('0x31')](_0x8c25('0x32'),_0x351728),'qs':{'type':_0x8c25('0x33')},'headers':{'Authorization':_0x8c25('0x34')+_0x172b36},'json':!![]})[_0x8c25('0x35')](function(_0x5f29bb){if(_0x5f29bb[_0x8c25('0x36')]){var _0xf13620=-0x1;if(_[_0x8c25('0x37')](_0x5f29bb[_0x8c25('0x36')])){if(!_[_0x8c25('0x1c')](_0x83a5be)){_0xf13620=_[_0x8c25('0x38')](_0x5f29bb[_0x8c25('0x36')],function(_0x3b3d71){return _0x3b3d71[_0x8c25('0x39')]===_0x83a5be;});}if(_0xf13620>=0x0){logger[_0x8c25('0x2e')](_0x8c25('0x3a'));}else{logger['info'](_0x8c25('0x3b'));_0xf13620=_[_0x8c25('0x38')](_0x5f29bb[_0x8c25('0x36')],function(_0xaefdcd){return _0xaefdcd[_0x8c25('0x3c')][_0x8c25('0x3d')]===_0x8c25('0x3e');});}return _0x5f29bb['users'][_0xf13620];}else{if(_0x5f29bb[_0x8c25('0x3f')][_0x8c25('0x3c')][_0x8c25('0x3d')]===_0x8c25('0x3e')){logger[_0x8c25('0x2e')](_0x8c25('0x3b'));user=_0x5f29bb[_0x8c25('0x3f')];return user;}else{logger[_0x8c25('0x2c')](_0x8c25('0x40'),JSON[_0x8c25('0xd')](_0x5f29bb));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x8c25('0xd')](_0x5f29bb));}}}else{logger[_0x8c25('0x2c')](_0x8c25('0x40'),JSON['stringify'](_0x5f29bb));throw new Error(_0x8c25('0x41')+JSON[_0x8c25('0xd')](_0x5f29bb));}})[_0x8c25('0x2b')](function(_0x16bd57){console[_0x8c25('0x2c')](_0x16bd57);});}function getZohoUser(_0x15de0e,_0x213975){return new BPromise(function(_0x58819f,_0x4e3fa9){request(_0x15de0e)[_0x8c25('0x35')](function(_0xf28818){var _0x1972ab=null;if(_0xf28818){_0x1972ab=_0xf28818[_0x8c25('0x42')][0x0];_0x1972ab[_0x8c25('0x43')]=_0x213975;}_0x58819f(_0x1972ab);})[_0x8c25('0x2b')](function(_0x11646b){_0x4e3fa9(_0x11646b);});});}function createEndUser(_0xb438e6,_0x192859,_0x488960,_0x115edc,_0x2215d3,_0x1e74de){var _0x488960=getName(_0x488960);return request({'method':_0x8c25('0x44'),'uri':_0x8c25('0x45')+_0x192859+_0x8c25('0x46')+_[_0x8c25('0x47')](_0x1e74de['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x488960[0x1],'First_Name':_0x488960[0x0],'Phone':_0x115edc,'Owner':{'name':!_[_0x8c25('0x1c')](_0x2215d3[_0x8c25('0x48')]['name'])?_0x2215d3[_0x8c25('0x48')][_0x8c25('0x3d')]:!_['isNil'](_0x2215d3['first_name'])?_0x2215d3[_0x8c25('0x49')]+'\x20'+_0x2215d3[_0x8c25('0x4a')]:_0x2215d3[_0x8c25('0x4a')],'id':_0x2215d3['id']}}]},'headers':{'Authorization':_0x8c25('0x34')+_0xb438e6},'json':!![]})[_0x8c25('0x35')](function(_0x76c13){if(_0x76c13&&_0x76c13[_0x8c25('0x42')][0x0]['code']===_0x8c25('0x4b')){var _0x125df9=_0x76c13['data'][0x0]['details'];_0x125df9['enduserType']=_[_0x8c25('0x47')](_0x1e74de[_0x8c25('0x4c')])+'s';return _0x125df9;}logger[_0x8c25('0x2c')]('The\x20failing\x20result\x20is',JSON[_0x8c25('0xd')](data));throw new Error(_0x8c25('0x4d')+JSON[_0x8c25('0xd')](data));})[_0x8c25('0x2b')](function(_0x24ec3b){console[_0x8c25('0x4e')](_0x8c25('0x4f'),_0x24ec3b);});}function getEndUser(_0x230e4a,_0x463046,_0x2930de,_0xecf1ea,_0x21301c,_0x4153db,_0x4a4590){var _0x31b115={'method':_0x8c25('0x30'),'uri':'','headers':{'Authorization':_0x8c25('0x34')+_0x230e4a},'json':!![]};switch(_0x4a4590[_0x8c25('0x50')]){case _0x8c25('0x51'):_0x31b115['uri']='https://www.zohoapis.'+_0x463046+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x21301c+'))';return getZohoUser(_0x31b115,_0x8c25('0x52'))[_0x8c25('0x35')](function(_0x3bad32){if(_0x3bad32)return _0x3bad32;_0x31b115['uri']=_0x8c25('0x45')+_0x463046+_0x8c25('0x53')+_0x21301c+'))';return getZohoUser(_0x31b115,_0x8c25('0x54'))[_0x8c25('0x35')](function(_0x2b1c81){if(_0x2b1c81)return _0x2b1c81;if(_0x4a4590[_0x8c25('0x4c')]!=_0x8c25('0x55')){return createEndUser(_0x230e4a,_0x463046,_0xecf1ea,_0x21301c,_0x4153db,_0x4a4590);}else{return{};}});});break;case _0x8c25('0x56'):_0x31b115['uri']=_0x8c25('0x45')+_0x463046+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x21301c+'))';return getZohoUser(_0x31b115,_0x8c25('0x52'))[_0x8c25('0x35')](function(_0x2fc73a){if(_0x2fc73a)return _0x2fc73a;if(_0x4a4590[_0x8c25('0x4c')]!=_0x8c25('0x55')){return createEndUser(_0x230e4a,_0x463046,_0xecf1ea,_0x21301c,_0x4153db,_0x4a4590);}else{return{};}});break;case'lead':_0x31b115[_0x8c25('0x57')]=_0x8c25('0x45')+_0x463046+_0x8c25('0x53')+_0x21301c+'))';return getZohoUser(_0x31b115,_0x8c25('0x54'))['then'](function(_0x31491a){if(_0x31491a)return _0x31491a;if(_0x4a4590[_0x8c25('0x4c')]!=_0x8c25('0x55')){return createEndUser(_0x230e4a,_0x463046,_0xecf1ea,_0x21301c,_0x4153db,_0x4a4590);}else{return{};}});break;}}function getCall(_0x1b19c2,_0x2a417f,_0x26f38f,_0x39f4bd,_0x8c4446,_0x499edd,_0x1f784e,_0x1de497){logger[_0x8c25('0x2e')](_0x8c25('0x58'));var _0x180255={};_0x180255[_0x8c25('0x59')]={'name':!_[_0x8c25('0x1c')](_0x39f4bd['role'][_0x8c25('0x3d')])&&!_[_0x8c25('0x1c')](_0x39f4bd['profile'][_0x8c25('0x3d')])&&_0x39f4bd['profile'][_0x8c25('0x3d')]===_0x8c25('0x5a')?_0x39f4bd[_0x8c25('0x48')][_0x8c25('0x3d')]:!_[_0x8c25('0x1c')](_0x39f4bd[_0x8c25('0x49')])?_0x39f4bd[_0x8c25('0x49')]+'\x20'+_0x39f4bd[_0x8c25('0x4a')]:_0x39f4bd['last_name'],'id':_0x39f4bd['id']};_0x180255[_0x8c25('0x5b')]=intUtil['getString'](_0x499edd[_0x8c25('0x5c')],_0x1f784e,'\x20');_0x180255['Description']=intUtil[_0x8c25('0x5d')](_0x499edd[_0x8c25('0x5e')],_0x1f784e,'\x0a');if(_0x8c4446[_0x8c25('0x43')]===_0x8c25('0x52')){_0x180255[_0x8c25('0x5f')]={'name':!_['isNil'](_0x8c4446[_0x8c25('0x60')])?_0x8c4446[_0x8c25('0x60')]:!_[_0x8c25('0x1c')](_0x8c4446[_0x8c25('0x61')])?_0x8c4446[_0x8c25('0x61')]+'\x20'+_0x8c4446[_0x8c25('0x62')]:_0x8c4446['Last_Name'],'id':_0x8c4446['id']};}if(_0x8c4446[_0x8c25('0x43')]==='Leads'){_0x180255[_0x8c25('0x63')]={'name':!_['isNil'](_0x8c4446[_0x8c25('0x60')])?_0x8c4446['Full_Name']:!_[_0x8c25('0x1c')](_0x8c4446[_0x8c25('0x61')])?_0x8c4446[_0x8c25('0x61')]+'\x20'+_0x8c4446[_0x8c25('0x62')]:_0x8c4446[_0x8c25('0x62')],'id':_0x8c4446['id']};_0x180255['$se_module']=_[_0x8c25('0x47')](_0x8c4446[_0x8c25('0x43')]);}if(_0x1f784e[_0x8c25('0x64')]){_0x180255[_0x8c25('0x65')]=moment[_0x8c25('0x66')](parseInt(_0x1f784e[_0x8c25('0x64')])*0x3e8)[_0x8c25('0x31')](_0x8c25('0x67'));}else if(_0x1f784e['answertime']&&_0x1f784e[_0x8c25('0x68')]){_0x180255['Call_Duration']=moment[_0x8c25('0x66')](moment(_0x1f784e['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x8c25('0x69')](moment(_0x1f784e[_0x8c25('0x6a')],_0x8c25('0x6b'))))[_0x8c25('0x31')](_0x8c25('0x67'));}switch(_0x1f784e[_0x8c25('0x6c')]){case'called':_0x180255[_0x8c25('0x6d')]=_0x8c25('0x6e');break;case _0x8c25('0x6f'):case _0x8c25('0x70'):_0x180255[_0x8c25('0x6d')]=_0x8c25('0x71');break;case'rejected':_0x180255['Call_Result']='Rejected';break;case _0x8c25('0x72'):_0x180255[_0x8c25('0x6d')]=_0x8c25('0x73');break;case _0x8c25('0x74'):_0x180255[_0x8c25('0x6d')]='Timeout';default:}_0x180255[_0x8c25('0x75')]=(_0x1de497===_0x8c25('0x76')?moment(_0x1f784e[_0x8c25('0x6a')])[_0x8c25('0x31')](_0x8c25('0x6b')):moment(_0x1f784e['agentcalledAt'])[_0x8c25('0x31')](_0x8c25('0x6b')))||moment()[_0x8c25('0x31')](_0x8c25('0x6b'));_0x180255[_0x8c25('0x77')]=_0x1de497||_0x8c25('0x78');_0x180255=_[_0x8c25('0x79')](_0x180255,getCustomFields(_0x499edd[_0x8c25('0x7a')],_0x1f784e));return request({'method':_0x8c25('0x44'),'uri':_0x8c25('0x45')+_0x2a417f+'/crm/v2/Calls','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1b19c2},'body':{'data':[_0x180255]},'json':!![]})['then'](function(_0x1ad7f7){if(_0x1ad7f7&&_0x1ad7f7[_0x8c25('0x42')][0x0][_0x8c25('0x7b')]===_0x8c25('0x4b')){logger['info'](_0x8c25('0x7c'));return{'id':_0x1ad7f7[_0x8c25('0x42')][0x0][_0x8c25('0x7d')]['id']};}})['catch'](function(_0x52a542){logger['info'](_0x8c25('0x7e'),_0x52a542[_0x8c25('0x7f')]);console[_0x8c25('0x4e')](_0x8c25('0x7e'),_0x52a542);});}exports[_0x8c25('0x80')]=function(_0x35c944,_0x42146a,_0x154ae8,_0x284b27,_0x210c5d,_0x660c1a){var _0x4345cd,_0x12a873,_0x951e3;_0x660c1a[_0x8c25('0x81')]=intUtil[_0x8c25('0x82')](_0x660c1a['host']);_0x660c1a[_0x8c25('0x83')]=intUtil[_0x8c25('0x82')](_0x660c1a['serverUrl']);if(_0x210c5d&&_0x210c5d[_0x8c25('0x84')]){logger[_0x8c25('0x2e')](_0x8c25('0x85'),_0x8c25('0x86'));_0x42146a['recordingURL']=_0x660c1a[_0x8c25('0x83')]+_0x8c25('0x87')+_0x42146a[_0x8c25('0x88')]+'/downloads?type=uniqueid&token='+md5(_0x42146a['uniqueid']);}else{_0x42146a[_0x8c25('0x89')]='';}var _0x5a22bc=_0x660c1a[_0x8c25('0x81')]===_0x8c25('0x8a')?'eu':_0x8c25('0x8b');return getAccessToken(_0x660c1a)['then'](function(_0x4a6a3f){_0x951e3=_0x4a6a3f;return getUser(_0x951e3,_0x5a22bc,_0x660c1a,_0x284b27[_0x8c25('0x39')]);})[_0x8c25('0x35')](function(_0x2efd7d){_0x4345cd=_0x2efd7d;logger[_0x8c25('0x2e')](_0x8c25('0x8c'),_0x4345cd['id']);return getEndUser(_0x951e3,_0x5a22bc,_0x660c1a,_0x42146a[_0x8c25('0x8d')],_0x42146a[_0x8c25('0x8e')],_0x4345cd,_0x154ae8);})[_0x8c25('0x35')](function(_0x1876bd){_0x12a873=_0x1876bd;return getCall(_0x951e3,_0x5a22bc,_0x660c1a,_0x4345cd,_0x12a873,_0x154ae8,_0x42146a,_0x8c25('0x78'));})['then'](function(_0x5c87bf){if(_0x5c87bf){logger[_0x8c25('0x2e')]('The\x20Call\x20ID\x20is:',_0x5c87bf['id']);logger[_0x8c25('0x2e')](_0x8c25('0x85'),_0x8c25('0x8f'));emit(util['format'](_0x8c25('0x90'),_0x284b27[_0x8c25('0x3d')]),_0x8c25('0x91'),{'uri':_0x8c25('0x92')+_0x660c1a[_0x8c25('0x81')]+_0x8c25('0x93')+_0x5c87bf['id']});}})[_0x8c25('0x2b')](function(_0x1e85c3){logger['error'](_0x8c25('0x85'),JSON[_0x8c25('0xd')](_0x1e85c3));});};exports[_0x8c25('0x76')]=function(_0x4d317a,_0x5cb8df,_0x3fce79,_0x1c489c,_0x20d327,_0xab845a,_0xda8886){var _0x1c5854,_0x26c716,_0xbaf619;_0xab845a[_0x8c25('0x81')]=intUtil[_0x8c25('0x82')](_0xab845a[_0x8c25('0x81')]);_0xab845a['serverUrl']=intUtil[_0x8c25('0x82')](_0xab845a['serverUrl']);if(_0xda8886&&_0xda8886[_0x8c25('0x94')]&&_0xda8886[_0x8c25('0x94')]!==_0x8c25('0x95')){logger[_0x8c25('0x2e')](_0x8c25('0x96'),_0x8c25('0x86'));_0x5cb8df['recordingURL']=_0xab845a[_0x8c25('0x83')]+'/api/voice/recordings/'+_0x5cb8df[_0x8c25('0x88')]+_0x8c25('0x97')+md5(_0x5cb8df[_0x8c25('0x88')]);}var _0x16c940=_0xab845a[_0x8c25('0x81')]===_0x8c25('0x8a')?'eu':'com';return getAccessToken(_0xab845a)[_0x8c25('0x35')](function(_0x329db2){_0xbaf619=_0x329db2;return getUser(_0xbaf619,_0x16c940,_0xab845a,_0x1c489c['email']);})[_0x8c25('0x35')](function(_0xef1d66){_0x1c5854=_0xef1d66;logger[_0x8c25('0x2e')]('The\x20User\x20ID\x20is:',_0x1c5854['id']);return getEndUser(_0xbaf619,_0x16c940,_0xab845a,_0x5cb8df[_0x8c25('0x98')],_0x5cb8df[_0x8c25('0x99')],_0x1c5854,_0x3fce79);})[_0x8c25('0x35')](function(_0x5b4e04){_0x26c716=_0x5b4e04;return getCall(_0xbaf619,_0x16c940,_0xab845a,_0x1c5854,_0x26c716,_0x3fce79,_0x5cb8df,_0x8c25('0x9a'));})['then'](function(_0x23771d){if(_0x23771d){logger[_0x8c25('0x2e')](_0x8c25('0x9b'),_0x23771d['id']);logger[_0x8c25('0x2e')](_0x8c25('0x96'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8c25('0x31')]('user:%s',_0x1c489c[_0x8c25('0x3d')]),_0x8c25('0x91'),{'uri':_0x8c25('0x92')+_0xab845a[_0x8c25('0x81')]+_0x8c25('0x93')+_0x23771d['id']});}})[_0x8c25('0x2b')](function(_0x27d976){logger[_0x8c25('0x2c')](_0x8c25('0x96'),JSON[_0x8c25('0xd')](_0x27d976));});};exports[_0x8c25('0x9c')]=function(_0x14216c,_0x23f326,_0x2431c2,_0x5b9c96,_0x45c125,_0x214a03){var _0xeb646,_0x22e8cc,_0xb485ce;_0x214a03[_0x8c25('0x81')]=intUtil[_0x8c25('0x82')](_0x214a03[_0x8c25('0x81')]);_0x214a03[_0x8c25('0x83')]=intUtil[_0x8c25('0x82')](_0x214a03['serverUrl']);if(_0x45c125&&_0x45c125['monitor_format']){logger[_0x8c25('0x2e')]('['+_0x23f326['lastevent'][_0x8c25('0x9d')]()+']',_0x8c25('0x86'));_0x23f326['recordingURL']=_0x214a03[_0x8c25('0x83')]+_0x8c25('0x87')+_0x23f326['uniqueid']+_0x8c25('0x97')+md5(_0x23f326['uniqueid']);}else{_0x23f326[_0x8c25('0x89')]='';}var _0x56cbfb=_0x214a03['host']===_0x8c25('0x8a')?'eu':'com';return getAccessToken(_0x214a03)['then'](function(_0x4d46d2){_0xb485ce=_0x4d46d2;return getUser(_0xb485ce,_0x56cbfb,_0x214a03);})[_0x8c25('0x35')](function(_0x3206a3){_0xeb646=_0x3206a3;logger[_0x8c25('0x2e')](_0x8c25('0x8c'),_0xeb646['id']);return getEndUser(_0xb485ce,_0x56cbfb,_0x214a03,_0x23f326[_0x8c25('0x8d')],_0x23f326[_0x8c25('0x8e')],_0xeb646,_0x2431c2);})[_0x8c25('0x35')](function(_0x534c53){_0x22e8cc=_0x534c53;return getCall(_0xb485ce,_0x56cbfb,_0x214a03,_0xeb646,_0x22e8cc,_0x2431c2,_0x23f326,_0x8c25('0x78'));})[_0x8c25('0x35')](function(_0x40fce5){if(_0x40fce5){logger[_0x8c25('0x2e')](_0x8c25('0x9b'),_0x40fce5['id']);}})[_0x8c25('0x2b')](function(_0x33cd3c){logger[_0x8c25('0x2c')]('['+_0x23f326[_0x8c25('0x6c')][_0x8c25('0x9d')]()+']',JSON[_0x8c25('0xd')](_0x33cd3c));});};
\ No newline at end of file
index 1973db5..791d405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x795e=['render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0x795e,0xab));var _0xe795=function(_0x2542ec,_0x2c94c4){_0x2542ec=_0x2542ec-0x0;var _0x67f19=_0x795e[_0x2542ec];return _0x67f19;};'use strict';var util=require(_0xe795('0x0'));var sh=require(_0xe795('0x1'));var Mustache=require(_0xe795('0x2'));var logger=require(_0xe795('0x3'))(_0xe795('0x4'));exports[_0xe795('0x5')]=function(_0x277718,_0x43ed08){var _0x1780f7=_0x277718[_0xe795('0x6')]?_0x277718[_0xe795('0x6')]:_0xe795('0x7');var _0x4a5a45=_0x277718[_0xe795('0x8')]?Mustache[_0xe795('0x9')](_0x277718['data3'],_0x43ed08):_0x43ed08;sh[_0xe795('0x5')](_0x4a5a45,function(_0xaebb9a,_0x4c8253,_0x581c84){if(_0xaebb9a!==0x0){logger[_0xe795('0xa')](util[_0xe795('0xb')](_0xe795('0xc'),_0x1780f7,_0x4a5a45,_0xaebb9a,_0x581c84));}else{logger[_0xe795('0xd')](util[_0xe795('0xb')](_0xe795('0xe'),_0x1780f7,_0x4a5a45,_0x4c8253));}});};
\ No newline at end of file
+var _0x2571=['info','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s'];(function(_0xa72931,_0x37d87a){var _0x13b2f5=function(_0x2fc601){while(--_0x2fc601){_0xa72931['push'](_0xa72931['shift']());}};_0x13b2f5(++_0x37d87a);}(_0x2571,0x78));var _0x1257=function(_0x241424,_0x25eb5d){_0x241424=_0x241424-0x0;var _0x3da798=_0x2571[_0x241424];return _0x3da798;};'use strict';var util=require('util');var sh=require(_0x1257('0x0'));var Mustache=require(_0x1257('0x1'));var logger=require(_0x1257('0x2'))(_0x1257('0x3'));exports[_0x1257('0x4')]=function(_0x1b5b51,_0x2c21db){var _0x496d43=_0x1b5b51[_0x1257('0x5')]?_0x1b5b51['data2']:_0x1257('0x6');var _0x3b2590=_0x1b5b51[_0x1257('0x7')]?Mustache['render'](_0x1b5b51[_0x1257('0x7')],_0x2c21db):_0x2c21db;sh[_0x1257('0x4')](_0x3b2590,function(_0x18f382,_0xad20ae,_0x57ea4f){if(_0x18f382!==0x0){logger[_0x1257('0x8')](util['format'](_0x1257('0x9'),_0x496d43,_0x3b2590,_0x18f382,_0x57ea4f));}else{logger[_0x1257('0xa')](util[_0x1257('0xb')](_0x1257('0xc'),_0x496d43,_0x3b2590,_0xad20ae));}});};
\ No newline at end of file
index 67c7b3b..4501e4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf7f=['info','format','stringify','then','isNil',',\x20request\x20body:\x20','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','util','mustache','trigger','exec','toUpperCase','render','data2','number','data5','headers','data6','error','stack','data1','GET','POST','PUT','data7','parse','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body'];(function(_0xd7c1a6,_0x2b2f8f){var _0x3004f=function(_0xe7bed3){while(--_0xe7bed3){_0xd7c1a6['push'](_0xd7c1a6['shift']());}};_0x3004f(++_0x2b2f8f);}(_0xbf7f,0xab));var _0xfbf7=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xbf7f[_0x42245d];return _0x4b211a;};'use strict';var rp=require('request-promise');var util=require(_0xfbf7('0x0'));var _=require('lodash');var Mustache=require(_0xfbf7('0x1'));var logger=require('../../../../config/logger')(_0xfbf7('0x2'));exports[_0xfbf7('0x3')]=function(_0x81cfcc,_0x5e519f){var _0x2b230a,_0x216a4e;var _0x54ad1d={'method':_0x81cfcc['data1'][_0xfbf7('0x4')](),'uri':Mustache[_0xfbf7('0x5')](_0x81cfcc[_0xfbf7('0x6')],_0x5e519f),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x81cfcc['data5'])===_0xfbf7('0x7')&&parseInt(_0x81cfcc[_0xfbf7('0x8')])>=0x1&&parseInt(_0x81cfcc['data5'])<=0xa?parseInt(_0x81cfcc[_0xfbf7('0x8')])*0x3e8:0x5*0x3e8};try{_0x54ad1d[_0xfbf7('0x9')]=_0x81cfcc[_0xfbf7('0xa')]?JSON['parse'](Mustache[_0xfbf7('0x5')](_0x81cfcc[_0xfbf7('0xa')],_0x5e519f)):{};}catch(_0x44d849){logger[_0xfbf7('0xb')](_0x44d849[_0xfbf7('0xc')]);}switch(_0x81cfcc[_0xfbf7('0xd')][_0xfbf7('0x4')]()){case _0xfbf7('0xe'):case'DELETE':_0x2b230a=null;_0x54ad1d['qs']=_0x5e519f;break;case _0xfbf7('0xf'):case _0xfbf7('0x10'):if(_0x81cfcc[_0xfbf7('0x11')]){try{_0x2b230a=JSON[_0xfbf7('0x12')](Mustache[_0xfbf7('0x5')](_0x81cfcc[_0xfbf7('0x11')],_0x5e519f));_0x54ad1d['body']=_0x2b230a;}catch(_0x34fe34){logger[_0xfbf7('0xb')](_0x34fe34[_0xfbf7('0xc')]);logger[_0xfbf7('0xb')](_0xfbf7('0x13'));}}else{_0x2b230a=_0x5e519f;_0x54ad1d[_0xfbf7('0x14')]=_0x2b230a;}break;}logger[_0xfbf7('0x15')](util[_0xfbf7('0x16')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x81cfcc['data1'],_0x81cfcc[_0xfbf7('0x6')],JSON[_0xfbf7('0x17')](_0x54ad1d)));rp(_0x54ad1d)[_0xfbf7('0x18')](function(_0x3b9004){_0x2b230a=!_[_0xfbf7('0x19')](_0x2b230a)?_0xfbf7('0x1a')+_0x2b230a:'';_0x216a4e=typeof _0x3b9004[_0xfbf7('0x14')]==='object'?JSON[_0xfbf7('0x17')](_0x3b9004[_0xfbf7('0x14')]):_0x3b9004['body'];logger['info'](util[_0xfbf7('0x16')](_0xfbf7('0x1b'),_0x81cfcc['data1'],_0x81cfcc['data2'],_0x3b9004['statusCode'],_0x216a4e));})['catch'](function(_0x472308){logger[_0xfbf7('0xb')](util[_0xfbf7('0x16')](_0xfbf7('0x1c'),_0x81cfcc[_0xfbf7('0xd')],_0x81cfcc[_0xfbf7('0x6')],_0x472308[_0xfbf7('0x1d')],_0x472308[_0xfbf7('0x1e')],_0x472308[_0xfbf7('0x1f')]));});};
\ No newline at end of file
+var _0xca25=['%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data1','stringify','then','isNil',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','name','message','request-promise','util','mustache','../../../../config/logger','trigger','exec','toUpperCase','render','data2','number','data5','parse','error','stack','GET','POST','PUT','data7','body','info','format'];(function(_0x372e5c,_0x4b90a1){var _0x508d47=function(_0x321433){while(--_0x321433){_0x372e5c['push'](_0x372e5c['shift']());}};_0x508d47(++_0x4b90a1);}(_0xca25,0xf3));var _0x5ca2=function(_0x1ac15c,_0x273d6e){_0x1ac15c=_0x1ac15c-0x0;var _0x5bfd19=_0xca25[_0x1ac15c];return _0x5bfd19;};'use strict';var rp=require(_0x5ca2('0x0'));var util=require(_0x5ca2('0x1'));var _=require('lodash');var Mustache=require(_0x5ca2('0x2'));var logger=require(_0x5ca2('0x3'))(_0x5ca2('0x4'));exports[_0x5ca2('0x5')]=function(_0x162083,_0x123824){var _0x33381d,_0x2b8484;var _0xe3faff={'method':_0x162083['data1'][_0x5ca2('0x6')](),'uri':Mustache[_0x5ca2('0x7')](_0x162083[_0x5ca2('0x8')],_0x123824),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x162083['data5'])===_0x5ca2('0x9')&&parseInt(_0x162083['data5'])>=0x1&&parseInt(_0x162083[_0x5ca2('0xa')])<=0xa?parseInt(_0x162083['data5'])*0x3e8:0x5*0x3e8};try{_0xe3faff['headers']=_0x162083['data6']?JSON[_0x5ca2('0xb')](Mustache[_0x5ca2('0x7')](_0x162083['data6'],_0x123824)):{};}catch(_0x332a0f){logger[_0x5ca2('0xc')](_0x332a0f[_0x5ca2('0xd')]);}switch(_0x162083['data1']['toUpperCase']()){case _0x5ca2('0xe'):case'DELETE':_0x33381d=null;_0xe3faff['qs']=_0x123824;break;case _0x5ca2('0xf'):case _0x5ca2('0x10'):if(_0x162083['data7']){try{_0x33381d=JSON[_0x5ca2('0xb')](Mustache[_0x5ca2('0x7')](_0x162083[_0x5ca2('0x11')],_0x123824));_0xe3faff[_0x5ca2('0x12')]=_0x33381d;}catch(_0x47a1f2){logger[_0x5ca2('0xc')](_0x47a1f2[_0x5ca2('0xd')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x33381d=_0x123824;_0xe3faff[_0x5ca2('0x12')]=_0x33381d;}break;}logger[_0x5ca2('0x13')](util[_0x5ca2('0x14')](_0x5ca2('0x15'),_0x162083[_0x5ca2('0x16')],_0x162083['data2'],JSON[_0x5ca2('0x17')](_0xe3faff)));rp(_0xe3faff)[_0x5ca2('0x18')](function(_0x53a3b1){_0x33381d=!_[_0x5ca2('0x19')](_0x33381d)?_0x5ca2('0x1a')+_0x33381d:'';_0x2b8484=typeof _0x53a3b1[_0x5ca2('0x12')]===_0x5ca2('0x1b')?JSON[_0x5ca2('0x17')](_0x53a3b1[_0x5ca2('0x12')]):_0x53a3b1[_0x5ca2('0x12')];logger[_0x5ca2('0x13')](util['format'](_0x5ca2('0x1c'),_0x162083[_0x5ca2('0x16')],_0x162083[_0x5ca2('0x8')],_0x53a3b1[_0x5ca2('0x1d')],_0x2b8484));})[_0x5ca2('0x1e')](function(_0x9ca25e){logger[_0x5ca2('0xc')](util[_0x5ca2('0x14')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x162083[_0x5ca2('0x16')],_0x162083['data2'],_0x9ca25e[_0x5ca2('0x1d')],_0x9ca25e[_0x5ca2('0x1f')],_0x9ca25e[_0x5ca2('0x20')]));});};
\ No newline at end of file
index 4f0d6af..b97d267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ad=['then','error','rpc','message','result','exports','jayson/promise','../../config/logger','routing','http','Request','request'];(function(_0xc9588b,_0x1fd6ad){var _0x3a6432=function(_0x2c9c59){while(--_0x2c9c59){_0xc9588b['push'](_0xc9588b['shift']());}};_0x3a6432(++_0x1fd6ad);}(_0x51ad,0x1da));var _0xd51a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x51ad[_0x42cae2];return _0x5f256f;};'use strict';var jayson=require(_0xd51a('0x0'));var BPromise=require('bluebird');var logger=require(_0xd51a('0x1'))(_0xd51a('0x2'));var client=jayson['client'][_0xd51a('0x3')]({'port':0x2329});client[_0xd51a('0x4')]=function(_0x3f7267,_0x693407){return new BPromise(function(_0x1091f5,_0x3af62d){return client[_0xd51a('0x5')](_0x3f7267,_0x693407)[_0xd51a('0x6')](function(_0x461d0b){logger['debug']('rpc',_0xd51a('0x2'),_0x3f7267,_0x693407,_0x461d0b);if(_0x461d0b[_0xd51a('0x7')]){logger[_0xd51a('0x7')](_0xd51a('0x8'),_0xd51a('0x2'),_0x3f7267,_0x461d0b['error'][_0xd51a('0x9')],_0x693407);return _0x3af62d(_0x461d0b[_0xd51a('0x7')]['message']);}else{return _0x1091f5(_0x461d0b[_0xd51a('0xa')]);}})['catch'](function(_0x131cd4){logger['error'](_0xd51a('0x8'),'routing',_0x3f7267,_0x131cd4,_0x693407);return _0x3af62d(_0x131cd4);});});};module[_0xd51a('0xb')]=client;
\ No newline at end of file
+var _0x0fb5=['then','debug','rpc','error','message','result','catch','exports','jayson/promise','../../config/logger','routing','client','http'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x0fb5,0x1dc));var _0x50fb=function(_0x44d342,_0x4ea2ba){_0x44d342=_0x44d342-0x0;var _0x3524fd=_0x0fb5[_0x44d342];return _0x3524fd;};'use strict';var jayson=require(_0x50fb('0x0'));var BPromise=require('bluebird');var logger=require(_0x50fb('0x1'))(_0x50fb('0x2'));var client=jayson[_0x50fb('0x3')][_0x50fb('0x4')]({'port':0x2329});client['Request']=function(_0x53cc87,_0x5e6dd6){return new BPromise(function(_0x774d54,_0x241f28){return client['request'](_0x53cc87,_0x5e6dd6)[_0x50fb('0x5')](function(_0x12085c){logger[_0x50fb('0x6')](_0x50fb('0x7'),_0x50fb('0x2'),_0x53cc87,_0x5e6dd6,_0x12085c);if(_0x12085c[_0x50fb('0x8')]){logger[_0x50fb('0x8')](_0x50fb('0x7'),_0x50fb('0x2'),_0x53cc87,_0x12085c[_0x50fb('0x8')]['message'],_0x5e6dd6);return _0x241f28(_0x12085c[_0x50fb('0x8')][_0x50fb('0x9')]);}else{return _0x774d54(_0x12085c[_0x50fb('0xa')]);}})[_0x50fb('0xb')](function(_0x56fc9e){logger[_0x50fb('0x8')](_0x50fb('0x7'),_0x50fb('0x2'),_0x53cc87,_0x56fc9e,_0x5e6dd6);return _0x241f28(_0x56fc9e);});});};module[_0x50fb('0xc')]=client;
\ No newline at end of file
index 4317f17..0447ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5830=['initMailAccounts','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','email','resolve','then','getMailAccounts'];(function(_0x166e71,_0x3a1cd4){var _0x2ebc75=function(_0x4889d9){while(--_0x4889d9){_0x166e71['push'](_0x166e71['shift']());}};_0x2ebc75(++_0x3a1cd4);}(_0x5830,0x15c));var _0x0583=function(_0x5452a2,_0x37f7b4){_0x5452a2=_0x5452a2-0x0;var _0x1ef3c3=_0x5830[_0x5452a2];return _0x1ef3c3;};'use strict';var server=require(_0x0583('0x0'));var Realtime=require(_0x0583('0x1'));var EmailChannel=require(_0x0583('0x2'));var mailAccount=require(_0x0583('0x3'));var setting=require(_0x0583('0x4'));var logger=require('../../config/logger')(_0x0583('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x0583('0x6')]()[_0x0583('0x7')](mailAccount[_0x0583('0x8')]())['then'](realtime[_0x0583('0x9')]())['then'](function(){email['refresh'](realtime[_0x0583('0xa')]);return realtime;});}function main(){return server[_0x0583('0xb')](realtime,email)[_0x0583('0x7')](function(){return initRealtime();})[_0x0583('0x7')](function(){return setting[_0x0583('0xc')]();})[_0x0583('0x7')](function(_0x247f61){return setInterval(initRealtime,_0x247f61[_0x0583('0xd')]*0x3e8);})[_0x0583('0xe')](function(_0x3e6df7){logger[_0x0583('0xf')](_0x0583('0x10'),_0x3e6df7);});}main();
\ No newline at end of file
+var _0x9bf3=['../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./lib/email','./rpc/mailAccount','./rpc/setting'];(function(_0x4b08f2,_0x38447a){var _0x566110=function(_0x42b538){while(--_0x42b538){_0x4b08f2['push'](_0x4b08f2['shift']());}};_0x566110(++_0x38447a);}(_0x9bf3,0xc8));var _0x39bf=function(_0x50e40b,_0x338d17){_0x50e40b=_0x50e40b-0x0;var _0x2608b7=_0x9bf3[_0x50e40b];return _0x2608b7;};'use strict';var server=require(_0x39bf('0x0'));var Realtime=require('./realtime');var EmailChannel=require(_0x39bf('0x1'));var mailAccount=require(_0x39bf('0x2'));var setting=require(_0x39bf('0x3'));var logger=require(_0x39bf('0x4'))(_0x39bf('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x39bf('0x6')]()[_0x39bf('0x7')](mailAccount[_0x39bf('0x8')]())[_0x39bf('0x7')](realtime[_0x39bf('0x9')]())[_0x39bf('0x7')](function(){email[_0x39bf('0xa')](realtime[_0x39bf('0xb')]);return realtime;});}function main(){return server[_0x39bf('0xc')](realtime,email)['then'](function(){return initRealtime();})['then'](function(){return setting['getSettings']();})['then'](function(_0x22b27a){return setInterval(initRealtime,_0x22b27a[_0x39bf('0xd')]*0x3e8);})[_0x39bf('0xe')](function(_0x4b1415){logger[_0x39bf('0xf')](_0x39bf('0x10'),_0x4b1415);});}main();
\ No newline at end of file
index 838e0ed..084a84e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4685=['smtp','prototype','emit','name','key','active','Imap','status','messageStatus','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','service','provider','custom','bind','handleImapEmail','end','handleImapEnd','error','disabled','messages','total','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','handleImapError','sendMail','send','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash','moment','md5','ioredis','email','redis','defaults','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','mailAccounts','imapAccounts'];(function(_0x529955,_0x4fd509){var _0x503d27=function(_0x6ca3d){while(--_0x6ca3d){_0x529955['push'](_0x529955['shift']());}};_0x503d27(++_0x4fd509);}(_0x4685,0x101));var _0x5468=function(_0x147d4c,_0xc24f70){_0x147d4c=_0x147d4c-0x0;var _0x1811fc=_0x4685[_0x147d4c];return _0x1811fc;};'use strict';var _=require(_0x5468('0x0'));var moment=require(_0x5468('0x1'));var BPromise=require('bluebird');var md5=require(_0x5468('0x2'));var Redis=require(_0x5468('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x5468('0x4'));config[_0x5468('0x5')]=_[_0x5468('0x6')](config[_0x5468('0x5')],{'host':_0x5468('0x7'),'port':0x18eb});var io=require(_0x5468('0x8'))(new Redis(config[_0x5468('0x5')]));var EmailImap=require('./imap');var EmailSmtp=require(_0x5468('0x9'));var mailAccount=require(_0x5468('0xa'));var md5Accounts={};function EmailChannel(_0x39d6cd){logger['info']('start\x20email\x20channel');this[_0x5468('0xb')]=_0x39d6cd[_0x5468('0xb')];this[_0x5468('0xc')]={};this[_0x5468('0xd')]=new EmailSmtp();}EmailChannel[_0x5468('0xe')][_0x5468('0xf')]=function(_0x19074e){var _0x18508f=this[_0x5468('0xb')][_0x19074e];var _0x335655={'id':_0x18508f['id'],'name':_0x18508f[_0x5468('0x10')],'key':_0x18508f[_0x5468('0x11')],'active':_0x18508f[_0x5468('0x12')],'Imap':{'status':_0x18508f[_0x5468('0x13')][_0x5468('0x14')],'messageStatus':_0x18508f[_0x5468('0x13')][_0x5468('0x15')],'total':_0x18508f[_0x5468('0x13')]['total']}};if(_[_0x5468('0x16')](md5Accounts[_0x19074e])){md5Accounts[_0x19074e]={};}var _0x3f9a64=md5(JSON[_0x5468('0x17')](_0x335655));if(md5Accounts[_0x19074e][_0x5468('0x2')]!==_0x3f9a64){md5Accounts[_0x19074e][_0x5468('0x2')]=_0x3f9a64;io[_0x5468('0xf')](_0x5468('0x18'),_0x335655);}};EmailChannel['prototype'][_0x5468('0x19')]=function(_0x182e6d){for(var _0x4400de in _0x182e6d){if(_0x182e6d[_0x5468('0x1a')](_0x4400de)){if(_0x182e6d[_0x4400de][_0x5468('0x13')]&&_0x182e6d[_0x4400de]['active']){var _0x1b46d0=_0x182e6d[_0x4400de][_0x5468('0x13')];if(!_0x1b46d0[_0x5468('0x1b')]&&_0x182e6d[_0x4400de][_0x5468('0x1c')]!==_0x5468('0x1d'))_0x1b46d0[_0x5468('0x1b')]=_0x182e6d[_0x4400de]['provider'];if(!this[_0x5468('0xc')]['hasOwnProperty'](_0x1b46d0['id'])){this[_0x5468('0xc')][_0x1b46d0['id']]=new EmailImap(_0x1b46d0,_0x182e6d[_0x4400de][_0x5468('0x4')]);this[_0x5468('0xc')][_0x1b46d0['id']]['on']('box',this['handleImapBox'][_0x5468('0x1e')](this,_0x4400de));this['imapAccounts'][_0x1b46d0['id']]['on'](_0x5468('0x4'),this[_0x5468('0x1f')][_0x5468('0x1e')](this,_0x4400de));this['imapAccounts'][_0x1b46d0['id']]['on'](_0x5468('0x20'),this[_0x5468('0x21')][_0x5468('0x1e')](this,_0x4400de));this[_0x5468('0xc')][_0x1b46d0['id']]['on'](_0x5468('0x22'),this['handleImapError'][_0x5468('0x1e')](this,_0x4400de));}}else{if(_['isNil'](this[_0x5468('0xb')][_0x4400de]['Imap'])){this[_0x5468('0xb')][_0x4400de][_0x5468('0x13')]={};}this['mailAccounts'][_0x4400de][_0x5468('0x13')][_0x5468('0x14')]=_0x5468('0x23');this[_0x5468('0xb')][_0x4400de]['Imap'][_0x5468('0x15')]='';this['emit'](_0x4400de);}}}};EmailChannel[_0x5468('0xe')]['handleImapBox']=function(_0x148432,_0x5e058a){if(this[_0x5468('0xb')][_0x148432]){this['mailAccounts'][_0x148432][_0x5468('0x13')][_0x5468('0x14')]='connected';this[_0x5468('0xb')][_0x148432]['Imap'][_0x5468('0x15')]=_0x5e058a[_0x5468('0x10')];if(_0x5e058a[_0x5468('0x24')]){this[_0x5468('0xb')][_0x148432][_0x5468('0x13')][_0x5468('0x25')]=_0x5e058a['messages'][_0x5468('0x25')];}return this[_0x5468('0xf')](_0x148432);}};EmailChannel[_0x5468('0xe')][_0x5468('0x1f')]=function(_0x325fb9,_0x1bf283){logger[_0x5468('0x26')](_0x5468('0x27'),_0x1bf283['firstName'],_0x1bf283[_0x5468('0x28')],_0x1bf283[_0x5468('0x29')],_0x325fb9);if(this[_0x5468('0xb')][_0x325fb9]){return mailAccount['notify'](_0x325fb9,_0x1bf283)[_0x5468('0x2a')](function(_0x23f596){if(_0x23f596){logger[_0x5468('0x26')](_0x5468('0x2b'));}})[_0x5468('0x2c')](function(_0x2e66d6){logger[_0x5468('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x5468('0x17')](_0x2e66d6));});}};EmailChannel[_0x5468('0xe')][_0x5468('0x21')]=function(_0x1e6780){if(this['mailAccounts'][_0x1e6780]&&this['mailAccounts'][_0x1e6780][_0x5468('0x13')]){if(this[_0x5468('0xc')][this[_0x5468('0xb')][_0x1e6780]['Imap']['id']]){delete this['imapAccounts'][this[_0x5468('0xb')][_0x1e6780]['Imap']['id']];}this[_0x5468('0xb')][_0x1e6780][_0x5468('0x13')]['lastSync']=moment();this['emit'](_0x1e6780);}};EmailChannel[_0x5468('0xe')][_0x5468('0x2d')]=function(_0x57408e,_0x58b062){if(this[_0x5468('0xb')][_0x57408e]){this[_0x5468('0xb')][_0x57408e][_0x5468('0x13')]['status']='error';this['mailAccounts'][_0x57408e]['Imap'][_0x5468('0x15')]=_0x58b062;return this[_0x5468('0xf')](_0x57408e);}};EmailChannel[_0x5468('0xe')][_0x5468('0x2e')]=function(_0xf55b55,_0x2b1623){return this[_0x5468('0xd')][_0x5468('0x2f')](_0xf55b55,_0x2b1623);};EmailChannel['prototype'][_0x5468('0x30')]=function(_0x5d61d8){var _0x17a2cb=this;if(this[_0x5468('0xb')][_0x5d61d8['id']]){if(_[_0x5468('0x16')](this[_0x5468('0xb')][_0x5d61d8['id']][_0x5468('0x31')])){this[_0x5468('0xb')][_0x5d61d8['id']][_0x5468('0x31')]={};}this[_0x5468('0xb')][_0x5d61d8['id']][_0x5468('0x31')][_0x5468('0x32')]=moment();return new BPromise(function(_0x1515c4,_0x23f025){return _0x17a2cb[_0x5468('0xd')][_0x5468('0x33')](_0x5d61d8)[_0x5468('0x2a')](function(_0x249223){_0x17a2cb[_0x5468('0xb')][_0x5d61d8['id']][_0x5468('0x31')][_0x5468('0x14')]=_0x5468('0x34');_0x17a2cb[_0x5468('0xb')][_0x5d61d8['id']]['Smtp'][_0x5468('0x15')]='';_0x17a2cb[_0x5468('0xf')](_0x5d61d8['id']);_0x1515c4(_0x249223);})['catch'](function(_0x122fda){_0x17a2cb[_0x5468('0xb')][_0x5d61d8['id']][_0x5468('0x31')][_0x5468('0x14')]=_0x5468('0x22');_0x17a2cb[_0x5468('0xb')][_0x5d61d8['id']]['Smtp']['messageStatus']=_0x122fda;_0x17a2cb[_0x5468('0xf')](_0x5d61d8['id']);_0x23f025(_0x122fda);});});}return this[_0x5468('0xd')][_0x5468('0x33')](_0x5d61d8);};module[_0x5468('0x35')]=EmailChannel;
\ No newline at end of file
+var _0x20cc=['../../../config/environment','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','active','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','provider','custom','service','handleImapBox','handleImapEmail','bind','end','handleImapEnd','error','handleImapError','disabled','name','messages','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','sendMail','verifySmtp','Smtp','verify','verified','exports','lodash','moment','ioredis'];(function(_0x26e7d0,_0x2b2b1d){var _0x524e75=function(_0x171afd){while(--_0x171afd){_0x26e7d0['push'](_0x26e7d0['shift']());}};_0x524e75(++_0x2b2b1d);}(_0x20cc,0x1ec));var _0xc20c=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x20cc[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xc20c('0x0'));var moment=require(_0xc20c('0x1'));var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0xc20c('0x2'));var config=require(_0xc20c('0x3'));var logger=require(_0xc20c('0x4'))(_0xc20c('0x5'));config[_0xc20c('0x6')]=_[_0xc20c('0x7')](config['redis'],{'host':_0xc20c('0x8'),'port':0x18eb});var io=require(_0xc20c('0x9'))(new Redis(config[_0xc20c('0x6')]));var EmailImap=require(_0xc20c('0xa'));var EmailSmtp=require(_0xc20c('0xb'));var mailAccount=require(_0xc20c('0xc'));var md5Accounts={};function EmailChannel(_0x869809){logger[_0xc20c('0xd')](_0xc20c('0xe'));this[_0xc20c('0xf')]=_0x869809['mailAccounts'];this[_0xc20c('0x10')]={};this[_0xc20c('0x11')]=new EmailSmtp();}EmailChannel[_0xc20c('0x12')][_0xc20c('0x13')]=function(_0x539742){var _0x321470=this['mailAccounts'][_0x539742];var _0x3a7129={'id':_0x321470['id'],'name':_0x321470['name'],'key':_0x321470['key'],'active':_0x321470[_0xc20c('0x14')],'Imap':{'status':_0x321470[_0xc20c('0x15')][_0xc20c('0x16')],'messageStatus':_0x321470[_0xc20c('0x15')][_0xc20c('0x17')],'total':_0x321470[_0xc20c('0x15')][_0xc20c('0x18')]}};if(_[_0xc20c('0x19')](md5Accounts[_0x539742])){md5Accounts[_0x539742]={};}var _0x298295=md5(JSON[_0xc20c('0x1a')](_0x3a7129));if(md5Accounts[_0x539742][_0xc20c('0x1b')]!==_0x298295){md5Accounts[_0x539742][_0xc20c('0x1b')]=_0x298295;io[_0xc20c('0x13')](_0xc20c('0x1c'),_0x3a7129);}};EmailChannel['prototype'][_0xc20c('0x1d')]=function(_0xa70de4){for(var _0x3109b0 in _0xa70de4){if(_0xa70de4[_0xc20c('0x1e')](_0x3109b0)){if(_0xa70de4[_0x3109b0][_0xc20c('0x15')]&&_0xa70de4[_0x3109b0][_0xc20c('0x14')]){var _0x391a1a=_0xa70de4[_0x3109b0][_0xc20c('0x15')];if(!_0x391a1a['service']&&_0xa70de4[_0x3109b0][_0xc20c('0x1f')]!==_0xc20c('0x20'))_0x391a1a[_0xc20c('0x21')]=_0xa70de4[_0x3109b0][_0xc20c('0x1f')];if(!this['imapAccounts']['hasOwnProperty'](_0x391a1a['id'])){this[_0xc20c('0x10')][_0x391a1a['id']]=new EmailImap(_0x391a1a,_0xa70de4[_0x3109b0][_0xc20c('0x5')]);this['imapAccounts'][_0x391a1a['id']]['on']('box',this[_0xc20c('0x22')]['bind'](this,_0x3109b0));this[_0xc20c('0x10')][_0x391a1a['id']]['on'](_0xc20c('0x5'),this[_0xc20c('0x23')][_0xc20c('0x24')](this,_0x3109b0));this[_0xc20c('0x10')][_0x391a1a['id']]['on'](_0xc20c('0x25'),this[_0xc20c('0x26')][_0xc20c('0x24')](this,_0x3109b0));this['imapAccounts'][_0x391a1a['id']]['on'](_0xc20c('0x27'),this[_0xc20c('0x28')]['bind'](this,_0x3109b0));}}else{if(_[_0xc20c('0x19')](this['mailAccounts'][_0x3109b0]['Imap'])){this[_0xc20c('0xf')][_0x3109b0][_0xc20c('0x15')]={};}this[_0xc20c('0xf')][_0x3109b0][_0xc20c('0x15')][_0xc20c('0x16')]=_0xc20c('0x29');this[_0xc20c('0xf')][_0x3109b0][_0xc20c('0x15')][_0xc20c('0x17')]='';this[_0xc20c('0x13')](_0x3109b0);}}}};EmailChannel[_0xc20c('0x12')]['handleImapBox']=function(_0xbe75b2,_0x16c53a){if(this[_0xc20c('0xf')][_0xbe75b2]){this[_0xc20c('0xf')][_0xbe75b2][_0xc20c('0x15')][_0xc20c('0x16')]='connected';this[_0xc20c('0xf')][_0xbe75b2][_0xc20c('0x15')][_0xc20c('0x17')]=_0x16c53a[_0xc20c('0x2a')];if(_0x16c53a[_0xc20c('0x2b')]){this['mailAccounts'][_0xbe75b2][_0xc20c('0x15')][_0xc20c('0x18')]=_0x16c53a[_0xc20c('0x2b')][_0xc20c('0x18')];}return this['emit'](_0xbe75b2);}};EmailChannel[_0xc20c('0x12')][_0xc20c('0x23')]=function(_0x2b1bcd,_0xaae891){logger[_0xc20c('0xd')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0xaae891['firstName'],_0xaae891['lastName'],_0xaae891[_0xc20c('0x2c')],_0x2b1bcd);if(this[_0xc20c('0xf')][_0x2b1bcd]){return mailAccount[_0xc20c('0x2d')](_0x2b1bcd,_0xaae891)[_0xc20c('0x2e')](function(_0x4378a2){if(_0x4378a2){logger[_0xc20c('0xd')](_0xc20c('0x2f'));}})[_0xc20c('0x30')](function(_0x4aa227){logger[_0xc20c('0x27')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0xc20c('0x1a')](_0x4aa227));});}};EmailChannel[_0xc20c('0x12')][_0xc20c('0x26')]=function(_0x45a5cb){if(this[_0xc20c('0xf')][_0x45a5cb]&&this[_0xc20c('0xf')][_0x45a5cb][_0xc20c('0x15')]){if(this['imapAccounts'][this[_0xc20c('0xf')][_0x45a5cb][_0xc20c('0x15')]['id']]){delete this[_0xc20c('0x10')][this[_0xc20c('0xf')][_0x45a5cb][_0xc20c('0x15')]['id']];}this[_0xc20c('0xf')][_0x45a5cb][_0xc20c('0x15')]['lastSync']=moment();this[_0xc20c('0x13')](_0x45a5cb);}};EmailChannel[_0xc20c('0x12')]['handleImapError']=function(_0x43c312,_0xd53920){if(this[_0xc20c('0xf')][_0x43c312]){this['mailAccounts'][_0x43c312][_0xc20c('0x15')][_0xc20c('0x16')]=_0xc20c('0x27');this[_0xc20c('0xf')][_0x43c312]['Imap'][_0xc20c('0x17')]=_0xd53920;return this[_0xc20c('0x13')](_0x43c312);}};EmailChannel[_0xc20c('0x12')][_0xc20c('0x31')]=function(_0x3b2a4c,_0xc2c33e){return this[_0xc20c('0x11')]['send'](_0x3b2a4c,_0xc2c33e);};EmailChannel[_0xc20c('0x12')][_0xc20c('0x32')]=function(_0x2cd590){var _0x438960=this;if(this[_0xc20c('0xf')][_0x2cd590['id']]){if(_['isNil'](this['mailAccounts'][_0x2cd590['id']][_0xc20c('0x33')])){this[_0xc20c('0xf')][_0x2cd590['id']][_0xc20c('0x33')]={};}this[_0xc20c('0xf')][_0x2cd590['id']][_0xc20c('0x33')]['lastSync']=moment();return new BPromise(function(_0xe58ad,_0x541b76){return _0x438960[_0xc20c('0x11')][_0xc20c('0x34')](_0x2cd590)[_0xc20c('0x2e')](function(_0x4cb0d4){_0x438960[_0xc20c('0xf')][_0x2cd590['id']][_0xc20c('0x33')][_0xc20c('0x16')]=_0xc20c('0x35');_0x438960[_0xc20c('0xf')][_0x2cd590['id']]['Smtp'][_0xc20c('0x17')]='';_0x438960[_0xc20c('0x13')](_0x2cd590['id']);_0xe58ad(_0x4cb0d4);})[_0xc20c('0x30')](function(_0x3daa96){_0x438960[_0xc20c('0xf')][_0x2cd590['id']][_0xc20c('0x33')][_0xc20c('0x16')]=_0xc20c('0x27');_0x438960[_0xc20c('0xf')][_0x2cd590['id']]['Smtp'][_0xc20c('0x17')]=_0x3daa96;_0x438960[_0xc20c('0x13')](_0x2cd590['id']);_0x541b76(_0x3daa96);});});}return this['smtp']['verify'](_0x2cd590);};module[_0xc20c('0x36')]=EmailChannel;
\ No newline at end of file
index 0d349af..26f605b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b4f=['events','EventEmitter','./utils','../../../config/logger','mailbox','account','getAccount','once','ready','handleReady','bind','end','handleEnd','error','connect','inherits','prototype','connTimeout','authTimeout','user','xoauth2','data5','password','authentication','email','host','port','tls','autotls','required','openBox','handleOpenBox','handleError','emit','box','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleCloseBox','handleMessageBody','attributes','handleMessageAttributes','parser','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','util','imap','mailparser','iconv','Iconv'];(function(_0xf18747,_0x407764){var _0xee883=function(_0x2356c2){while(--_0x2356c2){_0xf18747['push'](_0xf18747['shift']());}};_0xee883(++_0x407764);}(_0x5b4f,0x130));var _0xf5b4=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x5b4f[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0xf5b4('0x0'));var util=require(_0xf5b4('0x1'));var Imap=require(_0xf5b4('0x2'));var simpleParser=require(_0xf5b4('0x3'))['simpleParser'];var Iconv=require(_0xf5b4('0x4'))[_0xf5b4('0x5')];var EventEmitter=require(_0xf5b4('0x6'))[_0xf5b4('0x7')];var utils=require(_0xf5b4('0x8'));var logger=require(_0xf5b4('0x9'))('email');function EmailImap(_0x3314c9,_0x309e3c){this[_0xf5b4('0xa')]=_0x3314c9['mailbox'];this[_0xf5b4('0xb')]=this[_0xf5b4('0xc')](_0x3314c9,_0x309e3c);this[_0xf5b4('0x2')]=new Imap(this[_0xf5b4('0xb')]);this[_0xf5b4('0x2')][_0xf5b4('0xd')](_0xf5b4('0xe'),this[_0xf5b4('0xf')][_0xf5b4('0x10')](this));this['imap'][_0xf5b4('0xd')](_0xf5b4('0x11'),this[_0xf5b4('0x12')]['bind'](this));this[_0xf5b4('0x2')]['on'](_0xf5b4('0x13'),this['handleError'][_0xf5b4('0x10')](this));this[_0xf5b4('0x2')][_0xf5b4('0x14')]();}util[_0xf5b4('0x15')](EmailImap,EventEmitter);EmailImap[_0xf5b4('0x16')][_0xf5b4('0xc')]=function(_0x4a6b0c,_0x4563b9){var _0x5c7fad={'connTimeout':_0x4a6b0c[_0xf5b4('0x17')]?_0x4a6b0c['connTimeout']*0x3e8:0x2710,'authTimeout':_0x4a6b0c['authTimeout']?_0x4a6b0c[_0xf5b4('0x18')]*0x3e8:0x1388};if(_0x4a6b0c['service']){_0x5c7fad[_0xf5b4('0x19')]=_0x4a6b0c[_0xf5b4('0x19')];if(_0x4a6b0c['modernAuthentication']){_0x5c7fad[_0xf5b4('0x1a')]=utils['generateXOAuth2Token'](_0x4a6b0c['CloudProvider'][_0xf5b4('0x1b')],_0x4a6b0c[_0xf5b4('0x19')]);}else{_0x5c7fad['password']=_0x4a6b0c[_0xf5b4('0x1c')];}}else{if(_0x4a6b0c[_0xf5b4('0x1d')]){_0x5c7fad[_0xf5b4('0x19')]=_0x4a6b0c[_0xf5b4('0x19')];_0x5c7fad[_0xf5b4('0x1c')]=_0x4a6b0c[_0xf5b4('0x1c')];}}_0x5c7fad[_0xf5b4('0x1e')]=_0x4563b9||_0x4a6b0c[_0xf5b4('0x19')]||'anonymous@xcally.com';_0x5c7fad[_0xf5b4('0x1f')]=_0x4a6b0c[_0xf5b4('0x1f')];_0x5c7fad[_0xf5b4('0x20')]=_0x4a6b0c['port']||0x3e1;if(_0x4a6b0c[_0xf5b4('0x21')]){_0x5c7fad['tls']=!![];}else{_0x5c7fad[_0xf5b4('0x21')]=![];_0x5c7fad[_0xf5b4('0x22')]=_0xf5b4('0x23');}return _0x5c7fad;};EmailImap[_0xf5b4('0x16')][_0xf5b4('0xf')]=function(){this['imap'][_0xf5b4('0x24')](this['mailbox'],![],this[_0xf5b4('0x25')][_0xf5b4('0x10')](this));};EmailImap[_0xf5b4('0x16')]['handleOpenBox']=function(_0x5f5290,_0x2878cf){if(_0x5f5290){this[_0xf5b4('0x26')](_0x5f5290,!![]);}else{this[_0xf5b4('0x27')](_0xf5b4('0x28'),_0x2878cf);this[_0xf5b4('0x29')]();}};EmailImap[_0xf5b4('0x16')]['handleCloseBox']=function(_0x2fdc7f){if(_0x2fdc7f){this[_0xf5b4('0x26')](_0x2fdc7f,!![]);}else{this[_0xf5b4('0x2')]['end']();}};EmailImap[_0xf5b4('0x16')]['readUnseen']=function(){this['imap'][_0xf5b4('0x2a')]([_0xf5b4('0x2b')],this[_0xf5b4('0x2c')][_0xf5b4('0x10')](this));};EmailImap[_0xf5b4('0x16')][_0xf5b4('0x2c')]=function(_0x30924d,_0x23e816){if(_0x30924d){this[_0xf5b4('0x26')](_0x30924d,!![]);}else{if(_0x23e816[_0xf5b4('0x2d')]){try{var _0xab97a1=this[_0xf5b4('0x2')][_0xf5b4('0x2e')](_0x23e816,{'bodies':'','markSeen':!![]});_0xab97a1['on'](_0xf5b4('0x2f'),this[_0xf5b4('0x30')]['bind'](this));_0xab97a1[_0xf5b4('0xd')](_0xf5b4('0x13'),this[_0xf5b4('0x31')][_0xf5b4('0x10')](this));_0xab97a1[_0xf5b4('0xd')](_0xf5b4('0x11'),this[_0xf5b4('0x32')][_0xf5b4('0x10')](this));}catch(_0x2381f9){logger[_0xf5b4('0x13')](_0x2381f9);}}else{this['imap'][_0xf5b4('0x33')](!![],this[_0xf5b4('0x34')][_0xf5b4('0x10')](this));}}};EmailImap['prototype'][_0xf5b4('0x30')]=function(_0x2ecbab){_0x2ecbab['on']('body',this[_0xf5b4('0x35')]['bind'](this));_0x2ecbab[_0xf5b4('0xd')](_0xf5b4('0x36'),this[_0xf5b4('0x37')]['bind'](this));_0x2ecbab[_0xf5b4('0xd')](_0xf5b4('0x11'),this['handleMessageEnd'][_0xf5b4('0x10')](this));};EmailImap[_0xf5b4('0x16')][_0xf5b4('0x35')]=function(_0x680607){simpleParser(_0x680607,{'Iconv':Iconv},this['handleSimpleParser']['bind'](this));};EmailImap['prototype'][_0xf5b4('0x37')]=function(){};EmailImap[_0xf5b4('0x16')]['handleMessageEnd']=function(){};EmailImap[_0xf5b4('0x16')]['handleSimpleParser']=function(_0x406249,_0x36c548){if(_0x406249){logger[_0xf5b4('0x13')](_0x406249);}else{var _0x3c121f=this;utils[_0xf5b4('0x38')](this[_0xf5b4('0xb')],_0x36c548,function(_0x3e73c4){_0x3c121f[_0xf5b4('0x27')](_0xf5b4('0x1e'),_0x3e73c4);});}};EmailImap[_0xf5b4('0x16')]['handleFetchEnd']=function(){this[_0xf5b4('0x2')][_0xf5b4('0x33')](!![],this[_0xf5b4('0x34')]['bind'](this));};EmailImap['prototype']['handleFetchError']=function(_0x8f8cdd){this['handleError'](_0x8f8cdd);this[_0xf5b4('0x2')]['closeBox'](!![],this[_0xf5b4('0x34')]['bind'](this));};EmailImap[_0xf5b4('0x16')]['handleEnd']=function(){this[_0xf5b4('0x27')](_0xf5b4('0x11'));};EmailImap[_0xf5b4('0x16')][_0xf5b4('0x26')]=function(_0x197376,_0x2ddb6f){logger[_0xf5b4('0x13')]('handleError',this[_0xf5b4('0xb')][_0xf5b4('0x1e')],JSON[_0xf5b4('0x39')](_0x197376));var _0x25bbf3='';if(_0x197376){if(_0x197376[_0xf5b4('0x3a')]){_0x25bbf3=_0x197376['textCode'];}else{for(var _0x21e66f in _0x197376){if(_0x197376[_0xf5b4('0x3b')](_0x21e66f)){_0x25bbf3+=_[_0xf5b4('0x3c')](_0x21e66f)+':\x20'+_0x197376[_0x21e66f]+'\x0a';}}}}if(_0x2ddb6f){this['imap']['end']();}else{this[_0xf5b4('0x27')](_0xf5b4('0x13'),_0x25bbf3);this['emit'](_0xf5b4('0x11'));}};module[_0xf5b4('0x3d')]=EmailImap;
\ No newline at end of file
+var _0xd837=['handleMessageBody','handleMessageEnd','handleSimpleParser','parser','handleFetchError','textCode','hasOwnProperty','lodash','util','imap','mailparser','simpleParser','Iconv','events','EventEmitter','../../../config/logger','email','mailbox','account','getAccount','once','ready','bind','end','handleEnd','error','handleError','prototype','authTimeout','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','anonymous@xcally.com','host','port','tls','autotls','required','handleReady','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchEnd','closeBox','body','attributes','handleMessageAttributes'];(function(_0x25d340,_0x5d7749){var _0x21fba2=function(_0x13c8ec){while(--_0x13c8ec){_0x25d340['push'](_0x25d340['shift']());}};_0x21fba2(++_0x5d7749);}(_0xd837,0x1ab));var _0x7d83=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0xd837[_0x51b1a5];return _0x15c738;};'use strict';var _=require(_0x7d83('0x0'));var util=require(_0x7d83('0x1'));var Imap=require(_0x7d83('0x2'));var simpleParser=require(_0x7d83('0x3'))[_0x7d83('0x4')];var Iconv=require('iconv')[_0x7d83('0x5')];var EventEmitter=require(_0x7d83('0x6'))[_0x7d83('0x7')];var utils=require('./utils');var logger=require(_0x7d83('0x8'))(_0x7d83('0x9'));function EmailImap(_0x584067,_0x4b66b5){this['mailbox']=_0x584067[_0x7d83('0xa')];this[_0x7d83('0xb')]=this[_0x7d83('0xc')](_0x584067,_0x4b66b5);this[_0x7d83('0x2')]=new Imap(this[_0x7d83('0xb')]);this[_0x7d83('0x2')][_0x7d83('0xd')](_0x7d83('0xe'),this['handleReady'][_0x7d83('0xf')](this));this[_0x7d83('0x2')][_0x7d83('0xd')](_0x7d83('0x10'),this[_0x7d83('0x11')]['bind'](this));this[_0x7d83('0x2')]['on'](_0x7d83('0x12'),this[_0x7d83('0x13')][_0x7d83('0xf')](this));this[_0x7d83('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x7d83('0x14')][_0x7d83('0xc')]=function(_0x3bb727,_0x3e3209){var _0x512d6={'connTimeout':_0x3bb727['connTimeout']?_0x3bb727['connTimeout']*0x3e8:0x2710,'authTimeout':_0x3bb727['authTimeout']?_0x3bb727[_0x7d83('0x15')]*0x3e8:0x1388};if(_0x3bb727['service']){_0x512d6[_0x7d83('0x16')]=_0x3bb727[_0x7d83('0x16')];if(_0x3bb727[_0x7d83('0x17')]){_0x512d6[_0x7d83('0x18')]=utils[_0x7d83('0x19')](_0x3bb727[_0x7d83('0x1a')][_0x7d83('0x1b')],_0x3bb727['user']);}else{_0x512d6[_0x7d83('0x1c')]=_0x3bb727[_0x7d83('0x1c')];}}else{if(_0x3bb727['authentication']){_0x512d6[_0x7d83('0x16')]=_0x3bb727[_0x7d83('0x16')];_0x512d6['password']=_0x3bb727[_0x7d83('0x1c')];}}_0x512d6[_0x7d83('0x9')]=_0x3e3209||_0x3bb727[_0x7d83('0x16')]||_0x7d83('0x1d');_0x512d6['host']=_0x3bb727[_0x7d83('0x1e')];_0x512d6[_0x7d83('0x1f')]=_0x3bb727[_0x7d83('0x1f')]||0x3e1;if(_0x3bb727[_0x7d83('0x20')]){_0x512d6[_0x7d83('0x20')]=!![];}else{_0x512d6[_0x7d83('0x20')]=![];_0x512d6[_0x7d83('0x21')]=_0x7d83('0x22');}return _0x512d6;};EmailImap[_0x7d83('0x14')][_0x7d83('0x23')]=function(){this[_0x7d83('0x2')][_0x7d83('0x24')](this[_0x7d83('0xa')],![],this['handleOpenBox'][_0x7d83('0xf')](this));};EmailImap['prototype'][_0x7d83('0x25')]=function(_0x5e2914,_0x344c17){if(_0x5e2914){this[_0x7d83('0x13')](_0x5e2914,!![]);}else{this[_0x7d83('0x26')]('box',_0x344c17);this['readUnseen']();}};EmailImap[_0x7d83('0x14')][_0x7d83('0x27')]=function(_0x1461b7){if(_0x1461b7){this[_0x7d83('0x13')](_0x1461b7,!![]);}else{this[_0x7d83('0x2')]['end']();}};EmailImap[_0x7d83('0x14')][_0x7d83('0x28')]=function(){this[_0x7d83('0x2')][_0x7d83('0x29')]([_0x7d83('0x2a')],this[_0x7d83('0x2b')]['bind'](this));};EmailImap['prototype'][_0x7d83('0x2b')]=function(_0x5d087d,_0x297f5f){if(_0x5d087d){this[_0x7d83('0x13')](_0x5d087d,!![]);}else{if(_0x297f5f[_0x7d83('0x2c')]){try{var _0x2d49e4=this[_0x7d83('0x2')][_0x7d83('0x2d')](_0x297f5f,{'bodies':'','markSeen':!![]});_0x2d49e4['on'](_0x7d83('0x2e'),this[_0x7d83('0x2f')][_0x7d83('0xf')](this));_0x2d49e4[_0x7d83('0xd')](_0x7d83('0x12'),this['handleFetchError'][_0x7d83('0xf')](this));_0x2d49e4[_0x7d83('0xd')](_0x7d83('0x10'),this[_0x7d83('0x30')]['bind'](this));}catch(_0x1078ed){logger[_0x7d83('0x12')](_0x1078ed);}}else{this[_0x7d83('0x2')][_0x7d83('0x31')](!![],this[_0x7d83('0x27')]['bind'](this));}}};EmailImap[_0x7d83('0x14')][_0x7d83('0x2f')]=function(_0x4f35ef){_0x4f35ef['on'](_0x7d83('0x32'),this['handleMessageBody'][_0x7d83('0xf')](this));_0x4f35ef[_0x7d83('0xd')](_0x7d83('0x33'),this[_0x7d83('0x34')][_0x7d83('0xf')](this));_0x4f35ef['once']('end',this['handleMessageEnd'][_0x7d83('0xf')](this));};EmailImap[_0x7d83('0x14')][_0x7d83('0x35')]=function(_0x165eef){simpleParser(_0x165eef,{'Iconv':Iconv},this['handleSimpleParser'][_0x7d83('0xf')](this));};EmailImap[_0x7d83('0x14')][_0x7d83('0x34')]=function(){};EmailImap['prototype'][_0x7d83('0x36')]=function(){};EmailImap[_0x7d83('0x14')][_0x7d83('0x37')]=function(_0x810728,_0x1ff5e7){if(_0x810728){logger[_0x7d83('0x12')](_0x810728);}else{var _0x59d12b=this;utils[_0x7d83('0x38')](this[_0x7d83('0xb')],_0x1ff5e7,function(_0x45f0f5){_0x59d12b['emit'](_0x7d83('0x9'),_0x45f0f5);});}};EmailImap['prototype']['handleFetchEnd']=function(){this[_0x7d83('0x2')][_0x7d83('0x31')](!![],this[_0x7d83('0x27')]['bind'](this));};EmailImap[_0x7d83('0x14')][_0x7d83('0x39')]=function(_0x3d4a9f){this[_0x7d83('0x13')](_0x3d4a9f);this[_0x7d83('0x2')]['closeBox'](!![],this['handleCloseBox'][_0x7d83('0xf')](this));};EmailImap[_0x7d83('0x14')][_0x7d83('0x11')]=function(){this['emit'](_0x7d83('0x10'));};EmailImap[_0x7d83('0x14')][_0x7d83('0x13')]=function(_0x1b0732,_0x110869){logger[_0x7d83('0x12')](_0x7d83('0x13'),this[_0x7d83('0xb')]['email'],JSON['stringify'](_0x1b0732));var _0x35ec0f='';if(_0x1b0732){if(_0x1b0732[_0x7d83('0x3a')]){_0x35ec0f=_0x1b0732[_0x7d83('0x3a')];}else{for(var _0x1fa9b8 in _0x1b0732){if(_0x1b0732[_0x7d83('0x3b')](_0x1fa9b8)){_0x35ec0f+=_['upperFirst'](_0x1fa9b8)+':\x20'+_0x1b0732[_0x1fa9b8]+'\x0a';}}}}if(_0x110869){this['imap'][_0x7d83('0x10')]();}else{this[_0x7d83('0x26')](_0x7d83('0x12'),_0x35ec0f);this[_0x7d83('0x26')](_0x7d83('0x10'));}};module['exports']=EmailImap;
\ No newline at end of file
index f5bd982..7a183a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13e=['compile','toString','Not\x20verifired','exports','nodemailer-plugin-inline-base64','prototype','send','createTransport','use'];(function(_0x2c1dcd,_0x350452){var _0x158ce5=function(_0x5c1c57){while(--_0x5c1c57){_0x2c1dcd['push'](_0x2c1dcd['shift']());}};_0x158ce5(++_0x350452);}(_0xd13e,0xc1));var _0xed13=function(_0x574d3b,_0xdc1ac7){_0x574d3b=_0x574d3b-0x0;var _0x4903bc=_0xd13e[_0x574d3b];return _0x4903bc;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0xed13('0x0'));function EmailSmtp(){}EmailSmtp[_0xed13('0x1')][_0xed13('0x2')]=function(_0x728891,_0x184098){return new Promise(function(_0x295a81,_0x13a9ea){var _0x2abc4e=nodemailer[_0xed13('0x3')](_0x728891);_0x2abc4e[_0xed13('0x4')](_0xed13('0x5'),inlineBase64());_0x2abc4e['sendMail'](_0x184098,function(_0x3074c6,_0x2769cd){if(_0x3074c6){_0x13a9ea(_0x3074c6[_0xed13('0x6')]());}else{_0x295a81(_0x2769cd);}});});};EmailSmtp[_0xed13('0x1')]['verify']=function(_0x1cc189){return new Promise(function(_0x300d07,_0x2876b5){var _0x5b623a=nodemailer[_0xed13('0x3')](_0x1cc189);_0x5b623a['verify'](function(_0xcfd323,_0xb7255b){if(_0xcfd323){_0x2876b5(_0xcfd323[_0xed13('0x6')]());}else{if(_0xb7255b){_0x300d07(_0xb7255b);}else{_0x2876b5(_0xed13('0x7'));}}});});};module[_0xed13('0x8')]=EmailSmtp;
\ No newline at end of file
+var _0x8c33=['exports','nodemailer-plugin-inline-base64','send','createTransport','use','compile','toString','prototype','verify'];(function(_0x589c5e,_0x37f734){var _0x572b0b=function(_0x916272){while(--_0x916272){_0x589c5e['push'](_0x589c5e['shift']());}};_0x572b0b(++_0x37f734);}(_0x8c33,0x145));var _0x38c3=function(_0x4e8299,_0x543e4d){_0x4e8299=_0x4e8299-0x0;var _0x522fcd=_0x8c33[_0x4e8299];return _0x522fcd;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0x38c3('0x0'));function EmailSmtp(){}EmailSmtp['prototype'][_0x38c3('0x1')]=function(_0x582dee,_0x26ec99){return new Promise(function(_0x5b7852,_0x15c51b){var _0x4ce35e=nodemailer[_0x38c3('0x2')](_0x582dee);_0x4ce35e[_0x38c3('0x3')](_0x38c3('0x4'),inlineBase64());_0x4ce35e['sendMail'](_0x26ec99,function(_0xce84a3,_0x1f541e){if(_0xce84a3){_0x15c51b(_0xce84a3[_0x38c3('0x5')]());}else{_0x5b7852(_0x1f541e);}});});};EmailSmtp[_0x38c3('0x6')][_0x38c3('0x7')]=function(_0x57bdf7){return new Promise(function(_0x5a6fe1,_0x127d2b){var _0x30e553=nodemailer[_0x38c3('0x2')](_0x57bdf7);_0x30e553[_0x38c3('0x7')](function(_0x2bc01a,_0x355d64){if(_0x2bc01a){_0x127d2b(_0x2bc01a[_0x38c3('0x5')]());}else{if(_0x355d64){_0x5a6fe1(_0x355d64);}else{_0x127d2b('Not\x20verifired');}}});});};module[_0x38c3('0x8')]=EmailSmtp;
\ No newline at end of file
index 9a4e626..5c9b48f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd35=['Attachments','push','Title','Data','user=','auth=Bearer\x20','utf-8','toString','lodash','randomstring','path','util','node-tnef','../../../config/logger','head','value','anonymous','name','address','substring','indexOf','length','slice','join','split','generate','html','test','replace','includes','attachments','filename','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','email','isEmpty','originCc','originTo','attach','type','attachment','attachment-','format','%s-%s','now','root','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','parser','from','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>'];(function(_0x2c1ab6,_0x2748ba){var _0x39be2d=function(_0x21130a){while(--_0x21130a){_0x2c1ab6['push'](_0x2c1ab6['shift']());}};_0x39be2d(++_0x2748ba);}(_0xcd35,0xda));var _0x5cd3=function(_0x2c47e6,_0x43c068){_0x2c47e6=_0x2c47e6-0x0;var _0x1012aa=_0xcd35[_0x2c47e6];return _0x1012aa;};'use strict';var _=require(_0x5cd3('0x0'));var moment=require('moment');var random=require(_0x5cd3('0x1'));var fs=require('fs');var path=require(_0x5cd3('0x2'));var util=require(_0x5cd3('0x3'));var tnef=require(_0x5cd3('0x4'));var logger=require(_0x5cd3('0x5'))('email');var config=require('../../../config/environment');function getAddress(_0x4f00c7){var _0x1142dd=_[_0x5cd3('0x6')](_0x4f00c7[_0x5cd3('0x7')]);return _0x1142dd&&_0x1142dd['address']?_0x1142dd['address']:_0x5cd3('0x8')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x4c0f9a){var _0xc3ff89=_['head'](_0x4c0f9a['value']);if(_0xc3ff89&&_0xc3ff89[_0x5cd3('0x9')]){if(_0xc3ff89['name']==_0xc3ff89[_0x5cd3('0xa')]){return _0xc3ff89['name'][_0x5cd3('0xb')](0x0,_0xc3ff89[_0x5cd3('0x9')][_0x5cd3('0xc')]('@'));}var _0x14357a=_0xc3ff89[_0x5cd3('0x9')]['split'](/\s+/);return _0x14357a[_0x5cd3('0xd')]>0x1?_0x14357a[_0x5cd3('0xe')](0x0,-0x1)[_0x5cd3('0xf')]('\x20'):_0xc3ff89[_0x5cd3('0x9')];}return'Anonymous';}function getLastName(_0x32c79c){var _0xc13fb7=_[_0x5cd3('0x6')](_0x32c79c[_0x5cd3('0x7')]);if(_0xc13fb7&&_0xc13fb7[_0x5cd3('0x9')]){var _0x235e50=_0xc13fb7[_0x5cd3('0x9')][_0x5cd3('0x10')](/\s+/);return _0x235e50['length']>0x1?_0x235e50['pop']():'';}return'';}function getMails(_0x79c043,_0x8c477f){var _0x7a85c5='';for(var _0x1642fb=0x0;_0x1642fb<_0x8c477f[_0x5cd3('0x7')][_0x5cd3('0xd')];_0x1642fb+=0x1){if(_0x8c477f[_0x5cd3('0x7')][_0x1642fb]['address']!==_0x79c043){if(!_['isEmpty'](_0x7a85c5)){_0x7a85c5+=',';}_0x7a85c5+=_0x8c477f['value'][_0x1642fb]['name']||_0x8c477f[_0x5cd3('0x7')][_0x1642fb]['address']||'';_0x7a85c5+='\x20<';_0x7a85c5+=_0x8c477f[_0x5cd3('0x7')][_0x1642fb][_0x5cd3('0xa')]?_0x8c477f['value'][_0x1642fb][_0x5cd3('0xa')]:_0x5cd3('0x8')+random[_0x5cd3('0x11')](0x6)+'@xcally.com';_0x7a85c5+='>';}}return _0x7a85c5;}function parseEmail(_0x56da28,_0x45aeee,_0x21a8a8){if(_0x45aeee[_0x5cd3('0x12')]){var _0x3a5752=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3a5752[_0x5cd3('0x13')](_0x45aeee['html'])){_0x45aeee['html']=_0x45aeee[_0x5cd3('0x12')][_0x5cd3('0x14')](_0x3a5752,'');}if(_0x45aeee[_0x5cd3('0x12')][_0x5cd3('0x15')]('<img')){var _0x57dc21=[];_0x45aeee[_0x5cd3('0x16')]['forEach'](_0x2fef02=>{_0x57dc21['push'](_0x2fef02[_0x5cd3('0x17')]);});var _0x146db2=/<img.*? _SRC(.*?)[^>]+>/g;var _0x5631f2=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x281616=_0x45aeee[_0x5cd3('0x12')][_0x5cd3('0x14')](_0x5631f2,'_SRC');var _0xa441e6=_0x281616[_0x5cd3('0x14')](_0x146db2,'_IMG');for(let _0x598052=0x0;_0x598052<_0x57dc21[_0x5cd3('0xd')];_0x598052++){var _0x36d08b=_0xa441e6[_0x5cd3('0x14')]('_IMG',_0x5cd3('0x18')+_0x57dc21[_0x598052]+_0x5cd3('0x19'));_0xa441e6=_0x36d08b;}_0x45aeee['html']=_0xa441e6;}_0x21a8a8[_0x5cd3('0x1a')]=_0x45aeee[_0x5cd3('0x12')];}else{_0x21a8a8[_0x5cd3('0x1a')]=_0x45aeee[_0x5cd3('0x1b')];}if(_0x21a8a8[_0x5cd3('0x1a')]){_0x21a8a8['body']=_0x21a8a8[_0x5cd3('0x1a')]['replace'](/<a\s+/gi,_0x5cd3('0x1c'));}if(_0x45aeee['to']){_0x21a8a8[_0x5cd3('0x1d')]['originTo']=getMails(null,_0x45aeee['to']);var _0x183cca=getMails(_0x56da28[_0x5cd3('0x1e')],_0x45aeee['to']);if(!_[_0x5cd3('0x1f')](_0x183cca)){_0x21a8a8[_0x5cd3('0x1d')]['cc']+=_0x183cca;}}if(_0x45aeee['cc']){_0x21a8a8[_0x5cd3('0x1d')][_0x5cd3('0x20')]=getMails(null,_0x45aeee['cc']);var _0x126c40=getMails(_0x56da28[_0x5cd3('0x1e')],_0x45aeee['cc']);if(!_['isEmpty'](_0x126c40)){if(!_[_0x5cd3('0x1f')](_0x21a8a8['message']['cc'])){_0x21a8a8['message']['cc']+=',';}_0x21a8a8['message']['cc']+=_0x126c40;}}if(!_[_0x5cd3('0x15')](_0x21a8a8['message'][_0x5cd3('0x21')],_0x56da28[_0x5cd3('0x1e')])&&!_[_0x5cd3('0x15')](_0x21a8a8[_0x5cd3('0x1d')]['originCc'],_0x56da28[_0x5cd3('0x1e')])){_0x21a8a8['message']['bcc']=_0x56da28[_0x5cd3('0x1e')];}if(_0x45aeee['attachments']&&_0x45aeee[_0x5cd3('0x16')][_0x5cd3('0xd')]){_0x21a8a8[_0x5cd3('0x1d')][_0x5cd3('0x22')]=_0x45aeee[_0x5cd3('0x16')][_0x5cd3('0xd')];for(var _0x4d30f7=0x0,_0x49bfdb,_0x457279,_0x43c27a;_0x4d30f7<_0x45aeee['attachments'][_0x5cd3('0xd')];_0x4d30f7+=0x1){if(_0x45aeee[_0x5cd3('0x16')][_0x4d30f7][_0x5cd3('0x23')]===_0x5cd3('0x24')){_0x43c27a=_0x45aeee[_0x5cd3('0x16')][_0x4d30f7][_0x5cd3('0x17')]||_0x5cd3('0x25')+_0x4d30f7;_0x49bfdb=util[_0x5cd3('0x26')](_0x5cd3('0x27'),Date[_0x5cd3('0x28')](),_0x43c27a);_0x457279=path[_0x5cd3('0xf')](config[_0x5cd3('0x29')],'server/files/attachments/',_0x49bfdb);fs[_0x5cd3('0x2a')](_0x457279,_0x45aeee[_0x5cd3('0x16')][_0x4d30f7][_0x5cd3('0x2b')]);_0x21a8a8['message'][_0x5cd3('0x16')]['push']({'name':_0x43c27a,'basename':_0x49bfdb,'type':_0x45aeee[_0x5cd3('0x16')][_0x4d30f7][_0x5cd3('0x2c')],'filepath':_0x457279});}}}if(_0x45aeee[_0x5cd3('0x2d')]&&_0x45aeee[_0x5cd3('0x2d')]['length']>0x0){var _0xef6800=[_0x5cd3('0x2e'),_0x5cd3('0x2f'),_0x5cd3('0x30')];for(var _0x20b5cc=0x0;_0x20b5cc<_0x45aeee[_0x5cd3('0x2d')][_0x5cd3('0xd')];_0x20b5cc++){var _0xdd749d=_[_0x5cd3('0xc')](_0xef6800,_0x45aeee[_0x5cd3('0x2d')][_0x20b5cc]['line']);if(_0xdd749d>=0x0){_0x21a8a8['isAutoreply']=!![];}}}return _0x21a8a8;}exports[_0x5cd3('0x31')]=function(_0x5ef46f,_0x3dd34e,_0x5c6d00){var _0x1fb11d={'from':getAddress(_0x3dd34e[_0x5cd3('0x32')]),'firstName':getFirstName(_0x3dd34e[_0x5cd3('0x32')]),'lastName':getLastName(_0x3dd34e[_0x5cd3('0x32')]),'mapKey':_0x5cd3('0x1e'),'message':{'from':getMails(_0x5ef46f[_0x5cd3('0x1e')],_0x3dd34e[_0x5cd3('0x32')]),'to':_0x5ef46f['email'],'cc':'','subject':_0x3dd34e['subject']||'','messageId':_0x3dd34e[_0x5cd3('0x33')],'inReplyTo':_0x3dd34e[_0x5cd3('0x34')],'sentAt':moment(_0x3dd34e[_0x5cd3('0x35')])['format'](_0x5cd3('0x36')),'attach':![],'attachments':[]}};if(!_0x3dd34e[_0x5cd3('0x12')]&&!_0x3dd34e['textAsHtml']){var _0x22f863=_[_0x5cd3('0x37')](_0x3dd34e[_0x5cd3('0x16')],{'contentType':_0x5cd3('0x38')});if(_0x22f863[_0x5cd3('0xd')]){logger['info'](util[_0x5cd3('0x26')](_0x5cd3('0x39'),_0x3dd34e['messageId']));tnef[_0x5cd3('0x3a')](_[_0x5cd3('0x3b')](_0x22f863)[_0x5cd3('0x2b')],function(_0x469545,_0xffdc14){if(_0xffdc14){_0x3dd34e[_0x5cd3('0x12')]=_0xffdc14[_0x5cd3('0x3c')]||_0x5cd3('0x3d');if(_0xffdc14['Attachments']){for(var _0x276b7c=0x0;_0x276b7c<_0xffdc14[_0x5cd3('0x3e')][_0x5cd3('0xd')];_0x276b7c++){var _0x5d18d0=_0xffdc14[_0x5cd3('0x3e')][_0x276b7c];_0x1fb11d[_0x5cd3('0x1d')][_0x5cd3('0x16')][_0x5cd3('0x3f')]({'filename':_0x5d18d0[_0x5cd3('0x40')],'content':Buffer[_0x5cd3('0x32')](_0x5d18d0[_0x5cd3('0x41')])});}}}_0x5c6d00(parseEmail(_0x5ef46f,_0x3dd34e,_0x1fb11d));});}else{_0x3dd34e[_0x5cd3('0x12')]=_0x5cd3('0x3d');_0x5c6d00(parseEmail(_0x5ef46f,_0x3dd34e,_0x1fb11d));}}else{_0x5c6d00(parseEmail(_0x5ef46f,_0x3dd34e,_0x1fb11d));}};exports['generateXOAuth2Token']=function(_0x554a97,_0x2404f4){var _0x5c6ab1=[_0x5cd3('0x42')+(_0x2404f4||''),_0x5cd3('0x43')+_0x554a97,'',''];return Buffer['from'](_0x5c6ab1[_0x5cd3('0xf')]('\ 1'),_0x5cd3('0x44'))[_0x5cd3('0x45')]('base64');};
\ No newline at end of file
+var _0xb3ea=['length','slice','join','head','isEmpty','html','test','replace','includes','attachments','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','bcc','attach','type','attachment','attachment-','format','%s-%s','now','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','application/ms-tnef','info','parseBuffer','first','BodyHTML','Attachments','Title','Data','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','node-tnef','../../../config/logger','email','../../../config/environment','address','anonymous','generate','@xcally.com','value','name','substring','split'];(function(_0x3382f2,_0xbbe702){var _0x4af436=function(_0x293767){while(--_0x293767){_0x3382f2['push'](_0x3382f2['shift']());}};_0x4af436(++_0xbbe702);}(_0xb3ea,0x10c));var _0xab3e=function(_0x4e6e26,_0x4a9ef8){_0x4e6e26=_0x4e6e26-0x0;var _0x5a81ef=_0xb3ea[_0x4e6e26];return _0x5a81ef;};'use strict';var _=require(_0xab3e('0x0'));var moment=require(_0xab3e('0x1'));var random=require(_0xab3e('0x2'));var fs=require('fs');var path=require(_0xab3e('0x3'));var util=require('util');var tnef=require(_0xab3e('0x4'));var logger=require(_0xab3e('0x5'))(_0xab3e('0x6'));var config=require(_0xab3e('0x7'));function getAddress(_0x478ef5){var _0x4dbc42=_['head'](_0x478ef5['value']);return _0x4dbc42&&_0x4dbc42[_0xab3e('0x8')]?_0x4dbc42[_0xab3e('0x8')]:_0xab3e('0x9')+random[_0xab3e('0xa')](0x6)+_0xab3e('0xb');}function getFirstName(_0xc9e113){var _0x48ae87=_['head'](_0xc9e113[_0xab3e('0xc')]);if(_0x48ae87&&_0x48ae87[_0xab3e('0xd')]){if(_0x48ae87[_0xab3e('0xd')]==_0x48ae87[_0xab3e('0x8')]){return _0x48ae87[_0xab3e('0xd')][_0xab3e('0xe')](0x0,_0x48ae87[_0xab3e('0xd')]['indexOf']('@'));}var _0x2ed10e=_0x48ae87[_0xab3e('0xd')][_0xab3e('0xf')](/\s+/);return _0x2ed10e[_0xab3e('0x10')]>0x1?_0x2ed10e[_0xab3e('0x11')](0x0,-0x1)[_0xab3e('0x12')]('\x20'):_0x48ae87[_0xab3e('0xd')];}return'Anonymous';}function getLastName(_0x249132){var _0x19a6be=_[_0xab3e('0x13')](_0x249132[_0xab3e('0xc')]);if(_0x19a6be&&_0x19a6be[_0xab3e('0xd')]){var _0x373f21=_0x19a6be[_0xab3e('0xd')]['split'](/\s+/);return _0x373f21[_0xab3e('0x10')]>0x1?_0x373f21['pop']():'';}return'';}function getMails(_0x206c42,_0x2eb3a3){var _0x31d49a='';for(var _0x41efc8=0x0;_0x41efc8<_0x2eb3a3['value'][_0xab3e('0x10')];_0x41efc8+=0x1){if(_0x2eb3a3[_0xab3e('0xc')][_0x41efc8][_0xab3e('0x8')]!==_0x206c42){if(!_[_0xab3e('0x14')](_0x31d49a)){_0x31d49a+=',';}_0x31d49a+=_0x2eb3a3[_0xab3e('0xc')][_0x41efc8]['name']||_0x2eb3a3[_0xab3e('0xc')][_0x41efc8][_0xab3e('0x8')]||'';_0x31d49a+='\x20<';_0x31d49a+=_0x2eb3a3['value'][_0x41efc8][_0xab3e('0x8')]?_0x2eb3a3[_0xab3e('0xc')][_0x41efc8][_0xab3e('0x8')]:_0xab3e('0x9')+random['generate'](0x6)+'@xcally.com';_0x31d49a+='>';}}return _0x31d49a;}function parseEmail(_0x4f0c38,_0x1854ea,_0x427cf0){if(_0x1854ea[_0xab3e('0x15')]){var _0x59feca=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x59feca[_0xab3e('0x16')](_0x1854ea[_0xab3e('0x15')])){_0x1854ea[_0xab3e('0x15')]=_0x1854ea[_0xab3e('0x15')][_0xab3e('0x17')](_0x59feca,'');}if(_0x1854ea[_0xab3e('0x15')][_0xab3e('0x18')]('<img')){var _0xec445a=[];_0x1854ea[_0xab3e('0x19')]['forEach'](_0xa139cf=>{_0xec445a['push'](_0xa139cf[_0xab3e('0x1a')]);});var _0x4ce71a=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3369c1=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x3f1785=_0x1854ea[_0xab3e('0x15')][_0xab3e('0x17')](_0x3369c1,_0xab3e('0x1b'));var _0x588166=_0x3f1785[_0xab3e('0x17')](_0x4ce71a,'_IMG');for(let _0xad765=0x0;_0xad765<_0xec445a['length'];_0xad765++){var _0x5a1932=_0x588166[_0xab3e('0x17')](_0xab3e('0x1c'),_0xab3e('0x1d')+_0xec445a[_0xad765]+_0xab3e('0x1e'));_0x588166=_0x5a1932;}_0x1854ea[_0xab3e('0x15')]=_0x588166;}_0x427cf0[_0xab3e('0x1f')]=_0x1854ea[_0xab3e('0x15')];}else{_0x427cf0['body']=_0x1854ea[_0xab3e('0x20')];}if(_0x427cf0[_0xab3e('0x1f')]){_0x427cf0[_0xab3e('0x1f')]=_0x427cf0['body'][_0xab3e('0x17')](/<a\s+/gi,_0xab3e('0x21'));}if(_0x1854ea['to']){_0x427cf0[_0xab3e('0x22')][_0xab3e('0x23')]=getMails(null,_0x1854ea['to']);var _0x13ab16=getMails(_0x4f0c38['email'],_0x1854ea['to']);if(!_[_0xab3e('0x14')](_0x13ab16)){_0x427cf0[_0xab3e('0x22')]['cc']+=_0x13ab16;}}if(_0x1854ea['cc']){_0x427cf0[_0xab3e('0x22')]['originCc']=getMails(null,_0x1854ea['cc']);var _0x1781b3=getMails(_0x4f0c38[_0xab3e('0x6')],_0x1854ea['cc']);if(!_[_0xab3e('0x14')](_0x1781b3)){if(!_[_0xab3e('0x14')](_0x427cf0['message']['cc'])){_0x427cf0[_0xab3e('0x22')]['cc']+=',';}_0x427cf0[_0xab3e('0x22')]['cc']+=_0x1781b3;}}if(!_[_0xab3e('0x18')](_0x427cf0[_0xab3e('0x22')][_0xab3e('0x23')],_0x4f0c38[_0xab3e('0x6')])&&!_[_0xab3e('0x18')](_0x427cf0[_0xab3e('0x22')]['originCc'],_0x4f0c38[_0xab3e('0x6')])){_0x427cf0['message'][_0xab3e('0x24')]=_0x4f0c38[_0xab3e('0x6')];}if(_0x1854ea['attachments']&&_0x1854ea[_0xab3e('0x19')][_0xab3e('0x10')]){_0x427cf0[_0xab3e('0x22')][_0xab3e('0x25')]=_0x1854ea[_0xab3e('0x19')][_0xab3e('0x10')];for(var _0x572716=0x0,_0x9e85a9,_0x2b1d92,_0xeb74ad;_0x572716<_0x1854ea['attachments'][_0xab3e('0x10')];_0x572716+=0x1){if(_0x1854ea[_0xab3e('0x19')][_0x572716][_0xab3e('0x26')]===_0xab3e('0x27')){_0xeb74ad=_0x1854ea[_0xab3e('0x19')][_0x572716][_0xab3e('0x1a')]||_0xab3e('0x28')+_0x572716;_0x9e85a9=util[_0xab3e('0x29')](_0xab3e('0x2a'),Date[_0xab3e('0x2b')](),_0xeb74ad);_0x2b1d92=path['join'](config['root'],_0xab3e('0x2c'),_0x9e85a9);fs[_0xab3e('0x2d')](_0x2b1d92,_0x1854ea[_0xab3e('0x19')][_0x572716][_0xab3e('0x2e')]);_0x427cf0['message'][_0xab3e('0x19')][_0xab3e('0x2f')]({'name':_0xeb74ad,'basename':_0x9e85a9,'type':_0x1854ea['attachments'][_0x572716][_0xab3e('0x30')],'filepath':_0x2b1d92});}}}if(_0x1854ea[_0xab3e('0x31')]&&_0x1854ea[_0xab3e('0x31')][_0xab3e('0x10')]>0x0){var _0x149823=['Auto-Submitted:\x20auto-replied',_0xab3e('0x32'),_0xab3e('0x33')];for(var _0x870706=0x0;_0x870706<_0x1854ea[_0xab3e('0x31')][_0xab3e('0x10')];_0x870706++){var _0x2d5909=_['indexOf'](_0x149823,_0x1854ea[_0xab3e('0x31')][_0x870706][_0xab3e('0x34')]);if(_0x2d5909>=0x0){_0x427cf0[_0xab3e('0x35')]=!![];}}}return _0x427cf0;}exports['parser']=function(_0x470ae5,_0x265a0a,_0x3d7e5e){var _0x3c4937={'from':getAddress(_0x265a0a[_0xab3e('0x36')]),'firstName':getFirstName(_0x265a0a['from']),'lastName':getLastName(_0x265a0a[_0xab3e('0x36')]),'mapKey':'email','message':{'from':getMails(_0x470ae5['email'],_0x265a0a[_0xab3e('0x36')]),'to':_0x470ae5[_0xab3e('0x6')],'cc':'','subject':_0x265a0a['subject']||'','messageId':_0x265a0a[_0xab3e('0x37')],'inReplyTo':_0x265a0a[_0xab3e('0x38')],'sentAt':moment(_0x265a0a['date'])[_0xab3e('0x29')](_0xab3e('0x39')),'attach':![],'attachments':[]}};if(!_0x265a0a['html']&&!_0x265a0a[_0xab3e('0x20')]){var _0x1fdec0=_['filter'](_0x265a0a[_0xab3e('0x19')],{'contentType':_0xab3e('0x3a')});if(_0x1fdec0['length']){logger[_0xab3e('0x3b')](util[_0xab3e('0x29')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x265a0a['messageId']));tnef[_0xab3e('0x3c')](_[_0xab3e('0x3d')](_0x1fdec0)[_0xab3e('0x2e')],function(_0x7378a8,_0x27942f){if(_0x27942f){_0x265a0a[_0xab3e('0x15')]=_0x27942f[_0xab3e('0x3e')]||'<p>Empty\x20message</p>';if(_0x27942f[_0xab3e('0x3f')]){for(var _0xe60571=0x0;_0xe60571<_0x27942f['Attachments'][_0xab3e('0x10')];_0xe60571++){var _0x2cf146=_0x27942f['Attachments'][_0xe60571];_0x3c4937['message'][_0xab3e('0x19')][_0xab3e('0x2f')]({'filename':_0x2cf146[_0xab3e('0x40')],'content':Buffer[_0xab3e('0x36')](_0x2cf146[_0xab3e('0x41')])});}}}_0x3d7e5e(parseEmail(_0x470ae5,_0x265a0a,_0x3c4937));});}else{_0x265a0a[_0xab3e('0x15')]='<p>Empty\x20message</p>';_0x3d7e5e(parseEmail(_0x470ae5,_0x265a0a,_0x3c4937));}}else{_0x3d7e5e(parseEmail(_0x470ae5,_0x265a0a,_0x3c4937));}};exports['generateXOAuth2Token']=function(_0x3498d1,_0x1cbc31){var _0x2a39de=[_0xab3e('0x42')+(_0x1cbc31||''),_0xab3e('0x43')+_0x3498d1,'',''];return Buffer[_0xab3e('0x36')](_0x2a39de['join']('\ 1'),_0xab3e('0x44'))[_0xab3e('0x45')](_0xab3e('0x46'));};
\ No newline at end of file
index 062db87..075921a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa73d=['SERV','active','Imap','Smtp','exports','name','Service'];(function(_0x2cd3c6,_0xe882e7){var _0x55e7ad=function(_0x552f27){while(--_0x552f27){_0x2cd3c6['push'](_0x2cd3c6['shift']());}};_0x55e7ad(++_0xe882e7);}(_0xa73d,0x101));var _0xda73=function(_0x18cdce,_0x4c0bd1){_0x18cdce=_0x18cdce-0x0;var _0x157d39=_0xa73d[_0x18cdce];return _0x157d39;};'use strict';var _=require('lodash');function MailAccount(_0x270397){this['id']=_0x270397['id']||0x0;this[_0xda73('0x0')]=_0x270397[_0xda73('0x0')]||_0xda73('0x1');this['key']=_0x270397['key']||_0xda73('0x2');this[_0xda73('0x3')]=_0x270397[_0xda73('0x3')]||![];this[_0xda73('0x4')]=_0x270397[_0xda73('0x4')]||[];this['Smtp']=_0x270397[_0xda73('0x5')]||[];}module[_0xda73('0x6')]=MailAccount;
\ No newline at end of file
+var _0x941c=['lodash','name','Service','key','active','Imap','Smtp','exports'];(function(_0x590e5a,_0x5d556b){var _0x6a49c6=function(_0x32a2be){while(--_0x32a2be){_0x590e5a['push'](_0x590e5a['shift']());}};_0x6a49c6(++_0x5d556b);}(_0x941c,0xd8));var _0xc941=function(_0x3ad1d5,_0xd334d8){_0x3ad1d5=_0x3ad1d5-0x0;var _0x1caec1=_0x941c[_0x3ad1d5];return _0x1caec1;};'use strict';var _=require(_0xc941('0x0'));function MailAccount(_0x41694c){this['id']=_0x41694c['id']||0x0;this[_0xc941('0x1')]=_0x41694c[_0xc941('0x1')]||_0xc941('0x2');this[_0xc941('0x3')]=_0x41694c[_0xc941('0x3')]||'SERV';this[_0xc941('0x4')]=_0x41694c[_0xc941('0x4')]||![];this[_0xc941('0x5')]=_0x41694c[_0xc941('0x5')]||[];this[_0xc941('0x6')]=_0x41694c[_0xc941('0x6')]||[];}module[_0xc941('0x7')]=MailAccount;
\ No newline at end of file
index 33b81e4..e4ceabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ad=['mailAccounts','length','isUndefined','exports','lodash','../model/mailAccount','mapKeys','prototype','hasOwnProperty','initMailAccounts'];(function(_0x20b86b,_0x228a66){var _0x51095e=function(_0x1662a1){while(--_0x1662a1){_0x20b86b['push'](_0x20b86b['shift']());}};_0x51095e(++_0x228a66);}(_0xe1ad,0xc2));var _0xde1a=function(_0x48887a,_0x199482){_0x48887a=_0x48887a-0x0;var _0x101b3c=_0xe1ad[_0x48887a];return _0x101b3c;};'use strict';var _=require(_0xde1a('0x0'));var MailAccount=require(_0xde1a('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x52a318,_0x2754fb,_0x48dadb){var _0x2ba12d=_[_0xde1a('0x2')](_0x52a318,function(_0x16b222,_0x571a70){return _0x16b222[_0x48dadb];});for(var _0x3050b6 in _0x2754fb){if(_0x2754fb['hasOwnProperty'](_0x3050b6)){if(!_0x2ba12d[_0x3050b6]){delete _0x2754fb[_0x3050b6];}}}}Realtime[_0xde1a('0x3')]['mergeFromDatabase']=function(_0x124569,_0x1be6b8){for(var _0x49a540 in _0x1be6b8){if(_0x124569[_0xde1a('0x4')](_0x49a540)){_0x124569[_0x49a540]=_0x1be6b8[_0x49a540];}}};Realtime[_0xde1a('0x3')][_0xde1a('0x5')]=function(){var _0x3b844f=this;return function(_0x5ff189){if(_0x5ff189){freeIsNotKey(_0x5ff189,_0x3b844f[_0xde1a('0x6')],'id');for(var _0x26e770=0x0,_0xda3059={},_0x2ea257={};_0x26e770<_0x5ff189[_0xde1a('0x7')];_0x26e770+=0x1){_0xda3059=_0x5ff189[_0x26e770];if(_[_0xde1a('0x8')](_0x3b844f[_0xde1a('0x6')][_0xda3059['id']])){_0x3b844f[_0xde1a('0x6')][_0xda3059['id']]=new MailAccount(_0xda3059);}else{_['merge'](_0x3b844f[_0xde1a('0x6')][_0xda3059['id']],_0xda3059);}}}return _0x3b844f[_0xde1a('0x6')];};};module[_0xde1a('0x9')]=Realtime;
\ No newline at end of file
+var _0xc8f5=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','exports','../model/mailAccount','mailAccounts'];(function(_0x65c903,_0x41e920){var _0x23e1d7=function(_0x4279cd){while(--_0x4279cd){_0x65c903['push'](_0x65c903['shift']());}};_0x23e1d7(++_0x41e920);}(_0xc8f5,0x18e));var _0x5c8f=function(_0x51b698,_0x2fd161){_0x51b698=_0x51b698-0x0;var _0xfa0590=_0xc8f5[_0x51b698];return _0xfa0590;};'use strict';var _=require('lodash');var MailAccount=require(_0x5c8f('0x0'));var Realtime=function(){this[_0x5c8f('0x1')]={};};function freeIsNotKey(_0x3c3811,_0x39e511,_0x4856a3){var _0xcac507=_[_0x5c8f('0x2')](_0x3c3811,function(_0x244911,_0x73f7e4){return _0x244911[_0x4856a3];});for(var _0xf23b60 in _0x39e511){if(_0x39e511[_0x5c8f('0x3')](_0xf23b60)){if(!_0xcac507[_0xf23b60]){delete _0x39e511[_0xf23b60];}}}}Realtime[_0x5c8f('0x4')][_0x5c8f('0x5')]=function(_0x4dc5f0,_0x221acf){for(var _0x3732d8 in _0x221acf){if(_0x4dc5f0[_0x5c8f('0x3')](_0x3732d8)){_0x4dc5f0[_0x3732d8]=_0x221acf[_0x3732d8];}}};Realtime[_0x5c8f('0x4')][_0x5c8f('0x6')]=function(){var _0x47af4b=this;return function(_0x5ad145){if(_0x5ad145){freeIsNotKey(_0x5ad145,_0x47af4b[_0x5c8f('0x1')],'id');for(var _0x23eb38=0x0,_0x4681eb={},_0x452cd0={};_0x23eb38<_0x5ad145[_0x5c8f('0x7')];_0x23eb38+=0x1){_0x4681eb=_0x5ad145[_0x23eb38];if(_[_0x5c8f('0x8')](_0x47af4b[_0x5c8f('0x1')][_0x4681eb['id']])){_0x47af4b[_0x5c8f('0x1')][_0x4681eb['id']]=new MailAccount(_0x4681eb);}else{_['merge'](_0x47af4b[_0x5c8f('0x1')][_0x4681eb['id']],_0x4681eb);}}}return _0x47af4b['mailAccounts'];};};module[_0x5c8f('0x9')]=Realtime;
\ No newline at end of file
index c92dd25..0d7cd16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe451=['key','TemplateId','MailServerIn','Imap','name','CloudProvider','MailServerOut','Smtp','type','getMailAccount','notify','NotifyMailAccount','Request','service','email','active'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe451,0xec));var _0x1e45=function(_0x1e7cd1,_0x3ece77){_0x1e7cd1=_0x1e7cd1-0x0;var _0x9f924e=_0xe451[_0x1e7cd1];return _0x9f924e;};'use strict';var client=require('../client');exports['getMailAccounts']=function(){return function(){return client[_0x1e45('0x0')]('GetMailAccount',{'options':{'attributes':['id','name','provider',_0x1e45('0x1'),_0x1e45('0x2'),_0x1e45('0x3'),_0x1e45('0x4'),'ListId',_0x1e45('0x5')],'raw':![],'include':[{'model':_0x1e45('0x6'),'as':_0x1e45('0x7'),'include':[{'model':'CloudProvider','attributes':['id',_0x1e45('0x8'),_0x1e45('0x1'),'type','data5'],'as':_0x1e45('0x9')}]},{'model':_0x1e45('0xa'),'as':_0x1e45('0xb'),'include':[{'model':'CloudProvider','attributes':['id',_0x1e45('0x8'),_0x1e45('0x1'),_0x1e45('0xc'),'data5'],'as':'CloudProvider'}]}]},'log':_0x1e45('0xd')});};};exports[_0x1e45('0xe')]=function(_0x1422ae,_0x2d5e0e){return client['Request'](_0x1e45('0xf'),{'account':{'id':_0x1422ae},'body':_0x2d5e0e,'log':_0x1e45('0xf')});};
\ No newline at end of file
+var _0xfd16=['data5','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','../client','name','provider','service','email','active','key','ListId','TemplateId','MailServerIn','Imap','CloudProvider','type'];(function(_0x1fe0ff,_0x4566cf){var _0xd08f05=function(_0x870225){while(--_0x870225){_0x1fe0ff['push'](_0x1fe0ff['shift']());}};_0xd08f05(++_0x4566cf);}(_0xfd16,0x113));var _0x6fd1=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0xfd16[_0xb24a3e];return _0x4038d7;};'use strict';var client=require(_0x6fd1('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request']('GetMailAccount',{'options':{'attributes':['id',_0x6fd1('0x1'),_0x6fd1('0x2'),_0x6fd1('0x3'),_0x6fd1('0x4'),_0x6fd1('0x5'),_0x6fd1('0x6'),_0x6fd1('0x7'),_0x6fd1('0x8')],'raw':![],'include':[{'model':_0x6fd1('0x9'),'as':_0x6fd1('0xa'),'include':[{'model':_0x6fd1('0xb'),'attributes':['id',_0x6fd1('0x1'),_0x6fd1('0x3'),_0x6fd1('0xc'),_0x6fd1('0xd')],'as':_0x6fd1('0xb')}]},{'model':_0x6fd1('0xe'),'as':_0x6fd1('0xf'),'include':[{'model':_0x6fd1('0xb'),'attributes':['id',_0x6fd1('0x1'),_0x6fd1('0x3'),_0x6fd1('0xc'),_0x6fd1('0xd')],'as':_0x6fd1('0xb')}]}]},'log':_0x6fd1('0x10')});};};exports['notify']=function(_0x533f46,_0x183558){return client['Request'](_0x6fd1('0x11'),{'account':{'id':_0x533f46},'body':_0x183558,'log':'NotifyMailAccount'});};
\ No newline at end of file
index e9a4678..e602164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a3=['GetSettings','../client','getSettings','Request','ShowSetting'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x00a3,0x1eb));var _0x300a=function(_0x1995e5,_0x5b4680){_0x1995e5=_0x1995e5-0x0;var _0x4d8a9f=_0x00a3[_0x1995e5];return _0x4d8a9f;};'use strict';var client=require(_0x300a('0x0'));exports[_0x300a('0x1')]=function(){return client[_0x300a('0x2')](_0x300a('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x300a('0x4')});};
\ No newline at end of file
+var _0x97f8=['../client','Request','ShowSetting'];(function(_0x397183,_0x1f6069){var _0x45e468=function(_0x267393){while(--_0x267393){_0x397183['push'](_0x397183['shift']());}};_0x45e468(++_0x1f6069);}(_0x97f8,0x135));var _0x897f=function(_0x119bd9,_0x21cdf5){_0x119bd9=_0x119bd9-0x0;var _0x5f2e77=_0x97f8[_0x119bd9];return _0x5f2e77;};'use strict';var client=require(_0x897f('0x0'));exports['getSettings']=function(){return client[_0x897f('0x1')](_0x897f('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':'GetSettings'});};
\ No newline at end of file
index 122728f..eb8772a 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 82cb051..ddda577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8810=['sticky-session','../../config/environment','createServer','listen','port','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/socketio','default','../../routes','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express'];(function(_0x1620bb,_0x1083e1){var _0x41944d=function(_0x4adbd8){while(--_0x4adbd8){_0x1620bb['push'](_0x1620bb['shift']());}};_0x41944d(++_0x1083e1);}(_0x8810,0x1cb));var _0x0881=function(_0x3a1502,_0x428182){_0x3a1502=_0x3a1502-0x0;var _0x48118e=_0x8810[_0x3a1502];return _0x48118e;};'use strict';var _=require(_0x0881('0x0'));var http=require(_0x0881('0x1'));var express=require(_0x0881('0x2'));var sticky=require(_0x0881('0x3'));var Redis=require('ioredis');var config=require(_0x0881('0x4'));var app=express();var server=http[_0x0881('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0x0881('0x6')](server,config[_0x0881('0x7')])){var socketio=require('socket.io')(server,{'transports':[_0x0881('0x8'),_0x0881('0x9')]});config[_0x0881('0xa')]=_[_0x0881('0xb')](config[_0x0881('0xa')],{'host':_0x0881('0xc'),'port':0x18eb});socketio[_0x0881('0xd')](require(_0x0881('0xe'))({'pubClient':new Redis(config[_0x0881('0xa')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')['default']();require(_0x0881('0xf'))['default'](socketio);require('../../config/express')[_0x0881('0x10')](app);require(_0x0881('0x11'))[_0x0881('0x10')](app);}else{server[_0x0881('0x12')]('listening',function(){console[_0x0881('0x13')](_0x0881('0x14'),config[_0x0881('0x7')]);});}exports=module[_0x0881('0x15')]=app;
\ No newline at end of file
+var _0xd278=['socket.io-redis','redis','../../config/triggers','default','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','http','express','createServer','timeout','listen','port','socket.io','websocket','polling','adapter'];(function(_0xc89882,_0x2a7ea1){var _0x32bc22=function(_0x231be2){while(--_0x231be2){_0xc89882['push'](_0xc89882['shift']());}};_0x32bc22(++_0x2a7ea1);}(_0xd278,0x1ae));var _0x8d27=function(_0x6dbdc7,_0x544a68){_0x6dbdc7=_0x6dbdc7-0x0;var _0xfb56fa=_0xd278[_0x6dbdc7];return _0xfb56fa;};'use strict';var _=require('lodash');var http=require(_0x8d27('0x0'));var express=require(_0x8d27('0x1'));var sticky=require('sticky-session');var Redis=require('ioredis');var config=require('../../config/environment');var app=express();var server=http[_0x8d27('0x2')](app);server[_0x8d27('0x3')]=0xdbba0;if(sticky[_0x8d27('0x4')](server,config[_0x8d27('0x5')])){var socketio=require(_0x8d27('0x6'))(server,{'transports':[_0x8d27('0x7'),_0x8d27('0x8')]});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});socketio[_0x8d27('0x9')](require(_0x8d27('0xa'))({'pubClient':new Redis(config[_0x8d27('0xb')]),'subClient':new Redis(config[_0x8d27('0xb')])}));require(_0x8d27('0xc'))[_0x8d27('0xd')]();require('../../config/socketio')[_0x8d27('0xd')](socketio);require('../../config/express')['default'](app);require(_0x8d27('0xe'))[_0x8d27('0xd')](app);}else{server[_0x8d27('0xf')](_0x8d27('0x10'),function(){console[_0x8d27('0x11')](_0x8d27('0x12'),config[_0x8d27('0x5')]);});}exports=module[_0x8d27('0x13')]=app;
\ No newline at end of file
index e0fd4ee..1e022f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f08=['exports','jayson/promise','bluebird','routing','Request','request','then','debug','error','rpc','message','result','catch'];(function(_0x4cbf20,_0x1bfa66){var _0x582ae4=function(_0x5eca38){while(--_0x5eca38){_0x4cbf20['push'](_0x4cbf20['shift']());}};_0x582ae4(++_0x1bfa66);}(_0x4f08,0xaa));var _0x84f0=function(_0x593b19,_0x5b58fe){_0x593b19=_0x593b19-0x0;var _0x560e36=_0x4f08[_0x593b19];return _0x560e36;};'use strict';var jayson=require(_0x84f0('0x0'));var BPromise=require(_0x84f0('0x1'));var logger=require('../../config/logger')(_0x84f0('0x2'));var client=jayson['client']['http']({'port':0x2329});client[_0x84f0('0x3')]=function(_0xa0865,_0xb73a24){return new BPromise(function(_0x2495e8,_0x118ee2){return client[_0x84f0('0x4')](_0xa0865,_0xb73a24)[_0x84f0('0x5')](function(_0x94c8b){logger[_0x84f0('0x6')]('rpc',_0x84f0('0x2'),_0xa0865,_0xb73a24,_0x94c8b);if(_0x94c8b[_0x84f0('0x7')]){logger[_0x84f0('0x7')](_0x84f0('0x8'),_0x84f0('0x2'),_0xa0865,_0x94c8b[_0x84f0('0x7')][_0x84f0('0x9')],_0xb73a24);return _0x118ee2(_0x94c8b[_0x84f0('0x7')][_0x84f0('0x9')]);}else{return _0x2495e8(_0x94c8b[_0x84f0('0xa')]);}})[_0x84f0('0xb')](function(_0x44cc3d){logger['error'](_0x84f0('0x8'),_0x84f0('0x2'),_0xa0865,_0x44cc3d,_0xb73a24);return _0x118ee2(_0x44cc3d);});});};module[_0x84f0('0xc')]=client;
\ No newline at end of file
+var _0x3b82=['request','then','debug','rpc','error','message','result','catch','jayson/promise','bluebird','../../config/logger','routing','client','http'];(function(_0xb907ab,_0x4393e0){var _0x3b239c=function(_0x4691e0){while(--_0x4691e0){_0xb907ab['push'](_0xb907ab['shift']());}};_0x3b239c(++_0x4393e0);}(_0x3b82,0x174));var _0x23b8=function(_0x24eab8,_0x2f471c){_0x24eab8=_0x24eab8-0x0;var _0x41d883=_0x3b82[_0x24eab8];return _0x41d883;};'use strict';var jayson=require(_0x23b8('0x0'));var BPromise=require(_0x23b8('0x1'));var logger=require(_0x23b8('0x2'))(_0x23b8('0x3'));var client=jayson[_0x23b8('0x4')][_0x23b8('0x5')]({'port':0x2329});client['Request']=function(_0x2271c8,_0x4c05cc){return new BPromise(function(_0x50aa7e,_0x2cae0c){return client[_0x23b8('0x6')](_0x2271c8,_0x4c05cc)[_0x23b8('0x7')](function(_0x9798){logger[_0x23b8('0x8')](_0x23b8('0x9'),_0x23b8('0x3'),_0x2271c8,_0x4c05cc,_0x9798);if(_0x9798['error']){logger[_0x23b8('0xa')](_0x23b8('0x9'),_0x23b8('0x3'),_0x2271c8,_0x9798[_0x23b8('0xa')][_0x23b8('0xb')],_0x4c05cc);return _0x2cae0c(_0x9798[_0x23b8('0xa')][_0x23b8('0xb')]);}else{return _0x50aa7e(_0x9798[_0x23b8('0xc')]);}})[_0x23b8('0xd')](function(_0x1ea5f2){logger[_0x23b8('0xa')](_0x23b8('0x9'),'routing',_0x2271c8,_0x1ea5f2,_0x4c05cc);return _0x2cae0c(_0x1ea5f2);});});};module['exports']=client;
\ No newline at end of file
index 4026e52..10de2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd096=['initFaxQueues','initWhatsappQueues','catch','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','getAgents','initAgents','then','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues'];(function(_0x17a5f1,_0x4f2ef2){var _0x46bd7f=function(_0x4b1038){while(--_0x4b1038){_0x17a5f1['push'](_0x17a5f1['shift']());}};_0x46bd7f(++_0x4f2ef2);}(_0xd096,0x162));var _0x6d09=function(_0x491164,_0x4ccbc8){_0x491164=_0x491164-0x0;var _0xecb86b=_0xd096[_0x491164];return _0xecb86b;};'use strict';var BPromise=require(_0x6d09('0x0'));var server=require(_0x6d09('0x1'));var Realtime=require(_0x6d09('0x2'));var user=require(_0x6d09('0x3'));var interval=require(_0x6d09('0x4'));var openchannelQueue=require(_0x6d09('0x5'));var chatQueue=require(_0x6d09('0x6'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x6d09('0x7'));var whatsappQueue=require(_0x6d09('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x6d09('0x9')]()['then'](user[_0x6d09('0xa')]())['then'](realtime[_0x6d09('0xb')]())[_0x6d09('0xc')](interval[_0x6d09('0xd')]())[_0x6d09('0xc')](realtime[_0x6d09('0xe')]())[_0x6d09('0xc')](openchannelQueue[_0x6d09('0xf')]())['then'](realtime[_0x6d09('0x10')]())[_0x6d09('0xc')](chatQueue[_0x6d09('0x11')]())[_0x6d09('0xc')](realtime[_0x6d09('0x12')]())[_0x6d09('0xc')](smsQueue[_0x6d09('0x13')]())[_0x6d09('0xc')](realtime[_0x6d09('0x14')]())[_0x6d09('0xc')](mailQueue[_0x6d09('0x15')]())[_0x6d09('0xc')](realtime[_0x6d09('0x16')]())[_0x6d09('0xc')](faxQueue[_0x6d09('0x17')]())[_0x6d09('0xc')](realtime[_0x6d09('0x18')]())['then'](whatsappQueue['getWhatsappQueues']())['then'](realtime[_0x6d09('0x19')]())[_0x6d09('0xc')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x6d09('0xc')](function(_0x4c3680){return initRealtime();})[_0x6d09('0xc')](function(_0xfa6833){return setInterval(initRealtime,0x1388);})[_0x6d09('0x1a')](function(_0x1d7730){console['log'](_0x1d7730);});}main();
\ No newline at end of file
+var _0xe60c=['resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','bluebird','./server','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue'];(function(_0x5cec63,_0x3dc380){var _0x51e6c0=function(_0x4e9156){while(--_0x4e9156){_0x5cec63['push'](_0x5cec63['shift']());}};_0x51e6c0(++_0x3dc380);}(_0xe60c,0xb9));var _0xce60=function(_0x5e3a45,_0x45f0c5){_0x5e3a45=_0x5e3a45-0x0;var _0x13419f=_0xe60c[_0x5e3a45];return _0x13419f;};'use strict';var BPromise=require(_0xce60('0x0'));var server=require(_0xce60('0x1'));var Realtime=require('./realtime');var user=require(_0xce60('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0xce60('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xce60('0x4'));var mailQueue=require(_0xce60('0x5'));var faxQueue=require(_0xce60('0x6'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0xce60('0x7')]()[_0xce60('0x8')](user[_0xce60('0x9')]())[_0xce60('0x8')](realtime['initAgents']())[_0xce60('0x8')](interval[_0xce60('0xa')]())[_0xce60('0x8')](realtime[_0xce60('0xb')]())[_0xce60('0x8')](openchannelQueue[_0xce60('0xc')]())[_0xce60('0x8')](realtime['initOpenchannelQueues']())[_0xce60('0x8')](chatQueue[_0xce60('0xd')]())['then'](realtime[_0xce60('0xe')]())['then'](smsQueue[_0xce60('0xf')]())['then'](realtime['initSmsQueues']())[_0xce60('0x8')](mailQueue[_0xce60('0x10')]())[_0xce60('0x8')](realtime[_0xce60('0x11')]())[_0xce60('0x8')](faxQueue[_0xce60('0x12')]())[_0xce60('0x8')](realtime[_0xce60('0x13')]())['then'](whatsappQueue[_0xce60('0x14')]())[_0xce60('0x8')](realtime[_0xce60('0x15')]())[_0xce60('0x8')](function(){return realtime;});}function main(){return server[_0xce60('0x16')](realtime)[_0xce60('0x8')](function(_0x15864d){return initRealtime();})[_0xce60('0x8')](function(_0x170e71){return setInterval(initRealtime,0x1388);})[_0xce60('0x17')](function(_0x374f53){console['log'](_0x374f53);});}main();
\ No newline at end of file
index 783e0fd..e723e9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x2c6174,_0x654f4b){var _0x346807=function(_0x290941){while(--_0x290941){_0x2c6174['push'](_0x2c6174['shift']());}};_0x346807(++_0x654f4b);}(_0xe14b,0x93));var _0xbe14=function(_0x32cb3a,_0xe95fcd){_0x32cb3a=_0x32cb3a-0x0;var _0x1326d4=_0xe14b[_0x32cb3a];return _0x1326d4;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
+var _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(_0x59b439,_0x4e16b6){var _0x74d02b=function(_0x319ddc){while(--_0x319ddc){_0x59b439['push'](_0x59b439['shift']());}};_0x74d02b(++_0x4e16b6);}(_0x326f,0xd1));var _0xf326=function(_0x2d9e09,_0x567fac){_0x2d9e09=_0x2d9e09-0x0;var _0x43d58b=_0x326f[_0x2d9e09];return _0x43d58b;};'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 138e4db..d1a3521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf585=['bluebird','client','http','request','result','catch','sendMailMessage','SendMail'];(function(_0x2c40bf,_0x5ce37a){var _0x31ab19=function(_0x56303){while(--_0x56303){_0x2c40bf['push'](_0x2c40bf['shift']());}};_0x31ab19(++_0x5ce37a);}(_0xf585,0x148));var _0x5f58=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xf585[_0x18ab2a];return _0x16dcee;};'use strict';var BPromise=require(_0x5f58('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x5f58('0x1')][_0x5f58('0x2')]({'port':0x232b});function request(_0x486ee5,_0x39cca7){return new BPromise(function(_0x46b9e9,_0x5b77b5){return client[_0x5f58('0x3')](_0x486ee5,_0x39cca7)['then'](function(_0x26fd56){if(_0x26fd56['error']){return _0x5b77b5(_0x26fd56['error']['message']);}else{return _0x46b9e9(_0x26fd56[_0x5f58('0x4')]);}})[_0x5f58('0x5')](function(_0x5edd52){return _0x5b77b5(_0x5edd52);});});}exports[_0x5f58('0x6')]=function(_0x5cde8d,_0x2e90fb){return request(_0x5f58('0x7'),{'account':_0x5cde8d,'message':_0x2e90fb});};
\ No newline at end of file
+var _0x6dd9=['request','then','error','message','result','catch','SendMail','jayson/promise','client','http'];(function(_0x4a6a4c,_0x5149d1){var _0xdb0e5b=function(_0x319640){while(--_0x319640){_0x4a6a4c['push'](_0x4a6a4c['shift']());}};_0xdb0e5b(++_0x5149d1);}(_0x6dd9,0xc5));var _0x96dd=function(_0x1b4154,_0x4fa734){_0x1b4154=_0x1b4154-0x0;var _0x4b365b=_0x6dd9[_0x1b4154];return _0x4b365b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x96dd('0x0'));var client=jayson[_0x96dd('0x1')][_0x96dd('0x2')]({'port':0x232b});function request(_0xd5f38e,_0x174243){return new BPromise(function(_0x1a9b10,_0xaf0447){return client[_0x96dd('0x3')](_0xd5f38e,_0x174243)[_0x96dd('0x4')](function(_0x4eb3b6){if(_0x4eb3b6[_0x96dd('0x5')]){return _0xaf0447(_0x4eb3b6[_0x96dd('0x5')][_0x96dd('0x6')]);}else{return _0x1a9b10(_0x4eb3b6[_0x96dd('0x7')]);}})[_0x96dd('0x8')](function(_0x3f0c02){return _0xaf0447(_0x3f0c02);});});}exports['sendMailMessage']=function(_0x42bb9e,_0x1a447c){return request(_0x96dd('0x9'),{'account':_0x42bb9e,'message':_0x1a447c});};
\ No newline at end of file
index 0f6b491..80beebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1248=['faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','updateRealtime','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','fax','whatsapp','length','getChannelStatus','Status','StatusTime','toNumber','format','faxStatusTime','smsStatusTime','whatsappStatusTime','openchannelStatus','openchannelCurrentCapacity','chatWaitingInteractions','smsWaitingInteractions','emit','user:save','exports','lodash','moment','md5','ioredis','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','busy','busyQueue'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x1248,0x1f2));var _0x8124=function(_0x53681e,_0x45872a){_0x53681e=_0x53681e-0x0;var _0x50683f=_0x1248[_0x53681e];return _0x50683f;};'use strict';var _=require(_0x8124('0x0'));var moment=require(_0x8124('0x1'));var md5=require(_0x8124('0x2'));var Redis=require(_0x8124('0x3'));var config=require('../../../config/environment');config[_0x8124('0x4')]=_[_0x8124('0x5')](config[_0x8124('0x4')],{'host':_0x8124('0x6'),'port':0x18eb});var io=require(_0x8124('0x7'))(new Redis(config[_0x8124('0x4')]));function Agent(_0x515fa5){this['id']=_0x515fa5['id']||0x0;this[_0x8124('0x8')]=_0x515fa5['name']||'';this[_0x8124('0x9')]=_0x515fa5['online']||!![];this[_0x8124('0xa')]=_0x515fa5[_0x8124('0xa')]||![];this[_0x8124('0xb')]=_0x515fa5['chatPause']||![];this[_0x8124('0xc')]=_0x515fa5['mailPause']||![];this[_0x8124('0xd')]=_0x515fa5[_0x8124('0xd')]||![];this['smsPause']=_0x515fa5[_0x8124('0xe')]||![];this['openchannelPause']=_0x515fa5[_0x8124('0xf')]||![];this[_0x8124('0x10')]=_0x8124('0x11');this[_0x8124('0x12')]=0x0;this['chatCapacity']=_0x515fa5[_0x8124('0x13')]||0x0;this[_0x8124('0x14')]=0x0;this[_0x8124('0x15')]=_0x8124('0x11');this[_0x8124('0x16')]=0x0;this[_0x8124('0x17')]=_0x515fa5['mailCapacity']||0x0;this[_0x8124('0x18')]=0x0;this[_0x8124('0x19')]=_0x8124('0x11');this['faxStatusTime']=0x0;this[_0x8124('0x1a')]=_0x515fa5[_0x8124('0x1a')]||0x0;this[_0x8124('0x1b')]=0x0;this[_0x8124('0x1c')]='unknown';this['smsStatusTime']=0x0;this[_0x8124('0x1d')]=_0x515fa5[_0x8124('0x1d')]||0x0;this[_0x8124('0x1e')]=0x0;this[_0x8124('0x1f')]=_0x8124('0x11');this['whatsappStatusTime']=0x0;this[_0x8124('0x20')]=_0x515fa5['whatsappCapacity']||0x0;this[_0x8124('0x21')]=0x0;this['openchannelStatus']=_0x8124('0x11');this[_0x8124('0x22')]=0x0;this[_0x8124('0x23')]=_0x515fa5['openchannelCapacity']||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x8124('0x24')]=![];this[_0x8124('0x25')]=undefined;this[_0x8124('0x2')]='';this['chatWaitingInteractions']={};this[_0x8124('0x26')]={};this[_0x8124('0x27')]={};this[_0x8124('0x28')]={};this['smsWaitingInteractions']={};this[_0x8124('0x29')]={};this[_0x8124('0x2a')]();}Agent['prototype']['getChannelStatus']=function(_0x924efd){if(this[_0x924efd+_0x8124('0x2b')]>0x0){if(this[_0x924efd+_0x8124('0x2c')]>0x0&&this[_0x924efd+_0x8124('0x2b')]>=this[_0x924efd+_0x8124('0x2c')]){return _0x8124('0x2d');}else{return _0x8124('0x2e');}}else{return _0x8124('0x2f');}};Agent['prototype'][_0x8124('0x2a')]=function(){var _0x2d46c1=[_0x8124('0x30'),'chat','openchannel',_0x8124('0x31'),'sms',_0x8124('0x32')];for(var _0x3513cd=0x0;_0x3513cd<_0x2d46c1[_0x8124('0x33')];_0x3513cd+=0x1){var _0x33dfbd=this[_0x8124('0x34')](_0x2d46c1[_0x3513cd]);if(this[_0x2d46c1[_0x3513cd]+_0x8124('0x35')]!==_0x33dfbd){this[_0x2d46c1[_0x3513cd]+_0x8124('0x36')]=_[_0x8124('0x37')](moment()[_0x8124('0x38')]('x'));}this[_0x2d46c1[_0x3513cd]+_0x8124('0x35')]=_0x33dfbd;}var _0xda16cc={'id':this['id'],'name':this[_0x8124('0x8')],'online':this['online'],'voicePause':this[_0x8124('0xa')],'chatPause':this[_0x8124('0xb')],'mailPause':this[_0x8124('0xc')],'smsPause':this[_0x8124('0xe')],'faxPause':this[_0x8124('0xd')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0x8124('0x10')],'chatStatusTime':this[_0x8124('0x12')],'chatCapacity':this[_0x8124('0x13')],'chatCurrentCapacity':this[_0x8124('0x14')],'mailStatus':this[_0x8124('0x15')],'mailStatusTime':this[_0x8124('0x16')],'mailCapacity':this[_0x8124('0x17')],'mailCurrentCapacity':this[_0x8124('0x18')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x8124('0x39')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x8124('0x1b')],'smsStatus':this[_0x8124('0x1c')],'smsStatusTime':this[_0x8124('0x3a')],'smsCapacity':this[_0x8124('0x1d')],'smsCurrentCapacity':this[_0x8124('0x1e')],'whatsappStatus':this[_0x8124('0x1f')],'whatsappStatusTime':this[_0x8124('0x3b')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x8124('0x3c')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x8124('0x3d')],'busy':this['busy'],'busyQueue':this[_0x8124('0x25')],'chatWaitingInteractions':this[_0x8124('0x3e')],'faxWaitingInteractions':this['faxWaitingInteractions'],'mailWaitingInteractions':this[_0x8124('0x27')],'openchannelWaitingInteractions':this[_0x8124('0x28')],'smsWaitingInteractions':this[_0x8124('0x3f')],'whatsappWaitingInteractions':this[_0x8124('0x29')]};var _0x2042e3=md5(JSON['stringify'](_0xda16cc));if(this[_0x8124('0x2')]!==_0x2042e3){this[_0x8124('0x2')]=_0x2042e3;io[_0x8124('0x40')](_0x8124('0x41'),_0xda16cc);}};module[_0x8124('0x42')]=Agent;
\ No newline at end of file
+var _0x26e6=['Capacity','maxcapacity','working','chat','openchannel','fax','length','Status','StatusTime','toNumber','format','chatCurrentCapacity','mailStatus','mailCurrentCapacity','smsStatusTime','stringify','emit','user:save','exports','lodash','moment','md5','../../../config/environment','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x26e6,0x1da));var _0x626e=function(_0x7633c,_0x1e45bf){_0x7633c=_0x7633c-0x0;var _0x1b77e2=_0x26e6[_0x7633c];return _0x1b77e2;};'use strict';var _=require(_0x626e('0x0'));var moment=require(_0x626e('0x1'));var md5=require(_0x626e('0x2'));var Redis=require('ioredis');var config=require(_0x626e('0x3'));config[_0x626e('0x4')]=_['defaults'](config[_0x626e('0x4')],{'host':_0x626e('0x5'),'port':0x18eb});var io=require(_0x626e('0x6'))(new Redis(config['redis']));function Agent(_0x42ed6d){this['id']=_0x42ed6d['id']||0x0;this[_0x626e('0x7')]=_0x42ed6d['name']||'';this['online']=_0x42ed6d[_0x626e('0x8')]||!![];this[_0x626e('0x9')]=_0x42ed6d[_0x626e('0x9')]||![];this[_0x626e('0xa')]=_0x42ed6d[_0x626e('0xa')]||![];this['mailPause']=_0x42ed6d[_0x626e('0xb')]||![];this[_0x626e('0xc')]=_0x42ed6d['faxPause']||![];this['smsPause']=_0x42ed6d[_0x626e('0xd')]||![];this[_0x626e('0xe')]=_0x42ed6d['openchannelPause']||![];this[_0x626e('0xf')]=_0x626e('0x10');this[_0x626e('0x11')]=0x0;this[_0x626e('0x12')]=_0x42ed6d['chatCapacity']||0x0;this['chatCurrentCapacity']=0x0;this['mailStatus']=_0x626e('0x10');this[_0x626e('0x13')]=0x0;this[_0x626e('0x14')]=_0x42ed6d[_0x626e('0x14')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x626e('0x15')]=_0x626e('0x10');this[_0x626e('0x16')]=0x0;this[_0x626e('0x17')]=_0x42ed6d[_0x626e('0x17')]||0x0;this[_0x626e('0x18')]=0x0;this[_0x626e('0x19')]='unknown';this['smsStatusTime']=0x0;this[_0x626e('0x1a')]=_0x42ed6d[_0x626e('0x1a')]||0x0;this[_0x626e('0x1b')]=0x0;this[_0x626e('0x1c')]=_0x626e('0x10');this[_0x626e('0x1d')]=0x0;this[_0x626e('0x1e')]=_0x42ed6d[_0x626e('0x1e')]||0x0;this[_0x626e('0x1f')]=0x0;this[_0x626e('0x20')]='unknown';this[_0x626e('0x21')]=0x0;this['openchannelCapacity']=_0x42ed6d[_0x626e('0x22')]||0x0;this[_0x626e('0x23')]=0x0;this[_0x626e('0x24')]=![];this[_0x626e('0x25')]=undefined;this['md5']='';this[_0x626e('0x26')]={};this[_0x626e('0x27')]={};this['mailWaitingInteractions']={};this[_0x626e('0x28')]={};this[_0x626e('0x29')]={};this[_0x626e('0x2a')]={};this[_0x626e('0x2b')]();}Agent[_0x626e('0x2c')][_0x626e('0x2d')]=function(_0x4f4dbd){if(this[_0x4f4dbd+'CurrentCapacity']>0x0){if(this[_0x4f4dbd+_0x626e('0x2e')]>0x0&&this[_0x4f4dbd+'CurrentCapacity']>=this[_0x4f4dbd+_0x626e('0x2e')]){return _0x626e('0x2f');}else{return _0x626e('0x30');}}else{return'idle';}};Agent['prototype'][_0x626e('0x2b')]=function(){var _0x216ccc=['mail',_0x626e('0x31'),_0x626e('0x32'),_0x626e('0x33'),'sms','whatsapp'];for(var _0x1f4fa4=0x0;_0x1f4fa4<_0x216ccc[_0x626e('0x34')];_0x1f4fa4+=0x1){var _0x2f59cc=this[_0x626e('0x2d')](_0x216ccc[_0x1f4fa4]);if(this[_0x216ccc[_0x1f4fa4]+_0x626e('0x35')]!==_0x2f59cc){this[_0x216ccc[_0x1f4fa4]+_0x626e('0x36')]=_[_0x626e('0x37')](moment()[_0x626e('0x38')]('x'));}this[_0x216ccc[_0x1f4fa4]+_0x626e('0x35')]=_0x2f59cc;}var _0x291286={'id':this['id'],'name':this[_0x626e('0x7')],'online':this['online'],'voicePause':this[_0x626e('0x9')],'chatPause':this[_0x626e('0xa')],'mailPause':this[_0x626e('0xb')],'smsPause':this[_0x626e('0xd')],'faxPause':this[_0x626e('0xc')],'openchannelPause':this[_0x626e('0xe')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x626e('0x11')],'chatCapacity':this[_0x626e('0x12')],'chatCurrentCapacity':this[_0x626e('0x39')],'mailStatus':this[_0x626e('0x3a')],'mailStatusTime':this[_0x626e('0x13')],'mailCapacity':this[_0x626e('0x14')],'mailCurrentCapacity':this[_0x626e('0x3b')],'faxStatus':this[_0x626e('0x15')],'faxStatusTime':this[_0x626e('0x16')],'faxCapacity':this[_0x626e('0x17')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x626e('0x19')],'smsStatusTime':this[_0x626e('0x3c')],'smsCapacity':this[_0x626e('0x1a')],'smsCurrentCapacity':this[_0x626e('0x1b')],'whatsappStatus':this[_0x626e('0x1c')],'whatsappStatusTime':this[_0x626e('0x1d')],'whatsappCapacity':this[_0x626e('0x1e')],'whatsappCurrentCapacity':this[_0x626e('0x1f')],'openchannelStatus':this[_0x626e('0x20')],'openchannelStatusTime':this[_0x626e('0x21')],'openchannelCapacity':this[_0x626e('0x22')],'openchannelCurrentCapacity':this[_0x626e('0x23')],'busy':this[_0x626e('0x24')],'busyQueue':this[_0x626e('0x25')],'chatWaitingInteractions':this[_0x626e('0x26')],'faxWaitingInteractions':this[_0x626e('0x27')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this[_0x626e('0x28')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0x626e('0x2a')]};var _0x3191d8=md5(JSON[_0x626e('0x3d')](_0x291286));if(this['md5']!==_0x3191d8){this['md5']=_0x3191d8;io[_0x626e('0x3e')](_0x626e('0x3f'),_0x291286);}};module[_0x626e('0x40')]=Agent;
\ No newline at end of file
index 84cccd0..d12ad38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa482=['updateRouting','map','prototype','loggedIn','online','chatPause','available','paused','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xa482,0x194));var _0x2a48=function(_0x5b1aa6,_0x40b86d){_0x5b1aa6=_0x5b1aa6-0x0;var _0x23e5b4=_0xa482[_0x5b1aa6];return _0x23e5b4;};'use strict';var _=require(_0x2a48('0x0'));var md5=require(_0x2a48('0x1'));var util=require(_0x2a48('0x2'));var Redis=require(_0x2a48('0x3'));var config=require(_0x2a48('0x4'));config['redis']=_[_0x2a48('0x5')](config[_0x2a48('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x2a48('0x7'))(new Redis(config[_0x2a48('0x6')]));function ChatQueue(_0xf83095){this['id']=_0xf83095['id']||0x0;this['name']=_0xf83095[_0x2a48('0x8')]||'';this[_0x2a48('0x9')]=_0xf83095[_0x2a48('0x9')]||0xa;this[_0x2a48('0xa')]=_0xf83095[_0x2a48('0xa')]||_0x2a48('0xb');this[_0x2a48('0xc')]=_0xf83095[_0x2a48('0xc')];this[_0x2a48('0xd')]={};this[_0x2a48('0xe')]=0x0;this[_0x2a48('0x1')]='';this['updateRouting']();this[_0x2a48('0xf')]();}ChatQueue['prototype'][_0x2a48('0x10')]=function(){var _0x2cd6a3=this[_0x2a48('0xd')]['_rr'];this[_0x2a48('0xd')]=_[_0x2a48('0x11')](this[_0x2a48('0xc')],'id');this[_0x2a48('0xd')]['_rr']=_0x2cd6a3;};ChatQueue[_0x2a48('0x12')][_0x2a48('0xf')]=function(){this[_0x2a48('0x13')]=0x0;this['paused']=0x0;for(var _0x2ec6d6=0x0;_0x2ec6d6<this['Agents']['length'];_0x2ec6d6+=0x1){if(this[_0x2a48('0xc')][_0x2ec6d6][_0x2a48('0x14')]){this[_0x2a48('0x13')]+=0x1;}if(this[_0x2a48('0xc')][_0x2ec6d6][_0x2a48('0x15')]){this['paused']+=0x1;}}this[_0x2a48('0x16')]=this[_0x2a48('0x13')]-this[_0x2a48('0x17')];this[_0x2a48('0x16')]=this['available']>=0x0?this[_0x2a48('0x16')]:0x0;var _0x2ed7a5={'id':this['id'],'available':this[_0x2a48('0x16')],'loggedIn':this[_0x2a48('0x13')],'name':this['name'],'paused':this[_0x2a48('0x17')],'waiting':this[_0x2a48('0xe')]};var _0x3a0643=md5(JSON[_0x2a48('0x18')](_0x2ed7a5));if(this['md5']!==_0x3a0643){this[_0x2a48('0x1')]=_0x3a0643;io['to'](util[_0x2a48('0x19')](_0x2a48('0x1a'),_0x2ed7a5[_0x2a48('0x8')]))[_0x2a48('0x1b')](_0x2a48('0x1c'),_0x2ed7a5);}};module[_0x2a48('0x1d')]=ChatQueue;
\ No newline at end of file
+var _0xa576=['md5','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','online','available','stringify','emit','exports'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xa576,0x1b0));var _0x6a57=function(_0x28255b,_0x1fef47){_0x28255b=_0x28255b-0x0;var _0x53001d=_0xa576[_0x28255b];return _0x53001d;};'use strict';var _=require('lodash');var md5=require(_0x6a57('0x0'));var util=require('util');var Redis=require(_0x6a57('0x1'));var config=require(_0x6a57('0x2'));config['redis']=_[_0x6a57('0x3')](config[_0x6a57('0x4')],{'host':_0x6a57('0x5'),'port':0x18eb});var io=require(_0x6a57('0x6'))(new Redis(config[_0x6a57('0x4')]));function ChatQueue(_0x2cc450){this['id']=_0x2cc450['id']||0x0;this[_0x6a57('0x7')]=_0x2cc450['name']||'';this[_0x6a57('0x8')]=_0x2cc450['timeout']||0xa;this[_0x6a57('0x9')]=_0x2cc450[_0x6a57('0x9')]||_0x6a57('0xa');this['Agents']=_0x2cc450[_0x6a57('0xb')];this['mapAgentsId']={};this[_0x6a57('0xc')]=0x0;this[_0x6a57('0x0')]='';this[_0x6a57('0xd')]();this[_0x6a57('0xe')]();}ChatQueue[_0x6a57('0xf')]['updateRouting']=function(){var _0x2276b3=this[_0x6a57('0x10')][_0x6a57('0x11')];this[_0x6a57('0x10')]=_[_0x6a57('0x12')](this[_0x6a57('0xb')],'id');this[_0x6a57('0x10')][_0x6a57('0x11')]=_0x2276b3;};ChatQueue['prototype'][_0x6a57('0xe')]=function(){this[_0x6a57('0x13')]=0x0;this[_0x6a57('0x14')]=0x0;for(var _0x2f34e5=0x0;_0x2f34e5<this[_0x6a57('0xb')][_0x6a57('0x15')];_0x2f34e5+=0x1){if(this[_0x6a57('0xb')][_0x2f34e5][_0x6a57('0x16')]){this[_0x6a57('0x13')]+=0x1;}if(this[_0x6a57('0xb')][_0x2f34e5]['chatPause']){this['paused']+=0x1;}}this[_0x6a57('0x17')]=this[_0x6a57('0x13')]-this[_0x6a57('0x14')];this[_0x6a57('0x17')]=this[_0x6a57('0x17')]>=0x0?this[_0x6a57('0x17')]:0x0;var _0x4cfde7={'id':this['id'],'available':this[_0x6a57('0x17')],'loggedIn':this[_0x6a57('0x13')],'name':this[_0x6a57('0x7')],'paused':this[_0x6a57('0x14')],'waiting':this[_0x6a57('0xc')]};var _0x4f5998=md5(JSON[_0x6a57('0x18')](_0x4cfde7));if(this[_0x6a57('0x0')]!==_0x4f5998){this[_0x6a57('0x0')]=_0x4f5998;io['to'](util['format']('chat:queue:%s',_0x4cfde7[_0x6a57('0x7')]))[_0x6a57('0x19')]('chat_queue:save',_0x4cfde7);}};module[_0x6a57('0x1a')]=ChatQueue;
\ No newline at end of file
index c723a51..5839221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7525=['redis','localhost','socket.io-emitter','name','strategy','beepall','Agents','waiting','updateRouting','mapAgentsId','_rr','map','prototype','loggedIn','length','faxPause','available','paused','stringify','format','fax:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','defaults'];(function(_0x4de1b1,_0x18c64c){var _0x639f27=function(_0x635e03){while(--_0x635e03){_0x4de1b1['push'](_0x4de1b1['shift']());}};_0x639f27(++_0x18c64c);}(_0x7525,0xff));var _0x5752=function(_0x240cca,_0x392017){_0x240cca=_0x240cca-0x0;var _0x118f2c=_0x7525[_0x240cca];return _0x118f2c;};'use strict';var _=require(_0x5752('0x0'));var md5=require(_0x5752('0x1'));var util=require(_0x5752('0x2'));var Redis=require(_0x5752('0x3'));var config=require(_0x5752('0x4'));config['redis']=_[_0x5752('0x5')](config[_0x5752('0x6')],{'host':_0x5752('0x7'),'port':0x18eb});var io=require(_0x5752('0x8'))(new Redis(config[_0x5752('0x6')]));function FaxQueue(_0x250fff){this['id']=_0x250fff['id']||0x0;this['name']=_0x250fff[_0x5752('0x9')]||'';this['timeout']=_0x250fff['timeout']||0xa;this[_0x5752('0xa')]=_0x250fff[_0x5752('0xa')]||_0x5752('0xb');this[_0x5752('0xc')]=_0x250fff[_0x5752('0xc')];this['mapAgentsId']={};this[_0x5752('0xd')]=0x0;this[_0x5752('0x1')]='';this['updateRouting']();this['updateRealtime']();}FaxQueue['prototype'][_0x5752('0xe')]=function(){var _0x5b5c93=this[_0x5752('0xf')][_0x5752('0x10')];this[_0x5752('0xf')]=_[_0x5752('0x11')](this['Agents'],'id');this[_0x5752('0xf')][_0x5752('0x10')]=_0x5b5c93;};FaxQueue[_0x5752('0x12')]['updateRealtime']=function(){this[_0x5752('0x13')]=0x0;this['paused']=0x0;for(var _0x5f1214=0x0;_0x5f1214<this[_0x5752('0xc')][_0x5752('0x14')];_0x5f1214+=0x1){if(this[_0x5752('0xc')][_0x5f1214]['online']){this[_0x5752('0x13')]+=0x1;}if(this['Agents'][_0x5f1214][_0x5752('0x15')]){this['paused']+=0x1;}}this[_0x5752('0x16')]=this[_0x5752('0x13')]-this[_0x5752('0x17')];this['available']=this[_0x5752('0x16')]>=0x0?this[_0x5752('0x16')]:0x0;var _0x35d3b1={'id':this['id'],'available':this[_0x5752('0x16')],'loggedIn':this[_0x5752('0x13')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x4a75e5=md5(JSON[_0x5752('0x18')](_0x35d3b1));if(this[_0x5752('0x1')]!==_0x4a75e5){this['md5']=_0x4a75e5;io['to'](util[_0x5752('0x19')](_0x5752('0x1a'),_0x35d3b1['name']))[_0x5752('0x1b')]('fax_queue:save',_0x35d3b1);}};module[_0x5752('0x1c')]=FaxQueue;
\ No newline at end of file
+var _0x6277=['prototype','_rr','map','Agents','updateRealtime','paused','length','faxPause','available','loggedIn','stringify','format','emit','fax_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting'];(function(_0x26ce19,_0x56cb79){var _0x3b923e=function(_0x54b832){while(--_0x54b832){_0x26ce19['push'](_0x26ce19['shift']());}};_0x3b923e(++_0x56cb79);}(_0x6277,0x17b));var _0x7627=function(_0x4c9535,_0x2c0468){_0x4c9535=_0x4c9535-0x0;var _0x4c57b8=_0x6277[_0x4c9535];return _0x4c57b8;};'use strict';var _=require(_0x7627('0x0'));var md5=require(_0x7627('0x1'));var util=require('util');var Redis=require(_0x7627('0x2'));var config=require(_0x7627('0x3'));config[_0x7627('0x4')]=_['defaults'](config['redis'],{'host':_0x7627('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7627('0x4')]));function FaxQueue(_0xb54cd5){this['id']=_0xb54cd5['id']||0x0;this[_0x7627('0x6')]=_0xb54cd5[_0x7627('0x6')]||'';this['timeout']=_0xb54cd5[_0x7627('0x7')]||0xa;this[_0x7627('0x8')]=_0xb54cd5[_0x7627('0x8')]||_0x7627('0x9');this['Agents']=_0xb54cd5['Agents'];this[_0x7627('0xa')]={};this[_0x7627('0xb')]=0x0;this[_0x7627('0x1')]='';this[_0x7627('0xc')]();this['updateRealtime']();}FaxQueue[_0x7627('0xd')][_0x7627('0xc')]=function(){var _0x5f343d=this[_0x7627('0xa')][_0x7627('0xe')];this['mapAgentsId']=_[_0x7627('0xf')](this[_0x7627('0x10')],'id');this[_0x7627('0xa')][_0x7627('0xe')]=_0x5f343d;};FaxQueue[_0x7627('0xd')][_0x7627('0x11')]=function(){this['loggedIn']=0x0;this[_0x7627('0x12')]=0x0;for(var _0x1a4617=0x0;_0x1a4617<this[_0x7627('0x10')][_0x7627('0x13')];_0x1a4617+=0x1){if(this['Agents'][_0x1a4617]['online']){this['loggedIn']+=0x1;}if(this[_0x7627('0x10')][_0x1a4617][_0x7627('0x14')]){this['paused']+=0x1;}}this[_0x7627('0x15')]=this[_0x7627('0x16')]-this[_0x7627('0x12')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x698b65={'id':this['id'],'available':this[_0x7627('0x15')],'loggedIn':this[_0x7627('0x16')],'name':this['name'],'paused':this[_0x7627('0x12')],'waiting':this[_0x7627('0xb')]};var _0x1242b8=md5(JSON[_0x7627('0x17')](_0x698b65));if(this[_0x7627('0x1')]!==_0x1242b8){this['md5']=_0x1242b8;io['to'](util[_0x7627('0x18')]('fax:queue:%s',_0x698b65[_0x7627('0x6')]))[_0x7627('0x19')](_0x7627('0x1a'),_0x698b65);}};module[_0x7627('0x1b')]=FaxQueue;
\ No newline at end of file
index 32ead59..708f590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ba7=['Intervals','exports','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5ba7,0x19d));var _0x75ba=function(_0x4c37d9,_0xa5cf2){_0x4c37d9=_0x4c37d9-0x0;var _0x34ee8c=_0x5ba7[_0x4c37d9];return _0x34ee8c;};'use strict';function Interval(_0x417cff){this['id']=_0x417cff['id']||0x0;this[_0x75ba('0x0')]=_0x417cff[_0x75ba('0x0')]||'';this[_0x75ba('0x1')]=_0x417cff[_0x75ba('0x1')]||{};}module[_0x75ba('0x2')]=Interval;
\ No newline at end of file
+var _0x3e2b=['name','Intervals','exports'];(function(_0x4d0662,_0x145963){var _0x6eea6d=function(_0x2def06){while(--_0x2def06){_0x4d0662['push'](_0x4d0662['shift']());}};_0x6eea6d(++_0x145963);}(_0x3e2b,0x1d4));var _0xb3e2=function(_0x479df5,_0x1964a7){_0x479df5=_0x479df5-0x0;var _0x11174e=_0x3e2b[_0x479df5];return _0x11174e;};'use strict';function Interval(_0x4b7377){this['id']=_0x4b7377['id']||0x0;this['name']=_0x4b7377[_0xb3e2('0x0')]||'';this['Intervals']=_0x4b7377[_0xb3e2('0x1')]||{};}module[_0xb3e2('0x2')]=Interval;
\ No newline at end of file
index ab33786..7927c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe966=['map','updateRealtime','loggedIn','paused','length','available','stringify','emit','lodash','md5','util','ioredis','../../../config/environment','redis','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xe966,0xa9));var _0x6e96=function(_0x55de1c,_0x3269b9){_0x55de1c=_0x55de1c-0x0;var _0x852785=_0xe966[_0x55de1c];return _0x852785;};'use strict';var _=require(_0x6e96('0x0'));var md5=require(_0x6e96('0x1'));var util=require(_0x6e96('0x2'));var Redis=require(_0x6e96('0x3'));var config=require(_0x6e96('0x4'));config[_0x6e96('0x5')]=_['defaults'](config[_0x6e96('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6e96('0x5')]));function MailQueue(_0x157ae3){this['id']=_0x157ae3['id']||0x0;this[_0x6e96('0x6')]=_0x157ae3[_0x6e96('0x6')]||'';this[_0x6e96('0x7')]=_0x157ae3[_0x6e96('0x7')]||0xa;this[_0x6e96('0x8')]=_0x157ae3[_0x6e96('0x8')]||_0x6e96('0x9');this['Agents']=_0x157ae3[_0x6e96('0xa')];this[_0x6e96('0xb')]={};this[_0x6e96('0xc')]=0x0;this[_0x6e96('0x1')]='';this[_0x6e96('0xd')]();this['updateRealtime']();}MailQueue[_0x6e96('0xe')][_0x6e96('0xd')]=function(){var _0x3bc1b2=this[_0x6e96('0xb')]['_rr'];this[_0x6e96('0xb')]=_[_0x6e96('0xf')](this[_0x6e96('0xa')],'id');this[_0x6e96('0xb')]['_rr']=_0x3bc1b2;};MailQueue[_0x6e96('0xe')][_0x6e96('0x10')]=function(){this[_0x6e96('0x11')]=0x0;this[_0x6e96('0x12')]=0x0;for(var _0x543f23=0x0;_0x543f23<this['Agents'][_0x6e96('0x13')];_0x543f23+=0x1){if(this[_0x6e96('0xa')][_0x543f23]['online']){this['loggedIn']+=0x1;}if(this[_0x6e96('0xa')][_0x543f23]['mailPause']){this['paused']+=0x1;}}this['available']=this[_0x6e96('0x11')]-this[_0x6e96('0x12')];this['available']=this[_0x6e96('0x14')]>=0x0?this['available']:0x0;var _0xb1e990={'id':this['id'],'available':this[_0x6e96('0x14')],'loggedIn':this[_0x6e96('0x11')],'name':this[_0x6e96('0x6')],'paused':this[_0x6e96('0x12')],'waiting':this['waiting']};var _0x2bd545=md5(JSON[_0x6e96('0x15')](_0xb1e990));if(this['md5']!==_0x2bd545){this[_0x6e96('0x1')]=_0x2bd545;io['to'](util['format']('mail:queue:%s',_0xb1e990['name']))[_0x6e96('0x16')]('mail_queue:save',_0xb1e990);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0x7a53=['updateRealtime','prototype','map','loggedIn','length','online','mailPause','paused','available','waiting','format','emit','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting'];(function(_0x49bd50,_0x34d461){var _0x3e5278=function(_0x35023d){while(--_0x35023d){_0x49bd50['push'](_0x49bd50['shift']());}};_0x3e5278(++_0x34d461);}(_0x7a53,0x9f));var _0x37a5=function(_0x2d01fc,_0x505baf){_0x2d01fc=_0x2d01fc-0x0;var _0x493108=_0x7a53[_0x2d01fc];return _0x493108;};'use strict';var _=require(_0x37a5('0x0'));var md5=require(_0x37a5('0x1'));var util=require(_0x37a5('0x2'));var Redis=require(_0x37a5('0x3'));var config=require(_0x37a5('0x4'));config['redis']=_[_0x37a5('0x5')](config[_0x37a5('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x37a5('0x7'))(new Redis(config['redis']));function MailQueue(_0x32965e){this['id']=_0x32965e['id']||0x0;this[_0x37a5('0x8')]=_0x32965e['name']||'';this[_0x37a5('0x9')]=_0x32965e[_0x37a5('0x9')]||0xa;this[_0x37a5('0xa')]=_0x32965e[_0x37a5('0xa')]||_0x37a5('0xb');this[_0x37a5('0xc')]=_0x32965e[_0x37a5('0xc')];this[_0x37a5('0xd')]={};this['waiting']=0x0;this['md5']='';this[_0x37a5('0xe')]();this[_0x37a5('0xf')]();}MailQueue[_0x37a5('0x10')][_0x37a5('0xe')]=function(){var _0x53dee4=this[_0x37a5('0xd')]['_rr'];this[_0x37a5('0xd')]=_[_0x37a5('0x11')](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x53dee4;};MailQueue[_0x37a5('0x10')]['updateRealtime']=function(){this[_0x37a5('0x12')]=0x0;this['paused']=0x0;for(var _0x35845f=0x0;_0x35845f<this[_0x37a5('0xc')][_0x37a5('0x13')];_0x35845f+=0x1){if(this[_0x37a5('0xc')][_0x35845f][_0x37a5('0x14')]){this['loggedIn']+=0x1;}if(this[_0x37a5('0xc')][_0x35845f][_0x37a5('0x15')]){this[_0x37a5('0x16')]+=0x1;}}this['available']=this[_0x37a5('0x12')]-this['paused'];this[_0x37a5('0x17')]=this[_0x37a5('0x17')]>=0x0?this[_0x37a5('0x17')]:0x0;var _0xe2cd56={'id':this['id'],'available':this[_0x37a5('0x17')],'loggedIn':this[_0x37a5('0x12')],'name':this[_0x37a5('0x8')],'paused':this[_0x37a5('0x16')],'waiting':this[_0x37a5('0x18')]};var _0x594588=md5(JSON['stringify'](_0xe2cd56));if(this[_0x37a5('0x1')]!==_0x594588){this[_0x37a5('0x1')]=_0x594588;io['to'](util[_0x37a5('0x19')]('mail:queue:%s',_0xe2cd56[_0x37a5('0x8')]))[_0x37a5('0x1a')](_0x37a5('0x1b'),_0xe2cd56);}};module[_0x37a5('0x1c')]=MailQueue;
\ No newline at end of file
index b133b37..e825b1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x27beea,_0x3bc9f4){var _0x122645=function(_0x2c848){while(--_0x2c848){_0x27beea['push'](_0x27beea['shift']());}};_0x122645(++_0x3bc9f4);}(_0x1261,0x144));var _0x1126=function(_0x21b706,_0x1022f4){_0x21b706=_0x21b706-0x0;var _0x13b94a=_0x1261[_0x21b706];return _0x13b94a;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+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(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x2ef3,0xba));var _0x32ef=function(_0xacd4c4,_0x305a5b){_0xacd4c4=_0xacd4c4-0x0;var _0x55b3fb=_0x2ef3[_0xacd4c4];return _0x55b3fb;};'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 5aba551..5468385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x22111b,_0x4bffe5){_0x22111b=_0x22111b-0x0;var _0x3b5035=_0xd6d6[_0x22111b];return _0x3b5035;};'use strict';var _=require(_0x6d6d('0x0'));var md5=require(_0x6d6d('0x1'));var util=require(_0x6d6d('0x2'));var Redis=require(_0x6d6d('0x3'));var config=require('../../../config/environment');config[_0x6d6d('0x4')]=_[_0x6d6d('0x5')](config[_0x6d6d('0x4')],{'host':_0x6d6d('0x6'),'port':0x18eb});var io=require(_0x6d6d('0x7'))(new Redis(config[_0x6d6d('0x4')]));function SmsQueue(_0x35a813){this['id']=_0x35a813['id']||0x0;this['name']=_0x35a813[_0x6d6d('0x8')]||'';this[_0x6d6d('0x9')]=_0x35a813[_0x6d6d('0x9')]||0xa;this[_0x6d6d('0xa')]=_0x35a813[_0x6d6d('0xa')]||_0x6d6d('0xb');this[_0x6d6d('0xc')]=_0x35a813['Agents'];this['mapAgentsId']={};this[_0x6d6d('0xd')]=0x0;this[_0x6d6d('0x1')]='';this[_0x6d6d('0xe')]();this[_0x6d6d('0xf')]();}SmsQueue[_0x6d6d('0x10')]['updateRouting']=function(){var _0x1f2b86=this[_0x6d6d('0x11')]['_rr'];this['mapAgentsId']=_[_0x6d6d('0x12')](this[_0x6d6d('0xc')],'id');this[_0x6d6d('0x11')][_0x6d6d('0x13')]=_0x1f2b86;};SmsQueue[_0x6d6d('0x10')][_0x6d6d('0xf')]=function(){this[_0x6d6d('0x14')]=0x0;this[_0x6d6d('0x15')]=0x0;for(var _0x5f4154=0x0;_0x5f4154<this[_0x6d6d('0xc')][_0x6d6d('0x16')];_0x5f4154+=0x1){if(this[_0x6d6d('0xc')][_0x5f4154][_0x6d6d('0x17')]){this[_0x6d6d('0x14')]+=0x1;}if(this['Agents'][_0x5f4154][_0x6d6d('0x18')]){this['paused']+=0x1;}}this[_0x6d6d('0x19')]=this[_0x6d6d('0x14')]-this[_0x6d6d('0x15')];this['available']=this['available']>=0x0?this[_0x6d6d('0x19')]:0x0;var _0x1a75d8={'id':this['id'],'available':this[_0x6d6d('0x19')],'loggedIn':this[_0x6d6d('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x6d6d('0xd')]};var _0x5a5855=md5(JSON[_0x6d6d('0x1a')](_0x1a75d8));if(this[_0x6d6d('0x1')]!==_0x5a5855){this[_0x6d6d('0x1')]=_0x5a5855;io['to'](util[_0x6d6d('0x1b')](_0x6d6d('0x1c'),_0x1a75d8[_0x6d6d('0x8')]))[_0x6d6d('0x1d')](_0x6d6d('0x1e'),_0x1a75d8);}};module[_0x6d6d('0x1f')]=SmsQueue;
\ No newline at end of file
+var _0x028d=['sms:queue:%s','sms_queue:save','exports','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','length','online','smsPause','available','format'];(function(_0x597e0d,_0x3c222f){var _0x405585=function(_0x38ebcf){while(--_0x38ebcf){_0x597e0d['push'](_0x597e0d['shift']());}};_0x405585(++_0x3c222f);}(_0x028d,0xff));var _0xd028=function(_0x2aa323,_0x1c492b){_0x2aa323=_0x2aa323-0x0;var _0x17fcab=_0x028d[_0x2aa323];return _0x17fcab;};'use strict';var _=require('lodash');var md5=require(_0xd028('0x0'));var util=require(_0xd028('0x1'));var Redis=require('ioredis');var config=require(_0xd028('0x2'));config[_0xd028('0x3')]=_[_0xd028('0x4')](config[_0xd028('0x3')],{'host':_0xd028('0x5'),'port':0x18eb});var io=require(_0xd028('0x6'))(new Redis(config['redis']));function SmsQueue(_0x153af8){this['id']=_0x153af8['id']||0x0;this[_0xd028('0x7')]=_0x153af8[_0xd028('0x7')]||'';this[_0xd028('0x8')]=_0x153af8[_0xd028('0x8')]||0xa;this[_0xd028('0x9')]=_0x153af8[_0xd028('0x9')]||_0xd028('0xa');this[_0xd028('0xb')]=_0x153af8[_0xd028('0xb')];this[_0xd028('0xc')]={};this[_0xd028('0xd')]=0x0;this[_0xd028('0x0')]='';this[_0xd028('0xe')]();this['updateRealtime']();}SmsQueue[_0xd028('0xf')][_0xd028('0xe')]=function(){var _0x111477=this[_0xd028('0xc')][_0xd028('0x10')];this[_0xd028('0xc')]=_['map'](this[_0xd028('0xb')],'id');this[_0xd028('0xc')]['_rr']=_0x111477;};SmsQueue[_0xd028('0xf')][_0xd028('0x11')]=function(){this[_0xd028('0x12')]=0x0;this[_0xd028('0x13')]=0x0;for(var _0x1667bf=0x0;_0x1667bf<this[_0xd028('0xb')][_0xd028('0x14')];_0x1667bf+=0x1){if(this[_0xd028('0xb')][_0x1667bf][_0xd028('0x15')]){this[_0xd028('0x12')]+=0x1;}if(this[_0xd028('0xb')][_0x1667bf][_0xd028('0x16')]){this['paused']+=0x1;}}this[_0xd028('0x17')]=this['loggedIn']-this[_0xd028('0x13')];this[_0xd028('0x17')]=this[_0xd028('0x17')]>=0x0?this['available']:0x0;var _0x3e846e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xd028('0x12')],'name':this['name'],'paused':this[_0xd028('0x13')],'waiting':this[_0xd028('0xd')]};var _0x3bcfc9=md5(JSON['stringify'](_0x3e846e));if(this[_0xd028('0x0')]!==_0x3bcfc9){this[_0xd028('0x0')]=_0x3bcfc9;io['to'](util[_0xd028('0x18')](_0xd028('0x19'),_0x3e846e[_0xd028('0x7')]))['emit'](_0xd028('0x1a'),_0x3e846e);}};module[_0xd028('0x1b')]=SmsQueue;
\ No newline at end of file
index 291f8db..d07ec98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x885d=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','map','_rr','prototype','updateRealtime','loggedIn','paused','whatsappPause','available','stringify','md5','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis'];(function(_0x1b76ac,_0x48e491){var _0x219695=function(_0xeb3022){while(--_0xeb3022){_0x1b76ac['push'](_0x1b76ac['shift']());}};_0x219695(++_0x48e491);}(_0x885d,0x163));var _0xd885=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x885d[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xd885('0x0'));var md5=require('md5');var util=require(_0xd885('0x1'));var Redis=require(_0xd885('0x2'));var config=require(_0xd885('0x3'));config[_0xd885('0x4')]=_['defaults'](config[_0xd885('0x4')],{'host':_0xd885('0x5'),'port':0x18eb});var io=require(_0xd885('0x6'))(new Redis(config[_0xd885('0x4')]));function WhatsappQueue(_0x241735){this['id']=_0x241735['id']||0x0;this['name']=_0x241735[_0xd885('0x7')]||'';this[_0xd885('0x8')]=_0x241735[_0xd885('0x8')]||0xa;this[_0xd885('0x9')]=_0x241735['strategy']||_0xd885('0xa');this[_0xd885('0xb')]=_0x241735[_0xd885('0xb')];this[_0xd885('0xc')]={};this[_0xd885('0xd')]=0x0;this['md5']='';this[_0xd885('0xe')]();this['updateRealtime']();}WhatsappQueue['prototype'][_0xd885('0xe')]=function(){var _0x211c1f=this[_0xd885('0xc')]['_rr'];this[_0xd885('0xc')]=_[_0xd885('0xf')](this[_0xd885('0xb')],'id');this[_0xd885('0xc')][_0xd885('0x10')]=_0x211c1f;};WhatsappQueue[_0xd885('0x11')][_0xd885('0x12')]=function(){this[_0xd885('0x13')]=0x0;this[_0xd885('0x14')]=0x0;for(var _0x9855f1=0x0;_0x9855f1<this[_0xd885('0xb')]['length'];_0x9855f1+=0x1){if(this[_0xd885('0xb')][_0x9855f1]['online']){this[_0xd885('0x13')]+=0x1;}if(this[_0xd885('0xb')][_0x9855f1][_0xd885('0x15')]){this[_0xd885('0x14')]+=0x1;}}this['available']=this['loggedIn']-this[_0xd885('0x14')];this[_0xd885('0x16')]=this[_0xd885('0x16')]>=0x0?this['available']:0x0;var _0x4cfc71={'id':this['id'],'available':this[_0xd885('0x16')],'loggedIn':this[_0xd885('0x13')],'name':this[_0xd885('0x7')],'paused':this[_0xd885('0x14')],'waiting':this[_0xd885('0xd')]};var _0x1e28ac=md5(JSON[_0xd885('0x17')](_0x4cfc71));if(this[_0xd885('0x18')]!==_0x1e28ac){this[_0xd885('0x18')]=_0x1e28ac;io['to'](util[_0xd885('0x19')](_0xd885('0x1a'),_0x4cfc71[_0xd885('0x7')]))[_0xd885('0x1b')](_0xd885('0x1c'),_0x4cfc71);}};module[_0xd885('0x1d')]=WhatsappQueue;
\ No newline at end of file
+var _0xe79d=['_rr','paused','loggedIn','whatsappPause','available','stringify','format','emit','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','updateRouting'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0xe79d,0xa5));var _0xde79=function(_0x42ab35,_0x1c929e){_0x42ab35=_0x42ab35-0x0;var _0x1fbf62=_0xe79d[_0x42ab35];return _0x1fbf62;};'use strict';var _=require(_0xde79('0x0'));var md5=require(_0xde79('0x1'));var util=require(_0xde79('0x2'));var Redis=require(_0xde79('0x3'));var config=require('../../../config/environment');config[_0xde79('0x4')]=_[_0xde79('0x5')](config[_0xde79('0x4')],{'host':_0xde79('0x6'),'port':0x18eb});var io=require(_0xde79('0x7'))(new Redis(config[_0xde79('0x4')]));function WhatsappQueue(_0x42354e){this['id']=_0x42354e['id']||0x0;this[_0xde79('0x8')]=_0x42354e['name']||'';this['timeout']=_0x42354e[_0xde79('0x9')]||0xa;this[_0xde79('0xa')]=_0x42354e['strategy']||_0xde79('0xb');this[_0xde79('0xc')]=_0x42354e[_0xde79('0xc')];this[_0xde79('0xd')]={};this['waiting']=0x0;this[_0xde79('0x1')]='';this['updateRouting']();this[_0xde79('0xe')]();}WhatsappQueue[_0xde79('0xf')][_0xde79('0x10')]=function(){var _0x23b11c=this['mapAgentsId'][_0xde79('0x11')];this['mapAgentsId']=_['map'](this[_0xde79('0xc')],'id');this[_0xde79('0xd')][_0xde79('0x11')]=_0x23b11c;};WhatsappQueue['prototype'][_0xde79('0xe')]=function(){this['loggedIn']=0x0;this[_0xde79('0x12')]=0x0;for(var _0x48bb71=0x0;_0x48bb71<this[_0xde79('0xc')]['length'];_0x48bb71+=0x1){if(this[_0xde79('0xc')][_0x48bb71]['online']){this[_0xde79('0x13')]+=0x1;}if(this[_0xde79('0xc')][_0x48bb71][_0xde79('0x14')]){this[_0xde79('0x12')]+=0x1;}}this['available']=this['loggedIn']-this[_0xde79('0x12')];this[_0xde79('0x15')]=this[_0xde79('0x15')]>=0x0?this[_0xde79('0x15')]:0x0;var _0xe2a6d0={'id':this['id'],'available':this['available'],'loggedIn':this[_0xde79('0x13')],'name':this[_0xde79('0x8')],'paused':this[_0xde79('0x12')],'waiting':this['waiting']};var _0x180a96=md5(JSON[_0xde79('0x16')](_0xe2a6d0));if(this[_0xde79('0x1')]!==_0x180a96){this['md5']=_0x180a96;io['to'](util[_0xde79('0x17')]('whatsapp:queue:%s',_0xe2a6d0[_0xde79('0x8')]))[_0xde79('0x18')]('whatsapp_queue:save',_0xe2a6d0);}};module[_0xde79('0x19')]=WhatsappQueue;
\ No newline at end of file
index a6cad5c..22e2fbd 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(_0x35467f,_0x46ca08){var _0x13405d=function(_0x347216){while(--_0x347216){_0x35467f['push'](_0x35467f['shift']());}};_0x13405d(++_0x46ca08);}(_0xb10b,0x12a));var _0xbb10=function(_0x4ef1a9,_0x59a5fa){_0x4ef1a9=_0x4ef1a9-0x0;var _0x23f201=_0xb10b[_0x4ef1a9];return _0x23f201;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 7d2fdbc..a24a0c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7777=['AddTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x536d70,_0xa88ce3){var _0x455ed3=function(_0xaa6b){while(--_0xaa6b){_0x536d70['push'](_0x536d70['shift']());}};_0x455ed3(++_0xa88ce3);}(_0x7777,0x1cf));var _0x7777=function(_0x48d12f,_0x5b66db){_0x48d12f=_0x48d12f-0x0;var _0x47fadc=_0x7777[_0x48d12f];return _0x47fadc;};'use strict';var client=require(_0x7777('0x0'));exports[_0x7777('0x1')]=function(_0x42ac20,_0x4f71c8){return client[_0x7777('0x2')](_0x7777('0x3'),{'body':_0x4f71c8,'options':{'where':{'id':_0x42ac20}},'log':_0x7777('0x4')});};exports['addTags']=function(_0x1c0c14,_0x49e65b){return client[_0x7777('0x2')](_0x7777('0x5'),{'body':_0x49e65b,'options':{'where':{'id':_0x1c0c14}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x0650=['updateChatInteraction','AddTagsToChatInteraction','addTagsToChatInteraction','update','Request','UpdateChatInteraction'];(function(_0x388c37,_0x1923e0){var _0xc70a93=function(_0x136f8c){while(--_0x136f8c){_0x388c37['push'](_0x388c37['shift']());}};_0xc70a93(++_0x1923e0);}(_0x0650,0x69));var _0x0065=function(_0x5333ba,_0x22e1bb){_0x5333ba=_0x5333ba-0x0;var _0x20f9dc=_0x0650[_0x5333ba];return _0x20f9dc;};'use strict';var client=require('../client');exports[_0x0065('0x0')]=function(_0xd10b22,_0x377a55){return client[_0x0065('0x1')](_0x0065('0x2'),{'body':_0x377a55,'options':{'where':{'id':_0xd10b22}},'log':_0x0065('0x3')});};exports['addTags']=function(_0x151fd5,_0x2d2dad){return client['Request'](_0x0065('0x4'),{'body':_0x2d2dad,'options':{'where':{'id':_0x151fd5}},'log':_0x0065('0x5')});};
\ No newline at end of file
index 5bde33e..1cb5c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ae=['createChatMessage','../client','Request','CreateChatMessage'];(function(_0x5906a5,_0x48af0a){var _0x1b9a31=function(_0x4b72ac){while(--_0x4b72ac){_0x5906a5['push'](_0x5906a5['shift']());}};_0x1b9a31(++_0x48af0a);}(_0x66ae,0x85));var _0xe66a=function(_0x12fd59,_0x3b1f36){_0x12fd59=_0x12fd59-0x0;var _0x2801d6=_0x66ae[_0x12fd59];return _0x2801d6;};'use strict';var client=require(_0xe66a('0x0'));exports['create']=function(_0x2fed2e){return client[_0xe66a('0x1')](_0xe66a('0x2'),{'body':_0x2fed2e,'log':_0xe66a('0x3')});};
\ No newline at end of file
+var _0xccf9=['create','CreateChatMessage','createChatMessage'];(function(_0x5a35f9,_0x4dc899){var _0x171748=function(_0x50c52f){while(--_0x50c52f){_0x5a35f9['push'](_0x5a35f9['shift']());}};_0x171748(++_0x4dc899);}(_0xccf9,0x180));var _0x9ccf=function(_0x3d2ec4,_0x4296b3){_0x3d2ec4=_0x3d2ec4-0x0;var _0x514d34=_0xccf9[_0x3d2ec4];return _0x514d34;};'use strict';var client=require('../client');exports[_0x9ccf('0x0')]=function(_0x35823d){return client['Request'](_0x9ccf('0x1'),{'body':_0x35823d,'log':_0x9ccf('0x2')});};
\ No newline at end of file
index bb1e9bb..64ed4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e19=['online','chatPause','../client','getChatQueues','Request','GetChatQueue','name'];(function(_0x245601,_0x2d91c9){var _0x2d9599=function(_0x1687e6){while(--_0x1687e6){_0x245601['push'](_0x245601['shift']());}};_0x2d9599(++_0x2d91c9);}(_0x1e19,0x1c9));var _0x91e1=function(_0x586837,_0x4f9ed1){_0x586837=_0x586837-0x0;var _0xea18c3=_0x1e19[_0x586837];return _0xea18c3;};'use strict';var client=require(_0x91e1('0x0'));exports[_0x91e1('0x1')]=function(){return function(){return client[_0x91e1('0x2')](_0x91e1('0x3'),{'options':{'raw':![],'attributes':['id',_0x91e1('0x4'),'timeout','strategy'],'include':[{'model':'User','as':'Agents','attributes':['id',_0x91e1('0x4'),_0x91e1('0x5'),_0x91e1('0x6')]}]},'log':_0x91e1('0x1')});};};
\ No newline at end of file
+var _0xa566=['User','../client','getChatQueues','Request','name','timeout','strategy'];(function(_0x415514,_0x3d21be){var _0x3582e5=function(_0x1ba489){while(--_0x1ba489){_0x415514['push'](_0x415514['shift']());}};_0x3582e5(++_0x3d21be);}(_0xa566,0x1c1));var _0x6a56=function(_0x178878,_0x4d03e3){_0x178878=_0x178878-0x0;var _0x246b7e=_0xa566[_0x178878];return _0x246b7e;};'use strict';var client=require(_0x6a56('0x0'));exports[_0x6a56('0x1')]=function(){return function(){return client[_0x6a56('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x6a56('0x3'),_0x6a56('0x4'),_0x6a56('0x5')],'include':[{'model':_0x6a56('0x6'),'as':'Agents','attributes':['id',_0x6a56('0x3'),'online','chatPause']}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 2c90448..d7970af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f99=['DESC','../client','create','Request','CreateChatQueueReport','UpdateChatQueueReport'];(function(_0x315463,_0x3227ea){var _0x538955=function(_0x54cbde){while(--_0x54cbde){_0x315463['push'](_0x315463['shift']());}};_0x538955(++_0x3227ea);}(_0x4f99,0x157));var _0x94f9=function(_0x4f3e5a,_0x1ee150){_0x4f3e5a=_0x4f3e5a-0x0;var _0x452880=_0x4f99[_0x4f3e5a];return _0x452880;};'use strict';var client=require(_0x94f9('0x0'));exports[_0x94f9('0x1')]=function(_0x52f499){return client[_0x94f9('0x2')](_0x94f9('0x3'),{'body':_0x52f499,'log':_0x94f9('0x3')});};exports['update']=function(_0x15ff7c,_0x879bc2){return client['Request'](_0x94f9('0x4'),{'body':_0x879bc2,'options':{'where':{'uniqueid':_0x15ff7c},'order':[['id',_0x94f9('0x5')]],'limit':0x1},'log':_0x94f9('0x4')});};
\ No newline at end of file
+var _0x6ce9=['CreateChatQueueReport','Request','UpdateChatQueueReport','../client','create'];(function(_0x396210,_0x529fe0){var _0x2d2076=function(_0x42c0b4){while(--_0x42c0b4){_0x396210['push'](_0x396210['shift']());}};_0x2d2076(++_0x529fe0);}(_0x6ce9,0x76));var _0x96ce=function(_0x590dbd,_0x40a42f){_0x590dbd=_0x590dbd-0x0;var _0x2f04e8=_0x6ce9[_0x590dbd];return _0x2f04e8;};'use strict';var client=require(_0x96ce('0x0'));exports[_0x96ce('0x1')]=function(_0x1d736b){return client['Request']('CreateChatQueueReport',{'body':_0x1d736b,'log':_0x96ce('0x2')});};exports['update']=function(_0x28a6a3,_0x18a969){return client[_0x96ce('0x3')](_0x96ce('0x4'),{'body':_0x18a969,'options':{'where':{'uniqueid':_0x28a6a3},'order':[['id','DESC']],'limit':0x1},'log':_0x96ce('0x4')});};
\ No newline at end of file
index 868d6df..9344030 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(_0x43fe3e,_0x88307d){var _0x22a741=function(_0x509369){while(--_0x509369){_0x43fe3e['push'](_0x43fe3e['shift']());}};_0x22a741(++_0x88307d);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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(_0x51ed62,_0x574379){var _0x34aee3=function(_0x2958bc){while(--_0x2958bc){_0x51ed62['push'](_0x51ed62['shift']());}};_0x34aee3(++_0x574379);}(_0x7a54,0x106));var _0x47a5=function(_0x2ff302,_0x172437){_0x2ff302=_0x2ff302-0x0;var _0x25a38f=_0x7a54[_0x2ff302];return _0x25a38f;};'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 0fabfe5..6f84eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa068=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xa068,0xd9));var _0x8a06=function(_0x1cde4d,_0x43082a){_0x1cde4d=_0x1cde4d-0x0;var _0xa8cd6a=_0xa068[_0x1cde4d];return _0xa8cd6a;};'use strict';var client=require(_0x8a06('0x0'));exports[_0x8a06('0x1')]=function(_0x4a013d){return client[_0x8a06('0x2')](_0x8a06('0x3'),{'body':_0x4a013d,'log':_0x8a06('0x4')});};
\ No newline at end of file
+var _0x180d=['CreateFaxMessage','../client','create','Request'];(function(_0x1e3c4c,_0x3abd52){var _0x2573fe=function(_0x5f12b7){while(--_0x5f12b7){_0x1e3c4c['push'](_0x1e3c4c['shift']());}};_0x2573fe(++_0x3abd52);}(_0x180d,0xd9));var _0xd180=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x180d[_0xc4001c];return _0x49f7bc;};'use strict';var client=require(_0xd180('0x0'));exports[_0xd180('0x1')]=function(_0x29163e){return client[_0xd180('0x2')](_0xd180('0x3'),{'body':_0x29163e,'log':'createFaxMessage'});};
\ No newline at end of file
index ad17c7a..de68dab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde08=['timeout','strategy','User','Agents','online','../client','getFaxQueues','GetFaxQueue'];(function(_0x81697e,_0x552c16){var _0x1f6e36=function(_0x2a6bbd){while(--_0x2a6bbd){_0x81697e['push'](_0x81697e['shift']());}};_0x1f6e36(++_0x552c16);}(_0xde08,0x135));var _0x8de0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde08[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x8de0('0x0'));exports[_0x8de0('0x1')]=function(){return function(){return client['Request'](_0x8de0('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x8de0('0x3'),_0x8de0('0x4')],'include':[{'model':_0x8de0('0x5'),'as':_0x8de0('0x6'),'attributes':['id','name',_0x8de0('0x7'),'faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x956a=['../client','getFaxQueues','Request','name','strategy','User','Agents','online','faxPause'];(function(_0x492af5,_0xd51471){var _0x59f529=function(_0x40c9aa){while(--_0x40c9aa){_0x492af5['push'](_0x492af5['shift']());}};_0x59f529(++_0xd51471);}(_0x956a,0x129));var _0xa956=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x956a[_0x432682];return _0x463d05;};'use strict';var client=require(_0xa956('0x0'));exports[_0xa956('0x1')]=function(){return function(){return client[_0xa956('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0xa956('0x3'),'timeout',_0xa956('0x4')],'include':[{'model':_0xa956('0x5'),'as':_0xa956('0x6'),'attributes':['id',_0xa956('0x3'),_0xa956('0x7'),_0xa956('0x8')]}]},'log':_0xa956('0x1')});};};
\ No newline at end of file
index a9e81b7..8e3d5b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb55f=['DESC','create','Request','CreateFaxQueueReport','UpdateFaxQueueReport'];(function(_0x255857,_0x3169c1){var _0x475875=function(_0x598903){while(--_0x598903){_0x255857['push'](_0x255857['shift']());}};_0x475875(++_0x3169c1);}(_0xb55f,0x15f));var _0xfb55=function(_0x56f49f,_0x584970){_0x56f49f=_0x56f49f-0x0;var _0x6d9e13=_0xb55f[_0x56f49f];return _0x6d9e13;};'use strict';var client=require('../client');exports[_0xfb55('0x0')]=function(_0x19692a){return client[_0xfb55('0x1')](_0xfb55('0x2'),{'body':_0x19692a,'log':_0xfb55('0x2')});};exports['update']=function(_0x13770c,_0x333ea5){return client[_0xfb55('0x1')](_0xfb55('0x3'),{'body':_0x333ea5,'options':{'where':{'uniqueid':_0x13770c},'order':[['id',_0xfb55('0x4')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0x0ecc=['CreateFaxQueueReport','update','UpdateFaxQueueReport','../client','create','Request'];(function(_0xe62d0d,_0xae1934){var _0x28d151=function(_0x2468af){while(--_0x2468af){_0xe62d0d['push'](_0xe62d0d['shift']());}};_0x28d151(++_0xae1934);}(_0x0ecc,0x1bf));var _0xc0ec=function(_0x4bdfdf,_0x241ddf){_0x4bdfdf=_0x4bdfdf-0x0;var _0x39a6c0=_0x0ecc[_0x4bdfdf];return _0x39a6c0;};'use strict';var client=require(_0xc0ec('0x0'));exports[_0xc0ec('0x1')]=function(_0x283203){return client[_0xc0ec('0x2')](_0xc0ec('0x3'),{'body':_0x283203,'log':'CreateFaxQueueReport'});};exports[_0xc0ec('0x4')]=function(_0x4c1518,_0x40c500){return client['Request'](_0xc0ec('0x5'),{'body':_0x40c500,'options':{'where':{'uniqueid':_0x4c1518},'order':[['id','DESC']],'limit':0x1},'log':_0xc0ec('0x5')});};
\ No newline at end of file
index b623314..12a4a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b72=['Request','GetInterval','name','Interval','interval','../client','getIntervals'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7b72,0x171));var _0x27b7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7b72[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x27b7('0x0'));exports[_0x27b7('0x1')]=function(){return function(){return client[_0x27b7('0x2')](_0x27b7('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x27b7('0x4')],'include':[{'model':_0x27b7('0x5'),'as':'Intervals','attributes':['id',_0x27b7('0x4'),_0x27b7('0x6')]}]},'log':_0x27b7('0x1')});};};
\ No newline at end of file
+var _0x4704=['GetInterval','name','Interval','interval','getIntervals','Request'];(function(_0x35ded3,_0x5f130a){var _0x20941d=function(_0x1a87c2){while(--_0x1a87c2){_0x35ded3['push'](_0x35ded3['shift']());}};_0x20941d(++_0x5f130a);}(_0x4704,0x190));var _0x4470=function(_0x185d8f,_0x16b7f1){_0x185d8f=_0x185d8f-0x0;var _0x39072b=_0x4704[_0x185d8f];return _0x39072b;};'use strict';var client=require('../client');exports[_0x4470('0x0')]=function(){return function(){return client[_0x4470('0x1')](_0x4470('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x4470('0x3')],'include':[{'model':_0x4470('0x4'),'as':'Intervals','attributes':['id','name',_0x4470('0x5')]}]},'log':_0x4470('0x0')});};};
\ No newline at end of file
index 6db93bd..9596cde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['AddTagsToMailInteraction','addTagsToChatInteraction','Request','addTags'];(function(_0x5cb97e,_0x132a39){var _0x1714b4=function(_0x384210){while(--_0x384210){_0x5cb97e['push'](_0x5cb97e['shift']());}};_0x1714b4(++_0x132a39);}(_0xb44a,0x1c2));var _0xab44=function(_0x1ffff7,_0x2f9ff6){_0x1ffff7=_0x1ffff7-0x0;var _0x49d017=_0xb44a[_0x1ffff7];return _0x49d017;};'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
+var _0x6a95=['update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x6a95,0x1db));var _0x56a9=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x6a95[_0x3635ce];return _0x97ecd0;};'use strict';var client=require(_0x56a9('0x0'));exports[_0x56a9('0x1')]=function(_0x15574a,_0xce37aa){return client[_0x56a9('0x2')](_0x56a9('0x3'),{'body':_0xce37aa,'options':{'where':{'id':_0x15574a}},'log':_0x56a9('0x4')});};exports['addTags']=function(_0x512f52,_0x12cd60){return client[_0x56a9('0x2')](_0x56a9('0x5'),{'body':_0x12cd60,'options':{'where':{'id':_0x512f52}},'log':_0x56a9('0x6')});};
\ No newline at end of file
index 8c1224f..a2c7e71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bde=['CreateMailMessage','createMailMessage','../client','create','Request'];(function(_0x2556e2,_0x2380d5){var _0x40fdb1=function(_0x3407a1){while(--_0x3407a1){_0x2556e2['push'](_0x2556e2['shift']());}};_0x40fdb1(++_0x2380d5);}(_0x3bde,0x110));var _0xe3bd=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x3bde[_0x20589d];return _0x422de9;};'use strict';var client=require(_0xe3bd('0x0'));exports[_0xe3bd('0x1')]=function(_0x3abb93){return client[_0xe3bd('0x2')](_0xe3bd('0x3'),{'body':_0x3abb93,'log':_0xe3bd('0x4')});};
\ No newline at end of file
+var _0x21b7=['../client','Request','createMailMessage'];(function(_0x21838e,_0x3ee1cf){var _0x3ccecb=function(_0x2cc5f9){while(--_0x2cc5f9){_0x21838e['push'](_0x21838e['shift']());}};_0x3ccecb(++_0x3ee1cf);}(_0x21b7,0xff));var _0x721b=function(_0x33c113,_0x3c3258){_0x33c113=_0x33c113-0x0;var _0x2b8d9f=_0x21b7[_0x33c113];return _0x2b8d9f;};'use strict';var client=require(_0x721b('0x0'));exports['create']=function(_0x3134f6){return client[_0x721b('0x1')]('CreateMailMessage',{'body':_0x3134f6,'log':_0x721b('0x2')});};
\ No newline at end of file
index 3880990..dee3be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaba8=['online','mailPause','getMailQueues','../client','GetMailQueue','name','timeout','strategy','User','Agents'];(function(_0x44676a,_0x3e7b88){var _0x588695=function(_0x168ed1){while(--_0x168ed1){_0x44676a['push'](_0x44676a['shift']());}};_0x588695(++_0x3e7b88);}(_0xaba8,0x12f));var _0x8aba=function(_0x300667,_0x1eb3c8){_0x300667=_0x300667-0x0;var _0x4ebe59=_0xaba8[_0x300667];return _0x4ebe59;};'use strict';var client=require(_0x8aba('0x0'));exports['getMailQueues']=function(){return function(){return client['Request'](_0x8aba('0x1'),{'options':{'raw':![],'attributes':['id',_0x8aba('0x2'),_0x8aba('0x3'),_0x8aba('0x4')],'include':[{'model':_0x8aba('0x5'),'as':_0x8aba('0x6'),'attributes':['id',_0x8aba('0x2'),_0x8aba('0x7'),_0x8aba('0x8')]}]},'log':_0x8aba('0x9')});};};
\ No newline at end of file
+var _0x96fd=['GetMailQueue','name','strategy','User','Agents','mailPause','getMailQueues'];(function(_0x30c25f,_0x19068a){var _0x3ee20a=function(_0x691a70){while(--_0x691a70){_0x30c25f['push'](_0x30c25f['shift']());}};_0x3ee20a(++_0x19068a);}(_0x96fd,0x1e9));var _0xd96f=function(_0x26b3bb,_0x2c7ff0){_0x26b3bb=_0x26b3bb-0x0;var _0x1c403a=_0x96fd[_0x26b3bb];return _0x1c403a;};'use strict';var client=require('../client');exports[_0xd96f('0x0')]=function(){return function(){return client['Request'](_0xd96f('0x1'),{'options':{'raw':![],'attributes':['id',_0xd96f('0x2'),'timeout',_0xd96f('0x3')],'include':[{'model':_0xd96f('0x4'),'as':_0xd96f('0x5'),'attributes':['id',_0xd96f('0x2'),'online',_0xd96f('0x6')]}]},'log':_0xd96f('0x0')});};};
\ No newline at end of file
index 4d5561a..7310d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3da=['CreateMailQueueReport','UpdateMailQueueReport','DESC','Request'];(function(_0x4e3cd2,_0x525e3a){var _0x39db34=function(_0x5b52da){while(--_0x5b52da){_0x4e3cd2['push'](_0x4e3cd2['shift']());}};_0x39db34(++_0x525e3a);}(_0xc3da,0x1cb));var _0xac3d=function(_0x36adf0,_0x1c5ba0){_0x36adf0=_0x36adf0-0x0;var _0x26c05d=_0xc3da[_0x36adf0];return _0x26c05d;};'use strict';var client=require('../client');exports['create']=function(_0x339cb6){return client[_0xac3d('0x0')](_0xac3d('0x1'),{'body':_0x339cb6,'log':_0xac3d('0x1')});};exports['update']=function(_0x334927,_0xba9948){return client[_0xac3d('0x0')](_0xac3d('0x2'),{'body':_0xba9948,'options':{'where':{'uniqueid':_0x334927},'order':[['id',_0xac3d('0x3')]],'limit':0x1},'log':_0xac3d('0x2')});};
\ No newline at end of file
+var _0x3acf=['../client','create','CreateMailQueueReport','UpdateMailQueueReport','DESC'];(function(_0x555f7a,_0x308c3e){var _0x45ba88=function(_0x5232fe){while(--_0x5232fe){_0x555f7a['push'](_0x555f7a['shift']());}};_0x45ba88(++_0x308c3e);}(_0x3acf,0x91));var _0xf3ac=function(_0xaf25ae,_0x2001c1){_0xaf25ae=_0xaf25ae-0x0;var _0x49732d=_0x3acf[_0xaf25ae];return _0x49732d;};'use strict';var client=require(_0xf3ac('0x0'));exports[_0xf3ac('0x1')]=function(_0x28a68b){return client['Request'](_0xf3ac('0x2'),{'body':_0x28a68b,'log':_0xf3ac('0x2')});};exports['update']=function(_0x14d8ae,_0x314ea6){return client['Request'](_0xf3ac('0x3'),{'body':_0x314ea6,'options':{'where':{'uniqueid':_0x14d8ae},'order':[['id',_0xf3ac('0x4')]],'limit':0x1},'log':_0xf3ac('0x3')});};
\ No newline at end of file
index c0298a8..9614e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe7=['update','Request','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client'];(function(_0x2ea900,_0xd4c112){var _0x20ab6e=function(_0x4cc0ca){while(--_0x4cc0ca){_0x2ea900['push'](_0x2ea900['shift']());}};_0x20ab6e(++_0xd4c112);}(_0xcfe7,0xfb));var _0x7cfe=function(_0x475e5e,_0x307501){_0x475e5e=_0x475e5e-0x0;var _0x1719bd=_0xcfe7[_0x475e5e];return _0x1719bd;};'use strict';var client=require(_0x7cfe('0x0'));exports[_0x7cfe('0x1')]=function(_0x4f85ea,_0x1245ce){return client[_0x7cfe('0x2')]('UpdateOpenchannelInteraction',{'body':_0x1245ce,'options':{'where':{'id':_0x4f85ea}},'log':_0x7cfe('0x3')});};exports[_0x7cfe('0x4')]=function(_0x6e88cd,_0x47d8e7){return client[_0x7cfe('0x2')](_0x7cfe('0x5'),{'body':_0x47d8e7,'options':{'where':{'id':_0x6e88cd}},'log':_0x7cfe('0x6')});};
\ No newline at end of file
+var _0xcb94=['Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x394678,_0x68c7c9){var _0x289eeb=function(_0x24e61a){while(--_0x24e61a){_0x394678['push'](_0x394678['shift']());}};_0x289eeb(++_0x68c7c9);}(_0xcb94,0x15e));var _0x4cb9=function(_0x5b1372,_0x4638ee){_0x5b1372=_0x5b1372-0x0;var _0x298a64=_0xcb94[_0x5b1372];return _0x298a64;};'use strict';var client=require(_0x4cb9('0x0'));exports[_0x4cb9('0x1')]=function(_0x4e767a,_0x237653){return client[_0x4cb9('0x2')](_0x4cb9('0x3'),{'body':_0x237653,'options':{'where':{'id':_0x4e767a}},'log':_0x4cb9('0x4')});};exports[_0x4cb9('0x5')]=function(_0x35ef51,_0x4fdcea){return client[_0x4cb9('0x2')](_0x4cb9('0x6'),{'body':_0x4fdcea,'options':{'where':{'id':_0x35ef51}},'log':_0x4cb9('0x7')});};
\ No newline at end of file
index 01bbcd9..c916d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe068=['create','Request','CreateOpenchannelMessage','../client'];(function(_0x1649e6,_0xc5c614){var _0x19d346=function(_0x56c631){while(--_0x56c631){_0x1649e6['push'](_0x1649e6['shift']());}};_0x19d346(++_0xc5c614);}(_0xe068,0xbf));var _0x8e06=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe068[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x8e06('0x0'));exports[_0x8e06('0x1')]=function(_0x2114c4){return client[_0x8e06('0x2')](_0x8e06('0x3'),{'body':_0x2114c4,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0xba59=['CreateOpenchannelMessage','createOpenchannelMessage','../client','create','Request'];(function(_0x300190,_0x55a2ef){var _0x396a5d=function(_0xc0850a){while(--_0xc0850a){_0x300190['push'](_0x300190['shift']());}};_0x396a5d(++_0x55a2ef);}(_0xba59,0x151));var _0x9ba5=function(_0x119705,_0xba9427){_0x119705=_0x119705-0x0;var _0x2affc2=_0xba59[_0x119705];return _0x2affc2;};'use strict';var client=require(_0x9ba5('0x0'));exports[_0x9ba5('0x1')]=function(_0xe304f){return client[_0x9ba5('0x2')](_0x9ba5('0x3'),{'body':_0xe304f,'log':_0x9ba5('0x4')});};
\ No newline at end of file
index 53a1070..465584a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e0d=['openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','Agents','online'];(function(_0x5dd661,_0xbfefab){var _0x47672e=function(_0x50d5e5){while(--_0x50d5e5){_0x5dd661['push'](_0x5dd661['shift']());}};_0x47672e(++_0xbfefab);}(_0x3e0d,0x1cc));var _0xd3e0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3e0d[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0xd3e0('0x0')]=function(){return function(){return client[_0xd3e0('0x1')](_0xd3e0('0x2'),{'options':{'raw':![],'attributes':['id',_0xd3e0('0x3'),_0xd3e0('0x4'),_0xd3e0('0x5')],'include':[{'model':'User','as':_0xd3e0('0x6'),'attributes':['id',_0xd3e0('0x3'),_0xd3e0('0x7'),_0xd3e0('0x8')]}]},'log':_0xd3e0('0x0')});};};
\ No newline at end of file
+var _0xf304=['timeout','strategy','User','Agents','online','openchannelPause','getOpenchannelQueues','../client','Request','GetOpenchannelQueue','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf304,0x1eb));var _0x4f30=function(_0x27830a,_0x4e8504){_0x27830a=_0x27830a-0x0;var _0x32ccc3=_0xf304[_0x27830a];return _0x32ccc3;};'use strict';var client=require(_0x4f30('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x4f30('0x1')](_0x4f30('0x2'),{'options':{'raw':![],'attributes':['id',_0x4f30('0x3'),_0x4f30('0x4'),_0x4f30('0x5')],'include':[{'model':_0x4f30('0x6'),'as':_0x4f30('0x7'),'attributes':['id',_0x4f30('0x3'),_0x4f30('0x8'),_0x4f30('0x9')]}]},'log':_0x4f30('0xa')});};};
\ No newline at end of file
index 0f49f23..755ec9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80db=['DESC','../client','create','Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport'];(function(_0x167b74,_0x14d016){var _0x497ead=function(_0x207c43){while(--_0x207c43){_0x167b74['push'](_0x167b74['shift']());}};_0x497ead(++_0x14d016);}(_0x80db,0x174));var _0xb80d=function(_0xee89ad,_0x39ca00){_0xee89ad=_0xee89ad-0x0;var _0x16c4bd=_0x80db[_0xee89ad];return _0x16c4bd;};'use strict';var client=require(_0xb80d('0x0'));exports[_0xb80d('0x1')]=function(_0x5d5616){return client[_0xb80d('0x2')](_0xb80d('0x3'),{'body':_0x5d5616,'log':'CreateOpenchannelQueueReport'});};exports[_0xb80d('0x4')]=function(_0x97df,_0x33ebd2){return client[_0xb80d('0x2')](_0xb80d('0x5'),{'body':_0x33ebd2,'options':{'where':{'uniqueid':_0x97df},'order':[['id',_0xb80d('0x6')]],'limit':0x1},'log':_0xb80d('0x5')});};
\ No newline at end of file
+var _0x4c4d=['Request','UpdateOpenchannelQueueReport','DESC','../client','CreateOpenchannelQueueReport'];(function(_0x1399d6,_0x2c1661){var _0x4a9db4=function(_0x4666b8){while(--_0x4666b8){_0x1399d6['push'](_0x1399d6['shift']());}};_0x4a9db4(++_0x2c1661);}(_0x4c4d,0x1a2));var _0xd4c4=function(_0x5a2721,_0x462834){_0x5a2721=_0x5a2721-0x0;var _0x3f2bdf=_0x4c4d[_0x5a2721];return _0x3f2bdf;};'use strict';var client=require(_0xd4c4('0x0'));exports['create']=function(_0x4ccde2){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x4ccde2,'log':_0xd4c4('0x1')});};exports['update']=function(_0x3418ee,_0x2a930f){return client[_0xd4c4('0x2')](_0xd4c4('0x3'),{'body':_0x2a930f,'options':{'where':{'uniqueid':_0x3418ee},'order':[['id',_0xd4c4('0x4')]],'limit':0x1},'log':_0xd4c4('0x3')});};
\ No newline at end of file
index eb0ac0b..1f73e05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7fc=['UpdateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','Request'];(function(_0x550f66,_0x18bbbd){var _0x2ea2a1=function(_0x12687a){while(--_0x12687a){_0x550f66['push'](_0x550f66['shift']());}};_0x2ea2a1(++_0x18bbbd);}(_0xb7fc,0x1e3));var _0xcb7f=function(_0x49c6cc,_0x308bdb){_0x49c6cc=_0x49c6cc-0x0;var _0x22e239=_0xb7fc[_0x49c6cc];return _0x22e239;};'use strict';var client=require(_0xcb7f('0x0'));exports['update']=function(_0x52c9f2,_0x189517){return client[_0xcb7f('0x1')](_0xcb7f('0x2'),{'body':_0x189517,'options':{'where':{'id':_0x52c9f2}},'log':'updateSmsInteraction'});};exports['addTags']=function(_0x23c877,_0x28247a){return client[_0xcb7f('0x1')](_0xcb7f('0x3'),{'body':_0x28247a,'options':{'where':{'id':_0x23c877}},'log':_0xcb7f('0x4')});};
\ No newline at end of file
+var _0xf675=['addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','updateSmsInteraction'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0xf675,0x199));var _0x5f67=function(_0x31c3be,_0x5e540f){_0x31c3be=_0x31c3be-0x0;var _0x48314d=_0xf675[_0x31c3be];return _0x48314d;};'use strict';var client=require(_0x5f67('0x0'));exports[_0x5f67('0x1')]=function(_0x320714,_0x52158a){return client[_0x5f67('0x2')]('UpdateSmsInteraction',{'body':_0x52158a,'options':{'where':{'id':_0x320714}},'log':_0x5f67('0x3')});};exports[_0x5f67('0x4')]=function(_0x2b07d5,_0x53c7ba){return client[_0x5f67('0x2')](_0x5f67('0x5'),{'body':_0x53c7ba,'options':{'where':{'id':_0x2b07d5}},'log':_0x5f67('0x6')});};
\ No newline at end of file
index 90c9439..7d1cb8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e2=['CreateSmsMessage','createSmsMessage','../client','create','Request'];(function(_0x5b34c0,_0x3ad403){var _0x242bd3=function(_0x51d0ce){while(--_0x51d0ce){_0x5b34c0['push'](_0x5b34c0['shift']());}};_0x242bd3(++_0x3ad403);}(_0x28e2,0x75));var _0x228e=function(_0x448e33,_0x191c5){_0x448e33=_0x448e33-0x0;var _0x2d35a1=_0x28e2[_0x448e33];return _0x2d35a1;};'use strict';var client=require(_0x228e('0x0'));exports[_0x228e('0x1')]=function(_0x22fb96){return client[_0x228e('0x2')](_0x228e('0x3'),{'body':_0x22fb96,'log':_0x228e('0x4')});};
\ No newline at end of file
+var _0xb6ac=['createSmsMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb6ac,0x13b));var _0xcb6a=function(_0x55255d,_0x50e0dc){_0x55255d=_0x55255d-0x0;var _0x387a64=_0xb6ac[_0x55255d];return _0x387a64;};'use strict';var client=require('../client');exports['create']=function(_0x2a59d1){return client['Request']('CreateSmsMessage',{'body':_0x2a59d1,'log':_0xcb6a('0x0')});};
\ No newline at end of file
index 122c43a..8886e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x8d475,_0xb5fb9c){var _0x1b7b21=function(_0x33cba3){while(--_0x33cba3){_0x8d475['push'](_0x8d475['shift']());}};_0x1b7b21(++_0xb5fb9c);}(_0xe706,0xa3));var _0x6e70=function(_0x32443e,_0x2d7d32){_0x32443e=_0x32443e-0x0;var _0x2aa089=_0xe706[_0x32443e];return _0x2aa089;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x298e2a,_0x13b638){var _0x2c624d=function(_0x3080d5){while(--_0x3080d5){_0x298e2a['push'](_0x298e2a['shift']());}};_0x2c624d(++_0x13b638);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
index f80ac2c..07e392e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x30f6f6,_0x5f0f90){var _0x43b46a=function(_0x10004e){while(--_0x10004e){_0x30f6f6['push'](_0x30f6f6['shift']());}};_0x43b46a(++_0x5f0f90);}(_0x55ca,0x126));var _0xa55c=function(_0x3be2e2,_0x5c166d){_0x3be2e2=_0x3be2e2-0x0;var _0x53b9c5=_0x55ca[_0x3be2e2];return _0x53b9c5;};'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 _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xedd9,0xfc));var _0x9edd=function(_0xa31422,_0x5d62b4){_0xa31422=_0xa31422-0x0;var _0x2a465c=_0xedd9[_0xa31422];return _0x2a465c;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index 6244e8a..c53acbe 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(_0x8d5cb0,_0x247170){var _0x4e1a60=function(_0x43ac11){while(--_0x43ac11){_0x8d5cb0['push'](_0x8d5cb0['shift']());}};_0x4e1a60(++_0x247170);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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(_0x43e8ae,_0x303198){var _0x379523=function(_0x5966fc){while(--_0x5966fc){_0x43e8ae['push'](_0x43e8ae['shift']());}};_0x379523(++_0x303198);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 76710b7..97f8467 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fd=['UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','Request','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client'];(function(_0x2b0bc2,_0x4331f5){var _0x56e5b9=function(_0x4c1b06){while(--_0x4c1b06){_0x2b0bc2['push'](_0x2b0bc2['shift']());}};_0x56e5b9(++_0x4331f5);}(_0x68fd,0x1e9));var _0xd68f=function(_0x2634eb,_0x29e069){_0x2634eb=_0x2634eb-0x0;var _0x3a9456=_0x68fd[_0x2634eb];return _0x3a9456;};'use strict';var client=require(_0xd68f('0x0'));exports['update']=function(_0x17591d,_0x1492a9){return client['Request'](_0xd68f('0x1'),{'body':_0x1492a9,'options':{'where':{'id':_0x17591d}},'log':_0xd68f('0x2')});};exports[_0xd68f('0x3')]=function(_0x3e5e78,_0x37c481){return client[_0xd68f('0x4')](_0xd68f('0x5'),{'body':_0x37c481,'options':{'where':{'id':_0x3e5e78}},'log':_0xd68f('0x6')});};
\ No newline at end of file
+var _0x15ef=['addTags','AddTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x29b43d,_0x5c70c3){var _0x4c2587=function(_0x3e0a7e){while(--_0x3e0a7e){_0x29b43d['push'](_0x29b43d['shift']());}};_0x4c2587(++_0x5c70c3);}(_0x15ef,0x80));var _0xf15e=function(_0x3b7b17,_0x4b4b46){_0x3b7b17=_0x3b7b17-0x0;var _0x465ea8=_0x15ef[_0x3b7b17];return _0x465ea8;};'use strict';var client=require('../client');exports[_0xf15e('0x0')]=function(_0x69848b,_0x4effd9){return client[_0xf15e('0x1')](_0xf15e('0x2'),{'body':_0x4effd9,'options':{'where':{'id':_0x69848b}},'log':_0xf15e('0x3')});};exports[_0xf15e('0x4')]=function(_0x4e7241,_0x5d456b){return client[_0xf15e('0x1')](_0xf15e('0x5'),{'body':_0x5d456b,'options':{'where':{'id':_0x4e7241}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 9c9279b..22dcd0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd32e=['createWhatsappMessage','../client','create'];(function(_0x3f644f,_0x2e47d0){var _0x4de8ab=function(_0x2c03ad){while(--_0x2c03ad){_0x3f644f['push'](_0x3f644f['shift']());}};_0x4de8ab(++_0x2e47d0);}(_0xd32e,0x1c3));var _0xed32=function(_0x286ba3,_0x45d1c3){_0x286ba3=_0x286ba3-0x0;var _0x4f03ac=_0xd32e[_0x286ba3];return _0x4f03ac;};'use strict';var client=require(_0xed32('0x0'));exports[_0xed32('0x1')]=function(_0x3e3449){return client['Request']('CreateWhatsappMessage',{'body':_0x3e3449,'log':_0xed32('0x2')});};
\ No newline at end of file
+var _0xf90d=['../client','create','Request','createWhatsappMessage'];(function(_0x4d4b16,_0x2e1d97){var _0x985aca=function(_0x3e6902){while(--_0x3e6902){_0x4d4b16['push'](_0x4d4b16['shift']());}};_0x985aca(++_0x2e1d97);}(_0xf90d,0x1ac));var _0xdf90=function(_0x482bb1,_0xbd3005){_0x482bb1=_0x482bb1-0x0;var _0x4c75d4=_0xf90d[_0x482bb1];return _0x4c75d4;};'use strict';var client=require(_0xdf90('0x0'));exports[_0xdf90('0x1')]=function(_0x4f5afc){return client[_0xdf90('0x2')]('CreateWhatsappMessage',{'body':_0x4f5afc,'log':_0xdf90('0x3')});};
\ No newline at end of file
index f6267f7..fb7c8e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3f2=['../client','getWhatsappQueues','timeout','strategy','User','whatsappPause'];(function(_0x4b2dc8,_0x1e0af9){var _0x50d88f=function(_0x1b6288){while(--_0x1b6288){_0x4b2dc8['push'](_0x4b2dc8['shift']());}};_0x50d88f(++_0x1e0af9);}(_0xc3f2,0x6c));var _0x2c3f=function(_0x1844c9,_0x5856f2){_0x1844c9=_0x1844c9-0x0;var _0xa5cfde=_0xc3f2[_0x1844c9];return _0xa5cfde;};'use strict';var client=require(_0x2c3f('0x0'));exports[_0x2c3f('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id','name',_0x2c3f('0x2'),_0x2c3f('0x3')],'include':[{'model':_0x2c3f('0x4'),'as':'Agents','attributes':['id','name','online',_0x2c3f('0x5')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0x4248=['User','Agents','whatsappPause','getWhatsappQueues','../client','Request','name','timeout','strategy'];(function(_0x28f69f,_0x5d5a6c){var _0x4ae380=function(_0x4da1af){while(--_0x4da1af){_0x28f69f['push'](_0x28f69f['shift']());}};_0x4ae380(++_0x5d5a6c);}(_0x4248,0x1f3));var _0x8424=function(_0x66094a,_0x3f5795){_0x66094a=_0x66094a-0x0;var _0xf8cf1d=_0x4248[_0x66094a];return _0xf8cf1d;};'use strict';var client=require(_0x8424('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x8424('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x8424('0x2'),_0x8424('0x3'),_0x8424('0x4')],'include':[{'model':_0x8424('0x5'),'as':_0x8424('0x6'),'attributes':['id',_0x8424('0x2'),'online',_0x8424('0x7')]}]},'log':_0x8424('0x8')});};};
\ No newline at end of file
index 75ec1f0..6b39174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d0=['UpdateWhatsappQueueReport','../client','Request','CreateWhatsappQueueReport','update'];(function(_0x366efc,_0x549882){var _0x118d3f=function(_0x2b35f0){while(--_0x2b35f0){_0x366efc['push'](_0x366efc['shift']());}};_0x118d3f(++_0x549882);}(_0x47d0,0x137));var _0x047d=function(_0x35c5f5,_0x3e52a0){_0x35c5f5=_0x35c5f5-0x0;var _0x280568=_0x47d0[_0x35c5f5];return _0x280568;};'use strict';var client=require(_0x047d('0x0'));exports['create']=function(_0x37740c){return client[_0x047d('0x1')](_0x047d('0x2'),{'body':_0x37740c,'log':'CreateWhatsappQueueReport'});};exports[_0x047d('0x3')]=function(_0x337b4a,_0x68af79){return client[_0x047d('0x1')]('UpdateWhatsappQueueReport',{'body':_0x68af79,'options':{'where':{'uniqueid':_0x337b4a},'order':[['id','DESC']],'limit':0x1},'log':_0x047d('0x4')});};
\ No newline at end of file
+var _0xf317=['update','Request','../client','create','CreateWhatsappQueueReport'];(function(_0x2488f7,_0x2e11a1){var _0x24c156=function(_0x7daf82){while(--_0x7daf82){_0x2488f7['push'](_0x2488f7['shift']());}};_0x24c156(++_0x2e11a1);}(_0xf317,0xe8));var _0x7f31=function(_0x2587bc,_0x6645c1){_0x2587bc=_0x2587bc-0x0;var _0x13339c=_0xf317[_0x2587bc];return _0x13339c;};'use strict';var client=require(_0x7f31('0x0'));exports[_0x7f31('0x1')]=function(_0x11fc39){return client['Request'](_0x7f31('0x2'),{'body':_0x11fc39,'log':_0x7f31('0x2')});};exports[_0x7f31('0x3')]=function(_0x2a5955,_0x26cc68){return client[_0x7f31('0x4')]('UpdateWhatsappQueueReport',{'body':_0x26cc68,'options':{'where':{'uniqueid':_0x2a5955},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 164d142..794aab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf256=['stop','find','timeout','createQueue','atimeout','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','lodash','seq-queue','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','info','format','name','toLowerCase','consequence','validate','length','error','[%s][AGENT]\x20%s','map','join'];(function(_0x3882b5,_0x384ea5){var _0x34f021=function(_0xc7811d){while(--_0xc7811d){_0x3882b5['push'](_0x3882b5['shift']());}};_0x34f021(++_0x384ea5);}(_0xf256,0x1cf));var _0x6f25=function(_0x1e2b57,_0x5e4c6c){_0x1e2b57=_0x1e2b57-0x0;var _0x4a9a59=_0xf256[_0x1e2b57];return _0x4a9a59;};'use strict';var schema=require('validate');var _=require(_0x6f25('0x0'));var util=require('util');var seqqueue=require(_0x6f25('0x1'));var logger=require(_0x6f25('0x2'))('routing');var strategy=require(_0x6f25('0x3'));var queue=schema({'name':{'type':_0x6f25('0x4'),'required':!![],'message':_0x6f25('0x5')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x21df3a,_0x2579c8,_0x4b689c){return logger[_0x6f25('0x6')](util[_0x6f25('0x7')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x21df3a,_0x2579c8[_0x6f25('0x8')],_0x4b689c));}function handleFindAgent(_0x296edf){return function(_0x2eb698){return _0x2eb698[_0x6f25('0x8')][_0x6f25('0x9')]()===_0x296edf['toLowerCase']();};}exports[_0x6f25('0xa')]=function(_0x989f66,_0x4b2d65,_0x5849d9,_0x1b0619){return function(_0x23ba37){try{var _0xdc0f06={'name':_0x4b2d65[0x0],'timeout':_0x4b2d65[0x1]};var _0x74a9fe=queue[_0x6f25('0xb')](_0xdc0f06,{'typecast':!![]});if(_0x74a9fe[_0x6f25('0xc')]){logger[_0x6f25('0xd')](_0x6f25('0xe'),_0x989f66,_[_0x6f25('0xf')](_0x74a9fe,'message')[_0x6f25('0x10')](',\x20'));_0x23ba37[_0x6f25('0x11')]();}else{var _0x2e9765=_[_0x6f25('0x12')](_0x5849d9['agents'],handleFindAgent(_0xdc0f06[_0x6f25('0x8')]));if(_0x2e9765){var _0x46c077=(_0xdc0f06[_0x6f25('0x13')]||0xa)*0x3e8;var _0x410cfc,_0x19ded2;var _0x17a0f0=seqqueue[_0x6f25('0x14')](_0x46c077);_0x17a0f0['id']=_0x989f66;_0x17a0f0[_0x6f25('0x15')]=_0x46c077;_0x17a0f0['channel']=_0x1b0619['channel'];writeLog(_0x989f66,_0x2e9765,util[_0x6f25('0x7')](_0x6f25('0x16'),_0x46c077));_0x5849d9[_0x6f25('0x17')][_0x989f66]['on'](_0x6f25('0x18'),function(){logger[_0x6f25('0x6')](_0x6f25('0x19'),_0x989f66);clearTimeout(_0x19ded2);_0x19ded2=undefined;_0x17a0f0['close']();if(_0x5849d9[_0x6f25('0x17')][_0x989f66]){delete _0x5849d9['rules'][_0x989f66];}_0x23ba37[_0x6f25('0x11')]();});_0x5849d9[_0x6f25('0x17')][_0x989f66]['on'](_0x6f25('0x1a'),function(){if(_0x5849d9[_0x6f25('0x17')][_0x989f66]){delete _0x5849d9[_0x6f25('0x17')][_0x989f66];}});_0x19ded2=setTimeout(function(){logger[_0x6f25('0x6')]('[%s][AGENT]\x20ROUTING\x20END',_0x989f66);clearTimeout(_0x19ded2);_0x17a0f0['close']();_0x23ba37[_0x6f25('0x1b')]();},_0x46c077);strategy[_0x6f25('0x1c')](_0x17a0f0,_0x2e9765,_0x5849d9,_0x1b0619);}else{logger['error'](_0x6f25('0x1d'),_0x989f66,_0xdc0f06[_0x6f25('0x8')]);_0x23ba37['stop']();}}}catch(_0x546304){console[_0x6f25('0x1e')](_0x546304);logger[_0x6f25('0xd')](_0x6f25('0x1f'),_0x989f66,_0x546304['stack']);_0x23ba37[_0x6f25('0x11')]();}};};
\ No newline at end of file
+var _0xc556=['../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','map','message','stop','timeout','atimeout','channel','format','START:%s','[%s][AGENT]\x20ROUTING\x20STOPPED','rules','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','util','seq-queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc556,0xc3));var _0x6c55=function(_0x2d4a58,_0x1f1a3e){_0x2d4a58=_0x2d4a58-0x0;var _0x2a6516=_0xc556[_0x2d4a58];return _0x2a6516;};'use strict';var schema=require(_0x6c55('0x0'));var _=require('lodash');var util=require(_0x6c55('0x1'));var seqqueue=require(_0x6c55('0x2'));var logger=require(_0x6c55('0x3'))('routing');var strategy=require(_0x6c55('0x4'));var queue=schema({'name':{'type':_0x6c55('0x5'),'required':!![],'message':_0x6c55('0x6')},'timeout':{'type':_0x6c55('0x7'),'message':_0x6c55('0x8')}});function writeLog(_0x22cdbd,_0x2a7e8e,_0x4c7ac4){return logger[_0x6c55('0x9')](util['format'](_0x6c55('0xa'),_0x22cdbd,_0x2a7e8e[_0x6c55('0xb')],_0x4c7ac4));}function handleFindAgent(_0x1750ca){return function(_0x4474e3){return _0x4474e3['name'][_0x6c55('0xc')]()===_0x1750ca[_0x6c55('0xc')]();};}exports[_0x6c55('0xd')]=function(_0x11de82,_0xc7ca23,_0x43d344,_0x3eb232){return function(_0xde6061){try{var _0x5ea75d={'name':_0xc7ca23[0x0],'timeout':_0xc7ca23[0x1]};var _0x38e004=queue[_0x6c55('0x0')](_0x5ea75d,{'typecast':!![]});if(_0x38e004[_0x6c55('0xe')]){logger[_0x6c55('0xf')]('[%s][AGENT]\x20%s',_0x11de82,_[_0x6c55('0x10')](_0x38e004,_0x6c55('0x11'))['join'](',\x20'));_0xde6061[_0x6c55('0x12')]();}else{var _0x21a8fa=_['find'](_0x43d344['agents'],handleFindAgent(_0x5ea75d[_0x6c55('0xb')]));if(_0x21a8fa){var _0x364b42=(_0x5ea75d[_0x6c55('0x13')]||0xa)*0x3e8;var _0x364e61,_0x19ba0b;var _0x564aef=seqqueue['createQueue'](_0x364b42);_0x564aef['id']=_0x11de82;_0x564aef[_0x6c55('0x14')]=_0x364b42;_0x564aef[_0x6c55('0x15')]=_0x3eb232['channel'];writeLog(_0x11de82,_0x21a8fa,util[_0x6c55('0x16')](_0x6c55('0x17'),_0x364b42));_0x43d344['rules'][_0x11de82]['on']('end',function(){logger[_0x6c55('0x9')](_0x6c55('0x18'),_0x11de82);clearTimeout(_0x19ba0b);_0x19ba0b=undefined;_0x564aef['close']();if(_0x43d344[_0x6c55('0x19')][_0x11de82]){delete _0x43d344['rules'][_0x11de82];}_0xde6061['stop']();});_0x43d344[_0x6c55('0x19')][_0x11de82]['on'](_0x6c55('0x1a'),function(){if(_0x43d344[_0x6c55('0x19')][_0x11de82]){delete _0x43d344['rules'][_0x11de82];}});_0x19ba0b=setTimeout(function(){logger['info'](_0x6c55('0x1b'),_0x11de82);clearTimeout(_0x19ba0b);_0x564aef['close']();_0xde6061[_0x6c55('0x1c')]();},_0x364b42);strategy[_0x6c55('0x1d')](_0x564aef,_0x21a8fa,_0x43d344,_0x3eb232);}else{logger[_0x6c55('0xf')](_0x6c55('0x1e'),_0x11de82,_0x5ea75d[_0x6c55('0xb')]);_0xde6061[_0x6c55('0x12')]();}}}catch(_0x3b12e3){console['log'](_0x3b12e3);logger[_0x6c55('0xf')](_0x6c55('0x1f'),_0x11de82,_0x3b12e3[_0x6c55('0x20')]);_0xde6061[_0x6c55('0x12')]();}};};
\ No newline at end of file
index 0123c39..1523617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b4=['toString','postText','providerResponse','then','dialogState','Failed','stringify','moment','aws-sdk','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','interaction','ChatWebsiteId','account','upperFirst','created','isEmpty','body','getMustacheRender','Message','create','catch','error','[%s][AMAZONLEX]\x20%s','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message'];(function(_0x56d2ce,_0x1d82fd){var _0x1f1051=function(_0x48eb5e){while(--_0x48eb5e){_0x56d2ce['push'](_0x56d2ce['shift']());}};_0x1f1051(++_0x1d82fd);}(_0x34b4,0x10f));var _0x434b=function(_0x43e207,_0x167728){_0x43e207=_0x43e207-0x0;var _0x4239c8=_0x34b4[_0x43e207];return _0x4239c8;};'use strict';var _=require('lodash');var moment=require(_0x434b('0x0'));var AWS=require(_0x434b('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x434b('0x2'));var rpc={'chatMessage':require(_0x434b('0x3')),'openchannelMessage':require(_0x434b('0x4')),'mailMessage':require(_0x434b('0x5')),'smsMessage':require(_0x434b('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x434b('0x7'))};exports[_0x434b('0x8')]=function(_0x3d60f3,_0x9a498e){return function(_0x15b896){try{if(!_[_0x434b('0x9')](this['interaction'][_0x434b('0xa')])){logger[_0x434b('0xb')]('[%s][AMAZONLEX]\x20%s',_0x3d60f3,_0x434b('0xc'));return _0x15b896[_0x434b('0xd')]();}var _0x285b68={'ContactId':this[_0x434b('0xe')]['id'],'sentAt':moment()[_0x434b('0xf')](_0x434b('0x10')),'direction':'out'};if(this[_0x434b('0x11')]==='sms'||this[_0x434b('0x11')]===_0x434b('0x12')){_0x285b68[_0x434b('0x13')]=this[_0x434b('0x14')][_0x434b('0x13')];}var _0x35e0cd=this[_0x434b('0x11')];if(_0x35e0cd==='chat'){_0x285b68[_0x434b('0x15')]=this[_0x434b('0x16')]['id'];}else{_0x285b68[_[_0x434b('0x17')](_0x35e0cd)+'AccountId']=this[_0x434b('0x16')]['id'];}_0x285b68[_[_0x434b('0x17')](_0x35e0cd)+'InteractionId']=this[_0x434b('0x14')]['id'];if(this[_0x434b('0x14')][_0x434b('0x18')]){var _0x9bf03c=_0x9a498e[0x4];if(!_[_0x434b('0x19')](_0x9bf03c)){_0x285b68[_0x434b('0x1a')]=utils[_0x434b('0x1b')](_0x9bf03c,this);return rpc[_0x35e0cd+_0x434b('0x1c')][_0x434b('0x1d')](_0x285b68)['then'](function(_0x497889){logger[_0x434b('0xb')]('[%s][AMAZONLEX]\x20%s',_0x3d60f3,_0x285b68[_0x434b('0x1a')]);})[_0x434b('0x1e')](function(_0x1bb5bf){logger[_0x434b('0x1f')](_0x434b('0x20'),_0x3d60f3,JSON['stringify'](_0x1bb5bf));})['finally'](function(){logger[_0x434b('0xb')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x3d60f3);_0x15b896[_0x434b('0x21')]();});}else{logger[_0x434b('0xb')](_0x434b('0x22'),_0x3d60f3);_0x15b896[_0x434b('0x21')]();}}else{var _0x323747=this;var _0x4979aa=new AWS[(_0x434b('0x23'))]({'accessKeyId':_0x9a498e[0x0],'secretAccessKey':_0x9a498e[0x1],'region':_0x9a498e[0x2]});var _0x410138={'botAlias':'$LATEST','botName':_0x9a498e[0x3],'inputText':this[_0x434b('0x24')][_0x434b('0x1a')],'userId':this[_0x434b('0x11')]+':'+this['interaction']['id'][_0x434b('0x25')]()};_0x4979aa[_0x434b('0x26')](_0x410138,function(_0x192fc8,_0x266b6e){if(_0x192fc8){logger[_0x434b('0x1f')](_0x434b('0x20'),_0x3d60f3,_0x192fc8[_0x434b('0x24')]);_0x15b896[_0x434b('0xd')]();}else if(_0x266b6e&&_0x266b6e[_0x434b('0x24')]){_0x323747[_0x434b('0x1a')]['amazonlex']=_0x266b6e;_0x285b68[_0x434b('0x1a')]=_0x266b6e[_0x434b('0x24')];_0x285b68['providerName']='amazonlex';_0x285b68[_0x434b('0x27')]=JSON['stringify'](_0x266b6e);return rpc[_0x35e0cd+_0x434b('0x1c')][_0x434b('0x1d')](_0x285b68)[_0x434b('0x28')](function(_0x5d744a){logger['info'](_0x434b('0x20'),_0x3d60f3,_0x285b68[_0x434b('0x1a')]);if(_0x266b6e[_0x434b('0x29')]==_0x434b('0x2a')){_0x15b896[_0x434b('0xd')]();}else{_0x15b896[_0x434b('0x21')]();}})['catch'](function(_0x3d040d){logger[_0x434b('0x1f')]('[%s][AMAZONLEX]\x20%s',_0x3d60f3,JSON[_0x434b('0x2b')](_0x3d040d));_0x15b896[_0x434b('0xd')]();});}else{_0x15b896[_0x434b('0xd')]();}});}}catch(_0x11c513){logger['error']('[%s][AMAZONLEX]\x20%s',_0x3d60f3,JSON[_0x434b('0x2b')](_0x11c513));_0x15b896[_0x434b('0x21')]();}};};
\ No newline at end of file
+var _0x578c=['interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','chat','upperFirst','AccountId','account','created','body','Message','create','then','catch','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','postText','error','message','amazonlex','providerResponse','dialogState','Failed','stop','moment','aws-sdk','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil'];(function(_0xe206ed,_0x179821){var _0x4423ab=function(_0x2668d2){while(--_0x2668d2){_0xe206ed['push'](_0xe206ed['shift']());}};_0x4423ab(++_0x179821);}(_0x578c,0x183));var _0xc578=function(_0x5ba9c9,_0x5922c2){_0x5ba9c9=_0x5ba9c9-0x0;var _0x11a536=_0x578c[_0x5ba9c9];return _0x11a536;};'use strict';var _=require('lodash');var moment=require(_0xc578('0x0'));var AWS=require(_0xc578('0x1'));var utils=require('./utils');var logger=require(_0xc578('0x2'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xc578('0x3')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xc578('0x4')),'faxMessage':require(_0xc578('0x5')),'whatsappMessage':require(_0xc578('0x6'))};exports[_0xc578('0x7')]=function(_0x21d651,_0x4b039c){return function(_0x216be4){try{if(!_[_0xc578('0x8')](this[_0xc578('0x9')][_0xc578('0xa')])){logger[_0xc578('0xb')](_0xc578('0xc'),_0x21d651,_0xc578('0xd'));return _0x216be4[_0xc578('0xe')]();}var _0x486b3e={'ContactId':this[_0xc578('0xf')]['id'],'sentAt':moment()[_0xc578('0x10')](_0xc578('0x11')),'direction':_0xc578('0x12')};if(this[_0xc578('0x13')]===_0xc578('0x14')||this['channel']==='whatsapp'){_0x486b3e['phone']=this[_0xc578('0x9')]['phone'];}var _0xc94f7f=this[_0xc578('0x13')];if(_0xc94f7f===_0xc578('0x15')){_0x486b3e['ChatWebsiteId']=this['account']['id'];}else{_0x486b3e[_[_0xc578('0x16')](_0xc94f7f)+_0xc578('0x17')]=this[_0xc578('0x18')]['id'];}_0x486b3e[_[_0xc578('0x16')](_0xc94f7f)+'InteractionId']=this[_0xc578('0x9')]['id'];if(this[_0xc578('0x9')][_0xc578('0x19')]){var _0x2b15b5=_0x4b039c[0x4];if(!_['isEmpty'](_0x2b15b5)){_0x486b3e[_0xc578('0x1a')]=utils['getMustacheRender'](_0x2b15b5,this);return rpc[_0xc94f7f+_0xc578('0x1b')][_0xc578('0x1c')](_0x486b3e)[_0xc578('0x1d')](function(_0x326628){logger[_0xc578('0xb')](_0xc578('0xc'),_0x21d651,_0x486b3e[_0xc578('0x1a')]);})[_0xc578('0x1e')](function(_0x280780){logger['error'](_0xc578('0xc'),_0x21d651,JSON[_0xc578('0x1f')](_0x280780));})[_0xc578('0x20')](function(){logger[_0xc578('0xb')](_0xc578('0x21'),_0x21d651);_0x216be4['stop']();});}else{logger[_0xc578('0xb')](_0xc578('0x22'),_0x21d651);_0x216be4['stop']();}}else{var _0x19e061=this;var _0x574f4c=new AWS['LexRuntime']({'accessKeyId':_0x4b039c[0x0],'secretAccessKey':_0x4b039c[0x1],'region':_0x4b039c[0x2]});var _0x51805a={'botAlias':_0xc578('0x23'),'botName':_0x4b039c[0x3],'inputText':this['message'][_0xc578('0x1a')],'userId':this[_0xc578('0x13')]+':'+this[_0xc578('0x9')]['id']['toString']()};_0x574f4c[_0xc578('0x24')](_0x51805a,function(_0x3fbfe9,_0x43eb47){if(_0x3fbfe9){logger[_0xc578('0x25')](_0xc578('0xc'),_0x21d651,_0x3fbfe9[_0xc578('0x26')]);_0x216be4[_0xc578('0xe')]();}else if(_0x43eb47&&_0x43eb47[_0xc578('0x26')]){_0x19e061['body'][_0xc578('0x27')]=_0x43eb47;_0x486b3e['body']=_0x43eb47['message'];_0x486b3e['providerName']=_0xc578('0x27');_0x486b3e[_0xc578('0x28')]=JSON['stringify'](_0x43eb47);return rpc[_0xc94f7f+'Message']['create'](_0x486b3e)[_0xc578('0x1d')](function(_0x50870b){logger[_0xc578('0xb')](_0xc578('0xc'),_0x21d651,_0x486b3e[_0xc578('0x1a')]);if(_0x43eb47[_0xc578('0x29')]==_0xc578('0x2a')){_0x216be4[_0xc578('0xe')]();}else{_0x216be4[_0xc578('0x2b')]();}})['catch'](function(_0x1d07c7){logger[_0xc578('0x25')](_0xc578('0xc'),_0x21d651,JSON[_0xc578('0x1f')](_0x1d07c7));_0x216be4[_0xc578('0xe')]();});}else{_0x216be4['next']();}});}}catch(_0x44ab22){logger[_0xc578('0x25')]('[%s][AMAZONLEX]\x20%s',_0x21d651,JSON[_0xc578('0x1f')](_0x44ab22));_0x216be4[_0xc578('0x2b')]();}};};
\ No newline at end of file
index 0a7ea50..a4c280b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba6=['../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','channel','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','body','message','from','phone','read','subject','Re:','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','resolve','lodash','moment','./utils','../../../../config/logger','routing'];(function(_0x125735,_0x57f1ac){var _0x567c48=function(_0x149f32){while(--_0x149f32){_0x125735['push'](_0x125735['shift']());}};_0x567c48(++_0x57f1ac);}(_0x2ba6,0xc7));var _0x62ba=function(_0xa7d585,_0x30f4cf){_0xa7d585=_0xa7d585-0x0;var _0x249ad2=_0x2ba6[_0xa7d585];return _0x249ad2;};'use strict';var _=require(_0x62ba('0x0'));var moment=require(_0x62ba('0x1'));var utils=require(_0x62ba('0x2'));var logger=require(_0x62ba('0x3'))(_0x62ba('0x4'));var rpc={'chatMessage':require(_0x62ba('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x62ba('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x62ba('0x7')),'whatsappMessage':require(_0x62ba('0x8')),'chatInteraction':require(_0x62ba('0x9')),'openchannelInteraction':require(_0x62ba('0xa')),'mailInteraction':require(_0x62ba('0xb')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x62ba('0xc')),'whatsappInteraction':require(_0x62ba('0xd'))};var mailRpc=require(_0x62ba('0xe'));exports['consequence']=function(_0x48d7a4,_0x38d6aa,_0x338ac3,_0x39dd36){return function(_0x366994){try{var _0x2ca7d6=this[_0x62ba('0xf')];if(_0x2ca7d6==='mail'&&_0x39dd36['body'][_0x62ba('0x10')]){logger[_0x62ba('0x11')](_0x62ba('0x12'),_0x48d7a4,_0x62ba('0x13'));return _0x366994[_0x62ba('0x14')]();}if(_0x38d6aa[0x0]==='1'&&(_[_0x62ba('0x15')](this[_0x62ba('0x16')][_0x62ba('0x17')])||!this['interaction']['created'])){logger[_0x62ba('0x11')]('[%s][AUTOREPLY]\x20%s',_0x48d7a4,_0x62ba('0x18'));return _0x366994[_0x62ba('0x14')]();}if(_0x38d6aa[0x0]==='2'&&this['interaction'][_0x62ba('0x19')]){logger[_0x62ba('0x11')](_0x62ba('0x1a'),_0x48d7a4,_0x62ba('0x1b'));return _0x366994['next']();}var _0x4d4a64={'ContactId':this[_0x62ba('0x1c')]['id'],'sentAt':moment()[_0x62ba('0x1d')](_0x62ba('0x1e')),'direction':_0x62ba('0x1f')};if(this[_0x62ba('0xf')]==='mail'){_0x4d4a64['body']=utils[_0x62ba('0x20')](_0x38d6aa[0x2],this);}else{_0x4d4a64[_0x62ba('0x21')]=utils[_0x62ba('0x20')](_0x38d6aa[0x1],this);}if(this[_0x62ba('0x22')]){_0x4d4a64['to']=this['message'][_0x62ba('0x23')]||'';if(this['channel']==='mail'&&_0x38d6aa[0x1]==='1'){_0x4d4a64['cc']=this[_0x62ba('0x22')]['cc']||'';}_0x4d4a64[_0x62ba('0x23')]=this[_0x62ba('0x22')]['to']||'';_0x4d4a64[_0x62ba('0x24')]=this['message'][_0x62ba('0x24')]||'';_0x4d4a64[_0x62ba('0x25')]=!![];if(this[_0x62ba('0x22')][_0x62ba('0x26')]){_0x4d4a64[_0x62ba('0x26')]='';_0x4d4a64['subject']+=_['startsWith'](this[_0x62ba('0x22')]['subject'],_0x62ba('0x27'))?'':'Re:\x20';_0x4d4a64['subject']+=this[_0x62ba('0x22')][_0x62ba('0x26')];}}if(this['channel']===_0x62ba('0x28')){_0x4d4a64[_0x62ba('0x29')]=this[_0x62ba('0x2a')]['id'];}else{_0x4d4a64[_[_0x62ba('0x2b')](this[_0x62ba('0xf')])+_0x62ba('0x2c')]=this[_0x62ba('0x2a')]['id'];}_0x4d4a64[_[_0x62ba('0x2b')](this['channel'])+_0x62ba('0x2d')]=this[_0x62ba('0x16')]['id'];var _0x48ef12=this[_0x62ba('0x16')];if(rpc[this[_0x62ba('0xf')]+'Message']){if(this['channel']==='mail'){_0x4d4a64['inReplyTo']=this[_0x62ba('0x22')][_0x62ba('0x2e')];_0x4d4a64[_0x62ba('0x2f')]=_0x62ba('0x30')+_[_0x62ba('0x31')](_0x4d4a64[_0x62ba('0x21')],_0x62ba('0x32'),_0x62ba('0x33'))+_0x62ba('0x34');_0x4d4a64['headers']={'Auto-Submitted':_0x62ba('0x35'),'X-Auto-Response-Suppress':'All','Precedence':'auto_reply'};return mailRpc[_0x62ba('0x36')](this[_0x62ba('0x2a')][_0x62ba('0x37')],_0x4d4a64)[_0x62ba('0x38')](function(_0x2f36ae){logger[_0x62ba('0x11')](_0x62ba('0x39'),_0x48d7a4);_0x4d4a64['messageId']=_0x2f36ae[_0x62ba('0x22')][_0x62ba('0x2e')];return rpc[_0x2ca7d6+_0x62ba('0x3a')][_0x62ba('0x3b')](_0x4d4a64);})['then'](function(_0x30e9e8){logger[_0x62ba('0x11')](_0x62ba('0x12'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x30e9e8));})[_0x62ba('0x3d')](function(_0x2b2bd8){logger['error'](_0x62ba('0x3e'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x2b2bd8));})['finally'](function(){Promise['resolve']()[_0x62ba('0x38')](function(){if(_0x38d6aa[0x0]!=='2'||_0x48ef12[_0x62ba('0x19')])return;return rpc[_0x2ca7d6+_0x62ba('0x3f')][_0x62ba('0x40')](_0x48ef12['id'],{'autoreplyExecuted':!![]})[_0x62ba('0x38')](function(_0x41c2b5){logger[_0x62ba('0x11')](_0x62ba('0x1a'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x41c2b5));})[_0x62ba('0x3d')](function(_0x18cb11){logger[_0x62ba('0x41')](_0x62ba('0x42'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x18cb11));});})[_0x62ba('0x38')](function(){_0x366994[_0x62ba('0x14')]();});});}else{return rpc[this[_0x62ba('0xf')]+_0x62ba('0x3a')]['create'](_0x4d4a64)[_0x62ba('0x38')](function(){logger[_0x62ba('0x11')](_0x62ba('0x12'),_0x48d7a4,_0x4d4a64[_0x62ba('0x21')]);})[_0x62ba('0x3d')](function(_0x3fd781){logger[_0x62ba('0x41')](_0x62ba('0x12'),_0x48d7a4,JSON['stringify'](_0x3fd781));})['finally'](function(){Promise[_0x62ba('0x43')]()['then'](function(){if(_0x38d6aa[0x0]!=='2'||_0x48ef12[_0x62ba('0x19')])return;return rpc[_0x2ca7d6+_0x62ba('0x3f')][_0x62ba('0x40')](_0x48ef12['id'],{'autoreplyExecuted':!![]})['then'](function(_0x108693){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x48d7a4,JSON['stringify'](_0x108693));})[_0x62ba('0x3d')](function(_0x11151f){logger[_0x62ba('0x41')](_0x62ba('0x42'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x11151f));});})[_0x62ba('0x38')](function(){_0x366994[_0x62ba('0x14')]();});});}}}catch(_0x2f456a){logger[_0x62ba('0x41')](_0x62ba('0x12'),_0x48d7a4,JSON[_0x62ba('0x3c')](_0x2f456a));_0x366994['stop']();}};};
\ No newline at end of file
+var _0xb423=['mail','body','getMustacheRender','message','phone','subject','startsWith','Re:\x20','ChatWebsiteId','upperFirst','AccountId','account','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','sendMailMessage','smtpOptions','then','create','catch','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','autoreplyExecuted','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../mailRpc','channel','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','Autoreply\x20already\x20sent','One\x20Time\x20already\x20sent','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0x533076,_0x2f3d0c){var _0x4e5138=function(_0x1a1a9a){while(--_0x1a1a9a){_0x533076['push'](_0x533076['shift']());}};_0x4e5138(++_0x2f3d0c);}(_0xb423,0x123));var _0x3b42=function(_0x2ae65b,_0x5e255a){_0x2ae65b=_0x2ae65b-0x0;var _0x1d2878=_0xb423[_0x2ae65b];return _0x1d2878;};'use strict';var _=require('lodash');var moment=require(_0x3b42('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x3b42('0x1'));var rpc={'chatMessage':require(_0x3b42('0x2')),'openchannelMessage':require(_0x3b42('0x3')),'mailMessage':require(_0x3b42('0x4')),'smsMessage':require(_0x3b42('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x3b42('0x6')),'chatInteraction':require(_0x3b42('0x7')),'openchannelInteraction':require(_0x3b42('0x8')),'mailInteraction':require(_0x3b42('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x3b42('0xa'));exports['consequence']=function(_0x407434,_0x469229,_0x2418c7,_0x4a0ca7){return function(_0x516681){try{var _0x2e3a1d=this[_0x3b42('0xb')];if(_0x2e3a1d==='mail'&&_0x4a0ca7['body'][_0x3b42('0xc')]){logger[_0x3b42('0xd')](_0x3b42('0xe'),_0x407434,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x516681[_0x3b42('0xf')]();}if(_0x469229[0x0]==='1'&&(_[_0x3b42('0x10')](this[_0x3b42('0x11')][_0x3b42('0x12')])||!this[_0x3b42('0x11')][_0x3b42('0x12')])){logger[_0x3b42('0xd')](_0x3b42('0xe'),_0x407434,_0x3b42('0x13'));return _0x516681['next']();}if(_0x469229[0x0]==='2'&&this[_0x3b42('0x11')]['autoreplyExecuted']){logger[_0x3b42('0xd')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x407434,_0x3b42('0x14'));return _0x516681['next']();}var _0x38be8e={'ContactId':this['contact']['id'],'sentAt':moment()[_0x3b42('0x15')](_0x3b42('0x16')),'direction':_0x3b42('0x17')};if(this[_0x3b42('0xb')]===_0x3b42('0x18')){_0x38be8e[_0x3b42('0x19')]=utils[_0x3b42('0x1a')](_0x469229[0x2],this);}else{_0x38be8e['body']=utils[_0x3b42('0x1a')](_0x469229[0x1],this);}if(this[_0x3b42('0x1b')]){_0x38be8e['to']=this[_0x3b42('0x1b')]['from']||'';if(this[_0x3b42('0xb')]===_0x3b42('0x18')&&_0x469229[0x1]==='1'){_0x38be8e['cc']=this['message']['cc']||'';}_0x38be8e['from']=this[_0x3b42('0x1b')]['to']||'';_0x38be8e[_0x3b42('0x1c')]=this[_0x3b42('0x1b')][_0x3b42('0x1c')]||'';_0x38be8e['read']=!![];if(this[_0x3b42('0x1b')][_0x3b42('0x1d')]){_0x38be8e[_0x3b42('0x1d')]='';_0x38be8e['subject']+=_[_0x3b42('0x1e')](this[_0x3b42('0x1b')][_0x3b42('0x1d')],'Re:')?'':_0x3b42('0x1f');_0x38be8e[_0x3b42('0x1d')]+=this[_0x3b42('0x1b')]['subject'];}}if(this[_0x3b42('0xb')]==='chat'){_0x38be8e[_0x3b42('0x20')]=this['account']['id'];}else{_0x38be8e[_[_0x3b42('0x21')](this[_0x3b42('0xb')])+_0x3b42('0x22')]=this[_0x3b42('0x23')]['id'];}_0x38be8e[_['upperFirst'](this[_0x3b42('0xb')])+'InteractionId']=this['interaction']['id'];var _0x539d50=this[_0x3b42('0x11')];if(rpc[this[_0x3b42('0xb')]+_0x3b42('0x24')]){if(this['channel']===_0x3b42('0x18')){_0x38be8e[_0x3b42('0x25')]=this[_0x3b42('0x1b')][_0x3b42('0x26')];_0x38be8e[_0x3b42('0x27')]=_0x3b42('0x28')+_['replace'](_0x38be8e[_0x3b42('0x19')],_0x3b42('0x29'),_0x3b42('0x2a'))+_0x3b42('0x2b');_0x38be8e[_0x3b42('0x2c')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x3b42('0x2d'),'Precedence':_0x3b42('0x2e')};return mailRpc[_0x3b42('0x2f')](this[_0x3b42('0x23')][_0x3b42('0x30')],_0x38be8e)[_0x3b42('0x31')](function(_0x38e8fd){logger[_0x3b42('0xd')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x407434);_0x38be8e[_0x3b42('0x26')]=_0x38e8fd[_0x3b42('0x1b')][_0x3b42('0x26')];return rpc[_0x2e3a1d+_0x3b42('0x24')][_0x3b42('0x32')](_0x38be8e);})[_0x3b42('0x31')](function(_0x167e10){logger[_0x3b42('0xd')](_0x3b42('0xe'),_0x407434,JSON['stringify'](_0x167e10));})[_0x3b42('0x33')](function(_0xf26ef3){logger[_0x3b42('0x34')](_0x3b42('0x35'),_0x407434,JSON[_0x3b42('0x36')](_0xf26ef3));})[_0x3b42('0x37')](function(){Promise[_0x3b42('0x38')]()[_0x3b42('0x31')](function(){if(_0x469229[0x0]!=='2'||_0x539d50[_0x3b42('0x39')])return;return rpc[_0x2e3a1d+_0x3b42('0x3a')][_0x3b42('0x3b')](_0x539d50['id'],{'autoreplyExecuted':!![]})[_0x3b42('0x31')](function(_0x3c452b){logger[_0x3b42('0xd')](_0x3b42('0x3c'),_0x407434,JSON[_0x3b42('0x36')](_0x3c452b));})[_0x3b42('0x33')](function(_0x2776f4){logger[_0x3b42('0x34')](_0x3b42('0x3d'),_0x407434,JSON[_0x3b42('0x36')](_0x2776f4));});})[_0x3b42('0x31')](function(){_0x516681[_0x3b42('0xf')]();});});}else{return rpc[this['channel']+'Message'][_0x3b42('0x32')](_0x38be8e)[_0x3b42('0x31')](function(){logger[_0x3b42('0xd')](_0x3b42('0xe'),_0x407434,_0x38be8e[_0x3b42('0x19')]);})[_0x3b42('0x33')](function(_0x2db1d4){logger['error'](_0x3b42('0xe'),_0x407434,JSON[_0x3b42('0x36')](_0x2db1d4));})[_0x3b42('0x37')](function(){Promise[_0x3b42('0x38')]()[_0x3b42('0x31')](function(){if(_0x469229[0x0]!=='2'||_0x539d50['autoreplyExecuted'])return;return rpc[_0x2e3a1d+_0x3b42('0x3a')][_0x3b42('0x3b')](_0x539d50['id'],{'autoreplyExecuted':!![]})['then'](function(_0x219a6c){logger['info'](_0x3b42('0x3c'),_0x407434,JSON[_0x3b42('0x36')](_0x219a6c));})['catch'](function(_0x16d05e){logger[_0x3b42('0x34')](_0x3b42('0x3d'),_0x407434,JSON[_0x3b42('0x36')](_0x16d05e));});})[_0x3b42('0x31')](function(){_0x516681[_0x3b42('0xf')]();});});}}}catch(_0x227644){logger[_0x3b42('0x34')](_0x3b42('0xe'),_0x407434,JSON[_0x3b42('0x36')](_0x227644));_0x516681[_0x3b42('0x3e')]();}};};
\ No newline at end of file
index bc032a6..4644790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6588=['routing','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','[%s][CLOSE]\x20reason\x20%s','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','stringify','finally','stop','[%s][CLOSE]\x20%s','moment','../../../../config/logger'];(function(_0x4854d6,_0x2f1264){var _0x3885c0=function(_0x4d564d){while(--_0x4d564d){_0x4854d6['push'](_0x4854d6['shift']());}};_0x3885c0(++_0x2f1264);}(_0x6588,0x1e2));var _0x8658=function(_0x5aaf93,_0x5c0001){_0x5aaf93=_0x5aaf93-0x0;var _0x17d307=_0x6588[_0x5aaf93];return _0x17d307;};'use strict';var moment=require(_0x8658('0x0'));var logger=require(_0x8658('0x1'))(_0x8658('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x8658('0x3')),'mailInteraction':require(_0x8658('0x4')),'faxInteraction':require(_0x8658('0x5')),'whatsappInteraction':require(_0x8658('0x6'))};exports['consequence']=function(_0xb26803,_0x554dd8,_0x9121a6,_0x424550){return function(_0x3b91a0){try{logger[_0x8658('0x7')](_0x8658('0x8'),_0xb26803,_0x554dd8[0x0]);var _0x13cbb8={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x8658('0x9'),'disposition':_0x554dd8[0x0]};if(rpc[_0x424550[_0x8658('0xa')]+_0x8658('0xb')]){rpc[_0x424550['channel']+_0x8658('0xb')][_0x8658('0xc')](_0x424550[_0x8658('0xd')]['id'],_0x13cbb8)[_0x8658('0xe')](function(_0x178d30){logger['info'](_0x8658('0xf'),_0xb26803,_0x424550[_0x8658('0xd')]['id']);})[_0x8658('0x10')](function(_0x165514){logger[_0x8658('0x11')]('[%s][CLOSE]\x20%s',_0xb26803,JSON[_0x8658('0x12')](_0x165514));})[_0x8658('0x13')](function(){_0x3b91a0[_0x8658('0x14')]();});}}catch(_0x402bd2){logger[_0x8658('0x11')](_0x8658('0x15'),_0xb26803,JSON[_0x8658('0x12')](_0x402bd2));_0x3b91a0['stop']();}};};
\ No newline at end of file
+var _0x587d=['moment','../../../../config/logger','routing','../../rpc/faxInteraction','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','stop'];(function(_0x3d1e25,_0x251b4d){var _0x78b4d5=function(_0x47618f){while(--_0x47618f){_0x3d1e25['push'](_0x3d1e25['shift']());}};_0x78b4d5(++_0x251b4d);}(_0x587d,0x187));var _0xd587=function(_0x22b6f2,_0x34b6f5){_0x22b6f2=_0x22b6f2-0x0;var _0x598b54=_0x587d[_0x22b6f2];return _0x598b54;};'use strict';var moment=require(_0xd587('0x0'));var logger=require(_0xd587('0x1'))(_0xd587('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xd587('0x3')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x429322,_0x5309b7,_0x526be0,_0x3bf2ac){return function(_0xf31c1b){try{logger['info'](_0xd587('0x4'),_0x429322,_0x5309b7[0x0]);var _0x2c1b0e={'closed':0x1,'closedAt':moment()[_0xd587('0x5')](_0xd587('0x6')),'closeReason':'system','disposition':_0x5309b7[0x0]};if(rpc[_0x3bf2ac[_0xd587('0x7')]+_0xd587('0x8')]){rpc[_0x3bf2ac[_0xd587('0x7')]+_0xd587('0x8')][_0xd587('0x9')](_0x3bf2ac[_0xd587('0xa')]['id'],_0x2c1b0e)['then'](function(_0x271e90){logger['info'](_0xd587('0xb'),_0x429322,_0x3bf2ac[_0xd587('0xa')]['id']);})[_0xd587('0xc')](function(_0x2ecf88){logger[_0xd587('0xd')](_0xd587('0xe'),_0x429322,JSON[_0xd587('0xf')](_0x2ecf88));})['finally'](function(){_0xf31c1b[_0xd587('0x10')]();});}}catch(_0x124d8d){logger[_0xd587('0xd')](_0xd587('0xe'),_0x429322,JSON['stringify'](_0x124d8d));_0xf31c1b[_0xd587('0x10')]();}};};
\ No newline at end of file
index 13653b4..d7d7df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bce=['channel','phone','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','body','Message','create','then','info','catch','error','stringify','finally','stop','message','dialogflow','result','fulfillment','speech','providerName','metadata','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms'];(function(_0x3328db,_0x298576){var _0x478e6a=function(_0x5a8590){while(--_0x5a8590){_0x3328db['push'](_0x3328db['shift']());}};_0x478e6a(++_0x298576);}(_0x1bce,0x73));var _0xe1bc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1bce[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe1bc('0x0'));var moment=require(_0xe1bc('0x1'));var apiai=require('apiai-promise');var md5=require(_0xe1bc('0x2'));var utils=require(_0xe1bc('0x3'));var logger=require(_0xe1bc('0x4'))(_0xe1bc('0x5'));var rpc={'chatMessage':require(_0xe1bc('0x6')),'openchannelMessage':require(_0xe1bc('0x7')),'mailMessage':require(_0xe1bc('0x8')),'smsMessage':require(_0xe1bc('0x9')),'faxMessage':require(_0xe1bc('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x324c27,_0x4199ff){return function(_0x24b695){try{if(!_[_0xe1bc('0xb')](this[_0xe1bc('0xc')][_0xe1bc('0xd')])){logger['info'](_0xe1bc('0xe'),_0x324c27,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x24b695[_0xe1bc('0xf')]();}var _0x355757={'ContactId':this[_0xe1bc('0x10')]['id'],'sentAt':moment()['format'](_0xe1bc('0x11')),'direction':_0xe1bc('0x12')};if(this['channel']===_0xe1bc('0x13')||this[_0xe1bc('0x14')]==='whatsapp'){_0x355757['phone']=this[_0xe1bc('0xc')][_0xe1bc('0x15')];}var _0x280679=this['channel'];if(_0x280679==='chat'){_0x355757[_0xe1bc('0x16')]=this[_0xe1bc('0x17')]['id'];}else{_0x355757[_[_0xe1bc('0x18')](_0x280679)+'AccountId']=this[_0xe1bc('0x17')]['id'];}_0x355757[_[_0xe1bc('0x18')](_0x280679)+_0xe1bc('0x19')]=this[_0xe1bc('0xc')]['id'];if(this['interaction'][_0xe1bc('0x1a')]){var _0x4a432f=_0x4199ff[0x2];if(!_[_0xe1bc('0x1b')](_0x4a432f)){_0x355757[_0xe1bc('0x1c')]=utils['getMustacheRender'](_0x4a432f,this);return rpc[_0x280679+_0xe1bc('0x1d')][_0xe1bc('0x1e')](_0x355757)[_0xe1bc('0x1f')](function(_0x3fd489){logger[_0xe1bc('0x20')](_0xe1bc('0xe'),_0x324c27,_0x355757['body']);})[_0xe1bc('0x21')](function(_0x4b22ef){logger[_0xe1bc('0x22')](_0xe1bc('0xe'),_0x324c27,JSON[_0xe1bc('0x23')](_0x4b22ef));})[_0xe1bc('0x24')](function(){logger[_0xe1bc('0x20')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x324c27);_0x24b695[_0xe1bc('0x25')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x324c27);_0x24b695[_0xe1bc('0x25')]();}}else{var _0x2a999c=this;var _0x5cc42d=apiai(_0x4199ff[0x0],{'language':_0x4199ff[0x1]||'en'});return _0x5cc42d['textRequest'](this[_0xe1bc('0x26')][_0xe1bc('0x1c')],{'sessionId':md5(this[_0xe1bc('0xc')]['id'])})[_0xe1bc('0x1f')](function(_0x229b43){_0x2a999c[_0xe1bc('0x1c')][_0xe1bc('0x27')]=_0x229b43;_0x355757[_0xe1bc('0x1c')]=_0x229b43[_0xe1bc('0x28')][_0xe1bc('0x29')][_0xe1bc('0x2a')];_0x355757[_0xe1bc('0x2b')]=_0xe1bc('0x27');_0x355757['providerResponse']=JSON['stringify'](_0x229b43);return rpc[_0x280679+_0xe1bc('0x1d')]['create'](_0x355757)[_0xe1bc('0x1f')](function(_0x5f1596){logger[_0xe1bc('0x20')]('[%s][DIALOGFLOW]\x20%s',_0x324c27,_0x355757['body']);if(_0x229b43[_0xe1bc('0x28')][_0xe1bc('0x2c')]['endConversation']){_0x24b695['next']();}else{_0x24b695[_0xe1bc('0x25')]();}})[_0xe1bc('0x21')](function(_0x345da1){logger[_0xe1bc('0x22')](_0xe1bc('0xe'),_0x324c27,JSON[_0xe1bc('0x23')](_0x345da1));_0x24b695[_0xe1bc('0xf')]();});})[_0xe1bc('0x21')](function(_0x32bedb){logger['error'](_0xe1bc('0xe'),_0x324c27,_0x32bedb[_0xe1bc('0x26')]);_0x24b695[_0xe1bc('0xf')]();});}}catch(_0x4dab2a){logger[_0xe1bc('0x22')](_0xe1bc('0xe'),_0x324c27,JSON[_0xe1bc('0x23')](_0x4dab2a));_0x24b695[_0xe1bc('0x25')]();}};};
\ No newline at end of file
+var _0x7ebb=['../../rpc/whatsappMessage','consequence','isNil','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','create','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','then','dialogflow','result','speech','providerResponse','metadata','endConversation','catch','error','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x496e9e,_0x5396df){var _0x49b0d9=function(_0x82905d){while(--_0x82905d){_0x496e9e['push'](_0x496e9e['shift']());}};_0x49b0d9(++_0x5396df);}(_0x7ebb,0x161));var _0xb7eb=function(_0x428f39,_0x352a3d){_0x428f39=_0x428f39-0x0;var _0x20135a=_0x7ebb[_0x428f39];return _0x20135a;};'use strict';var _=require(_0xb7eb('0x0'));var moment=require(_0xb7eb('0x1'));var apiai=require(_0xb7eb('0x2'));var md5=require(_0xb7eb('0x3'));var utils=require(_0xb7eb('0x4'));var logger=require(_0xb7eb('0x5'))(_0xb7eb('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xb7eb('0x7')),'mailMessage':require(_0xb7eb('0x8')),'smsMessage':require(_0xb7eb('0x9')),'faxMessage':require(_0xb7eb('0xa')),'whatsappMessage':require(_0xb7eb('0xb'))};exports[_0xb7eb('0xc')]=function(_0x2b53b1,_0x1b8cc5){return function(_0x282eb0){try{if(!_[_0xb7eb('0xd')](this['interaction']['UserId'])){logger[_0xb7eb('0xe')](_0xb7eb('0xf'),_0x2b53b1,_0xb7eb('0x10'));return _0x282eb0[_0xb7eb('0x11')]();}var _0x47d0d4={'ContactId':this[_0xb7eb('0x12')]['id'],'sentAt':moment()[_0xb7eb('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xb7eb('0x14')};if(this[_0xb7eb('0x15')]===_0xb7eb('0x16')||this[_0xb7eb('0x15')]===_0xb7eb('0x17')){_0x47d0d4[_0xb7eb('0x18')]=this[_0xb7eb('0x19')]['phone'];}var _0x2d30ce=this[_0xb7eb('0x15')];if(_0x2d30ce===_0xb7eb('0x1a')){_0x47d0d4['ChatWebsiteId']=this[_0xb7eb('0x1b')]['id'];}else{_0x47d0d4[_[_0xb7eb('0x1c')](_0x2d30ce)+_0xb7eb('0x1d')]=this[_0xb7eb('0x1b')]['id'];}_0x47d0d4[_['upperFirst'](_0x2d30ce)+_0xb7eb('0x1e')]=this['interaction']['id'];if(this[_0xb7eb('0x19')][_0xb7eb('0x1f')]){var _0x403130=_0x1b8cc5[0x2];if(!_['isEmpty'](_0x403130)){_0x47d0d4[_0xb7eb('0x20')]=utils[_0xb7eb('0x21')](_0x403130,this);return rpc[_0x2d30ce+_0xb7eb('0x22')][_0xb7eb('0x23')](_0x47d0d4)['then'](function(_0x36fc4d){logger['info'](_0xb7eb('0xf'),_0x2b53b1,_0x47d0d4[_0xb7eb('0x20')]);})['catch'](function(_0xd0ca41){logger['error'](_0xb7eb('0xf'),_0x2b53b1,JSON[_0xb7eb('0x24')](_0xd0ca41));})[_0xb7eb('0x25')](function(){logger[_0xb7eb('0xe')](_0xb7eb('0x26'),_0x2b53b1);_0x282eb0[_0xb7eb('0x27')]();});}else{logger[_0xb7eb('0xe')](_0xb7eb('0x28'),_0x2b53b1);_0x282eb0[_0xb7eb('0x27')]();}}else{var _0x4c5cc8=this;var _0x53071f=apiai(_0x1b8cc5[0x0],{'language':_0x1b8cc5[0x1]||'en'});return _0x53071f[_0xb7eb('0x29')](this[_0xb7eb('0x2a')][_0xb7eb('0x20')],{'sessionId':md5(this[_0xb7eb('0x19')]['id'])})[_0xb7eb('0x2b')](function(_0x5bdadf){_0x4c5cc8[_0xb7eb('0x20')][_0xb7eb('0x2c')]=_0x5bdadf;_0x47d0d4[_0xb7eb('0x20')]=_0x5bdadf[_0xb7eb('0x2d')]['fulfillment'][_0xb7eb('0x2e')];_0x47d0d4['providerName']=_0xb7eb('0x2c');_0x47d0d4[_0xb7eb('0x2f')]=JSON[_0xb7eb('0x24')](_0x5bdadf);return rpc[_0x2d30ce+'Message'][_0xb7eb('0x23')](_0x47d0d4)[_0xb7eb('0x2b')](function(_0xfb79c2){logger[_0xb7eb('0xe')](_0xb7eb('0xf'),_0x2b53b1,_0x47d0d4[_0xb7eb('0x20')]);if(_0x5bdadf[_0xb7eb('0x2d')][_0xb7eb('0x30')][_0xb7eb('0x31')]){_0x282eb0[_0xb7eb('0x11')]();}else{_0x282eb0[_0xb7eb('0x27')]();}})[_0xb7eb('0x32')](function(_0x2d19bf){logger['error'](_0xb7eb('0xf'),_0x2b53b1,JSON['stringify'](_0x2d19bf));_0x282eb0[_0xb7eb('0x11')]();});})['catch'](function(_0x409045){logger[_0xb7eb('0x33')]('[%s][DIALOGFLOW]\x20%s',_0x2b53b1,_0x409045[_0xb7eb('0x2a')]);_0x282eb0[_0xb7eb('0x11')]();});}}catch(_0x467657){logger['error'](_0xb7eb('0xf'),_0x2b53b1,JSON[_0xb7eb('0x24')](_0x467657));_0x282eb0[_0xb7eb('0x27')]();}};};
\ No newline at end of file
index 80c809a..0933e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0385=['info','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','isNil','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','create','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','all','catch','next','dialogflow','md5','moment','bluebird','../../../../config/logger','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','body','Message','then'];(function(_0x5ca81f,_0x26d64c){var _0x1ea8be=function(_0x5bf3b0){while(--_0x5bf3b0){_0x5ca81f['push'](_0x5ca81f['shift']());}};_0x1ea8be(++_0x26d64c);}(_0x0385,0x108));var _0x5038=function(_0x515846,_0x3ebfad){_0x515846=_0x515846-0x0;var _0x38c2ea=_0x0385[_0x515846];return _0x38c2ea;};'use strict';var _=require('lodash');var dialogflow=require(_0x5038('0x0'));var md5=require(_0x5038('0x1'));var moment=require(_0x5038('0x2'));var Promise=require(_0x5038('0x3'));var logger=require(_0x5038('0x4'))('routing');var utils=require(_0x5038('0x5'));var rpc={'chatMessage':require(_0x5038('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x5038('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x5038('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x33e4dc,_0x5b27c5,_0x54177e,_0x14e1d2){return new Promise(function(_0x8d07ce,_0x5d5b39){var _0x2e64bb=_['clone'](_0x54177e);_0x2e64bb[_0x5038('0x9')]=_0x14e1d2;return rpc[_0x5b27c5+_0x5038('0xa')]['create'](_0x2e64bb)[_0x5038('0xb')](function(){logger[_0x5038('0xc')](_0x5038('0xd'),_0x33e4dc,_0x2e64bb[_0x5038('0x9')]);_0x8d07ce();})['catch'](function(_0x76c18a){logger[_0x5038('0xe')](_0x5038('0xd'),_0x33e4dc,JSON[_0x5038('0xf')](_0x76c18a));_0x5d5b39(_0x76c18a);});});}exports[_0x5038('0x10')]=function(_0x353983,_0x292db1){return function(_0x1e868b){try{if(!_[_0x5038('0x11')](this[_0x5038('0x12')]['UserId'])){logger['info'](_0x5038('0xd'),_0x353983,_0x5038('0x13'));return _0x1e868b['next']();}var _0x1ad43a={'ContactId':this[_0x5038('0x14')]['id'],'sentAt':moment()[_0x5038('0x15')](_0x5038('0x16')),'direction':_0x5038('0x17')};if(this[_0x5038('0x18')]===_0x5038('0x19')||this[_0x5038('0x18')]===_0x5038('0x1a')){_0x1ad43a[_0x5038('0x1b')]=this['interaction'][_0x5038('0x1b')];}var _0x1e1c57=this[_0x5038('0x18')];if(_0x1e1c57==='chat'){_0x1ad43a[_0x5038('0x1c')]=this[_0x5038('0x1d')]['id'];}else{_0x1ad43a[_[_0x5038('0x1e')](_0x1e1c57)+_0x5038('0x1f')]=this[_0x5038('0x1d')]['id'];}_0x1ad43a[_[_0x5038('0x1e')](_0x1e1c57)+_0x5038('0x20')]=this[_0x5038('0x12')]['id'];if(this[_0x5038('0x12')][_0x5038('0x21')]){var _0x712401=_0x292db1[0x4];if(!_[_0x5038('0x22')](_0x712401)){_0x1ad43a[_0x5038('0x9')]=utils['getMustacheRender'](_0x712401,this);return rpc[_0x1e1c57+_0x5038('0xa')][_0x5038('0x23')](_0x1ad43a)['then'](function(_0x19b78c){logger[_0x5038('0xc')](_0x5038('0xd'),_0x353983,_0x1ad43a[_0x5038('0x9')]);})['catch'](function(_0x2e8c34){logger['error'](_0x5038('0xd'),_0x353983,JSON[_0x5038('0xf')](_0x2e8c34));})[_0x5038('0x24')](function(){logger[_0x5038('0xc')](_0x5038('0x25'),_0x353983);_0x1e868b['stop']();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x353983);_0x1e868b[_0x5038('0x26')]();}}else{var _0x32959b=this;var _0x43fabf=_0x292db1[0x2][_0x5038('0x27')](/\\n/g,'\x0a');var _0x22744c={'credentials':{'private_key':_0x43fabf,'client_email':_0x292db1[0x1]}};var _0x32974b=new dialogflow[(_0x5038('0x28'))](_0x22744c);var _0x8bef0c=_0x32974b[_0x5038('0x29')](_0x292db1[0x0],md5(_0x32959b[_0x5038('0x12')]['id']));var _0x266827={'session':_0x8bef0c,'queryInput':{'text':{'text':_0x32959b[_0x5038('0x2a')][_0x5038('0x9')],'languageCode':_0x292db1[0x3]||'en'}}};return _0x32974b[_0x5038('0x2b')](_0x266827)[_0x5038('0xb')](function(_0x33c71a){if(_0x33c71a&&_0x33c71a[_0x5038('0x2c')]){_0x32959b[_0x5038('0x9')]['dialogflowV2']=_0x33c71a;var _0x408cd8=_0x33c71a[0x0];var _0x4d447d=_0x408cd8[_0x5038('0x2d')][_0x5038('0x2e')]&&_0x408cd8['queryResult'][_0x5038('0x2e')]['fields']?_0x408cd8[_0x5038('0x2d')][_0x5038('0x2e')][_0x5038('0x2f')][_0x5038('0x30')][_0x5038('0x31')]:![];_0x32959b[_0x5038('0x9')]['DIALOGFLOWV2_ACTION']=_0x408cd8[_0x5038('0x2d')][_0x5038('0x32')];_0x32959b[_0x5038('0x9')][_0x5038('0x33')]=_0x408cd8[_0x5038('0x2d')][_0x5038('0x34')];_0x32959b[_0x5038('0x9')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x408cd8[_0x5038('0x2d')]['diagnosticInfo']&&_0x408cd8[_0x5038('0x2d')][_0x5038('0x2e')]['fields']?_0x408cd8[_0x5038('0x2d')][_0x5038('0x2e')][_0x5038('0x2f')][_0x5038('0x30')][_0x5038('0x31')]:![];_0x32959b[_0x5038('0x9')][_0x5038('0x35')]=_0x408cd8[_0x5038('0x2d')][_0x5038('0x36')][_0x5038('0x37')];_0x32959b['body'][_0x5038('0x38')]=_0x408cd8[_0x5038('0x2d')][_0x5038('0x36')][_0x5038('0x39')];_0x32959b[_0x5038('0x9')][_0x5038('0x3a')]=_0x408cd8[_0x5038('0x2d')][_0x5038('0x36')]['isFallback'];_0x32959b['body'][_0x5038('0x3b')]=_0x408cd8[_0x5038('0x2d')]['languageCode'];_0x32959b[_0x5038('0x9')][_0x5038('0x3c')]=_0x408cd8['queryResult'][_0x5038('0x3d')];_0x32959b[_0x5038('0x9')][_0x5038('0x3e')]=_0x408cd8[_0x5038('0x2d')][_0x5038('0x3f')];_0x1ad43a[_0x5038('0x40')]='dialogflowV2';_0x1ad43a[_0x5038('0x41')]=JSON[_0x5038('0xf')](_0x33c71a);var _0x4a12e6=[];for(var _0x5560c3=0x0;_0x5560c3<_0x33c71a[_0x5038('0x2c')];_0x5560c3++){var _0x91347e=_0x33c71a[_0x5560c3];if(_0x91347e&&_0x91347e[_0x5038('0x2d')]&&_0x91347e['queryResult']['fulfillmentText']){_0x4a12e6['push'](createMessage(_0x353983,_0x1e1c57,_0x1ad43a,_0x91347e[_0x5038('0x2d')]['fulfillmentText']));}}return Promise[_0x5038('0x42')](_0x4a12e6)[_0x5038('0xb')](function(){if(_0x4d447d){_0x1e868b['next']();}else{_0x1e868b[_0x5038('0x26')]();}})[_0x5038('0x43')](function(_0x28dbce){logger[_0x5038('0xe')](_0x5038('0xd'),_0x353983,JSON[_0x5038('0xf')](_0x28dbce));_0x1e868b[_0x5038('0x44')]();});}})[_0x5038('0x43')](function(_0x42ced3){logger[_0x5038('0xe')](_0x5038('0xd'),_0x353983,_0x42ced3['message']);_0x1e868b[_0x5038('0x44')]();});}}catch(_0x8e7103){logger[_0x5038('0xe')](_0x5038('0xd'),_0x353983,JSON[_0x5038('0xf')](_0x8e7103));_0x1e868b[_0x5038('0x26')]();}};};
\ No newline at end of file
+var _0x0da2=['boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','providerName','providerResponse','fulfillmentText','push','all','next','lodash','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','stringify','consequence','isNil','interaction','UserId','contact','format','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','error','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation'];(function(_0x10ee18,_0x16a291){var _0xd8c465=function(_0x4a593a){while(--_0x4a593a){_0x10ee18['push'](_0x10ee18['shift']());}};_0xd8c465(++_0x16a291);}(_0x0da2,0x1bb));var _0x20da=function(_0x5486e5,_0x97d4ed){_0x5486e5=_0x5486e5-0x0;var _0x13267f=_0x0da2[_0x5486e5];return _0x13267f;};'use strict';var _=require(_0x20da('0x0'));var dialogflow=require(_0x20da('0x1'));var md5=require(_0x20da('0x2'));var moment=require(_0x20da('0x3'));var Promise=require(_0x20da('0x4'));var logger=require('../../../../config/logger')(_0x20da('0x5'));var utils=require(_0x20da('0x6'));var rpc={'chatMessage':require(_0x20da('0x7')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x20da('0x8')),'smsMessage':require(_0x20da('0x9')),'faxMessage':require(_0x20da('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x2c94bc,_0x270211,_0x5ae8de,_0x192d5f){return new Promise(function(_0x22a974,_0x5752c5){var _0x22df5a=_[_0x20da('0xb')](_0x5ae8de);_0x22df5a[_0x20da('0xc')]=_0x192d5f;return rpc[_0x270211+_0x20da('0xd')][_0x20da('0xe')](_0x22df5a)[_0x20da('0xf')](function(){logger[_0x20da('0x10')](_0x20da('0x11'),_0x2c94bc,_0x22df5a[_0x20da('0xc')]);_0x22a974();})[_0x20da('0x12')](function(_0x4c1d45){logger['error'](_0x20da('0x11'),_0x2c94bc,JSON[_0x20da('0x13')](_0x4c1d45));_0x5752c5(_0x4c1d45);});});}exports[_0x20da('0x14')]=function(_0x448191,_0x29aa01){return function(_0x512a28){try{if(!_[_0x20da('0x15')](this[_0x20da('0x16')][_0x20da('0x17')])){logger[_0x20da('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x448191,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x512a28['next']();}var _0x4e42ff={'ContactId':this[_0x20da('0x18')]['id'],'sentAt':moment()[_0x20da('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x20da('0x1a')};if(this[_0x20da('0x1b')]===_0x20da('0x1c')||this[_0x20da('0x1b')]===_0x20da('0x1d')){_0x4e42ff[_0x20da('0x1e')]=this['interaction'][_0x20da('0x1e')];}var _0x1ac23f=this[_0x20da('0x1b')];if(_0x1ac23f===_0x20da('0x1f')){_0x4e42ff[_0x20da('0x20')]=this[_0x20da('0x21')]['id'];}else{_0x4e42ff[_[_0x20da('0x22')](_0x1ac23f)+_0x20da('0x23')]=this['account']['id'];}_0x4e42ff[_['upperFirst'](_0x1ac23f)+_0x20da('0x24')]=this[_0x20da('0x16')]['id'];if(this[_0x20da('0x16')]['created']){var _0xd5ba7=_0x29aa01[0x4];if(!_[_0x20da('0x25')](_0xd5ba7)){_0x4e42ff[_0x20da('0xc')]=utils[_0x20da('0x26')](_0xd5ba7,this);return rpc[_0x1ac23f+_0x20da('0xd')][_0x20da('0xe')](_0x4e42ff)['then'](function(_0x436d0d){logger['info'](_0x20da('0x11'),_0x448191,_0x4e42ff[_0x20da('0xc')]);})[_0x20da('0x12')](function(_0x177848){logger[_0x20da('0x27')](_0x20da('0x11'),_0x448191,JSON[_0x20da('0x13')](_0x177848));})[_0x20da('0x28')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x448191);_0x512a28[_0x20da('0x29')]();});}else{logger['info'](_0x20da('0x2a'),_0x448191);_0x512a28[_0x20da('0x29')]();}}else{var _0x4c5978=this;var _0x43c2ad=_0x29aa01[0x2][_0x20da('0x2b')](/\\n/g,'\x0a');var _0x5a7c7b={'credentials':{'private_key':_0x43c2ad,'client_email':_0x29aa01[0x1]}};var _0x4f1c63=new dialogflow[(_0x20da('0x2c'))](_0x5a7c7b);var _0x1b0648=_0x4f1c63[_0x20da('0x2d')](_0x29aa01[0x0],md5(_0x4c5978[_0x20da('0x16')]['id']));var _0x3a873e={'session':_0x1b0648,'queryInput':{'text':{'text':_0x4c5978[_0x20da('0x2e')]['body'],'languageCode':_0x29aa01[0x3]||'en'}}};return _0x4f1c63[_0x20da('0x2f')](_0x3a873e)[_0x20da('0xf')](function(_0x5c0319){if(_0x5c0319&&_0x5c0319[_0x20da('0x30')]){_0x4c5978[_0x20da('0xc')][_0x20da('0x31')]=_0x5c0319;var _0x338ba1=_0x5c0319[0x0];var _0x1a415c=_0x338ba1[_0x20da('0x32')][_0x20da('0x33')]&&_0x338ba1[_0x20da('0x32')][_0x20da('0x33')][_0x20da('0x34')]?_0x338ba1[_0x20da('0x32')][_0x20da('0x33')]['fields'][_0x20da('0x35')][_0x20da('0x36')]:![];_0x4c5978['body']['DIALOGFLOWV2_ACTION']=_0x338ba1['queryResult'][_0x20da('0x37')];_0x4c5978[_0x20da('0xc')][_0x20da('0x38')]=_0x338ba1[_0x20da('0x32')]['allRequiredParamsPresent'];_0x4c5978[_0x20da('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x338ba1[_0x20da('0x32')]['diagnosticInfo']&&_0x338ba1[_0x20da('0x32')]['diagnosticInfo'][_0x20da('0x34')]?_0x338ba1[_0x20da('0x32')][_0x20da('0x33')][_0x20da('0x34')][_0x20da('0x35')][_0x20da('0x36')]:![];_0x4c5978['body'][_0x20da('0x39')]=_0x338ba1[_0x20da('0x32')]['intent'][_0x20da('0x3a')];_0x4c5978[_0x20da('0xc')][_0x20da('0x3b')]=_0x338ba1['queryResult']['intent'][_0x20da('0x3c')];_0x4c5978['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x338ba1[_0x20da('0x32')]['intent'][_0x20da('0x3d')];_0x4c5978[_0x20da('0xc')][_0x20da('0x3e')]=_0x338ba1[_0x20da('0x32')][_0x20da('0x3f')];_0x4c5978[_0x20da('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x338ba1['queryResult'][_0x20da('0x40')];_0x4c5978[_0x20da('0xc')]['DIALOGFLOWV2_SCORE']=_0x338ba1[_0x20da('0x32')]['intentDetectionConfidence'];_0x4e42ff[_0x20da('0x41')]=_0x20da('0x31');_0x4e42ff[_0x20da('0x42')]=JSON[_0x20da('0x13')](_0x5c0319);var _0x32824a=[];for(var _0x35df37=0x0;_0x35df37<_0x5c0319['length'];_0x35df37++){var _0x3c5bc0=_0x5c0319[_0x35df37];if(_0x3c5bc0&&_0x3c5bc0[_0x20da('0x32')]&&_0x3c5bc0[_0x20da('0x32')][_0x20da('0x43')]){_0x32824a[_0x20da('0x44')](createMessage(_0x448191,_0x1ac23f,_0x4e42ff,_0x3c5bc0['queryResult'][_0x20da('0x43')]));}}return Promise[_0x20da('0x45')](_0x32824a)['then'](function(){if(_0x1a415c){_0x512a28['next']();}else{_0x512a28['stop']();}})[_0x20da('0x12')](function(_0x2b6b0d){logger[_0x20da('0x27')](_0x20da('0x11'),_0x448191,JSON[_0x20da('0x13')](_0x2b6b0d));_0x512a28[_0x20da('0x46')]();});}})[_0x20da('0x12')](function(_0x8347d1){logger['error'](_0x20da('0x11'),_0x448191,_0x8347d1[_0x20da('0x2e')]);_0x512a28['next']();});}}catch(_0x4536d4){logger[_0x20da('0x27')]('[%s][DIALOGFLOWV2]\x20%s',_0x448191,JSON[_0x20da('0x13')](_0x4536d4));_0x512a28[_0x20da('0x29')]();}};};
\ No newline at end of file
index ff0e98b..1e2825e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf292=['message','join','condition','priorityTrue','priorityFalse','info','findIndex','rules','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','stringify','lodash','html-to-text','./utils','../../../../config/logger','routing','string','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','validate','length'];(function(_0x494c01,_0x5a74fe){var _0x584980=function(_0x1d2ad5){while(--_0x1d2ad5){_0x494c01['push'](_0x494c01['shift']());}};_0x584980(++_0x5a74fe);}(_0xf292,0x114));var _0x2f29=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf292[_0x321bb2];return _0x9c12ed;};'use strict';var schema=require('validate');var _=require(_0x2f29('0x0'));var htmlToText=require(_0x2f29('0x1'));var utils=require(_0x2f29('0x2'));var logger=require(_0x2f29('0x3'))(_0x2f29('0x4'));var gotoif=schema({'condition':{'type':_0x2f29('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x2f29('0x6'),'message':_0x2f29('0x7')}});exports[_0x2f29('0x8')]=function(_0x1e2a9a,_0x8f2f18){return function(_0x47650a){try{var _0x494cc8={'condition':htmlToText[_0x2f29('0x9')](utils[_0x2f29('0xa')](_0x8f2f18[0x0],this),{'wordwrap':![]})[_0x2f29('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x8f2f18[0x1],'priorityFalse':_0x8f2f18[0x2]};var _0x58cfe5=gotoif[_0x2f29('0xc')](_0x494cc8,{'typecast':!![]});if(_0x58cfe5[_0x2f29('0xd')]){logger['error']('[%s][GOTOIF]\x20%s',_0x1e2a9a,_['map'](_0x58cfe5,_0x2f29('0xe'))[_0x2f29('0xf')](',\x20'));_0x47650a['stop']();}else{try{var _0x13f4d7=eval('('+_0x494cc8[_0x2f29('0x10')]+')');var _0x1f3803=_0x13f4d7?_0x494cc8[_0x2f29('0x11')]:_0x494cc8[_0x2f29('0x12')];logger[_0x2f29('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1e2a9a,_0x494cc8[_0x2f29('0x10')],_0x13f4d7,_0x1f3803||'next');if(_0x1f3803){var _0x4c6390=_[_0x2f29('0x14')](_0x47650a[_0x2f29('0x15')](),{'p':_0x1f3803});if(_0x4c6390>=0x0){logger[_0x2f29('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x1e2a9a,_0x1f3803||_0x2f29('0x16'),_0x4c6390);_0x47650a[_0x2f29('0x16')](_0x4c6390);}else{logger[_0x2f29('0x13')](_0x2f29('0x17'),_0x1e2a9a,_0x1f3803||_0x2f29('0x16'));_0x47650a[_0x2f29('0x18')]();}}else{_0x47650a['next']();}}catch(_0x2ae852){logger[_0x2f29('0x19')](_0x2f29('0x1a'),_0x1e2a9a,_0x2ae852['message']);_0x47650a[_0x2f29('0x18')]();}}}catch(_0x257c3d){logger[_0x2f29('0x19')](_0x2f29('0x1b'),_0x1e2a9a,JSON[_0x2f29('0x1c')](_0x257c3d));_0x47650a[_0x2f29('0x18')]();}};};
\ No newline at end of file
+var _0xe136=['html-to-text','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','getMustacheRender','length','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityFalse','info','next','findIndex','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash'];(function(_0x3addc0,_0x40c96d){var _0x4ed41c=function(_0x101e36){while(--_0x101e36){_0x3addc0['push'](_0x3addc0['shift']());}};_0x4ed41c(++_0x40c96d);}(_0xe136,0x1ec));var _0x6e13=function(_0x2a06c7,_0x30d347){_0x2a06c7=_0x2a06c7-0x0;var _0x33d036=_0xe136[_0x2a06c7];return _0x33d036;};'use strict';var schema=require(_0x6e13('0x0'));var _=require(_0x6e13('0x1'));var htmlToText=require(_0x6e13('0x2'));var utils=require(_0x6e13('0x3'));var logger=require(_0x6e13('0x4'))('routing');var gotoif=schema({'condition':{'type':_0x6e13('0x5'),'required':!![],'message':_0x6e13('0x6')},'priorityTrue':{'type':_0x6e13('0x7'),'message':_0x6e13('0x8')},'priorityFalse':{'type':'number','message':_0x6e13('0x9')}});exports['consequence']=function(_0x9ea45a,_0x43061a){return function(_0x2269ce){try{var _0x2ba8b1={'condition':htmlToText['fromString'](utils[_0x6e13('0xa')](_0x43061a[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x43061a[0x1],'priorityFalse':_0x43061a[0x2]};var _0x2f88d6=gotoif[_0x6e13('0x0')](_0x2ba8b1,{'typecast':!![]});if(_0x2f88d6[_0x6e13('0xb')]){logger['error'](_0x6e13('0xc'),_0x9ea45a,_[_0x6e13('0xd')](_0x2f88d6,_0x6e13('0xe'))[_0x6e13('0xf')](',\x20'));_0x2269ce[_0x6e13('0x10')]();}else{try{var _0x842781=eval('('+_0x2ba8b1[_0x6e13('0x11')]+')');var _0x466d1f=_0x842781?_0x2ba8b1['priorityTrue']:_0x2ba8b1[_0x6e13('0x12')];logger[_0x6e13('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x9ea45a,_0x2ba8b1['condition'],_0x842781,_0x466d1f||_0x6e13('0x14'));if(_0x466d1f){var _0x1b1c65=_[_0x6e13('0x15')](_0x2269ce['rules'](),{'p':_0x466d1f});if(_0x1b1c65>=0x0){logger[_0x6e13('0x13')](_0x6e13('0x16'),_0x9ea45a,_0x466d1f||_0x6e13('0x14'),_0x1b1c65);_0x2269ce[_0x6e13('0x14')](_0x1b1c65);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x9ea45a,_0x466d1f||'next');_0x2269ce['stop']();}}else{_0x2269ce[_0x6e13('0x14')]();}}catch(_0x2fed28){logger[_0x6e13('0x17')](_0x6e13('0x18'),_0x9ea45a,_0x2fed28[_0x6e13('0xe')]);_0x2269ce[_0x6e13('0x10')]();}}}catch(_0x965beb){logger['error'](_0x6e13('0xc'),_0x9ea45a,JSON[_0x6e13('0x19')](_0x965beb));_0x2269ce[_0x6e13('0x10')]();}};};
\ No newline at end of file
index ad5ab78..b0538f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c3=['stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','routing','consequence','length','error','[%s][GOTOP]\x20%s','map','join'];(function(_0x4e59b5,_0x474bb0){var _0x46fbab=function(_0x1d684f){while(--_0x1d684f){_0x4e59b5['push'](_0x4e59b5['shift']());}};_0x46fbab(++_0x474bb0);}(_0x98c3,0x6e));var _0x398c=function(_0x53a49d,_0x2c14ac){_0x53a49d=_0x53a49d-0x0;var _0xca7693=_0x98c3[_0x53a49d];return _0xca7693;};'use strict';var schema=require(_0x398c('0x0'));var _=require(_0x398c('0x1'));var logger=require(_0x398c('0x2'))(_0x398c('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x398c('0x4')]=function(_0xa1b05c,_0x5f0514){return function(_0x4b0e79){try{var _0xf36bf5={'priority':_0x5f0514[0x0]};var _0x32ed1e=gotop[_0x398c('0x0')](_0xf36bf5,{'typecast':!![]});if(_0x32ed1e[_0x398c('0x5')]){logger[_0x398c('0x6')](_0x398c('0x7'),_0xa1b05c,_[_0x398c('0x8')](_0x32ed1e,'message')[_0x398c('0x9')](',\x20'));_0x4b0e79[_0x398c('0xa')]();}else{logger[_0x398c('0xb')](_0x398c('0xc'),_0xa1b05c,_0xf36bf5['priority']);if(_0xf36bf5[_0x398c('0xd')]){var _0x1d42a8=_[_0x398c('0xe')](_0x4b0e79[_0x398c('0xf')](),{'p':_0xf36bf5[_0x398c('0xd')]});if(_0x1d42a8>=0x0){logger[_0x398c('0xb')](_0x398c('0x10'),_0xa1b05c,_0xf36bf5[_0x398c('0xd')]||_0x398c('0x11'),_0x1d42a8);_0x4b0e79[_0x398c('0x11')](_0x1d42a8);}else{logger['info'](_0x398c('0x12'),_0xa1b05c,_0xf36bf5[_0x398c('0xd')]||'next');_0x4b0e79[_0x398c('0xa')]();}}else{_0x4b0e79[_0x398c('0x11')]();}}}catch(_0x344d9c){logger['error'](_0x398c('0x7'),_0xa1b05c,JSON[_0x398c('0x13')](_0x344d9c));_0x4b0e79['stop']();}};};
\ No newline at end of file
+var _0x36c8=['stop','[%s][GOTOP]\x20priority\x20%s','priority','rules','info','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','map','join'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x36c8,0x1a6));var _0x836c=function(_0x1bdbc3,_0xb315d5){_0x1bdbc3=_0x1bdbc3-0x0;var _0x5dfb2a=_0x36c8[_0x1bdbc3];return _0x5dfb2a;};'use strict';var schema=require('validate');var _=require(_0x836c('0x0'));var logger=require('../../../../config/logger')(_0x836c('0x1'));var gotop=schema({'priority':{'type':_0x836c('0x2'),'required':!![],'message':_0x836c('0x3')}});exports['consequence']=function(_0x3f566b,_0x3e1a58){return function(_0x374804){try{var _0x30f70c={'priority':_0x3e1a58[0x0]};var _0x4a48c1=gotop[_0x836c('0x4')](_0x30f70c,{'typecast':!![]});if(_0x4a48c1[_0x836c('0x5')]){logger[_0x836c('0x6')](_0x836c('0x7'),_0x3f566b,_[_0x836c('0x8')](_0x4a48c1,'message')[_0x836c('0x9')](',\x20'));_0x374804[_0x836c('0xa')]();}else{logger['info'](_0x836c('0xb'),_0x3f566b,_0x30f70c[_0x836c('0xc')]);if(_0x30f70c[_0x836c('0xc')]){var _0x43fb5d=_['findIndex'](_0x374804[_0x836c('0xd')](),{'p':_0x30f70c['priority']});if(_0x43fb5d>=0x0){logger[_0x836c('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x3f566b,_0x30f70c['priority']||_0x836c('0xf'),_0x43fb5d);_0x374804['next'](_0x43fb5d);}else{logger[_0x836c('0xe')](_0x836c('0x10'),_0x3f566b,_0x30f70c[_0x836c('0xc')]||_0x836c('0xf'));_0x374804[_0x836c('0xa')]();}}else{_0x374804[_0x836c('0xf')]();}}}catch(_0x18757c){logger[_0x836c('0x6')](_0x836c('0x7'),_0x3f566b,JSON[_0x836c('0x11')](_0x18757c));_0x374804[_0x836c('0xa')]();}};};
\ No newline at end of file
index 145cbbe..98bb0d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be1=['chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','then','info','[%s][MESSAGE]\x20%s','body','catch','error','stringify','lodash','./utils','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','channel'];(function(_0x5b55ea,_0x365d81){var _0x125c6b=function(_0xa1514e){while(--_0xa1514e){_0x5b55ea['push'](_0x5b55ea['shift']());}};_0x125c6b(++_0x365d81);}(_0x6be1,0x12f));var _0x16be=function(_0x2e2b23,_0x5d2872){_0x2e2b23=_0x2e2b23-0x0;var _0x21c0a1=_0x6be1[_0x2e2b23];return _0x21c0a1;};'use strict';var _=require(_0x16be('0x0'));var utils=require(_0x16be('0x1'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x16be('0x2')),'smsMessage':require(_0x16be('0x3')),'faxMessage':require(_0x16be('0x4')),'whatsappMessage':require(_0x16be('0x5'))};exports[_0x16be('0x6')]=function(_0x5743a,_0x36e4da){return function(_0x19754e){try{var _0x2f6c26={'body':utils[_0x16be('0x7')](_0x36e4da[0x0],this),'ContactId':this['contact']['id']};if(this[_0x16be('0x8')]===_0x16be('0x9')){_0x2f6c26[_0x16be('0xa')]=this[_0x16be('0xb')]['id'];}else{_0x2f6c26[_[_0x16be('0xc')](this[_0x16be('0x8')])+_0x16be('0xd')]=this[_0x16be('0xb')]['id'];}_0x2f6c26[_[_0x16be('0xc')](this[_0x16be('0x8')])+_0x16be('0xe')]=this[_0x16be('0xf')]['id'];if(rpc[this[_0x16be('0x8')]+_0x16be('0x10')]){return rpc[this[_0x16be('0x8')]+_0x16be('0x10')]['create'](_0x2f6c26)[_0x16be('0x11')](function(_0xb321f1){logger[_0x16be('0x12')](_0x16be('0x13'),_0x5743a,_0x2f6c26[_0x16be('0x14')]);_0x19754e['next']();})[_0x16be('0x15')](function(_0xcf91fc){logger['error'](_0x16be('0x13'),_0x5743a,JSON['stringify'](_0xcf91fc));_0x19754e['stop']();});}}catch(_0x5f3095){logger[_0x16be('0x16')](_0x16be('0x13'),_0x5743a,JSON[_0x16be('0x17')](_0x5f3095));_0x19754e['stop']();}};};
\ No newline at end of file
+var _0x4345=['../../rpc/faxMessage','consequence','contact','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','create','then','info','body','next','error','[%s][MESSAGE]\x20%s','stringify','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage'];(function(_0x327cbf,_0x114362){var _0x409cb8=function(_0x34f0a1){while(--_0x34f0a1){_0x327cbf['push'](_0x327cbf['shift']());}};_0x409cb8(++_0x114362);}(_0x4345,0x77));var _0x5434=function(_0x25ddea,_0x201cf2){_0x25ddea=_0x25ddea-0x0;var _0x26c683=_0x4345[_0x25ddea];return _0x26c683;};'use strict';var _=require(_0x5434('0x0'));var utils=require(_0x5434('0x1'));var logger=require('../../../../config/logger')(_0x5434('0x2'));var rpc={'chatMessage':require(_0x5434('0x3')),'openchannelMessage':require(_0x5434('0x4')),'mailMessage':require(_0x5434('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x5434('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x5434('0x7')]=function(_0xb8a725,_0x14d339){return function(_0x5001cc){try{var _0x1b26fe={'body':utils['getMustacheRender'](_0x14d339[0x0],this),'ContactId':this[_0x5434('0x8')]['id']};if(this[_0x5434('0x9')]===_0x5434('0xa')){_0x1b26fe[_0x5434('0xb')]=this[_0x5434('0xc')]['id'];}else{_0x1b26fe[_[_0x5434('0xd')](this[_0x5434('0x9')])+_0x5434('0xe')]=this[_0x5434('0xc')]['id'];}_0x1b26fe[_[_0x5434('0xd')](this[_0x5434('0x9')])+_0x5434('0xf')]=this[_0x5434('0x10')]['id'];if(rpc[this[_0x5434('0x9')]+'Message']){return rpc[this[_0x5434('0x9')]+'Message'][_0x5434('0x11')](_0x1b26fe)[_0x5434('0x12')](function(_0x13a13f){logger[_0x5434('0x13')]('[%s][MESSAGE]\x20%s',_0xb8a725,_0x1b26fe[_0x5434('0x14')]);_0x5001cc[_0x5434('0x15')]();})['catch'](function(_0x44ea26){logger[_0x5434('0x16')](_0x5434('0x17'),_0xb8a725,JSON[_0x5434('0x18')](_0x44ea26));_0x5001cc['stop']();});}}catch(_0x2b88c4){logger[_0x5434('0x16')]('[%s][MESSAGE]\x20%s',_0xb8a725,JSON[_0x5434('0x18')](_0x2b88c4));_0x5001cc['stop']();}};};
\ No newline at end of file
index 6654f2d..7270d29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd330=['error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xd330,0xc1));var _0x0d33=function(_0x3520be,_0x17579){_0x3520be=_0x3520be-0x0;var _0x56a3de=_0xd330[_0x3520be];return _0x56a3de;};'use strict';var utils=require(_0x0d33('0x0'));var logger=require(_0x0d33('0x1'))(_0x0d33('0x2'));exports[_0x0d33('0x3')]=function(_0x295ee2,_0x1d6f1c){return function(_0x53be8f){try{logger[_0x0d33('0x4')](_0x0d33('0x5'),_0x295ee2,utils[_0x0d33('0x6')](_0x1d6f1c[0x0],this));_0x53be8f['next']();}catch(_0x1a3280){logger[_0x0d33('0x7')](_0x0d33('0x5'),_0x295ee2,JSON[_0x0d33('0x8')](_0x1a3280));_0x53be8f[_0x0d33('0x9')]();}};};
\ No newline at end of file
+var _0xf7f3=['stop','./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','getMustacheRender','next'];(function(_0x42d0ed,_0x91a115){var _0x3f63f6=function(_0x2e961b){while(--_0x2e961b){_0x42d0ed['push'](_0x42d0ed['shift']());}};_0x3f63f6(++_0x91a115);}(_0xf7f3,0x158));var _0x3f7f=function(_0x199262,_0x1b0c27){_0x199262=_0x199262-0x0;var _0xfc6579=_0xf7f3[_0x199262];return _0xfc6579;};'use strict';var utils=require(_0x3f7f('0x0'));var logger=require(_0x3f7f('0x1'))('routing');exports['consequence']=function(_0x36bd57,_0x5a241a){return function(_0x2c5df6){try{logger[_0x3f7f('0x2')](_0x3f7f('0x3'),_0x36bd57,utils[_0x3f7f('0x4')](_0x5a241a[0x0],this));_0x2c5df6[_0x3f7f('0x5')]();}catch(_0x4fd96e){logger['error']('[%s][NOOP]\x20%s',_0x36bd57,JSON['stringify'](_0x4fd96e));_0x2c5df6[_0x3f7f('0x6')]();}};};
\ No newline at end of file
index e0c3ae2..d183321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2250=['[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','YYYY-MM-DD\x20HH:mm:ss','accepted','info','update','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','timeout','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','redis','defaults','localhost','queue_id','account','from','joinAt','emit','clone','queue','capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','waiting','body','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','chat'];(function(_0xa43d11,_0x5a70b6){var _0x265ce9=function(_0x366bd5){while(--_0x366bd5){_0xa43d11['push'](_0xa43d11['shift']());}};_0x265ce9(++_0x5a70b6);}(_0x2250,0xba));var _0x0225=function(_0x290ef5,_0x32cfa7){_0x290ef5=_0x290ef5-0x0;var _0x450d92=_0x2250[_0x290ef5];return _0x450d92;};'use strict';var schema=require(_0x0225('0x0'));var _=require(_0x0225('0x1'));var util=require('util');var seqqueue=require(_0x0225('0x2'));var moment=require('moment');var Redis=require(_0x0225('0x3'));var config=require(_0x0225('0x4'));var logger=require(_0x0225('0x5'))(_0x0225('0x6'));var strategy=require('./strategy');config[_0x0225('0x7')]=_[_0x0225('0x8')](config[_0x0225('0x7')],{'host':_0x0225('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var attributes=['id',_0x0225('0xa'),_0x0225('0xb'),'queue',_0x0225('0xc'),_0x0225('0xd')];function emit(_0x9f5f20,_0x6fb12,_0x5d9e33){io['to'](_0x9f5f20)[_0x0225('0xe')](_0x6fb12,_0x5d9e33);}function emitChannelQueueInteraction(_0x2ac20c,_0x6007f2,_0x366bbb,_0x34464a,_0x2e25c4,_0x4f0478,_0x4caa74,_0x45b9af){var _0x362443=_[_0x0225('0xf')](_0x366bbb);_0x362443[_0x0225('0xa')]=_0x45b9af;_0x362443[_0x0225('0x10')]=_0x6007f2;_0x362443['account']=_0x34464a;_0x362443['id']=_0x2e25c4;if(_0x4f0478){attributes['push'](_[_0x0225('0x11')](_0x2ac20c)+_0x0225('0x12'));_0x4caa74[util[_0x0225('0x13')](_0x0225('0x14'),_0x2ac20c)][_0x2e25c4]=_[_0x0225('0x15')](_0x362443,attributes);}else{delete _0x4caa74[util[_0x0225('0x13')](_0x0225('0x14'),_0x2ac20c)][_0x2e25c4];}emit(util[_0x0225('0x13')](_0x0225('0x16'),_0x2ac20c,_0x6007f2),util[_0x0225('0x13')](_0x0225('0x17'),_0x2ac20c,_0x4f0478?'save':_0x0225('0x18')),_[_0x0225('0x15')](_0x362443,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x0225('0x19')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x0225('0x1a')),'faxQueueReport':require(_0x0225('0x1b')),'whatsappQueueReport':require(_0x0225('0x1c'))};var queue=schema({'name':{'type':_0x0225('0x1d'),'required':!![],'message':_0x0225('0x1e')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x334b25,_0x299b54,_0x2cc08e,_0x1e58d2){if(_0x334b25&&_0x299b54&&_0x2cc08e){_0x299b54[_0x0225('0x1f')]+=0x1;var _0x4bd7c5={'uniqueid':_0x334b25,'from':_0x2cc08e[_0x0225('0x20')]?_0x2cc08e['body'][_0x0225('0xc')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2cc08e[_0x0225('0x21')]?_0x2cc08e[_0x0225('0x21')]['id']:null,'ListId':_0x2cc08e['list']?_0x2cc08e[_0x0225('0x22')]['id']:null};_0x4bd7c5[_[_0x0225('0x23')](_0x2cc08e[_0x0225('0x24')])+_0x0225('0x25')]=_0x299b54['id']||null;_0x4bd7c5[_[_0x0225('0x23')](_0x2cc08e['channel'])+'InteractionId']=_0x2cc08e['interaction']?_0x2cc08e[_0x0225('0x26')]['id']:null;_0x4bd7c5[_[_0x0225('0x23')](_0x2cc08e['channel'])+_0x0225('0x27')]=_0x2cc08e[_0x0225('0x28')]?_0x2cc08e[_0x0225('0x28')]['id']:null;_0x4bd7c5[_[_0x0225('0x23')](_0x2cc08e['channel'])+(_0x2cc08e[_0x0225('0x24')]!==_0x0225('0x29')?'AccountId':'WebsiteId')]=_0x2cc08e[_0x0225('0xb')]?_0x2cc08e[_0x0225('0xb')]['id']:null;logger['info'](util['format'](_0x0225('0x2a'),_0x334b25,_0x299b54[_0x0225('0x2b')]));emitChannelQueueInteraction(_0x2cc08e[_0x0225('0x24')],_0x299b54[_0x0225('0x2b')],_0x4bd7c5,_0x2cc08e[_0x0225('0xb')][_0x0225('0x2b')],_0x2cc08e[_0x0225('0x28')]['id'],!![],_0x1e58d2,_0x299b54['id']);if(rpc[_0x2cc08e[_0x0225('0x24')]+_0x0225('0x2c')]){return rpc[_0x2cc08e[_0x0225('0x24')]+_0x0225('0x2c')][_0x0225('0x2d')](_0x4bd7c5)[_0x0225('0x2e')](function(_0x307e7e){logger[_0x0225('0x2f')]('create\x20queue\x20report');});}}}function stopRouting(_0x3edd74,_0x48c0c3,_0xdebe93,_0x56ed30){if(_0x3edd74&&_0x48c0c3){_0x48c0c3[_0x0225('0x1f')]-=0x1;var _0x216ab6={'leaveAt':moment()[_0x0225('0x13')](_0x0225('0x30')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x0225('0x31')};logger[_0x0225('0x32')](util[_0x0225('0x13')]('[%s][STOP:QUEUE][NAME:%s]',_0x3edd74,_0x48c0c3['name']));emitChannelQueueInteraction(_0xdebe93[_0x0225('0x24')],_0x48c0c3[_0x0225('0x2b')],_0xdebe93['body'],_0xdebe93[_0x0225('0xb')]['name'],_0xdebe93[_0x0225('0x28')]['id'],![],_0x56ed30,_0x48c0c3['id']);if(rpc[_0xdebe93[_0x0225('0x24')]+_0x0225('0x2c')]){return rpc[_0xdebe93['channel']+_0x0225('0x2c')][_0x0225('0x33')](_0x3edd74,_0x216ab6)[_0x0225('0x2e')](function(_0x1c2239){logger[_0x0225('0x2f')](_0x0225('0x34'));});}}}function endRouting(_0x330eaf,_0x5a1902,_0x5662d8,_0x40d5c2){if(_0x330eaf&&_0x5a1902){_0x5a1902[_0x0225('0x1f')]-=0x1;var _0x3bf154={'leaveAt':moment()[_0x0225('0x13')](_0x0225('0x30')),'exitAt':moment()[_0x0225('0x13')](_0x0225('0x30')),'reason':'timeout'};logger[_0x0225('0x32')](util['format']('[%s][END:QUEUE][NAME:%s]',_0x330eaf,_0x5a1902[_0x0225('0x2b')]));emitChannelQueueInteraction(_0x5662d8[_0x0225('0x24')],_0x5a1902[_0x0225('0x2b')],_0x5662d8[_0x0225('0x20')],_0x5662d8[_0x0225('0xb')][_0x0225('0x2b')],_0x5662d8[_0x0225('0x28')]['id'],![],_0x40d5c2);if(rpc[_0x5662d8[_0x0225('0x24')]+_0x0225('0x2c')]){return rpc[_0x5662d8[_0x0225('0x24')]+'QueueReport'][_0x0225('0x33')](_0x330eaf,_0x3bf154)[_0x0225('0x2e')](function(_0x294d56){logger[_0x0225('0x2f')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x2781f2){return function(_0x376be7){return _0x376be7[_0x0225('0x2b')]['toLowerCase']()===_0x2781f2[_0x0225('0x35')]();};}exports[_0x0225('0x36')]=function(_0x5f0dd1,_0x15019a,_0x3aea4b,_0x66ade){return function(_0x19f17e){try{var _0x4ed4f8={'name':_0x15019a[0x0],'timeout':_0x15019a[0x1]};var _0x1e3138=queue[_0x0225('0x0')](_0x4ed4f8,{'typecast':!![]});if(_0x1e3138[_0x0225('0x37')]){logger[_0x0225('0x2f')](_0x0225('0x38'),_0x5f0dd1,_[_0x0225('0x39')](_0x1e3138,_0x0225('0x28'))['join'](',\x20'));_0x19f17e[_0x0225('0x3a')]();}else{var _0x524fc7=_[_0x0225('0x3b')](_0x3aea4b[_0x66ade[_0x0225('0x24')]+'Queues'],handleFindQueue(_0x4ed4f8[_0x0225('0x2b')]));if(_0x524fc7){startRouting(_0x5f0dd1,_0x524fc7,_0x66ade,_0x3aea4b);var _0x3c8c86=(_0x524fc7[_0x0225('0x3c')]||0xa)*0x3e8;var _0x58048f=(_0x4ed4f8['timeout']||0x14)*0x3e8;var _0x451b9a;if(_0x3c8c86>_0x58048f){_0x58048f=_0x3c8c86;}var _0x577fd8=seqqueue[_0x0225('0x3d')](_0x3c8c86);_0x577fd8['id']=_0x5f0dd1;_0x577fd8[_0x0225('0x3e')]=_0x3c8c86;_0x577fd8[_0x0225('0x3f')]=_0x58048f;_0x577fd8[_0x0225('0x24')]=_0x66ade[_0x0225('0x24')];_0x3aea4b[_0x0225('0x40')][_0x5f0dd1]['on'](_0x0225('0x41'),function(){logger[_0x0225('0x32')](_0x0225('0x42'),_0x5f0dd1);stopRouting(_0x5f0dd1,_0x524fc7,_0x66ade,_0x3aea4b);clearTimeout(_0x451b9a);_0x451b9a=undefined;_0x577fd8[_0x0225('0x43')](!![]);if(_0x3aea4b[_0x0225('0x40')][_0x5f0dd1]){delete _0x3aea4b[_0x0225('0x40')][_0x5f0dd1];}_0x19f17e[_0x0225('0x3a')]();});_0x3aea4b[_0x0225('0x40')][_0x5f0dd1]['on'](_0x0225('0x44'),function(){if(_0x3aea4b['rules'][_0x5f0dd1]){delete _0x3aea4b[_0x0225('0x40')][_0x5f0dd1];}});_0x451b9a=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x5f0dd1);endRouting(_0x5f0dd1,_0x524fc7,_0x66ade,_0x3aea4b);clearTimeout(_0x451b9a);_0x577fd8[_0x0225('0x43')](!![]);_0x19f17e[_0x0225('0x45')]();},_0x58048f);switch(_0x524fc7[_0x0225('0x46')]){case _0x0225('0x47'):strategy['rrmemory'](_0x577fd8,_0x524fc7,_0x3aea4b,_0x66ade);break;default:strategy[_0x0225('0x48')](_0x577fd8,_0x524fc7,_0x3aea4b,_0x66ade);}}else{logger['error'](_0x0225('0x49'),_0x5f0dd1,_0x4ed4f8[_0x0225('0x2b')]);_0x19f17e[_0x0225('0x3a')]();}}}catch(_0x5e8bce){console[_0x0225('0x4a')](_0x5e8bce);logger['error']('[%s][QUEUE]\x20%s',_0x5f0dd1,_0x5e8bce[_0x0225('0x4b')]);_0x19f17e['stop']();}};};
\ No newline at end of file
+var _0x930f=['complete','[%s][QUEUE]\x20APPLICATION\x20END','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','redis','localhost','socket.io-emitter','queue_id','account','queue','from','emit','push','capitalize','InteractionId','%sQueuesWaitingInteractions','format','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','upperFirst','interaction','MessageId','message','chat','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','create\x20queue\x20report','accepted','info','update','error','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','Queues','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x930f,0x192));var _0xf930=function(_0x426e8e,_0x12eefc){_0x426e8e=_0x426e8e-0x0;var _0x3ddb28=_0x930f[_0x426e8e];return _0x3ddb28;};'use strict';var schema=require(_0xf930('0x0'));var _=require(_0xf930('0x1'));var util=require('util');var seqqueue=require(_0xf930('0x2'));var moment=require(_0xf930('0x3'));var Redis=require(_0xf930('0x4'));var config=require(_0xf930('0x5'));var logger=require(_0xf930('0x6'))(_0xf930('0x7'));var strategy=require('./strategy');config[_0xf930('0x8')]=_['defaults'](config[_0xf930('0x8')],{'host':_0xf930('0x9'),'port':0x18eb});var io=require(_0xf930('0xa'))(new Redis(config[_0xf930('0x8')]));var attributes=['id',_0xf930('0xb'),_0xf930('0xc'),_0xf930('0xd'),_0xf930('0xe'),'joinAt'];function emit(_0x49eaa6,_0x3ce491,_0x56a78d){io['to'](_0x49eaa6)[_0xf930('0xf')](_0x3ce491,_0x56a78d);}function emitChannelQueueInteraction(_0x3d7c22,_0x55369f,_0x314fe0,_0x3e0f61,_0x46b2a3,_0x2a2d9,_0x2eccce,_0x33e777){var _0x1d064e=_['clone'](_0x314fe0);_0x1d064e[_0xf930('0xb')]=_0x33e777;_0x1d064e[_0xf930('0xd')]=_0x55369f;_0x1d064e[_0xf930('0xc')]=_0x3e0f61;_0x1d064e['id']=_0x46b2a3;if(_0x2a2d9){attributes[_0xf930('0x10')](_[_0xf930('0x11')](_0x3d7c22)+_0xf930('0x12'));_0x2eccce[util['format'](_0xf930('0x13'),_0x3d7c22)][_0x46b2a3]=_['pick'](_0x1d064e,attributes);}else{delete _0x2eccce[util[_0xf930('0x14')](_0xf930('0x13'),_0x3d7c22)][_0x46b2a3];}emit(util['format'](_0xf930('0x15'),_0x3d7c22,_0x55369f),util[_0xf930('0x14')](_0xf930('0x16'),_0x3d7c22,_0x2a2d9?_0xf930('0x17'):_0xf930('0x18')),_[_0xf930('0x19')](_0x1d064e,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xf930('0x1a')),'chatQueueReport':require(_0xf930('0x1b')),'smsQueueReport':require(_0xf930('0x1c')),'faxQueueReport':require(_0xf930('0x1d')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xf930('0x1e'),'required':!![],'message':_0xf930('0x1f')},'timeout':{'type':_0xf930('0x20'),'message':_0xf930('0x21')}});function startRouting(_0x20ce9a,_0x3f8d9c,_0x7a520,_0x49c175){if(_0x20ce9a&&_0x3f8d9c&&_0x7a520){_0x3f8d9c[_0xf930('0x22')]+=0x1;var _0x36bd2f={'uniqueid':_0x20ce9a,'from':_0x7a520[_0xf930('0x23')]?_0x7a520[_0xf930('0x23')][_0xf930('0xe')]:'','joinAt':moment()[_0xf930('0x14')](_0xf930('0x24')),'ContactId':_0x7a520[_0xf930('0x25')]?_0x7a520[_0xf930('0x25')]['id']:null,'ListId':_0x7a520[_0xf930('0x26')]?_0x7a520[_0xf930('0x26')]['id']:null};_0x36bd2f[_['upperFirst'](_0x7a520[_0xf930('0x27')])+'QueueId']=_0x3f8d9c['id']||null;_0x36bd2f[_[_0xf930('0x28')](_0x7a520['channel'])+'InteractionId']=_0x7a520[_0xf930('0x29')]?_0x7a520[_0xf930('0x29')]['id']:null;_0x36bd2f[_['upperFirst'](_0x7a520[_0xf930('0x27')])+_0xf930('0x2a')]=_0x7a520['message']?_0x7a520[_0xf930('0x2b')]['id']:null;_0x36bd2f[_[_0xf930('0x28')](_0x7a520[_0xf930('0x27')])+(_0x7a520['channel']!==_0xf930('0x2c')?'AccountId':_0xf930('0x2d'))]=_0x7a520[_0xf930('0xc')]?_0x7a520[_0xf930('0xc')]['id']:null;logger['info'](util[_0xf930('0x14')](_0xf930('0x2e'),_0x20ce9a,_0x3f8d9c['name']));emitChannelQueueInteraction(_0x7a520[_0xf930('0x27')],_0x3f8d9c[_0xf930('0x2f')],_0x36bd2f,_0x7a520['account'][_0xf930('0x2f')],_0x7a520[_0xf930('0x2b')]['id'],!![],_0x49c175,_0x3f8d9c['id']);if(rpc[_0x7a520[_0xf930('0x27')]+'QueueReport']){return rpc[_0x7a520[_0xf930('0x27')]+_0xf930('0x30')][_0xf930('0x31')](_0x36bd2f)[_0xf930('0x32')](function(_0x23bfdf){logger['error'](_0xf930('0x33'));});}}}function stopRouting(_0x382f51,_0x1d996d,_0x4fa702,_0x4c62da){if(_0x382f51&&_0x1d996d){_0x1d996d[_0xf930('0x22')]-=0x1;var _0x1cf2c9={'leaveAt':moment()[_0xf930('0x14')](_0xf930('0x24')),'acceptAt':moment()[_0xf930('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xf930('0x34')};logger[_0xf930('0x35')](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x382f51,_0x1d996d['name']));emitChannelQueueInteraction(_0x4fa702[_0xf930('0x27')],_0x1d996d['name'],_0x4fa702[_0xf930('0x23')],_0x4fa702['account'][_0xf930('0x2f')],_0x4fa702[_0xf930('0x2b')]['id'],![],_0x4c62da,_0x1d996d['id']);if(rpc[_0x4fa702[_0xf930('0x27')]+_0xf930('0x30')]){return rpc[_0x4fa702[_0xf930('0x27')]+_0xf930('0x30')][_0xf930('0x36')](_0x382f51,_0x1cf2c9)[_0xf930('0x32')](function(_0x5ad613){logger[_0xf930('0x37')]('update\x20queue\x20report');});}}}function endRouting(_0x25b9aa,_0x46d187,_0x470ebf,_0x883b8b){if(_0x25b9aa&&_0x46d187){_0x46d187['waiting']-=0x1;var _0x4e28aa={'leaveAt':moment()[_0xf930('0x14')](_0xf930('0x24')),'exitAt':moment()[_0xf930('0x14')](_0xf930('0x24')),'reason':_0xf930('0x38')};logger[_0xf930('0x35')](util[_0xf930('0x14')](_0xf930('0x39'),_0x25b9aa,_0x46d187[_0xf930('0x2f')]));emitChannelQueueInteraction(_0x470ebf[_0xf930('0x27')],_0x46d187['name'],_0x470ebf['body'],_0x470ebf[_0xf930('0xc')][_0xf930('0x2f')],_0x470ebf['message']['id'],![],_0x883b8b);if(rpc[_0x470ebf[_0xf930('0x27')]+_0xf930('0x30')]){return rpc[_0x470ebf[_0xf930('0x27')]+_0xf930('0x30')][_0xf930('0x36')](_0x25b9aa,_0x4e28aa)['catch'](function(_0x162c9c){logger[_0xf930('0x37')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x2f7856){return function(_0x328d66){return _0x328d66['name']['toLowerCase']()===_0x2f7856[_0xf930('0x3a')]();};}exports[_0xf930('0x3b')]=function(_0x40449b,_0x4fb8dc,_0x22e357,_0x319999){return function(_0x39a751){try{var _0xf43265={'name':_0x4fb8dc[0x0],'timeout':_0x4fb8dc[0x1]};var _0x267bbc=queue[_0xf930('0x0')](_0xf43265,{'typecast':!![]});if(_0x267bbc[_0xf930('0x3c')]){logger[_0xf930('0x37')](_0xf930('0x3d'),_0x40449b,_[_0xf930('0x3e')](_0x267bbc,_0xf930('0x2b'))[_0xf930('0x3f')](',\x20'));_0x39a751[_0xf930('0x40')]();}else{var _0xbfbfa6=_['find'](_0x22e357[_0x319999[_0xf930('0x27')]+_0xf930('0x41')],handleFindQueue(_0xf43265[_0xf930('0x2f')]));if(_0xbfbfa6){startRouting(_0x40449b,_0xbfbfa6,_0x319999,_0x22e357);var _0x1b4c95=(_0xbfbfa6[_0xf930('0x38')]||0xa)*0x3e8;var _0x47fab3=(_0xf43265[_0xf930('0x38')]||0x14)*0x3e8;var _0x4adf9e;if(_0x1b4c95>_0x47fab3){_0x47fab3=_0x1b4c95;}var _0xe9b5f9=seqqueue['createQueue'](_0x1b4c95);_0xe9b5f9['id']=_0x40449b;_0xe9b5f9[_0xf930('0x42')]=_0x1b4c95;_0xe9b5f9[_0xf930('0x43')]=_0x47fab3;_0xe9b5f9[_0xf930('0x27')]=_0x319999['channel'];_0x22e357[_0xf930('0x44')][_0x40449b]['on'](_0xf930('0x45'),function(){logger[_0xf930('0x35')](_0xf930('0x46'),_0x40449b);stopRouting(_0x40449b,_0xbfbfa6,_0x319999,_0x22e357);clearTimeout(_0x4adf9e);_0x4adf9e=undefined;_0xe9b5f9[_0xf930('0x47')](!![]);if(_0x22e357[_0xf930('0x44')][_0x40449b]){delete _0x22e357[_0xf930('0x44')][_0x40449b];}_0x39a751['stop']();});_0x22e357[_0xf930('0x44')][_0x40449b]['on'](_0xf930('0x48'),function(){if(_0x22e357[_0xf930('0x44')][_0x40449b]){delete _0x22e357['rules'][_0x40449b];}});_0x4adf9e=setTimeout(function(){logger['info'](_0xf930('0x49'),_0x40449b);endRouting(_0x40449b,_0xbfbfa6,_0x319999,_0x22e357);clearTimeout(_0x4adf9e);_0xe9b5f9[_0xf930('0x47')](!![]);_0x39a751['next']();},_0x47fab3);switch(_0xbfbfa6['strategy']){case _0xf930('0x4a'):strategy[_0xf930('0x4a')](_0xe9b5f9,_0xbfbfa6,_0x22e357,_0x319999);break;default:strategy[_0xf930('0x4b')](_0xe9b5f9,_0xbfbfa6,_0x22e357,_0x319999);}}else{logger[_0xf930('0x37')](_0xf930('0x4c'),_0x40449b,_0xf43265[_0xf930('0x2f')]);_0x39a751[_0xf930('0x40')]();}}}catch(_0x3d3de3){console[_0xf930('0x4d')](_0x3d3de3);logger[_0xf930('0x37')](_0xf930('0x3d'),_0x40449b,_0x3d3de3[_0xf930('0x4e')]);_0x39a751[_0xf930('0x40')]();}};};
\ No newline at end of file
index 4cca70f..3db365f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','handleRun','bind','handleTimeout','drained','handleDrained','prototype','push','[%s][AGENT]\x20try\x20with\x20%s','realtime','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','agents','channel','busy','busyQueue','saveWaitingNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','TIMEOUT'];(function(_0x5aab9b,_0x311667){var _0x11df27=function(_0xcc8d5e){while(--_0xcc8d5e){_0x5aab9b['push'](_0x5aab9b['shift']());}};_0x11df27(++_0x311667);}(_0xe5b3,0x133));var _0x3e5b=function(_0x378ee1,_0x2786a0){_0x378ee1=_0x378ee1-0x0;var _0xdb7a8e=_0xe5b3[_0x378ee1];return _0xdb7a8e;};'use strict';var _=require('lodash');var uuid=require(_0x3e5b('0x0'));var util=require(_0x3e5b('0x1'));var logger=require(_0x3e5b('0x2'))(_0x3e5b('0x3'));var Agent=function(_0x2a71ef,_0x3171c5,_0x7f1cc0,_0x1e58ed){this[_0x3e5b('0x4')]=uuid['v4']();this[_0x3e5b('0x5')]=_0x2a71ef;this[_0x3e5b('0x6')]=_0x3171c5;this['realtime']=_0x7f1cc0;this[_0x3e5b('0x3')]=_0x1e58ed;this[_0x3e5b('0x5')]['push'](this[_0x3e5b('0x7')][_0x3e5b('0x8')](this),this[_0x3e5b('0x9')][_0x3e5b('0x8')](this));this['squeue']['on']('timeout',this[_0x3e5b('0x9')][_0x3e5b('0x8')](this));this[_0x3e5b('0x5')]['on'](_0x3e5b('0xa'),this[_0x3e5b('0xb')]['bind'](this));};Agent[_0x3e5b('0xc')]['push']=function(){this[_0x3e5b('0x5')][_0x3e5b('0xd')](this[_0x3e5b('0x7')][_0x3e5b('0x8')](this),this[_0x3e5b('0x9')][_0x3e5b('0x8')](this));};Agent[_0x3e5b('0xc')]['handleDrained']=function(){this[_0x3e5b('0x9')](!![]);};Agent['prototype']['handleRun']=function(){logger['debug'](_0x3e5b('0xe'),this[_0x3e5b('0x5')]['id'],this[_0x3e5b('0x6')]['id']);if(_['isNil'](this[_0x3e5b('0xf')]['agents'][this['agent']['id']])){logger[_0x3e5b('0x10')](_0x3e5b('0x11'),this['squeue']['id'],this[_0x3e5b('0x6')]['id']);setTimeout(this[_0x3e5b('0xd')]['bind'](this),0x3e8);}else{if(this[_0x3e5b('0x3')][_0x3e5b('0x12')]||util['isAgentAvailable'](this['squeue']['id'],this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']],this[_0x3e5b('0x5')][_0x3e5b('0x14')],![])){this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']][_0x3e5b('0x15')]=!![];this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']][_0x3e5b('0x16')]=undefined;util[_0x3e5b('0x17')](this['realtime'],this[_0x3e5b('0x3')],this[_0x3e5b('0x6')],this[_0x3e5b('0x5')][_0x3e5b('0x14')]);util['showNotification'](this[_0x3e5b('0x4')],this['squeue']['id'],this[_0x3e5b('0xf')][_0x3e5b('0x13')][this['agent']['id']],null,this[_0x3e5b('0x3')]);util[_0x3e5b('0x18')](this[_0x3e5b('0x5')]['id'],this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']],_0x3e5b('0x19')+(this[_0x3e5b('0x3')]['forcedOwnership']?_0x3e5b('0x1a'):''));}else{logger['debug'](_0x3e5b('0x1b'),this['squeue']['id'],this[_0x3e5b('0x6')]['id']);setTimeout(this[_0x3e5b('0xd')][_0x3e5b('0x8')](this),0x3e8);}}};Agent[_0x3e5b('0xc')][_0x3e5b('0x9')]=function(_0x3cfaf6){if(_[_0x3e5b('0x1c')](this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']])){return logger[_0x3e5b('0x10')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3e5b('0x5')]['id'],this[_0x3e5b('0x6')]['id']);}else{logger[_0x3e5b('0x10')](_0x3e5b('0x1d'),this[_0x3e5b('0x5')]['id'],this[_0x3e5b('0x6')]['id']);util[_0x3e5b('0x1e')](this['notificationId'],this[_0x3e5b('0x5')]['id'],this['realtime']['agents'][this[_0x3e5b('0x6')]['id']],null,this[_0x3e5b('0x3')]);this['realtime'][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']][_0x3e5b('0x15')]=![];this[_0x3e5b('0xf')][_0x3e5b('0x13')][this[_0x3e5b('0x6')]['id']][_0x3e5b('0x16')]=undefined;util[_0x3e5b('0x1f')](this[_0x3e5b('0xf')],this[_0x3e5b('0x3')],this[_0x3e5b('0x6')],this[_0x3e5b('0x5')]['channel']);util[_0x3e5b('0x18')](this[_0x3e5b('0x5')]['id'],this['realtime']['agents'][this[_0x3e5b('0x6')]['id']],_0x3cfaf6?'STOP':_0x3e5b('0x20'));}if(!_0x3cfaf6){setTimeout(this[_0x3e5b('0xd')][_0x3e5b('0x8')](this),0x3e8);}};function agent(_0x32594a,_0x5389e3,_0x18b07f,_0x4cdcb1){return new Agent(_0x32594a,_0x5389e3,_0x18b07f,_0x4cdcb1);}module[_0x3e5b('0x21')]=agent;
\ No newline at end of file
+var _0x3eea=['STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','bind','timeout','drained','prototype','handleRun','handleTimeout','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','saveWaitingNotification','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','removeWaitingNotification'];(function(_0x2bcf2d,_0x3a88ac){var _0x576aae=function(_0x1b7d92){while(--_0x1b7d92){_0x2bcf2d['push'](_0x2bcf2d['shift']());}};_0x576aae(++_0x3a88ac);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x43cbdb,_0x140caa){_0x43cbdb=_0x43cbdb-0x0;var _0x4def25=_0x3eea[_0x43cbdb];return _0x4def25;};'use strict';var _=require(_0xa3ee('0x0'));var uuid=require('uuid');var util=require(_0xa3ee('0x1'));var logger=require(_0xa3ee('0x2'))(_0xa3ee('0x3'));var Agent=function(_0x1c6a49,_0x46acfa,_0x269141,_0x104913){this[_0xa3ee('0x4')]=uuid['v4']();this[_0xa3ee('0x5')]=_0x1c6a49;this[_0xa3ee('0x6')]=_0x46acfa;this[_0xa3ee('0x7')]=_0x269141;this['routing']=_0x104913;this['squeue'][_0xa3ee('0x8')](this['handleRun'][_0xa3ee('0x9')](this),this['handleTimeout'][_0xa3ee('0x9')](this));this['squeue']['on'](_0xa3ee('0xa'),this['handleTimeout'][_0xa3ee('0x9')](this));this[_0xa3ee('0x5')]['on'](_0xa3ee('0xb'),this['handleDrained'][_0xa3ee('0x9')](this));};Agent[_0xa3ee('0xc')]['push']=function(){this['squeue'][_0xa3ee('0x8')](this[_0xa3ee('0xd')][_0xa3ee('0x9')](this),this[_0xa3ee('0xe')]['bind'](this));};Agent[_0xa3ee('0xc')]['handleDrained']=function(){this[_0xa3ee('0xe')](!![]);};Agent[_0xa3ee('0xc')][_0xa3ee('0xd')]=function(){logger[_0xa3ee('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xa3ee('0x5')]['id'],this[_0xa3ee('0x6')]['id']);if(_['isNil'](this['realtime']['agents'][this[_0xa3ee('0x6')]['id']])){logger[_0xa3ee('0xf')](_0xa3ee('0x10'),this[_0xa3ee('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xa3ee('0x8')][_0xa3ee('0x9')](this),0x3e8);}else{if(this[_0xa3ee('0x3')][_0xa3ee('0x11')]||util[_0xa3ee('0x12')](this['squeue']['id'],this[_0xa3ee('0x7')][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']],this[_0xa3ee('0x5')][_0xa3ee('0x14')],![])){this[_0xa3ee('0x7')]['agents'][this[_0xa3ee('0x6')]['id']][_0xa3ee('0x15')]=!![];this['realtime'][_0xa3ee('0x13')][this['agent']['id']][_0xa3ee('0x16')]=undefined;util[_0xa3ee('0x17')](this[_0xa3ee('0x7')],this[_0xa3ee('0x3')],this[_0xa3ee('0x6')],this[_0xa3ee('0x5')][_0xa3ee('0x14')]);util[_0xa3ee('0x18')](this[_0xa3ee('0x4')],this[_0xa3ee('0x5')]['id'],this['realtime'][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']],null,this[_0xa3ee('0x3')]);util[_0xa3ee('0x19')](this[_0xa3ee('0x5')]['id'],this['realtime'][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']],_0xa3ee('0x1a')+(this[_0xa3ee('0x3')][_0xa3ee('0x11')]?_0xa3ee('0x1b'):''));}else{logger[_0xa3ee('0xf')](_0xa3ee('0x1c'),this[_0xa3ee('0x5')]['id'],this[_0xa3ee('0x6')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent['prototype'][_0xa3ee('0xe')]=function(_0x481358){if(_[_0xa3ee('0x1d')](this[_0xa3ee('0x7')][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']])){return logger[_0xa3ee('0xf')](_0xa3ee('0x10'),this[_0xa3ee('0x5')]['id'],this[_0xa3ee('0x6')]['id']);}else{logger[_0xa3ee('0xf')](_0xa3ee('0x1e'),this['squeue']['id'],this[_0xa3ee('0x6')]['id']);util['hideNotification'](this[_0xa3ee('0x4')],this[_0xa3ee('0x5')]['id'],this['realtime'][_0xa3ee('0x13')][this['agent']['id']],null,this[_0xa3ee('0x3')]);this['realtime'][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']][_0xa3ee('0x15')]=![];this[_0xa3ee('0x7')][_0xa3ee('0x13')][this['agent']['id']][_0xa3ee('0x16')]=undefined;util[_0xa3ee('0x1f')](this[_0xa3ee('0x7')],this['routing'],this[_0xa3ee('0x6')],this['squeue'][_0xa3ee('0x14')]);util['writeLog'](this[_0xa3ee('0x5')]['id'],this['realtime'][_0xa3ee('0x13')][this[_0xa3ee('0x6')]['id']],_0x481358?_0xa3ee('0x20'):_0xa3ee('0x21'));}if(!_0x481358){setTimeout(this[_0xa3ee('0x8')][_0xa3ee('0x9')](this),0x3e8);}};function agent(_0xcc8e71,_0x42c66f,_0x256c63,_0x218317){return new Agent(_0xcc8e71,_0x42c66f,_0x256c63,_0x218317);}module[_0xa3ee('0x22')]=agent;
\ No newline at end of file
index 851d106..3172a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8462=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','exports','lodash','uuid','./util','routing','squeue','queue','realtime','push','handleRun','bind','handleTimeout','drained','handleDrained','prototype','isNil','Agents','length','debug','isAgentAvailable','agents','channel','writeLog','RINGING','busy','busyQueue','name','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY'];(function(_0x3861db,_0x433ebf){var _0x4a639a=function(_0x5baea4){while(--_0x5baea4){_0x3861db['push'](_0x3861db['shift']());}};_0x4a639a(++_0x433ebf);}(_0x8462,0x6e));var _0x2846=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0x8462[_0x1e381c];return _0x9b5ea9;};'use strict';var _=require(_0x2846('0x0'));var uuid=require(_0x2846('0x1'));var util=require(_0x2846('0x2'));var logger=require('../../../../../config/logger')(_0x2846('0x3'));var Beepall=function(_0x3f08e2,_0x35557c,_0x5c2c25,_0x62b0d2){this['notificationId']=uuid['v4']();this[_0x2846('0x4')]=_0x3f08e2;this[_0x2846('0x5')]=_0x35557c;this[_0x2846('0x6')]=_0x5c2c25;this[_0x2846('0x3')]=_0x62b0d2;this[_0x2846('0x4')][_0x2846('0x7')](this[_0x2846('0x8')][_0x2846('0x9')](this),this[_0x2846('0xa')][_0x2846('0x9')](this));this[_0x2846('0x4')]['on']('timeout',this['handleTimeout'][_0x2846('0x9')](this));this['squeue']['on'](_0x2846('0xb'),this[_0x2846('0xc')][_0x2846('0x9')](this));};Beepall[_0x2846('0xd')][_0x2846('0x7')]=function(){this[_0x2846('0x4')]['push'](this[_0x2846('0x8')][_0x2846('0x9')](this),this['handleTimeout'][_0x2846('0x9')](this));};Beepall[_0x2846('0xd')][_0x2846('0xc')]=function(){this[_0x2846('0xa')](!![]);};Beepall['prototype']['handleRun']=function(){var _0x535d0e=!![];if(!_[_0x2846('0xe')](this[_0x2846('0x5')])&&!_[_0x2846('0xe')](this[_0x2846('0x5')][_0x2846('0xf')])&&this[_0x2846('0x5')]['Agents'][_0x2846('0x10')]>0x0){for(var _0x4715e3=0x0,_0x2fe383;_0x4715e3<this[_0x2846('0x5')][_0x2846('0xf')][_0x2846('0x10')];_0x4715e3+=0x1){_0x2fe383=this['queue']['Agents'][_0x4715e3]['id'];if(_[_0x2846('0xe')](this[_0x2846('0x6')]['agents'][_0x2fe383])){logger[_0x2846('0x11')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x2846('0x4')]['id'],_0x2fe383);}else{if(util[_0x2846('0x12')](this[_0x2846('0x4')]['id'],this[_0x2846('0x6')][_0x2846('0x13')][_0x2fe383],this[_0x2846('0x4')][_0x2846('0x14')],!![])){_0x535d0e=![];util[_0x2846('0x15')](this[_0x2846('0x4')]['id'],this[_0x2846('0x6')][_0x2846('0x13')][_0x2fe383],_0x2846('0x16'));this[_0x2846('0x6')][_0x2846('0x13')][_0x2fe383][_0x2846('0x17')]=!![];this[_0x2846('0x6')]['agents'][_0x2fe383][_0x2846('0x18')]=this[_0x2846('0x5')][_0x2846('0x19')];util['saveWaitingNotification'](this[_0x2846('0x6')],this['routing'],this[_0x2846('0x5')][_0x2846('0xf')][_0x4715e3],this[_0x2846('0x4')]['channel']);util[_0x2846('0x1a')](this[_0x2846('0x1b')],this[_0x2846('0x4')]['id'],this[_0x2846('0x6')][_0x2846('0x13')][_0x2fe383],this[_0x2846('0x5')],this[_0x2846('0x3')]);}}}if(_0x535d0e){logger['debug'](_0x2846('0x1c'),this['squeue']['id']);setTimeout(this[_0x2846('0x7')][_0x2846('0x9')](this),0x3e8);}}else{logger[_0x2846('0x11')](_0x2846('0x1d'),this[_0x2846('0x4')]['id']);setTimeout(this[_0x2846('0x7')][_0x2846('0x9')](this),0x3e8);}};Beepall[_0x2846('0xd')]['handleTimeout']=function(_0x9fb066){if(!_[_0x2846('0xe')](this[_0x2846('0x5')])&&!_['isNil'](this[_0x2846('0x5')][_0x2846('0xf')])){for(var _0x35b253=0x0,_0x41a318;_0x35b253<this[_0x2846('0x5')][_0x2846('0xf')]['length'];_0x35b253+=0x1){_0x41a318=this[_0x2846('0x5')][_0x2846('0xf')][_0x35b253]['id'];if(_[_0x2846('0xe')](this[_0x2846('0x6')][_0x2846('0x13')][_0x41a318])){logger[_0x2846('0x11')](_0x2846('0x1e'),this[_0x2846('0x4')]['id'],_0x41a318);}else{util[_0x2846('0x1f')](this['notificationId'],this['squeue']['id'],this[_0x2846('0x6')]['agents'][_0x41a318],this[_0x2846('0x5')],this[_0x2846('0x3')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0x2846('0x13')][_0x41a318],_0x9fb066?'STOP':_0x2846('0x20'));this[_0x2846('0x6')]['agents'][_0x41a318][_0x2846('0x17')]=![];this['realtime'][_0x2846('0x13')][_0x41a318][_0x2846('0x18')]=undefined;util[_0x2846('0x21')](this[_0x2846('0x6')],this[_0x2846('0x3')],this[_0x2846('0x6')][_0x2846('0x13')][_0x41a318],this[_0x2846('0x4')]['channel']);}}}if(!_0x9fb066){setTimeout(this[_0x2846('0x7')][_0x2846('0x9')](this),0x3e8);}};function beepall(_0x13bcf2,_0x241edf,_0x97eb43,_0x3cd537){return new Beepall(_0x13bcf2,_0x241edf,_0x97eb43,_0x3cd537);}module[_0x2846('0x22')]=beepall;
\ No newline at end of file
+var _0x94e7=['realtime','push','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype','isNil','Agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agents','channel','writeLog','busy','busyQueue','name','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','length','hideNotification','TIMEOUT','lodash','uuid','./util','routing','squeue','queue'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x94e7,0xf2));var _0x794e=function(_0x18cbda,_0x365065){_0x18cbda=_0x18cbda-0x0;var _0x581810=_0x94e7[_0x18cbda];return _0x581810;};'use strict';var _=require(_0x794e('0x0'));var uuid=require(_0x794e('0x1'));var util=require(_0x794e('0x2'));var logger=require('../../../../../config/logger')(_0x794e('0x3'));var Beepall=function(_0x229eff,_0x5b44f1,_0x37ed5d,_0x58647f){this['notificationId']=uuid['v4']();this[_0x794e('0x4')]=_0x229eff;this[_0x794e('0x5')]=_0x5b44f1;this[_0x794e('0x6')]=_0x37ed5d;this['routing']=_0x58647f;this[_0x794e('0x4')][_0x794e('0x7')](this[_0x794e('0x8')]['bind'](this),this[_0x794e('0x9')][_0x794e('0xa')](this));this[_0x794e('0x4')]['on'](_0x794e('0xb'),this[_0x794e('0x9')][_0x794e('0xa')](this));this[_0x794e('0x4')]['on'](_0x794e('0xc'),this[_0x794e('0xd')]['bind'](this));};Beepall[_0x794e('0xe')]['push']=function(){this[_0x794e('0x4')][_0x794e('0x7')](this['handleRun'][_0x794e('0xa')](this),this[_0x794e('0x9')][_0x794e('0xa')](this));};Beepall[_0x794e('0xe')]['handleDrained']=function(){this[_0x794e('0x9')](!![]);};Beepall[_0x794e('0xe')]['handleRun']=function(){var _0x321a57=!![];if(!_[_0x794e('0xf')](this['queue'])&&!_[_0x794e('0xf')](this[_0x794e('0x5')]['Agents'])&&this['queue'][_0x794e('0x10')]['length']>0x0){for(var _0x1ec430=0x0,_0x3917f9;_0x1ec430<this[_0x794e('0x5')][_0x794e('0x10')]['length'];_0x1ec430+=0x1){_0x3917f9=this[_0x794e('0x5')][_0x794e('0x10')][_0x1ec430]['id'];if(_[_0x794e('0xf')](this[_0x794e('0x6')]['agents'][_0x3917f9])){logger[_0x794e('0x11')](_0x794e('0x12'),this[_0x794e('0x4')]['id'],_0x3917f9);}else{if(util['isAgentAvailable'](this[_0x794e('0x4')]['id'],this['realtime'][_0x794e('0x13')][_0x3917f9],this[_0x794e('0x4')][_0x794e('0x14')],!![])){_0x321a57=![];util[_0x794e('0x15')](this['squeue']['id'],this[_0x794e('0x6')][_0x794e('0x13')][_0x3917f9],'RINGING');this[_0x794e('0x6')][_0x794e('0x13')][_0x3917f9][_0x794e('0x16')]=!![];this[_0x794e('0x6')]['agents'][_0x3917f9][_0x794e('0x17')]=this[_0x794e('0x5')][_0x794e('0x18')];util['saveWaitingNotification'](this[_0x794e('0x6')],this['routing'],this[_0x794e('0x5')][_0x794e('0x10')][_0x1ec430],this[_0x794e('0x4')][_0x794e('0x14')]);util[_0x794e('0x19')](this[_0x794e('0x1a')],this[_0x794e('0x4')]['id'],this[_0x794e('0x6')][_0x794e('0x13')][_0x3917f9],this[_0x794e('0x5')],this[_0x794e('0x3')]);}}}if(_0x321a57){logger[_0x794e('0x11')](_0x794e('0x1b'),this[_0x794e('0x4')]['id']);setTimeout(this[_0x794e('0x7')][_0x794e('0xa')](this),0x3e8);}}else{logger[_0x794e('0x11')]('[%s][QUEUE]\x20EMPTY',this[_0x794e('0x4')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}};Beepall[_0x794e('0xe')]['handleTimeout']=function(_0x4fdec7){if(!_[_0x794e('0xf')](this[_0x794e('0x5')])&&!_['isNil'](this['queue'][_0x794e('0x10')])){for(var _0x3f6327=0x0,_0x2cdd3b;_0x3f6327<this['queue'][_0x794e('0x10')][_0x794e('0x1c')];_0x3f6327+=0x1){_0x2cdd3b=this['queue'][_0x794e('0x10')][_0x3f6327]['id'];if(_['isNil'](this['realtime']['agents'][_0x2cdd3b])){logger['debug'](_0x794e('0x12'),this[_0x794e('0x4')]['id'],_0x2cdd3b);}else{util[_0x794e('0x1d')](this[_0x794e('0x1a')],this[_0x794e('0x4')]['id'],this[_0x794e('0x6')][_0x794e('0x13')][_0x2cdd3b],this[_0x794e('0x5')],this[_0x794e('0x3')]);util[_0x794e('0x15')](this[_0x794e('0x4')]['id'],this[_0x794e('0x6')][_0x794e('0x13')][_0x2cdd3b],_0x4fdec7?'STOP':_0x794e('0x1e'));this[_0x794e('0x6')][_0x794e('0x13')][_0x2cdd3b][_0x794e('0x16')]=![];this['realtime'][_0x794e('0x13')][_0x2cdd3b][_0x794e('0x17')]=undefined;util['removeWaitingNotification'](this['realtime'],this['routing'],this[_0x794e('0x6')][_0x794e('0x13')][_0x2cdd3b],this[_0x794e('0x4')][_0x794e('0x14')]);}}}if(!_0x4fdec7){setTimeout(this[_0x794e('0x7')][_0x794e('0xa')](this),0x3e8);}};function beepall(_0x595ef1,_0xf265c,_0x1b5e86,_0x3b6c68){return new Beepall(_0x595ef1,_0xf265c,_0x1b5e86,_0x3b6c68);}module['exports']=beepall;
\ No newline at end of file
index 47a0d11..1b9885f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d5=['./beepall','./agent','exports'];(function(_0x4927f2,_0x47e271){var _0x518633=function(_0x170fac){while(--_0x170fac){_0x4927f2['push'](_0x4927f2['shift']());}};_0x518633(++_0x47e271);}(_0x29d5,0x128));var _0x529d=function(_0x384ab1,_0x32b6c5){_0x384ab1=_0x384ab1-0x0;var _0xa95a8d=_0x29d5[_0x384ab1];return _0xa95a8d;};'use strict';module[_0x529d('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x529d('0x1')),'agent':require(_0x529d('0x2'))};
\ No newline at end of file
+var _0x1185=['./beepall','./agent','exports'];(function(_0x5c7a31,_0x368661){var _0x124f3f=function(_0xf489f){while(--_0xf489f){_0x5c7a31['push'](_0x5c7a31['shift']());}};_0x124f3f(++_0x368661);}(_0x1185,0x125));var _0x5118=function(_0x13dc03,_0x432a8c){_0x13dc03=_0x13dc03-0x0;var _0x233ffa=_0x1185[_0x13dc03];return _0x233ffa;};'use strict';module[_0x5118('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x5118('0x1')),'agent':require(_0x5118('0x2'))};
\ No newline at end of file
index d6cf2f7..50ac9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa726=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','busyQueue','name','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','queue','intervals','squeue','push','handleTimeout','bind','module','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','realtime','agents','agentId','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','handleRun'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xa726,0xf1));var _0x6a72=function(_0x4c0622,_0x5dacaf){_0x4c0622=_0x4c0622-0x0;var _0x1799d8=_0xa726[_0x4c0622];return _0x1799d8;};'use strict';var rr=require('rr');var _=require(_0x6a72('0x0'));var uuid=require(_0x6a72('0x1'));var util=require('./util');var logger=require(_0x6a72('0x2'))(_0x6a72('0x3'));var RRMemory=function(_0x1e245e,_0x335db9,_0x5befc4,_0x7a15ff){this[_0x6a72('0x4')]=uuid['v4']();this['squeue']=_0x1e245e;this[_0x6a72('0x5')]=_0x335db9;this['realtime']=_0x5befc4;this[_0x6a72('0x3')]=_0x7a15ff;this[_0x6a72('0x6')]={};this[_0x6a72('0x7')][_0x6a72('0x8')](this['handleRun']['bind'](this),this[_0x6a72('0x9')][_0x6a72('0xa')](this),this[_0x6a72('0xb')]);this['squeue']['on'](_0x6a72('0xc'),this[_0x6a72('0x9')][_0x6a72('0xa')](this));this[_0x6a72('0x7')]['on'](_0x6a72('0xd'),this[_0x6a72('0xe')][_0x6a72('0xa')](this));};RRMemory['prototype'][_0x6a72('0x8')]=function(){this[_0x6a72('0x7')]['push'](this['handleRun'][_0x6a72('0xa')](this),this[_0x6a72('0x9')][_0x6a72('0xa')](this));};RRMemory['prototype'][_0x6a72('0xe')]=function(){this[_0x6a72('0x9')](!![]);};RRMemory[_0x6a72('0xf')][_0x6a72('0x10')]=function(_0x5877f6){if(util[_0x6a72('0x11')](this[_0x6a72('0x7')]['id'],this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]],this['squeue']['channel'],!![])){logger[_0x6a72('0x15')](_0x6a72('0x16'),this[_0x6a72('0x7')]['id'],this[_0x6a72('0x14')]);clearInterval(this['intervals'][this['agentId']]);_0x5877f6[_0x6a72('0x17')]();setTimeout(this[_0x6a72('0x8')][_0x6a72('0xa')](this),0x3e8);}};RRMemory[_0x6a72('0xf')][_0x6a72('0x18')]=function(_0x2adc18){this[_0x6a72('0x14')]=rr(this['queue']['mapAgentsId']);logger[_0x6a72('0x15')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x6a72('0x7')]['id'],this[_0x6a72('0x14')]);if(_['isNil'](this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]])){logger[_0x6a72('0x15')](_0x6a72('0x19'),this[_0x6a72('0x7')]['id'],this[_0x6a72('0x14')]);_0x2adc18[_0x6a72('0x17')]();setTimeout(this['push'][_0x6a72('0xa')](this),0x3e8);}else{if(util[_0x6a72('0x11')](this[_0x6a72('0x7')]['id'],this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]],this[_0x6a72('0x7')][_0x6a72('0x1a')],!![])){this['realtime']['agents'][this[_0x6a72('0x14')]][_0x6a72('0x1b')]=!![];this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]][_0x6a72('0x1c')]=this[_0x6a72('0x5')][_0x6a72('0x1d')];util['saveWaitingNotification'](this[_0x6a72('0x12')],this['routing'],this[_0x6a72('0x12')]['agents'][this[_0x6a72('0x14')]],this[_0x6a72('0x7')][_0x6a72('0x1a')]);util[_0x6a72('0x1e')](this[_0x6a72('0x4')],this['squeue']['id'],this[_0x6a72('0x12')]['agents'][this[_0x6a72('0x14')]],this[_0x6a72('0x5')],this[_0x6a72('0x3')]);util[_0x6a72('0x1f')](this[_0x6a72('0x7')]['id'],this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]],_0x6a72('0x20'));this['intervals'][this[_0x6a72('0x14')]]=setInterval(this[_0x6a72('0x10')][_0x6a72('0xa')](this,_0x2adc18),0x3e8);}else{logger[_0x6a72('0x15')](_0x6a72('0x21'),this[_0x6a72('0x7')]['id'],this['agentId']);_0x2adc18[_0x6a72('0x17')]();setTimeout(this[_0x6a72('0x8')]['bind'](this),0x3e8);}}};RRMemory[_0x6a72('0xf')][_0x6a72('0x9')]=function(_0x4890b8){logger[_0x6a72('0x15')](_0x6a72('0x22'),this[_0x6a72('0x7')]['id'],this[_0x6a72('0x14')]);if(_['isNil'](this[_0x6a72('0x12')]['agents'][this['agentId']])){logger[_0x6a72('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agentId']);}else{clearInterval(this[_0x6a72('0x6')][this[_0x6a72('0x14')]]);util[_0x6a72('0x23')](this['notificationId'],this[_0x6a72('0x7')]['id'],this['realtime'][_0x6a72('0x13')][this[_0x6a72('0x14')]],this[_0x6a72('0x5')],this[_0x6a72('0x3')]);util['writeLog'](this['squeue']['id'],this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]],_0x6a72('0x24'));this[_0x6a72('0x12')]['agents'][this[_0x6a72('0x14')]][_0x6a72('0x1b')]=![];this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]][_0x6a72('0x1c')]=undefined;util['removeWaitingNotification'](this[_0x6a72('0x12')],this['routing'],this[_0x6a72('0x12')][_0x6a72('0x13')][this[_0x6a72('0x14')]],this[_0x6a72('0x7')][_0x6a72('0x1a')]);}if(!_0x4890b8){setTimeout(this[_0x6a72('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0x2d2ecf,_0x4f5b85,_0x2bb849,_0x520606){return new RRMemory(_0x2d2ecf,_0x4f5b85,_0x2bb849,_0x520606);}module[_0x6a72('0x25')]=rrmemory;
\ No newline at end of file
+var _0xb45e=['squeue','queue','realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','debug','mapAgentsId','isNil','done','agents','busy','busyQueue','saveWaitingNotification','notificationId','writeLog','hideNotification','removeWaitingNotification','exports','lodash','./util','../../../../../config/logger','routing'];(function(_0xbf4849,_0x1ba7fe){var _0x4f893a=function(_0x2c41de){while(--_0x2c41de){_0xbf4849['push'](_0xbf4849['shift']());}};_0x4f893a(++_0x1ba7fe);}(_0xb45e,0x146));var _0xeb45=function(_0x100422,_0x33649f){_0x100422=_0x100422-0x0;var _0xbfb68c=_0xb45e[_0x100422];return _0xbfb68c;};'use strict';var rr=require('rr');var _=require(_0xeb45('0x0'));var uuid=require('uuid');var util=require(_0xeb45('0x1'));var logger=require(_0xeb45('0x2'))(_0xeb45('0x3'));var RRMemory=function(_0x5a9618,_0x28c2e7,_0x44451b,_0x5e7653){this['notificationId']=uuid['v4']();this[_0xeb45('0x4')]=_0x5a9618;this[_0xeb45('0x5')]=_0x28c2e7;this[_0xeb45('0x6')]=_0x44451b;this['routing']=_0x5e7653;this[_0xeb45('0x7')]={};this['squeue'][_0xeb45('0x8')](this[_0xeb45('0x9')][_0xeb45('0xa')](this),this[_0xeb45('0xb')][_0xeb45('0xa')](this),this[_0xeb45('0xc')]);this[_0xeb45('0x4')]['on'](_0xeb45('0xd'),this[_0xeb45('0xb')][_0xeb45('0xa')](this));this[_0xeb45('0x4')]['on']('drained',this[_0xeb45('0xe')][_0xeb45('0xa')](this));};RRMemory['prototype'][_0xeb45('0x8')]=function(){this[_0xeb45('0x4')][_0xeb45('0x8')](this[_0xeb45('0x9')][_0xeb45('0xa')](this),this[_0xeb45('0xb')]['bind'](this));};RRMemory[_0xeb45('0xf')][_0xeb45('0xe')]=function(){this[_0xeb45('0xb')](!![]);};RRMemory[_0xeb45('0xf')][_0xeb45('0x10')]=function(_0x376568){if(util[_0xeb45('0x11')](this['squeue']['id'],this[_0xeb45('0x6')]['agents'][this[_0xeb45('0x12')]],this[_0xeb45('0x4')][_0xeb45('0x13')],!![])){logger[_0xeb45('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0xeb45('0x4')]['id'],this['agentId']);clearInterval(this['intervals'][this[_0xeb45('0x12')]]);_0x376568['done']();setTimeout(this[_0xeb45('0x8')]['bind'](this),0x3e8);}};RRMemory[_0xeb45('0xf')]['handleRun']=function(_0x4bf244){this[_0xeb45('0x12')]=rr(this['queue'][_0xeb45('0x15')]);logger[_0xeb45('0x14')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xeb45('0x4')]['id'],this[_0xeb45('0x12')]);if(_[_0xeb45('0x16')](this[_0xeb45('0x6')]['agents'][this[_0xeb45('0x12')]])){logger[_0xeb45('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xeb45('0x4')]['id'],this[_0xeb45('0x12')]);_0x4bf244[_0xeb45('0x17')]();setTimeout(this[_0xeb45('0x8')]['bind'](this),0x3e8);}else{if(util[_0xeb45('0x11')](this[_0xeb45('0x4')]['id'],this['realtime'][_0xeb45('0x18')][this[_0xeb45('0x12')]],this['squeue'][_0xeb45('0x13')],!![])){this[_0xeb45('0x6')][_0xeb45('0x18')][this[_0xeb45('0x12')]][_0xeb45('0x19')]=!![];this[_0xeb45('0x6')][_0xeb45('0x18')][this[_0xeb45('0x12')]][_0xeb45('0x1a')]=this[_0xeb45('0x5')]['name'];util[_0xeb45('0x1b')](this[_0xeb45('0x6')],this[_0xeb45('0x3')],this[_0xeb45('0x6')][_0xeb45('0x18')][this['agentId']],this['squeue'][_0xeb45('0x13')]);util['showNotification'](this[_0xeb45('0x1c')],this[_0xeb45('0x4')]['id'],this[_0xeb45('0x6')][_0xeb45('0x18')][this['agentId']],this['queue'],this[_0xeb45('0x3')]);util[_0xeb45('0x1d')](this[_0xeb45('0x4')]['id'],this[_0xeb45('0x6')][_0xeb45('0x18')][this['agentId']],'RINGING');this['intervals'][this[_0xeb45('0x12')]]=setInterval(this[_0xeb45('0x10')][_0xeb45('0xa')](this,_0x4bf244),0x3e8);}else{logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xeb45('0x4')]['id'],this[_0xeb45('0x12')]);_0x4bf244[_0xeb45('0x17')]();setTimeout(this['push'][_0xeb45('0xa')](this),0x3e8);}}};RRMemory[_0xeb45('0xf')]['handleTimeout']=function(_0x259764){logger[_0xeb45('0x14')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xeb45('0x4')]['id'],this[_0xeb45('0x12')]);if(_[_0xeb45('0x16')](this['realtime'][_0xeb45('0x18')][this[_0xeb45('0x12')]])){logger[_0xeb45('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xeb45('0x4')]['id'],this[_0xeb45('0x12')]);}else{clearInterval(this[_0xeb45('0x7')][this[_0xeb45('0x12')]]);util[_0xeb45('0x1e')](this[_0xeb45('0x1c')],this[_0xeb45('0x4')]['id'],this[_0xeb45('0x6')]['agents'][this[_0xeb45('0x12')]],this[_0xeb45('0x5')],this[_0xeb45('0x3')]);util['writeLog'](this[_0xeb45('0x4')]['id'],this['realtime'][_0xeb45('0x18')][this[_0xeb45('0x12')]],'TIMEOUT');this['realtime'][_0xeb45('0x18')][this[_0xeb45('0x12')]][_0xeb45('0x19')]=![];this[_0xeb45('0x6')]['agents'][this[_0xeb45('0x12')]][_0xeb45('0x1a')]=undefined;util[_0xeb45('0x1f')](this['realtime'],this[_0xeb45('0x3')],this['realtime'][_0xeb45('0x18')][this[_0xeb45('0x12')]],this[_0xeb45('0x4')]['channel']);}if(!_0x259764){setTimeout(this[_0xeb45('0x8')][_0xeb45('0xa')](this),0x3e8);}};function rrmemory(_0x47d52c,_0x43b010,_0x3111df,_0xa73ff5){return new RRMemory(_0x47d52c,_0x43b010,_0x3111df,_0xa73ff5);}module[_0xeb45('0x20')]=rrmemory;
\ No newline at end of file
index 458beb3..82a53e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3cf=['debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','\x20MAXCAPACITY','showNotification','checkWaitingNotifications','UserId','some','channel','QueuesWaitingInteractions','capitalize','interaction','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','writeLog','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','message','notification:%s','save','remove'];(function(_0x4d924e,_0x3124bc){var _0x10b717=function(_0x59d14a){while(--_0x59d14a){_0x4d924e['push'](_0x4d924e['shift']());}};_0x10b717(++_0x3124bc);}(_0xa3cf,0xed));var _0xfa3c=function(_0xf2222d,_0x37433b){_0xf2222d=_0xf2222d-0x0;var _0x305f7e=_0xa3cf[_0xf2222d];return _0x305f7e;};'use strict';var _=require('lodash');var util=require(_0xfa3c('0x0'));var utils=require(_0xfa3c('0x1'));var Redis=require(_0xfa3c('0x2'));var config=require(_0xfa3c('0x3'));var logger=require(_0xfa3c('0x4'))(_0xfa3c('0x5'));config['redis']=_['defaults'](config['redis'],{'host':_0xfa3c('0x6'),'port':0x18eb});var io=require(_0xfa3c('0x7'))(new Redis(config['redis']));function sendNotification(_0xb54ce8,_0x10b812,_0x536e19,_0x4c38c9,_0x2d87ff,_0x4da19d){io['to'](util[_0xfa3c('0x8')](_0xfa3c('0x9'),_0x4c38c9[_0xfa3c('0xa')]))[_0xfa3c('0xb')](_0xfa3c('0xc'),_0x4c38c9);var _0x4baa7f=_0x4da19d||{};var _0x2f4655=_0x536e19[_0xfa3c('0xd')]('.');var _0x1090f3={'uniqueid':_0x10b812,'channel':_0x2f4655[0x0],'id':_0x2f4655[0x1],'title':_0x2f4655[0x0]+'\x20interaction','interactionId':_0x2f4655[0x2],'queue':_0x2d87ff?_0x2d87ff[_0xfa3c('0xa')]:null,'sound':_0x4baa7f[_0xfa3c('0xe')][_0xfa3c('0xf')],'shake':_0x4baa7f['account'][_0xfa3c('0x10')]};try{if(!_0x4baa7f[_0xfa3c('0x11')]){_0x4baa7f[_0xfa3c('0x11')]={};}if(_0x2d87ff){_0x4baa7f[_0xfa3c('0x11')][_0xfa3c('0x12')]=_0x2d87ff;}else if(_0x4baa7f[_0xfa3c('0x11')][_0xfa3c('0x12')]){delete _0x4baa7f[_0xfa3c('0x11')][_0xfa3c('0x12')];}_0x1090f3['msg']=utils[_0xfa3c('0x13')](_0x4baa7f[_0xfa3c('0xe')][_0xfa3c('0x14')],_0x4baa7f);}catch(_0x2befb8){_0x1090f3[_0xfa3c('0x15')]=_0xfa3c('0x16');logger['error'](util[_0xfa3c('0x8')](_0xfa3c('0x17'),_0x10b812,_0x2befb8[_0xfa3c('0x18')]));}io['to'](util['format'](_0xfa3c('0x9'),_0x4c38c9[_0xfa3c('0xa')]))[_0xfa3c('0xb')](util[_0xfa3c('0x8')](_0xfa3c('0x19'),_0xb54ce8?_0xfa3c('0x1a'):_0xfa3c('0x1b')),_0x1090f3);}function writeLog(_0x5cbd0e,_0x35941c,_0x183c25){return logger[_0xfa3c('0x1c')](util[_0xfa3c('0x8')](_0xfa3c('0x1d'),_0x5cbd0e,_0x35941c[_0xfa3c('0xa')],_0x183c25));}exports[_0xfa3c('0x1e')]=function(_0x3849f5,_0x59dc20,_0x3a4f19,_0x367d40){if(_0x59dc20[_0xfa3c('0x1f')]){writeLog(_0x3849f5,_0x59dc20,_0xfa3c('0x20'));return![];}if(!_0x59dc20[_0xfa3c('0x21')]){writeLog(_0x3849f5,_0x59dc20,'OFFLINE');return![];}if(_0x59dc20[_0x3a4f19+_0xfa3c('0x22')]){writeLog(_0x3849f5,_0x59dc20,_0xfa3c('0x23'));return![];}if(_0x367d40&&_0x59dc20['hasOwnProperty'](_0x3a4f19+'Capacity')&&_0x59dc20[_0xfa3c('0x24')](_0x3a4f19+_0xfa3c('0x25'))){if(_0x59dc20[_0x3a4f19+_0xfa3c('0x26')]>0x0&&_0x59dc20[_0x3a4f19+'CurrentCapacity']>=_0x59dc20[_0x3a4f19+'Capacity']){writeLog(_0x3849f5,_0x59dc20,_0x3a4f19['toUpperCase']()+_0xfa3c('0x27'));return![];}}return!![];};exports[_0xfa3c('0x28')]=function(_0x51355,_0x338672,_0x1423bb,_0x17e026,_0x8eae2c){return sendNotification(!![],_0x51355,_0x338672,_0x1423bb,_0x17e026,_0x8eae2c);};exports['hideNotification']=function(_0x441998,_0x58eed0,_0x2f27a8,_0x2aefdd,_0x4a9cd2){return sendNotification(![],_0x441998,_0x58eed0,_0x2f27a8,_0x2aefdd,_0x4a9cd2);};exports[_0xfa3c('0x29')]=function(_0x2105d0,_0x328379,_0x2f2b9a){var _0x5c06f2=_0x328379['interaction'][_0xfa3c('0x2a')];if(!_0x5c06f2&&_0x2f2b9a){_0x5c06f2=_0x2f2b9a['id'];}var _0x19bc51=_[_0xfa3c('0x2b')](_0x2105d0[_0x328379[_0xfa3c('0x2c')]+_0xfa3c('0x2d')],function(_0x4f792a){var _0x547cbc=_[_0xfa3c('0x2e')](_0x328379['channel'])+'InteractionId';return _0x4f792a[_0x547cbc]===_0x328379[_0xfa3c('0x2f')]['id'];});if(!_0x19bc51&&_0x5c06f2){_0x19bc51=_[_0xfa3c('0x2b')](_0x2105d0[_0xfa3c('0x30')][_0x5c06f2][_0x328379[_0xfa3c('0x2c')]+'WaitingInteractions'],function(_0x1bcb05){return _0x1bcb05['id']===_0x328379[_0xfa3c('0x2f')]['id'];});}return _0x19bc51;};exports[_0xfa3c('0x31')]=function(_0x408fe9,_0x5dbd9f,_0x55f245,_0x556f53){_0x408fe9[_0xfa3c('0x30')][_0x55f245['id']][_0x556f53+_0xfa3c('0x32')][_0x5dbd9f[_0xfa3c('0x18')]['id']]={'id':_0x5dbd9f[_0xfa3c('0x2f')]['id']};};exports[_0xfa3c('0x33')]=function(_0x829f93,_0x4e3c16,_0x24a642,_0xdc0fbf){delete _0x829f93[_0xfa3c('0x30')][_0x24a642['id']][_0xdc0fbf+_0xfa3c('0x32')][_0x4e3c16['message']['id']];};exports[_0xfa3c('0x34')]=writeLog;
\ No newline at end of file
+var _0xe6db=['save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','OFFLINE','Pause','hasOwnProperty','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','QueuesWaitingInteractions','capitalize','channel','InteractionId','some','WaitingInteractions','saveWaitingNotification','message','writeLog','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','format','user:%s','name','emit','user:save','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','notification:%s'];(function(_0x5327ac,_0x1a69f1){var _0x1a3ac6=function(_0xff016c){while(--_0xff016c){_0x5327ac['push'](_0x5327ac['shift']());}};_0x1a3ac6(++_0x1a69f1);}(_0xe6db,0x145));var _0xbe6d=function(_0x4b6588,_0x756795){_0x4b6588=_0x4b6588-0x0;var _0x18d3fd=_0xe6db[_0x4b6588];return _0x18d3fd;};'use strict';var _=require('lodash');var util=require(_0xbe6d('0x0'));var utils=require(_0xbe6d('0x1'));var Redis=require(_0xbe6d('0x2'));var config=require(_0xbe6d('0x3'));var logger=require(_0xbe6d('0x4'))(_0xbe6d('0x5'));config[_0xbe6d('0x6')]=_[_0xbe6d('0x7')](config[_0xbe6d('0x6')],{'host':_0xbe6d('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function sendNotification(_0x3dda2f,_0x2a9e39,_0x19228c,_0x4ef40a,_0x569874,_0x439abd){io['to'](util[_0xbe6d('0x9')](_0xbe6d('0xa'),_0x4ef40a[_0xbe6d('0xb')]))[_0xbe6d('0xc')](_0xbe6d('0xd'),_0x4ef40a);var _0x5957bc=_0x439abd||{};var _0xb9a5a2=_0x19228c['split']('.');var _0x12598e={'uniqueid':_0x2a9e39,'channel':_0xb9a5a2[0x0],'id':_0xb9a5a2[0x1],'title':_0xb9a5a2[0x0]+_0xbe6d('0xe'),'interactionId':_0xb9a5a2[0x2],'queue':_0x569874?_0x569874['name']:null,'sound':_0x5957bc[_0xbe6d('0xf')][_0xbe6d('0x10')],'shake':_0x5957bc[_0xbe6d('0xf')][_0xbe6d('0x11')]};try{if(!_0x5957bc[_0xbe6d('0x12')]){_0x5957bc['body']={};}if(_0x569874){_0x5957bc['body'][_0xbe6d('0x13')]=_0x569874;}else if(_0x5957bc[_0xbe6d('0x12')]['queue']){delete _0x5957bc[_0xbe6d('0x12')][_0xbe6d('0x13')];}_0x12598e[_0xbe6d('0x14')]=utils['getMustacheRender'](_0x5957bc['account'][_0xbe6d('0x15')],_0x5957bc);}catch(_0x14a8b3){_0x12598e[_0xbe6d('0x14')]=_0xbe6d('0x16');logger[_0xbe6d('0x17')](util[_0xbe6d('0x9')]('[%s][QUEUE]\x20%s',_0x2a9e39,_0x14a8b3['message']));}io['to'](util[_0xbe6d('0x9')](_0xbe6d('0xa'),_0x4ef40a['name']))[_0xbe6d('0xc')](util[_0xbe6d('0x9')](_0xbe6d('0x18'),_0x3dda2f?_0xbe6d('0x19'):_0xbe6d('0x1a')),_0x12598e);}function writeLog(_0x56545d,_0x25e131,_0x131a56){return logger[_0xbe6d('0x1b')](util[_0xbe6d('0x9')](_0xbe6d('0x1c'),_0x56545d,_0x25e131[_0xbe6d('0xb')],_0x131a56));}exports['isAgentAvailable']=function(_0x1e8879,_0x269324,_0x5b7423,_0x5b5a02){if(_0x269324[_0xbe6d('0x1d')]){writeLog(_0x1e8879,_0x269324,_0xbe6d('0x1e'));return![];}if(!_0x269324['online']){writeLog(_0x1e8879,_0x269324,_0xbe6d('0x1f'));return![];}if(_0x269324[_0x5b7423+_0xbe6d('0x20')]){writeLog(_0x1e8879,_0x269324,'PAUSE');return![];}if(_0x5b5a02&&_0x269324[_0xbe6d('0x21')](_0x5b7423+_0xbe6d('0x22'))&&_0x269324['hasOwnProperty'](_0x5b7423+'CurrentCapacity')){if(_0x269324[_0x5b7423+_0xbe6d('0x22')]>0x0&&_0x269324[_0x5b7423+'CurrentCapacity']>=_0x269324[_0x5b7423+_0xbe6d('0x22')]){writeLog(_0x1e8879,_0x269324,_0x5b7423[_0xbe6d('0x23')]()+_0xbe6d('0x24'));return![];}}return!![];};exports[_0xbe6d('0x25')]=function(_0x530577,_0x49fb38,_0x2f4e1b,_0x56f8fd,_0x3efc2f){return sendNotification(!![],_0x530577,_0x49fb38,_0x2f4e1b,_0x56f8fd,_0x3efc2f);};exports[_0xbe6d('0x26')]=function(_0xb8a12a,_0x1e0701,_0x520605,_0x16a7cb,_0x43435d){return sendNotification(![],_0xb8a12a,_0x1e0701,_0x520605,_0x16a7cb,_0x43435d);};exports[_0xbe6d('0x27')]=function(_0x3dc8bf,_0x1a4fe1,_0x417c32){var _0xea00e3=_0x1a4fe1[_0xbe6d('0x28')]['UserId'];if(!_0xea00e3&&_0x417c32){_0xea00e3=_0x417c32['id'];}var _0x12542e=_['some'](_0x3dc8bf[_0x1a4fe1['channel']+_0xbe6d('0x29')],function(_0x1bdd54){var _0x224038=_[_0xbe6d('0x2a')](_0x1a4fe1[_0xbe6d('0x2b')])+_0xbe6d('0x2c');return _0x1bdd54[_0x224038]===_0x1a4fe1[_0xbe6d('0x28')]['id'];});if(!_0x12542e&&_0xea00e3){_0x12542e=_[_0xbe6d('0x2d')](_0x3dc8bf['agents'][_0xea00e3][_0x1a4fe1[_0xbe6d('0x2b')]+_0xbe6d('0x2e')],function(_0xf19fc2){return _0xf19fc2['id']===_0x1a4fe1[_0xbe6d('0x28')]['id'];});}return _0x12542e;};exports[_0xbe6d('0x2f')]=function(_0x2b72bd,_0x2a2fb8,_0x228168,_0x4cfd9b){_0x2b72bd['agents'][_0x228168['id']][_0x4cfd9b+'WaitingInteractions'][_0x2a2fb8[_0xbe6d('0x30')]['id']]={'id':_0x2a2fb8[_0xbe6d('0x28')]['id']};};exports['removeWaitingNotification']=function(_0x4e7193,_0x547a43,_0x42480a,_0x53b81d){delete _0x4e7193['agents'][_0x42480a['id']][_0x53b81d+_0xbe6d('0x2e')][_0x547a43[_0xbe6d('0x30')]['id']];};exports[_0xbe6d('0x31')]=writeLog;
\ No newline at end of file
index 17ff212..a18d913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4977=['length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20no\x20variable','body','isObject','stringify','shelljs','lodash','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x2f6fde,_0x139b26){var _0x11d5fc=function(_0x5d7c04){while(--_0x5d7c04){_0x2f6fde['push'](_0x2f6fde['shift']());}};_0x11d5fc(++_0x139b26);}(_0x4977,0x103));var _0x7497=function(_0x208959,_0x10ef71){_0x208959=_0x208959-0x0;var _0x2e5d2d=_0x4977[_0x208959];return _0x2e5d2d;};'use strict';var schema=require('validate');var sh=require(_0x7497('0x0'));var _=require(_0x7497('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x7497('0x2'));var system=schema({'command':{'type':_0x7497('0x3'),'required':!![],'message':_0x7497('0x4')}});exports['consequence']=function(_0x479d74,_0x247327){return function(_0x17ad1e){try{var _0x144e45={'command':_0x247327[0x0]};var _0x1a4215=system['validate'](_0x144e45,{'typecast':!![]});if(_0x1a4215[_0x7497('0x5')]){logger[_0x7497('0x6')](_0x7497('0x7'),_0x479d74,_[_0x7497('0x8')](_0x1a4215,_0x7497('0x9'))[_0x7497('0xa')](',\x20'));logger[_0x7497('0xb')](_0x7497('0xc'),_0x479d74);_0x17ad1e[_0x7497('0xd')]();}else{var _0x221e4d=this;var _0x2dff0d=utils[_0x7497('0xe')](_0x247327[0x0],this);logger[_0x7497('0xb')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x479d74,_0x2dff0d);sh[_0x7497('0xf')](_[_0x7497('0x10')](_0x2dff0d),function(_0x2c6896,_0x3f3405){logger[_0x7497('0xb')](_0x7497('0x11'),_0x479d74,_0x2c6896);if(_0x2c6896==0x0){var _0x7e5ca9=_0x3f3405[_0x7497('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x7497('0x13')](_0x247327[0x1])||_['isEmpty'](_0x247327[0x1])){logger['info'](_0x7497('0x14'),_0x479d74);_0x221e4d[_0x7497('0x15')][_0x247327[0x1]]=_0x7e5ca9;}else{logger['info']('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x479d74,_0x247327[0x1],_0x7e5ca9);_0x221e4d[_0x7497('0x15')][_0x247327[0x1]]=_0x7e5ca9;}}_0x17ad1e[_0x7497('0xd')]();});}}catch(_0x229074){logger[_0x7497('0x6')](_0x7497('0x7'),_0x479d74,_[_0x7497('0x16')](_0x229074)?JSON[_0x7497('0x17')](_0x229074):_0x229074);logger[_0x7497('0xb')](_0x7497('0xc'),_0x479d74);_0x17ad1e['next']();}};};
\ No newline at end of file
+var _0xd976=['message','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','lodash','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s'];(function(_0x100e45,_0x122c67){var _0x38d30f=function(_0x58ccee){while(--_0x58ccee){_0x100e45['push'](_0x100e45['shift']());}};_0x38d30f(++_0x122c67);}(_0xd976,0x12f));var _0x6d97=function(_0x17dabd,_0x79b6c6){_0x17dabd=_0x17dabd-0x0;var _0x4694e6=_0xd976[_0x17dabd];return _0x4694e6;};'use strict';var schema=require(_0x6d97('0x0'));var sh=require(_0x6d97('0x1'));var _=require(_0x6d97('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x6d97('0x3'));var system=schema({'command':{'type':'string','required':!![],'message':_0x6d97('0x4')}});exports[_0x6d97('0x5')]=function(_0x3dd0aa,_0x46f887){return function(_0x398d57){try{var _0x45ddf0={'command':_0x46f887[0x0]};var _0x1aa1e7=system[_0x6d97('0x0')](_0x45ddf0,{'typecast':!![]});if(_0x1aa1e7[_0x6d97('0x6')]){logger[_0x6d97('0x7')](_0x6d97('0x8'),_0x3dd0aa,_['map'](_0x1aa1e7,_0x6d97('0x9'))['join'](',\x20'));logger[_0x6d97('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3dd0aa);_0x398d57[_0x6d97('0xb')]();}else{var _0x4178fc=this;var _0x34876c=utils[_0x6d97('0xc')](_0x46f887[0x0],this);logger[_0x6d97('0xa')](_0x6d97('0xd'),_0x3dd0aa,_0x34876c);sh[_0x6d97('0xe')](_[_0x6d97('0xf')](_0x34876c),function(_0x79bc19,_0x4dd1ca){logger[_0x6d97('0xa')](_0x6d97('0x10'),_0x3dd0aa,_0x79bc19);if(_0x79bc19==0x0){var _0xc67450=_0x4dd1ca[_0x6d97('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0x6d97('0x12')](_0x46f887[0x1])||_['isEmpty'](_0x46f887[0x1])){logger[_0x6d97('0xa')](_0x6d97('0x13'),_0x3dd0aa);_0x4178fc[_0x6d97('0x14')][_0x46f887[0x1]]=_0xc67450;}else{logger['info'](_0x6d97('0x15'),_0x3dd0aa,_0x46f887[0x1],_0xc67450);_0x4178fc[_0x6d97('0x14')][_0x46f887[0x1]]=_0xc67450;}}_0x398d57['next']();});}}catch(_0x113d51){logger[_0x6d97('0x7')]('[%s][SYSTEM]\x20%s',_0x3dd0aa,_[_0x6d97('0x16')](_0x113d51)?JSON['stringify'](_0x113d51):_0x113d51);logger[_0x6d97('0xa')](_0x6d97('0x17'),_0x3dd0aa);_0x398d57[_0x6d97('0xb')]();}};};
\ No newline at end of file
index f75a28f..c4c6c26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf57=['../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','channel','catch','stringify','finally','next','isObject','validate','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0x3ee586,_0x40dab0){var _0x5892de=function(_0x4c5838){while(--_0x4c5838){_0x3ee586['push'](_0x3ee586['shift']());}};_0x5892de(++_0x40dab0);}(_0xdf57,0x174));var _0x7df5=function(_0x32bff9,_0x3f27d5){_0x32bff9=_0x32bff9-0x0;var _0xbab93=_0xdf57[_0x32bff9];return _0xbab93;};'use strict';var schema=require(_0x7df5('0x0'));var _=require('lodash');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x7df5('0x1')),'smsInteraction':require(_0x7df5('0x2')),'mailInteraction':require(_0x7df5('0x3')),'faxInteraction':require(_0x7df5('0x4')),'whatsappInteraction':require(_0x7df5('0x5'))};var logger=require(_0x7df5('0x6'))(_0x7df5('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x7df5('0x8')}});exports[_0x7df5('0x9')]=function(_0x3451ba,_0x5340b9,_0x480ddb,_0x213772){return function(_0x43fe68){try{var _0x106376={'tag':_0x5340b9[0x0]};var _0x376269=tag[_0x7df5('0x0')](_0x106376,{'typecast':!![]});if(_0x376269[_0x7df5('0xa')]){logger[_0x7df5('0xb')](_0x7df5('0xc'),_0x3451ba,_[_0x7df5('0xd')](_0x376269,_0x7df5('0xe'))[_0x7df5('0xf')](',\x20'));logger[_0x7df5('0x10')](_0x7df5('0x11'),_0x3451ba);_0x43fe68['next']();}else{var _0x47c838={'ids':[_0x5340b9[0x0]]};if(rpc[_0x213772['channel']+_0x7df5('0x12')]){rpc[_0x213772['channel']+_0x7df5('0x12')][_0x7df5('0x13')](_0x213772[_0x7df5('0x14')]['id'],_0x47c838)[_0x7df5('0x15')](function(_0x35ee5c){logger['info'](_0x7df5('0x16'),_0x3451ba,_0x5340b9[0x1],_0x213772[_0x7df5('0x17')],_0x213772['interaction']['id']);})[_0x7df5('0x18')](function(_0x222fc6){logger[_0x7df5('0xb')](_0x7df5('0xc'),_0x3451ba,JSON[_0x7df5('0x19')](_0x222fc6));logger[_0x7df5('0x10')](_0x7df5('0x11'),_0x3451ba);})[_0x7df5('0x1a')](function(){_0x43fe68[_0x7df5('0x1b')]();});}}}catch(_0xa384e6){logger[_0x7df5('0xb')](_0x7df5('0xc'),_0x3451ba,_[_0x7df5('0x1c')](_0xa384e6)?JSON['stringify'](_0xa384e6):_0xa384e6);logger[_0x7df5('0x10')](_0x7df5('0x11'),_0x3451ba);_0x43fe68[_0x7df5('0x1b')]();}};};
\ No newline at end of file
+var _0xe87c=['../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','isObject','validate','lodash','../../rpc/chatInteraction'];(function(_0x89dd8a,_0x4dc237){var _0x158d12=function(_0x3861e2){while(--_0x3861e2){_0x89dd8a['push'](_0x89dd8a['shift']());}};_0x158d12(++_0x4dc237);}(_0xe87c,0x10b));var _0xce87=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xe87c[_0x5f09c5];return _0x426ad9;};'use strict';var schema=require(_0xce87('0x0'));var _=require(_0xce87('0x1'));var rpc={'chatInteraction':require(_0xce87('0x2')),'openchannelInteraction':require(_0xce87('0x3')),'smsInteraction':require(_0xce87('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xce87('0x5')),'whatsappInteraction':require(_0xce87('0x6'))};var logger=require(_0xce87('0x7'))(_0xce87('0x8'));var tag=schema({'tag':{'type':_0xce87('0x9'),'required':!![],'message':_0xce87('0xa')}});exports[_0xce87('0xb')]=function(_0x3f55ff,_0x2ea1fd,_0x47c60f,_0x31321d){return function(_0x29e0a0){try{var _0x221d27={'tag':_0x2ea1fd[0x0]};var _0x13c20e=tag[_0xce87('0x0')](_0x221d27,{'typecast':!![]});if(_0x13c20e[_0xce87('0xc')]){logger[_0xce87('0xd')](_0xce87('0xe'),_0x3f55ff,_[_0xce87('0xf')](_0x13c20e,_0xce87('0x10'))[_0xce87('0x11')](',\x20'));logger[_0xce87('0x12')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3f55ff);_0x29e0a0[_0xce87('0x13')]();}else{var _0x4c5663={'ids':[_0x2ea1fd[0x0]]};if(rpc[_0x31321d[_0xce87('0x14')]+'Interaction']){rpc[_0x31321d[_0xce87('0x14')]+_0xce87('0x15')][_0xce87('0x16')](_0x31321d[_0xce87('0x17')]['id'],_0x4c5663)[_0xce87('0x18')](function(_0x43a80f){logger[_0xce87('0x12')](_0xce87('0x19'),_0x3f55ff,_0x2ea1fd[0x1],_0x31321d[_0xce87('0x14')],_0x31321d[_0xce87('0x17')]['id']);})[_0xce87('0x1a')](function(_0x3057ce){logger[_0xce87('0xd')]('[%s][TAG]\x20%s',_0x3f55ff,JSON[_0xce87('0x1b')](_0x3057ce));logger[_0xce87('0x12')](_0xce87('0x1c'),_0x3f55ff);})['finally'](function(){_0x29e0a0['next']();});}}}catch(_0x5e349f){logger['error'](_0xce87('0xe'),_0x3f55ff,_[_0xce87('0x1d')](_0x5e349f)?JSON['stringify'](_0x5e349f):_0x5e349f);logger[_0xce87('0x12')](_0xce87('0x1c'),_0x3f55ff);_0x29e0a0[_0xce87('0x13')]();}};};
\ No newline at end of file
index d42082a..0474cde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x253c=['login','push','params','stringify','application/json-rpc','then','parse','result','logged','channelId=','&sessionId=','&data=','info','stop','catch','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','lodash','consequence','replace','includes','urlOnAnswer','?params=','title','jsonrpc','2.0','method'];(function(_0x426ab4,_0x7e168a){var _0x229d81=function(_0x32e807){while(--_0x32e807){_0x426ab4['push'](_0x426ab4['shift']());}};_0x229d81(++_0x7e168a);}(_0x253c,0xa4));var _0xc253=function(_0x111c47,_0x2c867b){_0x111c47=_0x111c47-0x0;var _0x30790f=_0x253c[_0x111c47];return _0x30790f;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')('routing');var _=require(_0xc253('0x0'));var arr=[];exports[_0xc253('0x1')]=function(_0x4d13fe,_0x321b08){return function(_0x3e64b9){var _0x1fd14c=_0x321b08[0xa];var _0x5b957e=_0x321b08[0xb];var _0x580095=_0x321b08[0xc];var _0x271038=_0x321b08[0xd];var _0x41885b=_0x321b08[0xe];var _0x439df3=_0x321b08[0xf]['replace'](/\n/g,'\x20-\x20');var _0x418877=_0x321b08[0x10][_0xc253('0x2')](/\n/g,'\x20');if(!arr[_0xc253('0x3')](_0x5b957e)){arr['push'](_0x5b957e);var _0x153431=_0x321b08[0x3];var _0x1b861d=_0x321b08[0x4];var _0x4489c9=_0x321b08[0x1];var _0x53cf4c=_0x321b08[0x0];var _0x2a50ff={};_0x2a50ff[_0xc253('0x4')]=_0x321b08[0x8]+'?params='+_0x580095+'|'+_0x1fd14c+'|'+_0x271038+'|'+_0x5b957e+'|'+_0x41885b;_0x2a50ff['urlOnRing']=_0x321b08[0x7]+_0xc253('0x5')+_0x580095+'|'+_0x1fd14c+'|'+_0x271038+'|'+_0x5b957e+'|'+_0x41885b+'|'+_0x439df3+'|'+_0x418877;_0x2a50ff[_0xc253('0x6')]=_0x321b08[0x9];var _0xed9335={};_0xed9335[_0xc253('0x7')]=_0xc253('0x8');_0xed9335[_0xc253('0x9')]=_0xc253('0xa');var _0x525131=[];_0x525131['push'](_0x321b08[0x2]);_0x525131[_0xc253('0xb')](_0x321b08[0x5]);_0x525131[_0xc253('0xb')](_0x321b08[0x6]);_0xed9335[_0xc253('0xc')]=_0x525131;_0xed9335['id']=0x1;var _0x5cef80=JSON[_0xc253('0xd')](_0xed9335);var _0x4a8b8f={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x153431,'headers':{'Content-Type':_0xc253('0xe')},'body':_0x5cef80};return rp(_0x4a8b8f)[_0xc253('0xf')](function(_0x4fd836){const _0x58bf57=JSON[_0xc253('0x10')](_0x4fd836);if(!_0x58bf57[_0xc253('0x11')][_0xc253('0x12')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x275b80=_0x5b957e;var _0x4f51f9=_0xc253('0x13')+_0x4489c9+'&serviceId='+_0x53cf4c+_0xc253('0x14')+_0x275b80+_0xc253('0x15')+JSON[_0xc253('0xd')](_0x2a50ff);var _0x52c161=_0x1b861d+'?'+_0x4f51f9;return rp(_0x52c161);})[_0xc253('0xf')](function(_0x5ecc8c){logger[_0xc253('0x16')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x4d13fe,_0x5ecc8c);_0x3e64b9[_0xc253('0x17')]();})[_0xc253('0x18')](function(_0x385933){logger[_0xc253('0x19')](_0xc253('0x1a'),_0x4d13fe,_[_0xc253('0x1b')](_0x385933)?JSON[_0xc253('0xd')](_0x385933):_0x385933);_0x3e64b9['stop']();});}else{logger[_0xc253('0x16')](_0xc253('0x1c'),_0x4d13fe);_0x3e64b9['next']();}};};
\ No newline at end of file
+var _0xee5c=['login','params','stringify','utf8','POST','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error','[%s][TVOX]\x20%s','isObject','next','request-promise','../../../../config/logger','routing','lodash','consequence','includes','push','urlOnAnswer','urlOnRing','?params=','jsonrpc','2.0'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xee5c,0xb4));var _0xcee5=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xee5c[_0x26b8b5];return _0x2150a9;};'use strict';var rp=require(_0xcee5('0x0'));var logger=require(_0xcee5('0x1'))(_0xcee5('0x2'));var _=require(_0xcee5('0x3'));var arr=[];exports[_0xcee5('0x4')]=function(_0x5bbc1e,_0x2ae77c){return function(_0x1acfa3){var _0x4466f4=_0x2ae77c[0xa];var _0x4f4cd2=_0x2ae77c[0xb];var _0x1f1d7d=_0x2ae77c[0xc];var _0x222577=_0x2ae77c[0xd];var _0x213de9=_0x2ae77c[0xe];var _0x4844c7=_0x2ae77c[0xf]['replace'](/\n/g,'\x20-\x20');var _0x4761ff=_0x2ae77c[0x10]['replace'](/\n/g,'\x20');if(!arr[_0xcee5('0x5')](_0x4f4cd2)){arr[_0xcee5('0x6')](_0x4f4cd2);var _0x2ea7ee=_0x2ae77c[0x3];var _0x2a5f92=_0x2ae77c[0x4];var _0x242c48=_0x2ae77c[0x1];var _0x169a0e=_0x2ae77c[0x0];var _0x4ea01f={};_0x4ea01f[_0xcee5('0x7')]=_0x2ae77c[0x8]+'?params='+_0x1f1d7d+'|'+_0x4466f4+'|'+_0x222577+'|'+_0x4f4cd2+'|'+_0x213de9;_0x4ea01f[_0xcee5('0x8')]=_0x2ae77c[0x7]+_0xcee5('0x9')+_0x1f1d7d+'|'+_0x4466f4+'|'+_0x222577+'|'+_0x4f4cd2+'|'+_0x213de9+'|'+_0x4844c7+'|'+_0x4761ff;_0x4ea01f['title']=_0x2ae77c[0x9];var _0x35feab={};_0x35feab[_0xcee5('0xa')]=_0xcee5('0xb');_0x35feab['method']=_0xcee5('0xc');var _0x42f46a=[];_0x42f46a[_0xcee5('0x6')](_0x2ae77c[0x2]);_0x42f46a[_0xcee5('0x6')](_0x2ae77c[0x5]);_0x42f46a[_0xcee5('0x6')](_0x2ae77c[0x6]);_0x35feab[_0xcee5('0xd')]=_0x42f46a;_0x35feab['id']=0x1;var _0xa0d122=JSON[_0xcee5('0xe')](_0x35feab);var _0x57170f={'encoding':_0xcee5('0xf'),'method':_0xcee5('0x10'),'timeout':0x2710,'url':_0x2ea7ee,'headers':{'Content-Type':'application/json-rpc'},'body':_0xa0d122};return rp(_0x57170f)[_0xcee5('0x11')](function(_0x45a92a){const _0x382af7=JSON[_0xcee5('0x12')](_0x45a92a);if(!_0x382af7[_0xcee5('0x13')][_0xcee5('0x14')]){throw new Error(_0xcee5('0x15'));}var _0x325031=_0x4f4cd2;var _0x35a62e=_0xcee5('0x16')+_0x242c48+_0xcee5('0x17')+_0x169a0e+'&sessionId='+_0x325031+_0xcee5('0x18')+JSON[_0xcee5('0xe')](_0x4ea01f);var _0x1f4ec8=_0x2a5f92+'?'+_0x35a62e;return rp(_0x1f4ec8);})[_0xcee5('0x11')](function(_0x9af9e8){logger[_0xcee5('0x19')](_0xcee5('0x1a'),_0x5bbc1e,_0x9af9e8);_0x1acfa3[_0xcee5('0x1b')]();})['catch'](function(_0x1b0435){logger[_0xcee5('0x1c')](_0xcee5('0x1d'),_0x5bbc1e,_[_0xcee5('0x1e')](_0x1b0435)?JSON[_0xcee5('0xe')](_0x1b0435):_0x1b0435);_0x1acfa3['stop']();});}else{logger[_0xcee5('0x19')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x5bbc1e);_0x1acfa3[_0xcee5('0x1f')]();}};};
\ No newline at end of file
index 6d47b17..f26d32e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x42e8d3,_0x158aa4){var _0xb3d8ef=function(_0xfbe2d8){while(--_0xfbe2d8){_0x42e8d3['push'](_0x42e8d3['shift']());}};_0xb3d8ef(++_0x158aa4);}(_0xe706,0xa3));var _0x6e70=function(_0x3878e9,_0x14fcf2){_0x3878e9=_0x3878e9-0x0;var _0x2ad526=_0xe706[_0x3878e9];return _0x2ad526;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x3c4648,_0x41e838){var _0x58a70a=function(_0x4912ab){while(--_0x4912ab){_0x3c4648['push'](_0x3c4648['shift']());}};_0x58a70a(++_0x41e838);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 4a8d9f1..e66305a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3275=['%s:%s:%s','./interval','condition','intervals','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','.js','execute','Applications\x20executed','stringify','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','smsQueuesWaitingInteractions','server','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','./applications/utils','./applications/strategy/util','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','rules','channel','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','push','slice','amazonlex','message','tag','TagId','tvox','getMustacheRender','account','ChatWebsiteId','ContactId','body'];(function(_0x31d27d,_0x4cc192){var _0x5b4035=function(_0x334028){while(--_0x334028){_0x31d27d['push'](_0x31d27d['shift']());}};_0x5b4035(++_0x4cc192);}(_0x3275,0x105));var _0x5327=function(_0x5ada87,_0x2877b9){_0x5ada87=_0x5ada87-0x0;var _0x12d083=_0x3275[_0x5ada87];return _0x12d083;};'use strict';var _=require(_0x5327('0x0'));var util=require(_0x5327('0x1'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require('bluebird');var utils=require(_0x5327('0x2'));var sUtils=require(_0x5327('0x3'));var logger=require(_0x5327('0x4'))(_0x5327('0x5'));var rpc={'openchannelQueueReport':require(_0x5327('0x6')),'mailQueueReport':require(_0x5327('0x7')),'chatQueueReport':require(_0x5327('0x8')),'smsQueueReport':require(_0x5327('0x9')),'faxQueueReport':require(_0x5327('0xa')),'whatsappQueueReport':require(_0x5327('0xb'))};var RuleEngine=require(_0x5327('0xc'));function getId(_0x184ef9,_0x21855b,_0x25fe98){return util[_0x5327('0xd')](_0x5327('0xe'),_0x184ef9,_0x21855b||0x0,_0x25fe98||0x0);}function getIntervals(_0x1053c6,_0x3d3a78){var _0x492091=[];if(!_[_0x5327('0xf')](_0x3d3a78[_0x5327('0x10')])&&!_[_0x5327('0xf')](_0x1053c6[_0x3d3a78['IntervalId']])&&!_[_0x5327('0xf')](_0x1053c6[_0x3d3a78[_0x5327('0x10')]]['Intervals'])){_0x492091=_['map'](_0x1053c6[_0x3d3a78['IntervalId']][_0x5327('0x11')],_0x5327('0x12'));}else if(!_[_0x5327('0xf')](_0x3d3a78[_0x5327('0x12')])){_0x492091=[_0x3d3a78[_0x5327('0x12')]];}return _0x492091;}exports['listen']=function(_0x286679){_0x286679[_0x5327('0x13')]={};return new BPromise(function(_0x5fc4f5,_0x40f2bf){var _0x10a494={'Start':function(_0xa21b29){var _0x34621d=this;return new Promise(function(_0x1d8c44,_0xd01461){if(_0xa21b29){try{var _0x2df6db=[];var _0x9258d5=getId(_0xa21b29[_0x5327('0x14')],_0xa21b29['message']?_0xa21b29['message']['id']:0x0,_0xa21b29[_0x5327('0x15')]?_0xa21b29['interaction']['id']:0x0);var _0x12ff06=sUtils[_0x5327('0x16')](_0x286679,_0xa21b29);if(!_0x12ff06&&_0xa21b29[_0x5327('0x17')]&&_[_0x5327('0x18')](_0xa21b29[_0x5327('0x17')])&&_0xa21b29[_0x5327('0x17')][_0x5327('0x19')]){for(var _0x568ec5=0x0;_0x568ec5<_0xa21b29[_0x5327('0x17')][_0x5327('0x19')];_0x568ec5+=0x1){var _0x377c7f=_0xa21b29['applications'][_0x568ec5];if(fs[_0x5327('0x1a')](path[_0x5327('0x1b')](__dirname,_0x5327('0x17'),_0x377c7f[_0x5327('0x1c')]+'.js'))){var _0x1a25c3=[];switch(_0x377c7f[_0x5327('0x1c')][_0x5327('0x1d')]()){case _0x5327('0x1e'):var _0x581af1=_0x377c7f[_0x5327('0x1f')][_0x5327('0x20')](',');if(_0xa21b29[_0x5327('0x14')]==='mail'){_0x1a25c3['push'](_0x581af1[0x0]);_0x1a25c3[_0x5327('0x21')](_0x581af1[0x1]);_0x1a25c3[_0x5327('0x21')](_0x581af1['slice'](0x2,_0x581af1[_0x5327('0x19')])[_0x5327('0x1b')](','));}else{_0x1a25c3['push'](_0x581af1[0x0]);_0x1a25c3[_0x5327('0x21')](_0x581af1[_0x5327('0x22')](0x1,_0x581af1[_0x5327('0x19')])['join'](','));}break;case'dialogflow':var _0x3c3a9e=_0x377c7f[_0x5327('0x1f')][_0x5327('0x20')](',');_0x1a25c3['push'](_0x3c3a9e[0x0]);_0x1a25c3[_0x5327('0x21')](_0x3c3a9e[0x1]);_0x1a25c3['push'](_0x3c3a9e[_0x5327('0x22')](0x2,_0x3c3a9e['length'])[_0x5327('0x1b')](','));break;case'dialogflowv2':var _0x246758=_0x377c7f[_0x5327('0x1f')][_0x5327('0x20')](',');_0x1a25c3[_0x5327('0x21')](_0x246758[0x0]);_0x1a25c3['push'](_0x246758[0x1]);_0x1a25c3[_0x5327('0x21')](_0x246758[0x2]);_0x1a25c3[_0x5327('0x21')](_0x246758[0x3]);_0x1a25c3['push'](_0x246758[_0x5327('0x22')](0x4,_0x246758['length'])[_0x5327('0x1b')](','));break;case _0x5327('0x23'):var _0x6a39c6=_0x377c7f['appdata'][_0x5327('0x20')](',');_0x1a25c3[_0x5327('0x21')](_0x6a39c6[0x0]);_0x1a25c3[_0x5327('0x21')](_0x6a39c6[0x1]);_0x1a25c3[_0x5327('0x21')](_0x6a39c6[0x2]);_0x1a25c3[_0x5327('0x21')](_0x6a39c6[0x3]);_0x1a25c3[_0x5327('0x21')](_0x6a39c6['slice'](0x4,_0x6a39c6[_0x5327('0x19')])[_0x5327('0x1b')](','));break;case _0x5327('0x24'):_0x1a25c3[_0x5327('0x21')](_0x377c7f[_0x5327('0x1f')]);break;case _0x5327('0x25'):_0x1a25c3[_0x5327('0x21')](_0x377c7f[_0x5327('0x26')]);_0x1a25c3[_0x5327('0x21')](_0x377c7f['appdata']);break;case _0x5327('0x27'):var _0x253e2d=utils[_0x5327('0x28')](_0xa21b29[_0x5327('0x29')]['notificationTemplate'],_0xa21b29);var _0x46e6da=_0x377c7f['appdata'][_0x5327('0x20')](',');_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x0]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x1]);_0x1a25c3['push'](_0x46e6da[0x2]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x3]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x4]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x5]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x6]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x7]);_0x1a25c3[_0x5327('0x21')](_0x46e6da[0x8]);_0x1a25c3['push'](_0x46e6da[0x9]);_0x1a25c3['push'](_0x46e6da[0xa]);_0x1a25c3[_0x5327('0x21')](_0xa21b29[_0x5327('0x15')]['id']);_0x1a25c3[_0x5327('0x21')](_0xa21b29[_0x5327('0x24')]['id']);_0x1a25c3[_0x5327('0x21')](_0x377c7f[_0x5327('0x2a')]);_0x1a25c3['push'](_0xa21b29['interaction'][_0x5327('0x2b')]);_0x1a25c3[_0x5327('0x21')](_0xa21b29[_0x5327('0x2c')][_0x5327('0x2c')]);_0x1a25c3[_0x5327('0x21')](_0x253e2d);break;default:_0x1a25c3=_[_0x5327('0xf')](_0x377c7f[_0x5327('0x1f')])?[]:_0x377c7f[_0x5327('0x1f')][_0x5327('0x20')](',');}var _0x2526a9={'id':util[_0x5327('0xd')](_0x5327('0x2d'),_0x9258d5,_0x377c7f['id'],_0x377c7f['app']),'condition':require(_0x5327('0x2e'))[_0x5327('0x2f')](_0x9258d5,getIntervals(_0x286679[_0x5327('0x30')],_0x377c7f),_0x286679),'consequence':require('./applications/'+_0x377c7f[_0x5327('0x1c')])['consequence'](_0x9258d5,_0x1a25c3,_0x286679,_0xa21b29),'p':_0x377c7f[_0x5327('0x31')]||0x0};logger[_0x5327('0x32')](_0x5327('0x33'),_0x2526a9['id'],_0x5327('0x34'),getIntervals(_0x286679[_0x5327('0x30')],_0x377c7f)[_0x5327('0x1b')](_0x5327('0x35')));_0x2df6db[_0x5327('0x21')](_0x2526a9);}else{logger[_0x5327('0x36')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x5327('0x1b')](__dirname,'applications',_0x377c7f[_0x5327('0x1c')]+_0x5327('0x37')));}}_0x286679[_0x5327('0x13')][_0x9258d5]=new RuleEngine(_0x2df6db);_0x286679['rules'][_0x9258d5][_0x5327('0x38')](_0xa21b29,function(_0x5d9481){logger['info'](_0x5327('0x39'),JSON[_0x5327('0x3a')](_0x5d9481[_0x5327('0x3b')]));if(_0x286679[_0x5327('0x13')][_0x9258d5]){_0x286679[_0x5327('0x13')][_0x9258d5][_0x5327('0x3c')](_0x5327('0x3d'));}});return _0x1d8c44({'code':0xc8,'message':_0xa21b29});}else{if(_0x12ff06){logger[_0x5327('0x32')](util[_0x5327('0xd')](_0x5327('0x3e'),_0x9258d5));}else{logger[_0x5327('0x32')](_0x5327('0x3f'));}return _0x1d8c44({'code':0xc8,'message':_0xa21b29});}}catch(_0x531c8b){logger[_0x5327('0x36')](_0x531c8b[_0x5327('0x40')]);return _0xd01461(_0x34621d['error'](0x1f4,_0x531c8b));}}return _0xd01461(_0x5327('0x41'));});},'AcceptMessage':function(_0x44379e){var _0x3a83c4=this;return new Promise(function(_0x3d20c9,_0x56e6e0){if(_0x44379e[_0x5327('0x42')]&&_0x44379e['agent']['id']){if(_0x286679['agents'][_0x44379e['agent']['id']]){_0x286679[_0x5327('0x43')][_0x44379e[_0x5327('0x42')]['id']][_0x5327('0x44')]=![];_0x286679[_0x5327('0x43')][_0x44379e[_0x5327('0x42')]['id']][_0x5327('0x45')]=undefined;}}if(_0x44379e['message']&&_0x44379e[_0x5327('0x24')]['id']){try{var _0x5b70ec=getId(_0x44379e[_0x5327('0x14')],_0x44379e['message']?_0x44379e['message']['id']:0x0,_0x44379e[_0x5327('0x15')]?_0x44379e[_0x5327('0x15')]['id']:0x0);if(_0x286679['rules'][_0x5b70ec]){_0x286679[_0x5327('0x13')][_0x5b70ec][_0x5327('0x3c')](_0x5327('0x46'));if(rpc[_0x44379e[_0x5327('0x14')]+_0x5327('0x47')]){rpc[_0x44379e[_0x5327('0x14')]+_0x5327('0x47')][_0x5327('0x48')](_0x5b70ec,{'UserId':_0x44379e[_0x5327('0x24')][_0x5327('0x49')]})[_0x5327('0x4a')](function(){logger['error'](_0x5327('0x4b'));});}}return _0x3d20c9({'code':0xc8,'message':_0x44379e});}catch(_0x55ca4e){logger[_0x5327('0x36')](_0x55ca4e['stack']);return _0x56e6e0(_0x3a83c4[_0x5327('0x36')](0x1f4,_0x55ca4e));}}logger[_0x5327('0x36')](_0x5327('0x4c'));return _0x56e6e0(_0x3a83c4[_0x5327('0x36')](0x1f4,_0x5327('0x4c')));});},'RejectMessage':function(_0x28c946){var _0x5e5f0c=this;return new Promise(function(_0x40fa55,_0x11165f){if(_0x28c946[_0x5327('0x42')]&&_0x28c946[_0x5327('0x42')]['id']){try{if(_0x286679['agents'][_0x28c946[_0x5327('0x42')]['id']]){_0x286679['agents'][_0x28c946['agent']['id']][_0x5327('0x44')]=![];_0x286679[_0x5327('0x43')][_0x28c946[_0x5327('0x42')]['id']][_0x5327('0x45')]=undefined;}return _0x40fa55({'code':0xc8,'message':_0x28c946});}catch(_0x4c8b19){logger[_0x5327('0x36')](_0x4c8b19[_0x5327('0x40')]);return _0x11165f(_0x5e5f0c[_0x5327('0x36')](0x1f4,_0x4c8b19));}}logger[_0x5327('0x36')](_0x5327('0x4c'));return _0x11165f(_0x5e5f0c['error'](0x1f4,_0x5327('0x4c')));});},'AbandonInteraction':function(_0x34dd23){var _0x2928a0=this;return new Promise(function(_0x1ddad4,_0x2ac3a9){if(_0x34dd23[_0x5327('0x14')]&&_0x34dd23[_0x5327('0x15')]&&_0x34dd23[_0x5327('0x15')]['id']){try{var _0x11c6e0=getId(_0x34dd23['channel'],_0x34dd23[_0x5327('0x24')]?_0x34dd23[_0x5327('0x24')]['id']:0x0,_0x34dd23['interaction']?_0x34dd23[_0x5327('0x15')]['id']:0x0);if(_0x286679[_0x5327('0x13')][_0x11c6e0]){_0x286679['rules'][_0x11c6e0][_0x5327('0x3c')]('end');}return _0x1ddad4({'code':0xc8,'message':_0x34dd23});}catch(_0x252cdf){logger['error'](_0x252cdf[_0x5327('0x40')]);return _0x2ac3a9(_0x2928a0[_0x5327('0x36')](0x1f4,_0x252cdf));}}logger[_0x5327('0x36')](_0x5327('0x4c'));return _0x2ac3a9(_0x2928a0[_0x5327('0x36')](0x1f4,_0x5327('0x4c')));});},'AgentCapacity':function(_0x2d851e){var _0x46cca5=this;return new Promise(function(_0x1e74b0,_0x432bc4){if(_0x286679[_0x5327('0x43')][_0x5327('0x4d')](_0x2d851e['id'])){for(var _0x3ebcb2 in _0x2d851e['capacity']){if(_0x2d851e[_0x5327('0x4e')][_0x5327('0x4d')](_0x3ebcb2)){if(_0x286679['agents'][_0x2d851e['id']][_0x5327('0x4d')](_0x3ebcb2+_0x5327('0x4f'))){_0x286679[_0x5327('0x43')][_0x2d851e['id']][_0x3ebcb2+_0x5327('0x4f')]=parseInt(_0x2d851e[_0x5327('0x4e')][_0x3ebcb2],0xa);}}}_0x286679[_0x5327('0x43')][_0x2d851e['id']][_0x5327('0x50')]();return _0x1e74b0({'code':0xc8,'message':_0x286679['agents'][_0x2d851e['id']]});}else{return _0x432bc4(_0x46cca5[_0x5327('0x36')](0x1f4,_0x5327('0x51')));}});},'Agents':function(_0x4b45b6){return new Promise(function(_0x353135){var _0x2c1715=_['values'](_0x286679['agents']);if(_0x4b45b6&&_0x4b45b6['id']){var _0x76e5d9=_[_0x5327('0x52')](_0x2c1715,function(_0x2d8d3f){return _0x2d8d3f['id']===_0x4b45b6['id'];});_0x353135(_0x76e5d9);}else{_0x353135({'count':_0x2c1715[_0x5327('0x19')],'rows':_0x2c1715});}});},'ChatQueues':function(){return new Promise(function(_0x4f9357){var _0x7cfea3=[];for(var _0x17d0fc in _0x286679[_0x5327('0x53')]){if(_0x286679[_0x5327('0x53')][_0x5327('0x4d')](_0x17d0fc)){var _0x1d77fe=_0x286679['chatQueues'][_0x17d0fc];var _0x470c78={'id':_0x1d77fe['id'],'available':_0x1d77fe[_0x5327('0x54')],'loggedIn':_0x1d77fe[_0x5327('0x55')],'name':_0x1d77fe[_0x5327('0x56')],'paused':_0x1d77fe[_0x5327('0x57')],'waiting':_0x1d77fe[_0x5327('0x58')]};_0x7cfea3[_0x5327('0x21')](_0x470c78);}}_0x4f9357({'count':_0x7cfea3[_0x5327('0x19')],'rows':_0x7cfea3});});},'MailQueues':function(){return new Promise(function(_0x31e9ba){var _0xccd1b2=[];for(var _0x10a021 in _0x286679[_0x5327('0x59')]){if(_0x286679[_0x5327('0x59')][_0x5327('0x4d')](_0x10a021)){var _0x21a3f9=_0x286679[_0x5327('0x59')][_0x10a021];var _0x26ed0b={'id':_0x21a3f9['id'],'available':_0x21a3f9[_0x5327('0x54')],'loggedIn':_0x21a3f9[_0x5327('0x55')],'name':_0x21a3f9[_0x5327('0x56')],'paused':_0x21a3f9[_0x5327('0x57')],'waiting':_0x21a3f9['waiting']};_0xccd1b2[_0x5327('0x21')](_0x26ed0b);}}_0x31e9ba({'count':_0xccd1b2[_0x5327('0x19')],'rows':_0xccd1b2});});},'OpenchannelQueues':function(){return new Promise(function(_0x3d2bf9){var _0x5ad3f9=[];for(var _0x1a38f2 in _0x286679[_0x5327('0x5a')]){if(_0x286679['openchannelQueues'][_0x5327('0x4d')](_0x1a38f2)){var _0xfd3b15=_0x286679[_0x5327('0x5a')][_0x1a38f2];var _0x3ebae3={'id':_0xfd3b15['id'],'available':_0xfd3b15[_0x5327('0x54')],'loggedIn':_0xfd3b15[_0x5327('0x55')],'name':_0xfd3b15[_0x5327('0x56')],'paused':_0xfd3b15[_0x5327('0x57')],'waiting':_0xfd3b15[_0x5327('0x58')]};_0x5ad3f9['push'](_0x3ebae3);}}_0x3d2bf9({'count':_0x5ad3f9[_0x5327('0x19')],'rows':_0x5ad3f9});});},'SmsQueues':function(){return new Promise(function(_0x1bdd9a){var _0x3e2aed=[];for(var _0x2ab2f4 in _0x286679[_0x5327('0x5b')]){if(_0x286679[_0x5327('0x5b')][_0x5327('0x4d')](_0x2ab2f4)){var _0x3afc64=_0x286679['smsQueues'][_0x2ab2f4];var _0x540e1b={'id':_0x3afc64['id'],'available':_0x3afc64['available'],'loggedIn':_0x3afc64[_0x5327('0x55')],'name':_0x3afc64['name'],'paused':_0x3afc64[_0x5327('0x57')],'waiting':_0x3afc64[_0x5327('0x58')]};_0x3e2aed[_0x5327('0x21')](_0x540e1b);}}_0x1bdd9a({'count':_0x3e2aed[_0x5327('0x19')],'rows':_0x3e2aed});});},'FaxQueues':function(){return new Promise(function(_0x47c150){var _0x679e40=[];for(var _0x341194 in _0x286679[_0x5327('0x5c')]){if(_0x286679[_0x5327('0x5c')][_0x5327('0x4d')](_0x341194)){var _0x303062=_0x286679[_0x5327('0x5c')][_0x341194];var _0x4f41b0={'id':_0x303062['id'],'available':_0x303062[_0x5327('0x54')],'loggedIn':_0x303062[_0x5327('0x55')],'name':_0x303062[_0x5327('0x56')],'paused':_0x303062[_0x5327('0x57')],'waiting':_0x303062[_0x5327('0x58')]};_0x679e40[_0x5327('0x21')](_0x4f41b0);}}_0x47c150({'count':_0x679e40[_0x5327('0x19')],'rows':_0x679e40});});},'WhatsappQueues':function(){return new Promise(function(_0x34e8a5){var _0x272a9b=[];for(var _0x4d58e6 in _0x286679[_0x5327('0x5d')]){if(_0x286679[_0x5327('0x5d')][_0x5327('0x4d')](_0x4d58e6)){var _0x1f187c=_0x286679[_0x5327('0x5d')][_0x4d58e6];var _0x40a01c={'id':_0x1f187c['id'],'available':_0x1f187c[_0x5327('0x54')],'loggedIn':_0x1f187c[_0x5327('0x55')],'name':_0x1f187c[_0x5327('0x56')],'paused':_0x1f187c['paused'],'waiting':_0x1f187c[_0x5327('0x58')]};_0x272a9b[_0x5327('0x21')](_0x40a01c);}}_0x34e8a5({'count':_0x272a9b['length'],'rows':_0x272a9b});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x494323){var _0x5012a6=_[_0x5327('0x5e')](_0x286679[_0x5327('0x5f')]);_0x494323({'count':_0x5012a6[_0x5327('0x19')],'rows':_0x5012a6});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1f4cb4){var _0xf4736f=_['values'](_0x286679['mailQueuesWaitingInteractions']);_0x1f4cb4({'count':_0xf4736f[_0x5327('0x19')],'rows':_0xf4736f});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0xfe0205){var _0x7065c4=_[_0x5327('0x5e')](_0x286679['openchannelQueuesWaitingInteractions']);_0xfe0205({'count':_0x7065c4[_0x5327('0x19')],'rows':_0x7065c4});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x53a8a5){var _0x370e84=_[_0x5327('0x5e')](_0x286679[_0x5327('0x60')]);_0x53a8a5({'count':_0x370e84[_0x5327('0x19')],'rows':_0x370e84});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x3fc745){var _0xe4dde1=_[_0x5327('0x5e')](_0x286679['faxQueuesWaitingInteractions']);_0x3fc745({'count':_0xe4dde1[_0x5327('0x19')],'rows':_0xe4dde1});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x275fd0){var _0x40879c=_[_0x5327('0x5e')](_0x286679['whatsappQueuesWaitingInteractions']);_0x275fd0({'count':_0x40879c[_0x5327('0x19')],'rows':_0x40879c});});}};var _0x4e8cb6=jayson[_0x5327('0x61')](_0x10a494)['http']();_0x4e8cb6['on'](_0x5327('0x36'),function(_0x1c5565){logger[_0x5327('0x36')](JSON[_0x5327('0x3a')](_0x1c5565));return _0x40f2bf(_0x1c5565);});_0x4e8cb6[_0x5327('0x62')](0x232c,_0x5327('0x63'),function(){console[_0x5327('0x64')](_0x5327('0x65'),0x232c);return _0x5fc4f5('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0xb6a6=['body','%s:%s:%s','./interval','condition','intervals','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','stringify','matchPath','emit','format','Skipped\x20routing\x20for\x20%s','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','stack','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','listen','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/strategy/util','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','interaction','checkWaitingNotifications','applications','length','existsSync','join','.js','app','toLowerCase','autoreply','appdata','split','channel','mail','push','slice','dialogflowv2','amazonlex','message','tag','getMustacheRender','account','ChatWebsiteId'];(function(_0x48ec9d,_0x34d851){var _0x442114=function(_0x2dcfc3){while(--_0x2dcfc3){_0x48ec9d['push'](_0x48ec9d['shift']());}};_0x442114(++_0x34d851);}(_0xb6a6,0x162));var _0x6b6a=function(_0x1946e2,_0x2846d0){_0x1946e2=_0x1946e2-0x0;var _0x3cfb0d=_0xb6a6[_0x1946e2];return _0x3cfb0d;};'use strict';var _=require(_0x6b6a('0x0'));var util=require(_0x6b6a('0x1'));var path=require(_0x6b6a('0x2'));var fs=require('fs');var jayson=require(_0x6b6a('0x3'));var BPromise=require(_0x6b6a('0x4'));var utils=require('./applications/utils');var sUtils=require(_0x6b6a('0x5'));var logger=require('../../../config/logger')(_0x6b6a('0x6'));var rpc={'openchannelQueueReport':require(_0x6b6a('0x7')),'mailQueueReport':require(_0x6b6a('0x8')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x6b6a('0x9')),'faxQueueReport':require(_0x6b6a('0xa')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x6b6a('0xb'));function getId(_0x335de4,_0x5793f9,_0x2ab25f){return util['format'](_0x6b6a('0xc'),_0x335de4,_0x5793f9||0x0,_0x2ab25f||0x0);}function getIntervals(_0x62cbe9,_0x3e4189){var _0x3a7e0c=[];if(!_['isNil'](_0x3e4189['IntervalId'])&&!_[_0x6b6a('0xd')](_0x62cbe9[_0x3e4189['IntervalId']])&&!_['isNil'](_0x62cbe9[_0x3e4189[_0x6b6a('0xe')]][_0x6b6a('0xf')])){_0x3a7e0c=_[_0x6b6a('0x10')](_0x62cbe9[_0x3e4189['IntervalId']][_0x6b6a('0xf')],_0x6b6a('0x11'));}else if(!_['isNil'](_0x3e4189[_0x6b6a('0x11')])){_0x3a7e0c=[_0x3e4189[_0x6b6a('0x11')]];}return _0x3a7e0c;}exports['listen']=function(_0x2342de){_0x2342de[_0x6b6a('0x12')]={};return new BPromise(function(_0x22a155,_0x2293f7){var _0x1c497b={'Start':function(_0xaea1ca){var _0x5dc1c4=this;return new Promise(function(_0xcf4536,_0x56f7aa){if(_0xaea1ca){try{var _0x3bd0d4=[];var _0x5bfa52=getId(_0xaea1ca['channel'],_0xaea1ca['message']?_0xaea1ca['message']['id']:0x0,_0xaea1ca[_0x6b6a('0x13')]?_0xaea1ca[_0x6b6a('0x13')]['id']:0x0);var _0x34de6d=sUtils[_0x6b6a('0x14')](_0x2342de,_0xaea1ca);if(!_0x34de6d&&_0xaea1ca['applications']&&_['isArray'](_0xaea1ca[_0x6b6a('0x15')])&&_0xaea1ca['applications'][_0x6b6a('0x16')]){for(var _0x14f8c2=0x0;_0x14f8c2<_0xaea1ca[_0x6b6a('0x15')]['length'];_0x14f8c2+=0x1){var _0x105b9d=_0xaea1ca[_0x6b6a('0x15')][_0x14f8c2];if(fs[_0x6b6a('0x17')](path[_0x6b6a('0x18')](__dirname,_0x6b6a('0x15'),_0x105b9d['app']+_0x6b6a('0x19')))){var _0x3bbdfc=[];switch(_0x105b9d[_0x6b6a('0x1a')][_0x6b6a('0x1b')]()){case _0x6b6a('0x1c'):var _0x2bce8c=_0x105b9d[_0x6b6a('0x1d')][_0x6b6a('0x1e')](',');if(_0xaea1ca[_0x6b6a('0x1f')]===_0x6b6a('0x20')){_0x3bbdfc[_0x6b6a('0x21')](_0x2bce8c[0x0]);_0x3bbdfc[_0x6b6a('0x21')](_0x2bce8c[0x1]);_0x3bbdfc['push'](_0x2bce8c[_0x6b6a('0x22')](0x2,_0x2bce8c[_0x6b6a('0x16')])[_0x6b6a('0x18')](','));}else{_0x3bbdfc['push'](_0x2bce8c[0x0]);_0x3bbdfc[_0x6b6a('0x21')](_0x2bce8c[_0x6b6a('0x22')](0x1,_0x2bce8c[_0x6b6a('0x16')])[_0x6b6a('0x18')](','));}break;case'dialogflow':var _0x2d48bb=_0x105b9d[_0x6b6a('0x1d')][_0x6b6a('0x1e')](',');_0x3bbdfc['push'](_0x2d48bb[0x0]);_0x3bbdfc[_0x6b6a('0x21')](_0x2d48bb[0x1]);_0x3bbdfc[_0x6b6a('0x21')](_0x2d48bb[_0x6b6a('0x22')](0x2,_0x2d48bb[_0x6b6a('0x16')])['join'](','));break;case _0x6b6a('0x23'):var _0x4d8092=_0x105b9d['appdata'][_0x6b6a('0x1e')](',');_0x3bbdfc[_0x6b6a('0x21')](_0x4d8092[0x0]);_0x3bbdfc[_0x6b6a('0x21')](_0x4d8092[0x1]);_0x3bbdfc['push'](_0x4d8092[0x2]);_0x3bbdfc['push'](_0x4d8092[0x3]);_0x3bbdfc[_0x6b6a('0x21')](_0x4d8092['slice'](0x4,_0x4d8092[_0x6b6a('0x16')])[_0x6b6a('0x18')](','));break;case _0x6b6a('0x24'):var _0x527cdc=_0x105b9d['appdata'][_0x6b6a('0x1e')](',');_0x3bbdfc[_0x6b6a('0x21')](_0x527cdc[0x0]);_0x3bbdfc['push'](_0x527cdc[0x1]);_0x3bbdfc[_0x6b6a('0x21')](_0x527cdc[0x2]);_0x3bbdfc[_0x6b6a('0x21')](_0x527cdc[0x3]);_0x3bbdfc[_0x6b6a('0x21')](_0x527cdc[_0x6b6a('0x22')](0x4,_0x527cdc[_0x6b6a('0x16')])[_0x6b6a('0x18')](','));break;case _0x6b6a('0x25'):_0x3bbdfc['push'](_0x105b9d[_0x6b6a('0x1d')]);break;case _0x6b6a('0x26'):_0x3bbdfc[_0x6b6a('0x21')](_0x105b9d['TagId']);_0x3bbdfc[_0x6b6a('0x21')](_0x105b9d[_0x6b6a('0x1d')]);break;case'tvox':var _0x4a5546=utils[_0x6b6a('0x27')](_0xaea1ca[_0x6b6a('0x28')]['notificationTemplate'],_0xaea1ca);var _0x3e5356=_0x105b9d[_0x6b6a('0x1d')]['split'](',');_0x3bbdfc['push'](_0x3e5356[0x0]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0x1]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0x2]);_0x3bbdfc['push'](_0x3e5356[0x3]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0x4]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0x5]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0x6]);_0x3bbdfc['push'](_0x3e5356[0x7]);_0x3bbdfc['push'](_0x3e5356[0x8]);_0x3bbdfc['push'](_0x3e5356[0x9]);_0x3bbdfc[_0x6b6a('0x21')](_0x3e5356[0xa]);_0x3bbdfc[_0x6b6a('0x21')](_0xaea1ca[_0x6b6a('0x13')]['id']);_0x3bbdfc[_0x6b6a('0x21')](_0xaea1ca[_0x6b6a('0x25')]['id']);_0x3bbdfc['push'](_0x105b9d[_0x6b6a('0x29')]);_0x3bbdfc[_0x6b6a('0x21')](_0xaea1ca['interaction']['ContactId']);_0x3bbdfc[_0x6b6a('0x21')](_0xaea1ca['body'][_0x6b6a('0x2a')]);_0x3bbdfc[_0x6b6a('0x21')](_0x4a5546);break;default:_0x3bbdfc=_[_0x6b6a('0xd')](_0x105b9d[_0x6b6a('0x1d')])?[]:_0x105b9d[_0x6b6a('0x1d')][_0x6b6a('0x1e')](',');}var _0x362a7f={'id':util['format'](_0x6b6a('0x2b'),_0x5bfa52,_0x105b9d['id'],_0x105b9d[_0x6b6a('0x1a')]),'condition':require(_0x6b6a('0x2c'))[_0x6b6a('0x2d')](_0x5bfa52,getIntervals(_0x2342de[_0x6b6a('0x2e')],_0x105b9d),_0x2342de),'consequence':require('./applications/'+_0x105b9d['app'])['consequence'](_0x5bfa52,_0x3bbdfc,_0x2342de,_0xaea1ca),'p':_0x105b9d[_0x6b6a('0x2f')]||0x0};logger[_0x6b6a('0x30')](_0x6b6a('0x31'),_0x362a7f['id'],_0x6b6a('0x32'),getIntervals(_0x2342de[_0x6b6a('0x2e')],_0x105b9d)[_0x6b6a('0x18')](_0x6b6a('0x33')));_0x3bd0d4[_0x6b6a('0x21')](_0x362a7f);}else{logger[_0x6b6a('0x34')](_0x6b6a('0x35'),path[_0x6b6a('0x18')](__dirname,_0x6b6a('0x15'),_0x105b9d[_0x6b6a('0x1a')]+_0x6b6a('0x19')));}}_0x2342de[_0x6b6a('0x12')][_0x5bfa52]=new RuleEngine(_0x3bd0d4);_0x2342de[_0x6b6a('0x12')][_0x5bfa52][_0x6b6a('0x36')](_0xaea1ca,function(_0x30659c){logger['info']('Applications\x20executed',JSON[_0x6b6a('0x37')](_0x30659c[_0x6b6a('0x38')]));if(_0x2342de[_0x6b6a('0x12')][_0x5bfa52]){_0x2342de[_0x6b6a('0x12')][_0x5bfa52][_0x6b6a('0x39')]('complete');}});return _0xcf4536({'code':0xc8,'message':_0xaea1ca});}else{if(_0x34de6d){logger[_0x6b6a('0x30')](util[_0x6b6a('0x3a')](_0x6b6a('0x3b'),_0x5bfa52));}else{logger[_0x6b6a('0x30')]('No\x20applications\x20to\x20execute');}return _0xcf4536({'code':0xc8,'message':_0xaea1ca});}}catch(_0x140241){logger[_0x6b6a('0x34')](_0x140241['stack']);return _0x56f7aa(_0x5dc1c4['error'](0x1f4,_0x140241));}}return _0x56f7aa(_0x6b6a('0x3c'));});},'AcceptMessage':function(_0xb465db){var _0x1c94f0=this;return new Promise(function(_0x1e6df3,_0x4459b7){if(_0xb465db[_0x6b6a('0x3d')]&&_0xb465db[_0x6b6a('0x3d')]['id']){if(_0x2342de[_0x6b6a('0x3e')][_0xb465db[_0x6b6a('0x3d')]['id']]){_0x2342de[_0x6b6a('0x3e')][_0xb465db[_0x6b6a('0x3d')]['id']][_0x6b6a('0x3f')]=![];_0x2342de[_0x6b6a('0x3e')][_0xb465db[_0x6b6a('0x3d')]['id']][_0x6b6a('0x40')]=undefined;}}if(_0xb465db['message']&&_0xb465db[_0x6b6a('0x25')]['id']){try{var _0x9e5890=getId(_0xb465db['channel'],_0xb465db[_0x6b6a('0x25')]?_0xb465db['message']['id']:0x0,_0xb465db[_0x6b6a('0x13')]?_0xb465db[_0x6b6a('0x13')]['id']:0x0);if(_0x2342de['rules'][_0x9e5890]){_0x2342de['rules'][_0x9e5890][_0x6b6a('0x39')]('end');if(rpc[_0xb465db['channel']+_0x6b6a('0x41')]){rpc[_0xb465db[_0x6b6a('0x1f')]+_0x6b6a('0x41')][_0x6b6a('0x42')](_0x9e5890,{'UserId':_0xb465db[_0x6b6a('0x25')][_0x6b6a('0x43')]})[_0x6b6a('0x44')](function(){logger[_0x6b6a('0x34')](_0x6b6a('0x45'));});}}return _0x1e6df3({'code':0xc8,'message':_0xb465db});}catch(_0x44ea4a){logger[_0x6b6a('0x34')](_0x44ea4a['stack']);return _0x4459b7(_0x1c94f0[_0x6b6a('0x34')](0x1f4,_0x44ea4a));}}logger['error'](_0x6b6a('0x46'));return _0x4459b7(_0x1c94f0['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x4615e5){var _0x2a1646=this;return new Promise(function(_0x51cafb,_0x170bb1){if(_0x4615e5['agent']&&_0x4615e5[_0x6b6a('0x3d')]['id']){try{if(_0x2342de['agents'][_0x4615e5[_0x6b6a('0x3d')]['id']]){_0x2342de['agents'][_0x4615e5[_0x6b6a('0x3d')]['id']][_0x6b6a('0x3f')]=![];_0x2342de[_0x6b6a('0x3e')][_0x4615e5['agent']['id']][_0x6b6a('0x40')]=undefined;}return _0x51cafb({'code':0xc8,'message':_0x4615e5});}catch(_0x45a706){logger[_0x6b6a('0x34')](_0x45a706[_0x6b6a('0x47')]);return _0x170bb1(_0x2a1646['error'](0x1f4,_0x45a706));}}logger['error'](_0x6b6a('0x46'));return _0x170bb1(_0x2a1646[_0x6b6a('0x34')](0x1f4,_0x6b6a('0x46')));});},'AbandonInteraction':function(_0x5a088c){var _0x50a941=this;return new Promise(function(_0x2de637,_0x1daed4){if(_0x5a088c['channel']&&_0x5a088c[_0x6b6a('0x13')]&&_0x5a088c['interaction']['id']){try{var _0x4da99b=getId(_0x5a088c['channel'],_0x5a088c[_0x6b6a('0x25')]?_0x5a088c[_0x6b6a('0x25')]['id']:0x0,_0x5a088c[_0x6b6a('0x13')]?_0x5a088c['interaction']['id']:0x0);if(_0x2342de[_0x6b6a('0x12')][_0x4da99b]){_0x2342de['rules'][_0x4da99b]['emit']('end');}return _0x2de637({'code':0xc8,'message':_0x5a088c});}catch(_0x433dfc){logger[_0x6b6a('0x34')](_0x433dfc['stack']);return _0x1daed4(_0x50a941[_0x6b6a('0x34')](0x1f4,_0x433dfc));}}logger[_0x6b6a('0x34')](_0x6b6a('0x46'));return _0x1daed4(_0x50a941[_0x6b6a('0x34')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x19eb6d){var _0x53c17c=this;return new Promise(function(_0x36f553,_0x22d54a){if(_0x2342de[_0x6b6a('0x3e')][_0x6b6a('0x48')](_0x19eb6d['id'])){for(var _0x1697af in _0x19eb6d[_0x6b6a('0x49')]){if(_0x19eb6d['capacity'][_0x6b6a('0x48')](_0x1697af)){if(_0x2342de[_0x6b6a('0x3e')][_0x19eb6d['id']][_0x6b6a('0x48')](_0x1697af+_0x6b6a('0x4a'))){_0x2342de['agents'][_0x19eb6d['id']][_0x1697af+_0x6b6a('0x4a')]=parseInt(_0x19eb6d[_0x6b6a('0x49')][_0x1697af],0xa);}}}_0x2342de['agents'][_0x19eb6d['id']][_0x6b6a('0x4b')]();return _0x36f553({'code':0xc8,'message':_0x2342de['agents'][_0x19eb6d['id']]});}else{return _0x22d54a(_0x53c17c[_0x6b6a('0x34')](0x1f4,_0x6b6a('0x4c')));}});},'Agents':function(_0x41a89b){return new Promise(function(_0x186572){var _0x3120b0=_[_0x6b6a('0x4d')](_0x2342de[_0x6b6a('0x3e')]);if(_0x41a89b&&_0x41a89b['id']){var _0x4f62b6=_[_0x6b6a('0x4e')](_0x3120b0,function(_0x103d44){return _0x103d44['id']===_0x41a89b['id'];});_0x186572(_0x4f62b6);}else{_0x186572({'count':_0x3120b0[_0x6b6a('0x16')],'rows':_0x3120b0});}});},'ChatQueues':function(){return new Promise(function(_0xdd86cf){var _0x33d2c4=[];for(var _0x375f51 in _0x2342de[_0x6b6a('0x4f')]){if(_0x2342de[_0x6b6a('0x4f')][_0x6b6a('0x48')](_0x375f51)){var _0x5acb2b=_0x2342de['chatQueues'][_0x375f51];var _0x54450e={'id':_0x5acb2b['id'],'available':_0x5acb2b[_0x6b6a('0x50')],'loggedIn':_0x5acb2b[_0x6b6a('0x51')],'name':_0x5acb2b[_0x6b6a('0x52')],'paused':_0x5acb2b[_0x6b6a('0x53')],'waiting':_0x5acb2b[_0x6b6a('0x54')]};_0x33d2c4[_0x6b6a('0x21')](_0x54450e);}}_0xdd86cf({'count':_0x33d2c4[_0x6b6a('0x16')],'rows':_0x33d2c4});});},'MailQueues':function(){return new Promise(function(_0x1de7d9){var _0x38287d=[];for(var _0x4380a4 in _0x2342de[_0x6b6a('0x55')]){if(_0x2342de['mailQueues'][_0x6b6a('0x48')](_0x4380a4)){var _0x427603=_0x2342de['mailQueues'][_0x4380a4];var _0x34db93={'id':_0x427603['id'],'available':_0x427603[_0x6b6a('0x50')],'loggedIn':_0x427603['loggedIn'],'name':_0x427603[_0x6b6a('0x52')],'paused':_0x427603[_0x6b6a('0x53')],'waiting':_0x427603[_0x6b6a('0x54')]};_0x38287d[_0x6b6a('0x21')](_0x34db93);}}_0x1de7d9({'count':_0x38287d[_0x6b6a('0x16')],'rows':_0x38287d});});},'OpenchannelQueues':function(){return new Promise(function(_0x4c1848){var _0x25436f=[];for(var _0x17fda1 in _0x2342de[_0x6b6a('0x56')]){if(_0x2342de[_0x6b6a('0x56')][_0x6b6a('0x48')](_0x17fda1)){var _0x10f787=_0x2342de[_0x6b6a('0x56')][_0x17fda1];var _0x6e4fd7={'id':_0x10f787['id'],'available':_0x10f787[_0x6b6a('0x50')],'loggedIn':_0x10f787[_0x6b6a('0x51')],'name':_0x10f787[_0x6b6a('0x52')],'paused':_0x10f787[_0x6b6a('0x53')],'waiting':_0x10f787[_0x6b6a('0x54')]};_0x25436f['push'](_0x6e4fd7);}}_0x4c1848({'count':_0x25436f['length'],'rows':_0x25436f});});},'SmsQueues':function(){return new Promise(function(_0x31376e){var _0x434547=[];for(var _0x57719 in _0x2342de[_0x6b6a('0x57')]){if(_0x2342de['smsQueues']['hasOwnProperty'](_0x57719)){var _0xf49151=_0x2342de[_0x6b6a('0x57')][_0x57719];var _0x446d7c={'id':_0xf49151['id'],'available':_0xf49151[_0x6b6a('0x50')],'loggedIn':_0xf49151[_0x6b6a('0x51')],'name':_0xf49151[_0x6b6a('0x52')],'paused':_0xf49151[_0x6b6a('0x53')],'waiting':_0xf49151[_0x6b6a('0x54')]};_0x434547[_0x6b6a('0x21')](_0x446d7c);}}_0x31376e({'count':_0x434547[_0x6b6a('0x16')],'rows':_0x434547});});},'FaxQueues':function(){return new Promise(function(_0x565c88){var _0x27c1e1=[];for(var _0x16edd1 in _0x2342de[_0x6b6a('0x58')]){if(_0x2342de[_0x6b6a('0x58')]['hasOwnProperty'](_0x16edd1)){var _0x3c4026=_0x2342de[_0x6b6a('0x58')][_0x16edd1];var _0x288113={'id':_0x3c4026['id'],'available':_0x3c4026[_0x6b6a('0x50')],'loggedIn':_0x3c4026[_0x6b6a('0x51')],'name':_0x3c4026[_0x6b6a('0x52')],'paused':_0x3c4026[_0x6b6a('0x53')],'waiting':_0x3c4026[_0x6b6a('0x54')]};_0x27c1e1[_0x6b6a('0x21')](_0x288113);}}_0x565c88({'count':_0x27c1e1[_0x6b6a('0x16')],'rows':_0x27c1e1});});},'WhatsappQueues':function(){return new Promise(function(_0x2e8c23){var _0xb59cbc=[];for(var _0x18127f in _0x2342de[_0x6b6a('0x59')]){if(_0x2342de['whatsappQueues'][_0x6b6a('0x48')](_0x18127f)){var _0xcbe8c9=_0x2342de[_0x6b6a('0x59')][_0x18127f];var _0x412197={'id':_0xcbe8c9['id'],'available':_0xcbe8c9[_0x6b6a('0x50')],'loggedIn':_0xcbe8c9[_0x6b6a('0x51')],'name':_0xcbe8c9[_0x6b6a('0x52')],'paused':_0xcbe8c9[_0x6b6a('0x53')],'waiting':_0xcbe8c9[_0x6b6a('0x54')]};_0xb59cbc[_0x6b6a('0x21')](_0x412197);}}_0x2e8c23({'count':_0xb59cbc[_0x6b6a('0x16')],'rows':_0xb59cbc});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x394a39){var _0x5aaa01=_['values'](_0x2342de['chatQueuesWaitingInteractions']);_0x394a39({'count':_0x5aaa01[_0x6b6a('0x16')],'rows':_0x5aaa01});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1f024c){var _0x1df45d=_[_0x6b6a('0x4d')](_0x2342de['mailQueuesWaitingInteractions']);_0x1f024c({'count':_0x1df45d['length'],'rows':_0x1df45d});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x45acf5){var _0x251b6d=_[_0x6b6a('0x4d')](_0x2342de[_0x6b6a('0x5a')]);_0x45acf5({'count':_0x251b6d['length'],'rows':_0x251b6d});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x7d32e8){var _0x3f3b01=_[_0x6b6a('0x4d')](_0x2342de['smsQueuesWaitingInteractions']);_0x7d32e8({'count':_0x3f3b01[_0x6b6a('0x16')],'rows':_0x3f3b01});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x5ad856){var _0xf0557f=_[_0x6b6a('0x4d')](_0x2342de[_0x6b6a('0x5b')]);_0x5ad856({'count':_0xf0557f[_0x6b6a('0x16')],'rows':_0xf0557f});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x3fcd2b){var _0xaaab6b=_['values'](_0x2342de['whatsappQueuesWaitingInteractions']);_0x3fcd2b({'count':_0xaaab6b[_0x6b6a('0x16')],'rows':_0xaaab6b});});}};var _0x33941d=jayson[_0x6b6a('0x5c')](_0x1c497b)[_0x6b6a('0x5d')]();_0x33941d['on']('error',function(_0x25adff){logger[_0x6b6a('0x34')](JSON[_0x6b6a('0x37')](_0x25adff));return _0x2293f7(_0x25adff);});_0x33941d[_0x6b6a('0x5e')](0x232c,_0x6b6a('0x5f'),function(){console[_0x6b6a('0x60')](_0x6b6a('0x61'),0x232c);return _0x22a155(_0x6b6a('0x62')+0x232c);});});};
\ No newline at end of file
index f33026e..7adb409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda10=['stop','push','Command','format','iftime\x20%s','indexOf','catch','[%s][INTERVAL]\x20%s','all','some','info','[%s][INTERVAL]\x20%s\x20%s','join','log','\x20|\x20','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED'];(function(_0x5f1cf8,_0x5e0923){var _0x27d0fa=function(_0x3f1171){while(--_0x3f1171){_0x5f1cf8['push'](_0x5f1cf8['shift']());}};_0x27d0fa(++_0x5e0923);}(_0xda10,0xab));var _0x0da1=function(_0x31a82e,_0x4a3a35){_0x31a82e=_0x31a82e-0x0;var _0x48d691=_0xda10[_0x31a82e];return _0x48d691;};'use strict';var util=require(_0x0da1('0x0'));var BPromise=require(_0x0da1('0x1'));var jayson=require(_0x0da1('0x2'));var _=require(_0x0da1('0x3'));var logger=require(_0x0da1('0x4'))(_0x0da1('0x5'));var client=jayson[_0x0da1('0x6')][_0x0da1('0x7')]({'port':0x232a});function request(_0x42538e,_0x2840b7){return new BPromise(function(_0x5a5819,_0x4562c8){return client[_0x0da1('0x8')](_0x42538e,_0x2840b7)[_0x0da1('0x9')](function(_0x246a6a){if(_0x246a6a[_0x0da1('0xa')]){return _0x4562c8(_0x246a6a[_0x0da1('0xa')][_0x0da1('0xb')]);}else{return _0x5a5819(_0x246a6a[_0x0da1('0xc')]);}})['catch'](function(_0xc91663){return _0x4562c8(_0xc91663);});});}exports['condition']=function(_0x4b8fcb,_0x3d6934,_0x2cb401){return function(_0x236543){if(_0x2cb401[_0x0da1('0xd')]&&!_0x2cb401[_0x0da1('0xd')][_0x4b8fcb]){logger['info'](_0x0da1('0xe'),_0x4b8fcb);return _0x236543[_0x0da1('0xf')]();}var _0x3722a6=[];for(var _0x194b86=0x0;_0x194b86<_0x3d6934['length'];_0x194b86+=0x1){_0x3722a6[_0x0da1('0x10')](request(_0x0da1('0x11'),{'command':util[_0x0da1('0x12')](_0x0da1('0x13'),_0x3d6934[_0x194b86])})[_0x0da1('0x9')](function(_0x5dd273){return _0x5dd273&&_0x5dd273[_0x0da1('0xb')]&&_0x5dd273[_0x0da1('0xb')][_0x0da1('0x14')]('true')>=0x0?!![]:![];})[_0x0da1('0x15')](function(_0x341796){logger[_0x0da1('0xa')](_0x0da1('0x16'),_0x4b8fcb,_0x3d6934[_0x194b86]);}));}BPromise[_0x0da1('0x17')](_0x3722a6)[_0x0da1('0x9')](function(_0x14159f){var _0x38432a=_[_0x0da1('0x18')](_0x14159f);logger[_0x0da1('0x19')](_0x0da1('0x1a'),_0x4b8fcb,_0x3d6934[_0x0da1('0x1b')]('\x20|\x20'),_0x38432a);_0x236543['when'](_0x38432a);})[_0x0da1('0x15')](function(_0x5c5560){console[_0x0da1('0x1c')](_0x5c5560);logger['error']('[%s][INTERVAL]\x20%s\x20%s',_0x4b8fcb,_0x3d6934[_0x0da1('0x1b')](_0x0da1('0x1d')),_0x5c5560[_0x0da1('0x1e')]);_0x236543[_0x0da1('0xf')]();});};};
\ No newline at end of file
+var _0xd123=['error','message','result','catch','condition','rules','info','push','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stop','util','bluebird','../../../config/logger','routing','client','request','then'];(function(_0x26a0c2,_0x5ec289){var _0xffd8a8=function(_0x12f100){while(--_0x12f100){_0x26a0c2['push'](_0x26a0c2['shift']());}};_0xffd8a8(++_0x5ec289);}(_0xd123,0x173));var _0x3d12=function(_0x366ae5,_0x2aebf3){_0x366ae5=_0x366ae5-0x0;var _0x546e69=_0xd123[_0x366ae5];return _0x546e69;};'use strict';var util=require(_0x3d12('0x0'));var BPromise=require(_0x3d12('0x1'));var jayson=require('jayson/promise');var _=require('lodash');var logger=require(_0x3d12('0x2'))(_0x3d12('0x3'));var client=jayson[_0x3d12('0x4')]['http']({'port':0x232a});function request(_0x161d6e,_0x5e00c5){return new BPromise(function(_0x521115,_0x55d392){return client[_0x3d12('0x5')](_0x161d6e,_0x5e00c5)[_0x3d12('0x6')](function(_0x225b03){if(_0x225b03[_0x3d12('0x7')]){return _0x55d392(_0x225b03[_0x3d12('0x7')][_0x3d12('0x8')]);}else{return _0x521115(_0x225b03[_0x3d12('0x9')]);}})[_0x3d12('0xa')](function(_0x4d4a42){return _0x55d392(_0x4d4a42);});});}exports[_0x3d12('0xb')]=function(_0x4a4edb,_0x2fd659,_0x3e6a29){return function(_0x53721b){if(_0x3e6a29[_0x3d12('0xc')]&&!_0x3e6a29[_0x3d12('0xc')][_0x4a4edb]){logger[_0x3d12('0xd')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x4a4edb);return _0x53721b['stop']();}var _0x459c45=[];for(var _0x3fe790=0x0;_0x3fe790<_0x2fd659['length'];_0x3fe790+=0x1){_0x459c45[_0x3d12('0xe')](request('Command',{'command':util['format'](_0x3d12('0xf'),_0x2fd659[_0x3fe790])})['then'](function(_0x785ea9){return _0x785ea9&&_0x785ea9[_0x3d12('0x8')]&&_0x785ea9[_0x3d12('0x8')][_0x3d12('0x10')](_0x3d12('0x11'))>=0x0?!![]:![];})['catch'](function(_0x470ae3){logger['error'](_0x3d12('0x12'),_0x4a4edb,_0x2fd659[_0x3fe790]);}));}BPromise[_0x3d12('0x13')](_0x459c45)[_0x3d12('0x6')](function(_0x4d53cf){var _0x3c50f0=_[_0x3d12('0x14')](_0x4d53cf);logger[_0x3d12('0xd')](_0x3d12('0x15'),_0x4a4edb,_0x2fd659[_0x3d12('0x16')](_0x3d12('0x17')),_0x3c50f0);_0x53721b[_0x3d12('0x18')](_0x3c50f0);})[_0x3d12('0xa')](function(_0x15030f){console[_0x3d12('0x19')](_0x15030f);logger[_0x3d12('0x7')](_0x3d12('0x15'),_0x4a4edb,_0x2fd659[_0x3d12('0x16')](_0x3d12('0x17')),_0x15030f['stack']);_0x53721b[_0x3d12('0x1a')]();});};};
\ No newline at end of file
index bd159bf..cda1ed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','agentcalledAt','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','agent','complete','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','./utils','info','format','uniqueid','membername','interface','calleridnum','queue','getVoiceQueueByName','type','agentcomplete','acwtime','agentacw','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','now','lastevent','called','connectedlinenum','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','talktime','queuecallerabandon','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','ringtime','connect','answered_elsewhere','answeredelsewheremembername','isNil','agentcompleteAt','diffTime','agentconnectAt','[%s][agents][agentcomplete]','blindtransfer','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfertype','blind','transferexten','extension','transferuniqueid','[%s][agents][blindtransfer]','[%s][agents][attendedtransfer]','origtransfereruniqueid'];(function(_0x1c289a,_0x277fe7){var _0x28d68e=function(_0x2f8e98){while(--_0x2f8e98){_0x1c289a['push'](_0x1c289a['shift']());}};_0x28d68e(++_0x277fe7);}(_0x76dc,0x1f2));var _0xc76d=function(_0x46ff4a,_0x1b501b){_0x46ff4a=_0x46ff4a-0x0;var _0x2a2a31=_0x76dc[_0x46ff4a];return _0x2a2a31;};'use strict';var _=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var utils=require(_0xc76d('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x26e85e,_0x49c651){utils[_0xc76d('0x3')](util[_0xc76d('0x4')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x26e85e[_0xc76d('0x5')],_0x26e85e['channel'],_0x26e85e['queue'],_0x26e85e[_0xc76d('0x6')],_0x26e85e[_0xc76d('0x7')],_0x26e85e[_0xc76d('0x8')],_0x26e85e['connectedlinenum'],_0x26e85e['lastevent']));if(_0x26e85e[_0xc76d('0x9')]){utils[_0xc76d('0xa')](_0x26e85e[_0xc76d('0x9')])['then'](function(_0x570197){if(_0x570197){_0x26e85e[_0xc76d('0xb')]=_0x570197[_0xc76d('0xb')];_0x26e85e['agentacw']=_0x26e85e[_0xc76d('0xc')]?_0x570197['acw']:![];_0x26e85e[_0xc76d('0xd')]=_0x26e85e[_0xc76d('0xe')]?_0x570197[_0xc76d('0xf')]:0x0;}utils[_0xc76d('0x10')](_0xc76d('0x11'),_0x26e85e);});}else{utils[_0xc76d('0x10')](_0xc76d('0x11'),_0x26e85e);}if(_0x49c651){delete transfers[_0x26e85e[_0xc76d('0x5')]];}else{delete agents[_0x26e85e[_0xc76d('0x12')]];}}exports[_0xc76d('0x13')]=function(_0x1a7b47){try{utils[_0xc76d('0x14')](util[_0xc76d('0x4')](_0xc76d('0x15'),_0x1a7b47['uniqueid']),_0x1a7b47);agents[_0x1a7b47[_0xc76d('0x12')]]=_0x1a7b47;agents[_0x1a7b47[_0xc76d('0x12')]]['agentcalledAt']=utils[_0xc76d('0x16')]();agents[_0x1a7b47[_0xc76d('0x12')]][_0xc76d('0x17')]=_0xc76d('0x18');agents[_0x1a7b47['destuniqueid']][_0xc76d('0x19')]=null;agents[_0x1a7b47['destuniqueid']]['connectedlinename']=null;utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x1a'),_0x1a7b47[_0xc76d('0x5')],agents[_0x1a7b47[_0xc76d('0x12')]]['membername'],_0x1a7b47[_0xc76d('0x12')]));}catch(_0x361f42){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')](_0xc76d('0x15'),_0x1a7b47['uniqueid']),_0x361f42);}};exports[_0xc76d('0x1c')]=function(_0x324db7){try{if(!_['isNil'](agents[_0x324db7[_0xc76d('0x12')]])){utils[_0xc76d('0x14')](util[_0xc76d('0x4')](_0xc76d('0x1d'),_0x324db7[_0xc76d('0x5')]),_0x324db7);utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x1e'),_0x324db7[_0xc76d('0x5')],agents[_0x324db7[_0xc76d('0x12')]][_0xc76d('0x6')],_0x324db7['destuniqueid']));agents[_0x324db7[_0xc76d('0x12')]][_0xc76d('0x1c')]=!![];agents[_0x324db7['destuniqueid']][_0xc76d('0x1f')]=utils[_0xc76d('0x16')]();agents[_0x324db7['destuniqueid']][_0xc76d('0x17')]=_0xc76d('0x20');agents[_0x324db7[_0xc76d('0x12')]][_0xc76d('0x21')]=_0xc76d('0x20');agents[_0x324db7[_0xc76d('0x12')]][_0xc76d('0x22')]=_0x324db7['ringtime']?parseInt(_0x324db7['ringtime'])/0x3e8:0x0;agents[_0x324db7[_0xc76d('0x12')]][_0xc76d('0x23')]=0x0;unanswered['push'](_0x324db7[_0xc76d('0x12')]);}}catch(_0x52a79a){utils[_0xc76d('0x1b')](util['format'](_0xc76d('0x1d'),_0x324db7['uniqueid']),_0x52a79a);}};exports[_0xc76d('0x24')]=function(_0x18a7fa){try{_['forIn'](agents,function(_0x3d4076,_0x1c68f3){if(_0x3d4076[_0xc76d('0x5')]==_0x18a7fa[_0xc76d('0x5')]&&!_['includes'](unanswered,_0x3d4076[_0xc76d('0x12')])){utils['debug'](util[_0xc76d('0x4')]('[%s][agents][queuecallerabandon]',_0x18a7fa[_0xc76d('0x5')]),_0x18a7fa);utils[_0xc76d('0x3')](util['format']('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x18a7fa['uniqueid'],_0x3d4076['membername'],_0x3d4076[_0xc76d('0x12')]));_0x3d4076[_0xc76d('0x1c')]=!![];_0x3d4076[_0xc76d('0x1f')]=utils[_0xc76d('0x16')]();_0x3d4076[_0xc76d('0x17')]='abandoned';_0x3d4076[_0xc76d('0x21')]='abandoned';_0x3d4076[_0xc76d('0x22')]=_0x18a7fa['holdtime'];_0x3d4076[_0xc76d('0x23')]=0x0;writeDB(_0x3d4076);}});}catch(_0x2332f5){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')](_0xc76d('0x25'),_0x18a7fa['uniqueid']),_0x2332f5);}};exports[_0xc76d('0x26')]=function(_0x371306){try{if(agents[_0x371306[_0xc76d('0x12')]]){utils['debug'](util[_0xc76d('0x4')](_0xc76d('0x27'),_0x371306[_0xc76d('0x5')]),_0x371306);utils['info'](util[_0xc76d('0x4')](_0xc76d('0x28'),_0x371306[_0xc76d('0x5')],agents[_0x371306[_0xc76d('0x12')]][_0xc76d('0x6')],_0x371306[_0xc76d('0x12')]));agents[_0x371306['destuniqueid']]['agentconnectAt']=utils[_0xc76d('0x16')]();agents[_0x371306['destuniqueid']][_0xc76d('0x19')]=_0x371306[_0xc76d('0x19')];agents[_0x371306[_0xc76d('0x12')]][_0xc76d('0x29')]=_0x371306['connectedlinename'];agents[_0x371306['destuniqueid']][_0xc76d('0x22')]=_0x371306[_0xc76d('0x2a')];agents[_0x371306[_0xc76d('0x12')]][_0xc76d('0x17')]=_0xc76d('0x2b');_['forIn'](agents,function(_0x42404c,_0xb264b0){if(_0x42404c[_0xc76d('0x12')]!=_0x371306[_0xc76d('0x12')]&&_0x42404c[_0xc76d('0x5')]==_0x371306[_0xc76d('0x5')]){_0x42404c[_0xc76d('0x23')]=0x0;_0x42404c[_0xc76d('0x22')]=_0x371306[_0xc76d('0x2a')];_0x42404c[_0xc76d('0x1c')]=!![];_0x42404c['agentringnoanswerAt']=utils['now']();_0x42404c[_0xc76d('0x17')]=_0xc76d('0x2c');_0x42404c[_0xc76d('0x21')]=_0xc76d('0x2c');_0x42404c['answeredelsewheredestinationuniqueid']=_0x371306['destuniqueid'];_0x42404c[_0xc76d('0x2d')]=_0x371306[_0xc76d('0x6')];writeDB(_0x42404c);}});}}catch(_0x3e471e){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')](_0xc76d('0x27'),_0x371306[_0xc76d('0x5')]),_0x3e471e);}};exports[_0xc76d('0xc')]=function(_0x50e922){try{if(!_[_0xc76d('0x2e')](agents[_0x50e922[_0xc76d('0x12')]])){utils[_0xc76d('0x14')](util[_0xc76d('0x4')]('[%s][agents][agentcomplete]',_0x50e922['uniqueid']),_0x50e922);utils['info'](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x50e922['uniqueid'],agents[_0x50e922['destuniqueid']][_0xc76d('0x6')],_0x50e922[_0xc76d('0x12')]));agents[_0x50e922[_0xc76d('0x12')]][_0xc76d('0xc')]=!![];agents[_0x50e922[_0xc76d('0x12')]][_0xc76d('0x2f')]=utils[_0xc76d('0x16')]();agents[_0x50e922[_0xc76d('0x12')]]['talktime']=utils[_0xc76d('0x30')](agents[_0x50e922[_0xc76d('0x12')]][_0xc76d('0x2f')],agents[_0x50e922[_0xc76d('0x12')]][_0xc76d('0x31')]);agents[_0x50e922[_0xc76d('0x12')]][_0xc76d('0x21')]=_0x50e922[_0xc76d('0x21')];agents[_0x50e922[_0xc76d('0x12')]]['lastevent']='complete';writeDB(agents[_0x50e922[_0xc76d('0x12')]]);}}catch(_0x170f47){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')](_0xc76d('0x32'),_0x50e922['uniqueid']),_0x170f47);}};exports[_0xc76d('0x33')]=function(_0x1ede13){try{if(!_['isNil'](agents[_0x1ede13['transfereruniqueid']])){utils[_0xc76d('0x14')](util[_0xc76d('0x4')]('[%s][agents][blindtransfer]',_0x1ede13[_0xc76d('0x5')]),_0x1ede13);utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x34'),_0x1ede13[_0xc76d('0x5')],agents[_0x1ede13[_0xc76d('0x35')]][_0xc76d('0x6')],agents[_0x1ede13[_0xc76d('0x35')]][_0xc76d('0x5')]));agents[_0x1ede13[_0xc76d('0x35')]]['transfer']=!![];agents[_0x1ede13[_0xc76d('0x35')]][_0xc76d('0x36')]=_0xc76d('0x37');agents[_0x1ede13['transfereruniqueid']][_0xc76d('0x38')]=_0x1ede13[_0xc76d('0x39')];agents[_0x1ede13['transfereruniqueid']][_0xc76d('0x3a')]=agents[_0x1ede13['transfereruniqueid']][_0xc76d('0x5')];}}catch(_0x12c972){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')](_0xc76d('0x3b'),_0x1ede13['uniqueid']),_0x12c972);}};exports['attendedtransfer']=function(_0x5bec6c){try{utils[_0xc76d('0x14')](util[_0xc76d('0x4')](_0xc76d('0x3c'),_0x5bec6c[_0xc76d('0x3d')]),_0x5bec6c);if(_0x5bec6c[_0xc76d('0x3d')]==_0x5bec6c[_0xc76d('0x3e')]){if(!_['isNil'](agents[_0x5bec6c[_0xc76d('0x3f')]])){utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x40'),_0x5bec6c[_0xc76d('0x3d')],agents[_0x5bec6c['secondtransfereruniqueid']][_0xc76d('0x6')]));agents[_0x5bec6c[_0xc76d('0x3f')]][_0xc76d('0x41')]=!![];agents[_0x5bec6c[_0xc76d('0x3f')]][_0xc76d('0x36')]=_0xc76d('0x42');agents[_0x5bec6c['secondtransfereruniqueid']][_0xc76d('0x38')]=_0x5bec6c[_0xc76d('0x43')];agents[_0x5bec6c['secondtransfereruniqueid']]['transferuniqueid']=_0x5bec6c[_0xc76d('0x3d')];}if(_0x5bec6c['transfereeuniqueid']&&agents[_0x5bec6c[_0xc76d('0x44')]]){agents[_0x5bec6c[_0xc76d('0x44')]][_0xc76d('0x45')]=0x1;transfers[_0x5bec6c[_0xc76d('0x44')]]=_[_0xc76d('0x46')](agents[_0x5bec6c[_0xc76d('0x44')]]);transfers[_0x5bec6c[_0xc76d('0x44')]][_0xc76d('0x8')]=agents[_0x5bec6c[_0xc76d('0x3f')]][_0xc76d('0x8')];transfers[_0x5bec6c[_0xc76d('0x44')]][_0xc76d('0x47')]=agents[_0x5bec6c[_0xc76d('0x3f')]][_0xc76d('0x47')];transfers[_0x5bec6c['transfereeuniqueid']][_0xc76d('0x48')]=utils[_0xc76d('0x16')]();transfers[_0x5bec6c[_0xc76d('0x44')]][_0xc76d('0x31')]=utils[_0xc76d('0x16')]();transfers[_0x5bec6c['transfereeuniqueid']][_0xc76d('0x22')]=0x0;transfers[_0x5bec6c[_0xc76d('0x44')]]['agententerreason']=0x2;}}else if(_0x5bec6c['secondtransfereruniqueid']==_0x5bec6c['secondtransfererlinkedid']){if(!_[_0xc76d('0x2e')](agents[_0x5bec6c[_0xc76d('0x3d')]])){utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x40'),_0x5bec6c[_0xc76d('0x3d')],agents[_0x5bec6c[_0xc76d('0x3d')]][_0xc76d('0x6')]));agents[_0x5bec6c['origtransfereruniqueid']][_0xc76d('0x41')]=!![];agents[_0x5bec6c['origtransfereruniqueid']]['transfertype']=_0xc76d('0x42');agents[_0x5bec6c[_0xc76d('0x3d')]][_0xc76d('0x38')]=_0x5bec6c['secondtransfererexten'];agents[_0x5bec6c[_0xc76d('0x3d')]]['transferuniqueid']=_0x5bec6c['secondtransfereruniqueid'];}if(_0x5bec6c['transfertargetuniqueid']&&agents[_0x5bec6c[_0xc76d('0x49')]]){agents[_0x5bec6c[_0xc76d('0x49')]]['agententerreason']=0x1;transfers[_0x5bec6c[_0xc76d('0x49')]]=_[_0xc76d('0x46')](agents[_0x5bec6c[_0xc76d('0x49')]]);transfers[_0x5bec6c[_0xc76d('0x49')]][_0xc76d('0x8')]=agents[_0x5bec6c[_0xc76d('0x3d')]][_0xc76d('0x8')];transfers[_0x5bec6c['transfertargetuniqueid']]['calleridname']=agents[_0x5bec6c['origtransfereruniqueid']][_0xc76d('0x47')];transfers[_0x5bec6c[_0xc76d('0x49')]][_0xc76d('0x48')]=utils[_0xc76d('0x16')]();transfers[_0x5bec6c[_0xc76d('0x49')]]['agentconnectAt']=utils[_0xc76d('0x16')]();transfers[_0x5bec6c[_0xc76d('0x49')]][_0xc76d('0x22')]=0x0;transfers[_0x5bec6c[_0xc76d('0x49')]][_0xc76d('0x45')]=0x2;}}}catch(_0x2af760){utils[_0xc76d('0x1b')](util[_0xc76d('0x4')]('[%s][agents][attendedtransfer]',_0x5bec6c[_0xc76d('0x3d')]),_0x2af760);}};exports['hangup']=function(_0xa9f2e8){try{utils[_0xc76d('0x14')](util[_0xc76d('0x4')](_0xc76d('0x4a'),_0xa9f2e8['uniqueid']),_0xa9f2e8);if(agents[_0xa9f2e8[_0xc76d('0x5')]]&&agents[_0xa9f2e8['uniqueid']]['reason']===_0xc76d('0x20')){if(_0xa9f2e8[_0xc76d('0x4b')]==='21'){agents[_0xa9f2e8['uniqueid']][_0xc76d('0x21')]=_0xc76d('0x4c');agents[_0xa9f2e8['uniqueid']][_0xc76d('0x17')]=_0xc76d('0x4c');}utils['info'](util[_0xc76d('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xa9f2e8[_0xc76d('0x5')],agents[_0xa9f2e8[_0xc76d('0x5')]]['membername'],agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x21')],agents[_0xa9f2e8['uniqueid']][_0xc76d('0x17')]));writeDB(agents[_0xa9f2e8[_0xc76d('0x5')]]);var _0x277382=unanswered['indexOf'](_0xa9f2e8[_0xc76d('0x5')]);if(_0x277382>-0x1){unanswered['splice'](_0x277382,0x1);}}if(transfers[_0xa9f2e8['uniqueid']]){transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0xc')]=!![];transfers[_0xa9f2e8['uniqueid']][_0xc76d('0x2f')]=utils[_0xc76d('0x16')]();transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x23')]=utils[_0xc76d('0x30')](transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x2f')],transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x31')]);transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x21')]=_0xc76d('0x4d');transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x17')]=_0xc76d('0x4e');utils[_0xc76d('0x3')](util[_0xc76d('0x4')](_0xc76d('0x4f'),_0xa9f2e8[_0xc76d('0x5')],transfers[_0xa9f2e8[_0xc76d('0x5')]]['membername'],transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x21')],transfers[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x17')]));writeDB(transfers[_0xa9f2e8[_0xc76d('0x5')]],!![]);}if(agents[_0xa9f2e8[_0xc76d('0x5')]]&&agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x31')]){agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0xc')]=!![];agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x2f')]=utils[_0xc76d('0x16')]();agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x23')]=utils[_0xc76d('0x30')](agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x2f')],agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x31')]);agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x21')]=agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x41')]?'transfer':_0xc76d('0x4d');agents[_0xa9f2e8[_0xc76d('0x5')]]['lastevent']=_0xc76d('0x4e');utils[_0xc76d('0x3')](util['format'](_0xc76d('0x4f'),_0xa9f2e8[_0xc76d('0x5')],agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x6')],agents[_0xa9f2e8[_0xc76d('0x5')]][_0xc76d('0x21')],agents[_0xa9f2e8[_0xc76d('0x5')]]['lastevent']));writeDB(agents[_0xa9f2e8['uniqueid']]);}}catch(_0xe6a1dc){utils[_0xc76d('0x1b')](util['format'](_0xc76d('0x4a'),_0xa9f2e8[_0xc76d('0x5')]),_0xe6a1dc);}};
\ No newline at end of file
+var _0xd87e=['getVoiceQueueByName','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','debug','format','[%s][agents][agentcalled]','uniqueid','destuniqueid','agentcalledAt','now','called','connectedlinenum','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','agentringnoanswer','[%s][agents][agentringnoanswer]','timeout','reason','holdtime','ringtime','talktime','push','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','blindtransfer','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','transferexten','extension','[%s][agents][blindtransfer]','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','lodash','util','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','lastevent'];(function(_0x38da2d,_0x5b9253){var _0x2d3434=function(_0x802df8){while(--_0x802df8){_0x38da2d['push'](_0x38da2d['shift']());}};_0x2d3434(++_0x5b9253);}(_0xd87e,0x1bf));var _0xed87=function(_0x511fad,_0x26cf29){_0x511fad=_0x511fad-0x0;var _0x4b61bd=_0xd87e[_0x511fad];return _0x4b61bd;};'use strict';var _=require(_0xed87('0x0'));var util=require(_0xed87('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x334485,_0x189fdd){utils[_0xed87('0x2')](util['format'](_0xed87('0x3'),_0x334485['uniqueid'],_0x334485[_0xed87('0x4')],_0x334485[_0xed87('0x5')],_0x334485['membername'],_0x334485[_0xed87('0x6')],_0x334485['calleridnum'],_0x334485['connectedlinenum'],_0x334485[_0xed87('0x7')]));if(_0x334485[_0xed87('0x5')]){utils[_0xed87('0x8')](_0x334485[_0xed87('0x5')])['then'](function(_0x191ca1){if(_0x191ca1){_0x334485[_0xed87('0x9')]=_0x191ca1[_0xed87('0x9')];_0x334485[_0xed87('0xa')]=_0x334485[_0xed87('0xb')]?_0x191ca1[_0xed87('0xc')]:![];_0x334485[_0xed87('0xd')]=_0x334485['agentacw']?_0x191ca1[_0xed87('0xe')]:0x0;}utils[_0xed87('0xf')]('CreateVoiceAgentReport',_0x334485);});}else{utils[_0xed87('0xf')](_0xed87('0x10'),_0x334485);}if(_0x189fdd){delete transfers[_0x334485['uniqueid']];}else{delete agents[_0x334485['destuniqueid']];}}exports[_0xed87('0x11')]=function(_0x32276e){try{utils[_0xed87('0x12')](util[_0xed87('0x13')](_0xed87('0x14'),_0x32276e[_0xed87('0x15')]),_0x32276e);agents[_0x32276e['destuniqueid']]=_0x32276e;agents[_0x32276e[_0xed87('0x16')]][_0xed87('0x17')]=utils[_0xed87('0x18')]();agents[_0x32276e[_0xed87('0x16')]][_0xed87('0x7')]=_0xed87('0x19');agents[_0x32276e[_0xed87('0x16')]][_0xed87('0x1a')]=null;agents[_0x32276e[_0xed87('0x16')]]['connectedlinename']=null;utils[_0xed87('0x2')](util[_0xed87('0x13')](_0xed87('0x1b'),_0x32276e[_0xed87('0x15')],agents[_0x32276e['destuniqueid']][_0xed87('0x1c')],_0x32276e[_0xed87('0x16')]));}catch(_0x8920a1){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x14'),_0x32276e[_0xed87('0x15')]),_0x8920a1);}};exports[_0xed87('0x1e')]=function(_0x3b7981){try{if(!_['isNil'](agents[_0x3b7981['destuniqueid']])){utils['debug'](util['format'](_0xed87('0x1f'),_0x3b7981['uniqueid']),_0x3b7981);utils[_0xed87('0x2')](util[_0xed87('0x13')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x3b7981[_0xed87('0x15')],agents[_0x3b7981['destuniqueid']][_0xed87('0x1c')],_0x3b7981[_0xed87('0x16')]));agents[_0x3b7981[_0xed87('0x16')]][_0xed87('0x1e')]=!![];agents[_0x3b7981[_0xed87('0x16')]]['agentringnoanswerAt']=utils[_0xed87('0x18')]();agents[_0x3b7981[_0xed87('0x16')]][_0xed87('0x7')]=_0xed87('0x20');agents[_0x3b7981[_0xed87('0x16')]][_0xed87('0x21')]=_0xed87('0x20');agents[_0x3b7981[_0xed87('0x16')]][_0xed87('0x22')]=_0x3b7981[_0xed87('0x23')]?parseInt(_0x3b7981[_0xed87('0x23')])/0x3e8:0x0;agents[_0x3b7981[_0xed87('0x16')]][_0xed87('0x24')]=0x0;unanswered[_0xed87('0x25')](_0x3b7981['destuniqueid']);}}catch(_0xb32b1c){utils[_0xed87('0x1d')](util['format'](_0xed87('0x1f'),_0x3b7981[_0xed87('0x15')]),_0xb32b1c);}};exports[_0xed87('0x26')]=function(_0x4b259e){try{_['forIn'](agents,function(_0xd0efba,_0x428b75){if(_0xd0efba[_0xed87('0x15')]==_0x4b259e['uniqueid']&&!_[_0xed87('0x27')](unanswered,_0xd0efba[_0xed87('0x16')])){utils[_0xed87('0x12')](util[_0xed87('0x13')](_0xed87('0x28'),_0x4b259e[_0xed87('0x15')]),_0x4b259e);utils[_0xed87('0x2')](util[_0xed87('0x13')](_0xed87('0x29'),_0x4b259e['uniqueid'],_0xd0efba[_0xed87('0x1c')],_0xd0efba[_0xed87('0x16')]));_0xd0efba['agentringnoanswer']=!![];_0xd0efba[_0xed87('0x2a')]=utils['now']();_0xd0efba[_0xed87('0x7')]=_0xed87('0x2b');_0xd0efba[_0xed87('0x21')]=_0xed87('0x2b');_0xd0efba[_0xed87('0x22')]=_0x4b259e[_0xed87('0x22')];_0xd0efba[_0xed87('0x24')]=0x0;writeDB(_0xd0efba);}});}catch(_0x37a694){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x28'),_0x4b259e['uniqueid']),_0x37a694);}};exports[_0xed87('0x2c')]=function(_0x167de8){try{if(agents[_0x167de8['destuniqueid']]){utils[_0xed87('0x12')](util['format'](_0xed87('0x2d'),_0x167de8[_0xed87('0x15')]),_0x167de8);utils['info'](util[_0xed87('0x13')](_0xed87('0x2e'),_0x167de8[_0xed87('0x15')],agents[_0x167de8[_0xed87('0x16')]][_0xed87('0x1c')],_0x167de8['destuniqueid']));agents[_0x167de8[_0xed87('0x16')]]['agentconnectAt']=utils[_0xed87('0x18')]();agents[_0x167de8['destuniqueid']][_0xed87('0x1a')]=_0x167de8[_0xed87('0x1a')];agents[_0x167de8[_0xed87('0x16')]][_0xed87('0x2f')]=_0x167de8[_0xed87('0x2f')];agents[_0x167de8[_0xed87('0x16')]][_0xed87('0x22')]=_0x167de8[_0xed87('0x23')];agents[_0x167de8[_0xed87('0x16')]]['lastevent']='connect';_[_0xed87('0x30')](agents,function(_0x206544,_0x1f16a8){if(_0x206544[_0xed87('0x16')]!=_0x167de8[_0xed87('0x16')]&&_0x206544[_0xed87('0x15')]==_0x167de8['uniqueid']){_0x206544[_0xed87('0x24')]=0x0;_0x206544[_0xed87('0x22')]=_0x167de8[_0xed87('0x23')];_0x206544['agentringnoanswer']=!![];_0x206544[_0xed87('0x2a')]=utils[_0xed87('0x18')]();_0x206544[_0xed87('0x7')]=_0xed87('0x31');_0x206544[_0xed87('0x21')]=_0xed87('0x31');_0x206544[_0xed87('0x32')]=_0x167de8[_0xed87('0x16')];_0x206544[_0xed87('0x33')]=_0x167de8[_0xed87('0x1c')];writeDB(_0x206544);}});}}catch(_0x5c6925){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x2d'),_0x167de8['uniqueid']),_0x5c6925);}};exports['agentcomplete']=function(_0xa31eec){try{if(!_[_0xed87('0x34')](agents[_0xa31eec[_0xed87('0x16')]])){utils[_0xed87('0x12')](util['format'](_0xed87('0x35'),_0xa31eec[_0xed87('0x15')]),_0xa31eec);utils['info'](util[_0xed87('0x13')](_0xed87('0x36'),_0xa31eec[_0xed87('0x15')],agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x1c')],_0xa31eec[_0xed87('0x16')]));agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0xb')]=!![];agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x37')]=utils[_0xed87('0x18')]();agents[_0xa31eec['destuniqueid']][_0xed87('0x24')]=utils[_0xed87('0x38')](agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x37')],agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x39')]);agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x21')]=_0xa31eec[_0xed87('0x21')];agents[_0xa31eec[_0xed87('0x16')]][_0xed87('0x7')]=_0xed87('0x3a');writeDB(agents[_0xa31eec[_0xed87('0x16')]]);}}catch(_0x244e18){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x35'),_0xa31eec['uniqueid']),_0x244e18);}};exports[_0xed87('0x3b')]=function(_0x1a68a7){try{if(!_[_0xed87('0x34')](agents[_0x1a68a7['transfereruniqueid']])){utils[_0xed87('0x12')](util[_0xed87('0x13')]('[%s][agents][blindtransfer]',_0x1a68a7[_0xed87('0x15')]),_0x1a68a7);utils[_0xed87('0x2')](util[_0xed87('0x13')](_0xed87('0x3c'),_0x1a68a7['uniqueid'],agents[_0x1a68a7[_0xed87('0x3d')]][_0xed87('0x1c')],agents[_0x1a68a7[_0xed87('0x3d')]][_0xed87('0x15')]));agents[_0x1a68a7[_0xed87('0x3d')]][_0xed87('0x3e')]=!![];agents[_0x1a68a7[_0xed87('0x3d')]][_0xed87('0x3f')]=_0xed87('0x40');agents[_0x1a68a7[_0xed87('0x3d')]][_0xed87('0x41')]=_0x1a68a7[_0xed87('0x42')];agents[_0x1a68a7[_0xed87('0x3d')]]['transferuniqueid']=agents[_0x1a68a7[_0xed87('0x3d')]]['uniqueid'];}}catch(_0x17cad7){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x43'),_0x1a68a7[_0xed87('0x15')]),_0x17cad7);}};exports[_0xed87('0x44')]=function(_0x25f837){try{utils[_0xed87('0x12')](util[_0xed87('0x13')](_0xed87('0x45'),_0x25f837['origtransfereruniqueid']),_0x25f837);if(_0x25f837[_0xed87('0x46')]==_0x25f837[_0xed87('0x47')]){if(!_[_0xed87('0x34')](agents[_0x25f837[_0xed87('0x48')]])){utils[_0xed87('0x2')](util[_0xed87('0x13')](_0xed87('0x49'),_0x25f837[_0xed87('0x46')],agents[_0x25f837[_0xed87('0x48')]][_0xed87('0x1c')]));agents[_0x25f837[_0xed87('0x48')]]['transfer']=!![];agents[_0x25f837['secondtransfereruniqueid']][_0xed87('0x3f')]=_0xed87('0x4a');agents[_0x25f837[_0xed87('0x48')]][_0xed87('0x41')]=_0x25f837[_0xed87('0x4b')];agents[_0x25f837['secondtransfereruniqueid']][_0xed87('0x4c')]=_0x25f837[_0xed87('0x46')];}if(_0x25f837[_0xed87('0x4d')]&&agents[_0x25f837[_0xed87('0x4d')]]){agents[_0x25f837[_0xed87('0x4d')]][_0xed87('0x4e')]=0x1;transfers[_0x25f837[_0xed87('0x4d')]]=_[_0xed87('0x4f')](agents[_0x25f837[_0xed87('0x4d')]]);transfers[_0x25f837[_0xed87('0x4d')]][_0xed87('0x50')]=agents[_0x25f837[_0xed87('0x48')]][_0xed87('0x50')];transfers[_0x25f837[_0xed87('0x4d')]]['calleridname']=agents[_0x25f837[_0xed87('0x48')]][_0xed87('0x51')];transfers[_0x25f837[_0xed87('0x4d')]][_0xed87('0x17')]=utils[_0xed87('0x18')]();transfers[_0x25f837[_0xed87('0x4d')]][_0xed87('0x39')]=utils[_0xed87('0x18')]();transfers[_0x25f837['transfereeuniqueid']][_0xed87('0x22')]=0x0;transfers[_0x25f837[_0xed87('0x4d')]][_0xed87('0x4e')]=0x2;}}else if(_0x25f837[_0xed87('0x48')]==_0x25f837[_0xed87('0x52')]){if(!_[_0xed87('0x34')](agents[_0x25f837['origtransfereruniqueid']])){utils['info'](util[_0xed87('0x13')](_0xed87('0x49'),_0x25f837[_0xed87('0x46')],agents[_0x25f837[_0xed87('0x46')]][_0xed87('0x1c')]));agents[_0x25f837[_0xed87('0x46')]][_0xed87('0x3e')]=!![];agents[_0x25f837[_0xed87('0x46')]]['transfertype']=_0xed87('0x4a');agents[_0x25f837['origtransfereruniqueid']][_0xed87('0x41')]=_0x25f837[_0xed87('0x53')];agents[_0x25f837['origtransfereruniqueid']][_0xed87('0x4c')]=_0x25f837[_0xed87('0x48')];}if(_0x25f837['transfertargetuniqueid']&&agents[_0x25f837[_0xed87('0x54')]]){agents[_0x25f837[_0xed87('0x54')]][_0xed87('0x4e')]=0x1;transfers[_0x25f837[_0xed87('0x54')]]=_[_0xed87('0x4f')](agents[_0x25f837['transfertargetuniqueid']]);transfers[_0x25f837[_0xed87('0x54')]][_0xed87('0x50')]=agents[_0x25f837[_0xed87('0x46')]][_0xed87('0x50')];transfers[_0x25f837['transfertargetuniqueid']]['calleridname']=agents[_0x25f837[_0xed87('0x46')]][_0xed87('0x51')];transfers[_0x25f837['transfertargetuniqueid']][_0xed87('0x17')]=utils[_0xed87('0x18')]();transfers[_0x25f837[_0xed87('0x54')]][_0xed87('0x39')]=utils[_0xed87('0x18')]();transfers[_0x25f837[_0xed87('0x54')]][_0xed87('0x22')]=0x0;transfers[_0x25f837[_0xed87('0x54')]][_0xed87('0x4e')]=0x2;}}}catch(_0x38b588){utils[_0xed87('0x1d')](util[_0xed87('0x13')](_0xed87('0x45'),_0x25f837[_0xed87('0x46')]),_0x38b588);}};exports['hangup']=function(_0xa81cc8){try{utils[_0xed87('0x12')](util['format']('[%s][agents][hangup]',_0xa81cc8[_0xed87('0x15')]),_0xa81cc8);if(agents[_0xa81cc8[_0xed87('0x15')]]&&agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x21')]===_0xed87('0x20')){if(_0xa81cc8[_0xed87('0x55')]==='21'){agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x21')]='rejected';agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x7')]=_0xed87('0x56');}utils[_0xed87('0x2')](util[_0xed87('0x13')](_0xed87('0x57'),_0xa81cc8[_0xed87('0x15')],agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x1c')],agents[_0xa81cc8[_0xed87('0x15')]]['reason'],agents[_0xa81cc8['uniqueid']]['lastevent']));writeDB(agents[_0xa81cc8[_0xed87('0x15')]]);var _0x7d3e21=unanswered[_0xed87('0x58')](_0xa81cc8[_0xed87('0x15')]);if(_0x7d3e21>-0x1){unanswered[_0xed87('0x59')](_0x7d3e21,0x1);}}if(transfers[_0xa81cc8['uniqueid']]){transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0xb')]=!![];transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x37')]=utils[_0xed87('0x18')]();transfers[_0xa81cc8[_0xed87('0x15')]]['talktime']=utils['diffTime'](transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x37')],transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x39')]);transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x21')]=_0xed87('0x5a');transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x7')]=_0xed87('0x3a');utils[_0xed87('0x2')](util[_0xed87('0x13')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0xa81cc8[_0xed87('0x15')],transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x1c')],transfers[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x21')],transfers[_0xa81cc8[_0xed87('0x15')]]['lastevent']));writeDB(transfers[_0xa81cc8[_0xed87('0x15')]],!![]);}if(agents[_0xa81cc8[_0xed87('0x15')]]&&agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x39')]){agents[_0xa81cc8['uniqueid']]['agentcomplete']=!![];agents[_0xa81cc8['uniqueid']]['agentcompleteAt']=utils['now']();agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x24')]=utils[_0xed87('0x38')](agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x37')],agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x39')]);agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x21')]=agents[_0xa81cc8['uniqueid']]['transfer']?_0xed87('0x3e'):_0xed87('0x5a');agents[_0xa81cc8[_0xed87('0x15')]][_0xed87('0x7')]=_0xed87('0x3a');utils['info'](util['format'](_0xed87('0x57'),_0xa81cc8[_0xed87('0x15')],agents[_0xa81cc8['uniqueid']][_0xed87('0x1c')],agents[_0xa81cc8['uniqueid']][_0xed87('0x21')],agents[_0xa81cc8['uniqueid']][_0xed87('0x7')]));writeDB(agents[_0xa81cc8[_0xed87('0x15')]]);}}catch(_0x3dd107){utils[_0xed87('0x1d')](util[_0xed87('0x13')]('[%s][agents][hangup]',_0xa81cc8[_0xed87('0x15')]),_0x3dd107);}};
\ No newline at end of file
index 865a0dc..fd952b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca61=['[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','startsWith','toLowerCase','cdr','split','substring','lastIndexOf','noop','set','gotoif','lodash','util','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','connectedlinenum','lastevent','accountcode','UserId','request','CreateVoiceCallReport','recording','newchannel','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','answertime','now','disposition','toNumber','error','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','callerid','cause-txt','endtime','duration','billableseconds','diffTime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','debug','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','secondtransfererchannel','_attended','origtransfererchannel','destinationchannel','userfield','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid'];(function(_0x5cd7a3,_0x1aa14f){var _0x21235d=function(_0x3152a9){while(--_0x3152a9){_0x5cd7a3['push'](_0x5cd7a3['shift']());}};_0x21235d(++_0x1aa14f);}(_0xca61,0x1be));var _0x1ca6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xca61[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1ca6('0x0'));var util=require(_0x1ca6('0x1'));var utils=require('./utils');var transfers=require(_0x1ca6('0x2'));var dispositions=[_0x1ca6('0x3'),_0x1ca6('0x4'),'FAILED','NO\x20ANSWER','NO\x20ANSWER',_0x1ca6('0x3'),_0x1ca6('0x5'),'BUSY',_0x1ca6('0x4'),_0x1ca6('0x4'),'FAILED'];var channels={};function writeDB(_0xa6af2b){var _0x7c7bea;if(transfers[_0x1ca6('0x6')][_0xa6af2b[_0x1ca6('0x7')]]){_0x7c7bea=_0xa6af2b['uniqueid'];_0xa6af2b[_0x1ca6('0x7')]=transfers[_0x1ca6('0x6')][_0xa6af2b['uniqueid']][_0x1ca6('0x8')];}utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0xb'),_0xa6af2b['uniqueid'],_0xa6af2b[_0x1ca6('0xc')],_0xa6af2b[_0x1ca6('0xd')],_0xa6af2b[_0x1ca6('0xe')],_0xa6af2b['interface'],_0xa6af2b['calleridnum'],_0xa6af2b[_0x1ca6('0xf')],_0xa6af2b[_0x1ca6('0x10')]));if(_0xa6af2b['accountcode']){utils['getUserByInternal'](_0xa6af2b[_0x1ca6('0x11')])['then'](function(_0x27c1b5){if(_0x27c1b5){_0xa6af2b[_0x1ca6('0x12')]=_0x27c1b5['id'];}utils[_0x1ca6('0x13')](_0x1ca6('0x14'),_0xa6af2b);});}else{utils[_0x1ca6('0x13')](_0x1ca6('0x14'),_0xa6af2b);}if(channels[_0xa6af2b[_0x1ca6('0x7')]]){delete channels[_0xa6af2b[_0x1ca6('0x7')]];}else if(_0x7c7bea&&channels[_0x7c7bea]){if(!transfers[_0x1ca6('0x6')][_0x7c7bea][_0x1ca6('0x15')])delete transfers[_0x1ca6('0x6')][_0x7c7bea];delete channels[_0x7c7bea];}}exports[_0x1ca6('0x16')]=function(_0x4ad4fa){try{utils['debug'](util[_0x1ca6('0xa')](_0x1ca6('0x17'),_0x4ad4fa[_0x1ca6('0x7')]),_0x4ad4fa);if(_0x4ad4fa['uniqueid']==_0x4ad4fa[_0x1ca6('0x18')]&&_0x4ad4fa[_0x1ca6('0xc')]!=_0x1ca6('0x19')){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x1a'),_0x4ad4fa['uniqueid'],_0x4ad4fa[_0x1ca6('0x1b')],_0x4ad4fa[_0x1ca6('0x1c')]));channels[_0x4ad4fa[_0x1ca6('0x7')]]={'uniqueid':_0x4ad4fa['uniqueid'],'accountcode':_0x4ad4fa[_0x1ca6('0x11')],'source':_0x4ad4fa[_0x1ca6('0x1d')],'destination':_0x4ad4fa[_0x1ca6('0x1c')],'destinationcontext':_0x4ad4fa[_0x1ca6('0x1b')],'channel':_0x4ad4fa[_0x1ca6('0xc')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x1ca6('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x26f107){utils['error'](util[_0x1ca6('0xa')](_0x1ca6('0x17'),_0x4ad4fa[_0x1ca6('0x7')]),_0x26f107);}};exports['newstate']=function(_0x5686de){try{utils['debug'](util[_0x1ca6('0xa')](_0x1ca6('0x1e'),_0x5686de[_0x1ca6('0x7')]),_0x5686de);if(!_[_0x1ca6('0x1f')](channels[_0x5686de['uniqueid']])&&_0x5686de[_0x1ca6('0x20')]==0x6){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x21'),_0x5686de['uniqueid'],_0x5686de[_0x1ca6('0x1b')],_0x5686de['channel']));if(_[_0x1ca6('0x1f')](channels[_0x5686de['uniqueid']][_0x1ca6('0x22')])){channels[_0x5686de[_0x1ca6('0x7')]]['systemanswertime']=utils['now']();}}else if(!_['isNil'](channels[_0x5686de[_0x1ca6('0x18')]])&&_0x5686de[_0x1ca6('0x20')]==0x6&&_0x5686de[_0x1ca6('0x1b')]!=_0x1ca6('0x23')){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x24'),_0x5686de[_0x1ca6('0x7')],_0x5686de['linkedid'],_0x5686de[_0x1ca6('0x1b')],_0x5686de['channel']));channels[_0x5686de[_0x1ca6('0x18')]]['accountcode']=_0x5686de[_0x1ca6('0x11')];channels[_0x5686de['linkedid']]['destinationchannel']=_0x5686de[_0x1ca6('0xc')];if(_[_0x1ca6('0x1f')](channels[_0x5686de['linkedid']][_0x1ca6('0x25')])){channels[_0x5686de[_0x1ca6('0x18')]][_0x1ca6('0x25')]=utils[_0x1ca6('0x26')]();}channels[_0x5686de[_0x1ca6('0x18')]][_0x1ca6('0x27')]=dispositions[_[_0x1ca6('0x28')](_0x5686de[_0x1ca6('0x20')])]||_0x1ca6('0x5');}}catch(_0x516fe4){utils[_0x1ca6('0x29')](util['format'](_0x1ca6('0x1e'),_0x5686de[_0x1ca6('0x7')]),_0x516fe4);}};exports['hangup']=function(_0xef148a){try{if(!_['isNil'](channels[_0xef148a[_0x1ca6('0x7')]])){utils['debug'](util[_0x1ca6('0xa')]('[%s][calls][hangup]',_0xef148a['uniqueid']),_0xef148a);if(_[_0x1ca6('0x1f')](channels[_0xef148a[_0x1ca6('0x7')]]['callerid'])){channels[_0xef148a[_0x1ca6('0x7')]]['callerid']=_0xef148a['calleridname']+'\x20<'+_0xef148a['calleridnum']+'>';}utils['info'](util[_0x1ca6('0xa')](_0x1ca6('0x2a'),_0xef148a[_0x1ca6('0x7')],channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x2b')],_0xef148a[_0x1ca6('0x2c')]));channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x2d')]=utils[_0x1ca6('0x26')]();channels[_0xef148a['uniqueid']][_0x1ca6('0x2e')]=utils['diffTime'](channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x2d')],channels[_0xef148a[_0x1ca6('0x7')]]['starttime']);channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x2f')]=channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x25')]?utils[_0x1ca6('0x30')](channels[_0xef148a[_0x1ca6('0x7')]][_0x1ca6('0x2d')],channels[_0xef148a['uniqueid']][_0x1ca6('0x25')]):0x0;writeDB(channels[_0xef148a['uniqueid']]);}}catch(_0x529cb6){utils['error'](util[_0x1ca6('0xa')](_0x1ca6('0x31'),_0xef148a[_0x1ca6('0x7')]),_0x529cb6);}};exports[_0x1ca6('0x32')]=function(_0x5a203d){try{if(!_[_0x1ca6('0x1f')](channels[_0x5a203d[_0x1ca6('0x33')]])){utils[_0x1ca6('0x34')](util[_0x1ca6('0xa')](_0x1ca6('0x35'),_0x5a203d[_0x1ca6('0x36')]),_0x5a203d);if(channels[_0x5a203d[_0x1ca6('0x33')]]['channel']==_0x5a203d[_0x1ca6('0x37')]){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x5a203d['origtransfereruniqueid'],_0x5a203d[_0x1ca6('0x33')],_0x5a203d[_0x1ca6('0x38')]));channels[_0x5a203d[_0x1ca6('0x33')]]['destinationchannel']=_0x5a203d[_0x1ca6('0x38')];channels[_0x5a203d['localtwolinkedid']]['userfield']=_0x1ca6('0x39');}else if(channels[_0x5a203d[_0x1ca6('0x33')]]['channel']=_0x5a203d['transfertargetchannel']){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x5a203d[_0x1ca6('0x36')],_0x5a203d[_0x1ca6('0x33')],_0x5a203d[_0x1ca6('0x3a')]));channels[_0x5a203d[_0x1ca6('0x33')]][_0x1ca6('0x3b')]=_0x5a203d[_0x1ca6('0x3a')];channels[_0x5a203d[_0x1ca6('0x33')]][_0x1ca6('0x3c')]=_0x1ca6('0x39');}}}catch(_0xa532a9){utils[_0x1ca6('0x29')](util[_0x1ca6('0xa')](_0x1ca6('0x35'),_0x5a203d[_0x1ca6('0x36')]),_0xa532a9);}};exports[_0x1ca6('0x3d')]=function(_0x4849cf){try{if(!_[_0x1ca6('0x1f')](channels[_0x4849cf[_0x1ca6('0x7')]])){utils[_0x1ca6('0x34')](util[_0x1ca6('0xa')]('[%s][calls][musiconholdstart]',_0x4849cf[_0x1ca6('0x7')]),_0x4849cf);channels[_0x4849cf['uniqueid']][_0x1ca6('0x3e')]=utils[_0x1ca6('0x26')]();utils['info'](util['format']('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x4849cf['uniqueid'],channels[_0x4849cf[_0x1ca6('0x7')]]['musiconholdstartAt']));}}catch(_0x5607e7){utils[_0x1ca6('0x29')](util['format'](_0x1ca6('0x3f'),_0x4849cf[_0x1ca6('0x7')]),_0x5607e7);}};exports[_0x1ca6('0x40')]=function(_0x22c031){try{if(!_[_0x1ca6('0x1f')](channels[_0x22c031[_0x1ca6('0x7')]])){utils[_0x1ca6('0x34')](util['format'](_0x1ca6('0x41'),_0x22c031[_0x1ca6('0x7')]),_0x22c031);if(!_[_0x1ca6('0x1f')](channels[_0x22c031[_0x1ca6('0x7')]][_0x1ca6('0x3e')])){channels[_0x22c031['uniqueid']][_0x1ca6('0x42')]+=utils[_0x1ca6('0x30')](utils[_0x1ca6('0x26')](),channels[_0x22c031[_0x1ca6('0x7')]][_0x1ca6('0x3e')]);utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x43'),_0x22c031[_0x1ca6('0x7')],channels[_0x22c031[_0x1ca6('0x7')]][_0x1ca6('0x42')]));delete channels[_0x22c031[_0x1ca6('0x7')]]['musiconholdstartAt'];}}}catch(_0x15b450){utils[_0x1ca6('0x29')](util[_0x1ca6('0xa')]('[%s][calls][musiconholdstop]',_0x22c031['uniqueid']),_0x15b450);}};exports['varset']=function(_0xb6c150){try{if(!_[_0x1ca6('0x1f')](channels[_0xb6c150[_0x1ca6('0x7')]])){utils[_0x1ca6('0x34')](util[_0x1ca6('0xa')](_0x1ca6('0x44'),_0xb6c150[_0x1ca6('0x7')]),_0xb6c150);if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')]['xmd-originatecalleridnum'])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x46'),_0xb6c150[_0x1ca6('0x7')],_0xb6c150['value']));channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x47')]=_0xb6c150[_0x1ca6('0x48')];}if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x49')])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x4a'),_0xb6c150[_0x1ca6('0x7')],_0xb6c150[_0x1ca6('0x48')]));channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x4b')]=_0xb6c150[_0x1ca6('0x48')];channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x2b')]='\x22'+_0xb6c150[_0x1ca6('0x48')]+_0x1ca6('0x4c')+_0xb6c150[_0x1ca6('0x48')]+'>';}if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x4d')])||!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x4e')])){utils['info'](util[_0x1ca6('0xa')](_0x1ca6('0x4f'),_0xb6c150['uniqueid'],!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x4d')])?_0x1ca6('0x4d'):_0x1ca6('0x4e'),_0xb6c150[_0x1ca6('0x48')]));channels[_0xb6c150[_0x1ca6('0x7')]]['callerid']=_0xb6c150['value'];}if(!_['isNil'](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x50')])||!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x51')])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x4f'),_0xb6c150[_0x1ca6('0x7')],!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')]['xmd-queue'])?_0x1ca6('0x50'):'xmcs-queue',_0xb6c150['value']));channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x52')]=_0x1ca6('0x53');channels[_0xb6c150[_0x1ca6('0x7')]]['lastdata']=_0xb6c150[_0x1ca6('0x48')];channels[_0xb6c150['uniqueid']][_0x1ca6('0xd')]=!![];}if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x54')])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x55'),_0xb6c150[_0x1ca6('0x7')],_0xb6c150['value']));channels[_0xb6c150[_0x1ca6('0x7')]]['ContactId']=_0xb6c150[_0x1ca6('0x48')];}if(!_[_0x1ca6('0x1f')](_0xb6c150['variable']['xmd-cdrtype'])){utils[_0x1ca6('0x9')](util['format'](_0x1ca6('0x56'),_0xb6c150[_0x1ca6('0x7')],_0xb6c150[_0x1ca6('0x48')]));channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x57')]=_0xb6c150[_0x1ca6('0x48')];}if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')]['outboundrouteid'])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x58'),_0xb6c150['uniqueid'],_0xb6c150['value']));channels[_0xb6c150[_0x1ca6('0x7')]][_0x1ca6('0x59')]=_0xb6c150[_0x1ca6('0x48')];}if(!_[_0x1ca6('0x1f')](_0xb6c150[_0x1ca6('0x45')][_0x1ca6('0x5a')])){utils[_0x1ca6('0x9')](util[_0x1ca6('0xa')](_0x1ca6('0x5b'),_0xb6c150['uniqueid'],_0xb6c150['value']));channels[_0xb6c150['uniqueid']][_0x1ca6('0x5a')]=_0xb6c150[_0x1ca6('0x48')];}}}catch(_0x50ad96){utils[_0x1ca6('0x29')](util[_0x1ca6('0xa')](_0x1ca6('0x44'),_0xb6c150[_0x1ca6('0x7')]),_0x50ad96);}};exports['newexten']=function(_0x8edf35){try{if(!_[_0x1ca6('0x1f')](channels[_0x8edf35[_0x1ca6('0x7')]])){utils[_0x1ca6('0x34')](util[_0x1ca6('0xa')](_0x1ca6('0x5c'),_0x8edf35[_0x1ca6('0x7')]),_0x8edf35);utils['info'](util[_0x1ca6('0xa')](_0x1ca6('0x5d'),_0x8edf35[_0x1ca6('0x7')],_0x8edf35[_0x1ca6('0x5e')],_0x8edf35[_0x1ca6('0x5f')]));if(_0x8edf35[_0x1ca6('0x5e')]['toLowerCase']()=='set'&&_[_0x1ca6('0x60')](_0x8edf35[_0x1ca6('0x5f')][_0x1ca6('0x61')](),_0x1ca6('0x62'))){var _0xd340b1=_0x8edf35[_0x1ca6('0x5f')][_0x1ca6('0x63')]('=');var _0x39c0fc=_0xd340b1[0x0][_0x1ca6('0x64')](_0xd340b1[0x0][_0x1ca6('0x65')]('(')+0x1,_0xd340b1[0x0]['lastIndexOf'](')'));var _0x305aee=_0xd340b1[0x1];channels[_0x8edf35['uniqueid']][_0x39c0fc]=_0x305aee;}if(!_['includes'](['hangup',_0x1ca6('0x66'),'execif',_0x1ca6('0x67'),_0x1ca6('0x68')],_0x8edf35['application']['toLowerCase']())){channels[_0x8edf35[_0x1ca6('0x7')]][_0x1ca6('0x52')]=_0x8edf35['application'];channels[_0x8edf35[_0x1ca6('0x7')]]['lastdata']=_0x8edf35[_0x1ca6('0x5f')];}}}catch(_0x123962){utils['error'](util[_0x1ca6('0xa')]('[%s][calls][newexten]',_0x8edf35[_0x1ca6('0x7')]),_0x123962);}};
\ No newline at end of file
+var _0x855f=['toLowerCase','set','startsWith','cdr','split','lastIndexOf','includes','noop','gotoif','lastdata','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','now','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','linkedid','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','xmd-originatecalleridnum','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','type','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x855f,0x145));var _0xf855=function(_0x56d4e9,_0x543d00){_0x56d4e9=_0x56d4e9-0x0;var _0x3665b8=_0x855f[_0x56d4e9];return _0x3665b8;};'use strict';var _=require(_0xf855('0x0'));var util=require('util');var utils=require(_0xf855('0x1'));var transfers=require(_0xf855('0x2'));var dispositions=[_0xf855('0x3'),_0xf855('0x4'),_0xf855('0x4'),'NO\x20ANSWER',_0xf855('0x3'),_0xf855('0x3'),'ANSWERED','BUSY',_0xf855('0x4'),_0xf855('0x4'),_0xf855('0x4')];var channels={};function writeDB(_0x35cc05){var _0xe6470d;if(transfers[_0xf855('0x5')][_0x35cc05[_0xf855('0x6')]]){_0xe6470d=_0x35cc05['uniqueid'];_0x35cc05[_0xf855('0x6')]=transfers[_0xf855('0x5')][_0x35cc05[_0xf855('0x6')]][_0xf855('0x7')];}utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0xa'),_0x35cc05[_0xf855('0x6')],_0x35cc05['channel'],_0x35cc05[_0xf855('0xb')],_0x35cc05[_0xf855('0xc')],_0x35cc05[_0xf855('0xd')],_0x35cc05['calleridnum'],_0x35cc05[_0xf855('0xe')],_0x35cc05[_0xf855('0xf')]));if(_0x35cc05[_0xf855('0x10')]){utils[_0xf855('0x11')](_0x35cc05[_0xf855('0x10')])[_0xf855('0x12')](function(_0x5877b){if(_0x5877b){_0x35cc05['UserId']=_0x5877b['id'];}utils[_0xf855('0x13')](_0xf855('0x14'),_0x35cc05);});}else{utils[_0xf855('0x13')](_0xf855('0x14'),_0x35cc05);}if(channels[_0x35cc05[_0xf855('0x6')]]){delete channels[_0x35cc05[_0xf855('0x6')]];}else if(_0xe6470d&&channels[_0xe6470d]){if(!transfers[_0xf855('0x5')][_0xe6470d]['recording'])delete transfers['blinds'][_0xe6470d];delete channels[_0xe6470d];}}exports[_0xf855('0x15')]=function(_0xcd9d5f){try{utils[_0xf855('0x16')](util['format'](_0xf855('0x17'),_0xcd9d5f[_0xf855('0x6')]),_0xcd9d5f);if(_0xcd9d5f['uniqueid']==_0xcd9d5f['linkedid']&&_0xcd9d5f[_0xf855('0x18')]!=_0xf855('0x19')){utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x1a'),_0xcd9d5f[_0xf855('0x6')],_0xcd9d5f[_0xf855('0x1b')],_0xcd9d5f[_0xf855('0x1c')]));channels[_0xcd9d5f[_0xf855('0x6')]]={'uniqueid':_0xcd9d5f[_0xf855('0x6')],'accountcode':_0xcd9d5f[_0xf855('0x10')],'source':_0xcd9d5f[_0xf855('0x1d')],'destination':_0xcd9d5f[_0xf855('0x1c')],'destinationcontext':_0xcd9d5f['context'],'channel':_0xcd9d5f[_0xf855('0x18')],'starttime':utils[_0xf855('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xf855('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x3b0973){utils['error'](util[_0xf855('0x9')](_0xf855('0x17'),_0xcd9d5f[_0xf855('0x6')]),_0x3b0973);}};exports['newstate']=function(_0x100d1e){try{utils[_0xf855('0x16')](util['format'](_0xf855('0x1f'),_0x100d1e[_0xf855('0x6')]),_0x100d1e);if(!_[_0xf855('0x20')](channels[_0x100d1e[_0xf855('0x6')]])&&_0x100d1e[_0xf855('0x21')]==0x6){utils['info'](util['format'](_0xf855('0x22'),_0x100d1e[_0xf855('0x6')],_0x100d1e['context'],_0x100d1e[_0xf855('0x18')]));if(_[_0xf855('0x20')](channels[_0x100d1e[_0xf855('0x6')]][_0xf855('0x23')])){channels[_0x100d1e[_0xf855('0x6')]][_0xf855('0x23')]=utils[_0xf855('0x1e')]();}}else if(!_[_0xf855('0x20')](channels[_0x100d1e[_0xf855('0x24')]])&&_0x100d1e[_0xf855('0x21')]==0x6&&_0x100d1e[_0xf855('0x1b')]!='transfer'){utils[_0xf855('0x8')](util['format']('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x100d1e['uniqueid'],_0x100d1e[_0xf855('0x24')],_0x100d1e[_0xf855('0x1b')],_0x100d1e[_0xf855('0x18')]));channels[_0x100d1e[_0xf855('0x24')]]['accountcode']=_0x100d1e[_0xf855('0x10')];channels[_0x100d1e[_0xf855('0x24')]][_0xf855('0x25')]=_0x100d1e[_0xf855('0x18')];if(_['isNil'](channels[_0x100d1e[_0xf855('0x24')]][_0xf855('0x26')])){channels[_0x100d1e[_0xf855('0x24')]][_0xf855('0x26')]=utils['now']();}channels[_0x100d1e['linkedid']][_0xf855('0x27')]=dispositions[_[_0xf855('0x28')](_0x100d1e['channelstate'])]||_0xf855('0x29');}}catch(_0x5ab5d6){utils[_0xf855('0x2a')](util[_0xf855('0x9')](_0xf855('0x1f'),_0x100d1e[_0xf855('0x6')]),_0x5ab5d6);}};exports[_0xf855('0x2b')]=function(_0x3f1afe){try{if(!_[_0xf855('0x20')](channels[_0x3f1afe[_0xf855('0x6')]])){utils[_0xf855('0x16')](util[_0xf855('0x9')](_0xf855('0x2c'),_0x3f1afe[_0xf855('0x6')]),_0x3f1afe);if(_[_0xf855('0x20')](channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x2d')])){channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x2d')]=_0x3f1afe[_0xf855('0x2e')]+'\x20<'+_0x3f1afe['calleridnum']+'>';}utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x2f'),_0x3f1afe['uniqueid'],channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x2d')],_0x3f1afe[_0xf855('0x30')]));channels[_0x3f1afe['uniqueid']][_0xf855('0x31')]=utils[_0xf855('0x1e')]();channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x32')]=utils[_0xf855('0x33')](channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x31')],channels[_0x3f1afe['uniqueid']][_0xf855('0x34')]);channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x35')]=channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x26')]?utils[_0xf855('0x33')](channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x31')],channels[_0x3f1afe[_0xf855('0x6')]][_0xf855('0x26')]):0x0;writeDB(channels[_0x3f1afe['uniqueid']]);}}catch(_0x402436){utils[_0xf855('0x2a')](util[_0xf855('0x9')](_0xf855('0x2c'),_0x3f1afe[_0xf855('0x6')]),_0x402436);}};exports[_0xf855('0x36')]=function(_0x13946c){try{if(!_['isNil'](channels[_0x13946c[_0xf855('0x37')]])){utils[_0xf855('0x16')](util[_0xf855('0x9')](_0xf855('0x38'),_0x13946c[_0xf855('0x39')]),_0x13946c);if(channels[_0x13946c['localtwolinkedid']][_0xf855('0x18')]==_0x13946c['transfereechannel']){utils['info'](util[_0xf855('0x9')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x13946c[_0xf855('0x39')],_0x13946c['localtwolinkedid'],_0x13946c[_0xf855('0x3a')]));channels[_0x13946c[_0xf855('0x37')]]['destinationchannel']=_0x13946c[_0xf855('0x3a')];channels[_0x13946c[_0xf855('0x37')]][_0xf855('0x3b')]=_0xf855('0x3c');}else if(channels[_0x13946c[_0xf855('0x37')]][_0xf855('0x18')]=_0x13946c[_0xf855('0x3d')]){utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x3e'),_0x13946c[_0xf855('0x39')],_0x13946c['localtwolinkedid'],_0x13946c[_0xf855('0x3f')]));channels[_0x13946c[_0xf855('0x37')]][_0xf855('0x25')]=_0x13946c[_0xf855('0x3f')];channels[_0x13946c[_0xf855('0x37')]]['userfield']=_0xf855('0x3c');}}}catch(_0x50ae67){utils[_0xf855('0x2a')](util[_0xf855('0x9')](_0xf855('0x38'),_0x13946c[_0xf855('0x39')]),_0x50ae67);}};exports[_0xf855('0x40')]=function(_0xa5d06b){try{if(!_[_0xf855('0x20')](channels[_0xa5d06b[_0xf855('0x6')]])){utils[_0xf855('0x16')](util[_0xf855('0x9')](_0xf855('0x41'),_0xa5d06b[_0xf855('0x6')]),_0xa5d06b);channels[_0xa5d06b[_0xf855('0x6')]]['musiconholdstartAt']=utils[_0xf855('0x1e')]();utils[_0xf855('0x8')](util['format'](_0xf855('0x42'),_0xa5d06b['uniqueid'],channels[_0xa5d06b[_0xf855('0x6')]]['musiconholdstartAt']));}}catch(_0x342377){utils[_0xf855('0x2a')](util[_0xf855('0x9')]('[%s][calls][musiconholdstart]',_0xa5d06b[_0xf855('0x6')]),_0x342377);}};exports['musiconholdstop']=function(_0x542a68){try{if(!_[_0xf855('0x20')](channels[_0x542a68[_0xf855('0x6')]])){utils['debug'](util[_0xf855('0x9')]('[%s][calls][musiconholdstop]',_0x542a68['uniqueid']),_0x542a68);if(!_[_0xf855('0x20')](channels[_0x542a68[_0xf855('0x6')]][_0xf855('0x43')])){channels[_0x542a68[_0xf855('0x6')]][_0xf855('0x44')]+=utils[_0xf855('0x33')](utils[_0xf855('0x1e')](),channels[_0x542a68[_0xf855('0x6')]][_0xf855('0x43')]);utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x45'),_0x542a68[_0xf855('0x6')],channels[_0x542a68['uniqueid']]['mohtime']));delete channels[_0x542a68[_0xf855('0x6')]][_0xf855('0x43')];}}}catch(_0x375c3f){utils[_0xf855('0x2a')](util[_0xf855('0x9')]('[%s][calls][musiconholdstop]',_0x542a68[_0xf855('0x6')]),_0x375c3f);}};exports[_0xf855('0x46')]=function(_0x5cf401){try{if(!_[_0xf855('0x20')](channels[_0x5cf401[_0xf855('0x6')]])){utils[_0xf855('0x16')](util[_0xf855('0x9')]('[%s][calls][varset]',_0x5cf401[_0xf855('0x6')]),_0x5cf401);if(!_[_0xf855('0x20')](_0x5cf401['variable'][_0xf855('0x47')])){utils[_0xf855('0x8')](util[_0xf855('0x9')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x5cf401[_0xf855('0x6')],_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401[_0xf855('0x6')]][_0xf855('0x49')]=_0x5cf401['value'];}if(!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')][_0xf855('0x4b')])){utils['info'](util[_0xf855('0x9')](_0xf855('0x4c'),_0x5cf401['uniqueid'],_0x5cf401['value']));channels[_0x5cf401['uniqueid']][_0xf855('0x4d')]=_0x5cf401[_0xf855('0x48')];channels[_0x5cf401[_0xf855('0x6')]][_0xf855('0x2d')]='\x22'+_0x5cf401[_0xf855('0x48')]+'\x22\x20<'+_0x5cf401[_0xf855('0x48')]+'>';}if(!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')][_0xf855('0x4e')])||!_['isNil'](_0x5cf401[_0xf855('0x4a')][_0xf855('0x4f')])){utils[_0xf855('0x8')](util[_0xf855('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5cf401[_0xf855('0x6')],!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')][_0xf855('0x4e')])?'xmd-callerid-preview':'xmd-callerid',_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401[_0xf855('0x6')]][_0xf855('0x2d')]=_0x5cf401[_0xf855('0x48')];}if(!_[_0xf855('0x20')](_0x5cf401['variable']['xmd-queue'])||!_[_0xf855('0x20')](_0x5cf401['variable'][_0xf855('0x50')])){utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x51'),_0x5cf401[_0xf855('0x6')],!_['isNil'](_0x5cf401[_0xf855('0x4a')]['xmd-queue'])?_0xf855('0x52'):_0xf855('0x50'),_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401[_0xf855('0x6')]][_0xf855('0x53')]=_0xf855('0x54');channels[_0x5cf401[_0xf855('0x6')]]['lastdata']=_0x5cf401[_0xf855('0x48')];channels[_0x5cf401['uniqueid']][_0xf855('0xb')]=!![];}if(!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')][_0xf855('0x55')])){utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x56'),_0x5cf401[_0xf855('0x6')],_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401['uniqueid']]['ContactId']=_0x5cf401['value'];}if(!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')]['xmd-cdrtype'])){utils[_0xf855('0x8')](util[_0xf855('0x9')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x5cf401[_0xf855('0x6')],_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401[_0xf855('0x6')]][_0xf855('0x57')]=_0x5cf401[_0xf855('0x48')];}if(!_['isNil'](_0x5cf401[_0xf855('0x4a')]['outboundrouteid'])){utils[_0xf855('0x8')](util[_0xf855('0x9')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x5cf401[_0xf855('0x6')],_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401['uniqueid']][_0xf855('0x58')]=_0x5cf401[_0xf855('0x48')];}if(!_[_0xf855('0x20')](_0x5cf401[_0xf855('0x4a')][_0xf855('0x59')])){utils[_0xf855('0x8')](util['format'](_0xf855('0x5a'),_0x5cf401[_0xf855('0x6')],_0x5cf401[_0xf855('0x48')]));channels[_0x5cf401[_0xf855('0x6')]]['sipcallid']=_0x5cf401[_0xf855('0x48')];}}}catch(_0x2c99a8){utils[_0xf855('0x2a')](util[_0xf855('0x9')](_0xf855('0x5b'),_0x5cf401['uniqueid']),_0x2c99a8);}};exports['newexten']=function(_0x1492d6){try{if(!_[_0xf855('0x20')](channels[_0x1492d6[_0xf855('0x6')]])){utils['debug'](util['format']('[%s][calls][newexten]',_0x1492d6[_0xf855('0x6')]),_0x1492d6);utils[_0xf855('0x8')](util[_0xf855('0x9')](_0xf855('0x5c'),_0x1492d6[_0xf855('0x6')],_0x1492d6[_0xf855('0x5d')],_0x1492d6[_0xf855('0x5e')]));if(_0x1492d6['application'][_0xf855('0x5f')]()==_0xf855('0x60')&&_[_0xf855('0x61')](_0x1492d6[_0xf855('0x5e')][_0xf855('0x5f')](),_0xf855('0x62'))){var _0x39b928=_0x1492d6['appdata'][_0xf855('0x63')]('=');var _0x24a6b6=_0x39b928[0x0]['substring'](_0x39b928[0x0][_0xf855('0x64')]('(')+0x1,_0x39b928[0x0][_0xf855('0x64')](')'));var _0xd18241=_0x39b928[0x1];channels[_0x1492d6[_0xf855('0x6')]][_0x24a6b6]=_0xd18241;}if(!_[_0xf855('0x65')]([_0xf855('0x2b'),_0xf855('0x66'),'execif',_0xf855('0x60'),_0xf855('0x67')],_0x1492d6[_0xf855('0x5d')][_0xf855('0x5f')]())){channels[_0x1492d6[_0xf855('0x6')]][_0xf855('0x53')]=_0x1492d6[_0xf855('0x5d')];channels[_0x1492d6[_0xf855('0x6')]][_0xf855('0x68')]=_0x1492d6[_0xf855('0x5e')];}}}catch(_0x311986){utils[_0xf855('0x2a')](util[_0xf855('0x9')]('[%s][calls][newexten]',_0x1492d6[_0xf855('0x6')]),_0x311986);}};
\ No newline at end of file
index ec5de16..f987676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x001b=['managerevent','./utils','connect','[core]\x20connected','shutdown','fullybooted','info','[core]\x20fullybooted','close','[core]\x20close'];(function(_0x2525ca,_0x1edd84){var _0x54367d=function(_0x1dffcd){while(--_0x1dffcd){_0x2525ca['push'](_0x2525ca['shift']());}};_0x54367d(++_0x1edd84);}(_0x001b,0x79));var _0xb001=function(_0x15feea,_0x1f1889){_0x15feea=_0x15feea-0x0;var _0x3eb1a8=_0x001b[_0x15feea];return _0x3eb1a8;};'use strict';var utils=require(_0xb001('0x0'));exports[_0xb001('0x1')]=function(){utils['info'](_0xb001('0x2'));};exports[_0xb001('0x3')]=function(){utils['info']('[core]\x20shutdown');};exports[_0xb001('0x4')]=function(){utils[_0xb001('0x5')](_0xb001('0x6'));};exports['error']=function(_0x8f65fc){utils['error']('[core]\x20error',_0x8f65fc);};exports[_0xb001('0x7')]=function(){utils[_0xb001('0x5')](_0xb001('0x8'));};exports[_0xb001('0x9')]=function(_0x399600){};
\ No newline at end of file
+var _0x5068=['info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','connect'];(function(_0x54c402,_0x476865){var _0x247be1=function(_0x3a3f6a){while(--_0x3a3f6a){_0x54c402['push'](_0x54c402['shift']());}};_0x247be1(++_0x476865);}(_0x5068,0x154));var _0x8506=function(_0x4efbaa,_0x3ab1d6){_0x4efbaa=_0x4efbaa-0x0;var _0x501eff=_0x5068[_0x4efbaa];return _0x501eff;};'use strict';var utils=require('./utils');exports[_0x8506('0x0')]=function(){utils[_0x8506('0x1')](_0x8506('0x2'));};exports[_0x8506('0x3')]=function(){utils[_0x8506('0x1')]('[core]\x20shutdown');};exports[_0x8506('0x4')]=function(){utils[_0x8506('0x1')](_0x8506('0x5'));};exports[_0x8506('0x6')]=function(_0x249d05){utils[_0x8506('0x6')](_0x8506('0x7'),_0x249d05);};exports[_0x8506('0x8')]=function(){utils[_0x8506('0x1')](_0x8506('0x9'));};exports[_0x8506('0xa')]=function(_0x175f35){};
\ No newline at end of file
index a7ebbdb..8a295a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc064=['lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','format','application','appdata','set','startsWith','split','[%s][dials][newexten]','varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','dialbegin','[%s][dials][dialbegin]','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','[%s][dials][dialend]','ANSWER','assign','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','holdtime','billableseconds','endtime'];(function(_0x5b0c6b,_0x47fb73){var _0x1d55a6=function(_0x4ac017){while(--_0x4ac017){_0x5b0c6b['push'](_0x5b0c6b['shift']());}};_0x1d55a6(++_0x47fb73);}(_0xc064,0x1d4));var _0x4c06=function(_0x39ef76,_0x5d845b){_0x39ef76=_0x39ef76-0x0;var _0x4ce0f2=_0xc064[_0x39ef76];return _0x4ce0f2;};'use strict';var _=require(_0x4c06('0x0'));var util=require(_0x4c06('0x1'));var utils=require(_0x4c06('0x2'));var dials={};function writeDB(_0xe18780){utils[_0x4c06('0x3')](util['format'](_0x4c06('0x4'),_0xe18780[_0x4c06('0x5')],_0xe18780['channel'],_0xe18780['dialstring'],_0xe18780[_0x4c06('0x6')],_0xe18780[_0x4c06('0x7')],_0xe18780[_0x4c06('0x8')]));utils[_0x4c06('0x9')](_0x4c06('0xa'),_0xe18780);delete dials[_0xe18780[_0x4c06('0x5')]];}exports[_0x4c06('0xb')]=function(_0x4a5ea0){try{utils[_0x4c06('0xc')](util[_0x4c06('0xd')]('[%s][dials][newexten]',_0x4a5ea0[_0x4c06('0x5')]),_0x4a5ea0);utils['info'](util[_0x4c06('0xd')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x4a5ea0['uniqueid'],_0x4a5ea0[_0x4c06('0xe')],_0x4a5ea0[_0x4c06('0xf')]));if(_0x4a5ea0[_0x4c06('0xe')]['toLowerCase']()==_0x4c06('0x10')&&_[_0x4c06('0x11')](_0x4a5ea0[_0x4c06('0xf')]['toLowerCase'](),'cdr(routeid)')){var _0x1cfa2d=_0x4a5ea0[_0x4c06('0xf')][_0x4c06('0x12')]('=');dials[_0x4a5ea0[_0x4c06('0x5')]]={'routeId':_0x1cfa2d[0x1]};}}catch(_0x2b495f){utils['error'](util[_0x4c06('0xd')](_0x4c06('0x13'),_0x4a5ea0[_0x4c06('0x5')]),_0x2b495f);}};exports[_0x4c06('0x14')]=function(_0x3b1810){try{utils[_0x4c06('0xc')](util[_0x4c06('0xd')](_0x4c06('0x15'),_0x3b1810['uniqueid']),_0x3b1810);if(!_[_0x4c06('0x16')](_0x3b1810['variable'][_0x4c06('0x17')])){utils[_0x4c06('0x3')](util[_0x4c06('0xd')](_0x4c06('0x18'),_0x3b1810[_0x4c06('0x5')],_0x3b1810['value']));dials[_0x3b1810[_0x4c06('0x5')]]={'routeId':_0x3b1810[_0x4c06('0x19')]};}}catch(_0x1edcc9){utils[_0x4c06('0x1a')](util[_0x4c06('0xd')]('[%s][dials][varset]',_0x3b1810[_0x4c06('0x5')]),_0x1edcc9);}};exports[_0x4c06('0x1b')]=function(_0x3ecc76){try{if(!_[_0x4c06('0x16')](dials[_0x3ecc76[_0x4c06('0x5')]])){utils[_0x4c06('0xc')](util[_0x4c06('0xd')](_0x4c06('0x1c'),_0x3ecc76[_0x4c06('0x5')]),_0x3ecc76);dials[_0x3ecc76[_0x4c06('0x5')]]=_['assign'](dials[_0x3ecc76[_0x4c06('0x5')]],_0x3ecc76);dials[_0x3ecc76[_0x4c06('0x5')]]['starttime']=utils[_0x4c06('0x1d')]();dials[_0x3ecc76[_0x4c06('0x5')]]['lastevent']=_0x4c06('0x1e');utils[_0x4c06('0x3')](util[_0x4c06('0xd')](_0x4c06('0x1f'),_0x3ecc76['uniqueid'],dials[_0x3ecc76[_0x4c06('0x5')]][_0x4c06('0x20')]));}}catch(_0x45c597){utils[_0x4c06('0x1a')](util[_0x4c06('0xd')](_0x4c06('0x1c'),_0x3ecc76[_0x4c06('0x5')]),_0x45c597);}};exports[_0x4c06('0x21')]=function(_0xef9a50){try{if(!_[_0x4c06('0x16')](dials[_0xef9a50[_0x4c06('0x5')]])){utils[_0x4c06('0xc')](util[_0x4c06('0xd')](_0x4c06('0x22'),_0xef9a50[_0x4c06('0x5')]),_0xef9a50);dials[_0xef9a50[_0x4c06('0x5')]][_0x4c06('0x8')]=_0xef9a50['dialstatus'];if(_0xef9a50[_0x4c06('0x8')]==_0x4c06('0x23')){dials[_0xef9a50[_0x4c06('0x5')]]=_[_0x4c06('0x24')](dials[_0xef9a50['uniqueid']],_0xef9a50);dials[_0xef9a50[_0x4c06('0x5')]]['answertime']=utils['now']();dials[_0xef9a50['uniqueid']][_0x4c06('0x25')]='connect';utils[_0x4c06('0x3')](util[_0x4c06('0xd')](_0x4c06('0x26'),_0xef9a50[_0x4c06('0x5')],_0xef9a50[_0x4c06('0x8')],dials[_0xef9a50[_0x4c06('0x5')]][_0x4c06('0x27')]));}else{utils[_0x4c06('0x3')](util['format'](_0x4c06('0x28'),_0xef9a50[_0x4c06('0x5')],_0xef9a50[_0x4c06('0x8')]));}}}catch(_0x5f2fb5){utils[_0x4c06('0x1a')](util[_0x4c06('0xd')]('[%s][dials][dialend]',_0xef9a50[_0x4c06('0x5')]),_0x5f2fb5);}};exports[_0x4c06('0x29')]=function(_0x3bd4aa){try{if(!_[_0x4c06('0x16')](dials[_0x3bd4aa[_0x4c06('0x5')]])){utils['debug'](util['format'](_0x4c06('0x2a'),_0x3bd4aa['uniqueid']),_0x3bd4aa);utils['info'](util['format'](_0x4c06('0x2b'),_0x3bd4aa['uniqueid'],_0x3bd4aa['calleridnum'],_0x3bd4aa[_0x4c06('0x2c')],_0x3bd4aa[_0x4c06('0x2d')]));dials[_0x3bd4aa[_0x4c06('0x5')]]=_['assign'](dials[_0x3bd4aa['uniqueid']],{'endtime':utils[_0x4c06('0x1d')](),'lastevent':_0x4c06('0x2e')});dials[_0x3bd4aa['uniqueid']][_0x4c06('0x2f')]=utils[_0x4c06('0x30')](dials[_0x3bd4aa[_0x4c06('0x5')]]['endtime'],dials[_0x3bd4aa['uniqueid']][_0x4c06('0x20')]);dials[_0x3bd4aa[_0x4c06('0x5')]][_0x4c06('0x31')]=utils[_0x4c06('0x30')](dials[_0x3bd4aa[_0x4c06('0x5')]][_0x4c06('0x27')]||dials[_0x3bd4aa[_0x4c06('0x5')]]['endtime'],dials[_0x3bd4aa['uniqueid']][_0x4c06('0x20')]);dials[_0x3bd4aa[_0x4c06('0x5')]][_0x4c06('0x32')]=dials[_0x3bd4aa['uniqueid']]['answertime']?utils[_0x4c06('0x30')](dials[_0x3bd4aa[_0x4c06('0x5')]][_0x4c06('0x33')],dials[_0x3bd4aa[_0x4c06('0x5')]]['answertime']):0x0;writeDB(dials[_0x3bd4aa[_0x4c06('0x5')]]);}}catch(_0x2d8201){utils[_0x4c06('0x1a')](util['format']('[%s][dials][hangup]',_0x3bd4aa[_0x4c06('0x5')]),_0x2d8201);}};
\ No newline at end of file
+var _0xc6aa=['error','dialbegin','isNil','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][hangup]','calleridname','duration','endtime','holdtime','billableseconds','diffTime','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','calleridnum','connectedlinenum','dialstatus','request','uniqueid','newexten','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','cdr(routeid)','split','[%s][dials][varset]','outboundrouteid','value'];(function(_0x1fe9ee,_0x4c8887){var _0x1bbbfa=function(_0x3dd031){while(--_0x3dd031){_0x1fe9ee['push'](_0x1fe9ee['shift']());}};_0x1bbbfa(++_0x4c8887);}(_0xc6aa,0x15f));var _0xac6a=function(_0x3173fb,_0x2c5982){_0x3173fb=_0x3173fb-0x0;var _0x4e9346=_0xc6aa[_0x3173fb];return _0x4e9346;};'use strict';var _=require(_0xac6a('0x0'));var util=require(_0xac6a('0x1'));var utils=require(_0xac6a('0x2'));var dials={};function writeDB(_0x13b633){utils['info'](util[_0xac6a('0x3')](_0xac6a('0x4'),_0x13b633['uniqueid'],_0x13b633[_0xac6a('0x5')],_0x13b633['dialstring'],_0x13b633[_0xac6a('0x6')],_0x13b633[_0xac6a('0x7')],_0x13b633[_0xac6a('0x8')]));utils[_0xac6a('0x9')]('CreateVoiceDialReport',_0x13b633);delete dials[_0x13b633[_0xac6a('0xa')]];}exports[_0xac6a('0xb')]=function(_0x545281){try{utils[_0xac6a('0xc')](util[_0xac6a('0x3')](_0xac6a('0xd'),_0x545281['uniqueid']),_0x545281);utils[_0xac6a('0xe')](util[_0xac6a('0x3')](_0xac6a('0xf'),_0x545281['uniqueid'],_0x545281[_0xac6a('0x10')],_0x545281[_0xac6a('0x11')]));if(_0x545281[_0xac6a('0x10')][_0xac6a('0x12')]()=='set'&&_[_0xac6a('0x13')](_0x545281[_0xac6a('0x11')][_0xac6a('0x12')](),_0xac6a('0x14'))){var _0x43112b=_0x545281[_0xac6a('0x11')][_0xac6a('0x15')]('=');dials[_0x545281[_0xac6a('0xa')]]={'routeId':_0x43112b[0x1]};}}catch(_0x2815b4){utils['error'](util[_0xac6a('0x3')](_0xac6a('0xd'),_0x545281[_0xac6a('0xa')]),_0x2815b4);}};exports['varset']=function(_0x216cd5){try{utils[_0xac6a('0xc')](util['format'](_0xac6a('0x16'),_0x216cd5[_0xac6a('0xa')]),_0x216cd5);if(!_['isNil'](_0x216cd5['variable'][_0xac6a('0x17')])){utils[_0xac6a('0xe')](util[_0xac6a('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x216cd5[_0xac6a('0xa')],_0x216cd5[_0xac6a('0x18')]));dials[_0x216cd5['uniqueid']]={'routeId':_0x216cd5[_0xac6a('0x18')]};}}catch(_0x2ea845){utils[_0xac6a('0x19')](util[_0xac6a('0x3')]('[%s][dials][varset]',_0x216cd5[_0xac6a('0xa')]),_0x2ea845);}};exports[_0xac6a('0x1a')]=function(_0x3309a2){try{if(!_[_0xac6a('0x1b')](dials[_0x3309a2[_0xac6a('0xa')]])){utils[_0xac6a('0xc')](util[_0xac6a('0x3')]('[%s][dials][dialbegin]',_0x3309a2['uniqueid']),_0x3309a2);dials[_0x3309a2[_0xac6a('0xa')]]=_[_0xac6a('0x1c')](dials[_0x3309a2[_0xac6a('0xa')]],_0x3309a2);dials[_0x3309a2[_0xac6a('0xa')]][_0xac6a('0x1d')]=utils[_0xac6a('0x1e')]();dials[_0x3309a2[_0xac6a('0xa')]][_0xac6a('0x1f')]=_0xac6a('0x20');utils[_0xac6a('0xe')](util['format'](_0xac6a('0x21'),_0x3309a2[_0xac6a('0xa')],dials[_0x3309a2[_0xac6a('0xa')]][_0xac6a('0x1d')]));}}catch(_0x427435){utils[_0xac6a('0x19')](util[_0xac6a('0x3')](_0xac6a('0x22'),_0x3309a2[_0xac6a('0xa')]),_0x427435);}};exports[_0xac6a('0x23')]=function(_0x1be4ec){try{if(!_[_0xac6a('0x1b')](dials[_0x1be4ec['uniqueid']])){utils[_0xac6a('0xc')](util[_0xac6a('0x3')](_0xac6a('0x24'),_0x1be4ec[_0xac6a('0xa')]),_0x1be4ec);dials[_0x1be4ec[_0xac6a('0xa')]][_0xac6a('0x8')]=_0x1be4ec[_0xac6a('0x8')];if(_0x1be4ec['dialstatus']==_0xac6a('0x25')){dials[_0x1be4ec[_0xac6a('0xa')]]=_['assign'](dials[_0x1be4ec['uniqueid']],_0x1be4ec);dials[_0x1be4ec[_0xac6a('0xa')]][_0xac6a('0x26')]=utils['now']();dials[_0x1be4ec[_0xac6a('0xa')]][_0xac6a('0x1f')]='connect';utils[_0xac6a('0xe')](util[_0xac6a('0x3')](_0xac6a('0x27'),_0x1be4ec['uniqueid'],_0x1be4ec[_0xac6a('0x8')],dials[_0x1be4ec[_0xac6a('0xa')]]['answertime']));}else{utils[_0xac6a('0xe')](util['format']('[%s][dials][dialend]\x20dialstatus:%s',_0x1be4ec[_0xac6a('0xa')],_0x1be4ec[_0xac6a('0x8')]));}}}catch(_0x501d9e){utils['error'](util['format'](_0xac6a('0x24'),_0x1be4ec[_0xac6a('0xa')]),_0x501d9e);}};exports['hangup']=function(_0x452ca2){try{if(!_['isNil'](dials[_0x452ca2[_0xac6a('0xa')]])){utils[_0xac6a('0xc')](util[_0xac6a('0x3')](_0xac6a('0x28'),_0x452ca2[_0xac6a('0xa')]),_0x452ca2);utils[_0xac6a('0xe')](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x452ca2[_0xac6a('0xa')],_0x452ca2[_0xac6a('0x6')],_0x452ca2[_0xac6a('0x29')],_0x452ca2['cause-txt']));dials[_0x452ca2[_0xac6a('0xa')]]=_[_0xac6a('0x1c')](dials[_0x452ca2[_0xac6a('0xa')]],{'endtime':utils['now'](),'lastevent':'complete'});dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x2a')]=utils['diffTime'](dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x2b')],dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x1d')]);dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x2c')]=utils['diffTime'](dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x26')]||dials[_0x452ca2['uniqueid']][_0xac6a('0x2b')],dials[_0x452ca2['uniqueid']][_0xac6a('0x1d')]);dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x2d')]=dials[_0x452ca2[_0xac6a('0xa')]][_0xac6a('0x26')]?utils[_0xac6a('0x2e')](dials[_0x452ca2['uniqueid']][_0xac6a('0x2b')],dials[_0x452ca2['uniqueid']]['answertime']):0x0;writeDB(dials[_0x452ca2[_0xac6a('0xa')]]);}}catch(_0x3b1c6e){utils[_0xac6a('0x19')](util[_0xac6a('0x3')](_0xac6a('0x28'),_0x452ca2[_0xac6a('0xa')]),_0x3b1c6e);}};
\ No newline at end of file
index 3b0c3fe..2a52caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf308=['format','[%s][index][devicestatechange]','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','[%s][index][musiconholdstart]','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]','varset','[%s][index][varset]','[%s][index][newexten]','newexten','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','xdr','disabled','env','production','local','asterisk','port','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','device'];(function(_0x4f30bd,_0x2403c0){var _0x3a2b60=function(_0x5202ff){while(--_0x5202ff){_0x4f30bd['push'](_0x4f30bd['shift']());}};_0x3a2b60(++_0x2403c0);}(_0xf308,0x1df));var _0x8f30=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf308[_0x321bb2];return _0x9c12ed;};var AsteriskManager=require(_0x8f30('0x0'));var config=require(_0x8f30('0x1'));var utils=require(_0x8f30('0x2'));var util=require('util');var isXDREnabled=config[_0x8f30('0x3')]&&config[_0x8f30('0x3')][_0x8f30('0x4')]?!config['xdr'][_0x8f30('0x4')]:!![];var isProduction=config[_0x8f30('0x5')]===_0x8f30('0x6')||![];var isLocalAsterisk=config[_0x8f30('0x3')]&&config[_0x8f30('0x3')][_0x8f30('0x7')]===!![]||![];var ami=new AsteriskManager(config[_0x8f30('0x8')][_0x8f30('0x9')],config['asterisk']['ip'],config[_0x8f30('0x8')][_0x8f30('0xa')],config['asterisk'][_0x8f30('0xb')],!![]);ami[_0x8f30('0xc')]();if(!isXDREnabled){utils[_0x8f30('0xd')](_0x8f30('0xe'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x8f30('0xd')](_0x8f30('0xf'));}else{var agents=require(_0x8f30('0x10'));var calls=require(_0x8f30('0x11'));var queues=require(_0x8f30('0x12'));var recordings=require(_0x8f30('0x13'));var members=require(_0x8f30('0x14'));var dials=require(_0x8f30('0x15'));var transfers=require(_0x8f30('0x16'));var core=require(_0x8f30('0x17'));ami['on']('connect',core[_0x8f30('0x18')]);ami['on']('shutdown',core[_0x8f30('0x19')]);ami['on'](_0x8f30('0x1a'),core[_0x8f30('0x1a')]);ami['on'](_0x8f30('0x1b'),core[_0x8f30('0x1b')]);ami['on'](_0x8f30('0x1c'),core[_0x8f30('0x1c')]);ami['on'](_0x8f30('0x1d'),core[_0x8f30('0x1d')]);ami['on']('devicestatechange',function(_0x5c7d1e){try{utils[_0x8f30('0x1e')](util['format']('[%s][index][devicestatechange]',_0x5c7d1e[_0x8f30('0x1f')]),_0x5c7d1e);members['devicestatechange'](_0x5c7d1e);}catch(_0x4a1e19){utils['error'](util[_0x8f30('0x20')](_0x8f30('0x21'),_0x5c7d1e[_0x8f30('0x1f')]),_0x4a1e19);}});ami['on']('agentcalled',function(_0xbc079b){try{utils['debug'](util[_0x8f30('0x20')](_0x8f30('0x22'),_0xbc079b[_0x8f30('0x23')]),_0xbc079b);agents[_0x8f30('0x24')](_0xbc079b);}catch(_0x13f38d){utils['error'](util[_0x8f30('0x20')](_0x8f30('0x22'),_0xbc079b[_0x8f30('0x23')]),_0x13f38d);}});ami['on'](_0x8f30('0x25'),function(_0x4c19d6){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')]('[%s][index][agentringnoanswer]',_0x4c19d6[_0x8f30('0x23')]),_0x4c19d6);agents['agentringnoanswer'](_0x4c19d6);}catch(_0x255d28){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x26'),_0x4c19d6[_0x8f30('0x23')]),_0x255d28);}});ami['on'](_0x8f30('0x27'),function(_0x1bbf44){try{utils[_0x8f30('0x1e')](util['format'](_0x8f30('0x28'),_0x1bbf44[_0x8f30('0x23')]),_0x1bbf44);agents['agentconnect'](_0x1bbf44);queues[_0x8f30('0x27')](_0x1bbf44);}catch(_0x37e74d){utils['error'](util[_0x8f30('0x20')](_0x8f30('0x28'),_0x1bbf44[_0x8f30('0x23')]),_0x37e74d);}});ami['on'](_0x8f30('0x29'),function(_0x5a4611){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')]('[%s][index][agentcomplete]',_0x5a4611[_0x8f30('0x23')]),_0x5a4611);agents[_0x8f30('0x29')](_0x5a4611);queues[_0x8f30('0x29')](_0x5a4611);members[_0x8f30('0x29')](_0x5a4611);}catch(_0x37f42e){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')]('[%s][index][agentcomplete]',_0x5a4611[_0x8f30('0x23')]),_0x37f42e);}});ami['on'](_0x8f30('0x2a'),function(_0x5f15ba){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')]('[%s][index][queuecallerabandon]',_0x5f15ba[_0x8f30('0x23')]),_0x5f15ba);agents[_0x8f30('0x2a')](_0x5f15ba);queues[_0x8f30('0x2a')](_0x5f15ba);}catch(_0x421ff6){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x2b'),_0x5f15ba['uniqueid']),_0x421ff6);}});ami['on'](_0x8f30('0x2c'),function(_0x5ac39a){try{utils[_0x8f30('0x1e')](util['format'](_0x8f30('0x2d'),_0x5ac39a['uniqueid']),_0x5ac39a);queues[_0x8f30('0x2c')](_0x5ac39a);recordings['queuecallerjoin'](_0x5ac39a);}catch(_0x339394){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x2d'),_0x5ac39a[_0x8f30('0x23')]),_0x339394);}});ami['on'](_0x8f30('0x2e'),function(_0xfb1d68){try{utils['debug'](util['format'](_0x8f30('0x2f'),_0xfb1d68['uniqueid']),_0xfb1d68);queues[_0x8f30('0x2e')](_0xfb1d68);}catch(_0x3f98fd){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x2f'),_0xfb1d68[_0x8f30('0x23')]),_0x3f98fd);}});ami['on']('musiconholdstart',function(_0x5834dc){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x30'),_0x5834dc[_0x8f30('0x23')]),_0x5834dc);queues[_0x8f30('0x31')](_0x5834dc);calls['musiconholdstart'](_0x5834dc);}catch(_0x14a1c3){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x30'),_0x5834dc[_0x8f30('0x23')]),_0x14a1c3);}});ami['on'](_0x8f30('0x32'),function(_0x3f352b){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x33'),_0x3f352b[_0x8f30('0x23')]),_0x3f352b);queues[_0x8f30('0x32')](_0x3f352b);calls[_0x8f30('0x32')](_0x3f352b);}catch(_0x5279a2){utils[_0x8f30('0x1b')](util['format'](_0x8f30('0x33'),_0x3f352b[_0x8f30('0x23')]),_0x5279a2);}});ami['on'](_0x8f30('0x34'),function(_0x234f4c){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x35'),_0x234f4c[_0x8f30('0x23')]),_0x234f4c);calls['newstate'](_0x234f4c);recordings['newstate'](_0x234f4c);}catch(_0x51748a){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x35'),_0x234f4c['uniqueid']),_0x51748a);}});ami['on'](_0x8f30('0x36'),function(_0x2e5ce7){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x37'),_0x2e5ce7[_0x8f30('0x23')]),_0x2e5ce7);calls[_0x8f30('0x36')](_0x2e5ce7);recordings[_0x8f30('0x36')](_0x2e5ce7);dials[_0x8f30('0x36')](_0x2e5ce7);agents[_0x8f30('0x36')](_0x2e5ce7);queues[_0x8f30('0x36')](_0x2e5ce7);}catch(_0x490cb3){utils['error'](util[_0x8f30('0x20')](_0x8f30('0x37'),_0x2e5ce7[_0x8f30('0x23')]),_0x490cb3);}});ami['on'](_0x8f30('0x38'),function(_0x24d145){try{utils['debug'](util[_0x8f30('0x20')](_0x8f30('0x39'),_0x24d145[_0x8f30('0x23')]),_0x24d145);members[_0x8f30('0x38')](_0x24d145);}catch(_0x52804d){utils[_0x8f30('0x1b')](util['format'](_0x8f30('0x39'),_0x24d145[_0x8f30('0x23')]),_0x52804d);}});ami['on']('blindtransfer',function(_0x330b11){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x3a'),_0x330b11[_0x8f30('0x23')]),_0x330b11);queues[_0x8f30('0x3b')](_0x330b11);agents[_0x8f30('0x3b')](_0x330b11);transfers['blindtransfer'](_0x330b11);recordings[_0x8f30('0x3b')](_0x330b11);}catch(_0x13e24b){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')]('[%s][index][blindtransfer]',_0x330b11['uniqueid']),_0x13e24b);}});ami['on'](_0x8f30('0x3c'),function(_0xff5390){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x3d'),_0xff5390['origtransfereruniqueid']),_0xff5390);queues[_0x8f30('0x3c')](_0xff5390);transfers[_0x8f30('0x3c')](_0xff5390);agents[_0x8f30('0x3c')](_0xff5390);calls[_0x8f30('0x3c')](_0xff5390);}catch(_0x58c299){utils[_0x8f30('0x1b')](util['format'](_0x8f30('0x3d'),_0xff5390['origtransfereruniqueid']),_0x58c299);}});ami['on'](_0x8f30('0x3e'),function(_0x43c781){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x3f'),_0x43c781[_0x8f30('0x23')]),_0x43c781);queues['varset'](_0x43c781);recordings[_0x8f30('0x3e')](_0x43c781);calls[_0x8f30('0x3e')](_0x43c781);dials[_0x8f30('0x3e')](_0x43c781);}catch(_0x57a413){utils['error'](util[_0x8f30('0x20')](_0x8f30('0x3f'),_0x43c781['uniqueid']),_0x57a413);}});ami['on']('newexten',function(_0x4e3b1e){try{utils['debug'](util[_0x8f30('0x20')](_0x8f30('0x40'),_0x4e3b1e['uniqueid']),_0x4e3b1e);calls[_0x8f30('0x41')](_0x4e3b1e);recordings[_0x8f30('0x41')](_0x4e3b1e);dials[_0x8f30('0x41')](_0x4e3b1e);}catch(_0x7807a0){utils[_0x8f30('0x1b')](util['format']('[%s][index][newexten]',_0x4e3b1e['uniqueid']),_0x7807a0);}});ami['on'](_0x8f30('0x42'),function(_0x365222){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x43'),_0x365222['uniqueid']),_0x365222);calls[_0x8f30('0x42')](_0x365222);recordings['newchannel'](_0x365222);}catch(_0x5dd106){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x43'),_0x365222[_0x8f30('0x23')]),_0x5dd106);}});ami['on'](_0x8f30('0x44'),function(_0x2ff851){try{utils[_0x8f30('0x1e')](util[_0x8f30('0x20')](_0x8f30('0x45'),_0x2ff851[_0x8f30('0x23')]),_0x2ff851);dials['dialbegin'](_0x2ff851);}catch(_0x20f3ae){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x46'),_0x2ff851[_0x8f30('0x23')]),_0x20f3ae);}});ami['on'](_0x8f30('0x47'),function(_0x1a1a1b){try{utils[_0x8f30('0x1e')](util['format'](_0x8f30('0x48'),_0x1a1a1b[_0x8f30('0x23')]),_0x1a1a1b);dials[_0x8f30('0x47')](_0x1a1a1b);}catch(_0x2a744e){utils[_0x8f30('0x1b')](util[_0x8f30('0x20')](_0x8f30('0x48'),_0x1a1a1b[_0x8f30('0x23')]),_0x2a744e);}});}
\ No newline at end of file
+var _0x3efa=['uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','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','./utils','util','xdr','disabled','env','production','local','asterisk','port','username','password','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','device','format','agentcalled','[%s][index][agentcalled]'];(function(_0x268dbd,_0x484154){var _0x41468b=function(_0x53b308){while(--_0x53b308){_0x268dbd['push'](_0x268dbd['shift']());}};_0x41468b(++_0x484154);}(_0x3efa,0xb3));var _0xa3ef=function(_0x20275f,_0x4528c5){_0x20275f=_0x20275f-0x0;var _0x5a5457=_0x3efa[_0x20275f];return _0x5a5457;};var AsteriskManager=require(_0xa3ef('0x0'));var config=require(_0xa3ef('0x1'));var utils=require(_0xa3ef('0x2'));var util=require(_0xa3ef('0x3'));var isXDREnabled=config[_0xa3ef('0x4')]&&config[_0xa3ef('0x4')]['disabled']?!config[_0xa3ef('0x4')][_0xa3ef('0x5')]:!![];var isProduction=config[_0xa3ef('0x6')]===_0xa3ef('0x7')||![];var isLocalAsterisk=config[_0xa3ef('0x4')]&&config[_0xa3ef('0x4')][_0xa3ef('0x8')]===!![]||![];var ami=new AsteriskManager(config[_0xa3ef('0x9')][_0xa3ef('0xa')],config[_0xa3ef('0x9')]['ip'],config[_0xa3ef('0x9')][_0xa3ef('0xb')],config[_0xa3ef('0x9')][_0xa3ef('0xc')],!![]);ami['keepConnected']();if(!isXDREnabled){utils['info'](_0xa3ef('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xa3ef('0xe')](_0xa3ef('0xf'));}else{var agents=require(_0xa3ef('0x10'));var calls=require(_0xa3ef('0x11'));var queues=require('./queues.controller');var recordings=require(_0xa3ef('0x12'));var members=require('./members.controller');var dials=require(_0xa3ef('0x13'));var transfers=require(_0xa3ef('0x14'));var core=require(_0xa3ef('0x15'));ami['on'](_0xa3ef('0x16'),core[_0xa3ef('0x16')]);ami['on'](_0xa3ef('0x17'),core[_0xa3ef('0x17')]);ami['on'](_0xa3ef('0x18'),core[_0xa3ef('0x18')]);ami['on'](_0xa3ef('0x19'),core[_0xa3ef('0x19')]);ami['on']('close',core[_0xa3ef('0x1a')]);ami['on'](_0xa3ef('0x1b'),core['managerevent']);ami['on'](_0xa3ef('0x1c'),function(_0xf6e252){try{utils[_0xa3ef('0x1d')](util['format']('[%s][index][devicestatechange]',_0xf6e252[_0xa3ef('0x1e')]),_0xf6e252);members['devicestatechange'](_0xf6e252);}catch(_0x32bbc8){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')]('[%s][index][devicestatechange]',_0xf6e252['device']),_0x32bbc8);}});ami['on'](_0xa3ef('0x20'),function(_0x4a7cde){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x21'),_0x4a7cde[_0xa3ef('0x22')]),_0x4a7cde);agents[_0xa3ef('0x20')](_0x4a7cde);}catch(_0xcbf733){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')](_0xa3ef('0x21'),_0x4a7cde['uniqueid']),_0xcbf733);}});ami['on'](_0xa3ef('0x23'),function(_0x5f25b4){try{utils['debug'](util[_0xa3ef('0x1f')](_0xa3ef('0x24'),_0x5f25b4[_0xa3ef('0x22')]),_0x5f25b4);agents[_0xa3ef('0x23')](_0x5f25b4);}catch(_0x79477){utils['error'](util[_0xa3ef('0x1f')]('[%s][index][agentringnoanswer]',_0x5f25b4[_0xa3ef('0x22')]),_0x79477);}});ami['on']('agentconnect',function(_0x10b561){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')]('[%s][index][agentconnect]',_0x10b561['uniqueid']),_0x10b561);agents[_0xa3ef('0x25')](_0x10b561);queues[_0xa3ef('0x25')](_0x10b561);}catch(_0x382ff3){utils[_0xa3ef('0x19')](util['format'](_0xa3ef('0x26'),_0x10b561[_0xa3ef('0x22')]),_0x382ff3);}});ami['on'](_0xa3ef('0x27'),function(_0x5497d7){try{utils['debug'](util[_0xa3ef('0x1f')]('[%s][index][agentcomplete]',_0x5497d7['uniqueid']),_0x5497d7);agents[_0xa3ef('0x27')](_0x5497d7);queues[_0xa3ef('0x27')](_0x5497d7);members[_0xa3ef('0x27')](_0x5497d7);}catch(_0x487a77){utils[_0xa3ef('0x19')](util['format'](_0xa3ef('0x28'),_0x5497d7[_0xa3ef('0x22')]),_0x487a77);}});ami['on'](_0xa3ef('0x29'),function(_0x29ad6e){try{utils[_0xa3ef('0x1d')](util['format'](_0xa3ef('0x2a'),_0x29ad6e[_0xa3ef('0x22')]),_0x29ad6e);agents[_0xa3ef('0x29')](_0x29ad6e);queues[_0xa3ef('0x29')](_0x29ad6e);}catch(_0x285d44){utils['error'](util[_0xa3ef('0x1f')](_0xa3ef('0x2a'),_0x29ad6e[_0xa3ef('0x22')]),_0x285d44);}});ami['on'](_0xa3ef('0x2b'),function(_0x59ec77){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')]('[%s][index][queuecallerjoin]',_0x59ec77[_0xa3ef('0x22')]),_0x59ec77);queues['queuecallerjoin'](_0x59ec77);recordings[_0xa3ef('0x2b')](_0x59ec77);}catch(_0x1d1fdd){utils[_0xa3ef('0x19')](util['format'](_0xa3ef('0x2c'),_0x59ec77['uniqueid']),_0x1d1fdd);}});ami['on'](_0xa3ef('0x2d'),function(_0x46ef7c){try{utils[_0xa3ef('0x1d')](util['format'](_0xa3ef('0x2e'),_0x46ef7c['uniqueid']),_0x46ef7c);queues['queuecallerleave'](_0x46ef7c);}catch(_0x298990){utils[_0xa3ef('0x19')](util['format']('[%s][index][queuecallerleave]',_0x46ef7c[_0xa3ef('0x22')]),_0x298990);}});ami['on'](_0xa3ef('0x2f'),function(_0x26d858){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x30'),_0x26d858[_0xa3ef('0x22')]),_0x26d858);queues['musiconholdstart'](_0x26d858);calls[_0xa3ef('0x2f')](_0x26d858);}catch(_0x445610){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')](_0xa3ef('0x30'),_0x26d858[_0xa3ef('0x22')]),_0x445610);}});ami['on'](_0xa3ef('0x31'),function(_0x3cd57e){try{utils[_0xa3ef('0x1d')](util['format']('[%s][index][musiconholdstop]',_0x3cd57e[_0xa3ef('0x22')]),_0x3cd57e);queues[_0xa3ef('0x31')](_0x3cd57e);calls[_0xa3ef('0x31')](_0x3cd57e);}catch(_0x1dadcc){utils[_0xa3ef('0x19')](util['format']('[%s][index][musiconholdstop]',_0x3cd57e[_0xa3ef('0x22')]),_0x1dadcc);}});ami['on']('newstate',function(_0x274634){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x32'),_0x274634[_0xa3ef('0x22')]),_0x274634);calls['newstate'](_0x274634);recordings[_0xa3ef('0x33')](_0x274634);}catch(_0x10ea20){utils['error'](util['format']('[%s][index][newstate]',_0x274634['uniqueid']),_0x10ea20);}});ami['on'](_0xa3ef('0x34'),function(_0x4ca6d6){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x35'),_0x4ca6d6[_0xa3ef('0x22')]),_0x4ca6d6);calls[_0xa3ef('0x34')](_0x4ca6d6);recordings[_0xa3ef('0x34')](_0x4ca6d6);dials[_0xa3ef('0x34')](_0x4ca6d6);agents['hangup'](_0x4ca6d6);queues[_0xa3ef('0x34')](_0x4ca6d6);}catch(_0x59bfe1){utils['error'](util['format']('[%s][index][hangup]',_0x4ca6d6['uniqueid']),_0x59bfe1);}});ami['on']('cdr',function(_0x530835){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x36'),_0x530835['uniqueid']),_0x530835);members['cdr'](_0x530835);}catch(_0x588596){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')]('[%s][index][cdr]',_0x530835[_0xa3ef('0x22')]),_0x588596);}});ami['on'](_0xa3ef('0x37'),function(_0x1eedf4){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')]('[%s][index][blindtransfer]',_0x1eedf4['uniqueid']),_0x1eedf4);queues[_0xa3ef('0x37')](_0x1eedf4);agents[_0xa3ef('0x37')](_0x1eedf4);transfers[_0xa3ef('0x37')](_0x1eedf4);recordings[_0xa3ef('0x37')](_0x1eedf4);}catch(_0x10cb8c){utils[_0xa3ef('0x19')](util['format'](_0xa3ef('0x38'),_0x1eedf4[_0xa3ef('0x22')]),_0x10cb8c);}});ami['on']('attendedtransfer',function(_0x4347d7){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x39'),_0x4347d7[_0xa3ef('0x3a')]),_0x4347d7);queues['attendedtransfer'](_0x4347d7);transfers[_0xa3ef('0x3b')](_0x4347d7);agents[_0xa3ef('0x3b')](_0x4347d7);calls[_0xa3ef('0x3b')](_0x4347d7);}catch(_0x4a3be1){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')](_0xa3ef('0x39'),_0x4347d7[_0xa3ef('0x3a')]),_0x4a3be1);}});ami['on'](_0xa3ef('0x3c'),function(_0x246245){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x3d'),_0x246245[_0xa3ef('0x22')]),_0x246245);queues[_0xa3ef('0x3c')](_0x246245);recordings[_0xa3ef('0x3c')](_0x246245);calls[_0xa3ef('0x3c')](_0x246245);dials[_0xa3ef('0x3c')](_0x246245);}catch(_0x377bed){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')](_0xa3ef('0x3d'),_0x246245[_0xa3ef('0x22')]),_0x377bed);}});ami['on'](_0xa3ef('0x3e'),function(_0x589013){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x3f'),_0x589013[_0xa3ef('0x22')]),_0x589013);calls['newexten'](_0x589013);recordings[_0xa3ef('0x3e')](_0x589013);dials['newexten'](_0x589013);}catch(_0x264eb5){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')](_0xa3ef('0x3f'),_0x589013[_0xa3ef('0x22')]),_0x264eb5);}});ami['on'](_0xa3ef('0x40'),function(_0x25f278){try{utils['debug'](util[_0xa3ef('0x1f')]('[%s][index][newchannel]',_0x25f278[_0xa3ef('0x22')]),_0x25f278);calls[_0xa3ef('0x40')](_0x25f278);recordings[_0xa3ef('0x40')](_0x25f278);}catch(_0x4bcc2e){utils['error'](util[_0xa3ef('0x1f')](_0xa3ef('0x41'),_0x25f278['uniqueid']),_0x4bcc2e);}});ami['on'](_0xa3ef('0x42'),function(_0x3951ef){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x43'),_0x3951ef[_0xa3ef('0x22')]),_0x3951ef);dials[_0xa3ef('0x42')](_0x3951ef);}catch(_0x1b0b99){utils[_0xa3ef('0x19')](util['format'](_0xa3ef('0x44'),_0x3951ef['uniqueid']),_0x1b0b99);}});ami['on'](_0xa3ef('0x45'),function(_0x3ebf00){try{utils[_0xa3ef('0x1d')](util[_0xa3ef('0x1f')](_0xa3ef('0x46'),_0x3ebf00[_0xa3ef('0x22')]),_0x3ebf00);dials[_0xa3ef('0x45')](_0x3ebf00);}catch(_0x10e92b){utils[_0xa3ef('0x19')](util[_0xa3ef('0x1f')]('[%s][index][dialend]',_0x3ebf00['uniqueid']),_0x10e92b);}});}
\ No newline at end of file
index 5b7db93..133cc46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa581=['[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','destination','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','uniqueid','interface','channel','type','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','some','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','exitAt','agentcomplete','isNil','debug','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','[%s][members][cdr]','data2','source','data3'];(function(_0x2cc711,_0x300328){var _0x31a52e=function(_0x588378){while(--_0x588378){_0x2cc711['push'](_0x2cc711['shift']());}};_0x31a52e(++_0x300328);}(_0xa581,0x90));var _0x1a58=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa581[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1a58('0x0'));var util=require(_0x1a58('0x1'));var utils=require(_0x1a58('0x2'));var members={};var exclude=[_0x1a58('0x3'),_0x1a58('0x4')];function writeDB(_0x347630){utils[_0x1a58('0x5')](util[_0x1a58('0x6')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x347630[_0x1a58('0x7')],_0x347630[_0x1a58('0x8')],_0x347630[_0x1a58('0x9')],_0x347630['data2'],_0x347630['membername'],_0x347630[_0x1a58('0xa')]));if(_0x347630[_0x1a58('0x8')]){utils[_0x1a58('0xb')](_0x347630[_0x1a58('0x8')])[_0x1a58('0xc')](function(_0x5190bd){if(_0x5190bd){_0x347630[_0x1a58('0xd')]=_0x5190bd[_0x1a58('0xe')];_0x347630[_0x1a58('0xf')]=_0x5190bd[_0x1a58('0xf')];utils[_0x1a58('0x10')](_0x1a58('0x11'),_0x347630);}else{utils[_0x1a58('0x12')](_0x347630[_0x1a58('0x8')][_0x1a58('0x13')]('/')[0x1])['then'](function(_0x562a6d){if(_0x562a6d){_0x347630[_0x1a58('0xd')]=_0x562a6d[_0x1a58('0xe')];_0x347630[_0x1a58('0xf')]=_0x562a6d[_0x1a58('0xf')];utils[_0x1a58('0x10')](_0x1a58('0x11'),_0x347630);}});}})[_0x1a58('0x14')](function(_0x34be9b){utils[_0x1a58('0x15')](util[_0x1a58('0x6')]('[%s][members][writeDB]',_0x347630[_0x1a58('0x7')]),_0x34be9b);});}delete members[_0x347630['interface']];}function startsWith(_0x39653d,_0x38a578){return _[_0x1a58('0x16')](_0x39653d,function(_0x5761eb){return _['startsWith'](_0x38a578,_0x5761eb);});}exports['devicestatechange']=function(_0x340d84){try{utils['debug'](util[_0x1a58('0x6')](_0x1a58('0x17'),members[_0x340d84[_0x1a58('0x18')]]?members[_0x340d84[_0x1a58('0x18')]][_0x1a58('0x7')]:_0x340d84[_0x1a58('0x18')]),_0x340d84);utils['info'](util[_0x1a58('0x6')](_0x1a58('0x19'),members[_0x340d84[_0x1a58('0x18')]]?members[_0x340d84[_0x1a58('0x18')]][_0x1a58('0x7')]:_0x340d84[_0x1a58('0x18')],_0x340d84[_0x1a58('0x1a')],_0x340d84[_0x1a58('0x18')]));switch(_0x340d84[_0x1a58('0x1a')]){case'INUSE':case _0x1a58('0x1b'):if(!startsWith(exclude,_0x340d84[_0x1a58('0x18')])){members[_0x340d84['device']]={'channel':_0x1a58('0x1c'),'interface':_0x340d84['device'],'type':_0x1a58('0x1d'),'enterAt':utils[_0x1a58('0x1e')](),'role':_0x1a58('0x1f')};}break;case'NOT_INUSE':if(!_['isNil'](members[_0x340d84[_0x1a58('0x18')]])){members[_0x340d84['device']][_0x1a58('0x20')]=utils[_0x1a58('0x1e')]();members[_0x340d84[_0x1a58('0x18')]]['duration']=utils['diffTime'](members[_0x340d84[_0x1a58('0x18')]][_0x1a58('0x20')],members[_0x340d84['device']]['enterAt']);if(members[_0x340d84['device']][_0x1a58('0x7')]){writeDB(members[_0x340d84[_0x1a58('0x18')]]);}}break;default:break;}}catch(_0x2a9934){utils[_0x1a58('0x15')](util['format'](_0x1a58('0x17'),members[_0x340d84[_0x1a58('0x18')]]?members[_0x340d84['device']][_0x1a58('0x7')]:_0x340d84[_0x1a58('0x18')]),_0x2a9934);}};exports[_0x1a58('0x21')]=function(_0x9dd938){try{if(!_[_0x1a58('0x22')](members[_0x9dd938['interface']])){utils[_0x1a58('0x23')](util['format']('[%s][members][agentcomplete]',_0x9dd938['uniqueid']),_0x9dd938);utils['info'](util[_0x1a58('0x6')](_0x1a58('0x24'),_0x9dd938[_0x1a58('0x7')],_0x9dd938[_0x1a58('0x8')],_0x9dd938[_0x1a58('0x25')]));members[_0x9dd938[_0x1a58('0x8')]]=_[_0x1a58('0x26')](members[_0x9dd938[_0x1a58('0x8')]],{'data4':_0x9dd938[_0x1a58('0x25')],'uniqueid':_0x9dd938['uniqueid']});}}catch(_0x48450f){utils[_0x1a58('0x15')](util['format'](_0x1a58('0x27'),_0x9dd938[_0x1a58('0x7')]),_0x48450f);}};exports['cdr']=function(_0x2aaf4d){try{utils[_0x1a58('0x23')](util[_0x1a58('0x6')](_0x1a58('0x28'),_0x2aaf4d[_0x1a58('0x7')]),_0x2aaf4d);if(_0x2aaf4d[_0x1a58('0x9')]){var _0x388bbd=_0x2aaf4d[_0x1a58('0x9')]['split']('-')[0x0];if(!_[_0x1a58('0x22')](members[_0x388bbd])){members[_0x388bbd]=_[_0x1a58('0x26')](members[_0x388bbd],{'data1':members[_0x388bbd]['data1']||_0x2aaf4d[_0x1a58('0xa')],'data2':members[_0x388bbd][_0x1a58('0x29')]||_0x2aaf4d[_0x1a58('0x2a')],'data3':members[_0x388bbd][_0x1a58('0x2b')]||_0x2aaf4d['destination'],'uniqueid':members[_0x388bbd][_0x1a58('0x7')]||_0x2aaf4d[_0x1a58('0x7')]});utils['info'](util[_0x1a58('0x6')](_0x1a58('0x2c'),_0x2aaf4d['uniqueid'],members[_0x388bbd]['data1'],members[_0x388bbd]['data2'],members[_0x388bbd][_0x1a58('0x2b')]));if(members[_0x388bbd]['exitAt']){writeDB(members[_0x388bbd]);}}}if(_0x2aaf4d[_0x1a58('0x2d')]){var _0x4fdb01=_0x2aaf4d[_0x1a58('0x2d')][_0x1a58('0x13')]('-')[0x0];if(!_['isNil'](members[_0x4fdb01])){members[_0x4fdb01]=_[_0x1a58('0x26')](members[_0x4fdb01],{'data1':members[_0x4fdb01]['data1']||_0x2aaf4d[_0x1a58('0xa')],'data2':members[_0x4fdb01][_0x1a58('0x29')]||_0x2aaf4d[_0x1a58('0x2a')],'data3':members[_0x4fdb01][_0x1a58('0x2b')]||_0x2aaf4d[_0x1a58('0x2e')],'uniqueid':members[_0x4fdb01][_0x1a58('0x7')]||_0x2aaf4d[_0x1a58('0x7')]});utils[_0x1a58('0x5')](util[_0x1a58('0x6')](_0x1a58('0x2c'),_0x2aaf4d['uniqueid'],members[_0x4fdb01]['data1'],members[_0x4fdb01]['data2'],members[_0x4fdb01][_0x1a58('0x2b')]));if(members[_0x4fdb01]['exitAt']){writeDB(members[_0x4fdb01]);}}}}catch(_0x28dab1){utils['error'](util[_0x1a58('0x6')]('[%s][members][cdr]',_0x2aaf4d[_0x1a58('0x7')]),_0x28dab1);}};
\ No newline at end of file
+var _0xdb13=['error','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','assign','queue','cdr','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','destinationchannel','destination','[%s][members][cdr]','util','./utils','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','type','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','split','catch','some','devicestatechange','format','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','duration','exitAt','enterAt'];(function(_0x2c3a47,_0x170687){var _0x1c04de=function(_0x367deb){while(--_0x367deb){_0x2c3a47['push'](_0x2c3a47['shift']());}};_0x1c04de(++_0x170687);}(_0xdb13,0x10c));var _0x3db1=function(_0x4b1a37,_0x42d668){_0x4b1a37=_0x4b1a37-0x0;var _0x396c73=_0xdb13[_0x4b1a37];return _0x396c73;};'use strict';var _=require('lodash');var util=require(_0x3db1('0x0'));var utils=require(_0x3db1('0x1'));var members={};var exclude=[_0x3db1('0x2'),_0x3db1('0x3')];function writeDB(_0x32468d){utils[_0x3db1('0x4')](util['format'](_0x3db1('0x5'),_0x32468d[_0x3db1('0x6')],_0x32468d[_0x3db1('0x7')],_0x32468d[_0x3db1('0x8')],_0x32468d[_0x3db1('0x9')],_0x32468d['membername'],_0x32468d[_0x3db1('0xa')]));if(_0x32468d[_0x3db1('0x7')]){utils[_0x3db1('0xb')](_0x32468d[_0x3db1('0x7')])[_0x3db1('0xc')](function(_0x3e6e60){if(_0x3e6e60){_0x32468d[_0x3db1('0xd')]=_0x3e6e60[_0x3db1('0xe')];_0x32468d[_0x3db1('0xf')]=_0x3e6e60[_0x3db1('0xf')];utils[_0x3db1('0x10')](_0x3db1('0x11'),_0x32468d);}else{utils['getUserByName'](_0x32468d[_0x3db1('0x7')][_0x3db1('0x12')]('/')[0x1])[_0x3db1('0xc')](function(_0x3dbe31){if(_0x3dbe31){_0x32468d['membername']=_0x3dbe31['name'];_0x32468d[_0x3db1('0xf')]=_0x3dbe31[_0x3db1('0xf')];utils[_0x3db1('0x10')](_0x3db1('0x11'),_0x32468d);}});}})[_0x3db1('0x13')](function(_0x51e446){utils['error'](util['format']('[%s][members][writeDB]',_0x32468d[_0x3db1('0x6')]),_0x51e446);});}delete members[_0x32468d[_0x3db1('0x7')]];}function startsWith(_0x10be63,_0x2b4038){return _[_0x3db1('0x14')](_0x10be63,function(_0x24d8d6){return _['startsWith'](_0x2b4038,_0x24d8d6);});}exports[_0x3db1('0x15')]=function(_0x6b8af0){try{utils['debug'](util[_0x3db1('0x16')](_0x3db1('0x17'),members[_0x6b8af0['device']]?members[_0x6b8af0[_0x3db1('0x18')]]['uniqueid']:_0x6b8af0[_0x3db1('0x18')]),_0x6b8af0);utils[_0x3db1('0x4')](util[_0x3db1('0x16')](_0x3db1('0x19'),members[_0x6b8af0['device']]?members[_0x6b8af0[_0x3db1('0x18')]][_0x3db1('0x6')]:_0x6b8af0[_0x3db1('0x18')],_0x6b8af0['state'],_0x6b8af0[_0x3db1('0x18')]));switch(_0x6b8af0[_0x3db1('0x1a')]){case _0x3db1('0x1b'):case _0x3db1('0x1c'):if(!startsWith(exclude,_0x6b8af0[_0x3db1('0x18')])){members[_0x6b8af0[_0x3db1('0x18')]]={'channel':_0x3db1('0x1d'),'interface':_0x6b8af0[_0x3db1('0x18')],'type':_0x3db1('0x1e'),'enterAt':utils[_0x3db1('0x1f')](),'role':_0x3db1('0x20')};}break;case _0x3db1('0x21'):if(!_[_0x3db1('0x22')](members[_0x6b8af0[_0x3db1('0x18')]])){members[_0x6b8af0[_0x3db1('0x18')]]['exitAt']=utils[_0x3db1('0x1f')]();members[_0x6b8af0[_0x3db1('0x18')]][_0x3db1('0x23')]=utils['diffTime'](members[_0x6b8af0[_0x3db1('0x18')]][_0x3db1('0x24')],members[_0x6b8af0[_0x3db1('0x18')]][_0x3db1('0x25')]);if(members[_0x6b8af0['device']][_0x3db1('0x6')]){writeDB(members[_0x6b8af0[_0x3db1('0x18')]]);}}break;default:break;}}catch(_0x5b3df8){utils[_0x3db1('0x26')](util[_0x3db1('0x16')](_0x3db1('0x17'),members[_0x6b8af0['device']]?members[_0x6b8af0[_0x3db1('0x18')]][_0x3db1('0x6')]:_0x6b8af0[_0x3db1('0x18')]),_0x5b3df8);}};exports['agentcomplete']=function(_0x4d0572){try{if(!_[_0x3db1('0x22')](members[_0x4d0572[_0x3db1('0x7')]])){utils['debug'](util['format'](_0x3db1('0x27'),_0x4d0572[_0x3db1('0x6')]),_0x4d0572);utils[_0x3db1('0x4')](util[_0x3db1('0x16')](_0x3db1('0x28'),_0x4d0572[_0x3db1('0x6')],_0x4d0572[_0x3db1('0x7')],_0x4d0572['queue']));members[_0x4d0572[_0x3db1('0x7')]]=_[_0x3db1('0x29')](members[_0x4d0572[_0x3db1('0x7')]],{'data4':_0x4d0572[_0x3db1('0x2a')],'uniqueid':_0x4d0572[_0x3db1('0x6')]});}}catch(_0x2b2b5a){utils[_0x3db1('0x26')](util[_0x3db1('0x16')](_0x3db1('0x27'),_0x4d0572['uniqueid']),_0x2b2b5a);}};exports[_0x3db1('0x2b')]=function(_0x5ba15e){try{utils['debug'](util[_0x3db1('0x16')]('[%s][members][cdr]',_0x5ba15e[_0x3db1('0x6')]),_0x5ba15e);if(_0x5ba15e['channel']){var _0x6da6e7=_0x5ba15e[_0x3db1('0x8')][_0x3db1('0x12')]('-')[0x0];if(!_['isNil'](members[_0x6da6e7])){members[_0x6da6e7]=_['assign'](members[_0x6da6e7],{'data1':members[_0x6da6e7]['data1']||_0x5ba15e[_0x3db1('0xa')],'data2':members[_0x6da6e7][_0x3db1('0x9')]||_0x5ba15e[_0x3db1('0x2c')],'data3':members[_0x6da6e7][_0x3db1('0x2d')]||_0x5ba15e['destination'],'uniqueid':members[_0x6da6e7][_0x3db1('0x6')]||_0x5ba15e[_0x3db1('0x6')]});utils[_0x3db1('0x4')](util[_0x3db1('0x16')](_0x3db1('0x2e'),_0x5ba15e[_0x3db1('0x6')],members[_0x6da6e7][_0x3db1('0x2f')],members[_0x6da6e7]['data2'],members[_0x6da6e7]['data3']));if(members[_0x6da6e7][_0x3db1('0x24')]){writeDB(members[_0x6da6e7]);}}}if(_0x5ba15e[_0x3db1('0x30')]){var _0x167a87=_0x5ba15e[_0x3db1('0x30')][_0x3db1('0x12')]('-')[0x0];if(!_['isNil'](members[_0x167a87])){members[_0x167a87]=_['assign'](members[_0x167a87],{'data1':members[_0x167a87][_0x3db1('0x2f')]||_0x5ba15e[_0x3db1('0xa')],'data2':members[_0x167a87][_0x3db1('0x9')]||_0x5ba15e[_0x3db1('0x2c')],'data3':members[_0x167a87]['data3']||_0x5ba15e[_0x3db1('0x31')],'uniqueid':members[_0x167a87][_0x3db1('0x6')]||_0x5ba15e[_0x3db1('0x6')]});utils['info'](util['format'](_0x3db1('0x2e'),_0x5ba15e[_0x3db1('0x6')],members[_0x167a87][_0x3db1('0x2f')],members[_0x167a87]['data2'],members[_0x167a87]['data3']));if(members[_0x167a87][_0x3db1('0x24')]){writeDB(members[_0x167a87]);}}}}catch(_0x6b9523){utils['error'](util[_0x3db1('0x16')](_0x3db1('0x32'),_0x5ba15e[_0x3db1('0x6')]),_0x6b9523);}};
\ No newline at end of file
index 89b169d..5717421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf96=['EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','queuecallerjoinAt','count','connectedlinenum','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','membername','agentcomplete','[%s][queues][agentcomplete]','transfer','TRANSFER','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','BLIND','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','transferexten','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertype','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','diffTime','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','calleridnum','accountcode','getVoiceQueueByName','queue','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','queuecallerexitreason','queuecallerenterreason','[%s][queues][hangup]','varset','[%s][queues][varset]','variable','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexit','queuecallerexitAt'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xbf96,0x1cc));var _0x6bf9=function(_0x4e8940,_0x46ec30){_0x4e8940=_0x4e8940-0x0;var _0x30bc99=_0xbf96[_0x4e8940];return _0x30bc99;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x6bf9('0x0'));var queues={};function writeDB(_0x4f9173){utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x3'),_0x4f9173[_0x6bf9('0x4')],_0x4f9173[_0x6bf9('0x5')],_0x4f9173['queue'],_0x4f9173['lastAssignedTo'],_0x4f9173[_0x6bf9('0x6')],_0x4f9173[_0x6bf9('0x7')],_0x4f9173['queuecallerexitreason']));if(_0x4f9173['queue']){utils[_0x6bf9('0x8')](_0x4f9173[_0x6bf9('0x9')])[_0x6bf9('0xa')](function(_0x5a755f){if(_0x5a755f){_0x4f9173['type']=_0x5a755f[_0x6bf9('0xb')];}utils[_0x6bf9('0xc')]('CreateVoiceQueueReport',_0x4f9173);});}else{utils[_0x6bf9('0xc')](_0x6bf9('0xd'),_0x4f9173);}if(_0x4f9173[_0x6bf9('0xe')]){delete queues[_0x4f9173[_0x6bf9('0xe')]];}else{delete queues[_0x4f9173[_0x6bf9('0x4')]];}}exports[_0x6bf9('0xf')]=function(_0x3c2008){try{utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')](_0x6bf9('0x11'),_0x3c2008[_0x6bf9('0x4')]),_0x3c2008);utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x12'),_0x3c2008[_0x6bf9('0x4')],_0x3c2008[_0x6bf9('0x9')],_0x3c2008[_0x6bf9('0x13')]));queues[_0x3c2008[_0x6bf9('0x4')]]=_[_0x6bf9('0x14')](_0x3c2008,{'originalposition':_0x3c2008[_0x6bf9('0x13')],'queuecallerjoinAt':utils[_0x6bf9('0x15')](),'mohtime':0x0});}catch(_0x22f8e0){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')]('[%s][queues][queuecallerjoin]',_0x3c2008[_0x6bf9('0x4')]),_0x22f8e0);}};exports[_0x6bf9('0x17')]=function(_0x79ee3c){try{if(!_[_0x6bf9('0x18')](queues[_0x79ee3c[_0x6bf9('0x4')]])){utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')]('[%s][queues][hangup]',_0x79ee3c[_0x6bf9('0x4')]),_0x79ee3c);if(queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0x19')]){if(!queues[_0x79ee3c['uniqueid']]['queuecallerabandon']&&!queues[_0x79ee3c[_0x6bf9('0x4')]]['queuecallerexit']){queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0x1a')]=!![];queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0x1b')]=utils['now']();queues[_0x79ee3c[_0x6bf9('0x4')]]['queuecallerexitreason']=_0x6bf9('0x1c');}utils['info'](util[_0x6bf9('0x2')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x79ee3c[_0x6bf9('0x4')],queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0x1d')],queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0x1e')]));writeDB(queues[_0x79ee3c[_0x6bf9('0x4')]]);}else if(queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0xe')]){utils['info'](util[_0x6bf9('0x2')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x79ee3c[_0x6bf9('0x4')],queues[_0x79ee3c['uniqueid']][_0x6bf9('0x1d')],queues[_0x79ee3c['uniqueid']][_0x6bf9('0xe')]));queues[queues[_0x79ee3c[_0x6bf9('0x4')]]['transfereduniqueid']]=queues[_0x79ee3c['uniqueid']];queues[queues[_0x79ee3c[_0x6bf9('0x4')]][_0x6bf9('0xe')]][_0x6bf9('0x1f')]=0x2;delete queues[_0x79ee3c[_0x6bf9('0x4')]];}}}catch(_0x1c9cf4){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')](_0x6bf9('0x20'),_0x79ee3c[_0x6bf9('0x4')]),_0x1c9cf4);}};exports[_0x6bf9('0x21')]=function(_0x5d5f75){try{utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')](_0x6bf9('0x22'),_0x5d5f75[_0x6bf9('0x4')]),_0x5d5f75);if(!_[_0x6bf9('0x18')](_0x5d5f75[_0x6bf9('0x23')]['queuestatus'])&&_0x5d5f75[_0x6bf9('0x24')][_0x6bf9('0x25')]()!==_0x6bf9('0x26')){if(!_['isNil'](queues[_0x5d5f75[_0x6bf9('0x4')]])){queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x27')]=![];queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x28')]=null;queues[_0x5d5f75[_0x6bf9('0x4')]]['queuecallerexit']=!![];queues[_0x5d5f75[_0x6bf9('0x4')]]['queuecallerexitAt']=utils[_0x6bf9('0x15')]();queues[_0x5d5f75[_0x6bf9('0x4')]]['queuecallerexitreason']=_0x5d5f75['value'][_0x6bf9('0x25')]();utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x29'),_0x5d5f75[_0x6bf9('0x4')],queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x1d')],_0x5d5f75[_0x6bf9('0x24')],queues[_0x5d5f75['uniqueid']][_0x6bf9('0x1e')]));writeDB(queues[_0x5d5f75[_0x6bf9('0x4')]]);}}else if(!_[_0x6bf9('0x18')](_0x5d5f75[_0x6bf9('0x23')][_0x6bf9('0x2a')])){if(!_[_0x6bf9('0x18')](queues[_0x5d5f75['uniqueid']])&&!queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x27')]){queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x27')]=![];queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x28')]=null;queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x2b')]=!![];queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x2c')]=utils[_0x6bf9('0x15')]();queues[_0x5d5f75[_0x6bf9('0x4')]]['queuecallerexitreason']=_0x6bf9('0x2d');utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x2e'),_0x5d5f75[_0x6bf9('0x4')],queues[_0x5d5f75[_0x6bf9('0x4')]][_0x6bf9('0x1d')],_0x5d5f75[_0x6bf9('0x24')],queues[_0x5d5f75['uniqueid']][_0x6bf9('0x1e')]));}}}catch(_0x999d0e){utils[_0x6bf9('0x16')](util['format']('[%s][queues][varset]',_0x5d5f75['uniqueid']),_0x999d0e);}};exports[_0x6bf9('0x27')]=function(_0x2ab18f){try{if(!_[_0x6bf9('0x18')](queues[_0x2ab18f['uniqueid']])){utils['debug'](util[_0x6bf9('0x2')]('[%s][queues][queuecallerabandon]',_0x2ab18f[_0x6bf9('0x4')]),_0x2ab18f);queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x2b')]=![];queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x2c')]=null;queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x27')]=!![];queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x28')]=utils[_0x6bf9('0x15')]();queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x1e')]=_0x6bf9('0x2f');utils['info'](util[_0x6bf9('0x2')](_0x6bf9('0x30'),_0x2ab18f[_0x6bf9('0x4')],queues[_0x2ab18f[_0x6bf9('0x4')]][_0x6bf9('0x1d')],queues[_0x2ab18f['uniqueid']][_0x6bf9('0x1e')]));}}catch(_0x35f242){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')]('[%s][queues][queuecallerabandon]',_0x2ab18f[_0x6bf9('0x4')]),_0x35f242);}};exports[_0x6bf9('0x31')]=function(_0x379385){try{if(!_[_0x6bf9('0x18')](queues[_0x379385[_0x6bf9('0x4')]])){utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')]('[%s][queues][queuecallerleave]',_0x379385[_0x6bf9('0x4')]),_0x379385);utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x32'),_0x379385[_0x6bf9('0x4')],queues[_0x379385['uniqueid']]['name'],_0x379385['connectedlinenum'],_0x379385[_0x6bf9('0x33')]));queues[_0x379385[_0x6bf9('0x4')]][_0x6bf9('0x31')]=!![];queues[_0x379385['uniqueid']]['queuecallerleaveAt']=utils[_0x6bf9('0x15')]();queues[_0x379385[_0x6bf9('0x4')]][_0x6bf9('0x34')]=utils['diffTime'](queues[_0x379385['uniqueid']]['queuecallerleaveAt'],queues[_0x379385[_0x6bf9('0x4')]][_0x6bf9('0x35')]);queues[_0x379385[_0x6bf9('0x4')]][_0x6bf9('0x13')]=_0x379385[_0x6bf9('0x13')];queues[_0x379385[_0x6bf9('0x4')]]['count']=_0x379385[_0x6bf9('0x36')];queues[_0x379385['uniqueid']]['connectedlinenum']=_0x379385[_0x6bf9('0x37')];queues[_0x379385[_0x6bf9('0x4')]][_0x6bf9('0x33')]=_0x379385[_0x6bf9('0x33')];}}catch(_0x32d72c){utils['error'](util[_0x6bf9('0x2')](_0x6bf9('0x38'),_0x379385[_0x6bf9('0x4')]),_0x32d72c);}};exports[_0x6bf9('0x39')]=function(_0x277a7f){try{if(!_[_0x6bf9('0x18')](queues[_0x277a7f[_0x6bf9('0x4')]])){utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')](_0x6bf9('0x3a'),_0x277a7f[_0x6bf9('0x4')]),_0x277a7f);utils['info'](util[_0x6bf9('0x2')](_0x6bf9('0x3b'),_0x277a7f[_0x6bf9('0x4')],queues[_0x277a7f[_0x6bf9('0x4')]][_0x6bf9('0x1d')],_0x277a7f['membername'],_0x277a7f[_0x6bf9('0x3c')]));queues[_0x277a7f[_0x6bf9('0x4')]]['queuecallerabandon']=![];queues[_0x277a7f[_0x6bf9('0x4')]]['queuecallerabandon']=![];queues[_0x277a7f[_0x6bf9('0x4')]][_0x6bf9('0x28')]=null;queues[_0x277a7f['uniqueid']][_0x6bf9('0x2b')]=![];queues[_0x277a7f[_0x6bf9('0x4')]][_0x6bf9('0x1e')]=null;queues[_0x277a7f[_0x6bf9('0x4')]][_0x6bf9('0x2c')]=null;queues[_0x277a7f['uniqueid']][_0x6bf9('0x3d')]=!![];queues[_0x277a7f['uniqueid']][_0x6bf9('0x7')]=_0x277a7f[_0x6bf9('0x3c')];queues[_0x277a7f[_0x6bf9('0x4')]]['lastAssignedTo']=_0x277a7f[_0x6bf9('0x3e')];}}catch(_0x1a3335){utils['error'](util['format'](_0x6bf9('0x3a'),_0x277a7f[_0x6bf9('0x4')]),_0x1a3335);}};exports[_0x6bf9('0x3f')]=function(_0x3069d4){try{if(!_[_0x6bf9('0x18')](queues[_0x3069d4[_0x6bf9('0x4')]])){if(queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x19')]){utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')](_0x6bf9('0x40'),_0x3069d4[_0x6bf9('0x4')]),_0x3069d4);queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x27')]=![];queues[_0x3069d4['uniqueid']][_0x6bf9('0x27')]=![];queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x28')]=null;queues[_0x3069d4[_0x6bf9('0x4')]]['queuecallerexit']=![];queues[_0x3069d4['uniqueid']][_0x6bf9('0x2c')]=null;queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x3d')]=!![];queues[_0x3069d4[_0x6bf9('0x4')]]['lastAssignedTo']=_0x3069d4[_0x6bf9('0x3e')];queues[_0x3069d4['uniqueid']][_0x6bf9('0x1a')]=!![];queues[_0x3069d4['uniqueid']][_0x6bf9('0x1b')]=utils[_0x6bf9('0x15')]();if(_0x3069d4['reason']==_0x6bf9('0x41')){if(!queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x41')]){queues[_0x3069d4['uniqueid']][_0x6bf9('0x1e')]=_0x6bf9('0x42');}}else{queues[_0x3069d4[_0x6bf9('0x4')]]['queuecallerexitreason']='COMPLETEDBY'+_0x3069d4['reason'][_0x6bf9('0x25')]();}utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x43'),_0x3069d4[_0x6bf9('0x4')],queues[_0x3069d4[_0x6bf9('0x4')]][_0x6bf9('0x1d')],_0x3069d4['membername'],queues[_0x3069d4['uniqueid']][_0x6bf9('0x1e')]));writeDB(queues[_0x3069d4['uniqueid']]);}}}catch(_0x51e16e){utils[_0x6bf9('0x16')](util['format'](_0x6bf9('0x40'),_0x3069d4[_0x6bf9('0x4')]),_0x51e16e);}};exports[_0x6bf9('0x44')]=function(_0x4e3b36){try{if(!_[_0x6bf9('0x18')](queues[_0x4e3b36[_0x6bf9('0x45')]])){utils['debug'](util[_0x6bf9('0x2')]('[%s][queues][blindtransfer]',_0x4e3b36[_0x6bf9('0x4')]),_0x4e3b36);queues[_0x4e3b36[_0x6bf9('0x45')]][_0x6bf9('0x41')]=!![];queues[_0x4e3b36[_0x6bf9('0x45')]]['transfertype']=_0x6bf9('0x46');queues[_0x4e3b36[_0x6bf9('0x45')]]['transferexten']=_0x4e3b36[_0x6bf9('0x47')];queues[_0x4e3b36[_0x6bf9('0x45')]][_0x6bf9('0x48')]=_0x4e3b36[_0x6bf9('0x45')];queues[_0x4e3b36[_0x6bf9('0x45')]]['queuecallerexitreason']=_0x6bf9('0x49');utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x4a'),_0x4e3b36[_0x6bf9('0x4')],queues[_0x4e3b36['transfereeuniqueid']][_0x6bf9('0x1d')],_0x4e3b36[_0x6bf9('0x45')],_0x4e3b36[_0x6bf9('0x47')]));}}catch(_0x40fabd){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')]('[%s][queues][blindtransfer]',_0x4e3b36['uniqueid']),_0x40fabd);}};exports[_0x6bf9('0x4b')]=function(_0x32e5d0){try{utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')]('[%s][queues][attendedtransfer]',_0x32e5d0[_0x6bf9('0x4c')]),_0x32e5d0);if(_0x32e5d0[_0x6bf9('0x4c')]==_0x32e5d0[_0x6bf9('0x4d')]){if(!_[_0x6bf9('0x18')](queues[_0x32e5d0[_0x6bf9('0x4e')]])){utils[_0x6bf9('0x1')](util['format'](_0x6bf9('0x4f'),_0x32e5d0[_0x6bf9('0x4c')],queues[_0x32e5d0[_0x6bf9('0x4e')]]['name'],_0x32e5d0[_0x6bf9('0x50')]));queues[_0x32e5d0['secondtransfererlinkedid']]['transfer']=!![];queues[_0x32e5d0['secondtransfererlinkedid']]['transfertype']=_0x6bf9('0x51');queues[_0x32e5d0[_0x6bf9('0x4e')]][_0x6bf9('0x52')]=_0x32e5d0[_0x6bf9('0x50')];queues[_0x32e5d0[_0x6bf9('0x4e')]][_0x6bf9('0x48')]=_0x32e5d0[_0x6bf9('0x4c')];queues[_0x32e5d0[_0x6bf9('0x4e')]][_0x6bf9('0x1e')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x32e5d0[_0x6bf9('0x4d')]])){if(_0x32e5d0[_0x6bf9('0x53')]&&queues[_0x32e5d0[_0x6bf9('0x53')]]){queues[_0x32e5d0[_0x6bf9('0x53')]][_0x6bf9('0x1f')]=0x1;queues[_0x32e5d0[_0x6bf9('0x45')]]=_[_0x6bf9('0x54')](queues[_0x32e5d0[_0x6bf9('0x53')]]);queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0xe')]=_0x32e5d0[_0x6bf9('0x55')];queues[_0x32e5d0['transfereeuniqueid']][_0x6bf9('0x1f')]=0x2;queues[_0x32e5d0['transfereeuniqueid']][_0x6bf9('0x6')]=queues[_0x32e5d0[_0x6bf9('0x4e')]]['calleridnum'];queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x56')]=queues[_0x32e5d0['secondtransfererlinkedid']][_0x6bf9('0x56')];queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x35')]=utils[_0x6bf9('0x15')]();queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x19')]=utils[_0x6bf9('0x15')]();queues[_0x32e5d0[_0x6bf9('0x45')]]['holdtime']=0x0;queues[_0x32e5d0['transfereeuniqueid']][_0x6bf9('0x57')]=0x0;utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')](_0x6bf9('0x58'),_0x32e5d0[_0x6bf9('0x4c')],queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x1d')],queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x6')],queues[_0x32e5d0[_0x6bf9('0x45')]][_0x6bf9('0x56')]));}else{utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x32e5d0[_0x6bf9('0x4c')],queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0x1d')],_0x32e5d0[_0x6bf9('0x4e')]));queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0xe')]=_0x32e5d0['secondtransfererlinkedid'];}}}else if(_0x32e5d0[_0x6bf9('0x59')]==_0x32e5d0[_0x6bf9('0x4e')]){if(!_[_0x6bf9('0x18')](queues[_0x32e5d0['origtransfererlinkedid']])){utils[_0x6bf9('0x1')](util['format'](_0x6bf9('0x5a'),_0x32e5d0[_0x6bf9('0x4c')],queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0x1d')],_0x32e5d0['secondtransfereruniqueid'],_0x32e5d0[_0x6bf9('0x5b')]));queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0x41')]=!![];queues[_0x32e5d0['origtransfererlinkedid']][_0x6bf9('0x5c')]='ATTENDED';queues[_0x32e5d0[_0x6bf9('0x4d')]]['transferexten']=_0x32e5d0[_0x6bf9('0x5b')];queues[_0x32e5d0['origtransfererlinkedid']]['transferuniqueid']=_0x32e5d0[_0x6bf9('0x59')];queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0x1e')]='ATTENDEDTRANSFER';}if(!_[_0x6bf9('0x18')](queues[_0x32e5d0[_0x6bf9('0x4e')]])){if(_0x32e5d0[_0x6bf9('0x5d')]&&queues[_0x32e5d0[_0x6bf9('0x5d')]]){queues[_0x32e5d0[_0x6bf9('0x5d')]]['queuecallerenterreason']=0x1;queues[_0x32e5d0[_0x6bf9('0x55')]]=_['clone'](queues[_0x32e5d0[_0x6bf9('0x5d')]]);queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0xe')]=_0x32e5d0[_0x6bf9('0x55')];queues[_0x32e5d0['transfertargetuniqueid']][_0x6bf9('0x1f')]=0x2;queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x6')]=queues[_0x32e5d0['origtransfererlinkedid']][_0x6bf9('0x6')];queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x56')]=queues[_0x32e5d0[_0x6bf9('0x4d')]][_0x6bf9('0x56')];queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x35')]=utils[_0x6bf9('0x15')]();queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x19')]=utils[_0x6bf9('0x15')]();queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x34')]=0x0;queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x57')]=0x0;utils['info'](util[_0x6bf9('0x2')](_0x6bf9('0x5e'),_0x32e5d0['origtransfereruniqueid'],queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x1d')],queues[_0x32e5d0[_0x6bf9('0x55')]]['transfereduniqueid'],queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x6')],queues[_0x32e5d0[_0x6bf9('0x55')]][_0x6bf9('0x56')]));}else{utils['info'](util[_0x6bf9('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x32e5d0[_0x6bf9('0x4c')],queues[_0x32e5d0[_0x6bf9('0x4e')]][_0x6bf9('0x1d')],_0x32e5d0[_0x6bf9('0x4d')]));queues[_0x32e5d0[_0x6bf9('0x4e')]]['transfereduniqueid']=_0x32e5d0[_0x6bf9('0x4d')];}}}}catch(_0x59c500){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')]('[%s][queues][attendedtransfer]',_0x32e5d0[_0x6bf9('0x4c')]),_0x59c500);}};exports[_0x6bf9('0x5f')]=function(_0x6676cb){try{if(!_[_0x6bf9('0x18')](queues[_0x6676cb[_0x6bf9('0x4')]])){utils[_0x6bf9('0x10')](util['format'](_0x6bf9('0x60'),_0x6676cb[_0x6bf9('0x4')]),_0x6676cb);queues[_0x6676cb['uniqueid']]['musiconholdstartAt']=utils[_0x6bf9('0x15')]();utils['info'](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x6676cb[_0x6bf9('0x4')],queues[_0x6676cb['uniqueid']][_0x6bf9('0x1d')],queues[_0x6676cb[_0x6bf9('0x4')]][_0x6bf9('0x61')]));}}catch(_0x49ef0b){utils[_0x6bf9('0x16')](util[_0x6bf9('0x2')](_0x6bf9('0x60'),_0x6676cb[_0x6bf9('0x4')]),_0x49ef0b);}};exports[_0x6bf9('0x62')]=function(_0x191487){try{if(!_['isNil'](queues[_0x191487[_0x6bf9('0x4')]])){if(!_[_0x6bf9('0x18')](queues[_0x191487[_0x6bf9('0x4')]]['musiconholdstartAt'])){utils[_0x6bf9('0x10')](util[_0x6bf9('0x2')](_0x6bf9('0x63'),_0x191487['uniqueid']),_0x191487);queues[_0x191487[_0x6bf9('0x4')]]['mohtime']+=utils[_0x6bf9('0x64')](utils[_0x6bf9('0x15')](),queues[_0x191487[_0x6bf9('0x4')]][_0x6bf9('0x61')]);utils[_0x6bf9('0x1')](util[_0x6bf9('0x2')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x191487['uniqueid'],queues[_0x191487[_0x6bf9('0x4')]][_0x6bf9('0x1d')],queues[_0x191487[_0x6bf9('0x4')]][_0x6bf9('0x57')]));delete queues[_0x191487['uniqueid']][_0x6bf9('0x61')];}}}catch(_0x3e16a2){utils['error'](util[_0x6bf9('0x2')]('[%s][queues][musiconholdstop]',_0x191487[_0x6bf9('0x4')]),_0x3e16a2);}};
\ No newline at end of file
+var _0x3012=['isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','[%s][queues][varset]','variable','value','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','accountcode','lastAssignedTo','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','toUpperCase','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','transfertype','transferexten','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','[%s][queues][blindtransfer]','[%s][queues][attendedtransfer]','origtransfereruniqueid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%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]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','calleridnum','then','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup'];(function(_0x234e1a,_0x500d79){var _0x55aad2=function(_0x272396){while(--_0x272396){_0x234e1a['push'](_0x234e1a['shift']());}};_0x55aad2(++_0x500d79);}(_0x3012,0x11a));var _0x2301=function(_0x36fe46,_0x40010c){_0x36fe46=_0x36fe46-0x0;var _0x4d2e9c=_0x3012[_0x36fe46];return _0x4d2e9c;};'use strict';var _=require(_0x2301('0x0'));var util=require(_0x2301('0x1'));var utils=require(_0x2301('0x2'));var queues={};function writeDB(_0x5e2d62){utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x5'),_0x5e2d62['uniqueid'],_0x5e2d62[_0x2301('0x6')],_0x5e2d62[_0x2301('0x7')],_0x5e2d62['lastAssignedTo'],_0x5e2d62[_0x2301('0x8')],_0x5e2d62['accountcode'],_0x5e2d62['queuecallerexitreason']));if(_0x5e2d62[_0x2301('0x7')]){utils['getVoiceQueueByName'](_0x5e2d62[_0x2301('0x7')])[_0x2301('0x9')](function(_0x4c790c){if(_0x4c790c){_0x5e2d62['type']=_0x4c790c['type'];}utils['request'](_0x2301('0xa'),_0x5e2d62);});}else{utils['request'](_0x2301('0xa'),_0x5e2d62);}if(_0x5e2d62[_0x2301('0xb')]){delete queues[_0x5e2d62[_0x2301('0xb')]];}else{delete queues[_0x5e2d62[_0x2301('0xc')]];}}exports[_0x2301('0xd')]=function(_0x11a615){try{utils[_0x2301('0xe')](util[_0x2301('0x4')]('[%s][queues][queuecallerjoin]',_0x11a615['uniqueid']),_0x11a615);utils[_0x2301('0x3')](util['format'](_0x2301('0xf'),_0x11a615[_0x2301('0xc')],_0x11a615[_0x2301('0x7')],_0x11a615[_0x2301('0x10')]));queues[_0x11a615['uniqueid']]=_[_0x2301('0x11')](_0x11a615,{'originalposition':_0x11a615[_0x2301('0x10')],'queuecallerjoinAt':utils[_0x2301('0x12')](),'mohtime':0x0});}catch(_0x41eeac){utils[_0x2301('0x13')](util[_0x2301('0x4')]('[%s][queues][queuecallerjoin]',_0x11a615[_0x2301('0xc')]),_0x41eeac);}};exports[_0x2301('0x14')]=function(_0x57d5b2){try{if(!_[_0x2301('0x15')](queues[_0x57d5b2[_0x2301('0xc')]])){utils[_0x2301('0xe')](util['format'](_0x2301('0x16'),_0x57d5b2[_0x2301('0xc')]),_0x57d5b2);if(queues[_0x57d5b2['uniqueid']][_0x2301('0x17')]){if(!queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x18')]&&!queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x19')]){queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x1a')]=!![];queues[_0x57d5b2['uniqueid']][_0x2301('0x1b')]=utils['now']();queues[_0x57d5b2['uniqueid']][_0x2301('0x1c')]=_0x2301('0x1d');}utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x1e'),_0x57d5b2[_0x2301('0xc')],queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x1f')],queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x1c')]));writeDB(queues[_0x57d5b2[_0x2301('0xc')]]);}else if(queues[_0x57d5b2[_0x2301('0xc')]]['transfereduniqueid']){utils[_0x2301('0x3')](util['format']('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x57d5b2[_0x2301('0xc')],queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0x1f')],queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0xb')]));queues[queues[_0x57d5b2[_0x2301('0xc')]][_0x2301('0xb')]]=queues[_0x57d5b2[_0x2301('0xc')]];queues[queues[_0x57d5b2['uniqueid']][_0x2301('0xb')]][_0x2301('0x20')]=0x2;delete queues[_0x57d5b2[_0x2301('0xc')]];}}}catch(_0x3b5c4a){utils[_0x2301('0x13')](util['format']('[%s][queues][hangup]',_0x57d5b2[_0x2301('0xc')]),_0x3b5c4a);}};exports['varset']=function(_0x5d2186){try{utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x21'),_0x5d2186[_0x2301('0xc')]),_0x5d2186);if(!_[_0x2301('0x15')](_0x5d2186[_0x2301('0x22')]['queuestatus'])&&_0x5d2186[_0x2301('0x23')]['toUpperCase']()!==_0x2301('0x24')){if(!_['isNil'](queues[_0x5d2186[_0x2301('0xc')]])){queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x18')]=![];queues[_0x5d2186[_0x2301('0xc')]]['queuecallerabandonAt']=null;queues[_0x5d2186[_0x2301('0xc')]]['queuecallerexit']=!![];queues[_0x5d2186['uniqueid']][_0x2301('0x25')]=utils[_0x2301('0x12')]();queues[_0x5d2186['uniqueid']][_0x2301('0x1c')]=_0x5d2186[_0x2301('0x23')]['toUpperCase']();utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x26'),_0x5d2186[_0x2301('0xc')],queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x1f')],_0x5d2186[_0x2301('0x23')],queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x1c')]));writeDB(queues[_0x5d2186['uniqueid']]);}}else if(!_['isNil'](_0x5d2186[_0x2301('0x22')][_0x2301('0x27')])){if(!_['isNil'](queues[_0x5d2186[_0x2301('0xc')]])&&!queues[_0x5d2186['uniqueid']][_0x2301('0x18')]){queues[_0x5d2186[_0x2301('0xc')]]['queuecallerabandon']=![];queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x28')]=null;queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x19')]=!![];queues[_0x5d2186['uniqueid']]['queuecallerexitAt']=utils['now']();queues[_0x5d2186[_0x2301('0xc')]]['queuecallerexitreason']='EXITWITHKEY';utils['info'](util['format'](_0x2301('0x29'),_0x5d2186[_0x2301('0xc')],queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x1f')],_0x5d2186[_0x2301('0x23')],queues[_0x5d2186[_0x2301('0xc')]][_0x2301('0x1c')]));}}}catch(_0x3cfed6){utils[_0x2301('0x13')](util[_0x2301('0x4')](_0x2301('0x21'),_0x5d2186[_0x2301('0xc')]),_0x3cfed6);}};exports['queuecallerabandon']=function(_0x456490){try{if(!_[_0x2301('0x15')](queues[_0x456490[_0x2301('0xc')]])){utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x2a'),_0x456490['uniqueid']),_0x456490);queues[_0x456490[_0x2301('0xc')]][_0x2301('0x19')]=![];queues[_0x456490[_0x2301('0xc')]][_0x2301('0x25')]=null;queues[_0x456490[_0x2301('0xc')]][_0x2301('0x18')]=!![];queues[_0x456490[_0x2301('0xc')]][_0x2301('0x28')]=utils[_0x2301('0x12')]();queues[_0x456490[_0x2301('0xc')]][_0x2301('0x1c')]=_0x2301('0x2b');utils[_0x2301('0x3')](util[_0x2301('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x456490['uniqueid'],queues[_0x456490[_0x2301('0xc')]][_0x2301('0x1f')],queues[_0x456490[_0x2301('0xc')]][_0x2301('0x1c')]));}}catch(_0x311de4){utils[_0x2301('0x13')](util['format']('[%s][queues][queuecallerabandon]',_0x456490[_0x2301('0xc')]),_0x311de4);}};exports[_0x2301('0x2c')]=function(_0x280251){try{if(!_[_0x2301('0x15')](queues[_0x280251[_0x2301('0xc')]])){utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x2d'),_0x280251['uniqueid']),_0x280251);utils[_0x2301('0x3')](util[_0x2301('0x4')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x280251[_0x2301('0xc')],queues[_0x280251[_0x2301('0xc')]][_0x2301('0x1f')],_0x280251['connectedlinenum'],_0x280251[_0x2301('0x2e')]));queues[_0x280251[_0x2301('0xc')]]['queuecallerleave']=!![];queues[_0x280251[_0x2301('0xc')]][_0x2301('0x17')]=utils[_0x2301('0x12')]();queues[_0x280251[_0x2301('0xc')]][_0x2301('0x2f')]=utils[_0x2301('0x30')](queues[_0x280251[_0x2301('0xc')]]['queuecallerleaveAt'],queues[_0x280251['uniqueid']][_0x2301('0x31')]);queues[_0x280251['uniqueid']]['position']=_0x280251[_0x2301('0x10')];queues[_0x280251[_0x2301('0xc')]][_0x2301('0x32')]=_0x280251[_0x2301('0x32')];queues[_0x280251[_0x2301('0xc')]]['connectedlinenum']=_0x280251['connectedlinenum'];queues[_0x280251[_0x2301('0xc')]]['connectedlinename']=_0x280251[_0x2301('0x2e')];}}catch(_0x4c6c0e){utils[_0x2301('0x13')](util[_0x2301('0x4')](_0x2301('0x2d'),_0x280251[_0x2301('0xc')]),_0x4c6c0e);}};exports[_0x2301('0x33')]=function(_0x1234eb){try{if(!_[_0x2301('0x15')](queues[_0x1234eb[_0x2301('0xc')]])){utils['debug'](util[_0x2301('0x4')](_0x2301('0x34'),_0x1234eb['uniqueid']),_0x1234eb);utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x35'),_0x1234eb[_0x2301('0xc')],queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x1f')],_0x1234eb[_0x2301('0x36')],_0x1234eb[_0x2301('0x37')]));queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x18')]=![];queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x18')]=![];queues[_0x1234eb[_0x2301('0xc')]]['queuecallerabandonAt']=null;queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x19')]=![];queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x1c')]=null;queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x25')]=null;queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x38')]=!![];queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x39')]=_0x1234eb['destaccountcode'];queues[_0x1234eb[_0x2301('0xc')]][_0x2301('0x3a')]=_0x1234eb[_0x2301('0x36')];}}catch(_0x1ba4c3){utils['error'](util[_0x2301('0x4')](_0x2301('0x34'),_0x1234eb[_0x2301('0xc')]),_0x1ba4c3);}};exports[_0x2301('0x3b')]=function(_0x2ae3c0){try{if(!_[_0x2301('0x15')](queues[_0x2ae3c0[_0x2301('0xc')]])){if(queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x17')]){utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x3c'),_0x2ae3c0[_0x2301('0xc')]),_0x2ae3c0);queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x18')]=![];queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x18')]=![];queues[_0x2ae3c0['uniqueid']][_0x2301('0x28')]=null;queues[_0x2ae3c0['uniqueid']][_0x2301('0x19')]=![];queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x25')]=null;queues[_0x2ae3c0['uniqueid']][_0x2301('0x38')]=!![];queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x3a')]=_0x2ae3c0[_0x2301('0x36')];queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x1a')]=!![];queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x1b')]=utils[_0x2301('0x12')]();if(_0x2ae3c0[_0x2301('0x3d')]==_0x2301('0x3e')){if(!queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x3e')]){queues[_0x2ae3c0['uniqueid']][_0x2301('0x1c')]=_0x2301('0x3f');}}else{queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x1c')]=_0x2301('0x40')+_0x2ae3c0[_0x2301('0x3d')][_0x2301('0x41')]();}utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x42'),_0x2ae3c0[_0x2301('0xc')],queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x1f')],_0x2ae3c0['membername'],queues[_0x2ae3c0[_0x2301('0xc')]][_0x2301('0x1c')]));writeDB(queues[_0x2ae3c0['uniqueid']]);}}}catch(_0x90d8fd){utils['error'](util[_0x2301('0x4')]('[%s][queues][agentcomplete]',_0x2ae3c0[_0x2301('0xc')]),_0x90d8fd);}};exports[_0x2301('0x43')]=function(_0x4cdd85){try{if(!_[_0x2301('0x15')](queues[_0x4cdd85[_0x2301('0x44')]])){utils[_0x2301('0xe')](util[_0x2301('0x4')]('[%s][queues][blindtransfer]',_0x4cdd85[_0x2301('0xc')]),_0x4cdd85);queues[_0x4cdd85[_0x2301('0x44')]][_0x2301('0x3e')]=!![];queues[_0x4cdd85[_0x2301('0x44')]][_0x2301('0x45')]='BLIND';queues[_0x4cdd85[_0x2301('0x44')]][_0x2301('0x46')]=_0x4cdd85['extension'];queues[_0x4cdd85[_0x2301('0x44')]][_0x2301('0x47')]=_0x4cdd85['transfereeuniqueid'];queues[_0x4cdd85[_0x2301('0x44')]][_0x2301('0x1c')]=_0x2301('0x48');utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x49'),_0x4cdd85[_0x2301('0xc')],queues[_0x4cdd85[_0x2301('0x44')]]['name'],_0x4cdd85['transfereeuniqueid'],_0x4cdd85[_0x2301('0x4a')]));}}catch(_0x13f01b){utils[_0x2301('0x13')](util[_0x2301('0x4')](_0x2301('0x4b'),_0x4cdd85[_0x2301('0xc')]),_0x13f01b);}};exports['attendedtransfer']=function(_0x33f280){try{utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x4c'),_0x33f280[_0x2301('0x4d')]),_0x33f280);if(_0x33f280[_0x2301('0x4d')]==_0x33f280['origtransfererlinkedid']){if(!_[_0x2301('0x15')](queues[_0x33f280[_0x2301('0x4e')]])){utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x4f'),_0x33f280[_0x2301('0x4d')],queues[_0x33f280[_0x2301('0x4e')]]['name'],_0x33f280['origtransfererexten']));queues[_0x33f280[_0x2301('0x4e')]][_0x2301('0x3e')]=!![];queues[_0x33f280['secondtransfererlinkedid']][_0x2301('0x45')]=_0x2301('0x50');queues[_0x33f280[_0x2301('0x4e')]]['transferexten']=_0x33f280['origtransfererexten'];queues[_0x33f280[_0x2301('0x4e')]][_0x2301('0x47')]=_0x33f280[_0x2301('0x4d')];queues[_0x33f280['secondtransfererlinkedid']]['queuecallerexitreason']=_0x2301('0x51');}if(!_[_0x2301('0x15')](queues[_0x33f280[_0x2301('0x52')]])){if(_0x33f280[_0x2301('0x53')]&&queues[_0x33f280[_0x2301('0x53')]]){queues[_0x33f280[_0x2301('0x53')]]['queuecallerenterreason']=0x1;queues[_0x33f280[_0x2301('0x44')]]=_[_0x2301('0x54')](queues[_0x33f280[_0x2301('0x53')]]);queues[_0x33f280['transfereeuniqueid']][_0x2301('0xb')]=_0x33f280[_0x2301('0x55')];queues[_0x33f280['transfereeuniqueid']][_0x2301('0x20')]=0x2;queues[_0x33f280[_0x2301('0x44')]][_0x2301('0x8')]=queues[_0x33f280[_0x2301('0x4e')]]['calleridnum'];queues[_0x33f280['transfereeuniqueid']]['calleridname']=queues[_0x33f280[_0x2301('0x4e')]][_0x2301('0x56')];queues[_0x33f280[_0x2301('0x44')]][_0x2301('0x31')]=utils['now']();queues[_0x33f280[_0x2301('0x44')]]['queuecallerleaveAt']=utils[_0x2301('0x12')]();queues[_0x33f280[_0x2301('0x44')]][_0x2301('0x2f')]=0x0;queues[_0x33f280['transfereeuniqueid']][_0x2301('0x57')]=0x0;utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x58'),_0x33f280['origtransfereruniqueid'],queues[_0x33f280[_0x2301('0x44')]][_0x2301('0x1f')],queues[_0x33f280['transfereeuniqueid']][_0x2301('0x8')],queues[_0x33f280['transfereeuniqueid']][_0x2301('0x56')]));}else{utils['info'](util['format'](_0x2301('0x59'),_0x33f280[_0x2301('0x4d')],queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x1f')],_0x33f280[_0x2301('0x4e')]));queues[_0x33f280[_0x2301('0x52')]][_0x2301('0xb')]=_0x33f280[_0x2301('0x4e')];}}}else if(_0x33f280[_0x2301('0x5a')]==_0x33f280['secondtransfererlinkedid']){if(!_[_0x2301('0x15')](queues[_0x33f280[_0x2301('0x52')]])){utils[_0x2301('0x3')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x33f280[_0x2301('0x4d')],queues[_0x33f280['origtransfererlinkedid']][_0x2301('0x1f')],_0x33f280[_0x2301('0x5a')],_0x33f280[_0x2301('0x5b')]));queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x3e')]=!![];queues[_0x33f280[_0x2301('0x52')]]['transfertype']='ATTENDED';queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x46')]=_0x33f280[_0x2301('0x5b')];queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x47')]=_0x33f280['secondtransfereruniqueid'];queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x1c')]=_0x2301('0x51');}if(!_[_0x2301('0x15')](queues[_0x33f280[_0x2301('0x4e')]])){if(_0x33f280[_0x2301('0x5c')]&&queues[_0x33f280[_0x2301('0x5c')]]){queues[_0x33f280[_0x2301('0x5c')]]['queuecallerenterreason']=0x1;queues[_0x33f280[_0x2301('0x55')]]=_[_0x2301('0x54')](queues[_0x33f280['transfertargetlinkedid']]);queues[_0x33f280[_0x2301('0x55')]][_0x2301('0xb')]=_0x33f280[_0x2301('0x55')];queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x20')]=0x2;queues[_0x33f280['transfertargetuniqueid']][_0x2301('0x8')]=queues[_0x33f280['origtransfererlinkedid']][_0x2301('0x8')];queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x56')]=queues[_0x33f280[_0x2301('0x52')]][_0x2301('0x56')];queues[_0x33f280[_0x2301('0x55')]]['queuecallerjoinAt']=utils[_0x2301('0x12')]();queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x17')]=utils[_0x2301('0x12')]();queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x2f')]=0x0;queues[_0x33f280[_0x2301('0x55')]]['mohtime']=0x0;utils[_0x2301('0x3')](util['format'](_0x2301('0x5d'),_0x33f280[_0x2301('0x4d')],queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x1f')],queues[_0x33f280[_0x2301('0x55')]][_0x2301('0xb')],queues[_0x33f280[_0x2301('0x55')]][_0x2301('0x8')],queues[_0x33f280['transfertargetuniqueid']][_0x2301('0x56')]));}else{utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x59'),_0x33f280[_0x2301('0x4d')],queues[_0x33f280[_0x2301('0x4e')]]['name'],_0x33f280[_0x2301('0x52')]));queues[_0x33f280[_0x2301('0x4e')]][_0x2301('0xb')]=_0x33f280[_0x2301('0x52')];}}}}catch(_0x1c0dc3){utils[_0x2301('0x13')](util[_0x2301('0x4')](_0x2301('0x4c'),_0x33f280[_0x2301('0x4d')]),_0x1c0dc3);}};exports[_0x2301('0x5e')]=function(_0x4f7b7c){try{if(!_['isNil'](queues[_0x4f7b7c[_0x2301('0xc')]])){utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x5f'),_0x4f7b7c['uniqueid']),_0x4f7b7c);queues[_0x4f7b7c[_0x2301('0xc')]]['musiconholdstartAt']=utils[_0x2301('0x12')]();utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x60'),_0x4f7b7c[_0x2301('0xc')],queues[_0x4f7b7c[_0x2301('0xc')]][_0x2301('0x1f')],queues[_0x4f7b7c[_0x2301('0xc')]]['musiconholdstartAt']));}}catch(_0x442102){utils['error'](util[_0x2301('0x4')](_0x2301('0x5f'),_0x4f7b7c['uniqueid']),_0x442102);}};exports[_0x2301('0x61')]=function(_0x2a453a){try{if(!_[_0x2301('0x15')](queues[_0x2a453a[_0x2301('0xc')]])){if(!_[_0x2301('0x15')](queues[_0x2a453a['uniqueid']][_0x2301('0x62')])){utils[_0x2301('0xe')](util[_0x2301('0x4')](_0x2301('0x63'),_0x2a453a[_0x2301('0xc')]),_0x2a453a);queues[_0x2a453a[_0x2301('0xc')]][_0x2301('0x57')]+=utils[_0x2301('0x30')](utils[_0x2301('0x12')](),queues[_0x2a453a['uniqueid']][_0x2301('0x62')]);utils[_0x2301('0x3')](util[_0x2301('0x4')](_0x2301('0x64'),_0x2a453a[_0x2301('0xc')],queues[_0x2a453a[_0x2301('0xc')]]['name'],queues[_0x2a453a[_0x2301('0xc')]][_0x2301('0x57')]));delete queues[_0x2a453a[_0x2301('0xc')]][_0x2301('0x62')];}}}catch(_0x1b36cc){utils[_0x2301('0x13')](util[_0x2301('0x4')](_0x2301('0x63'),_0x2a453a[_0x2301('0xc')]),_0x1b36cc);}};
\ No newline at end of file
index 1dd35e1..1d1307b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58cc=['[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','monitors','push','hangup','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','getUserByInternal','accountcode','then','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','linkedid','context','channel','error','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer'];(function(_0x56c515,_0x22c67c){var _0x3bb524=function(_0x14c3c2){while(--_0x14c3c2){_0x56c515['push'](_0x56c515['shift']());}};_0x3bb524(++_0x22c67c);}(_0x58cc,0x72));var _0xc58c=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x58cc[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require('lodash');var util=require(_0xc58c('0x0'));var utils=require(_0xc58c('0x1'));var transfers=require(_0xc58c('0x2'));var recordings={};function writeDB(_0x531f56){var _0x28cfc7;utils[_0xc58c('0x3')](util[_0xc58c('0x4')](_0xc58c('0x5'),_0x531f56[_0xc58c('0x6')]));if(transfers['blinds'][_0x531f56[_0xc58c('0x6')]]){_0x28cfc7=_0x531f56[_0xc58c('0x6')];_0x531f56[_0xc58c('0x6')]=transfers[_0xc58c('0x7')][_0x531f56[_0xc58c('0x6')]][_0xc58c('0x8')];}if(_0x531f56['accountcode']){utils[_0xc58c('0x9')](_0x531f56[_0xc58c('0xa')])[_0xc58c('0xb')](function(_0x44c7d9){if(_0x44c7d9){_0x531f56[_0xc58c('0xc')]=_0x44c7d9[_0xc58c('0xd')];_0x531f56[_0xc58c('0xe')]=_0x44c7d9['id'];}utils['request'](_0xc58c('0xf'),_0x531f56);});}else{utils[_0xc58c('0x10')](_0xc58c('0xf'),_0x531f56);}if(_0x28cfc7)delete transfers['blinds'][_0x28cfc7];}exports[_0xc58c('0x11')]=function(_0x16b3f2){try{utils[_0xc58c('0x12')](util[_0xc58c('0x4')](_0xc58c('0x13'),_0x16b3f2[_0xc58c('0x6')]),_0x16b3f2);if(_0x16b3f2['uniqueid']==_0x16b3f2[_0xc58c('0x14')]){utils[_0xc58c('0x3')](util[_0xc58c('0x4')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x16b3f2['uniqueid'],_0x16b3f2[_0xc58c('0x15')],_0x16b3f2['exten']));recordings[_0x16b3f2[_0xc58c('0x6')]]={'uniqueid':_0x16b3f2[_0xc58c('0x6')],'accountcode':_0x16b3f2['accountcode'],'exten':_0x16b3f2['exten'],'context':_0x16b3f2[_0xc58c('0x15')],'channel':_0x16b3f2[_0xc58c('0x16')],'monitors':[]};}}catch(_0x33dec9){utils[_0xc58c('0x17')](util[_0xc58c('0x4')](_0xc58c('0x13'),_0x16b3f2[_0xc58c('0x6')]),_0x33dec9);}};exports['newstate']=function(_0x48b1a4){try{utils[_0xc58c('0x12')](util[_0xc58c('0x4')](_0xc58c('0x18'),_0x48b1a4[_0xc58c('0x6')]),_0x48b1a4);if(!_[_0xc58c('0x19')](recordings[_0x48b1a4[_0xc58c('0x6')]])&&_0x48b1a4['channelstate']==0x6){utils[_0xc58c('0x3')](util[_0xc58c('0x4')](_0xc58c('0x1a'),_0x48b1a4[_0xc58c('0x6')],_0x48b1a4[_0xc58c('0x15')],_0x48b1a4[_0xc58c('0x16')]));}else if(!_[_0xc58c('0x19')](recordings[_0x48b1a4[_0xc58c('0x14')]])&&_0x48b1a4['channelstate']==0x6&&_0x48b1a4['context']!=_0xc58c('0x1b')){utils[_0xc58c('0x3')](util['format'](_0xc58c('0x1c'),_0x48b1a4[_0xc58c('0x6')],_0x48b1a4[_0xc58c('0x14')],_0x48b1a4[_0xc58c('0x15')],_0x48b1a4['channel']));recordings[_0x48b1a4['linkedid']]['accountcode']=_0x48b1a4[_0xc58c('0xa')];}}catch(_0x4852b5){utils[_0xc58c('0x17')](util[_0xc58c('0x4')]('[%s][recordings][newstate]',_0x48b1a4[_0xc58c('0x6')]),_0x4852b5);}};exports[_0xc58c('0x1d')]=function(_0x36e215){try{if(!_['isNil'](_0x36e215[_0xc58c('0x1e')])&&!_[_0xc58c('0x19')](_0x36e215[_0xc58c('0x1e')][_0xc58c('0x1f')])){utils[_0xc58c('0x12')](util[_0xc58c('0x4')](_0xc58c('0x20'),_0x36e215[_0xc58c('0x6')]),_0x36e215);utils[_0xc58c('0x3')](util[_0xc58c('0x4')](_0xc58c('0x21'),_0x36e215[_0xc58c('0x6')],_0x36e215['variable'],_0x36e215[_0xc58c('0x22')]));if(_[_0xc58c('0x23')](_0x36e215['value'],_0xc58c('0x24'))){_0x36e215[_0xc58c('0x22')]=_0x36e215[_0xc58c('0x22')][_0xc58c('0x25')](_0xc58c('0x24'),_0xc58c('0x26'));}if(recordings[_0x36e215[_0xc58c('0x14')]]){var _0x478679=_['find'](recordings[_0x36e215[_0xc58c('0x14')]][_0xc58c('0x27')],{'value':_0x36e215['value']});if(_['isNil'](_0x478679)){recordings[_0x36e215[_0xc58c('0x14')]][_0xc58c('0x27')][_0xc58c('0x28')]({'value':_0x36e215[_0xc58c('0x22')]});}}}}catch(_0x111367){utils[_0xc58c('0x17')](util['format'](_0xc58c('0x20'),_0x36e215[_0xc58c('0x6')]),_0x111367);}};exports[_0xc58c('0x29')]=function(_0x5740ac){try{if(!_[_0xc58c('0x19')](recordings[_0x5740ac['uniqueid']])){utils[_0xc58c('0x12')](util[_0xc58c('0x4')]('[%s][recordings][hangup]',_0x5740ac[_0xc58c('0x6')]),_0x5740ac);utils[_0xc58c('0x3')](util[_0xc58c('0x4')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x5740ac[_0xc58c('0x6')],_0x5740ac[_0xc58c('0x2a')],_0x5740ac['calleridname'],_0x5740ac['cause-txt']));recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0x2a')]=_0x5740ac[_0xc58c('0x2a')];recordings[_0x5740ac[_0xc58c('0x6')]]['calleridname']=_0x5740ac[_0xc58c('0x2b')];recordings[_0x5740ac['uniqueid']][_0xc58c('0x2c')]=_0x5740ac[_0xc58c('0x2c')];recordings[_0x5740ac['uniqueid']][_0xc58c('0x2d')]=_0x5740ac[_0xc58c('0x2d')];if(recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0x2e')]==_0xc58c('0x2f')&&recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0xa')]){recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0x2c')]=recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0xa')];recordings[_0x5740ac['uniqueid']][_0xc58c('0x2d')]='';}recordings[_0x5740ac[_0xc58c('0x6')]][_0xc58c('0x27')]['forEach'](function(_0x10807f){var _0x10a809=_['clone'](recordings[_0x5740ac[_0xc58c('0x6')]]);_0x10a809[_0xc58c('0x22')]=_0x10807f[_0xc58c('0x22')];writeDB(_0x10a809);});delete recordings[_0x5740ac[_0xc58c('0x6')]];}}catch(_0x44aa5c){utils[_0xc58c('0x17')](util['format'](_0xc58c('0x30'),_0x5740ac[_0xc58c('0x6')]),_0x44aa5c);}};exports[_0xc58c('0x31')]=function(_0x2fe683){try{if(!_[_0xc58c('0x19')](recordings[_0x2fe683[_0xc58c('0x6')]])){utils[_0xc58c('0x12')](util[_0xc58c('0x4')](_0xc58c('0x32'),_0x2fe683[_0xc58c('0x6')]),_0x2fe683);utils[_0xc58c('0x3')](util[_0xc58c('0x4')](_0xc58c('0x33'),_0x2fe683['uniqueid'],_0x2fe683[_0xc58c('0x34')],_0x2fe683[_0xc58c('0x35')]));if(_0x2fe683[_0xc58c('0x34')][_0xc58c('0x36')]()=='set'&&_['startsWith'](_0x2fe683[_0xc58c('0x35')][_0xc58c('0x36')](),_0xc58c('0x37'))){var _0x487ad9=_0x2fe683[_0xc58c('0x35')][_0xc58c('0x38')]('=');var _0x559748=_0x487ad9[0x0]['substring'](_0x487ad9[0x0][_0xc58c('0x39')]('(')+0x1,_0x487ad9[0x0][_0xc58c('0x39')](')'));var _0x41c516=_0x487ad9[0x1];recordings[_0x2fe683[_0xc58c('0x6')]][_0x559748]=_0x41c516;}}}catch(_0x287fd8){utils[_0xc58c('0x17')](util['format'](_0xc58c('0x32'),_0x2fe683[_0xc58c('0x6')]),_0x287fd8);}};exports[_0xc58c('0x3a')]=function(_0x509acf){try{if(!_['isNil'](recordings[_0x509acf[_0xc58c('0x6')]])){utils[_0xc58c('0x12')](util['format'](_0xc58c('0x3b'),_0x509acf['uniqueid']),_0x509acf);utils['info'](util['format'](_0xc58c('0x3c'),_0x509acf['uniqueid'],_0x509acf['queue']));recordings[_0x509acf[_0xc58c('0x6')]][_0xc58c('0x3d')]=_0x509acf['queue'];}}catch(_0x42596c){utils[_0xc58c('0x17')](util[_0xc58c('0x4')](_0xc58c('0x3b'),_0x509acf[_0xc58c('0x6')]),_0x42596c);}};exports[_0xc58c('0x3e')]=function(_0x5d6573){try{utils['debug'](util[_0xc58c('0x4')](_0xc58c('0x3f'),_0x5d6573['uniqueid']),_0x5d6573);utils[_0xc58c('0x3')](util[_0xc58c('0x4')](_0xc58c('0x40'),_0x5d6573[_0xc58c('0x6')],_0x5d6573[_0xc58c('0x41')],_0x5d6573[_0xc58c('0x42')],_0x5d6573[_0xc58c('0x43')],_0x5d6573[_0xc58c('0x44')]));if(recordings[_0x5d6573[_0xc58c('0x45')]]&&transfers[_0xc58c('0x7')][_0x5d6573['transfereruniqueid']]){transfers[_0xc58c('0x7')][_0x5d6573['transfereruniqueid']][_0xc58c('0x46')]=!![];}}catch(_0x35cd3b){utils['error'](util[_0xc58c('0x4')]('[%s][recordings][blindtransfer]',_0x5d6573[_0xc58c('0x6')]),_0x35cd3b);}};
\ No newline at end of file
+var _0xfd3a=['newstate','debug','[%s][recordings][newstate]','isNil','channelstate','context','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','variable','value','endsWith','.wav49','replace','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','appdata','application','startsWith','toLowerCase','cdr','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','lodash','./utils','./transfers.controller','info','format','uniqueid','blinds','transfereeuniqueid','getUserByInternal','accountcode','name','request','CreateVoiceRecording','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','channel','error'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xfd3a,0xc5));var _0xafd3=function(_0x3f2d57,_0x37b28e){_0x3f2d57=_0x3f2d57-0x0;var _0x20817e=_0xfd3a[_0x3f2d57];return _0x20817e;};'use strict';var _=require(_0xafd3('0x0'));var util=require('util');var utils=require(_0xafd3('0x1'));var transfers=require(_0xafd3('0x2'));var recordings={};function writeDB(_0x2a33c5){var _0x541c27;utils[_0xafd3('0x3')](util[_0xafd3('0x4')]('[%s][recordings][writeDB]',_0x2a33c5[_0xafd3('0x5')]));if(transfers[_0xafd3('0x6')][_0x2a33c5[_0xafd3('0x5')]]){_0x541c27=_0x2a33c5[_0xafd3('0x5')];_0x2a33c5[_0xafd3('0x5')]=transfers[_0xafd3('0x6')][_0x2a33c5[_0xafd3('0x5')]][_0xafd3('0x7')];}if(_0x2a33c5['accountcode']){utils[_0xafd3('0x8')](_0x2a33c5[_0xafd3('0x9')])['then'](function(_0x42b7e8){if(_0x42b7e8){_0x2a33c5['membername']=_0x42b7e8[_0xafd3('0xa')];_0x2a33c5['UserId']=_0x42b7e8['id'];}utils[_0xafd3('0xb')](_0xafd3('0xc'),_0x2a33c5);});}else{utils['request'](_0xafd3('0xc'),_0x2a33c5);}if(_0x541c27)delete transfers[_0xafd3('0x6')][_0x541c27];}exports['newchannel']=function(_0x3337ea){try{utils['debug'](util['format'](_0xafd3('0xd'),_0x3337ea[_0xafd3('0x5')]),_0x3337ea);if(_0x3337ea['uniqueid']==_0x3337ea[_0xafd3('0xe')]){utils[_0xafd3('0x3')](util[_0xafd3('0x4')](_0xafd3('0xf'),_0x3337ea['uniqueid'],_0x3337ea['context'],_0x3337ea[_0xafd3('0x10')]));recordings[_0x3337ea[_0xafd3('0x5')]]={'uniqueid':_0x3337ea[_0xafd3('0x5')],'accountcode':_0x3337ea[_0xafd3('0x9')],'exten':_0x3337ea[_0xafd3('0x10')],'context':_0x3337ea['context'],'channel':_0x3337ea[_0xafd3('0x11')],'monitors':[]};}}catch(_0x3647d7){utils[_0xafd3('0x12')](util[_0xafd3('0x4')](_0xafd3('0xd'),_0x3337ea[_0xafd3('0x5')]),_0x3647d7);}};exports[_0xafd3('0x13')]=function(_0x1fb0d0){try{utils[_0xafd3('0x14')](util[_0xafd3('0x4')](_0xafd3('0x15'),_0x1fb0d0[_0xafd3('0x5')]),_0x1fb0d0);if(!_[_0xafd3('0x16')](recordings[_0x1fb0d0[_0xafd3('0x5')]])&&_0x1fb0d0[_0xafd3('0x17')]==0x6){utils['info'](util[_0xafd3('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x1fb0d0['uniqueid'],_0x1fb0d0[_0xafd3('0x18')],_0x1fb0d0[_0xafd3('0x11')]));}else if(!_[_0xafd3('0x16')](recordings[_0x1fb0d0['linkedid']])&&_0x1fb0d0['channelstate']==0x6&&_0x1fb0d0[_0xafd3('0x18')]!=_0xafd3('0x19')){utils['info'](util[_0xafd3('0x4')](_0xafd3('0x1a'),_0x1fb0d0[_0xafd3('0x5')],_0x1fb0d0[_0xafd3('0xe')],_0x1fb0d0[_0xafd3('0x18')],_0x1fb0d0['channel']));recordings[_0x1fb0d0[_0xafd3('0xe')]][_0xafd3('0x9')]=_0x1fb0d0[_0xafd3('0x9')];}}catch(_0x5411a1){utils[_0xafd3('0x12')](util[_0xafd3('0x4')](_0xafd3('0x15'),_0x1fb0d0[_0xafd3('0x5')]),_0x5411a1);}};exports[_0xafd3('0x1b')]=function(_0x36b603){try{if(!_[_0xafd3('0x16')](_0x36b603['variable'])&&!_[_0xafd3('0x16')](_0x36b603['variable']['mixmonitor_filename'])){utils['debug'](util[_0xafd3('0x4')](_0xafd3('0x1c'),_0x36b603[_0xafd3('0x5')]),_0x36b603);utils['info'](util[_0xafd3('0x4')](_0xafd3('0x1d'),_0x36b603[_0xafd3('0x5')],_0x36b603[_0xafd3('0x1e')],_0x36b603[_0xafd3('0x1f')]));if(_[_0xafd3('0x20')](_0x36b603[_0xafd3('0x1f')],_0xafd3('0x21'))){_0x36b603[_0xafd3('0x1f')]=_0x36b603[_0xafd3('0x1f')][_0xafd3('0x22')](_0xafd3('0x21'),'.WAV');}if(recordings[_0x36b603[_0xafd3('0xe')]]){var _0x3924a9=_[_0xafd3('0x23')](recordings[_0x36b603[_0xafd3('0xe')]][_0xafd3('0x24')],{'value':_0x36b603[_0xafd3('0x1f')]});if(_[_0xafd3('0x16')](_0x3924a9)){recordings[_0x36b603[_0xafd3('0xe')]][_0xafd3('0x24')][_0xafd3('0x25')]({'value':_0x36b603[_0xafd3('0x1f')]});}}}}catch(_0x33258a){utils[_0xafd3('0x12')](util[_0xafd3('0x4')](_0xafd3('0x1c'),_0x36b603['uniqueid']),_0x33258a);}};exports[_0xafd3('0x26')]=function(_0x44b54a){try{if(!_['isNil'](recordings[_0x44b54a[_0xafd3('0x5')]])){utils['debug'](util['format'](_0xafd3('0x27'),_0x44b54a[_0xafd3('0x5')]),_0x44b54a);utils[_0xafd3('0x3')](util[_0xafd3('0x4')](_0xafd3('0x28'),_0x44b54a[_0xafd3('0x5')],_0x44b54a[_0xafd3('0x29')],_0x44b54a[_0xafd3('0x2a')],_0x44b54a[_0xafd3('0x2b')]));recordings[_0x44b54a['uniqueid']]['calleridnum']=_0x44b54a[_0xafd3('0x29')];recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x2a')]=_0x44b54a[_0xafd3('0x2a')];recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x2c')]=_0x44b54a['connectedlinenum'];recordings[_0x44b54a[_0xafd3('0x5')]]['connectedlinename']=_0x44b54a[_0xafd3('0x2d')];if(recordings[_0x44b54a['uniqueid']][_0xafd3('0x2e')]==_0xafd3('0x2f')&&recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x9')]){recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x2c')]=recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x9')];recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x2d')]='';}recordings[_0x44b54a[_0xafd3('0x5')]][_0xafd3('0x24')][_0xafd3('0x30')](function(_0x41a5d1){var _0x57dc59=_[_0xafd3('0x31')](recordings[_0x44b54a['uniqueid']]);_0x57dc59['value']=_0x41a5d1['value'];writeDB(_0x57dc59);});delete recordings[_0x44b54a['uniqueid']];}}catch(_0x48366e){utils[_0xafd3('0x12')](util[_0xafd3('0x4')](_0xafd3('0x27'),_0x44b54a[_0xafd3('0x5')]),_0x48366e);}};exports[_0xafd3('0x32')]=function(_0x4a2941){try{if(!_['isNil'](recordings[_0x4a2941['uniqueid']])){utils['debug'](util['format'](_0xafd3('0x33'),_0x4a2941[_0xafd3('0x5')]),_0x4a2941);utils['info'](util[_0xafd3('0x4')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x4a2941[_0xafd3('0x5')],_0x4a2941['application'],_0x4a2941[_0xafd3('0x34')]));if(_0x4a2941[_0xafd3('0x35')]['toLowerCase']()=='set'&&_[_0xafd3('0x36')](_0x4a2941[_0xafd3('0x34')][_0xafd3('0x37')](),_0xafd3('0x38'))){var _0x32f7a0=_0x4a2941['appdata']['split']('=');var _0xc586cd=_0x32f7a0[0x0][_0xafd3('0x39')](_0x32f7a0[0x0][_0xafd3('0x3a')]('(')+0x1,_0x32f7a0[0x0][_0xafd3('0x3a')](')'));var _0xec9fd0=_0x32f7a0[0x1];recordings[_0x4a2941[_0xafd3('0x5')]][_0xc586cd]=_0xec9fd0;}}}catch(_0x57fd2d){utils['error'](util['format'](_0xafd3('0x33'),_0x4a2941[_0xafd3('0x5')]),_0x57fd2d);}};exports[_0xafd3('0x3b')]=function(_0x30dabe){try{if(!_[_0xafd3('0x16')](recordings[_0x30dabe[_0xafd3('0x5')]])){utils[_0xafd3('0x14')](util['format'](_0xafd3('0x3c'),_0x30dabe[_0xafd3('0x5')]),_0x30dabe);utils['info'](util[_0xafd3('0x4')](_0xafd3('0x3d'),_0x30dabe[_0xafd3('0x5')],_0x30dabe[_0xafd3('0x3e')]));recordings[_0x30dabe['uniqueid']][_0xafd3('0x3e')]=_0x30dabe[_0xafd3('0x3e')];}}catch(_0x5cb4b9){utils[_0xafd3('0x12')](util['format'](_0xafd3('0x3c'),_0x30dabe[_0xafd3('0x5')]),_0x5cb4b9);}};exports[_0xafd3('0x3f')]=function(_0x18ca97){try{utils[_0xafd3('0x14')](util[_0xafd3('0x4')](_0xafd3('0x40'),_0x18ca97[_0xafd3('0x5')]),_0x18ca97);utils[_0xafd3('0x3')](util[_0xafd3('0x4')](_0xafd3('0x41'),_0x18ca97[_0xafd3('0x5')],_0x18ca97[_0xafd3('0x42')],_0x18ca97[_0xafd3('0x43')],_0x18ca97[_0xafd3('0x44')],_0x18ca97[_0xafd3('0x45')]));if(recordings[_0x18ca97[_0xafd3('0x46')]]&&transfers['blinds'][_0x18ca97['transfereruniqueid']]){transfers[_0xafd3('0x6')][_0x18ca97[_0xafd3('0x46')]][_0xafd3('0x47')]=!![];}}catch(_0x124565){utils['error'](util[_0xafd3('0x4')]('[%s][recordings][blindtransfer]',_0x18ca97[_0xafd3('0x5')]),_0x124565);}};
\ No newline at end of file
index 1a208a7..3ccebce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8a=['origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel','transfertargetaccountcode','transfertargetlinkedid','error','lodash','info','format','[%s][transfers][writeDB]\x20type:%s','type','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridname','blind','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransfereruniqueid','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename'];(function(_0x3e7234,_0x4bbe77){var _0xb3e053=function(_0x2e0bf8){while(--_0x2e0bf8){_0x3e7234['push'](_0x3e7234['shift']());}};_0xb3e053(++_0x4bbe77);}(_0x6e8a,0x124));var _0xa6e8=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x6e8a[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0xa6e8('0x0'));var util=require('util');var utils=require('./utils');function writeDB(_0x27bd73){utils[_0xa6e8('0x1')](util[_0xa6e8('0x2')](_0xa6e8('0x3'),_0x27bd73[_0xa6e8('0x4')]==='attended'?_0x27bd73['origtransfereruniqueid']:_0x27bd73[_0xa6e8('0x5')],_0x27bd73[_0xa6e8('0x4')]));utils[_0xa6e8('0x6')](_0xa6e8('0x7'),_0x27bd73);}exports[_0xa6e8('0x8')]={};exports[_0xa6e8('0x9')]=function(_0x7acaf4){try{utils['debug'](util[_0xa6e8('0x2')](_0xa6e8('0xa'),_0x7acaf4[_0xa6e8('0x5')]),_0x7acaf4);utils[_0xa6e8('0x1')](util[_0xa6e8('0x2')](_0xa6e8('0xb'),_0x7acaf4[_0xa6e8('0x5')],_0x7acaf4[_0xa6e8('0xc')],_0x7acaf4[_0xa6e8('0xd')],_0x7acaf4['transfereecalleridnum'],_0x7acaf4[_0xa6e8('0xe')]));_0x7acaf4[_0xa6e8('0x4')]=_0xa6e8('0xf');exports['blinds'][_0x7acaf4['transfereruniqueid']]=_0x7acaf4;writeDB(_0x7acaf4);}catch(_0xcfc55b){utils['error'](util['format'](_0xa6e8('0xa'),_0x7acaf4[_0xa6e8('0x5')]),_0xcfc55b);}};exports[_0xa6e8('0x10')]=function(_0x4332f5){try{utils[_0xa6e8('0x11')](util[_0xa6e8('0x2')](_0xa6e8('0x12'),_0x4332f5[_0xa6e8('0x13')]),_0x4332f5);utils[_0xa6e8('0x1')](util[_0xa6e8('0x2')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x4332f5[_0xa6e8('0x13')],_0x4332f5['origtransferercalleridnum'],_0x4332f5['origtransferercalleridname'],_0x4332f5[_0xa6e8('0x14')],_0x4332f5[_0xa6e8('0x15')]));_0x4332f5=_[_0xa6e8('0x16')](_0x4332f5,{'transfererchannel':_0x4332f5[_0xa6e8('0x17')],'transferercalleridnum':_0x4332f5[_0xa6e8('0x18')],'transferercalleridname':_0x4332f5[_0xa6e8('0x19')],'transfererconnectedlinenum':_0x4332f5[_0xa6e8('0x1a')],'transfererconnectedlinename':_0x4332f5[_0xa6e8('0x1b')],'transfereraccountcode':_0x4332f5[_0xa6e8('0x1c')],'transferercontext':_0x4332f5[_0xa6e8('0x1d')],'transfererexten':_0x4332f5[_0xa6e8('0x1e')],'transfererlinkedid':_0x4332f5[_0xa6e8('0x1f')],'context':_0x4332f5[_0xa6e8('0x20')],'extension':_0x4332f5[_0xa6e8('0x21')],'type':_0xa6e8('0x22')});if(_[_0xa6e8('0x23')](_0x4332f5[_0xa6e8('0x24')])){_0x4332f5=_[_0xa6e8('0x16')](_0x4332f5,{'transfereechannel':_0x4332f5['transfertargetchannel'],'transfereecalleridnum':_0x4332f5[_0xa6e8('0x14')],'transfereecalleridname':_0x4332f5[_0xa6e8('0x15')],'transfereeconnectedlinenum':_0x4332f5['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x4332f5['transfertargetconnectedlinename'],'transfereeaccountcode':_0x4332f5[_0xa6e8('0x25')],'transfereecontext':_0x4332f5['transfertargetcontext'],'transfereeexten':_0x4332f5['transfertargetexten'],'transfereelinkedid':_0x4332f5[_0xa6e8('0x26')]});}writeDB(_0x4332f5);}catch(_0x3e3019){utils[_0xa6e8('0x27')](util[_0xa6e8('0x2')](_0xa6e8('0x12'),_0x4332f5[_0xa6e8('0x13')]),_0x3e3019);}};
\ No newline at end of file
+var _0xfe99=['isNil','assign','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetlinkedid','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','request','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransferercontext'];(function(_0x5646b4,_0x25b1f7){var _0x1e41b5=function(_0x27df0c){while(--_0x27df0c){_0x5646b4['push'](_0x5646b4['shift']());}};_0x1e41b5(++_0x25b1f7);}(_0xfe99,0x140));var _0x9fe9=function(_0x5ec7d6,_0x1c7caa){_0x5ec7d6=_0x5ec7d6-0x0;var _0x45d093=_0xfe99[_0x5ec7d6];return _0x45d093;};'use strict';var _=require(_0x9fe9('0x0'));var util=require(_0x9fe9('0x1'));var utils=require('./utils');function writeDB(_0x110600){utils[_0x9fe9('0x2')](util[_0x9fe9('0x3')](_0x9fe9('0x4'),_0x110600[_0x9fe9('0x5')]===_0x9fe9('0x6')?_0x110600[_0x9fe9('0x7')]:_0x110600[_0x9fe9('0x8')],_0x110600[_0x9fe9('0x5')]));utils[_0x9fe9('0x9')]('CreateVoiceTransferReport',_0x110600);}exports['blinds']={};exports['blindtransfer']=function(_0x453c05){try{utils['debug'](util[_0x9fe9('0x3')](_0x9fe9('0xa'),_0x453c05['uniqueid']),_0x453c05);utils[_0x9fe9('0x2')](util[_0x9fe9('0x3')](_0x9fe9('0xb'),_0x453c05[_0x9fe9('0x8')],_0x453c05[_0x9fe9('0xc')],_0x453c05[_0x9fe9('0xd')],_0x453c05[_0x9fe9('0xe')],_0x453c05[_0x9fe9('0xf')]));_0x453c05[_0x9fe9('0x5')]=_0x9fe9('0x10');exports['blinds'][_0x453c05[_0x9fe9('0x11')]]=_0x453c05;writeDB(_0x453c05);}catch(_0x12b868){utils['error'](util[_0x9fe9('0x3')](_0x9fe9('0xa'),_0x453c05[_0x9fe9('0x8')]),_0x12b868);}};exports[_0x9fe9('0x12')]=function(_0x42081c){try{utils[_0x9fe9('0x13')](util[_0x9fe9('0x3')](_0x9fe9('0x14'),_0x42081c[_0x9fe9('0x7')]),_0x42081c);utils['info'](util[_0x9fe9('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x42081c[_0x9fe9('0x7')],_0x42081c[_0x9fe9('0x15')],_0x42081c[_0x9fe9('0x16')],_0x42081c[_0x9fe9('0x17')],_0x42081c['transfertargetcalleridname']));_0x42081c=_['assign'](_0x42081c,{'transfererchannel':_0x42081c[_0x9fe9('0x18')],'transferercalleridnum':_0x42081c[_0x9fe9('0x15')],'transferercalleridname':_0x42081c[_0x9fe9('0x16')],'transfererconnectedlinenum':_0x42081c[_0x9fe9('0x19')],'transfererconnectedlinename':_0x42081c[_0x9fe9('0x1a')],'transfereraccountcode':_0x42081c[_0x9fe9('0x1b')],'transferercontext':_0x42081c[_0x9fe9('0x1c')],'transfererexten':_0x42081c['secondtransfererexten'],'transfererlinkedid':_0x42081c[_0x9fe9('0x1d')],'context':_0x42081c[_0x9fe9('0x1e')],'extension':_0x42081c['origtransfererexten'],'type':_0x9fe9('0x6')});if(_[_0x9fe9('0x1f')](_0x42081c['transfereechannel'])){_0x42081c=_[_0x9fe9('0x20')](_0x42081c,{'transfereechannel':_0x42081c[_0x9fe9('0x21')],'transfereecalleridnum':_0x42081c[_0x9fe9('0x17')],'transfereecalleridname':_0x42081c[_0x9fe9('0x22')],'transfereeconnectedlinenum':_0x42081c[_0x9fe9('0x23')],'transfereeconnectedlinename':_0x42081c[_0x9fe9('0x24')],'transfereeaccountcode':_0x42081c[_0x9fe9('0x25')],'transfereecontext':_0x42081c['transfertargetcontext'],'transfereeexten':_0x42081c['transfertargetexten'],'transfereelinkedid':_0x42081c[_0x9fe9('0x26')]});}writeDB(_0x42081c);}catch(_0x490c56){utils['error'](util[_0x9fe9('0x3')]('[%s][transfers][attendedtransfer]',_0x42081c['origtransfereruniqueid']),_0x490c56);}};
\ No newline at end of file
index e6f41b6..007cc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ff=['util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','add','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment'];(function(_0x4e859c,_0xc2b230){var _0x3b571d=function(_0x40c359){while(--_0x40c359){_0x4e859c['push'](_0x4e859c['shift']());}};_0x3b571d(++_0xc2b230);}(_0x64ff,0xf2));var _0xf64f=function(_0x3a415b,_0x7a1f2c){_0x3a415b=_0x3a415b-0x0;var _0x3c626b=_0x64ff[_0x3a415b];return _0x3c626b;};'use strict';var BPromise=require(_0xf64f('0x0'));var jayson=require(_0xf64f('0x1'));var moment=require(_0xf64f('0x2'));var util=require(_0xf64f('0x3'));var client=jayson[_0xf64f('0x4')][_0xf64f('0x5')]({'port':0x2329});var logger=require(_0xf64f('0x6'))(_0xf64f('0x7'));exports[_0xf64f('0x8')]=function(_0x17de92,_0x2b5e73){logger[_0xf64f('0x8')](_0x17de92,_0x2b5e73?util[_0xf64f('0x9')](_0x2b5e73,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0xeaf1e6,_0x26062d){logger[_0xf64f('0xa')](_0xeaf1e6,_0x26062d?util[_0xf64f('0x9')](_0x26062d,{'showHidden':![],'depth':null}):'');};exports[_0xf64f('0xb')]=function(_0xd6fd24,_0x4eafca){logger[_0xf64f('0xb')](_0xd6fd24,_0x4eafca?util[_0xf64f('0x9')](_0x4eafca,{'showHidden':![],'depth':null}):'');};exports[_0xf64f('0xc')]=function(_0x2c6f62,_0xbc723b){return client[_0xf64f('0xc')](_0x2c6f62,{'body':_0xbc723b})[_0xf64f('0xd')](function(_0x1c52df){logger[_0xf64f('0xa')](_0xf64f('0xe'),_0x2c6f62,_0x1c52df?util['inspect'](_0x1c52df,{'showHidden':![],'depth':null}):'');})[_0xf64f('0xf')](function(_0x182afc){logger[_0xf64f('0xb')]('[utils][request]\x20name:%s',_0x2c6f62,_0x182afc?util['inspect'](_0x182afc,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4efaf6){return client[_0xf64f('0xc')]('GetUser',{'options':{'raw':!![],'attributes':['id','internal','name',_0xf64f('0x10')],'where':_0x4efaf6,'limit':0x1}})[_0xf64f('0xd')](function(_0x31e567){logger[_0xf64f('0xa')](_0xf64f('0x11'),JSON[_0xf64f('0x12')](_0x4efaf6),_0x31e567?util['inspect'](_0x31e567,{'showHidden':![],'depth':null}):'');return _0x31e567[_0xf64f('0x13')]['length']?_0x31e567[_0xf64f('0x13')][0x0]:null;});}exports[_0xf64f('0x14')]=function(_0x9d0ab){return new BPromise(function(_0x195d6b,_0x4c858d){if(_0x9d0ab){return getUser({'internal':_0x9d0ab})[_0xf64f('0xd')](function(_0xc2683c){logger[_0xf64f('0x8')](_0xf64f('0x15'),_0x9d0ab,_0xc2683c?_0xf64f('0x16'):_0xf64f('0x17'));return _0x195d6b(_0xc2683c);})['catch'](function(_0x420169){logger[_0xf64f('0xb')](_0xf64f('0x18'),_0x420169?util[_0xf64f('0x9')](_0x420169,{'showHidden':![],'depth':null}):'');return _0x195d6b(null);});}return _0x195d6b(null);});};exports[_0xf64f('0x19')]=function(_0x1a845a){return new BPromise(function(_0x1a162b,_0x1a3353){if(_0x1a845a){return getUser({'interface':_0x1a845a})['then'](function(_0x2e0931){logger[_0xf64f('0x8')](_0xf64f('0x1a'),_0x1a845a,_0x2e0931?_0xf64f('0x16'):_0xf64f('0x17'));return _0x1a162b(_0x2e0931);})[_0xf64f('0xf')](function(_0x2ebb05){logger['error']('[utils][getUserByInterface]',_0x2ebb05?util[_0xf64f('0x9')](_0x2ebb05,{'showHidden':![],'depth':null}):'');return _0x1a162b(null);});}return _0x1a162b(null);});};exports[_0xf64f('0x1b')]=function(_0x5711ff){return new BPromise(function(_0x3cfe54,_0x1c6b02){if(_0x5711ff){return getUser({'name':_0x5711ff})[_0xf64f('0xd')](function(_0x4e5f64){logger[_0xf64f('0x8')](_0xf64f('0x1c'),_0x5711ff,_0x4e5f64?_0xf64f('0x16'):_0xf64f('0x17'));return _0x3cfe54(_0x4e5f64);})[_0xf64f('0xf')](function(_0x5c93f6){logger[_0xf64f('0xb')](_0xf64f('0x1d'),_0x5c93f6?util['inspect'](_0x5c93f6,{'showHidden':![],'depth':null}):'');return _0x3cfe54(null);});}return _0x3cfe54(null);});};exports[_0xf64f('0x1e')]=function(_0x30769b){return new BPromise(function(_0x16b6f5,_0x51f2e7){if(_0x30769b){return client[_0xf64f('0xc')](_0xf64f('0x1f'),{'options':{'raw':!![],'attributes':['id','name',_0xf64f('0x20'),_0xf64f('0x21'),_0xf64f('0x22')],'where':{'name':_0x30769b},'limit':0x1}})[_0xf64f('0xd')](function(_0x57dbdb){logger[_0xf64f('0xa')](_0xf64f('0x23'),_0x30769b,_0x57dbdb?util['inspect'](_0x57dbdb,{'showHidden':![],'depth':null}):'');logger[_0xf64f('0x8')](_0xf64f('0x24'),_0x30769b,_0x57dbdb?_0xf64f('0x16'):_0xf64f('0x17'));return _0x16b6f5(_0x57dbdb['result'][_0xf64f('0x25')]?_0x57dbdb[_0xf64f('0x13')][0x0]:null);})['catch'](function(_0x1b73d8){logger[_0xf64f('0xb')]('[utils][getVoiceQueueByName]',_0x1b73d8?util['inspect'](_0x1b73d8,{'showHidden':![],'depth':null}):'');return _0x16b6f5(null);});}return _0x16b6f5(null);});};exports['addTime']=function(_0x4370b5,_0x1bd109){return moment(_0x4370b5)[_0xf64f('0x26')](_0x1bd109,_0xf64f('0x27'))[_0xf64f('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xf64f('0x29')]=function(_0x1b8735,_0x362117){return moment(_0x1b8735)[_0xf64f('0x2a')](_0x362117,_0xf64f('0x27'))[_0xf64f('0x28')](_0xf64f('0x2b'));};exports[_0xf64f('0x2c')]=function(_0x1bcd05,_0x42ae3f){return moment(_0x1bcd05)['diff'](moment(_0x42ae3f),_0xf64f('0x27'));};exports[_0xf64f('0x2d')]=function(_0xabf556,_0x43cfc5){return parseInt(_0xabf556,0xa)+parseInt(_0x43cfc5,0xa);};exports[_0xf64f('0x2e')]=function(){return moment()[_0xf64f('0x28')](_0xf64f('0x2b'));};exports[_0xf64f('0x2f')]=function(_0x33d4d0,_0x12cbc2){if(_0x12cbc2){return moment(_0x33d4d0)[_0xf64f('0x2f')](_0x12cbc2);}return!![];};exports['isBefore']=function(_0x1098d6,_0x9aa2b0){if(_0x9aa2b0){return moment(_0x1098d6)[_0xf64f('0x30')](_0x9aa2b0);}else if(_0x1098d6){return!![];}return![];};
\ No newline at end of file
+var _0xcdfe=['xdr','info','inspect','debug','error','request','[utils][request]\x20name:%s','catch','GetUser','internal','name','then','[utils][getUser]\x20where:%s','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','result','[utils][getVoiceQueueByName]','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','seconds','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','util','client','http','../../config/logger'];(function(_0x2fd677,_0x371a6d){var _0x25377a=function(_0x4757f1){while(--_0x4757f1){_0x2fd677['push'](_0x2fd677['shift']());}};_0x25377a(++_0x371a6d);}(_0xcdfe,0xae));var _0xecdf=function(_0x1ec17d,_0xb3db7d){_0x1ec17d=_0x1ec17d-0x0;var _0x45c245=_0xcdfe[_0x1ec17d];return _0x45c245;};'use strict';var BPromise=require(_0xecdf('0x0'));var jayson=require(_0xecdf('0x1'));var moment=require('moment');var util=require(_0xecdf('0x2'));var client=jayson[_0xecdf('0x3')][_0xecdf('0x4')]({'port':0x2329});var logger=require(_0xecdf('0x5'))(_0xecdf('0x6'));exports[_0xecdf('0x7')]=function(_0x5f4e7e,_0x26cd1e){logger[_0xecdf('0x7')](_0x5f4e7e,_0x26cd1e?util[_0xecdf('0x8')](_0x26cd1e,{'showHidden':![],'depth':null}):'');};exports[_0xecdf('0x9')]=function(_0x2324de,_0x2527aa){logger[_0xecdf('0x9')](_0x2324de,_0x2527aa?util[_0xecdf('0x8')](_0x2527aa,{'showHidden':![],'depth':null}):'');};exports[_0xecdf('0xa')]=function(_0x205e92,_0x352bd5){logger[_0xecdf('0xa')](_0x205e92,_0x352bd5?util[_0xecdf('0x8')](_0x352bd5,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0xb4405b,_0x1eea54){return client[_0xecdf('0xb')](_0xb4405b,{'body':_0x1eea54})['then'](function(_0x1c8b90){logger[_0xecdf('0x9')](_0xecdf('0xc'),_0xb4405b,_0x1c8b90?util[_0xecdf('0x8')](_0x1c8b90,{'showHidden':![],'depth':null}):'');})[_0xecdf('0xd')](function(_0x387e18){logger[_0xecdf('0xa')](_0xecdf('0xc'),_0xb4405b,_0x387e18?util['inspect'](_0x387e18,{'showHidden':![],'depth':null}):'');});};function getUser(_0x53bbfa){return client[_0xecdf('0xb')](_0xecdf('0xe'),{'options':{'raw':!![],'attributes':['id',_0xecdf('0xf'),_0xecdf('0x10'),'interface'],'where':_0x53bbfa,'limit':0x1}})[_0xecdf('0x11')](function(_0x40b066){logger[_0xecdf('0x9')](_0xecdf('0x12'),JSON['stringify'](_0x53bbfa),_0x40b066?util['inspect'](_0x40b066,{'showHidden':![],'depth':null}):'');return _0x40b066['result'][_0xecdf('0x13')]?_0x40b066['result'][0x0]:null;});}exports[_0xecdf('0x14')]=function(_0x3a1d69){return new BPromise(function(_0x497274,_0x4c0858){if(_0x3a1d69){return getUser({'internal':_0x3a1d69})[_0xecdf('0x11')](function(_0x3b10e7){logger['info'](_0xecdf('0x15'),_0x3a1d69,_0x3b10e7?_0xecdf('0x16'):_0xecdf('0x17'));return _0x497274(_0x3b10e7);})[_0xecdf('0xd')](function(_0xecdf94){logger[_0xecdf('0xa')](_0xecdf('0x18'),_0xecdf94?util[_0xecdf('0x8')](_0xecdf94,{'showHidden':![],'depth':null}):'');return _0x497274(null);});}return _0x497274(null);});};exports['getUserByInterface']=function(_0x33da50){return new BPromise(function(_0x21784a,_0x2cf699){if(_0x33da50){return getUser({'interface':_0x33da50})[_0xecdf('0x11')](function(_0x4fcbc4){logger[_0xecdf('0x7')](_0xecdf('0x19'),_0x33da50,_0x4fcbc4?_0xecdf('0x16'):'notfound');return _0x21784a(_0x4fcbc4);})[_0xecdf('0xd')](function(_0x5ac94b){logger[_0xecdf('0xa')](_0xecdf('0x1a'),_0x5ac94b?util['inspect'](_0x5ac94b,{'showHidden':![],'depth':null}):'');return _0x21784a(null);});}return _0x21784a(null);});};exports[_0xecdf('0x1b')]=function(_0x5c369d){return new BPromise(function(_0x31de83,_0x270f13){if(_0x5c369d){return getUser({'name':_0x5c369d})['then'](function(_0x125ee7){logger[_0xecdf('0x7')](_0xecdf('0x1c'),_0x5c369d,_0x125ee7?'found':_0xecdf('0x17'));return _0x31de83(_0x125ee7);})[_0xecdf('0xd')](function(_0x27ae6d){logger[_0xecdf('0xa')](_0xecdf('0x1d'),_0x27ae6d?util[_0xecdf('0x8')](_0x27ae6d,{'showHidden':![],'depth':null}):'');return _0x31de83(null);});}return _0x31de83(null);});};exports[_0xecdf('0x1e')]=function(_0x3dbe28){return new BPromise(function(_0x297b52,_0x1478c8){if(_0x3dbe28){return client[_0xecdf('0xb')](_0xecdf('0x1f'),{'options':{'raw':!![],'attributes':['id',_0xecdf('0x10'),'type','acw','acwTimeout'],'where':{'name':_0x3dbe28},'limit':0x1}})['then'](function(_0x1dfdb2){logger[_0xecdf('0x9')](_0xecdf('0x20'),_0x3dbe28,_0x1dfdb2?util[_0xecdf('0x8')](_0x1dfdb2,{'showHidden':![],'depth':null}):'');logger[_0xecdf('0x7')](_0xecdf('0x21'),_0x3dbe28,_0x1dfdb2?_0xecdf('0x16'):_0xecdf('0x17'));return _0x297b52(_0x1dfdb2[_0xecdf('0x22')][_0xecdf('0x13')]?_0x1dfdb2[_0xecdf('0x22')][0x0]:null);})[_0xecdf('0xd')](function(_0xb2697f){logger[_0xecdf('0xa')](_0xecdf('0x23'),_0xb2697f?util[_0xecdf('0x8')](_0xb2697f,{'showHidden':![],'depth':null}):'');return _0x297b52(null);});}return _0x297b52(null);});};exports['addTime']=function(_0xcb7a6f,_0x38a795){return moment(_0xcb7a6f)['add'](_0x38a795,'seconds')[_0xecdf('0x24')](_0xecdf('0x25'));};exports[_0xecdf('0x26')]=function(_0x4e78a1,_0x758f4a){return moment(_0x4e78a1)['subtract'](_0x758f4a,_0xecdf('0x27'))[_0xecdf('0x24')](_0xecdf('0x25'));};exports[_0xecdf('0x28')]=function(_0x3c1f96,_0x2355c0){return moment(_0x3c1f96)[_0xecdf('0x29')](moment(_0x2355c0),_0xecdf('0x27'));};exports[_0xecdf('0x2a')]=function(_0xe1e62f,_0x1ada02){return parseInt(_0xe1e62f,0xa)+parseInt(_0x1ada02,0xa);};exports['now']=function(){return moment()[_0xecdf('0x24')](_0xecdf('0x25'));};exports[_0xecdf('0x2b')]=function(_0x2b88d7,_0x3807c8){if(_0x3807c8){return moment(_0x2b88d7)['isAfter'](_0x3807c8);}return!![];};exports[_0xecdf('0x2c')]=function(_0x4ad269,_0x53afa7){if(_0x53afa7){return moment(_0x4ad269)['isBefore'](_0x53afa7);}else if(_0x4ad269){return!![];}return![];};
\ No newline at end of file
index ea51f42..0794168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca40=['lodash','path','util','fileLogger','./safe-template','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','role','name','ensureDir','catch','user','then','no-user','data','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','format','headers','x-forwarded-for','connection','url','statusCode','inspect','device','agent_id','method','other','agent_name','test','setupLoggers'];(function(_0x3b8f83,_0x592fd9){var _0x5aaca0=function(_0x41348e){while(--_0x41348e){_0x3b8f83['push'](_0x3b8f83['shift']());}};_0x5aaca0(++_0x592fd9);}(_0xca40,0x7b));var _0x0ca4=function(_0xa990b7,_0x26c527){_0xa990b7=_0xa990b7-0x0;var _0x52c99c=_0xca40[_0xa990b7];return _0x52c99c;};var fs=require('fs-extra');var _=require(_0x0ca4('0x0'));var ewinston=require('express-winston');var path=require(_0x0ca4('0x1'));var util=require(_0x0ca4('0x2'));var fileLogger=require('./loggers')[_0x0ca4('0x3')];var safeTemplate=require(_0x0ca4('0x4'))['safeTemplate'];var maskSensitiveData=require(_0x0ca4('0x5'))[_0x0ca4('0x6')];function ClientSideLogger(){function _0x5e12d9(_0x3311f1){var _0x15223e=path[_0x0ca4('0x7')](_0x0ca4('0x8'),_0x0ca4('0x9'),_0x0ca4('0xa'));var _0x2ffd40=path[_0x0ca4('0x7')](_0x0ca4('0xb'),_0x3311f1[_0x0ca4('0xc')]+'-'+_0x3311f1[_0x0ca4('0xd')]);return fs[_0x0ca4('0xe')](path[_0x0ca4('0x7')](_0x15223e,_0x2ffd40))['then'](function(){var _0x490a96=fileLogger(_0x0ca4('0xb'),path[_0x0ca4('0x7')](_0x15223e,_0x2ffd40));return _0x490a96;})[_0x0ca4('0xf')](function(_0x2d4bb8){throw _0x2d4bb8;});}this[_0x0ca4('0x9')]=function(_0x2b4ea8,_0x233984,_0x2ba9d2,_0xbf7f83){return _0x5e12d9(_0x2b4ea8[_0x0ca4('0x10')])['then'](function(_0x36d8a2){var _0x5ab07f=_0x36d8a2[_0x233984];return _0x5ab07f;})[_0x0ca4('0x11')](function(_0x37c679){var _0x2be4a5=_0x2b4ea8[_0x0ca4('0x10')]?_0x2b4ea8[_0x0ca4('0x10')]['id']:_0x0ca4('0x12');var _0x1ce642=_0xbf7f83[_0x0ca4('0x13')];var _0x56e5bd=_0xbf7f83['timestamp'];var _0xa793d1=new Date(Number(_0x56e5bd));return _0x37c679(_0x2be4a5,_0xa793d1,_0x2ba9d2,_0x1ce642);})[_0x0ca4('0xf')](function(_0x38eea6){fileLogger(_0x0ca4('0xb'))['error'](_0x38eea6);});};}function setupLoggers(_0x40ea4c){return new Promise(function(_0x2efb8d){var _0xd9863f=new ClientSideLogger();var _0xd0b388=fileLogger('api');var _0xd3d840=fileLogger('auth');_0x40ea4c[_0x0ca4('0x14')](_0x0ca4('0x15'),_0xd9863f);_0x40ea4c[_0x0ca4('0x16')](ewinston[_0x0ca4('0x17')]({'winstonInstance':_0xd0b388,'meta':![],'statusLevels':!![],'msg':function(_0x5c8edc,_0x24df4c){var _0x3f04b6=_0x0ca4('0x18');if(!_['isEmpty'](_0x5c8edc[_0x0ca4('0x19')])){_0x3f04b6+=_0x0ca4('0x1a');var _0x2f3777=_0x5c8edc[_0x0ca4('0x19')];maskSensitiveData(_0x2f3777);}return safeTemplate(util[_0x0ca4('0x1b')](_0x3f04b6,_0x5c8edc['method'],_0x5c8edc[_0x0ca4('0x1c')][_0x0ca4('0x1d')]?_0x5c8edc[_0x0ca4('0x1c')]['x-forwarded-for']:_0x5c8edc[_0x0ca4('0x1e')]['remoteAddress']||_0x5c8edc['ip'],_0x5c8edc[_0x0ca4('0x1f')],_0x24df4c[_0x0ca4('0x20')],_0x24df4c['responseTime'],_0x5c8edc[_0x0ca4('0x10')]?_0x5c8edc[_0x0ca4('0x10')]['id']:null,_0x5c8edc[_0x0ca4('0x10')]?_0x5c8edc[_0x0ca4('0x10')][_0x0ca4('0xd')]:null,_0x5c8edc[_0x0ca4('0x10')]?_0x5c8edc[_0x0ca4('0x10')][_0x0ca4('0xc')]:null,_0x2f3777?util[_0x0ca4('0x21')](_0x2f3777,![],null):''));}}));_0x40ea4c['use'](ewinston[_0x0ca4('0x17')]({'winstonInstance':_0xd3d840,'meta':![],'statusLevels':!![],'msg':function(_0x7b9b80,_0x435219){var _0x40d135='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x7b9b80[_0x0ca4('0x19')]&&_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x22')]&&_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x23')]){_0x40d135='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x0ca4('0x1b')](_0x40d135,_0x7b9b80[_0x0ca4('0x24')],_0x7b9b80[_0x0ca4('0x1c')]['x-forwarded-for']?_0x7b9b80[_0x0ca4('0x1c')][_0x0ca4('0x1d')]:_0x7b9b80[_0x0ca4('0x1e')]['remoteAddress']||_0x7b9b80['ip'],_0x7b9b80[_0x0ca4('0x1f')],_0x435219['statusCode'],_0x435219['responseTime'],_0x7b9b80[_0x0ca4('0x10')]?_0x7b9b80['user']['id']:null,_0x7b9b80[_0x0ca4('0x10')]?_0x7b9b80['user'][_0x0ca4('0xd')]:null,_0x7b9b80['user']?_0x7b9b80[_0x0ca4('0x10')][_0x0ca4('0xc')]:null,_0x7b9b80[_0x0ca4('0x19')]&&_0x7b9b80['body'][_0x0ca4('0x22')]?_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x22')]:_0x0ca4('0x25'),_0x7b9b80['body']&&_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x23')]?_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x23')]:'',_0x7b9b80['body']&&_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x26')]?_0x7b9b80[_0x0ca4('0x19')][_0x0ca4('0x26')]:'');},'ignoreRoute':function(_0x5737eb){var _0x45c10c=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x45c10c[_0x0ca4('0x27')](_0x5737eb[_0x0ca4('0x1f')]);}}));return _0x2efb8d();});}exports[_0x0ca4('0x28')]=setupLoggers;
\ No newline at end of file
+var _0x1e6c=['user','then','data','timestamp','error','api','auth','client-side-logger','use','logger','isEmpty','body','\x20body=%s','format','method','x-forwarded-for','remoteAddress','statusCode','responseTime','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)','headers','connection','other','agent_name','test','url','setupLoggers','fs-extra','lodash','express-winston','path','util','./loggers','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','role','name','catch'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1e6c,0xe7));var _0xc1e6=function(_0x24d560,_0x2e0e7b){_0x24d560=_0x24d560-0x0;var _0x18f7b3=_0x1e6c[_0x24d560];return _0x18f7b3;};var fs=require(_0xc1e6('0x0'));var _=require(_0xc1e6('0x1'));var ewinston=require(_0xc1e6('0x2'));var path=require(_0xc1e6('0x3'));var util=require(_0xc1e6('0x4'));var fileLogger=require(_0xc1e6('0x5'))[_0xc1e6('0x6')];var safeTemplate=require(_0xc1e6('0x7'))[_0xc1e6('0x8')];var maskSensitiveData=require(_0xc1e6('0x9'))[_0xc1e6('0xa')];function ClientSideLogger(){function _0x55869f(_0x5e0f56){var _0x25a512=path[_0xc1e6('0xb')](_0xc1e6('0xc'),_0xc1e6('0xd'),_0xc1e6('0xe'));var _0x589a21=path['join'](_0xc1e6('0xf'),_0x5e0f56[_0xc1e6('0x10')]+'-'+_0x5e0f56[_0xc1e6('0x11')]);return fs['ensureDir'](path[_0xc1e6('0xb')](_0x25a512,_0x589a21))['then'](function(){var _0x4fd107=fileLogger(_0xc1e6('0xf'),path[_0xc1e6('0xb')](_0x25a512,_0x589a21));return _0x4fd107;})[_0xc1e6('0x12')](function(_0x1f181b){throw _0x1f181b;});}this['log']=function(_0x4836ea,_0x29d4de,_0x42fd9d,_0x41a818){return _0x55869f(_0x4836ea[_0xc1e6('0x13')])[_0xc1e6('0x14')](function(_0x5e4ec4){var _0xfdbdaf=_0x5e4ec4[_0x29d4de];return _0xfdbdaf;})[_0xc1e6('0x14')](function(_0x1be5a8){var _0x4fd9df=_0x4836ea[_0xc1e6('0x13')]?_0x4836ea[_0xc1e6('0x13')]['id']:'no-user';var _0x2b3dd4=_0x41a818[_0xc1e6('0x15')];var _0x4f43ef=_0x41a818[_0xc1e6('0x16')];var _0x168a9a=new Date(Number(_0x4f43ef));return _0x1be5a8(_0x4fd9df,_0x168a9a,_0x42fd9d,_0x2b3dd4);})[_0xc1e6('0x12')](function(_0x32f141){fileLogger(_0xc1e6('0xf'))[_0xc1e6('0x17')](_0x32f141);});};}function setupLoggers(_0x24cd09){return new Promise(function(_0xd559ad){var _0x1da1cd=new ClientSideLogger();var _0x4cfc60=fileLogger(_0xc1e6('0x18'));var _0x477ea7=fileLogger(_0xc1e6('0x19'));_0x24cd09['set'](_0xc1e6('0x1a'),_0x1da1cd);_0x24cd09[_0xc1e6('0x1b')](ewinston[_0xc1e6('0x1c')]({'winstonInstance':_0x4cfc60,'meta':![],'statusLevels':!![],'msg':function(_0x5e3e79,_0xd08ed5){var _0x1c6978='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xc1e6('0x1d')](_0x5e3e79[_0xc1e6('0x1e')])){_0x1c6978+=_0xc1e6('0x1f');var _0x143113=_0x5e3e79['body'];maskSensitiveData(_0x143113);}return safeTemplate(util[_0xc1e6('0x20')](_0x1c6978,_0x5e3e79[_0xc1e6('0x21')],_0x5e3e79['headers'][_0xc1e6('0x22')]?_0x5e3e79['headers']['x-forwarded-for']:_0x5e3e79['connection'][_0xc1e6('0x23')]||_0x5e3e79['ip'],_0x5e3e79['url'],_0xd08ed5[_0xc1e6('0x24')],_0xd08ed5[_0xc1e6('0x25')],_0x5e3e79['user']?_0x5e3e79[_0xc1e6('0x13')]['id']:null,_0x5e3e79['user']?_0x5e3e79['user'][_0xc1e6('0x11')]:null,_0x5e3e79[_0xc1e6('0x13')]?_0x5e3e79[_0xc1e6('0x13')][_0xc1e6('0x10')]:null,_0x143113?util[_0xc1e6('0x26')](_0x143113,![],null):''));}}));_0x24cd09[_0xc1e6('0x1b')](ewinston[_0xc1e6('0x1c')]({'winstonInstance':_0x477ea7,'meta':![],'statusLevels':!![],'msg':function(_0x5554b4,_0x30e5c2){var _0xc460c1=_0xc1e6('0x27');if(_0x5554b4['body']&&_0x5554b4[_0xc1e6('0x1e')][_0xc1e6('0x28')]&&_0x5554b4['body'][_0xc1e6('0x29')]){_0xc460c1=_0xc1e6('0x2a');}return util[_0xc1e6('0x20')](_0xc460c1,_0x5554b4[_0xc1e6('0x21')],_0x5554b4['headers'][_0xc1e6('0x22')]?_0x5554b4[_0xc1e6('0x2b')][_0xc1e6('0x22')]:_0x5554b4[_0xc1e6('0x2c')][_0xc1e6('0x23')]||_0x5554b4['ip'],_0x5554b4['url'],_0x30e5c2[_0xc1e6('0x24')],_0x30e5c2[_0xc1e6('0x25')],_0x5554b4['user']?_0x5554b4[_0xc1e6('0x13')]['id']:null,_0x5554b4[_0xc1e6('0x13')]?_0x5554b4[_0xc1e6('0x13')][_0xc1e6('0x11')]:null,_0x5554b4['user']?_0x5554b4[_0xc1e6('0x13')][_0xc1e6('0x10')]:null,_0x5554b4[_0xc1e6('0x1e')]&&_0x5554b4['body']['device']?_0x5554b4['body'][_0xc1e6('0x28')]:_0xc1e6('0x2d'),_0x5554b4[_0xc1e6('0x1e')]&&_0x5554b4['body'][_0xc1e6('0x29')]?_0x5554b4[_0xc1e6('0x1e')][_0xc1e6('0x29')]:'',_0x5554b4[_0xc1e6('0x1e')]&&_0x5554b4[_0xc1e6('0x1e')][_0xc1e6('0x2e')]?_0x5554b4[_0xc1e6('0x1e')][_0xc1e6('0x2e')]:'');},'ignoreRoute':function(_0xa2e46a){var _0x37737f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x37737f[_0xc1e6('0x2f')](_0xa2e46a[_0xc1e6('0x30')]);}}));return _0xd559ad();});}exports[_0xc1e6('0x31')]=setupLoggers;
\ No newline at end of file
index b9309f5..7ecfef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb97d=['meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','toUpperCase','Logger','Console','transports','File','%s-%s','error','warn','consoleLogger','fileLogger','path','moment','winston','../config/environment','toLowerCase','info','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20blue','bold\x20cyan','addColors','join','format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level'];(function(_0x568385,_0x4681e0){var _0x4c583f=function(_0x2b71c1){while(--_0x2b71c1){_0x568385['push'](_0x568385['shift']());}};_0x4c583f(++_0x4681e0);}(_0xb97d,0x146));var _0xdb97=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xb97d[_0xbb091];return _0x467a04;};'use strict';var path=require(_0xdb97('0x0'));var util=require('util');var moment=require(_0xdb97('0x1'));var winston=require(_0xdb97('0x2'));var config=require(_0xdb97('0x3'));var debugLevel=config['debugLevel']?config['debugLevel'][_0xdb97('0x4')]():_0xdb97('0x5');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':_0xdb97('0x6'),'warn':_0xdb97('0x7'),'info':_0xdb97('0x8'),'print':_0xdb97('0x9'),'success':_0xdb97('0xa'),'http':_0xdb97('0xb'),'verbose':'bold\x20magenta','debug':_0xdb97('0xc'),'silly':_0xdb97('0xd')};winston[_0xdb97('0xe')](XC_LOG_COLORS);function getLogFileName(_0x4b2080,_0x18710b,_0x5ecef5){var _0x2575e8=_0x4b2080||'/var/log/xcally';return path[_0xdb97('0xf')](_0x2575e8,util[_0xdb97('0x10')](_0xdb97('0x11'),_0x18710b,_0x5ecef5));}function formatter(_0x4e4418,_0x1a0e74){_0x1a0e74[_0xdb97('0x12')]=_0x1a0e74['message'][_0xdb97('0x13')](/@@{/g,_0xdb97('0x14'))[_0xdb97('0x13')](/}@@/g,_0xdb97('0x15'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xdb97('0x10')](_0xdb97('0x16'),moment()[_0xdb97('0x10')](_0xdb97('0x17')),_0x1a0e74[_0xdb97('0x18')]['toUpperCase'](),_0x4e4418,_0x1a0e74[_0xdb97('0x12')]);}function fileFormat(_0x57add3,_0x9fce9a){_0x9fce9a[_0xdb97('0x12')]=_0x9fce9a['message']['replace'](/@@{/g,_0xdb97('0x14'))[_0xdb97('0x13')](/}@@/g,_0xdb97('0x15'))[_0xdb97('0x13')](/@{/g,'{{')[_0xdb97('0x13')](/}@/g,'}}');var _0x2fc8ea=_0x9fce9a[_0xdb97('0x19')]&&Object[_0xdb97('0x1a')](_0x9fce9a[_0xdb97('0x19')])[_0xdb97('0x1b')]?'\x0a\x09'+JSON['stringify'](_0x9fce9a[_0xdb97('0x19')]):'';return util[_0xdb97('0x10')](_0xdb97('0x1c'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),_0x9fce9a[_0xdb97('0x18')][_0xdb97('0x1d')](),_0x57add3,_0x9fce9a[_0xdb97('0x12')],_0x2fc8ea);}function consoleLogger(){var _0x1b6cfa=new winston[(_0xdb97('0x1e'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0xdb97('0x1f'))]({'level':'warn','json':![],'formatter':function(_0x26e657){return formatter('',_0x26e657);}})]});return _0x1b6cfa;}function fileLogger(_0xc7e57a,_0x46cc92){var _0x4c17a0=new winston[(_0xdb97('0x1e'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xdb97('0x20'))][(_0xdb97('0x21'))]({'name':util[_0xdb97('0x10')](_0xdb97('0x22'),_0xc7e57a,_0xdb97('0x23')),'filename':getLogFileName(_0x46cc92,_0xc7e57a,_0xdb97('0x23')),'level':_0xdb97('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5a0fca){return fileFormat(_0xc7e57a,_0x5a0fca);}}),new winston[(_0xdb97('0x20'))][(_0xdb97('0x21'))]({'name':util[_0xdb97('0x10')](_0xdb97('0x22'),_0xc7e57a,debugLevel),'filename':getLogFileName(_0x46cc92,_0xc7e57a,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x198fa7){return fileFormat(_0xc7e57a,_0x198fa7);}}),new winston[(_0xdb97('0x20'))]['Console']({'level':_0xdb97('0x24'),'json':![],'formatter':function(_0x45f3d8){return fileFormat(_0xc7e57a,_0x45f3d8);}})]});return _0x4c17a0;}exports[_0xdb97('0x25')]=consoleLogger;exports[_0xdb97('0x26')]=fileLogger;
\ No newline at end of file
+var _0xbcf2=['%s-%s','warn','consoleLogger','fileLogger','path','util','winston','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20yellow','white','bold\x20white','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','toUpperCase','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','level','transports','Console','File','error'];(function(_0x518b1f,_0x5576a4){var _0x156402=function(_0x34464d){while(--_0x34464d){_0x518b1f['push'](_0x518b1f['shift']());}};_0x156402(++_0x5576a4);}(_0xbcf2,0x7c));var _0x2bcf=function(_0x188bfe,_0x2517cc){_0x188bfe=_0x188bfe-0x0;var _0x1a9efa=_0xbcf2[_0x188bfe];return _0x1a9efa;};'use strict';var path=require(_0x2bcf('0x0'));var util=require(_0x2bcf('0x1'));var moment=require('moment');var winston=require(_0x2bcf('0x2'));var config=require(_0x2bcf('0x3'));var debugLevel=config['debugLevel']?config[_0x2bcf('0x4')][_0x2bcf('0x5')]():_0x2bcf('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':_0x2bcf('0x7'),'error':_0x2bcf('0x8'),'warn':_0x2bcf('0x9'),'info':_0x2bcf('0xa'),'print':_0x2bcf('0xb'),'success':'bold\x20green','http':_0x2bcf('0xc'),'verbose':_0x2bcf('0xd'),'debug':_0x2bcf('0xe'),'silly':_0x2bcf('0xf')};winston[_0x2bcf('0x10')](XC_LOG_COLORS);function getLogFileName(_0x4544db,_0x31e3f3,_0x188d81){var _0x52c94c=_0x4544db||_0x2bcf('0x11');return path[_0x2bcf('0x12')](_0x52c94c,util[_0x2bcf('0x13')](_0x2bcf('0x14'),_0x31e3f3,_0x188d81));}function formatter(_0x7d0466,_0x2d994){_0x2d994[_0x2bcf('0x15')]=_0x2d994[_0x2bcf('0x15')][_0x2bcf('0x16')](/@@{/g,'{{{')[_0x2bcf('0x16')](/}@@/g,_0x2bcf('0x17'))[_0x2bcf('0x16')](/@{/g,'{{')[_0x2bcf('0x16')](/}@/g,'}}');return util[_0x2bcf('0x13')](_0x2bcf('0x18'),moment()['format'](_0x2bcf('0x19')),_0x2d994['level'][_0x2bcf('0x1a')](),_0x7d0466,_0x2d994[_0x2bcf('0x15')]);}function fileFormat(_0x5a6fcf,_0xdfe792){_0xdfe792[_0x2bcf('0x15')]=_0xdfe792[_0x2bcf('0x15')][_0x2bcf('0x16')](/@@{/g,'{{{')['replace'](/}@@/g,_0x2bcf('0x17'))['replace'](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x17e878=_0xdfe792[_0x2bcf('0x1b')]&&Object[_0x2bcf('0x1c')](_0xdfe792[_0x2bcf('0x1b')])[_0x2bcf('0x1d')]?'\x0a\x09'+JSON['stringify'](_0xdfe792[_0x2bcf('0x1b')]):'';return util[_0x2bcf('0x13')](_0x2bcf('0x1e'),moment()[_0x2bcf('0x13')](_0x2bcf('0x19')),_0xdfe792[_0x2bcf('0x1f')][_0x2bcf('0x1a')](),_0x5a6fcf,_0xdfe792[_0x2bcf('0x15')],_0x17e878);}function consoleLogger(){var _0x52f5e3=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x2bcf('0x20'))][(_0x2bcf('0x21'))]({'level':'warn','json':![],'formatter':function(_0xc8dbf0){return formatter('',_0xc8dbf0);}})]});return _0x52f5e3;}function fileLogger(_0x3581dd,_0x2f5dcd){var _0x3ba5e0=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x2bcf('0x20'))][(_0x2bcf('0x22'))]({'name':util['format']('%s-%s',_0x3581dd,'error'),'filename':getLogFileName(_0x2f5dcd,_0x3581dd,'error'),'level':_0x2bcf('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2d2bd9){return fileFormat(_0x3581dd,_0x2d2bd9);}}),new winston['transports'][(_0x2bcf('0x22'))]({'name':util[_0x2bcf('0x13')](_0x2bcf('0x24'),_0x3581dd,debugLevel),'filename':getLogFileName(_0x2f5dcd,_0x3581dd,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xbac8d2){return fileFormat(_0x3581dd,_0xbac8d2);}}),new winston[(_0x2bcf('0x20'))][(_0x2bcf('0x21'))]({'level':_0x2bcf('0x25'),'json':![],'formatter':function(_0x1a10ee){return fileFormat(_0x3581dd,_0x1a10ee);}})]});return _0x3ba5e0;}exports[_0x2bcf('0x26')]=consoleLogger;exports[_0x2bcf('0x27')]=fileLogger;
\ No newline at end of file
index 54c08f6..36dc233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','accountSid','dsn','secret','registry','isPlainObject','isArray','length','isString','replace','@@{','}@@','username','newPassword','apiKey','firstName','street','phone','mobile','email','clientId','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridnum'];(function(_0x4b3395,_0x190bc5){var _0xb85629=function(_0x4f7866){while(--_0x4f7866){_0x4b3395['push'](_0x4b3395['shift']());}};_0xb85629(++_0x190bc5);}(_0xadb5,0xad));var _0x5adb=function(_0x444ab5,_0x53a92c){_0x444ab5=_0x444ab5-0x0;var _0x44e1ff=_0xadb5[_0x444ab5];return _0x44e1ff;};var _=require('lodash');var sensitiveFields=[_0x5adb('0x0'),'password',_0x5adb('0x1'),_0x5adb('0x2'),_0x5adb('0x3'),'lastName',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'fax',_0x5adb('0x7'),_0x5adb('0x8'),_0x5adb('0x9'),_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe'),_0x5adb('0xf'),_0x5adb('0x10'),_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),'membername','calleridname',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),'clientEmail',_0x5adb('0x18'),'accesskeyid',_0x5adb('0x19'),'key',_0x5adb('0x1a'),_0x5adb('0x1b'),_0x5adb('0x1c'),'localstationid',_0x5adb('0x1d'),_0x5adb('0x1e'),_0x5adb('0x1f'),'oldPassword'];function maskSensitiveData(_0x2312de){const _0x518823=/(?!^)[\s\S](?!$)/g;if(_[_0x5adb('0x20')](_0x2312de)){for(const _0x42a482 in _0x2312de){if(_[_0x5adb('0x21')](_0x2312de[_0x42a482])){for(let _0x304784=0x0;_0x304784<_0x2312de[_0x42a482][_0x5adb('0x22')];_0x304784++){maskSensitiveData(_0x2312de[_0x42a482][_0x304784]);}}else if(_[_0x5adb('0x20')](_0x2312de[_0x42a482])){maskSensitiveData(_0x2312de[_0x42a482]);}else if(_[_0x5adb('0x23')](_0x2312de[_0x42a482])){_0x2312de[_0x42a482]=_0x2312de[_0x42a482][_0x5adb('0x24')](/{{{/g,_0x5adb('0x25'))['replace'](/}}}/g,_0x5adb('0x26'))['replace'](/{{/g,'@{')[_0x5adb('0x24')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x42a482)){_0x2312de[_0x42a482]=_0x2312de[_0x42a482][_0x5adb('0x24')](_0x518823,'*');}}}}}module['exports']['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0x0295=['length','isString','replace','}@@','includes','exports','lodash','newPassword','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','token','accessToken','authToken','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray'];(function(_0x29e35f,_0x4859ef){var _0x266b74=function(_0xc09e1){while(--_0xc09e1){_0x29e35f['push'](_0x29e35f['shift']());}};_0x266b74(++_0x4859ef);}(_0x0295,0x1f0));var _0x5029=function(_0x4c5e74,_0x319d00){_0x4c5e74=_0x4c5e74-0x0;var _0x48b7f6=_0x0295[_0x4c5e74];return _0x48b7f6;};var _=require(_0x5029('0x0'));var sensitiveFields=['username','password',_0x5029('0x1'),'apiKey','firstName',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7'),_0x5029('0x8'),_0x5029('0x9'),_0x5029('0xa'),'code','accessKey','tenantId',_0x5029('0xb'),'channelSecret',_0x5029('0xc'),'accessTokenSecret',_0x5029('0xd'),'consumerKey',_0x5029('0xe'),_0x5029('0xf'),_0x5029('0x10'),'calleridnum',_0x5029('0x11'),_0x5029('0x12'),_0x5029('0x13'),'privateKey',_0x5029('0x14'),_0x5029('0x15'),'key','user','pass','accountSid',_0x5029('0x16'),_0x5029('0x17'),_0x5029('0x18'),_0x5029('0x19'),_0x5029('0x1a')];function maskSensitiveData(_0x11c24b){const _0xe278b7=/(?!^)[\s\S](?!$)/g;if(_[_0x5029('0x1b')](_0x11c24b)){for(const _0x10bf55 in _0x11c24b){if(_[_0x5029('0x1c')](_0x11c24b[_0x10bf55])){for(let _0x457c73=0x0;_0x457c73<_0x11c24b[_0x10bf55][_0x5029('0x1d')];_0x457c73++){maskSensitiveData(_0x11c24b[_0x10bf55][_0x457c73]);}}else if(_[_0x5029('0x1b')](_0x11c24b[_0x10bf55])){maskSensitiveData(_0x11c24b[_0x10bf55]);}else if(_[_0x5029('0x1e')](_0x11c24b[_0x10bf55])){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](/{{{/g,'@@{')[_0x5029('0x1f')](/}}}/g,_0x5029('0x20'))[_0x5029('0x1f')](/{{/g,'@{')[_0x5029('0x1f')](/}}/g,'}@');if(_[_0x5029('0x21')](sensitiveFields,_0x10bf55)){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](_0xe278b7,'*');}}}}}module[_0x5029('0x22')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 838e5a2..4c60685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['exports','safeTemplate','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','keys','reduce'];(function(_0x1dc01f,_0x157a75){var _0x298041=function(_0x47fce1){while(--_0x47fce1){_0x1dc01f['push'](_0x1dc01f['shift']());}};_0x298041(++_0x157a75);}(_0x1775,0x1db));var _0x5177=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1775[_0x17d9e3];return _0x14192d;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0xb5c9b1){return _0xb5c9b1==='{{'?_0x5177('0x0'):_0x5177('0x1');}function safeTemplate(_0x2ca33b){var _0xaad33e=_0x2ca33b;if(typeof _0x2ca33b===_0x5177('0x2')){_0xaad33e=_0x2ca33b[_0x5177('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x5177('0x4')](_0x2ca33b)){_0xaad33e=_0x2ca33b[_0x5177('0x5')](function(_0x51275f){return safeTemplate(_0x51275f);});}else if(_[_0x5177('0x6')](_0x2ca33b)){_0xaad33e=Object[_0x5177('0x7')](_0x2ca33b)[_0x5177('0x8')](function(_0x2ac1c6,_0x300b43){_0x2ac1c6[_0x300b43]=safeTemplate(_0x2ca33b[_0x300b43]);return _0x2ac1c6;},{});}return _0xaad33e;}module[_0x5177('0x9')][_0x5177('0xa')]=safeTemplate;
\ No newline at end of file
+var _0x1775=['exports','safeTemplate','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','keys','reduce'];(function(_0x3b29cf,_0x171bc9){var _0x1dc73b=function(_0x2531e6){while(--_0x2531e6){_0x3b29cf['push'](_0x3b29cf['shift']());}};_0x1dc73b(++_0x171bc9);}(_0x1775,0x1db));var _0x5177=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1775[_0x502c7d];return _0x30b7ed;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0xb5c9b1){return _0xb5c9b1==='{{'?_0x5177('0x0'):_0x5177('0x1');}function safeTemplate(_0x2ca33b){var _0xaad33e=_0x2ca33b;if(typeof _0x2ca33b===_0x5177('0x2')){_0xaad33e=_0x2ca33b[_0x5177('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x5177('0x4')](_0x2ca33b)){_0xaad33e=_0x2ca33b[_0x5177('0x5')](function(_0x51275f){return safeTemplate(_0x51275f);});}else if(_[_0x5177('0x6')](_0x2ca33b)){_0xaad33e=Object[_0x5177('0x7')](_0x2ca33b)[_0x5177('0x8')](function(_0x2ac1c6,_0x300b43){_0x2ac1c6[_0x300b43]=safeTemplate(_0x2ca33b[_0x300b43]);return _0x2ac1c6;},{});}return _0xaad33e;}module[_0x5177('0x9')][_0x5177('0xa')]=safeTemplate;
\ No newline at end of file